//____________________________________________________________________
//
// Lambda decay finder class
//

//
// Author: Thomas Kintscher <mailto:kintscher@physik.hu-berlin.de>
// Copyright: 2010 (C) Thomas Kintscher
//
#ifndef ATLAS_AtlLambdaFinder
#include <AtlLambdaFinder.h>
#endif
#include <TH1F.h>
#include <AtlEvent.h>
#include <TTree.h>
#include <TString.h>
#include <iostream>
#include <TROOT.h>
#include <TFile.h>
#include <vector>
#include <iomanip>


using namespace std;

#ifndef __CINT__
ClassImp(AtlLambdaFinder);
#endif

//____________________________________________________________________

AtlLambdaFinder::AtlLambdaFinder(const char* name, const char* title) :
    AtlKinFitterTool(name, title) {
    //
    // Default constructor
    //
    SetMode(kKinFit);
    SetDebugOutput(kFALSE);
    fBkgLambdaDecays = new TList;
}

//____________________________________________________________________

AtlLambdaFinder::~AtlLambdaFinder() {
    //
    // Default destructor
    //
    fBkgLambdaDecays->Delete(); delete fBkgLambdaDecays;
    if (IsDebugRun() ) fDebugStream.close();
}

//____________________________________________________________________

void AtlLambdaFinder::SetBranchStatus() {
    //
    // Switch on needed branches
    //
    fTree->SetBranchStatus("fN_IDTracks*",         kTRUE);  
    fTree->SetBranchStatus("fIDTracks*",           kTRUE);
    fTree->SetBranchStatus("fN_Vertices*",         kTRUE);
    fTree->SetBranchStatus("fVertices*",           kTRUE);
    fTree->SetBranchStatus("fN_MCParticles*",      kTRUE);
    fTree->SetBranchStatus("fMCParticles*",        kTRUE);
}

//____________________________________________________________________

