Back to home page

Project CMSSW displayed by LXR

 
 

    


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     /*     std::string HLTCaloPath_; */
0056     /*     std::string HLTMuonPath_; */
0057     /*     bool HLTCaloBit_; */
0058     /*     bool HLTMuonBit_; */
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 }  // namespace ecaldqm
0119 
0120 #endif