Geant4 11.2.2
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4ErrorSurfaceTrajState Class Reference

#include <G4ErrorSurfaceTrajState.hh>

+ Inheritance diagram for G4ErrorSurfaceTrajState:

Public Member Functions

 G4ErrorSurfaceTrajState (const G4String &partType, const G4Point3D &pos, const G4Vector3D &mom, const G4Plane3D &plane, const G4ErrorTrajErr &errmat=G4ErrorTrajErr(5, 0))
 
 G4ErrorSurfaceTrajState (const G4String &partType, const G4Point3D &pos, const G4Vector3D &mom, const G4Vector3D &vecV, const G4Vector3D &vecW, const G4ErrorTrajErr &errmat=G4ErrorTrajErr(5, 0))
 
 G4ErrorSurfaceTrajState (G4ErrorFreeTrajState &tpSC, const G4Plane3D &plane)
 
 G4ErrorSurfaceTrajState (G4ErrorFreeTrajState &tpSC, const G4Vector3D &vecV, const G4Vector3D &vecW, G4ErrorMatrix &transfM)
 
 ~G4ErrorSurfaceTrajState ()
 
G4ErrorMatrix BuildErrorMatrix (G4ErrorFreeTrajState &tpSC, const G4Vector3D &vecV, const G4Vector3D &vecW)
 
virtual void Dump (std::ostream &out=G4cout) const
 
G4ErrorSurfaceTrajParam GetParameters () const
 
void SetParameters (const G4Point3D &pos, const G4Vector3D &mom, const G4Vector3D &vecV, const G4Vector3D &vecW)
 
void SetParameters (const G4Point3D &pos, const G4Vector3D &mom, const G4Plane3D &plane)
 
G4Vector3D GetVectorV () const
 
G4Vector3D GetVectorW () const
 
virtual void SetPosition (const G4Point3D pos)
 
virtual void SetMomentum (const G4Vector3D &mom)
 
- Public Member Functions inherited from G4ErrorTrajState
 G4ErrorTrajState ()
 
 G4ErrorTrajState (const G4String &partType, const G4Point3D &pos, const G4Vector3D &mom, const G4ErrorTrajErr &errmat=G4ErrorTrajErr(5, 0))
 
 G4ErrorTrajState (const G4ErrorTrajState &)
 
 G4ErrorTrajState (G4ErrorTrajState &&)
 
virtual ~G4ErrorTrajState ()
 
G4ErrorTrajStateoperator= (const G4ErrorTrajState &)
 
G4ErrorTrajStateoperator= (G4ErrorTrajState &&)
 
void SetData (const G4String &partType, const G4Point3D &pos, const G4Vector3D &mom)
 
void BuildCharge ()
 
virtual G4int PropagateError (const G4Track *)
 
virtual G4int Update (const G4Track *)
 
void UpdatePosMom (const G4Point3D &pos, const G4Vector3D &mom)
 
void DumpPosMomError (std::ostream &out=G4cout) const
 
const G4StringGetParticleType () const
 
void SetParticleType (const G4String &partType)
 
G4Point3D GetPosition () const
 
G4Vector3D GetMomentum () const
 
G4ErrorTrajErr GetError () const
 
virtual void SetError (G4ErrorTrajErr em)
 
G4TrackGetG4Track () const
 
void SetG4Track (G4Track *trk)
 
G4double GetCharge () const
 
void SetCharge (G4double ch)
 
virtual G4eTSType GetTSType () const
 

Friends

std::ostream & operator<< (std::ostream &out, const G4ErrorSurfaceTrajState &ts)
 

Additional Inherited Members

- Protected Attributes inherited from G4ErrorTrajState
G4String fParticleType
 
G4Point3D fPosition
 
G4Vector3D fMomentum
 
G4double fCharge = 0.
 
G4ErrorTrajErr fError
 
G4eTSType theTSType
 
G4TracktheG4Track = nullptr
 
G4int iverbose = 0
 

Detailed Description

Definition at line 55 of file G4ErrorSurfaceTrajState.hh.

Constructor & Destructor Documentation

◆ G4ErrorSurfaceTrajState() [1/4]

