ATLAS Offline Software
Loading...
Searching...
No Matches
muCombUtil Namespace Reference

Functions

void setMuFastRes (std::vector< double > &, double, double, double, double, double, double)
 utility vector set
void setIDSCANRes (std::vector< double > &, double, double)
 utility vector set
int whichECRegion (const float, const float)
 utility function for getMuFastRes
double getIDSCANRes (std::vector< double >, std::vector< double >, std::vector< double >, std::vector< double >, std::vector< double >, double, double)
 Get parametrized IDSCAN 1/pt resolution.
double getG4ExtEtaRes (double, double)
 Get parametrized Geant4 Eta resolution (extrapolated).
double getG4ExtPhiRes (double, double)
 Get parametrized Geant4 Phi resolution (extrapolated).
double getDeltaPhi (double, double)
 Get DeltaPhi.
double getDeltaEta (double, double)
 Get DeltaEta.
double getDeltaR (double, double, double, double)
 Get DeltaR.
double getCombinedAverage (double, double, double, double)
 Get weighted mean.
double getCombinedAverageSigma (double, double)
 Get sigma of weighted mean.
double getChi2 (int &, double, double, double, double, double, double, double, double, double, double, double, double, double, bool)
 Get OLD style (i.e. muFast time) Chi2.
double getStdChi2 (int &, double, double, double, double, double, double, double, double, double, double, double, double, bool)
 Get Std Chi2.

Function Documentation

◆ getChi2()

double muCombUtil::getChi2 ( int & ndof,
double ipt,
double eta1,
double seta1,
double phi1,
double sphi1,
double ipt1,
double sipt1,
double eta2,
double seta2,
double phi2,
double sphi2,
double ipt2,
double sipt2,
bool useAbsPt )

Get OLD style (i.e. muFast time) Chi2.

Definition at line 175 of file muCombUtil.cxx.

177 {
178
179 double deta = getDeltaEta(eta1,eta2);
180 double sdeta = seta1*seta1+seta2*seta2;
181 double dphi = getDeltaPhi(phi1,phi2);
182 double sdphi = sphi1*sphi1+sphi2*sphi2;
183 double dipt_1 = ipt - ipt1;
184 if (useAbsPt) dipt_1 = fabs(ipt) - fabs(ipt1);
185 double sdipt_1 = sipt1*sipt1;
186 double dipt_2 = ipt - ipt2;
187 if (useAbsPt) dipt_2 = fabs(ipt) - fabs(ipt2);
188 double sdipt_2 = sipt2*sipt2;
189
190 double chi2 = 0.0;
191 ndof = 0;
192 if (sdeta != 0) { chi2 += deta*deta/sdeta; ndof++; }
193 if (sdphi != 0) { chi2 += dphi*dphi/sdphi; ndof++; }
194 if (sdipt_1 != 0) { chi2 += dipt_1*dipt_1/sdipt_1; ndof++; }
195 if (sdipt_2 != 0) { chi2 += dipt_2*dipt_2/sdipt_2; ndof++; }
196
197 if (ndof == 0) return 1.0e30;
198 else return chi2;
199 }
double chi2(TH1 *h0, TH1 *h1)
float ndof(const U &p)
double getDeltaEta(double eta1, double eta2)
Get DeltaEta.
double getDeltaPhi(double phi1, double phi2)
Get DeltaPhi.

◆ getCombinedAverage()

double muCombUtil::getCombinedAverage ( double p1,
double sp1,
double p2,
double sp2 )

Get weighted mean.

Definition at line 163 of file muCombUtil.cxx.

163 {
164 if (sp1 != 0 && sp2 != 0) return (sp2*sp2*fabs(p1) + sp1*sp1*fabs(p2))/(sp1*sp1 + sp2*sp2);
165 else if (sp1 != 0 && sp2 == 0) return fabs(p2);
166 else if (sp1 == 0 && sp2 != 0) return fabs(p1);
167 else return (fabs(p1)+fabs(p2))*0.5;
168 }

◆ getCombinedAverageSigma()

double muCombUtil::getCombinedAverageSigma ( double sp1,
double sp2 )

Get sigma of weighted mean.

Definition at line 170 of file muCombUtil.cxx.

170 {
171 if (sp1 != 0 && sp2 != 0) return sqrt((sp1*sp1*sp2*sp2)/(sp1*sp1 + sp2*sp2));
172 else return 0.0;
173 }

◆ getDeltaEta()

double muCombUtil::getDeltaEta ( double eta1,
double eta2 )

Get DeltaEta.

Definition at line 153 of file muCombUtil.cxx.

153 {
154 return fabs(eta1-eta2);
155 }

◆ getDeltaPhi()

