#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 * | evenLayerGeometry (int iendcap) const |
float | fractionQS () const |
bool | gangedStrips () const |
float | gasGain () const |
float | neutronRate () const |
int | nFloatingStrips () const |
int | nNodes () const |
int | nStrips () const |
int | nWiresPerGroup () const |
const CSCLayerGeometry * | 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 |
bool | gangedStrips_ |
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, or 10 incl. ME1A as separate) 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 10 of file CSCChamberSpecs.cc.
References CSCWireGroupPackage::alignmentPinToFirstWire, centreToIntersectionOffset, CSCGeometry::gangedStrips(), gangedStrips_, 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) ), gangedStrips_( false ) { LogTrace("CSCChamberSpecs|CSC") << myName << ": constructing specs for chamber " << theName[iChamberType - 1] << ", type=" << iChamberType << ", this =" << this; // Reset gangedStrips_ for ME1A from config parameter if ( iChamberType == 1 ) gangedStrips_ = geom->gangedStrips(); // 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 92 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 121 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 125 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 164 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* 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);}
bool CSCChamberSpecs::gangedStrips | ( | ) | const [inline] |
Are strips ganged?
Definition at line 197 of file CSCChamberSpecs.h.
References gangedStrips_.
Referenced by CSCSegAlgoST::chainHits(), CSCSegAlgoST::run(), and CSCHitFromStripOnly::runStrip().
{ return gangedStrips_; }
float CSCChamberSpecs::gasGain | ( | ) | const |
Definition at line 158 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* 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 103 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 111 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 209 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 152 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 116 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 135 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 148 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 236 of file CSCChamberSpecs.h.
Referenced by CSCChamberSpecs(), and ctiOffset().
bool CSCChamberSpecs::gangedStrips_ [private] |
Definition at line 238 of file CSCChamberSpecs.h.
Referenced by CSCChamberSpecs(), and gangedStrips().
const std::string CSCChamberSpecs::myName = "CSCChamberSpecs" [static, private] |
Definition at line 244 of file CSCChamberSpecs.h.
Referenced by CSCChamberSpecs(), and ~CSCChamberSpecs().
Definition at line 217 of file CSCChamberSpecs.h.
Referenced by CSCChamberSpecs(), evenLayerGeometry(), and ~CSCChamberSpecs().
Definition at line 216 of file CSCChamberSpecs.h.
Referenced by CSCChamberSpecs(), oddLayerGeometry(), and ~CSCChamberSpecs().
int CSCChamberSpecs::nstrips [private] |
Definition at line 234 of file CSCChamberSpecs.h.
Referenced by CSCChamberSpecs(), and nStrips().
Definition at line 215 of file CSCChamberSpecs.h.
Referenced by CSCChamberSpecs(), evenLayerGeometry(), and ~CSCChamberSpecs().
Definition at line 214 of file CSCChamberSpecs.h.
Referenced by CSCChamberSpecs(), oddLayerGeometry(), stripNoise(), topology(), wireSpacing(), and ~CSCChamberSpecs().
float CSCChamberSpecs::stripDeltaPhi [private] |
Definition at line 235 of file CSCChamberSpecs.h.
Referenced by stripPhiPitch().
int CSCChamberSpecs::theChamberType [private] |
Definition at line 226 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 241 of file CSCChamberSpecs.h.
Referenced by chamberTypeName(), and CSCChamberSpecs().
Definition at line 232 of file CSCChamberSpecs.h.
Referenced by specsValue().