@@ -3118,6 +3118,13 @@ struct AnalysisDileptonTrack {
31183118 Configurable<std::string> fConfigMCGenSignals {" cfgMCGenSignals" , " " , " Comma separated list of MC signals (generated)" };
31193119 Configurable<std::string> fConfigMCRecSignalsJSON {" cfgMCRecSignalsJSON" , " " , " Additional list of MC signals (reconstructed) via JSON" };
31203120 Configurable<std::string> fConfigMCGenSignalsJSON {" cfgMCGenSignalsJSON" , " " , " Comma separated list of MC signals (generated) via JSON" };
3121+ Configurable<int > fConfigMCGenSignalDileptonLegPos {" cfgMCGenSignalDileptonLegPos" , 0 , " generator level positive dilepton leg signal (bit number according to table-maker)" };
3122+ Configurable<int > fConfigMCGenSignalDileptonLegNeg {" cfgMCGenSignalDileptonLegNeg" , 0 , " generator level negative dilepton leg signal (bit number according to table-maker)" };
3123+ Configurable<int > fConfigMCGenSignalHadron {" cfgMCGenSignalHadron" , 0 , " generator level associated hadron signal (bit number according to table-maker)" };
3124+ Configurable<float > fConfigMCGenDileptonLegPtMin {" cfgMCGenDileptonLegPtMin" , 1 .0f , " minimum pt for the dilepton leg" };
3125+ Configurable<float > fConfigMCGenHadronPtMin {" cfgMCGenHadronPtMin" , 1 .0f , " minimum pt for the hadron" };
3126+ Configurable<float > fConfigMCGenDileptonLegEtaAbs {" cfgMCGenDileptonLegEtaAbs" , 0 .9f , " eta abs range for the dilepton leg" };
3127+ Configurable<float > fConfigMCGenHadronEtaAbs {" cfgMCGenHadronEtaAbs" , 0 .9f , " eta abs range for the hadron" };
31213128
31223129 int fCurrentRun ; // needed to detect if the run changed and trigger update of calibrations etc.
31233130 int fNCuts ;
@@ -3401,6 +3408,7 @@ struct AnalysisDileptonTrack {
34013408 DefineHistograms (fHistMan , Form (" MCTruthGen_%s" , sig->GetName ()), " " );
34023409 DefineHistograms (fHistMan , Form (" MCTruthGenSel_%s" , sig->GetName ()), " " );
34033410 }
3411+ DefineHistograms (fHistMan , " MCTruthGenAccepted" , " " );
34043412 }
34053413
34063414 TString addHistsStr = fConfigAddJSONHistograms .value ;
@@ -3592,7 +3600,7 @@ struct AnalysisDileptonTrack {
35923600 fHistMan ->FillHistClass (Form (" DileptonTrack_%s_%s" , fTrackCutNames [icut].Data (), fTrackCutNames [iTrackCut].Data ()), fValuesHadron );
35933601 for (uint32_t isig = 0 ; isig < fRecMCSignals .size (); isig++) {
35943602 if (mcDecision & (uint32_t (1 ) << isig)) {
3595- fHistMan ->FillHistClass (Form (" DileptonTrack_ %s_%s_%s" , fTrackCutNames [icut].Data (), fTrackCutNames [iTrackCut].Data (), fRecMCSignals [isig]->GetName ()), fValuesHadron );
3603+ fHistMan ->FillHistClass (Form (" DileptonTrackMCMatched_ %s_%s_%s" , fTrackCutNames [icut].Data (), fTrackCutNames [iTrackCut].Data (), fRecMCSignals [isig]->GetName ()), fValuesHadron );
35963604 }
35973605 }
35983606
@@ -3602,7 +3610,7 @@ struct AnalysisDileptonTrack {
36023610 fHistMan ->FillHistClass (Form (" DileptonTrack_%s_%s_%s" , fTrackCutNames [icut].Data (), fCommonPairCutNames [iCommonCut].Data (), fTrackCutNames [iTrackCut].Data ()), fValuesHadron );
36033611 for (uint32_t isig = 0 ; isig < fRecMCSignals .size (); isig++) {
36043612 if (mcDecision & (uint32_t (1 ) << isig)) {
3605- fHistMan ->FillHistClass (Form (" DileptonTrack_ %s_%s_%s_%s" , fTrackCutNames [icut].Data (), fCommonPairCutNames [iCommonCut].Data (), fTrackCutNames [iTrackCut].Data (), fRecMCSignals [isig]->GetName ()), fValuesHadron );
3613+ fHistMan ->FillHistClass (Form (" DileptonTrackMCMatched_ %s_%s_%s_%s" , fTrackCutNames [icut].Data (), fCommonPairCutNames [iCommonCut].Data (), fTrackCutNames [iTrackCut].Data (), fRecMCSignals [isig]->GetName ()), fValuesHadron );
36063614 }
36073615 }
36083616 }
@@ -3612,15 +3620,15 @@ struct AnalysisDileptonTrack {
36123620 fHistMan ->FillHistClass (Form (" DileptonTrack_%s_%s_%s" , fTrackCutNames [icut].Data (), fPairCutNames [iPairCut].Data (), fTrackCutNames [iTrackCut].Data ()), fValuesHadron );
36133621 for (uint32_t isig = 0 ; isig < fRecMCSignals .size (); isig++) {
36143622 if (mcDecision & (uint32_t (1 ) << isig)) {
3615- fHistMan ->FillHistClass (Form (" DileptonTrack_ %s_%s_%s_%s" , fTrackCutNames [icut].Data (), fPairCutNames [iPairCut].Data (), fTrackCutNames [iTrackCut].Data (), fRecMCSignals [isig]->GetName ()), fValuesHadron );
3623+ fHistMan ->FillHistClass (Form (" DileptonTrackMCMatched_ %s_%s_%s_%s" , fTrackCutNames [icut].Data (), fPairCutNames [iPairCut].Data (), fTrackCutNames [iTrackCut].Data (), fRecMCSignals [isig]->GetName ()), fValuesHadron );
36163624 }
36173625 }
36183626 for (int iCommonCut = 0 ; iCommonCut < fNCommonTrackCuts ; iCommonCut++) {
36193627 if (dilepton.commonFilterMap_bit (fCommonTrackCutMap [iCommonCut])) {
36203628 fHistMan ->FillHistClass (Form (" DileptonTrack_%s_%s_%s_%s" , fTrackCutNames [icut].Data (), fCommonPairCutNames [iCommonCut].Data (), fPairCutNames [iPairCut].Data (), fTrackCutNames [iTrackCut].Data ()), fValuesHadron );
36213629 for (uint32_t isig = 0 ; isig < fRecMCSignals .size (); isig++) {
36223630 if (mcDecision & (uint32_t (1 ) << isig)) {
3623- fHistMan ->FillHistClass (Form (" DileptonTrack_ %s_%s_%s_%s_%s" , fTrackCutNames [icut].Data (), fCommonPairCutNames [iCommonCut].Data (), fPairCutNames [iPairCut].Data (), fTrackCutNames [iTrackCut].Data (), fRecMCSignals [isig]->GetName ()), fValuesHadron );
3631+ fHistMan ->FillHistClass (Form (" DileptonTrackMCMatched_ %s_%s_%s_%s_%s" , fTrackCutNames [icut].Data (), fCommonPairCutNames [iCommonCut].Data (), fPairCutNames [iPairCut].Data (), fTrackCutNames [iTrackCut].Data (), fRecMCSignals [isig]->GetName ()), fValuesHadron );
36243632 }
36253633 }
36263634 }
@@ -3719,10 +3727,12 @@ struct AnalysisDileptonTrack {
37193727 // auto groupedMCTracks = tracksMC.sliceBy(aod::reducedtrackMC::reducedMCeventId, event.reducedMCevent().globalIndex());
37203728 for (auto & mctrack : mcTracks) {
37213729
3722- /* if ((std::abs(mctrack.pdgCode())>400 && std::abs(mctrack.pdgCode())<599) ||
3723- (std::abs(mctrack.pdgCode())>4000 && std::abs(mctrack.pdgCode())<5999) ||
3724- std::abs(mctrack.pdgCode())>5999) {
3725- cout << ">>>>>>>>>>>>>>>>>>>>>>> track idx / pdg: " << mctrack.globalIndex() << " / " << mctrack.pdgCode() << endl;
3730+ if ((std::abs (mctrack.pdgCode ()) > 400 && std::abs (mctrack.pdgCode ()) < 599 ) ||
3731+ (std::abs (mctrack.pdgCode ()) > 4000 && std::abs (mctrack.pdgCode ()) < 5999 ) ||
3732+ mctrack.mcReducedFlags () > 0 ) {
3733+ /* cout << ">>>>>>>>>>>>>>>>>>>>>>> track idx / pdg / selections: " << mctrack.globalIndex() << " / " << mctrack.pdgCode() << " / ";
3734+ PrintBitMap(mctrack.mcReducedFlags(), 16);
3735+ cout << endl;
37263736 if (mctrack.has_mothers()) {
37273737 for (auto& m : mctrack.mothersIds()) {
37283738 if (m < mcTracks.size()) { // protect against bad mother indices
@@ -3739,8 +3749,8 @@ struct AnalysisDileptonTrack {
37393749 cout << "<<<<<< daughter idx / pdg: " << d << " / " << aDaughter.pdgCode() << endl;
37403750 }
37413751 }
3742- }
3743- }*/
3752+ }*/
3753+ }
37443754
37453755 VarManager::FillTrackMC (mcTracks, mctrack);
37463756 // NOTE: Signals are checked here mostly based on the skimmed MC stack, so depending on the requested signal, the stack could be incomplete.
@@ -3780,6 +3790,41 @@ struct AnalysisDileptonTrack {
37803790 }
37813791 }
37823792 }
3793+
3794+ /* for (auto& [t1, t2, t3] : combinations(groupedMCTracks, groupedMCTracks, groupedMCTracks)) {
3795+
3796+ if (! (t1.mcReducedFlags() & (uint16_t(1) << fConfigMCGenSignalDileptonLegPos.value))) {
3797+ continue;
3798+ }
3799+ if (t1.pt() < fConfigMCGenDileptonLegPtMin.value) {
3800+ continue;
3801+ }
3802+ if (std::abs(t1.eta()) > fConfigMCGenDileptonLegEtaAbs.value) {
3803+ continue;
3804+ }
3805+
3806+ if (! (t2.mcReducedFlags() & (uint16_t(1) << fConfigMCGenSignalDileptonLegNeg.value))) {
3807+ continue;
3808+ }
3809+ if (t2.pt() < fConfigMCGenDileptonLegPtMin.value) {
3810+ continue;
3811+ }
3812+ if (std::abs(t2.eta()) > fConfigMCGenDileptonLegEtaAbs.value) {
3813+ continue;
3814+ }
3815+
3816+ if (! (t3.mcReducedFlags() & (uint16_t(1) << fConfigMCGenSignalHadron.value))) {
3817+ continue;
3818+ }
3819+ if (t3.pt() < fConfigMCGenHadronPtMin.value) {
3820+ continue;
3821+ }
3822+ if (std::abs(t3.eta()) > fConfigMCGenHadronEtaAbs.value) {
3823+ continue;
3824+ }
3825+
3826+ fHistMan->FillHistClass("MCTruthGenSelAccepted", VarManager::fgValues);
3827+ }*/
37833828 } // end loop over reconstructed events
37843829 }
37853830
0 commit comments