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: basic

//-----------------------------------------------------------------------------
// Class AliMpDataProcessor
// -----------------------
// Class for converting ASCII data files in the map of string
// Author: Ivana Hrivnacova, IPN Orsay
//-----------------------------------------------------------------------------

#include "AliMpDataProcessor.h"
#include "AliMpDataMap.h"
#include "AliMpFiles.h"

#include "AliLog.h"

#include <TSystem.h>
#include <TObjString.h>
#include <TFile.h>
#include <Riostream.h>

#include <fstream>
#include <sstream>
#include <map>

//
// static private methods
//

//_____________________________________________________________________________
const TString& AliMpDataProcessor::GetHeaderFileName() 
{
  /// Return the default name for generated header file
  static const TString kHeaderFileName = "add.h";
  return kHeaderFileName;
}    

//_____________________________________________________________________________
const TString& AliMpDataProcessor::GetImplFileName() 
{
  /// Return the default name for generated implementation file
  static const TString kImplFileName = "add.cxx";
  return kImplFileName;
}  

//
// ctors, dtor
//

//_____________________________________________________________________________
AliMpDataProcessor::AliMpDataProcessor()
  : TObject(),
    fCounter(0),
    fHeaderFile(),
    fImplFile()
{
/// Default and standar constructor

  fHeaderFile.open(GetHeaderFileName().Data(), std::ios::out);
  fImplFile.open(GetImplFileName().Data(), std::ios::out);
  
  // Add check

}

//_____________________________________________________________________________
AliMpDataProcessor:: ~AliMpDataProcessor()
{
/// Destructor

}

//
// private methods
//


//_____________________________________________________________________________
void AliMpDataProcessor::ProcessDirectory(const TString& path, 
                                          AliMpDataMap* dataMap) 
{
/// Recursive function to process data directory
  
  AliDebugStream(2) << "ProcessDirectory " << path.Data() << endl;

  // skip some directories
  //if ( path.Contains("manu_serial") ) return;
  //if ( path.Contains("stationTrigger") ) return;
  
  gSystem->cd(path);
  gSystem->Exec("ls > /tmp/mpfiles.txt");
  
  ifstream mpfiles("/tmp/mpfiles.txt");
  TString mpfilesStr;
  TString fileName;
  while ( mpfiles >> fileName ) {
    mpfilesStr += fileName.Data();
    mpfilesStr += " ";
  }  

  istringstream mpFilesStream(mpfilesStr.Data());
  while ( mpFilesStream >> fileName ) {
    TString filePath = path + "/" + fileName;
    if ( gSystem->OpenDirectory(filePath.Data()) )
      ProcessDirectory(filePath, dataMap);
    else
      ProcessFile(filePath, dataMap);
  }  

  AliDebugStream(2) << "ProcessDirectory done " << path.Data() << endl;
} 

//_____________________________________________________________________________
void AliMpDataProcessor::ProcessFile(const TString& path, AliMpDataMap* dataMap) 
{
/// Dump the content of the file specified by its path
/// in a string and fill it in the dataMap

  // cut top path
  string top = AliMpFiles::GetTop().Data();
  string fullDataPath = path.Data();
  string dataPath = fullDataPath;
  if ( dataPath.find(top) != string::npos ) dataPath.erase(0, top.size()+1);
  dataPath.erase(0,dataPath.find('/')+1); 
  
  AliDebugStream(2) << "Processing file " << dataPath << endl;

  // skip macros
  if ( dataPath.find(".C") != std::string::npos || 
       dataPath.find(".h") != std::string::npos ) return;
 
  ifstream input(path.Data(), ios::in);
  if ( ! input.is_open() ) {
    cerr << "Cannot open input file " << path.Data() << endl;
    return;
  }  

  string fileString;
  string line;

  do {
    getline(input, line);
    if ( ! input.eof() ) { 
      fileString += line;
      fileString += '\n';
    }  
  }
  while ( ! input.eof() );

  dataMap->Add(dataPath, fileString);
  // dataMap->Add(new TObjString(dataPath.c_str()), new TObjString(fileString.c_str()));
}  

//_____________________________________________________________________________
void AliMpDataProcessor::GenerateFunction(const TString& path, 
                                          const TString& data) 
{
/// Generate a C++ function which defines a string with the data content 
/// and map it to the given path in the map

  AliDebugStream(2) << "Processing path " << path.Data() << endl;

  // skip motif & padPos
  //if ( dataPath.find("motif") != std::string::npos || 
  //     dataPath.find("padPos") != std::string::npos ) return;
 
  // add function declaration in the header file name
  fHeaderFile << "    void AddData" << ++fCounter << "();" << endl;

  // add function implementation in .cxx
  fImplFile 
    << "//_____________________________________________________________________________" << endl
    << "void AliMpDataMap::AddData" << fCounter << "()" << endl
    << "{" << endl
    << "/// Automatically generated function for data file: " << endl
    << "/// " << path << endl
    << endl
    << "  string path = \"" << path << "\";" << endl << endl;
    
  GenerateFileCode(data);
  
  fImplFile 
    << endl
    << "  fMap[path] = data;" << endl
    << "}" << endl
    << endl;      
} 

