File indexing completed on 2024-04-06 12:33:46
0001 #ifndef SiStripRecHitsValid_h
0002 #define SiStripRecHitsValid_h
0003
0004 #include "FWCore/Framework/interface/Frameworkfwd.h"
0005 #include "FWCore/Framework/interface/Event.h"
0006 #include "FWCore/Framework/interface/EventSetup.h"
0007 #include "FWCore/Framework/interface/ESHandle.h"
0008 #include "FWCore/Utilities/interface/EDGetToken.h"
0009 #include "FWCore/Framework/interface/ESWatcher.h"
0010
0011 #include "DataFormats/Common/interface/Handle.h"
0012 #include "FWCore/Framework/interface/MakerMacros.h"
0013 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0014 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0015
0016
0017 #include "DQMServices/Core/interface/DQMStore.h"
0018
0019 #include "FWCore/ServiceRegistry/interface/Service.h"
0020
0021
0022 #include "SimDataFormats/TrackingHit/interface/PSimHit.h"
0023 #include "SimTracker/TrackerHitAssociation/interface/TrackerHitAssociator.h"
0024
0025 #include "Geometry/CommonTopologies/interface/PixelTopology.h"
0026 #include "Geometry/CommonTopologies/interface/StripTopology.h"
0027 #include "Geometry/TrackerGeometryBuilder/interface/StripGeomDetUnit.h"
0028 #include "Geometry/CommonDetUnit/interface/GeomDetType.h"
0029 #include "Geometry/CommonDetUnit/interface/GeomDet.h"
0030 #include "Geometry/CommonDetUnit/interface/GluedGeomDet.h"
0031 #include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h"
0032 #include "Geometry/Records/interface/TrackerDigiGeometryRecord.h"
0033 #include "Geometry/TrackerNumberingBuilder/interface/GeometricDet.h"
0034 #include "Geometry/CommonDetUnit/interface/PixelGeomDetType.h"
0035 #include "Geometry/TrackerGeometryBuilder/interface/StripGeomDetType.h"
0036
0037
0038 #include "CalibTracker/Records/interface/SiStripDetCablingRcd.h"
0039 #include "CalibFormats/SiStripObjects/interface/SiStripDetCabling.h"
0040 #include "DataFormats/TrackerCommon/interface/TrackerTopology.h"
0041 #include "Geometry/Records/interface/TrackerTopologyRcd.h"
0042
0043 #include <string>
0044 #include <DQMServices/Core/interface/DQMEDAnalyzer.h>
0045
0046 #include "DataFormats/TrackerRecHit2D/interface/SiStripRecHit2DCollection.h"
0047 #include "DataFormats/TrackerRecHit2D/interface/SiStripMatchedRecHit2DCollection.h"
0048 #include "SimTracker/TrackerHitAssociation/interface/TrackerHitAssociator.h"
0049
0050 class SiStripDetCabling;
0051 class SiStripDCSStatus;
0052
0053 class SiStripRecHitsValid : public DQMEDAnalyzer {
0054 public:
0055 SiStripRecHitsValid(const edm::ParameterSet& conf);
0056
0057 ~SiStripRecHitsValid() override;
0058
0059 struct TotalMEs {
0060 MonitorElement* meNumTotrphi;
0061 MonitorElement* meNumTotStereo;
0062 MonitorElement* meNumTotMatched;
0063 };
0064
0065 struct SubDetMEs {
0066 MonitorElement* meNumrphi;
0067 MonitorElement* meBunchrphi;
0068 MonitorElement* meEventrphi;
0069 MonitorElement* meNumStereo;
0070 MonitorElement* meBunchStereo;
0071 MonitorElement* meEventStereo;
0072 MonitorElement* meNumMatched;
0073 MonitorElement* meBunchMatched;
0074 MonitorElement* meEventMatched;
0075 };
0076
0077 struct LayerMEs {
0078 MonitorElement* meWclusrphi;
0079 MonitorElement* meAdcrphi;
0080 MonitorElement* mePosxrphi;
0081 MonitorElement* meResolxrphi;
0082 MonitorElement* meResrphi;
0083 MonitorElement* mePullLFrphi;
0084 MonitorElement* mePullMFrphi;
0085 MonitorElement* meChi2rphi;
0086 MonitorElement* meNsimHitrphi;
0087 };
0088
0089 struct StereoAndMatchedMEs {
0090 MonitorElement* meWclusStereo;
0091 MonitorElement* meAdcStereo;
0092 MonitorElement* mePosxStereo;
0093 MonitorElement* meResolxStereo;
0094 MonitorElement* meResStereo;
0095 MonitorElement* mePullLFStereo;
0096 MonitorElement* mePullMFStereo;
0097 MonitorElement* meChi2Stereo;
0098 MonitorElement* meNsimHitStereo;
0099 MonitorElement* mePosxMatched;
0100 MonitorElement* mePosyMatched;
0101 MonitorElement* meResolxMatched;
0102 MonitorElement* meResolyMatched;
0103 MonitorElement* meResxMatched;
0104 MonitorElement* meResyMatched;
0105 MonitorElement* meChi2Matched;
0106 MonitorElement* meNsimHitMatched;
0107 };
0108
0109 struct RecHitProperties {
0110 float x;
0111 float y;
0112
0113 float resolxx;
0114
0115 float resolyy;
0116 float resx;
0117 float resy;
0118 float pullMF;
0119 int clusiz;
0120 float cluchg;
0121 float chi2;
0122 int NsimHit;
0123 int bunch;
0124 int event;
0125 };
0126
0127 protected:
0128 void analyze(const edm::Event& e, const edm::EventSetup& c) override;
0129 void bookHistograms(DQMStore::IBooker& ibooker, const edm::Run& run, const edm::EventSetup& es) override;
0130
0131 private:
0132 const edm::ESGetToken<TrackerGeometry, TrackerDigiGeometryRecord> m_geomToken;
0133 const edm::ESGetToken<TrackerTopology, TrackerTopologyRcd> m_topoToken, m_topoTokenBR;
0134 const edm::ESGetToken<SiStripDetCabling, SiStripDetCablingRcd> m_SiStripDetCablingToken;
0135
0136 edm::ESWatcher<SiStripDetCablingRcd> watchSiStripDetCablingRcd_;
0137
0138 TotalMEs totalMEs;
0139
0140 bool switchNumTotrphi;
0141 bool switchNumTotStereo;
0142 bool switchNumTotMatched;
0143
0144 bool switchNumrphi;
0145 bool switchBunchrphi;
0146 bool switchEventrphi;
0147 bool switchNumStereo;
0148 bool switchBunchStereo;
0149 bool switchEventStereo;
0150 bool switchNumMatched;
0151 bool switchBunchMatched;
0152 bool switchEventMatched;
0153
0154 bool switchWclusrphi;
0155 bool switchAdcrphi;
0156 bool switchPosxrphi;
0157 bool switchResolxrphi;
0158 bool switchResrphi;
0159 bool switchPullLFrphi;
0160 bool switchPullMFrphi;
0161 bool switchChi2rphi;
0162 bool switchNsimHitrphi;
0163 bool switchWclusStereo;
0164 bool switchAdcStereo;
0165 bool switchPosxStereo;
0166 bool switchResolxStereo;
0167 bool switchResStereo;
0168 bool switchPullLFStereo;
0169 bool switchPullMFStereo;
0170 bool switchChi2Stereo;
0171 bool switchNsimHitStereo;
0172 bool switchPosxMatched;
0173 bool switchPosyMatched;
0174 bool switchResolxMatched;
0175 bool switchResolyMatched;
0176 bool switchResxMatched;
0177 bool switchResyMatched;
0178 bool switchChi2Matched;
0179 bool switchNsimHitMatched;
0180
0181 std::string topFolderName_;
0182 std::vector<std::string> SubDetList_;
0183
0184 std::map<std::string, LayerMEs> LayerMEsMap;
0185 std::map<std::string, StereoAndMatchedMEs> StereoAndMatchedMEsMap;
0186 std::map<std::string, SubDetMEs> SubDetMEsMap;
0187 std::map<std::string, std::vector<uint32_t> > LayerDetMap;
0188 std::map<std::string, std::vector<uint32_t> > StereoAndMatchedDetMap;
0189
0190 edm::ESHandle<SiStripDetCabling> SiStripDetCabling_;
0191
0192 std::pair<LocalPoint, LocalVector> projectHit(const PSimHit& hit,
0193 const StripGeomDetUnit* stripDet,
0194 const BoundPlane& plane);
0195 void createMEs(DQMStore::IBooker& ibooker, const edm::EventSetup& es);
0196 void createTotalMEs(DQMStore::IBooker& ibooker);
0197 void createLayerMEs(DQMStore::IBooker& ibooker, std::string label);
0198 void createSubDetMEs(DQMStore::IBooker& ibooker, std::string label);
0199 void createStereoAndMatchedMEs(DQMStore::IBooker& ibooker, std::string label);
0200
0201 MonitorElement* bookME1D(DQMStore::IBooker& ibooker,
0202 const char* ParameterSetLabel,
0203 const char* HistoName,
0204 const char* HistoTitle);
0205
0206 inline void fillME(MonitorElement* ME, float value1) {
0207 if (ME != nullptr)
0208 ME->Fill(value1);
0209 }
0210 inline void fillME(MonitorElement* ME, float value1, float value2) {
0211 if (ME != nullptr)
0212 ME->Fill(value1, value2);
0213 }
0214 inline void fillME(MonitorElement* ME, float value1, float value2, float value3) {
0215 if (ME != nullptr)
0216 ME->Fill(value1, value2, value3);
0217 }
0218 inline void fillME(MonitorElement* ME, float value1, float value2, float value3, float value4) {
0219 if (ME != nullptr)
0220 ME->Fill(value1, value2, value3, value4);
0221 }
0222
0223 edm::ParameterSet conf_;
0224 TrackerHitAssociator::Config trackerHitAssociatorConfig_;
0225
0226
0227
0228
0229
0230
0231
0232 RecHitProperties rechitpro;
0233
0234 void rechitanalysis(SiStripRecHit2D const rechit, const StripTopology& topol, TrackerHitAssociator& associate);
0235 void rechitanalysis_matched(SiStripMatchedRecHit2D const rechit,
0236 const GluedGeomDet* gluedDet,
0237 TrackerHitAssociator& associate);
0238
0239 edm::EDGetTokenT<SiStripMatchedRecHit2DCollection> matchedRecHitsToken_;
0240 edm::EDGetTokenT<SiStripRecHit2DCollection> rphiRecHitsToken_;
0241 edm::EDGetTokenT<SiStripRecHit2DCollection> stereoRecHitsToken_;
0242 };
0243
0244 #endif