ROOT logo
AliRoot » ITS » AliITSRealignTracks

class AliITSRealignTracks: public AliAlignmentTracks

Class to perform the realignment if the Inner Tracking System
with an iterative approach based on track to cluster residuals
 minimization. A chi2 function of the residuals is minimized with
respect to alignment parameters. The class allows both single module
realignment and set of modules realignment. Tracks are fitted with
AliTrackFitter* fitters. AliTrackFitterKalman is more suited for
straight line (e.g. cosmic in the absence of magnetic field) but can't
work with helixes. AliTrackFitterRieman is suited for helixes.
The minimization is performed by AliTrackResiduals* classes: default
one is AliTrackResidualsFast (analytic minimization by inversion).
For numerical minimization using MINUIT, use AliTrackResidualChi2.
Methods are present to defined both the set of modules where the tracks
are fittef and the set of modules which  are to be realigned
The main method is  AlignVolumesITS

Class by: A. Rossi, andrea,rossi@ts.infn.it

Function Members (Methods)

public:
AliITSRealignTracks()
AliITSRealignTracks(const AliITSRealignTracks& realignTracks)
AliITSRealignTracks(TString minimizer, Int_t fit = 0, Bool_t covUsed = kFALSE, TString fileintro = "AliTrackPoints.root", TString geometryfile = "geometry.root", TString misalignmentFile = "", TString startingfile = "")
virtual~AliITSRealignTracks()
voidTObject::AbstractMethod(const char* method) const
voidAliAlignmentTracks::AddESD(TChain* esdchain)
voidAliAlignmentTracks::AddESD(const char* esdfilename, const char* esdtreename = "esdTree")
Bool_tAliAlignmentTracks::AlignDetector(AliGeomManager::ELayerID firstLayer, AliGeomManager::ELayerID lastLayer, AliGeomManager::ELayerID layerRangeMin = AliGeomManager::kFirstLayer, AliGeomManager::ELayerID layerRangeMax = AliGeomManager::kLastLayer, Int_t iterations = 1)
Bool_tAlignLayer(Int_t layer, Int_t iterations)
Bool_tAlignLayersToLayers(const Int_t* layer, Int_t iterations)
Bool_tAlignLayerToSector(Int_t layer, Int_t sector, Int_t iterations)
Bool_tAlignLayerToSPDHalfBarrel(Int_t layer, Int_t updown, Int_t iterations)
Bool_tAlignSPD1SectorRef(Int_t sector, Int_t iterations)
Bool_tAlignSPDBarrel(Int_t iterations)
Bool_tAlignSPDHalfBarrel(Int_t method, Int_t iterations)
Bool_tAlignSPDHalfBarrelToHalfBarrel(Int_t updown, Int_t iterations)
Bool_tAlignSPDHalfBarrelToSectorRef(Int_t sector, Int_t iterations)
Bool_tAlignSPDSectorsWithSectors(const Int_t* sectorIN, const Int_t* sectorFit, Int_t iterations)
Bool_tAlignSPDSectorToOuterLayers(Int_t sector, Int_t iterations)
Bool_tAlignSPDSectorWithSectors(Int_t sector, Int_t iterations)
Bool_tAlignSPDStaves(const Int_t* staves, const Int_t* sectorsIN, const Int_t* sectorsFit, Int_t iterations)
Bool_tAliAlignmentTracks::AlignVolume(UShort_t volId, UShort_t volIdFit, Int_t iterations)
Bool_tAliAlignmentTracks::AlignVolumes(const TArrayI* volids, const TArrayI* volidsfit = 0x0, AliGeomManager::ELayerID layerRangeMin = AliGeomManager::kFirstLayer, AliGeomManager::ELayerID layerRangeMax = AliGeomManager::kLastLayer, Int_t iterations = 1)
Bool_tAlignVolumesITS(const TArrayI* volids, const TArrayI* volidsfit, AliGeomManager::ELayerID layerRangeMin, AliGeomManager::ELayerID layerRangeMax, Int_t iterations)
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
voidAliAlignmentTracks::BuildIndex()
Int_tCheckWithSurvey(Double_t factor = 2., const TArrayI* volids = 0x0)
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTObject::Clear(Option_t* = "")
virtual TObject*TObject::Clone(const char* newname = "") const
virtual Int_tTObject::Compare(const TObject* obj) const
virtual voidTObject::Copy(TObject& object) const
virtual voidTObject::Delete(Option_t* option = "")MENU
voidDeleteDrawHists()
voidDeleteSurveyObjs()
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
virtual voidTObject::Draw(Option_t* option = "")
virtual voidTObject::DrawClass() constMENU
virtual TObject*TObject::DrawClone(Option_t* option = "") constMENU
virtual voidTObject::Dump() constMENU
virtual voidTObject::Error(const char* method, const char* msgfmt) const
TArrayI*ExcludeVolidsFromVolidsArray(const TArrayI* volidsToExclude, const TArrayI* volStart)
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
virtual voidTObject::ExecuteEvent(Int_t event, Int_t px, Int_t py)
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
Bool_tFirstAlignmentLayers(const Bool_t* layers, Int_t minNtracks, Int_t iterations, Bool_t fitall = kTRUE, const TArrayI* volidsSet = 0x0)
Bool_tFirstAlignmentSPD(Int_t minNtracks, Int_t iterations, Bool_t fitall = kTRUE, const TArrayI* volidsSet = 0x0)
TArrayI*GetAlignedVolumes(char* filename)
AliAlignObj*AliAlignmentTracks::GetAlignObj(UShort_t volid) const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
virtual const char*TObject::GetIconName() const
Int_tAliAlignmentTracks::GetLastIndex(Int_t iLayer, Int_t iModule) const
TArrayI*GetLayersVolUID(const Int_t* layer)
TArrayI*GetLayerVolumes(const Int_t* layer)
virtual const char*TObject::GetName() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
TArrayI*GetSPDSectorsVolids(const Int_t* sectors)
TArrayI*GetSPDStavesVolids(const Int_t* sectors, const Int_t* staves)
virtual const char*TObject::GetTitle() const
virtual UInt_tTObject::GetUniqueID() const
Bool_tAliAlignmentTracks::GetUpdate() const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTObject::Hash() const
virtual voidTObject::Info(const char* method, const char* msgfmt) const
virtual Bool_tTObject::InheritsFrom(const char* classname) const
virtual Bool_tTObject::InheritsFrom(const TClass* cl) const
voidInitAlignObjs()
voidInitDrawHists()
Bool_tInitSurveyObjs(Bool_t infinite = kFALSE, Double_t factor = 1., TString filename = "", TString arrayName = "")
virtual voidTObject::Inspect() constMENU
TArrayI*IntersectVolArray(const TArrayI* vol1, const TArrayI* vol2)
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
Bool_tTObject::IsOnHeap() const
virtual Bool_tTObject::IsSortable() const
Bool_tTObject::IsZombie() const
TArrayI*JoinVolArrays(const TArrayI* vol1, const TArrayI* vol2)
virtual voidTObject::ls(Option_t* option = "") const
voidTObject::MayNotUse(const char* method) const
AliAlignObjParams*MediateAlignObj(const TArrayI* volIDs, Int_t lastVolid)
Bool_tAliAlignmentTracks::Misalign(const char* misalignObjFileName, const char* arrayName)
virtual Bool_tTObject::Notify()
voidTObject::Obsolete(const char* method, const char* asOfVers, const char* removedFromVers) const
static voidTObject::operator delete(void* ptr)
static voidTObject::operator delete(void* ptr, void* vp)
static voidTObject::operator delete[](void* ptr)
static voidTObject::operator delete[](void* ptr, void* vp)
void*TObject::operator new(size_t sz)
void*TObject::operator new(size_t sz, void* vp)
void*TObject::operator new[](size_t sz)
void*TObject::operator new[](size_t sz, void* vp)
AliITSRealignTracks&operator=(const AliITSRealignTracks& obj)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidTObject::Print(Option_t* option = "") const
voidAliAlignmentTracks::ProcessESD(TSelector* selector)
voidAliAlignmentTracks::ProcessESD(Bool_t onlyITS = kFALSE, Int_t minITSpts = 0, Bool_t cuts = kTRUE, Float_t minAngleWrtITSModulePlanes = 0., Float_t minMom = 0.3, Float_t maxMom = 1.e9, Float_t minAbsSinPhi = 0., Float_t maxAbsSinPhi = 1., Float_t minSinTheta = 0., Float_t maxSinTheta = 1.)
voidAliAlignmentTracks::ProcessESDCosmics(Bool_t onlyITS = kFALSE, Int_t minITSpts = 0, Float_t maxMatchingAngle = 0.17, Bool_t cuts = kTRUE, Float_t minAngleWrtITSModulePlanes = 0., Float_t minMom = 0.3, Float_t maxMom = 1.e9, Float_t minAbsSinPhi = 0., Float_t maxAbsSinPhi = 1., Float_t minSinTheta = 0., Float_t maxSinTheta = 1.)
virtual Int_tTObject::Read(const char* name)
Bool_tReadAlignObjs(const char* alignObjFileName = "AlignObjs.root", const char* arrayName = "Alignment")
voidRealignITStracks(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)
voidRealignITSVolIndependent(Int_t iter1, Int_t iterations, Int_t minNtracks, Int_t layer = 0, Int_t minTrackPoint = 6)
virtual voidTObject::RecursiveRemove(TObject* obj)
voidResetAlignObjs(Bool_t all, TArrayI* volids = 0x0)
voidTObject::ResetBit(UInt_t f)
voidResetCorrModules()
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "")
Bool_tSelectFitter(Int_t fit, Int_t minTrackPoint = 2)
TArrayI*SelectLayerInVolids(const TArrayI* volidsIN, AliGeomManager::ELayerID layer)
Bool_tSelectMinimizer(TString minimizer, Int_t minpoints = 1, const Bool_t* coord = 0x0)
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
voidAliAlignmentTracks::SetCovIsUsed(Bool_t covisused)
voidSetCovUpdate(Bool_t covupdate)
voidSetDraw(Bool_t draw, Bool_t refresh)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
voidSetGeomFilename(TString geomfilename)
voidSetLimitCorr(Double_t limit = 0.1)
voidAliAlignmentTracks::SetMinimizer(AliTrackResiduals* minimizer)
voidSetMinNtracks(Int_t minNtracks)
static voidTObject::SetObjectStat(Bool_t stat)
voidAliAlignmentTracks::SetPointsFilename(const char* pointsfilename = "AliTrackPoints.root")
voidAliAlignmentTracks::SetTrackFitter(AliTrackFitter* fitter)
virtual voidTObject::SetUniqueID(UInt_t uid)
voidAliAlignmentTracks::SetUpdate(Bool_t update)
voidSetVarySigmaY(Bool_t varysigmay, Double_t sigmaYfixed = 1.)
virtual voidShowMembers(TMemberInspector&)
Bool_tSPDmodulesAlignToSSD(Int_t minNtracks, Int_t iterations)
virtual voidStreamer(TBuffer&)
voidStreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_b)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
voidUpdateDraw(TArrayI* volids, Int_t iter, Int_t color)
virtual voidTObject::UseCurrentStyle()
virtual voidTObject::Warning(const char* method, const char* msgfmt) const
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0)
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const
voidWriteHists(const char* outfile)
voidAliAlignmentTracks::WriteRealignObjArray(TString outfilename, AliGeomManager::ELayerID layerRangeMin, AliGeomManager::ELayerID layerRangeMax)

