ROOT logo
#ifndef ALIFMDMAP_H
#define ALIFMDMAP_H
/* Copyright(c) 1998-2000, ALICE Experiment at CERN, All rights
 * reserved. 
 *
 * See cxx source for full Copyright notice                               
 */
#ifndef ROOT_TObject
# include <TObject.h>
#endif 
class TFile;

//____________________________________________________________________
/** @class AliFMDMap
    @brief Base class for caches of per-strip information.
    @ingroup FMD_data
    This is used to index a strip. Data stored depends on derived
    class.  */
class AliFMDMap : public TObject 
{
public:
  enum { 
    /** Default maximum detector number */
    kMaxDetectors = 3, 
    /** Default maximum number of rings */
    kMaxRings     = 2, 
    /** Default maximum number of sectors */
    kMaxSectors   = 40, 
    /** Default maximum number of strips */
    kMaxStrips    = 512
  };
  enum { 
    /** Number used for inner rings */
    kInner = 0, 
    /** Number used for outer rings */
    kOuter
  };
  enum { 
    /** Number of strips in outer rings */ 
    kNStripOuter = 256, 
    /** Number of strips in the inner rings */ 
    kNStripInner = 512
  };
  enum { 
    /** Number of sectors in the inner rings */ 
    kNSectorInner = 20, 
    /** Number of sectorts in the outer rings */ 
    kNSectorOuter = 40
 };
  enum { 
    /** Base index for inner rings */ 
    kBaseInner = 0, 
    /** Base index for outer rings */
    kBaseOuter = kNSectorInner * kNStripInner
  };
  enum { 
    /** Base for FMD1 index */ 
    kFMD1Base = 0, 
    /** Base for FMD2 index */ 
    kFMD2Base = kNSectorInner * kNStripInner, 
    /** Base for FMD3 index */ 
    kFMD3Base = (kBaseOuter + kNSectorOuter * kNStripOuter + kFMD2Base)
  };
  /** 
   * Class to do stuff on each element of a map in an efficient
   * way. 
   */ 
  class ForOne 
  {
  public:
  /** Destructor */
    virtual ~ForOne() { }
    /** 
     * Called for each element considered a floating point number 
     *
     * @param d   Detector number
     * @param r   Ring identifier 
     * @param s   Sector number
     * @param t   Strip number
     * @param v   Value (as a floating point number)
     * 
     * @return Should return @c true on success, @c false otherwise
     */
    virtual Bool_t operator()(UShort_t d, Char_t r, UShort_t s, UShort_t t, 
			      Float_t v);
    /** 
     * Called for each element considered an integer
     *
     * @param d   Detector number
     * @param r   Ring identifier 
     * @param s   Sector number
     * @param t   Strip number
     * @param v   Value (as an integer)
     * 
     * @return Should return @c true on success, @c false otherwise
     */
    virtual Bool_t operator()(UShort_t d, Char_t r, UShort_t s, UShort_t t, 
			      Int_t v);
    /** 
     * Called for each element considered an integer
     *
     * @param d   Detector number
     * @param r   Ring identifier 
     * @param s   Sector number
     * @param t   Strip number
     * @param v   Value (as an unsigned short integer)
     * 
     * @return Should return @c true on success, @c false otherwise
     */
    virtual Bool_t operator()(UShort_t d, Char_t r, UShort_t s, UShort_t t, 
			      UShort_t v);
    /** 
     * Called for each element considered an integer
     *
     * @param d   Detector number
     * @param r   Ring identifier 
     * @param s   Sector number
     * @param t   Strip number
     * @param v   Value (as a boolean)
     * 
     * @return Should return @c true on success, @c false otherwise
     */
    virtual Bool_t operator()(UShort_t d, Char_t r, UShort_t s, UShort_t t, 
			      Bool_t v);
  };
  /**
   * Class to print content of map 
   * 
   */
  class Printer : public ForOne
  {
  public:
    /** 
     * Constructor 
     * 
     * @param format Output format (argument to printf)
     */
    Printer(const char* format);
    /** 
     * Destructor 
     */
    virtual ~Printer() {}
    /** 
     * Print a floating point entry
     * 
     * @return true
     */
    Bool_t operator()(UShort_t d, Char_t r, UShort_t s, UShort_t t, Float_t m);
    /** 
     * Print a integer entry
     * 
     * @return true
     */
    Bool_t operator()(UShort_t d, Char_t r, UShort_t s, UShort_t t, Int_t m);
    /** 
     * Print a integer entry
     * 
     * @return true
     */
    Bool_t operator()(UShort_t d, Char_t r, UShort_t s, UShort_t t, UShort_t m);
    /** 
     * Print a boolean entry
     * 
     * @return true
     */
    Bool_t operator()(UShort_t d, Char_t r, UShort_t s, UShort_t t, Bool_t m);
  private:
    /** 
     * Copy constructor
     * 
     * @param p Object to copy from 
     */
    Printer(const Printer& p);
    /** 
     * Assignment operator
     * 
     * @return Reference to this 
     */
    Printer& operator=(const Printer&) { return *this; }
    /** 
     * Print headings 
     * 
     * @param d Current detector
     * @param r Current ring 
     * @param s Current sector
     * @param t Current strip
     */
    virtual void PrintHeadings(UShort_t d, Char_t r, UShort_t s, UShort_t t);
    /** Printf like format */
    const char* fFormat;
    /** Last detector */
    UShort_t    fOldD;
    /** Last ring */
    Char_t      fOldR;
    /** Last sector */
    UShort_t    fOldS;
  };

