//___________________________________________________________
//
//  A++ Objects Definition Tool
//
//  This tool is used to select objects, like jets or leptons
//  for the user analysis and the tools.
// 
//
//  Author: Soeren Stamm <mailto:stamm@physik.hu-berlin.de> 
//  Update: $Id: AtlObjectsDefinitionTool.cxx,v 1.3 2014/02/02 16:46:28 kind Exp $
//  Copyright: 2013 (C) Soeren Stamm
//
//
//
#ifndef ATLAS_AtlObjectsDefinitionTool
#include <AtlObjectsDefinitionTool.h>
#endif
#include <AtlEvent.h>
#include <iostream>
#include <TMath.h>

using namespace std;

#ifndef __CINT__
ClassImp(AtlObjectsDefinitionTool);
#endif

//___________________________________________________________

AtlObjectsDefinitionTool::AtlObjectsDefinitionTool(const char* name, const char* title) : 
AtlAnalysisTool(name, title) {
    //
    // Default constructor
    //
    
    SetCutDefaults();

}

//___________________________________________________________

AtlObjectsDefinitionTool::~AtlObjectsDefinitionTool(){
    //
    // Default destructor
    //
}

//___________________________________________________________

void AtlObjectsDefinitionTool::SetBranchStatus() {
    //
    // Switch on needed branches
    //

    fTree->SetBranchStatus("fEventHeader*",               kTRUE);
    fTree->SetBranchStatus("fN_AntiKt4TopoEMJets*",       kTRUE);
    fTree->SetBranchStatus("fAntiKt4TopoEMJets*",         kTRUE);
    fTree->SetBranchStatus("fN_Electrons*",               kTRUE);
    fTree->SetBranchStatus("fElectrons*",                 kTRUE);
    fTree->SetBranchStatus("fN_Muons*",                   kTRUE);
    fTree->SetBranchStatus("fMuons*",                     kTRUE);
    fTree->SetBranchStatus("fEnergySum*",                 kTRUE);
    fTree->SetBranchStatus("fVertices*",                  kTRUE);
    fTree->SetBranchStatus("fN_Vertices*",                kTRUE);
    fTree->SetBranchStatus("fIDTracks*",                  kTRUE);
    fTree->SetBranchStatus("fN_IDTracks",                 kTRUE);
}

//___________________________________________________________

void AtlObjectsDefinitionTool::SetCutDefaults() {
  //
  // Selection cut defaults
  //

  // Define when the tool runs and how
  fProcessMode       = AtlAnalysisTool::kObjectsDefinition;
}

//___________________________________________________________

void AtlObjectsDefinitionTool::Clear(){
    //
    //  Clears the dynamically allocated objects
    //    
    
}

//___________________________________________________________

void AtlObjectsDefinitionTool::BookHistograms(){
    //
    // Book histograms (after kinematic fit)
    //
   
}

//___________________________________________________________

Bool_t AtlObjectsDefinitionTool::AnalyzeEvent() {
    //
    // Event analysis: required object selection
    //
    return kTRUE;
}

//___________________________________________________________

void AtlObjectsDefinitionTool::FillHistograms() {
    //
    // Method for filling histograms, only events that survive 
    // AnalyzeEvent() are taken into account
    //

}

//___________________________________________________________

void AtlObjectsDefinitionTool::Print() const {
    //
    // Print cuts for object selection of the tool
    //

}

//___________________________________________________________


