107{
111 sclambda *= -1;
112 scphi += CLHEP::pi;
113 }
114 G4double cosLambda = std::cos( sclambda );
115 G4double sinLambda = std::sin( sclambda );
116 G4double sinPhi = std::sin( scphi );
117 G4double cosPhi = std::cos( scphi );
118
119#ifdef G4EVERBOSE
121#endif
122
123 G4ThreeVector vTN( cosLambda*cosPhi, cosLambda*sinPhi,sinLambda );
125 G4ThreeVector vVN( -vTN.z()*vUN.y(),vTN.z()*vUN.x(), cosLambda );
126
127#ifdef G4EVERBOSE
128 if(
iverbose >= 4)
G4cout <<
" SC2SD: vTN " << vTN <<
" vUN " << vUN <<
" vVN " << vVN <<
G4endl;
129#endif
134
135
136
138
140
142
143#ifdef G4EVERBOSE
145#endif
146 G4double T1R = 1. / ( vTN * vectorU );
147
156 if( magH != 0. ) {
159#ifdef G4EVERBOSE
160 if(
iverbose >= 4)
G4cout << GeV <<
" Q " << Q <<
" magHM " << magHM <<
" c_light/(km/ns) " << c_light/(km/
ns) <<
G4endl;
161#endif
162
168#ifdef G4EVERBOSE
171 G4cout <<
" UI " << UI <<
" VI " << VI <<
" vectorU " << vectorU <<
G4endl;
174 }
175#endif
176
177 transfM[1][3] = -UI*( VK*cosz-UK*sinz)*T3R;
178 transfM[1][4] = -VI*( VK*cosz-UK*sinz)*T3R;
179 transfM[2][3] = UI*( VJ*cosz-UJ*sinz)*T3R;
180 transfM[2][4] = VI*( VJ*cosz-UJ*sinz)*T3R;
181 }
182 }
183
185 transfM[0][0] = 1.;
186 transfM[1][1] = -UK*T2R;
187 transfM[1][2] = VK*cosLambda*T2R;
188 transfM[2][1] = UJ*T2R;
189 transfM[2][2] = -VJ*cosLambda*T2R;
190 transfM[3][3] = VK*T1R;
191 transfM[3][4] = -UK*T1R;
192 transfM[4][3] = -VJ*T1R;
193 transfM[4][4] = UJ*T1R;
194
195#ifdef G4EVERBOSE
197#endif
199
200#ifdef G4EVERBOSE
203#endif
204
205}
@ G4ErrorMode_PropBackwards
G4ErrorSymMatrix G4ErrorTrajErr
CLHEP::Hep3Vector G4ThreeVector
G4DLLIMPORT std::ostream G4cout
G4double GetLambda() const
G4ErrorFreeTrajParam GetParameters() const
static G4ErrorPropagatorData * GetErrorPropagatorData()
G4ErrorSymMatrix similarity(const G4ErrorMatrix &m1) const
G4ErrorTrajErr GetError() const
const G4Field * GetDetectorField() const
virtual void GetFieldValue(const double Point[4], double *fieldArr) const =0
static G4TransportationManager * GetTransportationManager()
G4FieldManager * GetFieldManager() const
BasicVector3D< T > cross(const BasicVector3D< T > &v) const