Loading...
Searching...
No Matches
Public Member Functions | Private Attributes | List of all members
RE01Trajectory Class Reference

#include <Doxymodules_runAndEvent.h>

Inheritance diagram for RE01Trajectory:
G4VTrajectory

Public Member Functions

 RE01Trajectory (const G4Track *aTrack)
 
virtual ~RE01Trajectory ()
 
virtual void ShowTrajectory (std::ostream &os=G4cout) const
 
virtual void DrawTrajectory () const
 
virtual const std::map< G4String, G4AttDef > * GetAttDefs () const
 
virtual std::vector< G4AttValue > * CreateAttValues () const
 
virtual void AppendStep (const G4Step *aStep)
 
virtual void MergeTrajectory (G4VTrajectory *secondTrajectory)
 
void * operator new (size_t)
 
void operator delete (void *)
 
int operator== (const RE01Trajectory &right) const
 
virtual G4int GetTrackID () const
 
virtual G4int GetParentID () const
 
virtual G4String GetParticleName () const
 
virtual G4double GetCharge () const
 
virtual G4int GetPDGEncoding () const
 
virtual G4ThreeVector GetInitialMomentum () const
 
virtual int GetPointEntries () const
 
virtual G4VTrajectoryPointGetPoint (G4int i) const
 

Private Attributes

RE01TrajectoryPointContainerfPositionRecord
 
G4int fTrackID
 
G4int fParentID
 
G4int fTrackStatus
 
G4ParticleDefinitionfParticleDefinition
 
G4String fParticleName
 
G4double fPDGCharge
 
G4int fPDGEncoding
 
G4ThreeVector fMomentum
 
G4ThreeVector fVertexPosition
 
G4double fGlobalTime
 

Detailed Description

Definition at line 38 of file Doxymodules_runAndEvent.h.

Constructor & Destructor Documentation

◆ RE01Trajectory()

RE01Trajectory::RE01Trajectory ( const G4Track aTrack)

Definition at line 52 of file RE01Trajectory.cc.

55{
56 fParticleDefinition = aTrack->GetDefinition();
57 fParticleName = fParticleDefinition->GetParticleName();
58 fPDGCharge = fParticleDefinition->GetPDGCharge();
59 fPDGEncoding = fParticleDefinition->GetPDGEncoding();
60 if(fParticleName=="unknown")
61 {
62 G4PrimaryParticle*pp = aTrack->GetDynamicParticle()->GetPrimaryParticle();
63 if(pp)
64 {
65 if(pp->GetCharge()<DBL_MAX) fPDGCharge = pp->GetCharge();
66 fPDGEncoding = pp->GetPDGcode();
67 if(pp->GetG4code()!=0)
68 {
69 fParticleName += " : ";
70 fParticleName += pp->GetG4code()->GetParticleName();
71 }
72 }
73 }
74 fTrackID = aTrack->GetTrackID();
75 RE01TrackInformation* trackInfo
76 = (RE01TrackInformation*)(aTrack->GetUserInformation());
77 fTrackStatus = trackInfo->GetTrackingStatus();
78 if(fTrackStatus == 1)
79 { fParentID = aTrack->GetParentID(); }
80 else if(fTrackStatus == 2)
81 { fParentID = trackInfo->GetSourceTrackID(); }
82 else
83 { fParentID = -1; }
85 fPositionRecord->push_back(new G4TrajectoryPoint(aTrack->GetPosition()));
86 fMomentum = aTrack->GetMomentum();
87 fVertexPosition = aTrack->GetPosition();
88 fGlobalTime = aTrack->GetGlobalTime();
89}
std::vector< G4VTrajectoryPoint * > RE01TrajectoryPointContainer
G4ThreeVector fVertexPosition
RE01TrajectoryPointContainer * fPositionRecord
G4ParticleDefinition * fParticleDefinition
G4ThreeVector fMomentum
G4String fParticleName

◆ ~RE01Trajectory()

RE01Trajectory::~RE01Trajectory ( )
virtual

Definition at line 92 of file RE01Trajectory.cc.

