@@ -129,7 +129,7 @@ struct StudyPnch {
129129 x->SetBinLabel (6 , " INEL > 0" );
130130 x->SetBinLabel (7 , " |vz| < 10" );
131131
132- if (doprocessData || doprocessCorrelation || doprocessMonteCarlo) {
132+ if (doprocessData || doprocessCorrelation || doprocessMonteCarlo || doprocessModifiedMonteCarlo ) {
133133 histos.add (" PhiVsEtaHist" , " PhiVsEtaHist" , kTH2F , {axisPhi, axisEta}, false );
134134 }
135135 if (doprocessData) {
@@ -148,6 +148,12 @@ struct StudyPnch {
148148 histos.add (" hResponseMatrix" , " hResponseMatrix" , kTH2F , {axisMult, axisMult}, true );
149149 histos.add (" hCountNTracks" , " hCountNTracks" , kTH1F , {axisCountNumberTracks}, true );
150150 }
151+ if (doprocessModifiedMonteCarlo) {
152+ histos.add (" hMultiplicityMCrecMod" , " hMultiplicityMCrecMod" , kTH1F , {axisMult}, true );
153+ histos.add (" hMultiplicityMCgenMod" , " hMultiplicityMCgenMod" , kTH1F , {axisMult}, true );
154+ histos.add (" hResponseMatrixMod" , " hResponseMatrixMod" , kTH2F , {axisMult, axisMult}, true );
155+ histos.add (" hCountNTracksMod" , " hCountNTracksMod" , kTH1F , {axisCountNumberTracks}, true );
156+ }
151157 if (doprocessEvtLossSigLossMC) {
152158 histos.add (" MCEventHist" , " MCEventHist" , kTH1F , {axisEvent}, false );
153159 auto hstat = histos.get <TH1>(HIST (" MCEventHist" ));
@@ -163,7 +169,7 @@ struct StudyPnch {
163169 bool isEventSelected (CheckCol const & col)
164170 {
165171 histos.fill (HIST (" EventHist" ), 1 );
166- if (isApplyTVX && !col.selection_bit (o2::aod::evsel::kIsTriggerTVX )) {
172+ if (!col.selection_bit (o2::aod::evsel::kIsTriggerTVX )) {
167173 return false ;
168174 }
169175 histos.fill (HIST (" EventHist" ), 2 );
@@ -343,6 +349,28 @@ struct StudyPnch {
343349 }
344350 }
345351
352+ void processModifiedMonteCarlo (soa::Join<aod::McCollisions, aod::McCollsExtra>::iterator const & mcCollision, ColMCRecTable const & RecCols, TrackMCTrueTable const & GenParticles, FilTrackMCRecTable const & RecTracks)
353+ {
354+ for (const auto & RecCol : RecCols) {
355+ if (!isEventSelected (RecCol)) {
356+ continue ;
357+ }
358+ if (RecCol.globalIndex () != mcCollision.bestCollisionIndex ()) {
359+ continue ;
360+ }
361+ auto recTracksPart = RecTracks.sliceBy (perCollision, RecCol.globalIndex ());
362+ auto multrec = countNTracksMcCol (recTracksPart, RecCol);
363+ if (multrec > 0 ) {
364+ histos.fill (HIST (" hMultiplicityMCrec" ), multrec);
365+ }
366+ auto multgen = countGenTracks (GenParticles, mcCollision);
367+ if (multgen > 0 && multrec > 0 ) {
368+ histos.fill (HIST (" hMultiplicityMCgen" ), multgen);
369+ histos.fill (HIST (" hResponseMatrix" ), multrec, multgen);
370+ }
371+ }
372+ }
373+
346374 void processEvtLossSigLossMC (soa::Join<ColMCTrueTable, aod::MultMCExtras>::iterator const & mcCollision, ColMCRecTable const & RecCols, TrackMCTrueTable const & GenParticles)
347375 {
348376 if (isApplyInelgt0 && !mcCollision.isInelGt0 ()) {
@@ -387,6 +415,7 @@ struct StudyPnch {
387415 PROCESS_SWITCH (StudyPnch, processData, " process data CentFT0C" , false );
388416 PROCESS_SWITCH (StudyPnch, processCorrelation, " do correlation study in data" , false );
389417 PROCESS_SWITCH (StudyPnch, processMonteCarlo, " process MC CentFT0C" , false );
418+ PROCESS_SWITCH (StudyPnch, processModifiedMonteCarlo, " process MC CentFT0C" , false );
390419 PROCESS_SWITCH (StudyPnch, processEvtLossSigLossMC, " process Signal Loss, Event Loss" , false );
391420};
392421
0 commit comments