Fermilab


Go to top,

UgliGeometry Package

UgliGeometry

Planes & Strips

Planes & Strips

Notes and Further References

To access the UgliGeometry you need to create a UgliGeomHandle, and for that you need a context. This concept was introduced in the Validity slide and the associated notes explained how to get a VldContext for a RawRecord:-
  const VldContext* vc = raw->GetVldContext();  
although any class that inherits from RecMinos (the base class for all Records) will provide a context. From the context a lightweight UgliGeomHandle can be constructed:- GeomHandle ugh(*vc); You can examine UgliGeomHandle.h to see what methods are available, in particular it has the methods:- UgliScintPlnHandle GetScintPlnHandle(PlexPlaneId planeid); UgliSteelPlnHandle GetSteelPlnHandle(PlexPlaneId planeid); UgliStripHandle GetStripHandle(PlexStripEndId seid); Which, given plane or strip end ids (for example from the Plex ) will give handle to objects that represent the geometry of as plane or a strip. You can examine their headers:- to see what information they provide.

Exercises

Loading the database tables for the Far Detector Geometry takes time and it may be that if lots of people run this demo at the same time it will overload the computer hosting the the tutorial. In which case we should run this as a demonstration, rather than an exercise.

This exercise builds on the Adding Plex to loon exercise. Procede as follows:-

  1. After the Plex headers add the following Ugli headers. #include "UgliGeometry/UgliGeomHandle.h" #include "UgliGeometry/UgliSteelPlnHandle.h"
  2. In the modified UserAnalysis::Ana after:- const VldContext* vc = raw->GetVldContext(); PlexHandle plxh(*vc); add:- UgliGeomHandle ugh(*vc); and after:- cout << " RawChannelId " << rcid << " has " << psal.GetSize() << " alternative(s)\n" << " currently the \"best\" alternative has weight " << psal.GetBestWeight(); PlexStripEndId pseid = psal.GetBestSEId(); replace:- cout << " and comes from plane " << pseid.GetPlane() << endl; by:- UgliSteelPlnHandle ugsph = ugh.GetSteelPlnHandle(pseid); cout << " and comes from plane " << pseid.GetPlane() << " at Z = " << ugsph.GetZ0() << endl;
These modifications show how the PlexPlaneId (from which PlexStripEndId inherits) can be used to get a UgliSteelPlnHandle from which the planes'z Z can be determined.

To run the exercise first rebuild loon and then type:-

  loon -q run_UserAnalysis.C $ROOT_DATA/fardet_data/2002_06/F00005963_0000.mdaq.root
Contact: Nick West <n.west1@physics.ox.ac.uk>
Fermilab
Security, Privacy, Legal Fermi National Accelerator Laboratory