Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-03-13 08:19:37

0001 //==========================================================================
0002 //  AIDA Detector description implementation 
0003 //--------------------------------------------------------------------------
0004 // Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN)
0005 // All rights reserved.
0006 //
0007 // For the licensing terms see $DD4hepINSTALL/LICENSE.
0008 // For the list of contributors see $DD4hepINSTALL/doc/CREDITS.
0009 //
0010 // Author     : M.Frank
0011 //
0012 //==========================================================================
0013 
0014 // Framework includes
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 /// Callback to output conditions information
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     /// Constructor
0030     Collector(DetElement d, T& c) : det(d), container(c) {}
0031     /// Processing callback
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 /// Namespace for the AIDA detector description toolkit
0044 namespace dd4hep {
0045 
0046   /// Namespace for the conditions part of the AIDA detector description toolkit
0047   namespace cond   {
0048 
0049     //template class ConditionsCollector<ConditionsMap>;
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   }       /* End namespace cond               */
0060 }         /* End namespace dd4hep                   */