]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG1/TRD/AliTRDclusterResolution.h
update to stay in sync with modifications by Ruben (Ionut)
[u/mrichter/AliRoot.git] / PWG1 / TRD / AliTRDclusterResolution.h
index 370ab484ae320093095a8ac669297676f726ef11..d9992f2bf79bb218b9525bb654a1ac73b027049c 100644 (file)
@@ -18,18 +18,24 @@ 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
+    kYSys = 0   // cluster2center pad calibration
+   ,kYRes   = 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 { // force setting the ExB
-    kSaveAs    = BIT(22)
-   ,kExB       = BIT(23)
+  enum ECalibrationParam { // calibration parameters to be used from OCDB
+    kVdrift = 0
+   ,kT0     = 1
+   ,kGain   = 2
+  };
+  enum ECheckBits {
+    kSaveAs     = BIT(21) // save intermediary results
+   ,kCalibrated = BIT(22) // load calibration
+   ,kGlobal     = BIT(23) // load global position
   };
   AliTRDclusterResolution();
   AliTRDclusterResolution(const char *name);
@@ -39,12 +45,17 @@ public:
   void          UserExec(Option_t *);
   Int_t         GetDetector() const { return fDet; }
   void          GetPad(Int_t &c, Int_t &r) const { c=fCol, r=fRow; return;}
+  inline void   GetDiffCoeff(Float_t &dt, Float_t &dl) const;
   inline Float_t GetExB() const;
   inline Float_t GetVdrift() const;
   inline Float_t GetT0() const;
+  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        HasExB() const { return TestBit(kExB);}
+  Bool_t        HasProcess(EResultContainer bit) const {return TESTBIT(fSubTaskMap, bit);}
+  Bool_t        IsCalibrated() const { return TestBit(kCalibrated);}
+  Bool_t        HasGlobalPosition() const { return TestBit(kGlobal);}
+  Bool_t        IsUsingCalibParam(ECalibrationParam par) const {return TESTBIT(fUseCalib, par);}
 
   TObjArray*    Histos(); 
   TObjArray*    Results() const {return fResults;}; 
@@ -52,37 +63,48 @@ public:
   Bool_t        IsVisual() const {return Bool_t(fCanvas);}
   Bool_t        IsSaveAs() const {return TestBit(kSaveAs);}
 
+  Bool_t        LoadCalibration();
+  Bool_t        LoadGlobalChamberPosition();
   Bool_t        PostProcess();
   void          SetCalibrationRegion(Int_t det, Int_t col=-1, Int_t row=-1);
   void          SetVisual();
-  void          SetProcess(EResultContainer bit, Bool_t v = kTRUE) {v ? SETBIT(fStatus, bit) : CLRBIT(fStatus, bit);}
+  void          SetDyRange(Float_t dy) {if(dy>0) fDyRange = dy;}
+  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:
   void    ProcessCharge();
-  void    ProcessCenterPad();
+  Bool_t  ProcessNormalTracks();
   void    ProcessSigma();
   void    ProcessMean();
 
 private:
   AliTRDclusterResolution(const AliTRDclusterResolution&);  
   AliTRDclusterResolution& operator=(const AliTRDclusterResolution&);
-  Bool_t        SetExB();
 
   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    fExB;     // tg of the Lorentz angle
+  Float_t    fDt;      // diffusion coeff. transversal
+  Float_t    fDl;      // diffusion coeff. longitudinal
   Float_t    fVdrift;  // mean drift velocity
   Float_t    fT0;      // time 0
+  Float_t    fGain;    // gain
+  Float_t    fXch;     // anode wire position for chamber
+  Float_t    fZch;     // Z position for calibration element
+  Float_t    fH;       // tg of tilting angle
   static const Float_t fgkTimeBinLength;// time bin length (invers of sampling frequency)
 
   // working named variables
+  Float_t    fDyRange; // min/max dy
   UChar_t    fLy;      // TRD plane 
   Float_t    fT;       // calibrated time 
   Float_t    fX;       // local drift length 
@@ -91,43 +113,53 @@ private:
   Float_t    fR[4];    // mean/sgm resolution
   Float_t    fP[4];    // mean/sgm pulls
   
-  ClassDef(AliTRDclusterResolution, 3)  // cluster resolution
+  ClassDef(AliTRDclusterResolution, 6)  // cluster resolution
 };
 
+//___________________________________________________
+inline void AliTRDclusterResolution::GetDiffCoeff(Float_t &dt, Float_t &dl) const
+{
+  if(!IsCalibrated()) printf(" - W - AliTRDclusterResolution::GetDiffCoeff() : Instance not calibrated.\n");
+  dt=fDt; dl=fDl;
+  return;
+}
+
+
 //___________________________________________________
 inline Float_t AliTRDclusterResolution::GetExB() const
 { 
-  if(!HasExB()){
-    printf("WARNING :: ExB was not set. Use B=0.\n");
-  }
+  if(!IsCalibrated()) printf(" - W - AliTRDclusterResolution::GetExB() : Instance not calibrated.\n");
   return fExB;
 }
 
 //___________________________________________________
 inline Float_t AliTRDclusterResolution::GetVdrift() const
 { 
-  if(!HasExB()){
-    printf("WARNING :: ExB was not set. Use B=0.\n");
-  }
+  if(!IsCalibrated()) printf(" - W - AliTRDclusterResolution::GetVdrift() : Instance not calibrated.\n");
   return fVdrift;
 }
 
 //___________________________________________________
 inline Float_t AliTRDclusterResolution::GetT0() const
-{ 
-  if(!HasExB()){
-    printf("WARNING :: ExB was not set. Use B=0.\n");
-  }
+{
+  if(!IsCalibrated()) printf(" - W - AliTRDclusterResolution::GetT0() : Instance not calibrated.\n");
   return fT0;
 }
 
+//___________________________________________________
+inline Float_t AliTRDclusterResolution::GetGain() const
+{
+  if(!IsCalibrated()) printf(" - W - AliTRDclusterResolution::GetGain() : Instance not calibrated.\n");
+  return fGain;
+}
+
 //___________________________________________________
 inline void AliTRDclusterResolution::ResetProcesses()
 {
-  CLRBIT(fStatus, kQRes);
-  CLRBIT(fStatus, kCenter);
-  CLRBIT(fStatus, kSigm);
-  CLRBIT(fStatus, kMean);
+  CLRBIT(fSubTaskMap, kYRes);
+  CLRBIT(fSubTaskMap, kYSys);
+  CLRBIT(fSubTaskMap, kSigm);
+  CLRBIT(fSubTaskMap, kMean);
 }
 
 #endif