Skip to content
Closed
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
44 changes: 27 additions & 17 deletions PWGCF/DataModel/FemtoDerived.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright 2019-2025 CERN and copyright holders of ALICE O2.

Check failure on line 1 in PWGCF/DataModel/FemtoDerived.h

View workflow job for this annotation

GitHub Actions / O2 linter

[doc/file]

Provide mandatory file documentation.
// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
// All rights not expressly granted are reserved.
//
Expand All @@ -8,22 +8,24 @@
// 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.

#ifndef PWGCF_DATAMODEL_FEMTODERIVED_H_

Check failure on line 11 in PWGCF/DataModel/FemtoDerived.h

View workflow job for this annotation

GitHub Actions / O2 linter

[doc/file]

Documentation for \author is missing, incorrect or misplaced.

Check failure on line 11 in PWGCF/DataModel/FemtoDerived.h

View workflow job for this annotation

GitHub Actions / O2 linter

[doc/file]

Documentation for \brief is missing, incorrect or misplaced.

Check failure on line 11 in PWGCF/DataModel/FemtoDerived.h

View workflow job for this annotation

GitHub Actions / O2 linter

[doc/file]

Documentation for \file is missing, incorrect or misplaced.
#define PWGCF_DATAMODEL_FEMTODERIVED_H_

#include <cmath>
#include "Framework/ASoA.h"
#include "MathUtils/Utils.h"
#include "Framework/DataTypes.h"
#include "PWGHF/Core/HfHelper.h"
#include "PWGHF/DataModel/CandidateReconstructionTables.h"
#include "PWGHF/DataModel/CandidateSelectionTables.h"

#include "Common/DataModel/Multiplicity.h"
#include "Common/DataModel/PIDResponse.h"
#include "Common/DataModel/TrackSelectionTables.h"

#include "Framework/ASoA.h"
#include "Framework/AnalysisDataModel.h"
#include "Framework/DataTypes.h"
#include "Framework/Expressions.h"
#include "Common/DataModel/TrackSelectionTables.h"
#include "Common/DataModel/PIDResponse.h"
#include "MathUtils/Utils.h"

#include <cmath>

namespace o2::aod
{
Expand All @@ -45,9 +47,9 @@

using BitMaskType = uint32_t; //! Definition of the data type for the collision masks

DECLARE_SOA_COLUMN(BitMaskTrackOne, bitmaskTrackOne, BitMaskType); //! Bit for track one

Check failure on line 50 in PWGCF/DataModel/FemtoDerived.h

View workflow job for this annotation

GitHub Actions / O2 linter

[name/o2-column]

Use UpperCamelCase for names of O2 columns and matching lowerCamelCase names for their getters.
DECLARE_SOA_COLUMN(BitMaskTrackTwo, bitmaskTrackTwo, BitMaskType); //! Bit for track two

Check failure on line 51 in PWGCF/DataModel/FemtoDerived.h

View workflow job for this annotation

GitHub Actions / O2 linter

[name/o2-column]

Use UpperCamelCase for names of O2 columns and matching lowerCamelCase names for their getters.
DECLARE_SOA_COLUMN(BitMaskTrackThree, bitmaskTrackThree, BitMaskType); //! Bit for track three

Check failure on line 52 in PWGCF/DataModel/FemtoDerived.h

View workflow job for this annotation

GitHub Actions / O2 linter

[name/o2-column]

Use UpperCamelCase for names of O2 columns and matching lowerCamelCase names for their getters.

DECLARE_SOA_COLUMN(Downsample, downsample, bool); //! Flag for downsampling
} // namespace femtodreamcollision
Expand Down Expand Up @@ -81,24 +83,30 @@

namespace mcfdcolllabel
{
DECLARE_SOA_INDEX_COLUMN(FDMCCollision, fdMCCollision); //! MC collision for femtodreamcollision

Check failure on line 86 in PWGCF/DataModel/FemtoDerived.h

View workflow job for this annotation

GitHub Actions / O2 linter

[name/o2-column]

Use UpperCamelCase for names of O2 columns and matching lowerCamelCase names for their getters.
}
DECLARE_SOA_TABLE_STAGED(FDMCCollLabels, "FDMCCollLabel", mcfdcolllabel::FDMCCollisionId);

