//____________________________________________________________________
//
// Photoconversion finder class
//
// Conversions will be reconstructed while looping over all secondary vertices
// with 2 oppositly charged daughter tracks. 
// The Decay decision will be done either by a cut bassed reconstruction
// or by using the kinemativ fitter. Switching is possible by a Flag
// EMode (kCutBased, kKinFit) that can be set in the constructor via
// SetMode(EMode)

//
// Author: Sebastian Beumler <mailto:beumler@physik.hu-berlin.de>
// Copyright: 2010 (C) Sebastian Beumler
//
#ifndef ATLAS_AtlConvFinder
#include <AtlConvFinder.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(AtlConvFinder);
#endif

//____________________________________________________________________

AtlConvFinder::AtlConvFinder(const char* name, const char* title) :
    AtlKinFitterTool(name, title) {
    //
    // Default constructor
    //

    // set default mode
    SetMode(kKinFit);
    SetDebugMode(kFALSE);

    fBkgPhotonConv = new TList;
    fN_RecConv     = 0;
    fN_TrueRecConv = 0;
    fN_NoDecision  = 0;
}

//____________________________________________________________________

AtlConvFinder::~AtlConvFinder() {
    //
    // Default destructor
    //
    fBkgPhotonConv->Delete();
    delete fBkgPhotonConv;

    if ( IsDebugRun() )    fDebugOutput.close();
    
}

//____________________________________________________________________

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

//____________________________________________________________________

