File indexing completed on 2025-01-31 02:19:21
0001 #ifndef FWCore_Framework_LuminosityBlockPrincipal_h
0002 #define FWCore_Framework_LuminosityBlockPrincipal_h
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015 #include "DataFormats/Provenance/interface/LuminosityBlockAuxiliary.h"
0016 #include "DataFormats/Provenance/interface/RunID.h"
0017 #include "FWCore/Utilities/interface/LuminosityBlockIndex.h"
0018 #include "FWCore/Framework/interface/Principal.h"
0019 #include "FWCore/Framework/interface/ProductResolversFactory.h"
0020 #include "FWCore/Utilities/interface/propagate_const.h"
0021
0022 #include <memory>
0023
0024 #include <vector>
0025
0026 namespace edm {
0027
0028 class HistoryAppender;
0029 class ModuleCallingContext;
0030 class RunPrincipal;
0031
0032 class LuminosityBlockPrincipal : public Principal {
0033 public:
0034 typedef LuminosityBlockAuxiliary Auxiliary;
0035 typedef Principal Base;
0036
0037 template <ProductResolversFactory FACTORY>
0038 LuminosityBlockPrincipal(std::shared_ptr<ProductRegistry const> reg,
0039 FACTORY&& iFactory,
0040 ProcessConfiguration const& pc,
0041 HistoryAppender* historyAppender,
0042 unsigned int index)
0043 : LuminosityBlockPrincipal(reg, iFactory(InLumi, pc.processName(), *reg), pc, historyAppender, index) {}
0044
0045 ~LuminosityBlockPrincipal() override {}
0046
0047 void fillLuminosityBlockPrincipal(ProcessHistory const* processHistory, DelayedReader* reader = nullptr);
0048
0049 RunPrincipal const& runPrincipal() const { return *runPrincipal_; }
0050
0051 RunPrincipal& runPrincipal() { return *runPrincipal_; }
0052
0053 void setRunPrincipal(std::shared_ptr<RunPrincipal> rp) { runPrincipal_ = rp; }
0054
0055 LuminosityBlockIndex index() const { return index_; }
0056
0057 LuminosityBlockID id() const { return aux().id(); }
0058
0059 Timestamp const& beginTime() const { return aux().beginTime(); }
0060
0061 Timestamp const& endTime() const { return aux().endTime(); }
0062
0063 void setEndTime(Timestamp const& time) { aux_.setEndTime(time); }
0064
0065 LuminosityBlockNumber_t luminosityBlock() const { return aux().luminosityBlock(); }
0066
0067 void setAux(LuminosityBlockAuxiliary iAux) { aux_ = std::move(iAux); }
0068 LuminosityBlockAuxiliary const& aux() const { return aux_; }
0069
0070 RunNumber_t run() const { return aux().run(); }
0071
0072 void mergeAuxiliary(LuminosityBlockAuxiliary const& aux) { return aux_.mergeAuxiliary(aux); }
0073
0074 void put(ProductDescription const& bd, std::unique_ptr<WrapperBase> edp) const;
0075
0076 void put(ProductResolverIndex index, std::unique_ptr<WrapperBase> edp) const;
0077
0078 enum ShouldWriteLumi { kUninitialized, kNo, kYes };
0079 ShouldWriteLumi shouldWriteLumi() const { return shouldWriteLumi_; }
0080 void setShouldWriteLumi(ShouldWriteLumi value) { shouldWriteLumi_ = value; }
0081
0082 private:
0083 LuminosityBlockPrincipal(std::shared_ptr<ProductRegistry const> reg,
0084 std::vector<std::shared_ptr<ProductResolverBase>>&& resolvers,
0085 ProcessConfiguration const& pc,
0086 HistoryAppender* historyAppender,
0087 unsigned int index);
0088 unsigned int transitionIndex_() const override;
0089
0090 edm::propagate_const<std::shared_ptr<RunPrincipal>> runPrincipal_;
0091
0092 LuminosityBlockAuxiliary aux_;
0093
0094 LuminosityBlockIndex index_;
0095
0096 ShouldWriteLumi shouldWriteLumi_ = kUninitialized;
0097 };
0098 }
0099 #endif