CMS 3D CMS Logo

CSCDbStripConditions.cc
Go to the documentation of this file.
9 
12  theConditions(pset, cc),
13  theCapacitiveCrosstalk(pset.getParameter<double>("capacativeCrosstalk")),
14  theResistiveCrosstalkScaling(pset.getParameter<double>("resistiveCrosstalkScaling")),
15  theGainsConstant(pset.getParameter<double>("gainsConstant")),
16  doCorrelatedNoise_(pset.getParameter<bool>("doCorrelatedNoise")) {
17  // theCapacitiveCrosstalk = = 1/maxslope/maxsignal) = 1/ (0.00231/0.143);
18  // Howoever, need a bit more. Maybe the slope gets smeared?
19 }
20 
22  if (theNoisifier != nullptr)
23  delete theNoisifier;
24 }
25 
27 
28 float CSCDbStripConditions::gain(const CSCDetId &id, int channel) const {
29  return theConditions.gain(id, channel) * theGainsConstant;
30 }
31 
32 float CSCDbStripConditions::pedestal(const CSCDetId &id, int channel) const {
33  return theConditions.pedestal(id, channel);
34 }
35 
36 float CSCDbStripConditions::pedestalSigma(const CSCDetId &id, int channel) const {
37  return theConditions.pedestalSigma(id, channel);
38 }
39 
41  const CSCDetId &id, int channel, double stripLength, bool leftRight, float &capacitive, float &resistive) const {
42  resistive = theConditions.crosstalkIntercept(id, channel, leftRight) * theResistiveCrosstalkScaling;
43  float slope = theConditions.crosstalkSlope(id, channel, leftRight);
44  // ns before the peak where slope is max
45  float maxSlopeTime = 60.;
46  // some confusion about +/-
47  float capacitiveFraction = fabs(slope) * maxSlopeTime;
48  // theCapacitiveCrosstalk is the number needed for 100% xtalk, so
49  capacitive = theCapacitiveCrosstalk * capacitiveFraction;
50 }
51 
52 void CSCDbStripConditions::fetchNoisifier(const CSCDetId &id, int istrip) {
53  std::vector<float> me(12); // buffer for matrix elements
54  theConditions.noiseMatrixElements(id, istrip, me); // fill it
55 
57  // TODO get the pedestals right
58  matrix(2, 2) = me[0]; // item.elem33;
59  matrix(3, 3) = me[3]; // item.elem44;
60  matrix(4, 4) = me[6]; // item.elem55;
61  matrix(5, 5) = me[9]; // item.elem66;
62  matrix(6, 6) = me[11]; // item.elem77;
63 
64  if (doCorrelatedNoise_) {
65  matrix(2, 3) = me[1]; // item.elem34;
66  matrix(2, 4) = me[2]; // item.elem35;
67  matrix(3, 4) = me[4]; // item.elem45;
68  matrix(3, 5) = me[5]; // item.elem46;
69  matrix(4, 5) = me[7]; // item.elem56;
70  matrix(4, 6) = me[8]; // item.elem57;
71  matrix(5, 6) = me[10]; // item.elem67;
72  }
73 
74  // the other diagonal elements can just come from the pedestal sigma
75  float sigma = pedestalSigma(id, istrip);
76  //@@ float scaVariance = 2 * sigma * sigma;
77  //@@ The '2 *' IS strictly correct, but currently the value in the cond db is
78  // 2x too large since
79  //@@ it is the rms of the distribution of pedestals of all 8 time samples
80  // rather than the rms of
81  //@@ the average of the first two time samples
82  float scaVariance = sigma * sigma;
83  matrix(0, 0) = matrix(1, 1) = matrix(7, 7) = scaVariance;
84 
85  // unknown neighbors can be the average of the known neighbors
86  // float avgNeighbor = (matrix(2,3)+matrix(3,4)+matrix(4,5)+matrix(5,6))/4.;
87  // float avg2away = (matrix(2,4)+matrix(3,5)+matrix(4,6))/3.;
88  // matrix(0,1) = matrix(1,2) = matrix(6,7) = avgNeighbor;
89  // matrix(0,2) = matrix(1,3) = matrix(5,7) = avg2away;
90 
91  if (theNoisifier != nullptr)
92  delete theNoisifier;
94 }
95 
electrons_cff.bool
bool
Definition: electrons_cff.py:393
CSCDbStripConditions::initializeEvent
void initializeEvent(const edm::EventSetup &es) override
fetch the maps from the database
Definition: CSCDbStripConditions.cc:26
CSCDbStripConditions.h
makeMuonMisalignmentScenario.matrix
list matrix
Definition: makeMuonMisalignmentScenario.py:141
CSCDbStripConditions::isInBadChamber
bool isInBadChamber(const CSCDetId &id) const override
check list of bad chambers from db
Definition: CSCDbStripConditions.cc:96
CSCStripConditions::CSCCorrelatedNoiseMatrix
math::ErrorD< 8 >::type CSCCorrelatedNoiseMatrix
Definition: CSCStripConditions.h:15
CSCDbStripConditions::CSCDbStripConditions
CSCDbStripConditions(const edm::ParameterSet &pset, edm::ConsumesCollector cc)
Definition: CSCDbStripConditions.cc:10
CSCDbStripConditions::pedestal
float pedestal(const CSCDetId &detId, int channel) const override
in ADC counts
Definition: CSCDbStripConditions.cc:32
CSCConditions::pedestal
float pedestal(const CSCDetId &detId, int channel) const
static ped in ADC counts
Definition: CSCConditions.cc:245
CSCDbStripConditions::theResistiveCrosstalkScaling
float theResistiveCrosstalkScaling
Definition: CSCDbStripConditions.h:44
CSCDetId.h
CSCConditions::isInBadChamber
bool isInBadChamber(const CSCDetId &id) const
Is the gven chamber flagged as bad?
Definition: CSCConditions.cc:223
CSCDbStripConditions::doCorrelatedNoise_
bool doCorrelatedNoise_
Definition: CSCDbStripConditions.h:47
CSCConditions::gain
float gain(const CSCDetId &detId, int channel) const
gain per channel
Definition: CSCConditions.cc:237
CSCConditions::noiseMatrixElements
void noiseMatrixElements(const CSCDetId &id, int channel, std::vector< float > &me) const
Definition: CSCConditions.cc:293
CSCConditions::crosstalkIntercept
float crosstalkIntercept(const CSCDetId &detId, int channel, bool leftRight) const
crosstalk intercept for left and right
Definition: CSCConditions.cc:261
CSCDBNoiseMatrixRcd.h
CSCStripConditions
Definition: CSCStripConditions.h:13
CSCDbStripConditions::gain
float gain(const CSCDetId &detId, int channel) const override
channels count from 1
Definition: CSCDbStripConditions.cc:28
CSCDbStripConditions::fetchNoisifier
void fetchNoisifier(const CSCDetId &detId, int istrip) override
Definition: CSCDbStripConditions.cc:52
CSCStripConditions::CSCCorrelatedNoisifier
CorrelatedNoisifier< CSCCorrelatedNoiseMatrix > CSCCorrelatedNoisifier
Definition: CSCStripConditions.h:16
CSCStripConditions::theNoisifier
CSCCorrelatedNoisifier * theNoisifier
Definition: CSCStripConditions.h:52
edm::ParameterSet
Definition: ParameterSet.h:47
CSCDbStripConditions::~CSCDbStripConditions
~CSCDbStripConditions() override
Definition: CSCDbStripConditions.cc:21
CSCChannelTranslator.h
CSCDetId
Definition: CSCDetId.h:26
edm::EventSetup
Definition: EventSetup.h:57
CSCConditions::initializeEvent
void initializeEvent(const edm::EventSetup &es)
fetch database content via EventSetup
Definition: CSCConditions.cc:74
CSCDbStripConditions::pedestalSigma
float pedestalSigma(const CSCDetId &detId, int channel) const override
Definition: CSCDbStripConditions.cc:36
cc
CSCConditions::pedestalSigma
float pedestalSigma(const CSCDetId &detId, int channel) const
static ped rms in ADC counts
Definition: CSCConditions.cc:253
CSCDBCrosstalkRcd.h
CSCConditions::crosstalkSlope
float crosstalkSlope(const CSCDetId &detId, int channel, bool leftRight) const
crosstalk slope for left and right
Definition: CSCConditions.cc:271
CSCDbStripConditions::theGainsConstant
float theGainsConstant
Definition: CSCDbStripConditions.h:46
CSCDBGainsRcd.h
CSCDbStripConditions::theConditions
CSCConditions theConditions
Definition: CSCDbStripConditions.h:38
Exception.h
hlt_dqm_clientPB-live_cfg.me
me
Definition: hlt_dqm_clientPB-live_cfg.py:61
slope
static const double slope[3]
Definition: CastorTimeSlew.cc:6
CSCDBPedestalsRcd.h
CSCDbStripConditions::crosstalk
void crosstalk(const CSCDetId &detId, int channel, double stripLength, bool leftRight, float &capacitive, float &resistive) const override
Definition: CSCDbStripConditions.cc:40
edm::ConsumesCollector
Definition: ConsumesCollector.h:45
CSCDbStripConditions::theCapacitiveCrosstalk
float theCapacitiveCrosstalk
Definition: CSCDbStripConditions.h:41
muonDTDigis_cfi.pset
pset
Definition: muonDTDigis_cfi.py:27