  /** 
   * Constructor 
   * 
   * @param maxDet  Maximum allowed detector number
   * @param maxRing Maximum number of rings
   * @param maxSec  Maximum number of sectors
   * @param maxStr  Maximum number of strips
   */
  AliFMDMap(UShort_t maxDet = 0, 
	    UShort_t maxRing= 0, 
	    UShort_t maxSec = 0, 
	    UShort_t maxStr = 0);
  /** 
   * Copy constructor
   * 
   * @param other Object to construct from
   */  
  AliFMDMap(const AliFMDMap& other);
  /** Destructor */
  virtual ~AliFMDMap() {}
  /** @return  Maximum detector number */
  UShort_t MaxDetectors() const { return fMaxDetectors==0 ?   3 :fMaxDetectors;}
  /** @return  Maximum number of rings */
  UShort_t MaxRings()     const { return fMaxRings    ==0 ?   2 :fMaxRings; }
  /** @return  Maximum number of sectors */
  UShort_t MaxSectors()   const { return fMaxSectors  ==0 ?  40 :fMaxSectors; }
  /** @return  Maximum number of strip */
  UShort_t MaxStrips()    const { return fMaxStrips   ==0 ? 512 :fMaxStrips; }
  /** 
   * Calculate the detector coordinates for a given index number
   * 
   * @param idx  Index to find cooresponding detector coordinates for
   * @param det  On return, contain the detector number 
   * @param ring On return, contain the ring identifier
   * @param sec  On return, contain the sector number
   * @param str  On return, contain the strip number 
   */
  void CalcCoords(Int_t     idx, 
		  UShort_t& det, 
		  Char_t&   ring, 
		  UShort_t& sec, 
		  UShort_t& str) const;
  /** 
   * Calculate index and return 
   *
   * @param det  Detector number
   * @param ring Ring identifier 
   * @param sec  Sector number 
   * @param str  Strip number 
   * 
   * @return  Index (not checked) 
   */
  Int_t CalcIndex(UShort_t det, Char_t ring, 
		  UShort_t sec, UShort_t str) const;
  /** 
   * Calculate index and return 
   *
   * @param det  Detector number
   * @param ring Ring identifier 
   * @param sec  Sector number 
   * @param str  Strip number 
   * 
   * @return  Index or -1 if the coordinates are invalid
   */
  Int_t  CheckIndex(UShort_t det, Char_t ring, 
		    UShort_t sec, UShort_t str) const;
  /** 
   * Check if we need UShort_t hack 
   * 
   * @param file File this object was read from 
   */
  void CheckNeedUShort(TFile* file);
  /** 
   * Right multiplication operator
   * 
   * @param o Other map to multuiply with
   * 
   * @return Reference to this object
   */
  AliFMDMap& operator*=(const AliFMDMap& o);
  /** 
   * Right division operator
   * 
   * @param o Other map to divide with
   * 
   * @return Reference to this object
   */
  AliFMDMap& operator/=(const AliFMDMap& o);
  /** 
   * Right addision operator
   * 
   * @param o Other map to add to this
   * 
   * @return Reference to this object
   */
  AliFMDMap& operator+=(const AliFMDMap& o);
  /** 
   * Right subtraction operator
   * 
   * @param o Other map to substract from this
   * 
   * @return Reference to this object
   */
  AliFMDMap& operator-=(const AliFMDMap& o);
  /** 
   * For each element of the map, call the user defined overloaded
   * @c ForOne::operator() 
   * 
   * @param algo Algorithm to use
   * 
   * @return @c true on success, @c false if for any element, @c
   * algo(d,r,s,t,v) returns false. 
   */
  virtual Bool_t  ForEach(ForOne& algo) const;
  /** 
   * Get the total size of the internal array - that is the maximum
   * index possible plus one. 
   * 
   * @return maximum index, plus 1
   */
  virtual Int_t MaxIndex() const = 0;
  /** 
   * Print content of the map 
   * 
   * @param option If not null or empty string, print map 
   */
  virtual void Print(Option_t* option="") const;
  /** 
   * Virtal function to get the value at index @a idx as a floating
   * point number.  
   * 
   * @note 
   * Even if the map is not floating point valued the
   * sub-class can define this member function to allow non l-value
   * usage of the data in the map.   That is, if @c a is a floating
   * point valued map, and @c b is not, then if the class @c B of @c b 
   * implements this member function, expression like 
   *
   * @verbatim
   *   a += b;
   * @endverbatim 
   *
   * multiplies each element of @c a (floating points) with each
   * element of @c c according to the definition of @c B::AtAsFloat
   * (@c const version).   
   *
   * @param idx Index number
   * 
   * @return Value at index as a floating point number 
   */
  virtual Float_t AtAsFloat(Int_t idx) const;
  /** 
   * Virtal function to get the value at index @a idx as a floating
   * point number.  
   * 
   * This member function should only be defined if the map is a
   * floating point valued, and can be assigned floating point valued
   * values.  That is, if the map's elements are anything but @c
   * float then this member function should not be defined in the
   * derived class.  That will prevent expressions like 
   *
   * @code 
   *   a += b;
   * @endcode
   * 
   * where @c a is non-floating point valued, and @c b is floating
   * point valued (only).
   *
   * @param idx Index number
   * 
   * @return Value at index as a floating point number 
   */
  virtual Float_t& AtAsFloat(Int_t idx);
  /** 
   * Virtal function to get the value at index @a idx as an integer
   * 
   * @see Float_t AliFMDMap::AtAsFloat(Int_t) const
   *
   * @param idx Index number
   * 
   * @return Value at index as an integer
   */
  virtual Int_t   AtAsInt(Int_t idx) const;
  /** 
   * Virtal function to get the value at index @a idx as an integer
   * 
   * @see Float_t& AliFMDMap::AtAsFloat(Int_t)
   *
   * @param idx Index number
   * 
   * @return Value at index as an integer
   */
  virtual Int_t&   AtAsInt(Int_t idx);
  /** 
   * Virtal function to get the value at index @a idx as an boolean  
   * 
   * @see Float_t AliFMDMap::AtAsFloat(Int_t) const
   *
   * @param idx Index number
   * 
   * @return Value at index as a boolean
   */
  virtual UShort_t   AtAsUShort(Int_t idx) const;
  /** 
   * Virtal function to get the value at index @a idx as an boolean
   * 
   * @see Float_t& AliFMDMap::AtAsFloat(Int_t)
   *
   * @param idx Index number
   * 
   * @return Value at index as a boolean
   */
  virtual UShort_t&   AtAsUShort(Int_t idx);
  /** 
   * Virtal function to get the value at index @a idx as an unsigned
   * short integer  
   * 
   * @see Float_t AliFMDMap::AtAsFloat(Int_t) const
   *
   * @param idx Index number
   * 
   * @return Value at index as an unsigned short integer
   */
  virtual Bool_t   AtAsBool(Int_t idx) const;
  /** 
   * Virtal function to get the value at index @a idx as an unsigned
   * short integer
   * 
   * @see Float_t& AliFMDMap::AtAsFloat(Int_t)
   *
   * @param idx Index number
   * 
   * @return Value at index as an unsigned short integer
   */
  virtual Bool_t&   AtAsBool(Int_t idx);
  /**
   * Whether this map is floating point valued - that is, it can be
   * assigned floating point valued values.
   * 
   * @return @c true if the map is floating point valued 
   */
  virtual Bool_t IsFloat() const { return kFALSE; }
  /**
   * Whether this map is floating point valued or integer valued -
   * that is, it can be assigned integer valued values
   * 
   * @return @c true if the map is integer valued 
   */
  virtual Bool_t IsInt() const { return kFALSE; }
  /**
   * Whether this map is unsigned short integer valued - that is it
   * can be assigned unsigned short integer values
   * 
   * @return @c true if the map is unsigned short integer valued 
   */
  virtual Bool_t IsUShort() const { return kFALSE; }
  /**
   * Whether this map is boolean valued - that is it can be assigned
   * boolean values
   * 
   * @return @c true if the map is boolean valued 
   */
  virtual Bool_t IsBool() const { return kFALSE; }
  /** 
   * Get raw data pointer. 
   * 
   * @return Raw data pointer 
   */
  virtual void* Ptr() const = 0;
  enum {
    /** In case of version 2 of this class, this bit should be set. */
    kNeedUShort = 14
  };
protected:
  /** 
   * Calculate, check, and return index for strip.  If the index is
   * invalid, -1 is returned
   * 
   * This is only used when a full map is used, signalled by
   * fMaxDetector = 0
   * 
   * @param det   Detector number
   * @param ring  Ring identifier
   * @param sec   Sector number 
   * @param str   Strip number
   * 
   * @return  Unique index, or -1 in case of errors 
   */
  Int_t  Coords2Index(UShort_t det, Char_t ring, 
		  UShort_t sec, UShort_t str) const;
  /** 
   * Calculate, check, and return index for strip.  If the index is
   * invalid, -1 is returned
   * 
   * This is for back-ward compatibility and for when a map does not
   * cover all of the FMD strips
   * 
   * @param det   Detector number
   * @param ring  Ring identifier
   * @param sec   Sector number 
   * @param str   Strip number
   *
   * @return  Unique index, or -1 in case of errors 
   */
  Int_t  Coords2IndexOld(UShort_t det, Char_t ring, 
			 UShort_t sec, UShort_t str) const;
  /** 
   * Calculate the detector coordinates from an array index. 
   * 
   * This is used for backward compatibility and for when a map does not
   * cover all of the FMD strips
   * 
   * @param idx  Index to convert
   * @param det  Detector number on return
   * @param ring Ring identifier on return
   * @param sec  Sector number on return
   * @param str  Strip number on return
   */
  void Index2CoordsOld(Int_t     idx, 
		       UShort_t& det, 
		       Char_t&   ring, 
		       UShort_t& sec, 
		       UShort_t& str) const;
  /** 
   * Calculate the detector coordinates from an array index. 
   * 
   * This is used for a full map only, signalled by fMaxDetector = 0
   * 
   * @param idx  Index to convert
   * @param det  Detector number on return
   * @param ring Ring identifier on return
   * @param sec  Sector number on return
   * @param str  Strip number on return
   */
  void Index2Coords(Int_t     idx, 
		    UShort_t& det, 
		    Char_t&   ring, 
		    UShort_t& sec, 
		    UShort_t& str) const;
  UShort_t fMaxDetectors;             // Maximum # of detectors
  UShort_t fMaxRings;                 // Maximum # of rings
  UShort_t fMaxSectors;               // Maximum # of sectors
  UShort_t fMaxStrips;                // Maximum # of strips

