Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions EventFiltering/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,12 @@
# granted to it by virtue of its status as an Intergovernmental Organization
# or submit itself to any jurisdiction.

o2physics_add_dpl_workflow(central-event-filter-task

Check warning on line 12 in EventFiltering/CMakeLists.txt

View workflow job for this annotation

GitHub Actions / O2 linter

[name/o2-workflow]

Workflow name central-event-filter-task does not match its file name cefpTask.cxx. (Matches centralEventFilterTask.cxx.)
SOURCES cefpTask.cxx
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore O2::DataFormatsCTP
COMPONENT_NAME Analysis)

o2physics_add_dpl_workflow(selected-bc-range-task

Check warning on line 17 in EventFiltering/CMakeLists.txt

View workflow job for this annotation

GitHub Actions / O2 linter

[name/o2-workflow]

Workflow name selected-bc-range-task does not match its file name selectBCRange.cxx. (Matches selectedBcRangeTask.cxx.)
SOURCES selectBCRange.cxx
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore
COMPONENT_NAME Analysis)
Expand All @@ -29,7 +29,7 @@
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore O2Physics::DGCutparHolder
COMPONENT_NAME Analysis)

o2physics_add_dpl_workflow(diffraction-bcfilter

Check warning on line 32 in EventFiltering/CMakeLists.txt

View workflow job for this annotation

GitHub Actions / O2 linter

[name/o2-workflow]

Workflow name diffraction-bcfilter does not match its file name diffractionBCFilter.cxx. (Matches diffractionBcfilter.cxx.)
SOURCES PWGUD/diffractionBCFilter.cxx
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore O2Physics::DGCutparHolder
COMPONENT_NAME Analysis)
Expand All @@ -37,37 +37,37 @@
o2physics_add_header_only_library(HFFilterHelpers
HEADERS PWGHF/HFFilterHelpers.h)

o2physics_add_dpl_workflow(hf-filter

Check warning on line 40 in EventFiltering/CMakeLists.txt

View workflow job for this annotation

GitHub Actions / O2 linter

[name/o2-workflow]

Workflow name hf-filter does not match its file name HFFilter.cxx. (Matches hfFilter.cxx.)
SOURCES PWGHF/HFFilter.cxx
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore ONNXRuntime::ONNXRuntime O2Physics::HFFilterHelpers O2::DetectorsBase
COMPONENT_NAME Analysis)

o2physics_add_dpl_workflow(hf-filter-charm-hadron-signals

Check warning on line 45 in EventFiltering/CMakeLists.txt

View workflow job for this annotation

GitHub Actions / O2 linter

[name/o2-workflow]

Workflow name hf-filter-charm-hadron-signals does not match its file name HFFilterCharmHadronSignals.cxx. (Matches hfFilterCharmHadronSignals.cxx.)
SOURCES PWGHF/HFFilterCharmHadronSignals.cxx
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore ONNXRuntime::ONNXRuntime O2Physics::HFFilterHelpers
COMPONENT_NAME Analysis)

o2physics_add_dpl_workflow(hf-filter-prepare-ml-samples

Check warning on line 50 in EventFiltering/CMakeLists.txt

View workflow job for this annotation

GitHub Actions / O2 linter

[name/o2-workflow]

Workflow name hf-filter-prepare-ml-samples does not match its file name HFFilterPrepareMLSamples.cxx. (Matches hfFilterPrepareMlSamples.cxx.)
SOURCES PWGHF/HFFilterPrepareMLSamples.cxx
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore ONNXRuntime::ONNXRuntime O2Physics::HFFilterHelpers O2::DetectorsBase
COMPONENT_NAME Analysis)

o2physics_add_dpl_workflow(cf-filter

Check warning on line 55 in EventFiltering/CMakeLists.txt

View workflow job for this annotation

GitHub Actions / O2 linter

[name/o2-workflow]

Workflow name cf-filter does not match its file name CFFilterAll.cxx. (Matches cfFilter.cxx.)
SOURCES PWGCF/CFFilterAll.cxx
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore
COMPONENT_NAME Analysis)

