47#ifndef G4HadronicProcess_h
48#define G4HadronicProcess_h 1
108 const G4Step& aStep)
override;
170 inline std::vector<G4TwoPeaksHadXS*>*
TwoPeaksXS()
const;
203 void InitialiseLocal();
204 void UpdateCrossSectionAndMFP(
const G4double kinEnergy);
205 void RecomputeXSandMFP(
const G4double kinEnergy);
207 inline void DefineXSandMFP();
208 inline void ComputeXSandMFP();
210 G4double XBiasSurvivalProbability();
214 void GetEnergyMomentumCheckEnvvars();
244 std::vector<G4double>* theEnergyOfCrossSectionMax =
nullptr;
245 std::vector<G4TwoPeaksHadXS*>* fXSpeaks =
nullptr;
253 G4int nICelectrons = 0;
257 G4bool levelsSetByProcess =
false;
258 G4bool G4HadronicProcess_debug_flag =
false;
259 G4bool useIntegralXS =
true;
265 std::pair<G4double, G4double> epCheckLevels;
266 std::vector<G4VLeadingParticleBiasing*> theBias;
280 return theInteraction;
286 return &targetNucleus;
325 epCheckLevels.first = relativeLevel;
326 epCheckLevels.second = absoluteLevel;
327 levelsSetByProcess =
true;
330inline std::pair<G4double, G4double>
333 return epCheckLevels;
342inline std::vector<G4TwoPeaksHadXS*>*
348inline std::vector<G4double>*
351 return theEnergyOfCrossSectionMax;
362 aMaterial,anElement);
367 return &targetNucleus;
375inline void G4HadronicProcess::DefineXSandMFP()
382inline void G4HadronicProcess::ComputeXSandMFP()
std::ostringstream G4ExceptionDescription
G4double ComputeCrossSection(const G4DynamicParticle *, const G4Material *)
G4double GetCrossSection(const G4DynamicParticle *, const G4Material *)
G4HadronicInteraction * GetHadronicInteraction(const G4HadProjectile &aHadProjectile, G4Nucleus &aTargetNucleus, const G4Material *aMaterial, const G4Element *anElement) const
void FillResult(G4HadFinalState *aR, const G4Track &aT)
const G4Nucleus * GetTargetNucleus() const
G4VParticleChange * PostStepDoIt(const G4Track &aTrack, const G4Step &aStep) override
void ProcessDescription(std::ostream &outFile) const override
G4double ComputeCrossSection(const G4ParticleDefinition *, const G4Material *, const G4double kinEnergy)
G4HadronicProcess & operator=(const G4HadronicProcess &right)=delete
void BiasCrossSectionByFactor(G4double aScale)
void StartTracking(G4Track *track) override
void SetCrossSectionType(G4HadXSType val)
G4Nucleus * GetTargetNucleusPointer()
G4HadFinalState * CheckResult(const G4HadProjectile &thePro, const G4Nucleus &targetNucleus, G4HadFinalState *result)
void SetEpReportLevel(G4int level)
G4double GetMeanFreePath(const G4Track &aTrack, G4double, G4ForceCondition *) override
G4HadronicInteraction * GetHadronicInteraction() const
G4ParticleChange * theTotalResult
void AddDataSet(G4VCrossSectionDataSet *aDataSet)
std::vector< G4TwoPeaksHadXS * > * TwoPeaksXS() const
G4HadXSType CrossSectionType() const
G4double GetElementCrossSection(const G4DynamicParticle *part, const G4Element *elm, const G4Material *mat=nullptr)
std::vector< G4HadronicInteraction * > & GetHadronicInteractionList()
void PreparePhysicsTable(const G4ParticleDefinition &) override
G4HadronicInteraction * ChooseHadronicInteraction(const G4HadProjectile &aHadProjectile, G4Nucleus &aTargetNucleus, const G4Material *aMaterial, const G4Element *anElement)
std::pair< G4double, G4double > GetEnergyMomentumCheckLevels() const
~G4HadronicProcess() override
G4double GetLastCrossSection()
void BuildPhysicsTable(const G4ParticleDefinition &) override
G4CrossSectionDataStore * theCrossSectionDataStore
void CheckEnergyMomentumConservation(const G4Track &, const G4Nucleus &)
G4CrossSectionDataStore * GetCrossSectionDataStore()
G4HadronicInteraction * GetHadronicModel(const G4String &)
G4double GetMicroscopicCrossSection(const G4DynamicParticle *part, const G4Element *elm, const G4Material *mat=nullptr)
G4HadronicProcess(const G4HadronicProcess &)=delete
void DumpState(const G4Track &, const G4String &, G4ExceptionDescription &)
void DumpPhysicsTable(const G4ParticleDefinition &p)
G4double CrossSectionFactor() const
void MultiplyCrossSectionBy(G4double factor)
G4double PostStepGetPhysicalInteractionLength(const G4Track &track, G4double, G4ForceCondition *) override
void SetIntegral(G4bool val)
G4double theLastCrossSection
void RegisterMe(G4HadronicInteraction *a)
const G4Isotope * GetTargetIsotope()
void SetEnergyMomentumCheckLevels(G4double relativeLevel, G4double absoluteLevel)
std::vector< G4double > * EnergyOfCrossSectionMax() const
const G4Isotope * GetIsotope()