More code clean up.
[u/mrichter/AliRoot.git] / PWG2 / FORWARD / analysis2 / AliFMDSharingFilter.h
index d01dc121a265dd094045da0f5875846d3c864744..7d8ba9922d066d1e8f66c5be792494875a30d855 100644 (file)
@@ -3,6 +3,7 @@
 #include <TNamed.h>
 #include <TH2.h>
 #include <TList.h>
 #include <TNamed.h>
 #include <TH2.h>
 #include <TList.h>
+#include "AliForwardUtil.h"
 class AliESDFMD;
 class TAxis;
 class TList;
 class AliESDFMD;
 class TAxis;
 class TList;
@@ -65,16 +66,22 @@ public:
   AliFMDSharingFilter& operator=(const AliFMDSharingFilter& o);
 
   /** 
   AliFMDSharingFilter& operator=(const AliFMDSharingFilter& o);
 
   /** 
-   * Initialise the filter 
+   * Set the low cut used for sharing 
    * 
    * 
+   * @param lowCut Low cut
    */
    */
-  void   Init() {}
+  void SetLowCut(Double_t lowCut=0) { fLowCut = lowCut; }
   /** 
   /** 
-   * Set the low cut used for sharing 
+   * Reset the low cut for sharing to use the fit range lower cut 
    * 
    * 
-   * @param lowCut Low cut
    */
    */
-  void SetLowCut(Double_t lowCut=0.3) { fLowCut = lowCut; }
+  void UnsetLowCut() { fLowCut = 0; }
+  /** 
+   * Set the debug level.  The higher the value the more output 
+   * 
+   * @param dbg Debug level 
+   */
+  void SetDebug(Int_t dbg=1) { fDebug = dbg; }
 
   /** 
    * Enable use of angle corrected signals in the algorithm 
 
   /** 
    * Enable use of angle corrected signals in the algorithm 
@@ -84,33 +91,52 @@ public:
    * signals are always angle corrected. 
    */
   void UseAngleCorrectedSignals(Bool_t use) { fCorrectAngles = use; }
    * signals are always angle corrected. 
    */
   void UseAngleCorrectedSignals(Bool_t use) { fCorrectAngles = use; }
+  /** 
+   * Set the number of landau width to subtract from the most probably
+   * value to get the high cut for the merging algorithm.
+   * 
+   * @param n Number of @f$ \xi@f$ 
+   */
+  void SetNXi(Short_t n) { fNXi = n; }
   /** 
    * Filter the input AliESDFMD object
    * 
    * @param input     Input 
    * @param lowFlux   If this is a low-flux event 
    * @param output    Output AliESDFMD object 
   /** 
    * Filter the input AliESDFMD object
    * 
    * @param input     Input 
    * @param lowFlux   If this is a low-flux event 
    * @param output    Output AliESDFMD object 
-   * @param vz        Current vertex position 
    * 
    * @return True on success, false otherwise 
    */
   Bool_t Filter(const AliESDFMD& input, 
                Bool_t           lowFlux, 
    * 
    * @return True on success, false otherwise 
    */
   Bool_t Filter(const AliESDFMD& input, 
                Bool_t           lowFlux, 
-               AliESDFMD&       output,
-               Double_t         vz);
+               AliESDFMD&       output);
   /** 
    * Scale the histograms to the total number of events 
    * 
   /** 
    * Scale the histograms to the total number of events 
    * 
+   * @param dir     Where the output is 
    * @param nEvents Number of events 
    */
    * @param nEvents Number of events 
    */
-  void ScaleHistograms(Int_t nEvents);
+  void ScaleHistograms(TList* dir, Int_t nEvents);
   
   
-  void Output(TList* dir);
+  /** 
+   * Define the output histograms.  These are put in a sub list of the
+   * passed list.   The histograms are merged before the parent task calls 
+   * AliAnalysisTaskSE::Terminate 
+   * 
+   * @param dir Directory to add to 
+   */
+  void DefineOutput(TList* dir);
+  /** 
+   * Print information
+   * 
+   * @param option Not used 
+   */
+  void Print(Option_t* option="") const;
 protected:
   /** 
    * Internal data structure to keep track of the histograms
    */
 protected:
   /** 
    * Internal data structure to keep track of the histograms
    */
-  struct RingHistos : public TObject 
+  struct RingHistos : public AliForwardUtil::RingHistos
   { 
     /** 
      * Default CTOR
   { 
     /** 
      * Default CTOR
@@ -142,19 +168,37 @@ protected:
      */
     ~RingHistos();
     /** 
      */
     ~RingHistos();
     /** 
-     * Initialise this object 
+     * Clear this object
      */
      */
-    void Init() {} 
     void Clear(const Option_t* ="") { fNHits = 0; } 
     void Clear(const Option_t* ="") { fNHits = 0; } 
+    /** 
+     * Increase number of hits 
+     * 
+     */
     void Incr() { fNHits++; } 
     void Incr() { fNHits++; } 
+    /** 
+     * Finish off 
+     * 
+     */
     void Finish(); 
     void Finish(); 
+    /** 
+     * Make output 
+     * 
+     * @param dir where to store 
+     */
     void Output(TList* dir);
     void Output(TList* dir);
-    UShort_t  fDet;          // Detector
-    Char_t    fRing;         // Ring
+    /** 
+     * Scale the histograms to the total number of events 
+     * 
+     * @param nEvents Number of events 
+     * @param dir     Where the output is 
+     */
+    void ScaleHistograms(TList* dir, Int_t nEvents);
     TH1D*     fBefore;       // Distribution of signals before filter
     TH1D*     fAfter;        // Distribution of signals after filter
     TH1D*     fHits;         // Distribution of hit strips. 
     Int_t     fNHits;        // Number of hit strips per event
     TH1D*     fBefore;       // Distribution of signals before filter
     TH1D*     fAfter;        // Distribution of signals after filter
     TH1D*     fHits;         // Distribution of hit strips. 
     Int_t     fNHits;        // Number of hit strips per event
+    ClassDef(RingHistos,1);
   };
   /** 
    * Get the ring histogram container 
   };
   /** 
    * Get the ring histogram container 
@@ -233,11 +277,19 @@ protected:
    * 2 times the width of the corresponding Landau.
    */
   virtual Double_t GetHighCut(UShort_t d, Char_t r, Double_t eta) const;
    * 2 times the width of the corresponding Landau.
    */
   virtual Double_t GetHighCut(UShort_t d, Char_t r, Double_t eta) const;
+  /**
+   * Get the low cut.  Normally, the low cut is taken to be the lower
+   * value of the fit range used when generating the energy loss fits.
+   * However, if fLowCut is set (using SetLowCit) to a value greater
+   * than 0, then that value is used.
+   */
+  virtual Double_t GetLowCut() const;
 
   TList    fRingHistos;    // List of histogram containers
   Double_t fLowCut;        // Low cut on sharing
   Bool_t   fCorrectAngles; // Whether to work on angle corrected signals
 
   TList    fRingHistos;    // List of histogram containers
   Double_t fLowCut;        // Low cut on sharing
   Bool_t   fCorrectAngles; // Whether to work on angle corrected signals
-  TH2*     fEtaCorr;
+  Short_t  fNXi;           // Number of xi's from Delta to stop merging
+  Int_t    fDebug;         // Debug level 
 
   ClassDef(AliFMDSharingFilter,1); //
 };
 
   ClassDef(AliFMDSharingFilter,1); //
 };