00001 // -*- C++ -*- 00002 #ifndef THEPEG_XSecCheck_H 00003 #define THEPEG_XSecCheck_H 00004 // 00005 // This is the declaration of the XSecCheck class. 00006 // 00007 00008 #include "ThePEG/Handlers/AnalysisHandler.h" 00009 00010 namespace ThePEG { 00011 00021 class XSecCheck: public AnalysisHandler { 00022 00023 public: 00024 00030 XSecCheck() : target(ZERO), tol(0.01), sumw(0.0) {} 00031 00035 virtual ~XSecCheck(); 00037 00038 public: 00039 00043 struct UnexpectedXSec: public Exception {}; 00044 00045 public: 00046 00066 virtual void analyze(tEventPtr event, long ieve, int loop, int state); 00068 00069 public: 00070 00077 void persistentOutput(PersistentOStream & os) const; 00078 00084 void persistentInput(PersistentIStream & is, int version); 00086 00093 static void Init(); 00094 00095 protected: 00096 00103 virtual IBPtr clone() const; 00104 00109 virtual IBPtr fullclone() const; 00111 00112 00113 00114 protected: 00115 00122 virtual void doinitrun() { 00123 AnalysisHandler::doinitrun(); 00124 sumw = 0.0; 00125 } 00126 00131 virtual void dofinish(); 00133 00134 private: 00135 00139 CrossSection target; 00140 00145 double tol; 00146 00150 double sumw; 00151 00152 private: 00153 00158 static ClassDescription<XSecCheck> initXSecCheck; 00159 00164 XSecCheck & operator=(const XSecCheck &); 00165 00166 }; 00167 00168 } 00169 00170 #include "ThePEG/Utilities/ClassTraits.h" 00171 00172 namespace ThePEG { 00173 00178 template <> 00179 struct BaseClassTrait<XSecCheck,1> { 00181 typedef AnalysisHandler NthBase; 00182 }; 00183 00186 template <> 00187 struct ClassTraits<XSecCheck> 00188 : public ClassTraitsBase<XSecCheck> { 00190 static string className() { return "ThePEG::XSecCheck"; } 00198 static string library() { return "XSecCheck.so"; } 00199 }; 00200 00203 } 00204 00205 #endif /* THEPEG_XSecCheck_H */