@@ -960,11 +960,15 @@ struct NonPromptCascadeTask {
960960 // MC collision has a reconstructed collision in 'colls'.
961961 // This must be independent of reco-track cuts.
962962 std::vector<char > mcCollisionHasRecoCollision (mcCollisions.size (), 0 );
963+ std::vector<float > mcCollisionRecoMultFT0M (mcCollisions.size (), InvalidEta);
964+ std::vector<float > mcCollisionRecoCentFT0M (mcCollisions.size (), InvalidEta);
963965
964966 for (auto const & col : colls) {
965967 const int mcid = col.mcCollisionId ();
966968 if (mcid >= 0 && static_cast <size_t >(mcid) < mcCollisionHasRecoCollision.size ()) {
967969 mcCollisionHasRecoCollision[mcid] = 1 ;
970+ mcCollisionRecoMultFT0M[mcid] = col.multFT0M ();
971+ mcCollisionRecoCentFT0M[mcid] = col.centFT0M ();
968972 } else {
969973 LOG (info) << " 4 This should never happen ?" ;
970974 }
@@ -1016,11 +1020,13 @@ struct NonPromptCascadeTask {
10161020 const float multReco = recoMultDense[dIdx];
10171021 const float ptReco = trk.pt ();
10181022 const float etaReco = trk.eta ();
1023+ const float multFT0M = col.multFT0M ();
1024+ const float centFT0M = col.centFT0M ();
10191025
10201026 if (mcCollId < 0 || static_cast <int64_t >(mcCollId) >= mcCollisions.size ()) {
10211027 if (writeRecoCollision[dIdx]) {
10221028 // Fake: accepted reco track whose reconstructed collision has no valid MC collision label.
1023- NPMCNTable (-1 .f , ptReco, InvalidEta, etaReco, multReco, -1 .f , -1 .f );
1029+ NPMCNTable (-1 .f , ptReco, InvalidEta, etaReco, multReco, -1 .f , -1 .f , multFT0M, centFT0M );
10241030 }
10251031 continue ;
10261032 }
@@ -1029,7 +1035,7 @@ struct NonPromptCascadeTask {
10291035 if (mcPid < 0 || static_cast <int64_t >(mcPid) >= mcParticles.size ()) {
10301036 if (writeMcCollision[mcCollId]) {
10311037 // Fake: accepted reco track with invalid or missing MC particle label.
1032- NPMCNTable (-2 .f , ptReco, InvalidEta, etaReco, multReco, -2 .f , mcMultFT0[mcCollId]);
1038+ NPMCNTable (-2 .f , ptReco, InvalidEta, etaReco, multReco, -2 .f , mcMultFT0[mcCollId], multFT0M, centFT0M );
10331039 }
10341040 continue ;
10351041 }
@@ -1040,15 +1046,15 @@ struct NonPromptCascadeTask {
10401046 if (mcParCollId != mcCollId) {
10411047 if (writeMcCollision[mcCollId]) {
10421048 // Fake: reco collision and particle label point to different MC collisions.
1043- NPMCNTable (-3 .f , ptReco, InvalidEta, etaReco, multReco, -3 .f , mcMultFT0[mcCollId]);
1049+ NPMCNTable (-3 .f , ptReco, InvalidEta, etaReco, multReco, -3 .f , mcMultFT0[mcCollId], multFT0M, centFT0M );
10441050 }
10451051 continue ;
10461052 }
10471053
10481054 if (!isAcceptedMCParticle (mcPar)) {
10491055 if (writeMcCollision[mcCollId]) {
10501056 // Feed-in: accepted reco track matched to truth outside fiducial phase space.
1051- NPMCNTable (-4 .f , ptReco, mcPar.eta (), etaReco, multReco, -4 .f , mcMultFT0[mcCollId]);
1057+ NPMCNTable (-4 .f , ptReco, mcPar.eta (), etaReco, multReco, -4 .f , mcMultFT0[mcCollId], multFT0M, centFT0M );
10521058 }
10531059 continue ;
10541060 }
@@ -1067,7 +1073,7 @@ struct NonPromptCascadeTask {
10671073
10681074 if (writeMcCollision[mcCollId]) {
10691075 // Matched: accepted truth particle reconstructed inside the fiducial reco phase space.
1070- NPMCNTable (ptMC, ptReco, etaMC, etaReco, multReco, multMC, mcMultFT0[mcCollId]);
1076+ NPMCNTable (ptMC, ptReco, etaMC, etaReco, multReco, multMC, mcMultFT0[mcCollId], multFT0M, centFT0M );
10711077 }
10721078 }
10731079
@@ -1097,14 +1103,16 @@ struct NonPromptCascadeTask {
10971103
10981104 const float multMC = mcMult[mcid];
10991105 const float multMCFT0 = mcMultFT0[mcid];
1106+ const float multFT0M = mcCollisionRecoMultFT0M[mcid];
1107+ const float centFT0M = mcCollisionRecoCentFT0M[mcid];
11001108
11011109 mRegistrydNdeta .fill (HIST (" hdNdetaRM/hdNdetaRMNotInRecoTrk" ),
11021110 multMC,
11031111 mcp.pt ());
11041112
11051113 if (writeMcCollision[mcid]) {
11061114 // Missed track: accepted truth particle in a reconstructed MC collision, but no accepted reco track.
1107- NPMCNTable (mcp.pt (), -1 .f , mcp.eta (), InvalidEta, -1 .f , multMC, multMCFT0);
1115+ NPMCNTable (mcp.pt (), -1 .f , mcp.eta (), InvalidEta, -1 .f , multMC, multMCFT0, multFT0M, centFT0M );
11081116 }
11091117 }
11101118
@@ -1134,7 +1142,7 @@ struct NonPromptCascadeTask {
11341142
11351143 if (writeMcCollision[mcid]) {
11361144 // Missed collision: accepted truth particle from an MC collision with no reconstructed collision.
1137- NPMCNTable (mcp.pt (), -2 .f , mcp.eta (), InvalidEta, -2 .f , multMC, multMCFT0);
1145+ NPMCNTable (mcp.pt (), -2 .f , mcp.eta (), InvalidEta, -2 .f , multMC, multMCFT0, InvalidEta, InvalidEta );
11381146 }
11391147 }
11401148 }
0 commit comments