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: AliMpRowSegmentRSpecial.cxx,v 1.7 2006/05/24 13:58:46 ivana Exp $
// Category: sector

//-----------------------------------------------------------------------------
// Class AliMpRowSegmentRSpecial
// -----------------------------
// Class describing a special outer row segment composed of the 
// pad rows.
// Included in AliRoot: 2003/05/02
// Authors: David Guez, Ivana Hrivnacova; IPN Orsay
//-----------------------------------------------------------------------------

#include "AliMpRowSegmentRSpecial.h"
#include "AliMpRow.h"
#include "AliMpPadRow.h"
#include "AliMpVPadRowSegment.h"
#include "AliMpMotif.h"
#include "AliMpMotifType.h"
#include "AliMpMotifMap.h"
#include "AliMpMotifPosition.h"
#include "AliMpConstants.h"

#include "AliLog.h"

#include <Riostream.h>
#include <TMath.h>

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

//______________________________________________________________________________
AliMpRowSegmentRSpecial::AliMpRowSegmentRSpecial(AliMpRow* row, Double_t offsetX)
  : AliMpVRowSegmentSpecial(row, offsetX)
{
/// Standard constructor 
}

//______________________________________________________________________________
AliMpRowSegmentRSpecial::AliMpRowSegmentRSpecial() 
  : AliMpVRowSegmentSpecial()
{
/// Default constructor 
}

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

//
// private methods  
//

//______________________________________________________________________________
AliMpVPadRowSegment*  
AliMpRowSegmentRSpecial::FindMostLeftPadRowSegment(Int_t motifPositionId) const
{
/// Find the most left pad row segment with this motifPositionId.

  AliMpVPadRowSegment* found = 0;

  for (Int_t i=0; i<GetNofPadRows(); i++) {
    AliMpPadRow* padRow = GetPadRow(i);    

    for (Int_t j=0; j<padRow->GetNofPadRowSegments(); j++) { 
      AliMpVPadRowSegment* padRowSegment = padRow->GetPadRowSegment(j);

      if ( padRowSegment->GetMotifPositionId() == motifPositionId &&
           (!found || padRowSegment->LeftBorderX() < found->LeftBorderX()))
	   
        found = padRowSegment;  
    }
  }

  return found;   	
}

//______________________________________________________________________________
void AliMpRowSegmentRSpecial::SetGlobalIndicesLow()
{
/// Set global low indices
   
  // Last normal row segment in the row
  // (preceding this special row segment)
  AliMpVRowSegment* rowSegment 
    =  GetRow()->GetRowSegment(GetRow()->GetNofRowSegments()-2);
    
  // Set low indices limit to continue indices of the
  // preceding row segment  
  Int_t ix = rowSegment->GetHighLimitIx() + 1;
  Int_t iy = rowSegment->GetLowLimitIy();
  
  SetLowIndicesLimit(ix, iy);
}

//
// protected methods  
//

//______________________________________________________________________________
void AliMpRowSegmentRSpecial::MotifCenterSlow(Int_t motifPositionId,
                                              Double_t& x, Double_t& y) const
{
/// Fill the coordinates of the motif specified with
/// the given position identifier.                                           \n
/// !! Applicable only for motifs that have their most down pad in
/// this row segment.

  // Find the first (left, down) pad row segment with this motifPositionId.
  AliMpVPadRowSegment* downPadRowSegment 
    = FindPadRowSegment(motifPositionId);
  AliMpVPadRowSegment* leftPadRowSegment 
    = FindMostLeftPadRowSegment(motifPositionId);
  
  // Check if the motifPositionId is present 
  if (!downPadRowSegment || !leftPadRowSegment) {
    AliErrorStream() << "Outside row segment region" << endl;
    return;
  }

  // Check if both pad row segments have the same motif 
  if (downPadRowSegment->GetMotif() != leftPadRowSegment->GetMotif()) {
    AliFatal("Outside row segment region");
    return;
  }

  // Get position of found row segment
  x = leftPadRowSegment->LeftBorderX();       
  y = GetRow()->LowBorderY()  ;   
  
  for (Int_t i=0; i<downPadRowSegment->GetPadRow()->GetID(); i++)
    y += GetPadRow(i)->HalfSizeY()*2.;
    
  // Add motifs dimensions
  x += downPadRowSegment->GetMotif()->DimensionX();
  y += downPadRowSegment->GetMotif()->DimensionY();
}