Data Members

protected:
AliAlignObj***AliAlignmentTracks::fAlignObjsArray with alignment objects
TArrayI***AliAlignmentTracks::fArrayIndex! Volume arrays which contains the tree index
Bool_tAliAlignmentTracks::fCovIsUsedIndicator - use AlignObjs' Cov matrices
Bool_tAliAlignmentTracks::fDoUpdateIndicator - update Alignment object after minimization
TChain*AliAlignmentTracks::fESDChain! Chain with ESDs
Bool_tAliAlignmentTracks::fIsIndexBuiltIs points tree index built
Int_t**AliAlignmentTracks::fLastIndex! Last filled index in volume arrays
AliTrackResiduals*AliAlignmentTracks::fMinimizerPointer to track residuals minimizer
AliAlignObj***AliAlignmentTracks::fMisalignObjsArray with alignment objects used to introduce misalignment of the space-points
TFile*AliAlignmentTracks::fPointsFileFile containing the track point arrays
TStringAliAlignmentTracks::fPointsFilenameName of the file containing the track point arrays
TTree*AliAlignmentTracks::fPointsTreeTree with the track point arrays
AliTrackFitter*AliAlignmentTracks::fTrackFitterPointer to the track fitter
private:
AliAlignObj***fAlignDrawObjsArray with reference objects for histograms
TCanvas*fCanvGrCanvas with iterations results
TCanvas*fCanvParCanvas with iterations distributions
Double_t**fCorrModulesUsed to reduce correlations between modules
Bool_tfDrawflag to activate draw objects
Double_tfLimitCorrMaximum number of tracks shared between modules
AliAlignObj***fSurveyObjsArray with survey measurments
Bool_tfUpdateCovUpdate of Covariance for AlignObjs
Bool_tfVarySigmaYIf kTRUE the "sigmaY" parameter is changed accordingly to alignObj error
TStringfgeomfilenameGeometry file name
TGraph*fgrIterMeanPhigraphs during iterations
TGraph*fgrIterMeanPsigraphs during iterations
TGraph*fgrIterMeanThetagraphs during iterations
TGraph*fgrIterMeanXgraph of Delta X
TGraph*fgrIterMeanYgraph of Delta Y
TGraph*fgrIterMeanZgraph of DeltaZ
TGraph*fgrIterRMSPhigraphs during iterations
TGraph*fgrIterRMSPsigraphs during iterations
TGraph*fgrIterRMSThetagraphs during iterations
TGraph*fgrIterRMSXgraph of RMS X
TGraph*fgrIterRMSYgraph of RMS Y
TGraph*fgrIterRMSZTGraphs for displaying results during iterations
Int_tfmintracksminimum number of tracks to realign a set of volumes
Double_tfsigmaYsigmaY parameter

