Main Program - Framework
a Java main program has to be set up that
- builds under Java 1.4 (Maven, ant,....)
- builds with gcj (make)
- reads xml files
-
- initially use compact format
- gradually extend/modify as needed
- drivers need to read xml and implement gear
- drivers should create geometry elements
- for detailed view (low level)
- for tracking view (mid level)
- initially export to GDML/LCDD should be suported
optionally some wrapping C++ code should be provided that allows to use LCGO in a C++ programm w/o having to rely on references to Java libraries, e.g. for the properties interface.
Material Database
a material data base is needed that
- consists of the known materials
- has all the material properties needed for dE/dx
- A, Z (mean values) , X0, Interaction length,....
-
- check geant4/geant3 which these are
- is extensible by the user in input xml files
- provides material objects assigned to volumes (tracking) that give
- material properties
- dEdx( PDG, p , flightlength )
- optionally: dEdx( PDG, p , tracjectory ) ?
- material properties/names should be consistent
-
- with geant4
- NIST database (the same ?)
Field map
LCGO needs to provide a mechanism for field maps
- should allow simple field definitions in xml file, e.g.
- <BField x="0.0" y="0.0" z="4.0" unit="Tesla"/>
- or better: <BField x="0.0" y="0.0" z="4.0*Tesla" /> (see System of Units)
- should allow arbitrary field map from file, e.g.
- <BFIeld file="http://some.server.anywhere/ILCDetailedBField.map"/>
- need well defined file format and corresponding implementation class
- need well defined simple interface, e.g.
-
- interface BField
Unknown macro: { public Vector3D at( Vector3D x) ; }
- interface BField
Readout Properties
LCGO drivers need to provide an implementation of an interface to query cellIDs, positions and neighbors:
Geometry Elements
Tracking Geometry
System of Units
it is probably desirable to have a well defined system of units a la Geant4, so that every quantity comes in the properly defined unit. So that one can write code, such as:
cout << " length of TPC [cm]: " << lcgo->getTPCParameters()->getLength() / cm << endl ;