@@ -100,6 +100,11 @@ struct DetectorOccupancyQaTask {
100100 Configurable<int > confUseAorCsideForPhiStudy{" UseAorCsideForPhiStudy" , -1 , " -1 - use full eta range, 0 - A, 1 - C sides" }; // o2-linter: disable=name/configurable (temporary fix)
101101 Configurable<float > confRadiusForPhiCorrection{" RadiusForPhiCorrection" , 0.8 , " default: inner TPC radius, cm" }; // o2-linter: disable=name/configurable (temporary fix)
102102
103+ Configurable<int > confApplyGoodITSstavesFlaginEvSel{" ApplyGoodITSstavesFlaginEvSel" , 0 , " 0 - no, 1 - yes" }; // o2-linter: disable=name/configurable (temporary fix)
104+ Configurable<int > confMinITSclsPerTrack{" MinITSclsPerTrack" , 5 , " should be in 4..7" }; // o2-linter: disable=name/configurable (temporary fix)
105+
106+ Configurable<std::vector<float >> confTimeSlicesForPastFutureStudies{" TimeSlicesForPastFutureStudies" , {-40 , -10 , 20 , 50 , 80 }, " Time slices for past/future studies, us" };
107+
103108 uint64_t minGlobalBC = 0 ;
104109 Service<o2::ccdb::BasicCCDBManager> ccdb;
105110 HistogramRegistry histos{" Histos" , {}, OutputObjHandlingPolicy::AnalysisObject};
@@ -275,6 +280,18 @@ struct DetectorOccupancyQaTask {
275280 histos.add (" track_distr_nITStrThisEv_10_200/hPhi_highOccupInDistantFuture" , " ;#varphi;n tracks" , kTH1D , {axisPhi});
276281 histos.add (" track_distr_nITStrThisEv_10_200/hPhi_highOccupInNeighbourEvents" , " ;#varphi;n tracks" , kTH1D , {axisPhi});
277282
283+ histos.add (" track_distr_nITStrThisEv_10_200/hPhi_lowOccupInTPC_pos_vs_pt" , " ;#varphi;n tracks" , kTH2D , {axisPhi, confAxisPtBinsForPhiStudy});
284+ histos.add (" track_distr_nITStrThisEv_10_200/hPhi_highOccupInRecentPast_pos_vs_pt" , " ;#varphi;n tracks" , kTH2D , {axisPhi, confAxisPtBinsForPhiStudy});
285+ histos.add (" track_distr_nITStrThisEv_10_200/hPhi_highOccupInCloseFuture_pos_vs_pt" , " ;#varphi;n tracks" , kTH2D , {axisPhi, confAxisPtBinsForPhiStudy});
286+ histos.add (" track_distr_nITStrThisEv_10_200/hPhi_highOccupInDistantFuture_pos_vs_pt" , " ;#varphi;n tracks" , kTH2D , {axisPhi, confAxisPtBinsForPhiStudy});
287+ histos.add (" track_distr_nITStrThisEv_10_200/hPhi_highOccupInNeighbourEvents_pos_vs_pt" , " ;#varphi;n tracks" , kTH2D , {axisPhi, confAxisPtBinsForPhiStudy});
288+
289+ histos.add (" track_distr_nITStrThisEv_10_200/hPhi_lowOccupInTPC_neg_vs_pt" , " ;#varphi;n tracks" , kTH2D , {axisPhi, confAxisPtBinsForPhiStudy});
290+ histos.add (" track_distr_nITStrThisEv_10_200/hPhi_highOccupInRecentPast_neg_vs_pt" , " ;#varphi;n tracks" , kTH2D , {axisPhi, confAxisPtBinsForPhiStudy});
291+ histos.add (" track_distr_nITStrThisEv_10_200/hPhi_highOccupInCloseFuture_neg_vs_pt" , " ;#varphi;n tracks" , kTH2D , {axisPhi, confAxisPtBinsForPhiStudy});
292+ histos.add (" track_distr_nITStrThisEv_10_200/hPhi_highOccupInDistantFuture_neg_vs_pt" , " ;#varphi;n tracks" , kTH2D , {axisPhi, confAxisPtBinsForPhiStudy});
293+ histos.add (" track_distr_nITStrThisEv_10_200/hPhi_highOccupInNeighbourEvents_neg_vs_pt" , " ;#varphi;n tracks" , kTH2D , {axisPhi, confAxisPtBinsForPhiStudy});
294+
278295 histos.add (" track_distr_nITStrThisEv_above_2000/hPhi_lowOccupInTPC" , " ;#varphi;n tracks" , kTH1D , {axisPhi});
279296 histos.add (" track_distr_nITStrThisEv_above_2000/hPhi_highOccupInRecentPast" , " ;#varphi;n tracks" , kTH1D , {axisPhi});
280297 histos.add (" track_distr_nITStrThisEv_above_2000/hPhi_highOccupInCloseFuture" , " ;#varphi;n tracks" , kTH1D , {axisPhi});
@@ -590,7 +607,7 @@ struct DetectorOccupancyQaTask {
590607 if (!track.isPVContributor ()) {
591608 continue ;
592609 }
593- if (track.itsNCls () < 5 )
610+ if (track.itsNCls () < confMinITSclsPerTrack )
594611 continue ;
595612 nITS567cls++;
596613 nITSTPCtracks += track.hasITS () && track.hasTPC ();
@@ -860,17 +877,17 @@ struct DetectorOccupancyQaTask {
860877
861878 // counters of occupancy in specified delta-time ranges, to monitor eta, phi, pt distributions later
862879 float integralFullDeltaTime = histos.get <TH1>(HIST (" thisEventITStracksInTimeBins" ))->Integral ();
863- int binMin = histos.get <TH1>(HIST (" thisEventITStracksInTimeBins" ))->FindBin (- 39 .5 ); // us
864- int binMax = histos.get <TH1>(HIST (" thisEventITStracksInTimeBins" ))->FindBin (- 10 .5 );
880+ int binMin = histos.get <TH1>(HIST (" thisEventITStracksInTimeBins" ))->FindBin (confTimeSlicesForPastFutureStudies-> at ( 0 ) + 0 .5 ); // default was: -39.5 us
881+ int binMax = histos.get <TH1>(HIST (" thisEventITStracksInTimeBins" ))->FindBin (confTimeSlicesForPastFutureStudies-> at ( 1 ) - 0 .5 ); // -10.5
865882 float integralPast = histos.get <TH1>(HIST (" thisEventITStracksInTimeBins" ))->Integral (binMin, binMax);
866- binMin = histos.get <TH1>(HIST (" thisEventITStracksInTimeBins" ))->FindBin (20 .5 );
867- binMax = histos.get <TH1>(HIST (" thisEventITStracksInTimeBins" ))->FindBin (49 .5 );
883+ binMin = histos.get <TH1>(HIST (" thisEventITStracksInTimeBins" ))->FindBin (confTimeSlicesForPastFutureStudies-> at ( 2 ) + 0 .5 ); // 20.5
884+ binMax = histos.get <TH1>(HIST (" thisEventITStracksInTimeBins" ))->FindBin (confTimeSlicesForPastFutureStudies-> at ( 3 ) - 0 .5 ); // 49.5
868885 float integralFuture1 = histos.get <TH1>(HIST (" thisEventITStracksInTimeBins" ))->Integral (binMin, binMax);
869- binMin = histos.get <TH1>(HIST (" thisEventITStracksInTimeBins" ))->FindBin (50 .5 );
870- binMax = histos.get <TH1>(HIST (" thisEventITStracksInTimeBins" ))->FindBin (79 .5 );
886+ binMin = histos.get <TH1>(HIST (" thisEventITStracksInTimeBins" ))->FindBin (confTimeSlicesForPastFutureStudies-> at ( 3 ) + 0 .5 ); // 50.5
887+ binMax = histos.get <TH1>(HIST (" thisEventITStracksInTimeBins" ))->FindBin (confTimeSlicesForPastFutureStudies-> at ( 4 ) - 0 .5 ); // 79.5
871888 float integralFuture2 = histos.get <TH1>(HIST (" thisEventITStracksInTimeBins" ))->Integral (binMin, binMax);
872- binMin = histos.get <TH1>(HIST (" thisEventITStracksInTimeBins" ))->FindBin (- 9 .5 );
873- binMax = histos.get <TH1>(HIST (" thisEventITStracksInTimeBins" ))->FindBin (19 .5 );
889+ binMin = histos.get <TH1>(HIST (" thisEventITStracksInTimeBins" ))->FindBin (confTimeSlicesForPastFutureStudies-> at ( 1 ) + 0 .5 ); // -9.5
890+ binMax = histos.get <TH1>(HIST (" thisEventITStracksInTimeBins" ))->FindBin (confTimeSlicesForPastFutureStudies-> at ( 2 ) - 0 .5 ); // 19.5
874891 float integralNeighbourEvents = histos.get <TH1>(HIST (" thisEventITStracksInTimeBins" ))->Integral (binMin, binMax);
875892
876893 // recent past
@@ -961,6 +978,9 @@ struct DetectorOccupancyQaTask {
961978 if (!col.sel8 ())
962979 continue ;
963980
981+ if (confApplyGoodITSstavesFlaginEvSel && !col.selection_bit (aod::evsel::kIsGoodITSLayersAll ))
982+ continue ;
983+
964984 // if (!col.selection_bit(kIsTriggerTVX))
965985 // continue;
966986
@@ -997,7 +1017,7 @@ struct DetectorOccupancyQaTask {
9971017 continue ;
9981018 if (track.eta () < confCutEtaMinTracksThisEvent || track.eta () > confCutEtaMaxTracksThisEvent)
9991019 continue ;
1000- if (track.itsNCls () < 5 )
1020+ if (track.itsNCls () < confMinITSclsPerTrack )
10011021 continue ;
10021022 nPV++;
10031023 }
@@ -1023,7 +1043,7 @@ struct DetectorOccupancyQaTask {
10231043 if (track.eta () < confCutEtaMinTracksThisEvent || track.eta () > confCutEtaMaxTracksThisEvent)
10241044 continue ;
10251045 histos.fill (HIST (" nTrackCounter_after_cuts_QA" ), 3 );
1026- if (track.itsNCls () < 5 )
1046+ if (track.itsNCls () < confMinITSclsPerTrack )
10271047 continue ;
10281048 histos.fill (HIST (" nTrackCounter_after_cuts_QA" ), 4 );
10291049 // nPV++;
@@ -1236,7 +1256,7 @@ struct DetectorOccupancyQaTask {
12361256 for (const auto & track : tracksGrouped) {
12371257 if (!track.isPVContributor ())
12381258 continue ;
1239- if (track.itsNCls () < 5 )
1259+ if (track.itsNCls () < confMinITSclsPerTrack )
12401260 continue ;
12411261 // if (!(track.isGlobalTrack() && track.tpcNClsFound() >= confCutMinTPCcls))
12421262 // continue;
@@ -1272,26 +1292,51 @@ struct DetectorOccupancyQaTask {
12721292 histos.fill (HIST (" track_distr_nITStrThisEv_10_200/hEta_lowOccupInTPC" ), eta);
12731293 histos.fill (HIST (" track_distr_nITStrThisEv_10_200/hPhi_lowOccupInTPC" ), phi);
12741294 histos.fill (HIST (" track_distr_nITStrThisEv_10_200/hPt_lowOccupInTPC" ), pt);
1295+
1296+ if (sign > 0 )
1297+ histos.fill (HIST (" track_distr_nITStrThisEv_10_200/hPhi_lowOccupInTPC_pos_vs_pt" ), phi, pt);
1298+ else
1299+ histos.fill (HIST (" track_distr_nITStrThisEv_10_200/hPhi_lowOccupInTPC_neg_vs_pt" ), phi, pt);
12751300 }
12761301 if (flagWhichDeltaTimeWin == 2 && flagNoCollNearby) {
12771302 histos.fill (HIST (" track_distr_nITStrThisEv_10_200/hEta_highOccupInRecentPast" ), eta);
12781303 histos.fill (HIST (" track_distr_nITStrThisEv_10_200/hPhi_highOccupInRecentPast" ), phi);
12791304 histos.fill (HIST (" track_distr_nITStrThisEv_10_200/hPt_highOccupInRecentPast" ), pt);
1305+
1306+ if (sign > 0 )
1307+ histos.fill (HIST (" track_distr_nITStrThisEv_10_200/hPhi_highOccupInRecentPast_pos_vs_pt" ), phi, pt);
1308+ else
1309+ histos.fill (HIST (" track_distr_nITStrThisEv_10_200/hPhi_highOccupInRecentPast_neg_vs_pt" ), phi, pt);
12801310 }
12811311 if (flagWhichDeltaTimeWin == 3 && flagNoCollNearby) {
12821312 histos.fill (HIST (" track_distr_nITStrThisEv_10_200/hEta_highOccupInCloseFuture" ), eta);
12831313 histos.fill (HIST (" track_distr_nITStrThisEv_10_200/hPhi_highOccupInCloseFuture" ), phi);
12841314 histos.fill (HIST (" track_distr_nITStrThisEv_10_200/hPt_highOccupInCloseFuture" ), pt);
1315+
1316+ if (sign > 0 )
1317+ histos.fill (HIST (" track_distr_nITStrThisEv_10_200/hPhi_highOccupInCloseFuture_pos_vs_pt" ), phi, pt);
1318+ else
1319+ histos.fill (HIST (" track_distr_nITStrThisEv_10_200/hPhi_highOccupInCloseFuture_neg_vs_pt" ), phi, pt);
12851320 }
12861321 if (flagWhichDeltaTimeWin == 4 && flagNoCollNearby) {
12871322 histos.fill (HIST (" track_distr_nITStrThisEv_10_200/hEta_highOccupInDistantFuture" ), eta);
12881323 histos.fill (HIST (" track_distr_nITStrThisEv_10_200/hPhi_highOccupInDistantFuture" ), phi);
12891324 histos.fill (HIST (" track_distr_nITStrThisEv_10_200/hPt_highOccupInDistantFuture" ), pt);
1325+
1326+ if (sign > 0 )
1327+ histos.fill (HIST (" track_distr_nITStrThisEv_10_200/hPhi_highOccupInDistantFuture_pos_vs_pt" ), phi, pt);
1328+ else
1329+ histos.fill (HIST (" track_distr_nITStrThisEv_10_200/hPhi_highOccupInDistantFuture_neg_vs_pt" ), phi, pt);
12901330 }
12911331 if (flagWhichDeltaTimeWin == 5 ) {
12921332 histos.fill (HIST (" track_distr_nITStrThisEv_10_200/hEta_highOccupInNeighbourEvents" ), eta);
12931333 histos.fill (HIST (" track_distr_nITStrThisEv_10_200/hPhi_highOccupInNeighbourEvents" ), phi);
12941334 histos.fill (HIST (" track_distr_nITStrThisEv_10_200/hPt_highOccupInNeighbourEvents" ), pt);
1335+
1336+ if (sign > 0 )
1337+ histos.fill (HIST (" track_distr_nITStrThisEv_10_200/hPhi_highOccupInNeighbourEvents_pos_vs_pt" ), phi, pt);
1338+ else
1339+ histos.fill (HIST (" track_distr_nITStrThisEv_10_200/hPhi_highOccupInNeighbourEvents_neg_vs_pt" ), phi, pt);
12951340 }
12961341 histos.fill (HIST (" track_distr_nITStrThisEv_10_200/hPt_vs_tpcInnerPt_vs_occup" ), pt, track.tpcInnerParam (), occupancy);
12971342 } // end of TPC good global
0 commit comments