CMS 3D CMS Logo

HcalShapes.cc
Go to the documentation of this file.
11 
12 HcalShapes::HcalShapes() : theDbService(nullptr) {
13  /*
14  00 - not used (reserved)
15  101 - regular HPD HB/HE/HO shape
16  102 - "special" HB HPD#14 long shape
17  201 - SiPMs Zecotec shape (HO)
18  202 - SiPMs Hamamatsu shape (HO)
19  203 - SiPMs Hamamatsu shape (HE 2017)
20  205 - SiPMs from Data (HE data 2017)
21  206 - SiPMs Hamamatsu shape (HE 2018)
22  207 - SiPMs from Data (HE 2017)
23  208 - SiPMs from Data, 2021 MC phase scan
24  301 - regular HF PMT shape
25  401 - regular ZDC shape
26  */
27 
28  std::vector<int> theHcalShapeNums = {101, 102, 103, 104, 105, 123, 124, 125, 201, 202, 203, 205, 206, 207, 208, 301};
29  // use resize so vector won't invalidate pointers by reallocating memory while filling
30  theHcalShapes.resize(theHcalShapeNums.size());
31  for (unsigned inum = 0; inum < theHcalShapeNums.size(); ++inum) {
32  int num = theHcalShapeNums[inum];
33  theHcalShapes[inum].setShape(num);
36  }
37 
38  // ZDC not yet defined in CalibCalorimetry/HcalAlgos/src/HcalPulseShapes.cc
41 }
42 
44  for (auto& shapeItr : theShapes) {
45  delete shapeItr.second;
46  }
47  theShapes.clear();
48 }
49 
50 const CaloVShape* HcalShapes::shape(const DetId& detId, bool precise) const {
51  if (!theDbService) {
52  return defaultShape(detId);
53  }
54  int shapeType = theDbService->getHcalMCParam(detId)->signalShape();
55  const auto& myShapes = getShapeMap(precise);
56  auto shapeMapItr = myShapes.find(shapeType);
57  if (shapeMapItr == myShapes.end()) {
58  edm::LogWarning("HcalShapes") << "HcalShapes::shape - shapeType ? = " << shapeType << std::endl;
59  return defaultShape(detId, precise);
60  } else {
61  return shapeMapItr->second;
62  }
63 }
64 
65 const CaloVShape* HcalShapes::defaultShape(const DetId& detId, bool precise) const {
66  // try to figure the appropriate shape
67  const CaloVShape* result;
68  const auto& myShapes = getShapeMap(precise);
71  result = myShapes.find(HPD)->second;
72  else if (subdet == HcalGenericDetId::HcalGenOuter)
73  result = myShapes.find(HPD)->second;
74  else if (subdet == HcalGenericDetId::HcalGenForward)
75  result = myShapes.find(HF)->second;
76  else if (subdet == HcalGenericDetId::HcalGenZDC)
77  result = myShapes.find(ZDC)->second;
78  else
79  result = nullptr;
80 
81  edm::LogWarning("HcalShapes") << "Cannot find HCAL MC Params, so the default one is taken for subdet " << subdet;
82 
83  return result;
84 }
85 
88 }
HcalShapes::ZDC
Definition: HcalShapes.h:20
HcalShapes::getShapeMap
const ShapeMap & getShapeMap(bool precise) const
Definition: HcalShapes.cc:86
MessageLogger.h
hltPixelTracks_cff.precise
precise
Definition: hltPixelTracks_cff.py:32
ESHandle.h
HcalGenericDetId
Definition: HcalGenericDetId.h:15
HcalShapes::theShapesPrecise
ShapeMap theShapesPrecise
Definition: HcalShapes.h:35
HcalShapes::HcalShapes
HcalShapes()
Definition: HcalShapes.cc:12
HcalShapes.h
HcalGenericDetId::HcalGenEndcap
Definition: HcalGenericDetId.h:20
HcalGenericDetId.h
HcalShapes::theZDCShape
ZDCShape theZDCShape
Definition: HcalShapes.h:36
edm::LogWarning
Log< level::Warning, false > LogWarning
Definition: MessageLogger.h:122
HcalShapes::theDbService
const HcalDbService * theDbService
Definition: HcalShapes.h:33
HcalDbService::getHcalMCParam
const HcalMCParam * getHcalMCParam(const HcalGenericDetId &fId) const
Definition: HcalDbService.cc:399
HcalGenericDetId::HcalGenZDC
Definition: HcalGenericDetId.h:24
DetId
Definition: DetId.h:17
HcalShapes::~HcalShapes
~HcalShapes() override
Definition: HcalShapes.cc:43
HcalShapes::theShapes
ShapeMap theShapes
Definition: HcalShapes.h:34
HcalShapes::defaultShape
const CaloVShape * defaultShape(const DetId &detId, bool precise=false) const
Definition: HcalShapes.cc:65
HcalShapes::shape
const CaloVShape * shape(const DetId &detId, bool precise=false) const override
Definition: HcalShapes.cc:50
CaloCachedShapeIntegrator
Definition: CaloCachedShapeIntegrator.h:12
HcalShapes::theHcalShapes
std::vector< HcalShape > theHcalShapes
Definition: HcalShapes.h:38
HcalGenericDetId::HcalGenericSubdetector
HcalGenericSubdetector
Definition: HcalGenericDetId.h:17
HcalMCParams.h
HcalGenericDetId::HcalGenBarrel
Definition: HcalGenericDetId.h:19
CaloVShape
Electronic response of the preamp.
Definition: CaloVShape.h:11
EgammaValidation_cff.num
num
Definition: EgammaValidation_cff.py:34
HcalMCParam::signalShape
unsigned int signalShape() const
Definition: HcalMCParam.h:38
HcalTopology.h
CaloCachedShapeIntegrator.h
HcalGenericDetId::genericSubdet
HcalGenericSubdetector genericSubdet() const
Definition: HcalGenericDetId.cc:21
HcalMCParamsRcd.h
EventSetup.h
HcalMCParam.h
HcalGenericDetId::HcalGenOuter
Definition: HcalGenericDetId.h:21
mps_fire.result
result
Definition: mps_fire.py:311
HcalShapes::HF
Definition: HcalShapes.h:20
HcalGenericDetId::HcalGenForward
Definition: HcalGenericDetId.h:22
HcalShapes::HPD
Definition: HcalShapes.h:20
HcalShapes::ShapeMap
std::map< int, const CaloVShape * > ShapeMap
Definition: HcalShapes.h:29