Title: The New ROOT Geometry Package
1The New ROOTGeometry Package
- ACAT2002
- Moscow 24 June
- René Brun, Andrei Mihaela Gheata
- CERN
2Simulation tools
Geant3 created in 1981 Still used by the
majority of experiments
Geant4 A huge investment Slow penetration in
experiments
Fluka State of the art for hadronics and neutron
physics
3Detector Geometry (way 1)
Simulation program Geant4-based
C classes
Geant4 geometry
Visualisation
XML files
Reconstruction program
MySQL
4The Virtual MonteCarlo
For example AliRoot in Alice
DAQ Online
This strategy facilitates migration or
comparisons with a common input and a common
output
Geant3
Kinematics
Geometry
Geant4
Fluka
TVirtualMC
Geant3.tar.gz includes an upgraded Geant3 with a
C interface
Hits, Digits
Geant4_mc.tar.gz includes the TVirtualMC
lt--gtGeant4 interface classes
5Virtual MC example (with G3)
// Load basic libraries gSystem-gtLoad("libPhy
sics") gSystem-gtLoad("libMC")
gSystem-gtLoad("(MCINSTALL)/lib/Linux-g/libexamp
le01") // Load Geant3 libraries //
skipped // MC application Ex01MCApplication
appl new Ex01MCApplication("Example01",
"The example01 MC application")
appl-gtInitMC("g3Config.C") appl-gtRunMC(1)
void Config()
g3Config.C cout ltlt "Create geant3" ltlt endl
new TGeant3("C Interface to Geant3")
6Virtual MC example (with G4)
// Load basic libraries gSystem-gtLoad("libPhy
sics") gSystem-gtLoad("libMC")
gSystem-gtLoad("(MCINSTALL)/lib/Linux-g/libexamp
le01") // Load Geant4 libraries //
skipped // MC application Ex01MCApplication
appl new Ex01MCApplication("Example01",
"The example01 MC application")
appl-gtInitMC("g4Config.C") appl-gtRunMC(1)
void Config()
g4Config.C // RunConfiguration for Geant4
TG4RunConfiguration runConfiguration new
TG4RunConfiguration() // TGeant4 new
TGeant4("TGeant4", "The Geant4 Monte Carlo",
runConfiguration)
7Detector Geometry (way 2)
Modelling Visualisation Interactivity Where am
I? Distance to boundary Closest
boundary Persistency
Simulation program Geant3-based Geant4-based Fluka
-based
C classes
Geometry package
MySQL
Reconstruction program
Visualisation
8The new ROOT Geometry package
- Was the request Nr 1 at ROOT FNAL workshop in
June 2001 - The package is being developed in collaboration
with Alice (Andrei Mihaela Gheata) - Alpha release in July
- faster than Geant3
- Import from Geant3 (eg 4 LHC detectors)
- Interfaces to Geant3,4, Fluka in view
- Demos on request
9The TGeo classes in htmlhttp//pcbrun.cern.ch/geo
/ClassIndex.html
10TGeoManager
11TGeoShape
12TGeoVolume
13TGeoNode
14Example
15Automatic conversion from Geant3
Zebra memory Data structure JVOLUM JMATE,etc
Root gt .x mygeom.C
Mygeom.c
void gexam1() TGeoMaterial mat TGeoMixture
mix TGeoManager gexam1 new
TGeoManager("gexam1","gexam1.C") //-----------Li
st of Materials and Mixtures-------------- mat
new TGeoMaterial("mat9","ALUMINIUM",26.98,13,2.7)
mix new TGeoMixture("mix10","IRON(COMPOUND)",3)
mix-gtDefineElement(0,55.847,26,0.703964)
mix-gtDefineElement(1,58.71,28,0.9900000E-01)
mix-gtDefineElement(2,51.998,24,0.197) mat new
TGeoMaterial("mat11","COPPER",63.54,29,8.96)
Geant gt RZ/File 21 mygeom.geom on
Zebra RZ mygeom.geom
g2root mygeom.geom mygeom.C
16Example gexam1
//-----------List of Volumes-------------- TGeoV
olume ECAL ECAL gexam1-gt MakeTube("ECAL","mat
15",0,5.898013,12.35774) LEAK
gexam1-gtMakeTube("LEAK","mat15",0,5.898013,0.56171
55) LATR gexam1-gtMakeTube("LATR","mat15",5.6171
56,5.813,11.23) BLOC gexam1-gtMakeTube("BLOC","m
ix21",0,5.617156,11.23431) //-----------List of
Nodes-------------- gexam1-gtSetTopVolume(ECAL)
ECAL-gtAddNode(LEAK,1,new TGeoTranslation(0,0,-11.7
9603)) ECAL-gtAddNode(LEAK,2,new
TGeoTranslation(0,0,11.79603))
ECAL-gtAddNode(LATR,1,gGeoIdentity)
ECAL-gtAddNode(BLOC,1,gGeoIdentity) TGeoVolume
RTUB BLOC-gtDivide("RTUB",1,20,0,0.2808578)
TGeoVolume RING RTUB-gtDivide("RING",3,20,-11.31
,1.131) gexam1-gtCloseGeometry()
void gexam1() TGeoMaterial mat TGeoMixture
mix TGeoManager gexam1 gexam1 new
TGeoManager("gexam1","gexam1.C") //-----------Li
st of Materials and Mixtures-------------- mat
new TGeoMaterial("mat9","ALUMINIUM",26.98,13,2.7)
mix new TGeoMixture("mix10","IRON(COMPOUND)",3)
mix-gtDefineElement(0,55.847,26,0.703964)
mix-gtDefineElement(1,58.71,28,0.9900000E-01)
mix-gtDefineElement(2,51.998,24,0.197) mat new
TGeoMaterial("mat11","COPPER",63.54,29,8.96) mat
new TGeoMaterial("mat13","LEAD",207.19,82,11.35)
mat new TGeoMaterial("mat14","URANIUM",238.03,
92,18.95) mat new TGeoMaterial("mat15","AIR",14
.61,7.3,0.1205E-02) mat new TGeoMaterial("mat16
","VACUUM",0,0,0) mix new TGeoMixture("mix21","
BGO(COMPOUND)",3) mix-gtDefineElement(0,208.98,8
3,0.6710563) mix-gtDefineElement(1,72.59,32,0.17
48205) mix-gtDefineElement(2,15.999,8,0.1541233)
mix new TGeoMixture("mix22","LEAD GLASS",6)
mix-gtDefineElement(0,207.19,82,0.65994)
mix-gtDefineElement(1,39.102,19,0.7990000E-02)
mix-gtDefineElement(2,28.088,14,0.126676)
mix-gtDefineElement(3,22.99,11,0.4007300E-02)
mix-gtDefineElement(4,15.999,8,0.199281)
mix-gtDefineElement(5,74.922,33,0.2004850E-02)
gexam1.C code generated automatically by g2root
17Brahms
2649 nodes
18CMS
1.3 million nodes
19Atlas
29 million nodes
20Atlas
21Atlas
22Alice
23Alice
3 million nodes
24TGeo performance vs Geant3
Number gtmedi Root
Geant3/ gtmedi Root Geant3/
nodes physics physics Root random random
Root Gexam1 425 3.08 1.84 1.67
6.60 4.39 1.50 Gexam3 86
2.87 2.15 1.33 3.47 2.50
1.38 Gexam4 12781 2.51 2.20 1.14
12.09 11.18 1.08 Brahms 2649
5.82 3.04 1.91 4.17 1.93
2.16 Tesla 15370 6.56 5.58 1.17
12.95 7.15 1.81 CDF 24422
14.81 4.31 3.43 20.94 5.85
3.57 Minos_near 30988 30.93 20.99 1.47
21.57 13.70 1.57 BTeVEcal 52
1.57 1.08 1.45 1.78 0.73
2.43 BTeV 295310 45.27 25.88 1.75
197.06 26.83 7.34 CMSEcal 251713
5.60 1.81 3.09 5.69 1.74 3.27 CMS
1166310 33.57 8.76 3.83 39.09
24.98 1.56 LHCb 1533488 7.98
6.75 1.18 12.58 2.89 4.35 Alice
3080198 11.50 8.63 1.33 11.45 7.28
1.57 Atlas 29046966 8.90 9.94
0.89 32.48 23.39 1.38
25BteV
26Validation Procedure
Use one million points generated by
Geant3. Compare G3 path vs TGeo found path
(pictures for a CDF event)
27Validation Procedure
- Using points generated by Geant3 applications
- grecord.f --gt mygeom.geom, mygeom.hbook
- Play-back these points in Geant3 using only the
Geant3 geometry package. Compute g3path, snext,
safety in myresults.hbook - h2root myresults.hbook myresults.root
- Same operation with TGeo classes. Compare g3path
with tgeopath, same for snext, safety - Some discrepancies with Geant3 (see next)
28Validation ProcedureDifferences Geant3 TGeo
- Due to precision problems in Geant3, points
recorded at the volume boundaries may be found on
the other side by TGeo. - When volumes declared MANY in Geant3 overlap and
have sub-volumes also MANY, Geant3 is not always
reporting the right answer. In general it does
not matter, sometimes it does. - In this exercise, we also found original errors
in the detector description, eg wrong parameters.
29Status of the implementation - test of gtnext
- Visualization - best tool for checking the
algorithms - The "width" of the boundaries due to floating
point limitations was determined for some shapes - This diffusion effect is crucial for fixing
stepping actions in order to trigger expected
inside/ouside response of the modeler - The diffusion was defined as the distance between
extrapolated point from step and closest point
that changes this in/out response.
30Status of the implementation
- Geant3 geometries - almost fully mapped (still
not supporting multiple positioning for volumes
having shapes with negative parameters which then
are divided - quite seldom topology) - "Where am I ?" - fully implemented
- Tested on a dozen of geometries, including all 4
LHC experiments - Performance w.r.t GEANT3 - OK. The average gain
factor 1.5-2.0 , increasing for flat-like
geometries - Consistency vs. GEANT3 response reasonable
still few differences, but fully understood - Still scope for increasing speed, specially for
cylindrical symmetries, where the current
voxelization algorithm is not efficient enough.
31Status of the implementation - gtnext
- "Which is the next crossed boundary ?" - about
80 implemented, still a couple of weeks to work
on it. - Algorithms per shape improved w.r.t G3 for some
shapes - New functionalities added normals to surfaces
at crossing points, accurate distance to closest
node, direction vector to closest point - Features for stepping added flags for entering
and exiting
32Summary
- The new Geometry Package looks very promising.
- We have been able to model all existing large
detectors. - Performance is better than Geant3.
- We are planing to interface it via TVirtualMC to
Geant3, Geant4 and Fluka. - Alpha release with ROOT version 3.03/07