]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGPP/VZERO/checkThr.C
don't lie in the log!
[u/mrichter/AliRoot.git] / PWGPP / VZERO / checkThr.C
CommitLineData
c014f07d 1void checkThr(const char *filename, const char *what="")
2{
3 TFile *f = TFile::Open(filename);
4 TList *list = (TList*)f->Get("coutput");
5
6 TH1F *h3 = (TH1F*)list->FindObject("fV0Percent");
8d939043 7 Double_t nTotalEvts = (Double_t)h3->Integral(h3->FindBin(0.0),h3->FindBin(91.0))/0.9;
c014f07d 8
9 TH1F *hCent;
10 TH1F *hCentAll;
11 TH1F *hSemiCent;
12 TH1F *hSemiCentAll;
13 Double_t nentCent;
14 Double_t nentCentall;
15 Double_t nentSemiCent;
16 Double_t nentSemiCentall;
17 TF1 *ffCent;
18 TF1 *ffSemiCent;
19
20 hCent = (TH1F*)list->FindObject(Form("fV0Cent%s",what));
21 hCentAll = (TH1F*)list->FindObject(Form("fV0Cent%sAll",what));
22 hSemiCent = (TH1F*)list->FindObject(Form("fV0SemiCent%s",what));
23 hSemiCentAll = (TH1F*)list->FindObject(Form("fV0SemiCent%sAll",what));
24
25 nentCent = hCent->GetEntries();
35d3b2cb 26 Double_t nCentEvts = (Double_t)hCent->Integral(hCent->FindBin(0.0),hCent->FindBin(91.0));
c014f07d 27 nentCentall = hCentAll->GetEntries();
28 nentSemiCent = hSemiCent->GetEntries();
35d3b2cb 29 Double_t nSemiCentEvts = (Double_t)hSemiCent->Integral(hSemiCent->FindBin(0.0),hSemiCent->FindBin(91.0));
c014f07d 30 nentSemiCentall = hSemiCentAll->GetEntries();
31
32 hCent->Sumw2();
33 hCent->Divide(hCent,h3,1,1,"B");
34 hSemiCent->Sumw2();
35 hSemiCent->Divide(hSemiCent,h3,1,1,"B");
8d939043 36 // for(Int_t ibin = 1; ibin <= hSemiCent->GetXaxis()->GetNbins(); ++ibin) {
37 // printf("%f ",hSemiCent->GetBinError(ibin));
38 // if (hSemiCent->GetBinError(ibin) < 1e-6) hSemiCent->SetBinError(ibin,0.01);
39 // printf("%f ",hSemiCent->GetBinError(ibin));
40 // }
c014f07d 41
8d939043 42 ffCent = new TF1("ffCent","(1.-1./(1.+TMath::Exp(-(x-[0])/[1])))*[2]",0,100);
c014f07d 43 ffCent->SetLineColor(kBlue);
8d939043 44 Double_t par0 = hCent->GetBinCenter(hCent->FindLastBinAbove((strcmp(what,"Tr") == 0) ? 0.6 : 0.95));
c014f07d 45 ffCent->SetParameter(0,par0);
8d939043 46 ffCent->SetParameter(1,0.5);
47 if (strcmp(what,"Tr") == 0)
48 ffCent->SetParameter(2,0.6);
49 else
50 ffCent->SetParLimits(2,0.9999,1.0001);
c014f07d 51 hCent->Fit(ffCent,"R+");
52 hCent->Fit(ffCent,"R+");
53 hCent->Fit(ffCent,"R+");
54
8d939043 55 ffSemiCent = new TF1("ffSemiCent","(1.-1./(1.+TMath::Exp(-(x-[0])/[1])))*[2]",0,100);
c014f07d 56 ffSemiCent->SetLineColor(kRed);
8d939043 57 par0 = hSemiCent->GetBinCenter(hSemiCent->FindLastBinAbove((strcmp(what,"Tr") == 0) ? 0.01 : 0.95));
c014f07d 58 ffSemiCent->SetParameter(0,par0);
35d3b2cb 59 ffSemiCent->SetParameter(1,0.3);
8d939043 60 printf("%d\n",par0);
61 if (strcmp(what,"Tr") == 0)
62 ffSemiCent->SetParameter(2,0.1);
63 else
64 ffSemiCent->SetParLimits(2,0.9999,1.0001);
c014f07d 65 hSemiCent->Fit(ffSemiCent,"R+");
66 hSemiCent->Fit(ffSemiCent,"R+");
67 hSemiCent->Fit(ffSemiCent,"R+");
68
8d939043 69 // new TCanvas;
c014f07d 70 hSemiCent->SetLineColor(kBlue);
71 hSemiCent->SetMarkerColor(kBlue);
72 hCent->Draw("e");
73 hSemiCent->SetLineColor(kRed);
74 hSemiCent->SetMarkerColor(kRed);
75 hSemiCent->Draw("e same");
76
8d939043 77 Float_t rawRatio = (strcmp(what,"Tr") == 0) ? (nentSemiCentall/ffSemiCent->GetParameter(2))/(nentCentall/ffCent->GetParameter(2)) : nentSemiCentall/nentCentall;
78 Float_t rawRatioErr = rawRatio*TMath::Sqrt(1./nentCentall-1./nentSemiCentall);
79 Float_t psRatio = (strcmp(what,"Tr") == 0) ? (nentSemiCent/ffSemiCent->GetParameter(2))/(nentCent/ffCent->GetParameter(2)) : nentSemiCent/nentCent;
80 Float_t psRatioErr = psRatio*TMath::Sqrt(1./nentCent-1./nentSemiCent);
81 Float_t psScRatio = (strcmp(what,"Tr") == 0) ? (nSemiCentEvts/ffSemiCent->GetParameter(2))/(nCentEvts/ffCent->GetParameter(2)) : nSemiCentEvts/nCentEvts;
82 Float_t psScRatioErr = psScRatio*TMath::Sqrt(1./nCentEvts-1./nSemiCentEvts);
83
84 Float_t centrInt = 100.*nCentEvts/ffCent->GetParameter(2)/nTotalEvts;
85 Float_t centrIntErr = 100.*TMath::Sqrt(nCentEvts/ffCent->GetParameter(2)/nTotalEvts*(1.-nCentEvts/ffCent->GetParameter(2)/nTotalEvts)/nTotalEvts);
86 Float_t centrIntFit = ffCent->GetX(0.5*ffCent->GetParameter(2));
87 Float_t centrIntFitErr = ffCent->GetParError(0);
88
c014f07d 89 printf("\n\n\n");
90
91 printf("Purity: Centr %.3f %.3f Cuts ( 0.0-%.1f)%% rate=%.1f Hz\n",
8d939043 92 nCentEvts/nCentEvts,
93 nentCent/nentCentall,
94 ffCent->GetX(0.99*ffCent->GetParameter(2)),
95 30.*10./(nentCent/nentCentall));
c014f07d 96 printf("Purity: Semi-Centr %.3f %.3f Cuts ( 0.0-%.1f)%% rate=%.1f Hz\n",
97 ffSemiCent->Integral(0,50)/ffSemiCent->Integral(0,100),
98 ffSemiCent->Integral(0,50)/ffSemiCent->Integral(0,100)*nentSemiCent/nentSemiCentall,
8d939043 99 ffSemiCent->GetX(0.99*ffSemiCent->GetParameter(2)),
35d3b2cb 100 30.*50./(ffSemiCent->Integral(0,50)/ffSemiCent->Integral(0,100)*nentSemiCent/nentSemiCentall));
8d939043 101 printf("Ratio of raw rates: %.2f +- %.2f\n",
102 rawRatio,
103 rawRatioErr);
104 printf("Ratio of rates after PS: %.2f +- %.2f\n",
105 psRatio,
106 psRatioErr);
107 printf("Ratio of rates after PS and SC: %.2f +- %.2f\n",
108 psScRatio,
109 psScRatioErr);
110 printf("Integral of central trigger: %.2f %% +- %.2f %%\n",
111 centrInt,
112 centrIntErr);
113 printf("Integral of central trigger (fit): %.2f %% +- %.2f %%\n",
114 centrIntFit,
115 centrIntFitErr);
c014f07d 116
8d939043 117 printf("\n\n");
118 FILE *fout=fopen(Form("./check.%s.txt",filename),"w");
119 if (!fout) {
120 printf("Failed to open local result file\n");
121 return;
c014f07d 122 }
8d939043 123 printf("%.2f %.2f %.2f %.2f %.2f %.2f %.2f %.2f %.2f %.2f\n\n",
124 rawRatio,rawRatioErr,
125 psRatio,psRatioErr,
126 psScRatio,psScRatioErr,
127 centrInt,centrIntErr,
128 centrIntFit,centrIntFitErr);
129 fprintf(fout,"%.2f %.2f %.2f %.2f %.2f %.2f %.2f %.2f %.2f %.2f\n\n",
130 rawRatio,rawRatioErr,
131 psRatio,psRatioErr,
132 psScRatio,psScRatioErr,
133 centrInt,centrIntErr,
134 centrIntFit,centrIntFitErr);
135 fclose(fout);
136
137 new TCanvas;
138 h3->Rebin(4);
139 TFitResultPtr fitRes = h3->Fit("pol0","S","",0,89);
140 printf("Centrality flatness, Chi2=%.3f/%d\n",fitRes->Chi2(),fitRes->Ndf());
141
142 // TH1F *hand = (TH1F*)list->FindObject("fV0Percent");
143 // TH1F *handall = (TH1F*)list->FindObject("fV0PercentAll");
144 // if (handall) {
145 // TH1F *hmb63 = (TH1F*)list->FindObject("fV0Percent63");
146 // TH1F *hmb63all = (TH1F*)list->FindObject("fV0Percent63All");
147 // printf("V0AND: purity=%f %%\n",hand->Integral(0,hand->FindBin(90.))/(Float_t)handall->GetEntries()*100.);
148 // printf(" MB63: purity=%f %% eff=%f %%\n",hmb63->Integral(0,hmb63->FindBin(90.))/hmb63all->GetEntries()*100.,hmb63->Integral(0,hmb63->FindBin(90.))/hand->Integral(0,hand->FindBin(90.))*100.);
149 // hmb63->Sumw2();
150 // hmb63->Divide(hmb63,hand,1,1,"B");
151 // new TCanvas;
152 // hmb63->SetStats(0);
153 // hmb63->SetTitle("MultA+MultC>=63 efficiency as a function of centrality percentile");
154 // hmb63->Draw();
155 // }
c014f07d 156}