diff --git a/DDCore/include/DD4hep/Callback.h b/DDCore/include/DD4hep/Callback.h index 1a97069c96669803546412a45f07a0574ddcf940..9d64fd5bb3c0b18888e283e40f83d9615b809e5e 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 5c952a28ef88be953a42f51cbdc9f49dea20fa76..ab6bb6996708157d682f24ced81e283b36b9ae87 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 9654ed3da5d13838ccad9ec9480a3a840efb2e41..88a7335df6e9951e42ec1e6d6ecac7cdfa8b3877 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 17d7e64ad03afa037be8683f499a134074b6b561..f6fb8e344b73fa676ceb823e0f5082532c2e71c6 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 28d4ba197cbb4a77543730a50c3ba11e98cbb931..fad46f1dfc561116841ae106f331cf1718db219d 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 85b099724ed8f7b52c4a6ca6ab1b53bfabae1fa7..04b626afb22843221dc6bd62c522c62048e76c71 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 db804a30bde2f5a176dc5831bf958ead697562e7..d484983866ded04f507987dca7979fea6ab4dbc1 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 0c94899689ef1260587f8cec9689cf649d89b853..24a09d858bfc9f8c633eec25d0095b7d8d542dd3 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 c68f0338039094d763c4bc875b228edba010fb04..9ce843027d5dfc3d4d14638a1ed0f028472374d9 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 96963ab7f392c6e819b7a2982bcda80235feea85..b0e88c70a5cf15d01e71c0b08bebaabc1d7b0939 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 c91bf84fae8e1e6f210eaca9af511651dff9288d..18559678d197023e872be6cf8d1209be69cca27d 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 23484ad45ccdb9d1ab07bd3cf0502038a05548b9..9a1c95a23088118be9ce6f3772ad3ab94161196e 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 ba5fa1f2aaf018ca4dcc548ce4d3a32878bf1a7d..b520f4acefbae25c1828702fd9fb16355c2b33e6 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 5aa55d8db9aa6de6073ddda730017c4f730b468d..18a6f021e731b8f065cb788c22c60b6bacaacaf6 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 f6bae55469d4b3d83deaf1efe954eb03dd1ea544..14ec159aebac4594a20c7d26db6031adfacdbca9 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 4e59d803ed6fb3a483712a0537c9615557f1cbff..a61655ce94def203a6f06852ac2a01f5b6d77d8b 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 72be6f5f7fb9971ac9a503d0e4dcd3c3868a7440..853fc77d998e24a92a0fb9c27e679d3e28cfd0ea 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 2daf76d67302544974b06fe6ba25c164698c988e..bb9c302ec323a606c29d8dbde38a01b1aa507486 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 ddb770f4a1f2dbf88a8d30e660afd67993c03132..877544266b51f266d367859e73ddaf6137ec1915 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 cb82b05f7b5ca5f512316c0fc59dade75423bb63..e45b4c2ed971c9efbf97acbfe60197fce02f94e6 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 6e56ba4d9d39b6cd1be3641cbbe27b80adb86241..246c3a236bcd8480bb426df070ebbbe277335a50 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 b36cff0e40a470fd228bef0f92f149592059cad9..4e2d0b66f7314c9d36756be0849a502191b59753 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 c569bd50e485854946a025060a182446096e1cd4..fbb23ab261a15c36793a7c734ee47e0f7a29b0b7 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 0f96f99bcddbe3c9b47ff22d0517aad06b54cb22..d03756da2a7a2bff75930354a7ef70ac4a1e9627 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 c5cf525cb06e3566bc38bcb903d117f4955a5d1c..9011e5de794739cc265837bd20d01a6e7318a87d 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 805beb2ebd254ba202944c86d1c7de882ca947a6..aad2b60336eaad5ae9bf9b63e5ef47b6869e2a93 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 5cd67783accce2cd50e85d7515ff7ad157c2a22a..b8f2be8c6fd2d71a3fb4c7dcbb3a0d47fcf2c7a0 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 0ae0a8d7f95e5c89943529cb5a8663e8fd651681..6fa0e6c84696d72fd3386dea4413b51dfa985b3e 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 0a642b69cea04ae1a85627e6f6cb23bab6eb8349..0a12e03275d81f5094ca2be45cf9ae5187182f78 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 9a389e0ea7db86252a01866f93e389749702a7b6..451fd62269fecb50b124ee2ce2b01f270f153dc1 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 ca34c3b35c31a7e1c3922c685bf040c0c7b9b87a..37a9823b3c1b56a0a91515cff839ba504a0e1b69 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 e6779249f7d4cf10c3307cd8c121676cc13f3289..570b4688e3635848616190584050986d65c74dca 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 a71fa1a743016d300ddfbc77df349599fdde691a..5ea52056169b2e5993036ce625510f6e6a9b16b8 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 fd2017763f8819ff425db2a49b8d638b86796ede..ef20db2c6cef803e349f86644b370d3a31c1bf78 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 76cebb4dfbad98a9b6b0c6d3aa82cc228aa42b13..69f9c701795a1c8ab42942ed8b812075e49c9935 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 0fa7ba5e05a89e060c948515ae53d95191fb8b58..e1b56c7364bf13758db937d08fa44ad04c206850 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 69001fde0ea9f0cb7934002ba3e43928903764b7..234f2377b857d76156fb03ef424a28f32e7c1f37 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 46fdcf4df10b3a162eedf14626750248a0519586..1efd0714deb9b91910d542d24b39b1249f9c6dc0 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 860173ba4ad6b1d402c86c2be9c036f6cf71cf29..c637fd09fe198f29807bffaddb5f367c71a2d8ea 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 b52f0a510db65cdc96fa1a2eddef092ee4179cdd..9f438f06c72b0a1ad28a1fdb2f7a4eb886ff7c9f 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 dc7d7de818562f0bab153806dd47791bd987e3b9..fc3fa3399231ea66dba9e1d7d164fbba27cc8586 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 17750f03bc875323ac2338054e807249279c1111..0e4deacf1f40f6a8c1a368f32be04a18ccaa2ab6 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 f28154e9ea824f9dab9ae7f2235d13a5621a3fa1..3a48615a4f6ad3da618e6e988a8bd5cf671e5d13 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 808ef2e5d1f69a3e2a34d0d6d4a6899a6de2c80a..0a84b94af1ee454979e043e9c3beb5d0fa65c409 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 a987c9c8c4b201f66a7cb067fa3df7e6d0cdf186..784a55c221a5342b1c9da101ca7a66d1a7b6f1c7 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 98628ebb4606357da7f3e84b94385771b73e844d..8c2cd18ed299e629019ee21bfe7ed785b7e7a172 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 0b6873257552cea8690016bf567d6a4f86a0af7c..b8b4a797a4bbecf30b6e2d84eca46a6c83580829 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 ae8199cbfda4f53af6b9c95db5d01440e2e5c68a..ccb0e5681669bb529168354de38e189e4a663cc2 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 29b5d3dc86785489a5ffa215e2097fbe3968abcf..714c4eee6036b64f0b5fb8b9683ca7635bb87bd2 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 dbf68a3558d91f197a9c065ded94988d6ac68977..7e36d7c62e820d3d434166a26983f18bf65a1bc3 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 86107bbc0312c1069f32540dc190f8f42d9f4628..9cd797dfd665e478b172b87b5482688a62ee2fc7 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 2b84108e1a80bb9421c2a2e060907500fc05a342..d3bc80652f7f33c7771a20459b5904ab970d3793 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 9ee3a1888fd52dba14d032156f7ffe6cc49487ed..b560c1244ec5b9359591082753abf5c3a7f1dc20 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 9539f3018413e4b72d6944573761bf96d9b4f433..bfdd55f0a26d29587f329f3c46aa11ebb824c52b 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 2de9dce08c22395145e79f027b7465ebce88c44c..4e20055483f7a923719148afbfbd52f82a17360d 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 faf050b57b16f562ef5639480e787fb4ba4bae44..04b226d4c8d17789ed258ebcaf48b8b423936f66 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 35e93a04b059831ea0ce3ee94e185a102bdb0b13..ce1636565cee7089396d8befca599288bc85e310 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 84a1502b2eed81dcc5e3487182d1a5c1dc469051..9d57b66f68ee64379e0c5f2364a775fff15337a1 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 7c4985e4f51596ff31566550b3d2bf691a42639c..26bd64c481a970ad69069edcac819c38102ff6cb 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 e58b636562f89e031f097fa4215ebc67a1c95d79..8f9b234f926234fcd1295c0fb91578e209297bad 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 3ae3f01eb5faf681147aad499cc6f5947e1c6822..05f0e83993edf574b81029c3d1e9582c9113417a 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 28ea21513bcd9865d185314d9846913f47aba8f8..d4f14c7feb0704fbf15447b26f145de5db760eb0 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 61edda462699345a20c75d3d7f819cd7eba5f1ba..5361332d32162a6f65510fbbf53c545f105a3ac1 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 0f703c26f135289866279c29889710207da34b96..03d2611af4af164fc5fc24187c3e9d89a3ae5f81 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 9e85dd469a49e2d6bd665ddd51c20696b42ce292..76e8d1b2eedf590a1d442f8e7c93187acfb8006b 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 b32bd01827a93554db762bf18c30c084cd518562..9002881b3547f34bea2162150dd189418ae92ae8 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 69dc8e32c90b743aa53f56a6fb85e5a977612ba9..78a9198a3418a16b854dd0b0cff09aeaad4d5a30 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 942f01914f09c96263df2ac5d1cc189aed73a845..4eeba01dde921a52499bc73e5c454322d9181d7b 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 Binary files /dev/null and b/doc/LaTex/CERN-logo.png differ diff --git a/doc/doxygen/DD4hep.css b/doc/doxygen/DD4hep.css new file mode 100644 index 0000000000000000000000000000000000000000..cee0d06b574232a9643807924ac94f322fda9df9 --- /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 0000000000000000000000000000000000000000..7bcd78e3726c20abc8c3c7123042c5c7ab2a6d41 --- /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 0000000000000000000000000000000000000000..c93cb5618206fa8fc72baf46bec3acb71948193f --- /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 0000000000000000000000000000000000000000..18d14292fb1c5e430e6a98037f42686fa675f8e4 --- /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 0000000000000000000000000000000000000000..8bf8500dce2342310c5fd8e110e8b510a507a420 --- /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 + +*/