Links

Content Skeleton

This Page

Previous topic

VRML2 File Format

Next topic

Explore ShapeDB

Rebuild Geant4 VRML2FILE Visualisation lib

Geant4 Patch to see which solids give trouble

Create patch:

[blyth@belle7 LCG]$ cp -rf geant4.9.2.p01 geant4.9.2.p01.new
[blyth@belle7 LCG]$ diff -rupN geant4.9.2.p01 geant4.9.2.p01.new
diff -rupN geant4.9.2.p01/source/visualization/VRML/src/G4VRML2SceneHandlerFunc.icc geant4.9.2.p01.new/source/visualization/VRML/src/G4VRML2SceneHandlerFunc.icc
--- geant4.9.2.p01/source/visualization/VRML/src/G4VRML2SceneHandlerFunc.icc    2013-09-18 18:37:05.000000000 +0800
+++ geant4.9.2.p01.new/source/visualization/VRML/src/G4VRML2SceneHandlerFunc.icc        2013-09-18 18:32:54.000000000 +0800
@@ -186,6 +186,7 @@ void G4VRML2SCENEHANDLER::AddPrimitive(c

        // VRML codes are generated below

+       G4cerr << "SCB ***** AddPrimitive(G4Polyhedron)" << pv_name << "\n";
        fDest << "#---------- SOLID: " << pv_name << "\n";

        if ( IsPVPickable() ) {
[blyth@belle7 LCG]$
[blyth@belle7 LCG]$ diff -rupN geant4.9.2.p01 geant4.9.2.p01.new > /data1/env/local/dyb/NuWa-trunk/lcgcmt/LCG_Builders/geant4/patches/geant4.9.2.p01.patch3

Add the patch to LCG builders config script:

[blyth@belle7 LCG]$ cat /data1/env/local/dyb/NuWa-trunk/lcgcmt/LCG_Builders/geant4/scripts/geant4_config.sh
#!/bin/sh

. ${LCG_BUILDPOLICYROOT_DIR}/scripts/common.sh
untar

goto ${LCG_srcdir}
apply_patch geant4.9.2.p01.patch 1
apply_patch geant4.9.2.p01.patch2 1
apply_patch geant4.9.2.p01.patch3 1

Dybinst external geant4 build doing nothing:

[blyth@belle7 dyb]$ ./dybinst trunk external geant4

From LCG builders, see than need to move prior lib aside to force Geant4 to build:

[blyth@belle7 cmt]$ pwd
/data1/env/local/dyb/NuWa-trunk/lcgcmt/LCG_Builders/geant4/cmt
[blyth@belle7 cmt]$ vi ../../README.org
[blyth@belle7 cmt]$ cmt pkg_make
Execute action pkg_make => sh -x /data1/env/local/dyb/NuWa-trunk/lcgcmt/LCG_Builders/geant4/scripts/geant4_make.sh
+ . /data1/env/local/dyb/NuWa-trunk/lcgcmt/LCG_Builders/LCG_BuildPolicy/scripts/common.sh
+ CPPVERBOSE=1
+ export CPPVERBOSE
+ goto /data1/env/local/dyb/NuWa-trunk/../external/build/LCG/geant4.9.2.p01/source
+ dir=/data1/env/local/dyb/NuWa-trunk/../external/build/LCG/geant4.9.2.p01/source
+ '[' -n /data1/env/local/dyb/NuWa-trunk/../external/build/LCG/geant4.9.2.p01/source ']'
+ shift
+ cmd cd /data1/env/local/dyb/NuWa-trunk/../external/build/LCG/geant4.9.2.p01/source
+ info 'running command: cd /data1/env/local/dyb/NuWa-trunk/../external/build/LCG/geant4.9.2.p01/source'
+ '[' -n 'running command: cd /data1/env/local/dyb/NuWa-trunk/../external/build/LCG/geant4.9.2.p01/source' ']'
+ msg='running command: cd /data1/env/local/dyb/NuWa-trunk/../external/build/LCG/geant4.9.2.p01/source'
+ shift
+ echo 'geant4: "running command: cd /data1/env/local/dyb/NuWa-trunk/../external/build/LCG/geant4.9.2.p01/source"'
geant4: "running command: cd /data1/env/local/dyb/NuWa-trunk/../external/build/LCG/geant4.9.2.p01/source"
+ cd /data1/env/local/dyb/NuWa-trunk/../external/build/LCG/geant4.9.2.p01/source
+ check 'running command: cd /data1/env/local/dyb/NuWa-trunk/../external/build/LCG/geant4.9.2.p01/source'
+ err=0
+ msg='running command: cd /data1/env/local/dyb/NuWa-trunk/../external/build/LCG/geant4.9.2.p01/source'
+ '[' -n 'running command: cd /data1/env/local/dyb/NuWa-trunk/../external/build/LCG/geant4.9.2.p01/source' ']'
+ shift
+ '[' 0 '!=' 0 ']'
+ '[' '!' -f /data1/env/local/dyb/NuWa-trunk/../external/build/LCG/geant4.9.2.p01/lib/Linux-g++/libG4run.so ']'
+ '[' '!' -f /data1/env/local/dyb/NuWa-trunk/../external/build/LCG/geant4.9.2.p01/lib/Linux-g++/libname.map ']'
+ '[' '!' -f /data1/env/local/dyb/NuWa-trunk/../external/build/LCG/geant4.9.2.p01/include/G4Version.hh ']'
[blyth@belle7 cmt]$
[blyth@belle7 cmt]$
[blyth@belle7 cmt]$ l /data1/env/local/dyb/NuWa-trunk/../external/build/LCG/geant4.9.2.p01/lib/Linux-g++/libG4run.so
-rwxrwxr-x 1 blyth blyth 3558478 Feb 16  2011 /data1/env/local/dyb/NuWa-trunk/../external/build/LCG/geant4.9.2.p01/lib/Linux-g++/libG4run.so
[blyth@belle7 cmt]$

Then install:

[blyth@belle7 dyb]$ cd NuWa-trunk/lcgcmt/LCG_Builders/geant4/cmt && cmt config && . setup.sh
[blyth@belle7 cmt]$ cmt pkg_install
Execute action pkg_install => sh -x /data1/env/local/dyb/NuWa-trunk/lcgcmt/LCG_Builders/geant4/scripts/geant4_install.sh
+ echo 'geant4: installing code'
geant4: installing code
+ cd /data1/env/local/dyb/NuWa-trunk/../external/build/LCG/geant4.9.2.p01
+ mkdir -p /data1/env/local/dyb/NuWa-trunk/../external/geant4/4.9.2.p01/i686-slc5-gcc41-dbg
+ for dir in lib include
+ target=/data1/env/local/dyb/NuWa-trunk/../external/geant4/4.9.2.p01/i686-slc5-gcc41-dbg/lib
+ '[' -d /data1/env/local/dyb/NuWa-trunk/../external/geant4/4.9.2.p01/i686-slc5-gcc41-dbg/lib ']'
+ echo 'geant4: /data1/env/local/dyb/NuWa-trunk/../external/geant4/4.9.2.p01/i686-slc5-gcc41-dbg/lib already exists, remove to force reinstall'
geant4: /data1/env/local/dyb/NuWa-trunk/../external/geant4/4.9.2.p01/i686-slc5-gcc41-dbg/lib already exists, remove to force reinstall
+ for dir in lib include


[blyth@belle7 cmt]$ ll /data1/env/local/dyb/NuWa-trunk/../external/geant4/4.9.2.p01/i686-slc5-gcc41-dbg/lib/
total 390376
-rwxrwxr-x 1 blyth blyth  1803700 Feb 16  2011 libG4globman.so
-rwxrwxr-x 1 blyth blyth   642186 Feb 16  2011 libG4hepnumerics.so
-rwxrwxr-x 1 blyth blyth  2327915 Feb 16  2011 libG4intercoms.so
..

[blyth@belle7 cmt]$ mv /data1/env/local/dyb/NuWa-trunk/../external/geant4/4.9.2.p01/i686-slc5-gcc41-dbg/lib /data1/env/local/dyb/NuWa-trunk/../external/geant4/4.9.2.p01/i686-slc5-gcc41-dbg/lib.prior
[blyth@belle7 cmt]$ cmt pkg_install

Argh, thats building all libs. Hope thats fixed in cmake geant4. Suspect could just build the relevant one:

cd /data1/env/local/dyb/external/build/LCG/geant4.9.2.p01/source/visualization/VRML
make

Nope need to pass in some env:

[blyth@belle7 VRML]$ l ../../../lib/Linux-g++/libG4VRML*
-rw-rw-r-- 1 blyth blyth 2502820 Sep 18 20:16 ../../../lib/Linux-g++/libG4VRML.a
-rwxrwxr-x 1 blyth blyth 2080324 Sep 18 19:33 ../../../lib/Linux-g++/libG4VRML.so
[blyth@belle7 VRML]$ rm ../../../lib/Linux-g++/libG4VRML.a
[blyth@belle7 VRML]$
[blyth@belle7 VRML]$ make CLHEP_BASE_DIR=/data1/env/local/dyb/external/clhep/2.0.4.2/i686-slc5-gcc41-dbg G4SYSTEM=Linux-g++
[blyth@belle7 VRML]$ make CLHEP_BASE_DIR=/data1/env/local/dyb/external/clhep/2.0.4.2/i686-slc5-gcc41-dbg G4SYSTEM=Linux-g++ G4LIB_BUILD_SHARED=1
make: Nothing to be done for `lib'.
[blyth@belle7 VRML]$ rm ../../../lib/Linux-g++/libG4VRML.so && make CLHEP_BASE_DIR=/data1/env/local/dyb/external/clhep/2.0.4.2/i686-slc5-gcc41-dbg/include G4SYSTEM=Linux-g++ G4LIB_BUILD_SHARED=1
Creating shared library ../../../lib/Linux-g++/libG4VRML.so ...

The install is all libs or nothing, so manual copy:

[blyth@belle7 VRML]$ cp ../../../lib/Linux-g++/libG4VRML.so /data1/env/local/dyb/NuWa-trunk/../external/geant4/4.9.2.p01/i686-slc5-gcc41-dbg/lib/libG4VRML.so

Annotated Traverse

Now can see which volumes cause the warnings:

[blyth@belle7 export]$ nuwa.py -G $XMLDETDESCROOT/DDDB/dayabay.xml -n1 -m export > exportdbg.txt

Output buffering mismatch ? Leaves me uncertain that the error goes with the preceeding volume:

SCB ***** AddPrimitive(G4Polyhedron)/dd/Geometry/CalibrationSources/lvWallLedSourceAssy#pvWallLedDiffuserBall.1000
SCB ***** AddPrimitive(G4Polyhedron)/dd/Geometry/CalibrationSources/lvWallLedSourceAssy#pvWallLedAcryBooleanProcessor: boolean operation failed
BooleanProcessor: boolean operation failed
BooleanProcessor: boolean operation failed
...
BooleanProcessor: boolean operation failed
BooleanProcessor: boolean operation failed
licRod.1001
SCB ***** AddPrimitive(G4Polyhedron)/dd/Geometry/AD/lvSST#lvCenterCalibHoleSST.1001
SCB ***** AddPrimitive(G4Polyhedron)/dd/Geometry/AD/lvSST#pvOffCenterCalibHoleSST.1002

Using std::cerr for the volnames to match most of the warnings does better:

[blyth@belle7 VRML]$ touch src/G4VRML2FileSceneHandler.cc
[blyth@belle7 VRML]$ rm ../../../lib/Linux-g++/libG4VRML.so
[blyth@belle7 VRML]$ make CLHEP_BASE_DIR=/data1/env/local/dyb/external/clhep/2.0.4.2/i686-slc5-gcc41-dbg G4SYSTEM=Linux-g++ G4LIB_BUILD_SHARED=1
Making dependency for file src/G4VRML2FileSceneHandler.cc ...
Compiling G4VRML2FileSceneHandler.cc ...
Creating shared library ../../../lib/Linux-g++/libG4VRML.so ...
[blyth@belle7 export]$ nuwa.py -G $XMLDETDESCROOT/DDDB/dayabay.xml -n1 -m export > exportdbg.txt 2>&1