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$

//-----------------------------------------------------------------------------
// Class AliMpLocalBoard
// --------------------
// The class defines the properties of local board
// Author: Ch. Finck, Subatech Nantes
//-----------------------------------------------------------------------------

#include "AliMpLocalBoard.h"
#include "AliMpConstants.h"
#include "AliMpEncodePair.h"

#include "AliLog.h"

#include <TString.h>
#include <Riostream.h>

using std::endl;
/// \cond CLASSIMP
ClassImp(AliMpLocalBoard)
/// \endcond


//_____________________________________________________________________________
AliMpLocalBoard::AliMpLocalBoard(Int_t id, const Char_t* name, Int_t slot)
    : TNamed(name, "mapping trigger local board"),
      fId(id),
      fSlot(slot),
      fTC(true),
      fCrate(),
      fSwitch(0),
      fNotified(true),
      fDEId(false),
      fInputXfrom(0),
      fInputXto(0),
      fInputYfrom(0),
      fInputYto(0)
{
/// Default constructor
}

//______________________________________________________________________________
AliMpLocalBoard::AliMpLocalBoard(TRootIOCtor* /*ioCtor*/)
    : TNamed(),
      fId(),
      fSlot(),
      fTC(),
      fCrate(),
      fSwitch(),
      fNotified(),
      fDEId(),
      fInputXfrom(0),
      fInputXto(0),
      fInputYfrom(0),
      fInputYto(0)
{
/// Root IO constructor
}


//_____________________________________________________________________________
AliMpLocalBoard::~AliMpLocalBoard() 
{
/// Destructor

}

//_____________________________________________________________________________
Int_t AliMpLocalBoard::GetIndex(Int_t chamberId) const
{
/// Return the index from chamver Id.
/// chamberId could range from 10-13 in absolute value
/// chamberId could also range from 0-3 in relative value

   Int_t index = chamberId;
   
   if ( chamberId >= AliMpConstants::NofTrackingChambers() && 
        chamberId <  AliMpConstants::NofChambers() )
   {
       index -= AliMpConstants::NofTrackingChambers();
   } 

   if (index < 0 || index >=  AliMpConstants::NofTriggerChambers() ) 
   {
     AliError(Form("chamber# %d not a valid trigger chamber Id, [0-3] or [10-13]", chamberId));
     return -1;
   }

   return index;
}


//______________________________________________________________________________
Bool_t AliMpLocalBoard::AddDE(Int_t detElemId)
{
/// Add detection element with given detElemId.
/// Return true if the detection element was added

 if ( HasDEId(detElemId) ) {
    AliWarningStream() 
      << "Detection element Id = " << detElemId << " already present."
      << endl;
    return false;
 }

  fDEId.Add(detElemId);
  return true;
}   


//______________________________________________________________________________
Int_t AliMpLocalBoard::GetNofDEs() const
{  
/// Return the number of detection elements connected to this crate

  return fDEId.GetSize(); 
}

//______________________________________________________________________________
Int_t  AliMpLocalBoard::GetDEId(Int_t index) const
{  
/// Return the detection element by index (in loop)

  return fDEId.GetValue(index); 
}

//______________________________________________________________________________
Int_t  AliMpLocalBoard::GetDEIdByChamber(Int_t chamberId) const
{  
/// Return the detection element by index (in loop)

  return fDEId.GetValue(GetIndex(chamberId)); 
}

//______________________________________________________________________________
Bool_t  AliMpLocalBoard::HasDEId(Int_t detElemId) const
{  
/// Return true if the detection element Id is present

  return fDEId.HasValue(detElemId); 
}

//______________________________________________________________________________
void AliMpLocalBoard::SetSwitch(UInt_t swit) 
{
/// set compact switch 
  
  fSwitch = swit;
 
}

//______________________________________________________________________________
Int_t  AliMpLocalBoard::GetSwitch(Int_t index) const
{
/// Return switch bit wise

    if (index > 9) {
	AliWarning("Switch index too large");
        return -1;
    }
    return  (fSwitch >> (9-index)) & 0x1;
}

