@@ -97,6 +97,7 @@ struct FlowGfwLightIons {
9797 O2_DEFINE_CONFIGURABLE (cfgEfficiency, std::string, " " , " CCDB path to efficiency object" )
9898 O2_DEFINE_CONFIGURABLE (cfgAcceptance, std::string, " " , " CCDB path to acceptance object" )
9999 O2_DEFINE_CONFIGURABLE (cfgDCAxyNSigma, float , 7 , " Cut on number of sigma deviations from expected DCA in the transverse direction" );
100+ O2_DEFINE_CONFIGURABLE (cfgDCAxy, std::string, " (0.0026+0.005/(x^1.01))" , " Functional form of pt-dependent DCAxy cut" );
100101 O2_DEFINE_CONFIGURABLE (cfgDCAz, float , 2 , " Cut on DCA in the longitudinal direction (cm)" );
101102 O2_DEFINE_CONFIGURABLE (cfgNTPCCls, float , 50 , " Cut on number of TPC clusters found" );
102103 O2_DEFINE_CONFIGURABLE (cfgNTPCXrows, float , 70 , " Cut on number of TPC crossed rows" );
@@ -111,6 +112,8 @@ struct FlowGfwLightIons {
111112 O2_DEFINE_CONFIGURABLE (cfgOccupancySelection, int , 2000 , " Max occupancy selection, -999 to disable" );
112113 O2_DEFINE_CONFIGURABLE (cfgNoSameBunchPileupCut, bool , true , " kNoSameBunchPileupCut" );
113114 O2_DEFINE_CONFIGURABLE (cfgIsGoodZvtxFT0vsPV, bool , true , " kIsGoodZvtxFT0vsPV" );
115+ O2_DEFINE_CONFIGURABLE (cfgNoITSROFBorder, bool , true , " kNoITSROFFrameBorder" );
116+ O2_DEFINE_CONFIGURABLE (cfgNoTimeFrameBorder, bool , true , " kNoTimeFrameBorder" );
114117 O2_DEFINE_CONFIGURABLE (cfgIsGoodITSLayersAll, bool , true , " kIsGoodITSLayersAll" );
115118 O2_DEFINE_CONFIGURABLE (cfgNoCollInTimeRangeStandard, bool , true , " kNoCollInTimeRangeStandard" );
116119 O2_DEFINE_CONFIGURABLE (cfgDoOccupancySel, bool , true , " Bool for event selection on detector occupancy" );
@@ -208,6 +211,8 @@ struct FlowGfwLightIons {
208211 TF1* fMultCutLow = nullptr ;
209212 TF1* fMultCutHigh = nullptr ;
210213
214+ TF1* fPtDepDCAxy = nullptr ;
215+
211216 o2::framework::expressions::Filter collisionFilter = nabs(aod::collision::posZ) < cfgVtxZ;
212217 o2::framework::expressions::Filter trackFilter = nabs(aod::track::eta) < cfgEta && aod::track::pt > cfgPtmin&& aod::track::pt < cfgPtmax && ((requireGlobalTrackInFilter()) || (aod::track::isGlobalTrackSDD == (uint8_t ) true )) && (aod::track::itsChi2NCl < cfgChi2PrITSCls) && (aod::track::tpcChi2NCl < cfgChi2PrTPCCls) && nabs(aod::track::dcaZ) < cfgDCAz;
213218
@@ -307,7 +312,7 @@ struct FlowGfwLightIons {
307312 AxisSpec v0aAxis = {200 , 0 , 200 , " N_{ch} (V0A)" };
308313 AxisSpec multpvAxis = {4000 , 0 , 4000 , " N_{ch} (PV)" };
309314 AxisSpec dcaZAXis = {200 , -2 , 2 , " DCA_{z} (cm)" };
310- AxisSpec dcaXYAXis = {200 , -1 , 1 , " DCA_{xy} (cm)" };
315+ AxisSpec dcaXYAXis = {200 , -0.5 , 0.5 , " DCA_{xy} (cm)" };
311316 std::vector<double > timebinning (289 );
312317 std::generate (timebinning.begin (), timebinning.end (), [n = -24 / 288 ., step = 24 / 288 .]() mutable {
313318 n += step;
@@ -375,7 +380,7 @@ struct FlowGfwLightIons {
375380 }
376381
377382 registry.addClone (" eventQA/before/" , " eventQA/after/" );
378- registry.add (" eventQA/eventSel" , " Number of Events;; Counts" , {HistType::kTH1D , {{11 , 0 , 11 }}});
383+ registry.add (" eventQA/eventSel" , " Number of Events;; Counts" , {HistType::kTH1D , {{13 , 0 , 13 }}});
379384 registry.get <TH1>(HIST (" eventQA/eventSel" ))->GetXaxis ()->SetBinLabel (1 , " Filtered event" );
380385 registry.get <TH1>(HIST (" eventQA/eventSel" ))->GetXaxis ()->SetBinLabel (2 , " sel8" );
381386 registry.get <TH1>(HIST (" eventQA/eventSel" ))->GetXaxis ()->SetBinLabel (3 , " occupancy" );
@@ -385,8 +390,10 @@ struct FlowGfwLightIons {
385390 registry.get <TH1>(HIST (" eventQA/eventSel" ))->GetXaxis ()->SetBinLabel (7 , " kNoCollInTimeRangeStandard" );
386391 registry.get <TH1>(HIST (" eventQA/eventSel" ))->GetXaxis ()->SetBinLabel (8 , " kIsVertexITSTPC" );
387392 registry.get <TH1>(HIST (" eventQA/eventSel" ))->GetXaxis ()->SetBinLabel (9 , " kIsGoodITSLayersAll" );
388- registry.get <TH1>(HIST (" eventQA/eventSel" ))->GetXaxis ()->SetBinLabel (10 , " after Mult cuts" );
389- registry.get <TH1>(HIST (" eventQA/eventSel" ))->GetXaxis ()->SetBinLabel (11 , " has track + within cent" );
393+ registry.get <TH1>(HIST (" eventQA/eventSel" ))->GetXaxis ()->SetBinLabel (10 , " kNoITSROFBorder" );
394+ registry.get <TH1>(HIST (" eventQA/eventSel" ))->GetXaxis ()->SetBinLabel (11 , " kNoTimeFrameBorder" );
395+ registry.get <TH1>(HIST (" eventQA/eventSel" ))->GetXaxis ()->SetBinLabel (12 , " after Mult cuts" );
396+ registry.get <TH1>(HIST (" eventQA/eventSel" ))->GetXaxis ()->SetBinLabel (13 , " has track + within cent" );
390397
391398 if (!cfgRunByRun && cfgFillWeights) {
392399 registry.add <TH3>(" phi_eta_vtxz_ref" , " " , {HistType::kTH3D , {phiAxis, etaAxis, vtxAxis}});
@@ -423,6 +430,11 @@ struct FlowGfwLightIons {
423430 fFCptgen ->setUseCentralMoments (cfgUseCentralMoments);
424431 fFCptgen ->setUseGapMethod (true );
425432 fFCptgen ->initialise (multAxis, cfgMpar, o2::analysis::gfw::configs, cfgNbootstrap);
433+
434+ fPtDepDCAxy = new TF1 (" ptDepDCAxy" , Form (" [0]*%s" , cfgDCAxy->c_str ()), 0.001 , 100 );
435+ fPtDepDCAxy ->SetParameter (0 , cfgDCAxyNSigma);
436+ LOGF (info, " DCAxy pt-dependence function: %s" , Form (" [0]*%s" , cfgDCAxy->c_str ()));
437+
426438 if (cfgUseAdditionalEventCut) {
427439 fMultPVCutLow = new TF1 (" fMultPVCutLow" , cfgMultCorrLowCutFunction->c_str (), 0 , 100 );
428440 fMultPVCutLow ->SetParameters (&(o2::analysis::gfw::multPVCorrCutPars[0 ]));
@@ -592,6 +604,24 @@ struct FlowGfwLightIons {
592604 if (cfgRunByRun)
593605 th1sList[run][hEventSel]->Fill (8.5 );
594606 }
607+
608+ if (cfgNoITSROFBorder) {
609+ if (!collision.selection_bit (o2::aod::evsel::kNoITSROFrameBorder )) {
610+ return 0 ;
611+ }
612+ registry.fill (HIST (" eventQA/eventSel" ), 9.5 );
613+ if (cfgRunByRun)
614+ th1sList[run][hEventSel]->Fill (9.5 );
615+ }
616+
617+ if (cfgNoTimeFrameBorder) {
618+ if (!collision.selection_bit (o2::aod::evsel::kNoTimeFrameBorder )) {
619+ return 0 ;
620+ }
621+ registry.fill (HIST (" eventQA/eventSel" ), 10.5 );
622+ if (cfgRunByRun)
623+ th1sList[run][hEventSel]->Fill (10.5 );
624+ }
595625 float vtxz = -999 ;
596626 if (collision.numContrib () > 1 ) {
597627 vtxz = collision.posZ ();
@@ -615,17 +645,17 @@ struct FlowGfwLightIons {
615645 return 0 ;
616646 if (multTrk > fMultCutHigh ->Eval (centrality))
617647 return 0 ;
618- registry.fill (HIST (" eventQA/eventSel" ), 9 .5 );
648+ registry.fill (HIST (" eventQA/eventSel" ), 11 .5 );
619649 if (cfgRunByRun)
620- th1sList[run][hEventSel]->Fill (9 .5 );
650+ th1sList[run][hEventSel]->Fill (11 .5 );
621651 }
622652 return 1 ;
623653 }
624654
625655 template <typename TTrack>
626656 bool trackSelected (TTrack track)
627657 {
628- if (cfgDCAxyNSigma && (std::fabs (track.dcaXY ()) > cfgDCAxyNSigma / 7 . * ( 0 . 0105f + 0 . 0035f / track.pt ())))
658+ if (cfgDCAxyNSigma && (std::fabs (track.dcaXY ()) > fPtDepDCAxy -> Eval ( track.pt ())))
629659 return false ;
630660 return ((track.tpcNClsCrossedRows () >= cfgNTPCXrows) && (track.tpcNClsFound () >= cfgNTPCCls) && (track.itsNCls () >= cfgMinNITSCls));
631661 }
@@ -668,8 +698,10 @@ struct FlowGfwLightIons {
668698 histos[hEventSel]->GetXaxis ()->SetBinLabel (7 , " kNoCollInTimeRangeStandard" );
669699 histos[hEventSel]->GetXaxis ()->SetBinLabel (8 , " kIsVertexITSTPC" );
670700 histos[hEventSel]->GetXaxis ()->SetBinLabel (9 , " kIsGoodITSLayersAll" );
671- histos[hEventSel]->GetXaxis ()->SetBinLabel (10 , " after Mult cuts" );
672- histos[hEventSel]->GetXaxis ()->SetBinLabel (11 , " has track + within cent" );
701+ histos[hEventSel]->GetXaxis ()->SetBinLabel (10 , " kNoITSROFBorder" );
702+ histos[hEventSel]->GetXaxis ()->SetBinLabel (11 , " kNoTimeFrameBorder" );
703+ histos[hEventSel]->GetXaxis ()->SetBinLabel (12 , " after Mult cuts" );
704+ histos[hEventSel]->GetXaxis ()->SetBinLabel (13 , " has track + within cent" );
673705 th1sList.insert (std::make_pair (run, histos));
674706 std::vector<std::shared_ptr<TH3>> histos3d (kCount_TH3Names );
675707 histos3d[hNUAref] = registry.add <TH3>(Form (" %d/phi_eta_vtxz_ref" , run), " " , {HistType::kTH3D , {phiAxis, etaAxis, vtxAxis}});
@@ -721,9 +753,9 @@ struct FlowGfwLightIons {
721753 if (dt != kGen && xaxis.centrality >= 0 && (xaxis.centrality < o2::analysis::gfw::centbinning.front () || xaxis.centrality > o2::analysis::gfw::centbinning.back ()))
722754 return ;
723755 if (dt != kGen ) {
724- registry.fill (HIST (" eventQA/eventSel" ), 10 .5 );
756+ registry.fill (HIST (" eventQA/eventSel" ), 12 .5 );
725757 if (cfgRunByRun)
726- th1sList[run][hEventSel]->Fill (10 .5 );
758+ th1sList[run][hEventSel]->Fill (12 .5 );
727759 }
728760 float vtxz = collision.posZ ();
729761 if (dt != kGen && cfgRunByRun) {
@@ -1201,6 +1233,18 @@ struct FlowGfwLightIons {
12011233 }
12021234 registry.fill (HIST (" eventQA/eventSel" ), 8.5 );
12031235 }
1236+ if (cfgNoITSROFBorder) {
1237+ if (!collision.selection_bit (o2::aod::evsel::kNoITSROFrameBorder )) {
1238+ return ;
1239+ }
1240+ registry.fill (HIST (" eventQA/eventSel" ), 9.5 );
1241+ }
1242+ if (cfgNoTimeFrameBorder) {
1243+ if (!collision.selection_bit (o2::aod::evsel::kNoTimeFrameBorder )) {
1244+ return ;
1245+ }
1246+ registry.fill (HIST (" eventQA/eventSel" ), 10.5 );
1247+ }
12041248 float vtxz = -999 ;
12051249 if (collision.numContrib () > 1 ) {
12061250 vtxz = collision.posZ ();
0 commit comments