ThePEG  1.8.0
UnResolvedRemnant.h
1 // -*- C++ -*-
2 //
3 // UnResolvedRemnant.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_UnResolvedRemnant_H
10 #define ThePEG_UnResolvedRemnant_H
11 
12 #include "ThePEG/PDF/RemnantHandler.h"
13 
14 namespace ThePEG {
15 
27 
28 public:
29 
37 
38 public:
39 
46  virtual bool canHandle(tcPDPtr particle, const cPDVector & partons) const;
47 
58  virtual int nDim(const PartonBin & pb, bool doScale) const;
59 
68  virtual bool recreateRemnants(PartonBinInstance & pb, tPPtr oldp, tPPtr newp,
69  double newl, Energy2 scale,
70  const LorentzMomentum & p,
71  const PVector & prev = PVector()) const;
84  virtual bool recreateRemnants(PartonBinInstance & pb, tPPtr oldp, tPPtr newp,
85  double newl, Energy2 scale,
86  Energy2 shat, const LorentzMomentum & p,
87  const PVector & prev = PVector()) const;
88 
104  virtual Lorentz5Momentum generate(PartonBinInstance & pb, const double * r,
105  Energy2 scale,
106  const LorentzMomentum & p,
107  bool fixedPartonMomentum = false) const;
108 
123  virtual Lorentz5Momentum generate(PartonBinInstance & pb, const double * r,
124  Energy2 scale, Energy2 shat,
125  const LorentzMomentum & parent,
126  bool fixedPartonMomentum = false) const;
128 
129 public:
130 
137  void persistentOutput(PersistentOStream & os) const;
138 
144  void persistentInput(PersistentIStream & is, int version);
146 
150  static void Init();
151 
152 protected:
153 
160  virtual IBPtr clone() const;
161 
166  virtual IBPtr fullclone() const;
168 
176  virtual void doinit();
178 
179 private:
180 
184  double minX;
185 
190 
191 private:
192 
197 
202 
203 };
204 
209 template <>
212  typedef RemnantHandler NthBase;
213 };
214 
218 template <>
219 struct ClassTraits<UnResolvedRemnant>:
220  public ClassTraitsBase<UnResolvedRemnant> {
222  static string className() { return "ThePEG::UnResolvedRemnant"; }
226  static string library() { return "UnResolvedRemnant.so"; }
227 };
228 
231 }
232 
233 #endif /* ThePEG_UnResolvedRemnant_H */