AliAlignmentTracks();
AliAlignmentTracks(TChain *esdchain);
AliAlignmentTracks(const char *esdfilename, const char *esdtreename = "esdTree");
- AliAlignmentTracks(const AliAlignmentTracks & alignment);
- AliAlignmentTracks& operator= (const AliAlignmentTracks& alignment);
virtual ~AliAlignmentTracks();
void AddESD(TChain *esdchain);
void SetPointsFilename(const char *pointsfilename = "AliTrackPoints.root") { fPointsFilename = pointsfilename; }
void ProcessESD(TSelector *selector);
- void ProcessESD();
+ void 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.);
+ void ProcessESDCosmics(Bool_t onlyITS=kFALSE,Int_t minITSpts=0,
+ Float_t maxMatchingAngle=0.17, // 10 deg
+ 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.);
void BuildIndex();
-/* void BuildIndexLayer(AliAlignObj::ELayerID layer); */
-/* void BuildIndexVolume(UShort_t volid); */
- Bool_t ReadAlignObjs(const char *alignobjfilename = "AlignObjs.root");
+ Bool_t ReadAlignObjs(const char *alignObjFileName = "AlignObjs.root", const char* arrayName = "Alignment");
void SetTrackFitter(AliTrackFitter *fitter) { fTrackFitter = fitter; }
void SetMinimizer(AliTrackResiduals *minimizer) { fMinimizer = minimizer; }
- void Align(Int_t iterations = 100);
- void AlignLayer(AliAlignObj::ELayerID layer,
- AliAlignObj::ELayerID layerRangeMin = AliAlignObj::kFirstLayer,
- AliAlignObj::ELayerID layerRangeMax = AliAlignObj::kLastLayer,
- Int_t iterations = 1);
- void AlignVolume(UShort_t volid,
- AliAlignObj::ELayerID layerRangeMin = AliAlignObj::kFirstLayer,
- AliAlignObj::ELayerID layerRangeMax = AliAlignObj::kLastLayer);
+ Bool_t AlignDetector(AliGeomManager::ELayerID firstLayer,
+ AliGeomManager::ELayerID lastLayer,
+ AliGeomManager::ELayerID layerRangeMin = AliGeomManager::kFirstLayer,
+ AliGeomManager::ELayerID layerRangeMax = AliGeomManager::kLastLayer,Int_t iterations = 1);
+ Bool_t AlignLayer(AliGeomManager::ELayerID layer,
+ AliGeomManager::ELayerID layerRangeMin = AliGeomManager::kFirstLayer,
+ AliGeomManager::ELayerID layerRangeMax = AliGeomManager::kLastLayer,
+ Int_t iterations = 1);
+ Bool_t AlignVolume(UShort_t volId, UShort_t volIdFit,
+ Int_t iterations);
+ Bool_t AlignVolumes(const TArrayI *volids, const TArrayI *volidsfit = 0x0,
+ AliGeomManager::ELayerID layerRangeMin = AliGeomManager::kFirstLayer,
+ AliGeomManager::ELayerID layerRangeMax = AliGeomManager::kLastLayer,
+ Int_t iterations = 1);
+
+ AliAlignObj* GetAlignObj(UShort_t volid) const {
+ Int_t iModule;
+ AliGeomManager::ELayerID iLayer = AliGeomManager::VolUIDToLayer(volid,iModule);
+ return fAlignObjs[iLayer-AliGeomManager::kFirstLayer][iModule];
+ }
+ void SetUpdate(Bool_t update){fDoUpdate = update;}
+ void SetCovIsUsed(Bool_t covisused){fCovIsUsed=covisused;}
+ Bool_t GetUpdate() const { return fDoUpdate;}
+ void WriteRealignObjArray(TString outfilename,AliGeomManager::ELayerID layerRangeMin,AliGeomManager::ELayerID layerRangeMax);
+ Int_t GetLastIndex(Int_t iLayer,Int_t iModule) const { return fLastIndex[iLayer][iModule]; }
+
+ Bool_t Misalign(const char *misalignObjFileName, const char* arrayName);
protected:
void ResetAlignObjs();
void DeleteAlignObjs();
- Int_t LoadPoints(UShort_t volid, AliTrackPointArray** &points);
+ Int_t LoadPoints(const TArrayI *volids, AliTrackPointArray** &points,Int_t &pointsdim);
void UnloadPoints(Int_t n, AliTrackPointArray **points);
AliTrackFitter *CreateFitter();
TArrayI ***fArrayIndex; //! Volume arrays which contains the tree index
Bool_t fIsIndexBuilt; // Is points tree index built
AliAlignObj ***fAlignObjs; // Array with alignment objects
+ AliAlignObj ***fMisalignObjs; // Array with alignment objects used to introduce misalignment of the space-points
AliTrackFitter *fTrackFitter; // Pointer to the track fitter
AliTrackResiduals*fMinimizer; // Pointer to track residuals minimizer
+ Bool_t fDoUpdate; // Indicator - update Alignment object after minimization
+ Bool_t fCovIsUsed; // Indicator - use AlignObjs' Cov matrices
+
+ private:
+ AliAlignmentTracks(const AliAlignmentTracks & alignment);
+ AliAlignmentTracks& operator= (const AliAlignmentTracks& alignment);
- ClassDef(AliAlignmentTracks,1)
+ ClassDef(AliAlignmentTracks,2)
};