@@ -61,6 +61,7 @@ struct FlowGfwTask {
6161 O2_DEFINE_CONFIGURABLE (cfgCutChi2prTPCcls, float , 2.5 , " Chi2 per TPC clusters" )
6262 O2_DEFINE_CONFIGURABLE (cfgCutTPCclu, float , 70 .0f , " minimum TPC clusters" )
6363 O2_DEFINE_CONFIGURABLE (cfgCutITSclu, float , 5 .0f , " minimum ITS clusters" )
64+ O2_DEFINE_CONFIGURABLE (cfgTrackSel, bool , false , " ITS and TPC cluster selection" )
6465 O2_DEFINE_CONFIGURABLE (cfgMinCentFT0C, float , 0 .0f , " Minimum FT0C Centrality" )
6566 O2_DEFINE_CONFIGURABLE (cfgMaxCentFT0C, float , 100 .0f , " Maximum FT0C Centrality" )
6667 O2_DEFINE_CONFIGURABLE (cfgcentEstFt0c, bool , false , " Centrality estimator based on FT0C signal" )
@@ -70,6 +71,7 @@ struct FlowGfwTask {
7071 O2_DEFINE_CONFIGURABLE (cfgcentEstFt0cVariant1, bool , false , " A variant of FT0C" )
7172 O2_DEFINE_CONFIGURABLE (cfgUseAdditionalEventCut, bool , false , " Use additional event cut on mult correlations" )
7273 O2_DEFINE_CONFIGURABLE (cfgUseAdditionalTrackCut, bool , false , " Use additional track cut on phi" )
74+ O2_DEFINE_CONFIGURABLE (cfgTrackSelRun3ITSMatch, bool , false , " Track selection for ITS matches" )
7375 O2_DEFINE_CONFIGURABLE (cfgUseNch, bool , false , " Use Nch for flow observables" )
7476 O2_DEFINE_CONFIGURABLE (cfgNbootstrap, int , 10 , " Number of subsamples" )
7577 O2_DEFINE_CONFIGURABLE (cfgOutputNUAWeights, bool , false , " Fill and output NUA weights" )
@@ -80,20 +82,21 @@ struct FlowGfwTask {
8082 O2_DEFINE_CONFIGURABLE (cfgCutOccupancyLow, int , 0 , " Low cut on TPC occupancy" )
8183 O2_DEFINE_CONFIGURABLE (cfgCutDCAz, float , 2 , " Custom DCA Z cut" )
8284 O2_DEFINE_CONFIGURABLE (cfgCutDCAxy, float , 0 .2f , " Custom DCA XY cut" )
85+ O2_DEFINE_CONFIGURABLE (cfgDCAzPt, bool , false , " switch for DCAz pt dependent" )
8386 O2_DEFINE_CONFIGURABLE (cfgNoTimeFrameBorder, bool , false , " kNoTimeFrameBorder" );
8487 O2_DEFINE_CONFIGURABLE (cfgNoITSROFrameBorder, bool , false , " kNoITSROFrameBorder" );
8588 O2_DEFINE_CONFIGURABLE (cfgNoSameBunchPileup, bool , false , " kNoSameBunchPileup" );
8689 O2_DEFINE_CONFIGURABLE (cfgIsGoodZvtxFT0vsPV, bool , false , " kIsGoodZvtxFT0vsPV" );
90+ O2_DEFINE_CONFIGURABLE (cfgIsVertexITSTPC, bool , false , " kIsVertexITSTPC" );
8791 O2_DEFINE_CONFIGURABLE (cfgNoCollInTimeRangeStandard, bool , false , " kNoCollInTimeRangeStandard" );
8892 O2_DEFINE_CONFIGURABLE (cfgEvSelkIsGoodITSLayersAll, bool , false , " kIsGoodITSLayersAll" )
8993 O2_DEFINE_CONFIGURABLE (cfgOccupancy, bool , false , " Bool for event selection on detector occupancy" );
9094 O2_DEFINE_CONFIGURABLE (cfgMultCut, bool , false , " Use additional event cut on mult correlations" );
95+ O2_DEFINE_CONFIGURABLE (cfgV0AT0A5Sigma, bool , true , " V0A T0A 5 sigma cut" )
9196 O2_DEFINE_CONFIGURABLE (cfgGlobalplusITS, bool , false , " Global and ITS tracks" )
9297 O2_DEFINE_CONFIGURABLE (cfgGlobalonly, bool , false , " Global only tracks" )
9398 O2_DEFINE_CONFIGURABLE (cfgITSonly, bool , false , " ITS only tracks" )
9499 O2_DEFINE_CONFIGURABLE (cfgFineBinning, bool , false , " Manually change to fine binning" )
95- O2_DEFINE_CONFIGURABLE (cfgTrackSelRun3ITSMatch, bool , false , " System check: Run3ITSMatch" )
96- O2_DEFINE_CONFIGURABLE (cfgTrackSel, bool , false , " System check: track selection" )
97100
98101 ConfigurableAxis axisVertex{" axisVertex" , {20 , -10 , 10 }, " vertex axis for histograms" };
99102 ConfigurableAxis axisPhi{" axisPhi" , {60 , 0.0 , constants::math::TwoPI}, " phi axis for histograms" };
@@ -184,6 +187,7 @@ struct FlowGfwTask {
184187 kNOITSROFRAMEBORDER ,
185188 kNOPSAMEBUNCHPILEUP ,
186189 kISGOODZVTXFT0VSPV ,
190+ kISVERTEXITSTPC ,
187191 kNOCOLLINTIMERANGESTANDART ,
188192 kISGOODITSLAYERSALL ,
189193 kAFTERMULTCUTS ,
@@ -240,6 +244,7 @@ struct FlowGfwTask {
240244 registry.get <TH1>(HIST (" hEventCount" ))->GetXaxis ()->SetBinLabel (kNOITSROFRAMEBORDER + 1 , " kNoITSROFrameBorder" );
241245 registry.get <TH1>(HIST (" hEventCount" ))->GetXaxis ()->SetBinLabel (kNOPSAMEBUNCHPILEUP + 1 , " kNoSameBunchPileup" );
242246 registry.get <TH1>(HIST (" hEventCount" ))->GetXaxis ()->SetBinLabel (kISGOODZVTXFT0VSPV + 1 , " kIsGoodZvtxFT0vsPV" );
247+ registry.get <TH1>(HIST (" hEventCount" ))->GetXaxis ()->SetBinLabel (kISVERTEXITSTPC + 1 , " kIsVertexITSTPC" );
243248 registry.get <TH1>(HIST (" hEventCount" ))->GetXaxis ()->SetBinLabel (kNOCOLLINTIMERANGESTANDART + 1 , " kNoCollInTimeRangeStandard" );
244249 registry.get <TH1>(HIST (" hEventCount" ))->GetXaxis ()->SetBinLabel (kISGOODITSLAYERSALL + 1 , " kIsGoodITSLayersAll" );
245250 registry.get <TH1>(HIST (" hEventCount" ))->GetXaxis ()->SetBinLabel (kAFTERMULTCUTS + 1 , " After Mult cuts" );
@@ -604,49 +609,57 @@ struct FlowGfwTask {
604609 }
605610 registry.fill (HIST (" hEventCount" ), kISGOODZVTXFT0VSPV );
606611 }
607- if (cfgNoCollInTimeRangeStandard ) {
608- if (!collision.selection_bit (o2::aod::evsel::kNoCollInTimeRangeStandard )) {
609- // no collisions in specified time range
612+ if (cfgIsVertexITSTPC ) {
613+ if (!collision.selection_bit (o2::aod::evsel::kIsVertexITSTPC )) {
614+ // removes collisions without vertex match between ITS-TPC
610615 return false ;
611616 }
612- registry.fill (HIST (" hEventCount" ), kNOCOLLINTIMERANGESTANDART );
613- }
614- if (cfgEvSelkIsGoodITSLayersAll) {
615- if (cfgEvSelkIsGoodITSLayersAll && !collision.selection_bit (o2::aod::evsel::kIsGoodITSLayersAll )) {
616- // removes dead staves of ITS
617- return false ;
617+ registry.fill (HIST (" hEventCount" ), kISVERTEXITSTPC );
618+ if (cfgNoCollInTimeRangeStandard) {
619+ if (!collision.selection_bit (o2::aod::evsel::kNoCollInTimeRangeStandard )) {
620+ // no collisions in specified time range
621+ return false ;
622+ }
623+ registry.fill (HIST (" hEventCount" ), kNOCOLLINTIMERANGESTANDART );
624+ }
625+ if (cfgEvSelkIsGoodITSLayersAll) {
626+ if (cfgEvSelkIsGoodITSLayersAll && !collision.selection_bit (o2::aod::evsel::kIsGoodITSLayersAll )) {
627+ // removes dead staves of ITS
628+ return false ;
629+ }
630+ registry.fill (HIST (" hEventCount" ), kISGOODITSLAYERSALL );
618631 }
619- registry.fill (HIST (" hEventCount" ), kISGOODITSLAYERSALL );
620- }
621-
622- float vtxz = -999 ;
623- if (collision.numContrib () > 1 ) {
624- vtxz = collision.posZ ();
625- float zRes = std::sqrt (collision.covZZ ());
626- if (zRes > 0.25 && collision.numContrib () < 20 )
627- vtxz = -999 ;
628- }
629632
630- auto multNTracksPV = collision.multNTracksPV ();
633+ float vtxz = -999 ;
634+ if (collision.numContrib () > 1 ) {
635+ vtxz = collision.posZ ();
636+ float zRes = std::sqrt (collision.covZZ ());
637+ if (zRes > 0.25 && collision.numContrib () < 20 )
638+ vtxz = -999 ;
639+ }
631640
632- if (std::abs (vtxz) > cfgCutVertex)
633- return false ;
641+ auto multNTracksPV = collision.multNTracksPV ();
634642
635- if (cfgMultCut) {
636- if (multNTracksPV < fMultPVCutLow ->Eval (centrality))
637- return false ;
638- if (multNTracksPV > fMultPVCutHigh ->Eval (centrality))
639- return false ;
640- if (multTrk < fMultCutLow ->Eval (centrality))
641- return false ;
642- if (multTrk > fMultCutHigh ->Eval (centrality))
643+ if (std::abs (vtxz) > cfgCutVertex)
643644 return false ;
644- registry.fill (HIST (" hEventCount" ), kAFTERMULTCUTS );
645- }
646645
647- // V0A T0A 5 sigma cut
648- if (std::abs (collision.multFV0A () - fT0AV0AMean ->Eval (collision.multFT0A ())) > 5 * fT0AV0ASigma ->Eval (collision.multFT0A ()))
649- return false ;
646+ if (cfgMultCut) {
647+ if (multNTracksPV < fMultPVCutLow ->Eval (centrality))
648+ return false ;
649+ if (multNTracksPV > fMultPVCutHigh ->Eval (centrality))
650+ return false ;
651+ if (multTrk < fMultCutLow ->Eval (centrality))
652+ return false ;
653+ if (multTrk > fMultCutHigh ->Eval (centrality))
654+ return false ;
655+ registry.fill (HIST (" hEventCount" ), kAFTERMULTCUTS );
656+ }
657+
658+ // V0A T0A 5 sigma cut
659+ if (cfgV0AT0A5Sigma)
660+ if (std::abs (collision.multFV0A () - fT0AV0AMean ->Eval (collision.multFT0A ())) > 5 * fT0AV0ASigma ->Eval (collision.multFT0A ()))
661+ return false ;
662+ }
650663
651664 return true ;
652665 }
@@ -688,11 +701,19 @@ struct FlowGfwTask {
688701 template <typename TTrack>
689702 bool trackSelected (TTrack track)
690703 {
704+ if (cfgDCAzPt && (std::fabs (track.dcaZ ()) > (0 .004f + 0 .013f / track.pt ())))
705+ return false ;
691706
692707 if (cfgTrackSel) {
693708 return myTrackSel.IsSelected (track);
709+ } else if (cfgGlobalplusITS) {
710+ return ((track.tpcNClsFound () >= cfgCutTPCclu) && (track.itsNCls () >= cfgCutITSclu));
711+ } else if (cfgGlobalonly) {
712+ return ((track.tpcNClsFound () >= cfgCutTPCclu));
713+ } else if (cfgITSonly) {
714+ return ((track.itsNCls () >= cfgCutITSclu));
694715 } else {
695- return (track. tpcNClsFound () >= cfgCutTPCclu) ;
716+ return false ;
696717 }
697718 }
698719
@@ -900,30 +921,30 @@ struct FlowGfwTask {
900921
901922 if (cfgGlobalplusITS) {
902923 if (withinPtRef) {
903- fGFW ->Fill (track.eta (), fPtAxis ->FindBin (track.pt ()) - 1 , track.phi (), wacc * weff, 1 );
904924 globalTracksNch++;
905925 registry.fill (HIST (" GlobalplusITS" ), centrality, globalTracksNch);
926+ fGFW ->Fill (track.eta (), fPtAxis ->FindBin (track.pt ()) - 1 , track.phi (), wacc * weff, 1 );
906927 }
907928 }
908929
909930 if (track.hasTPC ()) {
910931 if (cfgGlobalonly) {
911932 if (withinPtRef) {
912- fGFW ->Fill (track.eta (), fPtAxis ->FindBin (track.pt ()) - 1 , track.phi (), wacc * weff, 1 );
913933 globalTracksNch++;
914934 registry.fill (HIST (" Globalonly" ), centrality, globalTracksNch);
915935 registry.fill (HIST (" pt_Cen_GlobalOnly" ), centrality, track.pt ());
916936 registry.fill (HIST (" phi_Cen_GlobalOnly" ), centrality, track.phi ());
937+ fGFW ->Fill (track.eta (), fPtAxis ->FindBin (track.pt ()) - 1 , track.phi (), wacc * weff, 1 );
917938 }
918939 }
919940 } else {
920941 if (cfgITSonly) {
921942 if (withinPtRef) {
922- fGFW ->Fill (track.eta (), fPtAxis ->FindBin (track.pt ()) - 1 , track.phi (), wacc * weff, 1 );
923943 globalTracksNch++;
924944 registry.fill (HIST (" ITSonly" ), centrality, globalTracksNch);
925945 registry.fill (HIST (" pt_Cen_ITSOnly" ), centrality, track.pt ());
926946 registry.fill (HIST (" phi_Cen_ITSOnly" ), centrality, track.phi ());
947+ fGFW ->Fill (track.eta (), fPtAxis ->FindBin (track.pt ()) - 1 , track.phi (), wacc * weff, 1 );
927948 }
928949 }
929950 }
0 commit comments