void AtlLambdaFinder::BookHistograms() {
    //
    // Book histograms
    //
    if ( IsDebugRun() ) fDebugStream.open("DebugOutput.dat");
    fN_Fits = 0;
    fN_MCFail = 0;
    fN_MCProbMiss = 0;
    fN_SameOriginMiss = 0;

    // Book KinFitter Histograms
    AtlKinFitterTool::BookHistograms();
    SetTruthMatchBinning(30, 1, 30);
    PrintCutValues();

    // --------------------
    // Decay Angle Study
    // --------------------

    gDirectory->mkdir("DecayAngle_Study","Small study");
    gDirectory->cd("DecayAngle_Study");

    // Lambdas
    fHistAllMCLambdas_DecayAngle_P = new TH1F("h_AllMCLambdas_DecayAngle_P",
					      "decay angle, all mc lambdas w.r.t. Proton",
					      50, -1, 1);
    fHistAllMCLambdas_DecayAngle_P->SetXTitle("cos(#beta) (rad)");
    fHistAllMCLambdas_DecayAngle_P->SetYTitle("Number of Entries");
    fHistAllMCLambdas_DecayAngle_pi = new TH1F("h_AllMCLambdas_DecayAngle_pi",
					       "decay angle, all mc lambdas w.r.t. Pion",
					       50, -1, 1);
    fHistAllMCLambdas_DecayAngle_pi->SetXTitle("cos(#beta) (rad)");
    fHistAllMCLambdas_DecayAngle_pi->SetYTitle("Number of Entries");
    fHistAllMCLambdas_DecayAngleK0sBoost_P = new TH1F("h_AllMCLambdasK0sBoost_P",
						      "decay angle, all mc Lambdas with Pion Boost (Proton)",
						      50, -1, 1);
    fHistAllMCLambdas_DecayAngleK0sBoost_P->SetXTitle("cos(#beta) (rad)");
    fHistAllMCLambdas_DecayAngleK0sBoost_P->SetYTitle("Number of Entries");
    fHistAllMCLambdas_DecayAngleK0sBoost_pi = new TH1F("h_AllMCLambdasK0sBoost_pi",
						      "decay angle, all mc Lambdas with Pion Boost (Pion)",
						      50, -1, 1);
    fHistAllMCLambdas_DecayAngleK0sBoost_pi->SetXTitle("cos(#beta) (rad)");
    fHistAllMCLambdas_DecayAngleK0sBoost_pi->SetYTitle("Number of Entries");
    fHistMCK0sFakeLambdas_Pt_P = new TH1F("h_MCK0sFakeLambdas_Pt_P",
					  "Pt of K0sFaking MCLambdas",
					  60, 0, 20);
    fHistMCK0sFakeLambdas_Pt_P->SetXTitle("Pt");
    fHistMCK0sFakeLambdas_Pt_P->SetYTitle("Number of Entries");
    
    // Lambda Bar
    fHistAllMCLambdaBars_DecayAngle_P = new TH1F("h_AllMCLambdaBars_DecayAngle_P",
					      "decay angle, all mc lambdas w.r.t. Proton",
					      50, -1, 1);
    fHistAllMCLambdaBars_DecayAngle_P->SetXTitle("cos(#beta) (rad)");
    fHistAllMCLambdaBars_DecayAngle_P->SetYTitle("Number of Entries");
    fHistAllMCLambdaBars_DecayAngle_pi = new TH1F("h_AllMCLambdaBars_DecayAngle_pi",
					       "decay angle, all mc lambdas w.r.t. Pion",
					       50, -1, 1);
    fHistAllMCLambdaBars_DecayAngle_pi->SetXTitle("cos(#beta) (rad)");
    fHistAllMCLambdaBars_DecayAngle_pi->SetYTitle("Number of Entries");
    fHistAllMCLambdaBars_DecayAngleK0sBoost_P = new TH1F("h_AllMCLambdaBarsK0sBoost_P",
						      "decay angle, all mc LambdaBars with Pion Boost (Proton)",
						      50, -1, 1);
    fHistAllMCLambdaBars_DecayAngleK0sBoost_P->SetXTitle("cos(#beta) (rad)");
    fHistAllMCLambdaBars_DecayAngleK0sBoost_P->SetYTitle("Number of Entries");
    fHistAllMCLambdaBars_DecayAngleK0sBoost_pi = new TH1F("h_AllMCLambdaBarsK0sBoost_pi",
						      "decay angle, all mc LambdaBars with Pion Boost (Pion)",
						      50, -1, 1);
    fHistAllMCLambdaBars_DecayAngleK0sBoost_pi->SetXTitle("cos(#beta) (rad)");
    fHistAllMCLambdaBars_DecayAngleK0sBoost_pi->SetYTitle("Number of Entries");

    fHistMCK0sFakeLambdaBars_Pt_pi = new TH1F("h_MCK0sFakeLambdaBars_Pt_pi",
					     "Pt of K0sFaking MCLambdaBars",
					     60, 0, 20);
    fHistMCK0sFakeLambdaBars_Pt_pi->SetXTitle("Pt");
    fHistMCK0sFakeLambdaBars_Pt_pi->SetYTitle("Number of Entries");
    
    
    gDirectory->cd("../");
    // ======================
    // Book signal histograms
    // ======================
    gDirectory->mkdir("Signal", "Oppositely charged candidates");
    gDirectory->cd("Signal");
    

    // Lambda -> PPi
    // ----------
    gDirectory->mkdir("PPi", "Lambda -> proton+pion");
    gDirectory->cd("PPi");
    
    if ( fMode == kCutBased ) {
      fHistLambdareco_m_PPi   = new TH1F("h_Lambda_m_PPi", "Invariant Lambda mass (Lambda->PPi)", 100, 1.0, 1.2);
    } else if ( fMode == kKinFit ) {
      fHistLambdareco_m_PPi   = new TH1F("h_Lambda_m_PPi", "Invariant Lambda mass (Lambda->PPi)", 300, 1.11566, 1.11571);
    }
    fHistLambdareco_m_PPi->SetXTitle("m_{Lambda} (GeV)"); fHistLambdareco_m_PPi->SetYTitle("Number of Entries");
    fHistLambdareco_m_PiPi  = new TH1F("h_Lambda_m_PiPi", "Invariant mass (* #rightarrow #pi#pi)", 480, 0.0, 1.2);
    fHistLambdareco_m_PiPi->SetXTitle("m (Gev)");         fHistLambdareco_m_PiPi->SetYTitle("Number of Entries");
    fHistLambdareco_m_ee  = new TH1F("h_Lambda_m_ee", "Invariant mass (* #rightarrow e e)", 480, 0.0, 1.2);
    fHistLambdareco_m_ee->SetXTitle("m (Gev)");         fHistLambdareco_m_ee->SetYTitle("Number of Entries");
    fHistLambdareco_pt_PPi  = new TH1F("h_Lambda_pt_PPi", "Lambda-p_{#perp} (Lambda->PPi)", 60, 0, 30);
    fHistLambdareco_pt_PPi->SetXTitle("p_{#perp} (GeV)"); fHistLambdareco_pt_PPi->SetYTitle("Number of Entries");
    fHistLambdareco_phi_PPi = new TH1F("h_Lambda_phi_PPi", "Lambda #phi distribution (Lambda->PPi)", 128, -3.2, 3.2);
    fHistLambdareco_phi_PPi->SetXTitle("#phi (rad)");     fHistLambdareco_phi_PPi->SetYTitle("Number of Entries");
    fHistLambdareco_eta_PPi = new TH1F("h_Lambda_eta_PPi", "Lambda #eta distribution (Lambda->PPi)", 100, -3, 3);
    fHistLambdareco_eta_PPi->SetXTitle("#eta");           fHistLambdareco_eta_PPi->SetYTitle("Number of Entries");
    fHistLambdareco_N_PPi   = new TH1F("h_Lambda_N_PPi", "Reconstructed Lambdas per event (Lambda->PPi)", 10, 0, 10);
    fHistLambdareco_N_PPi->SetXTitle("N_{Lambda}/evt");   fHistLambdareco_N_PPi->SetYTitle("Number of Entries");
    fHistLambdareco_tau_PPi = new TH1F("h_Lambda_tau_PPi", "Reconstructed Lambda lifetime (Lambda->PPi)", 100, 0, 300);
    fHistLambdareco_tau_PPi->SetXTitle("#tau (ps)");      fHistLambdareco_tau_PPi->SetYTitle("Number of Entries");
    fHistLambdareco_truth_PPi = new TH2F("h_Lambda_truth_PPi", "Pdg Code of truth-matched, reconstructed particles", 6260, -3130, 3130, 50, 0.0, 1.0);
    fHistLambdareco_truth_PPi->SetXTitle("Pdg Code");     fHistLambdareco_truth_PPi->SetYTitle("#Chi^{2} Probability");
    fHistLambdareco_truth_PPi->SetZTitle("Number of Entries");
    fHistLambdareco_R_vtx = new TH1F("h_Lambda_r_vtx", "Radial distance of secondary vertices", 400, 0.0, 100.0);
    fHistLambdareco_R_vtx->SetXTitle("r_{#perp} (cm)");   fHistLambdareco_R_vtx->SetYTitle("Number of Entries");
    fHistLambdareco_tdcy_len = new TH1F("h_Lambda_tdcy_len", "Transverse #Lambda decay length", 400, 0.0, 100.0);
    fHistLambdareco_tdcy_len->SetXTitle("s_{#perp} (cm)");fHistLambdareco_tdcy_len->SetYTitle("Number of Entries");
    fHistLambdareco_oangle = new TH1F("h_Lambda_oangle", "Opening angle of p/pi", 256, 0.0, 3.2);
    fHistLambdareco_oangle->SetXTitle("#alpha (rad)");    fHistLambdareco_oangle->SetYTitle("Number of Entries");
    fHistLambdareco_dangle = new TH1F("h_Lambda_dangle", "Decay angle of p/pi", 256, -1.0, 1.0);
    fHistLambdareco_dangle->SetXTitle("cos(#alpha)");     fHistLambdareco_dangle->SetYTitle("Number of Entries");
    
    // Pion histograms in sub-folder
    gDirectory->mkdir("Pion", "Pi from Lambda -> PPi");
    gDirectory->cd("Pion");
    fHistLambdareco_Pion_pt = new TH1F("h_Lambda_Pion_pt",   "#pi:  p_{#perp} (Lambda->P#Pi)", 60, 0, 30);
    fHistLambdareco_Pion_pt->SetXTitle("p_{#perp} (GeV)"); fHistLambdareco_Pion_pt->SetYTitle("Number of Entries");
    fHistLambdareco_Pion_eta = new TH1F("h_Lambda_Pion_eta", "#pi:  #eta distribution (Lambda->P#Pi)", 100, -3, 3);
    fHistLambdareco_Pion_eta->SetXTitle("#eta");           fHistLambdareco_Pion_eta->SetYTitle("Number of Entries");
    fHistLambdareco_Pion_phi = new TH1F("h_Lambda_Pion_phi", "#pi:  #phi distribution (Lambda->P#Pi)", 50, -3.14, 3.14);
    fHistLambdareco_Pion_phi->SetXTitle("#phi");           fHistLambdareco_Pion_phi->SetYTitle("Number of Entries");

    fHistLambdareco_Pion_PtEta = new TH2F("h_Lambda_Pion_PtEta",   "#pi:  pt and eta (Lambda->P#Pi)",
					  400, 0, 400, 50,-5,5);
    fHistLambdareco_Pion_PtEta->SetXTitle("p_{t} [GeV]");
    fHistLambdareco_Pion_PtEta->SetYTitle("#eta");
    fHistLambdareco_Pion_PtEta->SetZTitle("Number of Entries");


    
    // Fine grained statistics about +/- charged pions
    gDirectory->mkdir("Pi_Plus", "Pion(+) from Lambda -> PPi");
    gDirectory->cd("Pi_Plus");
    fHistLambdareco_Piplus_pt = new TH1F("h_Lambda_Piplus_pt",   "#pi^{+}: p_{#perp} (Lambda->P#Pi)", 60, 0, 30);
    fHistLambdareco_Piplus_pt->SetXTitle("p_{#perp} (GeV)");  fHistLambdareco_Piplus_pt->SetYTitle("Number of Entries");
    fHistLambdareco_Piplus_eta = new TH1F("h_Lambda_Piplus_eta", "#pi^{+}: #eta distribution (Lambda->P#Pi)",100, -3, 3);
    fHistLambdareco_Piplus_eta->SetXTitle("#eta");            fHistLambdareco_Piplus_eta->SetYTitle("Number of Entries");
    fHistLambdareco_Piplus_phi = new TH1F("h_Lambda_Piplus_phi", "#pi^{+}: #phi distribution (Lambda->P#Pi)",50, -3.14, 3.14);
    fHistLambdareco_Piplus_phi->SetXTitle("#phi");            fHistLambdareco_Piplus_phi->SetYTitle("Number of Entries");

    gDirectory->cd("../");
    gDirectory->mkdir("Pi_Minus", "Pion(-) from Lambda -> PPi");
    gDirectory->cd("Pi_Minus");
    fHistLambdareco_Piminus_pt = new TH1F("h_Lambda_Piminus_pt",   "#pi^{-}: p_{#perp} (Lambda->P#Pi)", 60, 0, 30);
    fHistLambdareco_Piminus_pt->SetXTitle("p_{#perp} (GeV)"); fHistLambdareco_Piminus_pt->SetYTitle("Number of Entries");
    fHistLambdareco_Piminus_eta = new TH1F("h_Lambda_Piminus_eta", "#pi^{-}: #eta distribution (Lambda->P#Pi)", 100, -3, 3);
    fHistLambdareco_Piminus_eta->SetXTitle("#eta");           fHistLambdareco_Piminus_eta->SetYTitle("Number of Entries");
    fHistLambdareco_Piminus_phi = new TH1F("h_Lambda_Piminus_phi", "#pi^{-}: #phi distribution (Lambda->P#Pi)", 50, -3.14, 3.14);
    fHistLambdareco_Piminus_phi->SetXTitle("#phi");           fHistLambdareco_Piminus_phi->SetYTitle("Number of Entries");    
    
    gDirectory->cd("../../"); 

    // Proton histograms in sub-folder
    gDirectory->mkdir("Proton", "Proton from Lambda -> PPi");
    gDirectory->cd("Proton");
    fHistLambdareco_Proton_pt = new TH1F("h_Lambda_Proton_pt",   "Proton:  p_{#perp} (Lambda->P#Pi)", 60, 0, 30);
    fHistLambdareco_Proton_pt->SetXTitle("p_{#perp} (GeV)"); fHistLambdareco_Proton_pt->SetYTitle("Number of Entries");
    fHistLambdareco_Proton_eta = new TH1F("h_Lambda_Proton_eta", "Proton:  #eta distribution (Lambda->P#Pi)", 100, -5, 5);
    fHistLambdareco_Proton_eta->SetXTitle("#eta");           fHistLambdareco_Proton_eta->SetYTitle("Number of Entries");
    fHistLambdareco_Proton_phi = new TH1F("h_Lambda_Proton_phi", "Proton:  #phi distribution (Lambda->P#Pi)", 50, -3.14, 3.14);
    fHistLambdareco_Proton_phi->SetXTitle("#phi");
    fHistLambdareco_Proton_phi->SetYTitle("Number of Entries");

    
    fHistLambdareco_Proton_PtEta = new TH2F("h_Lambda_Proton_PtEta",   "#P:  pt and eta (Lambda->P#Pi)",
					    400, 0, 400, 50,-5,5);
    fHistLambdareco_Proton_PtEta->SetXTitle("p_{t} [GeV]");
    fHistLambdareco_Proton_PtEta->SetYTitle("#eta");
    fHistLambdareco_Proton_PtEta->SetZTitle("Number of Entries");
    
    
    // fine grained statistics about proton/antiproton
    gDirectory->mkdir("Proton_Plus", "Proton(+) from Lambda -> PPi");
    gDirectory->cd("Proton_Plus");
    fHistLambdareco_Prplus_pt = new TH1F("h_Lambda_Prplus_pt",   "Pr^{+}   p_{#perp} (Lambda->P#Pi)", 60, 0, 30);
    fHistLambdareco_Prplus_pt->SetXTitle("p_{#perp} (GeV)"); fHistLambdareco_Prplus_pt->SetYTitle("Number of Entries");
    fHistLambdareco_Prplus_eta = new TH1F("h_Lambda_Prplus_eta", "Pr^{+}:  #eta distribution (Lambda->P#Pi)", 100, -5, 5);
    fHistLambdareco_Prplus_eta->SetXTitle("#eta");           fHistLambdareco_Prplus_eta->SetYTitle("Number of Entries");
    fHistLambdareco_Prplus_phi = new TH1F("h_Lambda_Prplus_phi", "Pr^{+}:  #phi distribution (Lambda->P#Pi)", 50, -3.14, 3.14);
    fHistLambdareco_Prplus_phi->SetXTitle("#phi");
    fHistLambdareco_Prplus_phi->SetYTitle("Number of Entries");

    fHistLambdareco_Prplus_PtEta = new TH2F("h_Lambda_Prplus_PtEta",   "#P+:  pt and eta (Lambda->P#Pi)",
					    400, 0, 400, 50,-5,5);
    fHistLambdareco_Prplus_PtEta->SetXTitle("p_{t} [GeV]");
    fHistLambdareco_Prplus_PtEta->SetYTitle("#eta");
    fHistLambdareco_Prplus_PtEta->SetZTitle("Number of Entries");

    
    gDirectory->cd("../");
    gDirectory->mkdir("Proton_Minus", "Antiproton from Lambda -> PPi");
    gDirectory->cd("Proton_Minus");
    fHistLambdareco_Prminus_pt = new TH1F("h_Lambda_Prminus_pt",   "Pr^{-}   p_{#perp} (Lambda->P#Pi)", 60, 0, 30);
    fHistLambdareco_Prminus_pt->SetXTitle("p_{#perp} (GeV)"); fHistLambdareco_Prminus_pt->SetYTitle("Number of Entries");
    fHistLambdareco_Prminus_eta = new TH1F("h_Lambda_Prminus_eta", "Pr^{-}:  #eta distribution (Lambda->P#Pi)", 100, -5, 5);
    fHistLambdareco_Prminus_eta->SetXTitle("#eta");           fHistLambdareco_Prminus_eta->SetYTitle("Number of Entries");
    fHistLambdareco_Prminus_phi = new TH1F("h_Lambda_Prminus_phi", "Pr^{-}:  #phi distribution (Lambda->P#Pi)", 50, -3.14, 3.14);
    fHistLambdareco_Prminus_phi->SetXTitle("#phi");           fHistLambdareco_Prminus_phi->SetYTitle("Number of Entries");

    fHistLambdareco_Prminus_PtEta = new TH2F("h_Lambda_Prminus_PtEta",   "#P-:  pt and eta (Lambda->P#Pi)",
					    400, 0, 400, 50,-5,5);
    fHistLambdareco_Prminus_PtEta->SetXTitle("p_{t} [GeV]");
    fHistLambdareco_Prminus_PtEta->SetYTitle("#eta");
    fHistLambdareco_Prminus_PtEta->SetZTitle("Number of Entries");


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

    
    // ===================
    // Book bkg histograms
    // ===================
 
    gDirectory->mkdir("Background", "Same charged candidates");
    gDirectory->cd("Background");
    

    // Lambda -> PPi
    // ----------

    gDirectory->mkdir("PPi", "Lambda' -> proton pion");
    gDirectory->cd("PPi");

    // wide inv mass window to see the Lambda resonance for the cutbased reconstruction
    if ( fMode == kCutBased ) {
      fHistLambdareco_m_PPi_bkg   = new TH1F("h_Lambda_m_PPi_bkg", "Invariant Lambda' mass (Lambda->PPi)", 2400, 0.0, 1.2);
    } else {
      fHistLambdareco_m_PPi_bkg   = new TH1F("h_Lambda_m_PPi_bkg", "Invariant Lambda' mass (Lambda->PPi)", 50, 1.1, 1.14);
    }
    fHistLambdareco_m_PPi_bkg->SetXTitle("m_{Lambda} (GeV)"); fHistLambdareco_m_PPi_bkg->SetYTitle("Number of Entries");
    fHistLambdareco_pt_PPi_bkg  = new TH1F("h_Lambda_pt_PPi_bkg", "Lambda'-p_{#perp} (Lambda->PPi)", 60, 0, 30);
    fHistLambdareco_pt_PPi_bkg->SetXTitle("p_{#perp} (GeV)"); fHistLambdareco_pt_PPi_bkg->SetYTitle("Number of Entries");
    fHistLambdareco_phi_PPi_bkg = new TH1F("h_Lambda_phi_PPi_bkg", "Lambda' #phi distribution (Lambda->PPi)", 128, -3.2, 3.2);
    fHistLambdareco_phi_PPi_bkg->SetXTitle("#phi (rad)");     fHistLambdareco_phi_PPi_bkg->SetYTitle("Number of Entries");
    fHistLambdareco_eta_PPi_bkg = new TH1F("h_Lambda_eta_PPi_bkg", "Lambda' #eta distribution (Lambda->PPi)", 100, -3, 3);
    fHistLambdareco_eta_PPi_bkg->SetXTitle("#eta");           fHistLambdareco_eta_PPi_bkg->SetYTitle("Number of Entries");
    fHistLambdareco_N_PPi_bkg   = new TH1F("h_Lambda_N_PPi_bkg", "Reconstructed Lambda' per event (Lambda->PPi)", 10, 0, 10);
    fHistLambdareco_N_PPi_bkg->SetXTitle("N_{Lambda}/evt");   fHistLambdareco_N_PPi_bkg->SetYTitle("Number of Entries");
    fHistLambdareco_tau_PPi_bkg = new TH1F("h_Lambda_tau_PPi_bkg", "Reconstructed Lambda' lifetime (Lambda->PPi)", 100, 0, 300);
    fHistLambdareco_tau_PPi_bkg->SetXTitle("#tau (ps)");      fHistLambdareco_tau_PPi_bkg->SetYTitle("Number of Entries");
    fHistLambdareco_truth_PPi_bkg = new TH1F("h_Lambda_truth_PPi_bkg", "Pdg Code of truth-matched, reconstructed particles", 6260, -3130, 3130);
    fHistLambdareco_truth_PPi_bkg->SetXTitle("Pdg Code");     fHistLambdareco_truth_PPi_bkg->SetYTitle("Number of Entries");
    fHistLambdareco_R_vtx_bkg = new TH1F("h_Lambda_r_vtx_bkg", "Radial distance of secondary vertices", 400, 0.0, 100.0);
    fHistLambdareco_R_vtx_bkg->SetXTitle("r_{#perp} (cm)");   fHistLambdareco_R_vtx_bkg->SetYTitle("Number of Entries");
    fHistLambdareco_tdcy_len_bkg = new TH1F("h_Lambda_tdcy_len_bkg", "Transverse #Lambda decay length", 400, 0.0, 100.0);
    fHistLambdareco_tdcy_len_bkg->SetXTitle("s_{#perp} (cm)");fHistLambdareco_tdcy_len_bkg->SetYTitle("Number of Entries");
    fHistLambdareco_oangle_bkg = new TH1F("h_Lambda_oangle_bkg ", "Opening angle of p/pi", 256, 0.0, 3.2);
    fHistLambdareco_oangle_bkg ->SetXTitle("#alpha (rad)");   fHistLambdareco_oangle_bkg ->SetYTitle("Number of Entries");
    fHistLambdareco_dangle_bkg  = new TH1F("h_Lambda_dangle_bkg ", "Decay angle of p/pi", 256, -1.0, 1.0);
    fHistLambdareco_dangle_bkg ->SetXTitle("cos(#alpha)");    fHistLambdareco_dangle_bkg ->SetYTitle("Number of Entries");

    // Pion histograms in sub-folder
    gDirectory->mkdir("Pion", "Pion from Lambda' -> PPi");
    gDirectory->cd("Pion");
    fHistLambdareco_Pion_pt_bkg = new TH1F("h_Lambda_Pion_pt_bkg",   "#pi:  p_{#perp} (Lambda->P#Pi)", 60, 0, 30);
    fHistLambdareco_Pion_pt_bkg->SetXTitle("p_{#perp} (GeV)"); fHistLambdareco_Pion_pt_bkg->SetYTitle("Number of Entries");
    fHistLambdareco_Pion_eta_bkg = new TH1F("h_Lambda_Pion_eta_bkg", "#pi:  #eta distribution (Lambda->P#Pi)", 100, -3, 3);
    fHistLambdareco_Pion_eta_bkg->SetXTitle("#eta");           fHistLambdareco_Pion_eta_bkg->SetYTitle("Number of Entries");
    fHistLambdareco_Pion_phi_bkg = new TH1F("h_Lambda_Pion_phi_bkg", "#pi:  #phi distribution (Lambda->P#Pi)", 50, -3.14, 3.14);
    fHistLambdareco_Pion_phi_bkg->SetXTitle("#phi");           fHistLambdareco_Pion_phi_bkg->SetYTitle("Number of Entries");
    
    gDirectory->mkdir("Pi_Plus", "Pion(+) from Lambda' -> PPi");
    gDirectory->cd("Pi_Plus");
    fHistLambdareco_Piplus_pt_bkg = new TH1F("h_Lambda_Piplus_pt",   "#pi^{+}:  p_{#perp} (Lambda'->P#Pi)", 60, 0, 30);
    fHistLambdareco_Piplus_pt_bkg->SetXTitle("p_{#perp} (GeV)");  fHistLambdareco_Piplus_pt_bkg->SetYTitle("Number of Entries");
    fHistLambdareco_Piplus_eta_bkg = new TH1F("h_Lambda_Piplus_eta", "#pi^{+}:  #eta distribution (Lambda'->P#Pi)", 100, -3, 3);
    fHistLambdareco_Piplus_eta_bkg->SetXTitle("#eta");            fHistLambdareco_Piplus_eta_bkg->SetYTitle("Number of Entries");
    fHistLambdareco_Piplus_phi_bkg = new TH1F("h_Lambda_Piplus_phi", "#pi^{+}:  #phi distribution (Lambda'->P#Pi)", 50, -3.14, 3.14);
    fHistLambdareco_Piplus_phi_bkg->SetXTitle("#phi");            fHistLambdareco_Piplus_phi_bkg->SetYTitle("Number of Entries");

    gDirectory->cd("../");
    gDirectory->mkdir("Pi_Minus", "Pion(-) from Lambda' -> PPi");
    gDirectory->cd("Pi_Minus");
    fHistLambdareco_Piminus_pt_bkg = new TH1F("h_Lambda_Piminus_pt",   "#pi^{-}:  p_{#perp} (Lambda'->P#Pi)", 60, 0, 30);
    fHistLambdareco_Piminus_pt_bkg->SetXTitle("p_{#perp} (GeV)"); fHistLambdareco_Piminus_pt_bkg->SetYTitle("Number of Entries");
    fHistLambdareco_Piminus_eta_bkg = new TH1F("h_Lambda_Piminus_eta", "#pi^{-}:  #eta distribution (Lambda'->P#Pi)", 100, -3, 3);
    fHistLambdareco_Piminus_eta_bkg->SetXTitle("#eta");           fHistLambdareco_Piminus_eta_bkg->SetYTitle("Number of Entries");
    fHistLambdareco_Piminus_phi_bkg = new TH1F("h_Lambda_Piminus_phi", "#pi^{-}:  #phi distribution (Lambda'->P#Pi)", 50, -3.14, 3.14);
    fHistLambdareco_Piminus_phi_bkg->SetXTitle("#phi");           fHistLambdareco_Piminus_phi_bkg->SetYTitle("Number of Entries");

    gDirectory->cd("../../"); 
    
    // Proton histograms in sub-folder
    gDirectory->mkdir("Proton", "Proton from Lambda' -> PPi");
    gDirectory->cd("Proton");
    fHistLambdareco_Proton_pt_bkg = new TH1F("h_Lambda_Proton_pt_bkg",   "Proton:  p_{#perp} (Lambda'->#Pi#Pi)", 60, 0, 30);
    fHistLambdareco_Proton_pt_bkg->SetXTitle("p_{#perp} (GeV)"); fHistLambdareco_Proton_pt_bkg->SetYTitle("Number of Entries");
    fHistLambdareco_Proton_eta_bkg = new TH1F("h_Lambda_Proton_eta_bkg", "Proton:  #eta distribution (Lambda'->#Pi#Pi)", 100, -5, 5);
    fHistLambdareco_Proton_eta_bkg->SetXTitle("#eta");           fHistLambdareco_Proton_eta_bkg->SetYTitle("Number of Entries");
    fHistLambdareco_Proton_phi_bkg = new TH1F("h_Lambda_Proton_phi_bkg", "Proton:  #phi distribution (Lambda'->#Pi#Pi)", 50, -3.14, 3.14);
    fHistLambdareco_Proton_phi_bkg->SetXTitle("#phi");           fHistLambdareco_Proton_phi_bkg->SetYTitle("Number of Entries");

    gDirectory->mkdir("Proton_Plus", "Proton(+) from Lambda' -> PPi");
    gDirectory->cd("Proton_Plus");

    fHistLambdareco_Prplus_pt_bkg = new TH1F("h_Lambda_Prplus_pt",   "Pr^{+}:  p_{#perp} (Lambda'->P#Pi)", 60, 0, 30);
    fHistLambdareco_Prplus_pt_bkg->SetXTitle("p_{#perp} (GeV)"); fHistLambdareco_Prplus_pt->SetYTitle("Number of Entries");
    fHistLambdareco_Prplus_eta_bkg = new TH1F("h_Lambda_Prplus_eta", "Pr^{+}:  #eta distribution (Lambda'->P#Pi)", 100, -5, 5);
    fHistLambdareco_Prplus_eta_bkg->SetXTitle("#eta");           fHistLambdareco_Prplus_eta->SetYTitle("Number of Entries");
    fHistLambdareco_Prplus_phi_bkg = new TH1F("h_Lambda_Prplus_phi", "Pr^{+}:  #phi distribution (Lambda'->P#Pi)", 50, -3.14, 3.14);
    fHistLambdareco_Prplus_phi_bkg->SetXTitle("#phi");           fHistLambdareco_Prplus_phi_bkg->SetYTitle("Number of Entries");

    gDirectory->cd("../");
    gDirectory->mkdir("Proton_Minus", "Antiproton from Lambda' -> PPi");
    gDirectory->cd("Proton_Minus");
    fHistLambdareco_Prminus_pt_bkg = new TH1F("h_Lambda_Prminus_pt",   "Pr^{-}:  p_{#perp} (Lambda'->P#Pi)", 60, 0, 30);
    fHistLambdareco_Prminus_pt_bkg->SetXTitle("p_{#perp} (GeV)"); fHistLambdareco_Prminus_pt_bkg->SetYTitle("Number of Entries");
    fHistLambdareco_Prminus_eta_bkg = new TH1F("h_Lambda_Prminus_eta", "Pr^{-}:  #eta distribution (Lambda'->P#Pi)", 100, -5, 5);
    fHistLambdareco_Prminus_eta_bkg->SetXTitle("#eta");           fHistLambdareco_Prminus_eta_bkg->SetYTitle("Number of Entries");
    fHistLambdareco_Prminus_phi_bkg = new TH1F("h_Lambda_Prminus_phi", "Pr^{-}:  #phi distribution (Lambda'->P#Pi)", 50, -3.14, 3.14);
    fHistLambdareco_Prminus_phi_bkg->SetXTitle("#phi");           fHistLambdareco_Prminus_phi_bkg->SetYTitle("Number of Entries");

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

    //
    // Histograms for MC truth matching (signal and background)
    gDirectory->mkdir("MC_Signal");
    gDirectory->cd("MC_Signal");
    if ( fMode == kCutBased ) {
      fHistLambdareco_MC_m   = new TH1F("h_Lambda_MC_m", "Invariant #Lambda mass (MC signal)", 2400, 0.0, 1.2);
    } else {
      fHistLambdareco_MC_m   = new TH1F("h_Lambda_MC_m", "Invariant #Lambda mass (MC signal)", 50, 1.1, 1.14);
    }
    fHistLambdareco_MC_m->SetXTitle("m_{#Lambda} (GeV)");     fHistLambdareco_MC_m->SetYTitle("Number of Entries");
    fHistLambdareco_MC_m_ppi = new TH1F("h_Lambda_MC_m_ppi", "Invariant mass w/ proton/pion hypothesis (MC signal)", 500, 1.0, 1.2);
    fHistLambdareco_MC_m_ppi->SetXTitle("m_{#Lambda} (GeV)"); fHistLambdareco_MC_m_ppi->SetYTitle("Number of Entries");
    fHistLambdareco_MC_m_pipi = new TH1F("h_Lambda_MC_m_pipi", "Invariant mass w/ pion/pion hypothesis (MC signal)", 480, 0.0, 1.2);
    fHistLambdareco_MC_m_pipi->SetXTitle("m_{#Lambda} (GeV)"); fHistLambdareco_MC_m_pipi->SetYTitle("Number of Entries");
    fHistLambdareco_MC_m_ee = new TH1F("h_Lambda_MC_m_ee", "Invariant mass w/ ee hypothesis (MC signal)", 480, 0.0, 1.2);
    fHistLambdareco_MC_m_ee->SetXTitle("m_{#Lambda} (GeV)");  fHistLambdareco_MC_m_ee->SetYTitle("Number of Entries");
    fHistLambdareco_MC_m_ppi_o = new TH1F("h_Lambda_MC_m_ppi_o", "Invariant mass w/ proton/pion hypothesis (MC signal)", 480, 0.0, 1.2);
    fHistLambdareco_MC_m_ppi_o->SetXTitle("m_{#Lambda} (GeV)"); fHistLambdareco_MC_m_ppi_o->SetYTitle("Number of Entries");
    fHistLambdareco_MC_m_pipi_o = new TH1F("h_Lambda_MC_m_pipi_o", "Invariant mass w/ pion/pion hypothesis (MC signal)", 480, 0.0, 1.2);
    fHistLambdareco_MC_m_pipi_o->SetXTitle("m_{#Lambda} (GeV)"); fHistLambdareco_MC_m_pipi_o->SetYTitle("Number of Entries");
    fHistLambdareco_MC_m_ee_o = new TH1F("h_Lambda_MC_m_ee_o", "Invariant mass w/ ee hypothesis (MC signal)", 480, 0.0, 1.2);
    fHistLambdareco_MC_m_ee_o->SetXTitle("m_{#Lambda} (GeV)");  fHistLambdareco_MC_m_ee_o->SetYTitle("Number of Entries");
    fHistLambdareco_MC_pt  = new TH1F("h_Lambda_MC_pt", "Lambda-p_{#perp} (MC signal)", 60, 0, 30);
    fHistLambdareco_MC_pt->SetXTitle("p_{#perp} (GeV)");      fHistLambdareco_MC_pt->SetYTitle("Number of Entries");
    fHistLambdareco_MC_phi = new TH1F("h_Lambda_MC_phi", "Lambda #phi distribution (MC signal)", 128, -3.2, 3.2);
    fHistLambdareco_MC_phi->SetXTitle("#phi (rad)");          fHistLambdareco_MC_phi->SetYTitle("Number of Entries");
    fHistLambdareco_MC_eta = new TH1F("h_Lambda_MC_eta", "Lambda #eta distribution (MC signal)", 100, -3, 3);
    fHistLambdareco_MC_eta->SetXTitle("#eta");                fHistLambdareco_MC_eta->SetYTitle("Number of Entries");
    fHistLambdareco_MC_tau = new TH1F("h_Lambda_MC_tau", "Reconstructed Lambda lifetime (MC signal)", 100, 0, 300);
    fHistLambdareco_MC_tau->SetXTitle("#tau (ps)");           fHistLambdareco_MC_tau->SetYTitle("Number of Entries");
    fHistLambdareco_MC_src_div      = new TH1F("h_Lambda_MC_src_div", "Angular distance of #Lambda origin and primary vertex", 300, 0.0, 3.2);
    fHistLambdareco_MC_src_div->SetXTitle("#alpha (rad)");    fHistLambdareco_MC_src_div->SetYTitle("Number of Entries");
    fHistLambdareco_MC_R_vtx        = new TH1F("h_Lambda_MC_r_vtx", "Radial distance of secondary vertices", 400, 0.0, 100.0);
    fHistLambdareco_MC_R_vtx->SetXTitle("r_{#perp} (cm)");    fHistLambdareco_MC_R_vtx->SetYTitle("Number of Entries");
    fHistLambdareco_MC_tdcy_len     = new TH1F("h_Lambda_MC_tdcy_len", "Transverse decay length (MC signal)", 400, 0.0, 100.0);
    fHistLambdareco_MC_tdcy_len->SetXTitle("s_{#perp} (cm)"); fHistLambdareco_MC_tdcy_len->SetYTitle("Number of Entries");
    fHistLambdareco_MC_oangle       = new TH1F("h_Lambda_MC_oangle", "Opening angle of p/pi (MC signal)", 256, 0.0, 3.2);
    fHistLambdareco_MC_oangle->SetXTitle("#alpha (rad)");     fHistLambdareco_MC_oangle->SetYTitle("Number of Entries");
    fHistLambdareco_MC_dangle       = new TH1F("h_Lambda_MC_dangle", "Decay angle of p/pi (MC signal)", 512, -1.0, 1.0);
    fHistLambdareco_MC_dangle->SetXTitle("cos(#alpha)");      fHistLambdareco_MC_dangle->SetYTitle("Number of Entries");
    fHistLambdareco_MC_vtx_chi2     = new TH1F("h_Lambda_MC_vtx_chi2", "#Chi^{2}/ndf of vertices (MC signal)", 256, 0.0, 5.0);
    fHistLambdareco_MC_vtx_chi2->SetXTitle("#Chi^{2}/ndf");   fHistLambdareco_MC_vtx_chi2->SetYTitle("Number of Entries");
    fHistLambdareco_MC_trk_chi2     = new TH1F("h_Lambda_MC_trk_chi2", "#Chi^{2}/ndf of tracks (MC signal)", 256, 0.0, 5.0);
    fHistLambdareco_MC_trk_chi2->SetXTitle("#Chi^{2}/ndf");   fHistLambdareco_MC_trk_chi2->SetYTitle("Number of Entries");
    fHistLambdareco_MC_dang_mee     = new TH2F("h_Lambda_MC_dangle_mee", "Decay angle over m_{ee}", 256, -1.0, 1.0, 480, 0.0, 1.2);
    fHistLambdareco_MC_dang_mee->SetXTitle("cos(#alpha)");    fHistLambdareco_MC_dang_mee->SetYTitle("m_{ee} (GeV)");
    
    gDirectory->cd("..");
    gDirectory->mkdir("MC_Background");
    gDirectory->cd("MC_Background");
    if ( fMode == kCutBased ) {
      fHistLambdareco_MC_m_bkg   = new TH1F("h_Lambda_MC_m_bkg", "Invariant #Lambda mass (MC background)", 2400, 0.0, 1.2);
    } else {
      fHistLambdareco_MC_m_bkg   = new TH1F("h_Lambda_MC_m_bkg", "Invariant #Lambda mass (MC background)", 50, 1.1, 1.14);
    }
    fHistLambdareco_MC_m_bkg->SetXTitle("m_{#Lambda} (GeV)"); fHistLambdareco_MC_m_bkg->SetYTitle("Number of Entries");
    fHistLambdareco_MC_m_ppi_bkg = new TH1F("h_Lambda_MC_m_ppi_bkg", "Invariant mass w/ p#pi hypothesis (MC bkg)", 500, 1.0, 1.2);
    fHistLambdareco_MC_m_ppi_bkg->SetXTitle("m_{#Lambda} (GeV)"); fHistLambdareco_MC_m_ppi_bkg->SetYTitle("Number of Entries");
    fHistLambdareco_MC_m_pipi_bkg = new TH1F("h_Lambda_MC_m_pipi_bkg", "Invariant mass w/ #pi#pi hypothesis (MC bkg)", 480, 0.0, 1.2);
    fHistLambdareco_MC_m_pipi_bkg->SetXTitle("m_{#Lambda} (GeV)"); fHistLambdareco_MC_m_pipi_bkg->SetYTitle("Number of Entries");
    fHistLambdareco_MC_m_ee_bkg = new TH1F("h_Lambda_MC_m_ee_bkg", "Invariant mass w/ ee hypothesis (MC bkg)", 480, 0.0, 1.2);
    fHistLambdareco_MC_m_ee_bkg->SetXTitle("m_{#Lambda} (GeV)"); fHistLambdareco_MC_m_ee_bkg->SetYTitle("Number of Entries");
    fHistLambdareco_MC_m_ppi_o_bkg = new TH1F("h_Lambda_MC_m_ppi_o_bkg", "Invariant mass w/ p#pi hypothesis (MC bkg)", 480, 0.0, 1.2);
    fHistLambdareco_MC_m_ppi_o_bkg->SetXTitle("m_{#Lambda} (GeV)"); fHistLambdareco_MC_m_ppi_o_bkg->SetYTitle("Number of Entries");
    fHistLambdareco_MC_m_pipi_o_bkg = new TH1F("h_Lambda_MC_m_pipi_o_bkg", "Invariant mass w/ #pi#pi hypothesis (MC bkg)", 480, 0.0, 1.2);
    fHistLambdareco_MC_m_pipi_o_bkg->SetXTitle("m_{#Lambda} (GeV)"); fHistLambdareco_MC_m_pipi_o_bkg->SetYTitle("Number of Entries");
    fHistLambdareco_MC_m_ee_o_bkg = new TH1F("h_Lambda_MC_m_ee_o_bkg", "Invariant mass w/ ee hypothesis (MC bkg)", 480, 0.0, 1.2);
    fHistLambdareco_MC_m_ee_o_bkg->SetXTitle("m_{#Lambda} (GeV)"); fHistLambdareco_MC_m_ee_o_bkg->SetYTitle("Number of Entries");
    fHistLambdareco_MC_pt_bkg  = new TH1F("h_Lambda_MC_pt_bkg", "Lambda-p_{#perp} (MC background)", 60, 0, 30);
    fHistLambdareco_MC_pt_bkg->SetXTitle("p_{#perp} (GeV)");   fHistLambdareco_MC_pt_bkg->SetYTitle("Number of Entries");
    fHistLambdareco_MC_phi_bkg = new TH1F("h_Lambda_MC_phi_bkg", "Lambda #phi distribution (MC background)", 128, -3.2, 3.2);
    fHistLambdareco_MC_phi_bkg->SetXTitle("#phi (rad)");       fHistLambdareco_MC_phi_bkg->SetYTitle("Number of Entries");
    fHistLambdareco_MC_eta_bkg = new TH1F("h_Lambda_MC_eta_bkg", "Lambda #eta distribution (MC background)", 100, -3, 3);
    fHistLambdareco_MC_eta_bkg->SetXTitle("#eta");             fHistLambdareco_MC_eta_bkg->SetYTitle("Number of Entries");
    fHistLambdareco_MC_tau_bkg = new TH1F("h_Lambda_MC_tau_bkg", "Reconstructed Lambda lifetime (MC background)", 100, 0, 300);
    fHistLambdareco_MC_tau_bkg->SetXTitle("#tau (ps)");        fHistLambdareco_MC_tau_bkg->SetYTitle("Number of Entries");
    fHistLambdareco_MC_src_div_bkg = new TH1F("h_Lambda_MC_src_div_bkg", "Angular distance of #Lambda origin and primary vertex", 300, 0.0, 3.2);
    fHistLambdareco_MC_src_div_bkg->SetXTitle("#alpha (rad)"); fHistLambdareco_MC_src_div_bkg->SetYTitle("Number of Entries");
    fHistLambdareco_MC_R_vtx_bkg = new TH1F("h_Lambda_MC_r_vtx_bkg", "Radial distance of secondary vertices", 400, 0.0, 100.0);
    fHistLambdareco_MC_R_vtx_bkg->SetXTitle("r_{#perp} (cm)"); fHistLambdareco_MC_R_vtx_bkg->SetYTitle("Number of Entries");
    fHistLambdareco_MC_tdcy_len_bkg = new TH1F("h_Lambda_MC_tdcy_len_bkg", "Transverse decay length (MC bkg)", 400, 0.0, 100.0);
    fHistLambdareco_MC_tdcy_len_bkg->SetXTitle("s_{#perp} (cm)"); fHistLambdareco_MC_tdcy_len_bkg->SetYTitle("Number of Entries");
    fHistLambdareco_MC_oangle_bkg   = new TH1F("h_Lambda_MC_oangle_bkg", "Opening angle of p/pi (MC bkg)", 256, 0.0, 3.2);
    fHistLambdareco_MC_oangle_bkg->SetXTitle("#alpha (rad)");  fHistLambdareco_MC_oangle_bkg->SetYTitle("Number of Entries");
    fHistLambdareco_MC_dangle_bkg   = new TH1F("h_Lambda_MC_dangle_bkg", "Decay angle of p/pi (MC bkg)", 512, -1.0, 1.0);
    fHistLambdareco_MC_dangle_bkg->SetXTitle("cos(#alpha)");   fHistLambdareco_MC_dangle_bkg->SetYTitle("Number of Entries");
    fHistLambdareco_MC_dangle_k_bkg = new TH1F("h_Lambda_MC_dangle_k_bkg", "Decay angle of K_{s}^{0} (MC bkg)", 512, -1.0, 1.0);
    fHistLambdareco_MC_dangle_k_bkg->SetXTitle("cos(#alpha)"); fHistLambdareco_MC_dangle_k_bkg->SetYTitle("Number of Entries");
    fHistLambdareco_MC_dangle_p_bkg = new TH1F("h_Lambda_MC_dangle_p_bkg", "Decay angle of #gamma (MC bkg)", 512, -1.0, 1.0);
    fHistLambdareco_MC_dangle_p_bkg->SetXTitle("cos(#alpha)"); fHistLambdareco_MC_dangle_p_bkg->SetYTitle("Number of Entries");
    fHistLambdareco_MC_vtx_chi2_bkg = new TH1F("h_Lambda_MC_vtx_chi2_bkg", "#Chi^{2}/ndf of vertices (MC bkg)", 256, 0.0, 5.0);
    fHistLambdareco_MC_vtx_chi2_bkg->SetXTitle("#Chi^{2}/ndf");fHistLambdareco_MC_vtx_chi2_bkg->SetYTitle("Number of Entries");
    fHistLambdareco_MC_trk_chi2_bkg = new TH1F("h_Lambda_MC_trk_chi2_bkg", "#Chi^{2}/ndf of tracks (MC bkg)", 256, 0.0, 5.0);
    fHistLambdareco_MC_trk_chi2_bkg->SetXTitle("#Chi^{2}/ndf");fHistLambdareco_MC_trk_chi2_bkg->SetYTitle("Number of Entries");
    fHistLambdareco_MC_dang_mee_bkg = new TH2F("h_Lambda_MC_dangle_mee_bkg", "Decay angle over m_{ee}", 256, -1.0, 1.0, 480, 0.0, 1.2);
    fHistLambdareco_MC_dang_mee_bkg->SetXTitle("cos(#alpha)"); fHistLambdareco_MC_dang_mee_bkg->SetYTitle("m_{ee} (GeV)");

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

    //  Misc stuff
    // --------------
    fHistLambdareco_l_vs_antil = new TH1I("h_Lambda_L_vs_AntiL", "#Lambda vs. #bar#Lambda", 2, 0, 2);
    fHistLambdareco_l_vs_antil->SetXTitle("Particle");         fHistLambdareco_l_vs_antil->SetYTitle("Number of Entries");
    // chi2 over ndof plots
    fHistLambdareco_chi2_vtx = new TH1F("h_Lambda_chi2_vtx", "Quality of vertex fits", 50, 0.0, 5.0);
    fHistLambdareco_chi2_vtx->SetXTitle("Chi^{2} of vertex fits"); fHistLambdareco_chi2_vtx->SetYTitle("Number of Entries");
    fHistLambdareco_chi2_vtx->GetXaxis()->SetLabelSize(0.03);
    fHistLambdareco_chi2_trk = new TH1F("h_Lambda_chi2_trk", "Quality of track fits", 50, 0.0, 5.0);
    fHistLambdareco_chi2_trk->SetXTitle("Chi^{2} of track fits");  fHistLambdareco_chi2_trk->SetYTitle("Number of Entries");
    fHistLambdareco_chi2_trk->GetXaxis()->SetLabelSize(0.03);
    fHistLambdareco_prob_mc = new TH1F("h_Lambda_prob_mc", "Quality of truth matching", 50, 0.0, 1.0);
    fHistLambdareco_prob_mc->SetXTitle("Truth matching performance"); fHistLambdareco_prob_mc->SetYTitle("Number of Entries");

}


