CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
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 10 of file HcalShapes.cc.

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

10  : theDbService(nullptr) {
11  /*
12  00 - not used (reserved)
13  101 - regular HPD HB/HE/HO shape
14  102 - "special" HB HPD#14 long shape
15  201 - SiPMs Zecotec shape (HO)
16  202 - SiPMs Hamamatsu shape (HO)
17  203 - SiPMs Hamamatsu shape (HE 2017)
18  205 - SiPMs from Data (HE data 2017)
19  206 - SiPMs Hamamatsu shape (HE 2018)
20  207 - SiPMs from Data (HE 2017)
21  208 - SiPMs from Data, 2021 MC phase scan
22  301 - regular HF PMT shape
23  401 - regular ZDC shape
24  */
25 
26  std::vector<int> theHcalShapeNums = {101, 102, 103, 104, 105, 123, 124, 125, 201, 202, 203, 205, 206, 207, 208, 301};
27  // use resize so vector won't invalidate pointers by reallocating memory while filling
28  theHcalShapes.resize(theHcalShapeNums.size());
29  for (unsigned inum = 0; inum < theHcalShapeNums.size(); ++inum) {
30  int num = theHcalShapeNums[inum];
31  theHcalShapes[inum].setShape(num);
34  }
35 
36  // ZDC not yet defined in CalibCalorimetry/HcalAlgos/src/HcalPulseShapes.cc
39 }
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 41 of file HcalShapes.cc.

References theShapes.

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

Member Function Documentation

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

Definition at line 63 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().

63  {
64  // try to figure the appropriate shape
65  const CaloVShape* result;
66  const auto& myShapes = getShapeMap(precise);
69  result = myShapes.find(HPD)->second;
70  else if (subdet == HcalGenericDetId::HcalGenOuter)
71  result = myShapes.find(HPD)->second;
72  else if (subdet == HcalGenericDetId::HcalGenForward)
73  result = myShapes.find(HF)->second;
74  else if (subdet == HcalGenericDetId::HcalGenZDC)
75  result = myShapes.find(ZDC)->second;
76  else
77  result = nullptr;
78 
79  edm::LogWarning("HcalShapes") << "Cannot find HCAL MC Params, so the default one is taken for subdet " << subdet;
80 
81  return result;
82 }
Electronic response of the preamp.
Definition: CaloVShape.h:11
tuple result
Definition: mps_fire.py:311
const ShapeMap & getShapeMap(bool precise) const
Definition: HcalShapes.cc:84
HcalGenericSubdetector genericSubdet() const
Log< level::Warning, false > LogWarning
const HcalShapes::ShapeMap & HcalShapes::getShapeMap ( bool  precise) const
private

Definition at line 84 of file HcalShapes.cc.

References theShapes, and theShapesPrecise.

Referenced by defaultShape(), and shape().

84  {
86 }
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 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 48 of file HcalShapes.cc.

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

48  {
49  if (!theDbService) {
50  return defaultShape(detId);
51  }
52  int shapeType = theDbService->getHcalMCParam(detId)->signalShape();
53  const auto& myShapes = getShapeMap(precise);
54  auto shapeMapItr = myShapes.find(shapeType);
55  if (shapeMapItr == myShapes.end()) {
56  edm::LogWarning("HcalShapes") << "HcalShapes::shape - shapeType ? = " << shapeType << std::endl;
57  return defaultShape(detId, precise);
58  } else {
59  return shapeMapItr->second;
60  }
61 }
const CaloVShape * defaultShape(const DetId &detId, bool precise=false) const
Definition: HcalShapes.cc:63
const HcalMCParam * getHcalMCParam(const HcalGenericDetId &fId) const
const ShapeMap & getShapeMap(bool precise) const
Definition: HcalShapes.cc:84
unsigned int signalShape() const
Definition: HcalMCParam.h:38
const HcalDbService * theDbService
Definition: HcalShapes.h:33
Log< level::Warning, false > LogWarning

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().