101{
102
103
104
105
106
107 G4cout << " Pion `model' applied\n" << G4endl;
108
109
110
111
112
113
115 G4double distance;
116 distance = fastTrack.GetEnvelopeSolid()->
117 DistanceToOut(fastTrack.GetPrimaryTrackLocalPosition(),
118 fastTrack.GetPrimaryTrackLocalDirection());
119 position = fastTrack.GetPrimaryTrackLocalPosition() +
120 distance*fastTrack.GetPrimaryTrackLocalDirection();
121
122
123 fastStep.ProposePrimaryTrackFinalPosition(
position);
124
125
126
127
128
129
130 fastStep.SetNumberOfSecondaryTracks(1);
131
132
133
134
135
136 G4ParticleMomentum direction(fastTrack.GetPrimaryTrackLocalDirection());
137 direction.setZ(direction.z()*0.5);
138 direction.setY(direction.y()+direction.z()*0.1);
139 direction = direction.unit();
140
141
142
144 direction,
145 fastTrack.GetPrimaryTrack()->
146 GetKineticEnergy()/2.);
147
148 G4double Dist;
149 Dist = fastTrack.GetEnvelopeSolid()->
150 DistanceToOut(fastTrack.GetPrimaryTrackLocalPosition(),
151 direction);
152 G4ThreeVector posi;
153 posi = fastTrack.GetPrimaryTrackLocalPosition() + Dist*direction;
154
155
156
157
158 fastStep.CreateSecondaryTrack(dynamique, posi,
159 fastTrack.GetPrimaryTrack()->GetGlobalTime());
160}