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: G4ionIonisation.hh,v 1.2.8.1 1999/12/07 20:50:55 gunter Exp $ 7 // * conditions of the Geant4 Software License << 9 // GEANT4 tag $Name: geant4-01-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 // ---------- G4ionIonisation physics process ----------- 18 // * This code implementation is the result << 20 // by Laszlo Urban, 08 Dec 1998 19 // * technical work of the GEANT4 collaboratio << 21 // ************************************************************ 20 // * By using, copying, modifying or distri << 22 // It is the first implementation of the ionisation for IONS 21 // * any work based on the software) you ag << 23 // ------------------------------------------------------------ 22 // * use in resulting scientific publicati << 24 23 // * acceptance of all terms of the Geant4 Sof << 24 // ******************************************* << 25 // << 26 // << 27 // ------------------------------------------- << 28 // << 29 // GEANT4 Class header file << 30 // << 31 // << 32 // File name: G4ionIonisation << 33 // << 34 // Author: Vladimir Ivanchenko << 35 // << 36 // Creation date: 07.05.2002 << 37 // << 38 // Modifications: << 39 // << 40 // 26-12-02 Secondary production moved to deri << 41 // 24-01-03 Make models region aware (V.Ivanch << 42 // 05-02-03 Fix compilation warnings (V.Ivanch << 43 // 13-02-03 SubCutoff regime is assigned to a << 44 // 15-02-03 Add control on delta pointer (V.Iv << 45 // 23-05-03 Add fluctuation model as a member << 46 // 03-08-03 Add effective charge and saturatio << 47 // 12-11-03 Fix problem of negative effective << 48 // 12-11-03 G4EnergyLossSTD -> G4EnergyLossPro << 49 // 21-01-04 Migrade to G4ParticleChangeForLoss << 50 // 08-11-04 Migration to new interface of Stor << 51 // 08-04-05 Major optimisation of internal int << 52 // 11-04-05 Move MaxSecondary energy to model << 53 // 11-04-04 Move MaxSecondaryEnergy to models << 54 // 10-05-06 Add a possibility to download user << 55 // 22-07-06 Remove obsolete method (V.Ivantche << 56 // 07-11-07 Moved CorrectionsAlongStep to cc ( << 57 // 12-09-08 Removed InitialiseMassCharge and C << 58 // << 59 // Class Description: << 60 // << 61 // This class manages the ionisation process f << 62 // nuclear stopping power, energy loss correct << 63 // It inherites from G4VEnergyLossLoss. << 64 // << 65 << 66 // ------------------------------------------- << 67 // << 68 << 69 #ifndef G4ionIonisation_h 25 #ifndef G4ionIonisation_h 70 #define G4ionIonisation_h 1 26 #define G4ionIonisation_h 1 71 << 27 72 #include "G4VEnergyLossProcess.hh" << 28 #include "G4ios.hh" 73 << 29 #include "globals.hh" 74 class G4Material; << 30 #include "Randomize.hh" 75 << 31 #include "G4VContinuousDiscreteProcess.hh" 76 class G4ionIonisation : public G4VEnergyLossPr << 32 #include "globals.hh" >> 33 #include "G4Track.hh" >> 34 #include "G4Step.hh" >> 35 #include "G4ParticleDefinition.hh" >> 36 #include "G4Electron.hh" >> 37 #include "G4PhysicsLogVector.hh" >> 38 #include "G4PhysicsLinearVector.hh" >> 39 >> 40 >> 41 class G4ionIonisation : public G4VContinuousDiscreteProcess >> 42 77 { 43 { 78 public: << 44 public: >> 45 >> 46 G4ionIonisation(const G4String& processName = "ionIoni"); 79 47 80 explicit G4ionIonisation(const G4String& nam << 48 ~G4ionIonisation(); 81 49 82 ~G4ionIonisation() override = default; << 50 G4bool IsApplicable(const G4ParticleDefinition&); 83 51 84 G4bool IsApplicable(const G4ParticleDefiniti << 52 void PrintInfoDefinition(); 85 53 86 void AddStoppingData(G4int Z, G4int A, const << 54 G4double GetContinuousStepLimit( 87 G4PhysicsVector* dVector); << 55 const G4Track& track, >> 56 G4double previousStepSize, >> 57 G4double currentMinimumStep, >> 58 G4double& currentSafety) ; 88 59 89 void ActivateStoppingData(G4bool); << 60 G4double GetMeanFreePath( >> 61 const G4Track& track, >> 62 G4double previousStepSize, >> 63 G4ForceCondition* condition ) ; >> 64 >> 65 G4VParticleChange* AlongStepDoIt(const G4Track& track ,const G4Step& Step) ; 90 66 91 // print documentation in html format << 67 G4VParticleChange *PostStepDoIt(const G4Track& track, 92 void ProcessDescription(std::ostream&) const << 68 const G4Step& Step ) ; 93 69 94 // hide assignment operator << 70 protected: 95 G4ionIonisation & operator=(const G4ionIonis << 96 G4ionIonisation(const G4ionIonisation&) = de << 97 71 98 protected: << 72 G4double ComputeMicroscopicCrossSection( >> 73 const G4DynamicParticle* aParticle, >> 74 G4double KineticEnergy, >> 75 G4double AtomicNumber); 99 76 100 void InitialiseEnergyLossProcess(const G4Par << 77 G4double GetConstraints(const G4DynamicParticle *aParticle, 101 const G4ParticleDefinition*) overri << 78 G4Material *aMaterial); 102 79 103 G4double MinPrimaryEnergy(const G4ParticleDe << 80 G4double ComputedEdx(const G4DynamicParticle *aParticle, 104 const G4Material*, G4double cut) fin << 81 G4Material *aMaterial); 105 82 106 inline G4double BetheBlochEnergyThreshold(); << 83 private: 107 84 108 private: << 85 // hide assignment operator >> 86 G4ionIonisation & operator=(const G4ionIonisation &right); >> 87 G4ionIonisation(const G4ionIonisation&); 109 88 >> 89 private: >> 90 // private data members ............................... 110 91 111 const G4ParticleDefinition* theParticle = nu << 92 G4double ParticleMass,Charge ; 112 G4double eth; << 93 G4double dEdx,MinKineticEnergy ; 113 << 94 G4double* DeltaCutInKineticEnergy ; 114 G4bool isInitialised = false; << 95 G4double DeltaCutInKineticEnergyNow ; 115 }; 96 }; >> 97 >> 98 #include "G4ionIonisation.icc" >> 99 >> 100 #endif >> 101 116 102 117 //....oooOO0OOooo........oooOO0OOooo........oo << 118 << 119 inline G4double G4ionIonisation::BetheBlochEne << 120 { << 121 return eth; << 122 } << 123 << 124 //....oooOO0OOooo........oooOO0OOooo........oo << 125 103 126 #endif << 127 104