CMS 3D CMS Logo

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

#include <HcalPulseShapes.h>

Public Types

typedef HcalPulseShape Shape
 

Public Member Functions

void beginRun (edm::EventSetup const &es)
 
void beginRun (const HcalTopology *topo, const edm::ESHandle< HcalMCParams > &mcParams, const edm::ESHandle< HcalRecoParams > &recoParams)
 
const ShapedefaultShape (const HcalDetId &detId) const
 in case of conditions problems More...
 
void endRun ()
 
const ShapegetShape (int shapeType) const
 
const ShapehbShape () const
 
 HcalPulseShapes ()
 
const ShapeheShape () const
 
const ShapehfShape () const
 
const ShapehoShape (bool sipm=false) const
 
const Shapeshape (const HcalDetId &detId) const
 automatically figures out which shape to return More...
 
const ShapeshapeForReco (const HcalDetId &detId) const
 
 ~HcalPulseShapes ()
 

Static Public Member Functions

static double analyticPulseShapeSiPMHE (double t)
 
static double analyticPulseShapeSiPMHO (double t)
 
template<class F1 , class F2 >
static std::vector< double > convolve (unsigned nbin, F1 f1, F2 f2)
 
static double generatePhotonTime (CLHEP::HepRandomEngine *engine, unsigned int signalShape)
 
static double generatePhotonTime203 (CLHEP::HepRandomEngine *engine)
 
static double generatePhotonTime206 (CLHEP::HepRandomEngine *engine)
 
static double Y11203 (double t)
 
static double Y11206 (double t)
 

Static Public Attributes

static constexpr float deltaTSiPM_ = 0.5
 
static constexpr float invDeltaTSiPM_ = 2.0
 
static const int nBinsSiPM_ = 250
 
static constexpr float Y11MAX203_ = 0.04
 
static constexpr float Y11MAX206_ = 0.08
 
static constexpr float Y11RANGE_ = nBinsSiPM_
 

Private Types

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

Private Member Functions

void computeHFShape ()
 
void computeHPDShape (float, float, float, float, float, float, float, float, Shape &)
 
void computeSiPMShapeData2017 ()
 
void computeSiPMShapeData2018 ()
 
void computeSiPMShapeHE203 ()
 
void computeSiPMShapeHE206 ()
 
void computeSiPMShapeHO ()
 

Private Attributes

Shape hfShape_
 
Shape hpdBV30Shape_v2
 
Shape hpdBV30ShapeMC_v2
 
Shape hpdShape_
 
Shape hpdShape_v2
 
Shape hpdShape_v3
 
Shape hpdShapeMC_v2
 
Shape hpdShapeMC_v3
 
Shape siPMShapeData2017_
 
Shape siPMShapeData2018_
 
Shape siPMShapeHO_
 
Shape siPMShapeMC2017_
 
Shape siPMShapeMC2018_
 
HcalMCParamstheMCParams
 
HcalRecoParamstheRecoParams
 
ShapeMap theShapes
 
const HcalTopologytheTopology
 

Detailed Description

Author
J. Mans - Minnesota

Definition at line 24 of file HcalPulseShapes.h.

Member Typedef Documentation

Definition at line 26 of file HcalPulseShapes.h.

typedef std::map<int, const Shape *> HcalPulseShapes::ShapeMap
private

Definition at line 91 of file HcalPulseShapes.h.

Constructor & Destructor Documentation

HcalPulseShapes::HcalPulseShapes ( )

Definition at line 22 of file HcalPulseShapes.cc.

References computeHFShape(), computeHPDShape(), computeSiPMShapeData2017(), computeSiPMShapeData2018(), computeSiPMShapeHE203(), computeSiPMShapeHE206(), computeSiPMShapeHO(), hfShape_, hpdBV30Shape_v2, hpdBV30ShapeMC_v2, hpdShape_, hpdShape_v2, hpdShape_v3, hpdShapeMC_v2, hpdShapeMC_v3, siPMShapeData2017_, siPMShapeData2018_, siPMShapeHO_, siPMShapeMC2017_, siPMShapeMC2018_, and theShapes.

