00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef TrEvent_TrNode_H
00019 #define TrEvent_TrNode_H 1
00020
00021
00022 #include "Kernel/CLHEPStreams.h"
00023 #include "GaudiKernel/ObjectList.h"
00024 #include "GaudiKernel/ObjectVector.h"
00025 #include "GaudiKernel/StreamBuffer.h"
00026 #include "Event/TrMeasurement.h"
00027
00028
00038 class TrNode
00039 {
00040
00041 public:
00042
00043 enum Type {OTMeasurement,STMeasurement,TTMeasurement,VeloRMeasurement,VeloPhiMeasurement};
00044
00046 TrNode()
00047 : m_type(0),
00048 m_residual(0.0),
00049 m_errResidual(0.0),
00050 m_measurement() {}
00051
00053 virtual ~TrNode() {}
00054
00056 virtual TrNode* clone() const;
00057
00059 int type() const;
00060
00062 void setType(int value);
00063
00065 double residual() const;
00066
00068 void setResidual(double value);
00069
00071 double errResidual() const;
00072
00074 void setErrResidual(double value);
00075
00077 const TrMeasurement* measurement() const;
00078
00080 TrMeasurement* measurement();
00081
00083 void setMeasurement(TrMeasurement* value);
00084
00086 friend StreamBuffer& operator<< (StreamBuffer& s, const TrNode& obj)
00087 {
00088 return obj.serialize(s);
00089 }
00090
00092 friend StreamBuffer& operator>> (StreamBuffer& s, TrNode& obj)
00093 {
00094 return obj.serialize(s);
00095 }
00096
00098 friend std::ostream& operator<< (std::ostream& s, const TrNode& obj)
00099 {
00100 return obj.fillStream(s);
00101 }
00102
00104 virtual StreamBuffer& serialize(StreamBuffer& s) const;
00105
00107 virtual StreamBuffer& serialize(StreamBuffer& s);
00108
00110 virtual std::ostream& fillStream(std::ostream& s) const;
00111
00112 protected:
00113
00114 private:
00115
00116 int m_type;
00117 double m_residual;
00118 double m_errResidual;
00119 TrMeasurement* m_measurement;
00120
00121 };
00122
00123
00124
00125
00126
00127
00128 inline int TrNode::type() const
00129 {
00130 return m_type;
00131 }
00132
00133 inline void TrNode::setType(int value)
00134 {
00135 m_type = value;
00136 }
00137
00138 inline double TrNode::residual() const
00139 {
00140 return m_residual;
00141 }
00142
00143 inline void TrNode::setResidual(double value)
00144 {
00145 m_residual = value;
00146 }
00147
00148 inline double TrNode::errResidual() const
00149 {
00150 return m_errResidual;
00151 }
00152
00153 inline void TrNode::setErrResidual(double value)
00154 {
00155 m_errResidual = value;
00156 }
00157
00158 inline const TrMeasurement* TrNode::measurement() const
00159 {
00160 return m_measurement;
00161 }
00162
00163 inline TrMeasurement* TrNode::measurement()
00164 {
00165 return m_measurement;
00166 }
00167
00168 inline void TrNode::setMeasurement(TrMeasurement* value)
00169 {
00170 m_measurement = value;
00171 }
00172
00173 inline StreamBuffer& TrNode::serialize(StreamBuffer& s) const
00174 {
00175 s << m_type
00176 << (float)m_residual
00177 << (float)m_errResidual
00178 << m_measurement;
00179 return s;
00180 }
00181
00182 inline StreamBuffer& TrNode::serialize(StreamBuffer& s)
00183 {
00184 float l_residual, l_errResidual;
00185 s >> m_type
00186 >> l_residual
00187 >> l_errResidual
00188 >> m_measurement;
00189 m_residual = l_residual;
00190 m_errResidual = l_errResidual;
00191 return s;
00192 }
00193
00194 inline std::ostream& TrNode::fillStream(std::ostream& s) const
00195 {
00196 s << "{ "
00197 << " type:\t" << m_type << std::endl
00198 << " residual:\t" << (float)m_residual << std::endl
00199 << " errResidual:\t" << (float)m_errResidual << std::endl
00200 << " measurement:\t" << m_measurement << " } ";
00201 return s;
00202 }
00203
00204
00205 #endif