void AtlConvFinder::BookHistograms() {
    //
    // Book histograms
    //
    
    //Debugging
    if (IsDebugRun() ){
	fDebugOutput.open("DebugOutput.dat");
    }
    
    // Book KinFitter Histograms
    AtlKinFitterTool::BookHistograms();
    // Show adapted Cuts
    PrintCutValues();

    
    // ======================
    //       SIGNAL
    // ======================
    gDirectory->mkdir("Signal", "Oppositely charged candidates");
    gDirectory->cd("Signal");


    fHisteMatchingProb = new TH1F("h_e_MatchingProb",
				     "Matching probability (hitbased TruthMatching) of particles matching electrons",
				     50, 0, 1.2);
    fHisteMatchingProb->SetXTitle("MatchingProb");
    fHisteMatchingProb->SetYTitle("Number of Entries");

    
       
    // Conversions
    // ---

    if ( fMode == kKinFit ) {
	fHistConvreco_m_ee   = new TH1F("h_Conv_m_ee", "Invariant Conv mass (Conv->ee)",
					 50, 0.0, 0.01);
    }else if (fMode == kCutBased){
	fHistConvreco_m_ee   = new TH1F("h_Conv_m_ee", "Invariant Conv mass (Conv->ee)",
					 50, 0.0, 0.01);
    }
    fHistConvreco_m_ee->SetXTitle("m_{Conv} (GeV)");
    fHistConvreco_m_ee->SetYTitle("Number of Entries");
    fHistConvreco_pt_ee  = new TH1F("h_Conv_pt_ee", "Conv-p_{#perp} (Conv->ee)",
				     400, 0, 400);
    fHistConvreco_pt_ee->SetXTitle("p_{#perp} (GeV)");
    fHistConvreco_pt_ee->SetYTitle("Number of Entries");
    fHistConvreco_phi_ee = new TH1F("h_Conv_phi_ee", "Conv #phi distribution (Conv->ee)",
				     128, -3.2, 3.2);
    fHistConvreco_phi_ee->SetXTitle("#phi (rad)");
    fHistConvreco_phi_ee->SetYTitle("Number of Entries");
    fHistConvreco_eta_ee = new TH1F("h_Conv_eta_ee", "Conv #eta distribution (Conv->ee)",
				 50, -3, 3);
    fHistConvreco_eta_ee->SetXTitle("#eta");
    fHistConvreco_eta_ee->SetYTitle("Number of Entries");
    fHistConvreco_N_ee   = new TH1F("h_Conv_N_ee", "Reconstructed Conv' per event (Conv->ee)",
				     11, -0.5, 10.5);
    fHistConvreco_N_ee->SetXTitle("N_{Conv}/evt");
    fHistConvreco_N_ee->SetYTitle("Number of Entries");
    fHistConvreco_tau_ee = new TH1F("h_Conv_tau_ee", "Reconstructed Conv' lifetime (Conv->PPi)", 
				       100, 0, 0.2);
    fHistConvreco_tau_ee->SetXTitle("#tau (ps)");
    fHistConvreco_tau_ee->SetYTitle("Number of Entries");
    fHistConvreco_DecayLength_ee = new TH1F("h_Conv_DecayLength_ee",
					     "Reconstructed Conv' decay length (Conv->ee)", 
				       100, 0, 300);
    fHistConvreco_DecayLength_ee->SetXTitle("#DecayLength ");
    fHistConvreco_DecayLength_ee->SetYTitle("Number of Entries");
    fHistConvreco_OpeningAngle_ee = new TH1F("h_Conv_OpeningAngle_ee",
					      "opening angle between pion tracks",
				     128, 0, 0.01);
    fHistConvreco_OpeningAngle_ee->SetXTitle("#alpha (rad)");
    fHistConvreco_OpeningAngle_ee->SetYTitle("Number of Entries");
    fHistConvreco_DecayAngle_ee = new TH1F("h_Conv_DecayAngle_ee",
					    "decay angle between Conv and e+ in Conv' restframe (reconstructed Conv)",
				     50, -1, 1);
    fHistConvreco_DecayAngle_ee->SetXTitle("cos(#beta)");
    fHistConvreco_DecayAngle_ee->SetYTitle("Number of Entries");
    fHistConvreco_PointingAngle_ee = new TH1F("h_Conv_PointingAngle_ee",
					       "Cos of angle between Conv' momentum and vec(PV)-vec(SecVtx)",
					       50, 0.995, 1);
    fHistConvreco_PointingAngle_ee->SetXTitle("cos(#delta)");
    fHistConvreco_PointingAngle_ee->SetYTitle("Number of Entries");
    
    fHistConvreco_R_vtx = new TH1F("h_Conv_R_vtx", "Radial distance of secondary vertices", 120, 0.0, 60.0);
    fHistConvreco_R_vtx->SetXTitle("r_{#perp} (cm)");
    fHistConvreco_R_vtx->SetYTitle("Number of Entries");
    
    // Electron (e+) histograms in sub-folder
    gDirectory->mkdir("eplus", "e+ from Conv -> ee");
    gDirectory->cd("eplus");
    
    fHistConvreco_ePlus_pt = new TH1F("h_Conv_ePlus_pt", "#e^{+}-p_{#perp} (Conv->#e#e)",
				      400, 0, 400);
    fHistConvreco_ePlus_pt->SetXTitle("p_{#perp} (GeV)");
    fHistConvreco_ePlus_pt->SetYTitle("Number of Entries");
    fHistConvreco_ePlus_eta = new TH1F("h_Conv_ePlus_eta", "#e^{+}:  #eta distribution (Conv->#e#e)",
				       50, -3, 3);
    fHistConvreco_ePlus_eta->SetXTitle("#eta");
    fHistConvreco_ePlus_eta->SetYTitle("Number of Entries");
    fHistConvreco_ePlus_phi = new TH1F("h_Conv_ePlus_phi", "#e^{+}:  #phi distribution (Conv->#e#pi)",
				    50, -3.14, 3.14);
    fHistConvreco_ePlus_phi->SetXTitle("#phi");
    fHistConvreco_ePlus_phi->SetYTitle("Number of Entries");
    
    gDirectory->cd("../"); 
    
    // Electron (e-) histograms in sub-folder
    gDirectory->mkdir("eMinus", "e- from Conv0 -> ee");
    gDirectory->cd("eMinus");
    
    fHistConvreco_eMinus_pt = new TH1F("h_Conv_eMinus_pt", "#e^{-}-p_{#perp} (Conv->#e#e)",
				       400, 0, 400);
    fHistConvreco_eMinus_pt->SetXTitle("p_{#perp} (GeV)");
    fHistConvreco_eMinus_pt->SetYTitle("Number of Entries");
    fHistConvreco_eMinus_eta = new TH1F("h_Conv_eMinus_eta", "#e^{-}:  #eta distribution (Conv->#e#e)",
					50, -5, 5);
    fHistConvreco_eMinus_eta->SetXTitle("#eta");
    fHistConvreco_eMinus_eta->SetYTitle("Number of Entries");
    fHistConvreco_eMinus_phi = new TH1F("h_Conv_eMinus_phi", "#e^{-}:  #phi distribution (Conv->#e#e)",
					50, -3.14, 3.14);
    fHistConvreco_eMinus_phi->SetXTitle("#phi");
    fHistConvreco_eMinus_phi->SetYTitle("Number of Entries");


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

    // ======================
    //       BACKGROUND
    // ======================
    gDirectory->mkdir("Bkg", "Equally charged candidates");
    gDirectory->cd("Bkg");

       
    // Conversions
    // ---

    if ( fMode == kKinFit ) {
	fHistConvreco_m_LS_bkg   = new TH1F("h_Conv_m_LS_bkg", "Invariant Conv mass (Conv->ee)",
					 50, 0.0, 0.01);
    }else if (fMode == kCutBased){
	fHistConvreco_m_LS_bkg   = new TH1F("h_Conv_m_LS_bkg", "Invariant Conv mass (Conv->ee)",
					 50, 0.0, 0.01);
    }
    fHistConvreco_m_LS_bkg->SetXTitle("m_{Conv} (GeV)");
    fHistConvreco_m_LS_bkg->SetYTitle("Number of Entries");
    fHistConvreco_pt_LS_bkg  = new TH1F("h_Conv_pt_LS_bkg", "Conv-p_{#perp} (Conv->ee)",
				     400, 0, 400);
    fHistConvreco_pt_LS_bkg->SetXTitle("p_{#perp} (GeV)");
    fHistConvreco_pt_LS_bkg->SetYTitle("Number of Entries");
    fHistConvreco_phi_LS_bkg = new TH1F("h_Conv_phi_LS_bkg", "Conv #phi distribution (Conv->ee)",
				     128, -3.2, 3.2);
    fHistConvreco_phi_LS_bkg->SetXTitle("#phi (rad)");
    fHistConvreco_phi_LS_bkg->SetYTitle("Number of Entries");
    fHistConvreco_eta_LS_bkg = new TH1F("h_Conv_eta_LS_bkg", "Conv #eta distribution (Conv->ee)",
				 50, -3, 3);
    fHistConvreco_eta_LS_bkg->SetXTitle("#eta");
    fHistConvreco_eta_LS_bkg->SetYTitle("Number of Entries");
    fHistConvreco_N_LS_bkg   = new TH1F("h_Conv_N_LS_bkg", "Reconstructed Conv' per event (Conv->ee)",
				     11, -0.5, 10.5);
    fHistConvreco_N_LS_bkg->SetXTitle("N_{Conv}/evt");
    fHistConvreco_N_LS_bkg->SetYTitle("Number of Entries");
    fHistConvreco_tau_LS_bkg = new TH1F("h_Conv_tau_LS_bkg", "Reconstructed Conv' lifetime (Conv->PPi)", 
				       100, 0, 0.2);
    fHistConvreco_tau_LS_bkg->SetXTitle("#tau (ps)");
    fHistConvreco_tau_LS_bkg->SetYTitle("Number of Entries");
    fHistConvreco_DecayLength_LS_bkg = new TH1F("h_Conv_DecayLength_LS_bkg",
					     "Reconstructed Conv' decay length (Conv->ee)", 
				       100, 0, 300);
    fHistConvreco_DecayLength_LS_bkg->SetXTitle("#DecayLength ");
    fHistConvreco_DecayLength_LS_bkg->SetYTitle("Number of Entries");
    
    // Electron (e+) histograms in sub-folder
    gDirectory->mkdir("eplus", "e+ from Conv -> e+e+");
    gDirectory->cd("eplus");
    
    fHistConvreco_ePlus_pt_LS_bkg = new TH1F("h_Conv_ePlus_pt_LS_bkg", "#e^{+}-p_{#perp} (Conv->#e#e)",
				      400, 0, 400);
    fHistConvreco_ePlus_pt_LS_bkg->SetXTitle("p_{#perp} (GeV)");
    fHistConvreco_ePlus_pt_LS_bkg->SetYTitle("Number of Entries");
    fHistConvreco_ePlus_eta_LS_bkg = new TH1F("h_Conv_ePlus_eta_LS_bkg", "#e^{+}:  #eta distribution (Conv->#e#e)",
				       50, -3, 3);
    fHistConvreco_ePlus_eta_LS_bkg->SetXTitle("#eta");
    fHistConvreco_ePlus_eta_LS_bkg->SetYTitle("Number of Entries");
    fHistConvreco_ePlus_phi_LS_bkg = new TH1F("h_Conv_ePlus_phi_LS_bkg", "#e^{+}:  #phi distribution (Conv->#e#pi)",
				    50, -3.14, 3.14);
    fHistConvreco_ePlus_phi_LS_bkg->SetXTitle("#phi");
    fHistConvreco_ePlus_phi_LS_bkg->SetYTitle("Number of Entries");
    
    gDirectory->cd("../"); 
    
    // Electron (e-) histograms in sub-folder
    gDirectory->mkdir("eMinus", "e- from Conv0 -> e-e-");
    gDirectory->cd("eMinus");
    
    fHistConvreco_eMinus_pt_LS_bkg = new TH1F("h_Conv_eMinus_pt_LS_bkg", "#e^{-}-p_{#perp} (Conv->#e#e)",
				       400, 0, 400);
    fHistConvreco_eMinus_pt_LS_bkg->SetXTitle("p_{#perp} (GeV)");
    fHistConvreco_eMinus_pt_LS_bkg->SetYTitle("Number of Entries");
    fHistConvreco_eMinus_eta_LS_bkg  = new TH1F("h_Conv_eMinus_eta_LS_bkg", "#e^{-}:  #eta distribution (Conv->#e#e)",
					50, -5, 5);
    fHistConvreco_eMinus_eta_LS_bkg ->SetXTitle("#eta");
    fHistConvreco_eMinus_eta_LS_bkg->SetYTitle("Number of Entries");
    fHistConvreco_eMinus_phi_LS_bkg = new TH1F("h_Conv_eMinus_phi_LS_bkg", "#e^{-}:  #phi distribution (Conv->#e#e)",
					50, -3.14, 3.14);
    fHistConvreco_eMinus_phi_LS_bkg->SetXTitle("#phi");
    fHistConvreco_eMinus_phi_LS_bkg->SetYTitle("Number of Entries");


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

    
    // ========================
    //     MC TRUTH STUDY
    // ========================

    gDirectory->mkdir("MCTruthStudy", "Small Truth Study with hitbased Truth-matching");
    gDirectory->cd("MCTruthStudy");

    fHistConvreco_truthtype = new TH2F("h_Convreco_truthtype", "truth type of Conv candidates",
				       6260, -3130, 3130, 50, 0.0, 1.0);
    fHistConvreco_truthtype->SetXTitle("");
    fHistConvreco_truthtype->SetYTitle("P(#Chi^{2})");
    fHistConvreco_truthtype->SetZTitle("Number of Entries");
    fHistConvreco_truthtype->SetOption("COLZ");
    
    // =============================================================================
    // Book signal histograms for Conv-candidates that fulfill the MC Truth Matching
    // =============================================================================
    
    gDirectory->mkdir("Signal_MC", "Conv-candidates that fulfill the MC Truth Matching");
    gDirectory->cd("Signal_MC");

    if ( fMode == kKinFit ) {
	fHistConvreco_m_MCsignal   = new TH1F("h_Conv_m_MCsignal",
					      "Invariant Conv mass (equaly signed electrons)",
					      50, 0.0, 0.01);
    }else if (fMode == kCutBased){
	fHistConvreco_m_MCsignal   = new TH1F("h_Conv_m_PiPi",
					      "Invariant Conv mass (equaly signed electrons)",
					      50, 0.0, 0.01);
    }
    fHistConvreco_m_MCsignal->SetXTitle("m_{Conv} (GeV)");
    fHistConvreco_m_MCsignal->SetYTitle("Number of Entries");
    fHistConvreco_pt_MCsignal  = new TH1F("h_Conv_pt_MCsignal", "Conv-p_{#perp} (equaly signed electrons)",
				    400, 0, 400);
    fHistConvreco_pt_MCsignal->SetXTitle("p_{#perp} (GeV)");
    fHistConvreco_pt_MCsignal->SetYTitle("Number of Entries");
    fHistConvreco_phi_MCsignal = new TH1F("h_Conv_phi_MCsignal", "Conv #phi distribution (equaly signed electrons)",
				    128, -3.2, 3.2);
    fHistConvreco_phi_MCsignal->SetXTitle("#phi (rad)");
    fHistConvreco_phi_MCsignal->SetYTitle("Number of Entries");
    fHistConvreco_eta_MCsignal = new TH1F("h_Conv_eta_MCsignal", "Conv #eta distribution (equaly signed electrons)",
				    50, -3, 3);
    fHistConvreco_eta_MCsignal->SetXTitle("#eta");
    fHistConvreco_eta_MCsignal->SetYTitle("Number of Entries");
    fHistConvreco_N_MCsignal   = new TH1F("h_Conv_N_MCsignal", "Reconstructed Conv' per event (equaly signed electrons)",
				    11,-0.5,10.5);
    fHistConvreco_N_MCsignal->SetXTitle("N_{Conv}/evt");
    fHistConvreco_N_MCsignal->SetYTitle("Number of Entries");
    fHistConvreco_tau_MCsignal = new TH1F("h_Conv_tau_MCsignal", "Reconstructed Conv' lifetime (equaly signed electrons)", 
				    100, 0, 0.2);
    fHistConvreco_tau_MCsignal->SetXTitle("#tau (ps)");
    fHistConvreco_tau_MCsignal->SetYTitle("Number of Entries");
    fHistConvreco_DecayLength_MCsignal = new TH1F("h_Conv_DecayLength_MCsignal",
					    "Reconstructed Conv' decay length (equaly signed electrons)", 
					    100, 0, 50);
    fHistConvreco_DecayLength_MCsignal->SetXTitle("DecayLength ");
    fHistConvreco_DecayLength_MCsignal->SetYTitle("Number of Entries");
    fHistConvreco_OpeningAngle_MCsignal = new TH1F("h_Conv_OpeningAngle_MCsignal",
					     "opening angle between electron tracks",
					     128, 0, 0.01);
    fHistConvreco_OpeningAngle_MCsignal->SetXTitle("#alpha (rad)");
    fHistConvreco_OpeningAngle_MCsignal->SetYTitle("Number of Entries");
    fHistConvreco_DecayAngle_MCsignal = new TH1F("h_Conv_DecayAngle_MCsignal",
					   "decay angle for reconstructed Conv that fulfill truthmatching",
					   50, -1, 1);
    fHistConvreco_DecayAngle_MCsignal->SetXTitle("cos(#beta) (rad)");
    fHistConvreco_DecayAngle_MCsignal->SetYTitle("Number of Entries");
    fHistConvreco_PointingAngle_MCsignal = new TH1F("h_Conv_PointingAngle_MCsignal",
					      "cos of angle between Conv' momentum and vec(PV)-vec(SecVtx)",
					      50, 0.995, 1);
    fHistConvreco_PointingAngle_MCsignal->SetXTitle("cos(#delta)");
    fHistConvreco_PointingAngle_MCsignal->SetYTitle("Number of Entries");
    fHistConvreco_R_vtx_MCsignal = new TH1F("h_Conv_R_vtx_MCsignal",
					   "Radial distance of secondary vertices",
					   120, 0.0, 60.0);
    fHistConvreco_R_vtx_MCsignal->SetXTitle("r_{#perp} (cm)");
    fHistConvreco_R_vtx_MCsignal->SetYTitle("Number of Entries");
        
    gDirectory->cd("../");

    // ==========================================================================
    // Book bkg histograms for Conv-candidates that fail the MC Truth Matching
    // ==========================================================================

    gDirectory->mkdir("Bkg_MC", "Conv-candidates that fail the MC Truth Matching");
    gDirectory->cd("Bkg_MC");

     if ( fMode == kKinFit ) {
	fHistConvreco_m_MCbkg   = new TH1F("h_Conv_m_MCbkg", "Invariant Conv mass (equaly signed electrons)",
					50, 0.0, 0.01);
    }else if (fMode == kCutBased){
	fHistConvreco_m_MCbkg   = new TH1F("h_Conv_m_PiPi", "Invariant Conv mass (equaly signed electrons)",
					50, 0.0, 0.01);
    }
    fHistConvreco_m_MCbkg->SetXTitle("m_{Conv} (GeV)");
    fHistConvreco_m_MCbkg->SetYTitle("Number of Entries");
    fHistConvreco_pt_MCbkg  = new TH1F("h_Conv_pt_MCbkg", "Conv-p_{#perp} (equaly signed electrons)",
				    400, 0, 400);
    fHistConvreco_pt_MCbkg->SetXTitle("p_{#perp} (GeV)");
    fHistConvreco_pt_MCbkg->SetYTitle("Number of Entries");
    fHistConvreco_phi_MCbkg = new TH1F("h_Conv_phi_MCbkg", "Conv #phi distribution (equaly signed electrons)",
				    128, -3.2, 3.2);
    fHistConvreco_phi_MCbkg->SetXTitle("#phi (rad)");
    fHistConvreco_phi_MCbkg->SetYTitle("Number of Entries");
    fHistConvreco_eta_MCbkg = new TH1F("h_Conv_eta_MCbkg", "Conv #eta distribution (equaly signed electrons)",
				    50, -3, 3);
    fHistConvreco_eta_MCbkg->SetXTitle("#eta");
    fHistConvreco_eta_MCbkg->SetYTitle("Number of Entries");
    fHistConvreco_N_MCbkg   = new TH1F("h_Conv_N_MCbkg", "Reconstructed Conv' per event (equaly signed electrons)",
				    11,-0.5,10.5);
    fHistConvreco_N_MCbkg->SetXTitle("N_{Conv}/evt");
    fHistConvreco_N_MCbkg->SetYTitle("Number of Entries");
    fHistConvreco_tau_MCbkg = new TH1F("h_Conv_tau_MCbkg", "Reconstructed Conv' lifetime (equaly signed electrons)", 
				    100, 0, 0.2);
    fHistConvreco_tau_MCbkg->SetXTitle("#tau (ps)");
    fHistConvreco_tau_MCbkg->SetYTitle("Number of Entries");
    fHistConvreco_DecayLength_MCbkg = new TH1F("h_Conv_DecayLength_MCbkg",
					    "Reconstructed Conv' decay length (equaly signed electrons)", 
					    100, 0, 50);
    fHistConvreco_DecayLength_MCbkg->SetXTitle("#DecayLength ");
    fHistConvreco_DecayLength_MCbkg->SetYTitle("Number of Entries");
    fHistConvreco_OpeningAngle_MCbkg = new TH1F("h_Conv_OpeningAngle_MCbkg",
					     "opening angle between electron tracks",
					     128, 0, 0.01);
    fHistConvreco_OpeningAngle_MCbkg->SetXTitle("#alpha (rad)");
    fHistConvreco_OpeningAngle_MCbkg->SetYTitle("Number of Entries");
    fHistConvreco_DecayAngle_MCbkg = new TH1F("h_Conv_DecayAngle_MCbkg",
					   "decay angle of reconstructed Conv that fail truthmatching",
					   50, -1, 1);
    fHistConvreco_DecayAngle_MCbkg->SetXTitle("cos(#beta) (rad)");
    fHistConvreco_DecayAngle_MCbkg->SetYTitle("Number of Entries");
    fHistConvreco_PointingAngle_MCbkg = new TH1F("h_Conv_PointingAngle_MCbkg",
					      "cos of angle between Conv' momentum and vec(PV)-vec(SecVtx)",
					      50, 0.995, 1);
    fHistConvreco_PointingAngle_MCbkg->SetXTitle("cos(#delta)");
    fHistConvreco_PointingAngle_MCbkg->SetYTitle("Number of Entries");
    fHistConvreco_R_vtx_MCbkg = new TH1F("h_Conv_R_vtx_MCbkg",
					   "Radial distance of secondary vertices",
					   120, 0.0, 60.0);
    fHistConvreco_R_vtx_MCbkg->SetXTitle("r_{#perp} (cm)");
    fHistConvreco_R_vtx_MCbkg->SetYTitle("Number of Entries");
         
    gDirectory->cd("../../../");
}


