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

//
// Author: Thomas Kintscher <mailto:kintscher@physik.hu-berlin.de>
// Copyright: 2010 (C) Thomas Kintscher
//
#ifndef ATLAS_AtlK0StarFinder
#include <AtlK0StarFinder.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(AtlK0StarFinder);
#endif

//____________________________________________________________________

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

//____________________________________________________________________

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

//____________________________________________________________________

void AtlK0StarFinder::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);
    fTree->SetBranchStatus("fEventHeader*",        kTRUE);
}

//____________________________________________________________________

void AtlK0StarFinder::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();

    // ======================
    // 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, 0.6, 1.6);
    } else if ( fMode == kKinFit ) {
      fHistLambdareco_m_PPi   = new TH1F("h_Lambda_m_PPi", "Invariant Lambda mass (Lambda->PPi)", 1000, 0.6, 1.6);
      fHistK0Starreco_m_kaon_pi   = new TH1F("h_K0Star_m_kaon_pi", "Invariant mass (something->K pi", 1000, 0.5, 2.0);
    }
    fHistLambdareco_m_PPi->SetXTitle("m_{Lambda} (GeV)"); fHistLambdareco_m_PPi->SetYTitle("Number of Entries");
    fHistK0Starreco_m_kaon_pi->SetXTitle("m_{Something} (GeV)"); fHistK0Starreco_m_kaon_pi->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");

    // 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");

    // 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");

    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");

    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)", 1000, 0.6, 1.6);
    }
    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)", 480, 0.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)", 256, -1.0, 1.0);
    fHistLambdareco_MC_dangle->SetXTitle("cos(#alpha)");      fHistLambdareco_MC_dangle->SetYTitle("Number of Entries");
    fHistLambdareco_MC_m_dangle = new TH2F("h_lambda_m_dangle", "M vs. Decay Angle", 40, -1.0, 1.0, 480, 0.0, 1.2);
    fHistLambdareco_MC_m_dangle->SetXTitle("cos #alpha"); fHistLambdareco_MC_m_dangle->SetYTitle("m (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)", 1000, 0.6, 1.6);
    }
    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)", 480, 0.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)", 256, -1.0, 1.0);
    fHistLambdareco_MC_dangle_bkg->SetXTitle("cos(#alpha)");   fHistLambdareco_MC_dangle_bkg->SetYTitle("Number of Entries");
    fHistLambdareco_MC_m_dangle_bkg = new TH2F("h_lambda_m_dangle_bkg", "M vs. Decay Angle", 40, -1.0, 1.0, 480, 0.0, 1.2);
    fHistLambdareco_MC_m_dangle_bkg->SetXTitle("cos #alpha"); fHistLambdareco_MC_m_dangle_bkg->SetYTitle("m (GeV)");

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

    //  Misc stuff
    // --------------
    // 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 AtlK0StarFinder::AnalyzeEvent() {
    //
    // Event analysis
    //

    //GetPreTagEvtWeight() *= GetModifiedEventWeight();

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

    if (fEvent->IsMC()) {
	// Count all k0star decays in MC events to allow computation of the efficiency.
	Int_t NKStarTrue = 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(fMatchingProb_min)
		 && trk2->HasValidTruthMatch(fMatchingProb_min) ) {
		if( (trk1->GetMCParticle()->GetMother() == NULL) || (trk2->GetMCParticle()->GetMother() == NULL) ) {
		    continue;
		}
		if( (TMath::Abs(trk1->GetMCParticle()->GetMother()->GetPdgCode())== 313)
		    && (trk1->GetMCParticle()->GetMother() == trk2->GetMCParticle()->GetMother()) ) {
		    NKStarTrue++;
		}
	    }
	}
	AddAbundanceTrue(NKStarTrue);
    } 

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

//____________________________________________________________________


void AtlK0StarFinder::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();

    // 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;
      if ( Vtx->GetChi2overNDoF() > fVertexChi2ovNDoF_max )  continue;

      // 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;

      // 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();

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

	  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;
	  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;

	  // guess which one is the proton (the one with the larger momentum?)
	  // and add LambdaDecay to fEvents Decay-list
	  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);
	    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);
	    fEvent->AddLambdaDecayPiPi(p_Lambda.Px(), p_Lambda.Py(), p_Lambda.Pz(), p_Lambda.E(),
				       trk2, trk1, Vtx, PrimaryVtx, Fit_Daughter1, Fit_Daughter2);
	  }
        } 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 AtlK0StarFinder::IsKaonVertex(HepVertex *vtx) {
    //
    // Return true, if the given vertex is already assigned
    // to a kaon decay. Return false otherwise or if
    // there are no kaon decays (eg. the K0s finder didn't run).
    //
    
    TClonesArray *k0s = fEvent->GetK0sDecaysPiPi();
    for (Int_t i = 0; i < fEvent->GetN_K0sDecaysPiPi(); i++) {
	if (((AtlK0sDecayPiPi*)k0s->At(i))->GetVtx() == vtx)
	    return kTRUE;
    }
    TLorentzVector p1, p2, p;
    p1.SetVectM(((AtlIDTrack*)vtx->GetDaughters()->At(0))->P(), fm_pi);
    p2.SetVectM(((AtlIDTrack*)vtx->GetDaughters()->At(1))->P(), fm_pi);
    p = p1 + p2;
    if ((p.M() < 0.45) || ((p.M() > 0.492) && (p.M() < 0.503)))
	return kTRUE;
    return kFALSE;
}

