CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Private Types | Private Member Functions | Private Attributes
HcalShapes Class Reference

#include <HcalShapes.h>

Inheritance diagram for HcalShapes:
CaloShapes

Public Types

enum  {
  HPD = 101, LONG = 102, ZECOTEK = 201, HAMAMATSU = 202,
  HE2017 = 203, HE2018 = 206, HF = 301, ZDC = 401
}
 

Public Member Functions

 HcalShapes ()
 
void setDbService (const HcalDbService *service)
 
const CaloVShapeshape (const DetId &detId, bool precise=false) const override
 
 ~HcalShapes () override
 
- Public Member Functions inherited from CaloShapes
 CaloShapes ()
 
 CaloShapes (const CaloVShape *shape)
 
virtual ~CaloShapes ()=default
 

Private Types

typedef std::map< int, const CaloVShape * > ShapeMap
 

Private Member Functions

const CaloVShapedefaultShape (const DetId &detId, bool precise=false) const
 
const ShapeMapgetShapeMap (bool precise) const
 

Private Attributes

const HcalDbServicetheDbService
 
std::vector< HcalShapetheHcalShapes
 
ShapeMap theShapes
 
ShapeMap theShapesPrecise
 
ZDCShape theZDCShape
 

Detailed Description

Definition at line 18 of file HcalShapes.h.

Member Typedef Documentation

◆ ShapeMap

typedef std::map<int, const CaloVShape*> HcalShapes::ShapeMap
private

Definition at line 29 of file HcalShapes.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
HPD 
LONG 
ZECOTEK 
HAMAMATSU 
HE2017 
HE2018 
HF 
ZDC 

Definition at line 20 of file HcalShapes.h.

20 { HPD = 101, LONG = 102, ZECOTEK = 201, HAMAMATSU = 202, HE2017 = 203, HE2018 = 206, HF = 301, ZDC = 401 };

Constructor & Destructor Documentation

◆ HcalShapes()

HcalShapes::HcalShapes ( )

Definition at line 12 of file HcalShapes.cc.

12  : 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  301 - regular HF PMT shape
24  401 - regular ZDC shape
25  */
26 
27  std::vector<int> theHcalShapeNums = {101, 102, 103, 104, 105, 123, 124, 125, 201, 202, 203, 205, 206, 207, 301};
28  // use resize so vector won't invalidate pointers by reallocating memory while filling
29  theHcalShapes.resize(theHcalShapeNums.size());
30  for (unsigned inum = 0; inum < theHcalShapeNums.size(); ++inum) {
31  int num = theHcalShapeNums[inum];
32  theHcalShapes[inum].setShape(num);
35  }
36 
37  // ZDC not yet defined in CalibCalorimetry/HcalAlgos/src/HcalPulseShapes.cc
40 }

References EgammaValidation_cff::num, theHcalShapes, theShapes, theShapesPrecise, theZDCShape, and ZDC.

◆ ~HcalShapes()

HcalShapes::~HcalShapes ( )
override

Definition at line 42 of file HcalShapes.cc.

42  {
43  for (auto& shapeItr : theShapes) {
44  delete shapeItr.second;
45  }
46  theShapes.clear();
47 }

References theShapes.

Member Function Documentation

◆ defaultShape()

const CaloVShape * HcalShapes::defaultShape ( const DetId detId,
bool  precise = false 
) const
private

Definition at line 64 of file HcalShapes.cc.

64  {
65  // try to figure the appropriate shape
66  const CaloVShape* result;
67  const auto& myShapes = getShapeMap(precise);
70  result = myShapes.find(HPD)->second;
71  else if (subdet == HcalGenericDetId::HcalGenOuter)
72  result = myShapes.find(HPD)->second;
73  else if (subdet == HcalGenericDetId::HcalGenForward)
74  result = myShapes.find(HF)->second;
75  else if (subdet == HcalGenericDetId::HcalGenZDC)
76  result = myShapes.find(ZDC)->second;
77  else
78  result = nullptr;
79 
80  edm::LogWarning("HcalShapes") << "Cannot find HCAL MC Params, so the default one is taken for subdet " << subdet;
81 
82  return result;
83 }

References HcalGenericDetId::genericSubdet(), getShapeMap(), HcalGenericDetId::HcalGenBarrel, HcalGenericDetId::HcalGenEndcap, HcalGenericDetId::HcalGenForward, HcalGenericDetId::HcalGenOuter, HcalGenericDetId::HcalGenZDC, HF, HPD, hltPixelTracks_cff::precise, mps_fire::result, and ZDC.

Referenced by shape().

◆ getShapeMap()

const HcalShapes::ShapeMap & HcalShapes::getShapeMap ( bool  precise) const
private

Definition at line 85 of file HcalShapes.cc.

85  {
87 }

References hltPixelTracks_cff::precise, theShapes, and theShapesPrecise.

