File indexing completed on 2026-09-24 09:10:24
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 G4VHighEnergyGenerator_h
0027 #define G4VHighEnergyGenerator_h 1
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037 #include "G4HadronicInteraction.hh"
0038 #include "G4Nucleus.hh"
0039 #include "G4HadProjectile.hh"
0040 #include "G4ReactionProduct.hh"
0041 #include "G4V3DNucleus.hh"
0042
0043 class G4KineticTrackVector;
0044
0045
0046 class G4VHighEnergyGenerator : public G4HadronicInteraction {
0047 public:
0048 G4VHighEnergyGenerator( const G4String& modelName = "HighEnergyGenerator" );
0049 ~G4VHighEnergyGenerator() override;
0050
0051 G4VHighEnergyGenerator( const G4VHighEnergyGenerator &right ) = delete;
0052 const G4VHighEnergyGenerator & operator=( const G4VHighEnergyGenerator &right ) = delete;
0053 G4bool operator==( const G4VHighEnergyGenerator &right ) const = delete;
0054 G4bool operator!=( const G4VHighEnergyGenerator &right ) const = delete;
0055
0056 virtual G4V3DNucleus* GetWoundedNucleus() const = 0;
0057 virtual G4V3DNucleus* GetProjectileNucleus() const;
0058 virtual G4KineticTrackVector* Scatter( const G4Nucleus &theNucleus,
0059 const G4DynamicParticle &thePrimary) = 0;
0060 void ModelDescription( std::ostream& ) const override;
0061
0062 G4bool IsQuasiElasticInteraction() const;
0063 G4bool IsDiffractiveInteraction() const;
0064
0065 protected:
0066 G4bool fIsQuasiElasticInteraction = false;
0067 G4bool fIsDiffractiveInteraction = false;
0068 };
0069
0070
0071 inline G4bool G4VHighEnergyGenerator::IsQuasiElasticInteraction() const {
0072 return fIsQuasiElasticInteraction;
0073 }
0074
0075 inline G4bool G4VHighEnergyGenerator::IsDiffractiveInteraction() const {
0076 return fIsDiffractiveInteraction;
0077 }
0078
0079
0080 #endif