Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-04-19 09:10:12

0001 #ifndef PHOTONS_Tools_Dipole_FF_H
0002 #define PHOTONS_Tools_Dipole_FF_H
0003 
0004 #include "PHOTONS++/Tools/Dress_Blob_Base.H"
0005 
0006 namespace PHOTONS {
0007   class Dipole_FF: public Dress_Blob_Base {
0008     protected:
0009 
0010       virtual void   CalculateAvaragePhotonNumber(const double&, const double&);
0011       virtual bool   CheckIfExceedingPhotonEnergyLimits();
0012       virtual void   CheckMomentumConservationInQCMS(const ATOOLS::Poincare&,
0013                                                      const ATOOLS::Poincare&);
0014       virtual void   CorrectMomenta();
0015       virtual void   DefineDipole();
0016       virtual double Func(const double&, const std::vector<double>&,
0017                           const std::vector<double>&,
0018                           const std::vector<ATOOLS::Vec3D>&, const double&);
0019       virtual void   ResetVariables();
0020       virtual void   ReturnMomenta();
0021       virtual void   DetermineKappa();
0022       virtual void   DetermineQAndKappa();
0023 
0024     public:
0025       Dipole_FF(const Particle_Vector_Vector&);
0026       virtual ~Dipole_FF();
0027 
0028       virtual void AddRadiation();
0029   };
0030 
0031 
0032   
0033 
0034   /*!
0035     \file Dipole_FF.H
0036     \brief contains the class Dipole_FF, the main treatment class for final-final multipoles
0037   */
0038 
0039   /*!
0040     \class Dipole_FF
0041     \brief main treatment class for final-final multipoles, daughter of Dress_Blob_Base
0042   */
0043   ////////////////////////////////////////////////////////////////////////////////////////////////////
0044   // Description of member methods of Dipole_FF
0045   ////////////////////////////////////////////////////////////////////////////////////////////////////
0046   /*!
0047     \fn Dipole_FF::Dipole_FF(Particle_Vector_Vector)
0048     \brief initialises main variables necessary for the treatment of final-final multipoles
0049 
0050     At the moment the implementation is purely for single particle decays. Although most of the treatment is general some points explicitely assume a single neutral initial state.
0051   */
0052 
0053   /*!
0054     \fn Dipole_FF::~Dipole_FF
0055     \brief deletes all copies of particles made
0056   */
0057 
0058   /*!
0059     \fn void Dipole_FF::AddRadiation()
0060     \brief manages treatment method, at the end blob is dressed
0061 
0062     The course of action:
0063     -# call to <tt>Dress_Blob_Base::DefineDipole()</tt> to create the working 
0064        copies of all particles that may be modified
0065     -# boost into the \f$ Q_C \f$-system (multipole restframe) with the first 
0066        charged final state particle in \f$ +z \f$-direction (handy allways, 
0067        necessary in specialised dipole treatment), definition of \f$ Q,Q_N \f$
0068     -# calculation of the avarage photon number of the configuration; calls
0069        <tt>Avarage_Photon_Number</tt> class in case of a multipole or the 
0070        specialised <tt>Dipole_FF::CalculateAvaragePhotonNumber(double,double)</tt> 
0071        in case of a dipole \n
0072        \f$ \bar{n}>0 \f$ if \f$ \omega_{max} > \omega_{min} \f$
0073     -# photon generation procedure (if \f$ \bar{n} > 0 \f$):
0074       - reset all variables that might have been edited in previous rejected 
0075         generation cycles to their values before generation
0076       - generate all photons according to the respective distributions of each 
0077         property (<tt>Dress_Blob_Base::GeneratePhotons</tt>), define \f$ K \f$ 
0078         and check whether momentum restrictions are fulfilled, i.e. momentum 
0079         reconstruction is possible (<tt>Dipole_FF::CheckIfExceedingPhotonEnergyLimits()</tt>)
0080       - if \f$ n > 0 \f$, reconstruct the momenta of all other particles in the 
0081         new phase space (<tt>Dipole_FF::CorrectMomenta()</tt>), all momenta are 
0082         now in the \f$ P_C \f$ rest frame
0083       - calculate the weight of the generated event 
0084         (<tt>Dress_Blob_Base::CalculateWeights()</tt>) and accept or reject
0085       - if accepted boost all momenta back into the \f$ Q_C \f$ rest frame
0086       .
0087     -# call to <tt>Dipole_FF::CheckMomentumConservationInQCMS()</tt> to check 
0088        momentum conservation
0089     -# if \f$ n>0 \f$, boost all momenta back to original frame and paste the 
0090        modified momenta back into the original particles via 
0091        <tt>Dipole_FF::ReturnMomenta()</tt>
0092   */
0093 
0094   /*!
0095     \fn void Dipole_FF::CalculateAvaragePhotonNumber(double, double)
0096     \brief calculates the avarage photon number of the given dipole configuration
0097 
0098     This method is only called in case of a dipole. The values to be given are 
0099     both \f$ \beta \f$ 's in the dipole's rest frame.
0100   */
0101 
0102   /*!
0103     \fn bool Dipole_FF::CheckIfExceedingPhotonEnergyLimits()
0104     \brief checks whether momentum reconstruction is possible
0105   */
0106 
0107   /*!
0108     \fn void Dipole_FF::CheckMomentumConservationInQCMS()
0109     \brief checks momentum conservation in the \f$ Q_C \f$ rest frame, value written to m_success
0110   */
0111 
0112   /*!
0113     \fn void Dipole_FF::CorrectMomenta()
0114     \brief reconstructs all particles' momenta in the new phase space
0115 
0116     The scaling parameter is determined via <tt>Dress_Blob_Base::DetermineU()</tt>. 
0117     Then all momenta are reconstructed in the \f$ P_C \f$ rest frame.
0118   */
0119 
0120   /*!
0121     \fn void Dipole_FF::DefineDipole()
0122     \brief makes two copies of all charged and final state neutral particles
0123   */
0124 
0125   /*!
0126     \fn double Dipole_FF::Func(double, std::vector<double>, std::vector<double>, std::vector<Vec3D>, double)
0127     \brief returns the value of \f$ f(u) \f$, called by <tt>Dress_Blob_Base::DetermineU()</tt>
0128 
0129     Takes as arguments the squared mass of the initial state particle, the 
0130     charged final state particles, the neutral final state particles, the 
0131     3-vectors of all final state particles in the \f$ Q_C \f$ rest frame and 
0132     the value \f$ u \f$ where \f$ f(u) \f$ shall be evaluated.
0133   */
0134 
0135   /*!
0136     \fn void Dipole_FF::ResetVariables()
0137     \brief resets variables to their values before the correction procedure
0138   */
0139 
0140   /*!
0141     \fn void Dipole_FF::ReturnMomenta()
0142     \brief pastes the new momenta back into the original particles
0143   */
0144 
0145 }
0146 
0147 #endif