1 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
2 * See cxx source for full Copyright notice */
4 ///////////////////////////////////////////////////////////////////////////////
6 // (see AliQAHistNavigator.cxx for details)
8 // Origin: Mikolaj Krzewicki, Nikhef, Mikolaj.Krzewicki@cern.ch
10 //////////////////////////////////////////////////////////////////////////////
12 #ifndef ALIQAHISTNAVIGATOR_H
13 #define ALIQAHISTNAVIGATOR_H
16 #include <TObjString.h>
22 class AliQADirList : public TNamed{
25 virtual ~AliQADirList();
26 TList* GetItems() const {return fPItems;}
27 TList* GetDirs() const {return fPDirs;}
28 AliQADirList* GetParent() const {return fPParent;}
29 void SetParent(AliQADirList* const l) {fPParent = l;}
32 AliQADirList* fPParent; //pointer to parent folder
33 TList* fPItems; //List of items contained in the list
34 TList* fPDirs; //List of dirs
35 AliQADirList(const AliQADirList&); // Not implemented
36 AliQADirList& operator=(const AliQADirList&); // Not implemented
38 ClassDef(AliQADirList,999) //AliQADirListDir
41 class AliQADirListItem : public TObjString{
43 AliQADirListItem(const char* s="");
44 virtual ~AliQADirListItem();
45 AliQADirList* GetParent() {return fPParent;}
46 void SetParent(AliQADirList* const parent) {fPParent=parent;}
49 AliQADirList* fPParent;
50 AliQADirListItem(const AliQADirListItem&); // Not implemented
51 AliQADirListItem& operator=(const AliQADirListItem&); // Not implemented
53 ClassDef(AliQADirListItem,999)
56 class AliQAHistNavigator {
59 AliQAHistNavigator( Int_t run=0 );
60 virtual ~AliQAHistNavigator();
62 Bool_t GetHistogram(TH1*& hist);
66 Bool_t SetFile (TString file );
67 Bool_t SetFile (Int_t file );
68 Bool_t SetDetector( TString detector );
69 Bool_t SetDetector( Int_t detector );
70 Bool_t SetLevel( TString type );
71 Bool_t SetLevel( Int_t type );
72 Bool_t SetItem( TString histo );
73 Bool_t SetItem( Int_t histo );
75 void SetLoopAllFiles( const Bool_t s=kTRUE ) {fLoopAllFiles=s;}
76 void SetLoopAllDetectors( const Bool_t s=kTRUE ) {fLoopAllDetectors=s;}
77 void SetLoopAllLevels( const Bool_t s=kTRUE ) {fLoopAllLevels=s;}
79 TString GetDetectorName();
80 TString GetLevelName();
81 TString GetItemName();
82 TString GetFileName();
84 TString GetPath(AliQADirListItem* const item);
86 AliQADirList* GetFileList() const {return fPListOfFiles;}
87 AliQADirList* GetDetectorList() const {return fPCurrFile;}
88 AliQADirList* GetLevelList() const {return fPCurrDetector;}
90 AliQADirList* GetCurrListOfFiles() const {return fPListOfFiles;}
91 AliQADirList* GetCurrFile() const {return fPCurrFile;}
92 AliQADirList* GetCurrDetector() const {return fPCurrDetector;}
93 AliQADirList* GetCurrLevel() const {return fPCurrLevel;}
94 AliQADirListItem* GetCurrItem() const {return fPCurrItem;}
96 Bool_t InitOK() const {return fInitOK;}
98 void SetExpertMode(Bool_t mode);
100 Bool_t CloneDirStructure();
104 Bool_t OpenCurrentFile();
105 Bool_t OpenCurrentDirectory();
106 Bool_t GetListOfFiles();
107 Bool_t Crawl(AliQADirList* parent);
109 TFile* fPFile; //pointer to current open file
110 TFile* fPCORRFile; //pointer to file with ntuple
111 TFile* fPQAResultFile; //pointer to file with AliQA object
112 Int_t fRun; //runnumber
114 //The state of the navigator, these help navigate the "tree"
115 AliQADirList* fPCurrFile; //current list holding detectors
116 AliQADirList* fPCurrDetector; //current list holding levels
117 AliQADirList* fPCurrLevel; //current list holding histograms
118 AliQADirListItem* fPCurrItem; //current histogram name
120 AliQADirList* fPListOfFiles; //Tree-like structure of lists within lists mirroring the layout of histogtams in files
122 Bool_t fLoopAllFiles; //whether to loop over all files
123 Bool_t fLoopAllDetectors; //whether to loop over all detectors
124 Bool_t fLoopAllLevels; //whether to loop over all levels
126 Bool_t fInitOK; //whether there is data to navigate
127 Bool_t fExpertMode; //expert histogram mode
128 TString fExpertDirName; //expert dir name
129 TList* fPEmptyList; //just an empty list
131 AliQAHistNavigator(const AliQAHistNavigator&); // Not implemented
132 AliQAHistNavigator& operator=(const AliQAHistNavigator&); // Not implemented
134 ClassDef(AliQAHistNavigator,999) //AliQAHistNavigator class