double muCombUtil::getDeltaPhi ( double phi1,
double phi2 )

Get DeltaPhi.

Definition at line 146 of file muCombUtil.cxx.

146 {
147 double dphi = phi1 - phi2;
148 if (dphi > M_PI) dphi -= 2*M_PI;
149 if (dphi < -M_PI) dphi += 2*M_PI;
150 return fabs(dphi);
151 }
#define M_PI

◆ getDeltaR()

double muCombUtil::getDeltaR ( double eta1,
double phi1,
double eta2,
double phi2 )

Get DeltaR.

Definition at line 157 of file muCombUtil.cxx.

157 {
158 double deta = getDeltaEta(eta1,eta2);
159 double dphi = getDeltaPhi(phi1,phi2);
160 return sqrt(deta*deta + dphi*dphi);
161 }

◆ getG4ExtEtaRes()

double muCombUtil::getG4ExtEtaRes ( double pt,
double eta )

Get parametrized Geant4 Eta resolution (extrapolated).

Definition at line 89 of file muCombUtil.cxx.

89 {
90
91 //double pt = feature->pt();
92 //double eta = feature->eta();
93 if (pt < 4. ) pt = 4.;
94 if (pt > 40.) pt = 40.;
95 // bool ts = false;
96 // if (feature->radius() <= 10.) ts = true;
97
98 //G4 extrapolator eta resolution parametrized as A/pt^2 + B/pt + C + D*pt
99 // Resolution evaluated in regions of eta: 0.0,0.5,1.0,1.5,2.0,above...
100 if (fabs(eta) < 0.5) {
101 return 6.0e-3/(pt*pt) + 4.4e-2/pt + 1.2e-2 + (-3.2e-5*pt);
102 }
103 else if (fabs(eta) >= 0.5 && fabs(eta) < 1.0) {
104 return 5.6e-3/(pt*pt) + 3.9e-2/pt + 1.3e-2 + (-3.7e-5*pt);
105 }
106 else if (fabs(eta) >= 1.0 && fabs(eta) < 1.5) {
107 return 2.1e-1/(pt*pt) + 8.8e-2/pt + 7.1e-4 + (1.7e-4*pt);
108 }
109 else if (fabs(eta) >= 1.5 && fabs(eta) < 2.0) {
110 return 4.5e-3/(pt*pt) + 1.4e-2/pt + 1.1e-2 + (-5.7e-5*pt);
111 }
112 else { // if (fabs(eta) >= 2.0) {
113 return 3.1e-2/(pt*pt) + 4.9e-1/pt + (-2.6e-3) + (3.2e-5*pt);
114 }
115 }
Scalar eta() const
pseudorapidity method

◆ getG4ExtPhiRes()

double muCombUtil::getG4ExtPhiRes ( double pt,
double eta )

Get parametrized Geant4 Phi resolution (extrapolated).

Definition at line 118 of file muCombUtil.cxx.

118 {
119
120 //double pt = feature->pt();
121 //double eta = feature->eta();
122 if (pt < 4. ) pt = 4.;
123 if (pt > 40.) pt = 40.;
124 // bool ts = false;
125 // if (feature->radius() <= 10.) ts = true;
126
127 //G4 extrapolator phi resolution parametrized as A/pt^2 + B/pt + C + D*pt
128 // Resolution evaluated in regions of eta: 0.0,0.5,1.0,1.5,2.0,above...
129 if (fabs(eta) < 0.5) {
130 return 4.1e-2/(pt*pt) + 1.5e-1/pt + 1.4e-3 + (5.8e-5*pt);
131 }
132 else if (fabs(eta) >= 0.5 && fabs(eta) < 1.0) {
133 return 9.4e-3/(pt*pt) + 8.8e-2/pt + 1.1e-2 + (-1.e-4*pt);
134 }
135 else if (fabs(eta) >= 1.0 && fabs(eta) < 1.5) {
136 return 3.5e-1/(pt*pt) + 9.4e-2/pt + 8.2e-3 + (-3.3e-7*pt);
137 }
138 else if (fabs(eta) >= 1.5 && fabs(eta) < 2.0) {
139 return 2.6e-2/(pt*pt) + 1.2e-1/pt + 3.8e-3 + (2.2e-5*pt);
140 }
141 else { // if (fabs(eta) >= 2.0) {
142 return 2.7e-1/(pt*pt) + 3.2e-2/pt + (9.0e-3) + (-2.6e-5*pt);
143 }
144 }

◆ getIDSCANRes()

double muCombUtil::getIDSCANRes ( std::vector< double > barrelvec,
std::vector< double > ec1vec,
std::vector< double > ec2vec,
std::vector< double > ec3vec,
std::vector< double > ec4vec,
double pt_id,
double eta_id )

