Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:08:22

0001 #ifndef SiPixelMonitorDigi_SiPixelDigiSource_h
0002 #define SiPixelMonitorDigi_SiPixelDigiSource_h
0003 // -*- C++ -*-
0004 //
0005 // Package:     SiPixelMonitorDigi
0006 // Class  :     SiPixelDigiSource
0007 //
0008 /**
0009 
0010  Description: <one line class summary>
0011 
0012  Usage:
0013     <usage>
0014 
0015 */
0016 //
0017 // Original Author:  Vincenzo Chiochia
0018 //         Created:
0019 //
0020 
0021 #include <memory>
0022 
0023 // user include files
0024 #include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h"
0025 #include "Geometry/Records/interface/TrackerDigiGeometryRecord.h"
0026 #include "Geometry/CommonTopologies/interface/PixelTopology.h"
0027 #include "Geometry/Records/interface/TrackerTopologyRcd.h"
0028 #include "DQM/SiPixelMonitorDigi/interface/SiPixelDigiModule.h"
0029 #include <DQMServices/Core/interface/DQMOneEDAnalyzer.h>
0030 #include <cstdint>
0031 
0032 class SiPixelDigiSource : public DQMOneEDAnalyzer<edm::LuminosityBlockCache<bool>> {
0033 public:
0034   explicit SiPixelDigiSource(const edm::ParameterSet& conf);
0035   ~SiPixelDigiSource() override;
0036 
0037   typedef edm::DetSet<PixelDigi>::const_iterator DigiIterator;
0038 
0039   void analyze(const edm::Event&, const edm::EventSetup&) override;
0040   void dqmBeginRun(const edm::Run&, edm::EventSetup const&) override;
0041   void bookHistograms(DQMStore::IBooker&, edm::Run const&, edm::EventSetup const&) override;
0042   std::shared_ptr<bool> globalBeginLuminosityBlock(const edm::LuminosityBlock& lumi,
0043                                                    const edm::EventSetup& iSetup) const override;
0044   void globalEndLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&) override;
0045 
0046   virtual void buildStructure(edm::EventSetup const&);
0047   virtual void bookMEs(DQMStore::IBooker&, const edm::EventSetup& iSetup);
0048 
0049   virtual void CountZeroROCsInSubstructure(bool, bool&, SiPixelDigiModule*);
0050 
0051   std::string topFolderName_;
0052 
0053 private:
0054   edm::ParameterSet conf_;
0055   edm::InputTag src_;
0056   bool saveFile;
0057   bool isPIB;
0058   bool slowDown;
0059   bool modOn;
0060   bool perLSsaving;  //to avoid nanoDQMIO crashing, driven by  DQMServices/Core/python/DQMStore_cfi.py
0061   bool twoDimOn;
0062   bool twoDimModOn;
0063   bool twoDimOnlyLayDisk;
0064   bool hiRes;
0065   bool reducedSet;
0066   //barrel:
0067   bool ladOn, layOn, phiOn;
0068   //forward:
0069   bool ringOn, bladeOn, diskOn;
0070   std::map<uint32_t, SiPixelDigiModule*> thePixelStructure;
0071 
0072   int nDP1P1M1;
0073   int nDP1P1M2;
0074   int nDP1P1M3;
0075   int nDP1P1M4;
0076   int nDP1P2M1;
0077   int nDP1P2M2;
0078   int nDP1P2M3;
0079   int nDP2P1M1;
0080   int nDP2P1M2;
0081   int nDP2P1M3;
0082   int nDP2P1M4;
0083   int nDP2P2M1;
0084   int nDP2P2M2;
0085   int nDP2P2M3;
0086   int nDP3P1M1;
0087   int nDP3P2M1;
0088   int nDM1P1M1;
0089   int nDM1P1M2;
0090   int nDM1P1M3;
0091   int nDM1P1M4;
0092   int nDM1P2M1;
0093   int nDM1P2M2;
0094   int nDM1P2M3;
0095   int nDM2P1M1;
0096   int nDM2P1M2;
0097   int nDM2P1M3;
0098   int nDM2P1M4;
0099   int nDM2P2M1;
0100   int nDM2P2M2;
0101   int nDM2P2M3;
0102   int nDM3P1M1;
0103   int nDM3P2M1;
0104   int nL1M1;
0105   int nL1M2;
0106   int nL1M3;
0107   int nL1M4;
0108   int nL2M1;
0109   int nL2M2;
0110   int nL2M3;
0111   int nL2M4;
0112   int nL3M1;
0113   int nL3M2;
0114   int nL3M3;
0115   int nL3M4;
0116   int nL4M1;
0117   int nL4M2;
0118   int nL4M3;
0119   int nL4M4;
0120   int nBigEvents;
0121   int nBPIXDigis;
0122   int nFPIXDigis;
0123   MonitorElement* bigEventRate;
0124   MonitorElement* pixEvtsPerBX;
0125   MonitorElement* pixEventRate;
0126   MonitorElement* noOccROCsBarrel;
0127   MonitorElement* loOccROCsBarrel;
0128   MonitorElement* noOccROCsEndcap;
0129   MonitorElement* loOccROCsEndcap;
0130   MonitorElement* averageDigiOccupancy;
0131   MonitorElement* avgBarrelFedOccvsLumi;
0132   MonitorElement* avgEndcapFedOccvsLumi;
0133   MonitorElement* avgfedDigiOccvsLumi;
0134   MonitorElement* meNDigisCOMBBarrel_;
0135   MonitorElement* meNDigisCOMBEndcap_;
0136   MonitorElement* meNDigisCHANBarrel_;
0137   std::vector<MonitorElement*> meNDigisCHANBarrelLs_;
0138   MonitorElement* meNDigisCHANBarrelCh1_;
0139   MonitorElement* meNDigisCHANBarrelCh2_;
0140   MonitorElement* meNDigisCHANBarrelCh3_;
0141   MonitorElement* meNDigisCHANBarrelCh4_;
0142   MonitorElement* meNDigisCHANBarrelCh5_;
0143   MonitorElement* meNDigisCHANBarrelCh6_;
0144   MonitorElement* meNDigisCHANBarrelCh7_;
0145   MonitorElement* meNDigisCHANBarrelCh8_;
0146   MonitorElement* meNDigisCHANBarrelCh9_;
0147   MonitorElement* meNDigisCHANBarrelCh10_;
0148   MonitorElement* meNDigisCHANBarrelCh11_;
0149   MonitorElement* meNDigisCHANBarrelCh12_;
0150   MonitorElement* meNDigisCHANBarrelCh13_;
0151   MonitorElement* meNDigisCHANBarrelCh14_;
0152   MonitorElement* meNDigisCHANBarrelCh15_;
0153   MonitorElement* meNDigisCHANBarrelCh16_;
0154   MonitorElement* meNDigisCHANBarrelCh17_;
0155   MonitorElement* meNDigisCHANBarrelCh18_;
0156   MonitorElement* meNDigisCHANBarrelCh19_;
0157   MonitorElement* meNDigisCHANBarrelCh20_;
0158   MonitorElement* meNDigisCHANBarrelCh21_;
0159   MonitorElement* meNDigisCHANBarrelCh22_;
0160   MonitorElement* meNDigisCHANBarrelCh23_;
0161   MonitorElement* meNDigisCHANBarrelCh24_;
0162   MonitorElement* meNDigisCHANBarrelCh25_;
0163   MonitorElement* meNDigisCHANBarrelCh26_;
0164   MonitorElement* meNDigisCHANBarrelCh27_;
0165   MonitorElement* meNDigisCHANBarrelCh28_;
0166   MonitorElement* meNDigisCHANBarrelCh29_;
0167   MonitorElement* meNDigisCHANBarrelCh30_;
0168   MonitorElement* meNDigisCHANBarrelCh31_;
0169   MonitorElement* meNDigisCHANBarrelCh32_;
0170   MonitorElement* meNDigisCHANBarrelCh33_;
0171   MonitorElement* meNDigisCHANBarrelCh34_;
0172   MonitorElement* meNDigisCHANBarrelCh35_;
0173   MonitorElement* meNDigisCHANBarrelCh36_;
0174   MonitorElement* meNDigisCHANEndcap_;
0175   std::vector<MonitorElement*> meNDigisCHANEndcapDps_;
0176   std::vector<MonitorElement*> meNDigisCHANEndcapDms_;
0177 
0178   int NzeroROCs[2];
0179   int NloEffROCs[2];
0180 
0181   bool ROCMapToReset;
0182   //the following long list of bools is to patch the ZeroOccupancy ROC filling in a way that a substructure (like BPix/BmO/Layer1) is counted only once as it should be (in the past for each module in the substructure the same number of ZeroOccupancy rocs was added)
0183 
0184   bool DoZeroRocsBMO1;
0185   bool DoZeroRocsBMO2;
0186   bool DoZeroRocsBMO3;
0187 
0188   bool DoZeroRocsBMI1;
0189   bool DoZeroRocsBMI2;
0190   bool DoZeroRocsBMI3;
0191 
0192   bool DoZeroRocsBPO1;
0193   bool DoZeroRocsBPO2;
0194   bool DoZeroRocsBPO3;
0195 
0196   bool DoZeroRocsBPI1;
0197   bool DoZeroRocsBPI2;
0198   bool DoZeroRocsBPI3;
0199 
0200   bool DoZeroRocsFPO1;
0201   bool DoZeroRocsFPO2;
0202 
0203   bool DoZeroRocsFMO1;
0204   bool DoZeroRocsFMO2;
0205 
0206   bool DoZeroRocsFPI1;
0207   bool DoZeroRocsFPI2;
0208 
0209   bool DoZeroRocsFMI1;
0210   bool DoZeroRocsFMI2;
0211 
0212   int bigEventSize;
0213   bool isUpgrade;
0214   bool firstRun;
0215 
0216   std::string I_name[1856];
0217   unsigned int I_detId[1856];
0218   int I_fedId[1856];
0219   int I_linkId1[1856];
0220   int I_linkId2[1856];
0221   int nDigisPerFed[40];
0222   int nDigisPerChan[1152];
0223   int nDigisPerDisk[6];
0224   int numberOfDigis[336];
0225   int nDigisA;
0226   int nDigisB;
0227 
0228   //define Token(-s)
0229   edm::EDGetTokenT<edm::DetSetVector<PixelDigi>> srcToken_;
0230   edm::ESGetToken<TrackerTopology, TrackerTopologyRcd> trackerTopoToken_;
0231   edm::ESGetToken<TrackerTopology, TrackerTopologyRcd> trackerTopoTokenBeginRun_;
0232   edm::ESGetToken<TrackerGeometry, TrackerDigiGeometryRecord> trackerGeomTokenBeginRun_;
0233   int noOfLayers;
0234   int noOfDisks;
0235 };
0236 
0237 #endif