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$
// $MpId: AliMpFrtCrocusConstants.cxx,v 1.4 2006/05/24 13:58:34 ivana Exp $

//-----------------------------------------------------------------------------
// Class AliMpFrtCrocusConstants
// --------------------
// The class defines the constants for FRT Crocus
// Author: Ch. Finck, Subatech Nantes
//-----------------------------------------------------------------------------

#include "AliMpFrtCrocusConstants.h"

/// \cond CLASSIMP
ClassImp(AliMpFrtCrocusConstants)
/// \endcond

const Int_t   AliMpFrtCrocusConstants::fgkLinkPorts[10] = {0, 1, 2, 3, 5, 0, 1, 2, 3, 5};
const Int_t   AliMpFrtCrocusConstants::fgkOffset  = 5;
const Int_t   AliMpFrtCrocusConstants::fgkNofDsps = 2;
const Int_t   AliMpFrtCrocusConstants::fgkNofBusPatches  = 10;
const UInt_t  AliMpFrtCrocusConstants::fgkBaseAddress   = 0x00040000;
const UInt_t  AliMpFrtCrocusConstants::fgkAddressOffset = 0x00010000;

//____________________________________________________________________
Int_t AliMpFrtCrocusConstants::GetGlobalFrtID(Int_t localID, Int_t ddlID)
{
  /// return global bus id from local frt and ddl id

  return ddlID*fgkOffset + localID;

}
//____________________________________________________________________
Int_t AliMpFrtCrocusConstants::GetLocalFrtID(Int_t globalID, Int_t ddlID)
{
  /// return local bus id from local frt id

  return globalID - ddlID*fgkOffset;

}

//______________________________________________________________________________
AliMpFrtCrocusConstants::AliMpFrtCrocusConstants()
  : TObject()
{
/// Standard constructor
}


//______________________________________________________________________________
AliMpFrtCrocusConstants::~AliMpFrtCrocusConstants()
{
/// Destructor
}

//
// public methods
//

//______________________________________________________________________________
UInt_t  AliMpFrtCrocusConstants::GetTopAddress(Int_t id) 
{
/// return WME top address

  Int_t localFrtId = id % fgkOffset;
  
  return  fgkBaseAddress + 2*localFrtId * fgkAddressOffset;

}

//______________________________________________________________________________
Int_t  AliMpFrtCrocusConstants::GetIdFromTopAddress(UInt_t add) 
{
/// return id from WME top address
  
  return  (add - fgkBaseAddress)/(2*fgkAddressOffset);

}


//______________________________________________________________________________
UInt_t  AliMpFrtCrocusConstants::GetBotAddress(Int_t id)
{
/// return WME bottom address

  Int_t localFrtId = id % fgkOffset; 
  
  return  fgkBaseAddress + (2*localFrtId+1) * fgkAddressOffset;
 
}

//______________________________________________________________________________
Int_t  AliMpFrtCrocusConstants::GetIdFromBotAddress(UInt_t add)
{
/// return id from WME bottom address
  
  return  (add - fgkBaseAddress - fgkAddressOffset)/(2*fgkAddressOffset);
 
}


//______________________________________________________________________________
MpPair_t  AliMpFrtCrocusConstants::GetLinkPortId(Int_t index) 
{  
/// Return the linkPort/dspId by index

  if ( index >= fgkNofBusPatches ) return -1;
  
  Int_t dspId;
  if (index < fgkOffset)
    dspId = 0;
  else
    dspId = 1;  
  
  return AliMp::Pair(dspId, fgkLinkPorts[index]);
 
}

//______________________________________________________________________________
Int_t AliMpFrtCrocusConstants::GetNofDsps()
{  
/// Return the number of DSPs connected to this FRT

  return fgkNofDsps; 
}

