From ff7e1af2b69e2bdf5f340a8baca2516efe346310 Mon Sep 17 00:00:00 2001 From: Fabrizio Grosa Date: Tue, 23 Nov 2021 09:29:35 +0100 Subject: [PATCH 1/5] Use DCA from trackextended tables --- EventFiltering/PWGHF/HFFilter.cxx | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/EventFiltering/PWGHF/HFFilter.cxx b/EventFiltering/PWGHF/HFFilter.cxx index d9a8729a832..294a34afc7f 100644 --- a/EventFiltering/PWGHF/HFFilter.cxx +++ b/EventFiltering/PWGHF/HFFilter.cxx @@ -20,6 +20,7 @@ #include "Framework/ASoAHelpers.h" #include "Framework/HistogramRegistry.h" #include "Framework/runDataProcessing.h" +#include "Common/DataModel/TrackSelectionTables.h" #include "../filterTables.h" @@ -266,10 +267,10 @@ struct HfFilter { // Main struct for HF triggers return false; } - if (std::abs(track.dcaPrim0()) < cutsSingleTrackBeauty[candType].get(pTBinTrack, "min_dcaxytoprimary")) { + if (std::abs(track.dcaXY()) < cutsSingleTrackBeauty[candType].get(pTBinTrack, "min_dcaxytoprimary")) { return false; //minimum DCAxy } - if (std::abs(track.dcaPrim0()) > cutsSingleTrackBeauty[candType].get(pTBinTrack, "max_dcaxytoprimary")) { + if (std::abs(track.dcaXY()) > cutsSingleTrackBeauty[candType].get(pTBinTrack, "max_dcaxytoprimary")) { return false; //maximum DCAxy } return true; @@ -327,8 +328,8 @@ struct HfFilter { // Main struct for HF triggers using HfTrackIndexProng2withColl = soa::Join; using HfTrackIndexProng3withColl = soa::Join; - using BigTracksWithProtonPID = soa::Join; - using BigTracksMCPID = soa::Join; + using BigTracksWithProtonPID = soa::Join; + using BigTracksMCPID = soa::Join; void process(aod::Collision const& collision, HfTrackIndexProng2withColl const& cand2Prongs, @@ -493,8 +494,8 @@ struct HfFilter { // Main struct for HF triggers double pseudoRndm = trackPos.pt() * 1000. - (long)(trackPos.pt() * 1000); if ((fillSignal && indexRec > -1) || (fillBackground && indexRec < 0 && pseudoRndm < donwSampleBkgFactor)) { - train2P(trackPos.dcaPrim0(), trackPos.dcaPrim1(), trackPos.tpcNSigmaPi(), trackPos.tpcNSigmaKa(), trackPos.tofNSigmaPi(), trackPos.tofNSigmaKa(), - trackNeg.dcaPrim0(), trackNeg.dcaPrim1(), trackNeg.tpcNSigmaPi(), trackNeg.tpcNSigmaKa(), trackNeg.tofNSigmaPi(), trackNeg.tofNSigmaKa(), + train2P(trackPos.dcaXY(), trackPos.dcaZ(), trackPos.tpcNSigmaPi(), trackPos.tpcNSigmaKa(), trackPos.tofNSigmaPi(), trackPos.tofNSigmaKa(), + trackNeg.dcaXY(), trackNeg.dcaZ(), trackNeg.tpcNSigmaPi(), trackNeg.tpcNSigmaKa(), trackNeg.tofNSigmaPi(), trackNeg.tofNSigmaKa(), flag); } } // end loop over 2-prong candidates @@ -552,9 +553,9 @@ struct HfFilter { // Main struct for HF triggers double pseudoRndm = trackFirst.pt() * 1000. - (long)(trackFirst.pt() * 1000); if ((fillSignal && indexRec > -1) || (fillBackground && indexRec < 0 && pseudoRndm < donwSampleBkgFactor)) { - train3P(trackFirst.dcaPrim0(), trackFirst.dcaPrim1(), trackFirst.tpcNSigmaPi(), trackFirst.tpcNSigmaKa(), trackFirst.tpcNSigmaPr(), trackFirst.tofNSigmaPi(), trackFirst.tofNSigmaKa(), trackFirst.tofNSigmaPr(), - trackSecond.dcaPrim0(), trackSecond.dcaPrim1(), trackSecond.tpcNSigmaPi(), trackSecond.tpcNSigmaKa(), trackSecond.tpcNSigmaPr(), trackSecond.tofNSigmaPi(), trackSecond.tofNSigmaKa(), trackSecond.tofNSigmaPr(), - trackThird.dcaPrim0(), trackThird.dcaPrim1(), trackThird.tpcNSigmaPi(), trackThird.tpcNSigmaKa(), trackThird.tpcNSigmaPr(), trackThird.tofNSigmaPi(), trackThird.tofNSigmaKa(), trackThird.tofNSigmaPr(), + train3P(trackFirst.dcaXY(), trackFirst.dcaZ(), trackFirst.tpcNSigmaPi(), trackFirst.tpcNSigmaKa(), trackFirst.tpcNSigmaPr(), trackFirst.tofNSigmaPi(), trackFirst.tofNSigmaKa(), trackFirst.tofNSigmaPr(), + trackSecond.dcaXY(), trackSecond.dcaZ(), trackSecond.tpcNSigmaPi(), trackSecond.tpcNSigmaKa(), trackSecond.tpcNSigmaPr(), trackSecond.tofNSigmaPi(), trackSecond.tofNSigmaKa(), trackSecond.tofNSigmaPr(), + trackThird.dcaXY(), trackThird.dcaZ(), trackThird.tpcNSigmaPi(), trackThird.tpcNSigmaKa(), trackThird.tpcNSigmaPr(), trackThird.tofNSigmaPi(), trackThird.tofNSigmaKa(), trackThird.tofNSigmaPr(), flag, channel, cand3Prong.hfflag()); } } // end loop over 3-prong candidates From 5886bbec477defd781b4ff06de642570a8252120 Mon Sep 17 00:00:00 2001 From: Fabrizio Grosa Date: Tue, 23 Nov 2021 09:40:13 +0100 Subject: [PATCH 2/5] Add pT of tracks for training samples --- EventFiltering/PWGHF/HFFilter.cxx | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/EventFiltering/PWGHF/HFFilter.cxx b/EventFiltering/PWGHF/HFFilter.cxx index 294a34afc7f..e29f360a796 100644 --- a/EventFiltering/PWGHF/HFFilter.cxx +++ b/EventFiltering/PWGHF/HFFilter.cxx @@ -99,12 +99,14 @@ DECLARE_SOA_TABLE(Colls3Prong, "AOD", "COLLSID3P", o2::aod::extra3Prong::Collisi namespace hftraining2p { +DECLARE_SOA_COLUMN(PT1, pT1, float); //! DECLARE_SOA_COLUMN(DCAPrimXY1, dcaPrimXY1, float); //! DECLARE_SOA_COLUMN(DCAPrimZ1, dcaPrimZ1, float); //! DECLARE_SOA_COLUMN(NsigmaPiTPC1, nsigmaPiTPC1, float); //! DECLARE_SOA_COLUMN(NsigmaKaTPC1, nsigmaKaTPC1, float); //! DECLARE_SOA_COLUMN(NsigmaPiTOF1, nsigmaPiTOF1, float); //! DECLARE_SOA_COLUMN(NsigmaKaTOF1, nsigmaKaTOF1, float); //! +DECLARE_SOA_COLUMN(PT2, pT2, float); //! DECLARE_SOA_COLUMN(DCAPrimXY2, dcaPrimXY2, float); //! DECLARE_SOA_COLUMN(DCAPrimZ2, dcaPrimZ2, float); //! DECLARE_SOA_COLUMN(NsigmaPiTPC2, nsigmaPiTPC2, float); //! @@ -114,12 +116,14 @@ DECLARE_SOA_COLUMN(NsigmaKaTOF2, nsigmaKaTOF2, float); //! DECLARE_SOA_COLUMN(FlagOrigin, flagOrigin, int8_t); //! } // namespace hftraining2p DECLARE_SOA_TABLE(HFTrigTrain2P, "AOD", "HFTRIGTRAIN2P", //! + hftraining2p::PT1, hftraining2p::DCAPrimXY1, hftraining2p::DCAPrimZ1, hftraining2p::NsigmaPiTPC1, hftraining2p::NsigmaKaTPC1, hftraining2p::NsigmaPiTOF1, hftraining2p::NsigmaKaTOF1, + hftraining2p::PT2, hftraining2p::DCAPrimXY2, hftraining2p::DCAPrimZ2, hftraining2p::NsigmaPiTPC2, @@ -130,6 +134,7 @@ DECLARE_SOA_TABLE(HFTrigTrain2P, "AOD", "HFTRIGTRAIN2P", //! namespace hftraining3p { +DECLARE_SOA_COLUMN(PT1, pT1, float); //! DECLARE_SOA_COLUMN(DCAPrimXY1, dcaPrimXY1, float); //! DECLARE_SOA_COLUMN(DCAPrimZ1, dcaPrimZ1, float); //! DECLARE_SOA_COLUMN(NsigmaPiTPC1, nsigmaPiTPC1, float); //! @@ -138,6 +143,7 @@ DECLARE_SOA_COLUMN(NsigmaPrTPC1, nsigmaPrTPC1, float); //! DECLARE_SOA_COLUMN(NsigmaPiTOF1, nsigmaPiTOF1, float); //! DECLARE_SOA_COLUMN(NsigmaKaTOF1, nsigmaKaTOF1, float); //! DECLARE_SOA_COLUMN(NsigmaPrTOF1, nsigmaPrTOF1, float); //! +DECLARE_SOA_COLUMN(PT2, pT2, float); //! DECLARE_SOA_COLUMN(DCAPrimXY2, dcaPrimXY2, float); //! DECLARE_SOA_COLUMN(DCAPrimZ2, dcaPrimZ2, float); //! DECLARE_SOA_COLUMN(NsigmaPiTPC2, nsigmaPiTPC2, float); //! @@ -146,6 +152,7 @@ DECLARE_SOA_COLUMN(NsigmaPrTPC2, nsigmaPrTPC2, float); //! DECLARE_SOA_COLUMN(NsigmaPiTOF2, nsigmaPiTOF2, float); //! DECLARE_SOA_COLUMN(NsigmaKaTOF2, nsigmaKaTOF2, float); //! DECLARE_SOA_COLUMN(NsigmaPrTOF2, nsigmaPrTOF2, float); //! +DECLARE_SOA_COLUMN(PT3, pT3, float); //! DECLARE_SOA_COLUMN(DCAPrimXY3, dcaPrimXY3, float); //! DECLARE_SOA_COLUMN(DCAPrimZ3, dcaPrimZ3, float); //! DECLARE_SOA_COLUMN(NsigmaPiTPC3, nsigmaPiTPC3, float); //! @@ -159,6 +166,7 @@ DECLARE_SOA_COLUMN(Channel, channel, int8_t); //! DECLARE_SOA_COLUMN(HFSelBit, hfselbit, int8_t); //! } // namespace hftraining3p DECLARE_SOA_TABLE(HFTrigTrain3P, "AOD", "HFTRIGTRAIN3P", //! + hftraining3p::PT1, hftraining3p::DCAPrimXY1, hftraining3p::DCAPrimZ1, hftraining3p::NsigmaPiTPC1, @@ -167,6 +175,7 @@ DECLARE_SOA_TABLE(HFTrigTrain3P, "AOD", "HFTRIGTRAIN3P", //! hftraining3p::NsigmaPiTOF1, hftraining3p::NsigmaKaTOF1, hftraining3p::NsigmaPrTOF1, + hftraining3p::PT2, hftraining3p::DCAPrimXY2, hftraining3p::DCAPrimZ2, hftraining3p::NsigmaPiTPC2, @@ -175,6 +184,7 @@ DECLARE_SOA_TABLE(HFTrigTrain3P, "AOD", "HFTRIGTRAIN3P", //! hftraining3p::NsigmaPiTOF2, hftraining3p::NsigmaKaTOF2, hftraining3p::NsigmaPrTOF2, + hftraining3p::PT3, hftraining3p::DCAPrimXY3, hftraining3p::DCAPrimZ3, hftraining3p::NsigmaPiTPC3, @@ -494,8 +504,8 @@ struct HfFilter { // Main struct for HF triggers double pseudoRndm = trackPos.pt() * 1000. - (long)(trackPos.pt() * 1000); if ((fillSignal && indexRec > -1) || (fillBackground && indexRec < 0 && pseudoRndm < donwSampleBkgFactor)) { - train2P(trackPos.dcaXY(), trackPos.dcaZ(), trackPos.tpcNSigmaPi(), trackPos.tpcNSigmaKa(), trackPos.tofNSigmaPi(), trackPos.tofNSigmaKa(), - trackNeg.dcaXY(), trackNeg.dcaZ(), trackNeg.tpcNSigmaPi(), trackNeg.tpcNSigmaKa(), trackNeg.tofNSigmaPi(), trackNeg.tofNSigmaKa(), + train2P(trackPos.pt(), trackPos.dcaXY(), trackPos.dcaZ(), trackPos.tpcNSigmaPi(), trackPos.tpcNSigmaKa(), trackPos.tofNSigmaPi(), trackPos.tofNSigmaKa(), + trackNeg.pt(), trackNeg.dcaXY(), trackNeg.dcaZ(), trackNeg.tpcNSigmaPi(), trackNeg.tpcNSigmaKa(), trackNeg.tofNSigmaPi(), trackNeg.tofNSigmaKa(), flag); } } // end loop over 2-prong candidates @@ -553,9 +563,9 @@ struct HfFilter { // Main struct for HF triggers double pseudoRndm = trackFirst.pt() * 1000. - (long)(trackFirst.pt() * 1000); if ((fillSignal && indexRec > -1) || (fillBackground && indexRec < 0 && pseudoRndm < donwSampleBkgFactor)) { - train3P(trackFirst.dcaXY(), trackFirst.dcaZ(), trackFirst.tpcNSigmaPi(), trackFirst.tpcNSigmaKa(), trackFirst.tpcNSigmaPr(), trackFirst.tofNSigmaPi(), trackFirst.tofNSigmaKa(), trackFirst.tofNSigmaPr(), - trackSecond.dcaXY(), trackSecond.dcaZ(), trackSecond.tpcNSigmaPi(), trackSecond.tpcNSigmaKa(), trackSecond.tpcNSigmaPr(), trackSecond.tofNSigmaPi(), trackSecond.tofNSigmaKa(), trackSecond.tofNSigmaPr(), - trackThird.dcaXY(), trackThird.dcaZ(), trackThird.tpcNSigmaPi(), trackThird.tpcNSigmaKa(), trackThird.tpcNSigmaPr(), trackThird.tofNSigmaPi(), trackThird.tofNSigmaKa(), trackThird.tofNSigmaPr(), + train3P(trackFirst.pt(), trackFirst.dcaXY(), trackFirst.dcaZ(), trackFirst.tpcNSigmaPi(), trackFirst.tpcNSigmaKa(), trackFirst.tpcNSigmaPr(), trackFirst.tofNSigmaPi(), trackFirst.tofNSigmaKa(), trackFirst.tofNSigmaPr(), + trackSecond.pt(), trackSecond.dcaXY(), trackSecond.dcaZ(), trackSecond.tpcNSigmaPi(), trackSecond.tpcNSigmaKa(), trackSecond.tpcNSigmaPr(), trackSecond.tofNSigmaPi(), trackSecond.tofNSigmaKa(), trackSecond.tofNSigmaPr(), + trackThird.pt(), trackThird.dcaXY(), trackThird.dcaZ(), trackThird.tpcNSigmaPi(), trackThird.tpcNSigmaKa(), trackThird.tpcNSigmaPr(), trackThird.tofNSigmaPi(), trackThird.tofNSigmaKa(), trackThird.tofNSigmaPr(), flag, channel, cand3Prong.hfflag()); } } // end loop over 3-prong candidates From c3a5b1b6f940ae5fa27f334a0d142a9defbf7400 Mon Sep 17 00:00:00 2001 From: Fabrizio Grosa Date: Tue, 23 Nov 2021 10:01:23 +0100 Subject: [PATCH 3/5] Add trigger for events with multiple charm-hadron candidates --- EventFiltering/PWGHF/HFFilter.cxx | 17 +++++++++++++++-- EventFiltering/filterTables.h | 9 +++++---- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/EventFiltering/PWGHF/HFFilter.cxx b/EventFiltering/PWGHF/HFFilter.cxx index e29f360a796..0151eb55e8c 100644 --- a/EventFiltering/PWGHF/HFFilter.cxx +++ b/EventFiltering/PWGHF/HFFilter.cxx @@ -46,6 +46,7 @@ enum HfTriggers { kHighPt = 0, kBeauty, kFemto, + kDoubleCharm, kNtriggersHF }; @@ -352,6 +353,8 @@ struct HfFilter { // Main struct for HF triggers bool keepEvent[kNtriggersHF]{false}; // + int n2Prongs{0}, n3Prongs{0}; + for (const auto& cand2Prong : cand2Prongs) { // start loop over 2 prongs if (!TESTBIT(cand2Prong.hfflag(), o2::aod::hf_cand_prong2::DecayType::D0ToPiK)) { // check if it's a D0 @@ -363,6 +366,9 @@ struct HfFilter { // Main struct for HF triggers std::array pVecPos = {trackPos.px(), trackPos.py(), trackPos.pz()}; std::array pVecNeg = {trackNeg.px(), trackNeg.py(), trackNeg.pz()}; + // TODO: add ML selections here + n2Prongs++; + auto pVec2Prong = RecoDecay::PVec(pVecPos, pVecNeg); auto pt2Prong = RecoDecay::Pt(pVec2Prong); if (pt2Prong >= pTThreshold2Prong) { @@ -418,6 +424,9 @@ struct HfFilter { // Main struct for HF triggers float sign3Prong = trackFirst.signed1Pt() * trackSecond.signed1Pt() * trackThird.signed1Pt(); + // TODO: add ML selections here + n3Prongs++; + auto pVec3Prong = RecoDecay::PVec(pVecFirst, pVecSecond, pVecThird); auto pt3Prong = RecoDecay::Pt(pVec3Prong); if (pt3Prong >= pTThreshold3Prong) { @@ -461,9 +470,13 @@ struct HfFilter { // Main struct for HF triggers } // end loop over tracks } // end loop over 3-prong candidates - tags(keepEvent[kHighPt], keepEvent[kBeauty], keepEvent[kFemto]); + if(n2Prongs > 1 || n3Prongs > 1 || (n2Prongs > 0 && n3Prongs > 0)) { + keepEvent[kDoubleCharm] = true; + } + + tags(keepEvent[kHighPt], keepEvent[kBeauty], keepEvent[kFemto], keepEvent[kDoubleCharm]); - if (!keepEvent[kHighPt] && !keepEvent[kBeauty] && !keepEvent[kFemto]) { + if (!keepEvent[kHighPt] && !keepEvent[kBeauty] && !keepEvent[kFemto] && keepEvent[kDoubleCharm]) { hProcessedEvents->Fill(1); } else { for (int iTrigger{0}; iTrigger < kNtriggersHF; iTrigger++) { diff --git a/EventFiltering/filterTables.h b/EventFiltering/filterTables.h index 244ab639cec..e62472c6931 100644 --- a/EventFiltering/filterTables.h +++ b/EventFiltering/filterTables.h @@ -34,9 +34,10 @@ DECLARE_SOA_COLUMN(DiElectron, hasDiElectron, bool); //! dielectron trigger DECLARE_SOA_COLUMN(DiMuon, hasDiMuon, bool); //! dimuon trigger with low pT on muons // heavy flavours -DECLARE_SOA_COLUMN(HfHighPt, hasHfHighPt, bool); //! high-pT charm hadron -DECLARE_SOA_COLUMN(HfBeauty, hasHfBeauty, bool); //! beauty hadron -DECLARE_SOA_COLUMN(HfFemto, hasHfFemto, bool); //! charm-hadron - N pair +DECLARE_SOA_COLUMN(HfHighPt, hasHfHighPt, bool); //! high-pT charm hadron +DECLARE_SOA_COLUMN(HfBeauty, hasHfBeauty, bool); //! beauty hadron +DECLARE_SOA_COLUMN(HfFemto, hasHfFemto, bool); //! charm-hadron - N pair +DECLARE_SOA_COLUMN(HfDoubleCharm, hasHfDoubleCharm, bool); //! at least two charm-hadron candidates // CF three body triggers DECLARE_SOA_COLUMN(PPP, hasPPP, bool); //! has p-p-p triplet @@ -78,7 +79,7 @@ using DqFilter = DqFilters::iterator; // heavy flavours DECLARE_SOA_TABLE(HfFilters, "AOD", "HF Filters", //! - filtering::HfHighPt, filtering::HfBeauty, filtering::HfFemto); + filtering::HfHighPt, filtering::HfBeauty, filtering::HfFemto, filtering::HfDoubleCharm); using HfFilter = HfFilters::iterator; From cb7a315eb73423b7b5461649b5fd2cbd8ddc870d Mon Sep 17 00:00:00 2001 From: Fabrizio Grosa Date: Tue, 23 Nov 2021 10:05:15 +0100 Subject: [PATCH 4/5] fix format --- EventFiltering/PWGHF/HFFilter.cxx | 2 +- EventFiltering/filterTables.h | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/EventFiltering/PWGHF/HFFilter.cxx b/EventFiltering/PWGHF/HFFilter.cxx index 0151eb55e8c..e420796d56a 100644 --- a/EventFiltering/PWGHF/HFFilter.cxx +++ b/EventFiltering/PWGHF/HFFilter.cxx @@ -470,7 +470,7 @@ struct HfFilter { // Main struct for HF triggers } // end loop over tracks } // end loop over 3-prong candidates - if(n2Prongs > 1 || n3Prongs > 1 || (n2Prongs > 0 && n3Prongs > 0)) { + if (n2Prongs > 1 || n3Prongs > 1 || (n2Prongs > 0 && n3Prongs > 0)) { keepEvent[kDoubleCharm] = true; } diff --git a/EventFiltering/filterTables.h b/EventFiltering/filterTables.h index e62472c6931..ded9e90e72c 100644 --- a/EventFiltering/filterTables.h +++ b/EventFiltering/filterTables.h @@ -34,10 +34,10 @@ DECLARE_SOA_COLUMN(DiElectron, hasDiElectron, bool); //! dielectron trigger DECLARE_SOA_COLUMN(DiMuon, hasDiMuon, bool); //! dimuon trigger with low pT on muons // heavy flavours -DECLARE_SOA_COLUMN(HfHighPt, hasHfHighPt, bool); //! high-pT charm hadron -DECLARE_SOA_COLUMN(HfBeauty, hasHfBeauty, bool); //! beauty hadron -DECLARE_SOA_COLUMN(HfFemto, hasHfFemto, bool); //! charm-hadron - N pair -DECLARE_SOA_COLUMN(HfDoubleCharm, hasHfDoubleCharm, bool); //! at least two charm-hadron candidates +DECLARE_SOA_COLUMN(HfHighPt, hasHfHighPt, bool); //! high-pT charm hadron +DECLARE_SOA_COLUMN(HfBeauty, hasHfBeauty, bool); //! beauty hadron +DECLARE_SOA_COLUMN(HfFemto, hasHfFemto, bool); //! charm-hadron - N pair +DECLARE_SOA_COLUMN(HfDoubleCharm, hasHfDoubleCharm, bool); //! at least two charm-hadron candidates // CF three body triggers DECLARE_SOA_COLUMN(PPP, hasPPP, bool); //! has p-p-p triplet From 2070102a03989467cb0dbd922d63fd12efde74f1 Mon Sep 17 00:00:00 2001 From: Fabrizio Grosa Date: Tue, 23 Nov 2021 10:17:21 +0100 Subject: [PATCH 5/5] Revert previous commit --- EventFiltering/PWGHF/HFFilter.cxx | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/EventFiltering/PWGHF/HFFilter.cxx b/EventFiltering/PWGHF/HFFilter.cxx index e420796d56a..243cd92bae8 100644 --- a/EventFiltering/PWGHF/HFFilter.cxx +++ b/EventFiltering/PWGHF/HFFilter.cxx @@ -20,7 +20,6 @@ #include "Framework/ASoAHelpers.h" #include "Framework/HistogramRegistry.h" #include "Framework/runDataProcessing.h" -#include "Common/DataModel/TrackSelectionTables.h" #include "../filterTables.h" @@ -50,7 +49,7 @@ enum HfTriggers { kNtriggersHF }; -static const std::vector HfTriggerNames{"highPt", "beauty", "femto"}; +static const std::vector HfTriggerNames{"highPt", "beauty", "femto", "doubleCharm"}; enum BeautyCandType { kBeauty3Prong = 0, // combination of charm 2-prong and pion @@ -278,10 +277,10 @@ struct HfFilter { // Main struct for HF triggers return false; } - if (std::abs(track.dcaXY()) < cutsSingleTrackBeauty[candType].get(pTBinTrack, "min_dcaxytoprimary")) { + if (std::abs(track.dcaPrim0()) < cutsSingleTrackBeauty[candType].get(pTBinTrack, "min_dcaxytoprimary")) { return false; //minimum DCAxy } - if (std::abs(track.dcaXY()) > cutsSingleTrackBeauty[candType].get(pTBinTrack, "max_dcaxytoprimary")) { + if (std::abs(track.dcaPrim0()) > cutsSingleTrackBeauty[candType].get(pTBinTrack, "max_dcaxytoprimary")) { return false; //maximum DCAxy } return true; @@ -339,8 +338,8 @@ struct HfFilter { // Main struct for HF triggers using HfTrackIndexProng2withColl = soa::Join; using HfTrackIndexProng3withColl = soa::Join; - using BigTracksWithProtonPID = soa::Join; - using BigTracksMCPID = soa::Join; + using BigTracksWithProtonPID = soa::Join; + using BigTracksMCPID = soa::Join; void process(aod::Collision const& collision, HfTrackIndexProng2withColl const& cand2Prongs, @@ -517,8 +516,8 @@ struct HfFilter { // Main struct for HF triggers double pseudoRndm = trackPos.pt() * 1000. - (long)(trackPos.pt() * 1000); if ((fillSignal && indexRec > -1) || (fillBackground && indexRec < 0 && pseudoRndm < donwSampleBkgFactor)) { - train2P(trackPos.pt(), trackPos.dcaXY(), trackPos.dcaZ(), trackPos.tpcNSigmaPi(), trackPos.tpcNSigmaKa(), trackPos.tofNSigmaPi(), trackPos.tofNSigmaKa(), - trackNeg.pt(), trackNeg.dcaXY(), trackNeg.dcaZ(), trackNeg.tpcNSigmaPi(), trackNeg.tpcNSigmaKa(), trackNeg.tofNSigmaPi(), trackNeg.tofNSigmaKa(), + train2P(trackPos.pt(), trackPos.dcaPrim0(), trackPos.dcaPrim1(), trackPos.tpcNSigmaPi(), trackPos.tpcNSigmaKa(), trackPos.tofNSigmaPi(), trackPos.tofNSigmaKa(), + trackNeg.pt(), trackNeg.dcaPrim0(), trackNeg.dcaPrim1(), trackNeg.tpcNSigmaPi(), trackNeg.tpcNSigmaKa(), trackNeg.tofNSigmaPi(), trackNeg.tofNSigmaKa(), flag); } } // end loop over 2-prong candidates @@ -576,9 +575,9 @@ struct HfFilter { // Main struct for HF triggers double pseudoRndm = trackFirst.pt() * 1000. - (long)(trackFirst.pt() * 1000); if ((fillSignal && indexRec > -1) || (fillBackground && indexRec < 0 && pseudoRndm < donwSampleBkgFactor)) { - train3P(trackFirst.pt(), trackFirst.dcaXY(), trackFirst.dcaZ(), trackFirst.tpcNSigmaPi(), trackFirst.tpcNSigmaKa(), trackFirst.tpcNSigmaPr(), trackFirst.tofNSigmaPi(), trackFirst.tofNSigmaKa(), trackFirst.tofNSigmaPr(), - trackSecond.pt(), trackSecond.dcaXY(), trackSecond.dcaZ(), trackSecond.tpcNSigmaPi(), trackSecond.tpcNSigmaKa(), trackSecond.tpcNSigmaPr(), trackSecond.tofNSigmaPi(), trackSecond.tofNSigmaKa(), trackSecond.tofNSigmaPr(), - trackThird.pt(), trackThird.dcaXY(), trackThird.dcaZ(), trackThird.tpcNSigmaPi(), trackThird.tpcNSigmaKa(), trackThird.tpcNSigmaPr(), trackThird.tofNSigmaPi(), trackThird.tofNSigmaKa(), trackThird.tofNSigmaPr(), + train3P(trackFirst.pt(), trackFirst.dcaPrim0(), trackFirst.dcaPrim1(), trackFirst.tpcNSigmaPi(), trackFirst.tpcNSigmaKa(), trackFirst.tpcNSigmaPr(), trackFirst.tofNSigmaPi(), trackFirst.tofNSigmaKa(), trackFirst.tofNSigmaPr(), + trackSecond.pt(), trackSecond.dcaPrim0(), trackSecond.dcaPrim1(), trackSecond.tpcNSigmaPi(), trackSecond.tpcNSigmaKa(), trackSecond.tpcNSigmaPr(), trackSecond.tofNSigmaPi(), trackSecond.tofNSigmaKa(), trackSecond.tofNSigmaPr(), + trackThird.pt(), trackThird.dcaPrim0(), trackThird.dcaPrim1(), trackThird.tpcNSigmaPi(), trackThird.tpcNSigmaKa(), trackThird.tpcNSigmaPr(), trackThird.tofNSigmaPi(), trackThird.tofNSigmaKa(), trackThird.tofNSigmaPr(), flag, channel, cand3Prong.hfflag()); } } // end loop over 3-prong candidates