Geant4 Cross Reference |
>> 1 // This code implementation is the intellectual property of >> 2 // the GEANT4 collaboration. 1 // 3 // 2 // ******************************************* << 4 // By copying, distributing or modifying the Program (or any work 3 // * License and Disclaimer << 5 // based on the Program) you indicate your acceptance of this statement, 4 // * << 6 // and all its terms. 5 // * The Geant4 software is copyright of th << 7 // 6 // * the Geant4 Collaboration. It is provided << 8 // $Id: G4eIonisation.hh,v 1.6 2000/04/25 14:33:05 maire Exp $ 7 // * conditions of the Geant4 Software License << 9 // GEANT4 tag $Name: geant4-02-00 $ 8 // * LICENSE and available at http://cern.ch/ << 10 // 9 // * include a list of copyright holders. << 11 // 10 // * << 12 // ------------------------------------------------------------ 11 // * Neither the authors of this software syst << 13 // GEANT 4 class header file 12 // * institutes,nor the agencies providing fin << 14 // 13 // * work make any representation or warran << 15 // For information related to this code contact: 14 // * regarding this software system or assum << 16 // CERN, IT Division, ASD group 15 // * use. Please see the license in the file << 17 // History: based on object model of 16 // * for the full disclaimer and the limitatio << 18 // 2nd December 1995, G.Cosmo 17 // * << 19 // ---------- G4eIonisation physics process ----------- 18 // * This code implementation is the result << 20 // by Laszlo Urban, 20 March 1997 19 // * technical work of the GEANT4 collaboratio << 21 // ************************************************************ 20 // * By using, copying, modifying or distri << 22 // It is the first implementation of the NEW IONISATION 21 // * any work based on the software) you ag << 23 // PROCESS. ( delta rays + continuous energy loss) 22 // * use in resulting scientific publicati << 24 // It calculates the ionisation for e+/e-. 23 // * acceptance of all terms of the Geant4 Sof << 25 // ************************************************************ 24 // ******************************************* << 26 // 25 // << 27 // 10/02/00 modifications , new e.m. structure, L.Urban 26 // << 28 // ------------------------------------------------------------ 27 // ------------------------------------------- << 29 28 // << 29 // GEANT4 Class header file << 30 // << 31 // << 32 // File name: G4eIonisation << 33 // << 34 // Author: Laszlo Urban << 35 // << 36 // Creation date: 20.03.1997 << 37 // << 38 // Modifications: << 39 // << 40 // 10-02-00 modifications , new e.m. structure << 41 // 03-08-01 new methods Store/Retrieve Physics << 42 // 13-08-01 new function ComputeRestrictedMean << 43 // 19-09-01 come back to previous ProcessName << 44 // 29-10-01 all static functions no more inlin << 45 // 07-01-02 new design of em processes (V.Ivan << 46 // 26-12-02 Secondary production moved to deri << 47 // 24-01-03 Make models region aware (V.Ivanch << 48 // 05-02-03 Fix compilation warnings (V.Ivanch << 49 // 13-02-03 SubCutoff regime is assigned to a << 50 // 23-05-03 Add fluctuation model as a member << 51 // 03-06-03 Fix initialisation problem for STD << 52 // 08-08-03 STD substitute standard (V.Ivanch << 53 // 12-11-03 G4EnergyLossSTD -> G4EnergyLossPro << 54 // 21-01-04 Migrade to G4ParticleChangeForLoss << 55 // 08-11-04 Migration to new interface of Stor << 56 // 08-04-05 Major optimisation of internal int << 57 // 11-04-04 Move MaxSecondaryEnergy to models << 58 // << 59 // Class Description: << 60 // << 61 // This class manages the ionisation process f << 62 // it inherites from G4VContinuousDiscreteProc << 63 // << 64 << 65 // ------------------------------------------- << 66 // << 67 << 68 #ifndef G4eIonisation_h 30 #ifndef G4eIonisation_h 69 #define G4eIonisation_h 1 31 #define G4eIonisation_h 1 70 << 32 71 #include "G4VEnergyLossProcess.hh" << 33 #include "G4ios.hh" >> 34 #include "globals.hh" >> 35 #include "Randomize.hh" >> 36 #include "G4VeEnergyLoss.hh" >> 37 #include "globals.hh" >> 38 #include "G4Track.hh" >> 39 #include "G4Step.hh" 72 #include "G4Electron.hh" 40 #include "G4Electron.hh" 73 #include "G4Positron.hh" 41 #include "G4Positron.hh" 74 #include "G4VEmModel.hh" << 42 #include "G4Gamma.hh" 75 << 43 #include "G4PhysicsLogVector.hh" 76 class G4Material; << 44 #include "G4PhysicsLinearVector.hh" 77 class G4ParticleDefinition; << 45 78 << 46 79 class G4eIonisation : public G4VEnergyLossProc << 47 class G4eIonisation : public G4VeEnergyLoss >> 48 80 { 49 { >> 50 public: >> 51 >> 52 G4eIonisation(const G4String& processName = "eIoni"); >> 53 >> 54 ~G4eIonisation(); >> 55 >> 56 G4bool IsApplicable(const G4ParticleDefinition&); >> 57 >> 58 void BuildPhysicsTable(const G4ParticleDefinition& aParticleType); >> 59 >> 60 void BuildLossTable(const G4ParticleDefinition& aParticleType); >> 61 >> 62 void BuildLambdaTable(const G4ParticleDefinition& aParticleType); >> 63 >> 64 void PrintInfoDefinition(); >> 65 >> 66 G4double GetMeanFreePath(const G4Track& track, >> 67 G4double previousStepSize, >> 68 G4ForceCondition* condition ) ; >> 69 >> 70 G4VParticleChange *PostStepDoIt(const G4Track& track, >> 71 const G4Step& Step ) ; >> 72 >> 73 G4double GetLambda( >> 74 G4double KineticEnergy,G4Material* material); >> 75 >> 76 protected: >> 77 >> 78 virtual G4double ComputeMicroscopicCrossSection( >> 79 const G4ParticleDefinition& aParticleType, >> 80 G4double KineticEnergy, >> 81 G4double AtomicNumber, >> 82 G4double DeltaThreshold); >> 83 >> 84 private: >> 85 >> 86 // hide assignment operator >> 87 G4eIonisation & operator=(const G4eIonisation &right); >> 88 G4eIonisation(const G4eIonisation&); >> 89 >> 90 private: >> 91 >> 92 G4PhysicsTable* theMeanFreePathTable; >> 93 >> 94 static G4double LowerBoundLambda ; // bining for lambda table >> 95 static G4double UpperBoundLambda ; >> 96 static G4int NbinLambda ; >> 97 G4double LowestKineticEnergy,HighestKineticEnergy ; >> 98 G4int TotBin ; >> 99 >> 100 public: >> 101 >> 102 static void SetLowerBoundLambda(G4double val) {LowerBoundLambda = val;}; >> 103 static void SetUpperBoundLambda(G4double val) {UpperBoundLambda = val;}; >> 104 static void SetNbinLambda(G4int n) {NbinLambda = n;}; >> 105 static G4double GetLowerBoundLambda() { return LowerBoundLambda;}; >> 106 static G4double GetUpperBoundLambda() { return UpperBoundLambda;}; >> 107 static G4int GetNbinLambda() {return NbinLambda;}; 81 108 82 public: << 83 << 84 explicit G4eIonisation(const G4String& name << 85 << 86 ~G4eIonisation() override; << 87 << 88 G4bool IsApplicable(const G4ParticleDefiniti << 89 << 90 // print documentation in html format << 91 void ProcessDescription(std::ostream&) const << 92 << 93 // hide assignment operator << 94 G4eIonisation & operator=(const G4eIonisatio << 95 G4eIonisation(const G4eIonisation&) = delete << 96 << 97 protected: << 98 << 99 void InitialiseEnergyLossProcess(const G4Par << 100 const G4ParticleDefinition* << 101 << 102 G4double MinPrimaryEnergy(const G4ParticleDe << 103 const G4Material*, G4double cut) fin << 104 << 105 private: << 106 << 107 const G4ParticleDefinition* theElectron; << 108 << 109 G4bool isElectron; << 110 G4bool isInitialised; << 111 }; 109 }; 112 << 110 113 //....oooOO0OOooo........oooOO0OOooo........oo << 111 #include "G4eIonisation.icc" 114 << 112 115 #endif 113 #endif >> 114 116 115