diff --git a/FWIO/RNTupleTempInput/src/RootFile.cc b/FWIO/RNTupleTempInput/src/RootFile.cc index 9899ddcc75203..443e3d2e4d97a 100644 --- a/FWIO/RNTupleTempInput/src/RootFile.cc +++ b/FWIO/RNTupleTempInput/src/RootFile.cc @@ -57,9 +57,6 @@ #include "FWCore/ServiceRegistry/interface/ModuleCallingContext.h" //used for backward compatibility -#include "DataFormats/Provenance/interface/EventAux.h" -#include "DataFormats/Provenance/interface/LuminosityBlockAux.h" -#include "DataFormats/Provenance/interface/RunAux.h" #include "FWCore/ParameterSet/interface/ParameterSetConverter.h" #include "Rtypes.h" @@ -1064,16 +1061,8 @@ namespace edm::rntuple_temp { // Already read. return eventAuxCache_; } - if (fileFormatVersion().newAuxiliary()) { - EventAuxiliary* pEvAux = &eventAuxCache_; - eventTree_.fillAux(pEvAux); - } else { - // for backward compatibility. - EventAux eventAux; - EventAux* pEvAux = &eventAux; - eventTree_.fillAux(pEvAux); - conversion(eventAux, eventAuxCache_); - } + EventAuxiliary* pEvAux = &eventAuxCache_; + eventTree_.fillAux(pEvAux); lastEventEntryNumberRead_ = eventTree_.entryNumber(); return eventAuxCache_; } @@ -1139,15 +1128,8 @@ namespace edm::rntuple_temp { std::shared_ptr RootFile::fillLumiAuxiliary() { auto lumiAuxiliary = std::make_shared(); - if (fileFormatVersion().newAuxiliary()) { - LuminosityBlockAuxiliary* pLumiAux = lumiAuxiliary.get(); - lumiTree_.fillAux(pLumiAux); - } else { - LuminosityBlockAux lumiAux; - LuminosityBlockAux* pLumiAux = &lumiAux; - lumiTree_.fillAux(pLumiAux); - conversion(lumiAux, *lumiAuxiliary); - } + LuminosityBlockAuxiliary* pLumiAux = lumiAuxiliary.get(); + lumiTree_.fillAux(pLumiAux); if (daqProvenanceHelper_) { lumiAuxiliary->setProcessHistoryID(daqProvenanceHelper_->mapProcessHistoryID(lumiAuxiliary->processHistoryID())); } @@ -1159,15 +1141,8 @@ namespace edm::rntuple_temp { std::shared_ptr RootFile::fillRunAuxiliary() { auto runAuxiliary = std::make_shared(); - if (fileFormatVersion().newAuxiliary()) { - RunAuxiliary* pRunAux = runAuxiliary.get(); - runTree_.fillAux(pRunAux); - } else { - RunAux runAux; - RunAux* pRunAux = &runAux; - runTree_.fillAux(pRunAux); - conversion(runAux, *runAuxiliary); - } + RunAuxiliary* pRunAux = runAuxiliary.get(); + runTree_.fillAux(pRunAux); if (daqProvenanceHelper_) { runAuxiliary->setProcessHistoryID(daqProvenanceHelper_->mapProcessHistoryID(runAuxiliary->processHistoryID())); } diff --git a/FWIO/RNTupleTempInput/src/RootRNTuple.h b/FWIO/RNTupleTempInput/src/RootRNTuple.h index 0ae3f07d8d255..f5717378d93d4 100644 --- a/FWIO/RNTupleTempInput/src/RootRNTuple.h +++ b/FWIO/RNTupleTempInput/src/RootRNTuple.h @@ -10,6 +10,9 @@ RootRNTuple.h // used by ROOT input sources #include "DataFormats/Provenance/interface/ProductDescription.h" #include "DataFormats/Provenance/interface/BranchID.h" #include "DataFormats/Provenance/interface/IndexIntoFile.h" +#include "DataFormats/Provenance/interface/EventAuxiliary.h" +#include "DataFormats/Provenance/interface/LuminosityBlockAuxiliary.h" +#include "DataFormats/Provenance/interface/RunAuxiliary.h" #include "FWCore/Framework/interface/Frameworkfwd.h" #include "FWCore/ServiceRegistry/interface/ServiceRegistryfwd.h" #include "FWCore/Utilities/interface/BranchType.h" @@ -25,6 +28,7 @@ RootRNTuple.h // used by ROOT input sources #include #include #include +#include #include "ROOT/RNTuple.hxx" #include "ROOT/RNTupleReader.hxx" @@ -141,7 +145,11 @@ namespace edm::rntuple_temp { template void fillAux(T*& pAux) { try { - auto view = reader_->GetView(auxDesc_, pAux); + if (std::holds_alternative(auxView_)) { + auxView_ = reader_->GetView(auxDesc_, pAux); + } + auto& view = std::get>(auxView_); + view.BindRawPtr(pAux); view(entryNumber_); } catch (cms::Exception const& e) { throw Exception(errors::FileReadError, "", e); @@ -201,6 +209,11 @@ namespace edm::rntuple_temp { unsigned long treeAutoFlush_ = 0; bool promptRead_; std::unique_ptr rootDelayedReader_; + std::variant, + ROOT::RNTupleView, + ROOT::RNTupleView> + auxView_; }; } // namespace edm::rntuple_temp #endif