X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=TPC%2FAliTPCcalibDB.cxx;h=b2c520ba3cc394793efcc14dfd51cfb38980fb9b;hb=7c6ab170e1756338962895b6526abbc562b2b532;hp=37f96be3ac02f00588794810b4cb6b4057e22f91;hpb=a52d8b6f06327ba0b109069137a68cb501a0a0ef;p=u%2Fmrichter%2FAliRoot.git diff --git a/TPC/AliTPCcalibDB.cxx b/TPC/AliTPCcalibDB.cxx index 37f96be3ac0..b2c520ba3cc 100644 --- a/TPC/AliTPCcalibDB.cxx +++ b/TPC/AliTPCcalibDB.cxx @@ -125,6 +125,7 @@ class AliTPCCalDet; #include "AliTPCCalibRaw.h" #include "AliTPCParam.h" #include "AliTPCCorrection.h" +#include "AliTPCComposedCorrection.h" #include "AliTPCPreprocessorOnline.h" @@ -202,8 +203,10 @@ AliTPCcalibDB::AliTPCcalibDB(): fVdriftArray(100000), //! array of v drift interfaces fDriftCorrectionArray(100000), //! array of drift correction fRunList(100000), //! run list - indicates try to get the run param + fBHasAlignmentOCDB(kFALSE), // Flag - has the alignment on the composed correction ? fDButil(0), - fCTPTimeParams(0) + fCTPTimeParams(0), + fMode(-1) { // // constructor @@ -245,8 +248,10 @@ AliTPCcalibDB::AliTPCcalibDB(const AliTPCcalibDB& ): fVdriftArray(0), //! array of v drift interfaces fDriftCorrectionArray(0), //! array of v drift corrections fRunList(0), //! run list - indicates try to get the run param + fBHasAlignmentOCDB(kFALSE), // Flag - has the alignment on the composed correction ? fDButil(0), - fCTPTimeParams(0) + fCTPTimeParams(0), + fMode(-1) { // // Copy constructor invalid -- singleton implementation @@ -291,7 +296,7 @@ AliCDBEntry* AliTPCcalibDB::GetCDBEntry(const char* cdbPath) AliCDBEntry* entry = AliCDBManager::Instance()->Get(cdbPath, fRun); if (!entry) { - sprintf(chinfo,"AliTPCcalibDB: Failed to get entry:\t%s ", cdbPath); + snprintf(chinfo,1000,"AliTPCcalibDB: Failed to get entry:\t%s ", cdbPath); AliError(chinfo); return 0; } @@ -330,7 +335,7 @@ void AliTPCcalibDB::Update(){ entry->SetOwner(kTRUE); fPadGainFactor = (AliTPCCalPad*)entry->GetObject(); }else{ - AliFatal("TPC - Missing calibration entry TPC/Calib/PadGainFactor") + AliFatal("TPC - Missing calibration entry TPC/Calib/PadGainFactor"); } // entry = GetCDBEntry("TPC/Calib/TimeGain"); @@ -339,7 +344,7 @@ void AliTPCcalibDB::Update(){ entry->SetOwner(kTRUE); fTimeGainSplines = (TObjArray*)entry->GetObject(); }else{ - AliFatal("TPC - Missing calibration entry TPC/Calib/Timegain") + AliFatal("TPC - Missing calibration entry TPC/Calib/Timegain"); } // entry = GetCDBEntry("TPC/Calib/GainFactorDedx"); @@ -347,7 +352,7 @@ void AliTPCcalibDB::Update(){ entry->SetOwner(kTRUE); fDedxGainFactor = (AliTPCCalPad*)entry->GetObject(); }else{ - AliFatal("TPC - Missing calibration entry TPC/Calib/gainFactordEdx") + AliFatal("TPC - Missing calibration entry TPC/Calib/gainFactordEdx"); } // entry = GetCDBEntry("TPC/Calib/PadTime0"); @@ -356,7 +361,7 @@ void AliTPCcalibDB::Update(){ entry->SetOwner(kTRUE); fPadTime0 = (AliTPCCalPad*)entry->GetObject(); }else{ - AliFatal("TPC - Missing calibration entry") + AliFatal("TPC - Missing calibration entry"); } entry = GetCDBEntry("TPC/Calib/Distortion"); @@ -377,7 +382,7 @@ void AliTPCcalibDB::Update(){ entry->SetOwner(kTRUE); fPadNoise = (AliTPCCalPad*)entry->GetObject(); }else{ - AliFatal("TPC - Missing calibration entry") + AliFatal("TPC - Missing calibration entry"); } entry = GetCDBEntry("TPC/Calib/Pedestals"); @@ -400,7 +405,7 @@ void AliTPCcalibDB::Update(){ entry->SetOwner(kTRUE); fParam = (AliTPCParam*)(entry->GetObject()->Clone()); }else{ - AliFatal("TPC - Missing calibration entry TPC/Calib/Parameters") + AliFatal("TPC - Missing calibration entry TPC/Calib/Parameters"); } entry = GetCDBEntry("TPC/Calib/ClusterParam"); @@ -408,7 +413,7 @@ void AliTPCcalibDB::Update(){ entry->SetOwner(kTRUE); fClusterParam = (AliTPCClusterParam*)(entry->GetObject()->Clone()); }else{ - AliFatal("TPC - Missing calibration entry") + AliFatal("TPC - Missing calibration entry"); } //ALTRO configuration data @@ -417,7 +422,7 @@ void AliTPCcalibDB::Update(){ entry->SetOwner(kTRUE); fALTROConfigData=(TObjArray*)(entry->GetObject()); }else{ - AliFatal("TPC - Missing calibration entry") + AliFatal("TPC - Missing calibration entry"); } //Calibration Pulser data @@ -455,7 +460,7 @@ void AliTPCcalibDB::Update(){ //entry->SetOwner(kTRUE); fCTPTimeParams=dynamic_cast(entry->GetObject()); }else{ - AliError("TPC - Missing calibration entry") + AliError("TPC - Missing calibration entry"); } //TPC space point correction data entry = GetCDBEntry("TPC/Calib/Correction"); @@ -466,14 +471,22 @@ void AliTPCcalibDB::Update(){ fComposedCorrectionArray=dynamic_cast(entry->GetObject()); if (fComposedCorrectionArray){ for (Int_t i=0; iGetEntries(); i++){ - AliTPCCorrection* composedCorrection= dynamic_cast(fComposedCorrectionArray->At(i)); - if (composedCorrection) composedCorrection->Init(); + AliTPCComposedCorrection* composedCorrection= dynamic_cast(fComposedCorrectionArray->At(i)); + if (composedCorrection) { + composedCorrection->Init(); + if (composedCorrection->GetCorrections()){ + if (composedCorrection->GetCorrections()->FindObject("FitAlignTPC")){ + fBHasAlignmentOCDB=kTRUE; + } + } + } } - } + } }else{ - AliError("TPC - Missing calibration entry- TPC/Calib/Correction") - } - + AliError("TPC - Missing calibration entry- TPC/Calib/Correction"); + } + //RCU trigger config mode + fMode=GetRCUTriggerConfig(); // if (!fTransform) { fTransform=new AliTPCTransform(); @@ -841,9 +854,8 @@ Bool_t AliTPCcalibDB::IsTrgL0() // // return if the FEE readout was triggered on L0 // - Int_t mode=GetRCUTriggerConfig(); - if (mode<0) return kFALSE; - return (mode==1); + if (fMode<0) return kFALSE; + return (fMode==1); } Bool_t AliTPCcalibDB::IsTrgL1() @@ -851,9 +863,8 @@ Bool_t AliTPCcalibDB::IsTrgL1() // // return if the FEE readout was triggered on L1 // - Int_t mode=GetRCUTriggerConfig(); - if (mode<0) return kFALSE; - return (mode==0); + if (fMode<0) return kFALSE; + return (fMode==0); } void AliTPCcalibDB::RegisterExB(Int_t index, Float_t bz, Bool_t bdelete){ @@ -970,14 +981,21 @@ void AliTPCcalibDB::UpdateRunInformations( Int_t run, Bool_t force){ if (entry) { fTimeGainSplinesArray.AddAt(entry->GetObject(),run); }else{ - AliFatal("TPC - Missing calibration entry TimeGain") + AliFatal("TPC - Missing calibration entry TimeGain"); } // entry = AliCDBManager::Instance()->Get("TPC/Calib/TimeDrift",run); if (entry) { - fDriftCorrectionArray.AddAt(entry->GetObject(),run); + TObjArray * timeArray = (TObjArray*)entry->GetObject(); + fDriftCorrectionArray.AddAt(entry->GetObject(),run); + AliTPCCorrection * correctionTime = (AliTPCCorrection *)timeArray->FindObject("FitCorrectionTime"); + if (correctionTime && fComposedCorrectionArray){ + correctionTime->Init(); + if (fComposedCorrectionArray->GetEntriesFast()<4) fComposedCorrectionArray->Expand(40); + fComposedCorrectionArray->AddAt(correctionTime,4); //add time dependent correction to the list of available corrections + } }else{ - AliFatal("TPC - Missing calibration entry TimeDrift") + AliFatal("TPC - Missing calibration entry TimeDrift"); } // entry = AliCDBManager::Instance()->Get("TPC/Calib/Temperature",run); @@ -996,7 +1014,7 @@ void AliTPCcalibDB::UpdateRunInformations( Int_t run, Bool_t force){ accept = fDButil->FilterTemperature(temp)>0.1; } if (press) { - const Double_t kMinP=950.; + const Double_t kMinP=900.; const Double_t kMaxP=1050.; const Double_t kMaxdP=10.; const Double_t kSigmaCut=4.; @@ -1179,6 +1197,7 @@ AliTPCCalibVdrift * AliTPCcalibDB::GetVdrift(Int_t run){ // // Get the interface to the the vdrift // + if (run>=fVdriftArray.GetEntriesFast()) UpdateRunInformations(run); AliTPCCalibVdrift * vdrift = (AliTPCCalibVdrift*)fVdriftArray.At(run); if (!vdrift) { UpdateRunInformations(run); @@ -1322,7 +1341,7 @@ Float_t AliTPCcalibDB::GetDCSSensorMeanValue(AliDCSSensorArray *arr, const char return val; } -Float_t AliTPCcalibDB::GetChamberHighVoltage(Int_t run, Int_t sector, Int_t timeStamp, Int_t sigDigits) { +Float_t AliTPCcalibDB::GetChamberHighVoltage(Int_t run, Int_t sector, Int_t timeStamp, Int_t sigDigits, Bool_t current) { // // return the chamber HV for given run and time: 0-35 IROC, 36-72 OROC // if timeStamp==-1 return mean value @@ -1341,6 +1360,16 @@ Float_t AliTPCcalibDB::GetChamberHighVoltage(Int_t run, Int_t sector, Int_t time //OROC sensorName=Form("TPC_ANODE_O_%c%02d_0_VMEAS",sideName,sector%18); } + if (current){ + if (sector<36){ + //IROC + sensorName=Form("TPC_ANODE_I_%c%02d_IMEAS",sideName,sector%18); + }else{ + //OROC + sensorName=Form("TPC_ANODE_O_%c%02d_0_IMEAS",sideName,sector%18); + } + + } if (timeStamp==-1){ val=AliTPCcalibDB::GetDCSSensorMeanValue(voltageArray, sensorName.Data(),sigDigits); } else { @@ -1629,6 +1658,7 @@ AliGRPObject * AliTPCcalibDB::MakeGRPObjectFromMap(TMap *map){ AliGRPObject *grpRun = new AliGRPObject; grpRun->ReadValuesFromMap(map); grpRun->SetCavernAtmosPressure(sensor2); + grpRun->SetCavernAtmosPressure(sensor2); grpRun->SetSurfaceAtmosPressure(sensor); return grpRun; } @@ -1899,7 +1929,7 @@ AliTPCCalPad* AliTPCcalibDB::MakeDeadMap(Double_t notInMap, const char* nameMapp TFile *fileMapping = new TFile(nameMappingFile, "read"); AliTPCmapper *mapping = (AliTPCmapper*) fileMapping->Get("tpcMapping"); if (!mapping) { - sprintf(chinfo,"Failed to get mapping object from %s. ...\n", nameMappingFile); + snprintf(chinfo,1000,"Failed to get mapping object from %s. ...\n", nameMappingFile); AliError (chinfo); return 0; } @@ -1933,8 +1963,11 @@ AliTPCCalPad* AliTPCcalibDB::MakeDeadMap(Double_t notInMap, const char* nameMapp Double_t active; for (Int_t i=0; iGetNumDdl(); i++) { idDDL= i+offset; + if (idDDL<0) continue; Int_t patch = mapping->GetPatchFromEquipmentID(idDDL); + if (patch<0) continue; Int_t roc=mapping->GetRocFromEquipmentID(idDDL); + if (roc<0) continue; AliTPCCalROC *calRoc=deadMap->GetCalROC(roc); if (calRoc) { for ( Int_t branch = 0; branch < 2; branch++ ) { @@ -1965,11 +1998,39 @@ AliTPCCalPad* AliTPCcalibDB::MakeDeadMap(Double_t notInMap, const char* nameMapp AliTPCCorrection * AliTPCcalibDB::GetTPCComposedCorrection(Float_t field) const{ // // GetComposed correction for given field setting - // + // If not specific correction for field used return correction for all field + // - Complication needed to gaurantee OCDB back compatibility + // - Not neeeded for the new space point correction if (!fComposedCorrectionArray) return 0; - if (field>0.1) return (AliTPCCorrection *)fComposedCorrectionArray->At(1); - if (field<-0.1) return (AliTPCCorrection *)fComposedCorrectionArray->At(2); + if (field>0.1 && fComposedCorrectionArray->At(1)) { + return (AliTPCCorrection *)fComposedCorrectionArray->At(1); + } + if (field<-0.1 &&fComposedCorrectionArray->At(2)) { + return (AliTPCCorrection *)fComposedCorrectionArray->At(2); + } return (AliTPCCorrection *)fComposedCorrectionArray->At(0); } + +AliTPCCorrection * AliTPCcalibDB::GetTPCComposedCorrectionDelta() const{ + // + // GetComposedCorrection delta + // Delta is time dependent - taken form the CalibTime OCDB entry + // + if (!fComposedCorrectionArray) return 0; + if (fRun<0) return 0; + if (fDriftCorrectionArray.GetEntriesFast()<=fRun) return 0; + if (fDriftCorrectionArray.At(fRun)==0) return 0; + if (fComposedCorrectionArray->GetEntriesFast()<=4) { + fComposedCorrectionArray->Expand(5); + TObjArray * timeArray =(TObjArray*)(fDriftCorrectionArray.At(fRun)); + AliTPCCorrection * correctionTime = (AliTPCCorrection *)timeArray->FindObject("FitCorrectionTime"); + if (correctionTime){ + correctionTime->Init(); + fComposedCorrectionArray->AddAt(correctionTime,4); //add time dependent c + } + } + return (AliTPCCorrection *)fComposedCorrectionArray->At(4); // +} +