CMS 3D CMS Logo

CSCChamberSpecs Class Reference

Each endcap muon CSCChamberSpecs object is a set of parameters for one of several types of chamber. More...

#include <Geometry/CSCGeometry/interface/CSCChamberSpecs.h>

Inheritance diagram for CSCChamberSpecs:

GeomDetType

List of all members.

Public Types

typedef std::vector< float > CSCSpecsParcel

Public Member Functions

float anodeCathodeSpacing () const
 distance from anode to cathode, in cm.
float calibrationError () const
int chamberType () const
 The 'type' of the chamber associated with this ChamberSpecs.
std::string chamberTypeName () const
 The (hardware) name for the chamber type associated with this ChamberSpecs.
float chargePerCount () const
 ADC calibration, in fC.
float constantNoise () const
 the constant term in the electronics noise, in # of electrons.
 CSCChamberSpecs (const CSCGeometry *geom, int iChamberType, const TrapezoidalPlaneBounds &mediaShape, const CSCSpecsParcel &fupar, const CSCWireGroupPackage &wg)
 Usual ctor from supplied params.
 CSCChamberSpecs ()
 Default ctor.
float ctiOffset () const
 offset to centreToIntersection, in cm (the backed-out corrections for positioning the strips)
float e_pF () const
 the # of noise electrons per picofarad of capacitance.
float efficiency () const
float electronAttraction () const
const CSCLayerGeometry *const evenLayerGeometry (int iendcap) const
float fractionQS () const
 the fraction of the charge that survives to reach the cathode.
float gasGain () const
float neutronRate () const
 neutron hit rate per CSC layer per event.
int nFloatingStrips () const
int nNodes () const
 number of strips 2*nnodes+1 around hit.
int nStrips () const
 number of strips in one chamber.
int nWiresPerGroup () const
const CSCLayerGeometry *const oddLayerGeometry (int iendcap) const
 Accessors for LayerGeometry's.
bool operator!= (const CSCChamberSpecs &specs) const
 Allow comparison of Specs objects.
bool operator== (const CSCChamberSpecs &specs) const
float shaperPeakingTime () const
 Fast shaper peaking time (ns).
float stripNoise (float timeInterval) const
float stripPhiPitch () const
 strip pitch in phi, in radians (the strips are fan-shaped)
float stripResolution () const
float timeWindow () const
virtual const Topologytopology () const
 Returns StripTopology of the odd-layer, positive-z geometry.
float voltage () const
float wireNoise (float timeInterval) const
 the number of noise electrons.
float wireRadius () const
 anode wire radius, in cm.
float wireResolution () const
float wireSpacing () const
 wire spacing, in cm.
 ~CSCChamberSpecs ()
 Destructor.

Static Public Member Functions

static int whatChamberType (int istation, int iring)
 The usual integer label for 'chamber type' of this ring and station.

Private Member Functions

float specsValue (int index) const
 Accessor to chamber specs values.

Private Attributes

float centreToIntersectionOffset
CSCLayerGeometrynegzEvenLayerGeometry
CSCLayerGeometrynegzOddLayerGeometry
int nstrips
CSCLayerGeometryposzEvenLayerGeometry
CSCLayerGeometryposzOddLayerGeometry
float stripDeltaPhi
int theChamberType
CSCSpecsParcel theSpecsValues

Static Private Attributes

static const std::string myName = "CSCChamberSpecs"
static const std::string theName [10]


Detailed Description

Each endcap muon CSCChamberSpecs object is a set of parameters for one of several types of chamber.

Author:
Tim Cox
There are only a small finite number (9) of distinct chamber types in the hardware, according to physical dimensions and properties. The individual types currently correspond to each (Station,Ring) pair.

RESPONSIBILITIES:
Supply chamber type-dependent parameters on demand. Geometrical size is not a responsibility of the Specs class.

COLLABORATORS:
A Chamber knows its associated Specs.

Warning:
Disclaimer: The mess of methods was supposed to be a temporary hack until it was decided how to handle such spec pars... but there's still nothing better.

Definition at line 39 of file CSCChamberSpecs.h.


Member Typedef Documentation

typedef std::vector<float> CSCChamberSpecs::CSCSpecsParcel

