4747using namespace o2 ;
4848using namespace o2 ::framework;
4949
50- namespace ep
51- {
52- static constexpr std::string_view centClasses[] = {
53- " Centrality_0-5/" , " Centrality_5-10/" , " Centrality_10-20/" , " Centrality_20-30/" ,
54- " Centrality_30-40/" , " Centrality_40-50/" , " Centrality_50-60/" , " Centrality_60-80/" };
55-
56- static constexpr std::string_view detNames[] = {
57- " FT0A" , " FT0C" , " FV0A" , " BPos" , " BNeg" ,
58- " FT0CUC" , " FT0CRC" , " FT0CTW" };
59- } // namespace ep
60-
6150struct evtPlanesTable {
62- // Configurables.
63- Configurable<std::string> cfgCentEsti{" cfgCentEsti" , // List from qVectorsTable.cxx
64- " FT0C" , " Centrality estimator (Run3): 0 = FT0M, 1 = FT0A, 2 = FT0C, 3 = FV0A" };
65- Configurable<std::string> cfgCorrStep{" cfgCorrStep" , // Used in the plotting.
66- " Recentered" , " Latest correction applied: Raw, Recentered, Twisted, Rescaled" };
67-
6851 // Table.
6952 Produces<aod::EvtPlanes> evPlane;
7053
@@ -77,89 +60,43 @@ struct evtPlanesTable {
7760
7861 void init (InitContext const &)
7962 {
80- // Fill the registry with the needed objects.
81- const AxisSpec axisCent{100 , 0 ., 100 ., fmt::format (" Centrality percentile ({})" , (std::string)cfgCentEsti)};
82- histosQA.add (" histCentFull" , " Centrality distribution for valid events" ,
83- HistType::kTH1F , {axisCent});
84-
85- const AxisSpec axisEP{200 , -TMath::Pi () / 2 ., TMath::Pi () / 2 .};
86-
87- for (int i = 0 ; i < 8 ; i++) {
88- histosQA.add ((" Centrality_0-5/histEP" + (std::string)ep::detNames[i]).c_str (),
89- (" #Psi_{2} for " + (std::string)ep::detNames[i] + (std::string)cfgCorrStep).c_str (),
90- HistType::kTH1F , {axisEP});
91- }
92-
93- for (int iBin = 1 ; iBin < 8 ; iBin++) {
94- histosQA.addClone (" Centrality_0-5/" , ep::centClasses[iBin].data ());
95- }
96-
9763 } // void init(InitContext const&)
9864
99- template <int cBin, int det, typename T>
100- void fillHistosQA (const T& val)
101- {
102- histosQA.fill (HIST (ep::centClasses[cBin]) + HIST (" histEP" ) + HIST (ep::detNames[det]),
103- val[det]);
104- }
105-
10665 void process (aod::Qvector const & qVec)
10766 {
10867 // Get the centrality bin, and fill the centrality distribution.
10968 int centBin = helperEP.GetCentBin (qVec.cent ());
11069 if (centBin < 0 || centBin > 8 ) {
11170 return ;
11271 }
113- histosQA.fill (HIST (" histCentFull" ), qVec.cent ());
114-
11572 // Calculate the event plane for each detector, then save them in the
11673 // corresponding distribution. The order is the same as in detNames[].
11774 // TODO: Update the calculation of the event plane for the central barrel.
118- float evtPlaneValues[8 ] = {0 .};
119- evtPlaneValues[0 ] = helperEP.GetEventPlane (qVec.qvecFT0ARe (), qVec.qvecFT0AIm ());
120- evtPlaneValues[1 ] = helperEP.GetEventPlane (qVec.qvecFT0CRe (), qVec.qvecFT0CIm ());
121- evtPlaneValues[2 ] = helperEP.GetEventPlane (qVec.qvecFV0ARe (), qVec.qvecFV0AIm ());
122- evtPlaneValues[3 ] = helperEP.GetEventPlane (1 ., 2 .);
123- evtPlaneValues[4 ] = helperEP.GetEventPlane (2 ., 1 .);
124-
125- evtPlaneValues[5 ] = helperEP.GetEventPlane (qVec.qvecFT0CUncorRe (), qVec.qvecFT0CUncorIm ());
126- evtPlaneValues[6 ] = helperEP.GetEventPlane (qVec.qvecFT0CRectrRe (), qVec.qvecFT0CRectrIm ());
127- evtPlaneValues[7 ] = helperEP.GetEventPlane (qVec.qvecFT0CTwistRe (), qVec.qvecFT0CTwistIm ());
128-
129- static_for<0 , 7 >([&](auto iDet) {
130- constexpr int indexDet = iDet.value ;
131- switch (centBin) {
132- case 0 :
133- fillHistosQA<0 , indexDet>(evtPlaneValues);
134- break ;
135- case 1 :
136- fillHistosQA<1 , indexDet>(evtPlaneValues);
137- break ;
138- case 2 :
139- fillHistosQA<2 , indexDet>(evtPlaneValues);
140- break ;
141- case 3 :
142- fillHistosQA<3 , indexDet>(evtPlaneValues);
143- break ;
144- case 4 :
145- fillHistosQA<4 , indexDet>(evtPlaneValues);
146- break ;
147- case 5 :
148- fillHistosQA<5 , indexDet>(evtPlaneValues);
149- break ;
150- case 6 :
151- fillHistosQA<6 , indexDet>(evtPlaneValues);
152- break ;
153- case 7 :
154- fillHistosQA<7 , indexDet>(evtPlaneValues);
155- break ;
156- }
157- });
75+
76+ float evtPlane[4 ];
77+ float evtPlaneBPos[4 ];
78+ float evtPlaneBNeg[4 ];
79+
80+ evtPlane[0 ] = helperEP.GetEventPlane (qVec.qvecUncorRe (), qVec.qvecUncorIm ());
81+ evtPlane[1 ] = helperEP.GetEventPlane (qVec.qvecRectrRe (), qVec.qvecRectrIm ());
82+ evtPlane[2 ] = helperEP.GetEventPlane (qVec.qvecTwistRe (), qVec.qvecTwistIm ());
83+ evtPlane[3 ] = helperEP.GetEventPlane (qVec.qvecFinalRe (), qVec.qvecFinalIm ());
84+
85+ evtPlaneBPos[0 ] = helperEP.GetEventPlane (qVec.qvecBPosUncorRe (), qVec.qvecBPosUncorIm ());
86+ evtPlaneBPos[1 ] = helperEP.GetEventPlane (qVec.qvecBPosRectrRe (), qVec.qvecBPosRectrIm ());
87+ evtPlaneBPos[2 ] = helperEP.GetEventPlane (qVec.qvecBPosTwistRe (), qVec.qvecBPosTwistIm ());
88+ evtPlaneBPos[3 ] = helperEP.GetEventPlane (qVec.qvecBPosFinalRe (), qVec.qvecBPosFinalIm ());
89+
90+ evtPlaneBNeg[0 ] = helperEP.GetEventPlane (qVec.qvecBNegUncorRe (), qVec.qvecBNegUncorIm ());
91+ evtPlaneBNeg[1 ] = helperEP.GetEventPlane (qVec.qvecBNegRectrRe (), qVec.qvecBNegRectrIm ());
92+ evtPlaneBNeg[2 ] = helperEP.GetEventPlane (qVec.qvecBNegTwistRe (), qVec.qvecBNegTwistIm ());
93+ evtPlaneBNeg[3 ] = helperEP.GetEventPlane (qVec.qvecBNegFinalRe (), qVec.qvecBNegFinalIm ());
94+
15895 // Fill the columns of the evtPlane table.
15996 evPlane (qVec.cent (),
160- evtPlaneValues [0 ], evtPlaneValues [1 ], evtPlaneValues[ 2 ],
161- evtPlaneValues[ 3 ], evtPlaneValues[ 4 ],
162- evtPlaneValues[ 5 ], evtPlaneValues[ 6 ], evtPlaneValues[ 7 ]);
97+ evtPlane [0 ], evtPlane [1 ], evtPlane[ 2 ], evtPlane[ 3 ],
98+ evtPlaneBPos[ 0 ], evtPlaneBPos[ 1 ], evtPlaneBPos[ 2 ], evtPlaneBPos[ 3 ],
99+ evtPlaneBNeg[ 0 ], evtPlaneBNeg[ 1 ], evtPlaneBNeg[ 2 ], evtPlaneBNeg[ 3 ]);
163100 } // void process(aod::Qvector const& qVec)
164101};
165102
0 commit comments