  ClassDef(AliFMDMap, 4) // Cache of per strip information
};

inline Float_t
AliFMDMap::AtAsFloat(Int_t) const
{
  return 0;
}
inline Float_t&
AliFMDMap::AtAsFloat(Int_t)
{
  static Float_t d;
  return d;
}
inline Int_t
AliFMDMap::AtAsInt(Int_t) const
{
  return 0;
}
inline Int_t&
AliFMDMap::AtAsInt(Int_t)
{
  static Int_t d;
  return d;
}
inline UShort_t
AliFMDMap::AtAsUShort(Int_t) const
{
  return 0;
}
inline UShort_t&
AliFMDMap::AtAsUShort(Int_t)
{
  static UShort_t d;
  return d;
}
inline Bool_t
AliFMDMap::AtAsBool(Int_t) const
{
  return kFALSE;
}
inline Bool_t&
AliFMDMap::AtAsBool(Int_t)
{
  static Bool_t d;
  return d;
}
inline Bool_t
AliFMDMap::ForOne::operator()(UShort_t, Char_t, UShort_t, UShort_t, Float_t)
{
  return kTRUE;
}
inline Bool_t
AliFMDMap::ForOne::operator()(UShort_t, Char_t, UShort_t, UShort_t, Int_t)
{
  return kTRUE;
}
inline Bool_t
AliFMDMap::ForOne::operator()(UShort_t, Char_t, UShort_t, UShort_t, UShort_t)
{
  return kTRUE;
}
inline Bool_t
AliFMDMap::ForOne::operator()(UShort_t, Char_t, UShort_t, UShort_t, Bool_t)
{
  return kTRUE;
}



