ROOT logo
#ifndef ALIITSURECODET
#define ALIITSURECODET

#include <TNamed.h>
#include <TObjArray.h>
#include "AliITSURecoLayer.h"
#include "AliITSUClusterPix.h"
class AliITSUGeomTGeo;
class TTree;

///////////////////////////////////////////////////////////////////////
//                                                                   //
//  Class AliITSURecoDet                                             //
//  Interface between the framework and reconstruction for ITS       //
//                                                                   //
///////////////////////////////////////////////////////////////////////


class AliITSURecoDet : public TNamed
{
 public:
  //
  AliITSURecoDet();
  AliITSURecoDet(AliITSUGeomTGeo* geom, const char* name="");
  virtual ~AliITSURecoDet();
  //
  Double_t           GetRMin()                     const {return fRMin;}
  Double_t           GetRMax()                     const {return fRMax;}
  Double_t           GetRITSTPCRef()               const {return fRITSTPCRef;}
  Int_t              GetNLayers()                  const {return fNLayers;}
  Int_t              GetNLayersActive()            const {return fNLayersActive;}
  Int_t              GetLrIDActive(Int_t lrActID)  const;
  Int_t              FindLastLayerID(Double_t r, int dir)  const;
  Int_t              FindFirstLayerID(Double_t r, int dir) const;
  AliITSURecoLayer*  GetLayer(Int_t i)             const;
  AliITSURecoLayer*  GetLayerActive(Int_t i)       const;
  AliITSUGeomTGeo*   GetGeom()                     const {return fGeom;}
  //
  void               SetRMin(Double_t r)                 {fRMin = r;}
  void               SetRMax(Double_t r)                 {fRMax = r;}
  void               SetRITSTPCRef(Double_t r)           {fRITSTPCRef = r;}
  //
  void               AddLayer(const AliITSURecoLayer* lr);
  //
  void               ProcessClusters(Int_t mode=0);
  void               SortClusters(AliITSUClusterPix::SortMode_t mode);
  void               CreateClusterArrays();
  Int_t              LoadClusters(TTree* treeRP);
  //
  virtual void       Print(Option_t* option = "")  const;
  //
 protected:
  Bool_t             Build();
  void               IndexLayers();
  //
 protected:
  Int_t              fNLayers;        // total number of layers
  Int_t              fNLayersActive;  // N of active layers
  Double_t           fRMax;           // max  R
  Double_t           fRMin;           // min  R
  Double_t           fRITSTPCRef;     // reference radius for ITS/TPC matching check
  TObjArray          fLayers;         // layers
  TObjArray          fLayersActive;   // active layers
  AliITSUGeomTGeo*   fGeom;           // ITS geometry
  //
 protected:
  static const Char_t*     fgkBeamPipeVolName;    // name of the beam pipe volume

 private:
  AliITSURecoDet(const AliITSURecoDet &source); 
  AliITSURecoDet& operator=(const AliITSURecoDet &source); 
  //
  ClassDef(AliITSURecoDet,1); // helper for ITS data in reco
};



//_____________________________________________________________
inline Int_t AliITSURecoDet::GetLrIDActive(Int_t lrActID) const 
{
  // get global layer id from active id
  return (lrActID<fNLayersActive) ? ((AliITSURecoLayer*)fLayersActive.UncheckedAt(lrActID))->GetID() 
    : GetLayerActive(fNLayersActive-1)->GetID()+1;
}

//_____________________________________________________________
inline AliITSURecoLayer* AliITSURecoDet::GetLayer(Int_t i) const 
{
  // get layer with global id=i
  return i>=0&&i<fNLayers ? (AliITSURecoLayer*)fLayers.UncheckedAt(i):0;
}

//_____________________________________________________________
inline AliITSURecoLayer* AliITSURecoDet::GetLayerActive(Int_t i) const
{
  // get layer with activeID=i
  return i>=0&&i<fNLayersActive ? (AliITSURecoLayer*)fLayersActive.UncheckedAt(i):0;
}

//______________________________________________________
inline void AliITSURecoDet::ProcessClusters(Int_t mode)
{
  // prepare clsuters for reconstrunction
  for (int ilr=fNLayersActive;ilr--;) GetLayerActive(ilr)->ProcessClusters(mode);
}


