Hammer  1.0.0
Helicity Amplitude Module for Matrix Element Reweighting
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
FFBLPRBase.hh
Go to the documentation of this file.
1 ///
2 /// @file FFBLPRBase.hh
3 /// @brief Hammer base class for BLPR form factors
4 ///
5 
6 //**** This file is a part of the HAMMER library
7 //**** Copyright (C) 2016 - 2020 The HAMMER Collaboration
8 //**** HAMMER is licensed under version 3 of the GPL; see COPYING for details
9 //**** Please note the MCnet academic guidelines; see GUIDELINES for details
10 
11 // -*- C++ -*-
12 #ifndef HAMMER_FF_BLPR_BASE
13 #define HAMMER_FF_BLPR_BASE
14 
15 #include "Hammer/FormFactorBase.hh"
16 
17 namespace Hammer {
18 
19  /// @brief Base class for BLPR form factors
20  ///
21  /// @ingroup FormFactors
22  class FFBLPRBase : public FormFactorBase {
23 
24  public:
25  FFBLPRBase();
26 
27  FFBLPRBase(const FFBLPRBase& other) = default;
28  FFBLPRBase& operator=(const FFBLPRBase& other) = delete;
29  FFBLPRBase(FFBLPRBase&& other) = delete;
30  FFBLPRBase& operator=(FFBLPRBase&& other) = delete;
31  virtual ~FFBLPRBase() = default;
32 
33  /// @brief method to evaluate the object on a specific particle set
34  /// @param[in] parent the parent Particle
35  /// @param[in] daughters the daughters (and grand-daughters, if necessary) Particle list
36  /// @param[in] references the parent Particle siblings (necessary e.g. for helicity amplitude phase conventions)
37  virtual void eval(const Particle& parent, const ParticleList& daughters,
38  const ParticleList& references);
39 
40  protected:
41  /// @brief
42  /// @param[in] w
43  /// @param[in] z
44  /// @return
45  double CS(double w, double z) const;
46 
47  /// @brief
48  /// @param[in] w
49  /// @param[in] z
50  /// @return
51  double CP(double w, double z) const;
52 
53  /// @brief
54  /// @param[in] w
55  /// @param[in] z
56  /// @return
57  double CV1(double w, double z) const;
58 
59  /// @brief
60  /// @param[in] w
61  /// @param[in] z
62  /// @return
63  double CV2(double w, double z) const;
64 
65  /// @brief
66  /// @param[in] w
67  /// @param[in] z
68  /// @return
69  double CV3(double w, double z) const;
70 
71  /// @brief
72  /// @param[in] w
73  /// @param[in] z
74  /// @return
75  double CA1(double w, double z) const;
76 
77  /// @brief
78  /// @param[in] w
79  /// @param[in] z
80  /// @return
81  double CA2(double w, double z) const;
82 
83  /// @brief
84  /// @param[in] w
85  /// @param[in] z
86  /// @return
87  double CA3(double w, double z) const;
88 
89  /// @brief
90  /// @param[in] w
91  /// @param[in] z
92  /// @return
93  double CT1(double w, double z) const;
94 
95  /// @brief
96  /// @param[in] w
97  /// @param[in] z
98  /// @return
99  double CT2(double w, double z) const;
100 
101  /// @brief
102  /// @param[in] w
103  /// @param[in] z
104  /// @return
105  double CT3(double w, double z) const;
106 
107  // Initialization of common variables & functions
108  void initVars(double w, double z) const;
109 
110  // DiLog function
111  double DiLog(double z) const;
112 
113  /// @brief
114  /// @param[in] point
115  /// @param[in] masses
116  /// @return
117  virtual void evalAtPSPoint(const std::vector<double>& point, const std::vector<double>& masses = {}) = 0;
118 
119  /// @brief
120  virtual void defineSettings() = 0;
121 
122 
123  protected:
124  void addRefs() const;
125 
126  private:
127  mutable double _wSq;
128  mutable double _sqrt1wSq;
129  mutable double _zSq;
130  mutable double _zCu;
131  mutable double _zm1Sq;
132  mutable double _zp1Sq;
133  mutable double _lnz;
134  mutable double _wZ;
135  mutable double _wP;
136  mutable double _wM;
137  mutable double _wmwZSq;
138  mutable double _lnwP;
139  mutable double _rW;
140  mutable double _Omega;
141  };
142 
143 } // namespace Hammer
144 
145 #endif
double CV3(double w, double z) const
Definition: FFBLPRBase.cc:83
double CT2(double w, double z) const
Definition: FFBLPRBase.cc:113
Hammer base form factor class.
Base class for form factors.
double CP(double w, double z) const
Definition: FFBLPRBase.cc:65
FFBLPRBase & operator=(const FFBLPRBase &other)=delete
double DiLog(double z) const
Definition: FFBLPRBase.cc:125
double CA3(double w, double z) const
Definition: FFBLPRBase.cc:101
virtual void evalAtPSPoint(const std::vector< double > &point, const std::vector< double > &masses={})=0
void addRefs() const
Definition: FFBLPRBase.cc:199
const std::vector< double > & masses() const
returns the particle masses of the current decay signature
Definition: ParticleData.cc:44
std::vector< Particle > ParticleList
Definition: Particle.fhh:20
double CA2(double w, double z) const
Definition: FFBLPRBase.cc:95
Particle class.
Definition: Particle.hh:30
double CV1(double w, double z) const
Definition: FFBLPRBase.cc:71
void initVars(double w, double z) const
Definition: FFBLPRBase.cc:42
virtual void eval(const Particle &parent, const ParticleList &daughters, const ParticleList &references)
method to evaluate the object on a specific particle set
Definition: FFBLPRBase.cc:25
Base class for BLPR form factors.
Definition: FFBLPRBase.hh:22
double CT3(double w, double z) const
Definition: FFBLPRBase.cc:119
double CS(double w, double z) const
Definition: FFBLPRBase.cc:59
double CV2(double w, double z) const
Definition: FFBLPRBase.cc:77
virtual ~FFBLPRBase()=default
double CT1(double w, double z) const
Definition: FFBLPRBase.cc:107
double CA1(double w, double z) const
Definition: FFBLPRBase.cc:89
virtual void defineSettings()=0
defines new settings for this class