File indexing completed on 2025-04-19 09:10:08
0001 #ifndef PDF_Main_ISR_Base_H
0002 #define PDF_Main_ISR_Base_H
0003
0004 #include "PDF/Main/PDF_Base.H"
0005
0006 namespace PDF {
0007
0008 struct isrtype {
0009 enum code {
0010 intact = 0,
0011 lepton = 1,
0012 hadron = 2,
0013 yfs = 3,
0014 unknown = 99
0015 };
0016 };
0017 std::ostream& operator<<(std::ostream&,isrtype::code type);
0018
0019 class ISR_Base {
0020 protected:
0021 PDF_Base *p_pdf;
0022
0023 ATOOLS::Flavour m_bunch;
0024 isrtype::code m_type;
0025
0026 double m_weight, m_exponent, m_xmax;
0027 bool m_on;
0028
0029 public:
0030 ISR_Base(PDF_Base *pdf);
0031 virtual ~ISR_Base();
0032
0033 bool On() const { return m_on; }
0034
0035 inline isrtype::code Type() const { return m_type; }
0036 inline ATOOLS::Flavour Flavour() const { return m_bunch; }
0037 inline double Exponent() const { return m_exponent; }
0038 inline double XMax() const { return m_xmax; }
0039 inline void SetPDF(PDF_Base *pdf) { p_pdf = pdf; }
0040 inline PDF_Base * PDF() const { return p_pdf; }
0041 inline virtual void SetRescaleFactor(const double & rescale) {
0042 p_pdf->SetRescaleFactor(rescale);
0043 }
0044 inline virtual void SetRescaling(const bool & resc=true) {
0045 p_pdf->SetRescaling(resc);
0046 }
0047
0048 virtual bool CalculateWeight(double x,double z,double kp2,
0049 double Q2,int warn) = 0;
0050 virtual double Weight(ATOOLS::Flavour) = 0;
0051
0052 };
0053 }
0054
0055 #endif