File indexing completed on 2025-01-18 09:59:26
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 #ifndef G4VPartonStringModel_h
0029 #define G4VPartonStringModel_h 1
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041 #include "G4StringModel.hh"
0042 #include "G4VParticipants.hh"
0043 #include "G4ReactionProductVector.hh"
0044 #include "G4ExcitedString.hh"
0045 #include "G4ExcitedStringVector.hh"
0046 #include "G4VStringFragmentation.hh"
0047 #include "G4V3DNucleus.hh"
0048 #include "G4KineticTrackVector.hh"
0049
0050 class G4VPartonStringModel : public G4VHighEnergyGenerator
0051 {
0052 public:
0053 G4VPartonStringModel(const G4String& modelName = "Parton String Model");
0054 ~G4VPartonStringModel() override;
0055
0056 G4VPartonStringModel(const G4VPartonStringModel &right) = delete;
0057 const G4VPartonStringModel & operator=
0058 (const G4VPartonStringModel &right) = delete;
0059 G4bool operator==(const G4VPartonStringModel &right) const = delete;
0060 G4bool operator!=(const G4VPartonStringModel &right) const = delete;
0061
0062 void SetFragmentationModel(G4VStringFragmentation * aModel);
0063 G4KineticTrackVector * Scatter(const G4Nucleus &theNucleus,
0064 const G4DynamicParticle &thePrimary) override;
0065 void ModelDescription(std::ostream& outFile) const override;
0066 G4V3DNucleus * GetProjectileNucleus() const override;
0067
0068 protected:
0069 virtual void Init(const G4Nucleus &theNucleus, const G4DynamicParticle &thePrimary) = 0;
0070 virtual G4ExcitedStringVector * GetStrings() = 0;
0071
0072 G4bool EnergyAndMomentumCorrector(G4KineticTrackVector* Output, G4LorentzVector& TotalCollisionMomentum);
0073
0074 private:
0075 G4VStringFragmentation * stringFragmentationModel;
0076 };
0077
0078 inline void G4VPartonStringModel::SetFragmentationModel(G4VStringFragmentation * aModel)
0079 {
0080 if(aModel != stringFragmentationModel) {
0081 stringFragmentationModel = aModel;
0082 }
0083 }
0084
0085 #endif
0086