//
// public methods  
//

//______________________________________________________________________________
Double_t  AliMpRowSegmentRSpecial::LeftBorderX() const
{
/// Return the x coordinate of the left row segment border
/// in the global coordinate system.

  // The right edge of the last normal segment
  Double_t sameBorder = GetOffsetX();

  // Consistence check  
  Double_t leftBorder = DBL_MAX;
  for (Int_t i=0; i<GetNofPadRows(); i++) {
    AliMpPadRow* padRow = GetPadRow(i);
    Double_t border = padRow->GetPadRowSegment(0)->LeftBorderX();
    if (border < leftBorder) leftBorder =  border;
  }  

  if (TMath::Abs(sameBorder - leftBorder) > 1.e-04)  {
    AliErrorStream() << "WrongBorder" << endl;;
    return sameBorder;
  }  
  
  return leftBorder;

}

//______________________________________________________________________________
Double_t  AliMpRowSegmentRSpecial::RightBorderX() const
{
/// Return the x coordinate of the right row segment border
/// in the global coordinate system.

  Double_t rightBorder = -DBL_MAX;
  for (Int_t i=0; i<GetNofPadRows(); i++) {
    AliMpPadRow* padRow = GetPadRow(i);
    Double_t border 
      = padRow->GetPadRowSegment(padRow->GetNofPadRowSegments()-1)
        ->RightBorderX();
      
    if (border > rightBorder) rightBorder =  border;
  }  
  
  return rightBorder;
}

//______________________________________________________________________________
Double_t AliMpRowSegmentRSpecial::GetPositionX() const
{
/// Return the x position of the row segment centre.
/// The centre is defined as the centre of the rectangular
/// row segment envelope.

  // The right edge of the last normal segment
  return GetOffsetX()  + GetDimensionX();
}

//______________________________________________________________________________
Double_t AliMpRowSegmentRSpecial::GetPositionY() const
{
/// Return the y position of the row segment centre.
/// The centre is defined as the centre of the rectangular
/// row segment envelope.

  // The right edge of the last normal segment
  return GetRow()->GetPositionY();  
}

//______________________________________________________________________________
Int_t AliMpRowSegmentRSpecial::SetIndicesToMotifPosition(Int_t i, MpPair_t indices)
{
/// Set global indices to i-th motif position and returns next index in x.

  // Update low indices limit for this row segment
  SetGlobalIndicesLow();

  // Check for consistence
  if ( GetLowLimitIx() != AliMp::PairFirst(indices) ) 
    AliFatal("Inconsistent indices");

  // Get motif position
  AliMpMotifPosition* motifPosition
    = GetRow()->GetMotifMap()->FindMotifPosition(GetMotifPositionId(i));
    
  // Set limits only once
  if ( motifPosition->IsHighLimitValid() ) 
    return AliMp::PairFirst(indices); 

  // Low limit
  //
  Int_t ixl = GetLowLimitIx();
  Int_t iyl = GetLowLimitIy();

  // Find the most down pad row segment with this motifPositionId.
  AliMpVPadRowSegment* padRowSegment = FindPadRowSegment(GetMotifPositionId(i));
  Int_t padRowID = padRowSegment->GetPadRow()->GetID();
  iyl += padRowID; 

  // Add pads offset of this motif position in the row segment
  for ( Int_t im=0; im<i; im++ ) {
    AliMpVPadRowSegment* rs = GetPadRow(padRowID)->GetPadRowSegment(im);
    if ( rs->GetMotifPositionId() == GetMotifPositionId(i) ) break; 
    ixl += rs->GetNofPads();
  }  
  motifPosition->SetLowIndicesLimit(ixl, iyl);

  // High limit	
  //     
  AliMpMotifType* motifType = motifPosition->GetMotif()->GetMotifType();  
  MpPair_t high 
    = motifPosition->GetLowIndicesLimit()
      + AliMp::Pair(motifType->GetNofPadsX()-1, motifType->GetNofPadsY()-1);            
  motifPosition->SetHighIndicesLimit(high);

  // No increment index needed (this is always the last element)
  return AliMp::PairFirst(indices);
}

