Skip to content

Commit f88c0a3

Browse files
mjkim525alibuild
andauthored
[PWGLF] Fix xi1530Analysisqa.cxx (#12673)
Co-authored-by: ALICE Action Bot <alibuild@cern.ch>
1 parent f029faf commit f88c0a3

File tree

1 file changed

+82
-37
lines changed

1 file changed

+82
-37
lines changed

PWGLF/Tasks/Resonances/xi1530Analysisqa.cxx

Lines changed: 82 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1058,13 +1058,15 @@ struct Xi1530Analysisqa {
10581058
aod::ResoTracks const& resoTracks,
10591059
aod::ResoCascades const& cascTracks)
10601060
{
1061-
auto linkRow = collisionIndex.iteratorAt(resoCollision.globalIndex());
1062-
auto collId = linkRow.collisionId(); // Take original collision global index matched with resoCollision
1061+
if (cRecoINELgt0) {
1062+
auto linkRow = collisionIndex.iteratorAt(resoCollision.globalIndex());
1063+
auto collId = linkRow.collisionId(); // Take original collision global index matched with resoCollision
10631064

1064-
auto coll = collisions.iteratorAt(collId); // Take original collision matched with resoCollision
1065+
auto coll = collisions.iteratorAt(collId); // Take original collision matched with resoCollision
10651066

1066-
if (cRecoINELgt0 && !coll.isInelGt0()) // Check reco INELgt0 (at least one PV track in |eta| < 1) about the collision
1067-
return;
1067+
if (!coll.isInelGt0()) // Check reco INELgt0 (at least one PV track in |eta| < 1) about the collision
1068+
return;
1069+
}
10681070

10691071
histos.fill(HIST("QAevent/hEvtCounterSameE"), 1.0);
10701072
auto multiplicity = resoCollision.cent();
@@ -1073,52 +1075,92 @@ struct Xi1530Analysisqa {
10731075

10741076
// Reconstructed level MC for the track
10751077
void processMC(ResoMCCols::iterator const& resoCollision,
1076-
aod::ResoCollisionColls const& resoCollisionIndex,
1078+
aod::ResoCollisionColls const& collisionIndex,
10771079
soa::Join<aod::ResoCollisionCandidatesMC, aod::PVMults> const& collisionsMC,
10781080
soa::Join<aod::ResoCascades, aod::ResoMCCascades> const& cascTracks,
10791081
soa::Join<aod::ResoTracks, aod::ResoMCTracks> const& resoTracks,
10801082
soa::Join<aod::McCollisions, aod::McCentFT0Ms> const&)
10811083
{
1082-
if (!resoCollision.isInAfterAllCuts() || (std::abs(resoCollision.posZ()) > cZvertCutMC)) // MC event selection, all cuts missing vtx cut
1083-
return;
1084+
float multiplicity;
1085+
if (cMCCent && cRecoINELgt0) {
1086+
auto linkRow = collisionIndex.iteratorAt(resoCollision.globalIndex());
1087+
auto collId = linkRow.collisionId(); // Take original collision global index matched with resoCollision
10841088

1085-
auto linkRow = resoCollisionIndex.iteratorAt(resoCollision.globalIndex());
1086-
const int collId = linkRow.collisionId();
1089+
auto coll = collisionsMC.iteratorAt(collId); // Take original collision matched with resoCollision
10871090

1088-
auto coll = collisionsMC.iteratorAt(collId);
1091+
if (!coll.isInelGt0()) // Check reco INELgt0 (at least one PV track in |eta| < 1) about the collision
1092+
return;
10891093

1090-
if (cRecoINELgt0 && !coll.isInelGt0())
1091-
return;
1094+
auto mcColl = coll.mcCollision_as<soa::Join<aod::McCollisions, aod::McCentFT0Ms>>();
1095+
multiplicity = mcColl.centFT0M();
1096+
} else if (!cMCCent && cRecoINELgt0) {
1097+
auto linkRow = collisionIndex.iteratorAt(resoCollision.globalIndex());
1098+
auto collId = linkRow.collisionId(); // Take original collision global index matched with resoCollision
1099+
1100+
auto coll = collisionsMC.iteratorAt(collId); // Take original collision matched with resoCollision
10921101

1093-
auto mcColl = coll.mcCollision_as<soa::Join<aod::McCollisions, aod::McCentFT0Ms>>();
1102+
if (!coll.isInelGt0()) // Check reco INELgt0 (at least one PV track in |eta| < 1) about the collision
1103+
return;
10941104

1095-
auto multiplicityReco = resoCollision.cent(); // Reco level multiplicity per.
1096-
auto multiplicityGen = mcColl.centFT0M(); // Gen level multiplicity per.
1105+
multiplicity = resoCollision.cent();
1106+
} else if (cMCCent && !cRecoINELgt0) {
1107+
auto linkRow = collisionIndex.iteratorAt(resoCollision.globalIndex());
1108+
auto collId = linkRow.collisionId(); // Take original collision global index matched with resoCollision
10971109

1098-
float multiplicity = cMCCent ? multiplicityGen : multiplicityReco;
1110+
auto coll = collisionsMC.iteratorAt(collId); // Take original collision matched with resoCollision
1111+
1112+
auto mcColl = coll.mcCollision_as<soa::Join<aod::McCollisions, aod::McCentFT0Ms>>();
1113+
multiplicity = mcColl.centFT0M();
1114+
} else {
1115+
multiplicity = resoCollision.cent();
1116+
}
1117+
1118+
if (!resoCollision.isInAfterAllCuts() || (std::abs(resoCollision.posZ()) > cZvertCutMC)) // MC event selection, all cuts missing vtx cut
1119+
return;
10991120

11001121
fillHistograms<false, true, false>(resoCollision, multiplicity, resoTracks, cascTracks);
11011122
}
11021123

11031124
// Truth level MC for the track with reco event
11041125
void processMCTrue(ResoMCCols::iterator const& resoCollision,
1105-
aod::ResoCollisionColls const& resoCollisionIndex,
1126+
aod::ResoCollisionColls const& collisionIndex,
11061127
aod::ResoMCParents const& resoParents,
11071128
aod::ResoCollisionCandidatesMC const& collisionsMC,
11081129
soa::Join<aod::McCollisions, aod::McCentFT0Ms> const&)
11091130
{
1131+
float multiplicity;
1132+
if (cMCCent && cRecoINELgt0) {
1133+
auto linkRow = collisionIndex.iteratorAt(resoCollision.globalIndex());
1134+
auto collId = linkRow.collisionId(); // Take original collision global index matched with resoCollision
11101135

1111-
auto linkRow = resoCollisionIndex.iteratorAt(resoCollision.globalIndex());
1112-
const int collId = linkRow.collisionId();
1136+
auto coll = collisionsMC.iteratorAt(collId); // Take original collision matched with resoCollision
11131137

1114-
auto coll = collisionsMC.iteratorAt(collId);
1138+
if (!coll.isInelGt0()) // Check reco INELgt0 (at least one PV track in |eta| < 1) about the collision
1139+
return;
11151140

1116-
auto mcColl = coll.mcCollision_as<soa::Join<aod::McCollisions, aod::McCentFT0Ms>>();
1141+
auto mcColl = coll.mcCollision_as<soa::Join<aod::McCollisions, aod::McCentFT0Ms>>();
1142+
multiplicity = mcColl.centFT0M();
1143+
} else if (!cMCCent && cRecoINELgt0) {
1144+
auto linkRow = collisionIndex.iteratorAt(resoCollision.globalIndex());
1145+
auto collId = linkRow.collisionId(); // Take original collision global index matched with resoCollision
11171146

1118-
auto multiplicityReco = resoCollision.cent(); // Reco level multiplicity per.
1119-
auto multiplicityGen = mcColl.centFT0M(); // Gen level multiplicity per.
1147+
auto coll = collisionsMC.iteratorAt(collId); // Take original collision matched with resoCollision
11201148

1121-
float multiplicity = cMCCent ? multiplicityGen : multiplicityReco;
1149+
if (!coll.isInelGt0()) // Check reco INELgt0 (at least one PV track in |eta| < 1) about the collision
1150+
return;
1151+
1152+
multiplicity = resoCollision.cent();
1153+
} else if (cMCCent && !cRecoINELgt0) {
1154+
auto linkRow = collisionIndex.iteratorAt(resoCollision.globalIndex());
1155+
auto collId = linkRow.collisionId(); // Take original collision global index matched with resoCollision
1156+
1157+
auto coll = collisionsMC.iteratorAt(collId); // Take original collision matched with resoCollision
1158+
1159+
auto mcColl = coll.mcCollision_as<soa::Join<aod::McCollisions, aod::McCentFT0Ms>>();
1160+
multiplicity = mcColl.centFT0M();
1161+
} else {
1162+
multiplicity = resoCollision.cent();
1163+
}
11221164

11231165
for (const auto& part : resoParents) { // loop over all pre-filtered MC particles
11241166
if (std::abs(part.pdgCode()) != kXiStar || std::abs(part.y()) >= cfgRapidityCut)
@@ -1171,13 +1213,15 @@ struct Xi1530Analysisqa {
11711213
aod::ResoMicroTracks const& resomicrotracks,
11721214
aod::ResoCascades const& cascTracks)
11731215
{
1174-
auto linkRow = collisionIndex.iteratorAt(resoCollision.globalIndex());
1175-
auto collId = linkRow.collisionId(); // Take original collision global index matched with resoCollision
1216+
if (cRecoINELgt0) {
1217+
auto linkRow = collisionIndex.iteratorAt(resoCollision.globalIndex());
1218+
auto collId = linkRow.collisionId(); // Take original collision global index matched with resoCollision
11761219

1177-
auto coll = collisions.iteratorAt(collId); // Take original collision matched with resoCollision
1220+
auto coll = collisions.iteratorAt(collId); // Take original collision matched with resoCollision
11781221

1179-
if (cRecoINELgt0 && !coll.isInelGt0()) // Check reco INELgt0 (at least one PV track in |eta| < 1) about the collision
1180-
return;
1222+
if (!coll.isInelGt0()) // Check reco INELgt0 (at least one PV track in |eta| < 1) about the collision
1223+
return;
1224+
}
11811225

11821226
histos.fill(HIST("QAevent/hEvtCounterSameE"), 1.0);
11831227
auto multiplicity = resoCollision.cent();
@@ -1222,15 +1266,16 @@ struct Xi1530Analysisqa {
12221266

12231267
for (const auto& [collision1, tracks1, collision2, tracks2] : pairs) {
12241268

1225-
const auto rcIdx = collision1.globalIndex();
1226-
1227-
const auto linkRow = collisionIndex.iteratorAt(rcIdx);
1228-
const auto collId = linkRow.collisionId();
1269+
if (cRecoINELgt0) {
1270+
const auto rcIdx = collision1.globalIndex();
1271+
auto linkRow = collisionIndex.iteratorAt(rcIdx);
1272+
auto collId = linkRow.collisionId(); // Take original collision global index matched with resoCollision
12291273

1230-
auto coll = collisions.iteratorAt(collId);
1231-
if (cRecoINELgt0 && !coll.isInelGt0()) // Check reco INELgt0 (at least one PV track in |eta| < 1) about the collision
1232-
continue;
1274+
auto coll = collisions.iteratorAt(collId); // Take original collision matched with resoCollision
12331275

1276+
if (!coll.isInelGt0()) // Check reco INELgt0 (at least one PV track in |eta| < 1) about the collision
1277+
continue;
1278+
}
12341279
histos.fill(HIST("QAevent/hEvtCounterMixedE"), 1.0);
12351280
auto multiplicity = collision1.cent();
12361281
fillHistograms<true, false, true>(collision1, multiplicity, tracks1, tracks2);

0 commit comments

Comments
 (0)