#endif 
//____________________________________________________________________
//
// Local Variables:
//   mode: C++
// End:
//
// EOF
//


 AliFMDMap.h:1
 AliFMDMap.h:2
 AliFMDMap.h:3
 AliFMDMap.h:4
 AliFMDMap.h:5
 AliFMDMap.h:6
 AliFMDMap.h:7
 AliFMDMap.h:8
 AliFMDMap.h:9
 AliFMDMap.h:10
 AliFMDMap.h:11
 AliFMDMap.h:12
 AliFMDMap.h:13
 AliFMDMap.h:14
 AliFMDMap.h:15
 AliFMDMap.h:16
 AliFMDMap.h:17
 AliFMDMap.h:18
 AliFMDMap.h:19
 AliFMDMap.h:20
 AliFMDMap.h:21
 AliFMDMap.h:22
 AliFMDMap.h:23
 AliFMDMap.h:24
 AliFMDMap.h:25
 AliFMDMap.h:26
 AliFMDMap.h:27
 AliFMDMap.h:28
 AliFMDMap.h:29
 AliFMDMap.h:30
 AliFMDMap.h:31
 AliFMDMap.h:32
 AliFMDMap.h:33
 AliFMDMap.h:34
 AliFMDMap.h:35
 AliFMDMap.h:36
 AliFMDMap.h:37
 AliFMDMap.h:38
 AliFMDMap.h:39
 AliFMDMap.h:40
 AliFMDMap.h:41
 AliFMDMap.h:42
 AliFMDMap.h:43
 AliFMDMap.h:44
 AliFMDMap.h:45
 AliFMDMap.h:46
 AliFMDMap.h:47
 AliFMDMap.h:48
 AliFMDMap.h:49
 AliFMDMap.h:50
 AliFMDMap.h:51
 AliFMDMap.h:52
 AliFMDMap.h:53
 AliFMDMap.h:54
 AliFMDMap.h:55
 AliFMDMap.h:56
 AliFMDMap.h:57
 AliFMDMap.h:58
 AliFMDMap.h:59
 AliFMDMap.h:60
 AliFMDMap.h:61
 AliFMDMap.h:62
 AliFMDMap.h:63
 AliFMDMap.h:64
 AliFMDMap.h:65
 AliFMDMap.h:66
 AliFMDMap.h:67
 AliFMDMap.h:68
 AliFMDMap.h:69
 AliFMDMap.h:70
 AliFMDMap.h:71
 AliFMDMap.h:72
 AliFMDMap.h:73
 AliFMDMap.h:74
 AliFMDMap.h:75
 AliFMDMap.h:76
 AliFMDMap.h:77
 AliFMDMap.h:78
 AliFMDMap.h:79
 AliFMDMap.h:80
 AliFMDMap.h:81
 AliFMDMap.h:82
 AliFMDMap.h:83
 AliFMDMap.h:84
 AliFMDMap.h:85
 AliFMDMap.h:86
 AliFMDMap.h:87
 AliFMDMap.h:88
 AliFMDMap.h:89
 AliFMDMap.h:90
 AliFMDMap.h:91
 AliFMDMap.h:92
 AliFMDMap.h:93
 AliFMDMap.h:94
 AliFMDMap.h:95
 AliFMDMap.h:96
 AliFMDMap.h:97
 AliFMDMap.h:98
 AliFMDMap.h:99
 AliFMDMap.h:100
 AliFMDMap.h:101
 AliFMDMap.h:102
 AliFMDMap.h:103
 AliFMDMap.h:104
 AliFMDMap.h:105
 AliFMDMap.h:106
 AliFMDMap.h:107
 AliFMDMap.h:108
 AliFMDMap.h:109
 AliFMDMap.h:110
 AliFMDMap.h:111
 AliFMDMap.h:112
 AliFMDMap.h:113
 AliFMDMap.h:114
 AliFMDMap.h:115
 AliFMDMap.h:116
 AliFMDMap.h:117
 AliFMDMap.h:118
 AliFMDMap.h:119
 AliFMDMap.h:120
 AliFMDMap.h:121
 AliFMDMap.h:122
 AliFMDMap.h:123
 AliFMDMap.h:124
 AliFMDMap.h:125
 AliFMDMap.h:126
 AliFMDMap.h:127
 AliFMDMap.h:128
 AliFMDMap.h:129
 AliFMDMap.h:130
 AliFMDMap.h:131
 AliFMDMap.h:132
 AliFMDMap.h:133
 AliFMDMap.h:134
 AliFMDMap.h:135
 AliFMDMap.h:136
 AliFMDMap.h:137
 AliFMDMap.h:138
 AliFMDMap.h:139
 AliFMDMap.h:140
 AliFMDMap.h:141
 AliFMDMap.h:142
 AliFMDMap.h:143
 AliFMDMap.h:144
 AliFMDMap.h:145
 AliFMDMap.h:146
 AliFMDMap.h:147
 AliFMDMap.h:148
 AliFMDMap.h:149
 AliFMDMap.h:150
 AliFMDMap.h:151
 AliFMDMap.h:152
 AliFMDMap.h:153
 AliFMDMap.h:154
 AliFMDMap.h:155
 AliFMDMap.h:156
 AliFMDMap.h:157
 AliFMDMap.h:158
 AliFMDMap.h:159
 AliFMDMap.h:160
 AliFMDMap.h:161
 AliFMDMap.h:162
 AliFMDMap.h:163
 AliFMDMap.h:164
 AliFMDMap.h:165
 AliFMDMap.h:166
 AliFMDMap.h:167
 AliFMDMap.h:168
 AliFMDMap.h:169
 AliFMDMap.h:170
 AliFMDMap.h:171
 AliFMDMap.h:172
 AliFMDMap.h:173
 AliFMDMap.h:174
 AliFMDMap.h:175
 AliFMDMap.h:176
 AliFMDMap.h:177
 AliFMDMap.h:178
 AliFMDMap.h:179
 AliFMDMap.h:180
 AliFMDMap.h:181
 AliFMDMap.h:182
 AliFMDMap.h:183
 AliFMDMap.h:184
 AliFMDMap.h:185
 AliFMDMap.h:186
 AliFMDMap.h:187
 AliFMDMap.h:188
 AliFMDMap.h:189
 AliFMDMap.h:190
 AliFMDMap.h:191
 AliFMDMap.h:192
 AliFMDMap.h:193
 AliFMDMap.h:194
 AliFMDMap.h:195
 AliFMDMap.h:196
 AliFMDMap.h:197
 AliFMDMap.h:198
 AliFMDMap.h:199
 AliFMDMap.h:200
 AliFMDMap.h:201
 AliFMDMap.h:202
 AliFMDMap.h:203
 AliFMDMap.h:204
 AliFMDMap.h:205
 AliFMDMap.h:206
 AliFMDMap.h:207
 AliFMDMap.h:208
 AliFMDMap.h:209
 AliFMDMap.h:210
 AliFMDMap.h:211
 AliFMDMap.h:212
 AliFMDMap.h:213
 AliFMDMap.h:214
 AliFMDMap.h:215
 AliFMDMap.h:216
 AliFMDMap.h:217
 AliFMDMap.h:218
 AliFMDMap.h:219
 AliFMDMap.h:220
 AliFMDMap.h:221
 AliFMDMap.h:222
 AliFMDMap.h:223
 AliFMDMap.h:224
 AliFMDMap.h:225
 AliFMDMap.h:226
 AliFMDMap.h:227
 AliFMDMap.h:228
 AliFMDMap.h:229
 AliFMDMap.h:230
 AliFMDMap.h:231
 AliFMDMap.h:232
 AliFMDMap.h:233
 AliFMDMap.h:234
 AliFMDMap.h:235
 AliFMDMap.h:236
 AliFMDMap.h:237
 AliFMDMap.h:238
 AliFMDMap.h:239
 AliFMDMap.h:240
 AliFMDMap.h:241
 AliFMDMap.h:242
 AliFMDMap.h:243
 AliFMDMap.h:244
 AliFMDMap.h:245
 AliFMDMap.h:246
 AliFMDMap.h:247
 AliFMDMap.h:248
 AliFMDMap.h:249
 AliFMDMap.h:250
 AliFMDMap.h:251
 AliFMDMap.h:252
 AliFMDMap.h:253
 AliFMDMap.h:254
 AliFMDMap.h:255
 AliFMDMap.h:256
 AliFMDMap.h:257
 AliFMDMap.h:258
 AliFMDMap.h:259
 AliFMDMap.h:260
 AliFMDMap.h:261
 AliFMDMap.h:262
 AliFMDMap.h:263
 AliFMDMap.h:264
 AliFMDMap.h:265
 AliFMDMap.h:266
 AliFMDMap.h:267
 AliFMDMap.h:268
 AliFMDMap.h:269
 AliFMDMap.h:270
 AliFMDMap.h:271
 AliFMDMap.h:272
 AliFMDMap.h:273
 AliFMDMap.h:274
 AliFMDMap.h:275
 AliFMDMap.h:276
 AliFMDMap.h:277
 AliFMDMap.h:278
 AliFMDMap.h:279
 AliFMDMap.h:280
 AliFMDMap.h:281
 AliFMDMap.h:282
 AliFMDMap.h:283
 AliFMDMap.h:284
 AliFMDMap.h:285
 AliFMDMap.h:286
 AliFMDMap.h:287
 AliFMDMap.h:288
 AliFMDMap.h:289
 AliFMDMap.h:290
 AliFMDMap.h:291
 AliFMDMap.h:292
 AliFMDMap.h:293
 AliFMDMap.h:294
 AliFMDMap.h:295
 AliFMDMap.h:296
 AliFMDMap.h:297
 AliFMDMap.h:298
 AliFMDMap.h:299
 AliFMDMap.h:300
 AliFMDMap.h:301
 AliFMDMap.h:302
 AliFMDMap.h:303
 AliFMDMap.h:304
 AliFMDMap.h:305
 AliFMDMap.h:306
 AliFMDMap.h:307
 AliFMDMap.h:308
 AliFMDMap.h:309
 AliFMDMap.h:310
 AliFMDMap.h:311
 AliFMDMap.h:312
 AliFMDMap.h:313
 AliFMDMap.h:314
 AliFMDMap.h:315
 AliFMDMap.h:316
 AliFMDMap.h:317
 AliFMDMap.h:318
 AliFMDMap.h:319
 AliFMDMap.h:320
 AliFMDMap.h:321
 AliFMDMap.h:322
 AliFMDMap.h:323
 AliFMDMap.h:324
 AliFMDMap.h:325
 AliFMDMap.h:326
 AliFMDMap.h:327
 AliFMDMap.h:328
 AliFMDMap.h:329
 AliFMDMap.h:330
 AliFMDMap.h:331
 AliFMDMap.h:332
 AliFMDMap.h:333
 AliFMDMap.h:334
 AliFMDMap.h:335
 AliFMDMap.h:336
 AliFMDMap.h:337
 AliFMDMap.h:338
 AliFMDMap.h:339
 AliFMDMap.h:340
 AliFMDMap.h:341
 AliFMDMap.h:342
 AliFMDMap.h:343
 AliFMDMap.h:344
 AliFMDMap.h:345
 AliFMDMap.h:346
 AliFMDMap.h:347
 AliFMDMap.h:348
 AliFMDMap.h:349
 AliFMDMap.h:350
 AliFMDMap.h:351
 AliFMDMap.h:352
 AliFMDMap.h:353
 AliFMDMap.h:354
 AliFMDMap.h:355
 AliFMDMap.h:356
 AliFMDMap.h:357
 AliFMDMap.h:358
 AliFMDMap.h:359
 AliFMDMap.h:360
 AliFMDMap.h:361
 AliFMDMap.h:362
 AliFMDMap.h:363
 AliFMDMap.h:364
 AliFMDMap.h:365
 AliFMDMap.h:366
 AliFMDMap.h:367
 AliFMDMap.h:368
 AliFMDMap.h:369
 AliFMDMap.h:370
 AliFMDMap.h:371
 AliFMDMap.h:372
 AliFMDMap.h:373
 AliFMDMap.h:374
 AliFMDMap.h:375
 AliFMDMap.h:376
 AliFMDMap.h:377
 AliFMDMap.h:378
 AliFMDMap.h:379
 AliFMDMap.h:380
 AliFMDMap.h:381
 AliFMDMap.h:382
 AliFMDMap.h:383
 AliFMDMap.h:384
 AliFMDMap.h:385
 AliFMDMap.h:386
 AliFMDMap.h:387
 AliFMDMap.h:388
 AliFMDMap.h:389
 AliFMDMap.h:390
 AliFMDMap.h:391
 AliFMDMap.h:392
 AliFMDMap.h:393
 AliFMDMap.h:394
 AliFMDMap.h:395
 AliFMDMap.h:396
 AliFMDMap.h:397
 AliFMDMap.h:398
 AliFMDMap.h:399
 AliFMDMap.h:400
 AliFMDMap.h:401
 AliFMDMap.h:402
 AliFMDMap.h:403
 AliFMDMap.h:404
 AliFMDMap.h:405
 AliFMDMap.h:406
 AliFMDMap.h:407
 AliFMDMap.h:408
 AliFMDMap.h:409
 AliFMDMap.h:410
 AliFMDMap.h:411
 AliFMDMap.h:412
 AliFMDMap.h:413
 AliFMDMap.h:414
 AliFMDMap.h:415
 AliFMDMap.h:416
 AliFMDMap.h:417
 AliFMDMap.h:418
 AliFMDMap.h:419
 AliFMDMap.h:420
 AliFMDMap.h:421
 AliFMDMap.h:422
 AliFMDMap.h:423
 AliFMDMap.h:424
 AliFMDMap.h:425
 AliFMDMap.h:426
 AliFMDMap.h:427
 AliFMDMap.h:428
 AliFMDMap.h:429
 AliFMDMap.h:430
 AliFMDMap.h:431
 AliFMDMap.h:432
 AliFMDMap.h:433
 AliFMDMap.h:434
 AliFMDMap.h:435
 AliFMDMap.h:436
 AliFMDMap.h:437
 AliFMDMap.h:438
 AliFMDMap.h:439
 AliFMDMap.h:440
 AliFMDMap.h:441
 AliFMDMap.h:442
 AliFMDMap.h:443
 AliFMDMap.h:444
 AliFMDMap.h:445
 AliFMDMap.h:446
 AliFMDMap.h:447
 AliFMDMap.h:448
 AliFMDMap.h:449
 AliFMDMap.h:450
 AliFMDMap.h:451
 AliFMDMap.h:452
 AliFMDMap.h:453
 AliFMDMap.h:454
 AliFMDMap.h:455
 AliFMDMap.h:456
 AliFMDMap.h:457
 AliFMDMap.h:458
 AliFMDMap.h:459
 AliFMDMap.h:460
 AliFMDMap.h:461
 AliFMDMap.h:462
 AliFMDMap.h:463
 AliFMDMap.h:464
 AliFMDMap.h:465
 AliFMDMap.h:466
 AliFMDMap.h:467
 AliFMDMap.h:468
 AliFMDMap.h:469
 AliFMDMap.h:470
 AliFMDMap.h:471
 AliFMDMap.h:472
 AliFMDMap.h:473
 AliFMDMap.h:474
 AliFMDMap.h:475
 AliFMDMap.h:476
 AliFMDMap.h:477
 AliFMDMap.h:478
 AliFMDMap.h:479
 AliFMDMap.h:480
 AliFMDMap.h:481
 AliFMDMap.h:482
 AliFMDMap.h:483
 AliFMDMap.h:484
 AliFMDMap.h:485
 AliFMDMap.h:486
 AliFMDMap.h:487
 AliFMDMap.h:488
 AliFMDMap.h:489
 AliFMDMap.h:490
 AliFMDMap.h:491
 AliFMDMap.h:492
 AliFMDMap.h:493
 AliFMDMap.h:494
 AliFMDMap.h:495
 AliFMDMap.h:496
 AliFMDMap.h:497
 AliFMDMap.h:498
 AliFMDMap.h:499
 AliFMDMap.h:500
 AliFMDMap.h:501
 AliFMDMap.h:502
 AliFMDMap.h:503
 AliFMDMap.h:504
 AliFMDMap.h:505
 AliFMDMap.h:506
 AliFMDMap.h:507
 AliFMDMap.h:508
 AliFMDMap.h:509
 AliFMDMap.h:510
 AliFMDMap.h:511
 AliFMDMap.h:512
 AliFMDMap.h:513
 AliFMDMap.h:514
 AliFMDMap.h:515
 AliFMDMap.h:516
 AliFMDMap.h:517
 AliFMDMap.h:518
 AliFMDMap.h:519
 AliFMDMap.h:520
 AliFMDMap.h:521
 AliFMDMap.h:522
 AliFMDMap.h:523
 AliFMDMap.h:524
 AliFMDMap.h:525
 AliFMDMap.h:526
 AliFMDMap.h:527
 AliFMDMap.h:528
 AliFMDMap.h:529
 AliFMDMap.h:530
 AliFMDMap.h:531
 AliFMDMap.h:532
 AliFMDMap.h:533
 AliFMDMap.h:534
 AliFMDMap.h:535
 AliFMDMap.h:536
 AliFMDMap.h:537
 AliFMDMap.h:538
 AliFMDMap.h:539
 AliFMDMap.h:540
 AliFMDMap.h:541
 AliFMDMap.h:542
 AliFMDMap.h:543
 AliFMDMap.h:544
 AliFMDMap.h:545
 AliFMDMap.h:546
 AliFMDMap.h:547
 AliFMDMap.h:548
 AliFMDMap.h:549
 AliFMDMap.h:550
 AliFMDMap.h:551
 AliFMDMap.h:552
 AliFMDMap.h:553
 AliFMDMap.h:554
 AliFMDMap.h:555
 AliFMDMap.h:556
 AliFMDMap.h:557
 AliFMDMap.h:558
 AliFMDMap.h:559
 AliFMDMap.h:560
 AliFMDMap.h:561
 AliFMDMap.h:562
 AliFMDMap.h:563
 AliFMDMap.h:564
 AliFMDMap.h:565
 AliFMDMap.h:566
 AliFMDMap.h:567
 AliFMDMap.h:568
 AliFMDMap.h:569
 AliFMDMap.h:570
 AliFMDMap.h:571
 AliFMDMap.h:572
 AliFMDMap.h:573
 AliFMDMap.h:574
 AliFMDMap.h:575
 AliFMDMap.h:576
 AliFMDMap.h:577
 AliFMDMap.h:578
 AliFMDMap.h:579
 AliFMDMap.h:580
 AliFMDMap.h:581
 AliFMDMap.h:582
 AliFMDMap.h:583
 AliFMDMap.h:584
 AliFMDMap.h:585
 AliFMDMap.h:586
 AliFMDMap.h:587
 AliFMDMap.h:588
 AliFMDMap.h:589
 AliFMDMap.h:590
 AliFMDMap.h:591
 AliFMDMap.h:592
 AliFMDMap.h:593
 AliFMDMap.h:594
 AliFMDMap.h:595
 AliFMDMap.h:596
 AliFMDMap.h:597
 AliFMDMap.h:598
 AliFMDMap.h:599
 AliFMDMap.h:600
 AliFMDMap.h:601
 AliFMDMap.h:602
 AliFMDMap.h:603
 AliFMDMap.h:604
 AliFMDMap.h:605
 AliFMDMap.h:606
 AliFMDMap.h:607
 AliFMDMap.h:608
 AliFMDMap.h:609
 AliFMDMap.h:610
 AliFMDMap.h:611
 AliFMDMap.h:612
 AliFMDMap.h:613
 AliFMDMap.h:614
 AliFMDMap.h:615
 AliFMDMap.h:616
 AliFMDMap.h:617
 AliFMDMap.h:618
 AliFMDMap.h:619
 AliFMDMap.h:620
 AliFMDMap.h:621
 AliFMDMap.h:622
 AliFMDMap.h:623