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
|
#ifndef DQM_SiStripCommissioningSources_SiStripCommissioningSource_H
#define DQM_SiStripCommissioningSources_SiStripCommissioningSource_H
#include "FWCore/Utilities/interface/EDGetToken.h"
#include "CalibFormats/SiStripObjects/interface/SiStripFecCabling.h"
#include "CondFormats/SiStripObjects/interface/SiStripFedCabling.h"
#include "CondFormats/DataRecord/interface/SiStripFedCablingRcd.h"
#include "DataFormats/Common/interface/DetSetVector.h"
#include "DataFormats/Common/interface/DetSetVectorNew.h"
#include "DataFormats/SiStripCommon/interface/SiStripConstants.h"
#include "DataFormats/SiStripCommon/interface/SiStripHistoTitle.h"
#include "DataFormats/SiStripDigi/interface/SiStripDigi.h"
#include "DataFormats/SiStripDigi/interface/SiStripRawDigi.h"
#include "DataFormats/SiStripCluster/interface/SiStripCluster.h"
#include "FWCore/Framework/interface/one/EDAnalyzer.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "DQMServices/Core/interface/DQMStore.h"
#include "CondFormats/DataRecord/interface/SiStripNoisesRcd.h"
#include "CondFormats/DataRecord/interface/SiStripPedestalsRcd.h"
#include "CondFormats/SiStripObjects/interface/SiStripNoises.h"
#include "CondFormats/SiStripObjects/interface/SiStripPedestals.h"
#include <string>
#include <vector>
#include <map>
#include <cstdint>
class CommissioningTask;
class FedChannelConnection;
class SiStripEventSummary;
/**
@class SiStripCommissioningSource
*/
class SiStripCommissioningSource : public edm::one::EDAnalyzer<edm::one::SharedResources, edm::one::WatchRuns> {
public: // ---------- Public interface ----------
/** Map of task objects, identified through FedChanelId */
typedef std::map<unsigned int, CommissioningTask*> TaskMap;
typedef std::vector<CommissioningTask*> VecOfTasks;
typedef std::vector<VecOfTasks> VecOfVecOfTasks;
typedef dqm::legacy::DQMStore DQMStore;
typedef dqm::legacy::MonitorElement MonitorElement;
SiStripCommissioningSource(const edm::ParameterSet&);
/** Private default constructor. */
SiStripCommissioningSource() = delete;
~SiStripCommissioningSource() override;
void beginRun(edm::Run const&, const edm::EventSetup&) override;
void endRun(edm::Run const&, const edm::EventSetup&) override {}
void analyze(const edm::Event&, const edm::EventSetup&) override;
void endJob() override;
private: // ---------- Private methods ----------
/** */
DQMStore* const dqm(std::string method = "") const;
/** */
void createRunNumber();
/** */
void createTask(const SiStripEventSummary* const, const edm::EventSetup&);
/** */
void createCablingTasks();
/** */
void createTasks(sistrip::RunType, const edm::EventSetup&);
/** */
void clearCablingTasks();
/** */
void clearTasks();
/** */
void fillCablingHistos(const SiStripEventSummary* const, const edm::DetSetVector<SiStripRawDigi>&);
/** */
void fillHistos(const SiStripEventSummary* const,
const edm::DetSetVector<SiStripRawDigi>&,
const edm::DetSetVector<SiStripRawDigi>& = edm::DetSetVector<SiStripRawDigi>(),
const edmNew::DetSetVector<SiStripCluster>& = edmNew::DetSetVector<SiStripCluster>());
/** */
void remove();
/** */
void directory(std::stringstream&, uint32_t run_number = 0);
/** */
//void cablingForConnectionRun( const sistrip::RunType& ); //@@ do not use!
// ---------- DQM fwk and cabling ----------
/** Interface to Data Quality Monitoring framework. */
DQMStore* dqm_;
/** */
edm::ESGetToken<SiStripFedCabling, SiStripFedCablingRcd> fedCablingToken_;
SiStripFedCabling* fedCabling_;
/** */
SiStripFecCabling* fecCabling_;
// ---------- Input / output ----------
edm::EDGetTokenT<SiStripEventSummary> inputModuleSummaryToken_;
edm::EDGetTokenT<edm::DetSetVector<SiStripRawDigi> > digiVirginRawToken_;
edm::EDGetTokenT<edm::DetSetVector<SiStripRawDigi> > digiReorderedToken_;
edm::EDGetTokenT<edm::DetSetVector<SiStripRawDigi> > digiScopeModeToken_;
edm::EDGetTokenT<edm::DetSetVector<SiStripRawDigi> > digiFineDelaySelectionToken_;
edm::EDGetTokenT<edmNew::DetSetVector<SiStripCluster> > clustersToken_;
/** Name of digi input module. */
std::string inputModuleLabel_;
std::string inputModuleLabelAlt_;
std::string inputModuleLabelSummary_;
std::string inputClusterLabel_;
/** Filename of output root file containing source histos. */
std::string filename_;
/** Run number used for naming of root file. */
uint32_t run_;
/** Partition name used for root files in spy */
std::string partitionName_;
/** Record of time used to calculate event rate. */
int32_t time_;
/** Is this a spy run ? */
bool isSpy_;
// ---------- Histogram-related ----------
/** Identifies commissioning task read from cfg file. */
std::string taskConfigurable_;
/** Identifies commissioning task. */
sistrip::RunType task_;
/** Vector of vector of task objects (indexed using FED id.ch. */
VecOfVecOfTasks tasks_;
/** Map of cabling task objects (indexed using FEC key). */
TaskMap cablingTasks_;
/** Flag to indicate whether histo objects exist or not. */
bool tasksExist_;
/** Flag to indicate whether task is FED cabling or not. */
bool cablingTask_;
/** Update frequency for histograms (ignored for cabling). */
int updateFreq_;
/** */
std::string base_;
/** flag for choosing the organizational 'view' the DQM histogram tree */
std::string view_;
/** parameters to pass to the tasks */
edm::ParameterSet parameters_;
edm::ESGetToken<SiStripPedestals, SiStripPedestalsRcd> pedestalToken_;
edm::ESGetToken<SiStripNoises, SiStripNoisesRcd> noiseToken_;
};
#endif // DQM_SiStripCommissioningSources_SiStripCommissioningSource_H
|