@@ -83,6 +83,14 @@ DECLARE_SOA_COLUMN(CosPBcandidate, cosPBcandidate, float);
8383DECLARE_SOA_COLUMN (Chi2Bcandidate, chi2Bcandidate, float );
8484DECLARE_SOA_COLUMN (DCAxyzBetweenProngs, dcaxyzBetweenProngs, float );
8585DECLARE_SOA_COLUMN (McFlag, mcFlag, int8_t );
86+ // Candidate columns for prompt-non-prompt JPsi separation
87+ DECLARE_SOA_COLUMN (Massee, massee, float );
88+ DECLARE_SOA_COLUMN (Ptee, ptee, float );
89+ DECLARE_SOA_COLUMN (Lxyee, lxyee, float );
90+ DECLARE_SOA_COLUMN (Lzee, lzee, float );
91+ DECLARE_SOA_COLUMN (AmbiguousInBunchPairs, AmbiguousJpsiPairsInBunch, bool );
92+ DECLARE_SOA_COLUMN (AmbiguousOutOfBunchPairs, AmbiguousJpsiPairsOutOfBunch, bool );
93+ DECLARE_SOA_COLUMN (Corrassoc, corrassoc, bool );
8694} // namespace dqanalysisflags
8795
8896DECLARE_SOA_TABLE (EventCuts, " AOD" , " DQANAEVCUTS" , dqanalysisflags::IsEventSelected); // ! joinable to ReducedEvents
@@ -92,6 +100,7 @@ DECLARE_SOA_TABLE(MuonTrackCuts, "AOD", "DQANAMUONCUTS", dqanalysisflags::IsMuon
92100DECLARE_SOA_TABLE (MuonAmbiguities, " AOD" , " DQMUONAMB" , dqanalysisflags::MuonAmbiguityInBunch, dqanalysisflags::MuonAmbiguityOutOfBunch); // ! joinable to ReducedMuonTracks
93101DECLARE_SOA_TABLE (Prefilter, " AOD" , " DQPREFILTER" , dqanalysisflags::IsBarrelSelectedPrefilter); // ! joinable to ReducedTracksAssoc
94102DECLARE_SOA_TABLE (BmesonCandidates, " AOD" , " DQBMESONS" , dqanalysisflags::massBcandidate, dqanalysisflags::deltaMassBcandidate, dqanalysisflags::pTBcandidate, dqanalysisflags::LxyBcandidate, dqanalysisflags::LxyzBcandidate, dqanalysisflags::LzBcandidate, dqanalysisflags::TauxyBcandidate, dqanalysisflags::TauzBcandidate, dqanalysisflags::DCAxyzBetweenProngs, dqanalysisflags::CosPBcandidate, dqanalysisflags::Chi2Bcandidate, dqanalysisflags::McFlag);
103+ DECLARE_SOA_TABLE (JPsieeCandidates, " AOD" , " DQPSEUDOPROPER" , dqanalysisflags::Massee, dqanalysisflags::Ptee, dqanalysisflags::Lxyee, dqanalysisflags::Lzee, dqanalysisflags::AmbiguousInBunchPairs, dqanalysisflags::AmbiguousOutOfBunchPairs, dqanalysisflags::Corrassoc);
95104} // namespace o2::aod
96105
97106// Declarations of various short names
@@ -1185,6 +1194,7 @@ struct AnalysisSameEventPairing {
11851194 Produces<aod::DimuonsExtra> dimuonsExtraList;
11861195 Produces<aod::DimuonsAll> dimuonAllList;
11871196 Produces<aod::DileptonsInfo> dileptonInfoList;
1197+ Produces<aod::JPsieeCandidates> PromptNonPromptSepTable;
11881198
11891199 o2::base::MatLayerCylSet* fLUT = nullptr ;
11901200 int fCurrentRun ; // needed to detect if the run changed and trigger update of calibrations etc.
@@ -1817,6 +1827,10 @@ struct AnalysisSameEventPairing {
18171827 // Fill histograms
18181828 bool isAmbiInBunch = false ;
18191829 bool isAmbiOutOfBunch = false ;
1830+ bool isCorrect_pair = false ;
1831+ if (isCorrectAssoc_leg1 && isCorrectAssoc_leg2)
1832+ isCorrect_pair = true ;
1833+
18201834 for (int icut = 0 ; icut < ncuts; icut++) {
18211835 if (twoTrackFilter & (static_cast <uint32_t >(1 ) << icut)) {
18221836 isAmbiInBunch = (twoTrackFilter & (static_cast <uint32_t >(1 ) << 28 )) || (twoTrackFilter & (static_cast <uint32_t >(1 ) << 29 ));
@@ -1825,6 +1839,7 @@ struct AnalysisSameEventPairing {
18251839 fHistMan ->FillHistClass (histNames[icut][0 ].Data (), VarManager::fgValues); // reconstructed, unmatched
18261840 for (unsigned int isig = 0 ; isig < fRecMCSignals .size (); isig++) { // loop over MC signals
18271841 if (mcDecision & (static_cast <uint32_t >(1 ) << isig)) {
1842+ PromptNonPromptSepTable (VarManager::fgValues[VarManager::kMass ], VarManager::fgValues[VarManager::kPt ], VarManager::fgValues[VarManager::kVertexingTauxyProjected ], VarManager::fgValues[VarManager::kVertexingTauzProjected ], isAmbiInBunch, isAmbiOutOfBunch, isCorrect_pair);
18281843 fHistMan ->FillHistClass (histNamesMC[icut * fRecMCSignals .size () + isig][0 ].Data (), VarManager::fgValues); // matched signal
18291844 if (fConfigQA ) {
18301845 if (isCorrectAssoc_leg1 && isCorrectAssoc_leg2) { // correct track-collision association
0 commit comments