thepeg is hosted by Hepforge, IPPP Durham
ThePEG  2.2.1
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 
11 namespace ThePEG {
12 
51 
52 public:
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 
77 public:
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 
129 public:
130 
137  void persistentOutput(PersistentOStream & os) const;
138 
144  void persistentInput(PersistentIStream & is, int version);
146 
153  static void Init();
154 
155 protected:
156 
161  MixedParticleData(long newId, string newPDGName);
162 
166  virtual PDPtr pdclone() const;
167 
168 protected:
169 
177  virtual void doinit();
179 
180 private:
181 
185  void setDeltaM(Energy);
186 
190  void setDeltaGamma(Energy);
191 
195  void setPQMagnitude(double);
196 
200  void setPQPhase(double);
201 
205  void setZMagnitude(double);
206 
210  void setZPhase(double);
211 
212 private:
213 
219 
224  MixedParticleData & operator=(const MixedParticleData &) = delete;
225 
226 private:
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 
294 namespace ThePEG {
295 
300 template <>
301 struct BaseClassTrait<MixedParticleData,1> {
303  typedef ParticleData NthBase;
304 };
305 
308 template <>
309 struct ClassTraits<MixedParticleData>
310  : public ClassTraitsBase<MixedParticleData> {
312  static string className() { return "ThePEG::MixedParticleData"; }
313 };
314 
317 }
318 
319 #endif /* THEPEG_MixedParticleData_H */
PersistentIStream is used to read persistent objects from a stream where they were previously written...
static void Init()
The standard Init function used to initialize the interfaces.
std::complex< double > Complex
ThePEG code should use Complex for all complex scalars.
Definition: Complex.h:23
Energy _deltam
Mixing parameters.
double _zmag
The magnitude of .
static PDPtr Create(long newId, string newPDGName)
Create a Particle which is its own anti-particle.
A concreate implementation of ClassDescriptionBase describing a concrete class with persistent data...
PersistentOStream is used to write objects persistently to a stream from which they can be read in ag...
double _zphase
The phase of .
double _pqmag
The magnitude of .
pair< double, double > prob() const
The time-integrated mixing probabilities.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
double x() const
The mixing variable.
double _y
the mixing variable
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
This is the main namespace within which all identifiers in ThePEG are declared.
Definition: FactoryBase.h:28
pair< Complex, Complex > mixingAmplitudes(Length, bool) const
The amplitudes for the different states.
void setDeltaM(Energy)
Function for the interface to set the mass difference.
pair< double, double > _prob
The time-integrated mixing probabilities.
Complex _z
The parameter.
virtual PDPtr pdclone() const
ParticleData clone method.
void setZMagnitude(double)
Function for the interface to set the magnitude of z.
ParticleData inherits from InterfacedBase and represents the properties of a particle type...
Definition: ParticleData.h:36
Energy _deltagamma
The width difference.
static ClassDescription< MixedParticleData > initMixedParticleData
The static object used to initialize the description of this class.
double _x
The mixing variable.
void setPQMagnitude(double)
Function for the interface to set the magnitude of p/q.
pair< bool, Length > generateLifeTime() const
For a given paricle decide is it undergoes mixing and generate the lifetime.
MixedParticleData & operator=(const MixedParticleData &)=delete
The assignment operator is private and must never be called.
void setPQPhase(double)
Function for the interface to set the phase of p/q.
Energy deltaGamma() const
The width difference.
pair< PDPtr, PDPtr > PDPair
A pair of pointers to ParticleData objects.
Definition: Containers.h:115
Energy deltaM() const
Mixing parameters.
double _pqphase
The phase of .
void setDeltaGamma(Energy)
Function for the interface to set the width difference.
The MixedParticleData class is designed to store the particle data for particles which undergo mixing...
double y() const
the mixing variable
RCPtr is a reference counted (smart) pointer.
Definition: RCPtr.h:60
The default concrete implementation of ClassTraitsBase.
Definition: ClassTraits.h:134
virtual void doinit()
Initialize this object after the setup phase before saving an EventGenerator to disk.
BaseClassTraits describes the base classes of the templated class.
Definition: ClassTraits.h:156
void setZPhase(double)
Function for the interface to set the phase of z.
MixedParticleData()
The default constructor.
The templated ClassTraitsBase class defines a set of default information about classes used by ThePEG...
Definition: ClassTraits.h:52