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 (
static_cast<TH1D*
>(
fBasic->FindObject(Form(
"hP_Positron_AR"))))->Fill(TrkMom);
152 (
static_cast<TH1D*
>(
fBasic->FindObject(Form(
"hdEdx_Positron_AR"))))->Fill(TrkdEdxnosat);
153 (
static_cast<TH1D*
>(
fPRdEdxinP->FindObject(Form(
"hdEdx_Posi_Pbin_AR%d", iMomBin))))->Fill(TrkdEdxnosat);
154 }
else if (TrkCharge < 0) {
155 (
static_cast<TH1D*
>(
fBasic->FindObject(Form(
"hP_Electron_AR"))))->Fill(TrkMom);
156 (
static_cast<TH1D*
>(
fBasic->FindObject(Form(
"hdEdx_Electron_AR"))))->Fill(TrkdEdxnosat);
157 (
static_cast<TH1D*
>(
fPRdEdxinP->FindObject(Form(
"hdEdx_Elec_Pbin_AR%d", iMomBin))))->Fill(TrkdEdxnosat);
160 (
static_cast<TH1D*
>(
fBasic->FindObject(Form(
"hdEdx_AR"))))->Fill(
double(TrkdEdxnosat));
161 (
static_cast<TH2D*
>(
fBasic->FindObject(Form(
"hdEdxvsPhi_AR"))))->Fill(
double(mTrack->
getPhi()),
double(TrkdEdxnosat));
162 (
static_cast<TH2D*
>(
fBasic->FindObject(Form(
"hPvsdEdx_AR"))))->Fill(TrkMom * TrkCharge,
double(TrkdEdxnosat));
163 (
static_cast<TH2D*
>(
fBasic->FindObject(Form(
"hPvsCosth_AR"))))->Fill(TrkMom * TrkCharge,
double(TrkCosTheta));
172 double ChiPi = dedxTrack->
getChi(2);
174 double ChiK = dedxTrack->
getChi(3);
176 double ChiP = dedxTrack->
getChi(4);
179 (
static_cast<TH2D*
>(
fBasic->FindObject(Form(
"hPvsdEdx_hadAR"))))->Fill(TrkMom, TrkdEdx);
181 if ((TrkMom < 0.40) && (
fTrkEoverP < 0.4) && (TrkdEdx < (0.6 + 0.10 / (TrkMom * TrkMom)))
182 && (TrkdEdx > (0.4 + 0.012 / (TrkMom * TrkMom)))) {
183 (
static_cast<TH1D*
>(
fBasic->FindObject(Form(
"hPionChiallP"))))->Fill(ChiPi);
184 if (TrkMom < 0.300)(
static_cast<TH1D*
>(
fBasic->FindObject(Form(
"hPionChiLowP"))))->Fill(ChiPi);
185 else (
static_cast<TH1D*
>(
fBasic->FindObject(Form(
"hPionChiHighP"))))->Fill(ChiPi);
186 (
static_cast<TH2D*
>(
fBasic->FindObject(Form(
"hPvsdEdxPion_hadAR"))))->Fill(TrkMom, TrkdEdx);
189 if ((TrkMom < 0.40) && (TrkdEdx > 1.35) && (TrkdEdx < (0.6 + 0.40 / (TrkMom * TrkMom)))
190 && (TrkdEdx > (0.6 + 0.10 / (TrkMom * TrkMom)))) {
191 (
static_cast<TH1D*
>(
fBasic->FindObject(Form(
"hKaonChiallP"))))->Fill(ChiK);
192 if (TrkMom < 0.350)(
static_cast<TH1D*
>(
fBasic->FindObject(Form(
"hKaonChiLowP"))))->Fill(ChiK);
193 else (
static_cast<TH1D*
>(
fBasic->FindObject(Form(
"hKaonChiHighP"))))->Fill(ChiK);
194 (
static_cast<TH2D*
>(
fBasic->FindObject(Form(
"hPvsdEdxKaon_hadAR"))))->Fill(TrkMom, TrkdEdx);
197 if ((TrkMom < 0.80) && (TrkdEdx > 1.35) && (TrkdEdx < (0.6 + 1.20 / (TrkMom * TrkMom)))
198 && (TrkdEdx > (0.6 + 0.40 / (TrkMom * TrkMom)))) {
199 (
static_cast<TH1D*
>(
fBasic->FindObject(Form(
"hProtonChiallP"))))->Fill(ChiP);
200 if (TrkMom < 0.600)(
static_cast<TH1D*
>(
fBasic->FindObject(Form(
"hProtonChiLowP"))))->Fill(ChiP);
201 else (
static_cast<TH1D*
>(
fBasic->FindObject(Form(
"hProtonChiHighP"))))->Fill(ChiP);
202 (
static_cast<TH2D*
>(
fBasic->FindObject(Form(
"hPvsdEdxProton_hadAR"))))->Fill(TrkMom, TrkdEdx);
222 TH1D* hTrkPerEvtStats =
new TH1D(
"hTrkPerEvtStats",
"Track selections", 6, -0.5, 5.5);
223 hTrkPerEvtStats->GetXaxis()->SetBinLabel(1,
"no dedxobject");
224 hTrkPerEvtStats->GetXaxis()->SetBinLabel(2,
"no assoc-track");
225 hTrkPerEvtStats->GetXaxis()->SetBinLabel(3,
"no TrackFit");
226 hTrkPerEvtStats->GetXaxis()->SetBinLabel(4,
"no pass cuts");
227 hTrkPerEvtStats->GetXaxis()->SetBinLabel(5,
"no eclCluster");
228 hTrkPerEvtStats->GetXaxis()->SetBinLabel(6,
"Selected");
229 hTrkPerEvtStats->SetFillColor(kRed);
230 hTrkPerEvtStats->SetFillStyle(3015);
231 hTrkPerEvtStats->SetMinimum(0);
232 fBasic->Add(hTrkPerEvtStats);
237 hdEdx_AR->GetXaxis()->SetTitle(Form(
"dE/dx truncMean of %s tracks",
fCollType.data()));
238 hdEdx_AR->GetYaxis()->SetTitle(
"Entries");
241 TH1D* hEOverP_AR =
new TH1D(
"hEOverP_AR",
"E/p distribution", 100, 0.5, 1.5);
242 hEOverP_AR->GetXaxis()->SetTitle(
"E/p distribution");
243 hEOverP_AR->GetYaxis()->SetTitle(
"Entries");
246 TH1D* hRunGainPR =
new TH1D(
"hRunGainPR",
"bla-bla",
fnRuns, -0.5,
fnRuns - 0.5);
247 hRunGainPR->SetTitle(
"Run gain variation vs. RunNumber;Run Numbers;dE/dx mean");
248 hRunGainPR->GetYaxis()->SetRangeUser(0.85, 1.15);
251 TH1D* hP_Electron_AR =
new TH1D(
"hP_Electron_AR",
"bla-bla", 320, 0.0, 8.0);
252 hP_Electron_AR->SetTitle(
"Momentum distribution of e-; Momentum of (e-); Entries");
253 fBasic->Add(hP_Electron_AR);
255 TH1D* hP_Positron_AR =
new TH1D(
"hP_Positron_AR",
"bla-bla", 320, 0.0, 8.0);
256 hP_Positron_AR->SetTitle(
"Momentum distribution of e+;Momentum of (e+);Entries");
257 fBasic->Add(hP_Positron_AR);
260 hdEdx_Electron_AR->SetTitle(
"dE/dx (nohad sat) of e- ;dE/dx distribution (e-);Entries");
261 fBasic->Add(hdEdx_Electron_AR);
264 hdEdx_Positron_AR->SetTitle(
"dE/dx (nohad sat) of e+;dE/dx distribution (e+);Entries");
265 fBasic->Add(hdEdx_Positron_AR);
267 TH2D* hPvsdEdx_AR =
new TH2D(
"hPvsdEdx_AR",
"bla-bla", 320, -8.0, 8.0, 100, 0.0, 2.0);
268 hPvsdEdx_AR->SetTitle(
"dE/dx band plots for e+ and e-; Momentum of (e+(right)) and e-);dE/dx");
271 TH2D* hdEdxvsPhi_AR =
new TH2D(
"hdEdxvsPhi_AR",
"dE/dx (no had sat) vs #phi", 64, -3.14, 3.14, 200, 0., 2.0);
272 hdEdxvsPhi_AR->SetTitle(
"dE/dx (no Had Sat) vs #phi;track #phi;dE/dx");
273 fBasic->Add(hdEdxvsPhi_AR);
275 TH2D* hPvsCosth_AR =
new TH2D(
"hPvsCosth_AR",
"cos(#theta) vs. p: all Runs", 2 * 48, -10., 10., 60, -1.2, 1.2);
276 hPvsCosth_AR->GetXaxis()->SetTitle(Form(
"Momentum of %s tracks",
fCollType.data()));
277 hPvsCosth_AR->GetYaxis()->SetTitle(
"cos(#theta)");
278 fBasic->Add(hPvsCosth_AR);
281 TH1D* hdEdx_Posi_Pbin_AR[32], *hdEdx_Elec_Pbin_AR[32];
282 for (
int ip = 0; ip < 32; ip++) {
284 hdEdx_Posi_Pbin_AR[ip] =
new TH1D(Form(
"hdEdx_Posi_Pbin_AR%d", ip), Form(
"hdEdx_Posi_Pbin_AR%d", ip),
fnBinsdedx,
fnBinsdedxLE,
286 hdEdx_Posi_Pbin_AR[ip]->GetXaxis()->SetTitle(
"dE/dx distribution (e+)");
287 hdEdx_Posi_Pbin_AR[ip]->GetYaxis()->SetTitle(
"Entries");
288 hdEdx_Posi_Pbin_AR[ip]->SetTitle(Form(
"Momentum range %0.03f to %0.03f", ip * 0.250, (ip + 1) * 0.250));
291 hdEdx_Elec_Pbin_AR[ip] =
new TH1D(Form(
"hdEdx_Elec_Pbin_AR%d", ip), Form(
"hdEdx_Elec_Pbin_AR%d", ip),
fnBinsdedx,
fnBinsdedxLE,
293 hdEdx_Elec_Pbin_AR[ip]->GetXaxis()->SetTitle(
"dE/dx distribution (e-)");
294 hdEdx_Elec_Pbin_AR[ip]->GetYaxis()->SetTitle(
"Entries");
295 hdEdx_Elec_Pbin_AR[ip]->SetTitle(Form(
"Momentum range %0.03f to %0.03f", ip * 0.250, (ip + 1) * 0.250));
299 for (
int ip = 0; ip < 32; ip++)
fPRdEdxinP->Add(hdEdx_Elec_Pbin_AR[ip]);
306 TH2D* hPvsdEdx_hadAR =
new TH2D(
"hPvsdEdx_hadAR",
"bla-bla", 500, 0.10, 15.0, 750, 0.05, 15);
307 hPvsdEdx_hadAR->SetTitle(
"dE/dx band plot; Momentum;dE/dx");
308 fBasic->Add(hPvsdEdx_hadAR);
310 TH2D* hPvsdEdxPion_hadAR =
new TH2D(
"hPvsdEdxPion_hadAR",
"bla-bla", 500, 0.10, 15.0, 750, 0.05, 15);
311 hPvsdEdxPion_hadAR->SetTitle(
"dE/dx band plot (Pion); Momentum;dE/dx");
312 hPvsdEdxPion_hadAR->SetMarkerColor(kRed);
313 fBasic->Add(hPvsdEdxPion_hadAR);
315 TH2D* hPvsdEdxKaon_hadAR =
new TH2D(
"hPvsdEdxKaon_hadAR",
"bla-bla", 500, 0.10, 15.0, 750, 0.05, 15);
316 hPvsdEdxKaon_hadAR->SetTitle(
"dE/dx band plot (Kaon); Momentum;dE/dx");
317 hPvsdEdxKaon_hadAR->SetMarkerColor(kGreen);
318 fBasic->Add(hPvsdEdxKaon_hadAR);
320 TH2D* hPvsdEdxProton_hadAR =
new TH2D(
"hPvsdEdxProton_hadAR",
"bla-bla", 500, 0.10, 15.0, 750, 0.05, 15);
321 hPvsdEdxProton_hadAR->SetTitle(
"dE/dx band plot (Proton); Momentum;dE/dx");
322 hPvsdEdxKaon_hadAR->SetMarkerColor(kBlue);
323 fBasic->Add(hPvsdEdxProton_hadAR);
326 TH1D* hPionChiallP =
new TH1D(
"hPionChiallP",
"bla-bla", 240, -6.0, 6.0);
327 hPionChiallP->SetTitle(
"Chi value (Pion);chi value; Entries");
328 fBasic->Add(hPionChiallP);
330 TH1D* hPionChiLowP =
new TH1D(
"hPionChiLowP",
"bla-bla", 240, -6.0, 6.0);
331 hPionChiLowP->SetTitle(
"Chi value (Pion), Momentum (0-300) MeV; chi value; Entries");
332 fBasic->Add(hPionChiLowP);
334 TH1D* hPionChiHighP =
new TH1D(
"hPionChiHighP",
"bla-bla", 240, -6.0, 6.0);
335 hPionChiHighP->SetTitle(
"Chi value (Pion), Momentum (300-400) MeV; chi value; Entries");
336 fBasic->Add(hPionChiHighP);
339 TH1D* hKaonChiallP =
new TH1D(
"hKaonChiallP",
"bla-bla", 240, -6.0, 6.0);
340 hKaonChiallP->SetTitle(
"Chi value (Kaon);chi value; Entries");
341 fBasic->Add(hKaonChiallP);
343 TH1D* hKaonChiLowP =
new TH1D(
"hKaonChiLowP",
"bla-bla", 240, -6.0, 6.0);
344 hKaonChiLowP->SetTitle(
"Chi value (Kaon), Momentum (0-350) MeV; chi value; Entries");
345 fBasic->Add(hKaonChiLowP);
347 TH1D* hKaonChiHighP =
new TH1D(
"hKaonChiHighP",
"bla-bla", 240, -6.0, 6.0);
348 hKaonChiHighP->SetTitle(
"Chi value (Kaon), Momentum (350-800) MeV; chi value; Entries");
349 fBasic->Add(hKaonChiHighP);
352 TH1D* hProtonChiallP =
new TH1D(
"hProtonChiallP",
"bla-bla", 240, -6.0, 6.0);
353 hProtonChiallP->SetTitle(
"Chi value (Proton);chi value; Entries");
354 fBasic->Add(hProtonChiallP);
356 TH1D* hProtonChiLowP =
new TH1D(
"hProtonChiLowP",
"bla-bla", 240, -6.0, 6.0);
357 hProtonChiLowP->SetTitle(
"Chi value (Proton), Momentum (0-600) MeV; chi value; Entries");
358 fBasic->Add(hProtonChiLowP);
360 TH1D* hProtonChiHighP =
new TH1D(
"hProtonChiHighP",
"bla-bla", 240, -6.0, 6.0);
361 hProtonChiHighP->SetTitle(
"Chi value (Proton), Momentum (600-800) MeV; chi value; Entries");
362 fBasic->Add(hProtonChiHighP);
364 }
else if (level ==
"PR") {
368 hdEdx_PR[iR]->GetXaxis()->SetTitle(Form(
"dE/dx trucMean of %s tracks",
fCollType.data()));
369 hdEdx_PR[iR]->GetYaxis()->SetTitle(
"Entries");
373 B2ERROR(
"Run Gain: Enter AR or PR mode only");
384 Double_t mean = 0., meanError = 0.;
385 Double_t sigma = 0., sigmaError = 0.;
388 Int_t fitStatus = -1;
390 if (fitStatus == 0) {
391 TF1* fit =
static_cast<TF1*
>(
hdEdx_PR[
fiRun]->GetFunction(
"gaus"));
392 mean = fit->GetParameter(1);
393 meanError = fit->GetParError(1);
394 sigma = fit->GetParameter(2);
395 sigmaError = fit->GetParError(2);
396 hdEdx_PR[
fiRun]->GetXaxis()->SetRangeUser(mean - 7 * sigma, mean + 7 * sigma);
407 if (
fiRun % 10 == 0)(
static_cast<TH1D*
>(
fBasic->FindObject(
"hRunGainPR")))->GetXaxis()->SetBinLabel(
fiRun + 1, Form(
"%d",
410 (
static_cast<TH1D*
>(
fBasic->FindObject(
"hRunGainPR")))->SetBinError(
fiRun + 1,
413 }
else if (level ==
"AR") {
415 const Int_t allNRun =
TotMean.size();
416 (
static_cast<TH1D*
>(
fBasic->FindObject(
"hRunGainPR")))->GetXaxis()->SetRange(1, allNRun);
418 TH1D* hFitdEdxMeanPR =
new TH1D(
"hFitdEdxMeanPR",
"dE/dx(nohad-sat) #mu via fit vs. Runs", allNRun, 0, allNRun);
419 hFitdEdxMeanPR->GetYaxis()->SetRangeUser(0.90, 1.10);
420 hFitdEdxMeanPR->SetMarkerStyle(21);
421 hFitdEdxMeanPR->SetMarkerColor(kRed);
422 hFitdEdxMeanPR->SetMarkerSize(1);
423 hFitdEdxMeanPR->GetXaxis()->SetTitle(
"Run numbers");
424 hFitdEdxMeanPR->GetYaxis()->SetTitle(
"dEdx mean (fit)");
425 hFitdEdxMeanPR->GetXaxis()->LabelsOption(
"v");
427 TH1D* hFitdEdxSigmaPR =
new TH1D(
"hFitdEdxSigmaPR",
"dE/dx(nohad-sat) #sigma via fit vs. Runs", allNRun, 0, allNRun);
428 hFitdEdxSigmaPR->GetYaxis()->SetRangeUser(0, 0.30);
429 hFitdEdxSigmaPR->SetMarkerStyle(21);
430 hFitdEdxSigmaPR->SetMarkerColor(kRed);
431 hFitdEdxSigmaPR->SetMarkerSize(1);
432 hFitdEdxSigmaPR->GetXaxis()->SetTitle(
"Run numbers");
433 hFitdEdxSigmaPR->GetYaxis()->SetTitle(
"dEdx sigma (fit)");
434 hFitdEdxSigmaPR->GetXaxis()->LabelsOption(
"v");
436 for (Int_t i = 0; i < allNRun; i++) {
438 if (i % 10 == 0)hFitdEdxMeanPR->GetXaxis()->SetBinLabel(i + 1, Form(
"%d",
TotRunN.at(i)));
439 hFitdEdxMeanPR->SetBinContent(i + 1,
TotMean.at(i));
440 hFitdEdxMeanPR->SetBinError(i + 1,
TotMeanE.at(i));
442 if (i % 10 == 0)hFitdEdxSigmaPR->GetXaxis()->SetBinLabel(i + 1, Form(
"%d",
TotRunN.at(i)));
443 hFitdEdxSigmaPR->SetBinContent(i + 1,
TotSigma.at(i));
444 hFitdEdxSigmaPR->SetBinError(i + 1,
TotSigmaE.at(i));
447 fBasic->Add(hFitdEdxMeanPR);
448 fBasic->Add(hFitdEdxSigmaPR);
450 TH1D* hdEdxFit_allRun =
static_cast<TH1D*
>((
fBasic->FindObject(Form(
"hdEdx_AR"))->Clone(
"hdEdxFit_allRun")));
451 if (hdEdxFit_allRun->GetEntries() > 100) {
452 hdEdxFit_allRun->Fit(
"gaus",
"Q");
453 TF1* hGfit =
static_cast<TF1*
>(hdEdxFit_allRun->GetFunction(
"gaus"));
454 Double_t meanGFit = hGfit->GetParameter(1);
455 Double_t sigmaGFit = hGfit->GetParameter(2);
456 hdEdxFit_allRun->GetXaxis()->SetRangeUser(meanGFit - 7 * sigmaGFit, meanGFit + 7 * sigmaGFit);
457 hdEdxFit_allRun->SetFillColor(kYellow);
458 hdEdxFit_allRun->SetStats(kTRUE);
459 fBasic->Add(hdEdxFit_allRun);
462 TH1D* hdEdxMeanVsMomentum =
new TH1D(
"hdEdxMeanVsMomentum",
"dEdx-mean vs P bins (BW = 250MeV)", 64, -8.0, 8.0);
463 hdEdxMeanVsMomentum->GetXaxis()->SetTitle(
"Track Momentum");
464 hdEdxMeanVsMomentum->GetYaxis()->SetTitle(
"dEdx Mean");
466 TH1D* hdEdxSigmaVsMomentum =
new TH1D(
"hdEdxSigmaVsMomentum",
"dEdx-sigma vs P bins (BW = 250MeV)", 64, -8.0, 8.0);
467 hdEdxSigmaVsMomentum->GetXaxis()->SetTitle(
"Track Momentum");
468 hdEdxSigmaVsMomentum->GetYaxis()->SetTitle(
"dEdx Sigma");
470 for (
int ip = 0; ip < 32; ip++) {
471 Int_t nTrack = (
static_cast<TH1D*
>(
fPRdEdxinP->FindObject(Form(
"hdEdx_Posi_Pbin_AR%d", ip))))->GetEntries();
472 (
static_cast<TH1D*
>(
fPRdEdxinP->FindObject(Form(
"hdEdx_Posi_Pbin_AR%d", ip))))->SetFillColor(kYellow);
473 Double_t iPMean = 1.0, iPSigma = 0.0;
475 (
static_cast<TH1D*
>(
fPRdEdxinP->FindObject(Form(
"hdEdx_Posi_Pbin_AR%d", ip))))->Fit(
"gaus",
"0");
476 iPMean = (
static_cast<TH1D*
>(
fPRdEdxinP->FindObject(Form(
"hdEdx_Posi_Pbin_AR%d", ip))))->GetFunction(
"gaus")->GetParameter(1);
477 iPSigma = (
static_cast<TH1D*
>(
fPRdEdxinP->FindObject(Form(
"hdEdx_Posi_Pbin_AR%d", ip))))->GetFunction(
"gaus")->GetParameter(2);
479 hdEdxMeanVsMomentum->SetBinContent(32 + ip + 1, iPMean);
480 hdEdxSigmaVsMomentum->SetBinContent(32 + ip + 1, iPSigma);
483 for (
int ip = 0; ip < 32; ip++) {
484 Int_t nTrack = (
static_cast<TH1D*
>(
fPRdEdxinP->FindObject(Form(
"hdEdx_Posi_Pbin_AR%d", ip))))->GetEntries();
485 (
static_cast<TH1D*
>(
fPRdEdxinP->FindObject(Form(
"hdEdx_Elec_Pbin_AR%d", ip))))->SetFillColor(kYellow);
486 Double_t iPMean = 1.0, iPSigma = 0.0;
489 (
static_cast<TH1D*
>(
fPRdEdxinP->FindObject(Form(
"hdEdx_Elec_Pbin_AR%d", ip))))->Fit(
"gaus",
"0");
490 iPMean = (
static_cast<TH1D*
>(
fPRdEdxinP->FindObject(Form(
"hdEdx_Elec_Pbin_AR%d", ip))))->GetFunction(
"gaus")->GetParameter(1);
491 iPSigma = (
static_cast<TH1D*
>(
fPRdEdxinP->FindObject(Form(
"hdEdx_Elec_Pbin_AR%d", ip))))->GetFunction(
"gaus")->GetParameter(2);
493 hdEdxMeanVsMomentum->SetBinContent(32 - ip, iPMean);
494 hdEdxSigmaVsMomentum->SetBinContent(32 - ip, iPSigma);
497 fBasic->Add(hdEdxSigmaVsMomentum);
498 fBasic->Add(hdEdxMeanVsMomentum);
500 B2ERROR(
"RunGain >> NO-REQUEST-FOUND for PR or AR level plots, exiting..");