Warning, file /include/Geant4/G4VLEPTSModel.hh was not indexed
or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
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 #ifndef G4VLEPTSModel_hh
0027 #define G4VLEPTSModel_hh
0028
0029 #include "G4ios.hh"
0030 #include "globals.hh"
0031 #include "Randomize.hh"
0032 #include "G4VEmModel.hh"
0033 #include "G4PhysicsTable.hh"
0034 #include "G4PhysicsLogVector.hh"
0035 #include "G4Element.hh"
0036 #include "G4Electron.hh"
0037 #include "G4Positron.hh"
0038 #include "G4Gamma.hh"
0039 #include "G4Step.hh"
0040
0041 #include "G4EnergyLossTables.hh"
0042 #include "G4UnitsTable.hh"
0043 #include <iostream>
0044
0045 #include "G4LEPTSDiffXS.hh"
0046 #include "G4LEPTSDistribution.hh"
0047 #include "G4LEPTSElossDistr.hh"
0048 #include "G4ForceCondition.hh"
0049 #include <map>
0050 #include <vector>
0051
0052 enum XSType {XSEnergy=0,
0053 XSTotal=1, XSElastic=2, XSInelastic=3,
0054 XSIonisation=4, XSExcitation=5, XSDissociation=6,
0055 XSVibration=7, XSAttachment=8, XSRotation=9, XSPositronium=8
0056 };
0057
0058
0059 class G4VLEPTSModel : public G4VEmModel
0060 {
0061 public:
0062
0063 G4VLEPTSModel(const G4String& processName);
0064 ~G4VLEPTSModel() override;
0065
0066 void BuildPhysicsTable(const G4ParticleDefinition& aParticleType);
0067 G4double GetMeanFreePath(const G4Material* mate,
0068 const G4ParticleDefinition* aParticle,
0069 G4double kineticEnergy );
0070
0071 G4ThreeVector SampleNewDirection(const G4Material* aMaterial, G4ThreeVector Dir, G4double e, G4double el);
0072 G4double SampleAngle(const G4Material* aMaterial, G4double e, G4double el);
0073 G4ThreeVector SampleNewDirection(G4ThreeVector Dir, G4double ang);
0074
0075 G4VLEPTSModel& operator=(const G4VLEPTSModel &right);
0076 G4VLEPTSModel(const G4VLEPTSModel& );
0077
0078 protected:
0079
0080 void Init();
0081 G4bool ReadParam(const G4String& fileName, const G4Material* aMaterial);
0082 virtual std::map<G4int,std::vector<G4double> > ReadIXS(const G4String& fileName, const G4Material* aMaterial);
0083 G4double SampleEnergyLoss(const G4Material* aMaterial, G4double eMin, G4double eMax);
0084 void BuildMeanFreePathTable( const G4Material* aMaterial, std::map< G4int, std::vector<G4double> >& integralXS );
0085
0086 protected:
0087
0088 G4PhysicsTable * theMeanFreePathTable;
0089
0090 G4double theLowestEnergyLimit;
0091 G4double theHighestEnergyLimit;
0092 G4int theNumbBinTable;
0093
0094 std::map<const G4Material*, G4double > theIonisPot;
0095 std::map<const G4Material*, G4double > theIonisPotInt;
0096 std::map<const G4Material*, G4double > theMolecularMass;
0097
0098 std::map<const G4Material*, G4LEPTSDiffXS*> theDiffXS;
0099 std::map<const G4Material*, G4LEPTSDistribution*> theRMTDistr;
0100
0101 std::map<const G4Material*, G4LEPTSElossDistr*> theElostDistr;
0102 std::map<const G4Material*, G4LEPTSDistribution*> theElostDistr2;
0103
0104 std::map<const G4Material*, G4int> theNXSdat;
0105 std::map<const G4Material*, G4int> theNXSsub;
0106
0107 G4bool isInitialised{false};
0108 XSType theXSType;
0109
0110 G4int verboseLevel;
0111 };
0112
0113
0114 #endif