@@ -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