Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 #ifndef Herwig_CzyzNucleonFormFactor_H
0003 #define Herwig_CzyzNucleonFormFactor_H
0004 //
0005 // This is the declaration of the CzyzNucleonFormFactor class.
0006 //
0007 
0008 #include "BaryonFormFactor.h"
0009 
0010 namespace Herwig {
0011 
0012 using namespace ThePEG;
0013 
0014 /**
0015  * The CzyzNucleonFormFactor class implements the model of 
0016  * Phys.Rev. D90 (2014) no.11, 114021 for the proton and neutron form factors
0017  *
0018  * @see \ref CzyzNucleonFormFactorInterfaces "The interfaces"
0019  * defined for CzyzNucleonFormFactor.
0020  */
0021 class CzyzNucleonFormFactor: public BaryonFormFactor {
0022 
0023 public:
0024 
0025   /**
0026    * The default constructor.
0027    */
0028   CzyzNucleonFormFactor();
0029 
0030   /**
0031    * The form factor for the weak decay of a spin \f$\frac12\f$ baryon to a 
0032    * spin \f$\frac12\f$ baryon.  
0033    * @param q2 The scale \f$q^2\f$.
0034    * @param iloc The location in the form factor list.
0035    * @param id0 The PDG code of the incoming baryon.
0036    * @param id1 The PDG code of the outgoing baryon.
0037    * @param m0 The mass of the incoming baryon.
0038    * @param m1 The mass of the outgoing baryon.
0039    * @param f1v The form factor \f$F^V_1\f$.
0040    * @param f2v The form factor \f$F^V_2\f$.
0041    * @param f3v The form factor \f$F^V_3\f$.
0042    * @param f1a The form factor \f$F^A_1\f$.
0043    * @param f2a The form factor \f$F^A_2\f$.
0044    * @param f3a The form factor \f$F^A_3\f$.
0045    * @param virt Whether the q2 is space or timelike
0046    */
0047   virtual void SpinHalfSpinHalfFormFactor(Energy2 q2,int iloc, int id0, int id1,
0048                       Energy m0, Energy m1,
0049                       Complex & f1v,Complex & f2v,Complex & f3v,
0050                       Complex & f1a,Complex & f2a,Complex & f3a,
0051                       FlavourInfo flavour,
0052                       Virtuality virt=SpaceLike);
0053 
0054   /**
0055    * Output the setup information for the particle database
0056    * @param os The stream to output the information to
0057    * @param header Whether or not to output the information for MySQL
0058    * @param create Whether or not to add a statement creating the object
0059    */
0060   virtual void dataBaseOutput(ofstream & os,bool header,bool create) const;
0061   
0062 public:
0063 
0064   /** @name Functions used by the persistent I/O system. */
0065   //@{
0066   /**
0067    * Function used to write out object persistently.
0068    * @param os the persistent output stream written to.
0069    */
0070   void persistentOutput(PersistentOStream & os) const;
0071 
0072   /**
0073    * Function used to read in object persistently.
0074    * @param is the persistent input stream read from.
0075    * @param version the version number of the object when written.
0076    */
0077   void persistentInput(PersistentIStream & is, int version);
0078   //@}
0079 
0080   /**
0081    * The standard Init function used to initialize the interfaces.
0082    * Called exactly once for each class by the class description system
0083    * before the main function starts or
0084    * when this class is dynamically loaded.
0085    */
0086   static void Init();
0087 
0088 protected:
0089 
0090   /** @name Clone Methods. */
0091   //@{
0092   /**
0093    * Make a simple clone of this object.
0094    * @return a pointer to the new object.
0095    */
0096   virtual IBPtr clone() const;
0097 
0098   /** Make a clone of this object, possibly modifying the cloned object
0099    * to make it sane.
0100    * @return a pointer to the new object.
0101    */
0102   virtual IBPtr fullclone() const;
0103   //@}
0104   
0105 protected:
0106   
0107   /**
0108    * Initialize this object after the setup phase before saving an
0109    * EventGenerator to disk.
0110    * @throws InitException if object could not be initialized properly.
0111    */
0112   virtual void doinit();
0113 
0114 private:
0115 
0116   /**
0117    * The assignment operator is private and must never be called.
0118    * In fact, it should not even be implemented.
0119    */
0120   CzyzNucleonFormFactor & operator=(const CzyzNucleonFormFactor &) = delete;
0121 
0122 private:
0123 
0124   /**
0125    *  The masses of the \f$\rho\f$ resonances
0126    */
0127   vector<Energy> rhoMasses_;
0128   
0129   /**
0130    *  The widths of the \f$\rho\f$ resonances
0131    */
0132   vector<Energy> rhoWidths_;
0133   
0134   /**
0135    *  The masses of the \f$\omega\f$ resonances
0136    */
0137   vector<Energy> omegaMasses_;
0138   
0139   /**
0140    *  The widths of the \f$\omega\f$ resonances
0141    */
0142   vector<Energy> omegaWidths_;
0143 
0144   /**
0145    *   The real part of the \f$c_1\f$ couplings
0146    */
0147   vector<double> c1Re_;
0148 
0149   /**
0150    *   The imaginary part of the \f$c_1\f$ couplings
0151    */
0152   vector<double> c1Im_;
0153 
0154   /**
0155    *   The real part of the \f$c_2\f$ couplings
0156    */
0157   vector<double> c2Re_;
0158 
0159   /**
0160    *   The imaginary part of the \f$c_2\f$ couplings
0161    */
0162   vector<double> c2Im_;
0163 
0164   /**
0165    *   The real part of the \f$c_3\f$ couplings
0166    */
0167   vector<double> c3Re_;
0168 
0169   /**
0170    *   The imaginary part of the \f$c_3\f$ couplings
0171    */
0172   vector<double> c3Im_;
0173   
0174   /**
0175    *   The real part of the \f$c_4\f$ couplings
0176    */
0177   vector<double> c4Re_;
0178 
0179   /**
0180    *   The imaginary part of the \f$c_4\f$ couplings
0181    */
0182   vector<double> c4Im_;
0183 
0184   /**
0185    *  The complex \f$c_1\f$ coupling
0186    */
0187   vector<Complex> c1_;
0188 
0189   /**
0190    *  The complex \f$c_2\f$ coupling
0191    */
0192   vector<Complex> c2_;
0193 
0194   /**
0195    *  The complex \f$c_3\f$ coupling
0196    */
0197   vector<Complex> c3_;
0198 
0199   /**
0200    *  The complex \f$c_4\f$ coupling
0201    */
0202   vector<Complex> c4_;
0203 
0204   /**
0205    *   Proton magentic moment
0206    */
0207   double mup_;
0208 
0209   /**
0210    *  Neutron magentic moment
0211    */
0212   double mun_;
0213   
0214   /**
0215    *   \f$a\f$ parameter
0216    */
0217   double a_;
0218 
0219   /**
0220    *   \f$b\f$ parameter
0221    */
0222   double b_;
0223 };
0224 
0225 }
0226 
0227 #endif /* Herwig_CzyzNucleonFormFactor_H */