AliMCEvent::AliMCEvent():
AliVEvent(),
fStack(0),
- fMCParticles(new TClonesArray("AliMCParticle",1000)),
+ fMCParticles(0),
fMCParticleMap(0),
fHeader(new AliHeader()),
fTRBuffer(0),
fNparticles(-1),
fSubsidiaryEvents(0),
fPrimaryOffset(0),
- fSecondaryOffset(0)
+ fSecondaryOffset(0),
+ fExternal(0)
{
// Default constructor
}
fNparticles(mcEvnt.fNparticles),
fSubsidiaryEvents(0),
fPrimaryOffset(0),
- fSecondaryOffset(0)
+ fSecondaryOffset(0),
+ fExternal(0)
{
// Copy constructor
}
void AliMCEvent::ConnectTreeK (TTree* tree)
{
// Connect the kinematics tree to the stack
+ if (!fMCParticles) fMCParticles = new TClonesArray("AliMCParticle",1000);
+ //
fStack = fHeader->Stack();
fStack->ConnectTree(tree);
//
fTreeTR = fTmpTreeTR;
}
-AliMCParticle* AliMCEvent::GetTrack(Int_t i) const
+AliVParticle* AliMCEvent::GetTrack(Int_t i) const
{
// Get MC Particle i
//
+
+ if (fExternal) {
+ return ((AliVParticle*) (fMCParticles->At(i)));
+ }
+
//
// Check first if this explicitely accesses the subsidiary event
+
if (i >= BgLabelOffset()) {
if (fSubsidiaryEvents) {
AliMCEvent* bgEvent = (AliMCEvent*) (fSubsidiaryEvents->At(1));