Skip to content

Commit ce6b513

Browse files
[PWGLF] NucleiTask - Add deuteron ITS cuts (#12067)
1 parent e74b37f commit ce6b513

File tree

3 files changed

+66
-28
lines changed

3 files changed

+66
-28
lines changed

PWGLF/DataModel/LFNucleiTables.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@ DECLARE_SOA_DYNAMIC_COLUMN(Rapidity, rapidity,
6262
const auto energy = sqrt(p * p + mass * mass);
6363
return 0.5f * log((energy + pz) / (energy - pz));
6464
});
65+
// ITS
66+
DECLARE_SOA_COLUMN(ITSClusterSizes, itsClusterSizes, uint32_t); //! ITS cluster sizes per layer
6567
// TPC
6668
DECLARE_SOA_COLUMN(TPCNSigmaPi, tpcNSigmaPi, float);
6769
DECLARE_SOA_COLUMN(TPCNSigmaKa, tpcNSigmaKa, float);
@@ -181,6 +183,7 @@ DECLARE_SOA_TABLE(LfCandNucleus, "AOD", "LFNUCL",
181183
full::IsPVContributor,
182184
full::P<full::Pt, full::Eta>,
183185
full::Rapidity<full::Pt, full::Eta>,
186+
full::ITSClusterSizes,
184187
track::TPCNClsFound<track::TPCNClsFindable, track::TPCNClsFindableMinusFound>,
185188
track::TPCNClsCrossedRows<track::TPCNClsFindable, track::TPCNClsFindableMinusCrossedRows>,
186189
track::TPCCrossedRowsOverFindableCls<track::TPCNClsFindable, track::TPCNClsFindableMinusCrossedRows>,
@@ -211,6 +214,7 @@ DECLARE_SOA_TABLE_VERSIONED(LfCandNucleusDummy, "AOD", "LFNUCL", 1,
211214
track::ITSClusterMap,
212215
full::IsPVContributor,
213216
full::P<full::Pt, full::Eta>,
217+
full::ITSClusterSizes,
214218
dummy::TPCNSigmaPi<full::HasTOF>, dummy::TPCNSigmaKa<full::HasTOF>, dummy::TPCNSigmaPr<full::HasTOF>,
215219
dummy::TPCNSigmaTr<full::HasTOF>, dummy::TPCNSigmaAl<full::HasTOF>,
216220
dummy::TOFNSigmaPi<full::HasTOF>, dummy::TOFNSigmaKa<full::HasTOF>, dummy::TOFNSigmaPr<full::HasTOF>,

PWGLF/TableProducer/Nuspex/LFTreeCreatorNuclei.cxx

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -20,26 +20,27 @@
2020

2121
#include "PWGLF/DataModel/LFNucleiTables.h"
2222
#include "PWGLF/DataModel/LFParticleIdentification.h"
23-
#include <TLorentzVector.h>
24-
#include <TMath.h>
25-
#include <TObjArray.h>
26-
27-
#include "ReconstructionDataFormats/Track.h"
28-
#include "Framework/runDataProcessing.h"
29-
#include "Framework/AnalysisTask.h"
30-
#include "Framework/AnalysisDataModel.h"
31-
#include "Framework/ASoAHelpers.h"
32-
#include "Framework/HistogramRegistry.h"
3323

34-
#include "Common/DataModel/PIDResponse.h"
35-
#include "Common/DataModel/EventSelection.h"
36-
#include "Common/DataModel/Centrality.h"
37-
#include "Common/DataModel/Multiplicity.h"
38-
#include "Common/DataModel/TrackSelectionTables.h"
3924
#include "Common/CCDB/EventSelectionParams.h"
4025
#include "Common/Core/TrackSelection.h"
4126
#include "Common/Core/TrackSelectionDefaults.h"
4227
#include "Common/Core/trackUtilities.h"
28+
#include "Common/DataModel/Centrality.h"
29+
#include "Common/DataModel/EventSelection.h"
30+
#include "Common/DataModel/Multiplicity.h"
31+
#include "Common/DataModel/PIDResponse.h"
32+
#include "Common/DataModel/TrackSelectionTables.h"
33+
34+
#include "Framework/ASoAHelpers.h"
35+
#include "Framework/AnalysisDataModel.h"
36+
#include "Framework/AnalysisTask.h"
37+
#include "Framework/HistogramRegistry.h"
38+
#include "Framework/runDataProcessing.h"
39+
#include "ReconstructionDataFormats/Track.h"
40+
41+
#include <TLorentzVector.h>
42+
#include <TMath.h>
43+
#include <TObjArray.h>
4344

4445
// #include <cmath>
4546

@@ -249,6 +250,7 @@ struct LfTreeCreatorNuclei {
249250
track.tpcSignal(),
250251
track.pt(), track.eta(), track.phi(),
251252
track.sign(),
253+
track.itsClusterSizes(),
252254
track.itsNCls(),
253255
track.tpcNClsFindable(),
254256
track.tpcNClsFindableMinusFound(),

PWGLF/Tasks/Nuspex/LFNucleiBATask.cxx

Lines changed: 45 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,9 @@ struct LFNucleiBATask {
126126
} nsigmaTPCvar;
127127

128128
struct : ConfigurableGroup {
129+
Configurable<bool> useITSDeCut{"useITSDeCut", false, "Select Deuteron if compatible with deuteron hypothesis (via SigmaITS)"};
129130
Configurable<bool> useITSHeCut{"useITSHeCut", false, "Select Helium if compatible with helium hypothesis (via SigmaITS)"};
131+
Configurable<float> nsigmaITSDe{"nsigmaITSDe", -1.f, "Value of the Nsigma ITS cut for deuteron ( > nSigmaITSHe)"};
130132
Configurable<float> nsigmaITSHe{"nsigmaITSHe", -1.f, "Value of the Nsigma ITS cut for helium-3 ( > nSigmaITSHe)"};
131133
Configurable<bool> showAverageClusterSize{"showAverageClusterSize", false, "Show average cluster size"};
132134
} nsigmaITSvar;
@@ -604,20 +606,20 @@ struct LFNucleiBATask {
604606
histos.add<TH1>("tracks/triton/h1antiTritonSpectra", "#it{p}_{T} (#bar{t})", HistType::kTH1F, {ptAxis});
605607
}
606608
if (enableHe) {
607-
histos.add<TH1>("tracks/helium/h1HeliumSpectra", "#it{p}_{T}/z (He)", HistType::kTH1F, {ptZHeAxis});
608-
histos.add<TH1>("tracks/helium/h1antiHeliumSpectra", "#it{p}_{T}/z (#bar{He})", HistType::kTH1F, {ptZHeAxis});
609+
// histos.add<TH1>("tracks/helium/h1HeliumSpectra", "#it{p}_{T}/z (He)", HistType::kTH1F, {ptZHeAxis});
610+
// histos.add<TH1>("tracks/helium/h1antiHeliumSpectra", "#it{p}_{T}/z (#bar{He})", HistType::kTH1F, {ptZHeAxis});
609611

610-
histos.add<TH2>("tracks/helium/h2HeliumYvsPt", "#it{y} vs #it{p}_{T}/z (He)", HistType::kTH2F, {{96, -1.2, 1.2}, {ptZHeAxis}});
612+
// histos.add<TH2>("tracks/helium/h2HeliumYvsPt", "#it{y} vs #it{p}_{T}/z (He)", HistType::kTH2F, {{96, -1.2, 1.2}, {ptZHeAxis}});
611613
histos.add<TH2>("tracks/helium/h2HeliumYvsPt_Z2", "#it{y} vs #it{p}_{T} (He)", HistType::kTH2F, {{96, -1.2, 1.2}, {ptHeAxis}});
612-
histos.add<TH2>("tracks/helium/h2HeliumEtavsPt", "#it{#eta} vs #it{p}_{T}/z (He)", HistType::kTH2F, {{96, -1.2, 1.2}, {ptZHeAxis}});
614+
// histos.add<TH2>("tracks/helium/h2HeliumEtavsPt", "#it{#eta} vs #it{p}_{T}/z (He)", HistType::kTH2F, {{96, -1.2, 1.2}, {ptZHeAxis}});
613615
histos.add<TH2>("tracks/helium/h2HeliumEtavsPt_Z2", "#it{#eta} vs #it{p}_{T} (He)", HistType::kTH2F, {{96, -1.2, 1.2}, {ptHeAxis}});
614616

615617
histos.add<TH1>("tracks/helium/h1HeliumSpectra_Z2", "#it{p}_{T} (He)", HistType::kTH1F, {ptHeAxis});
616618
histos.add<TH1>("tracks/helium/h1antiHeliumSpectra_Z2", "#it{p}_{T} (#bar{He})", HistType::kTH1F, {ptHeAxis});
617619

618-
histos.add<TH2>("tracks/helium/h2antiHeliumYvsPt", "#it{y} vs #it{p}_{T}/z (#bar{He})", HistType::kTH2F, {{96, -1.2, 1.2}, {ptZHeAxis}});
620+
// histos.add<TH2>("tracks/helium/h2antiHeliumYvsPt", "#it{y} vs #it{p}_{T}/z (#bar{He})", HistType::kTH2F, {{96, -1.2, 1.2}, {ptZHeAxis}});
619621
histos.add<TH2>("tracks/helium/h2antiHeliumYvsPt_Z2", "#it{y} vs #it{p}_{T} (#bar{He})", HistType::kTH2F, {{96, -1.2, 1.2}, {ptHeAxis}});
620-
histos.add<TH2>("tracks/helium/h2antiHeliumEtavsPt", "#it{#eta} vs #it{p}_{T}/z (#bar{He})", HistType::kTH2F, {{96, -1.2, 1.2}, {ptZHeAxis}});
622+
// histos.add<TH2>("tracks/helium/h2antiHeliumEtavsPt", "#it{#eta} vs #it{p}_{T}/z (#bar{He})", HistType::kTH2F, {{96, -1.2, 1.2}, {ptZHeAxis}});
621623
histos.add<TH2>("tracks/helium/h2antiHeliumEtavsPt_Z2", "#it{#eta} vs #it{p}_{T} (#bar{He})", HistType::kTH2F, {{96, -1.2, 1.2}, {ptHeAxis}});
622624
}
623625
if (enableAl) {
@@ -1518,6 +1520,7 @@ struct LFNucleiBATask {
15181520

15191521
// Bethe-Bloch TPC distribution and Beta vs pT TOF distribution
15201522
if (nsigmaITSvar.showAverageClusterSize && outFlagOptions.enablePIDplot) {
1523+
histos.add<TH3>("tracks/avgClusterSizePerCoslInvVsITSlayers", "", HistType::kTH3F, {{pZAxis}, {avClsEffAxis}, {8, -0.5, 7.5}});
15211524
histos.add<TH2>("tracks/averageClusterSize", "", HistType::kTH2F, {{pZAxis}, {avClsAxis}});
15221525
histos.add<TH2>("tracks/averageClusterSizePerCoslInv", "", HistType::kTH2F, {{pZAxis}, {avClsEffAxis}});
15231526
}
@@ -1590,6 +1593,11 @@ struct LFNucleiBATask {
15901593
histos.add<TH2>("tracks/proton/h2antiProtonVspTNSigmaTPC", "NSigmaTPC(#bar{p}) vs pT; #it{p}_{T} (GeV/#it{c}); NSigmaTPC", HistType::kTH2F, {{ptAxis}, {sigmaTPCAxis}});
15911594
}
15921595
if (enableDe) {
1596+
histos.add<TH2>("tracks/deuteron/h2DeuteronVspNSigmaITSDe", "NSigmaITS(d) vs p/z; #it{p}/z (GeV/#it{c}); NSigmaITS(d)", HistType::kTH2F, {{pZAxis}, {sigmaITSAxis}});
1597+
histos.add<TH2>("tracks/deuteron/h2antiDeuteronVspNSigmaITSDe", "NSigmaITS(#bar{d}) vs p/z; #it{p}/z (GeV/#it{c}); NSigmaITS(#bar{d})", HistType::kTH2F, {{pZAxis}, {sigmaITSAxis}});
1598+
histos.add<TH2>("tracks/deuteron/h2DeuteronVspNSigmaITSDe_wTPCpid", "NSigmaITS(d) vs p/z; #it{p}/z (GeV/#it{c}); NSigmaITS(d)", HistType::kTH2F, {{pZAxis}, {sigmaITSAxis}});
1599+
histos.add<TH2>("tracks/deuteron/h2antiDeuteronVspNSigmaITSDe_wTPCpid", "NSigmaITS(#bar{d}) vs p/z; #it{p}/z (GeV/#it{c}); NSigmaITS(#bar{d})", HistType::kTH2F, {{pZAxis}, {sigmaITSAxis}});
1600+
15931601
if (enableCentrality) {
15941602
histos.add<TH3>("tracks/deuteron/h3DeuteronVspTNSigmaTPCVsMult", "NSigmaTPC(d) vs pT; #it{p}_{T} (GeV/#it{c}) vs mult; NSigmaTPC", HistType::kTH3F, {{ptAxis}, {sigmaTPCAxis}, {binsPercentile}});
15951603
histos.add<TH3>("tracks/deuteron/h3antiDeuteronVspTNSigmaTPCVsMult", "NSigmaTPC(#bar{d}) vs pT; #it{p}_{T} (GeV/#it{c}) vs mult; NSigmaTPC", HistType::kTH3F, {{ptAxis}, {sigmaTPCAxis}, {binsPercentile}});
@@ -2179,6 +2187,7 @@ struct LFNucleiBATask {
21792187
}
21802188

21812189
auto tracksWithITS = soa::Attach<TracksType,
2190+
aod::pidits::ITSNSigmaDe,
21822191
aod::pidits::ITSNSigmaTr,
21832192
aod::pidits::ITSNSigmaHe>(tracks);
21842193
if (tracksWithITS.size() != tracks.size()) {
@@ -2194,6 +2203,12 @@ struct LFNucleiBATask {
21942203
}
21952204
}
21962205
std::bitset<8> itsClusterMap = track.itsClusterMap();
2206+
2207+
if constexpr (!IsFilteredData) {
2208+
if (nsigmaITSvar.showAverageClusterSize && outFlagOptions.enablePIDplot)
2209+
histos.fill(HIST("tracks/avgClusterSizePerCoslInvVsITSlayers"), track.p(), averageClusterSizePerCoslInv(track), track.itsNCls());
2210+
}
2211+
21972212
if (track.itsNCls() < trkqcOptions.cfgCutITSClusters)
21982213
continue;
21992214
if (track.tpcNClsCrossedRows() < trkqcOptions.cfgCutTPCXRows)
@@ -2293,9 +2308,14 @@ struct LFNucleiBATask {
22932308
break;
22942309
}
22952310

2311+
// float nITSDe_Table = 99.f;
2312+
float nITSDe = 99.f;
22962313
float nITSTr = 99.f;
22972314
float nITSHe = 99.f;
2315+
// o2::aod::ITSResponse itsResponse;
2316+
22982317
if (!IsFilteredData) {
2318+
nITSDe = track.itsNSigmaDe();
22992319
nITSTr = track.itsNSigmaTr();
23002320
nITSHe = track.itsNSigmaHe();
23012321
}
@@ -2457,6 +2477,10 @@ struct LFNucleiBATask {
24572477
isAntiDe = isDeuteron && track.sign() < 0;
24582478

24592479
// nSigmaITSHe cut
2480+
if (nsigmaITSvar.useITSDeCut && (nITSDe <= nsigmaITSvar.nsigmaITSDe)) {
2481+
continue;
2482+
}
2483+
24602484
if (nsigmaITSvar.useITSHeCut && (nITSHe <= nsigmaITSvar.nsigmaITSHe)) {
24612485
continue;
24622486
}
@@ -4190,6 +4214,8 @@ struct LFNucleiBATask {
41904214
if (outFlagOptions.enableExpSignalTPC)
41914215
histos.fill(HIST("tracks/deuteron/h2DeuteronTPCExpSignalDiffVsPt"), DPt, track.tpcExpSignalDiffDe());
41924216

4217+
histos.fill(HIST("tracks/deuteron/h2DeuteronVspNSigmaITSDe"), track.p(), nITSDe);
4218+
41934219
switch (useHasTRDConfig) {
41944220
case 0:
41954221
if (enableCentrality)
@@ -4213,6 +4239,8 @@ struct LFNucleiBATask {
42134239
if (outFlagOptions.enableExpSignalTPC)
42144240
histos.fill(HIST("tracks/deuteron/h2antiDeuteronTPCExpSignalDiffVsPt"), antiDPt, track.tpcExpSignalDiffDe());
42154241

4242+
histos.fill(HIST("tracks/deuteron/h2antiDeuteronVspNSigmaITSDe"), track.p(), nITSDe);
4243+
42164244
switch (useHasTRDConfig) {
42174245
case 0:
42184246
if (enableCentrality)
@@ -4487,6 +4515,8 @@ struct LFNucleiBATask {
44874515
}
44884516
histos.fill(HIST("tracks/deuteron/h1DeuteronSpectra"), DPt);
44894517
histos.fill(HIST("tracks/deuteron/h2DeuteronYvsPt"), track.rapidity(o2::track::PID::getMass2Z(o2::track::PID::Deuteron)), DPt);
4518+
histos.fill(HIST("tracks/deuteron/h2DeuteronVspNSigmaITSDe_wTPCpid"), track.p(), nITSDe);
4519+
44904520
if (outFlagOptions.enablePIDplot)
44914521
histos.fill(HIST("tracks/deuteron/h2TPCsignVsTPCmomentumDeuteron"), track.tpcInnerParam(), track.tpcSignal());
44924522
}
@@ -4497,6 +4527,8 @@ struct LFNucleiBATask {
44974527
}
44984528
histos.fill(HIST("tracks/deuteron/h1antiDeuteronSpectra"), antiDPt);
44994529
histos.fill(HIST("tracks/deuteron/h2antiDeuteronYvsPt"), track.rapidity(o2::track::PID::getMass2Z(o2::track::PID::Deuteron)), antiDPt);
4530+
histos.fill(HIST("tracks/deuteron/h2antiDeuteronVspNSigmaITSDe_wTPCpid"), track.p(), nITSDe);
4531+
45004532
if (outFlagOptions.enablePIDplot)
45014533
histos.fill(HIST("tracks/deuteron/h2TPCsignVsTPCmomentumantiDeuteron"), track.tpcInnerParam(), track.tpcSignal());
45024534
}
@@ -4505,11 +4537,11 @@ struct LFNucleiBATask {
45054537
histos.fill(HIST("tracks/eff/helium/hPtHe"), 2 * hePt);
45064538
histos.fill(HIST("tracks/eff/helium/h2pVsTPCmomentumHe"), heTPCmomentum, heP);
45074539
}
4508-
histos.fill(HIST("tracks/helium/h1HeliumSpectra"), hePt);
4540+
// histos.fill(HIST("tracks/helium/h1HeliumSpectra"), hePt);
45094541
histos.fill(HIST("tracks/helium/h1HeliumSpectra_Z2"), 2 * hePt);
4510-
histos.fill(HIST("tracks/helium/h2HeliumYvsPt"), track.rapidity(o2::track::PID::getMass2Z(o2::track::PID::Helium3)), hePt);
4542+
// histos.fill(HIST("tracks/helium/h2HeliumYvsPt"), track.rapidity(o2::track::PID::getMass2Z(o2::track::PID::Helium3)), hePt);
45114543
histos.fill(HIST("tracks/helium/h2HeliumYvsPt_Z2"), track.rapidity(o2::track::PID::getMass2Z(o2::track::PID::Helium3)), 2 * hePt);
4512-
histos.fill(HIST("tracks/helium/h2HeliumEtavsPt"), track.eta(), hePt);
4544+
// histos.fill(HIST("tracks/helium/h2HeliumEtavsPt"), track.eta(), hePt);
45134545
histos.fill(HIST("tracks/helium/h2HeliumEtavsPt_Z2"), track.eta(), 2 * hePt);
45144546
if (outFlagOptions.enablePIDplot)
45154547
histos.fill(HIST("tracks/helium/h2TPCsignVsTPCmomentumHelium"), heTPCmomentum, track.tpcSignal());
@@ -4519,11 +4551,11 @@ struct LFNucleiBATask {
45194551
histos.fill(HIST("tracks/eff/helium/hPtantiHe"), 2 * antihePt);
45204552
histos.fill(HIST("tracks/eff/helium/h2pVsTPCmomentumantiHe"), antiheTPCmomentum, antiheP);
45214553
}
4522-
histos.fill(HIST("tracks/helium/h1antiHeliumSpectra"), antihePt);
4554+
// histos.fill(HIST("tracks/helium/h1antiHeliumSpectra"), antihePt);
45234555
histos.fill(HIST("tracks/helium/h1antiHeliumSpectra_Z2"), 2 * antihePt);
4524-
histos.fill(HIST("tracks/helium/h2antiHeliumYvsPt"), track.rapidity(o2::track::PID::getMass2Z(o2::track::PID::Helium3)), antihePt);
4556+
// histos.fill(HIST("tracks/helium/h2antiHeliumYvsPt"), track.rapidity(o2::track::PID::getMass2Z(o2::track::PID::Helium3)), antihePt);
45254557
histos.fill(HIST("tracks/helium/h2antiHeliumYvsPt_Z2"), track.rapidity(o2::track::PID::getMass2Z(o2::track::PID::Helium3)), 2 * antihePt);
4526-
histos.fill(HIST("tracks/helium/h2antiHeliumEtavsPt"), track.eta(), antihePt);
4558+
// histos.fill(HIST("tracks/helium/h2antiHeliumEtavsPt"), track.eta(), antihePt);
45274559
histos.fill(HIST("tracks/helium/h2antiHeliumEtavsPt_Z2"), track.eta(), 2 * antihePt);
45284560
if (outFlagOptions.enablePIDplot)
45294561
histos.fill(HIST("tracks/helium/h2TPCsignVsTPCmomentumantiHelium"), antiheTPCmomentum, track.tpcSignal());
@@ -5692,7 +5724,7 @@ struct LFNucleiBATask {
56925724
using EventCandidates = soa::Join<aod::Collisions, aod::EvSels, aod::CentFT0Ms, aod::CentFV0As, aod::CentFT0Cs>;
56935725
using EventCandidatesMC = soa::Join<EventCandidates, aod::McCollisionLabels>;
56945726

5695-
using TrackCandidates0 = soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksDCA, aod::TrackSelection, aod::TrackSelectionExtension,
5727+
using TrackCandidates0 = soa::Join<aod::Tracks, aod::TracksIU, aod::TracksExtra, aod::TracksDCA, aod::TrackSelection, aod::TrackSelectionExtension,
56965728
aod::pidTOFbeta, aod::TOFSignal, aod::pidEvTimeFlags,
56975729
aod::pidTPCFullPi, aod::pidTOFFullPi,
56985730
aod::pidTPCFullKa, aod::pidTOFFullKa,

0 commit comments

Comments
 (0)