Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #include "FWCore/Framework/src/EventSetupsController.h"
00018 #include "FWCore/Framework/interface/EventSetupProviderMaker.h"
00019 #include "FWCore/Framework/interface/EventSetupProvider.h"
00020 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00021
00022 #include <algorithm>
00023
00024
00025
00026
00027
00028 namespace edm {
00029
00030 namespace eventsetup {
00031
00032
00033
00034
00035
00036
00037
00038 EventSetupsController::EventSetupsController()
00039 {
00040 }
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066 boost::shared_ptr<EventSetupProvider>
00067 EventSetupsController::makeProvider(ParameterSet& iPSet)
00068 {
00069 boost::shared_ptr<EventSetupProvider> returnValue(makeEventSetupProvider(iPSet) );
00070
00071 fillEventSetupProvider(*this, *returnValue, iPSet);
00072
00073 providers_.push_back(returnValue);
00074
00075 return returnValue;
00076 }
00077
00078 void
00079 EventSetupsController::eventSetupForInstance(IOVSyncValue const& syncValue) const {
00080 std::for_each(providers_.begin(), providers_.end(), [&syncValue](boost::shared_ptr<EventSetupProvider> const& esp) {
00081 esp->eventSetupForInstance(syncValue);
00082 });
00083 }
00084
00085 void
00086 EventSetupsController::forceCacheClear() const {
00087 std::for_each(providers_.begin(), providers_.end(), [](boost::shared_ptr<EventSetupProvider> const& esp) {
00088 esp->forceCacheClear();
00089 });
00090 }
00091
00092 boost::shared_ptr<EventSetupRecordIntervalFinder> const*
00093 EventSetupsController::getAlreadyMadeESSource(ParameterSet const& pset) const {
00094 auto elements = essources_.equal_range(pset.id());
00095 for (auto it = elements.first; it != elements.second; ++it) {
00096 if (isTransientEqual(pset, *it->second.first)) {
00097 return &it->second.second;
00098 }
00099 }
00100 return 0;
00101 }
00102
00103 void
00104 EventSetupsController::putESSource(ParameterSet const& pset, boost::shared_ptr<EventSetupRecordIntervalFinder> const& component) {
00105 essources_.insert(std::pair<ParameterSetID, std::pair<ParameterSet const*, boost::shared_ptr<EventSetupRecordIntervalFinder> > >(pset.id(),
00106 std::pair<ParameterSet const*, boost::shared_ptr<EventSetupRecordIntervalFinder> >(&pset, component)));
00107 }
00108
00109 void
00110 EventSetupsController::clearComponents() {
00111 essources_.clear();
00112 }
00113
00114
00115
00116
00117
00118
00119
00120
00121 }
00122 }