File indexing completed on 2025-01-18 09:59:22
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
0041
0042 #ifndef G4VIntraNuclearTransportModel_h
0043 #define G4VIntraNuclearTransportModel_h 1
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053 #include "G4V3DNucleus.hh"
0054 #include "G4VPreCompoundModel.hh"
0055 #include "G4HadronicInteraction.hh"
0056 #include "G4ReactionProductVector.hh"
0057 #include "G4ReactionProduct.hh"
0058 #include "G4HadProjectile.hh"
0059 #include "G4HadFinalState.hh"
0060
0061 class G4KineticTrackVector;
0062
0063 class G4VIntraNuclearTransportModel : public G4HadronicInteraction
0064 {
0065 public:
0066
0067 explicit G4VIntraNuclearTransportModel(const G4String& mName = "CascadeModel",
0068 G4VPreCompoundModel* ptr = nullptr);
0069
0070 virtual ~G4VIntraNuclearTransportModel();
0071
0072 virtual
0073 G4ReactionProductVector* Propagate(G4KineticTrackVector* theSecondaries,
0074 G4V3DNucleus* theNucleus) = 0;
0075
0076 virtual
0077 G4ReactionProductVector* PropagateNuclNucl(G4KineticTrackVector* theSecondaries,
0078 G4V3DNucleus* theNucleus,
0079 G4V3DNucleus* theProjectileNucleus);
0080
0081 inline void SetDeExcitation(G4VPreCompoundModel* ptr);
0082
0083 inline void Set3DNucleus(G4V3DNucleus* const value);
0084
0085 inline void SetPrimaryProjectile(const G4HadProjectile &aPrimary);
0086
0087 inline const G4String& GetModelName() const;
0088
0089 virtual void ModelDescription(std::ostream& outFile) const ;
0090 virtual void PropagateModelDescription(std::ostream& outFile) const ;
0091
0092 G4VIntraNuclearTransportModel(const G4VIntraNuclearTransportModel& right) = delete;
0093 const G4VIntraNuclearTransportModel& operator=(const G4VIntraNuclearTransportModel &right) = delete;
0094 G4bool operator==(const G4VIntraNuclearTransportModel& right) const = delete;
0095 G4bool operator!=(const G4VIntraNuclearTransportModel& right) const = delete;
0096
0097 protected:
0098
0099 inline G4V3DNucleus* Get3DNucleus() const;
0100
0101 inline G4VPreCompoundModel* GetDeExcitation() const;
0102
0103 inline const G4HadProjectile* GetPrimaryProjectile() const;
0104
0105 G4String theTransportModelName;
0106
0107 G4V3DNucleus* the3DNucleus;
0108
0109 G4VPreCompoundModel* theDeExcitation;
0110
0111 const G4HadProjectile* thePrimaryProjectile;
0112 };
0113
0114 inline const G4String& G4VIntraNuclearTransportModel::GetModelName() const
0115 {
0116 return theTransportModelName;
0117 }
0118
0119 inline G4V3DNucleus* G4VIntraNuclearTransportModel::Get3DNucleus() const
0120 {
0121 return the3DNucleus;
0122 }
0123
0124 inline void G4VIntraNuclearTransportModel::Set3DNucleus(G4V3DNucleus* const value)
0125 {
0126 delete the3DNucleus; the3DNucleus = value;
0127 }
0128
0129 inline G4VPreCompoundModel* G4VIntraNuclearTransportModel::GetDeExcitation() const
0130 {
0131 return theDeExcitation;
0132 }
0133
0134 inline void
0135 G4VIntraNuclearTransportModel::SetDeExcitation(G4VPreCompoundModel* value)
0136 {
0137
0138 theDeExcitation = value;
0139 }
0140
0141 inline const G4HadProjectile*
0142 G4VIntraNuclearTransportModel::GetPrimaryProjectile() const
0143 {
0144 return thePrimaryProjectile;
0145 }
0146
0147 inline void
0148 G4VIntraNuclearTransportModel::SetPrimaryProjectile(const G4HadProjectile &aPrimary)
0149 {
0150
0151 thePrimaryProjectile = &aPrimary;
0152 }
0153
0154 #endif
0155
0156