CMS 3D CMS Logo

HFDarkening.cc
Go to the documentation of this file.
1 //File: HFDarkening.cc
3 //Description: simple helper class containing parameterized function
4 // to be used for the SLHC darkening calculation in HF
6 
8 #include <algorithm>
9 #include <cmath>
10 
11 // CMSSW Headers
14 
16  //HF area of consideration is 1115 cm from interaction point to 1280cm in z-axis
17  //Radius (cm) - 13 cm from Beam pipe to 130cm (the top of HF active area)
18  //Dose in MRad
19 
20  vecOfDoubles HFDosePars = pset.getParameter<vecOfDoubles>("doseLayerDepth");
21  int i = 0;
22  for (int Z = 0; Z != _numberOfZLayers; ++Z) {
23  for (int R = 0; R != _numberOfRLayers; ++R) {
24  HFDoseLayerDarkeningPars[Z][R] = HFDosePars[i];
25  ++i;
26  }
27  }
28 }
29 
31 
32 double HFDarkening::dose(unsigned int layer, double radius) {
33  // Radii are 13-17, 17-20, 20-24, 24-29, 29-34, 34-41, 41-48, 48-58, 58-69, 69-82, 82-98, 98-116, 116-130
34  // These radii are specific to the geometry of the dose map, which closely matches HF Tower Geometry,
35  // but not exactly.
36  if (layer > (_numberOfZLayers - 1)) {
37  return 0.;
38  }
39 
40  int radiusIndex = 0;
41  if (radius <= 17.0)
42  radiusIndex = 0;
43  else if (radius <= 20.0)
44  radiusIndex = 1;
45  else if (radius <= 24.0)
46  radiusIndex = 2;
47  else if (radius <= 29.0)
48  radiusIndex = 3;
49  else if (radius <= 34.0)
50  radiusIndex = 4;
51  else if (radius <= 41.0)
52  radiusIndex = 5;
53  else if (radius <= 48.0)
54  radiusIndex = 6;
55  else if (radius <= 58.0)
56  radiusIndex = 7;
57  else if (radius <= 69.0)
58  radiusIndex = 8;
59  else if (radius <= 82.0)
60  radiusIndex = 9;
61  else if (radius <= 98.0)
62  radiusIndex = 10;
63  else if (radius <= 116.0)
64  radiusIndex = 11;
65  else if (radius <= 130.0)
66  radiusIndex = 12;
67  else
68  return 0.;
69 
70  return HFDoseLayerDarkeningPars[layer][radiusIndex];
71 }
72 
73 double HFDarkening::degradation(double mrad) { return (exp(-1.44 * pow(mrad / 100, 0.44) * 0.2 / 4.343)); }
74 
75 double HFDarkening::int_lumi(double intlumi) { return (intlumi / 500.); }
std::vector< double > vecOfDoubles
double dose(unsigned int layer, double radius)
Definition: HFDarkening.cc:32
double degradation(double mrad)
Definition: HFDarkening.cc:73
constexpr std::array< uint8_t, layerIndexSize< TrackerTraits > > layer
double int_lumi(double intlumi)
Definition: HFDarkening.cc:75
HFDarkening(const edm::ParameterSet &pset)
Definition: HFDarkening.cc:15
static const unsigned int _numberOfZLayers
Definition: HFDarkening.h:32
double HFDoseLayerDarkeningPars[numberOfZLayers][numberOfRLayers]
Definition: HFDarkening.h:31
static const unsigned int _numberOfRLayers
Definition: HFDarkening.h:33
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:29