//____________________________________________________________________
//
// Selector base class for the single-top FCNC tZ analysis
// 
//  
// Author: Oliver Maria Kind <mailto: kind@physik.hu-berlin.de>
// Update: $Id: AtlSgTopFCNC_tZ_Base.cxx,v 1.23 2017/09/28 14:23:19 mergelm Exp $
// Copyright: 2015 (C) Oliver Maia Kind
//
#ifndef SINGLETOP_AtlSgTopFCNC_tZ_Base
#include <AtlSgTopFCNC_tZ_Base.h>
#endif

#include <cmath>

#include <TH1.h>
#include <AtlEventHeader.h>
#include <TMath.h>
#include <TLorentzVector.h>
#include <TList.h>
#include <TVector2.h>
#include <TVector3.h>
#include <AtlEvtWriterD3PDSgTopThinned.h>

#ifndef __CINT__
ClassImp(AtlSgTopFCNC_tZ_Base);
#endif

//____________________________________________________________________

AtlSgTopFCNC_tZ_Base::AtlSgTopFCNC_tZ_Base(const char* OutputFileName) :
    AtlSelector(OutputFileName),
    fHistsNoCuts(0),
    fHistsPreSel(0),
    fHistsPreTag(0),
    fHistsAllCuts(0)
{
    //
    // Default constructor
    //
    fLeptons     = 0;
    fElectrons   = 0;
    fMuons       = 0;
    fJets        = 0;
    fBJets       = 0;
    fObjTool     = 0;
    fSFTool      = 0;
    fReconstructedZ = kFALSE;
    SetCutDefaults();
}

//____________________________________________________________________

AtlSgTopFCNC_tZ_Base::~AtlSgTopFCNC_tZ_Base() {
    //
    // Default destructor
    //
    delete fHistsNoCuts;
    delete fHistsPreSel;
    delete fHistsPreTag;
    delete fHistsAllCuts;
}

//____________________________________________________________________

void AtlSgTopFCNC_tZ_Base::SetCutDefaults() {
    //
    // Selection cut defaults
    //
    fNLeptons_min = 2;
    fNLeptons_max = 3;
    fNBTags_min   = 1;
    fNBTags_max   = 1;
    fPt_Lep1_min  = 15.;
    fPt_Lep2_min  = 15.;
    fPt_Lep3_min  = 15.;
    fMET_min      = 0.;
    fMET_max      = INFINITY;
    fMtW_min      = 0.;
    fMtW_max      = INFINITY;
    fMassZ_min    = 60.;
    fMassZ_max    = 120.;
    fMassTop_min  = 0.;
    fMassTop_max  = INFINITY;
    fReconstructTop = kTRUE;
    fRequireZ = kTRUE;
    fRequireTop = kTRUE;
    fVetoZboson   = kFALSE;
    fVetoTop      = kFALSE;

}

//____________________________________________________________________

void AtlSgTopFCNC_tZ_Base::SetBranchStatus() {
    //
    // Switch on/off branches in order to gain speed
    //
    fTree->SetBranchStatus("*", kTRUE);
}

//____________________________________________________________________

void AtlSgTopFCNC_tZ_Base::Clear(Option_t * option) {
    //
    // Clear variables and lists
    //
    fReconstructedZ = kFALSE;
    AtlSelector::Clear(option);
}

//____________________________________________________________________

void AtlSgTopFCNC_tZ_Base::Begin(TTree * tree) {
    //
    // Begin analysis job
    //
    fEvtWriter = new AtlEvtWriterD3PDSgTopThinned();
    AtlSelector::Begin(tree);
}

//____________________________________________________________________

void AtlSgTopFCNC_tZ_Base::SlaveBegin(TTree * tree) {
    //
    // Initialise before the first event.
    //
    AtlSelector::SlaveBegin(tree);

    // Get ObjectSelectionTool + pointers to analysis objects
    fObjTool = (AtlObjectsToolD3PDSgTop*)
	GetTool("AtlObjectsToolD3PDSgTop", "", kTRUE);
    fElectrons = fObjTool->GetElectrons();
    fMuons     = fObjTool->GetMuons();
    fLeptons   = fObjTool->GetLeptons();
    fJets      = fObjTool->GetJets();
    fBJets     = fObjTool->GetBJets();

    // Get ScaleFactorTool
    fSFTool = (AtlObjRecoScaleFactorTool*)
	GetTool("AtlObjRecoScaleFactorTool", "", kTRUE);
    // Provide SF tool with pointers to analysis objects
    if ( fSFTool ) {
	fSFTool->SetObjDefinitionTool(fObjTool);
        fSFTool->SetLeptons(fLeptons);
        fSFTool->SetJets(fJets);
    }

    // Initialise event writer
    if ( AtlEvtWriterD3PDSgTopThinned *evtWriter
	 = dynamic_cast<AtlEvtWriterD3PDSgTopThinned*>(fEvtWriter) ) {
        evtWriter->SetLeptons(fLeptons);
        evtWriter->SetJets(fJets);
    }
}

//____________________________________________________________________

void AtlSgTopFCNC_tZ_Base::InitEvent() {
    //
    // Prepare event analysis
    //
}

//____________________________________________________________________

void AtlSgTopFCNC_tZ_Base::Print(Option_t *option) const {
    //
    // Print user analysis configuration
    //
    AtlSelector::Print();
    cout << endl
	 << "  fNLeptons_min  = " << fNLeptons_min << endl
	 << "  fNLeptons_max  = " << fNLeptons_max << endl
	 << "  fNBTags_min    = " << fNBTags_min << endl
	 << "  fNBTags_max    = " << fNBTags_max << endl
	 << "  fPt_Lep1_min   = " << fPt_Lep1_min << " GeV" << endl
	 << "  fPt_Lep2_min   = " << fPt_Lep2_min << " GeV" << endl
	 << "  fPt_Lep3_min   = " << fPt_Lep3_min << " GeV" << endl
	 << "  fMET_min       = " << fMET_min << " GeV" << endl
	 << "  fMET_max       = " << fMET_max << " GeV" << endl
	 << "  fMtW_min       = " << fMtW_min << " GeV" << endl
	 << "  fMtW_max       = " << fMtW_max << " GeV" << endl
	 << "  fMassZ_min     = " << fMassZ_min << " GeV" << endl
	 << "  fMassZ_max     = " << fMassZ_max << " GeV" << endl
	 << "  fMassTop_min   = " << fMassTop_min << " GeV" << endl
	 << "  fMassTop_max   = " << fMassTop_max << " GeV" << endl;
    cout << "  fVetoZboson    = ";
    if ( fVetoZboson ) {
    	cout << "true" << endl;
    } else {
    	cout << "false" << endl;
    }
    cout << "  fVetoTop       = ";
    if ( fVetoTop ) {
    	cout << "true" << endl;
    } else {
    	cout << "false" << endl;
    }

}

//____________________________________________________________________

void AtlSgTopFCNC_tZ_Base::Terminate() {
    //
    // Terminate routine called at the end of event loop
    //
    // Always call AtlSelector::Terminate() at the very end, since
    // there the output file is written.
    //
    AtlSgTopFCNC_tZ_Base::CreatePieCharts();
    AtlSelector::Terminate();
}

//____________________________________________________________________

void AtlSgTopFCNC_tZ_Base::ReconstructZ0Decays() {
    //
    // Reconstruct all Z -> l+l- candidates
    //
    // Loop over all ee, mumu combinations and store all Z candidates
    // inside the mass window (outside in case of the veto) in
    // descending order w.r.t. their proxomity to the true Z mass (ie.
    // 1st candidate = worst; last candidate = best)
    //
    if ( fReconstructedZ )
        return;
    fReconstructedZ = kTRUE;
    HepParticle *lep1 = 0;
    HepParticle *lep2 = 0;
    for ( Int_t i = 0; i < fLeptons->GetEntries()-1; i++ ) {
	for ( Int_t j = i+1; j < fLeptons->GetEntries(); j++ ) {
	    if ( i == j ) continue;
	    lep1 = (HepParticle*)fLeptons->At(i);
	    lep2 = (HepParticle*)fLeptons->At(j);
	    if ( lep1->IsElectron() && lep2->IsMuon() ) continue;
	    if ( lep1->IsMuon() && lep2->IsElectron() ) continue;
	    if ( lep1->Charge() * lep2->Charge() != -1. ) continue;

	    TLorentzVector p_Z = lep1->P() + lep2->P();
	    Float_t m_Z = p_Z.M();
	    if ( fVetoZboson ) {
		if ( m_Z > fMassZ_min && m_Z < fMassZ_max ) continue;
	    } else {
		if ( m_Z < fMassZ_min || m_Z > fMassZ_max ) continue;
	    }
	    fEvent->AddZ0Decay(p_Z.X(), p_Z.Y(), p_Z.Z(), p_Z.E(),
			       lep1, lep2);
	}
    }
    // Sort candidates by their difference from the true Z
    // mass in descending order
    fEvent->GetZ0Decays()->Sort();
}

//____________________________________________________________________

void AtlSgTopFCNC_tZ_Base::BookHistograms() {
    //
    // Book histograms
    //

    // Histograms w/o any cut
    fHistsNoCuts = new AtlHistogramTool("NoCuts", "Histograms without cuts");
    AddTool(fHistsNoCuts);
    BookHistogramsCommon(fHistsNoCuts);
    BookHistogramsZ0(fHistsNoCuts, "Z0_best");

    // Histograms after pre-selection
    fHistsPreSel = new AtlHistogramTool("PreSel", "Pre-selection histograms");     
    AddTool(fHistsPreSel);
    BookHistogramsCommon(fHistsPreSel);
    BookHistogramsZ0(fHistsPreSel, "Z0_best");

    // Histograms w/o b-tagging 
    fHistsPreTag = new AtlHistogramTool("PreTag", "Pre-tagged histograms");     
    AddTool(fHistsPreTag);
    BookHistogramsCommon(fHistsPreTag);
    BookHistogramsZ0(fHistsPreTag, "Z0_best");

    // Histograms w/ all cuts applied
    fHistsAllCuts = new AtlHistogramTool("AllCuts", "Histograms with all cuts");
    AddTool(fHistsAllCuts);
    BookHistogramsCommon(fHistsAllCuts);
    BookHistogramsZ0(fHistsAllCuts, "Z0_best");
}

//____________________________________________________________________

void AtlSgTopFCNC_tZ_Base::BookHistogramsCommon(AtlHistogramTool *htool) {
    //
    // Book common histograms for leptons, jets and the enrgy sums and
    // angles
    //
    BookHistogramsLeptons(htool);
    BookHistogramsJets(htool);
    BookHistogramsMET(htool);
}
    
//____________________________________________________________________

