G4DNABornIonisationModel.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 // $Id$
00027 //
00028 
00029 #ifndef G4DNABornIonisationModel_h
00030 #define G4DNABornIonisationModel_h 1
00031 
00032 #include "G4VEmModel.hh"
00033 #include "G4ParticleChangeForGamma.hh"
00034 #include "G4ProductionCutsTable.hh"
00035 
00036 #include "G4DNACrossSectionDataSet.hh"
00037 #include "G4Electron.hh"
00038 #include "G4Proton.hh"
00039 #include "G4DNAGenericIonsManager.hh"
00040 
00041 #include "G4LogLogInterpolation.hh"
00042 
00043 #include "G4DNAWaterIonisationStructure.hh"
00044 #include "G4VAtomDeexcitation.hh"
00045 #include "G4NistManager.hh"
00046 
00047 
00048 class G4DNABornIonisationModel : public G4VEmModel
00049 {
00050 
00051 public:
00052 
00053   G4DNABornIonisationModel(const G4ParticleDefinition* p = 0, 
00054                            const G4String& nam = "DNABornIonisationModel");
00055 
00056   virtual ~G4DNABornIonisationModel();
00057 
00058   virtual void Initialise(const G4ParticleDefinition*, const G4DataVector& = *(new G4DataVector()));
00059 
00060   virtual G4double CrossSectionPerVolume(  const G4Material* material,
00061                                            const G4ParticleDefinition* p,
00062                                            G4double ekin,
00063                                            G4double emin,
00064                                            G4double emax);
00065 
00066   virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
00067                                  const G4MaterialCutsCouple*,
00068                                  const G4DynamicParticle*,
00069                                  G4double tmin,
00070                                  G4double maxEnergy);
00071                                 
00072   double DifferentialCrossSection(G4ParticleDefinition * aParticleDefinition, G4double k, G4double energyTransfer, G4int shell);
00073 
00074 protected:
00075 
00076   G4ParticleChangeForGamma* fParticleChangeForGamma;
00077 
00078 private:
00079 
00080   // Water density table
00081   const std::vector<G4double>* fpMolWaterDensity;
00082 
00083   //deexcitation manager to produce fluo photns and e-
00084   G4VAtomDeexcitation*      fAtomDeexcitation;
00085 
00086   std::map<G4String,G4double,std::less<G4String> > lowEnergyLimit;
00087   std::map<G4String,G4double,std::less<G4String> > highEnergyLimit;
00088 
00089   G4bool isInitialised;
00090   G4int verboseLevel;
00091   
00092   // Cross section
00093 
00094   typedef std::map<G4String,G4String,std::less<G4String> > MapFile;
00095   MapFile tableFile;
00096 
00097   typedef std::map<G4String,G4DNACrossSectionDataSet*,std::less<G4String> > MapData;
00098   MapData tableData;
00099   
00100   // Final state
00101   
00102   G4DNAWaterIonisationStructure waterStructure;
00103 
00104   G4double RandomizeEjectedElectronEnergy(G4ParticleDefinition * aParticleDefinition, G4double incomingParticleEnergy, G4int shell) ;
00105 
00106   void RandomizeEjectedElectronDirection(G4ParticleDefinition * aParticleDefinition, G4double incomingParticleEnergy, G4double
00107                                            outgoingParticleEnergy, G4double & cosTheta, G4double & phi );
00108    
00109   G4double LogLogInterpolate(G4double e1, G4double e2, G4double e, G4double xs1, G4double xs2);
00110    
00111   G4double QuadInterpolator( G4double e11, 
00112                              G4double e12, 
00113                              G4double e21, 
00114                              G4double e22, 
00115                              G4double x11,
00116                              G4double x12, 
00117                              G4double x21, 
00118                              G4double x22, 
00119                              G4double t1, 
00120                              G4double t2, 
00121                              G4double t, 
00122                              G4double e);
00123 
00124   typedef std::map<double, std::map<double, double> > TriDimensionMap;
00125   TriDimensionMap eDiffCrossSectionData[6];
00126   TriDimensionMap pDiffCrossSectionData[6];
00127   std::vector<double> eTdummyVec;
00128   std::vector<double> pTdummyVec;
00129 
00130   typedef std::map<double, std::vector<double> > VecMap;
00131   VecMap eVecm;
00132   VecMap pVecm;
00133   
00134   // Partial cross section
00135   
00136   G4int RandomSelect(G4double energy,const G4String& particle );
00137 
00138   //
00139    
00140   G4DNABornIonisationModel & operator=(const  G4DNABornIonisationModel &right);
00141   G4DNABornIonisationModel(const  G4DNABornIonisationModel&);
00142 
00143 };
00144 
00145 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
00146 
00147 #endif

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