File indexing completed on 2025-12-13 10:29:19
0001 #ifndef REMNANTS_Tools_Primordial_KPerp_H
0002 #define REMNANTS_Tools_Primordial_KPerp_H
0003
0004 #include "ATOOLS/Math/Histogram.H"
0005 #include "ATOOLS/Phys/Particle.H"
0006 #include "REMNANTS/Tools/Remnants_Parameters.H"
0007 #include <array>
0008 #include <map>
0009 #include <string>
0010
0011 namespace REMNANTS {
0012 class Remnant_Handler;
0013
0014 class Primordial_KPerp {
0015 private:
0016 ATOOLS::Flavour m_beamflav;
0017 bool m_on;
0018 std::array<primkT_form, 2> m_form;
0019 std::array<primkT_recoil, 2> m_recoil;
0020 std::array<double, 2> m_SIMean, m_SISigma, m_SIQ2, m_SpecMean, m_SpecSigma,
0021 m_SpecQ2;
0022 std::array<double, 2> m_SIKtmax, m_SIEta, m_SpecKtmax, m_SpecEta;
0023 double m_mean, m_sigma, m_Q2, m_ktmax, m_eta;
0024 size_t m_beam;
0025 ATOOLS::ParticleMomMap* p_ktmap;
0026
0027 double KT_Gauss(const double & ktmax) const;
0028 double KT_Gauss_Limited(const double & ktmax) const;
0029 double KT_Dipole(const double & ktmax) const;
0030 double KT_Dipole_Limited(const double & ktmax) const;
0031 void BalanceKT(const ATOOLS::Vec4D & kt_Show,const double & E_Show,
0032 const ATOOLS::Vec4D & kt_Spec,const double & E_Spec);
0033 double DipoleWeight(const double & kt) const;
0034 double LimitedWeight(const double & kt) const;
0035
0036 bool m_analysis;
0037 std::map<std::string, ATOOLS::Histogram * >m_histos;
0038 void InitAnalysis();
0039 void FinishAnalysis();
0040 public:
0041 Primordial_KPerp();
0042 ~Primordial_KPerp();
0043
0044 void Initialize(Remnant_Handler * rhandler);
0045 bool CreateBreakupKinematics(const size_t & beam,ATOOLS::ParticleMomMap * ktmap,
0046 const double & scale);
0047 ATOOLS::Vec4D KT(const ATOOLS::Particle * part,const double & ktext=-1.);
0048 };
0049 }
0050
0051 #endif