]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STEER/STEER/AliAlignmentTracks.h
results of prev. event reco were not reset in chain processing mode
[u/mrichter/AliRoot.git] / STEER / STEER / AliAlignmentTracks.h
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 class TChain;
12 class TSelector;
13 class TFile;
14 class TTree;
15 class TArrayI;
16 class AliTrackPointArray;
17 class AliAlignObj;
18 class AliTrackFitter;
19 class AliTrackResiduals;
20
21 #include <TObject.h>
22 #include "AliAlignObj.h"
23
24
25 class AliAlignmentTracks : public TObject {
26
27  public:
28
29   AliAlignmentTracks();
30   AliAlignmentTracks(TChain *esdchain);
31   AliAlignmentTracks(const char *esdfilename, const char *esdtreename = "esdTree");
32   virtual ~AliAlignmentTracks();
33
34   void AddESD(TChain *esdchain);
35   void AddESD(const char *esdfilename, const char *esdtreename = "esdTree");
36
37   void SetPointsFilename(const char *pointsfilename = "AliTrackPoints.root") { fPointsFilename = pointsfilename; }
38
39   void ProcessESD(TSelector *selector);
40   void ProcessESD(Bool_t onlyITS=kFALSE,Int_t minITSpts=0,
41                   Bool_t cuts=kTRUE,
42                   Float_t minAngleWrtITSModulePlanes=0.,
43                   Float_t minMom=0.3,Float_t maxMom=1.e9,
44                   Float_t minAbsSinPhi=0.,Float_t maxAbsSinPhi=1.,
45                   Float_t minSinTheta=0.,Float_t maxSinTheta=1.);
46   void ProcessESDCosmics(Bool_t onlyITS=kFALSE,Int_t minITSpts=0,
47                          Float_t maxMatchingAngle=0.17, // 10 deg
48                          Bool_t cuts=kTRUE,
49                          Float_t minAngleWrtITSModulePlanes=0.,
50                          Float_t minMom=0.3,Float_t maxMom=1.e9,
51                          Float_t minAbsSinPhi=0.,Float_t maxAbsSinPhi=1.,
52                          Float_t minSinTheta=0.,Float_t maxSinTheta=1.);
53
54   void BuildIndex();
55
56   Bool_t ReadAlignObjs(const char *alignObjFileName = "AlignObjs.root", const char* arrayName = "Alignment");
57
58   void SetTrackFitter(AliTrackFitter *fitter) { fTrackFitter = fitter; }
59   void SetMinimizer(AliTrackResiduals *minimizer) { fMinimizer = minimizer; }
60
61   Bool_t AlignDetector(AliGeomManager::ELayerID firstLayer,
62                        AliGeomManager::ELayerID lastLayer,
63                        AliGeomManager::ELayerID layerRangeMin = AliGeomManager::kFirstLayer,
64                        AliGeomManager::ELayerID layerRangeMax = AliGeomManager::kLastLayer,Int_t iterations = 1);
65   Bool_t AlignLayer(AliGeomManager::ELayerID layer,
66                     AliGeomManager::ELayerID layerRangeMin = AliGeomManager::kFirstLayer,
67                     AliGeomManager::ELayerID layerRangeMax = AliGeomManager::kLastLayer,
68                     Int_t iterations = 1);
69   Bool_t AlignVolume(UShort_t volId, UShort_t volIdFit,
70                      Int_t iterations);
71   Bool_t AlignVolumes(const TArrayI *volids, const TArrayI *volidsfit = 0x0,
72                       AliGeomManager::ELayerID layerRangeMin = AliGeomManager::kFirstLayer,
73                       AliGeomManager::ELayerID layerRangeMax = AliGeomManager::kLastLayer,
74                       Int_t iterations = 1);
75
76   AliAlignObj* GetAlignObj(UShort_t volid) const {
77     Int_t iModule;
78     AliGeomManager::ELayerID iLayer = AliGeomManager::VolUIDToLayer(volid,iModule);
79     return fAlignObjs[iLayer-AliGeomManager::kFirstLayer][iModule];
80   }
81   void    SetUpdate(Bool_t update){fDoUpdate = update;}
82   void SetCovIsUsed(Bool_t covisused){fCovIsUsed=covisused;}
83   Bool_t  GetUpdate() const { return fDoUpdate;}
84   void WriteRealignObjArray(TString outfilename,AliGeomManager::ELayerID layerRangeMin,AliGeomManager::ELayerID layerRangeMax);
85   Int_t GetLastIndex(Int_t iLayer,Int_t iModule) const { return fLastIndex[iLayer][iModule]; }  
86
87   Bool_t Misalign(const char *misalignObjFileName, const char* arrayName);
88
89  protected:
90
91   void InitIndex();
92   void ResetIndex();
93   void DeleteIndex();
94
95   void InitAlignObjs();
96   void ResetAlignObjs();
97   void DeleteAlignObjs();
98
99   Int_t LoadPoints(const TArrayI *volids, AliTrackPointArray** &points,Int_t &pointsdim);
100   void  UnloadPoints(Int_t n, AliTrackPointArray **points);
101
102   AliTrackFitter *CreateFitter();
103   AliTrackResiduals *CreateMinimizer();
104
105   TChain           *fESDChain;       //! Chain with ESDs
106   TString           fPointsFilename; //  Name of the file containing the track point arrays
107   TFile            *fPointsFile;     //  File containing the track point arrays
108   TTree            *fPointsTree;     //  Tree with the track point arrays
109   Int_t           **fLastIndex;      //! Last filled index in volume arrays
110   TArrayI        ***fArrayIndex;     //! Volume arrays which contains the tree index
111   Bool_t            fIsIndexBuilt;   //  Is points tree index built
112   AliAlignObj    ***fAlignObjs;      //  Array with alignment objects
113   AliAlignObj    ***fMisalignObjs;   //  Array with alignment objects used to introduce misalignment of the space-points
114   AliTrackFitter   *fTrackFitter;    //  Pointer to the track fitter
115   AliTrackResiduals*fMinimizer;      //  Pointer to track residuals minimizer
116   Bool_t            fDoUpdate;       //  Indicator - update Alignment object after minimization
117   Bool_t            fCovIsUsed;      //  Indicator - use AlignObjs' Cov matrices
118
119  private:
120   AliAlignmentTracks(const AliAlignmentTracks & alignment);
121   AliAlignmentTracks& operator= (const AliAlignmentTracks& alignment);
122
123   ClassDef(AliAlignmentTracks,2)
124
125 };
126
127 #endif