ThePEG  1.8.0
DecayHandler.h
1 // -*- C++ -*-
2 //
3 // DecayHandler.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_DecayHandler_H
10 #define ThePEG_DecayHandler_H
11 // This is the declaration of the DecayHandler class.
12 
13 #include "StepHandler.h"
14 
15 namespace ThePEG {
16 
31 class DecayHandler: public StepHandler {
32 
33 public:
34 
40  DecayHandler() : theMaxLoop(100000), theMaxLifeTime(-1.0*mm), theLifeTimeOption(false) {}
41 
45  virtual ~DecayHandler();
47 
48 public:
49 
59  virtual void handle(EventHandler & eh, const tPVector & tagged,
60  const Hint & hint);
62 
68  void performDecay(tPPtr parent, Step & s) const;
69 
70 public:
71 
78  void persistentOutput(PersistentOStream & os) const;
79 
85  void persistentInput(PersistentIStream & is, int version);
87 
91  static void Init();
92 
97  long maxLoop() const { return theMaxLoop; }
98 
102  Length maxLifeTime() const { return theMaxLifeTime; }
103 
109  bool lifeTimeOption() const { return theLifeTimeOption; }
110 
111 protected:
112 
119  virtual IBPtr clone() const;
120 
125  virtual IBPtr fullclone() const;
127 
128 private:
129 
135 
140 
145 
146 private:
147 
152 
157 
158 };
159 
166 template <>
167 struct BaseClassTrait<DecayHandler,1>: public ClassTraitsType {
169  typedef StepHandler NthBase;
170 };
171 
176 template <>
177 struct ClassTraits<DecayHandler>: public ClassTraitsBase<DecayHandler> {
179  static string className() { return "ThePEG::DecayHandler"; }
180 };
181 
184 }
185 
186 #endif /* ThePEG_DecayHandler_H */