//____________________________________________________________________

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

    // Clear background list from previous event
    for (Int_t i = 0; i < fBkgLambdaDecays->GetEntries(); i++) {
	AtlLambdaDecayPPi *obj = (AtlLambdaDecayPPi*)fBkgLambdaDecays->At(i);
	delete obj;
    }
    fBkgLambdaDecays->Clear("C");



    // Decay Angle study
    // ------------------------
    if ( fEvent->IsMC()) {

	// Select Lambdas from MC
	TList *Lambda_list = fEvent->GetMCParticles("Lambda0");
	TList *LambdaBar_list = fEvent->GetMCParticles("Lambda0_bar");
	
	for( Int_t i = 0; i < Lambda_list->GetEntries(); i++ ){
	    
	    // lambda0
	    HepMCParticle *prt = (HepMCParticle*)(Lambda_list->At(i));
	    if (prt->GetN_Daughters() != 2) continue;
	    TLorentzVector P_Proton_RF;
	    TLorentzVector P_Proton_RFK0s;
	    TLorentzVector P_Pion_RF;
	    TLorentzVector P_Pion_RFK0s;

	    // Get 4Momenta from pions and protons
	    if( ((HepMCParticle*)(prt->GetDaughters()->At(0)))->GetPdgCode() == 2212){
		P_Proton_RF = ((HepMCParticle*)(prt->GetDaughters()->At(0)))->P();
		P_Pion_RF = ((HepMCParticle*)(prt->GetDaughters()->At(1)))->P();
	    }else if( ((HepMCParticle*)(prt->GetDaughters()->At(1)))->GetPdgCode()== 2212){ 
		P_Proton_RF = ((HepMCParticle*)(prt->GetDaughters()->At(1)))->P();
		P_Pion_RF = ((HepMCParticle*)(prt->GetDaughters()->At(0)))->P();
	    }

	    // Compute 4Momenta in RF in case of K0s-MisIdentification
	    P_Proton_RFK0s = P_Proton_RF;
	    P_Pion_RFK0s = P_Pion_RF;
	    P_Proton_RFK0s.SetVectM(P_Proton_RF.Vect(), 0.13957018 );
	    	    
	    // compute the two boost vectors
	    TVector3 boost = -prt->P().BoostVector();
	    TLorentzVector K0sHypothesis;
	    K0sHypothesis.SetVectM(prt->P().Vect(),0.497614);
	    TVector3 boostK0s = -K0sHypothesis.BoostVector();

 	    // Store Pt
 	    Float_t Pt_Proton  = P_Proton_RF.Pt();
	    
	    // boosting
	    P_Proton_RF.Boost(boost); 
	    P_Pion_RF.Boost(boost); 
	    P_Proton_RFK0s.Boost(boostK0s);
	    P_Pion_RFK0s.Boost(boostK0s);
	    
	    Float_t DecayAngle_P  = TMath::Cos(prt->P().Angle(P_Proton_RF.Vect()));
	    Float_t DecayAngle_pi = TMath::Cos(prt->P().Angle(P_Pion_RF.Vect()));
	    Float_t DecayAngleK0sBoost_P  = TMath::Cos(prt->P().Angle(P_Proton_RFK0s.Vect()));
	    Float_t DecayAngleK0sBoost_pi = TMath::Cos(prt->P().Angle(P_Pion_RFK0s.Vect()));

	    
	    // filling histograms
	    fHistAllMCLambdas_DecayAngle_P ->Fill( DecayAngle_P, GetPreTagEvtWeight());
	    fHistAllMCLambdas_DecayAngle_pi->Fill( DecayAngle_pi, GetPreTagEvtWeight());
	    
	    
	    //filling only if inv mass window from K0s is reached
	    if( ((P_Proton_RFK0s+P_Pion_RFK0s).M() > 0.49) && ( (P_Proton_RFK0s+P_Pion_RFK0s).M() < 0.51) ){
		fHistAllMCLambdas_DecayAngleK0sBoost_P->Fill( DecayAngleK0sBoost_P, GetPreTagEvtWeight());
		fHistAllMCLambdas_DecayAngleK0sBoost_pi->Fill( DecayAngleK0sBoost_pi, GetPreTagEvtWeight());
		fHistMCK0sFakeLambdas_Pt_P     ->Fill( Pt_Proton, GetPreTagEvtWeight());
	    }
	}


	// Same for antiprotons!
	for( Int_t i = 0; i < LambdaBar_list->GetEntries(); i++ ){
	    HepMCParticle *prt = (HepMCParticle*)(LambdaBar_list->At(i));
	    if (prt->GetN_Daughters() != 2) continue;
	    TLorentzVector P_Proton_RF;
	    TLorentzVector P_Proton_RFK0s;
	    TLorentzVector P_Pion_RF;
	    TLorentzVector P_Pion_RFK0s;

	    // Get 4 Momenta
	    if( ((HepMCParticle*)(prt->GetDaughters()->At(0)))->GetPdgCode() == -2212 ){
		P_Proton_RF = ((HepMCParticle*)(prt->GetDaughters()->At(0)))->P();
		P_Pion_RF = ((HepMCParticle*)(prt->GetDaughters()->At(1)))->P();
	    }else if( ((HepMCParticle*)(prt->GetDaughters()->At(1)))->GetPdgCode() == -2212){
		P_Proton_RF = ((HepMCParticle*)(prt->GetDaughters()->At(1)))->P();
		P_Pion_RF = ((HepMCParticle*)(prt->GetDaughters()->At(0)))->P();
	    }

	    // Compute 4Momenta in RF in case of K0s-MisIdentification
	    P_Proton_RFK0s = P_Proton_RF;
	    P_Pion_RFK0s = P_Pion_RF;
	    P_Proton_RFK0s.SetVectM(P_Proton_RF.Vect(), 0.13957018 );
	    	    
	    // compue the two boost vectors
	    TVector3 boost = -prt->P().BoostVector();
	    TLorentzVector K0sHypothesis;
	    K0sHypothesis.SetVectM(prt->P().Vect(),0.497614);
	    TVector3 boostK0s = -K0sHypothesis.BoostVector();

	    // Store Pt
	    Float_t Pt_Pion    = P_Pion_RF.Pt();
	    
	    // boosting
	    P_Proton_RF.Boost(boost); 
	    P_Pion_RF.Boost(boost); 
	    P_Proton_RFK0s.Boost(boostK0s);
	    P_Pion_RFK0s.Boost(boostK0s);
	    
	    Float_t DecayAngle_P  = TMath::Cos(prt->P().Angle(P_Proton_RF.Vect()));
	    Float_t DecayAngle_pi = TMath::Cos(prt->P().Angle(P_Pion_RF.Vect()));
	    Float_t DecayAngleK0sBoost_P  = TMath::Cos(prt->P().Angle(P_Proton_RFK0s.Vect()));
	    Float_t DecayAngleK0sBoost_pi = TMath::Cos(prt->P().Angle(P_Pion_RFK0s.Vect()));
	    
	    // filling histograms

	    fHistAllMCLambdaBars_DecayAngle_P->Fill( DecayAngle_P, GetPreTagEvtWeight());
	    fHistAllMCLambdaBars_DecayAngle_pi->Fill( DecayAngle_pi, GetPreTagEvtWeight());
	    if( ((P_Proton_RFK0s+P_Pion_RFK0s).M() > 0.49) && ( (P_Proton_RFK0s+P_Pion_RFK0s).M() < 0.51) ){
		fHistAllMCLambdaBars_DecayAngleK0sBoost_P->Fill( DecayAngleK0sBoost_P, GetPreTagEvtWeight());
		fHistAllMCLambdaBars_DecayAngleK0sBoost_pi->Fill( DecayAngleK0sBoost_pi, GetPreTagEvtWeight());
		fHistMCK0sFakeLambdaBars_Pt_pi            ->Fill( Pt_Pion, GetPreTagEvtWeight());
	    }
	}
    }
    
    // End of Decay Angle Studies 
    // -----------------------------------
    



    // count true Lambda decays to compute efficiency
    if (fEvent->IsMC()) {
	// Count all lambda decays in MC events to allow computation of the efficiency.
	Int_t NLambdaTrue = 0;
	for (Int_t i = 0; i < fEvent->GetN_Vertices(); i++) {
	    HepVertex *vtx = (HepVertex*)fEvent->GetVertices()->At(i);
	    if ( !( (vtx->IsSecondary()) && (vtx->GetNDaughters()==2) ))  continue;
	    AtlIDTrack *trk1 = (AtlIDTrack*)vtx->GetDaughters()->At(0);
	    AtlIDTrack *trk2 = (AtlIDTrack*)vtx->GetDaughters()->At(1);

	    if (trk1->HasValidTruthMatch(0.0001) && (trk1->GetMCParticle()->GetMother() != NULL) &&
		(TMath::Abs(trk1->GetMCParticle()->GetMother()->GetPdgCode()) == 3122)) {
		NLambdaTrue++;
	    } else if (trk2->HasValidTruthMatch(0.0001) && (trk2->GetMCParticle()->GetMother() != NULL) &&
		       (TMath::Abs(trk2->GetMCParticle()->GetMother()->GetPdgCode()) == 3122)) {
		NLambdaTrue++;
	    }
	}
	AddAbundanceTrue(NLambdaTrue);
    }

    // Do analysis
    if ( fMode == kCutBased ) {
      ReconstructLambdaCutBased();
    } else if ( fMode == kKinFit ) {
      ReconstructLambdaKinFit();
    } else {
      Error("AnalyzeEvent", "Invalid mode given. Abort!");
      gSystem->Abort(0);
    }
    return kTRUE;
}

