ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/
/* $Id$ */
/** @file    AliFMDAltroMapping.cxx
    @author  Christian Holm Christensen <cholm@nbi.dk>
    @date    Sun Mar 26 18:27:56 2006
    @brief   Map HW to detector 
*/
//____________________________________________________________________
//                                                                          
// Mapping of ALTRO hardware channel to detector coordinates 
//
// The hardware address consist of a DDL number and 12bits of ALTRO
// addresses.  The ALTRO address are formatted as follows. 
//
//    12              7         4            0
//    |---------------|---------|------------|
//    | Board #       | ALTRO # | Channel #  |
//    +---------------+---------+------------+
//
// The mapping is done purely by calculations.  In the future,
// however, we may need some hard-coded stuff, or an external file to
// read from.  
//
#include "AliFMDAltroMapping.h"		// ALIFMDALTROMAPPING_H
#include "AliFMDParameters.h"
#include "AliLog.h"
#include "AliFMDDebug.h"
#include <iostream>
#include <iomanip>

//____________________________________________________________________
ClassImp(AliFMDAltroMapping)
#if 0
  ; // This is here to keep Emacs for indenting the next line
#endif

//_____________________________________________________________________________
AliFMDAltroMapping::AliFMDAltroMapping()
{
  // Constructor 
}


//_____________________________________________________________________________
Bool_t
AliFMDAltroMapping::ReadMapping()
{
  // Read map from file - not used
  return kTRUE;
}

//_____________________________________________________________________________
Bool_t
AliFMDAltroMapping::CreateInvMapping()
{
  // Create inverse mapping - not used
  return kTRUE;
}


