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$
// Category: management

//-----------------------------------------------------------------------------
// Class AliMpManuStore
// --------------------
// The container class for manu serial numbersd
// Authors: Ivana Hrivnacova, IPN Orsay
//          Christian Finck, SUBATECH Nantes
//-----------------------------------------------------------------------------

#include "AliMpManuStore.h"

#include "AliMpDEStore.h"
#include "AliMpDEManager.h"
#include "AliMpDetElement.h"
#include "AliMpConstants.h"
#include "AliMpDataStreams.h"
#include "AliMpFiles.h"
#include "AliMpHelper.h"
#include "AliMpConstants.h"
#include "AliMpEncodePair.h"

#include "AliLog.h"

#include <Riostream.h>
#include <TClass.h>
#include <TSystem.h>
#include <TObjString.h>
#include <TObjArray.h>
#include <TMap.h>

#include <fstream>
#include <cstdlib>

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

AliMpManuStore* AliMpManuStore::fgInstance = 0;
Bool_t          AliMpManuStore::fgWarnIfDoublon = kFALSE;

//
// static methods
//

//______________________________________________________________________________
AliMpManuStore* AliMpManuStore::Instance(Bool_t warn) 
{
    /// Create the DDL store if it does not yet exist
    /// and return its instance

    if ( ! fgInstance && warn  ) {
        AliWarningClass("Manu Store has not been loaded");
    }

    return fgInstance;
}

//______________________________________________________________________________
AliMpManuStore* AliMpManuStore::ReadData(const AliMpDataStreams& dataStreams, 
                                         Bool_t warn) 
{
    /// Load the DDL store from ASCII data files
    /// and return its instance

    if ( fgInstance ) {
        if ( warn )
            AliWarningClass("Manu Store has been already loaded");
        return fgInstance;
    }

    if ( dataStreams.GetReadFromFiles() )
      AliInfoClass("Reading Manu Store from ASCII files.");

    fgInstance = new AliMpManuStore(dataStreams);
    return fgInstance;
}

//
// ctors, dtor
//


//______________________________________________________________________________
AliMpManuStore::AliMpManuStore(const AliMpDataStreams& dataStreams)
: TObject(),
  fManuToSerialNbs(),
  fSerialNbToManus(),
  fNofManusInDE(),
  fNofManus(0)
{  
/// Standard constructor

  AliDebug(1,"");

  // Check if DE store is loaded
  if ( ! AliMpDEStore::Instance(false) ) {
     AliErrorStream()
       << "Mapping segmentation has not be loaded. Cannont load Manu store"
       << endl;
     return;
  }      

  ReadManuSerial(dataStreams);
}

//______________________________________________________________________________
AliMpManuStore::AliMpManuStore(TRootIOCtor* /*ioCtor*/)
: TObject(),
  fManuToSerialNbs(),
  fSerialNbToManus(),
  fNofManusInDE(),
  fNofManus(0)
{  
/// Constructor for IO

  AliDebug(1,"");
}


//______________________________________________________________________________
AliMpManuStore::~AliMpManuStore()
{
/// Destructor

  AliDebug(1,"");
  
  fgInstance = 0;
}

//
// private methods
//

//______________________________________________________________________________
Bool_t AliMpManuStore::ReadData(const AliMpDataStreams& dataStreams,
                                const AliMpDetElement* de, Int_t& nofManus)
{
/// Read manu serial numbers for the given detection element

  Int_t deId = de->GetId();
  TString deName = de->GetDEName();
  AliMp::StationType stationType 
    =  AliMpDEManager::GetStationType(de->GetId());
  AliMq::Station12Type station12Type 
    =  AliMpDEManager::GetStation12Type(de->GetId());

  // Nothing to be done for trigger
  if ( stationType == AliMp::kStationTrigger ) {
    nofManus = 0;
    return kTRUE;
  }  

  static Int_t manuMask = AliMpConstants::ManuMask(AliMp::kNonBendingPlane);

  istream& in 
    = dataStreams.
        CreateDataStream(
          AliMpFiles::ManuToSerialPath(deName, stationType, station12Type));

  char line[80];

  nofManus = 0;
  while ( in.getline(line,80) ) {

    if ( line[0] == '#' ) continue;

    TString tmp(AliMpHelper::Normalize(line));

    TObjArray* stringList = tmp.Tokenize(TString(" "));

    Int_t manuId     = atoi( ((TObjString*)stringList->At(0))->GetName());
    Int_t manuSerial = atoi( ((TObjString*)stringList->At(2))->GetName());
      
    TString sPlane = ((TObjString*)stringList->At(1))->GetString();

    // filling manuId <> manuSerial
    if (!sPlane.CompareTo(PlaneTypeName(AliMp::kBendingPlane)))
	AddManu(deId, manuId, manuSerial);
    else 
	AddManu(deId, manuId + manuMask, manuSerial);
        
    ++nofManus;    

    delete stringList;
  }
  
  delete &in;
   
  return kTRUE;
}

