00001
00014 #ifndef USER_INFO_HH
00015 #define USER_INFO_HH
00016
00017 #include "data_base.hh"
00018 #include "messenger.hh"
00019 #include <map>
00020 #include <TString.h>
00021
00022 namespace larlight {
00037 class user_info : public data_base {
00038
00039 public:
00040
00044 void dump_contents();
00045
00047 user_info(DATA::DATA_TYPE type=DATA::UserInfo);
00048
00050 user_info(const user_info &original);
00051
00053 inline void store(std::string key, double value) {_d_map[key]=value;};
00055 inline void store(std::string key, int value) {_i_map[key]=value;};
00057 inline void store(std::string key, std::string value) {_s_map[key]=value;};
00059 inline void store(std::string key, bool value) {_b_map[key]=value;};
00060
00062 void append(std::string key, double value);
00064 void append(std::string key, int value);
00066 void append(std::string key, std::string value);
00068 void append(std::string key, bool value);
00069
00071 inline bool exist_double (std::string key) const { return _d_map.find(key)!=_d_map.end(); };
00073 inline bool exist_string (std::string key) const { return _s_map.find(key)!=_s_map.end(); };
00075 inline bool exist_int (std::string key) const { return _i_map.find(key)!=_i_map.end(); };
00077 inline bool exist_bool (std::string key) const { return _b_map.find(key)!=_b_map.end(); };
00079 inline bool exist_darray (std::string key) const { return _darray_map.find(key)!=_darray_map.end(); };
00081 inline bool exist_sarray (std::string key) const { return _sarray_map.find(key)!=_sarray_map.end(); };
00083 inline bool exist_iarray (std::string key) const { return _iarray_map.find(key)!=_iarray_map.end(); };
00085 inline bool exist_barray (std::string key) const { return _barray_map.find(key)!=_barray_map.end(); };
00086
00088 double get_double (std::string key) const;
00090 int get_int (std::string key) const;
00092 std::string get_string (std::string key) const;
00094 bool get_bool (std::string key) const;
00095
00097 std::vector<double>* get_darray (std::string key);
00099 std::vector<int>* get_iarray (std::string key);
00101 std::vector<std::string>* get_sarray (std::string key);
00103 std::vector<bool>* get_barray (std::string key);
00104
00106 virtual ~user_info(){};
00107
00109 virtual void clear_data();
00110
00111 protected:
00112
00113 std::map<std::string,double> _d_map;
00114 std::map<std::string,int> _i_map;
00115 std::map<std::string,std::string> _s_map;
00116 std::map<std::string,bool> _b_map;
00117 std::map<std::string,std::vector<double> > _darray_map;
00118 std::map<std::string,std::vector<int> > _iarray_map;
00119 std::map<std::string,std::vector<std::string> > _sarray_map;
00120 std::map<std::string,std::vector<bool> > _barray_map;
00121
00123 ClassDef(user_info,1)
00125
00126 };
00127
00128
00129
00136 class event_user : public std::vector<larlight::user_info>,
00137 public event_base {
00138
00139 public:
00140
00142 event_user(DATA::DATA_TYPE type=DATA::UserInfo);
00143
00145 event_user(const event_user& original) : std::vector<larlight::user_info>(original),
00146 event_base(original)
00147 {}
00148
00150 virtual void clear_data(){event_base::clear_data(); clear();}
00151
00153 ~event_user(){}
00154
00155 private:
00156
00158 ClassDef(event_user,4)
00160 };
00161
00162 }
00163
00164 #endif
00165