Presentation is loading. Please wait.

Presentation is loading. Please wait.

The New ROOT Geometry Package

Similar presentations


Presentation on theme: "The New ROOT Geometry Package"— Presentation transcript:

1 The New ROOT Geometry Package
RTAG MC CERN 8 August René Brun, Andrei & Mihaela Gheata CERN ftp://root.cern.ch/root/rootgeom.ppt ROOT Geometry PackageL

2 Simulation tools Geant3 Geant4 Fluka 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 R.Brun RTAG MC ROOT Geometry Package

3 Detector Geometry (way 1)
Simulation program Geant4-based C++ classes Geant4 geometry Visualisation XML files Reconstruction program MySQL R.Brun RTAG MC ROOT Geometry Package

4 The Virtual MonteCarlo
For example AliRoot in Alice This strategy facilitates migration or comparisons with a common input and a common output DAQ Online 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 <-->Geant4 interface classes R.Brun RTAG MC ROOT Geometry Package

5 Virtual MC example (with G3)
{ // Load basic libraries gSystem->Load("libPhysics"); gSystem->Load("libMC"); gSystem->Load("$(MCINSTALL)/lib/Linux-g++/libexample01"); // Load Geant3 libraries // … skipped // MC application Ex01MCApplication* appl = new Ex01MCApplication("Example01", "The example01 MC application"); appl->InitMC("g3Config.C"); appl->RunMC(1); } void Config() g3Config.C { cout << "Create geant3" << endl; new TGeant3("C++ Interface to Geant3"); } R.Brun RTAG MC ROOT Geometry Package

6 Virtual MC example (with G4)
{ // Load basic libraries gSystem->Load("libPhysics"); gSystem->Load("libMC"); gSystem->Load("$(MCINSTALL)/lib/Linux-g++/libexample01"); // Load Geant4 libraries // … skipped // MC application Ex01MCApplication* appl = new Ex01MCApplication("Example01", "The example01 MC application"); appl->InitMC("g4Config.C"); appl->RunMC(1); } void Config() { g4Config.C // RunConfiguration for Geant4 TG4RunConfiguration* runConfiguration = new TG4RunConfiguration(); // TGeant4 new TGeant4("TGeant4", "The Geant4 Monte Carlo", runConfiguration); } R.Brun RTAG MC ROOT Geometry Package

7 Detector 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 R.Brun RTAG MC ROOT Geometry Package

8 The 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 R.Brun RTAG MC ROOT Geometry Package

9 The TGeo classes in html http://root. cern. ch/root/htmldoc/ClassIndex
R.Brun RTAG MC ROOT Geometry Package

10 TGeoManager R.Brun RTAG MC ROOT Geometry Package

11 TGeoShape R.Brun RTAG MC ROOT Geometry Package

12 TGeoVolume R.Brun RTAG MC ROOT Geometry Package

13 TGeoNode R.Brun RTAG MC ROOT Geometry Package

14 Example R.Brun RTAG MC ROOT Geometry Package

15 The ROOT “detector” example
R.Brun RTAG MC ROOT Geometry Package

16 Shooting random points
R.Brun RTAG MC ROOT Geometry Package

17 Shooting random rays R.Brun RTAG MC ROOT Geometry Package

18 Automatic conversion from Geant3
Zebra memory Data structure JVOLUM JMATE,etc Root > .x mygeom.C Mygeom.c void gexam1() {TGeoMaterial *mat; TGeoMixture *mix; TGeoManager *gexam1 = new TGeoManager("gexam1","gexam1.C"); // List of Materials and Mixtures mat = new TGeoMaterial("mat9","ALUMINIUM",26.98,13,2.7); mix = new TGeoMixture("mix10","IRON(COMPOUND)",3); mix->DefineElement(0,55.847,26, ); mix->DefineElement(1,58.71,28, E-01); mix->DefineElement(2,51.998,24,0.197); mat = new TGeoMaterial("mat11","COPPER",63.54,29,8.96); Geant > RZ/File 21 mygeom.geom on Zebra RZ mygeom.geom g2root mygeom.geom mygeom.C R.Brun RTAG MC ROOT Geometry Package

19 generated automatically
Example : gexam1 // List of Volumes TGeoVolume *ECAL ; ECAL = gexam1-> MakeTube("ECAL","mat15",0, , ); LEAK = gexam1->MakeTube("LEAK","mat15",0, , ); LATR = gexam1->MakeTube("LATR","mat15", ,5.813,11.23); BLOC = gexam1->MakeTube("BLOC","mix21",0, , ); // List of Nodes gexam1->SetTopVolume(ECAL); ECAL->AddNode(LEAK,1,new TGeoTranslation(0,0, )); ECAL->AddNode(LEAK,2,new TGeoTranslation(0,0, )); ECAL->AddNode(LATR,1,gGeoIdentity); ECAL->AddNode(BLOC,1,gGeoIdentity); TGeoVolume *RTUB = BLOC->Divide("RTUB",1,20,0, ); TGeoVolume *RING = RTUB->Divide("RING",3,20,-11.31,1.131); gexam1->CloseGeometry(); } void gexam1() { TGeoMaterial *mat; TGeoMixture *mix; TGeoManager *gexam1; gexam1 = new TGeoManager("gexam1","gexam1.C"); // List of Materials and Mixtures mat = new TGeoMaterial("mat9","ALUMINIUM",26.98,13,2.7); mix = new TGeoMixture("mix10","IRON(COMPOUND)",3); mix->DefineElement(0,55.847,26, ); mix->DefineElement(1,58.71,28, E-01); mix->DefineElement(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->DefineElement(0,208.98,83, ); mix->DefineElement(1,72.59,32, ); mix->DefineElement(2,15.999,8, ); mix = new TGeoMixture("mix22","LEAD GLASS",6); mix->DefineElement(0,207.19,82, ); mix->DefineElement(1,39.102,19, E-02); mix->DefineElement(2,28.088,14, ); mix->DefineElement(3,22.99,11, E-02); mix->DefineElement(4,15.999,8, ); mix->DefineElement(5,74.922,33, E-02); gexam1.C code generated automatically by g2root R.Brun RTAG MC ROOT Geometry Package

20 Brahms 2649 nodes R.Brun RTAG MC ROOT Geometry Package

21 CMS 1.3 million nodes R.Brun RTAG MC ROOT Geometry Package

22 Atlas 29 million nodes R.Brun RTAG MC ROOT Geometry Package

23 Atlas R.Brun RTAG MC ROOT Geometry Package

24 Atlas R.Brun RTAG MC ROOT Geometry Package

25 Alice R.Brun RTAG MC ROOT Geometry Package

26 Alice 3 million nodes R.Brun RTAG MC ROOT Geometry Package

27 TGeo performance vs Geant3
Number gtmedi Root Geant3/ gtmedi Root Geant3/ nodes physics physics Root random random Root Gexam Gexam Gexam Brahms Tesla CDF Minos_near BTeVEcal BTeV CMSEcal CMS LHCb Alice Atlas R.Brun RTAG MC ROOT Geometry Package

28 BteV R.Brun RTAG MC ROOT Geometry Package

29 Validation Procedure Use one million points generated by Geant3.
Compare G3 path vs TGeo found path (pictures for a CDF event) R.Brun RTAG MC ROOT Geometry Package

30 Validation Procedure Using points generated by Geant3 applications
grecord.f --> 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) R.Brun RTAG MC ROOT Geometry Package

31 Validation Procedure Differences 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. R.Brun RTAG MC ROOT Geometry Package

32 Status 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. R.Brun RTAG MC ROOT Geometry Package

33 Status 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 ~ , 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. R.Brun RTAG MC ROOT Geometry Package

34 Status 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 R.Brun RTAG MC ROOT Geometry Package

35 Summary 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 R.Brun RTAG MC ROOT Geometry Package


Download ppt "The New ROOT Geometry Package"

Similar presentations


Ads by Google