MCPcopy Create free account
hub / github.com/Geant4/geant4 / PushToStack

Method PushToStack

source/event/src/G4SmartTrackStack.cc:101–137  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

99};
100
101void G4SmartTrackStack::PushToStack( const G4StackedTrack& aStackedTrack )
102{
103
104 G4int iDest = 0;
105 if (aStackedTrack.GetTrack()->GetParentID() != 0)
106 {
107 G4int code = aStackedTrack.GetTrack()->GetDynamicParticle()->GetPDGcode();
108 if (code == electronCode)
109 iDest = 2;
110 else if (code == gammaCode)
111 iDest = 3;
112 else if (code == positronCode)
113 iDest = 4;
114 else if (code == neutronCode)
115 iDest = 1;
116 }
117 else
118 {
119 // We have a primary track, which should go first.
120 fTurn = 0; // reseting the turn
121 }
122 stacks[iDest]->PushToStack(aStackedTrack);
123 energies[iDest] += aStackedTrack.GetTrack()->GetDynamicParticle()->GetTotalEnergy();
124 ++nTracks;
125
126 G4long dy1 = stacks[iDest]->GetNTrack() - stacks[iDest]->GetSafetyValue1();
127 G4long dy2 = stacks[fTurn]->GetNTrack() - stacks[fTurn]->GetSafetyValue2();
128
129 if (dy1 > 0 || dy1 > dy2 ||
130 (iDest == 2 &&
131 stacks[iDest]->GetNTrack() < 50 && energies[iDest] < energies[fTurn]))
132 {
133 fTurn = iDest;
134 }
135
136 if (nTracks > maxNTracks) maxNTracks = nTracks;
137}
138
139void G4SmartTrackStack::clear()
140{

Callers 3

SortOutMethod · 0.45
TransferToMethod · 0.45

Calls 7

GetSafetyValue1Method · 0.80
GetSafetyValue2Method · 0.80
GetParentIDMethod · 0.45
GetTrackMethod · 0.45
GetPDGcodeMethod · 0.45
GetTotalEnergyMethod · 0.45
GetNTrackMethod · 0.45

Tested by

no test coverage detected