From 66866f8ceabc4327d2308736945364041245298d Mon Sep 17 00:00:00 2001 From: Markus Frank <Markus.Frank@cern.ch> Date: Mon, 21 Aug 2017 12:07:41 +0200 Subject: [PATCH] Improve doxygen information --- DDAlign/include/DDAlign/AlignmentsCalib.h | 8 + DDAlign/src/AlignmentsCalib.cpp | 1 + DDAlign/src/GlobalDetectorAlignment.cpp | 6 + DDCond/include/DDCond/ConditionsDataLoader.h | 3 + .../include/DDCond/ConditionsManagerObject.h | 4 +- DDCond/include/DDCond/ConditionsRepository.h | 3 + .../DDCond/ConditionsRootPersistency.h | 8 + DDCond/include/DDCond/ConditionsSelectors.h | 76 ++++- .../include/DDCond/ConditionsTextRepository.h | 9 +- .../DDCond/ConditionsTreePersistency.h | 142 ++++++++ DDCond/include/DDCond/Type1/Manager_Type1.h | 4 +- DDCond/src/ConditionsDictionary.h | 2 + DDCond/src/ConditionsRootPersistency.cpp | 3 + DDCond/src/ConditionsTreePersistency.cpp | 317 ++++++++++++++++++ DDCond/src/Type1/Manager_Type1.cpp | 3 +- DDCond/src/plugins/ConditionsMultiLoader.cpp | 5 +- DDCore/include/DD4hep/DD4hepRootPersistency.h | 12 +- DDCore/include/DD4hep/Primitives.h | 6 + DDG4/include/DDG4/Geant4HitCollection.h | 5 + DDG4/include/DDG4/Geant4Hits.h | 3 +- DDG4/plugins/Geant4EventReaderHepMC.cpp | 25 +- DDG4/plugins/Geant4EventSeed.cpp | 4 +- .../DDG4 => plugins}/Geant4EventSeed.h | 2 + DDG4/plugins/Geant4ExtraParticles.h | 6 + DDG4/src/Geant4Exec.cpp | 41 ++- doc/LaTex/DDCond-ConditionsAccess.png | Bin 72616 -> 65781 bytes doc/LaTex/DDConditionsManual.tex | 221 +++++++++--- doc/doxygen/Geant4Classes.h | 4 + doc/doxygen/TiXMLClasses.h | 20 ++ .../src/ConditionExample_manual.cpp | 146 ++++++++ 30 files changed, 1009 insertions(+), 80 deletions(-) create mode 100644 DDCond/include/DDCond/ConditionsTreePersistency.h create mode 100644 DDCond/src/ConditionsTreePersistency.cpp rename DDG4/{include/DDG4 => plugins}/Geant4EventSeed.h (98%) create mode 100644 examples/Conditions/src/ConditionExample_manual.cpp diff --git a/DDAlign/include/DDAlign/AlignmentsCalib.h b/DDAlign/include/DDAlign/AlignmentsCalib.h index fac731056..7e9259194 100644 --- a/DDAlign/include/DDAlign/AlignmentsCalib.h +++ b/DDAlign/include/DDAlign/AlignmentsCalib.h @@ -40,6 +40,14 @@ namespace dd4hep { */ class AlignmentsCalib { public: + /// Helper class to store information about alignment calibration items + /** Implementation details: Alignment context entry + * + * \author M.Frank + * \version 1.0 + * \date 31/01/2017 + * \ingroup DD4HEP_DDALIGN + */ class Entry; /// Shortcut definitions typedef std::map<Condition::key_type,Entry*> UsedConditions; diff --git a/DDAlign/src/AlignmentsCalib.cpp b/DDAlign/src/AlignmentsCalib.cpp index 0b5e69562..5b809d470 100644 --- a/DDAlign/src/AlignmentsCalib.cpp +++ b/DDAlign/src/AlignmentsCalib.cpp @@ -24,6 +24,7 @@ using namespace dd4hep; using namespace dd4hep::align; typedef Condition::key_type key_type; +/// Helper class to store information about alignment calibration items /** Implementation details: Alignment context entry * * \author M.Frank diff --git a/DDAlign/src/GlobalDetectorAlignment.cpp b/DDAlign/src/GlobalDetectorAlignment.cpp index 793928cf5..5d5316ae3 100644 --- a/DDAlign/src/GlobalDetectorAlignment.cpp +++ b/DDAlign/src/GlobalDetectorAlignment.cpp @@ -35,6 +35,12 @@ namespace dd4hep { /// Namespace for the alignment part of the AIDA detector description toolkit namespace align { + /// Global alignment data container + /** + * \author M.Frank + * \version 1.0 + * \ingroup DD4HEP_DDALIGN + */ class GlobalAlignmentData : public NamedObject { public: GlobalAlignment global; diff --git a/DDCond/include/DDCond/ConditionsDataLoader.h b/DDCond/include/DDCond/ConditionsDataLoader.h index 506a9aa4f..16f08716e 100644 --- a/DDCond/include/DDCond/ConditionsDataLoader.h +++ b/DDCond/include/DDCond/ConditionsDataLoader.h @@ -74,6 +74,7 @@ namespace dd4hep { virtual ~ConditionsDataLoader(); /// Add data source definition to loader void addSource(const std::string& source, const IOV& iov); +#if 0 /// Load a condition set given the conditions key according to their validity virtual size_t load_single(key_type key, const IOV& req_validity, @@ -82,6 +83,8 @@ namespace dd4hep { virtual size_t load_range( key_type key, const IOV& req_validity, RangeConditions& conditions) = 0; +#endif + /// Load a number of conditions items from the persistent medium according to the required IOV virtual size_t load_many( const IOV& req_validity, RequiredItems& work, LoadedItems& loaded, diff --git a/DDCond/include/DDCond/ConditionsManagerObject.h b/DDCond/include/DDCond/ConditionsManagerObject.h index 33f3e7bd5..3f0655ea0 100644 --- a/DDCond/include/DDCond/ConditionsManagerObject.h +++ b/DDCond/include/DDCond/ConditionsManagerObject.h @@ -142,13 +142,13 @@ namespace dd4hep { /// Access conditions multi IOV pool by iov type virtual ConditionsIOVPool* iovPool(const IOVType& type) const = 0; - +#if 0 /// Retrieve a condition set given a Detector Element and the conditions name according to their validity virtual Condition get(key_type key, const IOV& req_validity) = 0; /// Retrieve a condition given a Detector Element and the conditions name virtual RangeConditions getRange(key_type key, const IOV& req_validity) = 0; - +#endif /// Push all pending updates to the conditions store. /** Note: * This does not yet make the new conditions availible to the clients diff --git a/DDCond/include/DDCond/ConditionsRepository.h b/DDCond/include/DDCond/ConditionsRepository.h index d6dc4972b..a4d803a00 100644 --- a/DDCond/include/DDCond/ConditionsRepository.h +++ b/DDCond/include/DDCond/ConditionsRepository.h @@ -37,6 +37,7 @@ namespace dd4hep { */ class ConditionsRepository { public: + /// Definition of a single Entry in the conditions repository /** * \author M.Frank * \version 1.0 @@ -50,6 +51,8 @@ namespace dd4hep { Entry(const Entry& e) = default; Entry& operator=(const Entry& e) = default; }; + + /// Definition of the entry collection typedef std::vector<Entry> Data; public: diff --git a/DDCond/include/DDCond/ConditionsRootPersistency.h b/DDCond/include/DDCond/ConditionsRootPersistency.h index ac0cee4ef..15a5df11d 100644 --- a/DDCond/include/DDCond/ConditionsRootPersistency.h +++ b/DDCond/include/DDCond/ConditionsRootPersistency.h @@ -38,6 +38,13 @@ namespace dd4hep { /// Helper to save conditions pools to ROOT /** + * This is a rathr simplistic persistency mechanism for conditions. + * It is not suited to actually store and retrieve individual conditions + * by key. Though it is rather efficient to store and retrive + * entire conditions snapshots of the conditions store implemented by DDCond. + * It e.g. allows to fast load the conditions store for HLT applications, + * of which we know it takes ages to populate it from a database. + * * \author M.Frank * \version 1.0 */ @@ -47,6 +54,7 @@ namespace dd4hep { typedef std::pair<std::string, pool_type> named_pool_type; typedef std::pair<std::string,std::pair<std::pair<std::string,int>,IOV::Key> > iov_key_type; typedef std::list<std::pair<iov_key_type, pool_type> > persistent_type; + persistent_type conditionPools; persistent_type userPools; persistent_type iovPools; diff --git a/DDCond/include/DDCond/ConditionsSelectors.h b/DDCond/include/DDCond/ConditionsSelectors.h index e909de6fd..b3a26f26c 100644 --- a/DDCond/include/DDCond/ConditionsSelectors.h +++ b/DDCond/include/DDCond/ConditionsSelectors.h @@ -25,6 +25,13 @@ namespace dd4hep { /// Namespace for condition operators to avoid clashes namespace Operators { + + /// Definition of the selector object base class to cover type definitions + /** + * \author M.Frank + * \version 1.0 + * \ingroup DD4HEP_CONDITIONS + */ class Cond__Oper { public: typedef Condition cond_t; @@ -33,6 +40,12 @@ namespace dd4hep { typedef std::pair<const Condition::key_type,object_t*> ptr_mapentry_t; }; + /// Sequential container select operator for conditions mappings + /** + * \author M.Frank + * \version 1.0 + * \ingroup DD4HEP_CONDITIONS + */ template <typename T> struct SequenceSelect : public Cond__Oper { T& mapping; SequenceSelect(T& o) : mapping(o) { } @@ -40,7 +53,13 @@ namespace dd4hep { { mapping.insert(mapping.end(), o); return true; } }; - template <typename T> struct MapSelect : public Cond__Oper { + /// Mapped container selection operator for conditions mappings + /** + * \author M.Frank + * \version 1.0 + * \ingroup DD4HEP_CONDITIONS + */ + template <typename T> struct MapSelect : public Cond__Oper { T& mapping; MapSelect(T& o) : mapping(o) { } bool operator()(Condition::Object* o) const @@ -51,6 +70,7 @@ namespace dd4hep { /** * \author M.Frank * \version 1.0 + * \ingroup DD4HEP_CONDITIONS */ template <typename T> struct MapConditionsSelect : public ConditionsSelect { T& mapping; @@ -64,6 +84,7 @@ namespace dd4hep { /** * \author M.Frank * \version 1.0 + * \ingroup DD4HEP_CONDITIONS */ template <typename T> struct PoolSelect : public Cond__Oper { T& pool; @@ -71,10 +92,11 @@ namespace dd4hep { bool operator()(Condition::Object* o) const { return pool.insert(o); } }; - /// Helper to remove objects from a conditions pool + /// Helper to remove objects from a conditions pool. The removed condition is deleted. /** * \author M.Frank * \version 1.0 + * \ingroup DD4HEP_CONDITIONS */ template <typename T> struct PoolRemove : public Cond__Oper { T& pool; @@ -82,6 +104,12 @@ namespace dd4hep { bool operator()(object_t* o) const { pool.onRemove(o); delete(o); return true; } }; + /// Container select operator for conditions mappings with conditions flagged active + /** + * \author M.Frank + * \version 1.0 + * \ingroup DD4HEP_CONDITIONS + */ template <typename T> struct ActiveSelect : public Cond__Oper { public: T& collection; @@ -99,6 +127,7 @@ namespace dd4hep { /** * \author M.Frank * \version 1.0 + * \ingroup DD4HEP_CONDITIONS */ template<typename collection_type> class KeyedSelect : public Cond__Oper { cond_t::key_type key; @@ -118,6 +147,7 @@ namespace dd4hep { /** * \author M.Frank * \version 1.0 + * \ingroup DD4HEP_CONDITIONS */ class KeyFind : public Cond__Oper { cond_t::key_type hash; @@ -130,6 +160,7 @@ namespace dd4hep { /** * \author M.Frank * \version 1.0 + * \ingroup DD4HEP_CONDITIONS */ template <typename OPER> class OperatorWrapper : public Cond__Oper { public: @@ -143,9 +174,13 @@ namespace dd4hep { bool operator()(const mapentry_t& o) const { return oper(o.second.ptr()); } bool operator()(const ptr_mapentry_t& o) const { return oper(o.second); } }; - template <typename oper_type> OperatorWrapper<oper_type> operatorWrapper(oper_type& oper) { - return OperatorWrapper<oper_type>(oper); - } + + /// Arbitrary wrapper for user defined conditions operators + /** + * \author M.Frank + * \version 1.0 + * \ingroup DD4HEP_CONDITIONS + */ template <typename OPER> class ConditionsOperation : public Cond__Oper { public: typedef OPER operator_t; @@ -159,43 +194,48 @@ namespace dd4hep { bool operator()(const ptr_mapentry_t& o) const { return oper(o.second); } }; - /// Helper to insert objects into a conditions pool + /// Helper function to create a OperatorWrapper<T> object from the argument type /** * \author M.Frank * \version 1.0 + * \ingroup DD4HEP_CONDITIONS */ - //class ConditionsPoolSelect : public ConditionsOperation<ConditionsPoolSelect> { - //public: ConditionsPoolSelect(ConditionsPool& p) : wrapper_t(operator_t(p)) {} - //}; + template <typename oper_type> OperatorWrapper<oper_type> operatorWrapper(oper_type& oper) { + return OperatorWrapper<oper_type>(oper); + } - /// Helper to remove objects from a conditions pool + /// Helper to create functor to remove objects from a conditions pool /** * \author M.Frank * \version 1.0 + * \ingroup DD4HEP_CONDITIONS */ template <typename P> inline ConditionsOperation<PoolRemove<P> > poolRemove(P& pool) { return ConditionsOperation<PoolRemove<P> >(PoolRemove<P>(pool)); } - /// Helper to insert objects into a conditions pool + /// Helper to create functor to insert objects into a conditions pool /** * \author M.Frank * \version 1.0 + * \ingroup DD4HEP_CONDITIONS */ template <typename P> inline ConditionsOperation<PoolSelect<P> > poolSelect(P& pool) { return ConditionsOperation<PoolSelect<P> >(PoolSelect<P>(pool)); } - /// Helper to collect conditions using a ConditionsSelect base class + /// Helper to create functor to collect conditions using a ConditionsSelect base class /** * \author M.Frank * \version 1.0 + * \ingroup DD4HEP_CONDITIONS */ template <typename T> inline MapConditionsSelect<T> mapConditionsSelect(T& collection) { return MapConditionsSelect<T>(collection); } - /// Helper to select objects from a conditions pool into a sequential container + /// Helper to create functor to select objects from a conditions pool into a sequential container /** * \author M.Frank * \version 1.0 + * \ingroup DD4HEP_CONDITIONS */ template <typename C> inline ConditionsOperation<SequenceSelect<C> > sequenceSelect(C& coll) { @@ -203,10 +243,11 @@ namespace dd4hep { return ConditionsOperation<operator_t>(operator_t(coll)); } - /// Helper to select objects from a conditions pool into a mapped container + /// Helper to create functor to select objects from a conditions pool into a mapped container /** * \author M.Frank * \version 1.0 + * \ingroup DD4HEP_CONDITIONS */ template <typename C> inline ConditionsOperation<SequenceSelect<C> > mapSelect(C& coll) { @@ -218,23 +259,26 @@ namespace dd4hep { /** * \author M.Frank * \version 1.0 + * \ingroup DD4HEP_CONDITIONS */ template <typename C> inline ConditionsOperation<ActiveSelect<C> > activeSelect(C& coll) { return ConditionsOperation<ActiveSelect<C> >(ActiveSelect<C>(coll)); } - /// Helper to select keyed objects from a conditions pool + /// Helper to create functor to select keyed objects from a conditions pool /** * \author M.Frank * \version 1.0 + * \ingroup DD4HEP_CONDITIONS */ template <typename C> inline ConditionsOperation<KeyedSelect<C> > keyedSelect(Condition::key_type key, C& coll) { return ConditionsOperation<KeyedSelect<C> >(KeyedSelect<C>(key, coll)); } - /// Helper to find conditions objects by hash key + /// Helper to create functor to find conditions objects by hash key /** * \author M.Frank * \version 1.0 + * \ingroup DD4HEP_CONDITIONS */ ConditionsOperation<KeyFind> inline keyFind(Condition::key_type key) { return ConditionsOperation<KeyFind>(KeyFind(key)); } diff --git a/DDCond/include/DDCond/ConditionsTextRepository.h b/DDCond/include/DDCond/ConditionsTextRepository.h index 3bb0ff538..d73edba37 100644 --- a/DDCond/include/DDCond/ConditionsTextRepository.h +++ b/DDCond/include/DDCond/ConditionsTextRepository.h @@ -33,13 +33,18 @@ namespace dd4hep { /// Base class to be implemented by objects to listen on condition callbacks /** - * * \author M.Frank * \version 1.0 * \ingroup DD4HEP_CONDITIONS */ class ConditionsTextRepository { public: + /// Definition of a single Entry in the conditions repository + /** + * \author M.Frank + * \version 1.0 + * \ingroup DD4HEP_CONDITIONS + */ class Entry { public: std::string name, address; @@ -49,6 +54,8 @@ namespace dd4hep { ~Entry() = default; Entry& operator=(const Entry& copy) = default; }; + + /// Definition of the entry collection typedef std::vector<Entry> Data; public: diff --git a/DDCond/include/DDCond/ConditionsTreePersistency.h b/DDCond/include/DDCond/ConditionsTreePersistency.h new file mode 100644 index 000000000..039050c73 --- /dev/null +++ b/DDCond/include/DDCond/ConditionsTreePersistency.h @@ -0,0 +1,142 @@ +//========================================================================== +// AIDA Detector description implementation +//-------------------------------------------------------------------------- +// Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN) +// All rights reserved. +// +// For the licensing terms see $DD4hepINSTALL/LICENSE. +// For the list of contributors see $DD4hepINSTALL/doc/CREDITS. +// +// Author : M.Frank +// +//========================================================================== +#ifndef DD4HEP_CONDITIONS_CONDITIONSTREEPERSISTENCY_H +#define DD4HEP_CONDITIONS_CONDITIONSTREEPERSISTENCY_H + +// Framework/ROOT include files +#include "DDCond/ConditionsPool.h" + +#include "TNamed.h" +class TFile; + +// C/C++ include files +#include <map> +#include <list> +#include <vector> +#include <memory> + + +/// Namespace for the AIDA detector description toolkit +namespace dd4hep { + + /// Namespace for implementation details of the AIDA detector description toolkit + namespace cond { + + /// Forward declarations + class ConditionsSlice; + class ConditionsIOVPool; + + /// Helper to save conditions pools to ROOT + /** + * This is a rathr simplistic persistency mechanism for conditions. + * It is not suited to actually store and retrieve individual conditions + * by key. Though it is rather efficient to store and retrive + * entire conditions snapshots of the conditions store implemented by DDCond. + * It e.g. allows to fast load the conditions store for HLT applications, + * of which we know it takes ages to populate it from a database. + * + * \author M.Frank + * \version 1.0 + */ + class ConditionsTreePersistency : public TNamed { + public: + typedef std::vector<Condition> pool_type; + typedef std::pair<std::string, pool_type> named_pool_type; + typedef std::pair<std::string,std::pair<std::pair<std::string,int>,IOV::Key> > iov_key_type; + typedef std::list<std::pair<iov_key_type, pool_type> > persistent_type; + + persistent_type conditionPools; + persistent_type userPools; + persistent_type iovPools; + float duration; + enum ImportStrategy { + IMPORT_ALL = 1<<0, + IMPORT_EXACT = 1<<1, + IMPORT_CONTAINED = 1<<2, + IMPORT_CONTAINED_LOWER = 1<<3, + IMPORT_CONTAINED_UPPER = 1<<4, + IMPORT_EDGE_LOWER = 1<<5, + IMPORT_EDGE_UPPER = 1<<6, + LAST + }; + /// Load ConditionsIOVPool and populate conditions manager + size_t _import(ImportStrategy strategy, + persistent_type& pers, + const std::string& id, + const std::string& iov_type, + const IOV::Key& iov_key, + ConditionsManager mgr); + + /// Clear object content and release allocated memory + void _clear(persistent_type& pool); + + public: + /// No copy constructor + ConditionsTreePersistency(const ConditionsTreePersistency& copy) = delete; + /// Initializing constructor + ConditionsTreePersistency(const std::string& name, const std::string& title="DD4hep conditions container"); + /// Default constructor + ConditionsTreePersistency(); + /// Default destructor + virtual ~ConditionsTreePersistency(); + /// No assignment + ConditionsTreePersistency& operator=(const ConditionsTreePersistency& copy) = delete; + + /// Clear object content and release allocated memory + void clear(); + /// Open ROOT file in read mode + static TFile* openFile(const std::string& fname); + + /// Add conditions content to be saved. Note, that dependent conditions shall not be saved! + size_t add(const std::string& identifier, const IOV& iov, std::vector<Condition>& conditions); + /// Add conditions content to be saved. Note, that dependent conditions shall not be saved! + size_t add(const std::string& identifier, ConditionsPool& pool); + /// Add conditions content to be saved. Note, that dependent conditions shall not be saved! + size_t add(const std::string& identifier, const UserPool& pool); + /// Add conditions content to be saved. Note, that dependent conditions shall not be saved! + size_t add(const std::string& identifier, const ConditionsIOVPool& pool); + + /// Load conditions content from file. + static std::unique_ptr<ConditionsTreePersistency> load(TFile* file,const std::string& object); + + /// Load conditions content from file. + static std::unique_ptr<ConditionsTreePersistency> load(const std::string& file,const std::string& object) { + return load(openFile(file), object); + } + + /// Load conditions IOV pool and populate conditions manager + size_t importIOVPool(const std::string& id, const std::string& iov_type, ConditionsManager mgr); + /// Load conditions user pool and populate conditions manager + size_t importUserPool(const std::string& id, const std::string& iov_type, ConditionsManager mgr); + /// Load conditions pool and populate conditions manager + size_t importConditionsPool(const std::string& id, const std::string& iov_type, ConditionsManager mgr); + + /// Load conditions pool and populate conditions manager. Allow tro be selective also for the key + size_t importConditionsPool(ImportStrategy strategy, + const std::string& id, + const std::string& iov_type, + const IOV::Key& key, + ConditionsManager mgr); + + /// Save the data content to a root file + int save(TFile* file); + /// Save the data content to a root file + int save(const std::string& file_name); + + /// ROOT object ClassDef + ClassDef(ConditionsTreePersistency,1); + }; + + } /* End namespace cond */ +} /* End namespace dd4hep */ +#endif /* DD4HEP_CONDITIONS_CONDITIONSTREEPERSISTENCY_H */ diff --git a/DDCond/include/DDCond/Type1/Manager_Type1.h b/DDCond/include/DDCond/Type1/Manager_Type1.h index 695a7bb64..d45bab2bc 100644 --- a/DDCond/include/DDCond/Type1/Manager_Type1.h +++ b/DDCond/include/DDCond/Type1/Manager_Type1.h @@ -150,13 +150,13 @@ namespace dd4hep { * This does not yet make the new conditions availible to the clients */ virtual void pushUpdates() final; - +#if 0 /// Retrieve a condition set given a Detector Element and the conditions name according to their validity (deprecated) virtual Condition get(key_type key, const IOV& req_validity) final; /// Retrieve a condition given a Detector Element and the conditions name (deprecated) virtual RangeConditions getRange(key_type key, const IOV& req_validity) final; - +#endif /// Create empty user pool object virtual std::unique_ptr<UserPool> createUserPool(const IOVType* iovT) const; diff --git a/DDCond/src/ConditionsDictionary.h b/DDCond/src/ConditionsDictionary.h index bbd000c2e..404f817cf 100644 --- a/DDCond/src/ConditionsDictionary.h +++ b/DDCond/src/ConditionsDictionary.h @@ -21,6 +21,7 @@ #include "DDCond/ConditionsManager.h" #include "DDCond/ConditionsManagerObject.h" #include "DDCond/ConditionsRootPersistency.h" +#include "DDCond/ConditionsTreePersistency.h" // ------------------------------------------------------------------------- // Regular dd4hep dictionaries @@ -63,6 +64,7 @@ using namespace dd4hep; //#pragma link C++ class std::list<cond::ConditionsRootPersistency::IOVPool>+; #pragma link C++ class cond::ConditionsRootPersistency+; +#pragma link C++ class cond::ConditionsTreePersistency+; #endif diff --git a/DDCond/src/ConditionsRootPersistency.cpp b/DDCond/src/ConditionsRootPersistency.cpp index 4ac7bd383..f3b485877 100644 --- a/DDCond/src/ConditionsRootPersistency.cpp +++ b/DDCond/src/ConditionsRootPersistency.cpp @@ -21,6 +21,7 @@ #include "TTimeStamp.h" typedef dd4hep::cond::ConditionsRootPersistency __ConditionsRootPersistency; +/// ROOT Class implementation directive ClassImp(__ConditionsRootPersistency) @@ -28,7 +29,9 @@ using namespace std; using namespace dd4hep; using namespace dd4hep::cond; +// Local namespace for anonymous stuff namespace { + /// Helper to select conditions /* * \author M.Frank diff --git a/DDCond/src/ConditionsTreePersistency.cpp b/DDCond/src/ConditionsTreePersistency.cpp new file mode 100644 index 000000000..23868711a --- /dev/null +++ b/DDCond/src/ConditionsTreePersistency.cpp @@ -0,0 +1,317 @@ +//========================================================================== +// AIDA Detector description implementation +//-------------------------------------------------------------------------- +// Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN) +// All rights reserved. +// +// For the licensing terms see $DD4hepINSTALL/LICENSE. +// For the list of contributors see $DD4hepINSTALL/doc/CREDITS. +// +// Author : M.Frank +// +//========================================================================== + +// Framework include files +#include "DD4hep/Printout.h" +#include "DDCond/ConditionsSlice.h" +#include "DDCond/ConditionsIOVPool.h" +#include "DDCond/ConditionsTreePersistency.h" + +#include "TFile.h" +#include "TTimeStamp.h" + +typedef dd4hep::cond::ConditionsTreePersistency __ConditionsTreePersistency; +/// ROOT Class implementation directive +ClassImp(__ConditionsTreePersistency) + + +using namespace std; +using namespace dd4hep; +using namespace dd4hep::cond; + +// Local namespace for anonymous stuff +namespace { + + /// Helper to select conditions + /* + * \author M.Frank + * \version 1.0 + * \ingroup DD4HEP_CONDITIONS + */ + struct Scanner : public Condition::Processor { + ConditionsTreePersistency::pool_type& pool; + /// Constructor + Scanner(ConditionsTreePersistency::pool_type& p) : pool(p) {} + /// Conditions callback for object processing + virtual int process(Condition c) const override { + pool.push_back(c.ptr()); + return 1; + } + }; + struct DurationStamp { + TTimeStamp start; + ConditionsTreePersistency* object = 0; + DurationStamp(ConditionsTreePersistency* obj) : object(obj) { + } + ~DurationStamp() { + TTimeStamp stop; + object->duration = stop.AsDouble()-start.AsDouble(); + } + }; +} + +/// Default constructor +ConditionsTreePersistency::ConditionsTreePersistency() : TNamed() { +} + +/// Initializing constructor +ConditionsTreePersistency::ConditionsTreePersistency(const string& name, const string& title) + : TNamed(name.c_str(), title.c_str()) +{ +} + +/// Default destructor +ConditionsTreePersistency::~ConditionsTreePersistency() { + clear(); +} + +/// Add conditions content to be saved. Note, that dependent conditions shall not be saved! +size_t ConditionsTreePersistency::add(const std::string& identifier, + const IOV& iov, + std::vector<Condition>& conditions) { + DurationStamp stamp(this); + conditionPools.push_back(pair<iov_key_type, pool_type>()); + pool_type& ent = conditionPools.back().second; + iov_key_type& key = conditionPools.back().first; + key.first = identifier; + key.second.first = make_pair(iov.iovType->name,iov.type); + key.second.second = iov.key(); + ent = conditions; + for(auto c : ent) c.ptr()->addRef(); + return ent.size(); +} + +/// Add conditions content to the saved. Note, that dependent conditions shall not be saved! +size_t ConditionsTreePersistency::add(const string& identifier, ConditionsPool& pool) { + DurationStamp stamp(this); + conditionPools.push_back(pair<iov_key_type, pool_type>()); + pool_type& ent = conditionPools.back().second; + iov_key_type& key = conditionPools.back().first; + const IOV* iov = pool.iov; + key.first = identifier; + key.second.first = make_pair(iov->iovType->name,iov->type); + key.second.second = iov->key(); + pool.select_all(ent); + for(auto c : ent) c.ptr()->addRef(); + return ent.size(); +} + +/// Add conditions content to the saved. Note, that dependent conditions shall not be saved! +size_t ConditionsTreePersistency::add(const string& identifier, const ConditionsIOVPool& pool) { + size_t count = 0; + DurationStamp stamp(this); + for( const auto& p : pool.elements ) { + iovPools.push_back(pair<iov_key_type, pool_type>()); + pool_type& ent = iovPools.back().second; + iov_key_type& key = iovPools.back().first; + const IOV* iov = p.second->iov; + key.first = identifier; + key.second.first = make_pair(iov->iovType->name,iov->type); + key.second.second = p.first; + p.second->select_all(ent); + for(auto c : ent) c.ptr()->addRef(); + count += ent.size(); + } + return count; +} + +/// Add conditions content to the saved. Note, that dependent conditions shall not be saved! +size_t ConditionsTreePersistency::add(const string& identifier, const UserPool& pool) { + DurationStamp stamp(this); + userPools.push_back(pair<iov_key_type, pool_type>()); + pool_type& ent = userPools.back().second; + iov_key_type& key = userPools.back().first; + const IOV& iov = pool.validity(); + key.first = identifier; + key.second.first = make_pair(iov.iovType->name,iov.type); + key.second.second = iov.key(); + pool.scan(Scanner(ent)); + for(auto c : ent) c.ptr()->addRef(); + return ent.size(); +} + +/// Open ROOT file in read mode +TFile* ConditionsTreePersistency::openFile(const string& fname) { + TDirectory::TContext context; + TFile* file = TFile::Open(fname.c_str()); + if ( file && !file->IsZombie()) return file; + except("ConditionsTreePersistency","+++ FAILED to open ROOT file %s in read-mode.",fname.c_str()); + return 0; +} + +/// Clear object content and release allocated memory +void ConditionsTreePersistency::_clear(persistent_type& pool) { + /// Cleanup all the stuff not useful.... + for (auto& p : pool ) { + for(Condition c : p.second ) + c.ptr()->release(); + p.second.clear(); + } + pool.clear(); +} + +/// Clear object content and release allocated memory +void ConditionsTreePersistency::clear() { + /// Cleanup all the stuff not useful.... + _clear(conditionPools); + _clear(userPools); + _clear(iovPools); +} + +/// Add conditions content to the saved. Note, that dependent conditions shall not be saved! +std::unique_ptr<ConditionsTreePersistency> +ConditionsTreePersistency::load(TFile* file,const string& obj) { + std::unique_ptr<ConditionsTreePersistency> p; + if ( file && !file->IsZombie()) { + TTimeStamp start; + p.reset((ConditionsTreePersistency*)file->Get(obj.c_str())); + TTimeStamp stop; + if ( p.get() ) { + p->duration = stop.AsDouble()-start.AsDouble(); + return p; + } + except("ConditionsTreePersistency", + "+++ FAILED to load object %s from file %s", + obj.c_str(), file->GetName()); + } + except("ConditionsTreePersistency", + "+++ FAILED to load object %s from file [Invalid file]",obj.c_str()); + return p; +} + +/// Load ConditionsPool(s) and populate conditions manager +size_t ConditionsTreePersistency::_import(ImportStrategy strategy, + persistent_type& persistent_pools, + const std::string& id, + const std::string& iov_type, + const IOV::Key& iov_key, + ConditionsManager mgr) { + size_t count = 0; + std::pair<bool,const IOVType*> iovTyp(false,0); + for (auto& iovp : persistent_pools ) { + bool use = false; + const iov_key_type& key = iovp.first; + if ( !(id.empty() || id=="*" || key.first == id) ) + continue; + if ( !(iov_type.empty() || iov_type == "*" || key.second.first.first == iov_type) ) + continue; + switch(strategy) { + case IMPORT_ALL: + use = true; + break; + case IMPORT_EXACT: + use = key.second.second == iov_key; + break; + case IMPORT_CONTAINED: + use = IOV::key_is_contained(key.second.second,iov_key); + break; + case IMPORT_EDGE_LOWER: + use = IOV::key_overlaps_lower_end(key.second.second,iov_key); + break; + case IMPORT_EDGE_UPPER: + use = IOV::key_overlaps_higher_end(key.second.second,iov_key); + break; + case IMPORT_CONTAINED_LOWER: + use = IOV::key_is_contained(key.second.second,iov_key) || + IOV::key_overlaps_lower_end(key.second.second,iov_key); + break; + case IMPORT_CONTAINED_UPPER: + use = IOV::key_is_contained(key.second.second,iov_key) || + IOV::key_overlaps_higher_end(key.second.second,iov_key); + break; + default: + use = false; + break; + } + if ( !use ) + continue; + + iovTyp = mgr.registerIOVType(key.second.first.second,key.second.first.first); + if ( iovTyp.second ) { + ConditionsPool* pool = mgr.registerIOV(*iovTyp.second, key.second.second); + for (Condition c : iovp.second) { + Condition::Object* o = c.ptr(); + o->iov = pool->iov; + if ( pool->insert(o->addRef()) ) { + //printout(WARNING,"ConditionsTreePersistency","%p: [%016llX] %s -> %s", + // o, o->hash,o->GetName(),o->data.str().c_str()); + ++count; + } + else { + printout(WARNING,"ConditionsTreePersistency", + "+++ Ignore condition %s from %s iov:%s [Already present]", + c.name(),id.c_str(), iov_type.c_str()); + } + } + } + } + return count; +} + +/// Load ConditionsIOVPool and populate conditions manager +size_t ConditionsTreePersistency::importIOVPool(const std::string& identifier, + const std::string& iov_type, + ConditionsManager mgr) +{ + DurationStamp stamp(this); + return _import(IMPORT_ALL,iovPools,identifier,iov_type,IOV::Key(),mgr); +} + +/// Load ConditionsIOVPool and populate conditions manager +size_t ConditionsTreePersistency::importUserPool(const std::string& identifier, + const std::string& iov_type, + ConditionsManager mgr) +{ + DurationStamp stamp(this); + return _import(IMPORT_ALL,userPools,identifier,iov_type,IOV::Key(),mgr); +} + +/// Load ConditionsIOVPool and populate conditions manager +size_t ConditionsTreePersistency::importConditionsPool(const std::string& identifier, + const std::string& iov_type, + ConditionsManager mgr) +{ + DurationStamp stamp(this); + return _import(IMPORT_ALL,conditionPools,identifier,iov_type,IOV::Key(),mgr); +} + +/// Load conditions pool and populate conditions manager. Allow tro be selective also for the key +size_t ConditionsTreePersistency::importConditionsPool(ImportStrategy strategy, + const std::string& identifier, + const std::string& iov_type, + const IOV::Key& iov_key, + ConditionsManager mgr) { + return _import(strategy,conditionPools,identifier,iov_type,iov_key,mgr); +} + +/// Save the data content to a root file +int ConditionsTreePersistency::save(TFile* file) { + DurationStamp stamp(this); + //TDirectory::TContext context; + int nBytes = file->WriteTObject(this,GetName()); + return nBytes; +} + +/// Save the data content to a root file +int ConditionsTreePersistency::save(const string& fname) { + DurationStamp stamp(this); + //TDirectory::TContext context; + TFile* file = TFile::Open(fname.c_str(),"RECREATE"); + if ( file && !file->IsZombie()) { + int nBytes = save(file); + file->Close(); + delete file; + return nBytes; + } + return -1; +} diff --git a/DDCond/src/Type1/Manager_Type1.cpp b/DDCond/src/Type1/Manager_Type1.cpp index ff252ec7f..5a0a3d287 100644 --- a/DDCond/src/Type1/Manager_Type1.cpp +++ b/DDCond/src/Type1/Manager_Type1.cpp @@ -375,7 +375,7 @@ bool Manager_Type1::select_range(Condition::key_type key, } return is_range_complete(req_validity,conditions); } - +#if 0 /// Retrieve a condition given a Detector Element and the conditions name Condition Manager_Type1::get(Condition::key_type key, const IOV& iov) @@ -437,6 +437,7 @@ Manager_Type1::getRange(Condition::key_type key, const IOV& iov) } return conditions; } +#endif /// Prepare all updates for the given keys to the clients with the defined IOV ConditionsManager::Result diff --git a/DDCond/src/plugins/ConditionsMultiLoader.cpp b/DDCond/src/plugins/ConditionsMultiLoader.cpp index 9df7320c5..d8a2bbd48 100644 --- a/DDCond/src/plugins/ConditionsMultiLoader.cpp +++ b/DDCond/src/plugins/ConditionsMultiLoader.cpp @@ -47,6 +47,7 @@ namespace dd4hep { ConditionsMultiLoader(Detector& description, ConditionsManager mgr, const std::string& nam); /// Default destructor virtual ~ConditionsMultiLoader(); +#if 0 /// Load a condition set given a Detector Element and the conditions name according to their validity virtual size_t load_single(key_type key, const IOV& req_validity, @@ -55,6 +56,7 @@ namespace dd4hep { virtual size_t load_range( key_type key, const IOV& req_validity, RangeConditions& conditions); +#endif /// Optimized update using conditions slice data virtual size_t load_many( const IOV& /* req_validity */, RequiredItems& /* work */, @@ -146,7 +148,7 @@ ConditionsMultiLoader::load_source(const std::string& nam, } return (*iop).second; } - +#if 0 /// Load a condition set given a Detector Element and the conditions name according to their validity size_t ConditionsMultiLoader::load_range(key_type key, const IOV& req_validity, @@ -186,3 +188,4 @@ size_t ConditionsMultiLoader::load_single(key_type key, } return conditions.size() - len; } +#endif diff --git a/DDCore/include/DD4hep/DD4hepRootPersistency.h b/DDCore/include/DD4hep/DD4hepRootPersistency.h index 58c0b6cba..6f4b1a37a 100644 --- a/DDCore/include/DD4hep/DD4hepRootPersistency.h +++ b/DDCore/include/DD4hep/DD4hepRootPersistency.h @@ -17,6 +17,11 @@ #include "DD4hep/DetectorData.h" /// Helper class to support ROOT persistency of Detector objects +/** + * \author M.Frank + * \version 1.0 + * \ingroup DD4HEP_CORE + */ class DD4hepRootPersistency : public TNamed { public: typedef std::map<std::string, dd4hep::Handle<dd4hep::NamedObject> > HandleMap; @@ -81,6 +86,12 @@ public: ClassDef(DD4hepRootPersistency,1); }; +/// Helper class to check various ingredients of the Detector object after loaded from ROOT +/** + * \author M.Frank + * \version 1.0 + * \ingroup DD4HEP_CORE + */ class DD4hepRootCheck { public: /// Reference to the detector model object @@ -125,5 +136,4 @@ public: size_t checkAll() const; }; - #endif /* DD4HEP_DD4HEPROOTPERSISTENCY_H */ diff --git a/DDCore/include/DD4hep/Primitives.h b/DDCore/include/DD4hep/Primitives.h index a368fc46e..078d680bc 100644 --- a/DDCore/include/DD4hep/Primitives.h +++ b/DDCore/include/DD4hep/Primitives.h @@ -276,6 +276,12 @@ namespace dd4hep { }; #endif + /// Operator to clear containers when out of scope + /** + * \author M.Frank + * \version 1.0 + * \ingroup DD4HEP_CORE + */ template<typename C> struct ClearOnReturn { C& container; ClearOnReturn(C& c) : container(c) { } diff --git a/DDG4/include/DDG4/Geant4HitCollection.h b/DDG4/include/DDG4/Geant4HitCollection.h index 31a00fd9d..ccbb19509 100644 --- a/DDG4/include/DDG4/Geant4HitCollection.h +++ b/DDG4/include/DDG4/Geant4HitCollection.h @@ -105,6 +105,7 @@ namespace dd4hep { typedef HitManipulator::Wrapper Wrapper; protected: + /// Wrapper data mutable Wrapper m_data; public: @@ -224,8 +225,11 @@ namespace dd4hep { virtual void* operator()(const Geant4HitWrapper& w) const = 0; }; + /// Union defining the hit collection flags for processing union CollectionFlags { + /// Full value unsigned long value; + /// Individual hit collection bits struct BitItems { unsigned repeatedLookup:1; unsigned mappedLookup:1; @@ -259,6 +263,7 @@ namespace dd4hep { void getData(const ComponentCast& cast, std::vector<void*>* result); public: + /// Enumeration for collection optimization types enum OptimizationFlags { OPTIMIZE_NONE = 0, OPTIMIZE_REPEATEDLOOKUP = 1<<0, diff --git a/DDG4/include/DDG4/Geant4Hits.h b/DDG4/include/DDG4/Geant4Hits.h index ad1772d32..7e53ee0a0 100644 --- a/DDG4/include/DDG4/Geant4Hits.h +++ b/DDG4/include/DDG4/Geant4Hits.h @@ -55,6 +55,7 @@ namespace dd4hep { * @version 1.0 */ template <class HIT> struct HitPositionCompare: public HitCompare<HIT> { + /// Reference to the hit position const Position& pos; /// Constructor HitPositionCompare(const Position& p) : pos(p) {} @@ -143,7 +144,7 @@ namespace dd4hep { double length; /// Monte Carlo / Geant4 information Contribution truth; - + /// Energy deposit of the hit double energyDeposit; public: diff --git a/DDG4/plugins/Geant4EventReaderHepMC.cpp b/DDG4/plugins/Geant4EventReaderHepMC.cpp index 7ee8d7701..47dfbeb5a 100644 --- a/DDG4/plugins/Geant4EventReaderHepMC.cpp +++ b/DDG4/plugins/Geant4EventReaderHepMC.cpp @@ -23,7 +23,12 @@ namespace dd4hep { /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit namespace sim { - namespace HepMC { class EventStream; } + /// HepMC namespace declaration + namespace HepMC { + /// HepMC EventStream class used internally by the Geant4EventReaderHepMC plugin + class EventStream; + } + /// Class to populate Geant4 primaries from StdHep files. /** * Class to populate Geant4 primary particles and vertices from a @@ -89,8 +94,16 @@ namespace dd4hep { /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit namespace sim { + /// HepMC namespace declaration namespace HepMC { + /// HepMC EventHeader class used internally by the Geant4EventReaderHepMC plugin + /* + * \author P.Kostka (main author) + * \author M.Frank (code reshuffeling into new DDG4 scheme) + * \version 1.0 + * \ingroup DD4HEP_SIMULATION + */ class EventHeader { public: int id; @@ -103,6 +116,7 @@ namespace dd4hep { float alpha_qed; vector<float> weights; vector<long> random; + /// Default constructor EventHeader() : id(0), num_vertices(0), bp1(0), bp2(0), signal_process_id(0), signal_process_vertex(0), scale(0.0), alpha_qcd(0.0), alpha_qed(0.0), weights(), random() {} @@ -111,6 +125,13 @@ namespace dd4hep { /// The known_io enum is used to track which type of input is being read enum known_io { gen=1, ascii, extascii, ascii_pdt, extascii_pdt }; + /// HepMC EventStream class used internally by the Geant4EventReaderHepMC plugin + /* + * \author P.Kostka (main author) + * \author M.Frank (code reshuffeling into new DDG4 scheme) + * \version 1.0 + * \ingroup DD4HEP_SIMULATION + */ class EventStream { public: typedef std::map<int,Geant4Vertex*> Vertices; @@ -128,7 +149,7 @@ namespace dd4hep { Vertices m_vertices; Particles m_particles; - + /// Default constructor EventStream(istream& in) : instream(in), mom_unit(0.0), pos_unit(0.0), io_type(0), xsection(0.0), xsection_err(0.0) { use_default_units(); } diff --git a/DDG4/plugins/Geant4EventSeed.cpp b/DDG4/plugins/Geant4EventSeed.cpp index 65960cbdd..3e253136d 100644 --- a/DDG4/plugins/Geant4EventSeed.cpp +++ b/DDG4/plugins/Geant4EventSeed.cpp @@ -11,8 +11,8 @@ // //========================================================================= -//Class include file -#include "DDG4/Geant4EventSeed.h" +// Class include file +#include "Geant4EventSeed.h" // Framework include files #include "DD4hep/InstanceCount.h" diff --git a/DDG4/include/DDG4/Geant4EventSeed.h b/DDG4/plugins/Geant4EventSeed.h similarity index 98% rename from DDG4/include/DDG4/Geant4EventSeed.h rename to DDG4/plugins/Geant4EventSeed.h index 692198969..0114affed 100644 --- a/DDG4/include/DDG4/Geant4EventSeed.h +++ b/DDG4/plugins/Geant4EventSeed.h @@ -22,6 +22,7 @@ namespace dd4hep { /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit namespace sim { + /// Plugin class to set the event seed for each event /** * \addtogroup Geant4RunActions * @{ @@ -34,6 +35,7 @@ namespace dd4hep { * * \author A.Sailer * \version 1.0 + * \ingroup DD4HEP_SIMULATION * @} */ class Geant4EventSeed: public Geant4RunAction { diff --git a/DDG4/plugins/Geant4ExtraParticles.h b/DDG4/plugins/Geant4ExtraParticles.h index ed40998e6..46575e820 100644 --- a/DDG4/plugins/Geant4ExtraParticles.h +++ b/DDG4/plugins/Geant4ExtraParticles.h @@ -21,6 +21,12 @@ namespace dd4hep { /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit namespace sim { + /// Plugin class to read non-standard particle definitions from text file + /** + * \author A.Sailer + * \version 1.0 + * \ingroup DD4HEP_SIMULATION + */ class Geant4ExtraParticles : public Geant4PhysicsConstructor { public: /// Standard constructor with initailization parameters diff --git a/DDG4/src/Geant4Exec.cpp b/DDG4/src/Geant4Exec.cpp index ec8c721e0..27f9cd154 100644 --- a/DDG4/src/Geant4Exec.cpp +++ b/DDG4/src/Geant4Exec.cpp @@ -57,6 +57,11 @@ namespace dd4hep { namespace sim { /// Sequence handler implementing common actions to all sequences. + /** @class SequenceHdl + * + * @author M.Frank + * @version 1.0 + */ template <typename T> class SequenceHdl { public: typedef SequenceHdl<T> Base; @@ -66,42 +71,52 @@ namespace dd4hep { SequenceHdl() : m_sequence(0), m_activeContext(0) { } + /// Initializing constructor SequenceHdl(Geant4Context* ctxt, T* seq) : m_sequence(0), m_activeContext(ctxt) { _aquire(seq); } + /// Default destructor virtual ~SequenceHdl() { _release(); } + /// Aquire object reference void _aquire(T* s) { InstanceCount::increment(this); m_sequence = s; if ( m_sequence ) m_sequence->addRef(); } + /// Release object + void _release() { + detail::releasePtr(m_sequence); + InstanceCount::decrement(this); + } + /// Update Geant4Context for current call void updateContext(Geant4Context* ctxt) { m_activeContext = ctxt; if ( m_sequence ) { m_sequence->updateContext(ctxt); } } - void _release() { - detail::releasePtr(m_sequence); - InstanceCount::decrement(this); - } + /// Access reference to the current active Geant4Context structure Geant4Context* context() const { return m_activeContext; } + /// Access reference to the current active Geant4Kernel structure Geant4Kernel& kernel() const { return context()->kernel(); } + /// G4 callback in multi threaded mode to configure thread fiber void configureFiber(Geant4Context* ctxt) { if ( m_sequence ) { m_sequence->configureFiber(ctxt); } } + /// Create Geant4 run context void createClientContext(const G4Run* run) { Geant4Run* r = new Geant4Run(run); m_activeContext->setRun(r); } + /// Destroy Geant4 run context void destroyClientContext(const G4Run*) { Geant4Run* r = m_activeContext->runPtr(); if ( r ) { @@ -109,10 +124,12 @@ namespace dd4hep { detail::deletePtr(r); } } + /// Create Geant4 event context void createClientContext(const G4Event* evt) { Geant4Event* e = new Geant4Event(evt,Geant4Random::instance()); m_activeContext->setEvent(e); } + /// Destroy Geant4 event context void destroyClientContext(const G4Event*) { Geant4Event* e = m_activeContext->eventPtr(); if ( e ) { @@ -122,6 +139,7 @@ namespace dd4hep { } }; + /// Forward declarations class Geant4UserRunAction; class Geant4UserEventAction; @@ -480,11 +498,24 @@ using namespace dd4hep::sim; #include "G4RunManager.hh" #include "G4PhysListFactory.hh" + +/// Compatibility actions for running Geant4 in single threaded mode +/** @class Geant4Compatibility + * + * @author M.Frank + * @version 1.0 + */ class Geant4Compatibility { public: - Geant4Compatibility() {} + /// Default constructor + Geant4Compatibility() = default; + /// Default destructor + virtual ~Geant4Compatibility() = default; + /// Detector construction invocation in compatibility mode Geant4DetectorConstructionSequence* buildDefaultDetectorConstruction(Geant4Kernel& kernel); }; + +/// Detector construction invocation in compatibility mode Geant4DetectorConstructionSequence* Geant4Compatibility::buildDefaultDetectorConstruction(Geant4Kernel& kernel) { Geant4Action* cr; Geant4DetectorConstruction* det_cr; diff --git a/doc/LaTex/DDCond-ConditionsAccess.png b/doc/LaTex/DDCond-ConditionsAccess.png index 36e4170d9a470233e1b7848349f336a7fa116998..b49966249b514c3a6f23ba1b0647a280c543153a 100644 GIT binary patch literal 65781 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 WVwyYL6#c^qtstu^Q!Zux_5T6O_T1M1 literal 72616 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 P+A*sSGuAECwh#Rqv*89t diff --git a/doc/LaTex/DDConditionsManual.tex b/doc/LaTex/DDConditionsManual.tex index c5d8d6ddc..97129c574 100644 --- a/doc/LaTex/DDConditionsManual.tex +++ b/doc/LaTex/DDConditionsManual.tex @@ -97,7 +97,7 @@ time-dependent and typically called $conditons$. The ability of an experiment to produce correct and timely results depends on the complete and efficient availability of needed conditions for each stage of data handling. This manual should introduce to the \DDC toolkit, which provides -access to conditions data within the \DDH data structures. +access to conditions data within the \DDH data structures~\cite{bib:dd4hep-manual}. \noindent The \DDC extensions to the \DDH toolkit formalize both the access and @@ -113,8 +113,12 @@ For this reason \DDC does not attempt to solve the persistency problem, but rather defines an interface used to load missing data items from the persistent medium. Any persistent data representation, which can fulfill the requirements of this interface may be adopted by the \DDC -conditions caching and access mechanism. For details please see -section~\ref{sec:ddcond-user-interface}. +conditions caching and access mechanism. + +\noindent +At the end of this manual a walk-through of an example is discussed to +illustrate, which steps have to be performed to use the \DDH conditions +store within a client application. %============================================================================= \subsection{Definition of Conditions Data} @@ -122,7 +126,7 @@ section~\ref{sec:ddcond-user-interface}. %============================================================================= \noindent Conditions data are firstly -\begin{itemize} +\begin{itemize}\itemcompact \item raw data values. Raw data values are recorded from measurement devices such as thermometers, pressure devices or @@ -198,7 +202,7 @@ conditions slices as described in section~\ref{subsec:ddcond-conditions-slices}. \noindent A conditions objects serves two purposes: -\begin{itemize} +\begin{itemize}\itemcompact \item Firstly, it supports the basic functionality which is generic to any condition -- independent of the actual user payload. This information includes access to the interval of validity and the key to uniquely identify @@ -208,11 +212,11 @@ A conditions objects serves two purposes: conditions data. These data are freely user defined. An automatic parsing mechanism from a string representation is supported if the payload-class can properly described using a boost::spirit - parsing structure. Default types are defined for - \begin{itemize} + parsing structure. Default type implementations are defined for + \begin{itemize}\itemcompact \item all primitive data types, \item ROOT::Math::XYZVector, ROOT::Math::XYZPoint, ROOT::Math::PxPyPzEVector. - \item a number of STL containers thereof:\\ + \item a number of STL containers of the above basic data types:\\ std::vector\textless TYPE\textgreater, std::list\textless TYPE\textgreater, std::set\textless TYPE\textgreater,\\ @@ -220,15 +224,18 @@ A conditions objects serves two purposes: std::map\textless string,TYPE\textgreater,\\ std::pair\textless int,TYPE\textgreater, std::pair\textless string,TYPE\textgreater. - \end{itemize} - + \end{itemize} + Additional types can easily be implemented using boost::spirit if the basic + representation is in the form of a string. Dummy boost::spirit parsers + may be implemented if the conversion to and from strings is not required. \item Thirdly, it supports the basic functionality required by a conditions management framework, which implements the $ConditionsMap$ interface. \end{itemize} For completeness we include here the basic data access methods of the conditions -class: -\vspace{-0.2cm} +class\\ +(see \detdesc{classdd4hep_1_1_condition.html}{DD4hep/Conditions.h}): +\vspace{-0.4cm} \begin{unnumberedcode} class Condition: public Handle<detail::ConditionObject> { /** Interval of validity */ @@ -311,7 +318,7 @@ allow tools or clients to interact with conditions of a given slice. This interface defines the interaction of clients with a conditions slice. These interactions cover both the data access and the data management within a slice. The interface allows to -\begin{itemize} +\begin{itemize}\itemcompact \item access individual conditions by the detector element and a given item key. The interface allows \item to scan conditions according to the detector element or @@ -357,7 +364,7 @@ has the following entry points: \end{unnumberedcode} Such $ConditionsMap$ implementations can easily be constructed using standard STL maps. The lookup key is constructed out of two elements: -\begin{itemize} +\begin{itemize}\itemcompact \item The detector element this condition belongs to and \item an identifier of condition within this detector element. \end{itemize} @@ -377,6 +384,11 @@ this user interface is the $ConditionsSlice$ implemented in the \label{subsec:ddcond-conditions-store} %============================================================================= +\noindent +The $ConditionsMap$ interface allows tools to work with various conditions +data stores. \DDC provides an efficient implementation of such a store, +which is described in the following chapters. + %============================================================================= \subsection{Data Organization} \label{subsec:ddcond-internal-data-organization} @@ -396,6 +408,15 @@ and not necessarily resemble to values in seconds or fractions thereof. Time stamps could as well be formulated as an interval of luminosity sections, run numbers, fill numbers or entire years. +%============================================================================= +\begin{figure}[t] + \begin{center}\includegraphics[height=11cm] {DDCond-ConditionsStore.png} + \caption{The graphical representation of the organisation of the + conditions data in \DDH. } + \label{fig:ddcond-data-organization} + \end{center} +\end{figure} + \noindent Groups of parameters associated to certain intervals of validity can be very effectively managed if pooled together according to the @@ -415,17 +436,6 @@ Users can organize data according to certain types, These types are independently managed and subdivided into pools. Each of these pools manages a set of conditions items sharing the same interval ov validity. -%============================================================================= -\begin{figure}[h] - \begin{center}\includegraphics[height=10cm] {DDCond-ConditionsStore.png} - \caption{The graphical representation of the organisation of the - conditions data in \DDH. } - \label{fig:ddcond-data-organization} - \end{center} -\end{figure} -\vspace{-0.5cm} - - \noindent The internal organization of the conditions data in \DDC is entirely transparent to the user. The description here is contained for @@ -441,31 +451,79 @@ these fairly straight forward using a suited approach. \noindent As defined in section~\ref{subsec:ddcond-conditions-slices}, the conditions slice -id the main entity to project conditions suitable to process a given particle -collision. As shown also in Figure~\ref{fig:ddcond-slice-usage}, there are +is the main entity to project conditions suitable to process a given particle +collision (see \detdesc{classdd4hep_1_1cond_1_1_conditions_content.html}{DDCond/ConditionsContent.h} for details). +As shown also in Figure~\ref{fig:ddcond-slice-usage}, there are several steps to be performed before a conditions slice is ready to be used: -\begin{enumerate} +\begin{enumerate}\itemcompact \item Create the conditions data slice. -\item Setting up the data content of the slice. +\item Setting up the data content of the slice by attaching an object of type + $ConditionsContent$. \item Preparing the conditions data slice. \item Using the conditions data slice. \end{enumerate} -NEED TO MENTION ConditionsContent +\noindent +The $ConditionsContent$ (see \detdesc{classdd4hep_1_1cond_1_1_conditions_slice.html}{DDCond/ConditionsSlice.h} for details) +is a simple object, which contains load addresses +to identify persistent conditions within the database/persistent schema +used and a set of dependency rules to compute the corresponding derived conditions. %============================================================================= \begin{figure}[h] \begin{center}\includegraphics[width=15cm] {DDCond-ConditionsAccess.png} - \caption{The interaction of a particular user with the conditions - data store using the $ConditionsManager$ interface.} + \caption{The interaction of a user with the conditions + data store using the $ConditionsSlice$ and the + $ConditionsManager$ interface to define the conditions content, + prepare the data and then access the loaded data from the slice + projected according to the required interval of validity.} \label{fig:ddcond-slice-usage} \end{center} \end{figure} \vspace{-0.5cm} +\noindent +The $ConditionsSlice$ holds a consistent set of conditions valid for a given +interval of validity, which is the intersection of the intervals of +validity of all contained conditions. The has the following consequences +for the client when using a prepared $ConditionsSlice$: +\begin{itemize} +\item $ConditionsSlice$ objects are prepared by the client framework. + Specific algorithms and other code fragments developed by physicist users + should not deal with such activities. In multi-threaded applications + the preparation of a $ConditionsSlice$ may be done in a separate thread. +\item Once prepared, the slice nor the contained conditions may be altered. + All contained conditions must be considered read-only. +\item Since the slice is considered read-only, it can be used by multiple + clients simultaneously. In particular, multiple threads may share + the same slice. +\item A $ConditionsSlice$ may only be re-used and prepared according to + a different interval of validity once no other clients use it. +\item At any point of time any number of $ConditionsSlice$ objects + may be present in the client framework. There is no interference + as long as the above mentioned requirements are fulfilled. +\end{itemize} + +\noindent +The fact that multiple instances of the conditions slices may be present +as well as the fact that the preparation of slices and their use is strictly +separated makes then ideal for the usage within multi-threaded event +processing frameworks. As shown in +figure~\ref{fig:ddcond-multi-threaded-processing}, +the following use cases can easily be met: +\begin{itemize} +\item Mulitple threads may share the same slice while processing event data + (thread 1-3) as long as the time stamp of the event data processed + by each thread is contained in the interval of validity of the + slice. +\item At the same time another thread may process event data with a different + time stamp. The conditions for this event were prepared using another slice + (thread 4-N). +\end{itemize} + %============================================================================= -\begin{figure}[h] +\begin{figure}[t] \begin{center}\includegraphics[width=15cm] {DDCond-ConditionsMT.png} \caption{MT.} \label{fig:ddcond-multi-threaded-processing} @@ -473,33 +531,104 @@ NEED TO MENTION ConditionsContent \end{figure} \vspace{-0.5cm} -\newpage + %============================================================================= -\section{The User Interface} -\label{sec:ddcond-user-interface} +\subsection{Loading Conditions Data} +\label{subsec:ddcond-data-loading} %============================================================================= +\noindent +The loading of conditions data is highly experiment specific. Different +access patterns and load implementations (single threaded, multi-threaded, locking etc.) +make it close to impossible to implement any solution fitting all needs. +For this reason the loading of conditions is deferred to an abstract implementation, +which is invoked during the preparation phase of a conditions slice if the required +data are not found in the conditions cache. This data loader interface +(see \detdesc{classdd4hep_1_1cond_1_1_conditions_data_loader.html}{ConditionsDataLoader.h} +for details), receives all relevant callbacks from the framework to resolve +missing conditions and pass the loaded objects to the framework for the management. +The callback to be implemented by the framework developers are: +\begin{unnumberedcode} +/// Interface for a generic conditions loader +/** + * Common function for all loader. + */ +class ConditionsDataLoader : public NamedObject, public PropertyConfigurable { + typedef Condition::key_type key_type; + typedef std::map<key_type,Condition> LoadedItems; + typedef std::vector<std::pair<key_type,ConditionsLoadInfo*> > RequiredItems; +public: + .... + /// Load a number of conditions items from the persistent medium according to the required IOV + virtual size_t load_many( const IOV& req_validity, + RequiredItems& work, + LoadedItems& loaded, + IOV& combined_validity) = 0; +}; +\end{unnumberedcode} +The arguments to the callback contain the necessary information to retrieve +the requested items. + +\newpage %============================================================================= -\subsection{Conditions Data Classes} -\label{subsec:ddcond-data-classes} +\section{Example Walkthrough} +\label{sec:ddcond-example} %============================================================================= %============================================================================= -\subsection{ConditionsSlice} -\label{subsec:ddcond-data-classes} +\subsection{Example to Load and Prepare Conditions(Slices)} +\label{subsec:ddcond-example-loading} %============================================================================= \noindent -The ConditionsSlice a Concrete inmplementation of the ConditonsMap Interface. -bla bla +To illustrate the usage of the \DDC package an example is discussed here in detail. +The full example is part of the conditions unit tests and can be found in the +\DDH examples.\\ +(See examples/Conditions/src/ConditionExample\_manual.cpp). + +\noindent +The examples uses conditions names and detector element names explicitly and +hence requires a fixed detector description being loaded in memory. +For simplicity we use here the Minitel example from the example/ClientTests. + +\begin{code} + description.fromXML("examples/ClientTests/compact/MiniTel.xml"); + description.apply("DD4hep_ConditionsManagerInstaller",0,(char**)0); + + ConditionsManager manager = ConditionsManager::from(description); + manager["PoolType"] = "DD4hep_ConditionsLinearPool"; + manager["UserPoolType"] = "DD4hep_ConditionsMapUserPool"; + manager["UpdatePoolType"] = "DD4hep_ConditionsLinearUpdatePool"; + manager["LoaderType"] = "root"; + manager.initialize(); + + shared_ptr<ConditionsContent> content(new ConditionsContent()); + shared_ptr<ConditionsSlice> slice(new ConditionsSlice(manager,content)); + + \end{code} + +\noindent +{\bf{Explanation:}} \\ +\begin{tabular} {l||p{0cm}} +\docline{Line}{} +\docline{1}{Load the MiniTel detector description using the compact notation.} +\docline{2}{Install the conditions manager implementation using the plugin mechanism.} +\docline{4}{Access conditions manager instance from the Detector interface.} +\docline{5-8}{Configure the properties of the conditions manager.} +\docline{9}{Initialize the conditions manager instance.} +\docline{11-12}{Create empty $ConditionsSlice$ and $ConditionsContent$ instances.} +\docline{14}{} + +\end{tabular} + + +TO BE COMPLETED! + \newpage %============================================================================= \begin{thebibliography}{9} -\bibitem{bib:LHCb-geometry} S. Ponce et al., - "Detector Description Framework in LHCb", - International Conference on Computing in High Energy and Nuclear Physics (CHEP 2003), - La Jolla, CA, 2003, proceedings. +\bibitem{bib:dd4hep-manual} M.Frank, \DDH manual. \bibitem{bib:ddalign-manual} M.Frank, \DDA manual. \end{thebibliography} %============================================================================= diff --git a/doc/doxygen/Geant4Classes.h b/doc/doxygen/Geant4Classes.h index 00c8cdfa9..db812ad0e 100644 --- a/doc/doxygen/Geant4Classes.h +++ b/doc/doxygen/Geant4Classes.h @@ -39,6 +39,10 @@ class G4VHit {}; /** Class of the Geant4 toolkit. \see http://www-geant4.kek.jp/Reference */ class G4VHitsCollection {}; +/// Class of the Geant4 toolkit. See http://www-geant4.kek.jp/Reference +/** Class of the Geant4 toolkit. \see http://www-geant4.kek.jp/Reference */ +class G4VPhysicsConstructor {}; + /// Class of the Geant4 toolkit. See http://www-geant4.kek.jp/Reference /** Class of the Geant4 toolkit. \see http://www-geant4.kek.jp/Reference */ class G4VSDFilter {}; diff --git a/doc/doxygen/TiXMLClasses.h b/doc/doxygen/TiXMLClasses.h index 3dfd50401..17e1f7212 100644 --- a/doc/doxygen/TiXMLClasses.h +++ b/doc/doxygen/TiXMLClasses.h @@ -2,9 +2,11 @@ /// TinyXML class. See http://www.grinninglizard.com/tinyxml /** See \see http://www.grinninglizard.com/tinyxml */ class TiXmlAttribute {}; + /// TinyXML class. See http://www.grinninglizard.com/tinyxml /** See \see http://www.grinninglizard.com/tinyxml */ class TiXmlAttributeSet {}; + /// TinyXML class. See http://www.grinninglizard.com/tinyxml /** See \see http://www.grinninglizard.com/tinyxml */ class TiXmlBase { @@ -12,36 +14,51 @@ class TiXmlBase { /** See \see http://www.grinninglizard.com/tinyxml */ class Entity {}; }; + /// TinyXML class. See http://www.grinninglizard.com/tinyxml /** See \see http://www.grinninglizard.com/tinyxml */ class TiXmlComment {}; + /// TinyXML class. See http://www.grinninglizard.com/tinyxml /** See \see http://www.grinninglizard.com/tinyxml */ class TiXmlCursor {}; + /// TinyXML class. See http://www.grinninglizard.com/tinyxml /** See \see http://www.grinninglizard.com/tinyxml */ class TiXmlDeclaration {}; + /// TinyXML class. See http://www.grinninglizard.com/tinyxml /** See \see http://www.grinninglizard.com/tinyxml */ class TiXmlDocument {}; + /// TinyXML class. See http://www.grinninglizard.com/tinyxml /** See \see http://www.grinninglizard.com/tinyxml */ class TiXmlElement {}; + /// TinyXML class. See http://www.grinninglizard.com/tinyxml /** See \see http://www.grinninglizard.com/tinyxml */ class TiXmlHandle {}; + +/// TinyXML class. See http://www.grinninglizard.com/tinyxml +/** See \see http://www.grinninglizard.com/tinyxml */ +class TiXmlHandle_t {}; + /// TinyXML class. See http://www.grinninglizard.com/tinyxml /** See \see http://www.grinninglizard.com/tinyxml */ class TiXmlNode {}; + /// TinyXML class. See http://www.grinninglizard.com/tinyxml /** See \see http://www.grinninglizard.com/tinyxml */ class TiXmlOutStream {}; + /// TinyXML class. See http://www.grinninglizard.com/tinyxml /** See \see http://www.grinninglizard.com/tinyxml */ class TiXmlParsingData {}; + /// TinyXML class. See http://www.grinninglizard.com/tinyxml /** See \see http://www.grinninglizard.com/tinyxml */ class TiXmlPrinter {}; + /// TinyXML class. See http://www.grinninglizard.com/tinyxml /** See \see http://www.grinninglizard.com/tinyxml */ class TiXmlString { @@ -49,12 +66,15 @@ class TiXmlString { /** See \see http://www.grinninglizard.com/tinyxml */ class Rep {}; }; + /// TinyXML class. See http://www.grinninglizard.com/tinyxml /** See \see http://www.grinninglizard.com/tinyxml */ class TiXmlText {}; + /// TinyXML class. See http://www.grinninglizard.com/tinyxml /** See \see http://www.grinninglizard.com/tinyxml */ class TiXmlUnknown {}; + /// TinyXML class. See http://www.grinninglizard.com/tinyxml /** See \see http://www.grinninglizard.com/tinyxml */ class TiXmlVisitor {}; diff --git a/examples/Conditions/src/ConditionExample_manual.cpp b/examples/Conditions/src/ConditionExample_manual.cpp new file mode 100644 index 000000000..a22e52562 --- /dev/null +++ b/examples/Conditions/src/ConditionExample_manual.cpp @@ -0,0 +1,146 @@ +//========================================================================== +// AIDA Detector description implementation +//-------------------------------------------------------------------------- +// Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN) +// All rights reserved. +// +// For the licensing terms see $DD4hepINSTALL/LICENSE. +// For the list of contributors see $DD4hepINSTALL/doc/CREDITS. +// +// Author : M.Frank +// +//========================================================================== +/* + + Plugin invocation: + ================== + This plugin behaves like a main program. + Invoke the plugin with something like this: + + geoPluginRun -volmgr -destroy -plugin DD4hep_ConditionExample_load \ + -input file:${DD4hep_DIR}/examples/AlignDet/compact/Telescope.xml \ + -conditions Conditions.root + + Save the conditions store by hand for a set of IOVs. + Then compute the corresponding alignment entries.... + +*/ +// Framework include files +#include "ConditionExampleObjects.h" +#include "DDCond/ConditionsIOVPool.h" +#include "DDCond/ConditionsManager.h" +#include "DDCond/ConditionsRootPersistency.h" +#include "DD4hep/Factories.h" + +using namespace std; +using namespace dd4hep; +using namespace dd4hep::ConditionExamples; + +static void help(int argc, char** argv) { + /// Help printout describing the basic command line interface + cout << + "Usage: -plugin <name> -arg [-arg] \n" + " name: factory name DD4hep_ConditionExample_load \n" + " -input <string> Geometry file \n" + " -conditions <string> Conditions input file \n" + " -iovs <number> Number of parallel IOV slots for processing. \n" + " -restore <string> Restore strategy: iovpool, userpool or condpool.\n" + "\tArguments given: " << arguments(argc,argv) << endl << flush; + ::exit(EINVAL); +} + +/// Plugin function: Condition program example +/** + * Factory: DD4hep_ConditionExample_load + * + * \author M.Frank + * \version 1.0 + * \date 01/12/2016 + */ +static int condition_example (Detector& description, int argc, char** argv) { + string input, conditions, restore="iovpool"; + int num_iov = 10; + bool arg_error = false; + for(int i=0; i<argc && argv[i]; ++i) { + if ( 0 == ::strncmp("-input",argv[i],4) ) + input = argv[++i]; + else if ( 0 == ::strncmp("-conditions",argv[i],4) ) + conditions = argv[++i]; + else if ( 0 == ::strncmp("-restore",argv[i],4) ) + restore = argv[++i]; + else if ( 0 == ::strncmp("-iovs",argv[i],4) ) + num_iov = ::atol(argv[++i]); + else + arg_error = true; + } + if ( arg_error || input.empty() || conditions.empty() ) help(argc,argv); + + // First we load the geometry + description.fromXML(input); + + /******************** Initialize the conditions manager *****************/ + // Now we instantiate the conditions manager + description.apply("DD4hep_ConditionsManagerInstaller",0,(char**)0); + + ConditionsManager manager = ConditionsManager::from(description); + manager["PoolType"] = "DD4hep_ConditionsLinearPool"; + manager["UserPoolType"] = "DD4hep_ConditionsMapUserPool"; + manager["UpdatePoolType"] = "DD4hep_ConditionsLinearUpdatePool"; + manager["LoaderType"] = "root"; + manager.initialize(); + + shared_ptr<ConditionsContent> content(new ConditionsContent()); + shared_ptr<ConditionsSlice> slice(new ConditionsSlice(manager,content)); + + Scanner(ConditionsKeys(*content,INFO),description.world()); + Scanner(ConditionsDependencyCreator(*content,DEBUG),description.world()); + + /******************** Load the conditions from file *********************/ + { + auto pers = cond::ConditionsRootPersistency::load(conditions.c_str(),"DD4hep Conditions"); + printout(ALWAYS,"Statistics","+========================================================================="); + printout(ALWAYS,"Statistics","+ Loaded conditions object from file %s. Took %8.3f seconds.", + conditions.c_str(),pers->duration); + size_t num_cond = 0; + if ( restore == "iovpool" ) + num_cond = pers->importIOVPool("ConditionsIOVPool No 1","run",manager); + else if ( restore == "userpool" ) + num_cond = pers->importUserPool("*","run",manager); + else if ( restore == "condpool" ) + num_cond = pers->importConditionsPool("*","run",manager); + else + help(argc,argv); + + printout(ALWAYS,"Statistics","+ Imported %ld conditions from %s to IOV pool. Took %8.3f seconds.", + num_cond, restore.c_str(), pers->duration); + printout(ALWAYS,"Statistics","+========================================================================="); + } + // ++++++++++++++++++++++++ Now compute the conditions for each of these IOVs + const IOVType* iov_typ = manager.iovType("run"); + cond::ConditionsIOVPool* pool = manager.iovPool(*iov_typ); + for( const auto& p : pool->elements ) + p.second->print("*"); + + ConditionsManager::Result total; + for(int i=0; i<num_iov; ++i) { + IOV req_iov(iov_typ,i*10+5); + // Select the proper set of conditions and attach them to the user pool + ConditionsManager::Result r = manager.prepare(req_iov,*slice); + total += r; + if ( 0 == i ) { // First one we print... + Scanner(ConditionsPrinter(slice.get(),"Example"),description.world()); + } + // Now compute the tranformation matrices + printout(ALWAYS,"Prepare","Total %ld conditions (S:%ld,L:%ld,C:%ld,M:%ld) of IOV %s", + r.total(), r.selected, r.loaded, r.computed, r.missing, req_iov.str().c_str()); + } + printout(ALWAYS,"Statistics","+========================================================================="); + printout(ALWAYS,"Statistics","+ Accessed a total of %ld conditions (S:%6ld,L:%6ld,C:%6ld,M:%ld)", + total.total(), total.selected, total.loaded, total.computed, total.missing); + printout(ALWAYS,"Statistics","+========================================================================="); + // All done. + return 1; +} + +// first argument is the type from the xml file +DECLARE_APPLY(DD4hep_ConditionExample_load,condition_example) -- GitLab