@@ -73,16 +73,16 @@ struct CreateResolutionMap {
7373 // Configurable<bool> cfg_reject_fake_match_its_tpc_tof{"cfg_reject_fake_match_its_tpc_tof", false, "flag to reject fake match between ITS-TPC-TOF"};
7474 Configurable<bool > cfg_reject_fake_match_mft_mch{" cfg_reject_fake_match_mft_mch" , false , " flag to reject fake match between MFT-MCH" };
7575
76- ConfigurableAxis ConfPtGenBins{"ConfPtGenBins", {VARIABLE_WIDTH, 0.00, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.10, 0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18, 0.19, 0.20, 0.21, 0.22, 0.23, 0.24, 0.25, 0.26, 0.27, 0.28, 0.29, 0.30, 0.31, 0.32, 0.33, 0.34, 0.35, 0.36, 0.37, 0.38, 0.39, 0.40, 0.41, 0.42, 0.43, 0.44, 0.45, 0.46, 0.47, 0.48, 0.49, 0.50, 0.51, 0.52, 0.53, 0.54, 0.55, 0.56, 0.57, 0.58, 0.59, 0.60, 0.61, 0.62, 0.63, 0.64, 0.65, 0.66, 0.67, 0.68, 0.69, 0.70, 0.71, 0.72, 0.73, 0.74, 0.75, 0.76, 0.77, 0.78, 0.79, 0.80, 0.81, 0.82, 0.83, 0.84, 0.85, 0.86, 0.87, 0.88, 0.89, 0.90, 0.91, 0.92, 0.93, 0.94, 0.95, 0.96, 0.97, 0.98, 0.99, 1.00, 1.10, 1.20, 1.30, 1.40, 1.50, 1.60, 1.70, 1.80, 1.90, 2.00, 2.10, 2.20, 2.30, 2.40, 2.50, 2.60, 2.70, 2.80, 2.90, 3.00, 3.10, 3.20, 3.30, 3.40, 3.50, 3.60, 3.70, 3.80, 3.90, 4.00, 4.10, 4.20, 4.30, 4.40, 4.50, 4.60, 4.70, 4.80, 4.90, 5.00, 5.50, 6.00, 6.50, 7.00, 7.50, 8.00, 8.50, 9.00, 9.50, 10.00, 11.00, 12.00, 13.00, 14.00, 15.00, 16.00, 17.00, 18.00, 19.00, 20.00}, "gen. pT bins for output histograms"};
76+ ConfigurableAxis ConfPtGenBins{"ConfPtGenBins", {VARIABLE_WIDTH, 0.00, 0.05, 0.06, 0.07, 0.08, 0.09, 0.10, 0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18, 0.19, 0.20, 0.21, 0.22, 0.23, 0.24, 0.25, 0.26, 0.27, 0.28, 0.29, 0.30, 0.31, 0.32, 0.33, 0.34, 0.35, 0.36, 0.37, 0.38, 0.39, 0.40, 0.41, 0.42, 0.43, 0.44, 0.45, 0.46, 0.47, 0.48, 0.49, 0.50, 0.51, 0.52, 0.53, 0.54, 0.55, 0.56, 0.57, 0.58, 0.59, 0.60, 0.61, 0.62, 0.63, 0.64, 0.65, 0.66, 0.67, 0.68, 0.69, 0.70, 0.71, 0.72, 0.73, 0.74, 0.75, 0.76, 0.77, 0.78, 0.79, 0.80, 0.81, 0.82, 0.83, 0.84, 0.85, 0.86, 0.87, 0.88, 0.89, 0.90, 0.91, 0.92, 0.93, 0.94, 0.95, 0.96, 0.97, 0.98, 0.99, 1.00, 1.10, 1.20, 1.30, 1.40, 1.50, 1.60, 1.70, 1.80, 1.90, 2.00, 2.10, 2.20, 2.30, 2.40, 2.50, 2.60, 2.70, 2.80, 2.90, 3.00, 3.10, 3.20, 3.30, 3.40, 3.50, 3.60, 3.70, 3.80, 3.90, 4.00, 4.10, 4.20, 4.30, 4.40, 4.50, 4.60, 4.70, 4.80, 4.90, 5.00, 5.50, 6.00, 6.50, 7.00, 7.50, 8.00, 8.50, 9.00, 9.50, 10.00, 11.00, 12.00, 13.00, 14.00, 15.00, 16.00, 17.00, 18.00, 19.00, 20.00}, "gen. pT bins for output histograms"};
7777 ConfigurableAxis ConfCentBins{" ConfCentBins" , {VARIABLE_WIDTH, 0 , 10 , 30 , 50 , 110 }, " centrality (%) bins for output histograms" };
7878
7979 ConfigurableAxis ConfEtaCBGenBins{" ConfEtaCBGenBins" , {30 , -1.5 , +1.5 }, " gen. eta bins at midrapidity for output histograms" };
8080 ConfigurableAxis ConfEtaFWDGenBins{" ConfEtaFWDGenBins" , {40 , -5.5 , -1.5 }, " gen. eta bins at forward rapidity for output histograms" };
8181 ConfigurableAxis ConfPhiGenBins{" ConfPhiGenBins" , {72 , 0 , 2 .f * M_PI}, " gen. eta bins at forward rapidity for output histograms" };
8282
8383 ConfigurableAxis ConfRelDeltaPtBins{" ConfRelDeltaPtBins" , {200 , -1 .f , +1 .f }, " rel. dpt for output histograms" };
84- ConfigurableAxis ConfDeltaEtaBins{" ConfDeltaEtaBins" , {200 , -0 .5f , +0 .5f }, " deta bins for output histograms" };
85- ConfigurableAxis ConfDeltaPhiBins{" ConfDeltaPhiBins" , {200 , -0 .5f , +0 .5f }, " dphi bins for output histograms" };
84+ ConfigurableAxis ConfDeltaEtaBins{" ConfDeltaEtaBins" , {200 , -0 .2f , +0 .2f }, " deta bins for output histograms" };
85+ ConfigurableAxis ConfDeltaPhiBins{" ConfDeltaPhiBins" , {200 , -0 .2f , +0 .2f }, " dphi bins for output histograms" };
8686
8787 Configurable<bool > cfgFillTHnSparse{" cfgFillTHnSparse" , true , " fill THnSparse for output" };
8888 Configurable<bool > cfgFillTH2{" cfgFillTH2" , false , " fill TH2 for output" };
@@ -212,9 +212,11 @@ struct CreateResolutionMap {
212212 const AxisSpec axis_dphi{ConfDeltaPhiBins, " #varphi_{l}^{gen} - #varphi_{l}^{rec} (rad.)" };
213213 const AxisSpec axis_charge_gen{3 , -1.5 , +1.5 , " true sign" };
214214
215- registry.add (" Event/Electron/hImpPar_Centrality" , " true imapact parameter vs. estimated centrality;impact parameter (fm);centrality (%)" , kTH2F , {{200 , 0 , 20 }, {110 , 0 , 110 }}, true );
216- registry.add (" Event/Muon/hImpPar_Centrality" , " true imapact parameter vs. estimated centrality;impact parameter (fm);centrality (%)" , kTH2F , {{200 , 0 , 20 }, {110 , 0 , 110 }}, true );
217-
215+ // registry.add("Event/Electron/hImpPar_Centrality", "true imapact parameter vs. estimated centrality;impact parameter (fm);centrality (%)", kTH2F, {{200, 0, 20}, {110, 0, 110}}, true);
216+ // registry.add("Event/Electron/hImpPar_Centrality", "true imapact parameter vs. estimated centrality;impact parameter (fm);centrality (%)", kTH2F, {{200, 0, 20}, {110, 0, 110}}, true);
217+ if (doprocessGen) {
218+ registry.add (" Event/hGenID" , " generator ID;generator ID;Number of mc collisions" , kTH1F , {{7 , -1.5 , 5.5 }}, true );
219+ }
218220 if (cfgFillTH2) {
219221 registry.add (" Electron/hPt" , " rec. p_{T,l};p_{T,l} (GeV/c)" , kTH1F , {{1000 , 0 , 10 }}, false );
220222 registry.add (" Electron/hEtaPhi" , " rec. #eta vs. #varphi;#varphi_{l} (rad.);#eta_{l}" , kTH2F , {{90 , 0 , 2 * M_PI}, {100 , -5 , +5 }}, false );
@@ -685,7 +687,7 @@ struct CreateResolutionMap {
685687 using MyCollisions = Join<aod::Collisions, aod::EvSels, aod::McCollisionLabels, aod::CentFT0Ms, aod::CentFT0As, aod::CentFT0Cs>;
686688 using MyCollision = MyCollisions::iterator;
687689
688- using MyTracks = soa::Join<aod::Tracks , aod::TracksExtra, aod::TracksDCA, aod::TracksCov , aod::McTrackLabels>;
690+ using MyTracks = soa::Join<aod::TracksIU , aod::TracksExtra, aod::TracksCovIU , aod::McTrackLabels>;
689691 using MyTrack = MyTracks::iterator;
690692
691693 using MyFwdTracks = soa::Join<aod::FwdTracks, aod::FwdTracksCov, aod::McFwdTrackLabels>;
@@ -765,19 +767,22 @@ struct CreateResolutionMap {
765767 continue ;
766768 }
767769
768- auto mccollision = collision.template mcCollision_as <aod::McCollisions>();
769- if (cfgEventGeneratorType >= 0 && mccollision.getSubGeneratorId () != cfgEventGeneratorType) {
770- continue ;
771- }
772-
773770 float centrality = std::array{collision.centFT0M (), collision.centFT0A (), collision.centFT0C ()}[cfgCentEstimator];
774- registry.fill (HIST (" Event/Electron/hImpPar_Centrality" ), mccollision.impactParameter (), centrality);
771+ // auto mccollision = collision.template mcCollision_as<aod::McCollisions>();
772+ // registry.fill(HIST("Event/Electron/hImpPar_Centrality"), mccollision.impactParameter(), centrality);
775773
776774 auto tracks_per_coll = tracks.sliceBy (perCollision_mid, collision.globalIndex ());
777775 for (const auto & track : tracks_per_coll) {
778776 if (!track.has_mcParticle ()) {
779777 continue ;
780778 }
779+
780+ auto mctrack = track.template mcParticle_as <aod::McParticles>();
781+ auto mccollision_from_mctrack = mctrack.template mcCollision_as <aod::McCollisions>();
782+ if (cfgEventGeneratorType >= 0 && mccollision_from_mctrack.getSubGeneratorId () != cfgEventGeneratorType) {
783+ continue ;
784+ }
785+
781786 fillElectron (collision, track, centrality);
782787 } // end of track loop
783788 } // end of collision loop
@@ -799,20 +804,21 @@ struct CreateResolutionMap {
799804 continue ;
800805 }
801806
802- auto mccollision = collision.template mcCollision_as <aod::McCollisions>();
803- if (cfgEventGeneratorType >= 0 && mccollision.getSubGeneratorId () != cfgEventGeneratorType) {
804- continue ;
805- }
806-
807807 float centrality = std::array{collision.centFT0M (), collision.centFT0A (), collision.centFT0C ()}[cfgCentEstimator];
808- registry.fill (HIST (" Event/Electron/hImpPar_Centrality" ), mccollision.impactParameter (), centrality);
808+ // auto mccollision = collision.template mcCollision_as<aod::McCollisions>();
809+ // registry.fill(HIST("Event/Electron/hImpPar_Centrality"), mccollision.impactParameter(), centrality);
809810
810811 auto trackIdsThisCollision = trackIndices.sliceBy (trackIndicesPerCollision, collision.globalIndex ());
811812 for (const auto & trackId : trackIdsThisCollision) {
812813 auto track = trackId.template track_as <MyTracks>();
813814 if (!track.has_mcParticle ()) {
814815 continue ;
815816 }
817+ auto mctrack = track.template mcParticle_as <aod::McParticles>();
818+ auto mccollision_from_mctrack = mctrack.template mcCollision_as <aod::McCollisions>();
819+ if (cfgEventGeneratorType >= 0 && mccollision_from_mctrack.getSubGeneratorId () != cfgEventGeneratorType) {
820+ continue ;
821+ }
816822 fillElectron (collision, track, centrality);
817823 } // end of track loop
818824 } // end of collision loop
@@ -836,13 +842,9 @@ struct CreateResolutionMap {
836842 continue ;
837843 }
838844
839- auto mccollision = collision.template mcCollision_as <aod::McCollisions>();
840- if (cfgEventGeneratorType >= 0 && mccollision.getSubGeneratorId () != cfgEventGeneratorType) {
841- continue ;
842- }
843-
844845 float centrality = std::array{collision.centFT0M (), collision.centFT0A (), collision.centFT0C ()}[cfgCentEstimator];
845- registry.fill (HIST (" Event/Muon/hImpPar_Centrality" ), mccollision.impactParameter (), centrality);
846+ // auto mccollision = collision.template mcCollision_as<aod::McCollisions>();
847+ // registry.fill(HIST("Event/Muon/hImpPar_Centrality"), mccollision.impactParameter(), centrality);
846848
847849 auto sa_muons_per_coll = sa_muons->sliceByCached (o2::aod::fwdtrack::collisionId, collision.globalIndex (), cache);
848850 auto global_muons_per_coll = global_muons->sliceByCached (o2::aod::fwdtrack::collisionId, collision.globalIndex (), cache);
@@ -851,13 +853,24 @@ struct CreateResolutionMap {
851853 if (!muon.has_mcParticle ()) {
852854 continue ;
853855 }
856+
857+ auto mctrack = muon.template mcParticle_as <aod::McParticles>();
858+ auto mccollision_from_mctrack = mctrack.template mcCollision_as <aod::McCollisions>();
859+ if (cfgEventGeneratorType >= 0 && mccollision_from_mctrack.getSubGeneratorId () != cfgEventGeneratorType) {
860+ continue ;
861+ }
854862 fillMuon (collision, muon, centrality);
855863 } // end of standalone muon loop
856864
857865 for (const auto & muon : global_muons_per_coll) {
858866 if (!muon.has_mcParticle ()) {
859867 continue ;
860868 }
869+ auto mctrack = muon.template mcParticle_as <aod::McParticles>();
870+ auto mccollision_from_mctrack = mctrack.template mcCollision_as <aod::McCollisions>();
871+ if (cfgEventGeneratorType >= 0 && mccollision_from_mctrack.getSubGeneratorId () != cfgEventGeneratorType) {
872+ continue ;
873+ }
861874 fillMuon (collision, muon, centrality);
862875 } // end of global muon loop
863876
@@ -880,25 +893,34 @@ struct CreateResolutionMap {
880893 continue ;
881894 }
882895
883- auto mccollision = collision.template mcCollision_as <aod::McCollisions>();
884- if (cfgEventGeneratorType >= 0 && mccollision.getSubGeneratorId () != cfgEventGeneratorType) {
885- continue ;
886- }
887-
888896 float centrality = std::array{collision.centFT0M (), collision.centFT0A (), collision.centFT0C ()}[cfgCentEstimator];
889- registry.fill (HIST (" Event/Muon/hImpPar_Centrality" ), mccollision.impactParameter (), centrality);
897+ // auto mccollision = collision.template mcCollision_as<aod::McCollisions>();
898+ // registry.fill(HIST("Event/Muon/hImpPar_Centrality"), mccollision.impactParameter(), centrality);
890899
891900 auto fwdtrackIdsThisCollision = fwdtrackIndices.sliceBy (fwdtrackIndicesPerCollision, collision.globalIndex ());
892901 for (const auto & fwdtrackId : fwdtrackIdsThisCollision) {
893902 auto muon = fwdtrackId.template fwdtrack_as <MyFwdTracks>();
894903 if (!muon.has_mcParticle ()) {
895904 continue ;
896905 }
906+ auto mctrack = muon.template mcParticle_as <aod::McParticles>();
907+ auto mccollision_from_mctrack = mctrack.template mcCollision_as <aod::McCollisions>();
908+ if (cfgEventGeneratorType >= 0 && mccollision_from_mctrack.getSubGeneratorId () != cfgEventGeneratorType) {
909+ continue ;
910+ }
897911 fillMuon (collision, muon, centrality);
898912 } // end of fwdtrack loop
899913 } // end of collision loop
900914 }
901915 PROCESS_SWITCH (CreateResolutionMap, processMuonTTCA, " create resolution map for muon at forward rapidity" , false );
916+
917+ void processGen (aod::McCollisions const & mcCollisions)
918+ {
919+ for (const auto & mccollision : mcCollisions) {
920+ registry.fill (HIST (" Event/hGenID" ), mccollision.getSubGeneratorId ());
921+ }
922+ }
923+ PROCESS_SWITCH (CreateResolutionMap, processGen, " process generated info" , true );
902924};
903925WorkflowSpec defineDataProcessing (ConfigContext const & cfgc)
904926{
0 commit comments