CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
CSCDbStripConditions Class Reference

#include <CSCDbStripConditions.h>

Inheritance diagram for CSCDbStripConditions:
CSCStripConditions

Public Member Functions

virtual void crosstalk (const CSCDetId &detId, int channel, double stripLength, bool leftRight, float &capacitive, float &resistive) const
 
 CSCDbStripConditions (const edm::ParameterSet &pset)
 
virtual float gain (const CSCDetId &detId, int channel) const
 channels count from 1 More...
 
virtual float gainSigma (const CSCDetId &detId, int channel) const
 total calibration precision More...
 
virtual void initializeEvent (const edm::EventSetup &es)
 fetch the maps from the database More...
 
virtual bool isInBadChamber (const CSCDetId &id) const
 check list of bad chambers from db More...
 
virtual float pedestal (const CSCDetId &detId, int channel) const
 in ADC counts More...
 
virtual float pedestalSigma (const CSCDetId &detId, int channel) const
 
virtual ~CSCDbStripConditions ()
 
- Public Member Functions inherited from CSCStripConditions
float analogNoise (const CSCDetId &detId, int channel) const
 calculated from pedestalSigma & gain More...
 
 CSCStripConditions ()
 
void noisify (const CSCDetId &detId, CSCAnalogSignal &signal)
 superimposes noise, in fC, on the signal More...
 
void setRandomEngine (CLHEP::HepRandomEngine &engine)
 
virtual float smearedGain (const CSCDetId &detId, int channel) const
 
virtual ~CSCStripConditions ()
 

Private Member Functions

virtual void fetchNoisifier (const CSCDetId &detId, int istrip)
 

Private Attributes

bool doCorrelatedNoise_
 
float theCapacitiveCrosstalk
 
CSCConditions theConditions
 
float theGainsConstant
 
float theResistiveCrosstalkScaling
 

Additional Inherited Members

- Public Types inherited from CSCStripConditions
typedef math::ErrorD< 8 >::type CSCCorrelatedNoiseMatrix
 
typedef CorrelatedNoisifier
< CSCCorrelatedNoiseMatrix
CSCCorrelatedNoisifier
 
- Protected Attributes inherited from CSCStripConditions
CSCCorrelatedNoisifiertheNoisifier
 
CLHEP::RandGaussQ * theRandGaussQ
 

Detailed Description

Definition at line 8 of file CSCDbStripConditions.h.

Constructor & Destructor Documentation

CSCDbStripConditions::CSCDbStripConditions ( const edm::ParameterSet pset)
explicit

Definition at line 12 of file CSCDbStripConditions.cc.

14  theConditions( pset ),
15  theCapacitiveCrosstalk(pset.getParameter<double>("capacativeCrosstalk")),
16  theResistiveCrosstalkScaling(pset.getParameter<double>("resistiveCrosstalkScaling")),
17  theGainsConstant(pset.getParameter<double>("gainsConstant")),
18  doCorrelatedNoise_(pset.getParameter<bool>("doCorrelatedNoise"))
19 {
20 // theCapacitiveCrosstalk = = 1/maxslope/maxsignal) = 1/ (0.00231/0.143);
21 // Howoever, need a bit more. Maybe the slope gets smeared?
22 }
T getParameter(std::string const &) const
CSCDbStripConditions::~CSCDbStripConditions ( )
virtual

Definition at line 25 of file CSCDbStripConditions.cc.

References CSCStripConditions::theNoisifier.

26 {
27  if(theNoisifier != 0) delete theNoisifier;
28 }
CSCCorrelatedNoisifier * theNoisifier

Member Function Documentation

void CSCDbStripConditions::crosstalk ( const CSCDetId detId,
int  channel,
double  stripLength,
bool  leftRight,
float &  capacitive,
float &  resistive 
) const
virtual

Implements CSCStripConditions.

Definition at line 65 of file CSCDbStripConditions.cc.

References CSCConditions::crosstalkIntercept(), CSCConditions::crosstalkSlope(), CSCChannelTranslator::rawCSCDetId(), CSCChannelTranslator::rawStripChannel(), slope, theCapacitiveCrosstalk, theConditions, and theResistiveCrosstalkScaling.

