//
// Author: Ruth Herrberg <mailto: ruthh@physik.hu-berlin.de>
// Update: $Id: AtlSgTopValidation.h,v 1.5 2017/03/30 16:27:29 mergelm Exp $
// Copyright: 2009 (C) Oliver Maria Kind
//
#ifndef ATLAS_AtlSgTopValidation
#define ATLAS_AtlSgTopValidation
#ifndef ATLAS_AtlSelector
#include <AtlSelector.h>
#endif
#include <fstream>


class TString;
class TH1F;
class TH2F;

class AtlSgTopValidation : public AtlSelector {
    
  private:
    std::ofstream fOut;
    
    TH1F *fHistCutFlow_e;  // Cut-flow, electrons
    TH1F *fHistCutFlow_mu; // Cut-flow, muons

    // 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
    TList *fVetoLeptons;  // Merged list of veto leptons (e, mu) from Top Common Objects selection

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

    // Transverse W mass
    Double_t fWmassT;
    
    // Veto decisions
    Bool_t fVertexTracksPresent; // Enough vertex tracks present?
    Bool_t fBadJetsPresent;      // Bad jets search in Top Common Objects tool successful?
    Bool_t fElMuTrackMatched;    // Electron-muon track-match in Top Common Objects tool successful?

    
 public:
    enum ELeptonMode {
	kElectronMode = BIT(0), // electron channel
	kMuonMode     = BIT(1), // muon channel
    };
    
    
    // Mode
    ELeptonMode fLeptonMode;  // Indicate the lepton channel mode (e/mu)
    
    TString fEleTriggerChoice;
    TString fMuTriggerChoice;

    // Etmiss
    TVector2 fMET;              // MissingEt of current event
    Float_t  fMET_Mag_min;      // MissingEt cut
    Float_t  fElPt_Min;         // ElectronPt cut
    Float_t  fJets_Pt_min;      // JetPt cut
    Float_t  fJets_Eta_min;     // JetEta min cut
    Float_t  fJets_Eta_max;     // JetEta max cut
    Float_t  fBJets_Eta_min;    // BJetEta min cut
    Float_t  fBJets_Eta_max;    // BJetEta max cut

    HepParticle *fRecoW;        // reconstructed W-boson

    
    AtlSgTopValidation(const char* OutputFilename);
    virtual ~AtlSgTopValidation();
    
    virtual void SetBranchStatus();
    virtual void SetCutDefaults();
    virtual void BookHistograms();
    virtual void InitEvent();
    virtual void FillHistograms();
    virtual Bool_t ProcessCut();
    virtual void Terminate();
    virtual void Print() const;
    void ReconstructW();
    
    ClassDef(AtlSgTopValidation,2) // Single-top analysis validation
};
#endif

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