//  
// Author: Oliver Maria Kind <mailto: kind@mail.desy.de>
// Update: $Id: AtlCtrlPlots.h,v 1.19 2011/09/01 21:22:15 mandry Exp $
// Copyright: 2009 (C) Oliver Maria Kind
//
#ifndef ATLAS_AtlCtrlPlots
#define ATLAS_AtlCtrlPlots
#ifndef ATLAS_AtlAnalysisTool
#include <AtlAnalysisTool.h>
#endif
#ifndef ROOT_TObject
#include <TObject.h>
#endif
#ifndef ROOT_TList
#include <TList.h>
#endif
#ifndef ROOT_TDirectory
#include <TDirectory.h>
#endif
#ifndef ROOT_TFile
#include <TFile.h>
#endif
#ifndef ROOT_TH1F
#include <TH1F.h>
#endif
#ifndef ROOT_TH2F
#include <TH2F.h>
#endif
#ifndef ROOT_TProfile
#include <TProfile.h>
#endif
#ifndef ROOT_THashTable
#include <THashTable.h>
#endif

class AtlEvent;
class TTree;
class TString;
class TROOT;

class AtlCtrlPlots : public AtlAnalysisTool {

private:
    THashTable *fHistogramsNoEvtSel; // List of all histograms filled 
                                     // before event selection
    THashTable *fHistogramsEvtSel;   // List of all histograms filled
                                     // after event selection
    TDirectory *fDir_noevtsel;       // Directory for histograms
                                     // without selection
    TDirectory *fDir_evtsel;         // Directory for histograms
                                     // with selection
    TDirectory *fDir_MCvsREC;        // Directory with MC-vs-REC quantities
    
public:
    AtlCtrlPlots(const char* name, const char* title);
    virtual ~AtlCtrlPlots();
    virtual void SetBranchStatus();
    virtual void BookHistograms();
    virtual void FillHistogramsNoEvtSel()
    { FillHistograms(kFALSE); }
    virtual void FillHistograms()
    { FillHistograms(kTRUE); }
    void FillHistograms(Bool_t EvtSelection);
    void BookEnergySumsHistograms();
    void BookJetHistograms();
    void BookElectronHistograms();
    void BookMuonHistograms();
    void BookTauHistograms();
    void BookPhotonHistograms();
    void BookAtlFastHistograms();
    void BookTriggerHistograms(Bool_t EvtSelection);
    void FillEnergySumsHistograms(Bool_t EvtSelection = kFALSE);
    void FillJetHistograms(Bool_t EvtSelection = kFALSE);
    void FillElectronHistograms(Bool_t EvtSelection = kFALSE);
    void FillMuonHistograms(Bool_t EvtSelection = kFALSE);
    void FillTauHistograms(Bool_t EvtSelection = kFALSE);
    void FillPhotonHistograms(Bool_t EvtSelection = kFALSE);
    void FillAtlFastHistograms(Bool_t EvtSelection = kFALSE);
    void FillTriggerHistograms(Bool_t EvtSelection = kFALSE);

  private:
    void CopyFolder(TDirectory *dir_src, TDirectory *dir_dest);
    inline TObject* GetHistogram(const char* name, Bool_t evtsel) {
	// Get histogram pointer by histogram name
	return ( evtsel ) ? fHistogramsEvtSel->FindObject(name)
	    : fHistogramsNoEvtSel->FindObject(name);
    }
    
    ClassDef(AtlCtrlPlots,0) // ATLAS control plots
};
#endif

 AtlCtrlPlots.h:1
 AtlCtrlPlots.h:2
 AtlCtrlPlots.h:3
 AtlCtrlPlots.h:4
 AtlCtrlPlots.h:5
 AtlCtrlPlots.h:6
 AtlCtrlPlots.h:7
 AtlCtrlPlots.h:8
 AtlCtrlPlots.h:9
 AtlCtrlPlots.h:10
 AtlCtrlPlots.h:11
 AtlCtrlPlots.h:12
 AtlCtrlPlots.h:13
 AtlCtrlPlots.h:14
 AtlCtrlPlots.h:15
 AtlCtrlPlots.h:16
 AtlCtrlPlots.h:17
 AtlCtrlPlots.h:18
 AtlCtrlPlots.h:19
 AtlCtrlPlots.h:20
 AtlCtrlPlots.h:21
 AtlCtrlPlots.h:22
 AtlCtrlPlots.h:23
 AtlCtrlPlots.h:24
 AtlCtrlPlots.h:25
 AtlCtrlPlots.h:26
 AtlCtrlPlots.h:27
 AtlCtrlPlots.h:28
 AtlCtrlPlots.h:29
 AtlCtrlPlots.h:30
 AtlCtrlPlots.h:31
 AtlCtrlPlots.h:32
 AtlCtrlPlots.h:33
 AtlCtrlPlots.h:34
 AtlCtrlPlots.h:35
 AtlCtrlPlots.h:36
 AtlCtrlPlots.h:37
 AtlCtrlPlots.h:38
 AtlCtrlPlots.h:39
 AtlCtrlPlots.h:40
 AtlCtrlPlots.h:41
 AtlCtrlPlots.h:42
 AtlCtrlPlots.h:43
 AtlCtrlPlots.h:44
 AtlCtrlPlots.h:45
 AtlCtrlPlots.h:46
 AtlCtrlPlots.h:47
 AtlCtrlPlots.h:48
 AtlCtrlPlots.h:49
 AtlCtrlPlots.h:50
 AtlCtrlPlots.h:51
 AtlCtrlPlots.h:52
 AtlCtrlPlots.h:53
 AtlCtrlPlots.h:54
 AtlCtrlPlots.h:55
 AtlCtrlPlots.h:56
 AtlCtrlPlots.h:57
 AtlCtrlPlots.h:58
 AtlCtrlPlots.h:59
 AtlCtrlPlots.h:60
 AtlCtrlPlots.h:61
 AtlCtrlPlots.h:62
 AtlCtrlPlots.h:63
 AtlCtrlPlots.h:64
 AtlCtrlPlots.h:65
 AtlCtrlPlots.h:66
 AtlCtrlPlots.h:67
 AtlCtrlPlots.h:68
 AtlCtrlPlots.h:69
 AtlCtrlPlots.h:70
 AtlCtrlPlots.h:71
 AtlCtrlPlots.h:72
 AtlCtrlPlots.h:73
 AtlCtrlPlots.h:74
 AtlCtrlPlots.h:75
 AtlCtrlPlots.h:76
 AtlCtrlPlots.h:77
 AtlCtrlPlots.h:78
 AtlCtrlPlots.h:79
 AtlCtrlPlots.h:80
 AtlCtrlPlots.h:81
 AtlCtrlPlots.h:82
 AtlCtrlPlots.h:83
 AtlCtrlPlots.h:84
 AtlCtrlPlots.h:85
 AtlCtrlPlots.h:86
 AtlCtrlPlots.h:87
 AtlCtrlPlots.h:88
 AtlCtrlPlots.h:89
 AtlCtrlPlots.h:90
 AtlCtrlPlots.h:91
 AtlCtrlPlots.h:92