thepeg is hosted by Hepforge, IPPP Durham
ThePEG  2.2.1
FlatDecayer.h
1 // -*- C++ -*-
2 //
3 // FlatDecayer.h is a part of ThePEG - Toolkit for HEP Event Generation
4 // Copyright (C) 1999-2019 Leif Lonnblad
5 //
6 // ThePEG is licenced under version 3 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 &) = delete;
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 */
The Particle class is used to describe an instance of a particle.
Definition: Particle.h:83
ClassTraitsType is an empty, non-polymorphic, base class.
Definition: ClassTraits.h:30
This is the main namespace within which all identifiers in ThePEG are declared.
Definition: FactoryBase.h:28
A concreate implementation of ClassDescriptionBase describing a concrete class without persistent dat...
static void Init()
Standard Init function used to initialize the interfaces.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
FlatDecayer & operator=(const FlatDecayer &)=delete
Private and non-existent assignment operator.
virtual double reweight(const DecayMode &, const Particle &, const ParticleVector &) const
Give a weight to a phase space point.
Definition: FlatDecayer.h:67
RCPtr is a reference counted (smart) pointer.
Definition: RCPtr.h:60
virtual ParticleVector decay(const DecayMode &dm, const Particle &p) const
Perform a decay for a given DecayMode and a given Particle instance.
The default concrete implementation of ClassTraitsBase.
Definition: ClassTraits.h:134
virtual IBPtr clone() const
Make a simple clone of this object.
The DecayMode class describes a decay channel of a particle.
Definition: DecayMode.h:87
Decayer is an abstract base class to specify objects modelling the decay of a particle.
Definition: Decayer.h:29
vector< PPtr > ParticleVector
A vector of pointers to Particle objects.
Definition: Containers.h:73
static NoPIOClassDescription< FlatDecayer > initFlatDecayer
Describe a concrete class without persistent data.
Definition: FlatDecayer.h:102
BaseClassTraits describes the base classes of the templated class.
Definition: ClassTraits.h:156
virtual bool accept(const DecayMode &dm) const
Check if this decayer can perfom the decay specified by the given decay mode.
The FlatDecayer class inrerits from the abstract Decayer class and implements the decay of a given Pa...
Definition: FlatDecayer.h:33
The templated ClassTraitsBase class defines a set of default information about classes used by ThePEG...
Definition: ClassTraits.h:52