00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #include "CaloOnlineTools/HcalOnlineDb/interface/XMLHTRPatternLoader.h"
00018 #include "CalibCalorimetry/HcalTPGAlgos/interface/XMLProcessor.h"
00019 #include <cstdio>
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 XMLHTRPatternLoader::loaderBaseConfig::_loaderBaseConfig() : XMLProcessor::loaderBaseConfig()
00033 {
00034 extention_table_name = "HCAL_HTR_DATA_PATTERNS";
00035 name = "HCAL HRT data patterns";
00036 run_mode = "no-run";
00037 data_set_id = "-1";
00038 iov_id = "1";
00039 iov_begin = "0";
00040 iov_end = "1";
00041 tag_id = "2";
00042 tag_mode = "auto";
00043 tag_name = "HTR data pattern test";
00044 detector_name = "HCAL";
00045 comment_description = "empty comment, by kukarzev";
00046 }
00047
00048 XMLHTRPatternLoader::datasetDBConfig::_datasetDBConfig() : XMLProcessor::DBConfig()
00049 {
00050 kind_of_part = "HCAL HTR Crate";
00051 name_label = "CRATE17";
00052 htr_data_patterns_data_file = "testHTRPatterns_17.xml";
00053 crate = 17;
00054 }
00055
00056 XMLHTRPatternLoader::checksumsDBConfig::_checksumsDBConfig() : XMLProcessor::DBConfig()
00057 {
00058 comment_description = "checksum for all crates version test:2";
00059 name_label = "CMS-HCAL-ROOT";
00060 htr_data_patterns_data_file = "./testHTRPattern_checksums.xml";
00061 crate = -1;
00062 }
00063
00064 XMLHTRPatternLoader::XMLHTRPatternLoader()
00065 {
00066 }
00067
00068 XMLHTRPatternLoader::XMLHTRPatternLoader( XMLProcessor::loaderBaseConfig * config, std::string templateBase ) : XMLDOMBlock( templateBase )
00069 {
00070 setTagValue( "EXTENSION_TABLE_NAME", config -> extention_table_name );
00071 setTagValue( "NAME", config -> name );
00072 setTagAttribute( "RUN", "mode", config -> run_mode );
00073 setTagAttribute( "DATA_SET", "id", config -> data_set_id );
00074 setTagAttribute( "IOV", "id", config -> iov_id );
00075 setTagValue( "INTERVAL_OF_VALIDITY_BEGIN", config -> iov_begin );
00076 setTagValue( "INTERVAL_OF_VALIDITY_END", config -> iov_end );
00077 setTagAttribute( "TAG", "id", config -> tag_id );
00078 setTagAttribute( "TAG", "mode", config -> tag_mode );
00079 setTagValue( "TAG_NAME", config -> tag_name );
00080 setTagValue( "DETECTOR_NAME", config -> detector_name );
00081 setTagValue( "COMMENT_DESCRIPTION", config -> comment_description );
00082
00083 setTagAttribute( "TAG", "idref", config -> tag_id, 1 );
00084 setTagAttribute( "IOV", "idref", config -> iov_id, 1 );
00085 setTagAttribute( "DATA_SET", "idref", config -> data_set_id, 1 );
00086 }
00087
00088
00089
00090
00091
00092
00093 XMLHTRPatternLoader::~XMLHTRPatternLoader()
00094 {
00095 }
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112 int XMLHTRPatternLoader::addPattern( datasetDBConfig * config, std::string templateFileName )
00113 {
00114 DOMElement * root = document -> getDocumentElement();
00115
00116 XMLDOMBlock dataSetDoc( templateFileName );
00117 DOMDocument * dataSet = dataSetDoc . getDocument();
00118
00119
00120 setTagValue( "VERSION", config -> version, 0, dataSet );
00121 setTagValue( "SUBVERSION", config -> subversion, 0, dataSet );
00122 char timebuf[50];
00123
00124 strftime( timebuf, 50, "%Y-%m-%d %H:%M:%S.0", gmtime( &(config -> create_timestamp) ) );
00125 setTagValue( "CREATE_TIMESTAMP", timebuf , 0, dataSet );
00126 setTagValue( "CREATED_BY_USER", config -> created_by_user, 0, dataSet );
00127 setTagValue( "KIND_OF_PART", config -> kind_of_part, 0, dataSet );
00128 setTagValue( "NAME_LABEL", config -> name_label, 0, dataSet );
00129 setTagValue( "HTR_DATA_PATTERNS_DATA_FILE", config -> htr_data_patterns_data_file, 0, dataSet );
00130 setTagValue( "CRATE", config -> crate, 0, dataSet );
00131
00132
00133 DOMNode * cloneDataSet = document -> importNode( dataSet -> getDocumentElement(), true );
00134 root -> appendChild( cloneDataSet );
00135
00136 return 0;
00137 }
00138
00139 int XMLHTRPatternLoader::addChecksums( checksumsDBConfig * config, std::string templateFileName )
00140 {
00141 DOMElement * root = document -> getDocumentElement();
00142
00143 XMLDOMBlock dataSetDoc( templateFileName );
00144 DOMDocument * dataSet = dataSetDoc . getDocument();
00145
00146
00147 setTagValue( "VERSION", config -> version, 0, dataSet );
00148 setTagValue( "SUBVERSION", config -> subversion, 0, dataSet );
00149 char timebuf[50];
00150
00151 strftime( timebuf, 50, "%Y-%m-%d %H:%M:%S.0", gmtime( &(config -> create_timestamp) ) );
00152 setTagValue( "CREATE_TIMESTAMP", timebuf , 0, dataSet );
00153 setTagValue( "CREATED_BY_USER", config -> created_by_user, 0, dataSet );
00154 setTagValue( "COMMENT_DESCRIPTION", config -> comment_description, 0, dataSet );
00155 setTagValue( "NAME_LABEL", config -> name_label, 0, dataSet );
00156 setTagValue( "HTR_DATA_PATTERNS_DATA_FILE", config -> htr_data_patterns_data_file, 0, dataSet );
00157 setTagValue( "CRATE", config -> crate, 0, dataSet );
00158
00159
00160 DOMNode * cloneDataSet = document -> importNode( dataSet -> getDocumentElement(), true );
00161 root -> appendChild( cloneDataSet );
00162
00163 return 0;
00164 }
00165
00166 int XMLHTRPatternLoader::createLoader( std::vector<int> crate_number, std::vector<std::string> file_name )
00167 {
00168 XMLHTRPatternLoader::datasetDBConfig conf;
00169
00170 for ( std::vector<std::string>::const_iterator _file = file_name . begin(); _file != file_name . end(); _file++ )
00171 {
00172 conf . htr_data_patterns_data_file = *_file;
00173 conf . htr_data_patterns_data_file += ".dat";
00174 conf . crate = crate_number[ _file - file_name . begin() ];
00175
00176 char _buf[128];
00177 sprintf( _buf, "CRATE%.2d", conf . crate );
00178 std::string _namelabel;
00179 _namelabel . append( _buf );
00180 conf . name_label = _namelabel;
00181 addPattern( &conf );
00182 }
00183
00184 write( "HTRPatternLoader.xml" );
00185
00186 return 0;
00187 }
00188
00189
00190
00191
00192
00193
00194
00195