Referenced by defaultShape(), and shape().

◆ setDbService()

void HcalShapes::setDbService ( const HcalDbService service)
inline

Definition at line 24 of file HcalShapes.h.

24 { theDbService = service; }

References theDbService.

Referenced by HcalDigitizer::initializeEvent().

◆ shape()

const CaloVShape * HcalShapes::shape ( const DetId detId,
bool  precise = false 
) const
overridevirtual

Reimplemented from CaloShapes.

Definition at line 49 of file HcalShapes.cc.

49  {
50  if (!theDbService) {
51  return defaultShape(detId);
52  }
53  int shapeType = theDbService->getHcalMCParam(detId)->signalShape();
54  const auto& myShapes = getShapeMap(precise);
55  auto shapeMapItr = myShapes.find(shapeType);
56  if (shapeMapItr == myShapes.end()) {
57  edm::LogWarning("HcalShapes") << "HcalShapes::shape - shapeType ? = " << shapeType << std::endl;
58  return defaultShape(detId, precise);
59  } else {
60  return shapeMapItr->second;
61  }
62 }

References defaultShape(), HcalDbService::getHcalMCParam(), getShapeMap(), hltPixelTracks_cff::precise, HcalMCParam::signalShape(), and theDbService.

Member Data Documentation

◆ theDbService

const HcalDbService* HcalShapes::theDbService
private

Definition at line 33 of file HcalShapes.h.

Referenced by setDbService(), and shape().

◆ theHcalShapes

std::vector<HcalShape> HcalShapes::theHcalShapes
private

Definition at line 38 of file HcalShapes.h.

Referenced by HcalShapes().

◆ theShapes

ShapeMap HcalShapes::theShapes
private

Definition at line 34 of file HcalShapes.h.

Referenced by getShapeMap(), HcalShapes(), and ~HcalShapes().

◆ theShapesPrecise

ShapeMap HcalShapes::theShapesPrecise
private

Definition at line 35 of file HcalShapes.h.

Referenced by getShapeMap(), and HcalShapes().

◆ theZDCShape

ZDCShape HcalShapes::theZDCShape
private

Definition at line 36 of file HcalShapes.h.

Referenced by HcalShapes().

service
Definition: service.py:1
HcalShapes::getShapeMap
const ShapeMap & getShapeMap(bool precise) const
Definition: HcalShapes.cc:85
hltPixelTracks_cff.precise
precise
Definition: hltPixelTracks_cff.py:32
HcalGenericDetId
Definition: HcalGenericDetId.h:15
HcalShapes::theShapesPrecise
ShapeMap theShapesPrecise
Definition: HcalShapes.h:35
HcalGenericDetId::HcalGenEndcap
Definition: HcalGenericDetId.h:20
HcalShapes::theZDCShape
ZDCShape theZDCShape
Definition: HcalShapes.h:36
HcalShapes::theDbService
const HcalDbService * theDbService
Definition: HcalShapes.h:33
HcalDbService::getHcalMCParam
const HcalMCParam * getHcalMCParam(const HcalGenericDetId &fId) const
Definition: HcalDbService.cc:398
HcalGenericDetId::HcalGenZDC
Definition: HcalGenericDetId.h:24
HcalShapes::theShapes
ShapeMap theShapes
Definition: HcalShapes.h:34
HcalShapes::defaultShape
const CaloVShape * defaultShape(const DetId &detId, bool precise=false) const
Definition: HcalShapes.cc:64
HcalShapes::HE2017
Definition: HcalShapes.h:20
CaloCachedShapeIntegrator
Definition: CaloCachedShapeIntegrator.h:12
HcalShapes::LONG
Definition: HcalShapes.h:20
edm::LogWarning
Definition: MessageLogger.h:141
HcalShapes::theHcalShapes
std::vector< HcalShape > theHcalShapes
Definition: HcalShapes.h:38
HcalGenericDetId::HcalGenericSubdetector
HcalGenericSubdetector
Definition: HcalGenericDetId.h:17
HcalShapes::ZECOTEK
Definition: HcalShapes.h:20
HcalShapes::ZDC
Definition: HcalShapes.h:20
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
HcalShapes::HE2018
Definition: HcalShapes.h:20
HcalMCParam::signalShape
unsigned int signalShape() const
Definition: HcalMCParam.h:38
HcalGenericDetId::genericSubdet
HcalGenericSubdetector genericSubdet() const
Definition: HcalGenericDetId.cc:21
HcalShapes::HAMAMATSU
Definition: HcalShapes.h:20
HcalShapes::HPD
Definition: HcalShapes.h:20
HcalGenericDetId::HcalGenOuter
Definition: HcalGenericDetId.h:21
mps_fire.result
result
Definition: mps_fire.py:303
HcalGenericDetId::HcalGenForward
Definition: HcalGenericDetId.h:22
HcalShapes::HF
Definition: HcalShapes.h:20