Back to home page

sPhenix code displayed by LXR

 
 

    


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 }