//____________________________________________________________________
//
// Z0 decay finder class
// 

//  
// Author: Holger Schulz <mailto:holger.schulz@physik.hu-berlin.de>, Oliver Maria Kind <mailto: kind@mail.desy.de>
// Update: $Id: AtlZ0Finder.cxx,v 1.5 2015/04/22 22:42:15 stamm Exp $
// Copyright: 2009 (C) Holger Schulz, Oliver Maria Kind
//
#ifndef ATLAS_AtlZ0Finder
#include <AtlZ0Finder.h>
#endif
#include <TH1F.h>
#include <AtlEvent.h>
#include <TTree.h>
#include <TString.h>
#include <iostream>
#include <TROOT.h>
#include <TFile.h>
#include <iostream>
#include <vector>

using namespace std;

#ifndef __CINT__
ClassImp(AtlZ0Finder);
#endif

//____________________________________________________________________

AtlZ0Finder::AtlZ0Finder(const char* name, const char* title,
			 Bool_t chargetest, EModeLepton ModeLepton) :
    AtlKinFitterTool(name, title) {
    //
    // Default constructor
    //
    SetMode();
    fchargetest=chargetest;
    fSignalElectrons = 0;
    fSignalMuons     = 0;
    fSignalTaus      = 0;
    fModeLepton=ModeLepton;
    c11=0;
    c22=0;
    c33=0;
    c12=0;
    c13=0;
    c23=0;
    TruthMatchCounter=0;

    fBkgZ0Decays = new TList;
}

//____________________________________________________________________

AtlZ0Finder::~AtlZ0Finder() {
    //
    // Default destructor
    //
    if ( fSignalElectrons != 0 ) delete fSignalElectrons;
    if ( fSignalMuons     != 0 ) delete fSignalMuons;
    if ( fSignalTaus      != 0 ) delete fSignalTaus;
    delete fBkgZ0Decays;
}

//____________________________________________________________________

void AtlZ0Finder::SetBranchStatus() {
    //
    // Switch on needed branches
    //
    fTree->SetBranchStatus("fN_Cone4H1TowerJets*",  kTRUE);
    fTree->SetBranchStatus("fCone4H1TowerJets*",    kTRUE);
    fTree->SetBranchStatus("fN_Electrons*",         kTRUE);
    fTree->SetBranchStatus("fElectrons*",           kTRUE);
    fTree->SetBranchStatus("fN_Muons*",             kTRUE);
    fTree->SetBranchStatus("fMuons*",               kTRUE);
    fTree->SetBranchStatus("fN_Taus*",              kTRUE);
    fTree->SetBranchStatus("fTaus*",                kTRUE);
    fTree->SetBranchStatus("fN_Z0Decays*",          kTRUE);
    fTree->SetBranchStatus("fZ0Decays*",            kTRUE);
    fTree->SetBranchStatus("fN_IDTracks*",          kTRUE);  
    fTree->SetBranchStatus("fIDTracks*",            kTRUE);
}

//____________________________________________________________________

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

    // Book KinFitter histograms
    if ( fMode == kKinFit ) {
	AtlKinFitterTool::BookHistograms();
	AtlKinFitterTool::SetTruthMatchXTitle("M_{Z}^{True}");
	AtlKinFitterTool::SetTruthMatchBinning(50,65.,115.);   // use invariant mass of true lepton pair (Z mass)
	                                                       // to bin Truth Matching histograms
	
    }

    // small resolution study

    gDirectory->mkdir("Resolution", "Electrons");
    gDirectory->cd("Resolution");
    
    fHist_Zee_PtRes = new TH1F("h_eRes_pt", "Electron Resolution Pt", 70, -0.3, 0.2);
    fHist_Zee_PtRes->SetXTitle("(p_{T}^{Reco}-p_{T}^{True})/p_{T}^{True}");
    fHist_Zee_PtRes->SetYTitle("# Entries");
    
    fHist_Zee_EtaRes = new TH1F("h_eRes_eta", "Electron Resolution Eta", 100, -0.012, 0.012);
    fHist_Zee_EtaRes->SetXTitle("(#eta^{Reco}-#eta^{True})/#eta^{True}");
    fHist_Zee_EtaRes->SetYTitle("# Entries");
    
    fHist_Zee_PhiRes = new TH1F("h_eRes_phi", "Electron Resolution Phi", 100, -0.01, 0.01);
    fHist_Zee_PhiRes->SetXTitle("(#varphi^{Reco}-#varphi^{True})/#varphi^{True}");
    fHist_Zee_PhiRes->SetYTitle("# Entries");

    fHist_Zee_PtRes_KinFit  = new TH1F("h_eRes_pt_KinFit", "Electron Resolution Pt, KinFitter Output", 70, -0.3, 0.2);
    fHist_Zee_PtRes_KinFit->SetXTitle("(p_{T}^{Reco}-p_{T}^{True})/p_{T}^{True}");
    fHist_Zee_PtRes_KinFit->SetYTitle("# Entries");

    fHist_Zee_EtaRes_KinFit = new TH1F("h_eRes_eta_KinFit", "Electron Resolution Eta, KinFitter Output",
				       50, -0.025, 0.025);
    fHist_Zee_EtaRes_KinFit->SetXTitle("(#eta^{Reco}-#eta^{True})/#eta^{True}");
    fHist_Zee_EtaRes_KinFit->SetYTitle("# Entries");

    fHist_Zee_PhiRes_KinFit = new TH1F("h_eRes_phi_KinFit", "Electron Resolution Phi, KinFitter Output", 50, -0.02, 0.02);
    fHist_Zee_PhiRes_KinFit->SetXTitle("(#varphi^{Reco}-#varphi^{True})/#varphi^{True}");
    fHist_Zee_PhiRes_KinFit->SetYTitle("# Entries");

    fHist_Zee_BremslossProb = new TH2F("h_Z_Brems","e^{+}e^{-} #gamma -Energy loss vs. #chi^{2} probability",
				       50,0.,1.,40,0.,6.);
    fHist_Zee_BremslossProb->SetXTitle("#chi^{2} probability");
    fHist_Zee_BremslossProb->SetYTitle("#gamma -Energy loss");
    fHist_Zee_BremslossProb->SetZTitle("# events");
    fHist_Zee_BremslossProb->SetOption("lego");

    fHist_Zee_RadProb = new TH1F("h_Zee_RadProb","# Z#rightarrow ee#gamma events vs. #chi^{2} probability",50,0.,1.);
    fHist_Zee_RadProb->SetXTitle("#chi^{2} probability");
    fHist_Zee_RadProb->SetYTitle("# Z#rightarrow ee#gamma events");

    fHist_Zee_ZPtProb = new TH2F("h_Zee_PtProb","Z p_{t}^{True} and #chi^{2} probability",50,0.,40.,50,0.,1.);
    fHist_Zee_ZPtProb->SetXTitle("Z p_{t}^{True}");
    fHist_Zee_ZPtProb->SetYTitle("#chi^{2} probability");
    fHist_Zee_ZPtProb->SetZTitle("# events");
    fHist_Zee_ZPtProb->SetOption("lego");

    fHist_Zee_ZEProb = new TH2F("h_Zee_EProb","Z E^{True} and #chi^{2} probability",70,50.,230.,50,0.,1.);
    fHist_Zee_ZEProb->SetXTitle("Z E^{True}");
    fHist_Zee_ZEProb->SetYTitle("#chi^{2} probability");
    fHist_Zee_ZEProb->SetZTitle("# events");
    fHist_Zee_ZEProb->SetOption("lego");

    fHist_Zee_ZMProb = new TH2F("h_Zee_MProb","relative Z Mass and #chi^{2} probability",50,0.,0.5,50,0.,1.);
    fHist_Zee_ZMProb->SetXTitle("|({p_{Z}^{2}-M_{Z})/M_{Z}|");
    fHist_Zee_ZMProb->SetYTitle("#chi^{2} probability");
    fHist_Zee_ZMProb->SetZTitle("# events");
    fHist_Zee_ZMProb->SetOption("lego");
    
    fHist_e_px_true = new TH1F("h_e_px_true","MC Electron px",80,-25.,25.);
    fHist_e_px_true->SetXTitle("p_{e-_{x}}^{True}+p_{e+_{x}}^{True}");
    fHist_e_px_true->SetYTitle("# Events");
				       
    gDirectory->cd("../");
    
    // ======================
    // Book signal histograms
    // ======================
    gDirectory->mkdir("Signal", "Oppositely charged candidates");
    gDirectory->cd("Signal");

    //
    // Z -> ee
    // -------
    gDirectory->mkdir("ee", "Z0 -> ee");
    gDirectory->cd("ee");
    fHistZreco_m_ee   = new TH1F("h_Z_m_ee", "Invariant Z mass (Z->ee)",
				 50, 65, 115);
    fHistZreco_m_ee->SetXTitle("m_{Z} (GeV)");
    fHistZreco_m_ee->SetYTitle("Number of Entries");
    fHistZreco_pt_ee  = new TH1F("h_Z_pt_ee", "Z-p_{#perp} (Z->ee)",
				 100, 0, 200);
    fHistZreco_pt_ee->SetXTitle("p_{#perp} (GeV)");
    fHistZreco_pt_ee->SetYTitle("Number of Entries");
    fHistZreco_phi_ee = new TH1F("h_Z_phi_ee", "Z boson #phi distribution (Z->ee)",
				 128, -3.2, 3.2);
    fHistZreco_phi_ee->SetXTitle("#phi (rad)");
    fHistZreco_phi_ee->SetYTitle("Number of Entries");
    fHistZreco_eta_ee = new TH1F("h_Z_eta_ee", "Z boson #eta distribution (Z->ee)",
				 50, -3, 3);
    fHistZreco_eta_ee->SetXTitle("#eta");
    fHistZreco_eta_ee->SetYTitle("Number of Entries");
    fHistZreco_n_ee   = new TH1F("h_Z_n_ee", "Reconstructed Z bosons per event (Z->ee)",
				 10, 0, 10);
    fHistZreco_n_ee->SetXTitle("N_{Z}/evt");
    fHistZreco_n_ee->SetYTitle("Number of Entries");

    fHistZreco_DeltaPhi_ee = new TH1F("h_Z_DeltaPhi_ee", "Abs. Value of Phi(e+)-Phi(e-) (Z->ee)",
				      30,2,4);
    fHistZreco_DeltaPhi_ee->SetXTitle("|#Delta #phi_{ee}|");
    fHistZreco_DeltaPhi_ee->SetYTitle("# Events");
    
    fHistZreco_prob_ee = new TH1F("h_Z_prob_ee", "Probability of Z->ee",
				      20,0,1.1);
    fHistZreco_prob_ee->SetXTitle("Probability");
    fHistZreco_prob_ee->SetYTitle("# Events");
    
    //Histrogramm Z->ee with probability cut
    
    gDirectory->mkdir("with_probability_cut","Z->ee after probability cut");
    gDirectory->cd("with_probability_cut");

    fHistZreco_m_ee_with_prob   = new TH1F("h_Z_m_ee_with_prob", "Invariant Z mass (Z->ee) with_prob",
				 50, 65, 115);
    fHistZreco_m_ee_with_prob->SetXTitle("m_{Z} (GeV)");
    fHistZreco_m_ee_with_prob->SetYTitle("Number of Entries");
    fHistZreco_pt_ee_with_prob  = new TH1F("h_Z_pt_ee_with_prob", "Z-p_{#perp} (Z->ee)",
				 100, 0, 200);
    fHistZreco_pt_ee_with_prob->SetXTitle("p_{#perp} (GeV)");
    fHistZreco_pt_ee_with_prob->SetYTitle("Number of Entries");
    fHistZreco_phi_ee_with_prob = new TH1F("h_Z_phi_ee_with_prob", "Z boson #phi distribution (Z->ee)",
				 128, -3.2, 3.2);
    fHistZreco_phi_ee_with_prob->SetXTitle("#phi (rad)");
    fHistZreco_phi_ee_with_prob->SetYTitle("Number of Entries");
    fHistZreco_eta_ee_with_prob = new TH1F("h_Z_eta_ee_with_prob", "Z boson #eta distribution (Z->ee)",
				 50, -3, 3);
    fHistZreco_eta_ee_with_prob->SetXTitle("#eta");
    fHistZreco_eta_ee_with_prob->SetYTitle("Number of Entries");
    fHistZreco_n_ee_with_prob   = new TH1F("h_Z_n_ee_with_prob", "Reconstructed Z bosons per event (Z->ee)",
				 10, 0, 10);
    fHistZreco_n_ee_with_prob->SetXTitle("N_{Z}/evt");
    fHistZreco_n_ee_with_prob->SetYTitle("Number of Entries");

    fHistZreco_DeltaPhi_ee_with_prob = new TH1F("h_Z_DeltaPhi_ee", "Abs. Value of Phi(e+)-Phi(e-) (Z->ee)",
				      30,2,4);
    fHistZreco_DeltaPhi_ee_with_prob->SetXTitle("|#Delta #phi_{ee}|");
    fHistZreco_DeltaPhi_ee_with_prob->SetYTitle("# Events");
    
    gDirectory->cd("../");

    // electron (e+) histograms in sub-folder
    gDirectory->mkdir("eplus", "e+ from Z0 -> ee");
    gDirectory->cd("eplus");
    
    fHistZreco_eplus_pt = new TH1F("h_Z_eplus_pt", "e^{+}-p_{#perp} (Z->ee)",
				   100, 0, 100);
    fHistZreco_eplus_pt->SetXTitle("p_{#perp} (GeV)");
    fHistZreco_eplus_pt->SetYTitle("Number of Entries");
    fHistZreco_eplus_eta = new TH1F("h_Z_eplus_eta", "e^{+}:  #eta distribution (Z->ee)",
				    50, -3, 3);
    fHistZreco_eplus_eta->SetXTitle("#eta");
    fHistZreco_eplus_eta->SetYTitle("Number of Entries");
    fHistZreco_eplus_phi = new TH1F("h_Z_eplus_phi", "e^{+}:  #phi distribution (Z->ee)",
				    50, -3.14, 3.14);
    fHistZreco_eplus_phi->SetXTitle("#phi");
    fHistZreco_eplus_phi->SetYTitle("Number of Entries");
    
    gDirectory->cd("../"); 
    
    // electron (e-) histograms in sub-folder
    gDirectory->mkdir("eminus", "e- from Z0 -> ee");
    gDirectory->cd("eminus");
    
    fHistZreco_eminus_pt = new TH1F("h_Z_eminus_pt", "e^{-}-p_{#perp} (Z->ee)",
				    100, 0, 100);
    fHistZreco_eminus_pt->SetXTitle("p_{#perp} (GeV)");
    fHistZreco_eminus_pt->SetYTitle("Number of Entries");
    fHistZreco_eminus_eta = new TH1F("h_Z_eminus_eta", "e^{-}:  #eta distribution (Z->ee)",
				     50, -5, 5);
    fHistZreco_eminus_eta->SetXTitle("#eta");
    fHistZreco_eminus_eta->SetYTitle("Number of Entries");
    fHistZreco_eminus_phi = new TH1F("h_Z_eminus_phi", "e^{-}:  #phi distribution (Z->ee)",
				     50, -3.14, 3.14);
    fHistZreco_eminus_phi->SetXTitle("#phi");
    fHistZreco_eminus_phi->SetYTitle("Number of Entries");

    gDirectory->cd("../../");

    //
    // Z -> mumu
    // ---------
    gDirectory->mkdir("mumu", "Z0 -> mumu");
    gDirectory->cd("mumu");
    fHistZreco_m_mumu   = new TH1F("h_Z_m_mumu", "Invariant Z mass (Z->#mu#mu)",
				   50, 65, 115);
    fHistZreco_m_mumu->SetXTitle("m_{Z} (GeV)");
    fHistZreco_m_mumu->SetYTitle("Number of Entries");
    fHistZreco_pt_mumu  = new TH1F("h_Z_pt_mumu", "Z-p_{#perp} (Z->#mu#mu)",
				   100, 0, 200);
    fHistZreco_pt_mumu->SetXTitle("p_{#perp} (GeV)");
    fHistZreco_pt_mumu->SetYTitle("Number of Entries");
    fHistZreco_phi_mumu = new TH1F("h_Z_phi_mumu", "Z boson #phi distribution (Z->#mu#mu)",
				   128, -3.2, 3.2);
    fHistZreco_phi_mumu->SetXTitle("#phi (rad)");
    fHistZreco_phi_mumu->SetYTitle("Number of Entries");
    fHistZreco_eta_mumu = new TH1F("h_Z_eta_mumu", "Z boson #eta distribution (Z->#mu#mu)", 50, -5, 5);
    fHistZreco_eta_mumu->SetXTitle("#eta");
    fHistZreco_eta_mumu->SetYTitle("Number of Entries");
    fHistZreco_n_mumu   = new TH1F("h_Z_n_mumu", "Reconstructed Z bosons per event (Z->#mu#mu)",
				   10, 0, 10);
    fHistZreco_n_mumu->SetXTitle("N_{Z}/evt");
    fHistZreco_n_mumu->SetYTitle("Number of Entries");
    fHistZreco_DeltaPhi_mumu = new TH1F("h_Z_DeltaPhi_mumu", "Abs. Value of Phi(#mu+)-Phi(#mu-) (Z->#mu#mu)",
				 30,2,4);
    fHistZreco_DeltaPhi_mumu->SetXTitle("|#Delta #phi_{#mu#mu}|");
    fHistZreco_DeltaPhi_mumu->SetYTitle("# Events");
    
    fHistZreco_prob_mumu = new TH1F("h_Z_prob_mumu", "Probability of Z->mumu",
				      100,0,1);
    fHistZreco_prob_mumu->SetXTitle("Probability");
    fHistZreco_prob_mumu->SetYTitle("# Events");

    //Z->mumu after probability cut
    gDirectory->mkdir("with_probability_cut","Z->mumu after probability cut");
    gDirectory->cd("with_probability_cut");
    fHistZreco_m_mumu_with_prob   = new TH1F("h_Z_m_mumu_with_prob", "Invariant Z mass (Z->#mu#mu)_with_prob",
				   50, 65, 115);
    fHistZreco_m_mumu_with_prob->SetXTitle("m_{Z} (GeV)");
    fHistZreco_m_mumu_with_prob->SetYTitle("Number of Entries");
    fHistZreco_pt_mumu_with_prob  = new TH1F("h_Z_pt_mumu", "Z-p_{#perp} (Z->#mu#mu)",
				   100, 0, 200);
    fHistZreco_pt_mumu_with_prob->SetXTitle("p_{#perp} (GeV)");
    fHistZreco_pt_mumu_with_prob->SetYTitle("Number of Entries");
    fHistZreco_phi_mumu_with_prob = new TH1F("h_Z_phi_mumu", "Z boson #phi distribution (Z->#mu#mu)",
				   128, -3.2, 3.2);
    fHistZreco_phi_mumu_with_prob->SetXTitle("#phi (rad)");
    fHistZreco_phi_mumu_with_prob->SetYTitle("Number of Entries");
    fHistZreco_eta_mumu_with_prob = new TH1F("h_Z_eta_mumu", "Z boson #eta distribution (Z->#mu#mu)", 50, -5, 5);
    fHistZreco_eta_mumu_with_prob->SetXTitle("#eta");
    fHistZreco_eta_mumu_with_prob->SetYTitle("Number of Entries");
    fHistZreco_n_mumu_with_prob   = new TH1F("h_Z_n_mumu", "Reconstructed Z bosons per event (Z->#mu#mu)",
				   10, 0, 10);
    fHistZreco_n_mumu_with_prob->SetXTitle("N_{Z}/evt");
    fHistZreco_n_mumu_with_prob->SetYTitle("Number of Entries");
    fHistZreco_DeltaPhi_mumu_with_prob = new TH1F("h_Z_DeltaPhi_mumu", "Abs. Value of Phi(#mu+)-Phi(#mu-) (Z->#mu#mu)",
				 30,2,4);
    fHistZreco_DeltaPhi_mumu_with_prob->SetXTitle("|#Delta #phi_{#mu#mu}|");
    fHistZreco_DeltaPhi_mumu_with_prob->SetYTitle("# Events");
    
    gDirectory->cd("../");

    // muon (mu+) histograms in sub-folder
    gDirectory->mkdir("muplus", "mu+ from Z0 -> mumu");
    gDirectory->cd("muplus");
    
    fHistZreco_muplus_pt = new TH1F("h_Z_muplus_pt", "#mu^{+}-p_{#perp} (Z->#mu#mu)",
				   100, 0, 100);
    fHistZreco_muplus_pt->SetXTitle("p_{#perp} (GeV)");
    fHistZreco_muplus_pt->SetYTitle("Number of Entries");
    fHistZreco_muplus_eta = new TH1F("h_Z_muplus_eta", "mu^{+}:  #eta distribution (Z->#mu#mu)",
				    50, -3, 3);
    fHistZreco_muplus_eta->SetXTitle("#eta");
    fHistZreco_muplus_eta->SetYTitle("Number of Entries");
    fHistZreco_muplus_phi = new TH1F("h_Z_muplus_phi", "mu^{+}:  #phi distribution (Z->#mu#mu)",
				    50, -3.14, 3.14);
    fHistZreco_muplus_phi->SetXTitle("#phi");
    fHistZreco_muplus_phi->SetYTitle("Number of Entries");
    
    gDirectory->cd("../"); 
    
    // muon (mu-) histograms in sub-folder
    gDirectory->mkdir("muminus", "mu- from Z0 -> mumu");
    gDirectory->cd("muminus");
    
    fHistZreco_muminus_pt = new TH1F("h_Z_muminus_pt", "#mu^{-}-p_{#perp} (Z->#mu#mu)",
				    100, 0, 100);
    fHistZreco_muminus_pt->SetXTitle("p_{#perp} (GeV)");
    fHistZreco_muminus_pt->SetYTitle("Number of Entries");
    fHistZreco_muminus_eta = new TH1F("h_Z_muminus_eta", "mu^{-}:  #eta distribution (Z->#mu#mu)",
				     50, -3, 3);
    fHistZreco_muminus_eta->SetXTitle("#eta");
    fHistZreco_muminus_eta->SetYTitle("Number of Entries");
    fHistZreco_muminus_phi = new TH1F("h_Z_muminus_phi", "mu^{-}:  #phi distribution (Z->#mu#mu)",
				     50, -3.14, 3.14);
    fHistZreco_muminus_phi->SetXTitle("#phi");
    fHistZreco_muminus_phi->SetYTitle("Number of Entries");

    gDirectory->cd("../../");


    //
    // Z -> tautau
    // -----------
    gDirectory->mkdir("tautau", "Z0 -> tautau");
    gDirectory->cd("tautau");
    fHistZreco_m_tautau   = new TH1F("h_Z_m_tautau", "Invariant Z mass (Z->#tau#tau)",
				     50, 65, 115);
    fHistZreco_m_tautau->SetXTitle("m_{Z} (GeV)");
    fHistZreco_m_tautau->SetYTitle("Number of Entries");
    fHistZreco_pt_tautau  = new TH1F("h_Z_pt_tautau", "Z-p_{#perp} (Z->#tau#tau)",
				     100, 0, 200);
    fHistZreco_pt_tautau->SetXTitle("p_{#perp} (GeV)");
    fHistZreco_pt_tautau->SetYTitle("Number of Entries");
    fHistZreco_phi_tautau = new TH1F("h_Z_phi_tautau", "Z boson #phi distribution (Z->#tau#tau)",
				     128, -3.2, 3.2);
    fHistZreco_phi_tautau->SetXTitle("#phi (rad)");
    fHistZreco_phi_tautau->SetYTitle("Number of Entries");
    fHistZreco_eta_tautau = new TH1F("h_Z_eta_tautau", "Z boson #eta distribution (Z->#tau#tau)",
				     50, -5, 5);
    fHistZreco_eta_tautau->SetXTitle("#eta");
    fHistZreco_eta_tautau->SetYTitle("Number of Entries");
    fHistZreco_n_tautau   = new TH1F("h_Z_n_tautau", "Reconstructed Z bosons per event (Z->#tau#tau)",
				     10, 0, 10);
    fHistZreco_n_tautau->SetXTitle("N_{Z}/evt");
    fHistZreco_n_tautau->SetYTitle("Number of Entries");
    fHistZreco_DeltaPhi_tautau = new TH1F("h_Z_DeltaPhi_tautau", "Abs. Value of Phi(tau+)-Phi(tau-) (Z->#tau#tau)",
				 30,2,4);
    fHistZreco_DeltaPhi_tautau->SetXTitle("|#Delta #phi_{#tau#tau}|");
    fHistZreco_DeltaPhi_tautau->SetYTitle("# Events");
    gDirectory->cd("../");

    //
    // Z -> ll
    // -------
    gDirectory->mkdir("leptons", "Z0 -> ll");
    gDirectory->cd("leptons");
    fHistZreco_m_ll   = new TH1F("h_Z_m_ll", "Invariant Z mass (Z -> ll)",
				      50, 65, 115);
    fHistZreco_m_ll->SetXTitle("m_{Z} (GeV)");
    fHistZreco_m_ll->SetYTitle("Number of Entries");
    fHistZreco_pt_ll  = new TH1F("h_Z_pt_ll", "Z-p_{#perp} (Z -> ll)",
				      100, 0, 200);
    fHistZreco_pt_ll->SetXTitle("p_{#perp} (GeV)");
    fHistZreco_pt_ll->SetYTitle("Number of Entries");
    fHistZreco_phi_ll = new TH1F("h_Z_phi_ll", "Z boson #phi distribution (Z -> ll)",
				      128, -3.2, 3.2);
    fHistZreco_phi_ll->SetXTitle("#phi (rad)");
    fHistZreco_phi_ll->SetYTitle("Number of Entries");
    fHistZreco_eta_ll = new TH1F("h_Z_eta_ll", "Z boson #eta distribution (Z -> ll)",
				      50, -5, 5);
    fHistZreco_eta_ll->SetXTitle("#eta");
    fHistZreco_eta_ll->SetYTitle("Number of Entries");
    fHistZreco_n_ll   = new TH1F("h_Z_n_ll", "Reconstructed Z bosons per event (Z -> ll)",
				      10, 0, 10);
    fHistZreco_n_ll->SetXTitle("N_{Z}/evt");
    fHistZreco_n_ll->SetYTitle("Number of Entries");
    fHistZreco_DeltaPhi_ll = new TH1F("h_Z_DeltaPhi_ll", "Abs. Value of Phi(l+)-Phi(l-) (Z->ll)",
				 30,2,4);
    fHistZreco_DeltaPhi_ll->SetXTitle("|#Delta #phi_{ll}|");
    fHistZreco_DeltaPhi_ll->SetYTitle("# Events");
    
    gDirectory->cd("../../");
    
    // ===================
    // Book bkg histograms
    // ===================
    gDirectory->mkdir("Bkg", "Same charged candidates");
    gDirectory->cd("Bkg");

    //
    // Z -> ee
    // -------
    gDirectory->mkdir("ee", "Z0 -> ee");
    gDirectory->cd("ee");
    fHistZreco_m_ee_bkg   = new TH1F("h_Z_m_ee_bkg", "Bkg. Invariant Z mass (Z->ee)",
				     50, 65, 115);
    fHistZreco_m_ee_bkg->SetXTitle("m_{Z} (GeV)");
    fHistZreco_m_ee_bkg->SetYTitle("Number of Entries");
    fHistZreco_pt_ee_bkg  = new TH1F("h_Z_pt_ee_bkg", "Bkg. Z-p_{#perp} (Z->ee)",
				     100, 0, 200);
    fHistZreco_pt_ee_bkg->SetXTitle("p_{#perp} (GeV)");
    fHistZreco_pt_ee_bkg->SetYTitle("Number of Entries");
    fHistZreco_phi_ee_bkg = new TH1F("h_Z_phi_ee_bkg", "Bkg. Z boson #phi distribution (Z->ee)",
				     128, -3.2, 3.2);
    fHistZreco_phi_ee_bkg->SetXTitle("#phi (rad)");
    fHistZreco_phi_ee_bkg->SetYTitle("Number of Entries");
    fHistZreco_eta_ee_bkg = new TH1F("h_Z_eta_ee_bkg", "Bkg. Z boson #eta distribution (Z->ee)",
				     50, -5, 5);
    fHistZreco_eta_ee_bkg->SetXTitle("#eta");
    fHistZreco_eta_ee_bkg->SetYTitle("Number of Entries");
    fHistZreco_DeltaPhi_ee_bkg = new TH1F("h_Z_DeltaPhi_ee_bkg", "Abs. Value of Phi(e+)-Phi(e-) (Z->ee), Bkg.",
				     30,2,4);
    fHistZreco_DeltaPhi_ee_bkg->SetXTitle("|#Delta #phi_{ee}| Bkg.");
    fHistZreco_DeltaPhi_ee_bkg->SetYTitle("# Events");
    gDirectory->cd("../");

    //
    // Z -> mumu
    // ---------
    gDirectory->mkdir("mumu", "Z0 -> mumu");
    gDirectory->cd("mumu");
    fHistZreco_m_mumu_bkg   = new TH1F("h_Z_m_mumu_bkg", "Bkg. Invariant Z mass (Z->#mu#mu)",
				       50, 65, 115);
    fHistZreco_m_mumu_bkg->SetXTitle("m_{Z} (GeV)");
    fHistZreco_m_mumu_bkg->SetYTitle("Number of Entries");
    fHistZreco_pt_mumu_bkg  = new TH1F("h_Z_pt_mumu_bkg", "Bkg. Z-p_{#perp} (Z->#mu#mu)",
				       100, 0, 200);
    fHistZreco_pt_mumu_bkg->SetXTitle("p_{#perp} (GeV)");
    fHistZreco_pt_mumu_bkg->SetYTitle("Number of Entries");
    fHistZreco_phi_mumu_bkg = new TH1F("h_Z_phi_mumu_bkg", "Bkg. Z boson #phi distribution (Z->#mu#mu)",
				       128, -3.2, 3.2);
    fHistZreco_phi_mumu_bkg->SetXTitle("#phi (rad)");
    fHistZreco_phi_mumu_bkg->SetYTitle("Number of Entries");
    fHistZreco_eta_mumu_bkg = new TH1F("h_Z_eta_mumu_bkg", "Bkg. Z boson #eta distribution (Z->#mu#mu)",
				       50, -5, 5);
    fHistZreco_eta_mumu_bkg->SetXTitle("#eta");
    fHistZreco_eta_mumu_bkg->SetYTitle("Number of Entries");
    fHistZreco_DeltaPhi_mumu_bkg = new TH1F("h_Z_DeltaPhi_mumu_bkg", "Abs. Value of Phi(#mu+)-Phi(#mu-) (Z->#mu#mu), Bkg.",
				 30,2,4);
    fHistZreco_DeltaPhi_mumu_bkg->SetXTitle("|#Delta #phi_{#mu#mu}| Bkg.");
    fHistZreco_DeltaPhi_mumu_bkg->SetYTitle("# Events");
    gDirectory->cd("../");

    //
    // Z -> tautau
    // -----------
    gDirectory->mkdir("tautau", "Z0 -> tautau");
    gDirectory->cd("tautau");
    fHistZreco_m_tautau_bkg   = new TH1F("h_Z_m_tautau_bkg", "Invariant Z mass (Z->#tau#tau)",
					 50, 65, 115);
    fHistZreco_m_tautau_bkg->SetXTitle("m_{Z} (GeV)");
    fHistZreco_m_tautau_bkg->SetYTitle("Number of Entries");
    fHistZreco_pt_tautau_bkg  = new TH1F("h_Z_pt_tautau_bkg", "Z-p_{#perp} (Z->#tau#tau)",
					 100, 0, 200);
    fHistZreco_pt_tautau_bkg->SetXTitle("p_{#perp} (GeV)");
    fHistZreco_pt_tautau_bkg->SetYTitle("Number of Entries");
    fHistZreco_phi_tautau_bkg = new TH1F("h_Z_phi_tautau_bkg",
					 "Z boson #phi distribution (Z->#tau#tau)", 128, -3.2, 3.2);
    fHistZreco_phi_tautau_bkg->SetXTitle("#phi (rad)");
    fHistZreco_phi_tautau_bkg->SetYTitle("Number of Entries");
    fHistZreco_eta_tautau_bkg = new TH1F("h_Z_eta_tautau_bkg", "Z boson #eta distribution (Z->#tau#tau)",
					 50, -5, 5);
    fHistZreco_eta_tautau_bkg->SetXTitle("#eta");
    fHistZreco_eta_tautau_bkg->SetYTitle("Number of Entries");
    fHistZreco_DeltaPhi_tautau_bkg = new TH1F("h_Z_DeltaPhi_tautau_bkg",
					      "Abs. Value of Phi(#tau+)-Phi(#tau-) (Z->#tau#tau), Bkg.", 30,2,4);
    fHistZreco_DeltaPhi_tautau_bkg->SetXTitle("|#Delta #phi_{#tau#tau}| Bkg.");
    fHistZreco_DeltaPhi_tautau_bkg->SetYTitle("# Events");
    gDirectory->cd("../");

    //
    // Z -> ll
    // -------
    gDirectory->mkdir("leptons", "Z0 -> ll");
    gDirectory->cd("leptons");
    fHistZreco_m_ll_bkg   = new TH1F("h_Z_m_ll_bkg", "Invariant Z mass (Z -> ll)",
					  50, 65, 115);
    fHistZreco_m_ll_bkg->SetXTitle("m_{Z} (GeV)");
    fHistZreco_m_ll_bkg->SetYTitle("Number of Entries");
    fHistZreco_pt_ll_bkg  = new TH1F("h_Z_pt_ll_bkg", "Z-p_{#perp} (Z -> ll)",
					  100, 0, 200);
    fHistZreco_pt_ll_bkg->SetXTitle("p_{#perp} (GeV)");
    fHistZreco_pt_ll_bkg->SetYTitle("Number of Entries");
    fHistZreco_phi_ll_bkg = new TH1F("h_Z_phi_ll_bkg", "Z boson #phi distribution (Z -> ll)",
					  128, -3.2, 3.2);
    fHistZreco_phi_ll_bkg->SetXTitle("#phi (rad)");
    fHistZreco_phi_ll_bkg->SetYTitle("Number of Entries");
    fHistZreco_eta_ll_bkg = new TH1F("h_Z_eta_ll_bkg", "Z boson #eta distribution (Z -> ll)",
					  50, -5, 5);
    fHistZreco_eta_ll_bkg->SetXTitle("#eta");
    fHistZreco_eta_ll_bkg->SetYTitle("Number of Entries");
    fHistZreco_DeltaPhi_ll_bkg = new TH1F("h_Z_DeltaPhi_ll_bkg",
					      "Abs. Value of Phi(l+)-Phi(l-) (Z->ll), Bkg.", 30,2,4);
    fHistZreco_DeltaPhi_ll_bkg->SetXTitle("|#Delta #phi_{ll}| Bkg.");
    fHistZreco_DeltaPhi_ll_bkg->SetYTitle("# Events");

    gDirectory->cd("../../");

    
    
}


