CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
SigmaPtDiff.h
Go to the documentation of this file.
1 #ifndef SigmaPtDiff_h
2 #define SigmaPtDiff_h
3 
4 #include <vector>
5 #include <cmath>
6 
7 class SigmaPt {
8 public:
9  SigmaPt(const std::vector<double>& parameters_, const std::vector<double>& errors_) {
10  setParErr(parameters_, errors_);
11  }
12 
13  SigmaPt(){};
14 
15  void setParErr(const std::vector<double>& parameters, const std::vector<double>& errors) {
16  b_0 = parameters[0];
17  b_1 = parameters[5];
18  b_2 = parameters[1];
19  b_3 = parameters[7];
20  b_4 = parameters[8];
21  sb_0 = errors[0];
22  sb_1 = errors[5];
23  sb_2 = errors[1];
24  sb_3 = errors[7];
25  sb_4 = errors[8];
26  c = b_2 + b_3 * (b_0 - b_4) * (b_0 - b_4) - b_1 * b_0 * b_0;
27  }
28 
29  double operator()(const double& eta) {
30  if (fabs(eta) <= b_0) {
31  return (c + b_1 * eta * eta);
32  }
33  return (b_2 + b_3 * (fabs(eta) - b_4) * (fabs(eta) - b_4));
34  }
35  double sigma(const double& eta) {
36  if (fabs(eta) <= b_0) {
37  return sqrt((eta * eta - b_0 * b_0) * (eta * eta - b_0 * b_0) * sb_1 * sb_1 + sb_2 * sb_2 +
38  pow(b_0 - b_4, 4) * sb_3 * sb_3 + pow(-2 * b_3 * pow(b_0 - b_4, 2), 2) * sb_4 * sb_4 +
39  pow(2 * b_3 * (b_0 - b_4) - 2 * b_1 * b_0, 2) * sb_0 * sb_0);
40  }
41  return sqrt(sb_2 * sb_2 + pow(fabs(eta) - b_4, 4) * sb_3 * sb_3 +
42  pow(-2 * b_3 * pow(fabs(eta) - b_4, 2), 2) * sb_4 * sb_4);
43  }
44 
45 protected:
46  double b_0;
47  double b_1;
48  double b_2;
49  double b_3;
50  double b_4;
51  double c;
52 
53  double sb_0;
54  double sb_1;
55  double sb_2;
56  double sb_3;
57  double sb_4;
58 };
59 
61 class SigmaPtDiff {
62 public:
64  std::vector<double> parameters;
65  std::vector<double> errors;
66  parameters.push_back(1.66);
67  parameters.push_back(0.021);
68  parameters.push_back(0.);
69  parameters.push_back(0.);
70  parameters.push_back(0.);
71  parameters.push_back(0.0058);
72  parameters.push_back(0.);
73  parameters.push_back(0.03);
74  parameters.push_back(1.8);
75  parameters.push_back(0.);
76  parameters.push_back(0.);
77  parameters.push_back(0.);
78  parameters.push_back(0.);
79  parameters.push_back(0.);
80  parameters.push_back(0.);
81  errors.push_back(0.09);
82  errors.push_back(0.002);
83  errors.push_back(0.);
84  errors.push_back(0.);
85  errors.push_back(0.);
86  errors.push_back(0.0009);
87  errors.push_back(0.);
88  errors.push_back(0.03);
89  errors.push_back(0.3);
90  errors.push_back(0.);
91  errors.push_back(0.);
92  errors.push_back(0.);
93  errors.push_back(0.);
94  errors.push_back(0.);
95  errors.push_back(0.);
96 
97  sigmaPt.setParErr(parameters, errors);
98  }
99  double etaByPoints(const double& eta) {
100  if (eta <= -2.2)
101  return 0.0233989;
102  else if (eta <= -2.0)
103  return 0.0197057;
104  else if (eta <= -1.8)
105  return 0.014693;
106  else if (eta <= -1.6)
107  return 0.0146727;
108  else if (eta <= -1.4)
109  return 0.0141323;
110  else if (eta <= -1.2)
111  return 0.0159712;
112  else if (eta <= -1.0)
113  return 0.0117224;
114  else if (eta <= -0.8)
115  return 0.010726;
116  else if (eta <= -0.6)
117  return 0.0104777;
118  else if (eta <= -0.4)
119  return 0.00814458;
120  else if (eta <= -0.2)
121  return 0.00632501;
122  else if (eta <= 0.0)
123  return 0.00644172;
124  else if (eta <= 0.2)
125  return 0.00772645;
126  else if (eta <= 0.4)
127  return 0.010103;
128  else if (eta <= 0.6)
129  return 0.0099275;
130  else if (eta <= 0.8)
131  return 0.0100309;
132  else if (eta <= 1.0)
133  return 0.0125116;
134  else if (eta <= 1.2)
135  return 0.0147211;
136  else if (eta <= 1.4)
137  return 0.0151623;
138  else if (eta <= 1.6)
139  return 0.015259;
140  else if (eta <= 1.8)
141  return 0.014499;
142  else if (eta <= 2.0)
143  return 0.0165215;
144  else if (eta <= 2.2)
145  return 0.0212348;
146  return 0.0227285;
147  }
148  // double squaredDiff(const double & eta, SigmaPt & sigmaPt)
149  double squaredDiff(const double& eta) {
150  double sigmaPtPlus = sigmaPt(eta) + sigmaPt.sigma(eta);
151  double sigmaPtMinus = sigmaPt(eta) - sigmaPt.sigma(eta);
152  if (fabs(sigmaPtPlus * sigmaPtPlus - etaByPoints(eta) * etaByPoints(eta)) >
153  fabs(sigmaPtMinus * sigmaPtMinus - etaByPoints(eta) * etaByPoints(eta))) {
154  return (fabs(sigmaPtPlus * sigmaPtPlus - etaByPoints(eta) * etaByPoints(eta)));
155  }
156  return (fabs(sigmaPtMinus * sigmaPtMinus - etaByPoints(eta) * etaByPoints(eta)));
157  }
159 };
160 
161 #endif
double b_1
Definition: SigmaPtDiff.h:47
Returns ( sigmaPt/Pt(data)^2 - sigmaPt/Pt(MC)^2 )
Definition: SigmaPtDiff.h:61
void setParErr(const std::vector< double > &parameters, const std::vector< double > &errors)
Definition: SigmaPtDiff.h:15
double sb_0
Definition: SigmaPtDiff.h:53
double b_0
Definition: SigmaPtDiff.h:46
double operator()(const double &eta)
Definition: SigmaPtDiff.h:29
double etaByPoints(const double &eta)
Definition: SigmaPtDiff.h:99
double b_4
Definition: SigmaPtDiff.h:50
double sigma(const double &eta)
Definition: SigmaPtDiff.h:35
T sqrt(T t)
Definition: SSEVec.h:19
double c
Definition: SigmaPtDiff.h:51
double sb_3
Definition: SigmaPtDiff.h:56
double squaredDiff(const double &eta)
Definition: SigmaPtDiff.h:149
double b_3
Definition: SigmaPtDiff.h:49
SigmaPt(const std::vector< double > &parameters_, const std::vector< double > &errors_)
Definition: SigmaPtDiff.h:9
double b_2
Definition: SigmaPtDiff.h:48
double sb_4
Definition: SigmaPtDiff.h:57
double sb_1
Definition: SigmaPtDiff.h:54
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:29
SigmaPt sigmaPt
Definition: SigmaPtDiff.h:158
double sb_2
Definition: SigmaPtDiff.h:55