00001 00012 // for truncation warning in debug mode 00013 #ifdef _MSC_VER 00014 #include "msdevstudio/MSconfig.h" 00015 #endif 00016 00017 #include "TupleCut.h" 00018 00019 #include "datasrcs/DataSource.h" 00020 00021 #include <algorithm> 00022 00023 TupleCut:: 00024 TupleCut () 00025 : m_column ( 0 ), 00026 m_invert ( false ), 00027 m_enabled ( true ) 00028 { 00029 } 00030 00031 void 00032 TupleCut:: 00033 setEnabled ( bool yes ) 00034 { 00035 m_enabled = yes; 00036 } 00037 00038 bool 00039 TupleCut:: 00040 isEnabled () const 00041 { 00042 return m_enabled; 00043 } 00044 00045 bool TupleCut::acceptRow ( const DataSource * ntuple, 00046 unsigned int i ) const 00047 { 00048 bool shouldBeAccepted = true; 00049 00050 if ( m_enabled ) { 00051 double value = ntuple -> valueAt ( i, m_column ); 00052 bool included = m_range.includes ( value ); 00053 shouldBeAccepted = 00054 ( included && ! m_invert ) || 00055 ( !included && m_invert ); 00056 } 00057 00058 return shouldBeAccepted; 00059 } 00060 00061 void TupleCut::setColumn( unsigned int column ) 00062 { 00063 m_column = column; 00064 } 00065 00066 unsigned int 00067 TupleCut:: 00068 getColumn () const 00069 { 00070 return m_column; 00071 } 00072 00073 void 00074 TupleCut:: 00075 setRange ( const Range & range ) 00076 { 00077 m_range = range; 00078 } 00079 00080 const Range & 00081 TupleCut:: 00082 getRange ( ) const 00083 { 00084 return m_range; 00085 } 00086 00087 void 00088 TupleCut:: 00089 setInversion ( bool state ) 00090 { 00091 m_invert = state; 00092 } 00093 00094 bool 00095 TupleCut:: 00096 getInversion ( ) const 00097 { 00098 return m_invert; 00099 } 00100 00101 void TupleCut::toggleInverted() 00102 { 00103 m_invert = m_invert ? false : true; 00104 } 00105 00106 const std::string & 00107 TupleCut:: 00108 getLabel () const 00109 { 00110 return m_label; 00111 } 00112 00113 void 00114 TupleCut:: 00115 setLabel ( const std::string & label ) 00116 { 00117 m_label = label; 00118 }