CMS 3D CMS Logo

Public Member Functions

CSCChannelMapperStartup Class Reference

#include <CSCChannelMapperStartup.h>

Inheritance diagram for CSCChannelMapperStartup:
CSCChannelMapperBase

List of all members.

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 ()

Detailed Description

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.

Author:
Tim Cox

Definition at line 31 of file CSCChannelMapperStartup.h.


Constructor & Destructor Documentation

CSCChannelMapperStartup::CSCChannelMapperStartup ( ) [inline]

Definition at line 34 of file CSCChannelMapperStartup.h.

{}
CSCChannelMapperStartup::~CSCChannelMapperStartup ( ) [inline]

Definition at line 35 of file CSCChannelMapperStartup.h.

{}

Member Function Documentation

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.

                                                                                   {
  // 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";}
CSCDetId CSCChannelMapperStartup::rawCSCDetId ( const CSCDetId id) const [virtual]

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;
}