#include <TFile.h>
#include <TTree.h>
#include <TParticle.h>
#include <TObjString.h>
#include <TObjArray.h>
#include "AliGenReaderTreeK.h"
#include "AliHeader.h"
#include "AliRun.h"
#include "AliStack.h"
#include "AliRunLoader.h"
ClassImp(AliGenReaderTreeK)
const TString AliGenReaderTreeK::fgkEventFolderName("GenReaderTreeK");
AliGenReaderTreeK::AliGenReaderTreeK():
AliGenReader(),
fNcurrent(0),
fNparticle(0),
fNp(0),
fInRunLoader(0),
fBaseFile(0),
fStack(0),
fOnlyPrimaries(kFALSE),
fDirs(0x0),
fCurrentDir(0)
{
}
AliGenReaderTreeK::AliGenReaderTreeK(const AliGenReaderTreeK &reader):
AliGenReader(reader),
fNcurrent(0),
fNparticle(0),
fNp(0),
fInRunLoader(0),
fBaseFile(0),
fStack(0),
fOnlyPrimaries(kFALSE),
fDirs(0x0),
fCurrentDir(0)
{
reader.Copy(*this);
}
AliGenReaderTreeK::~AliGenReaderTreeK()
{
delete fInRunLoader;
delete fDirs;
}
void AliGenReaderTreeK::Init()
{
TTree *ali = AliRunLoader::Instance()->TreeE();
if (ali) {
fBaseFile = ali->GetCurrentFile();
} else {
printf("\n Warning: Basefile cannot be found !\n");
}
if (fInRunLoader == 0x0)
{
fInRunLoader = AliRunLoader::Open((GetDirName(fCurrentDir++)+"/")+fFileName,fgkEventFolderName);
fInRunLoader->LoadHeader();
fInRunLoader->LoadKinematics("READ");
}
}
Int_t AliGenReaderTreeK::NextEvent()
{
if (!fBaseFile) Init();
if (fNcurrent >= fInRunLoader->GetNumberOfEvents())
{
if (fCurrentDir >= fDirs->GetEntries())
{
Warning("NextEvent","No more events");
return 0;
}
delete fInRunLoader;
fInRunLoader = AliRunLoader::Open((GetDirName(fCurrentDir++)+"/")+fFileName,fgkEventFolderName);
fInRunLoader->LoadHeader();
fInRunLoader->LoadKinematics("READ");
fNcurrent = 0;
}
fInRunLoader->GetEvent(fNcurrent);
fStack = fInRunLoader->Stack();
fBaseFile->cd();
fNcurrent++;
fNparticle = 0;
fNp = fStack->GetNtrack();
printf("\n Next event contains %d particles", fNp);
return fNp;
}
TParticle* AliGenReaderTreeK::NextParticle()
{
TParticle* part = GetParticle(fNparticle++);
if (part == 0x0) return 0x0;
if (fOnlyPrimaries && ( part->GetFirstMother() > -1) )
for (;;)
{
part = GetParticle(fNparticle++);
if (part == 0x0) return 0x0;
if (part->GetFirstMother() == -1) return part;
}
return part;
}
void AliGenReaderTreeK::RewindEvent()
{
fNparticle = 0;
}
AliGenReaderTreeK& AliGenReaderTreeK::operator=(const AliGenReaderTreeK& rhs)
{
rhs.Copy(*this);
return *this;
}
void AliGenReaderTreeK::Copy(TObject&) const
{
Fatal("Copy","Not implemented!\n");
}
TString& AliGenReaderTreeK::GetDirName(Int_t entry)
{
TString* retval;
if (fDirs == 0x0)
{
retval = new TString(".");
return *retval;
}
if ( (entry>fDirs->GetEntries()) || (entry<0))
{
Error("GetDirName","Name out of bounds");
retval = new TString();
return *retval;
}
if (fDirs->GetEntries() == 0)
{
retval = new TString(".");
return *retval;
}
TObjString *dir = dynamic_cast<TObjString*>(fDirs->At(entry));
if(dir == 0x0)
{
Error("GetDirName","Object in TObjArray is not a TObjString or its descendant");
retval = new TString();
return *retval;
}
if (gDebug > 0) Info("GetDirName","Returned ok %s",dir->String().Data());
return dir->String();
}
void AliGenReaderTreeK::AddDir(const char* dirname)
{
if(fDirs == 0x0)
{
fDirs = new TObjArray();
fDirs->SetOwner(kTRUE);
}
TObjString *odir= new TObjString(dirname);
fDirs->Add(odir);
}
TParticle* AliGenReaderTreeK::GetParticle(Int_t i)
{
if (fStack && i<fNp) return fStack->Particle(i);
return 0x0;
}
AliGenReaderTreeK.cxx:100 AliGenReaderTreeK.cxx:101 AliGenReaderTreeK.cxx:102 AliGenReaderTreeK.cxx:103 AliGenReaderTreeK.cxx:104 AliGenReaderTreeK.cxx:105 AliGenReaderTreeK.cxx:106 AliGenReaderTreeK.cxx:107 AliGenReaderTreeK.cxx:108 AliGenReaderTreeK.cxx:109 AliGenReaderTreeK.cxx:110 AliGenReaderTreeK.cxx:111 AliGenReaderTreeK.cxx:112 AliGenReaderTreeK.cxx:113 AliGenReaderTreeK.cxx:114 AliGenReaderTreeK.cxx:115 AliGenReaderTreeK.cxx:116 AliGenReaderTreeK.cxx:117 AliGenReaderTreeK.cxx:118 AliGenReaderTreeK.cxx:119 AliGenReaderTreeK.cxx:120 AliGenReaderTreeK.cxx:121 AliGenReaderTreeK.cxx:122 AliGenReaderTreeK.cxx:123 AliGenReaderTreeK.cxx:124 AliGenReaderTreeK.cxx:125 AliGenReaderTreeK.cxx:126 AliGenReaderTreeK.cxx:127 AliGenReaderTreeK.cxx:128 AliGenReaderTreeK.cxx:129 AliGenReaderTreeK.cxx:130 AliGenReaderTreeK.cxx:131 AliGenReaderTreeK.cxx:132 AliGenReaderTreeK.cxx:133 AliGenReaderTreeK.cxx:134 AliGenReaderTreeK.cxx:135 AliGenReaderTreeK.cxx:136 AliGenReaderTreeK.cxx:137 AliGenReaderTreeK.cxx:138 AliGenReaderTreeK.cxx:139 AliGenReaderTreeK.cxx:140 AliGenReaderTreeK.cxx:141 AliGenReaderTreeK.cxx:142 AliGenReaderTreeK.cxx:143 AliGenReaderTreeK.cxx:144 AliGenReaderTreeK.cxx:145 AliGenReaderTreeK.cxx:146 AliGenReaderTreeK.cxx:147 AliGenReaderTreeK.cxx:148 AliGenReaderTreeK.cxx:149 AliGenReaderTreeK.cxx:150 AliGenReaderTreeK.cxx:151 AliGenReaderTreeK.cxx:152 AliGenReaderTreeK.cxx:153 AliGenReaderTreeK.cxx:154 AliGenReaderTreeK.cxx:155 AliGenReaderTreeK.cxx:156 AliGenReaderTreeK.cxx:157 AliGenReaderTreeK.cxx:158 AliGenReaderTreeK.cxx:159 AliGenReaderTreeK.cxx:160 AliGenReaderTreeK.cxx:161 AliGenReaderTreeK.cxx:162 AliGenReaderTreeK.cxx:163 AliGenReaderTreeK.cxx:164 AliGenReaderTreeK.cxx:165 AliGenReaderTreeK.cxx:166 AliGenReaderTreeK.cxx:167 AliGenReaderTreeK.cxx:168 AliGenReaderTreeK.cxx:169 AliGenReaderTreeK.cxx:170 AliGenReaderTreeK.cxx:171 AliGenReaderTreeK.cxx:172 AliGenReaderTreeK.cxx:173 AliGenReaderTreeK.cxx:174 AliGenReaderTreeK.cxx:175 AliGenReaderTreeK.cxx:176 AliGenReaderTreeK.cxx:177 AliGenReaderTreeK.cxx:178 AliGenReaderTreeK.cxx:179 AliGenReaderTreeK.cxx:180 AliGenReaderTreeK.cxx:181 AliGenReaderTreeK.cxx:182 AliGenReaderTreeK.cxx:183 AliGenReaderTreeK.cxx:184 AliGenReaderTreeK.cxx:185 AliGenReaderTreeK.cxx:186 AliGenReaderTreeK.cxx:187 AliGenReaderTreeK.cxx:188 AliGenReaderTreeK.cxx:189 AliGenReaderTreeK.cxx:190 AliGenReaderTreeK.cxx:191 AliGenReaderTreeK.cxx:192 AliGenReaderTreeK.cxx:193 AliGenReaderTreeK.cxx:194 AliGenReaderTreeK.cxx:195 AliGenReaderTreeK.cxx:196 AliGenReaderTreeK.cxx:197 AliGenReaderTreeK.cxx:198 AliGenReaderTreeK.cxx:199 AliGenReaderTreeK.cxx:200 AliGenReaderTreeK.cxx:201 AliGenReaderTreeK.cxx:202 AliGenReaderTreeK.cxx:203 AliGenReaderTreeK.cxx:204 AliGenReaderTreeK.cxx:205 AliGenReaderTreeK.cxx:206 AliGenReaderTreeK.cxx:207 AliGenReaderTreeK.cxx:208 AliGenReaderTreeK.cxx:209 AliGenReaderTreeK.cxx:210 AliGenReaderTreeK.cxx:211 AliGenReaderTreeK.cxx:212 AliGenReaderTreeK.cxx:213 AliGenReaderTreeK.cxx:214 AliGenReaderTreeK.cxx:215 AliGenReaderTreeK.cxx:216 AliGenReaderTreeK.cxx:217 AliGenReaderTreeK.cxx:218 AliGenReaderTreeK.cxx:219 AliGenReaderTreeK.cxx:220 AliGenReaderTreeK.cxx:221 AliGenReaderTreeK.cxx:222 AliGenReaderTreeK.cxx:223 AliGenReaderTreeK.cxx:224