#include <RecoMuon/TrackerSeedGenerator/interface/L1MuonPixelTrackFitter.h>
Public Member Functions | |
L1MuonPixelTrackFitter (const edm::ParameterSet &cfg) | |
L1MuonPixelTrackFitter () | |
virtual reco::Track * | run (const edm::EventSetup &es, const std::vector< const TrackingRecHit * > &hits, const TrackingRegion ®ion) const |
void | setL1Constraint (const L1MuGMTCand &muon) |
void | setPxConstraint (const std::vector< ctfseeding::SeedingHit > &hits) |
virtual | ~L1MuonPixelTrackFitter () |
Static Public Member Functions | |
static double | getBending (double invPt, double eta, int charge) |
static double | getBendingError (double invPt, double eta) |
Private Member Functions | |
double | deltaPhi (double phi1, double phi2) const |
double | errCotTheta (double invPt, double eta) const |
double | errInversePt (double invPt, double eta) const |
double | errPhi (double invPt, double eta) const |
double | errTip (double invPt, double eta) const |
double | errZip (double invPt, double eta) const |
double | findPt (double phi0, double phiL1, double eta, int charge) const |
double | valCotTheta (const PixelRecoLineRZ &line) const |
double | valInversePt (double phi0, double phiL1, double eta) const |
double | valPhi (const Circle &c, int charge) const |
double | valTip (const Circle &c, double curvature) const |
double | valZip (double curvature, const GlobalPoint &p0, const GlobalPoint &p1) const |
Static Private Member Functions | |
static void | param (double eta, double &p1, double &p2, double &p3) |
Private Attributes | |
int | theChargeL1 |
edm::ParameterSet | theConfig |
double | theEtaL1 |
GlobalPoint | theHit1 |
GlobalPoint | theHit2 |
double | thePhiL1 |
Friends | |
class | L1Seeding |
Classes | |
class | Circle |
Definition at line 24 of file L1MuonPixelTrackFitter.h.
L1MuonPixelTrackFitter::L1MuonPixelTrackFitter | ( | ) | [inline] |
L1MuonPixelTrackFitter::L1MuonPixelTrackFitter | ( | const edm::ParameterSet & | cfg | ) |
virtual L1MuonPixelTrackFitter::~L1MuonPixelTrackFitter | ( | ) | [inline, virtual] |
double L1MuonPixelTrackFitter::deltaPhi | ( | double | phi1, | |
double | phi2 | |||
) | const [private] |
Definition at line 420 of file L1MuonPixelTrackFitter.cc.
References dPhi().
Referenced by findPt(), and valInversePt().
00421 { 00422 while ( phi1 >= 2*M_PI) phi1 -= 2*M_PI; 00423 while ( phi2 >= 2*M_PI) phi2 -= 2*M_PI; 00424 while ( phi1 < 0) phi1 += 2*M_PI; 00425 while ( phi2 < 0) phi2 += 2*M_PI; 00426 double dPhi = phi2-phi1; 00427 00428 if ( dPhi > M_PI ) dPhi -= 2*M_PI; 00429 if ( dPhi < -M_PI ) dPhi += 2*M_PI; 00430 00431 return dPhi; 00432 }
double L1MuonPixelTrackFitter::errCotTheta | ( | double | invPt, | |
double | eta | |||
) | const [private] |
Definition at line 148 of file L1MuonPixelTrackFitter.cc.
Referenced by run().
00149 { 00150 // 00151 // sigma = p0+p1/|pt|; 00152 // 00153 double p0,p1; 00154 int ieta = int (10*fabs(eta)); 00155 switch (ieta) { 00156 case 0: { p0 = 0.00166115; p1 = 5.75533e-05; break; } 00157 case 1: { p0 = 0.00157525; p1 = 0.000707437; break; } 00158 case 2: { p0 = 0.00122246; p1 = 0.000325456; break; } 00159 case 3: { p0 = 0.000852422; p1 = 0.000429216; break; } 00160 case 4: { p0 = 0.000637561; p1 = 0.00122298; break; } 00161 case 5: { p0 = 0.000555766; p1 = 0.00158096; break; } 00162 case 6: { p0 = 0.000641202; p1 = 0.00143339; break; } 00163 case 7: { p0 = 0.000803207; p1 = 0.000648816; break; } 00164 case 8: { p0 = 0.000741394; p1 = 0.0015289; break; } 00165 case 9: { p0 = 0.000652019; p1 = 0.00168873; break; } 00166 case 10: { p0 = 0.000716902; p1 = 0.00257556; break; } 00167 case 11: { p0 = 0.000800409; p1 = 0.00190563; break; } 00168 case 12: { p0 = 0.000808778; p1 = 0.00264139; break; } 00169 case 13: { p0 = 0.000775757; p1 = 0.00318478; break; } 00170 case 14: { p0 = 0.000705781; p1 = 0.00460576; break; } 00171 case 15: { p0 = 0.000580679; p1 = 0.00748248; break; } 00172 case 16: { p0 = 0.000561667; p1 = 0.00767487; break; } 00173 case 17: { p0 = 0.000521626; p1 = 0.0100178; break; } 00174 case 18: { p0 = 0.00064253; p1 = 0.0106062; break; } 00175 case 19: { p0 = 0.000636868; p1 = 0.0140047; break; } 00176 default: { p0 = 0.000682478; p1 = 0.0163569; break; } 00177 } 00178 return p0+p1*fabs(invPt); 00179 }
double L1MuonPixelTrackFitter::errInversePt | ( | double | invPt, | |
double | eta | |||
) | const [private] |
Definition at line 301 of file L1MuonPixelTrackFitter.cc.
Referenced by run().
00301 { 00302 // 00303 // pt*sigma(1/pt) = p0+p1*pt; 00304 // 00305 double p0,p1; 00306 int ieta = int (10*fabs(eta)); 00307 switch (ieta) { 00308 case 0: { p0 = 0.0196835; p1 = 0.00517533; break; } 00309 case 1: { p0 = 0.0266583; p1 = 0.00478101; break; } 00310 case 2: { p0 = 0.0217164; p1 = 0.00545425; break; } 00311 case 3: { p0 = 0.0197547; p1 = 0.00552263; break; } 00312 case 4: { p0 = 0.0208778; p1 = 0.00536009; break; } 00313 case 5: { p0 = 0.024192; p1 = 0.00521709; break; } 00314 case 6: { p0 = 0.0265315; p1 = 0.0051897; break; } 00315 case 7: { p0 = 0.0198071; p1 = 0.00566822; break; } 00316 case 8: { p0 = 0.0361955; p1 = 0.00486352; break; } 00317 case 9: { p0 = 0.037864; p1 = 0.00509094; break; } 00318 case 10: { p0 = 0.0382968; p1 = 0.00612354; break; } 00319 case 11: { p0 = 0.0308326; p1 = 0.0074234; break; } 00320 case 12: { p0 = 0.0248577; p1 = 0.00883049; break; } 00321 case 13: { p0 = 0.0279965; p1 = 0.00888293; break; } 00322 case 14: { p0 = 0.0372582; p1 = 0.00950252; break; } 00323 case 15: { p0 = 0.0281366; p1 = 0.0111501; break; } 00324 case 16: { p0 = 0.0421483; p1 = 0.0109413; break; } 00325 case 17: { p0 = 0.0461798; p1 = 0.0125824; break; } 00326 case 18: { p0 = 0.0530603; p1 = 0.0132638; break; } 00327 case 19: { p0 = 0.0601148; p1 = 0.0147911; break; } 00328 default: { p0 = 0.0552377; p1 = 0.0155574; break; } 00329 } 00330 return p1+p0*fabs(invPt); 00331 }
double L1MuonPixelTrackFitter::errPhi | ( | double | invPt, | |
double | eta | |||
) | const [private] |
Definition at line 110 of file L1MuonPixelTrackFitter.cc.
Referenced by run().
00110 { 00111 // 00112 // sigma = p0+p1/|pt|; 00113 // 00114 double p0,p1; 00115 int ieta = int (10*fabs(eta)); 00116 switch (ieta) { 00117 case 0: { p0 = 0.000597506; p1 = 0.00221057; break; } 00118 case 1: { p0 = 0.000591867; p1 = 0.00278744; break; } 00119 case 2: { p0 = 0.000635666; p1 = 0.00207433; break; } 00120 case 3: { p0 = 0.000619086; p1 = 0.00255121; break; } 00121 case 4: { p0 = 0.000572067; p1 = 0.00310618; break; } 00122 case 5: { p0 = 0.000596239; p1 = 0.00288442; break; } 00123 case 6: { p0 = 0.000607608; p1 = 0.00282996; break; } 00124 case 7: { p0 = 0.000606446; p1 = 0.00281118; break; } 00125 case 8: { p0 = 0.000594076; p1 = 0.00280546; break; } 00126 case 9: { p0 = 0.000579615; p1 = 0.00335534; break; } 00127 case 10: { p0 = 0.000659546; p1 = 0.00340443; break; } 00128 case 11: { p0 = 0.000659031; p1 = 0.00343151; break; } 00129 case 12: { p0 = 0.000738391; p1 = 0.00337297; break; } 00130 case 13: { p0 = 0.000798966; p1 = 0.00330008; break; } 00131 case 14: { p0 = 0.000702997; p1 = 0.00562643; break; } 00132 case 15: { p0 = 0.000973417; p1 = 0.00312666; break; } 00133 case 16: { p0 = 0.000995213; p1 = 0.00564278; break; } 00134 case 17: { p0 = 0.00121436; p1 = 0.00572704; break; } 00135 case 18: { p0 = 0.00119216; p1 = 0.00760204; break; } 00136 case 19: { p0 = 0.00141204; p1 = 0.0093777; break; } 00137 default: { p0 = 0.00153161; p1 = 0.00940265; break; } 00138 } 00139 return p0+p1*fabs(invPt); 00140 }
double L1MuonPixelTrackFitter::errTip | ( | double | invPt, | |
double | eta | |||
) | const [private] |
Definition at line 190 of file L1MuonPixelTrackFitter.cc.
Referenced by run().
00190 { 00191 // 00192 // sigma = p0+p1/|pt|; 00193 // 00194 double p0,p1; 00195 int ieta = int (10*fabs(eta)); 00196 switch (ieta) { 00197 case 0: { p0 = 0.00392416; p1 = 0.00551809; break; } 00198 case 1: { p0 = 0.00390391; p1 = 0.00543244; break; } 00199 case 2: { p0 = 0.0040651; p1 = 0.00406496; break; } 00200 case 3: { p0 = 0.00387782; p1 = 0.00797637; break; } 00201 case 4: { p0 = 0.00376798; p1 = 0.00866894; break; } 00202 case 5: { p0 = 0.0042131; p1 = 0.00462184; break; } 00203 case 6: { p0 = 0.00392579; p1 = 0.00784685; break; } 00204 case 7: { p0 = 0.00370472; p1 = 0.00790174; break; } 00205 case 8: { p0 = 0.00364433; p1 = 0.00928368; break; } 00206 case 9: { p0 = 0.00387578; p1 = 0.00640431; break; } 00207 case 10: { p0 = 0.00382464; p1 = 0.00960763; break; } 00208 case 11: { p0 = 0.0038907; p1 = 0.0104562; break; } 00209 case 12: { p0 = 0.00392525; p1 = 0.0106442; break; } 00210 case 13: { p0 = 0.00400634; p1 = 0.011218; break; } 00211 case 14: { p0 = 0.0036229; p1 = 0.0156403; break; } 00212 case 15: { p0 = 0.00444317; p1 = 0.00832987; break; } 00213 case 16: { p0 = 0.00465492; p1 = 0.0179908; break; } 00214 case 17: { p0 = 0.0049652; p1 = 0.0216647; break; } 00215 case 18: { p0 = 0.0051395; p1 = 0.0233692; break; } 00216 case 19: { p0 = 0.0062917; p1 = 0.0262175; break; } 00217 default: { p0 = 0.00714444; p1 = 0.0253856; break; } 00218 } 00219 return p0+p1*fabs(invPt); 00220 }
double L1MuonPixelTrackFitter::errZip | ( | double | invPt, | |
double | eta | |||
) | const [private] |
Definition at line 241 of file L1MuonPixelTrackFitter.cc.
Referenced by run().
00241 { 00242 // 00243 // sigma = p0+p1/pt; 00244 // 00245 double p0,p1; 00246 int ieta = int (10*fabs(eta)); 00247 switch (ieta) { 00248 case 0: { p0 = 0.0120743; p1 = 0; break; } 00249 case 1: { p0 = 0.0110343; p1 = 0.0051199; break; } 00250 case 2: { p0 = 0.00846487; p1 = 0.00570084; break; } 00251 case 3: { p0 = 0.00668726; p1 = 0.00331165; break; } 00252 case 4: { p0 = 0.00467126; p1 = 0.00578239; break; } 00253 case 5: { p0 = 0.0043042; p1 = 0.00598517; break; } 00254 case 6: { p0 = 0.00515392; p1 = 0.00495422; break; } 00255 case 7: { p0 = 0.0060843; p1 = 0.00320512; break; } 00256 case 8: { p0 = 0.00564942; p1 = 0.00478876; break; } 00257 case 9: { p0 = 0.00532111; p1 = 0.0073239; break; } 00258 case 10: { p0 = 0.00579429; p1 = 0.00952782; break; } 00259 case 11: { p0 = 0.00614229; p1 = 0.00977795; break; } 00260 case 12: { p0 = 0.00714661; p1 = 0.00550482; break; } 00261 case 13: { p0 = 0.0066593; p1 = 0.00999362; break; } 00262 case 14: { p0 = 0.00634922; p1 = 0.0148156; break; } 00263 case 15: { p0 = 0.00600586; p1 = 0.0318022; break; } 00264 case 16: { p0 = 0.00676919; p1 = 0.027456; break; } 00265 case 17: { p0 = 0.00670066; p1 = 0.0317005; break; } 00266 case 18: { p0 = 0.00752392; p1 = 0.0347714; break; } 00267 case 19: { p0 = 0.00791425; p1 = 0.0566665; break; } 00268 default: { p0 = 0.00882372; p1 = 0.0596858; break; } 00269 } 00270 return p0+p1*fabs(invPt); 00271 }
double L1MuonPixelTrackFitter::findPt | ( | double | phi0, | |
double | phiL1, | |||
double | eta, | |||
int | charge | |||
) | const [private] |
Definition at line 333 of file L1MuonPixelTrackFitter.cc.
References deltaPhi(), and getBending().
00333 { 00334 00335 double dphi_min = fabs(deltaPhi(phi0,phiL1)); 00336 double pt_best = 1.; 00337 double pt_cur = 1; 00338 while ( pt_cur < 10000.) { 00339 double phi_exp = phi0+getBending(1./pt_cur, eta, charge); 00340 double dphi = fabs(deltaPhi(phi_exp,phiL1)); 00341 if ( dphi < dphi_min) { 00342 pt_best = pt_cur; 00343 dphi_min = dphi; 00344 } 00345 if (pt_cur < 10.) pt_cur += 0.01; 00346 else if (pt_cur < 20.) pt_cur+= 0.025; 00347 else if( pt_cur < 100.) pt_cur+= 0.1; 00348 else pt_cur +=1; 00349 }; 00350 return pt_best; 00351 }
double L1MuonPixelTrackFitter::getBending | ( | double | invPt, | |
double | eta, | |||
int | charge | |||
) | [static] |
Definition at line 354 of file L1MuonPixelTrackFitter.cc.
References p1, p2, p3, and param().
Referenced by findPt(), and L1MuonRegionProducer::regions().
00355 { 00356 double p1, p2, p3; 00357 param(eta,p1,p2,p3); 00358 return charge*p1*invPt + charge*p2*invPt*invPt + charge*p3*invPt*invPt*invPt; 00359 }
double L1MuonPixelTrackFitter::getBendingError | ( | double | invPt, | |
double | eta | |||
) | [static] |
Definition at line 361 of file L1MuonPixelTrackFitter.cc.
References int, p1, and sqr().
Referenced by L1MuonRegionProducer::regions().
00362 { 00363 int ieta = int (10*fabs(eta)); 00364 double p0,p1; 00365 switch (ieta) { 00366 case 0: { p0 = 0.0196835; p1 = 0.00517533; break; } 00367 case 1: { p0 = 0.0266583; p1 = 0.00478101; break; } 00368 case 2: { p0 = 0.0217164; p1 = 0.00545425; break; } 00369 case 3: { p0 = 0.0197547; p1 = 0.00552263; break; } 00370 case 4: { p0 = 0.0208778; p1 = 0.00536009; break; } 00371 case 5: { p0 = 0.024192; p1 = 0.00521709; break; } 00372 case 6: { p0 = 0.0265315; p1 = 0.0051897; break; } 00373 case 7: { p0 = 0.0198071; p1 = 0.00566822; break; } 00374 case 8: { p0 = 0.0361955; p1 = 0.00486352; break; } 00375 case 9: { p0 = 0.037864; p1 = 0.00509094; break; } 00376 case 10: { p0 = 0.0382968; p1 = 0.00612354; break; } 00377 case 11: { p0 = 0.0308326; p1 = 0.0074234; break; } 00378 case 12: { p0 = 0.0248577; p1 = 0.00883049; break; } 00379 case 13: { p0 = 0.0279965; p1 = 0.00888293; break; } 00380 case 14: { p0 = 0.0372582; p1 = 0.00950252; break; } 00381 case 15: { p0 = 0.0281366; p1 = 0.0111501; break; } 00382 case 16: { p0 = 0.0421483; p1 = 0.0109413; break; } 00383 case 17: { p0 = 0.0461798; p1 = 0.0125824; break; } 00384 case 18: { p0 = 0.0530603; p1 = 0.0132638; break; } 00385 case 19: { p0 = 0.0601148; p1 = 0.0147911; break; } 00386 default: { p0 = 0.0552377; p1 = 0.0155574; break; } 00387 } 00388 return p0+p1*sqr(invPt); 00389 }
void L1MuonPixelTrackFitter::param | ( | double | eta, | |
double & | p1, | |||
double & | p2, | |||
double & | p3 | |||
) | [static, private] |
Definition at line 392 of file L1MuonPixelTrackFitter.cc.
References int.
Referenced by getBending(), and valInversePt().
00393 { 00394 int ieta = int (10*fabs(eta)); 00395 switch (ieta) { 00396 case 0: { p1 = -2.68016; p2 = 0; p3 = -12.9653; break; } 00397 case 1: { p1 = -2.67864; p2 = 0; p3 = -12.0036; break; } 00398 case 2: { p1 = -2.72997; p2 = 0; p3 = -10.3468; break; } 00399 case 3: { p1 = -2.68836; p2 = 0; p3 = -12.3369; break; } 00400 case 4: { p1 = -2.66885; p2 = 0; p3 = -11.589; break; } 00401 case 5: { p1 = -2.64932; p2 = 0; p3 = -12.7176; break; } 00402 case 6: { p1 = -2.64513; p2 = 0; p3 = -11.3912; break; } 00403 case 7: { p1 = -2.64487; p2 = 0; p3 = -9.83239; break; } 00404 case 8: { p1 = -2.58875; p2 = 0; p3 = -10.0541; break; } 00405 case 9: { p1 = -2.5551; p2 = 0; p3 = -9.75757; break; } 00406 case 10: { p1 = -2.55294; p2 = 0; p3 = -7.25238; break; } 00407 case 11: { p1 = -2.45333; p2 = 0; p3 = -7.966; break; } 00408 case 12: { p1 = -2.29283; p2 = 0; p3 = -7.03231; break; } 00409 case 13: { p1 = -2.13167; p2 = 0; p3 = -4.29182; break; } 00410 case 14: { p1 = -1.9102; p2 = 0; p3 = -3.21295; break; } 00411 case 15: { p1 = -1.74552; p2 = 0; p3 = -0.531827; break; } 00412 case 16: { p1 = -1.53642; p2 = 0; p3 = -1.74057; break; } 00413 case 17: { p1 = -1.39446; p2 = 0; p3 = -1.56819; break; } 00414 case 18: { p1 = -1.26176; p2 = 0; p3 = -0.598631; break; } 00415 case 19: { p1 = -1.14133; p2 = 0; p3 = -0.0941055; break; } 00416 default: { p1 = -1.02086; p2 = 0; p3 = -0.100491; break; } 00417 } 00418 }
reco::Track * L1MuonPixelTrackFitter::run | ( | const edm::EventSetup & | es, | |
const std::vector< const TrackingRecHit * > & | hits, | |||
const TrackingRegion & | region | |||
) | const [virtual] |
Implements PixelFitter.
Definition at line 37 of file L1MuonPixelTrackFitter.cc.
References PixelRecoUtilities::curvature(), errCotTheta(), errInversePt(), errPhi(), errTip(), errZip(), eta, edm::EventSetup::get(), edm::ParameterSet::getParameter(), phi, edm::ESHandle< T >::product(), theConfig, theEtaL1, theHit1, theHit2, thePhiL1, tip, valCotTheta(), valInversePt(), valPhi(), valTip(), and valZip().
Referenced by TSGFromL1Muon::produce().
00039 { 00040 edm::ESHandle<MagneticField> fieldESH; 00041 es.get<IdealMagneticFieldRecord>().get(fieldESH); 00042 00043 double phi_vtx_fromHits = (theHit2-theHit1).phi(); 00044 00045 double invPt = valInversePt(phi_vtx_fromHits, thePhiL1, theEtaL1); 00046 double invPtErr = errInversePt(invPt, theEtaL1); 00047 00048 int charge = (invPt > 0.) ? 1 : -1; 00049 double curvature = PixelRecoUtilities::curvature(invPt, es); 00050 00051 Circle circle(theHit1, theHit2, curvature); 00052 00053 double valPhi = this->valPhi(circle, charge); 00054 double valTip = this->valTip(circle, curvature); 00055 double valZip = this->valZip(curvature, theHit1,theHit2); 00056 double valCotTheta = this->valCotTheta(PixelRecoLineRZ(theHit1,theHit2)); 00057 00058 static double invPtErrorScale = theConfig.getParameter<double>("invPtErrorScale"); 00059 static double phiErrorScale= theConfig.getParameter<double>("phiErrorScale"); 00060 static double cotThetaErrorScale = theConfig.getParameter<double>("cotThetaErrorScale"); 00061 static double tipErrorScale = theConfig.getParameter<double>("tipErrorScale"); 00062 static double zipErrorScale = theConfig.getParameter<double>("zipErrorScale"); 00063 00064 // if ( (fabs(invPt)-0.1)/invPtErr > 3.) return 0; 00065 00066 PixelTrackBuilder builder; 00067 double valPt = (fabs(invPt) > 1.e-4) ? 1./fabs(invPt) : 1.e4; 00068 double errPt = invPtErrorScale*invPtErr * valPt*valPt; 00069 double eta = asinh(valCotTheta); 00070 double errPhi = this->errPhi(invPt, eta) * phiErrorScale; 00071 double errCotTheta = this->errCotTheta(invPt, eta) * cotThetaErrorScale; 00072 double errTip = this->errTip(invPt, eta) * tipErrorScale; 00073 double errZip = this->errZip(invPt, eta) * zipErrorScale; 00074 00075 Measurement1D pt(valPt, errPt); 00076 Measurement1D phi(valPhi, errPhi); 00077 Measurement1D cotTheta(valCotTheta, errCotTheta); 00078 Measurement1D tip(valTip, errTip); 00079 Measurement1D zip(valZip, errZip); 00080 00081 float chi2 = 0.; 00082 00083 /* 00084 std::ostringstream str; 00085 str <<"\t ipt: " << invPt <<"+/-"<<invPtErr 00086 <<"\t pt: " << pt.value() <<"+/-"<<pt.error() 00087 <<"\t phi: " << phi.value() <<"+/-"<<phi.error() 00088 <<"\t cot: " << cotTheta.value() <<"+/-"<<cotTheta.error() 00089 <<"\t tip: " << tip.value() <<"+/-"<<tip.error() 00090 <<"\t zip: " << zip.value() <<"+/-"<<zip.error() 00091 <<"\t charge: " << charge; 00092 std::cout <<str.str()<< std::endl; 00093 */ 00094 00095 00096 return builder.build(pt, phi, cotTheta, tip, zip, chi2, charge, hits, fieldESH.product()); 00097 }
void L1MuonPixelTrackFitter::setL1Constraint | ( | const L1MuGMTCand & | muon | ) |
Definition at line 20 of file L1MuonPixelTrackFitter.cc.
References L1MuGMTCand::charge(), L1MuGMTCand::etaValue(), L1MuGMTCand::phiValue(), theChargeL1, theEtaL1, and thePhiL1.
Referenced by TSGFromL1Muon::produce().
00021 { 00022 thePhiL1 = muon.phiValue()+0.021817; 00023 theEtaL1 = muon.etaValue(); 00024 theChargeL1 = muon.charge(); 00025 }
void L1MuonPixelTrackFitter::setPxConstraint | ( | const std::vector< ctfseeding::SeedingHit > & | hits | ) |
Definition at line 27 of file L1MuonPixelTrackFitter.cc.
References funct::cos(), r1, r2, funct::sin(), theHit1, theHit2, and z.
Referenced by TSGFromL1Muon::produce().
00028 { 00029 float r1 = hits[0].r(); 00030 float r2 = hits[1].r(); 00031 float phi1 = hits[0].phi(); 00032 float phi2 = hits[1].phi(); 00033 theHit1 = GlobalPoint(r1*cos(phi1), r1*sin(phi1), hits[0].z()); 00034 theHit2 = GlobalPoint(r2*cos(phi2), r2*sin(phi2), hits[1].z()); 00035 }
double L1MuonPixelTrackFitter::valCotTheta | ( | const PixelRecoLineRZ & | line | ) | const [private] |
Definition at line 143 of file L1MuonPixelTrackFitter.cc.
References PixelRecoLineRZ::cotLine().
Referenced by run().
00144 { 00145 return line.cotLine(); 00146 }
double L1MuonPixelTrackFitter::valInversePt | ( | double | phi0, | |
double | phiL1, | |||
double | eta | |||
) | const [private] |
Definition at line 274 of file L1MuonPixelTrackFitter.cc.
References funct::D, deltaPhi(), p, p1, p2, p3, param(), funct::pow(), HLT_VtxMuL3::result, funct::sqrt(), and v.
Referenced by run().
00275 { 00276 double result = 0.; 00277 00278 // solve equtaion p3*result^3 + p1*result + dphi = 0; 00279 // where: result = 1/pt 00280 // dphi = phiL1 - phi0 00281 // Cardan way is used 00282 00283 double p1,p2,p3; //parameters p1,p3 are negative by parameter fix in fit! 00284 param(eta, p1, p2, p3); 00285 00286 double dphi = deltaPhi(phiL1,phi0); // phi0-phiL1 00287 if ( fabs(dphi) < 0.01) { 00288 result = -dphi/p1; 00289 } else { 00290 double q = dphi/2./p3; 00291 double p = p1/3./p3; // positive 00292 double D = q*q + p*p*p; // positive 00293 double u = pow(-q+sqrt(D), 1./3.); 00294 double v = -pow(q+sqrt(D), 1./3.); 00295 result = u+v; 00296 } 00297 return result; 00298 }
Definition at line 100 of file L1MuonPixelTrackFitter.cc.
References L1MuonPixelTrackFitter::Circle::center(), Vector3DBase< T, FrameTag >::cross(), dir, PV3DBase< T, PVType, FrameType >::perp(), PV3DBase< T, PVType, FrameType >::phi(), and radius().
Referenced by run().
00101 { 00102 Circle::Point zero(0.,0.,0.); 00103 Circle::Vector center = circle.center()-zero; 00104 long double radius = center.perp(); 00105 center /= radius; 00106 Circle::Vector dir = center.cross(-charge*Circle::Vector(0.,0.,1.)); 00107 return dir.phi(); 00108 }
double L1MuonPixelTrackFitter::valTip | ( | const Circle & | c, | |
double | curvature | |||
) | const [private] |
Definition at line 182 of file L1MuonPixelTrackFitter.cc.
References L1MuonPixelTrackFitter::Circle::center(), PV3DBase< T, PVType, FrameType >::perp(), and radius().
Referenced by run().
00183 { 00184 Circle::Point zero(0.,0.,0.); 00185 Circle::Vector center = circle.center()-zero; 00186 long double radius = center.perp(); 00187 return radius-1./fabs(curvature); 00188 }
double L1MuonPixelTrackFitter::valZip | ( | double | curvature, | |
const GlobalPoint & | p0, | |||
const GlobalPoint & | p1 | |||
) | const [private] |
Definition at line 223 of file L1MuonPixelTrackFitter.cc.
References PV3DBase< T, PVType, FrameType >::perp(), PV3DBase< T, PVType, FrameType >::perp2(), r1, r2, and PV3DBase< T, PVType, FrameType >::z().
Referenced by run().
00225 { 00226 // 00227 // phi = asin(r*rho/2) with asin(x) ~= x+x**3/(2*3) 00228 // 00229 double rho3 = curv*curv*curv; 00230 double r1 = pinner.perp(); 00231 double phi1 = r1*curv/2 + pinner.perp2()*r1*rho3/48.; 00232 double r2 = pouter.perp(); 00233 double phi2 = r2*curv/2 + pouter.perp2()*r2*rho3/48.; 00234 double z1 = pinner.z(); 00235 double z2 = pouter.z(); 00236 00237 return z1 - phi1/(phi1-phi2)*(z1-z2); 00238 }
friend class L1Seeding [friend] |
Definition at line 96 of file L1MuonPixelTrackFitter.h.
int L1MuonPixelTrackFitter::theChargeL1 [private] |
double L1MuonPixelTrackFitter::theEtaL1 [private] |
GlobalPoint L1MuonPixelTrackFitter::theHit1 [private] |
GlobalPoint L1MuonPixelTrackFitter::theHit2 [private] |
double L1MuonPixelTrackFitter::thePhiL1 [private] |