230 G4cout <<
"Calling SampleSecondaries() of G4LivermorePolarizedPhotoElectricGDModel" 236 G4cout <<
"G4LivermorePolarizedPhotoElectricGDModel::SampleSecondaries() Egamma(keV)= " 265 if(!(gammaPolarization0.
isOrthogonal(photonDirection, 1
e-6))||(gammaPolarization0.
mag()==0))
306 if(photonEnergy >= (*(
fParam[Z]))[0]) {
311 G4int idx = nn*6 - 4;
319 for(shellIdx=0; shellIdx<
nn; ++shellIdx) {
320 idx = shellIdx*6 + 2;
321 if(photonEnergy > (*(
fParam[Z]))[idx-1]) {
325 if(cs >= cs0) {
break; }
328 if(shellIdx >= nn) { shellIdx = nn-1; }
336 if(photonEnergy >= (*(
fParam[Z]))[1]) {
342 for(
size_t j=0; j<
nn; ++j) {
344 if(photonEnergy > (*(
fParam[Z]))[6*shellIdx+1]) {
347 if(cs <= 0.0 || j+1 == nn) {
break; }
368 if(photonEnergy < bindingEnergy) {
376 G4double eKineticEnergy = photonEnergy - bindingEnergy;
380 G4double sintheta = sqrt(1. - costheta*costheta);
390 fvect->push_back(electron);
397 G4int nbefore = fvect->size();
400 G4int nafter = fvect->size();
401 if(nafter > nbefore) {
403 for (
G4int j=nbefore; j<nafter; ++j) {
405 G4double e = ((*fvect)[j])->GetKineticEnergy();
406 if(esec + e > edep) {
409 ((*fvect)[j])->SetKineticEnergy(e);
412 for (
G4int jj=nafter-1; jj>j; --jj) {
G4ParticleChangeForGamma * fParticleChange
void SystemOfRefChange(G4ThreeVector &direction0, G4ThreeVector &direction1, G4ThreeVector &polarization0)
G4VAtomDeexcitation * fAtomDeexcitation
G4bool CheckDeexcitationActiveRegion(G4int coupleIndex)
static G4LPhysicsFreeVector * fCrossSectionLE[99]
const G4Material * GetMaterial() const
static G4int fNShellsUsed[99]
double howOrthogonal(const Hep3Vector &v) const
static G4double fWaterEnergyLimit
G4ThreeVector GetPerpendicularPolarization(const G4ThreeVector &direction0, const G4ThreeVector &polarization0) const
static G4Material * fWater
virtual const G4AtomicShell * GetAtomicShell(G4int Z, G4AtomicShellEnumerator shell)=0
G4bool fDeexcitationActive
G4int GetComponentID(G4int Z, size_t idx)
G4double GetKineticEnergy() const
G4GLOB_DLL std::ostream G4cout
G4ParticleDefinition * theGamma
static G4LPhysicsFreeVector * fCrossSection[99]
bool isOrthogonal(const Hep3Vector &v, double epsilon=tolerance) const
G4ThreeVector GetRandomPolarization(G4ThreeVector &direction0)
static G4ElementData * fShellCrossSection
const G4ThreeVector & GetMomentumDirection() const
void GenerateParticles(std::vector< G4DynamicParticle *> *secVect, const G4AtomicShell *, G4int Z, G4int coupleIndex)
static std::vector< G4double > * fParam[99]
const G4ThreeVector & GetPolarization() const
G4double GetValueForComponent(G4int Z, size_t idx, G4double kinEnergy)
static G4Electron * Electron()
G4double SetCosTheta(G4double)
const G4Material * GetBaseMaterial() const
const G4Element * SelectRandomAtom(const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
virtual G4double Value(const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy)
G4double SetPhi(G4double, G4double, G4double)