@@ -191,6 +191,27 @@ struct DetectorOccupancyQaTask {
191191 histos.add (" tpcNClsShared_vs_centr_vs_occup_pos" , " " , kTH3F , {{20 , 0 , 4000 , " nITStrk cls567" }, axisOccupancyForDeDxStudies, axisNTPCcls});
192192 histos.add (" tpcNClsShared_vs_centr_vs_occup_neg" , " " , kTH3F , {{20 , 0 , 4000 , " nITStrk cls567" }, axisOccupancyForDeDxStudies, axisNTPCcls});
193193
194+ // July 2025: more for data vs MC
195+ AxisSpec axisChi2TPC{150 , 0 , 15 , " chi2Ncl TPC" };
196+ histos.add (" QA_noTPCcuts/nPV_10_200/tpcNClsFindable_vs_occup_pt_02_05" , " " , kTH2F , {axisNTPCcls, axisOccupancyForDeDxStudies});
197+ histos.add (" QA_noTPCcuts/nPV_10_200/tpcNClsFindable_vs_occup_pt_05_10" , " " , kTH2F , {axisNTPCcls, axisOccupancyForDeDxStudies});
198+ histos.add (" QA_noTPCcuts/nPV_10_200/tpcNClsFindable_vs_occup_pt_above1_0" , " " , kTH2F , {axisNTPCcls, axisOccupancyForDeDxStudies});
199+ histos.add (" QA_noTPCcuts/nPV_10_200/tpcNClsFound_vs_occup_pt_02_05" , " " , kTH2F , {axisNTPCcls, axisOccupancyForDeDxStudies});
200+ histos.add (" QA_noTPCcuts/nPV_10_200/tpcNClsFound_vs_occup_pt_05_10" , " " , kTH2F , {axisNTPCcls, axisOccupancyForDeDxStudies});
201+ histos.add (" QA_noTPCcuts/nPV_10_200/tpcNClsFound_vs_occup_pt_above1_0" , " " , kTH2F , {axisNTPCcls, axisOccupancyForDeDxStudies});
202+ histos.add (" QA_noTPCcuts/nPV_10_200/tpcChi2NCl_vs_occup_pt_02_05" , " " , kTH2F , {axisChi2TPC, axisOccupancyForDeDxStudies});
203+ histos.add (" QA_noTPCcuts/nPV_10_200/tpcChi2NCl_vs_occup_pt_05_10" , " " , kTH2F , {axisChi2TPC, axisOccupancyForDeDxStudies});
204+ histos.add (" QA_noTPCcuts/nPV_10_200/tpcChi2NCl_vs_occup_pt_above1_0" , " " , kTH2F , {axisChi2TPC, axisOccupancyForDeDxStudies});
205+ histos.add (" QA_noTPCcuts/nPV_above2000/tpcNClsFindable_vs_occup_pt_02_05" , " " , kTH2F , {axisNTPCcls, axisOccupancyForDeDxStudies});
206+ histos.add (" QA_noTPCcuts/nPV_above2000/tpcNClsFindable_vs_occup_pt_05_10" , " " , kTH2F , {axisNTPCcls, axisOccupancyForDeDxStudies});
207+ histos.add (" QA_noTPCcuts/nPV_above2000/tpcNClsFindable_vs_occup_pt_above1_0" , " " , kTH2F , {axisNTPCcls, axisOccupancyForDeDxStudies});
208+ histos.add (" QA_noTPCcuts/nPV_above2000/tpcNClsFound_vs_occup_pt_02_05" , " " , kTH2F , {axisNTPCcls, axisOccupancyForDeDxStudies});
209+ histos.add (" QA_noTPCcuts/nPV_above2000/tpcNClsFound_vs_occup_pt_05_10" , " " , kTH2F , {axisNTPCcls, axisOccupancyForDeDxStudies});
210+ histos.add (" QA_noTPCcuts/nPV_above2000/tpcNClsFound_vs_occup_pt_above1_0" , " " , kTH2F , {axisNTPCcls, axisOccupancyForDeDxStudies});
211+ histos.add (" QA_noTPCcuts/nPV_above2000/tpcChi2NCl_vs_occup_pt_02_05" , " " , kTH2F , {axisChi2TPC, axisOccupancyForDeDxStudies});
212+ histos.add (" QA_noTPCcuts/nPV_above2000/tpcChi2NCl_vs_occup_pt_05_10" , " " , kTH2F , {axisChi2TPC, axisOccupancyForDeDxStudies});
213+ histos.add (" QA_noTPCcuts/nPV_above2000/tpcChi2NCl_vs_occup_pt_above1_0" , " " , kTH2F , {axisChi2TPC, axisOccupancyForDeDxStudies});
214+
194215 AxisSpec axisFractionNclsFindableMinusPID{110 , -1.1 , 1.1 , " TPC nClsFindableMinusPID / nClsFindable" };
195216 histos.add (" fraction_tpcNClsFindableMinusPID_vs_occup" , " " , kTH2D , {axisOccupancyForDeDxStudies, axisFractionNclsFindableMinusPID});
196217 histos.add (" fraction_tpcNClsFindableMinusPID_vs_occup_peripheralByV0A" , " " , kTH2D , {axisOccupancyForDeDxStudies, axisFractionNclsFindableMinusPID});
@@ -444,13 +465,15 @@ struct DetectorOccupancyQaTask {
444465
445466 // 3D histograms: nGlobalTracks with cls567 as y-axis, V0A as x-axis:
446467 histos.add (" nTracksGlobal_vs_V0A_vs_occup_pure" , " " , kTH3F , {axisMultV0A, axisNtracksGlobal, axisOccupancyTracks});
468+ histos.add (" nTracksGlobal_vs_V0A_vs_occup_kNoCollInTimeRangeNarrow" , " " , kTH3F , {axisMultV0A, axisNtracksGlobal, axisOccupancyTracks});
447469 histos.add (" nTracksGlobal_vs_V0A_vs_occup_kNoCollInTimeRangeStandard_extraCuts" , " " , kTH3F , {axisMultV0A, axisNtracksGlobal, axisOccupancyTracks});
448470 // FT0C as x-axis:
449471 histos.add (" nTracksGlobal_vs_FT0C_vs_occup_pure" , " " , kTH3F , {axisMultFT0C, axisNtracksGlobal, axisOccupancyTracks});
450472 histos.add (" nTracksGlobal_vs_FT0C_vs_occup_kNoCollInTimeRangeStandard_extraCuts" , " " , kTH3F , {axisMultFT0C, axisNtracksGlobal, axisOccupancyTracks});
451473
452474 // 3D histograms: now - nITStracks with cls567 as y-axis, V0A as x-axis:
453475 histos.add (" nPV_vs_V0A_vs_occup_pure" , " " , kTH3F , {axisMultV0A, axisNtracks, axisOccupancyTracks});
476+ histos.add (" nPV_vs_V0A_vs_occup_kNoCollInTimeRangeNarrow" , " " , kTH3F , {axisMultV0A, axisNtracks, axisOccupancyTracks});
454477 histos.add (" nPV_vs_V0A_vs_occup_kNoCollInTimeRangeStandard_extraCuts" , " " , kTH3F , {axisMultV0A, axisNtracks, axisOccupancyTracks});
455478 // FT0C as x-axis:
456479 histos.add (" nPV_vs_FT0C_vs_occup_pure" , " " , kTH3F , {axisMultFT0C, axisNtracks, axisOccupancyTracks});
@@ -948,6 +971,47 @@ struct DetectorOccupancyQaTask {
948971 histos.fill (HIST (" nTrackCounter_after_cuts_QA" ), 4 );
949972 // nPV++;
950973
974+ // July 2025: more for data vs MC:
975+ if (track.hasTPC () && col.sel8 () && occupancy >= 0 ) {
976+ float pt = track.pt ();
977+ // pt 0.2-0.5
978+ if (pt > 0.2 && pt < 0.5 ) {
979+ if (nPV >= 10 && nPV < 400 ) {
980+ histos.fill (HIST (" QA_noTPCcuts/nPV_10_200/tpcNClsFindable_vs_occup_pt_02_05" ), track.tpcNClsFindable (), occupancy);
981+ histos.fill (HIST (" QA_noTPCcuts/nPV_10_200/tpcNClsFound_vs_occup_pt_02_05" ), track.tpcNClsFound (), occupancy);
982+ histos.fill (HIST (" QA_noTPCcuts/nPV_10_200/tpcChi2NCl_vs_occup_pt_02_05" ), track.tpcChi2NCl (), occupancy);
983+ } else if (nPV >= 2000 ) {
984+ histos.fill (HIST (" QA_noTPCcuts/nPV_above2000/tpcNClsFindable_vs_occup_pt_02_05" ), track.tpcNClsFindable (), occupancy);
985+ histos.fill (HIST (" QA_noTPCcuts/nPV_above2000/tpcNClsFound_vs_occup_pt_02_05" ), track.tpcNClsFound (), occupancy);
986+ histos.fill (HIST (" QA_noTPCcuts/nPV_above2000/tpcChi2NCl_vs_occup_pt_02_05" ), track.tpcChi2NCl (), occupancy);
987+ }
988+ }
989+ // pt 0.5-1.0
990+ else if (pt > 0.5 && pt < 1.0 ) {
991+ if (nPV >= 10 && nPV < 400 ) {
992+ histos.fill (HIST (" QA_noTPCcuts/nPV_10_200/tpcNClsFindable_vs_occup_pt_05_10" ), track.tpcNClsFindable (), occupancy);
993+ histos.fill (HIST (" QA_noTPCcuts/nPV_10_200/tpcNClsFound_vs_occup_pt_05_10" ), track.tpcNClsFound (), occupancy);
994+ histos.fill (HIST (" QA_noTPCcuts/nPV_10_200/tpcChi2NCl_vs_occup_pt_05_10" ), track.tpcChi2NCl (), occupancy);
995+ } else if (nPV >= 2000 ) {
996+ histos.fill (HIST (" QA_noTPCcuts/nPV_above2000/tpcNClsFindable_vs_occup_pt_05_10" ), track.tpcNClsFindable (), occupancy);
997+ histos.fill (HIST (" QA_noTPCcuts/nPV_above2000/tpcNClsFound_vs_occup_pt_05_10" ), track.tpcNClsFound (), occupancy);
998+ histos.fill (HIST (" QA_noTPCcuts/nPV_above2000/tpcChi2NCl_vs_occup_pt_05_10" ), track.tpcChi2NCl (), occupancy);
999+ }
1000+ }
1001+ // pt > 1.0
1002+ else if (pt > 1.0 ) {
1003+ if (nPV >= 10 && nPV < 400 ) {
1004+ histos.fill (HIST (" QA_noTPCcuts/nPV_10_200/tpcNClsFindable_vs_occup_pt_above1_0" ), track.tpcNClsFindable (), occupancy);
1005+ histos.fill (HIST (" QA_noTPCcuts/nPV_10_200/tpcNClsFound_vs_occup_pt_above1_0" ), track.tpcNClsFound (), occupancy);
1006+ histos.fill (HIST (" QA_noTPCcuts/nPV_10_200/tpcChi2NCl_vs_occup_pt_above1_0" ), track.tpcChi2NCl (), occupancy);
1007+ } else if (nPV >= 2000 ) {
1008+ histos.fill (HIST (" QA_noTPCcuts/nPV_above2000/tpcNClsFindable_vs_occup_pt_above1_0" ), track.tpcNClsFindable (), occupancy);
1009+ histos.fill (HIST (" QA_noTPCcuts/nPV_above2000/tpcNClsFound_vs_occup_pt_above1_0" ), track.tpcNClsFound (), occupancy);
1010+ histos.fill (HIST (" QA_noTPCcuts/nPV_above2000/tpcChi2NCl_vs_occup_pt_above1_0" ), track.tpcChi2NCl (), occupancy);
1011+ }
1012+ }
1013+ }
1014+
9511015 if (track.isGlobalTrack () && track.tpcNClsFound () >= confCutMinTPCcls) {
9521016 nGlobalTracks++;
9531017 histos.fill (HIST (" nTrackCounter_after_cuts_QA" ), 5 );
@@ -1120,13 +1184,13 @@ struct DetectorOccupancyQaTask {
11201184 if (!(track.isGlobalTrack () && track.tpcNClsFound () >= confCutMinTPCcls))
11211185 continue ;
11221186
1123- // pt vs centr vs occup
1124- if (occupancy >= 0 ) {
1125- float sign = track.sign ();
1126- float pt = track.pt ();
1127- float eta = track.eta ();
1128- float phi = track.phi ();
1187+ // ### kine distr vs centr vs occup
1188+ float sign = track.sign ();
1189+ float pt = track.pt ();
1190+ float eta = track.eta ();
1191+ float phi = track.phi ();
11291192
1193+ if (occupancy >= 0 && fabs (eta) < 0.8 && pt > 0.15 ) {
11301194 if (confFlagManyHeavyHistos) {
11311195 histos.fill (HIST (" ptGlobal_vs_centr_vs_occup" ), nPV, occupancy, pt);
11321196 histos.fill (HIST (" ptPV_vs_centr_vs_occup" ), nPV, occupancy, pt);
@@ -1164,18 +1228,17 @@ struct DetectorOccupancyQaTask {
11641228 }
11651229
11661230 // July 2025: for data vs MC kine distr comparison
1167- if (1 ) {
1168- if (sign > 0 ) {
1169- histos.fill (HIST (" track_distr_nITStrThisEv_10_200/kine_vs_weighted_occup/hPt_pos" ), pt, occupancy);
1170- histos.fill (HIST (" track_distr_nITStrThisEv_10_200/kine_vs_weighted_occup/hEta_pos" ), eta, occupancy);
1171- histos.fill (HIST (" track_distr_nITStrThisEv_10_200/kine_vs_weighted_occup/hPhi_pos" ), phi, occupancy, pt);
1172- } else {
1173- histos.fill (HIST (" track_distr_nITStrThisEv_10_200/kine_vs_weighted_occup/hPt_neg" ), pt, occupancy);
1174- histos.fill (HIST (" track_distr_nITStrThisEv_10_200/kine_vs_weighted_occup/hEta_neg" ), eta, occupancy);
1175- histos.fill (HIST (" track_distr_nITStrThisEv_10_200/kine_vs_weighted_occup/hPhi_neg" ), phi, occupancy, pt);
1176- }
1177- histos.fill (HIST (" track_distr_nITStrThisEv_10_200/hPt_vs_tpcInnerPt_vs_occup" ), pt, track.tpcInnerParam (), occupancy);
1178- } // end of July 2025: for data vs MC kine distr comparison
1231+ if (sign > 0 ) {
1232+ histos.fill (HIST (" track_distr_nITStrThisEv_10_200/kine_vs_weighted_occup/hPt_pos" ), pt, occupancy);
1233+ histos.fill (HIST (" track_distr_nITStrThisEv_10_200/kine_vs_weighted_occup/hEta_pos" ), eta, occupancy);
1234+ histos.fill (HIST (" track_distr_nITStrThisEv_10_200/kine_vs_weighted_occup/hPhi_pos" ), phi, occupancy, pt);
1235+ } else {
1236+ histos.fill (HIST (" track_distr_nITStrThisEv_10_200/kine_vs_weighted_occup/hPt_neg" ), pt, occupancy);
1237+ histos.fill (HIST (" track_distr_nITStrThisEv_10_200/kine_vs_weighted_occup/hEta_neg" ), eta, occupancy);
1238+ histos.fill (HIST (" track_distr_nITStrThisEv_10_200/kine_vs_weighted_occup/hPhi_neg" ), phi, occupancy, pt);
1239+ }
1240+ histos.fill (HIST (" track_distr_nITStrThisEv_10_200/hPt_vs_tpcInnerPt_vs_occup" ), pt, track.tpcInnerParam (), occupancy);
1241+ // end of July 2025: for data vs MC kine distr comparison
11791242
11801243 } else if (nPV >= 2000 ) {
11811244 if (flagWhichDeltaTimeWin == 1 && flagNoCollNearby) {
@@ -1205,22 +1268,21 @@ struct DetectorOccupancyQaTask {
12051268 }
12061269
12071270 // July 2025: for data vs MC kine distr comparison
1208- if (1 ) {
1209- if (sign > 0 ) {
1210- histos.fill (HIST (" track_distr_nITStrThisEv_above_2000/kine_vs_weighted_occup/hPt_pos" ), pt, occupancy);
1211- histos.fill (HIST (" track_distr_nITStrThisEv_above_2000/kine_vs_weighted_occup/hEta_pos" ), eta, occupancy);
1212- histos.fill (HIST (" track_distr_nITStrThisEv_above_2000/kine_vs_weighted_occup/hPhi_pos" ), phi, occupancy, pt);
1213- } else {
1214- histos.fill (HIST (" track_distr_nITStrThisEv_above_2000/kine_vs_weighted_occup/hPt_neg" ), pt, occupancy);
1215- histos.fill (HIST (" track_distr_nITStrThisEv_above_2000/kine_vs_weighted_occup/hEta_neg" ), eta, occupancy);
1216- histos.fill (HIST (" track_distr_nITStrThisEv_above_2000/kine_vs_weighted_occup/hPhi_neg" ), phi, occupancy, pt);
1217- }
1218- histos.fill (HIST (" track_distr_nITStrThisEv_above_2000/hPt_vs_tpcInnerPt_vs_occup" ), pt, track.tpcInnerParam (), occupancy);
1219- } // end of July 2025: for data vs MC kine distr comparison
1271+ if (sign > 0 ) {
1272+ histos.fill (HIST (" track_distr_nITStrThisEv_above_2000/kine_vs_weighted_occup/hPt_pos" ), pt, occupancy);
1273+ histos.fill (HIST (" track_distr_nITStrThisEv_above_2000/kine_vs_weighted_occup/hEta_pos" ), eta, occupancy);
1274+ histos.fill (HIST (" track_distr_nITStrThisEv_above_2000/kine_vs_weighted_occup/hPhi_pos" ), phi, occupancy, pt);
1275+ } else {
1276+ histos.fill (HIST (" track_distr_nITStrThisEv_above_2000/kine_vs_weighted_occup/hPt_neg" ), pt, occupancy);
1277+ histos.fill (HIST (" track_distr_nITStrThisEv_above_2000/kine_vs_weighted_occup/hEta_neg" ), eta, occupancy);
1278+ histos.fill (HIST (" track_distr_nITStrThisEv_above_2000/kine_vs_weighted_occup/hPhi_neg" ), phi, occupancy, pt);
1279+ }
1280+ histos.fill (HIST (" track_distr_nITStrThisEv_above_2000/hPt_vs_tpcInnerPt_vs_occup" ), pt, track.tpcInnerParam (), occupancy);
1281+ // end of July 2025: for data vs MC kine distr comparison
12201282 } // end of if (nPV >= 2000)
12211283 } // end of if (occupancy >= 0)
1222- }
1223- } // end of spec track loop to fill track histograms
1284+ } // end of spec track loop to fill track histograms
1285+ } // end of if (confAddBasicQAhistos)
12241286
12251287 // occupancy vs centrality
12261288 if (confFlagCentralityIsAvailable) {
@@ -1269,8 +1331,11 @@ struct DetectorOccupancyQaTask {
12691331 histos.fill (HIST (" nTracksPV_vs_V0A_kNoCollInTimeRangeNarrow" ), multV0A, nPV);
12701332 histos.fill (HIST (" nTracksGlobal_vs_V0A_kNoCollInTimeRangeNarrow" ), multV0A, nGlobalTracks);
12711333 histos.fill (HIST (" nTracksGlobal_vs_nPV_kNoCollInTimeRangeNarrow" ), nPV, nGlobalTracks);
1272- if (occupancy >= 0 )
1334+ if (occupancy >= 0 ) {
12731335 histos.fill (HIST (" nTracksGlobal_vs_nPV_vs_occup_kNoCollInTimeRangeNarrow" ), nPV, nGlobalTracks, occupancy);
1336+ histos.fill (HIST (" nTracksGlobal_vs_V0A_vs_occup_kNoCollInTimeRangeNarrow" ), multV0A, nGlobalTracks, occupancy);
1337+ histos.fill (HIST (" nPV_vs_V0A_vs_occup_kNoCollInTimeRangeNarrow" ), multV0A, nPV, occupancy);
1338+ }
12741339 }
12751340 if (occupancy >= 0 && occupancy < 250 ) {
12761341 histos.fill (HIST (" nTracksPV_vs_V0A_occup_0_250" ), multV0A, nPV);
0 commit comments