File indexing completed on 2024-04-06 12:30:19
0001 #ifndef SimG4Core_CustomPhysics_CMSSIMPInelasticXS_H
0002 #define SimG4Core_CustomPhysics_CMSSIMPInelasticXS_H
0003
0004 #include "G4VCrossSectionDataSet.hh"
0005 #include "globals.hh"
0006
0007 class G4NeutronInelasticXS;
0008
0009 class CMSSIMPInelasticXS : public G4VCrossSectionDataSet {
0010 public:
0011 CMSSIMPInelasticXS();
0012
0013 ~CMSSIMPInelasticXS() override;
0014
0015 G4bool IsElementApplicable(const G4DynamicParticle*, G4int Z, const G4Material*) override;
0016
0017 G4bool IsIsoApplicable(const G4DynamicParticle*, G4int Z, G4int A, const G4Element*, const G4Material*) override;
0018
0019 G4double GetElementCrossSection(const G4DynamicParticle*, G4int Z, const G4Material* mat = nullptr) override;
0020
0021 G4double GetIsoCrossSection(const G4DynamicParticle*,
0022 G4int Z,
0023 G4int A,
0024 const G4Isotope* iso,
0025 const G4Element* elm,
0026 const G4Material* mat) override;
0027
0028 void BuildPhysicsTable(const G4ParticleDefinition&) override;
0029
0030 CMSSIMPInelasticXS& operator=(const CMSSIMPInelasticXS& right) = delete;
0031 CMSSIMPInelasticXS(const CMSSIMPInelasticXS&) = delete;
0032
0033 private:
0034 void Initialise(G4int Z, G4DynamicParticle* dp = nullptr, const char* = nullptr);
0035
0036 G4NeutronInelasticXS* nXsection;
0037 const G4ParticleDefinition* neutron;
0038 G4bool isInitialized;
0039 };
0040
0041 #endif