// //
// 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;
//
//_____________________________________________________________________________
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
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;
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
}
}
+
+AliTPCRecoParam * AliTPCcalibDB::GetRecoParam(Int_t */*eventtype*/){
+ //
+ //
+ //
+ if (!fRecoParamArray){
+ return 0; // back compatible sollution
+ };
+
+ AliTPCRecoParam * param = (AliTPCRecoParam*)fRecoParamArray->At(0);
+ return param;
+
+}