Go to the documentation of this file.00001 #ifndef CSCDigitizer_CSCStripConditions_h
00002 #define CSCDigitizer_CSCStripConditions_h
00003
00004 #include "SimGeneral/NoiseGenerators/interface/CorrelatedNoisifier.h"
00005 #include "SimMuon/CSCDigitizer/src/CSCAnalogSignal.h"
00006 #include "DataFormats/MuonDetId/interface/CSCDetId.h"
00007 #include "FWCore/Framework/interface/EventSetup.h"
00008 #include "CLHEP/Random/RandGaussQ.h"
00009
00010
00011 class CSCStripConditions
00012 {
00013 public:
00014 typedef math::ErrorD<8>::type CSCCorrelatedNoiseMatrix;
00015 typedef CorrelatedNoisifier<CSCCorrelatedNoiseMatrix> CSCCorrelatedNoisifier;
00016 CSCStripConditions();
00017
00018 virtual ~CSCStripConditions();
00019
00020 void setRandomEngine(CLHEP::HepRandomEngine& engine);
00021
00023 void noisify(const CSCDetId & detId, CSCAnalogSignal & signal);
00024
00025 virtual void initializeEvent(const edm::EventSetup & es) {}
00026
00029 virtual float gain(const CSCDetId & detId, int channel) const = 0;
00030 virtual float gainSigma(const CSCDetId & detId, int channel) const = 0;
00031 virtual float smearedGain(const CSCDetId & detId, int channel) const;
00032
00034 virtual float pedestal(const CSCDetId & detId, int channel) const = 0;
00035 virtual float pedestalSigma(const CSCDetId & detId, int channel) const = 0;
00036
00038 float analogNoise(const CSCDetId & detId, int channel) const;
00039
00040 virtual void crosstalk(const CSCDetId&detId, int channel,
00041 double stripLength, bool leftRight,
00042 float & capacitive, float & resistive) const = 0;
00043
00045 virtual bool isInBadChamber( const CSCDetId& id ) const { return false; }
00046
00047 protected:
00048 virtual void fetchNoisifier(const CSCDetId & detId, int istrip) = 0;
00049
00050 CSCCorrelatedNoisifier * theNoisifier;
00051 CLHEP::RandGaussQ * theRandGaussQ;
00052 };
00053
00054 #endif
00055