#include <TBranch.h>
#include <TFile.h>
#include <TFolder.h>
-#include <TGeometry.h>
#include <TObjArray.h>
#include <TString.h>
class TTask;
AliRunLoader::AliRunLoader():
fLoaders(0x0),
fEventFolder(0x0),
+ fRun(-1),
fCurrentEvent(0),
fGAFile(0x0),
fHeader(0x0),
fKineDataLoader(0x0),
fTrackRefsDataLoader(0x0),
fNEventsPerFile(1),
+ fNEventsPerRun(0),
fUnixDirName(".")
{
AliConfig::Instance();//force to build the folder structure
TNamed(fgkRunLoaderName,fgkRunLoaderName),
fLoaders(new TObjArray()),
fEventFolder(0x0),
+ fRun(-1),
fCurrentEvent(0),
fGAFile(0x0),
fHeader(0x0),
fKineDataLoader(new AliDataLoader(fgkDefaultKineFileName,fgkKineContainerName,"Kinematics")),
fTrackRefsDataLoader(new AliDataLoader(fgkDefaultTrackRefsFileName,fgkTrackRefsContainerName,"Track References")),
fNEventsPerFile(1),
+ fNEventsPerRun(0),
fUnixDirName(".")
{
//ctor
}
/**************************************************************************/
-AliRunLoader::AliRunLoader(const AliRunLoader &rl):
- TNamed(rl),
- fLoaders(0x0),
- fEventFolder(0x0),
- fCurrentEvent(0),
- fGAFile(0x0),
- fHeader(0x0),
- fStack(0x0),
- fCTrigger(0x0),
- fKineDataLoader(0x0),
- fTrackRefsDataLoader(0x0),
- fNEventsPerFile(0),
- fUnixDirName(".")
-{
- //
- // Copy ctor
- //
- rl.Copy(*this);
-}
-/**************************************************************************/
-
AliRunLoader::~AliRunLoader()
{
//dtor
TNamed(fgkRunLoaderName,fgkRunLoaderName),
fLoaders(new TObjArray()),
fEventFolder(topfolder),
+ fRun(-1),
fCurrentEvent(0),
fGAFile(0x0),
fHeader(0x0),
fKineDataLoader(new AliDataLoader(fgkDefaultKineFileName,fgkKineContainerName,"Kinematics")),
fTrackRefsDataLoader(new AliDataLoader(fgkDefaultTrackRefsFileName,fgkTrackRefsContainerName,"Track References")),
fNEventsPerFile(1),
+ fNEventsPerRun(0),
fUnixDirName(".")
{
//ctor
fEventFolder->Add(this);//put myself to the folder to accessible for all
}
-/**************************************************************************/
-void AliRunLoader::Copy(TObject &) const
-{
- AliFatal("Not implemented");
-}
/**************************************************************************/
Int_t AliRunLoader::GetEvent(Int_t evno)
//Reload stack (If header was loaded)
if (TreeE()) fStack = GetHeader()->Stack();
//Set event folder in stack (it does not mean that we read kinematics from file)
- if (fStack)
- {
- fStack->SetEventFolderName(fEventFolder->GetName());
- }
- else
- {
- AliWarning("Stack not found in header");
- }
-
if( GetTrigger() && TreeCT() ) {
retval = TreeCT()->GetEvent(fCurrentEvent);
if ( retval < 0 ) {
}
//Read Kinematics if loaded
- fKineDataLoader->GetEvent();
+ retval = fKineDataLoader->GetEvent();
if (retval)
{
AliError(Form("Error occured while GetEvent for Kinematics. Event %d",evno));
return 2;
}
- if (fStack && fKineDataLoader->GetBaseLoader(0)->IsLoaded()) fStack->GetEvent();
-
+ if (fStack && fKineDataLoader->GetBaseLoader(0)->IsLoaded())
+ {
+ fStack->ConnectTree(TreeK());
+
+ if (fStack->GetEvent() == kFALSE)
+ {
+ AliError(Form("Error occured while GetEvent for Stack. Event %d",evno));
+ return 2;
+ }
+ }
+
//Trigger data reloading in all loaders
TIter next(fLoaders);
AliLoader *loader;
fStack = fHeader->Stack(); //should be safe - if we created Stack, header returns pointer to the same object
if (fStack)
{
- fStack->SetEventFolderName(fEventFolder->GetName());
- if (TreeK()) fStack->GetEvent();
+ if (TreeK()) {
+ fStack->ConnectTree(TreeK());
+ fStack->GetEvent();
+ }
}
else
{
if(fStack == 0x0)
{
fStack = new AliStack(10000);
- fStack->SetEventFolderName(fEventFolder->GetName());
}
}
/**************************************************************************/
//Creates trees
const char *oK = strstr(option,"K"); //Kine
const char *oE = strstr(option,"E"); //Header
- const char *oCT = strstr(option,"CT"); //Central Trigger
-
- if(oK && !TreeK())
- {
- if (fKineDataLoader->GetBaseLoader(0)->IsLoaded() == kFALSE)
+ const char *oGG = strstr(option,"GG"); //Central TriGGer
+
+ if(oK)
+ {
+ if (fKineDataLoader->GetBaseLoader(0)->IsLoaded() == kFALSE)
{
- AliError("Load Kinematics first");
+ AliError("Load Kinematics first");
}
- else
+ else
{
- fKineDataLoader->MakeTree();
- MakeStack();
- fStack->ConnectTree();
- WriteKinematics("OVERWRITE");
- }
- }
+ if (!TreeK()) {
+ fKineDataLoader->MakeTree();
+ MakeStack();
+ }
+ fStack->ConnectTree(TreeK());
+ WriteKinematics("OVERWRITE");
+ }
+ } // TreeK
if(oE && !TreeE())
{
WriteHeader("OVERWRITE");
}
- if(oCT && !TreeCT())
+ if(oGG && !TreeCT())
{
// create the CTP Trigger output file and tree
TFile* file = gROOT->GetFile( fgkDefaultTriggerFileName );
}
if (fStack)
{
- retval = fStack->GetEvent();
+ fStack->ConnectTree(TreeK());
+ retval = fStack->GetEvent();
if ( retval == kFALSE)
{
AliError("Error occured while loading kinamatics tree.");
}
/**************************************************************************/
-Int_t AliRunLoader::WriteGeometry(Option_t* /*opt*/)
-{
-//writes geometry to the file
- fGAFile->cd();
- TGeometry* geo = GetAliRun()->GetGeometry();
- if (geo == 0x0)
- {
- AliError("Can not get geometry from gAlice");
- return 1;
- }
- geo->Write();
- return 0;
-}
-/**************************************************************************/
-
Int_t AliRunLoader::WriteHeader(Option_t* opt)
{
//writes treeE
fEventFolder = AliConfig::Instance()->BuildEventFolder(name,"Event Folder");
fEventFolder->Add(this);//put myself to the folder to accessible for all
- if (Stack()) Stack()->SetEventFolderName(fEventFolder->GetName());
TIter next(fLoaders);
AliLoader *loader;
while((loader = (AliLoader*)next()))