@@ -84,6 +84,9 @@ DECLARE_SOA_COLUMN(massBcandidate, MBcandidate, float);
8484DECLARE_SOA_COLUMN (MassDileptonCandidate, massDileptonCandidate, float );
8585DECLARE_SOA_COLUMN (deltaMassBcandidate, deltaMBcandidate, float );
8686DECLARE_SOA_COLUMN (pTBcandidate, PtBcandidate, float );
87+ DECLARE_SOA_COLUMN (EtaBcandidate, etaBcandidate, float );
88+ DECLARE_SOA_COLUMN (PhiBcandidate, phiBcandidate, float );
89+ DECLARE_SOA_COLUMN (RapBcandidate, rapBcandidate, float );
8790DECLARE_SOA_COLUMN (LxyBcandidate, lxyBcandidate, float );
8891DECLARE_SOA_COLUMN (LxyzBcandidate, lxyzBcandidate, float );
8992DECLARE_SOA_COLUMN (LzBcandidate, lzBcandidate, float );
@@ -118,12 +121,6 @@ DECLARE_SOA_COLUMN(TPCnsigmaPrleg1, tpcnsigmaPrleg1, float);
118121DECLARE_SOA_COLUMN (TPCnsigmaElleg2, tpcnsigmaElleg2, float );
119122DECLARE_SOA_COLUMN (TPCnsigmaPileg2, tpcnsigmaPileg2, float );
120123DECLARE_SOA_COLUMN (TPCnsigmaPrleg2, tpcnsigmaPrleg2, float );
121- DECLARE_SOA_COLUMN (DCAXYassoc, dcaXYassoc, float );
122- DECLARE_SOA_COLUMN (DCAZassoc, dcaZassoc, float );
123- DECLARE_SOA_COLUMN (DCAXYleg1, dcaXYleg1, float );
124- DECLARE_SOA_COLUMN (DCAZleg1, dcaZleg1, float );
125- DECLARE_SOA_COLUMN (DCAXYleg2, dcaXYleg2, float );
126- DECLARE_SOA_COLUMN (DCAZleg2, dcaZleg2, float );
127124DECLARE_SOA_COLUMN (ITSClusterMapassoc, itsClusterMapassoc, uint8_t );
128125DECLARE_SOA_COLUMN (ITSClusterMapleg1, itsClusterMapleg1, uint8_t );
129126DECLARE_SOA_COLUMN (ITSClusterMapleg2, itsClusterMapleg2, uint8_t );
@@ -173,7 +170,7 @@ DECLARE_SOA_TABLE(MuonAmbiguities, "AOD", "DQMUONAMB", dqanalysisflags::MuonAmbi
173170DECLARE_SOA_TABLE (Prefilter, " AOD" , " DQPREFILTER" , dqanalysisflags::IsBarrelSelectedPrefilter); // ! joinable to ReducedTracksAssoc
174171DECLARE_SOA_TABLE (BmesonCandidates, " AOD" , " DQBMESONS" ,
175172 dqanalysisflags::RunNumber, dqanalysisflags::EventIdx, dqanalysisflags::EventTimestamp,
176- dqanalysisflags::massBcandidate, dqanalysisflags::MassDileptonCandidate, dqanalysisflags::deltaMassBcandidate, dqanalysisflags::pTBcandidate,
173+ dqanalysisflags::massBcandidate, dqanalysisflags::MassDileptonCandidate, dqanalysisflags::deltaMassBcandidate, dqanalysisflags::pTBcandidate, dqanalysisflags::EtaBcandidate, dqanalysisflags::PhiBcandidate, dqanalysisflags::RapBcandidate,
177174 dqanalysisflags::LxyBcandidate, dqanalysisflags::LxyzBcandidate, dqanalysisflags::LzBcandidate,
178175 dqanalysisflags::TauxyBcandidate, dqanalysisflags::TauzBcandidate, dqanalysisflags::CosPBcandidate, dqanalysisflags::Chi2Bcandidate,
179176 dqanalysisflags::GlobalIndexassoc, dqanalysisflags::GlobalIndexleg1, dqanalysisflags::GlobalIndexleg2,
@@ -182,7 +179,6 @@ DECLARE_SOA_TABLE(BmesonCandidates, "AOD", "DQBMESONS",
182179 dqanalysisflags::TPCnsigmaKaassoc, dqanalysisflags::TPCnsigmaPiassoc, dqanalysisflags::TPCnsigmaPrassoc, dqanalysisflags::TOFnsigmaKaassoc,
183180 dqanalysisflags::TPCnsigmaElleg1, dqanalysisflags::TPCnsigmaPileg1, dqanalysisflags::TPCnsigmaPrleg1,
184181 dqanalysisflags::TPCnsigmaElleg2, dqanalysisflags::TPCnsigmaPileg2, dqanalysisflags::TPCnsigmaPrleg2,
185- dqanalysisflags::DCAXYassoc, dqanalysisflags::DCAZassoc, dqanalysisflags::DCAXYleg1, dqanalysisflags::DCAZleg1, dqanalysisflags::DCAXYleg2, dqanalysisflags::DCAZleg2,
186182 dqanalysisflags::ITSClusterMapassoc, dqanalysisflags::ITSClusterMapleg1, dqanalysisflags::ITSClusterMapleg2,
187183 dqanalysisflags::ITSChi2assoc, dqanalysisflags::ITSChi2leg1, dqanalysisflags::ITSChi2leg2,
188184 dqanalysisflags::TPCNclsassoc, dqanalysisflags::TPCNclsleg1, dqanalysisflags::TPCNclsleg2,
@@ -3803,7 +3799,10 @@ struct AnalysisDileptonTrack {
38033799 DefineHistograms (fHistMan , Form (" MCTruthGen_%s" , sig->GetName ()), " " );
38043800 DefineHistograms (fHistMan , Form (" MCTruthGenSel_%s" , sig->GetName ()), " " );
38053801 }
3806- DefineHistograms (fHistMan , " MCTruthGenAccepted" , " " );
3802+ for (auto & sig : fRecMCSignals ) {
3803+ DefineHistograms (fHistMan , Form (" MCTruthGenSelBR_%s" , sig->GetName ()), " " );
3804+ DefineHistograms (fHistMan , Form (" MCTruthGenSelBRAccepted_%s" , sig->GetName ()), " " );
3805+ }
38073806 }
38083807
38093808 TString addHistsStr = fConfigAddJSONHistograms .value ;
@@ -3929,7 +3928,7 @@ struct AnalysisDileptonTrack {
39293928 }
39303929 // table to be written out for ML analysis
39313930 BmesonsTable (event.runNumber (), event.globalIndex (), event.timestamp (),
3932- fValuesHadron [VarManager::kPairMass ], dilepton.mass (), fValuesHadron [VarManager::kDeltaMass ], fValuesHadron [VarManager::kPairPt ],
3931+ fValuesHadron [VarManager::kPairMass ], dilepton.mass (), fValuesHadron [VarManager::kDeltaMass ], fValuesHadron [VarManager::kPairPt ], fValuesHadron [VarManager:: kPairEta ], fValuesHadron [VarManager:: kPairPhi ], fValuesHadron [VarManager:: kPairRap ],
39333932 fValuesHadron [VarManager::kVertexingLxy ], fValuesHadron [VarManager::kVertexingLxyz ], fValuesHadron [VarManager::kVertexingLz ],
39343933 fValuesHadron [VarManager::kVertexingTauxy ], fValuesHadron [VarManager::kVertexingTauz ], fValuesHadron [VarManager::kCosPointingAngle ],
39353934 fValuesHadron [VarManager::kVertexingChi2PCA ],
@@ -3938,7 +3937,6 @@ struct AnalysisDileptonTrack {
39383937 track.tpcNSigmaKa (), track.tpcNSigmaPi (), track.tpcNSigmaPr (), track.tofNSigmaKa (),
39393938 lepton1.tpcNSigmaEl (), lepton1.tpcNSigmaPi (), lepton1.tpcNSigmaPr (),
39403939 lepton2.tpcNSigmaEl (), lepton2.tpcNSigmaPi (), lepton2.tpcNSigmaPr (),
3941- track.dcaXY (), track.dcaZ (), lepton1.dcaXY (), lepton1.dcaZ (), lepton2.dcaXY (), lepton2.dcaZ (),
39423940 track.itsClusterMap (), lepton1.itsClusterMap (), lepton2.itsClusterMap (),
39433941 track.itsChi2NCl (), lepton1.itsChi2NCl (), lepton2.itsChi2NCl (),
39443942 track.tpcNClsFound (), lepton1.tpcNClsFound (), lepton2.tpcNClsFound (),
@@ -4209,40 +4207,44 @@ struct AnalysisDileptonTrack {
42094207 }
42104208 }
42114209
4212- /* for (auto& [t1, t2, t3] : combinations(groupedMCTracks, groupedMCTracks, groupedMCTracks)) {
4210+ // make a list of all MC tracks in the MC collision corresponding to the current reconstructed event
4211+ std::vector<size_t > mcTrackIndices;
4212+ for (auto & t : groupedMCTracks) {
4213+ mcTrackIndices.push_back (t.globalIndex ());
4214+ }
42134215
4214- if (! (t1.mcReducedFlags() & (uint16_t(1) << fConfigMCGenSignalDileptonLegPos.value))) {
4215- continue;
4216- }
4217- if (t1.pt() < fConfigMCGenDileptonLegPtMin.value) {
4218- continue;
4219- }
4220- if (std::abs(t1.eta()) > fConfigMCGenDileptonLegEtaAbs.value) {
4221- continue;
4222- }
4216+ // make a three nested for loop over all MC tracks in the vector
4217+ for (auto t1 : mcTrackIndices) {
4218+ auto track1 = mcTracks.rawIteratorAt (*(&t1));
4219+ for (auto t2 : mcTrackIndices) {
4220+ if (t1 == t2 || t2 < t1)
4221+ continue ;
4222+ auto track2 = mcTracks.rawIteratorAt (*(&t2));
4223+ for (auto t3 : mcTrackIndices) {
4224+ if (t3 == t1 || t3 == t2)
4225+ continue ;
4226+ auto track3 = mcTracks.rawIteratorAt (*(&t3));
42234227
4224- if (! (t2.mcReducedFlags() & (uint16_t(1) << fConfigMCGenSignalDileptonLegNeg.value))) {
4225- continue;
4226- }
4227- if (t2.pt() < fConfigMCGenDileptonLegPtMin.value) {
4228- continue;
4229- }
4230- if (std::abs(t2.eta()) > fConfigMCGenDileptonLegEtaAbs.value) {
4231- continue;
4232- }
4228+ for (auto & sig : fRecMCSignals ) {
4229+ if (sig->CheckSignal (true , track1, track2, track3)) {
4230+ fHistMan ->FillHistClass (Form (" MCTruthGenSelBR_%s" , sig->GetName ()), VarManager::fgValues);
42334231
4234- if (! (t3.mcReducedFlags() & (uint16_t(1) << fConfigMCGenSignalHadron.value))) {
4235- continue;
4236- }
4237- if (t3.pt() < fConfigMCGenHadronPtMin.value) {
4238- continue;
4239- }
4240- if (std::abs(t3.eta()) > fConfigMCGenHadronEtaAbs.value) {
4241- continue;
4232+ // apply kinematic cuts
4233+ if (track1.pt () < fConfigMCGenDileptonLegPtMin .value || std::abs (track1.eta ()) > fConfigMCGenDileptonLegEtaAbs .value ) {
4234+ continue ;
4235+ }
4236+ if (track2.pt () < fConfigMCGenDileptonLegPtMin .value || std::abs (track2.eta ()) > fConfigMCGenDileptonLegEtaAbs .value ) {
4237+ continue ;
4238+ }
4239+ if (track3.pt () < fConfigMCGenHadronPtMin .value || std::abs (track3.eta ()) > fConfigMCGenHadronEtaAbs .value ) {
4240+ continue ;
4241+ }
4242+ fHistMan ->FillHistClass (Form (" MCTruthGenSelBRAccepted_%s" , sig->GetName ()), VarManager::fgValues);
4243+ }
4244+ }
4245+ }
42424246 }
4243-
4244- fHistMan->FillHistClass("MCTruthGenSelAccepted", VarManager::fgValues);
4245- }*/
4247+ }
42464248 } // end loop over reconstructed events
42474249 }
42484250
0 commit comments