File indexing completed on 2023-03-17 10:39:35
0001 #ifndef Alignment_MuonAlignment_MuonAlignmentInputXML_h
0002 #define Alignment_MuonAlignment_MuonAlignmentInputXML_h
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023 #include <string>
0024 #include "xercesc/dom/DOMElement.hpp"
0025 #include "xercesc/util/XercesDefs.hpp"
0026
0027
0028 #include "Alignment/MuonAlignment/interface/MuonAlignmentInputMethod.h"
0029 #include "Alignment/CommonAlignment/interface/Alignable.h"
0030
0031
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
0045
0046
0047
0048
0049
0050 AlignableMuon *newAlignableMuon() const override;
0051
0052 MuonAlignmentInputXML(const MuonAlignmentInputXML &) = delete;
0053
0054 const MuonAlignmentInputXML &operator=(const MuonAlignmentInputXML &) = delete;
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
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