File indexing completed on 2024-04-06 12:07:10
0001 #ifndef DTLocalTriggerTask_H
0002 #define DTLocalTriggerTask_H
0003
0004
0005
0006
0007
0008
0009
0010
0011 #include "FWCore/Framework/interface/Frameworkfwd.h"
0012 #include "DataFormats/Common/interface/Handle.h"
0013 #include "FWCore/Framework/interface/LuminosityBlock.h"
0014
0015 #include "FWCore/Framework/interface/Event.h"
0016 #include "FWCore/Framework/interface/MakerMacros.h"
0017
0018 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0019 #include "FWCore/Utilities/interface/InputTag.h"
0020
0021 #include "DQMServices/Core/interface/DQMStore.h"
0022
0023 #include "DQMServices/Core/interface/DQMOneEDAnalyzer.h"
0024
0025 #include "DataFormats/L1DTTrackFinder/interface/L1MuDTChambPhContainer.h"
0026 #include "DataFormats/L1DTTrackFinder/interface/L1MuDTChambThContainer.h"
0027 #include "DataFormats/LTCDigi/interface/LTCDigi.h"
0028 #include "DataFormats/DTDigi/interface/DTLocalTriggerCollection.h"
0029 #include "DataFormats/DTRecHit/interface/DTRecSegment4DCollection.h"
0030 #include "Geometry/Records/interface/MuonGeometryRecord.h"
0031
0032 #include <vector>
0033 #include <string>
0034 #include <map>
0035
0036 class DTGeometry;
0037 class DTTrigGeomUtils;
0038 class DTChamberId;
0039 class DTRecSegment4D;
0040 class DTLocalTrigger;
0041 class L1MuDTChambPhDigi;
0042 class L1MuDTChambThDigi;
0043
0044 typedef std::array<std::array<std::array<int, 13>, 5>, 6> DTArr3int;
0045 typedef std::array<std::array<std::array<const L1MuDTChambPhDigi*, 15>, 5>, 6> DTArr3PhDigi;
0046 typedef std::array<std::array<std::array<const L1MuDTChambThDigi*, 15>, 5>, 6> DTArr3ThDigi;
0047 typedef std::array<std::array<std::array<const DTLocalTrigger*, 15>, 5>, 6> DTArr3LocalTrigger;
0048 typedef std::array<std::array<std::array<int, 2>, 13>, 6> DTArr3mapInt;
0049
0050 class DTLocalTriggerTask : public DQMOneEDAnalyzer<edm::one::WatchLuminosityBlocks> {
0051 friend class DTMonitorModule;
0052
0053 public:
0054
0055 DTLocalTriggerTask(const edm::ParameterSet& ps);
0056
0057
0058 ~DTLocalTriggerTask() override;
0059
0060 protected:
0061
0062 void dqmBeginRun(const edm::Run&, const edm::EventSetup&) override;
0063
0064
0065
0066 void bookHistograms(DQMStore::IBooker&, edm::Run const&, edm::EventSetup const&) override;
0067 void bookHistos(DQMStore::IBooker&, const DTChamberId& dtCh, std::string folder, std::string histoTag);
0068
0069
0070 void bookWheelHistos(DQMStore::IBooker&, int wh, std::string histoTag);
0071
0072
0073 void bookBarrelHistos(DQMStore::IBooker&, std::string histoTag);
0074
0075
0076 void setQLabels(MonitorElement* me, short int iaxis);
0077 void setQLabelsTheta(MonitorElement* me, short int iaxis);
0078
0079
0080 void runTMAnalysis(std::vector<L1MuDTChambPhDigi> const* phTrigs, std::vector<L1MuDTChambThDigi> const* thTrigs);
0081
0082
0083 void runSegmentAnalysis(edm::Handle<DTRecSegment4DCollection>& segments4D);
0084
0085
0086 void analyze(const edm::Event& e, const edm::EventSetup& c) override;
0087
0088
0089 void beginLuminosityBlock(const edm::LuminosityBlock& lumiSeg, const edm::EventSetup& context) override;
0090 void endLuminosityBlock(const edm::LuminosityBlock& lumiSeg, const edm::EventSetup& context) final {}
0091
0092
0093 void triggerSource(const edm::Event& e);
0094
0095
0096 std::string& topFolder() { return baseFolderTM; }
0097
0098 const int wheelArrayShift = 3;
0099
0100 private:
0101 edm::EDGetTokenT<L1MuDTChambPhContainer> tm_Token_;
0102 edm::EDGetTokenT<L1MuDTChambThContainer> tmTh_Token_;
0103 edm::EDGetTokenT<DTLocalTriggerCollection> ros_Token_;
0104 edm::EDGetTokenT<DTRecSegment4DCollection> seg_Token_;
0105 edm::EDGetTokenT<LTCDigiCollection> ltcDigiCollectionToken_;
0106
0107 bool useTM, useSEG;
0108 std::string trigsrc;
0109 int nevents;
0110 bool tpMode;
0111 std::string baseFolderTM;
0112 bool doTMTheta;
0113 bool detailedAnalysis;
0114
0115 DTArr3int phcode_best;
0116 DTArr3int thcode_best;
0117 DTArr3mapInt mapDTTF;
0118 DTArr3PhDigi iphbest;
0119 DTArr3ThDigi ithbest;
0120 bool track_ok[6][5][15];
0121
0122 edm::ParameterSet parameters;
0123 edm::ESGetToken<DTGeometry, MuonGeometryRecord> muonGeomToken_;
0124 const DTGeometry* muonGeom;
0125 DTTrigGeomUtils* trigGeomUtils;
0126 std::map<uint32_t, std::map<std::string, MonitorElement*> > digiHistos;
0127 std::map<int, std::map<std::string, MonitorElement*> > wheelHistos;
0128
0129 MonitorElement* tm_IDDataErrorPlot;
0130
0131 bool isLocalRun;
0132 };
0133
0134 #endif
0135
0136
0137
0138
0139