]>
Commit | Line | Data |
---|---|---|
1 | #ifndef ALIITSREALIGNTRACKS_H | |
2 | #define ALIITSREALIGNTRACKS_H | |
3 | ||
4 | ||
5 | //Class to perform the realignment if the Inner Tracking System | |
6 | //with an iterative approach based on track to cluster residuals | |
7 | // minimization. More details in .cxx file | |
8 | // | |
9 | //Class by: A. Rossi, andrea,rossi@ts.infn.it | |
10 | ||
11 | ||
12 | #include "AliGeomManager.h" | |
13 | #include "AliAlignmentTracks.h" | |
14 | ||
15 | class TArray; | |
16 | class TGraph; | |
17 | class TCanvas; | |
18 | class TArray; | |
19 | class TFile; | |
20 | class AliAlignObjParams; | |
21 | ||
22 | ||
23 | /* $Id$ */ | |
24 | ||
25 | ||
26 | class AliITSRealignTracks: public AliAlignmentTracks { | |
27 | public: | |
28 | ||
29 | AliITSRealignTracks(): | |
30 | AliAlignmentTracks(), | |
31 | fSurveyObjs(0), | |
32 | fgeomfilename(), | |
33 | fmintracks(0), | |
34 | fUpdateCov(kFALSE), | |
35 | fVarySigmaY(kFALSE), | |
36 | fCorrModules(0), | |
37 | fLimitCorr(0.), | |
38 | fsigmaY(), | |
39 | fDraw(kFALSE), | |
40 | fAlignDrawObjs(0), | |
41 | fCanvPar(0), | |
42 | fCanvGr(0), | |
43 | fgrIterMeanX(0), | |
44 | fgrIterRMSX(0), | |
45 | fgrIterMeanY(0), | |
46 | fgrIterRMSY(0), | |
47 | fgrIterMeanZ(0), | |
48 | fgrIterRMSZ(0), | |
49 | fgrIterMeanPsi(0), | |
50 | fgrIterRMSPsi(0), | |
51 | fgrIterMeanTheta(0), | |
52 | fgrIterRMSTheta(0), | |
53 | fgrIterMeanPhi(0), | |
54 | fgrIterRMSPhi(0) | |
55 | {SetCovIsUsed(kFALSE);} | |
56 | ||
57 | AliITSRealignTracks(TString minimizer,Int_t fit=0,Bool_t covUsed=kFALSE,TString fileintro="AliTrackPoints.root",TString geometryfile="geometry.root",TString misalignmentFile="",TString startingfile=""); | |
58 | AliITSRealignTracks(const AliITSRealignTracks &realignTracks); | |
59 | AliITSRealignTracks& operator=(const AliITSRealignTracks& obj); | |
60 | ~AliITSRealignTracks(); | |
61 | ||
62 | void InitAlignObjs(); | |
63 | Bool_t InitSurveyObjs(Bool_t infinite=kFALSE,Double_t factor=1.,TString filename="",TString arrayName=""); | |
64 | void ResetAlignObjs(Bool_t all,TArrayI *volids=0x0); | |
65 | void ResetCorrModules(); | |
66 | void DeleteSurveyObjs(); | |
67 | void SetLimitCorr(Double_t limit=0.1){fLimitCorr=limit;} | |
68 | Int_t CheckWithSurvey(Double_t factor=2.,const TArrayI *volids=0x0); | |
69 | Bool_t SelectFitter(Int_t fit,Int_t minTrackPoint=2); | |
70 | Bool_t SelectMinimizer(TString minimizer,Int_t minpoints=1,const Bool_t *coord=0x0); | |
71 | void SetMinNtracks(Int_t minNtracks){fmintracks=minNtracks;} | |
72 | void SetCovUpdate(Bool_t covupdate){fUpdateCov=covupdate;} | |
73 | void SetVarySigmaY(Bool_t varysigmay,Double_t sigmaYfixed=1.); | |
74 | void SetGeomFilename(TString geomfilename){fgeomfilename=geomfilename;} | |
75 | // Int_t LoadPoints(const TArrayI *volids, AliTrackPointArray** &points); | |
76 | Bool_t ReadAlignObjs(const char *alignObjFileName = "AlignObjs.root", const char* arrayName = "Alignment"); | |
77 | void RealignITSVolIndependent(Int_t iter1,Int_t iterations,Int_t minNtracks,Int_t layer=0,Int_t minTrackPoint=6); | |
78 | void RealignITStracks(TString minimizer,Int_t fit,Int_t iter1,Int_t iterations,Int_t minNtracks,Int_t layer,Int_t minTrackPoint,Bool_t covUsed,TString misalignmentFile,TString startingfile,Int_t doGlobal); | |
79 | Bool_t AlignVolumesITS(const TArrayI *volids, const TArrayI *volidsfit,AliGeomManager::ELayerID layerRangeMin,AliGeomManager::ELayerID layerRangeMax,Int_t iterations); | |
80 | Bool_t FirstAlignmentSPD(Int_t minNtracks,Int_t iterations,Bool_t fitall=kTRUE,const TArrayI *volidsSet=0x0); | |
81 | Bool_t FirstAlignmentLayers(const Bool_t *layers,Int_t minNtracks,Int_t iterations,Bool_t fitall=kTRUE,const TArrayI *volidsSet=0x0); | |
82 | Bool_t SPDmodulesAlignToSSD(Int_t minNtracks,Int_t iterations); | |
83 | Bool_t AlignSPDBarrel(Int_t iterations); | |
84 | Bool_t AlignSPDHalfBarrel(Int_t method,Int_t iterations); | |
85 | Bool_t AlignLayer(Int_t layer,Int_t iterations); | |
86 | Bool_t AlignLayersToLayers(const Int_t *layer,Int_t iterations); | |
87 | Bool_t AlignLayerToSPDHalfBarrel(Int_t layer,Int_t updown,Int_t iterations); | |
88 | Bool_t AlignLayerToSector(Int_t layer,Int_t sector,Int_t iterations); | |
89 | Bool_t AlignSPDSectorToOuterLayers(Int_t sector,Int_t iterations); | |
90 | Bool_t AlignSPDSectorWithSectors(Int_t sector,Int_t iterations); | |
91 | Bool_t AlignSPDSectorsWithSectors(const Int_t *sectorIN,const Int_t *sectorFit,Int_t iterations); | |
92 | Bool_t AlignSPDStaves(const Int_t *staves,const Int_t *sectorsIN,const Int_t *sectorsFit,Int_t iterations); | |
93 | Bool_t AlignSPDHalfBarrelToHalfBarrel(Int_t updown,Int_t iterations); | |
94 | Bool_t AlignSPDHalfBarrelToSectorRef(Int_t sector,Int_t iterations); | |
95 | Bool_t AlignSPD1SectorRef(Int_t sector,Int_t iterations); | |
96 | //masera void AlignGlobalToSectRef(Int_t sector,Int_t minNtracks=100); | |
97 | TArrayI* GetLayersVolUID(const Int_t *layer); | |
98 | AliAlignObjParams* MediateAlignObj(const TArrayI *volIDs,Int_t lastVolid); | |
99 | TArrayI* GetSPDSectorsVolids(const Int_t *sectors); | |
100 | TArrayI* GetSPDStavesVolids(const Int_t *sectors,const Int_t* staves); | |
101 | TArrayI* SelectLayerInVolids(const TArrayI *volidsIN,AliGeomManager::ELayerID layer); | |
102 | TArrayI* JoinVolArrays(const TArrayI *vol1,const TArrayI *vol2); | |
103 | TArrayI* IntersectVolArray(const TArrayI *vol1,const TArrayI *vol2); | |
104 | TArrayI* ExcludeVolidsFromVolidsArray(const TArrayI *volidsToExclude,const TArrayI *volStart); | |
105 | TArrayI* GetLayerVolumes(const Int_t *layer); | |
106 | TArrayI* GetAlignedVolumes(char *filename); | |
107 | /* void AlignGlobalToSectRef(Int_t sector,Int_t minNtracks=100); | |
108 | AliAlignObjParams* MediateAlignObjs(AliAlignObj **alObjs,Int_t nObjs,const Bool_t *coords=0x0,TArrayI *volidArray=0x0,Bool_t local=kFALSE,const char* geometryfile=0x0); | |
109 | Bool_t MediateSectorsVolumes(char *filename,Bool_t local=kFALSE,char *geometryfile=0x0,Bool_t *coord=0x0); | |
110 | */ | |
111 | void InitDrawHists(); | |
112 | void SetDraw(Bool_t draw,Bool_t refresh); | |
113 | void UpdateDraw(TArrayI *volids,Int_t iter,Int_t color); | |
114 | void DeleteDrawHists(); | |
115 | void WriteHists(const char *outfile); | |
116 | ||
117 | private: | |
118 | ||
119 | AliAlignObj ***fSurveyObjs; // Array with survey measurments | |
120 | TString fgeomfilename; // Geometry file name | |
121 | Int_t fmintracks; // minimum number of tracks to realign a set of volumes | |
122 | Bool_t fUpdateCov; // Update of Covariance for AlignObjs | |
123 | Bool_t fVarySigmaY; // If kTRUE the "sigmaY" parameter is changed accordingly to alignObj error | |
124 | Double_t **fCorrModules; // Used to reduce correlations between modules | |
125 | Double_t fLimitCorr; // Maximum number of tracks shared between modules | |
126 | Double_t fsigmaY; // sigmaY parameter | |
127 | Bool_t fDraw; // flag to activate draw objects | |
128 | AliAlignObj ***fAlignDrawObjs; //Array with reference objects for histograms | |
129 | TCanvas *fCanvPar; //Canvas with iterations distributions | |
130 | TCanvas *fCanvGr; //Canvas with iterations results | |
131 | TGraph *fgrIterMeanX; // graph of Delta X | |
132 | TGraph *fgrIterRMSX; // graph of RMS X | |
133 | TGraph *fgrIterMeanY; // graph of Delta Y | |
134 | TGraph *fgrIterRMSY; // graph of RMS Y | |
135 | TGraph *fgrIterMeanZ; // graph of DeltaZ | |
136 | TGraph *fgrIterRMSZ; // TGraphs for displaying results during iterations | |
137 | TGraph *fgrIterMeanPsi; // graphs during iterations | |
138 | TGraph *fgrIterRMSPsi; // graphs during iterations | |
139 | TGraph *fgrIterMeanTheta; // graphs during iterations | |
140 | TGraph *fgrIterRMSTheta; // graphs during iterations | |
141 | TGraph *fgrIterMeanPhi; // graphs during iterations | |
142 | TGraph *fgrIterRMSPhi; // graphs during iterations | |
143 | ||
144 | ClassDef(AliITSRealignTracks,3) | |
145 | ||
146 | }; | |
147 | ||
148 | #endif |