Class Charts

Inheritance Chart:
TObject
AliAlignmentTracks
AliITSRealignTracks

Function documentation

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)
 Assignment operator

~AliITSRealignTracks()
destructor
Bool_t SelectFitter(Int_t fit, Int_t minTrackPoint = 2)
Method to select the fitter: 0 for AliTrackFitterRieman (use this for helixes)
                             1 for AliTrackFitterKalman
minTrackPoint defines the minimum number of points (not rejected by the fit itself)
a track should have to fit it
Bool_t SelectMinimizer(TString minimizer, Int_t minpoints = 1, const Bool_t* coord = 0x0)
Method to select the minimizer: "minuit" for AliTrackFitterChi2 (numerical minimization by MINUIT)
                                "fast" for AliTrackResidualsFast
                                "linear" for AliTrackResidualsLinear
                                "minuitnorot" for AliTrackFitterChi2 by
 coord[6] allows to fix the degrees of freedom in the minimization (e.g. look only for tranlsations,
       or only for rotations). The coord are: dTx,dTy,dTz,dPsi,dTheta,dPhi where "d" stands for
       "differential" and "T" for translation. If coord[i] is set to kTRUE then the i coord is fixed
       When a coordinate is fixed the value returnd for it is 0
 minnpoints fix the minimum number of residuals to perform the minimization: it's not safe
     to align a module with a small number of track passing through it since the results could be
     not reliable. For single modules the number of residuals and the number of tracks passing
     through it and accepted bu the fit procedure coincide. This is not the case for sets of modules,
     since a given track can pass through two or more modules in the set (e.g a cosmic track can give
     two cluster on a layer)
