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 }