Get parametrized IDSCAN 1/pt resolution.

Definition at line 68 of file muCombUtil.cxx.

70 {
71
72 double pt = pt_id;
73 if (pt == 0) return 1.0e33;
74
75 double AbsPtInv = fabs(1./pt);
76 double AbsEta = fabs(eta_id);
77
78 std::vector<double> vec;
79 if (AbsEta < 1.05) vec = std::move(barrelvec);
80 else if (AbsEta>=1.05 && AbsEta<1.35) vec = std::move(ec1vec);
81 else if (AbsEta>=1.35 && AbsEta<1.65) vec = std::move(ec2vec);
82 else if (AbsEta>=1.65 && AbsEta<2.0) vec = std::move(ec3vec);
83 else vec = std::move(ec4vec);
84
85 return vec[0]*AbsPtInv+vec[1]/1000.;
86 }
std::vector< size_t > vec

◆ getStdChi2()

double muCombUtil::getStdChi2 ( int & ndof,
double eta1,
double seta1,
double phi1,
double sphi1,
double qOvpt1,
double sqOvpt1,
double eta2,
double seta2,
double phi2,
double sphi2,
double qOvpt2,
double sqOvpt2,
bool useAbsPt )

Get Std Chi2.

Definition at line 202 of file muCombUtil.cxx.

204 {
205
206 double deta = getDeltaEta(eta1,eta2);
207 double sdeta = seta1*seta1+seta2*seta2;
208 double dphi = getDeltaPhi(phi1,phi2);
209 double sdphi = sphi1*sphi1+sphi2*sphi2;
210 double dipt = qOvpt1 - qOvpt2;
211 if (useAbsPt) dipt = fabs(qOvpt1) - fabs(qOvpt2);
212 double sdipt = sqOvpt1*sqOvpt1+sqOvpt2*sqOvpt2;
213
214 double chi2 = 0.0;
215 ndof = 0;
216 if (sdeta != 0) { chi2 += deta*deta/sdeta; ndof++; }
217 if (sdphi != 0) { chi2 += dphi*dphi/sdphi; ndof++; }
218 if (sdipt != 0) { chi2 += dipt*dipt/sdipt; ndof++; }
219
220 if (ndof == 0) return 1.0e30;
221 else return chi2;
222 }

◆ setIDSCANRes()

void muCombUtil::setIDSCANRes ( std::vector< double > & vec,
double p1,
double p2 )

utility vector set

Definition at line 33 of file muCombUtil.cxx.

33 {
34 vec.clear();
35 vec.push_back(p1);
36 vec.push_back(p2);
37 }

◆ setMuFastRes()

void muCombUtil::setMuFastRes ( std::vector< double > & vec,
double p1,
double p2,
double p3,
double p4,
double p5,
double p6 )

utility vector set

Definition at line 22 of file muCombUtil.cxx.

23 {
24 vec.clear();
25 vec.push_back(p1);
26 vec.push_back(p2);
27 vec.push_back(p3);
28 vec.push_back(p4);
29 vec.push_back(p5);
30 vec.push_back(p6);
31 }

◆ whichECRegion()

int muCombUtil::whichECRegion ( const float eta,
const float phi )

utility function for getMuFastRes

Definition at line 40 of file muCombUtil.cxx.

40 {
41 // 0: bulk
42 // 1: WeakBfield A
43 // 2: WeakBfield B
44
45 float absEta = fabs(eta);
46
47 if( ( 1.3 <= absEta && absEta < 1.45) &&
48 ( (0 <= fabs(phi) && fabs(phi) < M_PI/48. ) ||
49 (M_PI*11./48. <= fabs(phi) && fabs(phi) < M_PI*13./48. ) ||
50 (M_PI*23./48. <= fabs(phi) && fabs(phi) < M_PI*25./48. ) ||
51 (M_PI*35./48. <= fabs(phi) && fabs(phi) < M_PI*37./48. ) ||
52 (M_PI*47./48. <= fabs(phi) && fabs(phi) < M_PI )
53 )
54 ) return 1;
55
56 else if( ( 1.5 <= absEta && absEta < 1.65 ) &&
57 ( (M_PI*3./32. <= fabs(phi) && fabs(phi) < M_PI*5./32. ) ||
58 (M_PI*11./32. <= fabs(phi) && fabs(phi) < M_PI*13./32.) ||
59 (M_PI*19./32. <= fabs(phi) && fabs(phi) < M_PI*21./32.) ||
60 (M_PI*27./32. <= fabs(phi) && fabs(phi) < M_PI*29./32.)
61 )
62 ) return 2;
63
64 else return 0;
65 }
Scalar phi() const
phi method