Bug correction
[u/mrichter/AliRoot.git] / STEER / AliReconstruction.h
CommitLineData
596a855f 1#ifndef ALIRECONSTRUCTION_H
2#define ALIRECONSTRUCTION_H
3/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
5
6/* $Id$ */
7
af7ba10c 8///////////////////////////////////////////////////////////////////////////////
9// //
10// class for running the reconstruction //
11// Clusters and tracks are created for all detectors and all events by //
12// typing: //
13// //
14// AliReconstruction rec; //
15// rec.Run(); //
16// //
17///////////////////////////////////////////////////////////////////////////////
18
19
596a855f 20#include <TNamed.h>
21#include <TString.h>
59697224 22#include <TObjArray.h>
c757bafd 23#include "AliReconstructor.h"
24#include "AliDetector.h"
596a855f 25
26class AliRunLoader;
b649205a 27class AliRawReader;
596a855f 28class AliLoader;
2257f27e 29class AliVertexer;
596a855f 30class AliTracker;
31class AliESD;
e583c30d 32class TFile;
596a855f 33
34
35class AliReconstruction: public TNamed {
36public:
e583c30d 37 AliReconstruction(const char* gAliceFilename = "galice.root",
38 const char* name = "AliReconstruction",
596a855f 39 const char* title = "reconstruction");
40 AliReconstruction(const AliReconstruction& rec);
41 AliReconstruction& operator = (const AliReconstruction& rec);
42 virtual ~AliReconstruction();
43
44 void SetGAliceFile(const char* fileName);
b649205a 45 void SetInput(const char* input) {fInput = input;};
efd2085e 46 void SetOption(const char* detector, const char* option);
596a855f 47
59697224 48 void SetRunLocalReconstruction(const char* detectors) {
49 fRunLocalReconstruction = detectors;};
2257f27e 50 void SetRunVertexFinder(Bool_t run) {fRunVertexFinder = run;};
596a855f 51 void SetRunTracking(Bool_t run) {fRunTracking = run;};
52 void SetFillESD(const char* detectors) {fFillESD = detectors;};
53
24f7a148 54 void SetStopOnError(Bool_t stopOnError)
55 {fStopOnError = stopOnError;}
56 void SetCheckPointLevel(Int_t checkPointLevel)
57 {fCheckPointLevel = checkPointLevel;}
58
b649205a 59 virtual Bool_t Run(const char* input = NULL);
596a855f 60
61private:
c757bafd 62 class AliDummyReconstructor: public AliReconstructor {
63 public:
64 AliDummyReconstructor(AliDetector* detector) {fDetector = detector;};
65 virtual ~AliDummyReconstructor() {};
66
67 virtual void Reconstruct(AliRunLoader* /*runLoader*/) const
68 {fDetector->Reconstruct();};
69 virtual AliVertexer* CreateVertexer(AliRunLoader* /*runLoader*/) const
70 {return fDetector->CreateVertexer();}
71 virtual AliTracker* CreateTracker(AliRunLoader* /*runLoader*/) const
72 {return fDetector->CreateTracker();}
73 virtual void FillESD(AliRunLoader* /*runLoader*/, AliESD* esd) const
74 {fDetector->FillESD(esd);};
75
76 virtual const char* GetDetectorName() const
77 {return fDetector->GetName();};
78 private:
af7ba10c 79 AliDummyReconstructor(const AliDummyReconstructor &drc):
80 AliReconstructor(drc)
81 {Fatal("copy ctor","Not implemented\n");}
82 AliDummyReconstructor & operator=(const AliDummyReconstructor &)
83 {Fatal("= operator","Not implemented\n"); return *this;}
c757bafd 84 AliDetector* fDetector; // detector object
85 };
86
59697224 87 Bool_t RunLocalReconstruction(const TString& detectors);
2257f27e 88 Bool_t RunVertexFinder(AliESD*& esd);
24f7a148 89 Bool_t RunTracking(AliESD*& esd);
90 Bool_t FillESD(AliESD*& esd, const TString& detectors);
596a855f 91
e583c30d 92 Bool_t IsSelected(TString detName, TString& detectors) const;
c757bafd 93 AliReconstructor* GetReconstructor(const char* detName) const;
2257f27e 94 Bool_t CreateVertexer();
24f7a148 95 Bool_t CreateTrackers();
e583c30d 96 void CleanUp(TFile* file = NULL);
97
24f7a148 98 Bool_t ReadESD(AliESD*& esd, const char* recStep) const;
99 void WriteESD(AliESD* esd, const char* recStep) const;
100
59697224 101 TString fRunLocalReconstruction; // run the local reconstruction for these detectors
2257f27e 102 Bool_t fRunVertexFinder; // run the vertex finder
596a855f 103 Bool_t fRunTracking; // run the barrel tracking
104 TString fFillESD; // fill ESD for these detectors
596a855f 105 TString fGAliceFileName; // name of the galice file
b649205a 106 TString fInput; // name of input file or directory
e583c30d 107 Bool_t fStopOnError; // stop or continue on errors
24f7a148 108 Int_t fCheckPointLevel; // level of ESD check points
596a855f 109
110 AliRunLoader* fRunLoader; //! current run loader object
b649205a 111 AliRawReader* fRawReader; //! current raw data reader
596a855f 112 AliLoader* fITSLoader; //! loader for ITS
2257f27e 113 AliVertexer* fITSVertexer; //! vertexer for ITS
596a855f 114 AliTracker* fITSTracker; //! tracker for ITS
115 AliLoader* fTPCLoader; //! loader for TPC
116 AliTracker* fTPCTracker; //! tracker for TPC
117 AliLoader* fTRDLoader; //! loader for TRD
118 AliTracker* fTRDTracker; //! tracker for TRD
119 AliLoader* fTOFLoader; //! loader for TOF
120 AliTracker* fTOFTracker; //! tracker for TOF
23904d16 121 AliLoader* fPHOSLoader; //! loader for PHOS
122 AliTracker* fPHOSTracker; //! tracker for PHOS
123 AliLoader* fEMCALLoader; //! loader for EMCAL
124 AliTracker* fEMCALTracker; //! tracker for EMCAL
8250d5f5 125 AliLoader* fRICHLoader; //! loader for RICH
126 AliTracker* fRICHTracker; //! tracker for RICH
596a855f 127
482070f2 128 static const Int_t fgkNDetectors = 15; //! number of detectors
c757bafd 129 static const char* fgkDetectorName[fgkNDetectors]; //! names of detectors
59697224 130 TObjArray fReconstructors; //! array of reconstructor objects
efd2085e 131 TObjArray fOptions; // options for reconstructor objects
59697224 132
b649205a 133 ClassDef(AliReconstruction, 2) // class for running the reconstruction
596a855f 134};
135
136#endif