00001 #ifndef _Q_EVENT_AUXDATA_HH_ 00002 #define _Q_EVENT_AUXDATA_HH_ 00003 00010 #include <TObject.h> 00011 #include <list> 00012 #include <string> 00013 #include <map> 00014 00015 class QTree; 00016 class TObjString; 00017 class QObjectR; 00018 00019 namespace Cuore {class QEventAuxData; class QObject;}; 00020 00021 class QEventAuxDataR : public TObject { 00022 00023 public: 00024 QEventAuxDataR(); 00025 00026 virtual ~QEventAuxDataR(); 00027 00028 void Init(const Cuore::QEventAuxData& evAuxData, bool saveAll = false); 00029 00030 void Init(QTree& tree); 00031 00032 void Assign(const Cuore::QEventAuxData& evAuxData); 00033 00034 void AddBranchesToTree(QTree& tree); 00035 00036 void Fill(Cuore::QEventAuxData& evAuxData) ; 00037 00038 void Clear(); 00039 00040 00041 template<class T> class Datum { 00042 public: 00043 Datum() { fObj = 0; fQObj = 0; fName = ""; } 00044 00045 Datum(const std::string& name) { fName = name; fObj = 0; fQObj = 0; } 00046 00047 virtual ~Datum() {}; 00048 00049 const std::string& GetName() const { return fName; } 00050 00051 const T& Get() const { return fObj; } 00052 00053 private: 00054 const Datum<T>& operator=(const Datum<T>&) { return *this; } 00055 00056 std::string fName; 00057 T fObj; 00058 Cuore::QObject* fQObj; 00059 00060 friend class QEventAuxDataR; 00061 ClassDef(Datum,1) 00062 }; 00063 00064 const std::list<QEventAuxDataR::Datum<QObjectR*> >& GetQObjectRList() const {return fQObjectList; } 00065 const std::list<QEventAuxDataR::Datum<TObjString*> >& GetTObjStringList() const {return fStringList; } 00066 const std::list<QEventAuxDataR::Datum<TObject*> >& GetTObjectList() const {return fTObjectList; } 00067 const std::list<QEventAuxDataR::Datum<int> >& GetIntList() const {return fIntList; } 00068 const std::list<QEventAuxDataR::Datum<double> >& GetDoubleList() const {return fDoubleList; } 00069 const std::list<QEventAuxDataR::Datum<float> >& GetFloatList() const {return fFloatList; } 00070 const std::list<QEventAuxDataR::Datum<bool> >& GetBoolList() const {return fBoolList; } 00071 00072 QObjectR* GetQObjectR(std::string name); 00073 TObject* GetTObject(std::string name); 00074 TObjString* GetTObjString(std::string name); 00075 int GetInt(std::string name); 00076 double GetDouble(std::string name); 00077 float GetFloat(std::string name); 00078 bool GetBool(std::string name); 00079 00080 00081 00082 private: 00083 00084 std::list<Datum<int> > fIntList; 00085 std::list<Datum<double> > fDoubleList; 00086 std::list<Datum<float> > fFloatList; 00087 std::list<Datum<bool> > fBoolList; 00088 std::list<Datum<TObjString*> > fStringList; 00089 std::list<Datum<QObjectR*> > fQObjectList; 00090 std::list<Datum<TObject*> > fTObjectList; 00091 00092 ClassDef(QEventAuxDataR,1) 00093 }; 00094 00095 #endif