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
|
/*----------------------------------------------------------------------
Toy EDAnalyzer for testing purposes only.
----------------------------------------------------------------------*/
#include "FWCore/Framework/interface/one/EDAnalyzer.h"
#include "FWCore/Framework/interface/ESHandle.h"
#include "FWCore/Framework/interface/Event.h"
#include "FWCore/Framework/interface/MakerMacros.h"
#include <cmath>
#include <fstream>
#include <iostream>
#include <map>
#include <sstream>
#include <stdexcept>
#include <string>
#include "FWCore/Framework/interface/EventSetup.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "CondTools/DT/test/validate/DTCompMapValidateDBRead.h"
#include "CondFormats/DTObjects/interface/DTReadOutMapping.h"
#include "CondFormats/DataRecord/interface/DTReadOutMappingRcd.h"
DTCompMapValidateDBRead::DTCompMapValidateDBRead(edm::ParameterSet const& p)
: dataFileName(p.getParameter<std::string>("chkFile")),
elogFileName(p.getParameter<std::string>("logFile")),
dtreadoutmappingToken_(esConsumes()) {}
DTCompMapValidateDBRead::DTCompMapValidateDBRead(int i) : dtreadoutmappingToken_(esConsumes()) {}
void DTCompMapValidateDBRead::analyze(const edm::Event& e, const edm::EventSetup& context) {
using namespace edm::eventsetup;
// Context is not used.
std::cout << " I AM IN RUN NUMBER " << e.id().run() << std::endl;
std::cout << " ---EVENT NUMBER " << e.id().event() << std::endl;
std::stringstream run_fn;
// run_fn << "run" << e.id().run() << dataFileName;
// std::ifstream chkFile( run_fn.str().c_str() );
std::ifstream chkFile(dataFileName.c_str());
std::ofstream logFile(elogFileName.c_str(), std::ios_base::app);
auto ro = context.getHandle(dtreadoutmappingToken_);
std::cout << ro->mapRobRos() << " " << ro->mapCellTdc() << std::endl;
std::cout << std::distance(ro->begin(), ro->end()) << " data in the container" << std::endl;
int whe;
int sta;
int sec;
int qua;
int lay;
int cel;
int ddu;
int ros;
int rob;
int tdc;
int cha;
int ckwhe;
int cksta;
int cksec;
int ckqua;
int cklay;
int ckcel;
int ckddu;
int ckros;
int ckrob;
int cktdc;
int ckcha;
while (chkFile >> ckddu >> ckros >> ckrob >> cktdc >> ckcha >> ckwhe >> cksta >> cksec >> ckqua >> cklay >> ckcel) {
/*
if ( ( cklay == 4 ) &&
( ckcel == 1 ) ) continue;
if ( ( cksta == 4 ) &&
( cksec == 8 ) &&
( ckcel > 92 ) ) continue;
if ( ( cksta == 4 ) &&
( cksec == 12 ) &&
( ckcel > 92 ) ) continue;
if ( ( cksta == 4 ) &&
( cksec == 8 ) &&
( cklay == 1 ) &&
( ckcel > 91 ) ) continue;
if ( ( cksta == 4 ) &&
( cksec == 12 ) &&
( cklay == 1 ) &&
( ckcel > 91 ) ) continue;
if ( ( ckwhe == -1 ) &&
( cksec == 3 ) &&
( ckqua == 2 ) &&
( ckcel > 48 ) ) continue;
if ( ( ckwhe == 1 ) &&
( cksec == 4 ) &&
( ckqua == 2 ) &&
( ckcel > 48 ) ) continue;
*/
ro->readOutToGeometry(ckddu, ckros, ckrob, cktdc, ckcha, whe, sta, sec, qua, lay, cel);
if ((ckwhe != whe) || (cksta != sta) || (cksec != sec) || (ckqua != qua) || (cklay != lay) || (ckcel != cel))
logFile << "MISMATCH IN WRITING AND READING chan->cell map " << ckddu << " " << ckros << " " << ckrob << " "
<< cktdc << " " << ckcha << " : " << ckwhe << " " << cksta << " " << cksec << " " << ckqua << " " << cklay
<< " " << ckcel << " -> " << whe << " " << sta << " " << sec << " " << qua << " " << lay << " " << cel
<< std::endl;
ro->geometryToReadOut(ckwhe, cksta, cksec, ckqua, cklay, ckcel, ddu, ros, rob, tdc, cha);
if ((ckddu != ddu) || (ckros != ros) || (ckrob != rob) || (cktdc != tdc) || (ckcha != cha))
logFile << "MISMATCH IN WRITING AND READING cell->chan map " << ckwhe << " " << cksta << " " << cksec << " "
<< ckqua << " " << cklay << " " << ckcel << " : " << ckddu << " " << ckros << " " << ckrob << " " << cktdc
<< " " << ckcha << " -> " << ddu << " " << ros << " " << rob << " " << tdc << " " << cha << std::endl;
}
}
void DTCompMapValidateDBRead::endJob() {
std::ifstream logFile(elogFileName.c_str());
char* line = new char[1000];
int errors = 0;
std::cout << "ReadOut Map validation result:" << std::endl;
while (logFile.getline(line, 1000)) {
std::cout << line << std::endl;
errors++;
}
if (!errors) {
std::cout << " ********************************* " << std::endl;
std::cout << " *** *** " << std::endl;
std::cout << " *** NO ERRORS FOUND *** " << std::endl;
std::cout << " *** *** " << std::endl;
std::cout << " ********************************* " << std::endl;
}
return;
}
DEFINE_FWK_MODULE(DTCompMapValidateDBRead);
|