File indexing completed on 2024-04-06 12:13:10
0001 #ifndef FWCore_TestProcessor_LuminosityBlock_h
0002 #define FWCore_TestProcessor_LuminosityBlock_h
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022 #include <string>
0023
0024
0025 #include "FWCore/TestProcessor/interface/TestHandle.h"
0026 #include "FWCore/Framework/interface/LuminosityBlockPrincipal.h"
0027 #include "FWCore/Utilities/interface/TypeID.h"
0028
0029
0030
0031 namespace edm {
0032
0033 namespace test {
0034
0035 class LuminosityBlock {
0036 public:
0037 LuminosityBlock(std::shared_ptr<LuminosityBlockPrincipal const> iPrincipal,
0038 std::string iModuleLabel,
0039 std::string iProcessName);
0040
0041
0042 template <typename T>
0043 TestHandle<T> get() const {
0044 static const std::string s_null;
0045 return get<T>(s_null);
0046 }
0047
0048 template <typename T>
0049 TestHandle<T> get(std::string const& iInstanceLabel) const {
0050 auto h = principal_->getByLabel(
0051 edm::PRODUCT_TYPE, edm::TypeID(typeid(T)), label_, iInstanceLabel, processName_, nullptr, nullptr, nullptr);
0052 if (h.failedToGet()) {
0053 return TestHandle<T>(std::move(h.whyFailedFactory()));
0054 }
0055 void const* basicWrapper = h.wrapper();
0056 assert(basicWrapper);
0057 Wrapper<T> const* wrapper = static_cast<Wrapper<T> const*>(basicWrapper);
0058 return TestHandle<T>(wrapper->product());
0059 }
0060
0061
0062
0063
0064 private:
0065
0066 std::shared_ptr<LuminosityBlockPrincipal const> principal_;
0067 std::string label_;
0068 std::string processName_;
0069 };
0070 }
0071 }
0072
0073 #endif