HalfCylinder

PixelEndcapName

Macros

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 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
#ifndef DataFormats_TrackerCommon_PixelEndcapName_H
#define DataFormats_TrackerCommon_PixelEndcapName_H

/** \class PixelEndcapName
 * Endcap Module name (as in PixelDatabase) for endcaps
 */
#include "DataFormats/SiPixelDetId/interface/PixelModuleName.h"
#include "DataFormats/SiPixelDetId/interface/PXFDetId.h"

#include <string>
#include <iostream>

class DetId;
class TrackerTopology;

class PixelEndcapName : public PixelModuleName {
public:
  enum HalfCylinder { mO = 1, mI = 2, pO = 3, pI = 4 };

  /// ctor from DetId
  PixelEndcapName(const DetId&, bool phase = false);
  PixelEndcapName(const DetId&, const TrackerTopology* tt, bool phase = false);

  /// ctor for defined name
  PixelEndcapName(HalfCylinder part = mO, int disk = 0, int blade = 0, int pannel = 0, int plaq = 0, bool phase = false)
      : PixelModuleName(false),
        thePart(part),
        theDisk(disk),
        theBlade(blade),
        thePannel(pannel),
        thePlaquette(plaq),
        phase1(phase) {}

  /// ctor from name string
  PixelEndcapName(std::string name, bool phase = false);

  ~PixelEndcapName() override {}

  /// from base class
  std::string name() const override;

  HalfCylinder halfCylinder() const { return thePart; }

  /// disk id
  int diskName() const { return theDisk; }

  /// blade id
  int bladeName() const { return theBlade; }

  /// pannel id
  int pannelName() const { return thePannel; }

  /// plaquetteId (in pannel)
  int plaquetteName() const { return thePlaquette; }

  /// ring Id
  int ringName() const { return thePlaquette; }

  /// module Type
  PixelModuleName::ModuleType moduleType() const override;

  /// return DetId
  PXFDetId getDetId();
  DetId getDetId(const TrackerTopology* tt);

  /// check equality of modules from datamemebers
  bool operator==(const PixelModuleName&) const override;
  bool operator==(const PixelEndcapName& other) const {
    return (thePart == other.thePart && theDisk == other.theDisk && theBlade == other.theBlade &&
            thePannel == other.thePannel && thePlaquette == other.thePlaquette);
  }

private:
  HalfCylinder thePart;
  int theDisk, theBlade, thePannel, thePlaquette;
  bool phase1;
};

std::ostream& operator<<(std::ostream& out, const PixelEndcapName::HalfCylinder& t);
#endif