G4ScreeningMottCrossSection.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 //      G4ScreeningMottCrossSection.hh
00027 //-------------------------------------------------------------------
00028 //
00029 // GEANT4 Class header file
00030 //
00031 // File name:    G4ScreeningMottCrossSection
00032 //
00033 // Author:      Cristina Consolandi
00034 //
00035 // Creation date: 20.10.2011 
00036 //
00037 // Modifications:
00038 // 27-05-2012 Added Analytic Fitting to the Mott Cross Section by means of G4MottCoefficients class.
00039 //
00040 //
00041 // Class Description:
00042 //      Computation of electron Coulomb Scattering Cross Section.
00043 //      Suitable for high energy electrons and light target materials. 
00044 //
00045 //      Reference:
00046 //      M.J. Boschini et al.
00047 //     "Non Ionizing Energy Loss induced by Electrons in the Space Environment"
00048 //      Proc. of the 13th International Conference on Particle Physics and Advanced Technology 
00049 //      (13th ICPPAT, Como 3-7/10/2011), World Scientific (Singapore).
00050 //      Available at: http://arxiv.org/abs/1111.4042v4
00051 //
00052 //      1) Mott Differential Cross Section Approximation:  
00053 //         For Target material up to Z=92 (U):
00054 //         As described in http://arxiv.org/abs/1111.4042v4 
00055 //         par. 2.1 , eq. (16)-(17)
00056 //         Else (Z>92):
00057 //         W. A. McKinley and H. Fashbach, Phys. Rev. 74, (1948) 1759.
00058 //      2) Screening coefficient: 
00059 //      vomn G. Moliere, Z. Naturforsh A2 (1947), 133-145; A3 (1948), 78.
00060 //      3) Nuclear Form Factor: 
00061 //      A.V. Butkevich et al. Nucl. Instr. and Meth. in Phys. Res. A 488 (2002), 282-294.
00062 //
00063 // ----------------------------------------------------------------------------------------
00064 
00065 //
00066 #ifndef G4ScreeningMottCrossSection_h
00067 #define G4ScreeningMottCrossSection_h 1
00068 
00069 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
00070 
00071 
00072 #include "G4MottCoefficients.hh"
00073 #include "globals.hh"
00074 #include "G4Material.hh"
00075 #include "G4Element.hh"
00076 #include "G4ElementVector.hh"
00077 #include "G4NistManager.hh"
00078 #include "G4ThreeVector.hh"
00079 #include "G4Pow.hh"
00080 #include "G4LossTableManager.hh"
00081 
00082 class G4ParticleDefinition;
00083 
00084 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
00085 
00086 class G4ScreeningMottCrossSection
00087 {
00088 
00089 public:
00090 
00091         G4ScreeningMottCrossSection();
00092 
00093         virtual ~G4ScreeningMottCrossSection();
00094 
00095         void Initialise(const G4ParticleDefinition*, G4double cosThetaLim);
00096 
00097         G4double GetScreeningAngle();
00098         void SetScreeningCoefficient();
00099 
00100 
00101                
00102         inline void SetupParticle(const G4ParticleDefinition*);
00103         void SetupKinematic(G4double kinEnergy ,G4double Z);
00104 
00105         G4double NuclearCrossSection();
00106         G4ThreeVector GetNewDirection();
00107 
00108         inline G4double GetMom2CM()const;
00109         inline G4double GetMom2Lab()const;
00110         inline G4double GetTrec() const;
00111         inline G4double GetScreeningCoefficient() const;
00112         inline G4double GetTotalCross() const;
00113 
00114 
00115 
00116         G4double McFcorrection(G4double);
00117         G4double RatioMottRutherford(G4double);//.....new
00118         G4double FormFactor2ExpHof(G4double);
00119         G4double GetScatteringAngle();
00120         G4double AngleDistribution(G4double);
00121 
00122 
00123 private:
00124 
00125         G4ScreeningMottCrossSection & operator=(const  G4ScreeningMottCrossSection &right);
00126         G4ScreeningMottCrossSection(const  G4ScreeningMottCrossSection&);
00127 
00128 
00129         G4NistManager*  fNistManager;           
00130         G4MottCoefficients * mottcoeff;
00131 
00132         G4double                TotalCross;
00133 
00134         //cost - min - max 
00135         G4double                cosThetaMin;// def 1.0
00136         G4double                cosThetaMax;// def -1.0
00137 
00138         G4double                cosTetMinNuc;
00139         G4double                cosTetMaxNuc;
00140 
00141 
00142         //energy cut
00143         G4double                ecut;       
00144         G4double                etag;       
00145 
00146         // projectile........................
00147         const G4ParticleDefinition* particle;
00148 
00149         G4double                spin;      
00150         G4double                mass;      
00151 
00152         //lab of incedent particle 
00153         G4double                tkinLab;
00154         G4double                momLab2;
00155         G4double                invbetaLab2;
00156 
00157         //relative system with nucleus
00158         G4double                mu_rel;
00159         G4double                tkin;      
00160         G4double                mom2;      
00161         G4double                invbeta2;          
00162         G4double                beta;
00163         G4double                gamma;
00164 
00165 
00166         // target nucleus
00167         G4double                targetZ;    
00168         G4double                targetA;
00169         G4double                targetMass; 
00170         G4double                Trec;
00171         G4double                As; 
00172         G4double                coeffb[5][6];
00173 
00174         //constants
00175         G4double                 alpha;
00176         G4double                 htc2;
00177         G4double                 e2;
00178 
00179 };
00180 
00181 
00182 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
00183 
00184 inline void G4ScreeningMottCrossSection::SetupParticle(const G4ParticleDefinition* p)
00185 {
00186         particle = p;
00187         mass = particle->GetPDGMass();
00188         spin = particle->GetPDGSpin();
00189                 if(0.0 != spin) { spin = 0.5; }
00190         tkin = 0.0;
00191 }
00192 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
00193 
00194 
00195 inline G4double G4ScreeningMottCrossSection::GetMom2CM() const
00196 {
00197         return mom2;
00198 }
00199 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
00200 
00201 
00202 inline G4double G4ScreeningMottCrossSection::GetMom2Lab() const
00203 {
00204         return momLab2;
00205 }
00206 
00207 
00208 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
00209 
00210 inline G4double G4ScreeningMottCrossSection::GetTrec() const
00211 {
00212         return Trec;
00213 }
00214 
00215 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
00216 
00217 inline G4double G4ScreeningMottCrossSection::GetScreeningCoefficient() const
00218 {
00219         return As;
00220 }
00221 
00222 
00223 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
00224 
00225 inline G4double G4ScreeningMottCrossSection::GetTotalCross() const
00226 {
00227         return TotalCross;
00228 }
00229 
00230 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
00231 
00232 #endif
00233 
00234 

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