@@ -279,6 +279,7 @@ struct he3HadronFemto {
279279 SameKindPair<CollisionsFull, TrackCandidates, BinningType> mPair {binningPolicy, settingNoMixedEvents, -1 , &cache};
280280
281281 std::array<float , 6 > mBBparamsHe ;
282+ o2::aod::ITSResponse mResponseITS ;
282283
283284 std::vector<int > mRecoCollisionIDs ;
284285 std::vector<bool > mGoodCollisions ;
@@ -310,14 +311,16 @@ struct he3HadronFemto {
310311 {" He3/hChi2NClHe3ITS" , " ^{3}He;Chi2_{ITS} Ncluster" , {HistType::kTH1F , {{100 , 0 , 100 .0f }}}},
311312 {" He3/hHe3Pt" , " ^{3}He; #it{p}_{T} (GeV/#it{c})" , {HistType::kTH1F , {{240 , -6 .0f , 6 .0f }}}},
312313 {" He3/h2dEdxHe3candidates" , " dEdx distribution; #it{p} (GeV/#it{c}); dE/dx (a.u.)" , {HistType::kTH2F , {{200 , -5 .0f , 5 .0f }, {100 , 0 .0f , 2000 .0f }}}},
314+ {" He3/h2NsigmaHe3ITS" , " NsigmaHe3 ITS distribution; signed #it{p}_{T} (GeV/#it{c}); n#sigma_{ITS} ^{3}He" , {HistType::kTH2F , {{100 , -5 .0f , 5 .0f }, {120 , -3 .0f , 3 .0f }}}},
315+ {" He3/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 }}}},
313316 {" He3/h2NsigmaHe3TPC" , " NsigmaHe3 TPC distribution; #it{p}_{T} (GeV/#it{c}); n#sigma_{TPC}(^{3}He)" , {HistType::kTH2F , {{100 , -5 .0f , 5 .0f }, {200 , -5 .0f , 5 .0f }}}},
314317 {" He3/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 }}}},
315- {" He3/h2NSigmaHe3ITS" , " NsigmaHe3 ITS distribution; signed #it{p}_{T} (GeV/#it{c}); n#sigma_{ITS} ^{3}He" , {HistType::kTH2F , {{100 , -5 .0f , 5 .0f }, {120 , -3 .0f , 3 .0f }}}},
316- {" He3/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 }}}},
317318
318319 {" Had/hNClsHadITS" , " had;N_{ITS} Cluster" , {HistType::kTH1F , {{20 , -10 .0f , 10 .0f }}}},
319320 {" Had/hChi2NClHadITS" , " had;Chi2_{ITS} Ncluster" , {HistType::kTH1F , {{100 , 0 , 100 .0f }}}},
320321 {" Had/hHadronPt" , " had; #it{p}_{T} (GeV/#it{c})" , {HistType::kTH1F , {{120 , -3 .0f , 3 .0f }}}},
322+ {" Had/h2NsigmaHadronITS" , " NsigmaHadron ITS distribution; #it{p}_{T}(GeV/#it{c}); n#sigma_{ITS}(had)" , {HistType::kTH2F , {{100 , -5 .0f , 5 .0f }, {200 , -5 .0f , 5 .0f }}}},
323+ {" Had/h2NsigmaHadronITS_preselection" , " NsigmaHadron ITS distribution; #it{p}_{T} (GeV/#it{c}); n#sigma_{ITS}(had)" , {HistType::kTH2F , {{100 , -5 .0f , 5 .0f }, {400 , -10 .0f , 10 .0f }}}},
321324 {" Had/h2NsigmaHadronTPC" , " NsigmaHadron TPC distribution; #it{p}_{T}(GeV/#it{c}); n#sigma_{TPC}(had)" , {HistType::kTH2F , {{100 , -5 .0f , 5 .0f }, {200 , -5 .0f , 5 .0f }}}},
322325 {" Had/h2NsigmaHadronTPC_preselection" , " NsigmaHadron TPC distribution; #it{p}_{T} (GeV/#it{c}); n#sigma_{TPC}(had)" , {HistType::kTH2F , {{100 , -5 .0f , 5 .0f }, {400 , -10 .0f , 10 .0f }}}},
323326 {" Had/h2NsigmaHadronTPC_mcBackground" , " NsigmaHadron TPC distribution; #it{p}_{T} (GeV/#it{c}); n#sigma_{TPC}(had)" , {HistType::kTH2F , {{100 , -5 .0f , 5 .0f }, {400 , -10 .0f , 10 .0f }}}},
@@ -594,18 +597,16 @@ struct he3HadronFemto {
594597 if (std::abs (nSigmaHe3) > settingCutNsigmaTPC) {
595598 return false ;
596599 }
597- //
598- o2::aod::ITSResponse mResponseITS ;
600+
599601 auto itsNsigmaHe3 = mResponseITS .nSigmaITS <o2::track::PID::Helium3>(candidate.itsClusterSizes (), 2 * candidate.p (), candidate.eta ());
600- //
601- mQaRegistry .fill (HIST (" He3/h2NSigmaHe3ITS_preselection" ), candidate.sign () * 2 * candidate.pt (), itsNsigmaHe3);
602+ mQaRegistry .fill (HIST (" He3/h2NsigmaHe3ITS_preselection" ), candidate.sign () * 2 * candidate.pt (), itsNsigmaHe3);
602603 if (itsNsigmaHe3 < settingCutNsigmaITSHe3) {
603604 return false ;
604605 }
605606
606607 mQaRegistry .fill (HIST (" He3/h2dEdxHe3candidates" ), candidate.sign () * correctedTPCinnerParam, candidate.tpcSignal ());
607608 mQaRegistry .fill (HIST (" He3/h2NsigmaHe3TPC" ), candidate.sign () * 2 * candidate.pt (), nSigmaHe3);
608- mQaRegistry .fill (HIST (" He3/h2NSigmaHe3ITS " ), candidate.sign () * 2 * candidate.pt (), itsNsigmaHe3);
609+ mQaRegistry .fill (HIST (" He3/h2NsigmaHe3ITS " ), candidate.sign () * 2 * candidate.pt (), itsNsigmaHe3);
609610 return true ;
610611 }
611612
@@ -1333,35 +1334,43 @@ struct he3HadronFemto {
13331334 if (!selectTrack (track, Species::kHad ))
13341335 continue ;
13351336
1336- if (selectDcaNsigmaCut (track, Species::kHad )) {
1337+ const float itsNSigmaHad = settingHadPDGCode == PDG_t::kProton ? mResponseITS .nSigmaITS <o2::track::PID::Proton>(track.itsClusterSizes (), track.p (), track.eta ()) : mResponseITS .nSigmaITS <o2::track::PID::Pion>(track.itsClusterSizes (), track.p (), track.eta ());
1338+ mQaRegistry .fill (HIST (" Had/h2NsigmaHadronITS_preselection" ), track.pt (), itsNSigmaHad);
1339+
1340+ if (selectDcaNsigmaCut (track, Species::kHad ) && (itsNSigmaHad > settingCutNsigmaITSHad)) {
1341+
13371342 mQaRegistry .fill (HIST (" Had/hHadronPt" ), track.pt ());
1343+ mQaRegistry .fill (HIST (" Had/h2NsigmaHadronITS" ), track.pt (), itsNSigmaHad);
13381344
13391345 const float tpcNSigmaHad = computeTPCNSigmaHadron (track);
1340- mQaRegistry .fill (HIST (" Had/h2NsigmaHadronTPC_preselection" ), track.tpcInnerParam (), tpcNSigmaHad);
1346+ mQaRegistry .fill (HIST (" Had/h2NsigmaHadronTPC_preselection" ), track.pt (), tpcNSigmaHad);
13411347
13421348 if (track.hasTOF ()) {
13431349 const float tofNSigmaHad = computeTOFNSigmaHadron (track);
13441350 mQaRegistry .fill (HIST (" Had/h2NsigmaHadronTOF_preselection" ), track.pt (), tofNSigmaHad);
13451351 }
13461352 }
13471353
1348- if (!selectTrack (track, Species::kHe3 ) || !selectDcaNsigmaCut (track, Species::kHe3 ))
1349- continue ;
1350-
13511354 const float ptHe3Corrected = correctPtHe3TrackedAsTriton (track);
1355+ const float itsNSigmaHe3 = mResponseITS .nSigmaITS <o2::track::PID::Helium3>(track.itsClusterSizes (), 2 * track.p (), track.eta ());
1356+ mQaRegistry .fill (HIST (" He3/h2NsigmaHe3ITS_preselection" ), ptHe3Corrected, itsNSigmaHe3);
1357+
1358+ if (!selectTrack (track, Species::kHe3 ) || !selectDcaNsigmaCut (track, Species::kHe3 ) || (itsNSigmaHe3 < settingCutNsigmaITSHe3))
1359+ continue ;
13521360
13531361 mQaRegistry .fill (HIST (" He3/hHe3Pt" ), ptHe3Corrected);
13541362 mQaRegistry .fill (HIST (" He3/hDCAxyHe3" ), track.dcaXY ());
13551363 mQaRegistry .fill (HIST (" He3/hDCAzHe3" ), track.dcaZ ());
1364+ mQaRegistry .fill (HIST (" He3/h2NsigmaHe3ITS" ), ptHe3Corrected, itsNSigmaHe3);
13561365
13571366 bool heliumPID = track.pidForTracking () == o2::track::PID::Helium3 || track.pidForTracking () == o2::track::PID::Alpha;
13581367 float correctedTPCinnerParam = (heliumPID && settingCompensatePIDinTracking) ? track.tpcInnerParam () / 2 .f : track.tpcInnerParam ();
13591368 if (correctedTPCinnerParam < settingCutRigidityMinHe3) {
13601369 continue ;
13611370 }
13621371
1363- const float nSigmaHe3 = computeNSigmaHe3 (track);
1364- mQaRegistry .fill (HIST (" He3/h2NsigmaHe3TPC_preselection" ), track.sign () * ptHe3Corrected, nSigmaHe3 );
1372+ const float tpcNSigmaHe3 = computeNSigmaHe3 (track);
1373+ mQaRegistry .fill (HIST (" He3/h2NsigmaHe3TPC_preselection" ), track.sign () * ptHe3Corrected, tpcNSigmaHe3 );
13651374 }
13661375 }
13671376 PROCESS_SWITCH (he3HadronFemto, processPurity, " Process for purity studies" , false );
@@ -1384,22 +1393,22 @@ struct he3HadronFemto {
13841393 mQaRegistry .fill (HIST (" Had/hHadronPt" ), track.pt ());
13851394
13861395 const float tpcNSigmaHad = computeTPCNSigmaHadron (track);
1387- mQaRegistry .fill (HIST (" Had/h2NsigmaHadronTPC_preselection" ), track.sign () * track.tpcInnerParam (), tpcNSigmaHad);
1396+ mQaRegistry .fill (HIST (" Had/h2NsigmaHadronTPC_preselection" ), track.sign () * track.pt (), tpcNSigmaHad);
13881397
13891398 if (std::abs (particle.pdgCode ()) != settingHadPDGCode) {
1390- mQaRegistry .fill (HIST (" Had/h2NsigmaHadronTPC_mcBackground" ), track.sign () * track.tpcInnerParam (), tpcNSigmaHad);
1399+ mQaRegistry .fill (HIST (" Had/h2NsigmaHadronTPC_mcBackground" ), track.sign () * track.pt (), tpcNSigmaHad);
13911400 } else {
1392- mQaRegistry .fill (HIST (" Had/h2NsigmaHadronTPC_mcSignal" ), track.sign () * track.tpcInnerParam (), tpcNSigmaHad);
1401+ mQaRegistry .fill (HIST (" Had/h2NsigmaHadronTPC_mcSignal" ), track.sign () * track.pt (), tpcNSigmaHad);
13931402 }
13941403
13951404 if (track.hasTOF ()) {
13961405 const float tofNSigmaHad = computeTOFNSigmaHadron (track);
13971406 mQaRegistry .fill (HIST (" Had/h2NsigmaHadronTOF_preselection" ), track.sign () * track.pt (), tofNSigmaHad);
13981407
13991408 if (std::abs (particle.pdgCode ()) != settingHadPDGCode) {
1400- mQaRegistry .fill (HIST (" Had/h2NsigmaHadronTOF_mcBackground" ), track.sign () * track.tpcInnerParam (), tofNSigmaHad);
1409+ mQaRegistry .fill (HIST (" Had/h2NsigmaHadronTOF_mcBackground" ), track.sign () * track.pt (), tofNSigmaHad);
14011410 } else {
1402- mQaRegistry .fill (HIST (" Had/h2NsigmaHadronTOF_mcSignal" ), track.sign () * track.tpcInnerParam (), tofNSigmaHad);
1411+ mQaRegistry .fill (HIST (" Had/h2NsigmaHadronTOF_mcSignal" ), track.sign () * track.pt (), tofNSigmaHad);
14031412 }
14041413 }
14051414 }
0 commit comments