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 // Optical Photon Absorption Class Implementat 30 ////////////////////////////////////////////// 31 // 32 // File: G4OpAbsorption.cc 33 // Description: Discrete Process -- Absorption 34 // Version: 1.0 35 // Created: 1996-05-21 36 // Author: Juliet Armstrong 37 // Updated: 2005-07-28 - add G4ProcessType 38 // 2000-09-18 by Peter Gumplinger 39 // > comment out warning - "No Ab 40 // 1997-04-09 by Peter Gumplinger 41 // > new physics/tracking scheme 42 // 1998-08-25 by Stefano Magni 43 // > Change process to use G4Mate 44 // 1998-09-03 by Peter Gumplinger 45 // > Protect G4MaterialPropertyVe 46 // 47 ////////////////////////////////////////////// 48 49 #include "G4ios.hh" 50 #include "G4OpProcessSubType.hh" 51 #include "G4OpticalParameters.hh" 52 53 #include "G4OpAbsorption.hh" 54 55 //....oooOO0OOooo........oooOO0OOooo........oo 56 G4OpAbsorption::G4OpAbsorption(const G4String& 57 : G4VDiscreteProcess(processName, type) 58 { 59 Initialise(); 60 if(verboseLevel > 0) 61 { 62 G4cout << GetProcessName() << " is created 63 } 64 SetProcessSubType(fOpAbsorption); 65 } 66 67 //....oooOO0OOooo........oooOO0OOooo........oo 68 G4OpAbsorption::~G4OpAbsorption() = default; 69 70 //....oooOO0OOooo........oooOO0OOooo........oo 71 void G4OpAbsorption::PreparePhysicsTable(const 72 { 73 Initialise(); 74 } 75 76 //....oooOO0OOooo........oooOO0OOooo........oo 77 void G4OpAbsorption::Initialise() 78 { 79 SetVerboseLevel(G4OpticalParameters::Instanc 80 } 81 82 //....oooOO0OOooo........oooOO0OOooo........oo 83 G4VParticleChange* G4OpAbsorption::PostStepDoI 84 85 { 86 aParticleChange.Initialize(aTrack); 87 88 const G4DynamicParticle* aParticle = aTrack. 89 G4double thePhotonMomentum = aPartic 90 91 aParticleChange.ProposeLocalEnergyDeposit(th 92 aParticleChange.ProposeTrackStatus(fStopAndK 93 94 if(verboseLevel > 1) 95 { 96 G4cout << "\n** OpAbsorption: Photon absor 97 } 98 return G4VDiscreteProcess::PostStepDoIt(aTra 99 } 100 101 //....oooOO0OOooo........oooOO0OOooo........oo 102 G4double G4OpAbsorption::GetMeanFreePath(const 103 G4For 104 { 105 const G4DynamicParticle* aParticle = aTrack. 106 G4MaterialPropertiesTable* MPT = 107 aTrack.GetMaterial()->GetMaterialPropertie 108 G4double attLength = DBL_MAX; 109 110 if(MPT) 111 { 112 G4MaterialPropertyVector* attVector = MPT- 113 if(attVector) 114 { 115 attLength = 116 attVector->Value(aParticle->GetTotalMo 117 } 118 } 119 120 return attLength; 121 } 122 123 //....oooOO0OOooo........oooOO0OOooo........oo 124 void G4OpAbsorption::SetVerboseLevel(G4int ver 125 { 126 verboseLevel = verbose; 127 G4OpticalParameters::Instance()->SetAbsorpti 128 } 129