93{
94 size_t i;
95 for(i=0;i<fPositionRecord->size();i++){
96 delete (*fPositionRecord)[i];
97 }
98 fPositionRecord->clear();
99
100 delete fPositionRecord;
101}

Member Function Documentation

◆ ShowTrajectory()

void RE01Trajectory::ShowTrajectory ( std::ostream &  os = G4cout) const
virtual

Definition at line 104 of file RE01Trajectory.cc.

105{
106 os << G4endl << "TrackID =" << fTrackID
107 << " : ParentID=" << fParentID << " : TrackStatus=" << fTrackStatus << G4endl;
108 os << "Particle name : " << fParticleName << " PDG code : " << fPDGEncoding
109 << " Charge : " << fPDGCharge << G4endl;
110 os << "Original momentum : " <<
111 G4BestUnit(fMomentum,"Energy") << G4endl;
112 os << "Vertex : " << G4BestUnit(fVertexPosition,"Length")
113 << " Global time : " << G4BestUnit(fGlobalTime,"Time") << G4endl;
114 os << " Current trajectory has " << fPositionRecord->size()
115 << " points." << G4endl;
116
117 for( size_t i=0 ; i < fPositionRecord->size() ; i++){
118 G4TrajectoryPoint* aTrajectoryPoint =
120 os << "Point[" << i << "]"
121 << " Position= " << aTrajectoryPoint->GetPosition() << G4endl;
122 }
123}

◆ DrawTrajectory()

void RE01Trajectory::DrawTrajectory ( ) const
virtual

Definition at line 126 of file RE01Trajectory.cc.

127{
128
129 G4VVisManager* pVVisManager = G4VVisManager::GetConcreteInstance();
130 G4ThreeVector pos;
131
132 G4Polyline pPolyline;
133 for (size_t i = 0; i < fPositionRecord->size() ; i++) {
134 G4TrajectoryPoint* aTrajectoryPoint =
136 pos = aTrajectoryPoint->GetPosition();
137 pPolyline.push_back( pos );
138 }
139
140 G4Colour colour(0.2,0.2,0.2);
141 if(fParticleDefinition==G4Gamma::GammaDefinition())
142 colour = G4Colour(0.,0.,1.);
143 else if(fParticleDefinition==G4Electron::ElectronDefinition()
144 ||fParticleDefinition==G4Positron::PositronDefinition())
145 colour = G4Colour(1.,1.,0.);
146 else if(fParticleDefinition==G4MuonMinus::MuonMinusDefinition()
147 ||fParticleDefinition==G4MuonPlus::MuonPlusDefinition())
148 colour = G4Colour(0.,1.,0.);
149 else if(fParticleDefinition->GetParticleType()=="meson")
150 {
151 if(fPDGCharge!=0.)
152 colour = G4Colour(1.,0.,0.);
153 else
154 colour = G4Colour(0.5,0.,0.);
155 }
156 else if(fParticleDefinition->GetParticleType()=="baryon")
157 {
158 if(fPDGCharge!=0.)
159 colour = G4Colour(0.,1.,1.);
160 else
161 colour = G4Colour(0.,0.5,0.5);
162 }
163
164 G4VisAttributes attribs(colour);
165 pPolyline.SetVisAttributes(attribs);
166 if(pVVisManager) pVVisManager->Draw(pPolyline);
167}

◆ GetAttDefs()

const std::map< G4String, G4AttDef > * RE01Trajectory::GetAttDefs ( ) const
virtual

Definition at line 170 of file RE01Trajectory.cc.

