Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef BEAM_Main_Laser_Backscattering_H
0002 #define BEAM_Main_Laser_Backscattering_H
0003 
0004 #include "BEAM/Main/Beam_Base.H"
0005 
0006 namespace BEAM {  
0007   class Laser_Backscattering : public Beam_Base {
0008     double m_energyL,m_polarisationL;
0009     int    m_mode;
0010     bool   m_angles,m_pol;
0011     double m_Ebounds[2];
0012     double m_rho2,m_delta;
0013     double m_nonlin1,m_nonlin2,m_xi;
0014     double m_xe, m_xmax, m_xmax2;
0015     double m_upper,m_peak;
0016 
0017     double m_yfix,m_yden;
0018     int    m_ysteps;
0019 
0020     double m_totalC,m_total2,m_totalE;
0021 
0022     double m_polar;
0023 
0024     double Compton(double,double,double,double &);
0025     double TwoPhotons(double,double,double,double &);
0026     double Rescattering(double,double,double,double &);
0027     double SimpleCompton(double,double,double);
0028     double Polarisation(double,double,double,double);
0029   public:
0030     Laser_Backscattering(const ATOOLS::Flavour,const double,const double,
0031              const double,const double,const int,const int,const int,const int);
0032     ~Laser_Backscattering();
0033 
0034     Beam_Base     * Copy();
0035     void            PrintSpectra(std::string,int=0);
0036     bool            CalculateWeight(double,double);
0037     double          Weight(ATOOLS::Flavour=ATOOLS::Flavour(kf_none));
0038     ATOOLS::Vec4D   OutMomentum(const size_t & i=0);
0039 
0040     double          Polarisation()       { return m_polar; }
0041     void            SetMode(int _mode)   { m_mode = _mode; }
0042     void            SetPol(bool on)      { m_pol  = on; }
0043     int             Mode()               { return m_mode; }
0044     bool            Pol()                { return m_pol; }
0045     double          Exponent()           { return 0.5; }
0046     double          Xmax()               { return m_upper; }
0047     double          Peak()               { return m_peak; }
0048     bool            PolarisationOn() ;
0049   };
0050 
0051 
0052   /*!
0053     \file 
0054     \brief contains the class BEAM::Laser_Backscattering.
0055   */
0056   /*!
0057     \class Laser_Backscattering
0058     \brief This class is for Laser back scattering off electrons.
0059 
0060     In this class the 
0061     <A HREF="http://131.169.91.193/cgi-bin/spiface/find/hep/www?rawcmd=FIND+eprint+hep-ex%2F0207021">
0062     CompAZ</A> parametrization is implemented. This is a phenomenological parametrization, including 
0063     three components, each of which is modified with some additional non linear terms. These 
0064     components are:
0065     - Compton scattering,
0066     - Rescattering processes, i.e. interactions involving two electrons, and
0067     - Two photon processes.
0068 
0069     They are all based on a simple Compton backscattering spectrum implemented in
0070     Laser_Backscattering::SimpleCompton(double,double,double).
0071   */
0072   /*!
0073     \var int Laser_Backscattering::m_mode
0074     The mode for the CompAZ spectrum:
0075     - 0 all contributions.
0076     - 1 direct contribution of Compton process only.
0077     - 2 scattering with 2 photons only.
0078     - 3 scattering off secondary electrons.
0079     .
0080     another option is to use just the simple compton spectrum
0081     - -1 for comparison only.
0082     .
0083   */
0084   /*!
0085     \var bool Laser_Backscattering::m_angles
0086     Collinear photons (0) or angles taken into account (1). At the moment  only option 0,
0087     i.e. collinear photons, is supported. 
0088 
0089     \todo Enable m_angles = 1.
0090   */
0091   /*!
0092     \var bool Laser_Backscattering::m_pol
0093     Whether degree of polarization should be calculated or not. This happens, if the incoming 
0094     electron beam has a polarization degree different from 0 or if the Laser photons are polarized.
0095   */
0096   /*! 
0097     \var double Laser_Backscattering::m_Ebounds[2]
0098     The electron energies bounds for this parametrization to be resaonable.
0099     At the moment they are set to 50 GeV < E < 500 GeV.
0100   */
0101   /*!
0102     \var double Laser_Backscattering::m_energyL
0103     The energy of the laser-photons, \f$\omega_L\f$.
0104   */
0105   /*!
0106     \var double Laser_Backscattering::m_polarisationL
0107     The polarization degree of the laser-photons, \f$\lambda_L\f$.
0108   */
0109   /*!
0110     \var double Laser_Backscattering::m_xe
0111     The characteristic parameter of the process, given by:
0112     \f[
0113     \xi = \frac{4E_e\omega_L}{m_e^2}\,.
0114     \f]
0115     If nonlinear corrections are included, this is modified to read
0116     \f[
0117     \xi = \frac{4E_e\omega_L}{m_e^2(1+\chi)}\,.
0118     \f]
0119   */
0120   /*!
0121     \var double Laser_Backscattering::m_xmax
0122     The maximal energy fraction \f$ x_{\rm max}\f$ the backscattered photons can obtain from Compton
0123     scattering. It is given by
0124     \f[
0125     x_{\rm max} = \frac{\xi}{1+\xi}
0126     \f]
0127   */
0128   /*!
0129     \var double Laser_Backscattering::m_xmax2
0130     The maximal energy fraction for backscattered photons from the two photon process, 
0131     \f$ x_{\rm max}^{(2)}\f$.
0132     It is given by  
0133     \f[
0134     x_{\rm max}^{(2)} = \frac{2\xi}{1+2\xi}\,.
0135     \f]
0136   */
0137   /*!
0138     \var double Laser_Backscattering::m_rho2
0139     A parameter for the damping of the Compton pieces of the spectrum, \f$\rho^2\f$.
0140   */
0141   /*!
0142     \var double Laser_Backscattering::m_delta
0143     A parameter for the damping of the two photon piece of the spectrum, \f$\delta\f$.
0144   */
0145   /*!
0146     \var double Laser_Backscattering::m_nonlin1
0147     Parameter for nonlinear corrections \f$\nu_1\f$.
0148   */
0149   /*!
0150     \var double Laser_Backscattering::m_nonlin2  
0151     Parameter for nonlinear corrections \f$\nu_2\f$.
0152   */
0153   /*!
0154     \var double Laser_Backscattering::m_xi
0155     The effective nonlinearity parameter \f$\chi\f$. It is given by
0156     \f[
0157     \chi = \nu_1 + \nu_2 E_e\,.
0158     \f]
0159   */
0160   /*! 
0161     \var double Laser_Backscattering::m_upper
0162     Depending on the mode, this is either \f$ x_{\rm max}\f$ or \f$ x_{\rm max}^{(2)}\f$.
0163   */
0164   /*!
0165     \var double Laser_Backscattering::m_peak
0166     The peak position of the spectrum, \f$ x_{\rm max}\f$.
0167   */
0168   /*!
0169     \var double Laser_Backscattering::m_yfix
0170     A parameter for the evaluation of the rescattering-convolution, \f$y_{\rm fix} = 1/(1-\xi)\f$.
0171   */
0172   /*!
0173     \var double Laser_Backscattering::m_yden
0174     A parameter for the evaluation of the rescattering-convolution, \f$y_{\rm den} = \log(1-\xi)\f$.
0175   */
0176   /*!
0177     \var int Laser_Backscattering::m_ysteps
0178     The number of steps in the convolution for the rescattering.
0179   */
0180   /*!
0181     \var double Laser_Backscattering::m_totalC
0182     The norm of the Compton contribution.
0183   */
0184   /*!
0185     \var double Laser_Backscattering::m_total2
0186     The norm of the two-photon contribution.
0187   */
0188   /*!
0189     \var double Laser_Backscattering::m_totalE
0190     The norm of the rescatering contribution.
0191   */
0192   /*!
0193     \var double Laser_Backscattering::m_polar
0194     The polarization degree.
0195   */
0196   /*!
0197     \fn Laser_Backscattering::Laser_Backscattering(const ATOOLS::Flavour,const double,const double,
0198                                                    const double,const double,const int,
0199                            const int,const int,bool &);
0200     This is the constructor of the class. It initializes a large variety of internal parameters.
0201     The vectors are constructed by calling the default constructor of the Beam_Base.
0202   */
0203   /*!
0204     \fn Beam_Base * Laser_Backscattering::Copy()
0205     A method to fully copy the class, including all parameter settings.
0206   */
0207   /*!
0208     \fn void Laser_Backscattering::PrintSpectra(std::string)
0209     When called, this method outputs the spectra and its contributions to a file specified by
0210     the string variable.
0211   */
0212   /*!
0213     \fn bool Laser_Backscattering::CalculateWeight(double,double);
0214     Calculates the weight dependent on hte energy fraction \f$x\f$ of the photon w.r.t the
0215     incoming lepton and in accordance with the mode given by Laser_Backscattering::m_mode.
0216   */
0217   /*!
0218     \fn double Laser_Backscattering::Weight(ATOOLS::Flavour=ATOOLS::Flavour(kf_none));
0219     After checking that the outgoing particle indeed is a photon, the calculated weight
0220     is returned. In principle, from there one could also return an electron energy distribution,
0221     but this has not been implmeneted yet.
0222   */
0223   /*!
0224     \fn double Laser_Backscattering::SimpleCompton(double,double,double).
0225     Evaluates and returns the normalized simple Compton backscattering spectrum
0226     \f[
0227     {\cal F}_C(x,z,\Lambda) = \frac{1}{{\cal N}(z,\Lambda)}\times
0228                             \left[1-x  + \frac{1}{1-x} - \frac{4z}{1+z} + \frac{4z^2}{(1+z)^2}
0229                             -\Lambda \frac{2x-x^2}{1-x}\cdot\left(\frac{2z}{1+z}-1\right)\right]\,,
0230     \f]
0231     where the norm reads
0232     \f[
0233     {\cal N}_C(z,\Lambda) = \frac{z^3+18z^2+32z+16}{2z(1+z)^2}
0234                           +\frac{z^2-4z-8}{z^2}\log(1+z)
0235               -\Lambda\left[2+\frac{z^2}{(1+z)^2}-\frac{2+z}{z}\log(1+z)\right]\,,
0236     \f]
0237     for \f$ x\in [0,z]\f$. In most theory papers this form alone is used, then \f$ z = \xi\f$.
0238   */
0239   /*!
0240     \var double Laser_Backscattering::Compton(double,double,double,double &)
0241     This is the - eventually modified - Compton piece of the spectrum. It is given
0242     by the simple Compton piece above and some corrections and reads
0243     \f[
0244     {\cal F}_1(x,\lambda_e,\lambda_L,{\cal P}) = \frac{1}{{\cal N}_1}\cdot 
0245                    \exp\left[-\frac{\rho^2}{8}\left(\frac{\xi}{x}-\xi-1\right)\right]
0246                    \cdot {\cal F}_C(x,\xi,\lambda_e\cdot\lambda_L)\,.
0247     \f]
0248     The range for \f$ x\f$ is \f$ x\in [0,x_{\rm max}]\f$.
0249   */
0250   /*!
0251     \var double Laser_Backscattering::TwoPhotons(double,double,double,double &)
0252     This is the - eventually modified - two photon piece of the spectrum. It is given
0253     by the simple Compton piece above and some corrections and reads
0254     \f[
0255     {\cal F}_2(x,\lambda_e,\lambda_L,{\cal P}) = \frac{1}{{\cal N}_2}\cdot 
0256                    \exp\left[-\frac{\rho^2}{8}\left(\frac{2\xi}{x}-2\xi-1\right)\right]
0257            \cdot \left(\frac{2\xi}{x}-2\xi-1\right)^\delta
0258                    \cdot {\cal F}_C(x,2\xi,\lambda_e\cdot\lambda_L)\,.
0259     \f]
0260     The range for \f$ x\f$ is \f$ x\in [0,x_{\rm max}^{(2)}]\f$.
0261   */
0262   /*!
0263     \var double Laser_Backscattering::Rescattering(double,double,double,double &)
0264     For the rescattering piece of the spectrum a convolution of two simple Compton
0265     spectra has to be performed. 
0266     The range for \f$ x\f$ is \f$ x\in [0,x_{\rm max}]\f$.
0267   */
0268   /*!
0269     \var double Laser_Backscattering::Polarisation(double,double,double,double)
0270     The polarization piece of the spectrum yielding the degree of polarization for the outgoing
0271     photon. It is given by
0272     \f[
0273     {\cal P}_C(x,z,\lambda_e,\lambda_L) = \frac{1}{\cal N}_P
0274     \lambda_e \left[\frac{x}{1-x}\left(1+(1-x)\sqrt{\frac{2x}{z(1-x)}-1}\right)\right] -
0275     \lambda_L \left[\left(1-x+\frac{1}{1-x}\right)\left(\frac{2x}{z(1-x)}-1\right)\right]\,,
0276     \f]
0277     where the norm is given by
0278     \f[
0279     {\cal N}_P = 1-x+\frac{1}{1-x}+\frac{4x}{z(1-x)}\left(\frac{x}{z(1-x)}-1\right)
0280                  -\lambda_e\lambda_L\frac{x(2-x)}{1-x}\left(\frac{2x}{z(1-x)}-1\right)\,.
0281     \f]
0282     This expression is valid only for 
0283     \f[
0284     x \in \left[0,\frac{z}{1+z}\right]\,.
0285     \f]
0286   */
0287 }
0288 
0289 
0290 #endif