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 #include "G4LEPTSExcitationModel.hh" 27 28 29 //....oooOO0OOooo........oooOO0OOooo........oo 30 G4LEPTSExcitationModel::G4LEPTSExcitationModel 31 : G4VLEPTSModel( modelName ) 32 { 33 theXSType = XSExcitation; 34 fParticleChangeForGamma = nullptr; 35 LowestExcitationEnergy = 0; 36 LowestNeutralDisociationEnergy = 0; 37 } // constructor 38 39 40 //....oooOO0OOooo........oooOO0OOooo........oo 41 G4LEPTSExcitationModel::~G4LEPTSExcitationMode 42 43 44 //....oooOO0OOooo........oooOO0OOooo........oo 45 void G4LEPTSExcitationModel::Initialise(const 46 const 47 { 48 Init(); 49 BuildPhysicsTable( *aParticle ); 50 51 fParticleChangeForGamma = GetParticleChangeF 52 53 LowestExcitationEnergy = 0; 54 LowestNeutralDisociationEnergy = 0; 55 56 57 } 58 59 60 std::map<G4int,std::vector<G4double> > G4LEPTS 61 { 62 std::map<G4int,std::vector<G4double> > integ 63 64 if( integralXS.empty() ) return integralXS; 65 66 for (G4int jj=theNXSdat[aMaterial]; jj>=0; j 67 if( integralXS[XSDissociation][jj] > 0.001 68 if( integralXS[XSVibration][jj] > 0.001) L 69 // if( txs[5][j] > 0.001) LowestExcitat 70 // if( txs[6][j] > 0.001) LowestNeutralDi 71 } 72 73 if( verboseLevel >= 1) G4cout << " Lo 74 << "LowestNeutralDisociationEnergy: " << Lo 75 << G4endl; 76 77 return integralXS; 78 } 79 80 //....oooOO0OOooo........oooOO0OOooo........oo 81 G4double G4LEPTSExcitationModel::CrossSectionP 82 const 83 G4dou 84 G4dou 85 G4dou 86 { 87 return 1./GetMeanFreePath( mate, aParticle, 88 89 } 90 91 92 //....oooOO0OOooo........oooOO0OOooo........oo 93 void G4LEPTSExcitationModel::SampleSecondaries 94 const G4Mater 95 const G4Dynam 96 G4double, 97 G4double) 98 { 99 G4double P0KinEn = aDynamicParticle->GetKine 100 101 G4double Edep=0; 102 G4double Energylost=0; 103 G4ThreeVector P0Dir = aDynamicParticle->GetM 104 105 G4double eMin = 0.0; 106 const G4Material* aMaterial = mateCuts->GetM 107 G4double eMax = std::min(theIonisPot[aMateri 108 Energylost = SampleEnergyLoss(aMaterial, eMi 109 110 Edep = Energylost; 111 112 G4ThreeVector P1Dir = SampleNewDirection(aMa 113 G4double P1KinEn = P0KinEn - Edep; 114 115 fParticleChangeForGamma->ProposeMomentumDire 116 fParticleChangeForGamma->SetProposedKineticE 117 fParticleChangeForGamma->ProposeLocalEnergyD 118 119 } 120