Back to home page

EIC code displayed by LXR

 
 

    


Warning, file /include/XML/XMLParsers.h was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

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   Markus Frank
0011 //  \date     2017-03-15
0012 //  \version  1.0
0013 //
0014 //==========================================================================
0015 #ifndef XML_XMLPARSERS_H
0016 #define XML_XMLPARSERS_H
0017 
0018 // Framework include files
0019 #include <DD4hep/AlignmentData.h>
0020 #include <XML/XMLElements.h>
0021 
0022 // C/C++ include files
0023 
0024 
0025 /// Namespace for the AIDA detector description toolkit
0026 namespace dd4hep {
0027 
0028   // Forward declarations
0029   class OpaqueDataBlock;
0030   
0031   /// Namespace for the AIDA detector description toolkit supporting XML utilities
0032   namespace xml  {
0033 
0034     /// Set debug print level for this module. Default is OFF
0035     bool setXMLParserDebug(bool new_value);
0036     
0037     /// Convert rotation XML objects to dd4hep::RotationZYX
0038     /**    <rotation x="0.5" y="0"  z="0"/>  => dd4hep::RotationZYX
0039      *
0040      *  \author  M.Frank
0041      *  \version 1.0
0042      *  \date    01/04/2014
0043      */
0044     void parse(Handle_t e, RotationZYX& rot);
0045 
0046     /// Convert XML position objects to dd4hep::Position
0047     /**
0048      *    <position x="0.5" y="0"  z="0"/>  => dd4hep::Position
0049      *
0050      *  \author  M.Frank
0051      *  \version 1.0
0052      *  \date    01/04/2014
0053      */
0054     void parse(Handle_t e, Position& pos);
0055 
0056     /// Convert XML pivot objects to dd4hep::Translation3D objects
0057     /**
0058      *    <pivot x="0.5" y="0"  z="0"/>
0059      *
0060      *  \author  M.Frank
0061      *  \version 1.0
0062      *  \date    01/04/2014
0063      */
0064     void parse(Handle_t e, Translation3D& tr);
0065     
0066     /// Convert alignment delta objects to Delta
0067     /**
0068      *     A generic alignment transformation is defined by
0069      *     - a translation in 3D space identified in XML as a
0070      *         <position/> element
0071      *       - a rotation in 3D space around a pivot point specified in XML by
0072      *         2 elements: the <rotation/> and the <pivot/> element.
0073      *       The specification of any of the elements is optional:
0074      *     - The absence of a translation implies the origine (0,0,0)
0075      *     - The absence of a pivot point implies the origine (0,0,0)
0076      *       - The absence of a rotation implies the identity rotation.
0077      *         Any supplied pivot point in this case is ignored.
0078      *
0079      *      <xx>
0080      *        <position x="0" y="0"  z="0.0001*mm"/>
0081      *        <rotation x="0" y="0"  z="0"/>
0082      *        <pivot    x="0" y="0"    z="100"/>
0083      *      </xx>
0084      *
0085      *  \author  M.Frank
0086      *  \version 1.0
0087      *  \date    01/04/2014
0088      */
0089     void parse(Handle_t e, Delta& delta);
0090 
0091     /// Parse delta into an opaque data block
0092     /**
0093      *  See void parse(Handle_t e, Delta& delta) for details.
0094      *
0095      *  \author  M.Frank
0096      *  \version 1.0
0097      *  \date    01/04/2014
0098      */
0099     void parse_delta(Handle_t e, OpaqueDataBlock& block);
0100 
0101     /// Converts opaque maps to OpaqueDataBlock objects
0102     /**
0103      *  Opaque data mappings are formalized std::map objects (or std::hash_map etc.)
0104      *  where the data source is parsed into the map using boost::spirit as a data
0105      *  interpretation mechanism.
0106      *
0107      *  \author  M.Frank
0108      *  \version 1.0
0109      *  \date    01/04/2014
0110      */
0111     void parse_mapping(Handle_t e, OpaqueDataBlock& block);
0112 
0113     /// Converts linear STL containers from their string representation.
0114     /**
0115      *  Opaque data sequences are formalized linear STL container objects 
0116      *  (std::vector, std::list, std::set, std::deque etc.)
0117      *  where the data source is parsed into the map using boost::spirit as a data
0118      *  interpretation mechanism.
0119      *
0120      *  \author  M.Frank
0121      *  \version 1.0
0122      *  \date    01/04/2014
0123      */
0124     void parse_sequence(Handle_t e, OpaqueDataBlock& block);
0125 
0126     
0127   }    /*   End namespace xml            */
0128 }      /*   End namespace dd4hep         */
0129 #endif // XML_XMLPARSERS_H