Releases: AIDASoft/DD4hep
v00-24
v00-24
-
2017-06-08 Markus Frank (PR#160)
-
Add a new class
AlignmentsNominalMap
, which behaves like aConditionsMap
and handles alignment entries. -
The
AlignmentsNominalMap
is not a conditions cache per-se. This implementation behaves like aconditionsmap
, 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 theDetElement
in questionAlignment 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.- We use the generic printer, which during the detector element scan accesses the conditions map.
- We use a delta scanner to extract the nominal deltas from the
DetElement
's nominal alignments - 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
andunordered_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 visitDetElement
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 names are:
-
Condition keys are a
int64
compound of twoint32
:
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.
- Alignment-delta conditions are called
-
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 theConditionsUserPool
) aConditionsMap
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 (seeDDCore/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
- renamed the namespace DD4hep::DDRec to dd4hep::rec (see #166)
-
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()
- started to cleanup DDRec
v00-23
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)
- bug fix in test_cellid_position_converter
-
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
- add new class DDRec::CellIDPositionConverter
v00-22
v00-22
-
2017-04-28 Markus Frank (PR#148)
Improvements to the compact xml processingElements may now be specified within compact in 2 ways:
-
old way: create an effective element:
<element Z="4" formula="Be" name="Be" >
<atom type="A" unit="g/mol" value="9.01218" />
</element>
-
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
v00-21-pre
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
- Update to the CI system:
-
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]
- add a utility to dump the B-field for a given Volume
-
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.
- Accidentally the Segmentations of Joschka were added in the wrong place of the hierarchy.
-
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.
- Add new test for multi segment multi collections segmentations using a calorimeter endcap.
-
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
v00-19
v00-18
v00-17
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.