File indexing completed on 2025-10-31 09:03:02
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 
0039 
0040 #ifndef G4KokoulinMuonNuclearXS_h
0041 #define G4KokoulinMuonNuclearXS_h 1
0042 
0043 #include "G4VCrossSectionDataSet.hh"
0044 #include "G4DynamicParticle.hh"
0045 #include "G4Element.hh"
0046 #include "G4PhysicsVector.hh"
0047 
0048 const G4int MAXZMUN = 93;
0049 
0050 class G4PhysicsVector;
0051 
0052 class G4KokoulinMuonNuclearXS : public G4VCrossSectionDataSet
0053 {
0054 public:
0055 
0056   G4KokoulinMuonNuclearXS();
0057   virtual ~G4KokoulinMuonNuclearXS();
0058 
0059   static const char* Default_Name() {return "KokoulinMuonNuclearXS";}
0060 
0061   virtual void CrossSectionDescription(std::ostream&) const;
0062 
0063   G4bool IsElementApplicable(const G4DynamicParticle* particle, 
0064                  G4int Z, const G4Material*);
0065 
0066   G4double GetElementCrossSection(const G4DynamicParticle* particle,
0067                   G4int Z, const G4Material*);
0068 
0069   void BuildPhysicsTable(const G4ParticleDefinition&);
0070 
0071   void BuildCrossSectionTable();
0072 
0073   G4double
0074   ComputeDDMicroscopicCrossSection(G4double incidentKE, G4double Z,
0075                                    G4double A, G4double epsilon);
0076 
0077 private:
0078 
0079   G4double
0080   ComputeMicroscopicCrossSection(G4double incidentKE, G4double A);
0081 
0082   G4KokoulinMuonNuclearXS & operator=(const G4KokoulinMuonNuclearXS &right);
0083   G4KokoulinMuonNuclearXS(const G4KokoulinMuonNuclearXS&);
0084 
0085   static G4PhysicsVector* theCrossSection[MAXZMUN];
0086 
0087   G4double LowestKineticEnergy;
0088   G4double HighestKineticEnergy;
0089   G4int    TotBin;
0090   G4double CutFixed;
0091   G4bool   isInitialized;
0092   G4bool   isMaster;
0093 };
0094 
0095 #endif