o2physics_add_dpl_workflow(cf-filter-qa

Check warning on line 60 in EventFiltering/CMakeLists.txt

View workflow job for this annotation

GitHub Actions / O2 linter

[name/o2-workflow]

Workflow name cf-filter-qa does not match its file name CFFilterQA.cxx. (Matches cfFilterQa.cxx.)
SOURCES PWGCF/CFFilterQA.cxx
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore
COMPONENT_NAME Analysis)

o2physics_add_dpl_workflow(cf-filter-ppphi

Check warning on line 65 in EventFiltering/CMakeLists.txt

View workflow job for this annotation

GitHub Actions / O2 linter

[name/o2-workflow]

Workflow name cf-filter-ppphi does not match its file name CFFilterPPPhi.cxx. (Matches cfFilterPpphi.cxx.)
SOURCES PWGCF/CFFilterPPPhi.cxx
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore
COMPONENT_NAME Analysis)

o2physics_add_dpl_workflow(je-filter

Check warning on line 70 in EventFiltering/CMakeLists.txt

View workflow job for this annotation

GitHub Actions / O2 linter

[name/o2-workflow]

Workflow name je-filter does not match its file name jetFilter.cxx. (Matches jeFilter.cxx.)
SOURCES PWGJE/jetFilter.cxx
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore O2Physics::PWGJECore FastJet::FastJet FastJet::Contrib
COMPONENT_NAME Analysis)
Expand Down Expand Up @@ -102,6 +102,11 @@
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore O2::DetectorsBase O2Physics::PWGEMPhotonMesonCore
COMPONENT_NAME Analysis)

o2physics_add_dpl_workflow(heavy-neutral-meson-filter
SOURCES PWGEM/HeavyNeutralMesonFilter.cxx
PUBLIC_LINK_LIBRARIES O2::Framework O2::EMCALBase O2::EMCALCalib O2Physics::AnalysisCore O2Physics::PWGEMPhotonMesonCore
COMPONENT_NAME Analysis)

