Main Page
Namespaces
Classes
Package Documentation
CVS Directory
WorkBook
Offline Guide
Release schedule
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Pages
SimCalorimetry
HcalSimAlgos
src
HcalShapes.cc
Go to the documentation of this file.
1
#include "
SimCalorimetry/HcalSimAlgos/interface/HcalShapes.h
"
2
#include "
FWCore/Framework/interface/ESHandle.h
"
3
#include "
FWCore/Framework/interface/EventSetup.h
"
4
#include "
SimCalorimetry/CaloSimAlgos/interface/CaloCachedShapeIntegrator.h
"
5
#include "
CondFormats/HcalObjects/interface/HcalMCParam.h
"
6
#include "
CondFormats/HcalObjects/interface/HcalMCParams.h
"
7
#include "
CondFormats/DataRecord/interface/HcalMCParamsRcd.h
"
8
#include "
DataFormats/HcalDetId/interface/HcalGenericDetId.h
"
9
#include "
FWCore/MessageLogger/interface/MessageLogger.h
"
10
#include "
Geometry/CaloTopology/interface/HcalTopology.h
"
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
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);
33
theShapesPrecise
[
num
] = &
theHcalShapes
[inum];
34
theShapes
[
num
] =
new
CaloCachedShapeIntegrator
(&
theHcalShapes
[inum]);
35
}
36
37
// ZDC not yet defined in CalibCalorimetry/HcalAlgos/src/HcalPulseShapes.cc
38
theShapesPrecise
[
ZDC
] = &
theZDCShape
;
39
theShapes
[
ZDC
] =
new
CaloCachedShapeIntegrator
(&
theZDCShape
);
40
}
41
42
HcalShapes::~HcalShapes
() {
43
for
(
auto
& shapeItr :
theShapes
) {
44
delete
shapeItr.second;
45
}
46
theShapes.clear();
47
}
48
49
const
CaloVShape
*
HcalShapes::shape
(
const
DetId
& detId,
bool
precise
)
const
{
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
}
63
64
const
CaloVShape
*
HcalShapes::defaultShape
(
const
DetId
& detId,
bool
precise
)
const
{
65
// try to figure the appropriate shape
66
const
CaloVShape
*
result
;
67
const
auto
& myShapes =
getShapeMap
(precise);
68
HcalGenericDetId::HcalGenericSubdetector
subdet =
HcalGenericDetId
(detId).
genericSubdet
();
69
if
(subdet ==
HcalGenericDetId::HcalGenBarrel
|| subdet ==
HcalGenericDetId::HcalGenEndcap
)
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
}
84
85
const
HcalShapes::ShapeMap
&
HcalShapes::getShapeMap
(
bool
precise
)
const
{
86
return
precise ?
theShapesPrecise
:
theShapes
;
87
}
HcalShapes::HcalShapes
HcalShapes()
Definition:
HcalShapes.cc:12
MessageLogger.h
CaloCachedShapeIntegrator.h
mps_fire.result
result
Definition:
mps_fire.py:294
HcalShapes::HF
Definition:
HcalShapes.h:20
HcalShapes::HPD
Definition:
HcalShapes.h:20
HcalShapes::ShapeMap
std::map< int, const CaloVShape * > ShapeMap
Definition:
HcalShapes.h:29
hltPixelTracks_cff.precise
precise
Definition:
hltPixelTracks_cff.py:32
nullptr
#define nullptr
Definition:
GCC11Compatibility.h:37
EventSetup.h
edm::LogWarning
Definition:
MessageLogger.h:141
HcalGenericDetId::HcalGenOuter
Definition:
HcalGenericDetId.h:21
HcalGenericDetId::HcalGenForward
Definition:
HcalGenericDetId.h:22
CaloVShape
Electronic response of the preamp.
Definition:
CaloVShape.h:11
HcalGenericDetId::HcalGenBarrel
Definition:
HcalGenericDetId.h:19
HcalGenericDetId::HcalGenEndcap
Definition:
HcalGenericDetId.h:20
HcalGenericDetId.h
HcalShapes::shape
const CaloVShape * shape(const DetId &detId, bool precise=false) const override
Definition:
HcalShapes.cc:49
HcalShapes::defaultShape
const CaloVShape * defaultShape(const DetId &detId, bool precise=false) const
Definition:
HcalShapes.cc:64
ESHandle.h
HcalMCParamsRcd.h
HcalShapes::~HcalShapes
~HcalShapes() override
Definition:
HcalShapes.cc:42
HcalDbService::getHcalMCParam
const HcalMCParam * getHcalMCParam(const HcalGenericDetId &fId) const
Definition:
HcalDbService.cc:398
CaloCachedShapeIntegrator
Definition:
CaloCachedShapeIntegrator.h:12
HcalGenericDetId
Definition:
HcalGenericDetId.h:15
HcalShapes.h
EgammaValidation_cff.num
num
Definition:
EgammaValidation_cff.py:34
DetId
Definition:
DetId.h:17
HcalShapes::getShapeMap
const ShapeMap & getShapeMap(bool precise) const
Definition:
HcalShapes.cc:85
HcalShapes::theZDCShape
ZDCShape theZDCShape
Definition:
HcalShapes.h:36
HcalGenericDetId::HcalGenericSubdetector
HcalGenericSubdetector
Definition:
HcalGenericDetId.h:17
HcalMCParam::signalShape
unsigned int signalShape() const
Definition:
HcalMCParam.h:38
HcalGenericDetId::HcalGenZDC
Definition:
HcalGenericDetId.h:24
HcalShapes::theDbService
const HcalDbService * theDbService
Definition:
HcalShapes.h:33
HcalMCParams.h
HcalShapes::theHcalShapes
std::vector< HcalShape > theHcalShapes
Definition:
HcalShapes.h:38
HcalGenericDetId::genericSubdet
HcalGenericSubdetector genericSubdet() const
Definition:
HcalGenericDetId.cc:21
HcalMCParam.h
HcalShapes::ZDC
Definition:
HcalShapes.h:20
HcalShapes::theShapes
ShapeMap theShapes
Definition:
HcalShapes.h:34
HcalTopology.h
HcalShapes::theShapesPrecise
ShapeMap theShapesPrecise
Definition:
HcalShapes.h:35
Generated for CMSSW Reference Manual by
1.8.11