Skip to content

Commit d42e00f

Browse files
committed
Add asymmetry cut
1 parent 28130e4 commit d42e00f

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

PWGEM/PhotonMeson/Tasks/photonhbt.cxx

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,7 @@ struct photonhbt {
278278
Configurable<float> cfgEllipseSigEta{"cfgEllipseSigEta", 0.02f, "sigma_eta for ellipse cut"};
279279
Configurable<float> cfgEllipseSigPhi{"cfgEllipseSigPhi", 0.02f, "sigma_phi for ellipse cut"};
280280
Configurable<float> cfgEllipseR2{"cfgEllipseR2", 1.0f, "R^2 threshold: reject if ellipse value < R^2"};
281+
Configurable<float> cfgMaxAsymmetry{"cfgMaxAsymmetry", -1.f, "max |p_{T, 1} - p_{T, 2}|/(p_{T, 1} + p_{T, 2}) asymmetry cut"};
281282
} ggpaircuts;
282283

283284
EMPhotonEventCut fEMEventCut;
@@ -378,6 +379,16 @@ struct photonhbt {
378379
return true;
379380
}
380381

382+
inline bool passAsymmetryCut(float pt1, float pt2) const
383+
{
384+
if (ggpaircuts.cfgMaxAsymmetry.value < 0.f) // ← .value hinzufügen
385+
return true;
386+
const float sum = pt1 + pt2;
387+
if (sum < 1e-9f)
388+
return false;
389+
return std::fabs(pt1 - pt2) / sum < ggpaircuts.cfgMaxAsymmetry.value; // ← hier auch
390+
}
391+
381392
inline bool passQinvQAGate(float qinv) const
382393
{
383394
const float limit = qaflags.cfgMaxQinvForQA.value;
@@ -1442,7 +1453,10 @@ struct photonhbt {
14421453
if (pos1.trackId() == pos2.trackId() || pos1.trackId() == ele2.trackId() ||
14431454
ele1.trackId() == pos2.trackId() || ele1.trackId() == ele2.trackId())
14441455
continue;
1456+
if (!passAsymmetryCut(g1.pt(), g2.pt()))
1457+
continue;
14451458
auto obs = buildPairQAObservables(g1, g2);
1459+
14461460
if (!obs.valid)
14471461
continue;
14481462
const bool doQA = passQinvQAGate(obs.qinv), doFR = passQinvFullRangeGate(obs.qinv);
@@ -1508,6 +1522,8 @@ struct photonhbt {
15081522
auto poolPhotons = emh1->GetTracksPerCollision(mixID);
15091523
for (const auto& g1 : selectedPhotons)
15101524
for (const auto& g2 : poolPhotons) {
1525+
if (!passAsymmetryCut(g1.pt(), g2.pt()))
1526+
continue;
15111527
auto obs = buildPairQAObservables(g1, g2);
15121528
if (!obs.valid)
15131529
continue;
@@ -1593,6 +1609,8 @@ struct photonhbt {
15931609
auto truthType = classifyPairTruth(mc1, mc2);
15941610
if (truthType == PairTruthType::TrueTrueDistinct && isPi0DaughterPair(mc1, mc2, mcParticles))
15951611
truthType = PairTruthType::Pi0Daughters;
1612+
if (!passAsymmetryCut(g1.pt(), g2.pt()))
1613+
continue;
15961614
auto obs = buildPairQAObservables(g1, g2);
15971615
if (!obs.valid)
15981616
continue;
@@ -1710,7 +1728,10 @@ struct photonhbt {
17101728
auto poolPhotons = emh1->GetTracksPerCollision(mixID);
17111729
for (const auto& g1 : selectedPhotons)
17121730
for (const auto& g2 : poolPhotons) {
1731+
if (!passAsymmetryCut(g1.pt(), g2.pt()))
1732+
continue;
17131733
auto obs = buildPairQAObservables(g1, g2);
1734+
17141735
if (!obs.valid)
17151736
continue;
17161737
const bool doQA = passQinvQAGate(obs.qinv), doFR = passQinvFullRangeGate(obs.qinv);

0 commit comments

Comments
 (0)