G4ErrorSurfaceTrajState::G4ErrorSurfaceTrajState ( const G4String & partType,
const G4Point3D & pos,
const G4Vector3D & mom,
const G4Plane3D & plane,
const G4ErrorTrajErr & errmat = G4ErrorTrajErr(5, 0) )

Definition at line 56 of file G4ErrorSurfaceTrajState.cc.

61 : G4ErrorTrajState(partType, pos, mom, errmat)
62{
63 Init();
64 fTrajParam = G4ErrorSurfaceTrajParam(pos, mom, plane);
65}

◆ G4ErrorSurfaceTrajState() [2/4]

G4ErrorSurfaceTrajState::G4ErrorSurfaceTrajState ( const G4String & partType,
const G4Point3D & pos,
const G4Vector3D & mom,
const G4Vector3D & vecV,
const G4Vector3D & vecW,
const G4ErrorTrajErr & errmat = G4ErrorTrajErr(5, 0) )

Definition at line 46 of file G4ErrorSurfaceTrajState.cc.

49 : G4ErrorTrajState(partType, pos, mom, errmat)
50{
51 Init();
52 fTrajParam = G4ErrorSurfaceTrajParam(pos, mom, vecU, vecV);
53}

◆ G4ErrorSurfaceTrajState() [3/4]

G4ErrorSurfaceTrajState::G4ErrorSurfaceTrajState ( G4ErrorFreeTrajState & tpSC,
const G4Plane3D & plane )

Definition at line 68 of file G4ErrorSurfaceTrajState.cc.

71 tpSC.GetMomentum())
72{
73 // fParticleType = tpSC.GetParticleType();
74 // fPosition = tpSC.GetPosition();
75 // fMomentum = tpSC.GetMomentum();
76 fTrajParam = G4ErrorSurfaceTrajParam(fPosition, fMomentum, plane);
77 Init();
78
79 //----- Get the error matrix in SC coordinates
81}
G4ErrorMatrix BuildErrorMatrix(G4ErrorFreeTrajState &tpSC, const G4Vector3D &vecV, const G4Vector3D &vecW)
G4Vector3D GetMomentum() const
const G4String & GetParticleType() const
G4Point3D GetPosition() const

◆ G4ErrorSurfaceTrajState() [4/4]

G4ErrorSurfaceTrajState::G4ErrorSurfaceTrajState ( G4ErrorFreeTrajState & tpSC,
const G4Vector3D & vecV,
const G4Vector3D & vecW,
G4ErrorMatrix & transfM )

Definition at line 84 of file G4ErrorSurfaceTrajState.cc.

89 tpSC.GetMomentum())
90{
91 Init(); // needed to define charge sign
92 fTrajParam = G4ErrorSurfaceTrajParam(fPosition, fMomentum, vecU, vecV);
93 //----- Get the error matrix in SC coordinates
94 transfM = BuildErrorMatrix(tpSC, vecU, vecV);
95}

◆ ~G4ErrorSurfaceTrajState()

G4ErrorSurfaceTrajState::~G4ErrorSurfaceTrajState ( )
inline

Definition at line 78 of file G4ErrorSurfaceTrajState.hh.

78{}

Member Function Documentation

◆ BuildErrorMatrix()

G4ErrorMatrix G4ErrorSurfaceTrajState::BuildErrorMatrix ( G4ErrorFreeTrajState & tpSC,
const G4Vector3D & vecV,
const G4Vector3D & vecW )

Definition at line 98 of file G4ErrorSurfaceTrajState.cc.