//____________________________________________________________________

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

    // Count real Conv to compute efficiency
    if (fEvent->IsMC() ) {
	TList *Conv_list = fEvent->GetMCParticles("gamma");
	Int_t Nr_ConvMC = 0;
	
	for( Int_t i = 0; i < Conv_list->GetEntries(); i++ ){
	    
	    HepMCParticle *prt = (HepMCParticle*)(Conv_list->At(i));
	    if (! prt->IsConversion() ) continue;
	    if (prt->GetN_Daughters() != 2) continue;
	    // daughter-trks
	    AtlIDTrack *daughter1 =
		fEvent->GetAssociatedIDTrack((HepMCParticle*)prt->GetDaughters()->At(0));
	    AtlIDTrack *daughter2 =
		fEvent->GetAssociatedIDTrack((HepMCParticle*)prt->GetDaughters()->At(1));
	    if( (daughter1 == 0) || (daughter2 == 0) ) continue;
	    if( (TMath::Abs(prt->Eta()) < 2.5) && (prt->Pt() > 0.5) ){
		if (daughter1->HasValidTruthMatch(fMatchingProb_min) &&
		    daughter2->HasValidTruthMatch(fMatchingProb_min) ){
		    Nr_ConvMC++;
		}
	    }
	}
	AddAbundanceTrue( Nr_ConvMC );
    }
    
    // Reconstruct Conv decays
    if ( fMode == kKinFit ) {
	ReconstructConvKinFit();
    } else if (fMode == kCutBased){
	ReconstructConvCutBased();
    } else {
	Error("AnalyzeEvent",
	      "Invalid mode given. Abort!");
	gSystem->Abort(0);
    }
    return kTRUE;
}

