File indexing completed on 2024-04-06 12:07:19
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 namespace ecaldqm {
0020
0021 class TrigPrimTask : public DQWorkerTask {
0022 public:
0023 TrigPrimTask();
0024 ~TrigPrimTask() override {}
0025
0026 void addDependencies(DependencySet&) override;
0027
0028 void beginRun(edm::Run const&, edm::EventSetup const&) override;
0029 void beginEvent(edm::Event const&, edm::EventSetup const&, bool const&, bool&) override;
0030
0031 bool analyze(void const*, Collections) override;
0032
0033 void runOnRealTPs(EcalTrigPrimDigiCollection const&);
0034 void runOnEmulTPs(EcalTrigPrimDigiCollection const&);
0035 template <typename DigiCollection>
0036 void runOnDigis(DigiCollection const&);
0037
0038 void setTokens(edm::ConsumesCollector&) override;
0039
0040 enum Constants { nBXBins = 15 };
0041
0042 private:
0043 void setParams(edm::ParameterSet const&) override;
0044
0045 EcalTrigPrimDigiCollection const* realTps_;
0046
0047 bool runOnEmul_;
0048
0049
0050
0051
0052
0053
0054 std::vector<int> bxBinEdges_;
0055 std::vector<int> bxBinEdgesFine_;
0056 double bxBin_;
0057 double bxBinFine_;
0058
0059 std::map<uint32_t, unsigned> towerReadouts_;
0060
0061 edm::ESGetToken<EcalTPGTowerStatus, EcalTPGTowerStatusRcd> TTStatusRcd_;
0062 edm::ESGetToken<EcalTPGStripStatus, EcalTPGStripStatusRcd> StripStatusRcd_;
0063 const EcalTPGTowerStatus* TTStatus;
0064 const EcalTPGStripStatus* StripStatus;
0065
0066 edm::InputTag lhcStatusInfoCollectionTag_;
0067 edm::EDGetTokenT<TCDSRecord> lhcStatusInfoRecordToken_;
0068 };
0069
0070 inline bool TrigPrimTask::analyze(void const* _p, Collections _collection) {
0071 switch (_collection) {
0072 case kTrigPrimDigi:
0073 if (_p)
0074 runOnRealTPs(*static_cast<EcalTrigPrimDigiCollection const*>(_p));
0075 return true;
0076 break;
0077 case kTrigPrimEmulDigi:
0078 if (_p && runOnEmul_)
0079 runOnEmulTPs(*static_cast<EcalTrigPrimDigiCollection const*>(_p));
0080 return runOnEmul_;
0081 break;
0082 case kEBDigi:
0083 if (_p)
0084 runOnDigis(*static_cast<EBDigiCollection const*>(_p));
0085 return true;
0086 break;
0087 case kEEDigi:
0088 if (_p)
0089 runOnDigis(*static_cast<EEDigiCollection const*>(_p));
0090 return true;
0091 break;
0092 default:
0093 break;
0094 }
0095 return false;
0096 }
0097
0098 }
0099
0100 #endif