100{
101 G4double sclambda = tpSC.GetParameters().GetLambda();
102 G4double scphi = tpSC.GetParameters().GetPhi();
105 {
106 sclambda *= -1;
107 scphi += CLHEP::pi;
108 }
109 G4double cosLambda = std::cos(sclambda);
110 G4double sinLambda = std::sin(sclambda);
111 G4double sinPhi = std::sin(scphi);
112 G4double cosPhi = std::cos(scphi);
113
114#ifdef G4EVERBOSE
115 if(iverbose >= 4)
116 G4cout << " PM " << fMomentum.mag() << " pLambda " << sclambda << " pPhi "
117 << scphi << G4endl;
118#endif
119
120 G4ThreeVector vTN(cosLambda * cosPhi, cosLambda * sinPhi, sinLambda);
121 G4ThreeVector vUN(-sinPhi, cosPhi, 0.);
122 G4ThreeVector vVN(-vTN.z() * vUN.y(), vTN.z() * vUN.x(), cosLambda);
123
124#ifdef G4EVERBOSE
125 if(iverbose >= 4)
126 G4cout << " SC2SD: vTN " << vTN << " vUN " << vUN << " vVN " << vVN
127 << G4endl;
128#endif
129 G4double UJ = vUN * GetVectorV();
130 G4double UK = vUN * GetVectorW();
131 G4double VJ = vVN * GetVectorV();
132 G4double VK = vVN * GetVectorW();
133
134 //--- Get transformation first
135 G4ErrorMatrix transfM(5, 5, 0);
136 //--- Get magnetic field
140
141 G4Vector3D vectorU = GetVectorV().cross(GetVectorW());
142 G4double T1R = 1. / (vTN * vectorU);
143
144#ifdef G4EVERBOSE
145 if(iverbose >= 4)
146 G4cout << "surf vectors:U,V,W " << vectorU << " " << GetVectorV() << " "
147 << GetVectorW() << " T1R:" << T1R << G4endl;
148#endif
149
150 if(fCharge != 0 && field)
151 {
152 G4double pos[3];
153 pos[0] = fPosition.x() * cm;
154 pos[1] = fPosition.y() * cm;
155 pos[2] = fPosition.z() * cm;
156 G4double Hd[3];
157 field->GetFieldValue(pos, Hd);
158 G4ThreeVector H =
159 G4ThreeVector(Hd[0], Hd[1], Hd[2]) / tesla * 10.; // in kilogauus
160 G4double magH = H.mag();
161 G4double invP = 1. / (fMomentum.mag() / GeV);
162 G4double magHM = magH * invP;
163 if(magH != 0.)
164 {
165 G4double magHM2 = fCharge / magH;
166 G4double Q = -magHM * c_light / (km / ns);
167#ifdef G4EVERBOSE
168 if(iverbose >= 4)
169 G4cout << GeV << " Q " << Q << " magHM " << magHM << " c_light/(km/ns) "
170 << c_light / (km / ns) << G4endl;
171#endif
172
173 G4double sinz = -H * vUN * magHM2;
174 G4double cosz = H * vVN * magHM2;
175 G4double T3R = Q * std::pow(T1R, 3);
176 G4double UI = vUN * vectorU;
177 G4double VI = vVN * vectorU;
178#ifdef G4EVERBOSE
179 if(iverbose >= 4)
180 {
181 G4cout << " T1R " << T1R << " T3R " << T3R << G4endl;
182 G4cout << " UI " << UI << " VI " << VI << " vectorU " << vectorU
183 << G4endl;
184 G4cout << " UJ " << UJ << " VJ " << VJ << G4endl;
185 G4cout << " UK " << UK << " VK " << VK << G4endl;
186 }
187#endif
188
189 transfM[1][3] = -UI * (VK * cosz - UK * sinz) * T3R;
190 transfM[1][4] = -VI * (VK * cosz - UK * sinz) * T3R;
191 transfM[2][3] = UI * (VJ * cosz - UJ * sinz) * T3R;
192 transfM[2][4] = VI * (VJ * cosz - UJ * sinz) * T3R;
193 }
194 }
195
196 G4double T2R = T1R * T1R;
197 transfM[0][0] = 1.;
198 transfM[1][1] = -UK * T2R;
199 transfM[1][2] = VK * cosLambda * T2R;
200 transfM[2][1] = UJ * T2R;
201 transfM[2][2] = -VJ * cosLambda * T2R;
202 transfM[3][3] = VK * T1R;
203 transfM[3][4] = -UK * T1R;
204 transfM[4][3] = -VJ * T1R;
205 transfM[4][4] = UJ * T1R;
206
207#ifdef G4EVERBOSE
208 if(iverbose >= 4)
209 G4cout << " SC2SD transf matrix A= " << transfM << G4endl;
210#endif
211 fError = G4ErrorTrajErr(tpSC.GetError().similarity(transfM));
212
213#ifdef G4EVERBOSE
214 if(iverbose >= 1)
215 G4cout << "G4EP: error matrix SC2SD " << fError << G4endl;
216 if(iverbose >= 4)
217 G4cout << "G4ErrorSurfaceTrajState from SC " << *this << G4endl;
218#endif
219
220 return transfM; // want to use trasnfM for the reverse transform
221}
@ G4ErrorMode_PropBackwards
G4ErrorSymMatrix G4ErrorTrajErr
CLHEP::Hep3Vector G4ThreeVector
double G4double
Definition G4Types.hh:83
#define G4endl
Definition G4ios.hh:67
G4GLOB_DLL std::ostream G4cout
double mag() const
G4ErrorFreeTrajParam GetParameters() const
static G4ErrorPropagatorData * GetErrorPropagatorData()
G4ErrorSymMatrix similarity(const G4ErrorMatrix &m1) const
G4ErrorTrajErr fError
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
#define ns(x)
Definition xmltok.c:1649

