@@ -207,6 +207,10 @@ struct PhotonHBT {
207207 used_photonIds.shrink_to_fit ();
208208 used_dileptonIds.clear ();
209209 used_dileptonIds.shrink_to_fit ();
210+
211+ if (eid_bdt) {
212+ delete eid_bdt;
213+ }
210214 }
211215
212216 HistogramRegistry fRegistry {" output" , {}, OutputObjHandlingPolicy::AnalysisObject, false , false };
@@ -298,12 +302,13 @@ struct PhotonHBT {
298302 const AxisSpec axis_kt{ConfKtBins, " k_{T} (GeV/c)" };
299303
300304 const AxisSpec axis_qinv{30 , 0.0 , +0.3 , " q_{inv} (GeV/c)" };
301- const AxisSpec axis_qout_cms{ 60 , - 0.3 , +0.3 , " q_{out}^{CMS } (GeV/c)" };
302- const AxisSpec axis_qside_cms {60 , -0.3 , +0.3 , " q_{side}^{CMS} (GeV/c)" };
303- const AxisSpec axis_qlong_cms {60 , -0.3 , +0.3 , " q_{long}^{CMS} (GeV/c)" };
304- const AxisSpec axis_qlong_lcms {60 , -0.3 , +0.3 , " q_{long}^{LCMS } (GeV/c)" };
305+ const AxisSpec axis_qabs_lcms{ 30 , 0.0 , +0.3 , " |q|^{LCMS } (GeV/c)" };
306+ const AxisSpec axis_qout {60 , -0.3 , +0.3 , " q_{out} (GeV/c)" }; // qout does not change between LAB and LCMS frame
307+ const AxisSpec axis_qside {60 , -0.3 , +0.3 , " q_{side} (GeV/c)" }; // qside does not change between LAB and LCMS frame
308+ const AxisSpec axis_qlong {60 , -0.3 , +0.3 , " q_{long} (GeV/c)" };
305309
306- fRegistry .add (" Pair/same/hs" , " diphoton correlation" , kTHnSparseD , {axis_kt, axis_qinv, axis_qout_cms, axis_qside_cms, axis_qlong_cms, axis_qlong_lcms}, true );
310+ fRegistry .add (" Pair/same/hs_1d" , " diphoton correlation 1D" , kTHnSparseD , {axis_kt, axis_qinv, axis_qabs_lcms}, true );
311+ fRegistry .add (" Pair/same/hs_3d" , " diphoton correlation 3D LCMS" , kTHnSparseD , {axis_kt, axis_qout, axis_qside, axis_qlong}, true );
307312 fRegistry .addClone (" Pair/same/" , " Pair/mix/" );
308313 }
309314
@@ -376,6 +381,7 @@ struct PhotonHBT {
376381 }
377382 }
378383
384+ o2::ml::OnnxModel* eid_bdt = nullptr ;
379385 void DefineDileptonCut ()
380386 {
381387 fDielectronCut = DielectronCut (" fDielectronCut" , " fDielectronCut" );
@@ -414,7 +420,7 @@ struct PhotonHBT {
414420 fDielectronCut .SetTOFNsigmaElRange (dielectroncuts.cfg_min_TOFNsigmaEl , dielectroncuts.cfg_max_TOFNsigmaEl );
415421
416422 if (dielectroncuts.cfg_pid_scheme == static_cast <int >(DielectronCut::PIDSchemes::kPIDML )) { // please call this at the end of DefineDileptonCut
417- o2::ml::OnnxModel* eid_bdt = new o2::ml::OnnxModel ();
423+ eid_bdt = new o2::ml::OnnxModel ();
418424 if (dielectroncuts.loadModelsFromCCDB ) {
419425 ccdbApi.init (ccdburl);
420426 std::map<std::string, std::string> metadata;
@@ -453,14 +459,12 @@ struct PhotonHBT {
453459 ROOT::Math::PtEtaPhiMVector k12 = 0.5 * (v1 + v2);
454460 float qinv = -q12.M ();
455461 float kt = k12.Pt ();
456- float qlong_cms = q12.Pz ();
457462
458- ROOT::Math::XYZVector q_3d = q12.Vect (); // 3D q vector
463+ // ROOT::Math::XYZVector q_3d = q12.Vect(); // 3D q vector
459464 ROOT::Math::XYZVector uv_out (k12.Px () / k12.Pt (), k12.Py () / k12.Pt (), 0 ); // unit vector for out. i.e. parallel to kt
460465 ROOT::Math::XYZVector uv_long (0 , 0 , 1 ); // unit vector for long, beam axis
461466 ROOT::Math::XYZVector uv_side = uv_out.Cross (uv_long); // unit vector for side
462- float qout_cms = q_3d.Dot (uv_out);
463- float qside_cms = q_3d.Dot (uv_side);
467+ // float qlong_lab = q_3d.Dot(uv_long);
464468
465469 // longitudinally co-moving system (LCMS)
466470 ROOT::Math::PxPyPzEVector v1_cartesian (v1.Px (), v1.Py (), v1.Pz (), v1.E ());
@@ -469,17 +473,28 @@ struct PhotonHBT {
469473 float beta_z = (v1 + v2).Pz () / (v1 + v2).E ();
470474 ROOT::Math::Boost bst_z (0 , 0 , -beta_z); // Boost supports only PxPyPzEVector
471475 ROOT::Math::PxPyPzEVector q12_lcms = bst_z (q12_cartesian);
472- float qlong_lcms = q12_lcms.Pz ();
476+ ROOT::Math::XYZVector q_3d_lcms = q12_lcms.Vect (); // 3D q vector in LCMS
477+ float qout_lcms = q_3d_lcms.Dot (uv_out);
478+ float qside_lcms = q_3d_lcms.Dot (uv_side);
479+ float qlong_lcms = q_3d_lcms.Dot (uv_long);
480+ float qabs_lcms = q_3d_lcms.R ();
473481
474482 // ROOT::Math::PxPyPzEVector v1_lcms_cartesian = bst_z(v1_cartesian);
475483 // ROOT::Math::PxPyPzEVector v2_lcms_cartesian = bst_z(v2_cartesian);
476484 // ROOT::Math::PxPyPzEVector q12_lcms_cartesian = bst_z(q12_cartesian);
477- // LOGF(info, "q12.Pz() = %f, q12_cartesian.Pz() = %f",q12.Pz(), q12_cartesian.Pz());
478- // LOGF(info, "v1.Pz() = %f, v2.Pz() = %f",v1.Pz(), v2.Pz());
479- // LOGF(info, "v1_lcms_cartesian.Pz() = %f, v2_lcms_cartesian.Pz() = %f",v1_lcms_cartesian.Pz(), v2_lcms_cartesian.Pz());
485+ // LOGF(info, "q12.Pz() = %f, q12_cartesian.Pz() = %f", q12.Pz(), q12_cartesian.Pz());
486+ // LOGF(info, "v1.Pz() = %f, v2.Pz() = %f", v1.Pz(), v2.Pz());
487+ // LOGF(info, "v1_lcms_cartesian.Pz() = %f, v2_lcms_cartesian.Pz() = %f", v1_lcms_cartesian.Pz(), v2_lcms_cartesian.Pz());
480488 // LOGF(info, "q12_lcms_cartesian.Pz() = %f", q12_lcms_cartesian.Pz());
481-
482- fRegistry .fill (HIST (" Pair/" ) + HIST (event_pair_types[ev_id]) + HIST (" hs" ), kt, qinv, qout_cms, qside_cms, qlong_cms, qlong_lcms);
489+ // LOGF(info, "q_3d_lcms.Dot(uv_out) = %f, q_3d_lcms.Dot(uv_side) = %f, q_3d.Dot(uv_out) = %f, q_3d.Dot(uv_side) = %f", q_3d_lcms.Dot(uv_out), q_3d_lcms.Dot(uv_side), q_3d.Dot(uv_out), q_3d.Dot(uv_side));
490+ // LOGF(info, "q12_lcms.Pz() = %f, q_3d_lcms.Dot(uv_long) = %f", q12_lcms.Pz(), q_3d_lcms.Dot(uv_long));
491+ // ROOT::Math::PxPyPzEVector q12_lcms_tmp = bst_z(v1_cartesian) - bst_z(v2_cartesian);
492+ // LOGF(info, "q12_lcms.Px() = %f, q12_lcms.Py() = %f, q12_lcms.Pz() = %f, q12_lcms_tmp.Px() = %f, q12_lcms_tmp.Py() = %f, q12_lcms_tmp.Pz() = %f", q12_lcms.Px(), q12_lcms.Py(), q12_lcms.Pz(), q12_lcms_tmp.Px(), q12_lcms_tmp.Py(), q12_lcms_tmp.Pz());
493+ // float qabs_lcms_tmp = q12_lcms.P();
494+ // LOGF(info, "qabs_lcms = %f, qabs_lcms_tmp = %f", qabs_lcms, qabs_lcms_tmp);
495+
496+ fRegistry .fill (HIST (" Pair/" ) + HIST (event_pair_types[ev_id]) + HIST (" hs_1d" ), kt, qinv, qabs_lcms);
497+ fRegistry .fill (HIST (" Pair/" ) + HIST (event_pair_types[ev_id]) + HIST (" hs_3d" ), kt, qout_lcms, qside_lcms, qlong_lcms);
483498 }
484499
485500 template <typename TCollisions, typename TPhotons1, typename TPhotons2, typename TSubInfos1, typename TSubInfos2, typename TPreslice1, typename TPreslice2, typename TCut1, typename TCut2>
0 commit comments