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: AliMpMotifSpecial.cxx,v 1.12 2006/05/24 13:58:41 ivana Exp $
// Category: motif

//-----------------------------------------------------------------------------
// Class AliMpMotifSpecial
// -----------------------
// Class that defines a motif with its unique ID
// and the motif type.
// Included in AliRoot: 2003/05/02
// Authors: David Guez, Ivana Hrivnacova; IPN Orsay
//-----------------------------------------------------------------------------

#include "AliMpMotifSpecial.h"
#include "AliMpMotifType.h"
#include "AliMpEncodePair.h"
#include "AliMpConstants.h"

#include "AliLog.h"

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

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

Int_t AliMpMotifSpecial::fgkPadDimensions2Size = 5;

//______________________________________________________________________________
AliMpMotifSpecial::AliMpMotifSpecial(const TString &id, 
                                     AliMpMotifType *motifType)
  : AliMpVMotif(id,motifType),
    fDimensionX(0.),
    fDimensionY(0.),
    fPadDimensionsVector(),
    fNofPadDimensions2(0),
    fPadDimensions2X(fgkPadDimensions2Size),
    fPadDimensions2Y(fgkPadDimensions2Size)
  
{
  /// Standard constructor.
}

//______________________________________________________________________________
AliMpMotifSpecial::AliMpMotifSpecial(TRootIOCtor* ioCtor):
  AliMpVMotif(),
  fDimensionX(0.),
  fDimensionY(0.),
  fPadDimensionsVector(ioCtor),
  fNofPadDimensions2(),
  fPadDimensions2X(),
  fPadDimensions2Y()
{
  /// Root IO constructor
}


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


//
// public methods
//

//______________________________________________________________________________
void 
AliMpMotifSpecial::GetPadDimensionsByIndices(MpPair_t localIndices,
                                    Double_t& dx, Double_t& dy) const
{
/// Return the dimensions of pad located at the given indices

  GetPadDimensionsByIndices(AliMp::PairFirst(localIndices), 
                            AliMp::PairSecond(localIndices),
                            dx, dy);
}

//______________________________________________________________________________
void 
AliMpMotifSpecial::GetPadDimensionsByIndices(Int_t ixLocal, Int_t iyLocal,
                                    Double_t& dx, Double_t& dy) const
{
/// Return the dimensions of pad located at the given indices

  if ( GetMotifType()->HasPadByLocalIndices(ixLocal, iyLocal) ) {
    if (!fPadDimensionsVector.GetValue(ixLocal, iyLocal)) {
      Warning("GetPadDimensionsByIndices","Indices outside limits");
      dx = 0.;
      dy = 0.;
    }
    else {     
      dx = ((TVector2*)fPadDimensionsVector.GetValue(ixLocal, iyLocal))->X();
      dy = ((TVector2*)fPadDimensionsVector.GetValue(ixLocal, iyLocal))->Y();
    }  
  } 
  else {
    Warning("GetPadDimensionsByIndices","Indices outside limits");
    dx = 0.;
    dy = 0.;
  }
}

//______________________________________________________________________________
Int_t AliMpMotifSpecial::GetNofPadDimensions() const
{
/// Return number of different pad dimensions in this motif

  return fNofPadDimensions2;
}  

//______________________________________________________________________________
Double_t AliMpMotifSpecial::GetPadDimensionX(Int_t i) const
{
/// Returns the i-th different pad dimensions 

  if ( i < 0 || i > fNofPadDimensions2 ) {
    AliFatal("Index outside limits.");
    return 0;
  }  

  return fPadDimensions2X[i];
}  

//______________________________________________________________________________
Double_t AliMpMotifSpecial::GetPadDimensionY(Int_t i) const
{
/// Returns the i-th different pad dimensions 

  if ( i < 0 || i > fNofPadDimensions2 ) {
    AliFatal("Index outside limits.");
    return 0;
  }  

  return fPadDimensions2Y[i];
}  

//______________________________________________________________________________
void AliMpMotifSpecial::CalculateDimensions()
{
  /// Calculate motif dimensions and keep them in fDimensionX/Y data

  Int_t i,j;
  fDimensionY = 0.;
  fDimensionX = 0.;
  
  Double_t* tabSizeX = new Double_t[GetMotifType()->GetNofPadsY()];
  
  for ( j=0; j<GetMotifType()->GetNofPadsY(); ++j ) tabSizeX[j]=0.0;
  
  for ( i=0; i<GetMotifType()->GetNofPadsX(); ++i ) {
    Double_t trSizeY=0.;
    for ( j=0; j<GetMotifType()->GetNofPadsY(); ++j ) {
      Double_t dimx, dimy;
      GetPadDimensionsByIndices(i,j, dimx, dimy);
      trSizeY += dimy;
      tabSizeX[j] += dimx;
    }
    if ( trSizeY > fDimensionY ) fDimensionY = trSizeY;
  }

  for ( j=0; j<GetMotifType()->GetNofPadsY(); ++j ) {
    if ( tabSizeX[j] > fDimensionX ) fDimensionX = tabSizeX[j];
  }

  delete [] tabSizeX;
}  