//____________________________________________________________________


void AtlLambdaFinder::ReconstructLambdaCutBased(){
    //
    // Cut Based Lambda reconstruction  
    //

    // Looping over all trk-combinations at a sec Vertex for Lambda reconstruction

    AtlIDTrack *trk1 = 0;
    AtlIDTrack *trk2 = 0;                    // Compared trks
    HepVertex *Vtx;                          // Associated secondary vertex
    HepVertex *PrimaryVtx;                   // Primary vertex

    Int_t i;                                 // Vertex Loop iterator
    Int_t BkgCount = 0;                      // Background events counter

    TLorentzVector p_trk1, p_trk2, p_Lambda; // 4 Momentum
    Float_t m_Lambda = 0;                    // Reconstructed Lambda-mass

    PrimaryVtx = fEvent->GetPrimaryVtx();
    if (PrimaryVtx == NULL)
	return;

    // Vertex-Loop
    for (i = 0; i < fEvent->GetN_Vertices(); i++) {

      Vtx = (HepVertex*)fEvent->GetVertices()->At(i);
      // regard only high-quality secondary vertices containing 2 outgoing tracks
      if ( !( (Vtx->IsSecondary()) && (Vtx->GetNDaughters()==2) ))  continue;
      SetCutFlow("all vtx");
      if ( Vtx->GetChi2overNDoF() > fVertexChi2ovNDoF_max )  continue;
      SetCutFlow("vtx #chi^2");

      // get outgoing tracks and test their quality
      trk1 = (AtlIDTrack*)Vtx->GetDaughters()->At(0);
      trk2 = (AtlIDTrack*)Vtx->GetDaughters()->At(1);
      if ( trk1->GetChi2_Vtx() / trk1->GetNDoF_Vtx() > fTrackChi2ovNDoF_max ) continue;
      if ( trk2->GetChi2_Vtx() / trk2->GetNDoF_Vtx() > fTrackChi2ovNDoF_max ) continue;
      SetCutFlow("trk #chi^2");

      // Get 4 Momentum and compute inv. mass of Lambda candidate
      p_trk1.SetVectM(trk1->P(), fm_proton);
      p_trk2.SetVectM(trk2->P(), fm_pi);
      p_Lambda = p_trk1 + p_trk2;
      m_Lambda = p_Lambda.M();

      SetChi2(0.0); SetNDoF(1);

      // Cut on transverse decay length
      TVector3 vtxpos = PrimaryVtx->GetPos() - Vtx->GetPos();
      if (vtxpos.Perp() < fTransvDecayLen_min)
	  continue;
      SetCutFlow("Transverse decay length");

      // Veto on K0s decays
      if (IsKaonVertex(Vtx))
	  continue;
      SetCutFlow("No K0s");

      // Veto on photo conversion
      if (IsConversionVertex(Vtx))
	  continue;
      SetCutFlow("No photo conv.");

      // Selection constraints
      // -------------------------
    
      if( (m_Lambda > fLambda_M_min) && (m_Lambda < fLambda_M_max) ) { // cut: invariant mass
        SetCutFlow("inv. mass");
        if (trk1->GetQovP() * trk2->QovP() < 0.)    {                  // cut: opposite sign for signal
           SetCutFlow("charge ok");

	  if ( (p_trk1.Pt()  > fSignal_Pt_max)  || (p_trk1.Pt()  < fSignal_Pt_min)  ) continue;
	  if ( (p_trk2.Pt()  > fSignal_Pt_max)  || (p_trk2.Pt()  < fSignal_Pt_min)  ) continue;
	  SetCutFlow("Pt max");
	  if ( (p_trk1.Eta() > fSignal_Eta_max) || (p_trk1.Eta() < fSignal_Eta_min) ) continue;
	  if ( (p_trk2.Eta() > fSignal_Eta_max) || (p_trk2.Eta() < fSignal_Eta_min) ) continue;
	  SetCutFlow("Eta max");

	  // guess which one is the proton (the one with the larger momentum?)
	  // and add LambdaDecay to fEvents Decay-list
	  AtlLambdaDecayPPi *decay;
	  if ( p_trk1.P() > p_trk2.P() ) {
	    // fitted daughter tracks are just clones, because fitting only happens in the kinfitter method
	    HepParticle Fit_Daughter1(1, p_trk1.Px(), p_trk1.Py(), p_trk1.Pz(), p_trk1.E(),  
				      (trk1->GetQovP() < 0.) ? -2212 : 2212);
	    HepParticle Fit_Daughter2(2, p_trk2.Px(), p_trk2.Py(), p_trk2.Pz(), p_trk2.E(), 
				      (trk2->GetQovP() < 0.) ?  -211 :  211);
	    decay = fEvent->AddLambdaDecayPiPi(p_Lambda.Px(), p_Lambda.Py(), p_Lambda.Pz(), p_Lambda.E(),
			                     trk1, trk2, Vtx, PrimaryVtx, Fit_Daughter1, Fit_Daughter2);
	  } else {
	    HepParticle Fit_Daughter1(1, p_trk1.Px(), p_trk1.Py(), p_trk1.Pz(), p_trk1.E(), 
				      (trk1->GetQovP() < 0.) ?  -211 :  211);
	    HepParticle Fit_Daughter2(2, p_trk2.Px(), p_trk2.Py(), p_trk2.Pz(), p_trk2.E(), 
				      (trk2->GetQovP() < 0.) ? -2212 : 2212);
	    decay = fEvent->AddLambdaDecayPiPi(p_Lambda.Px(), p_Lambda.Py(), p_Lambda.Pz(), p_Lambda.E(),
			                     trk2, trk1, Vtx, PrimaryVtx, Fit_Daughter1, Fit_Daughter2);
	  }

	  // Hitbased TruthMatching
	  if (fEvent->IsMC()) {
	      switch ( DoTruthMatch(trk1, trk2, Vtx) ){
		  case 1:   fTrueReco = kTRUE;  FillMCHistograms(decay, kTRUE);  AtlKinFitterTool::FillHistograms("Signal"); break;
		  case -1:  fTrueReco = kFALSE; FillMCHistograms(decay, kFALSE); AtlKinFitterTool::FillHistograms("Bkg");    break;
		  case 0:   continue;
	      }
	  }
	  
        } else {
	  // both particles have same charge; add to background list
	  HepParticle Fit_Daughter1(1, p_trk1.Px(), p_trk1.Py(), p_trk1.Pz(), p_trk1.E(),
				    (trk1->GetQovP() < 0.) ? -2212 : 2212);
	  HepParticle Fit_Daughter2(2, p_trk2.Px(), p_trk2.Py(), p_trk2.Pz(), p_trk2.E(),
				    (trk2->GetQovP() < 0.) ?  -211 :  211);
	  fBkgLambdaDecays->Add(new AtlLambdaDecayPPi(BkgCount++, p_Lambda.Px(), p_Lambda.Py(), p_Lambda.Pz(),
						      p_Lambda.E(), trk1, trk2, Vtx, PrimaryVtx, 
						      Fit_Daughter1, Fit_Daughter2));
        }
      }
    }
}


