Back to home page

Project CMSSW displayed by LXR

 
 

    


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     /*     std::string HLTCaloPath_; */
0050     /*     std::string HLTMuonPath_; */
0051     /*     bool HLTCaloBit_; */
0052     /*     bool HLTMuonBit_; */
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 }  // namespace ecaldqm
0099 
0100 #endif