o2physics_add_dpl_workflow(lf-f1proton-filter
SOURCES PWGLF/filterf1proton.cxx
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore O2::DetectorsBase
Expand Down
181 changes: 181 additions & 0 deletions EventFiltering/PWGEM/HeavyNeutralMesonFilter.cxx
Original file line number Diff line number Diff line change
@@ -0,0 +1,181 @@
// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
// All rights not expressly granted are reserved.
//
// This software is distributed under the terms of the GNU General Public
// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
//
// In applying this license CERN does not waive the privileges and immunities
// granted to it by virtue of its status as an Intergovernmental Organization
// or submit itself to any jurisdiction.
///
/// \file HeavyNeutralMesonFilter.cxx
///
/// \brief This code loops over collisions to filter events contaning heavy mesons (omega or eta') using EMCal clusters and V0s (PCM)
///
/// \author Nicolas Strangmann (nicolas.strangmann@cern.ch) - Goethe University Frankfurt
///

#include <vector>

#include "PWGEM/PhotonMeson/Utils/HNMUtilities.h"

using namespace o2;
using namespace o2::framework;
using namespace o2::framework::expressions;
using namespace o2::aod::pwgem::photonmeson;

using MyBCs = soa::Join<aod::BCs, aod::BcSels, aod::Timestamps>;
using MyCollisions = soa::Join<aod::Collisions, aod::EvSels>;

using SelectedTracks = soa::Filtered<soa::Join<aod::FullTracks, aod::TrackSelection>>;

struct HeavyNeutralMesonFilter {
Produces<aod::HeavyNeutralMesonFilters> tags;

HistogramRegistry mHistManager{"HeavyNeutralMesonFilterHistograms", {}, OutputObjHandlingPolicy::QAObject};

Configurable<float> cfgTrackMinPt{"cfgTrackMinPt", 0.1, "Minimum momentum of tracks (GeV/c)"};
Configurable<int> cfgHNMMassCorrection{"cfgHNMMassCorrection", 1, "Use GG PDG mass to correct HNM mass (0 = off, 1 = subDeltaPi0, 2 = subLambda)"};
static constexpr float defaultMassWindows[2][4] = {{0., 0.4, 0.6, 1.}, {0.4, 0.8, 0.8, 1.2}};
Configurable<LabeledArray<float>> massWindowOmega{"massWindowOmega", {defaultMassWindows[0], 4, {"pi0_min", "pi0_max", "omega_min", "omega_max"}}, "Mass window for selected omegas and their decay pi0"};
Configurable<LabeledArray<float>> massWindowEtaPrime{"massWindowEtaPrime", {defaultMassWindows[1], 4, {"eta_min", "eta_max", "etaprime_min", "etaprime_max"}}, "Mass window for selected eta' and their decay eta"};

static constexpr float defaultMinPts[4] = {1.8, 1.8, 2.6, 2.6};
Configurable<LabeledArray<float>> minHNMPts{"minHNMPts", {defaultMinPts, 4, {"PCM_omega", "PCM_etaprime", "EMC_omega", "EMC_etaprime"}}, "Minimum pT values for the trigger decisions (GeV/c)"};

Filter trackPtFilter = aod::track::pt > cfgTrackMinPt;

std::vector<hnmutilities::GammaGammaPair> vGGs;
std::vector<hnmutilities::HeavyNeutralMeson> vHNMs;

bool colContainsPCMOmega, colContainsEMCOmega, colContainsPCMEtaPrime, colContainsEMCEtaPrime = false;

emcal::Geometry* emcalGeom;

void init(InitContext const&)
{
emcalGeom = emcal::Geometry::GetInstanceFromRunNumber(300000);
auto hCollisionCounter = mHistManager.add<TH1>("Event/hCollisionCounter", "Number of collisions;;#bf{#it{N}_{Coll}}", HistType::kTH1F, {{6, -0.5, 5.5}});
hCollisionCounter->GetXaxis()->SetBinLabel(1, "all");
hCollisionCounter->GetXaxis()->SetBinLabel(2, "kTVXinEMC");
hCollisionCounter->GetXaxis()->SetBinLabel(3, "PCM #omega");
hCollisionCounter->GetXaxis()->SetBinLabel(4, "EMC #omega");
hCollisionCounter->GetXaxis()->SetBinLabel(5, "PCM #eta'");
hCollisionCounter->GetXaxis()->SetBinLabel(6, "EMC #eta'");

mHistManager.add("Event/nGGs", "Number of (selected) #gamma#gamma paris;#bf{#it{N}_{#gamma#gamma}};#bf{#it{N}_{#gamma#gamma}^{selected}}", HistType::kTH2F, {{51, -0.5, 50.5}, {51, -0.5, 50.5}});
mHistManager.add("Event/nTracks", "Number of tracks;#bf{N_{tracks}};#bf{#it{N}_{Coll}}", HistType::kTH1F, {{51, -0.5, 50.5}});
mHistManager.add("Event/nHeavyNeutralMesons", "Number of (selected) HNM candidates;#bf{#it{N}_{HNM}};#bf{#it{N}_{HNM}^{selected}}", HistType::kTH2F, {{51, -0.5, 50.5}, {51, -0.5, 50.5}});
mHistManager.add("Event/nClustersVsV0s", "Number of clusters and V0s in the collision;#bf{#it{N}_{clusters}};#bf{#it{N}_{V0s}}", HistType::kTH2F, {{26, -0.5, 25.5}, {26, -0.5, 25.5}});

mHistManager.add("GG/invMassVsPt_PCM", "Invariant mass and pT of gg candidates;#bf{#it{M}_{#gamma#gamma}};#bf{#it{N}_{#gamma#gamma}}", HistType::kTH2F, {{400, 0., 0.8}, {250, 0., 25.}});
mHistManager.add("GG/invMassVsPt_PCMEMC", "Invariant mass and pT of gg candidates;#bf{#it{M}_{#gamma#gamma}};#bf{#it{N}_{#gamma#gamma}}", HistType::kTH2F, {{400, 0., 0.8}, {250, 0., 25.}});
mHistManager.add("GG/invMassVsPt_EMC", "Invariant mass and pT of gg candidates;#bf{#it{M}_{#gamma#gamma}};#bf{#it{N}_{#gamma#gamma}}", HistType::kTH2F, {{400, 0., 0.8}, {250, 0., 25.}});

mHistManager.add("HeavyNeutralMeson/invMassVsPt_PCM", "Invariant mass and pT of HNM candidates;#bf{#it{M}_{#pi^{+}#pi^{-}#gamma#gamma}};#bf{#it{N}_{#pi^{+}#pi^{-}#gamma#gamma}}", HistType::kTH2F, {{600, 0.6, 1.2}, {250, 0., 25.}});
mHistManager.add("HeavyNeutralMeson/invMassVsPt_PCMEMC", "Invariant mass and pT of HNM candidates;#bf{#it{M}_{#pi^{+}#pi^{-}#gamma#gamma}};#bf{#it{N}_{#pi^{+}#pi^{-}#gamma#gamma}}", HistType::kTH2F, {{600, 0.6, 1.2}, {250, 0., 25.}});
mHistManager.add("HeavyNeutralMeson/invMassVsPt_EMC", "Invariant mass and pT of HNM candidates;#bf{#it{M}_{#pi^{+}#pi^{-}#gamma#gamma}};#bf{#it{N}_{#pi^{+}#pi^{-}#gamma#gamma}}", HistType::kTH2F, {{600, 0.6, 1.2}, {250, 0., 25.}});
}

Preslice<aod::V0PhotonsKF> perCollision_pcm = aod::v0photonkf::collisionId;
Preslice<aod::SkimEMCClusters> perCollision_emc = aod::skimmedcluster::collisionId;

void process(MyCollisions::iterator const& collision, MyBCs const&, aod::SkimEMCClusters const& clusters, aod::V0PhotonsKF const& v0s, SelectedTracks const& tracks)
{
mHistManager.fill(HIST("Event/hCollisionCounter"), 0.);

if (collision.foundBC_as<MyBCs>().alias_bit(kTVXinEMC))
mHistManager.fill(HIST("Event/hCollisionCounter"), 1.);

auto v0sInThisCollision = v0s.sliceBy(perCollision_pcm, collision.globalIndex());
auto clustersInThisCollision = clusters.sliceBy(perCollision_emc, collision.globalIndex());

mHistManager.fill(HIST("Event/nClustersVsV0s"), clustersInThisCollision.size(), v0sInThisCollision.size());
mHistManager.fill(HIST("Event/nTracks"), tracks.size());

colContainsPCMOmega = colContainsEMCOmega = colContainsPCMEtaPrime = colContainsEMCEtaPrime = false;

hnmutilities::reconstructGGs(clustersInThisCollision, v0sInThisCollision, vGGs);
processGGs(vGGs);
hnmutilities::reconstructHeavyNeutralMesons(tracks, vGGs, vHNMs);
processHNMs(vHNMs);

tags(colContainsPCMOmega, colContainsEMCOmega, colContainsPCMEtaPrime, colContainsEMCEtaPrime);
}

/// \brief Loop over the GG candidates, fill the mass/pt histograms and set the isPi0/isEta flags based on the reconstructed mass
void processGGs(std::vector<hnmutilities::GammaGammaPair>& vGGs)
{
int nGGsBeforeMassCuts = vGGs.size();
for (unsigned int iGG = 0; iGG < vGGs.size(); iGG++) {
auto lightMeson = &vGGs.at(iGG);

if (lightMeson->reconstructionType == photonpair::kPCMPCM) {
mHistManager.fill(HIST("GG/invMassVsPt_PCM"), lightMeson->m(), lightMeson->pT());
} else if (lightMeson->reconstructionType == photonpair::kEMCEMC) {
mHistManager.fill(HIST("GG/invMassVsPt_EMC"), lightMeson->m(), lightMeson->pT());
} else {
mHistManager.fill(HIST("GG/invMassVsPt_PCMEMC"), lightMeson->m(), lightMeson->pT());
}

if (lightMeson->m() > massWindowOmega->get("pi0_min") && lightMeson->m() < massWindowOmega->get("pi0_max")) {
lightMeson->isPi0 = true;
} else if (lightMeson->m() > massWindowEtaPrime->get("eta_min") && lightMeson->m() < massWindowEtaPrime->get("eta_max")) {
lightMeson->isEta = true;
} else {
vGGs.erase(vGGs.begin() + iGG);
iGG--;
}
}
mHistManager.fill(HIST("Event/nGGs"), nGGsBeforeMassCuts, vGGs.size());
}

/// \brief Loop over the heavy neutral meson candidates, fill the mass/pt histograms and set the trigger flags based on the reconstructed mass
void processHNMs(std::vector<hnmutilities::HeavyNeutralMeson>& vHNMs)
{
int nHNMsBeforeMassCuts = vHNMs.size();
for (unsigned int iHNM = 0; iHNM < vHNMs.size(); iHNM++) {
auto heavyNeutralMeson = vHNMs.at(iHNM);

float massHNM = heavyNeutralMeson.m(cfgHNMMassCorrection);
if (heavyNeutralMeson.gg->reconstructionType == photonpair::kPCMPCM) {
mHistManager.fill(HIST("HeavyNeutralMeson/invMassVsPt_PCM"), massHNM, heavyNeutralMeson.pT());
} else if (heavyNeutralMeson.gg->reconstructionType == photonpair::kEMCEMC) {
mHistManager.fill(HIST("HeavyNeutralMeson/invMassVsPt_EMC"), massHNM, heavyNeutralMeson.pT());
} else {
mHistManager.fill(HIST("HeavyNeutralMeson/invMassVsPt_PCMEMC"), massHNM, heavyNeutralMeson.pT());
}

if (heavyNeutralMeson.gg->isPi0 && massHNM > massWindowOmega->get("omega_min") && massHNM < massWindowOmega->get("omega_max")) {
if (heavyNeutralMeson.gg->reconstructionType == photonpair::kPCMPCM && heavyNeutralMeson.pT() > minHNMPts->get("PCM_omega"))
colContainsPCMOmega = true;
else if (heavyNeutralMeson.gg->reconstructionType == photonpair::kEMCEMC && heavyNeutralMeson.pT() > minHNMPts->get("EMC_omega"))
colContainsEMCOmega = true;
} else if (heavyNeutralMeson.gg->isEta && massHNM > massWindowEtaPrime->get("etaprime_min") && massHNM < massWindowEtaPrime->get("etaprime_max")) {
if (heavyNeutralMeson.gg->reconstructionType == photonpair::kPCMPCM && heavyNeutralMeson.pT() > minHNMPts->get("PCM_etaprime"))
colContainsPCMEtaPrime = true;
else if (heavyNeutralMeson.gg->reconstructionType == photonpair::kEMCEMC && heavyNeutralMeson.pT() > minHNMPts->get("EMC_etaprime"))
colContainsEMCEtaPrime = true;
} else {
vHNMs.erase(vHNMs.begin() + iHNM);
iHNM--;
}
}
mHistManager.fill(HIST("Event/nHeavyNeutralMesons"), nHNMsBeforeMassCuts, vHNMs.size());

if (colContainsPCMOmega)
mHistManager.fill(HIST("Event/hCollisionCounter"), 2.);
if (colContainsEMCOmega)
mHistManager.fill(HIST("Event/hCollisionCounter"), 3.);
if (colContainsPCMEtaPrime)
mHistManager.fill(HIST("Event/hCollisionCounter"), 4.);
if (colContainsEMCEtaPrime)
mHistManager.fill(HIST("Event/hCollisionCounter"), 5.);
}
};

WorkflowSpec defineDataProcessing(o2::framework::ConfigContext const& cfgc)
{
return WorkflowSpec{adaptAnalysisTask<HeavyNeutralMesonFilter>(cfgc)};
}
1 change: 1 addition & 0 deletions EventFiltering/cefpTask.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -227,6 +227,7 @@ struct centralEventFilterTask {
FILTER_CONFIGURABLE(MultFilters);
FILTER_CONFIGURABLE(FullJetFilters);
FILTER_CONFIGURABLE(PhotonFilters);
FILTER_CONFIGURABLE(HeavyNeutralMesonFilters);

void init(o2::framework::InitContext& initc)
{
Expand Down
29 changes: 21 additions & 8 deletions EventFiltering/filterTables.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,9 @@ namespace o2::aod
{
namespace filtering
{
DECLARE_SOA_COLUMN(H2, hasH2, bool); //! deuteron trigger for the helium normalisation (to be downscaled)
DECLARE_SOA_COLUMN(He, hasHe, bool); //! helium
DECLARE_SOA_COLUMN(H3L3Body, hasH3L3Body, bool); //! hypertriton 3body
DECLARE_SOA_COLUMN(H2, hasH2, bool); //! deuteron trigger for the helium normalisation (to be downscaled)
DECLARE_SOA_COLUMN(He, hasHe, bool); //! helium
DECLARE_SOA_COLUMN(H3L3Body, hasH3L3Body, bool); //! hypertriton 3body
DECLARE_SOA_COLUMN(ITSextremeIonisation, hasITSextremeIonisation, bool); //! ITS extreme ionisation
DECLARE_SOA_COLUMN(ITSmildIonisation, hasITSmildIonisation, bool); //! ITS mild ionisation (normalisation of the extreme ionisation), to be downscaled

Expand Down Expand Up @@ -174,6 +174,12 @@ DECLARE_SOA_COLUMN(PCMHighPtPhoton, hasPCMHighPtPhoton, bool); //! PCM high pT p
// DECLARE_SOA_COLUMN(PCMEtaDalitz, hasPCMEtaDalitz, bool); //! PCM eta -> ee gamma
// DECLARE_SOA_COLUMN(PCMEtaGG, hasPCMEtaGG, bool); //! PCM eta -> ee gamma
DECLARE_SOA_COLUMN(PCMandEE, hasPCMandEE, bool); //! PCM and ee

// heavy meson filters
DECLARE_SOA_COLUMN(PCMOmegaMeson, hasPCMOmegaMeson, bool); //! Omega meson candidate (3pi) in the collision
DECLARE_SOA_COLUMN(EMCOmegaMeson, hasEMCOmegaMeson, bool); //! Omega meson candidate (3pi) in the collision
DECLARE_SOA_COLUMN(PCMEtaPrimeMeson, hasPCMEtaPrimeMeson, bool); //! Eta' meson candidate (3pi) in the collision
DECLARE_SOA_COLUMN(EMCEtaPrimeMeson, hasEMCEtaPrimeMeson, bool); //! Eta' meson candidate (3pi) in the collision
} // namespace filtering

namespace decision
Expand Down Expand Up @@ -298,6 +304,13 @@ DECLARE_SOA_TABLE(PhotonFilters, "AOD", "PhotonFilters", //!

using PhotonFilter = PhotonFilters::iterator;

// heavy mesons
DECLARE_SOA_TABLE(HeavyNeutralMesonFilters, "AOD", "HeavyNeutralMesonFilters", //!
filtering::PCMOmegaMeson, filtering::EMCOmegaMeson,
filtering::PCMEtaPrimeMeson, filtering::EMCEtaPrimeMeson);

using HeavyNeutralMesonFilter = HeavyNeutralMesonFilters::iterator;

// cefp decision
DECLARE_SOA_TABLE(CefpDecisions, "AOD", "CefpDecision", //!
decision::BCId, decision::GlobalBCId, decision::EvSelBC, decision::CollisionTime, decision::CollisionTimeRes, decision::CefpTriggered0, decision::CefpTriggered1, decision::CefpSelected0, decision::CefpSelected1);
Expand All @@ -309,11 +322,11 @@ DECLARE_SOA_TABLE(BCRanges, "AOD", "BCRanges", //!
using BCRange = BCRanges::iterator;

/// List of the available filters, the description of their tables and the name of the tasks
constexpr int NumberOfFilters{12};
constexpr std::array<char[32], NumberOfFilters> AvailableFilters{"NucleiFilters", "DiffractionFilters", "DqFilters", "HfFilters", "CFFilters", "JetFilters", "JetHFFilters", "FullJetFilters", "StrangenessFilters", "MultFilters", "PhotonFilters", "F1ProtonFilters"};
constexpr std::array<char[16], NumberOfFilters> FilterDescriptions{"NucleiFilters", "DiffFilters", "DqFilters", "HfFilters", "CFFilters", "JetFilters", "JetHFFilters", "FullJetFilters", "LFStrgFilters", "MultFilters", "PhotonFilters", "F1ProtonFilters"};
constexpr std::array<char[128], NumberOfFilters> FilteringTaskNames{"o2-analysis-nuclei-filter", "o2-analysis-diffraction-filter", "o2-analysis-dq-filter-pp-with-association", "o2-analysis-hf-filter", "o2-analysis-cf-filter", "o2-analysis-je-filter", "o2-analysis-je-hf-filter", "o2-analysis-fje-filter", "o2-analysis-lf-strangeness-filter", "o2-analysis-mult-filter", "o2-analysis-em-photon-filter", "o2-analysis-lf-f1proton-filter"};
constexpr o2::framework::pack<NucleiFilters, DiffractionFilters, DqFilters, HfFilters, CFFilters, JetFilters, JetHFFilters, FullJetFilters, StrangenessFilters, MultFilters, PhotonFilters, F1ProtonFilters> FiltersPack;
constexpr int NumberOfFilters{13};
constexpr std::array<char[32], NumberOfFilters> AvailableFilters{"NucleiFilters", "DiffractionFilters", "DqFilters", "HfFilters", "CFFilters", "JetFilters", "JetHFFilters", "FullJetFilters", "StrangenessFilters", "MultFilters", "PhotonFilters", "F1ProtonFilters", "HeavyNeutralMesonFilters"};
constexpr std::array<char[16], NumberOfFilters> FilterDescriptions{"NucleiFilters", "DiffFilters", "DqFilters", "HfFilters", "CFFilters", "JetFilters", "JetHFFilters", "FullJetFilters", "LFStrgFilters", "MultFilters", "PhotonFilters", "F1ProtonFilters", "HNMesonFilters"};
constexpr std::array<char[128], NumberOfFilters> FilteringTaskNames{"o2-analysis-nuclei-filter", "o2-analysis-diffraction-filter", "o2-analysis-dq-filter-pp-with-association", "o2-analysis-hf-filter", "o2-analysis-cf-filter", "o2-analysis-je-filter", "o2-analysis-je-hf-filter", "o2-analysis-fje-filter", "o2-analysis-lf-strangeness-filter", "o2-analysis-mult-filter", "o2-analysis-em-photon-filter", "o2-analysis-lf-f1proton-filter", "o2-analysis-heavy-meson-filter"};
constexpr o2::framework::pack<NucleiFilters, DiffractionFilters, DqFilters, HfFilters, CFFilters, JetFilters, JetHFFilters, FullJetFilters, StrangenessFilters, MultFilters, PhotonFilters, F1ProtonFilters, HeavyNeutralMesonFilters> FiltersPack;
static_assert(o2::framework::pack_size(FiltersPack) == NumberOfFilters);

template <typename T, typename C>
Expand Down
Loading
Loading