#endif
 AliITSURecoDet.h:1
 AliITSURecoDet.h:2
 AliITSURecoDet.h:3
 AliITSURecoDet.h:4
 AliITSURecoDet.h:5
 AliITSURecoDet.h:6
 AliITSURecoDet.h:7
 AliITSURecoDet.h:8
 AliITSURecoDet.h:9
 AliITSURecoDet.h:10
 AliITSURecoDet.h:11
 AliITSURecoDet.h:12
 AliITSURecoDet.h:13
 AliITSURecoDet.h:14
 AliITSURecoDet.h:15
 AliITSURecoDet.h:16
 AliITSURecoDet.h:17
 AliITSURecoDet.h:18
 AliITSURecoDet.h:19
 AliITSURecoDet.h:20
 AliITSURecoDet.h:21
 AliITSURecoDet.h:22
 AliITSURecoDet.h:23
 AliITSURecoDet.h:24
 AliITSURecoDet.h:25
 AliITSURecoDet.h:26
 AliITSURecoDet.h:27
 AliITSURecoDet.h:28
 AliITSURecoDet.h:29
 AliITSURecoDet.h:30
 AliITSURecoDet.h:31
 AliITSURecoDet.h:32
 AliITSURecoDet.h:33
 AliITSURecoDet.h:34
 AliITSURecoDet.h:35
 AliITSURecoDet.h:36
 AliITSURecoDet.h:37
 AliITSURecoDet.h:38
 AliITSURecoDet.h:39
 AliITSURecoDet.h:40
 AliITSURecoDet.h:41
 AliITSURecoDet.h:42
 AliITSURecoDet.h:43
 AliITSURecoDet.h:44
 AliITSURecoDet.h:45
 AliITSURecoDet.h:46
 AliITSURecoDet.h:47
 AliITSURecoDet.h:48
 AliITSURecoDet.h:49
 AliITSURecoDet.h:50
 AliITSURecoDet.h:51
 AliITSURecoDet.h:52
 AliITSURecoDet.h:53
 AliITSURecoDet.h:54
 AliITSURecoDet.h:55
 AliITSURecoDet.h:56
 AliITSURecoDet.h:57
 AliITSURecoDet.h:58
 AliITSURecoDet.h:59
 AliITSURecoDet.h:60
 AliITSURecoDet.h:61
 AliITSURecoDet.h:62
 AliITSURecoDet.h:63
 AliITSURecoDet.h:64
 AliITSURecoDet.h:65
 AliITSURecoDet.h:66
 AliITSURecoDet.h:67
 AliITSURecoDet.h:68
 AliITSURecoDet.h:69
 AliITSURecoDet.h:70
 AliITSURecoDet.h:71
 AliITSURecoDet.h:72
 AliITSURecoDet.h:73
 AliITSURecoDet.h:74
 AliITSURecoDet.h:75
 AliITSURecoDet.h:76
 AliITSURecoDet.h:77
 AliITSURecoDet.h:78
 AliITSURecoDet.h:79
 AliITSURecoDet.h:80
 AliITSURecoDet.h:81
 AliITSURecoDet.h:82
 AliITSURecoDet.h:83
 AliITSURecoDet.h:84
 AliITSURecoDet.h:85
 AliITSURecoDet.h:86
 AliITSURecoDet.h:87
 AliITSURecoDet.h:88
 AliITSURecoDet.h:89
 AliITSURecoDet.h:90
 AliITSURecoDet.h:91
 AliITSURecoDet.h:92
 AliITSURecoDet.h:93
 AliITSURecoDet.h:94
 AliITSURecoDet.h:95
 AliITSURecoDet.h:96
 AliITSURecoDet.h:97
 AliITSURecoDet.h:98
 AliITSURecoDet.h:99
 AliITSURecoDet.h:100
 AliITSURecoDet.h:101
 AliITSURecoDet.h:102
 AliITSURecoDet.h:103
 AliITSURecoDet.h:104
 AliITSURecoDet.h:105
 AliITSURecoDet.h:106
 AliITSURecoDet.h:107
 AliITSURecoDet.h:108