#include <CSCChannelMapperStartup.h>
Public Member Functions | |
int | channelFromStrip (const CSCDetId &id, int strip) const |
CSCChannelMapperStartup () | |
int | geomStripChannel (const CSCDetId &id, int iraw) const |
Return geometrical strip channel number for input raw channel number. | |
virtual std::string | name () const |
CSCDetId | rawCSCDetId (const CSCDetId &id) const |
int | rawStripChannel (const CSCDetId &id, int igeom) const |
Return raw strip channel number for input geometrical channel number. | |
~CSCChannelMapperStartup () |
A concrete CSCChannelMapper class to map between raw/online channel numbers (for strips/cathodes and wires/anodes) and offline geometry-oriented channel numbers, in which increasing number corresponds to increasing local x (strips) or y (wire groups) as defined in CMS Note CMS IN-2007/024.
This version is for CMS Startup (2008-2013)
1. Sorts out readout-flipping within the two endcaps for ME1a and ME1b strip channels.
2. Maps the ME1a channels from online labels 65-80 to offline 1-16.
3. Does nothing with wiregroup channels; the output = the input.
Since ME1a is ganged, the 48 strips in ME1a are fed to 16 channels, so it is important to distinguish the nomenclatures "strip" vs "channel". It is usually a meaningful distinction!
Also note that the CSCDetId for ME11 and ME1b is identical. Offline we presume ring=1 of station 1 to mean the ME1b strips. We use the identifier ring=4 to denote the ME1a strips.
Definition at line 31 of file CSCChannelMapperStartup.h.
CSCChannelMapperStartup::CSCChannelMapperStartup | ( | ) | [inline] |
Definition at line 34 of file CSCChannelMapperStartup.h.
{}
CSCChannelMapperStartup::~CSCChannelMapperStartup | ( | ) | [inline] |
Definition at line 35 of file CSCChannelMapperStartup.h.
{}
int CSCChannelMapperStartup::channelFromStrip | ( | const CSCDetId & | id, |
int | strip | ||
) | const [virtual] |
Offline conversion of a strip (geometric labelling) back to channel (Startup: convert the 48 strips of ME1A to 16 ganged channels.)
Implements CSCChannelMapperBase.
Definition at line 43 of file CSCChannelMapperStartup.cc.
References relativeConstraints::ring, and strip().
{ // This just returns the electronics channel label to which a given strip is connected // In all chambers but ME1A this is just a direct 1-1 correspondence. // In ME1A the 48 strips are ganged into 16 channels: 1+17+33->1, 2+18+34->2, ... 16+32+48->16. int ichan = strip; bool me1a = (id.station()==1) && (id.ring()==4); if ( me1a && strip>16 ) ichan = (strip-1)%16 + 1; // gang the 48 to 16 return ichan; }
int CSCChannelMapperStartup::geomStripChannel | ( | const CSCDetId & | id, |
int | iraw | ||
) | const [virtual] |
Return geometrical strip channel number for input raw channel number.
Implements CSCChannelMapperBase.
Definition at line 23 of file CSCChannelMapperStartup.cc.
References relativeConstraints::ring, and SurfaceOrientation::zplus.
{ // Translate a raw strip channel in range 1-80, iraw, into // corresponding geometry-oriented channel in which increasing // channel number <-> strip number increasing with +ve local x. int igeo = iraw; bool zplus = (id.endcap()==1); bool me11 = (id.station()==1) && (id.ring()==1); bool me1a = me11 && (iraw > 64); bool me1b = me11 && (iraw <= 64); if ( me1a ) igeo -= 64; // 65-80 -> 1-16 //if ( me1a ) igeo %= 64; // 65-80 -> 1-16 if ( me1a && zplus ) { igeo = 17 - igeo; } // 65-80 -> 16-1 if ( me1b && !zplus) { igeo = 65 - igeo; } // 1-64 -> 64-1 return igeo; }
virtual std::string CSCChannelMapperStartup::name | ( | ) | const [inline, virtual] |
Reimplemented from CSCChannelMapperBase.
Definition at line 37 of file CSCChannelMapperStartup.h.
{return "CSCChannelMapperStartup";}
Construct raw CSCDetId matching supplied offline CSCDetid (Startup: return the ME11 CSCDetID when supplied with that for ME1A)
Implements CSCChannelMapperBase.
Definition at line 53 of file CSCChannelMapperStartup.cc.
References CSCDetId, Reference_intrackfit_cff::endcap, relativeConstraints::ring, and relativeConstraints::station.
{ // Return the effective online CSCDetId for given offline CSCDetId // That means the same one except for ME1A, which online is part of ME11 (channels 65-80) CSCDetId idraw( id ); bool me1a = (id.station()==1) && (id.ring()==4); if ( me1a ) idraw = CSCDetId( id.endcap(), id.station(), 1, id.chamber(), id.layer() ); return idraw; }
int CSCChannelMapperStartup::rawStripChannel | ( | const CSCDetId & | id, |
int | igeom | ||
) | const [virtual] |
Return raw strip channel number for input geometrical channel number.
Implements CSCChannelMapperBase.
Definition at line 3 of file CSCChannelMapperStartup.cc.
References relativeConstraints::ring, and SurfaceOrientation::zplus.
{ // Translate a geometry-oriented strip channel in range 1-80, igeo, // into corresponding raw channel. int iraw = igeo; bool zplus = (id.endcap()==1); bool me1a = (id.station()==1) && (id.ring()==4); bool me1b = (id.station()==1) && (id.ring()==1); if ( me1a && zplus ) { iraw = 17 - iraw; } // 1-16 -> 16-1 if ( me1b && !zplus) { iraw = 65 - iraw; } // 1-64 -> 64-1 if ( me1a ) { iraw += 64 ;} // set 1-16 to 65-80 return iraw; }