Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 #ifndef Herwig_DalitzSigma_H
0003 #define Herwig_DalitzSigma_H
0004 //
0005 // This is the declaration of the DalitzSigma class.
0006 //
0007 
0008 #include "DalitzResonance.h"
0009 
0010 namespace Herwig {
0011 
0012 using namespace ThePEG;
0013 
0014 /**
0015  * The DalitzSigma class implements the model of Zou and Bugg for the sigma resonance.
0016  */
0017 class DalitzSigma: public DalitzResonance {
0018 
0019 public:
0020 
0021   /** @name Standard constructors and destructors. */
0022   //@{
0023   /**
0024    * The default constructor.
0025    */
0026   DalitzSigma()
0027   {}
0028 
0029   /**
0030    *  Constructor with parameters
0031    */
0032   DalitzSigma(long pid, ResonanceType::Type rtype, Energy m, Energy w,
0033           unsigned int d1, unsigned int d2, unsigned int s,
0034           double mag, double phi, InvEnergy rr,
0035           Energy2 a, Energy b1, InvEnergy b2, Energy g4pi)
0036     : DalitzResonance(pid,rtype,m,w,d1,d2,s,mag,phi,rr),
0037       a_(a), b1_(b1),b2_(b2), g4Pi_(g4pi)
0038   {}
0039 
0040 public:
0041 
0042   /**
0043    *  Return the Breit-Wigner times the form factor
0044    */
0045   virtual Complex BreitWigner(const Energy & mAB, const Energy & mA, const Energy & mB) const;
0046 
0047   /**
0048    *  Output the parameters
0049    */
0050   virtual void dataBaseOutput(ofstream & output);
0051 
0052 public:
0053 
0054   /** @name Functions used by the persistent I/O system. */
0055   //@{
0056   /**
0057    * Function used to write out object persistently.
0058    * @param os the persistent output stream written to.
0059    */
0060   void persistentOutput(PersistentOStream & os) const;
0061 
0062   /**
0063    * Function used to read in object persistently.
0064    * @param is the persistent input stream read from.
0065    * @param version the version number of the object when written.
0066    */
0067   void persistentInput(PersistentIStream & is, int version);
0068   //@}
0069 
0070   /**
0071    * The standard Init function used to initialize the interfaces.
0072    * Called exactly once for each class by the class description system
0073    * before the main function starts or
0074    * when this class is dynamically loaded.
0075    */
0076   static void Init();
0077 
0078 private:
0079 
0080   /**
0081    * The assignment operator is private and must never be called.
0082    * In fact, it should not even be implemented.
0083    */
0084   DalitzSigma & operator=(const DalitzSigma &) = delete;
0085 
0086 private :
0087 
0088   /**
0089    *  Four pion phase-space
0090    */
0091   double rho4pi(const Energy2 &s,const Energy & mpi) const {
0092     static const InvEnergy2 c1(3.5/GeV2);
0093     static const Energy2    c2(2.8*GeV2);
0094     return sqrt(1.-16.*sqr(mpi)/s)/(1.+exp(c1*(c2-s)));
0095   }
0096   
0097 private:
0098 
0099   /**
0100    *  Parameters of the propagator form
0101    */
0102   //@{
0103   /**
0104    *  \f$a\f$ parameter
0105    */
0106   Energy2 a_;
0107 
0108   /**
0109    *  \f$b_1\f$ parameter
0110    */
0111   Energy b1_;
0112 
0113   /**
0114    *  \f$b_2\f$ parameter
0115    */
0116   InvEnergy b2_;
0117 
0118   /**
0119    *  Four pion coupling
0120    */
0121   Energy g4Pi_;
0122   //@}
0123   
0124 };
0125 
0126 }
0127 
0128 #endif /* Herwig_DalitzSigma_H */