CMS 3D CMS Logo

Functions
hcalLUT.cc File Reference
#include <iostream>
#include <stdexcept>
#include <sstream>
#include "TString.h"
#include "PhysicsTools/FWLite/interface/CommandLineParser.h"
#include "CaloOnlineTools/HcalOnlineDb/interface/HcalLutManager.h"

Go to the source code of this file.

Functions

void dumpLutDiff (LutXml &xmls1, LutXml &xmls2, bool testFormat=true, int detail=0)
 
int main (int argc, char **argv)
 
void mergeLUTs (const char *flist, const char *out)
 

Function Documentation

void dumpLutDiff ( LutXml xmls1,
LutXml xmls2,
bool  testFormat = true,
int  detail = 0 
)

Definition at line 21 of file hcalLUT.cc.

References gather_cfg::cout, edmIntegrityCheck::d, runTauDisplay::dtype, LutXml::end(), LutXml::find(), mps_fire::i, triggerObjects_cff::id, funct::m, match(), gen::n, or, findQualityFiles::size, pileupDistInMC::total, findQualityFiles::v, globals_cff::x1, and globals_cff::x2.

Referenced by main().

21  {
22  const int ndet=5;
23  const char* DET[ndet]={"HB", "HE", "HO", "HF", "HT"};
24  const int dtype[ndet]={0,1,2,3,4};
25 
26  const int nvar=4;
27  enum vtype {total, extra, zeros, match};
28 
29  std::array<int, nvar> n[ndet];
30 
31  for(auto &d: n){
32  for(auto &v: d){
33  v=0;
34  }
35  }
36 
37  for (auto &x1 : xmls1){
38  HcalGenericDetId id(x1.first);
39  auto x2 =xmls2.find(id.rawId());
40  auto subdet = id.genericSubdet();
41  if(subdet==0 or subdet==6) continue; //'empty' or 'other'
42 
43  auto &m= n[subdet-1];
44 
45  m[total]++;
46  if(x2==xmls2.end()){
47  m[extra]++;
48  if(testFormat) cout << "Extra detId: " << id << endl;
49  else continue;
50  }
51 
52  const auto& lut1 = x1.second;
53  size_t size=lut1.size();
54 
55  bool zero=true;
56  for(auto &i: lut1){
57  if(i>0) {
58  zero=false;
59  break;
60  }
61  }
62  if(zero) {
63  m[zeros]++;
64  if(detail==1 and testFormat){
65  cout << "Zero LUT: " << id << endl;
66  }
67  }
68 
69  if(testFormat) continue;
70 
71  const auto& lut2 = x2->second;
72  bool good= size==lut2.size();
73  for(size_t i=0; i<size and good; ++i){
74  if(lut1[i]!=lut2[i]) {
75  good=false;
76  if(detail==2){
77  cout << Form("Mismatach in index=%3d, %4d!=%4d, ", int(i), lut1[i], lut2[i]) << id << endl;
78  }
79  }
80  }
81  if(good) m[match]++;
82  }
83 
84  if(testFormat){
85  cout << Form("%3s: %8s %8s %8s", "Det", "total", "zeroes", "extra") << endl;
86  for(auto i: dtype) cout << Form("%3s: %8d %8d %8d", DET[i], n[i][total], n[i][zeros], n[i][extra]) << endl;
87  cout << "--------------------------------------------" << endl;
88  }
89  else{
90  bool good=true;
91  for(auto &d: n){
92  if(d[total]!=d[match]){
93  good=false;
94  }
95  }
96  cout << Form("%3s: %8s %8s %8s", "Det", "total", "match", "mismatch") << endl;
97  for(auto i: dtype) cout << Form("%3s: %8d %8d %8d", DET[i], n[i][total], n[i][match], n[i][total]-n[i][match]) << endl;
98  cout << "--------------------------------------------" << endl;
99  cout << (good?"PASS!":"FAIL!") << endl;
100  }
101 }
size
Write out results.
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
const_iterator find(uint32_t) const
Definition: LutXml.cc:480
std::pair< typename Association::data_type::first_type, double > match(Reference key, Association association, bool bestMatchByMaxValue)
Generic matching function.
Definition: Utils.h:10
const_iterator end() const
Definition: LutXml.cc:476
int main ( int  argc,
char **  argv 
)

