Skip to content

Commit ec18869

Browse files
committed
updated to Z->ee trig. study
1 parent 4497699 commit ec18869

File tree

1 file changed

+50
-12
lines changed

1 file changed

+50
-12
lines changed

PWGHF/HFL/Tasks/taskElectronWeakBoson.cxx

Lines changed: 50 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ struct HfTaskElectronWeakBoson {
104104

105105
Configurable<float> rIsolation{"rIsolation", 0.3, "cone radius for isolation cut"};
106106
Configurable<float> energyIsolationMax{"energyIsolationMax", 0.1, "isolation cut on energy"};
107+
Configurable<float> momentumIsolationMax{"momentumIsolationMax", 0.1, "isolation cut on momentum"};
107108
Configurable<int> trackIsolationMax{"trackIsolationMax", 3, "Maximum number of tracks in isolation cone"};
108109

109110
Configurable<float> massZMin{"massZMin", 60.0, "Minimum Z mass (GeV/c^2)"};
@@ -236,18 +237,18 @@ struct HfTaskElectronWeakBoson {
236237
const AxisSpec axisNcell{50, 0.0, 50.0, "Ncell"};
237238
const AxisSpec axisPhi{350, 0, 7, "Phi"};
238239
const AxisSpec axisEop{200, 0, 2, "E/p"};
239-
const AxisSpec axisEopZneg{200, 0, 2, "E/p neg"};
240-
const AxisSpec axisEopZpos{200, 0, 2, "E/p pos"};
240+
const AxisSpec axisEopZneg{300, -0.01, 1.49, "E/p neg"};
241+
const AxisSpec axisEopZpos{300, -0.01, 1.49, "E/p pos"};
241242
const AxisSpec axisChi2{250, 0.0, 25.0, "#chi^{2}"};
242243
const AxisSpec axisCluster{100, 0.0, 200.0, "counts"};
243244
const AxisSpec axisITSNCls{10, 0.0, 10, "counts"};
244245
const AxisSpec axisEMCtime{100, -50.0, 50, "EMC time"};
245246
const AxisSpec axisIsoEnergy{100, 0, 1.0, "E_{iso}"};
246-
const AxisSpec axisIsoEnergyZneg{100, 0, 1.0, "E_{iso,neg}"};
247-
const AxisSpec axisIsoEnergyZpos{100, 0, 1.0, "E_{iso,pos}"};
247+
const AxisSpec axisIsoEnergyZneg{255, 0, 1.5, "E_{iso,neg}"};
248+
const AxisSpec axisIsoEnergyZpos{255, 0, 1.5, "E_{iso,pos}"};
248249
const AxisSpec axisIsoMomentum{100, 0, 10.0, "Isolation momentum(GeV/C)"};
249-
const AxisSpec axisIsoMomentumZneg{100, 0, 10.0, "p_{iso,neg}"};
250-
const AxisSpec axisIsoMomentumZpos{100, 0, 10.0, "p_{iso,pos}"};
250+
const AxisSpec axisIsoMomentumZneg{255, 0, 2.0, "p_{iso,neg}"};
251+
const AxisSpec axisIsoMomentumZpos{255, 0, 2.0, "p_{iso,pos}"};
251252
const AxisSpec axisIsoTrack{25, -0.5, 24.5, "Isolation Track"};
252253
const AxisSpec axisIsoTrackZneg{25, -0.5, 24.5, "N_{isotrk,neg}"};
253254
const AxisSpec axisIsoTrackZpos{25, -0.5, 24.5, "N_{isotrk,pos}"};
@@ -289,7 +290,8 @@ struct HfTaskElectronWeakBoson {
289290
registry.add("hInvMassZee", "invariant mass for Z ULS pair", HistType::kTHnSparseF, {axisCentrality, axisSign, axisPt, axisInvMassZgamma});
290291
registry.add("hKfInvMassZee", "invariant mass for Z ULS pair KFp", HistType::kTHnSparseF, {axisCentrality, axisSign, axisPt, axisInvMassZgamma});
291292
registry.add("hInvMassZeeQA", "QA for invariant mass for Z", HistType::kTHnSparseF, {axisInvMassZ, axisPtZneg, axisPtZpos, axisDCAxyneg, axisDCAxypos, axisDCAzpos, axisNclsTPCneg, axisNclsTPCpos, axisNclsITSneg, axisNclsITSpos, axisSectorTPCneg, axisSectorTPCneg, axisEopZneg, axisEopZpos, axisIsoEnergyZneg, axisIsoEnergyZpos, axisIsoMomentumZneg, axisIsoMomentumZpos, axisIsoTrackZneg, axisIsoTrackZpos});
292-
registry.add("hTHnElectrons", "electron info", HistType::kTHnSparseF, {axisPt, axisNsigma, axisM02, axisEop, axisIsoEnergy, axisIsoTrack, axisEta, axisDedx});
293+
registry.add("hInvMassZeeQAbg", "QA for invariant mass for Z", HistType::kTHnSparseF, {axisInvMassZ, axisPtZneg, axisPtZpos, axisDCAxyneg, axisDCAxypos, axisDCAzpos, axisNclsTPCneg, axisNclsTPCpos, axisNclsITSneg, axisNclsITSpos, axisSectorTPCneg, axisSectorTPCneg, axisEopZneg, axisEopZpos, axisIsoEnergyZneg, axisIsoEnergyZpos, axisIsoMomentumZneg, axisIsoMomentumZpos, axisIsoTrackZneg, axisIsoTrackZpos});
294+
registry.add("hTHnElectrons", "electron info", HistType::kTHnSparseF, {axisPt, axisNsigma, axisM02, axisEop, axisIsoEnergy, axisIsoMomentum, axisIsoTrack, axisEta, axisDedx});
293295
registry.add("hTHnTrMatch", "Track EMC Match", HistType::kTHnSparseF, {axisPt, axisdPhi, axisdEta});
294296

295297
// Z-hadron correlation histograms
@@ -390,6 +392,10 @@ struct HfTaskElectronWeakBoson {
390392
if (track.sign() > 0) {
391393
pdgAss = kPositron;
392394
}
395+
auto [trackCount, isoMomentum] = getIsolatedTrack(track.eta(), track.phi(), track.p(), tracks);
396+
if (isoMomentum > momentumIsolationMax) {
397+
continue;
398+
}
393399

394400
KFPTrack kfpTrackAssEle = createKFPTrackFromTrack(track);
395401
KFParticle kfpAssEle(kfpTrackAssEle, pdgAss);
@@ -540,7 +546,7 @@ struct HfTaskElectronWeakBoson {
540546
registry.fill(HIST("hPt"), track.pt());
541547
registry.fill(HIST("hTPCNsigma"), track.p(), track.tpcNSigmaEl());
542548

543-
float eop = 0.0;
549+
float eop = -0.01;
544550
float isoEnergy = 1.0;
545551
// track isolation
546552
auto [trackCount, isoMomentum] = getIsolatedTrack(track.eta(), track.phi(), track.p(), tracks);
@@ -631,7 +637,7 @@ struct HfTaskElectronWeakBoson {
631637
isoEnergy = getIsolatedCluster(cluster, emcClusters);
632638

633639
if (match.track_as<TrackEle>().pt() > ptTHnThresh && isTHnElectron) {
634-
registry.fill(HIST("hTHnElectrons"), match.track_as<TrackEle>().pt(), match.track_as<TrackEle>().tpcNSigmaEl(), m02Emc, eop, isoEnergy, trackCount, track.eta(), track.tpcSignal());
640+
registry.fill(HIST("hTHnElectrons"), match.track_as<TrackEle>().pt(), match.track_as<TrackEle>().tpcNSigmaEl(), m02Emc, eop, isoEnergy, isoMomentum, trackCount, track.eta(), track.tpcSignal());
635641
}
636642
// LOG(info) << "E/p" << eop;
637643
registry.fill(HIST("hEopNsigTPC"), match.track_as<TrackEle>().tpcNSigmaEl(), eop);
@@ -643,7 +649,7 @@ struct HfTaskElectronWeakBoson {
643649
registry.fill(HIST("hEop"), match.track_as<TrackEle>().pt(), eop);
644650
if (eop > eopMin && eop < eopMax && isoEnergy < energyIsolationMax)
645651
isIsolated = true;
646-
if (eop > eopMin && eop < eopMax && trackCount < trackIsolationMax)
652+
if (eop > eopMin && eop < eopMax && trackCount < trackIsolationMax && isoMomentum < momentumIsolationMax)
647653
isIsolatedTr = true;
648654

649655
if (isIsolated && isIsolatedTr) {
@@ -729,6 +735,7 @@ struct HfTaskElectronWeakBoson {
729735
// Z->ee QA
730736
if (enableZeeRecoQA) {
731737
if (selectedElectronsIso.size() > 0 && selectedPositronsIso.size() > 0) {
738+
// signal
732739
for (const auto& trackEle : selectedElectronsIso) {
733740
for (const auto& trackPos : selectedPositronsIso) {
734741
auto child1 = RecoDecayPtEtaPhi::pVector(trackEle.pt, trackEle.eta, trackEle.phi);
@@ -737,12 +744,43 @@ struct HfTaskElectronWeakBoson {
737744
if (invMass > massZMinQA) {
738745
float sectorneg = trackEle.phi / o2::constants::math::SectorSpanRad;
739746
float sectorpos = trackPos.phi / o2::constants::math::SectorSpanRad;
740-
// LOG(info) << "TPC sector= " << sectorneg << " ; " << sectorpos;
741747
registry.fill(HIST("hInvMassZeeQA"), invMass, trackEle.pt, trackPos.pt, trackEle.dcaxyTrk, trackPos.dcaxyTrk, trackPos.dcazTrk, trackEle.nclusterTPC, trackPos.nclusterTPC, trackEle.nclusterITS, trackPos.nclusterITS, sectorneg, sectorpos, trackEle.eop, trackPos.eop, trackEle.energyIso, trackPos.energyIso, trackEle.momIso, trackPos.momIso, trackEle.ntrackIso, trackPos.ntrackIso);
742748
}
743749
}
744750
}
745-
}
751+
// bg e-e-
752+
for (const auto& trackEle : selectedElectronsIso) {
753+
for (const auto& trackEle2 : selectedElectronsIso) {
754+
if (trackEle.pt == trackEle2.pt) {
755+
continue;
756+
}
757+
auto child1 = RecoDecayPtEtaPhi::pVector(trackEle.pt, trackEle.eta, trackEle.phi);
758+
auto child2 = RecoDecayPtEtaPhi::pVector(trackEle2.pt, trackEle2.eta, trackEle2.phi);
759+
double invMass = RecoDecay::m(std::array{child1, child2}, std::array{o2::constants::physics::MassElectron, o2::constants::physics::MassElectron});
760+
if (invMass > massZMinQA) {
761+
float sectorneg = trackEle.phi / o2::constants::math::SectorSpanRad;
762+
float sectorpos = trackEle2.phi / o2::constants::math::SectorSpanRad;
763+
registry.fill(HIST("hInvMassZeeQAbg"), invMass, trackEle.pt, trackEle2.pt, trackEle.dcaxyTrk, trackEle2.dcaxyTrk, trackEle2.dcazTrk, trackEle.nclusterTPC, trackEle2.nclusterTPC, trackEle.nclusterITS, trackEle2.nclusterITS, sectorneg, sectorpos, trackEle.eop, trackEle2.eop, trackEle.energyIso, trackEle2.energyIso, trackEle.momIso, trackEle2.momIso, trackEle.ntrackIso, trackEle2.ntrackIso);
764+
}
765+
}
766+
}
767+
// bg e+e+
768+
for (const auto& trackPos : selectedPositronsIso) {
769+
for (const auto& trackPos2 : selectedPositronsIso) {
770+
if (trackPos.pt == trackPos2.pt) {
771+
continue;
772+
}
773+
auto child1 = RecoDecayPtEtaPhi::pVector(trackPos.pt, trackPos.eta, trackPos.phi);
774+
auto child2 = RecoDecayPtEtaPhi::pVector(trackPos2.pt, trackPos2.eta, trackPos2.phi);
775+
double invMass = RecoDecay::m(std::array{child1, child2}, std::array{o2::constants::physics::MassElectron, o2::constants::physics::MassElectron});
776+
if (invMass > massZMinQA) {
777+
float sectorneg = trackPos.phi / o2::constants::math::SectorSpanRad;
778+
float sectorpos = trackPos2.phi / o2::constants::math::SectorSpanRad;
779+
registry.fill(HIST("hInvMassZeeQAbg"), invMass, trackPos.pt, trackPos2.pt, trackPos.dcaxyTrk, trackPos2.dcaxyTrk, trackPos2.dcazTrk, trackPos.nclusterTPC, trackPos2.nclusterTPC, trackPos.nclusterITS, trackPos2.nclusterITS, sectorneg, sectorpos, trackPos.eop, trackPos2.eop, trackPos.energyIso, trackPos2.energyIso, trackPos.momIso, trackPos2.momIso, trackPos.ntrackIso, trackPos2.ntrackIso);
780+
}
781+
}
782+
}
783+
} // check arrays aren't empty
746784
} // end of Z->ee QA
747785
} // process
748786
}; // struct HfTaskElectronWeakBoson

0 commit comments

Comments
 (0)