31#ifndef G4ChannelingFastSimModel_h
32#define G4ChannelingFastSimModel_h 1
39#include <unordered_map>
69 {
Input(crystal,lattice,
"");}
85 {fLowEnergyLimit[particleTable->FindParticle(particleName)->
86 GetParticleDefinitionID()] = ekinetic;}
88 {fLindhardAngleNumberHighLimit[particleTable->FindParticle(particleName)->
89 GetParticleDefinitionID()]=angleNumber;}
91 {fHighAngleLimit[particleTable->FindParticle(particleName)->
92 GetParticleDefinitionID()] = anglemax;}
95 {fDefaultLowEnergyLimit=ekinetic;}
97 {fDefaultLindhardAngleNumberHighLimit=angleNumber;}
99 {fDefaultHighAngleLimit=anglemax;}
105 {fMaxPhotonsProducedPerStep=nPhotons;}
109 {
return (fLowEnergyLimit.count(particleDefinitionID) == 1)
110 ? fLowEnergyLimit[particleDefinitionID]
111 : fDefaultLowEnergyLimit;}
113 {
return (fLindhardAngleNumberHighLimit.count(particleDefinitionID) == 1)
114 ? fLindhardAngleNumberHighLimit[particleDefinitionID]
115 : fDefaultLindhardAngleNumberHighLimit;}
117 {
return (fHighAngleLimit.count(particleDefinitionID) == 1)
118 ? fHighAngleLimit[particleDefinitionID]
119 : fDefaultHighAngleLimit;}
127 G4BaierKatkov* fBaierKatkov{
nullptr};
136 std::unordered_map<G4int, G4double> fLowEnergyLimit;
137 std::unordered_map<G4int, G4double> fLindhardAngleNumberHighLimit;
138 std::unordered_map<G4int, G4double> fHighAngleLimit;
140 G4double fDefaultLowEnergyLimit = 200*CLHEP::MeV;
141 G4double fDefaultLindhardAngleNumberHighLimit = 100.;
142 G4double fDefaultHighAngleLimit = 0.;
145 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)
~G4ChannelingFastSimModel()=default
void DoIt(const G4FastTrack &, G4FastStep &) override
– User method DoIt
void Input(const G4Material *crystal, const G4String &lattice)
special functions
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()
G4Region defines a region or a group of regions in the detector geometry setup, sharing properties as...
G4VFastSimulationModel(const G4String &aName)