@@ -402,9 +402,9 @@ struct PhotonHBT {
402402 const AxisSpec axis_qinv{60 , 0.0 , +0.3 , " q_{inv} (GeV/c)" };
403403 const AxisSpec axis_kstar{60 , 0.0 , +0.3 , " k* (GeV/c)" };
404404 const AxisSpec axis_qabs_lcms{60 , 0.0 , +0.3 , " |#bf{q}|^{LCMS} (GeV/c)" };
405- const AxisSpec axis_qout{60 , - 0.3 , +0.3 , " q_{out} (GeV/c)" }; // qout does not change between LAB and LCMS frame
406- const AxisSpec axis_qside{60 , - 0.3 , +0.3 , " q_{side} (GeV/c)" }; // qside does not change between LAB and LCMS frame
407- const AxisSpec axis_qlong{60 , - 0.3 , +0.3 , " q_{long} (GeV/c)" };
405+ const AxisSpec axis_qout{60 , 0.0 , +0.3 , " q_{out} (GeV/c)" }; // qout does not change between LAB and LCMS frame
406+ const AxisSpec axis_qside{60 , 0.0 , +0.3 , " q_{side} (GeV/c)" }; // qside does not change between LAB and LCMS frame
407+ const AxisSpec axis_qlong{60 , 0.0 , +0.3 , " q_{long} (GeV/c)" };
408408
409409 if (cfgDo3D) {
410410 fRegistry .add (" Pair/same/hs_3d" , " diphoton correlation 3D LCMS" , kTHnSparseD , {axis_qout, axis_qside, axis_qlong, axis_kt}, true );
@@ -555,19 +555,16 @@ struct PhotonHBT {
555555 template <int ev_id, typename TCollision>
556556 void fillPairHistogram (TCollision const &, const ROOT ::Math::PtEtaPhiMVector v1, const ROOT ::Math::PtEtaPhiMVector v2, const float weight = 1 .f)
557557 {
558-
559558 // Lab. frame
560559 ROOT ::Math::PtEtaPhiMVector q12 = v1 - v2;
561560 ROOT ::Math::PtEtaPhiMVector k12 = 0.5 * (v1 + v2);
562561 float qinv = -q12.M (); // for identical particles -> qinv = 2 x kstar
563562 float kt = k12.Pt ();
564- // float mt = std::sqrt(std::pow(k12.M(), 2) + std::pow(kt, 2));
565563
566564 // ROOT::Math::XYZVector q_3d = q12.Vect(); // 3D q vector
567565 ROOT ::Math::XYZVector uv_out (k12.Px () / k12.Pt (), k12.Py () / k12.Pt (), 0 ); // unit vector for out. i.e. parallel to kt
568566 ROOT ::Math::XYZVector uv_long (0 , 0 , 1 ); // unit vector for long, beam axis
569567 ROOT ::Math::XYZVector uv_side = uv_out.Cross (uv_long); // unit vector for side
570- // float qlong_lab = q_3d.Dot(uv_long);
571568
572569 ROOT ::Math::PxPyPzEVector v1_cartesian (v1);
573570 ROOT ::Math::PxPyPzEVector v2_cartesian (v2);
@@ -586,11 +583,14 @@ struct PhotonHBT {
586583 float qlong_lcms = q_3d_lcms.Dot (uv_long);
587584 float qabs_lcms = q_3d_lcms.R ();
588585
586+ // float qabs_lcms_tmp = std::sqrt(std::pow(qout_lcms, 2) + std::pow(qside_lcms, 2) + std::pow(qlong_lcms, 2));
587+ // LOGF(info, "qabs_lcms = %f, qabs_lcms_tmp = %f", qabs_lcms, qabs_lcms_tmp);
588+
589589 // pair rest frame (PRF)
590590 ROOT ::Math::Boost boostPRF = ROOT::Math::Boost (-beta_x, -beta_y, -beta_z);
591- ROOT ::Math::PxPyPzEVector v1_pfr = boostPRF (v1_cartesian);
592- ROOT ::Math::PxPyPzEVector v2_pfr = boostPRF (v2_cartesian);
593- ROOT ::Math::PxPyPzEVector rel_k = v1_pfr - v2_pfr ;
591+ ROOT ::Math::PxPyPzEVector v1_prf = boostPRF (v1_cartesian);
592+ ROOT ::Math::PxPyPzEVector v2_prf = boostPRF (v2_cartesian);
593+ ROOT ::Math::PxPyPzEVector rel_k = v1_prf - v2_prf ;
594594 float kstar = 0.5 * rel_k.P ();
595595 // LOGF(info, "qabs_lcms = %f, qinv = %f, kstar = %f", qabs_lcms, qinv, kstar);
596596
@@ -609,7 +609,7 @@ struct PhotonHBT {
609609 // LOGF(info, "qabs_lcms = %f, qabs_lcms_tmp = %f", qabs_lcms, qabs_lcms_tmp);
610610
611611 if (cfgDo3D) {
612- fRegistry .fill (HIST (" Pair/" ) + HIST (event_pair_types[ev_id]) + HIST (" hs_3d" ), qout_lcms, qside_lcms, qlong_lcms, kt, weight);
612+ fRegistry .fill (HIST (" Pair/" ) + HIST (event_pair_types[ev_id]) + HIST (" hs_3d" ), fabs ( qout_lcms), fabs ( qside_lcms), fabs ( qlong_lcms) , kt, weight); // qosl can be [-inf, +inf] and CF is symmetric for pos and neg qosl. To reduce stat. unc. absolute value is taken here.
613613 } else {
614614 if constexpr (pairtype == ggHBTPairType::kPCMPCM ) { // identical particle femtoscopy
615615 fRegistry .fill (HIST (" Pair/" ) + HIST (event_pair_types[ev_id]) + HIST (" hs_1d" ), qinv, qabs_lcms, kt, weight);
0 commit comments