ThePEG  1.8.0
FlatDecayer.h
1 // -*- C++ -*-
2 //
3 // FlatDecayer.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_FlatDecayer_H
10 #define ThePEG_FlatDecayer_H
11 // This is the declaration of the FlatDecayer class.
12 
13 #include "ThePEG/PDT/Decayer.h"
14 
15 namespace ThePEG {
16 
33 class FlatDecayer: public Decayer {
34 
35 public:
36 
46  virtual bool accept(const DecayMode & dm) const;
47 
54  virtual ParticleVector decay(const DecayMode & dm, const Particle & p) const;
55 
67  virtual double reweight(const DecayMode &, const Particle & ,
68  const ParticleVector & ) const {
69  return 1.0;
70  }
72 
73 public:
74 
78  static void Init();
79 
80 protected:
81 
88  virtual IBPtr clone() const;
89 
94  virtual IBPtr fullclone() const;
96 
97 private:
98 
103 
107  FlatDecayer & operator=(const FlatDecayer &);
108 
109 };
110 
111 }
112 
113 
114 namespace ThePEG {
115 
120 template <>
121 struct BaseClassTrait<FlatDecayer,1>: public ClassTraitsType {
123  typedef Decayer NthBase;
124 };
125 
128 template <>
129 struct ClassTraits<FlatDecayer>: public ClassTraitsBase<FlatDecayer> {
131  static string className() { return "ThePEG::FlatDecayer"; }
132 };
133 
136 }
137 
138 #endif /* ThePEG_FlatDecayer_H */