ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitEdm/VertexFitInterface/interface/TrackParameters.h
Revision: 1.2
Committed: Fri Aug 29 00:27:22 2008 UTC (16 years, 8 months ago) by loizides
Content type: text/plain
Branch: MAIN
Changes since 1.1: +5 -4 lines
Log Message:
A bit of cleanup.

File Contents

# User Rev Content
1 loizides 1.2 //--------------------------------------------------------------------------------------------------
2     // $Id:$
3 paus 1.1 //
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 loizides 1.2 //
31     // Author: C.Paus
32     //--------------------------------------------------------------------------------------------------
33 paus 1.1
34     #ifndef _VERTEXFITINTERFACE_TRACKPARAMETERS_H_
35     #define _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     // Define existing track parameter conventions
44     enum TrackConvention { iCms, iMvf };
45    
46     // Declare the track parameter class
47     class TrackParameters
48     {
49     public:
50     TrackParameters() {}
51     TrackParameters(const reco::Track *trk, TrackConvention tcv = iCms, double bField = 3.8);
52     TrackParameters(const TrackParameters &trk);
53     ~TrackParameters() {};
54    
55     // Access the specific contents
56     const TVectorD *pars () const { return &pars_; };
57     double pars (int i) const { return pars_[i]; };
58     const TMatrixDSym *cMat () const { return &cMat_; };
59     double cMat (int i, int j) const { return cMat_(i,j); };
60    
61     // Access the different parametrizations independently of the local storage
62     TrackParameters cmsTrack() const;
63     TrackParameters mvfTrack() const;
64    
65     void setPars (int i, double v) { pars_(i) = v; }
66     void setCMat (int i, int j, double v) { cMat_(i,j) = v; }
67     void addCMat (int i, int j, double v) { cMat_(i,j) += v; }
68    
69     // Utilities
70     void print () const;
71    
72     private:
73     TrackConvention iConvention_; // track parameter convention (def. CMS)
74     double bField_; // magnetic field in Tesla
75     double fCurv_; // combined curvature constant
76     TVectorD pars_; // track paramters (helix)
77     TMatrixDSym cMat_; // corresponding covariance matrix (sig_i * sig_j)
78     };
79     }
80     #endif