//____________________________________________________________________
Bool_t 
AliFMDAltroMapping::Channel2StripBase(UShort_t  board, UShort_t  altro, 
				      UShort_t  chan,  Char_t&   ring, 
				      UShort_t& sec,   Short_t&  str) const
{
  // Translate a hardware address to detector coordinates. 
  // The detector is simply 
  // 
  //    ddl + 1
  // 
  // The ring number, sector, and strip number is given by the addr
  // argument.  The address argument, has the following format 
  // 
  //   12            7          4          0
  //   +-------------+----------+----------+
  //   | Board       | ALTRO    | Channel  |
  //   +-------------+----------+----------+
  // 
  // The board number identifier among other things the ring.  There's
  // up to 4 boards per DDL, and the two first (0 and 16) corresponds
  // to the inner rings, while the two last (1 and 17) corresponds to
  // the outer rings. 
  // 
  // The board number and ALTRO number together identifies the sensor,
  // and hence.  The lower board number (0 or 16) are the first N / 2
  // sensors (where N is the number of sensors in the ring).  
  // 
  // There are 3 ALTRO's per card, and each ALTRO serves up to 4
  // sensors.  Which of sensor is determined by the channel number.
  // For the inner rings, the map is
  // 
  //    ALTRO 0, Channel  0 to  7   -> Sensor 0 or 5
  //    ALTRO 0, Channel  8 to 15   -> Sensor 1 or 6
  //    ALTRO 1, Channel  0 to  7   -> Sensor 2 or 7 
  //    ALTRO 2, Channel  0 to  7   -> Sensor 3 or 8
  //    ALTRO 2, Channel  8 to 15   -> Sensor 4 or 9
  // 
  // For the outer rings, the map is 
  // 
  //    ALTRO 0, Channel  0 to  3   -> Sensor 0 or 10
  //    ALTRO 0, Channel  4 to  7   -> Sensor 1 or 11
  //    ALTRO 0, Channel  8 to 11   -> Sensor 2 or 12
  //    ALTRO 0, Channel 12 to 15   -> Sensor 3 or 13
  //    ALTRO 1, Channel  0 to  3   -> Sensor 4 or 14
  //    ALTRO 1, Channel  4 to  7   -> Sensor 5 or 15
  //    ALTRO 2, Channel  0 to  3   -> Sensor 6 or 16
  //    ALTRO 2, Channel  4 to  7   -> Sensor 7 or 17
  //    ALTRO 2, Channel  8 to 11   -> Sensor 8 or 18
  //    ALTRO 2, Channel 12 to 15   -> Sensor 9 or 19
  // 
  // Which divison of the sensor we're in, depends on the channel
  // number only.  For the inner rings, the map is 
  // 
  //    Channel 0                   -> Sector 0, strips   0-127
  //    Channel 1                   -> Sector 1, strips 127-0
  //    Channel 3                   -> Sector 0, strips 128-255
  //    Channel 4                   -> Sector 1, strips 255-128
  //    Channel 5                   -> Sector 0, strips 256-383
  //    Channel 6                   -> Sector 1, strips 383-256
  //    Channel 7                   -> Sector 0, strips 384-511
  //    Channel 8                   -> Sector 1, strips 511-384
  // 
  // There are only half as many strips in the outer sensors, so there
  // only 4 channels are used for a full sensor.  The map is 
  // 
  //    Channel 0                   -> Sector 0, strips   0-127
  //    Channel 1                   -> Sector 1, strips 127-0
  //    Channel 3                   -> Sector 0, strips 128-255
  //    Channel 4                   -> Sector 1, strips 255-128
  // 
  // With this information, we can decode the hardware address to give
  // us detector coordinates, unique at least up a 128 strips.  We
  // return the first strip, as seen by the ALTRO channel, in the
  // given range.  
  //
  ring          =  Board2Ring(board);
  UShort_t fsec =  board < 16 ? 1 : 0;
  switch (ring) {
  case 'i':
  case 'I':
    sec = (fsec * 10 + (altro < 1 ? 0 : altro < 2 ? 4 : 6) 
	   + 2 * (chan / 8) + chan % 2);
    str = ((chan % 8) / 2) * 128;
    break;
  case 'o':
  case 'O': 
    sec = (fsec * 20 + (altro < 1 ? 0 : altro < 2 ? 8 : 12) 
	   + 2 * (chan / 4) + chan % 2);
    str = ((chan % 4) / 2) * 128;
    break;
  }
  if (sec % 2) str += 127;
  // AliFMDDebug(1, ("%02x/%x/%x Base strip = %d", board, altro, chan, str));
  return kTRUE;
}

//____________________________________________________________________
void
AliFMDAltroMapping::Timebin2Strip(UShort_t  sec,         
				  UShort_t  timebin,
				  UShort_t  preSamples, 
				  UShort_t  sampleRate, 
				  Short_t&  stripOff,      
				  UShort_t& sample) const
{
  // Compute the strip off-set in the current channel from the sector
  // and timebin.   Also needed for this computation is the basic
  // offset in timebins, as well as the sample rat. 
  UShort_t t =  (timebin - preSamples);
  sample     =  (t % sampleRate);
  t          -= sample;
  stripOff   =  (sec % 2 ? -1 : 1) * t / sampleRate;
#if 0
  AliInfo(Form("[%2d],%4d -> %d * (%4d - %d)-((%4d - %d) %% %d) / %d = %3d,%d",
	       sec,timebin, (sec % 2 ? -1 : 1), timebin, preSamples, 
	       timebin, preSamples, sampleRate, sampleRate, stripOff, sample));
#endif
}

