ThePEG  1.8.0
SubProcessGroup.h
1 // -*- C++ -*-
2 //
3 // SubProcessGroup.h is a part of ThePEG - Toolkit for HEP Event Generation
4 // Copyright (C) 1999-2007 Leif Lonnblad
5 // Copyright (C) 2009-2010 Simon Platzer
6 //
7 // ThePEG is licenced under version 2 of the GPL, see COPYING for details.
8 // Please respect the MCnet academic guidelines, see GUIDELINES for details.
9 //
10 #ifndef ThePEG_SubProcessGroup_H
11 #define ThePEG_SubProcessGroup_H
12 // This is the declaration of the SubProcessGroup class.
13 
14 #include "ThePEG/EventRecord/SubProcess.h"
15 
16 namespace ThePEG {
17 
25 class SubProcessGroup: public SubProcess {
26 
27 public:
28 
35  SubProcessGroup(const PPair & newIncoming,
36  tCollPtr newCollision = tCollPtr(),
37  tcEventBasePtr newHandler = tcEventBasePtr());
38 
42  virtual ~SubProcessGroup();
43 
47  virtual SubProPtr clone() const;
48 
49 protected:
50 
58  virtual void rebind(const EventTranslationMap & trans);
59 
60 public:
61 
66  virtual void transform(const LorentzRotation &);
67 
71  const SubProcessVector& dependent() const { return theDependent; }
72 
77 
81  void add(tSubProPtr sub) { dependent().push_back(sub); }
82 
83 public:
84 
88  void persistentOutput(PersistentOStream &) const;
89 
94 
98  static void Init();
99 
100 private:
101 
106 
107 public:
108 
112  virtual void printMe(ostream&) const;
113 
114 private:
115 
120 
126 
131  friend struct ClassTraits<SubProcessGroup>;
132 
137 
138 };
139 
140 
145 template <>
148  typedef EventRecordBase NthBase;
149 };
150 
153 template <>
154 struct ClassTraits<SubProcessGroup>: public ClassTraitsBase<SubProcessGroup> {
156  static string className() { return "ThePEG::SubProcessGroup"; }
158  static TPtr create() { return TPtr::Create(SubProcessGroup()); }
159 };
160 
163 }
164 
165 #endif /* ThePEG_SubProcessGroup_H */