![]() |
|
|||
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
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
![]() ![]() |