00001
00002
00003
00004 #ifndef Li9He8_H
00005 #define Li9He8_H
00006
00007 #include <iostream>
00008 #include <fstream>
00009 #include <cstdlib>
00010 #include <TROOT.h>
00011 #include <TRandom.h>
00012 #include <cmath>
00013 #include <TVector3.h>
00014
00015 #include <CLHEP/Units/PhysicalConstants.h>
00016 #include "CLHEP/Units/SystemOfUnits.h"
00017 #include "GaudiKernel/RndmGenerators.h"
00018 using namespace std;
00019 using namespace CLHEP;
00020
00021 class Li9He8
00022 {
00023 public:
00024 Li9He8(IRndmGenSvc *rgs);
00025 ~Li9He8() {};
00026
00027
00028
00029
00030
00031 void Li9Decay(TVector3 &pElectron, TVector3 &pNeutron,TVector3 &pAlpha1,
00032 TVector3 &pAlpha2, double alpha_mass, bool complete_decay );
00033
00034
00035
00036
00037
00038 void He8Decay(TVector3 &pElectron, TVector3 &pNeutron, TVector3 &pGamma,
00039 bool complete_decay);
00040
00041 private:
00042 IRndmGenSvc *m_rgs;
00043 Rndm::Numbers m_uni, m_breitwigner;
00044
00045 void RandomVector(TVector3& aVec);
00046
00047
00048
00049 double GetLi9AlphaEnergy(int whichcase);
00050
00051
00052
00053 double GetHe8NeutronEnergy();
00054
00055
00056
00057
00058 double GetIntermediateEnergy(double peak, double width, double max);
00059
00060
00061 double FermiFunc(double T, double Z);
00062
00063
00064
00065 double BetaSpectrum(double E, double QOfDecay, double Z);
00066
00067
00068 double GetSpectrumMax(double QOfDecay, int Z);
00069
00070
00071
00072 double GetElectronEnergy(double QOfDecay, int Z, double max);
00073
00074
00075
00076 double Li9NeutronLineShape1(double x);
00077
00078
00079
00080 double Li9NeutronLineShape2(double x);
00081
00082
00083
00084 double Li9NeutronLineShape3(double x);
00085
00086
00087 double GetLi9NeutronEnergy(int whichshape, double max);
00088
00089 };
00090
00091 #endif // Li9He8_H