]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITStrackerV2.h
Warning cleaned
[u/mrichter/AliRoot.git] / ITS / AliITStrackerV2.h
index c606071299271dad95b3666bcc08500b1fbdd34c..0a0076c6e1771d28700714b2f784d1df9b0ec3d0 100644 (file)
@@ -1,20 +1,21 @@
-#ifndef ALIITSTRACKER_H
-#define ALIITSTRACKER_H
+#ifndef ALIITSTRACKERV2_H
+#define ALIITSTRACKERV2_H
 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
  * See cxx source for full Copyright notice                               */
 
 //-------------------------------------------------------------------------
 //                          ITS tracker
-//
-//       Origin: Iouri Belikov, CERN, Jouri.Belikov@cern.ch 
+//     reads AliITSclusterV2 clusters and creates AliITStrackV2 tracks
+//           Origin: Iouri Belikov, CERN, Jouri.Belikov@cern.ch 
 //-------------------------------------------------------------------------
 #include "AliTracker.h"
 #include "AliITSrecoV2.h"
 #include "AliITStrackV2.h"
 
 class AliITSclusterV2;
+class AliESD;
 class AliITSgeom;
-class TFile;
+class TTree;
 
 
 //-------------------------------------------------------------------------
@@ -23,19 +24,30 @@ public:
   AliITStrackerV2():AliTracker(){}
   AliITStrackerV2(const AliITSgeom *geom);
   AliCluster *GetCluster(Int_t index) const;
-  void LoadClusters();
+  AliITSclusterV2 *GetClusterLayer(Int_t layn, Int_t ncl) const
+                        {return fgLayers[layn].GetCluster(ncl);}
+  Int_t GetNumberOfClustersLayer(Int_t layn) const 
+                        {return fgLayers[layn].GetNumberOfClusters();}
+  Int_t LoadClusters(TTree *cf);
   void UnloadClusters();
-  Int_t Clusters2Tracks(const TFile *in, TFile *out);
-  Int_t PropagateBack(const TFile *in, TFile *out);
+  Int_t Clusters2Tracks(TTree *in, TTree *out);
+  Int_t Clusters2Tracks(AliESD *event);
+  Int_t PropagateBack(AliESD *event);
+  Int_t RefitInward(AliESD *event);
+  Bool_t RefitAt(Double_t x, AliITStrackV2 *seed, const AliITStrackV2 *t);
   void SetupFirstPass(Int_t *flags, Double_t *cuts=0);
   void SetupSecondPass(Int_t *flags, Double_t *cuts=0);
-  Bool_t RefitAt(Double_t x, AliITStrackV2 *t, Int_t *index);
+
+  void SetLastLayerToTrackTo(Int_t l=0) {fLastLayerToTrackTo=l;} 
+  void SetLayersNotToSkip(Int_t *l);
+
+  void UseClusters(const AliKalmanTrack *t, Int_t from=0) const;
 
   class AliITSdetector {
   public:
     AliITSdetector(){}
     AliITSdetector(Double_t r,Double_t phi) {fR=r; fPhi=phi;}
-    void *operator new(size_t s,AliITSdetector *p) {return p;}
+    void *operator new(size_t /*s*/,AliITSdetector *p) {return p;}
     Double_t GetR()   const {return fR;}
     Double_t GetPhi() const {return fPhi;}
   private:
@@ -52,7 +64,9 @@ public:
     void ResetClusters();
     void SelectClusters(Double_t zmi,Double_t zma,Double_t ymi,Double_t yma);
     const AliITSclusterV2 *GetNextCluster(Int_t &ci);
-    void *operator new(size_t s, AliITSlayer *p) {return p;}
+    void *operator new(size_t /*s*/, AliITSlayer *p) {return p;}
+    void ResetRoad();
+    Double_t GetRoad() const {return fRoad;}
     Double_t GetR() const {return fR;}
     AliITSclusterV2 *GetCluster(Int_t i) const {return fClusters[i];} 
     AliITSdetector &GetDetector(Int_t n) const { return fDetectors[n]; }
@@ -62,7 +76,7 @@ public:
     Int_t GetNumberOfClusters() const {return fN;}
     Int_t GetNladders() const {return fNladders;}
     Int_t GetNdetectors() const {return fNdetectors;}
-  private:
+  protected:
     Double_t fR;                // mean radius of this layer
     Double_t fPhiOffset;        // offset of the first detector in Phi
     Int_t fNladders;            // number of ladders
@@ -75,10 +89,11 @@ public:
     Double_t fYmin;      //   of  the
     Double_t fYmax;      //   "window"
     Int_t fI;            // index of the current cluster within the "window"
+    Double_t fRoad;      // road defined by the cluster density
     Int_t FindClusterIndex(Double_t z) const;
   };
 
-private:
+protected:
   void CookLabel(AliKalmanTrack *t,Float_t wrong) const;
   Double_t GetEffectiveThickness(Double_t y, Double_t z) const;
   void  FollowProlongation();
@@ -92,12 +107,17 @@ private:
      new(&fTrackToFollow) AliITStrackV2(t);
   }
   Int_t fI;                              // index of the current layer
-  static AliITSlayer fLayers[kMaxLayer]; // ITS layers
+  static AliITSlayer fgLayers[kMaxLayer];// ITS layers
   AliITStrackV2 fTracks[kMaxLayer];      // track estimations at the ITS layers
   AliITStrackV2 fBestTrack;              // "best" track 
   AliITStrackV2 fTrackToFollow;          // followed track
   Int_t fPass;                           // current pass through the data 
   Int_t fConstraint[2];                  // constraint flags
+
+  Int_t fLayersNotToSkip[kMaxLayer];     // layer masks
+  Int_t fLastLayerToTrackTo;             // the innermost layer to track to
+
+  ClassDef(AliITStrackerV2,1)   //ITS tracker V2
 };