Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-08-06 09:38:31

0001 // -*- C++ -*-
0002 //
0003 // CKMBase.h is a part of ThePEG - Toolkit for HEP Event Generation
0004 // Copyright (C) 1999-2019 Leif Lonnblad
0005 //
0006 // ThePEG 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 ThePEG_CKMBase_H
0010 #define ThePEG_CKMBase_H
0011 // This is the declaration of the CKMBase class.
0012 
0013 #include "ThePEG/Interface/Interfaced.h"
0014 #include "StandardModelBase.fh"
0015 
0016 namespace ThePEG {
0017 
0018 /**
0019  * CKMBase is an abstract base classused by the StandardModelBase to
0020  * implement the Cabibbo-Kobayashi-Mascawa mixing matrix. Concrete
0021  * sub-classes must implement the getMatrix(unsigned int) function.
0022  *
0023  * @see \ref CKMBaseInterfaces "The interfaces"
0024  * defined for CKMBase.
0025  * @see StandardModelBase
0026  */
0027 class CKMBase: public Interfaced {
0028 
0029 public:
0030 
0031   /**
0032    * Return the matrix of squared CKM matrix elements. The returned
0033    * matrix should be for \a nf families. This function must be
0034    * overridden by sub-classes.
0035    */
0036   virtual vector< vector<double> >  getMatrix(unsigned int nf) const = 0;
0037 
0038 public:
0039 
0040   /**
0041    * Standard Init function used to initialize the interface.
0042    */
0043   static void Init();
0044 
0045 private:
0046 
0047   /**
0048    * Describe an abstract class without persistent data.
0049    */
0050   static AbstractNoPIOClassDescription<CKMBase> initCKMBase;
0051 
0052   /**
0053    *  Private and non-existent assignment operator.
0054    */
0055   CKMBase & operator=(const CKMBase &) = delete;
0056 
0057 };
0058 
0059 /** @cond TRAITSPECIALIZATIONS */
0060 
0061 /** This template specialization informs ThePEG about the base classes
0062  *  of CKMBase. */
0063 template <>
0064 struct BaseClassTrait<CKMBase,1>: public ClassTraitsType {
0065   /** Typedef of the first base class of CKMBase. */
0066   typedef Interfaced NthBase;
0067 };
0068 
0069 /** This template specialization informs ThePEG about the name of the
0070  *  CKMBase class. */
0071 template <>
0072 struct ClassTraits<CKMBase>: public ClassTraitsBase<CKMBase> {
0073   /** Return a platform-independent class name */
0074   static string className() { return "ThePEG::CKMBase"; }
0075 };
0076 
0077 /** @endcond */
0078 
0079 }
0080 
0081 #endif /* ThePEG_CKMBase_H */