@@ -114,6 +114,7 @@ struct ConfPairBinning : o2::framework::ConfigurableGroup {
114114 o2::framework::ConfigurableAxis pt2{" pt2" , {{100 , 0 , 6 }}, " Pt binning for particle 2" };
115115 o2::framework::ConfigurableAxis mass1{" mass1" , {{100 , 0 , 2 }}, " Mass binning for particle 1 (if particle has mass getter)" };
116116 o2::framework::ConfigurableAxis mass2{" mass2" , {{100 , 0 , 2 }}, " Mass binning for particle 2 (if particle has mass getter)" };
117+ o2::framework::Configurable<int > transverseMassType{" transverseMassType" , static_cast <int >(modes::TransverseMassType::kAveragePdgMass ), " Type of transverse mass (0-> Average Pdg Mass, 1-> Reduced Pdg Mass, 2-> Mt from combined 4 vector)" };
117118};
118119
119120struct ConfPairCuts : o2::framework::ConfigurableGroup {
@@ -254,6 +255,9 @@ class PairHistManager
254255 mPlotKstarVsMass2VsMult = ConfPairBinning.plotKstarVsMass2VsMult .value ;
255256 mPlotKstarVsMass1VsMass2VsMult = ConfPairBinning.plotKstarVsMass1VsMass2VsMult .value ;
256257
258+ // transverse mass type
259+ mMtType = static_cast <modes::TransverseMassType>(ConfPairBinning.transverseMassType .value );
260+
257261 // values for cuts
258262 mKstarMin = ConfPairCuts.kstarMin .value ;
259263 mKstarMax = ConfPairCuts.kstarMax .value ;
@@ -276,6 +280,7 @@ class PairHistManager
276280 mPdgMass1 = o2::analysis::femto::utils::getMass (PdgParticle1);
277281 mPdgMass2 = o2::analysis::femto::utils::getMass (PdgParticle2);
278282 mPdgAverageMass = (mPdgMass1 + mPdgMass2 ) / 2 .f ;
283+ mPdgReducedMass = (mPdgMass1 * mPdgMass2 ) / (mPdgMass1 + mPdgMass2 );
279284 }
280285 void setCharge (int chargeAbsParticle1, int chargeAbsParticle2)
281286 {
@@ -298,7 +303,7 @@ class PairHistManager
298303 mKt = partSum.Pt () / 2 .f ;
299304
300305 // set mT
301- mMt = std::hypot ( mKt , mPdgAverageMass );
306+ computeMt (partSum );
302307
303308 // Boost particle to the pair rest frame (Prf) and calculate k* (would be equivalent using particle 2)
304309 // make a copy of particle 1
@@ -488,10 +493,31 @@ class PairHistManager
488493 }
489494 }
490495
496+ void computeMt (ROOT::Math::PtEtaPhiMVector const & PairMomentum)
497+ {
498+ switch (mMtType ) {
499+ case modes::TransverseMassType::kAveragePdgMass :
500+ mMt = std::hypot (PairMomentum.Pt () / 2 .f , mPdgAverageMass );
501+ break ;
502+ case modes::TransverseMassType::kReducedPdgMass :
503+ mMt = std::hypot (PairMomentum.Pt () / 2 .f , mPdgReducedMass );
504+ break ;
505+ case modes::TransverseMassType::kMt4Vector :
506+ mMt = PairMomentum.Mt () / 2 .f ;
507+ break ;
508+ default :
509+ mMt = std::hypot (mKt , mPdgAverageMass );
510+ };
511+ }
512+
491513 o2::framework::HistogramRegistry* mHistogramRegistry = nullptr ;
492514 float mPdgMass1 = 0 .f;
493515 float mPdgMass2 = 0 .f;
516+
517+ modes::TransverseMassType mMtType = modes::TransverseMassType::kAveragePdgMass ;
494518 float mPdgAverageMass = 0 .f;
519+ float mPdgReducedMass = 0 .f;
520+
495521 int mAbsCharge1 = 1 ;
496522 int mAbsCharge2 = 1 ;
497523 ROOT::Math::PtEtaPhiMVector mParticle1 {};
0 commit comments