ROOT logo
//
// Class to do the sharing correction.  That is, a filter that merges 
// adjacent strip signals presumably originating from a single particle 
// that impinges on the detector in such a way that it deposite energy 
// into two or more strips. 
//
#ifndef ALIFMDSHARINGFILTER_H
#define ALIFMDSHARINGFILTER_H
/**
 * @file   AliFMDSharingFilter.h
 * @author Christian Holm Christensen <cholm@dalsgaard.hehi.nbi.dk>
 * @date   Wed Mar 23 14:03:57 2011
 * 
 * @brief  
 * 
 * 
 * @ingroup pwglf_forward_aod
 */
#include <TNamed.h>
#include <TH2.h>
#include <TList.h>
#include "AliForwardUtil.h"
#include "AliFMDMultCuts.h"
class AliESDFMD;
class TAxis;
class TList;
class TH2;
class AliFMDFloatMap;

/**
 * Class to do the sharing correction.  That is, a filter that merges 
 * adjacent strip signals presumably originating from a single particle 
 * that impinges on the detector in such a way that it deposite energy 
 * into two or more strips. 
 *
 * @image html alice-int-2012-040-share_fraction.png "Energy loss sharing"
 *
 * @par Input: 
 *    - AliESDFMD object  - from reconstruction
 *
 * @par Output: 
 *    - AliESDFMD object  - copy of input, but with signals merged 
 *
 * @par Corrections used: 
 *    - AliFMDCorrELossFit
 *
 * @par Histograms: 
 *    - For each ring (FMD1i, FMD2i, FMD2o, FMD3i, FMD3o) the distribution of 
 *      signals before and after the filter.  
 *    - For each ring (see above), an array of distributions of number of 
 *      hit strips for each vertex bin (if enabled - see SetupForData method)
 * 
 *
 * @ingroup pwglf_forward_algo 
 * @ingroup pwglf_forward_aod
 */
class AliFMDSharingFilter : public TNamed
{
public: 
  /** 
   * Status of a strip 
   * @deprecated Not used
   */
  enum Status { 
    /** Nothing yet */
    kNone             = 1, 
    /** Candidate for merging */
    kCandidate        = 2, 
    /** This was merged into other strip */
    kMergedWithOther  = 3, 
    /** Other strips was merged into this */
    kMergedInto       = 4
  };
  /** 
   * Destructor
   */
  virtual ~AliFMDSharingFilter();
  /** 
   * Default Constructor - do not use 
   */
  AliFMDSharingFilter();
  /** 
   * Constructor 
   * 
   * @param title Title of object  - not significant 
   */
  AliFMDSharingFilter(const char* title);

  /** 
   * @{ 
   * @name Parameters etc.
   */
  /** 
   * If called with a true argument, then merging is wholy disabled 
   * 
   * @param disable If true, disable merging altogether 
   */
  virtual void SetMergingDisabled(Bool_t disable) {fMergingDisabled = disable; }
  /** 
   * Set the debug level.  The higher the value the more output 
   * 
   * @param dbg Debug level 
   */
  virtual void SetDebug(Int_t dbg=1) { fDebug = dbg; }
  /** 
   * Enable use of angle corrected signals in the algorithm 
   * 
   * @param use If true, use angle corrected signals, 
   * otherwise use de-corrected signals.  In the final output, the 
   * signals are always angle corrected. 
   */
  void SetUseAngleCorrectedSignals(Bool_t use) { fCorrectAngles = use; }
   /** 
   * Enable zeroing of signals if below high cut
   * 
   * @param use zero the signals if below sharing cut
   * 
   */
  void SetZeroSharedHitsBelowThreshold(Bool_t use) { fZeroSharedHitsBelowThreshold = use; }
 /** 
   * Enable a simpler merging algorithm
   * 
   * @param use use the simpler algorithm
   * 
   */
  void SetUseSimpleSharing(Bool_t use) { fUseSimpleMerging = use; }
  /** 
   * In case of a simpler merging algorithm allow 3 strips to be 
   * merged
   * 
   * @param use allow three strips
   * 
   */
  void SetAllow3Strips(Bool_t use) { fThreeStripSharing = use; }  
  /**
   * Set whether to ignore the ESD info when angle correcting, this
   * is to counter a known issue where the info in the ESD is incorrect
   * 
   * @param use ignore the ESD info
   */
  void SetIgnoreESDWhenAngleCorrecting(Bool_t use) { fIgnoreESDForAngleCorrection = use; }
  /* @} */

