@@ -195,13 +195,19 @@ struct tofPidCollisionTimeQa {
195195 makeEfficiency (" effTOFT0ACEvTime" , " Efficiency of the TOF+T0AC Event Time" );
196196 makeEfficiency (" effT0AEvTime" , " Efficiency of the T0A Event Time" );
197197 makeEfficiency (" effT0CEvTime" , " Efficiency of the T0C Event Time" );
198+
199+ if (!doprocessMC) {
200+ return ;
201+ }
202+ histos.add (" MC/t" , " " , HistType::kTH1F , {{1000 , -1000 , 1000 , " MC time" }});
198203 }
199204
200- using Trks = soa::Join<aod::Tracks, aod::TracksExtra, aod::TOFSignal, aod::TOFEvTime, aod::pidEvTimeFlags, aod::pidTOFbeta, aod::pidTOFmass, aod::EvTimeTOFOnly, aod::TrackSelection>;
205+ using Trks = soa::Join<aod::Tracks, aod::TracksExtra, aod::TOFSignal, aod::TOFEvTime, aod::EvTimeTOFOnly, aod::pidEvTimeFlags,
206+ aod::pidTOFbeta, aod::pidTOFmass, aod::EvTimeTOFOnly, aod::TrackSelection>;
201207 using EvTimeCollisions = soa::Join<aod::Collisions, aod::EvSels, aod::FT0sCorrected>;
202208 // Define slice per collision
203209 Preslice<Trks> perCollision = aod::track::collisionId;
204- void process (Trks const & tracks, EvTimeCollisions const &)
210+ void processData (Trks const & tracks, EvTimeCollisions const &)
205211 {
206212 static int ncolls = 0 ;
207213 int lastCollisionId = -1 ; // Last collision ID analysed
@@ -211,7 +217,6 @@ struct tofPidCollisionTimeQa {
211217 } else if (t.collisionId () == lastCollisionId) { // Event was already processed
212218 continue ;
213219 }
214- // Create new table for the tracks in a collision
215220 lastCollisionId = t.collisionId (); // / Cache last collision ID
216221 auto collision = t.collision_as <EvTimeCollisions>();
217222
@@ -402,9 +407,35 @@ struct tofPidCollisionTimeQa {
402407 static_cast <TEfficiency*>(listEfficiency->FindObject (" effTOFT0ACEvTime" ))->Fill (t.isEvTimeTOF () && collision.has_foundFT0 () && collision.t0ACorrectedValid (), nTracksWithTOF);
403408 }
404409 }
410+ PROCESS_SWITCH (tofPidCollisionTimeQa, processData, " Process data" , true );
411+
412+ using TrksMC = soa::Join<Trks, aod::McTrackLabels>;
413+ using EvTimeCollisionsMC = soa::Join<EvTimeCollisions, aod::McCollisionLabels>;
414+ void processMC (TrksMC const & tracks,
415+ EvTimeCollisionsMC const &,
416+ aod::McParticles const &,
417+ aod::BCs const &,
418+ aod::McCollisions const &)
419+ {
420+ // static int ncolls = 0;
421+ int lastCollisionId = -1 ; // Last collision ID analysed
422+
423+ for (auto & t : tracks) {
424+ if (!t.has_collision ()) { // Track was not assigned to a collision
425+ continue ;
426+ } else if (t.collisionId () == lastCollisionId) { // Event was already processed
427+ continue ;
428+ }
429+ lastCollisionId = t.collisionId (); // / Cache last collision ID
430+ const auto & collision = t.collision_as <EvTimeCollisionsMC>();
431+ if (!collision.has_mcCollision ()) {
432+ continue ;
433+ }
434+ const auto & collisionMC = collision.mcCollision_as <aod::McCollisions>();
435+ histos.fill (HIST (" MC/t" ), collisionMC.t ());
436+ }
437+ }
438+ PROCESS_SWITCH (tofPidCollisionTimeQa, processMC, " Process MC" , true );
405439};
406440
407- WorkflowSpec defineDataProcessing (ConfigContext const & cfgc)
408- {
409- return WorkflowSpec{adaptAnalysisTask<tofPidCollisionTimeQa>(cfgc)};
410- }
441+ WorkflowSpec defineDataProcessing (ConfigContext const & cfgc) { return WorkflowSpec{adaptAnalysisTask<tofPidCollisionTimeQa>(cfgc)}; }
0 commit comments