//______________________________________________________________________________
Double_t AliMpMotifSpecial::DimensionX() const
{
  /// Give the dimension of the motif

  return fDimensionX;
}

//______________________________________________________________________________
Double_t AliMpMotifSpecial::DimensionY() const
{
  /// Give the dimension of the motif

  return fDimensionY;
}

//______________________________________________________________________________
void
AliMpMotifSpecial::PadPositionLocal(MpPair_t localIndices,
                                    Double_t& posx, Double_t& posy) const 
{
  /// Give the local position of the pad number (ix,iy)
  /// (0,0 is the center of the motif)

  return PadPositionLocal(AliMp::PairFirst(localIndices),
                          AliMp::PairSecond(localIndices),
                          posx, posy);

}

//______________________________________________________________________________
void
AliMpMotifSpecial::PadPositionLocal(Int_t ixLocal, Int_t iyLocal,
                                    Double_t& posx, Double_t& posy) const 
{
  /// Give the local position of the pad number (ix,iy)
  /// (0,0 is the center of the motif)

  Double_t dx0, dy0;
  GetPadDimensionsByIndices(ixLocal, iyLocal, dx0, dy0);
  
  posx = dx0;
  for ( Int_t i=0 ;i<ixLocal; ++i ) {
    Double_t dxi, dyi;
    GetPadDimensionsByIndices(i, iyLocal, dxi, dyi);
    posx += 2.*dxi;
  }
  
  posy = dy0;
  for ( Int_t j=0; j<iyLocal; ++j ) {
    Double_t dxi, dyi;
    GetPadDimensionsByIndices(ixLocal, j, dxi, dyi);
    posy += 2.*dyi;
  }
  
  posx -= DimensionX();
  posy -= DimensionY();
}

//______________________________________________________________________________
MpPair_t 
AliMpMotifSpecial::PadIndicesLocal(Double_t localPosX, Double_t localPosY) const
{
  /// Return the pad indices from a given local position
  /// or -1 if this position doesn't correspond to any valid
  /// connection
  ///
  /// *SOLEIL* : This code suppose that
  /// - 1) all cells have the same size along the Y direction
  /// - 2) the column 0 is entierly filled
    

  // First : find the j index
  Int_t j=0;
  Double_t y = localPosY + DimensionY();
  
  while (j<GetMotifType()->GetNofPadsY()) {
    Double_t padDimX, padDimY;
    GetPadDimensionsByIndices(0, j, padDimX, padDimY);
    y -= 2.*padDimY;
    if ( y < 0. ) break;
    j++;
  }

  // Test if it's outside limits
  if (j==GetMotifType()->GetNofPadsY()){
    Warning("PadIndicesLocal","The position is outside the motif");
    return -1;
  }
  
  
  // now find the i index, in the j_th row
  Int_t i=0;
  Double_t x = localPosX + DimensionX();
  
  while (i<GetMotifType()->GetNofPadsX()) {
    Double_t padDimX, padDimY;
    GetPadDimensionsByIndices(i, j, padDimX, padDimY);
    x -= 2.*padDimX;
    if ( x < 0. ) break;
    i++;
  }
  
  
  // Test if it's outside limits

  if (i==GetMotifType()->GetNofPadsX()){
    Warning("PadIndicesLocal","The position is outside the motif");
    return -1;
  }
   
  // then return the found (i,j)
  return AliMp::Pair(i,j);  
}

//______________________________________________________________________________
void AliMpMotifSpecial::SetPadDimensions(MpPair_t localIndices,
                                         Double_t dx, Double_t dy)
{
  /// Set the dimensions of the pad located at \a localIndices to the given
  /// \a dimensions

  SetPadDimensions(AliMp::PairFirst(localIndices), 
                   AliMp::PairSecond(localIndices), dx, dy);  
}

//______________________________________________________________________________
void AliMpMotifSpecial::SetPadDimensions(Int_t ixLocal, Int_t iyLocal,
                                         Double_t dx, Double_t dy)
{
  /// Set the dimensions of the pad located at \a localIndices to the given
  /// \a dimensions
  
  if ( ! GetMotifType()->HasPadByLocalIndices(ixLocal, iyLocal) ) {
    Warning("SetPadDimensions","Pad indices outside limits");
    return;
  }  

  // fill the dimensions map vector
  TVector2* dimensionsObj = new TVector2(dx, dy);
  fPadDimensionsVector.Add(ixLocal, iyLocal, dimensionsObj);

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