@@ -452,20 +452,32 @@ struct JetSpectraEseTask {
452452 if (doprocessESEEPData) {
453453 LOGF (info, " JetSpectraEseTask::init() - Event Plane Process" );
454454 registry.add (" eventQA/hPsi2FT0C" , " ;Centrality; #Psi_{2}" , {HistType::kTH2F , {{centAxis}, {150 , -2.5 , 2.5 }}});
455- registry.addClone (" eventQA/hPsi2FT0C" , " hPsi2FT0A" );
456- registry.addClone (" eventQA/hPsi2FT0C" , " hPsi2FV0A" );
457- registry.addClone (" eventQA/hPsi2FT0C" , " hPsi2TPCpos" );
458- registry.addClone (" eventQA/hPsi2FT0C" , " hPsi2TPCneg" );
455+ registry.addClone (" eventQA/hPsi2FT0C" , " eventQA/hPsi2FT0A" );
456+ registry.addClone (" eventQA/hPsi2FT0C" , " eventQA/hPsi2FV0A" );
457+ registry.addClone (" eventQA/hPsi2FT0C" , " eventQA/hPsi2TPCpos" );
458+ registry.addClone (" eventQA/hPsi2FT0C" , " eventQA/hPsi2TPCneg" );
459+
460+ registry.addClone (" eventQA/hPsi2FT0C" , " eventQA/hPsi3FT0C" );
461+ registry.addClone (" eventQA/hPsi2FT0C" , " eventQA/hPsi3FT0A" );
462+
463+ registry.addClone (" eventQA/hPsi2FT0C" , " eventQA/hPsi4FT0C" );
464+ registry.addClone (" eventQA/hPsi2FT0C" , " eventQA/hPsi4FT0A" );
465+
459466 registry.add (" eventQA/hCosPsi2AmC" , " ;Centrality;cos(2(#Psi_{2}^{A}-#Psi_{2}^{B}));#it{q}_{2}" , {HistType::kTH3F , {{centAxis}, {cosAxis}, {eseAxis}}});
460- registry.addClone (" eventQA/hCosPsi2AmC" , " hCosPsi2AmB" );
461- registry.addClone (" eventQA/hCosPsi2AmC" , " hCosPsi2BmC" );
467+ registry.addClone (" eventQA/hCosPsi2AmC" , " eventQA/hCosPsi2AmB" );
468+ registry.addClone (" eventQA/hCosPsi2AmC" , " eventQA/hCosPsi2BmC" );
469+
470+ registry.addClone (" eventQA/hCosPsi2AmC" , " eventQA/hCosPsi4AmC" );
471+ registry.addClone (" eventQA/hCosPsi4AmC" , " eventQA/hCosPsi4AmB" );
472+ registry.addClone (" eventQA/hCosPsi4AmC" , " eventQA/hCosPsi4BmC" );
473+
462474 registry.add (" eventQA/hQvecUncorV2" , " ;Centrality;Q_x;Q_y" , {HistType::kTH3F , {{centAxis}, {qvecAxis}, {qvecAxis}}});
463- registry.addClone (" eventQA/hQvecUncorV2" , " hQvecRectrV2" );
464- registry.addClone (" eventQA/hQvecUncorV2" , " hQvecTwistV2" );
465- registry.addClone (" eventQA/hQvecUncorV2" , " hQvecFinalV2" );
466- registry.addClone (" eventQA/hPsi2FT0C" , " hEPUncorV2" );
467- registry.addClone (" eventQA/hPsi2FT0C" , " hEPRectrV2" );
468- registry.addClone (" eventQA/hPsi2FT0C" , " hEPTwistV2" );
475+ registry.addClone (" eventQA/hQvecUncorV2" , " eventQA/ hQvecRectrV2" );
476+ registry.addClone (" eventQA/hQvecUncorV2" , " eventQA/ hQvecTwistV2" );
477+ registry.addClone (" eventQA/hQvecUncorV2" , " eventQA/ hQvecFinalV2" );
478+ registry.addClone (" eventQA/hPsi2FT0C" , " eventQA/ hEPUncorV2" );
479+ registry.addClone (" eventQA/hPsi2FT0C" , " eventQA/ hEPRectrV2" );
480+ registry.addClone (" eventQA/hPsi2FT0C" , " eventQA/ hEPTwistV2" );
469481 }
470482 if (doprocessESEBackground) {
471483 LOGF (info, " JetSpectraEseTask::init() - Background Process" );
@@ -1193,67 +1205,79 @@ struct JetSpectraEseTask {
11931205
11941206 static constexpr float InvalidValue = 999 .;
11951207
1196- // template <bool FillAllPsi, bool FillHist, typename EPCol>
11971208 template <EventPlaneFiller P, typename EPCol>
11981209 EventPlane procEP (EPCol const & vec)
11991210 {
1200- constexpr std::array<float , 2 > AmpCut{LowFT0Cut, 0.0 };
1201- auto computeEP = [&AmpCut](const std::vector<float >& vec, auto det, float n) { return vec[2 ] > AmpCut[det] ? (1.0 / n) * std::atan2 (vec[1 ], vec[0 ]) : InvalidValue; };
1202- std::map<std::string, float > epMap;
1203- std::map<std::string, float > ep3Map;
1204- auto vec1{qVecNoESE<DetID::FT0A , P.hist >(vec)};
1205- epMap[" FT0A" ] = computeEP (vec1, 0 , 2.0 );
1206- ep3Map[" FT0A" ] = computeEP (vec1, 0 , 3.0 );
1207- auto vec2{qVecNoESE<DetID::FT0C , false >(vec)};
1208- epMap[" FT0C" ] = computeEP (vec2, 0 , 2.0 );
1209- ep3Map[" FT0C" ] = computeEP (vec2, 0 , 3.0 );
1210- epMap[" FV0A" ] = computeEP (qVecNoESE<DetID::FV0A , false >(vec), 0 , 2.0 );
1211- epMap[" TPCpos" ] = computeEP (qVecNoESE<DetID::TPCpos, false >(vec), 1 , 2.0 );
1212- epMap[" TPCneg" ] = computeEP (qVecNoESE<DetID::TPCneg, false >(vec), 1 , 2.0 );
1211+ auto computeEP = [](const std::vector<float >& qVec, float minAmp, float harmonic) {
1212+ return qVec[2 ] > minAmp ? std::atan2 (qVec[1 ], qVec[0 ]) / harmonic : InvalidValue;
1213+ };
1214+
1215+ std::map<std::string, float > epMap{
1216+ {" FT0A" , computeEP (qVecNoESE<DetID::FT0A , P.hist >(vec, 2 ), LowFT0Cut, 2 .0f )},
1217+ {" FT0C" , computeEP (qVecNoESE<DetID::FT0C , false >(vec, 2 ), LowFT0Cut, 2 .0f )},
1218+ {" FV0A" , computeEP (qVecNoESE<DetID::FV0A , false >(vec), LowFT0Cut, 2 .0f )},
1219+ {" TPCpos" , computeEP (qVecNoESE<DetID::TPCpos, false >(vec), 0 .0f , 2 .0f )},
1220+ {" TPCneg" , computeEP (qVecNoESE<DetID::TPCneg, false >(vec), 0 .0f , 2 .0f )}};
1221+ std::map<std::string, float > ep3Map{
1222+ {" FT0A" , computeEP (qVecNoESE<DetID::FT0A , false >(vec, 3 ), LowFT0Cut, 3 .0f )},
1223+ {" FT0C" , computeEP (qVecNoESE<DetID::FT0C , false >(vec, 3 ), LowFT0Cut, 3 .0f )}};
1224+ std::map<std::string, float > ep4Map{
1225+ {" FT0A" , computeEP (qVecNoESE<DetID::FT0A , false >(vec, 4 ), LowFT0Cut, 4 .0f )},
1226+ {" FT0C" , computeEP (qVecNoESE<DetID::FT0C , false >(vec, 4 ), LowFT0Cut, 4 .0f )},
1227+ {" FV0A" , computeEP (qVecNoESE<DetID::FV0A , false >(vec, 4 ), LowFT0Cut, 4 .0f )},
1228+ {" TPCpos" , computeEP (qVecNoESE<DetID::TPCpos, false >(vec, 4 ), 0 .0f , 4 .0f )},
1229+ {" TPCneg" , computeEP (qVecNoESE<DetID::TPCneg, false >(vec, 4 ), 0 .0f , 4 .0f )}};
1230+
12131231 if constexpr (P.psi ) {
1214- if constexpr (P.hist )
1215- fillEP (/* std::make_index_sequence<5>{},*/ vec, epMap);
1216- auto cosPsi = [](float psiX, float psiY) { return (static_cast <double >(psiX) == InvalidValue || static_cast <double >(psiY) == InvalidValue) ? InvalidValue : std::cos (2.0 * (psiX - psiY)); };
1217- std::array<float , 3 > epCorrContainer{};
1218- epCorrContainer[0 ] = cosPsi (epMap.at (cfgEPRefA), epMap.at (cfgEPRefC));
1219- epCorrContainer[1 ] = cosPsi (epMap.at (cfgEPRefA), epMap.at (cfgEPRefB));
1220- epCorrContainer[2 ] = cosPsi (epMap.at (cfgEPRefB), epMap.at (cfgEPRefC));
1221- if constexpr (P.hist )
1222- fillEPCos (/* std::make_index_sequence<3>{},*/ vec, epCorrContainer);
1223- }
1224- EventPlane localPlane;
1225- localPlane.psi2 = epMap.at (cfgEPRefA);
1226- localPlane.psi3 = ep3Map.at (cfgEPRefA);
1227- return localPlane;
1228- // return epMap.at(cfgEPRefA);
1232+ if constexpr (P.hist ) {
1233+ fillEP (vec, epMap, ep3Map, ep4Map);
1234+ }
1235+
1236+ auto cosPsi = [](float psiX, float psiY) {
1237+ return psiX == InvalidValue || psiY == InvalidValue ? InvalidValue : std::cos (2 .0f * (psiX - psiY));
1238+ };
1239+ const std::array<float , 3 > epCorrContainer{
1240+ cosPsi (epMap.at (cfgEPRefA), epMap.at (cfgEPRefC)),
1241+ cosPsi (epMap.at (cfgEPRefA), epMap.at (cfgEPRefB)),
1242+ cosPsi (epMap.at (cfgEPRefB), epMap.at (cfgEPRefC))};
1243+ const std::array<float , 3 > epCorrContainer4{
1244+ cosPsi (ep4Map.at (cfgEPRefA), ep4Map.at (cfgEPRefC)),
1245+ cosPsi (ep4Map.at (cfgEPRefA), ep4Map.at (cfgEPRefB)),
1246+ cosPsi (ep4Map.at (cfgEPRefB), ep4Map.at (cfgEPRefC))};
1247+
1248+ if constexpr (P.hist ) {
1249+ fillEPCos (vec, epCorrContainer, epCorrContainer4);
1250+ }
1251+ }
1252+ return {epMap.at (cfgEPRefA), ep3Map.at (cfgEPRefA)};
12291253 }
1230- template </* std::size_t... Idx, */ typename collision>
1231- void fillEPCos (/* const std::index_sequence<Idx...>&, */ const collision& col , const std::array<float , 3 >& Corr )
1254+ template <typename collision>
1255+ void fillEPCos (const collision& col, const std::array< float , 3 >& Corr , const std::array<float , 3 >& Corr4 )
12321256 {
1233- // static constexpr std::string CosList[] = {"hCosPsi2AmC", "hCosPsi2AmB", "hCosPsi2BmC"};
1234- // (registry.fill(HIST(CosList[Idx]), col.centrality(), Corr[Idx], col.qPERCFT0C()[0]), ...);
12351257 registry.fill (HIST (" eventQA/hCosPsi2AmC" ), col.centFT0M (), Corr[0 ], col.qPERCFT0C ()[0 ]);
12361258 registry.fill (HIST (" eventQA/hCosPsi2AmB" ), col.centFT0M (), Corr[1 ], col.qPERCFT0C ()[0 ]);
12371259 registry.fill (HIST (" eventQA/hCosPsi2BmC" ), col.centFT0M (), Corr[2 ], col.qPERCFT0C ()[0 ]);
1260+
1261+ registry.fill (HIST (" eventQA/hCosPsi4AmC" ), col.centFT0M (), Corr4[0 ], col.qPERCFT0C ()[0 ]);
1262+ registry.fill (HIST (" eventQA/hCosPsi4AmB" ), col.centFT0M (), Corr4[1 ], col.qPERCFT0C ()[0 ]);
1263+ registry.fill (HIST (" eventQA/hCosPsi4BmC" ), col.centFT0M (), Corr4[2 ], col.qPERCFT0C ()[0 ]);
12381264 }
12391265
1240- template </* std::size_t... Idx, */ typename collision>
1241- void fillEP (/* const std::index_sequence<Idx...>&, */ const collision& col , const std::map<std::string, float >& epMap )
1266+ template <typename collision>
1267+ void fillEP (const collision& col, const std::map<std::string, float >& epMap, const std::map<std::string, float >& ep3Map , const std::map<std::string, float >& ep4Map )
12421268 {
1243- // static constexpr std::string_view EpList[] = {"hPsi2FT0A", "hPsi2FV0A", "hPsi2FT0C", "hPsi2TPCpos", "hPsi2TPCneg"};
1244- // (registry.fill(HIST(EpList[Idx]), col.centrality(), epMap.at(std::string(RemovePrefix(EpList[Idx])))), ...);
12451269 registry.fill (HIST (" eventQA/hPsi2FT0A" ), col.centFT0M (), epMap.at (" FT0A" ));
12461270 registry.fill (HIST (" eventQA/hPsi2FV0A" ), col.centFT0M (), epMap.at (" FV0A" ));
12471271 registry.fill (HIST (" eventQA/hPsi2FT0C" ), col.centFT0M (), epMap.at (" FT0C" ));
12481272 registry.fill (HIST (" eventQA/hPsi2TPCpos" ), col.centFT0M (), epMap.at (" TPCpos" ));
12491273 registry.fill (HIST (" eventQA/hPsi2TPCneg" ), col.centFT0M (), epMap.at (" TPCneg" ));
1250- }
1251- constexpr std::string_view RemovePrefix (std::string_view str)
1252- {
1253- constexpr std::string_view Prefix{" hPsi2" };
1254- return str.substr (Prefix.size ());
1255- }
12561274
1275+ registry.fill (HIST (" eventQA/hPsi3FT0A" ), col.centFT0M (), ep3Map.at (" FT0A" ));
1276+ registry.fill (HIST (" eventQA/hPsi3FT0C" ), col.centFT0M (), ep3Map.at (" FT0C" ));
1277+
1278+ registry.fill (HIST (" eventQA/hPsi4FT0A" ), col.centFT0M (), ep4Map.at (" FT0A" ));
1279+ registry.fill (HIST (" eventQA/hPsi4FT0C" ), col.centFT0M (), ep4Map.at (" FT0C" ));
1280+ }
12571281 constexpr int detIDN (const DetID id)
12581282 {
12591283 switch (id) {
@@ -1275,14 +1299,14 @@ struct JetSpectraEseTask {
12751299 return -1 ;
12761300 }
12771301
1302+ const int secondHarmonic{2 };
12781303 template <DetID id, bool fill, typename Col>
1279- std::vector<float > qVecNoESE (Col collision)
1304+ std::vector<float > qVecNoESE (Col collision, int nmode = 2 )
12801305 {
1281- // const int nmode{2};
12821306 int detId{detIDN (id)};
1283- int detInd{detId * 4 /* + cfgnTotalSystem * 4 * (nmode - 2)*/ };
1307+ int detInd{detId * 4 + cfgnTotalSystem * 4 * (nmode - 2 )};
12841308 if constexpr (fill) {
1285- if (collision.qvecAmp ()[detInd] > LowFT0Cut) {
1309+ if (collision.qvecAmp ()[detInd] > LowFT0Cut && nmode == secondHarmonic ) {
12861310 registry.fill (HIST (" eventQA/hQvecUncorV2" ), collision.centFT0M (), collision.qvecRe ()[detInd], collision.qvecIm ()[detInd]);
12871311 registry.fill (HIST (" eventQA/hQvecRectrV2" ), collision.centFT0M (), collision.qvecRe ()[detInd + 1 ], collision.qvecIm ()[detInd + 1 ]);
12881312 registry.fill (HIST (" eventQA/hQvecTwistV2" ), collision.centFT0M (), collision.qvecRe ()[detInd + 2 ], collision.qvecIm ()[detInd + 2 ]);
0 commit comments