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

//-----------------------------------------------------------------------------
// Class AliMpRowSegment
// ---------------------
// Class describing a row segment composed of the 
// the identic motifs.
// Included in AliRoot: 2003/05/02
// Authors: David Guez, Ivana Hrivnacova; IPN Orsay
//-----------------------------------------------------------------------------

#include "AliMpRowSegment.h"
#include "AliMpRow.h"
#include "AliMpVMotif.h"
#include "AliMpMotifType.h"
#include "AliMpMotifTypePadIterator.h"
#include "AliMpMotifMap.h"
#include "AliMpMotifPosition.h"
#include "AliMpConstants.h"
#include "AliMpEncodePair.h"

#include "AliLog.h"

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

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

//_____________________________________________________________________________
AliMpRowSegment::AliMpRowSegment(AliMpRow* row, AliMpVMotif* motif, 
                                 Int_t padOffsetX, Int_t padOffsetY,
                                 Int_t nofMotifs,
                                 Int_t motifPositionId, Int_t motifPositionDId)
  : AliMpVRowSegment(),
    fNofMotifs(nofMotifs),
    fLPadOffset(AliMp::Pair(padOffsetX,padOffsetY)),
    fOffsetX(0.),
    fOffsetY(0.),
    fRow(row),
    fMotif(motif),
    fMotifPositionId(motifPositionId),
    fMotifPositionDId(motifPositionDId)
{
/// Standard constructor
 
  // Keep pad offset in the low indices limits
  SetLowIndicesLimit(fLPadOffset);
}

//_____________________________________________________________________________
AliMpRowSegment::AliMpRowSegment() 
  : AliMpVRowSegment(),
    fNofMotifs(0),
    fLPadOffset(0),
    fOffsetX(0.),
    fOffsetY(0.),
    fRow(0),
    fMotif(0),
    fMotifPositionId(0),
    fMotifPositionDId(0)
{
/// Default constructor
}

//_____________________________________________________________________________
AliMpRowSegment::~AliMpRowSegment() 
{
/// Destructor  
}

//
// private methods  
//

//_____________________________________________________________________________
Double_t AliMpRowSegment::FirstMotifCenterX() const
{
/// Return the x coordinate of the first motif center
/// in the global coordinate system.

  return fOffsetX;
}  

//_____________________________________________________________________________
Double_t AliMpRowSegment::LastMotifCenterX() const
{
/// Return the x coordinate of the last motif center
/// in the global coordinate system.

  return fOffsetX + 2.*(fNofMotifs-1)*fMotif->DimensionX();
}

//_____________________________________________________________________________
Double_t AliMpRowSegment::MotifCenterX(Int_t motifPositionId) const
{
/// Return the x coordinate of the motif specified with
/// the given position identifier.

  // Check if x is in the row segment range
  if (! HasMotifPosition(motifPositionId)) {
    AliErrorStream() << "Outside row segment region" << endl;
    return 0;
  }
  
  // Find the position number in the segment  
  Int_t num = (motifPositionId - fMotifPositionId) *  fMotifPositionDId;

  return fOffsetX + num*(fMotif->DimensionX() * 2.0);
}

//_____________________________________________________________________________
Double_t AliMpRowSegment::MotifCenterY(Int_t motifPositionId) const
{
/// Return the y coordinate of the motif specified with
/// the given position identifier.

  // Check if x is in the row segment range
  if (! HasMotifPosition(motifPositionId)) {
    AliErrorStream() << "Outside row segment region" << endl;
    return 0;
  }
  
  return GetRow()->GetPositionY() + fOffsetY;
}

//_____________________________________________________________________________
Bool_t AliMpRowSegment::IsInside(Double_t x, Double_t y, Bool_t warn) const
{
/// Check if the position is inside some motif of this row segment.

  Double_t minY = GetRow()->GetPositionY() + fOffsetY - fMotif->DimensionY();
  Double_t maxY = GetRow()->GetPositionY() + fOffsetY + fMotif->DimensionY();

  if ( x < LeftBorderX() || x > RightBorderX() ||
       y < minY || y > maxY ) {

    if (warn)
      AliWarningStream() << "Outside row segment region" << endl;
    return false;
  }
  else
    return true;
}    