void AtlSgTopFCNC_tZ_Base::BookHistogramsLeptons(AtlHistogramTool *htool) {
    //
    // Book common histograms for leptons
    //
    
    // =======
    // Leptons
    // =======

    // Leading lepton Pt
    htool->Add("leptons/h_lep1_Pt", "Leading Lepton Pt", 10, 0., 300.,
	       "Leading lepton p_{T} [GeV]", "Events");

    // Leading lepton eta
    htool->Add("leptons/h_lep1_Eta", "Leading Lepton Eta",
	       18, -4.5, 4.5, "Leading lepton #eta", "Events");

    // Leading lepton phi
    htool->Add("leptons/h_lep1_Phi", "Leading Lepton Azimuth",
	       8, -M_PI, M_PI, "Leading lepton #phi [rad]",
	       "Events");

    // Sub-leading lepton Pt
    htool->Add("leptons/h_lep2_Pt", "Sub-leading Lepton Pt",
	       10, 0., 250., "Sub-leading lepton p_{T} [GeV]",
	       "Events");
    
    // Sub-leading lepton eta
    htool->Add("leptons/h_lep2_Eta", "Sub-leading Lepton Eta",
	       18, -4.5, 4.5, "Sub-leading lepton #eta", "Events");
    
    // Sub-leading lepton phi
    htool->Add("leptons/h_lep2_Phi", "Sub-leading Lepton Azimuth",
	       8, -M_PI, M_PI, "Sub-leading lepton #phi [rad]",
	       "Events");

    // Third lepton Pt
    htool->Add("leptons/h_lep3_Pt", "Third Lepton Pt",
	       10, 0., 200., "Third lepton p_{T} [GeV]",
	       "Events");
 
    // Sub-leading lepton eta
    htool->Add("leptons/h_lep3_Eta", "Third Lepton Eta",
	       18, -4.5, 4.5, "Third lepton #eta", "Events");
    
    // Sub-leading lepton phi
    htool->Add("leptons/h_lep3_Phi", "Third Lepton Azimuth",
	       8, -M_PI, M_PI, "Third lepton #phi [rad]",
	       "Events");
    // Lepton charge
    htool->Add("leptons/h_lep_Chg", "Lepton Charge", 3, -1.5, 1.5,
	       "Lepton charge", "Entries");

    // No. of leptons per event
    htool->Add("leptons/h_lep_N", "No. of Leptons per Event",
	       5, -0.5, 4.5, "Number of leptons / event", "Events");

    // Pileup weigth per event
    htool->Add("leptons/h_pileup_weight", "Pileup Weight",
	       10, -0.5, 5.5, "Pileup weight", "Events");

    // Monte Carlo weigth per event
    htool->Add("leptons/h_mc_weight", "Monte Carlo Weight",
	       10, -0.5, 3.5, "log(Monte Carlo weight)", "Events");

    // Lepton weigth per event
    htool->Add("leptons/h_lepton_weight", "Lepton Weight",
	       10, -0.5, 2.5, "Lepton weight", "Events");
  
    // b Tagging weigth per event
    htool->Add("leptons/h_btag_weight", "b Tagging Weight",
	       10, -0.5, 2.5, "b tagging weight", "Events");

    // Total weigth per event
    htool->Add("leptons/h_total_weight", "Total Weight",
	       10, -0.5, 3.5, "Total weight", "Events");

    // =========
    // Electrons
    // =========

    // Leading electron Pt
    htool->Add("leptons/el/h_el1_Pt", "Leading Electron Pt", 10, 0., 300.,
	       "Leading electron p_{T} [GeV]", "Events");

    // Leading electron eta
    htool->Add("leptons/el/h_el1_Eta", "Leading Electron Eta",
	       8, -2.5, 2.5, "Leading electron #eta", "Events");

    // Leading electron phi
    htool->Add("leptons/el/h_el1_Phi", "Leading Electron Azimuth",
	       8, -M_PI, M_PI, "Leading electron #phi [rad]",
	       "Events");

    // Sub-leading electron Pt
    htool->Add("leptons/el/h_el2_Pt", "Sub-leading Electron Pt",
	       10, 0., 250., "Sub-leading electron p_{T} [GeV]",
	       "Events");
    
    // Sub-leading electron eta
    htool->Add("leptons/el/h_el2_Eta", "Sub-leading Electron Eta",
	       8, -2.5, 2.5, "Sub-leading electron #eta", "Events");
    
    // Sub-leading electron phi
    htool->Add("leptons/el/h_el2_Phi", "Sub-leading Electron Azimuth",
	       8, -M_PI, M_PI, "Sub-leading electron #phi [rad]",
	       "Events");

    // Electron charge
    htool->Add("leptons/el/h_el_Chg", "Electron Charge", 3, -1.5, 1.5,
	       "Electron charge", "Entries");
    
    // No. of electrons per event
    htool->Add("leptons/el/h_el_N", "No. of Electrons per Event",
	       5, -0.5, 4.5, "Number of electrons / event", "Events");
/*
// Pt_rel (MC only; for fake studies)
htool->Add("leptons/el/h_el_ptrel_photoconv", "Pt_rel, e from photo conversion",
50, 0., 200., "p_{T}^{rel} [GeV]", "Entries");
htool->Add("leptons/el/h_el_ptrel_bmeson", "Pt_rel, e from B meson decays",
50, 0., 200., "p_{T}^{rel} [GeV]", "Entries");
htool->Add("leptons/el/h_el_ptrel_zboson", "Pt_rel, e from Z decays",
50, 0., 200., "p_{T}^{rel} [GeV]", "Entries");
htool->Add("leptons/el/h_el_ptrel_top", "Pt_rel, e from top decays",
50, 0., 200., "p_{T}^{rel} [GeV]", "Entries");

// DeltaR (MC only; for fake studies)
htool->Add("leptons/el/h_el_deltaR_photoconv", "DeltaR, e from photo conversion",
50, 0., 10., "#Delta R", "Entries");
htool->Add("leptons/el/h_el_deltaR_bmeson", "DeltaR, e from B meson decays",
50, 0., 10., "#Delta R", "Entries");
htool->Add("leptons/el/h_el_deltaR_zboson", "DeltaR, e from Z decays",
50, 0., 10., "#Delta R", "Entries");
htool->Add("leptons/el/h_el_deltaR_top", "DeltaR, e from top decays",
50, 0., 10., "#Delta R", "Entries");
*/
    // MC truth origin (for fake studies)
    TH1D *h_el_tru_orig = htool->Add("leptons/el/h_el_truth_origin", "MC Particle Origin for all Electrons",
				     AtlMCTruthClassifier::kNumParticleOrigin,
				     0, AtlMCTruthClassifier::kNumParticleOrigin,
				     "", "Entries");
    SetParticleOriginHistBinLabels(h_el_tru_orig);
    
    // =====
    // Muons
    // =====

    // Leading muon Pt
    htool->Add("leptons/mu/h_mu1_Pt", "Leading Muon Pt", 10, 0., 300.,
	       "Leading muon p_{T} [GeV]", "Events");

    // Leading muon eta
    htool->Add("leptons/mu/h_mu1_Eta", "Leading Muon Eta",
	       8, -2.5, 2.5, "Leading muon #eta", "Events");

    // Leading muon phi
    htool->Add("leptons/mu/h_mu1_Phi", "Leading Muon Azimuth",
	       8, -M_PI, M_PI, "Leading muon #phi [rad]",
	       "Events");

    // Sub-leading muon Pt
    htool->Add("leptons/mu/h_mu2_Pt", "Sub-leading Muon Pt",
	       10, 0., 250., "Sub-leading muon p_{T} [GeV]",
	       "Events");
    
    // Sub-leading muon eta
    htool->Add("leptons/mu/h_mu2_Eta", "Sub-leading Muon Eta",
	       8, -2.5, 2.5, "Sub-leading muon #eta", "Events");
    
    // Sub-leading muon phi
    htool->Add("leptons/mu/h_mu2_Phi", "Sub-leading Muon Azimuth",
	       8, -M_PI, M_PI, "Sub-leading muon #phi [rad]",
	       "Events");

    // Muon charge
    htool->Add("leptons/mu/h_mu_Chg", "Muon Charge", 3, -1.5, 1.5,
	       "Muon charge", "Entries");

    // No. of muons per event
    htool->Add("leptons/mu/h_mu_N", "No. of Muons per Event",
	       5, -0.5, 4.5, "Number of muons / event", "Events");
/*
// Pt_rel (MC only; for fake studies)
htool->Add("leptons/mu/h_mu_ptrel_photoconv", "Pt_rel, mu from photo conversion",
50, 0., 200., "p_{T}^{rel} [GeV]", "Entries");
htool->Add("leptons/mu/h_mu_ptrel_bmeson", "Pt_rel, mu from B meson decays",
50, 0., 200., "p_{T}^{rel} [GeV]", "Entries");
htool->Add("leptons/mu/h_mu_ptrel_zboson", "Pt_rel, mu from Z decays",
50, 0., 200., "p_{T}^{rel} [GeV]", "Entries");
htool->Add("leptons/mu/h_mu_ptrel_top", "Pt_rel, mu from top decays",
50, 0., 200., "p_{T}^{rel} [GeV]", "Entries");
    
// DeltaR (MC only; for fake studies)
htool->Add("leptons/mu/h_mu_deltaR_photoconv", "DeltaR, mu from photo conversion",
50, 0., 10., "#Delta R", "Entries");
htool->Add("leptons/mu/h_mu_deltaR_bmeson", "DeltaR, mu from B meson decays",
50, 0., 10., "#Delta R", "Entries");
htool->Add("leptons/mu/h_mu_deltaR_zboson", "DeltaR, mu from Z decays",
50, 0., 10., "#Delta R", "Entries");
htool->Add("leptons/mu/h_mu_deltaR_top", "DeltaR, mu from top decays",
50, 0., 10., "#Delta R", "Entries");
*/
    // MC truth origin (for fake studies)
    TH1D *h_mu_tru_orig = htool->Add("leptons/mu/h_mu_truth_origin", "MC Particle Origin for all Muons",
				     AtlMCTruthClassifier::kNumParticleOrigin,
				     0, AtlMCTruthClassifier::kNumParticleOrigin,
				     "", "Entries");
    SetParticleOriginHistBinLabels(h_mu_tru_orig);
}

//____________________________________________________________________

void AtlSgTopFCNC_tZ_Base::BookHistogramsJets(AtlHistogramTool *htool) {
    //
    // Book common histograms for jets
    //

    // Leading jet Pt
    htool->Add("jets/h_jet1_Pt", "Leading Jet Pt",
	       10, 0., 300., "Leading jet p_{T} [GeV]", "Events");
    
    // Leading jet eta
    htool->Add("jets/h_jet1_Eta", "Leading Jet Eta",
	       18, -4.5, 4.5, "Leading jet #eta", "Events");
    
    // Leading jet phi
    htool->Add("jets/h_jet1_Phi", "Leading Jet Azimuth",
	       8, -M_PI, M_PI, "Leading jet #phi [rad]",
	       "Events");

    // Sub-leading jet Pt
    htool->Add("jets/h_jet2_Pt", "Sub-leading Jet Pt",
	       10, 0., 250., "Sub-leading jet p_{T} [GeV]", "Events");
    
    // Sub-leading jet eta
    htool->Add("jets/h_jet2_Eta", "Sub-leading Jet Eta",
	       18, -4.5, 4.5, "Sub-leading jet #eta", "Events");
    
    // Sub-leading jet phi
    htool->Add("jets/h_jet2_Phi", "Sub-leading Jet Azimuth",
	       8, -M_PI, M_PI, "Sub-leading jet #phi [rad]",
	       "Events");

    // Third jet Pt
    htool->Add("jets/h_jet3_Pt", "Third Jet Pt",
	       10, 0., 200., "Third jet p_{T} [GeV]", "Events");
    
    // Third jet eta
    htool->Add("jets/h_jet3_Eta", "Third Jet Eta",
	       18, -4.5, 4.5, "Third jet #eta", "Events");
    
    // Third jet phi
    htool->Add("jets/h_jet3_Phi", "Third Jet Azimuth",
	       8, -M_PI, M_PI, "Third jet #phi [rad]",
	       "Events");

    // Leading b-jet Pt
    htool->Add("jets/h_bjet1_Pt", "Leading b-Jet Pt",
	       10, 0., 300., "Leading b-jet p_{T} [GeV]", "Events");
    
    // Leading b-jet eta
    htool->Add("jets/h_bjet1_Eta", "Leading b-Jet Eta",
	       18, -4.5, 4.5, "Leading b-jet #eta", "Events");
    
    // Leading b-jet phi
    htool->Add("jets/h_bjet1_Phi", "Leading b-Jet Azimuth",
	       8, -M_PI, M_PI, "Leading b-jet #phi [rad]",
	       "Events");
    
    // No. of jets per event
    htool->Add("jets/h_jet_N", "", 7, -0.5, 6.5,
	       "Number of jets / event", "Events");
	
    // No. of b-jets per event
    htool->Add("jets/h_bjet_N", "", 6, -0.5, 5.5,
	       "Number of bjets / event", "Events");

}

//____________________________________________________________________

void AtlSgTopFCNC_tZ_Base::BookHistogramsMET(AtlHistogramTool *htool) {
    //
    // Book common histograms for energy sums
    //

    // MET magnitude
    htool->Add("met/h_MET_mag", "Missing Transverse Momentum",
	       10, 0., 300., "E_{T}^{miss} [GeV]", "Events");

    // MET azimuth
    htool->Add("met/h_MET_phi", "Missing Transverse Momentum",
	       8, -M_PI, M_PI, "E_{T}^{miss} #phi [rad]", "Events");
    
    // Transverse W mass (leading lepton !)
    htool->Add("met/h_MtW", "Transverse W Boson Mass (leading lepton)",
	       10, 0., 400, "M_{T, W}(lep 1) [GeV]", "Events");
}

//____________________________________________________________________

void AtlSgTopFCNC_tZ_Base::BookHistogramsZ0(AtlHistogramTool *htool,
					    const char* path) {
    //
    // Book histograms for a Z boson candidate at the given path
    // in three different subfolders for "elel", "mumu" and "all"
    //
    BookHistogramsZ0Subdir(htool, Form("%s/elel", path));
    BookHistogramsZ0Subdir(htool, Form("%s/mumu", path));
    BookHistogramsZ0Subdir(htool, Form("%s/all",  path));
}
    
//____________________________________________________________________

void AtlSgTopFCNC_tZ_Base::BookHistogramsZ0Subdir(AtlHistogramTool *htool,
						  const char* path) {
    //
    // Book histograms for a Z boson candidate at the given path
    //

    // Delta phi
    htool->Add(Form("%s/h_Z_DeltaPhi", path), "Z Azimuth Difference",
	       8, -M_PI, M_PI, "#Delta#phi(lep,lep) [rad]", "Events");
    
    // Invariant mass
    htool->Add(Form("%s/h_Z_M", path), "Z Invariant Mass",
	       22, 80., 102., "M(lep,lep) [GeV]", "Events");

    // Charge
    htool->Add(Form("%s/h_Z_Chg", path), "Dilepton Charge",
	       3, -1.5, 1.5, "#sum chg(lep1, lep2)", "Entries");

    // Transverse momentum
    htool->Add(Form("%s/h_Z_Pt", path), "Z transverse momentum",
	       10, 0., 400., "Z candidate p_{T} [GeV]", "Events");
   
    // Pseudo-rapidity
    htool->Add(Form("%s/h_Z_Eta", path), "Z pseudo-rapidity",
	       8, -5., 5., "Z candidate #eta", "Events");
    
    // Azimuth
    htool->Add(Form("%s/h_Z_Phi", path), "Z azimuth",
	       8, -M_PI, M_PI, "Z #phi [rad]", "Events");

    // MC truth origin (for fake studies)
    TH1D *h_el_Z1_tru_orig = htool->Add(Form("%s/h_el_Z1_truth_origin", path), "MC Particle Origin, first electron from Z candidates",
					AtlMCTruthClassifier::kNumParticleOrigin,
					0, AtlMCTruthClassifier::kNumParticleOrigin,
					"First e from Z", "Entries");
    SetParticleOriginHistBinLabels(h_el_Z1_tru_orig);
    TH1D *h_el_Z2_tru_orig = htool->Add(Form("%s/h_el_Z2_truth_origin", path), "MC Particle Origin, second electron from Z candidates",
					AtlMCTruthClassifier::kNumParticleOrigin,
					0, AtlMCTruthClassifier::kNumParticleOrigin,
					"Second e from Z", "Entries");
    SetParticleOriginHistBinLabels(h_el_Z2_tru_orig);

    TH1D *h_mu_Z1_tru_orig = htool->Add(Form("%s/h_mu_Z1_truth_origin", path), "MC Particle Origin, first muon from Z candidates",
					AtlMCTruthClassifier::kNumParticleOrigin,
					0, AtlMCTruthClassifier::kNumParticleOrigin,
					"First #mu from Z", "Entries");
    SetParticleOriginHistBinLabels(h_mu_Z1_tru_orig);
    TH1D *h_mu_Z2_tru_orig = htool->Add(Form("%s/h_mu_Z2_truth_origin", path), "MC Particle Origin, second muon from Z candidates",
					AtlMCTruthClassifier::kNumParticleOrigin,
					0, AtlMCTruthClassifier::kNumParticleOrigin,
					"Second #mu from Z", "Entries");
    SetParticleOriginHistBinLabels(h_mu_Z2_tru_orig);

}

//____________________________________________________________________

void AtlSgTopFCNC_tZ_Base::FillHistogramsCommon(AtlHistogramTool *htool,
						Double_t w) {
    //
    // Fill common histograms  for leptons, jets and the enrgy sums
    //
    FillHistogramsLeptons(htool, w);
    FillHistogramsJets(htool, w);
    FillHistogramsMET(htool, w);
}

//____________________________________________________________________

