00001
00022 #ifndef CONTEXT_H
00023 #define CONTEXT_H
00024
00025 #include "TimeStamp.h"
00026 #include "Conventions/SimFlag.h"
00027 #include "Conventions/Site.h"
00028 #include "Conventions/DetectorId.h"
00029 #include "Conventions/Niche.h"
00030
00031 #include <iosfwd>
00032 #include <string>
00033
00034 class Context {
00035 public:
00036 Context();
00037
00038 Context(const Context& other);
00039
00040 Context(Site::Site_t site,
00041 SimFlag::SimFlag_t flag,
00042 const TimeStamp& time = TimeStamp(),
00043 DetectorId::DetectorId_t det = DetectorId::kUnknown);
00044
00045 Context& operator= (const Context& rhs);
00046
00047 virtual ~Context() {};
00048
00050 const TimeStamp& GetTimeStamp() const { return mTimeStamp; }
00051
00053 SimFlag::SimFlag_t GetSimFlag() const { return mSimFlag; }
00054
00056 Site::Site_t GetSite() const { return mSite; }
00057
00059 DetectorId::DetectorId_t GetDetId() const { return mDetId; }
00060
00061
00063 void SetTimeStamp(const TimeStamp& ts) { mTimeStamp = ts; }
00064
00066 void SetSimFlag(SimFlag::SimFlag_t flag) { mSimFlag = flag; }
00067
00069 void SetSite(Site::Site_t site) { mSite = site; }
00070
00071
00072 void SetDetId(DetectorId::DetectorId_t det) { mDetId = det; }
00073
00074
00075 virtual std::string AsString(const char* option = "") const;
00076 virtual bool IsValid() const;
00077
00078 protected:
00079
00080 Site::Site_t mSite;
00081 SimFlag::SimFlag_t mSimFlag;
00082 TimeStamp mTimeStamp;
00083 DetectorId::DetectorId_t mDetId;
00084
00085 private:
00086
00087 };
00088
00089 std::ostream& operator<<(std::ostream& os, const Context& c);
00090
00091 bool operator==(const Context& lhs, const Context& rhs);
00092 bool operator!=(const Context& lhs, const Context& rhs);
00093 bool operator< (const Context& lhs, const Context& rhs);
00094 bool operator> (const Context& lhs, const Context& rhs);
00095 bool operator<=(const Context& lhs, const Context& rhs);
00096 bool operator>=(const Context& lhs, const Context& rhs);
00097
00098
00099 #endif // CONTEXT_H