]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ITS/UPGRADE/AliITSUTrackerSA.h
Little coverity fix
[u/mrichter/AliRoot.git] / ITS / UPGRADE / AliITSUTrackerSA.h
CommitLineData
2cbb5f31 1#ifndef ALIITSUTRACKERSA_H
2#define ALIITSUTRACKERSA_H
3
4//-------------------------------------------------------------------------
5// The stand-alone ITSU tracker
6// It reads AliITSUClusterPix clusters and writes the tracks to the ESD
7//-------------------------------------------------------------------------
8
9#include "AliTracker.h"
10#include "AliITSUGeomTGeo.h"
11#include <TClonesArray.h>
12#include <vector>
57a336dd 13#include "AliITSUTrackerSAaux.h" // Structs and other stuff
a0c47fdb 14#include "AliITSUMatLUT.h"
15#include "AliITSUAux.h"
16#include "AliExternalTrackParam.h"
df380774 17
a0c47fdb 18class AliITSUReconstructor;
19class AliITSURecoDet;
20class AliITSURecoLayer;
2cbb5f31 21
22class TTree;
23class AliCluster;
24class AliESDEvent;
25
26using std::vector;
27
28//-------------------------------------------------------------------------
29class AliITSUTrackerSA : public AliTracker {
30public:
a0c47fdb 31 AliITSUTrackerSA(AliITSUReconstructor* rec=0);
32 virtual ~AliITSUTrackerSA();
2cbb5f31 33
57a336dd 34 // These functions must be implemented
2cbb5f31 35 Int_t Clusters2Tracks(AliESDEvent *event);
36 Int_t PropagateBack(AliESDEvent *event);
37 Int_t RefitInward(AliESDEvent *event);
38 Int_t LoadClusters(TTree *ct);
39 void UnloadClusters();
df380774 40
41 inline AliCluster *GetCluster(Int_t index) const {
42 const Int_t l=(index & 0xf0000000) >> 28;
43 const Int_t c=(index & 0x0fffffff);
44 return (AliCluster*)fClustersTC[l]->At(c) ;
45 }
2cbb5f31 46
47 // Possibly, other public functions
a0c47fdb 48 void Init(AliITSUReconstructor* rec);
57a336dd 49 Double_t RefitTrack(AliExternalTrackParam* trc, Int_t clInfo[2*AliITSUAux::kMaxLayers], Double_t rDest, Int_t stopCond);
a0c47fdb 50 Bool_t PropagateSeed(AliExternalTrackParam *seed, Double_t xToGo, Double_t mass, Double_t maxStep=1.0, Bool_t matCorr=kTRUE);
51 Double_t GetMaterialBudget(const double* pnt0, const double* pnt1, double& x2x0, double& rhol) const;
52 Bool_t GoToEntranceToLayer(AliExternalTrackParam* seed, AliITSURecoLayer* lr, Int_t dir, Bool_t check=kFALSE);
53 Bool_t GoToExitFromLayer(AliExternalTrackParam* seed, AliITSURecoLayer* lr, Int_t dir, Bool_t check=kTRUE);
57a336dd 54 Bool_t TransportToLayerX(AliExternalTrackParam* seed, Int_t lFrom, Int_t lTo, Double_t xStop);
a0c47fdb 55 Bool_t TransportToLayer(AliExternalTrackParam* seed, Int_t lFrom, Int_t lTo, Double_t rLim=-1);
df380774 56
57 void SetChi2Cut(float cut) { fChi2Cut=cut; }
58 void SetRPhiCut(float cut) { fRPhiCut=cut; }
59 void SetPhiCut(float cut) { fPhiCut=cut; }
60 void SetZCut(float cut) { fZCut=cut; }
61
62
a0c47fdb 63 //
2cbb5f31 64protected:
65 AliITSUTrackerSA(const AliITSUTrackerSA&);
66
df380774 67 void CellsCreation(const int &cutLevel);
68 void CellularAutomaton(AliESDEvent *ev);
a0c47fdb 69 // void MakeTriplets();
57a336dd 70 void CandidatesTreeTraversal( vector<Road> &vec, const int &iD, const int &doubl);
df380774 71 Bool_t InitTrackParams(AliITSUTrackCooked &track, int points[]);
2cbb5f31 72 void GlobalFit();
73 void ChiSquareSelection();
df380774 74 void MergeTracks( vector<AliITSUTrackCooked> &vec, bool flags[] );
2cbb5f31 75 // Other protected functions
57a336dd 76 // (Sorting, labeling, calculations of "roads", etc)
a0c47fdb 77 static Double_t Curvature(Double_t x1,Double_t y1,Double_t x2,Double_t y2,Double_t x3,Double_t y3);
78
df380774 79
2cbb5f31 80
81private:
82 AliITSUTrackerSA &operator=(const AliITSUTrackerSA &tr);
df380774 83 void SetLabel(AliITSUTrackCooked &t, Float_t wrong);
2cbb5f31 84
85 // Data members
a0c47fdb 86
87 // classes for interfacing the geometry, materials etc.
57a336dd 88 AliITSUReconstructor* fReconstructor; // ITS global reconstructor
a0c47fdb 89 AliITSURecoDet* fITS; // interface to ITS, borrowed from reconstructor
90 AliITSUMatLUT* fMatLUT; // material lookup table
91 Bool_t fUseMatLUT; //! use material lookup table rather than TGeo
92 Double_t fCurrMass; // assumption about particle mass
93
94
2cbb5f31 95 // Internal tracker arrays, layers, modules, etc
df380774 96 Layer fLayer[7];
a0c47fdb 97 TClonesArray *fClustersTC[7];
df380774 98 vector<Cell> fCells[5];
99 Float_t fChi2Cut;
2cbb5f31 100 Float_t fPhiCut;
101 Float_t fRPhiCut;
102 Float_t fZCut;
103
a0c47fdb 104 //
105 static const Double_t fgkToler; // tracking tolerance
57a336dd 106 static const Double_t fgkChi2Cut; // chi2 cut during track merging
a0c47fdb 107 //
2cbb5f31 108 ClassDef(AliITSUTrackerSA,1) //ITSU stand-alone tracker
109};
110
111#endif