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>
16 #include <boost/shared_ptr.hpp>
21 //#include "CaloOnlineTools/HcalOnlineDb/interface/ConfigurationDatabaseImpl.hh"
28 
29 
30 
31 class XMLDOMBlock;
32 
33 class HcalLutSet{
34  public:
36  std::vector<std::string> subdet;
38  std::vector<std::vector<unsigned int> > lut;
39 };
40 
41 
42 
44  public:
45 
46  HcalLutManager( );
47  HcalLutManager(std::vector<HcalGenericDetId> & map);
48  HcalLutManager(const HcalElectronicsMap * _emap,
49  const HcalChannelQuality * _cq = 0,
50  uint32_t _status_word_to_mask = 0x0000);
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, boost::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, boost::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, boost::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, boost::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, boost::shared_ptr<LutXml> > getLinearizationLutXmlFromCoder( const HcalTPGCoder & _coder,
79  std::string _tag,
80  bool split_by_crate = true );
81 
82  std::map<int, boost::shared_ptr<LutXml> > getLinearizationLutXmlFromCoderEmap( const HcalTPGCoder & _coder,
83  std::string _tag,
84  bool split_by_crate = true );
85 
86  std::map<int, boost::shared_ptr<LutXml> > getCompressionLutXmlFromCoder( std::string _tag, bool split_by_crate = true );
87 
88  std::map<int, boost::shared_ptr<LutXml> > getCompressionLutXmlFromCoder( const CaloTPGTranscoderULUT & _coder,
89  std::string _tag,
90  bool split_by_crate = true );
91 
92  std::map<int, boost::shared_ptr<LutXml> > getZdcLutXml( std::string _tag,
93  bool split_by_crate = true );
94 
95  // add two std::map<s with LUTs. Designed mainly for joining compression LUTs to linearization ones.
96  void addLutMap(std::map<int,
97  boost::shared_ptr<LutXml> > & result,
98  const std::map<int,
99  boost::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, boost::shared_ptr<LutXml> > & _xml, std::string _tag = "default_tag", bool split_by_crate = true );
105 
106  int createLinLutXmlFiles( std::string _tag, std::string _lin_file, bool split_by_crate = true );
107  int createCompLutXmlFilesFromCoder( std::string _tag, bool split_by_crate = true );
108  int createAllLutXmlFiles( std::string _tag, std::string _lin_file, std::string _comp_file, bool split_by_crate = true );
109  int createAllLutXmlFilesFromCoder( const HcalTPGCoder & _coder, std::string _tag, bool split_by_crate = true );
110  int createLutXmlFiles_HBEFFromCoder_HOFromAscii( std::string _tag, const HcalTPGCoder & _coder, std::string _lin_file, bool split_by_crate = true );
111  int createLutXmlFiles_HBEFFromCoder_HOFromAscii( std::string _tag, const HcalTPGCoder & _coder, const CaloTPGTranscoderULUT & _transcoder, std::string _lin_file, bool split_by_crate = true );
112 
113  int createLutXmlFiles_HBEFFromCoder_HOFromAscii_ZDC( std::string _tag, const HcalTPGCoder & _coder, const CaloTPGTranscoderULUT & _transcoder, std::string _lin_file, bool split_by_crate = true );
114 
115  int createAllLutXmlFilesLinAsciiCompCoder( std::string _tag, std::string _lin_file, bool split_by_crate = true );
116 
117  // tests
118  // reading LUTs from a local XML
119  int test_xml_access( std::string _tag, std::string _filename );
120  int test_direct_xml_parsing( std::string _filename );
121  void test_emap(void);
122 
123  // connect to local XML file with LUTs and local ASCII file with LMAP
124  // connection interface through protected members db and lmap
125  int read_lmap( std::string lmap_hbef_file, std::string lmap_ho_file );
126  int read_luts( std::string lut_xml_file );
127  int local_connect( std::string lut_xml_file, std::string lmap_hbef_file, std::string lmap_ho_file );
128 
129  // hcal::ConfigurationDatabase::LinearizerLUT
130  // hcal::ConfigurationDatabase::CompressionLUT
131  std::vector<unsigned int> getLutFromXml_old( std::string tag, uint32_t _rawid, hcal::ConfigurationDatabase::LUTType _lt );
132  std::vector<unsigned int> getLutFromXml( std::string tag, uint32_t _rawid, hcal::ConfigurationDatabase::LUTType _lt );
133 
134  std::map<int, boost::shared_ptr<LutXml> > get_brickSet_from_oracle( std::string tag, const std::string _accessor = "occi://CMS_HCL_PRTTYPE_HCAL_READER@anyhost/int2r?PASSWORD=HCAL_Reader_88,LHWM_VERSION=22" );
135 
136  int get_xml_files_from_db( std::string tag, const std::string db_accessor = "occi://CMS_HCL_PRTTYPE_HCAL_READER@anyhost/int2r?PASSWORD=HCAL_Reader_88,LHWM_VERSION=22", bool split_by_crate = true );
137 
138  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 );
139 
140  // get md5 checksums for LUTs
141  std::string get_checksum( std::vector<unsigned int> & lut );
142 
143  static int getInt( std::string number );
144  static HcalSubdetector get_subdetector( std::string _subdet );
145  static std::string get_time_stamp( time_t _time );
146 
147  // gives the iterator a list of channels
148  int initChannelIterator(std::vector<HcalGenericDetId> & map);
149 
150  protected:
151 
161 };
162 
163 
165  public:
166 
167  static int getLutXml_test( std::vector<unsigned int> & _lut ){return 0;}
168 
169  static int getLutSetFromFile_test( std::string _filename );
170 
171  static int getInt_test( std::string number );
172 
173  protected:
175 };
176 
177 #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)
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:21
const HcalElectronicsMap * emap
HcalAssistant _ass
std::vector< int > eta_max
Definition: LMap.h:75
std::vector< int > eta_min
uint32_t status_word_to_mask
#define comment(par)
Definition: vmac.h:161