Definition at line 43 of file CSCChamberSpecs.h.


Constructor & Destructor Documentation

CSCChamberSpecs::CSCChamberSpecs (  ) 

Default ctor.

CSCChamberSpecs::CSCChamberSpecs ( const CSCGeometry geom,
int  iChamberType,
const TrapezoidalPlaneBounds mediaShape,
const CSCSpecsParcel fupar,
const CSCWireGroupPackage wg 
)

Usual ctor from supplied params.

Definition at line 9 of file CSCChamberSpecs.cc.

References CSCWireGroupPackage::alignmentPinToFirstWire, centreToIntersectionOffset, LogTrace, myName, negzEvenLayerGeometry, negzOddLayerGeometry, nstrips, poszEvenLayerGeometry, poszOddLayerGeometry, specsValue(), stripPhiPitch(), and theName.

00014   : GeomDetType( "CSC", CSC ), theChamberType( iChamberType ), theSpecsValues( fupar ),
00015     nstrips( static_cast<int>(specsValue(5)) ), stripDeltaPhi( specsValue(29) ), 
00016     centreToIntersectionOffset( specsValue(30) )
00017   {
00018    LogTrace("CSCChamberSpecs|CSC") << myName << ": constructing specs for chamber " << 
00019     theName[iChamberType - 1] << ", type=" << iChamberType << ", this =" << this;
00020  
00021   // Most wire info now comes from wire group section of DDD, but this doesn't...
00022   float wireAngleInDegrees = specsValue(12);
00023   
00024   // Related to strip geometry...
00025   float stripOffset1                       = specsValue(20);
00026   float stripOffset2                       = specsValue(21);
00027   float globalRadialPositionOfAlignmentPin = specsValue(24);
00028   float distanceFrameToAlignmentPin        = specsValue(25);
00029   float lengthOfChamber                    = specsValue(26);
00030   float distanceEndOfStripToAlignmentPin   = specsValue(27);
00031   float extentOfStripPlane                 = specsValue(28);
00032 
00033   // local y of alignment pin 
00034   float yAlignmentPin = -lengthOfChamber/2. + distanceFrameToAlignmentPin;
00035 
00036   // distance from alignment pin to symmetry centre of strip plane
00037   float alignmentPinToCentreOfStripPlane = distanceEndOfStripToAlignmentPin + extentOfStripPlane/2. ;
00038 
00039   // local y of symmetry centre of strip plane
00040   float yCentreOfStripPlane = yAlignmentPin  + alignmentPinToCentreOfStripPlane ;
00041 
00042   // distance from intersection of strips to symmetry centre of strip plane
00043   float whereStripsMeet = globalRadialPositionOfAlignmentPin + alignmentPinToCentreOfStripPlane ;
00044 
00045   // Possibly 'correct' distance to strip intersection
00046   //  if ( useCentreTIOffsets ) {
00047   //    float ctiOffset = this->ctiOffset();
00048   //    whereStripsMeet += ctiOffset; 
00049   //  }
00050   whereStripsMeet += centreToIntersectionOffset; // will have been reset to zero if not active
00051 
00052   // local y value of 1st wire in wire plane
00053   double yOfFirstWire = yAlignmentPin + wg.alignmentPinToFirstWire/10.; //@@ in cm
00054 
00055   // Build the unique LayerGeometry objects we require for each chamber type.
00056   // - There are 2 endcaps
00057   // - Alternate layers of strips are offset w.r.t. each other
00058   // - In ME11 the wire tilt angle needs to be a constant
00059   // global value; in the CMS local coordinates this is positive in +z
00060   // and negative in -z (magnitude 29 degrees as of 2002)
00061 
00062   // Thus we need 4 LGs differing in strip offset and wire angle
00063 
00064   float phiPitch = this->stripPhiPitch();
00065 
00066   poszOddLayerGeometry = new CSCLayerGeometry( geom, iChamberType, bounds,
00067      nstrips, -stripOffset1, phiPitch, whereStripsMeet, extentOfStripPlane, yCentreOfStripPlane,
00068      wg, wireAngleInDegrees, yOfFirstWire );
00069 
00070   poszEvenLayerGeometry = new CSCLayerGeometry( geom, iChamberType, bounds,
00071      nstrips, -stripOffset2, phiPitch, whereStripsMeet, extentOfStripPlane, yCentreOfStripPlane,
00072      wg, wireAngleInDegrees, yOfFirstWire );
00073 
00074   negzOddLayerGeometry = new CSCLayerGeometry( geom, iChamberType, bounds,
00075      nstrips, -stripOffset1, phiPitch, whereStripsMeet, extentOfStripPlane, yCentreOfStripPlane,
00076      wg, -wireAngleInDegrees, yOfFirstWire );
00077 
00078   negzEvenLayerGeometry = new CSCLayerGeometry( geom, iChamberType, bounds,
00079      nstrips, -stripOffset2, phiPitch, whereStripsMeet, extentOfStripPlane, yCentreOfStripPlane,
00080      wg, -wireAngleInDegrees, yOfFirstWire );
00081 
00082 }

