00001 #ifndef CAFE_VARIABLES_HPP_
00002 #define CAFE_VARIABLES_HPP_
00003
00004 #include <string>
00005 #include <vector>
00006
00007 class TBranch;
00008 class TTree;
00009
00010 namespace cafe {
00011
00012 class EventBase;
00013
00035 class Variables {
00036 public:
00037 Variables();
00038 Variables(const std::vector<std::string>& names);
00039 Variables(const std::string& name1);
00040 Variables(const std::string& name1, const std::string& name2);
00041 Variables(const std::string& name1, const std::string& name2, const std::string& name3);
00042 Variables(const std::string& name1, const std::string& name2, const std::string& name3, const std::string& name4);
00043 Variables(const Variables& other);
00044 Variables& operator=(const Variables& other);
00045 Variables& add(const std::string& name);
00046 Variables& add(const std::vector<std::string>& name);
00047 ~Variables();
00048 bool empty() const;
00049 public:
00050
00051 void get(TTree *, TBranch *br, int cookie) const;
00052 private:
00054 std::vector<std::string> _names;
00056 mutable std::vector<TBranch*> _subbranches;
00058 mutable int _cookie;
00061 mutable TBranch *_branch;
00062 };
00063
00064 }
00065
00066 #endif // CAFE_VARIABLES_HPP_