ThePEG  1.8.0
ReweightBase.h
1 // -*- C++ -*-
2 //
3 // ReweightBase.h is a part of ThePEG - Toolkit for HEP Event Generation
4 // Copyright (C) 1999-2011 Leif Lonnblad
5 //
6 // ThePEG is licenced under version 2 of the GPL, see COPYING for details.
7 // Please respect the MCnet academic guidelines, see GUIDELINES for details.
8 //
9 #ifndef ThePEG_ReweightBase_H
10 #define ThePEG_ReweightBase_H
11 // This is the declaration of the ReweightBase class.
12 
13 #include "ThePEG/Handlers/HandlerBase.h"
14 #include "ThePEG/EventRecord/SubProcess.h"
15 #include "ThePEG/Handlers/LastXCombInfo.h"
16 #include "ThePEG/Handlers/StandardXComb.fh"
17 
18 namespace ThePEG {
19 
39 class ReweightBase: public HandlerBase, public LastXCombInfo<> {
40 
41 public:
42 
45 
49  virtual ~ReweightBase();
51 
52 public:
53 
58  virtual double weight() const = 0;
59 
64  void setXComb(tXCombPtr xc);
65 
66 public:
67 
74  void persistentOutput(PersistentOStream & os) const;
75 
81  void persistentInput(PersistentIStream & is, int version);
83 
87  static void Init();
88 
89 private:
90 
95 
100 
101 };
102 
103 }
104 
105 
106 namespace ThePEG {
107 
114 template <>
115 struct BaseClassTrait<ReweightBase,1>: public ClassTraitsType {
117  typedef HandlerBase NthBase;
118 };
119 
124 template <>
125 struct ClassTraits<ReweightBase>: public ClassTraitsBase<ReweightBase> {
127  static string className() { return "ThePEG::ReweightBase"; }
128 };
129 
132 }
133 
134 #endif /* ThePEG_ReweightBase_H */