00001 // -*- C++ -*- 00002 // 00003 // Onium3GDecayer.h is a part of ThePEG - Toolkit for HEP Event Generation 00004 // Copyright (C) 1999-2007 Leif Lonnblad 00005 // 00006 // ThePEG is licenced under version 2 of the GPL, see COPYING for details. 00007 // Please respect the MCnet academic guidelines, see GUIDELINES for details. 00008 // 00009 #ifndef THEPEG_Onium3GDecayer_H 00010 #define THEPEG_Onium3GDecayer_H 00011 // This is the declaration of the Onium3GDecayer class. 00012 00013 #include "ThePEG/PDT/FlatDecayer.h" 00014 00015 namespace ThePEG { 00016 00030 class Onium3GDecayer: public FlatDecayer { 00031 00032 public: 00033 00039 Onium3GDecayer() : doShower(true), theMinGGMass(2.0*GeV) {} 00040 00044 virtual ~Onium3GDecayer(); 00046 00047 public: 00048 00058 virtual bool accept(const DecayMode & dm) const; 00059 00066 virtual ParticleVector decay(const DecayMode & dm, const Particle & p) const; 00067 00079 virtual double reweight(const DecayMode & dm, const Particle & parent, 00080 const ParticleVector & children) const; 00082 00086 bool shower() const { return doShower; } 00087 00092 Energy minGGMass() const { return theMinGGMass; } 00093 00094 public: 00095 00096 00103 void persistentOutput(PersistentOStream & os) const; 00104 00110 void persistentInput(PersistentIStream & is, int version); 00112 00116 static void Init(); 00117 00118 protected: 00119 00126 virtual IBPtr clone() const; 00127 00132 virtual IBPtr fullclone() const; 00134 00135 private: 00136 00140 bool doShower; 00141 00146 Energy theMinGGMass; 00147 00148 private: 00149 00153 static ClassDescription<Onium3GDecayer> initOnium3GDecayer; 00154 00158 Onium3GDecayer & operator=(const Onium3GDecayer &); 00159 00160 }; 00161 00162 } 00163 00164 00165 namespace ThePEG { 00166 00171 template <> 00172 struct BaseClassTrait<Onium3GDecayer,1>: public ClassTraitsType { 00174 typedef FlatDecayer NthBase; 00175 }; 00176 00180 template <> 00181 struct ClassTraits<Onium3GDecayer> 00182 : public ClassTraitsBase<Onium3GDecayer> { 00184 static string className() { return "ThePEG::Onium3GDecayer"; } 00188 static string library() { return "Onium3GDecayer.so"; } 00189 }; 00190 00193 } 00194 00195 #endif /* THEPEG_Onium3GDecayer_H */