Skip to content
Draft
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
51 changes: 43 additions & 8 deletions PWGHF/HFC/DataModel/CorrelationTables.h
Original file line number Diff line number Diff line change
Expand Up @@ -518,22 +518,57 @@ DECLARE_SOA_TABLE(HfElectron, "AOD", "HFELECTRON", //! Hf Electron properties
aod::hf_electron::PoolBin,
aod::hf_electron::GIndexCol,
aod::hf_electron::TimeStamp);

// Note: definition of columns and tables for Electron Hadron correlation pairs for Data
namespace hf_correlation_electron_hadron
{
DECLARE_SOA_COLUMN(DeltaPhi, deltaPhi, float); //! DeltaPhi between Electron and Hadrons
DECLARE_SOA_COLUMN(DeltaEta, deltaEta, float); //! DeltaEta between Electron and Hadrons
DECLARE_SOA_COLUMN(PtElectron, ptElectron, float); //! Transverse momentum of Electron
DECLARE_SOA_COLUMN(PtHadron, ptHadron, float); //! Transverse momentum of Hadron;
DECLARE_SOA_COLUMN(PoolBin, poolBin, int); //! Pool Bin of event defined using zvtx and multiplicity
DECLARE_SOA_COLUMN(NPairsLS, nPairsLS, int); //! number of like-sign electron-hadron pairs
DECLARE_SOA_COLUMN(NPairsUS, nPairsUS, int); //! number of unlike-sign electron-hadron pairs
DECLARE_SOA_COLUMN(DeltaPhi, deltaPhi, float); //! DeltaPhi between Electron and Hadrons
DECLARE_SOA_COLUMN(DeltaEta, deltaEta, float); //! DeltaEta between Electron and Hadrons
DECLARE_SOA_COLUMN(PtElectron, ptElectron, float); //! Transverse momentum of Electron
DECLARE_SOA_COLUMN(PtHadron, ptHadron, float); //! Transverse momentum of Hadron;
DECLARE_SOA_COLUMN(EopElectron, eopElectron, float); //! enery momentum ratio for Electron
DECLARE_SOA_COLUMN(M02Electron, m02Electron, float); //! M02 of Electron
DECLARE_SOA_COLUMN(TpcNSigmaEle, tpcNSigmaEle, float); //! TPCn Sigma of Electron
DECLARE_SOA_COLUMN(TofNSigmaEle, tofNSigmaEle, float); //! TOFn Sigma of Electron

DECLARE_SOA_COLUMN(TpcNClsCrRowsEle, tpcNClsCrRowsEle, float); //! tpcNClsCrossedRows for Electron
DECLARE_SOA_COLUMN(TpcCrRowsRatioEle, tpcCrRowsRatioEle, float); //! Ratio crossed rows over findable clusters electron track
DECLARE_SOA_COLUMN(ItsChi2NClEle, itsChi2NClEle, float); //! itsChi2NCl of Electron
DECLARE_SOA_COLUMN(TpcChi2NClEle, tpcChi2NClEle, float); //! TPC Chi2NCl of electron;
DECLARE_SOA_COLUMN(DcaXYEle, dcaXYEle, float); //! DCAXY of Electron
DECLARE_SOA_COLUMN(DcaZEle, dcaZEle, float); //! DCAZ of Electron

DECLARE_SOA_COLUMN(TpcNClsCrRowsHad, tpcNClsCrRowsHad, float); //! tpcNClsCrossedRows for Hadron
DECLARE_SOA_COLUMN(TpcCrRowsRatioHad, tpcCrRowsRatioHad, float); //! Ratio crossed rows over findable clusters Hadron track
DECLARE_SOA_COLUMN(ItsChi2NClHad, itsChi2NClHad, float); //! itsChi2NCl of Hadron
DECLARE_SOA_COLUMN(TpcChi2NClHad, tpcChi2NClHad, float); //! TPC Chi2NCl of Hadron;
DECLARE_SOA_COLUMN(DcaXYHad, dcaXYHad, float); //! DCAXY of Hadron
DECLARE_SOA_COLUMN(DcaZHad, dcaZHad, float); //! DCAZ of Hadron

DECLARE_SOA_COLUMN(PoolBin, poolBin, int); //! Pool Bin of event defined using zvtx and multiplicity
DECLARE_SOA_COLUMN(NPairsLS, nPairsLS, int); //! number of like-sign electron-hadron pairs
DECLARE_SOA_COLUMN(NPairsUS, nPairsUS, int); //! number of unlike-sign electron-hadron pairs
} // namespace hf_correlation_electron_hadron
DECLARE_SOA_TABLE(HfEHadronPair, "AOD", "HFEHADRONPAIR", //! Hfe-Hadrons pairs Informations
hf_correlation_electron_hadron::DeltaPhi,
hf_correlation_electron_hadron::DeltaEta,
hf_correlation_electron_hadron::PtElectron,
hf_correlation_electron_hadron::PtHadron,
hf_correlation_electron_hadron::EopElectron,
hf_correlation_electron_hadron::M02Electron,
hf_correlation_electron_hadron::TpcNSigmaEle,
hf_correlation_electron_hadron::TofNSigmaEle,
hf_correlation_electron_hadron::TpcNClsCrRowsEle,
hf_correlation_electron_hadron::TpcCrRowsRatioEle,
hf_correlation_electron_hadron::ItsChi2NClEle,
hf_correlation_electron_hadron::TpcChi2NClEle,
hf_correlation_electron_hadron::DcaXYEle,
hf_correlation_electron_hadron::DcaZEle,
hf_correlation_electron_hadron::TpcNClsCrRowsHad,
hf_correlation_electron_hadron::TpcCrRowsRatioHad,
hf_correlation_electron_hadron::ItsChi2NClHad,
hf_correlation_electron_hadron::TpcChi2NClHad,
hf_correlation_electron_hadron::DcaXYHad,
hf_correlation_electron_hadron::DcaZHad,
hf_correlation_electron_hadron::PoolBin,
hf_correlation_electron_hadron::NPairsLS,
hf_correlation_electron_hadron::NPairsUS);
Expand Down
42 changes: 33 additions & 9 deletions PWGHF/HFC/TableProducer/correlatorHfeHadrons.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -49,11 +49,7 @@ using namespace o2::framework::expressions;
using namespace o2::soa;
using namespace o2::aod::hf_sel_electron;