23 : theMCParams(nullptr),
24  theTopology(nullptr),
25  theRecoParams(nullptr),
26  theShapes()
27 {
28 /*
29 
30 Reco MC
31 -------------------------------------------------------------------------------------------
32 000 not used (reserved)
33 101 101 hpdShape_ HPD (original version)
34 102 102 =101 HPD BV 30 volts in HBP iphi54
35 103 123 hpdShape_v2,hpdShapeMC_v2 HPD (2011. oct version)
36 104 124 hpdBV30Shape_v2,hpdBV30ShapeMC_v2 HPD bv30 in HBP iph54
37 105 125 hpdShape_v2,hpdShapeMC_v2 HPD (2011.11.12 version)
38 201 201 siPMShapeHO_ SiPMs Zecotec shape (HO)
39 202 202 =201, SiPMs Hamamatsu shape (HO)
40 205 203 siPMShapeData2017_,siPMShapeMC2017_ SiPMs from Data, Hamamatsu shape (HE 2017)
41 207 206 siPMShapeData2018_,siPMShapeMC2018_ SiPMs from Data, Hamamatsu shape (HE 2018)
42 301 301 hfShape_ regular HF PMT shape
43 401 401 regular ZDC shape
44 -------------------------------------------------------------------------------------------
45 
46 */
47 
48 
49  float ts1, ts2, ts3, thpd, tpre, wd1, wd2, wd3;
50 
51  // HPD Shape Version 1 (used before CMSSW5, until Oct 2011)
52  ts1=8. ; ts2=10. ; ts3=29.3; thpd=4.0; tpre=9.0; wd1=2.0; wd2=0.7; wd3=1.0;
53  computeHPDShape(ts1,ts2,ts3,thpd,tpre,wd1,wd2,wd3, hpdShape_);
54  theShapes[101] = &hpdShape_;
55  theShapes[102] = theShapes[101];
56 
57  // HPD Shape Version 2 for CMSSW 5. Nov 2011 (RECO and MC separately)
58  ts1=8. ; ts2=10. ; ts3=25.0; thpd=4.0; tpre=9.0; wd1=2.0; wd2=0.7; wd3=1.0;
59  computeHPDShape(ts1,ts2,ts3,thpd,tpre,wd1,wd2,wd3, hpdShape_v2);
60  theShapes[103] = &hpdShape_v2;
61 
62  ts1=8. ; ts2=10. ; ts3=29.3; thpd=4.0; tpre=7.0; wd1=2.0; wd2=0.7; wd3=1.0;
63  computeHPDShape(ts1,ts2,ts3,thpd,tpre,wd1,wd2,wd3, hpdShapeMC_v2);
64  theShapes[123] = &hpdShapeMC_v2;
65 
66  // HPD Shape Version 3 for CMSSW 5. Nov 2011 (RECO and MC separately)
67  ts1=8. ; ts2=19. ; ts3=29.3; thpd=4.0; tpre=9.0; wd1=2.0; wd2=0.7; wd3=0.32;
68  computeHPDShape(ts1,ts2,ts3,thpd,tpre,wd1,wd2,wd3, hpdShape_v3);
69  theShapes[105] = &hpdShape_v3;
70 
71  ts1=8. ; ts2=10. ; ts3=22.3; thpd=4.0; tpre=7.0; wd1=2.0; wd2=0.7; wd3=1.0;
72  computeHPDShape(ts1,ts2,ts3,thpd,tpre,wd1,wd2,wd3, hpdShapeMC_v3);
73  theShapes[125] = &hpdShapeMC_v3;
74 
75  // HPD with Bias Voltage 30 volts, wider pulse. (HBPlus iphi54)
76 
77  ts1=8. ; ts2=12. ; ts3=31.7; thpd=9.0; tpre=9.0; wd1=2.0; wd2=0.7; wd3=1.0;
78  computeHPDShape(ts1,ts2,ts3,thpd,tpre,wd1,wd2,wd3, hpdBV30Shape_v2);
79  theShapes[104] = &hpdBV30Shape_v2;
80 
81  ts1=8. ; ts2=12. ; ts3=31.7; thpd=9.0; tpre=9.0; wd1=2.0; wd2=0.7; wd3=1.0;
82  computeHPDShape(ts1,ts2,ts3,thpd,tpre,wd1,wd2,wd3, hpdBV30ShapeMC_v2);
84 
85  // HF and SiPM
86 
93 
94  theShapes[201] = &siPMShapeHO_;
95  theShapes[202] = theShapes[201];
100  theShapes[301] = &hfShape_;
101  //theShapes[401] = new CaloCachedShapeIntegrator(&theZDCShape);
102 
103 }
HcalRecoParams * theRecoParams
void computeSiPMShapeData2017()
void computeSiPMShapeData2018()
void computeSiPMShapeHE206()
void computeHPDShape(float, float, float, float, float, float, float, float, Shape &)
const HcalTopology * theTopology
HcalMCParams * theMCParams
void computeSiPMShapeHE203()
HcalPulseShapes::~HcalPulseShapes ( )

Definition at line 106 of file HcalPulseShapes.cc.

References theMCParams, theRecoParams, and theTopology.

106  {
107  if (theMCParams) delete theMCParams;
108  if (theRecoParams) delete theRecoParams;
109  if (theTopology) delete theTopology;
110 }
HcalRecoParams * theRecoParams
const HcalTopology * theTopology
HcalMCParams * theMCParams

Member Function Documentation

double HcalPulseShapes::analyticPulseShapeSiPMHE ( double  t)
static

Definition at line 554 of file HcalPulseShapes.cc.

References onePulse().

Referenced by HcalSiPMShape::computeShape(), computeSiPMShapeHE203(), and computeSiPMShapeHE206().

554  {
555  // taken from fit to laser measurement taken by Iouri M. in Spring 2016.
556  double A1(5.204/6.94419), sigma1_shape(0.5387), theta1_loc(-0.3976), m1_scale(4.428);
557  double A2(1.855/6.94419), sigma2_shape(0.8132), theta2_loc(7.025), m2_scale(12.29);
558  return
559  onePulse(t,A1,sigma1_shape,theta1_loc,m1_scale) +
560  onePulse(t,A2,sigma2_shape,theta2_loc,m2_scale);
561 }
double onePulse(double t, double A, double sigma, double theta, double m)
double HcalPulseShapes::analyticPulseShapeSiPMHO ( double  t)
static

Definition at line 547 of file HcalPulseShapes.cc.

References alignmentValidation::c1, gexp(), and indexGen::s2.

Referenced by HcalSiPMShape::computeShape().

547  {
548  // HO SiPM pulse shape fit from Jake Anderson ca. 2013
549  double A1(0.08757), c1(-0.5257), t01(2.4013), s1(0.6721);
550  double A2(0.007598), c2(-0.1501), t02(6.9412), s2(0.8710);
551  return gexp(t,A1,c1,t01,s1) + gexp(t,A2,c2,t02,s2);
552 }
double gexp(double t, double A, double c, double t0, double s)
void HcalPulseShapes::beginRun ( edm::EventSetup const &  es)

Definition at line 113 of file HcalPulseShapes.cc.

References edm::EventSetup::get(), AlCaHLTBitMon_ParallelJobs::p, edm::ESHandle< T >::product(), lumiQueryAPI::q, HcalCondObjectContainerBase::setTopo(), theMCParams, theRecoParams, and theTopology.

Referenced by HcalPulseContainmentManager::beginRun().

void HcalPulseShapes::beginRun ( const HcalTopology topo,
const edm::ESHandle< HcalMCParams > &  mcParams,
const edm::ESHandle< HcalRecoParams > &  recoParams 
)

Definition at line 130 of file HcalPulseShapes.cc.

References edm::ESHandle< T >::product(), HcalCondObjectContainerBase::setTopo(), theMCParams, and theRecoParams.

131 {
132  theMCParams = new HcalMCParams(*mcParams.product());
133  theMCParams->setTopo(topo);
134 
135  theRecoParams = new HcalRecoParams(*recoParams.product());
136  theRecoParams->setTopo(topo);
137 }
HcalRecoParams * theRecoParams
HcalMCParams * theMCParams
T const * product() const
Definition: ESHandle.h:86
void setTopo(const HcalTopology *topo)
void HcalPulseShapes::computeHFShape ( )
private

Definition at line 254 of file HcalPulseShapes.cc.

References JetChargeProducer_cfi::exp, hfShape_, reco::ParticleMasses::k0, p1, p2, p4, HcalPulseShape::setNBin(), and HcalPulseShape::setShapeBin().

Referenced by HcalPulseShapes().