//______________________________________________________________________________
MpPair_t AliMpLocalBoard::GetPosition() const
{
/// gives position of the local board in (line, col)

    const Char_t* boardName = GetName();
    Int_t iLine = boardName[4] - '0';
    Int_t iCol = boardName[2] - '0';

    return AliMp::Pair(iLine, iCol);
}

 AliMpLocalBoard.cxx:1
 AliMpLocalBoard.cxx:2
 AliMpLocalBoard.cxx:3
 AliMpLocalBoard.cxx:4
 AliMpLocalBoard.cxx:5
 AliMpLocalBoard.cxx:6
 AliMpLocalBoard.cxx:7
 AliMpLocalBoard.cxx:8
 AliMpLocalBoard.cxx:9
 AliMpLocalBoard.cxx:10
 AliMpLocalBoard.cxx:11
 AliMpLocalBoard.cxx:12
 AliMpLocalBoard.cxx:13
 AliMpLocalBoard.cxx:14
 AliMpLocalBoard.cxx:15
 AliMpLocalBoard.cxx:16
 AliMpLocalBoard.cxx:17
 AliMpLocalBoard.cxx:18
 AliMpLocalBoard.cxx:19
 AliMpLocalBoard.cxx:20
 AliMpLocalBoard.cxx:21
 AliMpLocalBoard.cxx:22
 AliMpLocalBoard.cxx:23
 AliMpLocalBoard.cxx:24
 AliMpLocalBoard.cxx:25
 AliMpLocalBoard.cxx:26
 AliMpLocalBoard.cxx:27
 AliMpLocalBoard.cxx:28
 AliMpLocalBoard.cxx:29
 AliMpLocalBoard.cxx:30
 AliMpLocalBoard.cxx:31
 AliMpLocalBoard.cxx:32
 AliMpLocalBoard.cxx:33
 AliMpLocalBoard.cxx:34
 AliMpLocalBoard.cxx:35
 AliMpLocalBoard.cxx:36
 AliMpLocalBoard.cxx:37
 AliMpLocalBoard.cxx:38
 AliMpLocalBoard.cxx:39
 AliMpLocalBoard.cxx:40
 AliMpLocalBoard.cxx:41
 AliMpLocalBoard.cxx:42
 AliMpLocalBoard.cxx:43
 AliMpLocalBoard.cxx:44
 AliMpLocalBoard.cxx:45
 AliMpLocalBoard.cxx:46
 AliMpLocalBoard.cxx:47
 AliMpLocalBoard.cxx:48
 AliMpLocalBoard.cxx:49
 AliMpLocalBoard.cxx:50
 AliMpLocalBoard.cxx:51
 AliMpLocalBoard.cxx:52
 AliMpLocalBoard.cxx:53
 AliMpLocalBoard.cxx:54
 AliMpLocalBoard.cxx:55
 AliMpLocalBoard.cxx:56
 AliMpLocalBoard.cxx:57
 AliMpLocalBoard.cxx:58
 AliMpLocalBoard.cxx:59
 AliMpLocalBoard.cxx:60
 AliMpLocalBoard.cxx:61
 AliMpLocalBoard.cxx:62
 AliMpLocalBoard.cxx:63
 AliMpLocalBoard.cxx:64
 AliMpLocalBoard.cxx:65
 AliMpLocalBoard.cxx:66
 AliMpLocalBoard.cxx:67
 AliMpLocalBoard.cxx:68
 AliMpLocalBoard.cxx:69
 AliMpLocalBoard.cxx:70
 AliMpLocalBoard.cxx:71
 AliMpLocalBoard.cxx:72
 AliMpLocalBoard.cxx:73
 AliMpLocalBoard.cxx:74
 AliMpLocalBoard.cxx:75
 AliMpLocalBoard.cxx:76
 AliMpLocalBoard.cxx:77
 AliMpLocalBoard.cxx:78
 AliMpLocalBoard.cxx:79
 AliMpLocalBoard.cxx:80
 AliMpLocalBoard.cxx:81
 AliMpLocalBoard.cxx:82
 AliMpLocalBoard.cxx:83
 AliMpLocalBoard.cxx:84
 AliMpLocalBoard.cxx:85
 AliMpLocalBoard.cxx:86
 AliMpLocalBoard.cxx:87
 AliMpLocalBoard.cxx:88
 AliMpLocalBoard.cxx:89
 AliMpLocalBoard.cxx:90
 AliMpLocalBoard.cxx:91
 AliMpLocalBoard.cxx:92
 AliMpLocalBoard.cxx:93
 AliMpLocalBoard.cxx:94
 AliMpLocalBoard.cxx:95
 AliMpLocalBoard.cxx:96
 AliMpLocalBoard.cxx:97
 AliMpLocalBoard.cxx:98
 AliMpLocalBoard.cxx:99
 AliMpLocalBoard.cxx:100
 AliMpLocalBoard.cxx:101
 AliMpLocalBoard.cxx:102
 AliMpLocalBoard.cxx:103
 AliMpLocalBoard.cxx:104
 AliMpLocalBoard.cxx:105
 AliMpLocalBoard.cxx:106
 AliMpLocalBoard.cxx:107
 AliMpLocalBoard.cxx:108
 AliMpLocalBoard.cxx:109
 AliMpLocalBoard.cxx:110
 AliMpLocalBoard.cxx:111
 AliMpLocalBoard.cxx:112
 AliMpLocalBoard.cxx:113
 AliMpLocalBoard.cxx:114
 AliMpLocalBoard.cxx:115
 AliMpLocalBoard.cxx:116
 AliMpLocalBoard.cxx:117
 AliMpLocalBoard.cxx:118
 AliMpLocalBoard.cxx:119
 AliMpLocalBoard.cxx:120
 AliMpLocalBoard.cxx:121
 AliMpLocalBoard.cxx:122
 AliMpLocalBoard.cxx:123
 AliMpLocalBoard.cxx:124
 AliMpLocalBoard.cxx:125
 AliMpLocalBoard.cxx:126
 AliMpLocalBoard.cxx:127
 AliMpLocalBoard.cxx:128
 AliMpLocalBoard.cxx:129
 AliMpLocalBoard.cxx:130
 AliMpLocalBoard.cxx:131
 AliMpLocalBoard.cxx:132
 AliMpLocalBoard.cxx:133
 AliMpLocalBoard.cxx:134
 AliMpLocalBoard.cxx:135
 AliMpLocalBoard.cxx:136
 AliMpLocalBoard.cxx:137
 AliMpLocalBoard.cxx:138
 AliMpLocalBoard.cxx:139
 AliMpLocalBoard.cxx:140
 AliMpLocalBoard.cxx:141
 AliMpLocalBoard.cxx:142
 AliMpLocalBoard.cxx:143
 AliMpLocalBoard.cxx:144
 AliMpLocalBoard.cxx:145
 AliMpLocalBoard.cxx:146
 AliMpLocalBoard.cxx:147
 AliMpLocalBoard.cxx:148
 AliMpLocalBoard.cxx:149
 AliMpLocalBoard.cxx:150
 AliMpLocalBoard.cxx:151
 AliMpLocalBoard.cxx:152
 AliMpLocalBoard.cxx:153
 AliMpLocalBoard.cxx:154
 AliMpLocalBoard.cxx:155
 AliMpLocalBoard.cxx:156
 AliMpLocalBoard.cxx:157
 AliMpLocalBoard.cxx:158
 AliMpLocalBoard.cxx:159
 AliMpLocalBoard.cxx:160
 AliMpLocalBoard.cxx:161
 AliMpLocalBoard.cxx:162
 AliMpLocalBoard.cxx:163
 AliMpLocalBoard.cxx:164
 AliMpLocalBoard.cxx:165
 AliMpLocalBoard.cxx:166
 AliMpLocalBoard.cxx:167
 AliMpLocalBoard.cxx:168
 AliMpLocalBoard.cxx:169
 AliMpLocalBoard.cxx:170
 AliMpLocalBoard.cxx:171
 AliMpLocalBoard.cxx:172
 AliMpLocalBoard.cxx:173
 AliMpLocalBoard.cxx:174
 AliMpLocalBoard.cxx:175
 AliMpLocalBoard.cxx:176
 AliMpLocalBoard.cxx:177
 AliMpLocalBoard.cxx:178
 AliMpLocalBoard.cxx:179
 AliMpLocalBoard.cxx:180
 AliMpLocalBoard.cxx:181
 AliMpLocalBoard.cxx:182
 AliMpLocalBoard.cxx:183
 AliMpLocalBoard.cxx:184
 AliMpLocalBoard.cxx:185
 AliMpLocalBoard.cxx:186
 AliMpLocalBoard.cxx:187
 AliMpLocalBoard.cxx:188
 AliMpLocalBoard.cxx:189
 AliMpLocalBoard.cxx:190
 AliMpLocalBoard.cxx:191