171{
172 G4bool isNew;
173 std::map<G4String,G4AttDef>* store
174 = G4AttDefStore::GetInstance("RE01Trajectory",isNew);
175 if (isNew) {
176
177 G4String id("ID");
178 (*store)[id] = G4AttDef(id,"Track ID","Bookkeeping","","G4int");
179
180 G4String pid("PID");
181 (*store)[pid] = G4AttDef(pid,"Parent ID","Bookkeeping","","G4int");
182
183 G4String status("Status");
184 (*store)[status] = G4AttDef(status,"Track Status","Bookkeeping","","G4int");
185
186 G4String pn("PN");
187 (*store)[pn] = G4AttDef(pn,"Particle Name","Bookkeeping","","G4String");
188
189 G4String ch("Ch");
190 (*store)[ch] = G4AttDef(ch,"Charge","Physics","e+","G4double");
191
192 G4String pdg("PDG");
193 (*store)[pdg] = G4AttDef(pdg,"PDG Encoding","Bookkeeping","","G4int");
194
195 G4String imom("IMom");
196 (*store)[imom] = G4AttDef(imom, "Momentum of track at start of trajectory",
197 "Physics","G4BestUnit","G4ThreeVector");
198
199 G4String imag("IMag");
200 (*store)[imag] =
201 G4AttDef(imag, "Magnitude of momentum of track at start of trajectory",
202 "Physics","G4BestUnit","G4double");
203
204 G4String vtxPos("VtxPos");
205 (*store)[vtxPos] = G4AttDef(vtxPos, "Vertex position",
206 "Physics","G4BestUnit","G4ThreeVector");
207
208 G4String ntp("NTP");
209 (*store)[ntp] = G4AttDef(ntp,"No. of points","Bookkeeping","","G4int");
210
211 }
212 return store;
213}

◆ CreateAttValues()

std::vector< G4AttValue > * RE01Trajectory::CreateAttValues ( ) const
virtual

Definition at line 216 of file RE01Trajectory.cc.

217{
218 std::vector<G4AttValue>* values = new std::vector<G4AttValue>;
219
220 values->push_back
221 (G4AttValue("ID",G4UIcommand::ConvertToString(fTrackID),""));
222
223 values->push_back
224 (G4AttValue("PID",G4UIcommand::ConvertToString(fParentID),""));
225
226 values->push_back
227 (G4AttValue("Status",G4UIcommand::ConvertToString(fTrackStatus),""));
228
229 values->push_back(G4AttValue("PN",fParticleName,""));
230
231 values->push_back
232 (G4AttValue("Ch",G4UIcommand::ConvertToString(fPDGCharge),""));
233
234 values->push_back
235 (G4AttValue("PDG",G4UIcommand::ConvertToString(fPDGEncoding),""));
236
237 values->push_back
238 (G4AttValue("IMom",G4BestUnit(fMomentum,"Energy"),""));
239
240 values->push_back
241 (G4AttValue("IMag",G4BestUnit(fMomentum.mag(),"Energy"),""));
242
243 values->push_back
244 (G4AttValue("VtxPos",G4BestUnit(fVertexPosition,"Length"),""));
245
246 values->push_back
247 (G4AttValue("NTP",G4UIcommand::ConvertToString(GetPointEntries()),""));
248
249 return values;
250}
virtual int GetPointEntries() const

◆ AppendStep()

void RE01Trajectory::AppendStep ( const G4Step aStep)
virtual

Definition at line 253 of file RE01Trajectory.cc.

254{
255 fPositionRecord->push_back(
256 new G4TrajectoryPoint(aStep->GetPostStepPoint()->GetPosition() ));
257}

◆ MergeTrajectory()

void RE01Trajectory::MergeTrajectory ( G4VTrajectory secondTrajectory)
virtual

Definition at line 260 of file RE01Trajectory.cc.

261{
262 if(!secondTrajectory) return;
263
264 RE01Trajectory* seco = (RE01Trajectory*)secondTrajectory;
265 G4int ent = seco->GetPointEntries();
266 //
267 // initial point of the second trajectory should not be merged
268 for(int i=1;i<ent;i++)
269 {
270 fPositionRecord->push_back((*(seco->fPositionRecord))[i]);
271 }
272 delete (*seco->fPositionRecord)[0];
273 seco->fPositionRecord->clear();
274
275}

◆ operator new()

void * RE01Trajectory::operator new ( size_t  )
inline

Definition at line 98 of file RE01Trajectory.hh.

