// THIS SCRIPT IS DONE TO GET THE RIGHT SHIFT CALCULATION USING A CHI2 MINIMIZATION // HERE WE SUBSTITUTE CHANNEL NUMBERS WITH ANGLES DUE TO THE FACT THAT SAME CHANNEL NUMBER // ON BOTH SIDE CORRESPOND TO TWO DIFFERENT ANGLES. // WE EXTRACT THE CONTENT OF EACH CHANNEL, THEN WE EXTRACT THE RIGHT ANGLE FOR EACH CHANNEL // FROM BOTH SIDES THEN WE MAKE A FIT THEN WE EVALUATE THE POINTS FOR THE FITS. { gROOT->Reset(); // ----------------------------------------------------------- c0= new TCanvas("c0","ssd",0,0,800,600); gROOT->SetStyle("Plain"); gStyle->SetOptStat(0); gStyle->SetFrameLineColor(0); c0->Range(0,0,1,1); c0->SetFillColor(0); c0->SetBorderMode(0); c0->SetBorderSize(0); c0->SetFrameBorderMode(0); c0->SetFrameLineColor(0); gStyle->SetOptTitle(0); gStyle->SetOptStat(0); gStyle->SetLabelOffset(0.02,"x"); gStyle->SetLabelSize(0.05,"x"); gStyle->SetTickLength(-0.02,"x"); gStyle->SetTitleOffset(1.2,"x"); gStyle->SetLabelOffset(0.02,"y"); gStyle->SetLabelSize(0.05,"y"); gStyle->SetTickLength(-0.02,"y"); gStyle->SetTitleOffset(1.3,"y"); TFile *ftf = new TFile("/home/najib/danalysis/dst/5GeV-Si/fe/w.root"); ftf.cd(); int i,j,k,ssd; double x,z,phi,dphi, zz[1152],xx[1152],angl[1152]; FILE *fp= fopen("qq","r"); while (fscanf(fp," %i %i %i %lf %lf %lf %lf ",&i,&j,&k,&x,&z,&phi,&dphi)>0) { zz[abs(k)]= z; xx[abs(k)]= x; } fclose(fp); for (k=0;k<1152;k++) { angl[k]=atan2(xx[k],zz[k]); double cnt[1152]; // printf("%i %f %f %f\n",k,xx[k],zz[k],angl[k]); } FILE *fp= fopen("ssd","r"); int ssd; int ss[1152]; while (fscanf(fp," %i %i ",&i,&ssd)>0) {cnt[i]=ssd;} fclose(fp); // From the w.root plot a histogram of the strips distribution then extract the content of each bin //TH1F * s = new TH1F("s","s",1152,0,1152); //tr->Draw("ssd>>s","q==1&&latch&1",""); //double cnt[1152]; //for (k=0;k<1152;k++) cnt[k]=s->GetBinContent(k); //for (k=0;k<1151;k++) printf(" --- >> %i %f\n ",k,cnt[k]); //noisy channels set them to zero for now int i; for (i=780;i<783;i++) cnt[i]=0; for (i=861;i<864;i++) cnt[i]=0; for (i=909;i<913;i++) cnt[i]=0; for (i=916;i<919;i++) cnt[i]=0; for (i=942;i<946;i++) cnt[i]=0; for (i=957;i<961;i++) cnt[i]=0; for (i=1035;i<1038;i++) cnt[i]=0; for (i=1020;i<1120;i++) cnt[i]=0; cnt[1007]=0; for (i=1050;i<1088;i++) cnt[i]=0; cnt[105]=0; cnt[106]=0; cnt[108]=0; cnt[449]=0; cnt[500]=0; cnt[501]=0; cnt[502]=0; cnt[505]=0; cnt[506]=0; cnt[507]=0; cnt[509]=0; cnt[510]=0; cnt[511]=0; cnt[543]=0; cnt[549]=0; cnt[550]=0; cnt[509]=0; cnt[499]=0; cnt[549]=0; cnt[550]=0; cnt[551]=0; cnt[552]=0; cnt[498]=0; cnt[499]=0; cnt[503]=0; cnt[504]=0; cnt[508]=0; cnt[512]=0; //let me see what i am getting from those angles and their corresponding content //printf("*******\n"); FILE *fa = fopen("tt","w"); int i; for (i=0;i<1152;i++) fprintf(fa,"%i %f %d\n",i,angl[i],cnt[i]); fclose(fa); TGraph *gr = new TGraph ( 1152,angl, cnt ); gr->Draw("AP"); double par1[3],parb[3],parc[5]; TF1 *gss1= new TF1("gss1","pol2",-0.719,-0.194); gss1->SetLineColor(1); gr->Fit("gss1","r"); //------- double x,p[3]; TF1 *gss2a= new TF1("gss2a","[0]+[1]*exp(x/[2])",-0.19562,-0.113); gss2a->SetParameters(2337,18345,0.06655); gss2a->SetLineColor(5); gr->Fit("gss2a","ru"); //--------- TF1 *gss2= new TF1("gss2","exp([0]+x*[1])",-0.1122,-0.052); gss2->SetParameters(9.85,11.0); gss2->SetLineColor(2); gr->Fit("gss2","ru"); //--------- TF1 *gss3= new TF1("gss3","[0]+[1]*exp(-(x-[2])/[3])+[4]*exp(-(x-[5])/[6])",0.052,0.35); gss3->SetParameters(1522,92902.5,-0.0063,0.01934,12787,-0.0063,0.1169); gss3->SetLineColor(3); gr->Fit("gss3","r"); //-------- TF1 *gss5 = new TF1("gss5","[0]*exp(-x/[1])+[2]",0.35,0.714); gss5->SetParameters(4873.1,0.32,502); //gss5->SetParameters(502.1,5873.1,0.32); gss5->SetLineColor(4); gr->Fit("gss5","r"); //printf(" First Fit Parameters \n "); //gss1->GetParameters(par1); //printf(" test1 %f %f %f\n ",par1[0],par1[1],par1[2]); //printf(" Second Fit Parameters \n "); //gr->Fit("gss2","r"); //gss2->GetParameters(parb); //printf(" test2 %f %f %f %f %f\n ",parb[0],parb[1],parb[2],parb[3],parb[4]); //printf(" Third Fit Parameters \n "); //gss3->GetParameters(parc); gr->Draw("AP"); gss1->Draw("same"); gss2->Draw("same"); gss3->Draw("same"); gss2a->Draw("same"); gss5->Draw("same"); FILE *fp = fopen("samy","w"); int i ; double r1,r2,r3,r4,r5; for (i=0;i<525;i++) { r1 = -0.719+i*0.001 ; fprintf(fp," %i %f %f\n",i,r1,gss1->Eval(r1));} //for (i=0;i<503;i++) { r1 = -0.719+i*0.001 ; fprintf(fp," %i %f %f\n",i,r1,gss1->Eval(r1));} for (i=525;i<(82+525);i++) { r2 = -0.194+(i-525)*0.001; fprintf(fp," %i %f %f\n",i,r2,gss2a->Eval(r2) );} //printf(" test2 %f %f %f %f %f\n ",parb[0],parb[1],parb[2],parb[3],parb[4]); //for (i=504;i<(82+504);i++) { r2 = -0.195+(i-504)*0.001; fprintf(fp," %i %f %f\n",i,r2,gss2a->Eval(r2) );} //for (i=586;i<(586+60);i++) { r3 = -0.112+(i-586)*0.001; fprintf(fp," %i %f %f\n",i,r3,gss2->Eval(r3) );} for (i=607;i<668;i++) { r3 = -0.112+(i-607)*0.001; fprintf(fp," %i %f %f\n",i,r3,gss2->Eval(r3) );} //for (i=577;i<1153;i++) fprintf(fp," %i %d\n",i,gss3->Eval(i) ); //for (i=646;i<(646+297);i++) { r4 = 0.052+(i-645)*0.001; fprintf(fp," %i %f %f\n",i,r4,gss3->Eval(r4) );} //for (i=943;i<(943+360);i++) { r5 = 0.360+(i-942)*0.001; fprintf(fp," %i %f %f\n",i,r5,gss5->Eval(r5) );} for (i=668;i<976;i++) { r4 = 0.052+(i-668)*0.001; fprintf(fp," %i %f %f\n",i,r4,gss3->Eval(r4) );} for (i=976;i<1334;i++) { r5 = 0.360+(i-976)*0.001; fprintf(fp," %i %f %f\n",i,r5,gss5->Eval(r5) );} fclose(fp); }