Changeset 1196 for trunk/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QHadron.hh
- Timestamp:
- Nov 25, 2009, 5:13:58 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QHadron.hh
r1055 r1196 25 25 // 26 26 // 27 // $Id: G4QHadron.hh,v 1. 37 2009/02/23 09:49:24 mkossov Exp $28 // GEANT4 tag $Name: geant4-09-03- beta-cand-01 $27 // $Id: G4QHadron.hh,v 1.46 2009/09/08 14:04:14 mkossov Exp $ 28 // GEANT4 tag $Name: geant4-09-03-cand-01 $ 29 29 // 30 30 // ---------------- G4QHadron ---------------- … … 47 47 #include "G4QParticle.hh" 48 48 #include "G4QPartonVector.hh" 49 #include "G4QPartonPair.hh" 50 #include "G4LorentzRotation.hh" 49 51 #include <list> 50 52 … … 76 78 G4QPDGCode GetQPDG() const; // Get QPDG of the Hadron 77 79 G4double GetSpin() const{return .5*(GetPDGCode()%10-1);} 78 G4LorentzVector Get4Momentum() const; // Get 4-mom of the Hadron 80 G4LorentzVector Get4Momentum() const{return theMomentum;} // Get 4-mom of Hadron 81 G4ThreeVector Get3Momentum() const{return theMomentum.vect();}// Get 3-mom ofH 82 G4double GetEnergy() const{return theMomentum.e();} // Get E of Hadron 79 83 G4QContent GetQC() const; // Get private quark content 80 84 G4double GetMass() const; // Get a mass of the Hadron … … 86 90 G4int GetBaryonNumber() const; // Get Baryon Number of the Hadron 87 91 const G4ThreeVector& GetPosition() const; // Get hadron coordinates 88 G4int GetSoftCollisionCount(); // Get QGS Counter of collisions89 G4bool IsSplit() {return isSplit;} // Check that hadron has been split90 92 G4double GetBindingEnergy() {return bindE;}// Returns binding E in NucMatter 91 93 G4double GetFormationTime() {return formTime;} // Returns formation time 92 94 std::list<G4QParton*> GetColor() {return Color;} // pointer to quarks/anti-diquarks 95 std::list<G4QParton*> GetAntiColor() {return AntiColor;}//pointer to anti-quarks/diquarks 93 96 // Modifiers 94 97 void SetQPDG(const G4QPDGCode& QPDG); // Set QPDG of the Hadron 98 void SetPDGCode(const G4QPDGCode& PDG){SetQPDG(G4QPDGCode(PDG));}// Set PDGCode of Hadron 95 99 void Set4Momentum(const G4LorentzVector& aMom); // Set 4-mom of the Hadron 96 100 void SetQC(const G4QContent& newQC); // Set new private quark content … … 99 103 void MakeAntiHadron(); // Make AntiHadron of this Hadron 100 104 void SetPosition(const G4ThreeVector& aPosition); // Set coordinates of hadron position 101 void IncrementCollisionCount(G4int aCount); // Increnment counter of collisions 102 void SetCollisionCount(G4int aCount); // Set counter of QGSM collisions 103 void Splitting() {isSplit = true;} // Put Up a flag that splitting is done 105 void IncrementCollisionCount(G4int aCount) {theCollisionCount+=aCount;}// IncrTheCCounter 104 106 void SplitUp(); // Make QGSM String Splitting of Hadron 107 G4QPartonPair* SplitInTwoPartons(); // RandomSplit ofTheHadron in 2 partons 105 108 G4QParton* GetNextParton(); // Next Parton in a string 106 109 G4QParton* GetNextAntiParton(); // Next Anti-Parton in a string … … 108 111 void Boost(const G4LorentzVector& theBoost); // Boosts hadron's 4-Momentum using 4M 109 112 void Boost(const G4ThreeVector& B){theMomentum.boost(B);} // Boosts 4-Momentum using v/c 113 void LorentzRotate(const G4LorentzRotation& rotation){theMomentum=rotation*theMomentum;} 110 114 void SetFormationTime(G4double fT){formTime=fT;} // Defines formationTime for the Hadron 111 115 … … 126 130 G4LorentzVector& dir, G4double cosp); 127 131 void Init3D(); // Initializes 3D nucleus with (Pos,4M)nucleons 128 129 132 private: 130 133 // Private methods 131 134 void DefineQC(G4int PDGCode); 132 135 G4QParton* BuildSeaQuark(G4bool isAntiQuark, G4int aPDGCode); 133 G4double SampleX(G4double anXmin, G4int nSea, G4int theTotalSea, G4double aBeta); 136 G4double SampleCHIPSX(G4double anXtot, G4int nSea); 137 G4double* RandomX(G4int nPart); 134 138 void GetValenceQuarkFlavors(G4QParton* &Part1,G4QParton* &Part2); 135 139 G4ThreeVector GaussianPt(G4double widthSquare, G4double maxPtSquare); … … 137 141 G4bool SplitBaryon(G4int PDGcode, G4int* aEnd, G4int* bEnd); 138 142 143 protected: 144 G4LorentzVector theMomentum; // The 4-mom of Hadron 145 139 146 private: 140 147 // Static Parameters of QGSM Splitting 141 static G4double alpha; // changing rapidity distribution for all142 static G4double beta; // changing rapidity distribution for projectile region143 static G4double theMinPz; // Can be from 14 to 140 MeV144 148 static G4double StrangeSuppress; // ? M.K. 145 static G4double sigmaPt; // Can be 0 149 static G4double sigmaPt; // Can be 0 ? 146 150 static G4double widthOfPtSquare; // ? M.K. 147 static G4double minTransverseMass;// ? M.K.148 151 // Body 149 152 G4QPDGCode theQPDG; // Instance of QPDG for the Hadron 150 G4LorentzVector theMomentum; // The 4-mom of Hadron151 153 G4QContent valQ; // QC (@@ for Quasmon and Chipolino?) 152 154 G4int nFragm; // 0 - stable, N - decayed in N part's … … 156 158 G4bool isSplit; // Flag, that splitting was done 157 159 G4bool Direction; // FALSE=target, TRUE=projectile 158 std::list<G4QParton*> Color;// container for quarks & anti-diquarks159 std::list<G4QParton*> AntiColor;// container for anti-quarks & diquarks160 std::list<G4QParton*> Color; // container for quarks & anti-diquarks 161 std::list<G4QParton*> AntiColor; // container for anti-quarks & diquarks 160 162 G4double bindE; // Binding energy in nuclear matter 161 163 G4double formTime; // Formation time for the hadron … … 171 173 inline G4QPDGCode G4QHadron::GetQPDG() const {return theQPDG;} 172 174 inline G4QContent G4QHadron::GetQC() const {return valQ;} 173 inline G4LorentzVector G4QHadron::Get4Momentum() const {return theMomentum;}174 175 inline G4int G4QHadron::GetNFragments() const {return nFragm;} 175 176 //@@ This is an example how to make other inline selectors for the 4-Momentum of the Hadron … … 181 182 inline G4int G4QHadron::GetBaryonNumber() const {return valQ.GetBaryonNumber();} 182 183 inline const G4ThreeVector& G4QHadron::GetPosition() const {return thePosition;} 183 inline G4int G4QHadron::GetSoftCollisionCount() {return theCollisionCount;}184 //inline G4int G4QHadron::GetSoftCollisionCount() {return theCollisionCount;} 184 185 185 186 inline void G4QHadron::MakeAntiHadron() {if(TestRealNeutral()) NegPDGCode();} … … 188 189 inline void G4QHadron::SetNFragments(const G4int& nf) {nFragm=nf;} 189 190 inline void G4QHadron::SetPosition(const G4ThreeVector& position) {thePosition=position;} 190 inline void G4QHadron::IncrementCollisionCount(G4int aCount) {theCollisionCount+=aCount;}191 inline void G4QHadron::SetCollisionCount(G4int aCount) {theCollisionCount =aCount;}192 191 193 192 inline void G4QHadron::NegPDGCode() {theQPDG.NegPDGCode(); valQ.Anti();} 194 193 inline G4bool G4QHadron::TestRealNeutral() { return theQPDG.TestRealNeutral();} 195 194 196 inline G4QParton* G4QHadron::GetNextParton()197 {198 if(Color.size()==0) return 0;199 G4QParton* result = Color.back();200 Color.pop_back();201 return result;202 }203 204 inline G4QParton* G4QHadron::GetNextAntiParton()205 {206 if(AntiColor.size() == 0) return 0;207 G4QParton* result = AntiColor.front();208 AntiColor.pop_front();209 return result;210 }211 195 #endif
Note: See TracChangeset
for help on using the changeset viewer.