File indexing completed on 2024-04-06 11:59:28
0001 #include "Geometry/Records/interface/IdealGeometryRecord.h"
0002 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0003 #include "Geometry/Records/interface/IdealGeometryRecord.h"
0004 #include "Geometry/CaloGeometry/interface/CaloCellGeometry.h"
0005 #include "Geometry/CaloGeometry/interface/CaloGeometry.h"
0006 #include "Geometry/CaloGeometry/interface/CaloSubdetectorGeometry.h"
0007 #include "CondFormats/DataRecord/interface/EcalIntercalibConstantsRcd.h"
0008 #include "Calibration/Tools/interface/calibXMLwriter.h"
0009 #include "CalibCalorimetry/CaloMiscalibTools/interface/CaloMiscalibTools.h"
0010 #include "CalibCalorimetry/CaloMiscalibTools/interface/CaloMiscalibMapEcal.h"
0011 #include "CalibCalorimetry/CaloMiscalibTools/interface/MiscalibReaderFromXMLEcalBarrel.h"
0012 #include "CalibCalorimetry/CaloMiscalibTools/interface/MiscalibReaderFromXMLEcalEndcap.h"
0013 #include "CondFormats/EcalObjects/interface/EcalIntercalibConstants.h"
0014 #include "FWCore/Framework/interface/EventSetup.h"
0015 #include "FWCore/Framework/interface/ESHandle.h"
0016
0017
0018 #include "Calibration/Tools/bin/trivialParser.h"
0019
0020 #include "TH2.h"
0021 #include "TH1.h"
0022 #include "TFile.h"
0023
0024 #include <sstream>
0025 #include <string>
0026
0027 inline int etaShifter(const int etaOld) {
0028 if (etaOld < 0)
0029 return etaOld + 85;
0030 else if (etaOld > 0)
0031 return etaOld + 84;
0032 assert(false);
0033 }
0034
0035
0036
0037 int main(int argc, char* argv[]) {
0038 std::cout << "parsing cfg file: " << argv[1] << std::endl;
0039 trivialParser configParams(static_cast<std::string>(argv[1]));
0040
0041 int IMAEBetaStart = static_cast<int>(configParams.getVal("IMAEBetaStart"));
0042 int IMAEBetaEnd = static_cast<int>(configParams.getVal("IMAEBetaEnd"));
0043 int IMAEBetaWidth = static_cast<int>(configParams.getVal("IMAEBetaWidth"));
0044 int IMAEBphiStart = static_cast<int>(configParams.getVal("IMAEBphiStart"));
0045 int IMAEBphiEnd = static_cast<int>(configParams.getVal("IMAEBphiEnd"));
0046
0047
0048
0049
0050
0051
0052
0053
0054 std::string coeffFolder = argv[2];
0055
0056 std::map<int, EcalIntercalibConstantMap> recalibrators;
0057
0058
0059 int alreadySwitched = 0;
0060
0061 for (int etaIndex = IMAEBetaStart; etaIndex < IMAEBetaEnd; etaIndex += IMAEBetaWidth) {
0062 int currentIndex = etaIndex;
0063 int nextIndex = etaIndex + IMAEBetaWidth;
0064
0065
0066 if ((alreadySwitched == 0) && (nextIndex * IMAEBetaStart <= 0)) {
0067 nextIndex += 1;
0068 etaIndex += 1;
0069 alreadySwitched = 1;
0070 }
0071
0072
0073
0074
0075
0076
0077
0078
0079
0080
0081
0082
0083 std::stringstream nomeFile;
0084 nomeFile << coeffFolder << "/EBcalibCoeff_" << currentIndex << "-" << nextIndex << ".xml";
0085 std::string fileName = nomeFile.str();
0086
0087
0088
0089 CaloMiscalibMapEcal map;
0090 map.prefillMap();
0091 MiscalibReaderFromXMLEcalBarrel barrelreader(map);
0092 if (!fileName.empty())
0093 barrelreader.parseXMLMiscalibFile(fileName);
0094 EcalIntercalibConstants* constants = new EcalIntercalibConstants(map.get());
0095 recalibrators[currentIndex] = constants->getMap();
0096 }
0097
0098
0099
0100
0101 calibXMLwriter barrelWriter(EcalBarrel);
0102
0103 for (std::map<int, EcalIntercalibConstantMap>::const_iterator itMap = recalibrators.begin();
0104 itMap != recalibrators.end();
0105 ++itMap) {
0106
0107
0108
0109
0110
0111
0112
0113
0114
0115
0116
0117
0118 int etaStop = itMap->first + IMAEBetaWidth;
0119 if (etaStop * itMap->first <= 0)
0120 ++etaStop;
0121 for (int ieta = itMap->first; ieta < etaStop; ++ieta)
0122
0123 for (int iphi = IMAEBphiStart; iphi < IMAEBphiEnd; ++iphi) {
0124 if (!EBDetId::validDetId(ieta, iphi)) {
0125 std::cerr << "[WARN] elemento " << ieta << " " << iphi << " scartato" << std::endl;
0126 continue;
0127 }
0128 EBDetId det = EBDetId(ieta, iphi, EBDetId::ETAPHIMODE);
0129 std::cerr << "[INFO] writing " << ieta << " " << iphi << " " << (*itMap->second.find(det.rawId())) << std::endl;
0130 barrelWriter.writeLine(det, *(itMap->second.find(det.rawId())));
0131 }
0132 }
0133
0134
0135
0136
0137
0138
0139
0140
0141
0142
0143
0144
0145
0146 }