void AtlSgTopFCNC_tZ_Base::FillHistogramsLeptons(AtlHistogramTool *htool,
						 Double_t w) {
    //
    // Fill common histograms  for leptons  with given weight
    //

    // =======
    // Leptons
    // =======
    HepParticle *lep1 = (HepParticle*)fLeptons->At(0);
    HepParticle *lep2 = (HepParticle*)fLeptons->At(1);
    HepParticle *lep3 = (HepParticle*)fLeptons->At(2);
    htool->Fill("leptons/h_lep_N", fLeptons->GetEntries(), w);   
    htool->Fill("leptons/h_lep1_Pt",  lep1->Pt(), w);
    htool->Fill("leptons/h_lep1_Eta", lep1->Eta(), w);
    htool->Fill("leptons/h_lep1_Phi", lep1->Phi(), w);
    htool->Fill("leptons/h_lep_Chg",  lep1->Charge(), w);
    if ( lep2 != 0 ) { // In case of events with more than 1 lepton
	htool->Fill("leptons/h_lep2_Pt",  lep2->Pt(), w);
	htool->Fill("leptons/h_lep2_Eta", lep2->Eta(), w);
	htool->Fill("leptons/h_lep2_Phi", lep2->Phi(), w);
	htool->Fill("leptons/h_lep_Chg",  lep2->Charge(), w);
    }
    if ( lep3 != 0) { 
	htool->Fill("leptons/h_lep3_Pt",  lep3->Pt(), w);
	htool->Fill("leptons/h_lep3_Eta", lep3->Eta(), w);
	htool->Fill("leptons/h_lep3_Phi", lep3->Phi(), w);
    }

    // Fill weights
    htool->Fill("leptons/h_pileup_weight", fEvent->GetPileupWeight(), 1);
    htool->Fill("leptons/h_mc_weight", log(fEvent->GetMCWeight()), 1);
    htool->Fill("leptons/h_lepton_weight", fEvent->GetEventHeader()->LeptonWeight().GetValue(), 1);
    htool->Fill("leptons/h_btag_weight", fEvent->GetEventHeader()->BtagWeight_MV2c10_77().GetValue(), 1);
    htool->Fill("leptons/h_total_weight", log(fEvent->GetTagEvtWeight()), 1);

    
    // =========
    // Electrons
    // =========
    if ( lep1->IsElectron() ) {
	htool->Fill("leptons/el/h_el_N", fElectrons->GetEntries(), w);
	htool->Fill("leptons/el/h_el1_Pt",  lep1->Pt(), w);
	htool->Fill("leptons/el/h_el1_Eta", lep1->Eta(), w);
	htool->Fill("leptons/el/h_el1_Phi", lep1->Phi(), w);
	htool->Fill("leptons/el/h_el_Chg",  lep1->Charge(), w);
    }
    if ( lep2 != 0 && lep2->IsElectron() ) {
	htool->Fill("leptons/el/h_el2_Pt",  lep2->Pt(), w);
	htool->Fill("leptons/el/h_el2_Eta", lep2->Eta(), w);
	htool->Fill("leptons/el/h_el2_Phi", lep2->Phi(), w);
	htool->Fill("leptons/el/h_el_Chg",  lep2->Charge(), w);
    }

    // MC
    if ( fEvent->IsMC() ) {
	AtlElectron *el = 0;
	for ( Int_t i = 0; i < fElectrons->GetEntries(); i++ ) {
	    el = (AtlElectron*)fElectrons->At(i);
	    AtlMCTruthClassifier::EParticleOrigin origin = el->GetMCTruthClassifier()
		->GetParticleOrigin();
/*
// Fill pt_rel histograms
Double_t pt_rel = 0.; Double_t DeltaR = 0.;
fEvent->ComputePtRel(el, fJets, 10., pt_rel, DeltaR);
if ( origin ==  AtlMCTruthClassifier::kPhotonConv ) {
htool->Fill("leptons/el/h_el_ptrel_photoconv", pt_rel, w);
htool->Fill("leptons/el/h_el_deltaR_photoconv", DeltaR, w);
} else if ( origin == AtlMCTruthClassifier::kBottomMeson ) {
htool->Fill("leptons/el/h_el_ptrel_bmeson", pt_rel, w);
htool->Fill("leptons/el/h_el_deltaR_bmeson", DeltaR, w);
} else if ( origin == AtlMCTruthClassifier::kZBoson ) {
htool->Fill("leptons/el/h_el_ptrel_zboson", pt_rel, w);
htool->Fill("leptons/el/h_el_deltaR_zboson", DeltaR, w);
} else if ( origin == AtlMCTruthClassifier::ktop ) {
htool->Fill("leptons/el/h_el_ptrel_top", pt_rel, w);
htool->Fill("leptons/el/h_el_deltaR_top", DeltaR, w);
}
*/	    
	    // Fill MC truth origin
	    htool->Fill("leptons/el/h_el_truth_origin", (Int_t)origin, w);
	}
    }
	
    // =====
    // Muons
    // =====
    if ( lep1->IsMuon() ) {
	htool->Fill("leptons/mu/h_mu_N", fMuons->GetEntries(), w);
	htool->Fill("leptons/mu/h_mu1_Pt",  lep1->Pt(), w);
	htool->Fill("leptons/mu/h_mu1_Eta", lep1->Eta(), w);
	htool->Fill("leptons/mu/h_mu1_Phi", lep1->Phi(), w);
	htool->Fill("leptons/mu/h_mu_Chg",  lep1->Charge(), w);
    }
    if ( lep2 != 0 && lep2->IsMuon() ) {
	htool->Fill("leptons/mu/h_mu2_Pt",  lep2->Pt(), w);
	htool->Fill("leptons/mu/h_mu2_Eta", lep2->Eta(), w);
	htool->Fill("leptons/mu/h_mu2_Phi", lep2->Phi(), w);
	htool->Fill("leptons/mu/h_mu_Chg",  lep2->Charge(), w);
    }    

    // MC
    if ( fEvent->IsMC() ) {
	AtlMuon *mu = 0;
	for ( Int_t i = 0; i < fMuons->GetEntries(); i++ ) {
	    mu = (AtlMuon*)fMuons->At(i);
	    AtlMCTruthClassifier::EParticleOrigin origin = mu->GetMCTruthClassifier()
		->GetParticleOrigin();
/*
// Fill pt_rel and deltaR histograms
Double_t pt_rel = 0.; Double_t DeltaR = 0.;
fEvent->ComputePtRel(mu, fJets, 10., pt_rel, DeltaR);
if ( origin ==  AtlMCTruthClassifier::kPhotonConv ) {
htool->Fill("leptons/mu/h_mu_ptrel_photoconv", pt_rel, w);
htool->Fill("leptons/mu/h_mu_deltaR_photoconv", DeltaR, w);
} else if ( origin == AtlMCTruthClassifier::kBottomMeson ) {
htool->Fill("leptons/mu/h_mu_ptrel_bmeson", pt_rel, w);
htool->Fill("leptons/mu/h_mu_deltaR_bmeson", DeltaR, w);
} else if ( origin == AtlMCTruthClassifier::kZBoson ) {
htool->Fill("leptons/mu/h_mu_ptrel_zboson", pt_rel, w);
htool->Fill("leptons/mu/h_mu_deltaR_zboson", DeltaR, w);
} else if ( origin == AtlMCTruthClassifier::ktop ) {
htool->Fill("leptons/mu/h_mu_ptrel_top", pt_rel, w);
htool->Fill("leptons/mu/h_mu_deltaR_top", DeltaR, w);
}
*/	    
	    // Fill MC truth origin
	    htool->Fill("leptons/mu/h_mu_truth_origin", (Int_t)origin, w);
	}
    }
}

//____________________________________________________________________

void AtlSgTopFCNC_tZ_Base::FillHistogramsJets(AtlHistogramTool *htool,
					      Double_t w) {
    //
    // Fill common histograms for jets with given weight
    //
    AtlJet *jet1 = (AtlJet*)fJets->At(0);
    AtlJet *jet2 = (AtlJet*)fJets->At(1);
    AtlJet *jet3 = (AtlJet*)fJets->At(2);
    if ( jet1 != 0 ) {
    htool->Fill("jets/h_jet1_Pt",  jet1->Pt(), w);
    htool->Fill("jets/h_jet1_Eta", jet1->Eta(), w);
    htool->Fill("jets/h_jet1_Phi", jet1->Phi(), w);
    }
    if ( jet2 != 0 ) {
	htool->Fill("jets/h_jet2_Pt",  jet2->Pt(), w);
	htool->Fill("jets/h_jet2_Eta", jet2->Eta(), w);
	htool->Fill("jets/h_jet2_Phi", jet2->Phi(), w);
    }
    if ( jet3 != 0 ) {
	htool->Fill("jets/h_jet3_Pt",  jet3->Pt(), w);
	htool->Fill("jets/h_jet3_Eta", jet3->Eta(), w);
	htool->Fill("jets/h_jet3_Phi", jet3->Phi(), w);
    }
    AtlJet *bjet1 = (AtlJet*)fBJets->First();
    if ( bjet1 != 0 ) {
    htool->Fill("jets/h_bjet1_Pt",  bjet1->Pt(), w);
    htool->Fill("jets/h_bjet1_Eta", bjet1->Eta(), w);
    htool->Fill("jets/h_bjet1_Phi", bjet1->Phi(), w);
    }

    htool->Fill("jets/h_jet_N",    fJets->GetEntries(), w);
    htool->Fill("jets/h_bjet_N",   fBJets->GetEntries(), w);
    
}

//____________________________________________________________________

void AtlSgTopFCNC_tZ_Base::FillHistogramsMET(AtlHistogramTool *htool,
					     Double_t w) {
    //
    // Fill common histograms for energy sums with given weight
    //
    htool->Fill("met/h_MET_mag", fMET, w);
    htool->Fill("met/h_MET_phi",
		fEvent->GetEnergySum()->MissingEt_Phi(), w);
    htool->Fill("met/h_MtW", fMtW, w); // <-- leading lepton
}

//____________________________________________________________________

void AtlSgTopFCNC_tZ_Base::FillHistogramsZ0(AtlHistogramTool *htool,
					    Double_t w,
					    const char* path,
					    HepZ0Decay *Z0cand) {
    //
    // Fill all histograms for the given Z0 candidate at the given
    // path
    //
    if ( Z0cand->IsEE() ) {
	FillHistogramsZ0Subdir(htool, w, path, "elel", Z0cand);
    } else if ( Z0cand->IsMuMu() ) {
	FillHistogramsZ0Subdir(htool, w, path, "mumu", Z0cand);
    }
    FillHistogramsZ0Subdir(htool, w, path, "all", Z0cand);
}

//____________________________________________________________________

void AtlSgTopFCNC_tZ_Base::FillHistogramsZ0Subdir(AtlHistogramTool *htool,
						  Double_t w,
						  const char* path,
						  const char* subdir,
						  HepZ0Decay *Z0cand) {
    //
    // Fill the histograms in the given subdirectory for the given Z0
    // candidate at the given path
    //
    TString dir = path;
    dir.Append("/");
    dir.Append(subdir);
    TLorentzVector p_Z = Z0cand->P();
    HepParticle *lep1 = (HepParticle*)Z0cand->GetDaughter1();
    HepParticle *lep2 = (HepParticle*)Z0cand->GetDaughter2();
    htool->Fill(dir.Data(), "h_Z_DeltaPhi", lep1->DeltaPhi(lep2),          w);
    htool->Fill(dir.Data(), "h_Z_M",        p_Z.M(),                       w);
    htool->Fill(dir.Data(), "h_Z_Chg",      lep1->Charge()+lep2->Charge(), w);
    htool->Fill(dir.Data(), "h_Z_Pt",       p_Z.Pt(),                      w);
    htool->Fill(dir.Data(), "h_Z_Eta",      p_Z.Eta(),                     w);
    htool->Fill(dir.Data(), "h_Z_Phi",      p_Z.Phi(),                     w);

    // Fill MC truth origin
    if ( fEvent->IsMC() ) {
	if ( Z0cand->IsEE() ) {
	    htool->Fill(dir.Data(), "h_el_Z1_truth_origin",
			(Int_t)(((AtlElectron*)lep1)->GetMCTruthClassifier()->GetParticleOrigin()), w);
	    htool->Fill(dir.Data(), "h_el_Z2_truth_origin",
			(Int_t)(((AtlElectron*)lep2)->GetMCTruthClassifier()->GetParticleOrigin()), w);
	} else if ( Z0cand->IsMuMu() ) {
	    htool->Fill(dir.Data(), "h_mu_Z1_truth_origin",
			(Int_t)(((AtlMuon*)lep1)->GetMCTruthClassifier()->GetParticleOrigin()), w);
	    htool->Fill(dir.Data(), "h_mu_Z2_truth_origin",
			(Int_t)(((AtlMuon*)lep2)->GetMCTruthClassifier()->GetParticleOrigin()), w);
	}
    }
}

//____________________________________________________________________

void AtlSgTopFCNC_tZ_Base::CreatePieCharts() {
    //
    // Create pie charts from particle origin histograms
    //

    // All leptons
    CreateParticleOriginPie("/NoCuts/leptons/el/h_el_truth_origin");
    CreateParticleOriginPie("/NoCuts/leptons/mu/h_mu_truth_origin");
    CreateParticleOriginPie("/PreSel/leptons/el/h_el_truth_origin");
    CreateParticleOriginPie("/PreSel/leptons/mu/h_mu_truth_origin");
    CreateParticleOriginPie("/PreTag/leptons/el/h_el_truth_origin");
    CreateParticleOriginPie("/PreTag/leptons/mu/h_mu_truth_origin");
    CreateParticleOriginPie("/AllCuts/leptons/el/h_el_truth_origin");
    CreateParticleOriginPie("/AllCuts/leptons/mu/h_mu_truth_origin");

    // Leptons from Z candidates
    CreateParticleOriginPie("/NoCuts/Z0_best/elel/h_el_Z1_truth_origin");
    CreateParticleOriginPie("/NoCuts/Z0_best/elel/h_mu_Z1_truth_origin");
    CreateParticleOriginPie("/NoCuts/Z0_best/mumu/h_el_Z1_truth_origin");
    CreateParticleOriginPie("/NoCuts/Z0_best/mumu/h_mu_Z1_truth_origin");
    CreateParticleOriginPie("/NoCuts/Z0_best/all/h_el_Z1_truth_origin");
    CreateParticleOriginPie("/NoCuts/Z0_best/all/h_mu_Z1_truth_origin");

    CreateParticleOriginPie("/NoCuts/Z0_best/elel/h_el_Z2_truth_origin");
    CreateParticleOriginPie("/NoCuts/Z0_best/elel/h_mu_Z2_truth_origin");
    CreateParticleOriginPie("/NoCuts/Z0_best/mumu/h_el_Z2_truth_origin");
    CreateParticleOriginPie("/NoCuts/Z0_best/mumu/h_mu_Z2_truth_origin");
    CreateParticleOriginPie("/NoCuts/Z0_best/all/h_el_Z2_truth_origin");
    CreateParticleOriginPie("/NoCuts/Z0_best/all/h_mu_Z2_truth_origin");
	
    CreateParticleOriginPie("/PreSel/Z0_best/elel/h_el_Z1_truth_origin");
    CreateParticleOriginPie("/PreSel/Z0_best/elel/h_mu_Z1_truth_origin");
    CreateParticleOriginPie("/PreSel/Z0_best/mumu/h_el_Z1_truth_origin");
    CreateParticleOriginPie("/PreSel/Z0_best/mumu/h_mu_Z1_truth_origin");
    CreateParticleOriginPie("/PreSel/Z0_best/all/h_el_Z1_truth_origin");
    CreateParticleOriginPie("/PreSel/Z0_best/all/h_mu_Z1_truth_origin");

    CreateParticleOriginPie("/PreSel/Z0_best/elel/h_el_Z2_truth_origin");
    CreateParticleOriginPie("/PreSel/Z0_best/elel/h_mu_Z2_truth_origin");
    CreateParticleOriginPie("/PreSel/Z0_best/mumu/h_el_Z2_truth_origin");
    CreateParticleOriginPie("/PreSel/Z0_best/mumu/h_mu_Z2_truth_origin");
    CreateParticleOriginPie("/PreSel/Z0_best/all/h_el_Z2_truth_origin");
    CreateParticleOriginPie("/PreSel/Z0_best/all/h_mu_Z2_truth_origin");
    
    CreateParticleOriginPie("/PreTag/Z0_best/elel/h_el_Z1_truth_origin");
    CreateParticleOriginPie("/PreTag/Z0_best/elel/h_mu_Z1_truth_origin");
    CreateParticleOriginPie("/PreTag/Z0_best/mumu/h_el_Z1_truth_origin");
    CreateParticleOriginPie("/PreTag/Z0_best/mumu/h_mu_Z1_truth_origin");
    CreateParticleOriginPie("/PreTag/Z0_best/all/h_el_Z1_truth_origin");
    CreateParticleOriginPie("/PreTag/Z0_best/all/h_mu_Z1_truth_origin");

    CreateParticleOriginPie("/PreTag/Z0_best/elel/h_el_Z2_truth_origin");
    CreateParticleOriginPie("/PreTag/Z0_best/elel/h_mu_Z2_truth_origin");
    CreateParticleOriginPie("/PreTag/Z0_best/mumu/h_el_Z2_truth_origin");
    CreateParticleOriginPie("/PreTag/Z0_best/mumu/h_mu_Z2_truth_origin");
    CreateParticleOriginPie("/PreTag/Z0_best/all/h_el_Z2_truth_origin");
    CreateParticleOriginPie("/PreTag/Z0_best/all/h_mu_Z2_truth_origin");
    
    CreateParticleOriginPie("/AllCuts/Z0_best/elel/h_el_Z1_truth_origin");
    CreateParticleOriginPie("/AllCuts/Z0_best/elel/h_mu_Z1_truth_origin");
    CreateParticleOriginPie("/AllCuts/Z0_best/mumu/h_el_Z1_truth_origin");
    CreateParticleOriginPie("/AllCuts/Z0_best/mumu/h_mu_Z1_truth_origin");
    CreateParticleOriginPie("/AllCuts/Z0_best/all/h_el_Z1_truth_origin");
    CreateParticleOriginPie("/AllCuts/Z0_best/all/h_mu_Z1_truth_origin");

    CreateParticleOriginPie("/AllCuts/Z0_best/elel/h_el_Z2_truth_origin");
    CreateParticleOriginPie("/AllCuts/Z0_best/elel/h_mu_Z2_truth_origin");
    CreateParticleOriginPie("/AllCuts/Z0_best/mumu/h_el_Z2_truth_origin");
    CreateParticleOriginPie("/AllCuts/Z0_best/mumu/h_mu_Z2_truth_origin");
    CreateParticleOriginPie("/AllCuts/Z0_best/all/h_el_Z2_truth_origin");
    CreateParticleOriginPie("/AllCuts/Z0_best/all/h_mu_Z2_truth_origin");
}

