G4IonisParamMat.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: G4IonisParamMat.hh 67044 2013-01-30 08:50:06Z gcosmo $
00027 //
00028 
00029 // class description
00030 //
00031 // The class contains few (physical) quantities related to the Ionisation
00032 // process, for a material defined by its pointer G4Material*
00033 //
00034 
00035 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
00036 
00037 // 09-07-98: data moved from G4Material (mma)
00038 // 09-03-01: copy constructor and assignement operator in public (mma)
00039 // 28-10-02: add setMeanExcitationEnergy (V.Ivanchenko)
00040 // 27-09-07: add computation of parameters for ions (V.Ivanchenko)
00041 // 04-03-08: add fBirks constant (mma)
00042 
00043 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
00044 
00045 #ifndef G4IonisParamMat_HH
00046 #define G4IonisParamMat_HH
00047 
00048 #include "G4ios.hh"
00049 #include "globals.hh"
00050 
00051 class G4Material;                        // forward declaration
00052 class G4DensityEffectData;
00053 
00054 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
00055 
00056 class G4IonisParamMat  // with description
00057 {
00058 public:
00059 
00060   G4IonisParamMat(G4Material*); 
00061   virtual ~G4IonisParamMat();
00062 
00063   //
00064   // retrieval methods
00065   //
00066      
00067   // parameters for mean energy loss calculation:
00068   G4double  GetMeanExcitationEnergy()   const {return fMeanExcitationEnergy;};
00069   void      SetMeanExcitationEnergy(G4double value);
00070   G4double  FindMeanExcitationEnergy(const G4String& chFormula);
00071   G4double  GetLogMeanExcEnergy()       const {return fLogMeanExcEnergy;};
00072   G4double* GetShellCorrectionVector()  const {return fShellCorrectionVector;};
00073   G4double  GetTaul()                   const {return fTaul;};
00074     
00075   // parameters of the density correction:
00076   G4double  GetPlasmaEnergy()           const {return fPlasmaEnergy;};
00077   G4double  GetAdjustmentFactor()       const {return fAdjustmentFactor;};
00078   G4double  GetCdensity()               const {return fCdensity;};
00079   G4double  GetMdensity()               const {return fMdensity;};
00080   G4double  GetAdensity()               const {return fAdensity;};
00081   G4double  GetX0density()              const {return fX0density;};
00082   G4double  GetX1density()              const {return fX1density;};
00083   G4double  GetD0density()              const {return fD0density;};
00084     
00085   // compute density correction as a function of the kinematic variable
00086   // x = log10(beta*gamma)  
00087   inline G4double DensityCorrection(G4double x);
00088   static G4DensityEffectData* GetDensityEffectData();
00089 
00090   // parameters of the energy loss fluctuation model:
00091   G4double  GetF1fluct()                const {return fF1fluct;};
00092   G4double  GetF2fluct()                const {return fF2fluct;};
00093   G4double  GetEnergy1fluct()           const {return fEnergy1fluct;};
00094   G4double  GetLogEnergy1fluct()        const {return fLogEnergy1fluct;};
00095   G4double  GetEnergy2fluct()           const {return fEnergy2fluct;};
00096   G4double  GetLogEnergy2fluct()        const {return fLogEnergy2fluct;};
00097   G4double  GetEnergy0fluct()           const {return fEnergy0fluct;};
00098   G4double  GetRateionexcfluct()        const {return fRateionexcfluct;};
00099 
00100   // parameters for ion corrections computations
00101   G4double  GetZeffective()             const {return fZeff;};
00102   G4double  GetFermiEnergy()            const {return fFermiEnergy;};
00103   G4double  GetLFactor()                const {return fLfactor;};
00104   G4double  GetInvA23()                 const {return fInvA23;};
00105     
00106   // parameters for Birks attenuation:
00107   void      SetBirksConstant(G4double value) {fBirks = value;}; 
00108   G4double  GetBirksConstant()         const {return fBirks;};
00109 
00110   // parameters for average energy per ion 
00111   void      SetMeanEnergyPerIonPair(G4double value) {fMeanEnergyPerIon = value;}; 
00112   G4double  GetMeanEnergyPerIonPair()         const {return fMeanEnergyPerIon;};
00113       
00114 public:  // without description
00115 
00116   G4IonisParamMat(const G4IonisParamMat&);
00117   G4IonisParamMat& operator=(const G4IonisParamMat&);          
00118   G4int operator==(const G4IonisParamMat&) const;
00119   G4int operator!=(const G4IonisParamMat&) const;
00120 
00121   G4IonisParamMat(__void__&);
00122   // Fake default constructor for usage restricted to direct object
00123   // persistency for clients requiring preallocation of memory for
00124   // persistifiable objects.
00125 
00126 private:
00127     
00128   // Compute mean parameters : ExcitationEnergy,Shell corretion vector ...
00129   void ComputeMeanParameters();
00130 
00131   // Compute parameters for the density effect
00132   void ComputeDensityEffect();
00133 
00134   // Compute parameters for the energy fluctuation model
00135   void ComputeFluctModel();
00136 
00137   // Compute parameters for ion parameterizations
00138   void ComputeIonParameters();
00139 
00140 private:
00141 
00142 //
00143 // data members
00144 //
00145   G4Material* fMaterial;                    // this material
00146 
00147   // parameters for mean energy loss calculation
00148   G4double  fMeanExcitationEnergy;          // 
00149   G4double  fLogMeanExcEnergy;              // 
00150   G4double* fShellCorrectionVector;         // shell correction coefficients
00151   G4double  fTaul;                          // lower limit of Bethe-Bloch formula
00152 
00153   // parameters of the density correction
00154   G4double fCdensity;                      // mat.constant
00155   G4double fMdensity;                      // exponent
00156   G4double fAdensity;                      //
00157   G4double fX0density;                     //
00158   G4double fX1density;                     //
00159   G4double fD0density;
00160 
00161   G4double fPlasmaEnergy;
00162   G4double fAdjustmentFactor;
00163 
00164   // parameters of the energy loss fluctuation model
00165   G4double fF1fluct;                       
00166   G4double fF2fluct;                       
00167   G4double fEnergy1fluct;
00168   G4double fLogEnergy1fluct;
00169   G4double fEnergy2fluct;
00170   G4double fLogEnergy2fluct;
00171   G4double fEnergy0fluct;
00172   G4double fRateionexcfluct;
00173 
00174   // parameters for ion corrections computations
00175   G4double fZeff;
00176   G4double fFermiEnergy;
00177   G4double fLfactor;
00178   G4double fInvA23;
00179     
00180   // parameter for Birks attenuation
00181   G4double fBirks;
00182   // average energy per ion pair
00183   G4double fMeanEnergyPerIon;
00184 
00185   // static data created only once
00186   static G4DensityEffectData* fDensityData;
00187   G4double twoln10;
00188 };
00189 
00190 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
00191 
00192 inline G4double G4IonisParamMat::DensityCorrection(G4double x)
00193 {
00194   // x = log10(beta*gamma)  
00195 
00196   G4double y = 0.0;
00197   if(x < fX0density) {
00198     if(fD0density > 0.0) { y = fD0density*std::pow(10.,2*(x - fX0density)); }
00199   } else if(x >= fX1density) { y = twoln10*x - fCdensity; }
00200   else {y = twoln10*x - fCdensity + fAdensity*std::pow(fX1density - x, fMdensity);}
00201   return y;
00202 }
00203 
00204 #endif

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