00001 //-------------------------------------------------------------------------- 00002 // File and Version Information: 00003 // $Id: TrkView.cxx,v 1.1.1.1 2005/04/21 06:01:42 zhangy Exp $ 00004 // 00005 // Description: 00006 // Class TrkView. 00007 // 00008 // Environment: 00009 // Software developed for the BaBar Detector at the SLAC B-Factory. 00010 // 00011 // Copyright Infomation; 00012 // Copyright (C) 2002 Lawrence Berkeley Laboratory 00013 // 00014 // Author(s): Dave Brown 10/25/02 00015 // 00016 //------------------------------------------------------------------------ 00017 00018 #include "TrkBase/TrkView.h" 00019 00020 const unsigned short 00021 TrkView::_xyview(0x1); 00022 const unsigned short 00023 TrkView::_zview(0x2); 00024 const unsigned short 00025 TrkView::_bothview(0x3); 00026 00027 TrkView::TrkView(TrkEnums::TrkViewInfo view) : 00028 _view(0) 00029 { 00030 addView(view); 00031 } 00032 00033 TrkView::TrkView(unsigned short& pat) : 00034 _view( (pat & _bothview)) 00035 { 00036 } 00037 00038 TrkView::TrkView(const TrkView& other) : _view(other._view) 00039 {} 00040 00041 TrkView& 00042 TrkView::operator =(const TrkView& other) { 00043 if(this != &other){ 00044 _view = other._view; 00045 } 00046 return *this; 00047 } 00048 00049 TrkView::~TrkView() 00050 {} 00051 00052 void 00053 TrkView::addView(TrkEnums::TrkViewInfo view) { 00054 switch (view) { 00055 case TrkEnums::noView: default: 00056 break; 00057 case TrkEnums::xyView: 00058 _view |= _xyview; 00059 break; 00060 case TrkEnums::zView: 00061 _view |= _zview; 00062 break; 00063 case TrkEnums::bothView: 00064 _view |= _bothview; 00065 break; 00066 } 00067 } 00068 00069 TrkEnums::TrkViewInfo 00070 TrkView::view() const { 00071 switch (_view) { 00072 case 0: default: 00073 return TrkEnums::noView; 00074 case _xyview: 00075 return TrkEnums::xyView; 00076 case _zview: 00077 return TrkEnums::zView; 00078 case _bothview: 00079 return TrkEnums::bothView; 00080 } 00081 } 00082 00083 bool 00084 TrkView::contains(const TrkView& other) const { 00085 return (other.viewData() & _view) == other.viewData(); 00086 } 00087 00088 bool 00089 TrkView::operator ==(const TrkView& other) const { 00090 return other.viewData() == _view; 00091 } 00092 00093 bool 00094 TrkView::operator != (const TrkView& other) const { 00095 return other.viewData() != _view; 00096 } 00097 00098 bool 00099 TrkView::contains(TrkEnums::TrkViewInfo view ) const { 00100 TrkView other(view); 00101 return contains(other); 00102 } 00103