/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Reconstruction/TrkExtAlg/TrkExtAlg-00-00-64/TrkExtAlg/ExteIonisation.h

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: ExteIonisation.h,v 1.6 2015/10/27 11:02:53 sunss Exp $
00024 // GEANT4 tag $Name: TrkExtAlg-00-00-64 $
00025 //
00026 // -------------------------------------------------------------------
00027 //
00028 // GEANT4 Class header file
00029 //
00030 //
00031 // File name:     ExteIonisation
00032 //
00033 // Author:        Laszlo Urban
00034 //
00035 // Creation date: 20.03.1997
00036 //
00037 // Modifications:
00038 //
00039 // 10-02-00 modifications , new e.m. structure, L.Urban
00040 // 03-08-01 new methods Store/Retrieve PhysicsTable (mma)
00041 // 13-08-01 new function ComputeRestrictedMeandEdx() (mma)
00042 // 19-09-01 come back to previous ProcessName "eIoni"
00043 // 29-10-01 all static functions no more inlined (mma)
00044 // 07-01-02 new design of em processes (V.Ivanchenko)
00045 // 26-12-02 Secondary production moved to derived classes (VI)
00046 // 24-01-03 Make models region aware (V.Ivanchenko)
00047 // 05-02-03 Fix compilation warnings (V.Ivanchenko)
00048 // 13-02-03 SubCutoff regime is assigned to a region (V.Ivanchenko)
00049 // 23-05-03 Add fluctuation model as a member function (V.Ivanchenko)
00050 // 03-06-03 Fix initialisation problem for STD ionisation (V.Ivanchenko)
00051 // 08-08-03 STD substitute standard  (V.Ivanchenko)
00052 // 12-11-03 G4EnergyLossSTD -> G4EnergyLossProcess (V.Ivanchenko)
00053 // 21-01-04 Migrade to G4ParticleChangeForLoss (V.Ivanchenko)
00054 // 
00055 // ------------------------------------------------------------------------------------
00056 // 15-04-05 Omit the correction of momentum direction due to production of secenderies.
00057 //          This is needed for my Track Extrapotation. (L.L.Wang)
00058 // ------------------------------------------------------------------------------------
00059 // 
00060 // 08-11-04 Migration to new interface of Store/Retrieve tables (V.Ivantchenko)
00061 // 08-04-05 Major optimisation of internal interfaces (V.Ivantchenko)
00062 // 11-04-04 Move MaxSecondaryEnergy to models (V.Ivanchenko)
00063 //
00064 // Class Description:
00065 //
00066 // This class manages the ionisation process for e-/e+
00067 // it inherites from G4VContinuousDiscreteProcess via G4VEnergyLossProcess.
00068 //
00069 
00070 // -------------------------------------------------------------------
00071 //
00072 
00073 #ifndef ExteIonisation_h
00074 #define ExteIonisation_h 1
00075 
00076 #include "G4VEnergyLossProcess.hh"
00077 #include "G4Electron.hh"
00078 #include "G4Positron.hh"
00079 #include "G4VEmModel.hh"
00080 
00081 class G4Material;
00082 class G4ParticleDefinition;
00083 class G4VEmFluctuationModel;
00084 
00085 class ExteIonisation : public G4VEnergyLossProcess
00086 {
00087 
00088 public:
00089 
00090   ExteIonisation(const G4String& name = "ExteIoni");
00091 
00092   ~ExteIonisation();
00093 
00094   G4bool IsApplicable(const G4ParticleDefinition& p);
00095 
00096   virtual void PrintInfo();
00097   // Print out of the class parameters
00098 
00099 protected:
00100   
00101   std::vector<G4DynamicParticle*>* SecondariesPostStep(
00102                                    G4VEmModel*,
00103                              const G4MaterialCutsCouple*,
00104                              const G4DynamicParticle*,
00105                                    G4double&);
00106 
00107   virtual void InitialiseEnergyLossProcess(const G4ParticleDefinition*,const G4ParticleDefinition*);
00108   
00109   virtual G4double MinPrimaryEnergy(const G4ParticleDefinition*,
00110                                     const G4Material*, G4double cut);
00111   
00112 private:
00113 
00114   // hide assignment operator
00115   ExteIonisation & operator=(const ExteIonisation &right);
00116   ExteIonisation(const ExteIonisation&);
00117 
00118   const G4ParticleDefinition* theElectron;
00119   const G4ParticleDefinition* particle;
00120   G4VEmFluctuationModel* flucModel;
00121 
00122   G4bool isElectron;
00123   G4bool isInitialised;
00124 };
00125 
00126 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
00127 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
00128 
00129 inline G4double ExteIonisation::MinPrimaryEnergy(const G4ParticleDefinition*,
00130                                                    const G4Material*,
00131                                                          G4double cut)
00132 {
00133   G4double x = cut;
00134   if(isElectron) x += cut;
00135   return x;
00136 }
00137 
00138 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
00139 
00140 inline G4bool ExteIonisation::IsApplicable(const G4ParticleDefinition& p)
00141 {
00142   return (&p == G4Electron::Electron() || &p == G4Positron::Positron());
00143 }
00144 
00145 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
00146 
00147 inline std::vector<G4DynamicParticle*>* ExteIonisation::SecondariesPostStep(
00148                                                   G4VEmModel* model,
00149                                             const G4MaterialCutsCouple* couple,
00150                                             const G4DynamicParticle* dp,
00151                                                   G4double& tcut)
00152 {
00153   //return model->SampleSecondaries(couple,dp,tcut);
00154   return NULL;
00155 }
00156 
00157 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
00158 
00159 #endif

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