void SetVarySigmaY(Bool_t varysigmay, Double_t sigmaYfixed = 1.)
SigmaY is the value of the error along the track direction assigned
to the AliTrackPoint constructed from the extrapolation of the fit of a track
to the module one is realigning. This error simulate the uncertainty on the
position of the cluster in space due to the misalingment of the module (i.e.
you don't the real position and orientation of the plane of the desired extrapolation
but you rely on the fit and consider the point to lie along the track)
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)
void InitAlignObjs()
 Initialize the alignment objects array
void ResetCorrModules()
 Initialize and reset to 0 the array with the information on correlation
Bool_t InitSurveyObjs(Bool_t infinite = kFALSE, Double_t factor = 1., TString filename = "", TString arrayName = "")
Initialize the Survey Objects. There is the possibility to set them equal to external objects
   stored in file filename. Otherwuse they are set equal to 0 and with default values for the variances
infinite: set the cov matrix to extremly large values, so that the results of a minimization
   are never rejected by the comparison with the survey
factor: multiplication factor for the variances of the cov. matrix of the survey obj.
Int_t CheckWithSurvey(Double_t factor = 2., const TArrayI* volids = 0x0)
void ResetAlignObjs(Bool_t all, TArrayI* volids = 0x0)
 Reset the alignment objects in volids or all if all=kTRUE