254  {
255  // first create pulse shape over a range of time 0 ns to 255 ns in 1 ns steps
256  unsigned int nbin = 256;
257  hfShape_.setNBin(nbin);
258  std::vector<float> ntmp(nbin,0.0); //
259 
260  const float k0=0.7956; // shape parameters
261  const float p2=1.355;
262  const float p4=2.327;
263  const float p1=4.3; // position parameter
264 
265  float norm = 0.0;
266 
267  for(unsigned int j = 0; j < 25 && j < nbin; ++j){
268 
269  float r0 = j-p1;
270  float sigma0 = (r0<0) ? p2 : p2*p4;
271  r0 /= sigma0;
272  if(r0 < k0) ntmp[j] = exp(-0.5*r0*r0);
273  else ntmp[j] = exp(0.5*k0*k0-k0*r0);
274  norm += ntmp[j];
275  }
276  // normalize pulse area to 1.0
277  for(unsigned int j = 0; j < 25 && j < nbin; ++j){
278  ntmp[j] /= norm;
279  hfShape_.setShapeBin(j,ntmp[j]);
280  }
281 }
void setNBin(int n)
void setShapeBin(int i, float f)
double p4[4]
Definition: TauolaWrapper.h:92
double p2[4]
Definition: TauolaWrapper.h:90
double p1[4]
Definition: TauolaWrapper.h:89
void HcalPulseShapes::computeHPDShape ( float  ts1,
float  ts2,
float  ts3,
float  thpd,
float  tpre,
float  wd1,
float  wd2,
float  wd3,
Shape tmphpdShape_ 
)
private

Definition at line 154 of file HcalPulseShapes.cc.

References JetChargeProducer_cfi::exp, objects.autophobj::float, mps_fire::i, createfilelist::int, gen::k, HcalPulseShape::setNBin(), HcalPulseShape::setShapeBin(), reco::t2, and tmax.

Referenced by HcalPulseShapes().

156 {
157 
158 // pulse shape time constants in ns
159 /*
160  const float ts1 = 8.; // scintillation time constants : 1,2,3
161  const float ts2 = 10.;
162  const float ts3 = 29.3;
163  const float thpd = 4.; // HPD current collection drift time
164  const float tpre = 9.; // preamp time constant (refit on TB04 data)
165 
166  const float wd1 = 2.; // relative weights of decay exponents
167  const float wd2 = 0.7;
168  const float wd3 = 1.;
169 */
170  // pulse shape components over a range of time 0 ns to 255 ns in 1 ns steps
171  unsigned int nbin = 256;
172  tmphpdShape_.setNBin(nbin);
173  std::vector<float> ntmp(nbin,0.0); // zeroing output pulse shape
174  std::vector<float> nth(nbin,0.0); // zeroing HPD drift shape
175  std::vector<float> ntp(nbin,0.0); // zeroing Binkley preamp shape
176  std::vector<float> ntd(nbin,0.0); // zeroing Scintillator decay shape
177 
178  unsigned int i,j,k;
179  float norm;
180 
181  // HPD starts at I and rises to 2I in thpd of time
182  norm=0.0;
183  for(j=0;j<thpd && j<nbin;j++){
184  nth[j] = 1.0 + ((float)j)/thpd;
185  norm += nth[j];
186  }
187  // normalize integrated current to 1.0
188  for(j=0;j<thpd && j<nbin;j++){
189  nth[j] /= norm;
190  }
191 
192  // Binkley shape over 6 time constants
193  norm=0.0;
194  for(j=0;j<6*tpre && j<nbin;j++){
195  ntp[j] = ((float)j)*exp(-((float)(j*j))/(tpre*tpre));
196  norm += ntp[j];
197  }
198  // normalize pulse area to 1.0
199  for(j=0;j<6*tpre && j<nbin;j++){
200  ntp[j] /= norm;
201  }
202 
203 // ignore stochastic variation of photoelectron emission
204 // <...>
205 
206 // effective tile plus wave-length shifter decay time over 4 time constants
207  unsigned int tmax = 6 * (int)ts3;
208 
209  norm=0.0;
210  for(j=0;j<tmax && j<nbin;j++){
211  ntd[j] = wd1 * exp(-((float)j)/ts1) +
212  wd2 * exp(-((float)j)/ts2) +
213  wd3 * exp(-((float)j)/ts3) ;
214  norm += ntd[j];
215  }
216  // normalize pulse area to 1.0
217  for(j=0;j<tmax && j<nbin;j++){
218  ntd[j] /= norm;
219  }
220 
221  unsigned int t1,t2,t3,t4;
222  for(i=0;i<tmax && i<nbin;i++){
223  t1 = i;
224  // t2 = t1 + top*rand;
225  // ignoring jitter from optical path length
226  t2 = t1;
227  for(j=0;j<thpd && j<nbin;j++){
228  t3 = t2 + j;
229  for(k=0;k<4*tpre && k<nbin;k++){ // here "4" is set deliberately,
230  t4 = t3 + k; // as in test fortran toy MC ...
231  if(t4<nbin){
232  unsigned int ntb=t4;
233  ntmp[ntb] += ntd[i]*nth[j]*ntp[k];
234  }
235  }
236  }
237  }
238 
239  // normalize for 1 GeV pulse height
240  norm = 0.;
241  for(i=0;i<nbin;i++){
242  norm += ntmp[i];
243  }
244 
245  for(i=0; i<nbin; i++){
246  ntmp[i] /= norm;
247  }
248 
249  for(i=0; i<nbin; i++){
250  tmphpdShape_.setShapeBin(i,ntmp[i]);
251  }
252 }
auto const T2 &decltype(t1.eta()) t2
Definition: deltaR.h:16
int k[5][pyjets_maxn]
static const double tmax[3]
void HcalPulseShapes::computeSiPMShapeData2017 ( )
private

Definition at line 335 of file HcalPulseShapes.cc.

References nt, HcalPulseShape::setNBin(), HcalPulseShape::setShapeBin(), and siPMShapeData2017_.

Referenced by HcalPulseShapes().