//____________________________________________________________________

Bool_t AtlK0StarFinder::IsLambdaVertex(HepVertex *vtx) {
    //
    // Return true, if the given vertex is already assigned
    // to a kaon decay. Return false otherwise or if
    // there are no kaon decays (eg. the K0s finder didn't run).
    //
    
    if (fEvent->GetN_LambdaDecaysPiPi() < 1) {
	return kFALSE;
    }

    TClonesArray *lambda = fEvent->GetLambdaDecaysPiPi();
    for (Int_t i = 0; i < fEvent->GetN_LambdaDecaysPiPi(); i++) {
	if (((AtlLambdaDecayPPi*)lambda->At(i))->GetVtx() == vtx)
	    return kTRUE;
    }
    return kFALSE;
}

//____________________________________________________________________

Bool_t AtlK0StarFinder::IsConversionVertex(HepVertex *vtx) {
    //
    // Return true, if the given vertex was already being tagged
    // as 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;
    p_e1.SetVectM(trk1->P(), fm_e);
    p_e2.SetVectM(trk2->P(), fm_e);
    p_g = p_e1 + p_e2;
    return (p_g.M() < fPhotonMass_max);
}


//____________________________________________________________________

void AtlK0StarFinder::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->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");

    if (trk1->Pt() > trk2->Pt()) {
	TLorentzVector p1, p2;
	p1.SetVectM(trk1->P(), fm_kaon);
	p2.SetVectM(trk2->P(), fm_pi);
	Double_t p = p1*p2;
	fHistK0Starreco_m_kaon_pi->Fill(p, GetPreTagEvtWeight());
    }
    else {
	TLorentzVector p1, p2;
	p1.SetVectM(trk2->P(), fm_kaon);
	p2.SetVectM(trk1->P(), fm_pi);
	Double_t p = p1*p2;
	fHistK0Starreco_m_kaon_pi->Fill(p, GetPreTagEvtWeight());
    }
    
    // Definition of covariance matrices, taken from track fit
    trk1->GetCovMatrixPtEtaPhi(cov_trk1);
    trk2->GetCovMatrixPtEtaPhi(cov_trk1);

    // 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!");
      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() ) > 0.1)
	//fAngleToPrimary_max)
        continue;
    SetCutFlow("Prim vtx origin");

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

    if (IsLambdaVertex(Vtx))
	continue;
    SetCutFlow("No Lambdas");

    // reject event, if it was generated by photo conversion
    if (IsConversionVertex(Vtx))
        continue;
    SetCutFlow("No #gamma conv");

    if (Vtx->GetPos().Perp() > 3.0) continue;
    SetCutFlow("Vtx radius");
    
    // 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);

	    if (decay->GetLifeTime() > 15) continue;
	    SetCutFlow("Lifetime");
	    if (decay->GetTransvDecayLength() > 3) continue;
	    SetCutFlow("TransvLength");
	    if (decay->GetAngleToPrimary() > 0.3 ) continue;
	    SetCutFlow("AnglePrimary");
	    
	    // Hitbased TruthMatching
	    if (fEvent->IsMC()) {
		switch ( DoTruthMatch(trk1, trk2, Vtx) ){
		    case 1:   fTrueReco = kTRUE;  FillMCHistograms(decay, kTRUE);  break;
		    case -1:  fTrueReco = kFALSE; FillMCHistograms(decay, kFALSE); break;
		    case 0:   continue;
		}
	    }

	    if ( IsDebugRun() ) {
		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() << ")";
	    }
	    
	    AtlKinFitterTool::FillHistograms("Signal");
	} 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);
	    AtlKinFitterTool::FillHistograms("Bkg");
	}
    }

  } //end of vertex loop
}

//____________________________________________________________________    

TKinFitter AtlK0StarFinder::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
  TFitConstraintMBW MLambdaCons("LambdaMassConstraint","LambdaMassConstraintGaus", 0, fm_lambda, 0.0462);
  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 AtlK0StarFinder::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_m_dangle->Fill(TMath::Cos(decay->GetDecayAngle()), decay->M("Reco"), GetPreTagEvtWeight());
    } else {
	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_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());
	fHistLambdareco_MC_dangle_bkg  ->Fill(TMath::Cos(decay->GetDecayAngle()),GetPreTagEvtWeight());
	fHistLambdareco_MC_m_dangle_bkg->Fill(TMath::Cos(decay->GetDecayAngle()), decay->M("Reco"), GetPreTagEvtWeight());
    }    
}


//____________________________________________________________________    


