Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
#include "DataFormats/ForwardDetId/interface/BTLDetId.h"

BTLDetId BTLDetId::geographicalId(CrysLayout lay) const {
  // For tracking geometry navigation

  if (lay == CrysLayout::v2 || lay == CrysLayout::v3) {
    // v2: set number of crystals to 17 to distinguish from crystal BTLDetId
    // v3: set number of crystals to 17 to distinguish from crystal BTLDetId, build V2-like type and RU number as in BTLNumberingScheme
    return BTLDetId(mtdSide(), mtdRR(), runitByType(), module(), modType(), kCrystalsPerModuleV2 + 1, true);
  }
  if (lay == CrysLayout::v4) {
    // v4: identical to v3, needed to update BTLDetId format and corresponding numbering scheme
    return BTLDetId(mtdSide(), mtdRR(), runit(), dmodule(), smodule(), kCrystalsPerModuleV2);
  }
  return 0;
}

#include <iomanip>

std::ostream& operator<<(std::ostream& os, const BTLDetId& id) {
  os << (MTDDetId&)id;
  os << " BTL " << std::endl
     << " Side        : " << id.mtdSide() << std::endl
     << " Rod         : " << id.mtdRR() << std::endl
     << " Crystal type: " << id.modType() << std::endl
     << " Readout unit: " << id.runit() << std::endl
     << " Readout unit by type: " << id.runitByType() << std::endl
     << " Detector Module: " << id.dmodule() << std::endl
     << " Sensor Module: " << id.smodule() << std::endl
     << " Module      : " << id.module() << std::endl
     << " Crystal     : " << id.crystal() << std::endl
     << " Crystal in DB: " << id.crystalConsDB() << std::endl;
  return os;
}