1 / 18

An AGDD “XmlFileBuilder” Christopher.Lester@cern.ch

An AGDD “XmlFileBuilder” Christopher.Lester@cern.ch. AGDD_XmlFileBuilder. Why do we need XmlFile builders? What do we want from them? What can AGDD_XmlFileBuilder do? Where can you get it?. The problems … part 1. AGDD/XML files contain ...

dbetancourt
Download Presentation

An AGDD “XmlFileBuilder” Christopher.Lester@cern.ch

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. An AGDD “XmlFileBuilder”Christopher.Lester@cern.ch Christopher.Lester@cern.ch

  2. AGDD_XmlFileBuilder • Why do we need XmlFile builders? • What do we want from them? • What can AGDD_XmlFileBuilder do? • Where can you get it? Christopher.Lester@cern.ch

  3. The problems … part 1 AGDD/XML files contain ... • Repeated numbers. Eg: tubes of similar design sharing common diameters but having different lengths. • Functionally related numbers. Eg: translationx=width/2+cos(θstereo) • Algorithmically related numbers. Eg: const int N=10; // number of trds for(int n=0; n<N; n++) { // loop over each trd trdSkew[n]=atan(n); // set skew angle } Christopher.Lester@cern.ch

  4. The problems … part 2 AGDD/XML files contain ... • Repeated strings. Eg: ID definitions, and subsequent IDREFs. • Functionally computed strings. Eg: waferName = “SCT_” + ( inner ? “inner” : “outer”) + “_wafer”; • Algorithmically computed strings. Eg: const int N=10; // number of wafer types for(int n=0; n<N; n++) { // loop over each wafer // set name for wafer type ... waferTypeName = “SCT_waferType_” + n; } Christopher.Lester@cern.ch

  5. The problems … part 3 AGDD/XML files do have sources … • Databases • Assembly Breakdown (ABS) • Production database • Drawings • Even peoples memories! … and all these change and update frequently. XmlFileBuilders can read some of these, and help keep XML files up to date. Christopher.Lester@cern.ch

  6. XmlFileBuilders - what do we want from them? • Freedom: • Freedom to use the full power of any developed language (C++, Java, Fortran, Perl, …) when building our XML file. • Simplicity: • Close relationship between builder code and output XML, but ... Christopher.Lester@cern.ch

  7. XmlFileBuilders - what do we want from them … • Benefits: • “Out of order” building • Reference management • Syntax handling (<pos>…</pos>) • Strong syntax checking • Independence of output format / DTD • Define complex constructions Christopher.Lester@cern.ch

  8. What is AGDD_XmlFileBuilder? • In the ATLAS software under offline/DetectorDescription/AGDD_XmlFileBuilder • The set of C++ tools comprises • library • user tool classes • ( and implementation classes … ) Christopher.Lester@cern.ch

  9. AGDD XmlFileBuilder in Action // Make new box: Box * myBox = new Box; // Set it’s parameters: myBox->setName(“myWafer”); myBox->setBox(length, width, height); myBox->setMaterial(silicon); // various possibilities ... Christopher.Lester@cern.ch

  10. AGDD XmlFileBuilder in Action // Make a positioner. We will use PosXYZ: PosXYZ * boxPos = new PosXYZ; // Set the positioner’s parameters: boxPos->setVolume(myBox); // Says what to position boxPos->setRot(10*degree, 0, 0); // Gives a rotation boxPos->setXYZ(0, 100*mm, 0); // Gives a translation Christopher.Lester@cern.ch

  11. AGDD XmlFileBuilder in Action // Make a composition: Compos * doubleWafer = new Compos; // Fill the compostion: doubleWafer->setName(“double_wafer”); // Name the compos doubleWafer->addPos(boxPos); // What to put in doubleWafer->addPos(someOtherBoxPos); // … etc ... Christopher.Lester@cern.ch

  12. AGDD XmlFileBuilder in Action // Make a section: Section * mySection = new Section; // Set the top volume, and print XML file! mySection->setName(“SCT_sensitive”); mySection->setTopVolume(doubleWafer); mySection->setAuthor(“Christopher Lester”); mySection->buildTheRoot(); // Fixes geometry in stone! mySection->sendMeTo(cout); // Alternatively print to a file ... Christopher.Lester@cern.ch

  13. b2 b1 a Advanced features Use shapes which are not in the DTD, without forcing Marc to produce a new version of Persint! // Make a halfTrd: HalfTrd * shapeNotInDTD = new HalfTrd; // Set the top volume, and print XML file! shapeNotInDTD->setName(“wedge”); shapeNotInDTD->setHalfTrd(a, b1, b2, thickness); Christopher.Lester@cern.ch

  14. Advanced features When two things are similar but not quite the same ... // A function to return a complicated object: Compos * makeComplicatedLayer(int layerNumber) { Compos * layer = new Compos; layer->setName(“SCT_layer_”+layerNumber); if (layerNumber==2) { // Build the layer in a special way } else { /* Build the layer in the normal way */ }; return layer; }; Christopher.Lester@cern.ch

  15. Benefits summary • Frees users from some limitations of AGDD/XML (see “What do we want?” slides) • Permits external sources of “fundamental parameters” from which to build XML files • Meets goals for functional and algorithmical operations on parameters • Permits complex objects to be manipulated Christopher.Lester@cern.ch

  16. AGDD_XmlFileBuilder • In the ATLAS software under offline/DetectorDescription/AGDD_XmlFileBuilder • Christopher.Lester@cern.ch • Some examples in offline/InnerDetector/InDetDetDescr/SCT_AGDD_XmlFileBuilder Christopher.Lester@cern.ch

  17. Down-sides: • Someone has to maintain it ! :( • Tools must update with each DTD • OK if update is minor • Hard work if change is major? • At least the geometry code has a hope of staying the same • Three things to version: • Inputs • Tools • GeoCode Christopher.Lester@cern.ch

  18. AGDD_XmlFileBuilder Internal workings ... Christopher.Lester@cern.ch

More Related