Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-02-22 10:32:43

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 #ifndef DD4HEP_DETAIL_CONTAINERHELPERS_H
0014 #define DD4HEP_DETAIL_CONTAINERHELPERS_H
0015 
0016 // Framework include files
0017 #include <DD4hep/Primitives.h>
0018 
0019 // C/C++ include files
0020 #include <map>
0021 #include <set>
0022 #include <list>
0023 #include <vector>
0024 #include <string>
0025 
0026 /// Namespace for the AIDA detector description toolkit
0027 /** Functions useful to make projections into various containers
0028  *  when using Conditions/Alignment/DetElement processors.
0029  *
0030  *  \author  M.Frank
0031  *  \version 1.0
0032  *  \ingroup DD4HEP_CONDITIONS
0033  */
0034 namespace dd4hep {
0035 
0036   template <typename Q, typename T>
0037   void insert_item(std::vector<T>& c, Q, const T& d)  {
0038     c.emplace_back(d);
0039   }
0040   template <typename Q, typename T>
0041   void insert_item(std::vector<Q>& c, Q de, const T&)  {
0042     c.emplace_back(de);
0043   }
0044 
0045   template <typename Q, typename T>
0046   void insert_item(std::list<T>&   c, Q, const T& d)  {
0047     c.emplace_back(d);
0048   }
0049   template <typename Q, typename T>
0050   void insert_item(std::list<Q>&   c, Q de, const T&)  {
0051     c.emplace_back(de);
0052   }
0053   
0054   template <typename Q, typename T>
0055   void insert_item(std::set<T>&   c, Q, const T& d)  {
0056     c.insert(d);
0057   }
0058   template <typename Q, typename T>
0059   void insert_item(std::set<Q>&   c, Q de, const T&)  {
0060     c.insert(de);
0061   }
0062 
0063   template <typename Q, typename T>
0064   void insert_item(std::map<Q,T>&  c, Q de, const T& d)  {
0065     c.emplace(de,d);
0066   }
0067   template <typename Q, typename T>
0068   void insert_item(std::map<T,Q>&  c, Q de, const T& d)  {
0069     c.emplace(d,de);
0070   }
0071     
0072   template <typename Q, typename T>
0073   void insert_item(std::vector<std::pair<Q,T> >& c, Q de, const T& d)  {
0074     c.emplace_back(de,d);
0075   }
0076   template <typename Q, typename T>
0077   void insert_item(std::vector<std::pair<std::string,T> >& c, Q de, const T& d)  {
0078     c.emplace_back(de.path(),d);
0079   }
0080 
0081   template <typename Q, typename T>
0082   void insert_item(std::list<std::pair<Q,T> >& c, Q de, const T& d)  {
0083     c.emplace_back(de,d);
0084   }
0085   template <typename Q, typename T>
0086   void insert_item(std::list<std::pair<std::string,T> >& c, Q de, const T& d)  {
0087     c.emplace_back(de.path(),d);
0088   }
0089 
0090   template <typename Q, typename T>
0091   void insert_item(std::set<std::pair<Q,T> >& c, Q de, const T& d)  {
0092     c.emplace(de,d);
0093   }
0094   template <typename Q, typename T>
0095   void insert_item(std::set<std::pair<std::string,T> >& c, Q de, const T& d)  {
0096     c.emplace(de.path(),d);
0097   }
0098 
0099   template <typename Q, typename T>
0100   void insert_item(std::multimap<Q,T>& c, Q de, const T& d)  {
0101     c.emplace(de,d);
0102   }
0103   template <typename Q, typename T>
0104   void insert_item(std::map<std::string,T>& c, Q de, const T& d)  {
0105     c.emplace(de.path(),d);
0106   }
0107   template <typename Q, typename T>
0108   void insert_item(std::multimap<std::string,T>& c, Q de, const T& d)  {
0109     c.emplace(de.path(),d);
0110   }
0111 }      // End namespace dd4hep
0112 #endif // DD4HEP_DETAIL_CONTAINERHELPERS_H