00001 #ifndef QUICK_ANA__EVENT_DATA_H
00002 #define QUICK_ANA__EVENT_DATA_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include <QuickAna/Global.h>
00021
00022 #include <PATInterfaces/SystematicSet.h>
00023 #include <unordered_map>
00024
00025 namespace ana
00026 {
00054
00055 class EventData
00056 {
00057
00058
00059
00060
00064 public:
00065 void testInvariant () const;
00066
00067
00071 public:
00072 EventData ();
00073
00074
00081 public:
00082 const std::set<ObjectType>& getObjectTypes () const;
00083
00084
00088 public:
00089 const std::set<CP::SystematicSet>& getSystematics () const;
00090
00091
00101 public:
00102 const std::string&
00103 getName (ObjectType type, const CP::SystematicSet& sys) const;
00104
00112 public:
00113 void
00114 setName (ObjectType type, const CP::SystematicSet& sys,
00115 const std::string& val_name);
00116
00119 public:
00120 std::vector<std::string>
00121 getNames (ObjectType type) const;
00122
00123
00140 public:
00141 const std::string&
00142 getSourceName (ObjectType type, const CP::SystematicSet& sys) const;
00143
00151 public:
00152 void
00153 setSourceName (ObjectType type, const CP::SystematicSet& sys,
00154 const std::string& val_sourceName);
00155
00158 public:
00159 std::vector<std::string>
00160 getSourceNames (ObjectType type) const;
00161
00162
00163
00164
00165
00166
00167
00169 private:
00170 std::set<ObjectType> m_objectTypes;
00171
00173 private:
00174 std::set<CP::SystematicSet> m_systematics;
00175
00177 private:
00178 std::unordered_map<CP::SystematicSet,std::string> m_names [EnumSize<ObjectType>::dataSize];
00179
00181 private:
00182 std::unordered_map<CP::SystematicSet,std::string> m_sourceNames [EnumSize<ObjectType>::dataSize];
00183 };
00184 }
00185
00186 #endif