140 Double_t TrkdEdx = dedxTrack->
getDedx();
144 if (TrkMom >= 8.00)TrkMom = 7.999;
145 Double_t BWMom = 0.250;
146 Int_t iMomBin = Int_t(TrkMom / BWMom);
151 ((TH1D*)
fBasic->FindObject(Form(
"hP_Positron_AR")))->Fill(TrkMom);
152 ((TH1D*)
fBasic->FindObject(Form(
"hdEdx_Positron_AR")))->Fill(TrkdEdxnosat);
153 ((TH1D*)
fPRdEdxinP->FindObject(Form(
"hdEdx_Posi_Pbin_AR%d", iMomBin)))->Fill(TrkdEdxnosat);
154 }
else if (TrkCharge < 0) {
155 ((TH1D*)
fBasic->FindObject(Form(
"hP_Electron_AR")))->Fill(TrkMom);
156 ((TH1D*)
fBasic->FindObject(Form(
"hdEdx_Electron_AR")))->Fill(TrkdEdxnosat);
157 ((TH1D*)
fPRdEdxinP->FindObject(Form(
"hdEdx_Elec_Pbin_AR%d", iMomBin)))->Fill(TrkdEdxnosat);
160 ((TH1D*)
fBasic->FindObject(Form(
"hdEdx_AR")))->Fill(
double(TrkdEdxnosat));
161 ((TH2D*)
fBasic->FindObject(Form(
"hdEdxvsPhi_AR")))->Fill(
double(mTrack->
getPhi()),
double(TrkdEdxnosat));
162 ((TH2D*)
fBasic->FindObject(Form(
"hPvsdEdx_AR")))->Fill(TrkMom * TrkCharge,
double(TrkdEdxnosat));
163 ((TH2D*)
fBasic->FindObject(Form(
"hPvsCosth_AR")))->Fill(TrkMom * TrkCharge,
double(TrkCosTheta));
171 double ChiPi = dedxTrack->
getChi(2);
172 double ChiK = dedxTrack->
getChi(3);
173 double ChiP = dedxTrack->
getChi(4);
176 ((TH2D*)
fBasic->FindObject(Form(
"hPvsdEdx_hadAR")))->Fill(TrkMom, TrkdEdx);
178 if ((TrkMom < 0.40) && (
fTrkEoverP < 0.4) && (TrkdEdx < (0.6 + 0.10 / (TrkMom * TrkMom)))
179 && (TrkdEdx > (0.4 + 0.012 / (TrkMom * TrkMom)))) {
180 ((TH1D*)
fBasic->FindObject(Form(
"hPionChiallP")))->Fill(ChiPi);
181 if (TrkMom < 0.300)((TH1D*)
fBasic->FindObject(Form(
"hPionChiLowP")))->Fill(ChiPi);
182 else ((TH1D*)
fBasic->FindObject(Form(
"hPionChiHighP")))->Fill(ChiPi);
183 ((TH2D*)
fBasic->FindObject(Form(
"hPvsdEdxPion_hadAR")))->Fill(TrkMom, TrkdEdx);
186 if ((TrkMom < 0.40) && (TrkdEdx > 1.35) && (TrkdEdx < (0.6 + 0.40 / (TrkMom * TrkMom)))
187 && (TrkdEdx > (0.6 + 0.10 / (TrkMom * TrkMom)))) {
188 ((TH1D*)
fBasic->FindObject(Form(
"hKaonChiallP")))->Fill(ChiK);
189 if (TrkMom < 0.350)((TH1D*)
fBasic->FindObject(Form(
"hKaonChiLowP")))->Fill(ChiK);
190 else ((TH1D*)
fBasic->FindObject(Form(
"hKaonChiHighP")))->Fill(ChiK);
191 ((TH2D*)
fBasic->FindObject(Form(
"hPvsdEdxKaon_hadAR")))->Fill(TrkMom, TrkdEdx);
194 if ((TrkMom < 0.80) && (TrkdEdx > 1.35) && (TrkdEdx < (0.6 + 1.20 / (TrkMom * TrkMom)))
195 && (TrkdEdx > (0.6 + 0.40 / (TrkMom * TrkMom)))) {
196 ((TH1D*)
fBasic->FindObject(Form(
"hProtonChiallP")))->Fill(ChiP);
197 if (TrkMom < 0.600)((TH1D*)
fBasic->FindObject(Form(
"hProtonChiLowP")))->Fill(ChiP);
198 else ((TH1D*)
fBasic->FindObject(Form(
"hProtonChiHighP")))->Fill(ChiP);
199 ((TH2D*)
fBasic->FindObject(Form(
"hPvsdEdxProton_hadAR")))->Fill(TrkMom, TrkdEdx);
219 TH1D* hTrkPerEvtStats =
new TH1D(
"hTrkPerEvtStats",
"Track selections", 6, -0.5, 5.5);
220 hTrkPerEvtStats->GetXaxis()->SetBinLabel(1,
"no dedxobject");
221 hTrkPerEvtStats->GetXaxis()->SetBinLabel(2,
"no assoc-track");
222 hTrkPerEvtStats->GetXaxis()->SetBinLabel(3,
"no TrackFit");
223 hTrkPerEvtStats->GetXaxis()->SetBinLabel(4,
"no pass cuts");
224 hTrkPerEvtStats->GetXaxis()->SetBinLabel(5,
"no eclCluster");
225 hTrkPerEvtStats->GetXaxis()->SetBinLabel(6,
"Selected");
226 hTrkPerEvtStats->SetFillColor(kRed);
227 hTrkPerEvtStats->SetFillStyle(3015);
228 hTrkPerEvtStats->SetMinimum(0);
229 fBasic->Add(hTrkPerEvtStats);
234 hdEdx_AR->GetXaxis()->SetTitle(Form(
"dE/dx truncMean of %s tracks",
fCollType.data()));
235 hdEdx_AR->GetYaxis()->SetTitle(
"Entries");
238 TH1D* hEOverP_AR =
new TH1D(
"hEOverP_AR",
"E/p distribution", 100, 0.5, 1.5);
239 hEOverP_AR->GetXaxis()->SetTitle(
"E/p distribution");
240 hEOverP_AR->GetYaxis()->SetTitle(
"Entries");
243 TH1D* hRunGainPR =
new TH1D(
"hRunGainPR",
"bla-bla",
fnRuns, -0.5,
fnRuns - 0.5);
244 hRunGainPR->SetTitle(
"Run gain variation vs. RunNumber;Run Numbers;dE/dx mean");
245 hRunGainPR->GetYaxis()->SetRangeUser(0.85, 1.15);
248 TH1D* hP_Electron_AR =
new TH1D(
"hP_Electron_AR",
"bla-bla", 320, 0.0, 8.0);
249 hP_Electron_AR->SetTitle(
"Momentum distribution of e-; Momentum of (e-); Entries");
250 fBasic->Add(hP_Electron_AR);
252 TH1D* hP_Positron_AR =
new TH1D(
"hP_Positron_AR",
"bla-bla", 320, 0.0, 8.0);
253 hP_Positron_AR->SetTitle(
"Momentum distribution of e+;Momentum of (e+);Entries");
254 fBasic->Add(hP_Positron_AR);
257 hdEdx_Electron_AR->SetTitle(
"dE/dx (nohad sat) of e- ;dE/dx distribution (e-);Entries");
258 fBasic->Add(hdEdx_Electron_AR);
261 hdEdx_Positron_AR->SetTitle(
"dE/dx (nohad sat) of e+;dE/dx distribution (e+);Entries");
262 fBasic->Add(hdEdx_Positron_AR);
264 TH2D* hPvsdEdx_AR =
new TH2D(
"hPvsdEdx_AR",
"bla-bla", 320, -8.0, 8.0, 100, 0.0, 2.0);
265 hPvsdEdx_AR->SetTitle(
"dE/dx band plots for e+ and e-; Momentum of (e+(right)) and e-);dE/dx");
268 TH2D* hdEdxvsPhi_AR =
new TH2D(
"hdEdxvsPhi_AR",
"dE/dx (no had sat) vs #phi", 64, -3.14, 3.14, 200, 0., 2.0);
269 hdEdxvsPhi_AR->SetTitle(
"dE/dx (no Had Sat) vs #phi;track #phi;dE/dx");
270 fBasic->Add(hdEdxvsPhi_AR);
272 TH2D* hPvsCosth_AR =
new TH2D(
"hPvsCosth_AR",
"cos(#theta) vs. p: all Runs", 2 * 48, -10., 10., 60, -1.2, 1.2);
273 hPvsCosth_AR->GetXaxis()->SetTitle(Form(
"Momentum of %s tracks",
fCollType.data()));
274 hPvsCosth_AR->GetYaxis()->SetTitle(
"cos(#theta)");
275 fBasic->Add(hPvsCosth_AR);
278 TH1D* hdEdx_Posi_Pbin_AR[32], *hdEdx_Elec_Pbin_AR[32];
279 for (
int ip = 0; ip < 32; ip++) {
281 hdEdx_Posi_Pbin_AR[ip] =
new TH1D(Form(
"hdEdx_Posi_Pbin_AR%d", ip), Form(
"hdEdx_Posi_Pbin_AR%d", ip),
fnBinsdedx,
fnBinsdedxLE,
283 hdEdx_Posi_Pbin_AR[ip]->GetXaxis()->SetTitle(
"dE/dx distribution (e+)");
284 hdEdx_Posi_Pbin_AR[ip]->GetYaxis()->SetTitle(
"Entries");
285 hdEdx_Posi_Pbin_AR[ip]->SetTitle(Form(
"Momentum range %0.03f to %0.03f", ip * 0.250, (ip + 1) * 0.250));
288 hdEdx_Elec_Pbin_AR[ip] =
new TH1D(Form(
"hdEdx_Elec_Pbin_AR%d", ip), Form(
"hdEdx_Elec_Pbin_AR%d", ip),
fnBinsdedx,
fnBinsdedxLE,
290 hdEdx_Elec_Pbin_AR[ip]->GetXaxis()->SetTitle(
"dE/dx distribution (e-)");
291 hdEdx_Elec_Pbin_AR[ip]->GetYaxis()->SetTitle(
"Entries");
292 hdEdx_Elec_Pbin_AR[ip]->SetTitle(Form(
"Momentum range %0.03f to %0.03f", ip * 0.250, (ip + 1) * 0.250));
296 for (
int ip = 0; ip < 32; ip++)
fPRdEdxinP->Add(hdEdx_Elec_Pbin_AR[ip]);
303 TH2D* hPvsdEdx_hadAR =
new TH2D(
"hPvsdEdx_hadAR",
"bla-bla", 500, 0.10, 15.0, 750, 0.05, 15);
304 hPvsdEdx_hadAR->SetTitle(
"dE/dx band plot; Momentum;dE/dx");
305 fBasic->Add(hPvsdEdx_hadAR);
307 TH2D* hPvsdEdxPion_hadAR =
new TH2D(
"hPvsdEdxPion_hadAR",
"bla-bla", 500, 0.10, 15.0, 750, 0.05, 15);
308 hPvsdEdxPion_hadAR->SetTitle(
"dE/dx band plot (Pion); Momentum;dE/dx");
309 hPvsdEdxPion_hadAR->SetMarkerColor(kRed);
310 fBasic->Add(hPvsdEdxPion_hadAR);
312 TH2D* hPvsdEdxKaon_hadAR =
new TH2D(
"hPvsdEdxKaon_hadAR",
"bla-bla", 500, 0.10, 15.0, 750, 0.05, 15);
313 hPvsdEdxKaon_hadAR->SetTitle(
"dE/dx band plot (Kaon); Momentum;dE/dx");
314 hPvsdEdxKaon_hadAR->SetMarkerColor(kGreen);
315 fBasic->Add(hPvsdEdxKaon_hadAR);
317 TH2D* hPvsdEdxProton_hadAR =
new TH2D(
"hPvsdEdxProton_hadAR",
"bla-bla", 500, 0.10, 15.0, 750, 0.05, 15);
318 hPvsdEdxProton_hadAR->SetTitle(
"dE/dx band plot (Proton); Momentum;dE/dx");
319 hPvsdEdxKaon_hadAR->SetMarkerColor(kBlue);
320 fBasic->Add(hPvsdEdxProton_hadAR);
323 TH1D* hPionChiallP =
new TH1D(
"hPionChiallP",
"bla-bla", 240, -6.0, 6.0);
324 hPionChiallP->SetTitle(
"Chi value (Pion);chi value; Entries");
325 fBasic->Add(hPionChiallP);
327 TH1D* hPionChiLowP =
new TH1D(
"hPionChiLowP",
"bla-bla", 240, -6.0, 6.0);
328 hPionChiLowP->SetTitle(
"Chi value (Pion), Momentum (0-300) MeV; chi value; Entries");
329 fBasic->Add(hPionChiLowP);
331 TH1D* hPionChiHighP =
new TH1D(
"hPionChiHighP",
"bla-bla", 240, -6.0, 6.0);
332 hPionChiHighP->SetTitle(
"Chi value (Pion), Momentum (300-400) MeV; chi value; Entries");
333 fBasic->Add(hPionChiHighP);
336 TH1D* hKaonChiallP =
new TH1D(
"hKaonChiallP",
"bla-bla", 240, -6.0, 6.0);
337 hKaonChiallP->SetTitle(
"Chi value (Kaon);chi value; Entries");
338 fBasic->Add(hKaonChiallP);
340 TH1D* hKaonChiLowP =
new TH1D(
"hKaonChiLowP",
"bla-bla", 240, -6.0, 6.0);
341 hKaonChiLowP->SetTitle(
"Chi value (Kaon), Momentum (0-350) MeV; chi value; Entries");
342 fBasic->Add(hKaonChiLowP);
344 TH1D* hKaonChiHighP =
new TH1D(
"hKaonChiHighP",
"bla-bla", 240, -6.0, 6.0);
345 hKaonChiHighP->SetTitle(
"Chi value (Kaon), Momentum (350-800) MeV; chi value; Entries");
346 fBasic->Add(hKaonChiHighP);
349 TH1D* hProtonChiallP =
new TH1D(
"hProtonChiallP",
"bla-bla", 240, -6.0, 6.0);
350 hProtonChiallP->SetTitle(
"Chi value (Proton);chi value; Entries");
351 fBasic->Add(hProtonChiallP);
353 TH1D* hProtonChiLowP =
new TH1D(
"hProtonChiLowP",
"bla-bla", 240, -6.0, 6.0);
354 hProtonChiLowP->SetTitle(
"Chi value (Proton), Momentum (0-600) MeV; chi value; Entries");
355 fBasic->Add(hProtonChiLowP);
357 TH1D* hProtonChiHighP =
new TH1D(
"hProtonChiHighP",
"bla-bla", 240, -6.0, 6.0);
358 hProtonChiHighP->SetTitle(
"Chi value (Proton), Momentum (600-800) MeV; chi value; Entries");
359 fBasic->Add(hProtonChiHighP);
361 }
else if (level ==
"PR") {
365 hdEdx_PR[iR]->GetXaxis()->SetTitle(Form(
"dE/dx trucMean of %s tracks",
fCollType.data()));
366 hdEdx_PR[iR]->GetYaxis()->SetTitle(
"Entries");
370 B2ERROR(
"Run Gain: Enter AR or PR mode only");
381 Double_t mean = 0., meanError = 0.;
382 Double_t sigma = 0., sigmaError = 0.;
385 Int_t fitStatus = -1;
387 if (fitStatus == 0) {
389 mean = fit->GetParameter(1);
390 meanError = fit->GetParError(1);
391 sigma = fit->GetParameter(2);
392 sigmaError = fit->GetParError(2);
393 hdEdx_PR[
fiRun]->GetXaxis()->SetRangeUser(mean - 7 * sigma, mean + 7 * sigma);
408 }
else if (level ==
"AR") {
410 const Int_t allNRun =
TotMean.size();
411 ((TH1D*)
fBasic->FindObject(
"hRunGainPR"))->GetXaxis()->SetRange(1, allNRun);
413 TH1D* hFitdEdxMeanPR =
new TH1D(
"hFitdEdxMeanPR",
"dE/dx(nohad-sat) #mu via fit vs. Runs", allNRun, 0, allNRun);
414 hFitdEdxMeanPR->GetYaxis()->SetRangeUser(0.90, 1.10);
415 hFitdEdxMeanPR->SetMarkerStyle(21);
416 hFitdEdxMeanPR->SetMarkerColor(kRed);
417 hFitdEdxMeanPR->SetMarkerSize(1);
418 hFitdEdxMeanPR->GetXaxis()->SetTitle(
"Run numbers");
419 hFitdEdxMeanPR->GetYaxis()->SetTitle(
"dEdx mean (fit)");
420 hFitdEdxMeanPR->GetXaxis()->LabelsOption(
"v");
422 TH1D* hFitdEdxSigmaPR =
new TH1D(
"hFitdEdxSigmaPR",
"dE/dx(nohad-sat) #sigma via fit vs. Runs", allNRun, 0, allNRun);
423 hFitdEdxSigmaPR->GetYaxis()->SetRangeUser(0, 0.30);
424 hFitdEdxSigmaPR->SetMarkerStyle(21);
425 hFitdEdxSigmaPR->SetMarkerColor(kRed);
426 hFitdEdxSigmaPR->SetMarkerSize(1);
427 hFitdEdxSigmaPR->GetXaxis()->SetTitle(
"Run numbers");
428 hFitdEdxSigmaPR->GetYaxis()->SetTitle(
"dEdx sigma (fit)");
429 hFitdEdxSigmaPR->GetXaxis()->LabelsOption(
"v");
431 for (Int_t i = 0; i < allNRun; i++) {
433 if (i % 10 == 0)hFitdEdxMeanPR->GetXaxis()->SetBinLabel(i + 1, Form(
"%d",
TotRunN.at(i)));
434 hFitdEdxMeanPR->SetBinContent(i + 1,
TotMean.at(i));
435 hFitdEdxMeanPR->SetBinError(i + 1,
TotMeanE.at(i));
437 if (i % 10 == 0)hFitdEdxSigmaPR->GetXaxis()->SetBinLabel(i + 1, Form(
"%d",
TotRunN.at(i)));
438 hFitdEdxSigmaPR->SetBinContent(i + 1,
TotSigma.at(i));
439 hFitdEdxSigmaPR->SetBinError(i + 1,
TotSigmaE.at(i));
442 fBasic->Add(hFitdEdxMeanPR);
443 fBasic->Add(hFitdEdxSigmaPR);
445 TH1D* hdEdxFit_allRun = (TH1D*)(
fBasic->FindObject(Form(
"hdEdx_AR"))->Clone(
"hdEdxFit_allRun"));
446 if (hdEdxFit_allRun->GetEntries() > 100) {
447 hdEdxFit_allRun->Fit(
"gaus",
"Q");
448 TF1* hGfit = (TF1*)hdEdxFit_allRun->GetFunction(
"gaus");
449 Double_t meanGFit = hGfit->GetParameter(1);
450 Double_t sigmaGFit = hGfit->GetParameter(2);
451 hdEdxFit_allRun->GetXaxis()->SetRangeUser(meanGFit - 7 * sigmaGFit, meanGFit + 7 * sigmaGFit);
452 hdEdxFit_allRun->SetFillColor(kYellow);
453 hdEdxFit_allRun->SetStats(kTRUE);
454 fBasic->Add(hdEdxFit_allRun);
457 TH1D* hdEdxMeanVsMomentum =
new TH1D(
"hdEdxMeanVsMomentum",
"dEdx-mean vs P bins (BW = 250MeV)", 64, -8.0, 8.0);
458 hdEdxMeanVsMomentum->GetXaxis()->SetTitle(
"Track Momentum");
459 hdEdxMeanVsMomentum->GetYaxis()->SetTitle(
"dEdx Mean");
461 TH1D* hdEdxSigmaVsMomentum =
new TH1D(
"hdEdxSigmaVsMomentum",
"dEdx-sigma vs P bins (BW = 250MeV)", 64, -8.0, 8.0);
462 hdEdxSigmaVsMomentum->GetXaxis()->SetTitle(
"Track Momentum");
463 hdEdxSigmaVsMomentum->GetYaxis()->SetTitle(
"dEdx Sigma");
465 for (
int ip = 0; ip < 32; ip++) {
466 Int_t nTrack = ((TH1D*)
fPRdEdxinP->FindObject(Form(
"hdEdx_Posi_Pbin_AR%d", ip)))->GetEntries();
467 ((TH1D*)
fPRdEdxinP->FindObject(Form(
"hdEdx_Posi_Pbin_AR%d", ip)))->SetFillColor(kYellow);
468 Double_t iPMean = 1.0, iPSigma = 0.0;
470 ((TH1D*)
fPRdEdxinP->FindObject(Form(
"hdEdx_Posi_Pbin_AR%d", ip)))->Fit(
"gaus",
"0");
471 iPMean = ((TH1D*)
fPRdEdxinP->FindObject(Form(
"hdEdx_Posi_Pbin_AR%d", ip)))->GetFunction(
"gaus")->GetParameter(1);
472 iPSigma = ((TH1D*)
fPRdEdxinP->FindObject(Form(
"hdEdx_Posi_Pbin_AR%d", ip)))->GetFunction(
"gaus")->GetParameter(2);
474 hdEdxMeanVsMomentum->SetBinContent(32 + ip + 1, iPMean);
475 hdEdxSigmaVsMomentum->SetBinContent(32 + ip + 1, iPSigma);
478 for (
int ip = 0; ip < 32; ip++) {
479 Int_t nTrack = ((TH1D*)
fPRdEdxinP->FindObject(Form(
"hdEdx_Posi_Pbin_AR%d", ip)))->GetEntries();
480 ((TH1D*)
fPRdEdxinP->FindObject(Form(
"hdEdx_Elec_Pbin_AR%d", ip)))->SetFillColor(kYellow);
481 Double_t iPMean = 1.0, iPSigma = 0.0;
484 ((TH1D*)
fPRdEdxinP->FindObject(Form(
"hdEdx_Elec_Pbin_AR%d", ip)))->Fit(
"gaus",
"0");
485 iPMean = ((TH1D*)
fPRdEdxinP->FindObject(Form(
"hdEdx_Elec_Pbin_AR%d", ip)))->GetFunction(
"gaus")->GetParameter(1);
486 iPSigma = ((TH1D*)
fPRdEdxinP->FindObject(Form(
"hdEdx_Elec_Pbin_AR%d", ip)))->GetFunction(
"gaus")->GetParameter(2);
488 hdEdxMeanVsMomentum->SetBinContent(32 - ip, iPMean);
489 hdEdxSigmaVsMomentum->SetBinContent(32 - ip, iPSigma);
492 fBasic->Add(hdEdxSigmaVsMomentum);
493 fBasic->Add(hdEdxMeanVsMomentum);
495 B2ERROR(
"RunGain >> NO-REQUEST-FOUND for PR or AR level plots, exiting..");