//______________________________________________________________________________
Bool_t  AliMpManuStore::ReadManuSerial(const AliMpDataStreams& dataStreams)
{
/// Read data files for all detection elements.
/// Return true if reading was successful.

  Bool_t isOk = kTRUE;

  // Loop over DE
  AliMpDEIterator it;
  for ( it.First(); ! it.IsDone(); it.Next() ) {

    AliMpDetElement* detElement = it.CurrentDE();

    Int_t nofManus;
    Bool_t result = ReadData(dataStreams, detElement, nofManus);
    fNofManusInDE.Add(detElement->GetId(), nofManus);
    fNofManus += nofManus;
    
    AliDebugStream(2) 
      << "Adding " << nofManus << " manus for de " 
      << detElement->GetId() << endl;
    
    isOk = isOk && result;
  }
  
  return isOk;  
}   

//______________________________________________________________________________
void  AliMpManuStore::ReplaceManu(Int_t detElemId, Int_t manuId, Int_t serialNb) 
{
/// Replace manu in the map.
/// As TExMap has no replcae function, we have to rebuild map once again.
/// Not yet in use, declared private.

  Long_t index = AliMp::Pair(detElemId, manuId);

  TExMap newManuToSerialNbs;
  // Loop over map
  TExMapIter it(&fManuToSerialNbs);

#if (defined(ROOT_VERSION_CODE) && ROOT_VERSION_CODE >= 334082) || \
  (defined(ROOT_SVN_REVISION) && ROOT_SVN_REVISION >= 29598) 
  Long64_t key;
  Long64_t value;
#else
  Long_t key;
  Long_t value;
#endif
  while ( ( it.Next(key, value) ) ) {

    if ( key != index ) 
      newManuToSerialNbs.Add(key, value);
    else
      newManuToSerialNbs.Add(index, Long_t(serialNb));
  }
      
  TExMap newSerialNbToManus;
  // Loop over map
  TExMapIter it2(&fSerialNbToManus);
  while ( ( it2.Next(key, value) ) ) {

    if ( value != index ) 
      newSerialNbToManus.Add(key, value);
    else
      newSerialNbToManus.Add(Long_t(serialNb), index);
  }

  // And now replace the maps
  fManuToSerialNbs = newManuToSerialNbs;
  fSerialNbToManus = newManuToSerialNbs;
}     