//____________________________________________________________________

TPie* AtlSgTopFCNC_tZ_Base::CreateParticleOriginPie(const char *HistName,
						    Int_t MaxSlices) {
    //
    // Create pi chart for the given MC truth particle origin
    // histogram for leptons (full path). The pie is stored in the
    // same folder as the histogram. If the number of non-zero bin
    // entries is larger than the given maximum number of slices for
    // the pie chart, the excess bins are collected in a slice called
    // "other".
    //

    // Get histogram
    TH1D *h = (TH1D*)fOutputFile->Get(HistName);
    if ( h == 0 ) {
	Error("CreateParticleOriginPie", "Histogram %s not found. Abort!",
	      HistName);
	gSystem->Abort(1);
    }

    // Save present working directory and cd to the given path
    TDirectory *savdir = gDirectory;
    fOutputFile->cd(gSystem->DirName(HistName));

    // Get the fractional contents for all bins and sort them 
    Double_t frac[100];
    Int_t nbins = h->GetNbinsX();
    Double_t tot = h->Integral();
    for ( Int_t i = 0; i < nbins; i++ ) {
	frac[i] = h->GetBinContent(i+1)/tot;
    }
    Int_t frac_idx[100];
    TMath::Sort(nbins, frac, frac_idx);

    // Count the non-zero bin entries
    Int_t nonzero = 0;
    for ( Int_t i = 0; i < nbins; i++ ) {
	if ( frac[frac_idx[i]]  == 0. ) {
	    nonzero = i;
	    break;
	}
    }

    // Set the no. of slices
    Int_t nslices = nonzero;
    Bool_t other = kFALSE;
    if ( nonzero > MaxSlices ) {
	nslices = MaxSlices + 1;
	other = kTRUE;
    }

    // Create and fill pie chart
    Double_t frac_other = 0.;
    TString *pname = new TString(h->GetName());
    pname->ReplaceAll("h_", "p_");
    pname->ReplaceAll("tp_", "th_");
    TPie *pie = new TPie(pname->Data(), h->GetTitle(), nslices);
    for ( Int_t i = 0; i < nonzero; i++ ) {
	if ( i < MaxSlices ) {
	    pie->SetEntryVal(i, frac[frac_idx[i]]);
	    pie->SetEntryLabel(i, h->GetXaxis()->GetBinLabel(frac_idx[i]+1));
	    pie->SetEntryFillColor(i, 2+i);
	    pie->SetEntryLineColor(i, 2+i);
	} else {
	    frac_other += frac[frac_idx[i]];
	}
    }
    if ( other ) {
	pie->SetEntryVal(nslices-1, frac_other);
	pie->SetEntryLabel(nslices-1, "Other");
	pie->SetEntryFillColor(nslices-1, 1+nslices);
	pie->SetEntryLineColor(nslices-1, 1+nslices);
    }
    pie->SetRadius(0.25);
    pie->SetTextFont(42);
    pie->SetTextSize(0.03);
    pie->SetLabelFormat("%txt %perc");

    // Save pie chart and restore pwd
    pie->Write();
    savdir->cd();

    return pie;
}

//____________________________________________________________________

void AtlSgTopFCNC_tZ_Base::SetParticleOriginHistBinLabels(TH1D *h) {
    //
    // Set alphanumeric bin labels for the x axis of the given
    // particle origin histogram
    //
    for ( Int_t i = 0; i < AtlMCTruthClassifier::kNumParticleOrigin; i++ ) {
	h->GetXaxis()->SetBinLabel(i+1,
				   AtlMCTruthClassifier::GetParticleOriginName((AtlMCTruthClassifier::EParticleOrigin)i));
    }
}

//____________________________________________________________________

