00001
00002
00014 #ifndef _QtCut_H_
00015 #define _QtCut_H_
00016
00017 #include "QtDisplay.h"
00018
00019 namespace boost {
00020 namespace python {
00021 namespace numeric {
00022 class array;
00023 }
00024 }
00025 }
00026
00027 namespace hippodraw {
00028
00029 class Cut1DPlotter;
00030 class Cut2DPlotter;
00031 class TupleCut;
00032
00042 class QtCut : public QtDisplay
00043 {
00044
00045 public:
00046
00048 QtCut( const DataSource & nt,
00049 const std::vector < std::string > & binding );
00050
00052 QtCut( const PyDataSource & nt,
00053 const std::vector < std::string > & binding );
00054
00059 QtCut ( const DataSource & source,
00060 const std::vector < std::string > & binding,
00061 QtDisplay * target, double low, double high );
00062
00067 QtCut ( const PyDataSource & nt,
00068 const std::vector < std::string > & binding,
00069 QtDisplay * target, double low, double high );
00070
00074 QtCut ( PyDataSource & source,
00075 const std::string & label,
00076 boost::python::numeric::array array,
00077 QtDisplay * target );
00078
00081 QtCut( PlotterBase * plotter );
00082
00084 void addTarget ( QtDisplay * );
00085
00088 void addTargets ( const std::vector < QtDisplay * > & targets );
00089
00092 void setCutRange ( double low, double high,
00093 const std::string & axis = "x" );
00094
00098 std::vector<double> cutRange();
00099
00104 void setEnabled ( bool yes );
00105
00108 void toggleInverted ();
00109
00110 static void
00111 fillCutList ( std::vector < const TupleCut * > & tuple_cut_list,
00112 const std::vector < QtCut * > & cut_list );
00113
00118 static NTuple *
00119 createNTuple ( const std::vector < std::string > & column_list,
00120 const std::vector < QtCut * > & cut_list,
00121 DataSource * ds );
00122
00126 static void
00127 createTnt ( const std::vector < std::string > & column_list,
00128 const std::vector < QtCut * > & cut_list,
00129 DataSource * ds,
00130 const std::string & filename,
00131 const std::string & dsname );
00132
00136 static void
00137 createFits ( const std::vector < std::string > & column_list,
00138 const std::vector < QtCut * > & cut_list,
00139 DataSource * ds,
00140 const std::string & filename,
00141 const std::string & dsname );
00142
00143 private:
00144
00147 void createCut ( const DataSource & ds,
00148 const std::vector < std::string > & binding );
00149
00150 };
00151
00152 }
00153
00154 #endif // _QtCut_H_