00001 00015 #include <cassert> 00016 00017 #include "DirectElectronPairProduction.h" 00018 #include "KokoulinPetrukhinModel.h" 00019 00020 ClassImpT(DirectElectronPairProduction, T) 00021 00022 DirectElectronPairProduction<KokoulinPetrukhinModel> kokoulinpetrukhininstance; 00023 00024 //_________________________________________________________________________________________ 00025 template <class T> DirectElectronPairProduction<T>::DirectElectronPairProduction() : 00026 EnergyLossProcess() 00027 { 00028 fModel = new T(); 00029 } 00030 //_________________________________________________________________________________________ 00031 template <class T> 00032 DirectElectronPairProduction<T>::DirectElectronPairProduction(const Material & material) : 00033 EnergyLossProcess() 00034 { 00035 fModel = new T(material); 00036 00037 Process::Process_t proc = fModel->ModeledProcess(); 00038 00039 assert( proc == Process::ePairProduction || proc == Process::eAll ); 00040 } 00041 //_________________________________________________________________________________________ 00042 template <class T> DirectElectronPairProduction<T>::~DirectElectronPairProduction() 00043 { 00044 if (fModel) delete fModel; 00045 } 00046 //_________________________________________________________________________________________ 00047 template <class T> double DirectElectronPairProduction<T>::dE_dx(double E) const 00048 { 00049 if(E > Threshold() ) { 00050 00051 ValidityRange_t vldrange = fModel->ValidityRange(); 00052 00053 if(E >= vldrange.Emin && E <= vldrange.Emax) return fModel->dE_dx(E); 00054 } 00055 00056 return 0; 00057 } 00058 //_________________________________________________________________________________________ 00059 00060
1.3.9.1