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"
1819#include " Common/DataModel/Qvectors.h"
1920#include " Common/DataModel/TrackSelectionTables.h"
2021
21- #include " Framework/AnalysisDataModel.h"
22+ #include < CommonConstants/MathConstants.h>
23+ #include < Framework/AnalysisDataModel.h>
2224
25+ #include < Rtypes.h>
26+
27+ #include < array>
28+ #include < cmath>
29+ #include < cstdint>
2330#include < string>
2431#include < unordered_map>
2532#include < vector>
@@ -82,6 +89,8 @@ DECLARE_SOA_COLUMN(Q2xFT0A, q2xft0a, float); //!
8289DECLARE_SOA_COLUMN (Q2yFT0A, q2yft0a, float ); // ! Qy for 2nd harmonics in FT0A (i.e. positive eta)
8390DECLARE_SOA_COLUMN (Q2xFT0C, q2xft0c, float ); // ! Qx for 2nd harmonics in FT0C (i.e. negative eta)
8491DECLARE_SOA_COLUMN (Q2yFT0C, q2yft0c, float ); // ! Qy for 2nd harmonics in FT0C (i.e. negative eta)
92+ DECLARE_SOA_COLUMN (Q2xFV0A, q2xfv0a, float ); // ! Qx for 2nd harmonics in FV0A (i.e. positive eta)
93+ DECLARE_SOA_COLUMN (Q2yFV0A, q2yfv0a, float ); // ! Qy for 2nd harmonics in FV0A (i.e. positive eta)
8594DECLARE_SOA_COLUMN (Q2xBPos, q2xbpos, float ); // ! Qx for 2nd harmonics in Barrel positive eta region
8695DECLARE_SOA_COLUMN (Q2yBPos, q2ybpos, float ); // ! Qy for 2nd harmonics in Barrel positive eta region
8796DECLARE_SOA_COLUMN (Q2xBNeg, q2xbneg, float ); // ! Qx for 2nd harmonics in Barrel negative eta region
@@ -94,6 +103,8 @@ DECLARE_SOA_COLUMN(Q3xFT0A, q3xft0a, float); //!
94103DECLARE_SOA_COLUMN (Q3yFT0A, q3yft0a, float ); // ! Qy for 3rd harmonics in FT0A (i.e. positive eta)
95104DECLARE_SOA_COLUMN (Q3xFT0C, q3xft0c, float ); // ! Qx for 3rd harmonics in FT0C (i.e. negative eta)
96105DECLARE_SOA_COLUMN (Q3yFT0C, q3yft0c, float ); // ! Qy for 3rd harmonics in FT0C (i.e. negative eta)
106+ DECLARE_SOA_COLUMN (Q3xFV0A, q3xfv0a, float ); // ! Qx for 3rd harmonics in FV0A (i.e. positive eta)
107+ DECLARE_SOA_COLUMN (Q3yFV0A, q3yfv0a, float ); // ! Qy for 3rd harmonics in FV0A (i.e. positive eta)
97108DECLARE_SOA_COLUMN (Q3xBPos, q3xbpos, float ); // ! Qx for 3rd harmonics in Barrel positive eta region
98109DECLARE_SOA_COLUMN (Q3yBPos, q3ybpos, float ); // ! Qy for 3rd harmonics in Barrel positive eta region
99110DECLARE_SOA_COLUMN (Q3xBNeg, q3xbneg, float ); // ! Qx for 3rd harmonics in Barrel negative eta region
@@ -106,6 +117,8 @@ DECLARE_SOA_COLUMN(Q4xFT0A, q4xft0a, float); //!
106117DECLARE_SOA_COLUMN (Q4yFT0A, q4yft0a, float ); // ! Qy for 4th harmonics in FT0A (i.e. positive eta)
107118DECLARE_SOA_COLUMN (Q4xFT0C, q4xft0c, float ); // ! Qx for 4th harmonics in FT0C (i.e. negative eta)
108119DECLARE_SOA_COLUMN (Q4yFT0C, q4yft0c, float ); // ! Qy for 4th harmonics in FT0C (i.e. negative eta)
120+ DECLARE_SOA_COLUMN (Q4xFV0A, q4xfv0a, float ); // ! Qx for 4th harmonics in FV0A (i.e. positive eta)
121+ DECLARE_SOA_COLUMN (Q4yFV0A, q4yfv0a, float ); // ! Qy for 4th harmonics in FV0A (i.e. positive eta)
109122DECLARE_SOA_COLUMN (Q4xBPos, q4xbpos, float ); // ! Qx for 4th harmonics in Barrel positive eta region
110123DECLARE_SOA_COLUMN (Q4yBPos, q4ybpos, float ); // ! Qy for 4th harmonics in Barrel positive eta region
111124DECLARE_SOA_COLUMN (Q4xBNeg, q4xbneg, float ); // ! Qx for 4th harmonics in Barrel negative eta region
@@ -126,18 +139,21 @@ DECLARE_SOA_DYNAMIC_COLUMN(Sel8, sel8, [](uint64_t selection_bit) -> bool { retu
126139DECLARE_SOA_DYNAMIC_COLUMN (EP2FT0M, ep2ft0m, [](float q2x, float q2y) -> float { return std::atan2 (q2y, q2x) / 2.0 ; });
127140DECLARE_SOA_DYNAMIC_COLUMN (EP2FT0A, ep2ft0a, [](float q2x, float q2y) -> float { return std::atan2 (q2y, q2x) / 2.0 ; });
128141DECLARE_SOA_DYNAMIC_COLUMN (EP2FT0C, ep2ft0c, [](float q2x, float q2y) -> float { return std::atan2 (q2y, q2x) / 2.0 ; });
142+ DECLARE_SOA_DYNAMIC_COLUMN (EP2FV0A, ep2fv0a, [](float q2x, float q2y) -> float { return std::atan2 (q2y, q2x) / 2.0 ; });
129143DECLARE_SOA_DYNAMIC_COLUMN (EP2BPos, ep2bpos, [](float q2x, float q2y) -> float { return std::atan2 (q2y, q2x) / 2.0 ; });
130144DECLARE_SOA_DYNAMIC_COLUMN (EP2BNeg, ep2bneg, [](float q2x, float q2y) -> float { return std::atan2 (q2y, q2x) / 2.0 ; });
131145DECLARE_SOA_DYNAMIC_COLUMN (EP2BTot, ep2btot, [](float q2x, float q2y) -> float { return std::atan2 (q2y, q2x) / 2.0 ; });
132146DECLARE_SOA_DYNAMIC_COLUMN (EP3FT0M, ep3ft0m, [](float q3x, float q3y) -> float { return std::atan2 (q3y, q3x) / 3.0 ; });
133147DECLARE_SOA_DYNAMIC_COLUMN (EP3FT0A, ep3ft0a, [](float q3x, float q3y) -> float { return std::atan2 (q3y, q3x) / 3.0 ; });
134148DECLARE_SOA_DYNAMIC_COLUMN (EP3FT0C, ep3ft0c, [](float q3x, float q3y) -> float { return std::atan2 (q3y, q3x) / 3.0 ; });
149+ DECLARE_SOA_DYNAMIC_COLUMN (EP3FV0A, ep3fv0a, [](float q3x, float q3y) -> float { return std::atan2 (q3y, q3x) / 3.0 ; });
135150DECLARE_SOA_DYNAMIC_COLUMN (EP3BPos, ep3bpos, [](float q3x, float q3y) -> float { return std::atan2 (q3y, q3x) / 3.0 ; });
136151DECLARE_SOA_DYNAMIC_COLUMN (EP3BNeg, ep3bneg, [](float q3x, float q3y) -> float { return std::atan2 (q3y, q3x) / 3.0 ; });
137152DECLARE_SOA_DYNAMIC_COLUMN (EP3BTot, ep3btot, [](float q3x, float q3y) -> float { return std::atan2 (q3y, q3x) / 3.0 ; });
138153DECLARE_SOA_DYNAMIC_COLUMN (EP4FT0M, ep4ft0m, [](float q4x, float q4y) -> float { return std::atan2 (q4y, q4x) / 4.0 ; });
139154DECLARE_SOA_DYNAMIC_COLUMN (EP4FT0A, ep4ft0a, [](float q4x, float q4y) -> float { return std::atan2 (q4y, q4x) / 4.0 ; });
140155DECLARE_SOA_DYNAMIC_COLUMN (EP4FT0C, ep4ft0c, [](float q4x, float q4y) -> float { return std::atan2 (q4y, q4x) / 4.0 ; });
156+ DECLARE_SOA_DYNAMIC_COLUMN (EP4FV0A, ep4fv0a, [](float q4x, float q4y) -> float { return std::atan2 (q4y, q4x) / 4.0 ; });
141157DECLARE_SOA_DYNAMIC_COLUMN (EP4BPos, ep4bpos, [](float q4x, float q4y) -> float { return std::atan2 (q4y, q4x) / 4.0 ; });
142158DECLARE_SOA_DYNAMIC_COLUMN (EP4BNeg, ep4bneg, [](float q4x, float q4y) -> float { return std::atan2 (q4y, q4x) / 4.0 ; });
143159DECLARE_SOA_DYNAMIC_COLUMN (EP4BTot, ep4btot, [](float q4x, float q4y) -> float { return std::atan2 (q4y, q4x) / 4.0 ; });
@@ -180,33 +196,61 @@ DECLARE_SOA_TABLE(EMEventsCent, "AOD", "EMEVENTCENT", //! event centrality tab
180196 cent::CentFT0M, cent::CentFT0A, cent::CentFT0C);
181197using EMEventCent = EMEventsCent::iterator;
182198
183- DECLARE_SOA_TABLE (EMEventsQvec , " AOD" , " EMEVENTQVEC" , // ! event q vector table, joinable to EMEvents
184- emevent::Q2xFT0M, emevent::Q2yFT0M, emevent::Q2xFT0A, emevent::Q2yFT0A, emevent::Q2xFT0C, emevent::Q2yFT0C,
185- emevent::Q2xBPos, emevent::Q2yBPos, emevent::Q2xBNeg, emevent::Q2yBNeg, emevent::Q2xBTot, emevent::Q2yBTot,
186- emevent::Q3xFT0M, emevent::Q3yFT0M, emevent::Q3xFT0A, emevent::Q3yFT0A, emevent::Q3xFT0C, emevent::Q3yFT0C,
187- emevent::Q3xBPos, emevent::Q3yBPos, emevent::Q3xBNeg, emevent::Q3yBNeg, emevent::Q3xBTot, emevent::Q3yBTot,
188- // emevent::Q4xFT0M, emevent::Q4yFT0M, emevent::Q4xFT0A, emevent::Q4yFT0A, emevent::Q4xFT0C, emevent::Q4yFT0C,
189- // emevent::Q4xBPos, emevent::Q4yBPos, emevent::Q4xBNeg, emevent::Q4yBNeg, emevent::Q4xBTot, emevent::Q4yBTot,
190-
191- // Dynamic columns
192- emevent::EP2FT0M<emevent::Q2xFT0M, emevent::Q2yFT0M>,
193- emevent::EP2FT0A<emevent::Q2xFT0A, emevent::Q2yFT0A>,
194- emevent::EP2FT0C<emevent::Q2xFT0C, emevent::Q2yFT0C>,
195- emevent::EP2BPos<emevent::Q2xBPos, emevent::Q2yBPos>,
196- emevent::EP2BNeg<emevent::Q2xBNeg, emevent::Q2yBNeg>,
197- emevent::EP2BTot<emevent::Q2xBTot, emevent::Q2yBTot>,
198- emevent::EP3FT0M<emevent::Q3xFT0M, emevent::Q3yFT0M>,
199- emevent::EP3FT0A<emevent::Q3xFT0A, emevent::Q3yFT0A>,
200- emevent::EP3FT0C<emevent::Q3xFT0C, emevent::Q3yFT0C>,
201- emevent::EP3BPos<emevent::Q3xBPos, emevent::Q3yBPos>,
202- emevent::EP3BNeg<emevent::Q3xBNeg, emevent::Q3yBNeg>,
203- emevent::EP3BTot<emevent::Q3xBTot, emevent::Q3yBTot>);
199+ DECLARE_SOA_TABLE_VERSIONED (EMEventsQvec_000 , " AOD" , " EMEVENTQVEC" , 0 , // ! event q vector table, joinable to EMEvents
200+ emevent::Q2xFT0M, emevent::Q2yFT0M, emevent::Q2xFT0A, emevent::Q2yFT0A, emevent::Q2xFT0C, emevent::Q2yFT0C,
201+ emevent::Q2xBPos, emevent::Q2yBPos, emevent::Q2xBNeg, emevent::Q2yBNeg, emevent::Q2xBTot, emevent::Q2yBTot,
202+ emevent::Q3xFT0M, emevent::Q3yFT0M, emevent::Q3xFT0A, emevent::Q3yFT0A, emevent::Q3xFT0C, emevent::Q3yFT0C,
203+ emevent::Q3xBPos, emevent::Q3yBPos, emevent::Q3xBNeg, emevent::Q3yBNeg, emevent::Q3xBTot, emevent::Q3yBTot,
204+ // emevent::Q4xFT0M, emevent::Q4yFT0M, emevent::Q4xFT0A, emevent::Q4yFT0A, emevent::Q4xFT0C, emevent::Q4yFT0C,
205+ // emevent::Q4xBPos, emevent::Q4yBPos, emevent::Q4xBNeg, emevent::Q4yBNeg, emevent::Q4xBTot, emevent::Q4yBTot,
206+
207+ // Dynamic columns
208+ emevent::EP2FT0M<emevent::Q2xFT0M, emevent::Q2yFT0M>,
209+ emevent::EP2FT0A<emevent::Q2xFT0A, emevent::Q2yFT0A>,
210+ emevent::EP2FT0C<emevent::Q2xFT0C, emevent::Q2yFT0C>,
211+ emevent::EP2BPos<emevent::Q2xBPos, emevent::Q2yBPos>,
212+ emevent::EP2BNeg<emevent::Q2xBNeg, emevent::Q2yBNeg>,
213+ emevent::EP2BTot<emevent::Q2xBTot, emevent::Q2yBTot>,
214+ emevent::EP3FT0M<emevent::Q3xFT0M, emevent::Q3yFT0M>,
215+ emevent::EP3FT0A<emevent::Q3xFT0A, emevent::Q3yFT0A>,
216+ emevent::EP3FT0C<emevent::Q3xFT0C, emevent::Q3yFT0C>,
217+ emevent::EP3BPos<emevent::Q3xBPos, emevent::Q3yBPos>,
218+ emevent::EP3BNeg<emevent::Q3xBNeg, emevent::Q3yBNeg>,
219+ emevent::EP3BTot<emevent::Q3xBTot, emevent::Q3yBTot>);
204220// emevent::EP4FT0M<emevent::Q4xFT0M, emevent::Q4yFT0M>,
205221// emevent::EP4FT0A<emevent::Q4xFT0A, emevent::Q4yFT0A>,
206222// emevent::EP4FT0C<emevent::Q4xFT0C, emevent::Q4yFT0C>,
207223// emevent::EP4BPos<emevent::Q4xBPos, emevent::Q4yBPos>,
208224// emevent::EP4BNeg<emevent::Q4xBNeg, emevent::Q4yBNeg>,
209225// emevent::EP4BTot<emevent::Q4xBTot, emevent::Q4yBTot>
226+
227+ DECLARE_SOA_TABLE_VERSIONED (EMEventsQvec_001, " AOD" , " EMEVENTQVEC" , 1 , // ! Main event information table
228+ emevent::Q2xFT0M, emevent::Q2yFT0M, emevent::Q2xFT0A, emevent::Q2yFT0A, emevent::Q2xFT0C, emevent::Q2yFT0C,
229+ emevent::Q2xFV0A, emevent::Q2yFV0A,
230+ emevent::Q2xBPos, emevent::Q2yBPos, emevent::Q2xBNeg, emevent::Q2yBNeg, emevent::Q2xBTot, emevent::Q2yBTot,
231+ emevent::Q3xFT0M, emevent::Q3yFT0M, emevent::Q3xFT0A, emevent::Q3yFT0A, emevent::Q3xFT0C, emevent::Q3yFT0C,
232+ emevent::Q3xFV0A, emevent::Q3yFV0A,
233+ emevent::Q3xBPos, emevent::Q3yBPos, emevent::Q3xBNeg, emevent::Q3yBNeg, emevent::Q3xBTot, emevent::Q3yBTot,
234+ // emevent::Q4xFT0M, emevent::Q4yFT0M, emevent::Q4xFT0A, emevent::Q4yFT0A, emevent::Q4xFT0C, emevent::Q4yFT0C,
235+ // emevent::Q4xBPos, emevent::Q4yBPos, emevent::Q4xBNeg, emevent::Q4yBNeg, emevent::Q4xBTot, emevent::Q4yBTot,
236+
237+ // Dynamic columns
238+ emevent::EP2FT0M<emevent::Q2xFT0M, emevent::Q2yFT0M>,
239+ emevent::EP2FT0A<emevent::Q2xFT0A, emevent::Q2yFT0A>,
240+ emevent::EP2FT0C<emevent::Q2xFT0C, emevent::Q2yFT0C>,
241+ emevent::EP2FV0A<emevent::Q2xFV0A, emevent::Q2yFV0A>,
242+ emevent::EP2BPos<emevent::Q2xBPos, emevent::Q2yBPos>,
243+ emevent::EP2BNeg<emevent::Q2xBNeg, emevent::Q2yBNeg>,
244+ emevent::EP2BTot<emevent::Q2xBTot, emevent::Q2yBTot>,
245+ emevent::EP3FT0M<emevent::Q3xFT0M, emevent::Q3yFT0M>,
246+ emevent::EP3FT0A<emevent::Q3xFT0A, emevent::Q3yFT0A>,
247+ emevent::EP3FT0C<emevent::Q3xFT0C, emevent::Q3yFT0C>,
248+ emevent::EP3FV0A<emevent::Q3xFV0A, emevent::Q3yFV0A>,
249+ emevent::EP3BPos<emevent::Q3xBPos, emevent::Q3yBPos>,
250+ emevent::EP3BNeg<emevent::Q3xBNeg, emevent::Q3yBNeg>,
251+ emevent::EP3BTot<emevent::Q3xBTot, emevent::Q3yBTot>);
252+
253+ using EMEventsQvec = EMEventsQvec_001;
210254using EMEventQvec = EMEventsQvec::iterator;
211255
212256DECLARE_SOA_TABLE (EMSWTriggerBits, " AOD" , " EMSWTBIT" , emevent::SWTAlias, o2::soa::Marker<1 >); // ! joinable to EMEvents
@@ -454,8 +498,8 @@ DECLARE_SOA_DYNAMIC_COLUMN(P, p, [](float pt, float eta) -> float { return pt *
454498DECLARE_SOA_DYNAMIC_COLUMN (Px, px, [](float pt, float phi) -> float { return pt * std::cos (phi); });
455499DECLARE_SOA_DYNAMIC_COLUMN (Py, py, [](float pt, float phi) -> float { return pt * std::sin (phi); });
456500DECLARE_SOA_DYNAMIC_COLUMN (Pz, pz, [](float pt, float eta) -> float { return pt * std::sinh (eta); });
457- DECLARE_SOA_DYNAMIC_COLUMN (Theta, theta, [](float tgl) -> float { return M_PI_2 - std::atan (tgl); });
458- DECLARE_SOA_DYNAMIC_COLUMN (Tgl, tgl, [](float eta) -> float { return std::tan (M_PI_2 - 2 * std::atan (std::exp (-eta))); });
501+ DECLARE_SOA_DYNAMIC_COLUMN (Theta, theta, [](float tgl) -> float { return o2::constants::math::PIHalf - std::atan (tgl); });
502+ DECLARE_SOA_DYNAMIC_COLUMN (Tgl, tgl, [](float eta) -> float { return std::tan (o2::constants::math::PIHalf - 2 * std::atan (std::exp (-eta))); });
459503DECLARE_SOA_DYNAMIC_COLUMN (MeanClusterSizeITS, meanClusterSizeITS, [](uint32_t itsClusterSizes) -> float {
460504 int total_cluster_size = 0 , nl = 0 ;
461505 for (unsigned int layer = 0 ; layer < 7 ; layer++) {
0 commit comments