Referenced by G4ErrorSurfaceTrajState(), and G4ErrorSurfaceTrajState().

◆ Dump()

void G4ErrorSurfaceTrajState::Dump ( std::ostream & out = G4cout) const
virtual

Implements G4ErrorTrajState.

Definition at line 231 of file G4ErrorSurfaceTrajState.cc.

231{ out << *this; }

◆ GetParameters()

G4ErrorSurfaceTrajParam G4ErrorSurfaceTrajState::GetParameters ( ) const
inline

Definition at line 91 of file G4ErrorSurfaceTrajState.hh.

91{ return fTrajParam; }

Referenced by G4ErrorFreeTrajState::G4ErrorFreeTrajState().

◆ GetVectorV()

G4Vector3D G4ErrorSurfaceTrajState::GetVectorV ( ) const
inline

◆ GetVectorW()

G4Vector3D G4ErrorSurfaceTrajState::GetVectorW ( ) const
inline

◆ SetMomentum()

virtual void G4ErrorSurfaceTrajState::SetMomentum ( const G4Vector3D & mom)
inlinevirtual

Reimplemented from G4ErrorTrajState.

Definition at line 117 of file G4ErrorSurfaceTrajState.hh.

118 {
120 }
void SetParameters(const G4Point3D &pos, const G4Vector3D &mom, const G4Vector3D &vecV, const G4Vector3D &vecW)

◆ SetParameters() [1/2]

void G4ErrorSurfaceTrajState::SetParameters ( const G4Point3D & pos,
const G4Vector3D & mom,
const G4Plane3D & plane )
inline

Definition at line 100 of file G4ErrorSurfaceTrajState.hh.

102 {
103 fPosition = pos;
104 fMomentum = mom;
105 fTrajParam.SetParameters(pos, mom, plane);
106 }
void SetParameters(const G4Point3D &pos, const G4Vector3D &mom, const G4Vector3D &vecV, const G4Vector3D &vecW)

◆ SetParameters() [2/2]

void G4ErrorSurfaceTrajState::SetParameters ( const G4Point3D & pos,
const G4Vector3D & mom,
const G4Vector3D & vecV,
const G4Vector3D & vecW )
inline

Definition at line 92 of file G4ErrorSurfaceTrajState.hh.

94 {
95 fPosition = pos;
96 fMomentum = mom;
97 fTrajParam.SetParameters(pos, mom, vecV, vecW);
98 }

Referenced by SetMomentum(), and SetPosition().

◆ SetPosition()

virtual void G4ErrorSurfaceTrajState::SetPosition ( const G4Point3D pos)
inlinevirtual

Reimplemented from G4ErrorTrajState.

Definition at line 112 of file G4ErrorSurfaceTrajState.hh.

113 {
115 }

Friends And Related Symbol Documentation

◆ operator<<

std::ostream & operator<< ( std::ostream & out,
const G4ErrorSurfaceTrajState & ts )
friend

Definition at line 234 of file G4ErrorSurfaceTrajState.cc.

235{
236 std::ios::fmtflags oldFlags = out.flags();
237 out.setf(std::ios::fixed, std::ios::floatfield);
238
239 ts.DumpPosMomError(out);
240
241 out << " G4ErrorSurfaceTrajState: Params: " << ts.fTrajParam << G4endl;
242 out.flags(oldFlags);
243 return out;
244}
void DumpPosMomError(std::ostream &out=G4cout) const

The documentation for this class was generated from the following files: