ROOT logo
#include "AliMCAuxHandler.h"
#include "AliAnalysisManager.h"
#include <TError.h>
#include <AliLog.h>
#include <TFile.h>
#include <TClonesArray.h>
#include <TROOT.h>
#include <TSystem.h>
#include <AliStack.h>
#include <AliMCEvent.h>

ClassImp(AliMCAuxHandler)
#if 0 // For Emacs - do not remove
;
#endif

//____________________________________________________________________
AliMCAuxHandler::AliMCAuxHandler(const char* name,
				       const char* what,
				       AliMCEventHandler* parent)
  : AliMCEventHandler(name, what),
    fParent(parent), 
    fFile(0),
    fTree(0),
    fDir(0),
    fArray(0),
    fNEvents(0), 
    fNEventsPerFile(0),
    fNEventsInContainer(0),
    fEvent(0), 
    fFileNumber(0),
    fTreeName(""),
    fFileBase("")
{
  // Constructor 
  // 
  // Parameters: 
  //   name The name 
}

//____________________________________________________________________
TString*
AliMCAuxHandler::GetParentPath() const
{
  if (!fParent) { 
    AliWarning("No parent");
    return 0;
  }
  return fParent->GetInputPath();
}

//____________________________________________________________________
Bool_t
AliMCAuxHandler::Init(Option_t* opt)
{
  // Initialize the input
  // 
  // @param opt Options 
  // 
  // @return true on success 
  AliDebugF(10,"AliMCAuxHandler::Init(\"%s\")", opt);
  // Info("","AliMCAuxHandler::Init(\"%s\") - detector: %s, class: %s", 
  //      opt, GetName(), GetTitle());

  TString option(opt);
  if (option.EqualTo("proof") || 
      option.EqualTo("local") || 
      option.EqualTo("lite")) return true;

  TString t = "Tree";
  TString b = "";
  TClass* cl = gROOT->GetClass(GetTitle());
  if (cl) { 
    if (cl->InheritsFrom("AliHit")) { 
      t += "H";
      b =  "Hits";
    }
    else if (cl->InheritsFrom("AliSDigit")) {
      t += "S";
      b =  "SDigits";
    }
    else if (cl->InheritsFrom("AliDigit")) {
      t += "D";
      b =  "Digits";
    }
    else 
      t = "";
  }
  else {
    AliWarningF("Couldn't get the class description of %s", GetTitle());
    AliWarning("The list of loaded libraries is");
    gSystem->ListLibraries("");
    return false;
  }
      
  // Info("Init", "Tree-name: %s, file-base: %s", t.Data(), b.Data());
  if (!t.IsNull()) fTreeName = t;
  if (!b.IsNull()) fFileBase = b;


  fArray = new TClonesArray(GetTitle());
  
  TTree* treeE = fParent->GetTree();
  if (!treeE) { 
    AliError("Parent does not have an events tree");
    return false;
  }

  // Get number of events in this directory 
  fNEventsPerFile = -1;
  fNEvents        = treeE->GetEntries();
  fEvent          = 0;
  fFileNumber     = 0;

  if (!OpenFile(fFileNumber)) return false;

  return true;
}
//____________________________________________________________________
Bool_t
AliMCAuxHandler::BeginEvent(Long64_t entry)
{
  // Called at the beginning of an event 
  // 
  // @param entry Entry in tree 
  // 
  // @return true on success
  AliDebugF(10,"AliMCAuxHandler::BeginEvent(%lld)", entry);
  // Info("","AliMCAuxHandler::BeginEvent(%lld)", entry);

  if (entry == -1) 
    fEvent++;
  else 
    fEvent = entry;

  if (fEvent >= fNEvents) { 
    AliWarningF("Event number out of range %d/%d", fEvent, fNEvents);
    return false;
  }

  if (fNEventsPerFile < 0) {
    TTree* treeK = fParent->TreeK();
    if (!treeK) { 
      AliError("Parent does not have a kinematics tree");
      return false;
    }
  
    TFile* fileK = treeK->GetCurrentFile();
    if (!fileK) { 
      AliError("Kinematics tree has no associated file");
      return false;
    }
    // Get the number of events per file 
    fNEventsPerFile = fileK->GetNkeys() - fileK->GetNProcessIDs();
  }
  return LoadEvent(fEvent);
}
//____________________________________________________________________
Bool_t
AliMCAuxHandler::Notify(const char* path)
{
  // Called when the input file is changed 
  // 
  // @param path New path 
  //
  // @return true on success
  AliDebugF(10,"AliMCAuxHandler::Notify(\"%s\")", path);
  // Info("","AliMCAuxHandler::Notify(\"%s\")", path);
  return true;
}
//____________________________________________________________________
Bool_t
AliMCAuxHandler::FinishEvent()
{
  // Called at the end of an event 
  // 
  // @return true on success
  // AliDebug(10,"AliMCAuxHandler::FinishEvent()");
  return true;
}
//____________________________________________________________________
Bool_t
AliMCAuxHandler::Terminate()
{
  // Called at the end of a job 
  // 
  // @return true on success 
  AliDebug(10,"AliMCAuxHandler::Terminate()");
  return true;
}
//____________________________________________________________________
Bool_t
AliMCAuxHandler::TerminateIO()
{
  // Called at the end of a sub-job
  // 
  // @return true on success
  AliDebug(10,"AliMCAuxHandler::TerminateIO()");
  return true;
}