CSCChamberSpecs::~CSCChamberSpecs (  ) 

Destructor.

Definition at line 85 of file CSCChamberSpecs.cc.

References LogTrace, myName, negzEvenLayerGeometry, negzOddLayerGeometry, poszEvenLayerGeometry, and poszOddLayerGeometry.

00086 {
00087   LogTrace("CSCChamberSpecs|CSC") << myName << " destroying this=" << this;
00088 
00089   delete poszOddLayerGeometry;
00090   delete poszEvenLayerGeometry;
00091   delete negzOddLayerGeometry;
00092   delete negzEvenLayerGeometry;
00093 }


Member Function Documentation

float CSCChamberSpecs::anodeCathodeSpacing (  )  const [inline]

distance from anode to cathode, in cm.

Definition at line 137 of file CSCChamberSpecs.h.

References specsValue().

Referenced by CSCDriftSim::getWireHit(), CSCXonStrip_MatchGatti::initChamberSpecs(), and CSCGattiFunction::initChamberSpecs().

00137 {return specsValue(9);}

float CSCChamberSpecs::calibrationError (  )  const [inline]

Definition at line 143 of file CSCChamberSpecs.h.

References specsValue().

00143 {return specsValue(13);}

int CSCChamberSpecs::chamberType (  )  const

The 'type' of the chamber associated with this ChamberSpecs.


The chamber type is a unique integer 1-10 for a station, ring pair MEs/r. The type value is defined as
1 for S = 1 and R=A=4 split strips in ME1/1
2,3,4 = R+1 for S = 1 and R = 1,2,3
5-10 = 2*S+R for S = 2,3,4 and R = 1,2
It is conventional usage in the Endcap Muon community/

Definition at line 114 of file CSCChamberSpecs.cc.

References theChamberType.

Referenced by CSCComparatorDigiValidation::analyze(), CSCWireDigiValidation::analyze(), CSCRecHit2DValidation::analyze(), chamberTypeName(), CSCWireElectronicsSim::fillDigis(), GlobalRecHitsProducer::fillMuon(), GlobalRecHitsAnalyzer::fillMuon(), and CSCStripElectronicsSim::initParameters().

00114                                        {
00115   return theChamberType;
00116 }

std::string CSCChamberSpecs::chamberTypeName (  )  const

The (hardware) name for the chamber type associated with this ChamberSpecs.


It is a string "MEs/r" where integer s = station, r = ring.

Definition at line 118 of file CSCChamberSpecs.cc.

References chamberType(), and theName.

Referenced by CSCSegmentBuilder::build(), CSCSegAlgoTC::buildSegments(), CSCSegAlgoSK::buildSegments(), CSCValidation::doEfficiencies(), and CSCXonStrip_MatchGatti::findXOnStrip().

00118                                                  {
00119   return theName[chamberType() - 1];
00120 }

float CSCChamberSpecs::chargePerCount (  )  const

ADC calibration, in fC.

Definition at line 157 of file CSCChamberSpecs.cc.

References theChamberType.

00157                                             {
00158   if(theChamberType <= 2) {
00159     return 0.25;
00160   } else {
00161     return 0.5;
00162   }
00163 }

float CSCChamberSpecs::constantNoise (  )  const [inline]

the constant term in the electronics noise, in # of electrons.

