![]() |
![]() |
00001 #ifndef Calibration_EcalCalibAlgos_PhiSymmetryCalibration_h 00002 #define Calibration_EcalCalibAlgos_PhiSymmetryCalibration_h 00003 00004 // 00005 // Package: Calibration/EcalCalibAlgos 00006 // Class: PhiSymmetryCalibration 00007 // 00008 // 00009 // Description: performs phi-symmetry calibration 00010 // 00011 // 00012 // Original Author: David Futyan 00013 00014 #include <vector> 00015 00016 // obsolete #include "Geometry/Vector/interface/GlobalPoint.h" 00017 00018 #include "DataFormats/GeometryVector/interface/GlobalPoint.h" 00019 // Framework 00020 #include "FWCore/Framework/interface/EDAnalyzer.h" 00021 #include "FWCore/Framework/interface/EventSetup.h" 00022 #include "FWCore/Framework/interface/ProducerBase.h" 00023 #include "FWCore/Framework/interface/Frameworkfwd.h" 00024 #include "FWCore/Framework/interface/Event.h" 00025 #include "FWCore/Framework/interface/ESHandle.h" 00026 00027 #include "CondFormats/EcalObjects/interface/EcalIntercalibConstants.h" 00028 #include "DataFormats/DetId/interface/DetId.h" 00029 00030 #include "TFile.h" 00031 #include "TTree.h" 00032 #include "TH1F.h" 00033 #include "TF1.h" 00034 #include "TGraph.h" 00035 #include "TCanvas.h" 00036 00037 class PhiSymmetryCalibration : public edm::EDAnalyzer 00038 { 00039 00040 public: 00041 00043 PhiSymmetryCalibration( const edm::ParameterSet& iConfig ); 00044 00046 ~PhiSymmetryCalibration(); 00047 00049 virtual void beginJob(const edm::EventSetup&); 00050 00052 virtual void endJob(); 00053 00055 virtual void analyze( const edm::Event&, const edm::EventSetup& ); 00056 00057 private: 00058 00059 // private member functions 00060 00061 void getKfactors(); 00062 void fillHistos(); 00063 00064 // private data members 00065 00066 int nevent; 00067 00068 00069 static const int kBarlRings = 85; 00070 static const int kBarlWedges = 360; 00071 static const int kSides = 2; 00072 00073 static const int kEndcWedgesX = 100; 00074 static const int kEndcWedgesY = 100; 00075 00076 static const int kEndcEtaRings = 39; 00077 static const int kNMiscalBins = 21; 00078 00079 // Transverse energy sum arrays 00080 double etsum_barl_[kBarlRings] [kBarlWedges] [kSides]; 00081 double etsum_endc_[kEndcWedgesX][kEndcWedgesX][kSides]; 00082 00083 double etsumMean_barl_[kBarlRings]; 00084 double etsumMean_endc_[kEndcEtaRings]; 00085 00086 double etsum_barl_miscal_[kNMiscalBins][kBarlRings]; 00087 double etsum_endc_miscal_[kNMiscalBins][kEndcEtaRings]; 00088 00089 // crystal geometry information 00090 double cellEta_[kBarlRings]; 00091 00092 GlobalPoint cellPos_[kEndcWedgesX][kEndcWedgesY]; 00093 double cellPhi_ [kEndcWedgesX][kEndcWedgesY]; 00094 double cellArea_ [kEndcWedgesX][kEndcWedgesY]; 00095 double meanCellArea_[kEndcEtaRings]; 00096 double etaBoundary_ [kEndcEtaRings+1]; 00097 int endcapRing_ [kEndcWedgesX][kEndcWedgesY]; 00098 int nRing_ [kEndcEtaRings]; 00099 00100 // factors to convert from ET sum deviation to miscalibration 00101 double k_barl_[kBarlRings]; 00102 double k_endc_[kEndcEtaRings]; 00103 double miscal_[kNMiscalBins]; 00104 00105 std::vector<DetId> barrelCells; 00106 std::vector<DetId> endcapCells; 00107 00108 // input calibration constants 00109 double oldCalibs_barl[kBarlRings ][kBarlWedges][kSides]; 00110 double oldCalibs_endc[kEndcWedgesX][kEndcWedgesY][kSides]; 00111 00112 // steering parameters 00113 00114 std::string ecalHitsProducer_; 00115 std::string barrelHits_; 00116 std::string endcapHits_; 00117 double eCut_barl_; 00118 double eCut_endc_; 00119 int eventSet_; 00120 00121 static const int kMaxEndciPhi = 360; 00122 00123 float phi_endc[kMaxEndciPhi][kEndcEtaRings]; 00124 00125 00126 }; 00127 00128 #endif