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: AliMpExMap.cxx,v 1.5 2006/05/24 13:58:29 ivana Exp $
// Category: basic

//-----------------------------------------------------------------------------
// Class AliMpExMap
// ------------------------
// Helper class making Root persistent TExMap
// Author:Ivana Hrivnacova; IPN Orsay
//-----------------------------------------------------------------------------

#include "AliMpExMap.h"
#include "AliMpExMapIterator.h"

#include "AliLog.h"

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

#include <stdlib.h>

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

//
// static members
//

const Int_t   AliMpExMap::fgkDefaultSize = 300;
const Bool_t  AliMpExMap::fgkDefaultOwnership = true;

const Int_t AliMpExMap::fgkSeparator1 = 10000;
const Int_t AliMpExMap::fgkSeparator2 = 100;

//
// static methods
//

//_____________________________________________________________________________
const TString&  AliMpExMap::GetCharacterMap()
{
  /// Return the string mapping characters to integers
  static const TString kCharacterMap 
    = " 1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.-";
  return kCharacterMap;  
}

//_____________________________________________________________________________
Long_t  AliMpExMap::GetIndex(const TString& s)
{
/// Convert the TString to integer.

  if (s.Length() > 5) {
    AliErrorClass("String too long.");
    return -1;
  }  

  Long_t index = 0;
  for (Int_t i=s.Length()-1; i>=0; --i)  
    index = index*fgkSeparator2 + GetCharacterMap().First(s(i));
  
  return index;
}

//_____________________________________________________________________________
TString  AliMpExMap::GetString(Long_t index)
{
/// Convert the integer index to the string.

  TString s;
  while (index >0) {
    Char_t c = GetCharacterMap()(index%fgkSeparator2);
    s += c;
    index = index/fgkSeparator2;
  }
  return s;
}

//
// constructors/destructor
//

//_____________________________________________________________________________
AliMpExMap::AliMpExMap() 
  : TObject(),
    fMap(fgkDefaultSize),
    fObjects(fgkDefaultSize),
    fKeys(fgkDefaultSize)
{
      /// Default constructor

  fObjects.SetOwner(fgkDefaultOwnership);
}

//_____________________________________________________________________________
AliMpExMap::AliMpExMap(TRootIOCtor*) 
  : TObject(),
    fMap(),
    fObjects(),
    fKeys()
{
      /// "Root - I/O" constructor
}


//_____________________________________________________________________________
AliMpExMap::AliMpExMap(const AliMpExMap& rhs)
  : TObject(),
    fMap(),
    fObjects(),
    fKeys()

{
  /// Copy ctor
  rhs.Copy(*this);
}

//_____________________________________________________________________________
AliMpExMap&
AliMpExMap::operator=(const AliMpExMap& rhs)
{
  /// Assignment operator

  // check assignment to self
  if (this == &rhs) return *this;

  rhs.Copy(*this);
  return *this;
}

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

//
// private static methods
//

//______________________________________________________________________________
Long_t  AliMpExMap::GetIndex(Int_t first, Int_t second)
{
/// Convert the pair of integers to integer.

  if ( first >= 0xFFFF || second >= 0xFFFF ) 
  {
    AliFatalClass("Index out of limit");
    return 0;
  }
  
  return 1 + ( first | ( second << 16 ) );
           
//  if (pair.GetFirst() >= fgkSeparator1 || pair.GetSecond() >= fgkSeparator1) {
//    AliFatalClass("Index out of limit.");
//    exit(1); 
//  }  
//      
//  return pair.GetFirst()*fgkSeparator1 + pair.GetSecond() + 1;
}  

//______________________________________________________________________________
Int_t  AliMpExMap::GetPairFirst(Long_t index) 
{
/// Return first integer from index (encoded pair)

  return (index-1) & 0xFFFF ;
}  

//______________________________________________________________________________
Int_t  AliMpExMap::GetPairSecond(Long_t index)
{
/// Return second integer from index (encoded pair)

  return ( (index-1) & 0xFFFF0000 ) >> 16 ;
}  

//
// private methods
//

//_____________________________________________________________________________
void AliMpExMap::FillMap()
{
/// Fill transient map from the arrays of objects and keys

  for (Int_t i=0; i<fObjects.GetEntriesFast(); i++) 
    fMap.Add(fKeys.At(i), (Long_t)fObjects.At(i)); 
}

//_____________________________________________________________________________
void AliMpExMap::AddKey(Long_t key)
{
/// Add key in array with checking size

  // Resize array if needed
  if (fObjects.GetEntriesFast() == fKeys.GetSize()) {
   fKeys.Set(2*fKeys.GetSize());
   AliDebugStream(1) << "AliMpExMap::AddKey: resized Key array " << endl;
  } 
   
  fKeys.AddAt(key, fObjects.GetEntriesFast());      
}

