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
93 changes: 49 additions & 44 deletions PWGCF/DataModel/FemtoDerived.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,8 @@
kMult, //! Bin collision in number of charged tracks for mixing
kMultPercentile, //! Bin collision in multiplicity percentile for mixing
kMultMultPercentile, //! Bin collision in number of charged tracks and multiplicity percentile for mixing
kMultPercentileQn, //! Bin collision in multiplicity percentile an qn value for mixing
kMultPercentileQn, //! Bin collision in multiplicity percentile and qn value for mixing
kMultPercentileEP, //! Bin collision in multiplicity percentile and event plane (deg) for mixing
kNCollisionBinning
};

Expand All @@ -48,14 +49,15 @@

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 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(BitMaskTrackTwo, bitmaskTrackTwo, BitMaskType); //! Bit for track two

Check failure on line 53 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 54 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

DECLARE_SOA_COLUMN(QnVal, qnVal, int); //! qn values for dividing events
DECLARE_SOA_COLUMN(Occupancy, occupancy, int); //! Occupancy of the event
DECLARE_SOA_COLUMN(QnVal, qnVal, double); //! qn values for dividing events
DECLARE_SOA_COLUMN(Occupancy, occupancy, int); //! Occupancy of the event
DECLARE_SOA_COLUMN(EventPlane, eventPlane, double); //! Event-plane of the event (deg)
} // namespace femtodreamcollision

DECLARE_SOA_TABLE_STAGED(FDCollisions, "FDCOLLISION",
Expand All @@ -71,6 +73,9 @@
femtodreamcollision::QnVal,
femtodreamcollision::Occupancy);

DECLARE_SOA_TABLE(FDExtEPCollisions, "AOD", "FDEXTEPCOLLISION",
femtodreamcollision::EventPlane);

DECLARE_SOA_TABLE(FDColMasks, "AOD", "FDCOLMASK",
femtodreamcollision::BitMaskTrackOne,
femtodreamcollision::BitMaskTrackTwo,
Expand All @@ -91,7 +96,7 @@

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

Check failure on line 99 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);

Expand Down Expand Up @@ -151,13 +156,13 @@
DECLARE_SOA_COLUMN(MLambda, mLambda, float); //! The invariant mass of V0 candidate, assuming lambda
DECLARE_SOA_COLUMN(MAntiLambda, mAntiLambda, float); //! The invariant mass of V0 candidate, assuming antilambda

