Go to the documentation of this file.00001 #ifndef CALIBRATION_ECALCALIBALGOS_ELECTRONCALIBRATIONUNIV
00002 #define CALIBRATION_ECALCALIBALGOS_ELECTRONCALIBRATIONUNIV
00003
00004
00005
00006
00007
00008
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include <memory>
00026
00027
00028 #include "FWCore/Framework/interface/Frameworkfwd.h"
00029 #include "FWCore/Framework/interface/EDAnalyzer.h"
00030
00031 #include "FWCore/Framework/interface/ESHandle.h"
00032 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00033
00034
00035 #include "Geometry/CaloEventSetup/interface/CaloTopologyRecord.h"
00036 #include "Geometry/CaloGeometry/interface/CaloGeometry.h"
00037 #include "Geometry/CaloTopology/interface/CaloTopology.h"
00038 #include "Geometry/CaloTopology/interface/CaloSubdetectorTopology.h"
00039
00040 #include "FWCore/Framework/interface/Event.h"
00041 #include "FWCore/Framework/interface/MakerMacros.h"
00042 #include "FWCore/Framework/interface/EventSetup.h"
00043 #include "FWCore/Framework/interface/ESHandle.h"
00044 #include "DataFormats/EcalRecHit/interface/EcalRecHitCollections.h"
00045 #include "Calibration/Tools/interface/HouseholderDecomposition.h"
00046 #include "Calibration/Tools/interface/MinL3Algorithm.h"
00047 #include "Calibration/Tools/interface/CalibrationCluster.h"
00048 #include "DataFormats/DetId/interface/DetId.h"
00049 #include "TFile.h"
00050 #include "TH1.h"
00051 #include "TH2.h"
00052
00053 #include "Calibration/Tools/interface/MinL3AlgoUniv.h"
00054
00055
00056
00057
00058 class ElectronCalibrationUniv : public edm::EDAnalyzer {
00059 public:
00060 explicit ElectronCalibrationUniv(const edm::ParameterSet&);
00061 ~ElectronCalibrationUniv();
00062
00063 virtual void analyze(const edm::Event&, const edm::EventSetup&);
00064 virtual void beginJob();
00065 virtual void beginRun(edm::Run const &, edm::EventSetup const&);
00066 virtual void endJob();
00067 private:
00068 DetId findMaxHit(const std::vector<DetId> & v1,const EBRecHitCollection *EBhits,const EERecHitCollection *EEhits);
00069 bool TestEEvalidDetId(int crystal_ix, int crystal_iy, int iz);
00070
00071
00072
00073
00074 std::string rootfile_;
00075 edm::InputTag EBrecHitLabel_;
00076 edm::InputTag EErecHitLabel_;
00077 edm::InputTag electronLabel_;
00078 edm::InputTag trackLabel_;
00079 std::string calibAlgo_;
00080 std::string miscalibfile_;
00081 std::string miscalibfileEndCap_;
00082 int keventweight_;
00083 double ElePt_;
00084 int maxeta_;
00085 int mineta_;
00086 int maxphi_;
00087 int minphi_;
00088 double cut1_;
00089 double cut2_;
00090 double cut3_;
00091 double cutEPCalo1_;
00092 double cutEPCalo2_;
00093 double cutEPin1_;
00094 double cutEPin2_;
00095 double cutCalo1_;
00096 double cutCalo2_;
00097 double cutESeed_;
00098 int ClusterSize_;
00099 int elecclass_;
00100 int theMaxLoops;
00101
00102 bool FirstIteration;
00103
00104 int read_events;
00105
00106 int calibClusterSize,keventweight;
00107 int etaMin, etaMax, phiMin, phiMax;
00108 std::vector<float> EnergyVector;
00109 std::vector<float> WeightVector;
00110 std::vector<std::vector<float> > EventMatrix;
00111 std::vector<int> MaxCCeta;
00112 std::vector<int> MaxCCphi;
00113 std::vector<float> EnergyVectorNoCuts;
00114 std::vector<float> WeightVectorNoCuts;
00115 std::vector<std::vector<float> > EventMatrixNoCuts;
00116 std::vector<int> MaxCCetaNoCuts;
00117 std::vector<int> MaxCCphiNoCuts;
00118 MinL3Algorithm* MyL3Algo1;
00119 MinL3AlgoUniv<DetId>* UnivL3;
00120
00121 edm::ESHandle<CaloTopology> theCaloTopology;
00122
00123 std::vector<float> solution;
00124 std::vector<float> solutionNoCuts;
00125
00126
00127 std::vector<std::vector<DetId> > UnivEventIds;
00128 std::map<DetId,float> Univsolution;
00129
00130
00131 int numevent_;
00132
00133 TFile * f;
00134
00135 TH1F * EventsAfterCuts;
00136
00137 TH1F * e25;
00138 TH1F * e9;
00139 TH1F * scE;
00140 TH1F * trP;
00141 TH1F * EoP;
00142 TH1F * EoP_all;
00143 TH1F * calibs;
00144 TH1F * calibsEndCapMinus;
00145 TH1F * calibsEndCapPlus;
00146 TH1F * e9Overe25;
00147 TH1F * e25OverScE;
00148 TH2F * Map;
00149 TH1F * E25oP;
00150
00151 TH1F * PinOverPout;
00152 TH1F * eSeedOverPout;
00153
00154
00155
00156
00157
00158
00159
00160
00161
00162
00163
00164
00165 TH1F * e25NoCuts;
00166 TH1F * e9NoCuts;
00167 TH1F * scENoCuts;
00168 TH1F * trPNoCuts;
00169 TH1F * EoPNoCuts;
00170 TH1F * calibsNoCuts;
00171 TH1F * e9Overe25NoCuts;
00172 TH1F * e25OverScENoCuts;
00173 TH2F * MapEndCapMinus;
00174 TH2F * MapEndCapPlus;
00175 TH1F * E25oPNoCuts;
00176 TH2F * Map3Dcalib;
00177 TH2F * Map3DcalibEndCapMinus;
00178 TH2F * Map3DcalibEndCapPlus;
00179 TH2F * Map3DcalibNoCuts;
00180 TH1F * calibinter;
00181 TH1F * calibinterEndCapMinus;
00182 TH1F * calibinterEndCapPlus;
00183 TH1F * calibinterNoCuts;
00184 HouseholderDecomposition * MyHH;
00185 TH1F * PinOverPoutNoCuts;
00186 TH1F * eSeedOverPoutNoCuts;
00187
00188 TH2F * GeneralMap;
00189 TH2F * GeneralMapEndCapMinus;
00190 TH2F * GeneralMapEndCapPlus;
00191 TH2F * GeneralMapBeforePt;
00192 TH2F * GeneralMapEndCapMinusBeforePt;
00193 TH2F * GeneralMapEndCapPlusBeforePt;
00194
00195 TH2F * MapCor1;
00196 TH2F * MapCor2;
00197 TH2F * MapCor3;
00198 TH2F * MapCor4;
00199 TH2F * MapCor5;
00200 TH2F * MapCor6;
00201 TH2F * MapCor7;
00202 TH2F * MapCor8;
00203 TH2F * MapCor9;
00204 TH2F * MapCor10;
00205 TH2F * MapCor11;
00206
00207
00208 TH2F * MapCor1NoCuts;
00209 TH2F * MapCor2NoCuts;
00210 TH2F * MapCor3NoCuts;
00211 TH2F * MapCor4NoCuts;
00212 TH2F * MapCor5NoCuts;
00213 TH2F * MapCor6NoCuts;
00214 TH2F * MapCor7NoCuts;
00215 TH2F * MapCor8NoCuts;
00216 TH2F * MapCor9NoCuts;
00217 TH2F * MapCor10NoCuts;
00218 TH2F * MapCor11NoCuts;
00219
00220
00221
00222 TH2F * MapCor1ESeed;
00223 TH2F * MapCor2ESeed;
00224 TH2F * MapCor3ESeed;
00225 TH2F * MapCor4ESeed;
00226 TH2F * MapCor5ESeed;
00227 TH2F * MapCor6ESeed;
00228 TH2F * MapCor7ESeed;
00229 TH2F * MapCor8ESeed;
00230 TH2F * MapCor9ESeed;
00231 TH2F * MapCor10ESeed;
00232 TH2F * MapCor11ESeed;
00233
00234 TH2F * E25oPvsEta;
00235 TH2F * E25oPvsEtaEndCapMinus;
00236 TH2F * E25oPvsEtaEndCapPlus;
00237
00238 TH1F * PinMinPout;
00239 TH1F * PinMinPoutNoCuts;
00240
00241 TH1F * Error1;
00242 TH1F * Error2;
00243 TH1F * Error3;
00244 TH1F * Error1NoCuts;
00245 TH1F * Error2NoCuts;
00246 TH1F * Error3NoCuts;
00247
00248 TH1F * eSeedOverPout2;
00249 TH1F * eSeedOverPout2NoCuts;
00250 TH1F * eSeedOverPout2ESeed;
00251
00252 TH1F * hadOverEm;
00253 TH1F * hadOverEmNoCuts;
00254 TH1F * hadOverEmESeed;
00255 };
00256 #endif