//____________________________________________________________________

Bool_t AtlZ0Finder::AnalyzeEvent() {
    //
    // Event analysis
    //

    /*  for(Int_t i=0; i<fEvent->GetN_Electrons(); i++){
	
	AtlElectron *elec = (AtlElectron*)fEvent->GetElectrons()->At(i);
	cout << "success" << endl;

	AtlIDTrack *trk = (AtlIDTrack*)elec->GetIDTrack();
	cout << "elec " << elec << " trk "<< trk << endl;
	elec->Print();

	}*/



    // Clean-up bkg list from previous event
    fBkgZ0Decays->Delete();
    
    // InitEvent
    InitEvent();

    // Fill MC histograms for true Z bosons, do it only if List is filled with MoneCarlo Particles
    if (fEvent->IsMC()){
	FillTruthHistograms();
    }

    // Require at least 2 leptons
    if ( !(( fModeLepton & kElectron && fSignalElectrons->GetEntries() >= 2 ) ||
	   ( fModeLepton & kMuon     && fSignalMuons->GetEntries()     >= 2 ) ||
	   ( fModeLepton & kTau      && fSignalTaus->GetEntries()      >= 2 )) ) return kFALSE;

    // Reconstruct Z0 decays
    if ( fMode == kKinFit ) {
            
	ReconstructZ0KinFit(fSignalElectrons);
	ReconstructZ0KinFit(fSignalMuons);
	//ReconstructZ0KinFit(fSignalTaus); No Tau Leptons used, Tau-Electron Fake Rate too high
    } else if ( fMode == kCutBased ) {
	ReconstructZ0CutBased(fSignalElectrons);
	ReconstructZ0CutBased(fSignalMuons);
	// ReconstructZ0CutBased(fSignalTaus); No Tau Leptons used, Tau-Electron fake rate too high
    } else {
	Error("AnalyzeEvent",
	      "Invalid mode given. Abort!");
	gSystem->Abort(0);
    }

    // Clean-up
    delete fSignalElectrons;
    delete fSignalMuons;
    delete fSignalTaus; 
    
    return kTRUE;
}

//____________________________________________________________________

void AtlZ0Finder::InitEvent() {
    //
    // Prepare event analysis
    //

    // Fill CutOverview Histogramm for electrons
    // Cut of Electrons in tight,high_pt,pt_max,pt_min,eta 
    //--------------------------------------------------------------------
    AtlElectron *et=0;
    Int_t tight=0;
    Int_t eta=0;
    Int_t etcone20=0;
    Int_t pt=0;
    Int_t highpt=0;
    for (Int_t i=0;i<fEvent->GetN_Electrons();i++){
	et=(AtlElectron*)fEvent->GetElectrons()->At(i);
	if (et->IsTight()){
	    tight++;
	    if ((et->Eta()>=-1.9) && (et->Eta()<=1.9)){
		if ((TMath::Abs(et->Eta())<=1.37)||(TMath::Abs(et->Eta())>=1.52) ){
	            eta++;
	            if (et->GetEtCone20()<=100.){
		       etcone20++;
		       if ((et->Pt()>=10.)&&(et->Pt()<=10.e10)){
		   	    pt++;
			    if (et->IsHighPtElectron()){
				    highpt++;
			    }
		       }
		    }    
		}
	}
	}
     }   
    //because you need 2 electrons for one Z0
    for (Int_t i=0; i<tight/2;i++){
	SetCutFlow("Cut of Tight electrons");//# of electrons divided 2
    }
    for (Int_t i=0; i<eta/2;i++){//# of electrons divided 2
	 SetCutFlow("Cut of Eta");
    }
    for (Int_t i=0; i<etcone20/2;i++){//# of electrons divided 2
 	 SetCutFlow("Cut of EtCone20");
    }
    for (Int_t i=0; i<pt/2;i++){//# of electrons divided 2
 	 SetCutFlow("Cut of Pt");
    }
    for (Int_t i=0;i<highpt/2;i++){
	SetCutFlow("Cut of HighPtElectron");
    }
    //end of filling histogramm-------------------------------------------------
        //Get Leptons for analyze event
    if(fModeLepton & kElectron){
        fSignalElectrons = fEvent->GetElectrons(fSignalElectronAuthor,
	                         	        fSignalElectronIsEM,
					        fSignalElectron_Pt_min,
					        fSignalElectron_Pt_max,
					        fSignalElectron_Eta_min,
					        fSignalElectron_Eta_max,
					        fSignalElectron_EtCone20_max);
         }
    if (fModeLepton & kMuon) {
        fSignalMuons = fEvent->GetMuons(fSignalMuonAuthor,
				        fSignalMuon_Pt_min,
				        fSignalMuon_Pt_max,
				        fSignalMuon_Eta_min,
				        fSignalMuon_Eta_max,
				        fSignalMuon_Chi2_max,
				        fSignalMuon_EtCone20_max);
       }
    // if (fModeLepton & kTau) {
    //     fSignalTaus = fEvent->GetTaus(fSignalTauAuthor,
    //                                   fSignalTauAuthorFlag,
    // 				      fSignalTau_Pt_min,
    // 				      fSignalTau_Pt_max,
    // 				      fSignalTau_Eta_min,
    // 				      fSignalTau_Eta_max);
    // 	}
    // Tau lists are being filled :)ss
}

//____________________________________________________________________

void AtlZ0Finder::ReconstructZ0CutBased(TList *SignalLeptons) {
    //
    // Cut Based Z-boson reconstruction from lepton-pairs
    //
    
    // Iterators over particles
    TIter next_l1(SignalLeptons);

    HepParticle *l1 = 0;
    HepParticle *l2 = 0;
    TLorentzVector p_l1;
    TLorentzVector p_l2;
    TLorentzVector p_Z;
    
    while ( (l1 = (HepParticle*)next_l1()) ) {
	TIter next_l2(SignalLeptons);
        while ( (l2 = (HepParticle*) next_l2()) ) {
	    if ( l1 == l2 ) continue;
	    
            // Get lepton 4-momentum
            p_l1 = l1->P();
            p_l2 = l2->P();
            
            // Reconstruct Z0 4-momentum
            p_Z = p_l1 + p_l2;
            Float_t m_Z = p_Z.M();
            
            // Use only m_in in Z Mass peak
            if ( ( m_Z > fZBoson_M_min ) && ( m_Z < fZBoson_M_max ) ) {
		if (fchargetest && (l1->Charge()*l2->Charge() > 0.) ) {  // Add oppositely charged combinations to the event
		    HepParticle Fit_Daughter1(1,p_l1.Px(),p_l1.Py(),
					      p_l1.Pz(), p_l1.E(),l1->GetPdgCode());
		    HepParticle Fit_Daughter2(2,p_l2.Px(),p_l2.Py(),
					      p_l2.Pz(), p_l2.E(),l2->GetPdgCode());
		    fBkgZ0Decays->Add(new HepZ0Decay(1, p_Z.Px(), p_Z.Py(), p_Z.Pz(), p_Z.E(),
						     (TObject*)l1, (TObject*)l2,
						     Fit_Daughter1, Fit_Daughter2));
		    
		} else { // Add same charged combinations to the bkg list
		    HepParticle Fit_Daughter1(1,p_l1.Px(),p_l1.Py(),
					      p_l1.Pz(), p_l1.E(),l1->GetPdgCode());
		    HepParticle Fit_Daughter2(2,p_l2.Px(),p_l2.Py(),
					      p_l2.Pz(), p_l2.E(),l2->GetPdgCode());
		    fEvent->AddZ0Decay(p_Z.Px(), p_Z.Py(), p_Z.Pz(), p_Z.E(),
				       (TObject*)l1, (TObject*)l2,
 				       Fit_Daughter1, Fit_Daughter2);
		}
	    }
            SignalLeptons->Remove(l1);
        }
	
    }
}

//____________________________________________________________________

void AtlZ0Finder::ReconstructZ0KinFit(TList *SignalLeptons) {
    //
    // Z-boson reconstruction from lepton-pairs using KinFitter
    //
    if (SignalLeptons!=0){
	for (Int_t i=0;i< (SignalLeptons->GetEntries()/2);i++){
	    SetCutFlow("# Cut of all at same time");
	}
	// Iterators over particles
	TIter next_l1(SignalLeptons);
	
	HepParticle *l1 = 0;    
	HepParticle *l2 = 0;    
	TLorentzVector p_Z;   

	TVector3 p_l1;   
	TVector3 p_l2;   

	Double_t pt_true;
	Double_t eta_true;
	Double_t phi_true;
	Double_t pt_reco;
	Double_t eta_reco;
	Double_t phi_reco;
	
	HepMCParticle *l1True = 0;
	HepMCParticle *l2True = 0;
	
	Double_t cp, ceta,cphi;
	// -------------------------------------------
	
	while ( (l1 = (HepParticle*)next_l1()) ) {
	    TIter next_l2(SignalLeptons);
	    while ( (l2 = (HepParticle*) next_l2()) ) {
		if ( l1 == l2 ) continue;
		
		// Get lepton 3-momentum
		p_l1 = l1->P3();
		p_l2 = l2->P3();
		
		// Get Covariance Matrices from TrackFit (inner detector track)
		TMatrixD cov_l1(3,3);
		TMatrixD cov_l2(3,3);
		
		//still not working because of failing covariance matrices in Zee samples
		l1->GetCovMatrixPtEtaPhi(cov_l1);
		l2->GetCovMatrixPtEtaPhi(cov_l2);
		
		// define particels necessary for execution of the fit
		TFitParticlePtEtaPhi FitExec_l1("FitExec_l1","FitExec_l1",&p_l1,l1->Mass(),&cov_l1);
		TFitParticlePtEtaPhi FitExec_l2("FitExec_l2","FitExec_l2",&p_l2,l2->Mass(),&cov_l2);
		
		// definition of Z-Boson mass constraint
		TFitConstraintMGaus MZCons("ZMassConstraint","ZMassConstraintGaus", 0, 0, 91.2, 2.5);
		MZCons.addParticles1(&FitExec_l1,&FitExec_l2);
		
		// definition of transverse momentum-conservation
		vector<TAbsFitParticle*> vec_constraint;
		vec_constraint.push_back(&FitExec_l1);
		vec_constraint.push_back(&FitExec_l2);
		
		TFitConstraintEpGaus PxCons(&vec_constraint, TFitConstraintEp::pX,0.0001,8.1);
		TFitConstraintEpGaus PyCons(&vec_constraint, TFitConstraintEp::pY,0.0001,8.1);
		
		// fitting characteristics
		TKinFitter fitter;
		
		fitter.addMeasParticle(&FitExec_l1);
		fitter.addMeasParticle(&FitExec_l2);
		
		fitter.addConstraint(&MZCons);
		fitter.setMaxNbIter(2000);   // maximum number of iterations
		fitter.setMaxDeltaS(5e-5); // maximum deviation of the minimum function within two iterations
		fitter.setMaxF(1e-4);      // maximum value of constraints
		fitter.setVerbosity(0);    // verbosity level
		
		// Kinematic Fitting
		fitter.fit();
		
		// Fill Histogram IF(!) the fit converged (fitter.getStatus==0)
		if ( fitter.getS()<0. ) {
		    //fitter.printMatrices();
		    Error("ReconstructZ0KinFit",
			  "fitter.getS()<0. Abort!");
		    gSystem->Abort(0);
		}
		if(  fitter.getStatus() ) { cout << endl << "DIVERGENCE" << endl; }
		if( ! fitter.getStatus() ) {
		cout<<endl<<"geht doch weiter"<<endl;
		// Copy fittet Vectors
		// define momentum used as output of the fit
		TLorentzVector FitP_l1;
		TLorentzVector FitP_l2;
		
		FitP_l1=(*FitExec_l1.getCurr4Vec());
		FitP_l2=(*FitExec_l2.getCurr4Vec());
		// Reconstruct Z0 4-momentum
		p_Z = FitP_l1 + FitP_l2;
		SetChi2(fitter.getS());
		
	        
		SetNDoF(fitter.getNDF());
		SetNbIter(fitter.getNbIter());
		SetConsValue(fitter.getF());
		
		
		// Add Z0 to event fill the signal list
		// the user can decide, if the Z0-Finder should do the charge test or not
		SetCutFlow("#Z0 without chargetest");
		
		
		
		if (fchargetest && (l1->Charge()*l2->Charge() > 0.) ) {//fill Bkg list
		    HepParticle Fit_Daughter1(1,FitP_l1.Px(),FitP_l1.Py(),
					      FitP_l1.Pz(), FitP_l1.E(),l1->GetPdgCode());
		    HepParticle Fit_Daughter2(2,FitP_l2.Px(),FitP_l2.Py(),
					      FitP_l2.Pz(), FitP_l2.E(),l2->GetPdgCode());
		    fBkgZ0Decays->Add(new HepZ0Decay(1, p_Z.Px(), p_Z.Py(), p_Z.Pz(), p_Z.E(),
						     (TObject*)l1, (TObject*)l2,
						     Fit_Daughter1, Fit_Daughter2));
		}else{
		    HepParticle Fit_Daughter1(1,FitP_l1.Px(),FitP_l1.Py(),
					      FitP_l1.Pz(), FitP_l1.E(),l1->GetPdgCode());
		    HepParticle Fit_Daughter2(2,FitP_l2.Px(),FitP_l2.Py(),
					      FitP_l2.Pz(), FitP_l2.E(),l2->GetPdgCode());
		    fEvent->AddZ0Decay(p_Z.Px(), p_Z.Py(), p_Z.Pz(), p_Z.E(),
				       (TObject*)l1, (TObject*)l2,
 				       Fit_Daughter1, Fit_Daughter2);
		    SetCutFlow("#Z0 after chargetest");
		}
		
		
			
		
		if (fEvent->IsMC()){
		    // small resolution study ---------------------------------------------
		    
		    l1True=fEvent->FindMatchedMCParticle((HepParticle*)l1,false,0.1,0.1);
		    l2True=fEvent->FindMatchedMCParticle((HepParticle*)l2,false,0.1,0.1);
		    if (l1True!=0 && l1True->IsElectron()) {
			pt_true=l1True->Pt();
			eta_true=l1True->Eta();
			phi_true=l1True->Phi();
			pt_reco=l1->Pt();
			eta_reco=l1->Eta();
			phi_reco=l1->Phi();
			cp= (pt_reco-pt_true)/pt_true;
			ceta=(eta_reco-eta_true)/eta_true;
			cphi=(phi_reco-phi_true)/phi_true;
			fHist_Zee_PtRes->Fill( cp, GetPreTagEvtWeight() );
			fHist_Zee_EtaRes->Fill(  ceta, GetPreTagEvtWeight() );
			fHist_Zee_PhiRes->Fill(  cphi, GetPreTagEvtWeight() );
			if ( cp*cp<0.09 && TMath::Abs(ceta)<0.01 && TMath::Abs(cphi)<0.005 ) {
			    // prevent from very bad matching distorting the result
			    c11+=cp*cp;
			    c22+=ceta*ceta;
			    c33+=cphi*cphi;
			    c12+=cp*ceta;
			    c13+=cp*cphi;
			    c23+=ceta*cphi;
			    TruthMatchCounter++;
			}
		   }
		    
		   // resolution study finished --------------------------------------------





		    
		   // computation of efficiency

		    fTrueReco = false;
		    HepZ0Decay    *ZBoson = 0;              // reconstructed Z Boson
		    HepMCParticle *MCprt  = 0;              // true Z Boson if ZBoson is matched


		    if( fEvent->GetN_Z0Decays() != 0 ){
			ZBoson = (HepZ0Decay*)fEvent->GetZ0Decays()->At(fEvent->GetN_Z0Decays()-1); // Get latest reconstructed


			// Z Boson
			ZBoson->SetChi2NDoF(fitter.getS(),fitter.getNDF());
			
			MCprt = fEvent->FindMatchedMCParticle((HepParticle*)ZBoson,false,0.3,0.8);  // Z Boson truth matched?
			if ( (MCprt != 0) && (MCprt->IsZ0Boson()) ) {
			fTrueReco = true;
			}
			
			// Use Mass of true Z boson (MZ_true)
			// MZ_true already set in FillTruthHistograms
			// attention: this is done for Z+jets MC samples where you always have
			// exactly one Z boson

			Double_t prob;
			Double_t loss;
			prob=TMath::Prob(fitter.getS(),fitter.getNDF());

			
			if ( l1True!=0 && l1True->IsElectron() && l2True!=0 && l2True->IsElectron() ) {
			loss=l1True->GetBremsLoss()+l2True->GetBremsLoss();
			fHist_Zee_BremslossProb->Fill( prob ,loss , GetPreTagEvtWeight() );
			}
			
			// histograms to compare prob with true Z pt, E and final state radiation
			
			TList *Z0BosonsTrue = fEvent->GetMCParticles("Z0");
			HepMCParticle *Z0True = 0;
			TIter nextZ0(Z0BosonsTrue);
			
			while ( (Z0True = (HepMCParticle*)nextZ0()) ) {
			    if ( Z0True->IsGoodMother() ) {
				fHist_Zee_ZPtProb->Fill(Z0True->Pt(),prob,GetPreTagEvtWeight());
				fHist_Zee_ZEProb->Fill(Z0True->E(),prob,GetPreTagEvtWeight());
				fHist_Zee_ZMProb->Fill(TMath::Abs((Z0True->M("REC")-91.2)/91.2),prob,GetPreTagEvtWeight());
				if ( Z0True->GetN_Daughters()>2 ) {
				    fHist_Zee_RadProb->Fill(prob,GetPreTagEvtWeight());
				}
			    }
			}
			
		    }
		    AtlKinFitterTool::FillHistograms("Signal");
		} // is mc
		
		SignalLeptons->Remove(l1);
		
	    } // end get status
	    } // loop l2
	} // loop l1
	

    } // signal leptons
}


