bug https://savannah.cern.ch/bugs/?69885
authorrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 21 Jul 2010 07:17:49 +0000 (07:17 +0000)
committerrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 21 Jul 2010 07:17:49 +0000 (07:17 +0000)
it turned out that a wrong calibration object caused the displacement of clusters
putting back revisions 41975 and 41935

HLT/TPCLib/AliHLTTPCClusterFinder.cxx
HLT/TPCLib/AliHLTTPCClusterFinder.h

index 03de149..afc3361 100644 (file)
@@ -37,6 +37,7 @@
 #include <cmath>
 #include "AliTPCcalibDB.h"
 #include "AliTPCTransform.h"
+#include "AliTPCParam.h"
 
 #if __GNUC__ >= 3
 using namespace std;
@@ -86,20 +87,31 @@ AliHLTTPCClusterFinder::AliHLTTPCClusterFinder()
   fDoMC(kFALSE),
   fClusterMCVector(),
   fOfflineTransform(NULL),
-  fOfflineTPCRecoParam(),
+  fOfflineTPCParam( NULL ),
+  fOfflineTPCRecoParam(*AliTPCRecoParam::GetHLTParam()),
   fTimeMeanDiff(2),
   fReleaseMemory(0)
 {
   //constructor  
+
+  //uptate the transform class
+
   fOfflineTransform = AliTPCcalibDB::Instance()->GetTransform(); 
   if(!fOfflineTransform){
-    HLTError("AliHLTTPCClusterFinder():  Offline transform not in AliTPCcalibDB.");
+    HLTError("AliHLTTPCClusterFinder()::UpdateCAlibDB::  Offline transform not in AliTPCcalibDB.");
   }
   else{
-    fOfflineTPCRecoParam.SetUseExBCorrection(1);
-    fOfflineTPCRecoParam.SetUseTOFCorrection(1);
     fOfflineTransform->SetCurrentRecoParam(&fOfflineTPCRecoParam);
   }
+
+  fOfflineTPCParam = AliTPCcalibDB::Instance()->GetParameters();
+  if( !fOfflineTPCParam ){
+    HLTError("AliHLTTPCClusterFinder()::UpdateCAlibDB::  Offline TPC parameters not in AliTPCcalibDB.");
+  } else {
+    fOfflineTPCParam->Update();
+    fOfflineTPCParam->ReadGeoMatrices();
+  }    
+
 }
 
 AliHLTTPCClusterFinder::~AliHLTTPCClusterFinder(){
@@ -636,14 +648,29 @@ Bool_t AliHLTTPCClusterFinder::UpdateCalibDB(){
   //update the db
   AliTPCcalibDB::Instance()->Update();
 
+  Bool_t ret = 1;
+
   //uptate the transform class
-  AliTPCTransform * tmp = AliTPCcalibDB::Instance()->GetTransform(); 
-  if(!tmp){
-    HLTError("AliHLTTPCClusterFinder::UpdateCAlibDB: Offline transform not in AliTPCcalibDB.");
-    return 0;
+
+  fOfflineTransform = AliTPCcalibDB::Instance()->GetTransform(); 
+  if(!fOfflineTransform){
+    HLTError("AliHLTTPCClusterFinder()::UpdateCAlibDB::  Offline transform not in AliTPCcalibDB.");
+    ret = 0;
   }
-  fOfflineTransform = tmp;
-  return 1;
+  else{
+    fOfflineTransform->SetCurrentRecoParam(&fOfflineTPCRecoParam);
+  }
+
+  fOfflineTPCParam = AliTPCcalibDB::Instance()->GetParameters();
+  if( !fOfflineTPCParam ){
+    HLTError("AliHLTTPCClusterFinder()::UpdateCAlibDB::  Offline TPC parameters not in AliTPCcalibDB.");
+    ret = 0;
+  } else {
+    fOfflineTPCParam->Update();
+    fOfflineTPCParam->ReadGeoMatrices();
+  }    
+
+  return ret;
 }
 
 //---------------------------------- Under this line the old sorted clusterfinder functions can be found --------------------------------
@@ -1159,9 +1186,16 @@ void AliHLTTPCClusterFinder::WriteClusters(Int_t nclusters,AliClusterData *list)
          Double_t x[3]={thisrow,fpad+.5,ftime}; 
          Int_t iSector[1]={thissector};
          fOfflineTransform->Transform(x,iSector,0,1);
-         fSpacePointData[counter].fX = x[0];
-         fSpacePointData[counter].fY = x[1];
-         fSpacePointData[counter].fZ = x[2];
+         double y[3] = {x[0], x[1], x[2] };      
+         
+         if( fOfflineTPCParam && thissector<fOfflineTPCParam->GetNSector() ){
+           TGeoHMatrix  *alignment = fOfflineTPCParam->GetClusterMatrix( thissector );
+           if ( alignment ) alignment->LocalToMaster( x, y);
+         }       
+
+         fSpacePointData[counter].fX = y[0];
+         fSpacePointData[counter].fY = y[1];
+         fSpacePointData[counter].fZ = y[2];
        }
 
       } 
index d74db5e..ab58327 100644 (file)
@@ -24,6 +24,7 @@ class AliHLTTPCPad;
 class AliHLTTPCSpacePointData;
 class AliHLTTPCClusters;
 class AliTPCTransform;
+class AliTPCParam;
 
 /**
  * @class AliHLTTPCClusterFinder
@@ -287,6 +288,8 @@ class AliHLTTPCClusterFinder : public AliHLTLogging {
 
   AliTPCTransform * fOfflineTransform;                             //! transient
 
+  AliTPCParam   *fOfflineTPCParam;                                 //! transient
+
   AliTPCRecoParam fOfflineTPCRecoParam;                            //! transient
 
   Float_t fTimeMeanDiff;                                           //! transient