thepeg is hosted by Hepforge, IPPP Durham
ThePEG  2.2.1
XSecCheck.h
1 // -*- C++ -*-
2 #ifndef THEPEG_XSecCheck_H
3 #define THEPEG_XSecCheck_H
4 //
5 // This is the declaration of the XSecCheck class.
6 //
7 
8 #include "ThePEG/Handlers/AnalysisHandler.h"
9 
10 namespace ThePEG {
11 
21 class XSecCheck: public AnalysisHandler {
22 
23 public:
24 
30  XSecCheck() : target(ZERO), tol(0.01), sumw(0.0) {}
31 
35  virtual ~XSecCheck();
37 
38 public:
39 
43  struct UnexpectedXSec: public Exception {};
44 
45 public:
46 
66  virtual void analyze(tEventPtr event, long ieve, int loop, int state);
68 
69 public:
70 
77  void persistentOutput(PersistentOStream & os) const;
78 
84  void persistentInput(PersistentIStream & is, int version);
86 
93  static void Init();
94 
95 protected:
96 
103  virtual IBPtr clone() const;
104 
109  virtual IBPtr fullclone() const;
111 
112 
113 
114 protected:
115 
122  virtual void doinitrun() {
124  sumw = 0.0;
125  }
126 
131  virtual void dofinish();
133 
134 private:
135 
140 
145  double tol;
146 
150  double sumw;
151 
152 private:
153 
159 
164  XSecCheck & operator=(const XSecCheck &) = delete;
165 
166 };
167 
168 }
169 
170 #include "ThePEG/Utilities/ClassTraits.h"
171 
172 namespace ThePEG {
173 
178 template <>
179 struct BaseClassTrait<XSecCheck,1> {
181  typedef AnalysisHandler NthBase;
182 };
183 
186 template <>
187 struct ClassTraits<XSecCheck>
188  : public ClassTraitsBase<XSecCheck> {
190  static string className() { return "ThePEG::XSecCheck"; }
198  static string library() { return "XSecCheck.so"; }
199 };
200 
203 }
204 
205 #endif /* THEPEG_XSecCheck_H */
double sumw
The sum of the weights of the events analyzed.
Definition: XSecCheck.h:150
PersistentIStream is used to read persistent objects from a stream where they were previously written...
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
virtual void doinitrun()
Initialize this object.
A concreate implementation of ClassDescriptionBase describing a concrete class with persistent data...
const Exception & operator=(const Exception &ex)
Assignment.
Definition: Exception.h:104
PersistentOStream is used to write objects persistently to a stream from which they can be read in ag...
TransientRCPtr is a simple wrapper around a bare pointer which can be assigned to and from an RCPtr a...
Definition: RCPtr.h:519
XSecCheck()
The default constructor.
Definition: XSecCheck.h:30
virtual IBPtr clone() const
Make a simple clone of this object.
This is the main namespace within which all identifiers in ThePEG are declared.
Definition: FactoryBase.h:28
The AnalysisHandler is the base class of all analysis objects which may be handled by the FullEventGe...
InitState state() const
Return the state of initialization of this object.
static ClassDescription< XSecCheck > initXSecCheck
The static object used to initialize the description of this class.
Definition: XSecCheck.h:158
virtual ~XSecCheck()
The destructor.
virtual void doinitrun()
Initialize this object.
Definition: XSecCheck.h:122
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
double tol
The relative tolerance accepted when comparing the total cross section with the target.
Definition: XSecCheck.h:145
CrossSection target
The expected total cross section.
Definition: XSecCheck.h:139
RCPtr is a reference counted (smart) pointer.
Definition: RCPtr.h:60
virtual void analyze(tEventPtr event, long ieve, int loop, int state)
Analyze a given Event.
Exception is the base class for all exceptions to be used in ThePEG.
Definition: Exception.h:44
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
The default concrete implementation of ClassTraitsBase.
Definition: ClassTraits.h:134
virtual void dofinish()
Finalize this object.
The XSecCheck class is a simple analysis class used for testing purposes.
Definition: XSecCheck.h:21
BaseClassTraits describes the base classes of the templated class.
Definition: ClassTraits.h:156
constexpr ZeroUnit ZERO
ZERO can be used as zero for any unitful quantity.
Definition: PhysicalQty.h:35
static void Init()
The standard Init function used to initialize the interfaces.
The templated ClassTraitsBase class defines a set of default information about classes used by ThePEG...
Definition: ClassTraits.h:52
The exception class used if the target cross section was not met.
Definition: XSecCheck.h:43