File indexing completed on 2024-04-06 12:05:01
0001 #ifndef DataFormats_Provenance_EventAuxiliary_h
0002 #define DataFormats_Provenance_EventAuxiliary_h
0003
0004 #include <iosfwd>
0005
0006 #include "DataFormats/Provenance/interface/EventID.h"
0007 #include "DataFormats/Provenance/interface/ProcessHistoryID.h"
0008 #include "DataFormats/Provenance/interface/Timestamp.h"
0009
0010
0011
0012 namespace edm {
0013 class EventAux;
0014 class EventAuxiliary {
0015 public:
0016 friend void conversion(EventAux const&, EventAuxiliary&);
0017
0018 enum ExperimentType {
0019 Undefined = 0,
0020 PhysicsTrigger = 1,
0021 CalibrationTrigger = 2,
0022 RandomTrigger = 3,
0023 Reserved = 4,
0024 TracedEvent = 5,
0025 TestTrigger = 6,
0026 ErrorTrigger = 15
0027 };
0028 static int const invalidBunchXing = -1;
0029 static int const invalidStoreNumber = 0;
0030 EventAuxiliary()
0031 : processHistoryID_(),
0032 id_(),
0033 processGUID_(),
0034 time_(),
0035 luminosityBlock_(0U),
0036 isRealData_(false),
0037 experimentType_(Undefined),
0038 bunchCrossing_(invalidBunchXing),
0039 orbitNumber_(invalidBunchXing),
0040 storeNumber_(invalidStoreNumber) {}
0041 EventAuxiliary(EventID const& theId,
0042 std::string const& theProcessGUID,
0043 Timestamp const& theTime,
0044 bool isReal,
0045 ExperimentType eType = Undefined,
0046 int bunchXing = invalidBunchXing,
0047 int storeNum = invalidStoreNumber,
0048 int orbitNum = invalidBunchXing)
0049 : processHistoryID_(),
0050 id_(theId),
0051 processGUID_(theProcessGUID),
0052 time_(theTime),
0053 luminosityBlock_(0U),
0054 isRealData_(isReal),
0055 experimentType_(eType),
0056 bunchCrossing_(bunchXing),
0057 orbitNumber_(orbitNum),
0058 storeNumber_(storeNum) {}
0059 ~EventAuxiliary() {}
0060 void write(std::ostream& os) const;
0061 ProcessHistoryID const& processHistoryID() const { return processHistoryID_; }
0062 void setProcessHistoryID(ProcessHistoryID const& phid) { processHistoryID_ = phid; }
0063 EventID const& id() const { return id_; }
0064 EventID& id() { return id_; }
0065 std::string const& processGUID() const { return processGUID_; }
0066 Timestamp const& time() const { return time_; }
0067 LuminosityBlockNumber_t luminosityBlock() const {
0068 return id_.luminosityBlock() != 0U ? id_.luminosityBlock() : luminosityBlock_;
0069 }
0070 LuminosityBlockNumber_t oldLuminosityBlock() const { return luminosityBlock_; }
0071 void resetObsoleteInfo() { luminosityBlock_ = 0; }
0072 EventNumber_t event() const { return id_.event(); }
0073 RunNumber_t run() const { return id_.run(); }
0074 bool isRealData() const { return isRealData_; }
0075 ExperimentType experimentType() const { return experimentType_; }
0076 int bunchCrossing() const { return bunchCrossing_; }
0077 int orbitNumber() const { return orbitNumber_; }
0078 int storeNumber() const { return storeNumber_; }
0079
0080 private:
0081
0082
0083 ProcessHistoryID processHistoryID_;
0084
0085 EventID id_;
0086
0087 std::string processGUID_;
0088
0089 Timestamp time_;
0090
0091 LuminosityBlockNumber_t luminosityBlock_;
0092
0093 bool isRealData_;
0094
0095 ExperimentType experimentType_;
0096
0097 int bunchCrossing_;
0098
0099 int orbitNumber_;
0100
0101 int storeNumber_;
0102 };
0103
0104 bool isSameEvent(EventAuxiliary const& a, EventAuxiliary const& b);
0105
0106 inline std::ostream& operator<<(std::ostream& os, const EventAuxiliary& p) {
0107 p.write(os);
0108 return os;
0109 }
0110
0111 }
0112
0113 #endif