#include "AliTPCCalibVdrift.h"
#include "AliTPCCalibRaw.h"
#include "AliTPCParam.h"
-
+#include "AliTPCCorrection.h"
#include "AliTPCPreprocessorOnline.h"
fDedxGainFactor(0),
fPadTime0(0),
fDistortionMap(0),
+ fComposedCorrection(0),
+ fComposedCorrectionArray(0),
fPadNoise(0),
fPedestals(0),
fCalibRaw(0),
// constructor
//
//
+ fgInstance=this;
Update(); // temporary
}
fDedxGainFactor(0),
fPadTime0(0),
fDistortionMap(0),
+ fComposedCorrection(0),
+ fComposedCorrectionArray(0),
fPadNoise(0),
fPedestals(0),
fCalibRaw(0),
//
}
-
+AliTPCCalPad* AliTPCcalibDB::GetDistortionMap(Int_t i) const {
+ //
+ // get distortion map - due E field distortions
+ //
+ return (fDistortionMap) ? (AliTPCCalPad*)fDistortionMap->At(i):0;
+}
//_____________________________________________________________________________
AliCDBEntry* AliTPCcalibDB::GetCDBEntry(const char* cdbPath)
entry->SetOwner(kTRUE);
fPadGainFactor = (AliTPCCalPad*)entry->GetObject();
}else{
- AliFatal("TPC - Missing calibration entry")
+ AliFatal("TPC - Missing calibration entry TPC/Calib/PadGainFactor")
}
//
entry = GetCDBEntry("TPC/Calib/TimeGain");
entry->SetOwner(kTRUE);
fTimeGainSplines = (TObjArray*)entry->GetObject();
}else{
- AliFatal("TPC - Missing calibration entry")
+ AliFatal("TPC - Missing calibration entry TPC/Calib/Timegain")
}
//
entry = GetCDBEntry("TPC/Calib/GainFactorDedx");
entry->SetOwner(kTRUE);
fDedxGainFactor = (AliTPCCalPad*)entry->GetObject();
}else{
- AliFatal("TPC - Missing calibration entry")
+ AliFatal("TPC - Missing calibration entry TPC/Calib/gainFactordEdx")
}
//
entry = GetCDBEntry("TPC/Calib/PadTime0");
if (entry){
//if (fPadTime0) delete fPadTime0;
entry->SetOwner(kTRUE);
- fDistortionMap =(TObjArray*)entry->GetObject();
+ fDistortionMap =dynamic_cast<TObjArray*>(entry->GetObject());
}else{
//AliFatal("TPC - Missing calibration entry")
}
entry->SetOwner(kTRUE);
fParam = (AliTPCParam*)(entry->GetObject()->Clone());
}else{
- AliFatal("TPC - Missing calibration entry")
+ AliFatal("TPC - Missing calibration entry TPC/Calib/Parameters")
}
entry = GetCDBEntry("TPC/Calib/ClusterParam");
//entry->SetOwner(kTRUE);
fCTPTimeParams=dynamic_cast<AliCTPTimeParams*>(entry->GetObject());
}else{
- AliFatal("TPC - Missing calibration entry")
+ AliError("TPC - Missing calibration entry")
}
+ //TPC space point correction data
+ entry = GetCDBEntry("TPC/Calib/Correction");
+ if (entry){
+ //entry->SetOwner(kTRUE);
+ fComposedCorrection=dynamic_cast<AliTPCCorrection*>(entry->GetObject());
+ if (fComposedCorrection) fComposedCorrection->Init();
+ fComposedCorrectionArray=dynamic_cast<TObjArray*>(entry->GetObject());
+ if (fComposedCorrectionArray){
+ for (Int_t i=0; i<fComposedCorrectionArray->GetEntries(); i++){
+ AliTPCCorrection* composedCorrection= dynamic_cast<AliTPCCorrection*>(fComposedCorrectionArray->At(i));
+ if (composedCorrection) composedCorrection->Init();
+ }
+ }
+ }else{
+ AliError("TPC - Missing calibration entry- TPC/Calib/Correction")
+ }
+
//
if (!fTransform) {
fTransform=new AliTPCTransform();
fDataQA=dynamic_cast<AliTPCdataQA*>(entry->GetObject());
}
// High voltage
- entry = AliCDBManager::Instance()->Get("TPC/Calib/HighVoltage",fRun);
- if (entry) {
- fVoltageArray.AddAt(entry->GetObject(),fRun);
+ if (fRun>=0){
+ entry = AliCDBManager::Instance()->Get("TPC/Calib/HighVoltage",fRun);
+ if (entry) {
+ fVoltageArray.AddAt(entry->GetObject(),fRun);
+ }
}
}
// - > Don't use it for reconstruction - Only for Calibration studies
//
if (run<=0) return;
+ fRun=run;
AliCDBEntry * entry = 0;
if (run>= fRunList.fN){
fRunList.Set(run*2+1);
//
// Get GRP object for given run
//
+ if (run>= ((Instance()->fGRPArray)).GetEntriesFast()){
+ Instance()->UpdateRunInformations(run);
+ }
AliGRPObject * grpRun = dynamic_cast<AliGRPObject *>((Instance()->fGRPArray).At(run));
if (!grpRun) {
Instance()->UpdateRunInformations(run);
}
}
if (sigDigits>=0){
- val/=10;
+ // val/=10;
val=(Float_t)TMath::Floor(val * TMath::Power(10., sigDigits) + .5) / TMath::Power(10., sigDigits);
- val*=10;
+ // val*=10;
}
return val;
}
//
TString file(filename);
- if (file.IsNull()) file=Form("guiTreeRun_%d.root",fRun);
+ if (file.IsNull()) file=Form("guiTreeRun_%lld.root",fRun);
prep.DumpToFile(file.Data());
return kTRUE;
}
//
// Notice - Extrapolation outside of calibration range - using constant function
//
- Double_t result;
+ Double_t result=0;
// mode 1 automatic mode - according to the distance to the valid calibration
// -
Double_t deltaP=0, driftP=0, wP = 0.;
return -result/250.; //normalized before
}
-AliTPCCalPad* AliTPCcalibDB::MakeDeadMap(const char* nameMappingFile) {
+AliTPCCalPad* AliTPCcalibDB::MakeDeadMap(Double_t notInMap, const char* nameMappingFile) {
//
// Read list of active DDLs from OCDB entry
// Generate and return AliTPCCalPad containing 1 for all pads in active DDLs,
// 0 for all pads in non-active DDLs.
+// For DDLs with missing status information (no DCS input point to Shuttle),
+// the value of the AliTPCCalPad entry is determined by the parameter
+// notInMap (default value 1)
//
char chinfo[1000];
Int_t row = mapping->GetPadRow(patch, hwadd); // row in a ROC (IROC or OROC)
// Int_t globalrow = mapping.GetGlobalPadRow(patch, hwadd); // row in full sector (IROC plus OROC)
Int_t pad = mapping->GetPad(patch, hwadd);
- active=TString(arrDDL[i]).Atof();
+ if (!TString(arrDDL[i]).IsDigit()) {
+ active = notInMap;
+ } else {
+ active=TString(arrDDL[i]).Atof();
+ }
calRoc->SetValue(row,pad,active);
} // end channel for loop
} // end altro for loop
}
+
+AliTPCCorrection * AliTPCcalibDB::GetTPCComposedCorrection(Float_t field) const{
+ //
+ // GetComposed correction for given field setting
+ //
+ if (!fComposedCorrectionArray) return 0;
+ if (field>0.1) return (AliTPCCorrection *)fComposedCorrectionArray->At(1);
+ if (field<-0.1) return (AliTPCCorrection *)fComposedCorrectionArray->At(2);
+ return (AliTPCCorrection *)fComposedCorrectionArray->At(0);
+
+}
+