//
// public methods  
//

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

  return FirstMotifCenterX() - fMotif->DimensionX();
}

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

  return LastMotifCenterX() + fMotif->DimensionX();
}

//_____________________________________________________________________________
Double_t  AliMpRowSegment::HalfSizeY() const
{
/// Return the size in y of this row segment.

  return fMotif->DimensionY() + fOffsetY;
}

//_____________________________________________________________________________
AliMpVMotif*  AliMpRowSegment::FindMotif(Double_t x, Double_t y) const
{
/// Return the motif of this row; 

  if ( IsInside(x, y, false) )
    return fMotif;
  else  
    return 0;
}  

//_____________________________________________________________________________
Int_t AliMpRowSegment::FindMotifPositionId(Double_t x, Double_t y) const
{
/// Return the motif position identified for the given
/// geometric position.

  if ( ! IsInside(x, y, false) ) return 0;

  // Find the position number in the segment  
  Int_t num 
    = Int_t((x - LeftBorderX()) / (fMotif->DimensionX() * 2.0));

  // Calculate the position Id
  return fMotifPositionId + num*fMotifPositionDId;  
}

//_____________________________________________________________________________
Bool_t AliMpRowSegment::HasMotifPosition(Int_t motifPositionId) const
{
/// Return true if the motif specified with the given position identifier
/// is in this segment.

  Int_t minId = TMath::Min(fMotifPositionId, 
                    fMotifPositionId + (fNofMotifs-1)*fMotifPositionDId);
  Int_t maxId = TMath::Max(fMotifPositionId, 
                    fMotifPositionId + (fNofMotifs-1)*fMotifPositionDId);

  if (motifPositionId >= minId && motifPositionId <= maxId) {
    return true;
  }
  else 
    return false;
}

//_____________________________________________________________________________
void AliMpRowSegment::MotifCenter(Int_t motifPositionId,
                                  Double_t& x, Double_t& y) const
{
/// Return the coordinates of the motif specified with
/// the given position identifier.

  x = MotifCenterX(motifPositionId);
  y = MotifCenterY(motifPositionId);
}

//_____________________________________________________________________________
Double_t AliMpRowSegment::GetPositionX() const
{
/// Return the x position of the row segment centre.

  return (LeftBorderX() + RightBorderX())/2.;		    
}

//_____________________________________________________________________________
Double_t AliMpRowSegment::GetPositionY() const
{
/// Return the y position of the row segment centre.

  return GetRow()->GetPositionY();  
}

//_____________________________________________________________________________
Double_t AliMpRowSegment::GetDimensionX() const
{
/// Return the halflengths of the row segment in x, y.
// ---

  return (RightBorderX() - LeftBorderX())/2.;		    
}

//_____________________________________________________________________________
Double_t AliMpRowSegment::GetDimensionY() const
{
/// Return the halflengths of the row segment in x, y.
// ---

  return GetRow()->GetDimensionY();  
}

//_____________________________________________________________________________
void   AliMpRowSegment::SetOffset(Double_t x, Double_t y)
{
/// Calculate offset from given offset and 
/// stored offset in pads.

  AliMpMotifTypePadIterator iter(fMotif->GetMotifType());
  iter.First();

  Int_t ix = iter.CurrentItem().GetIx();
  Int_t iy = iter.CurrentItem().GetIy();
  
  Double_t dx, dy;
  fMotif->GetPadDimensionsByIndices(ix, iy, dx, dy);  

  fOffsetX 
     = x + 2.*AliMp::PairFirst(fLPadOffset) * dx + fMotif->DimensionX(); 

  fOffsetY
    = y + AliMp::PairSecond(fLPadOffset) * dy; 
}

