@@ -102,6 +102,7 @@ struct LFNucleiBATask {
102102 // Configurable<float> nsigmaITSTr{"nsigmaITSTr", 3.f, "Value of the Nsigma ITS cut for tritons ( > nSigmaITSTr)"};
103103 Configurable<bool > useITSHeCut{" useITSHeCut" , false , " Select Helium if compatible with helium hypothesis (via SigmaITS)" };
104104 Configurable<float > nsigmaITSHe{" nsigmaITSHe" , -1 .f , " Value of the Nsigma ITS cut for helium-3 ( > nSigmaITSHe)" };
105+ Configurable<bool > showAverageClusterSize{" showAverageClusterSize" , false , " Show average cluster size" };
105106 } nsigmaITSvar;
106107
107108 // Set additional cuts (used for debug)
@@ -123,6 +124,7 @@ struct LFNucleiBATask {
123124 ConfigurableAxis binsMassDe{" binsMassDe" , {180 , -1.8 , 1 .8f }, " " };
124125 ConfigurableAxis binsMassTr{" binsMassTr" , {250 , -2.5 , 2 .5f }, " " };
125126 ConfigurableAxis binsMassHe{" binsMassHe" , {300 , -3 ., 3 .f }, " " };
127+ ConfigurableAxis avClsBins{" avClsBins" , {200 , 0 , 20 }, " Binning in average cluster size" };
126128
127129 // Enable custom cuts/debug functions
128130 Configurable<bool > enableFiltering{" enableFiltering" , false , " Flag to enable filtering for p,d,t,He only -- disable if launch on skimmed dataset!" };
@@ -190,11 +192,26 @@ struct LFNucleiBATask {
190192 static constexpr float MassHeliumVal = 2 .80839f ;
191193 static constexpr float MassAlphaVal = 3 .72738f ;
192194
195+ template <typename TrackType>
196+ float averageClusterSizeTrk (const TrackType& track)
197+ {
198+ return o2::aod::ITSResponse::averageClusterSize (track.itsClusterSizes ());
199+ }
200+
201+ float averageClusterSizePerCoslInv (uint32_t itsClusterSizes, float eta) { return o2::aod::ITSResponse::averageClusterSize (itsClusterSizes) * std::cosh (eta); }
202+
203+ template <typename TrackType>
204+ float averageClusterSizePerCoslInv (const TrackType& track)
205+ {
206+ return averageClusterSizePerCoslInv (track.itsClusterSizes (), track.eta ());
207+ }
208+
193209 void init (o2::framework::InitContext&)
194210 {
195211 const AxisSpec pAxis{binsPt, " #it{p} (GeV/#it{c})" };
196212 const AxisSpec ptAxis{binsPt, " #it{p}_{T} (GeV/#it{c})" };
197213 const AxisSpec ptHeAxis{binsPtHe, " #it{p}_{T} (GeV/#it{c})" };
214+ const AxisSpec pZAxis{binsPt, " #it{p}/z (GeV/#it{c})" };
198215 const AxisSpec ptZHeAxis{binsPtZHe, " #it{p}_{T}/z (GeV/#it{c})" };
199216 const AxisSpec dedxAxis{binsdEdx, " d#it{E}/d#it{x} A.U." };
200217 const AxisSpec betaAxis{binsBeta, " TOF #beta" };
@@ -207,6 +224,8 @@ struct LFNucleiBATask {
207224 const AxisSpec sigmaITSAxis{binsSigmaITS, " " };
208225 const AxisSpec sigmaTPCAxis{binsSigmaTPC, " " };
209226 const AxisSpec sigmaTOFAxis{binsSigmaTOF, " " };
227+ const AxisSpec avClsAxis{avClsBins, " <ITS Cls. Size>" };
228+ const AxisSpec avClsEffAxis{avClsBins, " <ITS Cls. Size> / cosh(#eta)" };
210229
211230 if (doprocessData == true && doprocessMCReco == true ) {
212231 LOG (fatal) << " Can't enable processData and processMCReco in the same time, pick one!" ;
@@ -1424,6 +1443,10 @@ struct LFNucleiBATask {
14241443
14251444 // Bethe-Bloch TPC distribution and Beta vs pT TOF distribution
14261445 histos.add <TH2>(" tracks/h2TPCsignVsTPCmomentum" , " TPC <-dE/dX> vs #it{p}/Z; Signed #it{p} (GeV/#it{c}); TPC <-dE/dx> (a.u.)" , HistType::kTH2F , {{400 , -8 .f , 8 .f }, {dedxAxis}});
1446+ if (nsigmaITSvar.showAverageClusterSize ) {
1447+ histos.add <TH2>(" tracks/averageClusterSize" , " " , HistType::kTH2F , {{pZAxis}, {avClsAxis}});
1448+ histos.add <TH2>(" tracks/averageClusterSizePerCoslInv" , " " , HistType::kTH2F , {{pZAxis}, {avClsEffAxis}});
1449+ }
14271450 if (enableDebug) {
14281451 debugHistos.add <TH2>(" debug/h2TPCsignVsTPCmomentum_AllTracks" , " TPC <-dE/dX> vs #it{p}/Z (w/o rejection); Signed #it{p} (GeV/#it{c}); TPC <-dE/dx> (a.u.)" , HistType::kTH2F , {{400 , -8 .f , 8 .f }, {dedxAxis}});
14291452 debugHistos.add <TH2>(" debug/h2TPCsignVsTPCmomentum_FakeHits" , " TPC <-dE/dX> vs #it{p}/Z (Fake hits); Signed #it{p} (GeV/#it{c}); TPC <-dE/dx> (a.u.)" , HistType::kTH2F , {{400 , -8 .f , 8 .f }, {dedxAxis}});
@@ -1444,6 +1467,10 @@ struct LFNucleiBATask {
14441467 if (enableHe) {
14451468 histos.add <TH2>(" tracks/helium/h2TPCsignVsTPCmomentumHelium" , " TPC <-dE/dX> vs #it{p}/Z; Signed #it{p} (GeV/#it{c}); TPC <-dE/dx> (a.u.)" , HistType::kTH2F , {{400 , 0 .f , 8 .f }, {dedxAxis}});
14461469 histos.add <TH2>(" tracks/helium/h2TPCsignVsTPCmomentumantiHelium" , " TPC <-dE/dX> vs #it{p}/Z; Signed #it{p} (GeV/#it{c}); TPC <-dE/dx> (a.u.)" , HistType::kTH2F , {{400 , 0 .f , 8 .f }, {dedxAxis}});
1470+ if (nsigmaITSvar.showAverageClusterSize ) {
1471+ histos.add <TH2>(" tracks/helium/averageClusterSize" , " " , HistType::kTH2F , {{pZAxis}, {avClsAxis}});
1472+ histos.add <TH2>(" tracks/helium/averageClusterSizePerCoslInv" , " " , HistType::kTH2F , {{pZAxis}, {avClsEffAxis}});
1473+ }
14471474 }
14481475 if (enableAl) {
14491476 histos.add <TH2>(" tracks/alpha/h2TPCsignVsTPCmomentumAlpha" , " TPC <-dE/dX> vs #it{p}/Z; Signed #it{p} (GeV/#it{c}); TPC <-dE/dx> (a.u.)" , HistType::kTH2F , {{400 , 0 .f , 8 .f }, {dedxAxis}});
@@ -1503,17 +1530,17 @@ struct LFNucleiBATask {
15031530 histos.add <TH2>(" tracks/triton/h2antiTritonVspTNSigmaTPC" , " NSigmaTPC(#bar{t}) vs pT; #it{p}_{T} (GeV/#it{c}); NSigmaTPC" , HistType::kTH2F , {{ptAxis}, {sigmaTPCAxis}});
15041531 }
15051532 if (enableHe) {
1506- histos.add <TH2>(" tracks/helium/h2HeliumVspTNSigmaITSHe" , " NSigmaITS(He) vs pT /z; #it{p}_{T} /z (GeV/#it{c}); NSigmaITS(He)" , HistType::kTH2F , {{ptZHeAxis }, {sigmaITSAxis}});
1507- histos.add <TH2>(" tracks/helium/h2antiHeliumVspTNSigmaITSHe" , " NSigmaITS(#bar{He}) vs pT /z; #it{p}_{T} /z (GeV/#it{c}); NSigmaITS(#bar{He})" , HistType::kTH2F , {{ptZHeAxis }, {sigmaITSAxis}});
1533+ histos.add <TH2>(" tracks/helium/h2HeliumVspTNSigmaITSHe" , " NSigmaITS(He) vs p /z; #it{p}/z (GeV/#it{c}); NSigmaITS(He)" , HistType::kTH2F , {{pZAxis }, {sigmaITSAxis}});
1534+ histos.add <TH2>(" tracks/helium/h2antiHeliumVspTNSigmaITSHe" , " NSigmaITS(#bar{He}) vs p /z; #it{p}/z (GeV/#it{c}); NSigmaITS(#bar{He})" , HistType::kTH2F , {{pZAxis }, {sigmaITSAxis}});
15081535
1509- histos.add <TH2>(" tracks/helium/h2HeliumVspTNSigmaITSTr" , " NSigmaITS(t) vs pT /z; #it{p}_{T} /z (GeV/#it{c}); NSigmaITS(t)" , HistType::kTH2F , {{ptZHeAxis }, {sigmaITSAxis}});
1510- histos.add <TH2>(" tracks/helium/h2antiHeliumVspTNSigmaITSTr" , " NSigmaITS(#bar{t}) vs pT /z; #it{p}_{T} /z (GeV/#it{c}); NSigmaITS(#bar{t})" , HistType::kTH2F , {{ptZHeAxis }, {sigmaITSAxis}});
1536+ histos.add <TH2>(" tracks/helium/h2HeliumVspTNSigmaITSTr" , " NSigmaITS(t) vs p /z; #it{p}/z (GeV/#it{c}); NSigmaITS(t)" , HistType::kTH2F , {{pZAxis }, {sigmaITSAxis}});
1537+ histos.add <TH2>(" tracks/helium/h2antiHeliumVspTNSigmaITSTr" , " NSigmaITS(#bar{t}) vs p /z; #it{p}/z (GeV/#it{c}); NSigmaITS(#bar{t})" , HistType::kTH2F , {{pZAxis }, {sigmaITSAxis}});
15111538
1512- histos.add <TH2>(" tracks/helium/h2HeliumVspTNSigmaITSHe_wTPCpid" , " NSigmaITS(He) vs pT /z; #it{p}_{T} /z (GeV/#it{c}); NSigmaITS(He)" , HistType::kTH2F , {{ptZHeAxis }, {sigmaITSAxis}});
1513- histos.add <TH2>(" tracks/helium/h2antiHeliumVspTNSigmaITSHe_wTPCpid" , " NSigmaITS(#bar{He}) vs pT /z; #it{p}_{T} /z (GeV/#it{c}); NSigmaITS(#bar{He})" , HistType::kTH2F , {{ptZHeAxis }, {sigmaITSAxis}});
1539+ histos.add <TH2>(" tracks/helium/h2HeliumVspTNSigmaITSHe_wTPCpid" , " NSigmaITS(He) vs p /z; #it{p}/z (GeV/#it{c}); NSigmaITS(He)" , HistType::kTH2F , {{pZAxis }, {sigmaITSAxis}});
1540+ histos.add <TH2>(" tracks/helium/h2antiHeliumVspTNSigmaITSHe_wTPCpid" , " NSigmaITS(#bar{He}) vs p /z; #it{p}/z (GeV/#it{c}); NSigmaITS(#bar{He})" , HistType::kTH2F , {{pZAxis }, {sigmaITSAxis}});
15141541
1515- histos.add <TH2>(" tracks/helium/h2HeliumVspTNSigmaITSTr_wTPCpid" , " NSigmaITS(t) vs pT /z; #it{p}_{T} /z (GeV/#it{c}); NSigmaITS(t)" , HistType::kTH2F , {{ptZHeAxis }, {sigmaITSAxis}});
1516- histos.add <TH2>(" tracks/helium/h2antiHeliumVspTNSigmaITSTr_wTPCpid" , " NSigmaITS(#bar{t}) vs pT /z; #it{p}_{T} /z (GeV/#it{c}); NSigmaITS(#bar{t})" , HistType::kTH2F , {{ptZHeAxis }, {sigmaITSAxis}});
1542+ histos.add <TH2>(" tracks/helium/h2HeliumVspTNSigmaITSTr_wTPCpid" , " NSigmaITS(t) vs p /z; #it{p}/z (GeV/#it{c}); NSigmaITS(t)" , HistType::kTH2F , {{pZAxis }, {sigmaITSAxis}});
1543+ histos.add <TH2>(" tracks/helium/h2antiHeliumVspTNSigmaITSTr_wTPCpid" , " NSigmaITS(#bar{t}) vs p /z; #it{p}/z (GeV/#it{c}); NSigmaITS(#bar{t})" , HistType::kTH2F , {{pZAxis }, {sigmaITSAxis}});
15171544
15181545 histos.add <TH2>(" tracks/helium/h2HeliumVspTNSigmaTPC" , " NSigmaTPC(He) vs pT/z; #it{p}_{T}/z (GeV/#it{c}); NSigmaTPC" , HistType::kTH2F , {{ptZHeAxis}, {sigmaTPCAxis}});
15191546 histos.add <TH2>(" tracks/helium/h2antiHeliumVspTNSigmaTPC" , " NSigmaTPC(#bar{He}) vs pT/z; #it{p}_{T}/z (GeV/#it{c}); NSigmaTPC" , HistType::kTH2F , {{ptZHeAxis}, {sigmaTPCAxis}});
@@ -3629,6 +3656,12 @@ struct LFNucleiBATask {
36293656 }
36303657
36313658 histos.fill (HIST (" tracks/h2TPCsignVsTPCmomentum" ), track.tpcInnerParam () / (1 .f * track.sign ()), track.tpcSignal ());
3659+ if constexpr (!IsFilteredData) {
3660+ if (nsigmaITSvar.showAverageClusterSize ) {
3661+ histos.fill (HIST (" tracks/averageClusterSize" ), track.p (), averageClusterSizeTrk (track));
3662+ histos.fill (HIST (" tracks/averageClusterSizePerCoslInv" ), track.p (), averageClusterSizePerCoslInv (track));
3663+ }
3664+ }
36323665
36333666 if (track.sign () > 0 ) {
36343667 if (enablePr && prRapCut) {
@@ -4045,24 +4078,32 @@ struct LFNucleiBATask {
40454078 if (isHeWoTPCpid) {
40464079 if (outFlagOptions.enableExpSignalTPC )
40474080 histos.fill (HIST (" tracks/helium/h2HeliumTPCExpSignalDiffVsPt" ), hePt, track.tpcExpSignalDiffHe ());
4048- histos.fill (HIST (" tracks/helium/h2HeliumVspTNSigmaITSTr" ), hePt , nITSTr);
4049- histos.fill (HIST (" tracks/helium/h2HeliumVspTNSigmaITSHe" ), hePt , nITSHe);
4081+ histos.fill (HIST (" tracks/helium/h2HeliumVspTNSigmaITSTr" ), track. p () , nITSTr);
4082+ histos.fill (HIST (" tracks/helium/h2HeliumVspTNSigmaITSHe" ), track. p () , nITSHe);
40504083 histos.fill (HIST (" tracks/helium/h2HeliumVspTNSigmaTPC" ), hePt, track.tpcNSigmaHe ());
40514084 }
40524085 if (isAntiHeWoTPCpid) {
40534086 if (outFlagOptions.enableExpSignalTPC )
40544087 histos.fill (HIST (" tracks/helium/h2antiHeliumTPCExpSignalDiffVsPt" ), antihePt, track.tpcExpSignalDiffHe ());
4055- histos.fill (HIST (" tracks/helium/h2antiHeliumVspTNSigmaITSTr" ), antihePt , nITSTr);
4056- histos.fill (HIST (" tracks/helium/h2antiHeliumVspTNSigmaITSHe" ), antihePt , nITSHe);
4088+ histos.fill (HIST (" tracks/helium/h2antiHeliumVspTNSigmaITSTr" ), track. p () , nITSTr);
4089+ histos.fill (HIST (" tracks/helium/h2antiHeliumVspTNSigmaITSHe" ), track. p () , nITSHe);
40574090 histos.fill (HIST (" tracks/helium/h2antiHeliumVspTNSigmaTPC" ), antihePt, track.tpcNSigmaHe ());
40584091 }
40594092 if (isHeWTPCpid) {
4060- histos.fill (HIST (" tracks/helium/h2HeliumVspTNSigmaITSTr_wTPCpid" ), hePt , nITSTr);
4061- histos.fill (HIST (" tracks/helium/h2HeliumVspTNSigmaITSHe_wTPCpid" ), hePt , nITSHe);
4093+ histos.fill (HIST (" tracks/helium/h2HeliumVspTNSigmaITSTr_wTPCpid" ), track. p () , nITSTr);
4094+ histos.fill (HIST (" tracks/helium/h2HeliumVspTNSigmaITSHe_wTPCpid" ), track. p () , nITSHe);
40624095 }
40634096 if (isAntiHeWTPCpid) {
4064- histos.fill (HIST (" tracks/helium/h2antiHeliumVspTNSigmaITSTr_wTPCpid" ), antihePt, nITSTr);
4065- histos.fill (HIST (" tracks/helium/h2antiHeliumVspTNSigmaITSHe_wTPCpid" ), antihePt, nITSHe);
4097+ histos.fill (HIST (" tracks/helium/h2antiHeliumVspTNSigmaITSTr_wTPCpid" ), track.p (), nITSTr);
4098+ histos.fill (HIST (" tracks/helium/h2antiHeliumVspTNSigmaITSHe_wTPCpid" ), track.p (), nITSHe);
4099+ }
4100+ if constexpr (!IsFilteredData) {
4101+ if (isHeWTPCpid || isAntiHeWTPCpid) {
4102+ if (nsigmaITSvar.showAverageClusterSize ) {
4103+ histos.fill (HIST (" tracks/helium/averageClusterSize" ), track.p (), averageClusterSizeTrk (track));
4104+ histos.fill (HIST (" tracks/helium/averageClusterSizePerCoslInv" ), track.p (), averageClusterSizePerCoslInv (track));
4105+ }
4106+ }
40664107 }
40674108
40684109 // TOF
0 commit comments