Skip to content

Commit

Permalink
Merge pull request #24331 from bsunanda/Phase2-hgx140
Browse files Browse the repository at this point in the history
Phase2-hgx140 Change the ieta field to radius field for scintillator part
  • Loading branch information
cmsbuild committed Aug 21, 2018
2 parents 62210b9 + 0664b02 commit eb40288
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 14 deletions.
17 changes: 10 additions & 7 deletions DataFormats/ForwardDetId/interface/HGCScintillatorDetId.h
Expand Up @@ -7,7 +7,7 @@

/* \brief description of the bit assigment
[0:8] iphi index wrt x-axis on +z side
[9:16] |ieta| index (starting from |etamin|)
[9:16] |radius| index (starting from a minimum radius depending on type)
[17:21] Layer #
[22:24] Reserved for future extension
[25:25] z-side (0 for +z; 1 for -z)
Expand All @@ -25,14 +25,14 @@ class HGCScintillatorDetId : public DetId {
/** Create cellid from raw id (0=invalid tower id) */
HGCScintillatorDetId(uint32_t rawid);
/** Constructor from subdetector, zplus, layer, module, cell numbers */
HGCScintillatorDetId(int type, int layer, int ieta, int iphi);
HGCScintillatorDetId(int type, int layer, int iradius, int iphi);
/** Constructor from a generic cell id */
HGCScintillatorDetId(const DetId& id);
/** Assignment from a generic cell id */
HGCScintillatorDetId& operator=(const DetId& id);

/** Converter for a geometry cell id */
HGCScintillatorDetId geometryCell () const {return HGCScintillatorDetId (0, layer(), ieta(), iphi());}
HGCScintillatorDetId geometryCell () const {return HGCScintillatorDetId (0, layer(), iradius(), iphi());}

/// get the subdetector
DetId::Detector subdet() const { return det(); }
Expand All @@ -47,12 +47,15 @@ class HGCScintillatorDetId : public DetId {
int layer() const { return (id_>>kHGCalLayerOffset)&kHGCalLayerMask; }

/// get the eta index
int ietaAbs() const { return (id_>>kHGCalEtaOffset)&kHGCalEtaMask; }
int ieta() const { return zside()*ietaAbs(); }
int iradiusAbs() const { return (id_>>kHGCalRadiusOffset)&kHGCalRadiusMask; }
int iradius() const { return zside()*iradiusAbs(); }
int ietaAbs() const { return (id_>>kHGCalRadiusOffset)&kHGCalRadiusMask; }
int ieta() const { return zside()*ietaAbs(); }

/// get the phi index
int iphi() const { return (id_>>kHGCalPhiOffset)&kHGCalPhiMask; }
std::pair<int,int> ietaphi() const { return std::pair<int,int>(ieta(),iphi()); }
std::pair<int,int> iradiusphi() const { return std::pair<int,int>(iradius(),iphi()); }

/// consistency check : no bits left => no overhead
bool isEE() const { return false; }
Expand All @@ -65,8 +68,8 @@ class HGCScintillatorDetId : public DetId {

static const int kHGCalPhiOffset = 0;
static const int kHGCalPhiMask = 0x1FF;
static const int kHGCalEtaOffset = 9;
static const int kHGCalEtaMask = 0xFF;
static const int kHGCalRadiusOffset = 9;
static const int kHGCalRadiusMask = 0xFF;
static const int kHGCalLayerOffset = 17;
static const int kHGCalLayerMask = 0x1F;
static const int kHGCalZsideOffset = 25;
Expand Down
12 changes: 5 additions & 7 deletions DataFormats/ForwardDetId/src/HGCScintillatorDetId.cc
Expand Up @@ -11,15 +11,15 @@ HGCScintillatorDetId::HGCScintillatorDetId() : DetId() {
HGCScintillatorDetId::HGCScintillatorDetId(uint32_t rawid) : DetId(rawid) {
}

HGCScintillatorDetId::HGCScintillatorDetId(int type, int layer, int eta,
HGCScintillatorDetId::HGCScintillatorDetId(int type, int layer, int radius,
int phi) : DetId(HGCalHSc,ForwardEmpty) {

int zside = (eta < 0) ? 1 : 0;
int etaAbs = std::abs(eta);
int zside = (radius < 0) ? 1 : 0;
int radiusAbs = std::abs(radius);
id_ |= (((type&kHGCalTypeMask)<<kHGCalTypeOffset) |
((zside&kHGCalZsideMask)<<kHGCalZsideOffset) |
((layer&kHGCalLayerMask)<<kHGCalLayerOffset) |
((etaAbs&kHGCalEtaMask)<<kHGCalEtaOffset) |
((radiusAbs&kHGCalRadiusMask)<<kHGCalRadiusOffset) |
((phi&kHGCalPhiMask)<<kHGCalPhiOffset));
}

Expand All @@ -45,7 +45,5 @@ HGCScintillatorDetId& HGCScintillatorDetId::operator=(const DetId& gen) {
std::ostream& operator<<(std::ostream& s,const HGCScintillatorDetId& id) {
return s << " EE:HE= " << id.isEE() << ":" << id.isHE()
<< " type= " << id.type() << " layer= " << id.layer()
<< " eta= " << id.ieta() << " phi= " << id.iphi();
<< " radius= " << id.iradius() << " phi= " << id.iphi();
}


0 comments on commit eb40288

Please sign in to comment.