Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 #ifndef Herwig_MIPWA_H
0003 #define Herwig_MIPWA_H
0004 //
0005 // This is the declaration of the MIPWA class.
0006 //
0007 
0008 #include "DalitzResonance.h"
0009 #include "Herwig/Utilities/Interpolator.h"
0010 
0011 namespace Herwig {
0012 
0013 using namespace ThePEG;
0014 
0015 /**
0016  * The MIPWA class allows the use on experimental extractions from Model Independent Partial Wave Analyses. 
0017  */
0018 class MIPWA: public DalitzResonance {
0019 
0020 public:
0021 
0022   /**
0023    * The default constructor.
0024    */
0025   MIPWA()
0026   {}
0027 
0028   /**
0029    *  Constructor specifiying the parameters
0030    */
0031   MIPWA(long pid, ResonanceType::Type rtype, Energy m, Energy w,
0032     unsigned int d1, unsigned int d2, unsigned int s,
0033     double mag, double phi, InvEnergy rr,
0034     vector<Energy> en, vector<double> mag2, vector<double> phi2)
0035     : DalitzResonance(pid,rtype,m,w,d1,d2,s,mag,phi,rr),
0036       energy_(en), mag_(mag2), phase_(phi2)
0037   {}
0038 
0039 public:
0040 
0041   /**
0042    *  Return the Breit-Wigner times the form factor
0043    */
0044   virtual Complex BreitWigner(const Energy & mAB, const Energy & mA, const Energy & mB) const;
0045 
0046   /**
0047    *  Output the parameters
0048    */
0049   virtual void dataBaseOutput(ofstream & output);
0050 
0051 public:
0052 
0053   /** @name Functions used by the persistent I/O system. */
0054   //@{
0055   /**
0056    * Function used to write out object persistently.
0057    * @param os the persistent output stream written to.
0058    */
0059   void persistentOutput(PersistentOStream & os) const;
0060 
0061   /**
0062    * Function used to read in object persistently.
0063    * @param is the persistent input stream read from.
0064    * @param version the version number of the object when written.
0065    */
0066   void persistentInput(PersistentIStream & is, int version);
0067   //@}
0068 
0069   /**
0070    * The standard Init function used to initialize the interfaces.
0071    * Called exactly once for each class by the class description system
0072    * before the main function starts or
0073    * when this class is dynamically loaded.
0074    */
0075   static void Init();
0076 
0077 private:
0078 
0079   /**
0080    * The assignment operator is private and must never be called.
0081    * In fact, it should not even be implemented.
0082    */
0083   MIPWA & operator=(const MIPWA &) = delete;
0084 
0085 private:
0086 
0087   /**
0088    *  The energy points for the data table
0089    */
0090   vector<Energy> energy_;
0091 
0092   /**
0093    *  The magnitude of the amplitudes for the data table
0094    */
0095   vector<double> mag_;
0096 
0097   /**
0098    *  The phase of the amplitudes for the data table
0099    */
0100   vector<double> phase_;
0101   
0102   /**
0103    * Interpolators 
0104    */
0105   //@{
0106   /**
0107    *  The interpolator for the real part
0108    */
0109   mutable Interpolator<double,Energy>::Ptr iMag_;
0110 
0111   /**
0112    *  The interpolator for the imaginary part
0113    */
0114   mutable Interpolator<double,Energy>::Ptr iPhase_;
0115   //@}
0116 
0117 };
0118 
0119 }
0120 
0121 #endif /* Herwig_MIPWA_H */