//____________________________________________________________________

void AtlConvFinder::ReconstructConvCutBased(){

    HepVertex  *Vtx  = 0;
    HepVertex *PrimVtx = 0;
    AtlIDTrack *trk1 = 0;
    AtlIDTrack *trk2 = 0;

    TLorentzVector pConv;
    
    TLorentzVector p1,p2;
    AtlPhotonConv *Conv = 0;

    // Storing Prim. Vtx
    PrimVtx = fEvent->GetPrimaryVtx();
    
    // Vertex Loop
    for(Int_t i = 0; i < fEvent->GetN_Vertices(); i++){

	// Get Vtx and associated Daughters
	Vtx = (HepVertex*)fEvent->GetVertices()->At(i);
	if(Vtx->GetNDaughters() != 2) continue;
	SetCutFlow("Sec Vtx with 2 Daughters");
	trk1 = (AtlIDTrack*)Vtx->GetDaughters()->At(0);
	trk2 = (AtlIDTrack*)Vtx->GetDaughters()->At(1);
		
	// Cut on R_Vtx
	if ( Vtx->GetPos().Perp() < fR_Vtx_min ) continue;
	SetCutFlow("R_Vtx");

	// Cut on Transverse Decay Length
	if( (PrimVtx->GetPos() - Vtx->GetPos()).Perp() < fTransvDecayLength_min)
	    continue;
	SetCutFlow("Decay Len.");

	// Get Momenta of Daughter Tracks
	p1.SetVectM(trk1->P(),fm_e);
	p2.SetVectM(trk2->P(),fm_e);
	pConv = p1+p2;
	
        // Momenta of outgoing electron tracks
	if ( (trk1->Pt() > fSignale_Pt_max) ||
	     (trk1->Pt() < fSignale_Pt_min) ) continue;
	if ( (trk2->Pt() > fSignale_Pt_max) ||
	     (trk2->Pt() < fSignale_Pt_min) ) continue;
	SetCutFlow("electron p_{#perp}");

        // Eta of outgoing electron tracks
	if ( (trk1->Eta() > fSignale_Eta_max) ||
	     (trk1->Eta() < fSignale_Eta_min) ) continue;
	if ( (trk2->Eta() > fSignale_Eta_max) ||
	     (trk2->Eta() < fSignale_Eta_min) ) continue;
	SetCutFlow("electron #eta");
	
	// 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");


	// Cut on cosine of pointing angle
	if( TMath::Cos(pConv.Angle((Vtx->GetPos() - PrimVtx->GetPos())))
	    < fPointingAngle_min )
	    continue;
	SetCutFlow("Pointing Angle");
	
	// Cut on cos of Decay Angle
	TLorentzVector RF;
	RF.SetVectM(pConv.Vect(),0.497); // K0s mass considered to get a well defined rest frame
	TVector3 boost = -RF.BoostVector();
	TLorentzVector P_trk1_RFK0s = p1;
	TLorentzVector P_trk2_RFK0s = p2;
	P_trk1_RFK0s.Boost(boost); // boosting trks momentum in K0s restframe
	P_trk2_RFK0s.Boost(boost); // boosting trks momentum in K0s restframe
	if ( (TMath::Abs(TMath::Cos(pConv.Angle(P_trk1_RFK0s.Vect()))) < fDecayAngle_min)
	     || TMath::Abs((TMath::Cos(pConv.Angle(P_trk2_RFK0s.Vect()))) < fDecayAngle_min) )
	    continue;
	SetCutFlow("Decay Angle");

	// Mass request
	if(TMath::Abs(pConv.M()) > fConv_M_max) continue;
	
	//require opposite sign
	if ( trk1->Charge()*trk2->Charge() < 0. ) { 
	    SetCutFlow("opp. sign");
	    
	    // look for right order
	    if ( trk1->QovP()>0. ) {
		HepParticle Fit_Daughter1(1,p1.Px(),p1.Py(),p1.Pz(), p1.E(),-11);
		HepParticle Fit_Daughter2(2,p2.Px(),p2.Py(),p2.Pz(), p2.E(),11);
		Conv = fEvent->AddPhotonConv(pConv.Px(),pConv.Py(),pConv.Pz(),pConv.E(),
					    trk1,trk2,Vtx,
					    Fit_Daughter1,Fit_Daughter2);
	    } else {
		HepParticle Fit_Daughter2(1,p1.Px(),p1.Py(),p1.Pz(), p1.E(),-11);
		HepParticle Fit_Daughter1(2,p2.Px(),p2.Py(), p2.Pz(), p2.E(),11);
		Conv = fEvent->AddPhotonConv(pConv.Px(),pConv.Py(),pConv.Pz(),pConv.E(),
					    trk2,trk1,Vtx,
					    Fit_Daughter1, Fit_Daughter2);
	    }
	    fN_RecConv++;
	    
	    // Hitbased TruthMatching
	    if ( fEvent->IsMC() ){
		switch ( DoTruthMatch(Conv) ){
		    case  1:
			fTrueReco = kTRUE;
			FillHistograms_MCTruthStudy(Conv,'s');
			fN_TrueRecConv++;
			break;
		    case -1:
			fTrueReco = kFALSE;
			FillHistograms_MCTruthStudy(Conv,'b');
			break;
		    case  0:
			fN_NoDecision++;
			continue;
		}
	    }
	    
	    
	    // fill fitter histograms depending on Chi2 and NDoF
	    AtlKinFitterTool::FillHistograms("Signal"); 
	    
	}// same charged
	// If there are like signed electrons, fill BkgDecay-List later
    }
}

