@@ -262,14 +262,21 @@ struct TauThreeProngEventTableProducer {
262262 registrySkim.add (" skim/nTof" , " ;N_{TOFtrk};events" , {HistType::kTH1F , {{10 , -1 ., 9 .}}});
263263 }
264264 if (doprocessMonteCarlo) {
265- registrySkim.add (" skim/efficiencyMC" , " ;efficeincy ;events" , {HistType::kTH1D , {{10 , 0 ., 10 .}}});
265+ registrySkim.add (" skim/efficiencyMC" , " ;efficiency ;events" , {HistType::kTH1D , {{15 , 0 ., 15 .}}});
266266 registrySkim.get <TH1 >(HIST (" skim/efficiencyMC" ))->GetXaxis ()->SetBinLabel (1 , " 1: All" );
267267 registrySkim.get <TH1 >(HIST (" skim/efficiencyMC" ))->GetXaxis ()->SetBinLabel (2 , " 2: N^{#tau}=2" );
268268 registrySkim.get <TH1 >(HIST (" skim/efficiencyMC" ))->GetXaxis ()->SetBinLabel (3 , " 3: |y^{#tau}| <= 0.9" );
269269 registrySkim.get <TH1 >(HIST (" skim/efficiencyMC" ))->GetXaxis ()->SetBinLabel (4 , " 4: |#eta^{ch}|<0.9" );
270270 registrySkim.get <TH1 >(HIST (" skim/efficiencyMC" ))->GetXaxis ()->SetBinLabel (5 , " 5: 4 or 6 trk" );
271- registrySkim.get <TH1 >(HIST (" skim/efficiencyMC" ))->GetXaxis ()->SetBinLabel (6 , " 6: 4 trk" );
272- registrySkim.get <TH1 >(HIST (" skim/efficiencyMC" ))->GetXaxis ()->SetBinLabel (7 , " 7: 6 trk" );
271+ registrySkim.get <TH1 >(HIST (" skim/efficiencyMC" ))->GetXaxis ()->SetBinLabel (6 , " e+3#pi" );
272+ registrySkim.get <TH1 >(HIST (" skim/efficiencyMC" ))->GetXaxis ()->SetBinLabel (7 , " #mu+3#pi" );
273+ registrySkim.get <TH1 >(HIST (" skim/efficiencyMC" ))->GetXaxis ()->SetBinLabel (8 , " #pi+3#pi" );
274+ registrySkim.get <TH1 >(HIST (" skim/efficiencyMC" ))->GetXaxis ()->SetBinLabel (9 , " 6#pi" );
275+ registrySkim.get <TH1 >(HIST (" skim/efficiencyMC" ))->GetXaxis ()->SetBinLabel (10 , " rec" );
276+ registrySkim.get <TH1 >(HIST (" skim/efficiencyMC" ))->GetXaxis ()->SetBinLabel (11 , " rec e+3#pi" );
277+ registrySkim.get <TH1 >(HIST (" skim/efficiencyMC" ))->GetXaxis ()->SetBinLabel (12 , " rec #mu+3#pi" );
278+ registrySkim.get <TH1 >(HIST (" skim/efficiencyMC" ))->GetXaxis ()->SetBinLabel (13 , " rec #pi+3#pi" );
279+ registrySkim.get <TH1 >(HIST (" skim/efficiencyMC" ))->GetXaxis ()->SetBinLabel (14 , " rec 6#pi" );
273280
274281 registrySkim.add (" skim/problemMC" , " ;problem;events" , {HistType::kTH1D , {{10 , 0 ., 10 .}}});
275282
@@ -280,13 +287,14 @@ struct TauThreeProngEventTableProducer {
280287 registrySkim.add (" skim/tauPtMC" , " ;p_{T}^{#tau};events" , {HistType::kTH1F , {{100 , 0 , 5 .}}});
281288 registrySkim.add (" skim/tauDeltaEtaMC" , " ;#Delta#eta^{#tau};events " , {HistType::kTH1F , {{100 , -5 ., 5 .}}});
282289 registrySkim.add (" skim/tauDeltaPhiMC" , " ;#Delta#phi^{#tau}(deg.);events" , {HistType::kTH1F , {{100 , 131 ., 181 }}});
290+ registrySkim.add (" skim/ditauInvMassMC" , " ;M_{inv}^{#tau#tau}(GeV/#it{c}^{2});events" , {HistType::kTH1F , {{100 , 3.4 , 13.4 }}});
283291 registrySkim.add (" skim/nChPartMC" , " ;N^{ch. part};events" , {HistType::kTH1F , {{10 , 0 , 10 .}}});
284292 registrySkim.add (" skim/daughterPhiMC" , " ;#phi^{daughter};events" , {HistType::kTH1F , {{100 , 0 , 6.4 }}});
285293 registrySkim.add (" skim/daughterEtaMC" , " ;#eta^{daughter};events" , {HistType::kTH1F , {{100 , -4 ., 4 .}}});
286294 registrySkim.add (" skim/daughterPtMC" , " ;p_{T}^{daughter};events" , {HistType::kTH1F , {{100 , 0 , 5.0 }}});
287295 }
288296 if (doprocessGenerated) {
289- registrySkim.add (" gen/efficiencyMC" , " ;efficeincy ;events" , {HistType::kTH1D , {{10 , 0 ., 10 .}}});
297+ registrySkim.add (" gen/efficiencyMC" , " ;efficiency ;events" , {HistType::kTH1D , {{15 , 0 ., 15 .}}});
290298 registrySkim.get <TH1 >(HIST (" gen/efficiencyMC" ))->GetXaxis ()->SetBinLabel (1 , " All" );
291299 registrySkim.get <TH1 >(HIST (" gen/efficiencyMC" ))->GetXaxis ()->SetBinLabel (2 , " N^{#tau}=2" );
292300 registrySkim.get <TH1 >(HIST (" gen/efficiencyMC" ))->GetXaxis ()->SetBinLabel (3 , " |y^{#tau}| <=0.9" );
@@ -299,6 +307,10 @@ struct TauThreeProngEventTableProducer {
299307 registrySkim.get <TH1 >(HIST (" gen/efficiencyMC" ))->GetXaxis ()->SetBinLabel (8 , " #pi+3#pi" );
300308 registrySkim.get <TH1 >(HIST (" gen/efficiencyMC" ))->GetXaxis ()->SetBinLabel (9 , " 6#pi" );
301309 registrySkim.get <TH1 >(HIST (" gen/efficiencyMC" ))->GetXaxis ()->SetBinLabel (10 , " rec" );
310+ registrySkim.get <TH1 >(HIST (" gen/efficiencyMC" ))->GetXaxis ()->SetBinLabel (11 , " rec e+3#pi" );
311+ registrySkim.get <TH1 >(HIST (" gen/efficiencyMC" ))->GetXaxis ()->SetBinLabel (12 , " rec #mu+3#pi" );
312+ registrySkim.get <TH1 >(HIST (" gen/efficiencyMC" ))->GetXaxis ()->SetBinLabel (13 , " rec #pi+3#pi" );
313+ registrySkim.get <TH1 >(HIST (" gen/efficiencyMC" ))->GetXaxis ()->SetBinLabel (14 , " rec 6#pi" );
302314
303315 registrySkim.add (" gen/problemMC" , " ;problem;events" , {HistType::kTH1D , {{10 , 0 ., 10 .}}});
304316 registrySkim.get <TH1 >(HIST (" gen/problemMC" ))->GetXaxis ()->SetBinLabel (1 , " 1: NoProblem" );
@@ -315,6 +327,7 @@ struct TauThreeProngEventTableProducer {
315327 registrySkim.add (" gen/tauPtMC" , " ;p_{T}^{#tau};events" , {HistType::kTH1F , {{100 , 0 , 5 .}}});
316328 registrySkim.add (" gen/tauDeltaEtaMC" , " ;#Delta#eta^{#tau};events " , {HistType::kTH1F , {{100 , -5 ., 5 .}}});
317329 registrySkim.add (" gen/tauDeltaPhiMC" , " ;#Delta#phi^{#tau}(deg.);events" , {HistType::kTH1F , {{100 , 131 ., 181 }}});
330+ registrySkim.add (" gen/ditauInvMassMC" , " ;M_{inv}^{#tau#tau}(GeV/#it{c}^{2});events" , {HistType::kTH1F , {{100 , 3.4 , 13.4 }}});
318331 registrySkim.add (" gen/nChPartMC" , " ;N^{ch. part};events" , {HistType::kTH1F , {{10 , 0 , 10 .}}});
319332 registrySkim.add (" gen/daughterPhiMC" , " ;#phi^{daughter};events" , {HistType::kTH1F , {{100 , 0 , 6.4 }}});
320333 registrySkim.add (" gen/daughterEtaMC" , " ;#eta^{daughter};events" , {HistType::kTH1F , {{100 , -4 ., 4 .}}});
@@ -1212,6 +1225,13 @@ struct TauThreeProngEventTableProducer {
12121225 registrySkim.get <TH1 >(HIST (" skim/tauDeltaEtaMC" ))->Fill (trueTauEta[0 ] - trueTauEta[1 ]);
12131226 registrySkim.get <TH1 >(HIST (" skim/tauDeltaPhiMC" ))->Fill (calculateDeltaPhi (trueTauPhi[0 ], trueTauPhi[1 ]) * 180 . / o2::constants::math::PI );
12141227
1228+ // inv mass of two taus
1229+ ROOT ::Math::LorentzVector<ROOT ::Math::PxPyPzE4D<double >> tau1;
1230+ ROOT ::Math::LorentzVector<ROOT ::Math::PxPyPzE4D<double >> tau2;
1231+ tau1.SetXYZT (trueTauX[0 ], trueTauY[0 ], trueTauZ[0 ], RecoDecay::e (trueTauX[0 ], trueTauY[0 ], trueTauZ[0 ], MassTauPlus));
1232+ tau2.SetXYZT (trueTauX[1 ], trueTauY[1 ], trueTauZ[1 ], RecoDecay::e (trueTauX[1 ], trueTauY[1 ], trueTauZ[1 ], MassTauPlus));
1233+ registrySkim.get <TH1 >(HIST (" skim/ditauInvMassMC" ))->Fill ((tau1 + tau2).M ());
1234+
12151235 registrySkim.get <TH1 >(HIST (" skim/efficiencyMC" ))->Fill (2 ., 1 .); // |y_tau| <= 0.9
12161236 countMothers = 0 ;
12171237 int nChargedDaughtersTau[2 ] = {0 , 0 };
@@ -1385,6 +1405,17 @@ struct TauThreeProngEventTableProducer {
13851405 if (verbose)
13861406 LOGF (info, " --- MC Collision has reconstructed collision!" );
13871407 registrySkim.get <TH1 >(HIST (" skim/efficiencyMC" ))->Fill (9 ., 1 .);
1408+ // reconstruction in a given channel
1409+ if (nElec == oneProng && nPi == threeProng) { // 1 + 3
1410+ registrySkim.get <TH1 >(HIST (" skim/efficiencyMC" ))->Fill (10 ., 1 .);
1411+ } else if (nMuon == oneProng && nPi == threeProng) { // 1 + 3
1412+ registrySkim.get <TH1 >(HIST (" skim/efficiencyMC" ))->Fill (11 ., 1 .);
1413+ } else if (nPi == fourTracks) { // 4
1414+ registrySkim.get <TH1 >(HIST (" skim/efficiencyMC" ))->Fill (12 ., 1 .);
1415+ } else if (nPi == sixTracks) { // 6
1416+ registrySkim.get <TH1 >(HIST (" skim/efficiencyMC" ))->Fill (13 ., 1 .);
1417+ }
1418+
13881419 // trueHasRecoColl = true;
13891420 // check there is exactly one reco-level collision associated to generated collision
13901421 if (collFromMcColls.size () > 1 ) {
@@ -1641,7 +1672,7 @@ struct TauThreeProngEventTableProducer {
16411672 trueChannel,
16421673 // trueHasRecoColl,
16431674 mccoll.posZ (),
1644- trueTauX, trueTauY, trueTauZ,
1675+ // trueTauX, trueTauY, trueTauZ,
16451676 trueDaugX, trueDaugY, trueDaugZ,
16461677 trueDaugPdgCode, problem);
16471678 } else if (nChargedDaughtersTau[0 ] + nChargedDaughtersTau[1 ] == sixTracks) { // 6
@@ -1673,7 +1704,7 @@ struct TauThreeProngEventTableProducer {
16731704 trueChannel,
16741705 // trueHasRecoColl,
16751706 mccoll.posZ (),
1676- trueTauX, trueTauY, trueTauZ,
1707+ // trueTauX, trueTauY, trueTauZ,
16771708 trueDaugX, trueDaugY, trueDaugZ,
16781709 trueDaugPdgCode, problem);
16791710 } // end of saving the output
@@ -1795,6 +1826,13 @@ struct TauThreeProngEventTableProducer {
17951826 registrySkim.get <TH1 >(HIST (" gen/tauDeltaEtaMC" ))->Fill (trueTauEta[0 ] - trueTauEta[1 ]);
17961827 registrySkim.get <TH1 >(HIST (" gen/tauDeltaPhiMC" ))->Fill (calculateDeltaPhi (trueTauPhi[0 ], trueTauPhi[1 ]) * 180 . / o2::constants::math::PI );
17971828
1829+ // inv mass of two taus
1830+ ROOT ::Math::LorentzVector<ROOT ::Math::PxPyPzE4D<double >> tau1;
1831+ ROOT ::Math::LorentzVector<ROOT ::Math::PxPyPzE4D<double >> tau2;
1832+ tau1.SetXYZT (trueTauX[0 ], trueTauY[0 ], trueTauZ[0 ], RecoDecay::e (trueTauX[0 ], trueTauY[0 ], trueTauZ[0 ], MassTauPlus));
1833+ tau2.SetXYZT (trueTauX[1 ], trueTauY[1 ], trueTauZ[1 ], RecoDecay::e (trueTauX[1 ], trueTauY[1 ], trueTauZ[1 ], MassTauPlus));
1834+ registrySkim.get <TH1 >(HIST (" gen/ditauInvMassMC" ))->Fill ((tau1 + tau2).M ());
1835+
17981836 registrySkim.get <TH1 >(HIST (" gen/efficiencyMC" ))->Fill (2 ., 1 .); // |y_tau| <= 0.9
17991837 countMothers = 0 ;
18001838 int nChargedDaughtersTau[2 ] = {0 , 0 };
@@ -1954,6 +1992,18 @@ struct TauThreeProngEventTableProducer {
19541992 registrySkim.get <TH1 >(HIST (" gen/efficiencyMC" ))->Fill (9 ., 1 .);
19551993 if (verbose)
19561994 LOGF (info, " --- MC Collision has reconstructed collision!" );
1995+
1996+ // reconstruction in a given channel
1997+ if (nElec == oneProng && nPi == threeProng) { // 1 + 3
1998+ registrySkim.get <TH1 >(HIST (" gen/efficiencyMC" ))->Fill (10 ., 1 .);
1999+ } else if (nMuon == oneProng && nPi == threeProng) { // 1 + 3
2000+ registrySkim.get <TH1 >(HIST (" gen/efficiencyMC" ))->Fill (11 ., 1 .);
2001+ } else if (nPi == fourTracks) { // 4
2002+ registrySkim.get <TH1 >(HIST (" gen/efficiencyMC" ))->Fill (12 ., 1 .);
2003+ } else if (nPi == sixTracks) { // 6
2004+ registrySkim.get <TH1 >(HIST (" gen/efficiencyMC" ))->Fill (13 ., 1 .);
2005+ }
2006+
19572007 } else { // get only the truth information.
19582008 if (verbose)
19592009 LOGF (info, " MC Collision has NO reconstructed collision!" );
@@ -1965,17 +2015,19 @@ struct TauThreeProngEventTableProducer {
19652015 genTauFourTracks (
19662016 trueChannel,
19672017 mccoll.posZ (),
1968- trueTauX, trueTauY, trueTauZ,
2018+ // trueTauX, trueTauY, trueTauZ,
19692019 trueDaugX, trueDaugY, trueDaugZ,
1970- trueDaugPdgCode, problem,
2020+ trueDaugPdgCode,
2021+ problem,
19712022 trueHasRecoColl);
19722023 } else if (nChargedDaughtersTau[0 ] + nChargedDaughtersTau[1 ] == sixTracks) { // 6
19732024 genTauSixTracks (
19742025 trueChannel,
19752026 mccoll.posZ (),
1976- trueTauX, trueTauY, trueTauZ,
2027+ // trueTauX, trueTauY, trueTauZ,
19772028 trueDaugX, trueDaugY, trueDaugZ,
1978- trueDaugPdgCode, problem,
2029+ trueDaugPdgCode,
2030+ problem,
19792031 trueHasRecoColl);
19802032 } // end of writing output
19812033
0 commit comments