Back to home page

Project CMSSW displayed by LXR

 
 

    


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