31#ifndef G4ChannelingFastSimModel_h
32#define G4ChannelingFastSimModel_h 1
42#include <unordered_map>
72 {
Input(crystal,lattice,
"");}
88 {fLowEnergyLimit[particleTable->FindParticle(particleName)->
89 GetParticleDefinitionID()] = ekinetic;}
91 {fLindhardAngleNumberHighLimit[particleTable->FindParticle(particleName)->
92 GetParticleDefinitionID()]=angleNumber;}
94 {fHighAngleLimit[particleTable->FindParticle(particleName)->
95 GetParticleDefinitionID()] = anglemax;}
98 {fDefaultLowEnergyLimit=ekinetic;}
100 {fDefaultLindhardAngleNumberHighLimit=angleNumber;}
102 {fDefaultHighAngleLimit=anglemax;}
108 {fMaxPhotonsProducedPerStep=nPhotons;}
112 {
return (fLowEnergyLimit.count(particleDefinitionID) == 1)
113 ? fLowEnergyLimit[particleDefinitionID]
114 : fDefaultLowEnergyLimit;}
116 {
return (fLindhardAngleNumberHighLimit.count(particleDefinitionID) == 1)
117 ? fLindhardAngleNumberHighLimit[particleDefinitionID]
118 : fDefaultLindhardAngleNumberHighLimit;}
120 {
return (fHighAngleLimit.count(particleDefinitionID) == 1)
121 ? fHighAngleLimit[particleDefinitionID]
122 : fDefaultHighAngleLimit;}
130 G4BaierKatkov* fBaierKatkov{
nullptr};
139 std::unordered_map<G4int, G4double> fLowEnergyLimit;
140 std::unordered_map<G4int, G4double> fLindhardAngleNumberHighLimit;
141 std::unordered_map<G4int, G4double> fHighAngleLimit;
143 G4double fDefaultLowEnergyLimit = 200*CLHEP::MeV;
144 G4double fDefaultLindhardAngleNumberHighLimit = 100.;
145 G4double fDefaultHighAngleLimit = 0.;
148 G4int fMaxPhotonsProducedPerStep=1000.;
Definition of the G4BaierKatkov class This class is designed for the calculation of radiation probabi...
Definition of the G4ChannelingFastSimCrystalData class The class inherits G4VChannelingFastSimCrystal...
void SetDefaultLindhardAngleNumberHighLimit(G4double angleNumber)
void SetDefaultHighAngleLimit(G4double anglemax)
G4ChannelingFastSimCrystalData * GetCrystalData()
G4ChannelingFastSimModel(const G4String &, G4Region *)
G4bool GetIfRadiationModelActive()
G4double GetHighAngleLimit(G4int particleDefinitionID)
void SetDefaultLowKineticEnergyLimit(G4double ekinetic)
void DoIt(const G4FastTrack &, G4FastStep &) override
– User method DoIt
void Input(const G4Material *crystal, const G4String &lattice)
special functions
~G4ChannelingFastSimModel()
void RadiationModelActivate()
G4bool IsApplicable(const G4ParticleDefinition &) override
– IsApplicable
void SetLindhardAngleNumberHighLimit(G4double angleNumber, const G4String &particleName)
G4double GetLindhardAngleNumberHighLimit(G4int particleDefinitionID)
void SetMaxPhotonsProducedPerStep(G4double nPhotons)
G4bool ModelTrigger(const G4FastTrack &) override
– ModelTrigger
void SetLowKineticEnergyLimit(G4double ekinetic, const G4String &particleName)
set cuts
void SetHighAngleLimit(G4double anglemax, const G4String &particleName)
G4int GetMaxPhotonsProducedPerStep()
get the maximal number of photons that can be produced per fastStep
G4BaierKatkov * GetRadiationModel()
G4double GetLowKineticEnergyLimit(G4int particleDefinitionID)
get cuts
static G4ParticleTable * GetParticleTable()
G4VFastSimulationModel(const G4String &aName)