86{
87
91
92 if(nSteps == 0)
93 {
94 nSteps = 1;
95 materials.push_back(material);
96 steps.push_back(length);
104 if(valid)
105 normals.push_back(n);
106 else
107 normals.push_back(direction);
108 }
109 else
110 {
111 if(material == materials[nSteps - 1])
112 {
113 steps[nSteps - 1] += length;
114 }
115 else
116 {
117 ++nSteps;
118 materials.push_back(material);
119 steps.push_back(length);
124 if(valid)
125 normals.push_back(n);
126 else
127 normals.push_back(direction);
128 }
129 }
130
131
134 startingDirection.
x() * direction.
x() +
135 startingDirection.
y() * direction.
y() +
136 startingDirection.
z() * direction.
z() <
137 cosDThetaMax)
138 {
139 if(model)
140 {
142 startingPosition, track);
143 }
145 }
146
148}
virtual G4ThreeVector GetLocalExitNormal(G4bool *valid)
const G4ThreeVector & GetPosition() const
const G4ThreeVector & GetMomentumDirection() const
G4StepPoint * GetPreStepPoint() const
G4double GetStepLength() const
G4TrackStatus GetTrackStatus() const
G4Material * GetMaterial() const
const G4ThreeVector & GetMomentumDirection() const
static G4TransportationManager * GetTransportationManager()
G4Navigator * GetNavigatorForTracking() const
G4VParticleChange * pParticleChange
virtual void GenerateSecondaries(G4VParticleChange &pChange, std::vector< const G4Material * > &materials, std::vector< G4double > &steps, std::vector< G4ThreeVector > &normals, G4ThreeVector &startingPosition, const G4Track &track)