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 35 36 37 38 39 40 41 42 43 44 45
/****************************************************************************
*
* This is a part of TOTEM offline software.
* Authors: 
*   Jan Kašpar (jan.kaspar@cern.ch)
*
****************************************************************************/

#include "CondFormats/PPSObjects/interface/TotemSymbId.h"
#include "DataFormats/CTPPSDetId/interface/CTPPSDetId.h"
#include "DataFormats/CTPPSDetId/interface/CTPPSDiamondDetId.h"
#include "DataFormats/CTPPSDetId/interface/CTPPSPixelDetId.h"
#include "DataFormats/CTPPSDetId/interface/TotemRPDetId.h"
#include "DataFormats/CTPPSDetId/interface/TotemT2DetId.h"
#include "DataFormats/CTPPSDetId/interface/TotemTimingDetId.h"

void TotemSymbID::print(std::ostream& os, std::string subSystemName) const {
  const auto ctppsDetId = CTPPSDetId(symbolicID);
  os << "DetId=" << symbolicID << " (";

  if (subSystemName == "TrackingStrip") {
    os << "subDet=" << ctppsDetId.subdetId() << " " << TotemRPDetId(symbolicID);
  } else if (subSystemName == "TimingDiamond") {
    os << "subDet=" << ctppsDetId.subdetId() << " " << CTPPSDiamondDetId(symbolicID);
  } else if (subSystemName == "TotemT2") {
    os << "subDet=" << ctppsDetId.subdetId() << " " << TotemT2DetId(symbolicID);
  } else if (subSystemName == "TotemTiming") {
    const auto timingId = TotemTimingDetId(symbolicID);
    os << "subDet=" << ctppsDetId.subdetId() << " " << timingId;
    if (timingId.channel() == TotemTimingDetId::ID_NOT_SET || timingId.plane() == 0) {
      os << ") - (plane/channel det ids not applicable to SAMPIC; initialized with def values " << 0 << "/"
         << TotemTimingDetId::ID_NOT_SET << " now";
    }
  } else {
    os << ctppsDetId;
  }

  os << ")";
}

std::ostream& operator<<(std::ostream& s, const TotemSymbID& sid) {
  s << "DetId=" << sid.symbolicID << " (" << CTPPSDetId(sid.symbolicID) << ")";

  return s;
}