File indexing completed on 2025-01-18 09:59:00
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 G4QMDReaction_hh
0043 #define G4QMDReaction_hh
0044
0045 #include "G4QMDSystem.hh"
0046 #include "G4QMDCollision.hh"
0047 #include "G4QMDMeanField.hh"
0048 #include "G4QMDParticipant.hh"
0049
0050 #include "G4HadronicInteraction.hh"
0051
0052 #include "G4Evaporation.hh"
0053 #include "G4ExcitationHandler.hh"
0054
0055 class G4VCrossSectionDataSet;
0056 class G4BGGPionElasticXS;
0057 class G4BGGPionInelasticXS;
0058
0059 class G4QMDReaction : public G4HadronicInteraction
0060 {
0061 public:
0062 G4QMDReaction();
0063 ~G4QMDReaction() override;
0064
0065 std::vector< G4QMDSystem* > GetFinalStates();
0066
0067 G4HadFinalState* ApplyYourself(const G4HadProjectile &aTrack,
0068 G4Nucleus & targetNucleus) override;
0069
0070 G4ExcitationHandler* GetExcitationHandler() {return excitationHandler;};
0071
0072 void UnUseGEM() {gem = false; setEvaporationCh();};
0073 void UseFRAG() {frag = true;};
0074
0075 void SetTMAX(G4int i) { maxTime = i; };
0076 void SetDT(G4double t) { deltaT = t; };
0077 void SetEF(G4double x) { envelopF = x; };
0078
0079 void ModelDescription(std::ostream& outFile) const override;
0080
0081
0082 G4QMDReaction(const G4QMDReaction& right) = delete;
0083 const G4QMDReaction& operator = (const G4QMDReaction& right) = delete;
0084
0085 private:
0086
0087 void setEvaporationCh();
0088 void setHighEnergyModel();
0089
0090 G4QMDMeanField* meanField;
0091
0092 G4QMDCollision* collision;
0093
0094 void doCollision();
0095 std::vector< G4QMDSystem* > doClusterJudgment();
0096
0097 G4QMDSystem* system;
0098 G4double deltaT;
0099 G4int maxTime;
0100 G4double envelopF;
0101
0102 G4ExcitationHandler* excitationHandler;
0103
0104
0105
0106
0107
0108 void calcOffSetOfCollision(G4double, const G4ParticleDefinition*,
0109 const G4ParticleDefinition*, G4double,
0110 G4double, G4double, G4ThreeVector);
0111
0112 G4double coulomb_collision_gamma_proj;
0113 G4double coulomb_collision_rx_proj;
0114 G4double coulomb_collision_rz_proj;
0115 G4double coulomb_collision_px_proj;
0116 G4double coulomb_collision_pz_proj;
0117
0118 G4double coulomb_collision_gamma_targ;
0119 G4double coulomb_collision_rx_targ;
0120 G4double coulomb_collision_rz_targ;
0121 G4double coulomb_collision_px_targ;
0122 G4double coulomb_collision_pz_targ;
0123
0124 G4VCrossSectionDataSet* theXS;
0125
0126 G4BGGPionElasticXS* pipElNucXS;
0127 G4BGGPionElasticXS* pimElNucXS;
0128 G4BGGPionInelasticXS* pipInelNucXS;
0129 G4BGGPionInelasticXS* pimInelNucXS;
0130
0131 G4bool gem;
0132 G4bool frag;
0133 G4int secID;
0134 };
0135
0136 #endif