1616
1717#include " ../filterTables.h"
1818
19- #include " PWGLF/DataModel/LFParticleIdentification.h"
20-
2119#include " Common/Core/RecoDecay.h"
2220#include " Common/Core/TrackSelection.h"
2321#include " Common/Core/trackUtilities.h"
24- #include " Common/DataModel/Centrality.h"
2522#include " Common/DataModel/CollisionAssociationTables.h"
2623#include " Common/DataModel/EventSelection.h"
27- #include " Common/DataModel/Multiplicity .h"
24+ #include " Common/DataModel/PIDResponseITS .h"
2825#include " Common/DataModel/PIDResponseTOF.h"
26+ #include " Common/DataModel/PIDResponseTPC.h"
2927#include " Common/DataModel/TrackSelectionTables.h"
3028
3129#include " CCDB/BasicCCDBManager.h"
3230#include " CommonConstants/PhysicsConstants.h"
33- #include " DCAFitter/DCAFitterN.h"
3431#include " DataFormatsParameters/GRPMagField.h"
3532#include " DataFormatsParameters/GRPObject.h"
3633#include " DetectorsBase/Propagator.h"
@@ -69,14 +66,16 @@ struct H2fromLbFilter {
6966 o2::framework::Configurable<bool > isNoITSROFrameBorder{" isNoITSROFrameBorder" , true , " isNoITSROFrameBorder event selection" };
7067 o2::framework::Configurable<float > cfgTPCNsigma{" cfgTPCNsigma" , 4 .0f , " TPC n sigma for deuteron PID" };
7168 o2::framework::Configurable<float > cfgTOFNsigma{" cfgTOFNsigma" , 4 .0f , " TOF n sigma for deuteron PID" };
69+ o2::framework::Configurable<float > cfgITSNsigma{" cfgITSNsigma" , -2 .0f , " ITS n sigma for deuteron PID" };
7270 o2::framework::Configurable<float > cfgEta{" cfgEta" , 0 .8f , " Track eta selection" };
7371 o2::framework::Configurable<int > cfgTPCNclsFound{" cfgTPCNclsFound" , 100 , " Minimum TPC clusters found" };
7472 o2::framework::Configurable<float > cfgTPCChi2Ncl{" cfgTPCChi2Ncl" , 4 .0f , " Maximum TPC chi2 per N clusters" };
7573 o2::framework::Configurable<float > cfgITSChi2Ncl{" cfgITSChi2Ncl" , 36 .0f , " Maximum ITS chi2 per N clusters" };
7674 o2::framework::Configurable<int > cfgITScls{" cfgITScls" , 2 , " Minimum ITS clusters" };
7775 o2::framework::Configurable<float > cfgMaxPt{" cfgMaxPt" , 5 .0f , " Maximum pT cut" };
78- o2::framework::Configurable<float > cfgMinPt{" cfgMinPt" , 1 . 0f , " Maximum pT cut" };
76+ o2::framework::Configurable<float > cfgMinPt{" cfgMinPt" , 0 . 5f , " Minimum pT cut" };
7977 o2::framework::Configurable<float > cfgDCAcut{" cfgDCAcut" , 0 .003f , " DCA cut for non prompt deuteron" };
78+ o2::framework::Configurable<float > ptThresholdPid{" ptThresholdPid" , 1 .0f , " pT threshold to switch between ITS and TOF PID" };
8079
8180 o2::framework::Service<o2::ccdb::BasicCCDBManager> ccdb;
8281
@@ -95,6 +94,7 @@ struct H2fromLbFilter {
9594 QAHistos.add (" hDCAzVsPt" , " DCAz #bar{d} vs p_{T}" , {o2::framework::HistType::kTH2D , {pTAxis, DCAzAxis}});
9695 QAHistos.add (" hnSigmaTPCVsPt" , " n#sigma TPC vs p_{T} for #bar{d} hypothesis; p_{T} (GeV/c); n#sigma TPC" , {o2::framework::HistType::kTH2D , {pTAxis, nSigmaAxis}});
9796 QAHistos.add (" hnSigmaTOFVsPt" , " n#sigma TOF vs p_{T} for #bar{d} hypothesis; p_{T} (GeV/c); n#sigma TOF" , {o2::framework::HistType::kTH2D , {pTAxis, nSigmaAxis}});
97+ QAHistos.add (" hnSigmaITSVsPt" , " n#sigma ITS vs p_{T} for #bar{d} hypothesis; p_{T} (GeV/c); n#sigma ITS" , {o2::framework::HistType::kTH2D , {pTAxis, nSigmaAxis}});
9898 QAHistos.add (" ptAntiDeuteron" , " ptAntiDeuteron" , {o2::framework::HistType::kTH1F , {ptAxis}});
9999 QAHistos.add (" etaAntideuteron" , " etaAntideuteron" , {o2::framework::HistType::kTH1F , {{100 , -1 .0f , 1 .0f , " eta #bar{d}" }}});
100100 QAHistos.add (" hDCAxyVsPt-pre_selection" , " DCAxy #bar{d} vs p_{T}" , {o2::framework::HistType::kTH2D , {pTAxis, DCAxyAxis}});
@@ -193,10 +193,11 @@ struct H2fromLbFilter {
193193
194194 // Loop over tracks
195195 const auto & trackIdsThisCollision = trackIndices.sliceBy (trackIndicesPerCollision, collision.globalIndex ());
196+ auto tracksWithItsPid = o2::soa::Attach<TrackCandidates, o2::aod::pidits::ITSNSigmaDe>(tracks);
196197
197198 for (const auto & trackId : trackIdsThisCollision) { // start loop over tracks
198199
199- const auto & track = tracks .rawIteratorAt (trackId.trackId ());
200+ const auto & track = tracksWithItsPid .rawIteratorAt (trackId.trackId ());
200201
201202 std::array<float , 2 > dca{track.dcaXY (), track.dcaZ ()};
202203 std::array<float , 3 > pVec = track.pVector ();
@@ -213,23 +214,42 @@ struct H2fromLbFilter {
213214
214215 const bool isTOFDe = std::abs (track.tofNSigmaDe ()) < cfgTOFNsigma;
215216 const bool isTPCDe = std::abs (track.tpcNSigmaDe ()) < cfgTPCNsigma;
216-
217- if (isTPCDe && isTOFDe) {
218-
219- QAHistos.fill (HIST (" hDCAxyVsPt-pre_selection" ), track.pt (), dca[0 ]);
220- QAHistos.fill (HIST (" hDCAzVsPt-pre-selection" ), track.pt (), dca[1 ]);
221- if (std::abs (dca[0 ]) < cfgDCAcut) {
222- continue ;
217+ const bool isITSDe = track.itsNSigmaDe () > cfgITSNsigma;
218+
219+ if (track.pt () < ptThresholdPid) {
220+ if (isTPCDe && isITSDe) {
221+ QAHistos.fill (HIST (" hDCAxyVsPt-pre_selection" ), track.pt (), dca[0 ]);
222+ QAHistos.fill (HIST (" hDCAzVsPt-pre-selection" ), track.pt (), dca[1 ]);
223+ if (std::abs (dca[0 ]) < cfgDCAcut) {
224+ continue ;
225+ }
226+ keepEvent[0 ] = true ;
227+ QAHistos.fill (HIST (" ptAntiDeuteron" ), track.pt ());
228+ QAHistos.fill (HIST (" etaAntideuteron" ), track.eta ());
229+ QAHistos.fill (HIST (" hDCAxyVsPt" ), track.pt (), dca[0 ]);
230+ QAHistos.fill (HIST (" hDCAzVsPt" ), track.pt (), dca[1 ]);
231+ QAHistos.fill (HIST (" hnSigmaTPCVsPt" ), track.pt (), track.tpcNSigmaDe ());
232+ QAHistos.fill (HIST (" hnSigmaTOFVsPt" ), track.pt (), track.tofNSigmaDe ());
233+ QAHistos.fill (HIST (" hnSigmaITSVsPt" ), track.pt (), track.itsNSigmaDe ());
234+ }
235+ } else {
236+ if (isTPCDe && isTOFDe) {
237+
238+ QAHistos.fill (HIST (" hDCAxyVsPt-pre_selection" ), track.pt (), dca[0 ]);
239+ QAHistos.fill (HIST (" hDCAzVsPt-pre-selection" ), track.pt (), dca[1 ]);
240+ if (std::abs (dca[0 ]) < cfgDCAcut) {
241+ continue ;
242+ }
243+ keepEvent[0 ] = true ;
244+ QAHistos.fill (HIST (" ptAntiDeuteron" ), track.pt ());
245+ QAHistos.fill (HIST (" etaAntideuteron" ), track.eta ());
246+ QAHistos.fill (HIST (" hDCAxyVsPt" ), track.pt (), dca[0 ]);
247+ QAHistos.fill (HIST (" hDCAzVsPt" ), track.pt (), dca[1 ]);
248+ QAHistos.fill (HIST (" hnSigmaTPCVsPt" ), track.pt (), track.tpcNSigmaDe ());
249+ QAHistos.fill (HIST (" hnSigmaTOFVsPt" ), track.pt (), track.tofNSigmaDe ());
250+ QAHistos.fill (HIST (" hnSigmaITSVsPt" ), track.pt (), track.itsNSigmaDe ());
223251 }
224- keepEvent[0 ] = true ;
225- QAHistos.fill (HIST (" ptAntiDeuteron" ), track.pt ());
226- QAHistos.fill (HIST (" etaAntideuteron" ), track.eta ());
227- QAHistos.fill (HIST (" hDCAxyVsPt" ), track.pt (), dca[0 ]);
228- QAHistos.fill (HIST (" hDCAzVsPt" ), track.pt (), dca[1 ]);
229- QAHistos.fill (HIST (" hnSigmaTPCVsPt" ), track.pt (), track.tpcNSigmaDe ());
230- QAHistos.fill (HIST (" hnSigmaTOFVsPt" ), track.pt (), track.tofNSigmaDe ());
231252 }
232-
233253 } // end track loop
234254 if (keepEvent[0 ]) {
235255 hProcessedEvents->Fill (5.5 );
0 commit comments