CMS 3D CMS Logo

HcalLutManager.h
Go to the documentation of this file.
1 #ifndef HcalLutManager_h
2 #define HcalLutManager_h
3 
12 #include <iostream>
13 #include <string>
14 #include <vector>
15 #include <map>
28 
29 class XMLDOMBlock;
30 
31 class HcalLutSet {
32 public:
34  std::vector<std::string> subdet;
36  std::vector<std::vector<unsigned int> > lut;
37 };
38 
40 public:
42  HcalLutManager(std::vector<HcalGenericDetId>& map);
44  const HcalChannelQuality* _cq = nullptr,
45  uint32_t _status_word_to_mask = 0x0000);
46 
47  HcalLutManager(const HcalDbService* conditions,
48  const HcalChannelQuality* _cq = nullptr,
49  uint32_t _status_word_to_mask = 0x0000);
50 
51  ~HcalLutManager();
52 
53  void init(void);
54  std::string& getLutXml(std::vector<unsigned int>& _lut);
55 
56  // crate=-1 stands for all crates
57  // legacy - use old LMAP. Use the xxxEmap method instead
58  std::map<int, std::shared_ptr<LutXml> > getLutXmlFromAsciiMaster(std::string _filename,
59  std::string _tag,
60  int _crate = -1,
61  bool split_by_crate = true);
62 
63  std::map<int, std::shared_ptr<LutXml> > getLinearizationLutXmlFromAsciiMasterEmap(std::string _filename,
64  std::string _tag,
65  int _crate,
66  bool split_by_crate = true);
67 
68  std::map<int, std::shared_ptr<LutXml> > getLinearizationLutXmlFromAsciiMasterEmap_new(std::string _filename,
69  std::string _tag,
70  int _crate,
71  bool split_by_crate = true);
72 
73  std::map<int, std::shared_ptr<LutXml> > getCompressionLutXmlFromAsciiMaster(std::string _filename,
74  std::string _tag,
75  int _crate = -1,
76  bool split_by_crate = true);
77 
78  std::map<int, std::shared_ptr<LutXml> > getLinearizationLutXmlFromCoder(const HcalTPGCoder& _coder,
79  std::string _tag,
80  bool split_by_crate = true);
81 
82  std::map<int, std::shared_ptr<LutXml> > getMasks(int var, std::string _tag, bool split_by_crate = true);
83 
84  std::map<int, std::shared_ptr<LutXml> > getLinearizationLutXmlFromCoderEmap(const HcalTPGCoder& _coder,
85  std::string _tag,
86  bool split_by_crate = true);
87 
88  std::map<int, std::shared_ptr<LutXml> > getCompressionLutXmlFromCoder(std::string _tag, bool split_by_crate = true);
89 
90  std::map<int, std::shared_ptr<LutXml> > getCompressionLutXmlFromCoder(const CaloTPGTranscoderULUT& _coder,
91  std::string _tag,
92  bool split_by_crate = true);
93 
94  std::map<int, std::shared_ptr<LutXml> > getZdcLutXml(std::string _tag, bool split_by_crate = true);
95 
96  std::map<int, std::shared_ptr<LutXml> > getHEFineGrainLUTs(std::string _tag, bool split_by_crate = true);
97 
98  // add two std::map<s with LUTs. Designed mainly for joining compression LUTs to linearization ones.
99  void addLutMap(std::map<int, std::shared_ptr<LutXml> >& result, const std::map<int, std::shared_ptr<LutXml> >& other);
100 
101  // read LUTs from ASCII master file.
102  HcalLutSet getLutSetFromFile(std::string _filename, int _type = 1); // _type = 1 - linearization, 2 - compression
103 
104  int writeLutXmlFiles(std::map<int, std::shared_ptr<LutXml> >& _xml,
105  std::string _tag = "default_tag",
106  bool split_by_crate = true);
107 
108  int createLinLutXmlFiles(std::string _tag, std::string _lin_file, bool split_by_crate = true);
109  int createCompLutXmlFilesFromCoder(std::string _tag, bool split_by_crate = true);
110  int createAllLutXmlFiles(std::string _tag, std::string _lin_file, std::string _comp_file, bool split_by_crate = true);
111  int createAllLutXmlFilesFromCoder(const HcalTPGCoder& _coder, std::string _tag, bool split_by_crate = true);
112  int createLutXmlFiles_HBEFFromCoder_HOFromAscii(std::string _tag,
113  const HcalTPGCoder& _coder,
114  std::string _lin_file,
115  bool split_by_crate = true);
116  int createLutXmlFiles_HBEFFromCoder_HOFromAscii(std::string _tag,
117  const HcalTPGCoder& _coder,
118  const CaloTPGTranscoderULUT& _transcoder,
119  std::string _lin_file,
120  bool split_by_crate = true);
121 
122  int createLutXmlFiles_HBEFFromCoder_HOFromAscii_ZDC(std::string _tag,
123  const HcalTPGCoder& _coder,
124  const CaloTPGTranscoderULUT& _transcoder,
125  std::string _lin_file,
126  bool split_by_crate = true);
127 
128  int createAllLutXmlFilesLinAsciiCompCoder(std::string _tag, std::string _lin_file, bool split_by_crate = true);
129 
130  // tests
131  // reading LUTs from a local XML
132  int test_xml_access(std::string _tag, std::string _filename);
133  int test_direct_xml_parsing(std::string _filename);
134  void test_emap(void);
135 
136  // connect to local XML file with LUTs and local ASCII file with LMAP
137  // connection interface through protected members db and lmap
138  int read_lmap(std::string lmap_hbef_file, std::string lmap_ho_file);
139  int read_luts(std::string lut_xml_file);
140  int local_connect(std::string lut_xml_file, std::string lmap_hbef_file, std::string lmap_ho_file);
141 
142  // hcal::ConfigurationDatabase::LinearizerLUT
143  // hcal::ConfigurationDatabase::CompressionLUT
144  std::vector<unsigned int> getLutFromXml_old(std::string tag,
145  uint32_t _rawid,
146  hcal::ConfigurationDatabase::LUTType _lt);
147  std::vector<unsigned int> getLutFromXml(std::string tag, uint32_t _rawid, hcal::ConfigurationDatabase::LUTType _lt);
148 
149  std::map<int, std::shared_ptr<LutXml> > get_brickSet_from_oracle(
150  std::string tag,
151  const std::string _accessor =
152  "occi://CMS_HCL_PRTTYPE_HCAL_READER@anyhost/int2r?PASSWORD=HCAL_Reader_88,LHWM_VERSION=22");
153 
154  int get_xml_files_from_db(
155  std::string tag,
156  const std::string db_accessor =
157  "occi://CMS_HCL_PRTTYPE_HCAL_READER@anyhost/int2r?PASSWORD=HCAL_Reader_88,LHWM_VERSION=22",
158  bool split_by_crate = true);
159 
160  int create_lut_loader(std::string file_list,
161  std::string _prefix,
162  std::string tag_name,
163  std::string comment = "default comment",
164  std::string version = "V00-01-01",
165  int subversion = 1);
166 
167  // get md5 checksums for LUTs
168  std::string get_checksum(std::vector<unsigned int>& lut);
169 
170  static int getInt(std::string number);
171  static HcalSubdetector get_subdetector(std::string _subdet);
172  static std::string get_time_stamp(time_t _time);
173 
174  // gives the iterator a list of channels
175  int initChannelIterator(std::vector<HcalGenericDetId>& map);
176 
177 protected:
188 };
189 
191 public:
192  static int getLutXml_test(std::vector<unsigned int>& _lut) { return 0; }
193 
194  static int getLutSetFromFile_test(std::string _filename);
195 
196  static int getInt_test(std::string number);
197 
198 protected:
200 };
201 
202 #endif
std::vector< std::vector< unsigned int > > lut
std::string label
Definition: LutXml.h:27
std::vector< int > phi_max
std::vector< std::string > subdet
static int getLutXml_test(std::vector< unsigned int > &_lut)
int init
Definition: HydjetWrapper.h:64
Various manipulations with trigger Lookup Tables.
std::vector< int > phi_min
std::vector< int > depth_max
int getInt(ResultSet *rset, int ipar)
HCALConfigDB * db
const HcalChannelQuality * cq
std::vector< int > depth_min
HcalSubdetector
Definition: HcalAssistant.h:31
HcalChannelIterator _iter
XMLDOMBlock * lut_checksums_xml
Gather config data from online DB.
Definition: HCALConfigDB.h:20
const HcalElectronicsMap * emap
HcalAssistant _ass
std::vector< int > eta_max
Definition: LMap.h:66
std::vector< int > eta_min
uint32_t status_word_to_mask
const HcalDbService * conditions
#define comment(par)
Definition: vmac.h:163