00001 00002 00003 #ifndef DETDESCCNV_XMLDETELEMCNV_H 00004 #define DETDESCCNV_XMLDETELEMCNV_H 00005 00007 #include "DetDescCnv/XmlGenericCnv.h" 00008 #include "DetDesc/DetectorElement.h" 00009 00010 #include "GaudiKernel/Converter.h" 00011 00013 class ISvcLocator; 00014 template <class TYPE> class CnvFactory; 00015 00016 00027 class XmlBaseDetElemCnv : public XmlGenericCnv { 00028 00029 public: 00030 00035 virtual StatusCode initialize(); 00036 00041 static const CLID& classID(); 00042 00043 protected: 00044 00049 XmlBaseDetElemCnv(ISvcLocator* svcs); 00050 00056 XmlBaseDetElemCnv(ISvcLocator* svc, const CLID& clsID ); 00057 00061 virtual ~XmlBaseDetElemCnv(); 00062 00066 virtual StatusCode fillObjRefs(IOpaqueAddress* pAddress, DataObject* pObject); 00067 00074 virtual StatusCode i_createObj (xercesc::DOMElement* element, 00075 DataObject*& refpObject); 00076 00084 virtual StatusCode i_fillObj (xercesc::DOMElement* childElement, 00085 DataObject* refpObject, 00086 IOpaqueAddress* address); 00087 00098 virtual StatusCode i_fillSpecificObj (xercesc::DOMElement* childElement, 00099 DetectorElement* refpObject, 00100 IOpaqueAddress* address) = 0; 00101 00102 00103 private: 00104 00106 bool m_doGenericCnv; 00107 00108 private: 00109 // a silly method to init strings 00110 void initStrings(); 00111 00112 // Constant strings for element names 00113 const XMLCh* specificString; 00114 const XMLCh* detelemString; 00115 const XMLCh* detelemrefString; 00116 const XMLCh* versionString; 00117 const XMLCh* authorString; 00118 const XMLCh* geometryinfoString; 00119 const XMLCh* alignmentinfoString; 00120 const XMLCh* calibrationinfoString; 00121 const XMLCh* readoutinfoString; 00122 const XMLCh* slowcontrolinfoString; 00123 const XMLCh* fastcontrolinfoString; 00124 const XMLCh* paramString; 00125 const XMLCh* paramVectorString; 00126 const XMLCh* userParameterString; 00127 const XMLCh* userParameterVectorString; 00128 const XMLCh* conditioninfoString; 00129 00130 // Constant Strings for parameter names 00131 const XMLCh* typeString; 00132 const XMLCh* nameString; 00133 const XMLCh* commentString; 00134 const XMLCh* hrefString; 00135 const XMLCh* lvnameString; 00136 const XMLCh* supportString; 00137 const XMLCh* rpathString; 00138 const XMLCh* npathString; 00139 const XMLCh* conditionString; 00140 00141 }; 00142 00143 #endif // DETDESCCNV_XMLDETELEMCNV_H 00144