3 |
|
// |
4 |
|
// Track |
5 |
|
// |
6 |
< |
// This will be re-written :-) |
6 |
> |
// This will/must be re-written :-) |
7 |
|
// |
8 |
|
// Authors: C.Loizides, J.Bendavid, C.Paus |
9 |
|
//-------------------------------------------------------------------------------------------------- |
12 |
|
#define DATATREE_TRACK_H |
13 |
|
|
14 |
|
#include "MitAna/DataTree/interface/DataObject.h" |
15 |
+ |
#include "MitAna/DataTree/interface/SimParticle.h" |
16 |
+ |
#include "MitAna/DataTree/interface/Types.h" |
17 |
|
|
18 |
|
namespace mithep |
19 |
|
{ |
25 |
|
fPhi(phi), fD0(d0), fPt(pt), fDz(dz), fTheta(theta) {} |
26 |
|
~Track() {} |
27 |
|
|
28 |
< |
void SetHelix (Double_t phi, Double_t d0, Double_t pt, Double_t dz, Double_t theta); |
29 |
< |
void SetErrors(Double_t phiErr, Double_t d0Err, Double_t ptErr, Double_t dzErr, |
30 |
< |
Double_t thetaErr); |
28 |
> |
Int_t Charge() const { return fCharge; } |
29 |
> |
Double_t D0() const { return fD0; } |
30 |
> |
Double_t D0Err() const { return fD0Err; } |
31 |
> |
Double_t Dz() const { return fDz; } |
32 |
> |
Double_t DzErr() const { return fDzErr; } |
33 |
> |
ThreeVector Mom() const { return ThreeVector(Px(),Py(),Pz()); } |
34 |
> |
Double_t P2() const { return Px()*Px()+Py()*Py()+Pz()*Pz(); } |
35 |
> |
Double_t P() const { return sqrt(P2()); } |
36 |
> |
Double_t Px() const { return cos(fPhi)*fabs(fPt); } |
37 |
> |
Double_t Py() const { return sin(fPhi)*fabs(fPt); } |
38 |
> |
Double_t Pz() const { return fabs(fPt)/tan(fTheta); } |
39 |
> |
Double_t Phi() const { return fPhi; } |
40 |
> |
Double_t PhiErr() const { return fPhiErr; } |
41 |
> |
Double_t Pt() const { return fPt; } |
42 |
> |
Double_t PtErr() const { return fPtErr; } |
43 |
> |
Double_t Theta() const { return fTheta; } |
44 |
> |
Double_t ThetaErr() const { return fThetaErr; } |
45 |
|
|
46 |
< |
Double_t Phi() const { return fPhi; } |
47 |
< |
Double_t D0() const { return fD0; } |
48 |
< |
Double_t Pt() const { return fPt; } |
49 |
< |
Double_t Dz() const { return fDz; } |
50 |
< |
Double_t Theta() const { return fTheta; } |
51 |
< |
|
52 |
< |
Double_t PhiErr() const { return fPhiErr; } |
53 |
< |
Double_t D0Err() const { return fD0Err; } |
38 |
< |
Double_t PtErr() const { return fPtErr; } |
39 |
< |
Double_t DzErr() const { return fDzErr; } |
40 |
< |
Double_t ThetaErr() const { return fThetaErr; } |
41 |
< |
|
42 |
< |
Int_t Charge() const { return fCharge; } |
46 |
> |
FourVector Mom4(double m) const { return FourVector(Px(),Py(),Pz(),E(m)); } |
47 |
> |
Double_t E2(double m) const { return P2()+m*m; } |
48 |
> |
Double_t E(double m) const { return sqrt(E2(m)); } |
49 |
> |
|
50 |
> |
void SetCharge(Int_t charge) { fCharge = charge; } |
51 |
> |
void SetHelix (Double_t phi, Double_t d0, Double_t pt, Double_t dz, Double_t theta); |
52 |
> |
void SetErrors(Double_t phiErr, Double_t d0Err, Double_t ptErr, |
53 |
> |
Double_t dzErr, Double_t thetaErr); |
54 |
|
|
55 |
< |
void SetCharge(Int_t charge) { fCharge = charge; } |
55 |
> |
SimParticle* GetSimParticle() const { return (SimParticle*)fSimParticleRef.GetObject(); } |
56 |
> |
void SetSimParticle(SimParticle* p) { fSimParticleRef = p; } |
57 |
|
|
58 |
|
protected: |
59 |
< |
Double_t fPhi; // azimuthal angle |
60 |
< |
Double_t fD0; // raw impact parameter |
61 |
< |
Double_t fPt; // transverse momentum |
62 |
< |
Double_t fDz; // z-displacement |
63 |
< |
Double_t fTheta; // polar angle |
64 |
< |
Double_t fPhiErr; // uncertainy on phi |
65 |
< |
Double_t fD0Err; // uncertainty on D0 |
66 |
< |
Double_t fPtErr; // uncertainty on pt |
67 |
< |
Double_t fDzErr; // uncertainty on dz |
68 |
< |
Double_t fThetaErr; // uncertainty on theta |
69 |
< |
Int_t fCharge; // electric charge of reconstructed track |
59 |
> |
Double_t fPhi; // azimuthal angle |
60 |
> |
Double_t fD0; // raw impact parameter |
61 |
> |
Double_t fPt; // transverse momentum |
62 |
> |
Double_t fDz; // z-displacement |
63 |
> |
Double_t fTheta; // polar angle |
64 |
> |
Double_t fPhiErr; // uncertainy on phi |
65 |
> |
Double_t fD0Err; // uncertainty on D0 |
66 |
> |
Double_t fPtErr; // uncertainty on pt |
67 |
> |
Double_t fDzErr; // uncertainty on dz |
68 |
> |
Double_t fThetaErr; // uncertainty on theta |
69 |
> |
Int_t fCharge; // electric charge of reconstructed track |
70 |
> |
TRef fSimParticleRef; //reference to sim particle (for monte carlo) |
71 |
|
|
72 |
< |
ClassDef(Track, 1) // Track class |
72 |
> |
ClassDef(Track, 1) // Track class |
73 |
|
}; |
74 |
|
} |
75 |
|
|