Visualising a detector geometry
In order to implement and validate a detector geometry in DD4hep, it is important to be able to visualise it. This wiki explores the existing options. Lots of thanks to Nikiforos Nikiforou for explaining how everything works.
Geometry description formats
There are various formats used to describe a detector geometry.
The info in the
compact.xml
is not enough to describe the detector - drivers are needed to expand info from the XML and create all the volumes. Mokka or
SLIC for example create ways of inputting objects in Geant4 without programming volumes in Geant4.
- GDML (Geant4, ROOT)
- LCDD (GeomConverter) - LCDD is GDML augmented by sensitive detector info including cell id specs.
- HEPREP
- XML - all of the above are XML formats
Format conversions
How to create the LCDD file:
From
GeomConverter - start with GeomConverter's
compact.xml
(from
here, for example), use the java converter to produce the LCDD file:
cd /afs/cern.ch/eng/clic/software/GeomConverter/GeomConverter-2_4/target
Convert by doing
java -jar GeomConverter-2.4-bin.jar -o lcdd <input> <output>
One can then delete by hand all sensitive detector info to be left with a pure
GDML file.
From
SLIC, use
slic -g clic-sid_cdr.lcdd
for example to load the geometry in memory, then
slic -G clic-sid_cdr.lcdd
to dump the geometry. This allows to see
how SLIC loads the geometry, basically debugging
SLIC as well.
Beware of some bugs in
SLIC related to assemblies and the order of rotations.
From
DD4hep, use
geoConverter -compact2lcdd -input compact.xml -output dd4hep.lcdd
gGeoManager->Export(“clic-crr.gdml”)
or use
Export(“clic-crr.root”)
to export in ROOT format.
From
Mokka, one can create a GDML file with
/Mokka/Visu/Detector/DumpGDML
By default this will dump the World volume (whole detector) in
World.gdml
. If one provides a subdetector as argument, it will dump just the subdetector. See the help function for more info.
Beware of bug related to VACUUM material (delete the VACUUM and dummy entries by hand). One can also create a Gear file etc.
Visualisation
To visualise a
GDML file in
ROOT: open ROOT, then
TGeoManager::Import(“myclic.gdml”);
gGeoManager->GetTopVolume()->Draw(“ogl”);
where
ogl
selects the OpenGL engine. All figures from
this section were produced like that.
From
SLIC, do
source ~/ilc_soft/slic/v03-01-06/init_ilcsoft.sh
slic -g clic-sid_cdr.lcdd -n
to get a Geant4 prompt, i.e. a Geant4 interface with the geometry loaded; use Geant4 commands like to visualise the geometry:
Idle> /vis/open OGL
Idle> /vis/scene/create
Idle> /vis/drawVolume
Idle> /vis/viewer/set/viewpointThetaPhi 60 45
Idle> /vis/viewer/set/background white
which, with
this geometry, will display something like this:
From
Mokka, one can visualise the DB geometry via Geant4 as above. See
this example.
To visualise a HEPREP file use jas3. With the
SLIC setup described above, one can see the GUI by doing:
java -jar GeomConverter-2.4-bin.jar