210 likes | 344 Views
Detector Description Framework in LHCb S é bastien Ponce CERN. Topics. Detector data overview Structure, Transient Store, XML backend Possible extensions Parameters, Full extension Condition Database Purpose, Implementation, Impact on user Tools
E N D
Topics • Detector data overview • Structure, Transient Store, XML backend • Possible extensions • Parameters, Full extension • Condition Database • Purpose, Implementation, Impact on user • Tools • Simulation, Geometry Checker, Visualization
Box Isotope Mixture Sphere Element Calibration Condition Alignment Condition Readout Condition EcalClusterCondition MuonStation MuonStationAlignment EcalCluster VeloReadout Data Diagram Points to Lvolume Solid Material Resolved on demand Inherits from * Pvolume Geometry Info DetElem Geometry Material Condition Structure Conditions
Geometry Db Transient Store Detector Data Service Persistency Service Ask for Object Check presence Ask creation Load Algorithm Lvolume Cnv Lvolume Lvolume DetElem Transient Store Retrieve pointer • Tree-like structure • Items identified by a logical name • Load/update on demand • Automatic update when new event
<subtraction name="sub2"> <box name="box3“ sizeX="1*m“ sizeY="1*m“ sizeZ="15*cm"/> <tubs name="tub2“ outerRadius="15*cm“ sizeZ="25*cm"/> </subtraction> <posXYZ z="-40*cm"/> <rotXYZ rotX=“90*degree”/> <detelemref href="LHCb/structure.xml#LHCb"/> protocol://hostname/path/file.xml#ObjectID XML Backend • Easy to read and to parse • Extensible • Easy to convert • Many tools • Extended using references
User Extensions • Why ? • In order to implement specific behaviour(e.g. answering specific simulation questions) • Add specific information to elements / conditions • How ? • By specializing the Detector Element / Condition • 3 main possibilities : • Usage of parameters in the XML code • Specialization of the C++ object only • Full extension, including XML, DTD and C++ converters
<detelem name="MStation01"> <param name="Al_thickness" type="double"> 1.2222*mm <param></detelem> Parameter Extension • Definition of parameters (name, type and value) in the XML code • Vectors of parameters also allowed • Direct and easy access in C++ SmartDataPtr<IDetectorElement> station (detSvc(), "/dd/Structure/LHCb/Muon/MStation01"); std::cout << station->param("Al_thickness");
class MyDetElem : public DetectorElement { int getChannelNb() { return chNb; } StatusCode initialize() { chNb = paramAsInt (“ChNb”); return SUCCESS; } private : int chNb; } static CnvFactory <XmlUserDetElemCnv<MyDetElem>> s_factory; const ICnvFactory& XmlMyDetElemCnvFactory = s_factory; C++ Class Extension • New C++ class inheriting from DetectorElement • Any member or method may be added • Its initialize method is called by the framework. • A dummy converter is needed (2 lines)
Full Extension <detelem name="Head"> <specific> <channelSet name="Controls"> <channels name=”in” nb="20"/> <channels name=”out” nb="150"/> </channelSet> </specific> </detelem> • Extension of the DTD to define new XML elements inside the <specific> element • Parsing of the new XML code using dedicated converters • Still specialized C++ objects if ("channels" == elementName) { string name = childElement.getAttribute ("name"); int nb = xmlSvc()->eval(childElement.getAttribute("nb")); currentChannelSet->addChannel(name, nb); }
CondDB Purpose • To deal with time varying data like calibration, alignment, environment (temperatures) ... • Handle several versions of a given data • Also deal with the geometry, which is also time dependent (longer period though) Version Time Data Item
Condition Db CondDB Implementation • Additional service of the framework • Independent of the type of data contained (XML) • Based on an abstract interface with several possible backends (Objectivity, ORACLE, MySQL) Detector Data Service Persistency Service Condition Service Ask for Object Check presence Ask creation Ask for data Retrieve them from Database Algorithm DetElem Abstract interface DetElem Cnv DetElem DetElem Transient Store Retrieve pointer
Impact on End User • No impact on the "raw" XML code • Only references are changed by the usage of the "conddb" protocol • No change at all in the C++ code : the correct data are loaded depending on the event time <DDDB> <catalog name="Hcal"> <!-- Hcal slow control catalog --> <conditionref href="conddb:/CONDDB/SlowControl/Hcal/scHcal#scHcal"/> </catalog> </DDDB>
XmlEditor Tool • Specialized XML Editor for Detector data • Understanding cross file references • Hides the complexity of XML from the end user • Tree like structure a la explorer • Easy drag & drop, cut & paste • Insure that the XML is well-formed and valid • Still writes human readable, indented XML
Geometry Checkers • Visual checker : • based on David : Dawn's Visual Intersection Debugger • Uses GiGa :Gaudi interface to Geant4 applications • Gaudi Transport Service : • More precise • More reliable
Visualization Tool • Event and geometry viewer • Interfaced with Gaudi via scripting services
Conclusion • A fully functional and stable solution • Many tools provided : • For XML generation • For geometry checking • For visualization • Used successfully for simulation, reconstruction and analysis