activating individual HLT simulations from digits and raw data
[u/mrichter/AliRoot.git] / HLT / rec / AliHLTOnlineESDtrack.h
1 //-*- Mode: C++ -*-
2 // $Id$
3
4 #ifndef ALIHLTONLINEESDTRACK_H
5 #define ALIHLTONLINEESDTRACK_H
6 //* This file is property of and copyright by the ALICE HLT Project        * 
7 //* ALICE Experiment at CERN, All rights reserved.                         *
8 //* See cxx source for full Copyright notice                               *
9
10 /// @file   AliHLTOnlineESDtrack.h
11 /// @author Matthias Richter
12 /// @date   2010-10-29
13 /// @brief  A streamlined container class for AliESDtrack.
14 /// @note   
15
16 #include "AliExternalTrackParam.h"
17 #include "AliESDtrack.h"
18
19 /**
20  * @class AliHLTOnlineESDtrack
21  * @brief Container for AliESDtrack information relevant for HLT.
22  *
23  * The class implements a reduced set of member variables of AliESDtrack
24  * and corresponding transformation functions and operators.
25  * It is used by the custom streamer of AliHLTESDEvent.
26  */
27 class AliHLTOnlineESDtrack : public AliExternalTrackParam {
28  public:
29   /// standard constructor
30   AliHLTOnlineESDtrack();
31   /// copy constructor
32   AliHLTOnlineESDtrack(const AliHLTOnlineESDtrack& t);
33   /// destructor
34   virtual ~AliHLTOnlineESDtrack();
35
36   AliHLTOnlineESDtrack& operator=(const AliHLTOnlineESDtrack& t);
37   AliHLTOnlineESDtrack& operator=(const AliESDtrack& t);
38
39   /// overloaded from TObject, print info
40   virtual void        Print(const char* options) const;
41
42   /// overloaded from TObject, more crude data dump
43   virtual void        Dump() const;
44
45   /// overloaded from TObject, clear object
46   virtual void        Clear(Option_t * option="");
47
48   /// overloaded from TObject, clone object
49   virtual TObject    *Clone(const char *newname="") const;
50
51   /// overloaded from TObject, copy object
52   virtual void        Copy(TObject &object) const;
53
54   static void CopyInternalParam(AliExternalTrackParam* &internalParam, const AliExternalTrackParam* pSrc);
55
56   ///////////////////////////////////////////////////////////////////////////
57   // access methods as in AliESDtrack
58   //
59   const AliExternalTrackParam * GetConstrainedParam() const {return fCp;}
60   const AliExternalTrackParam * GetInnerParam() const { return fIp;}
61   const AliExternalTrackParam * GetTPCInnerParam() const {return fTPCInner;}
62   const AliExternalTrackParam * GetOuterParam() const { return fOp;}
63
64   ULong_t   GetStatus() const {return fFlags;}
65   Int_t     GetID() const { return fID;}
66   Int_t     GetLabel() const {return fLabel;}
67   Int_t     GetTPCLabel() const {return fTPCLabel;}
68   Int_t     GetITSLabel() const {return fITSLabel;}
69   Int_t     GetTRDLabel() const {return fTRDLabel;}
70   Float_t   GetIntegratedLength() const {return fTrackLength;}
71   void      GetImpactParametersTPC(Float_t p[2], Float_t cov[3]) const {
72     p[0]=fdTPC; p[1]=fzTPC; cov[0]=fCddTPC; cov[1]=fCdzTPC; cov[2]=fCzzTPC;
73   }
74   Float_t   GetConstrainedChi2TPC() const {return fCchi2TPC;}
75   void      GetImpactParameters(Float_t p[2], Float_t cov[3]) const {
76     p[0]=fD; p[1]=fZ; cov[0]=fCdd; cov[1]=fCdz; cov[2]=fCzz;
77   }
78   Float_t   GetConstrainedChi2() const {return fCchi2;}
79
80   Float_t   GetITSchi2() const {return fITSchi2;}
81   Float_t   GetTPCchi2() const {return fTPCchi2;}
82   Float_t   GetTPCchi2Iter1() const {return fTPCchi2Iter1;}
83   UShort_t  GetTPCNcls() const { return fTPCncls;}
84   UShort_t  GetTPCNclsF() const { return fTPCnclsF;}
85   UShort_t  GetTPCNclsIter1() const { return fTPCnclsIter1;}
86   UShort_t  GetTPCNclsFIter1() const { return fTPCnclsFIter1;}
87   UShort_t  GetITSNcls() const { return fITSncls;}
88   UChar_t   GetTRDncls() const {return fTRDncls;}
89   UChar_t   GetTRDncls0() const {return fTRDncls0;}
90
91 private:
92   // reduced set of parameters from AliESDtrack
93   AliExternalTrackParam *fCp; // Track parameters constrained to the primary vertex
94   AliExternalTrackParam *fIp; // Track parameters estimated at the inner wall of TPC
95   AliExternalTrackParam *fTPCInner; // Track parameters estimated at the inner wall of TPC using the TPC stand-alone 
96   AliExternalTrackParam *fOp; // Track parameters estimated at the point of maximal radial coordinate reached during the tracking
97
98   ULong_t   fFlags;          // Reconstruction status flags 
99   Int_t     fID;             // Unique ID of the track
100   Int_t     fLabel;          // Track label
101   Int_t     fITSLabel;       // label according ITS
102   Int_t     fTPCLabel;       // label according TPC
103   Int_t     fTRDLabel;       // label according TRD
104
105   Float_t   fTrackLength;   // Track length
106
107   Float_t   fdTPC;          // TPC-only impact parameter in XY plane
108   Float_t   fzTPC;          // TPC-only impact parameter in Z
109   Float_t   fCddTPC,fCdzTPC,fCzzTPC; // Covariance matrix of the TPC-only impact parameters 
110   Float_t   fCchi2TPC;      // [0.,0.,8] TPC-only chi2 at the primary vertex
111
112   Float_t   fD;             // Impact parameter in XY plane
113   Float_t   fZ;             // Impact parameter in Z
114   Float_t   fCdd,fCdz,fCzz; // Covariance matrix of the impact parameters 
115   Float_t   fCchi2;          // [0.,0.,8] chi2 at the primary vertex
116
117   Float_t   fITSchi2;        // [0.,0.,8] chi2 in the ITS
118   Float_t   fTPCchi2;        // [0.,0.,8] chi2 in the TPC
119   Float_t   fTPCchi2Iter1;  // [0.,0.,8] chi2 in the TPC
120
121   UShort_t  fTPCncls;       // number of clusters assigned in the TPC
122   UShort_t  fTPCnclsF;      // number of findable clusters in the TPC
123   UShort_t  fTPCnclsIter1;  // number of clusters assigned in the TPC - iteration 1
124   UShort_t  fTPCnclsFIter1; // number of findable clusters in the TPC - iteration 1
125
126   Char_t    fITSncls;        // number of clusters assigned in the ITS
127   UChar_t   fITSClusterMap;  // map of clusters, one bit per a layer
128   UChar_t   fTRDncls;        // number of clusters assigned in the TRD
129   UChar_t   fTRDncls0;       // number of clusters assigned in the TRD before first material cross
130
131   ClassDef(AliHLTOnlineESDtrack, 1); // AliESDtrack instance optimized for HLT
132 };
133
134 #endif