//_____________________________________________________________________________
void AliMpRowSegment::SetGlobalIndices(AliMpRow* /*rowBefore*/)
{
/// Set global indices limits.

  // The low/high indices limits has to be taken as the highest/lowest from all 
  // motif positions
  Int_t ixl = 9999;
  Int_t iyl = 9999;
  Int_t ixh = AliMpConstants::StartPadIndex();
  Int_t iyh = AliMpConstants::StartPadIndex();

  for (Int_t i=0; i<GetNofMotifs(); i++) {
     
     AliMpMotifPosition* mPos 
       = GetRow()->GetMotifMap()->FindMotifPosition(GetMotifPositionId(i));
       
     // Check if the motif positions has the limits set
     if ( !mPos->HasValidIndices() )
       Fatal("SetGlobalIndices", 
             "Indices of motif positions have to be set first.");
            
     if ( mPos->GetLowLimitIx() < ixl ) 
       ixl = mPos->GetLowLimitIx();
       
     if ( mPos->GetLowLimitIy() < iyl ) 
       iyl = mPos->GetLowLimitIy();

     if ( mPos->GetHighLimitIx() > ixh ) 
       ixh = mPos->GetHighLimitIx();
       
     if ( mPos->GetHighLimitIy() > iyh ) 
       iyh = mPos->GetHighLimitIy();
  }     

  SetLowIndicesLimit(ixl, iyl);
  SetHighIndicesLimit(ixh, iyh);
}  

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

  // Get motif position
  AliMpMotifPosition* motifPosition
    = GetRow()->GetMotifMap()->FindMotifPosition(GetMotifPositionId(i));

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

  // Return next index in x
  return AliMp::PairFirst(high)+1;
  // return motifType->GetNofPadsX();
}


//_____________________________________________________________________________
AliMpRow*  AliMpRowSegment::GetRow() const
{
/// Return the row.which this row segment belongs to.

  return fRow;
}  

//_____________________________________________________________________________
Int_t  AliMpRowSegment::GetNofMotifs() const
{
/// Return number of motifs in this this row segment.

  return fNofMotifs;
}  

//_____________________________________________________________________________
Int_t  AliMpRowSegment::GetMotifPositionId(Int_t i) const
{
/// Return number of motifs in this this row segment.

  return fMotifPositionId + i*fMotifPositionDId;
}  

