Import Geant4 11.0.0.beta source tree

This commit is contained in:
Gabriele Cosmo
2021-06-25 16:12:29 +02:00
parent c968e26a39
commit 6399a014b6
4200 changed files with 207479 additions and 237366 deletions
@@ -23,96 +23,72 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
////////////////////////////////////////////////////////////////////////////////
// Class: G4AdjointPhotoElectricModel
// Author: L. Desorgher
// Organisation: SpaceIT GmbH
//
/////////////////////////////////////////////////////////////////////////////////
// Module: G4AdjointPhotoElectricModel
// Author: L. Desorgher
// Organisation: SpaceIT GmbH
// Contract: ESA contract 21435/08/NL/AT
// Customer: ESA/ESTEC
/////////////////////////////////////////////////////////////////////////////////
//
// CHANGE HISTORY
// --------------
// ChangeHistory:
// -1 September 2007 creation by L. Desorgher
//
// -January 2009. L. Desorgher
// Put a higher limit on the CS to avoid a high rate of Inverse Photo e- effect at low energy. The very high adjoint CS of the reverse
// photo electric reaction produce a high rate of reverse photo electric reaction in the inner side of a shielding for eaxmple, the correction of this occurrence
// by weight correction in the StepDoIt method is not statistically sufficient at small energy. The problem is partially solved by setting an higher CS limit
// and compensating it by an extra weight correction factor. However when coupling it with other reverse processes the reverse photo-electric is still
// the source of very occasional high weight that decrease the efficiency of the computation. A way to solve this problemn is still needed but is difficult
// to find as it happens in rarea case but does give a weighrt that is outside the noemal distribution. (Very Tricky!)
//
// -October 2009 Correction of Element sampling. L. Desorgher
//
//-------------------------------------------------------------
// Documentation:
// Model for the adjoint photo electric process
// Model for the adjoint photo electric process.
// Put a higher limit on the CS to avoid a high rate of Inverse Photo e-effect
// at low energy. The very high adjoint CS of the reverse photo electric
// reaction produce a high rate of reverse photo electric reaction in the inner
// side of a shielding for eaxmple, the correction of this occurrence by weight
// correction in the StepDoIt method is not statistically sufficient at small
// energy. The problem is partially solved by setting a higher CS limit and
// compensating it by an extra weight correction factor. However when coupling
// it with other reverse processes the reverse photo-electric is still the
// source of very occasional high weights that decrease the efficiency of the
// computation. A way to solve this problemn is still needed but is difficult
// to find as it happens in rare cases but does give a weight that is outside
// the normal distribution. (Very Tricky!)
//
////////////////////////////////////////////////////////////////////////////////
#ifndef G4AdjointPhotoElectricModel_h
#define G4AdjointPhotoElectricModel_h 1
#include "globals.hh"
#include "G4VEmAdjointModel.hh"
#include "G4PEEffectFluoModel.hh"
class G4AdjointPhotoElectricModel: public G4VEmAdjointModel
class G4AdjointPhotoElectricModel : public G4VEmAdjointModel
{
public:
public:
G4AdjointPhotoElectricModel();
~G4AdjointPhotoElectricModel();
virtual void SampleSecondaries(const G4Track& aTrack,
G4bool IsScatProjToProjCase,
G4ParticleChange* fParticleChange);
virtual G4double AdjointCrossSection(const G4MaterialCutsCouple* aCouple,
G4double primEnergy,
G4bool IsScatProjToProjCase);
virtual G4double GetAdjointCrossSection(const G4MaterialCutsCouple* aCouple,
G4double primEnergy,
G4bool IsScatProjToProjCase);
G4double AdjointCrossSectionPerAtom(const G4Element* anElement,G4double electronEnergy);
inline void SetTheDirectPEEffectModel(G4PEEffectFluoModel* aModel){theDirectPEEffectModel = aModel;
DefineDirectEMModel(aModel);}
virtual void CorrectPostStepWeight(G4ParticleChange* fParticleChange,
G4double old_weight,
G4double adjointPrimKinEnergy,
G4double projectileKinEnergy,
G4bool IsScatProjToProjCase);
private:
G4double xsec[40];
G4double totAdjointCS;
G4double totBiasedAdjointCS;
G4double factorCSBiasing;
G4double pre_step_AdjointCS;
G4double post_step_AdjointCS;
G4double shell_prob[40][40];
G4PEEffectFluoModel* theDirectPEEffectModel;
size_t index_element;
G4double current_eEnergy;
private:
void DefineCurrentMaterialAndElectronEnergy(const G4MaterialCutsCouple* aCouple,
G4double eEnergy);
~G4AdjointPhotoElectricModel() override;
void SampleSecondaries(const G4Track& aTrack, G4bool isScatProjToProj,
G4ParticleChange* fParticleChange) override;
G4double AdjointCrossSection(const G4MaterialCutsCouple* aCouple,
G4double primEnergy,
G4bool isScatProjToProj) override;
G4double AdjointCrossSectionPerAtom(const G4Element* anElement,
G4double electronEnergy);
G4AdjointPhotoElectricModel(G4AdjointPhotoElectricModel&) = delete;
G4AdjointPhotoElectricModel& operator=(
const G4AdjointPhotoElectricModel& right) = delete;
protected:
void CorrectPostStepWeight(G4ParticleChange* fParticleChange,
G4double old_weight, G4double adjointPrimKinEnergy,
G4double projectileKinEnergy,
G4bool isScatProjToProj) override;
private:
void DefineCurrentMaterialAndElectronEnergy(
const G4MaterialCutsCouple* aCouple, G4double eEnergy);
G4double fShellProb[40][40];
G4double fXsec[40];
G4double fTotAdjointCS = 0.;
G4double fFactorCSBiasing = 1.;
G4double fPreStepAdjointCS = 0.;
G4double fPostStepAdjointCS = 0.;
G4double fCurrenteEnergy = 0.;
size_t fIndexElement = 0;
};
#endif