Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 #ifndef Herwig_DalitzResonance_H
0003 #define Herwig_DalitzResonance_H
0004 //
0005 // This is the declaration of the DalitzResonance class.
0006 //
0007 
0008 #include "ThePEG/Config/ThePEG.h"
0009 #include "DalitzResonance.fh"
0010 #include <cassert>
0011 
0012 namespace Herwig {
0013 
0014 using namespace ThePEG;
0015 
0016 namespace ResonanceType {
0017 
0018 /**
0019  *  Enum for the type of resonace
0020  */
0021 enum Type {NonResonant=0,
0022        Spin0=1,Spin1=3,Spin2=5,
0023        Spin0E691=11,Spin1E691=13,Spin2E691=15,
0024        BABARf0=21, Spin0Gauss=31, Flattef0=41, Spin0Complex=51,
0025        Flattea0=61, FlatteKstar0=71,
0026        Sigma=81,
0027        Spin1GS=23,
0028        Spin0NonResonant=101, Spin1NonResonant=103, Spin2NonResonant=105,
0029        Spin0MIPWA=-1, PiPiI2=-11, KMatrix=-21, LASS=-31};
0030 }
0031 
0032 /**
0033  * The DalitzResonance class provides a container class for
0034  * information on resonances in multi-body dalitz decays.
0035  */
0036 class DalitzResonance: public Base {
0037 
0038 public:
0039 
0040   /** @name Standard constructors and destructors. */
0041   //@{
0042   /**
0043    * The default constructor.
0044    */
0045   DalitzResonance() : id(0), type(ResonanceType::NonResonant),mass(ZERO),width(ZERO),
0046               daughter1(0),daughter2(0),spectator(0),amp(0.),R(ZERO)
0047   {}
0048 
0049   /**
0050    *  Constructor specifiying the parameters
0051    */
0052   DalitzResonance(long pid, ResonanceType::Type rtype, Energy m, Energy w,
0053           unsigned int d1, unsigned int d2, unsigned int s,
0054           double mag, double phi, InvEnergy rr)
0055     : id(pid), type(rtype), mass(m),width(w),
0056       daughter1(d1),daughter2(d2),spectator(s),
0057       amp(mag*exp(Complex(0,phi))), R(rr)
0058   {}
0059   //@}
0060 
0061 public:
0062 
0063   /**
0064    *  Return the Breit-Wigner times the form factor
0065    */
0066   virtual Complex BreitWigner(const Energy & mAB, const Energy & mA, const Energy & mB) const;
0067 
0068   /**
0069    *  Output the parameters
0070    */
0071   virtual void dataBaseOutput(ofstream & output);
0072 
0073   /**
0074    *  Read the parameters for a Dalitz resonance
0075    */
0076   static DalitzResonancePtr readResonance(string arg, string & error);
0077   
0078 public:
0079 
0080   /** @name Functions used by the persistent I/O system. */
0081   //@{
0082   /**
0083    * Function used to write out object persistently.
0084    * @param os the persistent output stream written to.
0085    */
0086   void persistentOutput(PersistentOStream & os) const;
0087 
0088   /**
0089    * Function used to read in object persistently.
0090    * @param is the persistent input stream read from.
0091    * @param version the version number of the object when written.
0092    */
0093   void persistentInput(PersistentIStream & is, int version);
0094   //@}
0095 
0096   /**
0097    * The standard Init function used to initialize the interfaces.
0098    * Called exactly once for each class by the class description system
0099    * before the main function starts or
0100    * when this class is dynamically loaded.
0101    */
0102   static void Init();
0103 
0104 private:
0105 
0106   /**
0107    * The assignment operator is private and must never be called.
0108    * In fact, it should not even be implemented.
0109    */
0110   DalitzResonance & operator=(const DalitzResonance &) = delete;
0111 
0112 public:
0113 
0114   /**
0115    *  PID of resonant particle
0116    */
0117   long id;
0118 
0119   /**
0120    *  Type of the resonance
0121    */
0122   ResonanceType::Type type;
0123 
0124   /**
0125    *  Mass of the resonance
0126    */
0127   Energy mass;
0128 
0129   /**
0130    *  Width of the resonance
0131    */
0132   Energy width;
0133 
0134   /**
0135    *  The children
0136    */
0137   unsigned int daughter1,daughter2;
0138 
0139   /**
0140    *   The spectactor
0141    */
0142   unsigned int spectator;
0143 
0144   /**
0145    *  The amplitude
0146    */
0147   Complex amp;
0148 
0149   /**
0150    *  Radius for the Ballt-Weisskopf formfactor
0151    */
0152   InvEnergy R;
0153   
0154 };
0155 
0156 }
0157 
0158 #endif /* Herwig_DalitzResonance_H */