BmnRoot 26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Loading...
Searching...
No Matches
BmnLambdaQa.cxx
Go to the documentation of this file.
1/**
2 * \file BmnLambdaQa.cxx
3 * \brief FairTask for MC simulated lambda reconstruction performance calculation.
4 * \author Andrey Lebedev <andrey.lebedev@gsi.de> - original author for CBM experiment
5 * \author Sergey Merts <sergey.merts@gmail.com> - modifications for BMN experiment
6 * \author Alexander Lytaev <sas-lyt@ya.ru> - modifications for BMN experiment
7 * \date 2018 July
8 */
9
10#include "BmnLambdaQa.h"
11
12#include "BmnGemTrack.h"
13#include "BmnGlobalTrack.h"
14#include "BmnHistManager.h"
15#include "BmnLambdaQaReport.h"
16#include "BmnParticlePair.h"
17#include "BmnSiliconPoint.h"
18#include "BmnSimulationReport.h"
19#include "CbmMCTrack.h"
20#include "FairRootManager.h"
21
22#include <TChain.h>
23#include <TClonesArray.h>
24#include <TString.h>
25#include <boost/assign/list_of.hpp>
26#include <cmath>
27#include <fstream>
28#include <sstream>
29
30using boost::assign::list_of;
31using std::binary_search;
32using std::cout;
33using std::map;
34using std::vector;
35using namespace TMath;
36
38
40 : fHM(NULL)
41 , fOutputDir("./")
42 , fNOfBins(50)
67 , fInvMassMin(1.07)
68 , fInvMassMax(1.22)
71 , fMCTracks(NULL)
72{
73 // Initialize cut arrays ...
74 Double_t val = 0.;
75 for (Int_t i = 0; i < 2; i++) {
76 val = (i == 0) ? -DBL_MAX : DBL_MAX;
77 for (Int_t j = 0; j < 2; j++) {
78 val = (j == 0) ? -DBL_MAX : DBL_MAX;
79 fMom[i][j] = val;
80 fEta[i][j] = val;
81 fDCA[i][j] = val;
82 fDCA12[j] = val;
83 fPath[j] = val;
84 }
85 }
86}
87
89{
90 if (fHM)
91 delete fHM;
92}
93
95{
96
97 fHM = new BmnHistManager();
98
100 fNLambdas = 0;
102
105
109
110 CreateH1("numberOfLambdas_LambdaQa", "", "", 1, 0, 1.);
111 CreateH1("numberOfReconstructableLambdas_LambdaQa", "", "", 1, 0, 1.);
122 CreateH1("numberOfMCReconstructedParticlePairsQA", "", "", 1, 0, 1.);
123 CreateH1("numberOfMCReconstructedLambdasQA", "", "", 1, 0, 1.);
124 CreateH1("numberOfMCReconstructedAllParticlePairsQA", "", "", 1, 0, 1.);
129 CreateH1("numberOfReconstructedParticlePairWithMatchedLambdaQA", "", "", 1, 0, 1.);
130 CreateH1("numberOfNotReconstructedLambdasQA", "", "", 1, 0, 1.);
141 CreateH1("numberOfReconstructedParticlePairsQA", "", "", 1, 0, 1.);
146
147 return kSUCCESS;
148}
149
151{
152 if (fCurrentEvent % 100 == 0)
153 cout << "Event# " << fCurrentEvent << endl;
155
156 vector<Int_t> indicesOfLambdaProtons;
157 vector<Int_t> indicesOfLambdaMesons;
158
159 /* array: 0-th index is mother lambda's Id, 1-st is proton's Id, 2-nd is negative pi-meson's Id*/
160 vector<array<int, 3>> indicesOfLamda;
161
162 for (Int_t iTrack = 0; iTrack < fMCTracks->GetEntriesFast(); iTrack++) {
163 CbmMCTrack* track = (CbmMCTrack*)fMCTracks->At(iTrack);
164
165 if (NULL == track) {
166 cout << "Monte-Carlo simulation branch error" << endl;
167 return;
168 }
169
170 Double_t P = ((CbmMCTrack*)fMCTracks->At(iTrack))->GetP();
171 Double_t P_x = ((CbmMCTrack*)fMCTracks->At(iTrack))->GetPx();
172 Double_t P_y = ((CbmMCTrack*)fMCTracks->At(iTrack))->GetPy();
173 Double_t P_z = ((CbmMCTrack*)fMCTracks->At(iTrack))->GetPz();
174 Double_t pRapidity = 0.5 * Log((P + P_z) / (P - P_z));
175 Double_t rapidity = ((CbmMCTrack*)fMCTracks->At(iTrack))->GetRapidity();
176
177 if (3122 == track->GetPdgCode()) {
178 fNLambdas++;
179
180 fHM->H1("numberOfLambdas_LambdaQa")->Fill(1);
181
182 fHM->H1("simNLambda_P_sim")->Fill(P);
183 fHM->H1("simNLambda_eta_sim")->Fill(pRapidity);
184 fHM->H1("simNLambda_theta_sim")->Fill(TMath::ACos(P_z / P) * TMath::RadToDeg());
185 fHM->H1("simNLambda_theta_r_sim")->Fill(rapidity);
186 fHM->H1("simNLambda_P_x_sim")->Fill(P_x);
187 fHM->H1("simNLambda_P_y_sim")->Fill(P_y);
188 fHM->H1("simNLambda_P_z_sim")->Fill(P_z);
189 fHM->H2("simNLambda_eta_P_sim")->Fill(P, pRapidity);
190 }
191
192 if (2212 == track->GetPdgCode()) {
193 int motherId = track->GetMotherId();
194
195 if (motherId < 0)
196 continue;
197
198 if (3122 == ((CbmMCTrack*)fMCTracks->At(motherId))->GetPdgCode()) {
199 indicesOfLambdaProtons.push_back(iTrack);
200
201 fHM->H1("NProtons_P_sim")->Fill(P);
202 fHM->H1("NProtons_eta_sim")->Fill(pRapidity);
203 fHM->H1("NProtons_theta_sim")->Fill(TMath::ACos(P_z / P) * TMath::RadToDeg());
204 fHM->H1("NProtons_theta_r_sim")->Fill(rapidity);
205 fHM->H2("simNRecProtons_eta_P_sim")->Fill(pRapidity, P);
206
207 Double_t nSiliconHitsOnTrackP = 0;
208
209 for (Int_t hit = 0; hit < fSiliconPoints->GetEntriesFast(); hit++) {
210 if (((BmnSiliconPoint*)fSiliconPoints->At(hit))->GetTrackID() == iTrack)
211 nSiliconHitsOnTrackP++;
212 }
213
214 if (track->GetNPoints(kGEM) + nSiliconHitsOnTrackP >= 4) {
215 fHM->H1("NRecProtons_P_sim")->Fill(P);
216 fHM->H1("NRecProtons_eta_sim")->Fill(pRapidity);
217 fHM->H1("NRecProtons_theta_sim")->Fill(TMath::ACos(P_z / P) * TMath::RadToDeg());
218 fHM->H1("NRecProtons_theta_r_sim")->Fill(rapidity);
219 fHM->H2("simNReconstructableRecProtons_eta_P_sim")->Fill(pRapidity, P);
220 }
221 }
222 }
223
224 if (-211 == track->GetPdgCode()) {
225 int motherIdMeson = track->GetMotherId();
226
227 if (motherIdMeson < 0) {
228 continue;
229 }
230
231 if (3122 == ((CbmMCTrack*)fMCTracks->At(motherIdMeson))->GetPdgCode()) {
232 indicesOfLambdaMesons.push_back(iTrack);
233
234 fHM->H1("NMesons_P_sim")->Fill(P);
235 fHM->H1("NMesons_eta_sim")->Fill(pRapidity);
236 fHM->H1("NMesons_theta_sim")->Fill(TMath::ACos(P_z / P) * TMath::RadToDeg());
237 fHM->H1("NMesons_theta_r_sim")->Fill(rapidity);
238 fHM->H2("simNRecMesons_eta_P_sim")->Fill(pRapidity, P);
239
240 Double_t nSiliconHitsOnTrackM = 0;
241
242 for (Int_t hit = 0; hit < fSiliconPoints->GetEntriesFast(); hit++) {
243 if (((BmnSiliconPoint*)fSiliconPoints->At(hit))->GetTrackID() == iTrack)
244 nSiliconHitsOnTrackM++;
245 }
246
247 if (track->GetNPoints(kGEM) + nSiliconHitsOnTrackM >= 4) {
248 fHM->H1("NRecMesons_P_sim")->Fill(P);
249 fHM->H1("NRecMesons_eta_sim")->Fill(pRapidity);
250 fHM->H1("NRecMesons_theta_sim")->Fill(TMath::ACos(P_z / P) * TMath::RadToDeg());
251 fHM->H1("NRecMesons_theta_r_sim")->Fill(rapidity);
252 fHM->H2("simNReconstructableRecMesons_eta_P_sim")->Fill(pRapidity, P);
253 }
254 }
255 }
256 }
257
258 for (size_t cnt1 = 0; cnt1 < indicesOfLambdaProtons.size(); cnt1++) {
259 for (size_t cnt2 = 0; cnt2 < indicesOfLambdaMesons.size(); cnt2++) {
260 if (((CbmMCTrack*)fMCTracks->At(indicesOfLambdaProtons[cnt1]))->GetMotherId()
261 == ((CbmMCTrack*)fMCTracks->At(indicesOfLambdaMesons[cnt2]))->GetMotherId())
262 {
263 array<int, 3> tmp = {((CbmMCTrack*)fMCTracks->At(indicesOfLambdaProtons[cnt1]))->GetMotherId(),
264 indicesOfLambdaProtons[cnt1], indicesOfLambdaMesons[cnt2]};
265 indicesOfLamda.push_back(tmp);
266 }
267 }
268 }
269
270 for (size_t cnt = 0; cnt < indicesOfLamda.size(); cnt++) {
271 Int_t nSiliconHitsOnTrackP = 0;
272 Int_t nSiliconHitsOnTrackM = 0;
273 Int_t nSSDHitsOnTrackP = 0;
274 Int_t nSSDHitsOnTrackM = 0;
275 Int_t nGEMHitsOnTrackP = 0;
276 Int_t nGEMHitsOnTrackM = 0;
277
278 for (Int_t hit = 0; hit < fSiliconPoints->GetEntriesFast(); hit++) {
279 Int_t trId = ((BmnSiliconPoint*)fSiliconPoints->At(hit))->GetTrackID();
280 if (trId == indicesOfLamda[cnt][1])
281 nSiliconHitsOnTrackP++;
282 else if (trId == indicesOfLamda[cnt][2])
283 nSiliconHitsOnTrackM++;
284 }
285
286 nGEMHitsOnTrackP = ((CbmMCTrack*)fMCTracks->At(indicesOfLamda[cnt][1]))->GetNPoints(kGEM);
287 nGEMHitsOnTrackM = ((CbmMCTrack*)fMCTracks->At(indicesOfLamda[cnt][2]))->GetNPoints(kGEM);
288
289 if (nGEMHitsOnTrackP + nSiliconHitsOnTrackP + nSSDHitsOnTrackP >= 4
290 && nGEMHitsOnTrackM + nSiliconHitsOnTrackM + nSSDHitsOnTrackM >= 4)
291 {
293
294 Double_t P = ((CbmMCTrack*)fMCTracks->At(indicesOfLamda[cnt][0]))->GetP();
295 Double_t P_x = ((CbmMCTrack*)fMCTracks->At(indicesOfLamda[cnt][0]))->GetPx();
296 Double_t P_y = ((CbmMCTrack*)fMCTracks->At(indicesOfLamda[cnt][0]))->GetPy();
297 Double_t P_z = ((CbmMCTrack*)fMCTracks->At(indicesOfLamda[cnt][0]))->GetPz();
298 Double_t pRapidity = 0.5 * Log((P + P_z) / (P - P_z));
299 Double_t rapidity = ((CbmMCTrack*)fMCTracks->At(indicesOfLamda[cnt][0]))->GetRapidity();
300
301 fHM->H1("numberOfReconstructableLambdas_LambdaQa")->Fill(1);
302
303 fHM->H1("simNReconstructableLambda_P_sim")->Fill(P);
304 fHM->H1("simNReconstructableLambda_eta_sim")->Fill(pRapidity);
305 fHM->H1("simNReconstructableLambda_theta_r_sim")->Fill(rapidity);
306 fHM->H1("simNReconstructableLambda_theta_sim")->Fill(TMath::ACos(P_z / P) * TMath::RadToDeg());
307 fHM->H1("simNReconstructableLambda_P_x_sim")->Fill(P_x);
308 fHM->H1("simNReconstructableLambda_P_y_sim")->Fill(P_y);
309 fHM->H1("simNReconstructableLambda_P_z_sim")->Fill(P_z);
310 fHM->H2("simNReconstructableLambda_eta_P_sim")->Fill(P, pRapidity);
311 }
312 }
313
315 for (Int_t iPair = 0; iPair < fParticlePair_MC->GetEntriesFast(); iPair++) {
316 BmnParticlePair* pair = (BmnParticlePair*)fParticlePair_MC->UncheckedAt(iPair);
317 Double_t momPart1 = pair->GetMomPart1();
318 Double_t momPart2 = pair->GetMomPart2();
319 Double_t etaPart1 = pair->GetEtaPart1();
320 Double_t etaPart2 = pair->GetEtaPart2();
321 Double_t dca1 = pair->GetDCA1();
322 Double_t dca2 = pair->GetDCA2();
323 Double_t dca12 = pair->GetDCA12();
324 Double_t path = pair->GetPath();
325
326 // Apply cuts ...
327 if (momPart1 < fMom[0][0] || momPart1 > fMom[0][1] || momPart2 < fMom[1][0] || momPart2 > fMom[1][1])
328 continue;
329
330 if (etaPart1 < fEta[0][0] || etaPart1 > fEta[0][1] || etaPart2 < fEta[1][0] || etaPart2 > fEta[1][1])
331 continue;
332
333 // Geom. cuts applied ...
334 if (dca1 < fDCA[0][0] || dca1 > fDCA[0][1] || dca2 < fDCA[1][0] || dca2 > fDCA[1][1])
335 continue;
336
337 if (dca12 < fDCA12[0] || dca12 > fDCA12[1])
338 continue;
339
340 if (path < fPath[0] || path > fPath[1])
341 continue;
342
344 fHM->H1("numberOfMCReconstructedAllParticlePairsQA")->Fill(1);
345 fHM->H1("NPairsRecoFromMCInvMass")->Fill(pair->GetInvMass());
346
347 fHM->H2("NPairsRecoFromMCInvMassMomProton")->Fill(momPart1, pair->GetInvMass());
348 fHM->H2("NPairsRecoFromMCInvMassMomMeson")->Fill(momPart2, pair->GetInvMass());
349 fHM->H2("NPairsRecoFromMCInvMassEtaProton")->Fill(etaPart1, pair->GetInvMass());
350 fHM->H2("NPairsRecoFromMCInvMassEtaMeson")->Fill(etaPart2, pair->GetInvMass());
351 fHM->H2("NPairsRecoFromMCInvMassDCA1")->Fill(dca1, pair->GetInvMass());
352 fHM->H2("NPairsRecoFromMCInvMassDCA2")->Fill(dca2, pair->GetInvMass());
353 fHM->H2("NPairsRecoFromMCInvMassDCA12X")->Fill(dca12, pair->GetInvMass());
354 fHM->H2("NPairsRecoFromMCInvMassPath")->Fill(path, pair->GetInvMass());
355
356 CbmMCTrack* posMCTrack = (CbmMCTrack*)fMCTracks->At(pair->GetMCTrackIdPart1());
357 CbmMCTrack* negMCTrack = (CbmMCTrack*)fMCTracks->At(pair->GetMCTrackIdPart2());
358 if (!negMCTrack || !posMCTrack)
359 continue;
360 if ((posMCTrack->GetMotherId() != negMCTrack->GetMotherId()) || (posMCTrack->GetMotherId() < 0)) {
361 continue;
362 }
363 CbmMCTrack* lambda = (CbmMCTrack*)fMCTracks->At(posMCTrack->GetMotherId());
364 if (lambda->GetPdgCode() != 3122) {
365 continue;
366 }
368 fHM->H1("numberOfMCReconstructedLambdasQA")->Fill(1);
369 }
370
372 for (Int_t iPair = 0; iPair < fParticlePair_MC->GetEntriesFast(); iPair++) {
374 fHM->H1("numberOfMCReconstructedParticlePairsQA")->Fill(1);
375
377
378 fHM->H1("NPairsRecoFromMCWOCutsInvMass")->Fill(pair->GetInvMass());
379
380 Double_t momPart1 = pair->GetMomPart1();
381 Double_t momPart2 = pair->GetMomPart2();
382 Double_t etaPart1 = pair->GetEtaPart1();
383 Double_t etaPart2 = pair->GetEtaPart2();
384 Double_t dca1 = pair->GetDCA1();
385 Double_t dca2 = pair->GetDCA2();
386 Double_t dca12x = pair->GetDCA12();
387 Double_t dca12y = pair->GetDCA12();
388 Double_t path = pair->GetPath();
389
390 fHM->H2("NPairsRecoFromMCWOCutsInvMassMomProton")->Fill(momPart1, pair->GetInvMass());
391 fHM->H2("NPairsRecoFromMCWOCutsInvMassMomMeson")->Fill(momPart2, pair->GetInvMass());
392 fHM->H2("NPairsRecoFromMCWOCutsInvMassEtaProton")->Fill(etaPart1, pair->GetInvMass());
393 fHM->H2("NPairsRecoFromMCWOCutsInvMassEtaMeson")->Fill(etaPart2, pair->GetInvMass());
394
395 fHM->H2("NPairsRecoFromMCWOCutsInvMassDCA1")->Fill(dca1, pair->GetInvMass());
396 fHM->H2("NPairsRecoFromMCWOCutsInvMassDCA2")->Fill(dca2, pair->GetInvMass());
397 fHM->H2("NPairsRecoFromMCWOCutsInvMassDCA12X")->Fill(dca12x, pair->GetInvMass());
398 fHM->H2("NPairsRecoFromMCWOCutsInvMassDCA12Y")->Fill(dca12y, pair->GetInvMass());
399 fHM->H2("NPairsRecoFromMCWOCutsInvMassDCA12XsubY")->Fill(abs(dca12x - dca12y), pair->GetInvMass());
400 fHM->H2("NPairsRecoFromMCWOCutsInvMassPath")->Fill(path, pair->GetInvMass());
401
402 CbmMCTrack* posMCTrack = (CbmMCTrack*)fMCTracks->At(pair->GetMCTrackIdPart1());
403 CbmMCTrack* negMCTrack = (CbmMCTrack*)fMCTracks->At(pair->GetMCTrackIdPart2());
404 if (!negMCTrack || !posMCTrack)
405 continue;
406 if ((posMCTrack->GetMotherId() != negMCTrack->GetMotherId()) || (posMCTrack->GetMotherId() < 0)) {
407 continue;
408 }
409 CbmMCTrack* lambda = (CbmMCTrack*)fMCTracks->At(posMCTrack->GetMotherId());
410 if (lambda->GetPdgCode() != 3122) {
411 continue;
412 }
413 }
414
415 /// RECO
417 for (Int_t iPair = 0; iPair < fParticlePair_RECO->GetEntriesFast(); iPair++) {
418 BmnParticlePair* pair = (BmnParticlePair*)fParticlePair_RECO->UncheckedAt(iPair);
419
420 CbmMCTrack* posPartTr = (CbmMCTrack*)fMCTracks->At(pair->GetMCTrackIdPart1());
421 if (!posPartTr) {
422 cout << "proton track obtaining error" << endl;
423 return;
424 }
425
426 CbmMCTrack* negPartTr = (CbmMCTrack*)fMCTracks->At(pair->GetMCTrackIdPart2());
427 if (!negPartTr) {
428 cout << "meson track obtaining error" << endl;
429 return;
430 }
431
432 if (-1 == posPartTr->GetMotherId() || -1 == negPartTr->GetMotherId()
433 || negPartTr->GetMotherId() != posPartTr->GetMotherId())
434 continue;
435
436 CbmMCTrack* primaryPartTr = (CbmMCTrack*)fMCTracks->At(posPartTr->GetMotherId());
437 if (!primaryPartTr) {
438 cout << "lambda track obtaining error" << endl;
439 return;
440 }
441
442 if (primaryPartTr->GetPdgCode() != 3122)
443 continue;
444
446 fHM->H1("numberOfReconstructedParticlePairWithMatchedLambdaQA")->Fill(1);
447
448 // Double_t momLambdaXMC = primaryPartTr->GetPx();
449 // Double_t momLambdaYMC = primaryPartTr->GetPy();
450 Double_t momLambdaZMC = primaryPartTr->GetPz();
451 Double_t momLambdaMC = primaryPartTr->GetP();
452 Double_t thetaMC = TMath::ACos(momLambdaZMC / momLambdaMC) * TMath::RadToDeg();
453 Double_t pRapidityLMC = 0.5 * Log((momLambdaMC + momLambdaZMC) / (momLambdaMC - momLambdaZMC));
454 Double_t thetaR = primaryPartTr->GetRapidity();
455
456 fHM->H1("recNLambda_P_rec")->Fill(momLambdaMC);
457 fHM->H1("recNLambda_theta_rec")->Fill(thetaMC);
458 fHM->H1("recNLambda_eta_rec")->Fill(pRapidityLMC);
459 fHM->H1("recNLambda_theta_r_rec")->Fill(thetaR);
460 fHM->H2("recNLambda_eta_P_sim")->Fill(pRapidityLMC, momLambdaMC);
461
462 Double_t momProtMC = posPartTr->GetP();
463 Double_t momProtZMC = posPartTr->GetPz();
464 Double_t pRapidityPMC = 0.5 * Log((momProtMC + momProtZMC) / (momProtMC - momProtZMC));
465 Double_t thetaRProt = posPartTr->GetRapidity();
466
467 fHM->H1("recNRecProtons_P_rec")->Fill(momProtMC);
468 fHM->H1("recNRecProtons_theta_rec")->Fill(TMath::ACos(momProtZMC / momProtMC) * TMath::RadToDeg());
469 fHM->H1("recNRecProtons_eta_rec")->Fill(pRapidityPMC);
470 fHM->H1("recNRecProtons_theta_r_rec")->Fill(thetaRProt);
471 fHM->H2("recNRecProtons_eta_P_sim")->Fill(pair->GetEtaPart1(), momProtMC);
472
473 Double_t momMesMC = negPartTr->GetP();
474 Double_t momMesZMC = negPartTr->GetPz();
475 Double_t pRapidityMMC = 0.5 * Log((momMesMC + momMesZMC) / (momMesMC - momMesZMC));
476 Double_t thetaRMes = negPartTr->GetRapidity();
477
478 fHM->H1("recNRecMesons_P_rec")->Fill(momMesMC);
479 fHM->H1("recNRecMesons_theta_rec")->Fill(TMath::ACos(momMesZMC / momMesMC) * TMath::RadToDeg());
480 fHM->H1("recNRecMesons_eta_rec")->Fill(pRapidityMMC);
481 fHM->H1("recNRecMesons_theta_r_rec")->Fill(thetaRMes);
482 fHM->H2("recNRecMesons_eta_P_sim")->Fill(pair->GetEtaPart1(), momMesMC);
483 }
484
486 for (Int_t iPair = 0; iPair < fParticlePair_RECO->GetEntriesFast(); iPair++) {
487 BmnParticlePair* pair = (BmnParticlePair*)fParticlePair_RECO->UncheckedAt(iPair);
488 Double_t momPart1 = pair->GetMomPart1();
489 Double_t momPart2 = pair->GetMomPart2();
490 Double_t etaPart1 = pair->GetEtaPart1();
491 Double_t etaPart2 = pair->GetEtaPart2();
492 Double_t dca1 = pair->GetDCA1();
493 Double_t dca2 = pair->GetDCA2();
494 Double_t dca12x = pair->GetDCA12();
495 Double_t dca12y = pair->GetDCA12();
496 Double_t path = pair->GetPath();
497
498 // Apply cuts ...
499 if (momPart1 < fMom[0][0] || momPart1 > fMom[0][1] || momPart2 < fMom[1][0] || momPart2 > fMom[1][1])
500 continue;
501
502 if (etaPart1 < fEta[0][0] || etaPart1 > fEta[0][1] || etaPart2 < fEta[1][0] || etaPart2 > fEta[1][1])
503 continue;
504
505 // Geom. cuts applied ...
506 if (dca1 < fDCA[0][0] || dca1 > fDCA[0][1] || dca2 < fDCA[1][0] || dca2 > fDCA[1][1])
507 continue;
508
509 if (dca12x < fDCA12[0] || dca12x > fDCA12[1])
510 continue;
511
512 if (path < fPath[0] || path > fPath[1])
513 continue;
514
516 fHM->H1("numberOfReconstructedParticlePairsQA")->Fill(1);
517 fHM->H1("NPairsRecoInvMass")->Fill(pair->GetInvMass());
518
519 fHM->H2("NPairsRecoInvMassMomProton")->Fill(momPart1, pair->GetInvMass());
520 fHM->H2("NPairsRecoInvMassMomMeson")->Fill(momPart2, pair->GetInvMass());
521 fHM->H2("NPairsRecoInvMassEtaProton")->Fill(etaPart1, pair->GetInvMass());
522 fHM->H2("NPairsRecoInvMassEtaMeson")->Fill(etaPart2, pair->GetInvMass());
523 fHM->H2("NPairsRecoInvMassDCA1")->Fill(dca1, pair->GetInvMass());
524 fHM->H2("NPairsRecoInvMassDCA2")->Fill(dca2, pair->GetInvMass());
525 fHM->H2("NPairsRecoInvMassDCA12X")->Fill(dca12x, pair->GetInvMass());
526 fHM->H2("NPairsRecoInvMassDCA12Y")->Fill(dca12y, pair->GetInvMass());
527 fHM->H2("NPairsRecoInvMassDCA12XsubY")->Fill(abs(dca12x - dca12y), pair->GetInvMass());
528 fHM->H2("NPairsRecoInvMassPath")->Fill(path, pair->GetInvMass());
529 }
530
532 for (Int_t iPair = 0; iPair < fParticlePair_RECO->GetEntriesFast(); iPair++) {
534
535 fHM->H1("NPairsRecoInvMassWOCuts")->Fill(pair->GetInvMass());
536
537 Double_t momPart1 = pair->GetMomPart1();
538 Double_t momPart2 = pair->GetMomPart2();
539 Double_t etaPart1 = pair->GetEtaPart1();
540 Double_t etaPart2 = pair->GetEtaPart2();
541 Double_t dca1 = pair->GetDCA1();
542 Double_t dca2 = pair->GetDCA2();
543 Double_t dca12x = pair->GetDCA12();
544 Double_t dca12y = pair->GetDCA12();
545 Double_t path = pair->GetPath();
546
547 fHM->H2("NPairsRecoInvMassMomProtonWOCuts")->Fill(momPart1, pair->GetInvMass());
548 fHM->H2("NPairsRecoInvMassMomMesonWOCuts")->Fill(momPart2, pair->GetInvMass());
549 fHM->H2("NPairsRecoInvMassEtaProtonWOCuts")->Fill(etaPart1, pair->GetInvMass());
550 fHM->H2("NPairsRecoInvMassEtaMesonWOCuts")->Fill(etaPart2, pair->GetInvMass());
551
552 fHM->H2("NPairsRecoInvMassDCA1WOCuts")->Fill(dca1, pair->GetInvMass());
553 fHM->H2("NPairsRecoInvMassDCA2WOCuts")->Fill(dca2, pair->GetInvMass());
554 fHM->H2("NPairsRecoInvMassDCA12XWOCuts")->Fill(dca12x, pair->GetInvMass());
555 fHM->H2("NPairsRecoInvMassDCA12YWOCuts")->Fill(dca12y, pair->GetInvMass());
556 fHM->H2("NPairsRecoInvMassDCA12XsubYWOCuts")->Fill(abs(dca12x - dca12y), pair->GetInvMass());
557 fHM->H2("NPairsRecoInvMassPathWOCuts")->Fill(path, pair->GetInvMass());
558 }
559}
560
562{
563 fHM->WriteToFile();
564
565 vector<TClonesArray*> isPairBranches;
566 isPairBranches.push_back(fParticlePair_MC);
567 isPairBranches.push_back(fParticlePair_RECO);
568
570 pairInfo->setMomPart1Min(fMom[0][0]);
571 pairInfo->setMomPart1Max(fMom[0][1]);
572 pairInfo->setMomPart2Min(fMom[1][0]);
573 pairInfo->setMomPart2Max(fMom[1][1]);
574
575 pairInfo->setEtaPart1Min(fEta[0][0]);
576 pairInfo->setEtaPart1Max(fEta[0][1]);
577 pairInfo->setEtaPart2Min(fEta[1][0]);
578 pairInfo->setEtaPart2Max(fEta[1][1]);
579
580 pairInfo->setDCAPart1Min(fDCA[0][0]);
581 pairInfo->setDCAPart1Max(fDCA[0][1]);
582 pairInfo->setDCAPart2Min(fDCA[1][0]);
583 pairInfo->setDCAPart2Max(fDCA[1][1]);
584
585 pairInfo->setDCA12Min(fDCA12[0]);
586 pairInfo->setDCA12Max(fDCA12[1]);
587 pairInfo->setPathMin(fPath[0]);
588 pairInfo->setPathMax(fPath[1]);
589 BmnSimulationReport* report = new BmnLambdaQaReport(fUseMCFile, fUseRecoFile, pairInfo, isPairBranches);
590 report->Create(fHM, fOutputDir);
591 delete report;
592 delete pairInfo;
593}
594
596{
597 FairRootManager* ioman = FairRootManager::Instance();
598
599 if (!ioman)
600 Fatal("Init", "BmnRootManager is not instantiated");
601
602 fMCTracks = (TClonesArray*)ioman->GetObject("MCTrack");
603 fGlobalTracks = (TClonesArray*)ioman->GetObject("BmnGlobalTrack");
604 fSiliconPoints = (TClonesArray*)ioman->GetObject("SiliconPoint");
605
606 fParticlePair_MC = (TClonesArray*)ioman->GetObject("ParticlePair_MC");
607 fParticlePair_RECO = (TClonesArray*)ioman->GetObject("ParticlePair_RECO");
608
609 if (fMCTracks)
611
612 if (fGlobalTracks)
614}
615
616void BmnLambdaQa::CreateH1(const string& name,
617 const string& xTitle,
618 const string& yTitle,
619 Int_t nofBins,
620 Double_t minBin,
621 Double_t maxBin)
622{
623 TH1F* h = new TH1F(name.c_str(), string(";" + xTitle + ";" + yTitle).c_str(), nofBins, minBin, maxBin);
624 fHM->Add(name, h);
625}
626
627void BmnLambdaQa::CreateH2(const string& name,
628 const string& xTitle,
629 const string& yTitle,
630 const string& zTitle,
631 Int_t nofBinsX,
632 Double_t minBinX,
633 Double_t maxBinX,
634 Int_t nofBinsY,
635 Double_t minBinY,
636 Double_t maxBinY)
637{
638 TH2F* h = new TH2F(name.c_str(), (";" + xTitle + ";" + yTitle + ";" + zTitle).c_str(), nofBinsX, minBinX, maxBinX,
639 nofBinsY, minBinY, maxBinY);
640 fHM->Add(name, h);
641}
642
644{
645 CreateH1("simNReconstructableLambda_P_sim", "P_{sim}, GeV/c", "number of reconstructable #Lambda^{0}", fNOfBins,
647 CreateH1("simNReconstructableLambda_eta_sim", "#eta_{sim}", "number of reconstructable #Lambda^{0}", fNOfBins,
649 CreateH1("simNReconstructableLambda_theta_sim", "#theta_{sim}, degrees", "number of reconstructable #Lambda^{0}",
651 CreateH1("simNReconstructableLambda_theta_r_sim", "Y^{r}_{sim}", "number of reconstructable #Lambda^{0}", fNOfBins,
653 CreateH1("simNReconstructableLambda_P_x_sim", "P^{x}_{sim}, GeV/c", "number of reconstructable #Lambda^{0}",
654 fNOfBins, -2, 2);
655 CreateH1("simNReconstructableLambda_P_y_sim", "P^{y}_{sim}, GeV/c", "number of reconstructable #Lambda^{0}",
656 fNOfBins, -2, 2);
657 CreateH1("simNReconstructableLambda_P_z_sim", "P^{z}_{sim}, GeV/c", "number of reconstructable #Lambda^{0}",
658 fNOfBins, -1, 4);
659}
660
662{
663 CreateH1("simNLambda_P_sim", "P_{sim}, GeV/c", "number of #Lambda^{0}", fNOfBins, fLambdaPRangeMin,
665 CreateH1("simNLambda_eta_sim", "#eta_{sim}", "number of #Lambda^{0}", fNOfBins, fLambdaEtaRangeMin,
667 CreateH1("simNLambda_theta_sim", "#theta_{sim}, degrees", "number of #Lambda^{0}", fNOfBins, fLambdaThetaRangeMin,
669 CreateH1("simNLambda_theta_r_sim", "Y^{r}_{sim}", "number of #Lambda^{0}", fNOfBins, fLambdaThetaRRangeMin,
671 CreateH1("simNLambda_P_x_sim", "P^{x}_{sim}, GeV/c", "number of #Lambda^{0}", fNOfBins, -2, 2);
672 CreateH1("simNLambda_P_y_sim", "P^{y}_{sim}, GeV/c", "number of #Lambda^{0}", fNOfBins, -2, 2);
673 CreateH1("simNLambda_P_z_sim", "P^{z}_{sim}, GeV/c", "number of #Lambda^{0}", fNOfBins, -1, 4);
674}
675
677{
678 CreateH1("simLambdaRecEff_P_sim", "P_{sim}, GeV/c", "geometrical efficiency, %", fNOfBins, fLambdaPRangeMin,
680 CreateH1("simLambdaRecEff_eta_sim", "#eta_{sim}", "geometrical efficiency, % efficiency, %", fNOfBins,
682 CreateH1("simLambdaRecEff_theta_sim", "#theta_{sim}, degrees", "geometrical efficiency, %", fNOfBins,
684 CreateH1("simLambdaRecEff_theta_r_sim", "Y^{r}_{sim}", "geometrical efficiency, %", fNOfBins, fLambdaThetaRRangeMin,
686 CreateH1("simLambdaRecEff_P_x_sim", "P^{x}_{sim}, GeV/c", "geometrical efficiency, %", fNOfBins, -2, 2);
687 CreateH1("simLambdaRecEff_P_y_sim", "P^{y}_{sim}, GeV/c", "geometrical efficiency, %", fNOfBins, -2, 2);
688 CreateH1("simLambdaRecEff_P_z_sim", "P^{z}_{sim}, GeV/c", "geometrical efficiency, %", fNOfBins, -1, 4);
689}
690
692{
693 CreateH2("simNReconstructableLambda_eta_P_sim", "P_{sim}, GeV/c", "#eta_{sim}", "number of #Lambda^{0}", fNOfBins,
695 CreateH2("simNLambda_eta_P_sim", "P_{sim}, GeV/c", "#eta_{sim}", "number of #Lambda^{0}", fNOfBins,
697 CreateH2("simEffRecLambda_eta_P_sim", "P_{sim}, GeV/c", "#eta_{sim}", "geometrical efficiency, %", fNOfBins,
699}
700
702{
703 CreateH1("NProtons_P_sim", "P_{sim}, GeV/c", "number of lambda decay p", fNOfBins, fProtonsPRangeMin,
705 CreateH1("NProtons_eta_sim", "#eta_{sim}", "number of lambda decay p", fNOfBins, fProtonsEtaRangeMin,
707 CreateH1("NProtons_theta_sim", "#theta_{sim}, degrees", "number of lambda decay p", fNOfBins, fProtonsThetaRangeMin,
709 CreateH1("NProtons_theta_r_sim", "Y^{r}_{sim}", "number of lambda decay p", fNOfBins, fProtonsThetaRRangeMin,
711 CreateH1("NRecProtons_P_sim", "P_{sim}, GeV/c", "number of reconstructable lambda decay p", fNOfBins,
713 CreateH1("NRecProtons_eta_sim", "#eta_{sim}", "number of reconstructable lambda decay p", fNOfBins,
715 CreateH1("NRecProtons_theta_sim", "#theta_{sim}, degrees", "number of reconstructable lambda decay p", fNOfBins,
717 CreateH1("NRecProtons_theta_r_sim", "Y^{r}_{sim}, degrees", "number of reconstructable lambda decay p", fNOfBins,
719}
720
722{
723 CreateH1("simRecProtonsRecEff_P_sim", "P_{sim}, GeV/c", "geometrical efficiency, %", fNOfBins, fProtonsPRangeMin,
725 CreateH1("simRecProtonsRecEff_eta_sim", "#eta_{sim}", "geometrical efficiency, %", fNOfBins, fProtonsEtaRangeMin,
727 CreateH1("simRecProtonsRecEff_theta_sim", "#theta_{sim}, degrees", "geometrical efficiency, %", fNOfBins,
729 CreateH1("simRecProtonsRecEff_theta_r_sim", "Y^{r}_{sim}, degrees", "geometrical efficiency, %", fNOfBins,
731}
732
734{
735 CreateH2("simNRecProtons_eta_P_sim", "P_{sim}, GeV/c", "#eta_{sim}", "number of lambda decay p", fNOfBins,
737 CreateH2("simNReconstructableRecProtons_eta_P_sim", "P_{sim}, GeV/c", "#eta_{sim}", "number of lambda decay p",
739 CreateH2("simEffRecRecProtons_eta_P_sim", "P_{sim}, GeV/c", "#eta_{sim}", "reconstruction efficiency, %", fNOfBins,
741}
742
744{
745 CreateH1("NMesons_P_sim", "P_{sim}, GeV/c", "number of lambda decay #pi^{-}", fNOfBins, fMesonsPRangeMin,
747 CreateH1("NMesons_eta_sim", "#eta_{sim}", "number of lambda decay #pi^{-}", fNOfBins, fMesonsEtaRangeMin,
749 CreateH1("NMesons_theta_sim", "#theta_{sim}, degrees", "number of lambda decay #pi^{-}", fNOfBins,
751 CreateH1("NMesons_theta_r_sim", "Y^{r}_{sim}, degrees", "number of lambda decay #pi^{-}", fNOfBins,
753 CreateH1("NRecMesons_P_sim", "P_{sim}, GeV/c", "number of reconstructable lambda decay #pi^{-}", fNOfBins,
755 CreateH1("NRecMesons_eta_sim", "#eta_{sim}", "number of reconstructable lambda decay #pi^{-}", fNOfBins,
757 CreateH1("NRecMesons_theta_sim", "#theta_{sim}, degrees", "number of reconstructable lambda decay #pi^{-}",
759 CreateH1("NRecMesons_theta_r_sim", "Y^{r}_{sim}, degrees", "number of reconstructable lambda decay #pi^{-}",
761}
762
764{
765 CreateH1("simRecMesonsRecEff_P_sim", "P_{sim}, GeV/c", "geometrical efficiency, %", fNOfBins, fMesonsPRangeMin,
767 CreateH1("simRecMesonsRecEff_eta_sim", "#eta_{sim}", "geometrical efficiency, %", fNOfBins, fMesonsEtaRangeMin,
769 CreateH1("simRecMesonsRecEff_theta_sim", "#theta_{sim}, degrees", "geometrical efficiency, %", fNOfBins,
771 CreateH1("simRecMesonsRecEff_theta_r_sim", "Y^{r}_{sim}, degrees", "geometrical efficiency, %", fNOfBins,
773}
774
776{
777 CreateH2("simNRecMesons_eta_P_sim", "P_{sim}, GeV/c", "#eta_{sim}", "number of lambda decay #pi^{-}", fNOfBins,
779 CreateH2("simNReconstructableRecMesons_eta_P_sim", "P_{sim}, GeV/c", "#eta_{sim}", "number of lambda decay #pi^{-}",
781 CreateH2("simEffRecRecMesons_eta_P_sim", "P_{sim}, GeV/c", "#eta_{sim}", "geometrical efficiency, %", fNOfBins,
783}
784
786{
787 CreateH1("recNLambda_P_rec", "P_{sim}, GeV/c", "number of #Lambda^{0} reconstructed", fNOfBins, fLambdaPRangeMin,
789 CreateH1("recNLambda_theta_rec", "#theta_{sim}, degrees", "number of #Lambda^{0} reconstructed", fNOfBins,
791 CreateH1("recNLambda_eta_rec", "#eta_{sim}", "number of #Lambda^{0} reconstructed", fNOfBins, fLambdaEtaRangeMin,
793 CreateH1("recNLambda_theta_r_rec", "Y^{r}_{sim}", "number of #Lambda^{0} reconstructed", fNOfBins,
795}
796
798{
799 CreateH1("recEffLambda_P_rec", "P_{sim}, GeV/c", "reconstruction efficiency, %", fNOfBins, fLambdaPRangeMin,
801 CreateH1("recEffLambda_theta_rec", "#theta_{sim}, degrees", "reconstruction efficiency, %", fNOfBins,
803 CreateH1("recEffLambda_eta_rec", "#eta_{sim}", "reconstruction efficiency, %", fNOfBins, fLambdaEtaRangeMin,
805 CreateH1("recEffLambda_theta_r_rec", "Y^{r}_{sim}", "reconstruction efficiency, %", fNOfBins, fLambdaThetaRRangeMin,
807}
808
810{
811 CreateH2("recNLambda_eta_P_sim", "P_{sim}, GeV/c", "#eta_{sim}", "number of reconstructed #Lambda^{0}", fNOfBins,
813 CreateH2("recEffRecLambda_eta_P_sim", "P_{sim}, GeV/c", "#eta_{sim}", "efficiency, %", fNOfBins, fLambdaEtaRangeMin,
815}
816
818{
819 CreateH1("recNRecProtons_P_rec", "P_{sim}, GeV/c", "number of lambda decay p reconstructed", fNOfBins,
821 CreateH1("recNRecProtons_theta_rec", "#theta_{sim}, degrees", "number of lambda decay p reconstructed", fNOfBins,
823 CreateH1("recNRecProtons_eta_rec", "#eta_{sim}", "number of lambda decay p reconstructed", fNOfBins,
825 CreateH1("recNRecProtons_theta_r_rec", "Y^{r}_{sim}", "number of lambda decay p reconstructed", fNOfBins,
827}
828
830{
831 CreateH1("recEffRecProtons_P_rec", "P_{sim}, GeV/c", "reconstruction efficiency, %", fNOfBins, fProtonsPRangeMin,
833 CreateH1("recEffRecProtons_theta_rec", "#theta_{sim}, degrees", "reconstruction efficiency, %", fNOfBins,
835 CreateH1("recEffRecProtons_eta_rec", "#eta_{sim}", "reconstruction efficiency, %", fNOfBins, fProtonsEtaRangeMin,
837 CreateH1("recEffRecProtons_theta_r_rec", "Y^{r}_{sim}", "reconstruction efficiency, %", fNOfBins,
839}
840
842{
843 CreateH2("recNRecProtons_eta_P_sim", "P_{sim}, GeV/c", "#eta_{sim}", "number of lambda decay p", fNOfBins,
845 CreateH2("recEffRecProtons_eta_P_sim", "P_{sim}, GeV/c", "#eta_{sim}", "efficiency, %", fNOfBins,
847}
848
850{
851 CreateH1("recNRecMesons_P_rec", "P_{sim}, GeV/c", "number of lambda decay p reconstructed", fNOfBins,
853 CreateH1("recNRecMesons_theta_rec", "#theta_{sim}, degrees", "number of lambda decay p reconstructed", fNOfBins,
855 CreateH1("recNRecMesons_eta_rec", "#eta_{sim}", "number of lambda decay p reconstructed", fNOfBins,
857 CreateH1("recNRecMesons_theta_r_rec", "Y^{r}_{sim}", "number of lambda decay p reconstructed", fNOfBins,
859}
860
862{
863 CreateH1("recEffRecMesons_P_rec", "P_{sim}, GeV/c", "reconstruction efficiency, %", fNOfBins, fMesonsPRangeMin,
865 CreateH1("recEffRecMesons_theta_rec", "#theta_{sim}, degrees", "reconstruction efficiency, %", fNOfBins,
867 CreateH1("recEffRecMesons_eta_rec", "#eta_{sim}", "reconstruction efficiency, %", fNOfBins, fMesonsEtaRangeMin,
869 CreateH1("recEffRecMesons_theta_r_rec", "Y^{r}_{sim}", "reconstruction efficiency, %", fNOfBins,
871}
872
874{
875 CreateH2("recNRecMesons_eta_P_sim", "P_{sim}, GeV/c", "#eta_{sim}", "number of lambda decay p", fNOfBins,
877 CreateH2("recEffRecMesons_eta_P_sim", "P_{sim}, GeV/c", "#eta_{sim}", "efficiency, %", fNOfBins, fMesonsEtaRangeMin,
879}
880
882{
883 CreateH1("NPairsRecoFromMCInvMass", "m_{inv}, GeV/c^2", "number of particle pairs", fNOfBins, 1.07, 1.22);
884}
885
887{
888 CreateH2("NPairsRecoFromMCInvMassMomProton", "P^{p}_{sim}, GeV/c", "m_{inv}, GeV/c^{2}", "number of particle pairs",
890 CreateH2("NPairsRecoFromMCInvMassEtaProton", "#eta^{p}_{sim}", "m_{inv}, GeV/c^{2}", "number of particle pairs",
892 CreateH2("NPairsRecoFromMCInvMassDCA1", "DCA^{p}, cm", "m_{inv}, GeV/c^{2}", "number of particle pairs", fNOfBins,
894 CreateH2("NPairsRecoFromMCInvMassMomMeson", "P^{#pi^{-}}_{sim}, GeV/c", "m_{inv}, GeV/c^{2}",
895 "number of particle pairs", fNOfBins, fMesonsPRangeMin, fMesonsPRangeMax, fNOfBins, fInvMassMin,
897 CreateH2("NPairsRecoFromMCInvMassEtaMeson", "#eta^{#pi^{-}}_{sim}", "m_{inv}, GeV/c^{2}",
898 "number of particle pairs", fNOfBins, fMesonsEtaRangeMin, fMesonsEtaRangeMax, fNOfBins, fInvMassMin,
900 CreateH2("NPairsRecoFromMCInvMassDCA2", "DCA^{#pi^{-}}, cm", "m_{inv}, GeV/c^{2}", "number of particle pairs",
902 CreateH2("NPairsRecoFromMCInvMassDCA12X", "DCA12_{X}, cm", "m_{inv}, GeV/c^{2}", "number of particle pairs",
904 CreateH2("NPairsRecoFromMCInvMassDCA12Y", "DCA12_{Y}, cm", "m_{inv}, GeV/c^{2}", "number of particle pairs",
906 CreateH2("NPairsRecoFromMCInvMassDCA12XsubY", "|DCA12_{X} - DCA12_{Y}|, cm", "m_{inv}, GeV/c^{2}",
907 "number of particle pairs", fNOfBins, fDCA12XRangeMin, fDCA12XRangeMax, fNOfBins, fInvMassMin,
909 CreateH2("NPairsRecoFromMCInvMassPath", "path, cm", "m_{inv}, GeV/c^{2}", "number of particle pairs", fNOfBins,
911}
912
914{
915 CreateH1("NPairsRecoFromMCWOCutsInvMass", "m_{inv}, GeV/c^2", "number of particle pairs", fNOfBins, 1.07, 1.22);
916}
917
919{
920 CreateH2("NPairsRecoFromMCWOCutsInvMassMomProton", "P^{p}_{sim}, GeV/c", "m_{inv}, GeV/c^{2}",
921 "number of particle pairs", fNOfBins, fProtonsPRangeMin, fProtonsPRangeMax, fNOfBins, fInvMassMin,
923 CreateH2("NPairsRecoFromMCWOCutsInvMassEtaProton", "#eta^{p}_{sim}", "m_{inv}, GeV/c^{2}",
926 CreateH2("NPairsRecoFromMCWOCutsInvMassDCA1", "DCA^{p}, cm", "m_{inv}, GeV/c^{2}", "number of particle pairs",
928 CreateH2("NPairsRecoFromMCWOCutsInvMassMomMeson", "P^{#pi^{-}}_{sim}, GeV/c", "m_{inv}, GeV/c^{2}",
929 "number of particle pairs", fNOfBins, fMesonsPRangeMin, fMesonsPRangeMax, fNOfBins, fInvMassMin,
931 CreateH2("NPairsRecoFromMCWOCutsInvMassEtaMeson", "#eta^{#pi^{-}}_{sim}", "m_{inv}, GeV/c^{2}",
932 "number of particle pairs", fNOfBins, fMesonsEtaRangeMin, fMesonsEtaRangeMax, fNOfBins, fInvMassMin,
934 CreateH2("NPairsRecoFromMCWOCutsInvMassDCA2", "DCA^{#pi^{-}}, cm", "m_{inv}, GeV/c^{2}", "number of particle pairs",
936 CreateH2("NPairsRecoFromMCWOCutsInvMassDCA12X", "DCA12_{X}, cm", "m_{inv}, GeV/c^{2}", "number of particle pairs",
938 CreateH2("NPairsRecoFromMCWOCutsInvMassDCA12Y", "DCA12_{Y}, cm", "m_{inv}, GeV/c^{2}", "number of particle pairs",
940 CreateH2("NPairsRecoFromMCWOCutsInvMassDCA12XsubY", "|DCA12_{X} - DCA12_{Y}|, cm", "m_{inv}, GeV/c^{2}",
941 "number of particle pairs", fNOfBins, fDCA12XRangeMin, fDCA12XRangeMax, fNOfBins, fInvMassMin,
943 CreateH2("NPairsRecoFromMCWOCutsInvMassPath", "path, cm", "m_{inv}, GeV/c^{2}", "number of particle pairs",
945}
946
948{
949 CreateH1("recNNotRecLambda_P_rec", "P_{sim}, GeV/c", "number of #Lambda^{0} not reconstructed", fNOfBins,
951 CreateH1("recNNotRecLambda_theta_rec", "#theta_{sim}, degrees", "number of #Lambda^{0} not reconstructed", fNOfBins,
953 CreateH1("recNNotRecLambda_eta_rec", "#eta_{sim}", "number of #Lambda^{0} not reconstructed", fNOfBins,
955 CreateH1("recNNotRecLambda_theta_r_rec", "Y^{r}_{sim}", "number of #Lambda^{0} not reconstructed", fNOfBins,
957}
958
960{
961 CreateH1("NPairsRecoInvMass", "m_{inv}, GeV/c^2", "number of particle pairs", fNOfBins, fInvMassMin, fInvMassMax);
962}
963
965{
966 CreateH2("NPairsRecoInvMassMomProton", "P^{p}_{reco}, GeV/c", "m_{inv}, GeV/c^{2}", "number of particle pairs",
968 CreateH2("NPairsRecoInvMassEtaProton", "#eta^{p}_{reco}", "m_{inv}, GeV/c^{2}", "number of particle pairs",
970 CreateH2("NPairsRecoInvMassDCA1", "DCA^{p}, cm", "m_{inv}, GeV/c^{2}", "number of particle pairs", fNOfBins,
972 CreateH2("NPairsRecoInvMassMomMeson", "P^{#pi^{-}}_{reco}, GeV/c", "m_{inv}, GeV/c^{2}", "number of particle pairs",
974 CreateH2("NPairsRecoInvMassEtaMeson", "#eta^{#pi^{-}}_{reco}", "m_{inv}, GeV/c^{2}", "number of particle pairs",
976 CreateH2("NPairsRecoInvMassDCA2", "DCA^{#pi^{-}}, cm", "m_{inv}, GeV/c^{2}", "number of particle pairs", fNOfBins,
978 CreateH2("NPairsRecoInvMassDCA12X", "DCA12_{X}, cm", "m_{inv}, GeV/c^{2}", "number of particle pairs", fNOfBins,
980 CreateH2("NPairsRecoInvMassDCA12Y", "DCA12_{Y}, cm", "m_{inv}, GeV/c^{2}", "number of particle pairs", fNOfBins,
982 CreateH2("NPairsRecoInvMassDCA12XsubY", "|DCA12_{X} - DCA12_{Y}|, cm", "m_{inv}, GeV/c^{2}",
983 "number of particle pairs", fNOfBins, fDCA12XRangeMin, fDCA12XRangeMax, fNOfBins, fInvMassMin,
985 CreateH2("NPairsRecoInvMassPath", "path, cm", "m_{inv}, GeV/c^{2}", "number of particle pairs", fNOfBins,
987}
988
990{
991 CreateH1("NPairsRecoInvMassWOCuts", "m_{inv}, GeV/c^2", "number of particle pairs", fNOfBins, fInvMassMin,
993}
994
996{
997 CreateH2("NPairsRecoInvMassMomProtonWOCuts", "P^{p}_{reco}, GeV/c", "m_{inv}, GeV/c^{2}",
998 "number of particle pairs", fNOfBins, fProtonsPRangeMin, fProtonsPRangeMax, fNOfBins, fInvMassMin,
1000 CreateH2("NPairsRecoInvMassEtaProtonWOCuts", "#eta^{p}_{reco}", "m_{inv}, GeV/c^{2}", "number of particle pairs",
1002 CreateH2("NPairsRecoInvMassDCA1WOCuts", "DCA^{p}, cm", "m_{inv}, GeV/c^{2}", "number of particle pairs", fNOfBins,
1004 CreateH2("NPairsRecoInvMassMomMesonWOCuts", "P^{#pi^{-}}_{reco}, GeV/c", "m_{inv}, GeV/c^{2}",
1005 "number of particle pairs", fNOfBins, fMesonsPRangeMin, fMesonsPRangeMax, fNOfBins, fInvMassMin,
1006 fInvMassMax);
1007 CreateH2("NPairsRecoInvMassEtaMesonWOCuts", "#eta^{#pi^{-}}_{reco}", "m_{inv}, GeV/c^{2}",
1008 "number of particle pairs", fNOfBins, fMesonsEtaRangeMin, fMesonsEtaRangeMax, fNOfBins, fInvMassMin,
1009 fInvMassMax);
1010 CreateH2("NPairsRecoInvMassDCA2WOCuts", "DCA^{#pi^{-}}, cm", "m_{inv}, GeV/c^{2}", "number of particle pairs",
1012 CreateH2("NPairsRecoInvMassDCA12XWOCuts", "DCA12_{X}, cm", "m_{inv}, GeV/c^{2}", "number of particle pairs",
1014 CreateH2("NPairsRecoInvMassDCA12YWOCuts", "DCA12_{Y}, cm", "m_{inv}, GeV/c^{2}", "number of particle pairs",
1016 CreateH2("NPairsRecoInvMassDCA12XsubYWOCuts", "|DCA12_{X} - DCA12_{Y}|, cm", "m_{inv}, GeV/c^{2}",
1017 "number of particle pairs", fNOfBins, fDCA12XRangeMin, fDCA12XRangeMax, fNOfBins, fInvMassMin,
1018 fInvMassMax);
1019 CreateH2("NPairsRecoInvMassPathWOCuts", "path, cm", "m_{inv}, GeV/c^{2}", "number of particle pairs", fNOfBins,
1021}
int i
Definition P4_F32vec4.h:22
visualising simulated lambda reconstruction performance calculation.
FairTask for MC simulated lambda reconstruction performance calculation.
int Int_t
constexpr Bool_t kFALSE
double Double_t
constexpr Bool_t kTRUE
const char Option_t
void Fatal(const char *location, const char *msgfmt,...)
@ kGEM
Histogram manager.
void CreateTwoDimensionalRecProtonsRecEfficiencyHistograms()
virtual ~BmnLambdaQa()
Destructor.
void CreateRecMesonsReconstructionEfficiencyHistograms()
Int_t fMesonsThetaRangeMax
void CreateReconstructedParticlePairsHistograms()
void CreateReconstructedParticlePairsFromMCDataHistograms()
Int_t fNOfParticlePairsMC
Int_t fMesonsThetaRRangeMax
void CreateNumberOfLambdaDecayMesonsHistograms()
void CreateTwoDimensionalReconstructedParticlePairsHistograms()
void CreateH2(const string &name, const string &xTitle, const string &yTitle, const string &zTitle, Int_t nofBinsX, Double_t minBinX, Double_t maxBinX, Int_t nofBinsY, Double_t minBinY, Double_t maxBinY)
void CreateTwoDimensionalRecEfficiencyHistograms()
TClonesArray * fGlobalTracks
Double_t fDCA[2][2]
Int_t fNOfParticlePairsWithMatchedLambda
Int_t fNOfParticlePairs
Int_t fMesonsThetaRRangeMin
Double_t fEta[2][2]
Int_t fDCA12YRangeMin
Int_t fDCA12XRangeMax
Int_t fMesonsThetaRangeMin
Int_t fLambdaThetaRangeMax
Bool_t fUseRecoFile
virtual void Finish()
Derived from FairTask.
Int_t fMesonsEtaRangeMin
Int_t fLambdaThetaRRangeMin
virtual InitStatus Init()
Derived from FairTask.
void CreateRecProtonsReconstructionEfficiencyHistograms()
void CreateNumberOfNotReconstructedLambdaHistograms()
Int_t fDCA1RangeMax
void CreateTwoDimensionalNumberOfReconstructedMesonsHistograms()
Int_t fNOfParticlePairsMCAll
void CreateH1(const string &name, const string &xTitle, const string &yTitle, Int_t nofBins, Double_t minBin, Double_t maxBin)
TClonesArray * fMCTracks
Int_t fNReconstructable
Int_t fProtonsPRangeMax
void CreateNumberOfReconstrcutedLambdaHistograms()
void CreateTwoDimensionalRealRecEfficiencyHistograms()
Int_t fDCA2RangeMin
Bool_t fUseMCFile
void CreateNumberOfLambdaHistograms()
Int_t fDCA1RangeMin
Int_t fProtonsThetaRangeMax
void CreateReconstructedParticlePairsFromMCDataWOCutsHistograms()
Int_t fLambdaThetaRRangeMax
Int_t fLambdaEtaRangeMax
BmnHistManager * fHM
void CreateTwoDimensionalReconstructedParticlePairsFromMCDataHistograms()
Int_t fPathRangeMax
Int_t fNLambdas
Int_t fProtonsPRangeMin
Double_t fPath[2]
Int_t fMesonsPRangeMin
Int_t fNOfLambdasParticlePairsMC
Int_t fLambdaThetaRangeMin
Int_t fProtonsEtaRangeMax
TClonesArray * fParticlePair_RECO
Int_t fDCA12XRangeMin
void CreateReconstructionEfficiencyHistograms()
Int_t fDCA2RangeMax
void CreateReconstructedParticlePairsWOCutsHistograms()
Int_t fPathRangeMin
TClonesArray * fParticlePair_MC
void ReadDataBranches()
void CreateTwoDimensionalRecMesonsRecEfficiencyHistograms()
Int_t fProtonsEtaRangeMin
Int_t fMesonsEtaRangeMax
void CreateRecProtonsRecEfficiencyHistograms()
Double_t fMom[2][2]
Int_t fProtonsThetaRRangeMin
void CreateTwoDimensionalReconstructedParticlePairsWOCutsHistograms()
Double_t fDCA12[2]
void CreateNumberOLambdaDecayProtonsHistograms()
Int_t fInvMassMin
string fOutputDir
Int_t fInvMassMax
void CreateLambdaRecEfficiencyHistograms()
void CreateTwoDimensionalReconstructedParticlePairsFromMCDataWOCutsHistograms()
TClonesArray * fSiliconPoints
void CreateNumberOfReconstrcutedRecProtonHistograms()
Int_t fLambdaPRangeMax
Int_t fLambdaEtaRangeMin
static Int_t fCurrentEvent
Int_t fProtonsThetaRangeMin
virtual void Exec(Option_t *opt)
Derived from FairTask.
Int_t fDCA12YRangeMax
Int_t fMesonsPRangeMax
void CreateNumberOfReconstrcutedRecMesonsHistograms()
Int_t fLambdaPRangeMin
void CreateNumberOfReconstructableLambdaHistograms()
Int_t fProtonsThetaRRangeMax
void CreateRecMesonsRecEfficiencyHistograms()
void CreateTwoDimensionalNumberOfReconstructedProtonsHistograms()
Double_t GetMomPart1()
Double_t GetInvMass()
Double_t GetEtaPart2()
Double_t GetEtaPart1()
Double_t GetMomPart2()
void setDCAPart2Min(Double_t val)
void setEtaPart1Max(Double_t val)
void setEtaPart2Max(Double_t val)
void setMomPart2Min(Double_t val)
void setDCA12Min(Double_t val)
void setMomPart1Min(Double_t val)
void setPathMin(Double_t val)
void setDCAPart1Max(Double_t val)
void setDCAPart1Min(Double_t val)
void setDCA12Max(Double_t val)
void setPathMax(Double_t val)
void setMomPart1Max(Double_t val)
void setEtaPart1Min(Double_t val)
void setMomPart2Max(Double_t val)
void setEtaPart2Min(Double_t val)
void setDCAPart2Max(Double_t val)
Base class for simulation reports.
void Create(BmnHistManager *histManager, const string &outputDir)
Main function which creates report data.
CbmMCTrack.h.
Definition CbmMCTrack.h:26
Long64_t GetNPoints(DetectorId detId) const
Accessors to the number of MCPoints in the detectors.
Double_t GetPz() const
Definition CbmMCTrack.h:60
Double_t GetRapidity() const
Int_t GetMotherId() const
Definition CbmMCTrack.h:57
Double_t GetP() const
Definition CbmMCTrack.h:68
Int_t GetPdgCode() const
Accessors.
Definition CbmMCTrack.h:56
RVec< PromoteType< T > > abs(const RVec< T > &v)
Double_t ACos(Double_t)
Double_t Log(Double_t x)
constexpr Double_t RadToDeg()