G4eIonisationSpectrum.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 //
00030 // GEANT4 Class file
00031 //
00032 //
00033 // File name:     G4eIonisationSpectrum
00034 //
00035 // Author:        V.Ivanchenko (Vladimir.Ivantchenko@cern.ch)
00036 // 
00037 // Creation date: 27 September 2001
00038 //
00039 // Modifications: 
00040 // 10.10.01 MGP             Revision to improve code quality and 
00041 //                          consistency with design
00042 // 29.11.01  V.Ivanchenko   Parametrisation is updated
00043 // 30.05.02  VI             Add inline functions
00044 //
00045 // -------------------------------------------------------------------
00046 
00047 // Class Description: 
00048 // Provides various integration over delta-electron spectrum for e- 
00049 // ionisation process. Spectrum is parametrised accourding to 
00050 // EEDL database, details are described in the Physics Reference Manual
00051 // Further documentation available from http://www.ge.infn.it/geant4/lowE
00052 
00053 // -------------------------------------------------------------------
00054 
00055 #ifndef G4EIONISATIONSPECTRUM_HH
00056 #define G4EIONISATIONSPECTRUM_HH 1
00057 
00058 #include "G4VEnergySpectrum.hh"
00059 #include "G4eIonisationParameters.hh"
00060  
00061 //class G4eIonisationParameters;
00062 class G4DataVector;
00063 
00064 class G4eIonisationSpectrum : public G4VEnergySpectrum
00065 {
00066 
00067 public:
00068 
00069   G4eIonisationSpectrum();
00070 
00071   ~G4eIonisationSpectrum();
00072 
00073   G4double Probability(G4int Z, G4double tMin, G4double tMax, 
00074                        G4double kineticEnergy, G4int shell,
00075                        const G4ParticleDefinition* pd=0) const;
00076 
00077   G4double AverageEnergy(G4int Z, G4double tMin, G4double tMax,
00078                          G4double kineticEnergy, G4int shell,
00079                          const G4ParticleDefinition* pd=0) const;
00080 
00081   G4double SampleEnergy(G4int Z, G4double tMin, G4double tMax,
00082                         G4double kineticEnergy, G4int shell,
00083                         const G4ParticleDefinition* pd=0) const;
00084 
00085   G4double MaxEnergyOfSecondaries(G4double kineticEnergy,
00086                                   G4int Z = 0,
00087                                   const G4ParticleDefinition* pd=0) const;
00088 
00089   G4double Excitation(G4int Z, G4double e) const;
00090   
00091   void PrintData() const;
00092 
00093 protected:
00094 
00095 private:
00096 
00097   G4double IntSpectrum(G4double xMin, G4double xMax,
00098                          const G4DataVector& p) const; 
00099   
00100   G4double AverageValue(G4double xMin, G4double xMax,
00101                         const G4DataVector& p) const; 
00102   
00103   G4double Function(G4double x, const G4DataVector& p) const; 
00104   
00105   // Hide copy constructor and assignment operator 
00106   G4eIonisationSpectrum(const  G4eIonisationSpectrum&);
00107   G4eIonisationSpectrum & operator = (const G4eIonisationSpectrum &right);
00108   
00109 private:
00110   
00111   G4eIonisationParameters* theParam;
00112   G4double                 lowestE;
00113   G4double                 factor;
00114   G4int                    iMax;            
00115   G4int                    verbose;
00116 };
00117 
00118 
00119 inline G4double G4eIonisationSpectrum::Function(G4double x, 
00120                                           const G4DataVector& p) const
00121 {
00122   G4double f = 1.0 - p[0] - p[iMax]*x 
00123              + x*x*(1.0 - p[iMax] + (1.0/(1.0 - x) - p[iMax])/(1.0 - x))
00124              + 0.5*p[0]/x;
00125 
00126   return f;
00127 } 
00128 
00129 inline G4double G4eIonisationSpectrum::Excitation(G4int Z, G4double e) const 
00130 {
00131   return theParam->Excitation(Z, e);
00132 }
00133 
00134 
00135 #endif

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