//____________________________________________________________________
Bool_t 
AliFMDAltroMapping::Hardware2Detector(UShort_t  ddl,     UShort_t    board, 
				      UShort_t  altro,   UShort_t    chan,
				      UShort_t  timebin, UShort_t    preSamples,
				      UShort_t  sampleRate,
				      UShort_t& det,     Char_t&   ring, 
				      UShort_t& sec,     Short_t&  str,
				      UShort_t& sam) const
{
  // Full conversion from hardware address, including timebin number,
  // to detector coordinates and sample number.  Note, that this
  // conversion depends on the oversampling rate and the number of
  // pre-samples 
  Short_t  baseStrip, stripOffset, tdet  = DDL2Detector(ddl);
  if (tdet < 0) return kFALSE;
  det = tdet;
  if (!Channel2StripBase(board, altro, chan, ring, sec, baseStrip)) 
    return kFALSE;
  Timebin2Strip(sec, timebin, preSamples, sampleRate, stripOffset, sam);
  {
    AliFMDDebug(50, ("0x%x/0x%02x/0x%x/0x%x/%04d -> FMD%d%c[%2d,%3d]-%d "
		    "(pre=%d,rate=%d,base=%3d,off=%3d)", 
		     ddl, 
		     board, 
		     altro, 
		     chan, 
		     timebin, 
		     det, 
		     ring, 
		     sec, 
		     str, 
		     sam,
		     preSamples, 
		     sampleRate,
		     baseStrip, 
		     stripOffset));
  }
  str = baseStrip + stripOffset;
  return kTRUE;
}

//____________________________________________________________________
Bool_t 
AliFMDAltroMapping::Hardware2Detector(UShort_t  ddl,       UShort_t addr,
				      UShort_t  timebin,   UShort_t preSamples, 
				      UShort_t  sampleRate,
				      UShort_t& det,       Char_t&   ring, 
				      UShort_t& sec,       Short_t&  str,
				      UShort_t& sam) const
{
  // Translate a hardware address to detector coordinates. 
  // 
  // See also Hardware2Detector that accepts 4 inputs 
  UShort_t board, altro, chan;
  ChannelAddress(addr, board, altro, chan);
  return Hardware2Detector(ddl, board, altro, chan, 
			   timebin, preSamples, sampleRate, 
			   det, ring, sec, str, sam);
}


//____________________________________________________________________
Short_t
AliFMDAltroMapping::Sector2Board(Char_t ring, UShort_t sec) const
{
  //
  // Return board address corresponding to a sector 
  // 
  // Parameters:
  //    ring  Ring identifier 
  //    sec   Sector number 
  // Return:
  //    The board number, or negative number in case of failure 
  //
  switch (ring) { 
  case 'I': 
  case 'i':
    return (sec < 10 ? 16 : 0); // (sec / 10) * 16;
  case 'O': 
  case 'o': 
    return (sec < 20 ? 16 : 0) + 1; // (sec / 20) * 16 + 1;
  }
  return -1;
}

