Skip to content

Commit 2bdb511

Browse files
jikim1290alibuild
andauthored
[PWGLF] update v0v0 selections (#10856)
Co-authored-by: ALICE Action Bot <alibuild@cern.ch>
1 parent ad73e61 commit 2bdb511

File tree

1 file changed

+32
-26
lines changed

1 file changed

+32
-26
lines changed

PWGLF/Tasks/Strangeness/lambdalambda.cxx

Lines changed: 32 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -118,11 +118,16 @@ struct lambdalambda {
118118
Configurable<float> cfgV0V0RapMax{"cfgV0V0RapMax", 0.5, "rapidity selection for V0V0"};
119119

120120
Configurable<bool> cfgV0V0Sel{"cfgV0V0Sel", false, "application of V0V0 selections"};
121-
Configurable<float> cfgV0V0Radius{"cfgV0V0Radius", 1.0, "maximum radius of v0v0"};
122-
Configurable<float> cfgV0V0CPA{"cfgV0V0CPA", 0.6, "minimum CPA of v0v0"};
123-
Configurable<float> cfgV0V0Distance{"cfgV0V0Distance", 1, "minimum distance of v0v0"};
124-
Configurable<float> cfgV0V0DCAR{"cfgV0V0DCAR", 1.0, "maximum DCA of v0v0 R"};
125-
Configurable<float> cfgV0V0DCAZ{"cfgV0V0DCAZ", 1.0, "maximum DCA of v0v0 Z"};
121+
122+
Configurable<float> cfgV0V0RadiusMin{"cfgV0V0RadiusMin", 1.0, "maximum radius of v0v0"};
123+
Configurable<float> cfgV0V0CPAMin{"cfgV0V0CPAMin", 0.6, "minimum CPA of v0v0"};
124+
Configurable<float> cfgV0V0DistanceMin{"cfgV0V0DistanceMin", 1, "minimum distance of v0v0"};
125+
Configurable<float> cfgV0V0DCAMin{"cfgV0V0DCAMin", 1.0, "maximum DCA of v0v0 R"};
126+
127+
Configurable<float> cfgV0V0RadiusMax{"cfgV0V0RadiusMax", 1.0, "maximum radius of v0v0"};
128+
Configurable<float> cfgV0V0CPAMax{"cfgV0V0CPAMax", 0.6, "maximum CPA of v0v0"};
129+
Configurable<float> cfgV0V0DistanceMax{"cfgV0V0DistanceMax", 1, "maximum distance of v0v0"};
130+
Configurable<float> cfgV0V0DCAMax{"cfgV0V0DCAMax", 1.0, "maximum DCA of v0v0 R"};
126131

127132
Configurable<bool> cfgEffCor{"cfgEffCor", false, "flag to apply efficiency correction"};
128133
Configurable<std::string> cfgEffCorPath{"cfgEffCorPath", "", "path for pseudo efficiency correction"};
@@ -289,22 +294,28 @@ struct lambdalambda {
289294
template <typename V01, typename V02>
290295
bool isSelectedV0V0(V01 const& v01, V02 const& v02)
291296
{
292-
if (std::sqrt(getDCAofV0V0(v01, v02).perp2()) > cfgV0V0DCAR)
297+
if (getDCAofV0V0(v01, v02) > cfgV0V0DCAMax)
298+
return false;
299+
if (getDCAofV0V0(v01, v02) < cfgV0V0DCAMin)
293300
return false;
294-
if (getDCAofV0V0(v01, v02).z() > cfgV0V0DCAZ)
301+
if (getCPA(v01, v02) > cfgV0V0CPAMax)
295302
return false;
296-
if (getCPA(v01, v02) < cfgV0V0CPA)
303+
if (getCPA(v01, v02) < cfgV0V0CPAMin)
297304
return false;
298-
if (getDistance(v01, v02) > cfgV0V0Distance)
305+
if (getDistance(v01, v02) > cfgV0V0DistanceMax)
299306
return false;
300-
if (getRadius(v01, v02) > cfgV0V0Radius)
307+
if (getDistance(v01, v02) < cfgV0V0DistanceMin)
308+
return false;
309+
if (getRadius(v01, v02) > cfgV0V0RadiusMax)
310+
return false;
311+
if (getRadius(v01, v02) < cfgV0V0RadiusMin)
301312
return false;
302313

303314
return true;
304315
}
305316

306317
template <typename V01, typename V02>
307-
ROOT::Math::XYZVector getDCAofV0V0(V01 const& v01, V02 const& v02)
318+
float getDCAofV0V0(V01 const& v01, V02 const& v02)
308319
{
309320
ROOT::Math::XYZVector v01pos, v02pos, v01mom, v02mom;
310321
v01pos.SetXYZ(v01.x(), v01.y(), v01.z());
@@ -315,7 +326,7 @@ struct lambdalambda {
315326
ROOT::Math::XYZVector posdiff = v02pos - v01pos;
316327
ROOT::Math::XYZVector cross = v01mom.Cross(v02mom);
317328
ROOT::Math::XYZVector dcaVec = (posdiff.Dot(cross) / cross.Mag2()) * cross;
318-
return dcaVec;
329+
return std::sqrt(dcaVec.Mag2());
319330
}
320331

321332
template <typename V01, typename V02>
@@ -445,32 +456,27 @@ struct lambdalambda {
445456
histos.fill(HIST("Radius_V0V0_full"), RecoV0V0.M(), RecoV0V0.Pt(), getRadius(v01, v02), V01Tag + V02Tag);
446457
histos.fill(HIST("CPA_V0V0_full"), RecoV0V0.M(), RecoV0V0.Pt(), getCPA(v01, v02), V01Tag + V02Tag);
447458
histos.fill(HIST("Distance_V0V0_full"), RecoV0V0.M(), RecoV0V0.Pt(), getDistance(v01, v02), V01Tag + V02Tag);
448-
histos.fill(HIST("DCAR_V0V0_full"), RecoV0V0.M(), RecoV0V0.Pt(), std::sqrt(getDCAofV0V0(v01, v02).perp2()), V01Tag + V02Tag);
449-
histos.fill(HIST("DCAZ_V0V0_full"), RecoV0V0.M(), RecoV0V0.Pt(), getDCAofV0V0(v01, v02).z(), V01Tag + V02Tag);
459+
histos.fill(HIST("DCA_V0V0_full"), RecoV0V0.M(), RecoV0V0.Pt(), getDCAofV0V0(v01, v02), V01Tag + V02Tag);
450460

451461
if (isSelectedV0V0(v01, v02)) {
452462
histos.fill(HIST("Radius_V0V0_sel"), RecoV0V0.M(), RecoV0V0.Pt(), getRadius(v01, v02), V01Tag + V02Tag);
453463
histos.fill(HIST("CPA_V0V0_sel"), RecoV0V0.M(), RecoV0V0.Pt(), getCPA(v01, v02), V01Tag + V02Tag);
454464
histos.fill(HIST("Distance_V0V0_sel"), RecoV0V0.M(), RecoV0V0.Pt(), getDistance(v01, v02), V01Tag + V02Tag);
455-
histos.fill(HIST("DCAR_V0V0_sel"), RecoV0V0.M(), RecoV0V0.Pt(), std::sqrt(getDCAofV0V0(v01, v02).perp2()), V01Tag + V02Tag);
456-
histos.fill(HIST("DCAZ_V0V0_sel"), RecoV0V0.M(), RecoV0V0.Pt(), getDCAofV0V0(v01, v02).z(), V01Tag + V02Tag);
465+
histos.fill(HIST("DCA_V0V0_sel"), RecoV0V0.M(), RecoV0V0.Pt(), getDCAofV0V0(v01, v02), V01Tag + V02Tag);
457466
IsSelected = true;
458467
}
459468

460469
if (doprocessDataSame) {
461470
histos.fill(HIST("h_InvMass_same"), RecoV0V0.M(), RecoV0V0.Pt(), centrality, V01Tag + V02Tag);
462471
if (cfgV0V0Sel && isSelectedV0V0(v01, v02)) {
463472
histos.fill(HIST("h_InvMass_same_sel"), RecoV0V0.M(), RecoV0V0.Pt(), centrality, V01Tag + V02Tag);
464-
}
465-
if (cfgRotBkg) {
466-
for (int nr = 0; nr < cfgNRotBkg; nr++) {
467-
auto RanPhi = rn->Uniform(o2::constants::math::PI * 5.0 / 6.0, o2::constants::math::PI * 7.0 / 6.0);
468-
RanPhi += RecoV02.Phi();
469-
RecoV02Rot = ROOT::Math::PxPyPzMVector(RecoV02.Pt() * std::cos(RanPhi), RecoV02.Pt() * std::sin(RanPhi), RecoV02.Pz(), RecoV02.M());
470-
RecoV0V0Rot = RecoV01 + RecoV02Rot;
471-
histos.fill(HIST("h_InvMass_rot"), RecoV0V0Rot.M(), RecoV0V0Rot.Pt(), centrality, V01Tag + V02Tag);
472-
if (cfgV0V0Sel && isSelectedV0V0(v01, v02)) {
473-
histos.fill(HIST("h_InvMass_rot_sel"), RecoV0V0Rot.M(), RecoV0V0Rot.Pt(), centrality, V01Tag + V02Tag);
473+
if (cfgRotBkg) {
474+
for (int nr = 0; nr < cfgNRotBkg; nr++) {
475+
auto RanPhi = rn->Uniform(o2::constants::math::PI * 5.0 / 6.0, o2::constants::math::PI * 7.0 / 6.0);
476+
RanPhi += RecoV02.Phi();
477+
RecoV02Rot = ROOT::Math::PxPyPzMVector(RecoV02.Pt() * std::cos(RanPhi), RecoV02.Pt() * std::sin(RanPhi), RecoV02.Pz(), RecoV02.M());
478+
RecoV0V0Rot = RecoV01 + RecoV02Rot;
479+
histos.fill(HIST("h_InvMass_rot"), RecoV0V0Rot.M(), RecoV0V0Rot.Pt(), centrality, V01Tag + V02Tag);
474480
}
475481
}
476482
}

0 commit comments

Comments
 (0)