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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
|
#ifndef DTDigiTask_H
#define DTDigiTask_H
/*
* \file DTDigiTask.h
*
* \author M. Zanetti - INFN Padova
*
*/
#include "FWCore/Framework/interface/Frameworkfwd.h"
#include "DataFormats/Common/interface/Handle.h"
#include "FWCore/Framework/interface/Event.h"
#include "FWCore/Framework/interface/MakerMacros.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "DQMServices/Core/interface/DQMStore.h"
#include "DQMServices/Core/interface/DQMOneEDAnalyzer.h"
#include "CondFormats/DTObjects/interface/DTReadOutMapping.h"
#include "CondFormats/DTObjects/interface/DTStatusFlag.h"
//Records
#include "Geometry/Records/interface/MuonGeometryRecord.h"
#include "CondFormats/DataRecord/interface/DTReadOutMappingRcd.h"
#include "CondFormats/DataRecord/interface/DTTtrigRcd.h"
#include "CondFormats/DataRecord/interface/DTT0Rcd.h"
#include "CondFormats/DataRecord/interface/DTStatusFlagRcd.h"
#include "DataFormats/LTCDigi/interface/LTCDigi.h"
#include "DataFormats/DTDigi/interface/DTDigi.h"
#include "DataFormats/DTDigi/interface/DTDigiCollection.h"
#include "FWCore/Framework/interface/LuminosityBlock.h"
#include "FWCore/Utilities/interface/InputTag.h"
#include <memory>
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <map>
class DTGeometry;
class DTSuperLayerId;
class DTLayerId;
class DTChamberId;
class DTTtrig;
class DTT0;
class DTDigiTask : public DQMOneEDAnalyzer<edm::one::WatchLuminosityBlocks> {
public:
/// Constructor
DTDigiTask(const edm::ParameterSet& ps);
/// Destructor
~DTDigiTask() override;
protected:
void dqmBeginRun(const edm::Run&, const edm::EventSetup&) override;
// Book the histograms
void bookHistograms(DQMStore::IBooker&, edm::Run const&, edm::EventSetup const&) override;
/// Book the ME
void bookHistos(DQMStore::IBooker& ibooker, const DTSuperLayerId& dtSL, std::string folder, std::string histoTag);
void bookHistos(DQMStore::IBooker& ibooker, const DTChamberId& dtCh, std::string folder, std::string histoTag);
void bookHistos(DQMStore::IBooker& ibooker, const int wheelId, std::string folder, std::string histoTag);
/// To reset the MEs
void beginLuminosityBlock(edm::LuminosityBlock const& lumiSeg, edm::EventSetup const& context) override;
void endLuminosityBlock(edm::LuminosityBlock const& lumiSeg, edm::EventSetup const& context) final {}
/// To map real channels
void channelsMap(const DTChamberId& dtCh, std::string histoTag);
/// Analyze
void analyze(const edm::Event& e, const edm::EventSetup& c) override;
/// get the L1A source
std::string triggerSource();
private:
std::string topFolder() const;
int nevents;
/// no needs to be precise. Value from PSets will always be used
int tMax;
int maxTDCHits;
/// tTrig from the DB
float tTrig;
float tTrigRMS;
float kFactor;
//check for sync noise
std::map<DTChamberId, int> hitMap;
std::set<DTChamberId> syncNoisyChambers;
int syncNumTot;
int syncNum;
edm::Handle<LTCDigiCollection> ltcdigis;
edm::ESGetToken<DTGeometry, MuonGeometryRecord> muonGeomToken_;
const DTGeometry* muonGeom;
edm::ESGetToken<DTReadOutMapping, DTReadOutMappingRcd> readOutMapToken_;
const DTReadOutMapping* mapping;
edm::ESGetToken<DTTtrig, DTTtrigRcd> TtrigToken_;
const DTTtrig* tTrigMap;
edm::ESGetToken<DTT0, DTT0Rcd> T0Token_;
const DTT0* t0Map;
// Status map (for noisy channels)
edm::ESGetToken<DTStatusFlag, DTStatusFlagRcd> statusMapToken_;
const DTStatusFlag* statusMap;
std::map<std::string, std::map<uint32_t, MonitorElement*> > digiHistos;
std::map<std::string, std::map<int, MonitorElement*> > wheelHistos;
// Parameters from config file
// The label to retrieve the digis
edm::EDGetTokenT<DTDigiCollection> dtDigiToken_;
edm::EDGetTokenT<LTCDigiCollection> ltcDigiCollectionToken_;
// Set to true to read the ttrig from DB (useful to determine in-time and out-of-time hits)
bool readTTrigDB;
// Set to true to subtract t0 from test pulses
bool subtractT0;
// Tmax value (TDC counts)
int defaultTmax;
// Switch from static (all histo at the beginninig of the job) to
// dynamic (book when needed) histo booking
bool doStaticBooking;
// Switch for local/global runs
bool isLocalRun;
// Setting for the reset of the ME after n (= ResetCycle) luminosity sections
int resetCycle;
// Check the DB of noisy channels
bool checkNoisyChannels;
// Default TTrig to be used when not reading the TTrig DB
int defaultTTrig;
int inTimeHitsLowerBound;
int inTimeHitsUpperBound;
int timeBoxGranularity;
int maxTTMounts;
bool doAllHitsOccupancies;
bool doNoiseOccupancies;
bool doInTimeOccupancies;
bool tpMode;
bool lookForSyncNoise;
bool filterSyncNoise;
bool sliceTestMode;
int tdcPedestal;
bool doLayerTimeBoxes;
std::map<DTChamberId, int> nSynchNoiseEvents;
MonitorElement* nEventMonitor;
};
#endif
/* Local Variables: */
/* show-trailing-whitespace: t */
/* truncate-lines: t */
/* End: */
|