00001 #ifndef DataFormats_Provenance_LuminosityBlockAuxiliary_h
00002 #define DataFormats_Provenance_LuminosityBlockAuxiliary_h
00003
00004 #include <iosfwd>
00005
00006 #include "DataFormats/Provenance/interface/ProcessHistoryID.h"
00007 #include "DataFormats/Provenance/interface/LuminosityBlockID.h"
00008 #include "DataFormats/Provenance/interface/RunID.h"
00009 #include "DataFormats/Provenance/interface/Timestamp.h"
00010
00011
00012
00013 namespace edm
00014 {
00015 struct LuminosityBlockAuxiliary {
00016 LuminosityBlockAuxiliary() :
00017 processHistoryID_(),
00018 id_(),
00019 beginTime_(),
00020 endTime_() {}
00021 LuminosityBlockAuxiliary(LuminosityBlockID const& theId,
00022 Timestamp const& theTime,
00023 Timestamp const& theEndTime) :
00024 processHistoryID_(),
00025 id_(theId),
00026 beginTime_(theTime),
00027 endTime_(theEndTime) {}
00028 LuminosityBlockAuxiliary(RunNumber_t const& theRun,
00029 LuminosityBlockNumber_t const& theLumi,
00030 Timestamp const& theTime,
00031 Timestamp const& theEndTime) :
00032 processHistoryID_(),
00033 id_(theRun, theLumi),
00034 beginTime_(theTime),
00035 endTime_(theEndTime) {}
00036 ~LuminosityBlockAuxiliary() {}
00037 void write(std::ostream& os) const;
00038 ProcessHistoryID& processHistoryID() const {return processHistoryID_;}
00039 LuminosityBlockNumber_t luminosityBlock() const {return id().luminosityBlock();}
00040 RunNumber_t run() const {return id().run();}
00041 LuminosityBlockID const& id() const {return id_;}
00042 Timestamp const& beginTime() const {return beginTime_;}
00043 Timestamp const& endTime() const {return endTime_;}
00044 void setEndTime(Timestamp const& time) {
00045 if (endTime_ == Timestamp::invalidTimestamp()) endTime_ = time;
00046 }
00047 bool mergeAuxiliary(LuminosityBlockAuxiliary const& newAux);
00048
00049
00050
00051 mutable ProcessHistoryID processHistoryID_;
00052
00053 LuminosityBlockID id_;
00054
00055 Timestamp beginTime_;
00056 Timestamp endTime_;
00057 };
00058
00059 inline
00060 std::ostream&
00061 operator<<(std::ostream& os, const LuminosityBlockAuxiliary& p) {
00062 p.write(os);
00063 return os;
00064 }
00065
00066 }
00067 #endif