Alignment framework (C.Cheshkov). More information is available in http://agenda...
[u/mrichter/AliRoot.git] / STEER / AliAlignmentTracks.h
CommitLineData
98937d93 1#ifndef ALIALIGNMENTTRACKS_H
2#define ALIALIGNMENTTRACKS_H
3
4//*************************************************************************
5// AliAlignmentTracks: main steering class which deals with the alignment *
6// procedures based on reconstructed tracks. *
7// More comments will come with the development of the interfaces and *
8// functionalities of the class. *
9//*************************************************************************
10
11#include <TObject.h>
12
13#include "AliAlignObj.h"
14
15class TChain;
16class AliTrackPointArray;
17class AliAlignObj;
18class AliTrackFitter;
19class AliTrackResiduals;
20
21class AliAlignmentTracks : public TObject {
22
23 public:
24
25 AliAlignmentTracks();
26 AliAlignmentTracks(TChain *esdchain);
27 AliAlignmentTracks(const char *esdfilename, const char *esdtreename = "esdTree");
28 AliAlignmentTracks(const AliAlignmentTracks & alignment);
29 AliAlignmentTracks& operator= (const AliAlignmentTracks& alignment);
30 virtual ~AliAlignmentTracks();
31
32 void AddESD(TChain *esdchain);
33 void AddESD(const char *esdfilename, const char *esdtreename = "esdTree");
34
35 void SetPointsFilename(const char *pointsfilename = "AliTrackPoints.root") { fPointsFilename = pointsfilename; }
36
37 void ProcessESD(TSelector *selector);
38 void ProcessESD();
39
40 void BuildIndex();
41/* void BuildIndexLayer(AliAlignObj::ELayerID layer); */
42/* void BuildIndexVolume(UShort_t volid); */
43
44 Bool_t ReadAlignObjs(const char *alignobjfilename = "AlignObjs.root");
45
46 void SetTrackFitter(AliTrackFitter *fitter) { fTrackFitter = fitter; }
47 void SetMinimizer(AliTrackResiduals *minimizer) { fMinimizer = minimizer; }
48
49 void Align(Int_t iterations = 100);
50 void AlignLayer(AliAlignObj::ELayerID layer,
51 AliAlignObj::ELayerID layerRangeMin = AliAlignObj::kFirstLayer,
52 AliAlignObj::ELayerID layerRangeMax = AliAlignObj::kLastLayer,
53 Int_t iterations = 1);
54 void AlignVolume(UShort_t volid,
55 AliAlignObj::ELayerID layerRangeMin = AliAlignObj::kFirstLayer,
56 AliAlignObj::ELayerID layerRangeMax = AliAlignObj::kLastLayer);
57
58 protected:
59
60 void InitIndex();
61 void ResetIndex();
62 void DeleteIndex();
63
64 void InitAlignObjs();
65 void ResetAlignObjs();
66 void DeleteAlignObjs();
67
68 Int_t LoadPoints(UShort_t volid, AliTrackPointArray** &points);
69 void UnloadPoints(Int_t n, AliTrackPointArray **points);
70
71 AliTrackFitter *CreateFitter();
72 AliTrackResiduals *CreateMinimizer();
73
74 TChain *fESDChain; //! Chain with ESDs
75 TString fPointsFilename; // Name of the file containing the track point arrays
76 TFile *fPointsFile; // File containing the track point arrays
77 TTree *fPointsTree; // Tree with the track point arrays
78 Int_t **fLastIndex; //! Last filled index in volume arrays
79 TArrayI ***fArrayIndex; //! Volume arrays which contains the tree index
80 Bool_t fIsIndexBuilt; // Is points tree index built
81 AliAlignObj ***fAlignObjs; // Array with alignment objects
82 AliTrackFitter *fTrackFitter; // Pointer to the track fitter
83 AliTrackResiduals*fMinimizer; // Pointer to track residuals minimizer
84
85 ClassDef(AliAlignmentTracks,1)
86
87};
88
89#endif