File indexing completed on 2024-04-06 12:07:21
0001 #include "DQM/EcalMonitorTasks/interface/DQWorkerTask.h"
0002
0003 #include "FWCore/Utilities/interface/Exception.h"
0004 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0005 #include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
0006
0007 namespace ecaldqm {
0008 DQWorkerTask::DQWorkerTask() : DQWorker() {}
0009
0010
0011 void DQWorkerTask::fillDescriptions(edm::ParameterSetDescription& _desc) { DQWorker::fillDescriptions(_desc); }
0012
0013 void DQWorkerTask::setME(edm::ParameterSet const& _ps) {
0014 DQWorker::setME(_ps);
0015
0016 for (MESetCollection::iterator mItr(MEs_.begin()); mItr != MEs_.end(); ++mItr) {
0017 if (willConvertToEDM_)
0018 mItr->second->setBatchMode();
0019 }
0020 }
0021
0022 void DependencySet::formSequenceFragment_(Dependency const& _d,
0023 std::vector<Collections>& _sequence,
0024 std::vector<Collections>::iterator _maxPos) const {
0025 Collections col(_d.dependant);
0026 std::vector<Collections>::iterator pos(std::find(_sequence.begin(), _sequence.end(), col));
0027 if (pos == _sequence.end())
0028 _sequence.insert(_maxPos, col);
0029 else if (pos < _maxPos)
0030 return;
0031 else
0032 throw cms::Exception("InvalidConfiguration") << "Circular dependency of collections";
0033
0034 for (std::set<Collections>::const_iterator rItr(_d.requisite.begin()); rItr != _d.requisite.end(); ++rItr) {
0035 for (std::vector<Dependency>::const_iterator dItr(set_.begin()); dItr != set_.end(); ++dItr) {
0036 if (dItr->dependant != *rItr)
0037 continue;
0038 pos = std::find(_sequence.begin(), _sequence.end(), col);
0039 formSequenceFragment_(*dItr, _sequence, pos);
0040 break;
0041 }
0042 }
0043 }
0044
0045 }