File indexing completed on 2023-03-17 10:48:10
0001 #include "CondTools/Ecal/interface/EcalTPGPedfromFile.h"
0002 #include "CondTools/Ecal/interface/EcalTPGPedestalsHandler.h"
0003 #include "OnlineDB/EcalCondDB/interface/EcalLogicID.h"
0004 #include "OnlineDB/EcalCondDB/interface/LMFSextuple.h"
0005 #include "FWCore/ParameterSet/interface/ParameterSetfwd.h"
0006 #include "CondCore/CondDB/interface/Time.h"
0007 #include "DataFormats/Provenance/interface/Timestamp.h"
0008 #include "OnlineDB/EcalCondDB/interface/Tm.h"
0009
0010 #include <iostream>
0011 #include <iomanip>
0012 #include <sstream>
0013
0014 popcon::EcalTPGPedfromFile::EcalTPGPedfromFile(const edm::ParameterSet& ps)
0015 : m_name(ps.getUntrackedParameter<std::string>("name", "EcalTPGPedfromFileHandler")) {
0016 std::cout << "EcalTPGPedfromFile constructor\n" << std::endl;
0017 }
0018
0019 popcon::EcalTPGPedfromFile::~EcalTPGPedfromFile() {
0020
0021 }
0022
0023 void popcon::EcalTPGPedfromFile::getNewObjects() {
0024 std::cout << "------- Ecal -> getNewObjects\n";
0025
0026 unsigned long long max_since = 1;
0027 Ref payload = lastPayload();
0028
0029
0030 max_since = tagInfo().lastInterval.since;
0031 Tm max_since_tm(max_since);
0032
0033 int fileIOV;
0034 std::cout << "PedfromFile which input IOV do you want " << std::endl;
0035 std::cin >> fileIOV;
0036 std::ifstream fLin;
0037 std::ostringstream oss;
0038 oss << fileIOV;
0039 std::string fname = "/afs/cern.ch/cms/ECAL/triggerTransp/TPG_beamv6_trans_" + oss.str() + "_spikekill.txt";
0040 fLin.open(fname.c_str());
0041 if (!fLin.is_open()) {
0042 std::cout << "ERROR : can't open file '" << fname << std::endl;
0043 return;
0044 }
0045 std::cout << " file " << fname << " opened" << std::endl;
0046 std::string line;
0047 for (int i = 0; i < 85; i++)
0048 getline(fLin, line);
0049 char cryst[10];
0050 uint32_t ped[kGains], mult[kGains], shift[kGains];
0051 uint32_t id;
0052 EcalTPGLinearizationConst* linC = new EcalTPGLinearizationConst;
0053 EcalTPGPedestals* peds = new EcalTPGPedestals;
0054 for (int iChannel = 0; iChannel < kEBChannels; iChannel++) {
0055 getline(fLin, line);
0056 sscanf(line.c_str(), "%s %u", cryst, &id);
0057 for (int gain = 0; gain < kGains; gain++) {
0058 getline(fLin, line);
0059 sscanf(line.c_str(), "%X %X %X", &ped[gain], &mult[gain], &shift[gain]);
0060 }
0061 EcalTPGLinearizationConst::Item item;
0062 item.mult_x1 = mult[2];
0063 item.mult_x6 = mult[1];
0064 item.mult_x12 = mult[0];
0065 item.shift_x1 = shift[2];
0066 item.shift_x6 = shift[1];
0067 item.shift_x12 = shift[0];
0068
0069 EcalTPGPedestals::Item itemPed;
0070 itemPed.mean_x1 = ped[2];
0071 itemPed.mean_x6 = ped[1];
0072 itemPed.mean_x12 = ped[0];
0073
0074 linC->insert(std::make_pair(id, item));
0075 peds->insert(std::make_pair(id, itemPed));
0076 }
0077 getline(fLin, line);
0078 std::cout << " comment line " << line << std::endl;
0079 for (int iChannel = 0; iChannel < kEEChannels; iChannel++) {
0080 getline(fLin, line);
0081
0082 sscanf(line.c_str(), "%s %u", cryst, &id);
0083
0084 for (int gain = 0; gain < kGains; gain++) {
0085 getline(fLin, line);
0086
0087 sscanf(line.c_str(), "%X %X %X", &ped[gain], &mult[gain], &shift[gain]);
0088
0089 }
0090 EcalTPGLinearizationConst::Item item;
0091 item.mult_x1 = mult[2];
0092 item.mult_x6 = mult[1];
0093 item.mult_x12 = mult[0];
0094 item.shift_x1 = shift[2];
0095 item.shift_x6 = shift[1];
0096 item.shift_x12 = shift[0];
0097
0098 EcalTPGPedestals::Item itemPed;
0099 itemPed.mean_x1 = ped[2];
0100 itemPed.mean_x6 = ped[1];
0101 itemPed.mean_x12 = ped[0];
0102
0103 linC->insert(std::make_pair(id, item));
0104 peds->insert(std::make_pair(id, itemPed));
0105 }
0106 fLin.close();
0107
0108
0109 m_to_transfer.push_back(std::make_pair(peds, fileIOV));
0110
0111 std::cout << "Ecal -> end of getNewObjects -----------\n";
0112 }