void AtlSgTopFCNC_tZ_Base::ComputeDecayAngleE(HepParticle *mother,
					      HepParticle *daughter,
					      Double_t &DecayAngle,
					      Double_t &E) {
    //
    // Compute the decay angle of the daughter particle in the parent
    // rest frame w.r.t. the direction of the parent particle in the
    // lab frame. Compute also the energy of the daughter in the
    // mother's rest frame.
    //
    TLorentzVector p_mother = mother->P();
    TVector3 boost = -p_mother.BoostVector();
    TLorentzVector p_daughter_rf = daughter->P();
    p_daughter_rf.Boost(boost);
    DecayAngle = p_mother.Angle(p_daughter_rf.Vect());
    E = p_daughter_rf.E();
}
 AtlSgTopFCNC_tZ_Base.cxx:1
 AtlSgTopFCNC_tZ_Base.cxx:2
 AtlSgTopFCNC_tZ_Base.cxx:3
 AtlSgTopFCNC_tZ_Base.cxx:4
 AtlSgTopFCNC_tZ_Base.cxx:5
 AtlSgTopFCNC_tZ_Base.cxx:6
 AtlSgTopFCNC_tZ_Base.cxx:7
 AtlSgTopFCNC_tZ_Base.cxx:8
 AtlSgTopFCNC_tZ_Base.cxx:9
 AtlSgTopFCNC_tZ_Base.cxx:10
 AtlSgTopFCNC_tZ_Base.cxx:11
 AtlSgTopFCNC_tZ_Base.cxx:12
 AtlSgTopFCNC_tZ_Base.cxx:13
 AtlSgTopFCNC_tZ_Base.cxx:14
 AtlSgTopFCNC_tZ_Base.cxx:15
 AtlSgTopFCNC_tZ_Base.cxx:16
 AtlSgTopFCNC_tZ_Base.cxx:17
 AtlSgTopFCNC_tZ_Base.cxx:18
 AtlSgTopFCNC_tZ_Base.cxx:19
 AtlSgTopFCNC_tZ_Base.cxx:20
 AtlSgTopFCNC_tZ_Base.cxx:21
 AtlSgTopFCNC_tZ_Base.cxx:22
 AtlSgTopFCNC_tZ_Base.cxx:23
 AtlSgTopFCNC_tZ_Base.cxx:24
 AtlSgTopFCNC_tZ_Base.cxx:25
 AtlSgTopFCNC_tZ_Base.cxx:26
 AtlSgTopFCNC_tZ_Base.cxx:27
 AtlSgTopFCNC_tZ_Base.cxx:28
 AtlSgTopFCNC_tZ_Base.cxx:29
 AtlSgTopFCNC_tZ_Base.cxx:30
 AtlSgTopFCNC_tZ_Base.cxx:31
 AtlSgTopFCNC_tZ_Base.cxx:32
 AtlSgTopFCNC_tZ_Base.cxx:33
 AtlSgTopFCNC_tZ_Base.cxx:34
 AtlSgTopFCNC_tZ_Base.cxx:35
 AtlSgTopFCNC_tZ_Base.cxx:36
 AtlSgTopFCNC_tZ_Base.cxx:37
 AtlSgTopFCNC_tZ_Base.cxx:38
 AtlSgTopFCNC_tZ_Base.cxx:39
 AtlSgTopFCNC_tZ_Base.cxx:40
 AtlSgTopFCNC_tZ_Base.cxx:41
 AtlSgTopFCNC_tZ_Base.cxx:42
 AtlSgTopFCNC_tZ_Base.cxx:43
 AtlSgTopFCNC_tZ_Base.cxx:44
 AtlSgTopFCNC_tZ_Base.cxx:45
 AtlSgTopFCNC_tZ_Base.cxx:46
 AtlSgTopFCNC_tZ_Base.cxx:47
 AtlSgTopFCNC_tZ_Base.cxx:48
 AtlSgTopFCNC_tZ_Base.cxx:49
 AtlSgTopFCNC_tZ_Base.cxx:50
 AtlSgTopFCNC_tZ_Base.cxx:51
 AtlSgTopFCNC_tZ_Base.cxx:52
 AtlSgTopFCNC_tZ_Base.cxx:53
 AtlSgTopFCNC_tZ_Base.cxx:54
 AtlSgTopFCNC_tZ_Base.cxx:55
 AtlSgTopFCNC_tZ_Base.cxx:56
 AtlSgTopFCNC_tZ_Base.cxx:57
 AtlSgTopFCNC_tZ_Base.cxx:58
 AtlSgTopFCNC_tZ_Base.cxx:59
 AtlSgTopFCNC_tZ_Base.cxx:60
 AtlSgTopFCNC_tZ_Base.cxx:61
 AtlSgTopFCNC_tZ_Base.cxx:62
 AtlSgTopFCNC_tZ_Base.cxx:63
 AtlSgTopFCNC_tZ_Base.cxx:64
 AtlSgTopFCNC_tZ_Base.cxx:65
 AtlSgTopFCNC_tZ_Base.cxx:66
 AtlSgTopFCNC_tZ_Base.cxx:67
 AtlSgTopFCNC_tZ_Base.cxx:68
 AtlSgTopFCNC_tZ_Base.cxx:69
 AtlSgTopFCNC_tZ_Base.cxx:70
 AtlSgTopFCNC_tZ_Base.cxx:71
 AtlSgTopFCNC_tZ_Base.cxx:72
 AtlSgTopFCNC_tZ_Base.cxx:73
 AtlSgTopFCNC_tZ_Base.cxx:74
 AtlSgTopFCNC_tZ_Base.cxx:75
 AtlSgTopFCNC_tZ_Base.cxx:76
 AtlSgTopFCNC_tZ_Base.cxx:77
 AtlSgTopFCNC_tZ_Base.cxx:78
 AtlSgTopFCNC_tZ_Base.cxx:79
 AtlSgTopFCNC_tZ_Base.cxx:80
 AtlSgTopFCNC_tZ_Base.cxx:81
 AtlSgTopFCNC_tZ_Base.cxx:82
 AtlSgTopFCNC_tZ_Base.cxx:83
 AtlSgTopFCNC_tZ_Base.cxx:84
 AtlSgTopFCNC_tZ_Base.cxx:85
 AtlSgTopFCNC_tZ_Base.cxx:86
 AtlSgTopFCNC_tZ_Base.cxx:87
 AtlSgTopFCNC_tZ_Base.cxx:88
 AtlSgTopFCNC_tZ_Base.cxx:89
 AtlSgTopFCNC_tZ_Base.cxx:90
 AtlSgTopFCNC_tZ_Base.cxx:91
 AtlSgTopFCNC_tZ_Base.cxx:92
 AtlSgTopFCNC_tZ_Base.cxx:93
 AtlSgTopFCNC_tZ_Base.cxx:94
 AtlSgTopFCNC_tZ_Base.cxx:95
 AtlSgTopFCNC_tZ_Base.cxx:96
 AtlSgTopFCNC_tZ_Base.cxx:97
 AtlSgTopFCNC_tZ_Base.cxx:98
 AtlSgTopFCNC_tZ_Base.cxx:99
 AtlSgTopFCNC_tZ_Base.cxx:100
 AtlSgTopFCNC_tZ_Base.cxx:101
 AtlSgTopFCNC_tZ_Base.cxx:102
 AtlSgTopFCNC_tZ_Base.cxx:103
 AtlSgTopFCNC_tZ_Base.cxx:104
 AtlSgTopFCNC_tZ_Base.cxx:105
 AtlSgTopFCNC_tZ_Base.cxx:106
 AtlSgTopFCNC_tZ_Base.cxx:107
 AtlSgTopFCNC_tZ_Base.cxx:108
 AtlSgTopFCNC_tZ_Base.cxx:109
 AtlSgTopFCNC_tZ_Base.cxx:110
 AtlSgTopFCNC_tZ_Base.cxx:111
 AtlSgTopFCNC_tZ_Base.cxx:112
 AtlSgTopFCNC_tZ_Base.cxx:113
 AtlSgTopFCNC_tZ_Base.cxx:114
 AtlSgTopFCNC_tZ_Base.cxx:115
 AtlSgTopFCNC_tZ_Base.cxx:116
 AtlSgTopFCNC_tZ_Base.cxx:117
 AtlSgTopFCNC_tZ_Base.cxx:118
 AtlSgTopFCNC_tZ_Base.cxx:119
 AtlSgTopFCNC_tZ_Base.cxx:120
 AtlSgTopFCNC_tZ_Base.cxx:121
 AtlSgTopFCNC_tZ_Base.cxx:122
 AtlSgTopFCNC_tZ_Base.cxx:123
 AtlSgTopFCNC_tZ_Base.cxx:124
 AtlSgTopFCNC_tZ_Base.cxx:125
 AtlSgTopFCNC_tZ_Base.cxx:126
 AtlSgTopFCNC_tZ_Base.cxx:127
 AtlSgTopFCNC_tZ_Base.cxx:128
 AtlSgTopFCNC_tZ_Base.cxx:129
 AtlSgTopFCNC_tZ_Base.cxx:130
 AtlSgTopFCNC_tZ_Base.cxx:131
 AtlSgTopFCNC_tZ_Base.cxx:132
 AtlSgTopFCNC_tZ_Base.cxx:133
 AtlSgTopFCNC_tZ_Base.cxx:134
 AtlSgTopFCNC_tZ_Base.cxx:135
 AtlSgTopFCNC_tZ_Base.cxx:136
 AtlSgTopFCNC_tZ_Base.cxx:137
 AtlSgTopFCNC_tZ_Base.cxx:138
 AtlSgTopFCNC_tZ_Base.cxx:139
 AtlSgTopFCNC_tZ_Base.cxx:140
 AtlSgTopFCNC_tZ_Base.cxx:141
 AtlSgTopFCNC_tZ_Base.cxx:142
 AtlSgTopFCNC_tZ_Base.cxx:143
 AtlSgTopFCNC_tZ_Base.cxx:144
 AtlSgTopFCNC_tZ_Base.cxx:145
 AtlSgTopFCNC_tZ_Base.cxx:146
 AtlSgTopFCNC_tZ_Base.cxx:147
 AtlSgTopFCNC_tZ_Base.cxx:148
 AtlSgTopFCNC_tZ_Base.cxx:149
 AtlSgTopFCNC_tZ_Base.cxx:150
 AtlSgTopFCNC_tZ_Base.cxx:151
 AtlSgTopFCNC_tZ_Base.cxx:152
 AtlSgTopFCNC_tZ_Base.cxx:153
 AtlSgTopFCNC_tZ_Base.cxx:154
 AtlSgTopFCNC_tZ_Base.cxx:155
 AtlSgTopFCNC_tZ_Base.cxx:156
 AtlSgTopFCNC_tZ_Base.cxx:157
 AtlSgTopFCNC_tZ_Base.cxx:158
 AtlSgTopFCNC_tZ_Base.cxx:159
 AtlSgTopFCNC_tZ_Base.cxx:160
 AtlSgTopFCNC_tZ_Base.cxx:161
 AtlSgTopFCNC_tZ_Base.cxx:162
 AtlSgTopFCNC_tZ_Base.cxx:163
 AtlSgTopFCNC_tZ_Base.cxx:164
 AtlSgTopFCNC_tZ_Base.cxx:165
 AtlSgTopFCNC_tZ_Base.cxx:166
 AtlSgTopFCNC_tZ_Base.cxx:167
 AtlSgTopFCNC_tZ_Base.cxx:168
 AtlSgTopFCNC_tZ_Base.cxx:169
 AtlSgTopFCNC_tZ_Base.cxx:170
 AtlSgTopFCNC_tZ_Base.cxx:171
 AtlSgTopFCNC_tZ_Base.cxx:172
 AtlSgTopFCNC_tZ_Base.cxx:173
 AtlSgTopFCNC_tZ_Base.cxx:174
 AtlSgTopFCNC_tZ_Base.cxx:175
 AtlSgTopFCNC_tZ_Base.cxx:176
 AtlSgTopFCNC_tZ_Base.cxx:177
 AtlSgTopFCNC_tZ_Base.cxx:178
 AtlSgTopFCNC_tZ_Base.cxx:179
 AtlSgTopFCNC_tZ_Base.cxx:180
 AtlSgTopFCNC_tZ_Base.cxx:181
 AtlSgTopFCNC_tZ_Base.cxx:182
 AtlSgTopFCNC_tZ_Base.cxx:183
 AtlSgTopFCNC_tZ_Base.cxx:184
 AtlSgTopFCNC_tZ_Base.cxx:185
 AtlSgTopFCNC_tZ_Base.cxx:186
 AtlSgTopFCNC_tZ_Base.cxx:187
 AtlSgTopFCNC_tZ_Base.cxx:188
 AtlSgTopFCNC_tZ_Base.cxx:189
 AtlSgTopFCNC_tZ_Base.cxx:190
 AtlSgTopFCNC_tZ_Base.cxx:191
 AtlSgTopFCNC_tZ_Base.cxx:192
 AtlSgTopFCNC_tZ_Base.cxx:193
 AtlSgTopFCNC_tZ_Base.cxx:194
 AtlSgTopFCNC_tZ_Base.cxx:195
 AtlSgTopFCNC_tZ_Base.cxx:196
 AtlSgTopFCNC_tZ_Base.cxx:197
 AtlSgTopFCNC_tZ_Base.cxx:198
 AtlSgTopFCNC_tZ_Base.cxx:199
 AtlSgTopFCNC_tZ_Base.cxx:200
 AtlSgTopFCNC_tZ_Base.cxx:201
 AtlSgTopFCNC_tZ_Base.cxx:202
 AtlSgTopFCNC_tZ_Base.cxx:203
 AtlSgTopFCNC_tZ_Base.cxx:204
 AtlSgTopFCNC_tZ_Base.cxx:205
 AtlSgTopFCNC_tZ_Base.cxx:206
 AtlSgTopFCNC_tZ_Base.cxx:207
 AtlSgTopFCNC_tZ_Base.cxx:208
 AtlSgTopFCNC_tZ_Base.cxx:209
 AtlSgTopFCNC_tZ_Base.cxx:210
 AtlSgTopFCNC_tZ_Base.cxx:211
 AtlSgTopFCNC_tZ_Base.cxx:212
 AtlSgTopFCNC_tZ_Base.cxx:213
 AtlSgTopFCNC_tZ_Base.cxx:214
 AtlSgTopFCNC_tZ_Base.cxx:215
 AtlSgTopFCNC_tZ_Base.cxx:216
 AtlSgTopFCNC_tZ_Base.cxx:217
 AtlSgTopFCNC_tZ_Base.cxx:218
 AtlSgTopFCNC_tZ_Base.cxx:219
 AtlSgTopFCNC_tZ_Base.cxx:220
 AtlSgTopFCNC_tZ_Base.cxx:221
 AtlSgTopFCNC_tZ_Base.cxx:222
 AtlSgTopFCNC_tZ_Base.cxx:223
 AtlSgTopFCNC_tZ_Base.cxx:224
 AtlSgTopFCNC_tZ_Base.cxx:225
 AtlSgTopFCNC_tZ_Base.cxx:226
 AtlSgTopFCNC_tZ_Base.cxx:227
 AtlSgTopFCNC_tZ_Base.cxx:228
 AtlSgTopFCNC_tZ_Base.cxx:229
 AtlSgTopFCNC_tZ_Base.cxx:230
 AtlSgTopFCNC_tZ_Base.cxx:231
 AtlSgTopFCNC_tZ_Base.cxx:232
 AtlSgTopFCNC_tZ_Base.cxx:233
 AtlSgTopFCNC_tZ_Base.cxx:234
 AtlSgTopFCNC_tZ_Base.cxx:235
 AtlSgTopFCNC_tZ_Base.cxx:236
 AtlSgTopFCNC_tZ_Base.cxx:237
 AtlSgTopFCNC_tZ_Base.cxx:238
 AtlSgTopFCNC_tZ_Base.cxx:239
 AtlSgTopFCNC_tZ_Base.cxx:240
 AtlSgTopFCNC_tZ_Base.cxx:241
 AtlSgTopFCNC_tZ_Base.cxx:242
 AtlSgTopFCNC_tZ_Base.cxx:243
 AtlSgTopFCNC_tZ_Base.cxx:244
 AtlSgTopFCNC_tZ_Base.cxx:245
 AtlSgTopFCNC_tZ_Base.cxx:246
 AtlSgTopFCNC_tZ_Base.cxx:247
 AtlSgTopFCNC_tZ_Base.cxx:248
 AtlSgTopFCNC_tZ_Base.cxx:249
 AtlSgTopFCNC_tZ_Base.cxx:250
 AtlSgTopFCNC_tZ_Base.cxx:251
 AtlSgTopFCNC_tZ_Base.cxx:252
 AtlSgTopFCNC_tZ_Base.cxx:253
 AtlSgTopFCNC_tZ_Base.cxx:254
 AtlSgTopFCNC_tZ_Base.cxx:255
 AtlSgTopFCNC_tZ_Base.cxx:256
 AtlSgTopFCNC_tZ_Base.cxx:257
 AtlSgTopFCNC_tZ_Base.cxx:258
 AtlSgTopFCNC_tZ_Base.cxx:259
 AtlSgTopFCNC_tZ_Base.cxx:260
 AtlSgTopFCNC_tZ_Base.cxx:261
 AtlSgTopFCNC_tZ_Base.cxx:262
 AtlSgTopFCNC_tZ_Base.cxx:263
 AtlSgTopFCNC_tZ_Base.cxx:264
 AtlSgTopFCNC_tZ_Base.cxx:265
 AtlSgTopFCNC_tZ_Base.cxx:266
 AtlSgTopFCNC_tZ_Base.cxx:267
 AtlSgTopFCNC_tZ_Base.cxx:268
 AtlSgTopFCNC_tZ_Base.cxx:269
 AtlSgTopFCNC_tZ_Base.cxx:270
 AtlSgTopFCNC_tZ_Base.cxx:271
 AtlSgTopFCNC_tZ_Base.cxx:272
 AtlSgTopFCNC_tZ_Base.cxx:273
 AtlSgTopFCNC_tZ_Base.cxx:274
 AtlSgTopFCNC_tZ_Base.cxx:275
 AtlSgTopFCNC_tZ_Base.cxx:276
 AtlSgTopFCNC_tZ_Base.cxx:277
 AtlSgTopFCNC_tZ_Base.cxx:278
 AtlSgTopFCNC_tZ_Base.cxx:279
 AtlSgTopFCNC_tZ_Base.cxx:280
 AtlSgTopFCNC_tZ_Base.cxx:281
 AtlSgTopFCNC_tZ_Base.cxx:282
 AtlSgTopFCNC_tZ_Base.cxx:283
 AtlSgTopFCNC_tZ_Base.cxx:284
 AtlSgTopFCNC_tZ_Base.cxx:285
 AtlSgTopFCNC_tZ_Base.cxx:286
 AtlSgTopFCNC_tZ_Base.cxx:287
 AtlSgTopFCNC_tZ_Base.cxx:288
 AtlSgTopFCNC_tZ_Base.cxx:289
 AtlSgTopFCNC_tZ_Base.cxx:290
 AtlSgTopFCNC_tZ_Base.cxx:291
 AtlSgTopFCNC_tZ_Base.cxx:292
 AtlSgTopFCNC_tZ_Base.cxx:293
 AtlSgTopFCNC_tZ_Base.cxx:294
 AtlSgTopFCNC_tZ_Base.cxx:295
 AtlSgTopFCNC_tZ_Base.cxx:296
 AtlSgTopFCNC_tZ_Base.cxx:297
 AtlSgTopFCNC_tZ_Base.cxx:298
 AtlSgTopFCNC_tZ_Base.cxx:299
 AtlSgTopFCNC_tZ_Base.cxx:300
 AtlSgTopFCNC_tZ_Base.cxx:301
 AtlSgTopFCNC_tZ_Base.cxx:302
 AtlSgTopFCNC_tZ_Base.cxx:303
 AtlSgTopFCNC_tZ_Base.cxx:304
 AtlSgTopFCNC_tZ_Base.cxx:305
 AtlSgTopFCNC_tZ_Base.cxx:306
 AtlSgTopFCNC_tZ_Base.cxx:307
 AtlSgTopFCNC_tZ_Base.cxx:308
 AtlSgTopFCNC_tZ_Base.cxx:309
 AtlSgTopFCNC_tZ_Base.cxx:310
 AtlSgTopFCNC_tZ_Base.cxx:311
 AtlSgTopFCNC_tZ_Base.cxx:312
 AtlSgTopFCNC_tZ_Base.cxx:313
 AtlSgTopFCNC_tZ_Base.cxx:314
 AtlSgTopFCNC_tZ_Base.cxx:315
 AtlSgTopFCNC_tZ_Base.cxx:316
 AtlSgTopFCNC_tZ_Base.cxx:317
 AtlSgTopFCNC_tZ_Base.cxx:318
 AtlSgTopFCNC_tZ_Base.cxx:319
 AtlSgTopFCNC_tZ_Base.cxx:320
 AtlSgTopFCNC_tZ_Base.cxx:321
 AtlSgTopFCNC_tZ_Base.cxx:322
 AtlSgTopFCNC_tZ_Base.cxx:323
 AtlSgTopFCNC_tZ_Base.cxx:324
 AtlSgTopFCNC_tZ_Base.cxx:325
 AtlSgTopFCNC_tZ_Base.cxx:326
 AtlSgTopFCNC_tZ_Base.cxx:327
 AtlSgTopFCNC_tZ_Base.cxx:328
 AtlSgTopFCNC_tZ_Base.cxx:329
 AtlSgTopFCNC_tZ_Base.cxx:330
 AtlSgTopFCNC_tZ_Base.cxx:331
 AtlSgTopFCNC_tZ_Base.cxx:332
 AtlSgTopFCNC_tZ_Base.cxx:333
 AtlSgTopFCNC_tZ_Base.cxx:334
 AtlSgTopFCNC_tZ_Base.cxx:335
 AtlSgTopFCNC_tZ_Base.cxx:336
 AtlSgTopFCNC_tZ_Base.cxx:337
 AtlSgTopFCNC_tZ_Base.cxx:338
 AtlSgTopFCNC_tZ_Base.cxx:339
 AtlSgTopFCNC_tZ_Base.cxx:340
 AtlSgTopFCNC_tZ_Base.cxx:341
 AtlSgTopFCNC_tZ_Base.cxx:342
 AtlSgTopFCNC_tZ_Base.cxx:343
 AtlSgTopFCNC_tZ_Base.cxx:344
 AtlSgTopFCNC_tZ_Base.cxx:345
 AtlSgTopFCNC_tZ_Base.cxx:346
 AtlSgTopFCNC_tZ_Base.cxx:347
 AtlSgTopFCNC_tZ_Base.cxx:348
 AtlSgTopFCNC_tZ_Base.cxx:349
 AtlSgTopFCNC_tZ_Base.cxx:350
 AtlSgTopFCNC_tZ_Base.cxx:351
 AtlSgTopFCNC_tZ_Base.cxx:352
 AtlSgTopFCNC_tZ_Base.cxx:353
 AtlSgTopFCNC_tZ_Base.cxx:354
 AtlSgTopFCNC_tZ_Base.cxx:355
 AtlSgTopFCNC_tZ_Base.cxx:356
 AtlSgTopFCNC_tZ_Base.cxx:357
 AtlSgTopFCNC_tZ_Base.cxx:358
 AtlSgTopFCNC_tZ_Base.cxx:359
 AtlSgTopFCNC_tZ_Base.cxx:360
 AtlSgTopFCNC_tZ_Base.cxx:361
 AtlSgTopFCNC_tZ_Base.cxx:362
 AtlSgTopFCNC_tZ_Base.cxx:363
 AtlSgTopFCNC_tZ_Base.cxx:364
 AtlSgTopFCNC_tZ_Base.cxx:365
 AtlSgTopFCNC_tZ_Base.cxx:366
 AtlSgTopFCNC_tZ_Base.cxx:367
 AtlSgTopFCNC_tZ_Base.cxx:368
 AtlSgTopFCNC_tZ_Base.cxx:369
 AtlSgTopFCNC_tZ_Base.cxx:370
 AtlSgTopFCNC_tZ_Base.cxx:371
 AtlSgTopFCNC_tZ_Base.cxx:372
 AtlSgTopFCNC_tZ_Base.cxx:373
 AtlSgTopFCNC_tZ_Base.cxx:374
 AtlSgTopFCNC_tZ_Base.cxx:375
 AtlSgTopFCNC_tZ_Base.cxx:376
 AtlSgTopFCNC_tZ_Base.cxx:377
 AtlSgTopFCNC_tZ_Base.cxx:378
 AtlSgTopFCNC_tZ_Base.cxx:379
 AtlSgTopFCNC_tZ_Base.cxx:380
 AtlSgTopFCNC_tZ_Base.cxx:381
 AtlSgTopFCNC_tZ_Base.cxx:382
 AtlSgTopFCNC_tZ_Base.cxx:383
 AtlSgTopFCNC_tZ_Base.cxx:384
 AtlSgTopFCNC_tZ_Base.cxx:385
 AtlSgTopFCNC_tZ_Base.cxx:386
 AtlSgTopFCNC_tZ_Base.cxx:387
 AtlSgTopFCNC_tZ_Base.cxx:388
 AtlSgTopFCNC_tZ_Base.cxx:389
 AtlSgTopFCNC_tZ_Base.cxx:390
 AtlSgTopFCNC_tZ_Base.cxx:391
 AtlSgTopFCNC_tZ_Base.cxx:392
 AtlSgTopFCNC_tZ_Base.cxx:393
 AtlSgTopFCNC_tZ_Base.cxx:394
 AtlSgTopFCNC_tZ_Base.cxx:395
 AtlSgTopFCNC_tZ_Base.cxx:396
 AtlSgTopFCNC_tZ_Base.cxx:397
 AtlSgTopFCNC_tZ_Base.cxx:398
 AtlSgTopFCNC_tZ_Base.cxx:399
 AtlSgTopFCNC_tZ_Base.cxx:400
 AtlSgTopFCNC_tZ_Base.cxx:401
 AtlSgTopFCNC_tZ_Base.cxx:402
 AtlSgTopFCNC_tZ_Base.cxx:403
 AtlSgTopFCNC_tZ_Base.cxx:404
 AtlSgTopFCNC_tZ_Base.cxx:405
 AtlSgTopFCNC_tZ_Base.cxx:406
 AtlSgTopFCNC_tZ_Base.cxx:407
 AtlSgTopFCNC_tZ_Base.cxx:408
 AtlSgTopFCNC_tZ_Base.cxx:409
 AtlSgTopFCNC_tZ_Base.cxx:410
 AtlSgTopFCNC_tZ_Base.cxx:411
 AtlSgTopFCNC_tZ_Base.cxx:412
 AtlSgTopFCNC_tZ_Base.cxx:413
 AtlSgTopFCNC_tZ_Base.cxx:414
 AtlSgTopFCNC_tZ_Base.cxx:415
 AtlSgTopFCNC_tZ_Base.cxx:416
 AtlSgTopFCNC_tZ_Base.cxx:417
 AtlSgTopFCNC_tZ_Base.cxx:418
 AtlSgTopFCNC_tZ_Base.cxx:419
 AtlSgTopFCNC_tZ_Base.cxx:420
 AtlSgTopFCNC_tZ_Base.cxx:421
 AtlSgTopFCNC_tZ_Base.cxx:422
 AtlSgTopFCNC_tZ_Base.cxx:423
 AtlSgTopFCNC_tZ_Base.cxx:424
 AtlSgTopFCNC_tZ_Base.cxx:425
 AtlSgTopFCNC_tZ_Base.cxx:426
 AtlSgTopFCNC_tZ_Base.cxx:427
 AtlSgTopFCNC_tZ_Base.cxx:428
 AtlSgTopFCNC_tZ_Base.cxx:429
 AtlSgTopFCNC_tZ_Base.cxx:430
 AtlSgTopFCNC_tZ_Base.cxx:431
 AtlSgTopFCNC_tZ_Base.cxx:432
 AtlSgTopFCNC_tZ_Base.cxx:433
 AtlSgTopFCNC_tZ_Base.cxx:434
 AtlSgTopFCNC_tZ_Base.cxx:435
 AtlSgTopFCNC_tZ_Base.cxx:436
 AtlSgTopFCNC_tZ_Base.cxx:437
 AtlSgTopFCNC_tZ_Base.cxx:438
 AtlSgTopFCNC_tZ_Base.cxx:439
 AtlSgTopFCNC_tZ_Base.cxx:440
 AtlSgTopFCNC_tZ_Base.cxx:441
 AtlSgTopFCNC_tZ_Base.cxx:442
 AtlSgTopFCNC_tZ_Base.cxx:443
 AtlSgTopFCNC_tZ_Base.cxx:444
 AtlSgTopFCNC_tZ_Base.cxx:445
 AtlSgTopFCNC_tZ_Base.cxx:446
 AtlSgTopFCNC_tZ_Base.cxx:447
 AtlSgTopFCNC_tZ_Base.cxx:448
 AtlSgTopFCNC_tZ_Base.cxx:449
 AtlSgTopFCNC_tZ_Base.cxx:450
 AtlSgTopFCNC_tZ_Base.cxx:451
 AtlSgTopFCNC_tZ_Base.cxx:452
 AtlSgTopFCNC_tZ_Base.cxx:453
 AtlSgTopFCNC_tZ_Base.cxx:454
 AtlSgTopFCNC_tZ_Base.cxx:455
 AtlSgTopFCNC_tZ_Base.cxx:456
 AtlSgTopFCNC_tZ_Base.cxx:457
 AtlSgTopFCNC_tZ_Base.cxx:458
 AtlSgTopFCNC_tZ_Base.cxx:459
 AtlSgTopFCNC_tZ_Base.cxx:460
 AtlSgTopFCNC_tZ_Base.cxx:461
 AtlSgTopFCNC_tZ_Base.cxx:462
 AtlSgTopFCNC_tZ_Base.cxx:463
 AtlSgTopFCNC_tZ_Base.cxx:464
 AtlSgTopFCNC_tZ_Base.cxx:465
 AtlSgTopFCNC_tZ_Base.cxx:466
 AtlSgTopFCNC_tZ_Base.cxx:467
 AtlSgTopFCNC_tZ_Base.cxx:468
 AtlSgTopFCNC_tZ_Base.cxx:469
 AtlSgTopFCNC_tZ_Base.cxx:470
 AtlSgTopFCNC_tZ_Base.cxx:471
 AtlSgTopFCNC_tZ_Base.cxx:472
 AtlSgTopFCNC_tZ_Base.cxx:473
 AtlSgTopFCNC_tZ_Base.cxx:474
 AtlSgTopFCNC_tZ_Base.cxx:475
 AtlSgTopFCNC_tZ_Base.cxx:476
 AtlSgTopFCNC_tZ_Base.cxx:477
 AtlSgTopFCNC_tZ_Base.cxx:478
 AtlSgTopFCNC_tZ_Base.cxx:479
 AtlSgTopFCNC_tZ_Base.cxx:480
 AtlSgTopFCNC_tZ_Base.cxx:481
 AtlSgTopFCNC_tZ_Base.cxx:482
 AtlSgTopFCNC_tZ_Base.cxx:483
 AtlSgTopFCNC_tZ_Base.cxx:484
 AtlSgTopFCNC_tZ_Base.cxx:485
 AtlSgTopFCNC_tZ_Base.cxx:486
 AtlSgTopFCNC_tZ_Base.cxx:487
 AtlSgTopFCNC_tZ_Base.cxx:488
 AtlSgTopFCNC_tZ_Base.cxx:489
 AtlSgTopFCNC_tZ_Base.cxx:490
 AtlSgTopFCNC_tZ_Base.cxx:491
 AtlSgTopFCNC_tZ_Base.cxx:492
 AtlSgTopFCNC_tZ_Base.cxx:493
 AtlSgTopFCNC_tZ_Base.cxx:494
 AtlSgTopFCNC_tZ_Base.cxx:495
 AtlSgTopFCNC_tZ_Base.cxx:496
 AtlSgTopFCNC_tZ_Base.cxx:497
 AtlSgTopFCNC_tZ_Base.cxx:498
 AtlSgTopFCNC_tZ_Base.cxx:499
 AtlSgTopFCNC_tZ_Base.cxx:500
 AtlSgTopFCNC_tZ_Base.cxx:501
 AtlSgTopFCNC_tZ_Base.cxx:502
 AtlSgTopFCNC_tZ_Base.cxx:503
 AtlSgTopFCNC_tZ_Base.cxx:504
 AtlSgTopFCNC_tZ_Base.cxx:505
 AtlSgTopFCNC_tZ_Base.cxx:506
 AtlSgTopFCNC_tZ_Base.cxx:507
 AtlSgTopFCNC_tZ_Base.cxx:508
 AtlSgTopFCNC_tZ_Base.cxx:509
 AtlSgTopFCNC_tZ_Base.cxx:510
 AtlSgTopFCNC_tZ_Base.cxx:511
 AtlSgTopFCNC_tZ_Base.cxx:512
 AtlSgTopFCNC_tZ_Base.cxx:513
 AtlSgTopFCNC_tZ_Base.cxx:514
 AtlSgTopFCNC_tZ_Base.cxx:515
 AtlSgTopFCNC_tZ_Base.cxx:516
 AtlSgTopFCNC_tZ_Base.cxx:517
 AtlSgTopFCNC_tZ_Base.cxx:518
 AtlSgTopFCNC_tZ_Base.cxx:519
 AtlSgTopFCNC_tZ_Base.cxx:520
 AtlSgTopFCNC_tZ_Base.cxx:521
 AtlSgTopFCNC_tZ_Base.cxx:522
 AtlSgTopFCNC_tZ_Base.cxx:523
 AtlSgTopFCNC_tZ_Base.cxx:524
 AtlSgTopFCNC_tZ_Base.cxx:525
 AtlSgTopFCNC_tZ_Base.cxx:526
 AtlSgTopFCNC_tZ_Base.cxx:527
 AtlSgTopFCNC_tZ_Base.cxx:528
 AtlSgTopFCNC_tZ_Base.cxx:529
 AtlSgTopFCNC_tZ_Base.cxx:530
 AtlSgTopFCNC_tZ_Base.cxx:531
 AtlSgTopFCNC_tZ_Base.cxx:532
 AtlSgTopFCNC_tZ_Base.cxx:533
 AtlSgTopFCNC_tZ_Base.cxx:534
 AtlSgTopFCNC_tZ_Base.cxx:535
 AtlSgTopFCNC_tZ_Base.cxx:536
 AtlSgTopFCNC_tZ_Base.cxx:537
 AtlSgTopFCNC_tZ_Base.cxx:538
 AtlSgTopFCNC_tZ_Base.cxx:539
 AtlSgTopFCNC_tZ_Base.cxx:540
 AtlSgTopFCNC_tZ_Base.cxx:541
 AtlSgTopFCNC_tZ_Base.cxx:542
 AtlSgTopFCNC_tZ_Base.cxx:543
 AtlSgTopFCNC_tZ_Base.cxx:544
 AtlSgTopFCNC_tZ_Base.cxx:545
 AtlSgTopFCNC_tZ_Base.cxx:546
 AtlSgTopFCNC_tZ_Base.cxx:547
 AtlSgTopFCNC_tZ_Base.cxx:548
 AtlSgTopFCNC_tZ_Base.cxx:549
 AtlSgTopFCNC_tZ_Base.cxx:550
 AtlSgTopFCNC_tZ_Base.cxx:551
 AtlSgTopFCNC_tZ_Base.cxx:552
 AtlSgTopFCNC_tZ_Base.cxx:553
 AtlSgTopFCNC_tZ_Base.cxx:554
 AtlSgTopFCNC_tZ_Base.cxx:555
 AtlSgTopFCNC_tZ_Base.cxx:556
 AtlSgTopFCNC_tZ_Base.cxx:557
 AtlSgTopFCNC_tZ_Base.cxx:558
 AtlSgTopFCNC_tZ_Base.cxx:559
 AtlSgTopFCNC_tZ_Base.cxx:560
 AtlSgTopFCNC_tZ_Base.cxx:561
 AtlSgTopFCNC_tZ_Base.cxx:562
 AtlSgTopFCNC_tZ_Base.cxx:563
 AtlSgTopFCNC_tZ_Base.cxx:564
 AtlSgTopFCNC_tZ_Base.cxx:565
 AtlSgTopFCNC_tZ_Base.cxx:566
 AtlSgTopFCNC_tZ_Base.cxx:567
 AtlSgTopFCNC_tZ_Base.cxx:568
 AtlSgTopFCNC_tZ_Base.cxx:569
 AtlSgTopFCNC_tZ_Base.cxx:570
 AtlSgTopFCNC_tZ_Base.cxx:571
 AtlSgTopFCNC_tZ_Base.cxx:572
 AtlSgTopFCNC_tZ_Base.cxx:573
 AtlSgTopFCNC_tZ_Base.cxx:574
 AtlSgTopFCNC_tZ_Base.cxx:575
 AtlSgTopFCNC_tZ_Base.cxx:576
 AtlSgTopFCNC_tZ_Base.cxx:577
 AtlSgTopFCNC_tZ_Base.cxx:578
 AtlSgTopFCNC_tZ_Base.cxx:579
 AtlSgTopFCNC_tZ_Base.cxx:580
 AtlSgTopFCNC_tZ_Base.cxx:581
 AtlSgTopFCNC_tZ_Base.cxx:582
 AtlSgTopFCNC_tZ_Base.cxx:583
 AtlSgTopFCNC_tZ_Base.cxx:584
 AtlSgTopFCNC_tZ_Base.cxx:585
 AtlSgTopFCNC_tZ_Base.cxx:586
 AtlSgTopFCNC_tZ_Base.cxx:587
 AtlSgTopFCNC_tZ_Base.cxx:588
 AtlSgTopFCNC_tZ_Base.cxx:589
 AtlSgTopFCNC_tZ_Base.cxx:590
 AtlSgTopFCNC_tZ_Base.cxx:591
 AtlSgTopFCNC_tZ_Base.cxx:592
 AtlSgTopFCNC_tZ_Base.cxx:593
 AtlSgTopFCNC_tZ_Base.cxx:594
 AtlSgTopFCNC_tZ_Base.cxx:595
 AtlSgTopFCNC_tZ_Base.cxx:596
 AtlSgTopFCNC_tZ_Base.cxx:597
 AtlSgTopFCNC_tZ_Base.cxx:598
 AtlSgTopFCNC_tZ_Base.cxx:599
 AtlSgTopFCNC_tZ_Base.cxx:600
 AtlSgTopFCNC_tZ_Base.cxx:601
 AtlSgTopFCNC_tZ_Base.cxx:602
 AtlSgTopFCNC_tZ_Base.cxx:603
 AtlSgTopFCNC_tZ_Base.cxx:604
 AtlSgTopFCNC_tZ_Base.cxx:605
 AtlSgTopFCNC_tZ_Base.cxx:606
 AtlSgTopFCNC_tZ_Base.cxx:607
 AtlSgTopFCNC_tZ_Base.cxx:608
 AtlSgTopFCNC_tZ_Base.cxx:609
 AtlSgTopFCNC_tZ_Base.cxx:610
 AtlSgTopFCNC_tZ_Base.cxx:611
 AtlSgTopFCNC_tZ_Base.cxx:612
 AtlSgTopFCNC_tZ_Base.cxx:613
 AtlSgTopFCNC_tZ_Base.cxx:614
 AtlSgTopFCNC_tZ_Base.cxx:615
 AtlSgTopFCNC_tZ_Base.cxx:616
 AtlSgTopFCNC_tZ_Base.cxx:617
 AtlSgTopFCNC_tZ_Base.cxx:618
 AtlSgTopFCNC_tZ_Base.cxx:619
 AtlSgTopFCNC_tZ_Base.cxx:620
 AtlSgTopFCNC_tZ_Base.cxx:621
 AtlSgTopFCNC_tZ_Base.cxx:622
 AtlSgTopFCNC_tZ_Base.cxx:623
 AtlSgTopFCNC_tZ_Base.cxx:624
 AtlSgTopFCNC_tZ_Base.cxx:625
 AtlSgTopFCNC_tZ_Base.cxx:626
 AtlSgTopFCNC_tZ_Base.cxx:627
 AtlSgTopFCNC_tZ_Base.cxx:628
 AtlSgTopFCNC_tZ_Base.cxx:629
 AtlSgTopFCNC_tZ_Base.cxx:630
 AtlSgTopFCNC_tZ_Base.cxx:631
 AtlSgTopFCNC_tZ_Base.cxx:632
 AtlSgTopFCNC_tZ_Base.cxx:633
 AtlSgTopFCNC_tZ_Base.cxx:634
 AtlSgTopFCNC_tZ_Base.cxx:635
 AtlSgTopFCNC_tZ_Base.cxx:636
 AtlSgTopFCNC_tZ_Base.cxx:637
 AtlSgTopFCNC_tZ_Base.cxx:638
 AtlSgTopFCNC_tZ_Base.cxx:639
 AtlSgTopFCNC_tZ_Base.cxx:640
 AtlSgTopFCNC_tZ_Base.cxx:641
 AtlSgTopFCNC_tZ_Base.cxx:642
 AtlSgTopFCNC_tZ_Base.cxx:643
 AtlSgTopFCNC_tZ_Base.cxx:644
 AtlSgTopFCNC_tZ_Base.cxx:645
 AtlSgTopFCNC_tZ_Base.cxx:646
 AtlSgTopFCNC_tZ_Base.cxx:647
 AtlSgTopFCNC_tZ_Base.cxx:648
 AtlSgTopFCNC_tZ_Base.cxx:649
 AtlSgTopFCNC_tZ_Base.cxx:650
 AtlSgTopFCNC_tZ_Base.cxx:651
 AtlSgTopFCNC_tZ_Base.cxx:652
 AtlSgTopFCNC_tZ_Base.cxx:653
 AtlSgTopFCNC_tZ_Base.cxx:654
 AtlSgTopFCNC_tZ_Base.cxx:655
 AtlSgTopFCNC_tZ_Base.cxx:656
 AtlSgTopFCNC_tZ_Base.cxx:657
 AtlSgTopFCNC_tZ_Base.cxx:658
 AtlSgTopFCNC_tZ_Base.cxx:659
 AtlSgTopFCNC_tZ_Base.cxx:660
 AtlSgTopFCNC_tZ_Base.cxx:661
 AtlSgTopFCNC_tZ_Base.cxx:662
 AtlSgTopFCNC_tZ_Base.cxx:663
 AtlSgTopFCNC_tZ_Base.cxx:664
 AtlSgTopFCNC_tZ_Base.cxx:665
 AtlSgTopFCNC_tZ_Base.cxx:666
 AtlSgTopFCNC_tZ_Base.cxx:667
 AtlSgTopFCNC_tZ_Base.cxx:668
 AtlSgTopFCNC_tZ_Base.cxx:669
 AtlSgTopFCNC_tZ_Base.cxx:670
 AtlSgTopFCNC_tZ_Base.cxx:671
 AtlSgTopFCNC_tZ_Base.cxx:672
 AtlSgTopFCNC_tZ_Base.cxx:673
 AtlSgTopFCNC_tZ_Base.cxx:674
 AtlSgTopFCNC_tZ_Base.cxx:675
 AtlSgTopFCNC_tZ_Base.cxx:676
 AtlSgTopFCNC_tZ_Base.cxx:677
 AtlSgTopFCNC_tZ_Base.cxx:678
 AtlSgTopFCNC_tZ_Base.cxx:679
 AtlSgTopFCNC_tZ_Base.cxx:680
 AtlSgTopFCNC_tZ_Base.cxx:681
 AtlSgTopFCNC_tZ_Base.cxx:682
 AtlSgTopFCNC_tZ_Base.cxx:683
 AtlSgTopFCNC_tZ_Base.cxx:684
 AtlSgTopFCNC_tZ_Base.cxx:685
 AtlSgTopFCNC_tZ_Base.cxx:686
 AtlSgTopFCNC_tZ_Base.cxx:687
 AtlSgTopFCNC_tZ_Base.cxx:688
 AtlSgTopFCNC_tZ_Base.cxx:689
 AtlSgTopFCNC_tZ_Base.cxx:690
 AtlSgTopFCNC_tZ_Base.cxx:691
 AtlSgTopFCNC_tZ_Base.cxx:692
 AtlSgTopFCNC_tZ_Base.cxx:693
 AtlSgTopFCNC_tZ_Base.cxx:694
 AtlSgTopFCNC_tZ_Base.cxx:695
 AtlSgTopFCNC_tZ_Base.cxx:696
 AtlSgTopFCNC_tZ_Base.cxx:697
 AtlSgTopFCNC_tZ_Base.cxx:698
 AtlSgTopFCNC_tZ_Base.cxx:699
 AtlSgTopFCNC_tZ_Base.cxx:700
 AtlSgTopFCNC_tZ_Base.cxx:701
 AtlSgTopFCNC_tZ_Base.cxx:702
 AtlSgTopFCNC_tZ_Base.cxx:703
 AtlSgTopFCNC_tZ_Base.cxx:704
 AtlSgTopFCNC_tZ_Base.cxx:705
 AtlSgTopFCNC_tZ_Base.cxx:706
 AtlSgTopFCNC_tZ_Base.cxx:707
 AtlSgTopFCNC_tZ_Base.cxx:708
 AtlSgTopFCNC_tZ_Base.cxx:709
 AtlSgTopFCNC_tZ_Base.cxx:710
 AtlSgTopFCNC_tZ_Base.cxx:711
 AtlSgTopFCNC_tZ_Base.cxx:712
 AtlSgTopFCNC_tZ_Base.cxx:713
 AtlSgTopFCNC_tZ_Base.cxx:714
 AtlSgTopFCNC_tZ_Base.cxx:715
 AtlSgTopFCNC_tZ_Base.cxx:716
 AtlSgTopFCNC_tZ_Base.cxx:717
 AtlSgTopFCNC_tZ_Base.cxx:718
 AtlSgTopFCNC_tZ_Base.cxx:719
 AtlSgTopFCNC_tZ_Base.cxx:720
 AtlSgTopFCNC_tZ_Base.cxx:721
 AtlSgTopFCNC_tZ_Base.cxx:722
 AtlSgTopFCNC_tZ_Base.cxx:723
 AtlSgTopFCNC_tZ_Base.cxx:724
 AtlSgTopFCNC_tZ_Base.cxx:725
 AtlSgTopFCNC_tZ_Base.cxx:726
 AtlSgTopFCNC_tZ_Base.cxx:727
 AtlSgTopFCNC_tZ_Base.cxx:728
 AtlSgTopFCNC_tZ_Base.cxx:729
 AtlSgTopFCNC_tZ_Base.cxx:730
 AtlSgTopFCNC_tZ_Base.cxx:731
 AtlSgTopFCNC_tZ_Base.cxx:732
 AtlSgTopFCNC_tZ_Base.cxx:733
 AtlSgTopFCNC_tZ_Base.cxx:734
 AtlSgTopFCNC_tZ_Base.cxx:735
 AtlSgTopFCNC_tZ_Base.cxx:736
 AtlSgTopFCNC_tZ_Base.cxx:737
 AtlSgTopFCNC_tZ_Base.cxx:738
 AtlSgTopFCNC_tZ_Base.cxx:739
 AtlSgTopFCNC_tZ_Base.cxx:740
 AtlSgTopFCNC_tZ_Base.cxx:741
 AtlSgTopFCNC_tZ_Base.cxx:742
 AtlSgTopFCNC_tZ_Base.cxx:743
 AtlSgTopFCNC_tZ_Base.cxx:744
 AtlSgTopFCNC_tZ_Base.cxx:745
 AtlSgTopFCNC_tZ_Base.cxx:746
 AtlSgTopFCNC_tZ_Base.cxx:747
 AtlSgTopFCNC_tZ_Base.cxx:748
 AtlSgTopFCNC_tZ_Base.cxx:749
 AtlSgTopFCNC_tZ_Base.cxx:750
 AtlSgTopFCNC_tZ_Base.cxx:751
 AtlSgTopFCNC_tZ_Base.cxx:752
 AtlSgTopFCNC_tZ_Base.cxx:753
 AtlSgTopFCNC_tZ_Base.cxx:754
 AtlSgTopFCNC_tZ_Base.cxx:755
 AtlSgTopFCNC_tZ_Base.cxx:756
 AtlSgTopFCNC_tZ_Base.cxx:757
 AtlSgTopFCNC_tZ_Base.cxx:758
 AtlSgTopFCNC_tZ_Base.cxx:759
 AtlSgTopFCNC_tZ_Base.cxx:760
 AtlSgTopFCNC_tZ_Base.cxx:761
 AtlSgTopFCNC_tZ_Base.cxx:762
 AtlSgTopFCNC_tZ_Base.cxx:763
 AtlSgTopFCNC_tZ_Base.cxx:764
 AtlSgTopFCNC_tZ_Base.cxx:765
 AtlSgTopFCNC_tZ_Base.cxx:766
 AtlSgTopFCNC_tZ_Base.cxx:767
 AtlSgTopFCNC_tZ_Base.cxx:768
 AtlSgTopFCNC_tZ_Base.cxx:769
 AtlSgTopFCNC_tZ_Base.cxx:770
 AtlSgTopFCNC_tZ_Base.cxx:771
 AtlSgTopFCNC_tZ_Base.cxx:772
 AtlSgTopFCNC_tZ_Base.cxx:773
 AtlSgTopFCNC_tZ_Base.cxx:774
 AtlSgTopFCNC_tZ_Base.cxx:775
 AtlSgTopFCNC_tZ_Base.cxx:776
 AtlSgTopFCNC_tZ_Base.cxx:777
 AtlSgTopFCNC_tZ_Base.cxx:778
 AtlSgTopFCNC_tZ_Base.cxx:779
 AtlSgTopFCNC_tZ_Base.cxx:780
 AtlSgTopFCNC_tZ_Base.cxx:781
 AtlSgTopFCNC_tZ_Base.cxx:782
 AtlSgTopFCNC_tZ_Base.cxx:783
 AtlSgTopFCNC_tZ_Base.cxx:784
 AtlSgTopFCNC_tZ_Base.cxx:785
 AtlSgTopFCNC_tZ_Base.cxx:786
 AtlSgTopFCNC_tZ_Base.cxx:787
 AtlSgTopFCNC_tZ_Base.cxx:788
 AtlSgTopFCNC_tZ_Base.cxx:789
 AtlSgTopFCNC_tZ_Base.cxx:790
 AtlSgTopFCNC_tZ_Base.cxx:791
 AtlSgTopFCNC_tZ_Base.cxx:792
 AtlSgTopFCNC_tZ_Base.cxx:793
 AtlSgTopFCNC_tZ_Base.cxx:794
 AtlSgTopFCNC_tZ_Base.cxx:795
 AtlSgTopFCNC_tZ_Base.cxx:796
 AtlSgTopFCNC_tZ_Base.cxx:797
 AtlSgTopFCNC_tZ_Base.cxx:798
 AtlSgTopFCNC_tZ_Base.cxx:799
 AtlSgTopFCNC_tZ_Base.cxx:800
 AtlSgTopFCNC_tZ_Base.cxx:801
 AtlSgTopFCNC_tZ_Base.cxx:802
 AtlSgTopFCNC_tZ_Base.cxx:803
 AtlSgTopFCNC_tZ_Base.cxx:804
 AtlSgTopFCNC_tZ_Base.cxx:805
 AtlSgTopFCNC_tZ_Base.cxx:806
 AtlSgTopFCNC_tZ_Base.cxx:807
 AtlSgTopFCNC_tZ_Base.cxx:808
 AtlSgTopFCNC_tZ_Base.cxx:809
 AtlSgTopFCNC_tZ_Base.cxx:810
 AtlSgTopFCNC_tZ_Base.cxx:811
 AtlSgTopFCNC_tZ_Base.cxx:812
 AtlSgTopFCNC_tZ_Base.cxx:813
 AtlSgTopFCNC_tZ_Base.cxx:814
 AtlSgTopFCNC_tZ_Base.cxx:815
 AtlSgTopFCNC_tZ_Base.cxx:816
 AtlSgTopFCNC_tZ_Base.cxx:817
 AtlSgTopFCNC_tZ_Base.cxx:818
 AtlSgTopFCNC_tZ_Base.cxx:819
 AtlSgTopFCNC_tZ_Base.cxx:820
 AtlSgTopFCNC_tZ_Base.cxx:821
 AtlSgTopFCNC_tZ_Base.cxx:822
 AtlSgTopFCNC_tZ_Base.cxx:823
 AtlSgTopFCNC_tZ_Base.cxx:824
 AtlSgTopFCNC_tZ_Base.cxx:825
 AtlSgTopFCNC_tZ_Base.cxx:826
 AtlSgTopFCNC_tZ_Base.cxx:827
 AtlSgTopFCNC_tZ_Base.cxx:828
 AtlSgTopFCNC_tZ_Base.cxx:829
 AtlSgTopFCNC_tZ_Base.cxx:830
 AtlSgTopFCNC_tZ_Base.cxx:831
 AtlSgTopFCNC_tZ_Base.cxx:832
 AtlSgTopFCNC_tZ_Base.cxx:833
 AtlSgTopFCNC_tZ_Base.cxx:834
 AtlSgTopFCNC_tZ_Base.cxx:835
 AtlSgTopFCNC_tZ_Base.cxx:836
 AtlSgTopFCNC_tZ_Base.cxx:837
 AtlSgTopFCNC_tZ_Base.cxx:838
 AtlSgTopFCNC_tZ_Base.cxx:839
 AtlSgTopFCNC_tZ_Base.cxx:840
 AtlSgTopFCNC_tZ_Base.cxx:841
 AtlSgTopFCNC_tZ_Base.cxx:842
 AtlSgTopFCNC_tZ_Base.cxx:843
 AtlSgTopFCNC_tZ_Base.cxx:844
 AtlSgTopFCNC_tZ_Base.cxx:845
 AtlSgTopFCNC_tZ_Base.cxx:846
 AtlSgTopFCNC_tZ_Base.cxx:847
 AtlSgTopFCNC_tZ_Base.cxx:848
 AtlSgTopFCNC_tZ_Base.cxx:849
 AtlSgTopFCNC_tZ_Base.cxx:850
 AtlSgTopFCNC_tZ_Base.cxx:851
 AtlSgTopFCNC_tZ_Base.cxx:852
 AtlSgTopFCNC_tZ_Base.cxx:853
 AtlSgTopFCNC_tZ_Base.cxx:854
 AtlSgTopFCNC_tZ_Base.cxx:855
 AtlSgTopFCNC_tZ_Base.cxx:856
 AtlSgTopFCNC_tZ_Base.cxx:857
 AtlSgTopFCNC_tZ_Base.cxx:858
 AtlSgTopFCNC_tZ_Base.cxx:859
 AtlSgTopFCNC_tZ_Base.cxx:860
 AtlSgTopFCNC_tZ_Base.cxx:861
 AtlSgTopFCNC_tZ_Base.cxx:862
 AtlSgTopFCNC_tZ_Base.cxx:863
 AtlSgTopFCNC_tZ_Base.cxx:864
 AtlSgTopFCNC_tZ_Base.cxx:865
 AtlSgTopFCNC_tZ_Base.cxx:866
 AtlSgTopFCNC_tZ_Base.cxx:867
 AtlSgTopFCNC_tZ_Base.cxx:868
 AtlSgTopFCNC_tZ_Base.cxx:869
 AtlSgTopFCNC_tZ_Base.cxx:870
 AtlSgTopFCNC_tZ_Base.cxx:871
 AtlSgTopFCNC_tZ_Base.cxx:872
 AtlSgTopFCNC_tZ_Base.cxx:873
 AtlSgTopFCNC_tZ_Base.cxx:874
 AtlSgTopFCNC_tZ_Base.cxx:875
 AtlSgTopFCNC_tZ_Base.cxx:876
 AtlSgTopFCNC_tZ_Base.cxx:877
 AtlSgTopFCNC_tZ_Base.cxx:878
 AtlSgTopFCNC_tZ_Base.cxx:879
 AtlSgTopFCNC_tZ_Base.cxx:880
 AtlSgTopFCNC_tZ_Base.cxx:881
 AtlSgTopFCNC_tZ_Base.cxx:882
 AtlSgTopFCNC_tZ_Base.cxx:883
 AtlSgTopFCNC_tZ_Base.cxx:884
 AtlSgTopFCNC_tZ_Base.cxx:885
 AtlSgTopFCNC_tZ_Base.cxx:886
 AtlSgTopFCNC_tZ_Base.cxx:887
 AtlSgTopFCNC_tZ_Base.cxx:888
 AtlSgTopFCNC_tZ_Base.cxx:889
 AtlSgTopFCNC_tZ_Base.cxx:890
 AtlSgTopFCNC_tZ_Base.cxx:891
 AtlSgTopFCNC_tZ_Base.cxx:892
 AtlSgTopFCNC_tZ_Base.cxx:893
 AtlSgTopFCNC_tZ_Base.cxx:894
 AtlSgTopFCNC_tZ_Base.cxx:895
 AtlSgTopFCNC_tZ_Base.cxx:896
 AtlSgTopFCNC_tZ_Base.cxx:897
 AtlSgTopFCNC_tZ_Base.cxx:898
 AtlSgTopFCNC_tZ_Base.cxx:899
 AtlSgTopFCNC_tZ_Base.cxx:900
 AtlSgTopFCNC_tZ_Base.cxx:901
 AtlSgTopFCNC_tZ_Base.cxx:902
 AtlSgTopFCNC_tZ_Base.cxx:903
 AtlSgTopFCNC_tZ_Base.cxx:904
 AtlSgTopFCNC_tZ_Base.cxx:905
 AtlSgTopFCNC_tZ_Base.cxx:906
 AtlSgTopFCNC_tZ_Base.cxx:907
 AtlSgTopFCNC_tZ_Base.cxx:908
 AtlSgTopFCNC_tZ_Base.cxx:909
 AtlSgTopFCNC_tZ_Base.cxx:910
 AtlSgTopFCNC_tZ_Base.cxx:911
 AtlSgTopFCNC_tZ_Base.cxx:912
 AtlSgTopFCNC_tZ_Base.cxx:913
 AtlSgTopFCNC_tZ_Base.cxx:914
 AtlSgTopFCNC_tZ_Base.cxx:915
 AtlSgTopFCNC_tZ_Base.cxx:916
 AtlSgTopFCNC_tZ_Base.cxx:917
 AtlSgTopFCNC_tZ_Base.cxx:918
 AtlSgTopFCNC_tZ_Base.cxx:919
 AtlSgTopFCNC_tZ_Base.cxx:920
 AtlSgTopFCNC_tZ_Base.cxx:921
 AtlSgTopFCNC_tZ_Base.cxx:922
 AtlSgTopFCNC_tZ_Base.cxx:923
 AtlSgTopFCNC_tZ_Base.cxx:924
 AtlSgTopFCNC_tZ_Base.cxx:925
 AtlSgTopFCNC_tZ_Base.cxx:926
 AtlSgTopFCNC_tZ_Base.cxx:927
 AtlSgTopFCNC_tZ_Base.cxx:928
 AtlSgTopFCNC_tZ_Base.cxx:929
 AtlSgTopFCNC_tZ_Base.cxx:930
 AtlSgTopFCNC_tZ_Base.cxx:931
 AtlSgTopFCNC_tZ_Base.cxx:932
 AtlSgTopFCNC_tZ_Base.cxx:933
 AtlSgTopFCNC_tZ_Base.cxx:934
 AtlSgTopFCNC_tZ_Base.cxx:935
 AtlSgTopFCNC_tZ_Base.cxx:936
 AtlSgTopFCNC_tZ_Base.cxx:937
 AtlSgTopFCNC_tZ_Base.cxx:938
 AtlSgTopFCNC_tZ_Base.cxx:939
 AtlSgTopFCNC_tZ_Base.cxx:940
 AtlSgTopFCNC_tZ_Base.cxx:941
 AtlSgTopFCNC_tZ_Base.cxx:942
 AtlSgTopFCNC_tZ_Base.cxx:943
 AtlSgTopFCNC_tZ_Base.cxx:944
 AtlSgTopFCNC_tZ_Base.cxx:945
 AtlSgTopFCNC_tZ_Base.cxx:946
 AtlSgTopFCNC_tZ_Base.cxx:947
 AtlSgTopFCNC_tZ_Base.cxx:948
 AtlSgTopFCNC_tZ_Base.cxx:949
 AtlSgTopFCNC_tZ_Base.cxx:950
 AtlSgTopFCNC_tZ_Base.cxx:951
 AtlSgTopFCNC_tZ_Base.cxx:952
 AtlSgTopFCNC_tZ_Base.cxx:953
 AtlSgTopFCNC_tZ_Base.cxx:954
 AtlSgTopFCNC_tZ_Base.cxx:955
 AtlSgTopFCNC_tZ_Base.cxx:956
 AtlSgTopFCNC_tZ_Base.cxx:957
 AtlSgTopFCNC_tZ_Base.cxx:958
 AtlSgTopFCNC_tZ_Base.cxx:959
 AtlSgTopFCNC_tZ_Base.cxx:960
 AtlSgTopFCNC_tZ_Base.cxx:961
 AtlSgTopFCNC_tZ_Base.cxx:962
 AtlSgTopFCNC_tZ_Base.cxx:963
 AtlSgTopFCNC_tZ_Base.cxx:964
 AtlSgTopFCNC_tZ_Base.cxx:965
 AtlSgTopFCNC_tZ_Base.cxx:966
 AtlSgTopFCNC_tZ_Base.cxx:967
 AtlSgTopFCNC_tZ_Base.cxx:968
 AtlSgTopFCNC_tZ_Base.cxx:969
 AtlSgTopFCNC_tZ_Base.cxx:970
 AtlSgTopFCNC_tZ_Base.cxx:971
 AtlSgTopFCNC_tZ_Base.cxx:972
 AtlSgTopFCNC_tZ_Base.cxx:973
 AtlSgTopFCNC_tZ_Base.cxx:974
 AtlSgTopFCNC_tZ_Base.cxx:975
 AtlSgTopFCNC_tZ_Base.cxx:976
 AtlSgTopFCNC_tZ_Base.cxx:977
 AtlSgTopFCNC_tZ_Base.cxx:978
 AtlSgTopFCNC_tZ_Base.cxx:979
 AtlSgTopFCNC_tZ_Base.cxx:980
 AtlSgTopFCNC_tZ_Base.cxx:981
 AtlSgTopFCNC_tZ_Base.cxx:982
 AtlSgTopFCNC_tZ_Base.cxx:983
 AtlSgTopFCNC_tZ_Base.cxx:984
 AtlSgTopFCNC_tZ_Base.cxx:985
 AtlSgTopFCNC_tZ_Base.cxx:986
 AtlSgTopFCNC_tZ_Base.cxx:987
 AtlSgTopFCNC_tZ_Base.cxx:988
 AtlSgTopFCNC_tZ_Base.cxx:989
 AtlSgTopFCNC_tZ_Base.cxx:990
 AtlSgTopFCNC_tZ_Base.cxx:991
 AtlSgTopFCNC_tZ_Base.cxx:992
 AtlSgTopFCNC_tZ_Base.cxx:993
 AtlSgTopFCNC_tZ_Base.cxx:994
 AtlSgTopFCNC_tZ_Base.cxx:995
 AtlSgTopFCNC_tZ_Base.cxx:996
 AtlSgTopFCNC_tZ_Base.cxx:997
 AtlSgTopFCNC_tZ_Base.cxx:998
 AtlSgTopFCNC_tZ_Base.cxx:999
 AtlSgTopFCNC_tZ_Base.cxx:1000
 AtlSgTopFCNC_tZ_Base.cxx:1001
 AtlSgTopFCNC_tZ_Base.cxx:1002
 AtlSgTopFCNC_tZ_Base.cxx:1003
 AtlSgTopFCNC_tZ_Base.cxx:1004
 AtlSgTopFCNC_tZ_Base.cxx:1005
 AtlSgTopFCNC_tZ_Base.cxx:1006
 AtlSgTopFCNC_tZ_Base.cxx:1007
 AtlSgTopFCNC_tZ_Base.cxx:1008
 AtlSgTopFCNC_tZ_Base.cxx:1009
 AtlSgTopFCNC_tZ_Base.cxx:1010
 AtlSgTopFCNC_tZ_Base.cxx:1011
 AtlSgTopFCNC_tZ_Base.cxx:1012
 AtlSgTopFCNC_tZ_Base.cxx:1013
 AtlSgTopFCNC_tZ_Base.cxx:1014
 AtlSgTopFCNC_tZ_Base.cxx:1015
 AtlSgTopFCNC_tZ_Base.cxx:1016
 AtlSgTopFCNC_tZ_Base.cxx:1017
 AtlSgTopFCNC_tZ_Base.cxx:1018
 AtlSgTopFCNC_tZ_Base.cxx:1019
 AtlSgTopFCNC_tZ_Base.cxx:1020
 AtlSgTopFCNC_tZ_Base.cxx:1021
 AtlSgTopFCNC_tZ_Base.cxx:1022
 AtlSgTopFCNC_tZ_Base.cxx:1023
 AtlSgTopFCNC_tZ_Base.cxx:1024
 AtlSgTopFCNC_tZ_Base.cxx:1025
 AtlSgTopFCNC_tZ_Base.cxx:1026
 AtlSgTopFCNC_tZ_Base.cxx:1027
 AtlSgTopFCNC_tZ_Base.cxx:1028
 AtlSgTopFCNC_tZ_Base.cxx:1029
 AtlSgTopFCNC_tZ_Base.cxx:1030
 AtlSgTopFCNC_tZ_Base.cxx:1031
 AtlSgTopFCNC_tZ_Base.cxx:1032
 AtlSgTopFCNC_tZ_Base.cxx:1033
 AtlSgTopFCNC_tZ_Base.cxx:1034
 AtlSgTopFCNC_tZ_Base.cxx:1035
 AtlSgTopFCNC_tZ_Base.cxx:1036
 AtlSgTopFCNC_tZ_Base.cxx:1037
 AtlSgTopFCNC_tZ_Base.cxx:1038
 AtlSgTopFCNC_tZ_Base.cxx:1039
 AtlSgTopFCNC_tZ_Base.cxx:1040
 AtlSgTopFCNC_tZ_Base.cxx:1041
 AtlSgTopFCNC_tZ_Base.cxx:1042
 AtlSgTopFCNC_tZ_Base.cxx:1043
 AtlSgTopFCNC_tZ_Base.cxx:1044
 AtlSgTopFCNC_tZ_Base.cxx:1045
 AtlSgTopFCNC_tZ_Base.cxx:1046
 AtlSgTopFCNC_tZ_Base.cxx:1047
 AtlSgTopFCNC_tZ_Base.cxx:1048
 AtlSgTopFCNC_tZ_Base.cxx:1049
 AtlSgTopFCNC_tZ_Base.cxx:1050
 AtlSgTopFCNC_tZ_Base.cxx:1051
 AtlSgTopFCNC_tZ_Base.cxx:1052
 AtlSgTopFCNC_tZ_Base.cxx:1053
 AtlSgTopFCNC_tZ_Base.cxx:1054
 AtlSgTopFCNC_tZ_Base.cxx:1055
 AtlSgTopFCNC_tZ_Base.cxx:1056
 AtlSgTopFCNC_tZ_Base.cxx:1057
 AtlSgTopFCNC_tZ_Base.cxx:1058
 AtlSgTopFCNC_tZ_Base.cxx:1059
 AtlSgTopFCNC_tZ_Base.cxx:1060
 AtlSgTopFCNC_tZ_Base.cxx:1061
 AtlSgTopFCNC_tZ_Base.cxx:1062
 AtlSgTopFCNC_tZ_Base.cxx:1063
 AtlSgTopFCNC_tZ_Base.cxx:1064
 AtlSgTopFCNC_tZ_Base.cxx:1065
 AtlSgTopFCNC_tZ_Base.cxx:1066
 AtlSgTopFCNC_tZ_Base.cxx:1067
 AtlSgTopFCNC_tZ_Base.cxx:1068
 AtlSgTopFCNC_tZ_Base.cxx:1069
 AtlSgTopFCNC_tZ_Base.cxx:1070
 AtlSgTopFCNC_tZ_Base.cxx:1071
 AtlSgTopFCNC_tZ_Base.cxx:1072
 AtlSgTopFCNC_tZ_Base.cxx:1073
 AtlSgTopFCNC_tZ_Base.cxx:1074
 AtlSgTopFCNC_tZ_Base.cxx:1075
 AtlSgTopFCNC_tZ_Base.cxx:1076
 AtlSgTopFCNC_tZ_Base.cxx:1077
 AtlSgTopFCNC_tZ_Base.cxx:1078
 AtlSgTopFCNC_tZ_Base.cxx:1079
 AtlSgTopFCNC_tZ_Base.cxx:1080
 AtlSgTopFCNC_tZ_Base.cxx:1081
 AtlSgTopFCNC_tZ_Base.cxx:1082
 AtlSgTopFCNC_tZ_Base.cxx:1083
 AtlSgTopFCNC_tZ_Base.cxx:1084
 AtlSgTopFCNC_tZ_Base.cxx:1085
 AtlSgTopFCNC_tZ_Base.cxx:1086
 AtlSgTopFCNC_tZ_Base.cxx:1087
 AtlSgTopFCNC_tZ_Base.cxx:1088
 AtlSgTopFCNC_tZ_Base.cxx:1089
 AtlSgTopFCNC_tZ_Base.cxx:1090
 AtlSgTopFCNC_tZ_Base.cxx:1091
 AtlSgTopFCNC_tZ_Base.cxx:1092
 AtlSgTopFCNC_tZ_Base.cxx:1093
 AtlSgTopFCNC_tZ_Base.cxx:1094
 AtlSgTopFCNC_tZ_Base.cxx:1095
 AtlSgTopFCNC_tZ_Base.cxx:1096
 AtlSgTopFCNC_tZ_Base.cxx:1097
 AtlSgTopFCNC_tZ_Base.cxx:1098
 AtlSgTopFCNC_tZ_Base.cxx:1099
 AtlSgTopFCNC_tZ_Base.cxx:1100
 AtlSgTopFCNC_tZ_Base.cxx:1101
 AtlSgTopFCNC_tZ_Base.cxx:1102
 AtlSgTopFCNC_tZ_Base.cxx:1103
 AtlSgTopFCNC_tZ_Base.cxx:1104
 AtlSgTopFCNC_tZ_Base.cxx:1105
 AtlSgTopFCNC_tZ_Base.cxx:1106
 AtlSgTopFCNC_tZ_Base.cxx:1107
 AtlSgTopFCNC_tZ_Base.cxx:1108
 AtlSgTopFCNC_tZ_Base.cxx:1109
 AtlSgTopFCNC_tZ_Base.cxx:1110
 AtlSgTopFCNC_tZ_Base.cxx:1111
 AtlSgTopFCNC_tZ_Base.cxx:1112
 AtlSgTopFCNC_tZ_Base.cxx:1113
 AtlSgTopFCNC_tZ_Base.cxx:1114
 AtlSgTopFCNC_tZ_Base.cxx:1115
 AtlSgTopFCNC_tZ_Base.cxx:1116
 AtlSgTopFCNC_tZ_Base.cxx:1117
 AtlSgTopFCNC_tZ_Base.cxx:1118