]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MONITOR/AliQAHistNavigator.h
New code for visualization of QA histos. Will be embedded in AliEve (Mikolaj)
[u/mrichter/AliRoot.git] / MONITOR / AliQAHistNavigator.h
diff --git a/MONITOR/AliQAHistNavigator.h b/MONITOR/AliQAHistNavigator.h
new file mode 100644 (file)
index 0000000..58b6847
--- /dev/null
@@ -0,0 +1,99 @@
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice                               */
+
+///////////////////////////////////////////////////////////////////////////////
+//
+//     (see AliQAHistNavigator.cxx for details)
+//
+//     Origin: Mikolaj Krzewicki, Nikhef, Mikolaj.Krzewicki@cern.ch
+//
+//////////////////////////////////////////////////////////////////////////////
+
+#ifndef ALIQAHISTNAVIGATOR_H
+#define ALIQAHISTNAVIGATOR_H
+
+#include "TSystem.h"
+#include "Riostream.h"
+#include "TH1D.h"
+#include "TF1.h"
+#include "TList.h"
+#include "TObjString.h"
+#include "TString.h"
+#include "TFile.h"
+#include "TRegexp.h"
+#include "TPRegexp.h"
+#include "TKey.h"
+#include "TText.h"
+#include <list>
+#include <string>
+
+class AliQAHistNavigator {
+
+public:
+    AliQAHistNavigator( Int_t run=0, Int_t rev=0 );
+
+    Bool_t GetHistogram(TH1*& hist);
+    Bool_t GetNextHistogram(TH1*& hist);
+    Bool_t GetPrevHistogram(TH1*& hist);
+    Bool_t Next();
+    Bool_t Prev();
+    void PrintDebugInfo();
+    Bool_t DumpList(TString file="AliQAHistNavigator.conf");
+    Bool_t ReadList(TString file="AliQAHistNavigator.conf");
+
+    Bool_t SetFile (TString file ); 
+    Bool_t SetFile (Int_t file ); 
+    Bool_t SetDetector( TString detector );
+    Bool_t SetDetector( Int_t detector );
+    Bool_t SetLevel( TString type );
+    Bool_t SetLevel( Int_t type );
+    Bool_t SetHist( TString histo );
+    Bool_t SetHist( Int_t histo );
+    void SetLoopAllFiles( const Bool_t s=kTRUE ) {fLoopAllFiles=s;}
+    void SetLoopAllDetectors( const Bool_t s=kTRUE ) {fLoopAllDetectors=s;}
+    void SetLoopAllLevels( const Bool_t s=kTRUE ) {fLoopAllLevels=s;}
+    TString GetDetectorName();
+    TString GetLevelName();
+    TString GetHistName();
+    TString GetFileName();
+    TString GetDirName();
+    TList* GetFileList() {return fPListOfFiles;}
+    TList* GetDetectorList() {return fPCurrFile;}
+    TList* GetLevelList() {return fPCurrDetector;}
+    TList* GetHistList() {return fPCurrLevel;}
+    TList* GetCurrListOfFiles() {return fPListOfFiles;}
+    TList* GetCurrFile() {return fPCurrFile;}
+    TList* GetCurrDetector() {return fPCurrDetector;}
+    TList* GetCurrLevel() {return fPCurrLevel;}
+    TObjString* GetCurrHistName() {return fPCurrHistName;}
+
+    Bool_t CloneDirStructure();
+
+private:
+
+    Bool_t OpenCurrentFile();
+    Bool_t OpenCurrentDirectory();
+    Bool_t GetListOfFiles();
+    Bool_t Crawl(TList* parent);
+    
+    TFile* fPFile;  //pointer to current open file
+    Int_t fRun;     //runnumber
+    Int_t fCyc;     //Cycle number
+
+    //The state of the navigator, these help navigate the "tree"
+    TList* fPCurrFile;  //current list holding detectors
+    TList* fPCurrDetector; //current list holding levels
+    TList* fPCurrLevel;  //current list holding histograms
+    TObjString* fPCurrHistName;  //current histogram name
+    
+    TList* fPListOfFiles; //Tree-like structure of lists within lists mirroring the layout of histogtams in files
+
+    Bool_t fLoopAllFiles;  //whether to loop over all files
+    Bool_t fLoopAllDetectors;  //whether to loop over all detectors
+    Bool_t fLoopAllLevels;   //whether to loop over all levels
+
+    ClassDef(AliQAHistNavigator,999)     //AliQAHistNavigator class
+};
+
+#endif
+