68 {
69  CSCChannelTranslator translate;
70  CSCDetId idraw = translate.rawCSCDetId( detId );
71  int iraw = translate.rawStripChannel( detId, channel );
72 
73  resistive = theConditions.crosstalkIntercept(idraw, iraw, leftRight)
75  float slope = theConditions.crosstalkSlope(idraw, iraw, leftRight);
76  // ns before the peak where slope is max
77  float maxSlopeTime = 60.;
78  // some confusion about +/-
79  float capacitiveFraction = fabs(slope)*maxSlopeTime;
80  // theCapacitiveCrosstalk is the number needed for 100% xtalk, so
81  capacitive = theCapacitiveCrosstalk * capacitiveFraction;
82 }
static const double slope[3]
float crosstalkSlope(const CSCDetId &detId, int channel, bool leftRight) const
float crosstalkIntercept(const CSCDetId &detId, int channel, bool leftRight) const
int rawStripChannel(const CSCDetId &id, int igeom) const
Return raw strip channel number for input geometrical channel number.
CSCDetId rawCSCDetId(const CSCDetId &id) const
void CSCDbStripConditions::fetchNoisifier ( const CSCDetId detId,
int  istrip 
)
privatevirtual

Implements CSCStripConditions.

Definition at line 86 of file CSCDbStripConditions.cc.

References doCorrelatedNoise_, makeMuonMisalignmentScenario::matrix, CSCConditions::noiseMatrixElements(), pedestalSigma(), CSCChannelTranslator::rawCSCDetId(), CSCChannelTranslator::rawStripChannel(), theConditions, and CSCStripConditions::theNoisifier.

87 {
88  CSCChannelTranslator translate;
89  CSCDetId idraw = translate.rawCSCDetId( detId );
90  int iraw = translate.rawStripChannel( detId, istrip );
91 
92  std::vector<float> me(12); // buffer for matrix elements
93  theConditions.noiseMatrixElements( idraw, iraw, me ); // fill it
94 
96  //TODO get the pedestals right
97  matrix(2,2) = me[0]; // item.elem33;
98  matrix(3,3) = me[3]; // item.elem44;
99  matrix(4,4) = me[6]; // item.elem55;
100  matrix(5,5) = me[9]; // item.elem66;
101  matrix(6,6) = me[11]; // item.elem77;
102 
104  {
105  matrix(2,3) = me[1]; // item.elem34;
106  matrix(2,4) = me[2]; // item.elem35;
107  matrix(3,4) = me[4]; // item.elem45;
108  matrix(3,5) = me[5]; // item.elem46;
109  matrix(4,5) = me[7]; // item.elem56;
110  matrix(4,6) = me[8]; // item.elem57;
111  matrix(5,6) = me[10]; // item.elem67;
112  }
113 
114  // the other diagonal elements can just come from the pedestal sigma
115  float sigma = pedestalSigma(detId, istrip);
116  //@@ float scaVariance = 2 * sigma * sigma;
117  //@@ The '2 *' IS strictly correct, but currently the value in the cond db is 2x too large since
118  //@@ it is the rms of the distribution of pedestals of all 8 time samples rather than the rms of
119  //@@ the average of the first two time samples
120  float scaVariance = sigma * sigma;
121  matrix(0,0) = matrix(1,1) = matrix(7,7) = scaVariance;
122 
123  // unknown neighbors can be the average of the known neighbors
124  //float avgNeighbor = (matrix(2,3)+matrix(3,4)+matrix(4,5)+matrix(5,6))/4.;
125  //float avg2away = (matrix(2,4)+matrix(3,5)+matrix(4,6))/3.;
126  //matrix(0,1) = matrix(1,2) = matrix(6,7) = avgNeighbor;
127  //matrix(0,2) = matrix(1,3) = matrix(5,7) = avg2away;
128 
129  if(theNoisifier != 0) delete theNoisifier;
130  theNoisifier = new CSCCorrelatedNoisifier(matrix);
131 }
void noiseMatrixElements(const CSCDetId &id, int channel, std::vector< float > &me) const
fill vector (dim 12, must be allocated by caller) with noise matrix elements (scaled to float) ...
math::ErrorD< 8 >::type CSCCorrelatedNoiseMatrix
virtual float pedestalSigma(const CSCDetId &detId, int channel) const
CSCCorrelatedNoisifier * theNoisifier
int rawStripChannel(const CSCDetId &id, int igeom) const
Return raw strip channel number for input geometrical channel number.
CorrelatedNoisifier< CSCCorrelatedNoiseMatrix > CSCCorrelatedNoisifier
CSCDetId rawCSCDetId(const CSCDetId &id) const
float CSCDbStripConditions::gain ( const CSCDetId detId,
int  channel 
) const
virtual

