//___________________________________________________________
//
// Top Pair Event Finder
//
// This Finder is looking for events with top pairs whereas one W-boson decays leptonically
// ( W -> e nu, w-> mu nu ) and one decays hadronically ( W -> jj ). Reconstruction of the
// W-bosons and top-quarks is carried out by employing a kinematic fit.
//
// First, the finder makes sure that sufficient numbers of physics objects for the 
// reconstruction of a top pair are present in the event. This requires the following:
// 
//  - 4 jets
//  - 1 lepton
//
// Since there is no requirement concerning b-jets some special cases have to be taken into
// account:
//
//  - 0 b-jets in b-jet list:   b-jet list is replaced by jet list
//  - 1 b-jet in b-jet list:    b-jet list is replaced by jet list, if statement makes sure that
//                              the b-jet in the event is used for the b-jets of the candidates
//  - > 2 b-jets in b-jet list: list is kept as it is
//
// Because of the case with 1 b-jet in the list the information concerning the tagger (type 
// and cut weight) have to be given to the finder. This is not optimal and if someone has a
// solution it would be highly appreciated.
// 
// Now the top pair candidates are built by combining the contents of the lists (jet list, 
// b-jet list, lepton list). If-statements make sure that all candidates are unique. The evaluation
// of the candidates takes place and assigns a chi2 and a chi2 probability value to each candidate.
// All candidates that satisfy a certain chi2prob cut are recorded in the event and may be 
// accessed at a later point in the analysis via fEvent->GetTopPairs().
// The candidate with the lowest chi2 (the highest chi2 probability) is deemed to be best top pair of
// the event. It is stored in the variable fBestTopPair and may be obtained from the TopFinder via
// the GetBestTopPair() - method.
//
//
//
// When the AtlTopCommonObjectsTool is used, all of the required information is provided automatically.
// In order to do this you have to give a pointer of the AtlTopCommonObjectsTool itself to the top #
// finder. How this is done is illustrated in the AtlFlavorRatioAnalysis in libTTbar.
//
// The fitter will use the first n jets from the fJets list provided by the user. The number of jets n can be set
// by the user with fJets_N_Max. The default is 20 jets. Take care that the fJets list is sorted when forwarding them to the fitter.
//
//
//    Author: Felix Thomas <mailto:Felix.Thomas@mailbox.tu-dresden.de> 
//    Update: $Id: AtlTopPairFinder.cxx,v 1.26 2014/01/29 09:42:07 schlichte Exp $
//    Copyright: 2010 (C) Felix Thomas  
//
//
//
#ifndef ATLAS_AtlTopPairFinder
#include <AtlTopPairFinder.h>
#endif
#include <TH1F.h>
#include <TH2F.h>
#include <AtlEvent.h>
#include <TTree.h>
#include <TString.h>
#include <iostream>
#include <TROOT.h>
#include <TFile.h>
#include <cmath>

using namespace std;

#ifndef __CINT__
ClassImp(AtlTopPairFinder);
#endif

//___________________________________________________________

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

  fBestTopPair = 0;
  
  fLeptons     = 0;
  fBJets       = 0;
  fJets        = 0;
  fKinFitJets  = 0;

  fLepton      = 0;
  fNeutrino    = 0;
  fLepBJet     = 0;
  fHadBJet     = 0;
  fHadJet1     = 0;
  fHadJet2     = 0;

  fEtMissMag   = 0;
  fEtMissPhi   = 0;


  // Initialize covariance matrices
  cov_lep.ResizeTo(3,3);
  cov_nu.ResizeTo(3,3);
  cov_LepBJet.ResizeTo(3,3);
  cov_HadBJet.ResizeTo(3,3);
  cov_HadJet1.ResizeTo(3,3);
  cov_HadJet2.ResizeTo(3,3);

  cov_lep.Zero();
  cov_nu.Zero();
  cov_LepBJet.Zero();
  cov_HadBJet.Zero();
  cov_HadJet1.Zero();
  cov_HadJet2.Zero();

  fLeptonpull.ResizeTo(3,1);
  fNeutrinopull.ResizeTo(3,1);
  fLepbjetpull.ResizeTo(3,1);
  fHadjet1pull.ResizeTo(3,1);
  fHadjet2pull.ResizeTo(3,1);
  fHadbjetpull.ResizeTo(3,1);

  SetCutDefaults();

}

//___________________________________________________________

AtlTopPairFinder::~AtlTopPairFinder(){
  //
  // default destructor
  //

    //cout<<"TopPairFinder is deconstructed"<<endl;

  if ( fBJets      != 0 ) delete fBJets;
  if ( fKinFitJets != 0 ) delete fKinFitJets;
  if ( fNeutrino   != 0 ) delete fNeutrino;

  fBestTopPair = 0;

  fLepton   = 0;
  fLepBJet  = 0;
  fHadBJet  = 0;
  fHadJet1  = 0;
  fHadJet2  = 0;


}

//___________________________________________________________

void AtlTopPairFinder::SetBranchStatus() {
  //
  // Switch on needed branches
  //

  fTree->SetBranchStatus("fEventHeader*",               kTRUE);
  fTree->SetBranchStatus("fN_AntiKt4TopoEMJESJets*",    kTRUE);
  fTree->SetBranchStatus("fAntiKt4TopoEMJESJets*",      kTRUE);
  fTree->SetBranchStatus("fN_AntiKt4TopoEMJets*",       kTRUE);
  fTree->SetBranchStatus("fAntiKt4TopoEMJets*",         kTRUE);
  fTree->SetBranchStatus("fN_Electrons*",               kTRUE);
  fTree->SetBranchStatus("fElectrons*",                 kTRUE);
  fTree->SetBranchStatus("fN_Muons*",                   kTRUE);
  fTree->SetBranchStatus("fMuons*",                     kTRUE);
  fTree->SetBranchStatus("fEnergySum*",                 kTRUE);
  fTree->SetBranchStatus("fWDecaysLNu*",                kTRUE);
  fTree->SetBranchStatus("fN_WDecaysLNu*",              kTRUE);
  fTree->SetBranchStatus("fWDecaysJJ*",                 kTRUE);
  fTree->SetBranchStatus("fN_WDecaysJJ*",               kTRUE);
  fTree->SetBranchStatus("fTopDecays*",                 kTRUE);
  fTree->SetBranchStatus("fN_TopDecays*",               kTRUE);
  fTree->SetBranchStatus("fTrigger*",                   kTRUE);
  fTree->SetBranchStatus("fTopPairs*",                  kTRUE);
}

//___________________________________________________________

void AtlTopPairFinder::SetCutDefaults() {
    //
    // Selection cut defaults
    //
    
    // Define when the finder runs and how
    fProcessMode = AtlAnalysisTool::kMainAnalysis;
    fTmassconstraint = AtlTopPairFinder::kFixedTmass;
    fMinChi2Prob = 0.001;
    
    fIsFwdElectronMode = kFALSE;
    
    // Histogram filling mode
    fAlwaysFillHistos = kFALSE;
    
    // compute maximum chi2 for histograms
    Int_t dof = 0;
    
    if (fTmassconstraint == kFixedTmass)   dof = 3;
    else if (fTmassconstraint == kSameTmass)    dof = 4;
    
    for (Double_t f = 0; f < 100; f += 0.1){
	if (TMath::Prob(f, dof) < fMinChi2Prob){
	    fMaxChi2 = f;
	    break;
	}
    }  
    
    
    // ======================
    // Pole masses and widths
    // ======================

    fW_Mass   = 80.385;// <-- +-0.015 online PDG value 2012 
    fW_Width  = 2.085;// <-- +- 0.042 online PDG value 2012
    fTop_Mass = 173.5;// <-- +-0.6 +-0.8 (direct measurements) online PDG value 2012
    fTop_Width = 2.0; // <-- +0.7-0.6  online PDG value 2012;  quite uncertain, not measured, depends on mass
    
  
    // fBJets                                                  
    fBJetTagger        = AtlBTag::kMV1;
    fBJetWeightMin     = 0.905363;         
    fIterMax	       = 200;
    
    fApplyBTagInReco   = kTRUE;        
    fBJets_N_Min       = 1;
    fBJets_N_Min_InHadCombo = 0;
    fJets_N_Max        = 20;
    fQuietMode         = kFALSE; 
}

//___________________________________________________________

void AtlTopPairFinder::Clear(){
 //
 //  Clears the dynamically allocated objects
 //

  if ( fKinFitJets != 0 ){
    delete fKinFitJets;
    fKinFitJets = 0;
  }

  if ( fBJets != 0 ){
    delete fBJets;
    fBJets = 0;      
  }

  if ( fNeutrino != 0 ){
    delete fNeutrino;
    fNeutrino = 0;
  }

  fBestTopPair = 0;

}

//___________________________________________________________

