//  
// Author: Michelangelo Giorgi <mailto: michelangelo.giorgi@cern.ch>
// Update: $Id: Atl_WtChannelAnalysis.h,v 1.5 2012/04/17 14:13:29 giorgif Exp $
// Copyright: 2009 (C) Oliver Maria Kind
//
#ifndef SINGLETOP_Atl_WtChannelAnalysis
#define SINGLETOP_Atl_WtChannelAnalysis
#ifndef ATLAS_AtlSelector
#include <AtlSelector.h>
#endif
#ifndef ATLAS_AtlTopPairFinder
#include <AtlTopPairFinder.h>
#endif
#ifndef ATLAS_AtlSgTop_WtChannelFinder
#include <AtlSgTop_WtChannelFinder.h>
#endif
#ifndef ATLAS_AtlCutFlowTool
#include <AtlCutFlowTool.h>
#endif

class Atl_WtChannelAnalysis : public AtlSelector {

private:

  // Pile-up control histograms  
  TH1F *fHist_AverageIntPerXing; // average interactions per bunch-crossing
  TH1F *fHist_NPrimaryVertices;  // number of primary vertices  
  // Vertex histograms
  TH1F *fHist_PV_X; // Primary Vertex - X-Component
  TH1F *fHist_PV_Y; // Primary Vertex - Y-Component
  TH1F *fHist_PV_Z; // Primary Vertex - Z-Component
  TH2F *fHist_PV_XY; // Primary Vertex - XYvsZ-Component
  
  
  // Lepton candidates
  HepParticle *fLepton; // Signal lepton for effiency scale factor determination used for evt re-weighting
  TList *fLeptons;      // Merged list of signal leptons (e, mu) from Top Common Objects selection
  TList *fElectrons;    // Signal electron list from  Top Common Objects selection
  TList *fMuons;        // Signal muon list from  Top Common Objects selection

  // Generic jet and b-jet candidates
  TList *fJets;  // List of all jets from Top Common Objects selection

/*   // Veto decisions */
/*   Bool_t fHasLArError;         // event affected by LArError? */

  // Pointer to tools in event loop
  AtlTopPairFinder                *fTopPair_tool;  
  AtlSgTop_WtChannelFinder        *fWtChannel_tool;
  AtlCutFlowTool                  *fCutflow_tool;
  AtlCutFlowTool                  *fCutflow_tool_AC;
  
  
  public:
  
  // Modes of running
  enum ELeptonMode {
      kElectronMode = BIT(0), // electron channel
      kMuonMode     = BIT(1), // muon channel
      kLeptonAll    = ( kElectronMode | kMuonMode ) // e or mu channel
  };

  ELeptonMode fLeptonMode;  // Indicate the lepton channel mode (e/mu)
  
  Bool_t fSignalSampleMode; // Analyzing signal MC?

  // Etmiss
  TVector2 fMET;         // MissingEt of current event
  Float_t  fMET_Mag_min; // minimum missing Et        

  // Jets
  AtlJet::EType        fJetsAuthor;       // Author type of jets

  // Pileup-weight cut
  Float_t fPileupWeightMax; // Maximum value of pile-up weight allowed

  
public:
  Atl_WtChannelAnalysis(const char* OutputFilename);
  virtual ~Atl_WtChannelAnalysis();
  
  virtual void SetBranchStatus();
  virtual void Clear( Option_t *option = "");
  virtual void BookHistograms();
  virtual void FillHistograms();
  virtual Bool_t ProcessPreCut();
  virtual Bool_t ProcessCut();
  virtual void SetCutDefaults();
  virtual void Print() const;
  virtual void Terminate();
  void InitEvent();
  void BookVertexHistograms();
  void FillVertexHistograms();
  
  ClassDef(Atl_WtChannelAnalysis,0) // Single-top Wt-Channel analysis
};
#endif







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