Skip to content

Commit f29db2c

Browse files
zjxiongOvOzjxiongOvO
andauthored
[PWGDQ] update dqefficiency for PbPb analysis (#16017)
Co-authored-by: zjxiongOvO <kausorzjxiong@mail.ustc.edu.cn>
1 parent 0fa88f9 commit f29db2c

4 files changed

Lines changed: 172 additions & 51 deletions

File tree

PWGDQ/Core/HistogramsLibrary.cxx

Lines changed: 32 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,9 @@ void o2::aod::dqhistograms::DefineHistograms(HistogramManager* hm, const char* h
111111
hm->AddHistogram(histClass, "CentFT0C_MultTPC", "CentFT0C vs MultTPC", false, 100, 0., 100., VarManager::kCentFT0C, 100, 0., 50000., VarManager::kMultTPC);
112112
hm->AddHistogram(histClass, "CentFT0C_Run", "Cent FT0C", true, 1, -0.5, 0.5, VarManager::kRunNo, 100, 0., 100., VarManager::kCentFT0C, 1, 0, 1, VarManager::kNothing, "", "", "", VarManager::kNothing, VarManager::kNothing, false, true);
113113
}
114+
if (subGroupStr.Contains("randomplane")) {
115+
hm->AddHistogram(histClass, "random plane angle", "random Psi", false, 100, -TMath::Pi() / 2, TMath::Pi() / 2, VarManager::kRandomPsi2);
116+
}
114117
if (subGroupStr.Contains("mult")) {
115118
if (subGroupStr.Contains("pp")) {
116119
hm->AddHistogram(histClass, "MultTPC", "MultTPC", false, 250, 0.0, 500.0, VarManager::kMultTPC);
@@ -246,6 +249,8 @@ void o2::aod::dqhistograms::DefineHistograms(HistogramManager* hm, const char* h
246249
hm->AddHistogram(histClass, "MCVtxZ_VtxZ", "Vtx Z (MC vs rec)", false, 75, -15.0, 15.0, VarManager::kVtxZ, 75, -15.0, 15.0, VarManager::kMCVtxZ);
247250
hm->AddHistogram(histClass, "MCVtxZ", "Vtx Z (MC)", false, 75, -15.0, 15.0, VarManager::kMCVtxZ);
248251
hm->AddHistogram(histClass, "MCImpPar_CentVZERO", "MC impact param vs CentVZERO", false, 50, 0.0, 100.0, VarManager::kCentVZERO, 20, 0.0, 20.0, VarManager::kMCEventImpParam);
252+
hm->AddHistogram(histClass, "MCEventPlaneAngle", "MC event plane angle", false, 100, -TMath::Pi(), TMath::Pi(), VarManager::kMCEventPlaneAngle);
253+
hm->AddHistogram(histClass, "kMCEventCentrFT0C_CentFT0C", "MC Centrality FT0C vs Centrality FT0C", false, 100, 0.0, 100.0, VarManager::kCentFT0C, 100, 0.0, 100.0, VarManager::kMCEventCentrFT0C);
249254
}
250255
if (subGroupStr.Contains("generator")) {
251256
hm->AddHistogram(histClass, "MCVtxX", "Vtx X", false, 1000, -0.5, 0.5, VarManager::kMCVtxX);
@@ -1161,13 +1166,21 @@ void o2::aod::dqhistograms::DefineHistograms(HistogramManager* hm, const char* h
11611166
hm->AddHistogram(histClass, "Eta_Pt", "", false, 40, -2.0, 2.0, VarManager::kMCEta, 200, 0.0, 20.0, VarManager::kMCPt);
11621167
hm->AddHistogram(histClass, "Phi_Eta", "#phi vs #eta distribution", false, 200, -5.0, 5.0, VarManager::kMCEta, 200, -2. * o2::constants::math::PI, 2. * o2::constants::math::PI, VarManager::kMCPhi);
11631168
if (subGroupStr.Contains("polarization")) {
1164-
int varspTHE[4] = {VarManager::kMCPt, VarManager::kMCCosThetaHE, VarManager::kMCPhiHE, VarManager::kMCPhiTildeHE};
1165-
int varspTCS[4] = {VarManager::kMCPt, VarManager::kMCCosThetaCS, VarManager::kMCPhiCS, VarManager::kMCPhiTildeCS};
1166-
int bins[4] = {20, 20, 20, 20};
1167-
double xmin[4] = {0., -1., 0., 0.};
1168-
double xmax[4] = {20., 1., 2. * o2::constants::math::PI, 2. * o2::constants::math::PI};
1169-
hm->AddHistogram(histClass, "Pt_cosThetaHE_phiHE_phiTildeHE", "", 4, varspTHE, bins, xmin, xmax, 0, -1, kFALSE);
1170-
hm->AddHistogram(histClass, "Pt_cosThetaCS_phiCS_phiTildeCS", "", 4, varspTCS, bins, xmin, xmax, 0, -1, kFALSE);
1169+
if (subGroupStr.Contains("pp")) {
1170+
int varspTHE[4] = {VarManager::kMCPt, VarManager::kMCCosThetaHE, VarManager::kMCPhiHE, VarManager::kMCPhiTildeHE};
1171+
int varspTCS[4] = {VarManager::kMCPt, VarManager::kMCCosThetaCS, VarManager::kMCPhiCS, VarManager::kMCPhiTildeCS};
1172+
int bins[4] = {20, 20, 20, 20};
1173+
double xmin[4] = {0., -1., 0., 0.};
1174+
double xmax[4] = {20., 1., 2. * o2::constants::math::PI, 2. * o2::constants::math::PI};
1175+
hm->AddHistogram(histClass, "Pt_cosThetaHE_phiHE_phiTildeHE", "", 4, varspTHE, bins, xmin, xmax, 0, -1, kFALSE);
1176+
hm->AddHistogram(histClass, "Pt_cosThetaCS_phiCS_phiTildeCS", "", 4, varspTCS, bins, xmin, xmax, 0, -1, kFALSE);
1177+
}
1178+
if (subGroupStr.Contains("pbpb")) {
1179+
hm->AddHistogram(histClass, "CosThetaStarRandom", "", false, 100, -1.0, 1.0, VarManager::kCosThetaStarRandom);
1180+
hm->AddHistogram(histClass, "Pt_Cent_CosThetaStarRandom", "", false, 20, 0.0, 20.0, VarManager::kMCPt, 9, 0., 90., VarManager::kMCEventCentrFT0C, 20, -1.0, 1.0, VarManager::kCosThetaStarRandom);
1181+
hm->AddHistogram(histClass, "Cos2ThetaStarRandom_Mass", "", true, 50, 2.0, 4.0, VarManager::kMCMass, 100, -1.0, 1.0, VarManager::kCos2ThetaStarRandom);
1182+
hm->AddHistogram(histClass, "CosThetaStar", "", false, 100, -1.0, 1.0, VarManager::kMCCosThetaStar);
1183+
}
11711184
}
11721185
}
11731186
if (!groupStr.CompareTo("mctruth_quad")) {
@@ -1348,12 +1361,20 @@ void o2::aod::dqhistograms::DefineHistograms(HistogramManager* hm, const char* h
13481361
}
13491362
}
13501363
if (subGroupStr.Contains("globalpolarization")) {
1351-
hm->AddHistogram(histClass, "CosThetaStarTPC", "", false, 100, -1.0, 1.0, VarManager::kCosThetaStarTPC);
1352-
hm->AddHistogram(histClass, "CosThetaStarFT0A", "", false, 100, -1.0, 1.0, VarManager::kCosThetaStarFT0A);
1353-
hm->AddHistogram(histClass, "CosThetaStarFT0C", "", false, 100, -1.0, 1.0, VarManager::kCosThetaStarFT0C);
13541364
hm->AddHistogram(histClass, "CosThetaStarRandom", "", false, 100, -1.0, 1.0, VarManager::kCosThetaStarRandom);
1355-
hm->AddHistogram(histClass, "Cos2ThetaStarFT0C_Mass", "", true, 50, 2.0, 4.0, VarManager::kMass, 100, -1.0, 1.0, VarManager::kCos2ThetaStarFT0C);
13561365
hm->AddHistogram(histClass, "Cos2ThetaStarRandom_Mass", "", true, 50, 2.0, 4.0, VarManager::kMass, 100, -1.0, 1.0, VarManager::kCos2ThetaStarRandom);
1366+
if (subGroupStr.Contains("tpc")) {
1367+
hm->AddHistogram(histClass, "CosThetaStarTPC", "", false, 100, -1.0, 1.0, VarManager::kCosThetaStarTPC);
1368+
}
1369+
if (subGroupStr.Contains("ft0")) {
1370+
hm->AddHistogram(histClass, "CosThetaStarFT0A", "", false, 100, -1.0, 1.0, VarManager::kCosThetaStarFT0A);
1371+
hm->AddHistogram(histClass, "CosThetaStarFT0C", "", false, 100, -1.0, 1.0, VarManager::kCosThetaStarFT0C);
1372+
hm->AddHistogram(histClass, "Cos2ThetaStarFT0C_Mass", "", true, 50, 2.0, 4.0, VarManager::kMass, 100, -1.0, 1.0, VarManager::kCos2ThetaStarFT0C);
1373+
}
1374+
if (subGroupStr.Contains("mc")) {
1375+
hm->AddHistogram(histClass, "EventPlaneAngle", "", false, 100, -TMath::Pi(), TMath::Pi(), VarManager::kMCEventPlaneAngle);
1376+
hm->AddHistogram(histClass, "CosThetaStarMC", "", false, 100, -1.0, 1.0, VarManager::kMCCosThetaStar);
1377+
}
13571378
}
13581379
if (subGroupStr.Contains("upsilon")) {
13591380
hm->AddHistogram(histClass, "MassUpsilon_Pt", "", false, 500, 7.0, 12.0, VarManager::kMass, 400, 0.0, 40.0, VarManager::kPt);

PWGDQ/Core/VarManager.cxx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -672,6 +672,7 @@ void VarManager::SetDefaultVarNames()
672672
fgVariableNames[kMCEventTime] = "MC event time";
673673
fgVariableNames[kMCEventWeight] = "MC event weight";
674674
fgVariableNames[kMCEventImpParam] = "MC impact parameter";
675+
fgVariableNames[kMCEventPlaneAngle] = "MC event plane angle";
675676
fgVariableNames[kMCEventCentrFT0C] = "MC Centrality FT0C";
676677
fgVariableNames[kMultMCNParticlesEta05] = "MC Multiplicity Central Barrel for |eta| < 0.5";
677678
fgVariableNames[kMultMCNParticlesEta08] = "MC Multiplicity Central Barrel for |eta| < 0.8";
@@ -684,6 +685,7 @@ void VarManager::SetDefaultVarNames()
684685
fgVariableUnits[kMCEventTime] = ""; // TODO: add proper unit
685686
fgVariableUnits[kMCEventWeight] = "";
686687
fgVariableUnits[kMCEventImpParam] = "b";
688+
fgVariableUnits[kMCEventPlaneAngle] = "";
687689
fgVariableUnits[kMCEventCentrFT0C] = "%";
688690
fgVariableUnits[kMultMCNParticlesEta05] = "Multiplicity_eta05";
689691
fgVariableUnits[kMultMCNParticlesEta08] = "Multiplicity_eta08";
@@ -1531,6 +1533,8 @@ void VarManager::SetDefaultVarNames()
15311533
fgVariableUnits[kCosThetaStarRandom] = "";
15321534
fgVariableNames[kCos2ThetaStarRandom] = "cos^{2}#it{#theta}^{*}_{Random}";
15331535
fgVariableUnits[kCos2ThetaStarRandom] = "";
1536+
fgVariableNames[kMCCosThetaStar] = "cos#it{#theta}^{*}_{MC}";
1537+
fgVariableUnits[kMCCosThetaStar] = "";
15341538
fgVariableNames[kCosPhiVP] = "cos#it{#varphi}_{VP}";
15351539
fgVariableUnits[kCosPhiVP] = "";
15361540
fgVariableNames[kPhiVP] = "#varphi_{VP} - #Psi_{2}";
@@ -1948,6 +1952,7 @@ void VarManager::SetDefaultVarNames()
19481952
fgVarNamesMap["kMCEventTime"] = kMCEventTime;
19491953
fgVarNamesMap["kMCEventWeight"] = kMCEventWeight;
19501954
fgVarNamesMap["kMCEventImpParam"] = kMCEventImpParam;
1955+
fgVarNamesMap["kMCEventPlaneAngle"] = kMCEventPlaneAngle;
19511956
fgVarNamesMap["kQ1ZNAX"] = kQ1ZNAX;
19521957
fgVarNamesMap["kQ1ZNAY"] = kQ1ZNAY;
19531958
fgVarNamesMap["kQ1ZNCX"] = kQ1ZNCX;
@@ -2357,6 +2362,7 @@ void VarManager::SetDefaultVarNames()
23572362
fgVarNamesMap["kCos2ThetaStarFT0C"] = kCos2ThetaStarFT0C;
23582363
fgVarNamesMap["kCosThetaStarRandom"] = kCosThetaStarRandom;
23592364
fgVarNamesMap["kCos2ThetaStarRandom"] = kCos2ThetaStarRandom;
2365+
fgVarNamesMap["kMCCosThetaStar"] = kMCCosThetaStar;
23602366
fgVarNamesMap["kCosPhiVP"] = kCosPhiVP;
23612367
fgVarNamesMap["kPhiVP"] = kPhiVP;
23622368
fgVarNamesMap["kDeltaPhiPair2"] = kDeltaPhiPair2;

PWGDQ/Core/VarManager.h

Lines changed: 47 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -338,6 +338,7 @@ class VarManager : public TObject
338338
kMCEventWeight,
339339
kMCEventImpParam,
340340
kMCEventCentrFT0C,
341+
kMCEventPlaneAngle,
341342
kMultMCNParticlesEta10,
342343
kMultMCNParticlesEta08,
343344
kMultMCNParticlesEta05,
@@ -726,6 +727,7 @@ class VarManager : public TObject
726727
kMCPhiPP,
727728
kMCPhiTildePP,
728729
kMCCosThetaRM,
730+
kMCCosThetaStar,
729731

730732
// Pair variables
731733
kCandidateId,
@@ -1904,6 +1906,10 @@ void VarManager::FillEvent(T const& event, float* values)
19041906
values[kCollisionRandom] = gRandom->Rndm();
19051907
}
19061908

1909+
if (fgUsedVars[kRandomPsi2]) {
1910+
values[kRandomPsi2] = gRandom->Uniform(-o2::constants::math::PIHalf, o2::constants::math::PIHalf);
1911+
}
1912+
19071913
if constexpr ((fillMap & Collision) > 0) {
19081914
// TODO: trigger info from the event selection requires a separate flag
19091915
// so that it can be switched off independently of the rest of Collision variables (e.g. if event selection is not available)
@@ -2210,7 +2216,6 @@ void VarManager::FillEvent(T const& event, float* values)
22102216
values[VarManager::kPsi2A] = Psi2A;
22112217
values[VarManager::kPsi2B] = Psi2B;
22122218
values[VarManager::kPsi2C] = Psi2C;
2213-
values[VarManager::kRandomPsi2] = gRandom->Uniform(-o2::constants::math::PIHalf, o2::constants::math::PIHalf);
22142219

22152220
if constexpr ((fillMap & ReducedEventQvectorExtra) > 0) {
22162221
values[kQ42XA] = event.q42xa();
@@ -2332,7 +2337,8 @@ void VarManager::FillEvent(T const& event, float* values)
23322337
values[kMCEventTime] = event.t();
23332338
values[kMCEventWeight] = event.weight();
23342339
values[kMCEventImpParam] = event.impactParameter();
2335-
if constexpr ((fillMap & CollisionCent) > 0) {
2340+
values[kMCEventPlaneAngle] = event.eventPlaneAngle();
2341+
if constexpr (requires { event.bestCollisionCentFT0C(); }) {
23362342
// WARNING: temporary solution, ongoing work to provide proper MC gen. centrality
23372343
values[kMCEventCentrFT0C] = event.bestCollisionCentFT0C();
23382344
values[kMultMCNParticlesEta05] = event.multMCNParticlesEta05();
@@ -3661,6 +3667,27 @@ void VarManager::FillPair(T1 const& t1, T2 const& t2, float* values)
36613667
}
36623668
}
36633669

3670+
if (fgUsedVars[kCosThetaStarRandom]) {
3671+
ROOT::Math::Boost boostv12{v12.BoostToCM()};
3672+
ROOT::Math::XYZVectorF v1_CM{(boostv12(v1).Vect()).Unit()};
3673+
ROOT::Math::XYZVectorF v2_CM{(boostv12(v2).Vect()).Unit()};
3674+
3675+
// using positive sign convention for the first track
3676+
ROOT::Math::XYZVectorF v_CM = (t1.sign() > 0 ? v1_CM : v2_CM);
3677+
3678+
// Randomize the event plane angle to check the unpolarized contribution
3679+
ROOT::Math::XYZVector zaxisRandom = ROOT::Math::XYZVector(TMath::Cos(values[kRandomPsi2]), TMath::Sin(values[kRandomPsi2]), 0).Unit();
3680+
values[kCosThetaStarRandom] = v_CM.Dot(zaxisRandom);
3681+
values[kCos2ThetaStarRandom] = values[kCosThetaStarRandom] * values[kCosThetaStarRandom];
3682+
3683+
// if the truth event plane angle is available, calculate the cos(theta*) with respect to the true event plane angle for comparison
3684+
if (fgUsedVars[kMCCosThetaStar] && fgUsedVars[kMCEventPlaneAngle]) {
3685+
// truth event plane angle
3686+
ROOT::Math::XYZVector zaxisTrue = ROOT::Math::XYZVector(TMath::Cos(values[kMCEventPlaneAngle]), TMath::Sin(values[kMCEventPlaneAngle]), 0).Unit();
3687+
values[kMCCosThetaStar] = v_CM.Dot(zaxisTrue);
3688+
}
3689+
}
3690+
36643691
if constexpr ((pairType == kDecayToEE) && ((fillMap & TrackCov) > 0 || (fillMap & ReducedTrackBarrelCov) > 0)) {
36653692

36663693
if (fgUsedVars[kQuadDCAabsXY] || fgUsedVars[kQuadDCAsigXY] || fgUsedVars[kQuadDCAabsZ] || fgUsedVars[kQuadDCAsigZ] || fgUsedVars[kQuadDCAsigXYZ] || fgUsedVars[kSignQuadDCAsigXY]) {
@@ -4293,6 +4320,24 @@ void VarManager::FillPairMC(T1 const& t1, T2 const& t2, float* values)
42934320
values[kMCCosThetaRM] = zaxis_RM.Dot(v_CM);
42944321
}
42954322
}
4323+
4324+
if (fgUsedVars[kCosThetaStarRandom] || fgUsedVars[kMCCosThetaStar]) {
4325+
ROOT::Math::Boost boostv12{v12.BoostToCM()};
4326+
ROOT::Math::XYZVectorF v1_CM{(boostv12(v1).Vect()).Unit()};
4327+
ROOT::Math::XYZVectorF v2_CM{(boostv12(v2).Vect()).Unit()};
4328+
4329+
// using positive sign convention for the first track
4330+
ROOT::Math::XYZVectorF v_CM = (t1.pdgCode() > 0 ? v1_CM : v2_CM);
4331+
4332+
// Randomize the event plane angle to check the unpolarized contribution
4333+
ROOT::Math::XYZVector zaxisRandom = ROOT::Math::XYZVector(TMath::Cos(values[kRandomPsi2]), TMath::Sin(values[kRandomPsi2]), 0).Unit();
4334+
values[kCosThetaStarRandom] = v_CM.Dot(zaxisRandom);
4335+
values[kCos2ThetaStarRandom] = values[kCosThetaStarRandom] * values[kCosThetaStarRandom];
4336+
4337+
// truth event plane angle
4338+
ROOT::Math::XYZVector zaxisTrue = ROOT::Math::XYZVector(TMath::Cos(values[kMCEventPlaneAngle]), TMath::Sin(values[kMCEventPlaneAngle]), 0).Unit();
4339+
values[kMCCosThetaStar] = v_CM.Dot(zaxisTrue);
4340+
}
42964341
}
42974342

42984343
template <int candidateType, typename T1, typename T2, typename T3>
@@ -5721,11 +5766,6 @@ void VarManager::FillPairVn(T1 const& t1, T2 const& t2, float* values)
57215766
values[kCosThetaStarFT0C] = v_CM.Dot(zaxisFT0C);
57225767
values[kAbsCosThetaStarFT0C] = std::abs(values[kCosThetaStarFT0C]);
57235768
values[kCos2ThetaStarFT0C] = values[kCosThetaStarFT0C] * values[kCosThetaStarFT0C];
5724-
5725-
// Randomize the event plane angle to check the unpolarized contribution
5726-
ROOT::Math::XYZVector zaxisRandom = ROOT::Math::XYZVector(TMath::Cos(values[kRandomPsi2]), TMath::Sin(values[kRandomPsi2]), 0).Unit();
5727-
values[kCosThetaStarRandom] = v_CM.Dot(zaxisRandom);
5728-
values[kCos2ThetaStarRandom] = values[kCosThetaStarRandom] * values[kCosThetaStarRandom];
57295769
}
57305770

57315771
// kV4, kC4POI, kC4REF etc.

0 commit comments

Comments
 (0)