@@ -185,7 +185,7 @@ struct NonPromptCascadeTask {
185185 //
186186 Produces<o2::aod::NPCollisionTable> NPCollsTable;
187187 Produces<o2::aod::NPMCChargedTable> NPMCNTable;
188- Produces<o2::aod::NPRecoChargedCandidate > NPRecoCandTable;
188+ Produces<o2::aod::NPRecoChargedCand > NPRecoCandTable;
189189
190190 using TracksExtData = soa::Join<aod::TracksIU, aod::TracksCovIU, aod::TracksExtra, aod::pidTPCFullKa, aod::pidTPCFullPi, aod::pidTPCFullPr, aod::pidTOFFullKa, aod::pidTOFFullPi, aod::pidTOFFullPr>;
191191 using TracksExtMC = soa::Join<aod::TracksIU, aod::TracksCovIU, aod::TracksExtra, aod::McTrackLabels, aod::pidTPCFullKa, aod::pidTPCFullPi, aod::pidTPCFullPr, aod::pidTOFFullKa, aod::pidTOFFullPi, aod::pidTOFFullPr>;
@@ -196,6 +196,7 @@ struct NonPromptCascadeTask {
196196
197197 Preslice<TracksExtData> perCollision = aod::track::collisionId;
198198 Preslice<TracksExtMC> perCollisionMC = aod::track::collisionId;
199+ Preslice<TracksWithSel> perCollisionSel = aod::track::collisionId;
199200
200201 HistogramRegistry mRegistry ;
201202
@@ -222,6 +223,7 @@ struct NonPromptCascadeTask {
222223 Configurable<float > cfgMaxMultFV0{" cfgMaxMultFV0" , 10000 .f , " Upper range of multiplicty FV0 histo" };
223224 Configurable<std::string> cfgPtEdgesdNdeta{" ptEdges" , " 0,0.2,0.4,0.6,0.8,1,1.2,1.6,2.0,2.4,2.8,3.2,3.6,4,4.5,5,5.5,6,7,8,10" , " Pt bin edges (comma-separated)" };
224225 Configurable<int > cfgDownscaleMB{" cfgDownscaleMB" , 1 , " Downscaling for pile up study sample" };
226+ Configurable<double > cfgEtaCutdNdeta{" cfgEtaCutdNdeta" , 0.8 , " Eta cut for charged tracks" };
225227
226228 Zorro mZorro ;
227229 OutputObj<ZorroSummary> mZorroSummary {" ZorroSummary" };
@@ -331,8 +333,9 @@ struct NonPromptCascadeTask {
331333 // dN/deta
332334 //
333335 bool runMCdNdeta = context.options ().get <bool >(" processdNdetaMC" );
336+ bool rundNdeta = context.options ().get <bool >(" processdNdeta" );
334337 // std::cout << "runMCdNdeta: " << runMCdNdeta << std::endl;
335- if (runMCdNdeta) {
338+ if (runMCdNdeta || rundNdeta ) {
336339 std::vector<double > ptBins;
337340 std::vector<std::string> tokens = o2::utils::Str::tokenize (cfgPtEdgesdNdeta, ' ,' );
338341 for (auto const & pts : tokens) {
@@ -344,13 +347,14 @@ struct NonPromptCascadeTask {
344347 }
345348 ptBins.push_back (pt);
346349 }
347- AxisSpec ptAxisMC{ptBins, " pT MC" };
348350 AxisSpec ptAxisReco{ptBins, " pT Reco" };
351+ AxisSpec ptAxisMC{ptBins, " pT MC" };
349352
350353 // multMeasured, multMC, ptMeasured, ptMC
351354 mRegistrydNdeta .add (" hdNdetaRM/hdNdetaRM" , " hdNdetaRM" , HistType::kTHnSparseF , {nTracksAxisMC, nTracksAxis, ptAxisMC, ptAxisReco});
352355 mRegistrydNdeta .add (" hdNdetaRM/hdNdetaRMNotInRecoCol" , " hdNdetaRMNotInRecoCol" , HistType::kTHnSparseF , {nTracksAxisMC, ptAxisMC});
353356 mRegistrydNdeta .add (" hdNdetaRM/hdNdetaRMNotInRecoTrk" , " hdNdetaRMNotInRecoTrk" , HistType::kTHnSparseF , {nTracksAxisMC, ptAxisMC});
357+ mRegistrydNdeta .add (" hdNdetaData" , " hdNdetaData" , HistType::kTH1F , {nTracksAxis});
354358 }
355359 }
356360
@@ -810,6 +814,10 @@ struct NonPromptCascadeTask {
810814 aod::McParticles const & mcParticles,
811815 TracksWithLabel const & tracks)
812816 {
817+ // ------------------------------------------------------------
818+ // Downscaling output table by BC as there is no pileup in MC
819+ // ------------------------------------------------------------
820+ int ds = 1 ;
813821 // -------------------------------------------------------------
814822 // MC mult for all MC coll
815823 // --------------------------------------------------------------
@@ -822,7 +830,7 @@ struct NonPromptCascadeTask {
822830 // apply your primary/eta/charge definition here
823831 if (!mcp.isPhysicalPrimary ())
824832 continue ;
825- if (std::abs (mcp.eta ()) > 0 . 5f )
833+ if (std::abs (mcp.eta ()) > cfgEtaCutdNdeta )
826834 continue ;
827835 int q = 0 ;
828836 if (auto pdg = pdgDB->GetParticle (mcp.pdgCode ())) {
@@ -859,7 +867,7 @@ struct NonPromptCascadeTask {
859867 // ------------------------------------------------------------
860868 std::vector<int > recoMultDense (colls.size (), 0 );
861869 for (auto const & trk : tracks) {
862- if (std::abs (trk.eta ()) > 0 . 5f ) {
870+ if (std::abs (trk.eta ()) > cfgEtaCutdNdeta ) {
863871 continue ;
864872 }
865873 const int collRowId = trk.collisionId ();
@@ -887,7 +895,7 @@ struct NonPromptCascadeTask {
887895 // ------------------------------------------------------------
888896 for (auto const & trk : tracks) {
889897 // Accept reco track
890- if (std::abs (trk.eta ()) > 0 . 5f ) {
898+ if (std::abs (trk.eta ()) > cfgEtaCutdNdeta ) {
891899 continue ;
892900 }
893901
@@ -931,7 +939,7 @@ struct NonPromptCascadeTask {
931939 if (!mcPar.isPhysicalPrimary ()) {
932940 continue ;
933941 }
934- if (std::abs (mcPar.eta ()) > 0 . 5f ) {
942+ if (std::abs (mcPar.eta ()) > cfgEtaCutdNdeta ) {
935943 continue ;
936944 }
937945
@@ -952,7 +960,10 @@ struct NonPromptCascadeTask {
952960 const float ptMC = mcPar.pt ();
953961
954962 mRegistrydNdeta .fill (HIST (" hdNdetaRM/hdNdetaRM" ), mult, multReco, ptMC, ptReco);
955- NPMCNTable (ptMC, ptReco, mult, multReco);
963+ if (ds % cfgDownscaleMB == 0 ) {
964+ NPMCNTable (ptMC, ptReco, mult, multReco);
965+ }
966+ ds++;
956967 }
957968
958969 // ------------------------------------------------------------
@@ -983,7 +994,7 @@ struct NonPromptCascadeTask {
983994
984995 PROCESS_SWITCH (NonPromptCascadeTask, processdNdetaMC, " process mc dN/deta" , false );
985996 //
986- void processdNdeta (CollisionCandidatesRun3 const & collisions, TracksWithSel const & tracks)
997+ void processdNdeta (CollisionCandidatesRun3 const & collisions, TracksWithSel const & tracks, aod::BCsWithTimestamps const & )
987998 {
988999 int ds = 1 ;
9891000 uint32_t orbitO = 0 ;
@@ -1006,22 +1017,26 @@ struct NonPromptCascadeTask {
10061017 mRunNumber = bc.runNumber ();
10071018 }
10081019 NPCollsTable (mRunNumber ,
1009- coll. bc (). globalBC () ,
1020+ globalBC,
10101021 coll.numContrib (),
10111022 coll.multNTracksGlobal (),
10121023 coll.centFT0M (),
10131024 coll.multFT0M ());
10141025
10151026 auto collIdx = NPCollsTable.lastIndex ();
1016- auto tracksThisColl = tracks.sliceBy (perCollision, coll.globalIndex ());
1027+ auto tracksThisColl = tracks.sliceBy (perCollisionSel, coll.globalIndex ());
1028+ float multreco = 0 .;
1029+ // std::cout << "tracks:" << tracksThisColl.size() << std::endl;
10171030 for (auto const & track : tracksThisColl) {
1018- if (std::fabs (track.eta ()) < 0.8 && track.tpcNClsFound () >= 80 && track.tpcNClsCrossedRows () >= 100 ) {
1031+ // std::cout << track.pt() << " tracks " << track.isGlobalTrack() << std::endl;
1032+ if (std::fabs (track.eta ()) < cfgEtaCutdNdeta && track.tpcNClsFound () >= 80 && track.tpcNClsCrossedRows () >= 100 ) {
10191033 if (track.isGlobalTrack ()) {
1020- // mults.multGlobalTracks ++;
1034+ multreco ++;
10211035 NPRecoCandTable (collIdx, track.pt ());
10221036 }
10231037 }
10241038 }
1039+ mRegistrydNdeta .fill (HIST (" hdNdetaData" ), multreco);
10251040 }
10261041 }
10271042 }
0 commit comments