Updated version.
[u/mrichter/AliRoot.git] / EMCAL / AliEMCALTrack.h
1 //========================================================================  
2 // Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved.  
3 // See cxx source for full Copyright notice                                
4 //========================================================================  
5 //                       
6 //                       Class AliEMCALTrack 
7 //                      ---------------------
8 // Implementation of a track to be used for EMCAL track matching.
9 // This object is used to find track intersection with EMCAL surface
10 // in order to find the most well matched EMCAL cluster to associate to it.              
11 // NO Kalman-like parameter updating is done.
12 //
13 // ------------------------------------------------------------------------
14 // author: A. Pulvirenti (alberto.pulvirenti@ct.infn.it)
15 //=========================================================================
16
17 #ifndef AliEMCALTRACK_H
18 #define AliEMCALTRACK_H
19
20 #include "AliExternalTrackParam.h"
21
22 class AliESDtrack;
23
24 class AliEMCALTrack : public AliExternalTrackParam
25 {
26 public:
27
28         AliEMCALTrack();
29         AliEMCALTrack(const AliESDtrack& t);
30         AliEMCALTrack(const AliEMCALTrack& t);
31         AliEMCALTrack& operator=(const AliEMCALTrack &t);
32         
33         Int_t    Compare(const TObject *o) const;
34         Int_t    GetClusterIndex() const {return fClusterIndex;}
35         Double_t GetClusterDist() const {return fClusterDist;}
36         Double_t GetMass() const {return fMass;}
37         Int_t    GetSeedIndex() const {return fSeedIndex;}
38         Int_t    GetSeedLabel() const {return fSeedLabel;}
39         
40         Bool_t   IsSortable() const {return kTRUE;}
41         Bool_t   PropagateTo(Double_t xr, Double_t d = 0.0, Double_t x0 = 21.82);
42         Double_t StraightPropagateTo(Double_t xk, Double_t &x, Double_t &y, Double_t &z);
43         Bool_t   PropagateToGlobal(Double_t x, Double_t y, Double_t z, Double_t d = 0.0, Double_t x0 = 21.82);
44                         
45         void     SetClusterIndex(Int_t idx) {fClusterIndex = idx;}
46         void     SetClusterDist(Double_t dist) {fClusterDist = dist;}
47         void     SetMass(Double_t mass) {fMass = mass;}
48         void     SetSeedIndex(Int_t index) {fSeedIndex = index;}
49         void     SetSeedLabel(Int_t label) {fSeedLabel = label;}
50                 
51         static void SetUseOuterParams(Bool_t doit = kTRUE) {fgUseOuterParams = doit;}
52         static void SetCorrectForEL(Bool_t doit = kTRUE) {fgCorrectForEL = doit;}
53         static void SetSortByPt(Bool_t doit = kTRUE) {fgSortByPt = doit;}
54
55 protected:
56         
57         Bool_t  SimplePropagation(Double_t xk, Double_t d = 0.0, Double_t x0 = 0.0);
58         
59         static  Bool_t    fgUseOuterParams;    // use outer parameters from AliESDtrack?
60         static  Bool_t    fgCorrectForEL;      // apply corrections for energy loss?
61         static  Bool_t    fgSortByPt;          // true --> sort by pt, false --> sort by track-cluster distance
62                 Int_t     fClusterIndex;       // index of matched cluster (if any)
63                 Double_t  fClusterDist;        // distance between track propagation and matched cluster
64                 Double_t  fMass;               // mass hypothesis (in GeV/c2)
65                 Int_t     fSeedIndex;          // index of imported ESD track in its owner AliESD
66                 Int_t     fSeedLabel;          // GEANT label of imported ESD track
67
68 private:
69         
70         ClassDef(AliEMCALTrack, 0) // track implementation for EMCAL matching
71
72 };
73
74 #endif