00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef ThePEG_LeptonLeptonRemnant_H
00010 #define ThePEG_LeptonLeptonRemnant_H
00011
00012 #include "ThePEG/PDF/RemnantHandler.h"
00013
00014 namespace ThePEG {
00015
00025 class LeptonLeptonRemnant: public RemnantHandler {
00026
00027 public:
00028
00034 LeptonLeptonRemnant();
00036
00037 public:
00038
00045 virtual bool canHandle(tcPDPtr particle, const cPDVector & partons) const;
00046
00057 virtual int nDim(const PartonBin & pb, bool doScale) const;
00058
00067 virtual bool recreateRemnants(PartonBinInstance & pb, tPPtr oldp, tPPtr newp,
00068 double newl, Energy2 scale,
00069 const LorentzMomentum & p,
00070 const PVector & prev = PVector()) const;
00083 virtual bool recreateRemnants(PartonBinInstance & pb, tPPtr oldp, tPPtr newp,
00084 double newl, Energy2 scale,
00085 Energy2 shat, const LorentzMomentum & p,
00086 const PVector & prev = PVector()) const;
00087
00103 virtual Lorentz5Momentum generate(PartonBinInstance & pb, const double * r,
00104 Energy2 scale,
00105 const LorentzMomentum & p) const;
00106
00121 virtual Lorentz5Momentum generate(PartonBinInstance & pb, const double * r,
00122 Energy2 scale, Energy2 shat,
00123 const LorentzMomentum & parent) const;
00125
00126 public:
00127
00134 void persistentOutput(PersistentOStream & os) const;
00135
00141 void persistentInput(PersistentIStream & is, int version);
00143
00147 static void Init();
00148
00149 protected:
00150
00157 virtual IBPtr clone() const;
00158
00163 virtual IBPtr fullclone() const;
00165
00173 virtual void doinit();
00175
00176 private:
00177
00181 double minX;
00182
00186 tPDPtr photon;
00187
00188 private:
00189
00193 static ClassDescription<LeptonLeptonRemnant> initLeptonLeptonRemnant;
00194
00198 LeptonLeptonRemnant & operator=(const LeptonLeptonRemnant &);
00199
00200 };
00201
00206 template <>
00207 struct BaseClassTrait<LeptonLeptonRemnant,1>: public ClassTraitsType {
00209 typedef RemnantHandler NthBase;
00210 };
00211
00215 template <>
00216 struct ClassTraits<LeptonLeptonRemnant>:
00217 public ClassTraitsBase<LeptonLeptonRemnant> {
00219 static string className() { return "ThePEG::LeptonLeptonRemnant"; }
00223 static string library() { return "LeptonLeptonRemnant.so"; }
00224 };
00225
00228 }
00229
00230 #endif