X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=TRD%2FAliTRDcalibDB.cxx;h=e1442252a83426a89152c0f012733815f429b2b6;hb=8d071f77d224a32e5b7c4c9700bdeacac56136ad;hp=102721da5e56d5a614b06d136caf2be2cc4789f5;hpb=4806f526811a1438d9ce0a7620b178b430950bdf;p=u%2Fmrichter%2FAliRoot.git diff --git a/TRD/AliTRDcalibDB.cxx b/TRD/AliTRDcalibDB.cxx index 102721da5e5..e1442252a83 100644 --- a/TRD/AliTRDcalibDB.cxx +++ b/TRD/AliTRDcalibDB.cxx @@ -28,7 +28,9 @@ // // /////////////////////////////////////////////////////////////////////////////// +#include #include +#include #include "AliCDBManager.h" #include "AliCDBStorage.h" @@ -36,6 +38,7 @@ #include "AliLog.h" #include "AliTRDcalibDB.h" +#include "AliTRDrecoParam.h" #include "AliTRDgeometry.h" #include "AliTRDpadPlane.h" #include "AliTRDCommonParam.h" @@ -43,12 +46,10 @@ #include "Cal/AliTRDCalROC.h" #include "Cal/AliTRDCalPad.h" #include "Cal/AliTRDCalDet.h" -#include "Cal/AliTRDCalGlobals.h" -#include "Cal/AliTRDCalPIDLQ.h" +#include "Cal/AliTRDCalFEE.h" +#include "Cal/AliTRDCalPID.h" #include "Cal/AliTRDCalMonitoring.h" -#include "Cal/AliTRDCalSuperModuleStatus.h" #include "Cal/AliTRDCalChamberStatus.h" -#include "Cal/AliTRDCalMCMStatus.h" #include "Cal/AliTRDCalPadStatus.h" #include "Cal/AliTRDCalSingleChamberStatus.h" @@ -122,7 +123,7 @@ AliTRDcalibDB::AliTRDcalibDB() // Create the sampled PRF SamplePRF(); - + } //_____________________________________________________________________________ @@ -224,6 +225,13 @@ const TObject *AliTRDcalibDB::GetCachedCDBObject(Int_t id) case kIDGainFactorChamber : return CacheCDBEntry(kIDGainFactorChamber ,"TRD/Calib/ChamberGainFactor"); break; + case kIDNoiseChamber : + return CacheCDBEntry(kIDNoiseChamber ,"TRD/Calib/DetNoise"); + break; + case kIDNoisePad : + return CacheCDBEntry(kIDNoisePad ,"TRD/Calib/PadNoise"); + break; + // Parameters defined per pad case kIDPRFWidth : @@ -231,15 +239,9 @@ const TObject *AliTRDcalibDB::GetCachedCDBObject(Int_t id) break; // Status values - case kIDSuperModuleStatus : - return CacheCDBEntry(kIDSuperModuleStatus ,"TRD/Calib/SuperModuleStatus"); - break; case kIDChamberStatus : return CacheCDBEntry(kIDChamberStatus ,"TRD/Calib/ChamberStatus"); break; - case kIDMCMStatus : - return CacheCDBEntry(kIDMCMStatus ,"TRD/Calib/MCMStatus"); - break; case kIDPadStatus : return CacheCDBEntry(kIDPadStatus ,"TRD/Calib/PadStatus"); break; @@ -248,12 +250,17 @@ const TObject *AliTRDcalibDB::GetCachedCDBObject(Int_t id) case kIDMonitoringData : return CacheCDBEntry(kIDMonitoringData ,"TRD/Calib/MonitoringData"); break; - case kIDGlobals : - return CacheCDBEntry(kIDGlobals ,"TRD/Calib/Globals"); + case kIDFEE : + return CacheCDBEntry(kIDFEE ,"TRD/Calib/FEE"); break; + case kIDPIDNN : + return CacheCDBEntry(kIDPIDNN ,"TRD/Calib/PIDNN"); case kIDPIDLQ : return CacheCDBEntry(kIDPIDLQ ,"TRD/Calib/PIDLQ"); break; + case kIDRecoParam : + return CacheCDBEntry(kIDRecoParam ,"TRD/Calib/RecoParam"); + break; } @@ -324,7 +331,8 @@ void AliTRDcalibDB::Invalidate() for (Int_t i = 0; i < kCDBCacheSize; ++i) { if (fCDBEntries[i]) { if (AliCDBManager::Instance()->GetCacheFlag() == kFALSE) { - if ((fCDBEntries[i]->IsOwner() == kFALSE) && fCDBCache[i]) { + if ((fCDBEntries[i]->IsOwner() == kFALSE) && + (fCDBCache[i])) { delete fCDBCache[i]; } delete fCDBEntries[i]; @@ -334,6 +342,76 @@ void AliTRDcalibDB::Invalidate() } } +} +//_____________________________________________________________________________ +Float_t AliTRDcalibDB::GetNoise(Int_t det, Int_t col, Int_t row) +{ + // + // Returns the noise level in ADC counts for the given pad. + // + + const AliTRDCalPad *calPad = dynamic_cast + (GetCachedCDBObject(kIDNoisePad)); + if (!calPad) { + return -1; + } + + AliTRDCalROC *roc = calPad->GetCalROC(det); + if (!roc) { + return -1; + } + + const AliTRDCalDet *calChamber = dynamic_cast + (GetCachedCDBObject(kIDNoiseChamber)); + if (!calChamber) { + return -1; + } + + return calChamber->GetValue(det) * roc->GetValue(col,row); + +} + +//_____________________________________________________________________________ +AliTRDCalROC *AliTRDcalibDB::GetNoiseROC(Int_t det) +{ + // + // Returns the Vdrift calibration object for a given ROC + // containing one number per pad + // + + const AliTRDCalPad *calPad = dynamic_cast + (GetCachedCDBObject(kIDNoisePad)); + if (!calPad) { + return 0; + } + + AliTRDCalROC *roc = calPad->GetCalROC(det); + if (!roc) { + return 0; + } + else { + return roc; + } + +} + +//_____________________________________________________________________________ +const AliTRDCalDet *AliTRDcalibDB::GetNoiseDet() +{ + // + // Returns the Vdrift calibration object + // containing one number per detector + // + + const AliTRDCalDet *calChamber = dynamic_cast + (GetCachedCDBObject(kIDNoiseChamber)); + if (!calChamber) { + return 0; + } + else { + return calChamber; + } + } //_____________________________________________________________________________ @@ -363,6 +441,49 @@ Float_t AliTRDcalibDB::GetVdrift(Int_t det, Int_t col, Int_t row) return calChamber->GetValue(det) * roc->GetValue(col,row); } + +//_____________________________________________________________________________ +AliTRDCalROC *AliTRDcalibDB::GetVdriftROC(Int_t det) +{ + // + // Returns the Vdrift calibration object for a given ROC + // containing one number per pad + // + + const AliTRDCalPad *calPad = dynamic_cast + (GetCachedCDBObject(kIDVdriftPad)); + if (!calPad) { + return 0; + } + + AliTRDCalROC *roc = calPad->GetCalROC(det); + if (!roc) { + return 0; + } + else { + return roc; + } + +} + +//_____________________________________________________________________________ +const AliTRDCalDet *AliTRDcalibDB::GetVdriftDet() +{ + // + // Returns the Vdrift calibration object + // containing one number per detector + // + + const AliTRDCalDet *calChamber = dynamic_cast + (GetCachedCDBObject(kIDVdriftChamber)); + if (!calChamber) { + return 0; + } + else { + return calChamber; + } + +} //_____________________________________________________________________________ Float_t AliTRDcalibDB::GetVdriftAverage(Int_t det) @@ -388,24 +509,67 @@ Float_t AliTRDcalibDB::GetT0(Int_t det, Int_t col, Int_t row) // Returns t0 for the given pad. // - const AliTRDCalPad *calPad = dynamic_cast - (GetCachedCDBObject(kIDT0Pad)); + const AliTRDCalPad *calPad = dynamic_cast + (GetCachedCDBObject(kIDT0Pad)); if (!calPad) { return -1; } - AliTRDCalROC *roc = calPad->GetCalROC(det); + AliTRDCalROC *roc = calPad->GetCalROC(det); if (!roc) { return -1; } - const AliTRDCalDet *calChamber = dynamic_cast - (GetCachedCDBObject(kIDT0Chamber)); + const AliTRDCalDet *calChamber = dynamic_cast + (GetCachedCDBObject(kIDT0Chamber)); if (!calChamber) { return -1; } - return calChamber->GetValue(det) * roc->GetValue(col,row); + return calChamber->GetValue(det) + roc->GetValue(col,row); + +} + +//_____________________________________________________________________________ +AliTRDCalROC *AliTRDcalibDB::GetT0ROC(Int_t det) +{ + // + // Returns the t0 calibration object for a given ROC + // containing one number per pad + // + + const AliTRDCalPad *calPad = dynamic_cast + (GetCachedCDBObject(kIDT0Pad)); + if (!calPad) { + return 0; + } + + AliTRDCalROC *roc = calPad->GetCalROC(det); + if (!roc) { + return 0; + } + else { + return roc; + } + +} + +//_____________________________________________________________________________ +const AliTRDCalDet *AliTRDcalibDB::GetT0Det() +{ + // + // Returns the t0 calibration object + // containing one number per detector + // + + const AliTRDCalDet *calChamber = dynamic_cast + (GetCachedCDBObject(kIDT0Chamber)); + if (!calChamber) { + return 0; + } + else { + return calChamber; + } } @@ -416,13 +580,29 @@ Float_t AliTRDcalibDB::GetT0Average(Int_t det) // Returns the average t0 for the given detector // + const AliTRDCalPad *calPad = dynamic_cast + (GetCachedCDBObject(kIDT0Pad)); + if (!calPad) { + return -1; + } + + AliTRDCalROC *roc = calPad->GetCalROC(det); + if (!roc) { + return -1; + } + const AliTRDCalDet *calDet = dynamic_cast (GetCachedCDBObject(kIDT0Chamber)); if (!calDet) { return -1; } - return calDet->GetValue(det); + Double_t mean = 0.0; + for (Int_t channel = 0; channel < roc->GetNchannels(); ++channel) { + mean += (calDet->GetValue(det) + roc->GetValue(channel)) / roc->GetNchannels(); + } + + return mean; } @@ -440,8 +620,9 @@ Float_t AliTRDcalibDB::GetGainFactor(Int_t det, Int_t col, Int_t row) } AliTRDCalROC *roc = calPad->GetCalROC(det); - if (!roc) + if (!roc) { return -1; + } const AliTRDCalDet *calChamber = dynamic_cast (GetCachedCDBObject(kIDGainFactorChamber)); @@ -453,6 +634,48 @@ Float_t AliTRDcalibDB::GetGainFactor(Int_t det, Int_t col, Int_t row) } +//_____________________________________________________________________________ +AliTRDCalROC *AliTRDcalibDB::GetGainFactorROC(Int_t det) +{ + // + // Returns the gain factor calibration object for a given ROC + // + + const AliTRDCalPad *calPad = dynamic_cast + (GetCachedCDBObject(kIDGainFactorPad)); + if (!calPad) { + return 0; + } + + AliTRDCalROC *roc = calPad->GetCalROC(det); + if (!roc) { + return 0; + } + else { + return roc; + } + +} + +//_____________________________________________________________________________ +const AliTRDCalDet *AliTRDcalibDB::GetGainFactorDet() +{ + // + // Returns the gain factor calibration object + // containing one number per detector + // + + const AliTRDCalDet *calChamber = dynamic_cast + (GetCachedCDBObject(kIDGainFactorChamber)); + if (!calChamber) { + return 0; + } + else { + return calChamber; + } + +} + //_____________________________________________________________________________ Float_t AliTRDcalibDB::GetGainFactorAverage(Int_t det) { @@ -471,41 +694,48 @@ Float_t AliTRDcalibDB::GetGainFactorAverage(Int_t det) } //_____________________________________________________________________________ -Float_t AliTRDcalibDB::GetPRFWidth(Int_t det, Int_t col, Int_t row) +AliTRDCalROC *AliTRDcalibDB::GetPRFROC(Int_t det) { // - // Returns the PRF width for the given pad. + // Returns the PRF calibration object for a given ROC + // containing one number per pad // - const AliTRDCalPad *calPad = dynamic_cast - (GetCachedCDBObject(kIDPRFWidth)); + const AliTRDCalPad *calPad = dynamic_cast + (GetCachedCDBObject(kIDPRFWidth)); if (!calPad) { - return -1; + return 0; } - AliTRDCalROC *roc = calPad->GetCalROC(det); + AliTRDCalROC *roc = calPad->GetCalROC(det); if (!roc) { - return -1; + return 0; + } + else { + return roc; } - - return roc->GetValue(col,row); } //_____________________________________________________________________________ -Float_t AliTRDcalibDB::GetSamplingFrequency() +Float_t AliTRDcalibDB::GetPRFWidth(Int_t det, Int_t col, Int_t row) { // - // Returns the sampling frequency of the TRD read-out. + // Returns the PRF width for the given pad. // - const AliTRDCalGlobals *calGlobal = dynamic_cast - (GetCachedCDBObject(kIDGlobals)); - if (!calGlobal) { - return -1; - } + const AliTRDCalPad *calPad = dynamic_cast + (GetCachedCDBObject(kIDPRFWidth)); + if (!calPad) { + return -1; + } + + AliTRDCalROC *roc = calPad->GetCalROC(det); + if (!roc) { + return -1; + } - return calGlobal->GetSamplingFrequency(); + return roc->GetValue(col,row); } @@ -516,13 +746,13 @@ Int_t AliTRDcalibDB::GetNumberOfTimeBins() // Returns the number of time bins which are read-out. // - const AliTRDCalGlobals *calGlobal = dynamic_cast - (GetCachedCDBObject(kIDGlobals)); - if (!calGlobal) { + const AliTRDCalFEE *calFEE = dynamic_cast + (GetCachedCDBObject(kIDFEE)); + if (!calFEE) { return -1; } - return calGlobal->GetNumberOfTimeBins(); + return calFEE->GetNumberOfTimeBins(); } @@ -533,8 +763,8 @@ Char_t AliTRDcalibDB::GetPadStatus(Int_t det, Int_t col, Int_t row) // Returns the status of the given pad // - const AliTRDCalPadStatus *cal = dynamic_cast - (GetCachedCDBObject(kIDPadStatus)); + const AliTRDCalPadStatus *cal = dynamic_cast + (GetCachedCDBObject(kIDPadStatus)); if (!cal) { return -1; } @@ -549,19 +779,25 @@ Char_t AliTRDcalibDB::GetPadStatus(Int_t det, Int_t col, Int_t row) } //_____________________________________________________________________________ -Char_t AliTRDcalibDB::GetMCMStatus(Int_t det, Int_t col, Int_t row) +AliTRDCalSingleChamberStatus* AliTRDcalibDB::GetPadStatusROC(Int_t det) { // - // Returns the status of the given MCM + // Returns the pad status calibration object for a given ROC // - const AliTRDCalMCMStatus *cal = dynamic_cast - (GetCachedCDBObject(kIDMCMStatus)); + const AliTRDCalPadStatus *cal = dynamic_cast + (GetCachedCDBObject(kIDPadStatus)); if (!cal) { - return -1; + return 0; } - return cal->GetStatus(det,col,row); + AliTRDCalSingleChamberStatus *roc = cal->GetCalROC(det); + if (!roc) { + return 0; + } + else { + return roc; + } } @@ -583,22 +819,17 @@ Char_t AliTRDcalibDB::GetChamberStatus(Int_t det) } //_____________________________________________________________________________ -Char_t AliTRDcalibDB::GetSuperModuleStatus(Int_t sm) +AliTRDrecoParam* AliTRDcalibDB::GetRecoParam(Int_t */*eventtype*/) { - // - // Returns the status of the given chamber - // - - const AliTRDCalSuperModuleStatus *cal = dynamic_cast - (GetCachedCDBObject(kIDSuperModuleStatus)); - if (!cal) { - return -1; - } - - return cal->GetStatus(sm); + const TClonesArray *recos = dynamic_cast(GetCachedCDBObject(kIDRecoParam)); + if(!recos) return 0x0; + // calculate entry based on event type info + Int_t n = 0; //f(eventtype[0], eventtype[1], ....) + return (AliTRDrecoParam*)recos->UncheckedAt(n); } + //_____________________________________________________________________________ Bool_t AliTRDcalibDB::IsPadMasked(Int_t det, Int_t col, Int_t row) { @@ -651,19 +882,18 @@ Bool_t AliTRDcalibDB::IsPadBridgedRight(Int_t det, Int_t col, Int_t row) } //_____________________________________________________________________________ -Bool_t AliTRDcalibDB::IsMCMMasked(Int_t det, Int_t col, Int_t row) +Bool_t AliTRDcalibDB::IsPadNotConnected(Int_t det, Int_t col, Int_t row) { // // Returns status, see name of functions for details ;-) // - - const AliTRDCalMCMStatus * cal = dynamic_cast - (GetCachedCDBObject(kIDMCMStatus)); + const AliTRDCalPadStatus * cal = dynamic_cast + (GetCachedCDBObject(kIDPadStatus)); if (!cal) { return -1; } - return cal->IsMasked(det,col,row); + return cal->IsNotConnected(det,col,row); } @@ -702,58 +932,32 @@ Bool_t AliTRDcalibDB::IsChamberMasked(Int_t det) } //_____________________________________________________________________________ -Bool_t AliTRDcalibDB::IsSuperModuleInstalled(Int_t det) -{ - // - // Returns status, see name of functions for details ;-) - // - - const AliTRDCalSuperModuleStatus * cal = dynamic_cast - (GetCachedCDBObject(kIDSuperModuleStatus)); - if (!cal) { - return -1; - } - - return cal->IsInstalled(det); - -} - -//_____________________________________________________________________________ -Bool_t AliTRDcalibDB::IsSuperModuleMasked(Int_t det) +const AliTRDCalPID *AliTRDcalibDB::GetPIDObject(AliTRDReconstructor::AliTRDpidMethod method) { // - // Returns status, see name of functions for details ;-) + // Returns the object storing the distributions for PID with likelihood // - const AliTRDCalSuperModuleStatus * cal = dynamic_cast - (GetCachedCDBObject(kIDSuperModuleStatus)); - if (!cal) { - return -1; + switch(method) { + case AliTRDReconstructor::kLQPID: + return dynamic_cast(GetCachedCDBObject(kIDPIDLQ)); + case AliTRDReconstructor::kNNPID: + return dynamic_cast(GetCachedCDBObject(kIDPIDNN)); } - return cal->IsMasked(det); + return 0x0; } //_____________________________________________________________________________ -const AliTRDCalPIDLQ* AliTRDcalibDB::GetPIDLQObject() -{ - // - // Returns the object storing the distributions for PID with likelihood - // - - return dynamic_cast (GetCachedCDBObject(kIDPIDLQ)); - -} - -//_____________________________________________________________________________ -const AliTRDCalMonitoring* AliTRDcalibDB::GetMonitoringObject() +const AliTRDCalMonitoring *AliTRDcalibDB::GetMonitoringObject() { // // Returns the object storing the monitoring data // - return dynamic_cast (GetCachedCDBObject(kIDMonitoringData)); + return dynamic_cast + (GetCachedCDBObject(kIDMonitoringData)); } @@ -812,7 +1016,7 @@ void AliTRDcalibDB::SamplePRF() const Int_t kPRFbin = 61; - Float_t prf[kNplan][kPRFbin] = { + Float_t prf[kNlayer][kPRFbin] = { {2.9037e-02, 3.3608e-02, 3.9020e-02, 4.5292e-02, 5.2694e-02, 6.1362e-02, 7.1461e-02, 8.3362e-02, 9.7063e-02, 1.1307e-01, 1.3140e-01, 1.5235e-01, @@ -924,13 +1128,13 @@ void AliTRDcalibDB::SamplePRF() fPRFpad = ((Int_t) (1.0 / fPRFwid)); if (fPRFsmp) delete [] fPRFsmp; - fPRFsmp = new Float_t[kNplan*fPRFbin]; + fPRFsmp = new Float_t[kNlayer*fPRFbin]; Int_t ipos1; Int_t ipos2; Float_t diff; - for (Int_t iPla = 0; iPla < kNplan; iPla++) { + for (Int_t iLayer = 0; iLayer < kNlayer; iLayer++) { for (Int_t iBin = 0; iBin < fPRFbin; iBin++) { @@ -941,18 +1145,18 @@ void AliTRDcalibDB::SamplePRF() diff = bin - pad[ipos2++]; } while ((diff > 0) && (ipos2 < kPRFbin)); if (ipos2 == kPRFbin) { - fPRFsmp[iPla*fPRFbin+iBin] = prf[iPla][ipos2-1]; + fPRFsmp[iLayer*fPRFbin+iBin] = prf[iLayer][ipos2-1]; } else if (ipos2 == 1) { - fPRFsmp[iPla*fPRFbin+iBin] = prf[iPla][ipos2-1]; + fPRFsmp[iLayer*fPRFbin+iBin] = prf[iLayer][ipos2-1]; } else { ipos2--; if (ipos2 >= kPRFbin) ipos2 = kPRFbin - 1; ipos1 = ipos2 - 1; - fPRFsmp[iPla*fPRFbin+iBin] = prf[iPla][ipos2] - + diff * (prf[iPla][ipos2] - prf[iPla][ipos1]) - / sPRFwid; + fPRFsmp[iLayer*fPRFbin+iBin] = prf[iLayer][ipos2] + + diff * (prf[iLayer][ipos2] - prf[iLayer][ipos1]) + / sPRFwid; } } @@ -962,14 +1166,16 @@ void AliTRDcalibDB::SamplePRF() //_____________________________________________________________________________ Int_t AliTRDcalibDB::PadResponse(Double_t signal, Double_t dist - , Int_t plane, Double_t *pad) const + , Int_t layer, Double_t *pad) const { // // Applies the pad response + // So far this is the fixed parametrization and should be replaced by + // something dependent on calibration values // - Int_t iBin = ((Int_t) (( - dist - fPRFlo) / fPRFwid)); - Int_t iOff = plane * fPRFbin; + Int_t iBin = ((Int_t) ((-dist - fPRFlo) / fPRFwid)); + Int_t iOff = layer * fPRFbin; Int_t iBin0 = iBin - fPRFpad + iOff; Int_t iBin1 = iBin + iOff; @@ -978,13 +1184,13 @@ Int_t AliTRDcalibDB::PadResponse(Double_t signal, Double_t dist pad[0] = 0.0; pad[1] = 0.0; pad[2] = 0.0; - if ((iBin1 >= 0) && (iBin1 < (fPRFbin*kNplan))) { + if ((iBin1 >= 0) && (iBin1 < (fPRFbin*kNlayer))) { if (iBin0 >= 0) { pad[0] = signal * fPRFsmp[iBin0]; } pad[1] = signal * fPRFsmp[iBin1]; - if (iBin2 < (fPRFbin*kNplan)) { + if (iBin2 < (fPRFbin*kNlayer)) { pad[2] = signal * fPRFsmp[iBin2]; } @@ -998,4 +1204,3 @@ Int_t AliTRDcalibDB::PadResponse(Double_t signal, Double_t dist } } -