Geant4 Cross Reference |
1 // 1 2 // ******************************************* 3 // * License and Disclaimer 4 // * 5 // * The Geant4 software is copyright of th 6 // * the Geant4 Collaboration. It is provided 7 // * conditions of the Geant4 Software License 8 // * LICENSE and available at http://cern.ch/ 9 // * include a list of copyright holders. 10 // * 11 // * Neither the authors of this software syst 12 // * institutes,nor the agencies providing fin 13 // * work make any representation or warran 14 // * regarding this software system or assum 15 // * use. Please see the license in the file 16 // * for the full disclaimer and the limitatio 17 // * 18 // * This code implementation is the result 19 // * technical work of the GEANT4 collaboratio 20 // * By using, copying, modifying or distri 21 // * any work based on the software) you ag 22 // * use in resulting scientific publicati 23 // * acceptance of all terms of the Geant4 Sof 24 // ******************************************* 25 // 26 // 27 // ------------------------------------------- 28 // GEANT 4 class implementation file 29 // ------------------------------------------- 30 // 31 32 #include "G4ErrorTrajState.hh" 33 #include "G4ParticleTable.hh" 34 #include "G4ParticleDefinition.hh" 35 #include "G4ErrorPropagatorData.hh" 36 37 #include <iomanip> 38 39 //-------------------------------------------- 40 G4ErrorTrajState::G4ErrorTrajState(const G4Str 41 const G4Poi 42 const G4Err 43 : fParticleType(partType) 44 , fPosition(pos) 45 , fMomentum(mom) 46 , fError(errmat) 47 , theTSType(G4eTS_FREE) 48 { 49 iverbose = G4ErrorPropagatorData::verbose(); 50 } 51 52 //-------------------------------------------- 53 G4ErrorTrajState::G4ErrorTrajState(const G4Err 54 55 //-------------------------------------------- 56 G4ErrorTrajState::G4ErrorTrajState(G4ErrorTraj 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 //-------------------------------------------- 71 G4ErrorTrajState& G4ErrorTrajState::operator=( 72 { 73 if(this != &ts) 74 { 75 fParticleType = ts.fParticleType; 76 fPosition = ts.fPosition; 77 fMomentum = ts.fMomentum; 78 fCharge = ts.fCharge; 79 fError = ts.fError; 80 theTSType = ts.theTSType; 81 iverbose = ts.iverbose; 82 delete theG4Track; 83 theG4Track = new G4Track(*ts.theG4Track); 84 } 85 return *this; 86 } 87 88 //-------------------------------------------- 89 G4ErrorTrajState& G4ErrorTrajState::operator=( 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 //-------------------------------------------- 110 G4int G4ErrorTrajState::PropagateError(const G 111 { 112 std::ostringstream message; 113 message << "Wrong trajectory state type !" < 114 << "Called for trajectory state type 115 G4Exception("G4ErrorTrajState::PropagateErro 116 FatalException, message); 117 return -1; 118 } 119 120 //-------------------------------------------- 121 void G4ErrorTrajState::UpdatePosMom(const G4Po 122 { 123 fPosition = pos; 124 fMomentum = mom; 125 } 126 127 //-------------------------------------------- 128 void G4ErrorTrajState::SetData(const G4String& 129 const G4Vector3 130 { 131 fParticleType = partType; 132 BuildCharge(); 133 fPosition = pos; 134 fMomentum = mom; 135 } 136 137 //-------------------------------------------- 138 void G4ErrorTrajState::BuildCharge() 139 { 140 G4ParticleTable* particleTable = G4ParticleT 141 G4ParticleDefinition* particle = particleTab 142 if(particle == nullptr) 143 { 144 std::ostringstream message; 145 message << "Particle type not defined: " < 146 G4Exception("G4ErrorTrajState::BuildCharge 147 FatalException, message); 148 } 149 else 150 { 151 fCharge = particle->GetPDGCharge(); 152 } 153 } 154 155 //-------------------------------------------- 156 void G4ErrorTrajState::DumpPosMomError(std::os 157 { 158 out << *this; 159 } 160 161 //-------------------------------------------- 162 std::ostream& operator<<(std::ostream& out, co 163 { 164 // long mode = out.setf(std::ios::fixed,std 165 out << " G4ErrorTrajState of type " << ts.th 166 << " : partycle: " << ts.fParticleType < 167 << ts.fPosition << " moment 168 << " error matrix "; 169 G4cout << ts.fError << G4endl; 170 171 return out; 172 } 173