Inner Detector Description in GeoModel

Package structure

Inner detector description consists of the following main packages:

Geometry layouts

There are a number of different geometry layouts but all are variations of three basic layouts. These mostly differ in the pixel B-layer sensor thickness and pitch in eta direction as well as parts of detectors being removed in the initial staged detector.

Description Layout
B-Layer thickness
(microns)
B-layer pixel pitch
(microns)
Removed
DC1-Default Final
200
300

Final Final
250
400

Initial Initial
250
400
Middle Pixel layer and disk.
TRT wheel C.


 It is possible to build the following geometry layouts for the InnerDetector

There are also numerous layouts for the CTB. These are described in the following note: TB2004_layout_v06

Interface to the Inner Detector Readout Classes.

The Manager
The manager contains methods to access the identifier helper and various methods to access detector elements. There are separate managers for Pixel, SCT and TRT. Pixel and SCT derive from the same base class. Listed below are the main methods useful to clients.

SiDetectorManager
  // access to individual elements.
  virtual SiDetectorElement * getDetectorElement(const Identifier &id) const = 0;
  virtual SiDetectorElement * getDetectorElement(const IdentifierHash &idHash) const = 0;

  // access to whole collectiom
  virtual const SiDetectorElementCollection * getDetectorElementCollection() const = 0;
  virtual SiDetectorElementCollection::const_iterator getDetectorElementBegin() const = 0;
  virtual SiDetectorElementCollection::const_iterator getDetectorElementEnd() const = 0;
  // Get version information.
  const Version & getVersion() const; 
  const std::string & getLayout() const; // eg Initial, Final, TestBeam 
  // Access the id helper
  virtual AtlasDetectorID* getIdHelper() const = 0;

  // Methods to query which manager we have
  virtual bool isPixel() const = 0; 
  bool isSCT() const {return !isPixel();}


PixelDetectorManager
  // access via indices
  SiDetectorElement * getDetectorElement(int barrel_endcap, int layer_wheel, int phi_module,
int eta_module) const;
SCT_DetectorManager

  // access via indices
SiDetectorElement * getDetectorElement(int barrel_endcap, int layer_wheel, int phi_module,
int eta_module, int side) const;
TRT_DetectorManager
  // Access Elements Generically-------------------------------------------------
  const TRT_BaseElement *getElement(Identifier id) const;       // Slow          
  const TRT_BaseElement *getElement(IdentifierHash id) const;   // Fast          
     
  // Access Barrel Elements:------------------(Fast)-----------------------------
  const TRT_BarrelElement *getBarrelElement(unsigned int positive,               
					    unsigned int moduleIndex,            
					    unsigned int phiIndex,               
					    unsigned int strawLayerIndex) const; 
  // Access Endcap Elements:------------------(Fast)-----------------------------
  const TRT_EndcapElement *getEndcapElement(unsigned int positive,               
					    unsigned int wheelIndex,             
					    unsigned int strawLayerIndex,        
					    unsigned int phiIndex) const;        
  // Access Numerological information:-------------------------------------------
  const TRT_Numerology * getNumerology() const;                                  
 
 // Get version information.
  const Version & getVersion() const; 
  const std::string & getLayout() const; // eg Initial, Final, TestBeam 
  // Access the id helper
  virtual AtlasDetectorID* getIdHelper() const = 0;



The Detector Elements

All detector elements classes derive from a common TrkDetElementBase base class for common treatment in the tracking code.

SCT and Pixel

SCT and pixel share a common detector element (SiDetectorElement). For SCT and Pixel most of the methods clients will use are in SiDetectorElement. Sometimes it is necessary to access the Design class for more detailed information - this generally requires a dynamic cast to the concrete classes for pixel, SCT barrel and SCT forward.


TRT

For the TRT the most commonly needed methods are in the base element (TRT_BaseElement). More barrel and endcap specific methods can be accessed in TRT_BarrelElement and TRT_EndcapElement and also the Descriptor classes.

 

Alignment
Most clients do not need to worry about the details of the alignment infrastructure. Positions of the active elements and derived quantities are cached. These cached quantities are automatically invalidated when alignments change and are recalculated on the next access. Client, therefore, always get the updated positions. The alignment infrastructure is fully in place for the silicon detector elements. The barrel TRT modules are also alignable in the test beam geometry. The alignment makes use of the ability to have alignable nodes in GeoModel, allowing alignment shifts to be placed at different levels in the hierarchy. The alignment shifts are read in from the conditions database making use of the interval of validity mechanism which triggers call-backs when alignment constants change. The registering of the call backs are off by to default. To enable them, the following job option switches are available.

GeoModelSvc.PixelDetectorTool.Alignable = TRUE
GeoModelSvc.SCT_DetectorTool.Alignable = TRUE

 

Example Packages
The following example packages are in InnerDetector/InDetExample/InDetDetDescrExample


Thank you for your feedback sent to Grant Gorfine and Joe Boudreau.