/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Reconstruction/TrkExtAlg/TrkExtAlg-00-00-64/src/ExtMuIonisation.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: ExtMuIonisation.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:     ExtMuIonisation
00032 //
00033 // Author:        Laszlo Urban
00034 // 
00035 // Creation date: 30.09.1997
00036 //
00037 // Modifications:
00038 //
00039 // 08-04-98 remove 'tracking cut' of the ionizing particle (mma)
00040 // 26-10-98 new stuff from R.Kokoulin + cleanup , L.Urban
00041 // 10-02-00 modifications , new e.m. structure, L.Urban
00042 // 23-03-01 R.Kokoulin's correction is commented out, L.Urban
00043 // 29-05-01 V.Ivanchenko minor changes to provide ANSI -wall compilation
00044 // 10-08-01 new methods Store/Retrieve PhysicsTable (mma)
00045 // 28-08-01 new function ComputeRestrictedMeandEdx() + 'cleanup' (mma)
00046 // 17-09-01 migration of Materials to pure STL (mma)
00047 // 26-09-01 completion of RetrievePhysicsTable (mma)
00048 // 29-10-01 all static functions no more inlined (mma)
00049 // 07-11-01 correction(Tmax+xsection computation) L.Urban
00050 // 08-11-01 particleMass becomes a local variable (mma)
00051 // 10-05-02 V.Ivanchenko update to new design
00052 // 04-12-02 V.Ivanchenko the low energy limit for Kokoulin model to 10 GeV
00053 // 23-12-02 Change interface in order to move to cut per region (V.Ivanchenko)
00054 // 26-12-02 Secondary production moved to derived classes (V.Ivanchenko)
00055 // 13-02-03 SubCutoff regime is assigned to a region (V.Ivanchenko)
00056 // 23-05-03 Define default integral + BohrFluctuations (V.Ivanchenko)
00057 // 03-06-03 Add SetIntegral method to choose fluctuation model (V.Ivanchenko)
00058 // 03-06-03 Fix initialisation problem for STD ionisation (V.Ivanchenko)
00059 // 04-08-03 Set integral=false to be default (V.Ivanchenko)
00060 // 08-08-03 STD substitute standard  (V.Ivanchenko)
00061 // 12-11-03 G4EnergyLossSTD -> G4EnergyLossProcess (V.Ivanchenko)
00062 // 10-02-04 Calculation of radiative corrections using R.Kokoulin model (V.Ivanchenko)
00063 // 27-05-04 Set integral to be a default regime (V.Ivanchenko) 
00064 // 17-08-04 Utilise mu+ tables for mu- (V.Ivanchenko)
00065 // 08-11-04 Migration to new interface of Store/Retrieve tables (V.Ivantchenko)
00066 // -----------------------------------------------------------------------------------
00067 // 15-04-05 Omit the correction of momentum direction due to production of secenderies.
00068 //          This is needed for my Track Extrapotation. (L.L.Wang)
00069 // -------------------------------------------------------------------
00070 // 08-04-05 Major optimisation of internal interfaces (V.Ivantchenko)
00071 //
00072 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
00073 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
00074 
00075 #include "TrkExtAlg/ExtMuIonisation.h"
00076 
00077 #include "G4Electron.hh"
00078 #include "G4MuonPlus.hh"
00079 #include "G4MuonMinus.hh"
00080 #include "G4BraggModel.hh"
00081 #include "G4BetheBlochModel.hh"
00082 #include "G4MuBetheBlochModel.hh"
00083 #include "G4UniversalFluctuation.hh"
00084 #include "G4BohrFluctuations.hh"
00085 #include "G4UnitsTable.hh"
00086 
00087 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
00088 
00089 using namespace std;
00090 
00091 ExtMuIonisation::ExtMuIonisation(const G4String& name)
00092   : G4VEnergyLossProcess(name),
00093     theParticle(0),
00094     theBaseParticle(0),
00095     isInitialised(false)
00096 {
00097   SetDEDXBinning(120);
00098   SetLambdaBinning(120);
00099   SetMinKinEnergy(0.1*keV);
00100   SetMaxKinEnergy(100.0*TeV);
00101   SetLossFluctuations(false);
00102 }
00103 
00104 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
00105 
00106 ExtMuIonisation::~ExtMuIonisation()
00107 {}
00108 
00109 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
00110 
00111 void ExtMuIonisation::InitialiseEnergyLossProcess(const G4ParticleDefinition* part,
00112                                                   const G4ParticleDefinition* bpart)
00113 {
00114         if(!isInitialised) 
00115         {
00116                 theParticle = part;
00117                 theBaseParticle = bpart;
00118 
00119                 mass = theParticle->GetPDGMass();
00120                 SetSecondaryParticle(G4Electron::Electron());
00121 
00122                 flucModel = new G4UniversalFluctuation();
00123                 
00124                 G4VEmModel* em = new G4BraggModel();
00125                 em->SetLowEnergyLimit(0.1*keV);
00126                 em->SetHighEnergyLimit(0.2*MeV);
00127                 AddEmModel(1, em, flucModel);
00128                 G4VEmModel* em1 = new G4BetheBlochModel();
00129                 em1->SetLowEnergyLimit(0.2*MeV);
00130                 em1->SetHighEnergyLimit(1.0*GeV);
00131                 AddEmModel(2, em1, flucModel);
00132                 G4VEmModel* em2 = new G4MuBetheBlochModel();
00133                 em2->SetLowEnergyLimit(1.0*GeV);
00134                 em2->SetHighEnergyLimit(100.0*TeV);
00135                 AddEmModel(3, em2, flucModel);
00136                 SetStepFunction(0.2, 1.0*mm);
00137                 ratio = electron_mass_c2/mass;
00138                 isInitialised = true;
00139         }
00140 }
00141 
00142 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
00143 
00144 void ExtMuIonisation::PrintInfo()
00145 {
00146   G4cout << "      Bether-Bloch model for E > 0.2 MeV, "
00147          << "parametrisation of Bragg peak below, "
00148          << G4endl;
00149   G4cout << "      radiative corrections for E > 1 GeV" << G4endl;
00150 }
00151 
00152 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....

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