336 {
337  //From Jay Lawhorn: derived from data Edward Laird phase scan may2017
338  //https://indico.cern.ch/event/641978/contributions/2604491/attachments/1468666/2271582/17-05-31-hcal-hep17-pulse-shape.pdf
339  //Run numbers are 294736-294740 and 294929-294950
340 
341  unsigned int nbin = 250;
342 
343  std::array<float, 250> nt {{
344  3.97958e-29, 1.11634e-22, 9.96106e-18, 6.25334e-14, 5.08863e-11, 8.59141e-09, 4.32285e-07, 8.56617e-06, 8.28549e-05, 0.000461447,
345  0.00168052, 0.00441395, 0.00901637, 0.0151806, 0.0220314, 0.028528, 0.0338471, 0.0375578, 0.0395985, 0.0401567,
346  0.0395398, 0.0380776, 0.0360669, 0.0337474, 0.0312984, 0.0288457, 0.0264721, 0.0242276, 0.0221393, 0.0202181,
347  0.0184647, 0.0168731, 0.0154335, 0.0141346, 0.0129639, 0.0119094, 0.0109594, 0.0101031, 0.0093305, 0.00863267,
348  0.0080015, 0.00742977, 0.00691107, 0.00643969, 0.00601059, 0.00561931, 0.00526188, 0.00493483, 0.00463505, 0.00435981,
349  0.00410667, 0.00387348, 0.00365832, 0.00345949, 0.00327547, 0.0031049, 0.00294656, 0.00279938, 0.00266237, 0.00253467,
350  0.00241548, 0.0023041, 0.00219989, 0.00210227, 0.00201072, 0.00192476, 0.00184397, 0.00176795, 0.00169634, 0.00162884,
351  0.00156512, 0.00150494, 0.00144803, 0.00139418, 0.00134317, 0.00129481, 0.00124894, 0.00120537, 0.00116398, 0.00112461,
352  0.00108715, 0.00105147, 0.00101747, 0.000985042, 0.000954096, 0.000924545, 0.000896308, 0.000869311, 0.000843482, 0.000818758,
353  0.000795077, 0.000772383, 0.000750623, 0.000729747, 0.00070971, 0.000690466, 0.000671977, 0.000654204, 0.00063711, 0.000620663,
354  0.000604831, 0.000589584, 0.000574894, 0.000560735, 0.000547081, 0.00053391, 0.0005212, 0.000508929, 0.000497078, 0.000485628,
355  0.000474561, 0.000463862, 0.000453514, 0.000443501, 0.000433811, 0.000424429, 0.000415343, 0.00040654, 0.00039801, 0.000389741,
356  0.000381722, 0.000373944, 0.000366398, 0.000359074, 0.000351964, 0.00034506, 0.000338353, 0.000331838, 0.000325505, 0.00031935,
357  0.000313365, 0.000307544, 0.000301881, 0.000296371, 0.000291009, 0.000285788, 0.000280705, 0.000275755, 0.000270932, 0.000266233,
358  0.000261653, 0.00025719, 0.000252837, 0.000248593, 0.000244454, 0.000240416, 0.000236475, 0.00023263, 0.000228876, 0.000225212,
359  0.000221633, 0.000218138, 0.000214724, 0.000211389, 0.00020813, 0.000204945, 0.000201831, 0.000198787, 0.000195811, 0.0001929,
360  0.000190053, 0.000187268, 0.000184543, 0.000181876, 0.000179266, 0.000176711, 0.00017421, 0.000171761, 0.000169363, 0.000167014,
361  0.000164713, 0.000162459, 0.00016025, 0.000158086, 0.000155964, 0.000153885, 0.000151847, 0.000149848, 0.000147888, 0.000145966,
362  0.000144081, 0.000142232, 0.000140418, 0.000138638, 0.000136891, 0.000135177, 0.000133494, 0.000131843, 0.000130221, 0.00012863,
363  0.000127066, 0.000125531, 0.000124023, 0.000122543, 0.000121088, 0.000119658, 0.000118254, 0.000116874, 0.000115518, 0.000114185,
364  0.000112875, 0.000111587, 0.000110321, 0.000109076, 0.000107851, 0.000106648, 0.000105464, 0.000104299, 0.000103154, 0.000102027,
365  0.000100918, 9.98271e-05, 9.87537e-05, 9.76974e-05, 9.66578e-05, 9.56346e-05, 9.46274e-05, 9.3636e-05, 9.26599e-05, 9.16989e-05,
366  9.07526e-05, 8.98208e-05, 8.89032e-05, 8.79995e-05, 8.71093e-05, 8.62325e-05, 8.53688e-05, 8.45179e-05, 8.36796e-05, 8.28536e-05,
367  8.20397e-05, 8.12376e-05, 8.04471e-05, 7.96681e-05, 7.89002e-05, 7.81433e-05, 7.73972e-05, 7.66616e-05, 7.59364e-05, 7.52213e-05,
368  7.45163e-05, 7.3821e-05, 7.31354e-05, 7.24592e-05, 7.17923e-05, 7.11345e-05, 7.04856e-05, 6.98455e-05, 6.9214e-05, 6.8591e-05
369  }};
370 
371 
373 
374  double norm = 0.;
375  for (unsigned int j = 0; j < nbin; ++j) {
376  norm += (nt[j]>0) ? nt[j] : 0.;
377  }
378 
379  for (unsigned int j = 0; j < nbin; ++j) {
380  nt[j] /= norm;
382  }
383 }
void setNBin(int n)
void setShapeBin(int i, float f)
int nt
Definition: AMPTWrapper.h:32
void HcalPulseShapes::computeSiPMShapeData2018 ( )
private

Definition at line 284 of file HcalPulseShapes.cc.

References nt, HcalPulseShape::setNBin(), HcalPulseShape::setShapeBin(), and siPMShapeData2018_.

Referenced by HcalPulseShapes().

