00001 /* -*- mode: c++ -*- */ 00002 00014 #ifndef _PyNTupleController_H_ 00015 #define _PyNTupleController_H_ 00016 00017 #include <string> 00018 #include <vector> 00019 00020 namespace hippodraw { 00021 00022 class CircularBuffer; 00023 class DataSource; 00024 class NTupleController; 00025 class NTuple; 00026 class PyDataSource; 00027 00035 class PyNTupleController 00036 { 00037 00038 private: 00039 00042 static PyNTupleController * s_instance; 00043 00046 static NTupleController * m_instance; 00047 00049 PyNTupleController (); 00050 00052 PyNTupleController ( const PyNTupleController &); 00053 00054 public: 00055 00058 static PyNTupleController * instance (); 00059 00062 NTuple * createNTuple (); 00063 00066 DataSource * createNTuple ( const std::string & filename ); 00067 00070 CircularBuffer * createCircularBuffer ( unsigned int n ); 00071 00074 PyDataSource * createDataArray ( const std::string & filename ); 00075 00078 DataSource * findDataSource ( const std::string & name ) const; 00079 00082 std::string registerNTuple ( DataSource * source ); 00083 00086 void registerNTuple ( const std::string & name, 00087 DataSource * source ); 00088 00093 int writeNTupleToFile ( DataSource * source, 00094 const std::string & filename ); 00095 00098 void changeName ( DataSource * source, const std::string & new_name ); 00099 00100 }; 00101 00102 } // namespace hippodraw 00103 00104 #endif // _PyNTupleController_H_