#include <SimMuon/CSCDigitizer/src/CSCDbStripConditions.h>
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 | |
virtual float | gainSigma (const CSCDetId &detId, int channel) const |
total calibration precision | |
virtual void | initializeEvent (const edm::EventSetup &es) |
fetch the maps from the database | |
virtual bool | isInBadChamber (const CSCDetId &id) const |
check list of bad chambers from db | |
virtual float | pedestal (const CSCDetId &detId, int channel) const |
in ADC counts | |
virtual float | pedestalSigma (const CSCDetId &detId, int channel) const |
virtual | ~CSCDbStripConditions () |
Private Member Functions | |
virtual void | fetchNoisifier (const CSCDetId &detId, int istrip) |
Private Attributes | |
bool | doCorrelatedNoise_ |
float | theCapacitiveCrosstalk |
CSCConditions | theConditions |
float | theGainsConstant |
float | theResistiveCrosstalkScaling |
Definition at line 8 of file CSCDbStripConditions.h.
CSCDbStripConditions::CSCDbStripConditions | ( | const edm::ParameterSet & | pset | ) | [explicit] |
Definition at line 12 of file CSCDbStripConditions.cc.
00013 : CSCStripConditions(), 00014 theConditions( pset ), 00015 theCapacitiveCrosstalk(pset.getParameter<double>("capacativeCrosstalk")), 00016 theResistiveCrosstalkScaling(pset.getParameter<double>("resistiveCrosstalkScaling")), 00017 theGainsConstant(pset.getParameter<double>("gainsConstant")), 00018 doCorrelatedNoise_(pset.getParameter<bool>("doCorrelatedNoise")) 00019 { 00020 // theCapacitiveCrosstalk = = 1/maxslope/maxsignal) = 1/ (0.00231/0.143); 00021 // Howoever, need a bit more. Maybe the slope gets smeared? 00022 }
CSCDbStripConditions::~CSCDbStripConditions | ( | ) | [virtual] |
Definition at line 25 of file CSCDbStripConditions.cc.
References CSCStripConditions::theNoisifier.
00026 { 00027 if(theNoisifier != 0) delete theNoisifier; 00028 }
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.
00068 { 00069 CSCChannelTranslator translate; 00070 CSCDetId idraw = translate.rawCSCDetId( detId ); 00071 int iraw = translate.rawStripChannel( detId, channel ); 00072 00073 resistive = theConditions.crosstalkIntercept(idraw, iraw, leftRight) 00074 * theResistiveCrosstalkScaling; 00075 float slope = theConditions.crosstalkSlope(idraw, iraw, leftRight); 00076 // ns before the peak where slope is max 00077 float maxSlopeTime = 60.; 00078 // some confusion about +/- 00079 float capacitiveFraction = fabs(slope)*maxSlopeTime; 00080 // theCapacitiveCrosstalk is the number needed for 100% xtalk, so 00081 capacitive = theCapacitiveCrosstalk * capacitiveFraction; 00082 }
Implements CSCStripConditions.
Definition at line 86 of file CSCDbStripConditions.cc.
References doCorrelatedNoise_, matrix, me, CSCConditions::noiseMatrixElements(), pedestalSigma(), CSCChannelTranslator::rawCSCDetId(), CSCChannelTranslator::rawStripChannel(), theConditions, and CSCStripConditions::theNoisifier.
00087 { 00088 CSCChannelTranslator translate; 00089 CSCDetId idraw = translate.rawCSCDetId( detId ); 00090 int iraw = translate.rawStripChannel( detId, istrip ); 00091 00092 std::vector<float> me(12); // buffer for matrix elements 00093 theConditions.noiseMatrixElements( idraw, iraw, me ); // fill it 00094 00095 CSCCorrelatedNoiseMatrix matrix; 00096 //TODO get the pedestals right 00097 matrix(2,2) = me[0]; // item.elem33; 00098 matrix(3,3) = me[3]; // item.elem44; 00099 matrix(4,4) = me[6]; // item.elem55; 00100 matrix(5,5) = me[9]; // item.elem66; 00101 matrix(6,6) = me[11]; // item.elem77; 00102 00103 if(doCorrelatedNoise_) 00104 { 00105 matrix(2,3) = me[1]; // item.elem34; 00106 matrix(2,4) = me[2]; // item.elem35; 00107 matrix(3,4) = me[4]; // item.elem45; 00108 matrix(3,5) = me[5]; // item.elem46; 00109 matrix(4,5) = me[7]; // item.elem56; 00110 matrix(4,6) = me[8]; // item.elem57; 00111 matrix(5,6) = me[10]; // item.elem67; 00112 } 00113 00114 // the other diagonal elements can just come from the pedestal sigma 00115 float sigma = pedestalSigma(detId, istrip); 00116 //@@ float scaVariance = 2 * sigma * sigma; 00117 //@@ The '2 *' IS strictly correct, but currently the value in the cond db is 2x too large since 00118 //@@ it is the rms of the distribution of pedestals of all 8 time samples rather than the rms of 00119 //@@ the average of the first two time samples 00120 float scaVariance = sigma * sigma; 00121 matrix(0,0) = matrix(1,1) = matrix(7,7) = scaVariance; 00122 00123 // unknown neighbors can be the average of the known neighbors 00124 //float avgNeighbor = (matrix(2,3)+matrix(3,4)+matrix(4,5)+matrix(5,6))/4.; 00125 //float avg2away = (matrix(2,4)+matrix(3,5)+matrix(4,6))/3.; 00126 //matrix(0,1) = matrix(1,2) = matrix(6,7) = avgNeighbor; 00127 //matrix(0,2) = matrix(1,3) = matrix(5,7) = avg2away; 00128 00129 if(theNoisifier != 0) delete theNoisifier; 00130 theNoisifier = new CSCCorrelatedNoisifier(matrix); 00131 }
channels count from 1
Implements CSCStripConditions.
Definition at line 37 of file CSCDbStripConditions.cc.
References CSCConditions::gain(), CSCChannelTranslator::rawCSCDetId(), CSCChannelTranslator::rawStripChannel(), theConditions, and theGainsConstant.
00038 { 00039 CSCChannelTranslator translate; 00040 CSCDetId idraw = translate.rawCSCDetId( detId ); 00041 int iraw = translate.rawStripChannel( detId, channel ); 00042 return theConditions.gain(idraw, iraw) * theGainsConstant; 00043 }
virtual float CSCDbStripConditions::gainSigma | ( | const CSCDetId & | detId, | |
int | channel | |||
) | const [inline, virtual] |
total calibration precision
Implements CSCStripConditions.
Definition at line 20 of file CSCDbStripConditions.h.
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.
00032 { 00033 theConditions.initializeEvent(es); 00034 }
check list of bad chambers from db
Reimplemented from CSCStripConditions.
Definition at line 133 of file CSCDbStripConditions.cc.
References CSCConditions::isInBadChamber(), and theConditions.
00134 { 00135 return theConditions.isInBadChamber( detId ); 00136 }
in ADC counts
Implements CSCStripConditions.
Definition at line 47 of file CSCDbStripConditions.cc.
References CSCConditions::pedestal(), CSCChannelTranslator::rawCSCDetId(), CSCChannelTranslator::rawStripChannel(), and theConditions.
00048 { 00049 CSCChannelTranslator translate; 00050 CSCDetId idraw = translate.rawCSCDetId( detId ); 00051 int iraw = translate.rawStripChannel( detId, channel ); 00052 return theConditions.pedestal(idraw, iraw); 00053 }
Implements CSCStripConditions.
Definition at line 56 of file CSCDbStripConditions.cc.
References CSCConditions::pedestalSigma(), CSCChannelTranslator::rawCSCDetId(), CSCChannelTranslator::rawStripChannel(), and theConditions.
Referenced by fetchNoisifier().
00057 { 00058 CSCChannelTranslator translate; 00059 CSCDetId idraw = translate.rawCSCDetId( detId ); 00060 int iraw = translate.rawStripChannel( detId, channel ); 00061 return theConditions.pedestalSigma(idraw, iraw); 00062 }
bool CSCDbStripConditions::doCorrelatedNoise_ [private] |
float CSCDbStripConditions::theCapacitiveCrosstalk [private] |
Definition at line 36 of file CSCDbStripConditions.h.
Referenced by crosstalk(), fetchNoisifier(), gain(), initializeEvent(), isInBadChamber(), pedestal(), and pedestalSigma().
float CSCDbStripConditions::theGainsConstant [private] |
float CSCDbStripConditions::theResistiveCrosstalkScaling [private] |