ROOT logo
// $Id$
// Main authors: Matevz Tadel & Alja Mrak-Tadel & Bogdan Vulpescu: 2006, 2007

/**************************************************************************
 * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
 * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for          *
 * full copyright notice.                                                 *
 **************************************************************************/

#include <string.h>

#include "AliEveMUONData.h"

#include <EveDet/AliEveMUONChamberData.h>
#include <EveBase/AliEveEventManager.h>

#include <AliRawReader.h>
#include <AliRawReaderFile.h>
#include <AliRawReaderDate.h>
#include <AliRawReaderRoot.h>

#include <AliMUONDigitMaker.h>
#include <AliMUONHit.h>
#include <AliMUONVCluster.h>
#include "AliMUONVClusterStore.h"
#include <AliMUONVDigit.h>
#include "AliMUONDigitStoreV1.h"
#include "AliMUONVDigitStore.h"
#include "AliMUONTrackParam.h"
#include "AliMUONTrack.h"
#include "AliMUONESDInterface.h"
#include "AliESDMuonTrack.h"
#include "AliESDEvent.h"
#include "TTree.h"
#include "TString.h"
#include "TClonesArray.h"
#include "TFile.h"


//______________________________________________________________________________
// AliEveMUONData
//

using std::cout;
using std::endl;
ClassImp(AliEveMUONData)

AliRawReader*            AliEveMUONData::fgRawReader        = 0;

//______________________________________________________________________________
AliEveMUONData::AliEveMUONData() :
  fChambers(14),
  fNTrackList(0)
{
  //
  // Constructor
  //

  for (Int_t i = 0; i < 256; i++) {
    fTrackList[i] = -1;
  }

  CreateAllChambers();

}

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

  DeleteAllChambers();

}

//______________________________________________________________________________
void AliEveMUONData::Reset()
{
  //
  // Reset data
  //

  //DropAllChambers();

  fNTrackList = 0;
  for (Int_t i = 0; i < 256; i++) {
    fTrackList[i] = -1;
  }

}

//______________________________________________________________________________
AliEveMUONData::AliEveMUONData(const AliEveMUONData &mdata) :
  TObject(mdata),
  TEveRefCnt(),
  fChambers(14),
  fNTrackList(0)
{
  //
  // Copy constructor
  //
  memset(fTrackList,0,256*sizeof(Int_t));
}

//______________________________________________________________________________
AliEveMUONData& AliEveMUONData::operator=(const AliEveMUONData &mdata)
{
  //
  // Assignment operator
  //

  if (this != &mdata) {

  }

  return *this;

}

//______________________________________________________________________________
void AliEveMUONData::CreateChamber(Int_t chamber)
{
  //
  // create data for the chamber with id=chamber (0 to 13)
  //

  if (fChambers[chamber] == 0)
    fChambers[chamber] = new AliEveMUONChamberData(chamber);

}

//______________________________________________________________________________
void AliEveMUONData::CreateAllChambers()
{
  //
  // create all 14 chambers data
  //

  for (Int_t c = 0; c < 14; ++c)
    CreateChamber(c);

}

//______________________________________________________________________________
void AliEveMUONData::DropAllChambers()
{
  //
  // release data from all chambers
  //

  for (Int_t c = 0; c < 14; ++c) {

    if (fChambers[c] != 0)
      fChambers[c]->DropData();

  }

}

//______________________________________________________________________________
void AliEveMUONData::DeleteAllChambers()
{
  //
  // delete all chambers data
  //

  for (Int_t c = 0; c < 14; ++c) {

    delete fChambers[c];
    fChambers[c] = 0;

  }

}

//______________________________________________________________________________
void AliEveMUONData::RegisterTrack(Int_t track)
{
  //
  // register (in a list) a track with hits in the chambers
  //

  if (fNTrackList == (256-1)) {
    cout << "Maximum of registered tracks reached..." << endl;
    return;
  }

  Bool_t inList = kFALSE;
  for (Int_t i = 0; i < fNTrackList; i++) {
    if (track == fTrackList[i]) {
      inList = kTRUE;
      break;
    }
  }
  if (!inList) {
    fTrackList[fNTrackList] = track;
    fNTrackList++;
  }

}

