File indexing completed on 2025-01-18 09:58:57
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038 #ifndef G4PolarizedIonisation_h
0039 #define G4PolarizedIonisation_h 1
0040
0041 #include "globals.hh"
0042 #include "G4VEnergyLossProcess.hh"
0043
0044 class G4Material;
0045 class G4MaterialCutsCouple;
0046 class G4ParticleDefinition;
0047 class G4PhysicsTable;
0048 class G4VEmFluctuationModel;
0049 class G4PolarizedIonisationModel;
0050 class G4Track;
0051
0052 class G4PolarizedIonisation : public G4VEnergyLossProcess
0053 {
0054 public:
0055 explicit G4PolarizedIonisation(const G4String& name = "pol-eIoni");
0056
0057 virtual ~G4PolarizedIonisation() override;
0058
0059 virtual G4bool IsApplicable(const G4ParticleDefinition& p) override;
0060
0061 virtual void ProcessDescription(std::ostream&) const override;
0062 virtual void DumpInfo() const override { ProcessDescription(G4cout); };
0063
0064 G4PolarizedIonisation& operator=(const G4PolarizedIonisation& right) = delete;
0065 G4PolarizedIonisation(const G4PolarizedIonisation&) = delete;
0066
0067 protected:
0068 virtual void InitialiseEnergyLossProcess(
0069 const G4ParticleDefinition*, const G4ParticleDefinition*) override;
0070
0071 virtual G4double MinPrimaryEnergy(const G4ParticleDefinition*,
0072 const G4Material*, G4double cut) override;
0073
0074 virtual G4double PostStepGetPhysicalInteractionLength(
0075 const G4Track& track, G4double previousStepSize,
0076 G4ForceCondition* condition) override;
0077
0078 virtual G4double GetMeanFreePath(const G4Track& track,
0079 G4double previousStepSize,
0080 G4ForceCondition* condition) override;
0081
0082 virtual void BuildPhysicsTable(const G4ParticleDefinition&) override;
0083
0084 private:
0085 void CleanTables();
0086
0087 void BuildAsymmetryTables(const G4ParticleDefinition& part);
0088
0089 G4double ComputeAsymmetry(G4double energy, const G4MaterialCutsCouple* couple,
0090 const G4ParticleDefinition& particle, G4double cut,
0091 G4double& tasm);
0092
0093 G4double ComputeSaturationFactor(const G4Track& aTrack);
0094
0095 G4VEmFluctuationModel* fFlucModel;
0096 G4PolarizedIonisationModel* fEmModel;
0097
0098 G4PhysicsTable* fAsymmetryTable;
0099 G4PhysicsTable* fTransverseAsymmetryTable;
0100
0101 G4bool fIsElectron;
0102 G4bool fIsInitialised;
0103 };
0104
0105 #endif