Muon Spectrometer
description in
GeoModel
Package
structure
Geometry layouts
Interface to the MuonReadoutElements
Package
structure
The software for the description of the Muon Spectrometer consists
of several packages:
- MuonSpectrometer/MuonGeoModel - contains
- GeoModel
specific
classes, such
as the Detector Tool, the Factory for building the geometry of
the
entire Spectrometer for the various layouts
- service classes, holding the
primary numbers from the Geometry Database:
- Station, Position, AlignPos
- Component, StandardComponent, XxxComponent, Cutout
- Technology, XXX
- service classes building the PhysicalVolumes in the geometry
tree
- MuonChamber
- Xxx, Spacer, Ded, Sup
- Multilayer, DriftTube, CscMultilayer, RpcLayer
- ToroidBuilder, ShieldBuilder
- MuonSpectrometer/MuonReadoutGeometry - currently empty;
should contain the following classes, now
hosted in MuonSpectrometer/MuonGeoModel
- ManagerDetectorManager
- MuonReadoutElement, XxxReadoutElement
- RpcReadoutSet, TgcReadoutParams
- MuonSpectrometer/MuonGeoModelTest - contains algorithms
to test the functionality of the muon geometry:
- MuonGMCheck
- produces, on demand, printouts of the global
positions of all channels (first and last in every unit) selected by Id
- produces, on demand, tables of eta-phi ranges covered by each
readout unit (according to the EDM) for use of the RegionSelector
service
- MuonGMCheckPos
- a simplified version of the previous algorithm
- MuonGMTest
- runs on digits collections - retrive geometry information
corresponding to the digits
- MuonGMG4Test
- runs on simulated hit collections - compute the global
position of the hit from its local coordinates
- MuonSpectrometer/MuonGMdbObjects - holds classes initialised with the
Oracle data tables necessary to describe the active components of the
Muon Spectrometer.
- This
allows to use template functions (in DBReader.h) to fill the service classes, holding the primary
numbers from the Geometry Database, starting from data retrieven
from Nova or Oracle.
Geometry
layouts
It is possible to build the following geometry layouts with
MuonGeoModel
- P03 - default for
DC2 production
- Amdb file: amdb_simrec.p.03
- Oracle tags - Node:
ATLAS-00 - Key:
MuonSpectrometer-00
- Using AtlasGeoModel to set the geometry version, select
- Q02 - default for Rome
Physics Workshop (final layout)
- Oracle tags - Node:
Atlas-Rome-Final-00 - Key:
Muon-Rome-Final-00
- Using AtlasGeoModel to set the geometry version, select
- DetDescrVersion="Rome-Final"
- Q02_initial_pro -
default for Rome Physics Workshop (initial layout)
- Oracle tags - Node:
Atlas-Rome-Initial-02 - Key: Muon-Rome-Initial-01
- Using AtlasGeoModel to set the geometry version, select
- DetDescrVersion="Rome-Initial"
- Notes: BOG in full size with
cutouts - no conflicts with the Atlas feet. Used to simulate muon
samples and
to digitize Rome Workshop samples (release 9.0.4 and subsequent)
- Q02_initial - initial
implementation for Rome Physics Workshop (initial layout)
- Oracle tags - Node:
Atlas-Rome-Initial-01 - Key: Muon-Rome-Initial-00
- Using AtlasGeoModel to set the geometry version, select
- DetDescrVersion="Rome-Initial-v00"
- Notes: BOG shortened to
avoid conflicts with the Atlas feet. Used to simulate non muon samples
and minimum bias events for Rome Workshop (release 9.0.3)
- CTB2004 - Builds the Muon Chambers in the combined
testbeam setup
geometry of the year 2004.
Interface to the
MuonReadoutElements
Basic elements of the Readout Geometry of the Muon Spectrometer are the
XxxReadoutElemens. These correspond to:
- MdtReadoutElement corresponds ro a MDT multilayer
- A mdt digit collection holds
hits belonging to both multilayer: to retrive a MdtReadoutElement one
needs to specify an Identifier defined in the channel context
- CscReadoutElement corresponds ro a CSC chamber layer
- A csc digit collection holds
hits belonging to both chambers: to retrive a CcsReadoutElement one
needs to specify an Identifier defined in the channel context
- RpcReadoutElement corresponds ro a RPC module
- A rpc digit collection holds
hits belonging to all rpc modules in a doubletR (below or above the
corresponding Mdt): to retrive a RpcReadoutElement one needs to specify
an Identifier defined in the channel contex
- TgcReadoutElement corresponds ro a TGC chamber
- A tgc digit collection holds
hits belonging to a Tgc chamber: to retrive a TgcReadoutElement one
needs to specify an Identifier defined in the module context
The interface to these objects is provided by
tile detector description manager:
// access to Readout Elements
const MdtReadoutElement* getMdtReadoutElement(Identifier) const;
const MdtReadoutElement* getMdtRElement_fromIdFields(int i1, int i2, int i3, int i4) const;
const RpcReadoutElement* getRpcReadoutElement(Identifier) const;
const RpcReadoutElement* getRpcRElement_fromIdFields(int i1, int i2, int i3, int i4, int i5, int i6) const;
const TgcReadoutElement* getTgcReadoutElement(Identifier) const;
const TgcReadoutElement* getTgcRElement_fromIdFields(int i1, int i2, int i3) const;
const CscReadoutElement* getCscReadoutElement(Identifier) const;
const CscReadoutElement* getCscRElement_fromIdFields(int i1, int i2, int i3, int i4) const;
Generic interfaces of the XxxReadoutElements are:
// identity of the detector
inline Identifier identify() const;
// like MDT, RPC, TGC, CSC
inline const std::string getTechnologyType() const;
// like MDT1, RPC4, TGC1, etc...
inline const std::string getTechnologyName() const;
inline void setTechnologyName(std::string str);
// BOL, EIS, BMF, T1F, etc ...
inline const std::string getStationType() const;
// BOL1, BEE1, etc...
inline const std::string getStationName() const;
inline void setStationName(std::string );
// size of the detector
inline const double getSsize() const;
inline const double getRsize() const;
inline const double getZsize() const;
inline const double getLongSsize() const;
inline const double getLongRsize() const;
inline const double getLongZsize() const;
// info related to Amdb specific conventions
inline const double getStationS() const;
inline const int getAmdbZi() const;
inline const int getAmdbFi() const;
inline const bool isDescrAtNegZ() const;
// location of the detector
inline const bool isMirrored() const;
const bool barrel() const;
const bool endcap() const;
const bool largeSector() const;
const bool smallSector() const;
inline const bool sideA() const;
inline const bool sideC() const;
HepPoint3D parentStationPos() const;
inline const int getStationEta() const;
inline const int getStationPhi() const;
inline void setStationEta(int );
inline void setStationPhi(int );
const HepPoint3D globalPosition() const;
virtual const HepTransform3D & transform() const;
virtual const HepTransform3D & defTransform() const;
// Tracking related interfaces
virtual const Trk::Surface & surface() const;
virtual const Trk::Surface & surface(const Identifier& id) const;
virtual const Trk::SurfaceBounds & bounds() const;
virtual const Trk::SurfaceBounds & bounds(const Identifier& id) const;
virtual const HepTransform3D & transform(const Identifier&) const {return transform();};
virtual const HepTransform3D & defTransform(const Identifier&) const {return defTransform();};
virtual const HepPoint3D & center() const;
virtual const HepVector3D & normal() const;
virtual const HepPoint3D & center(const Identifier&) const;
virtual const HepVector3D & normal(const Identifier&) const;
Thank you for your feedback sent to Stefania Spagnolo,
Isabel Trigger, Vakho Tsulaia, and Joe Boudreau.