00001 #include "DQMOffline/JetMET/interface/ECALRecHitAnalyzer.h"
00002 #include "DQMServices/Core/interface/DQMStore.h"
00003 #include "Geometry/Records/interface/CaloGeometryRecord.h"
00004
00005
00006
00007
00008 #define DEBUG(X) { if (debug_) { std::cout << X << std::endl; } }
00009
00010 ECALRecHitAnalyzer::ECALRecHitAnalyzer(const edm::ParameterSet& iConfig)
00011 {
00012
00013
00014 EBRecHitsLabel_ = iConfig.getParameter<edm::InputTag>("EBRecHitsLabel");
00015 EERecHitsLabel_ = iConfig.getParameter<edm::InputTag>("EERecHitsLabel");
00016 FolderName_ = iConfig.getUntrackedParameter<std::string>("FolderName");
00017 debug_ = iConfig.getParameter<bool>("Debug");
00018
00019
00020 }
00021
00022 void ECALRecHitAnalyzer::endJob() {
00023
00024 }
00025
00026
00027 void ECALRecHitAnalyzer::beginRun(const edm::Run& iRun,const edm::EventSetup& iSetup){
00028 CurrentEvent = -1;
00029
00030
00031 BookHistos();
00032 FillGeometry(iSetup);
00033 }
00034
00035 void ECALRecHitAnalyzer::BookHistos()
00036 {
00037
00038 dbe_ = edm::Service<DQMStore>().operator->();
00039
00040 if (dbe_) {
00041
00042
00043 dbe_->setCurrentFolder(FolderName_+"/geometry");
00044
00045
00046
00047 hEB_ieta_iphi_etaMap = dbe_->book2D("hEB_ieta_iphi_etaMap","", 171, -85, 86, 360, 1, 361);
00048 hEB_ieta_iphi_phiMap = dbe_->book2D("hEB_ieta_iphi_phiMap","", 171, -85, 86, 360, 1, 361);
00049 hEB_ieta_detaMap = dbe_->book1D("hEB_ieta_detaMap","", 171, -85, 86);
00050 hEB_ieta_dphiMap = dbe_->book1D("hEB_ieta_dphiMap","", 171, -85, 86);
00051
00052 hEEpZ_ix_iy_irMap = dbe_->book2D("hEEpZ_ix_iy_irMap","", 100,1,101, 100,1,101);
00053 hEEpZ_ix_iy_xMap = dbe_->book2D("hEEpZ_ix_iy_xMap","", 100,1,101, 100,1,101);
00054 hEEpZ_ix_iy_yMap = dbe_->book2D("hEEpZ_ix_iy_yMap","", 100,1,101, 100,1,101);
00055 hEEpZ_ix_iy_zMap = dbe_->book2D("hEEpZ_ix_iy_zMap","", 100,1,101, 100,1,101);
00056 hEEpZ_ix_iy_dxMap = dbe_->book2D("hEEpZ_ix_iy_dxMap","", 100,1,101, 100,1,101);
00057 hEEpZ_ix_iy_dyMap = dbe_->book2D("hEEpZ_ix_iy_dyMap","", 100,1,101, 100,1,101);
00058
00059 hEEmZ_ix_iy_irMap = dbe_->book2D("hEEmZ_ix_iy_irMap","", 100,1,101, 100,1,101);
00060 hEEmZ_ix_iy_xMap = dbe_->book2D("hEEmZ_ix_iy_xMap","", 100,1,101, 100,1,101);
00061 hEEmZ_ix_iy_yMap = dbe_->book2D("hEEmZ_ix_iy_yMap","", 100,1,101, 100,1,101);
00062 hEEmZ_ix_iy_zMap = dbe_->book2D("hEEmZ_ix_iy_zMap","", 100,1,101, 100,1,101);
00063 hEEmZ_ix_iy_dxMap = dbe_->book2D("hEEmZ_ix_iy_dxMap","", 100,1,101, 100,1,101);
00064 hEEmZ_ix_iy_dyMap = dbe_->book2D("hEEmZ_ix_iy_dyMap","", 100,1,101, 100,1,101);
00065
00066
00067 for (int i=1; i<=100; i++)
00068 for (int j=1; j<=100; j++)
00069 {
00070 hEEpZ_ix_iy_irMap->setBinContent(i,j,-999);
00071 hEEpZ_ix_iy_xMap->setBinContent(i,j,-999);
00072 hEEpZ_ix_iy_yMap->setBinContent(i,j,-999);
00073 hEEpZ_ix_iy_zMap->setBinContent(i,j,-999);
00074 hEEpZ_ix_iy_dxMap->setBinContent(i,j,-999);
00075 hEEpZ_ix_iy_dyMap->setBinContent(i,j,-999);
00076
00077 hEEmZ_ix_iy_irMap->setBinContent(i,j,-999);
00078 hEEmZ_ix_iy_xMap->setBinContent(i,j,-999);
00079 hEEmZ_ix_iy_yMap->setBinContent(i,j,-999);
00080 hEEmZ_ix_iy_zMap->setBinContent(i,j,-999);
00081 hEEmZ_ix_iy_dxMap->setBinContent(i,j,-999);
00082 hEEmZ_ix_iy_dyMap->setBinContent(i,j,-999);
00083 }
00084
00085 for (int i=1; i<=171; i++)
00086 {
00087 hEB_ieta_detaMap->setBinContent(i,-999);
00088 hEB_ieta_dphiMap->setBinContent(i,-999);
00089 for (int j=1; j<=360; j++)
00090 {
00091 hEB_ieta_iphi_etaMap->setBinContent(i,j,-999);
00092 hEB_ieta_iphi_phiMap->setBinContent(i,j,-999);
00093 }
00094 }
00095
00096
00097 dbe_->setCurrentFolder(FolderName_);
00098
00099 hECAL_Nevents = dbe_->book1D("hECAL_Nevents","",1,0,1);
00100
00101
00102
00103 hEEpZ_energy_ix_iy = dbe_->book2D("hEEpZ_energy_ix_iy","", 100,1,101, 100,1,101);
00104 hEEmZ_energy_ix_iy = dbe_->book2D("hEEmZ_energy_ix_iy","", 100,1,101, 100,1,101);
00105 hEB_energy_ieta_iphi = dbe_->book2D("hEB_energy_ieta_iphi","", 171, -85, 86, 360, 1, 361);
00106
00107 hEEpZ_Minenergy_ix_iy = dbe_->book2D("hEEpZ_Minenergy_ix_iy","", 100,1,101, 100,1,101);
00108 hEEmZ_Minenergy_ix_iy = dbe_->book2D("hEEmZ_Minenergy_ix_iy","", 100,1,101, 100,1,101);
00109 hEB_Minenergy_ieta_iphi = dbe_->book2D("hEB_Minenergy_ieta_iphi","", 171, -85, 86, 360, 1, 361);
00110
00111 hEEpZ_Maxenergy_ix_iy = dbe_->book2D("hEEpZ_Maxenergy_ix_iy","", 100,1,101, 100,1,101);
00112 hEEmZ_Maxenergy_ix_iy = dbe_->book2D("hEEmZ_Maxenergy_ix_iy","", 100,1,101, 100,1,101);
00113 hEB_Maxenergy_ieta_iphi = dbe_->book2D("hEB_Maxenergy_ieta_iphi","", 171, -85, 86, 360, 1, 361);
00114
00115
00116 for (int i=1; i<=171; i++)
00117 for (int j=1; j<=360; j++)
00118 {
00119 hEB_Maxenergy_ieta_iphi->setBinContent(i,j,-999);
00120 hEB_Minenergy_ieta_iphi->setBinContent(i,j,14000);
00121 }
00122 for (int i=1; i<=100; i++)
00123 for (int j=1; j<=100; j++)
00124 {
00125 hEEpZ_Maxenergy_ix_iy->setBinContent(i,j,-999);
00126 hEEpZ_Minenergy_ix_iy->setBinContent(i,j,14000);
00127 hEEmZ_Maxenergy_ix_iy->setBinContent(i,j,-999);
00128 hEEmZ_Minenergy_ix_iy->setBinContent(i,j,14000);
00129 }
00130
00131
00132
00133 hEEpZ_Occ_ix_iy = dbe_->book2D("hEEpZ_Occ_ix_iy","", 100,1,101, 100,1,101);
00134 hEEmZ_Occ_ix_iy = dbe_->book2D("hEEmZ_Occ_ix_iy","", 100,1,101, 100,1,101);
00135 hEB_Occ_ieta_iphi = dbe_->book2D("hEB_Occ_ieta_iphi","",171, -85, 86, 360, 1, 361);
00136
00137
00138 if(finebinning_)
00139 {
00140 hEEpZ_energyvsir = dbe_->book2D("hEEpZ_energyvsir","", 100,1,101, 20110,-10,201);
00141 hEEmZ_energyvsir = dbe_->book2D("hEEmZ_energyvsir","", 100,1,101, 20110,-10,201);
00142 hEB_energyvsieta = dbe_->book2D("hEB_energyvsieta","", 171, -85, 86, 20110, -10, 201);
00143
00144 hEEpZ_Maxenergyvsir = dbe_->book2D("hEEpZ_Maxenergyvsir","", 100,1,101, 20110,-10,201);
00145 hEEmZ_Maxenergyvsir = dbe_->book2D("hEEmZ_Maxenergyvsir","", 100,1,101, 20110,-10,201);
00146 hEB_Maxenergyvsieta = dbe_->book2D("hEB_Maxenergyvsieta","", 171, -85, 86, 20110, -10, 201);
00147
00148 hEEpZ_Minenergyvsir = dbe_->book2D("hEEpZ_Minenergyvsir","", 100,1,101, 20110,-10,201);
00149 hEEmZ_Minenergyvsir = dbe_->book2D("hEEmZ_Minenergyvsir","", 100,1,101, 20110,-10,201);
00150 hEB_Minenergyvsieta = dbe_->book2D("hEB_Minenergyvsieta","", 171, -85, 86, 20110, -10, 201);
00151
00152 hEEpZ_SETvsir = dbe_->book2D("hEEpZ_SETvsir","", 50,1,51, 20010,0,201);
00153 hEEmZ_SETvsir = dbe_->book2D("hEEmZ_SETvsir","", 50,1,51, 20010,0,201);
00154 hEB_SETvsieta = dbe_->book2D("hEB_SETvsieta","", 171, -85, 86, 20010, 0, 201);
00155
00156 hEEpZ_METvsir = dbe_->book2D("hEEpZ_METvsir","", 50,1,51, 20010,0,201);
00157 hEEmZ_METvsir = dbe_->book2D("hEEmZ_METvsir","", 50,1,51, 20010,0,201);
00158 hEB_METvsieta = dbe_->book2D("hEB_METvsieta","", 171, -85, 86, 20010, 0, 201);
00159
00160 hEEpZ_METPhivsir = dbe_->book2D("hEEpZ_METPhivsir","", 50,1,51, 80,-4,4);
00161 hEEmZ_METPhivsir = dbe_->book2D("hEEmZ_METPhivsir","", 50,1,51, 80,-4,4);
00162 hEB_METPhivsieta = dbe_->book2D("hEB_METPhivsieta","", 171, -85, 86, 80,-4,4);
00163
00164 hEEpZ_MExvsir = dbe_->book2D("hEEpZ_MExvsir","", 50,1,51, 10010,-50,51);
00165 hEEmZ_MExvsir = dbe_->book2D("hEEmZ_MExvsir","", 50,1,51, 10010,-50,51);
00166 hEB_MExvsieta = dbe_->book2D("hEB_MExvsieta","", 171, -85, 86, 10010,-50,51);
00167
00168 hEEpZ_MEyvsir = dbe_->book2D("hEEpZ_MEyvsir","", 50,1,51, 10010,-50,51);
00169 hEEmZ_MEyvsir = dbe_->book2D("hEEmZ_MEyvsir","", 50,1,51, 10010,-50,51);
00170 hEB_MEyvsieta = dbe_->book2D("hEB_MEyvsieta","", 171, -85, 86, 10010,-50,51);
00171
00172 hEEpZ_Occvsir = dbe_->book2D("hEEpZ_Occvsir","", 50,1,51, 1000,0,1000);
00173 hEEmZ_Occvsir = dbe_->book2D("hEEmZ_Occvsir","", 50,1,51, 1000,0,1000);
00174 hEB_Occvsieta = dbe_->book2D("hEB_Occvsieta","", 171, -85, 86, 400,0,400);
00175 }
00176 else
00177 {
00178 hEEpZ_energyvsir = dbe_->book2D("hEEpZ_energyvsir","", 100,1,101, 510,-10,100);
00179 hEEmZ_energyvsir = dbe_->book2D("hEEmZ_energyvsir","", 100,1,101, 510,-10,100);
00180 hEB_energyvsieta = dbe_->book2D("hEB_energyvsieta","", 171, -85, 86, 510, -10, 100);
00181
00182 hEEpZ_Maxenergyvsir = dbe_->book2D("hEEpZ_Maxenergyvsir","", 100,1,101, 510,-10,100);
00183 hEEmZ_Maxenergyvsir = dbe_->book2D("hEEmZ_Maxenergyvsir","", 100,1,101, 510,-10,100);
00184 hEB_Maxenergyvsieta = dbe_->book2D("hEB_Maxenergyvsieta","", 171, -85, 86, 510, -10, 100);
00185
00186 hEEpZ_Minenergyvsir = dbe_->book2D("hEEpZ_Minenergyvsir","", 100,1,101, 510,-10,100);
00187 hEEmZ_Minenergyvsir = dbe_->book2D("hEEmZ_Minenergyvsir","", 100,1,101, 510,-10,100);
00188 hEB_Minenergyvsieta = dbe_->book2D("hEB_Minenergyvsieta","", 171, -85, 86, 510, -10, 100);
00189
00190 hEEpZ_SETvsir = dbe_->book2D("hEEpZ_SETvsir","", 50,1,51, 510,0,100);
00191 hEEmZ_SETvsir = dbe_->book2D("hEEmZ_SETvsir","", 50,1,51, 510,0,100);
00192 hEB_SETvsieta = dbe_->book2D("hEB_SETvsieta","", 171, -85, 86, 510, 0, 100);
00193
00194 hEEpZ_METvsir = dbe_->book2D("hEEpZ_METvsir","", 50,1,51, 510,0,100);
00195 hEEmZ_METvsir = dbe_->book2D("hEEmZ_METvsir","", 50,1,51, 510,0,100);
00196 hEB_METvsieta = dbe_->book2D("hEB_METvsieta","", 171, -85, 86, 510, 0, 100);
00197
00198 hEEpZ_METPhivsir = dbe_->book2D("hEEpZ_METPhivsir","", 50,1,51, 80,-4,4);
00199 hEEmZ_METPhivsir = dbe_->book2D("hEEmZ_METPhivsir","", 50,1,51, 80,-4,4);
00200 hEB_METPhivsieta = dbe_->book2D("hEB_METPhivsieta","", 171, -85, 86, 80,-4,4);
00201
00202 hEEpZ_MExvsir = dbe_->book2D("hEEpZ_MExvsir","", 50,1,51, 510,-50,51);
00203 hEEmZ_MExvsir = dbe_->book2D("hEEmZ_MExvsir","", 50,1,51, 510,-50,51);
00204 hEB_MExvsieta = dbe_->book2D("hEB_MExvsieta","", 171, -85, 86, 510,-50,51);
00205
00206 hEEpZ_MEyvsir = dbe_->book2D("hEEpZ_MEyvsir","", 50,1,51, 510,-50,51);
00207 hEEmZ_MEyvsir = dbe_->book2D("hEEmZ_MEyvsir","", 50,1,51, 510,-50,51);
00208 hEB_MEyvsieta = dbe_->book2D("hEB_MEyvsieta","", 171, -85, 86, 510,-50,51);
00209
00210 hEEpZ_Occvsir = dbe_->book2D("hEEpZ_Occvsir","", 50,1,51, 1000,0,1000);
00211 hEEmZ_Occvsir = dbe_->book2D("hEEmZ_Occvsir","", 50,1,51, 1000,0,1000);
00212 hEB_Occvsieta = dbe_->book2D("hEB_Occvsieta","", 171, -85, 86, 400,0,400);
00213
00214 }
00215
00216
00217
00218 }
00219 }
00220
00221 void ECALRecHitAnalyzer::FillGeometry(const edm::EventSetup& iSetup)
00222 {
00223
00224 using namespace edm;
00225
00226 edm::ESHandle<CaloGeometry> pG;
00227 iSetup.get<CaloGeometryRecord>().get(pG);
00228 const CaloGeometry cG = *pG;
00229
00230
00231 const CaloSubdetectorGeometry* EBgeom=cG.getSubdetectorGeometry(DetId::Ecal,1);
00232 int n=0;
00233 std::vector<DetId> EBids=EBgeom->getValidDetIds(DetId::Ecal, 1);
00234 for (std::vector<DetId>::iterator i=EBids.begin(); i!=EBids.end(); i++) {
00235 n++;
00236 const CaloCellGeometry* cell=EBgeom->getGeometry(*i);
00237
00238
00239 EBDetId EcalID(i->rawId());
00240
00241 int Crystal_ieta = EcalID.ieta();
00242 int Crystal_iphi = EcalID.iphi();
00243 double Crystal_eta = cell->getPosition().eta();
00244 double Crystal_phi = cell->getPosition().phi();
00245 hEB_ieta_iphi_etaMap->setBinContent(Crystal_ieta+86, Crystal_iphi, Crystal_eta);
00246 hEB_ieta_iphi_phiMap->setBinContent(Crystal_ieta+86, Crystal_iphi, (Crystal_phi*180/M_PI) );
00247
00248 DEBUG( " Crystal " << n );
00249 DEBUG( " ieta, iphi = " << Crystal_ieta << ", " << Crystal_iphi);
00250 DEBUG( " eta, phi = " << cell->getPosition().eta() << ", " << cell->getPosition().phi());
00251 DEBUG( " " );
00252
00253 }
00254
00255 const CaloSubdetectorGeometry* EEgeom=cG.getSubdetectorGeometry(DetId::Ecal,2);
00256 n=0;
00257 std::vector<DetId> EEids=EEgeom->getValidDetIds(DetId::Ecal, 2);
00258 for (std::vector<DetId>::iterator i=EEids.begin(); i!=EEids.end(); i++) {
00259 n++;
00260 const CaloCellGeometry* cell=EEgeom->getGeometry(*i);
00261
00262 EEDetId EcalID(i->rawId());
00263 int Crystal_zside = EcalID.zside();
00264 int Crystal_ix = EcalID.ix();
00265 int Crystal_iy = EcalID.iy();
00266 Float_t ix_ = Crystal_ix-50.5;
00267 Float_t iy_ = Crystal_iy-50.5;
00268 Int_t ir = (Int_t)sqrt(ix_*ix_ + iy_*iy_);
00269
00270
00271
00272 double Crystal_x = cell->getPosition().x();
00273 double Crystal_y = cell->getPosition().y();
00274 double Crystal_z = cell->getPosition().z();
00275
00276 if (Crystal_zside == -1)
00277 {
00278 hEEmZ_ix_iy_irMap->setBinContent(Crystal_ix, Crystal_iy, ir);
00279 hEEmZ_ix_iy_xMap->setBinContent(Crystal_ix, Crystal_iy, Crystal_x);
00280 hEEmZ_ix_iy_yMap->setBinContent(Crystal_ix, Crystal_iy, Crystal_y);
00281 hEEmZ_ix_iy_zMap->setBinContent(Crystal_ix, Crystal_iy, Crystal_z);
00282 }
00283
00284 if (Crystal_zside == 1)
00285 {
00286 hEEpZ_ix_iy_irMap->setBinContent(Crystal_ix, Crystal_iy, ir);
00287 hEEpZ_ix_iy_xMap->setBinContent(Crystal_ix, Crystal_iy, Crystal_x);
00288 hEEpZ_ix_iy_yMap->setBinContent(Crystal_ix, Crystal_iy, Crystal_y);
00289 hEEpZ_ix_iy_zMap->setBinContent(Crystal_ix, Crystal_iy, Crystal_z);
00290 }
00291
00292 DEBUG( " Crystal " << n );
00293 DEBUG( " side = " << Crystal_zside );
00294 DEBUG(" ix, iy = " << Crystal_ix << ", " << Crystal_iy);
00295 DEBUG(" x, y = " << Crystal_x << ", " << Crystal_y);;
00296 DEBUG( " " );
00297
00298 }
00299
00300
00301 double currentLowEdge_eta = 0;
00302
00303 for (int ieta=1; ieta<=85 ; ieta++)
00304 {
00305 int ieta_ = 86 + ieta;
00306
00307 double eta = hEB_ieta_iphi_etaMap->getBinContent(ieta_, 1);
00308 double etam1 = -999;
00309
00310 if (ieta==1)
00311 etam1 = hEB_ieta_iphi_etaMap->getBinContent(85, 1);
00312 else
00313 etam1 = hEB_ieta_iphi_etaMap->getBinContent(ieta_ - 1, 1);
00314
00315
00316 double deta = fabs( eta - etam1 );
00317 double dphi = fabs( hEB_ieta_iphi_phiMap->getBinContent(ieta_, 1) - hEB_ieta_iphi_phiMap->getBinContent(ieta_, 2) );
00318
00319 currentLowEdge_eta += deta;
00320 hEB_ieta_detaMap->setBinContent(ieta_, deta);
00321 hEB_ieta_dphiMap->setBinContent(ieta_, dphi);
00322 hEB_ieta_detaMap->setBinContent(86-ieta, deta);
00323 hEB_ieta_dphiMap->setBinContent(86-ieta, dphi);
00324 }
00325 }
00326
00327
00328
00329 void ECALRecHitAnalyzer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup)
00330 {
00331 CurrentEvent++;
00332 DEBUG( "Event: " << CurrentEvent);
00333 WriteECALRecHits( iEvent, iSetup );
00334 hECAL_Nevents->Fill(0.5);
00335 }
00336
00337 void ECALRecHitAnalyzer::WriteECALRecHits(const edm::Event& iEvent, const edm::EventSetup& iSetup)
00338 {
00339 edm::Handle<EBRecHitCollection> EBRecHits;
00340 edm::Handle<EERecHitCollection> EERecHits;
00341 iEvent.getByLabel( EBRecHitsLabel_, EBRecHits );
00342 iEvent.getByLabel( EERecHitsLabel_, EERecHits );
00343 DEBUG( "Got ECALRecHits");
00344
00345
00346
00347
00348
00349
00350
00351
00352
00353
00354
00355
00356
00357 edm::ESHandle<CaloGeometry> pG;
00358 iSetup.get<CaloGeometryRecord>().get(pG);
00359 const CaloGeometry cG = *pG;
00360
00361
00362 DEBUG( "Got Geometry");
00363
00364 TLorentzVector vEBMET_EtaRing[171];
00365 int EBActiveRing[171];
00366 int EBNActiveCells[171];
00367 double EBSET_EtaRing[171];
00368 double EBMaxEnergy_EtaRing[171];
00369 double EBMinEnergy_EtaRing[171];
00370 double EBenergy_EtaRing[171];
00371
00372 for (int i=0; i<171; i++)
00373 {
00374 EBActiveRing[i] = 0;
00375 EBNActiveCells[i] = 0;
00376 EBSET_EtaRing[i] = 0.0;
00377 EBMaxEnergy_EtaRing[i] = -999;
00378 EBMinEnergy_EtaRing[i] = 14E3;
00379 EBenergy_EtaRing[i] = 0.0;
00380 }
00381
00382 edm::LogInfo("OutputInfo") << "Looping over EB" << std::endl;
00383
00384 EBRecHitCollection::const_iterator ebrechit;
00385
00386
00387 for (ebrechit = EBRecHits->begin(); ebrechit != EBRecHits->end(); ebrechit++) {
00388
00389 EBDetId det = ebrechit->id();
00390 double Energy = ebrechit->energy();
00391 Int_t ieta = det.ieta();
00392 Int_t iphi = det.iphi();
00393 int EtaRing = 85 + ieta;
00394 double eta = hEB_ieta_iphi_etaMap->getBinContent(EtaRing+1,iphi);
00395 double phi = hEB_ieta_iphi_phiMap->getBinContent(EtaRing+1,iphi);
00396 double theta = 2*TMath::ATan(exp(-1*eta));
00397 double ET = Energy*TMath::Sin(theta);
00398 TLorentzVector v_;
00399
00400 if (Energy>EBMaxEnergy_EtaRing[EtaRing]) EBMaxEnergy_EtaRing[EtaRing] = Energy;
00401 if (Energy<EBMinEnergy_EtaRing[EtaRing]) EBMinEnergy_EtaRing[EtaRing] = Energy;
00402
00403 if (Energy>0)
00404 {
00405 EBActiveRing[EtaRing] = 1;
00406 EBNActiveCells[EtaRing]++;
00407 EBSET_EtaRing[EtaRing]+=ET;
00408 v_.SetPtEtaPhiE(ET, 0, phi, ET);
00409 vEBMET_EtaRing[EtaRing]-=v_;
00410 EBenergy_EtaRing[EtaRing]+=Energy;
00411 hEB_Occ_ieta_iphi->Fill(ieta, iphi);
00412
00413 }
00414
00415 hEB_energy_ieta_iphi->Fill(ieta, iphi, Energy);
00416 if (Energy>hEB_Maxenergy_ieta_iphi->getBinContent(EtaRing+1, iphi))
00417 hEB_Maxenergy_ieta_iphi->setBinContent(EtaRing+1, iphi, Energy);
00418 if (Energy<hEB_Minenergy_ieta_iphi->getBinContent(EtaRing+1, iphi))
00419 hEB_Minenergy_ieta_iphi->setBinContent(EtaRing+1, iphi, Energy);
00420
00421
00422 }
00423
00424 for (int iEtaRing = 0; iEtaRing < 171; iEtaRing++)
00425 {
00426 hEB_Minenergyvsieta->Fill(iEtaRing-85, EBMinEnergy_EtaRing[iEtaRing]);
00427 hEB_Maxenergyvsieta->Fill(iEtaRing-85, EBMaxEnergy_EtaRing[iEtaRing]);
00428
00429 if (EBActiveRing[iEtaRing])
00430 {
00431 hEB_METvsieta->Fill(iEtaRing-85, vEBMET_EtaRing[iEtaRing].Pt());
00432 hEB_METPhivsieta->Fill(iEtaRing-85, vEBMET_EtaRing[iEtaRing].Phi());
00433 hEB_MExvsieta->Fill(iEtaRing-85, vEBMET_EtaRing[iEtaRing].Px());
00434 hEB_MEyvsieta->Fill(iEtaRing-85, vEBMET_EtaRing[iEtaRing].Py());
00435 hEB_SETvsieta->Fill(iEtaRing-85, EBSET_EtaRing[iEtaRing]);
00436 hEB_Occvsieta->Fill(iEtaRing-85, EBNActiveCells[iEtaRing]);
00437 hEB_energyvsieta->Fill(iEtaRing-85, EBenergy_EtaRing[iEtaRing]);
00438 }
00439 }
00440
00441
00442 TLorentzVector vEEpZMET_EtaRing[101];
00443 int EEpZActiveRing[101];
00444 int EEpZNActiveCells[101];
00445 double EEpZSET_EtaRing[101];
00446 double EEpZMaxEnergy_EtaRing[101];
00447 double EEpZMinEnergy_EtaRing[101];
00448
00449 TLorentzVector vEEmZMET_EtaRing[101];
00450 int EEmZActiveRing[101];
00451 int EEmZNActiveCells[101];
00452 double EEmZSET_EtaRing[101];
00453 double EEmZMaxEnergy_EtaRing[101];
00454 double EEmZMinEnergy_EtaRing[101];
00455
00456 for (int i=0;i<101; i++)
00457 {
00458 EEpZActiveRing[i] = 0;
00459 EEpZNActiveCells[i] = 0;
00460 EEpZSET_EtaRing[i] = 0.0;
00461 EEpZMaxEnergy_EtaRing[i] = -999;
00462 EEpZMinEnergy_EtaRing[i] = 14E3;
00463
00464 EEmZActiveRing[i] = 0;
00465 EEmZNActiveCells[i] = 0;
00466 EEmZSET_EtaRing[i] = 0.0;
00467 EEmZMaxEnergy_EtaRing[i] = -999;
00468 EEmZMinEnergy_EtaRing[i] = 14E3;
00469 }
00470
00471 edm::LogInfo("OutputInfo") << "Looping over EE" << std::endl;
00472 EERecHitCollection::const_iterator eerechit;
00473
00474 for (eerechit = EERecHits->begin(); eerechit != EERecHits->end(); eerechit++) {
00475
00476 EEDetId det = eerechit->id();
00477 double Energy = eerechit->energy();
00478 Int_t ix = det.ix();
00479 Int_t iy = det.iy();
00480
00481
00482 Int_t ir = -999;
00483
00484
00485 double x = -999;
00486 double y = -999;
00487 double z = -999;
00488 double eta = -999;
00489 double theta = -999;
00490 double phi = -999;
00491
00492 int Crystal_zside = det.zside();
00493
00494 if (Crystal_zside == -1)
00495 {
00496 ir = (Int_t)hEEmZ_ix_iy_irMap->getBinContent(ix,iy);
00497 x = hEEmZ_ix_iy_xMap->getBinContent(ix,iy);
00498 y = hEEmZ_ix_iy_yMap->getBinContent(ix,iy);
00499 z = hEEmZ_ix_iy_zMap->getBinContent(ix,iy);
00500 }
00501 if (Crystal_zside == 1)
00502 {
00503 ir = (Int_t)hEEpZ_ix_iy_irMap->getBinContent(ix,iy);
00504 x = hEEpZ_ix_iy_xMap->getBinContent(ix,iy);
00505 y = hEEpZ_ix_iy_yMap->getBinContent(ix,iy);
00506 z = hEEpZ_ix_iy_zMap->getBinContent(ix,iy);
00507 }
00508 TVector3 pos_vector(x,y,z);
00509 phi = pos_vector.Phi();
00510 theta = pos_vector.Theta();
00511 eta = pos_vector.Eta();
00512 double ET = Energy*TMath::Sin(theta);
00513 TLorentzVector v_;
00514
00515
00516 if (Crystal_zside == -1)
00517 {
00518 if (Energy>0)
00519 {
00520 EEmZActiveRing[ir] = 1;
00521 EEmZNActiveCells[ir]++;
00522 EEmZSET_EtaRing[ir]+=ET;
00523 v_.SetPtEtaPhiE(ET,0,phi,ET);
00524 vEEmZMET_EtaRing[ir]-=v_;
00525 hEEmZ_Occ_ix_iy->Fill(ix, iy);
00526 }
00527 hEEmZ_energyvsir->Fill(ir, Energy);
00528 hEEmZ_energy_ix_iy->Fill(ix, iy, Energy);
00529
00530 if (Energy>EEmZMaxEnergy_EtaRing[ir]) EEmZMaxEnergy_EtaRing[ir] = Energy;
00531 if (Energy<EEmZMinEnergy_EtaRing[ir]) EEmZMinEnergy_EtaRing[ir] = Energy;
00532
00533 if (Energy>hEEmZ_Maxenergy_ix_iy->getBinContent(ix,iy))
00534 hEEmZ_Maxenergy_ix_iy->setBinContent(ix,iy, Energy);
00535 if (Energy<hEEmZ_Minenergy_ix_iy->getBinContent(ix,iy))
00536 hEEmZ_Minenergy_ix_iy->setBinContent(ix,iy, Energy);
00537 }
00538 if (Crystal_zside == 1)
00539 {
00540 if (Energy>0)
00541 {
00542 EEpZActiveRing[ir] = 1;
00543 EEpZNActiveCells[ir]++;
00544 EEpZSET_EtaRing[ir]+=ET;
00545 v_.SetPtEtaPhiE(ET,0,phi,ET);
00546 vEEpZMET_EtaRing[ir]-=v_;
00547 hEEpZ_Occ_ix_iy->Fill(ix, iy);
00548 }
00549 hEEpZ_energyvsir->Fill(ir, Energy);
00550 hEEpZ_energy_ix_iy->Fill(ix, iy, Energy);
00551
00552 if (Energy>EEpZMaxEnergy_EtaRing[ir]) EEpZMaxEnergy_EtaRing[ir] = Energy;
00553 if (Energy<EEpZMinEnergy_EtaRing[ir]) EEpZMinEnergy_EtaRing[ir] = Energy;
00554 if (Energy>hEEpZ_Maxenergy_ix_iy->getBinContent(ix,iy))
00555 hEEpZ_Maxenergy_ix_iy->setBinContent(ix,iy, Energy);
00556 if (Energy<hEEpZ_Minenergy_ix_iy->getBinContent(ix,iy))
00557 hEEpZ_Minenergy_ix_iy->setBinContent(ix,iy, Energy);
00558 }
00559 }
00560 edm::LogInfo("OutputInfo") << "Done Looping over EE" << std::endl;
00561 for (int iEtaRing = 0; iEtaRing<101; iEtaRing++)
00562 {
00563 hEEpZ_Maxenergyvsir->Fill(iEtaRing, EEpZMaxEnergy_EtaRing[iEtaRing]);
00564 hEEpZ_Minenergyvsir->Fill(iEtaRing, EEpZMinEnergy_EtaRing[iEtaRing]);
00565 hEEmZ_Maxenergyvsir->Fill(iEtaRing, EEmZMaxEnergy_EtaRing[iEtaRing]);
00566 hEEmZ_Minenergyvsir->Fill(iEtaRing, EEmZMinEnergy_EtaRing[iEtaRing]);
00567
00568 if (EEpZActiveRing[iEtaRing])
00569 {
00570 hEEpZ_METvsir->Fill(iEtaRing, vEEpZMET_EtaRing[iEtaRing].Pt());
00571 hEEpZ_METPhivsir->Fill(iEtaRing, vEEpZMET_EtaRing[iEtaRing].Phi());
00572 hEEpZ_MExvsir->Fill(iEtaRing, vEEpZMET_EtaRing[iEtaRing].Px());
00573 hEEpZ_MEyvsir->Fill(iEtaRing, vEEpZMET_EtaRing[iEtaRing].Py());
00574 hEEpZ_SETvsir->Fill(iEtaRing, EEpZSET_EtaRing[iEtaRing]);
00575 hEEpZ_Occvsir->Fill(iEtaRing, EEpZNActiveCells[iEtaRing]);
00576 }
00577
00578 if (EEmZActiveRing[iEtaRing])
00579 {
00580 hEEmZ_METvsir->Fill(iEtaRing, vEEmZMET_EtaRing[iEtaRing].Pt());
00581 hEEmZ_METPhivsir->Fill(iEtaRing, vEEmZMET_EtaRing[iEtaRing].Phi());
00582 hEEmZ_MExvsir->Fill(iEtaRing, vEEmZMET_EtaRing[iEtaRing].Px());
00583 hEEmZ_MEyvsir->Fill(iEtaRing, vEEmZMET_EtaRing[iEtaRing].Py());
00584 hEEmZ_SETvsir->Fill(iEtaRing, EEmZSET_EtaRing[iEtaRing]);
00585 hEEmZ_Occvsir->Fill(iEtaRing, EEmZNActiveCells[iEtaRing]);
00586 }
00587 }
00588 edm::LogInfo("OutputInfo") << "Done ..." << std::endl;
00589 }
00590
00591
00592