4646#include " Common/DataModel/EventSelection.h"
4747#include " Common/DataModel/Multiplicity.h"
4848#include " Common/DataModel/PIDResponse.h"
49+ #include " Common/DataModel/PIDResponseITS.h"
4950#include " Common/DataModel/TrackSelectionTables.h"
5051#include " Common/TableProducer/PID/pidTOFBase.h"
5152
@@ -174,10 +175,12 @@ struct he3hadronfemto {
174175 Configurable<float > setting_cutPtMinhe3Had{" setting_cutPtMinhe3Had" , 0 .0f , " Minimum PT cut on he3Had4" };
175176 Configurable<float > setting_cutClSizeItsHe3{" setting_cutClSizeItsHe3" , 4 .0f , " Minimum ITS cluster size for He3" };
176177 Configurable<float > setting_cutNsigmaTPC{" setting_cutNsigmaTPC" , 3 .0f , " Value of the TPC Nsigma cut" };
178+ Configurable<float > setting_cutNsigmaITS{" setting_cutNsigmaITS" , -1 .5f , " Value of the TPC Nsigma cut" };
177179 Configurable<float > setting_cutPtMinTOFHad{" setting_cutPtMinTOFHad" , 0 .4f , " Minimum pT to apply the TOF cut on hadrons" };
178180 Configurable<float > setting_cutNsigmaTOF{" setting_cutNsigmaTOF" , 3 .0f , " Value of the TOF Nsigma cut" };
179181 Configurable<int > setting_noMixedEvents{" setting_noMixedEvents" , 5 , " Number of mixed events per event" };
180182 Configurable<bool > setting_enableBkgUS{" setting_enableBkgUS" , false , " Enable US background" };
183+ Configurable<bool > setting_saveUSandLS{" setting_saveUSandLS" , true , " Save All Pairs" };
181184 Configurable<bool > setting_isMC{" setting_isMC" , false , " Run MC" };
182185 Configurable<bool > setting_fillMultiplicity{" setting_fillMultiplicity" , false , " Fill multiplicity table" };
183186
@@ -206,8 +209,8 @@ struct he3hadronfemto {
206209
207210 // binning for EM background
208211 ConfigurableAxis axisVertex{" axisVertex" , {30 , -10 , 10 }, " Binning for multiplicity" };
209- ConfigurableAxis axisCentrality{" axisCentrality" , {VARIABLE_WIDTH , 0 ., 15 ., 30 ., 45 ., 60 ., 75 ., 95 ., 250 . }, " Binning for centrality" };
210- using BinningType = ColumnBinningPolicy<aod::collision::PosZ, aod::collision::NumContrib >;
212+ ConfigurableAxis axisCentrality{" axisCentrality" , {40 , 0 , 100 }, " Binning for centrality" };
213+ using BinningType = ColumnBinningPolicy<aod::collision::PosZ, aod::cent::CentFT0C >;
211214 BinningType binningPolicy{{axisVertex, axisCentrality}, true };
212215 SliceCache cache;
213216 SameKindPair<CollisionsFull, TrackCandidates, BinningType> m_pair{binningPolicy, setting_noMixedEvents, -1 , &cache};
@@ -237,16 +240,17 @@ struct he3hadronfemto {
237240 {" hDCAxyHe3" , " ;DCA_{xy} (cm)" , {HistType::kTH1F , {{200 , -1 .0f , 1 .0f }}}},
238241 {" hDCAzHe3" , " ;DCA_{z} (cm)" , {HistType::kTH1F , {{200 , -1 .0f , 1 .0f }}}},
239242 {" hhe3HadtInvMass" , " ; M(^{3}He + p) (GeV/#it{c}^{2})" , {HistType::kTH1F , {{50 , 3 .74f , 3 .85f }}}},
240- {" hHe3Pt" , " #it{p}_{T} distribution; #it{p}_{T} (GeV/#it{c})" , {HistType::kTH1F , {{200 , -6 .0f , 6 .0f }}}},
241- {" hHadronPt" , " Pt distribution; #it{p}_{T} (GeV/#it{c})" , {HistType::kTH1F , {{200 , -3 .0f , 3 .0f }}}},
243+ {" hHe3Pt" , " #it{p}_{T} distribution; #it{p}_{T} (GeV/#it{c})" , {HistType::kTH1F , {{240 , -6 .0f , 6 .0f }}}},
244+ {" hHadronPt" , " Pt distribution; #it{p}_{T} (GeV/#it{c})" , {HistType::kTH1F , {{120 , -3 .0f , 3 .0f }}}},
242245 {" h2dEdxHe3candidates" , " dEdx distribution; #it{p} (GeV/#it{c}); dE/dx (a.u.)" , {HistType::kTH2F , {{200 , -5 .0f , 5 .0f }, {100 , 0 .0f , 2000 .0f }}}},
243- {" h2ClSizeCosLamHe3" , " ; n#sigma_{TPC} ; #LT ITS Cluster Size #GT #LT cos#lambda #GT (^{3}He)" , {HistType::kTH2F , {{100 , -5 .0f , 5 .0f }, {120 , 0 .0f , 15 .0f }}}},
244- {" h2NsigmaHe3TPC" , " NsigmaHe3 TPC distribution; #it{p}/z (GeV/#it{c}); n#sigma_{TPC}(^{3}He)" , {HistType::kTH2F , {{20 , -5 .0f , 5 .0f }, {200 , -5 .0f , 5 .0f }}}},
245- {" h2NsigmaHe3TPC_preselection" , " NsigmaHe3 TPC distribution; #it{p}/z (GeV/#it{c}); n#sigma_{TPC}(^{3}He)" , {HistType::kTH2F , {{100 , -5 .0f , 5 .0f }, {200 , -10 .0f , 10 .0f }}}},
246- {" h2NsigmaHadronTPC" , " NsigmaHadron TPC distribution; #it{p}/z (GeV/#it{c}); n#sigma_{TPC}(p)" , {HistType::kTH2F , {{20 , -5 .0f , 5 .0f }, {200 , -5 .0f , 5 .0f }}}},
247- {" h2NsigmaHadronTPC_preselection" , " NsigmaHe3 TPC distribution; #it{p}_{T} (GeV/#it{c}); n#sigma_{TPC}(^{3}He)" , {HistType::kTH2F , {{100 , -5 .0f , 5 .0f }, {200 , -10 .0f , 10 .0f }}}},
248- {" h2NsigmaHadronTOF" , " NsigmaHadron TOF distribution; #it{p} (GeV/#it{c}); n#sigma_{TOF}(p)" , {HistType::kTH2F , {{20 , -5 .0f , 5 .0f }, {200 , -5 .0f , 5 .0f }}}},
249- {" h2NsigmaHadronTOF_preselection" , " NsigmaHadron TOF distribution; #it{p} (GeV/#it{c}); n#sigma_{TOF}(p)" , {HistType::kTH2F , {{100 , -5 .0f , 5 .0f }, {200 , -10 .0f , 10 .0f }}}},
246+ {" h2NsigmaHe3TPC" , " NsigmaHe3 TPC distribution; #it{p}_{T} (GeV/#it{c}); n#sigma_{TPC}(^{3}He)" , {HistType::kTH2F , {{20 , -5 .0f , 5 .0f }, {200 , -5 .0f , 5 .0f }}}},
247+ {" h2NsigmaHe3TPC_preselection" , " NsigmaHe3 TPC distribution; #it{p}_{T} (GeV/#it{c}); n#sigma_{TPC}(^{3}He)" , {HistType::kTH2F , {{100 , -5 .0f , 5 .0f }, {400 , -10 .0f , 10 .0f }}}},
248+ {" h2NSigmaHe3ITS_preselection" , " NsigmaHe3 ITS distribution; signed #it{p}_{T} (GeV/#it{c}); n#sigma_{ITS} ^{3}He" , {HistType::kTH2F , {{50 , -5 .0f , 5 .0f }, {120 , -3 .0f , 3 .0f }}}},
249+ {" h2NSigmaHe3ITS" , " NsigmaHe3 ITS distribution; signed #it{p}_{T} (GeV/#it{c}); n#sigma_{ITS} ^{3}He" , {HistType::kTH2F , {{50 , -5 .0f , 5 .0f }, {120 , -3 .0f , 3 .0f }}}},
250+ {" h2NsigmaHadronTPC" , " NsigmaHadron TPC distribution; #it{p}_{T}(GeV/#it{c}); n#sigma_{TPC}(p)" , {HistType::kTH2F , {{20 , -5 .0f , 5 .0f }, {200 , -5 .0f , 5 .0f }}}},
251+ {" h2NsigmaHadronTPC_preselection" , " NsigmaHe3 TPC distribution; #it{p}_{T} (GeV/#it{c}); n#sigma_{TPC}(^{3}He)" , {HistType::kTH2F , {{100 , -5 .0f , 5 .0f }, {400 , -10 .0f , 10 .0f }}}},
252+ {" h2NsigmaHadronTOF" , " NsigmaHadron TOF distribution; #it{p}_{T} (GeV/#it{c}); n#sigma_{TOF}(p)" , {HistType::kTH2F , {{20 , -5 .0f , 5 .0f }, {200 , -5 .0f , 5 .0f }}}},
253+ {" h2NsigmaHadronTOF_preselection" , " NsigmaHadron TOF distribution; #iit{p}_{T} (GeV/#it{c}); n#sigma_{TOF}(p)" , {HistType::kTH2F , {{100 , -5 .0f , 5 .0f }, {400 , -10 .0f , 10 .0f }}}},
250254 },
251255 OutputObjHandlingPolicy::AnalysisObject,
252256 false ,
@@ -425,15 +429,15 @@ struct he3hadronfemto {
425429 if (std::abs (tpcNSigmaHad) > setting_cutNsigmaTPC) {
426430 return false ;
427431 }
428- m_qaRegistry.fill (HIST (" h2NsigmaHadronTOF_preselection" ), candidate.p (), tofNSigmaHad);
432+ m_qaRegistry.fill (HIST (" h2NsigmaHadronTOF_preselection" ), candidate.pt (), tofNSigmaHad);
429433 if (std::abs (tofNSigmaHad) > setting_cutNsigmaTOF) {
430434 return false ;
431435 }
432- m_qaRegistry.fill (HIST (" h2NsigmaHadronTPC" ), candidate.tpcInnerParam (), tpcNSigmaHad);
433- m_qaRegistry.fill (HIST (" h2NsigmaHadronTOF" ), candidate.p (), tofNSigmaHad);
436+ m_qaRegistry.fill (HIST (" h2NsigmaHadronTPC" ), candidate.pt (), tpcNSigmaHad);
437+ m_qaRegistry.fill (HIST (" h2NsigmaHadronTOF" ), candidate.pt (), tofNSigmaHad);
434438 return true ;
435439 } else if (std::abs (tpcNSigmaHad) < setting_cutNsigmaTPC) {
436- m_qaRegistry.fill (HIST (" h2NsigmaHadronTPC" ), candidate.tpcInnerParam (), tpcNSigmaHad);
440+ m_qaRegistry.fill (HIST (" h2NsigmaHadronTPC" ), candidate.pt (), tpcNSigmaHad);
437441 return true ;
438442 }
439443 return false ;
@@ -460,30 +464,23 @@ struct he3hadronfemto {
460464 return false ;
461465 }
462466
463- float cosl = 1 . / std::cosh (candidate.eta ());
464- float meanClsizeIts = 0 .f ;
465- int nHitsIts = 0 ;
466- for (int ilayer = 0 ; ilayer < 7 ; ilayer++) {
467- float clsizeLayer = (candidate.itsClusterSizes () >> ilayer * 4 ) & 0b1111 ;
468- if (clsizeLayer > 0 ) {
469- nHitsIts++;
470- meanClsizeIts += clsizeLayer;
471- }
472- }
473- float clsizeCoslIts = meanClsizeIts / nHitsIts * cosl;
474- if (clsizeCoslIts < setting_cutClSizeItsHe3) {
475- return false ;
476- }
477-
478467 auto nSigmaHe3 = computeNSigmaHe3 (candidate);
479- m_qaRegistry.fill (HIST (" h2NsigmaHe3TPC_preselection" ), candidate.sign () * correctedTPCinnerParam , nSigmaHe3);
468+ m_qaRegistry.fill (HIST (" h2NsigmaHe3TPC_preselection" ), candidate.sign () * 2 * candidate. pt () , nSigmaHe3);
480469 if (std::abs (nSigmaHe3) > setting_cutNsigmaTPC) {
481470 return false ;
482471 }
472+ //
473+ o2::aod::ITSResponse m_responseITS;
474+ auto ITSnSigmaHe3 = m_responseITS.nSigmaITS <o2::track::PID::Helium3>(candidate.itsClusterSizes (), 2 * candidate.p (), candidate.eta ());
475+ //
476+ m_qaRegistry.fill (HIST (" h2NSigmaHe3ITS_preselection" ), candidate.sign () * 2 * candidate.pt (), ITSnSigmaHe3);
477+ if (ITSnSigmaHe3 < setting_cutNsigmaITS) {
478+ return false ;
479+ }
483480
484481 m_qaRegistry.fill (HIST (" h2dEdxHe3candidates" ), candidate.sign () * correctedTPCinnerParam, candidate.tpcSignal ());
485- m_qaRegistry.fill (HIST (" h2NsigmaHe3TPC" ), candidate.sign () * correctedTPCinnerParam , nSigmaHe3);
486- m_qaRegistry.fill (HIST (" h2ClSizeCosLamHe3 " ), nSigmaHe3, clsizeCoslIts );
482+ m_qaRegistry.fill (HIST (" h2NsigmaHe3TPC" ), candidate.sign () * 2 * candidate. pt () , nSigmaHe3);
483+ m_qaRegistry.fill (HIST (" h2NSigmaHe3ITS " ), candidate. sign () * 2 * candidate. pt (), ITSnSigmaHe3 );
487484 return true ;
488485 }
489486
@@ -571,7 +568,7 @@ struct he3hadronfemto {
571568 he3Hadcand.nTPCClustersHe3 = trackHe3.tpcNClsFound ();
572569 he3Hadcand.nSigmaHe3 = computeNSigmaHe3 (trackHe3);
573570 he3Hadcand.nSigmaHad = computeTPCNSigmaHadron (trackHad);
574- // he3Hadcand.nSigmaHad = trackHad.tpcNSigmaPi();/*tpcNSigmaHad*/
571+
575572 he3Hadcand.chi2TPCHe3 = trackHe3.tpcChi2NCl ();
576573 he3Hadcand.chi2TPCHad = trackHad.tpcChi2NCl ();
577574
@@ -645,11 +642,13 @@ struct he3hadronfemto {
645642 continue ;
646643 }
647644
648- if (!setting_enableBkgUS && (track0.sign () * track1.sign () < 0 )) {
649- continue ;
650- }
651- if (setting_enableBkgUS && (track0.sign () * track1.sign () > 0 )) {
652- continue ;
645+ if (!setting_saveUSandLS) {
646+ if (!setting_enableBkgUS && (track0.sign () * track1.sign () < 0 )) {
647+ continue ;
648+ }
649+ if (setting_enableBkgUS && (track0.sign () * track1.sign () > 0 )) {
650+ continue ;
651+ }
653652 }
654653
655654 if (!selectTrack (track1) || !selectionPIDHadron (track1)) {
0 commit comments