void AtlTopPairFinder::BookHistograms(){
  //
  // Book histograms (after kinematic fit)
  //

  fHistNbIterAll = new TH1F("h_NbIterAll",
			      "No. of Iterations for all Fitting Procedures",
			      25, 0, 250);
  fHistNbIterAll->SetXTitle("# Iterations");
  fHistNbIterAll->SetYTitle("# fitting procedures");
  
  fHistNbIterConv = new TH1F("h_NbIterConv",
			       "No. of Iterations for converged Fitting Procedures",
			       25, 0, 250);
  fHistNbIterConv->SetXTitle("# Iterations");
  fHistNbIterConv->SetYTitle("# fitting procedures");

  fHistNTopPairs = new TH1F("h_NTopPairs",
			       "No. Top Pairs reconstructed in the event",
			       50, 0, 50);
  fHistNTopPairs->SetXTitle("# Top Pairs");
  fHistNTopPairs->SetYTitle("# Events");

  fHistNTopPairCandidates = new TH1F("h_NTopPairCandidates",
			       "No. Top Pair Candidates in the event",
			       300, 0, 300);
  fHistNTopPairCandidates->SetXTitle("# Top Pair Candidates");
  fHistNTopPairCandidates->SetYTitle("# Events");

  fHistTopPairsVsCandidates = new TH2F("h_toppairsvscandidates", "No of reconstructed Top Pairs vs Top Pair Candidates in the Event",
                                        300,0,300,50,0,50);
  fHistTopPairsVsCandidates->SetXTitle("# Top Pair Candidates");
  fHistTopPairsVsCandidates->SetYTitle("# Top Pairs");
  fHistTopPairsVsCandidates->SetZTitle("# Events");

  fHistChi2VsCandidates = new TH2F("h_chi2vscandidates", "Best Chi2 vs Top Pair Candidates in the Event",
                                        300,0,300,20,0,fMaxChi2);
  fHistChi2VsCandidates->SetXTitle("# Top Pair Candidates");
  fHistChi2VsCandidates->SetYTitle("# Chi2");
  fHistChi2VsCandidates->SetZTitle("# Events");

  fHistChi2ProbVsCandidates = new TH2F("h_chi2probvscandidates", "Best Chi2Prob vs Top Pair Candidates in the Event",
                                        300,0,300,20,0,1);
  fHistChi2ProbVsCandidates->SetXTitle("# Top Pair Candidates");
  fHistChi2ProbVsCandidates->SetYTitle("# Chi2Prob");
  fHistChi2ProbVsCandidates->SetZTitle("# Events");

  fHistSimpleChi2VsChi2 = new TH2F("h_simplechi2vschi2", "Simple Chi2 vs. Chi2 of all top pair candidates in the event",
                                        100,0,fMaxChi2,100,0,fMaxChi2);
  fHistSimpleChi2VsChi2->SetXTitle("Simple Chi2");
  fHistSimpleChi2VsChi2->SetYTitle("Chi2");
  fHistSimpleChi2VsChi2->SetZTitle("# Candidates ");



  fAllTopPairDocumenter = new AtlTopPairDocumenter("all", "all", fOutputFile, "TopPairs_all");
  fElectronChannelTopPairDocumenter = new AtlTopPairDocumenter("electron", "electron", fOutputFile, 
                                                               "TopPairs_electron");
  fMuonChannelTopPairDocumenter = new AtlTopPairDocumenter("muon", "muon", fOutputFile,
                                                           "TopPairs_muon");
  
}

//___________________________________________________________

Bool_t AtlTopPairFinder::AnalyzeEvent() {
    //
    // Event analysis
    //
    //cout<<"TopPairFinder: AnalyzeEvent"<<endl;
    
    // Initialize the current event
    InitEvent();
    
    fNTopPairCandidates = 0;
    fBestChi2Prob = fMinChi2Prob;
  
    //
    // Check the requirements for the reconstruction
    //
    
    if ( !fAlwaysFillHistos ) {
     	if (fQuietMode == kTRUE) return kFALSE;
    }
    
    if (fKinFitJets->GetEntries() < 4 || fKinFitJets->GetEntries() > fJets_N_Max || fLeptons->GetEntries() < 1) return kFALSE;
    
    // Split analysis on jet-electrons into events with signal electrons that
    // are forward and central
    HepParticle *lepton = (HepParticle*)fLeptons->At(0);
  if ( (lepton->IsElectron()) && fUseLeptonCovRand ) {
      Float_t lep_eta_abs = TMath::Abs(lepton->Eta());
      if ( ( ( lep_eta_abs < 1.5) && fIsFwdElectronMode ) ||
	   ( ( lep_eta_abs >= 1.5) && !fIsFwdElectronMode ) )
	  return kFALSE;
  }
  
  
  if (fApplyBTagInReco == kTRUE && fBJets->GetEntries() < fBJets_N_Min) return kFALSE;
  
  if (fBJets->GetEntries() == 0 || fApplyBTagInReco == kFALSE){
      ReconstructionKinFit(fLeptons, fKinFitJets, fKinFitJets, fKinFitJets, fKinFitJets);}
  else if (fBJets->GetEntries() == 1){
    ReconstructionKinFit(fLeptons, fBJets, fKinFitJets, fKinFitJets, fKinFitJets);
    ReconstructionKinFit(fLeptons, fKinFitJets, fKinFitJets, fKinFitJets, fBJets);      
  }
  else{
    ReconstructionKinFit(fLeptons, fBJets, fKinFitJets, fKinFitJets, fBJets);     
  }
  return kTRUE;
}

//___________________________________________________________

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

  // ======
  // Etmiss
  // ======
  
  fEtMissMag = fEtMiss.Mod();
  fEtMissPhi = TVector2::Phi_mpi_pi((Double_t)fEtMiss.Phi());
  
  // Initialize jets for kinematic fit if not done already
  fKinFitJets = new TList();
  fBJets = new TList();		

  if( fVerbosityLevel==2 ) Info("InitEvent", "Got %d Jets", fJets->GetEntries() );

  TObjLink *lnk = fJets->FirstLink();
  AtlJet* jet = 0;
  TIter next_jet(fJets);

  if( fVerbosityLevel==2 ){
      Info("InitEvent", "fJetList \n" );
      while ( (jet=(AtlJet*)next_jet()) ) {
	  jet->Print();
      }
  }
  
  int n = 0;
  if( fVerbosityLevel==2 ) Info("InitEvent", "fKinFitJetList \n" );
  while ( lnk && n < fJets_N_Max ) {
      jet = (AtlJet*)lnk->GetObject();
      lnk = lnk->Next();
      fKinFitJets->Add(jet);
      //jet->Print();
      if ( jet->GetTag(fBJetTagger)->GetWeight() > fBJetWeightMin){
	  fBJets->Add(jet);
      }
      n++;      
  }

  if( fVerbosityLevel==2 ) Info("InitEvent", "Got %d KinFitter Jets", fKinFitJets->GetEntries() );
  
  fNeutrino = new HepParticle(1, 0., 0., 1., 0., 12);
  
  fNeutrino->SetPtEtaPhiE(fEtMissMag,
			  0.,
			  fEtMissPhi,
			  fEtMissMag);
}

//___________________________________________________________

