CMS 3D CMS Logo

OccupancyTask.cc
Go to the documentation of this file.
9 
10 namespace ecaldqm {
11  OccupancyTask::OccupancyTask() : DQWorkerTask(), recHitThreshold_(0.), tpThreshold_(0.), m_iTime(0.) {}
12 
14  recHitThreshold_ = _params.getUntrackedParameter<double>("recHitThreshold");
15  tpThreshold_ = _params.getUntrackedParameter<double>("tpThreshold");
16  lumiTag = _params.getParameter<edm::InputTag>("scalers");
17  lumiCheck_ = _params.getUntrackedParameter<bool>("lumiCheck", false);
18  if (!onlineMode_) {
19  MEs_.erase(std::string("PU"));
20  MEs_.erase(std::string("NEvents"));
21  MEs_.erase(std::string("TrendEventsperLumi"));
22  MEs_.erase(std::string("TrendPUperLumi"));
23  MEs_.erase(std::string("AELoss"));
24  }
25  }
26 
28  lasertoken_ = _collector.esConsumes();
30  }
31 
32  bool OccupancyTask::filterRunType(short const* _runType) {
33  for (int iFED(0); iFED < 54; iFED++) {
34  if (_runType[iFED] == EcalDCCHeaderBlock::COSMIC || _runType[iFED] == EcalDCCHeaderBlock::MTCC ||
35  _runType[iFED] == EcalDCCHeaderBlock::COSMICS_GLOBAL ||
36  _runType[iFED] == EcalDCCHeaderBlock::PHYSICS_GLOBAL || _runType[iFED] == EcalDCCHeaderBlock::COSMICS_LOCAL ||
37  _runType[iFED] == EcalDCCHeaderBlock::PHYSICS_LOCAL)
38  return true;
39  }
40 
41  return false;
42  }
43 
44  void OccupancyTask::beginRun(edm::Run const&, edm::EventSetup const& _es) { FillLaser = true; }
46  edm::EventSetup const& _es,
47  bool const& ByLumiResetSwitch,
48  bool&) {
49  if (ByLumiResetSwitch) {
50  MEs_.at("DigiAllByLumi").reset(GetElectronicsMap());
51  MEs_.at("TPDigiThrAllByLumi").reset(GetElectronicsMap());
52  MEs_.at("RecHitThrAllByLumi").reset(GetElectronicsMap());
53  nEv = 0;
54  if (onlineMode_) {
55  MEs_.at("PU").reset(GetElectronicsMap(), -1);
56  MEs_.at("NEvents").reset(GetElectronicsMap(), -1);
57  FindPUinLS = true;
58  }
59  }
60  nEv++;
61  MESet& meLaserCorrProjEta(MEs_.at("LaserCorrProjEta"));
62  m_iTime = _evt.time().value();
63  if (FillLaser) {
64  float lasercalib = 1.;
65  auto const& laser = &_es.getData(lasertoken_);
66  const edm::Timestamp& evtTimeStamp = edm::Timestamp(m_iTime);
67 
68  for (int i = 0; i < EBDetId::kSizeForDenseIndexing; i++) {
70  continue;
72  lasercalib = laser->getLaserCorrection(ebid, evtTimeStamp);
73  meLaserCorrProjEta.fill(getEcalDQMSetupObjects(), ebid, lasercalib);
74  }
75 
76  for (int i = 0; i < EEDetId::kSizeForDenseIndexing; i++) {
78  continue;
80  lasercalib = laser->getLaserCorrection(eeid, evtTimeStamp);
81  meLaserCorrProjEta.fill(getEcalDQMSetupObjects(), eeid, lasercalib);
82  }
83  FillLaser = false;
84  }
85  if (lumiCheck_ && FindPUinLS) {
86  scal_pu = -1.;
87  MESet& mePU(static_cast<MESet&>(MEs_.at("PU")));
90  if (lumiScalers.isValid() and not lumiScalers->empty()) {
91  auto scalit = lumiScalers->begin();
92  scal_pu = scalit->pileup();
93  }
94  mePU.fill(getEcalDQMSetupObjects(), double(scal_pu));
95  FindPUinLS = false;
96  }
97  }
98 
100  MESet& meDCC(MEs_.at("DCC"));
101 
102  for (EcalRawDataCollection::const_iterator dcchItr(_dcchs.begin()); dcchItr != _dcchs.end(); ++dcchItr)
103  meDCC.fill(getEcalDQMSetupObjects(), dcchItr->id());
104  }
105 
107  if (onlineMode_) {
108  MESet& meNEvents(static_cast<MESet&>(MEs_.at("NEvents")));
109  MESet& meTrendEventsperLumi(MEs_.at("TrendEventsperLumi"));
110  MESet& meTrendPUperLumi(MEs_.at("TrendPUperLumi"));
111 
112  meNEvents.fill(getEcalDQMSetupObjects(), double(nEv));
113  meTrendEventsperLumi.fill(getEcalDQMSetupObjects(), EcalBarrel, double(timestamp_.iLumi), double(nEv));
114  meTrendPUperLumi.fill(getEcalDQMSetupObjects(), EcalBarrel, double(timestamp_.iLumi), double(scal_pu));
115  }
116  }
117 
118  template <typename DigiCollection>
119  void OccupancyTask::runOnDigis(DigiCollection const& _digis, Collections _collection) {
120  MESet& meDigi(MEs_.at("Digi"));
121  MESet& meDigiProjEta(MEs_.at("DigiProjEta"));
122  MESet& meDigiProjPhi(MEs_.at("DigiProjPhi"));
123  MESet& meDigiAll(MEs_.at("DigiAll"));
124  MESet& meDigiAllByLumi(MEs_.at("DigiAllByLumi"));
125  MESet& meDigiDCC(MEs_.at("DigiDCC"));
126  MESet& meDigi1D(MEs_.at("Digi1D"));
127  MESet& meTrendNDigi(MEs_.at("TrendNDigi"));
128  MESet* meAELoss = nullptr;
129  if (onlineMode_)
130  meAELoss = &MEs_.at("AELoss");
131 
132  std::for_each(_digis.begin(), _digis.end(), [&](typename DigiCollection::Digi const& digi) {
133  DetId id(digi.id());
134  meDigi.fill(getEcalDQMSetupObjects(), id);
135  meDigiProjEta.fill(getEcalDQMSetupObjects(), id);
136  meDigiProjPhi.fill(getEcalDQMSetupObjects(), id);
137  meDigiAll.fill(getEcalDQMSetupObjects(), id);
138  meDigiAllByLumi.fill(getEcalDQMSetupObjects(), id);
139  meDigiDCC.fill(getEcalDQMSetupObjects(), id);
140  if (onlineMode_)
141  meAELoss->fill(getEcalDQMSetupObjects(), id);
142  });
143 
144  int iSubdet(_collection == kEBDigi ? EcalBarrel : EcalEndcap);
145  meDigi1D.fill(getEcalDQMSetupObjects(), iSubdet, double(_digis.size()));
146  meTrendNDigi.fill(getEcalDQMSetupObjects(), iSubdet, double(timestamp_.iLumi), double(_digis.size()));
147  }
148 
150  // MESet& meTPDigiAll(MEs_.at("TPDigiAll"));
151  // MESet& meTPDigiProjEta(MEs_.at("TPDigiProjEta"));
152  // MESet& meTPDigiProjPhi(MEs_.at("TPDigiProjPhi"));
153  MESet& meTPDigiRCT(MEs_.at("TPDigiRCT"));
154  MESet& meTPDigiThrAll(MEs_.at("TPDigiThrAll"));
155  MESet& meTPDigiThrAllByLumi(MEs_.at("TPDigiThrAllByLumi"));
156  MESet& meTPDigiThrProjEta(MEs_.at("TPDigiThrProjEta"));
157  MESet& meTPDigiThrProjPhi(MEs_.at("TPDigiThrProjPhi"));
158  MESet& meTrendNTPDigi(MEs_.at("TrendNTPDigi"));
159 
160  double nFilteredEB(0.);
161  double nFilteredEE(0.);
162 
163  std::for_each(_digis.begin(), _digis.end(), [&](EcalTrigPrimDigiCollection::value_type const& digi) {
164  EcalTrigTowerDetId const& id(digi.id());
165  // meTPDigiProjEta.fill(id);
166  // meTPDigiProjPhi.fill(id);
167  // meTPDigiAll.fill(id);
168  if (digi.compressedEt() > tpThreshold_) {
169  meTPDigiThrProjEta.fill(getEcalDQMSetupObjects(), id);
170  meTPDigiThrProjPhi.fill(getEcalDQMSetupObjects(), id);
171  meTPDigiThrAll.fill(getEcalDQMSetupObjects(), id);
172  meTPDigiThrAllByLumi.fill(getEcalDQMSetupObjects(), id);
173  meTPDigiRCT.fill(getEcalDQMSetupObjects(), id);
174  if (id.subDet() == EcalBarrel)
175  nFilteredEB += 1.;
176  else
177  nFilteredEE += 1.;
178  }
179  });
180 
181  meTrendNTPDigi.fill(getEcalDQMSetupObjects(), EcalBarrel, double(timestamp_.iLumi), nFilteredEB);
182  meTrendNTPDigi.fill(getEcalDQMSetupObjects(), EcalEndcap, double(timestamp_.iLumi), nFilteredEE);
183  }
184 
186  MESet& meRecHitAll(MEs_.at("RecHitAll"));
187  MESet& meRecHitProjEta(MEs_.at("RecHitProjEta"));
188  MESet& meRecHitProjPhi(MEs_.at("RecHitProjPhi"));
189  MESet& meRecHitThrAll(MEs_.at("RecHitThrAll"));
190  MESet& meRecHitThrAllByLumi(MEs_.at("RecHitThrAllByLumi"));
191  MESet& meRecHitThrmvp(MEs_.at("RecHitThrmvp"));
192  MESet& meRecHitThrpm(MEs_.at("RecHitThrpm"));
193  MESet& meRecHitThrProjEta(MEs_.at("RecHitThrProjEta"));
194  MESet& meRecHitThrProjPhi(MEs_.at("RecHitThrProjPhi"));
195  MESet& meRecHitThr1D(MEs_.at("RecHitThr1D"));
196  MESet& meTrendNRecHitThr(MEs_.at("TrendNRecHitThr"));
197 
198  uint32_t mask(~(0x1 << EcalRecHit::kGood));
199  double nFiltered(0.);
200 
201  float nRHThrp(0), nRHThrm(0);
202  int iSubdet(_collection == kEBRecHit ? EcalBarrel : EcalEndcap);
203  std::for_each(_hits.begin(), _hits.end(), [&](EcalRecHitCollection::value_type const& hit) {
204  DetId id(hit.id());
205 
206  meRecHitAll.fill(getEcalDQMSetupObjects(), id);
207  meRecHitProjEta.fill(getEcalDQMSetupObjects(), id);
208  meRecHitProjPhi.fill(getEcalDQMSetupObjects(), id);
209 
210  if (!hit.checkFlagMask(mask) && hit.energy() > recHitThreshold_) {
211  meRecHitThrProjEta.fill(getEcalDQMSetupObjects(), id);
212  meRecHitThrProjPhi.fill(getEcalDQMSetupObjects(), id);
213  meRecHitThrAll.fill(getEcalDQMSetupObjects(), id);
214  meRecHitThrAllByLumi.fill(getEcalDQMSetupObjects(), id);
215  nFiltered += 1.;
216  bool isPlusFar(iSubdet == EcalBarrel ? (EBDetId(id).iphi() > 100 && EBDetId(id).iphi() < 280) : zside(id) > 0);
217  if (isPlusFar)
218  nRHThrp++;
219  else
220  nRHThrm++;
221  }
222  });
223 
224  meRecHitThr1D.fill(getEcalDQMSetupObjects(), iSubdet, nFiltered);
225  meTrendNRecHitThr.fill(getEcalDQMSetupObjects(), iSubdet, double(timestamp_.iLumi), nFiltered);
226  meRecHitThrmvp.fill(getEcalDQMSetupObjects(), iSubdet, nRHThrp, nRHThrm);
227  meRecHitThrpm.fill(getEcalDQMSetupObjects(), iSubdet, nRHThrp - nRHThrm);
228  }
229 
231 } // namespace ecaldqm
ecaldqm::OccupancyTask::nEv
int nEv
Definition: OccupancyTask.h:47
EcalDCCHeaderBlock::COSMICS_LOCAL
Definition: EcalDCCHeaderBlock.h:49
LumiScalers.h
EcalRecHit
Definition: EcalRecHit.h:15
mps_fire.i
i
Definition: mps_fire.py:428
edm::SortedCollection::const_iterator
std::vector< T >::const_iterator const_iterator
Definition: SortedCollection.h:80
ecaldqm
Definition: DQWorker.h:37
hit::id
unsigned int id
Definition: SiStripHitEffFromCalibTree.cc:92
ecaldqm::OccupancyTask::lumiScalersToken_
edm::EDGetTokenT< LumiScalersCollection > lumiScalersToken_
Definition: OccupancyTask.h:44
edm::LuminosityBlock
Definition: LuminosityBlock.h:50
ecaldqm::OccupancyTask::setTokens
void setTokens(edm::ConsumesCollector &) override
Definition: OccupancyTask.cc:27
edm::Run
Definition: Run.h:45
ecaldqm::zside
int zside(DetId const &)
Definition: EcalDQMCommonUtils.cc:189
ecaldqm::OccupancyTask::lumiCheck_
bool lumiCheck_
Definition: OccupancyTask.h:48
EBDetId
Definition: EBDetId.h:17
EEDetId::unhashIndex
static EEDetId unhashIndex(int hi)
Definition: EEDetId.cc:65
V0Monitor_cfi.lumiScalers
lumiScalers
Definition: V0Monitor_cfi.py:9
ecaldqm::MESet::fill
virtual void fill(EcalDQMSetupObjects const, DetId const &, double=1., double=1., double=1.)
Definition: MESet.h:74
EBDetId::unhashIndex
static EBDetId unhashIndex(int hi)
get a DetId from a compact index for arrays
Definition: EBDetId.h:110
l1extraParticles_cfi._params
_params
Definition: l1extraParticles_cfi.py:29
TrendClient_cfi.Digi
Digi
Definition: TrendClient_cfi.py:7
edm::SortedCollection
Definition: SortedCollection.h:49
ecaldqm::OccupancyTask::scal_pu
double scal_pu
Definition: OccupancyTask.h:45
edm::Timestamp::value
TimeValue_t value() const
Definition: Timestamp.h:45
EcalTrigTowerDetId
Definition: EcalTrigTowerDetId.h:14
edm::EventBase::time
edm::Timestamp time() const
Definition: EventBase.h:60
edm::ConsumesCollector::esConsumes
auto esConsumes()
Definition: ConsumesCollector.h:97
edm::Handle
Definition: AssociativeIterator.h:50
ecaldqm::DQWorker::GetElectronicsMap
const EcalElectronicsMapping * GetElectronicsMap()
Definition: DQWorker.cc:118
EcalBarrel
Definition: EcalSubdetector.h:10
LEDCalibrationChannels.iphi
iphi
Definition: LEDCalibrationChannels.py:64
DetId
Definition: DetId.h:17
EcalDCCHeaderBlock::PHYSICS_GLOBAL
Definition: EcalDCCHeaderBlock.h:37
testProducerWithPsetDescEmpty_cfi.x1
x1
Definition: testProducerWithPsetDescEmpty_cfi.py:33
EEDetId::validDenseIndex
static bool validDenseIndex(uint32_t din)
Definition: EEDetId.h:213
ecaldqm::OccupancyTask::beginRun
void beginRun(edm::Run const &, edm::EventSetup const &) override
Definition: OccupancyTask.cc:44
ecaldqm::DQWorkerTask
Definition: DQWorkerTask.h:71
ecaldqm::MESet::reset
virtual void reset(EcalElectronicsMapping const *, double=0., double=0., double=0.)
Definition: MESet.cc:98
edm::SortedCollection::begin
const_iterator begin() const
Definition: SortedCollection.h:262
ecaldqm::OccupancyTask::runOnDigis
void runOnDigis(DigiCollection const &, Collections)
Definition: OccupancyTask.cc:119
EEDetId::kSizeForDenseIndexing
Definition: EEDetId.h:329
ecaldqm::kEBRecHit
Definition: Collections.h:36
edm::ConsumesCollector::consumes
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
Definition: ConsumesCollector.h:55
ecaldqm::OccupancyTask::FindPUinLS
bool FindPUinLS
Definition: OccupancyTask.h:46
edm::Event::getByToken
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:539
EcalRecHit::kGood
Definition: EcalRecHit.h:21
ecaldqm::OccupancyTask::recHitThreshold_
float recHitThreshold_
Definition: OccupancyTask.h:40
ecaldqm::OccupancyTask
Definition: OccupancyTask.h:17
ecaldqm::DQWorker::MEs_
MESetCollection MEs_
Definition: DQWorker.h:125
OccupancyTask.h
EEDetId
Definition: EEDetId.h:14
EcalEndcap
Definition: EcalSubdetector.h:10
ecaldqm::OccupancyTask::lasertoken_
edm::ESGetToken< EcalLaserDbService, EcalLaserDbRecord > lasertoken_
Definition: OccupancyTask.h:38
ecaldqm::DQWorker::onlineMode_
bool onlineMode_
Definition: DQWorker.h:132
ecaldqm::OccupancyTask::tpThreshold_
float tpThreshold_
Definition: OccupancyTask.h:41
ecaldqm::OccupancyTask::setParams
void setParams(edm::ParameterSet const &) override
Definition: OccupancyTask.cc:13
edm::ParameterSet
Definition: ParameterSet.h:47
Event.h
ecaldqm::OccupancyTask::runOnRawData
void runOnRawData(EcalRawDataCollection const &)
Definition: OccupancyTask.cc:99
edm::SortedCollection::end
const_iterator end() const
Definition: SortedCollection.h:267
EcalDCCHeaderBlock::PHYSICS_LOCAL
Definition: EcalDCCHeaderBlock.h:48
LumiScalersCollection
std::vector< LumiScalers > LumiScalersCollection
Definition: LumiScalers.h:144
ecaldqm::MESetCollection::at
MESet & at(const std::string &key)
Definition: MESet.h:399
EBDetId::validDenseIndex
static bool validDenseIndex(uint32_t din)
Definition: EBDetId.h:105
ecaldqm::MESetCollection::erase
void erase(const std::string &key)
Definition: MESet.h:390
ecaldqm::Collections
Collections
Definition: Collections.h:8
EcalDCCHeaderBlock.h
edm::EventSetup
Definition: EventSetup.h:58
AlCaHLTBitMon_QueryRunRegistry.string
string string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
ecaldqm::OccupancyTask::runOnTPDigis
void runOnTPDigis(EcalTrigPrimDigiCollection const &)
Definition: OccupancyTask.cc:149
edm::EventSetup::getData
bool getData(T &iHolder) const
Definition: EventSetup.h:127
ecaldqm::OccupancyTask::OccupancyTask
OccupancyTask()
Definition: OccupancyTask.cc:11
ecaldqm::DQWorker::Timestamp::iLumi
edm::LuminosityBlockNumber_t iLumi
Definition: DQWorker.h:48
ecaldqm::DQWorker::getEcalDQMSetupObjects
const EcalDQMSetupObjects getEcalDQMSetupObjects()
Definition: DQWorker.cc:142
EcalDCCHeaderBlock::COSMICS_GLOBAL
Definition: EcalDCCHeaderBlock.h:38
siStripShotFilter_cfi.DigiCollection
DigiCollection
Definition: siStripShotFilter_cfi.py:6
ecaldqm::kEBDigi
Definition: Collections.h:25
edm::SortedCollection::value_type
T value_type
Definition: SortedCollection.h:77
triggerObjects_cff.id
id
Definition: triggerObjects_cff.py:29
EBDetId::kSizeForDenseIndexing
Definition: EBDetId.h:155
EcalDCCHeaderBlock::MTCC
Definition: EcalDCCHeaderBlock.h:25
ecaldqm::OccupancyTask::filterRunType
bool filterRunType(short const *) override
Definition: OccupancyTask.cc:32
ecaldqm::DQWorker::timestamp_
Timestamp timestamp_
Definition: DQWorker.h:128
EcalDCCHeaderBlock::COSMIC
Definition: EcalDCCHeaderBlock.h:22
ecaldqm::OccupancyTask::lumiTag
edm::InputTag lumiTag
Definition: OccupancyTask.h:43
DEFINE_ECALDQM_WORKER
#define DEFINE_ECALDQM_WORKER(TYPE)
Definition: DQWorker.h:162
ConsumesCollector.h
ParameterSet.h
ecaldqm::OccupancyTask::FillLaser
bool FillLaser
Definition: OccupancyTask.h:39
ecaldqm::OccupancyTask::m_iTime
edm::TimeValue_t m_iTime
Definition: OccupancyTask.h:42
edm::Event
Definition: Event.h:73
ecaldqm::OccupancyTask::runOnRecHits
void runOnRecHits(EcalRecHitCollection const &, Collections)
Definition: OccupancyTask.cc:185
edm::InputTag
Definition: InputTag.h:15
edm::ConsumesCollector
Definition: ConsumesCollector.h:45
EcalCondDBWriter_cfi.laser
laser
Definition: EcalCondDBWriter_cfi.py:46
ecaldqm::OccupancyTask::endLuminosityBlock
void endLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &) override
Definition: OccupancyTask.cc:106
hit
Definition: SiStripHitEffFromCalibTree.cc:88
EcalDQMCommonUtils.h
ecaldqm::OccupancyTask::beginEvent
void beginEvent(edm::Event const &, edm::EventSetup const &, bool const &, bool &) override
Definition: OccupancyTask.cc:45
ecaldqm::MESet
Definition: MESet.h:42
edm::Timestamp
Definition: Timestamp.h:30