3 #include "G4TrajectoryPoint.hh"
4 #include "G4ParticleTable.hh"
5 #include "G4AttDefStore.hh"
7 #include "G4AttValue.hh"
8 #include "G4UnitsTable.hh"
9 #include "G4VProcess.hh"
11 #include "G4PhysicalConstants.hh"
12 #include "G4SystemOfUnits.hh"
20 : positionRecord(0), fTrackID(0), fParentID(0),
21 PDGEncoding( 0 ), PDGCharge(0.0), ParticleName(
""),
22 initialMomentum( G4ThreeVector() ),SaveIt(false),creatorProcess(
""),
28 G4ParticleDefinition * fpParticleDefinition = aTrack->GetDefinition();
30 PDGCharge = fpParticleDefinition->GetPDGCharge();
31 PDGEncoding = fpParticleDefinition->GetPDGEncoding();
37 positionRecord->push_back(
new G4TrajectoryPoint(aTrack->GetPosition()));
41 if ( aTrack->GetUserInformation() != 0 )
45 if (aTrack->GetCreatorProcess() != 0 )
47 const G4VProcess* tempproc = aTrack->GetCreatorProcess();
71 G4TrajectoryPoint* rightPoint = (G4TrajectoryPoint*)((*(right.
positionRecord))[i]);
82 delete (*positionRecord)[i];
92 G4VTrajectory::ShowTrajectory(os);
99 G4VTrajectory::DrawTrajectory();
106 std::map<G4String,G4AttDef>* store
107 = G4AttDefStore::GetInstance(
"WCSimTrajectory",isNew);
111 (*store)[ID] = G4AttDef(ID,
"Track ID",
"Bookkeeping",
"",
"G4int");
114 (*store)[PID] = G4AttDef(PID,
"Parent ID",
"Bookkeeping",
"",
"G4int");
117 (*store)[PN] = G4AttDef(PN,
"Particle Name",
"Physics",
"",
"G4String");
120 (*store)[Ch] = G4AttDef(Ch,
"Charge",
"Physics",
"",
"G4double");
123 (*store)[PDG] = G4AttDef(PDG,
"PDG Encoding",
"Physics",
"",
"G4int");
125 G4String IMom(
"IMom");
126 (*store)[IMom] = G4AttDef(IMom,
"Momentum of track at start of trajectory",
127 "Physics",
"",
"G4ThreeVector");
130 (*store)[NTP] = G4AttDef(NTP,
"No. of points",
"Physics",
"",
"G4int");
140 std::ostringstream s(c);
142 std::vector<G4AttValue>* values =
new std::vector<G4AttValue>;
144 s.seekp(std::ios::beg);
146 values->push_back(G4AttValue(
"ID",c,
""));
148 s.seekp(std::ios::beg);
150 values->push_back(G4AttValue(
"PID",c,
""));
154 s.seekp(std::ios::beg);
156 values->push_back(G4AttValue(
"Ch",c,
""));
158 s.seekp(std::ios::beg);
160 values->push_back(G4AttValue(
"PDG",c,
""));
162 s.seekp(std::ios::beg);
164 values->push_back(G4AttValue(
"IMom",c,
""));
166 s.seekp(std::ios::beg);
168 values->push_back(G4AttValue(
"NTP",c,
""));
175 positionRecord->push_back(
new G4TrajectoryPoint(aStep->GetPostStepPoint()->
181 return (G4ParticleTable::GetParticleTable()->FindParticle(
ParticleName));
186 if(!secondTrajectory)
return;
194 for(G4int i=1;i<ent;i++)
G4VPhysicalVolume * stoppingVolume
virtual void AppendStep(const G4Step *aStep)
virtual int GetPointEntries() const
G4Allocator< WCSimTrajectory > myTrajectoryAllocator
virtual void MergeTrajectory(G4VTrajectory *secondTrajectory)
virtual void DrawTrajectory(G4int i_mode=0) const
virtual void ShowTrajectory(std::ostream &os=G4cout) const
TrajectoryPointContainer * positionRecord
G4ParticleDefinition * GetParticleDefinition()
virtual std::vector< G4AttValue > * CreateAttValues() const
G4ThreeVector stoppingPoint
virtual ~WCSimTrajectory()
virtual const std::map< G4String, G4AttDef > * GetAttDefs() const
std::vector< G4VTrajectoryPoint * > TrajectoryPointContainer
G4ThreeVector initialMomentum