
     =========================================================
     Geant4 - an Object-Oriented Toolkit for Simulation in HEP
     =========================================================

                            Example TextGeom
                            ----------------

This example illustrates the use of the text geometry. 

1.- GEOMETRY EXAMPLES

Several examples of text geometries are provided:

g4geom_simple.txt :
- Simple construction of materials and single placements 

g4geom_matemixt.txt :
- Isotopes, elements and materials

g4geom_boolean.txt :
- Boolean solids
 
g4geom_reflections.txt :
- Reflections

g4geom_replicas.txt :
- Replicas

g4geom_divisions.txt :
- Divisions

g4geom_paramLinear.txt :
- Linear parameterisations

g4geom_paramSquare.txt :
- Square parameterisations

g4geom_assembly.txt : 
- Assembly placements

     	
2.- HOW TO START ?
 
    - execute textGeom in 'batch' mode from macro file 
       % textGeom run.mac
 		
It will read the geometry from a file named 'g4geom.txt', and it will create a
VRML2 file to visualise the geometry.
Therefore if you want to try any of the above-mentioned files, copy it to a
file with this name,

 	
3.- DEFINING A SENSITIVE DETECTOR

The detector construction class ExTGDetectorConstructionWithSD shows how to
access a volume of the text geometry and assign to it a sensitive detector.
To use it, replace at exampleTextGeom.cc the line

  runManager->SetUserInitialization(new ExTGDetectorConstruction);

by

  runManager->SetUserInitialization(new ExTGDetectorConstructionWithSD);

and recompile.

It will use the geometry from the file 'g4geom_SD.txt'


4.- MIXING TEXT AND C++ GEOMETRIES   

The detector construction class ExTGDetectorConstructionWithCpp shows how to
create a volume with C++ and place it in the world or inside a volume defined
in the text geometry.
To use it, replace at exampleTextGeom.cc the line

  runManager->SetUserInitialization(new ExTGDetectorConstruction);

by

  runManager->SetUserInitialization(new ExTGDetectorConstructionWithCpp);

and recompile.

It will use the geometry from the file 'g4geom_simple.txt'


5.- CREATING NEW TAGS IN THE TEXT GEOMETRY: DEFINING CUTS PER REGION 

The detector construction class ExTGDetectorConstructionWithCuts, together with
ExTGRCLineProcessor, ExTGRCDetectorBuilder, ExTGRCRegionCutsMgr and
ExTGRCRegionData show how to add a couple of tags, ':REGION' and ':CUT', that
allow to define cuts per region in your input geometry text file. 
To use it, replace at exampleTextGeom.cc the line

  runManager->SetUserInitialization(new ExTGDetectorConstruction);

by

  runManager->SetUserInitialization(new ExTGDetectorConstructionWithCuts);

and recompile.

It will use the geometry from the file 'g4geom_cutsPerRegion.txt'


6.- DUMP THE IN-MEMORY GEOMETRY TO TEXT FILE

The run action 'ExTGRunAction' triggers the writing of the in-memory Geant4
geometry to a text file. 
To use it you just have to uncomment in exampleTextGeom.cc the line

 runManager->SetUserAction(new ExTGRunAction);

and it will read the geometry from the file 'g4geom.txt' and will write the
geometry in a file named 'geom.txt'
