LDMX Software
TrackerID.cxx
2
3#include "DetDescr/DetectorIDInterpreter.h"
4
5namespace ldmx {
6
7std::ostream& operator<<(std::ostream& s, const ldmx::TrackerID& id) {
8 if (id.null())
9 s << "NULL";
10 else if (id.subdet() == ldmx::SD_TRACKER_RECOIL)
11 s << "Recoil(";
12 else if (id.subdet() == ldmx::SD_TRACKER_TAGGER)
13 s << "Tagger(";
14 else
15 s << "UnknownTk(";
16 s << id.layer() << ',' << id.module() << ')';
17 return s;
18}
19
20void TrackerID::createInterpreters() {
22 fields.push_back(new IDField("subdetector", 0, SUBDETECTORID_SHIFT, 31));
23 fields.push_back(
24 new IDField("layer", 1, LAYER_SHIFT,
25 LAYER_SHIFT + IDField::countOnes(LAYER_MASK) - 1));
26 fields.push_back(
27 new IDField("module", 2, MODULE_SHIFT,
28 MODULE_SHIFT + IDField::countOnes(MODULE_MASK) - 1));
29
30 DetectorIDInterpreter::registerInterpreter(SD_TRACKER_TAGGER, fields);
31 DetectorIDInterpreter::registerInterpreter(SD_TRACKER_RECOIL, fields);
32}
33
34} // namespace ldmx
Class that defines a Tracker detector ID with a module number.
static void registerInterpreter(SubdetectorIDType idtype, const IDField::IDFieldList &fieldList)
Register a new field interpreter for a given subdetector id.
static unsigned countOnes(unsigned mask)
Utility for counting number of 1 in a mask.
Definition IDField.cxx:33
std::vector< IDField * > IDFieldList
List of fields.
Definition IDField.h:25
Extension of DetectorID providing access to layer and module number for tracker IDs.
Definition TrackerID.h:20