updates for running beamtest analysis within AliRoot - minor bug fixes still need...
[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         
35         Double_t GetBz() const;
36         Int_t    GetClusterIndex() const {return fClusterIndex;}
37         Double_t GetClusterDist() const {return fClusterDist;}
38         Double_t GetMass() const {return fMass;}
39         Int_t    GetSeedIndex() const {return fSeedIndex;}
40         Int_t    GetSeedLabel() const {return fSeedLabel;}
41         
42         Bool_t   IsSortable() const {return kTRUE;}
43         Bool_t   PropagateTo(Double_t xr, Double_t d = 0.0, Double_t x0 = 21.82);
44         Double_t StraightPropagateTo(Double_t xk, Double_t &x, Double_t &y, Double_t &z);
45         Bool_t   PropagateToGlobal(Double_t x, Double_t y, Double_t z, Double_t d = 0.0, Double_t x0 = 21.82);
46                         
47         void     SetClusterIndex(Int_t idx) {fClusterIndex = idx;}
48         void     SetClusterDist(Double_t dist) {fClusterDist = dist;}
49         void     SetMass(Double_t mass) {fMass = mass;}
50         void     SetSeedIndex(Int_t index) {fSeedIndex = index;}
51         void     SetSeedLabel(Int_t label) {fSeedLabel = label;}
52                 
53         static void SetUseOuterParams(Bool_t doit = kTRUE) {fgUseOuterParams = doit;}
54         static void SetCorrectForEL(Bool_t doit = kTRUE) {fgCorrectForEL = doit;}
55         static void SetSortByPt(Bool_t doit = kTRUE) {fgSortByPt = doit;}
56
57 protected:
58         
59         Bool_t  SimplePropagation(Double_t xk, Double_t d = 0.0, Double_t x0 = 0.0);
60         
61         static  Bool_t    fgUseOuterParams;    // use outer parameters from AliESDtrack?
62         static  Bool_t    fgCorrectForEL;      // apply corrections for energy loss?
63         static  Bool_t    fgSortByPt;          // true --> sort by pt, false --> sort by track-cluster distance
64                 Int_t     fClusterIndex;       // index of matched cluster (if any)
65                 Double_t  fClusterDist;        // distance between track propagation and matched cluster
66                 Double_t  fMass;               // mass hypothesis (in GeV/c2)
67                 Int_t     fSeedIndex;          // index of imported ESD track in its owner AliESD
68                 Int_t     fSeedLabel;          // GEANT label of imported ESD track
69
70 private:
71         
72         ClassDef(AliEMCALTrack, 0) // track implementation for EMCAL matching
73
74 };
75
76 #endif