Macros

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
#include "Geometry/Records/interface/IdealGeometryRecord.h"
#include "Geometry/Records/interface/IdealGeometryRecord.h"
#include "Geometry/CaloGeometry/interface/CaloCellGeometry.h"
#include "Geometry/CaloGeometry/interface/CaloGeometry.h"
#include "Geometry/CaloGeometry/interface/CaloSubdetectorGeometry.h"
#include "CondFormats/DataRecord/interface/EcalIntercalibConstantsRcd.h"
#include "Calibration/Tools/interface/calibXMLwriter.h"
#include "CalibCalorimetry/CaloMiscalibTools/interface/CaloMiscalibTools.h"
#include "CalibCalorimetry/CaloMiscalibTools/interface/CaloMiscalibMapEcal.h"
#include "CalibCalorimetry/CaloMiscalibTools/interface/MiscalibReaderFromXMLEcalBarrel.h"
#include "CalibCalorimetry/CaloMiscalibTools/interface/MiscalibReaderFromXMLEcalEndcap.h"
#include "CondFormats/EcalObjects/interface/EcalIntercalibConstants.h"

#include "Calibration/Tools/bin/trivialParser.h"

#include "TH2.h"
#include "TH1.h"
#include "TFile.h"
#include "TROOT.h"
#include "TStyle.h"
#include "TCanvas.h"

#define PI_GRECO 3.14159265

int main(int argc, char* argv[]) {
  std::string fileName = argv[1];
  std::cerr << "parsing coeff file: " << fileName << std::endl;

  int EEradStart = 15;
  int EEradEnd = 50;
  int EEphiStart = 20;
  int EEphiEnd = 45;

  //PG open the XML file
  CaloMiscalibMapEcal map;
  map.prefillMap();
  MiscalibReaderFromXMLEcalEndcap endcapreader(map);
  if (!fileName.empty())
    endcapreader.parseXMLMiscalibFile(fileName);
  EcalIntercalibConstants* constants = new EcalIntercalibConstants(map.get());
  const EcalIntercalibConstantMap& imap = constants->getMap();

  TH1F coeffDistr("coeffDistrEE", "coeffDistrEE", 500, 0, 2);
  TH2F coeffMap("coeffMapEE", "coeffMapEE", 101, 0, 101, 101, 0, 101);
  coeffMap.SetStats(false);

  // ECAL barrel
  for (int ix = 1; ix <= 100; ++ix)
    for (int iy = 1; iy <= 100; ++iy) {
      int rad = static_cast<int>(sqrt((ix - 50) * (ix - 50) + (iy - 50) * (iy - 50)));
      if (rad < EEradStart || rad > EEradEnd)
        continue;
      double phiTemp = atan2(iy - 50, ix - 50);
      if (phiTemp < 0)
        phiTemp += 2 * PI_GRECO;
      int phi = static_cast<int>(phiTemp * 180 / PI_GRECO);
      if (phi < EEphiStart || phi > EEphiEnd)
        continue;

      if (!EEDetId::validDetId(ix, iy, 1))
        continue;
      EEDetId det = EEDetId(ix, iy, 1, EEDetId::XYMODE);
      double coeff = (*(imap.find(det.rawId())));
      std::cerr << "found coeff " << ix << " " << iy << " " << coeff << std::endl;
      coeffDistr.Fill(coeff);
      coeffMap.Fill(ix, iy, coeff);
    }  // ECAL barrel

  gROOT->SetStyle("Plain");
  gStyle->SetPalette(1);
  TCanvas c1;
  c1.SetGrid();

  coeffMap.GetZaxis()->SetRangeUser(0, 2);
  coeffMap.GetXaxis()->SetTitle("ix");
  coeffMap.GetYaxis()->SetTitle("iy");
  coeffMap.Draw("COLZ");
  c1.Print("coeffMapEE.gif", "gif");
  c1.SetLogy();
  coeffDistr.GetXaxis()->SetTitle("calib coeff EE");
  coeffDistr.SetFillColor(8);
  coeffDistr.Draw();
  c1.Print("coeffDistrEE.gif", "gif");

  TFile out("coeffEE.root", "recreate");
  coeffDistr.Write();
  coeffMap.Write();
  out.Close();
}