}
+//_____________________________________________________________________________
+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<const AliTRDCalPad *>
+ (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<const AliTRDCalDet *>
+ (GetCachedCDBObject(kIDT0Chamber));
+ if (!calChamber) {
+ return 0;
+ }
+ else {
+ return calChamber;
+ }
+
+}
+
//_____________________________________________________________________________
Float_t AliTRDcalibDB::GetT0Average(Int_t det)
{
}
AliTRDCalROC *roc = calPad->GetCalROC(det);
- if (!roc)
+ if (!roc) {
return -1;
+ }
const AliTRDCalDet *calChamber = dynamic_cast<const AliTRDCalDet *>
(GetCachedCDBObject(kIDGainFactorChamber));
}
+//_____________________________________________________________________________
+AliTRDCalROC *AliTRDcalibDB::GetGainFactorROC(Int_t det)
+{
+ //
+ // Returns the gain factor calibration object for a given ROC
+ // containing one number per pad
+ //
+
+ const AliTRDCalPad *calPad = dynamic_cast<const AliTRDCalPad *>
+ (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<const AliTRDCalDet *>
+ (GetCachedCDBObject(kIDGainFactorChamber));
+ if (!calChamber) {
+ return 0;
+ }
+ else {
+ return calChamber;
+ }
+
+}
+
//_____________________________________________________________________________
Float_t AliTRDcalibDB::GetGainFactorAverage(Int_t det)
{
{
//
// 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));
class AliTRDCalPIDLQ;
class AliTRDCalMonitoring;
+class AliTRDCalROC;
+class AliTRDCalDet;
class AliTRDcalibDB : public TObject {
, kNsect = 18
, kNdet = 540 };
- static AliTRDcalibDB *Instance();
- static void Terminate();
+ static AliTRDcalibDB *Instance();
+ static void Terminate();
- void SetRun(Long64_t run);
- Long64_t GetRun() { return fRun; }
+ void SetRun(Long64_t run);
+ Long64_t GetRun() { return fRun; }
- Float_t GetVdrift(Int_t det, Int_t col, Int_t row);
- Float_t GetVdriftAverage(Int_t det);
+ Float_t GetVdrift(Int_t det, Int_t col, Int_t row);
+ Float_t GetVdriftAverage(Int_t det);
- Float_t GetT0(Int_t det, Int_t col, Int_t row);
- Float_t GetT0Average(Int_t det);
+ Float_t GetT0(Int_t det, Int_t col, Int_t row);
+ Float_t GetT0Average(Int_t det);
+ AliTRDCalROC *GetT0ROC(Int_t det);
+ const AliTRDCalDet *GetT0Det();
- Float_t GetGainFactor(Int_t det, Int_t col, Int_t row);
- Float_t GetGainFactorAverage(Int_t det);
+ Float_t GetGainFactor(Int_t det, Int_t col, Int_t row);
+ Float_t GetGainFactorAverage(Int_t det);
+ AliTRDCalROC *GetGainFactorROC(Int_t det);
+ const AliTRDCalDet *GetGainFactorDet();
- Float_t GetPRFWidth(Int_t det, Int_t col, Int_t row);
+ Float_t GetPRFWidth(Int_t det, Int_t col, Int_t row);
- Int_t GetNumberOfTimeBins();
+ Int_t GetNumberOfTimeBins();
- Char_t GetPadStatus(Int_t det, Int_t col, Int_t row);
- Char_t GetChamberStatus(Int_t det);
+ Char_t GetPadStatus(Int_t det, Int_t col, Int_t row);
+ Char_t GetChamberStatus(Int_t det);
- Bool_t IsPadMasked(Int_t det, Int_t col, Int_t row);
- Bool_t IsPadBridgedLeft(Int_t det, Int_t col, Int_t row);
- Bool_t IsPadBridgedRight(Int_t det, Int_t col, Int_t row);
+ Bool_t IsPadMasked(Int_t det, Int_t col, Int_t row);
+ Bool_t IsPadBridgedLeft(Int_t det, Int_t col, Int_t row);
+ Bool_t IsPadBridgedRight(Int_t det, Int_t col, Int_t row);
- Bool_t IsChamberInstalled(Int_t det);
- Bool_t IsChamberMasked(Int_t det);
+ Bool_t IsChamberInstalled(Int_t det);
+ Bool_t IsChamberMasked(Int_t det);
const AliTRDCalMonitoring *GetMonitoringObject();
const AliTRDCalPIDLQ *GetPIDLQObject();
// Related functions, these depend on calibration data
- static Float_t GetOmegaTau(Float_t vdrift, Float_t bz);
- Int_t PadResponse(Double_t signal, Double_t dist, Int_t plane, Double_t *pad) const;
+ static Float_t GetOmegaTau(Float_t vdrift, Float_t bz);
+ Int_t PadResponse(Double_t signal, Double_t dist
+ , Int_t plane, Double_t *pad) const;
protected:
, kIDChamberStatus
, kIDPadStatus }; // IDs of cached objects
- const TObject* GetCachedCDBObject(Int_t id);
+ const TObject *GetCachedCDBObject(Int_t id);
void Invalidate();
void SamplePRF();
#include "AliTRDCommonParam.h"
#include "AliTRDcluster.h"
+#include "Cal/AliTRDCalROC.h"
+#include "Cal/AliTRDCalDet.h"
+
ClassImp(AliTRDclusterizerV1)
//_____________________________________________________________________________
// Threshold value for the digit signal
Float_t sigThresh = recParam->GetClusSigThresh();
+ // Detector wise calibration object for t0
+ const AliTRDCalDet *calT0Det = calibration->GetT0Det();
+
// Iteration limit for unfolding procedure
const Float_t kEpsilon = 0.01;
const Int_t kNclus = 3;
AliTRDpadPlane *padPlane = commonParam->GetPadPlane(iplan,icham);
+ // Calibration object with pad wise values for t0
+ AliTRDCalROC *calT0ROC = calibration->GetT0ROC(idet);
+ // Calibration value for chamber wise t0
+ Float_t calT0DetValue = calT0Det->GetValue(idet);
+
Int_t nClusters = 0;
Int_t nClusters2pad = 0;
Int_t nClusters3pad = 0;
// Calculate the position and the error
//
- // Correct for t0
- Int_t clusterTimeBin = TMath::Nint(time - calibration->GetT0(idet,col,row));
+ // Correct for t0 (sum of chamber and pad wise values !!!)
+ Float_t calT0ROCValue = calT0ROC->GetValue(col,row);
+ Int_t clusterTimeBin = TMath::Nint(time - (calT0DetValue + calT0ROCValue));
Double_t colSize = padPlane->GetColSize(col);
Double_t rowSize = padPlane->GetRowSize(row);
AliDebug(1,Form("Tail cancellation (nExp = %d) for detector %d.\n"
,recParam->GetTCnexp(),idet));
+ // Calibration object with chamber wise values for the gain factor
+ const AliTRDCalDet *calGainFactorDet = calibration->GetGainFactorDet();
+ // Calibration object with pad wise values for the gain factor
+ AliTRDCalROC *calGainFactorROC = calibration->GetGainFactorROC(idet);
+ // Calibration value for chamber wise gain factors
+ Float_t calGainFactorDetValue = calGainFactorDet->GetValue(idet);
+
for (iRow = 0; iRow < nRowMax; iRow++ ) {
for (iCol = 0; iCol < nColMax; iCol++ ) {
+ Float_t calGainFactorROCValue = calGainFactorROC->GetValue(iCol,iRow);
+ Double_t gain = calGainFactorDetValue
+ * calGainFactorROCValue;
+
for (iTime = 0; iTime < nTimeTotal; iTime++) {
//
// Add gain
//
- Double_t gain = calibration->GetGainFactor(idet,iCol,iRow);
- if (gain == 0.0) {
- AliError("Not a valid gain\n");
- }
inADC[iTime] = digitsIn->GetDataUnchecked(iRow,iCol,iTime);
inADC[iTime] /= gain;
outADC[iTime] = inADC[iTime];