//_____________________________________________ _______________________
Bool_t
AliFMDAltroMapping::Strip2Channel(Char_t    ring,  UShort_t  sec,   
				  UShort_t  str,   UShort_t& board,
				  UShort_t& altro, UShort_t& chan) const
{
  // Translate detector coordinates to a hardware address.
  // The ddl is simply 
  // 
  //    (det - 1)
  // 
  // The ring number, sector, and strip number must be encoded into a
  // hardware address.  The address argument, will have the following
  // format on output
  // 
  //   12            7          4          0
  //   +-------------+----------+----------+
  //   | Board       | ALTRO    | Channel  |
  //   +-------------+----------+----------+
  // 
  // The board number is given by the ring and sector.  The inner
  // rings board 0 and 16, while the outer are 1 and 17.  Which of these
  // depends on the sector.  The map is 
  // 
  //    Ring I, sector  0- 9       ->   board 0 
  //    Ring I, sector 10-19       ->   board 16
  //    Ring O, sector  0-19       ->   board 1 
  //    Ring O, sector 20-39       ->   board 17
  // 
  // There are 3 ALTRO's per board.  The ALTRO number is given by the
  // sector number.  For the inner rings, these are given by
  // 
  //    Sector  0- 3  or  10-13    ->   ALTRO 0 
  //    Sector  4- 5  or  14-15    ->   ALTRO 1 
  //    Sector  6- 9  or  16-19    ->   ALTRO 2 
  // 
  // For the outers, it's given by 
  // 
  //    Sector  0- 7  or  20-27    ->   ALTRO 0 
  //    Sector  8-11  or  28-31    ->   ALTRO 1 
  //    Sector 12-19  or  32-39    ->   ALTRO 2 
  //
  // The channel number is given by the sector and strip number.  For
  // the inners, the map is 
  // 
  //    Sector  0, strips   0-127  ->   Channel  0
  //    Sector  0, strips 128-255  ->   Channel  2
  //    Sector  0, strips 256-383  ->   Channel  4
  //    Sector  0, strips 384-511  ->   Channel  6
  //    Sector  1, strips 127-  0  ->   Channel  1
  //    Sector  1, strips 255-128  ->   Channel  3
  //    Sector  1, strips 383-256  ->   Channel  5
  //    Sector  1, strips 511-384  ->   Channel  7
  //    Sector  2, strips   0-127  ->   Channel  8
  //    Sector  2, strips 128-255  ->   Channel 10
  //    Sector  2, strips 256-383  ->   Channel 12
  //    Sector  2, strips 384-511  ->   Channel 14
  //    Sector  3, strips 127-  0  ->   Channel  9
  //    Sector  3, strips 255-128  ->   Channel 11
  //    Sector  3, strips 383-256  ->   Channel 13
  //    Sector  3, strips 511-384  ->   Channel 15
  // 
  // and so on, up to sector 19.  For the outer, the map is 
  // 
  //    Sector  0, strips   0-127  ->   Channel  0
  //    Sector  0, strips 128-255  ->   Channel  2
  //    Sector  1, strips 127-  0  ->   Channel  1
  //    Sector  1, strips 255-128  ->   Channel  3
  //    Sector  2, strips   0-127  ->   Channel  4
  //    Sector  2, strips 128-255  ->   Channel  6
  //    Sector  3, strips 127-  0  ->   Channel  5
  //    Sector  3, strips 255-128  ->   Channel  7
  //    Sector  4, strips   0-127  ->   Channel  8
  //    Sector  4, strips 128-255  ->   Channel 10
  //    Sector  5, strips 127-  0  ->   Channel  9
  //    Sector  5, strips 255-128  ->   Channel 11
  //    Sector  6, strips   0-127  ->   Channel 12
  //    Sector  6, strips 128-255  ->   Channel 14
  //    Sector  7, strips 127-  0  ->   Channel 13
  //    Sector  7, strips 255-128  ->   Channel 15
  // 
  // and so on upto sector 40. 
  // 
  // With this information, we can decode the detector coordinates to
  // give us a unique hardware address 
  //
  UInt_t   tmp    = 0;
  UShort_t fboard = 0;
  switch (ring) {
  case 'I':
  case 'i':
    fboard =  sec < 10 ? 1 : 0;
    board  =  fboard * 16;
    altro  =  (sec % 10) < 4 ? 0 : (sec % 10) < 6 ? 1 : 2;
    tmp    =  (sec % 10) - (altro == 0 ? 0 : altro == 1 ? 4 : 6);
    chan   =  2  * (str / 128) + (sec % 2) + ((tmp / 2) % 2) * 8;
    break;
  case 'O':
  case 'o':
    fboard =  sec < 20 ? 1 : 0;
    board  =  fboard * 16 + 1;
    altro  =  (sec % 20) < 8 ? 0 : (sec % 20) < 12 ? 1 : 2;
    tmp    =  (sec % 20) - (altro == 0 ? 0 : altro == 1 ? 8 : 12);
    chan   =  2 * (str / 128) + (sec % 2) + ((tmp / 2) % 4) * 4;
    break;
  }
  return kTRUE;
}