//____________________________________________________________________

Bool_t AtlLambdaFinder::IsKaonVertex(HepVertex *vtx, HepParticle Fit_Daughter1, HepParticle Fit_Daughter2) {
    //
    // Return true, if the given vertex is can possibly be
    // identified as a kaon decay. Return false otherwise
    // or if there are no kaon decays.
    //

    // check results from K0s finder
    TClonesArray *k0s = fEvent->GetK0sDecaysPiPi();
    for (Int_t i = 0; i < fEvent->GetN_K0sDecaysPiPi(); i++) {
	if (((AtlK0sDecayPiPi*)k0s->At(i))->GetVtx() == vtx)
	    return kTRUE;
    }

    // test invariant mass
    TLorentzVector p_e1, p_e2, p_k;
    p_e1.SetVectM(Fit_Daughter1.P().Vect(), fm_pi);
    p_e2.SetVectM(Fit_Daughter2.P().Vect(), fm_pi);
    p_k = p_e1 + p_e2;
    if ((p_k.M() >= fK0s_M_min) && (p_k.M() < fK0s_M_max))
	return kTRUE;
    
    // test decay angle
    p_k = Fit_Daughter1.P() + Fit_Daughter2.P();
    TLorentzVector PDaughter1 = Fit_Daughter1.P();
    PDaughter1.Boost(-p_k.BoostVector());
    Double_t dAngle = TMath::Cos(p_k.Angle(PDaughter1.Vect()));
    return ((dAngle >= fK0s_dang_min) && (dAngle < fK0s_dang_max));
}

//____________________________________________________________________

