CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_7/src/DQM/EcalBarrelMonitorTasks/src/PNPresampleTask.cc

Go to the documentation of this file.
00001 #include "../interface/PNPresampleTask.h"
00002 
00003 #include "DataFormats/EcalRawData/interface/EcalDCCHeaderBlock.h"
00004 
00005 namespace ecaldqm {
00006 
00007   PNPresampleTask::PNPresampleTask(const edm::ParameterSet &_params, const edm::ParameterSet& _paths) :
00008     DQWorkerTask(_params, _paths, "PNPresampleTask")
00009   {
00010     collectionMask_ =
00011       (0x1 << kPnDiodeDigi);
00012   }
00013 
00014   PNPresampleTask::~PNPresampleTask()
00015   {
00016   }
00017 
00018   void
00019   PNPresampleTask::beginRun(const edm::Run&, const edm::EventSetup&)
00020   {
00021     for(int idcc(0); idcc < 54; idcc++)
00022       enable_[idcc] = false;
00023   }
00024 
00025   void
00026   PNPresampleTask::endEvent(const edm::Event&, const edm::EventSetup&)
00027   {
00028     for(int idcc(0); idcc < 54; idcc++)
00029       enable_[idcc] = false;
00030   }
00031 
00032   bool
00033   PNPresampleTask::filterRunType(const std::vector<short>& _runType)
00034   {
00035     bool enable(false);
00036 
00037     for(int iDCC(0); iDCC < 54; iDCC++){
00038       if(_runType[iDCC] == EcalDCCHeaderBlock::LASER_STD ||
00039          _runType[iDCC] == EcalDCCHeaderBlock::LASER_GAP ||
00040          _runType[iDCC] == EcalDCCHeaderBlock::TESTPULSE_MGPA ||
00041          _runType[iDCC] == EcalDCCHeaderBlock::TESTPULSE_GAP){
00042         enable = true;
00043         enable_[iDCC] = true;
00044       }
00045     }
00046 
00047     return enable;
00048   }
00049 
00050   void
00051   PNPresampleTask::runOnPnDigis(const EcalPnDiodeDigiCollection &_digis)
00052   {
00053     for(EcalPnDiodeDigiCollection::const_iterator digiItr(_digis.begin()); digiItr != _digis.end(); ++digiItr){
00054       const EcalPnDiodeDetId& id(digiItr->id());
00055 
00056       float mean(0.);
00057       bool gainSwitch(false);
00058 
00059       for(int iSample(0); iSample < 4; iSample++){
00060         if(digiItr->sample(iSample).gainId() != 1){
00061           gainSwitch = true;
00062           break;
00063         }
00064         mean += digiItr->sample(iSample).adc();
00065       }
00066       if(gainSwitch) continue;
00067 
00068       mean /= 4.;
00069 
00070       MEs_[kPedestal]->fill(id, mean);
00071     }
00072   }
00073 
00074   /*static*/
00075   void
00076   PNPresampleTask::setMEData(std::vector<MEData>& _data)
00077   {
00078     _data[kPedestal] = MEData("Pedestal", BinService::kSMMEM, BinService::kCrystal, MonitorElement::DQM_KIND_TPROFILE2D);
00079   }
00080 
00081   DEFINE_ECALDQM_WORKER(PNPresampleTask);
00082 }