ATLAS Offline Software
GetQuantumEfficiency.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #include <algorithm>
6 #include <cassert>
7 #include "GetQuantumEfficiency.h"
8 
9 namespace {
10 
11  struct L2QE {
12  double lambda;
13  double qe;
14  };
15 
16  L2QE const r762[] = {
17  {160., 0.063096},
18  {170., 0.152522},
19  {180., 0.188365},
20  {190., 0.211349},
21  {200., 0.237137},
22  {210., 0.232631},
23  {220., 0.223872},
24  {230., 0.207332},
25  {240., 0.203392},
26  {250., 0.199526},
27  {260., 0.192014},
28  {270., 0.188365},
29  {280., 0.192014},
30  {290., 0.207332},
31  {300., 0.211349},
32  {310., 0.215443},
33  {320., 0.223872},
34  {330., 0.228209},
35  {340., 0.232631},
36  {350., 0.237137},
37  {360., 0.241732},
38  {370., 0.246415},
39  {380., 0.256055},
40  {390., 0.251189},
41  {400., 0.251189},
42  {410., 0.251189},
43  {420., 0.251189},
44  {430., 0.246415},
45  {440., 0.246415},
46  {450., 0.237137},
47  {460., 0.232631},
48  {470., 0.219617},
49  {480., 0.207332},
50  {490., 0.195734},
51  {500., 0.177828},
52  {510., 0.161560},
53  {520., 0.146780},
54  {530., 0.133352},
55  {540., 0.125893},
56  {550., 0.114376},
57  {560., 0.101937},
58  {570., 0.077923},
59  {580., 0.055165},
60  {590., 0.044668},
61  {600., 0.036869},
62  {610., 0.029854},
63  {620., 0.021962},
64  {630., 0.017113},
65  {640., 0.012115},
66  {650., 0.008912},
67  {660., 0.005623},
68  {670., 0.003687},
69  {680., 0.002073},
70  {690., 0.001188},
71  {700., 0.000764}
72  };
73 
74  bool less_than(L2QE const& lhs, double l) { return lhs.lambda < l; }
75 
76  L2QE const* const r762_begin = r762;
77  L2QE const* const r762_end = r762 + sizeof(r762) / sizeof(L2QE);
78 }
79 
80 double GetQuantumEfficiency(double lambda, L2QE const* first, L2QE const* last) {
81 
82  double const lambda_min = first->lambda;
83  double const lambda_max = (last - 1)->lambda;
84 
85  if (lambda < lambda_min || lambda > lambda_max) return 0;
86 
87  L2QE const* const p(std::lower_bound(first, last, lambda, less_than));
88 
89  if (p == first) return p->qe;
90  else {
91 
92  L2QE const* const q = p - 1;
93  return (lambda - q->lambda)*(p->qe - q->qe)/(p->lambda - q->lambda) + q->qe;
94  }
95 }
96 
97 double GetQuantumEfficiencyR762(double lambda) { return GetQuantumEfficiency(lambda, r762_begin, r762_end); }
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
UploadAMITag.l
list l
Definition: UploadAMITag.larcaf.py:158
GetQuantumEfficiency
double GetQuantumEfficiency(double lambda, L2QE const *first, L2QE const *last)
Definition: GetQuantumEfficiency.cxx:80
GetQuantumEfficiencyR762
double GetQuantumEfficiencyR762(double lambda)
Definition: GetQuantumEfficiency.cxx:97
DeMoScan.first
bool first
Definition: DeMoScan.py:534
extractSporadic.q
list q
Definition: extractSporadic.py:98
GetQuantumEfficiency.h