Geant4 11.2.2
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4ErrorTrajState.cc
Go to the documentation of this file.
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26//
27// ------------------------------------------------------------
28// GEANT 4 class implementation file
29// ------------------------------------------------------------
30//
31
32#include "G4ErrorTrajState.hh"
33#include "G4ParticleTable.hh"
36
37#include <iomanip>
38
39//--------------------------------------------------------------------------
41 const G4Point3D& pos, const G4Vector3D& mom,
42 const G4ErrorTrajErr& errmat)
43 : fParticleType(partType)
44 , fPosition(pos)
45 , fMomentum(mom)
46 , fError(errmat)
47 , theTSType(G4eTS_FREE)
48{
50}
51
52//--------------------------------------------------------------------------
54
55//--------------------------------------------------------------------------
57 : fParticleType(ts.fParticleType)
58 , fPosition(ts.fPosition)
59 , fMomentum(ts.fMomentum)
60 , fCharge(ts.fCharge)
61 , fError(ts.fError)
62 , theTSType(ts.theTSType)
63 , theG4Track(ts.theG4Track)
64 , iverbose(ts.iverbose)
65{
66 // Release data from source object
67 ts.theG4Track = nullptr;
68}
69
70//--------------------------------------------------------------------------
72{
73 if(this != &ts)
74 {
78 fCharge = ts.fCharge;
79 fError = ts.fError;
81 iverbose = ts.iverbose;
82 delete theG4Track;
83 theG4Track = new G4Track(*ts.theG4Track);
84 }
85 return *this;
86}
87
88//--------------------------------------------------------------------------
90{
91 if(this != &ts)
92 {
93 fParticleType = ts.fParticleType;
94 fPosition = ts.fPosition;
95 fMomentum = ts.fMomentum;
96 fCharge = ts.fCharge;
97 fError = ts.fError;
98 theTSType = ts.theTSType;
99 iverbose = ts.iverbose;
100 delete theG4Track;
101 theG4Track = ts.theG4Track;
102
103 // Release data from source object
104 ts.theG4Track = nullptr;
105 }
106 return *this;
107}
108
109//--------------------------------------------------------------------------
111{
112 std::ostringstream message;
113 message << "Wrong trajectory state type !" << G4endl
114 << "Called for trajectory state type: " << G4int(GetTSType());
115 G4Exception("G4ErrorTrajState::PropagateError()", "GEANT4e-Error",
116 FatalException, message);
117 return -1;
118}
119
120//--------------------------------------------------------------------------
122{
123 fPosition = pos;
124 fMomentum = mom;
125}
126
127//--------------------------------------------------------------------------
128void G4ErrorTrajState::SetData(const G4String& partType, const G4Point3D& pos,
129 const G4Vector3D& mom)
130{
131 fParticleType = partType;
132 BuildCharge();
133 fPosition = pos;
134 fMomentum = mom;
135}
136
137//--------------------------------------------------------------------------
139{
141 G4ParticleDefinition* particle = particleTable->FindParticle(fParticleType);
142 if(particle == nullptr)
143 {
144 std::ostringstream message;
145 message << "Particle type not defined: " << fParticleType;
146 G4Exception("G4ErrorTrajState::BuildCharge()", "GEANT4e-error",
147 FatalException, message);
148 }
149 else
150 {
151 fCharge = particle->GetPDGCharge();
152 }
153}
154
155//------------------------------------------------------------------------
156void G4ErrorTrajState::DumpPosMomError(std::ostream& out) const
157{
158 out << *this;
159}
160
161//--------------------------------------------------------------------------
162std::ostream& operator<<(std::ostream& out, const G4ErrorTrajState& ts)
163{
164 // long mode = out.setf(std::ios::fixed,std::ios::floatfield);
165 out << " G4ErrorTrajState of type " << ts.theTSType
166 << " : partycle: " << ts.fParticleType << " position: " << std::setw(6)
167 << ts.fPosition << " momentum: " << ts.fMomentum
168 << " error matrix ";
169 G4cout << ts.fError << G4endl;
170
171 return out;
172}
std::ostream & operator<<(std::ostream &out, const G4ErrorTrajState &ts)
@ G4eTS_FREE
@ FatalException
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
int G4int
Definition G4Types.hh:85
#define G4endl
Definition G4ios.hh:67
G4GLOB_DLL std::ostream G4cout
void DumpPosMomError(std::ostream &out=G4cout) const
G4ErrorTrajErr fError
virtual G4int PropagateError(const G4Track *)
void UpdatePosMom(const G4Point3D &pos, const G4Vector3D &mom)
void SetData(const G4String &partType, const G4Point3D &pos, const G4Vector3D &mom)
G4ErrorTrajState & operator=(const G4ErrorTrajState &)
virtual G4eTSType GetTSType() const
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
static G4ParticleTable * GetParticleTable()