diff --git a/DDCore/src/LCDDImp.cpp b/DDCore/src/LCDDImp.cpp index e777392d30cfdc3c7371868a8699920029e5cd93..bf78ec65b5d9c3c72286a7171919bfe22cf8b533 100644 --- a/DDCore/src/LCDDImp.cpp +++ b/DDCore/src/LCDDImp.cpp @@ -276,9 +276,7 @@ void LCDDImp::dump() const { void LCDDImp::apply(const char* factory_type, int argc, char** argv) { string fac = factory_type; try { - LCDD* lcdd = this; - char* fname = 0; - long result = ROOT::Reflex::PluginService::Create<long>(fac,lcdd,argc,argv); + long result = ROOT::Reflex::PluginService::Create<long>(fac,(LCDD*)this,argc,argv); if ( 0 == result ) { throw runtime_error("Failed to locate plugin to apply "+fac); } diff --git a/DDCore/src/XML/LCDDConverter.cpp b/DDCore/src/XML/LCDDConverter.cpp index 8f97817a8d2f958a03c5e3ec29158a823566f417..cfccc02deda34ff1bf027fbdc47b6017d7ea80f0 100644 --- a/DDCore/src/XML/LCDDConverter.cpp +++ b/DDCore/src/XML/LCDDConverter.cpp @@ -83,13 +83,13 @@ namespace DD4hep { namespace XML { }} namespace { - XYZRotation getXYZangles(const Double_t * r) { + XYZRotation getXYZangles(const Double_t* r) { static Double_t rad = DEGREE_2_RAD; - Double_t cosb = sqrt(r[0] * r[0] + r[1] * r[1]); + Double_t cosb = sqrt(r[0]*r[0] + r[1]*r[1]); if (cosb > 0.00001) { - return XYZRotation(atan2(r[5], r[8]) * rad, atan2(-r[2], cosb) * rad, atan2(r[1], r[0]) * rad); + return XYZRotation(atan2(r[5], r[8])*rad, atan2(-r[2], cosb)*rad, atan2(r[1], r[0])*rad); } - return XYZRotation(atan2(-r[7], r[4]) * rad,atan2(-r[2], cosb) * rad,0); + return XYZRotation(atan2(-r[7], r[4])*rad,atan2(-r[2], cosb)*rad,0); } } @@ -923,19 +923,16 @@ LCDDConverter::GeometryInfo::GeometryInfo() static long create_translator(Geometry::LCDD& lcdd, int argc, char** argv) { LCDDConverter wr(lcdd); - char* fname = argc>0 ? argv[0] : 0; + FILE* file = argc>0 ? ::fopen(argv[0],"w") : stdout; wr.create(lcdd.world()); - if ( fname ) { - FILE* file = ::fopen(fname,"w"); - LCDDConverter::GeometryInfo& geo = wr.data(); - if ( !file ) { - cout << "Failed to open output file:" << fname << endl; - return 0; - } - geo.doc->Print(file); - ::fclose(file); + LCDDConverter::GeometryInfo& geo = wr.data(); + if ( !file ) { + cout << "Failed to open output file:" << argv[0] << endl; + return 0; } + geo.doc->Print(file); + if ( argc>0 ) ::fclose(file); return 1; } -DECLARE_APPLY(lcdd_converter,create_translator); +DECLARE_APPLY(DD4hepGeometry2LCDD,create_translator); diff --git a/DDExamples/CLICSiD/CMakeLists.txt b/DDExamples/CLICSiD/CMakeLists.txt index 753cffe3ffede8abb56b49ba147dfd22ab298b29..2dcaa5af1fae4353ece89b58faaa6bb30d9c6349 100644 --- a/DDExamples/CLICSiD/CMakeLists.txt +++ b/DDExamples/CLICSiD/CMakeLists.txt @@ -5,11 +5,12 @@ include_directories( ${CMAKE_CURRENT_SOURCE_DIR}/include ${ROOT_INCLUDE_DIR} ${XERCESC_INCLUDE_DIR}) +file(GLOB sources src/*.cpp) + if(DD4HEP_USE_XERCESC) add_definitions(-DDD4HEP_USE_XERCESC) - file(GLOB sources src/*.cpp) - add_library(CLICSiD SHARED ${sources}) - target_link_libraries(CLICSiD DD4hepCore ${ROOT_LIBRARIES} ${XERCESC_LIBRARIES}) endif() -add_subdirectory(DDExamples/ILDExDisplay) +add_library(CLICSiD SHARED ${sources}) +target_link_libraries(CLICSiD DD4hepCore ${ROOT_LIBRARIES} ${XERCESC_LIBRARIES}) +dd4hep_generate_rootmap(CLICSiD) diff --git a/DDExamples/UtilityApps/src/converter.cpp b/DDExamples/UtilityApps/src/converter.cpp index 52e43aef9721c630699ca7440032626a07578a2c..89f7d9cc75cac8f5f766632d27d37af9348439db 100644 --- a/DDExamples/UtilityApps/src/converter.cpp +++ b/DDExamples/UtilityApps/src/converter.cpp @@ -25,11 +25,14 @@ using namespace DD4hep::Geometry; //______________________________________________________________________________ namespace { void usage() { - cout << "<exe> -opt [-opt] \n" - " -compact <file> Specify the compact geometry file \n" - " At least one compact geo file is required!\n" - " -load_only Dry-run to only load geometry without \n" - " starting the dispay. \n" + cout << "geoConverter -opt [-opt] \n" + " Action flags: Usage is exclusive! \n" + " -compact2lcdd Convert compact xml geometry to lcdd. \n" + " -compact2gdml Convert compact xml geometry to gdml. \n\n" + " -input <file> [REQUIRED] Specify input file. \n" + " -output <file> [OPTIONAL] Specify output file. \n" + " if no output file is specified, the output\n" + " device is stdout. \n" << endl; exit(EINVAL); } @@ -37,19 +40,25 @@ namespace { //______________________________________________________________________________ int main(int argc,char** argv) { - bool dry_run = false; + bool compact2lcdd = false; + bool compact2gdml = false; + int output = 0; vector<char*> geo_files; for(int i=1; i<argc;++i) { if ( argv[i][0]=='-' ) { - if ( strncmp(argv[i],"-compact",2)==0 ) + if ( strncmp(argv[i],"-compact2lcdd",2)==0 ) + compact2lcdd = true; + if ( strncmp(argv[i],"-compact2gdml",2)==0 ) + compact2gdml = true; + else if ( strncmp(argv[i],"-input",2)==0 ) geo_files.push_back(argv[++i]); - else if ( strncmp(argv[i],"-load_only",2)==0 ) - dry_run = true; + else if ( strncmp(argv[i],"-output",2)==0 ) + output = ++i; else usage(); } - else { // This is the default - geo_files.push_back(argv[i]); + else { + usage(); } } if ( geo_files.empty() ) @@ -60,8 +69,12 @@ int main(int argc,char** argv) { LCDD& lcdd = LCDD::getInstance(); // Load all compact files lcdd.apply("DD4hepCompactLoader",int(geo_files.size()),&geo_files[0]); - // Create an interactive ROOT application - lcdd.apply("DD4hepGeometryConverter",args.first,args.second); + if ( compact2lcdd ) { + lcdd.apply("DD4hepGeometry2LCDD",output,&argv[output]); + } + else if ( compact2gdml ) { + lcdd.apply("DD4hepGeometry2GDML",output,&argv[output]); + } return 0; } catch(const exception& e) { diff --git a/DDExamples/UtilityApps/src/display.cpp b/DDExamples/UtilityApps/src/display.cpp index 333cdcb389f3dfffd89810547c263659db553742..e21a364c1b0c0b1018d20aa7da8fc91977eef199 100644 --- a/DDExamples/UtilityApps/src/display.cpp +++ b/DDExamples/UtilityApps/src/display.cpp @@ -26,7 +26,7 @@ using namespace DD4hep::Geometry; //______________________________________________________________________________ namespace { void usage() { - cout << "<exe> -opt [-opt] \n" + cout << "displayGeo -opt [-opt] \n" " -compact <file> Specify the compact geometry file \n" " At least one compact geo file is required!\n" " -load_only Dry-run to only load geometry without \n" diff --git a/DDG4/CMakeLists.txt b/DDG4/CMakeLists.txt index b416a8f9b5800d032bcd05936901c991db254cad..c63ef1d0699f9d32f74a8b15e473e395d711cf49 100644 --- a/DDG4/CMakeLists.txt +++ b/DDG4/CMakeLists.txt @@ -26,3 +26,4 @@ endif() add_library(DD4hepG4 SHARED ${sources}) target_link_libraries(DD4hepG4 DD4hepCore ${ROOT_LIBRARIES} Reflex ${Geant4_LIBRARIES}) #target_link_libraries(DD4hepG4 DD4hepCore ${ROOT_LIBRARIES} ${XERCESC_LIBRARIES} ${Geant4_LIBRARIES}) +dd4hep_generate_rootmap(DD4hepG4) diff --git a/cmake/thisdd4hep.csh b/cmake/thisdd4hep.csh index 53962d5d1ca92c0fa1220e82ebe0f3ca189ce145..07b8b1ee92c08820f1c205f8302a1a5a156ed8fc 100644 --- a/cmake/thisdd4hep.csh +++ b/cmake/thisdd4hep.csh @@ -10,16 +10,16 @@ set THIS="`dirname ${ARGS[2]}`" #----LD_LIBRARY_PATH----------------------------------------------------------------- if ($?LD_LIBRARY_PATH) then - setenv LD_LIBRARY_PATH @XERCESC_ROOT_DIR@/lib:$LD_LIBRARY_PATH # Linux, ELF HP-UX + setenv LD_LIBRARY_PATH @LIBRARY_OUTPUT_PATH@:@XERCESC_ROOT_DIR@/lib:$LD_LIBRARY_PATH # Linux, ELF HP-UX else - setenv LD_LIBRARY_PATH @XERCESC_ROOT_DIR@/lib + setenv LD_LIBRARY_PATH @LIBRARY_OUTPUT_PATH@:@XERCESC_ROOT_DIR@/lib endif #----DYLD_LIBRARY_PATH--------------------------------------------------------------- if ($?DYLD_LIBRARY_PATH) then - setenv DYLD_LIBRARY_PATH @XERCESC_ROOT_DIR@/lib:$DYLD_LIBRARY_PATH # Mac OS X + setenv DYLD_LIBRARY_PATH @LIBRARY_OUTPUT_PATH@:@XERCESC_ROOT_DIR@/lib:$DYLD_LIBRARY_PATH # Mac OS X else - setenv DYLD_LIBRARY_PATH @XERCESC_ROOT_DIR@/lib + setenv DYLD_LIBRARY_PATH @LIBRARY_OUTPUT_PATH@:@XERCESC_ROOT_DIR@/lib endif #----PYTHONPATH--------------------------------------------------------------- diff --git a/cmake/thisdd4hep.sh b/cmake/thisdd4hep.sh index 67a17a1176cf3f833b5e10874cf09e3e3410325c..4bbf0f230d956b15b80d4397a00a7c08559e0bdc 100644 --- a/cmake/thisdd4hep.sh +++ b/cmake/thisdd4hep.sh @@ -18,16 +18,16 @@ fi #----LD_LIBRARY_PATH----------------------------------------------------------------- if [ -z "${LD_LIBRARY_PATH}" ]; then - LD_LIBRARY_PATH=@XERCESC_ROOT_DIR@/lib; export LD_LIBRARY_PATH # Linux, ELF HP-UX + LD_LIBRARY_PATH=@LIBRARY_OUTPUT_PATH@:@XERCESC_ROOT_DIR@/lib; export LD_LIBRARY_PATH # Linux, ELF HP-UX else - LD_LIBRARY_PATH=@XERCESC_ROOT_DIR@/lib:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH + LD_LIBRARY_PATH=@LIBRARY_OUTPUT_PATH@:@XERCESC_ROOT_DIR@/lib:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH fi #----DYLD_LIBRARY_PATH--------------------------------------------------------------- if [ -z "${DYLD_LIBRARY_PATH}" ]; then - DYLD_LIBRARY_PATH=@XERCESC_ROOT_DIR@/lib; export DYLD_LIBRARY_PATH # Mac OS X + DYLD_LIBRARY_PATH=@LIBRARY_OUTPUT_PATH@:@XERCESC_ROOT_DIR@/lib; export DYLD_LIBRARY_PATH # Mac OS X else - DYLD_LIBRARY_PATH=@XERCESC_ROOT_DIR@/lib:$DYLD_LIBRARY_PATH; export DYLD_LIBRARY_PATH + DYLD_LIBRARY_PATH=@LIBRARY_OUTPUT_PATH@:@XERCESC_ROOT_DIR@/lib:$DYLD_LIBRARY_PATH; export DYLD_LIBRARY_PATH fi #----PYTHONPATH---------------------------------------------------------------