  /** 
   * @{ 
   * @name Processing 
   */
  /** 
   * Initialize 
   * 
   * @param axis Default eta axis from parent task 
   */
  void SetupForData(const TAxis& axis);
  /** 
   * Filter the input AliESDFMD object
   * 
   * @param input     Input 
   * @param lowFlux   If this is a low-flux event 
   * @param output    Output AliESDFMD object 
   * @param zvtx      Vertex position 
   * 
   * @return True on success, false otherwise 
   */
  Bool_t Filter(const AliESDFMD& input, 
		Bool_t           lowFlux, 
		AliESDFMD&       output, 
		Double_t         zvtx);
  /** 
   * Scale the histograms to the total number of events 
   * 
   * @param dir     Where the output is 
   * @param output  Output list
   * @param nEvents Number of events 
   */
  virtual void Terminate(const TList* dir, TList* output, Int_t nEvents);  
  /** 
   * 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 
   */
  virtual void CreateOutputObjects(TList* dir);
  /* @} */
  /** 
   * Print information
   * 
   * @param option Not used 
   */
  virtual void Print(Option_t* option="") const;

  /** 
   * @{ 
   * @name Cuts
   */
  /** 
   * Get the low cuts 
   * 
   * @return Reference to low cuts
   */
  AliFMDMultCuts& GetLCuts() { return fLCuts; }
  /** 
   * Get the high cuts 
   * 
   * @return Reference to high cuts
   */
  AliFMDMultCuts& GetHCuts() { return fHCuts; }
  /** 
   * Get the low cuts 
   * 
   * @return Reference to low cuts
   */
  const AliFMDMultCuts& GetLCuts() const { return fLCuts; }
  /** 
   * Get the high cuts 
   * 
   * @return Reference to high cuts
   */
  const AliFMDMultCuts& GetHCuts() const { return fHCuts; }
  /** 
   * Set the low cuts 
   * 
   * @param c Cuts object
   */  
  void SetLCuts(const AliFMDMultCuts& c) { fLCuts = c; }
  /** 
   * Set the high cuts 
   * 
   * @param c Cuts object
   */  
  void SetHCuts(const AliFMDMultCuts& c) { fHCuts = c; }
  /* @} */
protected:
  /** 
   * Copy constructor - not implemented
   */
  AliFMDSharingFilter(const AliFMDSharingFilter& o);
  /** 
   * Assignment operator  - not implemented
   * 
   * @return Reference to this 
   */
  AliFMDSharingFilter& operator=(const AliFMDSharingFilter& o);
  /** 
   * Internal data structure to keep track of the histograms
   */
  struct RingHistos : public AliForwardUtil::RingHistos
  { 
    /** 
     * Default CTOR
     */
    RingHistos();
    /** 
     * Constructor
     * 
     * @param d detector
     * @param r ring 
     */
    RingHistos(UShort_t d, Char_t r);
    /** 
     * Copy constructor 
     * 
     * @param o Object to copy from 
     */
    RingHistos(const RingHistos& o);
    /** 
     * Assignment operator 
     * 
     * @param o Object to assign from 
     * 
     * @return Reference to this 
     */
    RingHistos& operator=(const RingHistos& o);
    /** 
     * Destructor 
     */
    ~RingHistos();
    /** 
     * Clear this object
     */
    // void Clear(const Option_t* ="") { fNHits = 0; } 
    /** 
     * Increase number of hits 
     * 
     */
    // void Incr() { fNHits++; } 
    /** 
     * Finish off 
     * 
     */
    // void Finish(); 
    /** 
     * Make output 
     * 
     * @param dir where to store 
     */
    void CreateOutputObjects(TList* dir);
    /** 
     * Scale the histograms to the total number of events 
     * 
     * @param nEvents Number of events 
     * @param dir     Where the output is 
     */
    void Terminate(const TList* dir, Int_t nEvents);
    TH1D*     fBefore;          // Distribution of signals before filter
    TH1D*     fAfter;           // Distribution of signals after filter
    TH1D*     fSingle;          // Distribution of 1 signal after filter
    TH1D*     fDouble;          // Distribution of 2 signals after filter
    TH1D*     fTriple;          // Distribution of 3 signals after filter
    TH2D*     fSinglePerStrip;  // Distribution of 1 signal per strip
    TH2D*     fBeforeAfter;     // Correlation of before and after 
    TH2D*     fNeighborsBefore; // Correlation of neighbors 
    TH2D*     fNeighborsAfter;  // Correlation of neighbors 
    TH2D*     fSumESD;          // Summed ESD signal 
    TH2D*     fSum;             // Summed cluster signal 
    TH1D*     fNConsecutive;    // # consecutive strips with signal > low cut
    ClassDef(RingHistos,4);
  };
  /** 
   * Get the ring histogram container 
   * 
   * @param d Detector
   * @param r Ring 
   * 
   * @return Ring histogram container 
   */
  RingHistos* GetRingHistos(UShort_t d, Char_t r) const;
  /** 
   * Get the signal in a strip 
   * 
   * @param fmd   ESD object
   * @param d     Detector
   * @param r     Ring 
   * @param s     Sector 
   * @param t     Strip
   * 
   * @return The energy signal 
   */
  Double_t SignalInStrip(const AliESDFMD& fmd, 
			 UShort_t d,
			 Char_t   r,
			 UShort_t s,
			 UShort_t t) const;
  /** 
   * Angle correct the signal 
   * 
   * @param mult Angle Un-corrected Signal 
   * @param eta  Pseudo-rapidity 
   * 
   * @return Angle corrected signal 
   */
  Double_t AngleCorrect(Double_t mult, Double_t eta) const;
  /** 
   * Angle de-correct the signal 
   * 
   * @param mult Angle corrected Signal 
   * @param eta  Pseudo-rapidity 
   * 
   * @return Angle un-corrected signal 
   */
  Double_t DeAngleCorrect(Double_t mult, Double_t eta) const;
  /** 
   * Get the high cut.  The high cut is defined as the 
   * most-probably-value peak found from the energy distributions, minus 
   * 2 times the width of the corresponding Landau.
   * 
   * @param d      Detector 
   * @param r      Ring 
   * @param eta    Eta value 
   * @param errors If false, do not show errors 
   * 
   * @return 0 or less on failure, otherwise @f$\Delta_{mp}-n\xi@f$ 
   */
  virtual Double_t GetHighCut(UShort_t d, Char_t r, Double_t eta,
			      Bool_t errors=true) 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.
   *
   * @param d    Detector
   * @param r    Ring 
   * @param eta  Eta value 
   * 
   * @return 
   */
  virtual Double_t GetLowCut(UShort_t d, Char_t r, Double_t eta) const;
  TList    fRingHistos;      // List of histogram containers
  Bool_t   fCorrectAngles;   // Whether to work on angle corrected signals
  TH2*     fHighCuts;        // High cuts used
  TH2*     fLowCuts;         // High cuts used
  Int_t    fDebug;           // Debug level 
  Bool_t   fZeroSharedHitsBelowThreshold; // Zero shared strip below cut?
  AliFMDMultCuts fLCuts;     // Cuts object for low cuts
  AliFMDMultCuts fHCuts;     // Cuts object for high cuts
  Bool_t   fUseSimpleMerging;// enable simple sharing by HHD
  Bool_t   fThreeStripSharing; //In case of simple sharing allow 3 strips
  Bool_t   fMergingDisabled; // If true, do not merge
  Bool_t   fIgnoreESDForAngleCorrection; // Ignore ESD information when angle correcting
  ClassDef(AliFMDSharingFilter,11); //
};

