BmnRoot
Loading...
Searching...
No Matches
BmnLambdaQa.cxx
Go to the documentation of this file.
1
10#include "BmnLambdaQa.h"
11#include "BmnLambdaQaReport.h"
12#include "BmnHistManager.h"
13#include "BmnGemTrack.h"
14#include "BmnSimulationReport.h"
15#include "BmnParticlePair.h"
16#include "BmnSiliconPoint.h"
17#include "BmnGlobalTrack.h"
18#include "CbmMCTrack.h"
19
20#include <TChain.h>
21#include <TString.h>
22#include <TClonesArray.h>
23#include "FairRootManager.h"
24
25#include <boost/assign/list_of.hpp>
26#include <fstream>
27#include <cmath>
28#include <sstream>
29
30using std::cout;
31using std::vector;
32using std::map;
33using std::binary_search;
34using boost::assign::list_of;
35using namespace TMath;
36
37Int_t BmnLambdaQa::fCurrentEvent = 0;
38
40: fHM(NULL),
41 fOutputDir("./"),
42 fNOfBins(50),
43 fLambdaPRangeMin(0.),
44 fLambdaPRangeMax(4.),
45 fLambdaEtaRangeMin(0.),
46 fLambdaEtaRangeMax(5.),
47 fLambdaThetaRangeMin(0.),
48 fLambdaThetaRangeMax(45.),
49 fLambdaThetaRRangeMin(0.),
50 fLambdaThetaRRangeMax(2.5),
51 fProtonsPRangeMin(0.),
52 fProtonsPRangeMax(4.),
53 fProtonsEtaRangeMin(0.),
54 fProtonsEtaRangeMax(5.),
55 fProtonsThetaRangeMin(0.),
56 fProtonsThetaRangeMax(45.),
57 fProtonsThetaRRangeMin(0.),
58 fProtonsThetaRRangeMax(2.5),
59 fMesonsPRangeMin(0.),
60 fMesonsPRangeMax(2.),
61 fMesonsEtaRangeMin(0.),
62 fMesonsEtaRangeMax(4.),
63 fMesonsThetaRangeMin(0.),
64 fMesonsThetaRangeMax(45.),
65 fMesonsThetaRRangeMin(0.),
66 fMesonsThetaRRangeMax(2.5),
67 fInvMassMin(1.07),
68 fInvMassMax(1.22),
69 fUseMCFile(kFALSE),
70 fUseRecoFile(kFALSE),
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 if (fHM)
90 delete fHM;
91}
92
93InitStatus BmnLambdaQa::Init() {
94
95 fHM = new BmnHistManager();
96
97 ReadDataBranches();
98 fNLambdas = 0;
99 fNReconstructable = 0;
100
101 fNOfParticlePairs = 0;
102 fNOfParticlePairsWithMatchedLambda = 0;
103
104 fNOfParticlePairsMC = 0;
105 fNOfLambdasParticlePairsMC = 0;
106 fNOfParticlePairsMCAll = 0;
107
108 CreateH1("numberOfLambdas_LambdaQa", "", "", 1, 0, 1.);
109 CreateH1("numberOfReconstructableLambdas_LambdaQa", "", "", 1, 0, 1.);
110 CreateNumberOfReconstructableLambdaHistograms();
111 CreateNumberOfLambdaHistograms();
112 CreateLambdaRecEfficiencyHistograms();
113 CreateTwoDimensionalRecEfficiencyHistograms();
114 CreateNumberOLambdaDecayProtonsHistograms();
115 CreateNumberOfLambdaDecayMesonsHistograms();
116 CreateRecProtonsRecEfficiencyHistograms();
117 CreateRecMesonsRecEfficiencyHistograms();
118 CreateTwoDimensionalRecProtonsRecEfficiencyHistograms();
119 CreateTwoDimensionalRecMesonsRecEfficiencyHistograms();
120 CreateH1("numberOfMCReconstructedParticlePairsQA", "", "", 1, 0, 1.);
121 CreateH1("numberOfMCReconstructedLambdasQA", "", "", 1, 0, 1.);
122 CreateH1("numberOfMCReconstructedAllParticlePairsQA", "", "", 1, 0, 1.);
123 CreateTwoDimensionalReconstructedParticlePairsFromMCDataHistograms();
124 CreateReconstructedParticlePairsFromMCDataHistograms();
125 CreateTwoDimensionalReconstructedParticlePairsFromMCDataWOCutsHistograms();
126 CreateReconstructedParticlePairsFromMCDataWOCutsHistograms();
127 CreateH1("numberOfReconstructedParticlePairWithMatchedLambdaQA", "", "", 1, 0, 1.);
128 CreateH1("numberOfNotReconstructedLambdasQA", "", "", 1, 0, 1.);
129 CreateNumberOfReconstrcutedLambdaHistograms();
130 CreateReconstructionEfficiencyHistograms();
131 CreateTwoDimensionalRealRecEfficiencyHistograms();
132 CreateNumberOfReconstrcutedRecProtonHistograms();
133 CreateTwoDimensionalNumberOfReconstructedProtonsHistograms();
134 CreateRecProtonsReconstructionEfficiencyHistograms();
135 CreateNumberOfReconstrcutedRecMesonsHistograms();
136 CreateTwoDimensionalNumberOfReconstructedMesonsHistograms();
137 CreateRecMesonsReconstructionEfficiencyHistograms();
138 CreateNumberOfNotReconstructedLambdaHistograms();
139 CreateH1("numberOfReconstructedParticlePairsQA", "", "", 1, 0, 1.);
140 CreateTwoDimensionalReconstructedParticlePairsHistograms();
141 CreateReconstructedParticlePairsHistograms();
142 CreateTwoDimensionalReconstructedParticlePairsWOCutsHistograms();
143 CreateReconstructedParticlePairsWOCutsHistograms();
144
145 return kSUCCESS;
146}
147
148void BmnLambdaQa::Exec(Option_t* opt) {
149 if (fCurrentEvent % 100 == 0)
150 cout << "Event# " << fCurrentEvent << endl;
151 fCurrentEvent++;
152
153 vector <Int_t> indicesOfLambdaProtons;
154 vector <Int_t> indicesOfLambdaMesons;
155
156 /* array: 0-th index is mother lambda's Id, 1-st is proton's Id, 2-nd is negative pi-meson's Id*/
157 vector <array< int, 3 >> indicesOfLamda;
158
159 for (Int_t iTrack = 0; iTrack < fMCTracks->GetEntriesFast(); iTrack++) {
160 CbmMCTrack* track = (CbmMCTrack*) fMCTracks->At(iTrack);
161
162 if (NULL == track) {
163 cout << "Monte-Carlo simulation branch error" << endl;
164 return;
165 }
166
167 Double_t P = ((CbmMCTrack*) fMCTracks->At(iTrack))->GetP();
168 Double_t P_x = ((CbmMCTrack*) fMCTracks->At(iTrack))->GetPx();
169 Double_t P_y = ((CbmMCTrack*) fMCTracks->At(iTrack))->GetPy();
170 Double_t P_z = ((CbmMCTrack*) fMCTracks->At(iTrack))->GetPz();
171 Double_t pRapidity = 0.5 * Log((P + P_z) / (P - P_z));
172 Double_t rapidity = ((CbmMCTrack*) fMCTracks->At(iTrack))->GetRapidity();
173
174 if (3122 == track->GetPdgCode()) {
175 fNLambdas++;
176
177 fHM->H1("numberOfLambdas_LambdaQa")->Fill(1);
178
179 fHM->H1("simNLambda_P_sim")->Fill(P);
180 fHM->H1("simNLambda_eta_sim")->Fill(pRapidity);
181 fHM->H1("simNLambda_theta_sim")->Fill(TMath::ACos(P_z / P) * TMath::RadToDeg());
182 fHM->H1("simNLambda_theta_r_sim")->Fill(rapidity);
183 fHM->H1("simNLambda_P_x_sim")->Fill(P_x);
184 fHM->H1("simNLambda_P_y_sim")->Fill(P_y);
185 fHM->H1("simNLambda_P_z_sim")->Fill(P_z);
186 fHM->H2("simNLambda_eta_P_sim")->Fill(P, pRapidity);
187 }
188
189 if (2212 == track->GetPdgCode()) {
190 int motherId = track->GetMotherId();
191
192 if (motherId < 0)
193 continue;
194
195 if (3122 == ((CbmMCTrack*) fMCTracks->At(motherId))->GetPdgCode()) {
196 indicesOfLambdaProtons.push_back(iTrack);
197
198 fHM->H1("NProtons_P_sim")->Fill(P);
199 fHM->H1("NProtons_eta_sim")->Fill(pRapidity);
200 fHM->H1("NProtons_theta_sim")->Fill(TMath::ACos(P_z / P) * TMath::RadToDeg());
201 fHM->H1("NProtons_theta_r_sim")->Fill(rapidity);
202 fHM->H2("simNRecProtons_eta_P_sim")->Fill(pRapidity, P);
203
204 Double_t nSiliconHitsOnTrackP = 0;
205
206 for (Int_t hit = 0; hit < fSiliconPoints->GetEntriesFast(); hit++) {
207 if (((BmnSiliconPoint*) fSiliconPoints->At(hit))->GetTrackID() == iTrack)
208 nSiliconHitsOnTrackP++;
209 }
210
211 if (track->GetNPoints(kGEM) + nSiliconHitsOnTrackP >= 4) {
212 fHM->H1("NRecProtons_P_sim")->Fill(P);
213 fHM->H1("NRecProtons_eta_sim")->Fill(pRapidity);
214 fHM->H1("NRecProtons_theta_sim")->Fill(TMath::ACos(P_z / P) * TMath::RadToDeg());
215 fHM->H1("NRecProtons_theta_r_sim")->Fill(rapidity);
216 fHM->H2("simNReconstructableRecProtons_eta_P_sim")->Fill(pRapidity, P);
217 }
218 }
219 }
220
221 if (-211 == track->GetPdgCode()) {
222 int motherIdMeson = track->GetMotherId();
223
224 if (motherIdMeson < 0) {
225 continue;
226 }
227
228 if (3122 == ((CbmMCTrack*) fMCTracks->At(motherIdMeson))->GetPdgCode()) {
229 indicesOfLambdaMesons.push_back(iTrack);
230
231 fHM->H1("NMesons_P_sim")->Fill(P);
232 fHM->H1("NMesons_eta_sim")->Fill(pRapidity);
233 fHM->H1("NMesons_theta_sim")->Fill(TMath::ACos(P_z / P) * TMath::RadToDeg());
234 fHM->H1("NMesons_theta_r_sim")->Fill(rapidity);
235 fHM->H2("simNRecMesons_eta_P_sim")->Fill(pRapidity, P);
236
237 Double_t nSiliconHitsOnTrackM = 0;
238
239 for (Int_t hit = 0; hit < fSiliconPoints->GetEntriesFast(); hit++) {
240 if (((BmnSiliconPoint*) fSiliconPoints->At(hit))->GetTrackID() == iTrack)
241 nSiliconHitsOnTrackM++;
242 }
243
244 if (track->GetNPoints(kGEM) + nSiliconHitsOnTrackM >= 4) {
245 fHM->H1("NRecMesons_P_sim")->Fill(P);
246 fHM->H1("NRecMesons_eta_sim")->Fill(pRapidity);
247 fHM->H1("NRecMesons_theta_sim")->Fill(TMath::ACos(P_z / P) * TMath::RadToDeg());
248 fHM->H1("NRecMesons_theta_r_sim")->Fill(rapidity);
249 fHM->H2("simNReconstructableRecMesons_eta_P_sim")->Fill(pRapidity, P);
250 }
251 }
252 }
253 }
254
255 for (size_t cnt1 = 0; cnt1 < indicesOfLambdaProtons.size(); cnt1++) {
256 for (size_t cnt2 = 0; cnt2 < indicesOfLambdaMesons.size(); cnt2++) {
257 if (((CbmMCTrack*) fMCTracks->At(indicesOfLambdaProtons[cnt1]))->GetMotherId() == ((CbmMCTrack*) fMCTracks->At(indicesOfLambdaMesons[cnt2]))->GetMotherId()) {
258 array<int, 3> tmp = {((CbmMCTrack*) fMCTracks->At(indicesOfLambdaProtons[cnt1]))->GetMotherId(), indicesOfLambdaProtons[cnt1], indicesOfLambdaMesons[cnt2]};
259 indicesOfLamda.push_back(tmp);
260 }
261 }
262 }
263
264 for (size_t cnt = 0; cnt < indicesOfLamda.size(); cnt++) {
265 Int_t nSiliconHitsOnTrackP = 0;
266 Int_t nSiliconHitsOnTrackM = 0;
267 Int_t nSSDHitsOnTrackP = 0;
268 Int_t nSSDHitsOnTrackM = 0;
269 Int_t nGEMHitsOnTrackP = 0;
270 Int_t nGEMHitsOnTrackM = 0;
271
272 for (Int_t hit = 0; hit < fSiliconPoints->GetEntriesFast(); hit++) {
273 Int_t trId = ((BmnSiliconPoint*) fSiliconPoints->At(hit))->GetTrackID();
274 if (trId == indicesOfLamda[cnt][1]) nSiliconHitsOnTrackP++;
275 else if (trId == indicesOfLamda[cnt][2]) nSiliconHitsOnTrackM++;
276 }
277
278 nGEMHitsOnTrackP = ((CbmMCTrack*) fMCTracks->At(indicesOfLamda[cnt][1]))->GetNPoints(kGEM);
279 nGEMHitsOnTrackM = ((CbmMCTrack*) fMCTracks->At(indicesOfLamda[cnt][2]))->GetNPoints(kGEM);
280
281 if (nGEMHitsOnTrackP + nSiliconHitsOnTrackP + nSSDHitsOnTrackP >= 4 && nGEMHitsOnTrackM + nSiliconHitsOnTrackM + nSSDHitsOnTrackM >= 4) {
282 fNReconstructable++;
283
284 Double_t P = ((CbmMCTrack*) fMCTracks->At(indicesOfLamda[cnt][0]))->GetP();
285 Double_t P_x = ((CbmMCTrack*) fMCTracks->At(indicesOfLamda[cnt][0]))->GetPx();
286 Double_t P_y = ((CbmMCTrack*) fMCTracks->At(indicesOfLamda[cnt][0]))->GetPy();
287 Double_t P_z = ((CbmMCTrack*) fMCTracks->At(indicesOfLamda[cnt][0]))->GetPz();
288 Double_t pRapidity = 0.5 * Log((P + P_z) / (P - P_z));
289 Double_t rapidity = ((CbmMCTrack*) fMCTracks->At(indicesOfLamda[cnt][0]))->GetRapidity();
290
291 fHM->H1("numberOfReconstructableLambdas_LambdaQa")->Fill(1);
292
293 fHM->H1("simNReconstructableLambda_P_sim")->Fill(P);
294 fHM->H1("simNReconstructableLambda_eta_sim")->Fill(pRapidity);
295 fHM->H1("simNReconstructableLambda_theta_r_sim")->Fill(rapidity);
296 fHM->H1("simNReconstructableLambda_theta_sim")->Fill(TMath::ACos(P_z / P) * TMath::RadToDeg());
297 fHM->H1("simNReconstructableLambda_P_x_sim")->Fill(P_x);
298 fHM->H1("simNReconstructableLambda_P_y_sim")->Fill(P_y);
299 fHM->H1("simNReconstructableLambda_P_z_sim")->Fill(P_z);
300 fHM->H2("simNReconstructableLambda_eta_P_sim")->Fill(P, pRapidity);
301 }
302 }
303
304 if (fParticlePair_MC)
305 for (Int_t iPair = 0; iPair < fParticlePair_MC->GetEntriesFast(); iPair++) {
306 BmnParticlePair* pair = (BmnParticlePair*) fParticlePair_MC->UncheckedAt(iPair);
307 Double_t momPart1 = pair->GetMomPart1();
308 Double_t momPart2 = pair->GetMomPart2();
309 Double_t etaPart1 = pair->GetEtaPart1();
310 Double_t etaPart2 = pair->GetEtaPart2();
311 Double_t dca1 = pair->GetDCA1();
312 Double_t dca2 = pair->GetDCA2();
313 Double_t dca12 = pair->GetDCA12();
314 Double_t path = pair->GetPath();
315
316 // Apply cuts ...
317 if (momPart1 < fMom[0][0] || momPart1 > fMom[0][1] || momPart2 < fMom[1][0] || momPart2 > fMom[1][1])
318 continue;
319
320 if (etaPart1 < fEta[0][0] || etaPart1 > fEta[0][1] || etaPart2 < fEta[1][0] || etaPart2 > fEta[1][1])
321 continue;
322
323 // Geom. cuts applied ...
324 if (dca1 < fDCA[0][0] || dca1 > fDCA[0][1] || dca2 < fDCA[1][0] || dca2 > fDCA[1][1])
325 continue;
326
327 if (dca12 < fDCA12[0] || dca12 > fDCA12[1])
328 continue;
329
330 if (path < fPath[0] || path > fPath[1])
331 continue;
332
333 fNOfParticlePairsMC++;
334 fHM->H1("numberOfMCReconstructedAllParticlePairsQA")->Fill(1);
335 fHM->H1("NPairsRecoFromMCInvMass")->Fill(pair->GetInvMass());
336
337 fHM->H2("NPairsRecoFromMCInvMassMomProton")->Fill(momPart1, pair->GetInvMass());
338 fHM->H2("NPairsRecoFromMCInvMassMomMeson")->Fill(momPart2, pair->GetInvMass());
339 fHM->H2("NPairsRecoFromMCInvMassEtaProton")->Fill(etaPart1, pair->GetInvMass());
340 fHM->H2("NPairsRecoFromMCInvMassEtaMeson")->Fill(etaPart2, pair->GetInvMass());
341 fHM->H2("NPairsRecoFromMCInvMassDCA1")->Fill(dca1, pair->GetInvMass());
342 fHM->H2("NPairsRecoFromMCInvMassDCA2")->Fill(dca2, pair->GetInvMass());
343 fHM->H2("NPairsRecoFromMCInvMassDCA12X")->Fill(dca12, pair->GetInvMass());
344 fHM->H2("NPairsRecoFromMCInvMassPath")->Fill(path, pair->GetInvMass());
345
346 CbmMCTrack* posMCTrack = (CbmMCTrack*) fMCTracks->At(pair->GetMCTrackIdPart1());
347 CbmMCTrack* negMCTrack = (CbmMCTrack*) fMCTracks->At(pair->GetMCTrackIdPart2());
348 if (!negMCTrack || !posMCTrack) continue;
349 if ((posMCTrack->GetMotherId() != negMCTrack->GetMotherId()) || (posMCTrack->GetMotherId() < 0)) {
350 continue;
351 }
352 CbmMCTrack* lambda = (CbmMCTrack*) fMCTracks->At(posMCTrack->GetMotherId());
353 if (lambda->GetPdgCode() != 3122) {
354 continue;
355 }
356 fNOfLambdasParticlePairsMC++;
357 fHM->H1("numberOfMCReconstructedLambdasQA")->Fill(1);
358 }
359
360 if (fParticlePair_MC)
361 for (Int_t iPair = 0; iPair < fParticlePair_MC->GetEntriesFast(); iPair++) {
362 fNOfParticlePairsMCAll++;
363 fHM->H1("numberOfMCReconstructedParticlePairsQA")->Fill(1);
364
365 BmnParticlePair* pair = (BmnParticlePair*) fParticlePair_MC->At(iPair);
366
367 fHM->H1("NPairsRecoFromMCWOCutsInvMass")->Fill(pair->GetInvMass());
368
369 Double_t momPart1 = pair->GetMomPart1();
370 Double_t momPart2 = pair->GetMomPart2();
371 Double_t etaPart1 = pair->GetEtaPart1();
372 Double_t etaPart2 = pair->GetEtaPart2();
373 Double_t dca1 = pair->GetDCA1();
374 Double_t dca2 = pair->GetDCA2();
375 Double_t dca12x = pair->GetDCA12();
376 Double_t dca12y = pair->GetDCA12();
377 Double_t path = pair->GetPath();
378
379 fHM->H2("NPairsRecoFromMCWOCutsInvMassMomProton")->Fill(momPart1, pair->GetInvMass());
380 fHM->H2("NPairsRecoFromMCWOCutsInvMassMomMeson")->Fill(momPart2, pair->GetInvMass());
381 fHM->H2("NPairsRecoFromMCWOCutsInvMassEtaProton")->Fill(etaPart1, pair->GetInvMass());
382 fHM->H2("NPairsRecoFromMCWOCutsInvMassEtaMeson")->Fill(etaPart2, pair->GetInvMass());
383
384 fHM->H2("NPairsRecoFromMCWOCutsInvMassDCA1")->Fill(dca1, pair->GetInvMass());
385 fHM->H2("NPairsRecoFromMCWOCutsInvMassDCA2")->Fill(dca2, pair->GetInvMass());
386 fHM->H2("NPairsRecoFromMCWOCutsInvMassDCA12X")->Fill(dca12x, pair->GetInvMass());
387 fHM->H2("NPairsRecoFromMCWOCutsInvMassDCA12Y")->Fill(dca12y, pair->GetInvMass());
388 fHM->H2("NPairsRecoFromMCWOCutsInvMassDCA12XsubY")->Fill(abs(dca12x - dca12y), pair->GetInvMass());
389 fHM->H2("NPairsRecoFromMCWOCutsInvMassPath")->Fill(path, pair->GetInvMass());
390
391 CbmMCTrack* posMCTrack = (CbmMCTrack*) fMCTracks->At(pair->GetMCTrackIdPart1());
392 CbmMCTrack* negMCTrack = (CbmMCTrack*) fMCTracks->At(pair->GetMCTrackIdPart2());
393 if (!negMCTrack || !posMCTrack) continue;
394 if ((posMCTrack->GetMotherId() != negMCTrack->GetMotherId()) || (posMCTrack->GetMotherId() < 0)) {
395 continue;
396 }
397 CbmMCTrack* lambda = (CbmMCTrack*) fMCTracks->At(posMCTrack->GetMotherId());
398 if (lambda->GetPdgCode() != 3122) {
399 continue;
400 }
401 }
402
404 if (fParticlePair_RECO)
405 for (Int_t iPair = 0; iPair < fParticlePair_RECO->GetEntriesFast(); iPair++) {
406 BmnParticlePair* pair = (BmnParticlePair*) fParticlePair_RECO->UncheckedAt(iPair);
407
408 CbmMCTrack* posPartTr = (CbmMCTrack*) fMCTracks->At(pair->GetMCTrackIdPart1());
409 if (!posPartTr) {
410 cout << "proton track obtaining error" << endl;
411 return;
412 }
413
414 CbmMCTrack* negPartTr = (CbmMCTrack*) fMCTracks->At(pair->GetMCTrackIdPart2());
415 if (!negPartTr) {
416 cout << "meson track obtaining error" << endl;
417 return;
418 }
419
420 if (-1 == posPartTr->GetMotherId() || -1 == negPartTr->GetMotherId() || negPartTr->GetMotherId() != posPartTr->GetMotherId())
421 continue;
422
423 CbmMCTrack* primaryPartTr = (CbmMCTrack*) fMCTracks->At(posPartTr->GetMotherId());
424 if (!primaryPartTr) {
425 cout << "lambda track obtaining error" << endl;
426 return;
427 }
428
429 if (primaryPartTr->GetPdgCode() != 3122)
430 continue;
431
432 fNOfParticlePairsWithMatchedLambda++;
433 fHM->H1("numberOfReconstructedParticlePairWithMatchedLambdaQA")->Fill(1);
434
435 // Double_t momLambdaXMC = primaryPartTr->GetPx();
436 // Double_t momLambdaYMC = primaryPartTr->GetPy();
437 Double_t momLambdaZMC = primaryPartTr->GetPz();
438 Double_t momLambdaMC = primaryPartTr->GetP();
439 Double_t thetaMC = TMath::ACos(momLambdaZMC / momLambdaMC) * TMath::RadToDeg();
440 Double_t pRapidityLMC = 0.5 * Log((momLambdaMC + momLambdaZMC) / (momLambdaMC - momLambdaZMC));
441 Double_t thetaR = primaryPartTr->GetRapidity();
442
443 fHM->H1("recNLambda_P_rec")->Fill(momLambdaMC);
444 fHM->H1("recNLambda_theta_rec")->Fill(thetaMC);
445 fHM->H1("recNLambda_eta_rec")->Fill(pRapidityLMC);
446 fHM->H1("recNLambda_theta_r_rec")->Fill(thetaR);
447 fHM->H2("recNLambda_eta_P_sim")->Fill(pRapidityLMC, momLambdaMC);
448
449 Double_t momProtMC = posPartTr->GetP();
450 Double_t momProtZMC = posPartTr->GetPz();
451 Double_t pRapidityPMC = 0.5 * Log((momProtMC + momProtZMC) / (momProtMC - momProtZMC));
452 Double_t thetaRProt = posPartTr->GetRapidity();
453
454 fHM->H1("recNRecProtons_P_rec")->Fill(momProtMC);
455 fHM->H1("recNRecProtons_theta_rec")->Fill(TMath::ACos(momProtZMC / momProtMC) * TMath::RadToDeg());
456 fHM->H1("recNRecProtons_eta_rec")->Fill(pRapidityPMC);
457 fHM->H1("recNRecProtons_theta_r_rec")->Fill(thetaRProt);
458 fHM->H2("recNRecProtons_eta_P_sim")->Fill(pair->GetEtaPart1(), momProtMC);
459
460 Double_t momMesMC = negPartTr->GetP();
461 Double_t momMesZMC = negPartTr->GetPz();
462 Double_t pRapidityMMC = 0.5 * Log((momMesMC + momMesZMC) / (momMesMC - momMesZMC));
463 Double_t thetaRMes = negPartTr->GetRapidity();
464
465 fHM->H1("recNRecMesons_P_rec")->Fill(momMesMC);
466 fHM->H1("recNRecMesons_theta_rec")->Fill(TMath::ACos(momMesZMC / momMesMC) * TMath::RadToDeg());
467 fHM->H1("recNRecMesons_eta_rec")->Fill(pRapidityMMC);
468 fHM->H1("recNRecMesons_theta_r_rec")->Fill(thetaRMes);
469 fHM->H2("recNRecMesons_eta_P_sim")->Fill(pair->GetEtaPart1(), momMesMC);
470 }
471
472 if (fParticlePair_RECO)
473 for (Int_t iPair = 0; iPair < fParticlePair_RECO->GetEntriesFast(); iPair++) {
474 BmnParticlePair* pair = (BmnParticlePair*) fParticlePair_RECO->UncheckedAt(iPair);
475 Double_t momPart1 = pair->GetMomPart1();
476 Double_t momPart2 = pair->GetMomPart2();
477 Double_t etaPart1 = pair->GetEtaPart1();
478 Double_t etaPart2 = pair->GetEtaPart2();
479 Double_t dca1 = pair->GetDCA1();
480 Double_t dca2 = pair->GetDCA2();
481 Double_t dca12x = pair->GetDCA12();
482 Double_t dca12y = pair->GetDCA12();
483 Double_t path = pair->GetPath();
484
485 // Apply cuts ...
486 if (momPart1 < fMom[0][0] || momPart1 > fMom[0][1] || momPart2 < fMom[1][0] || momPart2 > fMom[1][1])
487 continue;
488
489 if (etaPart1 < fEta[0][0] || etaPart1 > fEta[0][1] || etaPart2 < fEta[1][0] || etaPart2 > fEta[1][1])
490 continue;
491
492 // Geom. cuts applied ...
493 if (dca1 < fDCA[0][0] || dca1 > fDCA[0][1] || dca2 < fDCA[1][0] || dca2 > fDCA[1][1])
494 continue;
495
496 if (dca12x < fDCA12[0] || dca12x > fDCA12[1])
497 continue;
498
499 if (path < fPath[0] || path > fPath[1])
500 continue;
501
502 fNOfParticlePairs++;
503 fHM->H1("numberOfReconstructedParticlePairsQA")->Fill(1);
504 fHM->H1("NPairsRecoInvMass")->Fill(pair->GetInvMass());
505
506 fHM->H2("NPairsRecoInvMassMomProton")->Fill(momPart1, pair->GetInvMass());
507 fHM->H2("NPairsRecoInvMassMomMeson")->Fill(momPart2, pair->GetInvMass());
508 fHM->H2("NPairsRecoInvMassEtaProton")->Fill(etaPart1, pair->GetInvMass());
509 fHM->H2("NPairsRecoInvMassEtaMeson")->Fill(etaPart2, pair->GetInvMass());
510 fHM->H2("NPairsRecoInvMassDCA1")->Fill(dca1, pair->GetInvMass());
511 fHM->H2("NPairsRecoInvMassDCA2")->Fill(dca2, pair->GetInvMass());
512 fHM->H2("NPairsRecoInvMassDCA12X")->Fill(dca12x, pair->GetInvMass());
513 fHM->H2("NPairsRecoInvMassDCA12Y")->Fill(dca12y, pair->GetInvMass());
514 fHM->H2("NPairsRecoInvMassDCA12XsubY")->Fill(abs(dca12x - dca12y), pair->GetInvMass());
515 fHM->H2("NPairsRecoInvMassPath")->Fill(path, pair->GetInvMass());
516 }
517
518 if (fParticlePair_RECO)
519 for (Int_t iPair = 0; iPair < fParticlePair_RECO->GetEntriesFast(); iPair++) {
520 BmnParticlePair* pair = (BmnParticlePair*) fParticlePair_RECO->At(iPair);
521
522 fHM->H1("NPairsRecoInvMassWOCuts")->Fill(pair->GetInvMass());
523
524 Double_t momPart1 = pair->GetMomPart1();
525 Double_t momPart2 = pair->GetMomPart2();
526 Double_t etaPart1 = pair->GetEtaPart1();
527 Double_t etaPart2 = pair->GetEtaPart2();
528 Double_t dca1 = pair->GetDCA1();
529 Double_t dca2 = pair->GetDCA2();
530 Double_t dca12x = pair->GetDCA12();
531 Double_t dca12y = pair->GetDCA12();
532 Double_t path = pair->GetPath();
533
534 fHM->H2("NPairsRecoInvMassMomProtonWOCuts")->Fill(momPart1, pair->GetInvMass());
535 fHM->H2("NPairsRecoInvMassMomMesonWOCuts")->Fill(momPart2, pair->GetInvMass());
536 fHM->H2("NPairsRecoInvMassEtaProtonWOCuts")->Fill(etaPart1, pair->GetInvMass());
537 fHM->H2("NPairsRecoInvMassEtaMesonWOCuts")->Fill(etaPart2, pair->GetInvMass());
538
539 fHM->H2("NPairsRecoInvMassDCA1WOCuts")->Fill(dca1, pair->GetInvMass());
540 fHM->H2("NPairsRecoInvMassDCA2WOCuts")->Fill(dca2, pair->GetInvMass());
541 fHM->H2("NPairsRecoInvMassDCA12XWOCuts")->Fill(dca12x, pair->GetInvMass());
542 fHM->H2("NPairsRecoInvMassDCA12YWOCuts")->Fill(dca12y, pair->GetInvMass());
543 fHM->H2("NPairsRecoInvMassDCA12XsubYWOCuts")->Fill(abs(dca12x - dca12y), pair->GetInvMass());
544 fHM->H2("NPairsRecoInvMassPathWOCuts")->Fill(path, pair->GetInvMass());
545 }
546}
547
549 fHM->WriteToFile();
550
551 vector <TClonesArray*> isPairBranches;
552 isPairBranches.push_back(fParticlePair_MC);
553 isPairBranches.push_back(fParticlePair_RECO);
554
556 pairInfo->setMomPart1Min(fMom[0][0]);
557 pairInfo->setMomPart1Max(fMom[0][1]);
558 pairInfo->setMomPart2Min(fMom[1][0]);
559 pairInfo->setMomPart2Max(fMom[1][1]);
560
561 pairInfo->setEtaPart1Min(fEta[0][0]);
562 pairInfo->setEtaPart1Max(fEta[0][1]);
563 pairInfo->setEtaPart2Min(fEta[1][0]);
564 pairInfo->setEtaPart2Max(fEta[1][1]);
565
566 pairInfo->setDCAPart1Min(fDCA[0][0]);
567 pairInfo->setDCAPart1Max(fDCA[0][1]);
568 pairInfo->setDCAPart2Min(fDCA[1][0]);
569 pairInfo->setDCAPart2Max(fDCA[1][1]);
570
571 pairInfo->setDCA12Min(fDCA12[0]);
572 pairInfo->setDCA12Max(fDCA12[1]);
573 pairInfo->setPathMin(fPath[0]);
574 pairInfo->setPathMax(fPath[1]);
575 BmnSimulationReport* report = new BmnLambdaQaReport(fUseMCFile, fUseRecoFile, pairInfo, isPairBranches);
576 report->Create(fHM, fOutputDir);
577 delete report;
578 delete pairInfo;
579}
580
581void BmnLambdaQa::ReadDataBranches() {
582 FairRootManager* ioman = FairRootManager::Instance();
583
584 if (!ioman)
585 Fatal("Init", "BmnRootManager is not instantiated");
586
587 fMCTracks = (TClonesArray*) ioman->GetObject("MCTrack");
588 fGlobalTracks = (TClonesArray*) ioman->GetObject("BmnGlobalTrack");
589 fSiliconPoints = (TClonesArray*) ioman->GetObject("SiliconPoint");
590
591 fParticlePair_MC = (TClonesArray*) ioman->GetObject("ParticlePair_MC");
592 fParticlePair_RECO = (TClonesArray*) ioman->GetObject("ParticlePair_RECO");
593
594 if (fMCTracks)
595 fUseMCFile = kTRUE;
596
597 if (fGlobalTracks)
598 fUseRecoFile = kTRUE;
599}
600
601void BmnLambdaQa::CreateH1(const string& name, const string& xTitle, const string& yTitle, Int_t nofBins, Double_t minBin, Double_t maxBin) {
602 TH1F* h = new TH1F(name.c_str(), string(";" + xTitle + ";" + yTitle).c_str(), nofBins, minBin, maxBin);
603 fHM->Add(name, h);
604}
605
606void BmnLambdaQa::CreateH2(
607 const string& name,
608 const string& xTitle,
609 const string& yTitle,
610 const string& zTitle,
611 Int_t nofBinsX,
612 Double_t minBinX,
613 Double_t maxBinX,
614 Int_t nofBinsY,
615 Double_t minBinY,
616 Double_t maxBinY) {
617 TH2F* h = new TH2F(name.c_str(), (";" + xTitle + ";" + yTitle + ";" + zTitle).c_str(), nofBinsX, minBinX, maxBinX, nofBinsY, minBinY, maxBinY);
618 fHM->Add(name, h);
619}
620
621void BmnLambdaQa::CreateNumberOfReconstructableLambdaHistograms() {
622 CreateH1("simNReconstructableLambda_P_sim", "P_{sim}, GeV/c", "number of reconstructable #Lambda^{0}", fNOfBins, fLambdaPRangeMin, fLambdaPRangeMax);
623 CreateH1("simNReconstructableLambda_eta_sim", "#eta_{sim}", "number of reconstructable #Lambda^{0}", fNOfBins, fLambdaEtaRangeMin, fLambdaEtaRangeMax);
624 CreateH1("simNReconstructableLambda_theta_sim", "#theta_{sim}, degrees", "number of reconstructable #Lambda^{0}", fNOfBins, fLambdaThetaRangeMin, fLambdaThetaRangeMax);
625 CreateH1("simNReconstructableLambda_theta_r_sim", "Y^{r}_{sim}", "number of reconstructable #Lambda^{0}", fNOfBins, fLambdaThetaRRangeMin, fLambdaThetaRRangeMax);
626 CreateH1("simNReconstructableLambda_P_x_sim", "P^{x}_{sim}, GeV/c", "number of reconstructable #Lambda^{0}", fNOfBins, -2, 2);
627 CreateH1("simNReconstructableLambda_P_y_sim", "P^{y}_{sim}, GeV/c", "number of reconstructable #Lambda^{0}", fNOfBins, -2, 2);
628 CreateH1("simNReconstructableLambda_P_z_sim", "P^{z}_{sim}, GeV/c", "number of reconstructable #Lambda^{0}", fNOfBins, -1, 4);
629}
630
631void BmnLambdaQa::CreateNumberOfLambdaHistograms() {
632 CreateH1("simNLambda_P_sim", "P_{sim}, GeV/c", "number of #Lambda^{0}", fNOfBins, fLambdaPRangeMin, fLambdaPRangeMax);
633 CreateH1("simNLambda_eta_sim", "#eta_{sim}", "number of #Lambda^{0}", fNOfBins, fLambdaEtaRangeMin, fLambdaEtaRangeMax);
634 CreateH1("simNLambda_theta_sim", "#theta_{sim}, degrees", "number of #Lambda^{0}", fNOfBins, fLambdaThetaRangeMin, fLambdaThetaRangeMax);
635 CreateH1("simNLambda_theta_r_sim", "Y^{r}_{sim}", "number of #Lambda^{0}", fNOfBins, fLambdaThetaRRangeMin, fLambdaThetaRRangeMax);
636 CreateH1("simNLambda_P_x_sim", "P^{x}_{sim}, GeV/c", "number of #Lambda^{0}", fNOfBins, -2, 2);
637 CreateH1("simNLambda_P_y_sim", "P^{y}_{sim}, GeV/c", "number of #Lambda^{0}", fNOfBins, -2, 2);
638 CreateH1("simNLambda_P_z_sim", "P^{z}_{sim}, GeV/c", "number of #Lambda^{0}", fNOfBins, -1, 4);
639}
640
641void BmnLambdaQa::CreateLambdaRecEfficiencyHistograms() {
642 CreateH1("simLambdaRecEff_P_sim", "P_{sim}, GeV/c", "geometrical efficiency, %", fNOfBins, fLambdaPRangeMin, fLambdaPRangeMax);
643 CreateH1("simLambdaRecEff_eta_sim", "#eta_{sim}", "geometrical efficiency, % efficiency, %", fNOfBins, fLambdaEtaRangeMin, fLambdaEtaRangeMax);
644 CreateH1("simLambdaRecEff_theta_sim", "#theta_{sim}, degrees", "geometrical efficiency, %", fNOfBins, fLambdaThetaRangeMin, fLambdaThetaRangeMax);
645 CreateH1("simLambdaRecEff_theta_r_sim", "Y^{r}_{sim}", "geometrical efficiency, %", fNOfBins, fLambdaThetaRRangeMin, fLambdaThetaRRangeMax);
646 CreateH1("simLambdaRecEff_P_x_sim", "P^{x}_{sim}, GeV/c", "geometrical efficiency, %", fNOfBins, -2, 2);
647 CreateH1("simLambdaRecEff_P_y_sim", "P^{y}_{sim}, GeV/c", "geometrical efficiency, %", fNOfBins, -2, 2);
648 CreateH1("simLambdaRecEff_P_z_sim", "P^{z}_{sim}, GeV/c", "geometrical efficiency, %", fNOfBins, -1, 4);
649}
650
651void BmnLambdaQa::CreateTwoDimensionalRecEfficiencyHistograms() {
652 CreateH2("simNReconstructableLambda_eta_P_sim", "P_{sim}, GeV/c", "#eta_{sim}", "number of #Lambda^{0}", fNOfBins, fLambdaPRangeMin, fLambdaPRangeMax, fNOfBins, fLambdaEtaRangeMin, fLambdaEtaRangeMax);
653 CreateH2("simNLambda_eta_P_sim", "P_{sim}, GeV/c", "#eta_{sim}", "number of #Lambda^{0}", fNOfBins, fLambdaPRangeMin, fLambdaPRangeMax, fNOfBins, fLambdaEtaRangeMin, fLambdaEtaRangeMax);
654 CreateH2("simEffRecLambda_eta_P_sim", "P_{sim}, GeV/c", "#eta_{sim}", "geometrical efficiency, %", fNOfBins, fLambdaPRangeMin, fLambdaPRangeMax, fNOfBins, fLambdaEtaRangeMin, fLambdaEtaRangeMax);
655}
656
657void BmnLambdaQa::CreateNumberOLambdaDecayProtonsHistograms() {
658 CreateH1("NProtons_P_sim", "P_{sim}, GeV/c", "number of lambda decay p", fNOfBins, fProtonsPRangeMin, fProtonsPRangeMax);
659 CreateH1("NProtons_eta_sim", "#eta_{sim}", "number of lambda decay p", fNOfBins, fProtonsEtaRangeMin, fProtonsEtaRangeMax);
660 CreateH1("NProtons_theta_sim", "#theta_{sim}, degrees", "number of lambda decay p", fNOfBins, fProtonsThetaRangeMin, fProtonsThetaRangeMax);
661 CreateH1("NProtons_theta_r_sim", "Y^{r}_{sim}", "number of lambda decay p", fNOfBins, fProtonsThetaRRangeMin, fProtonsThetaRRangeMax);
662 CreateH1("NRecProtons_P_sim", "P_{sim}, GeV/c", "number of reconstructable lambda decay p", fNOfBins, fProtonsPRangeMin, fProtonsPRangeMax);
663 CreateH1("NRecProtons_eta_sim", "#eta_{sim}", "number of reconstructable lambda decay p", fNOfBins, fProtonsEtaRangeMin, fProtonsEtaRangeMax);
664 CreateH1("NRecProtons_theta_sim", "#theta_{sim}, degrees", "number of reconstructable lambda decay p", fNOfBins, fProtonsThetaRangeMin, fProtonsThetaRangeMax);
665 CreateH1("NRecProtons_theta_r_sim", "Y^{r}_{sim}, degrees", "number of reconstructable lambda decay p", fNOfBins, fProtonsThetaRRangeMin, fProtonsThetaRRangeMax);
666}
667
668void BmnLambdaQa::CreateRecProtonsRecEfficiencyHistograms() {
669 CreateH1("simRecProtonsRecEff_P_sim", "P_{sim}, GeV/c", "geometrical efficiency, %", fNOfBins, fProtonsPRangeMin, fProtonsPRangeMax);
670 CreateH1("simRecProtonsRecEff_eta_sim", "#eta_{sim}", "geometrical efficiency, %", fNOfBins, fProtonsEtaRangeMin, fProtonsEtaRangeMax);
671 CreateH1("simRecProtonsRecEff_theta_sim", "#theta_{sim}, degrees", "geometrical efficiency, %", fNOfBins, fProtonsThetaRangeMin, fProtonsThetaRangeMax);
672 CreateH1("simRecProtonsRecEff_theta_r_sim", "Y^{r}_{sim}, degrees", "geometrical efficiency, %", fNOfBins, fProtonsThetaRRangeMin, fProtonsThetaRRangeMax);
673}
674
675void BmnLambdaQa::CreateTwoDimensionalRecProtonsRecEfficiencyHistograms() {
676 CreateH2("simNRecProtons_eta_P_sim", "P_{sim}, GeV/c", "#eta_{sim}", "number of lambda decay p", fNOfBins, fProtonsEtaRangeMin, fProtonsEtaRangeMax, fNOfBins, fProtonsPRangeMin, fProtonsPRangeMax);
677 CreateH2("simNReconstructableRecProtons_eta_P_sim", "P_{sim}, GeV/c", "#eta_{sim}", "number of lambda decay p", fNOfBins, fProtonsEtaRangeMin, fProtonsEtaRangeMax, fNOfBins, fProtonsPRangeMin, fProtonsPRangeMax);
678 CreateH2("simEffRecRecProtons_eta_P_sim", "P_{sim}, GeV/c", "#eta_{sim}", "reconstruction efficiency, %", fNOfBins, fProtonsEtaRangeMin, fProtonsEtaRangeMax, fNOfBins, fProtonsPRangeMin, fProtonsPRangeMax);
679}
680
681void BmnLambdaQa::CreateNumberOfLambdaDecayMesonsHistograms() {
682 CreateH1("NMesons_P_sim", "P_{sim}, GeV/c", "number of lambda decay #pi^{-}", fNOfBins, fMesonsPRangeMin, fMesonsPRangeMax);
683 CreateH1("NMesons_eta_sim", "#eta_{sim}", "number of lambda decay #pi^{-}", fNOfBins, fMesonsEtaRangeMin, fMesonsEtaRangeMax);
684 CreateH1("NMesons_theta_sim", "#theta_{sim}, degrees", "number of lambda decay #pi^{-}", fNOfBins, fMesonsThetaRangeMin, fMesonsThetaRangeMax);
685 CreateH1("NMesons_theta_r_sim", "Y^{r}_{sim}, degrees", "number of lambda decay #pi^{-}", fNOfBins, fMesonsThetaRRangeMin, fMesonsThetaRRangeMax);
686 CreateH1("NRecMesons_P_sim", "P_{sim}, GeV/c", "number of reconstructable lambda decay #pi^{-}", fNOfBins, fMesonsPRangeMin, fMesonsPRangeMax);
687 CreateH1("NRecMesons_eta_sim", "#eta_{sim}", "number of reconstructable lambda decay #pi^{-}", fNOfBins, fMesonsEtaRangeMin, fMesonsEtaRangeMax);
688 CreateH1("NRecMesons_theta_sim", "#theta_{sim}, degrees", "number of reconstructable lambda decay #pi^{-}", fNOfBins, fMesonsThetaRangeMin, fMesonsThetaRangeMax);
689 CreateH1("NRecMesons_theta_r_sim", "Y^{r}_{sim}, degrees", "number of reconstructable lambda decay #pi^{-}", fNOfBins, fMesonsThetaRRangeMin, fMesonsThetaRRangeMax);
690}
691
692void BmnLambdaQa::CreateRecMesonsRecEfficiencyHistograms() {
693 CreateH1("simRecMesonsRecEff_P_sim", "P_{sim}, GeV/c", "geometrical efficiency, %", fNOfBins, fMesonsPRangeMin, fMesonsPRangeMax);
694 CreateH1("simRecMesonsRecEff_eta_sim", "#eta_{sim}", "geometrical efficiency, %", fNOfBins, fMesonsEtaRangeMin, fMesonsEtaRangeMax);
695 CreateH1("simRecMesonsRecEff_theta_sim", "#theta_{sim}, degrees", "geometrical efficiency, %", fNOfBins, fMesonsThetaRangeMin, fMesonsThetaRangeMax);
696 CreateH1("simRecMesonsRecEff_theta_r_sim", "Y^{r}_{sim}, degrees", "geometrical efficiency, %", fNOfBins, fMesonsThetaRRangeMin, fMesonsThetaRRangeMax);
697}
698
699void BmnLambdaQa::CreateTwoDimensionalRecMesonsRecEfficiencyHistograms() {
700 CreateH2("simNRecMesons_eta_P_sim", "P_{sim}, GeV/c", "#eta_{sim}", "number of lambda decay #pi^{-}", fNOfBins, fMesonsEtaRangeMin, fMesonsEtaRangeMax, fNOfBins, fMesonsPRangeMin, fMesonsPRangeMax);
701 CreateH2("simNReconstructableRecMesons_eta_P_sim", "P_{sim}, GeV/c", "#eta_{sim}", "number of lambda decay #pi^{-}", fNOfBins, fMesonsEtaRangeMin, fMesonsEtaRangeMax, fNOfBins, fMesonsPRangeMin, fMesonsPRangeMax);
702 CreateH2("simEffRecRecMesons_eta_P_sim", "P_{sim}, GeV/c", "#eta_{sim}", "geometrical efficiency, %", fNOfBins, fMesonsEtaRangeMin, fMesonsEtaRangeMax, fNOfBins, fMesonsPRangeMin, fMesonsPRangeMax);
703}
704
705void BmnLambdaQa::CreateNumberOfReconstrcutedLambdaHistograms() {
706 CreateH1("recNLambda_P_rec", "P_{sim}, GeV/c", "number of #Lambda^{0} reconstructed", fNOfBins, fLambdaPRangeMin, fLambdaPRangeMax);
707 CreateH1("recNLambda_theta_rec", "#theta_{sim}, degrees", "number of #Lambda^{0} reconstructed", fNOfBins, fLambdaThetaRangeMin, fLambdaThetaRangeMax);
708 CreateH1("recNLambda_eta_rec", "#eta_{sim}", "number of #Lambda^{0} reconstructed", fNOfBins, fLambdaEtaRangeMin, fLambdaEtaRangeMax);
709 CreateH1("recNLambda_theta_r_rec", "Y^{r}_{sim}", "number of #Lambda^{0} reconstructed", fNOfBins, fLambdaThetaRRangeMin, fLambdaThetaRRangeMax);
710}
711
712void BmnLambdaQa::CreateReconstructionEfficiencyHistograms() {
713 CreateH1("recEffLambda_P_rec", "P_{sim}, GeV/c", "reconstruction efficiency, %", fNOfBins, fLambdaPRangeMin, fLambdaPRangeMax);
714 CreateH1("recEffLambda_theta_rec", "#theta_{sim}, degrees", "reconstruction efficiency, %", fNOfBins, fLambdaThetaRangeMin, fLambdaThetaRangeMax);
715 CreateH1("recEffLambda_eta_rec", "#eta_{sim}", "reconstruction efficiency, %", fNOfBins, fLambdaEtaRangeMin, fLambdaEtaRangeMax);
716 CreateH1("recEffLambda_theta_r_rec", "Y^{r}_{sim}", "reconstruction efficiency, %", fNOfBins, fLambdaThetaRRangeMin, fLambdaThetaRRangeMax);
717}
718
719void BmnLambdaQa::CreateTwoDimensionalRealRecEfficiencyHistograms() {
720 CreateH2("recNLambda_eta_P_sim", "P_{sim}, GeV/c", "#eta_{sim}", "number of reconstructed #Lambda^{0}", fNOfBins, fLambdaEtaRangeMin, fLambdaEtaRangeMax, fNOfBins, fLambdaPRangeMin, fLambdaPRangeMax);
721 CreateH2("recEffRecLambda_eta_P_sim", "P_{sim}, GeV/c", "#eta_{sim}", "efficiency, %", fNOfBins, fLambdaEtaRangeMin, fLambdaEtaRangeMax, fNOfBins, fLambdaPRangeMin, fLambdaPRangeMax);
722}
723
724void BmnLambdaQa::CreateNumberOfReconstrcutedRecProtonHistograms() {
725 CreateH1("recNRecProtons_P_rec", "P_{sim}, GeV/c", "number of lambda decay p reconstructed", fNOfBins, fProtonsPRangeMin, fProtonsPRangeMax);
726 CreateH1("recNRecProtons_theta_rec", "#theta_{sim}, degrees", "number of lambda decay p reconstructed", fNOfBins, fProtonsThetaRangeMin, fProtonsThetaRangeMax);
727 CreateH1("recNRecProtons_eta_rec", "#eta_{sim}", "number of lambda decay p reconstructed", fNOfBins, fProtonsEtaRangeMin, fProtonsEtaRangeMax);
728 CreateH1("recNRecProtons_theta_r_rec", "Y^{r}_{sim}", "number of lambda decay p reconstructed", fNOfBins, fProtonsThetaRRangeMin, fProtonsThetaRRangeMax);
729}
730
731void BmnLambdaQa::CreateRecProtonsReconstructionEfficiencyHistograms() {
732 CreateH1("recEffRecProtons_P_rec", "P_{sim}, GeV/c", "reconstruction efficiency, %", fNOfBins, fProtonsPRangeMin, fProtonsPRangeMax);
733 CreateH1("recEffRecProtons_theta_rec", "#theta_{sim}, degrees", "reconstruction efficiency, %", fNOfBins, fProtonsThetaRangeMin, fProtonsThetaRangeMax);
734 CreateH1("recEffRecProtons_eta_rec", "#eta_{sim}", "reconstruction efficiency, %", fNOfBins, fProtonsEtaRangeMin, fProtonsEtaRangeMax);
735 CreateH1("recEffRecProtons_theta_r_rec", "Y^{r}_{sim}", "reconstruction efficiency, %", fNOfBins, fProtonsThetaRRangeMin, fProtonsThetaRRangeMax);
736}
737
738void BmnLambdaQa::CreateTwoDimensionalNumberOfReconstructedProtonsHistograms() {
739 CreateH2("recNRecProtons_eta_P_sim", "P_{sim}, GeV/c", "#eta_{sim}", "number of lambda decay p", fNOfBins, fProtonsEtaRangeMin, fProtonsEtaRangeMax, fNOfBins, fProtonsPRangeMin, fProtonsPRangeMax);
740 CreateH2("recEffRecProtons_eta_P_sim", "P_{sim}, GeV/c", "#eta_{sim}", "efficiency, %", fNOfBins, fProtonsEtaRangeMin, fProtonsEtaRangeMax, fNOfBins, fProtonsPRangeMin, fProtonsPRangeMax);
741}
742
743void BmnLambdaQa::CreateNumberOfReconstrcutedRecMesonsHistograms() {
744 CreateH1("recNRecMesons_P_rec", "P_{sim}, GeV/c", "number of lambda decay p reconstructed", fNOfBins, fMesonsPRangeMin, fMesonsPRangeMax);
745 CreateH1("recNRecMesons_theta_rec", "#theta_{sim}, degrees", "number of lambda decay p reconstructed", fNOfBins, fMesonsThetaRangeMin, fMesonsThetaRangeMax);
746 CreateH1("recNRecMesons_eta_rec", "#eta_{sim}", "number of lambda decay p reconstructed", fNOfBins, fMesonsEtaRangeMin, fMesonsEtaRangeMax);
747 CreateH1("recNRecMesons_theta_r_rec", "Y^{r}_{sim}", "number of lambda decay p reconstructed", fNOfBins, fMesonsThetaRRangeMin, fMesonsThetaRRangeMax);
748}
749
750void BmnLambdaQa::CreateRecMesonsReconstructionEfficiencyHistograms() {
751 CreateH1("recEffRecMesons_P_rec", "P_{sim}, GeV/c", "reconstruction efficiency, %", fNOfBins, fMesonsPRangeMin, fMesonsPRangeMax);
752 CreateH1("recEffRecMesons_theta_rec", "#theta_{sim}, degrees", "reconstruction efficiency, %", fNOfBins, fMesonsThetaRangeMin, fMesonsThetaRangeMax);
753 CreateH1("recEffRecMesons_eta_rec", "#eta_{sim}", "reconstruction efficiency, %", fNOfBins, fMesonsEtaRangeMin, fMesonsEtaRangeMax);
754 CreateH1("recEffRecMesons_theta_r_rec", "Y^{r}_{sim}", "reconstruction efficiency, %", fNOfBins, fMesonsThetaRRangeMin, fMesonsThetaRRangeMax);
755}
756
757void BmnLambdaQa::CreateTwoDimensionalNumberOfReconstructedMesonsHistograms() {
758 CreateH2("recNRecMesons_eta_P_sim", "P_{sim}, GeV/c", "#eta_{sim}", "number of lambda decay p", fNOfBins, fMesonsEtaRangeMin, fMesonsEtaRangeMax, fNOfBins, fMesonsPRangeMin, fMesonsPRangeMax);
759 CreateH2("recEffRecMesons_eta_P_sim", "P_{sim}, GeV/c", "#eta_{sim}", "efficiency, %", fNOfBins, fMesonsEtaRangeMin, fMesonsEtaRangeMax, fNOfBins, fMesonsPRangeMin, fMesonsPRangeMax);
760}
761
762void BmnLambdaQa::CreateReconstructedParticlePairsFromMCDataHistograms() {
763 CreateH1("NPairsRecoFromMCInvMass", "m_{inv}, GeV/c^2", "number of particle pairs", fNOfBins, 1.07, 1.22);
764}
765
766void BmnLambdaQa::CreateTwoDimensionalReconstructedParticlePairsFromMCDataHistograms() {
767 CreateH2("NPairsRecoFromMCInvMassMomProton", "P^{p}_{sim}, GeV/c", "m_{inv}, GeV/c^{2}", "number of particle pairs", fNOfBins, fProtonsPRangeMin, fProtonsPRangeMax, fNOfBins, fInvMassMin, fInvMassMax);
768 CreateH2("NPairsRecoFromMCInvMassEtaProton", "#eta^{p}_{sim}", "m_{inv}, GeV/c^{2}", "number of particle pairs", fNOfBins, fProtonsEtaRangeMin, fProtonsEtaRangeMax, fNOfBins, fInvMassMin, fInvMassMax);
769 CreateH2("NPairsRecoFromMCInvMassDCA1", "DCA^{p}, cm", "m_{inv}, GeV/c^{2}", "number of particle pairs", fNOfBins, fDCA1RangeMin, fDCA1RangeMax, fNOfBins, fInvMassMin, fInvMassMax);
770 CreateH2("NPairsRecoFromMCInvMassMomMeson", "P^{#pi^{-}}_{sim}, GeV/c", "m_{inv}, GeV/c^{2}", "number of particle pairs", fNOfBins, fMesonsPRangeMin, fMesonsPRangeMax, fNOfBins, fInvMassMin, fInvMassMax);
771 CreateH2("NPairsRecoFromMCInvMassEtaMeson", "#eta^{#pi^{-}}_{sim}", "m_{inv}, GeV/c^{2}", "number of particle pairs", fNOfBins, fMesonsEtaRangeMin, fMesonsEtaRangeMax, fNOfBins, fInvMassMin, fInvMassMax);
772 CreateH2("NPairsRecoFromMCInvMassDCA2", "DCA^{#pi^{-}}, cm", "m_{inv}, GeV/c^{2}", "number of particle pairs", fNOfBins, fDCA2RangeMin, fDCA2RangeMax, fNOfBins, fInvMassMin, fInvMassMax);
773 CreateH2("NPairsRecoFromMCInvMassDCA12X", "DCA12_{X}, cm", "m_{inv}, GeV/c^{2}", "number of particle pairs", fNOfBins, fDCA12XRangeMin, fDCA12XRangeMax, fNOfBins, fInvMassMin, fInvMassMax);
774 CreateH2("NPairsRecoFromMCInvMassDCA12Y", "DCA12_{Y}, cm", "m_{inv}, GeV/c^{2}", "number of particle pairs", fNOfBins, fDCA12YRangeMin, fDCA12YRangeMax, fNOfBins, fInvMassMin, fInvMassMax);
775 CreateH2("NPairsRecoFromMCInvMassDCA12XsubY", "|DCA12_{X} - DCA12_{Y}|, cm", "m_{inv}, GeV/c^{2}", "number of particle pairs", fNOfBins, fDCA12XRangeMin, fDCA12XRangeMax, fNOfBins, fInvMassMin, fInvMassMax);
776 CreateH2("NPairsRecoFromMCInvMassPath", "path, cm", "m_{inv}, GeV/c^{2}", "number of particle pairs", fNOfBins, fPathRangeMin, fPathRangeMax, fNOfBins, fInvMassMin, fInvMassMax);
777}
778
779void BmnLambdaQa::CreateReconstructedParticlePairsFromMCDataWOCutsHistograms() {
780 CreateH1("NPairsRecoFromMCWOCutsInvMass", "m_{inv}, GeV/c^2", "number of particle pairs", fNOfBins, 1.07, 1.22);
781}
782
783void BmnLambdaQa::CreateTwoDimensionalReconstructedParticlePairsFromMCDataWOCutsHistograms() {
784 CreateH2("NPairsRecoFromMCWOCutsInvMassMomProton", "P^{p}_{sim}, GeV/c", "m_{inv}, GeV/c^{2}", "number of particle pairs", fNOfBins, fProtonsPRangeMin, fProtonsPRangeMax, fNOfBins, fInvMassMin, fInvMassMax);
785 CreateH2("NPairsRecoFromMCWOCutsInvMassEtaProton", "#eta^{p}_{sim}", "m_{inv}, GeV/c^{2}", "number of particle pairs", fNOfBins, fProtonsEtaRangeMin, fProtonsEtaRangeMax, fNOfBins, fInvMassMin, fInvMassMax);
786 CreateH2("NPairsRecoFromMCWOCutsInvMassDCA1", "DCA^{p}, cm", "m_{inv}, GeV/c^{2}", "number of particle pairs", fNOfBins, fDCA1RangeMin, fDCA1RangeMax, fNOfBins, fInvMassMin, fInvMassMax);
787 CreateH2("NPairsRecoFromMCWOCutsInvMassMomMeson", "P^{#pi^{-}}_{sim}, GeV/c", "m_{inv}, GeV/c^{2}", "number of particle pairs", fNOfBins, fMesonsPRangeMin, fMesonsPRangeMax, fNOfBins, fInvMassMin, fInvMassMax);
788 CreateH2("NPairsRecoFromMCWOCutsInvMassEtaMeson", "#eta^{#pi^{-}}_{sim}", "m_{inv}, GeV/c^{2}", "number of particle pairs", fNOfBins, fMesonsEtaRangeMin, fMesonsEtaRangeMax, fNOfBins, fInvMassMin, fInvMassMax);
789 CreateH2("NPairsRecoFromMCWOCutsInvMassDCA2", "DCA^{#pi^{-}}, cm", "m_{inv}, GeV/c^{2}", "number of particle pairs", fNOfBins, fDCA2RangeMin, fDCA2RangeMax, fNOfBins, fInvMassMin, fInvMassMax);
790 CreateH2("NPairsRecoFromMCWOCutsInvMassDCA12X", "DCA12_{X}, cm", "m_{inv}, GeV/c^{2}", "number of particle pairs", fNOfBins, fDCA12XRangeMin, fDCA12XRangeMax, fNOfBins, fInvMassMin, fInvMassMax);
791 CreateH2("NPairsRecoFromMCWOCutsInvMassDCA12Y", "DCA12_{Y}, cm", "m_{inv}, GeV/c^{2}", "number of particle pairs", fNOfBins, fDCA12YRangeMin, fDCA12YRangeMax, fNOfBins, fInvMassMin, fInvMassMax);
792 CreateH2("NPairsRecoFromMCWOCutsInvMassDCA12XsubY", "|DCA12_{X} - DCA12_{Y}|, cm", "m_{inv}, GeV/c^{2}", "number of particle pairs", fNOfBins, fDCA12XRangeMin, fDCA12XRangeMax, fNOfBins, fInvMassMin, fInvMassMax);
793 CreateH2("NPairsRecoFromMCWOCutsInvMassPath", "path, cm", "m_{inv}, GeV/c^{2}", "number of particle pairs", fNOfBins, fPathRangeMin, fPathRangeMax, fNOfBins, fInvMassMin, fInvMassMax);
794}
795
796void BmnLambdaQa::CreateNumberOfNotReconstructedLambdaHistograms() {
797 CreateH1("recNNotRecLambda_P_rec", "P_{sim}, GeV/c", "number of #Lambda^{0} not reconstructed", fNOfBins, fLambdaPRangeMin, fLambdaPRangeMax);
798 CreateH1("recNNotRecLambda_theta_rec", "#theta_{sim}, degrees", "number of #Lambda^{0} not reconstructed", fNOfBins, fLambdaThetaRangeMin, fLambdaThetaRangeMax);
799 CreateH1("recNNotRecLambda_eta_rec", "#eta_{sim}", "number of #Lambda^{0} not reconstructed", fNOfBins, fLambdaEtaRangeMin, fLambdaEtaRangeMax);
800 CreateH1("recNNotRecLambda_theta_r_rec", "Y^{r}_{sim}", "number of #Lambda^{0} not reconstructed", fNOfBins, fLambdaThetaRRangeMin, fLambdaThetaRRangeMax);
801}
802
803void BmnLambdaQa::CreateReconstructedParticlePairsHistograms() {
804 CreateH1("NPairsRecoInvMass", "m_{inv}, GeV/c^2", "number of particle pairs", fNOfBins, fInvMassMin, fInvMassMax);
805}
806
807void BmnLambdaQa::CreateTwoDimensionalReconstructedParticlePairsHistograms() {
808 CreateH2("NPairsRecoInvMassMomProton", "P^{p}_{reco}, GeV/c", "m_{inv}, GeV/c^{2}", "number of particle pairs", fNOfBins, fProtonsPRangeMin, fProtonsPRangeMax, fNOfBins, fInvMassMin, fInvMassMax);
809 CreateH2("NPairsRecoInvMassEtaProton", "#eta^{p}_{reco}", "m_{inv}, GeV/c^{2}", "number of particle pairs", fNOfBins, fProtonsEtaRangeMin, fProtonsEtaRangeMax, fNOfBins, fInvMassMin, fInvMassMax);
810 CreateH2("NPairsRecoInvMassDCA1", "DCA^{p}, cm", "m_{inv}, GeV/c^{2}", "number of particle pairs", fNOfBins, fDCA1RangeMin, fDCA1RangeMax, fNOfBins, fInvMassMin, fInvMassMax);
811 CreateH2("NPairsRecoInvMassMomMeson", "P^{#pi^{-}}_{reco}, GeV/c", "m_{inv}, GeV/c^{2}", "number of particle pairs", fNOfBins, fMesonsPRangeMin, fMesonsPRangeMax, fNOfBins, fInvMassMin, fInvMassMax);
812 CreateH2("NPairsRecoInvMassEtaMeson", "#eta^{#pi^{-}}_{reco}", "m_{inv}, GeV/c^{2}", "number of particle pairs", fNOfBins, fMesonsEtaRangeMin, fMesonsEtaRangeMax, fNOfBins, fInvMassMin, fInvMassMax);
813 CreateH2("NPairsRecoInvMassDCA2", "DCA^{#pi^{-}}, cm", "m_{inv}, GeV/c^{2}", "number of particle pairs", fNOfBins, fDCA2RangeMin, fDCA2RangeMax, fNOfBins, fInvMassMin, fInvMassMax);
814 CreateH2("NPairsRecoInvMassDCA12X", "DCA12_{X}, cm", "m_{inv}, GeV/c^{2}", "number of particle pairs", fNOfBins, fDCA12XRangeMin, fDCA12XRangeMax, fNOfBins, fInvMassMin, fInvMassMax);
815 CreateH2("NPairsRecoInvMassDCA12Y", "DCA12_{Y}, cm", "m_{inv}, GeV/c^{2}", "number of particle pairs", fNOfBins, fDCA12YRangeMin, fDCA12YRangeMax, fNOfBins, fInvMassMin, fInvMassMax);
816 CreateH2("NPairsRecoInvMassDCA12XsubY", "|DCA12_{X} - DCA12_{Y}|, cm", "m_{inv}, GeV/c^{2}", "number of particle pairs", fNOfBins, fDCA12XRangeMin, fDCA12XRangeMax, fNOfBins, fInvMassMin, fInvMassMax);
817 CreateH2("NPairsRecoInvMassPath", "path, cm", "m_{inv}, GeV/c^{2}", "number of particle pairs", fNOfBins, fPathRangeMin, fPathRangeMax, fNOfBins, fInvMassMin, fInvMassMax);
818}
819
820void BmnLambdaQa::CreateReconstructedParticlePairsWOCutsHistograms() {
821 CreateH1("NPairsRecoInvMassWOCuts", "m_{inv}, GeV/c^2", "number of particle pairs", fNOfBins, fInvMassMin, fInvMassMax);
822}
823
824void BmnLambdaQa::CreateTwoDimensionalReconstructedParticlePairsWOCutsHistograms() {
825 CreateH2("NPairsRecoInvMassMomProtonWOCuts", "P^{p}_{reco}, GeV/c", "m_{inv}, GeV/c^{2}", "number of particle pairs", fNOfBins, fProtonsPRangeMin, fProtonsPRangeMax, fNOfBins, fInvMassMin, fInvMassMax);
826 CreateH2("NPairsRecoInvMassEtaProtonWOCuts", "#eta^{p}_{reco}", "m_{inv}, GeV/c^{2}", "number of particle pairs", fNOfBins, fProtonsEtaRangeMin, fProtonsEtaRangeMax, fNOfBins, fInvMassMin, fInvMassMax);
827 CreateH2("NPairsRecoInvMassDCA1WOCuts", "DCA^{p}, cm", "m_{inv}, GeV/c^{2}", "number of particle pairs", fNOfBins, fDCA1RangeMin, fDCA1RangeMax, fNOfBins, fInvMassMin, fInvMassMax);
828 CreateH2("NPairsRecoInvMassMomMesonWOCuts", "P^{#pi^{-}}_{reco}, GeV/c", "m_{inv}, GeV/c^{2}", "number of particle pairs", fNOfBins, fMesonsPRangeMin, fMesonsPRangeMax, fNOfBins, fInvMassMin, fInvMassMax);
829 CreateH2("NPairsRecoInvMassEtaMesonWOCuts", "#eta^{#pi^{-}}_{reco}", "m_{inv}, GeV/c^{2}", "number of particle pairs", fNOfBins, fMesonsEtaRangeMin, fMesonsEtaRangeMax, fNOfBins, fInvMassMin, fInvMassMax);
830 CreateH2("NPairsRecoInvMassDCA2WOCuts", "DCA^{#pi^{-}}, cm", "m_{inv}, GeV/c^{2}", "number of particle pairs", fNOfBins, fDCA2RangeMin, fDCA2RangeMax, fNOfBins, fInvMassMin, fInvMassMax);
831 CreateH2("NPairsRecoInvMassDCA12XWOCuts", "DCA12_{X}, cm", "m_{inv}, GeV/c^{2}", "number of particle pairs", fNOfBins, fDCA12XRangeMin, fDCA12XRangeMax, fNOfBins, fInvMassMin, fInvMassMax);
832 CreateH2("NPairsRecoInvMassDCA12YWOCuts", "DCA12_{Y}, cm", "m_{inv}, GeV/c^{2}", "number of particle pairs", fNOfBins, fDCA12YRangeMin, fDCA12YRangeMax, fNOfBins, fInvMassMin, fInvMassMax);
833 CreateH2("NPairsRecoInvMassDCA12XsubYWOCuts", "|DCA12_{X} - DCA12_{Y}|, cm", "m_{inv}, GeV/c^{2}", "number of particle pairs", fNOfBins, fDCA12XRangeMin, fDCA12XRangeMax, fNOfBins, fInvMassMin, fInvMassMax);
834 CreateH2("NPairsRecoInvMassPathWOCuts", "path, cm", "m_{inv}, GeV/c^{2}", "number of particle pairs", fNOfBins, fPathRangeMin, fPathRangeMax, fNOfBins, fInvMassMin, fInvMassMax);
835}
int i
Definition P4_F32vec4.h:22
visualising simulated lambda reconstruction performance calculation.
FairTask for MC simulated lambda reconstruction performance calculation.
@ kGEM
Histogram manager.
void Add(const TString &name, TNamed *object)
Add new named object to manager.
TH2 * H2(const TString &name) const
Return pointer to TH2 histogram.
void WriteToFile()
Write all histograms to current opened file.
TH1 * H1(const TString &name) const
Return pointer to TH1 histogram.
virtual ~BmnLambdaQa()
Destructor.
virtual void Finish()
Derived from FairTask.
virtual InitStatus Init()
Derived from FairTask.
virtual void Exec(Option_t *opt)
Derived from FairTask.
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.
Long64_t GetNPoints(DetectorId detId) const
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
Definition CbmMCTrack.h:56
name
Definition setup.py:7