00001 #include "Calibration/EcalCalibAlgos/interface/EcalGeomPhiSymHelper.h" 00002 #include "CondFormats/EcalObjects/interface/EcalIntercalibConstants.h" 00003 #include "FWCore/Framework/interface/EDAnalyzer.h" 00004 #include "FWCore/Framework/interface/EventSetup.h" 00005 #include "FWCore/Framework/interface/ProducerBase.h" 00006 #include "FWCore/Framework/interface/Event.h" 00007 #include "FWCore/Framework/interface/ESHandle.h" 00008 00009 class TH1F; 00010 class TH2F; 00011 00012 class PhiSymmetryCalibration_step2_SM : public edm::EDAnalyzer 00013 { 00014 00015 public: 00016 00017 PhiSymmetryCalibration_step2_SM(const edm::ParameterSet& iConfig); 00018 ~PhiSymmetryCalibration_step2_SM(); 00019 00020 void beginJob(); 00021 void endJob(); 00022 00023 void analyze( const edm::Event&, const edm::EventSetup& ); 00024 00025 void fillHistos(); 00026 void fillConstantsHistos(); 00027 void setupResidHistos(); 00028 void outResidHistos(); 00029 00030 void setUp(const edm::EventSetup& setup); 00031 00032 void readEtSums(); 00033 00034 private: 00035 00036 00037 00038 00039 // Transverse energy sum arrays 00040 double etsum_barl_[kBarlRings] [kBarlWedges] [kSides]; 00041 00042 // energy sum for SM calibration 00043 // number of crystals in a "supercrystal" 00044 static const int nscx=20; 00045 double etsum_barl_SM_[kBarlRings][int(kBarlWedges/nscx)][kSides]; 00046 int nBads_barl_SM_[kBarlRings][int(kBarlWedges/nscx)][kSides]; 00047 double etsumMean_barl_SM_[kBarlRings]; 00048 double epsilon_M_barl_SM_[kBarlRings][int(kBarlWedges/nscx)][kSides]; 00049 00050 double etsum_endc_[kEndcWedgesX][kEndcWedgesX][kSides]; 00051 double etsum_endc_uncorr[kEndcWedgesX][kEndcWedgesX][kSides]; 00052 double etsumMean_barl_[kBarlRings]; 00053 double etsumMean_endc_[kEndcEtaRings]; 00054 00055 unsigned int nhits_barl_[kBarlRings][kBarlWedges] [kSides]; 00056 unsigned int nhits_endc_[kEndcWedgesX][kEndcWedgesX][kSides]; 00057 00058 00059 double esum_barl_[kBarlRings] [kBarlWedges] [kSides]; 00060 double esum_endc_[kEndcWedgesX][kEndcWedgesX][kSides]; 00061 00062 double esumMean_barl_[kBarlRings]; 00063 double esumMean_endc_[kEndcEtaRings]; 00064 00065 double k_barl_[kBarlRings]; 00066 double k_endc_[kEndcEtaRings]; 00067 00068 // calibration const not corrected for k 00069 float rawconst_barl[kBarlRings][kBarlWedges][kSides]; 00070 float rawconst_endc[kEndcWedgesX][kEndcWedgesX][kSides]; 00071 00072 00073 // calibration constants not multiplied by old ones 00074 float epsilon_M_barl[kBarlRings][kBarlWedges][kSides]; 00075 float epsilon_M_endc[kEndcWedgesX][kEndcWedgesY][kSides]; 00076 00077 EcalGeomPhiSymHelper e_; 00078 00079 std::vector<DetId> barrelCells; 00080 std::vector<DetId> endcapCells; 00081 00082 bool firstpass_; 00083 int statusThreshold_; 00084 00085 00086 bool reiteration_; 00087 std::string oldcalibfile_; 00088 00090 EcalIntercalibConstants oldCalibs_; 00091 00093 EcalIntercalibConstants newCalibs_; 00094 00095 00097 EcalIntercalibConstants miscalib_; 00098 00100 bool have_initial_miscalib_; 00101 std::string initialmiscalibfile_; 00102 00103 00105 std::vector<TH1F*> miscal_resid_barl_histos; 00106 std::vector<TH2F*> correl_barl_histos; 00107 00108 std::vector<TH1F*> miscal_resid_endc_histos; 00109 std::vector<TH2F*> correl_endc_histos; 00110 00111 };