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 ProcessESD();
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 AlignDetector(AliAlignObj::ELayerID firstLayer,
+ AliAlignObj::ELayerID lastLayer,
+ AliAlignObj::ELayerID layerRangeMin = AliAlignObj::kFirstLayer,
+ AliAlignObj::ELayerID layerRangeMax = AliAlignObj::kLastLayer,Int_t iterations = 1);
void AlignLayer(AliAlignObj::ELayerID layer,
AliAlignObj::ELayerID layerRangeMin = AliAlignObj::kFirstLayer,
AliAlignObj::ELayerID layerRangeMax = AliAlignObj::kLastLayer,
Int_t iterations = 1);
- void AlignVolume(UShort_t volid,
+ void AlignVolume(UShort_t volId, UShort_t volIdFit,
+ Int_t iterations);
+ void AlignVolumes(const TArrayI *volids, const TArrayI *volidsfit = 0x0,
AliAlignObj::ELayerID layerRangeMin = AliAlignObj::kFirstLayer,
- AliAlignObj::ELayerID layerRangeMax = AliAlignObj::kLastLayer);
-
+ AliAlignObj::ELayerID layerRangeMax = AliAlignObj::kLastLayer,
+ Int_t iterations = 1);
+
+ AliAlignObj* GetAlignObj(UShort_t volid) const {
+ Int_t iModule;
+ AliAlignObj::ELayerID iLayer = AliAlignObj::VolUIDToLayer(volid,iModule);
+ return fAlignObjs[iLayer-AliAlignObj::kFirstLayer][iModule];
+ }
+ void SetUpdate(Bool_t update){fDoUpdate = update;}
+ Bool_t GetUpdate() const { return fDoUpdate;}
protected:
void InitIndex();
void ResetAlignObjs();
void DeleteAlignObjs();
- Int_t LoadPoints(UShort_t volid, AliTrackPointArray** &points);
+ Int_t LoadPoints(const TArrayI *volids, AliTrackPointArray** &points);
void UnloadPoints(Int_t n, AliTrackPointArray **points);
AliTrackFitter *CreateFitter();
AliTrackResiduals *CreateMinimizer();
+ Bool_t Misalign(const char *misalignObjFileName, const char* arrayName);
+
TChain *fESDChain; //! Chain with ESDs
TString fPointsFilename; // Name of the file containing the track point arrays
TFile *fPointsFile; // File containing the track point arrays
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
+
+ private:
+ AliAlignmentTracks(const AliAlignmentTracks & alignment);
+ AliAlignmentTracks& operator= (const AliAlignmentTracks& alignment);
- ClassDef(AliAlignmentTracks,1)
+ ClassDef(AliAlignmentTracks,2)
};