//____________________________________________________________________

void AtlZ0Finder::FillTruthHistograms() {
    
    // build histograms for all true Z Bosons (#Events vs. M_Z)
    
    TList *Z0BosonsTrue = fEvent->GetMCParticles("Z0");
    HepMCParticle *Z0True = 0;
    TIter nextZ0(Z0BosonsTrue);
    
    while ( (Z0True = (HepMCParticle*)nextZ0()) ) {

	if ( Z0True->IsGoodMother() ) {
	    
	    if (fMode==kKinFit) {
		SetX_TruthHistograms(Z0True->Mass("REC"));
		AtlKinFitterTool::FillHistograms("Truth");
	    
	    }
	
    }
    }
    
    // Clean-up
    delete Z0BosonsTrue;
    
    }

//____________________________________________________________________

void AtlZ0Finder::FillHistograms() {
    //
    // Fill histograms
    //
    // This method will be called only for events surviving the
    // ProcessCut() routine
    //
    SetCutFlow("# of Events");
    if ( fEvent->GetN_Z0Decays() < 1 ) return;
    
    HepZ0Decay *Z0 = 0;
    Float_t M   = 0.;
    Float_t Pt  = 0.;
    Float_t Phi = 0.;
    Float_t Eta = 0.;
    Int_t n_ee = 0;
    Int_t n_mumu = 0;
    Int_t n_tautau = 0;

    // electron variables
    HepParticle *DaughterPlus =0;
    HepParticle *DaughterMinus=0;
    HepParticle *DaughterDummy=0;
    Float_t DaughterPlus_Pt   =0.;
    Float_t DaughterMinus_Pt  =0.;
    Float_t DaughterPlus_Eta  =0.;
    Float_t DaughterMinus_Eta =0.;
    Float_t DaughterPlus_Phi  =0.;
    Float_t DaughterMinus_Phi =0.;    
    
    // TODO: jets

    // Signal (opposite charged)
    for ( Int_t i = 0; i < fEvent->GetN_Z0Decays(); i++ ) {
	Z0 = (HepZ0Decay*)fEvent->GetZ0Decays()->At(i);
       	M   = Z0->M("Reco");
	Pt  = Z0->Pt();
	Phi = Z0->Phi();
	Eta = Z0->Eta();
		
	if ( ((HepParticle*)Z0->GetDaughter1())->IsElectron() ) {
	    SetCutFlow("Z->ee");
	    if (Z0->GetProb()>0.2){
		SetCutFlow("Cut of Probability");
		fHistZreco_m_ee_with_prob ->Fill(M,GetPreTagEvtWeight());
	    }
	    // =======
	    // Z -> ee
	    // =======
	    fHistZreco_m_ee     ->Fill(M,    GetPreTagEvtWeight());
	    fHistZreco_pt_ee    ->Fill(Pt ,  GetPreTagEvtWeight());  
	    fHistZreco_phi_ee   ->Fill(Phi,  GetPreTagEvtWeight()); 
	    fHistZreco_eta_ee   ->Fill(Eta,  GetPreTagEvtWeight());
	    fHistZreco_prob_ee  ->Fill(Z0->GetProb(),GetPreTagEvtWeight());
	    n_ee++;
	    
	    // e+/e- daughters
	    DaughterDummy =(HepParticle*)Z0->GetDaughter1();
	    if(DaughterDummy->Charge() < 0){
		DaughterMinus = DaughterDummy;
	        DaughterPlus  =(HepParticle*)Z0->GetDaughter2();
	    }else{
		DaughterPlus  = DaughterDummy;
	        DaughterMinus =(HepParticle*)Z0->GetDaughter2();
	    }
	    DaughterPlus_Pt  = DaughterPlus ->Pt();  DaughterMinus_Pt  = DaughterMinus->Pt();
	    DaughterPlus_Eta = DaughterPlus ->Eta(); DaughterMinus_Eta = DaughterMinus ->Eta();
	    DaughterPlus_Phi = DaughterPlus ->Phi(); DaughterMinus_Phi = DaughterMinus ->Phi();
	    fHistZreco_eplus_pt  ->Fill(DaughterPlus_Pt,  GetPreTagEvtWeight());
	    fHistZreco_eplus_eta ->Fill(DaughterPlus_Eta, GetPreTagEvtWeight());
	    fHistZreco_eplus_phi ->Fill(DaughterPlus_Phi, GetPreTagEvtWeight());
	    fHistZreco_eminus_pt ->Fill(DaughterMinus_Pt, GetPreTagEvtWeight());
	    fHistZreco_eminus_eta->Fill(DaughterMinus_Eta,GetPreTagEvtWeight());
	    fHistZreco_eminus_phi->Fill(DaughterMinus_Phi,GetPreTagEvtWeight());

	    fHistZreco_DeltaPhi_ee->Fill(TMath::Abs(DaughterPlus_Phi-DaughterMinus_Phi),GetPreTagEvtWeight());
	    fHistZreco_DeltaPhi_ll->Fill(TMath::Abs(DaughterPlus_Phi-DaughterMinus_Phi),GetPreTagEvtWeight());
	    
	} else if ( ((HepParticle*)Z0->GetDaughter1())->IsMuon() ) {
	    SetCutFlow("Z->MuMu");
	    if (Z0->GetProb()>0.2){
		SetCutFlow("Cut of Probability");
		fHistZreco_m_mumu_with_prob->Fill(M, GetPreTagEvtWeight());
	    }


	    // =========
	    // Z -> mumu
	    // =========
	    fHistZreco_m_mumu     ->Fill(M,    GetPreTagEvtWeight());
	    fHistZreco_pt_mumu    ->Fill(Pt ,  GetPreTagEvtWeight());  
	    fHistZreco_phi_mumu   ->Fill(Phi,  GetPreTagEvtWeight()); 
	    fHistZreco_eta_mumu   ->Fill(Eta,  GetPreTagEvtWeight());
	    fHistZreco_prob_mumu  ->Fill(Z0->GetProb(),GetPreTagEvtWeight());
	    n_mumu++;

	     // mu+/mu- daughters
	    DaughterDummy =(HepParticle*)Z0->GetDaughter1();
	    if(DaughterDummy->Charge() < 0){
		DaughterMinus = DaughterDummy;
	        DaughterPlus  =(HepParticle*)Z0->GetDaughter2();
	    }else{
		DaughterPlus  = DaughterDummy;
	        DaughterMinus =(HepParticle*)Z0->GetDaughter2();
	    }
	    DaughterPlus_Pt  = DaughterPlus ->Pt();  DaughterMinus_Pt  = DaughterMinus->Pt();
	    DaughterPlus_Eta = DaughterPlus ->Eta(); DaughterMinus_Eta = DaughterMinus ->Eta();
	    DaughterPlus_Phi = DaughterPlus ->Phi(); DaughterMinus_Phi = DaughterMinus ->Phi();
	    fHistZreco_muplus_pt  ->Fill(DaughterPlus_Pt,  GetPreTagEvtWeight());
	    fHistZreco_muplus_eta ->Fill(DaughterPlus_Eta, GetPreTagEvtWeight());
	    fHistZreco_muplus_phi ->Fill(DaughterPlus_Phi, GetPreTagEvtWeight());
	    fHistZreco_muminus_pt ->Fill(DaughterMinus_Pt, GetPreTagEvtWeight());
	    fHistZreco_muminus_eta->Fill(DaughterMinus_Eta,GetPreTagEvtWeight());
	    fHistZreco_muminus_phi->Fill(DaughterMinus_Phi,GetPreTagEvtWeight());

	    fHistZreco_DeltaPhi_mumu->Fill(TMath::Abs(DaughterPlus_Phi-DaughterMinus_Phi),GetPreTagEvtWeight());
	    fHistZreco_DeltaPhi_ll->Fill(TMath::Abs(DaughterPlus_Phi-DaughterMinus_Phi),GetPreTagEvtWeight());
	   
	} // else if ( ((HepParticle*)Z0->GetDaughter1())->IsTau() ) {
// 	    SetCutFlow("Z->TauTau");
// 	    ===========
// 	    Z -> tautau
// 	    ===========
// 	    fHistZreco_m_tautau     ->Fill(M,    GetPreTagEvtWeight());
// 	    fHistZreco_pt_tautau    ->Fill(Pt ,  GetPreTagEvtWeight());  
// 	    fHistZreco_phi_tautau   ->Fill(Phi,  GetPreTagEvtWeight()); 
// 	    fHistZreco_eta_tautau   ->Fill(Eta,  GetPreTagEvtWeight());
// 	    n_tautau++;

// 	    tau+/tau- daughters
// 	    DaughterDummy =(HepParticle*)Z0->GetDaughter1();
// 	    if(DaughterDummy->Charge() < 0){
// 		DaughterMinus = DaughterDummy;
// 	        DaughterPlus  =(HepParticle*)Z0->GetDaughter2();
// 	    }else{
// 		DaughterPlus  = DaughterDummy;
// 	        DaughterMinus =(HepParticle*)Z0->GetDaughter2();
// 	    }
// 	    DaughterPlus_Phi = DaughterPlus ->Phi(); DaughterMinus_Phi = DaughterMinus ->Phi();
// 	    fHistZreco_DeltaPhi_tautau->Fill(TMath::Abs(DaughterPlus_Phi-DaughterMinus_Phi),GetPreTagEvtWeight());
// 	    fHistZreco_DeltaPhi_ll->Fill(TMath::Abs(DaughterPlus_Phi-DaughterMinus_Phi),GetPreTagEvtWeight());
	    
// 	}
	
	// =======
	// Z -> ll
	// =======
        fHistZreco_m_ll   ->Fill(M,    GetPreTagEvtWeight());
        fHistZreco_pt_ll  ->Fill(Pt ,  GetPreTagEvtWeight());  
        fHistZreco_phi_ll ->Fill(Phi,  GetPreTagEvtWeight()); 
        fHistZreco_eta_ll ->Fill(Eta,  GetPreTagEvtWeight()); 
    }
    for (Int_t i=0;i<TruthMatchCounter;i++){
	if (Z0->GetProb()>0.2){
		SetCutFlow("# of Z matched true");
	    }
    }
	
    // Z0 numbers / evt
    fHistZreco_n_ee     ->Fill(n_ee, GetPreTagEvtWeight());
    fHistZreco_n_mumu   ->Fill(n_mumu, GetPreTagEvtWeight());
    fHistZreco_n_tautau ->Fill(n_tautau, GetPreTagEvtWeight());
    fHistZreco_n_ll->Fill(n_ee+n_mumu+n_tautau, GetPreTagEvtWeight());    

    // Combinatorial bkg. (same charged)
    TIter next(fBkgZ0Decays);

    while ( (Z0 = (HepZ0Decay*)next()) ) {    
      	
      M   = Z0->M("Reco");
      Pt  = Z0->Pt();
      Phi = Z0->Phi();
      Eta = Z0->Eta();
      
	if ( ((HepParticle*)Z0->GetDaughter1())->IsElectron() ) {
	    // =======
	    // Z -> ee
	    // =======
	    fHistZreco_m_ee_bkg  ->Fill(M,   GetPreTagEvtWeight());
	    fHistZreco_pt_ee_bkg ->Fill(Pt,  GetPreTagEvtWeight());  
	    fHistZreco_phi_ee_bkg->Fill(Phi, GetPreTagEvtWeight()); 
	    fHistZreco_eta_ee_bkg->Fill(Eta, GetPreTagEvtWeight());

	    // e+/e- daughters
	    DaughterDummy =(HepParticle*)Z0->GetDaughter1();
	    if(DaughterDummy->Charge() < 0){
		DaughterMinus = DaughterDummy;
	        DaughterPlus  =(HepParticle*)Z0->GetDaughter2();
	    }else{
		DaughterPlus  = DaughterDummy;
	        DaughterMinus =(HepParticle*)Z0->GetDaughter2();
	    }
	    DaughterPlus_Phi = DaughterPlus ->Phi(); DaughterMinus_Phi = DaughterMinus ->Phi();
	    fHistZreco_DeltaPhi_ee_bkg->Fill(TMath::Abs(DaughterPlus_Phi-DaughterMinus_Phi),GetPreTagEvtWeight());
	    fHistZreco_DeltaPhi_ll_bkg->Fill(TMath::Abs(DaughterPlus_Phi-DaughterMinus_Phi),GetPreTagEvtWeight());
	    
	    
	} else if ( ((HepParticle*)Z0->GetDaughter1())->IsMuon() ) {
	    // =========
	    // Z -> mumu
	    // =========
	    fHistZreco_m_mumu_bkg  ->Fill(M,   GetPreTagEvtWeight());
	    fHistZreco_pt_mumu_bkg ->Fill(Pt , GetPreTagEvtWeight());  
	    fHistZreco_phi_mumu_bkg->Fill(Phi, GetPreTagEvtWeight()); 
	    fHistZreco_eta_mumu_bkg->Fill(Eta, GetPreTagEvtWeight());

	    // mu+/mu- daughters
	    DaughterDummy =(HepParticle*)Z0->GetDaughter1();
	    if(DaughterDummy->Charge() < 0){
		DaughterMinus = DaughterDummy;
	        DaughterPlus  =(HepParticle*)Z0->GetDaughter2();
	    }else{
		DaughterPlus  = DaughterDummy;
	        DaughterMinus =(HepParticle*)Z0->GetDaughter2();
	    }
	    DaughterPlus_Phi = DaughterPlus ->Phi(); DaughterMinus_Phi = DaughterMinus ->Phi();
	    fHistZreco_DeltaPhi_mumu_bkg->Fill(TMath::Abs(DaughterPlus_Phi-DaughterMinus_Phi),GetPreTagEvtWeight());
	    fHistZreco_DeltaPhi_ll_bkg->Fill(TMath::Abs(DaughterPlus_Phi-DaughterMinus_Phi),GetPreTagEvtWeight());
	    
	} else if ( ((HepParticle*)Z0->GetDaughter1())->IsTau() ) {
	    // ===========
	    // Z -> tautau
	    // ===========
	    fHistZreco_m_tautau_bkg  ->Fill(M,   GetPreTagEvtWeight());
	    fHistZreco_pt_tautau_bkg ->Fill(Pt , GetPreTagEvtWeight());  
	    fHistZreco_phi_tautau_bkg->Fill(Phi, GetPreTagEvtWeight()); 
	    fHistZreco_eta_tautau_bkg->Fill(Eta, GetPreTagEvtWeight());

	    //tau+/tau- daughters
	    DaughterDummy =(HepParticle*)Z0->GetDaughter1();
	    if(DaughterDummy->Charge() < 0){
		DaughterMinus = DaughterDummy;
	        DaughterPlus  =(HepParticle*)Z0->GetDaughter2();
	    }else{
		DaughterPlus  = DaughterDummy;
	        DaughterMinus =(HepParticle*)Z0->GetDaughter2();
	    }
	    DaughterPlus_Phi = DaughterPlus ->Phi(); DaughterMinus_Phi = DaughterMinus ->Phi();
	    fHistZreco_DeltaPhi_tautau_bkg->Fill(TMath::Abs(DaughterPlus_Phi-DaughterMinus_Phi),GetPreTagEvtWeight());
	    fHistZreco_DeltaPhi_ll_bkg->Fill(TMath::Abs(DaughterPlus_Phi-DaughterMinus_Phi),GetPreTagEvtWeight());
	    
	}
	// =======
	// Z -> ll
	// =======
        fHistZreco_m_ll_bkg  ->Fill(M,   GetPreTagEvtWeight());
        fHistZreco_pt_ll_bkg ->Fill(Pt , GetPreTagEvtWeight());
        fHistZreco_phi_ll_bkg->Fill(Phi, GetPreTagEvtWeight()); 
        fHistZreco_eta_ll_bkg->Fill(Eta, GetPreTagEvtWeight()); 
    } 
}

