00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef TrackFitEvent_FitTrack_H
00016 #define TrackFitEvent_FitTrack_H 1
00017
00018
00019 #include "Event/Track.h"
00020 #include "Event/Node.h"
00021 #include "Event/Measurement.h"
00022 #include <vector>
00023
00024
00025
00026 class Plane3D;
00027
00028
00029
00030 static const CLID& CLID_FitTrack = 10020;
00031
00032
00033 namespace FitTrackLocation {
00034 static const std::string& Default = "Rec/FitTrack/Best";
00035 static const std::string& Velo = "Rec/FitTrack/Velo";
00036 static const std::string& Seed = "Rec/FitTrack/Seed";
00037 static const std::string& Match = "Rec/FitTrack/Match";
00038 static const std::string& Forward = "Rec/FitTrack/Forward";
00039 static const std::string& Follow = "Rec/FitTrack/Follow";
00040 static const std::string& VeloTT = "Rec/FitTrack/VeloTT";
00041 static const std::string& KsTrack = "Rec/FitTrack/KsTrack";
00042 }
00043
00044
00054 class FitTrack: public Track
00055 {
00056 public:
00057
00059 enum TrackType{ Velo=1,
00060 VeloR=2,
00061 Backward=4,
00062 Long=8,
00063 Upstream=16,
00064 Downstream=32,
00065 Ttrack=64 };
00067 enum HistoryFlag{ LongTrack=1,
00068 Seeding=2,
00069 TrKshort=4,
00070 TrMatching=8,
00071 VeloTrack=16,
00072 VeloTT=32,
00073 TrgForward=64,
00074 TrgVelo=128,
00075 TrgVeloTT=256 };
00077 enum Flag{ Valid=1,
00078 Unique=2,
00079 IPSelected=4,
00080 MuSelected=8 };
00081
00083 FitTrack() : m_nodes(),
00084 m_measurements() {}
00085
00087 virtual ~FitTrack() {}
00088
00089
00090 virtual const CLID& clID() const;
00091 static const CLID& classID();
00092
00094 virtual State & closestState(double z);
00095
00097 virtual const State & closestState(double z) const;
00098
00100 virtual State & closestState(const HepPlane3D& plane);
00101
00103 virtual const State & closestState(const HepPlane3D& plane) const;
00104
00106 virtual State* stateAt(const State::Location& value);
00107
00109 virtual const State* stateAt(const State::Location& value) const;
00110
00112 virtual void reset();
00113
00115 virtual FitTrack* clone() const;
00116
00118 virtual bool producedByAlgo(const HistoryFlag& value) const;
00119
00121 virtual void setProducedByAlgo(const HistoryFlag& value);
00122
00124 const std::vector<Node*>& nodes() const;
00125
00127 std::vector<Node*>& nodes();
00128
00130 void setNodes(const std::vector<Node*>& value);
00131
00133 const std::vector<Measurement*>& measurements() const;
00134
00136 std::vector<Measurement*>& measurements();
00137
00139 void setMeasurements(const std::vector<Measurement*>& value);
00140
00141 protected:
00142
00143 std::vector<Node*> m_nodes;
00144 std::vector<Measurement*> m_measurements;
00145
00146 private:
00147
00148 };
00149
00150
00151
00152
00153
00154
00155 #include "CLHEP/Geometry/Plane3D.h"
00156
00157
00158 inline const CLID& FitTrack::clID() const
00159 {
00160 return FitTrack::classID();
00161 }
00162
00163 inline const CLID& FitTrack::classID()
00164 {
00165 return CLID_FitTrack;
00166 }
00167
00168 inline const std::vector<Node*>& FitTrack::nodes() const
00169 {
00170 return m_nodes;
00171 }
00172
00173 inline std::vector<Node*>& FitTrack::nodes()
00174 {
00175 return m_nodes;
00176 }
00177
00178 inline void FitTrack::setNodes(const std::vector<Node*>& value)
00179 {
00180 m_nodes = value;
00181 }
00182
00183 inline const std::vector<Measurement*>& FitTrack::measurements() const
00184 {
00185 return m_measurements;
00186 }
00187
00188 inline std::vector<Measurement*>& FitTrack::measurements()
00189 {
00190 return m_measurements;
00191 }
00192
00193 inline void FitTrack::setMeasurements(const std::vector<Measurement*>& value)
00194 {
00195 m_measurements = value;
00196 }
00197
00198
00199 #endif