Skip to content

Releases: AIDASoft/DD4hep

v00-24

19 Jun 08:25
Compare
Choose a tag to compare

v00-24

  • 2017-06-08 Markus Frank (PR#160)

    • Add a new class AlignmentsNominalMap, which behaves like a ConditionsMap and handles alignment entries.

    • The AlignmentsNominalMap is not a conditions cache per-se. This implementation behaves like a conditionsmap, but it shall not return real conditions to the user, but rather return the default alignment objects (which at the basis are conditions as well) to the user. These alignments are taken from the DetElement in question Alignment DetElement::nominal().

    • The basic idea is to enable users to write code "as if" there would be conditions present. This is important to ease in the lifetime of the experiment the step from the design phase (where obviously no conditions are taken into account) to a more mature phase, where alignment studies etc. actually are part of the "bread and butter work".

    • Added a corresponding example in examples/AlignDet:

    $>   geoPluginRun -volmgr -destroy -plugin DD4hep_AlignmentExample_nominal \
             -input file:${DD4hep_DIR}/examples/AlignDet/compact/Telescope.xml
    
    • Access the DetElement nominal conditions using the AlignmentNominalMap.
      Any use of DDCond is inhibited.
      1. We use the generic printer, which during the detector element scan accesses the conditions map.
      2. We use a delta scanner to extract the nominal deltas from the DetElement's nominal alignments
      3. We use a ConditionsTreeMap to perform the alignments re-computation.
  • 2017-06-08 Markus Frank (PR#159)

    Implementation of the decisions made at the Conditions mini-workshop

    Access mechanisms of DD4hep conditions for utilities

    Access to conditions is solely supported using the interface class DDCore/ConditionsMap.

    • All utilities must use this interface.
    • Any concrete implementation using conditions/alignment utilities must implement this interface
    • Basic implementation using STL map, multimap and unordered_map are provided.
    • A special no-op implementation of this interface shall be provided to access "default" alignment conditions. This implementation shall fall-back internally to the DetElement::nominal() alignment.
      Known clients: VolumeManager (hence: DDG4, DDRec, etc.)

    Though this sounds like a trivial change, the consequences concern the entire conditions
    and alignment handling. This interface decouples entirely the core part of DD4hep
    from the conditions cache handling and the alignment handling.

    Based on this interface most utilities used to handle conditions, detectors scans
    to visit DetElement related condition sets, alignment and conditions printers etc.

    For details, please see:

    DDCore/include/DD4hep/AlignmentsPrinter.h
    DDCore/include/DD4hep/AlignmentsProcessor.h
    DDCore/include/DD4hep/ConditionsPrinter.h
    DDCore/include/DD4hep/ConditionsProcessor.h
    DDCore/include/DD4hep/DetectorProcessor.h
    

    Naming conventions for detector conditions

    • Condition are logically attached to DetElements

      • Condition names are: DetElement.path()+"#"+condition-name
        Example: /world/LHCb/DownstreamRegion/Muon/M5/M5ASide/R3ASide/Cham046#alignment
    • Condition keys are a int64 compound of two int32:

       union {
         int64 key;
         struct {
           int32 item_key;
           int32 det_key;     // Needs to be the high word to have a properly ordered map
         } values;
       };
       det_key  = hash32(DetElement.path())
       item_key = hash32(condition-name)

    Condition keys must be unique throughout the detector description.

    • Alignment conditions naming conventions:

      • Alignment-delta conditions are called alignment_delta.
      • Fully qualified alignment conditions are called alignment.
        DD4hep provided alignment utilities rely on this convention.
    • Other conditions can be named freely.

    Important Notice

    The Alignment conditions naming conventions are already used by several utilities involving alignments. If you plan to use these, do not freely ignore these recommendations. When the naming conventions are ignored, these utilities shall not work.

    Updates to DDCond

    DDCond implements a working conditions cache following the design criteria sketched above. The conditionsSlice object implements (though by forwarding to the ConditionsUserPool) a ConditionsMap interface.

    The DD4hep_ConditionsMapUserPool plugin implements in a very efficient way this interface using an ordered map. Using the above described key definition, this implementation allows very efficient scans of conditions/alignments etc. of individual detector elements, since conditions which belong to the same detector element are contiguous.

    Alignment handling/computations

    Using the conditions maps, the computation of (mis-)alignment data from deltas
    is no longer bound to the conditions mechanisms.

    A special utility called AlignmentsCalculator is put in place (see DDCore/include/DD4hep/AlignmentsCalculator.h) to facilitate the computation of a coherent set of alignments given a set of delta-parameters. This mechanism is much simpler, easier to understand and far less code intensive than the previously designed callback mechanism where alignments are obtained using conditions derivation.

    Update of the existing examples

    The example sets in DDDB, examples/Conditions, examples/AlignDet, examples/DDDB were updated according to the changed mechanism of accessing conditions. Here we can see the real benefits of the new approach: keeping same functionality, the examples became way off simpler. Simply count the number of lines of code.

  • 2017-06-17 Marko Petric (PR#170)

    • Add clang flag to warn about using namespace directive in global context in header
  • 2017-06-17 Frank Gaede (PR#167)

    • renamed the namespace DD4hep::DDRec to dd4hep::rec (see #166)
      - provide backward compatibility to outside world for now
    • moved the interfaces in namespace DDSurfaces to dd4hep::rec
      - provide backward compatibility to outside world for now
  • 2017-06-15 Frank Gaede (PR#165)

    • started to cleanup DDRec
      - don't use LCDD::getInstance() in SurfaceManager and SurfaceHelper
      - deprecate unused(?) classes in DDRec/API and DDRec/Extensions
      - deprecate MaterialManager() using LCDD::getInstance()

v00-23

08 Jun 13:49
Compare
Choose a tag to compare

v00-23

  • 2017-05-12 Marko Petric (PR#152)

    • Update CI to GCC 7.1 and LLVM 4.0 and include Geant4 10.3
  • 2017-05-22 Frank Gaede (PR#154)

    • protect against NANs in Guineapig pairs files in Geant4EventReaderGuineaPig
    • make INFO printout more consistent with DD4hep style
  • 2017-06-07 Frank Gaede (PR#157)

    • bug fix in test_cellid_position_converter
      • with this no tests for position from cellID lookup should fail
    • re-implement CellIDPositionConverter::cellID(pos)
  • 2017-06-08 Marko Petric (PR#156)

    • Mark all fallthroughs in case statements with attributes to suppress warning
  • 2017-06-01 Frank Gaede (PR#155)

    • add new class DDRec::CellIDPositionConverter
      - replaces DDRec::IDDecoder
      - implement positionNominal(CellID id) and cellID(position)
      • prepare for using alignment map by separating transforms to DetElement and daughter volume
      • do not use deprecated methods/members in VolumeManager
    • add test_cellid_position_converter.cpp
    • add VolumeManagerContext::toElement
      • transform from sensitive volume to next DetElement

v00-22

08 May 11:07
Compare
Choose a tag to compare

v00-22

  • 2017-04-28 Markus Frank (PR#148)
    Improvements to the compact xml processing

    Elements may now be specified within compact in 2 ways:

    1. old way: create an effective element:
      <element Z="4" formula="Be" name="Be" >
      <atom type="A" unit="g/mol" value="9.01218" />
      </element>

    2. create element by defining an isotope mixture:
      <isotope name="C12" Z="6" N="12"/>
      <atom unit="g/mole" value="xxxx"/>
      </isotope>
      .....
      <element name="C">
      <fraction n="0.9893" ref="C12"/>
      <fraction n="0.0107" ref="C13"/>
      </element>

    Improved debugging of compact xml conversions
    The following tags allow to enable increased prinout depending on additional tags in the compact file:
    <debug>
    <type name="isotopes" value="1"/>
    <type name="elements" value="1"/>
    <type name="materials" value="0"/>
    <type name="visattr" value="0"/>
    <type name="regions" value="0"/>
    <type name="readout" value="0"/>
    <type name="limits" value="0"/>
    <type name="segmentation" value="0"/>
    </debug>

    Disable the ROOT TGeo element table from the compact xml.
    Note: ALL elements must then be specified in the XML material database.
    <geometry>
    <clear name="elements"/>
    </geometry>

    By default compact accepts exactly one input file (others may be included therein).
    In order to process iteratively multiple input files, the opening and the closing of the
    geometry steering tags may be added to the compact description. This example
    gives the default behaviour:
    <geometry open="true" close="true"/>

    Please note: per compact file exactly ONE geometry tag is allowed.

    Debugging the DDG4 geometry conversion mechanism

    New boolean properties of the Geant4DetectorGeometryConstruction object,
    which result in debugging printouts (defaults are OFF):
    DebugMaterials
    DebugElements
    DebugShapes
    DebugVolumes
    DebugPlacements
    DebugRegions
    PrintPlacements
    PrintSensitives

  • 2017-04-28 Ben Couturier (PR#146)

    • Trivial fix for the DDDB converter to create paramphysvol3D volumes, which are otherwise ignored.
  • 2017-04-20 Andre Sailer (PR#145)

    • LCIOOutput: Add setting of ProducedBySecondary bit for SimTrackerHits if the hit is produced by a particle that is not stored in the MCParticle collection, needs lcio 2.8
  • 2017-05-05 Andre Sailer (PR#150)

    • Always create DD4hepConfigVersion.cmake in CMAKE_INSTALL_PREFIX and cmake folder
    • Create DD4hepConfig.cmake also in cmake folder
    • renamed Cmake Macro GENERATE_PACKAGE_CONFIGURATION_FILES to DD4HEP_GENERATE_PACKAGE_CONFIGURATION_FILES so it does not clash with the macro of the same name in ilcutil/cmakemodules
  • 2017-05-07 Andre Sailer (PR#151)

    • Use cmake to create Version.h file to contain DD4hep version information and macros
    • Change the way DD4hep package version is defined and set standard cmake variables for this purpose

v00-21

19 Apr 09:43
Compare
Choose a tag to compare

v00-21

v00-21-pre

12 Apr 19:38
Compare
Choose a tag to compare
v00-21-pre Pre-release
Pre-release

v00-21

  • 2017-04-03 Marko Petric (PR#142)

    • Update to the CI system:
      • Install directly cvmfs on base system, which removes the need for the parrot connector
      • Replace CernVM docker with plain docker
      • This reduces the build run time from 50 min to 25 min
  • 2017-03-27 Shaojun Lu (PR#134)

    • Set verbose true for G4EmSaturation to printout Birks coefficient.
  • 2017-03-29 Frank Gaede (PR#139)

    • add a utility to dump the B-field for a given Volume
      - usage: dumpBfield compact.xml x y z dx dy dz [in cm]
      - will dump the B-field in volume [-x:x,-y:y,-z,z] with steps [dx,dy,dz]
  • 2017-03-29 Joschka Lingemann (PR#138)

    • Direct implementation that calculates eta from cartesian coordinates
    • Fix: Add registration of Phi-Eta segmentation
  • 2017-03-29 Joschka Lingemann (PR#137)

    • Adding GridRPhiEta a segmentation of equidistant size in R, Phi and Pseudorapidity
    • Adding GridPhiEta a segmentation of equidistant size in Phi and Pseudorapidity
  • 2017-03-28 Markus Frank (PR#135)

    • Accidentally the Segmentations of Joschka were added in the wrong place of the hierarchy.
      I removed them. He will later add them to the proper location.
    • Some C++ warnings concerning the C++11 standard were also fixed.
  • 2017-03-24 Yorgos Voutsinas (PR#132)

    • modifying the LayeredCalorimeterData struct in order to cope with conical shaped calorimeters
  • 2017-03-31 Markus Frank (PR#143)

    • Add new test for multi segment multi collections segmentations using a calorimeter endcap.
      See also: #141, which is still unresolved,
      but seems not to be directly related to the Monte-Carlo truth handling.
    • Side effect: add Geant4EventActions to dump hits and particles
    • Fix a linker problem for unicode tags.
  • 2017-03-31 Frank Gaede (PR#140)

    • clarify documentation for CartesianField and implementations
    • make clear that void fieldComponents() has to add
      the new field to the given field vector

v00-20

13 Jan 14:08
Compare
Choose a tag to compare
Update release.notes

v00-19

23 Nov 15:27
Compare
Choose a tag to compare

2016-11-17 D.Jeans

  • rewritten MegatileLayerGrid class
    • not backward compatible

M.Petric:

  • improved Travis CI configuration
  • remove some tests from CI

v00-18

14 Nov 15:52
Compare
Choose a tag to compare

2016-11-09 F.Gaede

  • updated DDRec::LayeredCalorimeterData::Layer:
    • remove deprecated thickness
    • add phi0
  • add copy assignement to DDRec::MaterialData

v00-17

20 Oct 16:17
Compare
Choose a tag to compare

2016-09-29 V.Volkl

Small fixes and extensions of DDEve. Show "Views" menu even if specifying xml on the command line.
Add possibility to specify event data in EveDisplay method, rather than having to select it in the gui dialogue.
Selects FCC EventHandler if specified in the config xml (as an "eventHandler"-attribute to the "display" node),
but keeps default behavior if not.

2016-08-24 M.Frank

Adding first somehow useful implementation to use conditions and the consequent loading thereof.
Used by the DDDB implementation/example. DDDB is an alternative way to populate the DD4hep
detector description using LHCb's detector description database.
The reason is, that only a running experiment has a reasonable base to conditions data
to excercise the DD4hep conditions.
If interested, please have a look in the DDDB examples.

Still TODO:

  • A formal way to bootstrap the conditions loading still has to be found.
  • Conditions loading from XML files and a small comprehensive example.