48 :theListOfSecondaries(0),
49 theNumberOfSecondaries(0),
53 theLocalEnergyDeposit(0.0),
54 theNonIonizingEnergyDeposit(0.0),
55 theTrueStepLength(0.0),
56 theFirstStepInVolume(
false),
57 theLastStepInVolume(
false),
59 isParentWeightProposed(
false),
60 fSetSecondaryWeightByProcess(
false),
61 theParentGlobalTime(0.0),
77 G4cout <<
"G4VParticleChange::~G4VParticleChange() Warning ";
78 G4cout <<
"theListOfSecondaries is not empty ";
82 delete (*theListOfSecondaries)[index] ;
89 :theListOfSecondaries(0),
90 theNumberOfSecondaries(0),
92 theStatusChange( right.theStatusChange),
93 theSteppingControlFlag(right.theSteppingControlFlag),
94 theLocalEnergyDeposit(right.theLocalEnergyDeposit),
95 theNonIonizingEnergyDeposit(right.theNonIonizingEnergyDeposit),
96 theTrueStepLength(right.theTrueStepLength),
97 theFirstStepInVolume( right.theFirstStepInVolume),
98 theLastStepInVolume(right.theLastStepInVolume),
99 theParentWeight(right.theParentWeight),
100 isParentWeightProposed(
false),
101 fSetSecondaryWeightByProcess(right.fSetSecondaryWeightByProcess),
102 theParentGlobalTime(0.0),
103 verboseLevel(right.verboseLevel),
104 debugFlag(right.debugFlag)
121 G4cout <<
"G4VParticleChange: assignment operator Warning ";
122 G4cout <<
"theListOfSecondaries is not empty ";
185 G4cout <<
"G4VParticleChange::AddSecondary() Warning ";
192 "Secondary Bug is full. The track is deleted");
256 G4cout <<
" -----------------------------------------------"
258 G4cout <<
" G4ParticleChange Information " << std::setw(20) <<
G4endl;
259 G4cout <<
" -----------------------------------------------"
262 G4cout <<
" # of 2ndaries : "
267 G4cout <<
" Pointer to 2ndaries : "
270 G4cout <<
" (Showed only 1st one)"
273 G4cout <<
" -----------------------------------------------"
276 G4cout <<
" Energy Deposit (MeV): "
280 G4cout <<
" Non-ionizing Energy Deposit (MeV): "
284 G4cout <<
" Track Status : "
289 G4cout <<
" StopButAlive";
293 G4cout <<
" KillTrackAndSecondaries";
297 G4cout <<
" PostponeToNextEvent";
300 G4cout <<
" True Path Length (mm) : "
303 G4cout <<
" Stepping Control : "
322 G4bool exitWithError =
false;
326 const G4int maxError = 30;
330 G4bool itsOKforEnergy =
true;
333 itsOKforEnergy =
false;
337 if (nError < maxError) {
338 G4cout <<
" G4VParticleChange::CheckIt : ";
339 G4cout <<
"the energy deposit is negative !!"
340 <<
" Difference: " << accuracy <<
"[MeV] " <<
G4endl;
341 G4cout << aTrack.GetDefinition()->GetParticleName()
342 <<
" E=" << aTrack.GetKineticEnergy()/
MeV
343 <<
" pos=" << aTrack.GetPosition().x()/
m
344 <<
", " << aTrack.GetPosition().y()/
m
345 <<
", " << aTrack.GetPosition().z()/
m
352 G4bool itsOKforStepLength =
true;
355 itsOKforStepLength =
false;
359 if (nError < maxError) {
360 G4cout <<
" G4VParticleChange::CheckIt : ";
361 G4cout <<
"the true step length is negative !!"
362 <<
" Difference: " << accuracy <<
"[MeV] " <<
G4endl;
363 G4cout << aTrack.GetDefinition()->GetParticleName()
364 <<
" E=" << aTrack.GetKineticEnergy()/
MeV
365 <<
" pos=" << aTrack.GetPosition().x()/
m
366 <<
", " << aTrack.GetPosition().y()/
m
367 <<
", " << aTrack.GetPosition().z()/
m
374 if (!itsOKforStepLength || !itsOKforEnergy ){
384 "Step length and/or energy deposit was illegal");
388 if ( !itsOKforStepLength ) {
391 if ( !itsOKforEnergy ) {
394 return (itsOKforStepLength && itsOKforEnergy );
399 G4bool exitWithError =
false;
403 const G4int maxError = 30;
407 G4bool itsOKforMomentum =
true;
411 itsOKforMomentum =
false;
415 if (nError < maxError) {
416 G4cout <<
" G4VParticleChange::CheckSecondary : ";
417 G4cout <<
"the Momentum direction is not unit vector !! "
418 <<
" Difference: " << accuracy <<
G4endl;
431 G4bool itsOKforEnergy =
true;
434 itsOKforEnergy =
false;
438 if (nError < maxError) {
439 G4cout <<
" G4VParticleChange::CheckSecondary : ";
440 G4cout <<
"the kinetic energy is negative !!"
441 <<
" Difference: " << accuracy <<
"[MeV] " <<
G4endl;
442 G4cout <<
" G4VParticleChange::CheckSecondary : ";
443 G4cout <<
"the global time of secondary is earlier than the parent !!"
444 <<
" Difference: " << accuracy <<
"[ns] " <<
G4endl;
455 G4bool itsOKforTiming =
true;
459 itsOKforTiming =
false;
463 if (nError < maxError) {
464 G4cout <<
" G4VParticleChange::CheckSecondary : ";
465 G4cout <<
"the global time of secondary goes back comapared to the parent !!"
466 <<
" Difference: " << accuracy <<
"[ns] " <<
G4endl;
483 "Secondary with illegal energy/momentum ");
486 G4bool itsOK = itsOKforMomentum && itsOKforEnergy && itsOKforTiming;
489 if (!itsOKforMomentum) {
493 if (!itsOKforEnergy) {