Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-08-06 09:23:58

0001 // -*- C++ -*-
0002 #ifndef HERIWG_KornerKramerCharmDecayer_H
0003 #define HERIWG_KornerKramerCharmDecayer_H
0004 //
0005 // This is the declaration of the KornerKramerCharmDecayer class.
0006 //
0007 #include "Baryon1MesonDecayerBase.h"
0008 #include "ThePEG/StandardModel/StandardModelBase.h"
0009 
0010 namespace Herwig {
0011 using namespace ThePEG;
0012 
0013 /** \ingroup Decay
0014  *
0015  *  The <code>KornerKramerCharmDecayer</code> class implements the model of 
0016  *  Z.Phys.C55,659 (1992) for the non-leptonic decay of charm baryons.
0017  *  The couplings of the model are calculated at initialisation and stored. These
0018  *  couplings are then returned when requested using the coupling members of the 
0019  *  base class.
0020  *
0021  * @see Baryon1MesonDecayerBase.
0022  * 
0023  */
0024 class KornerKramerCharmDecayer: public Baryon1MesonDecayerBase {
0025 
0026 public:
0027 
0028   /**
0029    * Default constructor.
0030    */
0031   KornerKramerCharmDecayer();
0032 
0033   /**
0034    * Which of the possible decays is required
0035    * @param cc Is this mode the charge conjugate
0036    * @param parent The decaying particle
0037    * @param children The decay products
0038    */
0039   virtual int modeNumber(bool & cc, tcPDPtr parent, 
0040              const tPDVector & children) const;
0041 
0042   /**
0043    * Output the setup information for the particle database
0044    * @param os The stream to output the information to
0045    * @param header Whether or not to output the information for MySQL
0046    */
0047   virtual void dataBaseOutput(ofstream & os,bool header) const;
0048 
0049 protected:
0050 
0051   /**
0052    *  Coupling Members.
0053    */
0054   //@{
0055   /**
0056    * Couplings for spin-\f$\frac12\f$ to spin-\f$\frac12\f$ and a scalar.
0057    * @param imode The mode
0058    * @param m0 The mass of the decaying particle.
0059    * @param m1 The mass of the outgoing baryon.
0060    * @param m2 The mass of the outgoing meson.
0061    * @param A The coupling \f$A\f$ described above.
0062    * @param B The coupling \f$B\f$ described above.
0063    */
0064   virtual void halfHalfScalarCoupling(int imode,Energy m0,Energy m1,Energy m2,
0065                       Complex& A,Complex& B) const;
0066 
0067   /**
0068    * Couplings for spin-\f$\frac12\f$ to spin-\f$\frac12\f$ and a vector.
0069    * @param imode The mode
0070    * @param m0 The mass of the decaying particle.
0071    * @param m1 The mass of the outgoing baryon.
0072    * @param m2 The mass of the outgoing meson.
0073    * @param A1 The coupling \f$A_1\f$ described above.
0074    * @param A2 The coupling \f$A_2\f$ described above.
0075    * @param B1 The coupling \f$B_1\f$ described above.
0076    * @param B2 The coupling \f$B_2\f$ described above.
0077    */
0078   virtual void halfHalfVectorCoupling(int imode,Energy m0,Energy m1,Energy m2,
0079                       Complex& A1,Complex& A2,
0080                       Complex& B1,Complex& B2) const;
0081 
0082   /**
0083    * Couplings for spin-\f$\frac12\f$ to spin-\f$\frac32\f$ and a scalar.
0084    * @param imode The mode
0085    * @param m0 The mass of the decaying particle.
0086    * @param m1 The mass of the outgoing baryon.
0087    * @param m2 The mass of the outgoing meson.
0088    * @param A The coupling \f$A\f$ described above.
0089    * @param B The coupling \f$B\f$ described above.
0090    */
0091   virtual void halfThreeHalfScalarCoupling(int imode,Energy m0,Energy m1,Energy m2,
0092                        Complex& A,Complex& B) const;
0093 
0094   /**
0095    * Couplings for spin-\f$\frac12\f$ to spin-\f$\frac32\f$ and a vector.
0096    * @param imode The mode
0097    * @param m0 The mass of the decaying particle.
0098    * @param m1 The mass of the outgoing baryon.
0099    * @param m2 The mass of the outgoing meson.
0100    * @param A1 The coupling \f$A_1\f$ described above.
0101    * @param A2 The coupling \f$A_2\f$ described above.
0102    * @param A3 The coupling \f$A_3\f$ described above.
0103    * @param B1 The coupling \f$B_1\f$ described above.
0104    * @param B2 The coupling \f$B_2\f$ described above.
0105    * @param B3 The coupling \f$B_3\f$ described above.
0106    */
0107   virtual void halfThreeHalfVectorCoupling(int imode,Energy m0,Energy m1,Energy m2,
0108                        Complex& A1,Complex& A2,Complex& A3,
0109                        Complex& B1,Complex& B2,Complex& B3) const;
0110   //@}
0111 
0112 public:
0113 
0114   /** @name Functions used by the persistent I/O system. */
0115   //@{
0116   /**
0117    * Function used to write out object persistently.
0118    * @param os the persistent output stream written to.
0119    */
0120   void persistentOutput(PersistentOStream & os) const;
0121 
0122   /**
0123    * Function used to read in object persistently.
0124    * @param is the persistent input stream read from.
0125    * @param version the version number of the object when written.
0126    */
0127   void persistentInput(PersistentIStream & is, int version);
0128   //@}
0129 
0130   /**
0131    * Standard Init function used to initialize the interfaces.
0132    */
0133   static void Init();
0134 
0135 protected:
0136 
0137   /** @name Clone Methods. */
0138   //@{
0139   /**
0140    * Make a simple clone of this object.
0141    * @return a pointer to the new object.
0142    */
0143   virtual IBPtr clone() const {return new_ptr(*this);}
0144 
0145   /** Make a clone of this object, possibly modifying the cloned object
0146    * to make it sane.
0147    * @return a pointer to the new object.
0148    */
0149   virtual IBPtr fullclone() const {return new_ptr(*this);}
0150   //@}
0151 
0152 protected:
0153 
0154   /** @name Standard Interfaced functions. */
0155   //@{
0156   /**
0157    * Initialize this object after the setup phase before saving and
0158    * EventGenerator to disk.
0159    * @throws InitException if object could not be initialized properly.
0160    */
0161   virtual void doinit();
0162 
0163   /**
0164    * Initialize this object to the begining of the run phase.
0165    */
0166   virtual void doinitrun();
0167   //@}
0168 
0169 private:
0170 
0171   /**
0172    * Private and non-existent assignment operator.
0173    */
0174   KornerKramerCharmDecayer & operator=(const KornerKramerCharmDecayer &) = delete;
0175 
0176 private:
0177 
0178   /**
0179    * one over the number of colours 
0180    */
0181   double oneNC_;
0182 
0183   /**
0184    * Pion decay constant, \f$f_\pi\f$.
0185    */
0186   Energy fpi_;
0187 
0188   /**
0189    * Kaon decay constant, \f$f_K\f$.
0190    */
0191   Energy fk_;
0192 
0193   /**
0194    * \f$\rho\f$ decay constant, \f$f_\rho\f$.
0195    */
0196   double frho_;
0197 
0198   /**
0199    * \f$K^*\f$ decay constans, \f$f_{K^*}\f$.
0200    */
0201   double fKstar_;
0202 
0203   /**
0204    * Axial-Vector mass for the form factor for the factorizing diagrams
0205    * for the \f$c\to d\f$ transition.
0206    */
0207   Energy mdcplus_;
0208 
0209   /**
0210    * Vector mass for the form factor for the factorizing diagrams
0211    * for the \f$c\to d\f$ transition.
0212    */
0213   Energy mdcminus_;
0214 
0215   /**
0216    * Axial-Vector mass for the form factor for the factorizing diagrams
0217    * for the \f$c\to s\f$ transition.
0218    */
0219   Energy mscplus_;
0220 
0221   /**
0222    * Vector mass for the form factor for the factorizing diagrams
0223    * for the \f$c\to s\f$ transition.
0224    */
0225   Energy mscminus_;
0226 
0227   /**
0228    * Perturbative factor, \f$c_+\f$.
0229    */
0230   double cplus_;
0231 
0232   /**
0233    * Perturbative factor, \f$c_-\f$.
0234    */
0235   double cminus_;
0236 
0237   /**
0238    * \f$H_2\f$ factor for the non-factorizing diagrams.
0239    */
0240   Energy H2_;
0241 
0242   /**
0243    * \f$H_3\f$ factor for the non-factorizing diagrams.
0244    */
0245   Energy H3_;
0246 
0247   /**
0248    * SU(4) invariants for the various modes
0249    */
0250   //@{
0251   /**
0252    *  The \f$I_1\f$ invariant
0253    */
0254   vector<double> I1_;
0255 
0256   /**
0257    *  The \f$I_2\f$ invariant
0258    */
0259   vector<double> I2_;
0260 
0261   /**
0262    *  The \f$I_3\f$ invariant
0263    */
0264   vector<double> I3_;
0265 
0266   /**
0267    *  The \f$I_4\f$ invariant
0268    */
0269   vector<double> I4_;
0270 
0271   /**
0272    *  The \f$I_5\f$ invariant
0273    */
0274   vector<double> I5_;
0275 
0276   /**
0277    *  The \f$\hat{I}_3\f$ invariant
0278    */
0279   vector<double> Ihat3_;
0280 
0281   /**
0282    *  The \f$\hat{I}_4\f$ invariant
0283    */
0284   vector<double> Ihat4_;
0285   //@}
0286 
0287   /**
0288    * The PDG code for the incoming baryon.
0289    */
0290   vector<int> incoming_;
0291 
0292   /**
0293    * The PDG code for the outgoing baryon.
0294    */
0295   vector<int> outgoingB_;
0296 
0297   /**
0298    * The PDG code for the outgoing meson.
0299    */
0300   vector<int> outgoingM_;
0301 
0302   /**
0303    * The maximum weight.
0304    */
0305   vector<double> maxweight_;
0306 
0307   /**
0308    * The couplings for the different modes.
0309    */
0310   //@{
0311   /**
0312    * The first A coupling
0313    */
0314   vector<double> A1_;
0315 
0316   /**
0317    * The second A coupling
0318    */
0319   vector<InvEnergy> A2_;
0320 
0321   /**
0322    * The third A coupling
0323    */
0324   vector<InvEnergy2> A3_;
0325   /**
0326    * The first B coupling
0327    */
0328   vector<double> B1_;
0329   /**
0330    * The second B coupling
0331    */
0332   vector<InvEnergy> B2_;
0333   /**
0334    * The third B coupling
0335    */
0336   vector<InvEnergy2> B3_;
0337   //@}
0338 
0339   /**
0340    *  Initial size of the vectors
0341    */
0342   unsigned int initsize_;
0343 
0344 };
0345 
0346 }
0347 
0348 
0349 #endif /* HERIWG_KornerKramerCharmDecayer_H */