void AtlTopPairFinder::ReconstructionKinFit(TList* Leptons, TList* LepBJets, TList* HadJets1, TList* HadJets2, TList* HadBJets) {


    //cout<<"TopPairFinder reconstructs kinfit"<<endl;
    
  //
  // Top Pair leptonic channel event reconstruction (semi-leptonic)
  //
  // --> loop over all lepton and bjet combinations
  // --> perform the fit
  // --> select the combination with the greatest chi2prob as candidate 
  //     for a signal event
  //
  // Use fMinChi2Prob as starting value for chi2prob,
  // reconstruction successfull if chi2prob gets bigger
    Double_t Chi2Prob = 0;
  Double_t SimpleChi2 = 0;
  AtlTopPair* toppair = 0;
  
  // Declaring variables for best fit storage in the loop
  TLorentzVector P_lep_refit;
  HepParticle* LeptonOrig = 0;
  TLorentzVector P_nu_refit;
  HepParticle* BestNeutrino = 0;
  TLorentzVector P_HadJet1_refit;
  AtlJet* HadJet1Orig = 0;
  TLorentzVector P_HadJet2_refit;
  AtlJet* HadJet2Orig = 0;
  TLorentzVector P_LepBJet_refit;
  AtlJet* LepBJetOrig = 0;
  TLorentzVector P_HadBJet_refit;
  AtlJet* HadBJetOrig = 0;

  // ==============================================
  // Loop over all combinations of leptons and bjets
  // ==============================================

  // Initializing links for the iteration of the lists
  TObjLink *LeptonLink  = Leptons->FirstLink();
  TObjLink *LepBJetLink = LepBJets->FirstLink();
  TObjLink *HadJet1Link = HadJets1->FirstLink();
  TObjLink *HadJet2Link = HadJets2->FirstLink();
  TObjLink *HadBJetLink = HadBJets->FirstLink();

  // Loop over all leptons
  while( LeptonLink ) {
      fLepton = (HepParticle*)LeptonLink->GetObject();
      LeptonLink = LeptonLink->Next();
      
      
      // Loop over all Jets
      HadJet1Link = HadJets1->FirstLink();
      while( HadJet1Link ) {
	  fHadJet1 = (AtlJet*)HadJet1Link->GetObject();
	  HadJet1Link = HadJet1Link->Next();
	  
	  // HadJet2Link is set to the position that HadJet1Link is pointing to
	  // This is done in order to avoid that the same jet is used for both
	  // jets in the fitting routine and in order to speed up calculation
	  
	  HadJet2Link = HadJet1Link;                         
	  while( HadJet2Link ) {
	      fHadJet2 = (AtlJet*)HadJet2Link->GetObject();
	      HadJet2Link = HadJet2Link->Next(); 
	      
	      // Looping over all bjets for the leptonic decay
	      LepBJetLink = LepBJets->FirstLink();
	      while( LepBJetLink ) {
		  fLepBJet = (AtlJet*)LepBJetLink->GetObject();
		  LepBJetLink = LepBJetLink->Next();
		  
		  // Avoid using the same BJet
		  if ( (fLepBJet->P() == fHadJet1->P()) ||
		       (fLepBJet->P() == fHadJet2->P()) ) {
		      continue;
		  }
		  
		  // Setting the kinematic variables for the neutrino
		  Double_t NuEta = 0;
		  Double_t NuE   = 0;
		  GuessTopDecayNeutrinoEtaE(NuEta, NuE, fEtMiss, fLepton, fLepBJet);
		  fNeutrino->SetPtEtaPhiE(NuE/TMath::CosH(NuEta), NuEta, fNeutrino->Phi(), NuE);
		  
		  // Looping over all bjets for the hadronic decay
		  HadBJetLink = HadBJets->FirstLink();
		  while( HadBJetLink ) {
		      fHadBJet = (AtlJet*)HadBJetLink->GetObject();
		      HadBJetLink = HadBJetLink->Next();
		      
		      // Avoiding using the same bjet
		      if ( (fHadBJet->P() == fHadJet1->P()) ||
			   (fHadBJet->P() == fHadJet2->P()) ||
			   (fHadBJet->P() == fLepBJet->P()) ){
			  continue;
		      }

		      if ( fBJets_N_Min_InHadCombo > 0 ) {
			  int taggedJetsInHadCombo = 0; 
			  AtlJet* fitjets[3] = {fHadJet1,fHadJet2,fHadBJet};
			  for( int hadjet=0; hadjet<3; ++hadjet ) {
			      if ( fitjets[hadjet]->GetTag(fBJetTagger)->GetWeight() > fBJetWeightMin ){
				  taggedJetsInHadCombo++;
			      }
			  }
			  if ( taggedJetsInHadCombo < fBJets_N_Min_InHadCombo ) continue;
		      }
		      SimpleChi2 = (pow(((fHadBJet->P() + fHadJet1->P() + fHadJet2->P()).M() - fTop_Mass)/fTop_Width,2) + 	    
				    pow(((fLepBJet->P() + fLepton->P() + fNeutrino->P()).M() - fTop_Mass)/fTop_Width,2) + 
				    pow(((fHadJet1->P() + fHadJet2->P()).M() - fW_Mass)/fW_Width,2) + 
				    pow(((fLepton->P() + fNeutrino->P()).M() - fW_Mass)/fW_Width,2))/25.;
		      
		      // ================================================
		      // Perform the fit and increment candidates counter
		      // ================================================
		      
		      DoFit();
		      fNTopPairCandidates++;
		      
		      // if fit fails because of bad chi2 or invalid covariance matrix the number of iterations
		      // is not recorded 
		      if (fKinFitter->getStatus() != -1) {
			  fHistNbIterAll->Fill(fKinFitter->getNbIter());
		      }
		      // Did KinFitter converge ? ("0" means "yes")

		      if ( (fKinFitter->getStatus() != 0) ||
			   (TMath::Prob(fKinFitter->getS(), fKinFitter->getNDF()) < fMinChi2Prob) ){ 
			  continue;
		      }
		      fHistNbIterConv->Fill(fKinFitter->getNbIter());
	        
		      SetChi2(fKinFitter->getS());
		      SetNDoF(fKinFitter->getNDF());
		      fHistSimpleChi2VsChi2->Fill(SimpleChi2, fKinFitter->getS(), GetTagEvtWeight());
		      Chi2Prob = TMath::Prob(fKinFitter->getS(), fKinFitter->getNDF());
		      
		      // Is the Chi2 smaller than that of the previous fit?
		      if (Chi2Prob < fBestChi2Prob) continue;
		      
		      // Set the correct neutrino type w.r.t. the lepton
		      if ( fLepton->IsEPlus() ) {
			  fNeutrino->SetPdgCode(12);
		      } 
		      else if ( fLepton->IsEMinus()   ) {
			  fNeutrino->SetPdgCode(-12);
		      } 
		      else if ( fLepton->IsMuPlus()   ) {
			  fNeutrino->SetPdgCode(14);
		      } 
		      else if ( fLepton->IsMuMinus()  ) {
			  fNeutrino->SetPdgCode(-14);
		      } 
		      else if ( fLepton->IsTauPlus()  ) {
			  fNeutrino->SetPdgCode(16);
		      } 
		      else if ( fLepton->IsTauMinus() ) {
			  fNeutrino->SetPdgCode(-16);
		      }
		      
		      // Get the improved 4-momenta of the outgoing particles (temporary storage)
		      P_lep_refit  = *(((TAbsFitParticle*)fKinFitter->getParticle(0))->getCurr4Vec());
		      LeptonOrig = fLepton;
		      
		      P_nu_refit   = *(((TAbsFitParticle*)fKinFitter->getParticle(1))->getCurr4Vec());
		      BestNeutrino = fNeutrino;
		      
		      P_LepBJet_refit = *(((TAbsFitParticle*)fKinFitter->getParticle(2))->getCurr4Vec());
		      LepBJetOrig = fLepBJet;
		      
		      P_HadJet1_refit  = *(((TAbsFitParticle*)fKinFitter->getParticle(3))->getCurr4Vec());
		      HadJet1Orig = fHadJet1;
		      
		      P_HadJet2_refit  = *(((TAbsFitParticle*)fKinFitter->getParticle(4))->getCurr4Vec());
		      HadJet2Orig = fHadJet2;
		      
		      P_HadBJet_refit  = *(((TAbsFitParticle*)fKinFitter->getParticle(5))->getCurr4Vec());
		      HadBJetOrig = fHadBJet;
		      
		      // =============================================================
		      // Add newly reconstructed particles/decays to the current event
		      // =============================================================
		      
		      // Add neutrino
		      HepParticle *nu_refit = fEvent->AddNeutrino(P_nu_refit.Px(), P_nu_refit.Py(),
								  P_nu_refit.Pz(), P_nu_refit.E(),
								  BestNeutrino->GetPdgCode());
		      
		      // Add leptonic W decay
		      TLorentzVector P_WLNu = P_lep_refit + P_nu_refit;
		      HepWDecay *WdecayLNu = fEvent->AddWDecayLNu(P_WLNu.Px(), P_WLNu.Py(),
								  P_WLNu.Pz(), P_WLNu.E(),
								  LeptonOrig,
								  P_lep_refit.Px(), P_lep_refit.Py(),
								  P_lep_refit.Pz(), P_lep_refit.E(),
								  nu_refit,HepWDecay::kTTBar);
		      WdecayLNu->SetChi2NDoF(GetChi2(), GetNDoF());
            
            
		      // Add leptonic top decay
		      TLorentzVector P_toplep = P_WLNu + P_LepBJet_refit;
		      HepTopDecay *toplepdecay = fEvent->AddTopDecay(P_toplep.Px(), P_toplep.Py(), 
								     P_toplep.Pz(), P_toplep.E(), 
								     WdecayLNu, LepBJetOrig,
								     P_LepBJet_refit.Px(), P_LepBJet_refit.Py(),
								     P_LepBJet_refit.Pz(), P_LepBJet_refit.E(), 
								     HepTopDecay::kTTBar);
		      
		      toplepdecay->SetChi2NDoF(GetChi2(), GetNDoF() );
		      
		      // Add hadronic W decay
		      TLorentzVector P_WJJ = P_HadJet1_refit + P_HadJet2_refit;
		      HepWDecay *WdecayJJ = fEvent->AddWDecayJJ(P_WJJ.Px(), P_WJJ.Py(),
                                                      P_WJJ.Pz(), P_WJJ.E(),
								HadJet1Orig, HadJet2Orig,
								P_HadJet1_refit.Px(), P_HadJet1_refit.Py(),
								P_HadJet1_refit.Pz(), P_HadJet1_refit.E(),
								P_HadJet2_refit.Px(), P_HadJet2_refit.Py(),
								P_HadJet2_refit.Pz(), P_HadJet2_refit.E(),
								HepWDecay::kTTBar);
		      WdecayJJ->SetChi2NDoF(GetChi2(), GetNDoF() );
		      
		      // Add hadronic top decay
		      TLorentzVector P_tophad = P_WJJ + P_HadBJet_refit;
		      HepTopDecay *tophaddecay = fEvent->AddTopDecay(P_tophad.Px(), P_tophad.Py(), 
								     P_tophad.Pz(), P_tophad.E(), 
								     WdecayJJ, HadBJetOrig,
								     P_HadBJet_refit.Px(), P_HadBJet_refit.Py(),
								     P_HadBJet_refit.Pz(), P_HadBJet_refit.E(), 
								     HepTopDecay::kTTBar);
            
		      tophaddecay->SetChi2NDoF(GetChi2(), GetNDoF() );
		      
		      toppair = fEvent->AddTopPair(toplepdecay, tophaddecay, GetChi2(), GetNDoF(), AtlTopPair::kSemiLeptonic);
	    
		      toppair->SetPullMatrices(fLeptonpull, fNeutrinopull, fLepbjetpull, 
					       fHadjet1pull, fHadjet2pull, fHadbjetpull);
          
		      if ( toppair->GetChi2Prob() > fBestChi2Prob){
			  fBestTopPair = toppair;
			  fBestChi2Prob = fBestTopPair->GetChi2Prob();
		      }
            
		  } // end of hadronic bjet loop
	      } // end of leptonic bjet loop
	  } // end of second hadronic jet loop
      } // end of first hadronic jet loop
  } // end of charged lepton loop
}

//___________________________________________________________