//______________________________________________________________________________
void AliEveMUONData::LoadRecPoints(TTree* tree)
{
  //
  // load reconstructed points from the TreeR
  // load local trigger information
  //

  AliMUONVClusterStore *clusterStore = AliMUONVClusterStore::Create(*tree);
  clusterStore->Clear();
  clusterStore->Connect(*tree,kFALSE);

  tree->GetEvent(0);

  AliMUONVCluster *cluster;
  Int_t detElemId;
  Double_t clsX, clsY, clsZ, charge;

  for (Int_t ch = 0; ch < 10; ++ch) {

    if (fChambers[ch] == 0) continue;

    TIter next(clusterStore->CreateChamberIterator(ch,ch));

    while ( ( cluster = static_cast<AliMUONVCluster*>(next()) ) ) {

      detElemId = cluster->GetDetElemId();

      clsX   = cluster->GetX();
      clsY   = cluster->GetY();
      clsZ   = cluster->GetZ();
      charge = cluster->GetCharge();

      fChambers[ch]->RegisterCluster(detElemId,0,clsX,clsY,clsZ,charge);
      fChambers[ch]->RegisterCluster(detElemId,1,clsX,clsY,clsZ,charge);

    }

  }

  delete clusterStore;

}

//______________________________________________________________________________
void AliEveMUONData::LoadRecPointsFromESD(const Char_t *fileName)
{
  //
  // load reconstructed points stored in AliESDs.root
  // load local trigger information
  //

  TFile* esdFile = TFile::Open(fileName);
  if (!esdFile || !esdFile->IsOpen()) {
    cout << "opening ESD file " << fileName << "failed" << endl;
    return;
  }
  TTree* esdTree = (TTree*) esdFile->Get("esdTree");
  if (!esdTree) {
    cout << "no ESD tree found" << endl;
    esdFile->Close();
    return;
  }
  AliESDEvent* esdEvent = new AliESDEvent();
  esdEvent->ReadFromTree(esdTree);

  AliMUONVCluster *cluster;
  AliMUONTrackParam *trackParam;
  AliESDMuonTrack *esdTrack;
  AliMUONTrack muonTrack;
  Int_t detElemId, chamber, nTrackParam;
  Double_t clsX, clsY, clsZ, charge;
  
  if (esdTree->GetEvent(AliEveEventManager::GetMaster()->GetEventId()) <= 0) {
    cout << "fails to read ESD object for event " << AliEveEventManager::GetMaster()->GetEventId() << endl;
    return;
  }
    
  Int_t nTracks = Int_t(esdEvent->GetNumberOfMuonTracks());
  for (Int_t iTrack = 0; iTrack < nTracks; iTrack++) {
    esdTrack = esdEvent->GetMuonTrack(iTrack);
    if (!esdTrack->ContainTrackerData()) continue;
    AliMUONESDInterface::ESDToMUON(*esdTrack,muonTrack);
    nTrackParam = muonTrack.GetTrackParamAtCluster()->GetEntries();
    for(Int_t iCluster = 0; iCluster < nTrackParam; iCluster++) {
      trackParam = (AliMUONTrackParam *) muonTrack.GetTrackParamAtCluster()->At(iCluster);
      cluster = trackParam->GetClusterPtr();
      chamber   = cluster->GetChamberId();
      detElemId = cluster->GetDetElemId();
      charge  = cluster->GetCharge();
      clsX = cluster->GetX();
      clsY = cluster->GetY();
      clsZ = cluster->GetZ();
      
      fChambers[chamber]->RegisterCluster(detElemId,0,clsX,clsY,clsZ,charge);
      fChambers[chamber]->RegisterCluster(detElemId,1,clsX,clsY,clsZ,charge);
      
    }
  }

  delete esdEvent;
  
  esdFile->Close();

}

