@@ -135,10 +135,16 @@ struct cascadeFlow {
135135 Configurable<bool > isNoSameBunchPileupCut{" isNoSameBunchPileupCut" , 1 , " Same found-by-T0 bunch crossing rejection" };
136136 Configurable<bool > isGoodZvtxFT0vsPVCut{" isGoodZvtxFT0vsPVCut" , 1 , " z of PV by tracks and z of PV from FT0 A-C time difference cut" };
137137 Configurable<bool > isGoodEventEP{" isGoodEventEP" , 1 , " Event is used to calibrate event plane" };
138+ Configurable<bool > isTrackOccupancySel{" isTrackOccupancySel" , 0 , " isTrackOccupancySel" };
138139 Configurable<int > MinOccupancy{" MinOccupancy" , 0 , " MinOccupancy" };
139140 Configurable<int > MaxOccupancy{" MaxOccupancy" , 500 , " MaxOccupancy" };
140- Configurable<bool > isCollInStandardTimeRange{" isCollInStandardTimeRange" , 1 , " To remove collisions in +-10 micros time range" };
141- Configurable<bool > isCollInNarrowTimeRange{" isCollInNarrowTimeRange" , 0 , " To remove collisions in +-4 micros time range" };
141+ Configurable<bool > isFT0OccupancySel{" isFT0OccupancySel" , 0 , " isFT0OccupancySel" };
142+ Configurable<int > MinOccupancyFT0{" MinOccupancyFT0" , 0 , " MinOccupancyFT0" };
143+ Configurable<int > MaxOccupancyFT0{" MaxOccupancyFT0" , 5000 , " MaxOccupancyFT0" };
144+ Configurable<bool > isNoCollInStandardTimeRange{" isNoCollInStandardTimeRange" , 1 , " To remove collisions in +-10 micros time range" };
145+ Configurable<bool > isNoCollInNarrowTimeRange{" isNoCollInNarrowTimeRange" , 0 , " To remove collisions in +-2 micros time range" };
146+ Configurable<bool > isNoCollInRofStandard{" isNoCollInRofStandard" , 0 , " To remove collisions in the same ITS ROF and with a multiplicity above a certain threshold" };
147+ Configurable<bool > isNoTVXinTRD{" isNoTVXinTRD" , 0 , " To remove collisions with trigger in TRD" };
142148
143149 Configurable<float > MinPt{" MinPt" , 0.6 , " Min pt of cascade" };
144150 Configurable<float > MaxPt{" MaxPt" , 10 , " Max pt of cascade" };
@@ -213,22 +219,45 @@ struct cascadeFlow {
213219
214220 // occupancy cut
215221 int occupancy = collision.trackOccupancyInTimeRange ();
216- if (occupancy < MinOccupancy || occupancy > MaxOccupancy) {
222+ if (isTrackOccupancySel && ( occupancy < MinOccupancy || occupancy > MaxOccupancy) ) {
217223 return false ;
218224 }
225+ // occupancy cut based on FT0C
226+ int occupancyFT0 = collision.ft0cOccupancyInTimeRange ();
227+ if (isFT0OccupancySel && (occupancyFT0 < MinOccupancyFT0 || occupancyFT0 > MaxOccupancyFT0)) {
228+ return false ;
229+ }
230+
219231 if (isFillHisto)
220232 histos.fill (HIST (" hNEvents" ), 5.5 );
221233
222- if (isCollInStandardTimeRange && !collision.selection_bit (o2::aod::evsel::kNoCollInTimeRangeStandard )) {
234+ // time-based event selection
235+ if (isNoCollInStandardTimeRange && !collision.selection_bit (o2::aod::evsel::kNoCollInTimeRangeStandard )) {
223236 return false ;
224237 }
225-
226- if (isCollInNarrowTimeRange && !collision.selection_bit (o2::aod::evsel::kNoCollInTimeRangeNarrow )) {
238+ if (isNoCollInNarrowTimeRange && !collision.selection_bit (o2::aod::evsel::kNoCollInTimeRangeStrict )) {
227239 return false ;
228240 }
241+
229242 if (isFillHisto)
230243 histos.fill (HIST (" hNEvents" ), 6.5 );
231244
245+ // In-ROF event selection
246+ if (isNoCollInRofStandard && !collision.selection_bit (o2::aod::evsel::kNoCollInRofStandard )) {
247+ return false ;
248+ }
249+
250+ if (isFillHisto)
251+ histos.fill (HIST (" hNEvents" ), 7.5 );
252+
253+ // TVX in TRD
254+ // if (isNoTVXinTRD && collision.alias_bit(kTVXinTRD)){
255+ // return false;
256+ // }
257+
258+ if (isFillHisto)
259+ histos.fill (HIST (" hNEvents" ), 8.5 );
260+
232261 if (isFillHisto) {
233262 histos.fill (HIST (" hEventNchCorrelation" ), collision.multNTracksPVeta1 (), collision.multNTracksGlobal ());
234263 histos.fill (HIST (" hEventPVcontributorsVsCentrality" ), collision.centFT0C (), collision.multNTracksPVeta1 ());
@@ -337,7 +366,21 @@ struct cascadeFlow {
337366 cosThetaStarLambda[i] = boostedLambda.Pz () / boostedLambda.P ();
338367 }
339368
369+ // time-based event selection
370+ bool isNoCollInTimeRangeStd = 0 ;
371+ if (coll.selection_bit (o2::aod::evsel::kNoCollInTimeRangeStandard ))
372+ isNoCollInTimeRangeStd = 1 ;
373+ // IN-ROF pile-up rejection
374+ bool isNoCollInRofStd = 0 ;
375+ if (coll.selection_bit (o2::aod::evsel::kNoCollInRofStandard ))
376+ isNoCollInRofStd = 1 ;
377+ // TVX in TRD
378+ bool isTVXinTRD = 0 ;
379+ // if (coll.alias_bit(kTVXinTRD)) isTVXinTRD = 1;
380+
340381 analysisSample (coll.centFT0C (),
382+ isNoCollInTimeRangeStd,
383+ isNoCollInRofStd,
341384 casc.sign (),
342385 casc.pt (),
343386 casc.eta (),
@@ -365,7 +408,7 @@ struct cascadeFlow {
365408 const AxisSpec ptAxis{static_cast <int >((MaxPt - MinPt) / 0.2 ), MinPt, MaxPt, " #it{p}_{T} (GeV/#it{c})" };
366409 const AxisSpec v2Axis{200 , -1 ., 1 ., " #it{v}_{2}" };
367410 const AxisSpec CentAxis{18 , 0 ., 90 ., " FT0C centrality percentile" };
368- TString hNEventsLabels[8 ] = {" All" , " sel8" , " z vrtx" , " kNoSameBunchPileup" , " kIsGoodZvtxFT0vsPV" , " trackOccupancyInTimeRange" , " kNoCollInTimeRange" , " kIsGoodEventEP" };
411+ TString hNEventsLabels[10 ] = {" All" , " sel8" , " z vrtx" , " kNoSameBunchPileup" , " kIsGoodZvtxFT0vsPV" , " trackOccupancyInTimeRange" , " kNoCollInTimeRange" , " kNoCollInROF " , " kTVXinTRD " , " kIsGoodEventEP" };
369412 TString hNEventsLabelsMC[6 ] = {" All" , " z vtx" , " >=1RecoColl" , " 1Reco" , " 2Reco" , " EvSelected" };
370413 TString hNCascLabelsMC[8 ] = {" All Xi" , " all Omega" , " Xi: has MC coll" , " Om: has MC coll" , " Xi: isPrimary" , " Om: is Primary" , " Xi: |eta|<0.8" , " Om: |eta| < 0.8" };
371414
@@ -376,7 +419,7 @@ struct cascadeFlow {
376419 resolution.add (" QVectorsNormT0CTPCC" , " QVectorsNormT0CTPCC" , HistType::kTH2F , {axisQVsNorm, CentAxis});
377420 resolution.add (" QVectorsNormTPCAC" , " QVectorsNormTPCCB" , HistType::kTH2F , {axisQVsNorm, CentAxis});
378421
379- histos.add (" hNEvents" , " hNEvents" , {HistType::kTH1F , {{8 , 0 .f , 8 .f }}});
422+ histos.add (" hNEvents" , " hNEvents" , {HistType::kTH1F , {{10 , 0 .f , 10 .f }}});
380423 for (Int_t n = 1 ; n <= histos.get <TH1>(HIST (" hNEvents" ))->GetNbinsX (); n++) {
381424 histos.get <TH1>(HIST (" hNEvents" ))->GetXaxis ()->SetBinLabel (n, hNEventsLabels[n - 1 ]);
382425 }
@@ -398,17 +441,21 @@ struct cascadeFlow {
398441 histos.add (" hCandidate" , " hCandidate" , HistType::kTH1F , {{22 , -0.5 , 21.5 }});
399442 histos.add (" hCascadeSignal" , " hCascadeSignal" , HistType::kTH1F , {{6 , -0.5 , 5.5 }});
400443 histos.add (" hCascade" , " hCascade" , HistType::kTH1F , {{6 , -0.5 , 5.5 }});
401- histos.add (" hXiPtvsCent" , " hXiPtvsCent" , HistType::kTH2F , {{100 , 0 , 100 }, {200 , 0 , 20 }});
402- histos.add (" hOmegaPtvsCent" , " hOmegaPtvsCent" , HistType::kTH2F , {{100 , 0 , 100 }, {200 , 0 , 20 }});
444+ histos.add (" hXiPtvsCent" , " hXiPtvsCent" , HistType::kTH2F , {{100 , 0 , 100 }, {400 , 0 , 20 }});
445+ histos.add (" hXiPtvsCentEta08" , " hXiPtvsCentEta08" , HistType::kTH2F , {{100 , 0 , 100 }, {400 , 0 , 20 }});
446+ histos.add (" hXiPtvsCentY05" , " hXiPtvsCentY05" , HistType::kTH2F , {{100 , 0 , 100 }, {400 , 0 , 20 }});
447+ histos.add (" hOmegaPtvsCent" , " hOmegaPtvsCent" , HistType::kTH2F , {{100 , 0 , 100 }, {400 , 0 , 20 }});
448+ histos.add (" hOmegaPtvsCentEta08" , " hOmegaPtvsCentEta08" , HistType::kTH2F , {{100 , 0 , 100 }, {400 , 0 , 20 }});
449+ histos.add (" hOmegaPtvsCentY05" , " hOmegaPtvsCentY05" , HistType::kTH2F , {{100 , 0 , 100 }, {400 , 0 , 20 }});
403450 histos.add (" hCascadePhi" , " hCascadePhi" , HistType::kTH1F , {{100 , 0 , 2 * TMath::Pi ()}});
404451 histos.add (" hcascminuspsiT0C" , " hcascminuspsiT0C" , HistType::kTH1F , {{100 , 0 , TMath::Pi ()}});
405452 histos.add (" hv2CEPvsFT0C" , " hv2CEPvsFT0C" , HistType::kTH2F , {CentAxis, {100 , -1 , 1 }});
406453 histos.add (" hv2CEPvsv2CSP" , " hv2CEPvsV2CSP" , HistType::kTH2F , {{100 , -1 , 1 }, {100 , -1 , 1 }});
407454
408- histosMCGen.add (" h2DGenXiEta08" , " h2DGenXiEta08" , HistType::kTH2F , {{100 , 0 , 100 }, {200 , 0 , 20 }});
409- histosMCGen.add (" h2DGenOmegaEta08" , " h2DGenOmegaEta08" , HistType::kTH2F , {{100 , 0 , 100 }, {200 , 0 , 20 }});
410- histosMCGen.add (" h2DGenXiY05" , " h2DGenXiY05" , HistType::kTH2F , {{100 , 0 , 100 }, {200 , 0 , 20 }});
411- histosMCGen.add (" h2DGenOmegaY05" , " h2DGenOmegaY05" , HistType::kTH2F , {{100 , 0 , 100 }, {200 , 0 , 20 }});
455+ histosMCGen.add (" h2DGenXiEta08" , " h2DGenXiEta08" , HistType::kTH2F , {{100 , 0 , 100 }, {400 , 0 , 20 }});
456+ histosMCGen.add (" h2DGenOmegaEta08" , " h2DGenOmegaEta08" , HistType::kTH2F , {{100 , 0 , 100 }, {400 , 0 , 20 }});
457+ histosMCGen.add (" h2DGenXiY05" , " h2DGenXiY05" , HistType::kTH2F , {{100 , 0 , 100 }, {400 , 0 , 20 }});
458+ histosMCGen.add (" h2DGenOmegaY05" , " h2DGenOmegaY05" , HistType::kTH2F , {{100 , 0 , 100 }, {400 , 0 , 20 }});
412459 histosMCGen.add (" hGenXiY" , " hGenXiY" , HistType::kTH1F , {{100 , -1 , 1 }});
413460 histosMCGen.add (" hGenOmegaY" , " hGenOmegaY" , HistType::kTH1F , {{100 , -1 , 1 }});
414461 histosMCGen.add (" hZvertexGen" , " hZvertexGen" , HistType::kTH1F , {{100 , -20 , 20 }});
@@ -544,7 +591,7 @@ struct cascadeFlow {
544591 if (isGoodEventEP && !coll.triggereventep ()) {
545592 return ;
546593 }
547- histos.fill (HIST (" hNEvents" ), 7 .5 );
594+ histos.fill (HIST (" hNEvents" ), 9 .5 );
548595 histos.fill (HIST (" hEventNchCorrelationAfterEP" ), coll.multNTracksPVeta1 (), coll.multNTracksGlobal ());
549596 histos.fill (HIST (" hEventPVcontributorsVsCentralityAfterEP" ), coll.centFT0C (), coll.multNTracksPVeta1 ());
550597 histos.fill (HIST (" hEventGlobalTracksVsCentralityAfterEP" ), coll.centFT0C (), coll.multNTracksGlobal ());
@@ -669,7 +716,7 @@ struct cascadeFlow {
669716 }
670717 }
671718
672- histos.fill (HIST (" hNEvents" ), 7 .5 );
719+ histos.fill (HIST (" hNEvents" ), 9 .5 );
673720 histos.fill (HIST (" hEventNchCorrelationAfterEP" ), coll.multNTracksPVeta1 (), coll.multNTracksGlobal ());
674721 histos.fill (HIST (" hEventPVcontributorsVsCentralityAfterEP" ), coll.centFT0C (), coll.multNTracksPVeta1 ());
675722 histos.fill (HIST (" hEventGlobalTracksVsCentralityAfterEP" ), coll.centFT0C (), coll.multNTracksGlobal ());
@@ -790,7 +837,7 @@ struct cascadeFlow {
790837 return ;
791838 }
792839
793- histos.fill (HIST (" hNEvents" ), 7 .5 );
840+ histos.fill (HIST (" hNEvents" ), 9 .5 );
794841 histos.fill (HIST (" hEventNchCorrelationAfterEP" ), coll.multNTracksPVeta1 (), coll.multNTracksGlobal ());
795842 histos.fill (HIST (" hEventPVcontributorsVsCentralityAfterEP" ), coll.centFT0C (), coll.multNTracksPVeta1 ());
796843 histos.fill (HIST (" hEventGlobalTracksVsCentralityAfterEP" ), coll.centFT0C (), coll.multNTracksGlobal ());
@@ -813,11 +860,22 @@ struct cascadeFlow {
813860 pdgCode = 0 ;
814861 }
815862
863+ // rapidity definition
864+ float XiY = RecoDecay::y (std::array{casc.px (), casc.py (), casc.pz ()}, constants::physics::MassXiMinus);
865+ float OmegaY = RecoDecay::y (std::array{casc.px (), casc.py (), casc.pz ()}, constants::physics::MassOmegaMinus);
816866 // true reco cascades before applying any selection
817867 if (std::abs (pdgCode) == 3312 && std::abs (cascMC.pdgCodeV0 ()) == 3122 && std::abs (cascMC.pdgCodeBachelor ()) == 211 ) {
818868 histos.fill (HIST (" hXiPtvsCent" ), coll.centFT0C (), casc.pt ());
869+ if (std::abs (casc.eta ()) < 0.8 )
870+ histos.fill (HIST (" hXiPtvsCentEta08" ), coll.centFT0C (), casc.pt ());
871+ if (std::abs (XiY) < 0.5 )
872+ histos.fill (HIST (" hXiPtvsCentY05" ), coll.centFT0C (), casc.pt ());
819873 } else if (std::abs (pdgCode) == 3334 && std::abs (cascMC.pdgCodeV0 ()) == 3122 && std::abs (cascMC.pdgCodeBachelor ()) == 321 ) {
820874 histos.fill (HIST (" hOmegaPtvsCent" ), coll.centFT0C (), casc.pt ());
875+ if (std::abs (casc.eta ()) < 0.8 )
876+ histos.fill (HIST (" hOmegaPtvsCentEta08" ), coll.centFT0C (), casc.pt ());
877+ if (std::abs (OmegaY) < 0.5 )
878+ histos.fill (HIST (" hOmegaPtvsCentY05" ), coll.centFT0C (), casc.pt ());
821879 }
822880
823881 // / Add some minimal cuts for single track variables (min number of TPC clusters)
0 commit comments