File indexing completed on 2025-06-12 23:29:45
0001 #ifndef TrigPrimTask_H
0002 #define TrigPrimTask_H
0003
0004 #include "DQWorkerTask.h"
0005
0006 #include "DataFormats/EcalDigi/interface/EcalDigiCollections.h"
0007 #include "DataFormats/TCDS/interface/TCDSRecord.h"
0008
0009 #include "FWCore/Framework/interface/ESHandle.h"
0010 #include "FWCore/Framework/interface/ConsumesCollector.h"
0011 #include "FWCore/Utilities/interface/InputTag.h"
0012 #include "FWCore/Utilities/interface/EDGetToken.h"
0013
0014 #include "CondFormats/EcalObjects/interface/EcalTPGTowerStatus.h"
0015 #include "CondFormats/EcalObjects/interface/EcalTPGStripStatus.h"
0016 #include "CondFormats/DataRecord/interface/EcalTPGTowerStatusRcd.h"
0017 #include "CondFormats/DataRecord/interface/EcalTPGStripStatusRcd.h"
0018
0019 #include "RecoLocalCalo/EcalRecAlgos/interface/EcalSeverityLevelAlgo.h"
0020 #include "RecoLocalCalo/EcalRecAlgos/interface/EcalSeverityLevelAlgoRcd.h"
0021
0022 namespace ecaldqm {
0023
0024 class TrigPrimTask : public DQWorkerTask {
0025 public:
0026 TrigPrimTask();
0027 ~TrigPrimTask() override {}
0028
0029 void addDependencies(DependencySet&) override;
0030
0031 void beginRun(edm::Run const&, edm::EventSetup const&) override;
0032 void beginEvent(edm::Event const&, edm::EventSetup const&, bool const&, bool&) override;
0033
0034 bool analyze(void const*, Collections) override;
0035
0036 void runOnRealTPs(EcalTrigPrimDigiCollection const&);
0037 void runOnEmulTPs(EcalTrigPrimDigiCollection const&);
0038 template <typename DigiCollection>
0039 void runOnDigis(DigiCollection const&);
0040 void runOnRecHits(EcalRecHitCollection const&, Collections);
0041
0042 void setTokens(edm::ConsumesCollector&) override;
0043
0044 enum Constants { nBXBins = 15 };
0045
0046 void endLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&) override;
0047
0048 private:
0049 void setParams(edm::ParameterSet const&) override;
0050
0051 EcalTrigPrimDigiCollection const* realTps_;
0052
0053 bool runOnEmul_;
0054
0055
0056
0057
0058
0059
0060 std::vector<int> bxBinEdges_;
0061 std::vector<int> bxBinEdgesFine_;
0062 double bxBin_;
0063 double bxBinFine_;
0064
0065 double etSum_;
0066 double etSpikeMatchSum_;
0067
0068 std::map<uint32_t, unsigned> towerReadouts_;
0069
0070 edm::ESGetToken<EcalTPGTowerStatus, EcalTPGTowerStatusRcd> TTStatusRcd_;
0071 edm::ESGetToken<EcalTPGStripStatus, EcalTPGStripStatusRcd> StripStatusRcd_;
0072 const EcalTPGTowerStatus* TTStatus;
0073 const EcalTPGStripStatus* StripStatus;
0074
0075 edm::InputTag lhcStatusInfoCollectionTag_;
0076 edm::EDGetTokenT<TCDSRecord> lhcStatusInfoRecordToken_;
0077
0078 std::map<EcalTrigTowerDetId, float> mapTowerMaxRecHitEnergy_;
0079 std::map<EcalTrigTowerDetId, int> mapTowerOfflineSpikes_;
0080 edm::ESGetToken<EcalSeverityLevelAlgo, EcalSeverityLevelAlgoRcd> severityToken_;
0081 const EcalSeverityLevelAlgo* sevLevel;
0082 };
0083
0084 inline bool TrigPrimTask::analyze(void const* _p, Collections _collection) {
0085 switch (_collection) {
0086 case kEBRecHit:
0087 case kEERecHit:
0088 if (_p)
0089 runOnRecHits(*static_cast<EcalRecHitCollection const*>(_p), _collection);
0090 return true;
0091 break;
0092 case kTrigPrimDigi:
0093 if (_p)
0094 runOnRealTPs(*static_cast<EcalTrigPrimDigiCollection const*>(_p));
0095 return true;
0096 break;
0097 case kTrigPrimEmulDigi:
0098 if (_p && runOnEmul_)
0099 runOnEmulTPs(*static_cast<EcalTrigPrimDigiCollection const*>(_p));
0100 return runOnEmul_;
0101 break;
0102 case kEBDigi:
0103 if (_p)
0104 runOnDigis(*static_cast<EBDigiCollection const*>(_p));
0105 return true;
0106 break;
0107 case kEEDigi:
0108 if (_p)
0109 runOnDigis(*static_cast<EEDigiCollection const*>(_p));
0110 return true;
0111 break;
0112 default:
0113 break;
0114 }
0115 return false;
0116 }
0117
0118 }
0119
0120 #endif