@@ -53,12 +53,12 @@ using namespace o2::framework::expressions;
5353using namespace o2 ::aod::track;
5454using namespace o2 ::aod::evsel;
5555
56- using CollisionDataTable = soa::Join<aod::Collisions, aod::CentFT0Cs, aod::EvSels , aod::Mults >;
56+ using CollisionDataTable = soa::Join<aod::Collisions, aod::EvSels, aod::Mults, aod:: CentFT0Cs, aod::CentFT0CVariant1s , aod::CentFT0Ms >;
5757using TrackDataTable = soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksDCA, aod::TrackSelection>;
5858using FilTrackDataTable = soa::Filtered<TrackDataTable>;
5959using CollisionMCTrueTable = aod::McCollisions;
6060using TrackMCTrueTable = aod::McParticles;
61- using CollisionMCRecTable = soa::SmallGroups<soa::Join<aod::McCollisionLabels, aod::Collisions, aod::CentFT0Cs, aod::EvSels , aod::Mults >>;
61+ using CollisionMCRecTable = soa::SmallGroups<soa::Join<aod::McCollisionLabels, aod::Collisions, aod::EvSels, aod::Mults, aod:: CentFT0Cs, aod::CentFT0CVariant1s , aod::CentFT0Ms >>;
6262using TrackMCRecTable = soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksDCA, aod::McTrackLabels, aod::TrackSelection>;
6363using FilTrackMCRecTable = soa::Filtered<TrackMCRecTable>;
6464using v0trackcandidates = soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksDCA, aod::TrackSelection, aod::pidTPCFullPi, aod::pidTPCFullPr>;
@@ -104,7 +104,7 @@ static constexpr TrackSelectionFlags::flagtype trackSelectionDCA =
104104static constexpr TrackSelectionFlags::flagtype trackSelectionDCAXYonly =
105105 TrackSelectionFlags::kDCAxy ;
106106
107- AxisSpec axisEvent{10 , 0.5 , 10 .5 , " #Event" , " EventAxis" };
107+ AxisSpec axisEvent{12 , 0.5 , 12 .5 , " #Event" , " EventAxis" };
108108AxisSpec axisVtxZ{40 , -20 , 20 , " Vertex Z" , " VzAxis" };
109109AxisSpec axisEta{40 , -2 , 2 , " #eta" , " EtaAxis" };
110110AxisSpec 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" };
@@ -152,7 +152,12 @@ struct HeavyIonMultiplicity {
152152 Configurable<float > NPVtracksCut{" NPVtracksCut" , 1 .0f , " Apply extra NPVtracks cut" };
153153 Configurable<float > FT0CCut{" FT0CCut" , 1 .0f , " Apply extra FT0C cut" };
154154 Configurable<bool > IsApplyNoCollInTimeRangeStandard{" IsApplyNoCollInTimeRangeStandard" , true , " Enable NoCollInTimeRangeStandard cut" };
155+ Configurable<bool > IsApplyNoCollInRofStandard{" IsApplyNoCollInRofStandard" , true , " Enable NoCollInRofStandard cut" };
156+ Configurable<bool > IsApplyNoHighMultCollInPrevRof{" IsApplyNoHighMultCollInPrevRof" , true , " Enable NoHighMultCollInPrevRof cut" };
155157 Configurable<bool > IsApplyFT0CbasedOccupancy{" IsApplyFT0CbasedOccupancy" , true , " Enable FT0CbasedOccupancy cut" };
158+ Configurable<bool > IsApplyCentFT0C{" IsApplyCentFT0C" , false , " Centrality based on FT0C" };
159+ Configurable<bool > IsApplyCentFT0CVariant1{" IsApplyCentFT0Cvariant1" , false , " Centrality based on FT0C variant1" };
160+ Configurable<bool > IsApplyCentFT0M{" IsApplyCentFT0M" , false , " Centrality based on FT0A + FT0C" };
156161
157162 void init (InitContext const &)
158163 {
@@ -180,6 +185,8 @@ struct HeavyIonMultiplicity {
180185 x->SetBinLabel (8 , " Centrality" );
181186 x->SetBinLabel (9 , " ApplyExtraCorrCut" );
182187 x->SetBinLabel (10 , " ApplyNoCollInTimeRangeStandard" );
188+ x->SetBinLabel (11 , " ApplyNoCollInRofStandard" );
189+ x->SetBinLabel (12 , " ApplyNoHighMultCollInPrevRof" );
183190
184191 if (doprocessData) {
185192 histos.add (" CentPercentileHist" , " CentPercentileHist" , kTH1D , {axisCent}, false );
@@ -321,9 +328,33 @@ struct HeavyIonMultiplicity {
321328 return false ;
322329 }
323330 histos.fill (HIST (" EventHist" ), 10 );
331+
332+ if (IsApplyNoCollInRofStandard && !col.selection_bit (o2::aod::evsel::kNoCollInRofStandard )) {
333+ return false ;
334+ }
335+ histos.fill (HIST (" EventHist" ), 11 );
336+
337+ if (IsApplyNoHighMultCollInPrevRof && !col.selection_bit (o2::aod::evsel::kNoHighMultCollInPrevRof )) {
338+ return false ;
339+ }
340+ histos.fill (HIST (" EventHist" ), 12 );
324341 return true ;
325342 }
326-
343+ template <typename CheckColCent>
344+ float SelectColCentrality (CheckColCent const & col)
345+ {
346+ auto cent = -1 ;
347+ if (IsApplyCentFT0C) {
348+ cent = col.centFT0C ();
349+ }
350+ if (IsApplyCentFT0CVariant1) {
351+ cent = col.centFT0CVariant1 ();
352+ }
353+ if (IsApplyCentFT0M) {
354+ cent = col.centFT0M ();
355+ }
356+ return cent;
357+ }
327358 expressions::Filter trackSelectionProperMixed = ncheckbit(aod::track::v001::detectorMap, (uint8_t )o2::aod::track::ITS) &&
328359 ncheckbit (aod::track::trackCutFlag, trackSelectionITS) &&
329360 ifnode (ncheckbit(aod::track::v001::detectorMap, (uint8_t )o2::aod::track::TPC),
@@ -337,9 +368,9 @@ struct HeavyIonMultiplicity {
337368 return ;
338369 }
339370 histos.fill (HIST (" VtxZHist" ), collision.posZ ());
340- histos.fill (HIST (" CentPercentileHist" ), collision. centFT0C ( ));
371+ histos.fill (HIST (" CentPercentileHist" ), SelectColCentrality (collision ));
341372 auto OccupancyValue = IsApplyFT0CbasedOccupancy ? collision.ft0cOccupancyInTimeRange () : collision.trackOccupancyInTimeRange ();
342- histos.fill (HIST (" hdatazvtxcent" ), collision.posZ (), collision. centFT0C ( ), OccupancyValue);
373+ histos.fill (HIST (" hdatazvtxcent" ), collision.posZ (), SelectColCentrality (collision ), OccupancyValue);
343374
344375 auto NchTracks = 0 ;
345376 for (auto & track : tracks) {
@@ -348,14 +379,14 @@ struct HeavyIonMultiplicity {
348379 }
349380 histos.fill (HIST (" PhiVsEtaHist" ), track.phi (), track.eta ());
350381 NchTracks++;
351- histos.fill (HIST (" hdatadndeta" ), collision.posZ (), collision. centFT0C ( ), OccupancyValue, track.eta (), track.phi (), kGlobalplusITS );
382+ histos.fill (HIST (" hdatadndeta" ), collision.posZ (), SelectColCentrality (collision ), OccupancyValue, track.eta (), track.phi (), kGlobalplusITS );
352383 if (track.hasTPC ()) {
353- histos.fill (HIST (" hdatadndeta" ), collision.posZ (), collision. centFT0C ( ), OccupancyValue, track.eta (), track.phi (), kGlobalonly );
384+ histos.fill (HIST (" hdatadndeta" ), collision.posZ (), SelectColCentrality (collision ), OccupancyValue, track.eta (), track.phi (), kGlobalonly );
354385 } else {
355- histos.fill (HIST (" hdatadndeta" ), collision.posZ (), collision. centFT0C ( ), OccupancyValue, track.eta (), track.phi (), kITSonly );
386+ histos.fill (HIST (" hdatadndeta" ), collision.posZ (), SelectColCentrality (collision ), OccupancyValue, track.eta (), track.phi (), kITSonly );
356387 }
357388 }
358- histos.fill (HIST (" hdatamult" ), collision.posZ (), NchTracks, collision. centFT0C ( ));
389+ histos.fill (HIST (" hdatamult" ), collision.posZ (), NchTracks, SelectColCentrality (collision ));
359390 }
360391 PROCESS_SWITCH (HeavyIonMultiplicity, processData, " process data CentFT0C" , false );
361392
@@ -391,30 +422,30 @@ struct HeavyIonMultiplicity {
391422 continue ;
392423 }
393424 histos.fill (HIST (" VtxZHist" ), RecCollision.posZ ());
394- histos.fill (HIST (" CentPercentileMCRecHist" ), RecCollision. centFT0C ( ));
425+ histos.fill (HIST (" CentPercentileMCRecHist" ), SelectColCentrality (RecCollision ));
395426 auto OccupancyValue = IsApplyFT0CbasedOccupancy ? RecCollision.ft0cOccupancyInTimeRange () : RecCollision.trackOccupancyInTimeRange ();
396- histos.fill (HIST (" hmczvtxcent" ), RecCollision.posZ (), RecCollision. centFT0C ( ), OccupancyValue);
427+ histos.fill (HIST (" hmczvtxcent" ), RecCollision.posZ (), SelectColCentrality (RecCollision ), OccupancyValue);
397428
398429 auto Rectrackspart = RecTracks.sliceBy (perCollision, RecCollision.globalIndex ());
399430 for (auto & Rectrack : Rectrackspart) {
400431 if (!IsTrackSelected (Rectrack)) {
401432 continue ;
402433 }
403434 histos.fill (HIST (" MCrecPhiVsEtaHist" ), Rectrack.phi (), Rectrack.eta ());
404- histos.fill (HIST (" hmcrecdndeta" ), RecCollision.posZ (), RecCollision. centFT0C ( ), OccupancyValue, Rectrack.eta (), Rectrack.phi ());
435+ histos.fill (HIST (" hmcrecdndeta" ), RecCollision.posZ (), SelectColCentrality (RecCollision ), OccupancyValue, Rectrack.eta (), Rectrack.phi ());
405436 } // track (mcrec) loop
406437
407438 for (auto & particle : GenParticles) {
408439 if (!IsGenTrackSelected (particle)) {
409440 continue ;
410441 }
411- histos.fill (HIST (" hmcgendndeta" ), RecCollision.posZ (), RecCollision. centFT0C ( ), particle.eta (), particle.phi (), kNoGenpTVar );
442+ histos.fill (HIST (" hmcgendndeta" ), RecCollision.posZ (), SelectColCentrality (RecCollision ), particle.eta (), particle.phi (), kNoGenpTVar );
412443 if (particle.pt () < 0.1 ) {
413- histos.fill (HIST (" hmcgendndeta" ), RecCollision.posZ (), RecCollision. centFT0C ( ), particle.eta (), particle.phi (), kGenpTup , -10.0 * particle.pt () + 2 );
414- histos.fill (HIST (" hmcgendndeta" ), RecCollision.posZ (), RecCollision. centFT0C ( ), particle.eta (), particle.phi (), kGenpTdown , 5.0 * particle.pt () + 0.5 );
444+ histos.fill (HIST (" hmcgendndeta" ), RecCollision.posZ (), SelectColCentrality (RecCollision ), particle.eta (), particle.phi (), kGenpTup , -10.0 * particle.pt () + 2 );
445+ histos.fill (HIST (" hmcgendndeta" ), RecCollision.posZ (), SelectColCentrality (RecCollision ), particle.eta (), particle.phi (), kGenpTdown , 5.0 * particle.pt () + 0.5 );
415446 } else {
416- histos.fill (HIST (" hmcgendndeta" ), RecCollision.posZ (), RecCollision. centFT0C ( ), particle.eta (), particle.phi (), kGenpTup );
417- histos.fill (HIST (" hmcgendndeta" ), RecCollision.posZ (), RecCollision. centFT0C ( ), particle.eta (), particle.phi (), kGenpTdown );
447+ histos.fill (HIST (" hmcgendndeta" ), RecCollision.posZ (), SelectColCentrality (RecCollision ), particle.eta (), particle.phi (), kGenpTup );
448+ histos.fill (HIST (" hmcgendndeta" ), RecCollision.posZ (), SelectColCentrality (RecCollision ), particle.eta (), particle.phi (), kGenpTdown );
418449 }
419450 } // track (mcgen) loop
420451 } // collision loop
@@ -431,9 +462,9 @@ struct HeavyIonMultiplicity {
431462 continue ;
432463 }
433464 histos.fill (HIST (" VtxZHist" ), RecCollision.posZ ());
434- histos.fill (HIST (" CentPercentileMCRecHist" ), RecCollision. centFT0C ( ));
465+ histos.fill (HIST (" CentPercentileMCRecHist" ), SelectColCentrality (RecCollision ));
435466 auto OccupancyValue = IsApplyFT0CbasedOccupancy ? RecCollision.ft0cOccupancyInTimeRange () : RecCollision.trackOccupancyInTimeRange ();
436- histos.fill (HIST (" hmczvtxcent" ), RecCollision.posZ (), RecCollision. centFT0C ( ), OccupancyValue);
467+ histos.fill (HIST (" hmczvtxcent" ), RecCollision.posZ (), SelectColCentrality (RecCollision ), OccupancyValue);
437468
438469 auto Rectrackspart = RecTracks.sliceBy (perCollision, RecCollision.globalIndex ());
439470 for (auto & Rectrack : Rectrackspart) {
@@ -443,7 +474,7 @@ struct HeavyIonMultiplicity {
443474 if (Rectrack.has_mcParticle ()) {
444475 auto mcpart = Rectrack.mcParticle ();
445476 if (mcpart.isPhysicalPrimary ()) {
446- histos.fill (HIST (" hmcrecdndpt" ), RecCollision. centFT0C ( ), mcpart.pt ());
477+ histos.fill (HIST (" hmcrecdndpt" ), SelectColCentrality (RecCollision ), mcpart.pt ());
447478 }
448479 }
449480 }
@@ -452,13 +483,13 @@ struct HeavyIonMultiplicity {
452483 if (!IsGenTrackSelected (particle)) {
453484 continue ;
454485 }
455- histos.fill (HIST (" hmcgendndpt" ), RecCollision. centFT0C ( ), particle.pt (), kNoGenpTVar );
486+ histos.fill (HIST (" hmcgendndpt" ), SelectColCentrality (RecCollision ), particle.pt (), kNoGenpTVar );
456487 if (particle.pt () < 0.1 ) {
457- histos.fill (HIST (" hmcgendndpt" ), RecCollision. centFT0C ( ), particle.pt (), kGenpTup , -10.0 * particle.pt () + 2 );
458- histos.fill (HIST (" hmcgendndpt" ), RecCollision. centFT0C ( ), particle.pt (), kGenpTdown , 5.0 * particle.pt () + 0.5 );
488+ histos.fill (HIST (" hmcgendndpt" ), SelectColCentrality (RecCollision ), particle.pt (), kGenpTup , -10.0 * particle.pt () + 2 );
489+ histos.fill (HIST (" hmcgendndpt" ), SelectColCentrality (RecCollision ), particle.pt (), kGenpTdown , 5.0 * particle.pt () + 0.5 );
459490 } else {
460- histos.fill (HIST (" hmcgendndpt" ), RecCollision. centFT0C ( ), particle.pt (), kGenpTup );
461- histos.fill (HIST (" hmcgendndpt" ), RecCollision. centFT0C ( ), particle.pt (), kGenpTdown );
491+ histos.fill (HIST (" hmcgendndpt" ), SelectColCentrality (RecCollision ), particle.pt (), kGenpTup );
492+ histos.fill (HIST (" hmcgendndpt" ), SelectColCentrality (RecCollision ), particle.pt (), kGenpTdown );
462493 }
463494 }
464495 }
@@ -475,9 +506,9 @@ struct HeavyIonMultiplicity {
475506 continue ;
476507 }
477508 histos.fill (HIST (" VtxZHist" ), RecCollision.posZ ());
478- histos.fill (HIST (" CentPercentileMCRecHist" ), RecCollision. centFT0C ( ));
509+ histos.fill (HIST (" CentPercentileMCRecHist" ), SelectColCentrality (RecCollision ));
479510 auto OccupancyValue = IsApplyFT0CbasedOccupancy ? RecCollision.ft0cOccupancyInTimeRange () : RecCollision.trackOccupancyInTimeRange ();
480- histos.fill (HIST (" hmczvtxcent" ), RecCollision.posZ (), RecCollision. centFT0C ( ), OccupancyValue);
511+ histos.fill (HIST (" hmczvtxcent" ), RecCollision.posZ (), SelectColCentrality (RecCollision ), OccupancyValue);
481512
482513 auto Rectrackspart = RecTracks.sliceBy (perCollision, RecCollision.globalIndex ());
483514 for (auto & Rectrack : Rectrackspart) {
@@ -487,19 +518,19 @@ struct HeavyIonMultiplicity {
487518 if (!Rectrack.hasTPC ()) {
488519 continue ;
489520 }
490- histos.fill (HIST (" hTracksCount" ), RecCollision. centFT0C ( ), 1 );
521+ histos.fill (HIST (" hTracksCount" ), SelectColCentrality (RecCollision ), 1 );
491522 bool IsFakeITStracks = false ;
492523 for (int i = 0 ; i < 7 ; i++) {
493524 if (Rectrack.mcMask () & 1 << i) {
494525 IsFakeITStracks = true ;
495- histos.fill (HIST (" hTracksCount" ), RecCollision. centFT0C ( ), i + 3 );
526+ histos.fill (HIST (" hTracksCount" ), SelectColCentrality (RecCollision ), i + 3 );
496527 break ;
497528 }
498529 }
499530 if (IsFakeITStracks) {
500531 continue ;
501532 }
502- histos.fill (HIST (" hTracksCount" ), RecCollision. centFT0C ( ), 2 );
533+ histos.fill (HIST (" hTracksCount" ), SelectColCentrality (RecCollision ), 2 );
503534 }
504535 }
505536 }
@@ -515,17 +546,17 @@ struct HeavyIonMultiplicity {
515546 continue ;
516547 }
517548 histos.fill (HIST (" VtxZHist" ), RecCollision.posZ ());
518- histos.fill (HIST (" CentPercentileMCRecHist" ), RecCollision. centFT0C ( ));
549+ histos.fill (HIST (" CentPercentileMCRecHist" ), SelectColCentrality (RecCollision ));
519550 auto OccupancyValue = IsApplyFT0CbasedOccupancy ? RecCollision.ft0cOccupancyInTimeRange () : RecCollision.trackOccupancyInTimeRange ();
520- histos.fill (HIST (" hmczvtxcent" ), RecCollision.posZ (), RecCollision. centFT0C ( ), OccupancyValue);
551+ histos.fill (HIST (" hmczvtxcent" ), RecCollision.posZ (), SelectColCentrality (RecCollision ), OccupancyValue);
521552
522553 auto Rectrackspart = RecTracks.sliceBy (perCollision, RecCollision.globalIndex ());
523554 std::vector<Int_t> mclabels;
524555 for (auto & Rectrack : Rectrackspart) {
525556 if (!IsTrackSelected (Rectrack)) {
526557 continue ;
527558 }
528- histos.fill (HIST (" FillMCrecSpecies" ), RecCollision. centFT0C ( ), OccupancyValue, Rectrack.eta (), Double_t (kSpAll ));
559+ histos.fill (HIST (" FillMCrecSpecies" ), SelectColCentrality (RecCollision ), OccupancyValue, Rectrack.eta (), Double_t (kSpAll ));
529560 if (Rectrack.has_mcParticle ()) {
530561 Int_t pid = kBkg ;
531562 auto mcpart = Rectrack.template mcParticle_as <aod::McParticles>();
@@ -557,17 +588,17 @@ struct HeavyIonMultiplicity {
557588 pid = kBkg ;
558589 }
559590 mclabels.push_back (Rectrack.mcParticleId ());
560- histos.fill (HIST (" FillMCrecSpecies" ), RecCollision. centFT0C ( ), OccupancyValue, Rectrack.eta (), Double_t (pid));
591+ histos.fill (HIST (" FillMCrecSpecies" ), SelectColCentrality (RecCollision ), OccupancyValue, Rectrack.eta (), Double_t (pid));
561592 } else {
562- histos.fill (HIST (" FillMCrecSpecies" ), RecCollision. centFT0C ( ), OccupancyValue, Rectrack.eta (), Double_t (kBkg ));
593+ histos.fill (HIST (" FillMCrecSpecies" ), SelectColCentrality (RecCollision ), OccupancyValue, Rectrack.eta (), Double_t (kBkg ));
563594 }
564595 } // rec track loop
565596
566597 for (auto & particle : GenParticles) {
567598 if (!IsGenTrackSelected (particle)) {
568599 continue ;
569600 }
570- histos.fill (HIST (" FillMCgenSpecies" ), RecCollision. centFT0C ( ), particle.eta (), Double_t (kSpAll ));
601+ histos.fill (HIST (" FillMCgenSpecies" ), SelectColCentrality (RecCollision ), particle.eta (), Double_t (kSpAll ));
571602 Int_t pid = 0 ;
572603 switch (std::abs (particle.pdgCode ())) {
573604 case 211 :
@@ -583,7 +614,7 @@ struct HeavyIonMultiplicity {
583614 pid = kSpOther ;
584615 break ;
585616 }
586- histos.fill (HIST (" FillMCgenSpecies" ), RecCollision. centFT0C ( ), particle.eta (), Double_t (pid));
617+ histos.fill (HIST (" FillMCgenSpecies" ), SelectColCentrality (RecCollision ), particle.eta (), Double_t (pid));
587618 } // gen track loop
588619 } // collision loop
589620 }
@@ -597,7 +628,7 @@ struct HeavyIonMultiplicity {
597628 if (std::abs (collision.posZ ()) >= VtxRange) {
598629 return ;
599630 }
600- histos.fill (HIST (" hzvtxcent" ), collision.posZ (), collision. centFT0C ( ));
631+ histos.fill (HIST (" hzvtxcent" ), collision.posZ (), SelectColCentrality (collision ));
601632 for (auto & v0track : v0data) {
602633 auto v0pTrack = v0track.template posTrack_as <v0trackcandidates>();
603634 auto v0nTrack = v0track.template negTrack_as <v0trackcandidates>();
@@ -625,9 +656,9 @@ struct HeavyIonMultiplicity {
625656 if (std::abs (v0track.dcapostopv ()) < dcapostopvCut || std::abs (v0track.dcanegtopv ()) < dcanegtopvCut || v0track.v0radius () < v0radiusCut || v0track.v0cosPA () < v0cospaCut || std::abs (v0track.dcaV0daughters ()) > dcav0daughtercut) {
626657 continue ;
627658 }
628- histos.fill (HIST (" K0sCentEtaMass" ), collision. centFT0C ( ), v0track.eta (), v0track.mK0Short ());
629- histos.fill (HIST (" LambdaCentEtaMass" ), collision. centFT0C ( ), v0track.eta (), v0track.mLambda ());
630- histos.fill (HIST (" AntiLambdaCentEtaMass" ), collision. centFT0C ( ), v0track.eta (), v0track.mAntiLambda ());
659+ histos.fill (HIST (" K0sCentEtaMass" ), SelectColCentrality (collision ), v0track.eta (), v0track.mK0Short ());
660+ histos.fill (HIST (" LambdaCentEtaMass" ), SelectColCentrality (collision ), v0track.eta (), v0track.mLambda ());
661+ histos.fill (HIST (" AntiLambdaCentEtaMass" ), SelectColCentrality (collision ), v0track.eta (), v0track.mAntiLambda ());
631662 }
632663 }
633664 PROCESS_SWITCH (HeavyIonMultiplicity, processStrangeYield, " Strange particle yield" , false );
0 commit comments