99// granted to it by virtue of its status as an Intergovernmental Organization
1010// or submit itself to any jurisdiction.
1111
12+ #include " Common/CCDB/EventSelectionParams.h"
1213#include " Common/Core/RecoDecay.h"
1314#include " Common/DataModel/Centrality.h"
1415#include " Common/DataModel/EventSelection.h"
1516#include " Common/DataModel/Multiplicity.h"
16- #include " Common/DataModel/PIDResponse .h"
17- #include " Common/DataModel/Qvectors .h"
17+ #include " Common/DataModel/PIDResponseTOF .h"
18+ #include " Common/DataModel/PIDResponseTPC .h"
1819#include " Common/DataModel/TrackSelectionTables.h"
1920
20- #include " Framework/AnalysisDataModel.h"
21+ #include < CommonConstants/MathConstants.h>
22+ #include < Framework/AnalysisDataModel.h>
2123
24+ #include < Rtypes.h>
25+
26+ #include < array>
27+ #include < cmath>
28+ #include < cstdint>
2229#include < string>
2330#include < unordered_map>
2431#include < vector>
@@ -81,6 +88,8 @@ DECLARE_SOA_COLUMN(Q2xFT0A, q2xft0a, float); //!
8188DECLARE_SOA_COLUMN (Q2yFT0A, q2yft0a, float ); // ! Qy for 2nd harmonics in FT0A (i.e. positive eta)
8289DECLARE_SOA_COLUMN (Q2xFT0C, q2xft0c, float ); // ! Qx for 2nd harmonics in FT0C (i.e. negative eta)
8390DECLARE_SOA_COLUMN (Q2yFT0C, q2yft0c, float ); // ! Qy for 2nd harmonics in FT0C (i.e. negative eta)
91+ DECLARE_SOA_COLUMN (Q2xFV0A, q2xfv0a, float ); // ! Qx for 2nd harmonics in FV0A (i.e. positive eta)
92+ DECLARE_SOA_COLUMN (Q2yFV0A, q2yfv0a, float ); // ! Qy for 2nd harmonics in FV0A (i.e. positive eta)
8493DECLARE_SOA_COLUMN (Q2xBPos, q2xbpos, float ); // ! Qx for 2nd harmonics in Barrel positive eta region
8594DECLARE_SOA_COLUMN (Q2yBPos, q2ybpos, float ); // ! Qy for 2nd harmonics in Barrel positive eta region
8695DECLARE_SOA_COLUMN (Q2xBNeg, q2xbneg, float ); // ! Qx for 2nd harmonics in Barrel negative eta region
@@ -93,6 +102,8 @@ DECLARE_SOA_COLUMN(Q3xFT0A, q3xft0a, float); //!
93102DECLARE_SOA_COLUMN (Q3yFT0A, q3yft0a, float ); // ! Qy for 3rd harmonics in FT0A (i.e. positive eta)
94103DECLARE_SOA_COLUMN (Q3xFT0C, q3xft0c, float ); // ! Qx for 3rd harmonics in FT0C (i.e. negative eta)
95104DECLARE_SOA_COLUMN (Q3yFT0C, q3yft0c, float ); // ! Qy for 3rd harmonics in FT0C (i.e. negative eta)
105+ DECLARE_SOA_COLUMN (Q3xFV0A, q3xfv0a, float ); // ! Qx for 3rd harmonics in FV0A (i.e. positive eta)
106+ DECLARE_SOA_COLUMN (Q3yFV0A, q3yfv0a, float ); // ! Qy for 3rd harmonics in FV0A (i.e. positive eta)
96107DECLARE_SOA_COLUMN (Q3xBPos, q3xbpos, float ); // ! Qx for 3rd harmonics in Barrel positive eta region
97108DECLARE_SOA_COLUMN (Q3yBPos, q3ybpos, float ); // ! Qy for 3rd harmonics in Barrel positive eta region
98109DECLARE_SOA_COLUMN (Q3xBNeg, q3xbneg, float ); // ! Qx for 3rd harmonics in Barrel negative eta region
@@ -105,6 +116,8 @@ DECLARE_SOA_COLUMN(Q4xFT0A, q4xft0a, float); //!
105116DECLARE_SOA_COLUMN (Q4yFT0A, q4yft0a, float ); // ! Qy for 4th harmonics in FT0A (i.e. positive eta)
106117DECLARE_SOA_COLUMN (Q4xFT0C, q4xft0c, float ); // ! Qx for 4th harmonics in FT0C (i.e. negative eta)
107118DECLARE_SOA_COLUMN (Q4yFT0C, q4yft0c, float ); // ! Qy for 4th harmonics in FT0C (i.e. negative eta)
119+ DECLARE_SOA_COLUMN (Q4xFV0A, q4xfv0a, float ); // ! Qx for 4th harmonics in FV0A (i.e. positive eta)
120+ DECLARE_SOA_COLUMN (Q4yFV0A, q4yfv0a, float ); // ! Qy for 4th harmonics in FV0A (i.e. positive eta)
108121DECLARE_SOA_COLUMN (Q4xBPos, q4xbpos, float ); // ! Qx for 4th harmonics in Barrel positive eta region
109122DECLARE_SOA_COLUMN (Q4yBPos, q4ybpos, float ); // ! Qy for 4th harmonics in Barrel positive eta region
110123DECLARE_SOA_COLUMN (Q4xBNeg, q4xbneg, float ); // ! Qx for 4th harmonics in Barrel negative eta region
@@ -125,18 +138,21 @@ DECLARE_SOA_DYNAMIC_COLUMN(Sel8, sel8, [](uint64_t selection_bit) -> bool { retu
125138DECLARE_SOA_DYNAMIC_COLUMN (EP2FT0M, ep2ft0m, [](float q2x, float q2y) -> float { return std::atan2 (q2y, q2x) / 2.0 ; });
126139DECLARE_SOA_DYNAMIC_COLUMN (EP2FT0A, ep2ft0a, [](float q2x, float q2y) -> float { return std::atan2 (q2y, q2x) / 2.0 ; });
127140DECLARE_SOA_DYNAMIC_COLUMN (EP2FT0C, ep2ft0c, [](float q2x, float q2y) -> float { return std::atan2 (q2y, q2x) / 2.0 ; });
141+ DECLARE_SOA_DYNAMIC_COLUMN (EP2FV0A, ep2fv0a, [](float q2x, float q2y) -> float { return std::atan2 (q2y, q2x) / 2.0 ; });
128142DECLARE_SOA_DYNAMIC_COLUMN (EP2BPos, ep2bpos, [](float q2x, float q2y) -> float { return std::atan2 (q2y, q2x) / 2.0 ; });
129143DECLARE_SOA_DYNAMIC_COLUMN (EP2BNeg, ep2bneg, [](float q2x, float q2y) -> float { return std::atan2 (q2y, q2x) / 2.0 ; });
130144DECLARE_SOA_DYNAMIC_COLUMN (EP2BTot, ep2btot, [](float q2x, float q2y) -> float { return std::atan2 (q2y, q2x) / 2.0 ; });
131145DECLARE_SOA_DYNAMIC_COLUMN (EP3FT0M, ep3ft0m, [](float q3x, float q3y) -> float { return std::atan2 (q3y, q3x) / 3.0 ; });
132146DECLARE_SOA_DYNAMIC_COLUMN (EP3FT0A, ep3ft0a, [](float q3x, float q3y) -> float { return std::atan2 (q3y, q3x) / 3.0 ; });
133147DECLARE_SOA_DYNAMIC_COLUMN (EP3FT0C, ep3ft0c, [](float q3x, float q3y) -> float { return std::atan2 (q3y, q3x) / 3.0 ; });
148+ DECLARE_SOA_DYNAMIC_COLUMN (EP3FV0A, ep3fv0a, [](float q3x, float q3y) -> float { return std::atan2 (q3y, q3x) / 3.0 ; });
134149DECLARE_SOA_DYNAMIC_COLUMN (EP3BPos, ep3bpos, [](float q3x, float q3y) -> float { return std::atan2 (q3y, q3x) / 3.0 ; });
135150DECLARE_SOA_DYNAMIC_COLUMN (EP3BNeg, ep3bneg, [](float q3x, float q3y) -> float { return std::atan2 (q3y, q3x) / 3.0 ; });
136151DECLARE_SOA_DYNAMIC_COLUMN (EP3BTot, ep3btot, [](float q3x, float q3y) -> float { return std::atan2 (q3y, q3x) / 3.0 ; });
137152DECLARE_SOA_DYNAMIC_COLUMN (EP4FT0M, ep4ft0m, [](float q4x, float q4y) -> float { return std::atan2 (q4y, q4x) / 4.0 ; });
138153DECLARE_SOA_DYNAMIC_COLUMN (EP4FT0A, ep4ft0a, [](float q4x, float q4y) -> float { return std::atan2 (q4y, q4x) / 4.0 ; });
139154DECLARE_SOA_DYNAMIC_COLUMN (EP4FT0C, ep4ft0c, [](float q4x, float q4y) -> float { return std::atan2 (q4y, q4x) / 4.0 ; });
155+ DECLARE_SOA_DYNAMIC_COLUMN (EP4FV0A, ep4fv0a, [](float q4x, float q4y) -> float { return std::atan2 (q4y, q4x) / 4.0 ; });
140156DECLARE_SOA_DYNAMIC_COLUMN (EP4BPos, ep4bpos, [](float q4x, float q4y) -> float { return std::atan2 (q4y, q4x) / 4.0 ; });
141157DECLARE_SOA_DYNAMIC_COLUMN (EP4BNeg, ep4bneg, [](float q4x, float q4y) -> float { return std::atan2 (q4y, q4x) / 4.0 ; });
142158DECLARE_SOA_DYNAMIC_COLUMN (EP4BTot, ep4btot, [](float q4x, float q4y) -> float { return std::atan2 (q4y, q4x) / 4.0 ; });
@@ -179,33 +195,61 @@ DECLARE_SOA_TABLE(EMEventsCent, "AOD", "EMEVENTCENT", //! event centrality tab
179195 cent::CentFT0M, cent::CentFT0A, cent::CentFT0C);
180196using EMEventCent = EMEventsCent::iterator;
181197
182- DECLARE_SOA_TABLE (EMEventsQvec , " AOD" , " EMEVENTQVEC" , // ! event q vector table, joinable to EMEvents
183- emevent::Q2xFT0M, emevent::Q2yFT0M, emevent::Q2xFT0A, emevent::Q2yFT0A, emevent::Q2xFT0C, emevent::Q2yFT0C,
184- emevent::Q2xBPos, emevent::Q2yBPos, emevent::Q2xBNeg, emevent::Q2yBNeg, emevent::Q2xBTot, emevent::Q2yBTot,
185- emevent::Q3xFT0M, emevent::Q3yFT0M, emevent::Q3xFT0A, emevent::Q3yFT0A, emevent::Q3xFT0C, emevent::Q3yFT0C,
186- emevent::Q3xBPos, emevent::Q3yBPos, emevent::Q3xBNeg, emevent::Q3yBNeg, emevent::Q3xBTot, emevent::Q3yBTot,
187- // emevent::Q4xFT0M, emevent::Q4yFT0M, emevent::Q4xFT0A, emevent::Q4yFT0A, emevent::Q4xFT0C, emevent::Q4yFT0C,
188- // emevent::Q4xBPos, emevent::Q4yBPos, emevent::Q4xBNeg, emevent::Q4yBNeg, emevent::Q4xBTot, emevent::Q4yBTot,
189-
190- // Dynamic columns
191- emevent::EP2FT0M<emevent::Q2xFT0M, emevent::Q2yFT0M>,
192- emevent::EP2FT0A<emevent::Q2xFT0A, emevent::Q2yFT0A>,
193- emevent::EP2FT0C<emevent::Q2xFT0C, emevent::Q2yFT0C>,
194- emevent::EP2BPos<emevent::Q2xBPos, emevent::Q2yBPos>,
195- emevent::EP2BNeg<emevent::Q2xBNeg, emevent::Q2yBNeg>,
196- emevent::EP2BTot<emevent::Q2xBTot, emevent::Q2yBTot>,
197- emevent::EP3FT0M<emevent::Q3xFT0M, emevent::Q3yFT0M>,
198- emevent::EP3FT0A<emevent::Q3xFT0A, emevent::Q3yFT0A>,
199- emevent::EP3FT0C<emevent::Q3xFT0C, emevent::Q3yFT0C>,
200- emevent::EP3BPos<emevent::Q3xBPos, emevent::Q3yBPos>,
201- emevent::EP3BNeg<emevent::Q3xBNeg, emevent::Q3yBNeg>,
202- emevent::EP3BTot<emevent::Q3xBTot, emevent::Q3yBTot>);
198+ DECLARE_SOA_TABLE_VERSIONED (EMEventsQvec_000 , " AOD" , " EMEVENTQVEC" , 0 , // ! event q vector table, joinable to EMEvents
199+ emevent::Q2xFT0M, emevent::Q2yFT0M, emevent::Q2xFT0A, emevent::Q2yFT0A, emevent::Q2xFT0C, emevent::Q2yFT0C,
200+ emevent::Q2xBPos, emevent::Q2yBPos, emevent::Q2xBNeg, emevent::Q2yBNeg, emevent::Q2xBTot, emevent::Q2yBTot,
201+ emevent::Q3xFT0M, emevent::Q3yFT0M, emevent::Q3xFT0A, emevent::Q3yFT0A, emevent::Q3xFT0C, emevent::Q3yFT0C,
202+ emevent::Q3xBPos, emevent::Q3yBPos, emevent::Q3xBNeg, emevent::Q3yBNeg, emevent::Q3xBTot, emevent::Q3yBTot,
203+ // emevent::Q4xFT0M, emevent::Q4yFT0M, emevent::Q4xFT0A, emevent::Q4yFT0A, emevent::Q4xFT0C, emevent::Q4yFT0C,
204+ // emevent::Q4xBPos, emevent::Q4yBPos, emevent::Q4xBNeg, emevent::Q4yBNeg, emevent::Q4xBTot, emevent::Q4yBTot,
205+
206+ // Dynamic columns
207+ emevent::EP2FT0M<emevent::Q2xFT0M, emevent::Q2yFT0M>,
208+ emevent::EP2FT0A<emevent::Q2xFT0A, emevent::Q2yFT0A>,
209+ emevent::EP2FT0C<emevent::Q2xFT0C, emevent::Q2yFT0C>,
210+ emevent::EP2BPos<emevent::Q2xBPos, emevent::Q2yBPos>,
211+ emevent::EP2BNeg<emevent::Q2xBNeg, emevent::Q2yBNeg>,
212+ emevent::EP2BTot<emevent::Q2xBTot, emevent::Q2yBTot>,
213+ emevent::EP3FT0M<emevent::Q3xFT0M, emevent::Q3yFT0M>,
214+ emevent::EP3FT0A<emevent::Q3xFT0A, emevent::Q3yFT0A>,
215+ emevent::EP3FT0C<emevent::Q3xFT0C, emevent::Q3yFT0C>,
216+ emevent::EP3BPos<emevent::Q3xBPos, emevent::Q3yBPos>,
217+ emevent::EP3BNeg<emevent::Q3xBNeg, emevent::Q3yBNeg>,
218+ emevent::EP3BTot<emevent::Q3xBTot, emevent::Q3yBTot>);
203219// emevent::EP4FT0M<emevent::Q4xFT0M, emevent::Q4yFT0M>,
204220// emevent::EP4FT0A<emevent::Q4xFT0A, emevent::Q4yFT0A>,
205221// emevent::EP4FT0C<emevent::Q4xFT0C, emevent::Q4yFT0C>,
206222// emevent::EP4BPos<emevent::Q4xBPos, emevent::Q4yBPos>,
207223// emevent::EP4BNeg<emevent::Q4xBNeg, emevent::Q4yBNeg>,
208224// emevent::EP4BTot<emevent::Q4xBTot, emevent::Q4yBTot>
225+
226+ DECLARE_SOA_TABLE_VERSIONED (EMEventsQvec_001, " AOD" , " EMEVENTQVEC" , 1 , // ! Main event information table
227+ emevent::Q2xFT0M, emevent::Q2yFT0M, emevent::Q2xFT0A, emevent::Q2yFT0A, emevent::Q2xFT0C, emevent::Q2yFT0C,
228+ emevent::Q2xFV0A, emevent::Q2yFV0A,
229+ emevent::Q2xBPos, emevent::Q2yBPos, emevent::Q2xBNeg, emevent::Q2yBNeg, emevent::Q2xBTot, emevent::Q2yBTot,
230+ emevent::Q3xFT0M, emevent::Q3yFT0M, emevent::Q3xFT0A, emevent::Q3yFT0A, emevent::Q3xFT0C, emevent::Q3yFT0C,
231+ emevent::Q3xFV0A, emevent::Q3yFV0A,
232+ emevent::Q3xBPos, emevent::Q3yBPos, emevent::Q3xBNeg, emevent::Q3yBNeg, emevent::Q3xBTot, emevent::Q3yBTot,
233+ // emevent::Q4xFT0M, emevent::Q4yFT0M, emevent::Q4xFT0A, emevent::Q4yFT0A, emevent::Q4xFT0C, emevent::Q4yFT0C,
234+ // emevent::Q4xBPos, emevent::Q4yBPos, emevent::Q4xBNeg, emevent::Q4yBNeg, emevent::Q4xBTot, emevent::Q4yBTot,
235+
236+ // Dynamic columns
237+ emevent::EP2FT0M<emevent::Q2xFT0M, emevent::Q2yFT0M>,
238+ emevent::EP2FT0A<emevent::Q2xFT0A, emevent::Q2yFT0A>,
239+ emevent::EP2FT0C<emevent::Q2xFT0C, emevent::Q2yFT0C>,
240+ emevent::EP2FV0A<emevent::Q2xFV0A, emevent::Q2yFV0A>,
241+ emevent::EP2BPos<emevent::Q2xBPos, emevent::Q2yBPos>,
242+ emevent::EP2BNeg<emevent::Q2xBNeg, emevent::Q2yBNeg>,
243+ emevent::EP2BTot<emevent::Q2xBTot, emevent::Q2yBTot>,
244+ emevent::EP3FT0M<emevent::Q3xFT0M, emevent::Q3yFT0M>,
245+ emevent::EP3FT0A<emevent::Q3xFT0A, emevent::Q3yFT0A>,
246+ emevent::EP3FT0C<emevent::Q3xFT0C, emevent::Q3yFT0C>,
247+ emevent::EP3FV0A<emevent::Q3xFV0A, emevent::Q3yFV0A>,
248+ emevent::EP3BPos<emevent::Q3xBPos, emevent::Q3yBPos>,
249+ emevent::EP3BNeg<emevent::Q3xBNeg, emevent::Q3yBNeg>,
250+ emevent::EP3BTot<emevent::Q3xBTot, emevent::Q3yBTot>);
251+
252+ using EMEventsQvec = EMEventsQvec_001;
209253using EMEventQvec = EMEventsQvec::iterator;
210254
211255DECLARE_SOA_TABLE (EMSWTriggerBits, " AOD" , " EMSWTBIT" , emevent::SWTAlias, o2::soa::Marker<1 >); // ! joinable to EMEvents
@@ -433,8 +477,8 @@ DECLARE_SOA_DYNAMIC_COLUMN(P, p, [](float pt, float eta) -> float { return pt *
433477DECLARE_SOA_DYNAMIC_COLUMN (Px, px, [](float pt, float phi) -> float { return pt * std::cos (phi); });
434478DECLARE_SOA_DYNAMIC_COLUMN (Py, py, [](float pt, float phi) -> float { return pt * std::sin (phi); });
435479DECLARE_SOA_DYNAMIC_COLUMN (Pz, pz, [](float pt, float eta) -> float { return pt * std::sinh (eta); });
436- DECLARE_SOA_DYNAMIC_COLUMN (Theta, theta, [](float tgl) -> float { return M_PI_2 - std::atan (tgl); });
437- DECLARE_SOA_DYNAMIC_COLUMN (Tgl, tgl, [](float eta) -> float { return std::tan (M_PI_2 - 2 * std::atan (std::exp (-eta))); });
480+ DECLARE_SOA_DYNAMIC_COLUMN (Theta, theta, [](float tgl) -> float { return o2::constants::math::PIHalf - std::atan (tgl); });
481+ DECLARE_SOA_DYNAMIC_COLUMN (Tgl, tgl, [](float eta) -> float { return std::tan (o2::constants::math::PIHalf - 2 * std::atan (std::exp (-eta))); });
438482DECLARE_SOA_DYNAMIC_COLUMN (MeanClusterSizeITS, meanClusterSizeITS, [](uint32_t itsClusterSizes) -> float {
439483 int total_cluster_size = 0 , nl = 0 ;
440484 for (unsigned int layer = 0 ; layer < 7 ; layer++) {
@@ -848,7 +892,7 @@ DECLARE_SOA_COLUMN(Signed1Pt, signed1Pt, float); //! (sign of charge)/Pt in c/
848892DECLARE_SOA_COLUMN (Eta, eta, float ); // !
849893DECLARE_SOA_COLUMN (Phi, phi, float ); // !
850894DECLARE_SOA_DYNAMIC_COLUMN (Pt, pt, [](float signed1Pt) -> float { return 1 .f / std::fabs (signed1Pt); });
851- DECLARE_SOA_DYNAMIC_COLUMN (Sign, sign, [](float signed1Pt) -> short { return (signed1Pt > 0 ) ? 1 : -1 ; }); // ! Charge: positive: 1, negative: -1
895+ DECLARE_SOA_DYNAMIC_COLUMN (Sign, sign, [](float signed1Pt) -> int16_t { return (signed1Pt > 0 ) ? 1 : -1 ; }); // ! Charge: positive: 1, negative: -1
852896} // namespace emprimarytrack
853897
854898DECLARE_SOA_TABLE_VERSIONED (EMPrimaryTracks_000, " AOD" , " EMPRIMARYTRACK" , 0 , // ! primary charged track table for 2PC
0 commit comments