#ifndef ALICONFIG_H
#define ALICONFIG_H
#include <TNamed.h>
class TDatabasePDG;
class TFolder;
class TString;
class TVirtualMC;
class AliConfig;
class AliDetector;
class AliGenerator;
class AliModule;
class AliConfig : public TNamed {
public:
virtual ~ AliConfig ();
void Add(TDatabasePDG *pdg);
void Add(AliGenerator *generator,const char* eventfolder = fgkDefaultEventFolderName);
void Add (TVirtualMC *mc,const char* eventfolder = fgkDefaultEventFolderName);
void Add (AliModule *module,const char* eventfolder = fgkDefaultEventFolderName);
void Add (AliDetector *detector,const char* eventfolder = fgkDefaultEventFolderName);
Int_t AddDetector(const char* evntfoldername,const char *name, const char* title);
Int_t AddDetector(TFolder* evntfolder,const char *name, const char* title);
Int_t CreateDetectorFolders(const char* evntfoldername,const char *name, const char* title);
Int_t CreateDetectorFolders(TFolder* evntfolder,const char *name, const char* title);
static AliConfig* Instance();
TFolder* BuildEventFolder(const char* name,const char* tilte);
TFolder* GetTopFolder(){return fTopFolder;}
TFolder* GetConstFolder(){return fConstFolder;}
static const TString& GetModulesFolderName(){return fgkModuleFolderName;}
static const TString& GetDefaultEventFolderName()
{return fgkDefaultEventFolderName;}
const TString& GetDataFolderName() const;
private:
AliConfig(const AliConfig&);
AliConfig& operator=(const AliConfig&);
AliConfig();
AliConfig(const char * name, const char * title );
static const TString fgkTopFolderName;
static const TString fgkDefaultEventFolderName;
static const TString fgkConstantsFolderName;
static const TString fgkDataFolderName;
static const TString fgkConditionsFolderName;
static const TString fgkConfigurationFolderName;
static const TString fgkHeaderFolderName;
static const TString fgkCalibrationFolderName;
static const TString fgkAligmentFolderName;
static const TString fgkFieldFolderName;
static const TString fgkGeneratorsFolderName;
static const TString fgkVirtualMCFolderName;
void AddInFolder (const char * dir, TObject *obj);
Int_t AddSubFolder(TFolder* topfolder, const char* infoler,
const char* newfoldname, const char* newfoldtitle);
TObject* FindInFolder (const char *dir, const char *name);
TFolder* fTopFolder;
TFolder* fConstFolder;
static const TString fgkPDGFolderName;
static const TString fgkGeneratorFolderName;
static const TString fgkMCFolderName;
static const TString fgkModuleFolderName;
TString *fDetectorFolder;
static AliConfig* fgInstance;
ClassDef(AliConfig,3)
};
#endif