File indexing completed on 2025-12-18 09:14:30
0001 #include <cdbobjects/CDBTTree.h>
0002 #include <calobase/TowerInfoDefs.h>
0003 #include <iostream>
0004 #include <fstream>
0005 #include <sstream>
0006
0007 R__LOAD_LIBRARY(libcdbobjects.so)
0008 R__LOAD_LIBRARY(libcalo_io.so)
0009
0010 void form_CDBTree(std::string CDB_name, std::string fieldname, float calibration_factor[24][64]) {
0011 CDBTTree* cdbttree = new CDBTTree(CDB_name);
0012 std::string m_fieldname = fieldname;
0013 for (int ieta = 0; ieta < 24; ++ieta) {
0014 for (int iphi = 0; iphi < 64; ++iphi) {
0015 unsigned int key = TowerInfoDefs::encode_hcal(ieta, iphi);
0016 cdbttree->SetFloatValue(key, fieldname, calibration_factor[ieta][iphi]);
0017 }
0018 }
0019 cdbttree->Commit();
0020 cdbttree->WriteCDBTTree();
0021 delete cdbttree;
0022 }
0023
0024 void get_CDBTree(int min_run, int max_run) {
0025 std::ifstream ohcal_datafile("output/ohcal_calibfactor_" + std::to_string(min_run) + "_" + std::to_string(max_run) + ".txt");
0026 if (!ohcal_datafile.is_open()) {
0027 std::cerr << "Error opening file for ohcal_calibfactor.txt" << std::endl;
0028 return;
0029 }
0030 std::string line;
0031 int ieta, iphi;
0032 float calib;
0033 float ohcal_calibfactor[24][64];
0034 while (std::getline(ohcal_datafile, line)) {
0035 std::istringstream iss(line);
0036 iss >> ieta >> iphi >> calib;
0037 ohcal_calibfactor[ieta][iphi] = calib;
0038 }
0039 ohcal_datafile.close();
0040 form_CDBTree("output/ohcal_CDBTTree_" + std::to_string(min_run) + "_" + std::to_string(max_run) + ".root", "HCALOUT_calib_ADC_to_ETower", ohcal_calibfactor);
0041
0042 std::ifstream ihcal_datafile("output/ihcal_calibfactor_" + std::to_string(min_run) + "_" + std::to_string(max_run) + ".txt");
0043 if (!ihcal_datafile.is_open()) {
0044 std::cerr << "Error opening file for ihcal_calibfactor.txt " << std::endl;
0045 return;
0046 }
0047 float ihcal_calibfactor[24][64];
0048 while (std::getline(ihcal_datafile, line)) {
0049 std::istringstream iss(line);
0050 iss >> ieta >> iphi >> calib;
0051 ihcal_calibfactor[ieta][iphi] = calib;
0052 }
0053 ihcal_datafile.close();
0054 form_CDBTree("output/ihcal_CDBTTree_" + std::to_string(min_run) + "_" + std::to_string(max_run) + ".root", "HCALIN_calib_ADC_to_ETower", ihcal_calibfactor);
0055 }