#endif
// Local Variables:
//  mode: C++ 
// End:
 AliFMDSharingFilter.h:1
 AliFMDSharingFilter.h:2
 AliFMDSharingFilter.h:3
 AliFMDSharingFilter.h:4
 AliFMDSharingFilter.h:5
 AliFMDSharingFilter.h:6
 AliFMDSharingFilter.h:7
 AliFMDSharingFilter.h:8
 AliFMDSharingFilter.h:9
 AliFMDSharingFilter.h:10
 AliFMDSharingFilter.h:11
 AliFMDSharingFilter.h:12
 AliFMDSharingFilter.h:13
 AliFMDSharingFilter.h:14
 AliFMDSharingFilter.h:15
 AliFMDSharingFilter.h:16
 AliFMDSharingFilter.h:17
 AliFMDSharingFilter.h:18
 AliFMDSharingFilter.h:19
 AliFMDSharingFilter.h:20
 AliFMDSharingFilter.h:21
 AliFMDSharingFilter.h:22
 AliFMDSharingFilter.h:23
 AliFMDSharingFilter.h:24
 AliFMDSharingFilter.h:25
 AliFMDSharingFilter.h:26
 AliFMDSharingFilter.h:27
 AliFMDSharingFilter.h:28
 AliFMDSharingFilter.h:29
 AliFMDSharingFilter.h:30
 AliFMDSharingFilter.h:31
 AliFMDSharingFilter.h:32
 AliFMDSharingFilter.h:33
 AliFMDSharingFilter.h:34
 AliFMDSharingFilter.h:35
 AliFMDSharingFilter.h:36
 AliFMDSharingFilter.h:37
 AliFMDSharingFilter.h:38
 AliFMDSharingFilter.h:39
 AliFMDSharingFilter.h:40
 AliFMDSharingFilter.h:41
 AliFMDSharingFilter.h:42
 AliFMDSharingFilter.h:43
 AliFMDSharingFilter.h:44
 AliFMDSharingFilter.h:45
 AliFMDSharingFilter.h:46
 AliFMDSharingFilter.h:47
 AliFMDSharingFilter.h:48
 AliFMDSharingFilter.h:49
 AliFMDSharingFilter.h:50
 AliFMDSharingFilter.h:51
 AliFMDSharingFilter.h:52
 AliFMDSharingFilter.h:53
 AliFMDSharingFilter.h:54
 AliFMDSharingFilter.h:55
 AliFMDSharingFilter.h:56
 AliFMDSharingFilter.h:57
 AliFMDSharingFilter.h:58
 AliFMDSharingFilter.h:59
 AliFMDSharingFilter.h:60
 AliFMDSharingFilter.h:61
 AliFMDSharingFilter.h:62
 AliFMDSharingFilter.h:63
 AliFMDSharingFilter.h:64
 AliFMDSharingFilter.h:65
 AliFMDSharingFilter.h:66
 AliFMDSharingFilter.h:67
 AliFMDSharingFilter.h:68
 AliFMDSharingFilter.h:69
 AliFMDSharingFilter.h:70
 AliFMDSharingFilter.h:71
 AliFMDSharingFilter.h:72
 AliFMDSharingFilter.h:73
 AliFMDSharingFilter.h:74
 AliFMDSharingFilter.h:75
 AliFMDSharingFilter.h:76
 AliFMDSharingFilter.h:77
 AliFMDSharingFilter.h:78
 AliFMDSharingFilter.h:79
 AliFMDSharingFilter.h:80
 AliFMDSharingFilter.h:81
 AliFMDSharingFilter.h:82
 AliFMDSharingFilter.h:83
 AliFMDSharingFilter.h:84
 AliFMDSharingFilter.h:85
 AliFMDSharingFilter.h:86
 AliFMDSharingFilter.h:87
 AliFMDSharingFilter.h:88
 AliFMDSharingFilter.h:89
 AliFMDSharingFilter.h:90
 AliFMDSharingFilter.h:91
 AliFMDSharingFilter.h:92
 AliFMDSharingFilter.h:93
 AliFMDSharingFilter.h:94
 AliFMDSharingFilter.h:95
 AliFMDSharingFilter.h:96
 AliFMDSharingFilter.h:97
 AliFMDSharingFilter.h:98
 AliFMDSharingFilter.h:99
 AliFMDSharingFilter.h:100
 AliFMDSharingFilter.h:101
 AliFMDSharingFilter.h:102
 AliFMDSharingFilter.h:103
 AliFMDSharingFilter.h:104
 AliFMDSharingFilter.h:105
 AliFMDSharingFilter.h:106
 AliFMDSharingFilter.h:107
 AliFMDSharingFilter.h:108
 AliFMDSharingFilter.h:109
 AliFMDSharingFilter.h:110
 AliFMDSharingFilter.h:111
 AliFMDSharingFilter.h:112
 AliFMDSharingFilter.h:113
 AliFMDSharingFilter.h:114
 AliFMDSharingFilter.h:115
 AliFMDSharingFilter.h:116
 AliFMDSharingFilter.h:117
 AliFMDSharingFilter.h:118
 AliFMDSharingFilter.h:119
 AliFMDSharingFilter.h:120
 AliFMDSharingFilter.h:121
 AliFMDSharingFilter.h:122
 AliFMDSharingFilter.h:123
 AliFMDSharingFilter.h:124
 AliFMDSharingFilter.h:125
 AliFMDSharingFilter.h:126
 AliFMDSharingFilter.h:127
 AliFMDSharingFilter.h:128
 AliFMDSharingFilter.h:129
 AliFMDSharingFilter.h:130
 AliFMDSharingFilter.h:131
 AliFMDSharingFilter.h:132
 AliFMDSharingFilter.h:133
 AliFMDSharingFilter.h:134
 AliFMDSharingFilter.h:135
 AliFMDSharingFilter.h:136
 AliFMDSharingFilter.h:137
 AliFMDSharingFilter.h:138
 AliFMDSharingFilter.h:139
 AliFMDSharingFilter.h:140
 AliFMDSharingFilter.h:141
 AliFMDSharingFilter.h:142
 AliFMDSharingFilter.h:143
 AliFMDSharingFilter.h:144
 AliFMDSharingFilter.h:145
 AliFMDSharingFilter.h:146
 AliFMDSharingFilter.h:147
 AliFMDSharingFilter.h:148
 AliFMDSharingFilter.h:149
 AliFMDSharingFilter.h:150
 AliFMDSharingFilter.h:151
 AliFMDSharingFilter.h:152
 AliFMDSharingFilter.h:153
 AliFMDSharingFilter.h:154
 AliFMDSharingFilter.h:155
 AliFMDSharingFilter.h:156
 AliFMDSharingFilter.h:157
 AliFMDSharingFilter.h:158
 AliFMDSharingFilter.h:159
 AliFMDSharingFilter.h:160
 AliFMDSharingFilter.h:161
 AliFMDSharingFilter.h:162
 AliFMDSharingFilter.h:163
 AliFMDSharingFilter.h:164
 AliFMDSharingFilter.h:165
 AliFMDSharingFilter.h:166
 AliFMDSharingFilter.h:167
 AliFMDSharingFilter.h:168
 AliFMDSharingFilter.h:169
 AliFMDSharingFilter.h:170
 AliFMDSharingFilter.h:171
 AliFMDSharingFilter.h:172
 AliFMDSharingFilter.h:173
 AliFMDSharingFilter.h:174
 AliFMDSharingFilter.h:175
 AliFMDSharingFilter.h:176
 AliFMDSharingFilter.h:177
 AliFMDSharingFilter.h:178
 AliFMDSharingFilter.h:179
 AliFMDSharingFilter.h:180
 AliFMDSharingFilter.h:181
 AliFMDSharingFilter.h:182
 AliFMDSharingFilter.h:183
 AliFMDSharingFilter.h:184
 AliFMDSharingFilter.h:185
 AliFMDSharingFilter.h:186
 AliFMDSharingFilter.h:187
 AliFMDSharingFilter.h:188
 AliFMDSharingFilter.h:189
 AliFMDSharingFilter.h:190
 AliFMDSharingFilter.h:191
 AliFMDSharingFilter.h:192
 AliFMDSharingFilter.h:193
 AliFMDSharingFilter.h:194
 AliFMDSharingFilter.h:195
 AliFMDSharingFilter.h:196
 AliFMDSharingFilter.h:197
 AliFMDSharingFilter.h:198
 AliFMDSharingFilter.h:199
 AliFMDSharingFilter.h:200
 AliFMDSharingFilter.h:201
 AliFMDSharingFilter.h:202
 AliFMDSharingFilter.h:203
 AliFMDSharingFilter.h:204
 AliFMDSharingFilter.h:205
 AliFMDSharingFilter.h:206
 AliFMDSharingFilter.h:207
 AliFMDSharingFilter.h:208
 AliFMDSharingFilter.h:209
 AliFMDSharingFilter.h:210
 AliFMDSharingFilter.h:211
 AliFMDSharingFilter.h:212
 AliFMDSharingFilter.h:213
 AliFMDSharingFilter.h:214
 AliFMDSharingFilter.h:215
 AliFMDSharingFilter.h:216
 AliFMDSharingFilter.h:217
 AliFMDSharingFilter.h:218
 AliFMDSharingFilter.h:219
 AliFMDSharingFilter.h:220
 AliFMDSharingFilter.h:221
 AliFMDSharingFilter.h:222
 AliFMDSharingFilter.h:223
 AliFMDSharingFilter.h:224
 AliFMDSharingFilter.h:225
 AliFMDSharingFilter.h:226
 AliFMDSharingFilter.h:227
 AliFMDSharingFilter.h:228
 AliFMDSharingFilter.h:229
 AliFMDSharingFilter.h:230
 AliFMDSharingFilter.h:231
 AliFMDSharingFilter.h:232
 AliFMDSharingFilter.h:233
 AliFMDSharingFilter.h:234
 AliFMDSharingFilter.h:235
 AliFMDSharingFilter.h:236
 AliFMDSharingFilter.h:237
 AliFMDSharingFilter.h:238
 AliFMDSharingFilter.h:239
 AliFMDSharingFilter.h:240
 AliFMDSharingFilter.h:241
 AliFMDSharingFilter.h:242
 AliFMDSharingFilter.h:243
 AliFMDSharingFilter.h:244
 AliFMDSharingFilter.h:245
 AliFMDSharingFilter.h:246
 AliFMDSharingFilter.h:247
 AliFMDSharingFilter.h:248
 AliFMDSharingFilter.h:249
 AliFMDSharingFilter.h:250
 AliFMDSharingFilter.h:251
 AliFMDSharingFilter.h:252
 AliFMDSharingFilter.h:253
 AliFMDSharingFilter.h:254
 AliFMDSharingFilter.h:255
 AliFMDSharingFilter.h:256
 AliFMDSharingFilter.h:257
 AliFMDSharingFilter.h:258
 AliFMDSharingFilter.h:259
 AliFMDSharingFilter.h:260
 AliFMDSharingFilter.h:261
 AliFMDSharingFilter.h:262
 AliFMDSharingFilter.h:263
 AliFMDSharingFilter.h:264
 AliFMDSharingFilter.h:265
 AliFMDSharingFilter.h:266
 AliFMDSharingFilter.h:267
 AliFMDSharingFilter.h:268
 AliFMDSharingFilter.h:269
 AliFMDSharingFilter.h:270
 AliFMDSharingFilter.h:271
 AliFMDSharingFilter.h:272
 AliFMDSharingFilter.h:273
 AliFMDSharingFilter.h:274
 AliFMDSharingFilter.h:275
 AliFMDSharingFilter.h:276
 AliFMDSharingFilter.h:277
 AliFMDSharingFilter.h:278
 AliFMDSharingFilter.h:279
 AliFMDSharingFilter.h:280
 AliFMDSharingFilter.h:281
 AliFMDSharingFilter.h:282
 AliFMDSharingFilter.h:283
 AliFMDSharingFilter.h:284
 AliFMDSharingFilter.h:285
 AliFMDSharingFilter.h:286
 AliFMDSharingFilter.h:287
 AliFMDSharingFilter.h:288
 AliFMDSharingFilter.h:289
 AliFMDSharingFilter.h:290
 AliFMDSharingFilter.h:291
 AliFMDSharingFilter.h:292
 AliFMDSharingFilter.h:293
 AliFMDSharingFilter.h:294
 AliFMDSharingFilter.h:295
 AliFMDSharingFilter.h:296
 AliFMDSharingFilter.h:297
 AliFMDSharingFilter.h:298
 AliFMDSharingFilter.h:299
 AliFMDSharingFilter.h:300
 AliFMDSharingFilter.h:301
 AliFMDSharingFilter.h:302
 AliFMDSharingFilter.h:303
 AliFMDSharingFilter.h:304
 AliFMDSharingFilter.h:305
 AliFMDSharingFilter.h:306
 AliFMDSharingFilter.h:307
 AliFMDSharingFilter.h:308
 AliFMDSharingFilter.h:309
 AliFMDSharingFilter.h:310
 AliFMDSharingFilter.h:311
 AliFMDSharingFilter.h:312
 AliFMDSharingFilter.h:313
 AliFMDSharingFilter.h:314
 AliFMDSharingFilter.h:315
 AliFMDSharingFilter.h:316
 AliFMDSharingFilter.h:317
 AliFMDSharingFilter.h:318
 AliFMDSharingFilter.h:319
 AliFMDSharingFilter.h:320
 AliFMDSharingFilter.h:321
 AliFMDSharingFilter.h:322
 AliFMDSharingFilter.h:323
 AliFMDSharingFilter.h:324
 AliFMDSharingFilter.h:325
 AliFMDSharingFilter.h:326
 AliFMDSharingFilter.h:327
 AliFMDSharingFilter.h:328
 AliFMDSharingFilter.h:329
 AliFMDSharingFilter.h:330
 AliFMDSharingFilter.h:331
 AliFMDSharingFilter.h:332
 AliFMDSharingFilter.h:333
 AliFMDSharingFilter.h:334
 AliFMDSharingFilter.h:335
 AliFMDSharingFilter.h:336
 AliFMDSharingFilter.h:337
 AliFMDSharingFilter.h:338
 AliFMDSharingFilter.h:339
 AliFMDSharingFilter.h:340
 AliFMDSharingFilter.h:341
 AliFMDSharingFilter.h:342
 AliFMDSharingFilter.h:343
 AliFMDSharingFilter.h:344
 AliFMDSharingFilter.h:345
 AliFMDSharingFilter.h:346
 AliFMDSharingFilter.h:347
 AliFMDSharingFilter.h:348
 AliFMDSharingFilter.h:349
 AliFMDSharingFilter.h:350
 AliFMDSharingFilter.h:351
 AliFMDSharingFilter.h:352
 AliFMDSharingFilter.h:353
 AliFMDSharingFilter.h:354
 AliFMDSharingFilter.h:355
 AliFMDSharingFilter.h:356
 AliFMDSharingFilter.h:357
 AliFMDSharingFilter.h:358
 AliFMDSharingFilter.h:359
 AliFMDSharingFilter.h:360
 AliFMDSharingFilter.h:361
 AliFMDSharingFilter.h:362
 AliFMDSharingFilter.h:363
 AliFMDSharingFilter.h:364
 AliFMDSharingFilter.h:365
 AliFMDSharingFilter.h:366
 AliFMDSharingFilter.h:367
 AliFMDSharingFilter.h:368
 AliFMDSharingFilter.h:369
 AliFMDSharingFilter.h:370
 AliFMDSharingFilter.h:371
 AliFMDSharingFilter.h:372
 AliFMDSharingFilter.h:373
 AliFMDSharingFilter.h:374
 AliFMDSharingFilter.h:375
 AliFMDSharingFilter.h:376
 AliFMDSharingFilter.h:377
 AliFMDSharingFilter.h:378
 AliFMDSharingFilter.h:379
 AliFMDSharingFilter.h:380
 AliFMDSharingFilter.h:381
 AliFMDSharingFilter.h:382
 AliFMDSharingFilter.h:383
 AliFMDSharingFilter.h:384
 AliFMDSharingFilter.h:385
 AliFMDSharingFilter.h:386
 AliFMDSharingFilter.h:387
 AliFMDSharingFilter.h:388
 AliFMDSharingFilter.h:389
 AliFMDSharingFilter.h:390
 AliFMDSharingFilter.h:391
 AliFMDSharingFilter.h:392
 AliFMDSharingFilter.h:393
 AliFMDSharingFilter.h:394
 AliFMDSharingFilter.h:395
 AliFMDSharingFilter.h:396
 AliFMDSharingFilter.h:397
 AliFMDSharingFilter.h:398
 AliFMDSharingFilter.h:399
 AliFMDSharingFilter.h:400
 AliFMDSharingFilter.h:401
 AliFMDSharingFilter.h:402
 AliFMDSharingFilter.h:403
 AliFMDSharingFilter.h:404
 AliFMDSharingFilter.h:405
 AliFMDSharingFilter.h:406
 AliFMDSharingFilter.h:407