]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TPC/AliTPCcalibDB.cxx
Moved calibration and cleaning to RawDigiProducer
[u/mrichter/AliRoot.git] / TPC / AliTPCcalibDB.cxx
index 14acce22eb4f02174fbf50eb161e58834a9df0e8..da96eb34ce67327c73812d50f4cf1641232a34a9 100644 (file)
 //                                                                           //
 // Request an instance with AliTPCcalibDB::Instance()                        //
 // If a new event is processed set the event number with SetRun              //
-// Then request the calibration data                                         // 
-//                                                                           //
+// Then request the calibration data                                         ////
+//
+//
+// Calibration data:
+// 0.)  Altro mapping
+//          Simulation      - not yet 
+//          Reconstruction  - AliTPCclustererMI::Digits2Clusters(AliRawReader* rawReader)
+//
+// 1.)  pad by pad calibration -  AliTPCCalPad
+//      
+//      a.) fPadGainFactor
+//          Simulation: AliTPCDigitizer::ExecFast - Multiply by gain
+//          Reconstruction : AliTPCclustererMI::Digits2Clusters - Divide by gain  
+//
+//      b.) fPadNoise -
+//          Simulation:        AliTPCDigitizer::ExecFast
+//          Reconstruction:    AliTPCclustererMI::FindClusters(AliTPCCalROC * noiseROC)
+//                             Noise depending cut on clusters charge (n sigma)
+//      c.) fPedestal:
+//          Simulation:     Not used yet - To be impleneted - Rounding to the nearest integer
+//          Reconstruction: Used in AliTPCclustererMI::Digits2Clusters(AliRawReader* rawReader) 
+//                          if data taken without zero suppression  
+//                          Currently switch in  fRecoParam->GetCalcPedestal();
+//      
+//      d.) fPadTime0
+//          Simulation:      applied in the AliTPC::MakeSector - adding offset
+//          Reconstruction:  AliTPCTransform::Transform() - remove offset
+//                           AliTPCTransform::Transform() - to be called
+//                           in AliTPCtracker::Transform()      
+//
+// 
+// 2.)  Space points transformation:
+//
+//      a.) General coordinate tranformation - AliTPCtransform (see $ALICE_ROOT/TPC/AliTPCtransform.cxx)
+//          Created on fly - use the other calibration components
+//                 Unisochronity  - (substract time0 - pad by pad)
+//                 Drift velocity - Currently common drift velocity - functionality of AliTPCParam
+//                 ExB effect    
+//          Simulation     - Not used directly (the effects are applied one by one (see AliTPC::MakeSector)
+//          Reconstruction - 
+//                           AliTPCclustererMI::AddCluster
+//                           AliTPCtrackerMI::Transform
+//      b.) ExB effect calibration - 
+//             classes (base class AliTPCExB, implementation- AliTPCExBExact.h  AliTPCExBFirst.h)
+//             a.a) Simulation:   applied in the AliTPC::MakeSector - 
+//                                calib->GetExB()->CorrectInverse(dxyz0,dxyz1);
+//             a.b) Reconstruction -  
+//                  
+//                  in AliTPCtransform::Correct() - called calib->GetExB()->Correct(dxyz0,dxyz1)
+//
+//  3.)   cluster error, shape and Q parameterization
+//
+//
+//
 ///////////////////////////////////////////////////////////////////////////////
 
 #include <iostream>
 #include <AliLog.h>
 
 #include "AliTPCcalibDB.h"
+#include "AliTPCAltroMapping.h"
 #include "AliTPCExB.h"
 
 #include "AliTPCCalROC.h"
 #include "AliTPCCalPad.h"
 #include "AliTPCSensorTempArray.h"
 #include "AliTPCTransform.h"
+
 class AliCDBStorage;
 class AliTPCCalDet;
 //
@@ -102,14 +156,17 @@ void AliTPCcalibDB::Terminate()
 //_____________________________________________________________________________
 AliTPCcalibDB::AliTPCcalibDB():
   fRun(-1),
-  fTrafo(0),
+  fTransform(0),
   fExB(0),
   fPadGainFactor(0),
   fPadTime0(0),
   fPadNoise(0),
   fPedestals(0),
   fTemperature(0),
-  fParam(0)
+  fMapping(0),
+  fRecoParamArray(0),
+  fParam(0),
+  fClusterParam(0)
 {
   //
   // constructor
@@ -209,6 +266,14 @@ void AliTPCcalibDB::Update(){
     fTemperature = (AliTPCSensorTempArray*)entry->GetObject();
   }
 
+
+  entry          = GetCDBEntry("TPC/Calib/RecoParam");
+  if (entry){
+    entry->SetOwner(kTRUE);
+    fRecoParamArray = (TObjArray*)(entry->GetObject());
+  }
+
+
   entry          = GetCDBEntry("TPC/Calib/Parameters");
   if (entry){
     //if (fPadNoise) delete fPadNoise;
@@ -216,14 +281,37 @@ void AliTPCcalibDB::Update(){
     fParam = (AliTPCParam*)(entry->GetObject()->Clone());
   }
 
+  entry          = GetCDBEntry("TPC/Calib/ClusterParam");
+  if (entry){
+    //if (fPadNoise) delete fPadNoise;
+    entry->SetOwner(kTRUE);
+    fClusterParam = (AliTPCClusterParam*)(entry->GetObject()->Clone());
+  }
+
+  entry          = GetCDBEntry("TPC/Calib/Mapping");
+  if (entry){
+    //if (fPadNoise) delete fPadNoise;
+    entry->SetOwner(kTRUE);
+    TObjArray * array = dynamic_cast<TObjArray*>(entry->GetObject());
+    if (array && array->GetEntriesFast()==6){
+      fMapping = new AliTPCAltroMapping*[6];
+      for (Int_t i=0; i<6; i++){
+       fMapping[i] =  dynamic_cast<AliTPCAltroMapping*>(array->At(i));
+      }
+    }
+  }
+
+
+
   entry          = GetCDBEntry("TPC/Calib/ExB");
   if (entry) {
     entry->SetOwner(kTRUE);
     fExB=dynamic_cast<AliTPCExB*>(entry->GetObject()->Clone());
   }
 
-  delete fTrafo;
-  fTrafo=new AliTPCTransform(); 
+  if (!fTransform) {
+    fTransform=new AliTPCTransform(); 
+  }
 
   //
   AliCDBManager::Instance()->SetCacheFlag(cdbCache); // reset original CDB cache
@@ -550,3 +638,16 @@ void AliTPCcalibDB::MakeTree(const char * fileName, TObjArray * array, const cha
    }
 }
 
+
+AliTPCRecoParam *  AliTPCcalibDB::GetRecoParam(Int_t */*eventtype*/){
+  //
+  // 
+  //
+  if (!fRecoParamArray){
+    return 0;  // back compatible sollution
+  };
+  
+  AliTPCRecoParam * param = (AliTPCRecoParam*)fRecoParamArray->At(0);
+  return param;
+
+}