Definition at line 170 of file CSCChamberSpecs.h.

References specsValue().

Referenced by stripNoise(), and wireNoise().

00170 {return specsValue(22);}

float CSCChamberSpecs::ctiOffset (  )  const [inline]

offset to centreToIntersection, in cm (the backed-out corrections for positioning the strips)

Definition at line 127 of file CSCChamberSpecs.h.

References centreToIntersectionOffset.

float CSCChamberSpecs::e_pF (  )  const [inline]

the # of noise electrons per picofarad of capacitance.

Definition at line 175 of file CSCChamberSpecs.h.

References specsValue().

Referenced by stripNoise().

00175 {return specsValue(23);}

float CSCChamberSpecs::efficiency (  )  const [inline]

Definition at line 98 of file CSCChamberSpecs.h.

References specsValue().

00098 {return specsValue(2);}

float CSCChamberSpecs::electronAttraction (  )  const [inline]

Definition at line 145 of file CSCChamberSpecs.h.

References specsValue().

00145 {return specsValue(14);}

const CSCLayerGeometry* const CSCChamberSpecs::evenLayerGeometry ( int  iendcap  )  const [inline]

Definition at line 71 of file CSCChamberSpecs.h.

References negzEvenLayerGeometry, and poszEvenLayerGeometry.

Referenced by CSCGeometryBuilderFromDDD::buildChamber().

00072    { return (iendcap==1? poszEvenLayerGeometry:negzEvenLayerGeometry);}

float CSCChamberSpecs::fractionQS (  )  const [inline]

the fraction of the charge that survives to reach the cathode.

Definition at line 150 of file CSCChamberSpecs.h.

References specsValue().

00150 {return specsValue(15);}

float CSCChamberSpecs::gasGain (  )  const

Definition at line 151 of file CSCChamberSpecs.cc.

00151                                      {
00152   // ME1/1 makes up for its small gap by a big electronics gain
00153   // so use one gas gain value for all chambers (=300000)
00154   return 3.0e05;
00155 }

float CSCChamberSpecs::neutronRate (  )  const [inline]

neutron hit rate per CSC layer per event.

Definition at line 104 of file CSCChamberSpecs.h.

References specsValue().

00104 {return specsValue(4);}

int CSCChamberSpecs::nFloatingStrips (  )  const [inline]

Definition at line 116 of file CSCChamberSpecs.h.

References int, and specsValue().

00116 {return int( specsValue(8) );}

int CSCChamberSpecs::nNodes (  )  const [inline]

number of strips 2*nnodes+1 around hit.

Definition at line 114 of file CSCChamberSpecs.h.

References int, and specsValue().

Referenced by CSCStripHitSim::simulate().

00114 {return int( specsValue(6) );}

int CSCChamberSpecs::nStrips (  )  const [inline]

number of strips in one chamber.

Definition at line 109 of file CSCChamberSpecs.h.

References nstrips.

Referenced by CSCMake2DRecHit::hitFromStripAndWire(), CSCHitFromStripOnly::makeCluster(), and CSCHitFromStripOnly::runStrip().

00109 {return nstrips;}

int CSCChamberSpecs::nWiresPerGroup (  )  const [inline]

Definition at line 115 of file CSCChamberSpecs.h.

References int, and specsValue().

Referenced by wireNoise().

00115 {return int( specsValue(7) );}

const CSCLayerGeometry* const CSCChamberSpecs::oddLayerGeometry ( int  iendcap  )  const [inline]

Accessors for LayerGeometry's.

Definition at line 69 of file CSCChamberSpecs.h.

References negzOddLayerGeometry, and poszOddLayerGeometry.

Referenced by CSCGeometryBuilderFromDDD::buildChamber(), and TrackDetectorAssociator::getTAMuonChamberMatches().

00070    { return (iendcap==1? poszOddLayerGeometry:negzOddLayerGeometry);}

bool CSCChamberSpecs::operator!= ( const CSCChamberSpecs specs  )  const

Allow comparison of Specs objects.

Definition at line 96 of file CSCChamberSpecs.cc.

References theChamberType.

Referenced by operator==().

00097 {
00098    if ( ( theChamberType != specs.theChamberType ) )
00099       return true;
00100     else
00101       return false;
00102 }

