/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Reconstruction/TrkExtAlg/TrkExtAlg-00-00-64/TrkExtAlg/ExthIonisation.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: ExthIonisation.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:     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 // corrected by L.Urban on 13/01/98
00041 // bugs fixed by L.Urban on 02/02/99
00042 // 10/02/00 modifications , new e.m. structure, L.Urban
00043 // 10-08-01 new methods Store/Retrieve PhysicsTable (mma)
00044 // 14-08-01 new function ComputeRestrictedMeandEdx() + 'cleanup' (mma)
00045 // 19-09-01 come back to previous process name "hIoni"
00046 // 29-10-01 all static functions no more inlined
00047 // 07-01-02 new design of em processes (V.Ivanchenko)
00048 // 26-12-02 secondary production moved to derived classes (VI)
00049 // 24-01-03 Make models region aware (V.Ivanchenko)
00050 // 05-02-03 Fix compilation warnings (V.Ivanchenko)
00051 // 13-02-03 SubCutoff regime is assigned to a region (V.Ivanchenko)
00052 // 15-02-03 Add control on delta pointer (V.Ivanchenko)
00053 // 23-05-03 Add fluctuation model as a member function (V.Ivanchenko)
00054 // 03-06-03 Fix initialisation problem for STD ionisation (V.Ivanchenko)
00055 // 16-06-03 ShortLived are not applicable any more (V.Ivanchenko)
00056 // 08-08-03 STD substitute standard  (V.Ivanchenko)
00057 // 12-11-03 G4EnergyLossSTD -> G4EnergyLossProcess (V.Ivanchenko)
00058 // 21-01-04 Migrade to G4ParticleChangeForLoss (V.Ivanchenko)
00059 // ------------------------------------------------------------------------------------
00060 // 15-04-05 Omit the correction of momentum direction due to production of secenderies.
00061 //          This is needed for my Track Extrapotation. (L.L.Wang)
00062 // ------------------------------------------------------------------------------------
00063 // 08-11-04 Migration to new interface of Store/Retrieve tables (V.Ivantchenko)
00064 // 08-04-05 Major optimisation of internal interfaces (V.Ivantchenko)
00065 // 11-04-04 Move MaxSecondaryEnergy to models (V.Ivanchenko)
00066 //
00067 // Class Description:
00068 //
00069 // This class manages the ionisation process for hadrons.
00070 // it inherites from G4VContinuousDiscreteProcess via G4VEnergyLoss.
00071 //
00072 
00073 // -------------------------------------------------------------------
00074 //
00075 
00076 #ifndef ExthIonisation_h
00077 #define ExthIonisation_h 1
00078 
00079 #include "G4VEnergyLossProcess.hh"
00080 #include "G4Electron.hh"
00081 #include "G4Positron.hh"
00082 #include "globals.hh"
00083 #include "G4VEmModel.hh"
00084 
00085 class G4Material;
00086 class G4VEmFluctuationModel;
00087 
00088 class ExthIonisation : public G4VEnergyLossProcess
00089 {
00090 
00091 public:
00092 
00093   ExthIonisation(const G4String& name = "ExthIoni");
00094 
00095   ~ExthIonisation();
00096 
00097   G4bool IsApplicable(const G4ParticleDefinition& p);
00098 
00099   G4double MinPrimaryEnergy(const G4ParticleDefinition* p,
00100                             const G4Material*, G4double cut);
00101 
00102   virtual void PrintInfo();
00103   // Print out of the class parameters
00104 
00105 protected:
00106   std::vector<G4DynamicParticle*>*  SecondariesPostStep(
00107                                    G4VEmModel*,
00108                              const G4MaterialCutsCouple*,
00109                              const G4DynamicParticle*,
00110                                    G4double&);
00111 
00112   virtual void InitialiseEnergyLossProcess(const G4ParticleDefinition*,
00113                                            const G4ParticleDefinition*);
00114 
00115 private:
00116 
00117   // hide assignment operator
00118   ExthIonisation & operator=(const ExthIonisation &right);
00119   ExthIonisation(const ExthIonisation&);
00120 
00121   G4double   mass;
00122   G4double   ratio;
00123 
00124   const G4ParticleDefinition* theParticle;
00125   const G4ParticleDefinition* theBaseParticle;
00126   G4VEmFluctuationModel*      flucModel;
00127 
00128   G4bool                      isInitialised;
00129 
00130   G4double                    eth;
00131 };
00132 
00133 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
00134 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
00135 
00136 inline G4bool ExthIonisation::IsApplicable(const G4ParticleDefinition& p)
00137 {
00138   return (p.GetPDGCharge() != 0.0 &&
00139           p.GetPDGMass() > 10.0*MeV &&
00140          !p.IsShortLived());
00141 }
00142 
00143 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
00144 
00145 inline G4double ExthIonisation::MinPrimaryEnergy(const G4ParticleDefinition*,
00146                                                    const G4Material*,
00147                                                          G4double cut)
00148 {
00149   G4double x = 0.5*cut/electron_mass_c2;
00150   G4double y = electron_mass_c2/mass;
00151   G4double g = x*y + sqrt((1. + x)*(1. + x*y*y));
00152   return mass*(g - 1.0);
00153 }
00154 
00155 
00156 inline std::vector<G4DynamicParticle*>* ExthIonisation::SecondariesPostStep(
00157                                                   G4VEmModel* model,
00158                                             const G4MaterialCutsCouple* couple,
00159                                             const G4DynamicParticle* dp,
00160                                                   G4double& tcut)
00161 {
00162 //  return model->SampleSecondaries(couple, dp, tcut);
00163   return NULL;
00164 }//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
00165 
00166 #endif

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