|
|
|||
File indexing completed on 2026-08-06 09:38:29
0001 // -*- C++ -*- 0002 #ifndef THEPEG_MixedParticleData_H 0003 #define THEPEG_MixedParticleData_H 0004 // 0005 // This is the declaration of the MixedParticleData class. 0006 // 0007 0008 #include "ParticleData.h" 0009 #include "MixedParticleData.fh" 0010 0011 namespace ThePEG { 0012 0013 /** 0014 * The MixedParticleData class is designed to store the 0015 * particle data for particles which undergo mixing with their 0016 * anti-particle, e.g. \f$B^0-\bar{B}^0\f$, \f$B_s^0-\bar{B}_s^0\f$, 0017 * \f$D^0-\bar{D}^0\f$. 0018 * 0019 * The key parameters are the mass difference between the heavier 0020 * and lighter states, \f$\Delta m = m_H-m_L\f$, the width difference 0021 * \f$\Delta\Gamma = \Gamma_H-\Gamma_L\f$. While the mass difference 0022 * is positive by definition the sign of the width difference must be 0023 * determined experimentally. It should be noted that because the width 0024 * difference is expected to be negative in the Standard Model many 0025 * experiment results use the convention 0026 * \f$\Delta\Gamma = \Gamma_L - \Gamma_H\f$ so care should be taken. 0027 * 0028 * In order to be as general as possible we have included the option 0029 * of CPT violation, in addition to the violation of CP, in the mixing 0030 * in this case the light and heavy eigenstates are given by 0031 * \f[|M_L\rangle \propto p \sqrt{1-z}| M^0 \rangle 0032 * + q \sqrt{1+z}|\bar{M}^0\rangle,\f] 0033 * \f[|M_H\rangle \propto p \sqrt{1+z}| M^0 \rangle 0034 * - q \sqrt{1-z}|\bar{M}^0\rangle,\f] 0035 * where \f$p\f$, \f$q\f$ and \f$z\f$ are complex parameters with \f$z=0\f$ if CPT 0036 * is conserved. 0037 * 0038 * This gives the time evolution of the states 0039 * \f[|M^0_{\rm phys}(t)\rangle = (g_+(t)+zg_-(t))|M^0\rangle 0040 * -sqrt{1-z^2}\frac{q}{p}g_-(t)|\bar{M}^0\rangle,\f] 0041 * \f[\bar{M}^-_{\rm phys}\rangle = (g_+(t)+zg_-(t))|\bar{M}^0\rangle 0042 * -sqrt{1-z^2}\frac{p}{q}g_-(t)|M^0\rangle,\f] 0043 * for particles initially in a pure particle or antiparticle state 0044 * where 0045 * \f[g_\pm(t)=\frac12\left(e^{-im_Ht-\frac12\Gamma_Ht} \pm 0046 * e^{-im_Lt-\frac12\Gamma_Lt}\right).\f] 0047 * @see \ref MixedParticleDataInterfaces "The interfaces" 0048 * defined for MixedParticleData. 0049 */ 0050 class MixedParticleData: public ParticleData { 0051 0052 public: 0053 0054 /** 0055 * The default constructor. 0056 */ 0057 MixedParticleData() : ParticleData(), _deltam(0.*GeV), 0058 _deltagamma(0.*GeV), _pqmag(1.), _pqphase(0.), 0059 _pq(1.,0.), _zmag(0.), _zphase(0.), _z(0.), _x(0.), _y(0.), 0060 _prob(make_pair(1.,0.)) 0061 {} 0062 0063 /** @name The Create methods are special interfaces for ParticleData 0064 classes. */ 0065 //@{ 0066 /** 0067 * Create a Particle which is its own anti-particle. 0068 */ 0069 static PDPtr Create(long newId, string newPDGName); 0070 0071 /** 0072 * Create a particle - anti particle pair. 0073 */ 0074 static PDPair Create(long newId, string newPDGName, string newAntiPDGName); 0075 //@} 0076 0077 public: 0078 0079 /** 0080 * Mixing parameters 0081 */ 0082 //@{ 0083 /** 0084 * The mass difference 0085 */ 0086 Energy deltaM() const {return _deltam;} 0087 0088 /** 0089 * The width difference 0090 */ 0091 Energy deltaGamma() const {return _deltagamma;} 0092 0093 /** 0094 * \f$p/q\f$ 0095 */ 0096 Complex pq() const {return _pq;} 0097 0098 /** 0099 * \f$z\f$ 0100 */ 0101 Complex z() const {return _z;} 0102 0103 /** 0104 * The \f$x\f$ mixing variable 0105 */ 0106 double x() const {return _x;} 0107 0108 /** 0109 * the \f$y\f$ mixing variable 0110 */ 0111 double y() const {return _y;} 0112 0113 /** 0114 * The time-integrated mixing probabilities 0115 */ 0116 pair<double,double> prob() const {return _prob;} 0117 0118 /** 0119 * For a given paricle decide is it undergoes mixing 0120 * and generate the lifetime 0121 */ 0122 pair<bool,Length> generateLifeTime() const; 0123 0124 /** 0125 * The amplitudes for the different states 0126 */ 0127 pair<Complex,Complex> mixingAmplitudes(Length,bool) const; 0128 0129 public: 0130 0131 /** @name Functions used by the persistent I/O system. */ 0132 //@{ 0133 /** 0134 * Function used to write out object persistently. 0135 * @param os the persistent output stream written to. 0136 */ 0137 void persistentOutput(PersistentOStream & os) const; 0138 0139 /** 0140 * Function used to read in object persistently. 0141 * @param is the persistent input stream read from. 0142 * @param version the version number of the object when written. 0143 */ 0144 void persistentInput(PersistentIStream & is, int version); 0145 //@} 0146 0147 /** 0148 * The standard Init function used to initialize the interfaces. 0149 * Called exactly once for each class by the class description system 0150 * before the main function starts or 0151 * when this class is dynamically loaded. 0152 */ 0153 static void Init(); 0154 0155 protected: 0156 0157 /** 0158 * Protected constructor only to be used by subclasses or by the 0159 * Create method. 0160 */ 0161 MixedParticleData(long newId, string newPDGName); 0162 0163 /** 0164 * ParticleData clone method 0165 */ 0166 virtual PDPtr pdclone() const; 0167 0168 protected: 0169 0170 /** @name Standard Interfaced functions. */ 0171 //@{ 0172 /** 0173 * Initialize this object after the setup phase before saving an 0174 * EventGenerator to disk. 0175 * @throws InitException if object could not be initialized properly. 0176 */ 0177 virtual void doinit(); 0178 //@} 0179 0180 private: 0181 0182 /** 0183 * Function for the interface to set the mass difference 0184 */ 0185 void setDeltaM(Energy); 0186 0187 /** 0188 * Function for the interface to set the width difference 0189 */ 0190 void setDeltaGamma(Energy); 0191 0192 /** 0193 * Function for the interface to set the magnitude of p/q 0194 */ 0195 void setPQMagnitude(double); 0196 0197 /** 0198 * Function for the interface to set the phase of p/q 0199 */ 0200 void setPQPhase(double); 0201 0202 /** 0203 * Function for the interface to set the magnitude of z 0204 */ 0205 void setZMagnitude(double); 0206 0207 /** 0208 * Function for the interface to set the phase of z 0209 */ 0210 void setZPhase(double); 0211 0212 private: 0213 0214 /** 0215 * The static object used to initialize the description of this class. 0216 * Indicates that this is a concrete class with persistent data. 0217 */ 0218 static ClassDescription<MixedParticleData> initMixedParticleData; 0219 0220 /** 0221 * The assignment operator is private and must never be called. 0222 * In fact, it should not even be implemented. 0223 */ 0224 MixedParticleData & operator=(const MixedParticleData &) = delete; 0225 0226 private: 0227 0228 /** 0229 * Mixing parameters 0230 */ 0231 //@{ 0232 /** 0233 * The mass difference 0234 */ 0235 Energy _deltam; 0236 0237 /** 0238 * The width difference 0239 */ 0240 Energy _deltagamma; 0241 0242 /** 0243 * The magnitude of \f$p/q\f$ 0244 */ 0245 double _pqmag; 0246 0247 /** 0248 * The phase of \f$p/q\f$ 0249 */ 0250 double _pqphase; 0251 0252 /** 0253 * \f$p/q\f$ 0254 */ 0255 Complex _pq; 0256 0257 /** 0258 * The magnitude of \f$z\f$ 0259 */ 0260 double _zmag; 0261 0262 /** 0263 * The phase of \f$z\f$ 0264 */ 0265 double _zphase; 0266 0267 /** 0268 * The \f$z\f$ parameter 0269 */ 0270 Complex _z; 0271 0272 /** 0273 * The \f$x\f$ mixing variable 0274 */ 0275 double _x; 0276 0277 /** 0278 * the \f$y\f$ mixing variable 0279 */ 0280 double _y; 0281 0282 /** 0283 * The time-integrated mixing probabilities 0284 */ 0285 pair<double,double> _prob; 0286 //@} 0287 0288 }; 0289 0290 } 0291 0292 #include "ThePEG/Utilities/ClassTraits.h" 0293 0294 namespace ThePEG { 0295 0296 /** @cond TRAITSPECIALIZATIONS */ 0297 0298 /** This template specialization informs ThePEG about the 0299 * base classes of MixedParticleData. */ 0300 template <> 0301 struct BaseClassTrait<MixedParticleData,1> { 0302 /** Typedef of the first base class of MixedParticleData. */ 0303 typedef ParticleData NthBase; 0304 }; 0305 0306 /** This template specialization informs ThePEG about the name of 0307 * the MixedParticleData class and the shared object where it is defined. */ 0308 template <> 0309 struct ClassTraits<MixedParticleData> 0310 : public ClassTraitsBase<MixedParticleData> { 0311 /** Return a platform-independent class name */ 0312 static string className() { return "ThePEG::MixedParticleData"; } 0313 }; 0314 0315 /** @endcond */ 0316 0317 } 0318 0319 #endif /* THEPEG_MixedParticleData_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|