Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-08-06 09:24:18

0001 // -*- C++ -*-
0002 //
0003 // StandardCKM.h is a part of Herwig - A multi-purpose Monte Carlo event generator
0004 // Copyright (C) 2002-2019 The Herwig Collaboration
0005 //
0006 // Herwig is licenced under version 3 of the GPL, see COPYING for details.
0007 // Please respect the MCnet academic guidelines, see GUIDELINES for details.
0008 //
0009 #ifndef HERWIG_StandardCKM_H
0010 #define HERWIG_StandardCKM_H
0011 //
0012 // This is the declaration of the StandardCKM class.
0013 //
0014 #include <ThePEG/Config/Complex.h>
0015 #include <ThePEG/StandardModel/CKMBase.h>
0016 // #include "StandardCKM.fh"
0017 // #include "StandardCKM.xh"
0018 
0019 namespace Herwig {
0020 
0021 using namespace ThePEG;
0022 
0023 /** \ingroup Models
0024  * 
0025  *  StandardCKM inherits from CKMBase and implements the standard 
0026  *  parameterization of the CKM matrix in terms of three angles and 
0027  *  a phase. It provides access to the unsquared matrix from helicity 
0028  *  amplitude calculations.
0029  *
0030  * @see CKMBase
0031  */
0032 class StandardCKM: public CKMBase {
0033 
0034 public:
0035 
0036   /**
0037    * Default constructor.
0038    */
0039   StandardCKM() : theta12(0.2262), theta13(0.0037), theta23(0.0413), delta(1.05)
0040   {}
0041 
0042   /**
0043    * Return the matrix of squared CKM matrix elements. The returned
0044    * matrix should be for \a nf families.
0045    */
0046   virtual vector< vector<double> >  getMatrix(unsigned int nf) const;
0047 
0048   /**
0049    * Return the matrix of CKM matrix elements. The returned
0050    * matrix should be for \a nf families.
0051    */
0052   virtual vector< vector<Complex> > getUnsquaredMatrix(unsigned int nf) const;
0053   
0054 public:
0055   
0056   /** @name Functions used by the persistent I/O system. */
0057   //@{
0058   /**
0059    * Function used to write out object persistently.
0060    * @param os the persistent output stream written to.
0061    */
0062   void persistentOutput(PersistentOStream & os) const;
0063 
0064   /**
0065    * Function used to read in object persistently.
0066    * @param is the persistent input stream read from.
0067    * @param version the version number of the object when written.
0068    */
0069   void persistentInput(PersistentIStream & is, int version);
0070   //@}
0071   
0072   /**
0073    * Standard Init function used to initialize the interfaces.
0074    */
0075   static void Init();
0076   
0077 protected:
0078   
0079   /** @name Clone Methods. */
0080   //@{
0081   /**
0082    * Make a simple clone of this object.
0083    * @return a pointer to the new object.
0084    */
0085   virtual IBPtr clone() const;
0086 
0087   /** Make a clone of this object, possibly modifying the cloned object
0088    * to make it sane.
0089    * @return a pointer to the new object.
0090    */
0091   virtual IBPtr fullclone() const;
0092   //@}
0093   
0094 private:
0095   
0096   /**
0097    * The \f$\theta_{12}\f$ angle.
0098    */
0099   double theta12;
0100 
0101   /**
0102    * The \f$\theta_{13}\f$ angle.
0103    */
0104   double theta13;
0105 
0106   /**
0107    * The \f$\theta_{23}\f$ angle.
0108    */
0109   double theta23;
0110 
0111   /**
0112    * The \f$\delta\f$ angle describing the phase.
0113    */
0114   double delta;
0115   
0116 private:
0117 
0118   /**
0119    * Private and non-existent assignment operator.
0120    */
0121   StandardCKM & operator=(const StandardCKM &) = delete;
0122   
0123 };
0124 
0125 }
0126 
0127 #endif /* HERWIG_StandardCKM_H */