void AtlObjectsDefinitionTool::Terminate(){
    //
    // Executed at the end of the tool
    //

}

 AtlObjectsDefinitionTool.cxx:1
 AtlObjectsDefinitionTool.cxx:2
 AtlObjectsDefinitionTool.cxx:3
 AtlObjectsDefinitionTool.cxx:4
 AtlObjectsDefinitionTool.cxx:5
 AtlObjectsDefinitionTool.cxx:6
 AtlObjectsDefinitionTool.cxx:7
 AtlObjectsDefinitionTool.cxx:8
 AtlObjectsDefinitionTool.cxx:9
 AtlObjectsDefinitionTool.cxx:10
 AtlObjectsDefinitionTool.cxx:11
 AtlObjectsDefinitionTool.cxx:12
 AtlObjectsDefinitionTool.cxx:13
 AtlObjectsDefinitionTool.cxx:14
 AtlObjectsDefinitionTool.cxx:15
 AtlObjectsDefinitionTool.cxx:16
 AtlObjectsDefinitionTool.cxx:17
 AtlObjectsDefinitionTool.cxx:18
 AtlObjectsDefinitionTool.cxx:19
 AtlObjectsDefinitionTool.cxx:20
 AtlObjectsDefinitionTool.cxx:21
 AtlObjectsDefinitionTool.cxx:22
 AtlObjectsDefinitionTool.cxx:23
 AtlObjectsDefinitionTool.cxx:24
 AtlObjectsDefinitionTool.cxx:25
 AtlObjectsDefinitionTool.cxx:26
 AtlObjectsDefinitionTool.cxx:27
 AtlObjectsDefinitionTool.cxx:28
 AtlObjectsDefinitionTool.cxx:29
 AtlObjectsDefinitionTool.cxx:30
 AtlObjectsDefinitionTool.cxx:31
 AtlObjectsDefinitionTool.cxx:32
 AtlObjectsDefinitionTool.cxx:33
 AtlObjectsDefinitionTool.cxx:34
 AtlObjectsDefinitionTool.cxx:35
 AtlObjectsDefinitionTool.cxx:36
 AtlObjectsDefinitionTool.cxx:37
 AtlObjectsDefinitionTool.cxx:38
 AtlObjectsDefinitionTool.cxx:39
 AtlObjectsDefinitionTool.cxx:40
 AtlObjectsDefinitionTool.cxx:41
 AtlObjectsDefinitionTool.cxx:42
 AtlObjectsDefinitionTool.cxx:43
 AtlObjectsDefinitionTool.cxx:44
 AtlObjectsDefinitionTool.cxx:45
 AtlObjectsDefinitionTool.cxx:46
 AtlObjectsDefinitionTool.cxx:47
 AtlObjectsDefinitionTool.cxx:48
 AtlObjectsDefinitionTool.cxx:49
 AtlObjectsDefinitionTool.cxx:50
 AtlObjectsDefinitionTool.cxx:51
 AtlObjectsDefinitionTool.cxx:52
 AtlObjectsDefinitionTool.cxx:53
 AtlObjectsDefinitionTool.cxx:54
 AtlObjectsDefinitionTool.cxx:55
 AtlObjectsDefinitionTool.cxx:56
 AtlObjectsDefinitionTool.cxx:57
 AtlObjectsDefinitionTool.cxx:58
 AtlObjectsDefinitionTool.cxx:59
 AtlObjectsDefinitionTool.cxx:60
 AtlObjectsDefinitionTool.cxx:61
 AtlObjectsDefinitionTool.cxx:62
 AtlObjectsDefinitionTool.cxx:63
 AtlObjectsDefinitionTool.cxx:64
 AtlObjectsDefinitionTool.cxx:65
 AtlObjectsDefinitionTool.cxx:66
 AtlObjectsDefinitionTool.cxx:67
 AtlObjectsDefinitionTool.cxx:68
 AtlObjectsDefinitionTool.cxx:69
 AtlObjectsDefinitionTool.cxx:70
 AtlObjectsDefinitionTool.cxx:71
 AtlObjectsDefinitionTool.cxx:72
 AtlObjectsDefinitionTool.cxx:73
 AtlObjectsDefinitionTool.cxx:74
 AtlObjectsDefinitionTool.cxx:75
 AtlObjectsDefinitionTool.cxx:76
 AtlObjectsDefinitionTool.cxx:77
 AtlObjectsDefinitionTool.cxx:78
 AtlObjectsDefinitionTool.cxx:79
 AtlObjectsDefinitionTool.cxx:80
 AtlObjectsDefinitionTool.cxx:81
 AtlObjectsDefinitionTool.cxx:82
 AtlObjectsDefinitionTool.cxx:83
 AtlObjectsDefinitionTool.cxx:84
 AtlObjectsDefinitionTool.cxx:85
 AtlObjectsDefinitionTool.cxx:86
 AtlObjectsDefinitionTool.cxx:87
 AtlObjectsDefinitionTool.cxx:88
 AtlObjectsDefinitionTool.cxx:89
 AtlObjectsDefinitionTool.cxx:90
 AtlObjectsDefinitionTool.cxx:91
 AtlObjectsDefinitionTool.cxx:92
 AtlObjectsDefinitionTool.cxx:93
 AtlObjectsDefinitionTool.cxx:94
 AtlObjectsDefinitionTool.cxx:95
 AtlObjectsDefinitionTool.cxx:96
 AtlObjectsDefinitionTool.cxx:97
 AtlObjectsDefinitionTool.cxx:98
 AtlObjectsDefinitionTool.cxx:99
 AtlObjectsDefinitionTool.cxx:100
 AtlObjectsDefinitionTool.cxx:101
 AtlObjectsDefinitionTool.cxx:102
 AtlObjectsDefinitionTool.cxx:103
 AtlObjectsDefinitionTool.cxx:104
 AtlObjectsDefinitionTool.cxx:105
 AtlObjectsDefinitionTool.cxx:106
 AtlObjectsDefinitionTool.cxx:107
 AtlObjectsDefinitionTool.cxx:108
 AtlObjectsDefinitionTool.cxx:109
 AtlObjectsDefinitionTool.cxx:110
 AtlObjectsDefinitionTool.cxx:111
 AtlObjectsDefinitionTool.cxx:112
 AtlObjectsDefinitionTool.cxx:113
 AtlObjectsDefinitionTool.cxx:114
 AtlObjectsDefinitionTool.cxx:115
 AtlObjectsDefinitionTool.cxx:116
 AtlObjectsDefinitionTool.cxx:117
 AtlObjectsDefinitionTool.cxx:118
 AtlObjectsDefinitionTool.cxx:119
 AtlObjectsDefinitionTool.cxx:120
 AtlObjectsDefinitionTool.cxx:121
 AtlObjectsDefinitionTool.cxx:122
 AtlObjectsDefinitionTool.cxx:123
 AtlObjectsDefinitionTool.cxx:124
 AtlObjectsDefinitionTool.cxx:125
 AtlObjectsDefinitionTool.cxx:126
 AtlObjectsDefinitionTool.cxx:127
 AtlObjectsDefinitionTool.cxx:128
 AtlObjectsDefinitionTool.cxx:129
 AtlObjectsDefinitionTool.cxx:130
 AtlObjectsDefinitionTool.cxx:131
 AtlObjectsDefinitionTool.cxx:132
 AtlObjectsDefinitionTool.cxx:133
 AtlObjectsDefinitionTool.cxx:134
 AtlObjectsDefinitionTool.cxx:135