/// FemtoDreamTrack
namespace femtodreamparticle
{
/// Distinuishes the different particle types
/// Distinguishes the different particle types
enum ParticleType {
kTrack, //! Track
kV0, //! V0
kV0Child, //! Child track of a V0
kCascade, //! Cascade
kTrack, //! Track
kV0, //! V0
kReso, //! Resonances (phi)
kResoChild, // Child track of a Resonance
kV0Child, //! Child track of a V0
kCascade, //! Cascade
kCascadeV0,
kCascadeV0Child,
kCascadeBachelor, //! Bachelor track of a cascade
kCharmHadron, //! Bachelor track of a cascade
kNParticleTypes //! Number of particle types
kCascadeBachelor, //! Bachelor track of a cascade
kCharmHadron, //! Bachelor track of a cascade
kPhiPosdaughTPC_NegdaughTPC, /// cases for Phi-daughters for TPC or TOF combinations
kPhiPosdaughTPC_NegdaughTOF,
kPhiPosdaughTOF_NegdaughTPC,
kPhiPosdaughTOF_NegdaughTOF,
kNParticleTypes //! Number of particle types
};

enum MomentumType {
Expand All @@ -107,8 +115,10 @@
kPtpc //! momentum at the inner wall of the TPC (useful for PID plots)
};

static constexpr std::string_view ParticleTypeName[kNParticleTypes] = {"Tracks", "V0", "V0Child", "Cascade", "CascadeV0", "CascadeV0Child", "CascadeBachelor", "CharmHadron"}; //! Naming of the different particle types
static constexpr std::string_view TempFitVarName[kNParticleTypes] = {"/hDCAxy", "/hCPA", "/hDCAxy", "/hCPA", "/hCPA", "/hDCAxy", "/hDCAxy", "/hCPA"};
static constexpr std::string_view ParticleTypeName[kNParticleTypes] = {"Track", "V0", "Reso", "ResoChild", "V0Child", "PhiPosdaughTPC_NegdaughTPC", "PhiPosdaughTPC_NegdaughTOF", "PhiPosdaughTOF_NegdaughTPC", "PhiPosdaughTOF_NegdaughTOF", "Cascade", "CascadeV0", "CascadeV0Child", "CascadeBachelor", "CharmHadron"}; //! Naming of the different particle types
// static constexpr std::string_view TempFitVarName[kNParticleTypes] = {"/hDCAxy", "/hCPA", "/hDCAxy", "/hCPA", "/hCPA", "/hDCAxy", "/hDCAxy", "/hCPA"};

static constexpr std::string_view TempFitVarName[kNParticleTypes] = {"/hDCAxy", "/hCPA", "/hDCAxy", "/hDCAxy", "/hCPA", "/hDCAxy", "/hDCAxy", "/hDCAxy", "/hDCAxy", "/hCPA", "/hCPA", "/hDCAxy", "/hDCAxy", "/hCPA"}; // change later!! check for DCAXY for RESO!!

using cutContainerType = uint32_t; //! Definition of the data type for the bit-wise container for the different selection criteria

Expand All @@ -122,13 +132,13 @@

static constexpr std::string_view TrackTypeName[kNTrackTypes] = {"Trk", "Pos", "Neg", "Bach"}; //! Naming of the different particle types

DECLARE_SOA_INDEX_COLUMN(FDCollision, fdCollision);

Check failure on line 135 in PWGCF/DataModel/FemtoDerived.h

View workflow job for this annotation

GitHub Actions / O2 linter

[name/o2-column]

Use UpperCamelCase for names of O2 columns and matching lowerCamelCase names for their getters.
DECLARE_SOA_COLUMN(Pt, pt, float); //! p_T (GeV/c)
DECLARE_SOA_COLUMN(Eta, eta, float); //! Eta
DECLARE_SOA_COLUMN(Phi, phi, float); //! Phi
DECLARE_SOA_COLUMN(PartType, partType, uint8_t); //! Type of the particle, according to femtodreamparticle::ParticleType
DECLARE_SOA_COLUMN(Cut, cut, cutContainerType); //! Bit-wise container for the different selection criteria
DECLARE_SOA_COLUMN(PIDCut, pidcut, cutContainerType); //! Bit-wise container for the different PID selection criteria \todo since bit-masking cannot be done yet with filters we use a second field for the PID

Check failure on line 141 in PWGCF/DataModel/FemtoDerived.h

View workflow job for this annotation

GitHub Actions / O2 linter

[name/o2-column]

Use UpperCamelCase for names of O2 columns and matching lowerCamelCase names for their getters.
DECLARE_SOA_COLUMN(TempFitVar, tempFitVar, float); //! Observable for the template fitting (Track: DCA_xy, V0: CPA)
DECLARE_SOA_SELF_ARRAY_INDEX_COLUMN(Children, children); //! Field for the track indices to remove auto-correlations
DECLARE_SOA_COLUMN(MLambda, mLambda, float); //! The invariant mass of V0 candidate, assuming lambda
Expand Down
24 changes: 16 additions & 8 deletions PWGCF/FemtoDream/Core/femtoDreamContainer.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright 2019-2025 CERN and copyright holders of ALICE O2.
// Copyright 2019-2022 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.
//
Expand All @@ -19,19 +19,22 @@
#ifndef PWGCF_FEMTODREAM_CORE_FEMTODREAMCONTAINER_H_
#define PWGCF_FEMTODREAM_CORE_FEMTODREAMCONTAINER_H_

#include <fairlogger/Logger.h>
#include <vector>
#include <string>

#include "Framework/HistogramRegistry.h"
#include "PWGCF/DataModel/FemtoDerived.h"
#include "PWGCF/FemtoDream/Core/femtoDreamMath.h"
#include "PWGCF/FemtoDream/Core/femtoDreamUtils.h"
#include "PWGCF/DataModel/FemtoDerived.h"

#include "Framework/HistogramRegistry.h"

#include "Math/Vector4D.h"
#include "TMath.h"

#include <fairlogger/Logger.h>

#include <string>
#include <vector>

using namespace o2::framework;
using namespace o2::aod; // maybe not needed

namespace o2::analysis::femtoDream
{
Expand Down Expand Up @@ -99,6 +102,7 @@ class FemtoDreamContainer
}
if (extendedplots) {
mHistogramRegistry->add((folderName + "/relPairkstarmTPtPart1PtPart2MultPercentile").c_str(), ("; :" + femtoObs + "; #it{m}_{T} (GeV/#it{c}^{2}); #it{p} _{T} Particle 1 (GeV/#it{c}); #it{p} _{T} Particle 2 (GeV/#it{c}); Multiplicity Percentile (%)").c_str(), kTHnSparseF, {femtoObsAxis, mTAxis4D, pTAxis, pTAxis, multPercentileAxis4D});
mHistogramRegistry->add((folderName + "/pT1pT2kstarinvMassPart1invMassPart2").c_str(), ("#it{p} _{T} Particle 1 (GeV/#it{c}); #it{p} _{T} Particle 2 (GeV/#it{c}), " + femtoObs + ";#it{m} (GeV/#it{c}^{2}); #it{m} (GeV/#it{c}^{2})").c_str(), kTHnSparseF, {pTAxis, pTAxis, femtoObsAxis, mP2Axis, mP2Axis});
}
}

