65 #ifdef debug_QGSMfragmentation // Uzhi Oct. 2014 69 <<
"------------------------------------"<<
G4endl;
85 #ifdef debug_QGSMfragmentation // Uzhi Oct. 2014 86 if ( LeftVector != 0 )
G4cout<<
"Non fragmentable - the string is converted to one hadron "<<
G4endl;
89 if ( LeftVector != 0 )
return LeftVector;
91 #ifdef debug_QGSMfragmentation // Uzhi Oct. 2014 102 G4bool success=
false, inner_sucess=
true;
106 #ifdef debug_QGSMfragmentation // Uzhi Oct. 2014 117 RightVector->clear();
120 const G4int maxNumberOfLoops = 1000;
121 G4int loopCounter = -1;
122 while (!
StopFragmenting(currentString) && ++loopCounter < maxNumberOfLoops )
125 #ifdef debug_QGSMfragmentation // Uzhi Oct. 2014 133 #ifdef debug_QGSMfragmentation // Uzhi Oct. 2014 137 LeftVector->push_back(Hadron);
139 RightVector->push_back(Hadron);
141 delete currentString;
142 currentString=newString;
146 #ifdef debug_QGSMfragmentation // Uzhi Oct. 2014 147 G4cout<<
"abandon ... start from the beginning ---------------"<<
G4endl;
151 if (newString)
delete newString;
156 if ( loopCounter >= maxNumberOfLoops ) {
161 #ifdef debug_QGSMfragmentation // Uzhi Oct. 2014 162 G4cout<<
"Split remaining string into 2 final hadrons."<<
G4endl;
166 SplitLast(currentString,LeftVector, RightVector) )
170 delete currentString;
173 delete theStringInCMS;
185 while(!RightVector->empty())
187 LeftVector->push_back(RightVector->back());
188 RightVector->erase(RightVector->end()-1);
196 for(
size_t C1 = 0;
C1 < LeftVector->size();
C1++)
200 Momentum = toObserverFrame*Momentum;
203 Momentum = toObserverFrame*Coordinate;
const G4ParticleDefinition * GetDefinition() const
G4Parton * GetLeftParton(void) const
const G4ThreeVector & GetPosition() const
const G4LorentzVector & Get4Momentum() const
virtual G4bool StopFragmenting(const G4FragmentingString *const string)
virtual G4bool SplitLast(G4FragmentingString *string, G4KineticTrackVector *LeftVector, G4KineticTrackVector *RightVector)
G4ExcitedString * CPExcited(const G4ExcitedString &string)
void SetFormationTime(G4double aFormationTime)
G4int StringLoopInterrupt
G4double GetFormationTime() const
G4LorentzVector Get4Momentum() const
G4Parton * GetRightParton(void) const
const G4String & GetParticleName() const
G4GLOB_DLL std::ostream G4cout
G4KineticTrackVector * LightFragmentationTest(const G4ExcitedString *const theString)
G4LorentzRotation TransformToAlignedCms()
void SetPosition(const G4ThreeVector aPosition)
void Set4Momentum(const G4LorentzVector &a4Momentum)
HepLorentzRotation inverse() const
G4int GetDirection(void) const
void CalculateHadronTimePosition(G4double theInitialStringMass, G4KineticTrackVector *)
const G4ThreeVector & GetPosition() const
G4KineticTrack * Splitup(G4FragmentingString *string, G4FragmentingString *&newString)
G4int GetDecayDirection() const
const G4LorentzVector & Get4Momentum() const