25 : m_name(ps.getUntrackedParameter<std::
string>(
"name",
"EcalTPGBadXTHandler")) {
26 edm::LogInfo(
"EcalTPGBadXTHandler") <<
"EcalTPGBadXT Source handler constructor.";
43 edm::LogInfo(
"EcalTPGBadXTHandler") <<
"Started GetNewObjects!!!";
45 unsigned int max_since = 0;
46 max_since =
static_cast<unsigned int>(
tagInfo().lastInterval.since);
47 edm::LogInfo(
"EcalTPGBadXTHandler") <<
"max_since : " << max_since;
48 edm::LogInfo(
"EcalTPGBadXTHandler") <<
"retrieved last payload ";
51 edm::LogInfo(
"EcalTPGBadXTHandler") <<
"Retrieving run list from ONLINE DB ... ";
53 edm::LogInfo(
"EcalTPGBadXTHandler") <<
"Making connection...";
58 std::cout <<
" connection parameters " << m_sid <<
"/" << m_user << std::endl;
78 if (m_firstRun < m_i_run_number) {
79 min_run = m_i_run_number + 1;
83 if (min_run < max_since) {
84 min_run = max_since + 1;
87 std::cout <<
"m_i_run_number" << m_i_run_number <<
"m_firstRun " << m_firstRun <<
"max_since " << max_since
90 unsigned int max_run = m_lastRun;
91 edm::LogInfo(
"EcalTPGBadXTHandler") <<
"min_run= " << min_run <<
"max_run= " << max_run;
94 my_list =
econn->fetchGlobalRunListByLocation(my_runtag, min_run, max_run, my_locdef);
97 std::vector<RunIOV> run_vec = my_list.
getRuns();
98 size_t num_runs = run_vec.size();
100 std::cout <<
"number of runs is : " << num_runs << std::endl;
102 std::vector<EcalLogicID> my_EcalLogicId;
103 std::vector<EcalLogicID> my_EcalLogicId_EE;
105 unsigned int irun = 0;
107 my_EcalLogicId =
econn->getEcalLogicIDSetOrdered(
108 "ECAL_crystal_number_fedccuxt", 610, 650, 1, 100, 0, 100,
"EB_crystal_number", 123);
110 my_EcalLogicId_EE =
econn->getEcalLogicIDSetOrdered(
111 "ECAL_crystal_number_fedccuxt", 600, 700, 1, 100, 0, 100,
"EE_crystal_number", 123);
113 for (
size_t kr = 0; kr < run_vec.size(); kr++) {
114 std::cout <<
"here we are in run " << kr << std::endl;
115 irun =
static_cast<unsigned int>(run_vec[kr].getRunNumber());
117 std::cout <<
" **************** " << std::endl;
118 std::cout <<
" **************** " << std::endl;
119 std::cout <<
" run= " << irun << std::endl;
122 std::map<EcalLogicID, RunTPGConfigDat>
dataset;
123 econn->fetchDataSet(&dataset, &run_vec[kr]);
126 int the_config_version = 0;
128 std::map<EcalLogicID, RunTPGConfigDat>::const_iterator it;
131 for (it = dataset.begin(); it != dataset.end(); it++) {
142 std::cout <<
" run= " << irun <<
" tag " << the_config_tag <<
" version=" << the_config_version << std::endl;
146 if ((the_config_tag != m_i_tag || the_config_version != m_i_version) && nr > 0) {
147 std::cout <<
"the tag is different from last transferred run ... retrieving last config set from DB"
156 std::cout <<
" before fetch config set" << std::endl;
157 econn->fetchConfigSet(&fe_main_info);
158 std::cout <<
" after fetch config set" << std::endl;
161 int badxtId = fe_main_info.
getBxtId();
163 if (badxtId != m_i_badXT && badxtId != 0) {
165 fe_badXt_info.
setId(badxtId);
166 econn->fetchConfigSet(&fe_badXt_info);
167 std::vector<FEConfigBadXTDat> dataset_TpgBadXT;
168 econn->fetchConfigDataSet(&dataset_TpgBadXT, &fe_badXt_info);
173 badXt = produceEcalTrgChannelStatus();
175 typedef std::vector<FEConfigBadXTDat>::const_iterator CIfeped;
180 for (CIfeped
p = dataset_TpgBadXT.begin();
p != dataset_TpgBadXT.end();
p++) {
185 int tt_id = rd_badXt.
getTTId();
186 int xt_id = rd_badXt.
getXTId();
189 if (fed_id >= 610 && fed_id <= 645) {
194 sm_num = fed_id - 609 + 18;
196 sm_num = fed_id - 627;
201 for (
size_t ixt = 0; ixt < my_EcalLogicId.size(); ixt++) {
202 if (my_EcalLogicId[ixt].getID1() == fed_id && my_EcalLogicId[ixt].getID2() == tt_id &&
203 my_EcalLogicId[ixt].getID3() == xt_id) {
205 int ecid = my_EcalLogicId[ixt].getLogicID();
206 xt_num = (ecid) - (101100 + sm_num) * 10000;
210 std::cout <<
" masking crystal " << sm_num <<
"/" << xt_num <<
" from fed/tt/xt" << fed_id <<
"/"
211 << tt_id <<
"/" << xt_id << std::endl;
212 if (sm_num == 0 && xt_num == 0) {
213 std::cout <<
" ERROR FOR crystal from fed/tt/xt" << fed_id <<
"/" << tt_id <<
"/" << xt_id
227 for (
size_t ixt = 0; ixt < my_EcalLogicId_EE.size(); ixt++) {
228 if (my_EcalLogicId_EE[ixt].getID1() == fed_id && my_EcalLogicId_EE[ixt].getID2() == tt_id &&
229 my_EcalLogicId_EE[ixt].getID3() == xt_id) {
230 long ecid = (long)my_EcalLogicId_EE[ixt].getLogicID();
232 y = ecid - ((long)(ecid / 1000)) * 1000;
233 x = (ecid -
y) / 1000;
234 x = x - ((long)(x / 1000)) * 1000;
235 z = (ecid - y - x * 1000) / 1000000 - 2010;
243 if (x == 0 && y == 0 && z == 0) {
244 std::cout <<
" ERROR FOR crystal from fed/tt/xt" << fed_id <<
"/" << tt_id <<
"/" << xt_id
253 edm::LogInfo(
"EcalTPGBadXTHandler") <<
"Finished badXT reading";
258 m_i_run_number = irun;
259 m_i_tag = the_config_tag;
260 m_i_version = the_config_version;
263 writeFile(
"last_tpg_badXT_settings.txt");
266 m_i_run_number = irun;
267 m_i_tag = the_config_tag;
268 m_i_version = the_config_version;
270 writeFile(
"last_tpg_badXT_settings.txt");
272 std::cout <<
" even if the tag/version is not the same, the badXT id is the same -> no transfer needed "
279 std::cout <<
"ERROR: THIS CONFIG DOES NOT EXIST: tag=" << the_config_tag <<
" version=" << the_config_version
282 m_i_run_number = irun;
284 std::cout <<
" **************** " << std::endl;
286 }
else if (nr == 0) {
287 m_i_run_number = irun;
288 std::cout <<
" no tag saved to RUN_TPGCONFIG_DAT by EcalSupervisor -> no transfer needed " << std::endl;
289 std::cout <<
" **************** " << std::endl;
291 m_i_run_number = irun;
292 m_i_tag = the_config_tag;
293 m_i_version = the_config_version;
294 std::cout <<
" the tag/version is the same -> no transfer needed " << std::endl;
295 std::cout <<
" **************** " << std::endl;
296 writeFile(
"last_tpg_badXT_settings.txt");
304 edm::LogInfo(
"EcalTPGBadXTHandler") <<
"Ecal - > end of getNewObjects -----------";
316 inpFile = fopen(inputFile,
"r");
324 std::ostringstream
str;
326 fgets(line, 255, inpFile);
327 m_i_tag = to_string(line);
328 str <<
"gen tag " << m_i_tag << std::endl;
330 fgets(line, 255, inpFile);
331 m_i_version = atoi(line);
332 str <<
"version= " << m_i_version << std::endl;
334 fgets(line, 255, inpFile);
335 m_i_run_number = atoi(line);
336 str <<
"run_number= " << m_i_run_number << std::endl;
338 fgets(line, 255, inpFile);
339 m_i_badXT = atoi(line);
340 str <<
"badXT_config= " << m_i_badXT << std::endl;
348 std::ofstream myfile;
349 myfile.open(inputFile);
350 myfile << m_i_tag << std::endl;
351 myfile << m_i_version << std::endl;
352 myfile << m_i_run_number << std::endl;
353 myfile << m_i_badXT << std::endl;
380 EEDetId eedetidneg(iX, iY, -1);
void setRunTypeDef(const RunTypeDef &runTypeDef)
std::vector< RunIOV > getRuns()
static const int MIN_IPHI
void writeFile(const char *inputFile)
std::string getConfigTag() const
void getNewObjects() override
constexpr uint32_t rawId() const
get the raw id
Log< level::Error, false > LogError
void readFromFile(CaloCluster &c, FILE *file)
static bool validDetId(int i, int j)
check if a valid index combination
void setValue(const uint32_t id, const Item &item)
EcalTPGCrystalStatusMap EcalTPGCrystalStatus
void setLocationDef(const LocationDef &locDef)
EcalTPGCrystalStatus * produceEcalTrgChannelStatus()
EcalTPGBadXTHandler(edm::ParameterSet const &)
Log< level::Info, false > LogInfo
static const int MAX_IPHI
void setRunType(std::string runtype)
static bool validDetId(int crystal_ix, int crystal_iy, int iz)
T getParameter(std::string const &) const
static const int MAX_IETA
static std::vector< std::string > checklist dat
~EcalTPGBadXTHandler() override
void setConfigTag(std::string x)
std::string m_locationsource
void setLocation(std::string loc)
void setGeneralTag(std::string tag)
static const int SMCRYSTALMODE
void readFromFile(const char *inputFile)