//_____________________________________________________________________________
void AliMpDataProcessor::GenerateFileCode(const TString& data) 
{
/// Dump the content of the file specified by its path as a C++ string

  istringstream in(data.Data());

  string line;
  getline(in, line);
  fImplFile << "  string data = \""; 
  //for ( unsigned int i=line.size(); i<58; i++ ) line = line + " ";
  fImplFile << line << " \\n\";";
  if ( in.eof() ) return; 

  do {
    getline(in, line);
    if ( ! in.eof() ) { 
      fImplFile << endl << "  data = data + \"";
      // for ( unsigned int i=line.size(); i<58; i++ ) line = line + " ";
      fImplFile << line << " \\n\";";
    }  
  }
  while ( ! in.eof() );

  fImplFile << endl;
}  

//_____________________________________________________________________________
void AliMpDataProcessor::GenerateFill()
{
/// Generate function which calls all previously generated functions

  // add function declaration in the header file name
  fHeaderFile << endl << "    void Fill();" << endl;

  // add function implementation in .cxx
  fImplFile 
    << "//_____________________________________________________________________________" << endl
    << "void AliMpDataMap::Fill()" << endl
    << "{" << endl
    << "/// Automatically generated function for calling all generated functions " << endl
    << endl;
    
  for ( Int_t i=1; i<=fCounter; ++i ) 
   fImplFile << "  AddData" << i << "();" << endl;   
      
  fImplFile << "}" << endl;
}  
      

//
// public methods
//


//_____________________________________________________________________________
AliMpDataMap* AliMpDataProcessor::CreateDataMap(const TString& dataDir) 
{
/// Process data directory and map a string with the content of each file to
/// the file path.

  TString curDir = gSystem->pwd();
  
  AliMpDataMap* dataMap = new AliMpDataMap();

  TString dataPath = AliMpFiles::GetTop() + "/" + dataDir;
  ProcessDirectory(dataPath, dataMap); 
  
  gSystem->cd(curDir); 
  
  return dataMap;
}
  

//_____________________________________________________________________________
Bool_t AliMpDataProcessor::GenerateData(AliMpDataMap* dataMap,
                                        const TString& outputDataDir) 
{
/// Generate ASCII data files in outputDataDir from dataMap

  TString curDir = gSystem->pwd();  

  TString outputDataPath = AliMpFiles::GetTop() + "/" + outputDataDir;
  if ( gSystem->OpenDirectory(outputDataPath.Data()) ) {
    AliErrorStream() 
      << "Directory " << outputDataPath.Data() << " already exists" << endl;
    return kFALSE;
  }
  else {
    AliDebugStream(2) << "Making directory " <<  outputDataPath.Data() << endl;
    gSystem->mkdir(outputDataPath.Data());
  }  
  
/*
  // std::map implementation

  const map<string, string>& kMap = dataMap->GetMap();
  map<string, string>::const_iterator it;
  
  for ( it = kMap.begin(); it != kMap.end(); it++ ) {
    string path = it->first;
    string data = it->second; 
*/    

  const TMap& kMap = dataMap->GetMap();
  TMapIter it(&kMap);
  TObject* keyObj;
  while ( ( keyObj = it.Next() ) ) {

    TString tpath = ((TObjString*)keyObj)->String();

    TObject* dataObj = kMap.GetValue(keyObj);
    if ( ! dataObj ) {
      AliErrorStream() 
        << "Cannot find value when iterating over map." << endl;
      return kFALSE;
    }      
    TString tdata = ((TObjString*)dataObj)->String();   
  
    string path = tpath.Data();
    string data = tdata.Data(); 
  
    string::size_type slashPos =  path.find_last_of("/");
    if ( slashPos != string::npos ) {
      string dataDir(path, 0, slashPos);
      TString dataDirPath
        = outputDataPath + "/" + dataDir.c_str();
      if ( ! gSystem->OpenDirectory(dataDirPath.Data()) ) {
        AliDebugStream(2) << "Making directory " <<  dataDirPath.Data() << endl;
        gSystem->mkdir(dataDirPath.Data(), kTRUE);
      }
    }     

    TString dataPath
      = outputDataPath + "/" + path.c_str();

    ofstream out(dataPath.Data(), ios::out);
    if ( ! out.good() ) {
      AliErrorStream() 
        << "Cannot open output file  " << outputDataPath.Data() << endl;
   
      return kFALSE;  
    }
    
    out << data;
    out.close();
  }

  delete dataMap;
  return kTRUE;
}
  
//_____________________________________________________________________________
Bool_t AliMpDataProcessor::GenerateCode(AliMpDataMap* dataMap) 
{
/// Generate C++ code from dataMap.
/// <pre>
/// AliMpDataProcessor mp;
/// AliMpDataMap* dataMap = mp.CreateDataMap();
/// mp.GenerateCode(dataMap);
/// </pre>
/// Not really used, but kept for eventual future explorations.

/*
  // std::map implementation

  const map<string, string>& kMap = dataMap->GetMap();
  map<string, string>::const_iterator it;
  
  for ( it = kMap.begin(); it != kMap.end(); it++ ) {
    string path = it->first;
    string data = it->second; 
*/

  const TMap& kMap = dataMap->GetMap();
  TMapIter it(&kMap);
  TObject* keyObj;
  while ( ( keyObj = it.Next() ) ) {

    TString tpath = ((TObjString*)keyObj)->String();

    TObject* dataObj = kMap.GetValue(keyObj);
    if ( ! dataObj ) {
      AliErrorStream() 
        << "Cannot find value when iterating over map." << endl;
      return kFALSE;
    }      
    TString tdata = ((TObjString*)dataObj)->String();   
  
    GenerateFunction(tpath, tdata);
  }
  
  GenerateFill();

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