//______________________________________________________________________________
void AliMpRowSegmentRSpecial::SetGlobalIndices(AliMpRow* rowBefore)
{
/// Set indices limits.
/// The limits are defined as the limits of the smallest rectangle which
/// includes all pads of this special row segment.

  // Get first motif position
  AliMpMotifPosition* firstMotifPosition
    = GetRow()->GetMotifMap()->FindMotifPosition(GetMotifPositionId(0));
    
  // Low ix
  Int_t ixl = firstMotifPosition->GetLowLimitIx();
              // We have to take the motif position limit
	      // as it can overlap over more rows and the indices
	      // of the right border of the precedent normal segment
	      // differ from one row to another  

  // High ix
  Int_t ixh = ixl + MaxNofPadsInRow() - 1;

  // Low iy
  Int_t iyl = AliMpConstants::StartPadIndex();
  if (rowBefore) {
    //if (constPadSizeDirection == kY) {
      iyl = rowBefore->GetHighLimitIy()+1;
    //} 
    /*
    else {
      AliMpVRowSegment* seg = rowBefore->FindRowSegment(ixl);	
      AliMpMotifPosition* motPos =  rowBefore->FindMotifPosition(seg, ixl);
      if (!motPos) 
        Fatal("SetGlobalIndices", "Motif position in rowBefore not found.");
      iyl = motPos->GetHighLimitIy()+1;
    }
    */
  }  

  // High iy
  Int_t iyh = iyl + GetNofPadRows() - 1;
  
  SetLowIndicesLimit(ixl, iyl);
  SetHighIndicesLimit(ixh, iyh);
}  


 AliMpRowSegmentRSpecial.cxx:1
 AliMpRowSegmentRSpecial.cxx:2
 AliMpRowSegmentRSpecial.cxx:3
 AliMpRowSegmentRSpecial.cxx:4
 AliMpRowSegmentRSpecial.cxx:5
 AliMpRowSegmentRSpecial.cxx:6
 AliMpRowSegmentRSpecial.cxx:7
 AliMpRowSegmentRSpecial.cxx:8
 AliMpRowSegmentRSpecial.cxx:9
 AliMpRowSegmentRSpecial.cxx:10
 AliMpRowSegmentRSpecial.cxx:11
 AliMpRowSegmentRSpecial.cxx:12
 AliMpRowSegmentRSpecial.cxx:13
 AliMpRowSegmentRSpecial.cxx:14
 AliMpRowSegmentRSpecial.cxx:15
 AliMpRowSegmentRSpecial.cxx:16
 AliMpRowSegmentRSpecial.cxx:17
 AliMpRowSegmentRSpecial.cxx:18
 AliMpRowSegmentRSpecial.cxx:19
 AliMpRowSegmentRSpecial.cxx:20
 AliMpRowSegmentRSpecial.cxx:21
 AliMpRowSegmentRSpecial.cxx:22
 AliMpRowSegmentRSpecial.cxx:23
 AliMpRowSegmentRSpecial.cxx:24
 AliMpRowSegmentRSpecial.cxx:25
 AliMpRowSegmentRSpecial.cxx:26
 AliMpRowSegmentRSpecial.cxx:27
 AliMpRowSegmentRSpecial.cxx:28
 AliMpRowSegmentRSpecial.cxx:29
 AliMpRowSegmentRSpecial.cxx:30
 AliMpRowSegmentRSpecial.cxx:31
 AliMpRowSegmentRSpecial.cxx:32
 AliMpRowSegmentRSpecial.cxx:33
 AliMpRowSegmentRSpecial.cxx:34
 AliMpRowSegmentRSpecial.cxx:35
 AliMpRowSegmentRSpecial.cxx:36
 AliMpRowSegmentRSpecial.cxx:37
 AliMpRowSegmentRSpecial.cxx:38
 AliMpRowSegmentRSpecial.cxx:39
 AliMpRowSegmentRSpecial.cxx:40
 AliMpRowSegmentRSpecial.cxx:41
 AliMpRowSegmentRSpecial.cxx:42
 AliMpRowSegmentRSpecial.cxx:43
 AliMpRowSegmentRSpecial.cxx:44
 AliMpRowSegmentRSpecial.cxx:45
 AliMpRowSegmentRSpecial.cxx:46
 AliMpRowSegmentRSpecial.cxx:47
 AliMpRowSegmentRSpecial.cxx:48
 AliMpRowSegmentRSpecial.cxx:49
 AliMpRowSegmentRSpecial.cxx:50
 AliMpRowSegmentRSpecial.cxx:51
 AliMpRowSegmentRSpecial.cxx:52
 AliMpRowSegmentRSpecial.cxx:53
 AliMpRowSegmentRSpecial.cxx:54
 AliMpRowSegmentRSpecial.cxx:55
 AliMpRowSegmentRSpecial.cxx:56
 AliMpRowSegmentRSpecial.cxx:57
 AliMpRowSegmentRSpecial.cxx:58
 AliMpRowSegmentRSpecial.cxx:59
 AliMpRowSegmentRSpecial.cxx:60
 AliMpRowSegmentRSpecial.cxx:61
 AliMpRowSegmentRSpecial.cxx:62
 AliMpRowSegmentRSpecial.cxx:63
 AliMpRowSegmentRSpecial.cxx:64
 AliMpRowSegmentRSpecial.cxx:65
 AliMpRowSegmentRSpecial.cxx:66
 AliMpRowSegmentRSpecial.cxx:67
 AliMpRowSegmentRSpecial.cxx:68
 AliMpRowSegmentRSpecial.cxx:69
 AliMpRowSegmentRSpecial.cxx:70
 AliMpRowSegmentRSpecial.cxx:71
 AliMpRowSegmentRSpecial.cxx:72
 AliMpRowSegmentRSpecial.cxx:73
 AliMpRowSegmentRSpecial.cxx:74
 AliMpRowSegmentRSpecial.cxx:75
 AliMpRowSegmentRSpecial.cxx:76
 AliMpRowSegmentRSpecial.cxx:77
 AliMpRowSegmentRSpecial.cxx:78
 AliMpRowSegmentRSpecial.cxx:79
 AliMpRowSegmentRSpecial.cxx:80
 AliMpRowSegmentRSpecial.cxx:81
 AliMpRowSegmentRSpecial.cxx:82
 AliMpRowSegmentRSpecial.cxx:83
 AliMpRowSegmentRSpecial.cxx:84
 AliMpRowSegmentRSpecial.cxx:85
 AliMpRowSegmentRSpecial.cxx:86
 AliMpRowSegmentRSpecial.cxx:87
 AliMpRowSegmentRSpecial.cxx:88
 AliMpRowSegmentRSpecial.cxx:89
 AliMpRowSegmentRSpecial.cxx:90
 AliMpRowSegmentRSpecial.cxx:91
 AliMpRowSegmentRSpecial.cxx:92
 AliMpRowSegmentRSpecial.cxx:93
 AliMpRowSegmentRSpecial.cxx:94
 AliMpRowSegmentRSpecial.cxx:95
 AliMpRowSegmentRSpecial.cxx:96
 AliMpRowSegmentRSpecial.cxx:97
 AliMpRowSegmentRSpecial.cxx:98
 AliMpRowSegmentRSpecial.cxx:99
 AliMpRowSegmentRSpecial.cxx:100
 AliMpRowSegmentRSpecial.cxx:101
 AliMpRowSegmentRSpecial.cxx:102
 AliMpRowSegmentRSpecial.cxx:103
 AliMpRowSegmentRSpecial.cxx:104
 AliMpRowSegmentRSpecial.cxx:105
 AliMpRowSegmentRSpecial.cxx:106
 AliMpRowSegmentRSpecial.cxx:107
 AliMpRowSegmentRSpecial.cxx:108
 AliMpRowSegmentRSpecial.cxx:109
 AliMpRowSegmentRSpecial.cxx:110
 AliMpRowSegmentRSpecial.cxx:111
 AliMpRowSegmentRSpecial.cxx:112
 AliMpRowSegmentRSpecial.cxx:113
 AliMpRowSegmentRSpecial.cxx:114
 AliMpRowSegmentRSpecial.cxx:115
 AliMpRowSegmentRSpecial.cxx:116
 AliMpRowSegmentRSpecial.cxx:117
 AliMpRowSegmentRSpecial.cxx:118
 AliMpRowSegmentRSpecial.cxx:119
 AliMpRowSegmentRSpecial.cxx:120
 AliMpRowSegmentRSpecial.cxx:121
 AliMpRowSegmentRSpecial.cxx:122
 AliMpRowSegmentRSpecial.cxx:123
 AliMpRowSegmentRSpecial.cxx:124
 AliMpRowSegmentRSpecial.cxx:125
 AliMpRowSegmentRSpecial.cxx:126
 AliMpRowSegmentRSpecial.cxx:127
 AliMpRowSegmentRSpecial.cxx:128
 AliMpRowSegmentRSpecial.cxx:129
 AliMpRowSegmentRSpecial.cxx:130
 AliMpRowSegmentRSpecial.cxx:131
 AliMpRowSegmentRSpecial.cxx:132
 AliMpRowSegmentRSpecial.cxx:133
 AliMpRowSegmentRSpecial.cxx:134
 AliMpRowSegmentRSpecial.cxx:135
 AliMpRowSegmentRSpecial.cxx:136
 AliMpRowSegmentRSpecial.cxx:137
 AliMpRowSegmentRSpecial.cxx:138
 AliMpRowSegmentRSpecial.cxx:139
 AliMpRowSegmentRSpecial.cxx:140
 AliMpRowSegmentRSpecial.cxx:141
 AliMpRowSegmentRSpecial.cxx:142
 AliMpRowSegmentRSpecial.cxx:143
 AliMpRowSegmentRSpecial.cxx:144
 AliMpRowSegmentRSpecial.cxx:145
 AliMpRowSegmentRSpecial.cxx:146
 AliMpRowSegmentRSpecial.cxx:147
 AliMpRowSegmentRSpecial.cxx:148
 AliMpRowSegmentRSpecial.cxx:149
 AliMpRowSegmentRSpecial.cxx:150
 AliMpRowSegmentRSpecial.cxx:151
 AliMpRowSegmentRSpecial.cxx:152
 AliMpRowSegmentRSpecial.cxx:153
 AliMpRowSegmentRSpecial.cxx:154
 AliMpRowSegmentRSpecial.cxx:155
 AliMpRowSegmentRSpecial.cxx:156
 AliMpRowSegmentRSpecial.cxx:157
 AliMpRowSegmentRSpecial.cxx:158
 AliMpRowSegmentRSpecial.cxx:159
 AliMpRowSegmentRSpecial.cxx:160
 AliMpRowSegmentRSpecial.cxx:161
 AliMpRowSegmentRSpecial.cxx:162
 AliMpRowSegmentRSpecial.cxx:163
 AliMpRowSegmentRSpecial.cxx:164
 AliMpRowSegmentRSpecial.cxx:165
 AliMpRowSegmentRSpecial.cxx:166
 AliMpRowSegmentRSpecial.cxx:167
 AliMpRowSegmentRSpecial.cxx:168
 AliMpRowSegmentRSpecial.cxx:169
 AliMpRowSegmentRSpecial.cxx:170
 AliMpRowSegmentRSpecial.cxx:171
 AliMpRowSegmentRSpecial.cxx:172
 AliMpRowSegmentRSpecial.cxx:173
 AliMpRowSegmentRSpecial.cxx:174
 AliMpRowSegmentRSpecial.cxx:175
 AliMpRowSegmentRSpecial.cxx:176
 AliMpRowSegmentRSpecial.cxx:177
 AliMpRowSegmentRSpecial.cxx:178
 AliMpRowSegmentRSpecial.cxx:179
 AliMpRowSegmentRSpecial.cxx:180
 AliMpRowSegmentRSpecial.cxx:181
 AliMpRowSegmentRSpecial.cxx:182
 AliMpRowSegmentRSpecial.cxx:183
 AliMpRowSegmentRSpecial.cxx:184
 AliMpRowSegmentRSpecial.cxx:185
 AliMpRowSegmentRSpecial.cxx:186
 AliMpRowSegmentRSpecial.cxx:187
 AliMpRowSegmentRSpecial.cxx:188
 AliMpRowSegmentRSpecial.cxx:189
 AliMpRowSegmentRSpecial.cxx:190
 AliMpRowSegmentRSpecial.cxx:191
 AliMpRowSegmentRSpecial.cxx:192
 AliMpRowSegmentRSpecial.cxx:193
 AliMpRowSegmentRSpecial.cxx:194
 AliMpRowSegmentRSpecial.cxx:195
 AliMpRowSegmentRSpecial.cxx:196
 AliMpRowSegmentRSpecial.cxx:197
 AliMpRowSegmentRSpecial.cxx:198
 AliMpRowSegmentRSpecial.cxx:199
 AliMpRowSegmentRSpecial.cxx:200
 AliMpRowSegmentRSpecial.cxx:201
 AliMpRowSegmentRSpecial.cxx:202
 AliMpRowSegmentRSpecial.cxx:203
 AliMpRowSegmentRSpecial.cxx:204
 AliMpRowSegmentRSpecial.cxx:205
 AliMpRowSegmentRSpecial.cxx:206
 AliMpRowSegmentRSpecial.cxx:207
 AliMpRowSegmentRSpecial.cxx:208
 AliMpRowSegmentRSpecial.cxx:209
 AliMpRowSegmentRSpecial.cxx:210
 AliMpRowSegmentRSpecial.cxx:211
 AliMpRowSegmentRSpecial.cxx:212
 AliMpRowSegmentRSpecial.cxx:213
 AliMpRowSegmentRSpecial.cxx:214
 AliMpRowSegmentRSpecial.cxx:215
 AliMpRowSegmentRSpecial.cxx:216
 AliMpRowSegmentRSpecial.cxx:217
 AliMpRowSegmentRSpecial.cxx:218
 AliMpRowSegmentRSpecial.cxx:219
 AliMpRowSegmentRSpecial.cxx:220
 AliMpRowSegmentRSpecial.cxx:221
 AliMpRowSegmentRSpecial.cxx:222
 AliMpRowSegmentRSpecial.cxx:223
 AliMpRowSegmentRSpecial.cxx:224
 AliMpRowSegmentRSpecial.cxx:225
 AliMpRowSegmentRSpecial.cxx:226
 AliMpRowSegmentRSpecial.cxx:227
 AliMpRowSegmentRSpecial.cxx:228
 AliMpRowSegmentRSpecial.cxx:229
 AliMpRowSegmentRSpecial.cxx:230
 AliMpRowSegmentRSpecial.cxx:231
 AliMpRowSegmentRSpecial.cxx:232
 AliMpRowSegmentRSpecial.cxx:233
 AliMpRowSegmentRSpecial.cxx:234
 AliMpRowSegmentRSpecial.cxx:235
 AliMpRowSegmentRSpecial.cxx:236
 AliMpRowSegmentRSpecial.cxx:237
 AliMpRowSegmentRSpecial.cxx:238
 AliMpRowSegmentRSpecial.cxx:239
 AliMpRowSegmentRSpecial.cxx:240
 AliMpRowSegmentRSpecial.cxx:241
 AliMpRowSegmentRSpecial.cxx:242
 AliMpRowSegmentRSpecial.cxx:243
 AliMpRowSegmentRSpecial.cxx:244
 AliMpRowSegmentRSpecial.cxx:245
 AliMpRowSegmentRSpecial.cxx:246
 AliMpRowSegmentRSpecial.cxx:247
 AliMpRowSegmentRSpecial.cxx:248
 AliMpRowSegmentRSpecial.cxx:249
 AliMpRowSegmentRSpecial.cxx:250
 AliMpRowSegmentRSpecial.cxx:251
 AliMpRowSegmentRSpecial.cxx:252
 AliMpRowSegmentRSpecial.cxx:253
 AliMpRowSegmentRSpecial.cxx:254
 AliMpRowSegmentRSpecial.cxx:255
 AliMpRowSegmentRSpecial.cxx:256
 AliMpRowSegmentRSpecial.cxx:257
 AliMpRowSegmentRSpecial.cxx:258
 AliMpRowSegmentRSpecial.cxx:259
 AliMpRowSegmentRSpecial.cxx:260
 AliMpRowSegmentRSpecial.cxx:261
 AliMpRowSegmentRSpecial.cxx:262
 AliMpRowSegmentRSpecial.cxx:263
 AliMpRowSegmentRSpecial.cxx:264
 AliMpRowSegmentRSpecial.cxx:265
 AliMpRowSegmentRSpecial.cxx:266
 AliMpRowSegmentRSpecial.cxx:267
 AliMpRowSegmentRSpecial.cxx:268
 AliMpRowSegmentRSpecial.cxx:269
 AliMpRowSegmentRSpecial.cxx:270
 AliMpRowSegmentRSpecial.cxx:271
 AliMpRowSegmentRSpecial.cxx:272
 AliMpRowSegmentRSpecial.cxx:273
 AliMpRowSegmentRSpecial.cxx:274
 AliMpRowSegmentRSpecial.cxx:275
 AliMpRowSegmentRSpecial.cxx:276
 AliMpRowSegmentRSpecial.cxx:277
 AliMpRowSegmentRSpecial.cxx:278
 AliMpRowSegmentRSpecial.cxx:279
 AliMpRowSegmentRSpecial.cxx:280
 AliMpRowSegmentRSpecial.cxx:281
 AliMpRowSegmentRSpecial.cxx:282
 AliMpRowSegmentRSpecial.cxx:283
 AliMpRowSegmentRSpecial.cxx:284
 AliMpRowSegmentRSpecial.cxx:285
 AliMpRowSegmentRSpecial.cxx:286
 AliMpRowSegmentRSpecial.cxx:287
 AliMpRowSegmentRSpecial.cxx:288
 AliMpRowSegmentRSpecial.cxx:289
 AliMpRowSegmentRSpecial.cxx:290
 AliMpRowSegmentRSpecial.cxx:291
 AliMpRowSegmentRSpecial.cxx:292
 AliMpRowSegmentRSpecial.cxx:293
 AliMpRowSegmentRSpecial.cxx:294
 AliMpRowSegmentRSpecial.cxx:295
 AliMpRowSegmentRSpecial.cxx:296
 AliMpRowSegmentRSpecial.cxx:297
 AliMpRowSegmentRSpecial.cxx:298
 AliMpRowSegmentRSpecial.cxx:299
 AliMpRowSegmentRSpecial.cxx:300
 AliMpRowSegmentRSpecial.cxx:301
 AliMpRowSegmentRSpecial.cxx:302
 AliMpRowSegmentRSpecial.cxx:303
 AliMpRowSegmentRSpecial.cxx:304
 AliMpRowSegmentRSpecial.cxx:305
 AliMpRowSegmentRSpecial.cxx:306
 AliMpRowSegmentRSpecial.cxx:307
 AliMpRowSegmentRSpecial.cxx:308
 AliMpRowSegmentRSpecial.cxx:309
 AliMpRowSegmentRSpecial.cxx:310
 AliMpRowSegmentRSpecial.cxx:311
 AliMpRowSegmentRSpecial.cxx:312
 AliMpRowSegmentRSpecial.cxx:313
 AliMpRowSegmentRSpecial.cxx:314
 AliMpRowSegmentRSpecial.cxx:315
 AliMpRowSegmentRSpecial.cxx:316
 AliMpRowSegmentRSpecial.cxx:317
 AliMpRowSegmentRSpecial.cxx:318
 AliMpRowSegmentRSpecial.cxx:319
 AliMpRowSegmentRSpecial.cxx:320
 AliMpRowSegmentRSpecial.cxx:321
 AliMpRowSegmentRSpecial.cxx:322
 AliMpRowSegmentRSpecial.cxx:323
 AliMpRowSegmentRSpecial.cxx:324