]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/AliITSResidualsAnalysis.h
A new method DrawPMDModule is added
[u/mrichter/AliRoot.git] / ITS / AliITSResidualsAnalysis.h
1 #ifndef ALIITSRESIDUALSANALYSIS_H
2 #define ALIITSRESIDUALSANALYSIS_H
3
4 /* Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7
8 //*************************************************************************
9 // AliITSResidualAnalysis: class which deals with the analysis of the     *
10 // tracks residuals in the ITS                                            *
11 // More comments will come with the development of the interfaces and     *
12 // functionalities of the class.                                          *
13 //*************************************************************************
14
15 #include "AliAlignmentTracks.h"
16
17 class TObject;
18 class TCanvas;
19 class TH1F;
20 class TH2F;
21 class TArrayI;
22
23 class AliTrackPointArray;
24 class AliTrackResiduals;
25 class AliAlignObj;
26
27 class AliITSResidualsAnalysis : public AliAlignmentTracks {
28   
29
30  public:
31     
32   AliITSResidualsAnalysis();  
33   AliITSResidualsAnalysis(const TString aliTrackPoints,const TString geom);
34   AliITSResidualsAnalysis(const TArrayI *volIDs);
35   AliITSResidualsAnalysis(TArrayI *volIDs,AliTrackPointArray **tracksClustArray,AliTrackPointArray **tracksFitPointsArray);
36   ~AliITSResidualsAnalysis();
37
38
39   //virtual ~AliITSResidualsAnalysis(){}
40   // void AddArray(AliTrackPointArray *trackClust,AliTrackPoinArray *trackFitPoints);
41
42
43
44   void ListVolUsed(TTree *pointsTree,TArrayI ***arrayIndex,Int_t **lastIndex);
45   void ListVolUsed(){if(!fIsIndexBuilt)return;ListVolUsed(fPointsTree,fArrayIndex,fLastIndex);};
46
47   void  InitHistograms(const TArrayI *volIDs);
48   void FillResHists(AliTrackPointArray *trackClust,AliTrackPointArray *trackFitPoints) const;
49   void  DrawHists() const;
50   Bool_t AnalyzeHists(Int_t minNpoints) const;
51   void FillVolumeCorrelationHists(Int_t ivol,Int_t volIDalignable,Int_t volIDpoint,Bool_t used) const;
52   Bool_t SetBinning(const TArrayI *volids,Float_t *phiBin,Float_t *zBin);
53   Float_t** CheckSingleLayer(const TArrayI *volids);
54   TArrayI* GetSingleLayerVolids(Int_t layer) const;
55   Int_t GetBinPhiZ(const Int_t volID,Int_t *binz) const;
56   void GetTrackDirClusterCov(AliTrackPoint *point,Double_t &phi,Double_t &lambda,Double_t &lambda2,Double_t &alpha,Double_t &xovery,Double_t &zovery) const;
57   void CalculateResiduals(const TArrayI *volids,const TArrayI *volidsfit,AliGeomManager::ELayerID layerRangeMin,AliGeomManager::ELayerID layerRangeMax,Int_t iterations=1,Bool_t draw=kTRUE);
58   void ProcessPoints(TString minimizer="fast",Int_t fit=0,AliGeomManager::ELayerID iLayerToAlign=(AliGeomManager::ELayerID)1,AliGeomManager::ELayerID iLayerToExclude=(AliGeomManager::ELayerID)1,TString misalignmentFile="");
59   void ExtractResiduals(Int_t layer=1,Int_t minEnt=10,TString filename="ResidualsAnalysisTree.root") const;
60   Int_t PlotResiduals(Int_t layer=1,TString filename="resPlot_MA_layer") const;
61   TString GetFileNameTrackPoints() const { return fAliTrackPoints; };
62   TString GetFileNameGeometry() const { return fGeom; };
63   void SetFileNameTrackPoints(TString name) { fAliTrackPoints=name; };
64   void SetFileNameGeometry(TString name) { fGeom=name; };
65
66
67   enum ModulePhiZ{
68     kPhiSPD1=20,
69     kZSPD1=4,
70     kPhiSPD2=40,
71     kZSPD2=4,
72     kPhiSDD1=14,
73     kZSDD1=6,
74     kPhiSDD2=22,
75     kZSDD2=8,
76     kPhiSSD1=34,
77     kZSSD1=22,
78     kPhiSSD2=38,
79     kZSSD2=25
80   };
81
82
83  protected:
84
85   AliITSResidualsAnalysis(const AliITSResidualsAnalysis& /* obj */);
86   AliITSResidualsAnalysis& operator = (const AliITSResidualsAnalysis& obj);
87     
88   Int_t fnHist;    // number of histogram = number of alignable volumes considered
89   Int_t fnPhi;     // coordinate of the volume (Phi)
90   Int_t fnZ;       // coordinate of the volume (Z)
91   Int_t **fvolidsToBin;         // array with volID and bin
92   Int_t *fLastVolVolid;         // Last Vol Volid
93   Double_t ***fCoordToBinTable; // array with coordinate and bin
94   TH1F **fVolResHistRPHI;       //  Histogram of Residuals along Global rphi 
95   TH1F **fResHistZ;             //  Histogram of Residuals along Global Z 
96   TH1F **fPullHistRPHI;         //  Misc Histogram ...
97   TH1F **fPullHistZ;            //  Misc Histogram ...
98   TH1F **fTrackDirPhi;          //  Misc Histogram ...
99   TH1F **fTrackDirLambda;       //  Misc Histogram ...
100   TH1F **fTrackDirLambda2;      //  Misc Histogram ...
101   TH1F **fTrackDirAlpha;        //  Misc Histogram ...
102   TH1F *fTrackDirPhiAll;        //  Misc Histogram ...
103   TH1F *fTrackDirLambdaAll;     //  Misc Histogram ...
104   TH1F *fTrackDirLambda2All;    //  Misc Histogram ...
105   TH1F *fTrackDirAlphaAll;      //  Misc Histogram ...
106   TH2F **fTrackDir;             //  Misc Histogram ...
107   TH2F *fTrackDirAll;           //  Misc Histogram ...
108   TH2F *fTrackDir2All;          //  Misc Histogram ...
109   TH2F *fTrackDirXZAll;         //  Misc Histogram ...
110   TH1F **fResHistGlob;          //  Histogram of Residuals
111   TH2F **fhistCorrVol;          //  Misc Histogram ...
112   TH2F *fVolNTracks;       // Histogram to see how many tracks pass through a given module 
113   TH2F *fhEmpty;           // Histogram to get/set the binning
114   TH2F *fhistVolNptsUsed;  // Histogram with the numer of points used per volume
115   TH2F *fhistVolUsed;      // Histogram with the numer of volumes udes
116   TH2F *fSigmaVolZ;        // Histogram with the sigma vs volume Z
117   Bool_t fsingleLayer;     // Tag for single layer
118   Bool_t fWriteHist;       // Tag for histograms
119   TArrayI *fpTrackVolIDs;  // array that gives the volID for the i^(th) entry 
120   TArrayI **fVolVolids;    // array with the volumes to analyze
121   TArrayI **fVolUsed;      // array with the volumes to use
122   Bool_t fRealignObjFileIsOpen; // indicator- if the file fRealignObjFilename is opened
123   TClonesArray *fClonesArray;   // pointer to the TClonesArray with the final AliAlignObjParams
124   TString fAliTrackPoints;      // Filename with the AliTrackPoints
125   TString fGeom;                // Filename with the Geometry
126
127   ClassDef(AliITSResidualsAnalysis,1) // Residuals analysis for the ITS
128     
129     };
130     
131 #endif
132