39 metname_ =
"InterChannelSynchDBValidation";
40 LogVerbatim(metname_) <<
"[DTt0DBValidation] Constructor called!";
44 dbe_->setCurrentFolder(
"DT/DtCalib/InterChannelSynchDBValidation");
50 t0TestName_ =
"t0DifferenceInRange";
51 if (pset.
exists(
"t0TestName"))
54 outputMEsInRootFile_ =
false;
55 if (pset.
exists(
"OutputFileName")) {
56 outputMEsInRootFile_ =
true;
64 metname_ =
"InterChannelSynchDBValidation";
65 LogVerbatim(metname_) <<
"[DTt0DBValidation] Parameters initialization";
69 tZeroRefMap_ = &*t0_Ref;
70 LogVerbatim(metname_) <<
"[DTt0DBValidation] reference T0 version: " << t0_Ref->
version();
75 LogVerbatim(metname_) <<
"[DTt0DBValidation] T0 to validate version: " << t0->
version();
80 wheelSummary_[
wheel]->Reset();
96 int channelId =
tzero->channelId;
104 LogTrace(metname_) <<
"Ref Wire: " << wireId << endl
105 <<
" T0 mean (TDC counts): " << t0mean <<
" T0_rms (TDC counts): " << t0rms;
107 t0RefMap_[wireId].push_back(t0mean);
108 t0RefMap_[wireId].push_back(t0rms);
121 int channelId =
tzero->channelId;
129 LogTrace(metname_) <<
"Wire: " << wireId << endl
130 <<
" T0 mean (TDC counts): " << t0mean <<
" T0_rms (TDC counts): " << t0rms;
132 t0Map_[wireId].push_back(t0mean);
133 t0Map_[wireId].push_back(t0rms);
136 double difference = 0;
137 for (
map<
DTWireId, vector<float>>::const_iterator theMap = t0RefMap_.begin(); theMap != t0RefMap_.end(); theMap++) {
138 if (t0Map_.find((*theMap).first) != t0Map_.end()) {
140 difference = t0Map_[(*theMap).first][0] - (*theMap).second[0];
143 DTLayerId layerId = (*theMap).first.layerId();
144 if (t0DiffHistos_.find(layerId) == t0DiffHistos_.end()) {
145 const DTTopology &dtTopo = dtGeom_->layer(layerId)->specificTopology();
151 LogTrace(metname_) <<
"Filling the histo for wire: " << (*theMap).first <<
" difference: " << difference;
152 t0DiffHistos_[layerId]->Fill((*theMap).first.wire(), difference);
159 string testCriterionName = t0TestName_;
160 for (map<DTLayerId, MonitorElement *>::const_iterator hDiff = t0DiffHistos_.begin(); hDiff != t0DiffHistos_.end();
162 const QReport *theDiffQReport = (*hDiff).second->getQReport(testCriterionName);
163 if (theDiffQReport) {
164 int xBin = ((*hDiff).first.station() - 1) * 12 + (*hDiff).first.layer() + 4 * ((*hDiff).first.superlayer() - 1);
165 if ((*hDiff).first.station() == 4 && (*hDiff).first.superlayer() == 3)
166 xBin = ((*hDiff).first.station() - 1) * 12 + (*hDiff).first.layer() + 4 * ((*hDiff).first.superlayer() - 2);
168 int qReportStatus = theDiffQReport->
getStatus() / 100;
169 wheelSummary_[(*hDiff).first.wheel()]->setBinContent(xBin, (*hDiff).first.sector(), qReportStatus);
172 <<
" ------- " << theDiffQReport->
getStatus() <<
" ------- " << setprecision(3)
174 vector<dqm::me_util::Channel> badChannels = theDiffQReport->
getBadChannels();
175 for (vector<dqm::me_util::Channel>::iterator channel = badChannels.begin(); channel != badChannels.end();
177 LogVerbatim(metname_) <<
"layer: " << (*hDiff).first <<
" Bad channel: " << (*channel).getBin()
178 <<
" Contents : " << (*channel).getContents();
188 if (outputMEsInRootFile_)
189 dbe_->save(outputFileName_);
194 LogTrace(metname_) <<
" Booking histos for L: " << lId;
203 stringstream superLayer;
206 layer << lId.
layer();
208 string lHistoName =
"_W" + wheel.str() +
"_St" + station.str() +
"_Sec" + sector.str() +
"_SL" + superLayer.str() +
211 dbe_->setCurrentFolder(
"DT/DtCalib/InterChannelSynchDBValidation/Wheel" + wheel.str() +
"/Station" + station.str() +
212 "/Sector" + sector.str() +
"/SuperLayer" + superLayer.str());
215 hDifference =
dbe_->book1D(
"T0Difference" + lHistoName,
216 "difference between the two t0 values",
217 lastWire - firstWire + 1,
221 t0DiffHistos_[lId] = hDifference;
226 dbe_->setCurrentFolder(
"DT/DtCalib/InterChannelSynchDBValidation");
230 "SummaryWrongT0_W" + wh.str(),
"W" + wh.str() +
": summary of wrong t0 differences", 44, 1, 45, 14, 1, 15);
231 wheelSummary_[
wheel]->setBinLabel(1,
"M1L1", 1);
232 wheelSummary_[
wheel]->setBinLabel(2,
"M1L2", 1);
233 wheelSummary_[
wheel]->setBinLabel(3,
"M1L3", 1);
234 wheelSummary_[
wheel]->setBinLabel(4,
"M1L4", 1);
235 wheelSummary_[
wheel]->setBinLabel(5,
"M1L5", 1);
236 wheelSummary_[
wheel]->setBinLabel(6,
"M1L6", 1);
237 wheelSummary_[
wheel]->setBinLabel(7,
"M1L7", 1);
238 wheelSummary_[
wheel]->setBinLabel(8,
"M1L8", 1);
239 wheelSummary_[
wheel]->setBinLabel(9,
"M1L9", 1);
240 wheelSummary_[
wheel]->setBinLabel(10,
"M1L10", 1);
241 wheelSummary_[
wheel]->setBinLabel(11,
"M1L11", 1);
242 wheelSummary_[
wheel]->setBinLabel(12,
"M1L12", 1);
243 wheelSummary_[
wheel]->setBinLabel(13,
"M2L1", 1);
244 wheelSummary_[
wheel]->setBinLabel(14,
"M2L2", 1);
245 wheelSummary_[
wheel]->setBinLabel(15,
"M2L3", 1);
246 wheelSummary_[
wheel]->setBinLabel(16,
"M2L4", 1);
247 wheelSummary_[
wheel]->setBinLabel(17,
"M2L5", 1);
248 wheelSummary_[
wheel]->setBinLabel(18,
"M2L6", 1);
249 wheelSummary_[
wheel]->setBinLabel(19,
"M2L7", 1);
250 wheelSummary_[
wheel]->setBinLabel(20,
"M2L8", 1);
251 wheelSummary_[
wheel]->setBinLabel(21,
"M2L9", 1);
252 wheelSummary_[
wheel]->setBinLabel(22,
"M2L10", 1);
253 wheelSummary_[
wheel]->setBinLabel(23,
"M2L11", 1);
254 wheelSummary_[
wheel]->setBinLabel(24,
"M2L12", 1);
255 wheelSummary_[
wheel]->setBinLabel(25,
"M3L1", 1);
256 wheelSummary_[
wheel]->setBinLabel(26,
"M3L2", 1);
257 wheelSummary_[
wheel]->setBinLabel(27,
"M3L3", 1);
258 wheelSummary_[
wheel]->setBinLabel(28,
"M3L4", 1);
259 wheelSummary_[
wheel]->setBinLabel(29,
"M3L5", 1);
260 wheelSummary_[
wheel]->setBinLabel(30,
"M3L6", 1);
261 wheelSummary_[
wheel]->setBinLabel(31,
"M3L7", 1);
262 wheelSummary_[
wheel]->setBinLabel(32,
"M3L8", 1);
263 wheelSummary_[
wheel]->setBinLabel(33,
"M3L9", 1);
264 wheelSummary_[
wheel]->setBinLabel(34,
"M3L10", 1);
265 wheelSummary_[
wheel]->setBinLabel(35,
"M3L11", 1);
266 wheelSummary_[
wheel]->setBinLabel(36,
"M3L12", 1);
267 wheelSummary_[
wheel]->setBinLabel(37,
"M4L1", 1);
268 wheelSummary_[
wheel]->setBinLabel(38,
"M4L2", 1);
269 wheelSummary_[
wheel]->setBinLabel(39,
"M4L3", 1);
270 wheelSummary_[
wheel]->setBinLabel(40,
"M4L4", 1);
271 wheelSummary_[
wheel]->setBinLabel(41,
"M4L5", 1);
272 wheelSummary_[
wheel]->setBinLabel(42,
"M4L6", 1);
273 wheelSummary_[
wheel]->setBinLabel(43,
"M4L7", 1);
274 wheelSummary_[
wheel]->setBinLabel(44,
"M4L8", 1);
T getParameter(std::string const &) const
void endRun(edm::Run const &, edm::EventSetup const &) override
const std::vector< DQMChannel > & getBadChannels() const
DTChamberId chamberId() const
Return the corresponding ChamberId.
bool exists(std::string const ¶meterName) const
checks if a parameter exists
def setup(process, global_tag, zero_tesla=False)
int layer() const
Return the layer number.
DTSuperLayerId superlayerId() const
Return the corresponding SuperLayerId.
std::vector< DTT0Data >::const_iterator const_iterator
Access methods to data.
int firstChannel() const
Returns the wire number of the first wire.
int lastChannel() const
Returns the wire number of the last wire.
DTt0DBValidation(const edm::ParameterSet &pset)
Constructor.
const std::string & getMessage() const
get message attached to test
~DTt0DBValidation() override
Destructor.
int superlayer() const
Return the superlayer number (deprecated method name)
void beginRun(const edm::Run &run, const edm::EventSetup &setup) override
Operations.
int getStatus() const
get test status (see Core/interface/QTestStatus.h)
void bookHistos(DTLayerId lId, int firstWire, int lastWire)
static const double tzero[3]
float getQTresult() const
get test result i.e. prob value
const std::string & version() const
access version
int station() const
Return the station number.
int wheel() const
Return the wheel number.