285 {
286 
287  //Combination of all phase scan data (May,Jul,Oct2017)
288  //runs: 294736-294740, 294929-294950, 298594-298598 and 305744-305758
289 
290  unsigned int nbin = 250;
291 
292  std::array<float, 250> nt {{
293  5.22174e-12, 7.04852e-10, 3.49584e-08, 7.78029e-07, 9.11847e-06, 6.39666e-05, 0.000297587, 0.000996661, 0.00256618, 0.00535396,
294  0.00944073, 0.0145521, 0.020145, 0.0255936, 0.0303632, 0.0341078, 0.0366849, 0.0381183, 0.0385392, 0.0381327,
295  0.0370956, 0.0356113, 0.0338366, 0.0318978, 0.029891, 0.0278866, 0.0259336, 0.0240643, 0.0222981, 0.0206453,
296  0.0191097, 0.0176902, 0.0163832, 0.0151829, 0.0140826, 0.0130752, 0.0121533, 0.01131, 0.0105382, 0.00983178,
297  0.00918467, 0.00859143, 0.00804709, 0.0075471, 0.00708733, 0.00666406, 0.00627393, 0.00591389, 0.00558122, 0.00527344,
298  0.00498834, 0.00472392, 0.00447837, 0.00425007, 0.00403754, 0.00383947, 0.00365465, 0.00348199, 0.00332052, 0.00316934,
299  0.00302764, 0.0028947, 0.00276983, 0.00265242, 0.00254193, 0.00243785, 0.00233971, 0.00224709, 0.0021596, 0.00207687,
300  0.0019986, 0.00192447, 0.00185421, 0.00178756, 0.0017243, 0.00166419, 0.00160705, 0.00155268, 0.00150093, 0.00145162,
301  0.00140461, 0.00135976, 0.00131696, 0.00127607, 0.00123699, 0.00119962, 0.00116386, 0.00112963, 0.00109683, 0.0010654,
302  0.00103526, 0.00100634, 0.000978578, 0.000951917, 0.000926299, 0.000901672, 0.000877987, 0.000855198, 0.00083326, 0.000812133,
303  0.000791778, 0.000772159, 0.000753242, 0.000734994, 0.000717384, 0.000700385, 0.000683967, 0.000668107, 0.000652779, 0.00063796,
304  0.000623629, 0.000609764, 0.000596346, 0.000583356, 0.000570777, 0.000558592, 0.000546785, 0.00053534, 0.000524243, 0.000513481,
305  0.00050304, 0.000492907, 0.000483072, 0.000473523, 0.000464248, 0.000455238, 0.000446483, 0.000437974, 0.0004297, 0.000421655,
306  0.00041383, 0.000406216, 0.000398807, 0.000391595, 0.000384574, 0.000377736, 0.000371076, 0.000364588, 0.000358266, 0.000352104,
307  0.000346097, 0.00034024, 0.000334528, 0.000328956, 0.00032352, 0.000318216, 0.000313039, 0.000307986, 0.000303052, 0.000298234,
308  0.000293528, 0.000288931, 0.000284439, 0.00028005, 0.000275761, 0.000271567, 0.000267468, 0.000263459, 0.000259538, 0.000255703,
309  0.000251951, 0.00024828, 0.000244688, 0.000241172, 0.00023773, 0.000234361, 0.000231061, 0.00022783, 0.000224666, 0.000221566,
310  0.000218528, 0.000215553, 0.000212636, 0.000209778, 0.000206977, 0.00020423, 0.000201537, 0.000198896, 0.000196307, 0.000193767,
311  0.000191275, 0.000188831, 0.000186432, 0.000184079, 0.000181769, 0.000179502, 0.000177277, 0.000175092, 0.000172947, 0.000170841,
312  0.000168772, 0.000166741, 0.000164745, 0.000162785, 0.000160859, 0.000158967, 0.000157108, 0.00015528, 0.000153484, 0.000151719,
313  0.000149984, 0.000148278, 0.000146601, 0.000144951, 0.000143329, 0.000141734, 0.000140165, 0.000138622, 0.000137104, 0.00013561,
314  0.000134141, 0.000132695, 0.000131272, 0.000129871, 0.000128493, 0.000127136, 0.000125801, 0.000124486, 0.000123191, 0.000121917,
315  0.000120662, 0.000119426, 0.000118209, 0.00011701, 0.000115829, 0.000114665, 0.000113519, 0.00011239, 0.000111278, 0.000110182,
316  0.000109102, 0.000108037, 0.000106988, 0.000105954, 0.000104935, 0.00010393, 0.000102939, 0.000101963, 0.000101, 0.000100051,
317  9.91146e-05, 9.81915e-05, 9.7281e-05, 9.63831e-05, 9.54975e-05, 9.46239e-05, 9.37621e-05, 9.2912e-05, 9.20733e-05, 9.12458e-05
318  }};
319 
321 
322  double norm = 0.;
323  for (unsigned int j = 0; j < nbin; ++j) {
324  norm += (nt[j]>0) ? nt[j] : 0.;
325  }
326 
327  for (unsigned int j = 0; j < nbin; ++j) {
328  nt[j] /= norm;
330  }
331 }
void setNBin(int n)
void setShapeBin(int i, float f)
int nt
Definition: AMPTWrapper.h:32
void HcalPulseShapes::computeSiPMShapeHE203 ( )
private

Definition at line 423 of file HcalPulseShapes.cc.

References analyticPulseShapeSiPMHE(), convolve(), nBinsSiPM_, nt, HcalPulseShape::setNBin(), HcalPulseShape::setShapeBin(), siPMShapeMC2017_, and Y11203().

Referenced by HcalPulseShapes().

424 {
425  //numerical convolution of SiPM pulse + WLS fiber shape
426  std::vector<double> nt = convolve(nBinsSiPM_,analyticPulseShapeSiPMHE,Y11203);
427 
429 
430  //skip first bin, always 0
431  double norm = 0.;
432  for (unsigned int j = 1; j <= nBinsSiPM_; ++j) {
433  norm += (nt[j]>0) ? nt[j] : 0.;
434  }
435 
436  for (unsigned int j = 1; j <= nBinsSiPM_; ++j) {
437  nt[j] /= norm;
438  siPMShapeMC2017_.setShapeBin(j,nt[j]);
439  }
440 }
void setNBin(int n)
void setShapeBin(int i, float f)
static const int nBinsSiPM_
static double analyticPulseShapeSiPMHE(double t)
static std::vector< double > convolve(unsigned nbin, F1 f1, F2 f2)
int nt
Definition: AMPTWrapper.h:32
static double Y11203(double t)
void HcalPulseShapes::computeSiPMShapeHE206 ( )
private

Definition at line 442 of file HcalPulseShapes.cc.

References analyticPulseShapeSiPMHE(), convolve(), SiStripPI::max, nBinsSiPM_, nt, HcalPulseShape::setNBin(), HcalPulseShape::setShapeBin(), edm::shift, siPMShapeMC2018_, and Y11206().

Referenced by HcalPulseShapes().

443 {
444  //numerical convolution of SiPM pulse + WLS fiber shape
445  std::vector<double> nt = convolve(nBinsSiPM_,analyticPulseShapeSiPMHE,Y11206);
446 
448 
449  //Aligning 206 phase closer to 205 in order to have good reco agreement
450  int shift = -2;
451 
452  //skip first bin, always 0
453  double norm = 0.;
454  for (unsigned int j = std::max(1,-1*shift); j<=nBinsSiPM_; j++) {
455  norm += std::max(0., nt[j-shift]);
456  }
457  double normInv=1./norm;
458  for ( int j = 1; j<=nBinsSiPM_; j++) {
459  if ( j-shift>=0 ) {
460  nt[j-shift]*=normInv;
461  siPMShapeMC2018_.setShapeBin(j,nt[j-shift]);
462  }
463  else{
465  }
466  }
467 }
void setNBin(int n)
void setShapeBin(int i, float f)
static const int nBinsSiPM_
static double analyticPulseShapeSiPMHE(double t)
static std::vector< double > convolve(unsigned nbin, F1 f1, F2 f2)
static double Y11206(double t)
int nt
Definition: AMPTWrapper.h:32
static unsigned int const shift
void HcalPulseShapes::computeSiPMShapeHO ( )
private

