thepeg is hosted by Hepforge, IPPP Durham
ThePEG  2.2.1
V2PPDecayer.h
1 // -*- C++ -*-
2 //
3 // V2PPDecayer.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_V2PPDecayer_H
10 #define THEPEG_V2PPDecayer_H
11 // This is the declaration of the V2PPDecayer class.
12 
13 #include "ThePEG/PDT/FlatDecayer.h"
14 
15 namespace ThePEG {
16 
30 class V2PPDecayer: public FlatDecayer {
31 
32 public:
33 
39  virtual ~V2PPDecayer();
41 
42 public:
43 
53  virtual bool accept(const DecayMode & dm) const;
54 
61  virtual ParticleVector decay(const DecayMode & dm, const Particle & p) const;
62 
74  virtual double reweight(const DecayMode & dm, const Particle & parent,
75  const ParticleVector & children) const;
77 
78 public:
79 
80 
87  void persistentOutput(PersistentOStream & os) const;
88 
94  void persistentInput(PersistentIStream & is, int version);
96 
100  static void Init();
101 
102 protected:
103 
104 
105 protected:
106 
113  virtual IBPtr clone() const;
114 
119  virtual IBPtr fullclone() const;
121 
122 private:
123 
128 
132  mutable tPPtr sibling;
133 
134 private:
135 
140 
144  V2PPDecayer & operator=(const V2PPDecayer &) = delete;
145 
146 };
147 
148 }
149 
150 
151 namespace ThePEG {
152 
157 template <>
158 struct BaseClassTrait<V2PPDecayer,1>: public ClassTraitsType {
160  typedef FlatDecayer NthBase;
161 };
162 
166 template <>
167 struct ClassTraits<V2PPDecayer>
168  : public ClassTraitsBase<V2PPDecayer> {
170  static string className() { return "ThePEG::V2PPDecayer"; }
174  static string library() { return "V2PPDecayer.so"; }
175 };
176 
179 }
180 
181 #endif /* THEPEG_V2PPDecayer_H */
PersistentIStream is used to read persistent objects from a stream where they were previously written...
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
static void Init()
Standard Init function used to initialize the interfaces.
A concreate implementation of ClassDescriptionBase describing a concrete class with persistent data...
virtual bool accept(const DecayMode &dm) const
Check if this decayer can perfom the decay specified by the given decay mode.
PersistentOStream is used to write objects persistently to a stream from which they can be read in ag...
virtual ParticleVector decay(const DecayMode &dm, const Particle &p) const
Perform a decay for a given DecayMode and a given Particle instance.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
TransientRCPtr is a simple wrapper around a bare pointer which can be assigned to and from an RCPtr a...
Definition: RCPtr.h:519
This is the main namespace within which all identifiers in ThePEG are declared.
Definition: FactoryBase.h:28
tPPtr grandParent
The grand parent in case reweighting should be done.
Definition: V2PPDecayer.h:127
The V2PPDecayer class performs the decay of a vector meson into two pseudo-scalars according to a fla...
Definition: V2PPDecayer.h:30
virtual IBPtr clone() const
Make a simple clone of this object.
V2PPDecayer & operator=(const V2PPDecayer &)=delete
Private and non-existent assignment operator.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
virtual double reweight(const DecayMode &dm, const Particle &parent, const ParticleVector &children) const
Give a weight to a phase space point.
virtual ~V2PPDecayer()
Destructor.
tPPtr sibling
The decaying particles sibling in case reweighting should be done.
Definition: V2PPDecayer.h:132
RCPtr is a reference counted (smart) pointer.
Definition: RCPtr.h:60
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
The default concrete implementation of ClassTraitsBase.
Definition: ClassTraits.h:134
The DecayMode class describes a decay channel of a particle.
Definition: DecayMode.h:87
vector< PPtr > ParticleVector
A vector of pointers to Particle objects.
Definition: Containers.h:73
BaseClassTraits describes the base classes of the templated class.
Definition: ClassTraits.h:156
The FlatDecayer class inrerits from the abstract Decayer class and implements the decay of a given Pa...
Definition: FlatDecayer.h:33
static ClassDescription< V2PPDecayer > initV2PPDecayer
Describe a concrete class with persistent data.
Definition: V2PPDecayer.h:139
The templated ClassTraitsBase class defines a set of default information about classes used by ThePEG...
Definition: ClassTraits.h:52