G4MuElecInelasticModel.hh

Go to the documentation of this file.
00001 //
00002 // ********************************************************************
00003 // * License and Disclaimer                                           *
00004 // *                                                                  *
00005 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
00006 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
00007 // * conditions of the Geant4 Software License,  included in the file *
00008 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
00009 // * include a list of copyright holders.                             *
00010 // *                                                                  *
00011 // * Neither the authors of this software system, nor their employing *
00012 // * institutes,nor the agencies providing financial support for this *
00013 // * work  make  any representation or  warranty, express or implied, *
00014 // * regarding  this  software system or assume any liability for its *
00015 // * use.  Please see the license in the file  LICENSE  and URL above *
00016 // * for the full disclaimer and the limitation of liability.         *
00017 // *                                                                  *
00018 // * This  code  implementation is the result of  the  scientific and *
00019 // * technical work of the GEANT4 collaboration.                      *
00020 // * By using,  copying,  modifying or  distributing the software (or *
00021 // * any work based  on the software)  you  agree  to acknowledge its *
00022 // * use  in  resulting  scientific  publications,  and indicate your *
00023 // * acceptance of all terms of the Geant4 Software license.          *
00024 // ********************************************************************
00025 //
00026 //
00027 // G4MuElecInelasticModel.hh, 2011/08/29 A.Valentin, M. Raine
00028 //
00029 // Based on the following publications
00030 //
00031 //          - Inelastic cross-sections of low energy electrons in silicon
00032 //          for the simulation of heavy ion tracks with theGeant4-DNA toolkit,
00033 //          NSS Conf. Record 2010, pp. 80-85
00034 //          - Geant4 physics processes for microdosimetry simulation:
00035 //          very low energy electromagnetic models for electrons in Si,
00036 //          NIM B, vol. 288, pp. 66-73, 2012.
00037 //          - Geant4 physics processes for microdosimetry simulation:
00038 //          very low energy electromagnetic models for protons and
00039 //          heavy ions in Si, NIM B, vol. 287, pp. 124-129, 2012.
00040 //
00041 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 
00042 
00043 #ifndef G4MuElecInelasticModel_h
00044 #define G4MuElecInelasticModel_h 1
00045 
00046 
00047 #include "globals.hh"
00048 #include "G4VEmModel.hh"
00049 #include "G4ParticleChangeForGamma.hh"
00050 #include "G4ProductionCutsTable.hh"
00051 
00052 #include "G4MuElecCrossSectionDataSet.hh"
00053 #include "G4Electron.hh"
00054 #include "G4Proton.hh"
00055 #include "G4GenericIon.hh"
00056 #include "G4ParticleDefinition.hh"
00057 
00058 #include "G4LogLogInterpolation.hh"
00059 
00060 #include "G4MuElecSiStructure.hh"
00061 #include "G4VAtomDeexcitation.hh"
00062 #include "G4NistManager.hh"
00063 
00064 class G4MuElecInelasticModel : public G4VEmModel
00065 {
00066 
00067 public:
00068 
00069   G4MuElecInelasticModel(const G4ParticleDefinition* p = 0, 
00070                            const G4String& nam = "MuElecInelasticModel");
00071 
00072   virtual ~G4MuElecInelasticModel();
00073 
00074   virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
00075 
00076   virtual G4double CrossSectionPerVolume(  const G4Material* material,
00077                                            const G4ParticleDefinition* p,
00078                                            G4double ekin,
00079                                            G4double emin,
00080                                            G4double emax);
00081 
00082   virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
00083                                  const G4MaterialCutsCouple*,
00084                                  const G4DynamicParticle*,
00085                                  G4double tmin,
00086                                  G4double maxEnergy);
00087 
00088   double DifferentialCrossSection(G4ParticleDefinition * aParticleDefinition, G4double k, G4double energyTransfer, G4int shell);
00089 
00090 protected:
00091 
00092   G4ParticleChangeForGamma* fParticleChangeForGamma;
00093 
00094 private:
00095 
00096   //deexcitation manager to produce fluo photns and e-
00097   G4VAtomDeexcitation*      fAtomDeexcitation;
00098 
00099   G4Material* nistSi;
00100 
00101   std::map<G4String,G4double,std::less<G4String> > lowEnergyLimit;
00102   std::map<G4String,G4double,std::less<G4String> > highEnergyLimit;
00103 
00104   G4bool isInitialised;
00105   G4int verboseLevel;
00106   
00107   // Cross section
00108 
00109   typedef std::map<G4String,G4String,std::less<G4String> > MapFile;
00110   MapFile tableFile;
00111 
00112   typedef std::map<G4String,G4MuElecCrossSectionDataSet*,std::less<G4String> > MapData;
00113   MapData tableData;
00114   
00115   // Final state
00116   
00117   G4MuElecSiStructure SiStructure;
00118 
00119   G4double RandomizeEjectedElectronEnergy(G4ParticleDefinition * aParticleDefinition, G4double incomingParticleEnergy, G4int shell) ;
00120 
00121   void RandomizeEjectedElectronDirection(G4ParticleDefinition * aParticleDefinition, G4double incomingParticleEnergy, G4double
00122                                            outgoingParticleEnergy, G4double & cosTheta, G4double & phi );
00123 
00124   G4double LogLogInterpolate(G4double e1, G4double e2, G4double e, G4double xs1, G4double xs2);
00125    
00126   G4double QuadInterpolator( G4double e11, 
00127                              G4double e12, 
00128                              G4double e21, 
00129                              G4double e22, 
00130                              G4double x11,
00131                              G4double x12, 
00132                              G4double x21, 
00133                              G4double x22, 
00134                              G4double t1, 
00135                              G4double t2, 
00136                              G4double t, 
00137                              G4double e);
00138 
00139   typedef std::map<double, std::map<double, double> > TriDimensionMap;
00140   TriDimensionMap eDiffCrossSectionData[7];
00141   TriDimensionMap pDiffCrossSectionData[7];
00142   std::vector<double> eTdummyVec;
00143   std::vector<double> pTdummyVec;
00144 
00145   typedef std::map<double, std::vector<double> > VecMap;
00146   VecMap eVecm;
00147   VecMap pVecm;
00148   
00149   // Partial cross section
00150   
00151   G4int RandomSelect(G4double energy,const G4String& particle );
00152    
00153   //
00154    
00155   G4MuElecInelasticModel & operator=(const  G4MuElecInelasticModel &right);
00156   G4MuElecInelasticModel(const  G4MuElecInelasticModel&);
00157 
00158 };
00159 
00160 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
00161 
00162 #endif

Generated on Mon May 27 17:48:54 2013 for Geant4 by  doxygen 1.4.7