Bool_t AtlLambdaFinder::IsKaonVertex(HepVertex *vtx) {
    //
    // Return true, if the given vertex is can possibly be
    // identified as a kaon decay. Return false otherwise
    // or if there are no kaon decays.
    //

    // check results from K0s finder
    TClonesArray *k0s = fEvent->GetK0sDecaysPiPi();
    for (Int_t i = 0; i < fEvent->GetN_K0sDecaysPiPi(); i++) {
	if (((AtlK0sDecayPiPi*)k0s->At(i))->GetVtx() == vtx)
	    return kTRUE;
    }

    // calculate invariant mass
    AtlIDTrack *trk1 = (AtlIDTrack*)vtx->GetDaughters()->At(0);
    AtlIDTrack *trk2 = (AtlIDTrack*)vtx->GetDaughters()->At(1);
    TLorentzVector p_e1, p_e2, p_k;
    p_e1.SetVectM(trk1->P(), fm_pi);
    p_e2.SetVectM(trk2->P(), fm_pi);
    p_k = p_e1 + p_e2;
    if ((p_k.M() >= fK0s_M_min) && (p_k.M() < fK0s_M_max))
	return kTRUE;

    // calculate decay angle
    p_e1.SetVectM(trk1->P(), fm_proton);
    p_e2.SetVectM(trk2->P(), fm_pi);
    p_k = p_e1 + p_e2;
    p_e1.Boost(p_k.BoostVector());
    Double_t dAngle = TMath::Cos(p_k.Angle(p_e1.Vect()));
    return ((dAngle >= fK0s_dang_min) && (dAngle < fK0s_dang_max));    
}

//____________________________________________________________________

Bool_t AtlLambdaFinder::IsConversionVertex(HepVertex *vtx, HepParticle Fit_Daughter1, HepParticle Fit_Daughter2) {
    //
    // Return true, if the given vertex has the characteristics
    // of a photo conversion vertex. Return false otherwise or if
    // there are no conversion vertices.
    //

    // test invariant mass
    TLorentzVector p_e1, p_e2, p_g;
    p_e1.SetVectM(Fit_Daughter1.P().Vect(), fm_e);
    p_e2.SetVectM(Fit_Daughter2.P().Vect(), fm_e);
    p_g = p_e1 + p_e2;
    if (p_g.M() < fPhotonMass_max)
	return kTRUE;

    // test decay angle
    p_g = Fit_Daughter1.P() + Fit_Daughter2.P();
    TLorentzVector PDaughter1 = Fit_Daughter1.P();
    PDaughter1.Boost(-p_g.BoostVector());
    Double_t dAngle = TMath::Cos(p_g.Angle(PDaughter1.Vect()));
    return ((dAngle < fGamma_dang_low) || (dAngle > fGamma_dang_high));
}

//____________________________________________________________________

Bool_t AtlLambdaFinder::IsConversionVertex(HepVertex *vtx) {
    //
    // Return true, if the given vertex has the characteristics
    // of a photo conversion vertex. Return false otherwise or if
    // there are no conversion vertices.
    //

    AtlIDTrack *trk1 = (AtlIDTrack*)vtx->GetDaughters()->At(0);
    AtlIDTrack *trk2 = (AtlIDTrack*)vtx->GetDaughters()->At(1);
    TLorentzVector p_e1, p_e2, p_g;

    // test invariant mass
    p_e1.SetVectM(trk1->P(), fm_e);
    p_e2.SetVectM(trk2->P(), fm_e);
    p_g = p_e1 + p_e2;
    if (p_g.M() < fPhotonMass_max)
	return kTRUE;

    // test decay angle
    p_e1.SetVectM(trk1->P(), fm_proton);
    p_e2.SetVectM(trk2->P(), fm_pi);
    p_g = p_e1 + p_e2;
    p_e1.Boost(p_g.BoostVector());
    Double_t dAngle = TMath::Cos(p_g.Angle(p_e1.Vect()));
    return ((dAngle < fGamma_dang_low) || (dAngle > fGamma_dang_high));
}

//____________________________________________________________________

void AtlLambdaFinder::ReconstructLambdaKinFit() {
  //
  // Lambda reconstruction from track-pairs assuming being pions using KinFitter
  //
  HepVertex  *Vtx = 0;
  HepVertex  *PrimVtx = 0;
  AtlIDTrack *trk1 = 0;  
  AtlIDTrack *trk2 = 0;
    
  TLorentzVector p_Lambda;
    
  TMatrixD cov_trk1(3,3);
  TMatrixD cov_trk2(3,3);
  
  Double_t fChi2;
  Int_t fNDoF;

  Int_t BkgCount = 1;  // Counts background lambdas (with equally charged decay products)
  Float_t PvalueKinFit = 0.0;

  // Get primary vertex
  PrimVtx = fEvent->GetPrimaryVtx();

  // Vertex-Loop
  for ( Int_t i = 0; i < fEvent->GetN_Vertices(); i++){
    
    Vtx = (HepVertex*)fEvent->GetVertices()->At(i);

    // Analyse only secondary vertices containing 2 outgoing tracks
    if ( !( (Vtx != NULL) && (Vtx->IsSecondary()) && (Vtx->GetNDaughters() == 2) )) continue;
    SetCutFlow("Sec. Vtx w/ 2 Dght.");
    // cut vertex fit's chi2/ndof
    if ( Vtx->GetChi2overNDoF() > fVertexChi2ovNDoF_max ) continue;
    SetCutFlow("Vtx #chi^{2}");

    trk1 = (AtlIDTrack*)Vtx->GetDaughters()->At(0);
    trk2 = (AtlIDTrack*)Vtx->GetDaughters()->At(1);
    // cut track fit's chi2/ndof
    if (  (trk1->Chi2ovNDoF() > fTrackChi2ovNDoF_max) ||
	 (trk2->Chi2ovNDoF() > fTrackChi2ovNDoF_max) ) continue;
    SetCutFlow("Trk #chi^{2}");
    
    // Discard all tracks without reference to a truth particle for all
    // MC-Runs to compute the purity correctly
    if( fEvent->IsMC() ) {
	if( !( trk1->HasValidTruthMatch(0.0001) &&
	       trk2->HasValidTruthMatch(0.0001)) )  continue;
    }
    SetCutFlow("MC exists");

    // Definition of covariance matrices, taken from track fit
    trk1->GetCovMatrixPtEtaPhi(cov_trk1);
    trk2->GetCovMatrixPtEtaPhi(cov_trk2);
    
    // Define momentum used as output of the fit
    TLorentzVector FitP_trk1pr;
    TLorentzVector FitP_trk2pi;
    TKinFitter fitterPPi = PerformFit(trk1, trk2, FitP_trk1pr, FitP_trk2pi, &cov_trk1, &cov_trk2);

    TLorentzVector FitP_trk1pi;
    TLorentzVector FitP_trk2pr;
    TKinFitter fitterPiP = PerformFit(trk2, trk1, FitP_trk1pi, FitP_trk2pr, &cov_trk2, &cov_trk1);
          
    // abort, if a fit failed severely (chi2 < 0)
    if ( (fitterPPi.getS() < 0.) || (fitterPiP.getS() < 0.) ) {
      Error("ReconstructLambdaKinFit", "fitter.getS()<0. Abort!");
      //gSystem->Abort(0);
      continue;
    }
    // skip event, if neither fit converged
    Bool_t convPPi = (fitterPPi.getStatus() == 0);
    Bool_t convPiP = (fitterPiP.getStatus() == 0);
    if ( (!convPPi) && (!convPiP) ) continue;
    SetCutFlow("#geq 1 Fit ok");
    fN_Fits++;

    // Reconstruct Lambda 4-momentum
    // and set Chi2 and NDoF from the converged fit.
    // If both fits converged, prefer the lower chi2/ndof.
    Float_t Chi2overNDoF_PPi = fitterPPi.getS()/fitterPPi.getNDF();
    Float_t Chi2overNDoF_PiP = fitterPiP.getS()/fitterPiP.getNDF();
    HepParticle Fit_Daughter1; // save momenta from the better fit
    HepParticle Fit_Daughter2; // is filled in the following if-condition
    if ( convPPi && ( (!convPiP) || ( Chi2overNDoF_PPi <= Chi2overNDoF_PiP ) ) ) {
      p_Lambda = FitP_trk1pr + FitP_trk2pi;
      fChi2 = fitterPPi.getS();
      fNDoF = fitterPPi.getNDF();
      HepParticle FitDaughter1(1, FitP_trk1pr.Px(), FitP_trk1pr.Py(), FitP_trk1pr.Pz(), 
			       FitP_trk1pr.E(), (trk1->GetQovP() < 0.) ? -2212 : 2212);
      HepParticle FitDaughter2(2, FitP_trk2pi.Px(), FitP_trk2pi.Py(), FitP_trk2pi.Pz(), 
			       FitP_trk2pi.E(), (trk2->GetQovP() < 0.) ?  -211 :  211);  
      Fit_Daughter1 = FitDaughter1;
      Fit_Daughter2 = FitDaughter2;
    } else {
      p_Lambda = FitP_trk1pi + FitP_trk2pr;
      fChi2 = fitterPiP.getS();
      fNDoF = fitterPiP.getNDF();
      HepParticle FitDaughter1(1,FitP_trk1pi.Px(), FitP_trk1pi.Py(), FitP_trk1pi.Pz(), 
			       FitP_trk1pi.E(), (trk1->GetQovP() < 0.) ?  -211 :  211);
      HepParticle FitDaughter2(2, FitP_trk2pr.Px(), FitP_trk2pr.Py(), FitP_trk2pr.Pz(), 
			       FitP_trk2pr.E(), (trk2->GetQovP() < 0.) ? -2212 : 2212);
      Fit_Daughter1 = FitDaughter1;
      Fit_Daughter2 = FitDaughter2;
      // save proton track as first track always
      AtlIDTrack *tmp = trk2;
      trk2 = trk1;
      trk1 = tmp;
    }
    SetChi2(fChi2);
    SetNDoF(fNDoF);
    PvalueKinFit = TMath::Prob(fChi2, fNDoF);

    // calculate angular divergence to primary vertex
    TLorentzVector p_Refit = Fit_Daughter1.P() + Fit_Daughter2.P();
    if (p_Refit.Angle( Vtx->GetPos() - PrimVtx->GetPos() ) > fAngleToPrimary_max)
        continue;
    SetCutFlow("Prim vtx origin");

    // calculate opening angle between tracks
    if (Fit_Daughter1.P().Angle(Fit_Daughter2.P().Vect()) < fOpeningAngle_min)
	continue;
    SetCutFlow("Opening angle");

    Double_t BetaGamma = p_Refit.P()/fm_lambda;
    if (( (PrimVtx->GetPos() - Vtx->GetPos()).Mag() / (BetaGamma*TMath::Ccgs())*1.e12) < fLifetime_min)
	continue;
    SetCutFlow("Lifetime");

    // reject event, if it was also found by the K0s finder
    if (IsKaonVertex(Vtx, Fit_Daughter1, Fit_Daughter2))
	continue;
    SetCutFlow("No K0s");

    // reject event, if it was generated by photo conversion
    if (IsConversionVertex(Vtx, Fit_Daughter1, Fit_Daughter2))
        continue;
    SetCutFlow("No #gamma conv");
    
    // Add Lambda to event
    if (PvalueKinFit >= fKinFitPvalue_min) {
	SetCutFlow("KinFit P-value");

	AtlLambdaDecayPPi *decay;    
	if ( trk1->Charge()*trk2->Charge() < 0. ) { // require opposite sign

	    SetCutFlow("Charge ok");

	    decay = fEvent->AddLambdaDecayPiPi(p_Lambda.Px(), p_Lambda.Py(), p_Lambda.Pz(), p_Lambda.E(),
					       trk1, trk2, Vtx, PrimVtx, Fit_Daughter1, Fit_Daughter2);
	    decay->SetChi2NDoF(fChi2, fNDoF);

	    // Hitbased TruthMatching
	    // call FillHistograms("Signal") everytime (it fills the chi2/prob histo for signal and calculates purity)
	    // call FillHistograms("Bkg") for MC bkg (this fills the chi2/prob bkg. histo, this is necessary because
	    //                                        chi2 distribution does not follow the theory for bkg events)
	    if (fEvent->IsMC()) {
		switch ( DoTruthMatch(trk1, trk2, Vtx) ){
		    case 1:   fTrueReco = kTRUE;  FillMCHistograms(decay, kTRUE);  break;
		    case -1:  fTrueReco = kFALSE; FillMCHistograms(decay, kFALSE); AtlKinFitterTool::FillHistograms("Bkg"); break;
		    case 0:   continue;
		}
	    }
	    AtlKinFitterTool::FillHistograms("Signal");

	    if ( IsDebugRun() && fEvent->IsMC() ) {
		fDebugStream  << endl << "=========================================="
                                << endl << "Entry: " << fTree->GetReadEvent() << " Vtx: " << Vtx->GetId() << " Prob: " << PvalueKinFit;
		if (trk1->GetMCParticle()->GetMother() != NULL)
		    fDebugStream << endl << "Mother1: " << trk1->GetMCParticle()->GetMother()->GetPdgName()
		                         << " (" << trk1->GetMCParticle()->GetMother()->GetPdgCode() << ")";
		if (trk2->GetMCParticle()->GetMother() != NULL)
		    fDebugStream << endl << "Mother2: " << trk2->GetMCParticle()->GetMother()->GetPdgName()
				         << " (" << trk2->GetMCParticle()->GetMother()->GetPdgCode() << ") ";
		if ((trk1->GetMCParticle()->GetMother() != NULL) && (trk2->GetMCParticle()->GetMother() != NULL))
		    fDebugStream << ((trk1->GetMCParticle()->GetMother() == trk2->GetMCParticle()->GetMother()) ? "SAME" : "DIFF");
		fDebugStream  << endl << "Track1: " << trk1->GetMCParticle()->GetPdgName() << " (" << trk1->GetMCParticle()->GetPdgCode() << ")"
			      << endl << "Track2: " << trk2->GetMCParticle()->GetPdgName() << " (" << trk2->GetMCParticle()->GetPdgCode() << ")";
	    }
	} else {
	    // Add equally charged or mc-failed combinations to the bkg list
	    decay = new AtlLambdaDecayPPi(BkgCount++, p_Lambda.Px(), p_Lambda.Py(), p_Lambda.Pz(), 
					  p_Lambda .E(),trk1, trk2,Vtx, PrimVtx, 
					  Fit_Daughter1, Fit_Daughter2);
	    decay->SetChi2NDoF(fChi2, fNDoF);
	    fBkgLambdaDecays->Add(decay);
	}
    }
  } //end of vertex loop
}

