00001 #ifndef RAD_TRadGlobal 00002 #define RAD_TRadGlobal 00003 00004 #include "TConstants.h" 00005 00006 class TRadGlobal{ 00007 protected: 00008 double fE; // Beam energy 00009 double fs; // s = 4*E*E 00010 double fdE; // soft and virtual photons border absolute units 00011 double fdE_Rel; // soft and virtual photons border absolute units 00012 double fXMin; // soft and virtual photons border relative units 00013 double fLnXMin; // logarithm of previous border 00014 double fXMax; // maximum emmited energy 00015 double fLnXMax; // logarithm of maximum emitted energy 00016 double fLnR; // logarithm of ratio of maximum and mininum 00017 // possible emitted energy 00018 double fMI; // mass of initial particles 00019 double fMI2; // squared mass of initial particles 00020 double fBetaI; // velocity of initial particles 00021 double fGammaI; // gamma of initial particles 00022 double fMF; // mass of final particles 00023 double fMF2; // squared mass of final particles 00024 double fBetaF; // velocity of final particles 00025 double fGammaF; // gamma of initial particles 00026 double fThetaMin; // minimum angle we use symmetric angles only 00027 double fCosThetaMin; // minimum angle we use symmetric angles only 00028 double fL; // big logarithm 00029 double fBeta; // beta from D-functions 00030 double fTheta0; // collinear region 00031 double fTheta0_Rel;// collinear region 00032 double fCosTheta0; // collinear region 00033 double fLnD; // lnd 00034 double fb; // D function integral with fXMin upper limit 00035 double fbRed; // D function integral with fInfraRedCut upper limit 00036 double fD0; 00037 double fCosThetaInt; 00038 double fThetaInt; // theta intermediate 00039 double fInfraRedCut; // double fInfraRedNorm; 00040 double fTotalError; // total error of cross section 00041 double fRelativeError; // relative error of each part of cross section 00042 int fType; // process type 00043 00044 std::string fDatadir; 00045 std::string fVpolFname; 00046 std::string fIntFname; 00047 00048 public: 00049 TRadGlobal(); 00050 ~TRadGlobal(); 00051 inline double Get_E(){return fE;} 00052 inline double Get_s(){return fs;} 00053 inline double Get_de(){return fdE;} 00054 inline double Get_ThetaMin(){return fThetaMin;} 00055 inline double Get_CosThetaMin(){return fCosThetaMin;} 00056 inline double Get_CosThetaInt(){return fCosThetaInt;} 00057 inline double Get_XMin(){return fXMin;} 00058 inline double Get_XMax(){return fXMax;} 00059 inline double Get_LnDelta(){return fLnXMin;} 00060 inline double Get_LnXMax(){return fLnXMax;} 00061 inline double Get_LnR(){return fLnR;} 00062 inline double Get_MI2(){return fMI2;} 00063 inline double Get_MF2(){return fMF2;} 00064 inline double Get_BetaF(){return fBetaF;} 00065 inline double Get_BetaI(){return fBetaI;} 00066 inline double Get_GammaF(){return fGammaF;} 00067 inline double Get_GammaI(){return fGammaI;} 00068 inline double Get_L(){return fL;} 00069 inline double Get_Beta(){return fBeta;} 00070 inline double Get_Theta0(){return fTheta0;} 00071 inline double Get_CosTheta0(){return fCosTheta0;} 00072 inline double Get_LnD(){return fLnD;} 00073 inline double Get_b(){return fb;} 00074 inline double Get_bRed(){return fbRed;} 00075 inline double Get_bRed(const double &Beta2, const double &D0){ 00076 return pow(fInfraRedCut,Beta2)*D0; 00077 } 00078 inline double Get_InfraRedCut(){return fInfraRedCut;} 00079 // inline double Get_InfraRedNorm(){return fInfraRedNorm;} 00080 inline double Get_D0(){return fD0;} 00081 inline double Get_Norm(){return gConst->Alpha2()*gConst->HC2()*1e7/Get_s();} 00082 inline double Get_TotalError(){return fTotalError;} 00083 inline double Get_RelativeError(){return fRelativeError;} 00084 00085 inline void Set_E(const double &x){ fE = x; } 00086 inline void Set_ThetaMin(const double &x){ fThetaMin = x; } 00087 inline void Set_dE_Abs(const double &x){ fdE = x; } 00088 inline void Set_dE_Rel(const double &x){ fdE_Rel = x; } 00089 inline void Set_Theta0_Abs(const double &x){ fTheta0 = x; } 00090 inline void Set_Theta0_Rel(const double &x){ fTheta0_Rel = x; } 00091 inline void Set_ThetaInt(const double &x){ fThetaInt = x; } 00092 inline void Set_Type(const int x){ fType = x; } 00093 inline void Set_InfraRedCut(const double &x){fInfraRedCut = x;} 00094 inline void Set_TotalError(const double &x){fTotalError = x;} 00095 inline void Set_RelativeError(const double &x){fRelativeError = x;} 00096 void Init(); // commit & initialization of all parameters 00097 void Print(void); 00098 void Default(); 00099 00100 inline void Get_VarPar(const double &y, double &Beta2, double &D0){ 00101 double dL = 2*log(y); 00102 Beta2 = gConst->AlphaPi()*(fL + dL -1); 00103 // D0 = 1.+3./4.*Beta2-Beta2*Beta2/24.*(gConst->Pi2() + (fL+dL)/3 - 47./8.); 00104 D0 = 1.+3./4.*Beta2+Beta2*Beta2/4.*(9./8.-gConst->Pi2()/3); 00105 } 00106 00107 inline double Get_Var_b(const double &y){ 00108 double Beta2, D0; 00109 Get_VarPar(y, Beta2, D0); 00110 return pow(fXMin,Beta2)*D0; 00111 } 00112 00113 void SetDatadir(std::string dir) {fDatadir = dir;} 00114 void SetVpolFname(std::string fname) {fVpolFname = fname;} 00115 void SetIntFname(std::string fname) {fIntFname = fname;} 00116 std::string GetDatadir() {return fDatadir;} 00117 std::string GetVpolFname() {return fVpolFname;} 00118 std::string GetIntFname() {return fIntFname;} 00119 }; 00120 00121 extern TRadGlobal *gGlobal; 00122 00123 #endif //#ifndef RAD_TRadGlobal