Back to home page

Project CMSSW displayed by LXR

 
 

    


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 #include "Calibration/Tools/interface/matrixSaver.h"
0017 #include "Calibration/Tools/interface/BlockSolver.h"
0018 
0019 //#include "Calibration/EcalAlCaRecoProducers/interface/trivialParser.h"

0020 //#include "Calibration/EcalAlCaRecoProducers/bin/trivialParser.h"

0021 
0022 #include "TH2.h"
0023 #include "TProfile.h"
0024 #include "TH1.h"
0025 #include "TFile.h"
0026 
0027 #include "CLHEP/Matrix/GenMatrix.h"
0028 #include "CLHEP/Matrix/Matrix.h"
0029 #include "CLHEP/Matrix/Vector.h"
0030 
0031 #define PI_GRECO 3.14159265
0032 
0033 inline int etaShifter(const int etaOld) {
0034   if (etaOld < 0)
0035     return etaOld + 85;
0036   else if (etaOld > 0)
0037     return etaOld + 84;
0038   assert(false);
0039 }
0040 
0041 // ------------------------------------------------------------------------

0042 
0043 int main(int argc, char *argv[]) {
0044   if (argc < 3)
0045     return 1;
0046   std::string chi2MtrFile = argv[0];
0047   std::string chi2VtrFile = argv[1];
0048   std::string cfgFile = argv[2];
0049 
0050   matrixSaver leggo;
0051 
0052   CLHEP::HepMatrix *chi2Mtr = dynamic_cast<CLHEP::HepMatrix *>(leggo.getMatrix(chi2MtrFile));
0053   CLHEP::HepVector *chi2Vtr = dynamic_cast<CLHEP::HepVector *>(leggo.getMatrix(chi2VtrFile));
0054 
0055   double min = 0.5;               //FIXME

0056   double max = 1.5;               //FIXME

0057   bool usingBlockSolver = false;  //FIXME

0058   int region = 0;                 //FIXME

0059 
0060   CLHEP::HepVector result = CLHEP::solve(*chi2Mtr, *chi2Vtr);
0061   if (result.normsq() < min * chi2Mtr->num_row() || result.normsq() > max * chi2Mtr->num_row()) {
0062     if (usingBlockSolver) {
0063       edm::LogWarning("IML") << "using  blocSlover " << std::endl;
0064       BlockSolver()(*chi2Mtr, *chi2Vtr, result);
0065     } else {
0066       edm::LogWarning("IML") << "coeff out of range " << std::endl;
0067       for (int i = 0; i < chi2Vtr->num_row(); ++i)
0068         result[i] = 1.;
0069     }
0070   }
0071 
0072   unsigned int numberOfElements = chi2Mtr->num_row();
0073   std::map<unsigned int, float> coefficients;
0074   for (unsigned int i = 0; i < numberOfElements; ++i)
0075     coefficients[i] = result[i];
0076 
0077   if (region == 0)  //PG EB

0078   {
0079     //      int index =

0080 
0081   } else if (region == -1)  //PG EB-

0082   {
0083   } else  //PG EB+

0084   {
0085   }
0086 
0087   //FIXME salva la mappa

0088   return 0;
0089 }