//____________________________________________________________________    

TKinFitter AtlLambdaFinder::PerformFit(AtlIDTrack *trk1, AtlIDTrack *trk2, TLorentzVector& FitP_trk1, TLorentzVector& FitP_trk2,
				       TMatrixD *cov_trk1, TMatrixD *cov_trk2) {
  //
  // Perform a kinematic fit with the given tracks to test the lambda mass hyptothesis
  // assuming that track1 is the proton and track2 is the pion.
  //

  // Define particles necessary for execution of the fit
  // Using proton/pion mass hypothesis; fit variables are pt, eta, phi
  TVector3 dummy1 = trk1->P(); // instead of const cast
  TFitParticlePtEtaPhi FitExec_trk1("FitExec_trk1", "FitExec_trk1 for LambdaFit", &dummy1, fm_proton, cov_trk1);
  TVector3 dummy2 = trk2->P(); // instead of const cast
  TFitParticlePtEtaPhi FitExec_trk2("FitExec_trk2", "FitExec_trk2 for LambdaFit", &dummy2, fm_pi, cov_trk2);
  
  // Definition of Lambda mass constraint
  TFitConstraintM MLambdaCons("LambdaMassConstraint","LambdaMassConstraintGaus", 0, 0, fm_lambda);
  MLambdaCons.addParticles1(&FitExec_trk1, &FitExec_trk2);
    
  // fitting characteristics
  TKinFitter fitter;
  fitter.addMeasParticle(&FitExec_trk1);
  fitter.addMeasParticle(&FitExec_trk2);
  fitter.addConstraint(&MLambdaCons);
    
  fitter.setMaxNbIter(50);   // 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();

  // Copy fitted 4-vectors (circumvent const cast)
  FitP_trk1 = *FitExec_trk1.getCurr4Vec();
  FitP_trk2 = *FitExec_trk2.getCurr4Vec();

  return fitter;
}


//____________________________________________________________________    

void AtlLambdaFinder::FillMCHistograms(AtlLambdaDecayPPi *decay, Bool_t signal) {
    //
    // Fill histograms for MC signal/background comparison.
    // Set signal to false to fill background histograms.
    //

    TLorentzVector p_trk1, p_trk2, p_ee, p_ppi, p_pipi, p_ee_o, p_ppi_o, p_pipi_o;
    p_trk1.SetVectM(decay->GetReFitProton().P().Vect(), fm_e);
    p_trk2.SetVectM(decay->GetReFitPion().P().Vect(),   fm_e);
    p_ee = p_trk1 + p_trk2;
    p_trk1.SetVectM(decay->GetReFitProton().P().Vect(), fm_pi);
    p_trk2.SetVectM(decay->GetReFitPion().P().Vect(),   fm_pi);
    p_pipi = p_trk1 + p_trk2;
    p_trk1.SetVectM(decay->GetReFitProton().P().Vect(), fm_proton);
    p_ppi = p_trk1 + p_trk2;

    p_trk1.SetVectM(decay->GetProton()->P(), fm_e);
    p_trk2.SetVectM(decay->GetPion()->P(), fm_e);
    p_ee_o = p_trk1 + p_trk2;
    p_trk1.SetVectM(decay->GetProton()->P(), fm_pi);
    p_trk2.SetVectM(decay->GetPion()->P(),   fm_pi);
    p_pipi_o = p_trk1 + p_trk2;
    p_trk1.SetVectM(decay->GetProton()->P(), fm_proton);
    p_ppi_o = p_trk1 + p_trk2;

    if (signal) {
	fHistLambdareco_MC_m       ->Fill(decay->M("Reco"),     GetPreTagEvtWeight());
	fHistLambdareco_MC_pt      ->Fill(decay->Pt(),          GetPreTagEvtWeight());
	fHistLambdareco_MC_phi     ->Fill(decay->Phi(),         GetPreTagEvtWeight());
	fHistLambdareco_MC_eta     ->Fill(decay->Eta(),         GetPreTagEvtWeight());
	fHistLambdareco_MC_tau     ->Fill(decay->GetLifeTime(), GetPreTagEvtWeight());
   	fHistLambdareco_MC_m_ee    ->Fill(p_ee.M(),             GetPreTagEvtWeight());
   	fHistLambdareco_MC_m_pipi  ->Fill(p_pipi.M(),           GetPreTagEvtWeight());
   	fHistLambdareco_MC_m_ppi   ->Fill(p_ppi.M(),            GetPreTagEvtWeight());
   	fHistLambdareco_MC_m_ee_o  ->Fill(p_ee_o.M(),           GetPreTagEvtWeight());
   	fHistLambdareco_MC_m_pipi_o->Fill(p_pipi_o.M(),         GetPreTagEvtWeight());
   	fHistLambdareco_MC_m_ppi_o ->Fill(p_ppi_o.M(),          GetPreTagEvtWeight());
	fHistLambdareco_MC_R_vtx   ->Fill(decay->GetVtx()->GetPos().Perp(), GetPreTagEvtWeight());
	fHistLambdareco_MC_src_div ->Fill(decay->GetAngleToPrimary(),       GetPreTagEvtWeight());
	fHistLambdareco_MC_tdcy_len->Fill(decay->GetTransvDecayLength(),    GetPreTagEvtWeight());
	fHistLambdareco_MC_oangle  ->Fill(decay->GetOpeningAngle(),         GetPreTagEvtWeight());
	fHistLambdareco_MC_dangle  ->Fill(TMath::Cos(decay->GetDecayAngle()), GetPreTagEvtWeight());
	fHistLambdareco_MC_trk_chi2->Fill(decay->GetProton()->Chi2ovNDoF(), GetPreTagEvtWeight());
	fHistLambdareco_MC_trk_chi2->Fill(decay->GetPion()->Chi2ovNDoF(),   GetPreTagEvtWeight());
	fHistLambdareco_MC_vtx_chi2->Fill(decay->GetVtx()->GetChi2overNDoF(),           GetPreTagEvtWeight());
	fHistLambdareco_MC_dang_mee->Fill(TMath::Cos(decay->GetDecayAngle()), p_ee.M(), GetPreTagEvtWeight());
    } else {
	HepMCParticle *MC1 = decay->GetProton()->GetMCParticle();
	HepMCParticle *MC2 = decay->GetPion()->GetMCParticle();

	fHistLambdareco_MC_m_bkg       ->Fill(decay->M("Reco"),     GetPreTagEvtWeight());
	fHistLambdareco_MC_pt_bkg      ->Fill(decay->Pt(),          GetPreTagEvtWeight());
	fHistLambdareco_MC_phi_bkg     ->Fill(decay->Phi(),         GetPreTagEvtWeight());
	fHistLambdareco_MC_eta_bkg     ->Fill(decay->Eta(),         GetPreTagEvtWeight());
	fHistLambdareco_MC_tau_bkg     ->Fill(decay->GetLifeTime(), GetPreTagEvtWeight());
	fHistLambdareco_MC_m_ee_bkg    ->Fill(p_ee.M(),             GetPreTagEvtWeight());
   	fHistLambdareco_MC_m_pipi_bkg  ->Fill(p_pipi.M(),           GetPreTagEvtWeight());
   	fHistLambdareco_MC_m_ppi_bkg   ->Fill(p_ppi.M(),            GetPreTagEvtWeight());
   	fHistLambdareco_MC_m_ee_o_bkg  ->Fill(p_ee_o.M(),           GetPreTagEvtWeight());
   	fHistLambdareco_MC_m_pipi_o_bkg->Fill(p_pipi_o.M(),         GetPreTagEvtWeight());
   	fHistLambdareco_MC_m_ppi_o_bkg ->Fill(p_ppi_o.M(),          GetPreTagEvtWeight());
	fHistLambdareco_MC_R_vtx_bkg   ->Fill(decay->GetVtx()->GetPos().Perp(), GetPreTagEvtWeight());
	fHistLambdareco_MC_src_div_bkg ->Fill(decay->GetAngleToPrimary(),       GetPreTagEvtWeight());
	fHistLambdareco_MC_tdcy_len_bkg->Fill(decay->GetTransvDecayLength(),    GetPreTagEvtWeight());
	fHistLambdareco_MC_oangle_bkg  ->Fill(decay->GetOpeningAngle(),         GetPreTagEvtWeight());
	if ( (MC1->GetMother() != NULL) && (MC2->GetMother() != NULL) &&
	     (MC1->GetMother() == MC2->GetMother()) ) {
	    if (TMath::Abs(MC1->GetMother()->GetPdgCode()) == 22)
		fHistLambdareco_MC_dangle_p_bkg->Fill(TMath::Cos(decay->GetDecayAngle()), GetPreTagEvtWeight());
	    else if (TMath::Abs(MC1->GetMother()->GetPdgCode()) == 310)
		fHistLambdareco_MC_dangle_k_bkg->Fill(TMath::Cos(decay->GetDecayAngle()), GetPreTagEvtWeight());
	    else
		fHistLambdareco_MC_dangle_bkg->Fill(TMath::Cos(decay->GetDecayAngle()), GetPreTagEvtWeight());
	} else {
	    fHistLambdareco_MC_dangle_bkg->Fill(TMath::Cos(decay->GetDecayAngle()),GetPreTagEvtWeight());
	}
	fHistLambdareco_MC_trk_chi2_bkg->Fill(decay->GetProton()->Chi2ovNDoF(), GetPreTagEvtWeight());
	fHistLambdareco_MC_trk_chi2_bkg->Fill(decay->GetPion()->Chi2ovNDoF(),   GetPreTagEvtWeight());
	fHistLambdareco_MC_vtx_chi2_bkg->Fill(decay->GetVtx()->GetChi2overNDoF(),           GetPreTagEvtWeight());
	fHistLambdareco_MC_dang_mee_bkg->Fill(TMath::Cos(decay->GetDecayAngle()), p_ee.M(), GetPreTagEvtWeight());
    }    
}


//____________________________________________________________________    