//______________________________________________________________________________
void AliEveMUONData::LoadHits(TTree* tree)
{
  //
  // load simulation hits from the TreeH
  //

  TClonesArray *hits = 0;
  AliMUONHit  *mhit;
  Int_t cha, detElemId, nhits, ntracks;
  Float_t hitX, hitY, hitZ;

  ntracks = tree->GetEntries();
  tree->SetBranchAddress("MUONHits",&hits);

  for (Int_t it = 0; it < ntracks; it++) {

    tree->GetEvent(it);
    nhits = hits->GetEntriesFast();

    for (Int_t ih = 0; ih < nhits; ih++) {

      mhit = (AliMUONHit*)hits->UncheckedAt(ih);
      hitX = mhit->X();
      hitY = mhit->Y();
      hitZ = mhit->Z();
      detElemId = mhit->DetElemId();
      cha = mhit->Chamber();

      RegisterTrack(mhit->GetTrack());

      fChambers[cha-1]->RegisterHit(detElemId,hitX,hitY,hitZ);

    }
  }

}

//______________________________________________________________________________
void AliEveMUONData::LoadDigits(TTree* tree)
{
  //
  // load digits from the TreeD
  //

  AliMUONVDigitStore *digitStore = AliMUONVDigitStore::Create(*tree);
  digitStore->Clear();
  digitStore->Connect(*tree,0);

  tree->GetEvent(0);

  AliMUONVDigit* digit;
  TIter next(digitStore->CreateIterator());

  Int_t cathode, detElemId, ix, iy, charge, chamber, adc;

  while ( ( digit = static_cast<AliMUONVDigit*>(next() ) ) )
    {
      cathode   = digit->Cathode();
      ix        = digit->PadX();
      iy        = digit->PadY();
      detElemId = digit->DetElemId();
      charge    = (Int_t)digit->Charge();
      adc       = digit->ADC();
      chamber   = detElemId/100 - 1;
      if (chamber > 9) {
	fChambers[chamber]->RegisterDigit(detElemId,cathode,ix,iy,charge);
      } else {
	fChambers[chamber]->RegisterDigit(detElemId,cathode,ix,iy,adc);
      }
    }

  delete digitStore;

}

//______________________________________________________________________________
void AliEveMUONData::LoadRaw(TString fileName)
{
  //
  // load raw data from fileName; tracker and trigger data
  //

  if (fgRawReader == 0) {
    // check extention to choose the rawdata file format
    if (fileName.EndsWith("/")) {
      fgRawReader = new AliRawReaderFile(fileName); // DDL files
    } else if (fileName.EndsWith(".root")) {
      fgRawReader = new AliRawReaderRoot(fileName); // ROOT file
    } else if (!fileName.IsNull()) {
      fgRawReader = new AliRawReaderDate(fileName); // DATE file
    }
  }

  fgRawReader->RewindEvents();
  fgRawReader->Reset();

  Int_t iEvent = 0;
  while (fgRawReader->NextEvent())
  {
    if (iEvent != AliEveEventManager::GetMaster()->GetEventId())
    {
      iEvent++;
      continue;
    }
    break;
  }

  AliMUONDigitMaker digitMaker;

  digitMaker.SetMakeTriggerDigits(kTRUE);

  AliMUONDigitStoreV1 digitStore;

  digitMaker.Raw2Digits(fgRawReader,&digitStore);

  AliMUONVDigit* digit;
  TIter next(digitStore.CreateIterator());

  Int_t cathode, detElemId, ix, iy, charge, chamber, adc;

  while ( ( digit = static_cast<AliMUONVDigit*>(next() ) ) )
  {
      cathode   = digit->Cathode();
      ix        = digit->PadX();
      iy        = digit->PadY();
      detElemId = digit->DetElemId();
      charge    = (Int_t)digit->Charge();
      adc       = digit->ADC();
      chamber   = detElemId/100 - 1;
      if (chamber > 9) {
	fChambers[chamber]->RegisterDigit(detElemId,cathode,ix,iy,charge);
      } else {
	fChambers[chamber]->RegisterDigit(detElemId,cathode,ix,iy,adc);
      }
  }
}

//______________________________________________________________________________
Int_t AliEveMUONData::GetTrack(Int_t index) const
{
  //
  // return track stack number for "index"-th track with hits in the chambers
  //

  if (index < 256) {
    return fTrackList[index];
  } else {
    return -1;
  }
}

//______________________________________________________________________________
AliEveMUONChamberData* AliEveMUONData::GetChamberData(Int_t chamber)
{
  //
  // return chamber data
  //

  if (chamber < 0 || chamber > 13) return 0;

  //if (fChambers[chamber] == 0) CreateChamber(chamber);

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