CMS 3D CMS Logo

EcalEleCalibLooper.cc
Go to the documentation of this file.
1 #include <memory>
2 #include <cmath>
3 #include <iostream>
26 #include "TH1.h"
27 #include "TH2.h"
28 #include "TFile.h"
29 
30 //----------------------------------------------------------------
31 
34  : m_barrelAlCa(iConfig.getParameter<edm::InputTag>("alcaBarrelHitCollection")),
35  m_endcapAlCa(iConfig.getParameter<edm::InputTag>("alcaEndcapHitCollection")),
36  m_recoWindowSidex(iConfig.getParameter<int>("recoWindowSidex")),
37  m_recoWindowSidey(iConfig.getParameter<int>("recoWindowSidey")),
38  m_etaWidth(iConfig.getParameter<int>("etaWidth")),
39  m_phiWidthEB(iConfig.getParameter<int>("phiWidthEB")),
40  m_etaStart(etaShifter(iConfig.getParameter<int>("etaStart"))),
41  m_etaEnd(etaShifter(iConfig.getParameter<int>("etaEnd"))),
42  m_phiStartEB(iConfig.getParameter<int>("phiStartEB")),
43  m_phiEndEB(iConfig.getParameter<int>("phiEndEB")),
44  m_radStart(iConfig.getParameter<int>("radStart")),
45  m_radEnd(iConfig.getParameter<int>("radEnd")),
46  m_radWidth(iConfig.getParameter<int>("radWidth")),
47  m_phiStartEE(iConfig.getParameter<int>("phiStartEE")),
48  m_phiEndEE(iConfig.getParameter<int>("phiEndEE")),
49  m_phiWidthEE(iConfig.getParameter<int>("phiWidthEE")),
50  m_maxSelectedNumPerXtal(iConfig.getParameter<int>("maxSelectedNumPerCrystal")),
51  m_minEnergyPerCrystal(iConfig.getParameter<double>("minEnergyPerCrystal")),
52  m_maxEnergyPerCrystal(iConfig.getParameter<double>("maxEnergyPerCrystal")),
53  m_minCoeff(iConfig.getParameter<double>("minCoeff")),
54  m_maxCoeff(iConfig.getParameter<double>("maxCoeff")),
55  m_usingBlockSolver(iConfig.getParameter<int>("usingBlockSolver")),
56  m_loops(iConfig.getParameter<int>("loops")),
57  m_ElectronLabel(iConfig.getParameter<edm::InputTag>("electronLabel")) {
58  edm::LogInfo("IML") << "[EcalEleCalibLooper][ctor] asserts";
60 
61  assert(m_etaStart >= 0 && m_etaStart <= 171);
62  assert(m_etaEnd >= m_etaStart && m_etaEnd <= 171);
64  assert(m_radStart >= 0 && m_radStart <= 50);
65  assert(m_radEnd >= m_radStart && m_radEnd <= 50);
66  edm::LogInfo("IML") << "[EcalEleCalibLooper][ctor] entering ";
67  edm::LogInfo("IML") << "[EcalEleCalibLooper][ctor] region definition";
71  TH2F* EBRegion = new TH2F("EBRegion", "EBRegion", 170, 0, 170, 360, 0, 360);
72  for (int eta = 0; eta < 170; ++eta)
73  for (int phi = 0; phi < 360; ++phi) {
74  EBRegion->Fill(eta, phi, m_xtalRegionId[EBDetId::unhashIndex(eta * 360 + phi).rawId()]);
75  }
76  TH2F* EERegion = new TH2F("EERegion", "EERegion", 100, 0, 100, 100, 0, 100);
77  for (int x = 0; x < 100; ++x)
78  for (int y = 0; y < 100; ++y) {
79  if (EEDetId::validDetId(x + 1, y + 1, 1))
80  EERegion->Fill(x, y, m_xtalRegionId[EEDetId(x + 1, y + 1, -1).rawId()]);
81  }
82 
83  TFile out("EBZone.root", "recreate");
84  EBRegion->Write();
85  EERegion->Write();
86  out.Close();
87  delete EERegion;
88  delete EBRegion;
90 
91  //PG build the calibration algorithms for the regions
92  //PG ------------------------------------------------
93 
94  edm::LogInfo("IML") << "[EcalEleCalibLooper][ctor] Calib Block";
95  std::string algorithm = iConfig.getParameter<std::string>("algorithm");
96  int eventWeight = iConfig.getUntrackedParameter<int>("L3EventWeight", 1);
97 
98  //PG loop over the regions set
99  for (int region = 0; region < EBregionsNum() + 2 * EEregionsNum(); ++region) {
100  if (algorithm == "IMA")
101  m_EcalCalibBlocks.push_back(new IMACalibBlock(m_regions.at(region)));
102  else if (algorithm == "L3")
103  m_EcalCalibBlocks.push_back(new L3CalibBlock(m_regions.at(region), eventWeight));
104  else {
105  edm::LogError("building") << algorithm << " is not a valid calibration algorithm";
106  exit(1);
107  }
108  } //PG loop over the regions set
109  std::string mapFiller = iConfig.getParameter<std::string>("FillType");
110  if (mapFiller == "Cluster")
117  &m_barrelMap,
118  &m_endcapMap);
119  if (mapFiller == "Matrix")
126  &m_barrelMap,
127  &m_endcapMap);
128 } //end ctor
129 
130 //---------------------------------------------------------------------------
131 
134  edm::LogInfo("IML") << "[EcalEleCalibLooper][dtor]";
135  for (std::vector<VEcalCalibBlock*>::iterator calibBlock = m_EcalCalibBlocks.begin();
136  calibBlock != m_EcalCalibBlocks.end();
137  ++calibBlock)
138  delete (*calibBlock);
139 }
140 
141 //---------------------------------------------------------------------------
142 
145 
146 //----------------------------------------------------------------------
147 
150 void EcalEleCalibLooper::startingNewLoop(unsigned int ciclo) {
151  edm::LogInfo("IML") << "[InvMatrixCalibLooper][Start] entering loop " << ciclo;
152 
153  for (std::vector<VEcalCalibBlock*>::iterator calibBlock = m_EcalCalibBlocks.begin();
154  calibBlock != m_EcalCalibBlocks.end();
155  ++calibBlock)
156  (*calibBlock)->reset();
157  for (std::map<int, int>::iterator it = m_xtalNumOfHits.begin(); it != m_xtalNumOfHits.end(); ++it)
158  it->second = 0;
159  return;
160 }
161 
162 //----------------------------------------------------------------------
163 
167  // this chunk used to belong to beginJob(isetup). Moved here
168  // with the beginJob without arguments migration
169 
170  if (isfirstcall_) {
171  edm::ESHandle<CaloGeometry> geoHandle;
172  iSetup.get<CaloGeometryRecord>().get(geoHandle);
173  const CaloGeometry& geometry = *geoHandle;
174  m_barrelCells = geometry.getValidDetIds(DetId::Ecal, EcalBarrel);
175  m_endcapCells = geometry.getValidDetIds(DetId::Ecal, EcalEndcap);
176  for (std::vector<DetId>::const_iterator barrelIt = m_barrelCells.begin(); barrelIt != m_barrelCells.end();
177  ++barrelIt) {
178  m_barrelMap[*barrelIt] = 1;
179  m_xtalNumOfHits[barrelIt->rawId()] = 0;
180  }
181  for (std::vector<DetId>::const_iterator endcapIt = m_endcapCells.begin(); endcapIt != m_endcapCells.end();
182  ++endcapIt) {
183  m_endcapMap[*endcapIt] = 1;
184  m_xtalNumOfHits[endcapIt->rawId()] = 0;
185  }
186 
187  isfirstcall_ = false;
188  }
189 
190  //take the collection of recHits in the barrel
191  const EBRecHitCollection* barrelHitsCollection = nullptr;
192  edm::Handle<EBRecHitCollection> barrelRecHitsHandle;
193  iEvent.getByLabel(m_barrelAlCa, barrelRecHitsHandle);
194  barrelHitsCollection = barrelRecHitsHandle.product();
195  if (!barrelRecHitsHandle.isValid()) {
196  edm::LogError("reading") << "[EcalEleCalibLooper] barrel rec hits not found";
197  return kContinue;
198  }
199 
200  //take the collection of rechis in the endcap
201  const EERecHitCollection* endcapHitsCollection = nullptr;
202  edm::Handle<EERecHitCollection> endcapRecHitsHandle;
203  iEvent.getByLabel(m_endcapAlCa, endcapRecHitsHandle);
204  endcapHitsCollection = endcapRecHitsHandle.product();
205  if (!endcapRecHitsHandle.isValid()) {
206  edm::LogError("reading") << "[EcalEleCalibLooper] endcap rec hits not found";
207  return kContinue;
208  }
209 
210  //Takes the electron collection of the pixel detector
212  iEvent.getByLabel(m_ElectronLabel, pElectrons);
213  if (!pElectrons.isValid()) {
214  edm::LogError("reading") << "[EcalEleCalibLooper] electrons not found";
215  return kContinue;
216  }
217 
218  //Start the loop over the electrons
219  for (reco::GsfElectronCollection::const_iterator eleIt = pElectrons->begin(); eleIt != pElectrons->end(); ++eleIt) {
220  double pSubtract = 0;
221  double pTk = 0;
222  std::map<int, double> xtlMap;
223  DetId Max = 0;
224  if (std::abs(eleIt->eta()) < 1.49)
225  Max = EcalClusterTools::getMaximum(eleIt->superCluster()->hitsAndFractions(), barrelHitsCollection).first;
226  else
227  Max = EcalClusterTools::getMaximum(eleIt->superCluster()->hitsAndFractions(), endcapHitsCollection).first;
228  if (Max.det() == 0)
229  continue;
231  eleIt->superCluster()->hitsAndFractions(), Max, barrelHitsCollection, endcapHitsCollection, xtlMap, pSubtract);
233  continue;
234  ++m_xtalNumOfHits[Max.rawId()];
235  if (m_xtalRegionId[Max.rawId()] == -1)
236  continue;
237  pTk = eleIt->trackMomentumAtVtx().R();
238  m_EcalCalibBlocks.at(m_xtalRegionId[Max.rawId()])->Fill(xtlMap.begin(), xtlMap.end(), pTk, pSubtract);
239  } //End of the loop over the electron collection
240 
241  return kContinue;
242 } //end of duringLoop
243 
244 //----------------------------------------------------------------------
245 
250  edm::LogInfo("IML") << "[InvMatrixCalibLooper][endOfLoop] entering...";
251  for (std::vector<VEcalCalibBlock*>::iterator calibBlock = m_EcalCalibBlocks.begin();
252  calibBlock != m_EcalCalibBlocks.end();
253  ++calibBlock)
254  (*calibBlock)->solve(m_usingBlockSolver, m_minCoeff, m_maxCoeff);
255 
256  TH1F* EBcoeffEnd = new TH1F("EBRegion", "EBRegion", 100, 0.5, 2.1);
257  TH2F* EBcoeffMap = new TH2F("EBcoeff", "EBcoeff", 171, -85, 85, 360, 1, 361);
258  TH1F* EEPcoeffEnd = new TH1F("EEPRegion", "EEPRegion", 100, 0.5, 2.1);
259  TH1F* EEMcoeffEnd = new TH1F("EEMRegion", "EEMRegion", 100, 0.5, 2.1);
260  TH2F* EEPcoeffMap = new TH2F("EEPcoeffMap", "EEPcoeffMap", 101, 1, 101, 101, 0, 101);
261  TH2F* EEMcoeffMap = new TH2F("EEMcoeffMap", "EEMcoeffMap", 101, 1, 101, 101, 0, 101);
262  //loop over the barrel xtals to get the coeffs
263  for (std::vector<DetId>::const_iterator barrelIt = m_barrelCells.begin(); barrelIt != m_barrelCells.end();
264  ++barrelIt) {
265  EBDetId ee(*barrelIt);
266  int index = barrelIt->rawId();
267  if (m_xtalRegionId[index] == -1)
268  continue;
270  EBcoeffEnd->Fill(m_barrelMap[*barrelIt]);
271  EBcoeffMap->Fill(ee.ieta(), ee.iphi(), m_barrelMap[*barrelIt]);
272  } //PG loop over phi
273 
274  // loop over the EndCap to get the recalib coefficients
275  for (std::vector<DetId>::const_iterator endcapIt = m_endcapCells.begin(); endcapIt != m_endcapCells.end();
276  ++endcapIt) {
277  EEDetId ee(*endcapIt);
278  int index = endcapIt->rawId();
279  if (ee.zside() > 0) {
280  if (m_xtalRegionId[index] == -1)
281  continue;
283  EEPcoeffEnd->Fill(m_endcapMap[*endcapIt]);
284  EEPcoeffMap->Fill(ee.ix(), ee.iy(), m_endcapMap[*endcapIt]);
285  } else {
287  EEMcoeffEnd->Fill(m_endcapMap[*endcapIt]);
288  EEMcoeffMap->Fill(ee.ix(), ee.iy(), m_endcapMap[*endcapIt]);
289  }
290  } // loop over the EndCap to get the recalib coefficients
291 
292  edm::LogInfo("IML") << "[InvMatrixCalibLooper][endOfLoop] End of endOfLoop";
293 
294  char filename[80];
295  sprintf(filename, "coeffs%d.root", iCounter);
296  TFile zout(filename, "recreate");
297  EBcoeffEnd->Write();
298  EBcoeffMap->Write();
299  EEPcoeffEnd->Write();
300  EEPcoeffMap->Write();
301  EEMcoeffEnd->Write();
302  EEMcoeffMap->Write();
303  zout.Close();
304  delete EBcoeffEnd;
305  delete EBcoeffMap;
306  delete EEPcoeffEnd;
307  delete EEMcoeffEnd;
308  delete EEPcoeffMap;
309  delete EEMcoeffMap;
310  if (iCounter < m_loops - 1)
311  return kContinue;
312  else
313  return kStop;
314 }
315 
316 //-------------------------------------------------------------------
317 
321  edm::LogInfo("IML") << "[InvMatrixCalibLooper][endOfJob] saving calib coeffs";
322 
323  //Writes the coeffs
324  calibXMLwriter barrelWriter(EcalBarrel);
325  calibXMLwriter endcapWriter(EcalEndcap);
326  for (std::vector<DetId>::const_iterator barrelIt = m_barrelCells.begin(); barrelIt != m_barrelCells.end();
327  ++barrelIt) {
328  EBDetId eb(*barrelIt);
329  barrelWriter.writeLine(eb, m_barrelMap[*barrelIt]);
330  }
331  for (std::vector<DetId>::const_iterator endcapIt = m_endcapCells.begin(); endcapIt != m_endcapCells.end();
332  ++endcapIt) {
333  EEDetId ee(*endcapIt);
334  endcapWriter.writeLine(ee, m_endcapMap[*endcapIt]);
335  }
336  edm::LogInfo("IML") << "[InvMatrixCalibLooper][endOfJob] Exiting";
337 }
338 
339 //------------------------------------//
340 // definition of functions //
341 //------------------------------------//
342 
344 int EcalEleCalibLooper::EBregionCheck(const int eta, const int phi) const {
345  if (eta < m_etaStart)
346  return 1;
347  if (eta >= m_etaEnd)
348  return 2;
349  if (phi < m_phiStartEB)
350  return 3;
351  if (phi >= m_phiEndEB)
352  return 4;
353  return 0;
354 }
355 
356 //--------------------------------------------
357 
359 inline double degrees(double radiants) { return radiants * 180 * (1 / M_PI); }
360 
361 //--------------------------------------------
362 
364 inline double radiants(int degrees) { return degrees * M_PI * (1 / 180); }
365 
366 //--------------------------------------------
367 
370  //PG 200 > atan (50/0.5)
371  if (degrees == 90)
372  return 90;
373  return tan(radiants(degrees));
374 }
375 
376 //--------------------------------------------
377 
379 inline double Mod(double phi) {
380  if (phi >= 360 && phi < 720)
381  return phi - 360;
382  if (phi >= 720)
383  return phi - 720;
384  return phi;
385 }
386 
387 //----------------------------------------
388 
390 int EcalEleCalibLooper::EBRegionId(const int etaXtl, const int phiXtl) const {
391  if (EBregionCheck(etaXtl, phiXtl))
392  return -1;
393  int phifake = m_phiStartEB;
394  if (m_phiStartEB > m_phiEndEB)
395  phifake = m_phiStartEB - 360;
396  int Nphi = (m_phiEndEB - phifake) / m_phiWidthEB;
397  int etaI = (etaXtl - m_etaStart) / m_etaWidth;
398  int phiI = (phiXtl - m_phiStartEB) / m_phiWidthEB;
399  int regionNumEB = phiI + Nphi * etaI;
400  return (int)regionNumEB;
401 }
402 
403 //----------------------------------------
404 
406 int EcalEleCalibLooper::EERegionId(const int ics, const int ips) const {
407  if (EEregionCheck(ics, ips))
408  return -1;
409  int phifake = m_phiStartEE;
410  if (m_phiStartEE > m_phiEndEE)
411  phifake = m_phiStartEE - 360;
412  double radius = (ics - 50) * (ics - 50) + (ips - 50) * (ips - 50);
413  radius = sqrt(radius);
414  int Nphi = (m_phiEndEE - phifake) / m_phiWidthEE;
415  double phi = atan2(static_cast<double>(ips - 50), static_cast<double>(ics - 50));
416  phi = degrees(phi);
417  if (phi < 0)
418  phi += 360;
419  int radI = static_cast<int>((radius - m_radStart) / m_radWidth);
420  int phiI = static_cast<int>((m_phiEndEE - phi) / m_phiWidthEE);
421  int regionNumEE = phiI + Nphi * radI;
422  return regionNumEE;
423 }
424 
425 //----------------------------------------
426 
429  int phifake = m_phiStartEE;
430  if (m_phiStartEE > m_phiEndEE)
431  phifake = m_phiStartEE - 360;
432  return ((m_radEnd - m_radStart) / m_radWidth) * ((m_phiEndEE - phifake) / m_phiWidthEE);
433 }
434 
435 //----------------------------------------
436 
439  int phi = m_phiStartEB;
440  if (m_phiStartEB > m_phiEndEB)
441  phi = m_phiStartEB - 360;
442  return ((m_etaEnd - m_etaStart) / m_etaWidth) * ((m_phiEndEB - phi) / m_phiWidthEB);
443 }
444 
445 //----------------------------------------
446 
449  int reg = -1;
450  for (int it = 0; it < EBregionsNum(); ++it)
451  m_regions.push_back(0);
452  for (int eta = 0; eta < 170; ++eta)
453  for (int phi = 0; phi < 360; ++phi) {
454  reg = EBRegionId(eta, phi);
455  m_xtalRegionId[EBDetId::unhashIndex(eta * 360 + phi).rawId()] = reg;
456  if (reg == -1)
457  continue;
459  ++m_regions.at(reg);
460  }
461 }
462 
463 //----------------------------------------
464 
465 //DS EE Region Definition
467  // reset
468  int EBnum = EBregionsNum();
469  int EEnum = EEregionsNum();
470  for (int it = 0; it < 2 * EEnum; ++it)
471  m_regions.push_back(0);
472  // loop sui xtl
473  int reg = -1;
474  for (int ics = 0; ics < 100; ++ics)
475  for (int ips = 0; ips < 100; ++ips) {
476  int ireg = EERegionId(ics, ips);
477  if (ireg == -1)
478  reg = -1;
479  else
480  reg = EBnum + ireg;
481  if (EEDetId::validDetId(ics + 1, ips + 1, 1)) {
482  m_xtalRegionId[EEDetId(ics + 1, ips + 1, 1).rawId()] = reg;
483  if (reg == -1)
484  continue;
485  m_xtalPositionInRegion[EEDetId(ics + 1, ips + 1, 1).rawId()] = m_regions.at(reg);
486  ++m_regions.at(reg);
487  }
488  if (reg != -1)
489  reg += EEnum;
490  if (EEDetId::validDetId(ics + 1, ips + 1, -1)) {
491  m_xtalRegionId[EEDetId(ics + 1, ips + 1, -1).rawId()] = reg;
492  if (reg == -1)
493  continue;
494  m_xtalPositionInRegion[EEDetId(ics + 1, ips + 1, -1).rawId()] = m_regions.at(reg);
495  ++m_regions.at(reg);
496  }
497  }
498 }
499 
500 //-----------------------------------------
501 
503 int EcalEleCalibLooper::EEregionCheck(const int ics, const int ips) const {
504  int x = ics - 50;
505  int y = ips - 50;
506  double radius2 = x * x + y * y;
507  if (radius2 < 10 * 10)
508  return 1; //center of the donut
509  if (radius2 > 50 * 50)
510  return 1; //outer part of the donut
511  if (radius2 < m_radStart * m_radStart)
512  return 2;
513  if (radius2 >= m_radEnd * m_radEnd)
514  return 2;
515  double phi = atan2(static_cast<double>(y), static_cast<double>(x));
516  phi = degrees(phi);
517  if (phi < 0)
518  phi += 360;
519  if (m_phiStartEE < m_phiEndEE && phi > m_phiStartEE && phi < m_phiEndEE)
520  return 0;
522  return 0;
523  return 3;
524 }
525 
526 //--------------------------------------------
527 
528 //Shifts eta in other coordinates (from 0 to 170)
529 int EcalEleCalibLooper::etaShifter(const int etaOld) const {
530  if (etaOld < 0)
531  return etaOld + 85;
532  else if (etaOld > 0)
533  return etaOld + 84;
534  assert(0 != etaOld); // etaOld = 0, apparently not a foreseen value, so fail
535  return 999; // dummy statement to silence compiler warning
536 }
537 
538 //--------------------------------------------
edm::EDLooperBase::Status
Status
Definition: EDLooperBase.h:79
DDAxes::y
EcalEleCalibLooper::m_endcapAlCa
edm::InputTag m_endcapAlCa
EcalEndcap Input Collection name.
Definition: EcalEleCalibLooper.h:65
Handle.h
EBDetId::ieta
int ieta() const
get the crystal ieta
Definition: EBDetId.h:49
EcalEleCalibLooper::EERegionId
int EERegionId(const int, const int) const
Gives the id of the region.
Definition: EcalEleCalibLooper.cc:406
EcalEleCalibLooper::m_etaEnd
int m_etaEnd
eta end of the region of interest
Definition: EcalEleCalibLooper.h:83
calibXMLwriter
Definition: calibXMLwriter.h:15
EcalEleCalibLooper::m_endcapMap
EcalIntercalibConstantMap m_endcapMap
Definition: EcalEleCalibLooper.h:115
degrees
double degrees(double radiants)
def degrees
Definition: EcalEleCalibLooper.cc:359
EcalEleCalibLooper::EERegionDefinition
void EERegionDefinition()
Definition: EcalEleCalibLooper.cc:466
edm::Handle::product
T const * product() const
Definition: Handle.h:70
EcalEleCalibLooper::m_phiWidthEE
int m_phiWidthEE
Definition: EcalEleCalibLooper.h:95
L3CalibBlock.h
BasicCluster.h
CaloGeometryRecord
Definition: CaloGeometryRecord.h:30
EBDetId
Definition: EBDetId.h:17
EcalEleCalibLooper::EBRegionDefinition
void EBRegionDefinition()
DS EB Region Definition.
Definition: EcalEleCalibLooper.cc:448
edm
HLT enums.
Definition: AlignableModifier.h:19
EcalEleCalibLooper.h
geometry
Definition: geometry.py:1
HLT_FULL_cff.InputTag
InputTag
Definition: HLT_FULL_cff.py:85964
EBDetId::unhashIndex
static EBDetId unhashIndex(int hi)
get a DetId from a compact index for arrays
Definition: EBDetId.h:110
cms::cuda::assert
assert(be >=bs)
edm::SortedCollection< EcalRecHit >
EcalEleCalibLooper::m_minCoeff
double m_minCoeff
minimum coefficient accepted (RAW)
Definition: EcalEleCalibLooper.h:107
edm::ParameterSet::getUntrackedParameter
T getUntrackedParameter(std::string const &, T const &) const
ClusterFillMap
Definition: ClusterFillMap.h:7
DDAxes::x
edm::LogInfo
Log< level::Info, false > LogInfo
Definition: MessageLogger.h:125
EcalEleCalibLooper::m_etaWidth
int m_etaWidth
eta size of the sub-matrix
Definition: EcalEleCalibLooper.h:72
EEDetId::ix
int ix() const
Definition: EEDetId.h:77
edm::Handle
Definition: AssociativeIterator.h:50
dqmdumpme.first
first
Definition: dqmdumpme.py:55
EcalBarrel
Definition: EcalSubdetector.h:10
EcalEleCalibLooper::m_xtalPositionInRegion
std::map< int, int > m_xtalPositionInRegion
Definition: EcalEleCalibLooper.h:135
EcalEleCalibLooper::m_maxSelectedNumPerXtal
int m_maxSelectedNumPerXtal
maximum number of events per crystal
Definition: EcalEleCalibLooper.h:98
EcalEleCalibLooper::m_barrelCells
std::vector< DetId > m_barrelCells
Definition: EcalEleCalibLooper.h:131
EcalEleCalibLooper::m_regions
std::vector< int > m_regions
Definition: EcalEleCalibLooper.h:129
EcalEleCalibLooper::EBregionsNum
int EBregionsNum() const
DS number of regions in EB.
Definition: EcalEleCalibLooper.cc:438
CaloMiscalibTools.h
DetId
Definition: DetId.h:17
MakerMacros.h
CaloGeometry
Definition: CaloGeometry.h:21
EcalEleCalibLooper::m_phiStartEE
int m_phiStartEE
Definition: EcalEleCalibLooper.h:93
edm::EventSetup::get
T get() const
Definition: EventSetup.h:80
EcalEleCalibLooper::giveLimit
double giveLimit(int)
copes with the infinitives of the tangent
Definition: EcalEleCalibLooper.cc:369
EcalEleCalibLooper::m_radEnd
int m_radEnd
Definition: EcalEleCalibLooper.h:90
ClusterShapeFwd.h
EcalEleCalibLooper::m_maxEnergyPerCrystal
double m_maxEnergyPerCrystal
maximum energy per crystal cut
Definition: EcalEleCalibLooper.h:105
edm::EDLooperBase::kStop
Definition: EDLooperBase.h:79
calibXMLwriter::writeLine
void writeLine(EBDetId const &, float)
Definition: calibXMLwriter.cc:32
PVValHelper::eta
Definition: PVValidationHelpers.h:69
EcalEleCalibLooper::m_MapFiller
VFillMap * m_MapFiller
Definition: EcalEleCalibLooper.h:122
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
ClusterFillMap.h
Mod
double Mod(double phi)
autoexplaining
Definition: EcalEleCalibLooper.cc:379
edm::ESHandle< CaloGeometry >
corrVsCorr.filename
filename
Definition: corrVsCorr.py:123
EcalEleCalibLooper::m_barrelMap
EcalIntercalibConstantMap m_barrelMap
the maps of recalib coeffs
Definition: EcalEleCalibLooper.h:114
calibXMLwriter.h
EcalEleCalibLooper::m_phiEndEE
int m_phiEndEE
Definition: EcalEleCalibLooper.h:94
EcalEleCalibLooper::beginOfJob
void beginOfJob() override
BeginOfJob.
Definition: EcalEleCalibLooper.cc:144
EEDetId::zside
int zside() const
Definition: EEDetId.h:71
bsc_activity_cfg.EBnum
EBnum
Definition: bsc_activity_cfg.py:17
EcalEleCalibLooper::m_xtalNumOfHits
std::map< int, int > m_xtalNumOfHits
Definition: EcalEleCalibLooper.h:136
EcalEleCalibLooper::EEregionsNum
int EEregionsNum() const
DS Number of regions in EE.
Definition: EcalEleCalibLooper.cc:428
EEDetId
Definition: EEDetId.h:14
CaloGeometryRecord.h
EcalEleCalibLooper::EBRegionId
int EBRegionId(const int, const int) const
Reg Id generator EB --— for the barrel.
Definition: EcalEleCalibLooper.cc:390
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
EcalEndcap
Definition: EcalSubdetector.h:10
EcalEleCalibLooper::EBregionCheck
int EBregionCheck(const int eta, const int phi) const
Tells if you are in the region to be calibrated.
Definition: EcalEleCalibLooper.cc:344
ClusterShape.h
IMACalibBlock
Definition: IMACalibBlock.h:22
EcalEleCalibLooper::endOfLoop
Status endOfLoop(const edm::EventSetup &, unsigned int iCounter) override
Definition: EcalEleCalibLooper.cc:249
CaloSubdetectorGeometry.h
GsfElectronFwd.h
edm::ParameterSet
Definition: ParameterSet.h:47
EcalEleCalibLooper::m_EcalCalibBlocks
std::vector< VEcalCalibBlock * > m_EcalCalibBlocks
single blocks calibrators
Definition: EcalEleCalibLooper.h:101
PVValHelper::phi
Definition: PVValidationHelpers.h:68
EcalEleCalibLooper::isfirstcall_
bool isfirstcall_
Definition: EcalEleCalibLooper.h:138
EcalEleCalibLooper::m_phiEndEB
int m_phiEndEB
phi end of the region of interest
Definition: EcalEleCalibLooper.h:87
EcalEleCalibLooper::~EcalEleCalibLooper
~EcalEleCalibLooper() override
dtor
Definition: EcalEleCalibLooper.cc:133
EcalEleCalibLooper::m_recoWindowSidey
int m_recoWindowSidey
Definition: EcalEleCalibLooper.h:69
EcalClusterTools.h
qcdUeDQM_cfi.algorithm
algorithm
Definition: qcdUeDQM_cfi.py:32
EcalEleCalibLooper::startingNewLoop
void startingNewLoop(unsigned int) override
Definition: EcalEleCalibLooper.cc:150
funct::tan
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
EcalEleCalibLooper::m_loops
unsigned int m_loops
DS sets the number of loops to do.
Definition: EcalEleCalibLooper.h:118
HLT_FULL_cff.region
region
Definition: HLT_FULL_cff.py:84949
createfilelist.int
int
Definition: createfilelist.py:10
iEvent
int iEvent
Definition: GenABIO.cc:224
EcalEleCalibLooper::etaShifter
int etaShifter(const int) const
LP Change the coordinate system.
Definition: EcalEleCalibLooper.cc:529
EcalEleCalibLooper::m_minEnergyPerCrystal
double m_minEnergyPerCrystal
minimum energy per crystal cut
Definition: EcalEleCalibLooper.h:103
EcalEleCalibLooper::m_maxCoeff
double m_maxCoeff
maximum coefficient accepted (RAW)
Definition: EcalEleCalibLooper.h:109
M_PI
#define M_PI
Definition: BXVectorInputProducer.cc:49
Max
T Max(T a, T b)
Definition: MathUtil.h:44
edm::EventSetup
Definition: EventSetup.h:57
edm::EDLooperBase::kContinue
Definition: EDLooperBase.h:79
edm::LogError
Log< level::Error, false > LogError
Definition: MessageLogger.h:123
DetId::Ecal
Definition: DetId.h:27
get
#define get
EEDetId::iy
int iy() const
Definition: EEDetId.h:83
bsc_activity_cfg.EEnum
EEnum
Definition: bsc_activity_cfg.py:19
HcalObjRepresent::Fill
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
Definition: HcalObjRepresent.h:1053
EcalEleCalibLooper::m_ElectronLabel
edm::InputTag m_ElectronLabel
To take the electrons.
Definition: EcalEleCalibLooper.h:120
EcalEleCalibLooper::m_barrelAlCa
edm::InputTag m_barrelAlCa
EcalBarrel Input Collection name.
Definition: EcalEleCalibLooper.h:63
DDAxes::phi
CaloCellGeometry.h
L3CalibBlock
interface to the L3Univ class for testing
Definition: L3CalibBlock.h:24
DetId::rawId
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
EcalEleCalibLooper::duringLoop
Status duringLoop(const edm::Event &, const edm::EventSetup &) override
Definition: EcalEleCalibLooper.cc:166
EcalEleCalibLooper::m_etaStart
int m_etaStart
phi size of the additive border to the sub-matrix
Definition: EcalEleCalibLooper.h:81
EcalEleCalibLooper::endOfJob
void endOfJob() override
Definition: EcalEleCalibLooper.cc:320
Frameworkfwd.h
MatrixFillMap
Definition: MatrixFillMap.h:7
EcalEleCalibLooper::m_radWidth
int m_radWidth
Definition: EcalEleCalibLooper.h:91
SuperCluster.h
EcalEleCalibLooper::m_xtalRegionId
std::map< int, int > m_xtalRegionId
Definition: EcalEleCalibLooper.h:134
CaloGeometry.h
CosmicsPD_Skims.radius
radius
Definition: CosmicsPD_Skims.py:135
VFillMap::fillMap
virtual void fillMap(const std::vector< std::pair< DetId, float > > &, const DetId, const EcalRecHitCollection *, const EcalRecHitCollection *, std::map< int, double > &xtlMap, double &)=0
The Map filler.
radiants
double radiants(int degrees)
DS def radiants.
Definition: EcalEleCalibLooper.cc:364
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
Ecal07UnpackerData_cfi.ics
ics
Definition: Ecal07UnpackerData_cfi.py:55
AlignmentPI::index
index
Definition: AlignmentPayloadInspectorHelper.h:46
EcalEleCalibLooper::m_phiWidthEB
int m_phiWidthEB
eta size of the additive border to the sub-matrix
Definition: EcalEleCalibLooper.h:76
EEDetId::validDetId
static bool validDetId(int crystal_ix, int crystal_iy, int iz)
Definition: EEDetId.h:248
MatrixFillMap.h
MillePedeFileConverter_cfg.out
out
Definition: MillePedeFileConverter_cfg.py:31
EBDetId::iphi
int iphi() const
get the crystal iphi
Definition: EBDetId.h:51
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
beamvalidation.exit
def exit(msg="")
Definition: beamvalidation.py:53
ParameterSet.h
EcalEleCalibLooper::m_recoWindowSidex
int m_recoWindowSidex
reconstruction window size
Definition: EcalEleCalibLooper.h:68
IMACalibBlock.h
edm::HandleBase::isValid
bool isValid() const
Definition: HandleBase.h:70
edm::Event
Definition: Event.h:73
EcalIntercalibConstantsRcd.h
EcalEleCalibLooper::m_endcapCells
std::vector< DetId > m_endcapCells
Definition: EcalEleCalibLooper.h:132
EcalEleCalibLooper::m_phiStartEB
int m_phiStartEB
phi start of the region of interest
Definition: EcalEleCalibLooper.h:85
EcalEleCalibLooper::EEregionCheck
int EEregionCheck(const int, const int) const
returns zero if the coordinates are in the right place.
Definition: EcalEleCalibLooper.cc:503
EcalEleCalibLooper::EcalEleCalibLooper
EcalEleCalibLooper(const edm::ParameterSet &)
ctor
Definition: EcalEleCalibLooper.cc:33
EcalEleCalibLooper::m_usingBlockSolver
int m_usingBlockSolver
to exclude the blocksolver
Definition: EcalEleCalibLooper.h:111
EcalEleCalibLooper::m_radStart
int m_radStart
DS For the EE.
Definition: EcalEleCalibLooper.h:89