void AtlTopPairFinder::DoFit() {
  //
  // Perform the kinematic fit for the current charged lepton,
  // neutrino and b-jet combination
  //

  // Initialize pull matrices
  fLeptonpull.Zero();  
  fNeutrinopull.Zero();
  fLepbjetpull.Zero();  
  fHadjet1pull.Zero();  
  fHadjet2pull.Zero();  
  fHadbjetpull.Zero();  
    
  // Re-set and init fitter
  fKinFitter->reset();
  fKinFitter->setMaxNbIter(fIterMax);    // maximum number of iterations
  fKinFitter->setMaxDeltaS(5.e-5);  // maximum deviation of the minimum function
                                    // within two iterations
  fKinFitter->setMaxF(1.e-4);       // maximum value of constraints
  fKinFitter->setVerbosity(0);      // verbosity level

  if ( fUseLeptonCovRand )
      // Get its covariance matrix
      AtlKinFitterTool::GetLeptonCovMatRand(fLepton,cov_lep);
  else
      // Get its covariance matrix
      fLepton->GetCovMatrixPtEtaPhi(cov_lep);
  
  // Preliminary correlation values for missing Et
  SetCovMatrix(cov_nu, fNeutrino);
  
  // Preliminary correlation values for b-jets
  SetCovMatrix(cov_LepBJet, fLepBJet);
  SetCovMatrix(cov_HadBJet, fHadBJet);
  
  // Preliminary correlation values for jets
  SetCovMatrix(cov_HadJet1, fHadJet1);
  SetCovMatrix(cov_HadJet2, fHadJet2);

  // As the covariance matrix of the EtMiss sometimes has 0 for the variance of the
  // Et (which makes the fit somewhat suspicious ) this is tested and cases where it 
  // arises are discarded  
  if (cov_nu[0][0] == 0){
    Error("DoFit",
  	  "Variance of Transverse Energy of Neutrino is 0! Candidate discarded.");
    fKinFitter->resetStatus();
    return;  
  }

  // =============
  // Get 3-momenta
  // =============

  TVector3 p3_lepton   = TVector3(fLepton->P3());
  TVector3 p3_neutrino = TVector3(fNeutrino->P3());
  TVector3 p3_LepBJet  = TVector3(fLepBJet->P3());
  TVector3 p3_HadJet1  = TVector3(fHadJet1->P3());
  TVector3 p3_HadJet2  = TVector3(fHadJet2->P3());
  TVector3 p3_HadBJet  = TVector3(fHadBJet->P3());
  
  // ================
  // Define particles
  // ================

  // Necessary for execution of the fit
  TFitParticlePtEtaPhi   KinFit_lepton ("KinFit_lepton", "Charged lepton", &p3_lepton, fLepton->Mass("PDG"), &cov_lep);
  TFitParticlePtThetaPhi KinFit_nu     ("KinFit_nu", "Neutrino", &p3_neutrino, 0., &cov_nu);
  TFitParticlePtEtaPhi   KinFit_LepBJet("KinFit_LepBJet", "LepBJet", &p3_LepBJet, 4.5, &cov_LepBJet); // use B mass
  TFitParticlePtEtaPhi   KinFit_HadJet1("KinFit_HadJet1", "HadJet1", &p3_HadJet1, 0, &cov_HadJet1);
  TFitParticlePtEtaPhi   KinFit_HadJet2("KinFit_HadJet2", "HadJet1", &p3_HadJet2, 0, &cov_HadJet2);
  TFitParticlePtEtaPhi   KinFit_HadBJet("KinFit_HadBJet", "HadBJet", &p3_HadBJet, 4.5, &cov_HadBJet); // use B mass
  
  
  
  // Add particles to fitter
  fKinFitter->addMeasParticle(&KinFit_lepton);
  fKinFitter->addMeasParticle(&KinFit_nu);
  fKinFitter->setParamUnmeas(&KinFit_nu, 1); // eta (component 1) of neutrino unmeasured
  fKinFitter->addMeasParticle(&KinFit_LepBJet);
  fKinFitter->addMeasParticle(&KinFit_HadJet1);
  fKinFitter->addMeasParticle(&KinFit_HadJet2);
  fKinFitter->addMeasParticle(&KinFit_HadBJet);


  // ==================
  // Define Constraints
  // ==================
  // Definition of top-quark and W-boson mass constraints

  // W-boson mass constraint
  TFitConstraintMGaus ConstraintLepM_W("WMassConstraint Leptonic", "WMassConstraintGaus Leptonic", 
                                        0, 0, fW_Mass, fW_Width);
  TFitConstraintMGaus ConstraintHadM_W("WMassConstraint Hadronic", "WMassConstraintGaus Hadronic",
                                        0, 0, fW_Mass, fW_Width);
  
  ConstraintLepM_W.addParticles1(&KinFit_lepton, &KinFit_nu);
  ConstraintHadM_W.addParticles1(&KinFit_HadJet1, &KinFit_HadJet2);
  
  fKinFitter->addConstraint(&ConstraintLepM_W);
  fKinFitter->addConstraint(&ConstraintHadM_W);
  

  // Same top mass fit constraint
  TFitConstraintM ConstraintM_t( "MassConstraint Tops", "Mass-Constraint Tops", 0, 0, 0.);
  ConstraintM_t.addParticles1(&KinFit_lepton, &KinFit_nu, &KinFit_LepBJet);
  ConstraintM_t.addParticles2(&KinFit_HadJet1, &KinFit_HadJet2, &KinFit_HadBJet);

  // fixed top mass fit constraint
  TFitConstraintMGaus ConstraintLepM_t( "MassConstraint Tops", "Mass-Constraint Tops",
                                        0, 0, fTop_Mass, fTop_Width);
  TFitConstraintMGaus ConstraintHadM_t( "MassConstraint Tops", "Mass-Constraint Tops",
                                        0, 0, fTop_Mass, fTop_Width);
  ConstraintLepM_t.addParticles1(&KinFit_lepton, &KinFit_nu, &KinFit_LepBJet);
  ConstraintHadM_t.addParticles1(&KinFit_HadJet1, &KinFit_HadJet2, &KinFit_HadBJet);
  
  // setting which constraint is used
  if ( fTmassconstraint == kSameTmass){
    fKinFitter->addConstraint(&ConstraintM_t);
  }
  else if ( fTmassconstraint == kFixedTmass ){
    fKinFitter->addConstraint(&ConstraintLepM_t);
    fKinFitter->addConstraint(&ConstraintHadM_t);
  }
  else{
    Error("DoFit",
    "No valid mass constraint given. Abort!");
      
  }
  
  
  // =========================
  // Perform Kinematic Fitting 
  // =========================

  fKinFitter->fit();
  
  //
  // Get pull values ( pull := [value(fit) - value(initial)] / sqrt[variance of corrections] )
  //
  fLeptonpull   = *((TMatrixD*)((TAbsFitParticle*)fKinFitter->getParticle(0))->getPull());
  fNeutrinopull = *((TMatrixD*)((TAbsFitParticle*)fKinFitter->getParticle(1))->getPull());
  fLepbjetpull  = *((TMatrixD*)(((TAbsFitParticle*)fKinFitter->getParticle(2))->getPull()));
  fHadjet1pull  = *((TMatrixD*)(((TAbsFitParticle*)fKinFitter->getParticle(3))->getPull()));
  fHadjet2pull  = *((TMatrixD*)(((TAbsFitParticle*)fKinFitter->getParticle(4))->getPull()));
  fHadbjetpull  = *((TMatrixD*)(((TAbsFitParticle*)fKinFitter->getParticle(5))->getPull()));

  
  // Fitting okay ?
  if ( fKinFitter->getS() < 0. ) {
    Error("DoFit",

	  "Chi2 negative!!! Possibly bad input of covariance matrices. FitStatus set to not converged!");
      fKinFitter->resetStatus();
      return;
  }
}

//___________________________________________________________

void AtlTopPairFinder::FillHistograms() {

  //
  // Method for filling histograms, only events that survive 
  // AnalyzeEvent() are taken into account
  //
  
  // Check if 2 top decays labeled as ttbar are available
  if ( fBestTopPair == 0 ) return;
  
  fHistNTopPairs->Fill(fEvent->GetN_TopPairs(), GetTagEvtWeight());
  fHistNTopPairCandidates->Fill(fNTopPairCandidates, GetTagEvtWeight());
  
  fHistTopPairsVsCandidates->Fill(fNTopPairCandidates, fEvent->GetN_TopPairs(), GetTagEvtWeight());
  fHistChi2ProbVsCandidates->Fill(fNTopPairCandidates, fBestTopPair->GetChi2Prob(), GetTagEvtWeight());
  fHistChi2VsCandidates->Fill(fNTopPairCandidates, fBestTopPair->GetChi2(), GetTagEvtWeight());
 
  // Get lepton from reconstruction
  HepParticle* Lepton = 0;
  Lepton = ((AtlWDecayLNu*)((HepTopDecay*)fBestTopPair->GetLeptonicTop())->GetWDecay())->GetChargedLeptonOrig();  
    
  // Invoking procedures for filling histograms
  fAllTopPairDocumenter->Document(fBestTopPair, &fEtMiss, GetTagEvtWeight());
  if (Lepton->IsElectron()) fElectronChannelTopPairDocumenter->Document(fBestTopPair, &fEtMiss, GetTagEvtWeight());
  else if (Lepton->IsMuon()) fMuonChannelTopPairDocumenter->Document(fBestTopPair, &fEtMiss, GetTagEvtWeight());
  
}

//___________________________________________________________

void AtlTopPairFinder::Print() const {
    //
    // Print configuration of tool
    //
    
    cout << endl
	 << "========================================================" << endl
	 << "  Top Pair Finder Tool                                  " << endl
	 << "========================================================" << endl
	 << "  fProcessMode               = " << GetProcessModeName(fProcessMode) << endl
	 << "--------------------------------------------------------" << endl
	 << "  fIterMax                   = " << fIterMax  << endl
	 << "  fQuietMode                 = " << fQuietMode            << endl
	 << "  fUseLeptonCovRand          = " << ( (fUseLeptonCovRand) ? "kTRUE" : "kFALSE" ) << endl;
    if ( fUseLeptonCovRand )
	cout
	    << "  fIsFwdElectronMode         = " << ( (fIsFwdElectronMode) ? "kTRUE" : "kFALSE" ) << endl;
    cout
	 << "  fAlwaysFillHistos          = " << ( ( fAlwaysFillHistos == kTRUE ) ?
	                                         "kTRUE" : "kFALSE" )            << endl
	 << "  fTmassconstraint           = " << ( (fTmassconstraint == AtlTopPairFinder::kFixedTmass) ?
						   "kFixedTmass" : "kSameTmass" ) << endl
	 << "  fW_Mass                    = " << fW_Mass               << endl
	 << "  fW_Width                   = " << fW_Width              << endl
	 << "  fTop_Mass                  = " << fTop_Mass             << endl
	 << "  fTop_Width                 = " << fTop_Width            << endl
	 << "  fMinChi2Prob               = " << fMinChi2Prob          << endl
	 << "  fJets_N_Max                = " << fJets_N_Max           << endl
	 << "--------------------------------------------------------" << endl
	 << "  fBJetTagger                = " << AtlBTag::GetTaggerName(fBJetTagger)     << endl
	 << "  fBJetWeightMin             = " << fBJetWeightMin        << endl
	 << "  fBJets_N_Min               = " << fBJets_N_Min          << endl
	 << "========================================================" << endl
	 << endl;

}

//___________________________________________________________

