CMS 3D CMS Logo

Public Member Functions | Static Public Member Functions | Static Private Attributes

DTSequentialLayerNumber Class Reference

#include <DTSequentialLayerNumber.h>

List of all members.

Public Member Functions

 DTSequentialLayerNumber ()
 ~DTSequentialLayerNumber ()

Static Public Member Functions

static int id (int wheel, int station, int sector, int superlayer, int layer)
static int max ()

Static Private Attributes

static int layersIn13Sectors = 0
static int layersPerSector = 0
static int layersPerWheel = 0
static int * offsetChamber = 0

Detailed Description

Description: Class to compute a sequential number for drift tube layers

Date:
2010/05/06 14:42:49
Revision:
1.1
Author:
Paolo Ronchese INFN Padova

Definition at line 33 of file DTSequentialLayerNumber.h.


Constructor & Destructor Documentation

DTSequentialLayerNumber::DTSequentialLayerNumber ( )

Definition at line 40 of file DTSequentialLayerNumber.cc.

References layersIn13Sectors, layersPerSector, layersPerWheel, and offsetChamber.

                                                 {
  if ( offsetChamber == 0 ) {
    offsetChamber = new int[5];
    offsetChamber[1] = 0;
    offsetChamber[2] = 12;
    offsetChamber[3] = 24;
    offsetChamber[4] = 36;
    layersPerSector   = 44;
    layersIn13Sectors = ( layersPerSector * 12 ) + 8;
    layersPerWheel = layersIn13Sectors + 8;
  }
}
DTSequentialLayerNumber::~DTSequentialLayerNumber ( )

Definition at line 57 of file DTSequentialLayerNumber.cc.

                                                  {
}

Member Function Documentation

int DTSequentialLayerNumber::id ( int  wheel,
int  station,
int  sector,
int  superlayer,
int  layer 
) [static]

Definition at line 61 of file DTSequentialLayerNumber.cc.

References layersIn13Sectors, layersPerSector, layersPerWheel, offsetChamber, and relativeConstraints::station.

                                                  {

  wheel += 3;
  if ( wheel      <= 0 ) return -1;
  if ( station    <= 0 ) return -2;
  if ( sector     <= 0 ) return -3;
  if ( superlayer <= 0 ) return -4;
  if ( layer      <= 0 ) return -5;

  int seqLayerNum = 0;

  if ( wheel      >  5 ) return -1;
  seqLayerNum += ( wheel - 1 ) * layersPerWheel;

  if ( sector     > 14 ) return -2;
  if ( sector     > 12   &&
       station    <  4 ) return -2;
  if ( sector     > 13 ) seqLayerNum += layersIn13Sectors;
  else
  seqLayerNum += ( sector - 1 ) * layersPerSector;

  if ( station    >  4 ) return -3;
  if ( sector < 13 )
  seqLayerNum += offsetChamber[station];

  if ( superlayer >  3 ) return -4;
  if ( layer      >  4 ) return -5;
  if ( superlayer != 2 ) {
    if ( superlayer == 3 ) layer += 4;
  }
  else {
    if ( station  == 4 ) return -4;
    layer += 8;
  }

  return seqLayerNum + layer;

}
int DTSequentialLayerNumber::max ( ) [static]

Definition at line 105 of file DTSequentialLayerNumber.cc.

References layersPerWheel.

                                 {
  return 5 * layersPerWheel;
}

Member Data Documentation

int DTSequentialLayerNumber::layersIn13Sectors = 0 [static, private]

Definition at line 48 of file DTSequentialLayerNumber.h.

Referenced by DTSequentialLayerNumber(), and id().

int DTSequentialLayerNumber::layersPerSector = 0 [static, private]

Definition at line 47 of file DTSequentialLayerNumber.h.

Referenced by DTSequentialLayerNumber(), and id().

int DTSequentialLayerNumber::layersPerWheel = 0 [static, private]

Definition at line 46 of file DTSequentialLayerNumber.h.

Referenced by DTSequentialLayerNumber(), id(), and max().

int * DTSequentialLayerNumber::offsetChamber = 0 [static, private]

Definition at line 50 of file DTSequentialLayerNumber.h.

Referenced by DTSequentialLayerNumber(), and id().