void AtlLambdaFinder::FillHistograms() {
    //
    // Fill histograms
    //

    AtlLambdaDecayPPi *Lambda = 0;
    
    // Proton/Pion variables
    AtlIDTrack *Proton =0;
    AtlIDTrack *Pion   =0;
    TLorentzVector p_trk1, p_trk2, p_Lambda;

    // Signal (opposite charged)
    // ________________________________________
    
    for ( Int_t i = 0; i < fEvent->GetN_LambdaDecaysPiPi(); i++ ) {
      Lambda = (AtlLambdaDecayPPi*)fEvent->GetLambdaDecaysPiPi()->At(i);

      fHistLambdareco_m_PPi     ->Fill(Lambda->M("Reco"),    GetPreTagEvtWeight());
      fHistLambdareco_pt_PPi    ->Fill(Lambda->Pt(),         GetPreTagEvtWeight());
      fHistLambdareco_phi_PPi   ->Fill(Lambda->Phi(),        GetPreTagEvtWeight());
      fHistLambdareco_eta_PPi   ->Fill(Lambda->Eta(),        GetPreTagEvtWeight());
      fHistLambdareco_tau_PPi   ->Fill(Lambda->GetLifeTime(),             GetPreTagEvtWeight());
      fHistLambdareco_R_vtx     ->Fill(Lambda->GetVtx()->GetPos().Perp(), GetPreTagEvtWeight());
      fHistLambdareco_tdcy_len  ->Fill(Lambda->GetTransvDecayLength(), GetPreTagEvtWeight());
      fHistLambdareco_oangle    ->Fill(Lambda->GetOpeningAngle(),      GetPreTagEvtWeight());
      fHistLambdareco_dangle    ->Fill(Lambda->GetDecayAngle(),        GetPreTagEvtWeight());

      Proton = Lambda->GetProton();
      Pion  =  Lambda->GetPion();

      // test pi/pi hypothesis
      p_trk1.SetVectM(Proton->P(), fm_pi);
      p_trk2.SetVectM(Pion->P(),   fm_pi);
      p_Lambda = p_trk1 + p_trk2;
      fHistLambdareco_m_PiPi->Fill(p_Lambda.M(), GetPreTagEvtWeight());

      // test e/e hypothesis
      p_trk1.SetVectM(Proton->P(), fm_e);
      p_trk2.SetVectM(Pion->P(),   fm_e);
      p_Lambda = p_trk1 + p_trk2;
      fHistLambdareco_m_ee->Fill(p_Lambda.M(), GetPreTagEvtWeight());

      // count (anti-)particles
      if (Proton->QovP() < 0.0) {
	  fHistLambdareco_l_vs_antil->Fill("Antilambda", GetPreTagEvtWeight());
      } else {
	  fHistLambdareco_l_vs_antil->Fill("Lambda", GetPreTagEvtWeight());
      }

      fHistLambdareco_chi2_vtx->Fill(Lambda->GetVtx()->GetChi2overNDoF(), GetPreTagEvtWeight());
      fHistLambdareco_chi2_trk->Fill(Proton->Chi2ovNDoF(), GetPreTagEvtWeight());
      fHistLambdareco_chi2_trk->Fill(Pion->Chi2ovNDoF(), GetPreTagEvtWeight());

      fHistLambdareco_Pion_pt     ->Fill(Pion->Pt(),    GetPreTagEvtWeight());
      fHistLambdareco_Proton_pt   ->Fill(Proton->Pt(),  GetPreTagEvtWeight());
      fHistLambdareco_Pion_eta    ->Fill(Pion->Eta(),   GetPreTagEvtWeight());
      fHistLambdareco_Proton_eta  ->Fill(Proton->Eta(), GetPreTagEvtWeight());
      fHistLambdareco_Pion_phi    ->Fill(Pion->Phi(),   GetPreTagEvtWeight());
      fHistLambdareco_Proton_phi  ->Fill(Proton->Phi(), GetPreTagEvtWeight());
      fHistLambdareco_Pion_PtEta  ->Fill(Pion->Pt(), Pion->Eta(),  GetPreTagEvtWeight());
      fHistLambdareco_Proton_PtEta  ->Fill(Proton->Pt(), Proton->Eta(),  GetPreTagEvtWeight());
      // charge separated histograms
      if (Pion->QovP() < 0.) {
	  fHistLambdareco_Piminus_pt  ->Fill(Pion->Pt(),    GetPreTagEvtWeight());
	  fHistLambdareco_Piminus_eta ->Fill(Pion->Eta(),   GetPreTagEvtWeight());
	  fHistLambdareco_Piminus_phi ->Fill(Pion->Phi(),   GetPreTagEvtWeight());
	  fHistLambdareco_Prplus_pt   ->Fill(Proton->Pt(),  GetPreTagEvtWeight());
	  fHistLambdareco_Prplus_eta  ->Fill(Proton->Eta(), GetPreTagEvtWeight());
	  fHistLambdareco_Prplus_phi  ->Fill(Proton->Phi(), GetPreTagEvtWeight());
	  fHistLambdareco_Prplus_PtEta  ->Fill(Proton->Pt(), Proton->Eta(),   GetPreTagEvtWeight());
      } else {
	  fHistLambdareco_Piplus_pt   ->Fill(Pion->Pt(),    GetPreTagEvtWeight());
	  fHistLambdareco_Piplus_eta  ->Fill(Pion->Eta(),   GetPreTagEvtWeight());
	  fHistLambdareco_Piplus_phi  ->Fill(Pion->Phi(),   GetPreTagEvtWeight());
	  fHistLambdareco_Prminus_pt  ->Fill(Proton->Pt(),  GetPreTagEvtWeight());
	  fHistLambdareco_Prminus_eta ->Fill(Proton->Eta(), GetPreTagEvtWeight());
	  fHistLambdareco_Prminus_phi ->Fill(Proton->Phi(), GetPreTagEvtWeight());
	  fHistLambdareco_Prminus_PtEta  ->Fill(Proton->Pt(), Proton->Eta(),   GetPreTagEvtWeight());
      }
    }

    fHistLambdareco_N_PPi ->Fill(fEvent->GetN_LambdaDecaysPiPi(), GetPreTagEvtWeight());
    

    // Combinatorial Background (same charged)
    // ____________________________________________

    TIter next_bkg(fBkgLambdaDecays);
    while ( ( Lambda = (AtlLambdaDecayPPi*)next_bkg() ) ) {
      fHistLambdareco_m_PPi_bkg     ->Fill(Lambda->M("Reco"),      GetPreTagEvtWeight());
      fHistLambdareco_pt_PPi_bkg    ->Fill(Lambda->Pt(),           GetPreTagEvtWeight());
      fHistLambdareco_phi_PPi_bkg   ->Fill(Lambda->Phi(),          GetPreTagEvtWeight());
      fHistLambdareco_eta_PPi_bkg   ->Fill(Lambda->Eta(),          GetPreTagEvtWeight());
      fHistLambdareco_tau_PPi_bkg   ->Fill(Lambda->GetLifeTime(),  GetPreTagEvtWeight());
      fHistLambdareco_R_vtx_bkg     ->Fill(Lambda->GetVtx()->GetPos().Perp(), GetPreTagEvtWeight());
      fHistLambdareco_tdcy_len_bkg  ->Fill(Lambda->GetTransvDecayLength(),    GetPreTagEvtWeight());
      fHistLambdareco_oangle_bkg    ->Fill(Lambda->GetOpeningAngle(),         GetPreTagEvtWeight());
      fHistLambdareco_dangle_bkg    ->Fill(Lambda->GetDecayAngle(),           GetPreTagEvtWeight());

      Proton = Lambda->GetProton();
      Pion  =  Lambda->GetPion();
      
      fHistLambdareco_Pion_pt_bkg     ->Fill(Pion->Pt(),    GetPreTagEvtWeight());
      fHistLambdareco_Proton_pt_bkg   ->Fill(Proton->Pt(),  GetPreTagEvtWeight());
      fHistLambdareco_Pion_eta_bkg    ->Fill(Pion->Eta(),   GetPreTagEvtWeight());
      fHistLambdareco_Proton_eta_bkg  ->Fill(Proton->Eta(), GetPreTagEvtWeight());
      fHistLambdareco_Pion_phi_bkg    ->Fill(Pion->Phi(),   GetPreTagEvtWeight());
      fHistLambdareco_Proton_phi_bkg  ->Fill(Proton->Phi(), GetPreTagEvtWeight());
      // charge separated histograms
      if (Pion->QovP() < 0.) {
        fHistLambdareco_Piminus_pt_bkg  ->Fill(Pion->Pt(),    GetPreTagEvtWeight());
        fHistLambdareco_Piminus_eta_bkg ->Fill(Pion->Eta(),   GetPreTagEvtWeight());
        fHistLambdareco_Piminus_phi_bkg ->Fill(Pion->Phi(),   GetPreTagEvtWeight());
        fHistLambdareco_Prminus_pt_bkg  ->Fill(Proton->Pt(),  GetPreTagEvtWeight());
        fHistLambdareco_Prminus_eta_bkg ->Fill(Proton->Eta(), GetPreTagEvtWeight());
        fHistLambdareco_Prminus_phi_bkg ->Fill(Proton->Phi(), GetPreTagEvtWeight());
      } else {
        fHistLambdareco_Piplus_pt_bkg   ->Fill(Pion->Pt(),    GetPreTagEvtWeight());
        fHistLambdareco_Piplus_eta_bkg  ->Fill(Pion->Eta(),   GetPreTagEvtWeight());
        fHistLambdareco_Piplus_phi_bkg  ->Fill(Pion->Phi(),   GetPreTagEvtWeight());
        fHistLambdareco_Prplus_pt_bkg   ->Fill(Proton->Pt(),  GetPreTagEvtWeight());
        fHistLambdareco_Prplus_eta_bkg  ->Fill(Proton->Eta(), GetPreTagEvtWeight());
        fHistLambdareco_Prplus_phi_bkg  ->Fill(Proton->Phi(), GetPreTagEvtWeight());
      }
    }

    fHistLambdareco_N_PPi_bkg ->Fill(fBkgLambdaDecays->GetEntries(), GetPreTagEvtWeight());

}

//____________________________________________________________________

void AtlLambdaFinder::SetCutDefaults() {
    //
    // Selection cut defaults and Constraint parameters
    //

    fSignal_Pt_min       =  0.5;     // Min. Pt of signal pion/proton
    fSignal_Pt_max       =  1.e10;   // Max. Pt of signal pion/proton
    fSignal_Eta_min      = -2.5;     // Min. eta of signal pion/proton
    fSignal_Eta_max      =  2.5;     // Max. eta of signal pion/proton
    
    fm_lambda            = 1.115683;       // Lambda mass hypothesis
    fm_pi                = 0.13957;        // Pion mass hypothesis
    fm_proton            = 0.938272013;    // Proton mass hypothesis
    fm_e                 = 0.000510998910; // Electron mass hypothesis
}

//____________________________________________________________________


void AtlLambdaFinder::PrintCutValues() {
        
  if ( fMode == kKinFit ){
    cout << endl 
         << " Used mode: kKinFit " << endl
         << " ----------------------" << endl;
    cout << " Maximum inv. mass of e+/e- test:            " << fPhotonMass_max << endl;
    cout << " Minimum probability value of kinematic fit: " << fKinFitPvalue_min << endl;
    cout << " Minimum truth matching probability:         " << fMatchingProb_min << endl;
    cout << scientific << " maximum Chi2/NDoF of Vertex Fit: " << endl
         << "  Chi2/NDoF_Vtx = " << fVertexChi2ovNDoF_max << endl;
    cout << scientific << " maximum Chi2/NDoF of Track Fit: " << endl
         << "  Chi2/NDoF_Trk =" << fTrackChi2ovNDoF_max << endl;
    cout << " ----------------------" << endl << endl;
  } else if (fMode == kCutBased)  {
    cout << endl 
         << " Used mode: kCutBased " << endl;  
    cout << " ----------------------------------------------" << endl;
    cout << " Used CutDefaults:" <<endl;
    cout << " ----------------------------------------------" << endl;
    
    cout << scientific << setprecision(3) << " " << fSignal_Pt_min << " <   Pt   < " << fSignal_Pt_max << endl;
    cout << scientific << fSignal_Eta_min << " <   Eta  < " << fSignal_Eta_max << endl;
    cout << scientific << " " << fLambda_M_min << " < M(Lbd) < " << fLambda_M_max << endl;
    cout << scientific << " Pion mass hypothesis: " << endl
         << "           M_Pi = " << fm_pi << endl;
    cout << scientific << " Proton mass hypothesis: " << endl
         << "       M_Proton = " << fm_proton << endl;
    cout << scientific << " maximum Chi2/NDoF of Vertex Fit: " << endl
         << "  Chi2/NDoF_Vtx = " << fVertexChi2ovNDoF_max << endl;
    cout << "----------------------------------------------" << endl;
  }
}


//____________________________________________________________________


void AtlLambdaFinder::Terminate() {

  cout << endl << "Lambda finder is calling AtlKinFitterTool::Terminate()" << endl;
  AtlKinFitterTool::Terminate();
  cout << endl << "Lambda finder is running its own Terminate()" << endl;

  // print truth matching statistics
  if (fHistLambdareco_truth_PPi->GetEntries() > 0) {
      cout << "Lambda finder: Doing Monte Carlo stuff..." << endl;
      fHistLambdareco_truth_PPi->LabelsDeflate("X");
      fHistLambdareco_truth_PPi->SetStats(kFALSE);
      fHistLambdareco_truth_PPi->GetXaxis()->SetLabelSize(0.03);
      fHistLambdareco_truth_PPi->GetXaxis()->LabelsOption("v");

      cout << endl << " ----------------------------------------" << endl;
      for (int i = 1; i < fHistLambdareco_truth_PPi->GetNbinsX(); i++) {
	  Double_t binContent = 0;
	  for (int j = 1; j < fHistLambdareco_truth_PPi->GetNbinsY(); j++)
	      binContent += fHistLambdareco_truth_PPi->GetBinContent(i, j);
	  if ((binContent > 0) && (!strcmp(fHistLambdareco_truth_PPi->GetXaxis()->GetBinLabel(i), ""))) {
	      cout.width(15);
	      cout << fHistLambdareco_truth_PPi->GetXaxis()->GetBinLabel(i);
	      cout << ": " << TMath::Nint(binContent) << endl;
	  }
      }
  }
  
  cout << endl << "INFO: Terminating AtlLambdaFinder!";
  cout << endl << "        # Successful fits: " << fN_Fits;
  cout << endl << "        # Truth match bad: " << fN_MCProbMiss;
  cout << endl << "   # TM with diff. origin: " << fN_SameOriginMiss;
  cout << endl << "     # TM => wrong tracks: " << fN_MCFail;
  cout << endl << " # Possible Lambdas found: " << TMath::Nint(fHistLambdareco_m_PPi->GetEntries());
    
  cout << endl << "Lambda finder's Terminate() is done." << endl;
}

//____________________________________________________________________

Int_t AtlLambdaFinder::DoTruthMatch(AtlIDTrack *trk1, AtlIDTrack *trk2, HepVertex *Vtx) {
    //
    // retuns 1 in case of true Lambdas, -1 if not
    // returns 0 if no decision possible (see fMatchingProb_min)
    //

    fHistLambdareco_prob_mc->Fill(trk1->GetMCParticleProb(), GetPreTagEvtWeight());
    fHistLambdareco_prob_mc->Fill(trk2->GetMCParticleProb(), GetPreTagEvtWeight());

    // perform truth matching when analyzing MC samples
    if ( trk1->HasValidTruthMatch(fMatchingProb_min) && trk2->HasValidTruthMatch(fMatchingProb_min)) {
	
	HepMCParticle *MC1 = trk1->GetMCParticle();
	HepMCParticle *MC2 = trk2->GetMCParticle();

	// Perform null pointer check on mother particle. Yes, there are events with MC particles without a mother!
	if ((MC1->GetMother() == NULL) || (MC2->GetMother() == NULL)) {
	    return 0;
	}

	// remove "_bar" from particle name to collect antiparticle and particle in the same bin
	const char* fullPdgName = MC1->GetMother()->GetPdgName();
	char pdgName[strlen(fullPdgName)];
	if (strstr(fullPdgName, "_bar") == NULL) {
	    strcpy(pdgName, fullPdgName);
	} else {
	    strncpy(pdgName, fullPdgName, strlen(fullPdgName)-4);
	    pdgName[strlen(fullPdgName)-4] = '\0';
	}

	// decide truth match
	Float_t prob = ((AtlLambdaDecayPPi*)fEvent->GetLambdaDecaysPiPi()->Last())->GetProb();
	if ( (TMath::Abs(MC1->GetMother()->GetPdgCode()) == 3122) &&
	     (MC1->GetMother() == MC2->GetMother()) &&
	     (TMath::Abs(MC1->GetPdgCode()) == 2212) &&
	     (TMath::Abs(MC2->GetPdgCode()) == 211) ) {

	    fHistLambdareco_truth_PPi->Fill(pdgName, prob, GetPreTagEvtWeight());
	    return 1;
	} else {
	    
	    if (MC1->GetMother() != MC2->GetMother()) {
		fHistLambdareco_truth_PPi->Fill("Comb", prob, GetPreTagEvtWeight());
		fN_SameOriginMiss++;
	    } else if (TMath::Abs(MC1->GetMother()->GetPdgCode()) == 3122) {
		fHistLambdareco_truth_PPi->Fill("P/#pi mixed up", prob, GetPreTagEvtWeight());
	    } else {
		fHistLambdareco_truth_PPi->Fill(pdgName, prob, GetPreTagEvtWeight());
		fN_MCFail++;
	    }

	    return -1;
	}
    } else {
	return 0;
    }
      
}

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