Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2023-03-17 10:56:29

0001 #ifndef DQM_SiStripCommissioningSources_SiStripCommissioningSource_H
0002 #define DQM_SiStripCommissioningSources_SiStripCommissioningSource_H
0003 
0004 #include "FWCore/Utilities/interface/EDGetToken.h"
0005 #include "CalibFormats/SiStripObjects/interface/SiStripFecCabling.h"
0006 #include "CondFormats/SiStripObjects/interface/SiStripFedCabling.h"
0007 #include "CondFormats/DataRecord/interface/SiStripFedCablingRcd.h"
0008 #include "DataFormats/Common/interface/DetSetVector.h"
0009 #include "DataFormats/Common/interface/DetSetVectorNew.h"
0010 #include "DataFormats/SiStripCommon/interface/SiStripConstants.h"
0011 #include "DataFormats/SiStripCommon/interface/SiStripHistoTitle.h"
0012 #include "DataFormats/SiStripDigi/interface/SiStripDigi.h"
0013 #include "DataFormats/SiStripDigi/interface/SiStripRawDigi.h"
0014 #include "DataFormats/SiStripCluster/interface/SiStripCluster.h"
0015 #include "FWCore/Framework/interface/one/EDAnalyzer.h"
0016 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0017 #include "DQMServices/Core/interface/DQMStore.h"
0018 #include "CondFormats/DataRecord/interface/SiStripNoisesRcd.h"
0019 #include "CondFormats/DataRecord/interface/SiStripPedestalsRcd.h"
0020 #include "CondFormats/SiStripObjects/interface/SiStripNoises.h"
0021 #include "CondFormats/SiStripObjects/interface/SiStripPedestals.h"
0022 #include <string>
0023 #include <vector>
0024 #include <map>
0025 #include <cstdint>
0026 
0027 class CommissioningTask;
0028 class FedChannelConnection;
0029 class SiStripEventSummary;
0030 
0031 /**
0032    @class SiStripCommissioningSource
0033 */
0034 class SiStripCommissioningSource : public edm::one::EDAnalyzer<edm::one::SharedResources, edm::one::WatchRuns> {
0035 public:  // ---------- Public interface ----------
0036   /** Map of task objects, identified through FedChanelId */
0037   typedef std::map<unsigned int, CommissioningTask*> TaskMap;
0038   typedef std::vector<CommissioningTask*> VecOfTasks;
0039   typedef std::vector<VecOfTasks> VecOfVecOfTasks;
0040   typedef dqm::legacy::DQMStore DQMStore;
0041   typedef dqm::legacy::MonitorElement MonitorElement;
0042 
0043   SiStripCommissioningSource(const edm::ParameterSet&);
0044 
0045   /** Private default constructor. */
0046   SiStripCommissioningSource() = delete;
0047 
0048   ~SiStripCommissioningSource() override;
0049 
0050   void beginRun(edm::Run const&, const edm::EventSetup&) override;
0051   void endRun(edm::Run const&, const edm::EventSetup&) override {}
0052   void analyze(const edm::Event&, const edm::EventSetup&) override;
0053   void endJob() override;
0054 
0055 private:  // ---------- Private methods ----------
0056   /** */
0057   DQMStore* const dqm(std::string method = "") const;
0058 
0059   /** */
0060   void createRunNumber();
0061 
0062   /** */
0063   void createTask(const SiStripEventSummary* const, const edm::EventSetup&);
0064 
0065   /** */
0066   void createCablingTasks();
0067 
0068   /** */
0069   void createTasks(sistrip::RunType, const edm::EventSetup&);
0070 
0071   /** */
0072   void clearCablingTasks();
0073 
0074   /** */
0075   void clearTasks();
0076 
0077   /** */
0078   void fillCablingHistos(const SiStripEventSummary* const, const edm::DetSetVector<SiStripRawDigi>&);
0079 
0080   /** */
0081   void fillHistos(const SiStripEventSummary* const,
0082                   const edm::DetSetVector<SiStripRawDigi>&,
0083                   const edm::DetSetVector<SiStripRawDigi>& = edm::DetSetVector<SiStripRawDigi>(),
0084                   const edmNew::DetSetVector<SiStripCluster>& = edmNew::DetSetVector<SiStripCluster>());
0085 
0086   /** */
0087   void remove();
0088 
0089   /** */
0090   void directory(std::stringstream&, uint32_t run_number = 0);
0091 
0092   /** */
0093   //void cablingForConnectionRun( const sistrip::RunType& ); //@@ do not use!
0094 
0095   // ---------- DQM fwk and cabling ----------
0096 
0097   /** Interface to Data Quality Monitoring framework. */
0098   DQMStore* dqm_;
0099 
0100   /** */
0101   edm::ESGetToken<SiStripFedCabling, SiStripFedCablingRcd> fedCablingToken_;
0102   SiStripFedCabling* fedCabling_;
0103 
0104   /** */
0105   SiStripFecCabling* fecCabling_;
0106 
0107   // ---------- Input / output ----------
0108   edm::EDGetTokenT<SiStripEventSummary> inputModuleSummaryToken_;
0109   edm::EDGetTokenT<edm::DetSetVector<SiStripRawDigi> > digiVirginRawToken_;
0110   edm::EDGetTokenT<edm::DetSetVector<SiStripRawDigi> > digiReorderedToken_;
0111   edm::EDGetTokenT<edm::DetSetVector<SiStripRawDigi> > digiScopeModeToken_;
0112   edm::EDGetTokenT<edm::DetSetVector<SiStripRawDigi> > digiFineDelaySelectionToken_;
0113   edm::EDGetTokenT<edmNew::DetSetVector<SiStripCluster> > clustersToken_;
0114 
0115   /** Name of digi input module. */
0116   std::string inputModuleLabel_;
0117   std::string inputModuleLabelAlt_;
0118   std::string inputModuleLabelSummary_;
0119   std::string inputClusterLabel_;
0120 
0121   /** Filename of output root file containing source histos. */
0122   std::string filename_;
0123 
0124   /** Run number used for naming of root file. */
0125   uint32_t run_;
0126 
0127   /** Partition name used for root files in spy */
0128   std::string partitionName_;
0129 
0130   /** Record of time used to calculate event rate. */
0131   int32_t time_;
0132 
0133   /** Is this a spy run ? */
0134   bool isSpy_;
0135 
0136   // ---------- Histogram-related ----------
0137 
0138   /** Identifies commissioning task read from cfg file. */
0139   std::string taskConfigurable_;
0140 
0141   /** Identifies commissioning task. */
0142   sistrip::RunType task_;
0143 
0144   /** Vector of vector of task objects (indexed using FED id.ch. */
0145   VecOfVecOfTasks tasks_;
0146 
0147   /** Map of cabling task objects (indexed using FEC key). */
0148   TaskMap cablingTasks_;
0149 
0150   /** Flag to indicate whether histo objects exist or not. */
0151   bool tasksExist_;
0152 
0153   /** Flag to indicate whether task is FED cabling or not. */
0154   bool cablingTask_;
0155 
0156   /** Update frequency for histograms (ignored for cabling). */
0157   int updateFreq_;
0158 
0159   /** */
0160   std::string base_;
0161 
0162   /** flag for choosing the organizational 'view' the DQM histogram tree */
0163   std::string view_;
0164 
0165   /** parameters to pass to the tasks */
0166   edm::ParameterSet parameters_;
0167 
0168   edm::ESGetToken<SiStripPedestals, SiStripPedestalsRcd> pedestalToken_;
0169   edm::ESGetToken<SiStripNoises, SiStripNoisesRcd> noiseToken_;
0170 };
0171 
0172 #endif  // DQM_SiStripCommissioningSources_SiStripCommissioningSource_H