//_____________________________________________________________________________
AliMpVMotif*  AliMpRowSegment::GetMotif(Int_t /*i*/) const
{
/// Return the motif of this row segment.

  return fMotif;
}  
 AliMpRowSegment.cxx:1
 AliMpRowSegment.cxx:2
 AliMpRowSegment.cxx:3
 AliMpRowSegment.cxx:4
 AliMpRowSegment.cxx:5
 AliMpRowSegment.cxx:6
 AliMpRowSegment.cxx:7
 AliMpRowSegment.cxx:8
 AliMpRowSegment.cxx:9
 AliMpRowSegment.cxx:10
 AliMpRowSegment.cxx:11
 AliMpRowSegment.cxx:12
 AliMpRowSegment.cxx:13
 AliMpRowSegment.cxx:14
 AliMpRowSegment.cxx:15
 AliMpRowSegment.cxx:16
 AliMpRowSegment.cxx:17
 AliMpRowSegment.cxx:18
 AliMpRowSegment.cxx:19
 AliMpRowSegment.cxx:20
 AliMpRowSegment.cxx:21
 AliMpRowSegment.cxx:22
 AliMpRowSegment.cxx:23
 AliMpRowSegment.cxx:24
 AliMpRowSegment.cxx:25
 AliMpRowSegment.cxx:26
 AliMpRowSegment.cxx:27
 AliMpRowSegment.cxx:28
 AliMpRowSegment.cxx:29
 AliMpRowSegment.cxx:30
 AliMpRowSegment.cxx:31
 AliMpRowSegment.cxx:32
 AliMpRowSegment.cxx:33
 AliMpRowSegment.cxx:34
 AliMpRowSegment.cxx:35
 AliMpRowSegment.cxx:36
 AliMpRowSegment.cxx:37
 AliMpRowSegment.cxx:38
 AliMpRowSegment.cxx:39
 AliMpRowSegment.cxx:40
 AliMpRowSegment.cxx:41
 AliMpRowSegment.cxx:42
 AliMpRowSegment.cxx:43
 AliMpRowSegment.cxx:44
 AliMpRowSegment.cxx:45
 AliMpRowSegment.cxx:46
 AliMpRowSegment.cxx:47
 AliMpRowSegment.cxx:48
 AliMpRowSegment.cxx:49
 AliMpRowSegment.cxx:50
 AliMpRowSegment.cxx:51
 AliMpRowSegment.cxx:52
 AliMpRowSegment.cxx:53
 AliMpRowSegment.cxx:54
 AliMpRowSegment.cxx:55
 AliMpRowSegment.cxx:56
 AliMpRowSegment.cxx:57
 AliMpRowSegment.cxx:58
 AliMpRowSegment.cxx:59
 AliMpRowSegment.cxx:60
 AliMpRowSegment.cxx:61
 AliMpRowSegment.cxx:62
 AliMpRowSegment.cxx:63
 AliMpRowSegment.cxx:64
 AliMpRowSegment.cxx:65
 AliMpRowSegment.cxx:66
 AliMpRowSegment.cxx:67
 AliMpRowSegment.cxx:68
 AliMpRowSegment.cxx:69
 AliMpRowSegment.cxx:70
 AliMpRowSegment.cxx:71
 AliMpRowSegment.cxx:72
 AliMpRowSegment.cxx:73
 AliMpRowSegment.cxx:74
 AliMpRowSegment.cxx:75
 AliMpRowSegment.cxx:76
 AliMpRowSegment.cxx:77
 AliMpRowSegment.cxx:78
 AliMpRowSegment.cxx:79
 AliMpRowSegment.cxx:80
 AliMpRowSegment.cxx:81
 AliMpRowSegment.cxx:82
 AliMpRowSegment.cxx:83
 AliMpRowSegment.cxx:84
 AliMpRowSegment.cxx:85
 AliMpRowSegment.cxx:86
 AliMpRowSegment.cxx:87
 AliMpRowSegment.cxx:88
 AliMpRowSegment.cxx:89
 AliMpRowSegment.cxx:90
 AliMpRowSegment.cxx:91
 AliMpRowSegment.cxx:92
 AliMpRowSegment.cxx:93
 AliMpRowSegment.cxx:94
 AliMpRowSegment.cxx:95
 AliMpRowSegment.cxx:96
 AliMpRowSegment.cxx:97
 AliMpRowSegment.cxx:98
 AliMpRowSegment.cxx:99
 AliMpRowSegment.cxx:100
 AliMpRowSegment.cxx:101
 AliMpRowSegment.cxx:102
 AliMpRowSegment.cxx:103
 AliMpRowSegment.cxx:104
 AliMpRowSegment.cxx:105
 AliMpRowSegment.cxx:106
 AliMpRowSegment.cxx:107
 AliMpRowSegment.cxx:108
 AliMpRowSegment.cxx:109
 AliMpRowSegment.cxx:110
 AliMpRowSegment.cxx:111
 AliMpRowSegment.cxx:112
 AliMpRowSegment.cxx:113
 AliMpRowSegment.cxx:114
 AliMpRowSegment.cxx:115
 AliMpRowSegment.cxx:116
 AliMpRowSegment.cxx:117
 AliMpRowSegment.cxx:118
 AliMpRowSegment.cxx:119
 AliMpRowSegment.cxx:120
 AliMpRowSegment.cxx:121
 AliMpRowSegment.cxx:122
 AliMpRowSegment.cxx:123
 AliMpRowSegment.cxx:124
 AliMpRowSegment.cxx:125
 AliMpRowSegment.cxx:126
 AliMpRowSegment.cxx:127
 AliMpRowSegment.cxx:128
 AliMpRowSegment.cxx:129
 AliMpRowSegment.cxx:130
 AliMpRowSegment.cxx:131
 AliMpRowSegment.cxx:132
 AliMpRowSegment.cxx:133
 AliMpRowSegment.cxx:134
 AliMpRowSegment.cxx:135
 AliMpRowSegment.cxx:136
 AliMpRowSegment.cxx:137
 AliMpRowSegment.cxx:138
 AliMpRowSegment.cxx:139
 AliMpRowSegment.cxx:140
 AliMpRowSegment.cxx:141
 AliMpRowSegment.cxx:142
 AliMpRowSegment.cxx:143
 AliMpRowSegment.cxx:144
 AliMpRowSegment.cxx:145
 AliMpRowSegment.cxx:146
 AliMpRowSegment.cxx:147
 AliMpRowSegment.cxx:148
 AliMpRowSegment.cxx:149
 AliMpRowSegment.cxx:150
 AliMpRowSegment.cxx:151
 AliMpRowSegment.cxx:152
 AliMpRowSegment.cxx:153
 AliMpRowSegment.cxx:154
 AliMpRowSegment.cxx:155
 AliMpRowSegment.cxx:156
 AliMpRowSegment.cxx:157
 AliMpRowSegment.cxx:158
 AliMpRowSegment.cxx:159
 AliMpRowSegment.cxx:160
 AliMpRowSegment.cxx:161
 AliMpRowSegment.cxx:162
 AliMpRowSegment.cxx:163
 AliMpRowSegment.cxx:164
 AliMpRowSegment.cxx:165
 AliMpRowSegment.cxx:166
 AliMpRowSegment.cxx:167
 AliMpRowSegment.cxx:168
 AliMpRowSegment.cxx:169
 AliMpRowSegment.cxx:170
 AliMpRowSegment.cxx:171
 AliMpRowSegment.cxx:172
 AliMpRowSegment.cxx:173
 AliMpRowSegment.cxx:174
 AliMpRowSegment.cxx:175
 AliMpRowSegment.cxx:176
 AliMpRowSegment.cxx:177
 AliMpRowSegment.cxx:178
 AliMpRowSegment.cxx:179
 AliMpRowSegment.cxx:180
 AliMpRowSegment.cxx:181
 AliMpRowSegment.cxx:182
 AliMpRowSegment.cxx:183
 AliMpRowSegment.cxx:184
 AliMpRowSegment.cxx:185
 AliMpRowSegment.cxx:186
 AliMpRowSegment.cxx:187
 AliMpRowSegment.cxx:188
 AliMpRowSegment.cxx:189
 AliMpRowSegment.cxx:190
 AliMpRowSegment.cxx:191
 AliMpRowSegment.cxx:192
 AliMpRowSegment.cxx:193
 AliMpRowSegment.cxx:194
 AliMpRowSegment.cxx:195
 AliMpRowSegment.cxx:196
 AliMpRowSegment.cxx:197
 AliMpRowSegment.cxx:198
 AliMpRowSegment.cxx:199
 AliMpRowSegment.cxx:200
 AliMpRowSegment.cxx:201
 AliMpRowSegment.cxx:202
 AliMpRowSegment.cxx:203
 AliMpRowSegment.cxx:204
 AliMpRowSegment.cxx:205
 AliMpRowSegment.cxx:206
 AliMpRowSegment.cxx:207
 AliMpRowSegment.cxx:208
 AliMpRowSegment.cxx:209
 AliMpRowSegment.cxx:210
 AliMpRowSegment.cxx:211
 AliMpRowSegment.cxx:212
 AliMpRowSegment.cxx:213
 AliMpRowSegment.cxx:214
 AliMpRowSegment.cxx:215
 AliMpRowSegment.cxx:216
 AliMpRowSegment.cxx:217
 AliMpRowSegment.cxx:218
 AliMpRowSegment.cxx:219
 AliMpRowSegment.cxx:220
 AliMpRowSegment.cxx:221
 AliMpRowSegment.cxx:222
 AliMpRowSegment.cxx:223
 AliMpRowSegment.cxx:224
 AliMpRowSegment.cxx:225
 AliMpRowSegment.cxx:226
 AliMpRowSegment.cxx:227
 AliMpRowSegment.cxx:228
 AliMpRowSegment.cxx:229
 AliMpRowSegment.cxx:230
 AliMpRowSegment.cxx:231
 AliMpRowSegment.cxx:232
 AliMpRowSegment.cxx:233
 AliMpRowSegment.cxx:234
 AliMpRowSegment.cxx:235
 AliMpRowSegment.cxx:236
 AliMpRowSegment.cxx:237
 AliMpRowSegment.cxx:238
 AliMpRowSegment.cxx:239
 AliMpRowSegment.cxx:240
 AliMpRowSegment.cxx:241
 AliMpRowSegment.cxx:242
 AliMpRowSegment.cxx:243
 AliMpRowSegment.cxx:244
 AliMpRowSegment.cxx:245
 AliMpRowSegment.cxx:246
 AliMpRowSegment.cxx:247
 AliMpRowSegment.cxx:248
 AliMpRowSegment.cxx:249
 AliMpRowSegment.cxx:250
 AliMpRowSegment.cxx:251
 AliMpRowSegment.cxx:252
 AliMpRowSegment.cxx:253
 AliMpRowSegment.cxx:254
 AliMpRowSegment.cxx:255
 AliMpRowSegment.cxx:256
 AliMpRowSegment.cxx:257
 AliMpRowSegment.cxx:258
 AliMpRowSegment.cxx:259
 AliMpRowSegment.cxx:260
 AliMpRowSegment.cxx:261
 AliMpRowSegment.cxx:262
 AliMpRowSegment.cxx:263
 AliMpRowSegment.cxx:264
 AliMpRowSegment.cxx:265
 AliMpRowSegment.cxx:266
 AliMpRowSegment.cxx:267
 AliMpRowSegment.cxx:268
 AliMpRowSegment.cxx:269
 AliMpRowSegment.cxx:270
 AliMpRowSegment.cxx:271
 AliMpRowSegment.cxx:272
 AliMpRowSegment.cxx:273
 AliMpRowSegment.cxx:274
 AliMpRowSegment.cxx:275
 AliMpRowSegment.cxx:276
 AliMpRowSegment.cxx:277
 AliMpRowSegment.cxx:278
 AliMpRowSegment.cxx:279
 AliMpRowSegment.cxx:280
 AliMpRowSegment.cxx:281
 AliMpRowSegment.cxx:282
 AliMpRowSegment.cxx:283
 AliMpRowSegment.cxx:284
 AliMpRowSegment.cxx:285
 AliMpRowSegment.cxx:286
 AliMpRowSegment.cxx:287
 AliMpRowSegment.cxx:288
 AliMpRowSegment.cxx:289
 AliMpRowSegment.cxx:290
 AliMpRowSegment.cxx:291
 AliMpRowSegment.cxx:292
 AliMpRowSegment.cxx:293
 AliMpRowSegment.cxx:294
 AliMpRowSegment.cxx:295
 AliMpRowSegment.cxx:296
 AliMpRowSegment.cxx:297
 AliMpRowSegment.cxx:298
 AliMpRowSegment.cxx:299
 AliMpRowSegment.cxx:300
 AliMpRowSegment.cxx:301
 AliMpRowSegment.cxx:302
 AliMpRowSegment.cxx:303
 AliMpRowSegment.cxx:304
 AliMpRowSegment.cxx:305
 AliMpRowSegment.cxx:306
 AliMpRowSegment.cxx:307
 AliMpRowSegment.cxx:308
 AliMpRowSegment.cxx:309
 AliMpRowSegment.cxx:310
 AliMpRowSegment.cxx:311
 AliMpRowSegment.cxx:312
 AliMpRowSegment.cxx:313
 AliMpRowSegment.cxx:314
 AliMpRowSegment.cxx:315
 AliMpRowSegment.cxx:316
 AliMpRowSegment.cxx:317
 AliMpRowSegment.cxx:318
 AliMpRowSegment.cxx:319
 AliMpRowSegment.cxx:320
 AliMpRowSegment.cxx:321
 AliMpRowSegment.cxx:322
 AliMpRowSegment.cxx:323
 AliMpRowSegment.cxx:324
 AliMpRowSegment.cxx:325
 AliMpRowSegment.cxx:326
 AliMpRowSegment.cxx:327
 AliMpRowSegment.cxx:328
 AliMpRowSegment.cxx:329
 AliMpRowSegment.cxx:330
 AliMpRowSegment.cxx:331
 AliMpRowSegment.cxx:332
 AliMpRowSegment.cxx:333
 AliMpRowSegment.cxx:334
 AliMpRowSegment.cxx:335
 AliMpRowSegment.cxx:336
 AliMpRowSegment.cxx:337
 AliMpRowSegment.cxx:338
 AliMpRowSegment.cxx:339
 AliMpRowSegment.cxx:340
 AliMpRowSegment.cxx:341
 AliMpRowSegment.cxx:342
 AliMpRowSegment.cxx:343
 AliMpRowSegment.cxx:344
 AliMpRowSegment.cxx:345
 AliMpRowSegment.cxx:346
 AliMpRowSegment.cxx:347
 AliMpRowSegment.cxx:348
 AliMpRowSegment.cxx:349
 AliMpRowSegment.cxx:350
 AliMpRowSegment.cxx:351
 AliMpRowSegment.cxx:352
 AliMpRowSegment.cxx:353
 AliMpRowSegment.cxx:354
 AliMpRowSegment.cxx:355
 AliMpRowSegment.cxx:356
 AliMpRowSegment.cxx:357
 AliMpRowSegment.cxx:358
 AliMpRowSegment.cxx:359
 AliMpRowSegment.cxx:360
 AliMpRowSegment.cxx:361
 AliMpRowSegment.cxx:362
 AliMpRowSegment.cxx:363
 AliMpRowSegment.cxx:364
 AliMpRowSegment.cxx:365
 AliMpRowSegment.cxx:366
 AliMpRowSegment.cxx:367
 AliMpRowSegment.cxx:368
 AliMpRowSegment.cxx:369
 AliMpRowSegment.cxx:370
 AliMpRowSegment.cxx:371
 AliMpRowSegment.cxx:372
 AliMpRowSegment.cxx:373
 AliMpRowSegment.cxx:374
 AliMpRowSegment.cxx:375
 AliMpRowSegment.cxx:376
 AliMpRowSegment.cxx:377
 AliMpRowSegment.cxx:378
 AliMpRowSegment.cxx:379
 AliMpRowSegment.cxx:380
 AliMpRowSegment.cxx:381
 AliMpRowSegment.cxx:382
 AliMpRowSegment.cxx:383
 AliMpRowSegment.cxx:384
 AliMpRowSegment.cxx:385
 AliMpRowSegment.cxx:386
 AliMpRowSegment.cxx:387
 AliMpRowSegment.cxx:388
 AliMpRowSegment.cxx:389
 AliMpRowSegment.cxx:390
 AliMpRowSegment.cxx:391
 AliMpRowSegment.cxx:392
 AliMpRowSegment.cxx:393
 AliMpRowSegment.cxx:394
 AliMpRowSegment.cxx:395
 AliMpRowSegment.cxx:396
 AliMpRowSegment.cxx:397
 AliMpRowSegment.cxx:398
 AliMpRowSegment.cxx:399
 AliMpRowSegment.cxx:400
 AliMpRowSegment.cxx:401
 AliMpRowSegment.cxx:402
 AliMpRowSegment.cxx:403