This package provides tools for mananging the physical placement of
detector elements in 3-space.
See also UgliGeometry Overview
The lightweight object UgliGeomHandle is the general user interface
to the package. These objects are created with a VldContext:-
The handles use the UgliLoanPool as a repository
for shared information and are thus expected to be built on
the stack (i.e. no new) and discareded as necessary in
all but the tightest loops.
From the UgliGeomHandle one can then use
Plex logical element identifiers
to request individual
UgliScintMdlHandle, UgliStripHandle objects.
These can be queried for their information about placements
and fiber lengths.
This package makes use of the following tables:
The UgliGeometry package can be configured via the UgliLoanPool object.
// UgliLoanPool is a CfgConfigurable
UgliLoanPool* ulpool = UgliLoanPool::Instance();
The following are configurable:-
||Grossest approximation of the detector hall as a rectangular box.
The x-y-z entents are held by this table.
||Describes the number of modules for a plane of any given
view and coverage.
||Describes common features of all strips of a given view,
coverage, strip number. These include their total length,
the length of the WLS pigtails, and partial lengths and
bypass WLS length if split by the coil bypass.
||Defines the abosulte placement and rotation of an
individual steel plane in a detector.
||Defines the placement and rotation of an
individual scintillator plane relative to
the steel plane to which it is attached.
||Defines the placement and rotation of a scintillator
module on a scintillator plane. It also contains the
length of clear fiber cable attached to each end
of the module. For CalDet there is the possibility
of additional WLS fiber on each end.
||Defines the placement and rotation of stips within
the scintillator modules. Also provides elements
for characterizing the curvature of individual strips.
||Identifies the actual installation date of a plane
(also the slab and module numbers). Used here only
to restrict the inclusion of planes during the
- Algorithmic placement
One can signal the package to construct an idealized detector
geometry in some cases; this is not implemented for all
detectors at this time.
ulpool->Set("AlgorithmicNear = 1");
ulpool->Set("AlgorithmicFar = 1");
ulpool->Set("AlgorithmicCalDet = 1");
- REROOT file geometries
When reading a reroot (translated from an fortran based
ADAMO) file one can make use of the geometry written in the
file. It does this by translating that information into
the necessary format and storing it to a temporary database table.
This process can be quite slow and is by default turned off;
to enable it in the case of geometries not correctly represented
in the permanent tables use:-
ulpool->Set("AlwaysUseDbi = 0");
- Caching to/from disk
A collection for UgliGeometry objects managed by the
UgliLoanPool can be written/read to/from disk.
One can specify a file for such caching:-
ulpool->Set("Cache = '/tmp/myugli.cache'");
- Write cache to disk
One can trigger the writting of the cache to disk at the end
of the job by:-
ulpool->Set("CacheWrite = 1");
- Using FabPlnInstall to limit planes
During the construction phase it is often necessary to
have the database tables be 'generous' about which planes to
include due to the difficulties of adding new entries only
after the plane has been installed (but without too much delay).
One can use the FabPlnInstall table to then trim
which are included. The trimming of individual detectors
can be managed via:-
ulpool->Set("CutOnPlnInstallNear = 0");
ulpool->Set("CutOnPlnInstallFar = 1");
ulpool->Set("CutOnPlnInstallCalDet = 0");
One can additionally impose this trimming on
VetoShield planes and in the case of MC geometries.
The message service level at which all triming is reported
can also be managed.
ulpool->Set("CutAppliesToVetoShield = 0");
ulpool->Set("CutAppliesToMC = 0");
ulpool->Set("CutMsgLevel = 'Synopsis'");
The initial configuration of the UgliLoanPool can be set
using the environmental variable ENV_UGLI which can contain
a semi-colon separated list of configuration requests.
Last Modified: $Date: 2004/10/13 12:04:03 $