//____________________________________________________________________

void AtlZ0Finder::SetCutDefaults() {
    //
    // Selection cut defaults
    //
    
    // =======
    // Leptons
    // =======
    
    // Electrons
    fSignalElectronAuthor        = AtlEMShower::kHighPtElectron;
    fSignalElectronIsEM          = AtlEMShower::kElectronTight;
    fSignalElectron_Pt_min       = 10.0;
    fSignalElectron_Pt_max       = 10.e10;
    fSignalElectron_Eta_min      = -1.9;
    fSignalElectron_Eta_max      = 1.9;
    fSignalElectron_EtCone20_max = 100.;
    
    // Muons
    fSignalMuonAuthor        = AtlMuon::kSTACO;
    fSignalMuon_Pt_min       = 10.0;
    fSignalMuon_Pt_max       = 10.e10;
    fSignalMuon_Eta_min      = -1.9;
    fSignalMuon_Eta_max      = 1.9;
    fSignalMuon_Chi2_max     = 4.;
    fSignalMuon_EtCone20_max = 100.;

    // Taus
    // fSignalTauAuthor        = AtlTau::kTauRec;
    // fSignalTauAuthorFlag    = AtlTau::kTauCutTight;
    fSignalTau_Pt_min       = 10.0;
    fSignalTau_Pt_max       = 10.e10;
    fSignalTau_Eta_min      = -1.9;
    fSignalTau_Eta_max      = 1.9;

    // ============
    // Z mass range
    // ============

    // Z Boson
    fZBoson_M_min       = 65.0;
    fZBoson_M_max       = 115.0;
    
}

//____________________________________________________________________

