,fCanvas(NULL)
,fInfo(NULL)
,fResults(NULL)
- ,fStatus(0)
+ ,fSubTaskMap(0)
+ ,fUseCalib(7)
,fDet(-1)
,fCol(-1)
,fRow(-1)
,fCanvas(NULL)
,fInfo(NULL)
,fResults(NULL)
- ,fStatus(0)
+ ,fSubTaskMap(0)
+ ,fUseCalib(7)
,fDet(-1)
,fCol(-1)
,fRow(-1)
// Retrieve calibration parameters from OCDB, drift velocity and t0 for the detector region specified by
// a previous call to AliTRDclusterResolution::SetCalibrationRegion().
- AliCDBManager *cdb = AliCDBManager::Instance(); // init OCDB
+ AliCDBManager *cdb = AliCDBManager::Instance(); // check access OCDB
if(cdb->GetRun() < 0){
AliError("OCDB manager not properly initialized");
return kFALSE;
}
-
// check magnetic field
- AliESDEvent *esd = dynamic_cast<AliESDEvent*>(InputEvent());
- if(!esd){
- AliError("Failed retrieving ESD event");
- return kFALSE;
- }
- if(!TGeoGlobalMagField::Instance()->IsLocked() && !esd->InitMagneticField()){
- AliError("Magnetic field failed initialization.");
+ if(!TGeoGlobalMagField::Instance() || !TGeoGlobalMagField::Instance()->IsLocked()){
+ AliError("Magnetic field not available.");
return kFALSE;
}
const AliTRDCalDet *fCalVdriftDet = fCalibration->GetVdriftDet();
const AliTRDCalDet *fCalT0Det = fCalibration->GetT0Det();
- fVdrift = fCalVdriftDet->GetValue(fDet>=0?fDet:0);
- if(fCol>=0 && fRow>=0) fVdrift*= fCalVdriftROC->GetValue(fCol, fRow);
+ if(IsUsingCalibParam(kVdrift)){
+ fVdrift = fCalVdriftDet->GetValue(fDet>=0?fDet:0);
+ if(fCol>=0 && fRow>=0) fVdrift*= fCalVdriftROC->GetValue(fCol, fRow);
+ }
fExB = AliTRDCommonParam::Instance()->GetOmegaTau(fVdrift);
- fT0 = fCalT0Det->GetValue(fDet>=0?fDet:0);
- if(fCol>=0 && fRow>=0) fT0 *= fCalT0ROC->GetValue(fCol, fRow);
- fGain = (fCol>=0 && fRow>=0)?fCalibration-> GetGainFactor(fDet, fCol, fRow):fCalibration-> GetGainFactorAverage(fDet);
+ if(IsUsingCalibParam(kT0)){
+ fT0 = fCalT0Det->GetValue(fDet>=0?fDet:0);
+ if(fCol>=0 && fRow>=0) fT0 *= fCalT0ROC->GetValue(fCol, fRow);
+ }
+ if(IsUsingCalibParam(kGain)) fGain = (fCol>=0 && fRow>=0)?fCalibration-> GetGainFactor(fDet, fCol, fRow):fCalibration-> GetGainFactorAverage(fDet);
+
SetBit(kCalibrated);
- AliDebug(1, Form("Calibrate for Det[%3d] Col[%3d] Row[%2d] : \n t0[%5.3f] vd[%5.3f] gain[%5.3f] ExB[%f]", fDet, fCol, fRow, fT0, fVdrift, fGain, fExB));
+ AliInfo(Form("Calibrate for Det[%3d] Col[%3d] Row[%2d] : \n t0[%5.3f] vd[%5.3f] gain[%5.3f] ExB[%f]", fDet, fCol, fRow, fT0, fVdrift, fGain, fExB));
return kTRUE;
}
{
public:
enum EAxisBinning { // bins in z and x direction
- kND = 25
+ kND = 1
};
enum EResultContainer { // results container type
kCenter = 0 // cluster2center pad calibration
,kQRes = 1 // resolution on charge dependence
,kSigm = 2 // sigma cluster as func of x and z
,kMean = 3 // shift cluster as func of x and z
- ,kNtasks = 4 // total number os sub tasks
+ ,kNtasks = 4 // total number of subtasks
};
- enum ECheckBits {
+ enum ECalibrationParam { // calibration parameters to be used from OCDB
+ kVdrift = 0
+ ,kT0 = 1
+ ,kGain = 2
+ };
+ enum ECheckBits {
kSaveAs = BIT(22) // save intermediary results
,kCalibrated = BIT(23) // load calibration
};
inline Float_t GetGain() const;
Float_t GetDyRange() const {return fDyRange;}
Bool_t GetRefFigure(Int_t ifig);
- Bool_t HasProcess(EResultContainer bit) const {return TESTBIT(fStatus, bit);}
+ Bool_t HasProcess(EResultContainer bit) const {return TESTBIT(fSubTaskMap, bit);}
Bool_t IsCalibrated() const { return TestBit(kCalibrated);}
+ Bool_t IsUsingCalibParam(ECalibrationParam par) const {return TESTBIT(fUseCalib, par);}
TObjArray* Histos();
TObjArray* Results() const {return fResults;};
void SetCalibrationRegion(Int_t det, Int_t col=-1, Int_t row=-1);
void SetVisual();
void SetDyRange(Float_t dy) {if(dy>0) fDyRange = dy;}
- void SetProcess(EResultContainer bit, Bool_t v = kTRUE) {v ? SETBIT(fStatus, bit) : CLRBIT(fStatus, bit);}
+ void SetProcess(EResultContainer bit, Bool_t v = kTRUE) {v ? SETBIT(fSubTaskMap, bit) : CLRBIT(fSubTaskMap, bit);}
void SetSaveAs(Bool_t v = kTRUE) {SetBit(kSaveAs, v);}
+ void SetUseCalibParam(ECalibrationParam par, Bool_t v = kTRUE) {v ? SETBIT(fUseCalib, par) : CLRBIT(fUseCalib, par);}
inline void ResetProcesses();
protected:
TCanvas *fCanvas; //! visualization canvas
TObjArray *fInfo; //! list of cluster info
TObjArray *fResults;// list of result graphs/histos/trees
- UChar_t fStatus; // steer parameter of the task
+ UChar_t fSubTaskMap; // steer map for subtasks
+ UChar_t fUseCalib; // steer map for calibration params
Short_t fDet; // detector (-1 for all)
Char_t fCol; // pad column (-1 for all)
Char_t fRow; // pad row (-1 for all)
Float_t fR[4]; // mean/sgm resolution
Float_t fP[4]; // mean/sgm pulls
- ClassDef(AliTRDclusterResolution, 4) // cluster resolution
+ ClassDef(AliTRDclusterResolution, 5) // cluster resolution
};
//___________________________________________________
//___________________________________________________
inline void AliTRDclusterResolution::ResetProcesses()
{
- CLRBIT(fStatus, kQRes);
- CLRBIT(fStatus, kCenter);
- CLRBIT(fStatus, kSigm);
- CLRBIT(fStatus, kMean);
+ CLRBIT(fSubTaskMap, kQRes);
+ CLRBIT(fSubTaskMap, kCenter);
+ CLRBIT(fSubTaskMap, kSigm);
+ CLRBIT(fSubTaskMap, kMean);
}
#endif
AliGeomManager::GetNalignable("TRD");
AliGeomManager::ApplyAlignObjsFromCDB("TRD");
fgGeo = new AliTRDgeometry;
+ //init magnetic field
+ if(!TGeoGlobalMagField::Instance()->IsLocked() &&
+ !fESDev->InitMagneticField()){
+ AliWarning("Magnetic field failed initialization.");
+ }
// set no of time bins
AliTRDtrackerV1::SetNTimeBins(AliTRDcalibDB::Instance()->GetNumberOfTimeBinsDCS());
AliInfo(Form("OCDB : Loc[%s] Run[%d] TB[%d]", fOCDB.Data(), ocdb->GetRun(), AliTRDtrackerV1::GetNTimeBins()));
+ // set reco param valid for this run/event
AliInfo(Form("Initializing TRD reco params for EventSpecie[%d]...",
fESDev->GetEventSpecie()));
fgReconstructor = new AliTRDReconstructor();