00001 //---------------------------------------------------------------------------// 00012 00013 #include "BesTruthTrack.hh" 00014 #include <iomanip> 00015 using namespace std; 00016 00017 BesTruthTrack::BesTruthTrack() 00018 :m_fourMomentum(0),m_daughterIndexes(0) 00019 { 00020 //m_fourMomentum; 00021 m_vertex=0; 00022 m_terminalVertex=0; 00023 m_PDGCode=0; 00024 m_PDGCharge=-99; 00025 m_particleName=""; 00026 m_index=unassigned; 00027 m_g4TrackId=-99; 00028 //m_daughterIndexes=0; 00029 m_found=false; 00030 m_source=""; 00031 } 00032 00033 ostream &operator<<(ostream &stream, const BesTruthTrack &track) 00034 { 00035 //track index 00036 if(track.GetIndex() == BesTruthTrack::unassigned) 00037 stream << " --"; 00038 else 00039 stream << setw(4) << track.GetIndex() << " "; 00040 00041 //PDGcode 00042 if(track.GetPDGCode()) 00043 stream << setw(4) << track.GetPDGCode()<<" "; 00044 else 00045 stream <<" --"; 00046 00047 //particle name 00048 if(track.GetParticleName()) 00049 stream << setw(10) << track.GetParticleName()<<" "; 00050 else 00051 stream <<" --"; 00052 00053 //original vertex index 00054 if(track.GetVertex()) 00055 stream << setw(4) << track.GetVertex()->GetIndex(); 00056 else 00057 stream << " --"; 00058 00059 //terminal vertex index 00060 if(track.GetTerminalVertex()) 00061 stream << setw(4) << track.GetTerminalVertex()->GetIndex(); 00062 else 00063 stream << " --"; 00064 00065 00066 //four momentum 00067 stream << " " << setiosflags(ios::fixed) 00068 <<setprecision(4) << setw(11) << track.GetP4().x() 00069 <<setprecision(4) << setw(11) << track.GetP4().y() 00070 <<setprecision(4) << setw(11) << track.GetP4().z() 00071 <<setprecision(4) << setw(11) << track.GetP4().e(); 00072 00073 //daughter indexes 00074 if(track.GetDaughterIndexes().size()>0) 00075 { 00076 G4int nDaughter = track.GetDaughterIndexes().size(); 00077 for(G4int i=0;i<nDaughter;i++) 00078 stream <<" "<<( track.GetDaughterIndexes() )[i]<<" "; 00079 } 00080 return stream; 00081 } 00082 00083 ostream &operator<<(ostream &stream, const BesTruthTrack *track) 00084 { 00085 stream << *track; 00086 return stream; 00087 } 00088 00089 00090 00091