From: abercuci Date: Wed, 22 Sep 2010 09:58:41 +0000 (+0000) Subject: initialize magnetic field in infoGen (moved from clusterResolution) X-Git-Url: http://git.uio.no/git/?a=commitdiff_plain;h=56f313bdd3fa0fe5905f35e99800ed0b6c8b3c58;p=u%2Fmrichter%2FAliRoot.git initialize magnetic field in infoGen (moved from clusterResolution) add option to switch off reading of calibration params from OCDB (clusterResolution task) --- diff --git a/PWG1/TRD/AliTRDclusterResolution.cxx b/PWG1/TRD/AliTRDclusterResolution.cxx index f4578d79e57..ae28223f64c 100644 --- a/PWG1/TRD/AliTRDclusterResolution.cxx +++ b/PWG1/TRD/AliTRDclusterResolution.cxx @@ -207,7 +207,8 @@ AliTRDclusterResolution::AliTRDclusterResolution() ,fCanvas(NULL) ,fInfo(NULL) ,fResults(NULL) - ,fStatus(0) + ,fSubTaskMap(0) + ,fUseCalib(7) ,fDet(-1) ,fCol(-1) ,fRow(-1) @@ -234,7 +235,8 @@ AliTRDclusterResolution::AliTRDclusterResolution(const char *name) ,fCanvas(NULL) ,fInfo(NULL) ,fResults(NULL) - ,fStatus(0) + ,fSubTaskMap(0) + ,fUseCalib(7) ,fDet(-1) ,fCol(-1) ,fRow(-1) @@ -669,20 +671,14 @@ Bool_t AliTRDclusterResolution::LoadCalibration() // 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(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; } @@ -703,15 +699,20 @@ Bool_t AliTRDclusterResolution::LoadCalibration() 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; } diff --git a/PWG1/TRD/AliTRDclusterResolution.h b/PWG1/TRD/AliTRDclusterResolution.h index de4ef9c6166..cb3c1c37461 100644 --- a/PWG1/TRD/AliTRDclusterResolution.h +++ b/PWG1/TRD/AliTRDclusterResolution.h @@ -21,16 +21,21 @@ class AliTRDclusterResolution : public AliTRDrecoTask { 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 }; @@ -48,8 +53,9 @@ public: 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;}; @@ -61,8 +67,9 @@ public: 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: @@ -79,7 +86,8 @@ private: 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) @@ -99,7 +107,7 @@ private: Float_t fR[4]; // mean/sgm resolution Float_t fP[4]; // mean/sgm pulls - ClassDef(AliTRDclusterResolution, 4) // cluster resolution + ClassDef(AliTRDclusterResolution, 5) // cluster resolution }; //___________________________________________________ @@ -133,10 +141,10 @@ inline Float_t AliTRDclusterResolution::GetGain() const //___________________________________________________ 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 diff --git a/PWG1/TRD/AliTRDinfoGen.cxx b/PWG1/TRD/AliTRDinfoGen.cxx index 79d28f5f36e..6cb42aa0782 100644 --- a/PWG1/TRD/AliTRDinfoGen.cxx +++ b/PWG1/TRD/AliTRDinfoGen.cxx @@ -303,11 +303,17 @@ void AliTRDinfoGen::UserExec(Option_t *){ 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();