void DeleteSurveyObjs()
Bool_t ReadAlignObjs(const char* alignObjFileName = "AlignObjs.root", const char* arrayName = "Alignment")
Bool_t FirstAlignmentLayers(const Bool_t* layers, Int_t minNtracks, Int_t iterations, Bool_t fitall = kTRUE, const TArrayI* volidsSet = 0x0)
Bool_t FirstAlignmentSPD(Int_t minNtracks, Int_t iterations, Bool_t fitall = kTRUE, const TArrayI* volidsSet = 0x0)
Bool_t SPDmodulesAlignToSSD(Int_t minNtracks, Int_t iterations)
Align each SPD module with at least minNtracks passing through it with respect to SSD
The selection based on the minimum number of tracks is a fast one:
 the number considere here doesn't coincide with the tracks effectively used then in the
 minimization, it's just the total number of tracks in the sample passing through the module
 The procedure is iterated "iterations" times
Bool_t AlignVolumesITS(const TArrayI* volids, const TArrayI* volidsfit, AliGeomManager::ELayerID layerRangeMin, AliGeomManager::ELayerID layerRangeMax, Int_t iterations)
 Align a set of detector volumes.
 Tracks are fitted only within
 the range defined by the user
 (by layerRangeMin and layerRangeMax)
 or within the set of volidsfit
 Repeat the procedure 'iterations' times
Bool_t AlignSPDBarrel(Int_t iterations)
Align the SPD barrel "iterations" times
Bool_t AlignSPDHalfBarrel(Int_t method, Int_t iterations)
Align a SPD Half barrel "iterations" times
method 0 : align SPDHalfBarrel Up without using the points on SPD Half Barrel down in the fits (only outer layers)
method 1 : align SPDHalfBarrel Down without using the points on SPD Half Barrel up in the fits (only outer layers)
method 10 : align SPDHalfBarrel Up using also the points on SPD Half Barrel down in the fits (and points on outer layers)
method 11 : align SPDHalfBarrel Down using also the points on SPD Half Barrel up in the fits (and points on outer layers)
Bool_t AlignLayer(Int_t layer, Int_t iterations)
Align the layer "layer" iterations times
Bool_t AlignLayersToLayers(const Int_t* layer, Int_t iterations)
Bool_t AlignSPDSectorToOuterLayers(Int_t sector, Int_t iterations)
Align the SPD sector "sector" with respect to outer layers iterations times
Bool_t AlignSPDSectorWithSectors(Int_t sector, Int_t iterations)
Align the SPD sector "sector" with respect to the other SPD sectors iterations times
Bool_t AlignSPDSectorsWithSectors(const Int_t* sectorIN, const Int_t* sectorFit, Int_t iterations)
Align SPD sectors defined in "sectorsIN" with respect to
SPD sectors defined in "sectorsFit" iterations time
Bool_t AlignSPDStaves(const Int_t* staves, const Int_t* sectorsIN, const Int_t* sectorsFit, Int_t iterations)
Align SPD staves defined by staves and sectorsIN with respect to sectorsFit volumes iterations times
Bool_t AlignLayerToSPDHalfBarrel(Int_t layer, Int_t updown, Int_t iterations)
Align the layer "layer" with respect to SPD Half Barrel Up (updowon=0)
or Down (updown=1) iterations times
Bool_t AlignLayerToSector(Int_t layer, Int_t sector, Int_t iterations)
Align the layer "layer" with respect to SPD sector "sector" iterations times
Bool_t AlignSPDHalfBarrelToHalfBarrel(Int_t updown, Int_t iterations)
Align the SPD Half Barrel Up[Down] with respect to HB Down[Up] iterations time if
updown=0[1]
Bool_t AlignSPDHalfBarrelToSectorRef(Int_t sector, Int_t iterations)
Align the SPD Half Barrel Down with respect to sector "sector" iterations times
Bool_t AlignSPD1SectorRef(Int_t sector, Int_t iterations)
OBSOLETE METHOD: Align the SPD1 modules of sector "sector" with respect
 to the other SPD volumes iterations times