Definition at line 385 of file HcalPulseShapes.cc.

References nt, HcalPulseShape::setNBin(), HcalPulseShape::setShapeBin(), and siPMShapeHO_.

Referenced by HcalPulseShapes().

386 {
387 
388  unsigned int nbin = 128;
389 
390 //From Jake Anderson: toy MC convolution of SiPM pulse + WLS fiber shape + SiPM nonlinear response
391  std::array<float, 128> nt {{
392  2.782980485851731e-6, 4.518134885954626e-5, 2.7689305197392056e-4, 9.18328418900969e-4, .002110072599166349, .003867856860331454, .006120046224897771, .008754774090536956,
393  0.0116469503358586, .01467007449455966, .01770489955229477, .02064621450689512, .02340678093764222, .02591874610854916, .02813325527435303, 0.0300189241965647,
394  .03155968107671164, .03275234052577155, .03360415306318798, .03413048377960748, .03435270899678218, .03429637464659661, .03398962975487166, .03346192884394954,
395  .03274298516247742, .03186195009136525, .03084679116113031, 0.0297238406141036, .02851748748929785, .02724998816332392, .02594137274487424, .02460942736731527,
396  .02326973510736116, .02193576080366117, 0.0206189674254987, .01932895378564653, 0.0180736052958666, .01685925112650875, 0.0156908225633535, .01457200857138456,
397  .01350540559602467, .01249265947824805, .01153459805300423, .01063135355597282, .009782474412011936, .008987026319784546, 0.00824368281357106, .007550805679909604,
398  .006906515742762193, .006308754629755056, .005755338185695127, .005244002229973356, .004772441359900532, .004338341490928299, .003939406800854143, 0.00357338171220501,
399  0.0032380685079891, .002931341133259233, .002651155690306086, .002395558090237333, .002162689279320922, .001950788415487319, .001758194329648101, .001583345567913682,
400  .001424779275191974, .001281129147671334, 0.00115112265163774, .001033577678808199, 9.273987838127585e-4, 8.315731274976846e-4, 7.451662302008696e-4, 6.673176219006913e-4,
401  5.972364609644049e-4, 5.341971801529036e-4, 4.775352065178378e-4, 4.266427928961177e-4, 3.8096498904225923e-4, 3.3999577417327287e-4, 3.032743659102713e-4, 2.703817158798329e-4,
402  2.4093719775272793e-4, 2.145954900503894e-4, 1.9104365317752797e-4, 1.6999839784346724e-4, 1.5120354022478893e-4, 1.3442763782650755e-4, 1.1946179895521507e-4, 1.0611765796993575e-4,
403  9.422550797617687e-5, 8.363258233342666e-5, 7.420147621931836e-5, 6.580869950304933e-5, 5.834335229919868e-5, 5.17059147771959e-5, 4.5807143072062634e-5, 4.0567063461299446e-5,
404  3.591405732740723e-5, 3.178402980354131e-5, 2.811965539165646e-5, 2.4869694240316126e-5, 2.1988373166730962e-5, 1.9434825899529382e-5, 1.717258740121378e-5, 1.5169137499243157e-5,
405  1.339548941011129e-5, 1.1825819079078403e-5, 1.0437131581057595e-5, 9.208961130078894e-6, 8.12310153137994e-6, 7.163364176588591e-6, 6.315360932244386e-6, 5.566309502463164e-6,
406  4.904859063429651e-6, 4.320934164082596e-6, 3.8055950719111903e-6, 3.350912911083174e-6, 2.9498580949517117e-6, 2.596200697612328e-6, 2.2844215378879293e-6, 2.0096328693141094e-6,
407  1.7675076766686654e-6, 1.5542166787225756e-6, 1.366372225473431e-6, 1.200978365778838e-6, 1.0553864128982371e-6, 9.272554464808518e-7, 8.145171945902259e-7, 7.153448381918271e-7
408  }};
409 
410  siPMShapeHO_.setNBin(nbin);
411 
412  double norm = 0.;
413  for (unsigned int j = 0; j < nbin; ++j) {
414  norm += (nt[j]>0) ? nt[j] : 0.;
415  }
416 
417  for (unsigned int j = 0; j < nbin; ++j) {
418  nt[j] /= norm;
420  }
421 }
void setNBin(int n)
void setShapeBin(int i, float f)
int nt
Definition: AMPTWrapper.h:32
template<class F1 , class F2 >
static std::vector<double> HcalPulseShapes::convolve ( unsigned  nbin,
F1  f1,
F2  f2 
)
inlinestatic

Definition at line 61 of file HcalPulseShapes.h.

References connectstrParser::f1, connectstrParser::f2, mps_fire::i, edm::detail::isnan(), min(), or, mps_fire::result, and tmp.

Referenced by computeSiPMShapeHE203(), and computeSiPMShapeHE206().

61  {
62  std::vector<double> result(2*nbin-1,0.);
63  for(unsigned i = 0; i < 2*nbin-1; ++i){
64  for(unsigned j = 0; j < std::min(i+1,nbin); ++j){
65  double tmp = f1(j)*f2(i-j);
66  if(std::isnan(tmp) or std::isinf(tmp)) continue;
67  result[i] += tmp;
68  }
69  }
70  return result;
71  }
bool isnan(float x)
Definition: math.h:13
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
T min(T a, T b)
Definition: MathUtil.h:58
std::vector< std::vector< double > > tmp
Definition: MVATrainer.cc:100
const HcalPulseShapes::Shape & HcalPulseShapes::defaultShape ( const HcalDetId detId) const

in case of conditions problems

Definition at line 516 of file HcalPulseShapes.cc.

References Exception, hbShape(), HcalBarrel, HcalEndcap, HcalForward, HcalOuter, heShape(), hfShape(), hoShape(), and HcalDetId::subdet().

Referenced by shape(), and shapeForReco().

