ROOT logo
#ifndef ALITPCRECONSTRUCTOR_H
#define ALITPCRECONSTRUCTOR_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/* $Id$ */

#include "AliReconstructor.h"
#include "AliTPCRecoParam.h"

class AliTPCParam;
class AliTPCclusterer;
class AliTPCtracker;
class AliTPCAltroEmulator;
class TObjArray;

class AliTPCReconstructor: public AliReconstructor {
public:
  AliTPCReconstructor();
  virtual ~AliTPCReconstructor();
  virtual void         Reconstruct(TTree* digitsTree, TTree* clustersTree) const;
  virtual void         Reconstruct(AliRawReader* rawReader, TTree* clustersTree) const;

  virtual AliTracker*  CreateTracker() const;

  virtual void         FillESD(TTree* /*digitsTree*/, TTree* /*clustersTree*/, 
			       AliESDEvent* esd) const;
  virtual void         FillESD(AliRawReader* /*rawReader*/, TTree* /*clustersTree*/, 
			       AliESDEvent* esd) const
  {FillESD((TTree*)NULL,(TTree*)NULL,esd);}

  static const AliTPCRecoParam* GetRecoParam() { return dynamic_cast<const AliTPCRecoParam*>(AliReconstructor::GetRecoParam(1)); }
  virtual void                 GetPidSettings(AliESDpid *esdPID);
  
  //
  static Double_t GetCtgRange()     { return GetRecoParam()->GetCtgRange();}
  static Double_t GetMaxSnpTracker(){ return GetRecoParam()->GetMaxSnpTracker();}
  static Double_t GetMaxSnpTrack()  { return GetRecoParam()->GetMaxSnpTrack();}

  static Int_t StreamLevel()               { return fgStreamLevel;}
  static void  SetStreamLevel(Int_t level) { fgStreamLevel = level;}
  static void  SetAltroEmulator(AliTPCAltroEmulator *altro) { fAltroEmulator=altro;}
  static AliTPCAltroEmulator *  GetAltroEmulator() { return fAltroEmulator;}

  void ParseOptions(AliTPCtracker* tracker) const;

private:
  AliTPCReconstructor(const AliTPCReconstructor&); //Not implemented
  AliTPCReconstructor& operator=(const AliTPCReconstructor&); //Not implemented
  AliTPCParam*         GetTPCParam() const;
  static Int_t               fgStreamLevel; // flag for streaming      - for TPC reconstruction
  AliTPCclusterer*           fClusterer;   // TPC clusterer
  static AliTPCAltroEmulator * fAltroEmulator;    // ALTRO emulator

  TObjArray *fArrSplines;                  // array of pid splines

  void SetSplinesFromOADB(const char* tmplt, AliESDpid *esdPID);
  
  ClassDef(AliTPCReconstructor, 0)   // class for the TPC reconstruction
};

#endif
 AliTPCReconstructor.h:1
 AliTPCReconstructor.h:2
 AliTPCReconstructor.h:3
 AliTPCReconstructor.h:4
 AliTPCReconstructor.h:5
 AliTPCReconstructor.h:6
 AliTPCReconstructor.h:7
 AliTPCReconstructor.h:8
 AliTPCReconstructor.h:9
 AliTPCReconstructor.h:10
 AliTPCReconstructor.h:11
 AliTPCReconstructor.h:12
 AliTPCReconstructor.h:13
 AliTPCReconstructor.h:14
 AliTPCReconstructor.h:15
 AliTPCReconstructor.h:16
 AliTPCReconstructor.h:17
 AliTPCReconstructor.h:18
 AliTPCReconstructor.h:19
 AliTPCReconstructor.h:20
 AliTPCReconstructor.h:21
 AliTPCReconstructor.h:22
 AliTPCReconstructor.h:23
 AliTPCReconstructor.h:24
 AliTPCReconstructor.h:25
 AliTPCReconstructor.h:26
 AliTPCReconstructor.h:27
 AliTPCReconstructor.h:28
 AliTPCReconstructor.h:29
 AliTPCReconstructor.h:30
 AliTPCReconstructor.h:31
 AliTPCReconstructor.h:32
 AliTPCReconstructor.h:33
 AliTPCReconstructor.h:34
 AliTPCReconstructor.h:35
 AliTPCReconstructor.h:36
 AliTPCReconstructor.h:37
 AliTPCReconstructor.h:38
 AliTPCReconstructor.h:39
 AliTPCReconstructor.h:40
 AliTPCReconstructor.h:41
 AliTPCReconstructor.h:42
 AliTPCReconstructor.h:43
 AliTPCReconstructor.h:44
 AliTPCReconstructor.h:45
 AliTPCReconstructor.h:46
 AliTPCReconstructor.h:47
 AliTPCReconstructor.h:48
 AliTPCReconstructor.h:49
 AliTPCReconstructor.h:50
 AliTPCReconstructor.h:51
 AliTPCReconstructor.h:52
 AliTPCReconstructor.h:53
 AliTPCReconstructor.h:54
 AliTPCReconstructor.h:55
 AliTPCReconstructor.h:56
 AliTPCReconstructor.h:57
 AliTPCReconstructor.h:58
 AliTPCReconstructor.h:59
 AliTPCReconstructor.h:60
 AliTPCReconstructor.h:61
 AliTPCReconstructor.h:62