void AtlZ0Finder::Terminate() {

    // small resolution study - electron covariance matrix
    // all matrix elements represent relative quantities
    // e.g. mean value of [(pt_true-pt_reco)/pt_true]^2
   
	c11=c11/TruthMatchCounter;
	c22=c22/TruthMatchCounter;
	c33=c33/TruthMatchCounter;
	c12=c12/TruthMatchCounter;
	c13=c13/TruthMatchCounter;
	c23=c23/TruthMatchCounter;

	//cout << "\n\nCovariance Matrix of Electrons" << endl;
	//cout << "--------------------------------" << endl;
	//cout << c11 << " " << c12 << " " << c13 << endl;
	//cout << c12 << " " << c22 << " " << c23 << endl;
	//cout << c13 << " " << c23 << " " << c33 << endl;
	//cout << endl << endl;

	//cout << "TruthMatchCounter: " << TruthMatchCounter << endl;
	
    if ( fMode==kKinFit ) {
    
	// gDirectory->cd("Z0Reco/Fitter/TruthMatching");
    AtlKinFitterTool::Terminate();
    gDirectory->cd("../../");

    }
    
}
 AtlZ0Finder.cxx:1
 AtlZ0Finder.cxx:2
 AtlZ0Finder.cxx:3
 AtlZ0Finder.cxx:4
 AtlZ0Finder.cxx:5
 AtlZ0Finder.cxx:6
 AtlZ0Finder.cxx:7
 AtlZ0Finder.cxx:8
 AtlZ0Finder.cxx:9
 AtlZ0Finder.cxx:10
 AtlZ0Finder.cxx:11
 AtlZ0Finder.cxx:12
 AtlZ0Finder.cxx:13
 AtlZ0Finder.cxx:14
 AtlZ0Finder.cxx:15
 AtlZ0Finder.cxx:16
 AtlZ0Finder.cxx:17
 AtlZ0Finder.cxx:18
 AtlZ0Finder.cxx:19
 AtlZ0Finder.cxx:20
 AtlZ0Finder.cxx:21
 AtlZ0Finder.cxx:22
 AtlZ0Finder.cxx:23
 AtlZ0Finder.cxx:24
 AtlZ0Finder.cxx:25
 AtlZ0Finder.cxx:26
 AtlZ0Finder.cxx:27
 AtlZ0Finder.cxx:28
 AtlZ0Finder.cxx:29
 AtlZ0Finder.cxx:30
 AtlZ0Finder.cxx:31
 AtlZ0Finder.cxx:32
 AtlZ0Finder.cxx:33
 AtlZ0Finder.cxx:34
 AtlZ0Finder.cxx:35
 AtlZ0Finder.cxx:36
 AtlZ0Finder.cxx:37
 AtlZ0Finder.cxx:38
 AtlZ0Finder.cxx:39
 AtlZ0Finder.cxx:40
 AtlZ0Finder.cxx:41
 AtlZ0Finder.cxx:42
 AtlZ0Finder.cxx:43
 AtlZ0Finder.cxx:44
 AtlZ0Finder.cxx:45
 AtlZ0Finder.cxx:46
 AtlZ0Finder.cxx:47
 AtlZ0Finder.cxx:48
 AtlZ0Finder.cxx:49
 AtlZ0Finder.cxx:50
 AtlZ0Finder.cxx:51
 AtlZ0Finder.cxx:52
 AtlZ0Finder.cxx:53
 AtlZ0Finder.cxx:54
 AtlZ0Finder.cxx:55
 AtlZ0Finder.cxx:56
 AtlZ0Finder.cxx:57
 AtlZ0Finder.cxx:58
 AtlZ0Finder.cxx:59
 AtlZ0Finder.cxx:60
 AtlZ0Finder.cxx:61
 AtlZ0Finder.cxx:62
 AtlZ0Finder.cxx:63
 AtlZ0Finder.cxx:64
 AtlZ0Finder.cxx:65
 AtlZ0Finder.cxx:66
 AtlZ0Finder.cxx:67
 AtlZ0Finder.cxx:68
 AtlZ0Finder.cxx:69
 AtlZ0Finder.cxx:70
 AtlZ0Finder.cxx:71
 AtlZ0Finder.cxx:72
 AtlZ0Finder.cxx:73
 AtlZ0Finder.cxx:74
 AtlZ0Finder.cxx:75
 AtlZ0Finder.cxx:76
 AtlZ0Finder.cxx:77
 AtlZ0Finder.cxx:78
 AtlZ0Finder.cxx:79
 AtlZ0Finder.cxx:80
 AtlZ0Finder.cxx:81
 AtlZ0Finder.cxx:82
 AtlZ0Finder.cxx:83
 AtlZ0Finder.cxx:84
 AtlZ0Finder.cxx:85
 AtlZ0Finder.cxx:86
 AtlZ0Finder.cxx:87
 AtlZ0Finder.cxx:88
 AtlZ0Finder.cxx:89
 AtlZ0Finder.cxx:90
 AtlZ0Finder.cxx:91
 AtlZ0Finder.cxx:92
 AtlZ0Finder.cxx:93
 AtlZ0Finder.cxx:94
 AtlZ0Finder.cxx:95
 AtlZ0Finder.cxx:96
 AtlZ0Finder.cxx:97
 AtlZ0Finder.cxx:98
 AtlZ0Finder.cxx:99
 AtlZ0Finder.cxx:100
 AtlZ0Finder.cxx:101
 AtlZ0Finder.cxx:102
 AtlZ0Finder.cxx:103
 AtlZ0Finder.cxx:104
 AtlZ0Finder.cxx:105
 AtlZ0Finder.cxx:106
 AtlZ0Finder.cxx:107
 AtlZ0Finder.cxx:108
 AtlZ0Finder.cxx:109
 AtlZ0Finder.cxx:110
 AtlZ0Finder.cxx:111
 AtlZ0Finder.cxx:112
 AtlZ0Finder.cxx:113
 AtlZ0Finder.cxx:114
 AtlZ0Finder.cxx:115
 AtlZ0Finder.cxx:116
 AtlZ0Finder.cxx:117
 AtlZ0Finder.cxx:118
 AtlZ0Finder.cxx:119
 AtlZ0Finder.cxx:120
 AtlZ0Finder.cxx:121
 AtlZ0Finder.cxx:122
 AtlZ0Finder.cxx:123
 AtlZ0Finder.cxx:124
 AtlZ0Finder.cxx:125
 AtlZ0Finder.cxx:126
 AtlZ0Finder.cxx:127
 AtlZ0Finder.cxx:128
 AtlZ0Finder.cxx:129
 AtlZ0Finder.cxx:130
 AtlZ0Finder.cxx:131
 AtlZ0Finder.cxx:132
 AtlZ0Finder.cxx:133
 AtlZ0Finder.cxx:134
 AtlZ0Finder.cxx:135
 AtlZ0Finder.cxx:136
 AtlZ0Finder.cxx:137
 AtlZ0Finder.cxx:138
 AtlZ0Finder.cxx:139
 AtlZ0Finder.cxx:140
 AtlZ0Finder.cxx:141
 AtlZ0Finder.cxx:142
 AtlZ0Finder.cxx:143
 AtlZ0Finder.cxx:144
 AtlZ0Finder.cxx:145
 AtlZ0Finder.cxx:146
 AtlZ0Finder.cxx:147
 AtlZ0Finder.cxx:148
 AtlZ0Finder.cxx:149
 AtlZ0Finder.cxx:150
 AtlZ0Finder.cxx:151
 AtlZ0Finder.cxx:152
 AtlZ0Finder.cxx:153
 AtlZ0Finder.cxx:154
 AtlZ0Finder.cxx:155
 AtlZ0Finder.cxx:156
 AtlZ0Finder.cxx:157
 AtlZ0Finder.cxx:158
 AtlZ0Finder.cxx:159
 AtlZ0Finder.cxx:160
 AtlZ0Finder.cxx:161
 AtlZ0Finder.cxx:162
 AtlZ0Finder.cxx:163
 AtlZ0Finder.cxx:164
 AtlZ0Finder.cxx:165
 AtlZ0Finder.cxx:166
 AtlZ0Finder.cxx:167
 AtlZ0Finder.cxx:168
 AtlZ0Finder.cxx:169
 AtlZ0Finder.cxx:170
 AtlZ0Finder.cxx:171
 AtlZ0Finder.cxx:172
 AtlZ0Finder.cxx:173
 AtlZ0Finder.cxx:174
 AtlZ0Finder.cxx:175
 AtlZ0Finder.cxx:176
 AtlZ0Finder.cxx:177
 AtlZ0Finder.cxx:178
 AtlZ0Finder.cxx:179
 AtlZ0Finder.cxx:180
 AtlZ0Finder.cxx:181
 AtlZ0Finder.cxx:182
 AtlZ0Finder.cxx:183
 AtlZ0Finder.cxx:184
 AtlZ0Finder.cxx:185
 AtlZ0Finder.cxx:186
 AtlZ0Finder.cxx:187
 AtlZ0Finder.cxx:188
 AtlZ0Finder.cxx:189
 AtlZ0Finder.cxx:190
 AtlZ0Finder.cxx:191
 AtlZ0Finder.cxx:192
 AtlZ0Finder.cxx:193
 AtlZ0Finder.cxx:194
 AtlZ0Finder.cxx:195
 AtlZ0Finder.cxx:196
 AtlZ0Finder.cxx:197
 AtlZ0Finder.cxx:198
 AtlZ0Finder.cxx:199
 AtlZ0Finder.cxx:200
 AtlZ0Finder.cxx:201
 AtlZ0Finder.cxx:202
 AtlZ0Finder.cxx:203
 AtlZ0Finder.cxx:204
 AtlZ0Finder.cxx:205
 AtlZ0Finder.cxx:206
 AtlZ0Finder.cxx:207
 AtlZ0Finder.cxx:208
 AtlZ0Finder.cxx:209
 AtlZ0Finder.cxx:210
 AtlZ0Finder.cxx:211
 AtlZ0Finder.cxx:212
 AtlZ0Finder.cxx:213
 AtlZ0Finder.cxx:214
 AtlZ0Finder.cxx:215
 AtlZ0Finder.cxx:216
 AtlZ0Finder.cxx:217
 AtlZ0Finder.cxx:218
 AtlZ0Finder.cxx:219
 AtlZ0Finder.cxx:220
 AtlZ0Finder.cxx:221
 AtlZ0Finder.cxx:222
 AtlZ0Finder.cxx:223
 AtlZ0Finder.cxx:224
 AtlZ0Finder.cxx:225
 AtlZ0Finder.cxx:226
 AtlZ0Finder.cxx:227
 AtlZ0Finder.cxx:228
 AtlZ0Finder.cxx:229
 AtlZ0Finder.cxx:230
 AtlZ0Finder.cxx:231
 AtlZ0Finder.cxx:232
 AtlZ0Finder.cxx:233
 AtlZ0Finder.cxx:234
 AtlZ0Finder.cxx:235
 AtlZ0Finder.cxx:236
 AtlZ0Finder.cxx:237
 AtlZ0Finder.cxx:238
 AtlZ0Finder.cxx:239
 AtlZ0Finder.cxx:240
 AtlZ0Finder.cxx:241
 AtlZ0Finder.cxx:242
 AtlZ0Finder.cxx:243
 AtlZ0Finder.cxx:244
 AtlZ0Finder.cxx:245
 AtlZ0Finder.cxx:246
 AtlZ0Finder.cxx:247
 AtlZ0Finder.cxx:248
 AtlZ0Finder.cxx:249
 AtlZ0Finder.cxx:250
 AtlZ0Finder.cxx:251
 AtlZ0Finder.cxx:252
 AtlZ0Finder.cxx:253
 AtlZ0Finder.cxx:254
 AtlZ0Finder.cxx:255
 AtlZ0Finder.cxx:256
 AtlZ0Finder.cxx:257
 AtlZ0Finder.cxx:258
 AtlZ0Finder.cxx:259
 AtlZ0Finder.cxx:260
 AtlZ0Finder.cxx:261
 AtlZ0Finder.cxx:262
 AtlZ0Finder.cxx:263
 AtlZ0Finder.cxx:264
 AtlZ0Finder.cxx:265
 AtlZ0Finder.cxx:266
 AtlZ0Finder.cxx:267
 AtlZ0Finder.cxx:268
 AtlZ0Finder.cxx:269
 AtlZ0Finder.cxx:270
 AtlZ0Finder.cxx:271
 AtlZ0Finder.cxx:272
 AtlZ0Finder.cxx:273
 AtlZ0Finder.cxx:274
 AtlZ0Finder.cxx:275
 AtlZ0Finder.cxx:276
 AtlZ0Finder.cxx:277
 AtlZ0Finder.cxx:278
 AtlZ0Finder.cxx:279
 AtlZ0Finder.cxx:280
 AtlZ0Finder.cxx:281
 AtlZ0Finder.cxx:282
 AtlZ0Finder.cxx:283
 AtlZ0Finder.cxx:284
 AtlZ0Finder.cxx:285
 AtlZ0Finder.cxx:286
 AtlZ0Finder.cxx:287
 AtlZ0Finder.cxx:288
 AtlZ0Finder.cxx:289
 AtlZ0Finder.cxx:290
 AtlZ0Finder.cxx:291
 AtlZ0Finder.cxx:292
 AtlZ0Finder.cxx:293
 AtlZ0Finder.cxx:294
 AtlZ0Finder.cxx:295
 AtlZ0Finder.cxx:296
 AtlZ0Finder.cxx:297
 AtlZ0Finder.cxx:298
 AtlZ0Finder.cxx:299
 AtlZ0Finder.cxx:300
 AtlZ0Finder.cxx:301
 AtlZ0Finder.cxx:302
 AtlZ0Finder.cxx:303
 AtlZ0Finder.cxx:304
 AtlZ0Finder.cxx:305
 AtlZ0Finder.cxx:306
 AtlZ0Finder.cxx:307
 AtlZ0Finder.cxx:308
 AtlZ0Finder.cxx:309
 AtlZ0Finder.cxx:310
 AtlZ0Finder.cxx:311
 AtlZ0Finder.cxx:312
 AtlZ0Finder.cxx:313
 AtlZ0Finder.cxx:314
 AtlZ0Finder.cxx:315
 AtlZ0Finder.cxx:316
 AtlZ0Finder.cxx:317
 AtlZ0Finder.cxx:318
 AtlZ0Finder.cxx:319
 AtlZ0Finder.cxx:320
 AtlZ0Finder.cxx:321
 AtlZ0Finder.cxx:322
 AtlZ0Finder.cxx:323
 AtlZ0Finder.cxx:324
 AtlZ0Finder.cxx:325
 AtlZ0Finder.cxx:326
 AtlZ0Finder.cxx:327
 AtlZ0Finder.cxx:328
 AtlZ0Finder.cxx:329
 AtlZ0Finder.cxx:330
 AtlZ0Finder.cxx:331
 AtlZ0Finder.cxx:332
 AtlZ0Finder.cxx:333
 AtlZ0Finder.cxx:334
 AtlZ0Finder.cxx:335
 AtlZ0Finder.cxx:336
 AtlZ0Finder.cxx:337
 AtlZ0Finder.cxx:338
 AtlZ0Finder.cxx:339
 AtlZ0Finder.cxx:340
 AtlZ0Finder.cxx:341
 AtlZ0Finder.cxx:342
 AtlZ0Finder.cxx:343
 AtlZ0Finder.cxx:344
 AtlZ0Finder.cxx:345
 AtlZ0Finder.cxx:346
 AtlZ0Finder.cxx:347
 AtlZ0Finder.cxx:348
 AtlZ0Finder.cxx:349
 AtlZ0Finder.cxx:350
 AtlZ0Finder.cxx:351
 AtlZ0Finder.cxx:352
 AtlZ0Finder.cxx:353
 AtlZ0Finder.cxx:354
 AtlZ0Finder.cxx:355
 AtlZ0Finder.cxx:356
 AtlZ0Finder.cxx:357
 AtlZ0Finder.cxx:358
 AtlZ0Finder.cxx:359
 AtlZ0Finder.cxx:360
 AtlZ0Finder.cxx:361
 AtlZ0Finder.cxx:362
 AtlZ0Finder.cxx:363
 AtlZ0Finder.cxx:364
 AtlZ0Finder.cxx:365
 AtlZ0Finder.cxx:366
 AtlZ0Finder.cxx:367
 AtlZ0Finder.cxx:368
 AtlZ0Finder.cxx:369
 AtlZ0Finder.cxx:370
 AtlZ0Finder.cxx:371
 AtlZ0Finder.cxx:372
 AtlZ0Finder.cxx:373
 AtlZ0Finder.cxx:374
 AtlZ0Finder.cxx:375
 AtlZ0Finder.cxx:376
 AtlZ0Finder.cxx:377
 AtlZ0Finder.cxx:378
 AtlZ0Finder.cxx:379
 AtlZ0Finder.cxx:380
 AtlZ0Finder.cxx:381
 AtlZ0Finder.cxx:382
 AtlZ0Finder.cxx:383
 AtlZ0Finder.cxx:384
 AtlZ0Finder.cxx:385
 AtlZ0Finder.cxx:386
 AtlZ0Finder.cxx:387
 AtlZ0Finder.cxx:388
 AtlZ0Finder.cxx:389
 AtlZ0Finder.cxx:390
 AtlZ0Finder.cxx:391
 AtlZ0Finder.cxx:392
 AtlZ0Finder.cxx:393
 AtlZ0Finder.cxx:394
 AtlZ0Finder.cxx:395
 AtlZ0Finder.cxx:396
 AtlZ0Finder.cxx:397
 AtlZ0Finder.cxx:398
 AtlZ0Finder.cxx:399
 AtlZ0Finder.cxx:400
 AtlZ0Finder.cxx:401
 AtlZ0Finder.cxx:402
 AtlZ0Finder.cxx:403
 AtlZ0Finder.cxx:404
 AtlZ0Finder.cxx:405
 AtlZ0Finder.cxx:406
 AtlZ0Finder.cxx:407
 AtlZ0Finder.cxx:408
 AtlZ0Finder.cxx:409
 AtlZ0Finder.cxx:410
 AtlZ0Finder.cxx:411
 AtlZ0Finder.cxx:412
 AtlZ0Finder.cxx:413
 AtlZ0Finder.cxx:414
 AtlZ0Finder.cxx:415
 AtlZ0Finder.cxx:416
 AtlZ0Finder.cxx:417
 AtlZ0Finder.cxx:418
 AtlZ0Finder.cxx:419
 AtlZ0Finder.cxx:420
 AtlZ0Finder.cxx:421
 AtlZ0Finder.cxx:422
 AtlZ0Finder.cxx:423
 AtlZ0Finder.cxx:424
 AtlZ0Finder.cxx:425
 AtlZ0Finder.cxx:426
 AtlZ0Finder.cxx:427
 AtlZ0Finder.cxx:428
 AtlZ0Finder.cxx:429
 AtlZ0Finder.cxx:430
 AtlZ0Finder.cxx:431
 AtlZ0Finder.cxx:432
 AtlZ0Finder.cxx:433
 AtlZ0Finder.cxx:434
 AtlZ0Finder.cxx:435
 AtlZ0Finder.cxx:436
 AtlZ0Finder.cxx:437
 AtlZ0Finder.cxx:438
 AtlZ0Finder.cxx:439
 AtlZ0Finder.cxx:440
 AtlZ0Finder.cxx:441
 AtlZ0Finder.cxx:442
 AtlZ0Finder.cxx:443
 AtlZ0Finder.cxx:444
 AtlZ0Finder.cxx:445
 AtlZ0Finder.cxx:446
 AtlZ0Finder.cxx:447
 AtlZ0Finder.cxx:448
 AtlZ0Finder.cxx:449
 AtlZ0Finder.cxx:450
 AtlZ0Finder.cxx:451
 AtlZ0Finder.cxx:452
 AtlZ0Finder.cxx:453
 AtlZ0Finder.cxx:454
 AtlZ0Finder.cxx:455
 AtlZ0Finder.cxx:456
 AtlZ0Finder.cxx:457
 AtlZ0Finder.cxx:458
 AtlZ0Finder.cxx:459
 AtlZ0Finder.cxx:460
 AtlZ0Finder.cxx:461
 AtlZ0Finder.cxx:462
 AtlZ0Finder.cxx:463
 AtlZ0Finder.cxx:464
 AtlZ0Finder.cxx:465
 AtlZ0Finder.cxx:466
 AtlZ0Finder.cxx:467
 AtlZ0Finder.cxx:468
 AtlZ0Finder.cxx:469
 AtlZ0Finder.cxx:470
 AtlZ0Finder.cxx:471
 AtlZ0Finder.cxx:472
 AtlZ0Finder.cxx:473
 AtlZ0Finder.cxx:474
 AtlZ0Finder.cxx:475
 AtlZ0Finder.cxx:476
 AtlZ0Finder.cxx:477
 AtlZ0Finder.cxx:478
 AtlZ0Finder.cxx:479
 AtlZ0Finder.cxx:480
 AtlZ0Finder.cxx:481
 AtlZ0Finder.cxx:482
 AtlZ0Finder.cxx:483
 AtlZ0Finder.cxx:484
 AtlZ0Finder.cxx:485
 AtlZ0Finder.cxx:486
 AtlZ0Finder.cxx:487
 AtlZ0Finder.cxx:488
 AtlZ0Finder.cxx:489
 AtlZ0Finder.cxx:490
 AtlZ0Finder.cxx:491
 AtlZ0Finder.cxx:492
 AtlZ0Finder.cxx:493
 AtlZ0Finder.cxx:494
 AtlZ0Finder.cxx:495
 AtlZ0Finder.cxx:496
 AtlZ0Finder.cxx:497
 AtlZ0Finder.cxx:498
 AtlZ0Finder.cxx:499
 AtlZ0Finder.cxx:500
 AtlZ0Finder.cxx:501
 AtlZ0Finder.cxx:502
 AtlZ0Finder.cxx:503
 AtlZ0Finder.cxx:504
 AtlZ0Finder.cxx:505
 AtlZ0Finder.cxx:506
 AtlZ0Finder.cxx:507
 AtlZ0Finder.cxx:508
 AtlZ0Finder.cxx:509
 AtlZ0Finder.cxx:510
 AtlZ0Finder.cxx:511
 AtlZ0Finder.cxx:512
 AtlZ0Finder.cxx:513
 AtlZ0Finder.cxx:514
 AtlZ0Finder.cxx:515
 AtlZ0Finder.cxx:516
 AtlZ0Finder.cxx:517
 AtlZ0Finder.cxx:518
 AtlZ0Finder.cxx:519
 AtlZ0Finder.cxx:520
 AtlZ0Finder.cxx:521
 AtlZ0Finder.cxx:522
 AtlZ0Finder.cxx:523
 AtlZ0Finder.cxx:524
 AtlZ0Finder.cxx:525
 AtlZ0Finder.cxx:526
 AtlZ0Finder.cxx:527
 AtlZ0Finder.cxx:528
 AtlZ0Finder.cxx:529
 AtlZ0Finder.cxx:530
 AtlZ0Finder.cxx:531
 AtlZ0Finder.cxx:532
 AtlZ0Finder.cxx:533
 AtlZ0Finder.cxx:534
 AtlZ0Finder.cxx:535
 AtlZ0Finder.cxx:536
 AtlZ0Finder.cxx:537
 AtlZ0Finder.cxx:538
 AtlZ0Finder.cxx:539
 AtlZ0Finder.cxx:540
 AtlZ0Finder.cxx:541
 AtlZ0Finder.cxx:542
 AtlZ0Finder.cxx:543
 AtlZ0Finder.cxx:544
 AtlZ0Finder.cxx:545
 AtlZ0Finder.cxx:546
 AtlZ0Finder.cxx:547
 AtlZ0Finder.cxx:548
 AtlZ0Finder.cxx:549
 AtlZ0Finder.cxx:550
 AtlZ0Finder.cxx:551
 AtlZ0Finder.cxx:552
 AtlZ0Finder.cxx:553
 AtlZ0Finder.cxx:554
 AtlZ0Finder.cxx:555
 AtlZ0Finder.cxx:556
 AtlZ0Finder.cxx:557
 AtlZ0Finder.cxx:558
 AtlZ0Finder.cxx:559
 AtlZ0Finder.cxx:560
 AtlZ0Finder.cxx:561
 AtlZ0Finder.cxx:562
 AtlZ0Finder.cxx:563
 AtlZ0Finder.cxx:564
 AtlZ0Finder.cxx:565
 AtlZ0Finder.cxx:566
 AtlZ0Finder.cxx:567
 AtlZ0Finder.cxx:568
 AtlZ0Finder.cxx:569
 AtlZ0Finder.cxx:570
 AtlZ0Finder.cxx:571
 AtlZ0Finder.cxx:572
 AtlZ0Finder.cxx:573
 AtlZ0Finder.cxx:574
 AtlZ0Finder.cxx:575
 AtlZ0Finder.cxx:576
 AtlZ0Finder.cxx:577
 AtlZ0Finder.cxx:578
 AtlZ0Finder.cxx:579
 AtlZ0Finder.cxx:580
 AtlZ0Finder.cxx:581
 AtlZ0Finder.cxx:582
 AtlZ0Finder.cxx:583
 AtlZ0Finder.cxx:584
 AtlZ0Finder.cxx:585
 AtlZ0Finder.cxx:586
 AtlZ0Finder.cxx:587
 AtlZ0Finder.cxx:588
 AtlZ0Finder.cxx:589
 AtlZ0Finder.cxx:590
 AtlZ0Finder.cxx:591
 AtlZ0Finder.cxx:592
 AtlZ0Finder.cxx:593
 AtlZ0Finder.cxx:594
 AtlZ0Finder.cxx:595
 AtlZ0Finder.cxx:596
 AtlZ0Finder.cxx:597
 AtlZ0Finder.cxx:598
 AtlZ0Finder.cxx:599
 AtlZ0Finder.cxx:600
 AtlZ0Finder.cxx:601
 AtlZ0Finder.cxx:602
 AtlZ0Finder.cxx:603
 AtlZ0Finder.cxx:604
 AtlZ0Finder.cxx:605
 AtlZ0Finder.cxx:606
 AtlZ0Finder.cxx:607
 AtlZ0Finder.cxx:608
 AtlZ0Finder.cxx:609
 AtlZ0Finder.cxx:610
 AtlZ0Finder.cxx:611
 AtlZ0Finder.cxx:612
 AtlZ0Finder.cxx:613
 AtlZ0Finder.cxx:614
 AtlZ0Finder.cxx:615
 AtlZ0Finder.cxx:616
 AtlZ0Finder.cxx:617
 AtlZ0Finder.cxx:618
 AtlZ0Finder.cxx:619
 AtlZ0Finder.cxx:620
 AtlZ0Finder.cxx:621
 AtlZ0Finder.cxx:622
 AtlZ0Finder.cxx:623
 AtlZ0Finder.cxx:624
 AtlZ0Finder.cxx:625
 AtlZ0Finder.cxx:626
 AtlZ0Finder.cxx:627
 AtlZ0Finder.cxx:628
 AtlZ0Finder.cxx:629
 AtlZ0Finder.cxx:630
 AtlZ0Finder.cxx:631
 AtlZ0Finder.cxx:632
 AtlZ0Finder.cxx:633
 AtlZ0Finder.cxx:634
 AtlZ0Finder.cxx:635
 AtlZ0Finder.cxx:636
 AtlZ0Finder.cxx:637
 AtlZ0Finder.cxx:638
 AtlZ0Finder.cxx:639
 AtlZ0Finder.cxx:640
 AtlZ0Finder.cxx:641
 AtlZ0Finder.cxx:642
 AtlZ0Finder.cxx:643
 AtlZ0Finder.cxx:644
 AtlZ0Finder.cxx:645
 AtlZ0Finder.cxx:646
 AtlZ0Finder.cxx:647
 AtlZ0Finder.cxx:648
 AtlZ0Finder.cxx:649
 AtlZ0Finder.cxx:650
 AtlZ0Finder.cxx:651
 AtlZ0Finder.cxx:652
 AtlZ0Finder.cxx:653
 AtlZ0Finder.cxx:654
 AtlZ0Finder.cxx:655
 AtlZ0Finder.cxx:656
 AtlZ0Finder.cxx:657
 AtlZ0Finder.cxx:658
 AtlZ0Finder.cxx:659
 AtlZ0Finder.cxx:660
 AtlZ0Finder.cxx:661
 AtlZ0Finder.cxx:662
 AtlZ0Finder.cxx:663
 AtlZ0Finder.cxx:664
 AtlZ0Finder.cxx:665
 AtlZ0Finder.cxx:666
 AtlZ0Finder.cxx:667
 AtlZ0Finder.cxx:668
 AtlZ0Finder.cxx:669
 AtlZ0Finder.cxx:670
 AtlZ0Finder.cxx:671
 AtlZ0Finder.cxx:672
 AtlZ0Finder.cxx:673
 AtlZ0Finder.cxx:674
 AtlZ0Finder.cxx:675
 AtlZ0Finder.cxx:676
 AtlZ0Finder.cxx:677
 AtlZ0Finder.cxx:678
 AtlZ0Finder.cxx:679
 AtlZ0Finder.cxx:680
 AtlZ0Finder.cxx:681
 AtlZ0Finder.cxx:682
 AtlZ0Finder.cxx:683
 AtlZ0Finder.cxx:684
 AtlZ0Finder.cxx:685
 AtlZ0Finder.cxx:686
 AtlZ0Finder.cxx:687
 AtlZ0Finder.cxx:688
 AtlZ0Finder.cxx:689
 AtlZ0Finder.cxx:690
 AtlZ0Finder.cxx:691
 AtlZ0Finder.cxx:692
 AtlZ0Finder.cxx:693
 AtlZ0Finder.cxx:694
 AtlZ0Finder.cxx:695
 AtlZ0Finder.cxx:696
 AtlZ0Finder.cxx:697
 AtlZ0Finder.cxx:698
 AtlZ0Finder.cxx:699
 AtlZ0Finder.cxx:700
 AtlZ0Finder.cxx:701
 AtlZ0Finder.cxx:702
 AtlZ0Finder.cxx:703
 AtlZ0Finder.cxx:704
 AtlZ0Finder.cxx:705
 AtlZ0Finder.cxx:706
 AtlZ0Finder.cxx:707
 AtlZ0Finder.cxx:708
 AtlZ0Finder.cxx:709
 AtlZ0Finder.cxx:710
 AtlZ0Finder.cxx:711
 AtlZ0Finder.cxx:712
 AtlZ0Finder.cxx:713
 AtlZ0Finder.cxx:714
 AtlZ0Finder.cxx:715
 AtlZ0Finder.cxx:716
 AtlZ0Finder.cxx:717
 AtlZ0Finder.cxx:718
 AtlZ0Finder.cxx:719
 AtlZ0Finder.cxx:720
 AtlZ0Finder.cxx:721
 AtlZ0Finder.cxx:722
 AtlZ0Finder.cxx:723
 AtlZ0Finder.cxx:724
 AtlZ0Finder.cxx:725
 AtlZ0Finder.cxx:726
 AtlZ0Finder.cxx:727
 AtlZ0Finder.cxx:728
 AtlZ0Finder.cxx:729
 AtlZ0Finder.cxx:730
 AtlZ0Finder.cxx:731
 AtlZ0Finder.cxx:732
 AtlZ0Finder.cxx:733
 AtlZ0Finder.cxx:734
 AtlZ0Finder.cxx:735
 AtlZ0Finder.cxx:736
 AtlZ0Finder.cxx:737
 AtlZ0Finder.cxx:738
 AtlZ0Finder.cxx:739
 AtlZ0Finder.cxx:740
 AtlZ0Finder.cxx:741
 AtlZ0Finder.cxx:742
 AtlZ0Finder.cxx:743
 AtlZ0Finder.cxx:744
 AtlZ0Finder.cxx:745
 AtlZ0Finder.cxx:746
 AtlZ0Finder.cxx:747
 AtlZ0Finder.cxx:748
 AtlZ0Finder.cxx:749
 AtlZ0Finder.cxx:750
 AtlZ0Finder.cxx:751
 AtlZ0Finder.cxx:752
 AtlZ0Finder.cxx:753
 AtlZ0Finder.cxx:754
 AtlZ0Finder.cxx:755
 AtlZ0Finder.cxx:756
 AtlZ0Finder.cxx:757
 AtlZ0Finder.cxx:758
 AtlZ0Finder.cxx:759
 AtlZ0Finder.cxx:760
 AtlZ0Finder.cxx:761
 AtlZ0Finder.cxx:762
 AtlZ0Finder.cxx:763
 AtlZ0Finder.cxx:764
 AtlZ0Finder.cxx:765
 AtlZ0Finder.cxx:766
 AtlZ0Finder.cxx:767
 AtlZ0Finder.cxx:768
 AtlZ0Finder.cxx:769
 AtlZ0Finder.cxx:770
 AtlZ0Finder.cxx:771
 AtlZ0Finder.cxx:772
 AtlZ0Finder.cxx:773
 AtlZ0Finder.cxx:774
 AtlZ0Finder.cxx:775
 AtlZ0Finder.cxx:776
 AtlZ0Finder.cxx:777
 AtlZ0Finder.cxx:778
 AtlZ0Finder.cxx:779
 AtlZ0Finder.cxx:780
 AtlZ0Finder.cxx:781
 AtlZ0Finder.cxx:782
 AtlZ0Finder.cxx:783
 AtlZ0Finder.cxx:784
 AtlZ0Finder.cxx:785
 AtlZ0Finder.cxx:786
 AtlZ0Finder.cxx:787
 AtlZ0Finder.cxx:788
 AtlZ0Finder.cxx:789
 AtlZ0Finder.cxx:790
 AtlZ0Finder.cxx:791
 AtlZ0Finder.cxx:792
 AtlZ0Finder.cxx:793
 AtlZ0Finder.cxx:794
 AtlZ0Finder.cxx:795
 AtlZ0Finder.cxx:796
 AtlZ0Finder.cxx:797
 AtlZ0Finder.cxx:798
 AtlZ0Finder.cxx:799
 AtlZ0Finder.cxx:800
 AtlZ0Finder.cxx:801
 AtlZ0Finder.cxx:802
 AtlZ0Finder.cxx:803
 AtlZ0Finder.cxx:804
 AtlZ0Finder.cxx:805
 AtlZ0Finder.cxx:806
 AtlZ0Finder.cxx:807
 AtlZ0Finder.cxx:808
 AtlZ0Finder.cxx:809
 AtlZ0Finder.cxx:810
 AtlZ0Finder.cxx:811
 AtlZ0Finder.cxx:812
 AtlZ0Finder.cxx:813
 AtlZ0Finder.cxx:814
 AtlZ0Finder.cxx:815
 AtlZ0Finder.cxx:816
 AtlZ0Finder.cxx:817
 AtlZ0Finder.cxx:818
 AtlZ0Finder.cxx:819
 AtlZ0Finder.cxx:820
 AtlZ0Finder.cxx:821
 AtlZ0Finder.cxx:822
 AtlZ0Finder.cxx:823
 AtlZ0Finder.cxx:824
 AtlZ0Finder.cxx:825
 AtlZ0Finder.cxx:826
 AtlZ0Finder.cxx:827
 AtlZ0Finder.cxx:828
 AtlZ0Finder.cxx:829
 AtlZ0Finder.cxx:830
 AtlZ0Finder.cxx:831
 AtlZ0Finder.cxx:832
 AtlZ0Finder.cxx:833
 AtlZ0Finder.cxx:834
 AtlZ0Finder.cxx:835
 AtlZ0Finder.cxx:836
 AtlZ0Finder.cxx:837
 AtlZ0Finder.cxx:838
 AtlZ0Finder.cxx:839
 AtlZ0Finder.cxx:840
 AtlZ0Finder.cxx:841
 AtlZ0Finder.cxx:842
 AtlZ0Finder.cxx:843
 AtlZ0Finder.cxx:844
 AtlZ0Finder.cxx:845
 AtlZ0Finder.cxx:846
 AtlZ0Finder.cxx:847
 AtlZ0Finder.cxx:848
 AtlZ0Finder.cxx:849
 AtlZ0Finder.cxx:850
 AtlZ0Finder.cxx:851
 AtlZ0Finder.cxx:852
 AtlZ0Finder.cxx:853
 AtlZ0Finder.cxx:854
 AtlZ0Finder.cxx:855
 AtlZ0Finder.cxx:856
 AtlZ0Finder.cxx:857
 AtlZ0Finder.cxx:858
 AtlZ0Finder.cxx:859
 AtlZ0Finder.cxx:860
 AtlZ0Finder.cxx:861
 AtlZ0Finder.cxx:862
 AtlZ0Finder.cxx:863
 AtlZ0Finder.cxx:864
 AtlZ0Finder.cxx:865
 AtlZ0Finder.cxx:866
 AtlZ0Finder.cxx:867
 AtlZ0Finder.cxx:868
 AtlZ0Finder.cxx:869
 AtlZ0Finder.cxx:870
 AtlZ0Finder.cxx:871
 AtlZ0Finder.cxx:872
 AtlZ0Finder.cxx:873
 AtlZ0Finder.cxx:874
 AtlZ0Finder.cxx:875
 AtlZ0Finder.cxx:876
 AtlZ0Finder.cxx:877
 AtlZ0Finder.cxx:878
 AtlZ0Finder.cxx:879
 AtlZ0Finder.cxx:880
 AtlZ0Finder.cxx:881
 AtlZ0Finder.cxx:882
 AtlZ0Finder.cxx:883
 AtlZ0Finder.cxx:884
 AtlZ0Finder.cxx:885
 AtlZ0Finder.cxx:886
 AtlZ0Finder.cxx:887
 AtlZ0Finder.cxx:888
 AtlZ0Finder.cxx:889
 AtlZ0Finder.cxx:890
 AtlZ0Finder.cxx:891
 AtlZ0Finder.cxx:892
 AtlZ0Finder.cxx:893
 AtlZ0Finder.cxx:894
 AtlZ0Finder.cxx:895
 AtlZ0Finder.cxx:896
 AtlZ0Finder.cxx:897
 AtlZ0Finder.cxx:898
 AtlZ0Finder.cxx:899
 AtlZ0Finder.cxx:900
 AtlZ0Finder.cxx:901
 AtlZ0Finder.cxx:902
 AtlZ0Finder.cxx:903
 AtlZ0Finder.cxx:904
 AtlZ0Finder.cxx:905
 AtlZ0Finder.cxx:906
 AtlZ0Finder.cxx:907
 AtlZ0Finder.cxx:908
 AtlZ0Finder.cxx:909
 AtlZ0Finder.cxx:910
 AtlZ0Finder.cxx:911
 AtlZ0Finder.cxx:912
 AtlZ0Finder.cxx:913
 AtlZ0Finder.cxx:914
 AtlZ0Finder.cxx:915
 AtlZ0Finder.cxx:916
 AtlZ0Finder.cxx:917
 AtlZ0Finder.cxx:918
 AtlZ0Finder.cxx:919
 AtlZ0Finder.cxx:920
 AtlZ0Finder.cxx:921
 AtlZ0Finder.cxx:922
 AtlZ0Finder.cxx:923
 AtlZ0Finder.cxx:924
 AtlZ0Finder.cxx:925
 AtlZ0Finder.cxx:926
 AtlZ0Finder.cxx:927
 AtlZ0Finder.cxx:928
 AtlZ0Finder.cxx:929
 AtlZ0Finder.cxx:930
 AtlZ0Finder.cxx:931
 AtlZ0Finder.cxx:932
 AtlZ0Finder.cxx:933
 AtlZ0Finder.cxx:934
 AtlZ0Finder.cxx:935
 AtlZ0Finder.cxx:936
 AtlZ0Finder.cxx:937
 AtlZ0Finder.cxx:938
 AtlZ0Finder.cxx:939
 AtlZ0Finder.cxx:940
 AtlZ0Finder.cxx:941
 AtlZ0Finder.cxx:942
 AtlZ0Finder.cxx:943
 AtlZ0Finder.cxx:944
 AtlZ0Finder.cxx:945
 AtlZ0Finder.cxx:946
 AtlZ0Finder.cxx:947
 AtlZ0Finder.cxx:948
 AtlZ0Finder.cxx:949
 AtlZ0Finder.cxx:950
 AtlZ0Finder.cxx:951
 AtlZ0Finder.cxx:952
 AtlZ0Finder.cxx:953
 AtlZ0Finder.cxx:954
 AtlZ0Finder.cxx:955
 AtlZ0Finder.cxx:956
 AtlZ0Finder.cxx:957
 AtlZ0Finder.cxx:958
 AtlZ0Finder.cxx:959
 AtlZ0Finder.cxx:960
 AtlZ0Finder.cxx:961
 AtlZ0Finder.cxx:962
 AtlZ0Finder.cxx:963
 AtlZ0Finder.cxx:964
 AtlZ0Finder.cxx:965
 AtlZ0Finder.cxx:966
 AtlZ0Finder.cxx:967
 AtlZ0Finder.cxx:968
 AtlZ0Finder.cxx:969
 AtlZ0Finder.cxx:970
 AtlZ0Finder.cxx:971
 AtlZ0Finder.cxx:972
 AtlZ0Finder.cxx:973
 AtlZ0Finder.cxx:974
 AtlZ0Finder.cxx:975
 AtlZ0Finder.cxx:976
 AtlZ0Finder.cxx:977
 AtlZ0Finder.cxx:978
 AtlZ0Finder.cxx:979
 AtlZ0Finder.cxx:980
 AtlZ0Finder.cxx:981
 AtlZ0Finder.cxx:982
 AtlZ0Finder.cxx:983
 AtlZ0Finder.cxx:984
 AtlZ0Finder.cxx:985
 AtlZ0Finder.cxx:986
 AtlZ0Finder.cxx:987
 AtlZ0Finder.cxx:988
 AtlZ0Finder.cxx:989
 AtlZ0Finder.cxx:990
 AtlZ0Finder.cxx:991
 AtlZ0Finder.cxx:992
 AtlZ0Finder.cxx:993
 AtlZ0Finder.cxx:994
 AtlZ0Finder.cxx:995
 AtlZ0Finder.cxx:996
 AtlZ0Finder.cxx:997
 AtlZ0Finder.cxx:998
 AtlZ0Finder.cxx:999
 AtlZ0Finder.cxx:1000
 AtlZ0Finder.cxx:1001
 AtlZ0Finder.cxx:1002
 AtlZ0Finder.cxx:1003
 AtlZ0Finder.cxx:1004
 AtlZ0Finder.cxx:1005
 AtlZ0Finder.cxx:1006
 AtlZ0Finder.cxx:1007
 AtlZ0Finder.cxx:1008
 AtlZ0Finder.cxx:1009
 AtlZ0Finder.cxx:1010
 AtlZ0Finder.cxx:1011
 AtlZ0Finder.cxx:1012
 AtlZ0Finder.cxx:1013
 AtlZ0Finder.cxx:1014
 AtlZ0Finder.cxx:1015
 AtlZ0Finder.cxx:1016
 AtlZ0Finder.cxx:1017
 AtlZ0Finder.cxx:1018
 AtlZ0Finder.cxx:1019
 AtlZ0Finder.cxx:1020
 AtlZ0Finder.cxx:1021
 AtlZ0Finder.cxx:1022
 AtlZ0Finder.cxx:1023
 AtlZ0Finder.cxx:1024
 AtlZ0Finder.cxx:1025
 AtlZ0Finder.cxx:1026
 AtlZ0Finder.cxx:1027
 AtlZ0Finder.cxx:1028
 AtlZ0Finder.cxx:1029
 AtlZ0Finder.cxx:1030
 AtlZ0Finder.cxx:1031
 AtlZ0Finder.cxx:1032
 AtlZ0Finder.cxx:1033
 AtlZ0Finder.cxx:1034
 AtlZ0Finder.cxx:1035
 AtlZ0Finder.cxx:1036
 AtlZ0Finder.cxx:1037
 AtlZ0Finder.cxx:1038
 AtlZ0Finder.cxx:1039
 AtlZ0Finder.cxx:1040
 AtlZ0Finder.cxx:1041
 AtlZ0Finder.cxx:1042
 AtlZ0Finder.cxx:1043
 AtlZ0Finder.cxx:1044
 AtlZ0Finder.cxx:1045
 AtlZ0Finder.cxx:1046
 AtlZ0Finder.cxx:1047
 AtlZ0Finder.cxx:1048
 AtlZ0Finder.cxx:1049
 AtlZ0Finder.cxx:1050
 AtlZ0Finder.cxx:1051
 AtlZ0Finder.cxx:1052
 AtlZ0Finder.cxx:1053
 AtlZ0Finder.cxx:1054
 AtlZ0Finder.cxx:1055
 AtlZ0Finder.cxx:1056
 AtlZ0Finder.cxx:1057
 AtlZ0Finder.cxx:1058
 AtlZ0Finder.cxx:1059
 AtlZ0Finder.cxx:1060
 AtlZ0Finder.cxx:1061
 AtlZ0Finder.cxx:1062
 AtlZ0Finder.cxx:1063
 AtlZ0Finder.cxx:1064
 AtlZ0Finder.cxx:1065
 AtlZ0Finder.cxx:1066
 AtlZ0Finder.cxx:1067
 AtlZ0Finder.cxx:1068
 AtlZ0Finder.cxx:1069
 AtlZ0Finder.cxx:1070
 AtlZ0Finder.cxx:1071
 AtlZ0Finder.cxx:1072
 AtlZ0Finder.cxx:1073
 AtlZ0Finder.cxx:1074
 AtlZ0Finder.cxx:1075
 AtlZ0Finder.cxx:1076
 AtlZ0Finder.cxx:1077
 AtlZ0Finder.cxx:1078
 AtlZ0Finder.cxx:1079
 AtlZ0Finder.cxx:1080
 AtlZ0Finder.cxx:1081
 AtlZ0Finder.cxx:1082
 AtlZ0Finder.cxx:1083
 AtlZ0Finder.cxx:1084
 AtlZ0Finder.cxx:1085
 AtlZ0Finder.cxx:1086
 AtlZ0Finder.cxx:1087
 AtlZ0Finder.cxx:1088
 AtlZ0Finder.cxx:1089
 AtlZ0Finder.cxx:1090
 AtlZ0Finder.cxx:1091
 AtlZ0Finder.cxx:1092
 AtlZ0Finder.cxx:1093
 AtlZ0Finder.cxx:1094
 AtlZ0Finder.cxx:1095
 AtlZ0Finder.cxx:1096
 AtlZ0Finder.cxx:1097
 AtlZ0Finder.cxx:1098
 AtlZ0Finder.cxx:1099
 AtlZ0Finder.cxx:1100
 AtlZ0Finder.cxx:1101
 AtlZ0Finder.cxx:1102
 AtlZ0Finder.cxx:1103
 AtlZ0Finder.cxx:1104
 AtlZ0Finder.cxx:1105
 AtlZ0Finder.cxx:1106
 AtlZ0Finder.cxx:1107
 AtlZ0Finder.cxx:1108
 AtlZ0Finder.cxx:1109
 AtlZ0Finder.cxx:1110
 AtlZ0Finder.cxx:1111
 AtlZ0Finder.cxx:1112
 AtlZ0Finder.cxx:1113
 AtlZ0Finder.cxx:1114
 AtlZ0Finder.cxx:1115
 AtlZ0Finder.cxx:1116
 AtlZ0Finder.cxx:1117
 AtlZ0Finder.cxx:1118
 AtlZ0Finder.cxx:1119
 AtlZ0Finder.cxx:1120
 AtlZ0Finder.cxx:1121
 AtlZ0Finder.cxx:1122
 AtlZ0Finder.cxx:1123
 AtlZ0Finder.cxx:1124
 AtlZ0Finder.cxx:1125
 AtlZ0Finder.cxx:1126
 AtlZ0Finder.cxx:1127
 AtlZ0Finder.cxx:1128
 AtlZ0Finder.cxx:1129
 AtlZ0Finder.cxx:1130
 AtlZ0Finder.cxx:1131
 AtlZ0Finder.cxx:1132
 AtlZ0Finder.cxx:1133
 AtlZ0Finder.cxx:1134
 AtlZ0Finder.cxx:1135
 AtlZ0Finder.cxx:1136
 AtlZ0Finder.cxx:1137
 AtlZ0Finder.cxx:1138
 AtlZ0Finder.cxx:1139
 AtlZ0Finder.cxx:1140
 AtlZ0Finder.cxx:1141
 AtlZ0Finder.cxx:1142
 AtlZ0Finder.cxx:1143
 AtlZ0Finder.cxx:1144
 AtlZ0Finder.cxx:1145
 AtlZ0Finder.cxx:1146
 AtlZ0Finder.cxx:1147
 AtlZ0Finder.cxx:1148
 AtlZ0Finder.cxx:1149
 AtlZ0Finder.cxx:1150
 AtlZ0Finder.cxx:1151
 AtlZ0Finder.cxx:1152
 AtlZ0Finder.cxx:1153
 AtlZ0Finder.cxx:1154
 AtlZ0Finder.cxx:1155
 AtlZ0Finder.cxx:1156
 AtlZ0Finder.cxx:1157
 AtlZ0Finder.cxx:1158
 AtlZ0Finder.cxx:1159
 AtlZ0Finder.cxx:1160
 AtlZ0Finder.cxx:1161
 AtlZ0Finder.cxx:1162
 AtlZ0Finder.cxx:1163
 AtlZ0Finder.cxx:1164
 AtlZ0Finder.cxx:1165
 AtlZ0Finder.cxx:1166
 AtlZ0Finder.cxx:1167
 AtlZ0Finder.cxx:1168
 AtlZ0Finder.cxx:1169
 AtlZ0Finder.cxx:1170
 AtlZ0Finder.cxx:1171
 AtlZ0Finder.cxx:1172
 AtlZ0Finder.cxx:1173
 AtlZ0Finder.cxx:1174
 AtlZ0Finder.cxx:1175
 AtlZ0Finder.cxx:1176
 AtlZ0Finder.cxx:1177
 AtlZ0Finder.cxx:1178
 AtlZ0Finder.cxx:1179
 AtlZ0Finder.cxx:1180
 AtlZ0Finder.cxx:1181
 AtlZ0Finder.cxx:1182
 AtlZ0Finder.cxx:1183
 AtlZ0Finder.cxx:1184
 AtlZ0Finder.cxx:1185
 AtlZ0Finder.cxx:1186
 AtlZ0Finder.cxx:1187
 AtlZ0Finder.cxx:1188
 AtlZ0Finder.cxx:1189
 AtlZ0Finder.cxx:1190
 AtlZ0Finder.cxx:1191
 AtlZ0Finder.cxx:1192
 AtlZ0Finder.cxx:1193
 AtlZ0Finder.cxx:1194
 AtlZ0Finder.cxx:1195
 AtlZ0Finder.cxx:1196
 AtlZ0Finder.cxx:1197
 AtlZ0Finder.cxx:1198
 AtlZ0Finder.cxx:1199
 AtlZ0Finder.cxx:1200
 AtlZ0Finder.cxx:1201
 AtlZ0Finder.cxx:1202
 AtlZ0Finder.cxx:1203
 AtlZ0Finder.cxx:1204
 AtlZ0Finder.cxx:1205
 AtlZ0Finder.cxx:1206
 AtlZ0Finder.cxx:1207
 AtlZ0Finder.cxx:1208
 AtlZ0Finder.cxx:1209
 AtlZ0Finder.cxx:1210
 AtlZ0Finder.cxx:1211
 AtlZ0Finder.cxx:1212
 AtlZ0Finder.cxx:1213
 AtlZ0Finder.cxx:1214
 AtlZ0Finder.cxx:1215
 AtlZ0Finder.cxx:1216
 AtlZ0Finder.cxx:1217
 AtlZ0Finder.cxx:1218
 AtlZ0Finder.cxx:1219
 AtlZ0Finder.cxx:1220
 AtlZ0Finder.cxx:1221
 AtlZ0Finder.cxx:1222
 AtlZ0Finder.cxx:1223
 AtlZ0Finder.cxx:1224
 AtlZ0Finder.cxx:1225
 AtlZ0Finder.cxx:1226
 AtlZ0Finder.cxx:1227
 AtlZ0Finder.cxx:1228
 AtlZ0Finder.cxx:1229
 AtlZ0Finder.cxx:1230
 AtlZ0Finder.cxx:1231
 AtlZ0Finder.cxx:1232
 AtlZ0Finder.cxx:1233
 AtlZ0Finder.cxx:1234
 AtlZ0Finder.cxx:1235
 AtlZ0Finder.cxx:1236
 AtlZ0Finder.cxx:1237
 AtlZ0Finder.cxx:1238
 AtlZ0Finder.cxx:1239
 AtlZ0Finder.cxx:1240
 AtlZ0Finder.cxx:1241
 AtlZ0Finder.cxx:1242
 AtlZ0Finder.cxx:1243
 AtlZ0Finder.cxx:1244
 AtlZ0Finder.cxx:1245
 AtlZ0Finder.cxx:1246
 AtlZ0Finder.cxx:1247
 AtlZ0Finder.cxx:1248
 AtlZ0Finder.cxx:1249
 AtlZ0Finder.cxx:1250
 AtlZ0Finder.cxx:1251
 AtlZ0Finder.cxx:1252
 AtlZ0Finder.cxx:1253
 AtlZ0Finder.cxx:1254
 AtlZ0Finder.cxx:1255
 AtlZ0Finder.cxx:1256
 AtlZ0Finder.cxx:1257
 AtlZ0Finder.cxx:1258
 AtlZ0Finder.cxx:1259
 AtlZ0Finder.cxx:1260
 AtlZ0Finder.cxx:1261
 AtlZ0Finder.cxx:1262
 AtlZ0Finder.cxx:1263
 AtlZ0Finder.cxx:1264
 AtlZ0Finder.cxx:1265
 AtlZ0Finder.cxx:1266
 AtlZ0Finder.cxx:1267
 AtlZ0Finder.cxx:1268
 AtlZ0Finder.cxx:1269
 AtlZ0Finder.cxx:1270
 AtlZ0Finder.cxx:1271
 AtlZ0Finder.cxx:1272
 AtlZ0Finder.cxx:1273
 AtlZ0Finder.cxx:1274
 AtlZ0Finder.cxx:1275
 AtlZ0Finder.cxx:1276
 AtlZ0Finder.cxx:1277
 AtlZ0Finder.cxx:1278
 AtlZ0Finder.cxx:1279
 AtlZ0Finder.cxx:1280
 AtlZ0Finder.cxx:1281
 AtlZ0Finder.cxx:1282
 AtlZ0Finder.cxx:1283
 AtlZ0Finder.cxx:1284
 AtlZ0Finder.cxx:1285
 AtlZ0Finder.cxx:1286
 AtlZ0Finder.cxx:1287
 AtlZ0Finder.cxx:1288
 AtlZ0Finder.cxx:1289
 AtlZ0Finder.cxx:1290
 AtlZ0Finder.cxx:1291
 AtlZ0Finder.cxx:1292
 AtlZ0Finder.cxx:1293
 AtlZ0Finder.cxx:1294
 AtlZ0Finder.cxx:1295
 AtlZ0Finder.cxx:1296
 AtlZ0Finder.cxx:1297
 AtlZ0Finder.cxx:1298
 AtlZ0Finder.cxx:1299
 AtlZ0Finder.cxx:1300
 AtlZ0Finder.cxx:1301
 AtlZ0Finder.cxx:1302
 AtlZ0Finder.cxx:1303
 AtlZ0Finder.cxx:1304
 AtlZ0Finder.cxx:1305
 AtlZ0Finder.cxx:1306
 AtlZ0Finder.cxx:1307
 AtlZ0Finder.cxx:1308
 AtlZ0Finder.cxx:1309
 AtlZ0Finder.cxx:1310
 AtlZ0Finder.cxx:1311
 AtlZ0Finder.cxx:1312
 AtlZ0Finder.cxx:1313
 AtlZ0Finder.cxx:1314
 AtlZ0Finder.cxx:1315
 AtlZ0Finder.cxx:1316
 AtlZ0Finder.cxx:1317
 AtlZ0Finder.cxx:1318
 AtlZ0Finder.cxx:1319
 AtlZ0Finder.cxx:1320
 AtlZ0Finder.cxx:1321
 AtlZ0Finder.cxx:1322
 AtlZ0Finder.cxx:1323
 AtlZ0Finder.cxx:1324
 AtlZ0Finder.cxx:1325
 AtlZ0Finder.cxx:1326
 AtlZ0Finder.cxx:1327
 AtlZ0Finder.cxx:1328
 AtlZ0Finder.cxx:1329
 AtlZ0Finder.cxx:1330
 AtlZ0Finder.cxx:1331
 AtlZ0Finder.cxx:1332
 AtlZ0Finder.cxx:1333
 AtlZ0Finder.cxx:1334
 AtlZ0Finder.cxx:1335
 AtlZ0Finder.cxx:1336
 AtlZ0Finder.cxx:1337
 AtlZ0Finder.cxx:1338
 AtlZ0Finder.cxx:1339
 AtlZ0Finder.cxx:1340
 AtlZ0Finder.cxx:1341
 AtlZ0Finder.cxx:1342
 AtlZ0Finder.cxx:1343
 AtlZ0Finder.cxx:1344
 AtlZ0Finder.cxx:1345
 AtlZ0Finder.cxx:1346
 AtlZ0Finder.cxx:1347
 AtlZ0Finder.cxx:1348
 AtlZ0Finder.cxx:1349
 AtlZ0Finder.cxx:1350
 AtlZ0Finder.cxx:1351
 AtlZ0Finder.cxx:1352
 AtlZ0Finder.cxx:1353
 AtlZ0Finder.cxx:1354
 AtlZ0Finder.cxx:1355
 AtlZ0Finder.cxx:1356
 AtlZ0Finder.cxx:1357
 AtlZ0Finder.cxx:1358
 AtlZ0Finder.cxx:1359
 AtlZ0Finder.cxx:1360
 AtlZ0Finder.cxx:1361
 AtlZ0Finder.cxx:1362
 AtlZ0Finder.cxx:1363
 AtlZ0Finder.cxx:1364
 AtlZ0Finder.cxx:1365
 AtlZ0Finder.cxx:1366