//______________________________________________________________________________
Int_t AliMpFrtCrocusConstants::GetNofBusPatches()
{  
/// Return the number of BusPatches connected to this FRT

  return fgkNofBusPatches; 
}


 AliMpFrtCrocusConstants.cxx:1
 AliMpFrtCrocusConstants.cxx:2
 AliMpFrtCrocusConstants.cxx:3
 AliMpFrtCrocusConstants.cxx:4
 AliMpFrtCrocusConstants.cxx:5
 AliMpFrtCrocusConstants.cxx:6
 AliMpFrtCrocusConstants.cxx:7
 AliMpFrtCrocusConstants.cxx:8
 AliMpFrtCrocusConstants.cxx:9
 AliMpFrtCrocusConstants.cxx:10
 AliMpFrtCrocusConstants.cxx:11
 AliMpFrtCrocusConstants.cxx:12
 AliMpFrtCrocusConstants.cxx:13
 AliMpFrtCrocusConstants.cxx:14
 AliMpFrtCrocusConstants.cxx:15
 AliMpFrtCrocusConstants.cxx:16
 AliMpFrtCrocusConstants.cxx:17
 AliMpFrtCrocusConstants.cxx:18
 AliMpFrtCrocusConstants.cxx:19
 AliMpFrtCrocusConstants.cxx:20
 AliMpFrtCrocusConstants.cxx:21
 AliMpFrtCrocusConstants.cxx:22
 AliMpFrtCrocusConstants.cxx:23
 AliMpFrtCrocusConstants.cxx:24
 AliMpFrtCrocusConstants.cxx:25
 AliMpFrtCrocusConstants.cxx:26
 AliMpFrtCrocusConstants.cxx:27
 AliMpFrtCrocusConstants.cxx:28
 AliMpFrtCrocusConstants.cxx:29
 AliMpFrtCrocusConstants.cxx:30
 AliMpFrtCrocusConstants.cxx:31
 AliMpFrtCrocusConstants.cxx:32
 AliMpFrtCrocusConstants.cxx:33
 AliMpFrtCrocusConstants.cxx:34
 AliMpFrtCrocusConstants.cxx:35
 AliMpFrtCrocusConstants.cxx:36
 AliMpFrtCrocusConstants.cxx:37
 AliMpFrtCrocusConstants.cxx:38
 AliMpFrtCrocusConstants.cxx:39
 AliMpFrtCrocusConstants.cxx:40
 AliMpFrtCrocusConstants.cxx:41
 AliMpFrtCrocusConstants.cxx:42
 AliMpFrtCrocusConstants.cxx:43
 AliMpFrtCrocusConstants.cxx:44
 AliMpFrtCrocusConstants.cxx:45
 AliMpFrtCrocusConstants.cxx:46
 AliMpFrtCrocusConstants.cxx:47
 AliMpFrtCrocusConstants.cxx:48
 AliMpFrtCrocusConstants.cxx:49
 AliMpFrtCrocusConstants.cxx:50
 AliMpFrtCrocusConstants.cxx:51
 AliMpFrtCrocusConstants.cxx:52
 AliMpFrtCrocusConstants.cxx:53
 AliMpFrtCrocusConstants.cxx:54
 AliMpFrtCrocusConstants.cxx:55
 AliMpFrtCrocusConstants.cxx:56
 AliMpFrtCrocusConstants.cxx:57
 AliMpFrtCrocusConstants.cxx:58
 AliMpFrtCrocusConstants.cxx:59
 AliMpFrtCrocusConstants.cxx:60
 AliMpFrtCrocusConstants.cxx:61
 AliMpFrtCrocusConstants.cxx:62
 AliMpFrtCrocusConstants.cxx:63
 AliMpFrtCrocusConstants.cxx:64
 AliMpFrtCrocusConstants.cxx:65
 AliMpFrtCrocusConstants.cxx:66
 AliMpFrtCrocusConstants.cxx:67
 AliMpFrtCrocusConstants.cxx:68
 AliMpFrtCrocusConstants.cxx:69
 AliMpFrtCrocusConstants.cxx:70
 AliMpFrtCrocusConstants.cxx:71
 AliMpFrtCrocusConstants.cxx:72
 AliMpFrtCrocusConstants.cxx:73
 AliMpFrtCrocusConstants.cxx:74
 AliMpFrtCrocusConstants.cxx:75
 AliMpFrtCrocusConstants.cxx:76
 AliMpFrtCrocusConstants.cxx:77
 AliMpFrtCrocusConstants.cxx:78
 AliMpFrtCrocusConstants.cxx:79
 AliMpFrtCrocusConstants.cxx:80
 AliMpFrtCrocusConstants.cxx:81
 AliMpFrtCrocusConstants.cxx:82
 AliMpFrtCrocusConstants.cxx:83
 AliMpFrtCrocusConstants.cxx:84
 AliMpFrtCrocusConstants.cxx:85
 AliMpFrtCrocusConstants.cxx:86
 AliMpFrtCrocusConstants.cxx:87
 AliMpFrtCrocusConstants.cxx:88
 AliMpFrtCrocusConstants.cxx:89
 AliMpFrtCrocusConstants.cxx:90
 AliMpFrtCrocusConstants.cxx:91
 AliMpFrtCrocusConstants.cxx:92
 AliMpFrtCrocusConstants.cxx:93
 AliMpFrtCrocusConstants.cxx:94
 AliMpFrtCrocusConstants.cxx:95
 AliMpFrtCrocusConstants.cxx:96
 AliMpFrtCrocusConstants.cxx:97
 AliMpFrtCrocusConstants.cxx:98
 AliMpFrtCrocusConstants.cxx:99
 AliMpFrtCrocusConstants.cxx:100
 AliMpFrtCrocusConstants.cxx:101
 AliMpFrtCrocusConstants.cxx:102
 AliMpFrtCrocusConstants.cxx:103
 AliMpFrtCrocusConstants.cxx:104
 AliMpFrtCrocusConstants.cxx:105
 AliMpFrtCrocusConstants.cxx:106
 AliMpFrtCrocusConstants.cxx:107
 AliMpFrtCrocusConstants.cxx:108
 AliMpFrtCrocusConstants.cxx:109
 AliMpFrtCrocusConstants.cxx:110
 AliMpFrtCrocusConstants.cxx:111
 AliMpFrtCrocusConstants.cxx:112
 AliMpFrtCrocusConstants.cxx:113
 AliMpFrtCrocusConstants.cxx:114
 AliMpFrtCrocusConstants.cxx:115
 AliMpFrtCrocusConstants.cxx:116
 AliMpFrtCrocusConstants.cxx:117
 AliMpFrtCrocusConstants.cxx:118
 AliMpFrtCrocusConstants.cxx:119
 AliMpFrtCrocusConstants.cxx:120
 AliMpFrtCrocusConstants.cxx:121
 AliMpFrtCrocusConstants.cxx:122
 AliMpFrtCrocusConstants.cxx:123
 AliMpFrtCrocusConstants.cxx:124
 AliMpFrtCrocusConstants.cxx:125
 AliMpFrtCrocusConstants.cxx:126
 AliMpFrtCrocusConstants.cxx:127
 AliMpFrtCrocusConstants.cxx:128
 AliMpFrtCrocusConstants.cxx:129
 AliMpFrtCrocusConstants.cxx:130
 AliMpFrtCrocusConstants.cxx:131
 AliMpFrtCrocusConstants.cxx:132
 AliMpFrtCrocusConstants.cxx:133
 AliMpFrtCrocusConstants.cxx:134
 AliMpFrtCrocusConstants.cxx:135
 AliMpFrtCrocusConstants.cxx:136
 AliMpFrtCrocusConstants.cxx:137
 AliMpFrtCrocusConstants.cxx:138
 AliMpFrtCrocusConstants.cxx:139
 AliMpFrtCrocusConstants.cxx:140
 AliMpFrtCrocusConstants.cxx:141
 AliMpFrtCrocusConstants.cxx:142
 AliMpFrtCrocusConstants.cxx:143
 AliMpFrtCrocusConstants.cxx:144
 AliMpFrtCrocusConstants.cxx:145
 AliMpFrtCrocusConstants.cxx:146
 AliMpFrtCrocusConstants.cxx:147
 AliMpFrtCrocusConstants.cxx:148
 AliMpFrtCrocusConstants.cxx:149