RecHitTask

RecoFlag

Macros

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
#ifndef RecHitTask_h
#define RecHitTask_h

/**
 *	module:			RecHitTask.h
 *	Author:			VK
 *	Description:	
 *		HCAL RECO Data Tier Evaluation
 *
 *	Online:
 *	Offline:
 */

#include "DQM/HcalCommon/interface/DQTask.h"
#include "DQM/HcalCommon/interface/Utilities.h"
#include "DQM/HcalCommon/interface/HashFilter.h"
#include "DQM/HcalCommon/interface/Container1D.h"
#include "DQM/HcalCommon/interface/Container2D.h"
#include "DQM/HcalCommon/interface/ContainerProf1D.h"
#include "DQM/HcalCommon/interface/ContainerProf2D.h"
#include "DQM/HcalCommon/interface/ContainerSingle1D.h"
#include "DQM/HcalCommon/interface/ContainerSingle2D.h"
#include "DQM/HcalCommon/interface/ContainerSingleProf2D.h"
#include "DQM/HcalCommon/interface/ElectronicsMap.h"

class RecHitTask : public hcaldqm::DQTask {
public:
  RecHitTask(edm::ParameterSet const &);
  ~RecHitTask() override {}

  void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override;
  std::shared_ptr<hcaldqm::Cache> globalBeginLuminosityBlock(edm::LuminosityBlock const &,
                                                             edm::EventSetup const &) const override;
  void globalEndLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &) override;

protected:
  void _process(edm::Event const &, edm::EventSetup const &) override;
  void _resetMonitors(hcaldqm::UpdateFreq) override;

  edm::InputTag _tagHBHE;
  edm::InputTag _tagHO;
  edm::InputTag _tagHF;
  edm::InputTag _tagPreHF;
  bool _hfPreRecHitsAvailable;
  edm::EDGetTokenT<HBHERecHitCollection> _tokHBHE;
  edm::EDGetTokenT<HORecHitCollection> _tokHO;
  edm::EDGetTokenT<HFRecHitCollection> _tokHF;
  edm::EDGetTokenT<HFPreRecHitCollection> _tokPreHF;
  edm::ESGetToken<HcalDbService, HcalDbRecord> hcalDbServiceToken_;

  double _cutE_HBHE, _cutE_HO, _cutE_HF;
  double _thresh_unihf;

  //	hashes/FED vectors
  std::vector<uint32_t> _vhashFEDs;

  //	flag vectors
  std::vector<hcaldqm::flag::Flag> _vflags;
  enum RecoFlag { fUni = 0, fTCDS = 1, fUnknownIds = 2, nRecoFlag = 3 };

  //	emap
  hcaldqm::electronicsmap::ElectronicsMap _ehashmap;

  //	Filters
  hcaldqm::filter::HashFilter _filter_VME;
  hcaldqm::filter::HashFilter _filter_uTCA;
  hcaldqm::filter::HashFilter _filter_FEDsVME;
  hcaldqm::filter::HashFilter _filter_FEDsuTCA;
  hcaldqm::filter::HashFilter _filter_HF;

  //	Energy. Just filling. No Summary Generation
  hcaldqm::Container1D _cEnergy_Subdet;
  hcaldqm::ContainerProf1D _cEnergyvsieta_Subdet;    //	online only!
  hcaldqm::ContainerProf1D _cEnergyvsiphi_SubdetPM;  // online only!
  hcaldqm::ContainerProf2D _cEnergy_depth;
  hcaldqm::ContainerProf1D _cEnergyvsLS_SubdetPM;  // online only!
  hcaldqm::ContainerProf1D _cEnergyvsBX_SubdetPM;  // online only

  //	Timing vs Energy. No Summary Generation
  hcaldqm::Container2D _cTimingvsEnergy_SubdetPM;

  //	Timing. HBHE Partition is used for TCDS shift monitoring
  hcaldqm::Container1D _cTimingCut_SubdetPM;
  hcaldqm::Container1D _cTimingCut_HBHEPartition;
  hcaldqm::ContainerProf2D _cTimingCut_FEDuTCA;
  hcaldqm::ContainerProf2D _cTimingCut_ElectronicsuTCA;
  hcaldqm::ContainerProf2D _cTimingCut_depth;
  hcaldqm::ContainerProf1D _cTimingCutvsLS_FED;
  hcaldqm::ContainerProf1D _cTimingCutvsLS_SubdetPM;
  hcaldqm::ContainerProf1D _cTimingCutvsieta_Subdet;    //	online only
  hcaldqm::ContainerProf1D _cTimingCutvsiphi_SubdetPM;  //	online only
  hcaldqm::ContainerProf1D _cTimingCutvsBX_SubdetPM;    // online only

  //	Occupancy w/o a cut. Used for checking missing channels
  hcaldqm::Container2D _cOccupancy_depth;
  hcaldqm::Container2D _cOccupancy_FEDuTCA;
  hcaldqm::Container2D _cOccupancy_ElectronicsuTCA;
  hcaldqm::ContainerProf1D _cOccupancyvsLS_Subdet;
  hcaldqm::Container1D _cOccupancyvsiphi_SubdetPM;  // online only
  hcaldqm::Container1D _cOccupancyvsieta_Subdet;    //	online only

  //	Occupancy w/ a Cut.
  hcaldqm::Container2D _cOccupancyCut_FEDuTCA;
  hcaldqm::Container2D _cOccupancyCut_ElectronicsuTCA;
  hcaldqm::ContainerProf1D _cOccupancyCutvsLS_Subdet;  // online only
  hcaldqm::Container2D _cOccupancyCut_depth;
  hcaldqm::Container1D _cOccupancyCutvsiphi_SubdetPM;      // online only
  hcaldqm::Container1D _cOccupancyCutvsieta_Subdet;        // online only
  hcaldqm::ContainerProf1D _cOccupancyCutvsBX_Subdet;      // online only!
  hcaldqm::Container2D _cOccupancyCutvsiphivsLS_SubdetPM;  // online only
  hcaldqm::ContainerXXX<uint32_t> _xUniHF, _xUni;

  // QIE10 dual anode histograms
  hcaldqm::Container2D _cDAAsymmetryVsCharge_SubdetPM;
  hcaldqm::ContainerProf2D _cDAAsymmetryMean_cut_depth;
  hcaldqm::Container1D _cDAAsymmetry_cut_SubdetPM;

  //	tracks the unknown ids
  MonitorElement *meUnknownIds1LS;
  bool _unknownIdsPresent;

  std::vector<HcalGenericDetId> _gids;     // online only
  hcaldqm::Container2D _cSummaryvsLS_FED;  // online only!
  hcaldqm::ContainerSingle2D _cSummaryvsLS;
};

#endif