channels count from 1

Implements CSCStripConditions.

Definition at line 37 of file CSCDbStripConditions.cc.

References CSCConditions::gain(), CSCChannelTranslator::rawCSCDetId(), CSCChannelTranslator::rawStripChannel(), theConditions, and theGainsConstant.

38 {
39  CSCChannelTranslator translate;
40  CSCDetId idraw = translate.rawCSCDetId( detId );
41  int iraw = translate.rawStripChannel( detId, channel );
42  return theConditions.gain(idraw, iraw) * theGainsConstant;
43 }
float gain(const CSCDetId &detId, int channel) const
channels count from 1
int rawStripChannel(const CSCDetId &id, int igeom) const
Return raw strip channel number for input geometrical channel number.
CSCDetId rawCSCDetId(const CSCDetId &id) const
virtual float CSCDbStripConditions::gainSigma ( const CSCDetId detId,
int  channel 
) const
inlinevirtual

total calibration precision

Implements CSCStripConditions.

Definition at line 20 of file CSCDbStripConditions.h.

20 {return 0.005;}
void CSCDbStripConditions::initializeEvent ( const edm::EventSetup es)
virtual

fetch the maps from the database

Reimplemented from CSCStripConditions.

Definition at line 31 of file CSCDbStripConditions.cc.

References CSCConditions::initializeEvent(), and theConditions.

32 {
34 }
void initializeEvent(const edm::EventSetup &es)
fetch the maps from the database
bool CSCDbStripConditions::isInBadChamber ( const CSCDetId id) const
virtual

check list of bad chambers from db

Reimplemented from CSCStripConditions.

Definition at line 133 of file CSCDbStripConditions.cc.

References CSCConditions::isInBadChamber(), and theConditions.

134 {
135  return theConditions.isInBadChamber( detId );
136 }
bool isInBadChamber(const CSCDetId &id) const
Is the gven chamber flagged as bad?
float CSCDbStripConditions::pedestal ( const CSCDetId detId,
int  channel 
) const
virtual

in ADC counts

Implements CSCStripConditions.

Definition at line 47 of file CSCDbStripConditions.cc.

References CSCConditions::pedestal(), CSCChannelTranslator::rawCSCDetId(), CSCChannelTranslator::rawStripChannel(), and theConditions.

48 {
49  CSCChannelTranslator translate;
50  CSCDetId idraw = translate.rawCSCDetId( detId );
51  int iraw = translate.rawStripChannel( detId, channel );
52  return theConditions.pedestal(idraw, iraw);
53 }
float pedestal(const CSCDetId &detId, int channel) const
in ADC counts
int rawStripChannel(const CSCDetId &id, int igeom) const
Return raw strip channel number for input geometrical channel number.
CSCDetId rawCSCDetId(const CSCDetId &id) const
float CSCDbStripConditions::pedestalSigma ( const CSCDetId detId,
int  channel 
) const
virtual

Implements CSCStripConditions.

Definition at line 56 of file CSCDbStripConditions.cc.

References CSCConditions::pedestalSigma(), CSCChannelTranslator::rawCSCDetId(), CSCChannelTranslator::rawStripChannel(), and theConditions.

Referenced by fetchNoisifier().

57 {
58  CSCChannelTranslator translate;
59  CSCDetId idraw = translate.rawCSCDetId( detId );
60  int iraw = translate.rawStripChannel( detId, channel );
61  return theConditions.pedestalSigma(idraw, iraw);
62 }
float pedestalSigma(const CSCDetId &detId, int channel) const
int rawStripChannel(const CSCDetId &id, int igeom) const
Return raw strip channel number for input geometrical channel number.
CSCDetId rawCSCDetId(const CSCDetId &id) const

Member Data Documentation

bool CSCDbStripConditions::doCorrelatedNoise_
private

Definition at line 45 of file CSCDbStripConditions.h.

Referenced by fetchNoisifier().

float CSCDbStripConditions::theCapacitiveCrosstalk
private

Definition at line 39 of file CSCDbStripConditions.h.

Referenced by crosstalk().

CSCConditions CSCDbStripConditions::theConditions
private
float CSCDbStripConditions::theGainsConstant
private

Definition at line 44 of file CSCDbStripConditions.h.

Referenced by gain().

float CSCDbStripConditions::theResistiveCrosstalkScaling
private

Definition at line 42 of file CSCDbStripConditions.h.

Referenced by crosstalk().