Expand Down Expand Up @@ -230,6 +234,10 @@ class FemtoDreamContainer
}
if (extendedplots) {
mHistogramRegistry->fill(HIST(mFolderSuffix[mEventType]) + HIST(o2::aod::femtodreamMCparticle::MCTypeName[mc]) + HIST("/relPairkstarmTPtPart1PtPart2MultPercentile"), femtoObs, mT, part1.pt(), part2.pt(), multPercentile);

if constexpr (requires { part1.mLambda(); part2.mLambda(); }) {
mHistogramRegistry->fill(HIST(mFolderSuffix[mEventType]) + HIST(o2::aod::femtodreamMCparticle::MCTypeName[mc]) + HIST("/pT1pT2kstarinvMassPart1invMassPart2"), part1.pt(), part2.pt(), femtoObs, part1.mLambda(), part2.mLambda());
}
}
}

Expand Down Expand Up @@ -263,7 +271,7 @@ class FemtoDreamContainer
/// \param part1 Particle one
/// \param part2 Particle two
/// \param mult Multiplicity of the event
template <bool isMC, bool isHF = false, typename T1, typename T2>
template <bool isMC, bool isHF = false, typename T1, typename T2> // depends on the part type i pass ?--> add bool or compile time flag
void setPair(T1 const& part1, T2 const& part2, const int mult, const float multPercentile, bool use4dplots, bool extendedplots, bool smearingByOrigin = false)
{
float femtoObs, femtoObsMC;
Expand Down
105 changes: 103 additions & 2 deletions PWGCF/FemtoDream/Core/femtoDreamDetaDphiStar.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright 2019-2025 CERN and copyright holders of ALICE O2.
// Copyright 2019-2022 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.
//
Expand Down Expand Up @@ -154,6 +154,25 @@ class FemtoDreamDetaDphiStar
}
}
}
if constexpr (mPartOneType == o2::aod::femtodreamparticle::ParticleType::kV0 && mPartTwoType == o2::aod::femtodreamparticle::ParticleType::kReso) {

for (int i = 0; i < 4; i++) {
std::string dirName = static_cast<std::string>(dirNames[4]);
histdetadpi[i][0] = mHistogramRegistry->add<TH2>((dirName + static_cast<std::string>(histNames[0][i]) + static_cast<std::string>(histNameSEorME[meORse])).c_str(), "; #Delta #eta; #Delta #phi^{*}", kTH2F, {{100, -0.15, 0.15}, {100, -0.15, 0.15}});
histdetadpi[i][1] = mHistogramRegistry->add<TH2>((dirName + static_cast<std::string>(histNames[1][i]) + static_cast<std::string>(histNameSEorME[meORse])).c_str(), "; #Delta #eta; #Delta #phi^{*}", kTH2F, {{100, -0.15, 0.15}, {100, -0.15, 0.15}});
histdetadpi[i][2] = mHistogramRegistry->add<TH2>((dirName + "at_PV_" + std::to_string(i) + "_before" + static_cast<std::string>(histNameSEorME[meORse])).c_str(), "; #Delta #eta; #Delta #phi^{*}", kTH2F, {{100, -0.15, 0.15}, {100, -0.15, 0.15}});
histdetadpi[i][3] = mHistogramRegistry->add<TH2>((dirName + "at_PV_" + std::to_string(i) + "_after" + static_cast<std::string>(histNameSEorME[meORse])).c_str(), "; #Delta #eta; #Delta #phi^{*}", kTH2F, {{100, -0.15, 0.15}, {100, -0.15, 0.15}});
if (plotForEveryRadii) {
for (int j = 0; j < 9; j++) {
histdetadpiRadii[i][j] = mHistogramRegistryQA->add<TH2>((dirName + static_cast<std::string>(histNamesRadii[i][j]) + static_cast<std::string>(histNameSEorME[meORse])).c_str(), "; #Delta #eta; #Delta #phi^{*}", kTH2F, {{100, -0.15, 0.15}, {100, -0.15, 0.15}});
}
}
if (fillQA) {
histdetadpi_eta[i] = mHistogramRegistry->add<THnSparse>((dirName + "dEtadPhi_Eta_" + std::to_string(i) + static_cast<std::string>(histNameSEorME[meORse])).c_str(), "; #Delta #eta; #Delta #phi^{*}; #eta_{1}; #eta_{2}", kTHnSparseF, {{100, -0.15, 0.15}, {100, -0.15, 0.15}, {100, -0.8, 0.8}, {100, -0.8, 0.8}});
histdetadpi_phi[i] = mHistogramRegistry->add<THnSparse>((dirName + "dEtadPhi_Phi_" + std::to_string(i) + static_cast<std::string>(histNameSEorME[meORse])).c_str(), "; #Delta #eta; #Delta #phi^{*}; #phi_{1}; #phi_{2}", kTHnSparseF, {{100, -0.15, 0.15}, {100, -0.15, 0.15}, {100, 0, 6.28}, {100, 0, 6.28}});
}
}
}
}
/// Check if pair is close or not
template <typename Part1, typename Part2, typename Parts>
Expand Down Expand Up @@ -236,6 +255,88 @@ class FemtoDreamDetaDphiStar
return false;
}

} else if constexpr (mPartOneType == o2::aod::femtodreamparticle::ParticleType::kV0 && mPartTwoType == o2::aod::femtodreamparticle::ParticleType::kReso) {
/// V0-Reso combination
// check if provided particles are in agreement with the class instantiation
if (part1.partType() != o2::aod::femtodreamparticle::ParticleType::kV0 || (part2.partType() != o2::aod::femtodreamparticle::ParticleType::kPhiPosdaughTOF_NegdaughTOF &&
part2.partType() != o2::aod::femtodreamparticle::ParticleType::kPhiPosdaughTOF_NegdaughTPC &&
part2.partType() != o2::aod::femtodreamparticle::ParticleType::kPhiPosdaughTPC_NegdaughTOF &&
part2.partType() != o2::aod::femtodreamparticle::ParticleType::kPhiPosdaughTPC_NegdaughTPC)) {
LOG(fatal) << "FemtoDreamDetaDphiStar: passed arguments don't agree with FemtoDreamDetaDphiStar instantiation! Please provide kV0, kPhiPosdaughTOF_NegdaughTOF, kPhiPosdaughTOF_NegdaughTPC, kPhiPosdaughTPC_NegdaughTOF, kPhiPosdaughTPC_NegdaughTPC candidates.";
return false;
}

bool pass = false;
int nhist = 0;
for (int i = 0; i < 2; i++) {
int indexOfDaughterPart1, indexOfDaughterPart2;
for (int j = 0; j < 2; j++) {
if (isMixedEventLambda) {
indexOfDaughterPart1 = part1.globalIndex() - 2 + i;
indexOfDaughterPart2 = part2.globalIndex() - 2 + j;
} else {
indexOfDaughterPart1 = part1.index() - 2 + i;
indexOfDaughterPart2 = part2.index() - 2 + j;
}

auto daughterPart1 = particles.begin() + indexOfDaughterPart1;
auto daughterPart2 = particles.begin() + indexOfDaughterPart2;
auto deta = daughterPart1.eta() - daughterPart2.eta();
auto dphi_AT_PV = daughterPart1.phi() - daughterPart2.phi();
auto dphi_AT_SpecificRadii = PhiAtSpecificRadiiTPC(daughterPart1, radiiTPC) - PhiAtSpecificRadiiTPC(daughterPart2, radiiTPC);
bool sameCharge = false;
auto dphiAvg = AveragePhiStar(*daughterPart1, *daughterPart2, nhist, &sameCharge);
if (Q3 == 999) {
histdetadpi[nhist][0]->Fill(deta, dphiAvg);
histdetadpi[nhist][2]->Fill(deta, dphi_AT_PV);
if (fillQA) {
histdetadpi_eta[nhist]->Fill(deta, dphiAvg, daughterPart1.eta(), daughterPart2.eta());
histdetadpi_phi[nhist]->Fill(deta, dphiAvg, daughterPart1.phi(), daughterPart2.phi());
}
}
if (sameCharge) {
if (atWhichRadiiToSelect == 1) {
if (pow(dphiAvg, 2) / pow(deltaPhiMax, 2) + pow(deta, 2) / pow(deltaEtaMax, 2) < 1.) {
pass = true;
} else {
if (Q3 == 999) {
histdetadpi[nhist][1]->Fill(deta, dphiAvg);
histdetadpi[nhist][3]->Fill(deta, dphi_AT_PV);
} else if (Q3 < upperQ3LimitForPlotting) {
histdetadpi[nhist][1]->Fill(deta, dphiAvg);
histdetadpi[nhist][3]->Fill(deta, dphi_AT_PV);
}
}
} else if (atWhichRadiiToSelect == 0) {
if (pow(dphi_AT_PV, 2) / pow(deltaPhiMax, 2) + pow(deta, 2) / pow(deltaEtaMax, 2) < 1.) {
pass = true;
} else {
if (Q3 == 999) {
histdetadpi[nhist][1]->Fill(deta, dphiAvg);
histdetadpi[nhist][3]->Fill(deta, dphi_AT_PV);
} else if (Q3 < upperQ3LimitForPlotting) {
histdetadpi[nhist][1]->Fill(deta, dphiAvg);
histdetadpi[nhist][3]->Fill(deta, dphi_AT_PV);
}
}
} else if (atWhichRadiiToSelect == 2) {
if (pow(dphi_AT_SpecificRadii, 2) / pow(deltaPhiMax, 2) + pow(deta, 2) / pow(deltaEtaMax, 2) < 1.) {
pass = true;
} else {
if (Q3 == 999) {
histdetadpi[nhist][1]->Fill(deta, dphiAvg);
histdetadpi[nhist][3]->Fill(deta, dphi_AT_PV);
} else if (Q3 < upperQ3LimitForPlotting) {
histdetadpi[nhist][1]->Fill(deta, dphiAvg);
histdetadpi[nhist][3]->Fill(deta, dphi_AT_PV);
}
}
}
}
nhist += 1;
}
}
return pass;
} else if constexpr (mPartOneType == o2::aod::femtodreamparticle::ParticleType::kTrack && mPartTwoType == o2::aod::femtodreamparticle::ParticleType::kV0) {
/// Track-V0 combination
// check if provided particles are in agreement with the class instantiation
Expand Down Expand Up @@ -583,7 +684,7 @@ class FemtoDreamDetaDphiStar
private:
HistogramRegistry* mHistogramRegistry = nullptr; ///< For main output
HistogramRegistry* mHistogramRegistryQA = nullptr; ///< For QA output
static constexpr std::string_view dirNames[4] = {"kTrack_kTrack/", "kTrack_kV0/", "kTrack_kCharmHadron/", "kTrack_kCascade/"};
static constexpr std::string_view dirNames[5] = {"kTrack_kTrack/", "kTrack_kV0/", "kTrack_kCharmHadron/", "kTrack_kCascade/", "kV0_kReso/"};

static constexpr std::string_view histNameSEorME[3] = {"_SEandME", "_SE", "_ME"};

Expand Down
22 changes: 16 additions & 6 deletions PWGCF/FemtoDream/Core/femtoDreamObjectSelection.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright 2019-2025 CERN and copyright holders of ALICE O2.
// Copyright 2019-2022 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.
//
Expand All @@ -16,15 +16,16 @@
#ifndef PWGCF_FEMTODREAM_CORE_FEMTODREAMOBJECTSELECTION_H_
#define PWGCF_FEMTODREAM_CORE_FEMTODREAMOBJECTSELECTION_H_

#include "PWGCF/DataModel/FemtoDerived.h"
#include "PWGCF/FemtoDream/Core/femtoDreamSelection.h"

#include "Framework/HistogramRegistry.h"
#include "ReconstructionDataFormats/PID.h"

#include <algorithm>
#include <string>
#include <vector>

#include "PWGCF/FemtoDream/Core/femtoDreamSelection.h"
#include "ReconstructionDataFormats/PID.h"
#include "Framework/HistogramRegistry.h"
#include "PWGCF/DataModel/FemtoDerived.h"

using namespace o2;
using namespace o2::framework;

Expand Down Expand Up @@ -59,6 +60,14 @@ class FemtoDreamObjectSelection
}
}

/// assigns value from configurbale to protected class member
/// \param selVals o2 configurable containing the values employed for the selection
template <typename V>
void assign(V& selVals)
{
assignedValue = static_cast<selValDataType>(selVals);
}

/// Pass the Configurable of selection values in the analysis task to the selection class
/// \tparam T Type of the configurable passed to the function
/// \param selVals o2 configurable containing the values employed for the selection
Expand Down Expand Up @@ -190,6 +199,7 @@ class FemtoDreamObjectSelection
HistogramRegistry* mHistogramRegistry; ///< For Analysis QA output
HistogramRegistry* mQAHistogramRegistry; ///< For QA output
std::vector<FemtoDreamSelection<selValDataType, selVariable>> mSelections; ///< Vector containing all selections
selValDataType assignedValue;
};

} // namespace femtoDream
Expand Down
Loading
Loading