00001 #ifndef TMB_TREE_TMBSECONDARYVERTEX_HPP__
00002 #define TMB_TREE_TMBSECONDARYVERTEX_HPP__
00003
00005
00006
00007
00009
00010 #include "tmb_tree/TMBPrimaryVertex.hpp"
00011
00016 class TMBSecondaryVertex : public TMBVertex {
00017
00018 private:
00019
00020
00021
00022 TRef _primary_vertex;
00023
00024
00025
00026 mutable std::vector<double> _pv_pos;
00027 mutable std::vector<double> _pv_err;
00028 mutable double _decay_len_xy;
00029 mutable double _decay_len_z;
00030 mutable double _decay_len_xyz;
00031 mutable double _decay_sig_xy;
00032 mutable double _decay_sig_z;
00033 mutable double _decay_sig_xyz;
00034 mutable double _colinearity;
00035
00036 public:
00037 TMBSecondaryVertex();
00038 TMBSecondaryVertex(Float_t vertexx, Float_t vertexy, Float_t vertexz,
00039 Float_t covxx, Float_t covyy, Float_t covzz,
00040 Float_t covxy, Float_t covxz, Float_t covyz,
00041 Float_t chisq, const TRefArray* tracks,
00042 const TMBLorentzVector& smoothed_momentum,
00043 const TRef& primary_vertex);
00044 ~TMBSecondaryVertex() {}
00045
00046 const TMBPrimaryVertex& GetPrimaryVertex() const {
00047 return *(const TMBPrimaryVertex*)_primary_vertex.GetObject();
00048 }
00049
00050 Float_t GetDecayLenXY() const {fill_pv_attributes(); return _decay_len_xy;}
00051 Float_t GetDecayLenZ() const {fill_pv_attributes(); return _decay_len_z;}
00052 Float_t GetDecayLenXYZ() const {fill_pv_attributes(); return _decay_len_xyz;}
00053 Float_t GetDecaySigXY() const {fill_pv_attributes(); return _decay_sig_xy;}
00054 Float_t GetDecaySigZ() const {fill_pv_attributes(); return _decay_sig_z;}
00055 Float_t GetDecaySigXYZ() const {fill_pv_attributes(); return _decay_sig_xyz;}
00056 Float_t GetColinearity() const {fill_pv_attributes(); return _colinearity;}
00057
00058 private:
00059
00060 void fill_pv_attributes() const;
00061
00062 ClassDef(TMBSecondaryVertex, 1);
00063 };
00064
00065 #endif // TMB_TREE_TMBSECONDARYVERTEX_HPP__