@@ -91,7 +91,14 @@ DECLARE_SOA_TABLE(HfCandFlowInfos, "AOD", "HFCANDFLOWINFO",
9191 full::MlScore1,
9292 full::ScalarProd,
9393 full::Cent);
94- DECLARE_SOA_TABLE (HfRedQVecEsEs, " AOD" , " HFREDQVECESE" , full::RedQVec);
94+ DECLARE_SOA_TABLE (HfCandFlowEses, " AOD" , " HFCANDFLOWESE" ,
95+ full::M,
96+ full::Pt,
97+ full::MlScore0,
98+ full::MlScore1,
99+ full::ScalarProd,
100+ full::Cent,
101+ full::RedQVec);
95102} // namespace o2::aod
96103
97104enum DecayChannel { DplusToPiKPi = 0 ,
@@ -115,7 +122,7 @@ enum RunMode {
115122struct HfTaskFlowCharmHadrons {
116123 Produces<o2::aod::HfCandMPtInfos> rowCandMassPtMl;
117124 Produces<o2::aod::HfCandFlowInfos> rowCandMassPtMlSpCent;
118- Produces<o2::aod::HfRedQVecEsEs> rowRedQVecEsE ;
125+ Produces<o2::aod::HfCandFlowEses> rowCandFlowEsE ;
119126
120127 Configurable<int > harmonic{" harmonic" , 2 , " harmonic number" };
121128 Configurable<int > qVecDetector{" qVecDetector" , 3 , " Detector for Q vector estimation (FV0A: 0, FT0M: 1, FT0A: 2, FT0C: 3, TPC Pos: 4, TPC Neg: 5, TPC Tot: 6)" };
@@ -299,23 +306,23 @@ struct HfTaskFlowCharmHadrons {
299306 }
300307
301308 if (doprocessResolutionSP || doprocessResolutionSPEsE) { // enable resolution histograms only for resolution process
302- registry.add (" spReso/hSpResoFT0cFT0a" , " hSpResoFT0cFT0a; centrality; Q_{FT0c} #bullet Q_{FT0a}" , {HistType::kTH2F , {thnAxisCent, thnAxisScalarProd}});
303- registry.add (" spReso/hSpResoFT0cFV0a" , " hSpResoFT0cFV0a; centrality; Q_{FT0c} #bullet Q_{FV0a}" , {HistType::kTH2F , {thnAxisCent, thnAxisScalarProd}});
304- registry.add (" spReso/hSpResoFT0cTPCpos" , " hSpResoFT0cTPCpos; centrality; Q_{FT0c} #bullet Q_{TPCpos}" , {HistType::kTH2F , {thnAxisCent, thnAxisScalarProd}});
305- registry.add (" spReso/hSpResoFT0cTPCneg" , " hSpResoFT0cTPCneg; centrality; Q_{FT0c} #bullet Q_{TPCneg}" , {HistType::kTH2F , {thnAxisCent, thnAxisScalarProd}});
306- registry.add (" spReso/hSpResoFT0cTPCtot" , " hSpResoFT0cTPCtot; centrality; Q_{FT0c} #bullet Q_{TPCtot}" , {HistType::kTH2F , {thnAxisCent, thnAxisScalarProd}});
307- registry.add (" spReso/hSpResoFT0aFV0a" , " hSpResoFT0aFV0a; centrality; Q_{FT0a} #bullet Q_{FV0a}" , {HistType::kTH2F , {thnAxisCent, thnAxisScalarProd}});
308- registry.add (" spReso/hSpResoFT0aTPCpos" , " hSpResoFT0aTPCpos; centrality; Q_{FT0a} #bullet Q_{TPCpos}" , {HistType::kTH2F , {thnAxisCent, thnAxisScalarProd}});
309- registry.add (" spReso/hSpResoFT0aTPCneg" , " hSpResoFT0aTPCneg; centrality; Q_{FT0a} #bullet Q_{TPCneg}" , {HistType::kTH2F , {thnAxisCent, thnAxisScalarProd}});
310- registry.add (" spReso/hSpResoFT0aTPCtot" , " hSpResoFT0aTPCtot; centrality; Q_{FT0m} #bullet Q_{TPCtot}" , {HistType::kTH2F , {thnAxisCent, thnAxisScalarProd}});
311- registry.add (" spReso/hSpResoFT0mFV0a" , " hSpResoFT0mFV0a; centrality; Q_{FT0m} #bullet Q_{FV0a}" , {HistType::kTH2F , {thnAxisCent, thnAxisScalarProd}});
312- registry.add (" spReso/hSpResoFT0mTPCpos" , " hSpResoFT0mTPCpos; centrality; Q_{FT0m} #bullet Q_{TPCpos}" , {HistType::kTH2F , {thnAxisCent, thnAxisScalarProd}});
313- registry.add (" spReso/hSpResoFT0mTPCneg" , " hSpResoFT0mTPCneg; centrality; Q_{FT0m} #bullet Q_{TPCneg}" , {HistType::kTH2F , {thnAxisCent, thnAxisScalarProd}});
314- registry.add (" spReso/hSpResoFT0mTPCtot" , " hSpResoFT0mTPCtot; centrality; Q_{FV0a} #bullet Q_{TPCtot}" , {HistType::kTH2F , {thnAxisCent, thnAxisScalarProd}});
315- registry.add (" spReso/hSpResoFV0aTPCpos" , " hSpResoFV0aTPCpos; centrality; Q_{FV0a} #bullet Q_{TPCpos}" , {HistType::kTH2F , {thnAxisCent, thnAxisScalarProd}});
316- registry.add (" spReso/hSpResoFV0aTPCneg" , " hSpResoFV0aTPCneg; centrality; Q_{FV0a} #bullet Q_{TPCneg}" , {HistType::kTH2F , {thnAxisCent, thnAxisScalarProd}});
317- registry.add (" spReso/hSpResoFV0aTPCtot" , " hSpResoFV0aTPCtot; centrality; Q_{FV0a} #bullet Q_{TPCtot}" , {HistType::kTH2F , {thnAxisCent, thnAxisScalarProd}});
318- registry.add (" spReso/hSpResoTPCposTPCneg" , " hSpResoTPCposTPCneg; centrality; Q_{TPCpos} #bullet Q_{TPCneg}" , {HistType::kTH2F , {thnAxisCent, thnAxisScalarProd}});
309+ registry.add (" spReso/hSpResoFT0cFT0a" , " hSpResoFT0cFT0a; centrality; Q_{FT0c} #bullet Q_{FT0a}; |q_{2}| " , {HistType::kTH3F , {thnAxisCent, thnAxisScalarProd, thnAxisRedQVec }});
310+ registry.add (" spReso/hSpResoFT0cFV0a" , " hSpResoFT0cFV0a; centrality; Q_{FT0c} #bullet Q_{FV0a}; |q_{2}| " , {HistType::kTH3F , {thnAxisCent, thnAxisScalarProd, thnAxisRedQVec }});
311+ registry.add (" spReso/hSpResoFT0cTPCpos" , " hSpResoFT0cTPCpos; centrality; Q_{FT0c} #bullet Q_{TPCpos}; |q_{2}| " , {HistType::kTH3F , {thnAxisCent, thnAxisScalarProd, thnAxisRedQVec }});
312+ registry.add (" spReso/hSpResoFT0cTPCneg" , " hSpResoFT0cTPCneg; centrality; Q_{FT0c} #bullet Q_{TPCneg}; |q_{2}| " , {HistType::kTH3F , {thnAxisCent, thnAxisScalarProd, thnAxisRedQVec }});
313+ registry.add (" spReso/hSpResoFT0cTPCtot" , " hSpResoFT0cTPCtot; centrality; Q_{FT0c} #bullet Q_{TPCtot}; |q_{2}| " , {HistType::kTH3F , {thnAxisCent, thnAxisScalarProd, thnAxisRedQVec }});
314+ registry.add (" spReso/hSpResoFT0aFV0a" , " hSpResoFT0aFV0a; centrality; Q_{FT0a} #bullet Q_{FV0a}; |q_{2}| " , {HistType::kTH3F , {thnAxisCent, thnAxisScalarProd, thnAxisRedQVec }});
315+ registry.add (" spReso/hSpResoFT0aTPCpos" , " hSpResoFT0aTPCpos; centrality; Q_{FT0a} #bullet Q_{TPCpos}; |q_{2}| " , {HistType::kTH3F , {thnAxisCent, thnAxisScalarProd, thnAxisRedQVec }});
316+ registry.add (" spReso/hSpResoFT0aTPCneg" , " hSpResoFT0aTPCneg; centrality; Q_{FT0a} #bullet Q_{TPCneg}; |q_{2}| " , {HistType::kTH3F , {thnAxisCent, thnAxisScalarProd, thnAxisRedQVec }});
317+ registry.add (" spReso/hSpResoFT0aTPCtot" , " hSpResoFT0aTPCtot; centrality; Q_{FT0m} #bullet Q_{TPCtot}; |q_{2}| " , {HistType::kTH3F , {thnAxisCent, thnAxisScalarProd, thnAxisRedQVec }});
318+ registry.add (" spReso/hSpResoFT0mFV0a" , " hSpResoFT0mFV0a; centrality; Q_{FT0m} #bullet Q_{FV0a}; |q_{2}| " , {HistType::kTH3F , {thnAxisCent, thnAxisScalarProd, thnAxisRedQVec }});
319+ registry.add (" spReso/hSpResoFT0mTPCpos" , " hSpResoFT0mTPCpos; centrality; Q_{FT0m} #bullet Q_{TPCpos}; |q_{2}| " , {HistType::kTH3F , {thnAxisCent, thnAxisScalarProd, thnAxisRedQVec }});
320+ registry.add (" spReso/hSpResoFT0mTPCneg" , " hSpResoFT0mTPCneg; centrality; Q_{FT0m} #bullet Q_{TPCneg}; |q_{2}| " , {HistType::kTH3F , {thnAxisCent, thnAxisScalarProd, thnAxisRedQVec }});
321+ registry.add (" spReso/hSpResoFT0mTPCtot" , " hSpResoFT0mTPCtot; centrality; Q_{FV0a} #bullet Q_{TPCtot}; |q_{2}| " , {HistType::kTH3F , {thnAxisCent, thnAxisScalarProd, thnAxisRedQVec }});
322+ registry.add (" spReso/hSpResoFV0aTPCpos" , " hSpResoFV0aTPCpos; centrality; Q_{FV0a} #bullet Q_{TPCpos}; |q_{2}| " , {HistType::kTH3F , {thnAxisCent, thnAxisScalarProd, thnAxisRedQVec }});
323+ registry.add (" spReso/hSpResoFV0aTPCneg" , " hSpResoFV0aTPCneg; centrality; Q_{FV0a} #bullet Q_{TPCneg}; |q_{2}| " , {HistType::kTH3F , {thnAxisCent, thnAxisScalarProd, thnAxisRedQVec }});
324+ registry.add (" spReso/hSpResoFV0aTPCtot" , " hSpResoFV0aTPCtot; centrality; Q_{FV0a} #bullet Q_{TPCtot}; |q_{2}| " , {HistType::kTH3F , {thnAxisCent, thnAxisScalarProd, thnAxisRedQVec }});
325+ registry.add (" spReso/hSpResoTPCposTPCneg" , " hSpResoTPCposTPCneg; centrality; Q_{TPCpos} #bullet Q_{TPCneg}; |q_{2}| " , {HistType::kTH3F , {thnAxisCent, thnAxisScalarProd, thnAxisRedQVec }});
319326
320327 if (doprocessResolutionSPEsE) {
321328 registry.add (" redQVecs/hSparseRedQVecs" , " hSpResoRedQVec; centrality; Q_{red} #bullet Q_{TPCtot}" , {HistType::kTHnSparseF , {thnAxisCent, thnAxisRedQVec, thnAxisRedQVec, thnAxisRedQVec, thnAxisRedQVec}});
@@ -812,7 +819,7 @@ struct HfTaskFlowCharmHadrons {
812819 }
813820 }
814821 if (storeRedQVec) {
815- rowRedQVecEsE ( redQVec);
822+ rowCandFlowEsE (massCand, ptCand, outputMl[ 0 ], outputMl[ 1 ], scalprodCand, cent, redQVec);
816823 }
817824 if (fillSparse) {
818825 fillThn (massCand, ptCand, etaCand, signCand, cent, cosNPhi, sinNPhi,
@@ -1037,23 +1044,30 @@ struct HfTaskFlowCharmHadrons {
10371044 return ;
10381045 }
10391046
1040- registry.fill (HIST (" spReso/hSpResoFT0cFT0a" ), centrality, xQVecFT0c * xQVecFT0a + yQVecFT0c * yQVecFT0a);
1041- registry.fill (HIST (" spReso/hSpResoFT0cFV0a" ), centrality, xQVecFT0c * xQVecFV0a + yQVecFT0c * yQVecFV0a);
1042- registry.fill (HIST (" spReso/hSpResoFT0cTPCpos" ), centrality, xQVecFT0c * xQVecTPCPos + yQVecFT0c * yQVecTPCPos);
1043- registry.fill (HIST (" spReso/hSpResoFT0cTPCneg" ), centrality, xQVecFT0c * xQVecTPCNeg + yQVecFT0c * yQVecTPCNeg);
1044- registry.fill (HIST (" spReso/hSpResoFT0cTPCtot" ), centrality, xQVecFT0c * xQVecTPCAll + yQVecFT0c * yQVecTPCAll);
1045- registry.fill (HIST (" spReso/hSpResoFT0aFV0a" ), centrality, xQVecFT0a * xQVecFV0a + yQVecFT0a * yQVecFV0a);
1046- registry.fill (HIST (" spReso/hSpResoFT0aTPCpos" ), centrality, xQVecFT0a * xQVecTPCPos + yQVecFT0a * yQVecTPCPos);
1047- registry.fill (HIST (" spReso/hSpResoFT0aTPCneg" ), centrality, xQVecFT0a * xQVecTPCNeg + yQVecFT0a * yQVecTPCNeg);
1048- registry.fill (HIST (" spReso/hSpResoFT0aTPCtot" ), centrality, xQVecFT0a * xQVecTPCAll + yQVecFT0a * yQVecTPCAll);
1049- registry.fill (HIST (" spReso/hSpResoFT0mFV0a" ), centrality, xQVecFT0m * xQVecFV0a + yQVecFT0m * yQVecFV0a);
1050- registry.fill (HIST (" spReso/hSpResoFT0mTPCpos" ), centrality, xQVecFT0m * xQVecTPCPos + yQVecFT0m * yQVecTPCPos);
1051- registry.fill (HIST (" spReso/hSpResoFT0mTPCneg" ), centrality, xQVecFT0m * xQVecTPCNeg + yQVecFT0m * yQVecTPCNeg);
1052- registry.fill (HIST (" spReso/hSpResoFT0mTPCtot" ), centrality, xQVecFT0m * xQVecTPCAll + yQVecFT0m * yQVecTPCAll);
1053- registry.fill (HIST (" spReso/hSpResoFV0aTPCpos" ), centrality, xQVecFV0a * xQVecTPCPos + yQVecFV0a * yQVecTPCPos);
1054- registry.fill (HIST (" spReso/hSpResoFV0aTPCneg" ), centrality, xQVecFV0a * xQVecTPCNeg + yQVecFV0a * yQVecTPCNeg);
1055- registry.fill (HIST (" spReso/hSpResoFV0aTPCtot" ), centrality, xQVecFV0a * xQVecTPCAll + yQVecFV0a * yQVecTPCAll);
1056- registry.fill (HIST (" spReso/hSpResoTPCposTPCneg" ), centrality, xQVecTPCPos * xQVecTPCNeg + yQVecTPCPos * yQVecTPCNeg);
1047+ float redQVec{-999 .f };
1048+ std::array<float , 3 > qVecRedComps{-999 .f , -999 .f , -999 .f };
1049+ if constexpr (HasRedQVecs) {
1050+ qVecRedComps = getEseQvec (collision, qVecRedDetector.value );
1051+ }
1052+ redQVec = std::hypot (qVecRedComps[0 ], qVecRedComps[1 ]);
1053+
1054+ registry.fill (HIST (" spReso/hSpResoFT0cFT0a" ), centrality, xQVecFT0c * xQVecFT0a + yQVecFT0c * yQVecFT0a, redQVec);
1055+ registry.fill (HIST (" spReso/hSpResoFT0cFV0a" ), centrality, xQVecFT0c * xQVecFV0a + yQVecFT0c * yQVecFV0a, redQVec);
1056+ registry.fill (HIST (" spReso/hSpResoFT0cTPCpos" ), centrality, xQVecFT0c * xQVecTPCPos + yQVecFT0c * yQVecTPCPos, redQVec);
1057+ registry.fill (HIST (" spReso/hSpResoFT0cTPCneg" ), centrality, xQVecFT0c * xQVecTPCNeg + yQVecFT0c * yQVecTPCNeg, redQVec);
1058+ registry.fill (HIST (" spReso/hSpResoFT0cTPCtot" ), centrality, xQVecFT0c * xQVecTPCAll + yQVecFT0c * yQVecTPCAll, redQVec);
1059+ registry.fill (HIST (" spReso/hSpResoFT0aFV0a" ), centrality, xQVecFT0a * xQVecFV0a + yQVecFT0a * yQVecFV0a, redQVec);
1060+ registry.fill (HIST (" spReso/hSpResoFT0aTPCpos" ), centrality, xQVecFT0a * xQVecTPCPos + yQVecFT0a * yQVecTPCPos, redQVec);
1061+ registry.fill (HIST (" spReso/hSpResoFT0aTPCneg" ), centrality, xQVecFT0a * xQVecTPCNeg + yQVecFT0a * yQVecTPCNeg, redQVec);
1062+ registry.fill (HIST (" spReso/hSpResoFT0aTPCtot" ), centrality, xQVecFT0a * xQVecTPCAll + yQVecFT0a * yQVecTPCAll, redQVec);
1063+ registry.fill (HIST (" spReso/hSpResoFT0mFV0a" ), centrality, xQVecFT0m * xQVecFV0a + yQVecFT0m * yQVecFV0a, redQVec);
1064+ registry.fill (HIST (" spReso/hSpResoFT0mTPCpos" ), centrality, xQVecFT0m * xQVecTPCPos + yQVecFT0m * yQVecTPCPos, redQVec);
1065+ registry.fill (HIST (" spReso/hSpResoFT0mTPCneg" ), centrality, xQVecFT0m * xQVecTPCNeg + yQVecFT0m * yQVecTPCNeg, redQVec);
1066+ registry.fill (HIST (" spReso/hSpResoFT0mTPCtot" ), centrality, xQVecFT0m * xQVecTPCAll + yQVecFT0m * yQVecTPCAll, redQVec);
1067+ registry.fill (HIST (" spReso/hSpResoFV0aTPCpos" ), centrality, xQVecFV0a * xQVecTPCPos + yQVecFV0a * yQVecTPCPos, redQVec);
1068+ registry.fill (HIST (" spReso/hSpResoFV0aTPCneg" ), centrality, xQVecFV0a * xQVecTPCNeg + yQVecFV0a * yQVecTPCNeg, redQVec);
1069+ registry.fill (HIST (" spReso/hSpResoFV0aTPCtot" ), centrality, xQVecFV0a * xQVecTPCAll + yQVecFV0a * yQVecTPCAll, redQVec);
1070+ registry.fill (HIST (" spReso/hSpResoTPCposTPCneg" ), centrality, xQVecTPCPos * xQVecTPCNeg + yQVecTPCPos * yQVecTPCNeg, redQVec);
10571071
10581072 if constexpr (HasRedQVecs) {
10591073 registry.fill (HIST (" redQVecs/hRedQVecFT0C" ), centrality, std::hypot (collision.eseQvecFT0CRe (), collision.eseQvecFT0CIm ()));
0 commit comments