ThePEG  1.8.0
MultiEventGenerator.h
1 // -*- C++ -*-
2 //
3 // MultiEventGenerator.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_MultiEventGenerator_H
10 #define ThePEG_MultiEventGenerator_H
11 // This is the declaration of the MultiEventGenerator class.
12 
13 #include "EventGenerator.h"
14 
15 namespace ThePEG {
16 
35 
36 public:
37 
43  virtual ~MultiEventGenerator();
45 
46 protected:
47 
54  virtual void doGo(long next, long maxevent, bool tics);
56 
65  string addInterface(string);
66 
72  string removeInterface(string);
74 
78  void heading(ostream &, long,
79  const vector<const InterfaceBase *> &, string) const;
80 
81 public:
82 
83 
90  void persistentOutput(PersistentOStream & os) const;
91 
97  void persistentInput(PersistentIStream & is, int version);
99 
103  static void Init();
104 
105 protected:
106 
113  virtual IBPtr clone() const;
114 
119  virtual IBPtr fullclone() const;
121 
122 protected:
123 
135  virtual void rebind(const TranslationMap & trans);
136 
142  virtual IVector getReferences();
144 
145 private:
146 
148  typedef vector<string> StringVector;
149 
154 
160 
166 
170  vector<StringVector> theValues;
171 
172 private:
173 
178 
183 
184 };
185 
186 
191 template <>
194  typedef EventGenerator NthBase;
195 };
196 
200 template <>
201 struct ClassTraits<MultiEventGenerator>:
202  public ClassTraitsBase<MultiEventGenerator> {
204  static string className() { return "ThePEG::MultiEventGenerator"; }
208  static string library() { return "MultiEventGenerator.so"; }
209 
210 };
211 
214 }
215 
216 #endif /* ThePEG_MultiEventGenerator_H */