ThePEG  1.8.0
MadGraphReader.h
1 // -*- C++ -*-
2 //
3 // MadGraphReader.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_MadGraphReader_H
10 #define THEPEG_MadGraphReader_H
11 // This is the declaration of the MadGraphReader class.
12 
13 #include "ThePEG/LesHouches/LesHouchesFileReader.h"
14 
15 namespace ThePEG {
16 
25 
26 public:
27 
34  : fixedScale(91.188*GeV), fixedAEM(0.007546772), fixedAS(0.12),
35  doInitCuts(false) {}
37 
38 public:
39 
46  virtual void open();
47 
56  virtual long scan();
57 
63  virtual bool doReadEvent();
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 protected:
90 
97  virtual IBPtr clone() const;
98 
103  virtual IBPtr fullclone() const;
105 
106 protected:
107 
110 
116  virtual void doinit();
117 
122  CutsPtr initCuts();
123 
129  virtual void initPDFs();
130 
135  virtual bool preInitialize() const;
136 
141  virtual void dofinish() {
143  if ( stats.accepted() > 0 ) useMe();
144  }
146 
147 protected:
148 
154  string scanCuts(string);
155 
159  long numberOfEvents(string);
160 
161 protected:
162 
169 
175  double fixedAEM;
176 
182  double fixedAS;
183 
188  map<string,double> cuts;
189 
194 
195 public:
196 
201  struct WeightedException: public Exception {};
202 
203 private:
204 
209 
214 
215 };
216 
217 }
218 
219 
220 #include "ThePEG/Utilities/ClassTraits.h"
221 
222 namespace ThePEG {
223 
230 template <>
231 struct BaseClassTrait<MadGraphReader,1>: public ClassTraitsType {
233  typedef LesHouchesFileReader NthBase;
234 };
235 
241 template <>
242 struct ClassTraits<MadGraphReader>
243  : public ClassTraitsBase<MadGraphReader> {
245  static string className() { return "ThePEG::MadGraphReader"; }
249  static string library() { return "MadGraphReader.so"; }
250 
251 };
252 
255 }
256 
257 #endif /* THEPEG_MadGraphReader_H */