00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef ThePEG_SoftRemnantHandler_H
00010 #define ThePEG_SoftRemnantHandler_H
00011
00012
00013 #include "ThePEG/PDF/RemnantHandler.h"
00014 #include "ThePEG/PDT/RemnantDecayer.fh"
00015
00016 namespace ThePEG {
00017
00028 class SoftRemnantHandler: public RemnantHandler {
00029
00030 public:
00031
00038 virtual bool canHandle(tcPDPtr particle, const cPDVector & partons) const;
00039
00055 virtual Lorentz5Momentum generate(PartonBinInstance & pb, const double * r,
00056 Energy2 scale,
00057 const LorentzMomentum & p) const;
00058
00073 virtual Lorentz5Momentum generate(PartonBinInstance & pb, const double * r,
00074 Energy2 scale, Energy2 shat,
00075 const LorentzMomentum & parent) const;
00076
00085 virtual bool recreateRemnants(PartonBinInstance & pb, tPPtr oldp, tPPtr newp,
00086 double newl, Energy2 scale,
00087 const LorentzMomentum & p,
00088 const PVector & prev = PVector()) const;
00101 virtual bool recreateRemnants(PartonBinInstance & pb, tPPtr oldp, tPPtr newp,
00102 double newl, Energy2 scale,
00103 Energy2 shat, const LorentzMomentum & p,
00104 const PVector & prev = PVector()) const;
00106
00107 public:
00108
00115 void persistentOutput(PersistentOStream & os) const;
00116
00122 void persistentInput(PersistentIStream & is, int version);
00124
00128 static void Init();
00129
00130 protected:
00131
00138 virtual IBPtr clone() const;
00139
00144 virtual IBPtr fullclone() const;
00146
00147 private:
00148
00153 RemDecPtr remdec;
00154
00158 void setDecayer(RemDecPtr rd);
00159
00160
00161 private:
00162
00166 static ClassDescription<SoftRemnantHandler> initSoftRemnantHandler;
00167
00171 SoftRemnantHandler & operator=(const SoftRemnantHandler &);
00172
00173 };
00174
00179 template <>
00180 struct BaseClassTrait<SoftRemnantHandler,1>: public ClassTraitsType {
00182 typedef RemnantHandler NthBase;
00183 };
00184
00188 template <>
00189 struct ClassTraits<SoftRemnantHandler>:
00190 public ClassTraitsBase<SoftRemnantHandler> {
00192 static string className() { return "ThePEG::SoftRemnantHandler"; }
00193 };
00194
00197 }
00198
00199 #endif