1 #ifndef CALIBCALORIMETRY_HCALALGOS_HCALPULSESHAPES_H 2 #define CALIBCALORIMETRY_HCALALGOS_HCALPULSESHAPES_H 1 18 class HepRandomEngine;
30 const Shape&
hbShape()
const {
return hpdShape_; }
31 const Shape&
heShape()
const {
return hpdShape_; }
32 const Shape&
hfShape()
const {
return hfShape_; }
33 const Shape&
hoShape(
bool sipm =
false)
const {
return sipm ? siPMShapeHO_ : hpdShape_; }
35 const Shape&
getShape(
int shapeType)
const;
37 const Shape& shape(
const HcalDetId& detId)
const;
38 const Shape& shapeForReco(
const HcalDetId& detId)
const;
40 const Shape& defaultShape(
const HcalDetId& detId)
const;
42 static const int nBinsSiPM_ = 250;
45 static double analyticPulseShapeSiPMHO(
double t);
46 static double analyticPulseShapeSiPMHE(
double t);
50 static double Y11203(
double t);
51 static double Y11206(
double t);
52 static double generatePhotonTime(CLHEP::HepRandomEngine* engine,
unsigned int signalShape);
53 static double generatePhotonTime203(CLHEP::HepRandomEngine* engine);
54 static double generatePhotonTime206(CLHEP::HepRandomEngine* engine);
56 template <
class F1,
class F2>
58 std::vector<double>
result(2 * nbin - 1, 0.);
59 for (
unsigned i = 0;
i < 2 * nbin - 1; ++
i) {
72 for (
unsigned int j = 1;
j <=
nbin; ++
j) {
73 norm += (nt[
j] > 0) ? nt[
j] : 0.;
76 double normInv = 1. / norm;
77 for (
unsigned int j = 1;
j <=
nbin; ++
j) {
89 double normInv = 1. / norm;
90 std::vector<double> nt2(nt.size(), 0);
91 for (
int j = 1;
j <= (
int)nbin;
j++) {
93 nt2[
j] = nt[
j -
shift] * normInv;
99 std::map<int, Shape const*>
const&
get_all_shapes()
const {
return theShapes; }
102 void computeHPDShape(
float,
float,
float,
float,
float,
float,
float,
float, Shape&);
103 void computeHFShape();
104 void computeSiPMShapeHO();
107 void computeSiPMShapeData2017();
108 void computeSiPMShapeData2018();
const Shape & heShape() const
static std::vector< double > normalizeShift(std::vector< double > nt, unsigned nbin, int shift)
const Shape & hoShape(bool sipm=false) const
static std::vector< double > normalize(std::vector< double > nt, unsigned nbin)
static std::vector< double > convolve(unsigned nbin, F1 f1, F2 f2)
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
const HcalDbService * theDbService
const Shape & hfShape() const
std::map< int, Shape const * > const & get_all_shapes() const
std::map< int, const Shape * > ShapeMap
const Shape & hbShape() const
static unsigned int const shift
TEveGeoShape * getShape(const char *name, TGeoBBox *shape, Color_t color)