00001 #include "TrgTrackConverter.h"
00002
00003 Track* TrgTrackConverter::toTrack(const TrgTrack& gtrack) {
00004
00005
00006 Track* track = new Track();
00007
00008
00009 std::vector<Track::TrackType> types = TrackTypes(gtrack);
00010 for (std::vector<Track::TrackType>::const_iterator
00011 it = types.begin(); it != types.end(); it++) {
00012 track->setType(*it);
00013 }
00014
00015
00016 std::vector<Track::Flag> flags = TrackFlags(gtrack);
00017 for (std::vector<Track::Flag>::const_iterator
00018 it = flags.begin(); it != flags.end(); it++) {
00019 track->setFlag(*it);
00020 }
00021
00022
00023 track->setChi2PerDoF(gtrack.chiSquared());
00024 track->setNDoF(1);
00025
00026
00027 toState(gtrack.firstState(),track->physicsState());
00028
00029
00030 for (std::vector<TrgState>::const_iterator
00031 it = gtrack.otherStates().begin(); it != gtrack.otherStates().end(); it++) {
00032 const TrgState& gstate = *it;
00033 State* state = new State();
00034 toState(gstate,*state);
00035 track->addToStates(state);
00036 }
00037
00038
00039 std::vector<LHCbID> ids = TrackIDs(gtrack);
00040 track->setLhcbIDs(ids);
00041
00042 return track;
00043 }
00044
00045 std::vector<Track::TrackType>
00046 TrgTrackConverter::TrackTypes(const TrgTrack& gtrack) {
00047 std::vector<Track::TrackType> types;
00048 TrgTrack::TrgTrackType gtype = (TrgTrack::TrgTrackType) gtrack.type();
00049 Track::TrackType type = Track::Velo;
00050 if (gtype == TrgTrack::TypeVeloR )
00051 type = Track::VeloR;
00052 else if (gtype == TrgTrack::TypeVelo3D)
00053 type = Track::Velo;
00054 else if (gtype == TrgTrack::TypeVeloTT)
00055 type = Track::Downstream;
00056 else if (gtype == TrgTrack::TypeLong)
00057 type = Track::Long;
00058 else if (gtype == TrgTrack::TypeDownstream)
00059 type = Track::Downstream;
00060
00061
00062
00063 types.push_back(type);
00064
00065 return types;
00066
00067
00068 }
00069
00070 std::vector<Track::HistoryFlag>
00071 TrgTrackConverter::TrackHistory(const TrgTrack& gtrack) {
00072 std::vector<Track::HistoryFlag> history;
00073 return history;
00074 }
00075
00076 std::vector<Track::Flag>
00077 TrgTrackConverter::TrackFlags(const TrgTrack& gtrack) {
00078 std::vector<Track::Flag> flags;
00079
00080
00081
00082
00083
00084
00085
00086
00087 return flags;
00088 }
00089
00090 std::vector<LHCbID>
00091 TrgTrackConverter::TrackIDs(const TrgTrack& gtrack) {
00092 std::vector<LHCbID> ids;
00093
00094 const std::vector< std::pair<VeloChannelID,int> >& vref
00095 = gtrack.veloReference();
00096 for (std::vector< std::pair<VeloChannelID,int> >::const_iterator
00097 it = vref.begin(); it != vref.end(); it++) {
00098 const std::pair<VeloChannelID,int>& velo = *it;
00099 LHCbID id = LHCbID(velo.first);
00100
00101 ids.push_back(id);
00102 }
00103
00104 const std::vector< std::pair<ITChannelID,int> >& itref
00105 = gtrack.itReference();
00106 for (std::vector< std::pair<ITChannelID,int> >::const_iterator
00107 it = itref.begin(); it != itref.end(); it++) {
00108 const std::pair<ITChannelID,int>& si = *it;
00109 LHCbID id = LHCbID(si.first);
00110
00111 ids.push_back(id);
00112 }
00113
00114
00115 const std::vector< std::pair<OTChannelID,int> >& otref
00116 = gtrack.otReference();
00117 for (std::vector< std::pair<OTChannelID,int> >::const_iterator
00118 it = otref.begin(); it != otref.end(); it++) {
00119 const std::pair<VeloChannelID,int>& ot = *it;
00120 LHCbID id = LHCbID(ot.first);
00121
00122 ids.push_back(id);
00123 }
00124
00125
00126 return ids;
00127 }
00128
00129 void TrgTrackConverter::toState(const TrgState& gstate, State& state) {
00130
00131 state.setState(gstate.stateVector());
00132 state.setCovariance(gstate.covariance());
00133
00134 }
00135
00136 TrgTrack* TrgTrackConverter::toTrgTrack(const Track& track) {
00137
00138 TrgTrack* gtrack = new TrgTrack();
00139 return gtrack;
00140 }
00141
00142
00143 void TrgTrackConverter::toTrgState(const State& state, TrgState& gstate) {
00144 gstate.setStateVector(state.state());
00145 gstate.setCovariance(state.covariance());
00146 gstate.setZ(state.z());
00147
00148 }
00149
00150 std::ostream& TrgTrackConverter::str(const Track& track, std::ostream& os) {
00151 os << " flags " << track.flags() << std::endl;
00152 os << " chi2 " << track.chi2() << std::endl;
00153 os << " physics state "; str(track.physicsState(),os);
00154 return os;
00155 }
00156
00157
00158
00159 std::ostream& TrgTrackConverter::str(const State& state, std::ostream& os) {
00160 os << " flags " << state.flags() << std::endl;
00161 os << " z " << state.z() << std::endl;
00162 os << " state " << state.state() << std::endl;
00163 os << " cov " << state.covariance() << std::endl;
00164 return os;
00165 }