Skip to content

Commit 89f9a29

Browse files
committed
Add triton femto trigger
1 parent 0474745 commit 89f9a29

File tree

2 files changed

+39
-7
lines changed

2 files changed

+39
-7
lines changed

EventFiltering/PWGLF/nucleiFilter.cxx

Lines changed: 37 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ static constexpr std::array<int, nNuclei> charges{1, 1, 2};
5656
static const std::vector<std::string> matterOrNot{"Matter", "Antimatter"};
5757
static const std::vector<std::string> nucleiNames{"H2", "H3", "Helium"};
5858
static const std::vector<std::string> hypernucleiNames{"H3L"}; // 3-body decay case
59-
static const std::vector<std::string> columnsNames{o2::aod::filtering::H2::columnLabel(), o2::aod::filtering::He::columnLabel(), o2::aod::filtering::HeV0::columnLabel(), o2::aod::filtering::H3L3Body::columnLabel(), o2::aod::filtering::Tracked3Body::columnLabel(), o2::aod::filtering::ITSmildIonisation::columnLabel(), o2::aod::filtering::ITSextremeIonisation::columnLabel()};
59+
static const std::vector<std::string> columnsNames{o2::aod::filtering::H2::columnLabel(), o2::aod::filtering::He::columnLabel(), o2::aod::filtering::HeV0::columnLabel(), o2::aod::filtering::TritonFemto::columnLabel(), o2::aod::filtering::H3L3Body::columnLabel(), o2::aod::filtering::Tracked3Body::columnLabel(), o2::aod::filtering::ITSmildIonisation::columnLabel(), o2::aod::filtering::ITSextremeIonisation::columnLabel()};
6060
static const std::vector<std::string> cutsNames{
6161
"TPCnSigmaMin", "TPCnSigmaMax", "TOFnSigmaMin", "TOFnSigmaMax", "TOFpidStartPt"};
6262
constexpr double betheBlochDefault[nNuclei][6]{
@@ -316,6 +316,7 @@ struct nucleiFilter {
316316
kH2 = 0,
317317
kHe,
318318
kHeV0,
319+
kTritonFemto,
319320
kH3L3Body,
320321
kTracked3Body,
321322
kITSmildIonisation,
@@ -333,7 +334,7 @@ struct nucleiFilter {
333334
hProcessedEvents->Fill(0);
334335
//
335336
if (!collision.selection_bit(aod::evsel::kNoTimeFrameBorder)) {
336-
tags(keepEvent[kH2], keepEvent[kHe], keepEvent[kHeV0], keepEvent[kH3L3Body], keepEvent[kTracked3Body], keepEvent[kITSmildIonisation], keepEvent[kITSextremeIonisation]);
337+
tags(keepEvent[kH2], keepEvent[kHe], keepEvent[kHeV0], keepEvent[kTritonFemto], keepEvent[kH3L3Body], keepEvent[kTracked3Body], keepEvent[kITSmildIonisation], keepEvent[kITSextremeIonisation]);
337338
return;
338339
}
339340

@@ -344,7 +345,8 @@ struct nucleiFilter {
344345
{charges[2] * cfgMomentumScalingBetheBloch->get(2u, 0u) / masses[2], charges[2] * cfgMomentumScalingBetheBloch->get(2u, 1u) / masses[2]}};
345346

346347
constexpr int nucleusIndex[nNuclei]{kH2, -1, kHe}; /// remap for nuclei triggers
347-
std::vector<int> he3indices;
348+
std::vector<int> h3indices, he3indices;
349+
std::vector<ROOT::Math::PtEtaPhiMVector> h3vectors;
348350
for (auto& track : tracks) { // start loop over tracks
349351
if (track.itsNCls() >= cfgCutNclusExtremeIonisationITS) {
350352
double avgClsSize{0.};
@@ -398,15 +400,44 @@ struct nucleiFilter {
398400
if (track.p() > cfgCutsPID->get(iN, 4u) && (nSigmaTOF[iN] < cfgCutsPID->get(iN, 2u) || nSigmaTOF[iN] > cfgCutsPID->get(iN, 3u))) {
399401
continue;
400402
}
403+
if (iN == 1 && passesDCAselection) {
404+
h3indices.push_back(track.globalIndex());
405+
h3vectors.emplace_back(track.pt(), track.eta(), track.phi(), masses[iN]);
406+
}
407+
if (iN == 2) {
408+
he3indices.push_back(track.globalIndex());
409+
}
401410
if (nucleusIndex[iN] < 0) {
402411
continue;
403412
}
404413
keepEvent[nucleusIndex[iN]] = passesDCAselection;
405414
if (keepEvent[nucleusIndex[iN]]) {
406415
h2TPCsignal[iN]->Fill(track.sign() * track.tpcInnerParam() * fixTPCrigidity, track.tpcSignal());
407416
}
408-
if (iN == 2) {
409-
he3indices.push_back(track.globalIndex());
417+
}
418+
419+
for (const auto& track : tracks) {
420+
if (track.itsNCls() < cfgCutNclusITS ||
421+
track.tpcNClsFound() < cfgCutNclusTPC ||
422+
std::abs(track.dcaXY()) > cfgCutDCAxy ||
423+
std::abs(track.dcaZ()) > cfgCutDCAz ||
424+
std::abs(track.eta()) > 0.9) {
425+
continue;
426+
}
427+
const ROOT::Math::PtEtaPhiMVector trackVector(track.pt(), track.eta(), track.phi(), constants::physics::MassPiMinus);
428+
for (size_t iH3{0}; iH3 < h3vectors.size(); ++iH3) {
429+
if (h3indices[iH3] == track.globalIndex()) {
430+
continue;
431+
}
432+
const auto& h3vector = h3vectors[iH3];
433+
auto pivector = trackVector;
434+
auto cm = h3vector + trackVector;
435+
const ROOT::Math::Boost boost(cm.BoostToCM());
436+
boost(pivector);
437+
if (pivector.p() < cfgCutKstar) {
438+
keepEvent[kTritonFemto] = true;
439+
break;
440+
}
410441
}
411442
}
412443

@@ -582,7 +613,7 @@ struct nucleiFilter {
582613
}
583614
}
584615

585-
tags(keepEvent[kH2], keepEvent[kHe], keepEvent[kHeV0], keepEvent[kH3L3Body], keepEvent[kTracked3Body], keepEvent[kITSmildIonisation], keepEvent[kITSextremeIonisation]);
616+
tags(keepEvent[kH2], keepEvent[kHe], keepEvent[kHeV0], keepEvent[kTritonFemto], keepEvent[kH3L3Body], keepEvent[kTracked3Body], keepEvent[kITSmildIonisation], keepEvent[kITSextremeIonisation]);
586617
}
587618
};
588619

EventFiltering/filterTables.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ namespace filtering
4949
DECLARE_SOA_COLUMN(H2, hasH2, bool); //! deuteron trigger for the helium normalisation (to be downscaled)
5050
DECLARE_SOA_COLUMN(He, hasHe, bool); //! helium
5151
DECLARE_SOA_COLUMN(HeV0, hasHeV0, bool); //! V0 containing a V0
52+
DECLARE_SOA_COLUMN(TritonFemto, hasTritonFemto, bool); //! Triton hadron femtoscopy
5253
DECLARE_SOA_COLUMN(H3L3Body, hasH3L3Body, bool); //! hypertriton 3body
5354
DECLARE_SOA_COLUMN(ITSextremeIonisation, hasITSextremeIonisation, bool); //! ITS extreme ionisation
5455
DECLARE_SOA_COLUMN(ITSmildIonisation, hasITSmildIonisation, bool); //! ITS mild ionisation (normalisation of the extreme ionisation), to be downscaled
@@ -216,7 +217,7 @@ DECLARE_SOA_COLUMN(BCend, hasBCend, uint64_t); //! CEFP bcrange
216217

217218
// nuclei
218219
DECLARE_SOA_TABLE(NucleiFilters, "AOD", "NucleiFilters", //!
219-
filtering::H2, filtering::He, filtering::HeV0, filtering::H3L3Body, filtering::Tracked3Body, filtering::ITSmildIonisation,
220+
filtering::H2, filtering::He, filtering::HeV0, filtering::TritonFemto, filtering::H3L3Body, filtering::Tracked3Body, filtering::ITSmildIonisation,
220221
filtering::ITSextremeIonisation);
221222
using NucleiFilter = NucleiFilters::iterator;
222223

0 commit comments

Comments
 (0)