Fixes from Andrea
authorcvetan <cvetan@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 10 Jul 2008 15:04:17 +0000 (15:04 +0000)
committercvetan <cvetan@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 10 Jul 2008 15:04:17 +0000 (15:04 +0000)
STEER/AliAlignmentTracks.cxx
STEER/AliAlignmentTracks.h

index 71c38e6..a8573d3 100644 (file)
@@ -49,7 +49,8 @@ AliAlignmentTracks::AliAlignmentTracks():
   fMisalignObjs(0),
   fTrackFitter(0),
   fMinimizer(0),
-  fDoUpdate(kTRUE)
+  fDoUpdate(kTRUE),
+  fCovIsUsed(kFALSE)
 {
   // Default constructor
   InitIndex();
@@ -69,7 +70,8 @@ AliAlignmentTracks::AliAlignmentTracks(TChain *esdchain):
   fMisalignObjs(0),
   fTrackFitter(0),
   fMinimizer(0),
-  fDoUpdate(kTRUE)
+  fDoUpdate(kTRUE),
+  fCovIsUsed(kFALSE)
 {
   // Constructor in the case
   // the user provides an already
@@ -92,7 +94,8 @@ AliAlignmentTracks::AliAlignmentTracks(const char *esdfilename, const char *esdt
   fMisalignObjs(0),
   fTrackFitter(0),
   fMinimizer(0),
-  fDoUpdate(kTRUE)
+  fDoUpdate(kTRUE),
+  fCovIsUsed(kFALSE)
 {
   // Constructor in the case
   // the user provides a single ESD file
@@ -804,7 +807,7 @@ Int_t AliAlignmentTracks::LoadPoints(const TArrayI *volids, AliTrackPointArray**
 
   if (nArrays == 0) {
     AliError("There are no space-points belonging to all of the volumes which are to be aligned!");
-    points = 0;
+    points = 0x0;
     return 0;
   }
 
@@ -877,8 +880,21 @@ Int_t AliAlignmentTracks::LoadPoints(const TArrayI *volids, AliTrackPointArray**
        }
        // End of misalignment
 
+
        AliAlignObj *alignObj = fAlignObjs[layer-AliGeomManager::kFirstLayer][modnum];
-       alignObj->Transform(p);
+       UShort_t volp=p.GetVolumeID();
+       Bool_t found=kFALSE;
+       if(fCovIsUsed){
+         for (Int_t iVol = 0; iVol < nVolIds; iVol++) {
+           UShort_t vol = (*volids)[iVol];
+           if(volp==vol){
+             alignObj->Transform(p,kFALSE);
+             found=kTRUE;
+             break;
+           }
+         }
+       }
+       if(!found)alignObj->Transform(p,fCovIsUsed);
        points[iArray]->AddPoint(iPoint,&p);
       }
       iArray++;
@@ -968,6 +984,10 @@ Bool_t AliAlignmentTracks::Misalign(const char *misalignObjFileName, const char*
     {
       AliAlignObj* alObj = (AliAlignObj*)array->UncheckedAt(i);
       alObj->GetVolUID(layerId,modId);
+      if(layerId<AliGeomManager::kFirstLayer) {
+       AliWarning(Form("Alignment object is ignored: %s",alObj->GetSymName()));
+       continue;
+      }
       fMisalignObjs[layerId-AliGeomManager::kFirstLayer][modId] = alObj;
     }
   return kTRUE;
index aef6ca5..92976ad 100644 (file)
@@ -75,9 +75,9 @@ class AliAlignmentTracks : public TObject {
     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]; }  
 
  protected:
@@ -110,6 +110,7 @@ class AliAlignmentTracks : public TObject {
   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);