bool CSCChamberSpecs::operator== ( const CSCChamberSpecs specs  )  const

Definition at line 104 of file CSCChamberSpecs.cc.

References operator!=().

00105 {
00106    return !( operator!=(specs) );
00107 }

float CSCChamberSpecs::shaperPeakingTime (  )  const [inline]

Fast shaper peaking time (ns).

Definition at line 165 of file CSCChamberSpecs.h.

References specsValue().

00165 {return specsValue(18);}

float CSCChamberSpecs::specsValue ( int  index  )  const [inline, private]

Accessor to chamber specs values.

Definition at line 205 of file CSCChamberSpecs.h.

References theSpecsValues.

Referenced by anodeCathodeSpacing(), calibrationError(), constantNoise(), CSCChamberSpecs(), e_pF(), efficiency(), electronAttraction(), fractionQS(), neutronRate(), nFloatingStrips(), nNodes(), nWiresPerGroup(), shaperPeakingTime(), stripResolution(), timeWindow(), voltage(), wireRadius(), and wireResolution().

00205                                       {
00206     return theSpecsValues[ index ];  
00207   }

float CSCChamberSpecs::stripNoise ( float  timeInterval  )  const

Definition at line 145 of file CSCChamberSpecs.cc.

References constantNoise(), e_pF(), TrapezoidalPlaneBounds::length(), poszOddLayerGeometry, and funct::sqrt().

00145                                                           {
00146   const float pF_cm = 0.75;
00147   return (constantNoise() + e_pF() * pF_cm * poszOddLayerGeometry->length() )
00148          / sqrt(timeInterval/100.);
00149 }

float CSCChamberSpecs::stripPhiPitch (  )  const [inline]

strip pitch in phi, in radians (the strips are fan-shaped)

Definition at line 121 of file CSCChamberSpecs.h.

References stripDeltaPhi.

Referenced by CSCChamberSpecs().

00121 {return 1.E-03 * stripDeltaPhi;}

float CSCChamberSpecs::stripResolution (  )  const [inline]

Definition at line 96 of file CSCChamberSpecs.h.

References specsValue().

00096 {return specsValue(0);}

float CSCChamberSpecs::timeWindow (  )  const [inline]

Definition at line 99 of file CSCChamberSpecs.h.

References specsValue().

00099 {return specsValue(3);}

const Topology & CSCChamberSpecs::topology (  )  const [virtual]

Returns StripTopology of the odd-layer, positive-z geometry.

Implements GeomDetType.

Definition at line 109 of file CSCChamberSpecs.cc.

References poszOddLayerGeometry, and CSCLayerGeometry::topology().

00109                                                 {
00110   return *(poszOddLayerGeometry->topology());
00111 }

float CSCChamberSpecs::voltage (  )  const [inline]

Definition at line 141 of file CSCChamberSpecs.h.

References specsValue().

00141 {return specsValue(11);}

int CSCChamberSpecs::whatChamberType ( int  istation,
int  iring 
) [static]

The usual integer label for 'chamber type' of this ring and station.

Definition at line 128 of file CSCChamberSpecs.cc.

References i.

Referenced by MuonCSCSeedFromRecHits::analyze(), CSCGeometryBuilderFromDDD::buildChamber(), CSCNeutronWriter::chamberType(), CSCNeutronReader::chamberType(), CSCConfigurableStripConditions::fetchNoisifier(), MuonOverlapSeedFromRecHits::makeSeed(), and CSCSegmentValidation::whatChamberType().

00128                                                               {
00129    int i = 2 * istation + iring; // i=2S+R
00130    if ( istation == 1 )
00131    {
00132       --i;             // ring 1R -> i=1+R (2S+R-1=1+R for S=1)
00133       if ( i > 4 )
00134       {
00135           i = 1;       // But ring 1A (R=4) -> i=1
00136       }
00137    }   
00138    return i;
00139 }

float CSCChamberSpecs::wireNoise ( float  timeInterval  )  const [inline]

the number of noise electrons.

the time interval is in ns we show the noise for 100 ns, then scale as 1/sqrt(time)

Definition at line 183 of file CSCChamberSpecs.h.