const std::vector<double> zBins{VARIABLE_WIDTH, -10.0, -2.5, 2.5, 10.0};
const std::vector<double> multBins{VARIABLE_WIDTH, 0., 200., 500.0, 5000.};
const std::vector<double> multBinsMcGen{VARIABLE_WIDTH, 0., 20., 50.0, 500.}; // In MCGen multiplicity is defined by counting primaries
using BinningType = ColumnBinningPolicy<aod::collision::PosZ, aod::mult::MultFT0M<aod::mult::MultFT0A, aod::mult::MultFT0C>>;
const BinningType corrBinning{{zBins, multBins}, true};

using BinningTypeMcGen = ColumnBinningPolicy<aod::mccollision::PosZ, o2::aod::mult::MultMCFT0A>;

Expand All @@ -75,6 +71,16 @@ struct HfCorrelatorHfeHadrons {
Configurable<float> etaTrackMin{"etaTrackMin", -0.8f, "Eta range for associated hadron tracks"};
Configurable<float> dcaXYTrackMax{"dcaXYTrackMax", 0.5f, "DCA XY cut"};
Configurable<float> dcaZTrackMax{"dcaZTrackMax", 1.0f, "DCA Z cut"};
Configurable<float> tpccrossCut{"tpccrossCut", 70, "TPC crossrows cut"};
Configurable<float> itsChi2{"itsChi2", 36, "ITS chi2 cluster cut"};
Configurable<float> tpcChi2NCl{"tpcChi2NCl", 4, "TPC chi2 cluster cut"};
Configurable<float> tpccrOverFindableRatio{"tpccrOverFindableRatio", 0.8f, "TPC chi2 cluster cut"};
Configurable<bool> isDefault{"isDefault", true, "Default cut"};
Configurable<bool> csyTPCcr{"csyTPCcr", true, "tpc crossed rows"};
Configurable<bool> csyTPCcrOverFindableRatio{"csyTPCcrOverFindableRatio", true, "tpc crossed rows over findable cluster"};
Configurable<bool> csyITSchi{"csyITSchi", true, "ITS chi2"};
Configurable<bool> csyTPCchi{"csyTPCchi", true, "TPC chi2"};

Configurable<bool> requireEmcal{"requireEmcal", true, "Require electron to be in EMCal"};

// Sigma cut for non-EMCal electrons
Expand Down Expand Up @@ -103,6 +109,10 @@ struct HfCorrelatorHfeHadrons {
Preslice<aod::Tracks> perCol = aod::track::collisionId;
Preslice<aod::HfSelEl> perCollision = aod::hf_sel_electron::collisionId;

ConfigurableAxis zPoolBins{"zPoolBins", {VARIABLE_WIDTH, -10.0f, -2.5f, 2.5f, 10.0f}, "z vertex position pools"};
ConfigurableAxis multPoolBins{"multPoolBins", {VARIABLE_WIDTH, 0.0f, 2000.0f, 6000.0f, 10000.0f}, "event multiplicity pools (FT0M)"};
ConfigurableAxis multPoolBinsMcGen{"multPoolBinsMcGen", {VARIABLE_WIDTH, 0.0f, 20.0f, 50.0f, 500.0f}, "Mixing bins - MC multiplicity"}; // In MCGen multiplicity is defined by counting tracks

ConfigurableAxis binsPosZ{"binsPosZ", {100, -10., 10.}, "primary vertex z coordinate"};
ConfigurableAxis binsDeltaEta{"binsDeltaEta", {30, -1.8, 1.8}, "#it{#Delta#eta}"};
ConfigurableAxis binsDeltaPhi{"binsDeltaPhi", {32, -o2::constants::math::PIHalf, 3. * o2::constants::math::PIHalf}, "#it{#Delta#varphi}"};
Expand All @@ -111,6 +121,7 @@ struct HfCorrelatorHfeHadrons {
ConfigurableAxis binsNSigma{"binsNSigma", {30, -15., 15.}, "#it{#sigma_{TPC}}"};
ConfigurableAxis binsMass{"binsMass", {100, 0.0, 2.0}, "Mass (GeV/#it{c}^{2}); entries"};

BinningType corrBinning{{zPoolBins, multPoolBins}, true};
HistogramRegistry registry{
"registry",
{}};
Expand Down Expand Up @@ -171,7 +182,19 @@ struct HfCorrelatorHfeHadrons {
template <typename T>
bool selAssoHadron(T const& track)
{
if (!track.isGlobalTrackWoDCA()) {
if (isDefault && !track.isGlobalTrackWoDCA()) {
return false;
}
if (csyTPCcr && track.tpcNClsCrossedRows() < tpccrossCut) {
return false;
}
if (csyTPCcrOverFindableRatio && track.tpcCrossedRowsOverFindableCls() < tpccrOverFindableRatio) {
return false;
}
if (csyITSchi && track.itsChi2NCl() > itsChi2) {
return false;
}
if (csyTPCchi && track.tpcChi2NCl() > tpcChi2NCl) {
return false;
}

Expand Down Expand Up @@ -261,6 +284,7 @@ struct HfCorrelatorHfeHadrons {
ptElectron = eTrack.ptTrack();
phiElectron = eTrack.phiTrack();
etaElectron = eTrack.etaTrack();

bool acceptElectron = false;

double deltaPhi = -999;
Expand Down Expand Up @@ -353,7 +377,7 @@ struct HfCorrelatorHfeHadrons {
++nElHadUSCorr;
}
}
entryElectronHadronPair(deltaPhi, deltaEta, ptElectron, ptHadron, poolBin, nElHadLSCorr, nElHadUSCorr);
entryElectronHadronPair(deltaPhi, deltaEta, ptElectron, ptHadron, eTrack.eopEl(), eTrack.m02El(), eTrack.tpcNSigmaElTrack(), eTrack.tofNSigmaElTrack(), eTrack.tpcNClsCrRowsTrack(), eTrack.tpcCrRowsRatioTrack(), eTrack.itsChi2NClTrack(), eTrack.tpcChi2NClTrack(), eTrack.dcaXYTrack(), eTrack.dcaZTrack(), hTrack.tpcNClsCrossedRows(), hTrack.tpcCrossedRowsOverFindableCls(), hTrack.itsChi2NCl(), hTrack.tpcChi2NCl(), hTrack.dcaXY(), hTrack.dcaZ(), poolBin, nElHadLSCorr, nElHadUSCorr);

} // end Hadron Track loop

Expand Down Expand Up @@ -416,7 +440,7 @@ struct HfCorrelatorHfeHadrons {
++nElHadUSCorr;
}
}
entryElectronHadronPair(deltaPhiMix, deltaEtaMix, ptElectronMix, ptHadronMix, poolBin, nElHadLSCorr, nElHadUSCorr);
entryElectronHadronPair(deltaPhiMix, deltaEtaMix, ptElectronMix, ptHadronMix, t1.eopEl(), t1.m02El(), t1.tpcNSigmaElTrack(), t1.tofNSigmaElTrack(), t1.tpcNClsCrRowsTrack(), t1.tpcCrRowsRatioTrack(), t1.itsChi2NClTrack(), t1.tpcChi2NClTrack(), t1.dcaXYTrack(), t1.dcaZTrack(), t2.tpcNClsCrossedRows(), t2.tpcCrossedRowsOverFindableCls(), t2.itsChi2NCl(), t2.tpcChi2NCl(), t2.dcaXY(), t2.dcaZ(), poolBin, nElHadLSCorr, nElHadUSCorr);
}
}

Expand Down Expand Up @@ -447,7 +471,7 @@ struct HfCorrelatorHfeHadrons {
void processMcGen(McGenTableCollision const& mcCollision, aod::McParticles const& mcParticles, aod::HfMcGenSelEl const& electrons)
{

BinningTypeMcGen const corrBinningMcGen{{zBins, multBinsMcGen}, true};
BinningTypeMcGen const corrBinningMcGen{{zPoolBins, multPoolBinsMcGen}, true};
int poolBin = corrBinningMcGen.getBin(std::make_tuple(mcCollision.posZ(), mcCollision.multMCFT0A()));

for (const auto& particleMc : mcParticles) {
Expand Down Expand Up @@ -566,7 +590,7 @@ struct HfCorrelatorHfeHadrons {
void processMcGenMixedEvent(McGenTableCollisions const& mcCollision, aod::HfMcGenSelEl const& electrons, aod::McParticles const& mcParticles)
{

BinningTypeMcGen const corrBinningMcGen{{zBins, multBinsMcGen}, true};
BinningTypeMcGen const corrBinningMcGen{{zPoolBins, multPoolBinsMcGen}, true};

auto tracksTuple = std::make_tuple(electrons, mcParticles);
Pair<McGenTableCollisions, aod::HfMcGenSelEl, aod::McParticles, BinningTypeMcGen> const pairMcGen{corrBinningMcGen, 5, -1, mcCollision, tracksTuple, &cache};
Expand Down
41 changes: 29 additions & 12 deletions PWGHF/HFL/DataModel/ElectronSelectionTable.h
Original file line number Diff line number Diff line change
Expand Up @@ -79,18 +79,27 @@ DECLARE_SOA_TABLE(HfSelEl, "AOD", "HFSELEL", //! Electron Informations
// definition of columns and tables for HfcorrElectron Selection
namespace hf_corr_sel_electron
{
DECLARE_SOA_INDEX_COLUMN(Collision, collision); //! collisioniD of the electron track
DECLARE_SOA_INDEX_COLUMN(Track, track); //! trackid of of the electron track
DECLARE_SOA_COLUMN(EtaTrack, etaTrack, float); //! pseudorapidity of the electron track
DECLARE_SOA_COLUMN(PhiTrack, phiTrack, float); //! azimuth of the electron track
DECLARE_SOA_COLUMN(PtTrack, ptTrack, float); //! transverse momentum of the electron track
DECLARE_SOA_COLUMN(TpcNSigmaElTrack, tpcNSigmaElTrack, float); //! tpcNSigma of the electron track(TPC PID)
DECLARE_SOA_COLUMN(TofNSigmaElTrack, tofNSigmaElTrack, float); //! tofNSigma of the electron track(TOF PID)
DECLARE_SOA_COLUMN(LSMassEE, lSMassEE, std::vector<float>); //! mass of the Like sign electron pair
DECLARE_SOA_COLUMN(ULSMassEE, uLSMassEE, std::vector<float>); //! mass of UnLike sign electron pair
DECLARE_SOA_COLUMN(NElPairLS, nElPairLS, int); //! Number of Like sign electron pair
DECLARE_SOA_COLUMN(NElPairUS, nElPairUS, int); //! Number of UnLike sign electron pair
DECLARE_SOA_COLUMN(IsEmcal, isEmcal, bool); //! electron information
DECLARE_SOA_INDEX_COLUMN(Collision, collision); //! collisioniD of the electron track
DECLARE_SOA_INDEX_COLUMN(Track, track); //! trackid of of the electron track
DECLARE_SOA_COLUMN(EtaTrack, etaTrack, float); //! pseudorapidity of the electron track
DECLARE_SOA_COLUMN(PhiTrack, phiTrack, float); //! azimuth of the electron track
DECLARE_SOA_COLUMN(PtTrack, ptTrack, float); //! transverse momentum of the electron track
DECLARE_SOA_COLUMN(TpcNSigmaElTrack, tpcNSigmaElTrack, float); //! tpcNSigma of the electron track(TPC PID)
DECLARE_SOA_COLUMN(TofNSigmaElTrack, tofNSigmaElTrack, float); //! tofNSigma of the electron track(TOF PID)
DECLARE_SOA_COLUMN(TpcNClsCrRowsTrack, tpcNClsCrRowsTrack, float); //! Number of crossed TPC Rows in electron track
DECLARE_SOA_COLUMN(TpcCrRowsRatioTrack, tpcCrRowsRatioTrack, float); //! Ratio crossed rows over findable clusters electron track
DECLARE_SOA_COLUMN(ItsChi2NClTrack, itsChi2NClTrack, float); //! Chi2 / cluster for the ITS electron track
DECLARE_SOA_COLUMN(TpcChi2NClTrack, tpcChi2NClTrack, float); //! Chi2 / cluster for the TPC electron track
DECLARE_SOA_COLUMN(DcaXYTrack, dcaXYTrack, float); //! dca of the electron in xy direction
DECLARE_SOA_COLUMN(DcaZTrack, dcaZTrack, float); //! dca of the electron in z direction

DECLARE_SOA_COLUMN(M02El, m02El, float); //! M02 of the electron cluster
DECLARE_SOA_COLUMN(EopEl, eopEl, float); //! energy momentum ratio of the electron
DECLARE_SOA_COLUMN(LSMassEE, lSMassEE, std::vector<float>); //! mass of the Like sign electron pair
DECLARE_SOA_COLUMN(ULSMassEE, uLSMassEE, std::vector<float>); //! mass of UnLike sign electron pair
DECLARE_SOA_COLUMN(NElPairLS, nElPairLS, int); //! Number of Like sign electron pair
DECLARE_SOA_COLUMN(NElPairUS, nElPairUS, int); //! Number of UnLike sign electron pair
DECLARE_SOA_COLUMN(IsEmcal, isEmcal, bool); //! electron information
} // namespace hf_corr_sel_electron

DECLARE_SOA_TABLE(HfCorrSelEl, "AOD", "HfCORRSELEL", //! Electron Informations
Expand All @@ -101,6 +110,14 @@ DECLARE_SOA_TABLE(HfCorrSelEl, "AOD", "HfCORRSELEL", //! Electron Informations
hf_corr_sel_electron::PtTrack,
hf_corr_sel_electron::TpcNSigmaElTrack,
hf_corr_sel_electron::TofNSigmaElTrack,
hf_corr_sel_electron::TpcNClsCrRowsTrack,
hf_corr_sel_electron::TpcCrRowsRatioTrack,
hf_corr_sel_electron::ItsChi2NClTrack,
hf_corr_sel_electron::TpcChi2NClTrack,
hf_corr_sel_electron::DcaXYTrack,
hf_corr_sel_electron::DcaZTrack,
hf_corr_sel_electron::EopEl,
hf_corr_sel_electron::M02El,
hf_corr_sel_electron::LSMassEE,
hf_corr_sel_electron::ULSMassEE,
hf_corr_sel_electron::NElPairLS,
Expand Down
Loading
Loading