File indexing completed on 2025-03-13 08:19:37
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015 #include <DD4hep/Printout.h>
0016 #include <DD4hep/ConditionsProcessor.h>
0017 #include <DD4hep/detail/ContainerHelpers.h>
0018
0019 using namespace dd4hep;
0020 using namespace dd4hep::cond;
0021
0022
0023
0024 template <typename T>
0025 int ConditionsCollector<T>::operator()(DetElement de, int) const {
0026 struct Collector : public Condition::Processor {
0027 DetElement det;
0028 T& container;
0029
0030 Collector(DetElement d, T& c) : det(d), container(c) {}
0031
0032 virtual int process(Condition c) const override { insert_item(container, det, c); return 1; }
0033 };
0034 if ( de.isValid() ) {
0035 mapping.scan(de, ConditionsMap::FIRST_ITEM, ConditionsMap::LAST_ITEM, Collector(de,conditions));
0036 return (int)conditions.size();
0037 }
0038 except("Conditions","Cannot process conditions of an invalid detector element");
0039 return 0;
0040 }
0041
0042
0043
0044 namespace dd4hep {
0045
0046
0047 namespace cond {
0048
0049
0050 template class ConditionsCollector<std::list<Condition> >;
0051 template class ConditionsCollector<std::vector<Condition> >;
0052 template class ConditionsCollector<std::map<DetElement,Condition> >;
0053 template class ConditionsCollector<std::vector<std::pair<DetElement,Condition> > >;
0054 template class ConditionsCollector<std::vector<std::pair<std::string,Condition> > >;
0055
0056 template class ConditionsCollector<std::multimap<DetElement,Condition> >;
0057 template class ConditionsCollector<std::map<std::string,Condition> >;
0058 template class ConditionsCollector<std::multimap<std::string,Condition> >;
0059 }
0060 }