@@ -72,7 +72,9 @@ struct FlowDecorrelation {
7272 O2_DEFINE_CONFIGURABLE (cfgCutTPCCrossedRows, float , 70 .0f , " minimum TPC crossed rows" )
7373 O2_DEFINE_CONFIGURABLE (cfgCutITSclu, float , 5 .0f , " minimum ITS clusters" )
7474 O2_DEFINE_CONFIGURABLE (cfgCutDCAz, float , 2 .0f , " max DCA to vertex z" )
75- O2_DEFINE_CONFIGURABLE (cfgCutDCAxy, float , 7 .0f , " max DCA to vertex xy" )
75+ O2_DEFINE_CONFIGURABLE (cfgCutDCAxy, float , -1 .0f , " max DCA to vertex xy, pT dependent in terms of N sigma. -1 for default cut" )
76+ O2_DEFINE_CONFIGURABLE (cfgDCAxyFunc, std::string, " (0.0026+0.005/(x^1.01))" , " Functional form of pt-dependent DCAxy cut" )
77+ TF1 * fPtDepDCAxy = nullptr ;
7678 O2_DEFINE_CONFIGURABLE (cfgCutMultMin, int , 0 , " Minimum multiplicity for collision" )
7779 O2_DEFINE_CONFIGURABLE (cfgCutMultMax, int , 10 , " Maximum multiplicity for collision" )
7880 O2_DEFINE_CONFIGURABLE (cfgCutCentMin, float , 60 .0f , " Minimum centrality for collision" )
@@ -181,7 +183,7 @@ struct FlowDecorrelation {
181183 AxisSpec axisChID = {220 , 0 , 220 };
182184 // make the filters and cuts.
183185 Filter collisionFilter = (nabs(aod::collision::posZ) < cfgGeneralCuts.cfgCutVtxZ);
184- Filter trackFilter = (aod::track::pt > cfgGeneralCuts.cfgCutPtMin) && (aod::track::pt < cfgGeneralCuts.cfgCutPtMax) && ((requireGlobalTrackInFilter()) || (aod::track::isGlobalTrackSDD == static_cast <uint8_t >(true ))) && (aod::track::tpcChi2NCl < cfgGeneralCuts.cfgCutChi2prTPCcls) && (nabs(aod::track::dcaZ) < cfgGeneralCuts.cfgCutDCAz) && (nabs(aod::track::dcaXY) < cfgGeneralCuts.cfgCutDCAxy) ;
186+ Filter trackFilter = (aod::track::pt > cfgGeneralCuts.cfgCutPtMin) && (aod::track::pt < cfgGeneralCuts.cfgCutPtMax) && ((requireGlobalTrackInFilter()) || (aod::track::isGlobalTrackSDD == static_cast <uint8_t >(true ))) && (aod::track::tpcChi2NCl < cfgGeneralCuts.cfgCutChi2prTPCcls) && (nabs(aod::track::dcaZ) < cfgGeneralCuts.cfgCutDCAz);
185187 using FilteredCollisions = soa::Filtered<soa::Join<aod::Collisions, aod::EvSel, aod::CentFT0Cs, aod::CentFT0CVariant1s, aod::CentFT0Ms, aod::CentFV0As, aod::Mults>>;
186188 using FilteredTracks = soa::Filtered<soa::Join<aod::Tracks, aod::TrackSelection, aod::TracksExtra, aod::TracksDCA>>;
187189
@@ -370,6 +372,7 @@ struct FlowDecorrelation {
370372 if (doprocessSameTpcFt0a || doprocessSameTpcFt0c || doprocessSameFt0aFt0c || doprocessSameTpcMft || doprocessSameTpcFv0) {
371373 registry.add (" Phi" , " Phi" , {HistType::kTH1D , {axisPhi}});
372374 registry.add (" Eta" , " Eta" , {HistType::kTH1D , {axisEta}});
375+ registry.add (" hDCAxy" , " DCAxy after cuts; DCAxy (cm); Pt" , {HistType::kTH2D , {{200 , -1 ., 1 .}, {200 , 0 , 5 }}});
373376 registry.add (" EtaCorrected" , " EtaCorrected" , {HistType::kTH1D , {axisEta}});
374377 registry.add (" Nch" , " N_{ch}" , {HistType::kTH1D , {axisMultiplicity}});
375378 registry.add (" Nch_used" , " N_{ch}" , {HistType::kTH1D , {axisMultiplicity}}); // histogram to see how many events are in the same and mixed event
@@ -494,6 +497,13 @@ struct FlowDecorrelation {
494497 same.setObject (new CorrelationContainer (" sameEvent_TPC_FV0" , " sameEvent_TPC_FT0A" , corrAxisTpcFt0a, effAxis, userAxis));
495498 mixed.setObject (new CorrelationContainer (" mixedEvent_TPC_FV0" , " mixedEvent_TPC_FT0A" , corrAxisTpcFt0a, effAxis, userAxis));
496499 }
500+
501+ if (cfgGeneralCuts.cfgCutDCAxy > 0 .) {
502+ cfgGeneralCuts.fPtDepDCAxy = new TF1 (" ptDepDCAxy" , Form (" [0]*%s" , cfgGeneralCuts.cfgDCAxyFunc ->c_str ()), 0.001 , 1000 );
503+ cfgGeneralCuts.fPtDepDCAxy ->SetParameter (0 , cfgGeneralCuts.cfgCutDCAxy );
504+ LOGF (info, " DCAxy pt-dependence function: %s" , Form (" %0.1f * %s" , cfgGeneralCuts.cfgCutDCAxy .value , cfgGeneralCuts.cfgDCAxyFunc ->c_str ()));
505+ }
506+
497507 LOGF (info, " End of init" );
498508 }
499509
@@ -615,6 +625,9 @@ struct FlowDecorrelation {
615625 template <typename TTrack>
616626 bool trackSelected (TTrack track)
617627 {
628+ if (cfgGeneralCuts.cfgCutDCAxy > 0 . && (std::fabs (track.dcaXY ()) > cfgGeneralCuts.fPtDepDCAxy ->Eval (track.pt ())))
629+ return false ;
630+
618631 return ((track.tpcNClsFound () >= cfgGeneralCuts.cfgCutTPCclu ) && (track.tpcNClsCrossedRows () >= cfgGeneralCuts.cfgCutTPCCrossedRows ) && (track.itsNCls () >= cfgGeneralCuts.cfgCutITSclu ));
619632 }
620633
@@ -788,6 +801,7 @@ struct FlowDecorrelation {
788801 if (cfgDrawEtaPhiDis && corType == kFT0A )
789802 registry.fill (HIST (" EtaPhi" ), track1.eta (), track1.phi (), eventWeight * triggerWeight);
790803 }
804+ registry.fill (HIST (" hDCAxy" ), track1.dcaXY (), track1.pt ());
791805
792806 std::size_t channelSize = 0 ;
793807 if (corType == kFT0A )
@@ -920,6 +934,7 @@ struct FlowDecorrelation {
920934 if (system == SameEvent) {
921935 registry.fill (HIST (" Trig_hist_TPC_FV0" ), fSampleIndex , posZ, track1.eta (), eventWeight * triggerWeight);
922936 }
937+ registry.fill (HIST (" hDCAxy" ), track1.dcaXY (), track1.pt ());
923938
924939 std::size_t channelSize = 0 ;
925940 channelSize = fv0.channel ().size ();
@@ -1474,6 +1489,7 @@ struct FlowDecorrelation {
14741489 if (system == SameEvent) {
14751490 registry.fill (HIST (" Trig_hist_TPC_MFT" ), fSampleIndex , posZ, track1.pt (), eventWeight * triggerWeight);
14761491 }
1492+ registry.fill (HIST (" hDCAxy" ), track1.dcaXY (), track1.pt ());
14771493
14781494 for (auto const & track2 : tracks2) {
14791495
0 commit comments