//____________________________________________________________________

void AtlConvFinder::ReconstructConvKinFit(){
    //
    // Conversion reconstruction from track-pairs assuming being electrons using KinFitter
    //
    
    HepVertex  *Vtx     = 0;
    HepVertex  *PrimVtx = 0;
    AtlIDTrack *trk1    = 0;  
    AtlIDTrack *trk2    = 0;
    
    TLorentzVector pConv;
    
    TMatrixD cov_trk1(3,3);
    TMatrixD cov_trk2(3,3);

    Int_t   BgkCount     = 1;  // gives ID of background Conv (from same charged electrons)
    Float_t PvalueKinFit = 0.0;

    //storing primary Vtx
    PrimVtx = fEvent->GetPrimaryVtx();
    
    // Vertex-Loop
    for ( Int_t i = 0; i < fEvent->GetN_Vertices(); i++){
	
	Vtx = (HepVertex*)fEvent->GetVertices()->At(i);
	if ( !(Vtx->GetNDaughters() == 2) ) continue;
	SetCutFlow("Sec. Vtx with 2 Dght.");

	// Cut on R_Vtx
	if ( Vtx->GetPos().Perp() < fR_Vtx_min ) continue;
	SetCutFlow("R_Vtx");
	
	// Cut on Transverse Decay Length
	if( (PrimVtx->GetPos() - Vtx->GetPos()).Perp() < fTransvDecayLength_min)
	    continue;
	SetCutFlow("Decay Len.");

	// Get Momenta of Daughter Tracks
	trk1 = (AtlIDTrack*)Vtx->GetDaughters()->At(0);
	trk2 = (AtlIDTrack*)Vtx->GetDaughters()->At(1);
	// Momenta of outgoing pion tracks
	if ( (trk1->Pt() > fSignale_Pt_max) ||
	     (trk1->Pt() < fSignale_Pt_min) ) continue;
	if ( (trk2->Pt() > fSignale_Pt_max) ||
	     (trk2->Pt() < fSignale_Pt_min) ) continue;
	SetCutFlow("#pi p_{#perp}");
	// Eta of outgoing pion tracks
	if ( (trk1->Eta() > fSignale_Eta_max) ||
	     (trk1->Eta() < fSignale_Eta_min) ) continue;
	if ( (trk2->Eta() > fSignale_Eta_max) ||
	     (trk2->Eta() < fSignale_Eta_min) ) continue;
	SetCutFlow("#eta (pions)");
	
	// 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");

	// covariance matrices, taken from track fit
	trk1->GetCovMatrixPtEtaPhi(cov_trk1);
	trk2->GetCovMatrixPtEtaPhi(cov_trk2);
	
	// define momentum used as output of the fit
	TLorentzVector FitP_trk1;
	TLorentzVector FitP_trk2;
	
	// define particels necessary for execution of the fit
	// using 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 ConvFit",
					  &dummy1,fm_e,&cov_trk1);
	TVector3 dummy2 = trk2->P(); // instead of const cast
	TFitParticlePtEtaPhi FitExec_trk2("FitExec_trk2","FitExec_trk2 for ConvFit",
					  &dummy2,fm_e,&cov_trk2);

	// definition of Conv mass constraint
	TFitConstraintMGaus MConvCons("ConvMassConstraint","ConvMassConstraintGaus",0,0,fm_PolMass, fm_Width);
	MConvCons.addParticles1(&FitExec_trk1,&FitExec_trk2);
	
	// fitting characteristics
	TKinFitter fitter;
	fitter.addMeasParticle(&FitExec_trk1);
	fitter.addMeasParticle(&FitExec_trk2);
	fitter.addConstraint(&MConvCons);
	
	fitter.setMaxNbIter(50);   // maximum number of iterations
	fitter.setMaxDeltaS(5e-5); // maximum deviation of the minimum function within two iterations
	fitter.setMaxF(1e-6);      // maximum value of constraints
	fitter.setVerbosity(0);    // verbosity level

	// Kinematic Fitting
	fitter.fit();
	
	// Fill Histogram IF(!) the fit converged (fitter.getStatus==0)
	if ( fitter.getS()<0. ) {
	    continue;
	}
	if ( !fitter.getStatus() ) {

	    SetCutFlow("Fit converged");

            // Copy fitted Vectors
	    FitP_trk1=*(FitExec_trk1.getCurr4Vec());
	    FitP_trk2=*(FitExec_trk2.getCurr4Vec());

	    // Reconstruct Conv 4-momentum
	    pConv = FitP_trk1 + FitP_trk2;

	    // Cut on cosine of pointing angle
	    if( TMath::Cos(pConv.Angle((Vtx->GetPos() - PrimVtx->GetPos())))
		< fPointingAngle_min )
	    	continue;
	    SetCutFlow("Pointing Angle");

	    // Cut on cos of Decay Angle
	    TLorentzVector RF;
	    RF.SetVectM(pConv.Vect(),0.497); // K0s mass considered to get a well defined rest frame
	    TVector3 boost = -RF.BoostVector();
	    TLorentzVector P_trk1_RFK0s = FitP_trk1;
	    TLorentzVector P_trk2_RFK0s = FitP_trk2;
	    P_trk1_RFK0s.Boost(boost); // boosting trks momentum in K0s restframe
	    P_trk2_RFK0s.Boost(boost); // boosting trks momentum in K0s restframe
	    if ( (TMath::Abs(TMath::Cos(pConv.Angle(P_trk1_RFK0s.Vect()))) < fDecayAngle_min)
		 || TMath::Abs((TMath::Cos(pConv.Angle(P_trk2_RFK0s.Vect()))) < fDecayAngle_min) )
		continue;
	    SetCutFlow("Decay Angle");
	    
	    //setting Chi2,NDoF
	    SetChi2(fitter.getS());
	    SetNDoF(fitter.getNDF());
	    PvalueKinFit = TMath::Prob(fChi2, fNDoF);

	    // Cut on KinFit p-Value
	    if (PvalueKinFit >= fKinFitPvalue_min) {
		SetCutFlow("KinFit p-value");

		// Adding Conversion Candidate to Event
		AtlPhotonConv *Conv;
		if ( trk1->Charge()*trk2->Charge() < 0. ) { //require opposite sign
		    SetCutFlow("opp. sign");

                      // look for right order
		    if ( trk1->QovP()>0. ) {
			HepParticle Fit_Daughter1(1,FitP_trk1.Px(),FitP_trk1.Py(),
						  FitP_trk1.Pz(), FitP_trk1.E(),211);
			HepParticle Fit_Daughter2(2,FitP_trk2.Px(),FitP_trk2.Py(),
						  FitP_trk2.Pz(), FitP_trk2.E(),-211);
			Conv = fEvent->AddPhotonConv(pConv.Px(),pConv.Py(),pConv.Pz(),pConv.E(),
						     trk1,trk2,Vtx,
						     Fit_Daughter1,Fit_Daughter2);
		    } else {
			HepParticle Fit_Daughter1(1,FitP_trk2.Px(),FitP_trk2.Py(),
						  FitP_trk2.Pz(), FitP_trk2.E(),211);
			HepParticle Fit_Daughter2(2,FitP_trk1.Px(),FitP_trk1.Py(),
						  FitP_trk1.Pz(), FitP_trk1.E(),-211);
			Conv = fEvent->AddPhotonConv(pConv.Px(),pConv.Py(),pConv.Pz(),pConv.E(),
						     trk2,trk1,Vtx,
						     Fit_Daughter1, Fit_Daughter2);
		    }
		    fN_RecConv++;
                    // Set Chi2, NDoF
		    Conv->SetChi2NDoF(fChi2, fNDoF);

		    // Hitbased TruthMatching
		    if ( fEvent->IsMC() ){
			switch ( DoTruthMatch(Conv) ){
			    case  1:
				fTrueReco = kTRUE;
				FillHistograms_MCTruthStudy(Conv,'s');
				fN_TrueRecConv++;
				break;
			    case -1:
				fTrueReco = kFALSE;
				FillHistograms_MCTruthStudy(Conv,'b');
				break;
			    case  0:
				fN_NoDecision++;
				continue;
			}
		    }
		    
		    
		    // fill fitter histograms depending on Chi2 and NDoF
		    AtlKinFitterTool::FillHistograms("Signal"); 
		    
		    // DebugOutput
		      if ( IsDebugRun() ) {
			if( trk1->HasValidTruthMatch(0.0001) && trk2->HasValidTruthMatch(0.0001) ){
			    //fDebugOutput
			    cout << endl
				 << "Event Nr. :" << fTree->GetReadEntry() << "Vertex ID: "
				 << Vtx->GetId() << endl
				 << "Trk1: " << trk1->GetMCParticle()->GetPdgName() << " Mother: "
				 << trk1->GetMCParticle()->GetMother()->GetPdgName() << endl
				 << "Trk2: " << trk2->GetMCParticle()->GetPdgName() << " Mother: "
				 << trk2->GetMCParticle()->GetMother()->GetPdgName() << endl
				 << endl;
			}
		      }
		} else { // end: opp. sign request
		    
		    // Add same charged combinations to the bkg list
		    Int_t pdgCode = 22;
		    HepParticle Fit_Daughter1(1,FitP_trk1.Px(),FitP_trk1.Py(),
					      FitP_trk1.Pz(), FitP_trk1.E(),pdgCode);
		    HepParticle Fit_Daughter2(2,FitP_trk2.Px(),FitP_trk2.Py(),
					      FitP_trk2.Pz(), FitP_trk2.E(),pdgCode);
		    Conv = new AtlPhotonConv(BgkCount++,pConv.Px(), pConv.Py(),
					    pConv.Pz(), pConv.E(),
					    trk1, trk2,
					    Vtx, PrimVtx,
					    Fit_Daughter1,Fit_Daughter2);

		    Conv->SetChi2NDoF(fChi2, fNDoF);
		    fBkgPhotonConv->Add(Conv);
		    
		    // fill Chi2 and NDoFa
		    AtlKinFitterTool::FillHistograms("Bkg");
		}
		
	    }// End of Prob(Chi2ovNDoF) > x  request
	}
    } //end of vertex loop
}

