]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGLF/FORWARD/analysis2/AliFMDCorrAcceptance.h
Mega commit of many changes to PWGLFforward
[u/mrichter/AliRoot.git] / PWGLF / FORWARD / analysis2 / AliFMDCorrAcceptance.h
index 380e7a5d8d6f2e690dac8e52816faf9468caf2e7..7286cd90537aeee626f522cac5ac1592bd36540a 100644 (file)
  * 
  * @brief  
  * 
- * @ingroup pwg2_forward_corr
+ * @ingroup pwglf_forward_corr
  * 
  */
 #include <TObject.h>
 #include <TObjArray.h>
 #include <TAxis.h>
 class TH2D;
+class TH1D;
 
 /**
  * This class contains the acceptance correction due to dead channels
  *
  * These are generated from the on-line dead channel calculations 
  *
- * @ingroup pwg2_forward_corr
+ * @ingroup pwglf_forward_corr
  */
 class AliFMDCorrAcceptance : public TObject 
 {
@@ -77,12 +78,37 @@ public:
    * @return The correction @f$ a_{r,v}@f$ 
    */
   TH2D* GetCorrection(UShort_t d, Char_t r, UShort_t b) const;
+  /** 
+   * Get the phi acceptance 
+   * 
+   * @param d Detector
+   * @param r ring 
+   * @param v vertex 
+   * 
+   * @return 
+   */  
+  TH1D* GetPhiAcceptance(UShort_t d, Char_t r, Double_t v) const;
+  /** 
+   * Get the phi acceptance 
+   * 
+   * @param d Detector 
+   * @param r ring 
+   * @param b vertex bin number 
+   * 
+   * @return 
+   */  
+  TH1D* GetPhiAcceptance(UShort_t d, Char_t r, UShort_t b) const;
   /** 
    * Get the vertex axis used 
    * 
    * @return vertex axis 
    */
   const TAxis& GetVertexAxis() const { return fVertexAxis; }
+  /** 
+   * @return true if the overflow bins along eta are set to the ratio
+   * of OK strips to all strips for a given eta bin.
+   */
+  Bool_t HasOverflow() const { return fHasOverflow; }
   /* @} */
 
   /** 
@@ -128,6 +154,12 @@ public:
    * @param max     Maximum
    */
   void SetVertexAxis(Int_t nBins, Double_t min, Double_t max);
+  /** 
+   * Set that we have (or not) the overflow bin present 
+   * 
+   * @param present If true, assume the overflow bins are filled
+   */
+  void SetHasOverflow(Bool_t present=true) { fHasOverflow = present; }
   /* @} */
 
   /** 
@@ -152,6 +184,9 @@ public:
    * @param option 
    */  
   void Print(Option_t* option="R") const; //*MENU*
+  void ls(Option_t* option="") const; //*MENU*
+  // void Draw(Option_t* option="");
+  // void SaveAs(const Char_t* filename, Option_t* option="colz") const;
   /* @} */
 protected:
   /** 
@@ -175,25 +210,33 @@ protected:
   /** 
    * Get the ring array corresponding to the specified ring
    * 
+   * @param m Array 
    * @param d Detector 
    * @param r Ring 
    * 
    * @return Pointer to ring array, or null in case of problems
    */
-  TObjArray* GetRingArray(UShort_t d, Char_t r) const;
+  TObjArray* GetRingArray(const TObjArray& m, UShort_t d, Char_t r) const;
   /** 
    * Get the ring array corresponding to the specified ring
    * 
+   * @param m Array 
    * @param d Detector 
    * @param r Ring 
    * 
    * @return Pointer to ring array, or newly created container 
    */
-  TObjArray* GetOrMakeRingArray(UShort_t d, Char_t r);
+  TObjArray* GetOrMakeRingArray(TObjArray& m, UShort_t d, Char_t r) const;
+  TObject* GetObject(const TObjArray& m, UShort_t d, 
+                    Char_t r, UShort_t b) const;
+
+  void FillCache() const;
 
-  TObjArray fRingArray;      // Array of per-ring, per-vertex 2nd map
+  TObjArray fRingArray;      // Array of per-ring, per-vertex 2d map
+  mutable TObjArray* fCache;  //! Array of per-ring, per-vertex 1d factors
   TAxis     fVertexAxis;     // The vertex axis 
-  ClassDef(AliFMDCorrAcceptance,1); // Acceptance correction due to dead areas
+  Bool_t    fHasOverflow;    // Whether we have the overflow bin set
+  ClassDef(AliFMDCorrAcceptance,2); // Acceptance correction due to dead areas
 };
 
 //____________________________________________________________________