2323#include < iostream>
2424#include < TPDGCode.h>
2525#include < TDatabasePDG.h>
26+ #include < vector>
2627
2728#include " bestCollisionTable.h"
2829#include " CCDB/BasicCCDBManager.h"
@@ -103,7 +104,7 @@ static constexpr TrackSelectionFlags::flagtype trackSelectionDCA =
103104static constexpr TrackSelectionFlags::flagtype trackSelectionDCAXYonly =
104105 TrackSelectionFlags::kDCAxy ;
105106
106- AxisSpec axisEvent{9 , 0.5 , 9 .5 , " #Event" , " EventAxis" };
107+ AxisSpec axisEvent{10 , 0.5 , 10 .5 , " #Event" , " EventAxis" };
107108AxisSpec axisVtxZ{40 , -20 , 20 , " Vertex Z" , " VzAxis" };
108109AxisSpec axisEta{40 , -2 , 2 , " #eta" , " EtaAxis" };
109110AxisSpec axisPhi{{0 , M_PI / 4 , M_PI / 2 , M_PI * 3 . / 4 , M_PI, M_PI * 5 . / 4 , M_PI * 3 . / 2 , M_PI * 7 . / 4 , 2 * M_PI}, " #phi" , " PhiAxis" };
@@ -150,6 +151,8 @@ struct HeavyIonMultiplicity {
150151 Configurable<bool > IsApplyExtraPhiCut{" IsApplyExtraPhiCut" , false , " Enable extra phi cut" };
151152 Configurable<float > NPVtracksCut{" NPVtracksCut" , 1 .0f , " Apply extra NPVtracks cut" };
152153 Configurable<float > FT0CCut{" FT0CCut" , 1 .0f , " Apply extra FT0C cut" };
154+ Configurable<bool > IsApplyNoCollInTimeRangeStandard{" IsApplyNoCollInTimeRangeStandard" , true , " Enable NoCollInTimeRangeStandard cut" };
155+ Configurable<bool > IsApplyFT0CbasedOccupancy{" IsApplyFT0CbasedOccupancy" , true , " Enable FT0CbasedOccupancy cut" };
153156
154157 void init (InitContext const &)
155158 {
@@ -176,6 +179,7 @@ struct HeavyIonMultiplicity {
176179 x->SetBinLabel (7 , " kIsVertexTRDmatched" ); // at least one of vertex contributors is matched to TRD
177180 x->SetBinLabel (8 , " Centrality" );
178181 x->SetBinLabel (9 , " ApplyExtraCorrCut" );
182+ x->SetBinLabel (10 , " ApplyNoCollInTimeRangeStandard" );
179183
180184 if (doprocessData) {
181185 histos.add (" CentPercentileHist" , " CentPercentileHist" , kTH1D , {axisCent}, false );
@@ -312,6 +316,11 @@ struct HeavyIonMultiplicity {
312316 return false ;
313317 }
314318 histos.fill (HIST (" EventHist" ), 9 );
319+
320+ if (IsApplyNoCollInTimeRangeStandard && !col.selection_bit (o2::aod::evsel::kNoCollInTimeRangeStandard )) {
321+ return false ;
322+ }
323+ histos.fill (HIST (" EventHist" ), 10 );
315324 return true ;
316325 }
317326
@@ -329,7 +338,8 @@ struct HeavyIonMultiplicity {
329338 }
330339 histos.fill (HIST (" VtxZHist" ), collision.posZ ());
331340 histos.fill (HIST (" CentPercentileHist" ), collision.centFT0C ());
332- histos.fill (HIST (" hdatazvtxcent" ), collision.posZ (), collision.centFT0C (), collision.trackOccupancyInTimeRange ());
341+ auto OccupancyValue = IsApplyFT0CbasedOccupancy ? collision.ft0cOccupancyInTimeRange () : collision.trackOccupancyInTimeRange ();
342+ histos.fill (HIST (" hdatazvtxcent" ), collision.posZ (), collision.centFT0C (), OccupancyValue);
333343
334344 auto NchTracks = 0 ;
335345 for (auto & track : tracks) {
@@ -338,11 +348,11 @@ struct HeavyIonMultiplicity {
338348 }
339349 histos.fill (HIST (" PhiVsEtaHist" ), track.phi (), track.eta ());
340350 NchTracks++;
341- histos.fill (HIST (" hdatadndeta" ), collision.posZ (), collision.centFT0C (), collision. trackOccupancyInTimeRange () , track.eta (), track.phi (), kGlobalplusITS );
351+ histos.fill (HIST (" hdatadndeta" ), collision.posZ (), collision.centFT0C (), OccupancyValue , track.eta (), track.phi (), kGlobalplusITS );
342352 if (track.hasTPC ()) {
343- histos.fill (HIST (" hdatadndeta" ), collision.posZ (), collision.centFT0C (), collision. trackOccupancyInTimeRange () , track.eta (), track.phi (), kGlobalonly );
353+ histos.fill (HIST (" hdatadndeta" ), collision.posZ (), collision.centFT0C (), OccupancyValue , track.eta (), track.phi (), kGlobalonly );
344354 } else {
345- histos.fill (HIST (" hdatadndeta" ), collision.posZ (), collision.centFT0C (), collision. trackOccupancyInTimeRange () , track.eta (), track.phi (), kITSonly );
355+ histos.fill (HIST (" hdatadndeta" ), collision.posZ (), collision.centFT0C (), OccupancyValue , track.eta (), track.phi (), kITSonly );
346356 }
347357 }
348358 histos.fill (HIST (" hdatamult" ), collision.posZ (), NchTracks, collision.centFT0C ());
@@ -382,15 +392,16 @@ struct HeavyIonMultiplicity {
382392 }
383393 histos.fill (HIST (" VtxZHist" ), RecCollision.posZ ());
384394 histos.fill (HIST (" CentPercentileMCRecHist" ), RecCollision.centFT0C ());
385- histos.fill (HIST (" hmczvtxcent" ), RecCollision.posZ (), RecCollision.centFT0C (), RecCollision.trackOccupancyInTimeRange ());
395+ auto OccupancyValue = IsApplyFT0CbasedOccupancy ? RecCollision.ft0cOccupancyInTimeRange () : RecCollision.trackOccupancyInTimeRange ();
396+ histos.fill (HIST (" hmczvtxcent" ), RecCollision.posZ (), RecCollision.centFT0C (), OccupancyValue);
386397
387398 auto Rectrackspart = RecTracks.sliceBy (perCollision, RecCollision.globalIndex ());
388399 for (auto & Rectrack : Rectrackspart) {
389400 if (!IsTrackSelected (Rectrack)) {
390401 continue ;
391402 }
392403 histos.fill (HIST (" MCrecPhiVsEtaHist" ), Rectrack.phi (), Rectrack.eta ());
393- histos.fill (HIST (" hmcrecdndeta" ), RecCollision.posZ (), RecCollision.centFT0C (), RecCollision. trackOccupancyInTimeRange () , Rectrack.eta (), Rectrack.phi ());
404+ histos.fill (HIST (" hmcrecdndeta" ), RecCollision.posZ (), RecCollision.centFT0C (), OccupancyValue , Rectrack.eta (), Rectrack.phi ());
394405 } // track (mcrec) loop
395406
396407 for (auto & particle : GenParticles) {
@@ -421,7 +432,8 @@ struct HeavyIonMultiplicity {
421432 }
422433 histos.fill (HIST (" VtxZHist" ), RecCollision.posZ ());
423434 histos.fill (HIST (" CentPercentileMCRecHist" ), RecCollision.centFT0C ());
424- histos.fill (HIST (" hmczvtxcent" ), RecCollision.posZ (), RecCollision.centFT0C (), RecCollision.trackOccupancyInTimeRange ());
435+ auto OccupancyValue = IsApplyFT0CbasedOccupancy ? RecCollision.ft0cOccupancyInTimeRange () : RecCollision.trackOccupancyInTimeRange ();
436+ histos.fill (HIST (" hmczvtxcent" ), RecCollision.posZ (), RecCollision.centFT0C (), OccupancyValue);
425437
426438 auto Rectrackspart = RecTracks.sliceBy (perCollision, RecCollision.globalIndex ());
427439 for (auto & Rectrack : Rectrackspart) {
@@ -464,7 +476,8 @@ struct HeavyIonMultiplicity {
464476 }
465477 histos.fill (HIST (" VtxZHist" ), RecCollision.posZ ());
466478 histos.fill (HIST (" CentPercentileMCRecHist" ), RecCollision.centFT0C ());
467- histos.fill (HIST (" hmczvtxcent" ), RecCollision.posZ (), RecCollision.centFT0C (), RecCollision.trackOccupancyInTimeRange ());
479+ auto OccupancyValue = IsApplyFT0CbasedOccupancy ? RecCollision.ft0cOccupancyInTimeRange () : RecCollision.trackOccupancyInTimeRange ();
480+ histos.fill (HIST (" hmczvtxcent" ), RecCollision.posZ (), RecCollision.centFT0C (), OccupancyValue);
468481
469482 auto Rectrackspart = RecTracks.sliceBy (perCollision, RecCollision.globalIndex ());
470483 for (auto & Rectrack : Rectrackspart) {
@@ -503,15 +516,16 @@ struct HeavyIonMultiplicity {
503516 }
504517 histos.fill (HIST (" VtxZHist" ), RecCollision.posZ ());
505518 histos.fill (HIST (" CentPercentileMCRecHist" ), RecCollision.centFT0C ());
506- histos.fill (HIST (" hmczvtxcent" ), RecCollision.posZ (), RecCollision.centFT0C (), RecCollision.trackOccupancyInTimeRange ());
519+ auto OccupancyValue = IsApplyFT0CbasedOccupancy ? RecCollision.ft0cOccupancyInTimeRange () : RecCollision.trackOccupancyInTimeRange ();
520+ histos.fill (HIST (" hmczvtxcent" ), RecCollision.posZ (), RecCollision.centFT0C (), OccupancyValue);
507521
508522 auto Rectrackspart = RecTracks.sliceBy (perCollision, RecCollision.globalIndex ());
509523 std::vector<Int_t> mclabels;
510524 for (auto & Rectrack : Rectrackspart) {
511525 if (!IsTrackSelected (Rectrack)) {
512526 continue ;
513527 }
514- histos.fill (HIST (" FillMCrecSpecies" ), RecCollision.centFT0C (), RecCollision. trackOccupancyInTimeRange () , Rectrack.eta (), Double_t (kSpAll ));
528+ histos.fill (HIST (" FillMCrecSpecies" ), RecCollision.centFT0C (), OccupancyValue , Rectrack.eta (), Double_t (kSpAll ));
515529 if (Rectrack.has_mcParticle ()) {
516530 Int_t pid = kBkg ;
517531 auto mcpart = Rectrack.template mcParticle_as <aod::McParticles>();
@@ -543,9 +557,9 @@ struct HeavyIonMultiplicity {
543557 pid = kBkg ;
544558 }
545559 mclabels.push_back (Rectrack.mcParticleId ());
546- histos.fill (HIST (" FillMCrecSpecies" ), RecCollision.centFT0C (), RecCollision. trackOccupancyInTimeRange () , Rectrack.eta (), Double_t (pid));
560+ histos.fill (HIST (" FillMCrecSpecies" ), RecCollision.centFT0C (), OccupancyValue , Rectrack.eta (), Double_t (pid));
547561 } else {
548- histos.fill (HIST (" FillMCrecSpecies" ), RecCollision.centFT0C (), RecCollision. trackOccupancyInTimeRange () , Rectrack.eta (), Double_t (kBkg ));
562+ histos.fill (HIST (" FillMCrecSpecies" ), RecCollision.centFT0C (), OccupancyValue , Rectrack.eta (), Double_t (kBkg ));
549563 }
550564 } // rec track loop
551565
0 commit comments