#ifndef ALIITSREALIGNTRACKS_H
#define ALIITSREALIGNTRACKS_H
#include "AliGeomManager.h"
#include "AliAlignmentTracks.h"
class TArray;
class TGraph;
class TCanvas;
class TArray;
class TFile;
class AliAlignObjParams;
class AliITSRealignTracks: public AliAlignmentTracks {
public:
AliITSRealignTracks():
AliAlignmentTracks(),
fSurveyObjs(0),
fgeomfilename(),
fmintracks(0),
fUpdateCov(kFALSE),
fVarySigmaY(kFALSE),
fCorrModules(0),
fLimitCorr(0.),
fsigmaY(),
fDraw(kFALSE),
fAlignDrawObjs(0),
fCanvPar(0),
fCanvGr(0),
fgrIterMeanX(0),
fgrIterRMSX(0),
fgrIterMeanY(0),
fgrIterRMSY(0),
fgrIterMeanZ(0),
fgrIterRMSZ(0),
fgrIterMeanPsi(0),
fgrIterRMSPsi(0),
fgrIterMeanTheta(0),
fgrIterRMSTheta(0),
fgrIterMeanPhi(0),
fgrIterRMSPhi(0)
{SetCovIsUsed(kFALSE);}
AliITSRealignTracks(TString minimizer,Int_t fit=0,Bool_t covUsed=kFALSE,TString fileintro="AliTrackPoints.root",TString geometryfile="geometry.root",TString misalignmentFile="",TString startingfile="");
AliITSRealignTracks(const AliITSRealignTracks &realignTracks);
AliITSRealignTracks& operator=(const AliITSRealignTracks& obj);
~AliITSRealignTracks();
void InitAlignObjs();
Bool_t InitSurveyObjs(Bool_t infinite=kFALSE,Double_t factor=1.,TString filename="",TString arrayName="");
void ResetAlignObjs(Bool_t all,TArrayI *volids=0x0);
void ResetCorrModules();
void DeleteSurveyObjs();
void SetLimitCorr(Double_t limit=0.1){fLimitCorr=limit;}
Int_t CheckWithSurvey(Double_t factor=2.,const TArrayI *volids=0x0);
Bool_t SelectFitter(Int_t fit,Int_t minTrackPoint=2);
Bool_t SelectMinimizer(TString minimizer,Int_t minpoints=1,const Bool_t *coord=0x0);
void SetMinNtracks(Int_t minNtracks){fmintracks=minNtracks;}
void SetCovUpdate(Bool_t covupdate){fUpdateCov=covupdate;}
void SetVarySigmaY(Bool_t varysigmay,Double_t sigmaYfixed=1.);
void SetGeomFilename(TString geomfilename){fgeomfilename=geomfilename;}
Bool_t ReadAlignObjs(const char *alignObjFileName = "AlignObjs.root", const char* arrayName = "Alignment");
void RealignITSVolIndependent(Int_t iter1,Int_t iterations,Int_t minNtracks,Int_t layer=0,Int_t minTrackPoint=6);
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);
Bool_t AlignVolumesITS(const TArrayI *volids, const TArrayI *volidsfit,AliGeomManager::ELayerID layerRangeMin,AliGeomManager::ELayerID layerRangeMax,Int_t iterations);
Bool_t FirstAlignmentSPD(Int_t minNtracks,Int_t iterations,Bool_t fitall=kTRUE,const TArrayI *volidsSet=0x0);
Bool_t FirstAlignmentLayers(const Bool_t *layers,Int_t minNtracks,Int_t iterations,Bool_t fitall=kTRUE,const TArrayI *volidsSet=0x0);
Bool_t SPDmodulesAlignToSSD(Int_t minNtracks,Int_t iterations);
Bool_t AlignSPDBarrel(Int_t iterations);
Bool_t AlignSPDHalfBarrel(Int_t method,Int_t iterations);
Bool_t AlignLayer(Int_t layer,Int_t iterations);
Bool_t AlignLayersToLayers(const Int_t *layer,Int_t iterations);
Bool_t AlignLayerToSPDHalfBarrel(Int_t layer,Int_t updown,Int_t iterations);
Bool_t AlignLayerToSector(Int_t layer,Int_t sector,Int_t iterations);
Bool_t AlignSPDSectorToOuterLayers(Int_t sector,Int_t iterations);
Bool_t AlignSPDSectorWithSectors(Int_t sector,Int_t iterations);
Bool_t AlignSPDSectorsWithSectors(const Int_t *sectorIN,const Int_t *sectorFit,Int_t iterations);
Bool_t AlignSPDStaves(const Int_t *staves,const Int_t *sectorsIN,const Int_t *sectorsFit,Int_t iterations);
Bool_t AlignSPDHalfBarrelToHalfBarrel(Int_t updown,Int_t iterations);
Bool_t AlignSPDHalfBarrelToSectorRef(Int_t sector,Int_t iterations);
Bool_t AlignSPD1SectorRef(Int_t sector,Int_t iterations);
TArrayI* GetLayersVolUID(const Int_t *layer);
AliAlignObjParams* MediateAlignObj(const TArrayI *volIDs,Int_t lastVolid);
TArrayI* GetSPDSectorsVolids(const Int_t *sectors);
TArrayI* GetSPDStavesVolids(const Int_t *sectors,const Int_t* staves);
TArrayI* SelectLayerInVolids(const TArrayI *volidsIN,AliGeomManager::ELayerID layer);
TArrayI* JoinVolArrays(const TArrayI *vol1,const TArrayI *vol2);
TArrayI* IntersectVolArray(const TArrayI *vol1,const TArrayI *vol2);
TArrayI* ExcludeVolidsFromVolidsArray(const TArrayI *volidsToExclude,const TArrayI *volStart);
TArrayI* GetLayerVolumes(const Int_t *layer);
TArrayI* GetAlignedVolumes(char *filename);
void InitDrawHists();
void SetDraw(Bool_t draw,Bool_t refresh);
void UpdateDraw(TArrayI *volids,Int_t iter,Int_t color);
void DeleteDrawHists();
void WriteHists(const char *outfile);
private:
AliAlignObj ***fSurveyObjs;
TString fgeomfilename;
Int_t fmintracks;
Bool_t fUpdateCov;
Bool_t fVarySigmaY;
Double_t **fCorrModules;
Double_t fLimitCorr;
Double_t fsigmaY;
Bool_t fDraw;
AliAlignObj ***fAlignDrawObjs;
TCanvas *fCanvPar;
TCanvas *fCanvGr;
TGraph *fgrIterMeanX;
TGraph *fgrIterRMSX;
TGraph *fgrIterMeanY;
TGraph *fgrIterRMSY;
TGraph *fgrIterMeanZ;
TGraph *fgrIterRMSZ;
TGraph *fgrIterMeanPsi;
TGraph *fgrIterRMSPsi;
TGraph *fgrIterMeanTheta;
TGraph *fgrIterRMSTheta;
TGraph *fgrIterMeanPhi;
TGraph *fgrIterRMSPhi;
ClassDef(AliITSRealignTracks,3)
};
#endif
AliITSRealignTracks.h:100 AliITSRealignTracks.h:101 AliITSRealignTracks.h:102 AliITSRealignTracks.h:103 AliITSRealignTracks.h:104 AliITSRealignTracks.h:105 AliITSRealignTracks.h:106 AliITSRealignTracks.h:107 AliITSRealignTracks.h:108 AliITSRealignTracks.h:109 AliITSRealignTracks.h:110 AliITSRealignTracks.h:111 AliITSRealignTracks.h:112 AliITSRealignTracks.h:113 AliITSRealignTracks.h:114 AliITSRealignTracks.h:115 AliITSRealignTracks.h:116 AliITSRealignTracks.h:117 AliITSRealignTracks.h:118 AliITSRealignTracks.h:119 AliITSRealignTracks.h:120 AliITSRealignTracks.h:121 AliITSRealignTracks.h:122 AliITSRealignTracks.h:123 AliITSRealignTracks.h:124 AliITSRealignTracks.h:125 AliITSRealignTracks.h:126 AliITSRealignTracks.h:127 AliITSRealignTracks.h:128 AliITSRealignTracks.h:129 AliITSRealignTracks.h:130 AliITSRealignTracks.h:131 AliITSRealignTracks.h:132 AliITSRealignTracks.h:133 AliITSRealignTracks.h:134 AliITSRealignTracks.h:135 AliITSRealignTracks.h:136 AliITSRealignTracks.h:137 AliITSRealignTracks.h:138 AliITSRealignTracks.h:139 AliITSRealignTracks.h:140 AliITSRealignTracks.h:141 AliITSRealignTracks.h:142 AliITSRealignTracks.h:143 AliITSRealignTracks.h:144 AliITSRealignTracks.h:145 AliITSRealignTracks.h:146 AliITSRealignTracks.h:147 AliITSRealignTracks.h:148