From c802223da3240292d7b569a731b804fcb88c83ec Mon Sep 17 00:00:00 2001 From: Markus Frank <markus.frank@cern.ch> Date: Thu, 25 Sep 2014 19:41:11 +0000 Subject: [PATCH] Improve doxygen documentation --- DDCore/include/DD4hep/Callback.h | 2 + DDCore/include/DD4hep/DD4hepUnits.h | 1 + DDCore/include/DD4hep/DetectorTools.h | 9 +- DDCore/include/DD4hep/Dictionary.h | 9 + DDCore/include/DD4hep/Factories.h | 37 +- DDCore/include/DD4hep/NamedObject.h | 4 +- DDCore/include/DD4hep/ObjectExtensions.h | 4 +- DDCore/include/DD4hep/Objects.h | 20 +- DDCore/include/DD4hep/Parsers.h | 3 + DDCore/include/DD4hep/Plugins.h | 7 +- DDCore/include/DD4hep/Primitives.h | 5 +- DDCore/include/DD4hep/Printout.h | 7 +- DDCore/include/DD4hep/Readout.h | 10 +- DDCore/include/DD4hep/Segmentations.h | 12 +- DDCore/include/DD4hep/Shapes.h | 10 +- DDCore/include/DD4hep/ToStream.h | 3 + DDCore/include/DD4hep/VolumeManager.h | 10 +- DDCore/include/DD4hep/Volumes.h | 51 +- DDCore/include/XML/DocumentHandler.h | 12 +- DDCore/src/DetectorTools.cpp | 12 +- DDCore/src/XML/XMLElements.cpp | 4 + DDG4/include/DDG4/ComponentProperties.h | 19 +- DDG4/include/DDG4/ComponentUtils.h | 4 +- DDG4/include/DDG4/Defs.h | 10 +- DDG4/include/DDG4/Geant4Data.h | 89 +- DDG4/include/DDG4/Geant4Field.h | 11 +- DDG4/include/DDG4/Geant4Handle.h | 19 +- DDG4/include/DDG4/Geant4HierarchyDump.h | 3 +- DDG4/include/DDG4/Geant4HitCollection.h | 29 +- DDG4/include/DDG4/Geant4Hits.h | 25 +- DDG4/include/DDG4/Geant4InputAction.h | 12 +- DDG4/include/DDG4/Geant4InputHandling.h | 8 +- DDG4/include/DDG4/Geant4InteractionMerger.h | 9 +- .../DDG4/Geant4InteractionVertexBoost.h | 15 +- .../DDG4/Geant4InteractionVertexSmear.h | 18 +- DDG4/include/DDG4/Geant4IsotropeGenerator.h | 8 +- DDG4/include/DDG4/Geant4Kernel.h | 26 +- DDG4/include/DDG4/Geant4Mapping.h | 17 +- DDG4/include/DDG4/Geant4MonteCarloTruth.h | 3 +- DDG4/include/DDG4/Geant4OutputAction.h | 15 +- DDG4/include/DDG4/Geant4Particle.h | 11 +- DDG4/include/DDG4/Geant4ParticleGun.h | 11 +- DDG4/include/DDG4/Geant4ParticleHandler.h | 18 +- DDG4/include/DDG4/Geant4ParticlePrint.h | 12 +- DDG4/include/DDG4/Geant4PhysicsList.h | 32 +- DDG4/include/DDG4/Geant4Primary.h | 9 +- DDG4/include/DDG4/Geant4PrimaryHandler.h | 12 +- DDG4/include/DDG4/Geant4Primitives.h | 8 +- DDG4/include/DDG4/Geant4Random.h | 8 +- DDG4/include/DDG4/Geant4RunAction.h | 13 +- DDG4/include/DDG4/Geant4SensDetAction.h | 20 +- DDG4/include/DDG4/Geant4SensitiveDetector.h | 14 +- DDG4/include/DDG4/Geant4StackingAction.h | 14 +- DDG4/include/DDG4/Geant4StepHandler.h | 10 +- DDG4/include/DDG4/Geant4TestActions.h | 27 +- DDG4/include/DDG4/Geant4TouchableHandler.h | 9 +- DDG4/include/DDG4/Geant4TrackHandler.h | 10 +- DDG4/include/DDG4/Geant4TrackingAction.h | 14 +- DDG4/include/DDG4/Geant4UIManager.h | 12 +- DDG4/include/DDG4/Geant4UIMessenger.h | 9 +- DDG4/include/DDG4/Geant4UserParticleHandler.h | 13 +- DDG4/include/DDG4/Geant4UserPhysicsList.h | 11 +- DDG4/include/DDG4/Geant4VolumeManager.h | 11 +- DDG4/lcio/LCIOConversions.cpp | 2 +- DDG4/plugins/Geant4SensDetFilters.cpp | 35 +- DDG4/python/DDG4.py | 4 +- DDG4/src/Geant4Exec.cpp | 29 +- DDG4/src/Geant4VolumeManager.cpp | 1 + doc/LaTex/CERN-logo.png | Bin 0 -> 2935 bytes doc/doxygen/DD4hep.css | 949 ++++++++++++++++++ doc/doxygen/DD4hepFigures.dox | 31 + doc/doxygen/DD4hepFooter.html | 16 + doc/doxygen/DD4hepHeader.html | 50 + doc/doxygen/DD4hepMainpage.dox | 244 +++++ 74 files changed, 1695 insertions(+), 546 deletions(-) create mode 100644 doc/LaTex/CERN-logo.png create mode 100644 doc/doxygen/DD4hep.css create mode 100644 doc/doxygen/DD4hepFigures.dox create mode 100644 doc/doxygen/DD4hepFooter.html create mode 100644 doc/doxygen/DD4hepHeader.html create mode 100644 doc/doxygen/DD4hepMainpage.dox diff --git a/DDCore/include/DD4hep/Callback.h b/DDCore/include/DD4hep/Callback.h index 1a97069c9..9d64fd5bb 100644 --- a/DDCore/include/DD4hep/Callback.h +++ b/DDCore/include/DD4hep/Callback.h @@ -62,6 +62,8 @@ namespace DD4hep { template <typename T> static const T* c_cast(const void* p) { return (const T*) p; } + + /// Wrapper around a C++ member function pointer template <typename T> struct Wrapper { public: typedef T pmf_t; diff --git a/DDCore/include/DD4hep/DD4hepUnits.h b/DDCore/include/DD4hep/DD4hepUnits.h index 5c952a28e..ab6bb6996 100644 --- a/DDCore/include/DD4hep/DD4hepUnits.h +++ b/DDCore/include/DD4hep/DD4hepUnits.h @@ -14,6 +14,7 @@ #ifndef DD4HEP_TGEOUNITS_H #define DD4HEP_TGEOUNITS_H +/// Utility namespace to support TGeo units. namespace dd4hep { // diff --git a/DDCore/include/DD4hep/DetectorTools.h b/DDCore/include/DD4hep/DetectorTools.h index 9654ed3da..88a7335df 100644 --- a/DDCore/include/DD4hep/DetectorTools.h +++ b/DDCore/include/DD4hep/DetectorTools.h @@ -12,16 +12,13 @@ // Framework include files #include "DD4hep/Detector.h" +// Forward declarations class TGeoHMatrix; -/* - * DD4hep namespace declaration - */ +/// Namespace for the AIDA detector description toolkit namespace DD4hep { - /* - * Geometry namespace declaration - */ + /// Namespace for the geometry part of the AIDA detector description toolkit namespace Geometry { // Forward declarations diff --git a/DDCore/include/DD4hep/Dictionary.h b/DDCore/include/DD4hep/Dictionary.h index 17d7e64ad..f6fb8e344 100644 --- a/DDCore/include/DD4hep/Dictionary.h +++ b/DDCore/include/DD4hep/Dictionary.h @@ -9,6 +9,7 @@ #ifndef DD4HEP_GEOMETRY_DICTIONARY_H #define DD4HEP_GEOMETRY_DICTIONARY_H +#include "XML/Evaluator.h" #include "DD4hep/LCDDData.h" #include "DD4hep/Conditions.h" #include "DD4hep/FieldTypes.h" @@ -29,6 +30,8 @@ namespace DD4hep { TRint app(name.c_str(), &a.first, a.second); app.Run(); } + XmlTools::Evaluator& evaluator(); + XmlTools::Evaluator& g4Evaluator(); } @@ -40,6 +43,11 @@ namespace DD4hep { #pragma link off all classes; #pragma link off all functions; +#pragma link C++ namespace XmlTools; +#pragma link C++ class XmlTools::Evaluator; +#pragma link C++ function DD4hep::evaluator; +#pragma link C++ function DD4hep::g4Evaluator; + #pragma link C++ namespace DD4hep; #pragma link C++ namespace DD4hep::Geometry; #pragma link C++ namespace DD4hep::DDSegmentation; @@ -50,6 +58,7 @@ template pair<unsigned int, string>; template class DD4hep::Geometry::Handle<NamedObject>; template class map<string, DD4hep::Geometry::Handle<DD4hep::NamedObject> >; #pragma link C++ class DD4hep::NamedObject+; +#pragma link C++ class DD4hep::Geometry::Ref_t+; #pragma link C++ class DD4hep::Geometry::Handle<DD4hep::NamedObject>+; #pragma link C++ class pair<string, DD4hep::Geometry::Handle<DD4hep::NamedObject> >+; #pragma link C++ class map<string, DD4hep::Geometry::Handle<DD4hep::NamedObject> >+; diff --git a/DDCore/include/DD4hep/Factories.h b/DDCore/include/DD4hep/Factories.h index 28d4ba197..fad46f1df 100644 --- a/DDCore/include/DD4hep/Factories.h +++ b/DDCore/include/DD4hep/Factories.h @@ -18,21 +18,16 @@ #include "XML/XMLElements.h" #include <cstdarg> -/* - * DD4hep namespace declaration - */ +/// Namespace for the AIDA detector description toolkit namespace DD4hep { - /* - * XML sub-namespace declaration - */ + + /// Namespace for the AIDA detector description toolkit supporting XML utilities namespace XML { class Handle_t; } class NamedObject; - /* - * Geometry sub-namespace declaration - */ + /// Namespace for the geometry part of the AIDA detector description toolkit namespace Geometry { // Forward declarations @@ -40,12 +35,14 @@ namespace DD4hep { class SensitiveDetector; class DetElement; + /// Template class with a generic constructor signature template <typename T> class ConstructionFactory { public: static void* create(const char* arg); }; - /** @class TranslationFactory Factories.h DDCore/Factories.h + /// Template class with a generic signature to apply LCDD plugins + /** @class ApplyFactory Factories.h DDCore/Factories.h * Specialized factory to translate objects, which can be retrieved from LCDD * Example: Translate DD4hep geometry to Geant4 * @@ -58,8 +55,9 @@ namespace DD4hep { static long create(LCDD& lcdd, int argc, char** argv); }; + /// Specialized factory to translate objects, which can be retrieved from LCDD /** @class TranslationFactory Factories.h DDCore/Factories.h - * Specialized factory to translate objects, which can be retrieved from LCDD + * * Example: Translate DD4hep geometry to Geant4 * * @author M.Frank @@ -71,8 +69,8 @@ namespace DD4hep { static Ref_t create(LCDD& lcdd); }; - /** @class XMLElementFactory Factories.h DDCore/Factories.h - * Create an arbitrary object from it's XML representation. + /// Create an arbitrary object from it's XML representation. + /** * * @author M.Frank * @version 1.0 @@ -83,8 +81,8 @@ namespace DD4hep { static Ref_t create(LCDD& lcdd, XML::Handle_t e); }; - /** @class XMLDocumentReaderFactory Factories.h DDCore/Factories.h - * Read an arbitrary XML document and analyze it's content + /// Read an arbitrary XML document and analyze it's content + /** * * @author M.Frank * @version 1.0 @@ -95,8 +93,8 @@ namespace DD4hep { static long create(LCDD& lcdd, XML::Handle_t e); }; - /** @class XMLConversionFactory Factories.h DDCore/Factories.h - * Read an arbitrary XML document and analyze it's content + /// Read an arbitrary XML document and analyze it's content + /** * * @author M.Frank * @version 1.0 @@ -107,9 +105,8 @@ namespace DD4hep { static long create(LCDD& lcdd, Ref_t& handle, XML::Handle_t element); }; - /** @class DetElementFactory Factories.h DDCore/Factories.h - * Standard factory to create Detector elements from the compact - * XML representation. + /// Standard factory to create Detector elements from the compact XML representation. + /** * * @author M.Frank * @version 1.0 diff --git a/DDCore/include/DD4hep/NamedObject.h b/DDCore/include/DD4hep/NamedObject.h index 85b099724..04b626afb 100644 --- a/DDCore/include/DD4hep/NamedObject.h +++ b/DDCore/include/DD4hep/NamedObject.h @@ -12,9 +12,7 @@ // C/C++ include files #include <string> -/* - * DD4hep namespace declaration - */ +/// Namespace for the AIDA detector description toolkit namespace DD4hep { /// Implementation of a named object diff --git a/DDCore/include/DD4hep/ObjectExtensions.h b/DDCore/include/DD4hep/ObjectExtensions.h index db804a30b..d48498386 100644 --- a/DDCore/include/DD4hep/ObjectExtensions.h +++ b/DDCore/include/DD4hep/ObjectExtensions.h @@ -13,9 +13,7 @@ #include <typeinfo> #include <map> -/* - * DD4hep namespace declaration - */ +/// Namespace for the AIDA detector description toolkit namespace DD4hep { /// Implementation of an object supporting arbitrary user extensions diff --git a/DDCore/include/DD4hep/Objects.h b/DDCore/include/DD4hep/Objects.h index 0c9489968..24a09d858 100644 --- a/DDCore/include/DD4hep/Objects.h +++ b/DDCore/include/DD4hep/Objects.h @@ -46,14 +46,10 @@ class TGeoIdentity; #define M_PI 3.14159265358979323846 #endif -/* - * DD4hep namespace declaration - */ +/// Namespace for the AIDA detector description toolkit namespace DD4hep { - /* - * Geoemtry namespace declaration - */ + /// Namespace for the geometry part of the AIDA detector description toolkit namespace Geometry { // Forward declarations @@ -241,6 +237,9 @@ namespace DD4hep { /// Handle class describing an element in the periodic table /** + * For details please see the ROOT TGeo information: + * @see http://root.cern.ch/root/html/TGeoElement.html + * * @author M.Frank * @version 1.0 */ @@ -267,7 +266,11 @@ namespace DD4hep { Atom(const std::string& name, const std::string& formula, int Z, int N, double density); }; + /// Handle class describing a material /** @class Material Objects.h + * + * For details please see the ROOT TGeo information: + * @see http://root.cern.ch/root/html/TGeoMedium.html * * @author M.Frank * @version 1.0 @@ -306,6 +309,7 @@ namespace DD4hep { double intLength() const; }; + /// Handle class describing visualization attributes /** @class VisAttr Objects.h * * @author M.Frank @@ -383,9 +387,9 @@ namespace DD4hep { std::string toString() const; }; - /// OBSOLETE: Handle class describing an alignment entry + /// Deprecated: Handle class describing an alignment entry /** - * Class representing an alignment entry + * \deprecated{Class representing an alignment entry} * * @author M.Frank * @version 1.0 diff --git a/DDCore/include/DD4hep/Parsers.h b/DDCore/include/DD4hep/Parsers.h index c68f03380..9ce843027 100644 --- a/DDCore/include/DD4hep/Parsers.h +++ b/DDCore/include/DD4hep/Parsers.h @@ -59,7 +59,10 @@ * @date 2006-05-12 */ // ============================================================================ + +/// Namespace for the AIDA detector description toolkit namespace DD4hep { + /// Namespace for the AIDA detector for utilities using boost::spirit parsers namespace Parsers { // ======================================================================== /** parse the <c>bool</c> value diff --git a/DDCore/include/DD4hep/Plugins.h b/DDCore/include/DD4hep/Plugins.h index 96963ab7f..b0e88c70a 100644 --- a/DDCore/include/DD4hep/Plugins.h +++ b/DDCore/include/DD4hep/Plugins.h @@ -14,16 +14,13 @@ #include "Reflex/PluginService.h" #endif -/* - * DD4hep namespace declaration - */ +/// Namespace for the AIDA detector description toolkit namespace DD4hep { typedef ROOT::Reflex::PluginService PluginService; /// Helper to debug plugin manager calls - /** @class PluginDebug. PluginDebug.h DD4hep/PluginDebug.h - * + /** * Small helper class to adjust the plugin service debug level * for a limited code scope. Automatically back-adjusts the debug * level at object destruction. diff --git a/DDCore/include/DD4hep/Primitives.h b/DDCore/include/DD4hep/Primitives.h index c91bf84fa..18559678d 100644 --- a/DDCore/include/DD4hep/Primitives.h +++ b/DDCore/include/DD4hep/Primitives.h @@ -14,11 +14,10 @@ // C/C++ include files #include <algorithm> -/* - * DD4hep namespace declaration - */ +/// Namespace for the AIDA detector description toolkit namespace DD4hep { + /// Namespace describing generic detector segmentations namespace DDSegmentation { class BitField64; class BitFieldValue; diff --git a/DDCore/include/DD4hep/Printout.h b/DDCore/include/DD4hep/Printout.h index 23484ad45..9a1c95a23 100644 --- a/DDCore/include/DD4hep/Printout.h +++ b/DDCore/include/DD4hep/Printout.h @@ -24,15 +24,14 @@ /// Forward declarations class TNamed; -/* - * DD4hep namespace declaration - */ +/// Namespace for the AIDA detector description toolkit namespace DD4hep { class NamedObject; - /// Forward declarations + /// Namespace for the geometry part of the AIDA detector description toolkit namespace Geometry { + // Forward declarations class LCDD; class VisAttr; class DetElement; diff --git a/DDCore/include/DD4hep/Readout.h b/DDCore/include/DD4hep/Readout.h index ba5fa1f2a..b520f4ace 100644 --- a/DDCore/include/DD4hep/Readout.h +++ b/DDCore/include/DD4hep/Readout.h @@ -19,14 +19,10 @@ // C/C++ include files #include <map> -/* - * DD4hep namespace declaration - */ +/// Namespace for the AIDA detector description toolkit namespace DD4hep { - /* - * Geometry namespace declaration - */ + /// Namespace for the geometry part of the AIDA detector description toolkit namespace Geometry { // Forward declarations @@ -34,7 +30,7 @@ namespace DD4hep { class ReadoutObject; /// Handle to the implementation of the readout structure of a subdetector - /** @class Readout Readout.h DD4hep/Readout.h + /** * * @author M.Frank * @version 1.0 diff --git a/DDCore/include/DD4hep/Segmentations.h b/DDCore/include/DD4hep/Segmentations.h index 5aa55d8db..18a6f021e 100644 --- a/DDCore/include/DD4hep/Segmentations.h +++ b/DDCore/include/DD4hep/Segmentations.h @@ -20,18 +20,14 @@ #include <cmath> #include <vector> -/* - * DD4hep namespace declaration - */ +/// Namespace for the AIDA detector description toolkit namespace DD4hep { - /* - * XML namespace declaration - */ + /// Namespace for the geometry part of the AIDA detector description toolkit namespace Geometry { /// Implementation class supporting generic Segmentation of sensitive detectors - /** @class Segmentation::Object Segmentations.h DD4hep/Segmentations.h + /** * * @author M.Frank * @version 1.0 @@ -80,7 +76,7 @@ namespace DD4hep { /// Handle class supporting generic Segmentation of sensitive detectors - /** @class Segmentation Segmentations.h DD4hep/Segmentations.h + /** * * @author M.Frank * @version 1.0 diff --git a/DDCore/include/DD4hep/Shapes.h b/DDCore/include/DD4hep/Shapes.h index f6bae5546..14ec159ae 100644 --- a/DDCore/include/DD4hep/Shapes.h +++ b/DDCore/include/DD4hep/Shapes.h @@ -29,17 +29,13 @@ #include "TGeoTorus.h" #include "TGeoCompositeShape.h" -/* - * DD4hep namespace declaration - */ +/// Namespace for the AIDA detector description toolkit namespace DD4hep { - /* - * Geometry namespace declaration - */ + /// Namespace for the geometry part of the AIDA detector description toolkit namespace Geometry { -// Forward declarations + // Forward declarations /// Base class for Solid (shape) objects /** diff --git a/DDCore/include/DD4hep/ToStream.h b/DDCore/include/DD4hep/ToStream.h index 4e59d803e..a61655ce9 100644 --- a/DDCore/include/DD4hep/ToStream.h +++ b/DDCore/include/DD4hep/ToStream.h @@ -32,8 +32,11 @@ * easier especializations */ // ============================================================================ + +/// Namespace for the AIDA detector description toolkit namespace DD4hep { // ========================================================================== + /// Utility namespace to support boost::spirit namespace Utils { // ======================================================================== /** the generic implementation of the printout to the std::ostream diff --git a/DDCore/include/DD4hep/VolumeManager.h b/DDCore/include/DD4hep/VolumeManager.h index 72be6f5f7..853fc77d9 100644 --- a/DDCore/include/DD4hep/VolumeManager.h +++ b/DDCore/include/DD4hep/VolumeManager.h @@ -17,14 +17,12 @@ // ROOT include files #include "TGeoMatrix.h" -/* - * DD4hep namespace declaration - */ + + +/// Namespace for the AIDA detector description toolkit namespace DD4hep { - /* - * Geometry namespace declaration - */ + /// Namespace for the geometry part of the AIDA detector description toolkit namespace Geometry { // Forward declarations diff --git a/DDCore/include/DD4hep/Volumes.h b/DDCore/include/DD4hep/Volumes.h index 2daf76d67..bb9c302ec 100644 --- a/DDCore/include/DD4hep/Volumes.h +++ b/DDCore/include/DD4hep/Volumes.h @@ -6,15 +6,13 @@ // Author : M.Frank // //==================================================================== - -#ifndef DD4hep_GEOMETRY_VOLUMES_H -#define DD4hep_GEOMETRY_VOLUMES_H +#ifndef DD4HEP_GEOMETRY_VOLUMES_H +#define DD4HEP_GEOMETRY_VOLUMES_H // Framework include files #include "DD4hep/Handle.h" #include "DD4hep/Shapes.h" #include "DD4hep/Objects.h" -//#include "DD4hep/Detector.h" // C/C++ include files #include <map> @@ -40,14 +38,10 @@ class TGeoExtension : public TObject { }; #endif -/* - * DD4hep namespace declaration - */ +/// Namespace for the AIDA detector description toolkit namespace DD4hep { - /* - * Geometry namespace declaration - */ + /// Namespace for the geometry part of the AIDA detector description toolkit namespace Geometry { // Forward declarations @@ -61,8 +55,10 @@ namespace DD4hep { class PlacedVolume; class SensitiveDetector; - /// Implementation class extending the ROOT placed volume (TGeoNode) - /** @class PlacedVolumeExtension Volume.h DD4hep/lcdd/Volume.h + /// Implementation class extending the ROOT placed volume + /** + * For any further documentation please see the following ROOT documentation: + * @see http://root.cern.ch/root/html/TGeoExtension.html * * @author M.Frank * @version 1.0 @@ -108,13 +104,12 @@ namespace DD4hep { }; /// Handle class holding a placed volume (also called physical volume) - /** @class PlacedVolume Volume.h DD4hep/lcdd/Volume.h - * + /** * For any further documentation please see the following ROOT documentation: * @see http://root.cern.ch/root/html/TGeoNode.html * - * @author M.Frank - * @version 1.0 + * @author M.Frank + * @version 1.0 */ class PlacedVolume : public Handle<TGeoNode> { public: @@ -160,9 +155,11 @@ namespace DD4hep { }; /// Implementation class extending the ROOT volume (TGeoVolume) - /** @class Volume::Object Volume.h DD4hep/Volume.h + /** + * Internal data structure optional to TGeo data. * - * Internal data structure optional to TGeo data + * For any further documentation please see the following ROOT documentation: + * @see http://root.cern.ch/root/html/TGeoExtension.html * * @author M.Frank * @version 1.0 @@ -200,8 +197,7 @@ namespace DD4hep { }; /// Handle class holding a placed volume (also called physical volume) - /** @class Volume Volume.h DD4hep/Volume.h - * + /** * Handle describing a Volume * * For any further documentation please see the following ROOT documentation: @@ -310,12 +306,15 @@ namespace DD4hep { } }; - /** @class Assembly Volume.h DD4hep/lcdd/Volume.h + /// Implementation class extending the ROOT assembly volumes (TGeoVolumeAsembly) + /** + * Handle describing a volume assembly. * - * Handle describing a volume assembly + * For any further documentation please see the following ROOT documentation: + * @see http://root.cern.ch/root/html/TGeoVolumeAssembly.html * - * @author M.Frank - * @version 1.0 + * @author M.Frank + * @version 1.0 */ class Assembly: public Volume { public: @@ -345,5 +344,5 @@ namespace DD4hep { }; } /* End namespace Geometry */ -} /* End namespace DD4hep */ -#endif /* DD4hep_GEOMETRY_VOLUMES_H */ +} /* End namespace DD4hep */ +#endif /* DD4HEP_GEOMETRY_VOLUMES_H */ diff --git a/DDCore/include/XML/DocumentHandler.h b/DDCore/include/XML/DocumentHandler.h index ddb770f4a..877544266 100644 --- a/DDCore/include/XML/DocumentHandler.h +++ b/DDCore/include/XML/DocumentHandler.h @@ -9,16 +9,16 @@ #ifndef DD4HEP_XML_DOCUMENTHANDLER_H #define DD4HEP_XML_DOCUMENTHANDLER_H +// Framework include files #include "XML/XMLElements.h" + +// C/C++ include files #include <memory> -/* - * DD4hep namespace declaration - */ + +/// Namespace for the AIDA detector description toolkit namespace DD4hep { - /* - * XML namespace declaration - */ + /// Namespace containing utilities to parse XML files using XercesC or TinyXML namespace XML { // Forward declarations diff --git a/DDCore/src/DetectorTools.cpp b/DDCore/src/DetectorTools.cpp index cb82b05f7..e45b4c2ed 100644 --- a/DDCore/src/DetectorTools.cpp +++ b/DDCore/src/DetectorTools.cpp @@ -20,18 +20,14 @@ // ROOT include files #include "TGeoMatrix.h" -/* - * DD4hep namespace declaration - */ +/// Namespace for the AIDA detector description toolkit namespace DD4hep { - /* - * Geometry namespace declaration - */ + /// Namespace for the geometry part of the AIDA detector description toolkit namespace Geometry { - /** @class Detectortools DetectorTools.h DD4hep/Detectortools.h - * + /// Helper namespace used to answer detector element specific questons + /** * @author M.Frank * @version 1.0 */ diff --git a/DDCore/src/XML/XMLElements.cpp b/DDCore/src/XML/XMLElements.cpp index 6e56ba4d9..246c3a236 100644 --- a/DDCore/src/XML/XMLElements.cpp +++ b/DDCore/src/XML/XMLElements.cpp @@ -53,6 +53,8 @@ namespace { #define appendChild LinkEndChild #define getOwnerDocument GetDocument #define getDocumentElement RootElement + +/// Union to ease castless object access in TinyXML union Xml { Xml(const void* ptr) : p(ptr) {} const void* p; @@ -89,6 +91,8 @@ void DD4hep::XML::XmlString::release(char** p) {if(p && *p) {::free(*p); *p=0;}} #include "xercesc/dom/DOMNodeList.hpp" #include "xercesc/dom/DOM.hpp" #define ELEMENT_NODE_TYPE xercesc::DOMNode::ELEMENT_NODE + +/// Union to ease castless object access when using XercesC union Xml { Xml(const void* ptr) : p(ptr) { diff --git a/DDG4/include/DDG4/ComponentProperties.h b/DDG4/include/DDG4/ComponentProperties.h index b36cff0e4..4e2d0b66f 100644 --- a/DDG4/include/DDG4/ComponentProperties.h +++ b/DDG4/include/DDG4/ComponentProperties.h @@ -19,16 +19,14 @@ #include <string> #include <map> -/* - * DD4hep namespace declaration - */ +/// Namespace for the AIDA detector description toolkit namespace DD4hep { class Property; class BasicGrammar; class PropertyGrammar; - + /// Heler class to configure properties class PropertyConfigurator { protected: virtual ~PropertyConfigurator(); @@ -37,6 +35,7 @@ namespace DD4hep { }; + /// Class describing the grammar representation of a given data type /** @class PropertyGrammar * * @author M.Frank @@ -63,8 +62,8 @@ namespace DD4hep { virtual bool fromString(void* ptr, const std::string& value) const; }; - /** @class Property - * + /// The property class to assign options to actions. + /** * Standard implementation of a property mechanism. * The data conversion mechanism between various properties * uses internally boost::spirit to allow also conversions @@ -124,8 +123,8 @@ namespace DD4hep { template <typename TYPE> void set(const TYPE& value); }; - /** @class PropertyValue - * + /// Concrete template instantiation of a combined property value pair. + /** * @author M.Frank * @date 13.08.2013 */ @@ -166,8 +165,8 @@ namespace DD4hep { } }; - /** @class PropertyManager - * + /// Manager to ease the handling of groups of properties. + /** * @author M.Frank * @date 13.08.2013 */ diff --git a/DDG4/include/DDG4/ComponentUtils.h b/DDG4/include/DDG4/ComponentUtils.h index c569bd50e..fbb23ab26 100644 --- a/DDG4/include/DDG4/ComponentUtils.h +++ b/DDG4/include/DDG4/ComponentUtils.h @@ -13,9 +13,7 @@ #include "DD4hep/Primitives.h" #include "DD4hep/Exceptions.h" -/* - * DD4hep namespace declaration - */ +/// Namespace for the AIDA detector description toolkit namespace DD4hep { diff --git a/DDG4/include/DDG4/Defs.h b/DDG4/include/DDG4/Defs.h index 0f96f99bc..d03756da2 100644 --- a/DDG4/include/DDG4/Defs.h +++ b/DDG4/include/DDG4/Defs.h @@ -12,14 +12,10 @@ // Framework include files #include "DD4hep/LCDD.h" -/* - * DD4hep namespace declaration - */ +/// Namespace for the AIDA detector description toolkit namespace DD4hep { - /* - * Simulation namespace declaration - */ + /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit namespace Simulation { // Forward declarations; @@ -30,8 +26,6 @@ namespace DD4hep { typedef Geometry::Readout Readout; typedef Geometry::DetElement DetElement; - template <class HIT> struct HitCompare; - template <class HIT> struct HitPositionCompare; class Geant4StepHandler; class Geant4Hit; class Geant4TrackerHit; diff --git a/DDG4/include/DDG4/Geant4Data.h b/DDG4/include/DDG4/Geant4Data.h index c5cf525cb..9011e5de7 100644 --- a/DDG4/include/DDG4/Geant4Data.h +++ b/DDG4/include/DDG4/Geant4Data.h @@ -21,59 +21,25 @@ class G4Step; class G4StepPoint; -/* - * DD4hep namespace declaration - */ +/// Namespace for the AIDA detector description toolkit namespace DD4hep { - /* - * Simulation namespace declaration - */ + /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit namespace Simulation { // Forward type definitions typedef ROOT::Math::XYZVector Position; typedef ROOT::Math::XYZVector Direction; - /** @class HitCompare Geant4Data.h DDG4/Geant4Data.h - * - * Base class for hit comparisons. - * - * @author M.Frank - * @version 1.0 - */ - template <class HIT> struct HitCompare { - /// Comparison function - virtual bool operator()(const HIT* h) const = 0; - }; - - /** @class HitPositionCompare Geant4Data.h DDG4/Geant4Data.h - * - * Seek the hits of an arbitrary collection for the same position. - * - * @author M.Frank - * @version 1.0 - */ - template <class HIT> struct HitPositionCompare : public HitCompare<HIT> { - const Position& pos; - /// Constructor - HitPositionCompare(const Position& p) - : pos(p) { - } - /// Comparison function - virtual bool operator()(const HIT* h) const { - return pos == h->position; - } - }; - - /** @class SimpleRun Geant4Data.h DDG4/Geant4Data.h - * + /// Simple run description structure. Used in the default I/O mechanism. + /** * Example class to store the run related information. * * @author M.Frank * @version 1.0 */ - struct SimpleRun { + class SimpleRun { + public: /// Run identifiers int runID; /// Number of events in this run @@ -84,14 +50,15 @@ namespace DD4hep { virtual ~SimpleRun(); }; - /** @class SimpleEvent Geant4Data.h DDG4/Geant4Data.h - * + /// Simple event description structure. Used in the default I/O mechanism. + /** * Example class to store the event related information. * * @author M.Frank * @version 1.0 */ - struct SimpleEvent { + class SimpleEvent { + public: typedef std::vector<long> Seeds; /// Run identifiers int runID; @@ -105,6 +72,7 @@ namespace DD4hep { virtual ~SimpleEvent(); }; + /// Generic user-extendible data extension class. class DataExtension { public: /// Default constructor @@ -113,7 +81,7 @@ namespace DD4hep { virtual ~DataExtension(); }; - /// Base class for geant4 hit structures + /// Base class for geant4 hit structures used by the default DDG4 sensitive detector implementations /* * Base class for geant4 hit structures created by the * example sensitive detectors. This is a generic class @@ -123,15 +91,16 @@ namespace DD4hep { * @author M.Frank * @version 1.0 */ - struct Geant4HitData { + class Geant4HitData { + public: /// cellID long long int cellID; /// User data extension if required std::auto_ptr<DataExtension> extension; - /** @class MonteCarloContrib - */ - struct MonteCarloContrib { + /// Utility class describing the monte carlo contribution of a given particle to a hit. + class MonteCarloContrib { + public: /// Geant 4 Track identifier int trackID; /// Particle ID from the PDG table @@ -199,16 +168,19 @@ namespace DD4hep { static Contribution extractContribution(G4Step* step); }; - struct Geant4Tracker { - /** @class Geant4Tracker::Hit Geant4Data.h DDG4/Geant4Data.h - * + /// Helper class to define structures used by the generic DDG4 tracker sensitive detector + class Geant4Tracker { + public: + /// DDG4 tracker hit class used by the generic DDG4 tracker sensitive detector + /** * Geant4 tracker hit class. Tracker hits contain the momentum * direction as well as the hit position. * * @author M.Frank * @version 1.0 */ - struct Hit : public Geant4HitData { + class Hit : public Geant4HitData { + public: /// Hit position Position position; /// Hit direction @@ -234,16 +206,19 @@ namespace DD4hep { }; }; - struct Geant4Calorimeter { - /** @class Geant4Calorimeter::Hit Geant4Data.h DDG4/Geant4Data.h - * + /// Helper class to define structures used by the generic DDG4 calorimeter sensitive detector + class Geant4Calorimeter { + public: + + /// DDG4 calorimeter hit class used by the generic DDG4 calorimeter sensitive detector + /** * Geant4 tracker hit class. Calorimeter hits contain the momentum * direction as well as the hit position. * * @author M.Frank * @version 1.0 */ - struct Hit : public Geant4HitData { + class Hit : public Geant4HitData { public: /// Hit position Position position; @@ -260,6 +235,8 @@ namespace DD4hep { virtual ~Hit(); }; }; + + /// Backward compatibility definitions typedef Geant4HitData SimpleHit; typedef Geant4Tracker SimpleTracker; typedef Geant4Calorimeter SimpleCalorimeter; diff --git a/DDG4/include/DDG4/Geant4Field.h b/DDG4/include/DDG4/Geant4Field.h index 805beb2eb..aad2b6033 100644 --- a/DDG4/include/DDG4/Geant4Field.h +++ b/DDG4/include/DDG4/Geant4Field.h @@ -16,14 +16,10 @@ #include "G4ElectroMagneticField.hh" #include "G4MagneticField.hh" -/* - * DD4hep namespace declaration - */ +/// Namespace for the AIDA detector description toolkit namespace DD4hep { - /* - * Simulation namespace declaration - */ + /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit namespace Simulation { // Forward declarations @@ -34,7 +30,8 @@ namespace DD4hep { * @author M.Frank * @version 1.0 */ - struct Geant4Field : public G4MagneticField { + class Geant4Field : public G4MagneticField { + protected: /// Reference to the detector description field Geometry::OverlayedField m_field; diff --git a/DDG4/include/DDG4/Geant4Handle.h b/DDG4/include/DDG4/Geant4Handle.h index 5cd67783a..b8f2be8c6 100644 --- a/DDG4/include/DDG4/Geant4Handle.h +++ b/DDG4/include/DDG4/Geant4Handle.h @@ -17,28 +17,23 @@ #include <string> #include <memory> -/* - * DD4hep namespace declaration - */ +/// Namespace for the AIDA detector description toolkit namespace DD4hep { - /* - * Simulation namespace declaration - */ + /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit namespace Simulation { /// Forward declarations class Geant4Kernel; class Geant4Action; + /// Handle to Geant4 actions with built-in creation mechanism /** @class Geant4Handle Geant4Handle.h DDG4/Geant4Handle.h - * - * Handle to Geant4 actions with built-in creation mechanism * * @author M.Frank * @version 1.0 */ - template <typename TYPE> struct Geant4Handle { + template <typename TYPE> class Geant4Handle { protected: void checked_assign(TYPE* p); public: @@ -66,14 +61,14 @@ namespace DD4hep { handled_type* operator->() const; Geant4Action* action() const; }; + + /// Handle to Geant4 actions with built-in creation mechanism /** @class Geant4Handle Geant4Handle.h DDG4/Geant4Handle.h - * - * Handle to Geant4 actions with built-in creation mechanism * * @author M.Frank * @version 1.0 */ - struct KernelHandle { + class KernelHandle { public: typedef Geant4Kernel handled_type; mutable handled_type* value; diff --git a/DDG4/include/DDG4/Geant4HierarchyDump.h b/DDG4/include/DDG4/Geant4HierarchyDump.h index 0ae0a8d7f..6fa0e6c84 100644 --- a/DDG4/include/DDG4/Geant4HierarchyDump.h +++ b/DDG4/include/DDG4/Geant4HierarchyDump.h @@ -26,7 +26,8 @@ namespace DD4hep { */ namespace Simulation { - struct Geant4HierarchyDump { + class Geant4HierarchyDump { + public: typedef Geometry::LCDD LCDD; LCDD& m_lcdd; diff --git a/DDG4/include/DDG4/Geant4HitCollection.h b/DDG4/include/DDG4/Geant4HitCollection.h index 0a642b69c..0a12e0327 100644 --- a/DDG4/include/DDG4/Geant4HitCollection.h +++ b/DDG4/include/DDG4/Geant4HitCollection.h @@ -21,14 +21,10 @@ #include <typeinfo> #include <stdexcept> -/* - * DD4hep namespace declaration - */ +/// Namespace for the AIDA detector description toolkit namespace DD4hep { - /* - * Simulation namespace declaration - */ + /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit namespace Simulation { // Forward declarations @@ -36,6 +32,7 @@ namespace DD4hep { class Geant4HitCollection; class Geant4HitWrapper; + /// Generic wrapper class for hit structures created in Geant4 sensitive detectors /** @class Geant4HitWrapper Geant4HitCollection.h DDG4/Geant4HitCollection.h * * Default base class for all geant 4 created hits. @@ -48,11 +45,14 @@ namespace DD4hep { class Geant4HitWrapper: public G4VHit { private: public: - struct InvalidHit { + /// Helper class to indicate invalid hit wrappers or containers. + class InvalidHit { + public: virtual ~InvalidHit(); }; - struct HitManipulator { + /// Generic type manipulation class for generic hit structures created in Geant4 sensitive detectors + class HitManipulator { public: typedef std::pair<void*, HitManipulator*> Wrapper; #ifdef __CINT__ @@ -157,6 +157,7 @@ namespace DD4hep { } }; + /// Generic hit container class using Geant4HitWrapper objects /** @class Geant4HitCollection Geant4HitCollection.h DDG4/Geant4HitCollection.h * * Opaque hit collection. @@ -175,6 +176,7 @@ namespace DD4hep { /// Hit manipulator typedef Geant4HitWrapper::HitManipulator Manip; + /// Generic class template to compare/select hits in Geant4HitCollection objects /** @class Compare Geant4HitCollection.h DDG4/Geant4HitCollection.h * * Base class for hit comparisons. @@ -182,7 +184,8 @@ namespace DD4hep { * @author M.Frank * @version 1.0 */ - struct Compare { + class Compare { + public: /// Default destructor virtual ~Compare(); /// Comparison function @@ -289,6 +292,7 @@ namespace DD4hep { }; + /// Specialized hit selector based on the hit's position. /** @class PositionCompare Geant4HitCollection.h DDG4/Geant4HitCollection.h * * Class for hit matching using the hit position. @@ -296,7 +300,8 @@ namespace DD4hep { * @author M.Frank * @version 1.0 */ - template<typename TYPE, typename POS> struct PositionCompare : public Geant4HitCollection::Compare { + template<typename TYPE, typename POS> class PositionCompare : public Geant4HitCollection::Compare { + public: const POS& pos; /// Constructor PositionCompare(const POS& p) : pos(p) { } @@ -310,6 +315,7 @@ namespace DD4hep { return pos == h->position ? h : 0; } + /// Specialized hit selector based on the hit's cell identifier. /** @class PositionCompare Geant4HitCollection.h DDG4/Geant4HitCollection.h * * Class for hit matching using the hit's cell identifier. @@ -317,7 +323,8 @@ namespace DD4hep { * @author M.Frank * @version 1.0 */ - template<typename TYPE> struct CellIDCompare : public Geant4HitCollection::Compare { + template<typename TYPE> class CellIDCompare : public Geant4HitCollection::Compare { + public: long long int id; /// Constructor CellIDCompare(long long int i) : id(i) { } diff --git a/DDG4/include/DDG4/Geant4Hits.h b/DDG4/include/DDG4/Geant4Hits.h index 9a389e0ea..451fd6226 100644 --- a/DDG4/include/DDG4/Geant4Hits.h +++ b/DDG4/include/DDG4/Geant4Hits.h @@ -18,40 +18,33 @@ #include "G4Step.hh" #include "G4StepPoint.hh" -/* - * DD4hep namespace declaration - */ +/// Namespace for the AIDA detector description toolkit namespace DD4hep { - /* - * Simulation namespace declaration - */ + /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit namespace Simulation { // Forward declarations; - template <class HIT> struct HitCompare; - template <class HIT> struct HitPositionCompare; class Geant4Hit; class Geant4TrackerHit; class Geant4CalorimeterHit; + /// Deprecated: Base class for hit comparisons. /** @class HitCompare Geant4Hits.h DDG4/Geant4Hits.h - * - * Base class for hit comparisons. * * @author M.Frank * @version 1.0 */ - template <class HIT> struct HitCompare { + template <class HIT> class HitCompare { + public: /// Default destructor virtual ~HitCompare() {} /// Comparison function virtual bool operator()(const HIT* h) const = 0; }; + /// Deprecated: Seek the hits of an arbitrary collection for the same position. /** @class HitPositionCompare Geant4Hits.h DDG4/Geant4Hits.h - * - * Seek the hits of an arbitrary collection for the same position. * * @author M.Frank * @version 1.0 @@ -70,6 +63,7 @@ namespace DD4hep { } }; + /// Deprecated: basic geant4 hit class for deprecated sensitive detectors /** @class Geant4Hit Geant4Hits.h DDG4/Geant4Hits.h * * Geant4 hit base class. Here only the basic @@ -85,6 +79,7 @@ namespace DD4hep { // cellID unsigned long cellID; + /// Deprecated!!! struct MonteCarloContrib { /// Geant 4 Track identifier int trackID; @@ -137,6 +132,7 @@ namespace DD4hep { static Contribution extractContribution(G4Step* step); }; + /// Deprecated: Geant4 tracker hit class for deprecated sensitive detectors /** @class Geant4TrackerHit Geant4Hits.h DDG4/Geant4Hits.h * * Geant4 tracker hit class. Tracker hits contain the momentum @@ -179,9 +175,10 @@ namespace DD4hep { void operator delete(void *ptr); }; + /// Deprecated: Geant4 calorimeter hit class for deprecated sensitive detectors /** @class Geant4CalorimeterHit Geant4Hits.h DDG4/Geant4Hits.h * - * Geant4 tracker hit class. Calorimeter hits contain the momentum + * Geant4 calorimeter hit class. Calorimeter hits contain the momentum * direction as well as the hit position. * * @author M.Frank diff --git a/DDG4/include/DDG4/Geant4InputAction.h b/DDG4/include/DDG4/Geant4InputAction.h index ca34c3b35..37a9823b3 100644 --- a/DDG4/include/DDG4/Geant4InputAction.h +++ b/DDG4/include/DDG4/Geant4InputAction.h @@ -17,16 +17,13 @@ // Forward declarations class G4Event; -/* - * DD4hep namespace declaration - */ +/// Namespace for the AIDA detector description toolkit namespace DD4hep { - /* - * Simulation namespace declaration - */ + /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit namespace Simulation { + /// Basic geant4 event reader class. This interface/base-class must be implemented by concrete readers. /** @class Geant4EventReader Geant4EventReader.h DDG4/Geant4EventReader.h * * Base class to read input files containing simulation data. @@ -58,6 +55,7 @@ namespace DD4hep { virtual int readParticles(int event_number, std::vector<Particle*>& particles) = 0; }; + /// Generic input action capable of using the Geant4EventReader class. /** @class Geant4InputAction Geant4InputAction.h DDG4/Geant4InputAction.h * * Concrete implementation of the Geant4 generator action base class @@ -102,7 +100,7 @@ namespace DD4hep { #include "DD4hep/Plugins.h" namespace { - /// Factory to create Geant4 physics constructions + /// Factory template to create Geant4 event reader objects template <typename P> class Factory<P, DD4hep::Simulation::Geant4EventReader*(std::string)> { public: static void Func(void *ret, void*, const std::vector<void*>& a, void*) { *(DD4hep::Simulation::Geant4EventReader**)ret = (DD4hep::Simulation::Geant4EventReader*)new P(*(std::string*)a[0]);} diff --git a/DDG4/include/DDG4/Geant4InputHandling.h b/DDG4/include/DDG4/Geant4InputHandling.h index e6779249f..570b4688e 100644 --- a/DDG4/include/DDG4/Geant4InputHandling.h +++ b/DDG4/include/DDG4/Geant4InputHandling.h @@ -14,14 +14,10 @@ // Forward declarations class G4Event; -/* - * DD4hep namespace declaration - */ +/// Namespace for the AIDA detector description toolkit namespace DD4hep { - /* - * Simulation namespace declaration - */ + /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit namespace Simulation { // Forward declarations diff --git a/DDG4/include/DDG4/Geant4InteractionMerger.h b/DDG4/include/DDG4/Geant4InteractionMerger.h index a71fa1a74..5ea520561 100644 --- a/DDG4/include/DDG4/Geant4InteractionMerger.h +++ b/DDG4/include/DDG4/Geant4InteractionMerger.h @@ -12,19 +12,16 @@ // Framework include files #include "DDG4/Geant4GeneratorAction.h" -/* - * DD4hep namespace declaration - */ +/// Namespace for the AIDA detector description toolkit namespace DD4hep { - /* - * Simulation namespace declaration - */ + /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit namespace Simulation { // Forward declarations class Geant4PrimaryInteraction; + /// Geant4Action to merge several independent interaction to one /** Geant4Action to convert the particle information to Geant4 * * @author M.Frank diff --git a/DDG4/include/DDG4/Geant4InteractionVertexBoost.h b/DDG4/include/DDG4/Geant4InteractionVertexBoost.h index fd2017763..ef20db2c6 100644 --- a/DDG4/include/DDG4/Geant4InteractionVertexBoost.h +++ b/DDG4/include/DDG4/Geant4InteractionVertexBoost.h @@ -15,24 +15,23 @@ // ROOT include files #include "Math/Vector4D.h" -/* - * DD4hep namespace declaration - */ +/// Namespace for the AIDA detector description toolkit namespace DD4hep { - /* - * Simulation namespace declaration - */ + /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit namespace Simulation { - /// Generate particles isotrop in space around origine (0,0,0) + + /// Action class to boost the primary vertex (and all outgoing particles) of a single interaction /** + * The vertex smearing is steered by the Lorentz transformation angle. + * The interaction to be modified is identified by the interaction's unique mask. * * @author M.Frank * @version 1.0 */ class Geant4InteractionVertexBoost: public Geant4GeneratorAction { protected: - /// The constant Lorentz transformation angle + /// Property: The constant Lorentz transformation angle double m_angle; /// Property: Unique identifier of the interaction to be modified int m_mask; diff --git a/DDG4/include/DDG4/Geant4InteractionVertexSmear.h b/DDG4/include/DDG4/Geant4InteractionVertexSmear.h index 76cebb4df..69f9c7017 100644 --- a/DDG4/include/DDG4/Geant4InteractionVertexSmear.h +++ b/DDG4/include/DDG4/Geant4InteractionVertexSmear.h @@ -15,26 +15,26 @@ // ROOT include files #include "Math/Vector4D.h" -/* - * DD4hep namespace declaration - */ +/// Namespace for the AIDA detector description toolkit namespace DD4hep { - /* - * Simulation namespace declaration - */ + /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit namespace Simulation { - /// Generate particles isotrop in space around origine (0,0,0) + + /// Action class to smear the primary vertex (and all outgoing particles) of a single interaction /** + * The vertex smearing is steered by a 3D gaussian given by a constant offset and + * the corresponding errors. The interaction to be modified is identified by the + * interaction's unique mask. * * @author M.Frank * @version 1.0 */ class Geant4InteractionVertexSmear: public Geant4GeneratorAction { protected: - /// The constant smearing offset + /// Property: The constant smearing offset ROOT::Math::PxPyPzEVector m_offset; - /// The gaussian sigmas to the offset + /// Property: The gaussian sigmas to the offset ROOT::Math::PxPyPzEVector m_sigma; /// Property: Unique identifier of the interaction created int m_mask; diff --git a/DDG4/include/DDG4/Geant4IsotropeGenerator.h b/DDG4/include/DDG4/Geant4IsotropeGenerator.h index 0fa7ba5e0..e1b56c736 100644 --- a/DDG4/include/DDG4/Geant4IsotropeGenerator.h +++ b/DDG4/include/DDG4/Geant4IsotropeGenerator.h @@ -15,14 +15,10 @@ // Forward declarations class G4ParticleDefinition; -/* - * DD4hep namespace declaration - */ +/// Namespace for the AIDA detector description toolkit namespace DD4hep { - /* - * Simulation namespace declaration - */ + /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit namespace Simulation { /// Generate particles isotrop in space around origine (0,0,0) /** diff --git a/DDG4/include/DDG4/Geant4Kernel.h b/DDG4/include/DDG4/Geant4Kernel.h index 69001fde0..234f2377b 100644 --- a/DDG4/include/DDG4/Geant4Kernel.h +++ b/DDG4/include/DDG4/Geant4Kernel.h @@ -23,14 +23,10 @@ class G4RunManager; class G4UIdirectory; -/* - * DD4hep namespace declaration - */ +/// Namespace for the AIDA detector description toolkit namespace DD4hep { - /* - * Simulation namespace declaration - */ + /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit namespace Simulation { // Forward declarations @@ -54,9 +50,9 @@ namespace DD4hep { class Geant4SensDetActionSequence; class Geant4SensDetSequences; + /// Class, which allows all Geant4Action derivatives to access the DDG4 kernel structures. /** @class Invoke Geant4Kernel.h DDG4/Geant4Kernel.h * - * Default base class for all geant 4 actions and derivates thereof. * * @author M.Frank * @version 1.0 @@ -120,14 +116,14 @@ namespace DD4hep { Geant4Kernel(LCDD& lcdd); public: + /// Embedded helper class to facilitate map access to the phases. /** @class PhaseSelector Geant4Kernel.h DDG4/Geant4Kernel.h - * - * Embedded helper class to facilitate map access to the phases. * * @author M.Frank * @version 1.0 */ - struct PhaseSelector { + class PhaseSelector { + public: /// Reference to embedding object Geant4Kernel* m_kernel; /// Standard constructor @@ -312,11 +308,17 @@ namespace DD4hep { m_properties.add(nam, val); return *this; } - - struct Geant4Exec { + + /// Main executor steering the Geant4 execution + class Geant4Exec { + public: + /// Configure the application static int configure(Geant4Kernel& kernel); + /// Initialize the application static int initialize(Geant4Kernel& kernel); + /// Run the application and simulate events static int run(Geant4Kernel& kernel); + /// Terminate the application static int terminate(Geant4Kernel& kernel); }; diff --git a/DDG4/include/DDG4/Geant4Mapping.h b/DDG4/include/DDG4/Geant4Mapping.h index 46fdcf4df..1efd0714d 100644 --- a/DDG4/include/DDG4/Geant4Mapping.h +++ b/DDG4/include/DDG4/Geant4Mapping.h @@ -6,8 +6,8 @@ // Author : M.Frank // //==================================================================== -#ifndef DD4HEP_GEANT4MAPPING_H -#define DD4HEP_GEANT4MAPPING_H +#ifndef DD4HEP_DDG4_GEANT4MAPPING_H +#define DD4HEP_DDG4_GEANT4MAPPING_H // Framework include files #include "DD4hep/LCDD.h" @@ -15,19 +15,14 @@ #include "DDG4/Geant4GeometryInfo.h" #include "DDG4/Geant4VolumeManager.h" -/* - * DD4hep namespace declaration - */ +/// Namespace for the AIDA detector description toolkit namespace DD4hep { - /* - * Simulation namespace declaration - */ + /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit namespace Simulation { + /// Geometry mapping from DD4hep to Geant 4. /** @class Geant4Mapping Geant4Mapping.h DDG4/Geant4Mapping.h - * - * Geometry mapping from DD4hep to Geant 4. * * @author M.Frank * @version 1.0 @@ -90,4 +85,4 @@ namespace DD4hep { } // End namespace Simulation } // End namespace DD4hep -#endif // DD4HEP_GEANT4MAPPING_H +#endif // DD4HEP_DDG4_GEANT4MAPPING_H diff --git a/DDG4/include/DDG4/Geant4MonteCarloTruth.h b/DDG4/include/DDG4/Geant4MonteCarloTruth.h index 860173ba4..c637fd09f 100644 --- a/DDG4/include/DDG4/Geant4MonteCarloTruth.h +++ b/DDG4/include/DDG4/Geant4MonteCarloTruth.h @@ -33,9 +33,8 @@ namespace DD4hep { // Forward declarations class Geant4Particle; + /// Default Interface class to handle monte carlo truth records /** @class Geant4MonteCarloTruth Geant4MonteCarloTruth.h DDG4/Geant4MonteCarloTruth.h - * - * Default Interface class to handle monte carlo truth records * * @author M.Frank * @version 1.0 diff --git a/DDG4/include/DDG4/Geant4OutputAction.h b/DDG4/include/DDG4/Geant4OutputAction.h index b52f0a510..9f438f06c 100644 --- a/DDG4/include/DDG4/Geant4OutputAction.h +++ b/DDG4/include/DDG4/Geant4OutputAction.h @@ -17,18 +17,15 @@ class G4Run; class G4Event; class G4VHitsCollection; -/* - * DD4hep namespace declaration - */ + +/// Namespace for the AIDA detector description toolkit namespace DD4hep { - /* - * Simulation namespace declaration - */ + + /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit namespace Simulation { + /// Base class to output Geant4 event data to persistent media /** @class Geant4OutputAction Geant4OutputAction.h DDG4/Geant4OutputAction.h - * - * Base class to output Geant4 event data to media * * @author M.Frank * @version 1.0 @@ -36,7 +33,7 @@ namespace DD4hep { class Geant4OutputAction: public Geant4EventAction { protected: /// Helper class for thread savety - template <typename T> struct OutputContext { + template <typename T> class OutputContext { public: const T* context; void* userData; diff --git a/DDG4/include/DDG4/Geant4Particle.h b/DDG4/include/DDG4/Geant4Particle.h index dc7d7de81..fc3fa3399 100644 --- a/DDG4/include/DDG4/Geant4Particle.h +++ b/DDG4/include/DDG4/Geant4Particle.h @@ -23,19 +23,16 @@ class G4VProcess; #include <map> #include <memory> -/* - * DD4hep namespace declaration - */ +/// Namespace for the AIDA detector description toolkit namespace DD4hep { - /* - * Simulation namespace declaration - */ + /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit namespace Simulation { // Forward declarations class Geant4Particle; + /// Base class to extend the basic particle class used by DDG4 with user information class ParticleExtension { public: /// Default constructor @@ -136,7 +133,7 @@ namespace DD4hep { #ifndef __DDG4_STANDALONE_DICTIONARIES__ - /// Data structure to access MC particle information + /// Data structure to access derived MC particle information /** * @author M.Frank * @version 1.0 diff --git a/DDG4/include/DDG4/Geant4ParticleGun.h b/DDG4/include/DDG4/Geant4ParticleGun.h index 17750f03b..0e4deacf1 100644 --- a/DDG4/include/DDG4/Geant4ParticleGun.h +++ b/DDG4/include/DDG4/Geant4ParticleGun.h @@ -15,19 +15,14 @@ // Forward declarations class G4ParticleDefinition; -/* - * DD4hep namespace declaration - */ +/// Namespace for the AIDA detector description toolkit namespace DD4hep { - /* - * Simulation namespace declaration - */ + /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit namespace Simulation { + /// Implementation of a particle gun using Geant4Particles. /** @class Geant4ParticleGun Geant4ParticleGun.h DDG4/Geant4ParticleGun.h - * - * Implementation wrapper of the Geant4 particle gun * * @author M.Frank * @version 1.0 diff --git a/DDG4/include/DDG4/Geant4ParticleHandler.h b/DDG4/include/DDG4/Geant4ParticleHandler.h index f28154e9e..3a48615a4 100644 --- a/DDG4/include/DDG4/Geant4ParticleHandler.h +++ b/DDG4/include/DDG4/Geant4ParticleHandler.h @@ -20,14 +20,10 @@ class G4Track; class G4Event; class G4SteppingManager; -/* - * DD4hep namespace declaration - */ +/// Namespace for the AIDA detector description toolkit namespace DD4hep { - /* - * Simulation namespace declaration - */ + /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit namespace Simulation { // Forward declarations @@ -35,8 +31,8 @@ namespace DD4hep { class Geant4PrimaryMap; class Geant4UserParticleHandler; - /** Geant4Action to collect the MC particle information. - * + /// Geant4Action to collect the MC particle information. + /** * Extract the relevant particle information during the simulation step. * * @author M.Frank @@ -55,9 +51,11 @@ namespace DD4hep { public: typedef std::vector<std::string> Processes; - struct FindParticleByID { + class FindParticleByID { + protected: int pid; - FindParticleByID(int p) : pid(p) {} + public: + FindParticleByID(int p) : pid(p) {} inline bool operator()(const std::pair<int,Geant4Particle*>& p) const { return p.second->id == pid; } diff --git a/DDG4/include/DDG4/Geant4ParticlePrint.h b/DDG4/include/DDG4/Geant4ParticlePrint.h index 808ef2e5d..0a84b94af 100644 --- a/DDG4/include/DDG4/Geant4ParticlePrint.h +++ b/DDG4/include/DDG4/Geant4ParticlePrint.h @@ -17,18 +17,14 @@ // Forward declarations class G4Event; -/* - * DD4hep namespace declaration - */ +/// Namespace for the AIDA detector description toolkit namespace DD4hep { - /* - * Simulation namespace declaration - */ + /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit namespace Simulation { - /** Geant4Action to collect the MC particle information. - * + /// Geant4Action to print MC particle information. + /** * * @author M.Frank * @version 1.0 diff --git a/DDG4/include/DDG4/Geant4PhysicsList.h b/DDG4/include/DDG4/Geant4PhysicsList.h index a987c9c8c..784a55c22 100644 --- a/DDG4/include/DDG4/Geant4PhysicsList.h +++ b/DDG4/include/DDG4/Geant4PhysicsList.h @@ -19,19 +19,15 @@ // Forward declarations class G4VPhysicsConstructor; -/* - * DD4hep namespace declaration - */ +/// Namespace for the AIDA detector description toolkit namespace DD4hep { - /* - * Simulation namespace declaration - */ + /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit namespace Simulation { + /// Interface class exposing some of the G4VUserPhysicsList class. /** @class Geant4UserPhysics Geant4PhysicsList.h DDG4/Geant4PhysicsList.h * - * Interface class exposing some of the G4VUserPhysicsList class. * * @author M.Frank * @version 1.0 @@ -49,9 +45,8 @@ namespace DD4hep { virtual void RegisterPhysics(G4VPhysicsConstructor* physics) = 0; }; + /// Concrete basic implementation of a Geant4 physics list action /** @class Geant4PhysicsList Geant4PhysicsList.h DDG4/Geant4PhysicsList.h - * - * Concrete basic implementation of the Geant4 event action * * @author M.Frank * @version 1.0 @@ -59,6 +54,7 @@ namespace DD4hep { class Geant4PhysicsList: public Geant4Action { public: + /// Structure describing a G4 process /** @class PhysicsConstructor Geant4PhysicsList.h DDG4/Geant4PhysicsList.h * * Image of a physics constructor holding all stub information to attach @@ -67,7 +63,8 @@ namespace DD4hep { * @author M.Frank * @version 1.0 */ - struct Process { + class Process { + public: std::string name; int ordAtRestDoIt, ordAlongSteptDoIt, ordPostStepDoIt; /// Default constructor @@ -80,25 +77,35 @@ namespace DD4hep { typedef std::vector<Process> ParticleProcesses; typedef std::map<std::string, ParticleProcesses> PhysicsProcesses; - struct ParticleConstructor: public std::string { + /// Structure describing a G4 particle constructor + class ParticleConstructor: public std::string { + public: + /// Default constructor ParticleConstructor() : std::string() { } + /// Initalizing constructor ParticleConstructor(const std::string& s) : std::string(s) { } + /// Default destructor ~ParticleConstructor() { } }; typedef std::vector<ParticleConstructor> ParticleConstructors; - struct PhysicsConstructor: public std::string { + /// Structure describing a G4 physics constructor + class PhysicsConstructor: public std::string { + public: + /// Default constructor PhysicsConstructor() : std::string() { } + /// Initalizing constructor PhysicsConstructor(const std::string& s) : std::string(s) { } + /// Default destructor ~PhysicsConstructor() { } }; @@ -165,6 +172,7 @@ namespace DD4hep { virtual void constructProcesses(Geant4UserPhysics* physics); }; + /// The implementation of the single Geant4 physics list action sequence /** @class Geant4PhysicsListActionSequence Geant4Action.h DDG4/Geant4Action.h * * Concrete implementation of the Geant4 physics list sequence. diff --git a/DDG4/include/DDG4/Geant4Primary.h b/DDG4/include/DDG4/Geant4Primary.h index 98628ebb4..8c2cd18ed 100644 --- a/DDG4/include/DDG4/Geant4Primary.h +++ b/DDG4/include/DDG4/Geant4Primary.h @@ -22,20 +22,17 @@ // Forward declarations class G4PrimaryParticle; -/* - * DD4hep namespace declaration - */ +/// Namespace for the AIDA detector description toolkit namespace DD4hep { - /* - * Simulation namespace declaration - */ + /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit namespace Simulation { // Forward declarations class Geant4Particle; class Geant4Vertex; + /// Base structure to extend primary information with user data class PrimaryExtension { public: /// Default constructor diff --git a/DDG4/include/DDG4/Geant4PrimaryHandler.h b/DDG4/include/DDG4/Geant4PrimaryHandler.h index 0b6873257..b8b4a797a 100644 --- a/DDG4/include/DDG4/Geant4PrimaryHandler.h +++ b/DDG4/include/DDG4/Geant4PrimaryHandler.h @@ -12,18 +12,14 @@ // Framework include files #include "DDG4/Geant4GeneratorAction.h" -/* - * DD4hep namespace declaration - */ +/// Namespace for the AIDA detector description toolkit namespace DD4hep { - /* - * Simulation namespace declaration - */ + /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit namespace Simulation { - /** Geant4Action to convert the particle information to Geant4 - * + /// Geant4Action to convert the particle information to Geant4 + /** * @author M.Frank * @version 1.0 */ diff --git a/DDG4/include/DDG4/Geant4Primitives.h b/DDG4/include/DDG4/Geant4Primitives.h index ae8199cbf..ccb0e5681 100644 --- a/DDG4/include/DDG4/Geant4Primitives.h +++ b/DDG4/include/DDG4/Geant4Primitives.h @@ -14,14 +14,10 @@ /// Geant 4 forward declarations -/* - * DD4hep namespace declaration - */ +/// Namespace for the AIDA detector description toolkit namespace DD4hep { - /* - * Simulation namespace declaration - */ + /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit namespace Simulation { } // End namespace Simulation diff --git a/DDG4/include/DDG4/Geant4Random.h b/DDG4/include/DDG4/Geant4Random.h index 29b5d3dc8..714c4eee6 100644 --- a/DDG4/include/DDG4/Geant4Random.h +++ b/DDG4/include/DDG4/Geant4Random.h @@ -13,14 +13,10 @@ // C/C++ include files -/* - * DD4hep namespace declaration - */ +/// Namespace for the AIDA detector description toolkit namespace DD4hep { - /* - * Simulation namespace declaration - */ + /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit namespace Simulation { // Forward declarations diff --git a/DDG4/include/DDG4/Geant4RunAction.h b/DDG4/include/DDG4/Geant4RunAction.h index dbf68a355..7e36d7c62 100644 --- a/DDG4/include/DDG4/Geant4RunAction.h +++ b/DDG4/include/DDG4/Geant4RunAction.h @@ -15,18 +15,14 @@ // Forward declaration class G4Run; -/* - * DD4hep namespace declaration - */ +/// Namespace for the AIDA detector description toolkit namespace DD4hep { - /* - * Simulation namespace declaration - */ + + /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit namespace Simulation { + /// Concrete basic implementation of the Geant4 run action base class. /** @class Geant4RunAction Geant4RunAction.h DDG4/Geant4RunAction.h - * - * Concrete basic implementation of the Geant4 run action * * The Run Action is called once per start and end of a run. * i.e. a series of generated events. These two callbacks @@ -48,6 +44,7 @@ namespace DD4hep { virtual void end(const G4Run* run); }; + /// Concrete basic implementation of the Geant4 run action sequencer. /** @class Geant4RunActionSequence Geant4RunAction.h DDG4/Geant4RunAction.h * * Concrete implementation of the Geant4 run action sequence. diff --git a/DDG4/include/DDG4/Geant4SensDetAction.h b/DDG4/include/DDG4/Geant4SensDetAction.h index 86107bbc0..9cd797dfd 100644 --- a/DDG4/include/DDG4/Geant4SensDetAction.h +++ b/DDG4/include/DDG4/Geant4SensDetAction.h @@ -25,9 +25,7 @@ class G4TouchableHistory; class G4VHitsCollection; class G4VReadOutGeometry; -/* - * DD4hep namespace declaration - */ +/// Namespace for the AIDA detector description toolkit namespace DD4hep { // Forward declarations @@ -36,9 +34,7 @@ namespace DD4hep { class DetElement; } - /* - * Simulation namespace declaration - */ + /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit namespace Simulation { // Forward declarations @@ -48,12 +44,13 @@ namespace DD4hep { class Geant4SensDetActionSequence; class Geant4SensDetSequences; - /** @class Geant4ActionSD Geant4SensDetAction.h DDG4/Geant4SensDetAction.h + /// Interface class to access properties of the underlying Geant4 sensitive detector structure + /** * * @author M.Frank * @version 1.0 */ - struct Geant4ActionSD: virtual public Geant4Action { + class Geant4ActionSD: virtual public Geant4Action { protected: /// Standard action constructor Geant4ActionSD(const std::string& name); @@ -74,12 +71,13 @@ namespace DD4hep { virtual std::string fullPath() const = 0; }; + /// Base class to construct filters for Geant4 sensitive detectors /** @class Geant4Filter Geant4SensDetAction.h DDG4/Geant4SensDetAction.h * * @author M.Frank * @version 1.0 */ - struct Geant4Filter: public Geant4Action { + class Geant4Filter: public Geant4Action { public: /// Standard constructor Geant4Filter(Geant4Context* context, const std::string& name); @@ -89,6 +87,7 @@ namespace DD4hep { virtual bool operator()(const G4Step* step) const; }; + /// The base class for Geant4 sensitive detector actions implemented by users /** @class Geant4Sensitive Geant4SensDetAction.h DDG4/Geant4SensDetAction.h * * @author M.Frank @@ -247,6 +246,7 @@ namespace DD4hep { }; + /// The sequencer to host Geant4 sensitive actions called if particles interact with sensitive elements /** @class Geant4SensDetActionSequence Geant4SensDetAction.h DDG4/Geant4SensDetAction.h * * Concrete implementation of the sensitive detector action sequence @@ -369,6 +369,7 @@ namespace DD4hep { virtual void clear(); }; + /// Geant4SensDetSequences: class to access groups of sensitive actions /** @class Geant4SensDetActionSequences Geant4SensDetAction.h DDG4/Geant4SensDetAction.h * * Concrete implementation of the sensitive detector action sequence @@ -411,6 +412,7 @@ namespace DD4hep { return sequence().defineCollection<TYPE>(this, coll_name); } + /// Template class to ease the construction of sensitive detectors using particle template specialization /** @class Geant4SensitiveAction Geant4SensDetAction.h DDG4/Geant4SensDetAction.h * * Templated implementation to realize sensitive detectors. diff --git a/DDG4/include/DDG4/Geant4SensitiveDetector.h b/DDG4/include/DDG4/Geant4SensitiveDetector.h index 2b84108e1..d3bc80652 100644 --- a/DDG4/include/DDG4/Geant4SensitiveDetector.h +++ b/DDG4/include/DDG4/Geant4SensitiveDetector.h @@ -22,23 +22,21 @@ #include <algorithm> -/* - * DD4hep namespace declaration - */ +/// Namespace for the AIDA detector description toolkit namespace DD4hep { - /* - * Simulation namespace declaration - */ + /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit namespace Simulation { // Forward declarations class Geant4StepHandler; class Geant4SensitiveDetector; + /// Deprecated: Example G4VSensitiveDetector implementation. /** @class Geant4SensitiveDetector Geant4SensitiveDetector.h DDG4/Geant4SensitiveDetector.h - * Example G4VSensitiveDetector implementation. * + * \deprecated{Deprecated class. Not supported by the DDG4 kernel.} + * * @author M.Frank * @version 1.0 */ @@ -163,8 +161,6 @@ namespace DD4hep { virtual bool buildHits(G4Step* step,G4TouchableHistory* history); }; - - } // End namespace Simulation } // End namespace DD4hep diff --git a/DDG4/include/DDG4/Geant4StackingAction.h b/DDG4/include/DDG4/Geant4StackingAction.h index 9ee3a1888..b560c1244 100644 --- a/DDG4/include/DDG4/Geant4StackingAction.h +++ b/DDG4/include/DDG4/Geant4StackingAction.h @@ -12,19 +12,14 @@ // Framework include files #include "DDG4/Geant4Action.h" -/* - * DD4hep namespace declaration - */ +/// Namespace for the AIDA detector description toolkit namespace DD4hep { - /* - * Simulation namespace declaration - */ + /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit namespace Simulation { + /// Concrete implementation of the Geant4 stacking action base class /** @class Geant4StackingAction Geant4Action.h DDG4/Geant4Action.h - * - * Concrete implementation of the Geant4 stacking action base class * * @author M.Frank * @version 1.0 @@ -43,9 +38,8 @@ namespace DD4hep { } }; + /// Concrete implementation of the Geant4 stacking action sequence /** @class Geant4StackingActionSequence Geant4Action.h DDG4/Geant4Action.h - * - * Concrete implementation of the Geant4 stacking action sequence * * The sequence dispatches the callbacks for each stepping action * to all registered Geant4StackingAction members and all diff --git a/DDG4/include/DDG4/Geant4StepHandler.h b/DDG4/include/DDG4/Geant4StepHandler.h index 9539f3018..bfdd55f0a 100644 --- a/DDG4/include/DDG4/Geant4StepHandler.h +++ b/DDG4/include/DDG4/Geant4StepHandler.h @@ -18,19 +18,17 @@ #include "G4VTouchable.hh" #include "G4VSensitiveDetector.hh" -/* - * DD4hep namespace declaration - */ + +/// Namespace for the AIDA detector description toolkit namespace DD4hep { - /* - * Simulation namespace declaration - */ + /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit namespace Simulation { // Forward declarations; class Geant4StepHandler; + /// Helper class to ease the extraction of information from a G4Step object. /** @class Geant4StepHandler Geant4SensitiveDetector.h DDG4/Geant4SensitiveDetector.h * * Tiny helper/utility class to easily access Geant4 step information. diff --git a/DDG4/include/DDG4/Geant4TestActions.h b/DDG4/include/DDG4/Geant4TestActions.h index 2de9dce08..4e2005548 100644 --- a/DDG4/include/DDG4/Geant4TestActions.h +++ b/DDG4/include/DDG4/Geant4TestActions.h @@ -21,14 +21,10 @@ #include "DDG4/Geant4ActionPhase.h" #include "DDG4/Geant4SensDetAction.h" -/* - * DD4hep namespace declaration - */ +/// Namespace for the AIDA detector description toolkit namespace DD4hep { - /* - * Simulation namespace declaration - */ + /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit namespace Simulation { namespace Test { @@ -57,7 +53,8 @@ namespace DD4hep { * @author M.Frank * @version 1.0 */ - struct Geant4TestGeneratorAction: public Geant4GeneratorAction, public Geant4TestBase { + class Geant4TestGeneratorAction: public Geant4GeneratorAction, public Geant4TestBase { + public: /// Standard constructor with initializing arguments Geant4TestGeneratorAction(Geant4Context* c, const std::string& n); /// Default destructor @@ -71,7 +68,8 @@ namespace DD4hep { * @author M.Frank * @version 1.0 */ - struct Geant4TestRunAction: public Geant4RunAction, public Geant4TestBase { + class Geant4TestRunAction: public Geant4RunAction, public Geant4TestBase { + public: /// Standard constructor with initializing arguments Geant4TestRunAction(Geant4Context* c, const std::string& n); /// Default destructor @@ -91,7 +89,8 @@ namespace DD4hep { * @author M.Frank * @version 1.0 */ - struct Geant4TestEventAction: public Geant4EventAction, public Geant4TestBase { + class Geant4TestEventAction: public Geant4EventAction, public Geant4TestBase { + public: /// Standard constructor with initializing arguments Geant4TestEventAction(Geant4Context* c, const std::string& n); /// Default destructor @@ -111,7 +110,8 @@ namespace DD4hep { * @author M.Frank * @version 1.0 */ - struct Geant4TestTrackAction: public Geant4TrackingAction, public Geant4TestBase { + class Geant4TestTrackAction: public Geant4TrackingAction, public Geant4TestBase { + public: /// Standard constructor with initializing arguments Geant4TestTrackAction(Geant4Context* c, const std::string& n); /// Default destructor @@ -127,7 +127,8 @@ namespace DD4hep { * @author M.Frank * @version 1.0 */ - struct Geant4TestStepAction: public Geant4SteppingAction, public Geant4TestBase { + class Geant4TestStepAction: public Geant4SteppingAction, public Geant4TestBase { + public: /// Standard constructor with initializing arguments Geant4TestStepAction(Geant4Context* c, const std::string& n); /// Default destructor @@ -141,8 +142,10 @@ namespace DD4hep { * @author M.Frank * @version 1.0 */ - struct Geant4TestSensitive: public Geant4Sensitive, public Geant4TestBase { + class Geant4TestSensitive: public Geant4Sensitive, public Geant4TestBase { + protected: size_t m_collectionID; + public: /// Standard constructor with initializing arguments Geant4TestSensitive(Geant4Context* c, const std::string& n, DetElement det, LCDD& lcdd); /// Default destructor diff --git a/DDG4/include/DDG4/Geant4TouchableHandler.h b/DDG4/include/DDG4/Geant4TouchableHandler.h index faf050b57..04b226d4c 100644 --- a/DDG4/include/DDG4/Geant4TouchableHandler.h +++ b/DDG4/include/DDG4/Geant4TouchableHandler.h @@ -18,19 +18,16 @@ class G4VPhysicalVolume; class G4VTouchable; class G4Step; -/* - * DD4hep namespace declaration - */ +/// Namespace for the AIDA detector description toolkit namespace DD4hep { - /* - * Simulation namespace declaration - */ + /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit namespace Simulation { // Forward declarations; class Geant4TouchableHandler; + /// Helper class to ease the extraction of information from a G4Touchable object. /** @class Geant4TouchableHandler Geant4SensitiveDetector.h DDG4/Geant4SensitiveDetector.h * * Tiny helper/utility class to easily access Geant4 touchable information. diff --git a/DDG4/include/DDG4/Geant4TrackHandler.h b/DDG4/include/DDG4/Geant4TrackHandler.h index 35e93a04b..ce1636565 100644 --- a/DDG4/include/DDG4/Geant4TrackHandler.h +++ b/DDG4/include/DDG4/Geant4TrackHandler.h @@ -26,19 +26,17 @@ class G4VTouchableHandle; class G4VUserTrackInformation; -/* - * DD4hep namespace declaration - */ + +/// Namespace for the AIDA detector description toolkit namespace DD4hep { - /* - * Simulation namespace declaration - */ + /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit namespace Simulation { // Forward declarations; class Geant4TrackHandler; + /// Helper class to ease the extraction of information from a G4Track object. /** @class Geant4TrackHandler Geant4SensitiveDetector.h DDG4/Geant4SensitiveDetector.h * * Tiny helper/utility class to easily access Geant4 track information. diff --git a/DDG4/include/DDG4/Geant4TrackingAction.h b/DDG4/include/DDG4/Geant4TrackingAction.h index 84a1502b2..9d57b66f6 100644 --- a/DDG4/include/DDG4/Geant4TrackingAction.h +++ b/DDG4/include/DDG4/Geant4TrackingAction.h @@ -16,22 +16,17 @@ class G4TrackingManager; class G4Track; -/* - * DD4hep namespace declaration - */ +/// Namespace for the AIDA detector description toolkit namespace DD4hep { - /* - * Simulation namespace declaration - */ + /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit namespace Simulation { // Forward declarations class Geant4TrackInformation; + /// Default base class for all geant 4 tracking actions used in DDG4. /** @class Geant4TrackingAction Geant4Action.h DDG4/Geant4Action.h - * - * Default base class for all geant 4 tracking actions. * * @author M.Frank * @version 1.0 @@ -60,9 +55,8 @@ namespace DD4hep { virtual void end(const G4Track* track); }; + /// Concrete implementation of the Geant4 tracking action sequence /** @class Geant4EventActionSequence Geant4Action.h DDG4/Geant4Action.h - * - * Concrete implementation of the Geant4 tracking action sequence * * The sequence dispatches the callbacks for each tracking action * to all registered Geant4SteppingAction members and all diff --git a/DDG4/include/DDG4/Geant4UIManager.h b/DDG4/include/DDG4/Geant4UIManager.h index 7c4985e4f..26bd64c48 100644 --- a/DDG4/include/DDG4/Geant4UIManager.h +++ b/DDG4/include/DDG4/Geant4UIManager.h @@ -18,19 +18,15 @@ class G4VisManager; class G4UImanager; class G4UIExecutive; -/* - * DD4hep namespace declaration - */ + +/// Namespace for the AIDA detector description toolkit namespace DD4hep { - /* - * Simulation namespace declaration - */ + /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit namespace Simulation { + /// Standard UI interface implementation with configuration using property options /** @class Geant4UIManager Geant4UIManager.h DDG4/Geant4UIManager.h - * - * Standard UI interface implementation * * @author M.Frank * @version 1.0 diff --git a/DDG4/include/DDG4/Geant4UIMessenger.h b/DDG4/include/DDG4/Geant4UIMessenger.h index e58b63656..8f9b234f9 100644 --- a/DDG4/include/DDG4/Geant4UIMessenger.h +++ b/DDG4/include/DDG4/Geant4UIMessenger.h @@ -15,16 +15,13 @@ #include "G4UImessenger.hh" #include "G4UIdirectory.hh" -/* - * DD4hep namespace declaration - */ +/// Namespace for the AIDA detector description toolkit namespace DD4hep { - /* - * Simulation namespace declaration - */ + /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit namespace Simulation { + /// Generic implementation to export properties and actions to the Geant4 command prompt. /** @class Geant4UIMessenger Geant4UIMessenger.h DDG4/Geant4UIMessenger.h * * @author M.Frank diff --git a/DDG4/include/DDG4/Geant4UserParticleHandler.h b/DDG4/include/DDG4/Geant4UserParticleHandler.h index 3ae3f01eb..05f0e8399 100644 --- a/DDG4/include/DDG4/Geant4UserParticleHandler.h +++ b/DDG4/include/DDG4/Geant4UserParticleHandler.h @@ -19,22 +19,19 @@ class G4Track; class G4Event; class G4SteppingManager; -/* - * DD4hep namespace declaration - */ + +/// Namespace for the AIDA detector description toolkit namespace DD4hep { - /* - * Simulation namespace declaration - */ + /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit namespace Simulation { // Forward declarations class Geant4Particle; class Geant4ParticleHandler; - /** Geant4ParticleHandler user extension action called by the particle handler. - * + /// Geant4ParticleHandler user extension action called by the particle handler. + /** * Collect optional MC particle information and attacjh it to the particle object * Clients may inherit from this class and override the approriate methods * to add additional information in form of a DataExtension object to the Particle. diff --git a/DDG4/include/DDG4/Geant4UserPhysicsList.h b/DDG4/include/DDG4/Geant4UserPhysicsList.h index 28ea21513..d4f14c7fe 100644 --- a/DDG4/include/DDG4/Geant4UserPhysicsList.h +++ b/DDG4/include/DDG4/Geant4UserPhysicsList.h @@ -16,19 +16,14 @@ #include "DDG4/Geant4PhysicsList.h" #include "G4VModularPhysicsList.hh" -/* - * DD4hep namespace declaration - */ +/// Namespace for the AIDA detector description toolkit namespace DD4hep { - /* - * Simulation namespace declaration - */ + /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit namespace Simulation { + /// Concrete templated implementation of the Geant4 user physics list /** @class Geant4UserPhysicsList - * - * Concrete implementation of the Geant4 user physics list * * @author M.Frank * @version 1.0 diff --git a/DDG4/include/DDG4/Geant4VolumeManager.h b/DDG4/include/DDG4/Geant4VolumeManager.h index 61edda462..5361332d3 100644 --- a/DDG4/include/DDG4/Geant4VolumeManager.h +++ b/DDG4/include/DDG4/Geant4VolumeManager.h @@ -18,26 +18,23 @@ // Geant4 forward declarations class G4VTouchable; -/* - * DD4hep namespace declaration - */ +/// Namespace for the AIDA detector description toolkit namespace DD4hep { - /* - * Simulation namespace declaration - */ + /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit namespace Simulation { // Forward declarations class Geant4VolumeManager; class Geant4GeometryInfo; + /// The Geant4VolumeManager to facilitate optimized lookups of cell IDs from touchables. /** @class Geant4VolumeManager Geant4VolumeManager.h DDG4/Geant4VolumeManager.h * * @author M.Frank * @version 1.0 */ - struct Geant4VolumeManager: public Geometry::Handle<Geant4GeometryInfo> { + class Geant4VolumeManager: public Geometry::Handle<Geant4GeometryInfo> { public: // Forward declarations typedef Geometry::Handle<Geant4GeometryInfo> Base; diff --git a/DDG4/lcio/LCIOConversions.cpp b/DDG4/lcio/LCIOConversions.cpp index 0f703c26f..03d2611af 100644 --- a/DDG4/lcio/LCIOConversions.cpp +++ b/DDG4/lcio/LCIOConversions.cpp @@ -184,7 +184,7 @@ namespace DD4hep { float pos[] = {c.x, c.y, c.z}; EVENT::MCParticle* lc_mcp = (EVENT::MCParticle*)lc_parts->getElementAt(trackID); if ( hit_creation_mode == Geant4Sensitive::DETAILED_MODE ) - lc_hit->addMCParticleContribution(lc_mcp, c.deposit, c.time, c.pdgID, pos); + lc_hit->addMCParticleContribution(lc_mcp, c.deposit, c.time, lc_mcp->getPDG(), pos); else lc_hit->addMCParticleContribution(lc_mcp, c.deposit, c.time); } diff --git a/DDG4/plugins/Geant4SensDetFilters.cpp b/DDG4/plugins/Geant4SensDetFilters.cpp index 9e85dd469..76e8d1b2e 100644 --- a/DDG4/plugins/Geant4SensDetFilters.cpp +++ b/DDG4/plugins/Geant4SensDetFilters.cpp @@ -12,19 +12,14 @@ // Forward declarations class G4ParticleDefinition; -/* - * DD4hep namespace declaration - */ +/// Namespace for the AIDA detector description toolkit namespace DD4hep { - /* - * Simulation namespace declaration - */ - namespace Simulation { + /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit + namespace Simulation { - /** @class ParticleFilter - * - * Geant4 sensitive detector filter base class for particle filters + /// Geant4 sensitive detector filter base class for particle filters + /** * * @author M.Frank * @version 1.0 @@ -48,9 +43,8 @@ namespace DD4hep { bool isGeantino(const G4Track* track) const; }; - /** @class ParticleRejectFilter - * - * Geant4 sensitive detector filter implementing a particle rejector + /// Geant4 sensitive detector filter implementing a particle rejector + /** * * @author M.Frank * @version 1.0 @@ -64,9 +58,8 @@ namespace DD4hep { virtual bool operator()(const G4Step* step) const; }; - /** @class ParticleSelectFilter - * - * Geant4 sensitive detector filter implementing a particle selector + /// Geant4 sensitive detector filter implementing a particle selector + /** * * @author M.Frank * @version 1.0 @@ -80,9 +73,8 @@ namespace DD4hep { virtual bool operator()(const G4Step* step) const; }; - /** @class GeantinoRejectFilter - * - * Geant4 sensitive detector filter implementing a Geantino rejector + /// Geant4 sensitive detector filter implementing a Geantino rejector + /** * * @author M.Frank * @version 1.0 @@ -96,9 +88,8 @@ namespace DD4hep { virtual bool operator()(const G4Step* step) const; }; - /** @class EnergyDepositMinimumCut - * - * Geant4 sensitive detector filter implementing an energy cut. + /// Geant4 sensitive detector filter implementing an energy cut. + /** * * @author M.Frank * @version 1.0 diff --git a/DDG4/python/DDG4.py b/DDG4/python/DDG4.py index b32bd0182..9002881b3 100644 --- a/DDG4/python/DDG4.py +++ b/DDG4/python/DDG4.py @@ -58,8 +58,8 @@ def importConstants(lcdd,namespace=None): for c in lcdd.constants(): values[c.first] = c.second.GetTitle() evaluator = DD4hep.evaluator() - for key,value in values: - setattr(ns,key,value) + for k in values.keys(): + setattr(ns,k,values[k]) #print 'Imported global value:',c.first,'=',c.second.GetTitle(),'into namespace',ns.__name__ #--------------------------------------------------------------------------- diff --git a/DDG4/src/Geant4Exec.cpp b/DDG4/src/Geant4Exec.cpp index 69dc8e32c..78a9198a3 100644 --- a/DDG4/src/Geant4Exec.cpp +++ b/DDG4/src/Geant4Exec.cpp @@ -35,14 +35,10 @@ #include <memory> #include <stdexcept> -/* - * DD4hep namespace declaration - */ +/// Namespace for the AIDA detector description toolkit namespace DD4hep { - /* - * Simulation namespace declaration - */ + /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit namespace Simulation { namespace { @@ -54,11 +50,12 @@ namespace DD4hep { return s_globalContext; } - + /// Sequence handler implementing common actions to all sequences. template <typename T> struct SequenceHdl { typedef SequenceHdl<T> Base; T* m_sequence; Geant4Context* m_activeContext; + /// Default constructor SequenceHdl() : m_sequence(0), m_activeContext(0) { } @@ -114,9 +111,8 @@ namespace DD4hep { class Geant4UserRunAction; class Geant4UserEventAction; + /// Concrete implementation of the Geant4 run action /** @class Geant4UserRunAction - * - * Concrete implementation of the Geant4 run action * * @author M.Frank * @version 1.0 @@ -136,9 +132,8 @@ namespace DD4hep { virtual void EndOfRunAction(const G4Run* run); }; + /// Concrete implementation of the Geant4 event action /** @class Geant4UserEventAction - * - * Concrete implementation of the Geant4 event action * * @author M.Frank * @version 1.0 @@ -158,9 +153,8 @@ namespace DD4hep { virtual void EndOfEventAction(const G4Event* evt); }; + /// Concrete implementation of the Geant4 tracking action /** @class Geant4UserTrackingAction - * - * Concrete implementation of the Geant4 tracking action * * @author M.Frank * @version 1.0 @@ -187,9 +181,8 @@ namespace DD4hep { } }; + /// Concrete implementation of the Geant4 stacking action sequence /** @class Geant4UserStackingAction - * - * Concrete implementation of the Geant4 stacking action sequence * * @author M.Frank * @version 1.0 @@ -216,9 +209,8 @@ namespace DD4hep { } }; + /// Concrete implementation of the Geant4 generator action /** @class Geant4UserGeneratorAction - * - * Concrete implementation of the Geant4 generator action * * @author M.Frank * @version 1.0 @@ -239,9 +231,8 @@ namespace DD4hep { } }; + /// Concrete implementation of the Geant4 stepping action /** @class Geant4UserSteppingAction - * - * Concrete implementation of the Geant4 stepping action * * @author M.Frank * @version 1.0 diff --git a/DDG4/src/Geant4VolumeManager.cpp b/DDG4/src/Geant4VolumeManager.cpp index 942f01914..4eeba01dd 100644 --- a/DDG4/src/Geant4VolumeManager.cpp +++ b/DDG4/src/Geant4VolumeManager.cpp @@ -34,6 +34,7 @@ using namespace std; namespace { + /// Helper class to populate the Geant4 volume manager struct Populator { typedef vector<const TGeoNode*> Chain; typedef DD4hep::Geometry::LCDD LCDD; diff --git a/doc/LaTex/CERN-logo.png b/doc/LaTex/CERN-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..5d801ddc6a9cd75ba2171dbb59683e24aba65b9d GIT binary patch literal 2935 zcmV--3yAcIP)<h;3K|Lk000e1NJLTq002+`002-30ssI20dr;g000X<Nkl<Zc%1E= zO=un0702%)F+`52z;cLU>~<sDIE&f>Lu&=w8+VZ`41tnlW2n`YKfo(#BZI-&$SXnO ztST?MvC~3ZEuuxWaYU6a1d_W*aimQmW2?jpC`eYo+2l9(uXjDZGjr$8%zF}~K0L&G z^X{BE|9j3oU-v$}^qW8Y#r!|fOFJ#VcGC;MKX-Zo_~%Y90C$G^dUyBrcJXF?^T(y- zwe5LmF0~mjzy=QO?LW}Nt8Y&iAKS~nAu-qO0sLy$%kK>SiWfL_Wo7lr%6FSH3y(H7 ze{{q85B%cQu3gNCyE3!z@Uwq?v+=`IeH=LST3h4^P*cD_egDkC_s;b5hL4}ke!X!2 z@%&eh0UWrCc>y*Pbn@6fUfeY``}I6G-hbRso>FQA7@U7R`zBC<H-7ux=L-+h`V0`J z#p~1QC2Stp@Zm4o9>4vc@JuzQnt%~>?9vGo1;P&}=1@^RKEV6a<d=7*7iA`YyYcqK z<bSzRk6R4Y0gMq|9XgI;Q4zvLYBfM`fDf}aI&^&K?2(hl-nek%ZgaM|R2eX~hge86 z^3fL<VH-t3+ZV^~%Dn%6;~g+J31C+~I7%QyNbh<zz(R{;BOia!L>e2kb{{;@gPAzT zzOngqY59BJjNiGpxV+Xdq&c=8RRAos;H+(La5#2&@2O+^<kGXmV&U(QIby8BiE7w+ zy_qEoATDOF#{y=;WXUzqqAMAya1yj^==yeLbu;Ue2M+H=`8<x5%w4<~gD0!%7kMZT z%3hBGjG*}B8fdwZxP{QhYAhyn*--r0%o+x}nUXWB3j2Snbv0}qz;41%CF^p|oSB}O z{IW(;!5s0#bJNpgDF6mG_^;n87XvdX`l=i-H!CZMpItyQN8HsgN<%B(Js~&~|IS^T zCRPLcli|}SKZYl(CVR0Q@Rj$EA~!iuq==wJCKe%z9r<XsVK~JuK#OA0DzTas!Qw*I zI6tPcP=;4_6@66#SoHvlCo<!6Xps^<#N1L!;6w~`E02w;St(rMt0K$?ZA@CJv4-D% zD=|w_zZl6J+J<KA5dtuM00ty%mGg|2VK&wUWG{vQtESO2VkE<{fw{eCMKA;~hV3{D zXAx%V&>~hLz+%VjMv8^Ky*oS=Ik*zpB;+A(A00Rs4bFr6dk~VS?oBaOcWw|iVZelb z1%@_>-H2x99|0J6<IB%n19<^iHxa?Bz`I|0dHsict1JX;yHLAx)yp)WvN@nhdQ?w& zm?k9~{gg{FzB`pmrrTOPqJMu+wg^!VEFHS>&!grzI!OCM*4p)nxv|S9u6*$8be+Hx zi<VU(VB|1cdCzll;4QSUF(f{o9N5PMtBAchd>RQBA8dhPnn{Ma&H&v)>O(l;y-UbJ zg}B*eFSq>L^M6faV`kMbOB)@NC2ME8)6(XqSs}pk>`M=xvBn|Y96r_EwTr;;?2(g+ za1JDIDDga23`Wqc*fwcMHUTqm=ryNUCec{WR3uEAkLD|Vog4wcLucQdzn?rhTxJz( z*gCrO!YE2GO9hpacdQoe?dsaP0Wp}x0h{s`8rQi|DZ^4yS0<cu(<~DJjHC1780!|v z8ipLq<h|eZ!v|}37cp-FIGERy>klQaio`U@+|o@?M@)fwV}Y<N3VCU-o>UnSW=EX3 zIda;h7O?wD*BQV(f-pUss0CL9U{a_HH_GFJw_HuDD~L)yG;`|p=B8Pu?TvU_yCxv1 zY03N3Uw!(|CGg}fa?>(qFr#XwBm5K~Wos`uu;@;<!bedqTmdjFFemgJNW6%CEm3@d zu+{4m2A>S7T*FIa4mU1y6DbTT0X*=AX?cxY3IXoh)0O@>HTw<Tl^U&f8x_p>YM5km zBay?5=tWEbqmb!Qve&WtgeAkIFFq(-6hXkx`*%tR;y&V%Y^41pVaC{+Cd)zQpw155 z)P;u0sI~3fwF+iN@{}BT_9XIfBZek!-T+(-t}E<l3IU@8kFQ!hSMBuU55-qLbL8W# zEQgQ(zV-XG1guy!5Q!FIb^X@dpRb+KT2<ldNzbIb-rJ>2{yD%_0r-L>{jko@8<5Q4 zVB!}8`F|l`vGe$<G}9I#e^Iseg!JvjjI&v{YY7ibYPs0br)t`6tNf+SHSU6scVlil zi7aiS6}QNXvI(i;R#8i|46yaF1b{5xB+%#iz@n~IR`m3hB6phA5~|bU<aWT5w0X4N z@>Pq)fvpg*r1z5b9VDh6)h$@5SSjj+dgSKO?Z0Lz<g{{=^_?OG*w3xGNuGdUbu?^R ze#<LC9g#U<V`nb?qmtaU2{Bx8zSzn!a{;r?YsO(Ev^=S3i!kgS+DO{9aFGw3Ni@#v z9!Z`+5H=-%?Sj!Be>Ti+Sl1d(yxK*CWv^~gH1>vVm9)VHSdv<58RH?yIy_)Y%ipuE zct)qsDe!bcASqf}fMmIyJ>pHbGLuGtXXYO&e<t7X_F7$_?kHfOlF4OT#aeFZE`n)o zk=8e9%QpeT^K|+o&3!A=I=nZ&tyzOc?d}wF?b(<7u$O+In~kz_U?qULIq{7T*3hI^ ztSVXW=s_cN3kG$qysrc-oqlL<y|h13ULK-J3TyIS65z2*C&&ujWGh+sG~X^#A5VSB z+yR(wI^R|!b!Pri?qEmdfMEgOZo8%63UpzfvYjMK(6$5Cp0G*ElEUpc{FduunbxjQ zsU$HPPP$>JQ8}hCQyyW@xGVl9naS;YZ46EhEmIuui0Smh?FyALF9)oKu##$5pkv<5 zJ<<>@_}HW?;E`%iV+-Rj0GD7I8@l+5Fs1yXT08_N^=Q=)r6|FH-5frRf7UBEP*){H zzk2?-0AQJ={YR6^_O-DXv!@#cSP=*%D*_?Sxoc}UFmQ5_dA%@um+7coW2BFQ7^}J> zN9B>y58;eauZaY#;FJ!ze8gSrtffwFX=9<`0Utdp{^*RNF`@C|^L^g{#da+ffxJ`> z{1}psNhY1Q&7+iWcy;_-SYmgYRtBu?IGt;#bWlhRmGmRtgTw+>aPm?)(>f-}0wxSf zSBi}~FRil14Sv11OYI?duMQ656h5&Vao2Cn#iM2RyY2Q!Zug^z;x%l8Q$fg;=&r4& z6Y*5b*@A{CfCGgG3>9)130h+}T;jcej#tbqJd)`}-euweD>!K{BP;|{9)F^x30ftR z>&s8gV5s}yQH7lcRZaocT7iTX9V;r$M(Ux}U0}vdGPCjmMct1qRRL`GGKxArB4Hl8 zJjgIidi>74qEsm<InQrZLh)#E6WWw;d+6!(BZjK&EoplxJPfT~9J{MsZ;}(l%Bnhj zz$r2hXRuBZWDhSZ{fI<SZTFBTb;tFwbZSl(!OB+vQ>d(ZoQsk2|HcNwY=ccF10tJE z)c{w@r5KE=Rpsd=ZAYS200XLv)kP;%xyZ0=$jqgV|1wQAKyu>ftzV)al5m}6B=#nq zSG&Klvbt%5YGOP6`+MB4y&Q-1hEA5W!;-uClBI3>DW19(cyIkmiIi~c@`=EB1$I*9 zn4bp8xkRQP+xKHjosI;C%Aj|Lr}}!k&?niF8)NgcC%Gr(!-SIE-hY_339yIOwA9kB zjwgJ)gNa479e@c@I$|DE;?|?3;O0x3Iu2M~I=;lMN3xWdo^fXZH~-~NJQ25Y&whB+ zLBQLI*0j=(+_N8P>J(tCYdg`JR{D{9_9IOl0gSgCyEIs}pl?W9ek<>cMw;3WxL(oM zoYYY(Et}d5c&E^c=D+&3H2r8NU>wE{qBX58>+I3fG_?(|exF#ipl>f}(>T0k-M0Vo hP_>}%1jVEuKLLAqd^Mtxgp2?H002ovPDHLkV1l&8oq7NO literal 0 HcmV?d00001 diff --git a/doc/doxygen/DD4hep.css b/doc/doxygen/DD4hep.css new file mode 100644 index 000000000..cee0d06b5 --- /dev/null +++ b/doc/doxygen/DD4hep.css @@ -0,0 +1,949 @@ +/* The standard CSS for doxygen */ + +body, table, div, p, dl { + font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif; + font-size: 13px; + line-height: 1.3; +} + +/* @group Heading Levels */ + +h1 { + font-size: 150%; +} + +.title { + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2 { + font-size: 120%; +} + +h3 { + font-size: 100%; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd, p.starttd { + margin-top: 2px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +.fragment { + font-family: monospace, fixed; + font-size: 105%; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; +} + +div.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000); +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 8px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memItemLeft, .memItemRight, .memTemplParams { + border-top: 1px solid #C4CFE5; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; +} + +.memname { + white-space: nowrap; + font-weight: bold; + margin-left: 6px; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 8px; + border-top-left-radius: 8px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 8px; + -moz-border-radius-topleft: 8px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 8px; + -webkit-border-top-left-radius: 8px; + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 2px 5px; + background-color: #FBFCFD; + border-top-width: 0; + /* opera specific markup */ + border-bottom-left-radius: 8px; + border-bottom-right-radius: 8px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 8px; + -moz-border-radius-bottomright: 8px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 60%, #F7F8FB 95%, #EEF1F7); + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 8px; + -webkit-border-bottom-right-radius: 8px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.6,#FFFFFF), color-stop(0.60,#FFFFFF), color-stop(0.95,#F7F8FB), to(#EEF1F7)); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} + +.params, .retval, .exception, .tparams { + border-spacing: 6px 2px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + + + + +/* @end */ + +/* @group Directory (tree) */ + +/* for the tree view */ + +.ftvtree { + font-family: sans-serif; + margin: 0px; +} + +/* these are for tree view when used as main index */ + +.directory { + font-size: 9pt; + font-weight: bold; + margin: 5px; +} + +.directory h3 { + margin: 0px; + margin-top: 1em; + font-size: 11pt; +} + +/* +The following two styles can be used to replace the root node title +with an image of your choice. Simply uncomment the next two styles, +specify the name of your image and be sure to set 'height' to the +proper pixel height of your image. +*/ + +/* +.directory h3.swap { + height: 61px; + background-repeat: no-repeat; + background-image: url("yourimage.gif"); +} +.directory h3.swap span { + display: none; +} +*/ + +.directory > h3 { + margin-top: 0; +} + +.directory p { + margin: 0px; + white-space: nowrap; +} + +.directory div { + display: none; + margin: 0px; +} + +.directory img { + vertical-align: -30%; +} + +/* these are for tree view when not used as main index */ + +.directory-alt { + font-size: 100%; + font-weight: bold; +} + +.directory-alt h3 { + margin: 0px; + margin-top: 1em; + font-size: 11pt; +} + +.directory-alt > h3 { + margin-top: 0; +} + +.directory-alt p { + margin: 0px; + white-space: nowrap; +} + +.directory-alt div { + display: none; + margin: 0px; +} + +.directory-alt img { + vertical-align: -30%; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable { + border-collapse:collapse; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; +} + +table.fieldtable { + width: 100%; + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + width: 100%; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +div.ingroups +{ + margin-left: 5px; + font-size: 8pt; + padding-left: 5px; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 7px; +} + +dl +{ + padding: 0 0 0 10px; +} + +dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug +{ + border-left:4px solid; + padding: 0 0 0 6px; +} + +dl.note +{ + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + border-color: #00D000; +} + +dl.deprecated +{ + border-color: #505050; +} + +dl.todo +{ + border-color: #00C0E0; +} + +dl.test +{ + border-color: #3030E0; +} + +dl.bug +{ + border-color: #C08050; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } + pre.fragment + { + overflow: visible; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + } +} + diff --git a/doc/doxygen/DD4hepFigures.dox b/doc/doxygen/DD4hepFigures.dox new file mode 100644 index 000000000..7bcd78e37 --- /dev/null +++ b/doc/doxygen/DD4hepFigures.dox @@ -0,0 +1,31 @@ + +// Nothing serious +namespace DoxygenFigures { + +/// Dummy header to just include figures used in Doxygen to ensure the files are copied to the output +/** +\image html CERN-logo.png + +\image html DD4hep_big_picture.png + +\image html DD4hep_compact_xml.png + +\image html DD4hep_classes.png + +\image html DD4hep_compact_xml.png + + +*/ +class DD4hepFigures { +}; + +} + +/// Geometry extension object in ROOT. +class TGeoExtension; + +/// Structure defining an XML attribute in TinyXML +class TIXmlAttribute; +/// Structure defining an XML attribute set in TinyXML +class TIXmlAttributeSet; + diff --git a/doc/doxygen/DD4hepFooter.html b/doc/doxygen/DD4hepFooter.html new file mode 100644 index 000000000..c93cb5618 --- /dev/null +++ b/doc/doxygen/DD4hepFooter.html @@ -0,0 +1,16 @@ +<!--BEGIN GENERATE_TREEVIEW--> + <li class="footer">$generatedby + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> $doxygenversion </li> + </ul> + </div> +<!--END GENERATE_TREEVIEW--> +<!--BEGIN !GENERATE_TREEVIEW--> +<hr class="footer"/><address class="footer"><small> +$generatedby  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="$relpath$doxygen.png" alt="doxygen"/> +</a> $doxygenversion +</small></address> +<!--END !GENERATE_TREEVIEW--> +</body> +</html> diff --git a/doc/doxygen/DD4hepHeader.html b/doc/doxygen/DD4hepHeader.html new file mode 100644 index 000000000..18d14292f --- /dev/null +++ b/doc/doxygen/DD4hepHeader.html @@ -0,0 +1,50 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<!--BEGIN PROJECT_NAME--><title>$projectname: $title</title><!--END PROJECT_NAME--> +<!--BEGIN !PROJECT_NAME--><title>$title</title><!--END !PROJECT_NAME--> +<link href="$relpath$tabs.css" rel="stylesheet" type="text/css"/> +<link href="$relpath$DD4hep.css" rel="stylesheet" type="text/css" /> +$treeview +$search +$mathjax +</head> +<body> +<div id="top"><!-- do not remove this div! --> + +<!--BEGIN TITLEAREA--> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 100px;"> + <!--BEGIN PROJECT_LOGO--> + <td id="projectlogo"><img alt="Logo" src="../doc/LaTex/CERN-logo.png" height="72"/></td> + <td id="projectlogo"><img alt="Logo" src="$relpath$$projectlogo" height="72"/></td> + <!--END PROJECT_LOGO--> + <!--BEGIN PROJECT_NAME--> + <td style="padding-left: 0.5em;"> + <!--BEGIN PROJECT_BRIEF--><div id="projectbrief">$projectbrief</div><!--END PROJECT_BRIEF--> + <div id="projectname">$projectname + <!--BEGIN PROJECT_NUMBER--> <span id="projectnumber">$projectnumber</span><!--END PROJECT_NUMBER--> + </div> + </td> + <!--END PROJECT_NAME--> + <!--BEGIN !PROJECT_NAME--> + <!--BEGIN PROJECT_BRIEF--> + <td style="padding-left: 0.5em;"> + <div id="projectbrief">$projectbrief</div> + </td> + <!--END PROJECT_BRIEF--> + <!--END !PROJECT_NAME--> + <!--BEGIN DISABLE_INDEX--> + <!--BEGIN SEARCHENGINE--> + <td>$searchbox</td> + <!--END SEARCHENGINE--> + <!--END DISABLE_INDEX--> + </tr> + </tbody> +</table> +</div> +<!--END TITLEAREA--> diff --git a/doc/doxygen/DD4hepMainpage.dox b/doc/doxygen/DD4hepMainpage.dox new file mode 100644 index 000000000..8bf8500dc --- /dev/null +++ b/doc/doxygen/DD4hepMainpage.dox @@ -0,0 +1,244 @@ +/** + +\mainpage DD4hep - Main page + +<A href="#UsefulLinks">Useful links</A> + +\section MAIN DD4hep - A Detector Description Toolkit for High Energy Physics Experiments + +\section INTRO Introduction +The development of a coherent set of software tools for the description of +High Energy Physics detectors from a single source of information has been +on the agenda of many experiments for decades. +Providing appropriate and consistent detector views to simulation, +reconstruction and analysis applications from a single information source +is crucial for the success of the experiments. +Detector description in general includes not only the geometry and the +materials used in the apparatus, but all parameters describing e.g. the +detection techniques, constants required by alignment and calibration, +description of the readout structures, conditions data, etc. + +The design of the DD4hep toolkit +is shaped on the experience of detector description +systems, which were implemented for the LHC experiments, in particular +the LHCb experiment, +as well as the lessons learnt from other +implementations of geometry description tools developed for +the Linear Collider. +Designing a coherent set of tools, with most of the basic components +already existing in one form or another, is an opportunity for getting +the best of all existing solutions. +DD4hep aims to widely reuse used existing software components, in particular +the ROOT geometry, part of the ROOT project, a tool for +building, browsing, navigating and visualizing detector geometries. The +code is designed to optimize particle transport through complex +structures and works standalone with respect to any Monte-Carlo +simulation engine. The ROOT geometry package provides +sophisticated 3D visualization functionality, which is ideal for building +detector and event displays. The second component is +the Geant4 simulation toolkit, which is used to +simulate the detector response from particle collisions in complex designs. +In DD4hep the geometrical +representation provided by ROOT is the main source of information. +In addition DD4hep provides the automatic conversions to other geometrical +representations, such as Geant4, and the convenient usage of these +components without the reinvention of the existing functionality. + +\section SCOPE Project Scope and Requirements + +The detector description should fully describe and qualify +the detection apparatus and must expose access to all information +required to interpret event data recorded from particle collisions. +Experience from the LHC experiments has shown that a generalized +view, not limited only to geometry, is very beneficial in order to obtain +a coherent set of tools for the interpretation of collision data. +This is particularly important in later stages of the experiment's life cycle, +when a valid set of detector data must be used to analyze real or simulated +detector response from particle collisions. An example would be an alignment +application, where time dependent precise detector positions are matched +with the detector geometry. + + +The following main requirements influenced the design of the toolkit: + +- <b>Full Detector Description.</b> The toolkit should be able to + manage the data describing the detector geometry, the materials used + when building the structures, + visualization attributes, detector readout information, alignment, + calibration and environmental parameters - all that is + necessary to interpret event data recorded from particle collisions. +- <b>The Full Experiment Life Cycle</b> should be supported. + The toolkit should support the development of the detector concepts, + detector optimizations, + construction and later operation of the detector. + The transition from one phase to the next should be simple and not require + new developments. The initial phases are characterized by very $ideal$ + detector descriptions, i.e. only very few parameters are sufficient + to describe new + detector designs. Once operational, the detector will be different + from the ideal detector, and each part of the detector will have + to have its own specific parameters and conditions, + which are exposed by the toolkit. +- <b>One single source of detector information</b> must be sufficient + to perform all data processing applications such as simulation, + reconstruction, online trigger and data analysis. + This ensures that all applications see a coherent description. + In the past attempts by experiments to re-synchronize parallel + detector descriptions were always problematic. + Consequently, the detector description is the union of the information + needed by all applications, though the level of detail may be selectable. +- <b>Ease of Use</b> influenced both + the design and the im\-ple\-men\-tation. The definition of sub\-detectors, + their geometrical description and the access to con\-ditions and alignment + data should follow a minimalistic, simple and intuitive interface. + Hence, the of the developer using the toolkit is focused on specifics of + the detector design and not on technicalities handled transparently by + the toolkit. +. + +<img src="../doc/LaTex/DD4hep_big_picture.png" height="400"/> +<b>The components of the DD4hep detector geometry toolkit.</b> + +\section DESIGN Toolkit Design + +The Figure above shows the architecture +of the main components of the toolkit and their interfaces +to the end-user applications, namely the simulation, reconstruction, +alignment and visualization. +The central element of the toolkit is the so-called generic detector +description model. This is an in-memory model, i.e., a set of C++ objects +holding the data describing the geometry and other information of +the detector. The rest of the toolkit consists of tools and interfaces +to input or output information from this generic detector model. +The model and its components will be described in subsequence sections. + +\section COMPACT The Compact Detector Description + +Inspired from the work of the linear collider detector +simulation, the compact detector description is used +to define an ideal detector as typically used during +the conceptual design phase of an experiment. +The compact description in its minimalistic form is probably not going to +be adequate later in the detector life cycle and +is likely to be replaced or refined when a more realistic detector +with deviations from the ideal would be needed by the experiment. + + +In the compact description the detector is parametrized in minimalistic terms +with user provided parameters in XML. +XML is an open format, the DD4hep parsers do not validate against a fix schema +and hence allow to easily introduce new elements and attributes to describe +detectors. This feature minimizes the burden on the end-user while still +supporting flexibility. +Such a compact detector descriptions cannot be interpreted in a +general manner, therefore so called $Detector$ $Constructors$ are needed. + + +<img src="../doc/LaTex/DD4hep_classes.png" height="400"/> +<b>Class diagram with the main classes and their relations + for the Generic Detector Description Model. The implementing + ROOT classes are shown in brackets. +</b> + + +\section DETECTORS Detector Constructors + +Detector Constructors are relatively small code fragments that get +as input an XML element from the compact description that represents +a single detector instance. The code interprets the data and expands +its geometry model in memory using the elements from the generic detector +description model described in section~\ref{subsec:generic-model}. +The toolkit invokes these code fragments in a data driven way +using naming conventions during the initialization phase of the +application. Users focus on one +single detector type at the time, but the toolkit supports them to still +construct complex and large detector setups. +Two implementations are currently supported: One is based on +C++, which performs better and is able to detect errors at +compiler time, but the code is slightly more technical. +The other is based on Python fragments, the code is more readable and +compact but errors are only detected at execution time. + +\noindent +The compact description together with the detector constructors are sufficient +to build the detector model and to visualize it. If during the lifetime of the +experiment the detector model changes, the corresponding constructors will +need to be adapted accordingly. +DD4hep provides already a palette of basic pre-implemented geometrical detector +concepts to design experiments. In view of usage of DD4hep as a detector +description toolkit, this library may in the future also adopt +generic designs of detector components created by end users e.g. during the design +phase of future experiments. + +<img src="../doc/LaTex/DD4hep_compact_xml.png" height="250"/> + +<b>An example sniplett of the compact detector description. The + example shows the description of a 2 layered silicon vertex + detector. +</b> + +\section DETDESCMODEL Generic Detector Description Model + +This is the heart of the DD4hep detector description toolkit. Its purpose is +to build in memory a model of the detector including its geometrical aspects +as well as structural and functional aspects. The design reuses the elements +from the ROOT geometry package and extends them in case required functionality +is not available. The Figure above describing the detector model illustrates the main +players and their relationships. +Any detector is modeled as a tree of $Detector$ $Elements$, the entity +central to this design, which is represented in the implementation by +the $DetElement$ class. It offers all +applications a natural entry point to any detector part of the experiment +and represents a complete sub-detector (e.g. TPC), a part of a +sub-detector (e.g. TPC-Endcap), a detector module or any other convenient +detector device. +The main purpose is to give access to the data associated +to the detector device. For example, if the user writes some TPC reconstruction +code, accessing the TPC detector element from this code will provide access +the all TPC geometrical dimensions, the alignment and calibration constants +and other slow varying conditions such as the gas pressure, end-plate +temperatures etc. The $Detector$ $Element$ acts as a data concentrator. +Applications may access the full experiment geometry and all connected data +through a singleton object called $LCDD$, which provides +management, bookkeeping and ownership to the model instances. + +\noindent +The geometry is implemented using the ROOT geometry classes, which are used +directly without unnecessary interfaces to isolate the end-user from the +actual ROOT based implementation. There is one exception: +The constructors are wrapped to facilitate a very compact and readable +notation to end-users building custom $Detector$ $Constructors$. + + +\section MORE_INFO Still interested in more ? + +<A name="UsefulLinks">Some useful Links</A>: + +Here you can find the manuals: + +- The basic <A href="../doc/DD4hepManual.pdf">DD4hep manual</A>. +- The <A href="../doc/DDG4Manual.pdf">DDG4 manual</A> to invoke the simulation toolkit Geant4 taking advantage of + detector descriptions implemented in DD4hep. +- The DDAlign manual. A Geometry alignment toolkit to handle geometrical imperfections. +- The DDCond manual to handle detector conditions for DD4hep based deytector descriptions. + (Under construction though). +- The <A href="../doc/DDEveManual.pdf">DDEve manual</A> to visualize DD4hep geometries. + (Under construction though). +- <A href="../doc/DD4hep_Diagrams.pdf">UML diagrams</A> from the design phase +- <A href="../doc/DD4hep_Tutorial.pdf">Tutorial</A>. Relatively old... +- <A href="http://cds.cern.ch/record/1473120/files/AIDA-D2_3.pdf">Design document</A> +- <A href="https://sft.its.cern.ch/jira/browse/DDFORHEP">DD4hep bug tracker</A> +. + +CERN intra-web: +- DD4hep mails <A href="https://groups.cern.ch/group/dd4hep-developers/Lists/Archive/100.aspx">archive</A>. +- <A href="http://aidasoft.web.cern.ch/DD4hep">DD4hep AIDA software page</A> +. + +Desy: +- <A href="https://svnsrv.desy.de/websvn/wsvn/General.aidasoft/DD4hep">Web svn</A> +. + +Markus Frank CERN/LHCb + +*/ -- GitLab