@@ -121,6 +121,7 @@ struct Dilepton {
121121 Configurable<bool > cfgApplyWeightTTCA{" cfgApplyWeightTTCA" , false , " flag to apply weighting by 1/N" };
122122 Configurable<uint> cfgDCAType{" cfgDCAType" , 0 , " type of DCA for output. 0:3D, 1:XY, 2:Z, else:3D" };
123123 Configurable<bool > cfgUseSignedDCA{" cfgUseSignedDCA" , false , " flag to use signs in the DCA calculation" };
124+ Configurable<int > cfgPolarizationFrame{" cfgPolarizationFrame" , 0 , " frame of polarization. 0:CS, 1:HX, else:FATAL" };
124125
125126 ConfigurableAxis ConfMllBins{"ConfMllBins", {VARIABLE_WIDTH, 0.00, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.10, 0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18, 0.19, 0.20, 0.21, 0.22, 0.23, 0.24, 0.25, 0.26, 0.27, 0.28, 0.29, 0.30, 0.31, 0.32, 0.33, 0.34, 0.35, 0.36, 0.37, 0.38, 0.39, 0.40, 0.41, 0.42, 0.43, 0.44, 0.45, 0.46, 0.47, 0.48, 0.49, 0.50, 0.51, 0.52, 0.53, 0.54, 0.55, 0.56, 0.57, 0.58, 0.59, 0.60, 0.61, 0.62, 0.63, 0.64, 0.65, 0.66, 0.67, 0.68, 0.69, 0.70, 0.71, 0.72, 0.73, 0.74, 0.75, 0.76, 0.77, 0.78, 0.79, 0.80, 0.81, 0.82, 0.83, 0.84, 0.85, 0.86, 0.87, 0.88, 0.89, 0.90, 0.91, 0.92, 0.93, 0.94, 0.95, 0.96, 0.97, 0.98, 0.99, 1.00, 1.01, 1.02, 1.03, 1.04, 1.05, 1.06, 1.07, 1.08, 1.09, 1.10, 1.11, 1.12, 1.13, 1.14, 1.15, 1.16, 1.17, 1.18, 1.19, 1.20, 1.30, 1.40, 1.50, 1.60, 1.70, 1.80, 1.90, 2.00, 2.10, 2.20, 2.30, 2.40, 2.50, 2.60, 2.70, 2.75, 2.80, 2.85, 2.90, 2.95, 3.00, 3.05, 3.10, 3.15, 3.20, 3.25, 3.30, 3.35, 3.40, 3.45, 3.50, 3.55, 3.60, 3.65, 3.70, 3.75, 3.80, 3.85, 3.90, 3.95, 4.00}, "mll bins for output histograms"};
126127 ConfigurableAxis ConfPtllBins{" ConfPtllBins" , {VARIABLE_WIDTH, 0.00 , 0.10 , 0.20 , 0.30 , 0.40 , 0.50 , 0.60 , 0.70 , 0.80 , 0.90 , 1.00 , 1.10 , 1.20 , 1.30 , 1.40 , 1.50 , 1.60 , 1.70 , 1.80 , 1.90 , 2.00 , 2.50 , 3.00 , 3.50 , 4.00 , 4.50 , 5.00 , 6.00 , 7.00 , 8.00 , 9.00 , 10.00 }, " pTll bins for output histograms" };
@@ -571,8 +572,17 @@ struct Dilepton {
571572 const AxisSpec axis_aco{10 , 0 , 1 .f , " #alpha = 1 - #frac{|#varphi_{l^{+}} - #varphi_{l^{-}}|}{#pi}" };
572573 const AxisSpec axis_asym_pt{10 , 0 , 1 .f , " A = #frac{|p_{T,l^{+}} - p_{T,l^{-}}|}{|p_{T,l^{+}} + p_{T,l^{-}}|}" };
573574 const AxisSpec axis_dphi_e_ee{18 , 0 , M_PI, " #Delta#varphi = #varphi_{l} - #varphi_{ll} (rad.)" };
574- const AxisSpec axis_cos_theta_cs{ConfPolarizationCosThetaBins, " |cos(#theta^{CS})|" };
575- fRegistry .add (" Pair/same/uls/hs" , " dilepton" , kTHnSparseD , {axis_mass, axis_pt, axis_dca, axis_y, axis_aco, axis_asym_pt, axis_dphi_e_ee, axis_cos_theta_cs}, true );
575+
576+ std::string frameName = " CS" ;
577+ if (cfgPolarizationFrame == 0 ) {
578+ frameName = " CS" ;
579+ } else if (cfgPolarizationFrame == 1 ) {
580+ frameName = " HX" ;
581+ } else {
582+ LOG (fatal) << " set 0 or 1 to cfgPolarizationFrame!" ;
583+ }
584+ const AxisSpec axis_cos_theta{ConfPolarizationCosThetaBins, Form (" |cos(#theta^{%s})|" , frameName.data ())};
585+ fRegistry .add (" Pair/same/uls/hs" , " dilepton" , kTHnSparseD , {axis_mass, axis_pt, axis_dca, axis_y, axis_aco, axis_asym_pt, axis_dphi_e_ee, axis_cos_theta}, true );
576586 fRegistry .addClone (" Pair/same/uls/" , " Pair/same/lspp/" );
577587 fRegistry .addClone (" Pair/same/uls/" , " Pair/same/lsmm/" );
578588 fRegistry .addClone (" Pair/same/" , " Pair/mix/" );
@@ -594,9 +604,18 @@ struct Dilepton {
594604 fRegistry .addClone (" Pair/mix/uls/" , " Pair/mix/lsmm/" );
595605
596606 } else if (cfgAnalysisType == static_cast <int >(o2::aod::pwgem::dilepton::utils::pairutil::DileptonAnalysisType::kPolarization )) {
597- const AxisSpec axis_cos_theta_cs{ConfPolarizationCosThetaBins, " |cos(#theta^{CS})|" };
598- const AxisSpec axis_phi_cs{ConfPolarizationPhiBins, " |#varphi^{CS}| (rad.)" };
599- fRegistry .add (" Pair/same/uls/hs" , " dilepton" , kTHnSparseD , {axis_mass, axis_pt, axis_dca, axis_y, axis_cos_theta_cs, axis_phi_cs}, true );
607+ std::string frameName = " CS" ;
608+ if (cfgPolarizationFrame == 0 ) {
609+ frameName = " CS" ;
610+ } else if (cfgPolarizationFrame == 1 ) {
611+ frameName = " HX" ;
612+ } else {
613+ LOG (fatal) << " set 0 or 1 to cfgPolarizationFrame!" ;
614+ }
615+
616+ const AxisSpec axis_cos_theta{ConfPolarizationCosThetaBins, Form (" |cos(#theta^{%s})|" , frameName.data ())};
617+ const AxisSpec axis_phi{ConfPolarizationPhiBins, Form (" |#varphi^{%s}| (rad.)" , frameName.data ())};
618+ fRegistry .add (" Pair/same/uls/hs" , " dilepton" , kTHnSparseD , {axis_mass, axis_pt, axis_dca, axis_y, axis_cos_theta, axis_phi}, true );
600619 fRegistry .addClone (" Pair/same/uls/" , " Pair/same/lspp/" );
601620 fRegistry .addClone (" Pair/same/uls/" , " Pair/same/lsmm/" );
602621 fRegistry .addClone (" Pair/same/" , " Pair/mix/" );
@@ -968,15 +987,20 @@ struct Dilepton {
968987 float dphi_e_ee = v1.Phi () - v12.Phi ();
969988 o2::math_utils::bringToPMPi (dphi_e_ee);
970989
971- float cos_thetaCS = 999 , phiCS = 999 .f ;
972- o2::aod::pwgem::dilepton::utils::pairutil::getAngleCS<false >(t1, t2, leptonM1, leptonM2, beamE1, beamE2, beamP1, beamP2, cos_thetaCS, phiCS);
990+ float cos_thetaPol = 999 , phiPol = 999 .f ;
991+ if (cfgPolarizationFrame == 0 ) {
992+ o2::aod::pwgem::dilepton::utils::pairutil::getAngleCS (std::array<float , 4 >{t1.px (), t1.py (), t1.pz (), leptonM1}, std::array<float , 4 >{t2.px (), t2.py (), t2.pz (), leptonM2}, beamE1, beamE2, beamP1, beamP2, t1.sign (), cos_thetaPol, phiPol);
993+ } else if (cfgPolarizationFrame == 1 ) {
994+ o2::aod::pwgem::dilepton::utils::pairutil::getAngleHX (std::array<float , 4 >{t1.px (), t1.py (), t1.pz (), leptonM1}, std::array<float , 4 >{t2.px (), t2.py (), t2.pz (), leptonM2}, beamE1, beamE2, beamP1, beamP2, t1.sign (), cos_thetaPol, phiPol);
995+ }
996+ o2::math_utils::bringToPMPi (phiPol);
973997
974998 if (t1.sign () * t2.sign () < 0 ) { // ULS
975- fRegistry .fill (HIST (" Pair/" ) + HIST (event_pair_types[ev_id]) + HIST (" uls/hs" ), v12.M (), v12.Pt (), pair_dca, v12.Rapidity (), aco, asym, std::fabs (dphi_e_ee), std::fabs (cos_thetaCS ), weight);
999+ fRegistry .fill (HIST (" Pair/" ) + HIST (event_pair_types[ev_id]) + HIST (" uls/hs" ), v12.M (), v12.Pt (), pair_dca, v12.Rapidity (), aco, asym, std::fabs (dphi_e_ee), std::fabs (cos_thetaPol ), weight);
9761000 } else if (t1.sign () > 0 && t2.sign () > 0 ) { // LS++
977- fRegistry .fill (HIST (" Pair/" ) + HIST (event_pair_types[ev_id]) + HIST (" lspp/hs" ), v12.M (), v12.Pt (), pair_dca, v12.Rapidity (), aco, asym, std::fabs (dphi_e_ee), std::fabs (cos_thetaCS ), weight);
1001+ fRegistry .fill (HIST (" Pair/" ) + HIST (event_pair_types[ev_id]) + HIST (" lspp/hs" ), v12.M (), v12.Pt (), pair_dca, v12.Rapidity (), aco, asym, std::fabs (dphi_e_ee), std::fabs (cos_thetaPol ), weight);
9781002 } else if (t1.sign () < 0 && t2.sign () < 0 ) { // LS--
979- fRegistry .fill (HIST (" Pair/" ) + HIST (event_pair_types[ev_id]) + HIST (" lsmm/hs" ), v12.M (), v12.Pt (), pair_dca, v12.Rapidity (), aco, asym, std::fabs (dphi_e_ee), std::fabs (cos_thetaCS ), weight);
1003+ fRegistry .fill (HIST (" Pair/" ) + HIST (event_pair_types[ev_id]) + HIST (" lsmm/hs" ), v12.M (), v12.Pt (), pair_dca, v12.Rapidity (), aco, asym, std::fabs (dphi_e_ee), std::fabs (cos_thetaPol ), weight);
9801004 }
9811005 } else if (cfgAnalysisType == static_cast <int >(o2::aod::pwgem::dilepton::utils::pairutil::DileptonAnalysisType::kFlowV2 ) || cfgAnalysisType == static_cast <int >(o2::aod::pwgem::dilepton::utils::pairutil::DileptonAnalysisType::kFlowV3 )) {
9821006 std::array<float , 2 > q2ft0m = {collision.q2xft0m (), collision.q2yft0m ()};
@@ -1020,16 +1044,20 @@ struct Dilepton {
10201044 }
10211045 }
10221046 } else if (cfgAnalysisType == static_cast <int >(o2::aod::pwgem::dilepton::utils::pairutil::DileptonAnalysisType::kPolarization )) {
1023- float cos_thetaCS = 999 , phiCS = 999 .f ;
1024- o2::aod::pwgem::dilepton::utils::pairutil::getAngleCS<false >(t1, t2, leptonM1, leptonM2, beamE1, beamE2, beamP1, beamP2, cos_thetaCS, phiCS);
1025- o2::math_utils::bringToPMPi (phiCS);
1047+ float cos_thetaPol = 999 , phiPol = 999 .f ;
1048+ if (cfgPolarizationFrame == 0 ) {
1049+ o2::aod::pwgem::dilepton::utils::pairutil::getAngleCS (std::array<float , 4 >{t1.px (), t1.py (), t1.pz (), leptonM1}, std::array<float , 4 >{t2.px (), t2.py (), t2.pz (), leptonM2}, beamE1, beamE2, beamP1, beamP2, t1.sign (), cos_thetaPol, phiPol);
1050+ } else if (cfgPolarizationFrame == 1 ) {
1051+ o2::aod::pwgem::dilepton::utils::pairutil::getAngleHX (std::array<float , 4 >{t1.px (), t1.py (), t1.pz (), leptonM1}, std::array<float , 4 >{t2.px (), t2.py (), t2.pz (), leptonM2}, beamE1, beamE2, beamP1, beamP2, t1.sign (), cos_thetaPol, phiPol);
1052+ }
1053+ o2::math_utils::bringToPMPi (phiPol);
10261054
10271055 if (t1.sign () * t2.sign () < 0 ) { // ULS
1028- fRegistry .fill (HIST (" Pair/" ) + HIST (event_pair_types[ev_id]) + HIST (" uls/hs" ), v12.M (), v12.Pt (), pair_dca, v12.Rapidity (), std::fabs (cos_thetaCS ), std::fabs (phiCS ), weight);
1056+ fRegistry .fill (HIST (" Pair/" ) + HIST (event_pair_types[ev_id]) + HIST (" uls/hs" ), v12.M (), v12.Pt (), pair_dca, v12.Rapidity (), std::fabs (cos_thetaPol ), std::fabs (phiPol ), weight);
10291057 } else if (t1.sign () > 0 && t2.sign () > 0 ) { // LS++
1030- fRegistry .fill (HIST (" Pair/" ) + HIST (event_pair_types[ev_id]) + HIST (" lspp/hs" ), v12.M (), v12.Pt (), pair_dca, v12.Rapidity (), std::fabs (cos_thetaCS ), std::fabs (phiCS ), weight);
1058+ fRegistry .fill (HIST (" Pair/" ) + HIST (event_pair_types[ev_id]) + HIST (" lspp/hs" ), v12.M (), v12.Pt (), pair_dca, v12.Rapidity (), std::fabs (cos_thetaPol ), std::fabs (phiPol ), weight);
10311059 } else if (t1.sign () < 0 && t2.sign () < 0 ) { // LS--
1032- fRegistry .fill (HIST (" Pair/" ) + HIST (event_pair_types[ev_id]) + HIST (" lsmm/hs" ), v12.M (), v12.Pt (), pair_dca, v12.Rapidity (), std::fabs (cos_thetaCS ), std::fabs (phiCS ), weight);
1060+ fRegistry .fill (HIST (" Pair/" ) + HIST (event_pair_types[ev_id]) + HIST (" lsmm/hs" ), v12.M (), v12.Pt (), pair_dca, v12.Rapidity (), std::fabs (cos_thetaPol ), std::fabs (phiPol ), weight);
10331061 }
10341062 } else if (cfgAnalysisType == static_cast <int >(o2::aod::pwgem::dilepton::utils::pairutil::DileptonAnalysisType::kHFll )) {
10351063 float dphi = v1.Phi () - v2.Phi ();
0 commit comments