Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:12:11

0001 #ifndef FWCore_Framework_IntersectingIOVRecordIntervalFinder_h
0002 #define FWCore_Framework_IntersectingIOVRecordIntervalFinder_h
0003 // -*- C++ -*-
0004 //
0005 // Package:     Framework
0006 // Class  :     IntersectingIOVRecordIntervalFinder
0007 //
0008 /**\class IntersectingIOVRecordIntervalFinder IntersectingIOVRecordIntervalFinder.h FWCore/Framework/interface/IntersectingIOVRecordIntervalFinder.h
0009 
0010  Description: A RecordIntervalFinder which determines IOVs by taking the intersection of IOVs of other RecordIntervalFinders
0011 
0012  Usage:
0013     Used internally by the framework
0014 
0015 */
0016 //
0017 // Original Author:  Chris Jones
0018 //         Created:  Tue Aug 19 13:20:34 EDT 2008
0019 //
0020 
0021 // system include files
0022 #include <memory>
0023 #include <vector>
0024 
0025 // user include files
0026 #include "FWCore/Framework/interface/EventSetupRecordIntervalFinder.h"
0027 #include "FWCore/Utilities/interface/propagate_const.h"
0028 
0029 // forward declarations
0030 namespace edm {
0031   namespace eventsetup {
0032 
0033     class IntersectingIOVRecordIntervalFinder : public EventSetupRecordIntervalFinder {
0034     public:
0035       explicit IntersectingIOVRecordIntervalFinder(const EventSetupRecordKey&);
0036       IntersectingIOVRecordIntervalFinder(const IntersectingIOVRecordIntervalFinder&) = delete;
0037       const IntersectingIOVRecordIntervalFinder& operator=(const IntersectingIOVRecordIntervalFinder&) = delete;
0038       ~IntersectingIOVRecordIntervalFinder() override;
0039 
0040       void swapFinders(std::vector<edm::propagate_const<std::shared_ptr<EventSetupRecordIntervalFinder>>>&);
0041 
0042     protected:
0043       void setIntervalFor(const EventSetupRecordKey&, const IOVSyncValue&, ValidityInterval&) override;
0044 
0045     private:
0046       void doResetInterval(const eventsetup::EventSetupRecordKey&) override;
0047 
0048       bool isConcurrentFinder() const override;
0049 
0050       bool isNonconcurrentAndIOVNeedsUpdate(const EventSetupRecordKey&, const IOVSyncValue&) const override;
0051 
0052       // ---------- member data --------------------------------
0053       std::vector<edm::propagate_const<std::shared_ptr<EventSetupRecordIntervalFinder>>> finders_;
0054     };
0055   }  // namespace eventsetup
0056 }  // namespace edm
0057 
0058 #endif