diff --git a/DDCore/CMakeLists.txt b/DDCore/CMakeLists.txt index c5796fffa2df735000f233d46f8bc803c010de25..5d4e85b3d9bc108572ae63408b7ea5f478aa93e0 100644 --- a/DDCore/CMakeLists.txt +++ b/DDCore/CMakeLists.txt @@ -33,13 +33,18 @@ dd4hep_add_dictionary( G__DD4hep include/XML/tinystring.h LINKDEF include/ROOT/LinkDef.h ) +dd4hep_add_package_library ( DDParsers + INCLUDE_DIRS + LINK_LIBRARIES + OPTIONAL [BOOST SOURCES src/parsers/*.cpp] + ) + #---Generate DDCore Library------------------------------------------------------- dd4hep_add_package_library ( DDCore SOURCES src/*.cpp src/Evaluator/*.cpp src/XML/*.cpp GENERATED G__DD4hep.cxx INCLUDE_DIRS ${GaudiPluginService_INCLUDE_DIRS} - LINK_LIBRARIES ${GaudiPluginService_LIBRARIES} - OPTIONAL [BOOST SOURCES src/parsers/*.cpp] + LINK_LIBRARIES DDParsers ${GaudiPluginService_LIBRARIES} ) # Generate DDCore plugins--------------------------------------------------------- diff --git a/DDCore/include/DD4hep/AlignmentData.h b/DDCore/include/DD4hep/AlignmentData.h index a8e762fcea84fdc140367f4cf159374d3cc7c964..c1d131b4a836d173ef44c2f9ad363ae1ad404138 100644 --- a/DDCore/include/DD4hep/AlignmentData.h +++ b/DDCore/include/DD4hep/AlignmentData.h @@ -1,4 +1,3 @@ -// $Id$ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/include/DD4hep/AlignmentTools.h b/DDCore/include/DD4hep/AlignmentTools.h index 84eb94a9be72350f979b7521eec0f393b63355c3..729bf270066f1621ca2cc9e3eb437425a1b0e659 100644 --- a/DDCore/include/DD4hep/AlignmentTools.h +++ b/DDCore/include/DD4hep/AlignmentTools.h @@ -1,4 +1,3 @@ -// $Id$ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/include/DD4hep/Alignments.h b/DDCore/include/DD4hep/Alignments.h index 13950dea1a96e87de621e2d983a8ea4fac5d77a4..e1c4f4f881c0a910e577ec9bbb20f67a2f3f37b2 100644 --- a/DDCore/include/DD4hep/Alignments.h +++ b/DDCore/include/DD4hep/Alignments.h @@ -1,4 +1,3 @@ -// $Id$ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/include/DD4hep/BasicGrammar.h b/DDCore/include/DD4hep/BasicGrammar.h index 20bec995c4f35ea11b75d4d4c8da8eeb5cd5e90c..5bb5ce101b6032a0831f0243af081188d9618a96 100644 --- a/DDCore/include/DD4hep/BasicGrammar.h +++ b/DDCore/include/DD4hep/BasicGrammar.h @@ -1,4 +1,3 @@ -// $Id: $ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/include/DD4hep/BasicGrammar_inl.h b/DDCore/include/DD4hep/BasicGrammar_inl.h index e6d2fd580937982a2c27ef4c2ac83326f1ec6502..2080a968c6ef86ae1f47e2c0325822bc0970b05d 100644 --- a/DDCore/include/DD4hep/BasicGrammar_inl.h +++ b/DDCore/include/DD4hep/BasicGrammar_inl.h @@ -1,4 +1,3 @@ -// $Id: $ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/include/DD4hep/Callback.h b/DDCore/include/DD4hep/Callback.h index eba5ad3db5ca88d3d46f82f5660698b892740162..299c3f572fc167ce4c188c6d9acc35b6c51d4e31 100644 --- a/DDCore/include/DD4hep/Callback.h +++ b/DDCore/include/DD4hep/Callback.h @@ -1,4 +1,3 @@ -// $Id: $ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- @@ -19,9 +18,7 @@ #include <typeinfo> #include <vector> -/* - * DD4hep namespace declaration - */ +/// Namespace for the AIDA detector description toolkit namespace DD4hep { diff --git a/DDCore/include/DD4hep/CartesianGridXY.h b/DDCore/include/DD4hep/CartesianGridXY.h index c29e507b9f0922727da80e7cb03256a8b9ba590f..1efcffea4666892b7c942a4315106cf3182668a5 100644 --- a/DDCore/include/DD4hep/CartesianGridXY.h +++ b/DDCore/include/DD4hep/CartesianGridXY.h @@ -1,3 +1,4 @@ +//========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- // Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN) @@ -15,7 +16,7 @@ #define DD4HEP_DDCORE_CARTESIANGRIDXY_H 1 // Framework include files -#include "DD4hep/Objects.h" +#include "DD4hep/Segmentations.h" /// Namespace for the AIDA detector description toolkit namespace DD4hep { @@ -28,7 +29,8 @@ namespace DD4hep { // Forward declarations class Segmentation; - + template <typename T> class SegmentationWrapper; + /// We need some abbreviation to make the code more readable. typedef Handle<SegmentationWrapper<DDSegmentation::CartesianGridXY> > CartesianGridXYHandle; diff --git a/DDCore/include/DD4hep/CartesianGridXYZ.h b/DDCore/include/DD4hep/CartesianGridXYZ.h index 1d53c9e466140e9ae4eacf2e0a61c2fb93703e8e..6953184168d568aa22d9c8141fc10f65a74e7ee8 100644 --- a/DDCore/include/DD4hep/CartesianGridXYZ.h +++ b/DDCore/include/DD4hep/CartesianGridXYZ.h @@ -1,3 +1,4 @@ +//========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- // Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN) @@ -15,7 +16,7 @@ #define DD4HEP_DDCORE_CARTESIANGRIDXYZ_H 1 // Framework include files -#include "DD4hep/Objects.h" +#include "DD4hep/Segmentations.h" /// Namespace for the AIDA detector description toolkit namespace DD4hep { @@ -28,6 +29,7 @@ namespace DD4hep { // Forward declarations class Segmentation; + template <typename T> class SegmentationWrapper; /// We need some abbreviation to make the code more readable. typedef Handle<SegmentationWrapper<DDSegmentation::CartesianGridXYZ> > CartesianGridXYZHandle; diff --git a/DDCore/include/DD4hep/CartesianGridXZ.h b/DDCore/include/DD4hep/CartesianGridXZ.h index e86f5828e1da9c039e49c26613417190f718470c..df9de68133747d82313673c10f45ec8d1ad8bad2 100644 --- a/DDCore/include/DD4hep/CartesianGridXZ.h +++ b/DDCore/include/DD4hep/CartesianGridXZ.h @@ -1,3 +1,4 @@ +//========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- // Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN) @@ -15,7 +16,7 @@ #define DD4HEP_DDCORE_CARTESIANGRIDXZ_H 1 // Framework include files -#include "DD4hep/Objects.h" +#include "DD4hep/Segmentations.h" /// Namespace for the AIDA detector description toolkit namespace DD4hep { @@ -28,6 +29,7 @@ namespace DD4hep { // Forward declarations class Segmentation; + template <typename T> class SegmentationWrapper; /// We need some abbreviation to make the code more readable. typedef Handle<SegmentationWrapper<DDSegmentation::CartesianGridXZ> > CartesianGridXZHandle; diff --git a/DDCore/include/DD4hep/CartesianGridYZ.h b/DDCore/include/DD4hep/CartesianGridYZ.h index 04f46915e4a8b8484d225b3f8d8267eff2ba3698..61c4727fd9102a1786b0f2f81303ca0eb110640b 100644 --- a/DDCore/include/DD4hep/CartesianGridYZ.h +++ b/DDCore/include/DD4hep/CartesianGridYZ.h @@ -1,3 +1,4 @@ +//========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- // Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN) @@ -15,7 +16,7 @@ #define DD4HEP_DDCORE_CARTESIANGRIDYZ_H 1 // Framework include files -#include "DD4hep/Objects.h" +#include "DD4hep/Segmentations.h" /// Namespace for the AIDA detector description toolkit namespace DD4hep { @@ -28,6 +29,7 @@ namespace DD4hep { // Forward declarations class Segmentation; + template <typename T> class SegmentationWrapper; /// We need some abbreviation to make the code more readable. typedef Handle<SegmentationWrapper<DDSegmentation::CartesianGridYZ> > CartesianGridYZHandle; diff --git a/DDCore/include/DD4hep/ComponentProperties.h b/DDCore/include/DD4hep/ComponentProperties.h index 8640787ac1556e5847d1bc5abf9d29f8169d5c8d..0545506727dc5f762eefa6e02e91fa8f7f76b3b2 100644 --- a/DDCore/include/DD4hep/ComponentProperties.h +++ b/DDCore/include/DD4hep/ComponentProperties.h @@ -1,4 +1,3 @@ -// $Id$ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/include/DD4hep/ComponentProperties_inl.h b/DDCore/include/DD4hep/ComponentProperties_inl.h index c918c58427b7723663d45a5b26eb390273ad90f0..2a55b02de83bc1e06181db01fa9844339d50b8aa 100644 --- a/DDCore/include/DD4hep/ComponentProperties_inl.h +++ b/DDCore/include/DD4hep/ComponentProperties_inl.h @@ -1,4 +1,3 @@ -// $Id$ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/include/DD4hep/ConditionDerived.h b/DDCore/include/DD4hep/ConditionDerived.h index fb47115a3b22fb501cc8806659d038e45cd57aae..e640f24d9fe0c827f0b7df576a1839c90061df8e 100644 --- a/DDCore/include/DD4hep/ConditionDerived.h +++ b/DDCore/include/DD4hep/ConditionDerived.h @@ -1,4 +1,3 @@ -// $Id$ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/include/DD4hep/ConditionTypes.h b/DDCore/include/DD4hep/ConditionTypes.h index e67a7a0f9fc7930547255dd5c3192b77f0b13fa3..22118b2f0f0dccc2efecac8d4e0c68d0affcb20c 100644 --- a/DDCore/include/DD4hep/ConditionTypes.h +++ b/DDCore/include/DD4hep/ConditionTypes.h @@ -1,4 +1,3 @@ -// $Id: $ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/include/DD4hep/Conditions.h b/DDCore/include/DD4hep/Conditions.h index 1f9ce3e55b5a8de47ad105556542deabb2c1ffe9..74d962fc5fb7327a0f67d90d97bfc38c34e885fc 100644 --- a/DDCore/include/DD4hep/Conditions.h +++ b/DDCore/include/DD4hep/Conditions.h @@ -1,4 +1,3 @@ -// $Id: $ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/include/DD4hep/ConditionsData.h b/DDCore/include/DD4hep/ConditionsData.h index 9d626f79599d324c69dd54258cd7928d8e67dad7..720409964890557cfa342af700dff8f7356fe87a 100644 --- a/DDCore/include/DD4hep/ConditionsData.h +++ b/DDCore/include/DD4hep/ConditionsData.h @@ -1,4 +1,3 @@ -// $Id$ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/include/DD4hep/DD4hepRootPersistency.h b/DDCore/include/DD4hep/DD4hepRootPersistency.h index 7467bcfa32a400bcd8202a44481bd5c39cda11bd..a0907e3fc2cc1c6e80a026d24dd0f043c6fea04f 100644 --- a/DDCore/include/DD4hep/DD4hepRootPersistency.h +++ b/DDCore/include/DD4hep/DD4hepRootPersistency.h @@ -1,4 +1,3 @@ -// $Id: $ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/include/DD4hep/DD4hepUnits.h b/DDCore/include/DD4hep/DD4hepUnits.h index e78e70f51e8fe8d5d1e5ef256b46f344bd378926..d6b8a2503f89b9e28001291f89a11baa2b132497 100644 --- a/DDCore/include/DD4hep/DD4hepUnits.h +++ b/DDCore/include/DD4hep/DD4hepUnits.h @@ -1,4 +1,3 @@ -// $Id: $ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/include/DD4hep/DetAlign.h b/DDCore/include/DD4hep/DetAlign.h index 3a3b6ccd75f91b67e9141d3f9f07a204be102f26..3bec3f2201c3f5ce26a9b8acdede241f292cf165 100644 --- a/DDCore/include/DD4hep/DetAlign.h +++ b/DDCore/include/DD4hep/DetAlign.h @@ -1,4 +1,3 @@ -// $Id$ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/include/DD4hep/DetConditions.h b/DDCore/include/DD4hep/DetConditions.h index 3184e9ce0ada2fa6d9c7c468c87ae90c4757ec49..9f0d40ddfdfd3b14a100aaa3bd9100babbf92629 100644 --- a/DDCore/include/DD4hep/DetConditions.h +++ b/DDCore/include/DD4hep/DetConditions.h @@ -1,4 +1,3 @@ -// $Id$ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/include/DD4hep/DetFactoryHelper.h b/DDCore/include/DD4hep/DetFactoryHelper.h index 08b2c771a3817428b7aeebc27053dad8be99f436..f08a3c1996dfa39a2fb731be95e74c11a9731a4e 100644 --- a/DDCore/include/DD4hep/DetFactoryHelper.h +++ b/DDCore/include/DD4hep/DetFactoryHelper.h @@ -1,4 +1,3 @@ -// $Id$ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- @@ -14,6 +13,7 @@ #ifndef DD4hep_DETECTOR_DETFACTORYHELPER_H #define DD4hep_DETECTOR_DETFACTORYHELPER_H +// Framework include files #include "XML/XMLDetector.h" #include "XML/XMLChildValue.h" #include "DD4hep/LCDD.h" diff --git a/DDCore/include/DD4hep/DetType.h b/DDCore/include/DD4hep/DetType.h index 8304c15caecd56911047ee41249bc19bec988e3d..fae95081c6e14cf3f80c8f83eb4d6b41e0e07aa7 100644 --- a/DDCore/include/DD4hep/DetType.h +++ b/DDCore/include/DD4hep/DetType.h @@ -1,4 +1,3 @@ -// $Id: $ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/include/DD4hep/Detector.h b/DDCore/include/DD4hep/Detector.h index b718484c1eae5d4bea1a02ab323a84adce0f8e8a..b2208a6520b077df1eb1957ab967248fcd9492c7 100644 --- a/DDCore/include/DD4hep/Detector.h +++ b/DDCore/include/DD4hep/Detector.h @@ -1,4 +1,3 @@ -// $Id$ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/include/DD4hep/DetectorSelector.h b/DDCore/include/DD4hep/DetectorSelector.h index e8d9221d032e1793305ab5625bfa21c3c68324d3..221838f04ca08c34e3cc8aa5dd2a37946a4e2d26 100644 --- a/DDCore/include/DD4hep/DetectorSelector.h +++ b/DDCore/include/DD4hep/DetectorSelector.h @@ -1,4 +1,3 @@ -// $Id$ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/include/DD4hep/DetectorTools.h b/DDCore/include/DD4hep/DetectorTools.h index 9de15fe7dfddd204a3ac2a1e6ee6aa8d3b42979b..ef78b4893f972352662e52d1bbdc58c58d6e8869 100644 --- a/DDCore/include/DD4hep/DetectorTools.h +++ b/DDCore/include/DD4hep/DetectorTools.h @@ -1,4 +1,3 @@ -// $Id: $ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/include/DD4hep/Dictionary.h b/DDCore/include/DD4hep/Dictionary.h index 1317d38782f7630d96930a363267b270176d70e0..4bdb718982c149e333bdc90dc3b67917ab1ec7ea 100644 --- a/DDCore/include/DD4hep/Dictionary.h +++ b/DDCore/include/DD4hep/Dictionary.h @@ -1,4 +1,3 @@ -// $Id: $ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- @@ -25,7 +24,7 @@ #pragma GCC diagnostic ignored "-Wdeprecated" #pragma GCC diagnostic ignored "-Wunused" #endif - +// Framework include files #include "XML/Evaluator.h" #include "DD4hep/DetAlign.h" #include "DD4hep/DD4hepRootPersistency.h" @@ -41,6 +40,7 @@ #include "DD4hep/Conditions.h" #include "DD4hep/FieldTypes.h" +// C/C++ include files #include <vector> #include <map> #include <string> diff --git a/DDCore/include/DD4hep/Errors.h b/DDCore/include/DD4hep/Errors.h index c5efa43d787657dc35585fb95e6226275aa6683c..13db5aac9c173ce42b10abf197d0bac5d0f208a1 100644 --- a/DDCore/include/DD4hep/Errors.h +++ b/DDCore/include/DD4hep/Errors.h @@ -1,3 +1,4 @@ +//========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- // Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN) @@ -11,7 +12,6 @@ // \version 1.0 // //========================================================================== -// $Id$ #ifndef DD4HEP_ERRORS_H #define DD4HEP_ERRORS_H 1 diff --git a/DDCore/include/DD4hep/Exceptions.h b/DDCore/include/DD4hep/Exceptions.h index c11b61d91c69afffaf836c57a96add8cd3965180..3911efad4fe3aabbfe2bcf755c39d5716daf143e 100644 --- a/DDCore/include/DD4hep/Exceptions.h +++ b/DDCore/include/DD4hep/Exceptions.h @@ -1,4 +1,3 @@ -// $Id: $ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/include/DD4hep/Factories.h b/DDCore/include/DD4hep/Factories.h index 6f07541dacf3fd3b94897c59b804731092f09dd3..6a252c1c1b515ee65bc750e3fa19b3ed92fee92c 100644 --- a/DDCore/include/DD4hep/Factories.h +++ b/DDCore/include/DD4hep/Factories.h @@ -1,4 +1,3 @@ -// $Id$ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- @@ -19,6 +18,8 @@ #include "DD4hep/Detector.h" #include "DD4hep/NamedObject.h" #include "XML/XMLElements.h" + +// C/C++ include files #include <cstdarg> /// Namespace for the AIDA detector description toolkit diff --git a/DDCore/include/DD4hep/FieldTypes.h b/DDCore/include/DD4hep/FieldTypes.h index 5dfd65be3172eb452d401163c2d152838a930061..da332ce22a019184f9c0aaf20f27e45c33c72c51 100644 --- a/DDCore/include/DD4hep/FieldTypes.h +++ b/DDCore/include/DD4hep/FieldTypes.h @@ -1,4 +1,3 @@ -// $Id$ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/include/DD4hep/Fields.h b/DDCore/include/DD4hep/Fields.h index 6caeb5524d82815ea77b585a108f691c136588d9..e247210db9f8048ec46814a706916d418c27f02b 100644 --- a/DDCore/include/DD4hep/Fields.h +++ b/DDCore/include/DD4hep/Fields.h @@ -1,4 +1,3 @@ -// $Id$ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/include/DD4hep/GeoHandler.h b/DDCore/include/DD4hep/GeoHandler.h index 41b1578325872efedbbd56ce867fda05480c280d..e9223297bb6dc3cf666dd14490ef7b8d080c3e25 100644 --- a/DDCore/include/DD4hep/GeoHandler.h +++ b/DDCore/include/DD4hep/GeoHandler.h @@ -1,4 +1,3 @@ -// $Id$ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/include/DD4hep/GlobalAlignment.h b/DDCore/include/DD4hep/GlobalAlignment.h index 95f065ca8d1f777a352ed65089667d6c01560933..7bbf7fb801ec847e3e7e502aa321ba05cdea17a8 100644 --- a/DDCore/include/DD4hep/GlobalAlignment.h +++ b/DDCore/include/DD4hep/GlobalAlignment.h @@ -1,4 +1,3 @@ -// $Id$ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/include/DD4hep/Handle.h b/DDCore/include/DD4hep/Handle.h index 4dde5bd305e79686bef6b2838c440c520bc763bc..b346b27e3304cf33f10f94868d0342c0bfa7f5d6 100644 --- a/DDCore/include/DD4hep/Handle.h +++ b/DDCore/include/DD4hep/Handle.h @@ -1,4 +1,3 @@ -// $Id$ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/include/DD4hep/Handle.inl b/DDCore/include/DD4hep/Handle.inl index 023fcebd4e5b5a4b339ed4095c354c5dedf0e8f1..1e2cdf2385441a9ecca3b00f913c8fb502efa71c 100644 --- a/DDCore/include/DD4hep/Handle.inl +++ b/DDCore/include/DD4hep/Handle.inl @@ -1,4 +1,3 @@ -// $Id: $ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/include/DD4hep/IDDescriptor.h b/DDCore/include/DD4hep/IDDescriptor.h index 6fd8fd8d9e8378d430a4cd6366d2172b79167a55..db785ad497fed471f51b25a5f318dc0db7765534 100644 --- a/DDCore/include/DD4hep/IDDescriptor.h +++ b/DDCore/include/DD4hep/IDDescriptor.h @@ -1,4 +1,3 @@ -// $Id$ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- @@ -16,21 +15,17 @@ // Framework include files #include "DD4hep/Handle.h" -#include "DDSegmentation/BitField64.h" +#include "DD4hep/BitField64.h" // C++ include files #include <string> #include <vector> #include <map> -/* - * DD4hep namespace declaration - */ +/// Namespace for the AIDA detector description toolkit namespace DD4hep { - /* - * Geometry sub-namespace declaration - */ + /// Namespace for the geometry part of the AIDA detector description toolkit namespace Geometry { class IDDescriptorObject; diff --git a/DDCore/include/DD4hep/IOV.h b/DDCore/include/DD4hep/IOV.h index 58e80fe964f22cfc1d1c917f9d1f6b88f6132828..7a91ec24ef952be304956095cbc23177a5b3b1bd 100644 --- a/DDCore/include/DD4hep/IOV.h +++ b/DDCore/include/DD4hep/IOV.h @@ -1,4 +1,3 @@ -// $Id$ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/include/DD4hep/InstanceCount.h b/DDCore/include/DD4hep/InstanceCount.h index 9fda7e87ec7e2b078e4f3648ec05619fa2c8ce3b..874c48462cbf6f315635ae4b178c65eadadcaeb9 100644 --- a/DDCore/include/DD4hep/InstanceCount.h +++ b/DDCore/include/DD4hep/InstanceCount.h @@ -1,4 +1,3 @@ -// $Id: $ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/include/DD4hep/LCDD.h b/DDCore/include/DD4hep/LCDD.h index 2abdc39dae22a53eb66d8f7a4cf949e4bdf3b186..4aa8676dc72899c0a86ee92494bdad5d855cf649 100644 --- a/DDCore/include/DD4hep/LCDD.h +++ b/DDCore/include/DD4hep/LCDD.h @@ -1,4 +1,3 @@ -// $Id$ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/include/DD4hep/LCDDData.h b/DDCore/include/DD4hep/LCDDData.h index 518f1ded63c1651161b31188723b141b9c3a4475..e5336e778d663b5be93af54576753d268d9bb8b6 100644 --- a/DDCore/include/DD4hep/LCDDData.h +++ b/DDCore/include/DD4hep/LCDDData.h @@ -1,4 +1,3 @@ -// $Id: $ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/include/DD4hep/LCDDHelper.h b/DDCore/include/DD4hep/LCDDHelper.h index f150d2cca4e273054d1e93999e99e94874773362..0a50cfe4a6ef2235efcb8bd38c6e807d6d221693 100644 --- a/DDCore/include/DD4hep/LCDDHelper.h +++ b/DDCore/include/DD4hep/LCDDHelper.h @@ -1,4 +1,3 @@ -// $Id: $ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/include/DD4hep/LCDDLoad.h b/DDCore/include/DD4hep/LCDDLoad.h index ba0fdbb9765c8bf2fcb304b14312548aaac08f32..56faed60228b3c5069c85b08b44fb742b6fa6107 100644 --- a/DDCore/include/DD4hep/LCDDLoad.h +++ b/DDCore/include/DD4hep/LCDDLoad.h @@ -1,4 +1,3 @@ -// $Id: $ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/include/DD4hep/MatrixHelpers.h b/DDCore/include/DD4hep/MatrixHelpers.h index d03d7a7382ab87a4da2109fc3bc31f563391c0a8..dc9da135e9a8f5abab4a88f45e9f7be0d3319500 100644 --- a/DDCore/include/DD4hep/MatrixHelpers.h +++ b/DDCore/include/DD4hep/MatrixHelpers.h @@ -1,4 +1,3 @@ -// $Id: $ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- @@ -31,51 +30,51 @@ namespace DD4hep { typedef Position XYZAngles; - /// Access the TGeo identity transformation \ingroup DD4HEP \ingroup DD4HEP_GEOMETRY + /// Access the TGeo identity transformation \ingroup DD4HEP \ingroup DD4HEP_GEOMETRY TGeoIdentity* identityTransform(); - /// Convert a Position object to a TGeoTranslation \ingroup DD4HEP \ingroup DD4HEP_GEOMETRY + /// Convert a Position object to a TGeoTranslation \ingroup DD4HEP \ingroup DD4HEP_GEOMETRY TGeoTranslation* _translation(const Geometry::Position& pos); - /// Convert a RotationZYX object to a TGeoRotation \ingroup DD4HEP \ingroup DD4HEP_GEOMETRY + /// Convert a RotationZYX object to a TGeoRotation \ingroup DD4HEP \ingroup DD4HEP_GEOMETRY TGeoRotation* _rotationZYX(const Geometry::RotationZYX& rot); - /// Convert a Rotation3D object to a TGeoRotation \ingroup DD4HEP \ingroup DD4HEP_GEOMETRY + /// Convert a Rotation3D object to a TGeoRotation \ingroup DD4HEP \ingroup DD4HEP_GEOMETRY TGeoRotation* _rotation3D(const Geometry::Rotation3D& rot); - /// Convert a Transform3D object to a TGeoHMatrix \ingroup DD4HEP \ingroup DD4HEP_GEOMETRY + /// Convert a Transform3D object to a TGeoHMatrix \ingroup DD4HEP \ingroup DD4HEP_GEOMETRY TGeoHMatrix* _transform(const Geometry::Transform3D& trans); - /// Convert a Position object to a TGeoHMatrix \ingroup DD4HEP \ingroup DD4HEP_GEOMETRY + /// Convert a Position object to a TGeoHMatrix \ingroup DD4HEP \ingroup DD4HEP_GEOMETRY TGeoHMatrix* _transform(const Geometry::Position& pos); - /// Convert a RotationZYX object to a TGeoHMatrix \ingroup DD4HEP \ingroup DD4HEP_GEOMETRY + /// Convert a RotationZYX object to a TGeoHMatrix \ingroup DD4HEP \ingroup DD4HEP_GEOMETRY TGeoHMatrix* _transform(const Geometry::RotationZYX& rot); - /// Convert a Rotation3D object to a TGeoHMatrix \ingroup DD4HEP \ingroup DD4HEP_GEOMETRY + /// Convert a Rotation3D object to a TGeoHMatrix \ingroup DD4HEP \ingroup DD4HEP_GEOMETRY TGeoHMatrix* _transform(const Geometry::Rotation3D& rot3D); - /// Convert a Position followed by a RotationZYX to a TGeoHMatrix \ingroup DD4HEP \ingroup DD4HEP_GEOMETRY + /// Convert a Position followed by a RotationZYX to a TGeoHMatrix \ingroup DD4HEP \ingroup DD4HEP_GEOMETRY TGeoHMatrix* _transform(const Geometry::Position& pos, const Geometry::RotationZYX& rot); - /// Set a Transform3D object to a TGeoHMatrix \ingroup DD4HEP \ingroup DD4HEP_GEOMETRY + /// Set a Transform3D object to a TGeoHMatrix \ingroup DD4HEP \ingroup DD4HEP_GEOMETRY TGeoHMatrix& _transform(TGeoHMatrix& mat, const Geometry::Transform3D& trans); - /// Set a Position object (translation) to a TGeoHMatrix \ingroup DD4HEP \ingroup DD4HEP_GEOMETRY + /// Set a Position object (translation) to a TGeoHMatrix \ingroup DD4HEP \ingroup DD4HEP_GEOMETRY TGeoHMatrix& _transform(TGeoHMatrix& mat, const Geometry::Position& pos); - /// Set a RotationZYX object to a TGeoHMatrix \ingroup DD4HEP \ingroup DD4HEP_GEOMETRY + /// Set a RotationZYX object to a TGeoHMatrix \ingroup DD4HEP \ingroup DD4HEP_GEOMETRY TGeoHMatrix& _transform(TGeoHMatrix& mat, const Geometry::RotationZYX& rot); - /// Set a Rotation3D object to a TGeoHMatrix \ingroup DD4HEP \ingroup DD4HEP_GEOMETRY + /// Set a Rotation3D object to a TGeoHMatrix \ingroup DD4HEP \ingroup DD4HEP_GEOMETRY TGeoHMatrix& _transform(TGeoHMatrix& mat, const Geometry::Rotation3D& rot3D); - /// Set a Position followed by a RotationZYX to a TGeoHMatrix \ingroup DD4HEP \ingroup DD4HEP_GEOMETRY + /// Set a Position followed by a RotationZYX to a TGeoHMatrix \ingroup DD4HEP \ingroup DD4HEP_GEOMETRY TGeoHMatrix& _transform(TGeoHMatrix& mat, const Geometry::Position& pos, const Geometry::RotationZYX& rot); - /// Convert a TGeoMatrix object to a generic Transform3D \ingroup DD4HEP \ingroup DD4HEP_GEOMETRY + /// Convert a TGeoMatrix object to a generic Transform3D \ingroup DD4HEP \ingroup DD4HEP_GEOMETRY Geometry::Transform3D _transform(const TGeoMatrix* matrix); - /// Decompose a generic Transform3D into a translation (Position) and a RotationZYX \ingroup DD4HEP \ingroup DD4HEP_GEOMETRY + /// Decompose a generic Transform3D into a translation (Position) and a RotationZYX \ingroup DD4HEP \ingroup DD4HEP_GEOMETRY void _decompose(const Geometry::Transform3D& trafo, Geometry::Position& pos, Geometry::RotationZYX& rot); /// Decompose a generic Transform3D into a translation (Geometry::Position) and XYZAngles \ingroup DD4HEP \ingroup DD4HEP_GEOMETRY void _decompose(const Geometry::Transform3D& trafo, Geometry::Position& pos, XYZAngles& rot); - /// Decompose a generic Transform3D into a translation (Translation3D) and a RotationZYX \ingroup DD4HEP \ingroup DD4HEP_GEOMETRY + /// Decompose a generic Transform3D into a translation (Translation3D) and a RotationZYX \ingroup DD4HEP \ingroup DD4HEP_GEOMETRY void _decompose(const Geometry::Transform3D& trafo, Geometry::Translation3D& pos, Geometry::RotationZYX& rot); - /// Decompose a generic Transform3D into a translation (Translation3D) and XYZAngles \ingroup DD4HEP \ingroup DD4HEP_GEOMETRY + /// Decompose a generic Transform3D into a translation (Translation3D) and XYZAngles \ingroup DD4HEP \ingroup DD4HEP_GEOMETRY void _decompose(const Geometry::Transform3D& trafo, Geometry::Translation3D& pos, XYZAngles& rot); - /// Convert a 3x3 rotation matrix to XYZAngles \ingroup DD4HEP \ingroup DD4HEP_GEOMETRY + /// Convert a 3x3 rotation matrix to XYZAngles \ingroup DD4HEP \ingroup DD4HEP_GEOMETRY XYZAngles _XYZangles(const double* matrix); - /// Convert a the rotation part of a TGeoMatrix to XYZAngles \ingroup DD4HEP \ingroup DD4HEP_GEOMETRY + /// Convert a the rotation part of a TGeoMatrix to XYZAngles \ingroup DD4HEP \ingroup DD4HEP_GEOMETRY XYZAngles _XYZangles(const TGeoMatrix* matrix); } /* End namespace Geometry */ diff --git a/DDCore/include/DD4hep/Memory.h b/DDCore/include/DD4hep/Memory.h index 076724308218744582a4b6d6c45767df598ae3d0..b9a3b293e53c0b7040c4daf3a5472a4a8bcbc2f1 100644 --- a/DDCore/include/DD4hep/Memory.h +++ b/DDCore/include/DD4hep/Memory.h @@ -1,4 +1,3 @@ -// $Id: $ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/include/DD4hep/Mutex.h b/DDCore/include/DD4hep/Mutex.h index 28c05eed9ec713af41a299b6f265a6b84d918b5a..366d8b0e86d229d48e2ff9b76a4251a82efd674b 100644 --- a/DDCore/include/DD4hep/Mutex.h +++ b/DDCore/include/DD4hep/Mutex.h @@ -1,4 +1,3 @@ -// $Id$ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/include/DD4hep/NamedObject.h b/DDCore/include/DD4hep/NamedObject.h index 43e88d4735280ffed8802a08616841a423662f34..790cf2d0c216e9c5d1badeedfb1f6a24b3905d7f 100644 --- a/DDCore/include/DD4hep/NamedObject.h +++ b/DDCore/include/DD4hep/NamedObject.h @@ -1,4 +1,3 @@ -// $Id: $ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/include/DD4hep/ObjectExtensions.h b/DDCore/include/DD4hep/ObjectExtensions.h index e7bbc1c13825c906f9969ac51e4339927e435a84..4936b8d53c9c88496d9032830390e5a24d0a5860 100644 --- a/DDCore/include/DD4hep/ObjectExtensions.h +++ b/DDCore/include/DD4hep/ObjectExtensions.h @@ -1,4 +1,3 @@ -// $Id: $ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/include/DD4hep/Objects.h b/DDCore/include/DD4hep/Objects.h index da5fa5c3d76facc6793f1165e12ec7a4a099b967..c340516c683655d96c364e05cf5e2d467d08a237 100644 --- a/DDCore/include/DD4hep/Objects.h +++ b/DDCore/include/DD4hep/Objects.h @@ -1,4 +1,3 @@ -// $Id$ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- @@ -11,7 +10,6 @@ // Author : M.Frank // //========================================================================== - #ifndef DD4HEP_GEOMETRY_OBJECTS_H #define DD4HEP_GEOMETRY_OBJECTS_H diff --git a/DDCore/include/DD4hep/OpaqueData.h b/DDCore/include/DD4hep/OpaqueData.h index aa56800571628f9b409ccd9c05d6508bf75b9052..980341dd6591218dc748322440bf1219f874bb82 100644 --- a/DDCore/include/DD4hep/OpaqueData.h +++ b/DDCore/include/DD4hep/OpaqueData.h @@ -1,4 +1,3 @@ -// $Id$ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/include/DD4hep/Operators.h b/DDCore/include/DD4hep/Operators.h index ee4185097b2f20b37089f94ce0c4023e1979aba0..67e8b05c3b547cc1610515e1b5cc210b3f3d0714 100644 --- a/DDCore/include/DD4hep/Operators.h +++ b/DDCore/include/DD4hep/Operators.h @@ -1,4 +1,3 @@ -// $Id$ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/include/DD4hep/Parsers.h b/DDCore/include/DD4hep/Parsers.h index b8b4213a4051febcd9119a4797ffb22f09848e8c..e50b45b927dd2cbecf6e1594c8ee766c82476386 100644 --- a/DDCore/include/DD4hep/Parsers.h +++ b/DDCore/include/DD4hep/Parsers.h @@ -1,4 +1,3 @@ -// $Id: $ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/include/DD4hep/Path.h b/DDCore/include/DD4hep/Path.h index 2a919e7b8cb7fb58769912e295b6c5c390d08354..a89c8aee0b4e4857ec9174bbebc2822a8e142837 100644 --- a/DDCore/include/DD4hep/Path.h +++ b/DDCore/include/DD4hep/Path.h @@ -12,7 +12,6 @@ // \version 1.0 // //========================================================================== -// $Id$ #ifndef DD4HEP_DDCORE_PATH_H #define DD4HEP_DDCORE_PATH_H diff --git a/DDCore/include/DD4hep/PluginCreators.h b/DDCore/include/DD4hep/PluginCreators.h index a925ebc4bf5aac6b6e05479423ce60c0e0b64065..0ed1af10f3d9ee713e14d2bd20d360c0920fcfa5 100644 --- a/DDCore/include/DD4hep/PluginCreators.h +++ b/DDCore/include/DD4hep/PluginCreators.h @@ -1,3 +1,4 @@ +//========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- // Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN) @@ -11,7 +12,6 @@ // \version 1.0 // //========================================================================== -// $Id$ #ifndef DD4HEP_PLUGINCREATORS_H #define DD4HEP_PLUGINCREATORS_H 1 diff --git a/DDCore/include/DD4hep/Plugins.h b/DDCore/include/DD4hep/Plugins.h index 02173cf274b99062662c99c15058b6398745151b..4da6f87b3d1f35a2a12e6c531fd28ae463d963da 100644 --- a/DDCore/include/DD4hep/Plugins.h +++ b/DDCore/include/DD4hep/Plugins.h @@ -1,4 +1,3 @@ -// $Id: $ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/include/DD4hep/Plugins.inl b/DDCore/include/DD4hep/Plugins.inl index 8b442ec27e0fed2459cf7bcc59858de48b8e82f1..f23e8a3c54215064e1bee2024244820bf32c7d4b 100644 --- a/DDCore/include/DD4hep/Plugins.inl +++ b/DDCore/include/DD4hep/Plugins.inl @@ -1,4 +1,3 @@ -// $Id: $ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/include/DD4hep/PolarGridRPhi.h b/DDCore/include/DD4hep/PolarGridRPhi.h index 45a438cea48a650607686435132b49b7e1e6fd14..caf9a0f7ec63ee65dcd96d8a5cd4935775f645db 100644 --- a/DDCore/include/DD4hep/PolarGridRPhi.h +++ b/DDCore/include/DD4hep/PolarGridRPhi.h @@ -15,7 +15,7 @@ #define DD4HEP_DDCORE_POLARGRIDRPHI_H 1 // Framework include files -#include "DD4hep/Objects.h" +#include "DD4hep/Segmentations.h" /// Namespace for the AIDA detector description toolkit namespace DD4hep { @@ -28,6 +28,7 @@ namespace DD4hep { // Forward declarations class Segmentation; + template <typename T> class SegmentationWrapper; /// We need some abbreviation to make the code more readable. typedef Handle<SegmentationWrapper<DDSegmentation::PolarGridRPhi> > PolarGridRPhiHandle; diff --git a/DDCore/include/DD4hep/PolarGridRPhi2.h b/DDCore/include/DD4hep/PolarGridRPhi2.h index fa18d8e19d9d6c9889a72e23c9c6719160a744f4..5eaa808f0bbdf4aadc073f78e5c1af87ab53e3bd 100644 --- a/DDCore/include/DD4hep/PolarGridRPhi2.h +++ b/DDCore/include/DD4hep/PolarGridRPhi2.h @@ -15,7 +15,7 @@ #define DD4HEP_DDCORE_POLARGRIDRPHI2_H 1 // Framework include files -#include "DD4hep/Objects.h" +#include "DD4hep/Segmentations.h" /// Namespace for the AIDA detector description toolkit namespace DD4hep { @@ -28,6 +28,7 @@ namespace DD4hep { // Forward declarations class Segmentation; + template <typename T> class SegmentationWrapper; /// We need some abbreviation to make the code more readable. typedef Handle<SegmentationWrapper<DDSegmentation::PolarGridRPhi2> > PolarGridRPhi2Handle; diff --git a/DDCore/include/DD4hep/Printout.h b/DDCore/include/DD4hep/Printout.h index f1d03e19a579f417dec5e28c8d9e0c0feffd4d65..d7aee3e411dcaca5eeedc75cd32cd909e41cbd32 100644 --- a/DDCore/include/DD4hep/Printout.h +++ b/DDCore/include/DD4hep/Printout.h @@ -1,4 +1,3 @@ -// $Id: $ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/include/DD4hep/Readout.h b/DDCore/include/DD4hep/Readout.h index 376de3da338c412a241ca7522871f143faa216d8..9d18ab142841392b6dd01769b07543c3c29812aa 100644 --- a/DDCore/include/DD4hep/Readout.h +++ b/DDCore/include/DD4hep/Readout.h @@ -1,4 +1,3 @@ -// $Id$ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/include/DD4hep/Segmentations.h b/DDCore/include/DD4hep/Segmentations.h index 11012e377a8000c5a0b1e977fe0319d1f9c77ef2..395415df75f8b6cfa79a0e04a1ec2871327716fe 100644 --- a/DDCore/include/DD4hep/Segmentations.h +++ b/DDCore/include/DD4hep/Segmentations.h @@ -1,4 +1,3 @@ -// $Id$ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- @@ -15,13 +14,13 @@ #define DD4HEP_GEOMETRY_SEGMENTATIONS_H // Framework include files -#include "DD4hep/Objects.h" #include "DD4hep/Handle.h" +#include "DD4hep/Objects.h" +#include "DD4hep/BitField64.h" #include "DDSegmentation/Segmentation.h" // C/C++ include files -#include <cmath> -#include <vector> + /// Namespace for the AIDA detector description toolkit namespace DD4hep { @@ -29,101 +28,10 @@ namespace DD4hep { /// Namespace for the geometry part of the AIDA detector description toolkit namespace Geometry { - // Forward declarations + /// Forward declarations class DetElementObject; + class SegmentationObject; class SensitiveDetectorObject; - - /// Implementation class supporting generic Segmentation of sensitive detectors - /** - * The SegmentationObject wraps the functionality of the DDSegmentation base class. - * - * \author M.Frank - * \version 1.0 - * \ingroup DD4HEP_GEOMETRY - */ - class SegmentationObject { - public: - typedef DDSegmentation::Segmentation BaseSegmentation; - typedef DDSegmentation::Parameters Parameters; - typedef DDSegmentation::Parameter Parameter; - - public: - /// Standard constructor - SegmentationObject(BaseSegmentation* s = 0); - /// Default destructor - virtual ~SegmentationObject(); - /// Access the encoding string - std::string fieldDescription() const; - /// Access the segmentation name - const std::string& name() const; - /// Set the segmentation name - void setName(const std::string& value); - /// Access the segmentation type - const std::string& type() const; - /// Access the description of the segmentation - const std::string& description() const; - /// Access the underlying decoder - BitField64* decoder() const; - /// Set the underlying decoder - void setDecoder(BitField64* decoder) const; - /// Access to parameter by name - Parameter parameter(const std::string& parameterName) const; - /// Access to all parameters - Parameters parameters() const; - /// Set all parameters from an existing set of parameters - void setParameters(const Parameters& parameters); - - /** Segmentation interface */ - /// Determine the local position based on the cell ID - Position position(const CellID& cellID) const; - /// Determine the cell ID based on the position - CellID cellID(const Position& localPosition, - const Position& globalPosition, - const VolumeID& volumeID) const; - /// Determine the volume ID from the full cell ID by removing all local fields - VolumeID volumeID(const CellID& cellID) const; - /// Calculates the neighbours of the given cell ID and adds them to the list of neighbours - void neighbours(const CellID& cellID, std::set<CellID>& neighbours) const; - - /// Magic word to check object integrity - unsigned long magic; - /// Flag to use segmentation for hit positioning - unsigned char useForHitPosition; - /// Reference to hosting top level DetElement structure - Handle<DetElementObject> detector; - /// Reference to hosting top level sensitve detector structure - Handle<SensitiveDetectorObject> sensitive; - /// Reference to base segmentation - BaseSegmentation* segmentation; - }; - - /// Concrete wrapper class for segmentation implementation based on DDSegmentation objects - /** - * \author M.Frank - * \version 1.0 - * \ingroup DD4HEP_GEOMETRY - */ - template <typename IMP> class SegmentationWrapper : public SegmentationObject { - public: - /// DDSegmentation aggregate - IMP* implementation; - public: - /// Standard constructor - SegmentationWrapper(DDSegmentation::BitField64* decoder); - /// Default destructor - virtual ~SegmentationWrapper(); - }; - - /// Standard constructor - template <typename IMP> inline - SegmentationWrapper<IMP>::SegmentationWrapper(DDSegmentation::BitField64* decode) - : SegmentationObject(implementation=new IMP(decode)) - { - } - - /// Default destructor - template <typename IMP> inline SegmentationWrapper<IMP>::~SegmentationWrapper() { - } /// Handle class supporting generic Segmentation of sensitive detectors /** @@ -134,7 +42,7 @@ namespace DD4hep { */ class Segmentation: public Handle<SegmentationObject> { public: - typedef SegmentationObject Object; + typedef SegmentationObject Object; typedef DDSegmentation::Segmentation BaseSegmentation; typedef DDSegmentation::Parameter Parameter; typedef DDSegmentation::Parameters Parameters; @@ -161,6 +69,10 @@ namespace DD4hep { std::string type() const; /// Access to the parameters Parameters parameters() const; + /// Access the main detector element using this segmetnation object + Handle<DetElementObject> detector() const; + /// Access the sensitive detector using this segmetnation object + Handle<SensitiveDetectorObject> sensitive() const; /// Access the underlying decoder BitField64* decoder() const; /// Set the underlying decoder @@ -169,8 +81,10 @@ namespace DD4hep { Position position(const long64& cellID) const; /// determine the cell ID based on the local position long64 cellID(const Position& localPosition, const Position& globalPosition, const long64& volumeID) const; - /// Access the concrete underlying segmentation implementation from DDSegmentation - template <typename T> static T* get(const Object* object); + /// Determine the volume ID from the full cell ID by removing all local fields + VolumeID volumeID(const CellID& cellID) const; + /// Calculates the neighbours of the given cell ID and adds them to the list of neighbours + void neighbours(const CellID& cellID, std::set<CellID>& neighbours) const; }; } /* End namespace Geometry */ diff --git a/DDCore/include/DD4hep/Shapes.h b/DDCore/include/DD4hep/Shapes.h index 0e0f14aed63edbe77f070549acd875059bcbef58..da1752ebd333b585e92e03502917c18161f4e1f3 100644 --- a/DDCore/include/DD4hep/Shapes.h +++ b/DDCore/include/DD4hep/Shapes.h @@ -1,4 +1,3 @@ -// $Id$ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/include/DD4hep/SurfaceInstaller.h b/DDCore/include/DD4hep/SurfaceInstaller.h index 7c967f304d081bdb67ed0a1be1da84e4f3dae766..4cdc1c897fef2ee3dd34c74bde52756c1f040c88 100644 --- a/DDCore/include/DD4hep/SurfaceInstaller.h +++ b/DDCore/include/DD4hep/SurfaceInstaller.h @@ -1,4 +1,3 @@ -// $Id: $ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/include/DD4hep/ToStream.h b/DDCore/include/DD4hep/ToStream.h index 67410f891b5679e97c3f821fefb4c817d9a30eca..46d52d4c0e73ab71dcef336e0b5a37ef8740c2b8 100644 --- a/DDCore/include/DD4hep/ToStream.h +++ b/DDCore/include/DD4hep/ToStream.h @@ -1,4 +1,3 @@ -// $Id: $ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/include/DD4hep/VolumeManager.h b/DDCore/include/DD4hep/VolumeManager.h index a1b9c187e1ce289b3ee4475b35326cdd17fdc8cd..25be5c3400a56d0575a146c79393960a1bed7aba 100644 --- a/DDCore/include/DD4hep/VolumeManager.h +++ b/DDCore/include/DD4hep/VolumeManager.h @@ -1,4 +1,3 @@ -// $Id: $ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/include/DD4hep/Volumes.h b/DDCore/include/DD4hep/Volumes.h index 33414d7bdfa155b4bcd55fbdc5f58ec028653183..fc7139d7def74d2f63f1d7b36a6c2ece0c55ee48 100644 --- a/DDCore/include/DD4hep/Volumes.h +++ b/DDCore/include/DD4hep/Volumes.h @@ -1,4 +1,3 @@ -// $Id$ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/include/DD4hep/WaferGridXY.h b/DDCore/include/DD4hep/WaferGridXY.h index e189a52338ce29e23c20b473aa9cf64ed2414f6b..52322ddbf4a2579d95049176577b06253eb9c69c 100644 --- a/DDCore/include/DD4hep/WaferGridXY.h +++ b/DDCore/include/DD4hep/WaferGridXY.h @@ -15,7 +15,7 @@ #define DD4HEP_DDCORE_WAFERGRIDZY_H 1 // Framework include files -#include "DD4hep/Objects.h" +#include "DD4hep/Segmentations.h" /// Namespace for the AIDA detector description toolkit namespace DD4hep { @@ -28,6 +28,7 @@ namespace DD4hep { // Forward declarations class Segmentation; + template <typename T> class SegmentationWrapper; /// We need some abbreviation to make the code more readable. typedef Handle<SegmentationWrapper<DDSegmentation::WaferGridXY> > WaferGridXYHandle; diff --git a/DDCore/include/DD4hep/config.h b/DDCore/include/DD4hep/config.h index 9c26f44ac51306c0cf952607b564a8abe79fc995..8355de9fdea936743e3bf2694d70825b040c518c 100644 --- a/DDCore/include/DD4hep/config.h +++ b/DDCore/include/DD4hep/config.h @@ -1,4 +1,3 @@ -// $Id: $ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/include/DD4hep/objects/AlignmentsInterna.h b/DDCore/include/DD4hep/objects/AlignmentsInterna.h index 64ec5eb989fe605f514a59c37ef33e789f9408d5..3ff64ed8234a9faad95f3cf0904e8a5d85b2875e 100644 --- a/DDCore/include/DD4hep/objects/AlignmentsInterna.h +++ b/DDCore/include/DD4hep/objects/AlignmentsInterna.h @@ -1,4 +1,3 @@ -// $Id$ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/include/DD4hep/objects/ConditionsInterna.h b/DDCore/include/DD4hep/objects/ConditionsInterna.h index 03df33e5c7e2d880e3b056f00c10193c2d6dbcc3..628d37b40d8b4a1b994251ffb2b0d6b09eda3c73 100644 --- a/DDCore/include/DD4hep/objects/ConditionsInterna.h +++ b/DDCore/include/DD4hep/objects/ConditionsInterna.h @@ -1,4 +1,3 @@ -// $Id: $ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/include/DD4hep/objects/DetectorInterna.h b/DDCore/include/DD4hep/objects/DetectorInterna.h index 35a36bbaa231147d61a1bb7ef2d1c66aa588ab18..c5ca4c79313c7d2a47cce8b723f48ed10e449812 100644 --- a/DDCore/include/DD4hep/objects/DetectorInterna.h +++ b/DDCore/include/DD4hep/objects/DetectorInterna.h @@ -1,4 +1,3 @@ -// $Id: $ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/include/DD4hep/objects/ObjectsInterna.h b/DDCore/include/DD4hep/objects/ObjectsInterna.h index f106e98386821fb3ff139d0b8b349fdbdb360f15..d8e900ba39ab7e6e72fb62a6a3a13c392b8b11fc 100644 --- a/DDCore/include/DD4hep/objects/ObjectsInterna.h +++ b/DDCore/include/DD4hep/objects/ObjectsInterna.h @@ -1,4 +1,3 @@ -// $Id: $ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- @@ -11,7 +10,6 @@ // Author : M.Frank // //========================================================================== - #ifndef DD4HEP_GEOMETRY_OBJECTSINTERNA_H #define DD4HEP_GEOMETRY_OBJECTSINTERNA_H @@ -20,7 +18,7 @@ #include "DD4hep/NamedObject.h" #include "DD4hep/IDDescriptor.h" #include "DD4hep/Segmentations.h" -#include "DDSegmentation/BitField64.h" +#include "DD4hep/BitField64.h" // C/C++ include files #include <set> diff --git a/DDCore/include/DD4hep/objects/OpaqueData_inl.h b/DDCore/include/DD4hep/objects/OpaqueData_inl.h index bf985da7817814ad5fb99ebe656cb87f51e9ac71..2c76a4aec2230a62dacbdb94df352ebfa23fd1fa 100644 --- a/DDCore/include/DD4hep/objects/OpaqueData_inl.h +++ b/DDCore/include/DD4hep/objects/OpaqueData_inl.h @@ -1,4 +1,3 @@ -// $Id$ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/include/DD4hep/objects/VolumeManagerInterna.h b/DDCore/include/DD4hep/objects/VolumeManagerInterna.h index 83fdbeab2c19cd91ca133c90cfec02c725b96dd2..7ca1a1c835bdca68cd3bc815ca164c6b01dda783 100644 --- a/DDCore/include/DD4hep/objects/VolumeManagerInterna.h +++ b/DDCore/include/DD4hep/objects/VolumeManagerInterna.h @@ -1,4 +1,3 @@ -// $Id: $ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/src/CartesianGridXY.cpp b/DDCore/src/CartesianGridXY.cpp index b72996f098e1f00d52298110fa1608535c2e9dde..7f75342d22d172563fe8b50223ed65a75dd2edf5 100644 --- a/DDCore/src/CartesianGridXY.cpp +++ b/DDCore/src/CartesianGridXY.cpp @@ -12,8 +12,8 @@ //========================================================================== // Framework include files -#include "DD4hep/Segmentations.h" #include "DD4hep/CartesianGridXY.h" +#include "DD4hep/objects/SegmentationsInterna.h" #include "DDSegmentation/CartesianGridXY.h" // C/C++ include files diff --git a/DDCore/src/CartesianGridXYZ.cpp b/DDCore/src/CartesianGridXYZ.cpp index 396864c41aaddd34336e7ff0568e16fe96231b69..50b9ccb197bf351cfbacc91cf105ae286d5b2e94 100644 --- a/DDCore/src/CartesianGridXYZ.cpp +++ b/DDCore/src/CartesianGridXYZ.cpp @@ -12,8 +12,8 @@ //========================================================================== // Framework include files -#include "DD4hep/Segmentations.h" #include "DD4hep/CartesianGridXYZ.h" +#include "DD4hep/objects/SegmentationsInterna.h" #include "DDSegmentation/CartesianGridXYZ.h" // C/C++ include files diff --git a/DDCore/src/CartesianGridXZ.cpp b/DDCore/src/CartesianGridXZ.cpp index 0d4ee904efdd54d2c3dee38d194c61948060690a..f28a75c0af87c41485d94c08358a69765bfb2490 100644 --- a/DDCore/src/CartesianGridXZ.cpp +++ b/DDCore/src/CartesianGridXZ.cpp @@ -12,8 +12,8 @@ //========================================================================== // Framework include files -#include "DD4hep/Segmentations.h" #include "DD4hep/CartesianGridXZ.h" +#include "DD4hep/objects/SegmentationsInterna.h" #include "DDSegmentation/CartesianGridXZ.h" // C/C++ include files diff --git a/DDCore/src/CartesianGridYZ.cpp b/DDCore/src/CartesianGridYZ.cpp index 2b1176e10e40a917944e3c7e6d0878c4d1b9af50..7e9a590583af9416d21ba1beb823fdbda536a07a 100644 --- a/DDCore/src/CartesianGridYZ.cpp +++ b/DDCore/src/CartesianGridYZ.cpp @@ -12,8 +12,8 @@ //========================================================================== // Framework include files -#include "DD4hep/Segmentations.h" #include "DD4hep/CartesianGridYZ.h" +#include "DD4hep/objects/SegmentationsInterna.h" #include "DDSegmentation/CartesianGridYZ.h" // C/C++ include files diff --git a/DDCore/src/ObjectsInterna.cpp b/DDCore/src/ObjectsInterna.cpp index dc2d3ff2f9a22850ad1798483d135c2e92585205..f20e5babd5c5b957be138b6480392c9844aa9922 100644 --- a/DDCore/src/ObjectsInterna.cpp +++ b/DDCore/src/ObjectsInterna.cpp @@ -16,6 +16,7 @@ #include "DD4hep/InstanceCount.h" #include "DD4hep/Objects.h" #include "DD4hep/objects/ObjectsInterna.h" +#include "DD4hep/objects/SegmentationsInterna.h" using namespace std; using namespace DD4hep; diff --git a/DDCore/src/PolarGridRPhi.cpp b/DDCore/src/PolarGridRPhi.cpp index 56498a0c667712543eae09ffb7d733fba5f49d16..416e372b4c1895c26fe67e9dca0478b4ccf45d74 100644 --- a/DDCore/src/PolarGridRPhi.cpp +++ b/DDCore/src/PolarGridRPhi.cpp @@ -12,8 +12,8 @@ //========================================================================== // Framework include files -#include "DD4hep/Segmentations.h" #include "DD4hep/PolarGridRPhi.h" +#include "DD4hep/objects/SegmentationsInterna.h" #include "DDSegmentation/PolarGridRPhi.h" // C/C++ include files diff --git a/DDCore/src/PolarGridRPhi2.cpp b/DDCore/src/PolarGridRPhi2.cpp index 839f739c3bc3798929d871fe8cd2ba01bf4aa379..47e18d1de2a3328d3b2204405a80f777e3f846fb 100644 --- a/DDCore/src/PolarGridRPhi2.cpp +++ b/DDCore/src/PolarGridRPhi2.cpp @@ -12,8 +12,8 @@ //========================================================================== // Framework include files -#include "DD4hep/Segmentations.h" #include "DD4hep/PolarGridRPhi2.h" +#include "DD4hep/objects/SegmentationsInterna.h" #include "DDSegmentation/PolarGridRPhi2.h" // C/C++ include files diff --git a/DDCore/src/Readout.cpp b/DDCore/src/Readout.cpp index 8297bae803acff15f102523ea4b7adf228947a91..4b487831c9068edd7b4b5860ef104f37fd0693b4 100644 --- a/DDCore/src/Readout.cpp +++ b/DDCore/src/Readout.cpp @@ -14,6 +14,7 @@ // Framework include files #include "DD4hep/Readout.h" +#include "DD4hep/objects/SegmentationsInterna.h" #include "DD4hep/objects/ObjectsInterna.h" #include "DD4hep/InstanceCount.h" #include "DD4hep/DD4hepUnits.h" diff --git a/DDCore/src/Segmentations.cpp b/DDCore/src/Segmentations.cpp index 1e8c625ccaaf0539c4d9d19bad1de85009d0347f..7e2c5ed4c7441e4b0addcedcb8e791605190473b 100644 --- a/DDCore/src/Segmentations.cpp +++ b/DDCore/src/Segmentations.cpp @@ -1,4 +1,3 @@ -// $Id$ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- @@ -18,6 +17,7 @@ #include "DD4hep/Printout.h" #include "DD4hep/Plugins.h" #include "DD4hep/Handle.inl" +#include "DD4hep/objects/SegmentationsInterna.h" // C/C++ include files #include <iostream> @@ -32,95 +32,6 @@ using DD4hep::DDSegmentation::SegmentationParameter; DD4HEP_INSTANTIATE_HANDLE_UNNAMED(SegmentationObject); -/// Standard constructor -SegmentationObject::SegmentationObject(BaseSegmentation* s) - : magic(magic_word()), useForHitPosition(0), - detector(0), sensitive(0), segmentation(s) -{ - //s->backLink = this; - //this->backLink = this; - InstanceCount::increment(this); -} - -/// Default destructor -SegmentationObject::~SegmentationObject() { - InstanceCount::decrement(this); - if (segmentation) { - delete segmentation; - } -} - -/// Access the encoding string -string SegmentationObject::fieldDescription() const { - return segmentation->fieldDescription(); -} - -/// Access the segmentation name -const string& SegmentationObject::name() const { - return segmentation->name(); -} -/// Set the segmentation name -void SegmentationObject::setName(const string& value) { - segmentation->setName(value); -} - -/// Access the segmentation type -const string& SegmentationObject::type() const { - return segmentation->type(); -} - -/// Access the description of the segmentation -const string& SegmentationObject::description() const { - return segmentation->description(); -} - -/// Access the underlying decoder -BitField64* SegmentationObject::decoder() const { - return segmentation->decoder(); -} - -/// Set the underlying decoder -void SegmentationObject::setDecoder(BitField64* ptr_decoder) const { - segmentation->setDecoder(ptr_decoder); -} - -/// Access to parameter by name -Parameter SegmentationObject::parameter(const string& parameterName) const { - return segmentation->parameter(parameterName); -} - -/// Access to all parameters -Parameters SegmentationObject::parameters() const { - return segmentation->parameters(); -} - -/// Set all parameters from an existing set of parameters -void SegmentationObject::setParameters(const Parameters& params) { - segmentation->setParameters(params); -} - -/// Determine the local position based on the cell ID -Position SegmentationObject::position(const CellID& cell) const { - return Position(segmentation->position(cell)); -} - -/// Determine the cell ID based on the position -CellID SegmentationObject::cellID(const Position& local, - const Position& global, - const VolumeID& volID) const { - return segmentation->cellID(local, global, volID); -} - -/// Determine the volume ID from the full cell ID by removing all local fields -VolumeID SegmentationObject::volumeID(const CellID& cell) const { - return segmentation->volumeID(cell); -} - -/// Calculates the neighbours of the given cell ID and adds them to the list of neighbours -void SegmentationObject::neighbours(const CellID& cell, std::set<CellID>& nb) const { - segmentation->neighbours(cell, nb); -} - /// Constructor to used when creating a new object Segmentation::Segmentation(const string& typ, const string& nam, BitField64* dec) : Handle<Object>() { @@ -149,11 +60,6 @@ Parameters Segmentation::parameters() const { return data<Object>()->parameters(); } -/// Access segmentation object -//DDSegmentation::Segmentation* Segmentation::segmentation() const { -// return data<Object>()->segmentation; -//} - /// determine the local position based on the cell ID Position Segmentation::position(const long64& cell) const { return Position(data<Object>()->segmentation->position(cell)); @@ -164,6 +70,16 @@ long64 Segmentation::cellID(const Position& localPosition, const Position& globa return data<Object>()->segmentation->cellID(localPosition, globalPosition, volID); } +/// Determine the volume ID from the full cell ID by removing all local fields +VolumeID Segmentation::volumeID(const CellID& cell) const { + return data<Object>()->segmentation->volumeID(cell); +} + +/// Calculates the neighbours of the given cell ID and adds them to the list of neighbours +void Segmentation::neighbours(const CellID& cell, std::set<CellID>& nb) const { + data<Object>()->segmentation->neighbours(cell, nb); +} + /// Access the underlying decoder BitField64* Segmentation::decoder() const { return data<Object>()->segmentation->decoder(); @@ -174,34 +90,21 @@ void Segmentation::setDecoder(BitField64* decode) const { data<Object>()->segmentation->setDecoder(decode); } -/// Namespace for the AIDA detector description toolkit -namespace DD4hep { - /// Namespace for the geometry part of the AIDA detector description toolkit - namespace Geometry { - - /// Access the concrete underlying segmentation implementation from DDSegmentation - template <typename T> T* - Segmentation::get(const Object* obj) { - if ( obj ) { - DDSegmentation::Segmentation* seg = obj->segmentation; - T* dd_seg = dynamic_cast<T*>(seg); - if ( dd_seg ) { - return dd_seg; - } - except("CartesianGridXY", - "Cannot convert segmentation:%s to CartesianGridXY.", - obj->name().c_str()); - } - return 0; - } - } /* End namespace Geometry */ -} /* End namespace DD4hep */ +/// Access the main detector element using this segmetnation object +Handle<DetElementObject> Segmentation::detector() const { + return data<Object>()->detector; +} + +/// Access the sensitive detector using this segmetnation object +Handle<SensitiveDetectorObject> Segmentation::sensitive() const { + return data<Object>()->sensitive; +} #define IMPLEMENT_SEGMENTATION_HANDLE(X) \ - DD4HEP_INSTANTIATE_HANDLE_UNNAMED(SegmentationWrapper<DDSegmentation::X>); \ - namespace DD4hep { namespace Geometry { \ - template DDSegmentation::X* \ - Segmentation::get<DDSegmentation::X>(const Object* obj); }} + DD4HEP_INSTANTIATE_HANDLE_UNNAMED(SegmentationWrapper<DDSegmentation::X>); + +#include "DDSegmentation/CartesianGrid.h" +IMPLEMENT_SEGMENTATION_HANDLE(CartesianGrid) #include "DDSegmentation/CartesianGridXY.h" IMPLEMENT_SEGMENTATION_HANDLE(CartesianGridXY) @@ -233,3 +136,5 @@ IMPLEMENT_SEGMENTATION_HANDLE(PolarGridRPhi2) #include "DDSegmentation/ProjectiveCylinder.h" IMPLEMENT_SEGMENTATION_HANDLE(ProjectiveCylinder) +#include "DDSegmentation/MultiSegmentation.h" +IMPLEMENT_SEGMENTATION_HANDLE(MultiSegmentation) diff --git a/DDCore/src/WaferGridXY.cpp b/DDCore/src/WaferGridXY.cpp index 45aaa4c4d3e2c8b9d3057eafe17531dd9f4751c0..8d73b711af23a81ded486c511cf289967dd9c4d4 100644 --- a/DDCore/src/WaferGridXY.cpp +++ b/DDCore/src/WaferGridXY.cpp @@ -12,8 +12,8 @@ //========================================================================== // Framework include files -#include "DD4hep/Segmentations.h" #include "DD4hep/WaferGridXY.h" +#include "DD4hep/objects/SegmentationsInterna.h" #include "DDSegmentation/WaferGridXY.h" // C/C++ include files diff --git a/DDCore/src/World.cpp b/DDCore/src/World.cpp index f0e42fa8b1cc4ac2ea0f39bd2881878145dd99ff..064774816e50309b5548b4b602cf47285624b09f 100644 --- a/DDCore/src/World.cpp +++ b/DDCore/src/World.cpp @@ -1,4 +1,3 @@ -// $Id$ //========================================================================== // AIDA Detector description implementation for LCD //-------------------------------------------------------------------------- diff --git a/DDCore/src/plugins/Compact2Objects.cpp b/DDCore/src/plugins/Compact2Objects.cpp index 21425c6d3eb0dae8e12babba5a2659b5e04adb3e..424e13be38316ef2964bd13d571f5c7632babf03 100644 --- a/DDCore/src/plugins/Compact2Objects.cpp +++ b/DDCore/src/plugins/Compact2Objects.cpp @@ -19,6 +19,7 @@ #include "DD4hep/FieldTypes.h" #include "DD4hep/Printout.h" #include "DD4hep/Plugins.h" +#include "DD4hep/objects/SegmentationsInterna.h" #include "DD4hep/objects/DetectorInterna.h" #include "DD4hep/objects/ObjectsInterna.h" diff --git a/DDCore/src/plugins/LCDDSegmentations.cpp b/DDCore/src/plugins/LCDDSegmentations.cpp index d1453698715c4b2c2fe99d5e5fca4c50e8f14c60..0a60bc95c28d332d1e845a5b56dc6bcf425271eb 100644 --- a/DDCore/src/plugins/LCDDSegmentations.cpp +++ b/DDCore/src/plugins/LCDDSegmentations.cpp @@ -13,63 +13,48 @@ //========================================================================== // Framework includes -#include "DD4hep/Segmentations.h" +#include "DD4hep/objects/SegmentationsInterna.h" #include "DD4hep/Factories.h" using namespace DD4hep::Geometry; using namespace DD4hep::DDSegmentation; +namespace { + template<typename T> DD4hep::Geometry::SegmentationObject* + create_segmentation(DD4hep::Geometry::BitField64* decoder) { + return new DD4hep::Geometry::SegmentationWrapper<T>(decoder); + } +} + #include "DDSegmentation/CartesianGridXY.h" -static SegmentationObject* create_CartesianGridXY(BitField64* decoder) -{ return new SegmentationWrapper<CartesianGridXY>(decoder); } -DECLARE_SEGMENTATION(CartesianGridXY,create_CartesianGridXY) +DECLARE_SEGMENTATION(CartesianGridXY,create_segmentation<DD4hep::DDSegmentation::CartesianGridXY>) #include "DDSegmentation/CartesianGridXZ.h" -static SegmentationObject* create_CartesianGridXZ(BitField64* decoder) -{ return new SegmentationWrapper<CartesianGridXZ>(decoder); } -DECLARE_SEGMENTATION(CartesianGridXZ,create_CartesianGridXZ) +DECLARE_SEGMENTATION(CartesianGridXZ,create_segmentation<DD4hep::DDSegmentation::CartesianGridXZ>) #include "DDSegmentation/CartesianGridYZ.h" -static SegmentationObject* create_CartesianGridYZ(BitField64* decoder) -{ return new SegmentationWrapper<CartesianGridYZ>(decoder); } -DECLARE_SEGMENTATION(CartesianGridYZ,create_CartesianGridYZ) +DECLARE_SEGMENTATION(CartesianGridYZ,create_segmentation<DD4hep::DDSegmentation::CartesianGridYZ>) #include "DDSegmentation/CartesianGridXYZ.h" -static SegmentationObject* create_CartesianGridXYZ(BitField64* decoder) -{ return new SegmentationWrapper<CartesianGridXYZ>(decoder); } -DECLARE_SEGMENTATION(CartesianGridXYZ,create_CartesianGridXYZ) +DECLARE_SEGMENTATION(CartesianGridXYZ,create_segmentation<DD4hep::DDSegmentation::CartesianGridXYZ>) #include "DDSegmentation/TiledLayerGridXY.h" -static SegmentationObject* create_TiledLayerGridXY(BitField64* decoder) -{ return new SegmentationWrapper<TiledLayerGridXY>(decoder); } -DECLARE_SEGMENTATION(TiledLayerGridXY,create_TiledLayerGridXY) +DECLARE_SEGMENTATION(TiledLayerGridXY,create_segmentation<DD4hep::DDSegmentation::TiledLayerGridXY>) #include "DDSegmentation/MegatileLayerGridXY.h" -static SegmentationObject* create_MegatileLayerGridXY(BitField64* decoder) -{ return new SegmentationWrapper<MegatileLayerGridXY>(decoder); } -DECLARE_SEGMENTATION(MegatileLayerGridXY,create_MegatileLayerGridXY) +DECLARE_SEGMENTATION(MegatileLayerGridXY,create_segmentation<DD4hep::DDSegmentation::MegatileLayerGridXY>) #include "DDSegmentation/WaferGridXY.h" -static SegmentationObject* create_WaferGridXY(BitField64* decoder) -{ return new SegmentationWrapper<WaferGridXY>(decoder); } -DECLARE_SEGMENTATION(WaferGridXY,create_WaferGridXY) +DECLARE_SEGMENTATION(WaferGridXY,create_segmentation<DD4hep::DDSegmentation::WaferGridXY>) #include "DDSegmentation/PolarGridRPhi.h" -static SegmentationObject* create_PolarGridRPhi(BitField64* decoder) -{ return new SegmentationWrapper<PolarGridRPhi>(decoder); } -DECLARE_SEGMENTATION(PolarGridRPhi,create_PolarGridRPhi) +DECLARE_SEGMENTATION(PolarGridRPhi,create_segmentation<DD4hep::DDSegmentation::PolarGridRPhi>) #include "DDSegmentation/PolarGridRPhi2.h" -static SegmentationObject* create_PolarGridRPhi2(BitField64* decoder) -{ return new SegmentationWrapper<PolarGridRPhi2>(decoder); } -DECLARE_SEGMENTATION(PolarGridRPhi2,create_PolarGridRPhi2) +DECLARE_SEGMENTATION(PolarGridRPhi2,create_segmentation<DD4hep::DDSegmentation::PolarGridRPhi2>) #include "DDSegmentation/ProjectiveCylinder.h" -static SegmentationObject* create_ProjectiveCylinder(BitField64* decoder) -{ return new SegmentationWrapper<ProjectiveCylinder>(decoder); } -DECLARE_SEGMENTATION(ProjectiveCylinder,create_ProjectiveCylinder) +DECLARE_SEGMENTATION(ProjectiveCylinder,create_segmentation<DD4hep::DDSegmentation::ProjectiveCylinder>) #include "DDSegmentation/MultiSegmentation.h" -static SegmentationObject* create_MultiSegmentation(BitField64* decoder) -{ return new SegmentationWrapper<MultiSegmentation>(decoder); } -DECLARE_SEGMENTATION(MultiSegmentation,create_MultiSegmentation) +DECLARE_SEGMENTATION(MultiSegmentation,create_segmentation<DD4hep::DDSegmentation::MultiSegmentation>) diff --git a/DDRec/src/IDDecoder.cpp b/DDRec/src/IDDecoder.cpp index 4ce1186d70093103db6103dfbed4e465f4f90bb6..ef872386a5f090181096b645321b319c3287ba82 100644 --- a/DDRec/src/IDDecoder.cpp +++ b/DDRec/src/IDDecoder.cpp @@ -101,7 +101,7 @@ Position IDDecoder::localPosition(const CellID& cell) const { */ VolumeID IDDecoder::volumeID(const CellID& cell) const { DetElement det = this->detectorElement(cell); - return this->findReadout(det).segmentation()->volumeID(cell); + return this->findReadout(det).segmentation().volumeID(cell); } /* @@ -177,7 +177,7 @@ Geometry::Readout IDDecoder::readout(const Position& global) const { */ void IDDecoder::neighbours(const CellID& cell, set<CellID>& neighbour_cells) const { DetElement det = this->detectorElement(cell); - this->findReadout(det).segmentation()->neighbours(cell, neighbour_cells); + this->findReadout(det).segmentation().neighbours(cell, neighbour_cells); } /* @@ -186,7 +186,7 @@ void IDDecoder::neighbours(const CellID& cell, set<CellID>& neighbour_cells) con bool IDDecoder::areNeighbours(const CellID& cell, const CellID& otherCellID) const { set<CellID> neighbour_cells; DetElement det = this->detectorElement(cell); - this->findReadout(det).segmentation()->neighbours(cell, neighbour_cells); + this->findReadout(det).segmentation().neighbours(cell, neighbour_cells); return neighbour_cells.count(otherCellID) != 0; } diff --git a/DDSegmentation/include/DDSegmentation/MultiSegmentation.h b/DDSegmentation/include/DDSegmentation/MultiSegmentation.h index 24a9f46c40e89357b80b364417d10baab816721a..8ac8bf87457e6f67046f0bde41fba74bbf9deee9 100644 --- a/DDSegmentation/include/DDSegmentation/MultiSegmentation.h +++ b/DDSegmentation/include/DDSegmentation/MultiSegmentation.h @@ -28,6 +28,27 @@ namespace DD4hep { * \ingroup DD4HEP_DDSEGMENTATION */ class MultiSegmentation : public Segmentation { + public: + + struct Entry { + long key_min, key_max; + Segmentation* segmentation; + }; + typedef std::vector<Entry> Segmentations; + + protected: + /// Sub-segmentaion container + Segmentations m_segmentations; + + /// the field name used to discriminate sub-segmentations + std::string m_discriminatorId; + + /// Bitfield corresponding to dicriminator identifier + BitFieldValue* m_discriminator; + + /// Debug flags + int m_debug; + public: /// Default constructor passing the encoding string MultiSegmentation(const std::string& cellEncoding = ""); @@ -41,6 +62,9 @@ namespace DD4hep { /// Add subsegmentation. virtual void addSubsegmentation(long key_min, long key_max, Segmentation* entry); + /// Access subsegmentation by cell identifier + const Segmentation& subsegmentation(const CellID& cellID) const; + /// determine the position based on the cell ID virtual Vector3D position(const CellID& cellID) const; @@ -64,27 +88,9 @@ namespace DD4hep { /// Set the underlying decoder virtual void setDecoder(BitField64* decoder); - protected: - struct Entry { - long key_min, key_max; - Segmentation* segmentation; - }; - typedef std::vector<Entry> Segmentations; + /// The underlying sub-segementations + const Segmentations& subSegmentations() const { return m_segmentations; } - /// Access subsegmentation by cell identifier - const Segmentation& subsegmentation(const CellID& cellID) const; - - /// Sub-segmentaion container - Segmentations m_segmentations; - - /// the field name used to discriminate sub-segmentations - std::string m_discriminatorId; - - /// Bitfield corresponding to dicriminator identifier - BitFieldValue* m_discriminator; - - /// Debug flags - int m_debug; }; } /* namespace DDSegmentation */ diff --git a/DDSegmentation/include/DDSegmentation/Segmentation.h b/DDSegmentation/include/DDSegmentation/Segmentation.h index 89323900fe02fb947283d2388ad144d274177e50..494201584a35e75f1da3ab7d367a7340774b7ebc 100644 --- a/DDSegmentation/include/DDSegmentation/Segmentation.h +++ b/DDSegmentation/include/DDSegmentation/Segmentation.h @@ -161,9 +161,6 @@ protected: mutable BitField64* _decoder; /// Keeps track of the decoder ownership bool _ownsDecoder; -public: - /// DD4hep usage ONLY. Backlink to DD4hep segmentation - Segmentation* backLink; private: /// No copy constructor allowed Segmentation(const Segmentation&); diff --git a/DDSegmentation/src/Segmentation.cpp b/DDSegmentation/src/Segmentation.cpp index ad8b2fd05f03c21f3f4454635107fa49bb29a97f..77b3086d2e228fb549a9162aea18eb3343562554 100644 --- a/DDSegmentation/src/Segmentation.cpp +++ b/DDSegmentation/src/Segmentation.cpp @@ -26,13 +26,13 @@ namespace DD4hep { /// Default constructor used by derived classes passing the encoding string Segmentation::Segmentation(const std::string& cellEncoding) : - _name("Segmentation"), _type("Segmentation"), _decoder(new BitField64(cellEncoding)), _ownsDecoder(true), backLink(0) { + _name("Segmentation"), _type("Segmentation"), _decoder(new BitField64(cellEncoding)), _ownsDecoder(true) { } /// Default constructor used by derived classes passing an existing decoder Segmentation::Segmentation(BitField64* newDecoder) : - _name("Segmentation"), _type("Segmentation"), _decoder(newDecoder), _ownsDecoder(false), backLink(0) { + _name("Segmentation"), _type("Segmentation"), _decoder(newDecoder), _ownsDecoder(false) { } /// Destructor