Review of TkrDigi TDS Class


The TkrDigi objects are contained in an ObjectVector called TkrDigiCol and primarily called by TkrRecon/Cluster/TkrClusters. The TkrDigi class contains TKR hit information, tower ID, layer ID, view (x or y), TOT values and hit strip IDs. Hits are contained in a std::vector. It also provides utility functions such as setting and getting the values of member variables, read/write in ASCII format. The coding standard discourages the use of the set functions. There a few variables (or lack of them) that require our attention. In general, it is preferred to adopt simpler and easier (to understand/implement) solutions at costs of disk space and/or CPU time. (provided that the loss is not significant.)

  1. m_tower: This is an integer value ranging from 0 to 15. It could be more useful to point to idents::Tower since it provides useful methods such as identifying adjacent towers.
  2. m_view: This is also an integer value either 0 (x) or 1 (y), which could be a source of confusion. The use of #define could minimize the confusion. Alternative could be an idents::GlastAxis instead of an integer. GlastAxis is an enum with values X, Y, XY and NONE. Because there is automatic conversion from enum to int, an enum can be used in a loop. Both implementations seem adequate.
  3. TOT value assignment: We have two controllers on each layer, thus two TOT values. We need information to assign a TOT value to each hit, which is not implemented at present. This can be achieved; an extra bit in the strip word, an additional integer value corresponding to the break between two controllers, or an external map produced by the calibration system. Third solution is not recommended as it requires efforts to ensure the consistency. The first solution is space efficient but introduce unnecessary complexity when accessing the strip number, which is one of the most frequent operation in the tracking.
  4. Link with McPositionHit: In the present implementation, no link to the MC information is provide in the TkrDigi class. This is actually an issue common to all digi classes. Separate class to connect digi and MC is doable, but harder to follow. It is simpler to have links to MC in digi for each hit. These values are all null for real data, however. No significant effect on the data size is expected since ROOT can compress null data.