diff --git a/CMakeLists.txt b/CMakeLists.txt index 7c24a9f08b60b0757b460f61dd27ba6562983204..f0380f0e57687e54c71fb8fd57c03eb6e0a903fc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -200,6 +200,14 @@ ELSE() include(DD4hep_XML_setup) + IF(DD4HEP_BUILD_DEBUG MATCHES "ON" OR (CMAKE_BUILD_TYPE MATCHES "DEBUG|Debug" AND NOT DD4HEP_BUILD_DEBUG MATCHES "OFF")) + message(STATUS "BUILD DD4HEP with debug extensions") + set(DD4HEP_BUILD_DEBUG ON) + add_compile_definitions(DD4HEP_DEBUG=1) + ELSE() + set(DD4HEP_BUILD_DEBUG OFF) + ENDIF() + #These packages are mandatory SET(DD4HEP_SELECTED_PACKAGE DDCore) FOREACH(DDPackage GaudiPluginService DDParsers DDCore) @@ -207,9 +215,10 @@ ELSE() add_subdirectory(${DDPackage}) ENDFOREACH() IF(DD4HEP_BUILD_DEBUG MATCHES "ON" OR (CMAKE_BUILD_TYPE MATCHES "DEBUG|Debug" AND NOT DD4HEP_BUILD_DEBUG MATCHES "OFF")) - target_compile_definitions(DDCore PUBLIC DD4HEP_DEBUG) + target_compile_definitions(DDCore PUBLIC DD4HEP_DEBUG=1) ENDIF() + message(STATUS "BUILD Packages: ${DD4HEP_BUILD_PACKAGES}") FOREACH(DDPackage IN LISTS DD4HEP_BUILD_PACKAGES) dd4hep_print("|> Building ${DDPackage}") diff --git a/DDCore/src/DetectorData.cpp b/DDCore/src/DetectorData.cpp index 3c8e143ecad2a55207ae5748b2ab45fed347c141..87e8e344c61064425dcb293dcb799e165c439898 100644 --- a/DDCore/src/DetectorData.cpp +++ b/DDCore/src/DetectorData.cpp @@ -106,6 +106,7 @@ namespace { TClass* cl = BasicGrammar::instance<OpaqueDataBlock>().clazz();//gROOT->GetClass("dd4hep::OpaqueDataBlock"); OpaqueDataBlock* block = (OpaqueDataBlock*)obj; + if ( b.IsReading() ) { b.ReadVersion(&R__s, &R__c, cl); BasicGrammar::key_type key = 0; @@ -134,11 +135,14 @@ namespace { printout(ERROR,"OpaqueData","+++ ERROR +++ Opaque data block has no grammar attached. Cannot be saved!"); } else { + const std::type_info& typ_info = typeid(*block); const BasicGrammar& gr = *block->grammar; std::string typ = gr.type_name(); + + printout(DEBUG,"OpaqueData","Saving object %p type: %s [%s] [%s]", + obj, typ_info.name(), typ.c_str(), block->grammar->name.c_str()); R__c = b.WriteVersion(cl,kTRUE); b << gr.hash(); - //printout(INFO,"OpaqueData"," Data type:%s Grammar:%s",typ.c_str(),block->grammar->name.c_str()); /// Now perform the I/O action if ( gr.type() == typeid(std::string) ) diff --git a/DDCore/src/DetectorImp.cpp b/DDCore/src/DetectorImp.cpp index 406b5bc8f82d1bcfa407e15e4e62b78e0e7a11d7..fd7442b197efc3b52ee5e1668bf37c984aeca17a 100644 --- a/DDCore/src/DetectorImp.cpp +++ b/DDCore/src/DetectorImp.cpp @@ -164,10 +164,14 @@ DetectorImp::DetectorImp() DetectorImp::DetectorImp(const string& name) : TNamed(), DetectorData(), DetectorLoad(this), m_buildType(BUILD_NONE) { + static bool first = true; + if ( first ) { + first = false; #if defined(DD4HEP_USE_GEANT4_UNITS) && ROOT_VERSION_CODE >= ROOT_VERSION(6,20,0) - printout(WARNING,"DD4hep","++ Using globally Geant4 unit system (mm,ns,MeV)"); - TGeoUnit::setUnitType(TGeoUnit::kTGeant4Units); + printout(WARNING,"DD4hep","++ Using globally Geant4 unit system (mm,ns,MeV)"); + TGeoUnit::setUnitType(TGeoUnit::kTGeant4Units); #endif + } SetName(name.c_str()); SetTitle("DD4hep detector description object"); set_terminate( description_unexpected ); diff --git a/cmake/DD4hepBuild.cmake b/cmake/DD4hepBuild.cmake index 8e2ef8e2daecd11b38a7251f77a38a843f3d9154..17d96a51cdb5343c72261f8688b266e49c52ad02 100644 --- a/cmake/DD4hepBuild.cmake +++ b/cmake/DD4hepBuild.cmake @@ -570,6 +570,10 @@ function(dd4hep_add_dictionary dictionary ) LIST(APPEND comp_defs ${def}) endforeach() +if(DD4HEP_BUILD_DEBUG) + LIST(APPEND comp_defs DD4HEP_DEBUG=1) + endif() + foreach(DEP ${ARG_USES}) # Get INCLUDE DIRECTORIES from Dependencies LIST(APPEND inc_dirs $<TARGET_PROPERTY:${DEP},INTERFACE_INCLUDE_DIRECTORIES>) diff --git a/cmake/DD4hepConfig.cmake.in b/cmake/DD4hepConfig.cmake.in index d678e25846f4892882b8bd31b262953008e58a3c..39bb0468d095dee083e43813f2575e2c5a92f21a 100644 --- a/cmake/DD4hepConfig.cmake.in +++ b/cmake/DD4hepConfig.cmake.in @@ -25,6 +25,7 @@ set ( @CMAKE_PROJECT_NAME@_DIR "${_thisdir}" ) set ( @CMAKE_PROJECT_NAME@_ROOT "${_thisdir}" ) set ( @CMAKE_PROJECT_NAME@_VERSION "@DD4hep_VERSION@" ) set ( @CMAKE_PROJECT_NAME@_SOVERSION "@DD4hep_SOVERSION@" ) +set ( DD4HEP_BUILD_DEBUG @DD4HEP_BUILD_DEBUG@ ) set ( DD4HEP_USE_GEANT4 @DD4HEP_USE_GEANT4@ ) set ( DD4HEP_USE_CLHEP @DD4HEP_USE_CLHEP@ ) set ( DD4HEP_USE_LCIO @DD4HEP_USE_LCIO@ ) @@ -51,6 +52,10 @@ endif() FIND_DEPENDENCY(Boost REQUIRED) DD4HEP_SETUP_BOOST_TARGETS() +if(DD4HEP_BUILD_DEBUG) + add_compile_definitions(DD4HEP_DEBUG=1) +endif() + if(DD4HEP_USE_GEANT4) MESSAGE(STATUS "@CMAKE_PROJECT_NAME@ uses Geant4") IF(DD4HEP_USE_CLHEP)