160 likes | 275 Views
Use of a Generic Identification Scheme Connecting Events and Detector Description in Atlas. Authors: C. Arnault, RD Schaffer (LAL Orsay) The problem: Data coming from a HEP detector requires access to “detector description” to be used E.g. geometry, calibration, alignment
E N D
Use of a Generic Identification Scheme Connecting Events and Detector Description in Atlas • Authors: C. Arnault, RD Schaffer (LAL Orsay) • The problem: • Data coming from a HEP detector requires access to “detector description” to be used • E.g. geometry, calibration, alignment • This can be done in many ways, but ultimately this relies on a key-lookup to match the readout data with its detector description data • The chosen solution: • An identification scheme which follows an hierarchical structure of the detector • Support: id dictionary, various identifiers, and id “helpers” - factories/manipulators RD Schaffer & C. Arnault CHEP03
A historical overview • Basic identifier classes available - 1998 • Incorporation in first C++ event model • Based on expanded form of Identifier • Migration to next generation event model - 2002 - today • Deployment of an Identifier dictionary • Movement to compact and hash identifiers • Use of an two-level container based on hashes RD Schaffer & C. Arnault CHEP03
Pixel SCT TRT NegEndCap Barrel PosEndCap … … wafer eta 0 wafer phi 0 wafer phi N wafer eta N … disk 0 disk 1 disk 2 layer 0 layer 1 layer 2 disk 0 disk 1 disk 2 strip 0 strip N The Identifier Specification • We have defined a tree-like identifier for all detectors: • E.g. Silicon Strip Tracker (SCT): ID levels Detector system InnerDetector subsystem radial phi eta Detector element level Readout channel level RD Schaffer & C. Arnault CHEP03
The Identifier Specification (2) • Specification may identify different parts, depending upon the depth • Subdetector, barrel/endcap, detector elements, readout channels • As will be seen, this has led to a three-level model used in different parts of the software 1..n 1..n Subdetector Detector element Readout channel RD Schaffer & C. Arnault CHEP03
Infrastructure: Basic Model Get id for a particular wafer Initialize dictionary client wafer_id(values) DOM Parser ID Helper id pack id read parse and build ID Dictionary XML specification RD Schaffer & C. Arnault CHEP03
Infrastructure: Identifier classes • Various identifier classes • only contain numbers - no strings • Expanded - internal representation is vector<short> • Compact - 32 bit, created by id dictionary • Hash - 32 bit, transformation of id to number 0 - N elements • Allows constant-time table look-up RD Schaffer & C. Arnault CHEP03
Infrastructure: Range classes • Specification “capture” • Range class • contains the allowed values at each level for a region of identifiers • Each level: min/max or enumeration (plus wild-carded min/max) • 2 / -2, 2 / 1 / -6 : 6 / 0 : 55 / 0 : 767 • MultiRange class • full specification for a part of detector (vector<Range>) • Both provide • iterators over ids • match(id) - id validity check RD Schaffer & C. Arnault CHEP03
Infrastructure: Identifier dictionary • Features: • Defines logical hierarchy, providing a name for each level • Specifies the non-overlapping regions of valid identifier values • E.g. each barrel layer is a different region because N changes • Primary specification is in XML files => • DOM parser builds IdDictDictionary in memory • Dictionary operations: • Can perform various queries on dictionary • Extract MultiRange object for a subset of the specification • Pack/unpack identifiers (expanded <=> compact 32 bit) RD Schaffer & C. Arnault CHEP03
Infrastructure: Helper classes • The client interface to the ID dictionary • Each detector system has an ID helper class • There is a common implementation base class • Create/decode compact ids • Defines which ids can be created • E.g. detector element or readout channel • Converts compact id <=> hash id • Provides iterators over all identifiers • Can provide (limited) access to neighbour identifiers • Dictionary contains previous/next, min/max, wrap around RD Schaffer & C. Arnault CHEP03
Infrastructure: Helper classes (2) • Part of interface of PixelID helpers ; PixelID Identifier wafer_id ( int barrel_ec, int layer_disk, int phi_module, int eta_module ) const; Identifier pixel_id ( const Identifier& id, int phi_index, int eta_index) const; int barrel_ec (const Identifier& id) const; int layer_disk (const Identifier& id) const; int phi_module (const Identifier& id) const; int eta_module (const Identifier& id) const; int phi_index (const Identifier& id) const; int eta_index (const Identifier& id) const; RD Schaffer & C. Arnault CHEP03
More on compact and hash ids • Dictionary packs level values in an optimized binary representation • Want to fit all readout channels into 32-bit id • Maintaining simple decoding of each of the different levels • I.e. simple “mask and shift” operations • Pixel readout channel id requires some special treatment (36 bits) • Use generic packing algorithm takes into account non-overlapping sub-regions • Packed id stores indices - level values kept in dictionary • Compact id can be used as a key in a binary look-up RD Schaffer & C. Arnault CHEP03
More on compact and hash ids (2) • The term “hash id” is not quite exact • The dictionary “knows” the extent of values for any subset of compact identifiers • This can be used to convert a subset into a sequence of 0 to N-1 • Binary look-up becomes constant-time look-up • Look-up table size is known and minimized • The hash id allows “pointer-like” navigation while “decoupling” different parts of the model RD Schaffer & C. Arnault CHEP03
1..n 1..n Container Collection T: Digit Impact of identifiers on the data model • Introduced a two-level container used for event data: • Currently being used in High Level Trigger studies for data access for reconstruction within region-of-interest (ROI) • ROI from LVL1 trigger => => hash ids => collections to decode from online byte-stream • Integrated in the triggering of the Athena conversion services • Used in offline reconstruction for data access within roads detElem Hash id Readout channel id RD Schaffer & C. Arnault CHEP03
Alg Impact of identifiers on the data model (2) • Connection to detElem transformation matrices Detector Store Detector Element hierarchy GeoModel node hierarchy 1..* IdHelper root 1 parent DetNode DetDescr interface 1 1 DetDescrMgr 1..* Alg children Descriptor 1 PhyVol Hash id 1 0..* position DetDescrElement (position) 1..* RD Schaffer & C. Arnault CHEP03
Summary • We have set up an hierarchical identification system reflecting the structure of the detectors • Used to identify detector elements and readout channels • The identification specification is captured in memory in an “identifier dictionary” • Fed by an XML description • Various forms of identifiers are being used: • Compact 32-bit identifiers • Hash ids provide constant-time look-ups RD Schaffer & C. Arnault CHEP03
Summary (2) • Use cases for identifiers include: • The connection of event data to detector description • Access to event data within regions-of-interest • A new iteration of the definition of our event model is being completed and incorporate for a first time compact and hash ids • The usefulness of the identifiers will be understood better in the coming weeks as studies are performed for the High Level Trigger Technical Design Report RD Schaffer & C. Arnault CHEP03