52 crossSectionHandler(0), shellCrossSectionHandler(0)
54 lowEnergyLimit = 10 *
eV;
55 highEnergyLimit = 100 *
GeV;
74 fAtomDeexcitation = 0;
75 fDeexcitationActive =
false;
77 if (verboseLevel > 1) {
78 G4cout <<
"Livermore Polarized PhotoElectric is constructed " <<
G4endl
80 << lowEnergyLimit /
keV <<
" keV - "
81 << highEnergyLimit /
GeV <<
" GeV"
90 delete crossSectionHandler;
91 delete shellCrossSectionHandler;
101 if (verboseLevel > 3) {
102 G4cout <<
"Calling G4LivermorePolarizedPhotoElectricModel::Initialise()" <<
G4endl;
104 if (crossSectionHandler)
106 crossSectionHandler->
Clear();
107 delete crossSectionHandler;
110 if (shellCrossSectionHandler)
112 shellCrossSectionHandler->
Clear();
113 delete shellCrossSectionHandler;
119 crossSectionHandler->
Clear();
120 G4String crossSectionFile =
"phot/pe-cs-";
121 crossSectionHandler->
LoadData(crossSectionFile);
124 shellCrossSectionHandler->
Clear();
125 G4String shellCrossSectionFile =
"phot/pe-ss-cs-";
126 shellCrossSectionHandler->
LoadShellData(shellCrossSectionFile);
131 if(fAtomDeexcitation) {
132 fDeexcitationActive = fAtomDeexcitation->
IsFluoActive();
134 if (verboseLevel > 1) {
135 G4cout <<
"Livermore Polarized PhotoElectric model is initialized "
154 if (verboseLevel > 3) {
155 G4cout <<
"G4LivermorePolarizedPhotoElectricModel::ComputeCrossSectionPerAtom()"
157 G4cout <<
" E(keV)= " << GammaEnergy/
keV <<
" Z= " << Z
158 <<
" CrossSection(barn)= "
167 std::vector<G4DynamicParticle*>* fvect,
173 if (verboseLevel > 3) {
174 G4cout <<
"Calling SampleSecondaries() of G4LivermorePolarizedPhotoElectricModel"
186 if (photonEnergy <= lowEnergyLimit)
205 if(fDeexcitationActive) {
211 if(
G4int(shellIndex) > nshells) { shellIndex = std::max(0, nshells); }
218 if(photonEnergy < bindingEnergy) {
241 fvect->push_back(electron);
244 if(fDeexcitationActive) {
247 size_t nbefore = fvect->size();
250 size_t nafter = fvect->size();
251 if(nafter > nbefore) {
252 for (
size_t j=nbefore; j<nafter; ++j) {
253 edep -= ((*fvect)[j])->GetKineticEnergy();