#include <TRandom.h>
#include <TH1.h>
+#include <TGliteXmlEventlist.h>
+
#include "AliAODParticleCut.h"
#include "AliAOD.h"
#include "AliAODRun.h"
/*************************************************************************************/
AliReader::AliReader():
+ fEventList(0x0),
fCuts(new TObjArray()),
fDirs(0x0),
fCurrentEvent(0),
/*************************************************************************************/
AliReader::AliReader(TObjArray* dirs):
+ fEventList(0x0),
fCuts(new TObjArray()),
fDirs(dirs),
fCurrentEvent(0),
/*************************************************************************************/
AliReader::AliReader(const AliReader& in):
TNamed(in),
+ fEventList((in.fEventList)?(TGliteXmlEventlist*)in.fEventList->Clone():0x0),
fCuts((in.fCuts)?(TObjArray*)in.fCuts->Clone():0x0),
fDirs((in.fDirs)?(TObjArray*)in.fDirs->Clone():0x0),
fCurrentEvent(0),
delete fEventSim;
delete fEventRec;
delete fTrackCounter;
+ delete fEventList;
}
/*************************************************************************************/
#include <TNamed.h>
#include <TObjArray.h>
+class TGliteXmlEventlist;
+
class AliAODRun;
class AliAOD;
class AliAODParticleCut;
virtual Int_t GetNumberOfRecEvents();//Returns number of available events -> usually conncected with reading all events
//may be time consuming
virtual Int_t GetNumberOfSimEvents();//
-
+
+ void SetEventList(TGliteXmlEventlist* evl){fEventList = evl;}
+
void SetDirs(TObjArray* dirs){fDirs = dirs;} //sets array directories names
void SetEventBuffering(Bool_t flag){fBufferEvents = flag;}//switches on/off buffering - read data are kept in local buffer
void SetBlend(Bool_t flag = kTRUE){fBlend=flag;} //set blending - randomizing particle order
protected:
+ TGliteXmlEventlist* fEventList;//Event list delivered by GLite/AliEn
+
TObjArray* fCuts;//array with particle cuts
TObjArray* fDirs;//arry with directories to read data from
#include <TParticle.h>
#include <TH1.h>
+#include <TGliteXmlEventlist.h>
+
#include <AliRun.h>
#include <AliRunLoader.h>
#include <AliStack.h>
fRunLoader = 0x0;
fCurrentDir = 0;
fNEventsRead = 0;
+ if (fEventList) fEventList->Reset();
if (fTrackCounter) fTrackCounter->Reset();
}
/**********************************************************/
TFile* AliReaderESD::OpenFile(Int_t n)
{
//opens fFile with tree
-
+ if (fEventList)
+ {
+ if (fCurrentDir > n)
+ {
+ fEventList->Reset();
+ fCurrentDir = 0;
+ }
+
+ while (fCurrentDir < n)
+ {
+ fEventList->Next();
+ fCurrentDir++;
+ }
+ fEventList->Next();
+ }
+
const TString& dirname = GetDirName(n);
if (dirname == "")
{
Error("OpenFiles","Can not get directory name");
return 0x0;
}
- TString filename = dirname +"/"+ fESDFileName;
+ TString filename;
+
+ if (fEventList)
+ {
+ filename = fEventList->GetURL(fESDFileName);
+ }
+ else
+ {
+ filename = dirname +"/"+ fESDFileName;
+ }
+ Info("OpenFile","%s ==> %s",fESDFileName.Data(),filename.Data());
TFile *ret = TFile::Open(filename.Data());
if ( ret == 0x0)
if (fReadSim )
{
- fRunLoader = AliRunLoader::Open(dirname +"/"+ fGAlFileName);
+ TString gafilename;
+ if (fEventList)
+ {
+ gafilename = fEventList->GetURL(fGAlFileName);
+ }
+ else
+ {
+ gafilename = dirname +"/"+ fGAlFileName;
+ }
+ Info("OpenFile","%s ==> %s",fGAlFileName.Data(),gafilename.Data());
+
+ fRunLoader = AliRunLoader::Open(gafilename);
+
if (fRunLoader == 0x0)
{
Error("OpenFiles","Can't get RunLoader for directory %s",dirname.Data());
}
fRunLoader->LoadHeader();
+
+ if (fEventList)
+ {
+ TString kinefilename = fEventList->GetURL("Kinematics.root");
+ fRunLoader->SetKineFileName(kinefilename);
+ Info("OpenFile","%s ==> %s","Kinematics.root",kinefilename.Data());
+ }
+
if (fRunLoader->LoadKinematics())
{
Error("Next","Error occured while loading kinematics.");