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 /// \file runAndEvent/RE04/src/RE04Trajectory. 27 /// \brief Implementation of the RE04Trajector 28 // 29 // 30 #include "RE04Trajectory.hh" 31 32 #include "RE04TrajectoryPoint.hh" 33 34 #include "G4AttDef.hh" 35 #include "G4AttDefStore.hh" 36 #include "G4AttValue.hh" 37 #include "G4ParticleTable.hh" 38 #include "G4UIcommand.hh" 39 #include "G4UnitsTable.hh" 40 41 // #define G4ATTDEBUG 42 #ifdef G4ATTDEBUG 43 # include "G4AttCheck.hh" 44 #endif 45 46 G4ThreadLocal G4Allocator<RE04Trajectory>* faT 47 48 //....oooOO0OOooo........oooOO0OOooo........oo 49 RE04Trajectory::RE04Trajectory() 50 : G4VTrajectory(), 51 fPositionRecord(0), 52 fTrackID(0), 53 fParentID(0), 54 fPDGEncoding(0), 55 fPDGCharge(0.0), 56 fParticleName(""), 57 fInitialKineticEnergy(0.), 58 fInitialMomentum(G4ThreeVector()) 59 { 60 ; 61 } 62 63 //....oooOO0OOooo........oooOO0OOooo........oo 64 RE04Trajectory::RE04Trajectory(const G4Track* 65 { 66 G4ParticleDefinition* fpParticleDefinition = 67 fParticleName = fpParticleDefinition->GetPar 68 fPDGCharge = fpParticleDefinition->GetPDGCha 69 fPDGEncoding = fpParticleDefinition->GetPDGE 70 fTrackID = aTrack->GetTrackID(); 71 fParentID = aTrack->GetParentID(); 72 fInitialKineticEnergy = aTrack->GetKineticEn 73 fInitialMomentum = aTrack->GetMomentum(); 74 fPositionRecord = new TrajectoryPointContain 75 // Following is for the first trajectory poi 76 fPositionRecord->push_back(new RE04Trajector 77 } 78 79 //....oooOO0OOooo........oooOO0OOooo........oo 80 RE04Trajectory::RE04Trajectory(RE04Trajectory& 81 { 82 fParticleName = right.fParticleName; 83 fPDGCharge = right.fPDGCharge; 84 fPDGEncoding = right.fPDGEncoding; 85 fTrackID = right.fTrackID; 86 fParentID = right.fParentID; 87 fInitialKineticEnergy = right.fInitialKineti 88 fInitialMomentum = right.fInitialMomentum; 89 fPositionRecord = new TrajectoryPointContain 90 91 for (size_t i = 0; i < right.fPositionRecord 92 RE04TrajectoryPoint* rightPoint = (RE04Tra 93 fPositionRecord->push_back(new RE04Traject 94 } 95 } 96 97 //....oooOO0OOooo........oooOO0OOooo........oo 98 RE04Trajectory::~RE04Trajectory() 99 { 100 if (fPositionRecord) { 101 // fPositionRecord->clearAndDestroy(); 102 size_t i; 103 for (i = 0; i < fPositionRecord->size(); i 104 delete (*fPositionRecord)[i]; 105 } 106 fPositionRecord->clear(); 107 delete fPositionRecord; 108 } 109 } 110 111 //....oooOO0OOooo........oooOO0OOooo........oo 112 void RE04Trajectory::ShowTrajectory(std::ostre 113 { 114 // Invoke the default implementation in G4VT 115 G4VTrajectory::ShowTrajectory(os); 116 // ... or override with your own code here. 117 } 118 119 //....oooOO0OOooo........oooOO0OOooo........oo 120 void RE04Trajectory::DrawTrajectory() const 121 { 122 // Invoke the default implementation in G4VT 123 G4VTrajectory::DrawTrajectory(); 124 // ... or override with your own code here. 125 } 126 127 //....oooOO0OOooo........oooOO0OOooo........oo 128 const std::map<G4String, G4AttDef>* RE04Trajec 129 { 130 G4bool isNew; 131 std::map<G4String, G4AttDef>* store = G4AttD 132 if (isNew) { 133 G4String id("ID"); 134 (*store)[id] = G4AttDef(id, "Track ID", "P 135 136 G4String pid("PID"); 137 (*store)[pid] = G4AttDef(pid, "Parent ID", 138 139 G4String pn("PN"); 140 (*store)[pn] = G4AttDef(pn, "Particle Name 141 142 G4String ch("Ch"); 143 (*store)[ch] = G4AttDef(ch, "Charge", "Phy 144 145 G4String pdg("PDG"); 146 (*store)[pdg] = G4AttDef(pdg, "PDG Encodin 147 148 G4String ike("IKE"); 149 (*store)[ike] = G4AttDef(ike, "Initial kin 150 151 G4String iMom("IMom"); 152 (*store)[iMom] = G4AttDef(iMom, "Initial m 153 154 G4String iMag("IMag"); 155 (*store)[iMag] = 156 G4AttDef(iMag, "Initial momentum magnitu 157 158 G4String ntp("NTP"); 159 (*store)[ntp] = G4AttDef(ntp, "No. of poin 160 } 161 return store; 162 } 163 164 //....oooOO0OOooo........oooOO0OOooo........oo 165 std::vector<G4AttValue>* RE04Trajectory::Creat 166 { 167 std::vector<G4AttValue>* values = new std::v 168 169 values->push_back(G4AttValue("ID", G4UIcomma 170 171 values->push_back(G4AttValue("PID", G4UIcomm 172 173 values->push_back(G4AttValue("PN", fParticle 174 175 values->push_back(G4AttValue("Ch", G4UIcomma 176 177 values->push_back(G4AttValue("PDG", G4UIcomm 178 179 values->push_back(G4AttValue("IKE", G4BestUn 180 181 values->push_back(G4AttValue("IMom", G4BestU 182 183 values->push_back(G4AttValue("IMag", G4BestU 184 185 values->push_back(G4AttValue("NTP", G4UIcomm 186 187 #ifdef G4ATTDEBUG 188 G4cout << G4AttCheck(values, GetAttDefs()); 189 #endif 190 191 return values; 192 } 193 194 //....oooOO0OOooo........oooOO0OOooo........oo 195 void RE04Trajectory::AppendStep(const G4Step* 196 { 197 fPositionRecord->push_back(new RE04Trajector 198 199 } 200 201 //....oooOO0OOooo........oooOO0OOooo........oo 202 G4ParticleDefinition* RE04Trajectory::GetParti 203 { 204 return (G4ParticleTable::GetParticleTable()- 205 } 206 207 //....oooOO0OOooo........oooOO0OOooo........oo 208 void RE04Trajectory::MergeTrajectory(G4VTrajec 209 { 210 if (!secondTrajectory) return; 211 212 RE04Trajectory* seco = (RE04Trajectory*)seco 213 G4int ent = seco->GetPointEntries(); 214 for (G4int i = 1; i < ent; i++) // initial 215 // should n 216 { 217 fPositionRecord->push_back((*(seco->fPosit 218 // fPositionRecord->push_back(seco->fPo 219 } 220 delete (*seco->fPositionRecord)[0]; 221 seco->fPositionRecord->clear(); 222 } 223