//____________________________________________________________________    

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

    AtlPhotonConv *Conv   = 0;
    TLorentzVector PConv,P_ePlus,P_eMinus;
    Float_t OpeningAngle  = 0.;
    Float_t PointingAngle = 0.;
    

    // Signal (opposite charged)
    // ________________________________________

    for ( Int_t i = 0; i < fEvent->GetN_PhotonConv(); i++ ) {

       	Conv = (AtlPhotonConv*)fEvent->GetPhotonConv()->At(i);
	
	PConv     = Conv->P();
	P_ePlus    = Conv->GetReFitePlus().P();
	P_eMinus   = Conv->GetReFiteMinus().P();

        //filling the standard histograms
	//----------------------------------
	fHistConvreco_m_ee     ->Fill(Conv->M("REC")      ,GetPreTagEvtWeight());
	fHistConvreco_pt_ee    ->Fill(Conv->Pt()          ,GetPreTagEvtWeight());  
	fHistConvreco_phi_ee   ->Fill(Conv->Phi()         ,GetPreTagEvtWeight()); 
	fHistConvreco_eta_ee   ->Fill(Conv->Eta()         ,GetPreTagEvtWeight());
	fHistConvreco_tau_ee   ->Fill(Conv->GetLifeTime() ,GetPreTagEvtWeight());
	fHistConvreco_DecayLength_ee ->Fill(Conv->GetDecayLength(),            GetPreTagEvtWeight());
	fHistConvreco_R_vtx          ->Fill(Conv->GetVtx()->GetPos().Perp(),   GetPreTagEvtWeight());
	
	// FlightDirection
	TVector3 FlightDirection = (Conv->GetVtx())->GetPos();
	FlightDirection -= (fEvent->GetPrimaryVtx())->GetPos();
	PointingAngle = PConv.Angle(FlightDirection);
	fHistConvreco_PointingAngle_ee ->Fill(TMath::Cos(PointingAngle),GetPreTagEvtWeight());

        // Opening Angle
	OpeningAngle = P_ePlus.Angle(P_eMinus.Vect());
	fHistConvreco_OpeningAngle_ee  ->Fill(OpeningAngle, GetPreTagEvtWeight());

	// Decay Angle is the angle between Conv' momentum and the momentum of the e+
	// in K0s' restframe (since the restframe of gamma is not well defined)
	TLorentzVector RF;
	RF.SetVectM(PConv.Vect(),0.497);
	TVector3 boost = -RF.BoostVector();
	TLorentzVector P_trk1_RFK0s = P_ePlus; // looks like a bug? S. Stamm  (was P_ePlus.P());
	P_trk1_RFK0s.Boost(boost); // boosting trks momentum in K0s restframe
	Float_t DecayAngle = TMath::Cos( PConv.Angle(P_trk1_RFK0s.Vect()) );
	fHistConvreco_DecayAngle_ee ->Fill(DecayAngle,  GetPreTagEvtWeight());
	
	
        //filling pion histograms
	//--------------------------
	fHistConvreco_ePlus_pt     ->Fill(P_ePlus.Pt()   ,GetPreTagEvtWeight());
	fHistConvreco_eMinus_pt    ->Fill(P_eMinus.Pt()  ,GetPreTagEvtWeight());
	fHistConvreco_ePlus_eta    ->Fill(P_ePlus.Eta()  ,GetPreTagEvtWeight());
	fHistConvreco_eMinus_eta   ->Fill(P_eMinus.Eta() ,GetPreTagEvtWeight());
	fHistConvreco_ePlus_phi    ->Fill(P_ePlus.Phi()  ,GetPreTagEvtWeight());
	fHistConvreco_eMinus_phi   ->Fill(P_eMinus.Phi() ,GetPreTagEvtWeight());
			
    }
    fHistConvreco_N_ee ->Fill(fEvent->GetN_PhotonConv(), GetPreTagEvtWeight());
    
    
    // Combinatorial Background (Like-sign approach)
    // ____________________________________________

    TIter next(fBkgPhotonConv);
    while ( (Conv = (AtlPhotonConv*)next()) ) {
	
	TLorentzVector P_e1 = Conv->GetReFitePlus().P();
	TLorentzVector P_e2 = Conv->GetReFiteMinus().P();
	
	PConv  = Conv->P();
	P_e1  = Conv->GetReFitePlus().P();
	P_e2  = Conv->GetReFiteMinus().P();

        //filling the standard histograms
	//----------------------------------
	fHistConvreco_m_LS_bkg     ->Fill(Conv->M("REC")      ,GetPreTagEvtWeight());
	fHistConvreco_pt_LS_bkg    ->Fill(Conv->Pt()          ,GetPreTagEvtWeight());  
	fHistConvreco_phi_LS_bkg   ->Fill(Conv->Phi()         ,GetPreTagEvtWeight()); 
	fHistConvreco_eta_LS_bkg   ->Fill(Conv->Eta()         ,GetPreTagEvtWeight());
	fHistConvreco_tau_LS_bkg   ->Fill(Conv->GetLifeTime() ,GetPreTagEvtWeight());
	fHistConvreco_DecayLength_LS_bkg   ->Fill(Conv->GetDecayLength(),  GetPreTagEvtWeight());
	
        //filling pion histograms
	//-----------------------------
        // Get Daughters: both are same charged -> fill either positive or
	// negative daughter histograms
	
	// Check if positive or negative charged daughters


	// still buggy !!!
/*	if( Conv->GetePlus()->GetQovP() > 0. ) {
	    cout << fHistConvreco_ePlus_pt_LS_bkg << endl;
	    fHistConvreco_ePlus_pt_LS_bkg     ->Fill(P_e1.Pt(),   GetPreTagEvtWeight());
	    fHistConvreco_ePlus_eta_LS_bkg    ->Fill(P_e1.Eta(),  GetPreTagEvtWeight());
	    fHistConvreco_ePlus_phi_LS_bkg    ->Fill(P_e1.Phi(),  GetPreTagEvtWeight());
	} else {
	    fHistConvreco_eMinus_pt_LS_bkg    ->Fill(P_e2.Pt(),   GetPreTagEvtWeight());
	    fHistConvreco_eMinus_eta_LS_bkg   ->Fill(P_e2.Eta(),  GetPreTagEvtWeight());
	    fHistConvreco_eMinus_phi_LS_bkg   ->Fill(P_e2.Phi(),  GetPreTagEvtWeight());
	    } */
    } 
    fHistConvreco_N_LS_bkg ->Fill(fBkgPhotonConv->GetEntries(), GetPreTagEvtWeight()); 


    
}