//_____________________________________________ _______________________
UShort_t
AliFMDAltroMapping::Strip2Timebin(UShort_t sec, UShort_t strip, 
				  UShort_t sam, UShort_t preSamples, 
				  UShort_t sampleRate) const
{
  //
  // Get the timebin correspoding to a strip and sample 
  // 
  // Parameters:
  //    sec        Sector number 
  //    str        Strip number 
  //    sam        Sample number 
  //    preSamples Number of pre-samples. 
  //    sampleRate The over-sampling rate 
  // Return:
  //    the timebin corresponding to the passed strip 
  //
  UShort_t timebin = preSamples;
  if (sec % 2)  {
    timebin += (127 - (strip % 128)) * sampleRate;
#if 0
    AliInfo(Form("[%2d,%3d]-%d (%d)-> %d + (127 - (%d %% 128)) * %d + %d = %d", 
		 sec, strip, sam, (strip % 128), 
		 preSamples, strip, sampleRate, sam,
		 timebin+sam));
#endif
  }
  else  {
    timebin += (strip % 128) * sampleRate;
#if 0
    AliInfo(Form("[%2d,%3d]-%d (%d)-> %d + (%d %% 128) * %d + %d = %d", 
		 sec, strip, sam, (strip % 128), 
		 preSamples, strip, sampleRate, sam, timebin+sam));
#endif
  }
  timebin += sam;
  return timebin;
}


//____________________________________________________________________
Bool_t 
AliFMDAltroMapping::Detector2Hardware(UShort_t  det,        Char_t    ring, 
				      UShort_t  sec,        UShort_t  str,
				      UShort_t  sam, 
				      UShort_t  preSamples, 
				      UShort_t  sampleRate,
				      UShort_t& ddl,        UShort_t& board, 
				      UShort_t& altro,      UShort_t& channel, 
				      UShort_t& timebin) const
{
  //
  // Map a detector index into a hardware address. 
  // 
  // Parameters:
  //    det         The detector #
  //    ring        The ring ID
  //    sec         The sector #
  //    str         The strip #
  //    sam         The sample number 
  //    preSamples  Number of pre-samples
  //    sampleRate  The oversampling rate 
  //    ddl         On return, hardware DDL number 
  //    board       On return, the FEC board address (local to DDL)
  //    altro       On return, the ALTRO number (local to FEC)
  //    channel     On return, the channel number (local to ALTRO)
  //    timebin     On return, the timebin number (local to ALTRO)
  // Return:
  //    @c true on success, false otherwise 
  //
  ddl = Detector2DDL(det);
  if (!Strip2Channel(ring,sec,str,board,altro,channel)) return kFALSE;
  timebin = Strip2Timebin(sec, str, sam, preSamples, sampleRate);
  return kTRUE;
}


//____________________________________________________________________
Bool_t 
AliFMDAltroMapping::Detector2Hardware(UShort_t  det,        Char_t   ring, 
				      UShort_t  sec,        UShort_t str,
				      UShort_t  sam, 
				      UShort_t  preSamples, UShort_t sampleRate,
				      UShort_t& ddl,        UShort_t&  hwaddr, 
				      UShort_t& timebin) const
{
  //
  // Map a detector index into a hardware address. 
  // 
  // Parameters:
  //    det         The detector #
  //    ring        The ring ID
  //    sec         The sector #
  //    str         The strip #
  //    sam         The sample number 
  //    preSamples  Number of pre-samples
  //    sampleRate  The oversampling rate 
  //    ddl         On return, hardware DDL number 
  //    hwaddr      On return, hardware address.  
  //    timebin     On return, the timebin number (local to ALTRO)
  // Return:
  //    @c true on success, false otherwise 
  //
  UShort_t board = 0;
  UShort_t altro = 0;
  UShort_t chan  = 0;
  if (!Detector2Hardware(det, ring, sec, str, sam, 
			 preSamples, sampleRate, 
			 ddl, board, altro, chan, timebin)) return kFALSE;
  hwaddr =  ChannelAddress(board, altro, chan);
  return kTRUE;
}

      
//____________________________________________________________________
UInt_t 
AliFMDAltroMapping::ChannelAddress(UShort_t board, UShort_t altro, 
				   UShort_t channel) const
{
  //
  // Convert board, chip, channel to a hardware address 
  // 
  // Parameters:
  //    board   Board number 
  //    altro   Altro number 
  //    channel Channel number 
  // Return:
  //    hardware address of a channel 
  // 
  return (((board & 0x1F) << 7) | ((altro & 0x7) << 4) | (channel & 0xF));
}

