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