AliAlignObjParams* MediateAlignObj(const TArrayI* volIDs, Int_t lastVolid)
TEMPORARY METHOD: perform an average of the values of the parameters of the AlignObjs
 defined by the array volIDs up to lastVolid position in this array
The aim of such a method is to look for collective movement of a given set of modules
TArrayI* GetSPDStavesVolids(const Int_t* sectors, const Int_t* staves)
TArrayI* GetSPDSectorsVolids(const Int_t* sectors)
 This method gets the volID Array for the chosen sectors.
 You have to pass an array with a 1 for each selected sector.
 i.e. sectors[10] = {1,1,0,0,0,0,0,0,1,0} -> Sector 0, 1, 9 selected.

TArrayI* GetLayersVolUID(const Int_t* layer)
TArrayI* SelectLayerInVolids(const TArrayI* volidsIN, AliGeomManager::ELayerID layer)
Select between the modules specified by their volUIDs in volidsIN only those
 of a given layer "layer"
TArrayI* IntersectVolArray(const TArrayI* vol1, const TArrayI* vol2)
TArrayI* JoinVolArrays(const TArrayI* vol1, const TArrayI* vol2)
!BE CAREFUL: If an index is repeated into vol1 or into vol2 will be repeated also in the final array
TArrayI* ExcludeVolidsFromVolidsArray(const TArrayI* volidsToExclude, const TArrayI* volStart)
Excludes the modules defined by their volUID in the array volidsToExclude from the array volStart
TArrayI* GetLayerVolumes(const Int_t* layer)
returns a TArrayI with the volUIDs of the modules of the layers
specified into *layer
TArrayI* GetAlignedVolumes(char* filename)
Open the file "filename" which is expected to contain
a TClonesArray named "ITSAlignObjs" with stored a set of AlignObjs
returns an array with the volumes UID of the modules considered realigned
void SetDraw(Bool_t draw, Bool_t refresh)
TEPMORARY METHOD: method to switch on/off the drawing of histograms
 if refresh=kTRUE deletes the old histos and constructs new ones
void DeleteDrawHists()
Delete the pointers to the histograms
void InitDrawHists()
Initialize the histograms to monitor the results
void UpdateDraw(TArrayI* volids, Int_t iter, Int_t color)
Updates the histograms to monitor the results. Only the histograms
of the volumes specified in *volids will be updated.
 iter is just a flag for the names of the histo
 color specifies the color of the lines of the histograms for this update
void WriteHists(const char* outfile)
Writes the histograms for the monitoring of the results
 in a file named "outfile"
AliITSRealignTracks()
void SetLimitCorr(Double_t limit = 0.1)
{fLimitCorr=limit;}
void SetMinNtracks(Int_t minNtracks)
{fmintracks=minNtracks;}
void SetCovUpdate(Bool_t covupdate)
{fUpdateCov=covupdate;}
void SetGeomFilename(TString geomfilename)
  Int_t LoadPoints(const TArrayI *volids, AliTrackPointArray** &points);
{fgeomfilename=geomfilename;}