99{
102 return (void*)myTrajectoryAllocator->MallocSingle();
103}
G4ThreadLocal G4Allocator< RE01Trajectory > * myTrajectoryAllocator

◆ operator delete()

void RE01Trajectory::operator delete ( void *  aTrajectory)
inline

Definition at line 105 of file RE01Trajectory.hh.

106{
107 myTrajectoryAllocator->FreeSingle((RE01Trajectory*)aTrajectory);
108}

◆ operator==()

int RE01Trajectory::operator== ( const RE01Trajectory right) const
inline

Definition at line 68 of file RE01Trajectory.hh.

69 {return (this==&right);}

◆ GetTrackID()

virtual G4int RE01Trajectory::GetTrackID ( ) const
inlinevirtual

Definition at line 71 of file RE01Trajectory.hh.

71{ return fTrackID; }

◆ GetParentID()

virtual G4int RE01Trajectory::GetParentID ( ) const
inlinevirtual

Definition at line 72 of file RE01Trajectory.hh.

72{ return fParentID; }

◆ GetParticleName()

virtual G4String RE01Trajectory::GetParticleName ( ) const
inlinevirtual

Definition at line 73 of file RE01Trajectory.hh.

73{ return fParticleName; }

◆ GetCharge()

virtual G4double RE01Trajectory::GetCharge ( ) const
inlinevirtual

Definition at line 74 of file RE01Trajectory.hh.

74{ return fPDGCharge; }

◆ GetPDGEncoding()

virtual G4int RE01Trajectory::GetPDGEncoding ( ) const
inlinevirtual

Definition at line 75 of file RE01Trajectory.hh.

75{ return fPDGEncoding; }

◆ GetInitialMomentum()

virtual G4ThreeVector RE01Trajectory::GetInitialMomentum ( ) const
inlinevirtual

Definition at line 76 of file RE01Trajectory.hh.

76{ return fMomentum; }

◆ GetPointEntries()

virtual int RE01Trajectory::GetPointEntries ( ) const
inlinevirtual

Definition at line 77 of file RE01Trajectory.hh.

77{ return fPositionRecord->size(); }

◆ GetPoint()

virtual G4VTrajectoryPoint * RE01Trajectory::GetPoint ( G4int  i) const
inlinevirtual

Definition at line 78 of file RE01Trajectory.hh.

79 { return (*fPositionRecord)[i]; }

Member Data Documentation

◆ fPositionRecord

RE01TrajectoryPointContainer* RE01Trajectory::fPositionRecord
private

Definition at line 82 of file RE01Trajectory.hh.

◆ fTrackID

G4int RE01Trajectory::fTrackID
private

Definition at line 83 of file RE01Trajectory.hh.

◆ fParentID

G4int RE01Trajectory::fParentID
private

Definition at line 84 of file RE01Trajectory.hh.

◆ fTrackStatus

G4int RE01Trajectory::fTrackStatus
private

Definition at line 85 of file RE01Trajectory.hh.

◆ fParticleDefinition

G4ParticleDefinition* RE01Trajectory::fParticleDefinition
private

Definition at line 86 of file RE01Trajectory.hh.

◆ fParticleName

G4String RE01Trajectory::fParticleName
private

Definition at line 87 of file RE01Trajectory.hh.

◆ fPDGCharge

G4double RE01Trajectory::fPDGCharge
private

Definition at line 88 of file RE01Trajectory.hh.

◆ fPDGEncoding

G4int RE01Trajectory::fPDGEncoding
private

Definition at line 89 of file RE01Trajectory.hh.

◆ fMomentum

G4ThreeVector RE01Trajectory::fMomentum
private

Definition at line 90 of file RE01Trajectory.hh.

◆ fVertexPosition

G4ThreeVector RE01Trajectory::fVertexPosition
private

Definition at line 91 of file RE01Trajectory.hh.

◆ fGlobalTime

G4double RE01Trajectory::fGlobalTime
private

Definition at line 92 of file RE01Trajectory.hh.


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

Applications | User Support | Publications | Collaboration