![]() |
![]() |
#include <Geometry/CSCGeometry/interface/CSCChamberSpecs.h>
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 Topology & | topology () 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 |
CSCLayerGeometry * | negzEvenLayerGeometry |
CSCLayerGeometry * | negzOddLayerGeometry |
int | nstrips |
CSCLayerGeometry * | poszEvenLayerGeometry |
CSCLayerGeometry * | poszOddLayerGeometry |
float | stripDeltaPhi |
int | theChamberType |
CSCSpecsParcel | theSpecsValues |
Static Private Attributes | |
static const std::string | myName = "CSCChamberSpecs" |
static const std::string | theName [10] |
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.
Definition at line 39 of file CSCChamberSpecs.h.
typedef std::vector<float> CSCChamberSpecs::CSCSpecsParcel |
Definition at line 43 of file CSCChamberSpecs.h.
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 }
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.
00127 {return 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);}
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 }
float CSCChamberSpecs::centreToIntersectionOffset [private] |
const std::string CSCChamberSpecs::myName = "CSCChamberSpecs" [static, private] |
Definition at line 238 of file CSCChamberSpecs.h.
Referenced by CSCChamberSpecs(), and ~CSCChamberSpecs().
Definition at line 213 of file CSCChamberSpecs.h.
Referenced by CSCChamberSpecs(), evenLayerGeometry(), and ~CSCChamberSpecs().
Definition at line 212 of file CSCChamberSpecs.h.
Referenced by CSCChamberSpecs(), oddLayerGeometry(), and ~CSCChamberSpecs().
int CSCChamberSpecs::nstrips [private] |
Definition at line 211 of file CSCChamberSpecs.h.
Referenced by CSCChamberSpecs(), evenLayerGeometry(), and ~CSCChamberSpecs().
Definition at line 210 of file CSCChamberSpecs.h.
Referenced by CSCChamberSpecs(), oddLayerGeometry(), stripNoise(), topology(), wireSpacing(), and ~CSCChamberSpecs().
float CSCChamberSpecs::stripDeltaPhi [private] |
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().