void AtlK0StarFinder::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());

      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(Proton->Pt(),  GetPreTagEvtWeight());
      fHistLambdareco_Proton_pt   ->Fill(Pion->Pt(),    GetPreTagEvtWeight());
      fHistLambdareco_Pion_eta    ->Fill(Proton->Eta(), GetPreTagEvtWeight());
      fHistLambdareco_Proton_eta  ->Fill(Pion->Eta(),   GetPreTagEvtWeight());
      fHistLambdareco_Pion_phi    ->Fill(Proton->Phi(), GetPreTagEvtWeight());
      fHistLambdareco_Proton_phi  ->Fill(Pion->Phi(),   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());
      } 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_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(Proton->Pt(),  GetPreTagEvtWeight());
      fHistLambdareco_Proton_pt_bkg   ->Fill(Pion->Pt(),    GetPreTagEvtWeight());
      fHistLambdareco_Pion_eta_bkg    ->Fill(Proton->Eta(), GetPreTagEvtWeight());
      fHistLambdareco_Proton_eta_bkg  ->Fill(Pion->Eta(),   GetPreTagEvtWeight());
      fHistLambdareco_Pion_phi_bkg    ->Fill(Proton->Phi(), GetPreTagEvtWeight());
      fHistLambdareco_Proton_phi_bkg  ->Fill(Pion->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 AtlK0StarFinder::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            = 0.89166;       // Lambda mass hypothesis
    fm_pi                = 0.13957;        // Pion mass hypothesis
    fm_proton            = 0.493667;    // Proton mass hypothesis
    fm_e                 = 0.000510998910; // Electron mass hypothesis
    fm_kaon              = 0.493667;
}

//____________________________________________________________________


void AtlK0StarFinder::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 AtlK0StarFinder::Terminate() {

  AtlKinFitterTool::Terminate();

  // print truth matching statistics
  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) && (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 AtlK0StarFinder!";
  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());
    
}

//____________________________________________________________________

Int_t AtlK0StarFinder::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()) == 313) &&
	     (MC1->GetMother() == MC2->GetMother()) &&
	     (TMath::Abs(MC1->GetPdgCode()) == 321) &&
	     (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 {
		fHistLambdareco_truth_PPi->Fill(pdgName, prob, GetPreTagEvtWeight());
		fN_MCFail++;
	    }

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

//____________________________________________________________________


Double_t AtlK0StarFinder::GetModifiedEventWeight() {
    Int_t run[] = {107680, 107681, 107682, 107683, 107684, 107685, 107690, 107691, 107692, 107693, 107694, 107695, 107700, 107701, 107702, 107703, 107704, 107705, 106280, 106281, 106283, 107650, 107651, 107652, 107653, 107654, 107655, 107660, 107661, 107662, 107663, 107664, 107665, 107670, 107671, 107672, 107673, 107674, 107675, 109300, 109301, 109302, 109303, 109305, 109306, 109307, 109308, 109310, 109311, 109312, 109313, 105860, 107941, 108340, 108341, 108342, 108343, 108344, 108345, 108346, 107100, 107101, 107102, 107103, 107104, 107105, 107106, 107107, 107108, 107109, 107110, 107111, 108320, 108319, 113159, 113160, 113161, 113162, 113163, 113164, 113165, 113166, 113167, 113168, 113169, 113170, 113171, 113172, 113173, 113174, 113175, 113176, 113177, 113178, 113179, 113180, 113181, 113182, 113183};
    Double_t mod[] = {0.00505753, 0.00500372, 0.00199634, 0.00199893, 0.0019475, 0.00200058, 0.00502187, 0.00500647, 0.00199776, 0.00198675, 0.00197829, 0.00200114, 0.00500611, 0.00501191, 0.00199845, 0.00199715, 0.00197753, 0.00175088, 0.000492383, 0.000472727, 0.0004, 0.00221211, 0.0021012, 0.00206698, 0.00203673, 0.0018012, 0.0016, 0.00216386, 0.00210807, 0.00208498, 0.00201928, 0.00186791, 0.00160321, 0.00216707, 0.00209512, 0.00207265, 0.00200109, 0.00193462, 0.00140281, 4.20697e-05, 2.43636e-05, 2.11408e-05, 3.83355e-05, 4.23016e-05, 2.45061e-05, 2.11413e-05, 3.77813e-05, 4.25241e-05, 2.42642e-05, 2.16372e-05, 3.81252e-05, 0.000395824, 0.000444825, 0.000715701, 0.000717815, 0.0007128, 4.70854e-05, 4.68587e-05, 4.70188e-05, 0.000972391, 4.11099e-05, 3.94879e-05, 2.94078e-05, 1.78053e-05, 4.42696e-05, 3.9916e-05, 4.42442e-05, 1.86112e-05, 4.94148e-05, 5e-05, 1.76247e-05, 1.1209e-05, 0.00122778, 0.00127425, 170.341, 5.9222, 0.214886, 0.00483829, 0.000488728, 30.7848, 20.7877, 1.33516, 0.0397393, 0.00346116, 6.53177, 7.77513, 1.35395, 0.0715945, 0.00846341, 0.987771, 2.3384, 0.750828, 0.0564942, 0.00962421, 0.139078, 0.680058, 0.400836, 0.0575774, 0.0267182};
    Int_t nRuns = 21 + 78;

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