/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Reconstruction/TrkExtAlg/TrkExtAlg-00-00-64/src/ExthIonisation.cxx

Go to the documentation of this file.
00001 //
00002 // ********************************************************************
00003 // * DISCLAIMER                                                       *
00004 // *                                                                  *
00005 // * The following disclaimer summarizes all the specific disclaimers *
00006 // * of contributors to this software. The specific disclaimers,which *
00007 // * govern, are listed with their locations in:                      *
00008 // *   http://cern.ch/geant4/license                                  *
00009 // *                                                                  *
00010 // * Neither the authors of this software system, nor their employing *
00011 // * institutes,nor the agencies providing financial support for this *
00012 // * work  make  any representation or  warranty, express or implied, *
00013 // * regarding  this  software system or assume any liability for its *
00014 // * use.                                                             *
00015 // *                                                                  *
00016 // * This  code  implementation is the  intellectual property  of the *
00017 // * GEANT4 collaboration.                                            *
00018 // * By copying,  distributing  or modifying the Program (or any work *
00019 // * based  on  the Program)  you indicate  your  acceptance of  this *
00020 // * statement, and all its terms.                                    *
00021 // ********************************************************************
00022 //
00023 // $Id: ExthIonisation.cxx,v 1.8 2015/10/27 11:02:53 sunss Exp $
00024 // GEANT4 tag $Name: TrkExtAlg-00-00-64 $
00025 //
00026 // -------------------------------------------------------------------
00027 //
00028 // GEANT4 Class file
00029 //
00030 //
00031 // File name:     G4hIonisation
00032 //
00033 // Author:        Laszlo Urban
00034 // 
00035 // Creation date: 30.05.1997
00036 //
00037 // Modifications:
00038 //
00039 // corrected by L.Urban on 24/09/97
00040 // several bugs corrected by L.Urban on 13/01/98
00041 // 07-04-98 remove 'tracking cut' of the ionizing particle, mma
00042 // 22-10-98 cleanup L.Urban
00043 // 02-02-99 bugs fixed , L.Urban
00044 // 29-07-99 correction in BuildLossTable for low energy, L.Urban
00045 // 10-02-00 modifications , new e.m. structure, L.Urban
00046 // 10-08-00 V.Ivanchenko change BuildLambdaTable, in order to
00047 //          simulate energy losses of ions; correction to
00048 //          cross section for particles with spin 1 is inserted as well
00049 // 28-05-01 V.Ivanchenko minor changes to provide ANSI -wall compilation
00050 // 10-08-01 new methods Store/Retrieve PhysicsTable (mma)
00051 // 14-08-01 new function ComputeRestrictedMeandEdx() + 'cleanup' (mma)
00052 // 29-08-01 PostStepDoIt: correction for spin 1/2 (instead of 1) (mma)
00053 // 17-09-01 migration of Materials to pure STL (mma)
00054 // 25-09-01 completion of RetrievePhysicsTable() (mma)
00055 // 29-10-01 all static functions no more inlined
00056 // 08-11-01 Charge renamed zparticle; added to the dedx
00057 // 27-03-02 Bug fix in scaling of lambda table (V.Ivanchenko)
00058 // 09-04-02 Update calculation of tables for GenericIons (V.Ivanchenko)
00059 // 30-04-02 V.Ivanchenko update to new design
00060 // 04-12-02 Add verbose level definition (VI)
00061 // 23-12-02 Change interface in order to move to cut per region (V.Ivanchenko)
00062 // 26-12-02 Secondary production moved to derived classes (V.Ivanchenko)
00063 // 13-02-03 SubCutoff regime is assigned to a region (V.Ivanchenko)
00064 // 23-05-03 Define default integral + BohrFluctuations (V.Ivanchenko)
00065 // 03-06-03 Fix initialisation problem for STD ionisation (V.Ivanchenko)
00066 // 04-08-03 Set integral=false to be default (V.Ivanchenko)
00067 // 08-08-03 STD substitute standard  (V.Ivanchenko)
00068 // 12-11-03 G4EnergyLossSTD -> G4EnergyLossProcess (V.Ivanchenko)
00069 // 27-05-04 Set integral to be a default regime (V.Ivanchenko) 
00070 // ------------------------------------------------------------------------------------
00071 // 15-04-05 Omit the correction of momentum direction due to production of secenderies.
00072 //          This is needed for my Track Extrapotation. (L.L.Wang)
00073 //
00074 // -------------------------------------------------------------------
00075 // 08-11-04 Migration to new interface of Store/Retrieve tables (V.Ivantchenko)
00076 // 24-03-05 Optimize internal interfaces (V.Ivantchenko)
00077 //
00078 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
00079 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
00080 
00081 #include "TrkExtAlg/ExthIonisation.h"
00082 #include "G4Electron.hh"
00083 #include "G4Proton.hh"
00084 #include "G4AntiProton.hh"
00085 #include "G4BraggModel.hh"
00086 #include "G4BetheBlochModel.hh"
00087 #include "G4UniversalFluctuation.hh"
00088 #include "G4BohrFluctuations.hh"
00089 #include "G4UnitsTable.hh"
00090 
00091 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
00092 
00093 ExthIonisation::ExthIonisation(const G4String& name)
00094   : G4VEnergyLossProcess(name),
00095     theParticle(0),
00096     theBaseParticle(0),
00097     isInitialised(false)
00098 {
00099   SetDEDXBinning(120);
00100   SetLambdaBinning(120);
00101   SetMinKinEnergy(0.1*keV);
00102   SetMaxKinEnergy(100.0*TeV);
00103   SetVerboseLevel(0);
00104   SetLossFluctuations(false);
00105   mass = 0.0;
00106   ratio = 0.0;
00107 }
00108 
00109 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
00110 
00111 ExthIonisation::~ExthIonisation()
00112 {}
00113 
00114 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
00115 
00116 void ExthIonisation::InitialiseEnergyLossProcess(const G4ParticleDefinition* part,
00117                                                  const G4ParticleDefinition* bpart)
00118 {
00119         if(isInitialised) return;
00120 
00121         theParticle = part;
00122 
00123         if(part == bpart || part == G4Proton::Proton()) theBaseParticle = 0;
00124         else if(bpart == 0) theBaseParticle = G4Proton::Proton();
00125         else                theBaseParticle = bpart;
00126 
00127         SetBaseParticle(theBaseParticle);
00128         SetSecondaryParticle(G4Electron::Electron());
00129         mass  = theParticle->GetPDGMass();
00130         ratio = electron_mass_c2/mass;
00131 
00132         G4VEmModel* em = new G4BraggModel();
00133         em->SetLowEnergyLimit(0.1*keV);
00134         eth = 2.0*MeV*mass/proton_mass_c2;
00135         em->SetHighEnergyLimit(eth);
00136         
00137         flucModel = new G4UniversalFluctuation();
00138         
00139         AddEmModel(1, em, flucModel);
00140         G4VEmModel* em1 = new G4BetheBlochModel();
00141         em1->SetLowEnergyLimit(eth);
00142         em1->SetHighEnergyLimit(100.0*TeV);
00143         AddEmModel(2, em1, flucModel);
00144 
00145         SetStepFunction(0.2, 1.0*mm);
00146 
00147         isInitialised = true;
00148 }
00149 
00150 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
00151 
00152 void ExthIonisation::PrintInfo()
00153 {
00154   G4cout << "      Bether-Bloch model for Escaled > 2 MeV, "
00155          << "parametrisation of Bragg peak below, "
00156          << "Integral mode " << IsIntegral()
00157          << G4endl;
00158 }
00159 
00160 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....

Generated on Tue Nov 29 23:14:12 2016 for BOSS_7.0.2 by  doxygen 1.4.7