]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/UPGRADE/AliITSUTrackerGlo.h
reconstruction updates
[u/mrichter/AliRoot.git] / ITS / UPGRADE / AliITSUTrackerGlo.h
1 #ifndef ALIITSTRACKERU_H
2 #define ALIITSTRACKERU_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 //-------------------------------------------------------------------------
7 //                ITS upgrade tracker base class
8 //-------------------------------------------------------------------------
9
10 #include "AliTracker.h"
11 #include "AliESDEvent.h"
12 #include "AliITSUSeed.h"
13
14 class AliITSUReconstructor;
15 class AliITSURecoDet;
16 class AliITSUClusterPix;
17
18 class TTree;
19
20
21 //-------------------------------------------------------------------------
22 class AliITSUTrackerGlo : public AliTracker {
23
24   public:
25   enum { // info from track extrapolation to layer for cluster check
26     kTrXIn ,kTrYIn ,kTrZIn ,kTrPhiIn , // entrance (outer) point on the layer from above 
27     kTrXOut,kTrYOut,kTrZOut,kTrPhiOut, // exit (inner) point on the layer
28     kTrPhi0, kTrDPhi, kTrZ0, kTrDZ,     // mean phi,dPhi, mean z, dZ (don't change this order)
29     kNTrImpData};
30   //
31   enum {kMissingCluster=0  // no cluster found on this layer
32         ,kTransportFailed=1  // seed did not reach target layer
33         ,kRWCheckFailed =2  // failed to rotate the seed to frame of the layer impact point
34   };
35   enum {kStopSearchOnSensor,kClusterNotMatching,kClusterMatching}; // flags for track-to-cluster checks
36
37   AliITSUTrackerGlo(AliITSUReconstructor* rec);
38   virtual ~AliITSUTrackerGlo();
39
40   virtual Int_t          Clusters2Tracks(AliESDEvent *event);
41   virtual Int_t          PropagateBack(AliESDEvent *event);
42   virtual Int_t          RefitInward(AliESDEvent *event);
43   virtual Int_t          LoadClusters(TTree * treeRP=0);
44   virtual void           UnloadClusters();
45   virtual AliCluster*    GetCluster(Int_t index) const;
46
47
48   //------------------------------------
49   Bool_t                 NeedToProlong(AliESDtrack* estTr);
50   void                   Init(AliITSUReconstructor* rec);
51   void                   FindTrack(AliESDtrack* esdTr);
52   Bool_t                 InitSeed(AliESDtrack *esdTr);
53   Int_t                  GetNSeeds(Int_t lr)              const {return fSeedsLr[lr].GetEntriesFast();} //RS TOCHECK
54   AliITSUSeed*           GetSeed(Int_t lr, Int_t sID)     const {return (AliITSUSeed*)fSeedsLr[lr].UncheckedAt(sID);} //RS TOCHECK
55   Bool_t                 TransportToLayer(AliITSUSeed* seed, Int_t lFrom, Int_t lTo);
56   Bool_t                 NeedToKill(AliITSUSeed* seed, Int_t flag) {return kFALSE;} // todo
57   void                   KillSeed(Int_t ilr, Int_t id) {} // todo
58   Bool_t                 GetRoadWidth(AliITSUSeed* seed, int ilrA);
59   Int_t                  CheckCluster(AliITSUSeed* seed, Int_t lr, Int_t clID);
60   void                   AddProlongationHypothesis(AliITSUSeed* seed, Int_t lr);
61   //
62   AliITSUSeed*           NewSeedFromPool(const AliITSUSeed* src=0);
63   void                   DeleteLastSeedFromPool()               {fSeedsPool.RemoveLast();}
64   void                   ResetSeedTree();  // RS TOCHECK
65   //
66  private:
67   
68   AliITSUTrackerGlo(const AliITSUTrackerGlo&);
69   AliITSUTrackerGlo &operator=(const AliITSUTrackerGlo &tr);
70   //
71  protected:
72   AliITSUReconstructor*           fReconstructor;  // ITS global reconstructor 
73   AliITSURecoDet*                 fITS;            // interface to ITS
74   Double_t                        fCurrMass;       // current track mass
75   Double_t                        fTrImpData[kNTrImpData];  // data on track impact on the layer
76   //
77   // the seeds management to be optimized
78   TObjArray*                      fSeedsLr;        // seeds at each layer
79   TClonesArray                    fSeedsPool;      // pool for seeds
80
81   ClassDef(AliITSUTrackerGlo,1)   //ITS upgrade tracker
82     
83 };
84
85 //_________________________________________________________________________
86 inline void AliITSUTrackerGlo::AddProlongationHypothesis(AliITSUSeed* seed, Int_t lr)
87 {
88   // add new seed prolongation hypothesis 
89   fSeedsLr[lr].AddLast(seed);
90   seed->Print("par");
91 }
92
93
94 #endif
95