Skip to content

Commit be70ebf

Browse files
zjxiongOvOYiping Wangalibuild
authored
[PWGDQ] Enable reading collision system info from CCDB and Polarization table (#11950)
Co-authored-by: Yiping Wang <yipwang@lxbk1130.gsi.de> Co-authored-by: ALICE Action Bot <alibuild@cern.ch>
1 parent d8a6684 commit be70ebf

File tree

4 files changed

+147
-57
lines changed

4 files changed

+147
-57
lines changed

PWGDQ/Core/VarManager.cxx

Lines changed: 69 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,15 @@ bool VarManager::fgUsedVars[VarManager::kNVars] = {false};
2828
bool VarManager::fgUsedKF = false;
2929
float VarManager::fgMagField = 0.5;
3030
float VarManager::fgValues[VarManager::kNVars] = {0.0f};
31-
float VarManager::fgCenterOfMassEnergy = 13600; // GeV
32-
float VarManager::fgMassofCollidingParticle = 9.382720; // GeV
3331
float VarManager::fgTPCInterSectorBoundary = 1.0; // cm
3432
int VarManager::fgITSROFbias = 0;
3533
int VarManager::fgITSROFlength = 100;
3634
int VarManager::fgITSROFBorderMarginLow = 0;
3735
int VarManager::fgITSROFBorderMarginHigh = 0;
3836
uint64_t VarManager::fgSOR = 0;
3937
uint64_t VarManager::fgEOR = 0;
38+
ROOT::Math::PxPyPzEVector VarManager::fgBeamA(0, 0, 6799.99, 6800); // GeV, beam from A-side 4-momentum vector
39+
ROOT::Math::PxPyPzEVector VarManager::fgBeamC(0, 0, -6799.99, 6800); // GeV, beam from C-side 4-momentum vector
4040
o2::vertexing::DCAFitterN<2> VarManager::fgFitterTwoProngBarrel;
4141
o2::vertexing::DCAFitterN<3> VarManager::fgFitterThreeProngBarrel;
4242
o2::vertexing::DCAFitterN<4> VarManager::fgFitterFourProngBarrel;
@@ -114,15 +114,75 @@ void VarManager::SetCollisionSystem(TString system, float energy)
114114
//
115115
// Set the collision system and the center of mass energy
116116
//
117-
fgCenterOfMassEnergy = energy;
118-
119-
if (system.Contains("PbPb")) {
120-
fgMassofCollidingParticle = MassProton * 208;
121-
}
122-
if (system.Contains("pp")) {
123-
fgMassofCollidingParticle = MassProton;
117+
int NumberOfNucleonsA = 1; // default value for pp collisions
118+
int NumberOfNucleonsC = 1; // default value for pp collisions
119+
int NumberOfProtonsA = 1; // default value for pp collisions
120+
int NumberOfProtonsC = 1; // default value for pp collisions
121+
if (system.EqualTo("PbPb")) {
122+
NumberOfNucleonsA = 208;
123+
NumberOfNucleonsC = 208;
124+
NumberOfProtonsA = 82; // Pb has 82 protons
125+
NumberOfProtonsC = 82; // Pb has 82 protons
126+
} else if (system.EqualTo("pp")) {
127+
NumberOfNucleonsA = 1;
128+
NumberOfNucleonsC = 1;
129+
NumberOfProtonsA = 1; // proton has 1 proton
130+
NumberOfProtonsC = 1; // proton has 1 proton
131+
} else if (system.EqualTo("XeXe")) {
132+
NumberOfNucleonsA = 129;
133+
NumberOfNucleonsC = 129;
134+
NumberOfProtonsA = 54; // Xe has 54 protons
135+
NumberOfProtonsC = 54; // Xe has 54 protons
136+
} else if (system.EqualTo("pPb")) {
137+
NumberOfNucleonsA = 1;
138+
NumberOfNucleonsC = 208;
139+
NumberOfProtonsA = 1; // proton has 1 proton
140+
NumberOfProtonsC = 82; // Pb has 82 protons
141+
} else if (system.EqualTo("Pbp")) {
142+
NumberOfNucleonsA = 208;
143+
NumberOfNucleonsC = 1;
144+
NumberOfProtonsA = 82; // Pb has 82 protons
145+
NumberOfProtonsC = 1; // proton has 1 proton
146+
} else if (system.EqualTo("OO")) {
147+
NumberOfNucleonsA = 16;
148+
NumberOfNucleonsC = 16;
149+
NumberOfProtonsA = 8; // O has 8 protons
150+
NumberOfProtonsC = 8; // O has 8 protons
151+
} else if (system.EqualTo("pO")) {
152+
NumberOfNucleonsA = 1;
153+
NumberOfNucleonsC = 16;
154+
NumberOfProtonsA = 1; // proton has 1 proton
155+
NumberOfProtonsC = 8; // O has 8 protons
156+
} else if (system.EqualTo("NeNe")) {
157+
NumberOfNucleonsA = 20;
158+
NumberOfNucleonsC = 20;
159+
NumberOfProtonsA = 10; // Ne has 5 protons
160+
NumberOfProtonsC = 10; // Ne has 5 protons
124161
}
125162
// TO Do: add more systems
163+
164+
// set the beam 4-momentum vectors
165+
float beamAEnergy = energy / 2.0 * sqrt(NumberOfProtonsA * NumberOfProtonsC / NumberOfProtonsC / NumberOfProtonsA); // GeV
166+
float beamCEnergy = energy / 2.0 * sqrt(NumberOfProtonsC * NumberOfProtonsA / NumberOfProtonsA / NumberOfProtonsC); // GeV
167+
float beamAMomentum = std::sqrt(beamAEnergy * beamAEnergy - NumberOfNucleonsA * NumberOfNucleonsA * MassProton * MassProton);
168+
float beamCMomentum = std::sqrt(beamCEnergy * beamCEnergy - NumberOfNucleonsC * NumberOfNucleonsC * MassProton * MassProton);
169+
fgBeamA.SetPxPyPzE(0, 0, beamAMomentum, beamAEnergy);
170+
fgBeamC.SetPxPyPzE(0, 0, -beamCMomentum, beamCEnergy);
171+
}
172+
173+
//__________________________________________________________________
174+
void VarManager::SetCollisionSystem(o2::parameters::GRPLHCIFData* grplhcif)
175+
{
176+
//
177+
// Set the collision system and the center of mass energy from the GRP information
178+
double beamAEnergy = grplhcif->getBeamEnergyPerNucleonInGeV(o2::constants::lhc::BeamDirection::BeamA);
179+
double beamCEnergy = grplhcif->getBeamEnergyPerNucleonInGeV(o2::constants::lhc::BeamDirection::BeamC);
180+
double beamANucleons = grplhcif->getBeamA(o2::constants::lhc::BeamDirection::BeamA);
181+
double beamCNucleons = grplhcif->getBeamA(o2::constants::lhc::BeamDirection::BeamC);
182+
double beamAMomentum = std::sqrt(beamAEnergy * beamAEnergy - beamANucleons * beamANucleons * MassProton * MassProton);
183+
double beamCMomentum = std::sqrt(beamCEnergy * beamCEnergy - beamCNucleons * beamCNucleons * MassProton * MassProton);
184+
fgBeamA.SetPxPyPzE(0, 0, beamAMomentum, beamAEnergy);
185+
fgBeamC.SetPxPyPzE(0, 0, -beamCMomentum, beamCEnergy);
126186
}
127187

128188
//__________________________________________________________________

PWGDQ/Core/VarManager.h

Lines changed: 38 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -24,49 +24,49 @@
2424
#define HomogeneousField
2525
#endif
2626

27-
#include <vector>
28-
#include <map>
29-
#include <cmath>
30-
#include <iostream>
31-
#include <utility>
32-
#include <complex>
33-
#include <algorithm>
34-
35-
#include <TObject.h>
36-
#include <TString.h>
37-
#include "TRandom.h"
38-
#include "TH3F.h"
39-
#include "Math/Vector4D.h"
40-
#include "Math/Vector3D.h"
41-
#include "Math/GenVector/Boost.h"
42-
#include "Math/VectorUtil.h"
43-
44-
#include "Framework/DataTypes.h"
45-
#include "TGeoGlobalMagField.h"
46-
#include "Field/MagneticField.h"
47-
#include "ReconstructionDataFormats/Track.h"
48-
#include "ReconstructionDataFormats/Vertex.h"
49-
#include "DCAFitter/DCAFitterN.h"
5027
#include "Common/CCDB/EventSelectionParams.h"
5128
#include "Common/CCDB/TriggerAliases.h"
52-
#include "ReconstructionDataFormats/DCA.h"
53-
#include "DetectorsBase/Propagator.h"
29+
#include "Common/Core/CollisionTypeHelper.h"
30+
#include "Common/Core/EventPlaneHelper.h"
5431
#include "Common/Core/trackUtilities.h"
5532

56-
#include "Math/SMatrix.h"
57-
#include "ReconstructionDataFormats/TrackFwd.h"
33+
#include "CommonConstants/LHCConstants.h"
34+
#include "CommonConstants/PhysicsConstants.h"
35+
#include "DCAFitter/DCAFitterN.h"
5836
#include "DCAFitter/FwdDCAFitterN.h"
37+
#include "DetectorsBase/Propagator.h"
38+
#include "Field/MagneticField.h"
39+
#include "Framework/DataTypes.h"
5940
#include "GlobalTracking/MatchGlobalFwd.h"
60-
#include "CommonConstants/PhysicsConstants.h"
61-
#include "CommonConstants/LHCConstants.h"
41+
#include "ReconstructionDataFormats/DCA.h"
42+
#include "ReconstructionDataFormats/Track.h"
43+
#include "ReconstructionDataFormats/TrackFwd.h"
44+
#include "ReconstructionDataFormats/Vertex.h"
45+
46+
#include "Math/GenVector/Boost.h"
47+
#include "Math/SMatrix.h"
48+
#include "Math/Vector3D.h"
49+
#include "Math/Vector4D.h"
50+
#include "Math/VectorUtil.h"
51+
#include "TGeoGlobalMagField.h"
52+
#include "TH3F.h"
53+
#include "TRandom.h"
54+
#include <TObject.h>
55+
#include <TString.h>
6256

63-
#include "KFParticle.h"
6457
#include "KFPTrack.h"
6558
#include "KFPVertex.h"
59+
#include "KFParticle.h"
6660
#include "KFParticleBase.h"
6761
#include "KFVertex.h"
6862

69-
#include "Common/Core/EventPlaneHelper.h"
63+
#include <algorithm>
64+
#include <cmath>
65+
#include <complex>
66+
#include <iostream>
67+
#include <map>
68+
#include <utility>
69+
#include <vector>
7070

7171
using std::complex;
7272
using std::cout;
@@ -927,6 +927,7 @@ class VarManager : public TObject
927927

928928
// Setup the collision system
929929
static void SetCollisionSystem(TString system, float energy);
930+
static void SetCollisionSystem(o2::parameters::GRPLHCIFData* grplhcif);
930931

931932
static void SetMagneticField(float magField)
932933
{
@@ -1197,6 +1198,8 @@ class VarManager : public TObject
11971198
static int fgITSROFBorderMarginHigh; // ITS ROF border high margin
11981199
static uint64_t fgSOR; // Timestamp for start of run
11991200
static uint64_t fgEOR; // Timestamp for end of run
1201+
static ROOT::Math::PxPyPzEVector fgBeamA; // beam from A-side 4-momentum vector
1202+
static ROOT::Math::PxPyPzEVector fgBeamC; // beam from C-side 4-momentum vector
12001203

12011204
// static void FillEventDerived(float* values = nullptr);
12021205
static void FillTrackDerived(float* values = nullptr);
@@ -2866,16 +2869,11 @@ void VarManager::FillPair(T1 const& t1, T2 const& t2, float* values)
28662869
bool useRM = fgUsedVars[kCosThetaRM]; // Random frame
28672870

28682871
if (useHE || useCS || usePP || useRM) {
2869-
// TO DO: get the correct values from CCDB
2870-
double BeamMomentum = TMath::Sqrt(fgCenterOfMassEnergy * fgCenterOfMassEnergy / 4 - fgMassofCollidingParticle * fgMassofCollidingParticle); // GeV
2871-
ROOT::Math::PxPyPzEVector Beam1(0., 0., -BeamMomentum, fgCenterOfMassEnergy / 2);
2872-
ROOT::Math::PxPyPzEVector Beam2(0., 0., BeamMomentum, fgCenterOfMassEnergy / 2);
2873-
28742872
ROOT::Math::Boost boostv12{v12.BoostToCM()};
28752873
ROOT::Math::XYZVectorF v1_CM{(boostv12(v1).Vect()).Unit()};
28762874
ROOT::Math::XYZVectorF v2_CM{(boostv12(v2).Vect()).Unit()};
2877-
ROOT::Math::XYZVectorF Beam1_CM{(boostv12(Beam1).Vect()).Unit()};
2878-
ROOT::Math::XYZVectorF Beam2_CM{(boostv12(Beam2).Vect()).Unit()};
2875+
ROOT::Math::XYZVectorF Beam1_CM{(boostv12(fgBeamA).Vect()).Unit()};
2876+
ROOT::Math::XYZVectorF Beam2_CM{(boostv12(fgBeamC).Vect()).Unit()};
28792877

28802878
// using positive sign convention for the first track
28812879
ROOT::Math::XYZVectorF v_CM = (t1.sign() > 0 ? v1_CM : v2_CM);
@@ -3381,16 +3379,11 @@ void VarManager::FillPairMC(T1 const& t1, T2 const& t2, float* values)
33813379
bool useRM = fgUsedVars[kMCCosThetaRM]; // Random frame
33823380

33833381
if (useHE || useCS || usePP || useRM) {
3384-
// TO DO: get the correct values from CCDB
3385-
double BeamMomentum = TMath::Sqrt(fgCenterOfMassEnergy * fgCenterOfMassEnergy / 4 - fgMassofCollidingParticle * fgMassofCollidingParticle); // GeV
3386-
ROOT::Math::PxPyPzEVector Beam1(0., 0., -BeamMomentum, fgCenterOfMassEnergy / 2);
3387-
ROOT::Math::PxPyPzEVector Beam2(0., 0., BeamMomentum, fgCenterOfMassEnergy / 2);
3388-
33893382
ROOT::Math::Boost boostv12{v12.BoostToCM()};
33903383
ROOT::Math::XYZVectorF v1_CM{(boostv12(v1).Vect()).Unit()};
33913384
ROOT::Math::XYZVectorF v2_CM{(boostv12(v2).Vect()).Unit()};
3392-
ROOT::Math::XYZVectorF Beam1_CM{(boostv12(Beam1).Vect()).Unit()};
3393-
ROOT::Math::XYZVectorF Beam2_CM{(boostv12(Beam2).Vect()).Unit()};
3385+
ROOT::Math::XYZVectorF Beam1_CM{(boostv12(fgBeamA).Vect()).Unit()};
3386+
ROOT::Math::XYZVectorF Beam2_CM{(boostv12(fgBeamC).Vect()).Unit()};
33943387

33953388
// using positive sign convention for the first track
33963389
ROOT::Math::XYZVectorF v_CM = (t1.pdgCode() > 0 ? v1_CM : v2_CM);
@@ -4848,9 +4841,6 @@ void VarManager::FillPairVn(T1 const& t1, T2 const& t2, float* values)
48484841
// global polarization parameters
48494842
bool useGlobalPolarizatiobSpinOne = fgUsedVars[kCosThetaStarTPC] || fgUsedVars[kCosThetaStarFT0A] || fgUsedVars[kCosThetaStarFT0C];
48504843
if (useGlobalPolarizatiobSpinOne) {
4851-
double BeamMomentum = TMath::Sqrt(fgCenterOfMassEnergy * fgCenterOfMassEnergy / 4 - fgMassofCollidingParticle * fgMassofCollidingParticle); // GeV
4852-
ROOT::Math::PxPyPzEVector Beam1(0., 0., -BeamMomentum, fgCenterOfMassEnergy / 2);
4853-
48544844
ROOT::Math::Boost boostv12{v12.BoostToCM()};
48554845
ROOT::Math::XYZVectorF v1_CM{(boostv12(v1).Vect()).Unit()};
48564846
ROOT::Math::XYZVectorF v2_CM{(boostv12(v2).Vect()).Unit()};

PWGDQ/DataModel/ReducedInfoTables.h

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -739,6 +739,19 @@ DECLARE_SOA_COLUMN(PairDCAxy, pairDCAxy, float);
739739
DECLARE_SOA_COLUMN(DeviationPairKF, deviationPairKF, float); //! Pair chi2 deviation to PV from KFParticle
740740
DECLARE_SOA_COLUMN(DeviationxyPairKF, deviationxyPairKF, float); //! Pair chi2 deviation to PV in XY from KFParticle
741741
// DECLARE_SOA_INDEX_COLUMN(ReducedMuon, reducedmuon2); //!
742+
DECLARE_SOA_COLUMN(CosThetaHE, costhetaHE, float); //! Cosine in the helicity frame
743+
DECLARE_SOA_COLUMN(PhiHE, phiHe, float); //! Phi in the helicity frame
744+
DECLARE_SOA_COLUMN(PhiTildeHE, phiTildeHe, float); //! Tilde Phi in the helicity frame
745+
DECLARE_SOA_COLUMN(CosThetaCS, costhetaCS, float); //! Cosine in the Collins-Soper frame
746+
DECLARE_SOA_COLUMN(PhiCS, phiCS, float); //! Phi in the Collins-Soper frame
747+
DECLARE_SOA_COLUMN(PhiTildeCS, phiTildeCS, float); //! Tilde Phi in the Collins-Soper frame
748+
DECLARE_SOA_COLUMN(CosThetaPP, costhetaPP, float); //! Cosine in the Production Plane frame
749+
DECLARE_SOA_COLUMN(PhiPP, phiPP, float); //! Phi in the Production Plane frame
750+
DECLARE_SOA_COLUMN(PhiTildePP, phiTildePP, float); //! Tilde Phi in the Production Plane frame
751+
DECLARE_SOA_COLUMN(CosThetaRM, costhetaRM, float); //! Cosine in the Random frame
752+
DECLARE_SOA_COLUMN(CosThetaStarTPC, costhetaStarTPC, float); //! global polarization, event plane reconstructed from TPC tracks
753+
DECLARE_SOA_COLUMN(CosThetaStarFT0A, costhetaStarFT0A, float); //! global polarization, event plane reconstructed from FT0A tracks
754+
DECLARE_SOA_COLUMN(CosThetaStarFT0C, costhetaStarFT0C, float); //! global polarization, event plane reconstructed from FT0C tracks
742755
DECLARE_SOA_DYNAMIC_COLUMN(Px, px, //!
743756
[](float pt, float phi) -> float { return pt * std::cos(phi); });
744757
DECLARE_SOA_DYNAMIC_COLUMN(Py, py, //!
@@ -875,6 +888,13 @@ DECLARE_SOA_TABLE(DileptonsMiniTreeRec, "AOD", "RTDILMTREEREC", //!
875888
dilepton_track_index::Pt1, dilepton_track_index::Eta1, dilepton_track_index::Phi1,
876889
dilepton_track_index::Pt2, dilepton_track_index::Eta2, dilepton_track_index::Phi2);
877890

891+
DECLARE_SOA_TABLE(DileptonsPolarization, "AOD", "RTDILPOLAR", //!
892+
reducedpair::CosThetaHE, reducedpair::PhiHE, reducedpair::PhiTildeHE,
893+
reducedpair::CosThetaCS, reducedpair::PhiCS, reducedpair::PhiTildeCS,
894+
reducedpair::CosThetaPP, reducedpair::PhiPP, reducedpair::PhiTildePP,
895+
reducedpair::CosThetaRM,
896+
reducedpair::CosThetaStarTPC, reducedpair::CosThetaStarFT0A, reducedpair::CosThetaStarFT0C);
897+
878898
using Dielectron = Dielectrons::iterator;
879899
using StoredDielectron = StoredDielectrons::iterator;
880900
using Dimuon = Dimuons::iterator;
@@ -888,6 +908,7 @@ using DimuonAll = DimuonsAll::iterator;
888908
using DileptonMiniTree = DileptonsMiniTree::iterator;
889909
using DileptonMiniTreeGen = DileptonsMiniTreeGen::iterator;
890910
using DileptonMiniTreeRec = DileptonsMiniTreeRec::iterator;
911+
using DileptonPolarization = DileptonsPolarization::iterator;
891912

892913
// Tables for using analysis-dilepton-track with analysis-asymmetric-pairing
893914
DECLARE_SOA_TABLE(Ditracks, "AOD", "RTDITRACK", //!

PWGDQ/Tasks/tableReader_withAssoc.cxx

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1192,6 +1192,7 @@ struct AnalysisSameEventPairing {
11921192
Produces<aod::DileptonFlow> dileptonFlowList;
11931193
Produces<aod::DileptonsInfo> dileptonInfoList;
11941194
Produces<aod::JPsieeCandidates> PromptNonPromptSepTable;
1195+
Produces<aod::DileptonPolarization> dileptonPolarList;
11951196

11961197
o2::base::MatLayerCylSet* fLUT = nullptr;
11971198
int fCurrentRun; // needed to detect if the run changed and trigger update of calibrations etc.
@@ -1217,12 +1218,14 @@ struct AnalysisSameEventPairing {
12171218
Configurable<std::string> grpMagPath{"grpmagPath", "GLO/Config/GRPMagField", "CCDB path of the GRPMagField object"};
12181219
Configurable<std::string> lutPath{"lutPath", "GLO/Param/MatLUT", "Path of the Lut parametrization"};
12191220
Configurable<std::string> geoPath{"geoPath", "GLO/Config/GeometryAligned", "Path of the geometry file"};
1221+
Configurable<std::string> GrpLhcIfPath{"grplhcif", "GLO/Config/GRPLHCIF", "Path on the CCDB for the GRPLHCIF object"};
12201222
} fConfigCCDB;
12211223

12221224
struct : ConfigurableGroup {
12231225
Configurable<bool> useRemoteField{"cfgUseRemoteField", false, "Chose whether to fetch the magnetic field from ccdb or set it manually"};
12241226
Configurable<float> magField{"cfgMagField", 5.0f, "Manually set magnetic field"};
12251227
Configurable<bool> flatTables{"cfgFlatTables", false, "Produce a single flat tables with all relevant information of the pairs and single tracks"};
1228+
Configurable<bool> polarTables{"cfgPolarTables", false, "Produce tables with dilepton polarization information"};
12261229
Configurable<bool> useKFVertexing{"cfgUseKFVertexing", false, "Use KF Particle for secondary vertex reconstruction (DCAFitter is used by default)"};
12271230
Configurable<bool> useAbsDCA{"cfgUseAbsDCA", false, "Use absolute DCA minimization instead of chi^2 minimization in secondary vertexing"};
12281231
Configurable<bool> propToPCA{"cfgPropToPCA", false, "Propagate tracks to secondary vertex"};
@@ -1231,6 +1234,7 @@ struct AnalysisSameEventPairing {
12311234
Configurable<std::string> collisionSystem{"syst", "pp", "Collision system, pp or PbPb"};
12321235
Configurable<float> centerMassEnergy{"energy", 13600, "Center of mass energy in GeV"};
12331236
Configurable<bool> propTrack{"cfgPropTrack", true, "Propgate tracks to associated collision to recalculate DCA and momentum vector"};
1237+
Configurable<bool> useRemoteCollisionInfo{"cfgUseRemoteCollisionInfo", false, "Use remote collision information from CCDB"};
12341238
} fConfigOptions;
12351239

12361240
Service<o2::ccdb::BasicCCDBManager> fCCDB;
@@ -1551,6 +1555,11 @@ struct AnalysisSameEventPairing {
15511555
uint64_t sor = std::atol(header["SOR"].c_str());
15521556
uint64_t eor = std::atol(header["EOR"].c_str());
15531557
VarManager::SetSORandEOR(sor, eor);
1558+
1559+
if (fConfigOptions.useRemoteCollisionInfo) {
1560+
o2::parameters::GRPLHCIFData* grpo = fCCDB->getForTimeStamp<o2::parameters::GRPLHCIFData>(fConfigCCDB.GrpLhcIfPath, timestamp);
1561+
VarManager::SetCollisionSystem(grpo);
1562+
}
15541563
}
15551564

15561565
// Template function to run same event pairing (barrel-barrel, muon-muon, barrel-muon)
@@ -1601,6 +1610,9 @@ struct AnalysisSameEventPairing {
16011610
dielectronAllList.reserve(1);
16021611
dimuonAllList.reserve(1);
16031612
}
1613+
if (fConfigOptions.polarTables.value) {
1614+
dileptonPolarList.reserve(1);
1615+
}
16041616
fAmbiguousPairs.clear();
16051617
constexpr bool eventHasQvector = ((TEventFillMap & VarManager::ObjTypes::ReducedEventQvector) > 0);
16061618
constexpr bool eventHasQvectorCentr = ((TEventFillMap & VarManager::ObjTypes::CollisionQvect) > 0);
@@ -1675,6 +1687,13 @@ struct AnalysisSameEventPairing {
16751687
dielectronInfoList(t1.collisionId(), t1.trackId(), t2.trackId());
16761688
dileptonInfoList(t1.collisionId(), event.posX(), event.posY(), event.posZ());
16771689
}
1690+
if (fConfigOptions.polarTables.value) {
1691+
dileptonPolarList(VarManager::fgValues[VarManager::kCosThetaHE], VarManager::fgValues[VarManager::kPhiHE], VarManager::fgValues[VarManager::kPhiTildeHE],
1692+
VarManager::fgValues[VarManager::kCosThetaCS], VarManager::fgValues[VarManager::kPhiCS], VarManager::fgValues[VarManager::kPhiTildeCS],
1693+
VarManager::fgValues[VarManager::kCosThetaPP], VarManager::fgValues[VarManager::kPhiPP], VarManager::fgValues[VarManager::kPhiTildePP],
1694+
VarManager::fgValues[VarManager::kCosThetaRM],
1695+
VarManager::fgValues[VarManager::kCosThetaStarTPC], VarManager::fgValues[VarManager::kCosThetaStarFT0A], VarManager::fgValues[VarManager::kCosThetaStarFT0C]);
1696+
}
16781697
if constexpr (trackHasCov && TTwoProngFitter) {
16791698
dielectronsExtraList(t1.globalIndex(), t2.globalIndex(), VarManager::fgValues[VarManager::kVertexingTauzProjected], VarManager::fgValues[VarManager::kVertexingLzProjected], VarManager::fgValues[VarManager::kVertexingLxyProjected]);
16801699
if constexpr ((TTrackFillMap & VarManager::ObjTypes::ReducedTrackBarrelPID) > 0) {

0 commit comments

Comments
 (0)