517 {
518  edm::LogWarning("HcalPulseShapes") << "Cannot find HCAL MC Params ";
519  HcalSubdetector subdet = detId.subdet();
520  switch(subdet) {
521  case HcalBarrel:
522  return hbShape();
523  case HcalEndcap:
524  return heShape();
525  case HcalForward:
526  return hfShape();
527  case HcalOuter:
528  //FIXME doesn't look for SiPMs
529  return hoShape(false);
530  default:
531  throw cms::Exception("HcalPulseShapes") << "unknown detId";
532  break;
533  }
534 }
const Shape & heShape() const
HcalSubdetector subdet() const
get the subdetector
Definition: HcalDetId.h:49
const Shape & hoShape(bool sipm=false) const
HcalSubdetector
Definition: HcalAssistant.h:31
const Shape & hfShape() const
const Shape & hbShape() const
void HcalPulseShapes::endRun ( )

Definition at line 140 of file HcalPulseShapes.cc.

References theMCParams, theRecoParams, and theTopology.

Referenced by HcalPulseContainmentManager::endRun().

141 {
142  if (theMCParams) delete theMCParams;
143  if (theRecoParams) delete theRecoParams;
144  if (theTopology) delete theTopology;
145 
146 
147  theMCParams = nullptr;
148  theRecoParams = nullptr;
149  theTopology = nullptr;
150 }
HcalRecoParams * theRecoParams
const HcalTopology * theTopology
HcalMCParams * theMCParams
double HcalPulseShapes::generatePhotonTime ( CLHEP::HepRandomEngine *  engine,
unsigned int  signalShape 
)
static

Definition at line 563 of file HcalPulseShapes.cc.

References generatePhotonTime203(), and generatePhotonTime206().

Referenced by HcalSiPMHitResponse::add().

563  {
564  if(signalShape==206) return generatePhotonTime206(engine);
565  else return generatePhotonTime203(engine);
566 }
static double generatePhotonTime206(CLHEP::HepRandomEngine *engine)
static double generatePhotonTime203(CLHEP::HepRandomEngine *engine)
double HcalPulseShapes::generatePhotonTime203 ( CLHEP::HepRandomEngine *  engine)
static

Definition at line 568 of file HcalPulseShapes.cc.

References mps_fire::result, Y11203(), Y11MAX203_, and Y11RANGE_.

Referenced by generatePhotonTime().

568  {
569  double result(0.);
570  while (true) {
571  result = CLHEP::RandFlat::shoot(engine, HcalPulseShapes::Y11RANGE_);
572  if (CLHEP::RandFlat::shoot(engine, HcalPulseShapes::Y11MAX203_) < HcalPulseShapes::Y11203(result))
573  return result;
574  }
575 }
static constexpr float Y11MAX203_
static double Y11203(double t)
static constexpr float Y11RANGE_
double HcalPulseShapes::generatePhotonTime206 ( CLHEP::HepRandomEngine *  engine)
static

Definition at line 577 of file HcalPulseShapes.cc.

References mps_fire::result, Y11206(), Y11MAX206_, and Y11RANGE_.

Referenced by generatePhotonTime().

577  {
578  double result(0.);
579  while (true) {
580  result = CLHEP::RandFlat::shoot(engine, HcalPulseShapes::Y11RANGE_);
581  if (CLHEP::RandFlat::shoot(engine, HcalPulseShapes::Y11MAX206_) < HcalPulseShapes::Y11206(result))
582  return result;
583  }
584 }
static constexpr float Y11MAX206_
static double Y11206(double t)
static constexpr float Y11RANGE_
const HcalPulseShapes::Shape & HcalPulseShapes::getShape ( int  shapeType) const

Definition at line 470 of file HcalPulseShapes.cc.

References Exception, hpdShape_, and theShapes.

Referenced by SimpleHBHEPhase1Algo::reconstruct(), and HcalShape::setShape().

471 {
472  ShapeMap::const_iterator shapeMapItr = theShapes.find(shapeType);
473  if(shapeMapItr == theShapes.end()) {
474  throw cms::Exception("HcalPulseShapes") << "unknown shapeType";
475  return hpdShape_; // should not return this, but...
476  } else {
477  return *(shapeMapItr->second);
478  }
479 }
const Shape& HcalPulseShapes::hbShape ( ) const
inline

Definition at line 34 of file HcalPulseShapes.h.

Referenced by defaultShape(), and HBHEPulseShapeFlagSetter::Initialize().

34 { return hpdShape_; }
const Shape& HcalPulseShapes::heShape ( ) const
inline

Definition at line 35 of file HcalPulseShapes.h.

Referenced by defaultShape().

35 { return hpdShape_; }
const Shape& HcalPulseShapes::hfShape ( ) const
inline

Definition at line 36 of file HcalPulseShapes.h.

Referenced by defaultShape().

36 { return hfShape_; }
const Shape& HcalPulseShapes::hoShape ( bool  sipm = false) const
inline

Definition at line 37 of file HcalPulseShapes.h.

References fireworks::getShape().

Referenced by defaultShape().

37 { return sipm ? siPMShapeHO_ : hpdShape_; }
const HcalPulseShapes::Shape & HcalPulseShapes::shape ( const HcalDetId detId) const

automatically figures out which shape to return

Definition at line 483 of file HcalPulseShapes.cc.

References defaultShape(), HcalCondObjectContainer< Item >::getValues(), HcalMCParam::signalShape(), theMCParams, and theShapes.

484 {
485  if(!theMCParams) {
486  return defaultShape(detId);
487  }
488  int shapeType = theMCParams->getValues(detId)->signalShape();
489 
490  ShapeMap::const_iterator shapeMapItr = theShapes.find(shapeType);
491  if(shapeMapItr == theShapes.end()) {
492  return defaultShape(detId);
493  } else {
494  return *(shapeMapItr->second);
495  }
496 }
const Item * getValues(DetId fId, bool throwOnFail=true) const
const Shape & defaultShape(const HcalDetId &detId) const
in case of conditions problems
HcalMCParams * theMCParams
unsigned int signalShape() const
Definition: HcalMCParam.h:40
const HcalPulseShapes::Shape & HcalPulseShapes::shapeForReco ( const HcalDetId detId) const

Definition at line 499 of file HcalPulseShapes.cc.

References defaultShape(), HcalCondObjectContainer< Item >::getValues(), DetId::rawId(), theRecoParams, and theShapes.

Referenced by HcalPulseContainmentManager::get().

