ThePEG  1.8.0
SoftRemnantHandler.h
1 // -*- C++ -*-
2 //
3 // SoftRemnantHandler.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_SoftRemnantHandler_H
10 #define ThePEG_SoftRemnantHandler_H
11 // This is the declaration of the SoftRemnantHandler class.
12 
13 #include "ThePEG/PDF/RemnantHandler.h"
14 #include "ThePEG/PDT/RemnantDecayer.fh"
15 
16 namespace ThePEG {
17 
29 
30 public:
31 
38  virtual bool canHandle(tcPDPtr particle, const cPDVector & partons) const;
39 
55  virtual Lorentz5Momentum generate(PartonBinInstance & pb, const double * r,
56  Energy2 scale,
57  const LorentzMomentum & p,
58  bool fixedPartonMomentum = false) const;
59 
74  virtual Lorentz5Momentum generate(PartonBinInstance & pb, const double * r,
75  Energy2 scale, Energy2 shat,
76  const LorentzMomentum & parent,
77  bool fixedPartonMomentum = false) const;
78 
87  virtual bool recreateRemnants(PartonBinInstance & pb, tPPtr oldp, tPPtr newp,
88  double newl, Energy2 scale,
89  const LorentzMomentum & p,
90  const PVector & prev = PVector()) const;
103  virtual bool recreateRemnants(PartonBinInstance & pb, tPPtr oldp, tPPtr newp,
104  double newl, Energy2 scale,
105  Energy2 shat, const LorentzMomentum & p,
106  const PVector & prev = PVector()) const;
108 
109 public:
110 
117  void persistentOutput(PersistentOStream & os) const;
118 
124  void persistentInput(PersistentIStream & is, int version);
126 
130  static void Init();
131 
132 protected:
133 
140  virtual IBPtr clone() const;
141 
146  virtual IBPtr fullclone() const;
148 
149 private:
150 
156 
160  void setDecayer(RemDecPtr rd);
161 
162 
163 private:
164 
169 
174 
175 };
176 
181 template <>
184  typedef RemnantHandler NthBase;
185 };
186 
190 template <>
191 struct ClassTraits<SoftRemnantHandler>:
192  public ClassTraitsBase<SoftRemnantHandler> {
194  static string className() { return "ThePEG::SoftRemnantHandler"; }
195 };
196 
199 }
200 
201 #endif /* ThePEG_SoftRemnantHandler_H */