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

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

Definition at line 29 of file HcalShapes.h.

Member Enumeration Documentation

anonymous enum
Enumerator
HPD 
LONG 
ZECOTEK 
HAMAMATSU 
HE2017 
HE2018 
HF 
ZDC 

Definition at line 20 of file HcalShapes.h.

Constructor & Destructor Documentation

HcalShapes::HcalShapes ( )

Definition at line 12 of file HcalShapes.cc.

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

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 }
ZDCShape theZDCShape
Definition: HcalShapes.h:36
const HcalDbService * theDbService
Definition: HcalShapes.h:33
std::vector< HcalShape > theHcalShapes
Definition: HcalShapes.h:38
ShapeMap theShapes
Definition: HcalShapes.h:34
ShapeMap theShapesPrecise
Definition: HcalShapes.h:35
HcalShapes::~HcalShapes ( )
override

Definition at line 42 of file HcalShapes.cc.

References theShapes.

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

Member Function Documentation

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

Definition at line 64 of file HcalShapes.cc.

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

Referenced by shape().

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 }
Electronic response of the preamp.
Definition: CaloVShape.h:11
const ShapeMap & getShapeMap(bool precise) const
Definition: HcalShapes.cc:85
HcalGenericSubdetector genericSubdet() const
const HcalShapes::ShapeMap & HcalShapes::getShapeMap ( bool  precise) const
private

Definition at line 85 of file HcalShapes.cc.

References theShapes, and theShapesPrecise.

Referenced by defaultShape(), and shape().

85  {
87 }
ShapeMap theShapes
Definition: HcalShapes.h:34
ShapeMap theShapesPrecise
Definition: HcalShapes.h:35
void HcalShapes::setDbService ( const HcalDbService service)
inline

Definition at line 24 of file HcalShapes.h.

References hltPixelTracks_cff::precise, shape(), and theDbService.

Referenced by HcalDigitizer::initializeEvent().

24 { theDbService = service; }
const HcalDbService * theDbService
Definition: HcalShapes.h:33
const CaloVShape * HcalShapes::shape ( const DetId detId,
bool  precise = false 
) const
overridevirtual

Reimplemented from CaloShapes.

Definition at line 49 of file HcalShapes.cc.

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

Referenced by setDbService().

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 }
const CaloVShape * defaultShape(const DetId &detId, bool precise=false) const
Definition: HcalShapes.cc:64
const HcalMCParam * getHcalMCParam(const HcalGenericDetId &fId) const
const ShapeMap & getShapeMap(bool precise) const
Definition: HcalShapes.cc:85
unsigned int signalShape() const
Definition: HcalMCParam.h:38
const HcalDbService * theDbService
Definition: HcalShapes.h:33

Member Data Documentation

const HcalDbService* HcalShapes::theDbService
private

Definition at line 33 of file HcalShapes.h.

Referenced by setDbService(), and shape().

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

Definition at line 38 of file HcalShapes.h.

Referenced by HcalShapes().

ShapeMap HcalShapes::theShapes
private

Definition at line 34 of file HcalShapes.h.

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

ShapeMap HcalShapes::theShapesPrecise
private

Definition at line 35 of file HcalShapes.h.

Referenced by getShapeMap(), and HcalShapes().

ZDCShape HcalShapes::theZDCShape
private

Definition at line 36 of file HcalShapes.h.

Referenced by HcalShapes().