46 float ts1, ts2, ts3, thpd, tpre, wd1, wd2, wd3;
49 ts1=8. ; ts2=10. ; ts3=29.3; thpd=4.0; tpre=9.0; wd1=2.0; wd2=0.7; wd3=1.0;
55 ts1=8. ; ts2=10. ; ts3=25.0; thpd=4.0; tpre=9.0; wd1=2.0; wd2=0.7; wd3=1.0;
59 ts1=8. ; ts2=10. ; ts3=29.3; thpd=4.0; tpre=7.0; wd1=2.0; wd2=0.7; wd3=1.0;
64 ts1=8. ; ts2=19. ; ts3=29.3; thpd=4.0; tpre=9.0; wd1=2.0; wd2=0.7; wd3=0.32;
68 ts1=8. ; ts2=10. ; ts3=22.3; thpd=4.0; tpre=7.0; wd1=2.0; wd2=0.7; wd3=1.0;
74 ts1=8. ; ts2=12. ; ts3=31.7; thpd=9.0; tpre=9.0; wd1=2.0; wd2=0.7; wd3=1.0;
78 ts1=8. ; ts2=12. ; ts3=31.7; thpd=9.0; tpre=9.0; wd1=2.0; wd2=0.7; wd3=1.0;
148 float wd1,
float wd2,
float wd3,
Shape &tmphpdShape_)
172 unsigned int nbin = 256;
174 std::vector<float> ntmp(nbin,0.0);
175 std::vector<float> nth(nbin,0.0);
176 std::vector<float> ntp(nbin,0.0);
177 std::vector<float> ntd(nbin,0.0);
184 for(j=0;j<thpd && j<nbin;j++){
185 nth[
j] = 1.0 + ((float)j)/thpd;
189 for(j=0;j<thpd && j<nbin;j++){
195 for(j=0;j<6*tpre && j<nbin;j++){
196 ntp[
j] = ((float)j)*
exp(-((
float)(j*j))/(tpre*tpre));
200 for(j=0;j<6*tpre && j<nbin;j++){
208 unsigned int tmax = 6 * (int)ts3;
211 for(j=0;j<tmax && j<nbin;j++){
212 ntd[
j] = wd1 *
exp(-((
float)j)/ts1) +
213 wd2 *
exp(-((
float)j)/ts2) +
214 wd3 *
exp(-((
float)j)/ts3) ;
218 for(j=0;j<tmax && j<nbin;j++){
222 unsigned int t1,t2,t3,t4;
223 for(i=0;i<tmax && i<nbin;i++){
228 for(j=0;j<thpd && j<nbin;j++){
230 for(k=0;k<4*tpre && k<nbin;k++){
234 ntmp[ntb] += ntd[
i]*nth[
j]*ntp[
k];
247 for(i=0; i<nbin; i++){
252 for(i=0; i<nbin; i++){
259 unsigned int nbin = 256;
261 std::vector<float> ntmp(nbin,0.0);
263 const float k0=0.7956;
264 const float p2=1.355;
265 const float p4=2.327;
270 for(
unsigned int j = 0;
j < 25 &&
j < nbin; ++
j){
273 float sigma0 = (r0<0) ? p2 : p2*p4;
275 if(r0 < k0) ntmp[
j] =
exp(-0.5*r0*r0);
276 else ntmp[
j] =
exp(0.5*k0*k0-k0*r0);
280 for(
unsigned int j = 0;
j < 25 &&
j < nbin; ++
j){
290 unsigned int nbin = 128;
293 std::vector<float>
nt = {
294 2.782980485851731e-6,
295 4.518134885954626e-5,
296 2.7689305197392056e-4,
362 9.273987838127585e-4,
363 8.315731274976846e-4,
364 7.451662302008696e-4,
365 6.673176219006913e-4,
366 5.972364609644049e-4,
367 5.341971801529036e-4,
368 4.775352065178378e-4,
369 4.266427928961177e-4,
370 3.8096498904225923e-4,
371 3.3999577417327287e-4,
372 3.032743659102713e-4,
373 2.703817158798329e-4,
374 2.4093719775272793e-4,
375 2.145954900503894e-4,
376 1.9104365317752797e-4,
377 1.6999839784346724e-4,
378 1.5120354022478893e-4,
379 1.3442763782650755e-4,
380 1.1946179895521507e-4,
381 1.0611765796993575e-4,
382 9.422550797617687e-5,
383 8.363258233342666e-5,
384 7.420147621931836e-5,
385 6.580869950304933e-5,
386 5.834335229919868e-5,
388 4.5807143072062634e-5,
389 4.0567063461299446e-5,
390 3.591405732740723e-5,
391 3.178402980354131e-5,
392 2.811965539165646e-5,
393 2.4869694240316126e-5,
394 2.1988373166730962e-5,
395 1.9434825899529382e-5,
396 1.717258740121378e-5,
397 1.5169137499243157e-5,
398 1.339548941011129e-5,
399 1.1825819079078403e-5,
400 1.0437131581057595e-5,
401 9.208961130078894e-6,
403 7.163364176588591e-6,
404 6.315360932244386e-6,
405 5.566309502463164e-6,
406 4.904859063429651e-6,
407 4.320934164082596e-6,
408 3.8055950719111903e-6,
409 3.350912911083174e-6,
410 2.9498580949517117e-6,
411 2.596200697612328e-6,
412 2.2844215378879293e-6,
413 2.0096328693141094e-6,
414 1.7675076766686654e-6,
415 1.5542166787225756e-6,
416 1.366372225473431e-6,
417 1.200978365778838e-6,
418 1.0553864128982371e-6,
419 9.272554464808518e-7,
420 8.145171945902259e-7,
427 for (
unsigned int j = 0;
j < nbin; ++
j) {
428 norm += (nt[
j]>0) ? nt[
j] : 0.;
431 for (
unsigned int j = 0;
j < nbin; ++
j) {
450 ShapeMap::const_iterator shapeMapItr =
theShapes.find(shapeType);
455 return *(shapeMapItr->second);
481 ShapeMap::const_iterator shapeMapItr =
theShapes.find(shapeType);
485 return *(shapeMapItr->second);
510 ShapeMap::const_iterator shapeMapItr =
theShapes.find(shapeType);
514 return *(shapeMapItr->second);
const Shape & getShape(int shapeType) const
const Shape & heShape() const
HcalSubdetector subdet() const
get the subdetector
void setShapeBin(int i, float f)
const Shape & hoShape(bool sipm=false) const
void beginRun(edm::EventSetup const &es)
void setTopo(const HcalTopology *topo) const
const Item * getValues(DetId fId, bool throwOnFail=true) const
const Shape & shapeForReco(const HcalDetId &detId) const
const Shape & shape(const HcalDetId &detId) const
automatically figures out which shape to return
uint32_t rawId() const
get the raw id
static const double tmax[3]
const Shape & defaultShape(const HcalDetId &detId) const
in case of conditions problems
const Shape & hfShape() const
void computeHPDShape(float, float, float, float, float, float, float, float, Shape &)
const HcalRecoParams * theRecoParams
const HcalTopology * theTopology
T const * product() const
const HcalMCParams * theMCParams
unsigned int signalShape() const
const Shape & hbShape() const