]>
Commit | Line | Data |
---|---|---|
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 | ||
98937d93 | 11 | class TChain; |
0e37fcb7 | 12 | class TSelector; |
13 | class TFile; | |
14 | class TTree; | |
15 | class TArrayI; | |
98937d93 | 16 | class AliTrackPointArray; |
17 | class AliAlignObj; | |
18 | class AliTrackFitter; | |
19 | class AliTrackResiduals; | |
20 | ||
0e37fcb7 | 21 | #include <TObject.h> |
22 | #include "AliAlignObj.h" | |
23 | ||
24 | ||
98937d93 | 25 | class AliAlignmentTracks : public TObject { |
26 | ||
27 | public: | |
28 | ||
29 | AliAlignmentTracks(); | |
30 | AliAlignmentTracks(TChain *esdchain); | |
31 | AliAlignmentTracks(const char *esdfilename, const char *esdtreename = "esdTree"); | |
98937d93 | 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); | |
babbb915 | 40 | void ProcessESD(Bool_t onlyITS=kFALSE,Int_t minITSpts=0, |
41 | Bool_t cuts=kTRUE, | |
d6116b3f | 42 | Float_t minAngleWrtITSModulePlanes=0., |
9a1304f0 | 43 | Float_t minMom=0.3,Float_t maxMom=1.e9, |
babbb915 | 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, | |
9a1304f0 | 47 | Float_t maxMatchingAngle=0.17, // 10 deg |
48 | Bool_t cuts=kTRUE, | |
d6116b3f | 49 | Float_t minAngleWrtITSModulePlanes=0., |
9a1304f0 | 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.); | |
98937d93 | 53 | |
54 | void BuildIndex(); | |
98937d93 | 55 | |
46ae650f | 56 | Bool_t ReadAlignObjs(const char *alignObjFileName = "AlignObjs.root", const char* arrayName = "Alignment"); |
98937d93 | 57 | |
58 | void SetTrackFitter(AliTrackFitter *fitter) { fTrackFitter = fitter; } | |
59 | void SetMinimizer(AliTrackResiduals *minimizer) { fMinimizer = minimizer; } | |
60 | ||
6fdedff6 | 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); | |
98937d93 | 75 | |
cc345ce3 | 76 | AliAlignObj* GetAlignObj(UShort_t volid) const { |
77 | Int_t iModule; | |
25be1e5c | 78 | AliGeomManager::ELayerID iLayer = AliGeomManager::VolUIDToLayer(volid,iModule); |
79 | return fAlignObjs[iLayer-AliGeomManager::kFirstLayer][iModule]; | |
cc345ce3 | 80 | } |
91264393 | 81 | void SetUpdate(Bool_t update){fDoUpdate = update;} |
6b7c7eba | 82 | void SetCovIsUsed(Bool_t covisused){fCovIsUsed=covisused;} |
91264393 | 83 | Bool_t GetUpdate() const { return fDoUpdate;} |
193b509e | 84 | void WriteRealignObjArray(TString outfilename,AliGeomManager::ELayerID layerRangeMin,AliGeomManager::ELayerID layerRangeMax); |
6d210c37 | 85 | Int_t GetLastIndex(Int_t iLayer,Int_t iModule) const { return fLastIndex[iLayer][iModule]; } |
86 | ||
52338825 | 87 | Bool_t Misalign(const char *misalignObjFileName, const char* arrayName); |
88 | ||
98937d93 | 89 | protected: |
90 | ||
91 | void InitIndex(); | |
92 | void ResetIndex(); | |
93 | void DeleteIndex(); | |
94 | ||
95 | void InitAlignObjs(); | |
96 | void ResetAlignObjs(); | |
97 | void DeleteAlignObjs(); | |
98 | ||
a5b84e94 | 99 | Int_t LoadPoints(const TArrayI *volids, AliTrackPointArray** &points,Int_t &pointsdim); |
98937d93 | 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 | |
46ae650f | 113 | AliAlignObj ***fMisalignObjs; // Array with alignment objects used to introduce misalignment of the space-points |
98937d93 | 114 | AliTrackFitter *fTrackFitter; // Pointer to the track fitter |
115 | AliTrackResiduals*fMinimizer; // Pointer to track residuals minimizer | |
91264393 | 116 | Bool_t fDoUpdate; // Indicator - update Alignment object after minimization |
6b7c7eba | 117 | Bool_t fCovIsUsed; // Indicator - use AlignObjs' Cov matrices |
75e3794b | 118 | |
119 | private: | |
120 | AliAlignmentTracks(const AliAlignmentTracks & alignment); | |
121 | AliAlignmentTracks& operator= (const AliAlignmentTracks& alignment); | |
122 | ||
91264393 | 123 | ClassDef(AliAlignmentTracks,2) |
98937d93 | 124 | |
125 | }; | |
126 | ||
127 | #endif |