]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - EMCAL/AliEMCALTracker.h
protection + extension of Nch weights to 100
[u/mrichter/AliRoot.git] / EMCAL / AliEMCALTracker.h
... / ...
CommitLineData
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>
28class TList;
29class TTree;
30class TObjArray;
31class AliESDEvent;
32class AliVCluster;
33class AliESDCaloCluster;
34class AliEMCALRecPoint;
35class AliEMCALGeometry;
36
37class AliEMCALTracker : public AliTracker
38{
39public:
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
87private:
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