diff --git a/doc/ReleaseNotes.md b/doc/ReleaseNotes.md new file mode 100644 index 0000000000000000000000000000000000000000..943b5c6656b712f56bc97feaa698e286c005b2b7 --- /dev/null +++ b/doc/ReleaseNotes.md @@ -0,0 +1,1283 @@ + +Markus Frank 2017-03-17 + + - Add a new input type by parsing JSON files. The basic json interpreter + is present and offers essentially the same interface as the XML persers. + The integration to the compact dialect however is not yet done. + It should become however a valid alternative to parsing XML files + with a small maintenance overhead, since the enhancement implementation + present in XMLDimesion.h, XMLDetector.h and XMLChildValue.h is shared + and instantiated for both. + +Markus Frank 2017-03-10 + + - New round to kill coverity deficiencies. + - Add exception try-catch clauses around various main programs in UtilityApps + See UtilityApps/src/main.h for details. + +Markus Frank 2017-03-09 + + - Fix issue with long volume ids exceeding 32 bits. + Test added in examples/ClientTests + - Fix volume manager id identical placed volumes are used in different places of the hierarchy. + Test added in examples/ClientTests + - Remove various svn left-overs (ID$ strings etc.) + + +Frank Gaede 2017-02-10 + +- allow event readers to create more than one vertex per event + this should be possible as most generator formats allow to specify + more than one event vertex + - changed signature of Geant4EventReader::readParticles(int,Vertex*, Particles&) + to Geant4EventReader::readParticles(int,Vertices&, Particles& ) + - implement in LCIOEventReader, Geant4EventReaderHepEvt and Geant4EventReaderHepMC + - for now still one vertex only is created using the first final state particle + for HepEvt and LCIO + +# v00-20 + +Frank Gaede 2017-01-13 +- fix computation of radiation and interaction lengths +- require the density to be specified in the materials xml file + +Frank Gaede 2017-01-04 +- adopt numbers in test_surface.cc to elements.xml +- use elements.xml generated with plugin in DDTest +- add ROOT version to dumped element table + +Frank Gaede 2016-12-22 +- fix test_surfaces by adapting to elements.xml +- fix test_units by including elements.xml + +Markus Frank 2016-12-21 +- Add plugin to dump the default ROOT element table + +Markus Frank 2016-12-20 +- Remove obsolete build flags + +Markus Frank 2016-12-19 +- Add Multi-threading conditions example + +Andre Sailer 2016-12-16 +- Add drivers for Beampipe, Mask and Solenoid from lcgeo, changed name to DD4hep_* + +Rosa Simonielo, Frank Gaede 2016-12-15 +- add new struct DDRec::NeighbourSurfacesStruct defined for neighbouring surfaces + +Frank Gaede 2016-12-14 +- fix library pathes in env scripts for macos +- use DD4HEP_LIBRARY_PATH and full lib path on mac +- apply rpath compiler settings to GaudiPluginService +- make compatible w/ Geant4 10.3 + +Marko Petric 2016-12-13 +- Fix compiler flag handling + +Daniel Jeans 2016-12-08 +- add utility graphicalMaterialScan + +Markus Frank 2016-12-07 +- Fix compiler error on MacOSX gcc 4.9 + +Marko Petric 2016-12-07 +- Remove few tests from Travis +- move flag to CMAKE_SHARED_LINKER_FLAGS +- Remove the dynamic lookup on runtime for libs on mac + +Markus Frank 2016-12-05 +- First version of conditions and alignments + +Andre Sailer 2016-12-06 +- DDTest: fix location to install DDtest header files +- Remove minimum required cmake version from DD4hepBuild, this interferes with other packages depending on DD4hep + +Marko Petric 2016-12-02 +- Fix missing CLHEP in thisdd4hep.sh +- Clean up FindPYTHON.cmake file +- Change gaudi auto_ptr to unique_ptr since the auto is deprecated +- Fix initAClick + +Marko Petric 2016-11-29 +- Fix rpath issues on mac with python +- Add custom DynamicPath on mac when loading python libs +- Add function to set the DD4HEP_LIBRARY_PATH + +Marko Petric 2016-11-28 +- Update all minimum CMake versions +- Fix gitlab builds +- Rename MakeRootMap to MakeGaudiMap for consistency +- Remove ROOT5 things and make approprite fixed to the usage of ROOTConfig.cmake + Remove FindROOT.cmake and use from now on ROOTConfig.cmake + + +Markus Frank 2016-11-30 +- New version of conditions handling + +Andre Sailer 2016-11-25 +- Fix ProductionCut conversion in Geant4Converter.cpp: cut is a range + +Markus Frank 2016-11-24 +- Fix linker errors on MAC +- Remove compiler warnings on MACOSX +- First fixes to version of alignment constant processing also remove where visited the $ statements in the files. +They are useless, since git does not support them. Fixed some tests, which no longer properly worked in +the conditions area. +- First usable version of alignment constant processing + + +Markus Frank 2016-11-16 +- Try to improve efficiency using C++11 default operations + +Markus Frank 2016-11-10 +- Simplify opaque data mappings for conditions + +# v00-19 +2016-11-17 D.Jeans +- rewritten MegatileLayerGrid class + - not backward compatible + +M.Petric: +- improved Travis CI configuration +- remove some tests from CI + +# v00-18 + +2016-11-09 F.Gaede +- updated DDRec::LayeredCalorimeterData::Layer: + - remove deprecated thickness + - add phi0 +- add copy assignement to DDRec::MaterialData + +2016-11-08 M.Frank +- Improve conditions handling. Started to implement using simple telescope + detector from C.Burr. +- Add variable DD4HEP_LIBRARY_PATH to be used on MacOSX El Capitane + to overcome DYLD_LIBRARY_PATH protection issues. +- Fix to copy with negative(rebased) IDDDescriptor fields + (affects IDDDescriptor and VolumeManager). + 2 New tests: + - ClientTests/Bitfield_SidesTest.xml to test readout string: + system:8,barrel:-2 + - ClientTests/Bitfield_SidesTest2.xml to test readout string: + system:16,barrel:16:-5 + +2016-10-18 M.Frank +- Due to pressure of the FCC folks, I tried to implement a more DD4hep like implementation of the + the segmentation objects. For testing only CartesianGridXY. If this mechanism works, + it could be a starting recipe for the rest of the segmentations. The draw-back of this approach is, + that assignments are not reversible: + DD4hep::CartesianGridXY xy = readout.segmentation(); // Works + DD4hep::Segmentation seg = xy; // Should not work + +- Reason: the managed objects are different....at some point in time I will have to find a + clean solution for this, but the required changes for such a solution shall be manageable. + +# 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. + +# v00-16 +2016-07-26 Shaojun Lu +- Added new MegatileLayerGridXY segmentation for Scintillator strip Ecal, which is implemented by K.Kotera, + and used by SEcal04Hybrid geometry driver. + + - many ( minor fixes ) by F. Gaede, M. Petric, A Sailer, ... + +2016-06-24 M.Frank +- Implement multiple segmentations. + Though one readout objects (associated to one DetElement) may only have on segmentation, + The MultiSegmentation type allows to have several sub-segmentations, which can be chosen + from. + Please see examples/ClientTests/*/MultiSegmentations + +- At the same time allow the readout object to defined multiple collections through + the IDDescriptor. + Please see examples/ClientTests/*/MultiCollections + +- The combined example can be found in + Please see examples/ClientTests/*/NestedSegmentations + + + +2016-05-03 M.Frank +- Green light is ON. You may use revision 2237 and above. + +2016-05-03 M.Frank +- **Mega commit. Do not use until green signal arrives with seperate release notice.** +- Package DDDB: Prove of concept, that we can populate the geometry also from other + sources than xml files obeying the lccdd notation. +- DDCore/XML: Implement the possibility to use external entity resolution for Xerces. + There is not equivalent in TinyXML (AFAIK). +- Remove some of the Spirit parsers, since the libraries are getting way too big. + This implicitly assumes, that object properties of 'exotic' types such as + deque<long double> etc. are not really used. If you need properties stay to the obvious: + string, int float, double and vectors, maps and sets thereof! +- DDG4 needed to public the DDG4Python include directory (Now in DDG4/Python). + Reason: try to create ROOT 6 dictionaries, which can be relocated for release purposes. +- ROOT 6 dictionary generation: Create dictionaries with the additional flag: + "-inlineInputHeader" which physically includes the header files used to generate the + dictionaries --> relocatability. + +2016-03-21 M.Frank +- Add additional vertex argument to EventReader::readParticles, which supposedly should + +2016-03-03 M.Frank +- Improve/complete job options type palette. +- Allow modify the Geant4IsotropGenerator to shoot particle distributions according + to several distributions: + flat in : uniform, cos(theta), eta/pseudorapidity, ffbar (1+cos^2 theta) + Option: generator.Distribution = 'cos(theta)' + Default is uniform. + +# v00-15 +2016-02-15 A.Sailer +- LCIOStdHepReader.cpp + - fixed memory leak, compiled and valgrinded + +2016-02-10 F.Gaede +- added utility DD4hep::XML::setDetectorTypeFlag() + to set the TypeFlag from xml element <type_flag type="0x42"/> +- select detectors with + DD4hep::Geometry::DetectorSelector(lcdd).detectors( ( DD4hep::DetType::TRACKER | DD4hep::DetType::ENDCAP )) ; +- used in UtilityApps/dumpdetector.cc +- added detector_types.xml with int constants defined in DetType.h, include with : + `<include ref="${DD4hepINSTALL}/DDDetectors/compact/detector_types.xml"/>` + - add elements to xml, e.g. + <type_flags type="DetType_TRACKER + DetType_ENDCAP + DetType_PIXEL + DetType_STRIP "/> + +2016-02-10 M.Frank +- DDCond: + First implementation of conditions access. Required some movements of files + from DDG4 (Properties) and some changes in the core conditions implementation. + The basic infrastructure is now present. Don't know yet however how buggy it is... + +2016-02-05 F.Gaede +- added DetElement::typeFlag() and DetElement::setTypeFlag(unsigned int types) +- added utility class DetType for setting detector type properties in type flag + +2016-02-03 N.Nikiforou +- DDDetectors + - Added plugin DD4hep_GenericSurfaceInstallerPlugin, copied from lcgeo + to allow installation of surfaces to any sliced detector + cmake/Doxyfile.in + - Added DDDetectors to the sources directory so Doxygen picks up the + plugin documentation + +2016-02-02 F.Gaede +- set momentum at endpoint (if lcio version > 2.6 ) for MCParticles in Geant4Output2LCIO.cpp +- fixed printlevel in Geant4Action::print() +- removed random lines drawn in teveDisplay +- dont't print DetectorData by default in dumpdetector + +2016-02-02 A.Sailer +- DDG4 + - Implemented SimulatorFlags (DDFORHEP-17) + * In ParticleHandler: vertexIsNotEndpointOfParent, Stopped, leftDetector + * Steerable distance for vertexIsNotEndpointOfParent + * TCUserParticleHanlder Simulator flags: DecayedInTracker, DecayedInCalorimeter + +2016-01-21 A.Sailer/M.Frank +- DDG4 + - Improved user defined physics constructors + * Allows user defined global rangecut + * Allows extending particle table (e.g. B-Hadrons unknown to geant4) + +2016-01-18 F.Gaede +- fixed default c'tors in DDRec/DetectorData.h to zero initialize sub-structures (LayerLayout etc) + +2016-01-13 F.Gaede +- allow the default sensitive action to be a tuple with parameter dictionary in DDG4.py/ddsim.steer e.g.: + SIM.action.tracker = ("Geant4TrackerWeightedAction", {"HitPositionCombination" : 1 , "CollectSingleDeposits" : False } ) +- fixed endpoint in MC-truth particles + +2016-01-11 F.Gaede +- fix hit momentum in Geant4TrackerAction (Geant4SDActions.cpp) + +2016-01-11 A.Sailer +- DDG4 + - Add LargestAcceptableStep to field setup + +2016-01-07 A.Sailer +- DDG4 + - Fix the logic for skipping of events at the start of input files: LCIO, HepMC, stdhep and HepEvt + - Event number in lcio outputfile takes skipped events into account now + +2016-01-06 F.Gaede +- bug fix in DDSurfaces::ISurface for surface properties (orthogonal/parallel to z) + (affected ILD VXD) + +2016-01-05 F.Gaede +- added print functions for DDRec::DetectorData objects +- used in dumpdetector: + dumpdetector compact.xml -d + + +2015-12-09 N.Nikiforou +- UtilityApps/teveDisplay + - Modified teveDisplay to have three separate collections of surface vectors (u,v,n) + instead of one collection. Now the vectors are colored differently. + - Changed signature of getSurfaceVectors() to allow selection of o,u,v,n vectors to + add to the collection, added option for name and color of collection. + - Renamed surface list collections to "HelperSurfaces" and "SensitiveSurfaces". + - Changed signature of getSurfaces() to allow setting of name and color of collection. + + +2015-12-01 M.Frank +- DDG4 + - Remove some of the compilation warnings + - Remove energy cut in sensitive detectors + If you though need, use a Geant4Filter to mask the action processing + examples/CLICSiD + - Add a few tests for materialscan and simulation setups using XML or CINT. + examples/ClientTests + - Add a few tests for materialscan and simulation + +2015-11-24 M.Frank +- DDG4 + - Implementation of multi-threading mode. + To use and understand, please consult the DDG4 manual from the doc area. + - "Old" Single threaded mode and functionality is preserved. + - Numerous new classes supporting thread and master specific setup + functionality. + - Support for python configuration (see manual for details) + - Support for global Geant4Actions executing in thread reentrant shared mode. + (see manual for details) + - DDG4 examples: DDG4/examples/CLICSidSimu.py deleted and replaced with: + 1) DDG4/examples/SiDSim.py (single threaded, old example) + 2) DDG4/examples/SiDSim_MT.py (multi threaded version of SiDSim.py) + DDCore: + - Support user formats for the default printout statements for nicer printouts. + - Removal of compiler warnings + +2015-11-23 F.Gaede +- added glbal method DD4hep::versionString() + +2015-11-13 S.Lu +- Added a new AHcal Barrel segementation: TiledLayerGridXY, to be used e.g. + for the ILD AHcal Barrel Sensitive layer segmentation design. + +2015-10-30 F.Gaede +- fixed LCIOFileReader to use sequential reading mode + as using direct access always required runNum==0 and sequential evt nums ... + + +2015-10-15 F.Gaede +- DDSurfaces::ISurface/Surface + - added implemation of conical surfaces + - ICone, VolConeImpl, VolCone, ConeSurface + +2015-10-13 M.Frank +- DDG4 + - Remove explicit constructors for modular physics lists. + Use the native Geant4 provided G4PhysListFactory instead. + The physics list is instantiated as before with the "Extends" property. + - Implement angular ranges in the Geant4IsotropeGenerator for phi [0,2pi] and theta[0,pi] + - New sensitive detector Geant4TrackerWeightedAction + Attempt to properly process combined deposits in tracking detectors. + - Debug component Geant4SurfaceTest similar to the standalone program + test_surfaces, but to be appended as a DDG4 event action for event by event + tests of hits. + +2015-10-09 M.Frank +- DDG4 + - Extend the functionality of the DDG4 plugins + Geant4InteractionVertexBoost and Geant4InteractionVertexSmear. + If the Mask property is set to -1, all interactions present + at call time are smeared/boosted according to the parameters. + Note, that the position of the plugins within the generation + sequence is important. + - Add a new generator Geant4GeneratorWrapper to allow the use + of native G4 generator classes such as the G4ParticleGun or + the G4GeneralParticleSource. Still to be tested. + - Extend the Geant4Random functionality: May now be instantiated + like any other Geant4Action. Users may set the seed or the + luxury level. + All calls to HepRandom (CLHEP) or gRandom (ROOT) will re-use + this instance. See DDG4/examples/CLICRandom.py for illustration. + - Updated DDG4 manual. + +2015-09-30 F.Gaede +- updated createGearForILD.cpp to use new parameters in LayeredCalorimeterData + ( innerThickness, innerRadLength, etc) + + +2015-09-15 F.Gaede +- refactoring of Surface classes: + - made VolSurface a reference counting handle to + a polymorphic pointer of type VolSurfaceBase + - this should facilitate the creation + of dedicated surface classes for special cases + such as inside the beampipe or the face of the calorimeter + +2015-08-27 F.Gaede +- added macros DD4HEP_VERSION_GE(MAJV,MINV) and DD4HEP_VERSION_GT(MAJV,MINV) + to LCDD.h + +- increased version number to v00-15 + + +2015-08-20 M.Frank +- DDCore: Modularize/abstract plugin manager +- VolumeManager: Fix bug propagating sensitive detectors + Showed up in the examples of nested detectors + + +2015-08-12 N.Nikiforou +- DDCore/XML: Added new helper functions to Layering engine: + - double absorberThicknessInLayer(XML::Element e) : + returns total absorber thickness in given layer + - void sensitivePositionsInLayer(XML::Element e, std::vector<double>& sens_pos) : + provides positions of sensitive slices within a layer with respect to the + center of the layer + + +2015-07-25 M.Frank +- DDSegmentation: Remove several 'shadow' warnings. + +- New build system for the DD4hep core, which greatly simplyfies the cmake files + for the various sub-packages. + Tested with Andre's build script doc/CompileAllOptionPermutations.sh. + (GEAR usage not tested though) + +# v00-14 +F.Gaede +- fixed writing of generator status for lcio::MCParticle + in Geant4Output2LCIO.cpp + +A.Sailer +- Add missing scope to /DD4hep/Factories.h, to not force everyone to use using namespace + +F.Gaede: 2015-07-15 +- changed type in SurfaceList and SurfaceMap from Surface to ISurface +- added methods length_along_u/v() to ISurface +- moved setting of CMAKE_CXX_FLAGS (if DD4HEP_USE_CXX11) from DD4hep.cmake to CMakeLists.txt + +2015-07-11 M.Frank +- added starter docs DD4hepStartersGuide.pdf + +*** **Important** *** + **Before updating, backup your existing and working checkout. Though I was running + the basic tests, there may be unchecked corners of the software.** + +Notes: +- Backwards compatibility mode for the usage of ROOT 5 and ROOT 6 alternatively. +- For ROOT 6 the Gaudi PluginService is used and added to the distribution. +- DD4hep is distributed with a licence. See $DD4hepINSTALL/LICENSE for details. +- In the doc area the $DD4hepINSTALL/doc/CREDITS file everybode should add her/his + name, if contributed significantly. +- Unfortunately this meant to add/change the headers of all files and give a + pointer to the licence file. If I accidentally changed the author name, please + chagne it back. +- The plugin factory declaration statements were changed to accomodate both + ROOT 5 and ROOT 6 and to keep the number of 'ifdef' statements at a minimum. +- TODO: Properly change the cmake scripts to accomodate for ROOT 6 and the + automatic switch when building DD4hep. +- For reference reasons: this commits is revision 1812 + 1813 (DDDetectors) + +# v00-13 +2015-07-03 F.Gaede +- updated doxygen for detector DDRec::DetectorData structs and usage in convertToGear + +2015/07/02 Nikiforos Nikiforou +- Added isRadiator() helper function in DDCore/XML/XMLDetector.h/cpp + Mirroring functionality of isSensitive() and used in geometry drivers + e.g. to calculate total absorber thickness + +- Extended LayeredCalorimeterStruct in DDRec/DetectorData.h to include + additional parameters required by Pandora: + - inner_phi0 (e.g. alignment for inner symmetry) + - outer_phi0 (e.g aligment for outer symmetry) + - NOTE: phi0 still remains but is deprecated + - gap0 (e.g stave gap along r-phi) + - gap1 (e.g middle stave gap along z) + - gap2 (reserved for future use) + + 2015-06-29 A.Sailer + - always store lcio collections, even if they are empty in Geant4Output2LCIO (DDG4/ddsim) + + +2015-06-29 F.Gaede +- changed env scripts to prepend to library pathes (DD4hep and dependant packages) + - using a newer lcgeo version than the one provided in ilcsoft can simply + be done w/ source ./bin/thislcgeo.sh + +# v00-12 +2015/06/17 Markus Frank +- Add possibility to block access to constants by name from LCDD. + Functionality enabled by a constant named "LCDD_InhibitConstants" with value "1", "True", "Yes". + Test: geoDisplay -compact file:../DD4hep.trunk/examples/ClientTests/compact/InhibitConstants.xml + +- Add LCDDHelper handle object to easily access the sensitive detector object of a detector + using either the subdetector name or the detector element (or one of its children). + See: DD4hep/LCDDHelper.h + Test: ``` + geoPluginRun -input file:../DD4hep.trunk/examples/CLICSiD/compact/compact.xml \ + -plugin CLICSiD_LCDDHelperTest \ + optional: -<detector-name (default:SiVertexEndcap)> [Note the '-'!!!] + ``` + +- Check when adding new sub-detector detector elements if a given one already exists. + if yes: exception. + Test: `geoDisplay -compact file:../DD4hep.trunk/examples/ClientTests/compact/DuplicateSysID.xml` + + +A. Sailer +- DDSegmentation: Added function cellDimension which returns the dimension of any given cell + +S.Lu: +- Added a switch for BirksLaw to Geant4StepHandler. + For backward compatable, by default, do not apply BirksLaw, and apply BirksLaw with call 'doApplyBirksLaw()'. + added optional Geant4ScintillatorCalorimeterAction +- Added one 'Geant4ScintillatorCalorimeterAction' into DDG4 plugins Geant4SDActions for scintillator to take + Geant4 BirksLaw effect as sensitive detector active layer. + +F.Gaede +- added SurfaceManager class that holds maps of surfaces for + "world","tracker","calorimeter","passive" and all individual subdetectors + - to be used in reconstruction code where a lookup from cellID + to corresponding surface is needed + - needs plugin "InstallSurfaceManager" to be in the compact file + - access via: + SurfaceManager surfMan = *lcdd.extension< SurfaceManager >() ; + const SurfaceMap& surfMap = *surfMan.map( "world" ) ; +- renamed old SurfaceManager to SurfaceHelper + +- added method: Geometry::Volume createPlacedEnvelope() + - to be used in all LC detector drivers to create a placed envelope volume + rest of the detector is then instantiate in this volume + +- added BooleanShape plugin for creating generic boolean + shapes (subtraction, union or intersection ) + - to be used for envelope definition in xml + + - added new build_type: BUILD_ENVELOPE + - can be used to visulize envelopes only (geoDisplay, teveDisplay,...) + +2015/05/22 Nikiforos Nikiforou +- Fixed bug in DDG4/lcio/LCIOConversions.cpp, which stored only the PDG of the primary particle + in multiple particle contributions in SimCalorimeterHits instead of both the primary and secondary PDGs. + + +2015/05/13 Markus Frank +- Fix bug in DDG4, which forced DDG4 to exit if a property from the Geant4 prompt could + not be set. No an error message is printed and the prompt is returned to the user. + (Bug submitted by A. Sailer) + +2015/05/11 Andre Sailer +- CMake updates: + - Split libraries into components: use find_package(DD4hep COMPONENTS <component> [...] ) + to find the components you need. + - At the moment there are these components are sensible to link against: DDRec, DDG4, DDEve, DDSegmentation + - To link against the librarie use either DD4hep_COMPONENT_LIBRARIES or DD4hep_<COMPONENT>_LIBRARY, + where <COMPONENT> needs to be replaced by the UPPER case name of the component + +2015/05/09 Markus Frank +- Allow to access detectors by type from lcdd. + - The sensitive type of a detector is set in the 'detector constructor'. + - Not sensitive detector structures have the name 'passive' + - Compounds (ie. nested detectors) are of type 'compound' +- Dump detector types using plugin: + + geoPluginRun -plugin DD4hepDetectorTypes -input <compact-file> + +2015/03/12 Markus Frank +- Add support for ellipsoids in gdml/lcdd and geant4 conversion. +- Allow to include files with environment variables from compact notation. + +2015/03/09 Markus Frank +- Finalize move to geant4 version 10, started by A.Sailer +- Add non-isotrop particle generator in DDG4 (request P.Kostka) +- Isolate ROOT plugin manager as start to move to ROOT 6 + +# v00-11 +- DDDetectors + - new Package containing generic DD4hep detector palette (MF) + - added 'dimension' argument to DD4hep_SiTrackerBarrelSurfacePlugin (FG) + to handle pixel and strip detectors + +- DDRec (Frank Gaede) + - added simple data structs in DDRec/DetectorData.h + providing interface needed for GEAR: + - added plugin for creating GEAR file for ILD + - Extended IDDecoder to give access to layer, system and barrel/endcap information. (CG) + IDDecoder is now independent of Readout object, instead it finds the correct + readout based on the cellID / position + - fixed surface implementations: removed inline virtual functions + - added methods: + VolSurface::length_along_u() + VolSurface::length_along_v() + Surface::volumeOrigin() + CylinderSurface::center() + ICylinder::center() + +- DDG4 (Markus Frank) + - Fix Geant4 Primary input conversion + - Fix LCCollectionVec for LCIO output + - fixed units for MCParticle output (FG) + - fixed generator status: set to 0 if (FG) + particle created in simulation + - Add cylindrical tracking volume to particle handler + - More modular user particle handling with example Geant4TCUserParticleHandler + - fixed charge (don't devide by three) (FG) + - fixed logic for writing out MCParticles: (FG) + - don't write particles created in calo + unless scattered back into tracker) + - don't write particles created in tracker + if below MinimalKineticEnergy ( Geant4ParticleHandler) + - Added HepMC ascii reader + - added simply main program 'dd_sim' to run (FG) + a DDG4 based simulation with xml configuration files + - change TrackerCombine SD to use energy weighted positions + - added utility to dump generated files: scripts/dumpDDG4.C + - fixed dictionaries for map iteration on MacOS in python (FG) + -> added operators ==/!= for map<>::iterator + - added component to allow the setup of the magnetic field tracking in Geant4 from python + +- DDCore (Markus Frank) + - fixed LCDD el-mag. field converter + - add generic surface installers + - allow for string constants in lcdd define section + - added arguments for surface plugins + +- DDSegmentation (FG) : + - fixed compiler warning w/ left shift count >= width of type + - fixed wrong type string "CartesianGridXY" + - added CartesianGridYZ + - Implementation of a Polar R-phi segmentation (MP) + + - examples + - add new test MiniTel(escope) to ClientTests (MF) + - moved old obsolete examples to attic + - add new example: LHeD_tracker (MF) + - add new example: SimpleDetector (FG) + (ILD like VXD and SIT ) + +- CMake: + - made DD4HEP_USE_BOOST an option flag (FG) + - added DD4hepG4 library dependence to DDEve (MF) + - disable dot -> have simpler (and faster) inheritance graphs w/ Doxygen + - fixed missing search field in Doxygen doc (FG) + - include boost automatically if build with Geant4 + + +- Documentation + - improved Doxygen documentation (MF) + - added manual for DDRec (FG) + - new version of the DD4hep manual (MF) + - fixed code formating with emacs style: + ./doc/format_code.sh + +- removed subpackages ( moved to https://svnsrv.desy.de/public/aidasoft/DD4hep/attic ): + DDExamples_obs/ + DDSense/ + examples/ILDExDet/ + examples/ILDExSimu/ + examples/firstExample/ + examples/noviceN04/ + +- enabled testing in nightly builds with cmake, ctest and cdash (FG) + +- plus many small bug fixes (use svn log for details ) + +2014/09/26 Markus Frank +- Quite some effort to improve the doxygen documentation. + The current revision is can be found at: + https://cern.ch/frankm/DD4hep/html/index.html + +2014/02/06 Markus Frank +- DDDetectors: Add example surface plugin with arguments. + - example code: DDDetectors/src/SurfaceExamplePlugin.cpp + - compact: +``` + <plugin name="DD4hep_SurfaceExamplePlugin"> + <argument value="SiTrackerBarrel"/> + <argument value="aa=1*mm"/> + <argument value="bb=2*cm"/> + <argument value="cc=3*m"/> + </plugin> +``` + + - output: + +```cpp + SurfaceExamplePlugin: argument[0] = SiTrackerBarrel value = -1 + SurfaceExamplePlugin: argument[1] = aa=1*mm value = 0.1 + SurfaceExamplePlugin: argument[2] = bb=2*cm value = 2 + SurfaceExamplePlugin: argument[3] = cc=3*m value = 300 +``` + +2014/08/15 Markus Frank +- DDG4: Impreoved LCIO handling for DDG4 +- DDG4: Input handling: + - LCIO input file reading with multiple *independent* inputs + to support overlay, multiple interactions, etc. + - Primary verex smearing independent for each input + - Primary vertex boosts independent for each input +- DDG4: Output handling + - MC Particle handling + - Improved MC truth handling for produced Hits. + Still needs revisiting. + +# v00-10 + Frank Gaede +- fixed version numbers and release notes for release v00-08 and v00-09 + ( both have the wrong version number for the libraries 0.7 !) +- added ./doc/prepare_a_release.howto +- added new method to BitField64: setValue(unsigned lowWord, unsigned highWord ) + - added some simple unit tests for BitField64 + + +2014/08/15 Markus Frank +- DDG4 Add possibility for user hook to the particle handler + + Data member to store additionbal particle data for the + output stage. +- Allow to display MC particles in DDEve + Add small help file describing how to start DDEve. + doc/DDEveManual.pdf +- Update CLICSiD Example. + +# v00-09 +2014/08/07 Markus Frank +- DDG4: First version to support MC truth in DDG4 including + particle filtering to optimize the size of the MC record. +- DDG4 fix SimpleCalorimter sensitive action and properly support + hit aggregations. +- DDEve smaller modifications to support DDG4IO if DD4hep was + built with the Geant4 option ON. + +# v00-08 +- Some minor fixes: + - made compatible with older geant4 versions (9.5) + - add Bitflag to store CellID1 in SimCalorimeterHit collections + - fix position conversion from Geant4 to ROOT + - add cellID determination to SensitiveAction + - ... + + +Andre Sailer, 2014-07-17 +- Unify cmake option variables, small cmake corrections +- Change options `_WITH_` to `_USE_` +- Print Warning that variables with `_WITH_` are deprecated +- Change Defintions to `_USE_` as well +- Add REQUIRED to find_package geant4 and xercesc if they are turned on +- Updated documentation +- Updated ILDExDet example + +Christian.Grefe, 2014-07-15 +- Made DDSegmentation optionally a stand-alone package + create DDSgementationConfig.cmake when build as part of DD4hep + +Markus Frank, 2014-07-02 +- add LCIO conversions from DDSim - sensitive detectors + can now simply instantiate LCIO Sim hits + +2014/06/30 Markus Frank +- DDG4: Support user (context-) extensions for Geant4. + User contexts are availible for events and runs. The contexts + are accessible from the Geant4Context meber of each Geant4Action, + the base class for all processing entities. + - Adding a context: +``` + context()->event().addExtension(pointer_to_object, typeid(TYPE), 0); + or + context()->event().addExtension<TYPE>(pointer_to_object); + In the first case the object is NOT DELETED at the end of the event. + In the second case the object is deleted. +``` + - Accessing the context: +``` + TYPE* ctx = context()->event().extension<TYPE>(false); + The boolean argument indicates if an exception should be thrown + if the extension is not present ie. here no exception. +``` +- DDCore: adjust a few print statements. + +2014/06/27 Markus Frank +- Separate XML loading from LCDD implementation. +- New package: DDEve: a bit more sophisticated TEve specialization +- To start use examples/CLICSiD/compact/DDEve.xml +- DDEve can interface currently to ROOT files created by DDG4. +- An example data file is provided as well in: +- examples/CLICSiD/compact/CLICSiD_events.root +- Documentation is lacking a bit.... +- start the display with: `$> root.exe ${DD4hepINSTALL}/examples/DDEve/DDEve.C` + + +2014/06/19 Frank Gaede +- replaced TGeoUnits.h by DD4hepUnits.h +- renamed namespace tgeo to dd4hep -> users need to replace tgeo::mm by dd4hep::mm + + +2014/06/12 Frank Gaede +- changed default unit for angles to be radians (tgeo::rad = 1.) +- enforce usage of units from TGeoUnits.h in xml expression evaluators +- convert to degrees for angles in TGeoShapes constructors +- NB: there is one inconsistency left here: angles returned + from TGeoShapes are already in degrees, this is the one + case where a quantity returned from DD4hep/TGeo does not have the default + units - thus one should not write + + ` double phi = coneSeg.Phi1() / tgeo::rad ;` + + but rather + + `double phi = coneSeg.Phi1() * tgeo::deg ;` + + +2014/06/03 Markus Frank +- Provision for ROOT persistency for DD4hep detector descriptions: + Create Cint dictionary for DD4hepCore by default when building the library. + For the time being the area of DDSegmentation is left out, since these + objects require changes due to the handling of references and template + specializations. Besides these, DD4hep detector descriptions can be + saved and read-back directly to/from ROOT files - which may improve + a lot the startup time of processes. + +- The DDG4 dictionary is created by default when building the library. + When importing DDG4 from python only the DD4hepCore DD4hepG4 libraries + must be present. It should no longer be necessary to compile the + necessary AClick on the fly. + +- Investigations on wirframe drawing: + Wireframes are a property of the scene graph. You can toggle to wireframe + using the 'w' key on the keyboard. Other representations are + 'r': Solid view + 't': Solid + wireframe view. + This information is accessible from the help menu of the ROOT OGL widget. + +# v00-07 +2014/05/28 Markus Frank + +- Several fixes and improvements in DDG4 + - Cache output levels in Geant4Kernel object + - Add shell handler to measure energy escape e.g. in calorimeters +- Fix bug in Polycone shapes concerning angles. + **IMPORTANT: If you forked the repository examples/CLICSiD + your PolyconeSupport does not work anymore, because the angles + were given in degrees. They should be given in radians!** + +2014/05/21 Markus Frank +- Fix material creation from XML + JIRA bug: DD4hep - DDFORHEP-4 + https://sft.its.cern.ch/jira/browse/DDFORHEP-4 + using <composite> in material xml files results in wrong material properties + +- Fix JIRA bug: DD4hep - DDFORHEP-3 + https://sft.its.cern.ch/jira/browse/DDFORHEP-3 + Recursive assemblies result in error in TGeo geometry + Bug results in errors when closing the geometry like: + "Error in <TGeoVoxelFinder::SortAll>: Wrong bounding box for volume SIT_assembly" + +- Provision to store survey constants to the DetElement as an extension + for Alignment calculations (priv. comm. C.Parkes) + +- Fix bug in expression evaluation of angles. + All detector constructors receive angles in "rad". No correction + from degree to rad should be necessary. + +2014/05/21 Frank Gaede +- add MaterialManager class providing + - access to materials at any point or on straight + line between two points + - creation of material with averaged properties (A,Z,rho,x0,Lambda) + +- added utility print_materials to print material properties along + a straight line between two points including integrated radiation and + interaction lengths (useful for debugging geometries and materials) + +- use avaeraged material for Surfaces where the thickness extends + beyond the volume boundaries + - introduced new simple data class MaterialData for this + + +- known issues + - materials don't work for detectors with assemblies in assemblies + as the TGeo navigation dose not seem to work: + Error in <TGeoVoxelFinder::SortAll>: Wrong bounding box for volume SIT_assembly + -> ROOT bug or feature ? + + - using <composite/> in compound materials results in incorrect material properties + see ILDExDet/compact/materials Polysterene as example + + +2014/05/06 Frank Gaede +- DDSurfaces/DDRec: + - added ICylinder and CylinderSurface to provide + access to cylinder radius for the tracking +- teveDisplay: + - draw sensitive surfaces in red and helper surfaces in gray + - protect against missing lcio input file + - reduced printout from VolumeManager (changed INFO to DEBUG) + +2014/04/05-2014/04/29 Frank Gaede +- Implementation of Surface classes for track reconstruction + - abstract interfaces in DDSurface: ISurface and IMaterial + - implementation in DDRec: Surface, SurfaceManager, DetectorSurfaces + - basic functionality exists: + - meassurement surface vectors u,v, normal and origin + - check if point is inside the bounds of the corresponding volume + - currently the material is taken to be the one from the volume + -> to do: average material if surface thicknesses extend beyond the + volume for comound materials + - added drawing of surfaces and (Sim)TrackerHits and (Sim)CalorimeterHits to teveDisplay + ( link lcio file to teve_infile.slcio ) + - added some surfaces to ILDExDet: VXD, SIT, TPC + - added test_surfaces to ILDExSimu + (fails currently for some hits that are not created on the surface ...) + - added some assemblies to ILDExDet to better structure the geometry hierarchy + +2014/04/28 Markus Frank +- First attempt to understand fully the handling of recursive assemblies + from the 2014/04/25 was apparently with limited success. Now they should + work! + +2014/04/25 Markus Frank +- Moved boost::spirit parsers to DDCore, since these parsers are also used + in other packages such as DDCond and DDAlign - whenever strings have to be + converted to objects. + Consequently, the boost spirit code fragments were removed from DDG4. +- Improved and more correct type checking when assigning handles +- Explicit implementation of the object extension mechanism to be used + through inheritance or aggregation rather than having seperate and nearly + identical implementations for various objects. +- Improved defintition of basic objects describing Conditions and Alignment. +- Improved implementation of DDAlign, the alignment support. + Not to be used currently - experimental package. +- Initial implementation of DDCond the package supporting the handling of + conditions. + Not to be used currently - experimental package. +- Geant4Converter: I convinced myself, that the bug in handling assemblies + of assemblies is resolved. To be tested though. + +2014/02/07 Frank Gaede +- added DDGear, support for interfacing to gear for backward compatibility + - lives currently in ILDExDet ( should become (optional) part of core DD4hep) + - users need to GearParameter objects as extensions to the DetElement + -> see ILDExTPC_geo.cpp, ILDExVXD_geo.cpp, ILDExTPCSIT_geo.cpp as examples + - program convertToGear creates gear xml file from compact file + ( only if GearParameter objects are avialble as extensions) + - added test_convert_ild_gear +- fixed geometry in ILDExVXD_geo.cpp, ILDExTPCSIT_geo.cpp + wrt. to position of support ans sensitive ladders + +# v00-06 +2014/02/04 Frank Gaede +- fixed environment scripts thisdd4hep.sh and this${PackageName}.sh + to also export library pathes for external libraries (CLHEP, LCIO, gear) + +- added some simple tests to ILDExDet, ILDExSimu and noviceN04 + - provide cmake script run_test_package.sh ( configured as run_test_${PackageName} ) + to call test binaries after initializing the environment + (needed for automated/nightly tests) + +- updated Readme.txt wrt build procedure and running the tests + + +2014/01/17 Markus Frank +- Prepare implementation of Alignment using Release and Grap features of TGeoVolume + and TGeoNode. In principle this was done in a backwards compatible way, but + I cannot really check 100% the #ifdef's. +- Fix handling of XML collections using XercesC. + (Bug reported by P.Kostka). +- Fix several compiler warnings issued by Coverity. + +2013/12/17 Markus Frank +- Whole load of fixes to keep coverity quiet.... +- Fix bug in DDG4 field interface component +- Allow the usage of units, positions and lorentzvectors and in DDG4 properties. + Example using a position property (ROOT::Math::XYZVector): + Idle> /ddg4/Gun/position (1*mm,1*cm,0.01*m) + Geant4UIMessenger: +++ Gun> Setting property value position = (1*mm,1*cm,0.01*m) + native:( 1 , 10 , 10 ). + +- Support for std::vector<T>/std::list<T>/std::set<T> properties. + + - Support for include directives of the format +``` + <include ref="file-name"/> + for the top level <lccdd> tags + Parent tag Included root tag Data content + -- <lccdd> <define> See below. + <detectors> + <detector> + <display> + <lccdd> Nested includes (with DTD validation for Xerces-C) + -- <define> <define> Set of constants + -- <detectors> <detector> Single XML subdetector description + -- <detectors> <detectors> Multiple XML subdetector descriptions + -- <display> <display> Set ov visualization attributes + + DTD validation is only performed using Xerces-C for root tags <lccdd>. +``` +- Note: + `<lccdd>` include directives are executed BEFORE any other directive! + Other include directives are executed BEFORE the corresponding named directive! + +2013/11/14 Markus Frank +- Reformat files in DDCode and DDG4 to remove the <TAB>s from the source files. + Hopefully the content is now more readable. +- DDCore: Remove empty and named constructors for shapes. Empty constructors + were simply a dangerous hook to memory leaks, named constructors are + deprecated since along time. +- DDG4: add support for messengers to access and modify properties from + the Geant4 prompt. For the test hit classes and the simple sensitive + detector a ROOT I/O plugin was provided. +- DDG4: Split into several libraries: + - libDDG4.so pure link library without any plugins + - libDDG4Legacy.so 'Old' plugins. The old stuff at some point + will have to disappear. + - libDDG4Plugins.so New framework plugins + - libDDG4LCIO.so LCIO output plugin for new framework + +2013/11/03 Markus Frank +- doc: Add CHEP2013 paper about DD4hep as a start of the documentation + section. More to come hopefully. +- DDCore: several small improvements: + - Segmentations are no longer Ref_t's. + - Base internal implementing object directly on the segmentations + classes from Christian. + - Rearrangement of some code from Handle.h to Primitives.h + - Allow to attach extensions to LCDD +- DDG4: Fix Frank's simulation problem, which he caused himself + introducing his famous factories.... +- DDG4: First attempt to fix simulation problem with mignetic field. + Ready for testing. +- DDG4: First commit of a independent simulation aimed for LHCb and LHeC + + other newcomers. Documentation needs to be written. + Features: + - Modular setup of all Geant4 action routines as plugins, including the + Run-, event-, tracking-, stacking-, stepping- and generator-actions + as well as the physics lists with particle and physics constructors. + - Setup is possible in XML or with C++ either as an AClick in root or + standalone. Python based starter to come. + - Missing is a modular description of the G4 UI and VIS manager(s). + - Documentation is to come. Before documentation is not present + the usage is discouraged. + Note: + - This version of DDG4 uses boost::spirit. It will compile without + the BOOST include files and the old functionality is preserved, + but it will not work. + To use BOOST add to the cmake statement the following tags: + cmake <regular tags> \ + -DDD4HEP_USE_BOOST=ON \ + -DBOOST_INCLUDE_DIR=${BOOST_INCLUDE_DIR} .... + Where BOOST_INCLUDE_DIR should point to the boost header directory. + BOOST libraries are not used. + +2013/10/18 Markus Frank +- Throw exception if the expression evaluator sees a problem. + The message printed before was often not seen. +- Improve printout on exceptions and plugin abortion +- Remove the typedef RotationZYX -> Rotation and + import the type RotationZYX from ROOT::Math. + +- Add more explicit error messages in case a plugin is not found. +- Add file TGeoUnits.h, which allows to use the "usual SystemOfUnits" + from CLHEP using TGeo with the namespace tgeo::xxx +``` + Example: tgeo::mm -> 0.1 (Geant3: cm, sec, GeV, degree) + ::mm -> 1.0 (Geant4: mm, nsec, MeV, radian) + I hope I got all translations right. + Geant4 Geant3 + ---------------------------------------------------------------- + millimeter mm=1,cm=10 centimeter mm=0.1,cm=1 + nanosecond s=1e9 second ns=1e-9,s=1 + Mega electron Volt GeV=1e3 GeV GeV=1 + radian rad=1 degree rad=180/pi + + Unclear to me was if in Geant3 steradian is also 2*2*pi or 2*2*180 degree. +``` + + +F. Gaede +- changes to build system: + (see ReadMe.txt for details) + +- moved examples to ./example directory +- they are not built as part of DD4hep anymore + +- install thisdd4hep.sh in ./bin + (modified to have the correct pathes) + +- added -DINSTALL_DOC=on/off option + to build doxygen documentation (in ./doc/html/index.html) + +- create DD4hepConfig.cmake for easy building against DD4hep + ( see examples CMakeLists.txt) + +- fixed doxygen API documentation (C.Rosemann) + (greatly improved with many graphs) + +# v00-04 +- placement options are now compatible with geant4 +- fixed Geant4SensitiveDetector::getVolumeID() +- modified ILDEx model to not use assemblies (for now !?) +- removed obsolete geant4 example ILDEx +- Fix population procedure of volume manager +- Fix uniqueness of volume identifiers. +- Remove call with lookups by placed volume to the volume manager +- improved ILDEx toy example: + - fixed creation of cellIDS for simhits + - creates SimTrackerHits for VXD, SIT and TPC + - creates SimCalorimeterHits for AHcal barrele and endcap + - works now wigth ILDExSimu _and_ SLIC if no assemblies are used + - assemblies work with the DD4hep Geant4Converter and VolumeManager + - added a prototype example for a ROOT independent + plugin mechanism for SensitiveDetectors + - added example implemetation for Calice test beam + calorimeters: CaliceTbeam (Shaojun Lu, DESY) + + +2013/21/06 Markus Frank +- Since the placement model for combined translations and rotations + caused more confusion than good, it was agreed to move to a more + Geant4 like placement model using Vectors, Rotations and Transformations + from ROOT::Math. To place a physical volume only one of these + is allowed as an argument: either a rotation or a translation + for simple placements. Combinations may be constructed with Transform3D + objects allowing more complicated placements. + The same mechanism was applied for the operations to construct + boolean solids. +- The CLICSid Examples were updated according to the changes necessary + from 1) +- The Tesla drivers from the ILDExDet example were removed. They are + not compliant to 1). +- The G4 package allows now to translate TGeo geometries to Geant4. + Visual inspection has shown an agreement between the two geometries. +- The TGeo to LCDD/GDML conversion is still buggy. Hence, simulations + using slic as an engine do not yet work. This is being looked at. + + IMPORTANT NOTICE: + The changes described in above may affect existing detector constructors. + Unless all problems are solved you should be careful to move to the svn + head. In any case save your checkout or use the tag v00-03. + + + +# v00-03 +- broken geometry (for some rotations/translations) +- 'backup release' before placement options + will be reduced + +# v00-02 +2013/02/06 Markus Frank +- Simplyfy inheritance for common objects from TNamed. + Use direct inheritance of Object from TNamed rather than hidden + using the Value<a,b> construct. +- Added physical volume manager to simplyfy the detector element + and sensitive detector lookup from a given physical volume. + This implies: If the volume manager is instantiated, the readout specifiers + MUST be correct. This is in most xml files NOT the case. + The "system" field holding the sibdetector-id is MANDATORY! + Otherwise you will receive messages like this: + + Exception:SITCollection: This ID descriptor has no field with the name:CellID0 + while programming VolumeManager. Are your volIDs correct? + +- To check the volume identification, add argument -volmgr to geoConverter, + geoDisplay, etc. +- To trace possible memory leaks: + export DD4HEP_TRACE=Yes + then run you converter etc. At the end a table is displayed with a "leakage" + column, showing how many objects were not deleted. +``` + +----------------------------------------------------------------+ + | I n s t a n c e c o u n t e r s b y T Y P E I N F O | + +----------+---------+-------------------------------------------+ + | Total | Leaking | Type identifier | + +----------+---------+-------------------------------------------+ + | 13| 0|DD4hep::Geometry::DetElement::Object + | 3| 0|DD4hep::Geometry::SensitiveDetector::Object + | 3| 0|DD4hep::Geometry::Readout::Object + | 1| 0|DD4hep::Geometry::OverlayedField::Object + | 1| 0|DD4hep::Geometry::CartesianField::Object + .... + Ideally the second column only has "0"s. Instances of 1 may be OK (singletons). +``` +- Prenotice: + As soon as ROOT v 6.00 is out, we will have to use it! + Andrei kindly agreed to implement a few changes to TGeo, which will make + life much easier and the implementation cleaner and less cumbersome. + + +# v00-01 +2013/20/03 Markus Frank +- Finished the compact->lcdd converter + Extract lcdd information +``` + $ > geoConverter -compact2lcdd -input file:<compact-input-xml-file> -output <detector>.lcdd + $ > <SimDist>/scripts/slic.sh -o output.slcio -g SiD.lcdd -m <geant4-macro>.mac -r 100 +``` + +- Finished the compact->gdml converter + Full GDML cycle can be tested (deplace <detector> with some meaningful identifier): + - Extract gdml information + `$ > geoConverter -compact2gdml -input file:<compact-input-xml-file> -output <detector>.gdml` + - Extract visualisation hints to csv file + `$ > geoConverter -compact2vis -input file:<compact-input-xml-file> -output <detector>.vis.csv -ascii` + - Load GDML into ROOT: + `$ > root.exe ../doc/gdml_root.C+\(\"<detector>\"\)` + The macro expects *at least* the <detector>.gdml file. If no visualisation + information is found, the resulting graphics however is not very nice! + + +2013/22/02 Markus Frank +- Today a decision was taken to remove all _X() and _A() macros + accessing static unicode strings. A common macro will be used to + address both XML elements and XML attributes using the macro _U(...). + The original usage only created confusion. + All _X and _A macros were replaced by _U. + +- Improve the executables running the plugin mechanism in UtitlityApps. + They now complain if the plugin was not found. + + +2013/21/02 Markus Frank +- Require strict checks for the existence of xml attributes. + e.g. default=false for Element::attr<bool>() is no longer an option. + if the attribute is not present in the element, an exception + is thrown. + +- Slightly change the factory method for creating detector elements. + Use a more generic pattern do support also more generic XML + processing. + +2013/20/02 Markus Frank +- Install rootmap mechanism for the usage of plugins. + It is no longer necessary to have separate programs + for the various detector models (ILD/SiD). + One generic display program servest them all. + ==> Creation of package DDExamples/UtilityApps + example: $> bin/displayGeo -compact <compact-xml-file> + +- This move has another consequence: + All libraries are build into a common install area: + the <build directory>/lib. + All executable binaries are build into a common install area: + the <build directory>/bin. + +- The LD_LIBRARY_PATH and PATH variables as defined in + 'thisdd4hep.(c)sh' do include these directories + +2013/20/02 Markus Frank +- DD4hep release notes. Better start them late than never. + If you perform significant changes to the DD4hep core, + plase leave a small notice here. \ No newline at end of file diff --git a/doc/release.notes b/doc/release.notes deleted file mode 100644 index 8f6072ecd16dcaec8ab8a813d5b4728ad7632552..0000000000000000000000000000000000000000 --- a/doc/release.notes +++ /dev/null @@ -1,1411 +0,0 @@ - -================================= -DD4hep ---- Release Notes -================================= - - - - Markus Frank 2017-03-17 - -- Add a new input type by parsing JSON files. The basic json interpreter - is present and offers essentially the same interface as the XML persers. - The integration to the compact dialect however is not yet done. - It should become however a valid alternative to parsing XML files - with a small maintenance overhead, since the enhancement implementation - present in XMLDimesion.h, XMLDetector.h and XMLChildValue.h is shared - and instantiated for both. - - Markus Frank 2017-03-10 - -- New round to kill coverity deficiencies. - -- Add exception try-catch clauses around various main programs in UtilityApps - See UtilityApps/src/main.h for details. - - Markus Frank 2017-03-09 - -- Fix issue with long volume ids exceeding 32 bits. - Test added in examples/ClientTests - -- Fix volume manager id identical placed volumes are used in different places of the hierarchy. - Test added in examples/ClientTests - -- Remove various svn left-overs (ID$ strings etc.) - - - Frank Gaede 2017-02-10 - - allow event readers to create more than one vertex per event - this should be possible as most generator formats allow to specify - more than one event vertex - - changed signature of Geant4EventReader::readParticles(int,Vertex*, Particles&) - to Geant4EventReader::readParticles(int,Vertices&, Particles& ) - - implement in LCIOEventReader, Geant4EventReaderHepEvt and Geant4EventReaderHepMC - - for now still one vertex only is created using the first final state particle - for HepEvt and LCIO - - -------- - | v00-20 | - -------- - -Frank Gaede 2017-01-13 - - fix computation of radiation and interaction lengths - - require the density to be specified in the materials xml file - -Frank Gaede 2017-01-04 - - adopt numbers in test_surface.cc to elements.xml - - use elements.xml generated with plugin in DDTest - - add ROOT version to dumped element table - -Frank Gaede 2016-12-22 - - fix test_surfaces by adapting to elements.xml - - fix test_units by including elements.xml - - Markus Frank 2016-12-21 - - Add plugin to dump the default ROOT element table - - Markus Frank 2016-12-20 - - Remove obsolete build flags - - Markus Frank 2016-12-19 - - Add Multi-threading conditions example - - Andre Sailer 2016-12-16 - - Add drivers for Beampipe, Mask and Solenoid from lcgeo, changed name to DD4hep_* - - Rosa Simonielo, Frank Gaede 2016-12-15 - - add new struct DDRec::NeighbourSurfacesStruct defined for neighbouring surfaces - - Frank Gaede 2016-12-14 - - fix library pathes in env scripts for macos - - use DD4HEP_LIBRARY_PATH and full lib path on mac - - apply rpath compiler settings to GaudiPluginService - - make compatible w/ Geant4 10.3 - - Marko Petric 2016-12-13 - - Fix compiler flag handling - - Daniel Jeans 2016-12-08 - - add utility graphicalMaterialScan - - Markus Frank 2016-12-07 - - Fix compiler error on MacOSX gcc 4.9 - - Marko Petric 2016-12-07 - - Remove few tests from Travis - - move flag to CMAKE_SHARED_LINKER_FLAGS - - Remove the dynamic lookup on runtime for libs on mac - - Markus Frank 2016-12-05 - - First version of conditions and alignments - - Andre Sailer 2016-12-06 - - DDTest: fix location to install DDtest header files - - Remove minimum required cmake version from DD4hepBuild, this interferes with other packages depending on DD4hep - - Marko Petric 2016-12-02 - - Fix missing CLHEP in thisdd4hep.sh - - Clean up FindPYTHON.cmake file - - Change gaudi auto_ptr to unique_ptr since the auto is deprecated - - Fix initAClick - - Marko Petric 2016-11-29 - - Fix rpath issues on mac with python - - Add custom DynamicPath on mac when loading python libs - - Add function to set the DD4HEP_LIBRARY_PATH - - Marko Petric 2016-11-28 - - Update all minimum CMake versions - - Fix gitlab builds - - Rename MakeRootMap to MakeGaudiMap for consistency - - Remove ROOT5 things and make approprite fixed to the usage of ROOTConfig.cmake - - Remove FindROOT.cmake and use from now on ROOTConfig.cmake - - - Markus Frank 2016-11-30 - - New version of conditions handling - - Andre Sailer 2016-11-25 - - Fix ProductionCut conversion in Geant4Converter.cpp: cut is a range - - Markus Frank 2016-11-24 - - Fix linker errors on MAC - - Remove compiler warnings on MACOSX - - First fixes to version of alignment constant processing also remove where visited the $ statements in the files. - They are useless, since git does not support them. Fixed some tests, which no longer properly worked in - the conditions area. - - First usable version of alignment constant processing - - - Markus Frank 2016-11-16 - - Try to improve efficiency using C++11 default operations - - Markus Frank 2016-11-10 - - Simplify opaque data mappings for conditions - - - - - -------- -| v00-19 | - -------- - - 2016-11-17 D.Jeans - - - rewritten MegatileLayerGrid class - - not backward compatible - - M.Petric: - - - improved Travis CI configuration - - remove some tests from CI - - - -------- - | v00-18 | - -------- - -2016-11-09 F.Gaede - - - updated DDRec::LayeredCalorimeterData::Layer: - - remove deprecated thickness - - add phi0 - - add copy assignement to DDRec::MaterialData - -2016-11-08 M.Frank - - Improve conditions handling. Started to implement using simple telescope - detector from C.Burr. - - Add variable DD4HEP_LIBRARY_PATH to be used on MacOSX El Capitane - to overcome DYLD_LIBRARY_PATH protection issues. - - Fix to copy with negative(rebased) IDDDescriptor fields - (affects IDDDescriptor and VolumeManager). - 2 New tests: - - ClientTests/Bitfield_SidesTest.xml to test readout string: - system:8,barrel:-2 - - ClientTests/Bitfield_SidesTest2.xml to test readout string: - system:16,barrel:16:-5 - -2016-10-18 M.Frank - Due to pressure of the FCC folks, I tried to implement a more DD4hep like implementation of the - the segmentation objects. For testing only CartesianGridXY. If this mechanism works, - it could be a starting recipe for the rest of the segmentations. The draw-back of this approach is, - that assignments are not reversible: - DD4hep::CartesianGridXY xy = readout.segmentation(); // Works - DD4hep::Segmentation seg = xy; // Should not work - - Reason: the managed objects are different....at some point in time I will have to find a - clean solution for this, but the required changes for such a solution shall be manageable. - - -------- - | 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. - - -------- - | v00-16 | - -------- - -2016-07-26 Shaojun Lu - Added new MegatileLayerGridXY segmentation for Scintillator strip Ecal, which is implemented by K.Kotera, - and used by SEcal04Hybrid geometry driver. - - - many ( minor fixes ) by F. Gaede, M. Petric, A Sailer, ... - - -2016-06-24 M.Frank - Implement multiple segmentations. - Though one readout objects (associated to one DetElement) may only have on segmentation, - The MultiSegmentation type allows to have several sub-segmentations, which can be chosen - from. - Please see examples/ClientTests/*/MultiSegmentations - - At the same time allow the readout object to defined multiple collections through - the IDDescriptor. - Please see examples/ClientTests/*/MultiCollections - - The combined example can be found in - Please see examples/ClientTests/*/NestedSegmentations - - - -2016-05-03 M.Frank - Green light is ON. You may use revision 2237 and above. - -2016-05-03 M.Frank - ++++++++++++++++++++ NOTE: +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - - Mega commit. Do not use until green signal arrives with seperate release notice. - +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - - Package DDDB: Prove of concept, that we can populate the geometry also from other - sources than xml files obeying the lccdd notation. - - DDCore/XML: Implement the possibility to use external entity resolution for Xerces. - There is not equivalent in TinyXML (AFAIK). - - Remove some of the Spirit parsers, since the libraries are getting way too big. - This implicitly assumes, that object properties of 'exotic' types such as - deque<long double> etc. are not really used. If you need properties stay to the obvious: - string, int float, double and vectors, maps and sets thereof! - - DDG4 needed to public the DDG4Python include directory (Now in DDG4/Python). - Reason: try to create ROOT 6 dictionaries, which can be relocated for release purposes. - - ROOT 6 dictionary generation: Create dictionaries with the additional flag: - "-inlineInputHeader" which physically includes the header files used to generate the - dictionaries --> relocatability. - -2016-03-21 M.Frank - - Add additional vertex argument to EventReader::readParticles, which supposedly should - -2016-03-03 M.Frank - - Improve/complete job options type palette. - - Allow modify the Geant4IsotropGenerator to shoot particle distributions according - to several distributions: - flat in : uniform, cos(theta), eta/pseudorapidity, ffbar (1+cos^2 theta) - Option: generator.Distribution = 'cos(theta)' - Default is uniform. - - -------- -| v00-15 | - -------- - - 2016-02-15 A.Sailer - - LCIOStdHepReader.cpp - - fixed memory leak, compiled and valgrinded - - 2016-02-10 F.Gaede - - added utility DD4hep::XML::setDetectorTypeFlag() - to set the TypeFlag from xml element <type_flag type="0x42"/> - - select detectors with - DD4hep::Geometry::DetectorSelector(lcdd).detectors( ( DD4hep::DetType::TRACKER | DD4hep::DetType::ENDCAP )) ; - - used in UtilityApps/dumpdetector.cc - - added detector_types.xml with int constants defined in DetType.h, include with : - <include ref="${DD4hepINSTALL}/DDDetectors/compact/detector_types.xml"/> - - add elements to xml, e.g. - <type_flags type="DetType_TRACKER + DetType_ENDCAP + DetType_PIXEL + DetType_STRIP "/> - -2016-02-10 M.Frank - DDCond - First implementation of conditions access. Required some movements of files - from DDG4 (Properties) and some changes in the core conditions implementation. - The basic infrastructure is now present. Don't know yet however how buggy it is... - - -2016-02-05 F.Gaede - - added DetElement::typeFlag() and DetElement::setTypeFlag(unsigned int types) - - added utility class DetType for setting detector type properties in type flag - -2016-02-03 N.Nikiforou - DDDetectors - - Added plugin DD4hep_GenericSurfaceInstallerPlugin, copied from lcgeo - to allow installation of surfaces to any sliced detector - cmake/Doxyfile.in - - Added DDDetectors to the sources directory so Doxygen picks up the - plugin documentation - -2016-02-02 F.Gaede - - set momentum at endpoint (if lcio version > 2.6 ) for MCParticles in Geant4Output2LCIO.cpp - - fixed printlevel in Geant4Action::print() - - removed random lines drawn in teveDisplay - - dont't print DetectorData by default in dumpdetector - -2016-02-02 A.Sailer - DDG4 - - Implemented SimulatorFlags (DDFORHEP-17) - * In ParticleHandler: vertexIsNotEndpointOfParent, Stopped, leftDetector - * Steerable distance for vertexIsNotEndpointOfParent - * TCUserParticleHanlder Simulator flags: DecayedInTracker, DecayedInCalorimeter - -2016-01-21 A.Sailer/M.Frank - DDG4 - - Improved user defined physics constructors - * Allows user defined global rangecut - * Allows extending particle table (e.g. B-Hadrons unknown to geant4) - -2016-01-18 F.Gaede - - fixed default c'tors in DDRec/DetectorData.h to zero initialize sub-structures (LayerLayout etc) - -2016-01-13 F.Gaede - - allow the default sensitive action to be a tuple with parameter dictionary in DDG4.py/ddsim.steer e.g.: - SIM.action.tracker = ("Geant4TrackerWeightedAction", {"HitPositionCombination" : 1 , "CollectSingleDeposits" : False } ) - - fixed endpoint in MC-truth particles - -2016-01-11 F.Gaede - - fix hit momentum in Geant4TrackerAction (Geant4SDActions.cpp) - -2016-01-11 A.Sailer - DDG4 - - Add LargestAcceptableStep to field setup - -2016-01-07 A.Sailer - DDG4 - - Fix the logic for skipping of events at the start of input files: LCIO, HepMC, stdhep and HepEvt - - Event number in lcio outputfile takes skipped events into account now - -2016-01-06 F.Gaede - - bug fix in DDSurfaces::ISurface for surface properties (orthogonal/parallel to z) - (affected ILD VXD) - -2016-01-05 F.Gaede - - added print functions for DDRec::DetectorData objects - - used in dumpdetector: - dumpdetector compact.xml -d - - -2015-12-09 N.Nikiforou - UtilityApps/teveDisplay - - Modified teveDisplay to have three separate collections of surface vectors (u,v,n) - instead of one collection. Now the vectors are colored differently. - - Changed signature of getSurfaceVectors() to allow selection of o,u,v,n vectors to - add to the collection, added option for name and color of collection. - - Renamed surface list collections to "HelperSurfaces" and "SensitiveSurfaces". - - Changed signature of getSurfaces() to allow setting of name and color of collection. - - -2015-12-01 M.Frank - DDG4 - - Remove some of the compilation warnings - - Remove energy cut in sensitive detectors - If you though need, use a Geant4Filter to mask the action processing - examples/CLICSiD - - Add a few tests for materialscan and simulation setups using XML or CINT. - examples/ClientTests - - Add a few tests for materialscan and simulation - -2015-11-24 M.Frank - DDG4 - - Implementation of multi-threading mode. - To use and understand, please consult the DDG4 manual from the doc area. - - "Old" Single threaded mode and functionality is preserved. - - Numerous new classes supporting thread and master specific setup - functionality. - - Support for python configuration (see manual for details) - - Support for global Geant4Actions executing in thread reentrant shared mode. - (see manual for details) - - DDG4 examples: DDG4/examples/CLICSidSimu.py deleted and replaced with: - 1) DDG4/examples/SiDSim.py (single threaded, old example) - 2) DDG4/examples/SiDSim_MT.py (multi threaded version of SiDSim.py) - DDCore: - - Support user formats for the default printout statements for nicer printouts. - - Removal of compiler warnings - -2015-11-23 F.Gaede - - added glbal method DD4hep::versionString() - -2015-11-13 S.Lu - - Added a new AHcal Barrel segementation: TiledLayerGridXY, to be used e.g. - for the ILD AHcal Barrel Sensitive layer segmentation design. - -2015-10-30 F.Gaede - - fixed LCIOFileReader to use sequential reading mode - as using direct access always required runNum==0 and sequential evt nums ... - - -2015-10-15 F.Gaede - DDSurfaces::ISurface/Surface - - added implemation of conical surfaces - - ICone, VolConeImpl, VolCone, ConeSurface - -2015-10-13 M.Frank - DDG4 - - Remove explicit constructors for modular physics lists. - Use the native Geant4 provided G4PhysListFactory instead. - The physics list is instantiated as before with the "Extends" property. - - Implement angular ranges in the Geant4IsotropeGenerator for phi [0,2pi] and theta[0,pi] - - New sensitive detector Geant4TrackerWeightedAction - Attempt to properly process combined deposits in tracking detectors. - - Debug component Geant4SurfaceTest similar to the standalone program - test_surfaces, but to be appended as a DDG4 event action for event by event - tests of hits. - -2015-10-09 M.Frank - DDG4 - - Extend the functionality of the DDG4 plugins - Geant4InteractionVertexBoost and Geant4InteractionVertexSmear. - If the Mask property is set to -1, all interactions present - at call time are smeared/boosted according to the parameters. - Note, that the position of the plugins within the generation - sequence is important. - - Add a new generator Geant4GeneratorWrapper to allow the use - of native G4 generator classes such as the G4ParticleGun or - the G4GeneralParticleSource. Still to be tested. - - Extend the Geant4Random functionality: May now be instantiated - like any other Geant4Action. Users may set the seed or the - luxury level. - All calls to HepRandom (CLHEP) or gRandom (ROOT) will re-use - this instance. See DDG4/examples/CLICRandom.py for illustration. - - Updated DDG4 manual. - -2015-09-30 F.Gaede - - updated createGearForILD.cpp to use new parameters in LayeredCalorimeterData - ( innerThickness, innerRadLength, etc) - - -2015-09-15 F.Gaede - - refactoring of Surface classes: - - made VolSurface a reference counting handle to - a polymorphic pointer of type VolSurfaceBase - - this should facilitate the creation - of dedicated surface classes for special cases - such as inside the beampipe or the face of the calorimeter - -2015-08-27 F.Gaede - - added macros DD4HEP_VERSION_GE(MAJV,MINV) and DD4HEP_VERSION_GT(MAJV,MINV) - to LCDD.h - - - increased version number to v00-15 - - -2015-08-20 M.Frank - - DDCore: Modularize/abstract plugin manager - - VolumeManager: Fix bug propagating sensitive detectors - Showed up in the examples of nested detectors - - -2015-08-12 N.Nikiforou ------------------------ - - DDCore/XML: Added new helper functions to Layering engine: - - double absorberThicknessInLayer(XML::Element e) : - returns total absorber thickness in given layer - - void sensitivePositionsInLayer(XML::Element e, std::vector<double>& sens_pos) : - provides positions of sensitive slices within a layer with respect to the - center of the layer - - -2015-07-25 M.Frank ------------------- - - DDSegmentation: Remove several 'shadow' warnings. - - - New build system for the DD4hep core, which greatly simplyfies the cmake files - for the various sub-packages. - Tested with Andre's build script doc/CompileAllOptionPermutations.sh. - (GEAR usage not tested though) - - -------- -| v00-14 | - -------- -F.Gaede - - fixed writing of generator status for lcio::MCParticle - in Geant4Output2LCIO.cpp - -A.Sailer - - Add missing scope to /DD4hep/Factories.h, to not force everyone to use using namespace - -F.Gaede: 2015-07-15 - - changed type in SurfaceList and SurfaceMap from Surface to ISurface - - added methods length_along_u/v() to ISurface - - moved setting of CMAKE_CXX_FLAGS (if DD4HEP_USE_CXX11) from DD4hep.cmake to CMakeLists.txt - -2015-07-11 M.Frank -------------------- - - added starter docs DD4hepStartersGuide.pdf - -*** Important *** - Before updating, backup your existing and working checkout. Though I was running - the basic tests, there may be unchecked corners of the software. - -Notes: - - Backwards compatibility mode for the usage of ROOT 5 and ROOT 6 alternatively. - - For ROOT 6 the Gaudi PluginService is used and added to the distribution. - - DD4hep is distributed with a licence. See $DD4hepINSTALL/LICENSE for details. - - In the doc area the $DD4hepINSTALL/doc/CREDITS file everybode should add her/his - name, if contributed significantly. - - Unfortunately this meant to add/change the headers of all files and give a - pointer to the licence file. If I accidentally changed the author name, please - chagne it back. - - - The plugin factory declaration statements were changed to accomodate both - ROOT 5 and ROOT 6 and to keep the number of 'ifdef' statements at a minimum. - - - TODO: Properly change the cmake scripts to accomodate for ROOT 6 and the - automatic switch when building DD4hep. - - For reference reasons: this commits is revision 1812 + 1813 (DDDetectors) - - -------- -| v00-13 | - -------- - - -2015-07-03 F.Gaede ------------------- - - updated doxygen for detector DDRec::DetectorData structs and usage in convertToGear - - -2015/07/02 Nikiforos Nikiforou ------------------------------- - - - Added isRadiator() helper function in DDCore/XML/XMLDetector.h/cpp - Mirroring functionality of isSensitive() and used in geometry drivers - e.g. to calculate total absorber thickness - - - Extended LayeredCalorimeterStruct in DDRec/DetectorData.h to include - additional parameters required by Pandora: - inner_phi0 (e.g. alignment for inner symmetry) - outer_phi0 (e.g aligment for outer symmetry) - NOTE: phi0 still remains but is deprecated - gap0 (e.g stave gap along r-phi) - gap1 (e.g middle stave gap along z) - gap2 (reserved for future use) - - - - 2015-06-29 A.Sailer ---------------------- - - always store lcio collections, even if they are empty in Geant4Output2LCIO (DDG4/ddsim) - - -2015-06-29 F.Gaede ------------------- - - changed env scripts to prepend to library pathes (DD4hep and dependant packages) - -> using a newer lcgeo version than the one provided in ilcsoft can simply - be done w/ source ./bin/thislcgeo.sh - - -------- -| v00-12 | - -------- - - -2015/06/17 Markus Frank ------------------------ - - Add possibility to block access to constants by name from LCDD. - Functionality enabled by a constant named "LCDD_InhibitConstants" with value "1", "True", "Yes". - Test: geoDisplay -compact file:../DD4hep.trunk/examples/ClientTests/compact/InhibitConstants.xml - - - Add LCDDHelper handle object to easily access the sensitive detector object of a detector - using either the subdetector name or the detector element (or one of its children). - See: DD4hep/LCDDHelper.h - Test: geoPluginRun -input file:../DD4hep.trunk/examples/CLICSiD/compact/compact.xml \ - -plugin CLICSiD_LCDDHelperTest \ - optional: -<detector-name (default:SiVertexEndcap)> [Note the '-'!!!] - - - Check when adding new sub-detector detector elements if a given one already exists. - if yes: exception. - Test: geoDisplay -compact file:../DD4hep.trunk/examples/ClientTests/compact/DuplicateSysID.xml - - -A. Sailer ------ - - DDSegmentation: Added function cellDimension which returns the dimension of any given cell - - -S.Lu: ------ - - Added a switch for BirksLaw to Geant4StepHandler. - For backward compatable, by default, do not apply BirksLaw, and apply BirksLaw with call 'doApplyBirksLaw()'. - added optional Geant4ScintillatorCalorimeterAction - - Added one 'Geant4ScintillatorCalorimeterAction' into DDG4 plugins Geant4SDActions for scintillator to take - Geant4 BirksLaw effect as sensitive detector active layer. - -F.Gaede -------- - - added SurfaceManager class that holds maps of surfaces for - "world","tracker","calorimeter","passive" and all individual subdetectors - - to be used in reconstruction code where a lookup from cellID - to corresponding surface is needed - - needs plugin "InstallSurfaceManager" to be in the compact file - - access via: - SurfaceManager surfMan = *lcdd.extension< SurfaceManager >() ; - const SurfaceMap& surfMap = *surfMan.map( "world" ) ; - - renamed old SurfaceManager to SurfaceHelper - - - added method: Geometry::Volume createPlacedEnvelope() - - to be used in all LC detector drivers to create a placed envelope volume - rest of the detector is then instantiate in this volume - - - added BooleanShape plugin for creating generic boolean - shapes (subtraction, union or intersection ) - - to be used for envelope definition in xml - - - added new build_type: BUILD_ENVELOPE - - can be used to visulize envelopes only (geoDisplay, teveDisplay,...) - -2015/05/22 Nikiforos Nikiforou ------------------------ - - Fixed bug in DDG4/lcio/LCIOConversions.cpp, which stored only the PDG of the primary particle - in multiple particle contributions in SimCalorimeterHits instead of both the primary and secondary PDGs. - - -2015/05/13 Markus Frank ------------------------ - - Fix bug in DDG4, which forced DDG4 to exit if a property from the Geant4 prompt could - not be set. No an error message is printed and the prompt is returned to the user. - (Bug submitted by A. Sailer) - -2015/05/11 Andre Sailer ------------------------ - - CMake updates: - - Split libraries into components: use find_package(DD4hep COMPONENTS <component> [...] ) - to find the components you need. - - At the moment there are these components are sensible to link against: DDRec, DDG4, DDEve, DDSegmentation - - To link against the librarie use either DD4hep_COMPONENT_LIBRARIES or DD4hep_<COMPONENT>_LIBRARY, - where <COMPONENT> needs to be replaced by the UPPER case name of the component - -2015/05/09 Markus Frank ------------------------ - - Allow to access detectors by type from lcdd. - - The sensitive type of a detector is set in the 'detector constructor'. - - Not sensitive detector structures have the name 'passive' - - Compounds (ie. nested detectors) are of type 'compound' - - Dump detector types using plugin: - geoPluginRun -plugin DD4hepDetectorTypes -input <compact-file> - -2015/03/12 Markus Frank ------------------------ - - Add support for ellipsoids in gdml/lcdd and geant4 conversion. - - Allow to include files with environment variables from compact notation. - -2015/03/09 Markus Frank ------------------------ - - Finalize move to geant4 version 10, started by A.Sailer - - Add non-isotrop particle generator in DDG4 (request P.Kostka) - - Isolate ROOT plugin manager as start to move to ROOT 6 - - -------- -| v00-11 | - -------- - - changes in sub packages: - ----------------------- - - - DDDetectors - - new Package containing generic DD4hep detector palette (MF) - - added 'dimension' argument to DD4hep_SiTrackerBarrelSurfacePlugin (FG) - to handle pixel and strip detectors - - - DDRec (FG) - - added simple data structs in DDRec/DetectorData.h - providing interface needed for GEAR: - - added plugin for creating GEAR file for ILD - - Extended IDDecoder to give access to layer, system and barrel/endcap information. (CG) - IDDecoder is now independent of Readout object, instead it finds the correct - readout based on the cellID / position - - fixed surface implementations: removed inline virtual functions - - added methods: - VolSurface::length_along_u() - VolSurface::length_along_v() - Surface::volumeOrigin() - CylinderSurface::center() - ICylinder::center() - - - - DDG4 (MF) - - Fix Geant4 Primary input conversion - - Fix LCCollectionVec for LCIO output - - fixed units for MCParticle output (FG) - - fixed generator status: set to 0 if (FG) - particle created in simulation - - Add cylindrical tracking volume to particle handler - - More modular user particle handling with example Geant4TCUserParticleHandler - - fixed charge (don't devide by three) (FG) - - fixed logic for writing out MCParticles: (FG) - - don't write particles created in calo - unless scattered back into tracker) - - don't write particles created in tracker - if below MinimalKineticEnergy ( Geant4ParticleHandler) - - Added HepMC ascii reader - - added simply main program 'dd_sim' to run (FG) - a DDG4 based simulation with xml configuration files - - change TrackerCombine SD to use energy weighted positions - - added utility to dump generated files: scripts/dumpDDG4.C - - fixed dictionaries for map iteration on MacOS in python (FG) - -> added operators ==/!= for map<>::iterator - - added component to allow the setup of the magnetic field tracking in Geant4 from python - - - - - DDCore (MF) - - fixed LCDD el-mag. field converter - - add generic surface installers - - allow for string constants in lcdd define section - - added arguments for surface plugins - - - DDSegmentation (FG) : - - fixed compiler warning w/ left shift count >= width of type - - fixed wrong type string "CartesianGridXY" - - added CartesianGridYZ - - Implementation of a Polar R-phi segmentation (MP) - - - examples - - add new test MiniTel(escope) to ClientTests (MF) - - moved old obsolete examples to attic - - add new example: LHeD_tracker (MF) - - add new example: SimpleDetector (FG) - (ILD like VXD and SIT ) - - - CMake: - - made DD4HEP_USE_BOOST an option flag (FG) - - added DD4hepG4 library dependence to DDEve (MF) - - disable dot -> have simpler (and faster) inheritance graphs w/ Doxygen - - fixed missing search field in Doxygen doc (FG) - - include boost automatically if build with Geant4 - - - - Documentation - - improved Doxygen documentation (MF) - - added manual for DDRec (FG) - - new version of the DD4hep manual (MF) - - fixed code formating with emacs style: - ./doc/format_code.sh - - - removed subpackages ( moved to https://svnsrv.desy.de/public/aidasoft/DD4hep/attic ): - DDExamples_obs/ - DDSense/ - examples/ILDExDet/ - examples/ILDExSimu/ - examples/firstExample/ - examples/noviceN04/ - - - enabled testing in nightly builds with cmake, ctest and cdash (FG) - - - plus many small bug fixes (use svn log for details ) - - -2014/09/26 Markus Frank ------------------------ - - Quite some effort to improve the doxygen documentation. - The current revision is can be found at: - https://cern.ch/frankm/DD4hep/html/index.html - -2014/02/06 Markus Frank ------------------------ - - DDDetectors: Add example surface plugin with arguments. - -- example code: DDDetectors/src/SurfaceExamplePlugin.cpp - -- compact: - <plugin name="DD4hep_SurfaceExamplePlugin"> - <argument value="SiTrackerBarrel"/> - <argument value="aa=1*mm"/> - <argument value="bb=2*cm"/> - <argument value="cc=3*m"/> - </plugin> - -- output: - SurfaceExamplePlugin: argument[0] = SiTrackerBarrel value = -1 - SurfaceExamplePlugin: argument[1] = aa=1*mm value = 0.1 - SurfaceExamplePlugin: argument[2] = bb=2*cm value = 2 - SurfaceExamplePlugin: argument[3] = cc=3*m value = 300 - - -2014/08/15 Markus Frank ------------------------ - - DDG4: Impreoved LCIO handling for DDG4 - - DDG4: Input handling: - - LCIO input file reading with multiple *independent* inputs - to support overlay, multiple interactions, etc. - - Primary verex smearing independent for each input - - Primary vertex boosts independent for each input - - DDG4: Output handling - - MC Particle handling - - Improved MC truth handling for produced Hits. - Still needs revisiting. - - -------- -| v00-10 | - -------- - - Frank Gaede ------------- - - fixed version numbers and release notes for release v00-08 and v00-09 - ( both have the wrong version number for the libraries 0.7 !) - - added ./doc/prepare_a_release.howto - - added new method to BitField64: setValue(unsigned lowWord, unsigned highWord ) - - added some simple unit tests for BitField64 - - -2014/08/15 Markus Frank ------------------------ - - DDG4 Add possibility for user hook to the particle handler + - Data member to store additionbal particle data for the - output stage. - - Allow to display MC particles in DDEve - Add small help file describing how to start DDEve. - doc/DDEveManual.pdf - - Update CLICSiD Example. - - - -------- -| v00-09 | - -------- - - -2014/08/07 Markus Frank ------------------------ - - DDG4: First version to support MC truth in DDG4 including - particle filtering to optimize the size of the MC record. - - DDG4 fix SimpleCalorimter sensitive action and properly support - hit aggregations. - - DDEve smaller modifications to support DDG4IO if DD4hep was - built with the Geant4 option ON. - - - -------- -| v00-08 | eighth beta release ... - -------- - - - Some minor fixes: - - made compatible with older geant4 versions (9.5) - - add Bitflag to store CellID1 in SimCalorimeterHit collections - - fix position conversion from Geant4 to ROOT - - add cellID determination to SensitiveAction - - ... - - -Andre Sailer, 2014-07-17 ------------------------- - Unify cmake option variables, small cmake corrections - Change options _WITH_ to _USE_ - Print Warning that variables with _WITH_ are deprecated - Change Defintions to _USE_ as well - Add REQUIRED to find_package geant4 and xercesc if they are turned on - Updated documentation - Updated ILDExDet example - -Christian.Grefe, 2014-07-15 ---------------------------- - made DDSegmentation optionally a stand-alone package - create DDSgementationConfig.cmake when build as part of DD4hep - - - Markus Frank, 2014-07-02 - ------------------------ - - add LCIO conversions from DDSim - sensitive detectors - can now simply instantiate LCIO Sim hits - - - -2014/06/30 Markus Frank ------------------------ - - DDG4: Support user (context-) extensions for Geant4. - User contexts are availible for events and runs. The contexts - are accessible from the Geant4Context meber of each Geant4Action, - the base class for all processing entities. - -- Adding a context: - context()->event().addExtension(pointer_to_object, typeid(TYPE), 0); - or - context()->event().addExtension<TYPE>(pointer_to_object); - In the first case the object is NOT DELETED at the end of the event. - In the second case the object is deleted. - -- Accessing the context: - TYPE* ctx = context()->event().extension<TYPE>(false); - The boolean argument indicates if an exception should be thrown - if the extension is not present ie. here no exception. - - DDCore: adjust a few print statements. - -2014/06/27 Markus Frank ------------------------ - - Separate XML loading from LCDD implementation. - - New package: DDEve: a bit more sophisticated TEve specialization - To start use examples/CLICSiD/compact/DDEve.xml - DDEve can interface currently to ROOT files created by DDG4. - An example data file is provided as well in: - examples/CLICSiD/compact/CLICSiD_events.root - Documentation is lacking a bit.... - start the display with: - $> root.exe ${DD4hepINSTALL}/examples/DDEve/DDEve.C - - -2014/06/19 Frank Gaede ----------------------- - - replaced TGeoUnits.h by DD4hepUnits.h - - renamed namespace tgeo to dd4hep - -> users need to replace tgeo::mm by dd4hep::mm - - -2014/06/12 Frank Gaede ----------------------- - - changed default unit for angles to be radians (tgeo::rad = 1.) - - enforce usage of units from TGeoUnits.h in xml expression evaluators - - convert to degrees for angles in TGeoShapes constructors - - NB: there is one inconsistency left here: angles returned - from TGeoShapes are already in degrees, this is the one - case where a quantity returned from DD4hep/TGeo does not have the default - units - thus one should not write - double phi = coneSeg.Phi1() / tgeo::rad ; - but rather - double phi = coneSeg.Phi1() * tgeo::deg ; - - -2014/06/03 Markus Frank ------------------------ - - Provision for ROOT persistency for DD4hep detector descriptions: - Create Cint dictionary for DD4hepCore by default when building the library. - For the time being the area of DDSegmentation is left out, since these - objects require changes due to the handling of references and template - specializations. Besides these, DD4hep detector descriptions can be - saved and read-back directly to/from ROOT files - which may improve - a lot the startup time of processes. - - - The DDG4 dictionary is created by default when building the library. - When importing DDG4 from python only the DD4hepCore DD4hepG4 libraries - must be present. It should no longer be necessary to compile the - necessary AClick on the fly. - - - Investigations on wirframe drawing: - Wireframes are a property of the scene graph. You can toggle to wireframe - using the 'w' key on the keyboard. Other representations are - 'r': Solid view - 't': Solid + wireframe view. - This information is accessible from the help menu of the ROOT OGL widget. - - -------- -| v00-07 | seventh beta release ... - -------- - -2014/05/28 Markus Frank ------------------------ - - Several fixes and improvements in DDG4 - - Cache output levels in Geant4Kernel object - - Add shell handler to measure energy escape e.g. in calorimeters - - Fix bug in Polycone shapes concerning angles. - IMPORTANT: If you forked the repository examples/CLICSiD - your PolyconeSupport does not work anymore, because the angles - were given in degrees. They should be given in radians! - -2014/05/21 Markus Frank ------------------------ - - Fix material creation from XML - JIRA bug: DD4hep - DDFORHEP-4 - https://sft.its.cern.ch/jira/browse/DDFORHEP-4 - using <composite> in material xml files results in wrong material properties - - - Fix JIRA bug: DD4hep - DDFORHEP-3 - https://sft.its.cern.ch/jira/browse/DDFORHEP-3 - Recursive assemblies result in error in TGeo geometry - Bug results in errors when closing the geometry like: - "Error in <TGeoVoxelFinder::SortAll>: Wrong bounding box for volume SIT_assembly" - - - Provision to store survey constants to the DetElement as an extension - for Alignment calculations (priv. comm. C.Parkes) - - - Fix bug in expression evaluation of angles. - All detector constructors receive angles in "rad". No correction - from degree to rad should be necessary. - -2014/05/21 Frank Gaede ------------------------ - - add MaterialManager class providing - - access to materials at any point or on straight - line between two points - - creation of material with averaged properties (A,Z,rho,x0,Lambda) - - - added utility print_materials to print material properties along - a straight line between two points including integrated radiation and - interaction lengths (useful for debugging geometries and materials) - - - use avaeraged material for Surfaces where the thickness extends - beyond the volume boundaries - - introduced new simple data class MaterialData for this - - - *** known issues - ** materials don't work for detectors with assemblies in assemblies - as the TGeo navigation dose not seem to work: - Error in <TGeoVoxelFinder::SortAll>: Wrong bounding box for volume SIT_assembly - -> ROOT bug or feature ? - - ** using <composite/> in compound materials results in incorrect material properties - see ILDExDet/compact/materials Polysterene as example - - -2014/05/06 Frank Gaede ------------------------ - - DDSurfaces/DDRec: - - added ICylinder and CylinderSurface to provide - access to cylinder radius for the tracking - - teveDisplay: - - draw sensitive surfaces in red and helper surfaces in gray - - protect against missing lcio input file - - reduced printout from VolumeManager (changed INFO to DEBUG) - -2014/04/05-2014/04/29 Frank Gaede ---------------------------------- - - Implementation of Surface classes for track reconstruction - - abstract interfaces in DDSurface: ISurface and IMaterial - - implementation in DDRec: Surface, SurfaceManager, DetectorSurfaces - - basic functionality exists: - - meassurement surface vectors u,v, normal and origin - - check if point is inside the bounds of the corresponding volume - - currently the material is taken to be the one from the volume - -> to do: average material if surface thicknesses extend beyond the - volume for comound materials - - added drawing of surfaces and (Sim)TrackerHits and (Sim)CalorimeterHits to teveDisplay - ( link lcio file to teve_infile.slcio ) - - added some surfaces to ILDExDet: VXD, SIT, TPC - - added test_surfaces to ILDExSimu - (fails currently for some hits that are not created on the surface ...) - - added some assemblies to ILDExDet to better structure the geometry hierarchy - -2014/04/28 Markus Frank ------------------------- - - First attempt to understand fully the handling of recursive assemblies - from the 2014/04/25 was apparently with limited success. Now they should - work! - -2014/04/25 Markus Frank ------------------------- - - Moved boost::spirit parsers to DDCore, since these parsers are also used - in other packages such as DDCond and DDAlign - whenever strings have to be - converted to objects. - Consequently, the boost spirit code fragments were removed from DDG4. - - Improved and more correct type checking when assigning handles - - Explicit implementation of the object extension mechanism to be used - through inheritance or aggregation rather than having seperate and nearly - identical implementations for various objects. - - Improved defintition of basic objects describing Conditions and Alignment. - - Improved implementation of DDAlign, the alignment support. - Not to be used currently - experimental package. - - Initial implementation of DDCond the package supporting the handling of - conditions. - Not to be used currently - experimental package. - - Geant4Converter: I convinced myself, that the bug in handling assemblies - of assemblies is resolved. To be tested though. - -2014/02/07 Frank Gaede ------------------------ - - added DDGear, support for interfacing to gear for backward compatibility - - lives currently in ILDExDet ( should become (optional) part of core DD4hep) - - users need to GearParameter objects as extensions to the DetElement - -> see ILDExTPC_geo.cpp, ILDExVXD_geo.cpp, ILDExTPCSIT_geo.cpp as examples - - program convertToGear creates gear xml file from compact file - ( only if GearParameter objects are avialble as extensions) - - added test_convert_ild_gear - - fixed geometry in ILDExVXD_geo.cpp, ILDExTPCSIT_geo.cpp - wrt. to position of support ans sensitive ladders - - - -------- -| v00-06 | sixth beta release ... - -------- - -2014/02/04 Frank Gaede ------------------------ - - fixed environment scripts thisdd4hep.sh and this${PackageName}.sh - to also export library pathes for external libraries (CLHEP, LCIO, gear) - - - added some simple tests to ILDExDet, ILDExSimu and noviceN04 - - provide cmake script run_test_package.sh ( configured as run_test_${PackageName} ) - to call test binaries after initializing the environment - (needed for automated/nightly tests) - - - updated Readme.txt wrt build procedure and running the tests - - -2014/01/17 Markus Frank --------------------------- - - Prepare implementation of Alignment using Release and Grap features of TGeoVolume - and TGeoNode. In principle this was done in a backwards compatible way, but - I cannot really check 100% the #ifdef's. - - Fix handling of XML collections using XercesC. - (Bug reported by P.Kostka). - - Fix several compiler warnings issued by Coverity. - -2013/12/17 Markus Frank --------------------------- - - Whole load of fixes to keep coverity quiet.... - - Fix bug in DDG4 field interface component - - Allow the usage of units, positions and lorentzvectors and in DDG4 properties. - Example using a position property (ROOT::Math::XYZVector): - Idle> /ddg4/Gun/position (1*mm,1*cm,0.01*m) - Geant4UIMessenger: +++ Gun> Setting property value position = (1*mm,1*cm,0.01*m) - native:( 1 , 10 , 10 ). - - - Support for std::vector<T>/std::list<T>/std::set<T> properties. - - - Support for include directives of the format - <include ref="file-name"/> - for the top level <lccdd> tags - Parent tag Included root tag Data content - -- <lccdd> <define> See below. - <detectors> - <detector> - <display> - <lccdd> Nested includes (with DTD validation for Xerces-C) - -- <define> <define> Set of constants - -- <detectors> <detector> Single XML subdetector description - -- <detectors> <detectors> Multiple XML subdetector descriptions - -- <display> <display> Set ov visualization attributes - - DTD validation is only performed using Xerces-C for root tags <lccdd>. - - Note: - <lccdd> include directives are executed BEFORE any other directive! - Other include directives are executed BEFORE the corresponding named directive! - -2013/11/14 Markus Frank --------------------------- - - Reformat files in DDCode and DDG4 to remove the <TAB>s from the source files. - Hopefully the content is now more readable. - - DDCore: Remove empty and named constructors for shapes. Empty constructors - were simply a dangerous hook to memory leaks, named constructors are - deprecated since along time. - - DDG4: add support for messengers to access and modify properties from - the Geant4 prompt. For the test hit classes and the simple sensitive - detector a ROOT I/O plugin was provided. - - DDG4: Split into several libraries: - -- libDDG4.so pure link library without any plugins - -- libDDG4Legacy.so 'Old' plugins. The old stuff at some point - will have to disappear. - -- libDDG4Plugins.so New framework plugins - -- libDDG4LCIO.so LCIO output plugin for new framework - -2013/11/03 Markus Frank --------------------------- - - doc: Add CHEP2013 paper about DD4hep as a start of the documentation - section. More to come hopefully. - - DDCore: several small improvements: - - Segmentations are no longer Ref_t's. - - Base internal implementing object directly on the segmentations - classes from Christian. - - Rearrangement of some code from Handle.h to Primitives.h - - Allow to attach extensions to LCDD - - DDG4: Fix Frank's simulation problem, which he caused himself - introducing his famous factories.... - - DDG4: First attempt to fix simulation problem with mignetic field. - Ready for testing. - - DDG4: First commit of a independent simulation aimed for LHCb and LHeC - + other newcomers. Documentation needs to be written. - Features: - - Modular setup of all Geant4 action routines as plugins, including the - Run-, event-, tracking-, stacking-, stepping- and generator-actions - as well as the physics lists with particle and physics constructors. - - Setup is possible in XML or with C++ either as an AClick in root or - standalone. Python based starter to come. - - Missing is a modular description of the G4 UI and VIS manager(s). - - Documentation is to come. Before documentation is not present - the usage is discouraged. - Note: - - This version of DDG4 uses boost::spirit. It will compile without - the BOOST include files and the old functionality is preserved, - but it will not work. - To use BOOST add to the cmake statement the following tags: - cmake <regular tags> \ - -DDD4HEP_USE_BOOST=ON \ - -DBOOST_INCLUDE_DIR=${BOOST_INCLUDE_DIR} .... - Where BOOST_INCLUDE_DIR should point to the boost header directory. - BOOST libraries are not used. - - -2013/10/18 Markus Frank --------------------------- - - Throw exception if the expression evaluator sees a problem. - The message printed before was often not seen. - - Improve printout on exceptions and plugin abortion - - Remove the typedef RotationZYX -> Rotation and - import the type RotationZYX from ROOT::Math. - - - Add more explicit error messages in case a plugin is not found. - - Add file TGeoUnits.h, which allows to use the "usual SystemOfUnits" - from CLHEP using TGeo with the namespace tgeo::xxx - Example: tgeo::mm -> 0.1 (Geant3: cm, sec, GeV, degree) - ::mm -> 1.0 (Geant4: mm, nsec, MeV, radian) - I hope I got all translations right. - Geant4 Geant3 - ---------------------------------------------------------------- - millimeter mm=1,cm=10 centimeter mm=0.1,cm=1 - nanosecond s=1e9 second ns=1e-9,s=1 - Mega electron Volt GeV=1e3 GeV GeV=1 - radian rad=1 degree rad=180/pi - - Unclear to me was if in Geant3 steradian is also 2*2*pi or 2*2*180 degree. - - - -No-date F. Gaede -------------------- - - changes to build system: - (see ReadMe.txt for details) - - - moved examples to ./example directory - - they are not built as part of DD4hep anymore - - - install thisdd4hep.sh in ./bin - (modified to have the correct pathes) - - - added -DINSTALL_DOC=on/off option - to build doxygen documentation (in ./doc/html/index.html) - - - create DD4hepConfig.cmake for easy building against DD4hep - ( see examples CMakeLists.txt) - - - fixed doxygen API documentation (C.Rosemann) - (greatly improved with many graphs) - - - -------- -| v00-04 | fourth beta release ... - -------- - placement options are now compatible with geant4 - - fixed Geant4SensitiveDetector::getVolumeID() - - modified ILDEx model to not use assemblies (for now !?) - - removed obsolete geant4 example ILDEx - - Fix population procedure of volume manager - - Fix uniqueness of volume identifiers. - - Remove call with lookups by placed volume to the volume manager - - improved ILDEx toy example: - - fixed creation of cellIDS for simhits - - creates SimTrackerHits for VXD, SIT and TPC - - creates SimCalorimeterHits for AHcal barrele and endcap - - works now wigth ILDExSimu _and_ SLIC if no assemblies are used - - assemblies work with the DD4hep Geant4Converter and VolumeManager - - added a prototype example for a ROOT independent - plugin mechanism for SensitiveDetectors - - added example implemetation for Calice test beam - calorimeters: CaliceTbeam (Shaojun Lu, DESY) - - -2013/21/06 Markus Frank --------------------------- - 1) Since the placement model for combined translations and rotations - caused more confusion than good, it was agreed to move to a more - Geant4 like placement model using Vectors, Rotations and Transformations - from ROOT::Math. To place a physical volume only one of these - is allowed as an argument: either a rotation or a translation - for simple placements. Combinations may be constructed with Transform3D - objects allowing more complicated placements. - The same mechanism was applied for the operations to construct - boolean solids. - 2) The CLICSid Examples were updated according to the changes necessary - from 1) - 3) The Tesla drivers from the ILDExDet example were removed. They are - not compliant to 1). - 4) The G4 package allows now to translate TGeo geometries to Geant4. - Visual inspection has shown an agreement between the two geometries. - 5) The TGeo to LCDD/GDML conversion is still buggy. Hence, simulations - using slic as an engine do not yet work. This is being looked at. - - IMPORTANT NOTICE: - The changes described in 1) may affect existing detector constructors. - Unless all problems are solved you should be careful to move to the svn - head. In any case save your checkout or use the tag v00-03. - - - - -------- -| v00-03 | third beta release ... - -------- - broken geometry (for some rotations/translations) - - 'backup release' before placement options - will be reduced - - -------- -| v00-02 | second beta release ... - -------- - - -2013/02/06 Markus Frank --------------------------- - 1) Simplyfy inheritance for common objects from TNamed. - Use direct inheritance of Object from TNamed rather than hidden - using the Value<a,b> construct. - 2) Added physical volume manager to simplyfy the detector element - and sensitive detector lookup from a given physical volume. - This implies: If the volume manager is instantiated, the readout specifiers - MUST be correct. This is in most xml files NOT the case. - The "system" field holding the sibdetector-id is MANDATORY! - Otherwise you will receive messages like this: - - Exception:SITCollection: This ID descriptor has no field with the name:CellID0 - while programming VolumeManager. Are your volIDs correct? - - 3) To check the volume identification, add argument -volmgr to geoConverter, - geoDisplay, etc. - 4) To trace possible memory leaks: - export DD4HEP_TRACE=Yes - then run you converter etc. At the end a table is displayed with a "leakage" - column, showing how many objects were not deleted. - - +----------------------------------------------------------------+ - | I n s t a n c e c o u n t e r s b y T Y P E I N F O | - +----------+---------+-------------------------------------------+ - | Total | Leaking | Type identifier | - +----------+---------+-------------------------------------------+ - | 13| 0|DD4hep::Geometry::DetElement::Object - | 3| 0|DD4hep::Geometry::SensitiveDetector::Object - | 3| 0|DD4hep::Geometry::Readout::Object - | 1| 0|DD4hep::Geometry::OverlayedField::Object - | 1| 0|DD4hep::Geometry::CartesianField::Object - .... - Ideally the second column only has "0"s. Instances of 1 may be OK (singletons). - - Prenotice: - As soon as ROOT v 6.00 is out, we will have to use it! - Andrei kindly agreed to implement a few changes to TGeo, which will make - life much easier and the implementation cleaner and less cumbersome. - - - -------- -| v00-01 | - -------- - - - first beta release... - - -2013/20/03 Markus Frank --------------------------- - 1) Finished the compact->lcdd converter - Extract lcdd information - $ > geoConverter -compact2lcdd -input file:<compact-input-xml-file> -output <detector>.lcdd - $ > <SimDist>/scripts/slic.sh -o output.slcio -g SiD.lcdd -m <geant4-macro>.mac -r 100 - - - 2) Finished the compact->gdml converter - Full GDML cycle can be tested (deplace <detector> with some meaningful identifier): - a) Extract gdml information - $ > geoConverter -compact2gdml -input file:<compact-input-xml-file> -output <detector>.gdml - b) Extract visualisation hints to csv file - $ > geoConverter -compact2vis -input file:<compact-input-xml-file> -output <detector>.vis.csv -ascii - c) Load GDML into ROOT: - $ > root.exe ../doc/gdml_root.C+\(\"<detector>\"\) - The macro expects *at least* the <detector>.gdml file. If no visualisation - information is found, the resulting graphics however is not very nice! - - -2013/22/02 Markus Frank --------------------------- - 1) Today a decision was taken to remove all _X() and _A() macros - accessing static unicode strings. A common macro will be used to - address both XML elements and XML attributes using the macro _U(...). - The original usage only created confusion. - All _X and _A macros were replaced by _U. - - 2) Improve the executables running the plugin mechanism in UtitlityApps. - They now complain if the plugin was not found. - - -2013/21/02 Markus Frank --------------------------- - Require strict checks for the existence of xml attributes. - e.g. default=false for Element::attr<bool>() is no longer an option. - if the attribute is not present in the element, an exception - is thrown. - - Slightly change the factory method for creating detector elements. - Use a more generic pattern do support also more generic XML - processing. - -2013/20/02 Markus Frank --------------------------- - Install rootmap mechanism for the usage of plugins. - It is no longer necessary to have separate programs - for the various detector models (ILD/SiD). - One generic display program servest them all. - ==> Creation of package DDExamples/UtilityApps - example: $> bin/displayGeo -compact <compact-xml-file> - - This move has another consequence: - All libraries are build into a common install area: - the <build directory>/lib. - All executable binaries are build into a common install area: - the <build directory>/bin. - - The LD_LIBRARY_PATH and PATH variables as defined in - 'thisdd4hep.(c)sh' do include these directories - -2013/20/02 Markus Frank --------------------------- - DD4hep release notes. Better start them late than never. - If you perform significant changes to the DD4hep core, - plase leave a small notice here.