initialize magnetic field in infoGen (moved from clusterResolution)
authorabercuci <abercuci@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 22 Sep 2010 09:58:41 +0000 (09:58 +0000)
committerabercuci <abercuci@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 22 Sep 2010 09:58:41 +0000 (09:58 +0000)
add option to switch off reading of calibration params from OCDB
(clusterResolution task)

PWG1/TRD/AliTRDclusterResolution.cxx
PWG1/TRD/AliTRDclusterResolution.h
PWG1/TRD/AliTRDinfoGen.cxx

index f4578d7..ae28223 100644 (file)
@@ -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<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;
   }
 
@@ -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;
 }
index de4ef9c..cb3c1c3 100644 (file)
@@ -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
index 79d28f5..6cb42aa 100644 (file)
@@ -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();