#ifndef SGTOP_AtlSgTopFCNC_tZ_Multi
#define SGTOP_AtlSgTopFCNC_tZ_Multi

#include <AtlSgTopFCNC_tZ_Base3L.h>


class AtlSgTopFCNC_tZ_Multi : public AtlSgTopFCNC_tZ_Base3L {

  public:

    class Subselection : public TNamed {

        friend class AtlSgTopFCNC_tZ_Multi;

    public:

        explicit Subselection(char const * name) :
            TNamed(name, name),
            fNLeptons_min(-1),
            fNLeptons_max(-1),
            fNJets_min(-1),
            fNJets_max(-1),
            fNBTags_min(-1),
            fNBTags_max(-1),
            fPt_Lep1_min(NAN),
            fPt_Lep2_min(NAN),
            fPt_Lep3_min(NAN),
            fMET_min(NAN),
            fMET_max(NAN),
            fMtW_min(NAN),
            fMtW_max(NAN),
            fPtZ_max(NAN),
            fReconstructTop(kFALSE),
            fRequireZ(kFALSE),
            fRequireTop(kFALSE),
            fVetoZbosonLate(kFALSE),
            fHistsAllCuts(0)
        { }

        Int_t    fNLeptons_min;
        Int_t    fNLeptons_max;
        Int_t    fNJets_min;
        Int_t    fNJets_max;
        Int_t    fNBTags_min;
        Int_t    fNBTags_max;
        Double_t fPt_Lep1_min;
        Double_t fPt_Lep2_min;
        Double_t fPt_Lep3_min;
        Double_t fMET_min;
        Double_t fMET_max;
        Double_t fMtW_min;
        Double_t fMtW_max;
        Double_t fPtZ_max;
        Bool_t   fReconstructTop;
        Bool_t   fRequireZ;
        Bool_t   fRequireTop;
        Bool_t   fVetoZbosonLate;

    private:

        AtlHistogramTool * fHistsAllCuts;

    };

    Int_t fNJets_min;
    Int_t fNJets_max;
    Bool_t fVetoZbosonLate;

    TList * fListOfSubselections;

    AtlSgTopFCNC_tZ_Multi(const char* OutputFileName);
    ~AtlSgTopFCNC_tZ_Multi() /* override */;

    void BookHistograms() /* override */;
    void FillHistograms() /* override */;
    Bool_t ProcessPreCut() /* override */;
    Bool_t ProcessCut() /* override */;
    virtual Bool_t ProcessCurrentSubselection();
    void SetCutDefaults() /* override */;
    void Print(Option_t *option) const /* override */;

protected:

    Subselection * fSubselection;

    ClassDef(AtlSgTopFCNC_tZ_Multi, 0) // Analysis class for the single-top FCNC tZ analysis
};

#endif

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