void AtlTopPairFinder::Terminate(){

 //
 // Executed at the end of the tool
 //

}

 AtlTopPairFinder.cxx:1
 AtlTopPairFinder.cxx:2
 AtlTopPairFinder.cxx:3
 AtlTopPairFinder.cxx:4
 AtlTopPairFinder.cxx:5
 AtlTopPairFinder.cxx:6
 AtlTopPairFinder.cxx:7
 AtlTopPairFinder.cxx:8
 AtlTopPairFinder.cxx:9
 AtlTopPairFinder.cxx:10
 AtlTopPairFinder.cxx:11
 AtlTopPairFinder.cxx:12
 AtlTopPairFinder.cxx:13
 AtlTopPairFinder.cxx:14
 AtlTopPairFinder.cxx:15
 AtlTopPairFinder.cxx:16
 AtlTopPairFinder.cxx:17
 AtlTopPairFinder.cxx:18
 AtlTopPairFinder.cxx:19
 AtlTopPairFinder.cxx:20
 AtlTopPairFinder.cxx:21
 AtlTopPairFinder.cxx:22
 AtlTopPairFinder.cxx:23
 AtlTopPairFinder.cxx:24
 AtlTopPairFinder.cxx:25
 AtlTopPairFinder.cxx:26
 AtlTopPairFinder.cxx:27
 AtlTopPairFinder.cxx:28
 AtlTopPairFinder.cxx:29
 AtlTopPairFinder.cxx:30
 AtlTopPairFinder.cxx:31
 AtlTopPairFinder.cxx:32
 AtlTopPairFinder.cxx:33
 AtlTopPairFinder.cxx:34
 AtlTopPairFinder.cxx:35
 AtlTopPairFinder.cxx:36
 AtlTopPairFinder.cxx:37
 AtlTopPairFinder.cxx:38
 AtlTopPairFinder.cxx:39
 AtlTopPairFinder.cxx:40
 AtlTopPairFinder.cxx:41
 AtlTopPairFinder.cxx:42
 AtlTopPairFinder.cxx:43
 AtlTopPairFinder.cxx:44
 AtlTopPairFinder.cxx:45
 AtlTopPairFinder.cxx:46
 AtlTopPairFinder.cxx:47
 AtlTopPairFinder.cxx:48
 AtlTopPairFinder.cxx:49
 AtlTopPairFinder.cxx:50
 AtlTopPairFinder.cxx:51
 AtlTopPairFinder.cxx:52
 AtlTopPairFinder.cxx:53
 AtlTopPairFinder.cxx:54
 AtlTopPairFinder.cxx:55
 AtlTopPairFinder.cxx:56
 AtlTopPairFinder.cxx:57
 AtlTopPairFinder.cxx:58
 AtlTopPairFinder.cxx:59
 AtlTopPairFinder.cxx:60
 AtlTopPairFinder.cxx:61
 AtlTopPairFinder.cxx:62
 AtlTopPairFinder.cxx:63
 AtlTopPairFinder.cxx:64
 AtlTopPairFinder.cxx:65
 AtlTopPairFinder.cxx:66
 AtlTopPairFinder.cxx:67
 AtlTopPairFinder.cxx:68
 AtlTopPairFinder.cxx:69
 AtlTopPairFinder.cxx:70
 AtlTopPairFinder.cxx:71
 AtlTopPairFinder.cxx:72
 AtlTopPairFinder.cxx:73
 AtlTopPairFinder.cxx:74
 AtlTopPairFinder.cxx:75
 AtlTopPairFinder.cxx:76
 AtlTopPairFinder.cxx:77
 AtlTopPairFinder.cxx:78
 AtlTopPairFinder.cxx:79
 AtlTopPairFinder.cxx:80
 AtlTopPairFinder.cxx:81
 AtlTopPairFinder.cxx:82
 AtlTopPairFinder.cxx:83
 AtlTopPairFinder.cxx:84
 AtlTopPairFinder.cxx:85
 AtlTopPairFinder.cxx:86
 AtlTopPairFinder.cxx:87
 AtlTopPairFinder.cxx:88
 AtlTopPairFinder.cxx:89
 AtlTopPairFinder.cxx:90
 AtlTopPairFinder.cxx:91
 AtlTopPairFinder.cxx:92
 AtlTopPairFinder.cxx:93
 AtlTopPairFinder.cxx:94
 AtlTopPairFinder.cxx:95
 AtlTopPairFinder.cxx:96
 AtlTopPairFinder.cxx:97
 AtlTopPairFinder.cxx:98
 AtlTopPairFinder.cxx:99
 AtlTopPairFinder.cxx:100
 AtlTopPairFinder.cxx:101
 AtlTopPairFinder.cxx:102
 AtlTopPairFinder.cxx:103
 AtlTopPairFinder.cxx:104
 AtlTopPairFinder.cxx:105
 AtlTopPairFinder.cxx:106
 AtlTopPairFinder.cxx:107
 AtlTopPairFinder.cxx:108
 AtlTopPairFinder.cxx:109
 AtlTopPairFinder.cxx:110
 AtlTopPairFinder.cxx:111
 AtlTopPairFinder.cxx:112
 AtlTopPairFinder.cxx:113
 AtlTopPairFinder.cxx:114
 AtlTopPairFinder.cxx:115
 AtlTopPairFinder.cxx:116
 AtlTopPairFinder.cxx:117
 AtlTopPairFinder.cxx:118
 AtlTopPairFinder.cxx:119
 AtlTopPairFinder.cxx:120
 AtlTopPairFinder.cxx:121
 AtlTopPairFinder.cxx:122
 AtlTopPairFinder.cxx:123
 AtlTopPairFinder.cxx:124
 AtlTopPairFinder.cxx:125
 AtlTopPairFinder.cxx:126
 AtlTopPairFinder.cxx:127
 AtlTopPairFinder.cxx:128
 AtlTopPairFinder.cxx:129
 AtlTopPairFinder.cxx:130
 AtlTopPairFinder.cxx:131
 AtlTopPairFinder.cxx:132
 AtlTopPairFinder.cxx:133
 AtlTopPairFinder.cxx:134
 AtlTopPairFinder.cxx:135
 AtlTopPairFinder.cxx:136
 AtlTopPairFinder.cxx:137
 AtlTopPairFinder.cxx:138
 AtlTopPairFinder.cxx:139
 AtlTopPairFinder.cxx:140
 AtlTopPairFinder.cxx:141
 AtlTopPairFinder.cxx:142
 AtlTopPairFinder.cxx:143
 AtlTopPairFinder.cxx:144
 AtlTopPairFinder.cxx:145
 AtlTopPairFinder.cxx:146
 AtlTopPairFinder.cxx:147
 AtlTopPairFinder.cxx:148
 AtlTopPairFinder.cxx:149
 AtlTopPairFinder.cxx:150
 AtlTopPairFinder.cxx:151
 AtlTopPairFinder.cxx:152
 AtlTopPairFinder.cxx:153
 AtlTopPairFinder.cxx:154
 AtlTopPairFinder.cxx:155
 AtlTopPairFinder.cxx:156
 AtlTopPairFinder.cxx:157
 AtlTopPairFinder.cxx:158
 AtlTopPairFinder.cxx:159
 AtlTopPairFinder.cxx:160
 AtlTopPairFinder.cxx:161
 AtlTopPairFinder.cxx:162
 AtlTopPairFinder.cxx:163
 AtlTopPairFinder.cxx:164
 AtlTopPairFinder.cxx:165
 AtlTopPairFinder.cxx:166
 AtlTopPairFinder.cxx:167
 AtlTopPairFinder.cxx:168
 AtlTopPairFinder.cxx:169
 AtlTopPairFinder.cxx:170
 AtlTopPairFinder.cxx:171
 AtlTopPairFinder.cxx:172
 AtlTopPairFinder.cxx:173
 AtlTopPairFinder.cxx:174
 AtlTopPairFinder.cxx:175
 AtlTopPairFinder.cxx:176
 AtlTopPairFinder.cxx:177
 AtlTopPairFinder.cxx:178
 AtlTopPairFinder.cxx:179
 AtlTopPairFinder.cxx:180
 AtlTopPairFinder.cxx:181
 AtlTopPairFinder.cxx:182
 AtlTopPairFinder.cxx:183
 AtlTopPairFinder.cxx:184
 AtlTopPairFinder.cxx:185
 AtlTopPairFinder.cxx:186
 AtlTopPairFinder.cxx:187
 AtlTopPairFinder.cxx:188
 AtlTopPairFinder.cxx:189
 AtlTopPairFinder.cxx:190
 AtlTopPairFinder.cxx:191
 AtlTopPairFinder.cxx:192
 AtlTopPairFinder.cxx:193
 AtlTopPairFinder.cxx:194
 AtlTopPairFinder.cxx:195
 AtlTopPairFinder.cxx:196
 AtlTopPairFinder.cxx:197
 AtlTopPairFinder.cxx:198
 AtlTopPairFinder.cxx:199
 AtlTopPairFinder.cxx:200
 AtlTopPairFinder.cxx:201
 AtlTopPairFinder.cxx:202
 AtlTopPairFinder.cxx:203
 AtlTopPairFinder.cxx:204
 AtlTopPairFinder.cxx:205
 AtlTopPairFinder.cxx:206
 AtlTopPairFinder.cxx:207
 AtlTopPairFinder.cxx:208
 AtlTopPairFinder.cxx:209
 AtlTopPairFinder.cxx:210
 AtlTopPairFinder.cxx:211
 AtlTopPairFinder.cxx:212
 AtlTopPairFinder.cxx:213
 AtlTopPairFinder.cxx:214
 AtlTopPairFinder.cxx:215
 AtlTopPairFinder.cxx:216
 AtlTopPairFinder.cxx:217
 AtlTopPairFinder.cxx:218
 AtlTopPairFinder.cxx:219
 AtlTopPairFinder.cxx:220
 AtlTopPairFinder.cxx:221
 AtlTopPairFinder.cxx:222
 AtlTopPairFinder.cxx:223
 AtlTopPairFinder.cxx:224
 AtlTopPairFinder.cxx:225
 AtlTopPairFinder.cxx:226
 AtlTopPairFinder.cxx:227
 AtlTopPairFinder.cxx:228
 AtlTopPairFinder.cxx:229
 AtlTopPairFinder.cxx:230
 AtlTopPairFinder.cxx:231
 AtlTopPairFinder.cxx:232
 AtlTopPairFinder.cxx:233
 AtlTopPairFinder.cxx:234
 AtlTopPairFinder.cxx:235
 AtlTopPairFinder.cxx:236
 AtlTopPairFinder.cxx:237
 AtlTopPairFinder.cxx:238
 AtlTopPairFinder.cxx:239
 AtlTopPairFinder.cxx:240
 AtlTopPairFinder.cxx:241
 AtlTopPairFinder.cxx:242
 AtlTopPairFinder.cxx:243
 AtlTopPairFinder.cxx:244
 AtlTopPairFinder.cxx:245
 AtlTopPairFinder.cxx:246
 AtlTopPairFinder.cxx:247
 AtlTopPairFinder.cxx:248
 AtlTopPairFinder.cxx:249
 AtlTopPairFinder.cxx:250
 AtlTopPairFinder.cxx:251
 AtlTopPairFinder.cxx:252
 AtlTopPairFinder.cxx:253
 AtlTopPairFinder.cxx:254
 AtlTopPairFinder.cxx:255
 AtlTopPairFinder.cxx:256
 AtlTopPairFinder.cxx:257
 AtlTopPairFinder.cxx:258
 AtlTopPairFinder.cxx:259
 AtlTopPairFinder.cxx:260
 AtlTopPairFinder.cxx:261
 AtlTopPairFinder.cxx:262
 AtlTopPairFinder.cxx:263
 AtlTopPairFinder.cxx:264
 AtlTopPairFinder.cxx:265
 AtlTopPairFinder.cxx:266
 AtlTopPairFinder.cxx:267
 AtlTopPairFinder.cxx:268
 AtlTopPairFinder.cxx:269
 AtlTopPairFinder.cxx:270
 AtlTopPairFinder.cxx:271
 AtlTopPairFinder.cxx:272
 AtlTopPairFinder.cxx:273
 AtlTopPairFinder.cxx:274
 AtlTopPairFinder.cxx:275
 AtlTopPairFinder.cxx:276
 AtlTopPairFinder.cxx:277
 AtlTopPairFinder.cxx:278
 AtlTopPairFinder.cxx:279
 AtlTopPairFinder.cxx:280
 AtlTopPairFinder.cxx:281
 AtlTopPairFinder.cxx:282
 AtlTopPairFinder.cxx:283
 AtlTopPairFinder.cxx:284
 AtlTopPairFinder.cxx:285
 AtlTopPairFinder.cxx:286
 AtlTopPairFinder.cxx:287
 AtlTopPairFinder.cxx:288
 AtlTopPairFinder.cxx:289
 AtlTopPairFinder.cxx:290
 AtlTopPairFinder.cxx:291
 AtlTopPairFinder.cxx:292
 AtlTopPairFinder.cxx:293
 AtlTopPairFinder.cxx:294
 AtlTopPairFinder.cxx:295
 AtlTopPairFinder.cxx:296
 AtlTopPairFinder.cxx:297
 AtlTopPairFinder.cxx:298
 AtlTopPairFinder.cxx:299
 AtlTopPairFinder.cxx:300
 AtlTopPairFinder.cxx:301
 AtlTopPairFinder.cxx:302
 AtlTopPairFinder.cxx:303
 AtlTopPairFinder.cxx:304
 AtlTopPairFinder.cxx:305
 AtlTopPairFinder.cxx:306
 AtlTopPairFinder.cxx:307
 AtlTopPairFinder.cxx:308
 AtlTopPairFinder.cxx:309
 AtlTopPairFinder.cxx:310
 AtlTopPairFinder.cxx:311
 AtlTopPairFinder.cxx:312
 AtlTopPairFinder.cxx:313
 AtlTopPairFinder.cxx:314
 AtlTopPairFinder.cxx:315
 AtlTopPairFinder.cxx:316
 AtlTopPairFinder.cxx:317
 AtlTopPairFinder.cxx:318
 AtlTopPairFinder.cxx:319
 AtlTopPairFinder.cxx:320
 AtlTopPairFinder.cxx:321
 AtlTopPairFinder.cxx:322
 AtlTopPairFinder.cxx:323
 AtlTopPairFinder.cxx:324
 AtlTopPairFinder.cxx:325
 AtlTopPairFinder.cxx:326
 AtlTopPairFinder.cxx:327
 AtlTopPairFinder.cxx:328
 AtlTopPairFinder.cxx:329
 AtlTopPairFinder.cxx:330
 AtlTopPairFinder.cxx:331
 AtlTopPairFinder.cxx:332
 AtlTopPairFinder.cxx:333
 AtlTopPairFinder.cxx:334
 AtlTopPairFinder.cxx:335
 AtlTopPairFinder.cxx:336
 AtlTopPairFinder.cxx:337
 AtlTopPairFinder.cxx:338
 AtlTopPairFinder.cxx:339
 AtlTopPairFinder.cxx:340
 AtlTopPairFinder.cxx:341
 AtlTopPairFinder.cxx:342
 AtlTopPairFinder.cxx:343
 AtlTopPairFinder.cxx:344
 AtlTopPairFinder.cxx:345
 AtlTopPairFinder.cxx:346
 AtlTopPairFinder.cxx:347
 AtlTopPairFinder.cxx:348
 AtlTopPairFinder.cxx:349
 AtlTopPairFinder.cxx:350
 AtlTopPairFinder.cxx:351
 AtlTopPairFinder.cxx:352
 AtlTopPairFinder.cxx:353
 AtlTopPairFinder.cxx:354
 AtlTopPairFinder.cxx:355
 AtlTopPairFinder.cxx:356
 AtlTopPairFinder.cxx:357
 AtlTopPairFinder.cxx:358
 AtlTopPairFinder.cxx:359
 AtlTopPairFinder.cxx:360
 AtlTopPairFinder.cxx:361
 AtlTopPairFinder.cxx:362
 AtlTopPairFinder.cxx:363
 AtlTopPairFinder.cxx:364
 AtlTopPairFinder.cxx:365
 AtlTopPairFinder.cxx:366
 AtlTopPairFinder.cxx:367
 AtlTopPairFinder.cxx:368
 AtlTopPairFinder.cxx:369
 AtlTopPairFinder.cxx:370
 AtlTopPairFinder.cxx:371
 AtlTopPairFinder.cxx:372
 AtlTopPairFinder.cxx:373
 AtlTopPairFinder.cxx:374
 AtlTopPairFinder.cxx:375
 AtlTopPairFinder.cxx:376
 AtlTopPairFinder.cxx:377
 AtlTopPairFinder.cxx:378
 AtlTopPairFinder.cxx:379
 AtlTopPairFinder.cxx:380
 AtlTopPairFinder.cxx:381
 AtlTopPairFinder.cxx:382
 AtlTopPairFinder.cxx:383
 AtlTopPairFinder.cxx:384
 AtlTopPairFinder.cxx:385
 AtlTopPairFinder.cxx:386
 AtlTopPairFinder.cxx:387
 AtlTopPairFinder.cxx:388
 AtlTopPairFinder.cxx:389
 AtlTopPairFinder.cxx:390
 AtlTopPairFinder.cxx:391
 AtlTopPairFinder.cxx:392
 AtlTopPairFinder.cxx:393
 AtlTopPairFinder.cxx:394
 AtlTopPairFinder.cxx:395
 AtlTopPairFinder.cxx:396
 AtlTopPairFinder.cxx:397
 AtlTopPairFinder.cxx:398
 AtlTopPairFinder.cxx:399
 AtlTopPairFinder.cxx:400
 AtlTopPairFinder.cxx:401
 AtlTopPairFinder.cxx:402
 AtlTopPairFinder.cxx:403
 AtlTopPairFinder.cxx:404
 AtlTopPairFinder.cxx:405
 AtlTopPairFinder.cxx:406
 AtlTopPairFinder.cxx:407
 AtlTopPairFinder.cxx:408
 AtlTopPairFinder.cxx:409
 AtlTopPairFinder.cxx:410
 AtlTopPairFinder.cxx:411
 AtlTopPairFinder.cxx:412
 AtlTopPairFinder.cxx:413
 AtlTopPairFinder.cxx:414
 AtlTopPairFinder.cxx:415
 AtlTopPairFinder.cxx:416
 AtlTopPairFinder.cxx:417
 AtlTopPairFinder.cxx:418
 AtlTopPairFinder.cxx:419
 AtlTopPairFinder.cxx:420
 AtlTopPairFinder.cxx:421
 AtlTopPairFinder.cxx:422
 AtlTopPairFinder.cxx:423
 AtlTopPairFinder.cxx:424
 AtlTopPairFinder.cxx:425
 AtlTopPairFinder.cxx:426
 AtlTopPairFinder.cxx:427
 AtlTopPairFinder.cxx:428
 AtlTopPairFinder.cxx:429
 AtlTopPairFinder.cxx:430
 AtlTopPairFinder.cxx:431
 AtlTopPairFinder.cxx:432
 AtlTopPairFinder.cxx:433
 AtlTopPairFinder.cxx:434
 AtlTopPairFinder.cxx:435
 AtlTopPairFinder.cxx:436
 AtlTopPairFinder.cxx:437
 AtlTopPairFinder.cxx:438
 AtlTopPairFinder.cxx:439
 AtlTopPairFinder.cxx:440
 AtlTopPairFinder.cxx:441
 AtlTopPairFinder.cxx:442
 AtlTopPairFinder.cxx:443
 AtlTopPairFinder.cxx:444
 AtlTopPairFinder.cxx:445
 AtlTopPairFinder.cxx:446
 AtlTopPairFinder.cxx:447
 AtlTopPairFinder.cxx:448
 AtlTopPairFinder.cxx:449
 AtlTopPairFinder.cxx:450
 AtlTopPairFinder.cxx:451
 AtlTopPairFinder.cxx:452
 AtlTopPairFinder.cxx:453
 AtlTopPairFinder.cxx:454
 AtlTopPairFinder.cxx:455
 AtlTopPairFinder.cxx:456
 AtlTopPairFinder.cxx:457
 AtlTopPairFinder.cxx:458
 AtlTopPairFinder.cxx:459
 AtlTopPairFinder.cxx:460
 AtlTopPairFinder.cxx:461
 AtlTopPairFinder.cxx:462
 AtlTopPairFinder.cxx:463
 AtlTopPairFinder.cxx:464
 AtlTopPairFinder.cxx:465
 AtlTopPairFinder.cxx:466
 AtlTopPairFinder.cxx:467
 AtlTopPairFinder.cxx:468
 AtlTopPairFinder.cxx:469
 AtlTopPairFinder.cxx:470
 AtlTopPairFinder.cxx:471
 AtlTopPairFinder.cxx:472
 AtlTopPairFinder.cxx:473
 AtlTopPairFinder.cxx:474
 AtlTopPairFinder.cxx:475
 AtlTopPairFinder.cxx:476
 AtlTopPairFinder.cxx:477
 AtlTopPairFinder.cxx:478
 AtlTopPairFinder.cxx:479
 AtlTopPairFinder.cxx:480
 AtlTopPairFinder.cxx:481
 AtlTopPairFinder.cxx:482
 AtlTopPairFinder.cxx:483
 AtlTopPairFinder.cxx:484
 AtlTopPairFinder.cxx:485
 AtlTopPairFinder.cxx:486
 AtlTopPairFinder.cxx:487
 AtlTopPairFinder.cxx:488
 AtlTopPairFinder.cxx:489
 AtlTopPairFinder.cxx:490
 AtlTopPairFinder.cxx:491
 AtlTopPairFinder.cxx:492
 AtlTopPairFinder.cxx:493
 AtlTopPairFinder.cxx:494
 AtlTopPairFinder.cxx:495
 AtlTopPairFinder.cxx:496
 AtlTopPairFinder.cxx:497
 AtlTopPairFinder.cxx:498
 AtlTopPairFinder.cxx:499
 AtlTopPairFinder.cxx:500
 AtlTopPairFinder.cxx:501
 AtlTopPairFinder.cxx:502
 AtlTopPairFinder.cxx:503
 AtlTopPairFinder.cxx:504
 AtlTopPairFinder.cxx:505
 AtlTopPairFinder.cxx:506
 AtlTopPairFinder.cxx:507
 AtlTopPairFinder.cxx:508
 AtlTopPairFinder.cxx:509
 AtlTopPairFinder.cxx:510
 AtlTopPairFinder.cxx:511
 AtlTopPairFinder.cxx:512
 AtlTopPairFinder.cxx:513
 AtlTopPairFinder.cxx:514
 AtlTopPairFinder.cxx:515
 AtlTopPairFinder.cxx:516
 AtlTopPairFinder.cxx:517
 AtlTopPairFinder.cxx:518
 AtlTopPairFinder.cxx:519
 AtlTopPairFinder.cxx:520
 AtlTopPairFinder.cxx:521
 AtlTopPairFinder.cxx:522
 AtlTopPairFinder.cxx:523
 AtlTopPairFinder.cxx:524
 AtlTopPairFinder.cxx:525
 AtlTopPairFinder.cxx:526
 AtlTopPairFinder.cxx:527
 AtlTopPairFinder.cxx:528
 AtlTopPairFinder.cxx:529
 AtlTopPairFinder.cxx:530
 AtlTopPairFinder.cxx:531
 AtlTopPairFinder.cxx:532
 AtlTopPairFinder.cxx:533
 AtlTopPairFinder.cxx:534
 AtlTopPairFinder.cxx:535
 AtlTopPairFinder.cxx:536
 AtlTopPairFinder.cxx:537
 AtlTopPairFinder.cxx:538
 AtlTopPairFinder.cxx:539
 AtlTopPairFinder.cxx:540
 AtlTopPairFinder.cxx:541
 AtlTopPairFinder.cxx:542
 AtlTopPairFinder.cxx:543
 AtlTopPairFinder.cxx:544
 AtlTopPairFinder.cxx:545
 AtlTopPairFinder.cxx:546
 AtlTopPairFinder.cxx:547
 AtlTopPairFinder.cxx:548
 AtlTopPairFinder.cxx:549
 AtlTopPairFinder.cxx:550
 AtlTopPairFinder.cxx:551
 AtlTopPairFinder.cxx:552
 AtlTopPairFinder.cxx:553
 AtlTopPairFinder.cxx:554
 AtlTopPairFinder.cxx:555
 AtlTopPairFinder.cxx:556
 AtlTopPairFinder.cxx:557
 AtlTopPairFinder.cxx:558
 AtlTopPairFinder.cxx:559
 AtlTopPairFinder.cxx:560
 AtlTopPairFinder.cxx:561
 AtlTopPairFinder.cxx:562
 AtlTopPairFinder.cxx:563
 AtlTopPairFinder.cxx:564
 AtlTopPairFinder.cxx:565
 AtlTopPairFinder.cxx:566
 AtlTopPairFinder.cxx:567
 AtlTopPairFinder.cxx:568
 AtlTopPairFinder.cxx:569
 AtlTopPairFinder.cxx:570
 AtlTopPairFinder.cxx:571
 AtlTopPairFinder.cxx:572
 AtlTopPairFinder.cxx:573
 AtlTopPairFinder.cxx:574
 AtlTopPairFinder.cxx:575
 AtlTopPairFinder.cxx:576
 AtlTopPairFinder.cxx:577
 AtlTopPairFinder.cxx:578
 AtlTopPairFinder.cxx:579
 AtlTopPairFinder.cxx:580
 AtlTopPairFinder.cxx:581
 AtlTopPairFinder.cxx:582
 AtlTopPairFinder.cxx:583
 AtlTopPairFinder.cxx:584
 AtlTopPairFinder.cxx:585
 AtlTopPairFinder.cxx:586
 AtlTopPairFinder.cxx:587
 AtlTopPairFinder.cxx:588
 AtlTopPairFinder.cxx:589
 AtlTopPairFinder.cxx:590
 AtlTopPairFinder.cxx:591
 AtlTopPairFinder.cxx:592
 AtlTopPairFinder.cxx:593
 AtlTopPairFinder.cxx:594
 AtlTopPairFinder.cxx:595
 AtlTopPairFinder.cxx:596
 AtlTopPairFinder.cxx:597
 AtlTopPairFinder.cxx:598
 AtlTopPairFinder.cxx:599
 AtlTopPairFinder.cxx:600
 AtlTopPairFinder.cxx:601
 AtlTopPairFinder.cxx:602
 AtlTopPairFinder.cxx:603
 AtlTopPairFinder.cxx:604
 AtlTopPairFinder.cxx:605
 AtlTopPairFinder.cxx:606
 AtlTopPairFinder.cxx:607
 AtlTopPairFinder.cxx:608
 AtlTopPairFinder.cxx:609
 AtlTopPairFinder.cxx:610
 AtlTopPairFinder.cxx:611
 AtlTopPairFinder.cxx:612
 AtlTopPairFinder.cxx:613
 AtlTopPairFinder.cxx:614
 AtlTopPairFinder.cxx:615
 AtlTopPairFinder.cxx:616
 AtlTopPairFinder.cxx:617
 AtlTopPairFinder.cxx:618
 AtlTopPairFinder.cxx:619
 AtlTopPairFinder.cxx:620
 AtlTopPairFinder.cxx:621
 AtlTopPairFinder.cxx:622
 AtlTopPairFinder.cxx:623
 AtlTopPairFinder.cxx:624
 AtlTopPairFinder.cxx:625
 AtlTopPairFinder.cxx:626
 AtlTopPairFinder.cxx:627
 AtlTopPairFinder.cxx:628
 AtlTopPairFinder.cxx:629
 AtlTopPairFinder.cxx:630
 AtlTopPairFinder.cxx:631
 AtlTopPairFinder.cxx:632
 AtlTopPairFinder.cxx:633
 AtlTopPairFinder.cxx:634
 AtlTopPairFinder.cxx:635
 AtlTopPairFinder.cxx:636
 AtlTopPairFinder.cxx:637
 AtlTopPairFinder.cxx:638
 AtlTopPairFinder.cxx:639
 AtlTopPairFinder.cxx:640
 AtlTopPairFinder.cxx:641
 AtlTopPairFinder.cxx:642
 AtlTopPairFinder.cxx:643
 AtlTopPairFinder.cxx:644
 AtlTopPairFinder.cxx:645
 AtlTopPairFinder.cxx:646
 AtlTopPairFinder.cxx:647
 AtlTopPairFinder.cxx:648
 AtlTopPairFinder.cxx:649
 AtlTopPairFinder.cxx:650
 AtlTopPairFinder.cxx:651
 AtlTopPairFinder.cxx:652
 AtlTopPairFinder.cxx:653
 AtlTopPairFinder.cxx:654
 AtlTopPairFinder.cxx:655
 AtlTopPairFinder.cxx:656
 AtlTopPairFinder.cxx:657
 AtlTopPairFinder.cxx:658
 AtlTopPairFinder.cxx:659
 AtlTopPairFinder.cxx:660
 AtlTopPairFinder.cxx:661
 AtlTopPairFinder.cxx:662
 AtlTopPairFinder.cxx:663
 AtlTopPairFinder.cxx:664
 AtlTopPairFinder.cxx:665
 AtlTopPairFinder.cxx:666
 AtlTopPairFinder.cxx:667
 AtlTopPairFinder.cxx:668
 AtlTopPairFinder.cxx:669
 AtlTopPairFinder.cxx:670
 AtlTopPairFinder.cxx:671
 AtlTopPairFinder.cxx:672
 AtlTopPairFinder.cxx:673
 AtlTopPairFinder.cxx:674
 AtlTopPairFinder.cxx:675
 AtlTopPairFinder.cxx:676
 AtlTopPairFinder.cxx:677
 AtlTopPairFinder.cxx:678
 AtlTopPairFinder.cxx:679
 AtlTopPairFinder.cxx:680
 AtlTopPairFinder.cxx:681
 AtlTopPairFinder.cxx:682
 AtlTopPairFinder.cxx:683
 AtlTopPairFinder.cxx:684
 AtlTopPairFinder.cxx:685
 AtlTopPairFinder.cxx:686
 AtlTopPairFinder.cxx:687
 AtlTopPairFinder.cxx:688
 AtlTopPairFinder.cxx:689
 AtlTopPairFinder.cxx:690
 AtlTopPairFinder.cxx:691
 AtlTopPairFinder.cxx:692
 AtlTopPairFinder.cxx:693
 AtlTopPairFinder.cxx:694
 AtlTopPairFinder.cxx:695
 AtlTopPairFinder.cxx:696
 AtlTopPairFinder.cxx:697
 AtlTopPairFinder.cxx:698
 AtlTopPairFinder.cxx:699
 AtlTopPairFinder.cxx:700
 AtlTopPairFinder.cxx:701
 AtlTopPairFinder.cxx:702
 AtlTopPairFinder.cxx:703
 AtlTopPairFinder.cxx:704
 AtlTopPairFinder.cxx:705
 AtlTopPairFinder.cxx:706
 AtlTopPairFinder.cxx:707
 AtlTopPairFinder.cxx:708
 AtlTopPairFinder.cxx:709
 AtlTopPairFinder.cxx:710
 AtlTopPairFinder.cxx:711
 AtlTopPairFinder.cxx:712
 AtlTopPairFinder.cxx:713
 AtlTopPairFinder.cxx:714
 AtlTopPairFinder.cxx:715
 AtlTopPairFinder.cxx:716
 AtlTopPairFinder.cxx:717
 AtlTopPairFinder.cxx:718
 AtlTopPairFinder.cxx:719
 AtlTopPairFinder.cxx:720
 AtlTopPairFinder.cxx:721
 AtlTopPairFinder.cxx:722
 AtlTopPairFinder.cxx:723
 AtlTopPairFinder.cxx:724
 AtlTopPairFinder.cxx:725
 AtlTopPairFinder.cxx:726
 AtlTopPairFinder.cxx:727
 AtlTopPairFinder.cxx:728
 AtlTopPairFinder.cxx:729
 AtlTopPairFinder.cxx:730
 AtlTopPairFinder.cxx:731
 AtlTopPairFinder.cxx:732
 AtlTopPairFinder.cxx:733
 AtlTopPairFinder.cxx:734
 AtlTopPairFinder.cxx:735
 AtlTopPairFinder.cxx:736
 AtlTopPairFinder.cxx:737
 AtlTopPairFinder.cxx:738
 AtlTopPairFinder.cxx:739
 AtlTopPairFinder.cxx:740
 AtlTopPairFinder.cxx:741
 AtlTopPairFinder.cxx:742
 AtlTopPairFinder.cxx:743
 AtlTopPairFinder.cxx:744
 AtlTopPairFinder.cxx:745
 AtlTopPairFinder.cxx:746
 AtlTopPairFinder.cxx:747
 AtlTopPairFinder.cxx:748
 AtlTopPairFinder.cxx:749
 AtlTopPairFinder.cxx:750
 AtlTopPairFinder.cxx:751
 AtlTopPairFinder.cxx:752
 AtlTopPairFinder.cxx:753
 AtlTopPairFinder.cxx:754
 AtlTopPairFinder.cxx:755
 AtlTopPairFinder.cxx:756
 AtlTopPairFinder.cxx:757
 AtlTopPairFinder.cxx:758
 AtlTopPairFinder.cxx:759
 AtlTopPairFinder.cxx:760
 AtlTopPairFinder.cxx:761
 AtlTopPairFinder.cxx:762
 AtlTopPairFinder.cxx:763
 AtlTopPairFinder.cxx:764
 AtlTopPairFinder.cxx:765
 AtlTopPairFinder.cxx:766
 AtlTopPairFinder.cxx:767
 AtlTopPairFinder.cxx:768
 AtlTopPairFinder.cxx:769
 AtlTopPairFinder.cxx:770
 AtlTopPairFinder.cxx:771
 AtlTopPairFinder.cxx:772
 AtlTopPairFinder.cxx:773
 AtlTopPairFinder.cxx:774
 AtlTopPairFinder.cxx:775
 AtlTopPairFinder.cxx:776
 AtlTopPairFinder.cxx:777
 AtlTopPairFinder.cxx:778
 AtlTopPairFinder.cxx:779
 AtlTopPairFinder.cxx:780
 AtlTopPairFinder.cxx:781
 AtlTopPairFinder.cxx:782
 AtlTopPairFinder.cxx:783
 AtlTopPairFinder.cxx:784
 AtlTopPairFinder.cxx:785
 AtlTopPairFinder.cxx:786
 AtlTopPairFinder.cxx:787
 AtlTopPairFinder.cxx:788
 AtlTopPairFinder.cxx:789
 AtlTopPairFinder.cxx:790
 AtlTopPairFinder.cxx:791
 AtlTopPairFinder.cxx:792
 AtlTopPairFinder.cxx:793
 AtlTopPairFinder.cxx:794
 AtlTopPairFinder.cxx:795
 AtlTopPairFinder.cxx:796
 AtlTopPairFinder.cxx:797
 AtlTopPairFinder.cxx:798
 AtlTopPairFinder.cxx:799
 AtlTopPairFinder.cxx:800
 AtlTopPairFinder.cxx:801
 AtlTopPairFinder.cxx:802
 AtlTopPairFinder.cxx:803
 AtlTopPairFinder.cxx:804
 AtlTopPairFinder.cxx:805
 AtlTopPairFinder.cxx:806
 AtlTopPairFinder.cxx:807
 AtlTopPairFinder.cxx:808
 AtlTopPairFinder.cxx:809
 AtlTopPairFinder.cxx:810
 AtlTopPairFinder.cxx:811
 AtlTopPairFinder.cxx:812
 AtlTopPairFinder.cxx:813
 AtlTopPairFinder.cxx:814
 AtlTopPairFinder.cxx:815
 AtlTopPairFinder.cxx:816
 AtlTopPairFinder.cxx:817
 AtlTopPairFinder.cxx:818
 AtlTopPairFinder.cxx:819
 AtlTopPairFinder.cxx:820
 AtlTopPairFinder.cxx:821
 AtlTopPairFinder.cxx:822
 AtlTopPairFinder.cxx:823
 AtlTopPairFinder.cxx:824
 AtlTopPairFinder.cxx:825
 AtlTopPairFinder.cxx:826
 AtlTopPairFinder.cxx:827
 AtlTopPairFinder.cxx:828
 AtlTopPairFinder.cxx:829
 AtlTopPairFinder.cxx:830
 AtlTopPairFinder.cxx:831
 AtlTopPairFinder.cxx:832
 AtlTopPairFinder.cxx:833
 AtlTopPairFinder.cxx:834
 AtlTopPairFinder.cxx:835
 AtlTopPairFinder.cxx:836
 AtlTopPairFinder.cxx:837
 AtlTopPairFinder.cxx:838
 AtlTopPairFinder.cxx:839
 AtlTopPairFinder.cxx:840
 AtlTopPairFinder.cxx:841
 AtlTopPairFinder.cxx:842
 AtlTopPairFinder.cxx:843
 AtlTopPairFinder.cxx:844
 AtlTopPairFinder.cxx:845
 AtlTopPairFinder.cxx:846
 AtlTopPairFinder.cxx:847
 AtlTopPairFinder.cxx:848
 AtlTopPairFinder.cxx:849
 AtlTopPairFinder.cxx:850
 AtlTopPairFinder.cxx:851
 AtlTopPairFinder.cxx:852
 AtlTopPairFinder.cxx:853
 AtlTopPairFinder.cxx:854
 AtlTopPairFinder.cxx:855
 AtlTopPairFinder.cxx:856
 AtlTopPairFinder.cxx:857
 AtlTopPairFinder.cxx:858
 AtlTopPairFinder.cxx:859
 AtlTopPairFinder.cxx:860
 AtlTopPairFinder.cxx:861
 AtlTopPairFinder.cxx:862
 AtlTopPairFinder.cxx:863
 AtlTopPairFinder.cxx:864
 AtlTopPairFinder.cxx:865
 AtlTopPairFinder.cxx:866
 AtlTopPairFinder.cxx:867
 AtlTopPairFinder.cxx:868
 AtlTopPairFinder.cxx:869
 AtlTopPairFinder.cxx:870
 AtlTopPairFinder.cxx:871
 AtlTopPairFinder.cxx:872
 AtlTopPairFinder.cxx:873
 AtlTopPairFinder.cxx:874
 AtlTopPairFinder.cxx:875
 AtlTopPairFinder.cxx:876
 AtlTopPairFinder.cxx:877
 AtlTopPairFinder.cxx:878
 AtlTopPairFinder.cxx:879
 AtlTopPairFinder.cxx:880
 AtlTopPairFinder.cxx:881
 AtlTopPairFinder.cxx:882
 AtlTopPairFinder.cxx:883
 AtlTopPairFinder.cxx:884
 AtlTopPairFinder.cxx:885
 AtlTopPairFinder.cxx:886
 AtlTopPairFinder.cxx:887
 AtlTopPairFinder.cxx:888
 AtlTopPairFinder.cxx:889
 AtlTopPairFinder.cxx:890
 AtlTopPairFinder.cxx:891
 AtlTopPairFinder.cxx:892
 AtlTopPairFinder.cxx:893
 AtlTopPairFinder.cxx:894
 AtlTopPairFinder.cxx:895
 AtlTopPairFinder.cxx:896
 AtlTopPairFinder.cxx:897
 AtlTopPairFinder.cxx:898
 AtlTopPairFinder.cxx:899
 AtlTopPairFinder.cxx:900
 AtlTopPairFinder.cxx:901
 AtlTopPairFinder.cxx:902
 AtlTopPairFinder.cxx:903
 AtlTopPairFinder.cxx:904
 AtlTopPairFinder.cxx:905
 AtlTopPairFinder.cxx:906
 AtlTopPairFinder.cxx:907
 AtlTopPairFinder.cxx:908
 AtlTopPairFinder.cxx:909
 AtlTopPairFinder.cxx:910