]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EMCAL/AliEMCALTracker.h
cosmetics
[u/mrichter/AliRoot.git] / EMCAL / AliEMCALTracker.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 AliEMCALTracker 
7 //                      -----------------------
8 // Implementation of the track matching method between barrel tracks and
9 // EMCAL clusters.
10 // Besides algorithm implementation, some cuts are required to be set
11 // in order to define, for each track, an acceptance window where clusters
12 // are searched to find best match (if any).
13 // The class accepts as input an ESD container, and works directly on it,
14 // simply setting, for each of its tracks, the fEMCALindex flag, for each
15 // track which is matched to a cluster.
16 // In order to use method, one must launch PropagateBack().
17 //
18 // ------------------------------------------------------------------------
19 // author: A. Pulvirenti (alberto.pulvirenti@ct.infn.it)
20 //=========================================================================
21
22 #ifndef ALIEMCALTRACKER_H
23 #define ALIEMCALTRACKER_H
24
25 #include "AliTracker.h"
26 #include <TMath.h>
27 #include <TVector3.h>
28 class TList;
29 class TTree;
30 class TObjArray;
31 class AliESDEvent;
32 class AliVCluster;
33 class AliESDCaloCluster;
34 class AliEMCALRecPoint;
35 class AliEMCALGeometry;
36
37 class AliEMCALTracker : public AliTracker 
38 {
39 public:
40
41         AliEMCALTracker();
42         AliEMCALTracker(const AliEMCALTracker &t);
43         AliEMCALTracker& operator=(const AliEMCALTracker &source);
44         
45         virtual ~AliEMCALTracker() {Clear();}
46         
47         virtual void        Clear(Option_t *option="ALL");
48         virtual Int_t       Clusters2Tracks(AliESDEvent*) {return -1;}
49                 void        InitParameters();
50         virtual Int_t       LoadClusters(TTree*);
51                 Int_t       LoadClusters(AliESDEvent* esd);
52                 Int_t       LoadTracks(AliESDEvent* esd);
53         virtual Int_t       PropagateBack(AliESDEvent* esd);
54         virtual Int_t       RefitInward(AliESDEvent*) {return -1;}
55         virtual void        UnloadClusters();
56         virtual AliCluster* GetCluster(Int_t) const {return NULL;}
57         void                SetCutEta(Double_t value) {fCutEta=value;}
58         void                SetCutPhi(Double_t value) {fCutPhi=value;}
59         void                SetGeometry(AliEMCALGeometry *geom) {fGeom=geom;}
60         void                SetCutPt(Double_t value)   {fCutPt=value;}
61         void                SetCutNITS(Double_t value) {fCutNITS=value;}
62         void                SetCutNTPC(Double_t value) {fCutNTPC=value;}
63         void                SetStepLength(Float_t length) {fStep=length;}
64         void                SetTrackCorrectionMode(Option_t *option);
65         void                SetEMCalSurfaceDistance(Double_t d) {fEMCalSurfaceDistance = d;}
66
67         enum {  kUnmatched = -99999 };
68         
69         class  AliEMCALMatchCluster : public TObject
70         {
71         public:
72                 AliEMCALMatchCluster(Int_t ID, AliEMCALRecPoint *recPoint);
73                 AliEMCALMatchCluster(Int_t ID, AliESDCaloCluster *caloCluster);
74                 virtual ~AliEMCALMatchCluster() { }
75                 //----------------------------------------------------------------------------
76                 Int_t     Index() const {return fIndex;}
77                 Double_t  X() const {return fX;}
78                 Double_t  Y() const {return fY;} 
79                 Double_t  Z() const {return fZ;}
80         private:
81                 Int_t     fIndex;  // index of cluster in its native container (ESD or TClonesArray)
82                 Double_t  fX;      // global X position
83                 Double_t  fY;      // global Y position
84                 Double_t  fZ;      // global Z position
85         };
86    
87 private:
88         Int_t  FindMatchedCluster(AliESDtrack *track);
89         
90         enum ETrackCorr { 
91                 kTrackCorrNone  = 0, // do not correct for energy loss
92                 kTrackCorrMMB   = 1, // use MeanMaterialBudget() function to evaluate correction
93         };
94
95         Double_t    fCutPt;           // mimimum pT cut on tracks
96         Double_t    fCutNITS;         // mimimum number of track hits in the ITS
97         Double_t    fCutNTPC;         // mimimum number of track hits in the TPC
98         
99         Float_t     fStep;            // Length of each step in propagation
100         ETrackCorr  fTrackCorrMode;   // Material budget correction mode
101         Float_t     fEMCalSurfaceDistance; // EMCal surface distance
102         Double_t    fClusterWindow;   // Select clusters in the window to be matched to tracks
103         Double_t    fCutEta;          // cut on eta difference
104         Double_t    fCutPhi;          // cut on phi difference
105         Bool_t      fITSTrackSA;      // If ITS Tracks  
106         
107         TObjArray  *fTracks;          //! collection of tracks
108         TObjArray  *fClusters;        //! collection of EMCAL clusters (ESDCaloCluster or EMCALRecPoint)
109         
110         AliEMCALGeometry *fGeom;      //! EMCAL geometry
111         
112         ClassDef(AliEMCALTracker, 7)  // EMCAL "tracker"
113 };
114
115 #endif