88
99using namespace o2 ;
1010using namespace o2 ::framework;
11+ using namespace o2 ::framework::expressions;
12+
13+ using muonTracks = soa::Join<aod::FwdTracks, aod::McFwdTrackLabels>;
1114
1215struct wMuonFwdEfficiency {
16+ // partitions and cuts for muon tracks
17+ // Partition<aod::FwdTracks> MuonStandaloneTracks = aod::fwdtrack::trackType == 3;
18+ // Partition<aod::FwdTracks> GlobalMuonTracks = aod::fwdtrack::trackType == 0;
19+
20+ // High pT and quality cuts
21+ Filter etaFilter = (aod::fwdtrack::eta < -2 .5f ) && (aod::fwdtrack::eta > -4 .0f );
22+ Filter ptFilter = (aod::fwdtrack::pt > 10 .0f ) && (aod::fwdtrack::pt < 80 .0f );
23+ Filter chi2Filter = (aod::fwdtrack::chi2 > 0 .0f ) && (aod::fwdtrack::chi2 < 1000 .0f );
24+ Filter chi2MatchMCHMIDFilter = (aod::fwdtrack::chi2MatchMCHMID > 0 .0f ) && (aod::fwdtrack::chi2MatchMCHMID < 1000 .0f );
25+ Filter pDCAFilter = (aod::fwdtrack::pDca > 0 .0f ) && (aod::fwdtrack::pDca < 594 .0f );
26+ Filter rAbsEndFilter = (aod::fwdtrack::rAtAbsorberEnd > 17 .6f ) && (aod::fwdtrack::rAtAbsorberEnd < 89 .5f );
27+
1328 // Histogram registry: an object to hold your histograms
1429 HistogramRegistry histos{" histos" , {},
1530 OutputObjHandlingPolicy::AnalysisObject};
@@ -42,16 +57,16 @@ struct wMuonFwdEfficiency {
4257 if (!muonTracksOut.is_open ()) {
4358 LOGF (fatal, " Failed to open muonTracks.csv for writing" );
4459 }
45- muonTracksOut << " trackID,trackType,phi,tgl,signed1Pt,nClusters,pDCA,rAtAbsorberEnd,sign,chi2,chi2MatchMCHMID,chi2MatchMCHMFT,trackTime,eta,pt,p" << std::endl;
60+ muonTracksOut << " collisionID, trackID,trackType,phi,tgl,signed1Pt,nClusters,pDCA,rAtAbsorberEnd,sign,chi2,chi2MatchMCHMID,chi2MatchMCHMFT,trackTime,eta,pt,p" << std::endl;
4661
4762 // define axes you want to use
4863 const AxisSpec axisCounter{1 , 0 , +1 , " " };
4964 const AxisSpec axisEta{20 , -4.0 , -2.5 , " #eta" };
50- const AxisSpec axisPt{20 , 0.0 , +80.0 , " p_{T} (GeV/c)" };
65+ const AxisSpec axisPt{16 , 0.0 , +80.0 , " p_{T} (GeV/c)" };
5166 const AxisSpec axisDeltaPt{40 , 0.0 , +20.0 , " |p_{T}^{true} - p_{T}^{reco}|(GeV/c)" };
5267 const AxisSpec axisChi2{50 , 0.0 , +10.0 , " #chi^{2}" };
5368 const AxisSpec axisChi2Global{50 , 0.0 , +100.0 , " #chi^{2}" };
54- const AxisSpec axisDCA{100 , 0.0 , +1000 .0 , " pDCA" };
69+ const AxisSpec axisDCA{30 , 0.0 , +600 .0 , " pDCA" };
5570 const AxisSpec axisTrackType{5 , 0 , 5 , " Track Type" };
5671
5772 // create histograms
@@ -70,10 +85,8 @@ struct wMuonFwdEfficiency {
7085 histos.add (" trackType" , " trackType" , kTH1D , {axisTrackType});
7186 }
7287
73- using muonTracks = soa::Join<aod::FwdTracks, aod::McFwdTrackLabels>;
74-
7588 // void processReco(aod::Collision const& collision, muonTracks const& tracks, aod::McParticles const&) // run with collisions
76- void processReco (muonTracks const & tracks, aod::McParticles const &) // run without collisions
89+ void processReco (soa::Filtered< muonTracks> const & tracks, aod::McParticles const &) // run without collisions
7790 {
7891 histos.fill (HIST (" eventCounterReco" ), 0.5 );
7992
@@ -131,7 +144,7 @@ struct wMuonFwdEfficiency {
131144 trackGroups[mcTrackID].push_back (trackInfo);
132145
133146 // save all muon tracks to the output file
134- muonTracksOut << recoTrackID << " ," << muTrackType << " ," << track.phi () << " ," << track.tgl () << " ," << track.signed1Pt () << " ,"
147+ muonTracksOut << track. collisionId () << " , " << recoTrackID << " ," << muTrackType << " ," << track.phi () << " ," << track.tgl () << " ," << track.signed1Pt () << " ,"
135148 << static_cast <int64_t >(track.nClusters ()) << " ," << muDca << " ," << track.rAtAbsorberEnd () << " ,"
136149 << static_cast <int64_t >(track.sign ()) << " ," << muChi2 << " ," << muChi2MatchMCHMID << " ," << muChi2MatchMCHMFT << " ,"
137150 << track.trackTime () << " ," << muEta << " ," << muPt << " ," << track.p () << std::endl;
0 commit comments