DECLARE_SOA_DYNAMIC_COLUMN(Theta, theta, //! Compute the theta of the track

Check failure on line 159 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.
[](float eta) -> float {
return 2.f * std::atan(std::exp(-eta));
});
DECLARE_SOA_DYNAMIC_COLUMN(Px, px, //! Compute the momentum in x in GeV/c
[](float pt, float phi) -> float {
return pt * std::cos(phi);

Check failure on line 165 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_DYNAMIC_COLUMN(Py, py, //! Compute the momentum in y in GeV/c
[](float pt, float phi) -> float {
Expand Down Expand Up @@ -185,10 +190,10 @@
DECLARE_SOA_COLUMN(TPCNSigmaPi, tpcNSigmaPi, float); //! Nsigma separation with the TPC detector for pion
DECLARE_SOA_COLUMN(TPCNSigmaKa, tpcNSigmaKa, float); //! Nsigma separation with the TPC detector for kaon
DECLARE_SOA_COLUMN(TPCNSigmaPr, tpcNSigmaPr, float); //! Nsigma separation with the TPC detector for proton
DECLARE_SOA_COLUMN(TPCNSigmaDe, tpcNSigmaDe, float); //! Nsigma separation with the TPC detector for deuteron

Check failure on line 193 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(TPCNSigmaTr, tpcNSigmaTr, float); //! Nsigma separation with the TPC detector for triton

Check failure on line 194 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(TPCNSigmaHe, tpcNSigmaHe, float); //! Nsigma separation with the TPC detector for helium3

Check failure on line 195 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(TOFNSigmaEl, tofNSigmaEl, float); //! Nsigma separation with the TOF detector for electron

Check failure on line 196 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(TOFNSigmaPi, tofNSigmaPi, float); //! Nsigma separation with the TOF detector for pion
DECLARE_SOA_COLUMN(TOFNSigmaKa, tofNSigmaKa, float); //! Nsigma separation with the TOF detector for kaon
DECLARE_SOA_COLUMN(TOFNSigmaPr, tofNSigmaPr, float); //! Nsigma separation with the TOF detector for proton
Expand Down Expand Up @@ -228,47 +233,47 @@
lcToPiKP = 2,
dplusToPiKPi = 4
};
DECLARE_SOA_COLUMN(GIndexCol, gIndexCol, int); //! Global index for the collision
DECLARE_SOA_COLUMN(TimeStamp, timeStamp, int64_t); //! Timestamp for the collision
DECLARE_SOA_COLUMN(VertexZ, vertexZ, float); //! VertexZ for the collision
DECLARE_SOA_COLUMN(TrackId, trackId, int); //! track id to match associate particle with charm hadron prongs
DECLARE_SOA_COLUMN(Charge, charge, int8_t); //! Charge of charm hadron
DECLARE_SOA_COLUMN(Prong0Id, prong0Id, int); //! Track id of charm hadron prong0
DECLARE_SOA_COLUMN(Prong1Id, prong1Id, int); //! Track id of charm hadron prong1
DECLARE_SOA_COLUMN(Prong2Id, prong2Id, int); //! Track id of charm hadron prong2
DECLARE_SOA_COLUMN(Prong0Pt, prong0Pt, float); //! Track pT of charm hadron prong0
DECLARE_SOA_COLUMN(Prong1Pt, prong1Pt, float); //! Track pT of charm hadron prong1
DECLARE_SOA_COLUMN(Prong2Pt, prong2Pt, float); //! Track pT of charm hadron prong2
DECLARE_SOA_COLUMN(Prong0Eta, prong0Eta, float); //! Track eta of charm hadron prong0
DECLARE_SOA_COLUMN(Prong1Eta, prong1Eta, float); //! Track eta of charm hadron prong1
DECLARE_SOA_COLUMN(Prong2Eta, prong2Eta, float); //! Track eta of charm hadron prong2
DECLARE_SOA_COLUMN(Prong0Phi, prong0Phi, float); //! Track phi of charm hadron prong0
DECLARE_SOA_COLUMN(Prong1Phi, prong1Phi, float); //! Track phi of charm hadron prong1
DECLARE_SOA_COLUMN(Prong2Phi, prong2Phi, float); //! Track phi of charm hadron prong2
DECLARE_SOA_COLUMN(CandidateSelFlag, candidateSelFlag, int); //! Selection of mass hypothesis for charm hadron (1 for Lc -> pkpi, 2 for Lc -> pikp, 4 for D+ -> pikpi)
DECLARE_SOA_COLUMN(BDTBkg, bdtBkg, float); //! Background score using Boosted Decision Tree for charm hadron
DECLARE_SOA_COLUMN(BDTPrompt, bdtPrompt, float); //! Prompt signal score using Boosted Decision Tree for charm hadron
DECLARE_SOA_COLUMN(BDTFD, bdtFD, float); //! Feed-down score using Boosted Decision Tree for charm hadron
DECLARE_SOA_COLUMN(FlagMc, flagMc, int); //! To select MC particle among charm hadrons, { DplusToPiKPi = 1, LcToPKPi = 17, DsToKKPi = 6, XicToPKPi = 21, N3ProngD = 2ecays };
DECLARE_SOA_COLUMN(OriginMcRec, originMcRec, int); //! flag for reconstruction level matching (1 for prompt, 2 for non-prompt)
DECLARE_SOA_COLUMN(OriginMcGen, originMcGen, int); //! flag for generator level matching (1 for prompt, 2 for non-prompt)
DECLARE_SOA_COLUMN(IsCandidateSwapped, isCandidateSwapped, int); //! swapping of the prongs order (0 for Lc -> pkpi, 1 for Lc -> pikp)
DECLARE_SOA_COLUMN(TrkPt, trkPt, float); //! Transverse momentum of associate femto particle
DECLARE_SOA_COLUMN(TrkEta, trkEta, float); //! Eta of associate femto particle
DECLARE_SOA_COLUMN(TrkPhi, trkPhi, float); //! Phi of associate femto particle
DECLARE_SOA_COLUMN(Kstar, kstar, float); //! Relative momentum in particles pair frame
DECLARE_SOA_COLUMN(KT, kT, float); //! kT distribution of particle pairs
DECLARE_SOA_COLUMN(MT, mT, float); //! Transverse mass distribution
DECLARE_SOA_COLUMN(CharmM, charmM, float); //! Charm hadron mass
DECLARE_SOA_COLUMN(CharmTrkM, charmtrkM, float); //! Charm hadron track mass
DECLARE_SOA_COLUMN(CharmPt, charmPt, float); //! Transverse momentum of charm hadron for result task
DECLARE_SOA_COLUMN(CharmEta, charmEta, float); //! Eta of charm hadron for result task
DECLARE_SOA_COLUMN(CharmPhi, charmPhi, float); //! Phi of charm hadron for result task
DECLARE_SOA_COLUMN(Mult, mult, int); //! Charge particle multiplicity
DECLARE_SOA_COLUMN(MultPercentile, multPercentile, float); //! Multiplicity precentile
DECLARE_SOA_COLUMN(PairSign, pairSign, int8_t); //! Selection between like sign (1) and unlike sign pair (2)
DECLARE_SOA_COLUMN(ProcessType, processType, int64_t); //! Selection between same-event (1), and mixed-event (2)
DECLARE_SOA_DYNAMIC_COLUMN(M, m, //!
DECLARE_SOA_COLUMN(GIndexCol, gIndexCol, int); //! Global index for the collision
DECLARE_SOA_COLUMN(TimeStamp, timeStamp, int64_t); //! Timestamp for the collision
DECLARE_SOA_COLUMN(VertexZ, vertexZ, float); //! VertexZ for the collision
DECLARE_SOA_COLUMN(TrackId, trackId, int); //! track id to match associate particle with charm hadron prongs
DECLARE_SOA_COLUMN(Charge, charge, int8_t); //! Charge of charm hadron
DECLARE_SOA_COLUMN(Prong0Id, prong0Id, int); //! Track id of charm hadron prong0
DECLARE_SOA_COLUMN(Prong1Id, prong1Id, int); //! Track id of charm hadron prong1
DECLARE_SOA_COLUMN(Prong2Id, prong2Id, int); //! Track id of charm hadron prong2
DECLARE_SOA_COLUMN(Prong0Pt, prong0Pt, float); //! Track pT of charm hadron prong0
DECLARE_SOA_COLUMN(Prong1Pt, prong1Pt, float); //! Track pT of charm hadron prong1
DECLARE_SOA_COLUMN(Prong2Pt, prong2Pt, float); //! Track pT of charm hadron prong2
DECLARE_SOA_COLUMN(Prong0Eta, prong0Eta, float); //! Track eta of charm hadron prong0
DECLARE_SOA_COLUMN(Prong1Eta, prong1Eta, float); //! Track eta of charm hadron prong1
DECLARE_SOA_COLUMN(Prong2Eta, prong2Eta, float); //! Track eta of charm hadron prong2
DECLARE_SOA_COLUMN(Prong0Phi, prong0Phi, float); //! Track phi of charm hadron prong0
DECLARE_SOA_COLUMN(Prong1Phi, prong1Phi, float); //! Track phi of charm hadron prong1
DECLARE_SOA_COLUMN(Prong2Phi, prong2Phi, float); //! Track phi of charm hadron prong2
DECLARE_SOA_COLUMN(CandidateSelFlag, candidateSelFlag, int); //! Selection of mass hypothesis for charm hadron (1 for Lc -> pkpi, 2 for Lc -> pikp, 4 for D+ -> pikpi)
DECLARE_SOA_COLUMN(BDTBkg, bdtBkg, float); //! Background score using Boosted Decision Tree for charm hadron
DECLARE_SOA_COLUMN(BDTPrompt, bdtPrompt, float); //! Prompt signal score using Boosted Decision Tree for charm hadron
DECLARE_SOA_COLUMN(BDTFD, bdtFD, float); //! Feed-down score using Boosted Decision Tree for charm hadron
DECLARE_SOA_COLUMN(FlagMc, flagMc, int); //! To select MC particle among charm hadrons, { DplusToPiKPi = 1, LcToPKPi = 17, DsToKKPi = 6, XicToPKPi = 21, N3ProngD = 2ecays };
DECLARE_SOA_COLUMN(OriginMcRec, originMcRec, int); //! flag for reconstruction level matching (1 for prompt, 2 for non-prompt)
DECLARE_SOA_COLUMN(OriginMcGen, originMcGen, int); //! flag for generator level matching (1 for prompt, 2 for non-prompt)
DECLARE_SOA_COLUMN(IsCandidateSwapped, isCandidateSwapped, int); //! swapping of the prongs order (0 for Lc -> pkpi, 1 for Lc -> pikp)
DECLARE_SOA_COLUMN(TrkPt, trkPt, float); //! Transverse momentum of associate femto particle
DECLARE_SOA_COLUMN(TrkEta, trkEta, float); //! Eta of associate femto particle
DECLARE_SOA_COLUMN(TrkPhi, trkPhi, float); //! Phi of associate femto particle
DECLARE_SOA_COLUMN(Kstar, kstar, float); //! Relative momentum in particles pair frame
DECLARE_SOA_COLUMN(KT, kT, float); //! kT distribution of particle pairs
DECLARE_SOA_COLUMN(MT, mT, float); //! Transverse mass distribution
DECLARE_SOA_COLUMN(CharmM, charmM, float); //! Charm hadron mass
DECLARE_SOA_COLUMN(CharmTrkM, charmtrkM, float); //! Charm hadron track mass
DECLARE_SOA_COLUMN(CharmPt, charmPt, float); //! Transverse momentum of charm hadron for result task
DECLARE_SOA_COLUMN(CharmEta, charmEta, float); //! Eta of charm hadron for result task
DECLARE_SOA_COLUMN(CharmPhi, charmPhi, float); //! Phi of charm hadron for result task
DECLARE_SOA_COLUMN(Mult, mult, int); //! Charge particle multiplicity
DECLARE_SOA_COLUMN(MultPercentile, multPercentile, float); //! Multiplicity precentile
DECLARE_SOA_COLUMN(PairSign, pairSign, int8_t); //! Selection between like sign (1) and unlike sign pair (2)
DECLARE_SOA_COLUMN(ProcessType, processType, int64_t); //! Selection between same-event (1), and mixed-event (2)
DECLARE_SOA_DYNAMIC_COLUMN(M, m, //!
[](float pt0, float phi0, float eta0, float pt1, float phi1, float eta1, float pt2, float phi2, float eta2, const std::array<double, 3>& m) -> float { return RecoDecay::m(std::array{
RecoDecayPtEtaPhi::pVector(pt0, eta0, phi0),
RecoDecayPtEtaPhi::pVector(pt1, eta1, phi1),
Expand Down
70 changes: 42 additions & 28 deletions PWGCF/FemtoDream/Core/femtoDreamCollisionSelection.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@
#include "Framework/HistogramRegistry.h"
#include "Framework/Logger.h"

#include "TMath.h"

#include <iostream>
#include <string>
#include <vector>
Expand Down Expand Up @@ -212,18 +214,16 @@ class FemtoDreamCollisionSelection

/// Initializes histograms for qn bin
/// \param registry Histogram registry to be passed
void initQn(HistogramRegistry* registry, int mumQnBins = 10)
void initEPQA(HistogramRegistry* registry)
{
mHistogramQn = registry;
mHistogramQn->add("Event/centFT0CBefore", "; cent", kTH1F, {{10, 0, 100}});
mHistogramQn->add("Event/centFT0CAfter", "; cent", kTH1F, {{10, 0, 100}});
mHistogramQn->add("Event/centFT0CBeforeQn", "; cent", kTH1F, {{10, 0, 100}});
mHistogramQn->add("Event/centFT0CAfterQn", "; cent", kTH1F, {{10, 0, 100}});
mHistogramQn->add("Event/centVsqn", "; cent; qn", kTH2F, {{10, 0, 100}, {100, 0, 1000}});
mHistogramQn->add("Event/centVsqnVsSpher", "; cent; qn; Sphericity", kTH3F, {{10, 0, 100}, {100, 0, 1000}, {100, 0, 1}});
mHistogramQn->add("Event/qnBin", "; qnBin; entries", kTH1F, {{20, 0, 20}});
mHistogramQn->add("Event/psiEP", "; #Psi_{EP} (deg); entries", kTH1F, {{100, 0, 180}});

for (int iqn(0); iqn < mumQnBins; ++iqn) {
qnMults.push_back(mHistogramQn->add(("Qn/mult_" + std::to_string(iqn)).c_str(), "; cent; c22", kTH1F, {{100, 0, 3500}}));
}
return;
}

Expand All @@ -242,12 +242,12 @@ class FemtoDreamCollisionSelection
mMQWeightthisEvt = new TH2D("MQWeightthisEvt", "", binPt, 0., 5., binEta, -0.8, 0.8);

mHistogramQn = registry;
mHistogramQn->add<TProfile>("Event/profileC22", "; cent; c22", kTProfile, {{10, 0, 100}});
mHistogramQn->add<TProfile>("Event/profileC24", "; cent; c24", kTProfile, {{10, 0, 100}});
mHistogramQn->add<TProfile>("Event/profileC22", "; cent; c22", kTProfile, {{10, 0, 100}}, "s");
mHistogramQn->add<TProfile>("Event/profileC24", "; cent; c24", kTProfile, {{10, 0, 100}}, "s");

if (doQnSeparation) {
for (int iqn(0); iqn < mumQnBins; ++iqn) {
profilesC22.push_back(mHistogramQn->add<TProfile>(("Qn/profileC22_" + std::to_string(iqn)).c_str(), "; cent; c22", kTProfile, {{10, 0, 100}}));
profilesC22.push_back(mHistogramQn->add<TProfile>(("Qn/profileC22_" + std::to_string(iqn)).c_str(), "; cent; c22", kTProfile, {{10, 0, 100}}, "s"));
}
}
return;
Expand Down Expand Up @@ -324,7 +324,6 @@ class FemtoDreamCollisionSelection
return spt;
}

/// \todo to be implemented!
/// Compute the qn-vector(FT0C) of an event
/// \tparam T type of the collision
/// \param col Collision
Expand All @@ -336,7 +335,21 @@ class FemtoDreamCollisionSelection
return qn;
}

/// \todo to be implemented!
/// Compute the event plane of an event
/// \tparam T type of the collision
/// \param col Collision
/// \param nmode EP in which harmonic(default 2nd harmonic)
/// \return angle of the event plane (rad) of FT0C of the event
template <typename T>
float computeEP(T const& col, int nmode)
{
double EP = ((1. / nmode) * (TMath::ATan2(col.qvecFT0CImVec()[0], col.qvecFT0CReVec()[0])));
if (EP < 0)
EP += TMath::Pi();
// atan2 return in rad -pi/2-pi/2, then make it 0-pi
return EP;
}

/// \return the 1-d qn-vector separator to 2-d
std::vector<std::vector<float>> getQnBinSeparator2D(std::vector<float> flat, const int numQnBins = 10)
{
Expand All @@ -359,21 +372,21 @@ class FemtoDreamCollisionSelection
return res;
}

/// \todo to be implemented!
/// Get the bin number of qn-vector(FT0C) of an event
/// \param centBinWidth centrality bin width, example: per 1%, per 10% ...
/// \return bin number of qn-vector of the event
int myqnBin(float centrality, float centMax, std::vector<float> qnBinSeparator, bool doFillHisto, float fSpher, float qn, const int numQnBins, float mult, float centBinWidth = 1.f)
// add a param : bool doFillHisto ?
int myqnBin(float centrality, float centMax, bool doFillCent, std::vector<float> qnBinSeparator, float qn, const int numQnBins, float centBinWidth = 1.f)
{
auto twoDSeparator = getQnBinSeparator2D(qnBinSeparator, numQnBins);
if (twoDSeparator.empty() || twoDSeparator[0][0] == -999.) {
LOGP(warning, "ConfQnBinSeparator not set, using default fallback!");
return -999; // safe fallback
}

if (doFillHisto)
mHistogramQn->fill(HIST("Event/centFT0CBefore"), centrality);

// if (doFillHisto)
// mHistogramQn->fill(HIST("Event/centFT0CBefore"), centrality);
// add a param : bool doFillHisto ?
int qnBin = -999;
int mycentBin = static_cast<int>(centrality / centBinWidth);
if (mycentBin >= static_cast<int>(centMax / centBinWidth))
Expand All @@ -382,6 +395,9 @@ class FemtoDreamCollisionSelection
if (mycentBin > static_cast<int>(twoDSeparator.size()) - 1)
return qnBin;

if (doFillCent)
mHistogramQn->fill(HIST("Event/centFT0CAfterQn"), centrality);

for (int iqn(0); iqn < static_cast<int>(twoDSeparator[mycentBin].size()) - 1; ++iqn) {
if (qn > twoDSeparator[mycentBin][iqn] && qn <= twoDSeparator[mycentBin][iqn + 1]) {
qnBin = iqn;
Expand All @@ -392,20 +408,19 @@ class FemtoDreamCollisionSelection
}

mQnBin = qnBin;

if (doFillHisto) {
mHistogramQn->fill(HIST("Event/centFT0CAfter"), centrality);
mHistogramQn->fill(HIST("Event/centVsqn"), centrality, qn);
mHistogramQn->fill(HIST("Event/centVsqnVsSpher"), centrality, qn, fSpher);
mHistogramQn->fill(HIST("Event/qnBin"), qnBin);
if (qnBin >= 0 && qnBin < numQnBins) {
std::get<std::shared_ptr<TH1>>(qnMults[qnBin])->Fill(mult);
}
}

return qnBin;
}

/// \fill event-wise informations
void fillEPQA(float centrality, float fSpher, float qn, float psiEP)
{
mHistogramQn->fill(HIST("Event/centFT0CBeforeQn"), centrality);
mHistogramQn->fill(HIST("Event/centVsqn"), centrality, qn);
mHistogramQn->fill(HIST("Event/centVsqnVsSpher"), centrality, qn, fSpher);
mHistogramQn->fill(HIST("Event/qnBin"), mQnBin + 0.f);
mHistogramQn->fill(HIST("Event/psiEP"), psiEP);
}

/// \todo to be implemented!
/// Fill cumulants histo for flow calculation
/// Reset hists event-by-event
Expand Down Expand Up @@ -501,7 +516,6 @@ class FemtoDreamCollisionSelection
float mSphericityPtmin = 0.f;
int mQnBin = -999;
HistogramRegistry* mHistogramQn = nullptr; ///< For flow cumulant output
std::vector<HistPtr> qnMults; /// Histograms of multiplicity (TH1F) per Qn bin. Stored as HistPtr (variant of shared_ptr) from HistogramManager.
std::vector<HistPtr> profilesC22; /// Pofile Histograms of c22 per Qn bin
TH2D* mReQthisEvt = nullptr; ///< For flow cumulant in an event
TH2D* mImQthisEvt = nullptr; ///< For flow cumulant in an event
Expand Down
Loading
Loading