]>
Commit | Line | Data |
---|---|---|
fe17d4cb | 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" | |
57fa24d9 | 26 | #include <TMath.h> |
27 | #include <TVector3.h> | |
fe17d4cb | 28 | class TList; |
c61f0e70 | 29 | class TTree; |
fe17d4cb | 30 | class TObjArray; |
af885e0f | 31 | class AliESDEvent; |
8fc351e3 | 32 | class AliVCluster; |
fe17d4cb | 33 | class AliESDCaloCluster; |
fe17d4cb | 34 | class AliEMCALRecPoint; |
c61f0e70 | 35 | class AliEMCALGeometry; |
fe17d4cb | 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"); | |
af885e0f | 48 | virtual Int_t Clusters2Tracks(AliESDEvent*) {return -1;} |
8ba062b1 | 49 | void InitParameters(); |
fe17d4cb | 50 | virtual Int_t LoadClusters(TTree*); |
af885e0f | 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;} | |
fe17d4cb | 55 | virtual void UnloadClusters(); |
5970dfe2 | 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;} | |
c61f0e70 | 59 | void SetGeometry(AliEMCALGeometry *geom) {fGeom=geom;} |
5970dfe2 | 60 | void SetCutPt(Double_t value) {fCutPt=value;} |
dcd86c5d | 61 | void SetCutNITS(Double_t value) {fCutNITS=value;} |
62 | void SetCutNTPC(Double_t value) {fCutNTPC=value;} | |
5970dfe2 | 63 | void SetStepLength(Float_t length) {fStep=length;} |
fe17d4cb | 64 | void SetTrackCorrectionMode(Option_t *option); |
04475328 | 65 | |
5970dfe2 | 66 | enum { kUnmatched = -99999 }; |
c61f0e70 | 67 | |
fe17d4cb | 68 | class AliEMCALMatchCluster : public TObject |
69 | { | |
70 | public: | |
c61f0e70 | 71 | AliEMCALMatchCluster(Int_t ID, AliEMCALRecPoint *recPoint); |
72 | AliEMCALMatchCluster(Int_t ID, AliESDCaloCluster *caloCluster); | |
73 | virtual ~AliEMCALMatchCluster() { } | |
74 | //---------------------------------------------------------------------------- | |
b9560ae2 | 75 | Int_t Index() const {return fIndex;} |
b9560ae2 | 76 | Double_t X() const {return fX;} |
77 | Double_t Y() const {return fY;} | |
78 | Double_t Z() const {return fZ;} | |
fe17d4cb | 79 | private: |
80 | Int_t fIndex; // index of cluster in its native container (ESD or TClonesArray) | |
fe17d4cb | 81 | Double_t fX; // global X position |
82 | Double_t fY; // global Y position | |
83 | Double_t fZ; // global Z position | |
84 | }; | |
5970dfe2 | 85 | |
fe17d4cb | 86 | private: |
8fc351e3 | 87 | Int_t FindMatchedCluster(AliESDtrack *track); |
fe17d4cb | 88 | |
89 | enum ETrackCorr { | |
90 | kTrackCorrNone = 0, // do not correct for energy loss | |
91 | kTrackCorrMMB = 1, // use MeanMaterialBudget() function to evaluate correction | |
fe17d4cb | 92 | }; |
dcd86c5d | 93 | |
5970dfe2 | 94 | Double_t fCutPt; // mimimum pT cut on tracks |
95 | Double_t fCutNITS; // mimimum number of track hits in the ITS | |
96 | Double_t fCutNTPC; // mimimum number of track hits in the TPC | |
97 | ||
98 | Float_t fStep; // Length of each step in propagation | |
8fc351e3 | 99 | ETrackCorr fTrackCorrMode; // Material budget correction mode |
100 | Double_t fClusterWindow; // Select clusters in the window to be matched to tracks | |
5970dfe2 | 101 | Double_t fCutEta; // cut on eta difference |
102 | Double_t fCutPhi; // cut on phi difference | |
42ceff04 | 103 | Bool_t fITSTrackSA; // If ITS Tracks |
104 | ||
c61f0e70 | 105 | TObjArray *fTracks; //! collection of tracks |
fe17d4cb | 106 | TObjArray *fClusters; //! collection of EMCAL clusters (ESDCaloCluster or EMCALRecPoint) |
fe17d4cb | 107 | |
c61f0e70 | 108 | AliEMCALGeometry *fGeom; //! EMCAL geometry |
109 | ||
ee602376 | 110 | ClassDef(AliEMCALTracker, 6) // EMCAL "tracker" |
fe17d4cb | 111 | }; |
112 | ||
113 | #endif |