Geant4 Cross Reference |
1 // 1 // 2 // ******************************************* 2 // ******************************************************************** 3 // * License and Disclaimer 3 // * License and Disclaimer * 4 // * 4 // * * 5 // * The Geant4 software is copyright of th 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/ 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. 9 // * include a list of copyright holders. * 10 // * 10 // * * 11 // * Neither the authors of this software syst 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing fin 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warran 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assum 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitatio 16 // * for the full disclaimer and the limitation of liability. * 17 // * 17 // * * 18 // * This code implementation is the result 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboratio 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distri 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you ag 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publicati 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Sof 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************* 24 // ******************************************************************** 25 // 25 // 26 /// \file runAndEvent/RE01/src/RE01TrackInform 26 /// \file runAndEvent/RE01/src/RE01TrackInformation.cc 27 /// \brief Implementation of the RE01TrackInfo 27 /// \brief Implementation of the RE01TrackInformation class 28 // 28 // 29 // 29 // >> 30 // $Id: RE01TrackInformation.cc 75295 2013-10-30 09:32:52Z gcosmo $ 30 // 31 // 31 32 32 #include "RE01TrackInformation.hh" 33 #include "RE01TrackInformation.hh" 33 << 34 #include "G4SystemOfUnits.hh" << 35 #include "G4ios.hh" 34 #include "G4ios.hh" >> 35 #include "G4SystemOfUnits.hh" 36 36 37 G4ThreadLocal G4Allocator<RE01TrackInformation << 37 G4ThreadLocal G4Allocator<RE01TrackInformation> * aTrackInformationAllocator = 0; >> 38 //G4Allocator<RE01TrackInformation> aTrackInformationAllocator; 38 39 39 //....oooOO0OOooo........oooOO0OOooo........oo << 40 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 40 RE01TrackInformation::RE01TrackInformation() : << 41 RE01TrackInformation::RE01TrackInformation() >> 42 : G4VUserTrackInformation() 41 { 43 { 42 fOriginalTrackID = 0; << 44 fOriginalTrackID = 0; 43 fParticleDefinition = 0; << 45 fParticleDefinition = 0; 44 fOriginalPosition = G4ThreeVector(0., 0., 0. << 46 fOriginalPosition = G4ThreeVector(0.,0.,0.); 45 fOriginalMomentum = G4ThreeVector(0., 0., 0. << 47 fOriginalMomentum = G4ThreeVector(0.,0.,0.); 46 fOriginalEnergy = 0.; << 48 fOriginalEnergy = 0.; 47 fOriginalTime = 0.; << 49 fOriginalTime = 0.; 48 fTrackingStatus = 1; << 50 fTrackingStatus = 1; 49 fSourceTrackID = -1; << 51 fSourceTrackID = -1; 50 fSourceDefinition = 0; << 52 fSourceDefinition = 0; 51 fSourcePosition = G4ThreeVector(0., 0., 0.); << 53 fSourcePosition = G4ThreeVector(0.,0.,0.); 52 fSourceMomentum = G4ThreeVector(0., 0., 0.); << 54 fSourceMomentum = G4ThreeVector(0.,0.,0.); 53 fSourceEnergy = 0.; << 55 fSourceEnergy = 0.; 54 fSourceTime = 0.; << 56 fSourceTime = 0.; 55 fSuspendedStepID = -1; << 56 } << 57 << 58 //....oooOO0OOooo........oooOO0OOooo........oo << 59 RE01TrackInformation::RE01TrackInformation(con << 60 { << 61 fOriginalTrackID = aTrack->GetTrackID(); << 62 fParticleDefinition = aTrack->GetDefinition( << 63 fOriginalPosition = aTrack->GetPosition(); << 64 fOriginalMomentum = aTrack->GetMomentum(); << 65 fOriginalEnergy = aTrack->GetTotalEnergy(); << 66 fOriginalTime = aTrack->GetGlobalTime(); << 67 fTrackingStatus = 1; << 68 fSourceTrackID = -1; << 69 fSourceDefinition = 0; << 70 fSourcePosition = G4ThreeVector(0., 0., 0.); << 71 fSourceMomentum = G4ThreeVector(0., 0., 0.); << 72 fSourceEnergy = 0.; << 73 fSourceTime = 0.; << 74 fSuspendedStepID = -1; << 75 } 57 } 76 58 77 //....oooOO0OOooo........oooOO0OOooo........oo << 59 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 78 RE01TrackInformation ::RE01TrackInformation(co << 60 RE01TrackInformation::RE01TrackInformation(const G4Track* aTrack) >> 61 : G4VUserTrackInformation() >> 62 { >> 63 fOriginalTrackID = aTrack->GetTrackID(); >> 64 fParticleDefinition = aTrack->GetDefinition(); >> 65 fOriginalPosition = aTrack->GetPosition(); >> 66 fOriginalMomentum = aTrack->GetMomentum(); >> 67 fOriginalEnergy = aTrack->GetTotalEnergy(); >> 68 fOriginalTime = aTrack->GetGlobalTime(); >> 69 fTrackingStatus = 1; >> 70 fSourceTrackID = -1; >> 71 fSourceDefinition = 0; >> 72 fSourcePosition = G4ThreeVector(0.,0.,0.); >> 73 fSourceMomentum = G4ThreeVector(0.,0.,0.); >> 74 fSourceEnergy = 0.; >> 75 fSourceTime = 0.; >> 76 } >> 77 >> 78 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... >> 79 RE01TrackInformation >> 80 ::RE01TrackInformation(const RE01TrackInformation* aTrackInfo) 79 : G4VUserTrackInformation() 81 : G4VUserTrackInformation() 80 { 82 { 81 fOriginalTrackID = aTrackInfo->fOriginalTrac << 83 fOriginalTrackID = aTrackInfo->fOriginalTrackID; 82 fParticleDefinition = aTrackInfo->fParticleD << 84 fParticleDefinition = aTrackInfo->fParticleDefinition; 83 fOriginalPosition = aTrackInfo->fOriginalPos << 85 fOriginalPosition = aTrackInfo->fOriginalPosition; 84 fOriginalMomentum = aTrackInfo->fOriginalMom << 86 fOriginalMomentum = aTrackInfo->fOriginalMomentum; 85 fOriginalEnergy = aTrackInfo->fOriginalEnerg << 87 fOriginalEnergy = aTrackInfo->fOriginalEnergy; 86 fOriginalTime = aTrackInfo->fOriginalTime; << 88 fOriginalTime = aTrackInfo->fOriginalTime; 87 fTrackingStatus = aTrackInfo->fTrackingStatu << 89 fTrackingStatus = aTrackInfo->fTrackingStatus; 88 fSourceTrackID = aTrackInfo->fSourceTrackID; << 90 fSourceTrackID = aTrackInfo->fSourceTrackID; 89 fSourceDefinition = aTrackInfo->fSourceDefin << 91 fSourceDefinition = aTrackInfo->fSourceDefinition; 90 fSourcePosition = aTrackInfo->fSourcePositio << 92 fSourcePosition = aTrackInfo->fSourcePosition; 91 fSourceMomentum = aTrackInfo->fSourceMomentu << 93 fSourceMomentum = aTrackInfo->fSourceMomentum; 92 fSourceEnergy = aTrackInfo->fSourceEnergy; << 94 fSourceEnergy = aTrackInfo->fSourceEnergy; 93 fSourceTime = aTrackInfo->fSourceTime; << 95 fSourceTime = aTrackInfo->fSourceTime; 94 fSuspendedStepID = -1; << 95 } 96 } 96 97 97 //....oooOO0OOooo........oooOO0OOooo........oo << 98 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 98 RE01TrackInformation::~RE01TrackInformation() 99 RE01TrackInformation::~RE01TrackInformation() 99 { << 100 {;} 100 ; << 101 } << 102 101 103 //....oooOO0OOooo........oooOO0OOooo........oo << 102 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 104 RE01TrackInformation& RE01TrackInformation ::o << 103 RE01TrackInformation& RE01TrackInformation 105 { << 104 ::operator =(const RE01TrackInformation& aTrackInfo) 106 fOriginalTrackID = aTrackInfo.fOriginalTrack << 105 { 107 fParticleDefinition = aTrackInfo.fParticleDe << 106 fOriginalTrackID = aTrackInfo.fOriginalTrackID; 108 fOriginalPosition = aTrackInfo.fOriginalPosi << 107 fParticleDefinition = aTrackInfo.fParticleDefinition; 109 fOriginalMomentum = aTrackInfo.fOriginalMome << 108 fOriginalPosition = aTrackInfo.fOriginalPosition; 110 fOriginalEnergy = aTrackInfo.fOriginalEnergy << 109 fOriginalMomentum = aTrackInfo.fOriginalMomentum; 111 fOriginalTime = aTrackInfo.fOriginalTime; << 110 fOriginalEnergy = aTrackInfo.fOriginalEnergy; 112 fTrackingStatus = aTrackInfo.fTrackingStatus << 111 fOriginalTime = aTrackInfo.fOriginalTime; 113 fSourceTrackID = aTrackInfo.fSourceTrackID; << 112 fTrackingStatus = aTrackInfo.fTrackingStatus; 114 fSourceDefinition = aTrackInfo.fSourceDefini << 113 fSourceTrackID = aTrackInfo.fSourceTrackID; 115 fSourcePosition = aTrackInfo.fSourcePosition << 114 fSourceDefinition = aTrackInfo.fSourceDefinition; 116 fSourceMomentum = aTrackInfo.fSourceMomentum << 115 fSourcePosition = aTrackInfo.fSourcePosition; 117 fSourceEnergy = aTrackInfo.fSourceEnergy; << 116 fSourceMomentum = aTrackInfo.fSourceMomentum; 118 fSourceTime = aTrackInfo.fSourceTime; << 117 fSourceEnergy = aTrackInfo.fSourceEnergy; 119 fSuspendedStepID = -1; << 118 fSourceTime = aTrackInfo.fSourceTime; 120 119 121 return *this; << 120 return *this; 122 } 121 } 123 122 124 //....oooOO0OOooo........oooOO0OOooo........oo << 123 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 125 void RE01TrackInformation::SetSourceTrackInfor 124 void RE01TrackInformation::SetSourceTrackInformation(const G4Track* aTrack) 126 { 125 { 127 fSourceTrackID = aTrack->GetTrackID(); << 126 fSourceTrackID = aTrack->GetTrackID(); 128 fSourceDefinition = aTrack->GetDefinition(); << 127 fSourceDefinition = aTrack->GetDefinition(); 129 fSourcePosition = aTrack->GetPosition(); << 128 fSourcePosition = aTrack->GetPosition(); 130 fSourceMomentum = aTrack->GetMomentum(); << 129 fSourceMomentum = aTrack->GetMomentum(); 131 fSourceEnergy = aTrack->GetTotalEnergy(); << 130 fSourceEnergy = aTrack->GetTotalEnergy(); 132 fSourceTime = aTrack->GetGlobalTime(); << 131 fSourceTime = aTrack->GetGlobalTime(); 133 } 132 } 134 133 135 //....oooOO0OOooo........oooOO0OOooo........oo << 134 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 136 void RE01TrackInformation::Print() const 135 void RE01TrackInformation::Print() const 137 { 136 { 138 G4cout << "Source track ID " << fSourceTrack << 137 G4cout 139 << "," << fSourceEnergy / GeV << "[Ge << 138 << "Source track ID " << fSourceTrackID << " (" 140 G4cout << "Original primary track ID " << fO << 139 << fSourceDefinition->GetParticleName() << "," 141 << fParticleDefinition->GetParticleNa << 140 << fSourceEnergy/GeV << "[GeV]) at " << fSourcePosition << G4endl; 142 << G4endl; << 141 G4cout >> 142 << "Original primary track ID " << fOriginalTrackID << " (" >> 143 << fParticleDefinition->GetParticleName() << "," >> 144 << fOriginalEnergy/GeV << "[GeV])" << G4endl; 143 } 145 } >> 146 144 147