ThePEG  1.8.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 
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() throw(InitException);
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 
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 */
double x() const
The mixing variable.
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.
Energy _deltam
Mixing parameters.
MixedParticleData & operator=(const MixedParticleData &)
The assignment operator is private and must never be called.
double _zmag
The magnitude of .
static PDPtr Create(long newId, string newPDGName)
Create a Particle which is its own anti-particle.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
A concreate implementation of ClassDescriptionBase describing a concrete class with persistent data...
std::complex< double > Complex
ThePEG code should use Complex for all complex scalars.
Definition: Complex.h:23
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 .
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
void setDeltaM(Energy)
Function for the interface to set the mass difference.
Energy deltaM() const
Mixing parameters.
pair< double, double > _prob
The time-integrated mixing probabilities.
Complex _z
The parameter.
double y() const
the mixing variable
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.
virtual PDPtr pdclone() const
ParticleData clone method.
pair< double, double > prob() const
The time-integrated mixing probabilities.
QTY< 0, 1, 0 >::Type Energy
Energy.
Definition: Unitsystem.h:34
static ClassDescription< MixedParticleData > initMixedParticleData
The static object used to initialize the description of this class.
double _x
The mixing variable.
pair< Complex, Complex > mixingAmplitudes(Length, bool) const
The amplitudes for the different states.
void setPQMagnitude(double)
Function for the interface to set the magnitude of p/q.
QTY< 1, 0, 0 >::Type Length
Length.
Definition: Unitsystem.h:40
void setPQPhase(double)
Function for the interface to set the phase of p/q.
pair< PDPtr, PDPtr > PDPair
A pair of pointers to ParticleData objects.
Definition: Containers.h:115
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...
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.
pair< bool, Length > generateLifeTime() const
For a given paricle decide is it undergoes mixing and generate the lifetime.
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.
Energy deltaGamma() const
The width difference.
MixedParticleData()
The default constructor.
The templated ClassTraitsBase class defines a set of default information about classes used by ThePEG...
Definition: ClassTraits.h:52