Revision: | 1.6 |
Committed: | Mon Jan 18 14:41:34 2010 UTC (15 years, 3 months ago) by bendavid |
Content type: | text/plain |
Branch: | MAIN |
CVS Tags: | Mit_032, Mit_031, Mit_025c_branch2, Mit_025c_branch1, Mit_030, Mit_029c, Mit_029b, Mit_030_pre1, Mit_029a, Mit_029, Mit_029_pre1, Mit_028a, Mit_025c_branch0, Mit_028, Mit_027a, Mit_027, Mit_026, Mit_025e, Mit_025d, Mit_025c, Mit_025b, Mit_025a, Mit_025, Mit_025pre2, Mit_024b, Mit_025pre1, Mit_024a, Mit_024, Mit_023, Mit_022a, Mit_022, Mit_020d, TMit_020d, Mit_020c, Mit_021, Mit_021pre2, Mit_021pre1, Mit_020b, Mit_020a, Mit_020, Mit_020pre1, Mit_018, Mit_017, Mit_017pre3, Mit_017pre2, Mit_017pre1, V07-05-00, Mit_016, Mit_015b, Mit_015a, Mit_015, Mit_014e, Mit_014d, Mit_014c, Mit_014b, ConvRejection-10-06-09, Mit_014a, Mit_014, Mit_014pre3, Mit_014pre2, Mit_014pre1, Mit_013d, Mit_013c, Mit_013b, Mit_013a, Mit_013, Mit_013pre1, Mit_012i, HEAD |
Branch point for: | Mit_025c_branch |
Changes since 1.5: | +3 -1 lines |
Log Message: | Fix Track Paramater phi-related bugs and add consistent propagation to origin |
# | Content |
---|---|
1 | //-------------------------------------------------------------------------------------------------- |
2 | // $Id: TrackParameters.h,v 1.5 2009/03/20 17:13:34 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 | #include "TrackingTools/TransientTrack/interface/TransientTrack.h" |
41 | |
42 | namespace mitedm |
43 | { |
44 | enum TrackConvention { // Define existing track parameter conventions |
45 | iCms, |
46 | iMvf |
47 | }; |
48 | |
49 | // Declare the track parameter class |
50 | class TrackParameters |
51 | { |
52 | public: |
53 | TrackParameters() {} |
54 | TrackParameters(const reco::TransientTrack &ttrk, TrackConvention tcv = iCms); |
55 | TrackParameters(const reco::Track *trk, TrackConvention tcv = iCms, double bField = 3.8); |
56 | TrackParameters(const TrackParameters &trk); |
57 | ~TrackParameters() {}; |
58 | |
59 | // Access the specific contents |
60 | const TVectorD *pars() const { return &pars_; }; |
61 | double pars(int i) const { return pars_[i]; }; |
62 | const TMatrixDSym *cMat() const { return &cMat_; }; |
63 | double cMat(int i, int j) const { return cMat_(i,j); }; |
64 | |
65 | // Access the different parametrizations independently of the local storage |
66 | TrackParameters cmsTrack() const; |
67 | TrackParameters mvfTrack() const; |
68 | |
69 | void setPars(int i, double v) { pars_(i) = v; } |
70 | void setCMat(int i, int j, double v) { cMat_(i,j) = v; } |
71 | void addCMat(int i, int j, double v) { cMat_(i,j) += v; } |
72 | |
73 | // Utilities |
74 | void print() const; |
75 | |
76 | private: |
77 | TrackConvention iConvention_; //track parameter convention (def. CMS) |
78 | double bField_; //magnetic field in Tesla |
79 | double fCurv_; //combined curvature constant |
80 | TVectorD pars_; //track paramters (helix) |
81 | TMatrixDSym cMat_; //corresponding covariance matrix (sig_i * sig_j) |
82 | }; |
83 | } |
84 | #endif |