71 G4Exception(
"G4FTFParticipants::G4FTFParticipants()",
"HAD_FTF_001",
86 #ifdef debugFTFparticipant
92 if ( betta_z < 1.0
e-10 ) betta_z = 1.0e-10;
103 G4double impactX( 0.0 ), impactY( 0.0 );
107 #ifdef debugFTFparticipant
108 G4cout <<
"Hadron-nucleus or anti-baryon-nucleus interactions" <<
G4endl;
114 const G4int maxNumberOfLoops = 1000;
115 G4int loopCounter = 0;
118 std::pair< G4double, G4double > theImpactParameter;
120 impactX = theImpactParameter.first;
121 impactY = theImpactParameter.second;
123 #ifdef debugFTFparticipant
124 G4cout <<
"New interaction list," <<
" b= "
134 #ifdef debugFTFparticipant
149 nucleon->
Hit( targetSplitable );
152 #ifdef debugFTFparticipant
153 G4cout <<
"Participated nucleons #, " << TrN <<
" " <<
"Splitable Pr* Tr* "
154 << primarySplitable <<
" " << targetSplitable <<
G4endl;
161 aInteraction->
SetTarget( targetSplitable );
169 #ifdef debugFTFparticipant
176 ++loopCounter < maxNumberOfLoops );
177 if ( loopCounter >= maxNumberOfLoops ) {
178 #ifdef debugFTFparticipant
179 G4cout <<
"BAD situation: forced exit from the while loop!" <<
G4endl;
184 #ifdef debugFTFparticipant
186 <<
"\t By " << impactY/
fermi <<
"\t B "
198 #ifdef debugFTFparticipant
208 G4double impactX( 0.0 ), impactY( 0.0 );
210 const G4int maxNumberOfLoops = 1000;
211 G4int loopCounter = 0;
214 std::pair< G4double, G4double > theImpactParameter;
216 impactX = theImpactParameter.first;
217 impactY = theImpactParameter.second;
219 #ifdef debugFTFparticipant
220 G4cout <<
"New interaction list, " <<
"b "
229 #ifdef debugFTFparticipant
239 #ifdef debugFTFparticipant
253 #ifdef debugFTFparticipant
254 G4cout << G4endl <<
"An Interaction has happend" << G4endl <<
"Proj N mom " << PrNuclN
255 <<
" " << ProjectileNucleon->
Get4Momentum() <<
"-------------" << G4endl
256 <<
"Targ N mom " << TrNuclN <<
" " << TargetNucleon->
Get4Momentum() << G4endl
263 if ( ! ProjectileNucleon->
AreYouHit() ) {
266 ProjectileNucleon->
Hit( ProjectileSplitable );
274 TargetNucleon->
Hit( TargetSplitable );
275 TargetSplitable->SetStatus( 1 );
281 anInteraction->
SetTarget( TargetSplitable );
288 #ifdef debugFTFparticipant
289 G4cout <<
"Part anInteraction->GetInteractionTime() "
291 <<
"Splitable Pr* Tr* " << ProjectileSplitable <<
" "
292 << TargetSplitable <<
G4endl;
299 #ifdef debugFTFparticipant
305 #ifdef debugFTFparticipant
314 ++loopCounter < maxNumberOfLoops );
315 if ( loopCounter >= maxNumberOfLoops ) {
316 #ifdef debugFTFparticipant
317 G4cout <<
"BAD situation: forced exit from the while loop!" <<
G4endl;
325 #ifdef debugFTFparticipant
327 <<
"\t Bx " << impactX/
fermi <<
"\t By " << impactY/
fermi
328 <<
"\t B " << std::sqrt(
sqr( impactX ) +
sqr( impactY ) )/
fermi << G4endl
329 <<
"FTF participant End. #######################" << G4endl <<
G4endl;
void SetStatus(const G4int aStatus)
void SetStatus(G4int aValue)
void SetInteractionTime(G4double aValue)
bool G4FTFPartHelperForSortInT(const G4InteractionContent *Int1, const G4InteractionContent *Int2)
std::pair< G4double, G4double > ChooseImpactXandY(G4double maxImpact)
G4VSplitableHadron * GetTarget() const
void GetList(const G4ReactionProduct &thePrimary, G4FTFParameters *theParameters)
G4bool nucleon(G4int ityp)
G4double GetInteractionTime() const
G4V3DNucleus * theProjectileNucleus
G4VSplitableHadron * GetSplitableHadron() const
G4VSplitableHadron * GetProjectile() const
const G4ThreeVector & GetPosition() const
G4double GetTotalEnergy() const
static constexpr double fermi
void SetTimeOfCreation(G4double aTime)
const G4ThreeVector & GetPosition() const
std::vector< G4InteractionContent * > theInteractions
G4ThreeVector GetMomentum() const
G4double GetProbabilityOfInteraction(const G4double impactsquare)
virtual G4Nucleon * GetNextNucleon()=0
virtual const G4LorentzVector & Get4Momentum() const
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
void Hit(G4VSplitableHadron *aHit)
void SetTarget(G4VSplitableHadron *aTarget)
void SetPosition(const G4ThreeVector &aPosition)
void ShiftInteractionTime()
void SetProjectileNucleon(G4Nucleon *aNucleon)
virtual void DoTranslation(const G4ThreeVector &theShift)=0
G4GLOB_DLL std::ostream G4cout
void SetTargetNucleon(G4Nucleon *aNucleon)
virtual G4double GetOuterRadius()=0
virtual G4bool StartLoop()=0
void SortInteractionsIncT()
G4V3DNucleus * theNucleus