//____________________________________________________________________
void
AliMCAuxHandler::ResetIO()
{
  // Reset the I/O
  // 
  //
  AliDebug(10,"AliMCAuxHandler::ResetIO()");

  TString* path = GetParentPath();
  AliDebugF(10,"Got parent path %s", path ? path->Data() : "null");
  // Info("ResetIO","Got parent path %s", path ? path->Data() : "null");

  if (fFile) { 
    delete fFile;
    fFile = 0;
  }
}
//____________________________________________________________________
Bool_t
AliMCAuxHandler::OpenFile(Int_t fileNo)
{
  TString* path = GetParentPath();
  AliDebugF(10,"Got parent path %s", path ? path->Data() : "null");
  // Info("OpenFile","Got parent path %s", path ? path->Data() : "null");
  if (!path) return false;

  TString ext("");
  if (fileNo > 0) ext = TString::Format("%d", fileNo);

  TString w(GetTitle());
  if (w.EndsWith("s")) w.Chop();
    
  TString fn = TString::Format("%s%s.%s%s.root", 
			       path->Data(), GetName(), 
			       fFileBase.Data(), ext.Data());
  AliDebugF(10,"Opening %s", fn.Data());
  // Info("OpenFile", "Opening %s", fn.Data());
  fFile = TFile::Open(fn, "READ");
  if (!fFile) { 
    AliErrorF("Failed to open %s", fn.Data());
    return false;
  }

  return true;
}

//____________________________________________________________________
Bool_t
AliMCAuxHandler::LoadEvent(Int_t iev)
{
  // Load an event 
  // 
  // @param iev Event number 
  // 
  // @return true on success 
  AliDebugF(10,"AliMCAuxHandler::LoadEvent(%d)", iev);
  // Info("","AliMCAuxHandler::LoadEvent(%d)", iev);

  Int_t iNew = iev / fNEventsPerFile;
  if (iNew != fFileNumber) { 
    fFileNumber = iNew;
    if (!OpenFile(fFileNumber)) return false;
  }
  if (!fFile) return false;

  TString folder = TString::Format("Event%d", iev);
  fFile->GetObject(folder, fDir);
  if (!fDir) { 
    AliWarningF("Folder %s not found in file", folder.Data());
    return false;
  }

  fDir->GetObject(fTreeName, fTree);
  if (!fTree) { 
    AliWarningF("Folder %s does not contain the %s tree %s", 
		folder.Data(), GetTitle(), fTreeName.Data());
    return false;
  }

  fTree->SetBranchAddress(GetName(), &fArray);
  return true;
}

//____________________________________________________________________
Int_t
AliMCAuxHandler::GetNEntry() const
{
  if (!fTree) return 0;
  return fTree->GetEntries();
}

//____________________________________________________________________
TClonesArray*
AliMCAuxHandler::GetEntryArray(Int_t entry)
{
  if (!fTree) return 0;
  if (!fArray) return 0;
  if (entry < 0 || entry >= fTree->GetEntries()) { 
    AliErrorF("Entry # %d out of bounds [0,%lld]", 
	      entry, fTree->GetEntries());
    return 0;
  }
  fArray->Clear();
  
  if (fTree->GetEntry(entry) <= 0) return 0;

  return fArray;
}
  

//____________________________________________________________________
AliMCAuxHandler*
AliMCAuxHandler::Create(const char* name, const char* what)
{
  AliAnalysisManager* mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr) { 
    ::Error("AliMCAuxHandler::Create", "No analysis manager");
    return 0;
  }
  
  AliVEventHandler* vmc = mgr->GetMCtruthEventHandler();
  if (!vmc) { 
    ::Error("AliMCAuxHandler::Create", "No MC truth handler");
    return 0;
  }
  
  AliMCEventHandler* mc = dynamic_cast<AliMCEventHandler*>(vmc);
  if (!mc) { 
    ::Error("AliMCAuxHandler::Create", 
	    "MC truth handler not a AliMCEventHandler, but %s", 
	    vmc->ClassName());
    return 0;
  }

  AliMCAuxHandler* ret = new AliMCAuxHandler(name, what, mc);
  mc->AddSubsidiaryHandler(ret);
  
  return ret;
}

//____________________________________________________________________
TClonesArray*
AliMCAuxHandler::GetParticleArray(AliMCAuxHandler* handler, 
				     Int_t particle)
{
  if (!handler) { 
    ::Error("AliMCAuxHandler::GetArray", "No handler passed");
    return 0;
  }

  AliMCEventHandler* mc = handler->GetParent();
  if (!mc) {
    ::Error("AliMCAuxHandler::GetArray", "Handler has no parent");
    return 0;
  }
  
  AliMCEvent* event = mc->MCEvent();
  if (!event) { 
    ::Error("AliMCAuxHandler::GetArray", "No MC event");
    return 0;
  }
  
  AliStack* stack = event->Stack();
  if (!stack) { 
    ::Error("AliMCAuxHandler::GetArray", "Event has no stack");
    return 0;
  }

  handler->GetArray()->Clear();
  TTree* tree = handler->GetTree();
  if (!tree) {
    ::Error("AliMCAuxHandler::GetArray", "Handler has no tree");
    return 0;
  }
    
  Int_t treeIdx = stack->TreeKEntry(particle);
  if (treeIdx < 0 || treeIdx >= tree->GetEntries()) { 
    ::Error("AliMCAuxHandler::GetArray", 
	    "Index %d of %d out of bounds [0,%lld]", treeIdx, particle, 
	    tree->GetEntries()-1);
    return 0;
  }
  
  tree->GetEntry(treeIdx);
  
  return handler->GetArray();
}

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