References constantNoise(), nWiresPerGroup(), and funct::sqrt().

Referenced by CSCWireElectronicsSim::initParameters().

00183                                             {
00184     const float WIRE_CAPACITANCE = 8.; // in pF
00185     return (constantNoise() + nWiresPerGroup()*WIRE_CAPACITANCE)
00186            / sqrt(timeInterval/100.);
00187   }

float CSCChamberSpecs::wireRadius (  )  const [inline]

anode wire radius, in cm.

Definition at line 160 of file CSCChamberSpecs.h.

References specsValue().

Referenced by CSCXonStrip_MatchGatti::initChamberSpecs(), and CSCGattiFunction::initChamberSpecs().

00160 {return specsValue(17);}

float CSCChamberSpecs::wireResolution (  )  const [inline]

Definition at line 97 of file CSCChamberSpecs.h.

References specsValue().

00097 {return specsValue(1);}

float CSCChamberSpecs::wireSpacing (  )  const

wire spacing, in cm.

All layers in a chamber have the same spacing.

Definition at line 141 of file CSCChamberSpecs.cc.

References poszOddLayerGeometry, and CSCLayerGeometry::wirePitch().

Referenced by CSCDriftSim::getWireHit(), CSCXonStrip_MatchGatti::initChamberSpecs(), and CSCGattiFunction::initChamberSpecs().

00141                                          { 
00142   return poszOddLayerGeometry->wirePitch(); 
00143 }


Member Data Documentation

float CSCChamberSpecs::centreToIntersectionOffset [private]

Definition at line 232 of file CSCChamberSpecs.h.

Referenced by CSCChamberSpecs(), and ctiOffset().

const std::string CSCChamberSpecs::myName = "CSCChamberSpecs" [static, private]

Definition at line 238 of file CSCChamberSpecs.h.

Referenced by CSCChamberSpecs(), and ~CSCChamberSpecs().

CSCLayerGeometry* CSCChamberSpecs::negzEvenLayerGeometry [private]

Definition at line 213 of file CSCChamberSpecs.h.

Referenced by CSCChamberSpecs(), evenLayerGeometry(), and ~CSCChamberSpecs().

CSCLayerGeometry* CSCChamberSpecs::negzOddLayerGeometry [private]

Definition at line 212 of file CSCChamberSpecs.h.

Referenced by CSCChamberSpecs(), oddLayerGeometry(), and ~CSCChamberSpecs().

int CSCChamberSpecs::nstrips [private]

Definition at line 230 of file CSCChamberSpecs.h.

Referenced by CSCChamberSpecs(), and nStrips().

CSCLayerGeometry* CSCChamberSpecs::poszEvenLayerGeometry [private]

Definition at line 211 of file CSCChamberSpecs.h.

Referenced by CSCChamberSpecs(), evenLayerGeometry(), and ~CSCChamberSpecs().

CSCLayerGeometry* CSCChamberSpecs::poszOddLayerGeometry [private]

Definition at line 210 of file CSCChamberSpecs.h.

Referenced by CSCChamberSpecs(), oddLayerGeometry(), stripNoise(), topology(), wireSpacing(), and ~CSCChamberSpecs().

float CSCChamberSpecs::stripDeltaPhi [private]

Definition at line 231 of file CSCChamberSpecs.h.

Referenced by stripPhiPitch().

int CSCChamberSpecs::theChamberType [private]

Definition at line 222 of file CSCChamberSpecs.h.

Referenced by chamberType(), chargePerCount(), and operator!=().

const std::string CSCChamberSpecs::theName [static, private]

Initial value:

  {"ME1/a", "ME1/b", "ME1/2", "ME1/3", "ME2/1", "ME2/2", "ME3/1", "ME3/2",
   "ME4/1", "ME4/2" }

Reimplemented from GeomDetType.

Definition at line 235 of file CSCChamberSpecs.h.

Referenced by chamberTypeName(), and CSCChamberSpecs().

CSCSpecsParcel CSCChamberSpecs::theSpecsValues [private]

Definition at line 228 of file CSCChamberSpecs.h.

Referenced by specsValue().


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:17:08 2009 for CMSSW by  doxygen 1.5.4