//____________________________________________________________________
void 
AliFMDAltroMapping::ChannelAddress(UShort_t hwaddr, UShort_t& board, 
				   UShort_t& altro, UShort_t& channel) const
{
  //
  // Convert a channel address to board, altro, channel fields 
  // 
  // Parameters:
  //    hwaddr  Channel address
  //    board   On return, the Board number 
  //    altro   On return, the Altro number 
  //    channel On return, the Channel number 
  //
  board   = ((hwaddr >> 7) & 0x1F);
  altro   = ((hwaddr >> 4) & 0x07);
  channel = ((hwaddr >> 0) & 0x0F);
}

//____________________________________________________________________
Int_t
AliFMDAltroMapping::GetHWAddress(Int_t sec, Int_t str, Int_t ring)
{
  // Return hardware address corresponding to sector sec, strip str,
  // and ring ring.   Mapping from TPC to FMD coordinates are 
  // 
  //   TPC     | FMD
  //   --------+------
  //   padrow  | sector
  //   pad     | strip
  //   sector  | ring 
  //
  Char_t r = Char_t(ring);
  UShort_t board, altro, channel;
  Strip2Channel(r, sec, str, board, altro, channel);
  return ChannelAddress(board, altro, channel);
}

//____________________________________________________________________
Int_t
AliFMDAltroMapping::GetPadRow(Int_t hwaddr) const
{
  // Return sector corresponding to hardware address hwaddr.  Mapping
  // from TPC to FMD coordinates are  
  // 
  //   TPC     | FMD
  //   --------+------
  //   padrow  | sector
  //   pad     | strip
  //   sector  | ring 
  //
  Char_t   ring;
  UShort_t board, altro, channel, sector;
  Short_t  baseStrip;
  ChannelAddress(hwaddr, board, altro, channel);
  if (!Channel2StripBase(board, altro, channel, ring, sector, baseStrip))
    return -1;
  return Int_t(sector);
}

//____________________________________________________________________
Int_t
AliFMDAltroMapping::GetPad(Int_t hwaddr) const
{
  // Return strip corresponding to hardware address hwaddr.  Mapping
  // from TPC to FMD coordinates are  
  // 
  //   TPC     | FMD
  //   --------+------
  //   padrow  | sector
  //   pad     | strip
  //   sector  | ring 
  //
  Char_t   ring;
  UShort_t board, altro, channel, sector;
  Short_t  baseStrip;
  ChannelAddress(hwaddr, board, altro, channel);
  if (!Channel2StripBase(board, altro, channel, ring, sector, baseStrip))
    return -1;
  return Int_t(baseStrip);
}
  
//____________________________________________________________________
Int_t
AliFMDAltroMapping::GetSector(Int_t hwaddr) const
{
  // Return ring corresponding to hardware address hwaddr.  Mapping
  // from TPC to FMD coordinates are  
  // 
  //   TPC     | FMD
  //   --------+------
  //   padrow  | sector
  //   pad     | strip
  //   sector  | ring 
  //
  Char_t   ring;
  UShort_t board, altro, channel, sector;
  Short_t  baseStrip;
  ChannelAddress(hwaddr, board, altro, channel);
  if (!Channel2StripBase(board, altro, channel, ring, sector, baseStrip))
    return -1;
  return Int_t(ring);
}

