Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 11:56:38

0001 #ifndef Alignment_MuonAlignment_MuonAlignmentInputXML_h
0002 #define Alignment_MuonAlignment_MuonAlignmentInputXML_h
0003 // -*- C++ -*-
0004 //
0005 // Package:     MuonAlignment
0006 // Class  :     MuonAlignmentInputXML
0007 //
0008 /**\class MuonAlignmentInputXML MuonAlignmentInputXML.h Alignment/MuonAlignment/interface/MuonAlignmentInputXML.h
0009 
0010  Description: <one line class summary>
0011 
0012  Usage:
0013     <usage>
0014 
0015 */
0016 //
0017 // Original Author:  Jim Pivarski
0018 //         Created:  Mon Mar 10 16:37:55 CDT 2008
0019 // $Id: MuonAlignmentInputXML.h,v 1.8 2010/07/30 04:20:13 pivarski Exp $
0020 //
0021 
0022 // system include files
0023 #include <string>
0024 #include "xercesc/dom/DOMElement.hpp"
0025 #include "xercesc/util/XercesDefs.hpp"
0026 
0027 // user include files
0028 #include "Alignment/MuonAlignment/interface/MuonAlignmentInputMethod.h"
0029 #include "Alignment/CommonAlignment/interface/Alignable.h"
0030 
0031 // forward declarations
0032 
0033 class MuonAlignmentInputXML : public MuonAlignmentInputMethod {
0034 public:
0035   MuonAlignmentInputXML(const std::string &fileName,
0036                         const DTGeometry *dtGeometry,
0037                         const CSCGeometry *cscGeometry,
0038                         const GEMGeometry *gemGeometry,
0039                         const DTGeometry *dtGeometryIdeal,
0040                         const CSCGeometry *cscGeometryIdeal,
0041                         const GEMGeometry *gemGeometryIdeal);
0042   ~MuonAlignmentInputXML() override;
0043 
0044   // ---------- const member functions ---------------------
0045 
0046   // ---------- static member functions --------------------
0047 
0048   // ---------- member functions ---------------------------
0049 
0050   AlignableMuon *newAlignableMuon() const override;
0051 
0052   MuonAlignmentInputXML(const MuonAlignmentInputXML &) = delete;  // stop default
0053 
0054   const MuonAlignmentInputXML &operator=(const MuonAlignmentInputXML &) = delete;  // stop default
0055 
0056 private:
0057   void recursiveGetId(std::map<unsigned int, Alignable *> &alignableNavigator,
0058                       const align::Alignables &alignables) const;
0059 
0060   void fillAliToIdeal(std::map<Alignable *, Alignable *> &alitoideal,
0061                       const align::Alignables &alignables,
0062                       const align::Alignables &ideals) const;
0063 
0064   Alignable *getNode(std::map<unsigned int, Alignable *> &alignableNavigator,
0065                      const XERCES_CPP_NAMESPACE::DOMElement *node,
0066                      const AlignableObjectId &) const;
0067   Alignable *getDTnode(align::StructureType structureType,
0068                        std::map<unsigned int, Alignable *> &alignableNavigator,
0069                        const XERCES_CPP_NAMESPACE::DOMElement *node,
0070                        const AlignableObjectId &) const;
0071   Alignable *getCSCnode(align::StructureType structureType,
0072                         std::map<unsigned int, Alignable *> &alignableNavigator,
0073                         const XERCES_CPP_NAMESPACE::DOMElement *node,
0074                         const AlignableObjectId &) const;
0075   Alignable *getGEMnode(align::StructureType structureType,
0076                         std::map<unsigned int, Alignable *> &alignableNavigator,
0077                         const XERCES_CPP_NAMESPACE::DOMElement *node,
0078                         const AlignableObjectId &) const;
0079 
0080   double parseDouble(const XMLCh *str, const char *attribute) const;
0081   void set_one_position(Alignable *ali, const align::PositionType &pos, const align::RotationType &rot) const;
0082 
0083   void do_setposition(const XERCES_CPP_NAMESPACE::DOMElement *node,
0084                       std::map<Alignable *, bool> &aliset,
0085                       std::map<Alignable *, Alignable *> &alitoideal) const;
0086   void do_setape(const XERCES_CPP_NAMESPACE::DOMElement *node,
0087                  std::map<Alignable *, bool> &aliset,
0088                  std::map<Alignable *, Alignable *> &alitoideal) const;
0089   void do_setsurveyerr(const XERCES_CPP_NAMESPACE::DOMElement *node,
0090                        std::map<Alignable *, bool> &aliset,
0091                        std::map<Alignable *, Alignable *> &alitoideal) const;
0092   void do_moveglobal(const XERCES_CPP_NAMESPACE::DOMElement *node,
0093                      std::map<Alignable *, bool> &aliset,
0094                      std::map<Alignable *, Alignable *> &alitoideal) const;
0095   void do_movelocal(const XERCES_CPP_NAMESPACE::DOMElement *node,
0096                     std::map<Alignable *, bool> &aliset,
0097                     std::map<Alignable *, Alignable *> &alitoideal) const;
0098   void do_rotatelocal(const XERCES_CPP_NAMESPACE::DOMElement *node,
0099                       std::map<Alignable *, bool> &aliset,
0100                       std::map<Alignable *, Alignable *> &alitoideal) const;
0101   void do_rotatebeamline(const XERCES_CPP_NAMESPACE::DOMElement *node,
0102                          std::map<Alignable *, bool> &aliset,
0103                          std::map<Alignable *, Alignable *> &alitoideal) const;
0104   void do_rotateglobalaxis(const XERCES_CPP_NAMESPACE::DOMElement *node,
0105                            std::map<Alignable *, bool> &aliset,
0106                            std::map<Alignable *, Alignable *> &alitoideal) const;
0107 
0108   // ---------- member data --------------------------------
0109   std::string m_fileName;
0110 
0111   const DTGeometry *dtGeometry_;
0112   const CSCGeometry *cscGeometry_;
0113   const GEMGeometry *gemGeometry_;
0114   const DTGeometry *dtGeometryIdeal_;
0115   const CSCGeometry *cscGeometryIdeal_;
0116   const GEMGeometry *gemGeometryIdeal_;
0117 
0118   XMLCh *str_operation;
0119   XMLCh *str_collection;
0120   XMLCh *str_name;
0121   XMLCh *str_DTBarrel;
0122   XMLCh *str_DTWheel;
0123   XMLCh *str_DTStation;
0124   XMLCh *str_DTChamber;
0125   XMLCh *str_DTSuperLayer;
0126   XMLCh *str_DTLayer;
0127   XMLCh *str_CSCEndcap;
0128   XMLCh *str_CSCStation;
0129   XMLCh *str_CSCRing;
0130   XMLCh *str_CSCChamber;
0131   XMLCh *str_CSCLayer;
0132   XMLCh *str_GEMEndcap;
0133   XMLCh *str_GEMStation;
0134   XMLCh *str_GEMRing;
0135   XMLCh *str_GEMSuperChamber;
0136   XMLCh *str_GEMChamber;
0137   XMLCh *str_GEMEtaPartition;
0138   XMLCh *str_setposition;
0139   XMLCh *str_setape;
0140   XMLCh *str_setsurveyerr;
0141   XMLCh *str_moveglobal;
0142   XMLCh *str_movelocal;
0143   XMLCh *str_rotatelocal;
0144   XMLCh *str_rotatebeamline;
0145   XMLCh *str_rotateglobalaxis;
0146   XMLCh *str_relativeto;
0147   XMLCh *str_rawId;
0148   XMLCh *str_wheel;
0149   XMLCh *str_station;
0150   XMLCh *str_sector;
0151   XMLCh *str_superlayer;
0152   XMLCh *str_layer;
0153   XMLCh *str_endcap;
0154   XMLCh *str_ring;
0155   XMLCh *str_chamber;
0156   XMLCh *str_superChamber;
0157   XMLCh *str_etaPartition;
0158   XMLCh *str_axisx;
0159   XMLCh *str_axisy;
0160   XMLCh *str_axisz;
0161   XMLCh *str_angle;
0162   XMLCh *str_x;
0163   XMLCh *str_y;
0164   XMLCh *str_z;
0165   XMLCh *str_phix;
0166   XMLCh *str_phiy;
0167   XMLCh *str_phiz;
0168   XMLCh *str_alpha;
0169   XMLCh *str_beta;
0170   XMLCh *str_gamma;
0171   XMLCh *str_rphi;
0172   XMLCh *str_phi;
0173   XMLCh *str_xx;
0174   XMLCh *str_xy;
0175   XMLCh *str_xz;
0176   XMLCh *str_xa;
0177   XMLCh *str_xb;
0178   XMLCh *str_xc;
0179   XMLCh *str_yy;
0180   XMLCh *str_yz;
0181   XMLCh *str_ya;
0182   XMLCh *str_yb;
0183   XMLCh *str_yc;
0184   XMLCh *str_zz;
0185   XMLCh *str_za;
0186   XMLCh *str_zb;
0187   XMLCh *str_zc;
0188   XMLCh *str_aa;
0189   XMLCh *str_ab;
0190   XMLCh *str_ac;
0191   XMLCh *str_bb;
0192   XMLCh *str_bc;
0193   XMLCh *str_cc;
0194   XMLCh *str_none;
0195   XMLCh *str_ideal;
0196   XMLCh *str_container;
0197 };
0198 
0199 #endif