Two minor bugfixes
[u/mrichter/AliRoot.git] / TPC / AliTPCCorrection.cxx
index 07b8b0f..547d24f 100644 (file)
@@ -88,7 +88,8 @@ TObjArray *AliTPCCorrection::fgVisualCorrection=0;
 
 // FIXME: the following values should come from the database
 const Double_t AliTPCCorrection::fgkTPCZ0    = 249.7;     // nominal gating grid position 
-const Double_t AliTPCCorrection::fgkIFCRadius=  83.06;    // Mean Radius of the Inner Field Cage ( 82.43 min,  83.70 max) (cm)
+const Double_t AliTPCCorrection::fgkIFCRadius=  83.5;     // radius which renders the "18 rod manifold" best -> compare calc. of Jim Thomas
+// compare gkIFCRadius=  83.05: Mean Radius of the Inner Field Cage ( 82.43 min,  83.70 max) (cm)
 const Double_t AliTPCCorrection::fgkOFCRadius= 254.5;     // Mean Radius of the Outer Field Cage (252.55 min, 256.45 max) (cm)
 const Double_t AliTPCCorrection::fgkZOffSet  =   0.2;     // Offset from CE: calculate all distortions closer to CE as if at this point
 const Double_t AliTPCCorrection::fgkCathodeV = -100000.0; // Cathode Voltage (volts)
@@ -499,7 +500,7 @@ void AliTPCCorrection::Interpolate2DEdistortion( const Int_t order, const Double
   //
   // Interpolate table - 2D interpolation
   //
-  Double_t saveEr[10] ;
+  Double_t saveEr[5] = {0,0,0,0,0};
 
   Search( kNZ,   fgkZList,  z,   fJLow   ) ;
   Search( kNR,   fgkRList,  r,   fKLow   ) ;
@@ -522,9 +523,14 @@ void AliTPCCorrection::Interpolate3DEdistortion( const Int_t order, const Double
   // Interpolate table - 3D interpolation
   //
   
-  Double_t saveEr[10],   savedEr[10] ;
-  Double_t saveEphi[10], savedEphi[10] ;
-  Double_t saveEz[10],   savedEz[10] ;
+  Double_t saveEr[5]= {0,0,0,0,0};
+  Double_t savedEr[5]= {0,0,0,0,0} ;
+
+  Double_t saveEphi[5]= {0,0,0,0,0};
+  Double_t savedEphi[5]= {0,0,0,0,0} ;
+
+  Double_t saveEz[5]= {0,0,0,0,0};
+  Double_t savedEz[5]= {0,0,0,0,0} ;
 
   Search( kNZ,   fgkZList,   z,   fILow   ) ;
   Search( kNPhi, fgkPhiList, z,   fJLow   ) ;
@@ -562,7 +568,7 @@ Double_t AliTPCCorrection::Interpolate2DTable( const Int_t order, const Double_t
   //
 
   static  Int_t jlow = 0, klow = 0 ;
-  Double_t saveArray[10]  ;
+  Double_t saveArray[5] = {0,0,0,0,0} ;
 
   Search( nx,  xv,  x,   jlow  ) ;
   Search( ny,  yv,  y,   klow  ) ;
@@ -590,7 +596,8 @@ Double_t AliTPCCorrection::Interpolate3DTable( const Int_t order, const Double_t
   //
 
   static  Int_t ilow = 0, jlow = 0, klow = 0 ;
-  Double_t saveArray[10],  savedArray[10] ;
+  Double_t saveArray[5]= {0,0,0,0,0};
+  Double_t savedArray[5]= {0,0,0,0,0} ;
 
   Search( nx, xv, x, ilow   ) ;
   Search( ny, yv, y, jlow   ) ;
@@ -1922,6 +1929,8 @@ void AliTPCCorrection::AddVisualCorrection(AliTPCCorrection* corr, Int_t positio
   // NOTE - class is not owner of correction
   //     
   if (!fgVisualCorrection) fgVisualCorrection=new TObjArray;
+  if (position!=0&&position>=fgVisualCorrection->GetEntriesFast())
+    fgVisualCorrection->Expand(position*2);
   fgVisualCorrection->AddAt(corr, position);
 }
 
@@ -1934,6 +1943,7 @@ Double_t AliTPCCorrection::GetCorrSector(Double_t sector, Double_t r, Double_t k
   if (!fgVisualCorrection) return 0;
   AliTPCCorrection *corr = (AliTPCCorrection*)fgVisualCorrection->At(corrType);
   if (!corr) return 0;
+
   Double_t phi=sector*TMath::Pi()/9.;
   Double_t gx = r*TMath::Cos(phi);
   Double_t gy = r*TMath::Sin(phi);