Definition at line 103 of file hcalLUT.cc.

References MessageLogger_cfi::cerr, gather_cfg::cout, HcalLutManager::create_lut_loader(), LutXml::create_lut_map(), dumpLutDiff(), haddnano::files, optutl::VariableMapCont::integerValue(), mergeLUTs(), optutl::CommandLineParser::parseArguments(), writedatasetfile::parser, AlCaHLTBitMon_QueryRunRegistry::string, optutl::VariableMapCont::stringValue(), and optutl::VariableMapCont::stringVector().

103  {
104 
105  optutl::CommandLineParser parser("runTestParameters");
106  parser.parseArguments (argc, argv, true);
107  if(argc<2){
108  std::cerr << "runTest: missing input command" << std::endl;
109  }
110  else if(strcmp(argv[1],"merge")==0){
111  std::string flist_ = parser.stringValue("storePrepend");
112  std::string out_ = parser.stringValue("outputFile");
113  mergeLUTs(flist_.c_str(), out_.c_str());
114  }
115  else if (strcmp(argv[1],"diff")==0){
116 
117  auto files = parser.stringVector("inputFiles");
118  auto detail = parser.integerValue("section");
119 
120  LutXml xmls1(edm::FileInPath(files[0]).fullPath());
121  LutXml xmls2(edm::FileInPath(files[1]).fullPath());
122 
123  xmls1.create_lut_map();
124  xmls2.create_lut_map();
125 
126  cout << files[0] << endl;
127  dumpLutDiff(xmls1, xmls2, true, detail);
128 
129  cout << files[1] << endl;
130  dumpLutDiff(xmls2, xmls1, true, detail);
131 
132  cout << "Comparison" << endl;
133  dumpLutDiff(xmls1, xmls2, false, detail);
134  }
135  else if (strcmp(argv[1],"create-lut-loader")==0){
136  std::string _file_list = parser.stringValue("outputFile");
137  std::string _tag = parser.stringValue("tag");
138  std::string _comment = parser.stringValue("storePrepend");
139  const std::string& _prefix = _tag;
140  std::string _version = "1";
141  int _subversion = 0;
142  HcalLutManager manager;
143  manager.create_lut_loader( _file_list, _prefix, _tag, _comment, _tag, _subversion);
144  }
145  else {
146  throw std::invalid_argument( Form("Unknown command: %s", argv[1]) );
147  }
148 
149  return 0;
150 }
Definition: LutXml.h:27
Various manipulations with trigger Lookup Tables.
int create_lut_loader(std::string file_list, std::string _prefix, std::string tag_name, std::string comment="default comment", std::string version="V00-01-01", int subversion=1)
void dumpLutDiff(LutXml &xmls1, LutXml &xmls2, bool testFormat=true, int detail=0)
Definition: hcalLUT.cc:21
void mergeLUTs(const char *flist, const char *out)
Definition: hcalLUT.cc:10
void mergeLUTs ( const char *  flist,
const char *  out 
)

Definition at line 10 of file hcalLUT.cc.

References FrontierConditions_GlobalTag_cff::file, and XMLDOMBlock::write().

Referenced by main().

10  {
11  LutXml xmls;
12  stringstream ss(flist);
13  while (ss.good()){
14  string file;
15  ss >> file;
16  xmls += LutXml(file);
17  }
18  xmls.write(out);
19 }
Definition: LutXml.h:27
int write(std::string target="stdout")
Definition: XMLDOMBlock.cc:322