//_____________________________________________________________________________
void
AliMpExMap::Copy(TObject& dest) const
{
  /// Copy this to dest
  /// Copy implies that dest will become owner of its objects, whatever
  /// the ownership of (*this) is.
  
  AliDebug(1,"");
  
  TObject::Copy(dest);
  AliMpExMap& m = static_cast<AliMpExMap&>(dest);
  m.fKeys = fKeys;
  m.fMap.Delete();
  m.fObjects.Clear();
  
  for ( Int_t i = 0; i <= fObjects.GetLast(); ++i ) 
  {
    TObject* o = fObjects.At(i)->Clone();
    if (!o)
    {
      AliError("Object was not cloned properly ! Please investigate...");
    }
    m.fObjects.AddLast(o);
  }
  m.FillMap();
  m.fObjects.SetOwner(kTRUE);
}

//
// public methods
//

//_____________________________________________________________________________
void AliMpExMap::Clear(Option_t* option)
{
/// Clear memory

  fMap.Delete();
  fObjects.Clear(option);
  fKeys.Reset();
}

//_____________________________________________________________________________
void AliMpExMap::Print(Option_t* opt) const
{
/// Print out

  cout << Form("fMap size/capacity %d/%d",fMap.GetSize(),fMap.Capacity()) 
       << Form(" fObjects.GetSize/Entries %d/%d",fObjects.GetSize(),fObjects.GetEntries()) 
       << Form(" fKeys.GetSize %d",fKeys.GetSize()) << endl;
  
  TString sopt(opt);
  sopt.ToUpper();
  
  if ( sopt.Contains("FULL") ) 
  {
    TIter next(CreateIterator());
    TObject* o;
    while ( ( o = next() ) )
    {
      o->Print();
    }
  }
}

//_____________________________________________________________________________
void AliMpExMap::Add(Int_t keyFirst, Int_t keySecond, TObject* object)
{
/// Add object with its key to the map and arrays
  
  fMap.Add(GetIndex(keyFirst, keySecond), (Long_t)object);
  AddKey(GetIndex(keyFirst, keySecond));
  fObjects.Add(object);
}

//_____________________________________________________________________________
void AliMpExMap::Add(const TString& key, TObject* object)
{
/// Add object with its key to the map and arrays
  
  fMap.Add(GetIndex(key), (Long_t)object);
  AddKey(GetIndex(key));
  fObjects.Add(object);
}

//_____________________________________________________________________________
void AliMpExMap::Add(Int_t key, TObject* object)
{
/// Add object with its key to the map and arrays
  
  fMap.Add(key, (Long_t)object);
  AddKey(key);
  fObjects.Add(object);
}

//_____________________________________________________________________________
void AliMpExMap::SetSize(Int_t size)
{
/// Set given size to the key array

  // fMap.Set(size);
  // fObjects.Set(size);
  fKeys.Set(size);
} 

//_____________________________________________________________________________
void AliMpExMap::SetOwner(Bool_t owner)
{
/// Set given ownership to object array

  fObjects.SetOwner(owner);
}  

//_____________________________________________________________________________
Int_t AliMpExMap::GetSize() const
{
/// Return the map size

  return fObjects.GetEntriesFast();
}

//_____________________________________________________________________________
Int_t AliMpExMap::GetCapacity() const
{
  /// Return the map capacity
  
  return fObjects.GetSize();
}

//_____________________________________________________________________________
AliMpExMapIterator*
AliMpExMap::CreateIterator() const
{
/// Return iterator set to the beginning of the map

  return new AliMpExMapIterator(*this);
}

//_____________________________________________________________________________
TObject* AliMpExMap::GetValue(Int_t keyFirst, Int_t keySecond) const
{
/// Return the object associated with the given key if found,
/// otherwise return 0

  return reinterpret_cast<TObject*>(fMap.GetValue(GetIndex(keyFirst, keySecond)));
}

//_____________________________________________________________________________
TObject*  AliMpExMap::GetValue(const TString& key) const
{
/// Return the object associated with the given key if found,
/// otherwise return 0

  return reinterpret_cast<TObject*>(fMap.GetValue(GetIndex(key)));
}

//_____________________________________________________________________________
TObject*  AliMpExMap::GetValue(Int_t key) const
{
/// Return the object associated with the given key if found,
/// otherwise return 0

  return reinterpret_cast<TObject*>(fMap.GetValue(key));
}

//_____________________________________________________________________________
void AliMpExMap::Streamer(TBuffer &R__b)
{
// Customized streamer                                                     \n
// After the arrays are read, fill the transient map

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