00001
00002
00003
00004
00005
00006
00007
00008
00010 #include "EventDataModel/EventHandle.h"
00011 #include "EventDataModel/DataBucket.h"
00012 #include "EventDataModel/Event.h"
00013 #include "TProcessID.h"
00014 using namespace edm;
00015
00016
00020 EventHandle::EventHandle() :
00021 fObjectCnt(TProcessID::GetObjectCount()),
00022 fEvent (new Event ),
00023 fMC (fEvent->fMC ),
00024 fDetSim (fEvent->fDetSim),
00025 fDAQ (fEvent->fDAQ ),
00026 fRaw (fEvent->fRaw ),
00027 fRawAux (fEvent->fRawAux),
00028 fCal (fEvent->fCal ),
00029 fReco (fEvent->fReco ),
00030 fUser (fEvent->fUser ),
00031 fSummary(fEvent->fSummary)
00032 {
00033 for (int i = 0; i<kNBranch; ++i) fIsLoaded[i] = false;
00034 }
00035
00036
00040 EventHandle::~EventHandle()
00041 {
00042 fMC. ClearArrays();
00043 fDetSim. ClearArrays();
00044 fDAQ. ClearArrays();
00045 fRaw. ClearArrays();
00046 fRawAux. ClearArrays();
00047 fCal. ClearArrays();
00048 fReco. ClearArrays();
00049 fUser. ClearArrays();
00050 fSummary.ClearArrays();
00051 delete fEvent;
00052 }
00053
00054
00058 void EventHandle::Clear()
00059 {
00060 this->ClearLoadFlags();
00061 fEvent->Clear();
00062 }
00063
00064
00071 int EventHandle::ClearLoadFlags()
00072 {
00073 int isave=0;
00074 TProcessID::SetObjectCount(fObjectCnt);
00075
00076 for (int i=0; i<kNBranch; ++i) {
00077 if (fIsLoaded[i] == true) isave |= (1 << i);
00078 fIsLoaded[i] = false;
00079 }
00080 return isave;
00081 }
00082
00083
00090 void EventHandle::SetLoaded(int branchId) const
00091 {
00092 assert(branchId>=0 && branchId<=kNBranch);
00093
00094 if (branchId==kNBranch) {
00095 for (int i=0; i<kNBranch; ++i) fIsLoaded[i] = true;
00096 return;
00097 }
00098
00099 fIsLoaded[branchId] = true;
00100 }
00101
00102
00107 EventHeader& EventHandle::Header()
00108 {
00109 if (this->IsLoaded(kHeaderID) == false) this->Load(kHeaderID);
00110
00111 return *(fEvent->fHeader);
00112 }
00113
00114
00119 const EventHeader& EventHandle::Header() const
00120 {
00121 if (this->IsLoaded(kHeaderID) == false) this->Load(kHeaderID);
00122
00123 return *(fEvent->fHeader);
00124 }
00125
00126
00133 DataBucket& EventHandle::Bucket(BranchID_t branchID) const
00134 {
00135 if (this->IsLoaded(branchID)==false) this->Load(branchID);
00136
00137 switch (branchID) {
00138 case kMCID: return fMC;
00139 case kDetSimID: return fDetSim;
00140 case kDAQID: return fDAQ;
00141 case kRawID: return fRaw;
00142 case kRawAuxID: return fRawAux;
00143 case kCalID: return fCal;
00144 case kRecoID: return fReco;
00145 case kUserID: return fUser;
00146 case kSummaryID: return fSummary;
00147 default: abort();
00148 }
00149
00150
00151 static DataBucket empty(0);
00152 return empty;
00153 }
00154
00155
00156
00157 DataBucket& EventHandle::MC() { return this->Bucket(kMCID); }
00158 DataBucket& EventHandle::DetSim() { return this->Bucket(kDetSimID); }
00159 DataBucket& EventHandle::DAQ() { return this->Bucket(kDAQID); }
00160 DataBucket& EventHandle::Raw() { return this->Bucket(kRawID); }
00161 DataBucket& EventHandle::RawAux() { return this->Bucket(kRawAuxID); }
00162 DataBucket& EventHandle::Cal() { return this->Bucket(kCalID); }
00163 DataBucket& EventHandle::Reco() { return this->Bucket(kRecoID); }
00164 DataBucket& EventHandle::User() { return this->Bucket(kUserID); }
00165 DataBucket& EventHandle::Summary(){ return this->Bucket(kSummaryID);}
00166
00167 const DataBucket& EventHandle::MC() const {
00168 return this->Bucket(kMCID);
00169 }
00170 const DataBucket& EventHandle::DetSim() const {
00171 return this->Bucket(kDetSimID);
00172 }
00173 const DataBucket& EventHandle::DAQ() const {
00174 return this->Bucket(kDAQID);
00175 }
00176 const DataBucket& EventHandle::Raw() const {
00177 return this->Bucket(kRawID);
00178 }
00179 const DataBucket& EventHandle::RawAux() const {
00180 return this->Bucket(kRawAuxID);
00181 }
00182 const DataBucket& EventHandle::Cal() const {
00183 return this->Bucket(kCalID);
00184 }
00185 const DataBucket& EventHandle::Reco() const {
00186 return this->Bucket(kRecoID);
00187 }
00188 const DataBucket& EventHandle::User() const {
00189 return this->Bucket(kUserID);
00190 }
00191 const DataBucket& EventHandle::Summary() const {
00192 return this->Bucket(kSummaryID);
00193 }
00194
00195
00201 bool EventHandle::IsLoaded(BranchID_t id) const
00202 {
00203 if (id < kNBranch && id >= 0) return fIsLoaded[id];
00204 abort();
00205 return false;
00206 }
00207