@@ -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,98 @@ 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
1088+
1089+ auto coll = collisionsMC.iteratorAt (collId); // Take original collision matched with resoCollision
1090+
1091+ if (!coll.isInelGt0 ()) // Check reco INELgt0 (at least one PV track in |eta| < 1) about the collision
1092+ return ;
1093+
1094+ auto mcColl = coll.mcCollision_as <soa::Join<aod::McCollisions, aod::McCentFT0Ms>>();
1095+ multiplicity = mcColl.centFT0M ();
1096+ }
1097+ else if (!cMCCent && cRecoINELgt0){
1098+ auto linkRow = collisionIndex.iteratorAt (resoCollision.globalIndex ());
1099+ auto collId = linkRow.collisionId (); // Take original collision global index matched with resoCollision
10841100
1085- auto linkRow = resoCollisionIndex.iteratorAt (resoCollision.globalIndex ());
1086- const int collId = linkRow.collisionId ();
1101+ auto coll = collisionsMC.iteratorAt (collId); // Take original collision matched with resoCollision
10871102
1088- auto coll = collisionsMC.iteratorAt (collId);
1103+ if (!coll.isInelGt0 ()) // Check reco INELgt0 (at least one PV track in |eta| < 1) about the collision
1104+ return ;
10891105
1090- if (cRecoINELgt0 && !coll.isInelGt0 ())
1091- return ;
1106+ multiplicity = resoCollision.cent ();
1107+ }
1108+ else if (cMCCent && !cRecoINELgt0){
1109+ auto linkRow = collisionIndex.iteratorAt (resoCollision.globalIndex ());
1110+ auto collId = linkRow.collisionId (); // Take original collision global index matched with resoCollision
10921111
1093- auto mcColl = coll. mcCollision_as <soa::Join<aod::McCollisions, aod::McCentFT0Ms>>();
1112+ auto coll = collisionsMC. iteratorAt (collId); // Take original collision matched with resoCollision
10941113
1095- auto multiplicityReco = resoCollision.cent (); // Reco level multiplicity per.
1096- auto multiplicityGen = mcColl.centFT0M (); // Gen level multiplicity per.
1114+ auto mcColl = coll.mcCollision_as <soa::Join<aod::McCollisions, aod::McCentFT0Ms>>();
1115+ multiplicity = mcColl.centFT0M ();
1116+ }
1117+ else {
1118+ multiplicity = resoCollision.cent ();
1119+ }
10971120
1098- float multiplicity = cMCCent ? multiplicityGen : multiplicityReco;
1121+ if (!resoCollision.isInAfterAllCuts () || (std::abs (resoCollision.posZ ()) > cZvertCutMC)) // MC event selection, all cuts missing vtx cut
1122+ return ;
10991123
11001124 fillHistograms<false , true , false >(resoCollision, multiplicity, resoTracks, cascTracks);
11011125 }
11021126
11031127 // Truth level MC for the track with reco event
11041128 void processMCTrue (ResoMCCols::iterator const & resoCollision,
1105- aod::ResoCollisionColls const & resoCollisionIndex ,
1129+ aod::ResoCollisionColls const & collisionIndex ,
11061130 aod::ResoMCParents const & resoParents,
11071131 aod::ResoCollisionCandidatesMC const & collisionsMC,
11081132 soa::Join<aod::McCollisions, aod::McCentFT0Ms> const &)
11091133 {
1134+ float multiplicity;
1135+ if (cMCCent && cRecoINELgt0){
1136+ auto linkRow = collisionIndex.iteratorAt (resoCollision.globalIndex ());
1137+ auto collId = linkRow.collisionId (); // Take original collision global index matched with resoCollision
11101138
1111- auto linkRow = resoCollisionIndex.iteratorAt (resoCollision.globalIndex ());
1112- const int collId = linkRow.collisionId ();
1139+ auto coll = collisionsMC.iteratorAt (collId); // Take original collision matched with resoCollision
11131140
1114- auto coll = collisionsMC.iteratorAt (collId);
1141+ if (!coll.isInelGt0 ()) // Check reco INELgt0 (at least one PV track in |eta| < 1) about the collision
1142+ return ;
11151143
1116- auto mcColl = coll.mcCollision_as <soa::Join<aod::McCollisions, aod::McCentFT0Ms>>();
1144+ auto mcColl = coll.mcCollision_as <soa::Join<aod::McCollisions, aod::McCentFT0Ms>>();
1145+ multiplicity = mcColl.centFT0M ();
1146+ }
1147+ else if (!cMCCent && cRecoINELgt0){
1148+ auto linkRow = collisionIndex.iteratorAt (resoCollision.globalIndex ());
1149+ auto collId = linkRow.collisionId (); // Take original collision global index matched with resoCollision
1150+
1151+ auto coll = collisionsMC.iteratorAt (collId); // Take original collision matched with resoCollision
1152+
1153+ if (!coll.isInelGt0 ()) // Check reco INELgt0 (at least one PV track in |eta| < 1) about the collision
1154+ return ;
1155+
1156+ multiplicity = resoCollision.cent ();
1157+ }
1158+ else if (cMCCent && !cRecoINELgt0){
1159+ auto linkRow = collisionIndex.iteratorAt (resoCollision.globalIndex ());
1160+ auto collId = linkRow.collisionId (); // Take original collision global index matched with resoCollision
11171161
1118- auto multiplicityReco = resoCollision.cent (); // Reco level multiplicity per.
1119- auto multiplicityGen = mcColl.centFT0M (); // Gen level multiplicity per.
1162+ auto coll = collisionsMC.iteratorAt (collId); // Take original collision matched with resoCollision
11201163
1121- float multiplicity = cMCCent ? multiplicityGen : multiplicityReco;
1164+ auto mcColl = coll.mcCollision_as <soa::Join<aod::McCollisions, aod::McCentFT0Ms>>();
1165+ multiplicity = mcColl.centFT0M ();
1166+ }
1167+ else {
1168+ multiplicity = resoCollision.cent ();
1169+ }
11221170
11231171 for (const auto & part : resoParents) { // loop over all pre-filtered MC particles
11241172 if (std::abs (part.pdgCode ()) != kXiStar || std::abs (part.y ()) >= cfgRapidityCut)
@@ -1171,13 +1219,15 @@ struct Xi1530Analysisqa {
11711219 aod::ResoMicroTracks const & resomicrotracks,
11721220 aod::ResoCascades const & cascTracks)
11731221 {
1174- auto linkRow = collisionIndex.iteratorAt (resoCollision.globalIndex ());
1175- auto collId = linkRow.collisionId (); // Take original collision global index matched with resoCollision
1222+ if (cRecoINELgt0){
1223+ auto linkRow = collisionIndex.iteratorAt (resoCollision.globalIndex ());
1224+ auto collId = linkRow.collisionId (); // Take original collision global index matched with resoCollision
11761225
1177- auto coll = collisions.iteratorAt (collId); // Take original collision matched with resoCollision
1226+ auto coll = collisions.iteratorAt (collId); // Take original collision matched with resoCollision
11781227
1179- if (cRecoINELgt0 && !coll.isInelGt0 ()) // Check reco INELgt0 (at least one PV track in |eta| < 1) about the collision
1180- return ;
1228+ if (!coll.isInelGt0 ()) // Check reco INELgt0 (at least one PV track in |eta| < 1) about the collision
1229+ return ;
1230+ }
11811231
11821232 histos.fill (HIST (" QAevent/hEvtCounterSameE" ), 1.0 );
11831233 auto multiplicity = resoCollision.cent ();
@@ -1222,15 +1272,16 @@ struct Xi1530Analysisqa {
12221272
12231273 for (const auto & [collision1, tracks1, collision2, tracks2] : pairs) {
12241274
1275+ if (cRecoINELgt0){
12251276 const auto rcIdx = collision1.globalIndex ();
1277+ auto linkRow = collisionIndex.iteratorAt (rcIdx);
1278+ auto collId = linkRow.collisionId (); // Take original collision global index matched with resoCollision
12261279
1227- const auto linkRow = collisionIndex.iteratorAt (rcIdx);
1228- const auto collId = linkRow.collisionId ();
1280+ auto coll = collisions.iteratorAt (collId); // Take original collision matched with resoCollision
12291281
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
1282+ if (!coll.isInelGt0 ()) // Check reco INELgt0 (at least one PV track in |eta| < 1) about the collision
12321283 continue ;
1233-
1284+ }
12341285 histos.fill (HIST (" QAevent/hEvtCounterMixedE" ), 1.0 );
12351286 auto multiplicity = collision1.cent ();
12361287 fillHistograms<true , false , true >(collision1, multiplicity, tracks1, tracks2);
0 commit comments