#include <CSCChamberSpecs.h>
Public Types | |
typedef std::vector< float > | CSCSpecsParcel |
Public Member Functions | |
float | anodeCathodeSpacing () const |
float | calibrationError () const |
int | chamberType () const |
std::string | chamberTypeName () const |
float | chargePerCount () const |
float | constantNoise () const |
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 |
float | e_pF () const |
float | efficiency () const |
float | electronAttraction () const |
const CSCLayerGeometry *const | evenLayerGeometry (int iendcap) const |
float | fractionQS () const |
float | gasGain () const |
float | neutronRate () const |
int | nFloatingStrips () const |
int | nNodes () const |
int | nStrips () const |
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 |
float | stripNoise (float timeInterval) const |
float | stripPhiPitch () const |
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 |
float | wireRadius () const |
float | wireResolution () const |
float | wireSpacing () const |
~CSCChamberSpecs () | |
Destructor. | |
Static Public Member Functions | |
static int | whatChamberType (int istation, int iring) |
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] |
Each endcap muon CSCChamberSpecs object is a set of parameters for one of several types of chamber.
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.
: GeomDetType( "CSC", CSC ), theChamberType( iChamberType ), theSpecsValues( fupar ), nstrips( static_cast<int>(specsValue(5)) ), stripDeltaPhi( specsValue(29) ), centreToIntersectionOffset( specsValue(30) ) { LogTrace("CSCChamberSpecs|CSC") << myName << ": constructing specs for chamber " << theName[iChamberType - 1] << ", type=" << iChamberType << ", this =" << this; // Most wire info now comes from wire group section of DDD, but this doesn't... float wireAngleInDegrees = specsValue(12); // Related to strip geometry... float stripOffset1 = specsValue(20); float stripOffset2 = specsValue(21); float globalRadialPositionOfAlignmentPin = specsValue(24); float distanceFrameToAlignmentPin = specsValue(25); float lengthOfChamber = specsValue(26); float distanceEndOfStripToAlignmentPin = specsValue(27); float extentOfStripPlane = specsValue(28); // local y of alignment pin float yAlignmentPin = -lengthOfChamber/2. + distanceFrameToAlignmentPin; // distance from alignment pin to symmetry centre of strip plane float alignmentPinToCentreOfStripPlane = distanceEndOfStripToAlignmentPin + extentOfStripPlane/2. ; // local y of symmetry centre of strip plane float yCentreOfStripPlane = yAlignmentPin + alignmentPinToCentreOfStripPlane ; // distance from intersection of strips to symmetry centre of strip plane float whereStripsMeet = globalRadialPositionOfAlignmentPin + alignmentPinToCentreOfStripPlane ; // Possibly 'correct' distance to strip intersection // if ( useCentreTIOffsets ) { // float ctiOffset = this->ctiOffset(); // whereStripsMeet += ctiOffset; // } whereStripsMeet += centreToIntersectionOffset; // will have been reset to zero if not active // local y value of 1st wire in wire plane double yOfFirstWire = yAlignmentPin + wg.alignmentPinToFirstWire/10.; //@@ in cm // Build the unique LayerGeometry objects we require for each chamber type. // - There are 2 endcaps // - Alternate layers of strips are offset w.r.t. each other // - In ME11 the wire tilt angle needs to be a constant // global value; in the CMS local coordinates this is positive in +z // and negative in -z (magnitude 29 degrees as of 2002) // Thus we need 4 LGs differing in strip offset and wire angle float phiPitch = this->stripPhiPitch(); // Layer thickness can come from specs too float hThickness = specsValue(32)/10./2.; // mm->cm, and then want half the thickness poszOddLayerGeometry = new CSCLayerGeometry( geom, iChamberType, bounds, nstrips, -stripOffset1, phiPitch, whereStripsMeet, extentOfStripPlane, yCentreOfStripPlane, wg, wireAngleInDegrees, yOfFirstWire, hThickness ); poszEvenLayerGeometry = new CSCLayerGeometry( geom, iChamberType, bounds, nstrips, -stripOffset2, phiPitch, whereStripsMeet, extentOfStripPlane, yCentreOfStripPlane, wg, wireAngleInDegrees, yOfFirstWire, hThickness ); negzOddLayerGeometry = new CSCLayerGeometry( geom, iChamberType, bounds, nstrips, -stripOffset1, phiPitch, whereStripsMeet, extentOfStripPlane, yCentreOfStripPlane, wg, -wireAngleInDegrees, yOfFirstWire, hThickness ); negzEvenLayerGeometry = new CSCLayerGeometry( geom, iChamberType, bounds, nstrips, -stripOffset2, phiPitch, whereStripsMeet, extentOfStripPlane, yCentreOfStripPlane, wg, -wireAngleInDegrees, yOfFirstWire, hThickness ); }
CSCChamberSpecs::~CSCChamberSpecs | ( | ) |
Destructor.
Definition at line 88 of file CSCChamberSpecs.cc.
References LogTrace, myName, negzEvenLayerGeometry, negzOddLayerGeometry, poszEvenLayerGeometry, and poszOddLayerGeometry.
{ LogTrace("CSCChamberSpecs|CSC") << myName << " destroying this=" << this; delete poszOddLayerGeometry; delete poszEvenLayerGeometry; delete negzOddLayerGeometry; delete negzEvenLayerGeometry; }
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().
{return specsValue(9);}
float CSCChamberSpecs::calibrationError | ( | ) | const [inline] |
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 117 of file CSCChamberSpecs.cc.
References theChamberType.
Referenced by CSCComparatorDigiValidation::analyze(), CSCWireDigiValidation::analyze(), CSCRecHit2DValidation::analyze(), chamberTypeName(), CSCStripElectronicsSim::createDigi(), CSCWireElectronicsSim::fillDigis(), GlobalRecHitsProducer::fillMuon(), GlobalRecHitsAnalyzer::fillMuon(), CSCStripElectronicsSim::initParameters(), and CSCBaseElectronicsSim::signalDelay().
{ return theChamberType; }
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 121 of file CSCChamberSpecs.cc.
References chamberType(), and theName.
Referenced by CSCSegmentBuilder::build(), CSCSegAlgoTC::buildSegments(), CSCSegAlgoSK::buildSegments(), CSCSegAlgoST::chainHits(), CSCOfflineMonitor::doEfficiencies(), CSCValidation::doEfficiencies(), CSCXonStrip_MatchGatti::findXOnStrip(), and CSCSegAlgoST::run().
{ return theName[chamberType() - 1]; }
float CSCChamberSpecs::chargePerCount | ( | ) | const |
ADC calibration, in fC.
Definition at line 160 of file CSCChamberSpecs.cc.
References theChamberType.
{ if(theChamberType <= 2) { return 0.25; } else { return 0.5; } }
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().
{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.
{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().
{return specsValue(23);}
float CSCChamberSpecs::efficiency | ( | ) | const [inline] |
float CSCChamberSpecs::electronAttraction | ( | ) | const [inline] |
const CSCLayerGeometry* const CSCChamberSpecs::evenLayerGeometry | ( | int | iendcap | ) | const [inline] |
Definition at line 71 of file CSCChamberSpecs.h.
References negzEvenLayerGeometry, and poszEvenLayerGeometry.
Referenced by CSCGeometryBuilder::buildChamber().
{ 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().
{return specsValue(15);}
float CSCChamberSpecs::gasGain | ( | ) | const |
Definition at line 154 of file CSCChamberSpecs.cc.
{ // ME1/1 makes up for its small gap by a big electronics gain // so use one gas gain value for all chambers (=300000) return 3.0e05; }
float CSCChamberSpecs::neutronRate | ( | ) | const [inline] |
neutron hit rate per CSC layer per event.
Definition at line 104 of file CSCChamberSpecs.h.
References specsValue().
{return specsValue(4);}
int CSCChamberSpecs::nFloatingStrips | ( | ) | const [inline] |
Definition at line 116 of file CSCChamberSpecs.h.
References specsValue().
{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 specsValue().
Referenced by CSCStripHitSim::simulate().
{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(), and CSCHitFromStripOnly::runStrip().
{return nstrips;}
int CSCChamberSpecs::nWiresPerGroup | ( | ) | const [inline] |
Definition at line 115 of file CSCChamberSpecs.h.
References specsValue().
Referenced by wireNoise().
{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 CSCGeometryBuilder::buildChamber(), and TrackDetectorAssociator::getTAMuonChamberMatches().
{ return (iendcap==1? poszOddLayerGeometry:negzOddLayerGeometry);}
bool CSCChamberSpecs::operator!= | ( | const CSCChamberSpecs & | specs | ) | const |
Allow comparison of Specs objects.
Definition at line 99 of file CSCChamberSpecs.cc.
References theChamberType.
Referenced by operator==().
{ if ( ( theChamberType != specs.theChamberType ) ) return true; else return false; }
bool CSCChamberSpecs::operator== | ( | const CSCChamberSpecs & | specs | ) | const |
Definition at line 107 of file CSCChamberSpecs.cc.
References operator!=().
{ return !( operator!=(specs) ); }
float CSCChamberSpecs::shaperPeakingTime | ( | ) | const [inline] |
Fast shaper peaking time (ns).
Definition at line 165 of file CSCChamberSpecs.h.
References specsValue().
{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 getHLTprescales::index, and theSpecsValues.
Referenced by anodeCathodeSpacing(), calibrationError(), constantNoise(), CSCChamberSpecs(), e_pF(), efficiency(), electronAttraction(), fractionQS(), neutronRate(), nFloatingStrips(), nNodes(), nWiresPerGroup(), shaperPeakingTime(), stripResolution(), timeWindow(), voltage(), wireRadius(), and wireResolution().
{ return theSpecsValues[ index ]; }
float CSCChamberSpecs::stripNoise | ( | float | timeInterval | ) | const |
Definition at line 148 of file CSCChamberSpecs.cc.
References constantNoise(), e_pF(), TrapezoidalPlaneBounds::length(), poszOddLayerGeometry, and mathSSE::sqrt().
{ const float pF_cm = 0.75; return (constantNoise() + e_pF() * pF_cm * poszOddLayerGeometry->length() ) / sqrt(timeInterval/100.); }
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().
{return 1.E-03 * stripDeltaPhi;}
float CSCChamberSpecs::stripResolution | ( | ) | const [inline] |
float CSCChamberSpecs::timeWindow | ( | ) | const [inline] |
const Topology & CSCChamberSpecs::topology | ( | ) | const [virtual] |
Returns StripTopology of the odd-layer, positive-z geometry.
Implements GeomDetType.
Definition at line 112 of file CSCChamberSpecs.cc.
References poszOddLayerGeometry, and CSCLayerGeometry::topology().
{ return *(poszOddLayerGeometry->topology()); }
float CSCChamberSpecs::voltage | ( | ) | const [inline] |
int CSCChamberSpecs::whatChamberType | ( | int | istation, |
int | iring | ||
) | [static] |
The usual integer label for 'chamber type' of this ring and station
Definition at line 131 of file CSCChamberSpecs.cc.
References i.
Referenced by CSCGeometryParsFromDD::build(), CSCGeometryBuilder::build(), CSCGeometryBuilder::buildChamber(), CSCNeutronWriter::chamberType(), CSCNeutronReader::chamberType(), and CSCConfigurableStripConditions::fetchNoisifier().
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 mathSSE::sqrt().
Referenced by CSCWireElectronicsSim::initParameters().
{ const float WIRE_CAPACITANCE = 8.; // in pF return (constantNoise() + nWiresPerGroup()*WIRE_CAPACITANCE) / sqrt(timeInterval/100.); }
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().
{return specsValue(17);}
float CSCChamberSpecs::wireResolution | ( | ) | const [inline] |
float CSCChamberSpecs::wireSpacing | ( | ) | const |
wire spacing, in cm. All layers in a chamber have the same spacing.
Definition at line 144 of file CSCChamberSpecs.cc.
References poszOddLayerGeometry, and CSCLayerGeometry::wirePitch().
Referenced by CSCDriftSim::getWireHit(), CSCXonStrip_MatchGatti::initChamberSpecs(), and CSCGattiFunction::initChamberSpecs().
{ return poszOddLayerGeometry->wirePitch(); }
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().
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 230 of file CSCChamberSpecs.h.
Referenced by CSCChamberSpecs(), and nStrips().
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] |
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] |
{"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().
Definition at line 228 of file CSCChamberSpecs.h.
Referenced by specsValue().