Skip to content

Commit 61b78c2

Browse files
iarseneIonut Cristian Arsenealibuild
authored
[PWGDQ] fix bug for MCmatched histogram groups in dilepton-track task; adding… (#10529)
Co-authored-by: Ionut Cristian Arsene <iarsene@cern.ch> Co-authored-by: ALICE Action Bot <alibuild@cern.ch>
1 parent fdd959c commit 61b78c2

File tree

2 files changed

+101
-10
lines changed

2 files changed

+101
-10
lines changed

PWGDQ/Core/MCSignalLibrary.cxx

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1144,6 +1144,33 @@ MCSignal* o2::aod::dqmcsignals::GetMCSignal(const char* name)
11441144
return signal;
11451145
}
11461146

1147+
if (!nameStr.compare("kaonFromBplusHistory")) {
1148+
MCProng prong(1, {321}, {true}, {false}, {0}, {0}, {false}, false, {521}, {false});
1149+
signal = new MCSignal(name, "Kaons from B+ decays", {prong}, {-1});
1150+
return signal;
1151+
}
1152+
1153+
if (!nameStr.compare("kaonPrimaryFromBplusHistory")) {
1154+
MCProng prong(1, {321}, {true}, {false}, {0}, {0}, {false}, false, {521}, {false});
1155+
prong.SetSourceBit(0, MCProng::kPhysicalPrimary);
1156+
signal = new MCSignal(name, "Kaons from B+ decays", {prong}, {-1});
1157+
return signal;
1158+
}
1159+
1160+
if (!nameStr.compare("kaonPrimaryFromBplusFS")) {
1161+
MCProng prong(2, {321, 521}, {true, true}, {false, false}, {0, 0}, {0, 0}, {false, false});
1162+
prong.SetSourceBit(0, MCProng::kPhysicalPrimary);
1163+
prong.SetSourceBit(1, MCProng::kHEPMCFinalState);
1164+
signal = new MCSignal(name, "Kaons from B+ decays", {prong}, {-1});
1165+
return signal;
1166+
}
1167+
1168+
if (!nameStr.compare("kaonFromAnyBHistory")) {
1169+
MCProng prong(1, {321}, {true}, {false}, {0}, {0}, {false}, false, {503}, {false});
1170+
signal = new MCSignal(name, "Kaons from B+ decays", {prong}, {-1});
1171+
return signal;
1172+
}
1173+
11471174
if (!nameStr.compare("JpsiFromBplus")) {
11481175
MCProng prong(2, {443, 521}, {true, true}, {false, false}, {0, 0}, {0, 0}, {false, false});
11491176
signal = new MCSignal(name, "Jpsi from B+ decays", {prong}, {1});
@@ -1156,6 +1183,18 @@ MCSignal* o2::aod::dqmcsignals::GetMCSignal(const char* name)
11561183
return signal;
11571184
}
11581185

1186+
if (!nameStr.compare("electronFromJpsiFromBplus")) {
1187+
MCProng prong(3, {11, 443, 521}, {false, true, true}, {false, false, false}, {0, 0, 0}, {0, 0, 0}, {false, false, false});
1188+
signal = new MCSignal(name, "Electrons from Jpsi from B+ decays", {prong}, {1});
1189+
return signal;
1190+
}
1191+
1192+
if (!nameStr.compare("positronFromJpsiFromBplus")) {
1193+
MCProng prong(3, {-11, 443, 521}, {false, true, true}, {false, false, false}, {0, 0, 0}, {0, 0, 0}, {false, false, false});
1194+
signal = new MCSignal(name, "Positrons from Jpsi from B+ decays", {prong}, {1});
1195+
return signal;
1196+
}
1197+
11591198
if (!nameStr.compare("eeFromJpsiFromBplus")) {
11601199
MCProng prong(3, {11, 443, 521}, {true, true, true}, {false, false, false}, {0, 0, 0}, {0, 0, 0}, {false, false, false});
11611200
signal = new MCSignal(name, "Electron pair from Jpsi from B+ decays", {prong, prong}, {1, 1});
@@ -1169,6 +1208,13 @@ MCSignal* o2::aod::dqmcsignals::GetMCSignal(const char* name)
11691208
return signal;
11701209
}
11711210

1211+
if (!nameStr.compare("eeFromJpsiKaonAny")) {
1212+
MCProng pronge(2, {11, 443}, {true, true}, {false, false}, {0, 0}, {0, 0}, {false, false});
1213+
MCProng prongKaon(1, {321}, {true}, {false}, {0}, {0}, {false});
1214+
signal = new MCSignal(name, "Kaon and electron pair", {pronge, pronge, prongKaon}, {-1, -1, -1});
1215+
return signal;
1216+
}
1217+
11721218
if (!nameStr.compare("eeKaonFromBplusExclusive")) {
11731219
MCProng pronge(3, {11, 443, 521}, {true, true, true}, {false, false, false}, {0, 0, 0}, {0, 0, 0}, {false, false, false});
11741220
MCProng prongKaon(2, {321, 521}, {true, true}, {false, false}, {0, 0}, {0, 0}, {false, false});

PWGDQ/Tasks/dqEfficiency_withAssoc.cxx

Lines changed: 55 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)