thepeg is hosted by Hepforge, IPPP Durham
ThePEG 2.3.0
MixedParticleData.h
1// -*- C++ -*-
2#ifndef THEPEG_MixedParticleData_H
3#define THEPEG_MixedParticleData_H
4//
5// This is the declaration of the MixedParticleData class.
6//
7
8#include "ParticleData.h"
9#include "MixedParticleData.fh"
10
11namespace ThePEG {
12
51
52public:
53
58 _deltagamma(0.*GeV), _pqmag(1.), _pqphase(0.),
59 _pq(1.,0.), _zmag(0.), _zphase(0.), _z(0.), _x(0.), _y(0.),
60 _prob(make_pair(1.,0.))
61 {}
62
69 static PDPtr Create(long newId, string newPDGName);
70
74 static PDPair Create(long newId, string newPDGName, string newAntiPDGName);
76
77public:
78
86 Energy deltaM() const {return _deltam;}
87
91 Energy deltaGamma() const {return _deltagamma;}
92
96 Complex pq() const {return _pq;}
97
101 Complex z() const {return _z;}
102
106 double x() const {return _x;}
107
111 double y() const {return _y;}
112
116 pair<double,double> prob() const {return _prob;}
117
122 pair<bool,Length> generateLifeTime() const;
123
127 pair<Complex,Complex> mixingAmplitudes(Length,bool) const;
128
129public:
130
138
144 void persistentInput(PersistentIStream & is, int version);
146
153 static void Init();
154
155protected:
156
161 MixedParticleData(long newId, string newPDGName);
162
166 virtual PDPtr pdclone() const;
167
168protected:
169
177 virtual void doinit();
179
180private:
181
186
191
195 void setPQMagnitude(double);
196
200 void setPQPhase(double);
201
205 void setZMagnitude(double);
206
210 void setZPhase(double);
211
212private:
213
219
225
226private:
227
236
241
245 double _pqmag;
246
250 double _pqphase;
251
256
260 double _zmag;
261
265 double _zphase;
266
271
275 double _x;
276
280 double _y;
281
285 pair<double,double> _prob;
287
288};
289
290}
291
292#include "ThePEG/Utilities/ClassTraits.h"
293
294namespace ThePEG {
295
300template <>
301struct BaseClassTrait<MixedParticleData,1> {
303 typedef ParticleData NthBase;
304};
305
308template <>
309struct ClassTraits<MixedParticleData>
310 : public ClassTraitsBase<MixedParticleData> {
312 static string className() { return "ThePEG::MixedParticleData"; }
313};
314
317}
318
319#endif /* THEPEG_MixedParticleData_H */
A concreate implementation of ClassDescriptionBase describing a concrete class with persistent data.
The MixedParticleData class is designed to store the particle data for particles which undergo mixing...
void setZMagnitude(double)
Function for the interface to set the magnitude of z.
void setPQMagnitude(double)
Function for the interface to set the magnitude of p/q.
void setDeltaGamma(Energy)
Function for the interface to set the width difference.
pair< double, double > _prob
The time-integrated mixing probabilities.
static PDPtr Create(long newId, string newPDGName)
Create a Particle which is its own anti-particle.
static PDPair Create(long newId, string newPDGName, string newAntiPDGName)
Create a particle - anti particle pair.
MixedParticleData & operator=(const MixedParticleData &)=delete
The assignment operator is private and must never be called.
void setDeltaM(Energy)
Function for the interface to set the mass difference.
static ClassDescription< MixedParticleData > initMixedParticleData
The static object used to initialize the description of this class.
double y() const
the mixing variable
virtual PDPtr pdclone() const
ParticleData clone method.
void setPQPhase(double)
Function for the interface to set the phase of p/q.
double _zphase
The phase of .
Energy deltaM() const
Mixing parameters.
Energy deltaGamma() const
The width difference.
double x() const
The mixing variable.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
double _pqmag
The magnitude of .
Energy _deltagamma
The width difference.
Complex _z
The parameter.
void setZPhase(double)
Function for the interface to set the phase of z.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
pair< bool, Length > generateLifeTime() const
For a given paricle decide is it undergoes mixing and generate the lifetime.
virtual void doinit()
Initialize this object after the setup phase before saving an EventGenerator to disk.
MixedParticleData(long newId, string newPDGName)
Protected constructor only to be used by subclasses or by the Create method.
double _x
The mixing variable.
double _y
the mixing variable
double _zmag
The magnitude of .
MixedParticleData()
The default constructor.
Energy _deltam
Mixing parameters.
pair< Complex, Complex > mixingAmplitudes(Length, bool) const
The amplitudes for the different states.
pair< double, double > prob() const
The time-integrated mixing probabilities.
static void Init()
The standard Init function used to initialize the interfaces.
double _pqphase
The phase of .
ParticleData inherits from InterfacedBase and represents the properties of a particle type.
Definition: ParticleData.h:36
PersistentIStream is used to read persistent objects from a stream where they were previously written...
PersistentOStream is used to write objects persistently to a stream from which they can be read in ag...
RCPtr is a reference counted (smart) pointer.
Definition: RCPtr.h:60
This is the main namespace within which all identifiers in ThePEG are declared.
Definition: FactoryBase.h:28
std::complex< double > Complex
ThePEG code should use Complex for all complex scalars.
Definition: Complex.h:23
pair< PDPtr, PDPtr > PDPair
A pair of pointers to ParticleData objects.
Definition: Containers.h:115
int NthBase
The type of the BaseN'th base class (int means there are no further base classes).
Definition: ClassTraits.h:161
static string className()
Return the name of class T.
Definition: ClassTraits.h:66