1 |
//--------------------------------------------------------------------------------------------------
|
2 |
// $Id: TrackParameters.h,v 1.4 2008/09/27 05:48:26 loizides Exp $
|
3 |
//
|
4 |
// Description: class TrackParameters
|
5 |
//
|
6 |
// Class to manage track parameters of different conventions and convert one into the other. This is
|
7 |
// not really done very well and could be done more efficient but this is what it is for the moment.
|
8 |
//
|
9 |
// Original Author: Christoph Paus
|
10 |
// Created: Thu Aug 21 02:29:00 CEST 2008
|
11 |
//
|
12 |
// -------------------------------------------------------------------------------------------------
|
13 |
// CMS parameter ordering for the vector/matrix, which is assumed here:
|
14 |
//
|
15 |
// qoverp, lambda, phi0, dxy, dsz; (lambda = pi/2 - theta)
|
16 |
// mapping to CDF is therefore { 1*, 0*, 4, 3, 2* }, where * indicates that a transformation is
|
17 |
// needed
|
18 |
//
|
19 |
// Note that the radius of curvature (in cm) is then:
|
20 |
//
|
21 |
// Rc = cos(theta) / [ 0.0029979.... * (q/p) * B ],
|
22 |
//
|
23 |
// where B is the magnetic field in Tesla and tht is the angle between the field and the
|
24 |
// direction. With p * cos(theta) = pT it follows:
|
25 |
//
|
26 |
// Rc = pT / [ 0.0029979.... * q * B ],
|
27 |
// fullCurvature = 1 / Rc = 0.0029979 * q * B / pT = - 0.0029979 * B / pT.
|
28 |
//
|
29 |
// see the conventions for the MultiVertexFitter in its own header file.
|
30 |
//
|
31 |
// Author: C.Paus
|
32 |
//--------------------------------------------------------------------------------------------------
|
33 |
|
34 |
#ifndef MITEDM_VERTEXFITINTERFACE_TRACKPARAMETERS_H
|
35 |
#define MITEDM_VERTEXFITINTERFACE_TRACKPARAMETERS_H
|
36 |
|
37 |
#include <TMatrixDSym.h>
|
38 |
#include <TVectorD.h>
|
39 |
#include "DataFormats/TrackReco/interface/Track.h"
|
40 |
|
41 |
namespace mitedm
|
42 |
{
|
43 |
enum TrackConvention { // Define existing track parameter conventions
|
44 |
iCms,
|
45 |
iMvf
|
46 |
};
|
47 |
|
48 |
// Declare the track parameter class
|
49 |
class TrackParameters
|
50 |
{
|
51 |
public:
|
52 |
TrackParameters() {}
|
53 |
TrackParameters(const reco::Track *trk, TrackConvention tcv = iCms, double bField = 3.8);
|
54 |
TrackParameters(const TrackParameters &trk);
|
55 |
~TrackParameters() {};
|
56 |
|
57 |
// Access the specific contents
|
58 |
const TVectorD *pars() const { return &pars_; };
|
59 |
double pars(int i) const { return pars_[i]; };
|
60 |
const TMatrixDSym *cMat() const { return &cMat_; };
|
61 |
double cMat(int i, int j) const { return cMat_(i,j); };
|
62 |
|
63 |
// Access the different parametrizations independently of the local storage
|
64 |
TrackParameters cmsTrack() const;
|
65 |
TrackParameters mvfTrack() const;
|
66 |
|
67 |
void setPars(int i, double v) { pars_(i) = v; }
|
68 |
void setCMat(int i, int j, double v) { cMat_(i,j) = v; }
|
69 |
void addCMat(int i, int j, double v) { cMat_(i,j) += v; }
|
70 |
|
71 |
// Utilities
|
72 |
void print() const;
|
73 |
|
74 |
private:
|
75 |
TrackConvention iConvention_; //track parameter convention (def. CMS)
|
76 |
double bField_; //magnetic field in Tesla
|
77 |
double fCurv_; //combined curvature constant
|
78 |
TVectorD pars_; //track paramters (helix)
|
79 |
TMatrixDSym cMat_; //corresponding covariance matrix (sig_i * sig_j)
|
80 |
};
|
81 |
}
|
82 |
#endif
|