105{
109 sclambda *= -1;
110 scphi += CLHEP::pi;
111 }
112 G4double cosLambda = std::cos( sclambda );
113 G4double sinLambda = std::sin( sclambda );
114 G4double sinPhi = std::sin( scphi );
115 G4double cosPhi = std::cos( scphi );
116
117#ifdef G4EVERBOSE
119#endif
120
121 G4ThreeVector vTN( cosLambda*cosPhi, cosLambda*sinPhi,sinLambda );
123 G4ThreeVector vVN( -vTN.z()*vUN.y(),vTN.z()*vUN.x(), cosLambda );
124
125#ifdef G4EVERBOSE
126 if(
iverbose >= 4)
G4cout <<
" SC2SD: vTN " << vTN <<
" vUN " << vUN <<
" vVN " << vVN <<
G4endl;
127#endif
132
133
134
136
138
140 G4double T1R = 1. / ( vTN * vectorU );
141
142#ifdef G4EVERBOSE
144#endif
145
146
155 if( magH != 0. ) {
158#ifdef G4EVERBOSE
159 if(
iverbose >= 4)
G4cout << GeV <<
" Q " << Q <<
" magHM " << magHM <<
" c_light/(km/ns) " << c_light/(km/
ns) <<
G4endl;
160#endif
161
167#ifdef G4EVERBOSE
170 G4cout <<
" UI " << UI <<
" VI " << VI <<
" vectorU " << vectorU <<
G4endl;
173 }
174#endif
175
176 transfM[1][3] = -UI*( VK*cosz-UK*sinz)*T3R;
177 transfM[1][4] = -VI*( VK*cosz-UK*sinz)*T3R;
178 transfM[2][3] = UI*( VJ*cosz-UJ*sinz)*T3R;
179 transfM[2][4] = VI*( VJ*cosz-UJ*sinz)*T3R;
180 }
181 }
182
184 transfM[0][0] = 1.;
185 transfM[1][1] = -UK*T2R;
186 transfM[1][2] = VK*cosLambda*T2R;
187 transfM[2][1] = UJ*T2R;
188 transfM[2][2] = -VJ*cosLambda*T2R;
189 transfM[3][3] = VK*T1R;
190 transfM[3][4] = -UK*T1R;
191 transfM[4][3] = -VJ*T1R;
192 transfM[4][4] = UJ*T1R;
193
194#ifdef G4EVERBOSE
196#endif
198
199#ifdef G4EVERBOSE
202#endif
203
204 return transfM;
205}
@ G4ErrorMode_PropBackwards
G4ErrorSymMatrix G4ErrorTrajErr
CLHEP::Hep3Vector G4ThreeVector
G4GLOB_DLL 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 G4double Point[4], G4double *fieldArr) const =0
static G4TransportationManager * GetTransportationManager()
G4FieldManager * GetFieldManager() const
BasicVector3D< T > cross(const BasicVector3D< T > &v) const