//______________________________________________________________________________
Bool_t  AliMpManuStore::WriteData(const TString& outDir)
{
/// Write data files for all detection elements.
/// Return true if reading was successful.
/// Not yet in use, declared private.

  TString curDir = gSystem->pwd();

  // Create top directory
  //
  if ( gSystem->OpenDirectory(outDir.Data()) ) {
    AliErrorStream() 
      << "Directory " << outDir.Data() << " already exists" << endl;
    return kFALSE;
  }
  else {
    AliDebugStream(2) << "Making directory " <<  outDir.Data() << endl;
    gSystem->mkdir(outDir.Data());
  }  

  // Loop over DE
  AliMpDEIterator it;
  for ( it.First(); ! it.IsDone(); it.Next() ) {
  
    AliMpDetElement* detElement = it.CurrentDE();
    Int_t detElemId = detElement->GetId();
    TString deName = detElement->GetDEName();
    AliMp::StationType stationType 
      =  AliMpDEManager::GetStationType(detElemId);
    AliMq::Station12Type station12Type 
      =  AliMpDEManager::GetStation12Type(detElemId);
      
    if ( stationType == AliMp::kStationTrigger ) continue;  

    // Create directory if it does not yet exist
    //
    TString dirPath = outDir + AliMpFiles::StationDataDir(stationType, station12Type);
    if ( ! gSystem->OpenDirectory(dirPath.Data()) ) {
      AliDebugStream(2) << "Making directory " <<  dirPath.Data() << endl;
      gSystem->mkdir(dirPath.Data());
    }  

    // Compose output file path 
    //
    string dataPath = AliMpFiles::ManuToSerialPath(deName, stationType, station12Type).Data();
    string top = AliMpFiles::GetTop().Data();
    if ( dataPath.find(top) != string::npos ) dataPath.erase(0, top.size()+1);
    dataPath.erase(0,dataPath.find('/')+1);
    TString dataPath1 = dataPath;
    TString filePath = outDir + "/" + dataPath1; 

    // Open file
    //
    ofstream out(filePath.Data());
    if ( ! out.good() ) {
      AliErrorStream() 
        << "Cannot open output file  " << filePath.Data() << endl;
      return kFALSE;  
    }
    
    // Loop over map
    TExMapIter it2(&fManuToSerialNbs);
#if (defined(ROOT_SVN_REVISION) && ROOT_SVN_REVISION >= 29598) || \
  (defined(ROOT_VERSION_CODE) && ROOT_VERSION_CODE >= ROOT_VERSION(5,25,02))
    Long64_t key;
    Long64_t value;
#else
    Long_t key;
    Long_t value;
#endif
    while ( ( it2.Next(key, value) ) ) {
      Int_t pairFirst = AliMp::PairFirst(key);
      
      if ( pairFirst != detElemId ) continue;
      
      Int_t manuId = AliMp::PairSecond(key);

      AliDebugStream(3) 
        << "Go to write " << key << " " 
        << pairFirst << " " << manuId << " " << value << endl;

      static Int_t manuMask = AliMpConstants::ManuMask(AliMp::kNonBendingPlane);

      TString planeName = PlaneTypeName(AliMp::kBendingPlane);
      if ( manuId> manuMask ) {
        planeName = PlaneTypeName(AliMp::kNonBendingPlane);
        manuId -= manuMask;
      } 
      out << manuId << " " << planeName.Data() <<  " " << value << endl;
      
      AliDebugStream(3) 
        << manuId << " " << planeName.Data() <<  " " << value << endl;
    }  
    out.close();
  }   
  gSystem->cd(curDir); 
  return kTRUE;  
}   

//
// public methods
//


//______________________________________________________________________________
Int_t  AliMpManuStore::NofManus() const
{ 
/// Return total number of manus in the store

  return fNofManus;
}  
  

//______________________________________________________________________________
Int_t  AliMpManuStore::NofManus(Int_t detElemId) const 
{ 
/// Return number of manus in given detection element

   if ( ! AliMpDEManager::IsValidDetElemId(detElemId, kTRUE) ) return 0;   

   return fNofManusInDE.GetValue(detElemId); 
}

//______________________________________________________________________________
Bool_t  AliMpManuStore::AddManu(Int_t detElemId, Int_t manuId, Int_t serialNb) 
{
/// Add manu to the map

  Long_t index = AliMp::Pair(detElemId, manuId);
  
  AliDebugStream(2)
    << "Adding (" << detElemId << "," <<  manuId 
    << ") as index=" << index << " and serialNb=" << serialNb << endl;
  
  fManuToSerialNbs.Add(index, Long_t(serialNb));
  
  Long_t value = fSerialNbToManus.GetValue(Long_t(serialNb));
  if ( value ) {
    if ( fgWarnIfDoublon ) {
      AliWarningStream() 
        << "Serial number " << serialNb 
        << " already present for (detElemId, manuId) = " ;
        AliMp::PairPut(AliWarningStream(), (MpPair_t) value) << endl;
     }
     return kFALSE;    
  }
  else {
    fSerialNbToManus.Add(Long_t(serialNb), index);
    return kTRUE;
  }  
}     


//______________________________________________________________________________
Int_t AliMpManuStore::GetManuSerial(Int_t detElemId, Int_t manuId) const
{
/// Return manu serial number for given detElemId and manuId

  Long_t index = AliMp::Pair(detElemId, manuId);
  // cout << index << " " << fManuToSerialNbs.GetValue(index) << endl;
  
  return fManuToSerialNbs.GetValue(index);
}  

//______________________________________________________________________________
MpPair_t  AliMpManuStore::GetDetElemIdManu(Int_t manuSerial) const
{
/// Return detElemId and manuId for given manu serial number 
/// as encoded pair

  return fSerialNbToManus.GetValue(Long_t(manuSerial));
}  

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