Skip to content
Open
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
78 changes: 45 additions & 33 deletions PWGHF/HFL/Tasks/taskElectronWeakBoson.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ struct HfTaskElectronWeakBoson {

Configurable<float> vtxZ{"vtxZ", 10.f, ""};

Configurable<bool> applyTrackSys{"applyTrackSys", false, "apply additional track cuts for systematic study"};
Configurable<float> etaTrMin{"etaTrMin", -1.0f, "minimun track eta"};
Configurable<float> etaTrMax{"etaTrMax", 1.0f, "maximum track eta"};
Configurable<float> etaEmcMax{"etaEmcMax", 0.6f, "maximum track eta"};
Expand Down Expand Up @@ -173,12 +174,12 @@ struct HfTaskElectronWeakBoson {
using SelectedClusters = o2::aod::EMCALClusters;
// PbPb
// using TrackEle = o2::soa::Join<o2::aod::Tracks, o2::aod::FullTracks, o2::aod::TracksExtra, o2::aod::TracksDCA, o2::aod::TrackSelection, o2::aod::pidTPCFullEl>;
using TrackEle = o2::soa::Join<o2::aod::Tracks, o2::aod::TracksCov, o2::aod::FullTracks, o2::aod::TracksExtra, o2::aod::TracksDCA, o2::aod::TrackSelection, o2::aod::pidTPCFullEl>;
using TrackEle = o2::soa::Join<o2::aod::Tracks, o2::aod::TracksCov, o2::aod::FullTracks, o2::aod::TracksExtra, o2::aod::TracksDCA, o2::aod::TrackSelection, o2::aod::pidTPCFullEl, o2::aod::pidTPCFullPi>;

// pp
// using TrackEle = o2::soa::Filtered<o2::soa::Join<o2::aod::Tracks, o2::aod::FullTracks, o2::aod::TracksDCA, o2::aod::TrackSelection, o2::aod::pidTPCEl, o2::aod::pidTOFEl>>;

Filter eventFilter = (applySel8 ? (o2::aod::evsel::sel8 == true) : (o2::aod::evsel::sel8 == o2::aod::evsel::sel8)); // FIXME: both sides of overloaded operator are equivalent
Filter eventFilter = ifnode(as<bool>(applySel8), o2::aod::evsel::sel8 == true, true);
Filter posZFilter = (nabs(o2::aod::collision::posZ) < vtxZ);

Filter etafilter = (aod::track::eta < etaTrMax) && (aod::track::eta > etaTrMin);
Expand All @@ -201,6 +202,7 @@ struct HfTaskElectronWeakBoson {
ConfigurableAxis confaxisIsoEnergy{"confaxisIsoEnergy", {255, 0, 2.0}, "E_{iso}"};
ConfigurableAxis confaxisIsoMomentum{"confaxisIsoMomentum", {255, 0, 2.0}, "p_{iso}"};
ConfigurableAxis confaxisIsoTrack{"confaxisIsoTrack", {25, -0.5, 24.5}, "Isolation Track"};
ConfigurableAxis confaxisDedxTrack{"confaxisDedxTrack", {200, -10, 10}, "dEdx"};
ConfigurableAxis confaxisInvMassZgamma{"confaxisInvMassZgamma", {150, 0, 150}, "M_{ee} (GeV/c^{2})"};
ConfigurableAxis confaxisInvMassZ{"confaxisInvMassZ", {130, 20, 150}, "M_{ee} (GeV/c^{2})"};
ConfigurableAxis confaxisZfrag{"confaxisZfrag", {200, 0, 2.0}, "p_{T,h}/p_{T,Z}"};
Expand Down Expand Up @@ -259,7 +261,7 @@ struct HfTaskElectronWeakBoson {
const AxisSpec axisNsigma{100, -5, 5, "N#sigma"};
const AxisSpec axisNsigmaZneg{100, -5, 5, "N#sigma_{pos}"};
const AxisSpec axisNsigmaZpos{100, -5, 5, "N#sigma_{neg}"};
const AxisSpec axisDedx{150, 0, 150, "dEdx"};
const AxisSpec axisDedx{confaxisDedxTrack, "dEdx"};
const AxisSpec axisE{nBinsE, 0, binEmax, "Energy"};
const AxisSpec axisM02{100, 0, 1, "M02"};
const AxisSpec axisM02neg{100, 0, 1, "M02(neg)"};
Expand Down Expand Up @@ -307,9 +309,10 @@ struct HfTaskElectronWeakBoson {
registry.add("hEventCounterInit", "hEventCounterInit", kTH1D, {axisCounter});
registry.add("hEventCounter", "hEventCounter", kTH1D, {axisCounter});
registry.add("hCentrality", "Centrality distribution", kTH1D, {axisCentrality});
registry.add("hCentMultCorr", "Centrality distribution", kTH2D, {{axisCentrality}, {axisMultFT0}});
registry.add("hMultPV", "multiplicity distribution for PV", kTH1D, {axisMultPV});
registry.add("hMultFT0", "multiplicity distribution for FT0", kTH1D, {axisMultFT0});
registry.add("hCentMultFT0Corr", "Centrality distribution vs. FT0 Mult", kTH2D, {{axisCentrality}, {axisMultFT0}});
registry.add("hCentMultPVCorr", "Centrality distribution vs. PV Mult", kTH2D, {{axisCentrality}, {axisMultPV}});
registry.add("hMultPV", "multiplicity distribution for PV", kTH2D, {{axisZvtx}, {axisMultPV}});
registry.add("hMultFT0", "multiplicity distribution for FT0", kTH2D, {{axisZvtx}, {axisMultFT0}});
registry.add("hMultFT0PV", "multiplicity distribution", kTH2D, {{axisMultFT0}, {axisMultPV}});
registry.add("hITSchi2", "ITS #chi^{2}", kTH1F, {axisChi2});
registry.add("hTPCchi2", "TPC #chi^{2}", kTH1F, {axisChi2});
Expand All @@ -320,6 +323,7 @@ struct HfTaskElectronWeakBoson {
registry.add("hPt", "track pt", kTH1F, {axisPt});
registry.add("hTPCNsigma", "TPC electron Nsigma", kTH2F, {{axisPt}, {axisNsigma}});
registry.add("hEnergy", "EMC cluster energy", kTH1F, {axisE});
registry.add("hEnergyMult", "EMC cluster energy vs Multiplicity", kTH2F, {{axisCentrality}, {axisE}});
registry.add("hEnergyNcell", "EMC cluster energy and cell", kTH2F, {{axisE}, {axisNcell}});
registry.add("hTrMatchR", "Track EMC Match in radius", kTH2F, {{axisPt}, {axisdR}});
registry.add("hTrMatch_mim", "Track EMC Match minimu minimumm", kTH2F, {{axisdPhi}, {axisdEta}});
Expand All @@ -341,7 +345,7 @@ struct HfTaskElectronWeakBoson {
registry.add("hTHnTrMatch", "Track EMC Match", HistType::kTHnSparseF, {axisPt, axisdPhi, axisdEta});

// Z-hadron correlation histograms
registry.add("hZHadronDphi", "Z-hadron #Delta#phi correlation", HistType::kTHnSparseF, {axisCentrality, axisSign, axisPtZ, axisDPhiZh, axisDEtaZh, axisZfrag, axisPtHadron});
registry.add("hZHadronDphi", "Z-hadron #Delta#phi correlation", HistType::kTHnSparseF, {axisCentrality, axisSign, axisPtZ, axisDPhiZh, axisDEtaZh, axisZfrag, axisPtHadron, axisDedx});
registry.add("hZptSpectrum", "Z boson p_{T} spectrum", kTH2F, {{axisSign}, {axisPtZ}});

// hisotgram for EMCal trigger
Expand Down Expand Up @@ -506,10 +510,10 @@ struct HfTaskElectronWeakBoson {
registry.fill(HIST("hInvMassZee"), centrality, track.sign() * charge, kfpIsoEle.GetPt(), invMassEE);

// reco by KFparticle
const KFParticle* electronPairs[2] = {&kfpIsoEle, &kfpAssEle};
std::array<const KFParticle*, 2> electronPairs = {&kfpIsoEle, &kfpAssEle};
KFParticle zeeKF;
zeeKF.SetConstructMethod(kfConstructMethod);
zeeKF.Construct(electronPairs, 2);
zeeKF.Construct(electronPairs.data(), 2);
// LOG(info) << "Invarimass cal by KF particle Chi2/NDF = " << zeeKF.GetChi2()/zeeKF.GetNDF();
float const chiSqNdf = zeeKF.GetChi2() / zeeKF.GetNDF();
if (zeeKF.GetNDF() < 1) {
Expand Down Expand Up @@ -610,18 +614,21 @@ struct HfTaskElectronWeakBoson {
if (centrality < centralityMin || centrality > centralityMax) {
return;
}
registry.fill(HIST("hCentMultCorr"), centrality, collision.multFT0M());
registry.fill(HIST("hCentMultFT0Corr"), centrality, collision.multFT0M());
registry.fill(HIST("hCentMultPVCorr"), centrality, collision.multNTracksPV());
}

if (enableMultiplicityFT0MAnalysis || enableMultiplicityPVAnalysis) {
if (enableMultiplicityFT0MAnalysis)
if (enableMultiplicityFT0MAnalysis) {
centrality = collision.multFT0M();
if (enableMultiplicityPVAnalysis)
}
if (enableMultiplicityPVAnalysis) {
centrality = collision.multNTracksPV();
}
// LOG(info) << "raw mult PV = " << collision.multNTracksPV();
// LOG(info) << "raw mult FT0M = " << collision.multFT0M();
registry.fill(HIST("hMultPV"), collision.multNTracksPV());
registry.fill(HIST("hMultFT0"), collision.multFT0M());
registry.fill(HIST("hMultPV"), collision.posZ(), collision.multNTracksPV());
registry.fill(HIST("hMultFT0"), collision.posZ(), collision.multFT0M());
registry.fill(HIST("hMultFT0PV"), collision.multFT0M(), collision.multNTracksPV());
}

Expand All @@ -641,28 +648,32 @@ struct HfTaskElectronWeakBoson {
// track loop
for (const auto& track : tracks) {

if (std::abs(track.eta()) > etaTrMax) {
continue;
}
if (track.tpcNClsCrossedRows() < nclcrossTpcMin) {
continue;
}
if (std::abs(track.dcaXY()) > dcaxyMax) {
if (!track.isGlobalTrackWoPtEta()) {
continue;
}
if (track.itsChi2NCl() > chi2ItsMax) {
continue;
}
if (track.tpcChi2NCl() > chi2TpcMax) {
continue;
}
if (track.tpcNClsFound() < nclTpcMin) {
if (std::abs(track.eta()) > etaTrMax) {
continue;
}
if (track.itsNCls() < nclItsMin) {
continue;
if (applyTrackSys) {
if (track.tpcNClsCrossedRows() < nclcrossTpcMin) {
continue;
}
if (std::abs(track.dcaXY()) > dcaxyMax) {
continue;
}
if (track.itsChi2NCl() > chi2ItsMax) {
continue;
}
if (track.tpcChi2NCl() > chi2TpcMax) {
continue;
}
if (track.tpcNClsFound() < nclTpcMin) {
continue;
}
if (track.itsNCls() < nclItsMin) {
continue;
}
}

registry.fill(HIST("hEta"), track.eta());
registry.fill(HIST("hITSchi2"), track.itsChi2NCl());
registry.fill(HIST("hTPCchi2"), track.tpcChi2NCl());
Expand All @@ -689,7 +700,7 @@ struct HfTaskElectronWeakBoson {
eop,
isoEnergy,
isoMomentum,
track.tpcNSigmaEl(),
track.tpcNSigmaPi() * track.sign(),
m02,
trackCount,
track.tpcNClsCrossedRows(),
Expand Down Expand Up @@ -752,6 +763,7 @@ struct HfTaskElectronWeakBoson {
registry.fill(HIST("hTHnTrMatch"), match.track_as<TrackEle>().pt(), dPhi, dEta);
registry.fill(HIST("hEMCtime"), timeEmc);
registry.fill(HIST("hEnergy"), energyEmc);
registry.fill(HIST("hEnergyMult"), centrality, energyEmc);

if (std::abs(dPhi) > rMatchMax || std::abs(dEta) > rMatchMax) {
continue;
Expand Down Expand Up @@ -867,7 +879,7 @@ struct HfTaskElectronWeakBoson {
double const deltaPhi = RecoDecay::constrainAngle(trackAss.phi - zBoson.phi, -o2::constants::math::PIHalf);
double const ptRatio = trackAss.pt / zBoson.pt;
double const deltaEta = zBoson.eta - trackAss.eta;
registry.fill(HIST("hZHadronDphi"), centrality, zBoson.charge, zBoson.pt, deltaPhi, deltaEta, ptRatio, trackAss.pt);
registry.fill(HIST("hZHadronDphi"), centrality, zBoson.charge, zBoson.pt, deltaPhi, deltaEta, ptRatio, trackAss.pt, trackAss.dedxTrk);
}
}
} // end of Z-hadron correlation
Expand Down
Loading