//____________________________________________________________________

void AtlConvFinder::SetCutDefaults() {
    //
    // Selection cut defaults and Constraint parameters
    //
    
    // Cuts for Tracks  
    fSignale_Pt_min       =  0.0;      // Min. Pt of signal electrons
    fSignale_Pt_max       =  1.e10;    // Max. Pt of signal electrons
    fSignale_Eta_min      = -2.5;      // Min. eta of signal electrons
    fSignale_Eta_max      =  2.5;      // Max. eta of signal electrons

    fm_e                    = 0.000510998910;  // Electron mass hypothesis
}


//____________________________________________________________________


void AtlConvFinder::PrintCutValues(){
        
    if ( fMode == kKinFit ){
	cout << endl << " Used mode: kKinFit";
	cout << endl << " ----------------------------------------------" << endl;
	cout << " Used CutDefaults:" <<endl;
	cout << " ----------------------------------------------" << endl;
	cout << scientific << setprecision(3) << " Prob(Chi2/NDoF) > "
	     << fKinFitPvalue_min << endl;
	cout << scientific << setprecision(3) << " Pol Mass:  "
	     << fm_PolMass << endl;
	
    }
    else if (fMode == kCutBased)  {
	cout << endl << " Used mode: kCutBased " << endl;  
	cout << " ----------------------------------------------" << endl;
	cout << " Used CutDefaults:" <<endl;
	cout << " ----------------------------------------------" << endl;
	cout << scientific << "  M(Conv)   <  " << fConv_M_max << endl;
    }
    cout << scientific << "  e mass hypothesis: " 
	 << "  M_e = " << fm_e << endl;
    cout << scientific << setprecision(3) << "  " << fSignale_Pt_min <<
	" <  Pt(e)  < " << fSignale_Pt_max << endl;
    cout << scientific << " " << fSignale_Eta_min << " < Eta(e) < "
	 << fSignale_Eta_max << endl;
    cout << scientific << setprecision(3) << "  Min. of Matching Probability > "
	 << fMatchingProb_min << endl;
    cout << scientific
	 << "  Minimum of  Pointing Angle  = "
	 << fPointingAngle_min << endl
	 << "  Minimum of  transverse decay length  = "
	 << fTransvDecayLength_min << endl
	 << "  Minimumum of  Decay Angle (in K0s associated restframe  = "
	 << fDecayAngle_min << endl
	 << "  Minimum of R_Vtx = "
	 << fR_Vtx_min << endl;
    cout << "----------------------------------------------" << endl;

    
}

//____________________________________________________________________

