00001 // -*- C++ -*- 00002 // 00003 // MassGenerator.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_MassGenerator_H 00010 #define ThePEG_MassGenerator_H 00011 // This is the declaration of the MassGenerator class. 00012 00013 #include "ThePEG/Config/ThePEG.h" 00014 #include "ThePEG/Interface/Interfaced.h" 00015 #include "MassGenerator.fh" 00016 00017 namespace ThePEG { 00018 00027 class MassGenerator: public Interfaced { 00028 00029 public: 00030 00037 virtual bool accept(const ParticleData &) const = 0; 00038 00042 virtual Energy mass(const ParticleData &) const = 0; 00044 00045 public: 00046 00050 static void Init(); 00051 00052 private: 00053 00058 static AbstractNoPIOClassDescription<MassGenerator> initMassGenerator; 00059 00063 MassGenerator & operator=(const MassGenerator &); 00064 00065 }; 00066 00071 template <> 00072 struct BaseClassTrait<MassGenerator,1>: public ClassTraitsType { 00074 typedef Interfaced NthBase; 00075 }; 00076 00079 template <> 00080 struct ClassTraits<MassGenerator>: public ClassTraitsBase<MassGenerator> { 00082 static string className() { return "ThePEG::MassGenerator"; } 00083 }; 00084 00087 } 00088 00089 #endif /* ThePEG_MassGenerator_H */