CMS 3D CMS Logo

CSCDbStripConditions Class Reference

#include <SimMuon/CSCDigitizer/src/CSCDbStripConditions.h>

Inheritance diagram for CSCDbStripConditions:

CSCStripConditions

List of all members.

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


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.

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 }


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.

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 }

void CSCDbStripConditions::fetchNoisifier ( const CSCDetId detId,
int  istrip 
) [private, virtual]

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 }

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.

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.

00020 {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.

00032 {
00033   theConditions.initializeEvent(es);
00034 }

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.

00134 {
00135   return theConditions.isInBadChamber( detId );
00136 }

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.

00048 {
00049   CSCChannelTranslator translate;
00050   CSCDetId idraw = translate.rawCSCDetId( detId );
00051   int iraw = translate.rawStripChannel( detId, channel );
00052   return theConditions.pedestal(idraw, iraw);
00053 }

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().

00057 {
00058   CSCChannelTranslator translate;
00059   CSCDetId idraw = translate.rawCSCDetId( detId );
00060   int iraw = translate.rawStripChannel( detId, channel );
00061   return theConditions.pedestalSigma(idraw, iraw);
00062 }


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]

Definition at line 36 of file CSCDbStripConditions.h.

Referenced by crosstalk(), fetchNoisifier(), gain(), initializeEvent(), isInBadChamber(), pedestal(), and pedestalSigma().

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().


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:17:10 2009 for CMSSW by  doxygen 1.5.4