Int_t AtlConvFinder::DoTruthMatch(AtlPhotonConv *ConvCandidate) {
    //
    // returns 1 in case of true Conv, -1 if not
    // returns 0 if no decision possible (see fMatchingProb_min)
    //

    AtlIDTrack *trk1 = ConvCandidate->GetePlus();
    AtlIDTrack *trk2 = ConvCandidate->GeteMinus();

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

    // Hitbased TruthMatching
    if( trk1->HasValidTruthMatch(fMatchingProb_min)
	&& trk2->HasValidTruthMatch(fMatchingProb_min)) {

	// remove "_bar" from particle name to collect antiparticle and particle in the same bin
	const char* fullPdgName = trk1->GetMCParticle()->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';
	}

	// Comparison with truth content
	if( (trk1->GetMCParticle()->GetPdgCode() == -11)
	    && (trk2->GetMCParticle()->GetPdgCode()== 11)
	    && (trk1->GetMCParticle()->GetMother()->GetPdgCode()== 22)
	    && (trk1->GetMCParticle()->GetMother() == trk2->GetMCParticle()->GetMother()) ){
	    fHistConvreco_truthtype->Fill(pdgName, ConvCandidate->GetProb(), GetPreTagEvtWeight());
	    return 1;
	}else{
	    if (trk1->GetMCParticle()->GetMother() != trk2->GetMCParticle()->GetMother()) {
		fHistConvreco_truthtype->Fill("Comb", ConvCandidate->GetProb(), GetPreTagEvtWeight());
	    } else {
		fHistConvreco_truthtype->Fill(pdgName, ConvCandidate->GetProb(), GetPreTagEvtWeight());
	    }
	    return -1;
	}
    }else{
	return 0;
    }

    return 0;
}


//____________________________________________________________________


void AtlConvFinder::FillHistograms_MCTruthStudy(AtlPhotonConv *ConvCandidate, char type) {
    // !!! key 'type' must be "s" for signal or "b" for background !!!
    // !!! routine could only be processed in case of a mc sample  !!!
    //
    // fills several histograms like pointing angle, invariant mass,
    // decay angle, ... separately for bkg and signal (Conv candiates that fulfill
    // the monte-carlo truth-matching as well as those that fail)
    
    TLorentzVector PConv,P_ePlus,P_eMinus;
    Float_t OpeningAngle  = 0.;
    Float_t DecayAngle    = 0.;
    Float_t PointingAngle = 0.;
    
    PConv   = ConvCandidate->P();
    P_ePlus  = ConvCandidate->GetReFitePlus().P();
    P_eMinus = ConvCandidate->GetReFiteMinus().P();

    // Opening Angle
    OpeningAngle = P_ePlus.Angle(P_eMinus.Vect());
    // FlightDirection
    TVector3 FlightDirection = (ConvCandidate->GetVtx())->GetPos();
    FlightDirection -= (fEvent->GetPrimaryVtx())->GetPos();
    PointingAngle = PConv.Angle(FlightDirection);
    // Decay Angle is the angle between Conv' momentum and the momentum of the e+
    // in K0s' restframe (since the restframe of gamma is not well defined)
    TLorentzVector RF;
    RF.SetVectM(PConv.Vect(),0.497);
    TVector3 boost = -RF.BoostVector();
    TLorentzVector P_trk1_RFK0s = P_ePlus; // looks like a bug? S. Stamm (was P_ePlus.P());
    P_trk1_RFK0s.Boost(boost); // boosting trks momentum in K0s restframe
    DecayAngle = TMath::Cos( PConv.Angle(P_trk1_RFK0s.Vect()) );

    // filling histograms // decay angle, N,  
    switch (type) {
	case 's':
	    fHistConvreco_m_MCsignal     ->Fill(ConvCandidate->M("REC")      ,GetPreTagEvtWeight());
	    fHistConvreco_pt_MCsignal    ->Fill(ConvCandidate->Pt()          ,GetPreTagEvtWeight());  
	    fHistConvreco_phi_MCsignal   ->Fill(ConvCandidate->Phi()         ,GetPreTagEvtWeight()); 
	    fHistConvreco_eta_MCsignal   ->Fill(ConvCandidate->Eta()         ,GetPreTagEvtWeight());
	    fHistConvreco_tau_MCsignal   ->Fill(ConvCandidate->GetLifeTime() ,GetPreTagEvtWeight());
	    fHistConvreco_DecayLength_MCsignal   ->Fill(ConvCandidate->GetTransvDecayLength(), GetPreTagEvtWeight());
	    fHistConvreco_PointingAngle_MCsignal ->Fill(TMath::Cos(PointingAngle),             GetPreTagEvtWeight());
	    fHistConvreco_OpeningAngle_MCsignal  ->Fill(OpeningAngle, GetPreTagEvtWeight());
	    fHistConvreco_DecayAngle_MCsignal    ->Fill(DecayAngle,   GetPreTagEvtWeight());
	    fHistConvreco_N_MCsignal             ->Fill(1,            GetPreTagEvtWeight());
	    fHistConvreco_R_vtx_MCsignal ->Fill(ConvCandidate->GetVtx()->GetPos().Perp(),      GetPreTagEvtWeight());
	    break;
	case 'b':
	    fHistConvreco_m_MCbkg     ->Fill(ConvCandidate->M("REC")      ,GetPreTagEvtWeight());
	    fHistConvreco_pt_MCbkg    ->Fill(ConvCandidate->Pt()          ,GetPreTagEvtWeight());  
	    fHistConvreco_phi_MCbkg   ->Fill(ConvCandidate->Phi()         ,GetPreTagEvtWeight()); 
	    fHistConvreco_eta_MCbkg   ->Fill(ConvCandidate->Eta()         ,GetPreTagEvtWeight());
	    fHistConvreco_tau_MCbkg   ->Fill(ConvCandidate->GetLifeTime() ,GetPreTagEvtWeight());
	    fHistConvreco_DecayLength_MCbkg   ->Fill(ConvCandidate->GetTransvDecayLength(),  GetPreTagEvtWeight());
	    fHistConvreco_PointingAngle_MCbkg ->Fill(TMath::Cos(PointingAngle),              GetPreTagEvtWeight());
	    fHistConvreco_OpeningAngle_MCbkg  ->Fill(OpeningAngle,  GetPreTagEvtWeight());
	    fHistConvreco_DecayAngle_MCbkg    ->Fill(DecayAngle,    GetPreTagEvtWeight());
	    fHistConvreco_N_MCbkg             ->Fill(1,             GetPreTagEvtWeight());
	    fHistConvreco_R_vtx_MCbkg ->Fill(ConvCandidate->GetVtx()->GetPos().Perp(),       GetPreTagEvtWeight());
	    break;
	default:
	    cout << endl << endl
		 <<"!!! Error using FillHistograms_MCTruthStudy(AtlConvDecayee*,char) in AtlConvFinder"
		 << endl << "Select either 's' or 'b' as key !!!"
		 << endl << endl;
	    break;
    }
}

//____________________________________________________________________

void AtlConvFinder::Terminate() {

    // print truth matching statistics
    fHistConvreco_truthtype->LabelsDeflate("X");
    fHistConvreco_truthtype->SetStats(kFALSE);
    fHistConvreco_truthtype->GetXaxis()->SetLabelSize(0.06);
    fHistConvreco_truthtype->GetXaxis()->LabelsOption("v");

    // Number of reconstructed Conversions and General Purity
    cout << endl << endl
	 << "NO. OF RECONSTRUCTED Conv':  " << fN_RecConv
	 << ", GENERAL PURITY:  " << ((Float_t)fN_TrueRecConv)/(Float_t)(fN_RecConv - fN_NoDecision)
	 << endl;

    AtlKinFitterTool::Terminate();
}

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