//____________________________________________________________________
void
AliFMDAltroMapping::Print(Option_t* option) const
{
  //
  // Print map to standard out 
  // 
  // Parameters:
  //    option Option string (hw, or det) 
  //
  TString opt(option);
  opt.ToLower();
  UShort_t ddl, board, chip, chan, addr;
  UShort_t det, sec;
  Short_t  strBase;
  Char_t   rng;
  
  if (opt.Contains("hw") || opt.Contains("hardware")) { 
    std::cout << " DDL | Board | Chip | Chan | Address | Detector\n"
	      << "=====+=======+======+======+=========+===============" 
	      << std::endl;
    for (ddl = 0; ddl <= 2; ddl++) { 
      Int_t  boards[] = { 0, 16, (ddl == 0 ? 32 : 1), 17, 32};
      Int_t* ptr      = boards;
      det             = DDL2Detector(ddl);
      while ((board = *(ptr++)) < 32) { 
	for (chip = 0; chip <= 2; chip++) { 
	  UShort_t nchan = (chip == 1 ? 8 : 16);
	  for (chan = 0; chan < nchan; chan++) { 
	    Channel2StripBase(board, chip, chan, rng, sec, strBase);
	    addr = ChannelAddress(board, chip, chan);
	    std::cout << " "  
		      << std::setw(3) << ddl     << " | " 
		      << std::setfill('0')       << std::hex << " 0x"
		      << std::setw(2) << board   << " |  0x"
		      << std::setw(1) << chip    << " |  0x"
		      << std::setw(1) << chan    << " |   0x" 
		      << std::setw(3) << addr    << " | " 
		      << std::setfill(' ')       << std::dec << " FMD" 
		      << std::setw(1) << det     << rng << "[" 
		      << std::setw(2) << sec     << "," 
		      << std::setw(3) << strBase << "]" << std::endl;
	  } // for chan ...
	  if (chip == 2 && *ptr >= 32) continue;
	  std::cout << "     +       +      +      +         +              " 
		    << std::endl;
	} // for chip ... 
      } // while board 
      std::cout << "-----+-------+------+------+---------+---------------" 
		<< std::endl;
    } // for ddl ... 
  } // if hw 
  if (opt.Contains("det")) { 
    std::cout << " Detector      | DDL | Board | Chip | Chan | Address\n"
	      << "===============+=====+=======+======+======+========"
	      << std::endl;
    for (det = 1; det <= 3; det++) { 
      Char_t  rings[] = { 'I', (det == 1 ? '\0' : 'O'),'\0' };
      Char_t* ptr     = rings;
      ddl             = Detector2DDL(det);
      while ((rng = *(ptr++)) != '\0') { 
	UShort_t nsec = (rng == 'I' ?  20 :  40);
	UShort_t nstr = (rng == 'I' ? 512 : 256);
	for (sec = 0; sec < nsec; sec++) { 
	  for (strBase = 0; strBase < nstr; strBase += 128) {
	    Strip2Channel(rng, sec, strBase, board, chip, chan);
	    addr = ChannelAddress(board, chip, chan);
	    std::cout << std::setfill(' ')         << std::dec << " FMD" 
		      << std::setw(1) << det       << rng      << "[" 
		      << std::setw(2) << sec       << "," 
		      << std::setw(3) << strBase   << "] | " 
		      << std::setw(3) << ddl       << " |  0x"
		      << std::setfill('0')         << std::hex  
		      << std::setw(2) << board     << " |  0x"
		      << std::setw(1) << chip      << " |  0x"
		      << std::setw(1) << chan      << " |   0x" 
		      << std::setw(3) << addr      << std::endl;
	  } // for str ...
	} // for sec ... 
	if (*ptr == '\0') continue;
	std::cout << "               +     +       +      +      +        " 
		  << std::endl;
      } // while rng ... 
      std::cout << "---------------+-----+-------+------+------+--------" 
		<< std::endl;

    } // for det ... 
  } // if det 
}

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