500 {
501  if(!theRecoParams) {
502  return defaultShape(detId);
503  }
504  int shapeType = theRecoParams->getValues(detId.rawId())->pulseShapeID();
505 
506  ShapeMap::const_iterator shapeMapItr = theShapes.find(shapeType);
507  if(shapeMapItr == theShapes.end()) {
508  return defaultShape(detId);
509  } else {
510  return *(shapeMapItr->second);
511  }
512 }
const Item * getValues(DetId fId, bool throwOnFail=true) const
uint32_t rawId() const
get the raw id
Definition: DetId.h:43
HcalRecoParams * theRecoParams
const Shape & defaultShape(const HcalDetId &detId) const
in case of conditions problems
double HcalPulseShapes::Y11203 ( double  t)
static

Definition at line 587 of file HcalPulseShapes.cc.

References JetChargeProducer_cfi::exp, and cmsBatch::log.

Referenced by computeSiPMShapeHE203(), and generatePhotonTime203().

587  {
588  return exp(-0.0635-0.1518*t + log(t)*2.528)/2485.9;
589 }
double HcalPulseShapes::Y11206 ( double  t)
static

Definition at line 592 of file HcalPulseShapes.cc.

References patCaloMETCorrections_cff::A, JetChargeProducer_cfi::exp, trackingPlots::fit, cropTnPTrees::frac, gen::n, edm::shift, cscNeutronWriter_cfi::t0, and heppy_batch::val.

Referenced by computeSiPMShapeHE206(), and generatePhotonTime206().

592  {
593  //Shifting phase to have better comparison of digi shape with data
594  //If necessary, further digi phase adjustment can be done here:
595  //SimCalorimetry/HcalSimProducers/python/hcalSimParameters_cfi.py
596  //by changing "timePhase"
597  double shift = 7.2;
598 
599  //Fit From Deconvolved Data
600  double A,n,t0,fit;
601  A=0.104204; n=0.44064; t0=10.0186;
602  if(t>shift) fit = A*(1-exp(-(t-shift)/n))*exp(-(t-shift)/t0);
603  else fit = 0.0;
604 
605  //Correction Term
606  double norm,mpv,sigma,corTerm;
607  norm=0.0809882; mpv=0; sigma=20;
608  if(t>shift) corTerm = norm*TMath::Landau((t-shift),mpv,sigma);
609  else corTerm = 0.0;
610 
611  //Overall Y11
612  double frac = 0.11;
613  double val = (1-frac)*fit + frac*corTerm;
614 
615  if(val >= 0) return val;
616  else return 0.0;
617 }
static unsigned int const shift

Member Data Documentation

constexpr float HcalPulseShapes::deltaTSiPM_ = 0.5
static

Definition at line 47 of file HcalPulseShapes.h.

Referenced by HcalSiPMShape::computeShape().

Shape HcalPulseShapes::hfShape_
private

Definition at line 82 of file HcalPulseShapes.h.

Referenced by computeHFShape(), and HcalPulseShapes().

Shape HcalPulseShapes::hpdBV30Shape_v2
private

Definition at line 87 of file HcalPulseShapes.h.

Referenced by HcalPulseShapes().

Shape HcalPulseShapes::hpdBV30ShapeMC_v2
private

Definition at line 87 of file HcalPulseShapes.h.

Referenced by HcalPulseShapes().

Shape HcalPulseShapes::hpdShape_
private

Definition at line 82 of file HcalPulseShapes.h.

Referenced by getShape(), and HcalPulseShapes().

Shape HcalPulseShapes::hpdShape_v2
private

Definition at line 85 of file HcalPulseShapes.h.

Referenced by HcalPulseShapes().

Shape HcalPulseShapes::hpdShape_v3
private

Definition at line 86 of file HcalPulseShapes.h.

Referenced by HcalPulseShapes().

Shape HcalPulseShapes::hpdShapeMC_v2
private

Definition at line 85 of file HcalPulseShapes.h.

Referenced by HcalPulseShapes().

Shape HcalPulseShapes::hpdShapeMC_v3
private

Definition at line 86 of file HcalPulseShapes.h.

Referenced by HcalPulseShapes().

constexpr float HcalPulseShapes::invDeltaTSiPM_ = 2.0
static
const int HcalPulseShapes::nBinsSiPM_ = 250
static

Definition at line 46 of file HcalPulseShapes.h.

Referenced by computeSiPMShapeHE203(), and computeSiPMShapeHE206().

Shape HcalPulseShapes::siPMShapeData2017_
private

Definition at line 83 of file HcalPulseShapes.h.

Referenced by computeSiPMShapeData2017(), and HcalPulseShapes().

Shape HcalPulseShapes::siPMShapeData2018_
private

Definition at line 84 of file HcalPulseShapes.h.

Referenced by computeSiPMShapeData2018(), and HcalPulseShapes().

Shape HcalPulseShapes::siPMShapeHO_
private

Definition at line 82 of file HcalPulseShapes.h.

Referenced by computeSiPMShapeHO(), and HcalPulseShapes().

Shape HcalPulseShapes::siPMShapeMC2017_
private

Definition at line 83 of file HcalPulseShapes.h.

Referenced by computeSiPMShapeHE203(), and HcalPulseShapes().

Shape HcalPulseShapes::siPMShapeMC2018_
private

Definition at line 84 of file HcalPulseShapes.h.

Referenced by computeSiPMShapeHE206(), and HcalPulseShapes().

HcalMCParams* HcalPulseShapes::theMCParams
private

Definition at line 88 of file HcalPulseShapes.h.

Referenced by beginRun(), endRun(), shape(), and ~HcalPulseShapes().

HcalRecoParams* HcalPulseShapes::theRecoParams
private

Definition at line 90 of file HcalPulseShapes.h.

Referenced by beginRun(), endRun(), shapeForReco(), and ~HcalPulseShapes().

ShapeMap HcalPulseShapes::theShapes
private

Definition at line 92 of file HcalPulseShapes.h.

Referenced by getShape(), HcalPulseShapes(), shape(), and shapeForReco().

const HcalTopology* HcalPulseShapes::theTopology
private

Definition at line 89 of file HcalPulseShapes.h.

Referenced by beginRun(), endRun(), and ~HcalPulseShapes().

constexpr float HcalPulseShapes::Y11MAX203_ = 0.04
static

Definition at line 52 of file HcalPulseShapes.h.

Referenced by generatePhotonTime203().

constexpr float HcalPulseShapes::Y11MAX206_ = 0.08
static

Definition at line 53 of file HcalPulseShapes.h.

Referenced by generatePhotonTime206().

constexpr float HcalPulseShapes::Y11RANGE_ = nBinsSiPM_
static

Definition at line 51 of file HcalPulseShapes.h.

Referenced by generatePhotonTime203(), and generatePhotonTime206().