Geant4 Cross Reference |
1 // 1 2 // ******************************************* 3 // * License and Disclaimer 4 // * 5 // * The Geant4 software is copyright of th 6 // * the Geant4 Collaboration. It is provided 7 // * conditions of the Geant4 Software License 8 // * LICENSE and available at http://cern.ch/ 9 // * include a list of copyright holders. 10 // * 11 // * Neither the authors of this software syst 12 // * institutes,nor the agencies providing fin 13 // * work make any representation or warran 14 // * regarding this software system or assum 15 // * use. Please see the license in the file 16 // * for the full disclaimer and the limitatio 17 // * 18 // * This code implementation is the result 19 // * technical work of the GEANT4 collaboratio 20 // * By using, copying, modifying or distri 21 // * any work based on the software) you ag 22 // * use in resulting scientific publicati 23 // * acceptance of all terms of the Geant4 Sof 24 // ******************************************* 25 // 26 // 27 // ------------------------------------------- 28 // 29 // GEANT4 Class header file 30 // 31 // 32 // File name: G4DynamicParticleIonisation 33 // 34 // Author: Vladimir Ivanchenko 35 // 36 // Creation date: 23.08.2024 37 // 38 // 39 // Class Description: 40 // 41 // This class manages the ionisation process f 42 // particle on-the-fly, using only G4DynamicPa 43 // G4ParticleDefinition object is not used. 44 // 45 // ------------------------------------------- 46 // 47 48 #ifndef G4DynamicParticleIonisation_h 49 #define G4DynamicParticleIonisation_h 1 50 51 #include "G4VContinuousDiscreteProcess.hh" 52 #include "G4ParticleChangeForLoss.hh" 53 #include "G4EmSecondaryParticleType.hh" 54 #include "globals.hh" 55 #include <vector> 56 57 class G4Track; 58 class G4Step; 59 class G4ParticleDefinition; 60 class G4MaterialCutsCouple; 61 class G4Material; 62 class G4LossTableManager; 63 class G4VEmFluctuationModel; 64 65 class G4DynamicParticleIonisation : public G4V 66 { 67 public: 68 69 G4DynamicParticleIonisation(); 70 71 ~G4DynamicParticleIonisation() override; 72 73 // initialisation 74 void BuildPhysicsTable(const G4ParticleDefin 75 76 // Step limit from AlongStep 77 G4double AlongStepGetPhysicalInteractionLeng 78 const G4Trac 79 G4double pr 80 G4double cu 81 G4double& cu 82 G4GPILSelect 83 84 // Step limit from cross section 85 G4double PostStepGetPhysicalInteractionLengt 86 const G4Trac 87 G4double pre 88 G4ForceCondi 89 90 // AlongStep computations 91 G4VParticleChange* AlongStepDoIt(const G4Tra 92 93 // PostStep sampling of secondaries 94 G4VParticleChange* PostStepDoIt(const G4Trac 95 96 97 // implementation of the pure virtual method 98 G4double GetMeanFreePath(const G4Track& trac 99 G4ForceCondition* c 100 101 // implementation of the pure virtual method 102 G4double GetContinuousStepLimit(const G4Trac 103 G4double cur 104 105 // print description in html 106 void ProcessDescription(std::ostream&) const 107 108 // hide assignment operator 109 G4DynamicParticleIonisation & operator= 110 (const G4DynamicParticleIonisation& right) = 111 G4DynamicParticleIonisation(const G4DynamicP 112 113 private: 114 115 // all parameters are dynamic 116 void PreStepInitialisation(const G4Track&); 117 118 // dEdx for given energy 119 G4double ComputeDEDX(G4double ekin); 120 121 // cross section per volume 122 G4double ComputeCrossSection(G4double ekin); 123 124 G4LossTableManager* lManager; 125 G4VEmFluctuationModel* fUrban; 126 const G4ParticleDefinition* theElectron; 127 const G4MaterialCutsCouple* fCouple{nullptr} 128 const G4Material* fMaterial{nullptr}; 129 const std::vector<G4double>* fCuts{nullptr}; 130 131 G4double fMass{0.0}; 132 G4double fRatio{0.0}; 133 G4double fCharge{0.0}; 134 G4double fCut{0.0}; 135 G4double fTmax{0.0}; 136 G4double fEkinPreStep{0.0}; 137 G4double fLowestEkin{0.0}; 138 G4double fLinLimit{0.05}; 139 140 G4int fSecID{_DeltaElectron}; 141 G4bool fFluct{true}; 142 143 G4ParticleChangeForLoss fParticleChange; 144 }; 145 146 //....oooOO0OOooo........oooOO0OOooo........oo 147 148 #endif 149