00001
00002
00003
00004
00005
00006
00007 #ifndef EDM_EVENTHANDLE_H
00008 #define EDM_EVENTHANDLE_H
00009 #include "EventDataModel/Event.h"
00010 #include "EventDataModel/DataBucket.h"
00011 namespace edm { class EventHeader; }
00012
00013 namespace edm {
00016 class EventHandle {
00017 public:
00018 EventHandle();
00019 virtual ~EventHandle();
00020
00021 void Clear();
00022 int ClearLoadFlags();
00023 void SetLoaded(int branchId) const;
00024
00025 const EventHeader& Header() const;
00026 const DataBucket& MC() const;
00027 const DataBucket& DAQ() const;
00028 const DataBucket& DetSim() const;
00029 const DataBucket& Raw() const;
00030 const DataBucket& RawAux() const;
00031 const DataBucket& Cal() const;
00032 const DataBucket& Reco() const;
00033 const DataBucket& User() const;
00034 const DataBucket& Summary() const;
00035
00036 EventHeader& Header();
00037 DataBucket& MC();
00038 DataBucket& DetSim();
00039 DataBucket& DAQ();
00040 DataBucket& Raw();
00041 DataBucket& RawAux();
00042 DataBucket& Cal();
00043 DataBucket& Reco();
00044 DataBucket& User();
00045 DataBucket& Summary();
00046
00047 protected:
00048
00049 typedef enum {
00050 kHeaderID,
00051 kMCID,
00052 kDetSimID,
00053 kDAQID,
00054 kRawID,
00055 kRawAuxID,
00056 kCalID,
00057 kRecoID,
00058 kUserID,
00059 kSummaryID,
00060 kNBranch
00061 } BranchID_t;
00062
00063 DataBucket& Bucket(BranchID_t branchID) const;
00064 bool IsLoaded(BranchID_t branchID) const;
00065 virtual int Load(int branchID) const = 0;
00066
00067 protected:
00068 int fObjectCnt;
00069 mutable bool fIsLoaded[kNBranch];
00070
00071 Event* fEvent;
00072 mutable DataBucket fMC;
00073 mutable DataBucket fDetSim;
00074 mutable DataBucket fDAQ;
00075 mutable DataBucket fRaw;
00076 mutable DataBucket fRawAux;
00077 mutable DataBucket fCal;
00078 mutable DataBucket fReco;
00079 mutable DataBucket fUser;
00080 mutable DataBucket fSummary;
00081 };
00082 }
00083 #endif // EDMEVENTHANDLE
00084