00001 #ifndef HcalPedestalsAnalysis_H 00002 #define HcalPedestalsAnalysis_H 00003 00004 #include "FWCore/Framework/interface/ESHandle.h" 00005 #include "FWCore/Framework/interface/Frameworkfwd.h" 00006 #include "FWCore/Framework/interface/EDAnalyzer.h" 00007 #include "FWCore/Framework/interface/Event.h" 00008 #include "FWCore/Framework/interface/MakerMacros.h" 00009 #include "FWCore/Framework/interface/EventSetup.h" 00010 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00011 #include "FWCore/ServiceRegistry/interface/Service.h" 00012 00013 #include "DataFormats/Common/interface/Handle.h" 00014 #include "DataFormats/HcalDetId/interface/HcalGenericDetId.h" 00015 #include "DataFormats/HcalDetId/interface/HcalElectronicsId.h" 00016 #include "DataFormats/HcalDetId/interface/HcalDetId.h" 00017 #include "DataFormats/HcalDigi/interface/HcalDigiCollections.h" 00018 #include "DataFormats/DetId/interface/DetId.h" 00019 #include "CondFormats/HcalObjects/interface/HcalPedestals.h" 00020 #include "CondFormats/HcalObjects/interface/HcalPedestalWidths.h" 00021 #include "CondFormats/HcalObjects/interface/HcalQIECoder.h" 00022 #include "CondFormats/HcalObjects/interface/HcalQIEData.h" 00023 #include "CondFormats/HcalObjects/interface/HcalQIEShape.h" 00024 #include "CondFormats/HcalObjects/src/HcalQIEShape.cc" 00025 #include "CondFormats/HcalObjects/interface/HcalElectronicsMap.h" 00026 #include "CondFormats/HcalObjects/interface/AllObjects.h" 00027 00028 #include "CalibFormats/HcalObjects/interface/HcalDbRecord.h" 00029 #include "CalibFormats/HcalObjects/interface/HcalDbService.h" 00030 #include "CalibFormats/HcalObjects/interface/HcalCalibrations.h" 00031 #include "CalibFormats/HcalObjects/interface/HcalCalibrationWidths.h" 00032 00033 #include "CondTools/Hcal/interface/HcalDbOnline.h" 00034 00035 #include "CalibCalorimetry/HcalAlgos/interface/HcalDbASCIIIO.h" 00036 #include "CalibCalorimetry/HcalAlgos/interface/HcalDbXml.h" 00037 #include "TBDataFormats/HcalTBObjects/interface/HcalTBTriggerData.h" 00038 00039 #include "TFile.h" 00040 #include "TProfile.h" 00041 #include "TH1.h" 00042 #include <math.h> 00043 #include <iostream> 00044 #include <map> 00045 #include <iomanip> 00046 #include <fstream> 00047 #include <vector> 00048 #include <string> 00049 00050 namespace edm { 00051 class ParameterSet; 00052 class Event; 00053 class EventSetup; 00054 } 00055 00056 struct NewPedBunch 00057 { 00058 HcalDetId detid; 00059 bool usedflag; 00060 float cap[4]; 00061 float capfc[4]; 00062 float sig[4][4]; 00063 float sigfc[4][4]; 00064 float prod[4][4]; 00065 float prodfc[4][4]; 00066 int num[4][4]; 00067 }; 00068 00069 class HcalPedestalsAnalysis : public edm::EDAnalyzer 00070 { 00071 public: 00072 //Constructor 00073 HcalPedestalsAnalysis(const edm::ParameterSet& ps); 00074 //Destructor 00075 virtual ~HcalPedestalsAnalysis(); 00076 //Analysis 00077 void analyze(const edm::Event & event, const edm::EventSetup& eventSetup); 00078 00079 private: 00080 //Container for data, 1 per channel 00081 std::vector<NewPedBunch> Bunches; 00082 //Flag for saving histos 00083 bool hiSaveFlag; 00084 bool dumpXML; 00085 bool verboseflag; 00086 int runnum; 00087 int firstTS; 00088 int lastTS; 00089 std::string ROOTfilename; 00090 std::string pedsADCfilename; 00091 std::string pedsfCfilename; 00092 std::string widthsADCfilename; 00093 std::string widthsfCfilename; 00094 std::string XMLfilename; 00095 std::string XMLtag; 00096 std::string ZSfilename; 00097 00098 TH1F *HBMeans; 00099 TH1F *HBWidths; 00100 TH1F *HEMeans; 00101 TH1F *HEWidths; 00102 TH1F *HFMeans; 00103 TH1F *HFWidths; 00104 TH1F *HOMeans; 00105 TH1F *HOWidths; 00106 00107 TFile *theFile; 00108 bool firsttime; 00109 }; 00110 #endif 00111