//____________________________________________________________________
//
// ATLAS event class
//

//
// Author: Oliver Maria Kind <mailto: kind@mail.desy.de>
// Update: $Id: AtlEvent.cxx,v 1.170 2016/12/22 20:40:15 kind Exp $
// Copyright: 2008 (C) Oliver Maria Kind
//
#ifndef ATLAS_AtlEvent
#include <AtlEvent.h>
#endif
#include <HepDatabasePDG.h>
#include <TString.h>
#include <TSystem.h>
#include <TArrayF.h>
#include <TArrayI.h>
#include <TDirectory.h>
#include <iostream>

using namespace std;

#ifndef __CINT__
ClassImp(AtlEvent);
#endif


//____________________________________________________________________

AtlEvent::AtlEvent() {
    //
    // Default constructor
    //
    
    // Init datamember contents
    Init();

    // Create sub-objects
    fCone4H1TowerJets    = new TClonesArray("AtlJet",          0);
    fCone7H1TowerJets    = new TClonesArray("AtlJet",          0);
    fCone4H1TopoJets     = new TClonesArray("AtlJet",          0);
    fCone7H1TopoJets     = new TClonesArray("AtlJet",          0);
    fMCCone4HadronJets   = new TClonesArray("AtlJet",          0);
    fMCCone7HadronJets   = new TClonesArray("AtlJet",          0);
    fMCAntiKt4HadronJets = new TClonesArray("AtlJet",          0);
    fMCAntiKt6HadronJets = new TClonesArray("AtlJet",          0);
    fMCAntiKt4HadronPileupJets = new TClonesArray("AtlJet",    0);
    fAntiKt4H1TopoJets   = new TClonesArray("AtlJet",          0);
    fAntiKt4H1TowerJets  = new TClonesArray("AtlJet",          0);
    fAntiKt6H1TowerJets  = new TClonesArray("AtlJet",          0);
    fAntiKt4TopoEMJets   = new TClonesArray("AtlJet",          0);
    fAntiKt4TopoEMJESJets= new TClonesArray("AtlJet",          0);
    fAntiKt4LCTopoJets   = new TClonesArray("AtlJet",          0);
    fAntiKt4TowerJets    = new TClonesArray("AtlJet",          0);
    fAntiKt6TopoEMJets   = new TClonesArray("AtlJet",          0);
    fAntiKt4TopoJets     = new TClonesArray("AtlJet",          0);
    fAntiKt6TowerJets    = new TClonesArray("AtlJet",          0);
    fAntiKt6LCTopoJets   = new TClonesArray("AtlJet",          0);
    fAntiKt6TopoJets     = new TClonesArray("AtlJet",          0);
    fAtlFastJets         = new TClonesArray("AtlJet",          0);
    fMCParticles         = new TClonesArray("HepMCParticle",   0);
    fMCVertices          = new TClonesArray("HepMCVertex",     0);
    fIDTracks            = new TClonesArray("AtlIDTrack",      0);
    fPixelHits           = new TClonesArray("AtlPixelHit",     0);
    fSCTHits             = new TClonesArray("AtlSCT3DHit",     0);
    fTRTHits             = new TClonesArray("AtlTRTDigit",     0);
    fElectrons           = new TClonesArray("AtlElectron",     0);
    fMuons               = new TClonesArray("AtlMuon",         0);
    fTaus                = new TClonesArray("AtlTau",          0);
    fPhotons             = new TClonesArray("AtlPhoton",       0);
    fAtlFastElectrons    = new TClonesArray("AtlFastElectron", 0);
    fAtlFastMuons        = new TClonesArray("AtlFastMuon",     0);
    fAtlFastTaus         = new TClonesArray("AtlFastTau",      0);
    fAtlFastPhotons      = new TClonesArray("AtlFastPhoton",   0);
    fTopPairs            = new TClonesArray("AtlTopPair",      0);
    fTopDecays           = new TClonesArray("HepTopDecay",     0);
    fWDecaysLNu          = new TClonesArray("AtlWDecayLNu",    0);
    fWDecaysJJ           = new TClonesArray("AtlWDecayJJ",     0);
    fNeutrinos           = new TClonesArray("HepParticle",     0);
    fZ0Decays            = new TClonesArray("HepZ0Decay",      0);
    fPhiDecaysKK         = new TClonesArray("AtlPhiDecayKK",   0);
    fK0sDecaysPiPi       = new TClonesArray("AtlK0sDecayPiPi", 0);
    fPhotonConv          = new TClonesArray("AtlPhotonConv",   0);
    fLambdaDecaysPiPi    = new TClonesArray("AtlLambdaDecayPPi",0);
    fD0DecaysKPi         = new TClonesArray("AtlD0DecayKPi",   0);
    fDstarDecaysDPi      = new TClonesArray("AtlDstarDecayDPi",0);
    fVertices            = new TClonesArray("HepVertex",       1);
    fTrigger             = new AtlTrigger;
}

//____________________________________________________________________

AtlEvent::~AtlEvent() {
    //
    // Default destructor
    //
    Clear("C");
    delete fCone4H1TowerJets;
    delete fCone7H1TowerJets;
    delete fCone4H1TopoJets;
    delete fCone7H1TopoJets;
    delete fMCCone4HadronJets;
    delete fMCCone7HadronJets;
    delete fMCAntiKt4HadronJets;
    delete fMCAntiKt6HadronJets;
    delete fMCAntiKt4HadronPileupJets;
    delete fAntiKt4H1TopoJets;
    delete fAntiKt4H1TowerJets;
    delete fAntiKt6H1TowerJets;
    delete fAntiKt4TopoEMJets;
    delete fAntiKt4TopoEMJESJets;
    delete fAntiKt4LCTopoJets;
    delete fAntiKt4TowerJets;
    delete fAntiKt6TopoEMJets;
    delete fAntiKt4TopoJets;
    delete fAntiKt6TowerJets;
    delete fAntiKt6LCTopoJets;
    delete fAntiKt6TopoJets;
    delete fAtlFastJets;
    delete fMCParticles;
    delete fMCVertices;
    delete fIDTracks;
    delete fPixelHits;
    delete fSCTHits;
    delete fTRTHits;
    delete fElectrons;
    delete fMuons;
    delete fTaus;
    delete fPhotons;
    delete fAtlFastElectrons;
    delete fAtlFastMuons;
    delete fAtlFastTaus;
    delete fAtlFastPhotons;
    delete fTopPairs;
    delete fTopDecays;
    delete fWDecaysLNu;
    delete fWDecaysJJ;
    delete fNeutrinos;
    delete fZ0Decays;
    delete fPhiDecaysKK;
    delete fK0sDecaysPiPi;
    delete fPhotonConv;
    delete fLambdaDecaysPiPi;
    delete fD0DecaysKPi;
    delete fDstarDecaysDPi;
    delete fVertices;
    delete fTrigger;
}

//____________________________________________________________________

void AtlEvent::Clear(Option_t *option) {
    //
    // Clear event
    //
    Init();

    fEventHeader.Clear();
    fTrigger->Clear();
    fEnergySum.Clear();

    fCone4H1TowerJets    ->Clear("C");
    fCone7H1TowerJets    ->Clear("C");
    fCone4H1TopoJets     ->Clear("C");
    fCone7H1TopoJets     ->Clear("C");
    fMCCone4HadronJets   ->Clear("C");
    fMCCone7HadronJets   ->Clear("C");
    fMCAntiKt4HadronJets ->Clear("C");
    fMCAntiKt6HadronJets ->Clear("C");
    fMCAntiKt4HadronPileupJets->Clear("C");
    fAntiKt4H1TopoJets   ->Clear("C");
    fAntiKt4H1TowerJets  ->Clear("C");
    fAntiKt6H1TowerJets  ->Clear("C");
    fAntiKt4TopoEMJets   ->Clear("C");
    fAntiKt4TopoEMJESJets->Clear("C");
    fAntiKt4LCTopoJets   ->Clear("C");
    fAntiKt4TowerJets    ->Clear("C");
    fAntiKt6TopoEMJets   ->Clear("C");
    fAntiKt4TopoJets     ->Clear("C");
    fAntiKt6TowerJets    ->Clear("C");
    fAntiKt6LCTopoJets   ->Clear("C");
    fAntiKt6TopoJets     ->Clear("C");
    fAtlFastJets         ->Clear("C");
    fMCParticles         ->Clear("C");
    fMCVertices          ->Clear("C");
    fIDTracks            ->Clear("C");
    fPixelHits           ->Clear("C");
    fSCTHits             ->Clear("C");
    fTRTHits             ->Clear("C");
    fElectrons           ->Clear("C");
    fMuons               ->Clear("C");
    fTaus                ->Clear("C");
    fPhotons             ->Clear("C");
    fAtlFastElectrons    ->Clear("C");
    fAtlFastMuons        ->Clear("C");
    fAtlFastTaus         ->Clear("C");
    fAtlFastPhotons      ->Clear("C");
    fTopPairs            ->Clear("C");
    fTopDecays           ->Clear("C");
    fWDecaysLNu          ->Clear("C");
    fWDecaysJJ           ->Clear("C");
    fNeutrinos           ->Clear("C");
    fZ0Decays            ->Clear("C");
    fPhiDecaysKK         ->Clear("C");
    fK0sDecaysPiPi       ->Clear("C");
    fPhotonConv          ->Clear("C"); 
    fLambdaDecaysPiPi    ->Clear("C");
    fD0DecaysKPi         ->Clear("C");
    fDstarDecaysDPi      ->Clear("C");
    fVertices            ->Clear("C");
}

//____________________________________________________________________

void AtlEvent::Init() {
    //
    // Initialise event content
    //
    fN_Cone4H1TowerJets    = 0;
    fN_Cone7H1TowerJets    = 0;
    fN_Cone4H1TopoJets     = 0;
    fN_Cone7H1TopoJets     = 0;
    fN_MCCone4HadronJets   = 0;
    fN_MCCone7HadronJets   = 0;
    fN_MCAntiKt4HadronJets = 0;
    fN_MCAntiKt4HadronPileupJets = 0;
    fN_MCAntiKt6HadronJets = 0;
    fN_AntiKt4H1TopoJets   = 0;
    fN_AntiKt4H1TowerJets  = 0;
    fN_AntiKt6H1TowerJets  = 0;
    fN_AntiKt4TopoEMJets   = 0;
    fN_AntiKt4TopoEMJESJets= 0;
    fN_AntiKt4LCTopoJets   = 0;
    fN_AntiKt4TowerJets    = 0;
    fN_AntiKt6TopoEMJets   = 0;
    fN_AntiKt4TopoJets     = 0;
    fN_AntiKt6TowerJets    = 0;
    fN_AntiKt6LCTopoJets   = 0;
    fN_AntiKt6TopoJets     = 0;
    fN_AtlFastJets         = 0;
    fN_MCParticles         = 0;
    fN_MCVertices          = 0;
    fN_IDTracks            = 0;
    fN_PixelHits           = 0;
    fN_SCTHits             = 0;
    fN_TRTHits             = 0;
    fN_Electrons           = 0;
    fN_Muons               = 0;
    fN_Taus                = 0;
    fN_Photons             = 0;
    fN_AtlFastElectrons    = 0;
    fN_AtlFastMuons        = 0;
    fN_AtlFastTaus         = 0;
    fN_AtlFastPhotons      = 0;
    fN_TopPairs            = 0;
    fN_TopDecays           = 0;
    fN_WDecaysLNu          = 0;
    fN_WDecaysJJ           = 0;
    fN_Neutrinos           = 0;
    fN_Z0Decays            = 0;
    fN_PhiDecaysKK         = 0;
    fN_K0sDecaysPiPi       = 0;
    fN_PhotonConv          = 0;
    fN_LambdaDecaysPiPi    = 0;
    fN_D0DecaysKPi         = 0;
    fN_DstarDecaysDPi      = 0;
    fN_Vertices            = 0;
    fN_vpx                 = -1;
}    

//____________________________________________________________________

void AtlEvent::Print(Option_t *option) const {
    //
    // Print event information
    //
    // Options available:
    //   "ALL"      - all of the above (default)
    //   "HDR"      - event header
    //   "TRIG"     - trigger
    //   "NOTRIG"   = Do not print trigger information, eg "ALL-NOTRIG"
    //   "SUM"      - energy sums
    //   "JET"      - jets
    //   "PRT"      - MC truth particles
    //   "TRT"      - TRT hits
    //   "ELEC"     - Electrons
    //   "MUON"     - Muons
    //   "TAU"      - Taus
    //   "PHOT"     - Photons
    //   "TRK"      - Tracks
    //   "VTX"      - Vertices
    //   "K0S"      - Reconstructed K0s
    //   "CONV"     - Reconstructed photoconversions
    //   "ZDEC"     - Reconstructed Z0 decays
    //   "WDEC"     - Reconstructed W decays
    //   "TOP"      - Reconstructed top-quark decays
    //
    TString opt = option;
    opt.ToUpper();

    // ============
    // Print header
    // ============
    cout << endl << endl
	 << "====================================================================================================" << endl
	 << " Run " << RunNr() << "   Event " << EventNr() << "   LumiBlock " << LumiBlock();
    cout.setf(ios::fixed, ios::floatfield);
    cout.precision(2);
    cout << "   BeamEnergy " << BeamEnergy()/1000. << "TeV" << endl
	 << "====================================================================================================" << endl;
    if ( opt.Contains("ALL") || opt.Contains("HDR") ) {
	fEventHeader.Print();
    }
    
    // ==================
    // Print trigger info
    // ==================
    if ( !opt.Contains("NOTRIG") ) {
	if ( opt.Contains("ALL") || opt.Contains("TRIG") ) {
	    // Trigger config already loaded ?
 	    if ( GetTrigger()->GetTriggerConf() == 0 ) {
 		AtlTriggerConf *trig_conf = AtlTriggerConf::Instance()->LoadTree(gDirectory);
		if ( trig_conf == 0 ) {
		  Info("Print",
		       "No trigger information available due to missing trigger configuration");
		} else {
		    GetTrigger()->SetConfig(trig_conf);
		}
	    }
 	    if ( GetTrigger()->GetTriggerConf() != 0 ) {
 		fTrigger->Print(RunNr());
	    }
	}
    }
    
    // ===========
    // Energy sums
    // ===========
    if ( opt.Contains("ALL") || opt.Contains("SUM") ) {
	if ( IsMC() ) {
	    fEnergySum.Print("MC");
	} else {
	    fEnergySum.Print();
	}
    }

    // ========
    // QCD Jets
    // ========
    if ( opt.Contains("ALL") || opt.Contains("JET") ) {
	Int_t njets = 0;
	for ( Int_t j = 0; j < AtlJet::kNumTypes-1; j++ ) {
	    njets = GetN_Jets((AtlJet::EType)j);
	    cout << endl << AtlJet::NameOfType((AtlJet::EType)j)
		 << " Jets: #" << njets << endl;
	    if ( njets > 0 ) {
		AtlJet::PrintHeader();
		for ( Int_t i = 0; i < njets; i++ )
		    ((AtlJet*)GetJets((AtlJet::EType)j)->At(i))->Print("nohead");
		AtlJet::PrintFooter();
	    }
	}
    }

    // ============
    // MC particles
    // ============
    if ( IsMC() && (opt.Contains("ALL") || opt.Contains("PRT")) ) {
	cout << endl << "MC particles: #" << fN_MCParticles << endl;
	if ( fN_MCParticles > 0 ) {
	    HepMCParticle::PrintHeader();
	    for ( Int_t i = 0; i < fN_MCParticles; i++ )
		((HepMCParticle*)fMCParticles->At(i))->Print("nohead");
	    HepMCParticle::PrintFooter();
	}
    }

    // =====================
    // Inner detector tracks
    // =====================
    if ( opt.Contains("ALL") || opt.Contains("TRK") ) {
	cout << endl << "ID tracks: #" << fN_IDTracks << endl;
	if ( fN_IDTracks > 0 ) {
	    AtlIDTrack::PrintHeader();
	    for ( Int_t i = 0; i < fN_IDTracks; i++ )
		((AtlIDTrack*)fIDTracks->At(i))->Print("nohead");
	    AtlIDTrack::PrintFooter();
	}
    }

    // =================
    // TRT digitisations
    // =================
    if ( opt.Contains("ALL") || opt.Contains("TRT") ) {
	cout << endl << "TRT hits: #" << fN_TRTHits << endl;
	if ( fN_TRTHits > 0 ) {
	    AtlTRTDigit::PrintHeader();
	    for ( Int_t i = 0; i < fN_TRTHits; i++ )
		((AtlTRTDigit*)fTRTHits->At(i))->Print("nohead");
	    AtlTRTDigit::PrintFooter();
	}
    }

    // ========
    // Vertices
    // ========
    if ( opt.Contains("ALL") || opt.Contains("VTX") ) {
	cout << endl << "Vertices: #" << fN_Vertices << endl;
	if ( fN_Vertices > 0 ) {
	    HepVertex::PrintHeader();
	    for ( Int_t i = 0; i < fN_Vertices; i++ )
		((HepVertex*)fVertices->At(i))
		    ->Print(Form("nohead,%s", opt.Data()));
	    HepVertex::PrintFooter();
	}
    }
	
    // =========
    // Electrons
    // =========
    if ( opt.Contains("ALL") || opt.Contains("ELEC") ) {
	cout << endl << "Electrons: #" << fN_Electrons << endl;
	if ( fN_Electrons > 0 ) {
	    AtlElectron::PrintHeader();
	    for ( Int_t i = 0; i < fN_Electrons; i++ )
		((AtlElectron*)fElectrons->At(i))->Print("nohead");
	    AtlElectron::PrintFooter();
	}

	// AtlFast electrons
	if ( IsMC() ) {
	  cout << endl << "AtlFastElectrons: #" << fN_AtlFastElectrons << endl;
	  if ( fN_AtlFastElectrons > 0 ) {
	    AtlFastElectron::PrintHeader();
	    for ( Int_t i = 0; i < fN_AtlFastElectrons; i++ )
	      ((AtlFastElectron*)fAtlFastElectrons->At(i))->Print("nohead");
	    AtlFastElectron::PrintFooter();
	  }
	}
    }

    // =====
    // Muons
    // =====
    if ( opt.Contains("ALL") || opt.Contains("MUON") ) {
	cout << endl << "Muons: #" << fN_Muons << endl;
	if ( fN_Muons > 0 ) {
	    AtlMuon::PrintHeader();
	    for ( Int_t i = 0; i < fN_Muons; i++ )
		((AtlMuon*)fMuons->At(i))->Print("nohead");
	    AtlMuon::PrintFooter();
	}

    	// AtlFast muons
	if ( IsMC() ) {
	  cout << endl << "AtlFastMuons: #" << fN_AtlFastMuons << endl;
	  if ( fN_AtlFastMuons > 0 ) {
	    AtlFastMuon::PrintHeader();
	    for ( Int_t i = 0; i < fN_AtlFastMuons; i++ )
	      ((AtlFastMuon*)fAtlFastMuons->At(i))->Print("nohead");
	    AtlFastMuon::PrintFooter();
	  }
	}
    }

    // ====
    // Taus
    // ====
    if ( opt.Contains("ALL") || opt.Contains("TAU") ) {
	cout << endl << "Taus: #" << fN_Taus << endl;
	if ( fN_Taus > 0 ) {
	    AtlTau::PrintHeader();
	    for ( Int_t i = 0; i < fN_Taus; i++ )
		((AtlTau*)fTaus->At(i))->Print("nohead");
	    AtlTau::PrintFooter();
	}

    	// AtlFast taus
	if ( IsMC() ) {
	  cout << endl << "AtlFastTaus: #" << fN_AtlFastTaus << endl;
	  if ( fN_AtlFastTaus > 0 ) {
	    AtlFastTau::PrintHeader();
	    for ( Int_t i = 0; i < fN_AtlFastTaus; i++ )
	      ((AtlFastTau*)fAtlFastTaus->At(i))->Print("nohead");
	    AtlFastTau::PrintFooter();
	  }
	}
    }

    // =======
    // Photons
    // =======
    if ( opt.Contains("ALL") || opt.Contains("PHOT") ) {
	cout << endl << "Photons: #" << fN_Photons << endl;
	if ( fN_Photons > 0 ) {
	    AtlPhoton::PrintHeader();
	    for ( Int_t i = 0; i < fN_Photons; i++ )
		((AtlPhoton*)fPhotons->At(i))->Print("nohead");
	    AtlPhoton::PrintFooter();
	}

	// AtlFastPhotons
	if ( IsMC() ) {
	  cout << endl << "AtlFastPhotons: #" << fN_AtlFastPhotons << endl;
	  if ( fN_AtlFastPhotons > 0 ) {
	    AtlFastPhoton::PrintHeader();
	    for ( Int_t i = 0; i < fN_AtlFastPhotons; i++ )
	      ((AtlFastPhoton*)fAtlFastPhotons->At(i))->Print("nohead");
	    AtlFastPhoton::PrintFooter();
	  }
	}
    }

    // ==========
    // K0s Decays
    // ==========
    if ( opt.Contains("ALL") || opt.Contains("K0S") ) {
	cout << endl << "K0s Decays: #" << fN_K0sDecaysPiPi << endl;
	if ( fN_K0sDecaysPiPi > 0 ) {
	    AtlK0sDecayPiPi::PrintHeader();
	    for ( Int_t i = 0; i < fN_K0sDecaysPiPi; i++ )
		((AtlK0sDecayPiPi*)fK0sDecaysPiPi->At(i))->Print("nohead");
	    AtlK0sDecayPiPi::PrintFooter();
	}
    }

    // ===========
    // Conversions
    // ===========
    if ( opt.Contains("ALL") || opt.Contains("CONV") ) {
	cout << endl << "Conversions #" << fN_PhotonConv << endl;
	if ( fN_PhotonConv > 0 ) {
	    AtlPhotonConv::PrintHeader();
	    for ( Int_t i = 0; i < fN_PhotonConv; i++ )
		((AtlPhotonConv*)fPhotonConv->At(i))->Print("nohead");
	    AtlPhotonConv::PrintFooter();
	}
    }

    // ========
    // Z decays
    // ========
    if ( opt.Contains("ALL") || opt.Contains("ZDEC") ) {
	cout << endl << "Z0 decays #" << fN_Z0Decays << endl;
	if ( fN_Z0Decays > 0 ) {
	    HepParticle::PrintHeader();
	    for ( Int_t i = 0; i < fN_Z0Decays; i++ )
		((HepZ0Decay*)fZ0Decays->At(i))->Print("nohead");
	    HepParticle::PrintFooter();
	}
    }

    // ========
    // W decays
    // ========
    if ( opt.Contains("ALL") || opt.Contains("WDEC") ) {
	cout << endl << "W->l+nu decays #" << fN_WDecaysLNu << endl;
	if ( fN_WDecaysLNu > 0 ) {
	    for ( Int_t i = 0; i < fN_WDecaysLNu; i++ )
		((AtlWDecayLNu*)fWDecaysLNu->At(i))->Print("nohead");
	}
	cout << endl << "W->jj decays #" << fN_WDecaysJJ << endl;
	if ( fN_WDecaysJJ > 0 ) {
	    for ( Int_t i = 0; i < fN_WDecaysJJ; i++ )
		((AtlWDecayJJ*)fWDecaysJJ->At(i))->Print("nohead");
	}
    }
    
    // ================
    // Top-quark decays
    // ================
    if ( opt.Contains("ALL") || opt.Contains("TOP") ) {
	cout << endl << "Top-quark decays #" << fN_TopDecays << endl;
	if ( fN_TopDecays > 0 ) {
	    for ( Int_t i = 0; i < fN_TopDecays; i++ )
		((HepTopDecay*)fTopDecays->At(i))->Print("nohead");
	}
    }

    // ============
    // End of event
    // ============
    cout << endl
	 << "====================================================================================================" << endl
	 << "end of event " << RunNr() << "/" << EventNr() << endl << endl;
}

//____________________________________________________________________

AtlJet* AtlEvent::AddJet(AtlJet::EType type,
			 Float_t E, Float_t Px, Float_t Py, Float_t Pz,
			 AtlJet::EJetQuality JetQuality,
			 TLorentzVector P_EMSCALE, TLorentzVector P_JESCorrSCALE,
			 Double_t EMJES_EtaCorr, 
			 Double_t BCH_CORR_CELL, Double_t BCH_CORR_JET,
			 Float_t eta_offsetJES) {
    //
    // Add jet of given type to the list of jets
    //
    TClonesArray &jets = *GetJets(type);
    Int_t njets = GetN_Jets(type);
    AtlJet *jet = new(jets[njets]) AtlJet(njets+1, E, Px, Py, Pz, JetQuality,
					  P_EMSCALE, P_JESCorrSCALE,
					  EMJES_EtaCorr,
					  BCH_CORR_CELL, BCH_CORR_JET,
					  eta_offsetJES);
    SetN_Jets(type, njets+1); 
    return jet;
}

//____________________________________________________________________

HepMCParticle* AtlEvent::AddMCParticle(Int_t PdgCode, Float_t Px, Float_t Py,
				       Float_t Pz, Float_t E, Int_t MCStatus,
				       Bool_t IsGenerator,
				       Bool_t IsGenNonInteracting,
				       Bool_t IsGenStable,
				       Bool_t IsGenSimulStable,
				       Bool_t IsGenInteracting,
				       Bool_t IsConversion,
				       Bool_t IsBremsstrahlung) {
    //
    // Add MC truth particle to the list of particles
    //
    TClonesArray &mcparticles = *fMCParticles;
    HepMCParticle *mcprt = new(mcparticles[fN_MCParticles++])
	HepMCParticle(fN_MCParticles, PdgCode, Px, Py, Pz, E, MCStatus,
		      IsGenerator, IsGenNonInteracting,
		      IsGenStable, IsGenSimulStable,
		      IsGenInteracting, IsConversion,
		      IsBremsstrahlung);
    return mcprt;
}

//____________________________________________________________________

HepMCVertex* AtlEvent::AddMCVertex(Float_t x, Float_t y, Float_t z) {
    //
    // Add MC truth vertex to the list of MC vertices
    //
    TClonesArray &mcvertices = *fMCVertices;
    HepMCVertex *mcvtx = new(mcvertices[fN_MCVertices++])
	HepMCVertex(fN_MCVertices, x, y, z);
    return mcvtx;
}

//____________________________________________________________________

AtlIDTrack* AtlEvent::AddIDTrack(Float_t Chi2, Int_t NDoF,
				 Float_t Xref, Float_t Yref, Float_t Zref, Float_t Phi0,
				 Float_t QovP, Float_t D0, Float_t Z0,
				 Float_t Theta, const Float_t CovMat[15]) {
    //
    // Add inner detector track to list of ID tracks
    //
    TClonesArray &id_tracks = *fIDTracks;
    AtlIDTrack *trk = new(id_tracks[fN_IDTracks++])
	AtlIDTrack(fN_IDTracks, Chi2, NDoF, Xref, Yref, Zref, Phi0, QovP,
		   D0, Z0, Theta, CovMat);
    return trk;
}

//____________________________________________________________________

AtlIDTrack* AtlEvent::AddIDTrack(AtlIDTrack *trk) {
    //
    // Add inner detector track to list of ID tracks
    //
    TClonesArray &id_tracks = *fIDTracks;
    AtlIDTrack *trk_clone = new(id_tracks[fN_IDTracks++])
	AtlIDTrack(fN_IDTracks, trk->GetChi2(), trk->GetNDoF(),
		   trk->GetRef().X(), trk->GetRef().Y(), trk->GetRef().Z(), trk->GetPhi0(),
		   trk->QovP(), trk->GetD0(), trk->GetZ0(),
		   trk->GetTheta0(), trk->GetCovMatrix());
    return trk_clone;
}

//____________________________________________________________________

AtlTRTDigit* AtlEvent::AddTRTHit(Float_t DriftTime, Float_t DriftRadius,
				 UInt_t Digit, Int_t EndCapOrBarrel,
				 Int_t PhiSector, Int_t ModuleOrWheel,
				 Int_t StrawLayer, Int_t Straw) {
    //
    // Add TRT digitisation to list of TRT hits
    //
    TClonesArray &hits = *fTRTHits;
    AtlTRTDigit *hit = new(hits[fN_TRTHits++])
        AtlTRTDigit(fN_TRTHits, DriftTime, DriftRadius, Digit);

    hit->SetEndCapOrBarrel(EndCapOrBarrel);
    hit->SetPhiSector(PhiSector);
    hit->SetModuleOrWheel(ModuleOrWheel);
    hit->SetStrawLayer(StrawLayer);
    hit->SetStraw(Straw);

    return hit;
}

//____________________________________________________________________

AtlPixelHit* AtlEvent::AddPixelHit(Float_t X, Float_t Y, Float_t Z) {
    //
    // Add Pixel digitisation to list of Pixel hits
    //
    TClonesArray &hits = *fPixelHits;
    AtlPixelHit *hit = new(hits[fN_PixelHits++])
      AtlPixelHit(fN_PixelHits, X, Y, Z);
    return hit;
}

//____________________________________________________________________

AtlSCT3DHit* AtlEvent::AddSCTHit(Float_t X, Float_t Y, Float_t Z) {
    //
    // Add SCT digitisation to list of SCT hits
    //
    TClonesArray &hits = *fSCTHits;
    AtlSCT3DHit *hit = new(hits[fN_SCTHits++])
      AtlSCT3DHit(fN_SCTHits, X, Y, Z);
    return hit;
}

//____________________________________________________________________

AtlElectron* AtlEvent::AddElectron(Float_t Px, Float_t Py, Float_t Pz,
				   Float_t E, Bool_t IsPositron,
				   Float_t EMWeight, Float_t BkgWeight, 
				   UInt_t OQFlag,
				   UInt_t IsEMBitField,
				   AtlEMShower::EIsEM IsEM,
				   AtlEMShower::EAuthor Author,
				   TLorentzVector PCluster) {
    //
    // Add electron to the list of electrons
    //
    TClonesArray &electrons = *fElectrons;
    AtlElectron *electron = new(electrons[fN_Electrons++])
	AtlElectron(fN_Electrons, Px, Py, Pz, E, IsPositron, 
		    EMWeight, BkgWeight, OQFlag, 
		    IsEMBitField, IsEM, Author, PCluster); 
    return electron;
}

//____________________________________________________________________

AtlMuon* AtlEvent::AddMuon(Float_t Px, Float_t Py, Float_t Pz,
			   Float_t E, Bool_t IsMuPlus, 
			   Float_t EtCone10, Float_t EtCone20, 
			   Float_t EtCone30, Float_t EtCone40, Int_t NtrkCone10,
			   Int_t NtrkCone20, Int_t NtrkCone30, Int_t NtrkCone40,
			   Float_t PtCone10, Float_t PtCone20, Float_t PtCone30,
			   Float_t PtCone40, AtlMuon::EAuthor Author,
			   AtlMuon::EQuality Quality, 
			   Float_t MatchingChi2, Int_t MatchingNDoF, 
			   Bool_t IsCombinedMuon,
			   TLorentzVector PMuonSpecExtrapol, 
			   Int_t MuonSpecExtrapolCharge) {
    //
    // Add muon to the list of muons
    //
    TClonesArray &muons = *fMuons;
    AtlMuon *muon = new(muons[fN_Muons++])
	AtlMuon(fN_Muons, Px, Py, Pz, E, IsMuPlus, EtCone10, EtCone20,
		EtCone30, EtCone40, NtrkCone10, NtrkCone20, NtrkCone30,
		NtrkCone40, PtCone10, PtCone20, PtCone30, PtCone40,
		Author, Quality, MatchingChi2, MatchingNDoF, IsCombinedMuon,
		PMuonSpecExtrapol, MuonSpecExtrapolCharge);
    return muon;
}

//____________________________________________________________________

AtlTau* AtlEvent::AddTau(Float_t Px, Float_t Py, Float_t Pz,
			 Float_t E, Bool_t IsTauPlus, 
			 AtlTau::EAuthor Author, AtlTau::ETauFlag TauFlag) {
    //
    // Add tau to the list of taus
    //
    TClonesArray &taus = *fTaus;
    AtlTau *tau = new(taus[fN_Taus++])
      AtlTau(fN_Taus, Px, Py, Pz, E, IsTauPlus, 
	     Author, TauFlag);
    return tau;
}

//____________________________________________________________________

AtlPhoton* AtlEvent::AddPhoton(Float_t Px, Float_t Py, Float_t Pz,
			       Float_t E,
			       Float_t EMWeight, Float_t BkgWeight, 
			       UInt_t OQFlag, 
			       UInt_t IsEMBitField, 
			       AtlEMShower::EIsEM IsEM,
			       AtlEMShower::EAuthor Author,
			       TLorentzVector PCluster) {
  //
  // Add photon to the list of photons
  //
  TClonesArray &photons = *fPhotons;
  AtlPhoton *photon = new(photons[fN_Photons++])
    AtlPhoton(fN_Photons, Px, Py, Pz, E,
	      EMWeight, BkgWeight,
	      OQFlag, IsEMBitField,
	      IsEM, Author, PCluster);
  return photon;
}

//____________________________________________________________________

AtlFastElectron* AtlEvent::AddAtlFastElectron(Float_t Px, Float_t Py, Float_t Pz,
				   Float_t E, Bool_t IsPositron) {
    //
    // Add electron to the list of electrons
    //
    TClonesArray &electrons = *fAtlFastElectrons;
    AtlFastElectron *electron = new(electrons[fN_AtlFastElectrons++])
	AtlFastElectron(fN_AtlFastElectrons, Px, Py, Pz, E, IsPositron);
    return electron;
}

//____________________________________________________________________

AtlFastMuon* AtlEvent::AddAtlFastMuon(Float_t Px, Float_t Py, Float_t Pz,
			   Float_t E, Bool_t IsMuPlus) {
    //
    // Add muon to the list of muons
    //
    TClonesArray &muons = *fAtlFastMuons;
    AtlFastMuon *muon = new(muons[fN_AtlFastMuons++])
	AtlFastMuon(fN_Muons, Px, Py, Pz, E, IsMuPlus);
    return muon;
}

//____________________________________________________________________

AtlFastTau* AtlEvent::AddAtlFastTau(Float_t Px, Float_t Py, Float_t Pz,
			 Float_t E, Bool_t IsTauPlus) {
    //
    // Add tau to the list of taus
    //
    TClonesArray &taus = *fAtlFastTaus;
    AtlFastTau *tau = new(taus[fN_AtlFastTaus++])
	AtlFastTau(fN_AtlFastTaus, Px, Py, Pz, E, IsTauPlus);
    return tau;
}

//____________________________________________________________________

AtlFastPhoton* AtlEvent::AddAtlFastPhoton(Float_t Px, Float_t Py, Float_t Pz,
			       Float_t E) {
    //
    // Add photon to the list of photons
    //
    TClonesArray &photons = *fAtlFastPhotons;
    AtlFastPhoton *photon = new(photons[fN_AtlFastPhotons++])
	AtlFastPhoton(fN_AtlFastPhotons, Px, Py, Pz, E);
    return photon;
}

//____________________________________________________________________

AtlTopPair*  AtlEvent::AddTopPair(HepTopDecay* top1, HepTopDecay* top2, 
                                  Double_t chi2, Int_t ndof, AtlTopPair::EType type){
    //
    // Add reconstructed Top pair to list of Top pairs
    //

  TClonesArray &TopPairs = *fTopPairs;
  AtlTopPair *TopPair = new(TopPairs[fN_TopPairs++])
  AtlTopPair(fN_TopPairs, top1, top2, chi2, ndof, type);
  return TopPair;

}

//____________________________________________________________________

HepTopDecay* AtlEvent::AddTopDecay(Float_t Px, Float_t Py, Float_t Pz,
				   Float_t E, HepWDecay *WDecay,
				   HepJet *BJetOrig,Float_t Px_j,
				   Float_t Py_j, Float_t Pz_j, Float_t E_j,
				   HepTopDecay::ProductionMode mode) {
    //
    // Add reconstructed Top decay to list of Top decays
    //
    
    TClonesArray &TopDecays = *fTopDecays;
    HepTopDecay *TopDecay = new(TopDecays[fN_TopDecays++])
	HepTopDecay(fN_TopDecays, Px, Py, Pz, E, WDecay, BJetOrig,
		    Px_j, Py_j, Pz_j, E_j, mode);
    return TopDecay;
}

//____________________________________________________________________

AtlWDecayLNu* AtlEvent::AddWDecayLNu(Float_t Px_W, Float_t Py_W, Float_t Pz_W,
				     Float_t E_W, HepParticle *lepton_orig, Float_t Px_lep,
				     Float_t Py_lep, Float_t Pz_lep, Float_t E_lep,
				     HepParticle* neutrino,
				     HepWDecay::ProductionMode mode) {
    //
    // Add reconstructed W -> l+nu decay to list of W decays
    //
    TClonesArray &WdecaysLNu = *fWDecaysLNu;
    AtlWDecayLNu *WDecayLNu = new(WdecaysLNu[fN_WDecaysLNu++])
	AtlWDecayLNu(fN_WDecaysLNu, Px_W, Py_W, Pz_W, E_W,
		     lepton_orig, Px_lep, Py_lep, Pz_lep, E_lep, neutrino, mode);
    return WDecayLNu;
}

//____________________________________________________________________

AtlWDecayJJ* AtlEvent::AddWDecayJJ(Float_t Px_W, Float_t Py_W, Float_t Pz_W,
				   Float_t E_W, AtlJet *jet1_orig, AtlJet *jet2_orig,
				   Float_t Px_j1, Float_t Py_j1, Float_t Pz_j1, Float_t E_j1,
				   Float_t Px_j2, Float_t Py_j2, Float_t Pz_j2, Float_t E_j2,
				   HepWDecay::ProductionMode mode) {
        TClonesArray &WdecaysJJ = *fWDecaysJJ;
    AtlWDecayJJ *WDecayJJ = new(WdecaysJJ[fN_WDecaysJJ++])
	AtlWDecayJJ(fN_WDecaysJJ, Px_W, Py_W, Pz_W, E_W, jet1_orig, jet2_orig,
		    Px_j1, Py_j1, Pz_j1, E_j1, Px_j2, Py_j2, Pz_j2, E_j2, mode);
    return WDecayJJ;
}

//____________________________________________________________________

HepParticle* AtlEvent::AddNeutrino(Float_t Px, Float_t Py, Float_t Pz, Float_t E,
				   Int_t PdgCode) {
    //
    // Add neutrino to the list of reconstructed neutrinos
    //
    // Valid PDG codes:
    //    12 = nu_e
    //   -12 = nu_e_bar
    //    14 = nu_mu
    //   -14 = nu_mu_bar
    //    16 = nu_tau
    //   -16 = nu_tau_bar
    //

    // Check PDG code first
    Int_t pdg = TMath::Abs(PdgCode);
    if ( pdg != 12 && pdg != 14 && pdg != 16 ) {
	Error("AddNeutrino", "Invalid PDG code %d given. Abort!",
	      PdgCode);
	gSystem->Abort(0);
    }

    // Now add
    TClonesArray &neutrinos = *fNeutrinos;
    HepParticle *neutrino = new(neutrinos[fN_Neutrinos++])
	HepParticle(fN_Neutrinos, Px, Py, Pz, E, PdgCode);
    return neutrino;
}

//____________________________________________________________________

HepZ0Decay* AtlEvent::AddZ0Decay(Float_t Px, Float_t Py, Float_t Pz, Float_t E,
				 TObject* Daughter1, TObject* Daughter2,
                                 HepParticle ReFitDaughter1, HepParticle ReFitDaughter2) {
    //
    // Add reconstructed Z0 decay to list of Z0 decays
    //
    TClonesArray &Z0decays = *fZ0Decays;
    HepZ0Decay *Z0Decay = new(Z0decays[fN_Z0Decays++])
	HepZ0Decay(fN_Z0Decays, Px, Py, Pz, E, Daughter1, Daughter2,
		   ReFitDaughter1, ReFitDaughter2);
    return Z0Decay;
}

//____________________________________________________________________

HepZ0Decay* AtlEvent::AddZ0Decay(Float_t Px, Float_t Py, Float_t Pz, Float_t E,
				 TObject* Daughter1, TObject* Daughter2) {
    //
    // Add reconstructed Z0 decay to list of Z0 decays
    //
    TClonesArray &Z0decays = *fZ0Decays;
    HepZ0Decay *Z0Decay = new(Z0decays[fN_Z0Decays++])
	HepZ0Decay(fN_Z0Decays, Px, Py, Pz, E, Daughter1, Daughter2);
    return Z0Decay;
}

//____________________________________________________________________

AtlK0sDecayPiPi* AtlEvent::AddK0sDecayPiPi(Float_t Px, Float_t Py, Float_t Pz, Float_t E,
				       AtlIDTrack* Daughter1, AtlIDTrack* Daughter2,
				       HepVertex* Vtx,
				       HepParticle Fit_Daughter1, HepParticle Fit_Daughter2) {

    TClonesArray &K0sdecays =  *fK0sDecaysPiPi;
    AtlK0sDecayPiPi *K0sDecayClone = new(K0sdecays[fN_K0sDecaysPiPi++])
	AtlK0sDecayPiPi(fN_K0sDecaysPiPi, Px, Py, Pz, E, Daughter1, Daughter2,
		    Vtx, GetPrimaryVtx(), Fit_Daughter1, Fit_Daughter2);

    return K0sDecayClone;
}

//____________________________________________________________________

AtlPhotonConv* AtlEvent::AddPhotonConv(Float_t Px, Float_t Py, Float_t Pz, Float_t E,
				     AtlIDTrack* Daughter1, AtlIDTrack* Daughter2,
				     HepVertex* Vtx,
				     HepParticle Fit_Daughter1, HepParticle Fit_Daughter2) {
    
    TClonesArray &PhotonConv =  *fPhotonConv;
    AtlPhotonConv *PhotonConvClone = new(PhotonConv[fN_PhotonConv++])
	AtlPhotonConv(fN_PhotonConv, Px, Py, Pz, E, Daughter1, Daughter2,
		     Vtx, GetPrimaryVtx(), Fit_Daughter1, Fit_Daughter2);
    
    return PhotonConvClone;
}

//____________________________________________________________________


AtlLambdaDecayPPi* AtlEvent::AddLambdaDecayPiPi(Float_t Px, Float_t Py, Float_t Pz, Float_t E,
						AtlIDTrack* Proton, AtlIDTrack* Pion, 
						HepVertex* Vertex, HepVertex* PrimaryVtx,
						HepParticle Fit_Daughter1, HepParticle Fit_Daughter2) {
    //
    // Add reconstructed Lambda decay to list of Lambda decays
    //
    TClonesArray &LambdaDecays = *fLambdaDecaysPiPi;
    AtlLambdaDecayPPi *LambdaDecayClone = new(LambdaDecays[fN_LambdaDecaysPiPi++])
      AtlLambdaDecayPPi(fN_LambdaDecaysPiPi, Px, Py, Pz, E, Proton, Pion, Vertex, PrimaryVtx,
			Fit_Daughter1, Fit_Daughter2);
    return LambdaDecayClone;
}

//____________________________________________________________________

AtlD0DecayKPi* AtlEvent::AddD0DecayKPi(Float_t Px, Float_t Py, Float_t Pz, Float_t E,
				       AtlIDTrack* Kaon, AtlIDTrack* Pion, 
				       HepVertex* Vertex, HepVertex* PrimaryVtx,
				       HepParticle Fit_Daughter1, HepParticle Fit_Daughter2) {
    //
    // Add reconstructed D0 decay to list of D0 decays
    //
    TClonesArray &D0Decays = *fD0DecaysKPi;
    AtlD0DecayKPi *D0DecayClone = new(D0Decays[fN_D0DecaysKPi++])
      AtlD0DecayKPi(fN_D0DecaysKPi, Px, Py, Pz, E, Kaon, Pion, Vertex, PrimaryVtx,
		    Fit_Daughter1, Fit_Daughter2);
    return D0DecayClone;
}

//____________________________________________________________________

AtlDstarDecayDPi* AtlEvent::AddDstarDecayDPi(Float_t Px, Float_t Py, Float_t Pz, Float_t E,
				       AtlD0DecayKPi* D0, AtlIDTrack* Pion, 
				       HepVertex* Vertex, HepVertex* PrimaryVtx,
				       HepParticle Fit_Daughter1, HepParticle Fit_Daughter2) {
    //
    // Add reconstructed Dstar decay to list of Dstar decays
    //
    TClonesArray &DstarDecays = *fDstarDecaysDPi;
    AtlDstarDecayDPi *DstarDecayClone = new(DstarDecays[fN_DstarDecaysDPi++])
	AtlDstarDecayDPi(fN_DstarDecaysDPi, Px, Py, Pz, E, D0, Pion, Vertex, PrimaryVtx,
			 Fit_Daughter1, Fit_Daughter2);
    return DstarDecayClone;
}

//____________________________________________________________________

AtlPhiDecayKK* AtlEvent::AddPhiDecayKK(Float_t Px, Float_t Py, Float_t Pz, Float_t E,
				       AtlIDTrack* Daughter1, AtlIDTrack* Daughter2,
				       HepVertex* Vtx,
				       HepParticle Fit_Daughter1, HepParticle Fit_Daughter2) {
    //
    // Add reconstructed Phi decay to list of Phi decays
    //
    TClonesArray &Phidecays = *fPhiDecaysKK;
    AtlPhiDecayKK *PhiDecayClone = new(Phidecays[fN_PhiDecaysKK++])
	AtlPhiDecayKK(fN_PhiDecaysKK, Px, Py, Pz, E, Daughter1, Daughter2,
		      Vtx,GetPrimaryVtx(),Fit_Daughter1, Fit_Daughter2);
    return PhiDecayClone;
}

//____________________________________________________________________

HepVertex* AtlEvent::AddVertex(Float_t X, Float_t Y, Float_t Z,
			       Float_t Chi2, Int_t NDoF, 
			       Float_t errX, Float_t errY, Float_t errZ,
			       Int_t n_tracks, Int_t type) {
    //
    // Add reconstructed vertex to the list of vertices
    //
    TClonesArray &vertices = *fVertices;
    HepVertex *vtx = new(vertices[fN_Vertices++])
	HepVertex(fN_Vertices, X, Y, Z, Chi2, NDoF);
    vtx->SetNDaughters(n_tracks);
    vtx->SetErrors(errX, errY, errZ);
    if ( type == 1 ) 
      vtx->SetPrimary();
    else if ( type == 3 )
      vtx->SetPileUp();
    else 
      vtx->SetNotSpecified();

    return vtx;
}

//____________________________________________________________________

HepMCParticle* AtlEvent::GetMCParticle_ById(Int_t Id) const {
    //
    // Get MC particle by its Id
    //
    // Try to avoid this function since it is rather slow.
    // Also, the Id numbers might not be unique.
    // Instead fetch the particle from the clones array via
    // GetMCParticles()->At(i)
    //
    for ( Int_t i = 0; i < fN_MCParticles; i++ ) {
	HepMCParticle *particle = (HepMCParticle*)fMCParticles->At(i);
	if ( Id == particle->GetId() ) return particle;
    }
    if ( gDebug && Id != 0 )
	Warning("GetMCParticle_ById",
		"MC particle with Id %-d does not exist.", Id);
    return 0;
}

//____________________________________________________________________

TList* AtlEvent::GetMCTops(Bool_t good) const {
    //
    //good=kTRUE (default): Returns all MC Tops,which decay in W and quark(but not t-quark)
    //good=kFALSE	  :Returns all MCTops produced by the generator
    // !!! The user is responsible for deleting this list    !!!
    // !!! (not its contents!) when it is not needed anymore !!!
    // !!! to avoid memory leaks.                            !!!
    //
    
    if (!IsMC()){
	Error("GetMCTops"," Event is not MC! -> Abort");
	gSystem->Abort(0);
    }
    TList *ListMCTops = new TList;
    ListMCTops->AddAll(GetMCParticles("t"));
    ListMCTops->AddAll(GetMCParticles("t_bar"));
    
    if (good){
	TList *GoodTops = new TList;
	HepMCParticle *top = 0;
	TIter nexttop(ListMCTops);
	while ((top=(HepMCParticle*)nexttop())){
	    Bool_t containsW=kFALSE;
	    Bool_t containsQuark=kFALSE;
	    Int_t NDaughters=top->GetN_Daughters();
	    if (NDaughters<2) continue;
	    if (!top->IsGenerator()) continue;
	    if (!top->IsGoodMother()) continue;
	    for (Int_t j=0;j<NDaughters;j++){
		if (((HepMCParticle*)top->GetDaughters()->At(j))->IsWBoson()) containsW=kTRUE;  
		if (((HepMCParticle*)top->GetDaughters()->At(j))->IsQuark()&& !((HepMCParticle*)top->GetDaughters()->At(j))->IsTopQuark()) containsQuark=kTRUE; 
	    }//end for j
	    if (containsW && containsQuark){
		GoodTops->Add(top);	      
	    }
	}//end while 
	delete ListMCTops;
	return GoodTops;
    }//good
    else return ListMCTops;    
}

//____________________________________________________________________

HepMCParticle* AtlEvent::GetGoodMother(HepMCParticle *particle){
    //
    // Look at chain of daughters of 'particle'
    // and return the daughter which actually
    // gives birth to another particle.
    // This is written to help out in case of bad MC samples
    // where mother particles give birth to themselves.
    //
    HepMCParticle *null = 0;
    
    if ( particle->GetN_Daughters() == 0 ) {
	Error("GetGoodMother","This particle does not have any daughters.");
	return null;
    }
    
    HepMCParticle *daughter = particle;
    while ( !daughter->IsGoodMother() ) {
	if( daughter->GetN_Daughters() != 0 ) {
	    daughter = (HepMCParticle*)daughter->GetDaughters()->At(0);
        }
        else {
	    Error("GetGoodMother","This particle has daughters that are no good mothers because they do not have any daughters. DEAD END");
	    return null;
        }
    }
    
    return daughter;
}

//____________________________________________________________________

AtlElectron* AtlEvent::GetElectron_ById(Int_t Id) const {
    //
    // Get Electron by its Id
    //
    // Try to avoid this function since it is rather slow.
    // Also, the Id numbers might not be unique.
    // Instead fetch the particle from the clone array via
    // GetElectrons()->At(i)
    //
    for ( Int_t i = 0; i < fN_Electrons; i++ ) {
	AtlElectron *el = (AtlElectron*)fElectrons->At(i);
	if ( Id == el->GetId() ) return el;
    }
    if ( gDebug && Id != 0 )
	Warning("GetElectron_ById",
		"AtlElectron with Id %-d does not exist.", Id);
    return 0;
}

//____________________________________________________________________

AtlMuon* AtlEvent::GetMuon_ById(Int_t Id) const {
    //
    // Get Muon by its Id
    //
    // Try to avoid this function since it is rather slow.
    // Also, the Id numbers might not be unique.
    // Instead fetch the particle from the clone array via
    // GetElectrons()->At(i)
    //
    for ( Int_t i = 0; i < fN_Muons; i++ ) {
	AtlMuon *mu = (AtlMuon*)fMuons->At(i);
	if ( Id == mu->GetId() ) return mu;
    }
    if ( gDebug && Id != 0 )
	Warning("GetMuon_ById",
		"AtlMuon with Id %-d does not exist.", Id);
    return 0;
}

//____________________________________________________________________

TList* AtlEvent::GetMCParticles(const char* PrtType) const {
    //
    // Return list of all MC particles of given type
    //
    // !!! The user is responsible for deleting this list    !!!
    // !!! (not its contents!) when it is not needed anymore !!!
    // !!! to avoid memory leaks.                            !!!
    //
    TList *particles = new TList;
    for ( Int_t i = 0; i < fN_MCParticles; i++ ) {
	HepMCParticle *prt = (HepMCParticle*)fMCParticles->At(i);
	if ( HepDatabasePDG::Instance()->GetParticle(PrtType)->PdgCode()
	     == prt->GetPdgCode() ) particles->Add(prt);
    }
    return particles;
}

//____________________________________________________________________

void AtlEvent::PrintMCParticles(const char* PrtType) const {
    //
    // Print all MC particle of given type
    //
    cout << endl;
    HepMCParticle::PrintHeader();
    TList *particles = GetMCParticles(PrtType);
    TIter next_prt(particles);
    HepMCParticle *prt = 0;
    while ( (prt = (HepMCParticle*)next_prt()) ) {
	prt->Print("nohead");
    }
    HepMCParticle::PrintFooter();
    cout << endl;
    delete particles;
}

//____________________________________________________________________

TList* AtlEvent::GetMCNeutrinos(Bool_t sort) const {
    //
    // Get list of all MC true neutrino particles
    //
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    // !! IMPORTANT: The user is responsible for deleting the !!
    // !! returned TList in order to avoid memory leaks       !!
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    //
    TList *neutrinos = new TList;
    HepMCParticle *prt = 0;
    for ( Int_t i = 0; i < fN_MCParticles; i++ ) {
	prt = (HepMCParticle*)fMCParticles->At(i);
	if ( ((prt)->GetPdgCode()== 12) || ((prt)->GetPdgCode()== -12) || 
	     ((prt)->GetPdgCode()== 14) || ((prt)->GetPdgCode()== -14) ||
	     ((prt)->GetPdgCode()== 16) || ((prt)->GetPdgCode()== -16) ) 
	    neutrinos->Add(prt);
    }
    
    if ( sort ) neutrinos->Sort(kSortDescending);
    
    return neutrinos; 
}

//____________________________________________________________________

HepMCParticle* AtlEvent::GetLeadingMCNeutrino() const {
    //
    // Get MC truth neutrino with largest Pt
    //
    TList *neutrinos = GetMCNeutrinos();
    HepMCParticle *nu = 0;
    if ( neutrinos->GetEntries() > 0 )
	nu = (HepMCParticle*)neutrinos->At(0);
    delete neutrinos;
    return nu;
}

//____________________________________________________________________

void AtlEvent::PrintMCDaughters(HepMCParticle *prt) const {
    //
    // Print all daughters of given MC particle
    //
    if ( prt == 0 ) return;
    TRefArray *daughters = prt->GetDaughters();

    cout << endl;
    HepMCParticle::PrintHeader();
    prt->Print("nohead");
    cout << "   |" << endl
	 << "   |" << endl
	 << "   V" << endl;
    TIter next(daughters);
    while ( HepMCParticle *daughter = (HepMCParticle*)next() )
	daughter->Print("nohead");
    HepMCParticle::PrintFooter();
    cout << endl;
}

//____________________________________________________________________

void AtlEvent::PrintMCMothers(HepMCParticle *prt) const {
    //
    // Print all mother particles of given MC particle
    //
    if ( prt == 0 ) return;
    TRefArray *mothers = prt->GetMothers();

    cout << endl;
    HepMCParticle::PrintHeader();
    TIter next(mothers);
    while ( HepMCParticle *mother = (HepMCParticle*)next() )
	mother->Print("nohead");
    cout << "   |" << endl
	 << "   |" << endl
	 << "   V" << endl;
    prt->Print("nohead");
    HepMCParticle::PrintFooter();
    cout << endl;
}

//____________________________________________________________________

TList* AtlEvent::GetMCGenealogy(HepMCParticle *prt) const {
    //
    // Get list of all anchestors of given MC particle
    //
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    // !!! The user is responsible for deleting the returned list     !!!
    // !!! (not the list elements!) afterwards to avoid memory leaks. !!!
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    //
    TList *history = new TList;
    while ( prt != 0 ) {
	history->Add(prt);
	HepMCParticle *mother = prt->DaughterOf();
	prt = mother;
    }
    return history;
}

//____________________________________________________________________

void AtlEvent::PrintMCGenealogy(HepMCParticle *prt) const {
    //
    // Print all anchestors of given MC particle
    //

    // Get list of anchestors
    TList *history = GetMCGenealogy(prt);

    // Print list backwards
    cout << endl;
    HepMCParticle::PrintHeader();
    TIter last(history, kIterBackward);
    Bool_t first = kTRUE;
    HepMCParticle* p = 0;
    while ( (p = (HepMCParticle*)last()) ) {
	if ( first ) {
	    first = kFALSE;
	} else {
	    cout << "   |" << endl
		 << "   |" << endl
		 << "   V" << endl;
	}
	p->Print("nohead");
    }

    // Add info about all mother IDs if more than one
    if (prt->GetN_Mothers() > 1) {
	printf("        (mother IDs=");
	TIter next(prt->GetMothers());
	Bool_t first = kTRUE;
	while ( HepMCParticle* mother = (HepMCParticle*)next() ) {
	    if(!first) printf(",");
	    first = kFALSE;
	    printf("%-d", mother->GetId());
	}
	printf(")\n");
    }

    HepMCParticle::PrintFooter();
    cout << endl;

    // Clean up
    delete history;
}

//____________________________________________________________________

void AtlEvent::PrintMCGenealogyTree(HepMCParticle *prt, TString *padding,
                                    TList *CheckList) const {
    //
    // Helper function
    //
    // Print full tree of daughters, grand-daughters, ... for given particle
    // with the exception of any particles in check list
    // (this is to prevent from double-printing)
    //
    //
    // GINUS denotes (in this order):
    //
    // IsGenerator()
    // IsGenInteracting()
    // IsGenNonInteracting()
    // IsGenSimulStable()
    // IsGenStable()
    //

    Bool_t cleanup = kFALSE;

    // Create check list if not exists already.
    // In this case the list must be removed at the end
    if ( CheckList == 0 ) {
	CheckList = new TList;
	cleanup = kTRUE;
    }

    // Check if particle was already printed
    if ( CheckList->FindObject(prt) == 0 ) {
	CheckList->Add(prt);
	TString *padding_new = new TString(padding->Data());

	// Print particle information
	printf("%-s (ID=%-d, E=%-.2fGeV, Theta=%-.fdeg, Phi=%-.fdeg, GINUS=%-d%-d%-d%-d%-d",
	       prt->GetPdgName(), prt->GetId(),
	       prt->E(), prt->Theta()*180/TMath::Pi(),
	       prt->Phi()*180/TMath::Pi(),
	       prt->IsGenerator(),
	       prt->IsGenInteracting(),
	       prt->IsGenNonInteracting(),
	       prt->IsGenSimulStable(),
	       prt->IsGenStable());

	if (prt->GetN_Mothers() > 1) {
	    //
	    // If there is more than one mother print all
	    // mother Ids of the particle
	    //
	    printf(", mother IDs=");
	    TIter next(prt->GetMothers());
	    Bool_t first = kTRUE;
	    while ( HepMCParticle* mother = (HepMCParticle*)next() ) {
		if(!first) printf(",");
		first = kFALSE;
		printf("%-d", mother->GetId());
	    }
	}

	printf(")\n");

	// Get list of daughters
	TRefArray *daughters = prt->GetDaughters();
	if ( daughters->GetEntries() > 0 ) padding_new->Append("|       ");

	// Loop over all daughters and print them in a recursive way
	TIter next(daughters);
	while ( HepMCParticle *daughter = (HepMCParticle*)next() ) {
	    if ( daughter == daughters->Last() )
		padding_new->Replace(padding_new->Length()-8, 1, " ");
	    cout << padding->Data() << "|" << endl;
	    cout << padding->Data() << "+----- ";
	    PrintMCGenealogyTree(daughter, padding_new, CheckList);
	}
	if ( daughters->GetSize() > 0 )
	    cout << padding->Data() << endl;
	delete padding_new;
    }

    // Clean-up
    if ( cleanup ) delete CheckList;
}

//____________________________________________________________________

void AtlEvent::PrintMCGenealogyTree(Int_t First, Int_t Last) const {
    //
    // Print genealogical tree of all MC particles within
    // given range of IDs
    //
    // !!! Warning: Output might be huge !!!
    //
    TList *CheckList = new TList;
    TString *padding = new TString("");

    // Validate range
    if ( First < 1 ) First = 1;
    if ( Last > fN_MCParticles ) Last = fN_MCParticles;
    if ( Last < First ) { Int_t tmp = First; First = Last; Last = tmp; }

    // Loop over all particles
    cout << endl;
    for ( Int_t i = First-1; i < Last; i++ ) {
	HepMCParticle *prt = (HepMCParticle*)fMCParticles->At(i);
	PrintMCGenealogyTree(prt, padding, CheckList);
    }

    // Clean-up
    delete CheckList;
    delete padding;
}

//____________________________________________________________________

AtlJet* AtlEvent::GetLeadingJet(AtlJet::EType type) const {
    //
    // Get jet of given type with largest Et
    //
    if ( GetN_Jets(type) < 1 ) {
	Warning("GetLeadingJet",
		"No jets of type \"%s\" in this event!",
		AtlJet::NameOfType(type));
	return 0;
    }
    TClonesArray *jets = GetJets(type);
    if ( !jets->IsSorted() ) jets->Sort();
    // Note that currently TCloneArrays can only be sorted in
    // ascending order :(
    return (AtlJet*)jets->Last();
}

//____________________________________________________________________

Int_t AtlEvent::GetN_Jets(AtlJet::EType type) const {
  //
  // Return no. of jets for given type
  //
  switch ( type ) {
  case AtlJet::kCone4H1Tower:
    return fN_Cone4H1TowerJets;
  case AtlJet::kCone7H1Tower:
    return fN_Cone7H1TowerJets;
  case AtlJet::kCone4H1Topo:
    return fN_Cone4H1TopoJets;
  case AtlJet::kCone7H1Topo:
    return fN_Cone7H1TopoJets;
  case AtlJet::kMCCone4Hadron:
    return fN_MCCone4HadronJets;
  case AtlJet::kMCCone7Hadron:
    return fN_MCCone7HadronJets;
  case AtlJet::kMCAntiKt4Hadron:
    return fN_MCAntiKt4HadronJets;
  case AtlJet::kMCAntiKt6Hadron:
    return fN_MCAntiKt6HadronJets;
  case AtlJet::kMCAntiKt4HadronPileup:
    return fN_MCAntiKt4HadronPileupJets;
  case AtlJet::kAntiKt4H1Topo:
    return fN_AntiKt4H1TopoJets;
  case AtlJet::kAntiKt4H1Tower:
    return fN_AntiKt4H1TowerJets;
  case AtlJet::kAntiKt6H1Tower:
    return fN_AntiKt6H1TowerJets;
  case AtlJet::kAntiKt4TopoEM:
    return fN_AntiKt4TopoEMJets;
  case AtlJet::kAntiKt4TopoEMJES:
    return fN_AntiKt4TopoEMJESJets;
  case AtlJet::kAntiKt4LCTopo:
    return fN_AntiKt4LCTopoJets;
  case AtlJet::kAntiKt4Tower:
    return fN_AntiKt4TowerJets;
  case AtlJet::kAntiKt6TopoEM:
    return fN_AntiKt6TopoEMJets;
  case AtlJet::kAntiKt4Topo:
    return fN_AntiKt4TopoJets;
  case AtlJet::kAntiKt6Tower:
    return fN_AntiKt6TowerJets;
  case AtlJet::kAntiKt6LCTopo:
    return fN_AntiKt6LCTopoJets;
  case AtlJet::kAntiKt6Topo:
    return fN_AntiKt6TopoJets;
  case AtlJet::kAtlFast:
    return fN_AtlFastJets;
  default:
    Error("Get_NJets", "Invalid jet type given. Abort!");
    gSystem->Abort(0);
  }
  return 0;
}

//____________________________________________________________________

void AtlEvent::SetN_Jets(AtlJet::EType type, Int_t NJets) {
  //
  // Set no. of jets for given type
  //
  switch ( type ) {
  case AtlJet::kCone4H1Tower:
    fN_Cone4H1TowerJets = NJets;
    break;
  case AtlJet::kCone7H1Tower:
    fN_Cone7H1TowerJets = NJets;
    break;
  case AtlJet::kCone4H1Topo:
    fN_Cone4H1TopoJets = NJets;
    break;
  case AtlJet::kCone7H1Topo:
    fN_Cone7H1TopoJets = NJets;
    break;
  case AtlJet::kMCCone4Hadron:
    fN_MCCone4HadronJets = NJets;
    break;
  case AtlJet::kMCCone7Hadron:
    fN_MCCone7HadronJets = NJets;
    break;
  case AtlJet::kMCAntiKt4Hadron:
    fN_MCAntiKt4HadronJets = NJets;
    break;
  case AtlJet::kMCAntiKt6Hadron:
    fN_MCAntiKt6HadronJets = NJets;
    break;
  case AtlJet::kMCAntiKt4HadronPileup:
    fN_MCAntiKt4HadronPileupJets = NJets;
    break;
  case AtlJet::kAntiKt4H1Topo:
    fN_AntiKt4H1TopoJets = NJets;
    break;
  case AtlJet::kAntiKt4H1Tower:
    fN_AntiKt4H1TowerJets = NJets;
    break;
  case AtlJet::kAntiKt6H1Tower:
    fN_AntiKt6H1TowerJets = NJets;
    break;
  case AtlJet::kAntiKt4TopoEM:
    fN_AntiKt4TopoEMJets = NJets;
    break;
    break;
  case AtlJet::kAntiKt4TopoEMJES:
    fN_AntiKt4TopoEMJESJets = NJets;
    break;
  case AtlJet::kAntiKt4LCTopo:
    fN_AntiKt4LCTopoJets = NJets;
    break;
  case AtlJet::kAntiKt4Tower:
    fN_AntiKt4TowerJets = NJets;
    break;
  case AtlJet::kAntiKt6TopoEM:
    fN_AntiKt6TopoEMJets = NJets;
    break;
  case AtlJet::kAntiKt4Topo:
    fN_AntiKt4TopoJets = NJets;
    break;
  case AtlJet::kAntiKt6Tower:
    fN_AntiKt6TowerJets = NJets;
    break;
  case AtlJet::kAntiKt6LCTopo:
    fN_AntiKt6LCTopoJets = NJets;
    break;
  case AtlJet::kAntiKt6Topo:
    fN_AntiKt6TopoJets = NJets;
    break;
  case AtlJet::kAtlFast:
    fN_AtlFastJets = NJets;
    break;
  default:
    Error("Set_NJets", "Invalid jet type given. Abort!");
    gSystem->Abort(0);
  }
}

//____________________________________________________________________

TClonesArray* AtlEvent::GetJets(AtlJet::EType type) const {
  //
  // Return all jets of given type
  //
  switch ( type ) {
  case AtlJet::kCone4H1Tower:
    return fCone4H1TowerJets;
  case AtlJet::kCone7H1Tower:
    return fCone7H1TowerJets;
  case AtlJet::kCone4H1Topo:
    return fCone4H1TopoJets;
  case AtlJet::kCone7H1Topo:
    return fCone7H1TopoJets;
  case AtlJet::kMCCone4Hadron:
    return fMCCone4HadronJets;
  case AtlJet::kMCCone7Hadron:
    return fMCCone7HadronJets;
  case AtlJet::kMCAntiKt4Hadron:
    return fMCAntiKt4HadronJets;
  case AtlJet::kMCAntiKt6Hadron:
    return fMCAntiKt6HadronJets;
  case AtlJet::kMCAntiKt4HadronPileup:
    return fMCAntiKt4HadronPileupJets;
  case AtlJet::kAntiKt4H1Topo:
    return fAntiKt4H1TopoJets;
  case AtlJet::kAntiKt4H1Tower:
    return fAntiKt4H1TowerJets;
  case AtlJet::kAntiKt6H1Tower:
    return fAntiKt6H1TowerJets;
  case AtlJet::kAntiKt4TopoEM:
    return fAntiKt4TopoEMJets;
  case AtlJet::kAntiKt4TopoEMJES:
    return fAntiKt4TopoEMJESJets;
  case AtlJet::kAntiKt4LCTopo:
    return fAntiKt4LCTopoJets;
  case AtlJet::kAntiKt4Tower:
    return fAntiKt4TowerJets;
  case AtlJet::kAntiKt6TopoEM:
    return fAntiKt6TopoEMJets;
  case AtlJet::kAntiKt4Topo:
    return fAntiKt4TopoJets;
  case AtlJet::kAntiKt6Tower:
    return fAntiKt6TowerJets;
  case AtlJet::kAntiKt6LCTopo:
    return fAntiKt6LCTopoJets;
  case AtlJet::kAntiKt6Topo:
    return fAntiKt6TopoJets;  
  case AtlJet::kAtlFast:
    return fAtlFastJets;
  default:
    Error("GetJets", "Invalid jet type given. Abort!");
    gSystem->Abort(0);
  }
  return 0;
}

//____________________________________________________________________

TList* AtlEvent::GetElectrons(AtlElectron::EAuthor author,
			      AtlEMShower::EIsEM IsEM, Float_t Pt_min,
			      Float_t Pt_max, Float_t Eta_min,
			      Float_t Eta_max, Float_t EtCone20_max,
			      Bool_t sort, Bool_t exclude_crack,
    			      Float_t EtCone20_IsoFactor,
			      Bool_t use_cluster_eta, 
			      AtlEMShower::ECaloIsoCorrection CaloIsoCorrection) {
    //
    // Returns a list of electrons matching the given conditions.
    //
    // The author variable indicates the reconstruction type for the
    // electrons. Combinations are possible. For details see the
    // AtlElectron class.
    // With the help of the IsEM type one can search for loose, medium
    // or tight electrons.
    // The list is sorted in descending order of Pt by default.
    // Pt limits are given in GeV.
    // The list can be composed of electrons excluding the crack region
    // of the EM calorimeter (default) or including it.
    // If the isolation requirement EtCone20 should be modified by a
    // pt-dependence like EtCone20 + factor*Pt, then the factor can be
    // given as EtCone20_IsoFactor.
    // If the use of cluster eta is desired for the eta cut, then set
    // use_cluster_eta to kTRUE.
    //
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    // !!! The user is responsible for deleting this list    !!!
    // !!! (not its contents!) when it is not needed anymore !!!
    // !!! to avoid memory leaks.                            !!!
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    //
    TList *electrons = new TList();
    AtlElectron *el = 0;
    Float_t Pt  = 0.;
    Float_t eta = 0.;
    Float_t eta_abs = 0.;
    for ( Int_t i = 0; i < fN_Electrons; i++ ) {
	el = (AtlElectron*)fElectrons->At(i);
	if ( (el->GetAuthor() & author) && (el->IsEM(IsEM))
	     && (el->GetEtCone20(CaloIsoCorrection) <= (EtCone20_max + EtCone20_IsoFactor*el->Pt())) ) {
	    Pt  = el->Pt();
	    if ( use_cluster_eta ){
		  eta = el->ClusterEta();
	    }
	    else{
		  eta = el->Eta();
        }
	    eta_abs = TMath::Abs(eta);
	    if ( Pt > Pt_min && Pt < Pt_max ) {
		  if ( eta > Eta_min && eta < Eta_max ) {
		    if ( exclude_crack ) {
		      if ( !((1.37 < eta_abs) && (eta_abs < 1.52)) ){
		        electrons->Add(el);
		      }
		    }
		    else{
		  	  electrons->Add(el);
		    }
		  }
	    }
	}
    }
    
    if ( sort ) electrons->Sort(kSortDescending);
    
    return electrons;
}

//____________________________________________________________________


TList* AtlEvent::GetVtxTracks(Float_t Chi2ovNDoF_max, Float_t Pt_min, Float_t Pt_max,
			      Float_t Eta_min, Float_t Eta_max, Bool_t sort) {
    //
    // Returns a list of tracks matching the given conditions.
    // Pt limits are given in GeV.
    //
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    // !!! The user is responsible for deleting this list    !!!
    // !!! (not its contents!) when it is not needed anymore !!!
    // !!! to avoid memory leaks.                            !!!
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    //
    TList *tracks = new TList;
    AtlIDTrack *trk = 0;
    Float_t Pt  = 0.;
    Float_t eta = 0.;
    
    for ( Int_t i = 0; i < fN_IDTracks; i++ ) {
	trk = (AtlIDTrack*)fIDTracks->At(i);
	if ( trk->IsVtxTrack() ) {
	    Pt  = trk->Pt();
	    eta = TMath::Abs(trk->Eta());
	    if ( Pt >= Pt_min && Pt <= Pt_max ) {
		if ( eta >= Eta_min && eta <= Eta_max ) {
		    if (  trk->Chi2ovNDoF() <= Chi2ovNDoF_max )  tracks->Add(trk);
		}
	    }
	}
    }

    if ( sort ) tracks->Sort(kSortDescending);
    return tracks;
}

//____________________________________________________________________


TList* AtlEvent::GetSecVtxTracks(Float_t Chi2ovDoF_max, Float_t Pt_min, Float_t Pt_max,
				 Float_t Eta_min, Float_t Eta_max, Bool_t sort) {
    //
    // Returns a list of tracks matching the given conditions.
    // Pt limits are given in GeV.
    //
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    // !!! The user is responsible for deleting this list    !!!
    // !!! (not its contents!) when it is not needed anymore !!!
    // !!! to avoid memory leaks.                            !!!
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    //
    TList *tracks = new TList;
    AtlIDTrack *trk = 0;
    Float_t Pt  = 0.;
    Float_t eta = 0.;
    
    for ( Int_t i = 0; i < fN_IDTracks; i++ ) {
	trk = (AtlIDTrack*)fIDTracks->At(i);
	if ( trk->IsSecondaryVtxTrack() ) {
	    Pt  = trk->Pt();
	    eta = TMath::Abs(trk->Eta());
	    if ( Pt >= Pt_min && Pt <= Pt_max ) {
		if ( eta >= Eta_min && eta <= Eta_max ) {
		    if ( (trk->Chi2() / trk->NDoF() ) <= Chi2ovDoF_max )  tracks->Add(trk);
		}
	    }
	}
    }

    if ( sort ) tracks->Sort(kSortDescending);
    return tracks;
}

//____________________________________________________________________


TList* AtlEvent::GetPrimVtxTracks(Float_t Chi2ovDoF_max, Float_t Pt_min, Float_t Pt_max,
				 Float_t Eta_min, Float_t Eta_max, Bool_t sort) {
    //
    // Returns a list of tracks matching the given conditions.
    // Pt limits are given in GeV.
    //
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    // !!! The user is responsible for deleting this list    !!!
    // !!! (not its contents!) when it is not needed anymore !!!
    // !!! to avoid memory leaks.                            !!!
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    //
    TList *tracks = new TList;
    AtlIDTrack *trk = 0;
    Float_t Pt  = 0.;
    Float_t eta = 0.;

    for ( Int_t i = 0; i < fN_IDTracks; i++ ) {
	trk = (AtlIDTrack*)fIDTracks->At(i);
	if (trk->IsPrimaryVtxTrack() ) {
	    Pt  = trk->Pt();
	    eta = TMath::Abs(trk->Eta());
	    if ( Pt >= Pt_min && Pt <= Pt_max ) {
		if ( eta >= Eta_min && eta <= Eta_max ) {
		    if ( (trk->Chi2() / trk->NDoF() ) <= Chi2ovDoF_max )  tracks->Add(trk);
		}
	    }
	}
    }

    if ( sort ) tracks->Sort(kSortDescending);
    return tracks;
}

//____________________________________________________________________


TList* AtlEvent::GetPhotons(AtlPhoton::EAuthor author,
			    AtlEMShower::EIsEM IsEM, Float_t Pt_min,
			    Float_t Pt_max, Float_t Eta_min,
			    Float_t Eta_max, Float_t EtCone20_max,
			    Bool_t sort, Bool_t exclude_crack, 
			    AtlEMShower::ECaloIsoCorrection CaloIsoCorrection) {
    //
    // Returns a list of photons matching the given conditions.
    //
    // The author variable indicates the reconstruction type for the
    // photons. Combinations are possible. For details see the
    // AtlPhoton class.
    // With the help of the IsEM type one can search for loose, medium
    // or tight photons.
    // The list is sorted in descending order of Pt by default.
    // Pt limits are given in GeV
    //
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    // !!! The user is responsible for deleting this list    !!!
    // !!! (not its contents!) when it is not needed anymore !!!
    // !!! to avoid memory leaks.                            !!!
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    //
    TList *photons = new TList;
    AtlPhoton *ph = 0;
    Float_t Pt  = 0.;
    Float_t eta = 0.;
    Float_t eta_abs = 0.;
    for ( Int_t i = 0; i < fN_Photons; i++ ) {
	ph = (AtlPhoton*)fPhotons->At(i);
	if ( (ph->GetAuthor() & author) && (ph->IsEM(IsEM))
	     && ph->GetEtCone20(CaloIsoCorrection) <= EtCone20_max ) {
	    Pt  = ph->Pt();
	    eta = ph->Eta();
	    eta_abs = TMath::Abs(eta);
	    if ( Pt >= Pt_min && Pt <= Pt_max ) {
		if ( eta >= Eta_min && eta <= Eta_max ) {
		    if ( exclude_crack ) {
			if ( (eta_abs <= 1.37) || (eta_abs >= 1.52) ) photons->Add(ph);
		    }
		    else{
			photons->Add(ph);
		    }
		}
	    }
	}
    }
    if ( sort ) photons->Sort(kSortDescending);

    return photons;
}

//____________________________________________________________________

TList* AtlEvent::GetMuons(AtlMuon::EAuthor author, Float_t Pt_min,
			  Float_t Pt_max, Float_t Eta_min, Float_t Eta_max,
			  Float_t Chi2_max, Float_t EtCone20_max,
			  Bool_t staco_combined, Bool_t sort,
			  AtlMuon::EQuality quality) {
    //
    // Returns a list of muons matching the given conditions.
    //
    // The author variable indicates the reconstruction type for the
    // muons. Combinations are possible. For details see the AtlMuon
    // class.
    // The Chi2_max value indicates the upper allowed limit
    // for the chi2/ndof of the track-segment matching of the muons.
    // Per default, muons that are combined STACO are chosen now
    // (option combined_staco).
    // The list is sorted in descending order of Pt by default.
    // Pt limits are given in GeV
    //
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    // !!! The user is responsible for deleting this list    !!!
    // !!! (not its contents!) when it is not needed anymore !!!
    // !!! to avoid memory leaks.                            !!!
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    //
    TList *muons = new TList;
    AtlMuon *mu = 0;
    Float_t Pt  = 0.;
    Float_t eta = 0.;
    for ( Int_t i = 0; i < fN_Muons; i++ ) {
	mu = (AtlMuon*)fMuons->At(i);
	if ( mu->GetAuthor() & author
	     && mu->GetQuality() & quality
	     && mu->GetMatchingChi2overNDoF() <= Chi2_max
	     && mu->GetEtCone20() <= EtCone20_max ) {
	    Pt  = mu->Pt();
	    eta = mu->Eta();
	    if ( Pt >= Pt_min && Pt < Pt_max ) {
		if ( eta >= Eta_min && eta < Eta_max ) {
		  if ( staco_combined && mu->IsCombinedMuon() )
		    muons->Add(mu);
		  if ( !staco_combined )
		    muons->Add(mu);
		}
	    }
	}
    }
    if ( sort ) muons->Sort(kSortDescending);
    
    return muons;
}

//____________________________________________________________________

TList* AtlEvent::GetJets(AtlJet::EType type, Float_t Et_min,
			  Float_t Et_max, Float_t Eta_min, Float_t Eta_max,
			 Bool_t is_good, Bool_t sort, Bool_t remove_faked) {
    //
    // Returns a list of jets matching the given conditions.
    //
    // The list is sorted in descending order of Et by default.
    // Et limits are given in GeV.
    // If is_good = kTRUE, only good jets will be accepted.
    //
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    // !!! The user is responsible for deleting this list    !!!
    // !!! (not its contents!) when it is not needed anymore !!!
    // !!! to avoid memory leaks.                            !!!
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    //
    TList *jets = new TList;
    AtlJet *jet = 0;
    Float_t Et  = 0.;
    Float_t eta = 0.;

    for ( Int_t i = 0; i < GetN_Jets(type); i++ ) {
	jet = (AtlJet*)GetJets(type)->At(i);
	
	// test whether is good jet?
	if ( is_good ) {
	    if ( !jet->IsGoodJet() ) continue;
	}
	
	Et  = jet->Et();
	eta = jet->Eta();
	if ( Et >= Et_min && Et <= Et_max ) {
	    if ( eta >= Eta_min && eta <= Eta_max ) {
		if ( remove_faked && jet->IsFaked() ) {
		    continue;
		}
		else {
		    jets->Add(jet);
		}
	    }
	}
    }
    if ( sort ) jets->Sort(kSortDescending);

    return jets;
}

//____________________________________________________________________

TList* AtlEvent::GetTaus(AtlTau::EAuthor author,
			 AtlTau::ETauFlag flag, Float_t Pt_min,
			 Float_t Pt_max, Float_t Eta_min,
			 Float_t Eta_max, Bool_t sort) {
    //
    // Returns a list of taus matching the given conditions.
    //
    // The author variable indicates the reconstruction type for the
    // taus. Combinations are possible. For details see the AtlTau
    // class. With the help of the TauFlag a quality cut of the taus
    // is possible.
    // The list is sorted in descending order of Pt by default.
    // Pt limits are given in GeV
    //
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    // !!! The user is responsible for deleting this list    !!!
    // !!! (not its contents!) when it is not needed anymore !!!
    // !!! to avoid memory leaks.                            !!!
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    //
    TList *taus = new TList;
    AtlTau *tau = 0;
    Float_t Pt  = 0.;
    Float_t eta = 0.;
    for ( Int_t i = 0; i < fN_Taus; i++ ) {
	tau = (AtlTau*)fTaus->At(i);
	if ( (tau->GetAuthor() & author) && (tau->GetTauFlag() & flag) ) {
	    Pt  = tau->Pt();
	    eta = tau->Eta();
	    if ( Pt >= Pt_min && Pt <= Pt_max ) {
		if ( eta >= Eta_min && eta <= Eta_max ) 
		    taus->Add(tau);
	    }
	}
    }
    if ( sort ) taus->Sort(kSortDescending);

    return taus;
}

//____________________________________________________________________

TList* AtlEvent::GetStableMCParticles() const {
    // 
    // Returns list of HepMCParticle objects characterized by
    // IsGenStable() = 1 , meaning that they either
    // - escape the detector
    //   or
    // - are detected.
    // 1st Purpose: feeding the FindMatchedParticles function 
    // with a more sensible list in case of MC particles.
    //
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    // !!! The user is responsible for deleting this list    !!!
    // !!! (not its contents!) when it is not needed anymore !!!
    // !!! to avoid memory leaks.                            !!!
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    //
    TList *particles = new TList;
    HepMCParticle *prt = 0;
    for ( Int_t i = 0; i < GetN_MCParticles(); i++ ) {
	prt = (HepMCParticle*)GetMCParticles()->At(i);
	if ( prt->IsGenStable() ) particles->Add(prt);
    } 
    return particles;
}

//____________________________________________________________________

TList* AtlEvent::FindMCParticlesByName(const char* PdgName,
				       Bool_t RemoveDouble) {
    //
    // Returns list of particles with given type
    // Since the MC particles generation operates at following steps, 
    // there are many identical particles that 
    // either - propagate without changing their kinematics 
    //     or - are just deviated by under-threshold interactions
    // being anyway unuseful (and misleading) in a MCTruth Plotting 
    // context.
    // The RemoveDouble option is used to remove the same particles 
    // from the list
    //
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    // !!! The user is responsible for deleting this list    !!!
    // !!! (not its contents!) when it is not needed anymore !!!
    // !!! to avoid memory leaks.                            !!!
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    //
    Int_t PdgCode = HepDatabasePDG::Instance()->GetParticle(PdgName)->PdgCode();
    TList *particles = new TList;
    HepMCParticle *prt = 0;
    for ( Int_t i = 0; i < GetN_MCParticles(); i++ ) {
	prt = (HepMCParticle*)GetMCParticles()->At(i);
	if ( prt->GetPdgCode() != PdgCode ) continue;
	if ( RemoveDouble && prt->GetN_Daughters() == 1 ) {
	    if ( ((HepMCParticle*)prt->GetDaughters()->First())
		 ->GetPdgCode() == PdgCode ) continue;
	}
	particles->Add(prt);
    }
    return particles;
}

//____________________________________________________________________

TList* AtlEvent::FindOverlaps_ElectronCluster_Jets(AtlElectron *el,
				  TCollection *search_list,
				  Float_t DeltaR) {
    //
    // Returns a list of jets which overlap with the given  
    // electron by using the variable DeltaR, computed by usage
    // of the cluster eta and phi of the electron (default 
    // value DeltaR = 0.1).
    // The user must give the sample of objects (for example HepJets, 
    // AtlJets, ...).
    // The returned list is sorted in order of increasing DeltaR.
    //
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    // !!! The user is responsible for deleting this list    !!!
    // !!! (not its contents!) when it is not needed anymore !!!
    // !!! to avoid memory leaks.                            !!!
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    //
    TList *sorted_overlapping   = new TList; 
    TList *unsorted_overlapping = new TList;
    
    // Reject all particles not surviving the selection cuts
    TIter next_jet(search_list);
    HepJet *jet_cmp = 0;
    Float_t DeltaR_cur = 0.;
    TArrayF *dist = new TArrayF(search_list->GetEntries());
    Int_t i = 0;
    while( (jet_cmp = (HepJet*)next_jet()) ) {
	DeltaR_cur = el->ClusterDeltaR(jet_cmp);
      if ( (DeltaR_cur < DeltaR) ) {
	  unsorted_overlapping->Add(jet_cmp);
	  dist->AddAt(DeltaR_cur, i++);
      }
    }
    
    // Create index array
    TArrayI *index = new TArrayI(i);
    TMath::Sort(i, dist->GetArray(), index->GetArray(), kFALSE);
    
    // Fill sorted list
    for ( Int_t j = 0; j < i; j++){
	sorted_overlapping->Add(unsorted_overlapping->At(index->At(j)));
    }
    
    // Clean-up
    delete unsorted_overlapping;
    delete dist;
    delete index;
    
    return sorted_overlapping;
}

//____________________________________________________________________

TList* AtlEvent::FindOverlaps_ElectronTrack_EMScaleJets(AtlElectron *el,
							TCollection *search_list,
							Float_t DeltaR,
							const char* option) {
    //
    // Returns a list of jets which overlap with the given  
    // electron by using the variable DeltaR, optionally computed
    // by usage of the ID-track eta and phi of the electron (default 
    // value DeltaR = 0.1) and the jet detector positions
    // (eta_EMScale+EMJES_EtaCorr and phi_EMSCALE).
    // The user must give the sample of objects (MUST BE AtlJet!).
    // The returned list is sorted in order of increasing DeltaR.
    //
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    // !!! The user is responsible for deleting this list    !!!
    // !!! (not its contents!) when it is not needed anymore !!!
    // !!! to avoid memory leaks.                            !!!
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    //
    TList *sorted_overlapping   = new TList; 
    TList *unsorted_overlapping = new TList;
    
    // Reject all particles not surviving the selection cuts
    TIter next_jet(search_list);
    AtlJet *jet_cmp = 0;
    Float_t DeltaR_cur = 0.;
    TArrayF *dist = new TArrayF(search_list->GetEntries());
    Int_t i = 0;
    
    while( (jet_cmp = (AtlJet*)next_jet()) ) {
	DeltaR_cur = jet_cmp->EMScaleDeltaR(el, option);
      if ( (DeltaR_cur < DeltaR) ) {
	  unsorted_overlapping->Add(jet_cmp);
	  dist->AddAt(DeltaR_cur, i++);
      }
    }
    
    // Create index array
    TArrayI *index = new TArrayI(i);
    TMath::Sort(i, dist->GetArray(), index->GetArray(), kFALSE);
    
    // Fill sorted list
    for ( Int_t j = 0; j < i; j++){
	sorted_overlapping->Add(unsorted_overlapping->At(index->At(j)));
    }
    
    // Clean-up
    delete unsorted_overlapping;
    delete dist;
    delete index;
    
    return sorted_overlapping;
}


//____________________________________________________________________

TList* AtlEvent::FindOverlaps_MuonTrack_EMScaleJets(AtlMuon *mu,
				  TCollection *search_list,
				  Float_t DeltaR) {
    //
    // Returns a list of jets which overlap with the given  
    // muon by using the variable DeltaR (default 
    // value DeltaR = 0.1), computed by usage of the jet
    // detector positions (eta_EMScale+EMJES_EtaCorr and phi_EMSCALE).
    // The user must give the sample of objects (MUST BE AtlJet!).
    // The returned list is sorted in order of increasing DeltaR.
    //
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    // !!! The user is responsible for deleting this list    !!!
    // !!! (not its contents!) when it is not needed anymore !!!
    // !!! to avoid memory leaks.                            !!!
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    //
    TList *sorted_overlapping   = new TList; 
    TList *unsorted_overlapping = new TList;
    
    // Reject all particles not surviving the selection cuts
    TIter next_jet(search_list);
    AtlJet *jet_cmp = 0;
    Float_t DeltaR_cur = 0.;
    TArrayF *dist = new TArrayF(search_list->GetEntries());
    Int_t i = 0;
    const char* option = "trk";
    
    while( (jet_cmp = (AtlJet*)next_jet()) ) {
	DeltaR_cur = jet_cmp->EMScaleDeltaR(mu, option);
      if ( (DeltaR_cur < DeltaR) ) {
	  unsorted_overlapping->Add(jet_cmp);
	  dist->AddAt(DeltaR_cur, i++);
      }
    }
    
    // Create index array
    TArrayI *index = new TArrayI(i);
    TMath::Sort(i, dist->GetArray(), index->GetArray(), kFALSE);
    
    // Fill sorted list
    for ( Int_t j = 0; j < i; j++){
	sorted_overlapping->Add(unsorted_overlapping->At(index->At(j)));
    }
    
    // Clean-up
    delete unsorted_overlapping;
    delete dist;
    delete index;
    
    return sorted_overlapping;
}


//____________________________________________________________________


TList* AtlEvent::FindOverlaps_Particle_Jets(HepParticle *prt,
					    TCollection *search_list,
					    Float_t DeltaR) {
    //
    // Returns a list of jets which overlap with the given  
    // HepParticle object by using the variable DeltaR, default 
    // value DeltaR = 0.1.
    // The user must give the sample of objects (for example HepJets, 
    // AtlJets, ...).
    // The returned list is sorted in order of increasing DeltaR.
    //
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    // !!! The user is responsible for deleting this list    !!!
    // !!! (not its contents!) when it is not needed anymore !!!
    // !!! to avoid memory leaks.                            !!!
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    //
    TList *sorted_overlapping   = new TList; 
    TList *unsorted_overlapping = new TList;
    
    // Reject all particles not surviving the selection cuts
    TIter next_jet(search_list);
    HepJet *jet_cmp = 0;
    Float_t DeltaR_cur = 0.;
    TArrayF *dist = new TArrayF(search_list->GetEntries());
    Int_t i = 0;
    while( (jet_cmp = (HepJet*)next_jet()) ) {
      DeltaR_cur = prt->DeltaR(jet_cmp);
      if ( (DeltaR_cur < DeltaR) ) {
	  unsorted_overlapping->Add(jet_cmp);
	  dist->AddAt(DeltaR_cur, i++);
      }
    }
    
    // Create index array
    TArrayI *index = new TArrayI(i);
    TMath::Sort(i, dist->GetArray(), index->GetArray(), kFALSE);
    
    // Fill sorted list
    for ( Int_t j = 0; j < i; j++){
	sorted_overlapping->Add(unsorted_overlapping->At(index->At(j)));
    }
    
    // Clean-up
    delete unsorted_overlapping;
    delete dist;
    delete index;
    
    return sorted_overlapping;
}



//____________________________________________________________________

TList* AtlEvent::FindMatchedParticles(HepParticle *prt,
				       TCollection *search_list,
				       Float_t DeltaR,
				       Float_t DeltaPtFrac) {
    //
    // Returns a list of particles which best match the given HepParticle 
    // object by using the variables DeltaR, default value DeltaR = 0.1.
    // and DeltaPtFrac, also default of 0.1.  
    // The user must provide a list of objects (for example HepMCParticles, 
    // AtlElectrons, ...).
    // For feeding it with a list of more sensible MC objects please use 
    // the GetStableMCParticles function at line 1397. It bypasses the 
    // compilation issues (impossible casting) encountered for a "Remove" 
    // option (e.g. in lines 1497-1499 of AtlEvent:article)  
    //
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    // !!! The user is responsible for deleting this list    !!!
    // !!! (not its contents!) when it is not needed anymore !!!
    // !!! to avoid memory leaks.                            !!!
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    //
    TList *sorted_matched = new TList; 
    TList *unsorted_matched = new TList;
    
    // Reject all particle not surviving the selection cuts
    // Compute Chi2 = dR^2 + dPt_frac^2 for the ones surviving the cuts
    TIter next_prt(search_list);
    HepParticle *prt_cmp = 0;
    Float_t DeltaPtFrac_cur = 0.;
    Float_t DeltaR_cur = 0.;
    TArrayF *chi2 = new TArrayF(search_list->GetEntries());
    Int_t i = 0;
    while( (prt_cmp = (HepParticle*)next_prt()) ) {
      DeltaPtFrac_cur = TMath::Abs(prt->DeltaPtFrac(prt_cmp));
      DeltaR_cur = prt->DeltaR(prt_cmp);
      if ( (DeltaR_cur < DeltaR) && (DeltaPtFrac_cur < DeltaPtFrac) ) {
	  unsorted_matched->Add(prt_cmp);
	  chi2->AddAt(DeltaR_cur*DeltaR_cur + DeltaPtFrac_cur*DeltaPtFrac_cur, i++);
      }
    }
    
    // Create index array
    TArrayI *index = new TArrayI(i);
    TMath::Sort(i, chi2->GetArray(), index->GetArray(), kFALSE);
    
    // Fill sorted list
    for ( Int_t j = 0; j < i; j++){
	sorted_matched->Add(unsorted_matched->At(index->At(j)));
    }
    
    // Clean-up
    delete unsorted_matched;
    delete chi2;
    delete index;
    
    return sorted_matched;
}

//____________________________________________________________________

TList* AtlEvent::FindMatchedParticles(HepJet *jet,
				       TCollection *search_list,
				       Float_t DeltaR,
				       Float_t DeltaPtFrac) {
    //
    // Returns a list of jets which best match the given HepJet
    // object by using the variable DeltaR, default value DeltaR = 0.2.
    // and DeltaPtFrac, default 0.2  
    // The user must give the sample of objects (for examples HepMCParticles, 
    // AtlElectrons, ...)
    // For feeding it with a sample of more sensible MC objects please use 
    // the GetStableMCParticles function at line 1397. It bypasses the 
    // compilation issues (impossible casting) encountered for a "Remove" 
    // option (e.g. in lines 1497-1499 of AtlEvent::FindMatchedMCParticle)  
    //
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    // !!! The user is responsible for deleting this list    !!!
    // !!! (not its contents!) when it is not needed anymore !!!
    // !!! to avoid memory leaks.                            !!!
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    //
    TList *sorted_matched = new TList; 
    TList *unsorted_matched = new TList;
    
    // Reject all particle not surviving the selection cuts
    // Compute Chi2 = dR^2 + dPt_frac^2 for the ones surviving the cuts
    TIter next_prt(search_list);
    HepParticle *prt_cmp = 0;
    Float_t DeltaPtFrac_cur = 0.;
    Float_t DeltaR_cur = 0.;
    TArrayF *chi2 = new TArrayF(search_list->GetEntries());
    Int_t i = 0;
    while( (prt_cmp = (HepParticle*)next_prt()) ) {
      DeltaPtFrac_cur = TMath::Abs(jet->DeltaPtFrac(prt_cmp));
      DeltaR_cur = jet->DeltaR(prt_cmp);
      if ( (DeltaR_cur < DeltaR) && (DeltaPtFrac_cur < DeltaPtFrac) ) {
	  unsorted_matched->Add(prt_cmp);
	  chi2->AddAt(DeltaR_cur*DeltaR_cur + DeltaPtFrac_cur*DeltaPtFrac_cur, i++);
      }
    }
    
    // Create index array
    TArrayI *index = new TArrayI(i);
    TMath::Sort(i, chi2->GetArray(), index->GetArray(), kFALSE);
    
    // Fill sorted list
    for ( Int_t j = 0; j < i; j++){
	sorted_matched->Add(unsorted_matched->At(index->At(j)));
    }
    
    // Clean-up
    delete unsorted_matched;
    delete chi2;
    delete index;
    
    return sorted_matched;
}

//____________________________________________________________________

TList* AtlEvent::FindTruthMatchedJets(AtlJet::EType type) {
    //
    // Returns a list of truth-matched jets of the requested type.
    // For each jet type the search list is simply the list of all
    // jets of this type in the event.
    // The value for DeltaR is set according to the (cone-)radius used
    // in the jet definition of this type. There is no PtFrac requirement
    // used for the truth-matching here. All MC particles are considered.
    // Default is set to jet type AntiKt4H1Topo.
    //
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    // !!! The user is responsible for deleting this list    !!!
    // !!! (not its contents!) when it is not needed anymore !!!
    // !!! to avoid memory leaks.                            !!!
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    //
    Float_t DeltaR = 0;
    Float_t DeltaPtFrac = 0;
    
    TList* jets = new TList();
    
    switch ( type ) {
	case AtlJet::kCone4H1Tower :
	    DeltaR = 0.4;
	    DeltaPtFrac = 10.e10;
	    jets->AddAll(fCone4H1TowerJets);
	    break;
	case AtlJet::kCone7H1Tower :
	    DeltaR = 0.7;
	    DeltaPtFrac = 10.e10;
	    jets->AddAll(fCone7H1TowerJets);
	    break;
	case AtlJet::kCone4H1Topo :
	    DeltaR = 0.4;
	    DeltaPtFrac = 10.e10;
	    jets->AddAll(fCone4H1TopoJets);
	    break;
	case AtlJet::kCone7H1Topo :
	    DeltaR = 0.7;
	    DeltaPtFrac = 10.e10;
	    jets->AddAll(fCone7H1TopoJets);
	    break;
	case AtlJet::kAntiKt4H1Topo :
	    DeltaR = 0.4;
	    DeltaPtFrac = 10.e10;
	    jets->AddAll(fAntiKt4H1TopoJets);
	    break;
	case AtlJet::kAntiKt4TopoEM:
	    DeltaR = 0.4;
	    DeltaPtFrac = 10.e10;
	    jets->AddAll(fAntiKt4TopoEMJets);
	    break;
	case AtlJet::kAntiKt4TopoEMJES:
	    DeltaR = 0.4;
	    DeltaPtFrac = 10.e10;
	    jets->AddAll(fAntiKt4TopoEMJESJets);
	    break;
	case AtlJet::kAntiKt4H1Tower :
	    DeltaR = 0.4;
	    DeltaPtFrac = 10.e10;
	    jets->AddAll(fAntiKt4H1TowerJets);
	    break;
	case AtlJet::kAntiKt6H1Tower :
	    DeltaR = 0.6;
	    DeltaPtFrac = 10.e10;
	    jets->AddAll(fAntiKt6H1TowerJets);
	    break;
	case AtlJet::kMCCone4Hadron :
	    DeltaR = 0.4;
	    DeltaPtFrac = 10.e10;
	    jets->AddAll(fMCCone4HadronJets);
	    break;
	case AtlJet::kMCCone7Hadron :
	    DeltaR = 0.7;
	    DeltaPtFrac = 10.e10;
	    jets->AddAll(fMCCone7HadronJets);
	    break;
	case AtlJet::kMCAntiKt4Hadron :
	    DeltaR = 0.4;
	    DeltaPtFrac = 10.e10;
	    jets->AddAll(fMCAntiKt4HadronJets);
	    break;
	default :
	    DeltaR = 0.4;
	    DeltaPtFrac = 10.e10;
	    jets->AddAll(fAntiKt4H1TopoJets);
    }

    TIter next_jet(jets);
    AtlJet* jet = 0;
    HepMCParticle* cone_prt = 0;
    TList* truth_matched_jets = new TList();
    
    while ( ( jet = (AtlJet*)next_jet() ) ) {
	
	// Das ist vl. nicht noetig, da jet->GetTruthParticles() existiert...
	// Uebereinstimmung pruefen!
	TList *cone_mc_particles =
	    FindMatchedParticles(jet,fMCParticles,DeltaR,DeltaPtFrac);
	// Alternativ (Athena Definition):
	// TList *cone_mc_particles = jet->GetTruthParticles();
	// .. bis hier
	
	TIter next_cone_prt(cone_mc_particles);
	
	while ( ( cone_prt = (HepMCParticle*)next_cone_prt() ) ) {
	    if ( cone_prt->GetN_Mothers() != 0 ) {
		if ( cone_prt->GetMother()->IsStringOrCluster() ) {
		    truth_matched_jets->Add(jet);
		    break;
		}
	    }
	}

	
	delete cone_mc_particles;
	
    }
    
    delete jets;
    
    return truth_matched_jets;
}

//____________________________________________________________________

TList* AtlEvent::FindTruthMatchedJets(TCollection *search_list,
				      AtlJet::EType type) {
    //
    // Returns a list of truth-matched jets of the requested type.
    // A search list must be provided by the user.
    // The value for DeltaR is set according to the (cone-)radius used
    // in the jet definition of this type. There is no PtFrac requirement
    // used for the truth-matching here. All MC particles are considered.
    //
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    // !!! The user is responsible for deleting this list    !!!
    // !!! (not its contents!) when it is not needed anymore !!!
    // !!! to avoid memory leaks.                            !!!
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    //
    Float_t DeltaR = 0;
    Float_t DeltaPtFrac = 0;
    
    
    switch ( type ) {
	case AtlJet::kCone4H1Tower :
	    DeltaR = 0.4;
	    DeltaPtFrac = 10.e10;
	    break;
	case AtlJet::kCone7H1Tower :
	    DeltaR = 0.7;
	    DeltaPtFrac = 10.e10;
	    break;
	case AtlJet::kCone4H1Topo :
	    DeltaR = 0.4;
	    DeltaPtFrac = 10.e10;
	    break;
	case AtlJet::kCone7H1Topo :
	    DeltaR = 0.7;
	    DeltaPtFrac = 10.e10;
	    break;
	case AtlJet::kAntiKt4H1Topo :
	    DeltaR = 0.4;
	    DeltaPtFrac = 10.e10;
	    break;
	case AtlJet::kAntiKt4TopoEM :
	    DeltaR = 0.4;
	    DeltaPtFrac = 10.e10;
	    break;
	case AtlJet::kAntiKt4TopoEMJES :
	    DeltaR = 0.4;
	    DeltaPtFrac = 10.e10;
	    break;
	case AtlJet::kAntiKt4H1Tower :
	    DeltaR = 0.4;
	    DeltaPtFrac = 10.e10;
	    break;
	case AtlJet::kAntiKt6H1Tower :
	    DeltaR = 0.6;
	    DeltaPtFrac = 10.e10;
	    break;
	case AtlJet::kMCCone4Hadron :
	    DeltaR = 0.4;
	    DeltaPtFrac = 10.e10;
	    break;
	case AtlJet::kMCCone7Hadron :
	    DeltaR = 0.7;
	    DeltaPtFrac = 10.e10;
	    break;
	case AtlJet::kMCAntiKt4Hadron :
	    DeltaR = 0.4;
	    DeltaPtFrac = 10.e10;
	    break;
	default :
	    DeltaR = 0.4;
	    DeltaPtFrac = 10.e10;
    }

    TIter next_jet(search_list);
    AtlJet* jet = 0;
    HepMCParticle* cone_prt = 0;
    TList* truth_matched_jets = new TList();
    
    while ( ( jet = (AtlJet*)next_jet() ) ) {
	
	// Das ist vl. nicht noetig, da jet->GetTruthParticles() existiert...
	// Uebereinstimmung pruefen!
	TList *cone_mc_particles =
	    FindMatchedParticles(jet,fMCParticles,DeltaR,DeltaPtFrac);
	// Alternativ (Athena Definition):
	// TList *cone_mc_particles = jet->GetTruthParticles();
	// .. bis hier
	
	TIter next_cone_prt(cone_mc_particles);
	
	while ( ( cone_prt = (HepMCParticle*)next_cone_prt() ) ) {
	    if ( cone_prt->GetN_Mothers() != 0 ) {
		if ( cone_prt->GetMother()->IsStringOrCluster() ) {
		    truth_matched_jets->Add(jet);
		    break;
		}
	    }
	}

	
	delete cone_mc_particles;
	
    }
    
    
    return truth_matched_jets;
}

//____________________________________________________________________

TList* AtlEvent::FindMatchedJets(HepParticle *prt,
				 TCollection *search_list,
				 Float_t DeltaR,
				 Float_t DeltaPtFrac,
				 Bool_t UseDeltaRonly) {
    //
    // Returns a list of jets which best match the given HepParticle
    // object by using the variable DeltaR, default value DeltaR =
    // 0.2. and DeltaEtFrac, also default of 0.2. The given search
    // list is the list of jets to search. The option UseDeltaRonly
    // (default=false) can be used to disable the DeltaPtFrac usage
    // completely.
    //
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    // !!! The user is responsible for deleting this list    !!!
    // !!! (not its contents!) when it is not needed anymore !!!
    // !!! to avoid memory leaks.                            !!!
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    //
    TList *sorted_matched = new TList; 
    TList *unsorted_matched = new TList;
    
    // Reject all jets not surviving the selection cuts
    // Compute Chi2 = dR^2 + dPt_frac^2 for the ones surviving the cuts
    TIter next_jet(search_list);
    HepJet *jet_cmp = 0;
    Float_t DeltaPtFrac_cur = 0.;
    Float_t DeltaR_cur = 0.;
    TArrayF *chi2 = new TArrayF(search_list->GetEntries());
    Int_t i = 0;
    while( (jet_cmp = (HepJet*)next_jet()) ) {
	DeltaPtFrac_cur = TMath::Abs(prt->DeltaPtFrac(jet_cmp));
	DeltaR_cur = prt->DeltaR(jet_cmp);
	if ( DeltaR_cur < DeltaR ) {
	    if ( UseDeltaRonly && (DeltaPtFrac_cur < DeltaPtFrac) ) {
		unsorted_matched->Add(jet_cmp);
		chi2->AddAt(DeltaR_cur*DeltaR_cur + DeltaPtFrac_cur*DeltaPtFrac_cur, i++);
	    } else if ( !UseDeltaRonly ) {
		unsorted_matched->Add(jet_cmp);
		chi2->AddAt(DeltaR_cur*DeltaR_cur, i++);
	    }
	}
    }
    
    // Create index array
    TArrayI *index = new TArrayI(i);
    TMath::Sort(i, chi2->GetArray(), index->GetArray(), kFALSE);
    
    // Fill sorted list
    for ( Int_t j = 0; j < i; j++){
	sorted_matched->Add(unsorted_matched->At(index->At(j)));
    }
    
    // Clean-up
    delete unsorted_matched;
    delete chi2;
    delete index;
    
    return sorted_matched;
}

//____________________________________________________________________

TList* AtlEvent::FindMatchedJets(HepJet *jet,
				 TCollection *search_list,
				 Float_t DeltaR,
				 Float_t DeltaEtFrac) {
    //
    // Returns a list of jets which best match the given HepJet
    // object by using the variable DeltaR, default value DeltaR = 0.2.
    // and DeltaEtFrac, also default of 0.2.
    // The user must give the sample of HepJet objects for comparison 
    // (HepJet or AtlJet).  It bypasses the compilation issues
    // (impossible casting) encountered for a "Remove" 
    // option (e.g. in lines 1497-1499 of AtlEvent::FindMatchedMCParticle)  
    //
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    // !!! The user is responsible for deleting this list    !!!
    // !!! (not its contents!) when it is not needed anymore !!!
    // !!! to avoid memory leaks.                            !!!
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    //
    TList *sorted_matched = new TList; 
    TList *unsorted_matched = new TList;
    
    // Reject all jets not surviving the selection cuts
    // Compute Chi2 = dR^2 + dPt_frac^2 for the ones surviving the cuts
    TIter next_jet(search_list);
    HepJet *jet_cmp = 0;
    Float_t DeltaEtFrac_cur = 0.;
    Float_t DeltaR_cur = 0.;
    TArrayF *chi2 = new TArrayF(search_list->GetEntries());
    Int_t i = 0;
    while( (jet_cmp = (HepJet*)next_jet()) ) {
	DeltaEtFrac_cur = TMath::Abs(jet->DeltaEtFrac(jet_cmp));
	DeltaR_cur = jet->DeltaR(jet_cmp);
	if ( (DeltaR_cur < DeltaR) && (DeltaEtFrac_cur < DeltaEtFrac) ) {
	    unsorted_matched->Add(jet_cmp);
	    chi2->AddAt(DeltaR_cur*DeltaR_cur + DeltaEtFrac_cur*DeltaEtFrac_cur, i++);
	}
    }
    
    // Create index array
    TArrayI *index = new TArrayI(i);
    TMath::Sort(i, chi2->GetArray(), index->GetArray(), kFALSE);
    
    // Fill sorted list
    for ( Int_t j = 0; j < i; j++){
	sorted_matched->Add(unsorted_matched->At(index->At(j)));
    }
    
    // Clean-up
    delete unsorted_matched;
    delete chi2;
    delete index;
    
    return sorted_matched;
}

//____________________________________________________________________

HepMCParticle* AtlEvent::FindMatchedMCParticle(HepParticle *prt,
					       Bool_t RemoveUnstable,
					       Float_t DeltaR,
					       Float_t DeltaPtFrac) {
    //
    // Returns the MC particle which best matches the given HepParticle object
    // by using:
    //
    // 1) cone difference 
    //    - default value DeltaR = 0.1
    //
    // 2) percentual Pt difference normalized to the true particle's Pt 
    //    - default value DeltaPtFrac = 0.1
    //
    // "RemoveUnstable" option allows the user to search a MC list where 
    // unstable MC particles are not taken into account (e.g. clusters,
    // quarks which do not reach the detector). 
    //
    HepMCParticle *mc_prt = 0;
    TList *mc_particles = FindMatchedParticles(prt, GetMCParticles(),
					       DeltaR, DeltaPtFrac);
    if ( mc_particles->GetSize() == 0 ) ;
//	Error("FindMatchedMCParticle","No matching MC particles found.");
    else {
	Int_t z = 0;
	if ( RemoveUnstable ) {
	    TIter next_mcprt(mc_particles);
	    while ( (mc_prt = (HepMCParticle*)next_mcprt()) ) {
		if ( mc_prt->IsGenStable() ) break;
		if (z == 25){
		    mc_prt = 0;
		    Error("FindMatchedMCParticle","No GenStable MC particle found within given DeltaR and DeltaPtFrac amongst first 25 candidates that match best.");
		    break;
		}
		z++;   
	    }
	} else {
	    mc_prt = (HepMCParticle*)mc_particles->First();
	}
    }
    
    delete mc_particles;
    return mc_prt;
}

//____________________________________________________________________

HepMCParticle* AtlEvent::FindMatchedMCParticle(HepJet *jet,
					       Bool_t RemoveUnstable,
					       Float_t DeltaR,
					       Float_t DeltaPtFrac) {
    //
    // Returns the MC particle which best matches the given HepJet object
    // by using:
    //
    // 1) cone difference 
    //    - default value DeltaR = 0.2
    //
    // 2) percentual Pt difference normalized to the true particle's Pt 
    //    - default value DeltaPtFrac = 0.2
    //
    // "RemoveUnstable" option allows the user to search a MC list where 
    // unstable MC particles are not taken into account (e.g. clusters,
    // quarks which do not reach the detector).  
    //
    HepMCParticle *mc_prt = 0;
    TList *mc_particles = FindMatchedParticles(jet, GetMCParticles(),
					       DeltaR, DeltaPtFrac);

    if ( mc_particles->GetSize() == 0 ) ;
//	Error("FindMatchedMCParticle","No matching MC particles found.");
    else {
	Int_t z = 0;
	if ( RemoveUnstable ) {
	    TIter next_mcprt(mc_particles);
	    while ( (mc_prt = (HepMCParticle*)next_mcprt()) ) {
		if ( mc_prt->IsGenStable() ) break;
		if (z == 25){
		    mc_prt = 0;
		    Error("FindMatchedMCParticle","No GenStable MC particle found within given DeltaR and DeltaPtFrac amongst first 25 candidates that match best.");
		    break;
		}
		z++;	
	    }
	} else {
	    mc_prt = (HepMCParticle*)mc_particles->First();
	}
    }
    
    delete mc_particles;
    return mc_prt;
}

//____________________________________________________________________

HepJet* AtlEvent::FindMatchedMCJet(HepParticle *prt,
				   Float_t DeltaR,
				   Float_t DeltaPtFrac) {
  //
  // Returns the MC HL jet which best matches the given HepParticle
  // object by assuming JetType AntiKt4H1Topo and using:
  //
  // 1) cone difference 
  //    - default value DeltaR = 0.2
  //
  // 2) percentual Pt difference normalized to the true particle's Pt 
  //    - default value DeltaEtFrac = 0.2
  //
  TList *mc_jets = FindMatchedJets(prt, GetMCAntiKt4HadronJets(),
				   DeltaR, DeltaPtFrac);
  HepJet *mc_jet = (HepJet*)mc_jets->First();
  delete mc_jets;
  return mc_jet;
}


//____________________________________________________________________

HepJet* AtlEvent::FindMatchedMCJet(HepJet *jet,
				   Float_t DeltaR,
				   Float_t DeltaEtFrac) {
  //
  // Returns the MC HL jet which best matches the given HepJet object
  // by assuming JetType AntiKt4H1Topo and using:
  //
  // 1) cone difference 
  //    - default value DeltaR = 0.2
  //
  // 2) percentual Pt difference normalized to the true particle's Pt 
  //    - default value DeltaEtFrac = 0.2
  //
  TList *mc_jets = FindMatchedJets(jet, GetMCAntiKt4HadronJets(),
				   DeltaR, DeltaEtFrac);
  HepJet *mc_jet = (HepJet*)mc_jets->First();
  delete mc_jets;
  return mc_jet;
}

//____________________________________________________________________

Float_t AtlEvent::W_Mperp2(HepParticle *lepton, TVector2 MissingEt) const {
    //
    // Mt_W^2 = 2*Et_lepton*Et_miss*(1 - cos(DeltaPhi)) which is
    // equivalent to Mt^2 = Et^2 - Pt^2 for vanishing neutrino and
    // lepton masses.
    // Use this function for the Jacobian-peak method
    //
    return 2* lepton->Et()*MissingEt.Mod()
	*(1. - TMath::Cos(lepton->P3().XYvector().DeltaPhi(MissingEt)));
}

//____________________________________________________________________

TLorentzVector AtlEvent::GetMCSumEnergy_NonInt() const {
    //
    // Returns the summed 4-vector of all non-interacting
    // MC particles
    //
    HepMCParticle *mc_prt = 0;
    TList *mc_particles = GetStableMCParticles();
    TIter next_mcprt(mc_particles);
    TLorentzVector mc_nonint_sum;
    
    while ( (mc_prt = (HepMCParticle*)next_mcprt()) ) {
	if ( mc_prt->IsGenNonInteracting() ) mc_nonint_sum += mc_prt->P();
	}
    
    delete mc_particles;
    return mc_nonint_sum;
}
//____________________________________________________________________

Float_t AtlEvent::GetMCSumEnergy_NonInt_Eta() const {
    //
    // Returns the eta of the summed 4-vector of all
    // non-interacting MC particles
    //
    TLorentzVector mc_nonint_sum = GetMCSumEnergy_NonInt();
    Float_t mc_nonint_sum_eta;

    if ( mc_nonint_sum.Pt() != 0. ) mc_nonint_sum_eta = mc_nonint_sum.Eta();
    else {
	mc_nonint_sum_eta = ( mc_nonint_sum.Pz() > 0. ) ? 10e10 : -10e10;
    }
    return mc_nonint_sum_eta;
}

//____________________________________________________________________

Float_t AtlEvent::GetMCSumEnergy_NonInt_Phi() const {
    //
    // Returns the phi of the summed 4-vector of all
    // non-interacting MC particles
    //
    TLorentzVector mc_nonint_sum = GetMCSumEnergy_NonInt();
    Float_t mc_nonint_sum_phi;

    mc_nonint_sum_phi = mc_nonint_sum.Phi();
    
    return mc_nonint_sum_phi;
}

//____________________________________________________________________

Float_t AtlEvent::Sphericity(TList *Vectors) {
    //
    // takes List of vectors (TVector3)
    // returns Sphericity computed w.r.t. these vectors
    //
    Float_t Sphericity = 0;
    Float_t denom      = 0;
    Float_t alpha      = 0;
    Float_t beta       = 0;
    TVector3 *p        = 0;
    TMatrixDSym S(3);
    S.Zero();
    for ( Int_t n = 0; n < Vectors->GetEntries(); n++){
	p = (TVector3*)Vectors->At(n);
	for (Int_t i = 0; i < 3; i++ ){
	    if ( i == 0 ) {
		alpha = p->X();  
	    }
	    else if ( i == 1 ) {
		alpha = p->Y(); 
	    }
	    else {
		alpha = p->Z();
	    }
	    for ( Int_t j = i; j < 3; j++ ){
		if ( j == 0 ) {
		    beta = p->X();  
		}
		else if ( j == 1 ){
		    beta = p->Y(); 
		}
		else {
		    beta = p->Z();
		}	
		S(i,j) += alpha*beta;
	    }
	}
    }
    for( Int_t i=0; i < Vectors->GetEntries(); i++ ){
	denom += ((TVector3*)Vectors->At(i))->Mag2();
    }
    S *= 1./denom;
    S[1][0]=S[0][1];
    S[2][0]=S[0][2];
    S[2][1]=S[1][2];
    TMatrixDSymEigen Eigen(S);
    TVectorD EigenValues = Eigen.GetEigenValues();
    Sphericity = 1.5*(EigenValues[1]+EigenValues[2])/EigenValues.Sum();
    return Sphericity;
}

//____________________________________________________________________

TList* AtlEvent::GetVertices(HepVertex::EType type) const {
    //
    // Return list of vertices of given type
    //
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    // !!! The user is responsible for deleting this list    !!!
    // !!! (not its contents!) when it is not needed anymore !!!
    // !!! to avoid memory leaks.                            !!!
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    //
    TList *vertices = new TList;
    HepVertex *vtx = 0;
    for ( Int_t i = 0; i < fN_Vertices; i++ ) {
	vtx = (HepVertex*)fVertices->At(i);
	if ( vtx->GetType() & type ) vertices->Add(vtx);
    }
    return vertices;
}

//____________________________________________________________________

Int_t AtlEvent::GetN_PrimaryVertices() const {
    //
    // Return number of primary vertices
    //

    // Number already set? (SgTopD3PD case)
    if ( fN_vpx != -1 ) return fN_vpx;

    // Else: compute!
    HepVertex *vtx = 0;
    Int_t N_PrimVertixes = 0;
    for ( Int_t i = 0; i < fN_Vertices; i++ ) {
	vtx = (HepVertex*)fVertices->At(i);
	if(vtx->IsPrimary()) N_PrimVertixes++;
    }

    return N_PrimVertixes;
}

//____________________________________________________________________

HepVertex* AtlEvent::GetPrimaryVtx() const {
    //
    // Get the primary vertex of this event
    //
    HepVertex *vtx = 0;
    if (fVertices == NULL)
	return 0;
    for ( Int_t i = 0; i < fN_Vertices; i++ ) {
	vtx = (HepVertex*)fVertices->At(i);
	if ( vtx->GetType() & HepVertex::kPrimary ) break;
    }
    return vtx;
}

//____________________________________________________________________

AtlIDTrack* AtlEvent::GetAssociatedIDTrack(HepMCParticle *prt) const {
    //
    // Get the IDTrack that is associated to the HepMCParticle
    // by the hitbased Truthmatching (if it exists);
    // otherwise return NULL
    //
    // Default Value for the Matching Probability is set to 0.0001

    // !!!
    // Should be replaced by a datamember on HepMCParticle that contains
    // the link to a HepTrackHelix/AtlIDTrack in the future
    // !!!
    
    TClonesArray *idtrks = GetIDTracks();
    AtlIDTrack *trk = 0;

    for (Int_t i = 0; i < idtrks->GetEntries(); i++){
	trk = (AtlIDTrack*)idtrks->At(i);
	if ( trk->HasValidTruthMatch(0.0001) ){
	    if(trk->GetMCParticle() == prt) return trk;
	}
    }
    return 0;
}
 
//____________________________________________________________________

void AtlEvent::PrintTriggerMatches(Option_t *option) const {
    //
    // Print all matches between reconstructed objects (electrons,
    // muons, photons, tau) and trigger objects.
    // For jets see member function PrintTriggerMatches(AtlJet::EType).
    //
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    // !!! Currently only the matches for electrons, photons and !!!
    // !!! muons are filled                                      !!!
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    //
    // Options available:
    //    "ELEC" - Print electron matches
    //    "PHOT" - Print photon matches
    //    "MUON" - Print muon matches
    //    "TAU"  - Print tau lepton matches
    //    "ALL"  - Print all (default)
    //
    TString opt = option;
    opt.ToUpper();
    
    // Trigger config already loaded ?
    if ( GetTrigger()->GetTriggerConf() == 0 ) {
	AtlTriggerConf *conf = AtlTriggerConf::Instance();
	if ( conf->LoadTree(gDirectory) == 0 ) {
	    Error("PrintTriggerMatches",
		  "Cannot load trigger configuration. Please check.");
	    return;
	}
	AtlTrigger::SetConfig(conf);
    }
    
    cout << endl << endl
	 << "Trigger <-> Reco Object Matching:" << endl
	 << "=================================" << endl;

    // Electrons
    if ( opt.Contains("ALL") || opt.Contains("ELEC") ) {
	cout << endl
	     << "Electrons:" << endl
	     << "----------" << endl;
	AtlElectron *el = 0;
	for ( Int_t i = 0; i < GetN_Electrons(); i++ ) {
	    el = (AtlElectron*)fElectrons->At(i);
	    if ( el->GetN_TriggerMatches() > 0 ) {
		cout << "Id = " << el->GetId() << endl;
		PrintTriggerMatches(el);
	    }
	}
	cout << endl;
    }
    
    // Photons
    if ( opt.Contains("ALL") || opt.Contains("PHOT") ) {
	cout << endl
	     << "Photons:" << endl
	     << "--------" << endl;
	AtlPhoton *ph = 0;
	for ( Int_t i = 0; i < GetN_Photons(); i++ ) {
	    ph = (AtlPhoton*)fPhotons->At(i);
	    if ( ph->GetN_TriggerMatches() > 0 ) {
		cout << "Id = " << ph->GetId() << endl;
		PrintTriggerMatches(ph);
	    }
	    cout << endl;
	}
    }
    
    // Muons
    if ( opt.Contains("ALL") || opt.Contains("MUON") ) {
	cout << endl
	     << "Muons:" << endl
	     << "------" << endl;
	AtlMuon *mu = 0;
	for ( Int_t i = 0; i < GetN_Muons(); i++ ) {
	    mu = (AtlMuon*)fMuons->At(i);
	    if ( mu->GetN_TriggerMatches() > 0 ) {
		cout << "Id = " << mu->GetId() << endl;
		PrintTriggerMatches(mu);
	    }
	}
	cout << endl;
    }

    // Tau leptons
    if ( opt.Contains("ALL") || opt.Contains("TAU") ) {
	cout << endl
	     << "Tau leptons:" << endl
	     << "------------" << endl;
	AtlTau *tau = 0;
	for ( Int_t i = 0; i < GetN_Taus(); i++ ) {
	    tau = (AtlTau*)fTaus->At(i);
	    if ( tau->GetN_TriggerMatches() > 0 ) {
		cout << "Id = " << tau->GetId() << endl;
		PrintTriggerMatches(tau);
	    }
	}
	cout << endl;
    }
}
 
//____________________________________________________________________

void AtlEvent::PrintTriggerMatches(AtlJet::EType type) const {
    //
    // Print all matches between given type of jets
    // and trigger objects
    //
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    // !!! Currently only the matches for electrons, photons and !!!
    // !!! muons are filled                                      !!!
    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    //
    
    // Trigger config already loaded ?
    if ( GetTrigger()->GetTriggerConf() == 0 ) {
	AtlTriggerConf *conf = AtlTriggerConf::Instance();
	if ( conf->LoadTree(gDirectory) == 0 ) {
	    Error("PrintTriggerMatches",
		  "Cannot load trigger configuration. Please check.");
	    return;
	}
	AtlTrigger::SetConfig(conf);
    }
    
    cout << endl << endl
	 << "Trigger <-> Reco Object Matching:" << endl
	 << "=================================" << endl;

    cout << endl
	 << AtlJet::NameOfType(type) << " Jets:" << endl << endl;
    AtlJet *jet = 0;
    for ( Int_t i = 0; i < GetN_Jets(type); i++ ) {
	jet = (AtlJet*)GetJets(type)->At(i);
	if ( jet->GetN_TriggerMatches() > 0 ) {
	    cout << "Id = " << jet->GetId() << endl;
	    PrintTriggerMatches(jet);
	}
    }
    cout << endl;
}

//____________________________________________________________________

void AtlEvent::PrintTriggerMatches(AtlTriggerMatch *obj) const {
    //
    // Helper function for PrintTriggerMatches()
    //
    // Print triggger match for the given reconstructed object
    // (electron, photn, jet, muon or tau)
    //
    TObject *item = 0;
    TIter next_L1(obj->GetMatchedL1Items());
    cout << "Matched L1 items:";
    while ( (item = next_L1()) ) {
	Int_t bit = GetTrigger()->GetL1Items()->IndexOf(item);
	cout << " "
	     << GetTrigger()->GetTriggerConf()->GetL1ItemName(bit, RunNr());
    }
    TIter next_HLT(obj->GetMatchedHLTItems());
    cout << endl << "Matched HLT items:";
    while ( (item = next_HLT()) ) {
	Int_t bit = GetTrigger()->GetHLTItems()->IndexOf(item);
	cout << " "
	     << GetTrigger()->GetTriggerConf()->GetHLTItemName(bit, RunNr());
    }
    cout << endl;
}

//____________________________________________________________________

AtlTriggerItem* AtlEvent::AddL1Match(AtlTriggerMatch* RecoObject,
				     const char* L1ItemName) {
    //
    // Add matched L1 item to reconstructed object
    //
    AtlTriggerItem *item = GetTrigger()->GetL1Item(L1ItemName);
    RecoObject->AddL1Match(item);
    return item;
}

//____________________________________________________________________

AtlTriggerItem* AtlEvent::AddHLTMatch(AtlTriggerMatch* RecoObject,
				      const char* HLTItemName) {
    //
    // Add matched HLT item to reconstructed object
    //
    AtlTriggerItem *item = GetTrigger()->GetHLTItem(HLTItemName);
    RecoObject->AddHLTMatch(item);
    return item;
}

//____________________________________________________________________

void AtlEvent::ComputePtRel(HepParticle *prt,
			    TCollection *search_list,
			    Float_t DeltaRmax,
			    Double_t &PtRel, Double_t &DeltaR) {
    //
    // Compute the relative transverse momentum Pt_rel between the
    // given particle and the given list of jets nearest in DeltaR.
    // Only jets within the given cone of DeltaRmax are considered.
    // The corresponding DeltaR between the lepton and the selected
    // jet is also given.
    //
    // The return values PtRel and DeltaR are passed by reference. In
    // case no jet is found inside the given search cone, -1 will be
    // returned for both values.
    //
    TList *jets = FindMatchedJets(prt, search_list, DeltaRmax, 1., kTRUE);
    if ( jets->GetEntries() < 1 ) {
	delete jets;
	PtRel = -1.; DeltaR = -1.;
	return;
    }
    AtlJet *jet = (AtlJet*)jets->First();
    delete jets;
    PtRel  = jet->PtRel(prt);
    DeltaR = jet->DeltaR(prt);
    return;
}

 AtlEvent.cxx:1
 AtlEvent.cxx:2
 AtlEvent.cxx:3
 AtlEvent.cxx:4
 AtlEvent.cxx:5
 AtlEvent.cxx:6
 AtlEvent.cxx:7
 AtlEvent.cxx:8
 AtlEvent.cxx:9
 AtlEvent.cxx:10
 AtlEvent.cxx:11
 AtlEvent.cxx:12
 AtlEvent.cxx:13
 AtlEvent.cxx:14
 AtlEvent.cxx:15
 AtlEvent.cxx:16
 AtlEvent.cxx:17
 AtlEvent.cxx:18
 AtlEvent.cxx:19
 AtlEvent.cxx:20
 AtlEvent.cxx:21
 AtlEvent.cxx:22
 AtlEvent.cxx:23
 AtlEvent.cxx:24
 AtlEvent.cxx:25
 AtlEvent.cxx:26
 AtlEvent.cxx:27
 AtlEvent.cxx:28
 AtlEvent.cxx:29
 AtlEvent.cxx:30
 AtlEvent.cxx:31
 AtlEvent.cxx:32
 AtlEvent.cxx:33
 AtlEvent.cxx:34
 AtlEvent.cxx:35
 AtlEvent.cxx:36
 AtlEvent.cxx:37
 AtlEvent.cxx:38
 AtlEvent.cxx:39
 AtlEvent.cxx:40
 AtlEvent.cxx:41
 AtlEvent.cxx:42
 AtlEvent.cxx:43
 AtlEvent.cxx:44
 AtlEvent.cxx:45
 AtlEvent.cxx:46
 AtlEvent.cxx:47
 AtlEvent.cxx:48
 AtlEvent.cxx:49
 AtlEvent.cxx:50
 AtlEvent.cxx:51
 AtlEvent.cxx:52
 AtlEvent.cxx:53
 AtlEvent.cxx:54
 AtlEvent.cxx:55
 AtlEvent.cxx:56
 AtlEvent.cxx:57
 AtlEvent.cxx:58
 AtlEvent.cxx:59
 AtlEvent.cxx:60
 AtlEvent.cxx:61
 AtlEvent.cxx:62
 AtlEvent.cxx:63
 AtlEvent.cxx:64
 AtlEvent.cxx:65
 AtlEvent.cxx:66
 AtlEvent.cxx:67
 AtlEvent.cxx:68
 AtlEvent.cxx:69
 AtlEvent.cxx:70
 AtlEvent.cxx:71
 AtlEvent.cxx:72
 AtlEvent.cxx:73
 AtlEvent.cxx:74
 AtlEvent.cxx:75
 AtlEvent.cxx:76
 AtlEvent.cxx:77
 AtlEvent.cxx:78
 AtlEvent.cxx:79
 AtlEvent.cxx:80
 AtlEvent.cxx:81
 AtlEvent.cxx:82
 AtlEvent.cxx:83
 AtlEvent.cxx:84
 AtlEvent.cxx:85
 AtlEvent.cxx:86
 AtlEvent.cxx:87
 AtlEvent.cxx:88
 AtlEvent.cxx:89
 AtlEvent.cxx:90
 AtlEvent.cxx:91
 AtlEvent.cxx:92
 AtlEvent.cxx:93
 AtlEvent.cxx:94
 AtlEvent.cxx:95
 AtlEvent.cxx:96
 AtlEvent.cxx:97
 AtlEvent.cxx:98
 AtlEvent.cxx:99
 AtlEvent.cxx:100
 AtlEvent.cxx:101
 AtlEvent.cxx:102
 AtlEvent.cxx:103
 AtlEvent.cxx:104
 AtlEvent.cxx:105
 AtlEvent.cxx:106
 AtlEvent.cxx:107
 AtlEvent.cxx:108
 AtlEvent.cxx:109
 AtlEvent.cxx:110
 AtlEvent.cxx:111
 AtlEvent.cxx:112
 AtlEvent.cxx:113
 AtlEvent.cxx:114
 AtlEvent.cxx:115
 AtlEvent.cxx:116
 AtlEvent.cxx:117
 AtlEvent.cxx:118
 AtlEvent.cxx:119
 AtlEvent.cxx:120
 AtlEvent.cxx:121
 AtlEvent.cxx:122
 AtlEvent.cxx:123
 AtlEvent.cxx:124
 AtlEvent.cxx:125
 AtlEvent.cxx:126
 AtlEvent.cxx:127
 AtlEvent.cxx:128
 AtlEvent.cxx:129
 AtlEvent.cxx:130
 AtlEvent.cxx:131
 AtlEvent.cxx:132
 AtlEvent.cxx:133
 AtlEvent.cxx:134
 AtlEvent.cxx:135
 AtlEvent.cxx:136
 AtlEvent.cxx:137
 AtlEvent.cxx:138
 AtlEvent.cxx:139
 AtlEvent.cxx:140
 AtlEvent.cxx:141
 AtlEvent.cxx:142
 AtlEvent.cxx:143
 AtlEvent.cxx:144
 AtlEvent.cxx:145
 AtlEvent.cxx:146
 AtlEvent.cxx:147
 AtlEvent.cxx:148
 AtlEvent.cxx:149
 AtlEvent.cxx:150
 AtlEvent.cxx:151
 AtlEvent.cxx:152
 AtlEvent.cxx:153
 AtlEvent.cxx:154
 AtlEvent.cxx:155
 AtlEvent.cxx:156
 AtlEvent.cxx:157
 AtlEvent.cxx:158
 AtlEvent.cxx:159
 AtlEvent.cxx:160
 AtlEvent.cxx:161
 AtlEvent.cxx:162
 AtlEvent.cxx:163
 AtlEvent.cxx:164
 AtlEvent.cxx:165
 AtlEvent.cxx:166
 AtlEvent.cxx:167
 AtlEvent.cxx:168
 AtlEvent.cxx:169
 AtlEvent.cxx:170
 AtlEvent.cxx:171
 AtlEvent.cxx:172
 AtlEvent.cxx:173
 AtlEvent.cxx:174
 AtlEvent.cxx:175
 AtlEvent.cxx:176
 AtlEvent.cxx:177
 AtlEvent.cxx:178
 AtlEvent.cxx:179
 AtlEvent.cxx:180
 AtlEvent.cxx:181
 AtlEvent.cxx:182
 AtlEvent.cxx:183
 AtlEvent.cxx:184
 AtlEvent.cxx:185
 AtlEvent.cxx:186
 AtlEvent.cxx:187
 AtlEvent.cxx:188
 AtlEvent.cxx:189
 AtlEvent.cxx:190
 AtlEvent.cxx:191
 AtlEvent.cxx:192
 AtlEvent.cxx:193
 AtlEvent.cxx:194
 AtlEvent.cxx:195
 AtlEvent.cxx:196
 AtlEvent.cxx:197
 AtlEvent.cxx:198
 AtlEvent.cxx:199
 AtlEvent.cxx:200
 AtlEvent.cxx:201
 AtlEvent.cxx:202
 AtlEvent.cxx:203
 AtlEvent.cxx:204
 AtlEvent.cxx:205
 AtlEvent.cxx:206
 AtlEvent.cxx:207
 AtlEvent.cxx:208
 AtlEvent.cxx:209
 AtlEvent.cxx:210
 AtlEvent.cxx:211
 AtlEvent.cxx:212
 AtlEvent.cxx:213
 AtlEvent.cxx:214
 AtlEvent.cxx:215
 AtlEvent.cxx:216
 AtlEvent.cxx:217
 AtlEvent.cxx:218
 AtlEvent.cxx:219
 AtlEvent.cxx:220
 AtlEvent.cxx:221
 AtlEvent.cxx:222
 AtlEvent.cxx:223
 AtlEvent.cxx:224
 AtlEvent.cxx:225
 AtlEvent.cxx:226
 AtlEvent.cxx:227
 AtlEvent.cxx:228
 AtlEvent.cxx:229
 AtlEvent.cxx:230
 AtlEvent.cxx:231
 AtlEvent.cxx:232
 AtlEvent.cxx:233
 AtlEvent.cxx:234
 AtlEvent.cxx:235
 AtlEvent.cxx:236
 AtlEvent.cxx:237
 AtlEvent.cxx:238
 AtlEvent.cxx:239
 AtlEvent.cxx:240
 AtlEvent.cxx:241
 AtlEvent.cxx:242
 AtlEvent.cxx:243
 AtlEvent.cxx:244
 AtlEvent.cxx:245
 AtlEvent.cxx:246
 AtlEvent.cxx:247
 AtlEvent.cxx:248
 AtlEvent.cxx:249
 AtlEvent.cxx:250
 AtlEvent.cxx:251
 AtlEvent.cxx:252
 AtlEvent.cxx:253
 AtlEvent.cxx:254
 AtlEvent.cxx:255
 AtlEvent.cxx:256
 AtlEvent.cxx:257
 AtlEvent.cxx:258
 AtlEvent.cxx:259
 AtlEvent.cxx:260
 AtlEvent.cxx:261
 AtlEvent.cxx:262
 AtlEvent.cxx:263
 AtlEvent.cxx:264
 AtlEvent.cxx:265
 AtlEvent.cxx:266
 AtlEvent.cxx:267
 AtlEvent.cxx:268
 AtlEvent.cxx:269
 AtlEvent.cxx:270
 AtlEvent.cxx:271
 AtlEvent.cxx:272
 AtlEvent.cxx:273
 AtlEvent.cxx:274
 AtlEvent.cxx:275
 AtlEvent.cxx:276
 AtlEvent.cxx:277
 AtlEvent.cxx:278
 AtlEvent.cxx:279
 AtlEvent.cxx:280
 AtlEvent.cxx:281
 AtlEvent.cxx:282
 AtlEvent.cxx:283
 AtlEvent.cxx:284
 AtlEvent.cxx:285
 AtlEvent.cxx:286
 AtlEvent.cxx:287
 AtlEvent.cxx:288
 AtlEvent.cxx:289
 AtlEvent.cxx:290
 AtlEvent.cxx:291
 AtlEvent.cxx:292
 AtlEvent.cxx:293
 AtlEvent.cxx:294
 AtlEvent.cxx:295
 AtlEvent.cxx:296
 AtlEvent.cxx:297
 AtlEvent.cxx:298
 AtlEvent.cxx:299
 AtlEvent.cxx:300
 AtlEvent.cxx:301
 AtlEvent.cxx:302
 AtlEvent.cxx:303
 AtlEvent.cxx:304
 AtlEvent.cxx:305
 AtlEvent.cxx:306
 AtlEvent.cxx:307
 AtlEvent.cxx:308
 AtlEvent.cxx:309
 AtlEvent.cxx:310
 AtlEvent.cxx:311
 AtlEvent.cxx:312
 AtlEvent.cxx:313
 AtlEvent.cxx:314
 AtlEvent.cxx:315
 AtlEvent.cxx:316
 AtlEvent.cxx:317
 AtlEvent.cxx:318
 AtlEvent.cxx:319
 AtlEvent.cxx:320
 AtlEvent.cxx:321
 AtlEvent.cxx:322
 AtlEvent.cxx:323
 AtlEvent.cxx:324
 AtlEvent.cxx:325
 AtlEvent.cxx:326
 AtlEvent.cxx:327
 AtlEvent.cxx:328
 AtlEvent.cxx:329
 AtlEvent.cxx:330
 AtlEvent.cxx:331
 AtlEvent.cxx:332
 AtlEvent.cxx:333
 AtlEvent.cxx:334
 AtlEvent.cxx:335
 AtlEvent.cxx:336
 AtlEvent.cxx:337
 AtlEvent.cxx:338
 AtlEvent.cxx:339
 AtlEvent.cxx:340
 AtlEvent.cxx:341
 AtlEvent.cxx:342
 AtlEvent.cxx:343
 AtlEvent.cxx:344
 AtlEvent.cxx:345
 AtlEvent.cxx:346
 AtlEvent.cxx:347
 AtlEvent.cxx:348
 AtlEvent.cxx:349
 AtlEvent.cxx:350
 AtlEvent.cxx:351
 AtlEvent.cxx:352
 AtlEvent.cxx:353
 AtlEvent.cxx:354
 AtlEvent.cxx:355
 AtlEvent.cxx:356
 AtlEvent.cxx:357
 AtlEvent.cxx:358
 AtlEvent.cxx:359
 AtlEvent.cxx:360
 AtlEvent.cxx:361
 AtlEvent.cxx:362
 AtlEvent.cxx:363
 AtlEvent.cxx:364
 AtlEvent.cxx:365
 AtlEvent.cxx:366
 AtlEvent.cxx:367
 AtlEvent.cxx:368
 AtlEvent.cxx:369
 AtlEvent.cxx:370
 AtlEvent.cxx:371
 AtlEvent.cxx:372
 AtlEvent.cxx:373
 AtlEvent.cxx:374
 AtlEvent.cxx:375
 AtlEvent.cxx:376
 AtlEvent.cxx:377
 AtlEvent.cxx:378
 AtlEvent.cxx:379
 AtlEvent.cxx:380
 AtlEvent.cxx:381
 AtlEvent.cxx:382
 AtlEvent.cxx:383
 AtlEvent.cxx:384
 AtlEvent.cxx:385
 AtlEvent.cxx:386
 AtlEvent.cxx:387
 AtlEvent.cxx:388
 AtlEvent.cxx:389
 AtlEvent.cxx:390
 AtlEvent.cxx:391
 AtlEvent.cxx:392
 AtlEvent.cxx:393
 AtlEvent.cxx:394
 AtlEvent.cxx:395
 AtlEvent.cxx:396
 AtlEvent.cxx:397
 AtlEvent.cxx:398
 AtlEvent.cxx:399
 AtlEvent.cxx:400
 AtlEvent.cxx:401
 AtlEvent.cxx:402
 AtlEvent.cxx:403
 AtlEvent.cxx:404
 AtlEvent.cxx:405
 AtlEvent.cxx:406
 AtlEvent.cxx:407
 AtlEvent.cxx:408
 AtlEvent.cxx:409
 AtlEvent.cxx:410
 AtlEvent.cxx:411
 AtlEvent.cxx:412
 AtlEvent.cxx:413
 AtlEvent.cxx:414
 AtlEvent.cxx:415
 AtlEvent.cxx:416
 AtlEvent.cxx:417
 AtlEvent.cxx:418
 AtlEvent.cxx:419
 AtlEvent.cxx:420
 AtlEvent.cxx:421
 AtlEvent.cxx:422
 AtlEvent.cxx:423
 AtlEvent.cxx:424
 AtlEvent.cxx:425
 AtlEvent.cxx:426
 AtlEvent.cxx:427
 AtlEvent.cxx:428
 AtlEvent.cxx:429
 AtlEvent.cxx:430
 AtlEvent.cxx:431
 AtlEvent.cxx:432
 AtlEvent.cxx:433
 AtlEvent.cxx:434
 AtlEvent.cxx:435
 AtlEvent.cxx:436
 AtlEvent.cxx:437
 AtlEvent.cxx:438
 AtlEvent.cxx:439
 AtlEvent.cxx:440
 AtlEvent.cxx:441
 AtlEvent.cxx:442
 AtlEvent.cxx:443
 AtlEvent.cxx:444
 AtlEvent.cxx:445
 AtlEvent.cxx:446
 AtlEvent.cxx:447
 AtlEvent.cxx:448
 AtlEvent.cxx:449
 AtlEvent.cxx:450
 AtlEvent.cxx:451
 AtlEvent.cxx:452
 AtlEvent.cxx:453
 AtlEvent.cxx:454
 AtlEvent.cxx:455
 AtlEvent.cxx:456
 AtlEvent.cxx:457
 AtlEvent.cxx:458
 AtlEvent.cxx:459
 AtlEvent.cxx:460
 AtlEvent.cxx:461
 AtlEvent.cxx:462
 AtlEvent.cxx:463
 AtlEvent.cxx:464
 AtlEvent.cxx:465
 AtlEvent.cxx:466
 AtlEvent.cxx:467
 AtlEvent.cxx:468
 AtlEvent.cxx:469
 AtlEvent.cxx:470
 AtlEvent.cxx:471
 AtlEvent.cxx:472
 AtlEvent.cxx:473
 AtlEvent.cxx:474
 AtlEvent.cxx:475
 AtlEvent.cxx:476
 AtlEvent.cxx:477
 AtlEvent.cxx:478
 AtlEvent.cxx:479
 AtlEvent.cxx:480
 AtlEvent.cxx:481
 AtlEvent.cxx:482
 AtlEvent.cxx:483
 AtlEvent.cxx:484
 AtlEvent.cxx:485
 AtlEvent.cxx:486
 AtlEvent.cxx:487
 AtlEvent.cxx:488
 AtlEvent.cxx:489
 AtlEvent.cxx:490
 AtlEvent.cxx:491
 AtlEvent.cxx:492
 AtlEvent.cxx:493
 AtlEvent.cxx:494
 AtlEvent.cxx:495
 AtlEvent.cxx:496
 AtlEvent.cxx:497
 AtlEvent.cxx:498
 AtlEvent.cxx:499
 AtlEvent.cxx:500
 AtlEvent.cxx:501
 AtlEvent.cxx:502
 AtlEvent.cxx:503
 AtlEvent.cxx:504
 AtlEvent.cxx:505
 AtlEvent.cxx:506
 AtlEvent.cxx:507
 AtlEvent.cxx:508
 AtlEvent.cxx:509
 AtlEvent.cxx:510
 AtlEvent.cxx:511
 AtlEvent.cxx:512
 AtlEvent.cxx:513
 AtlEvent.cxx:514
 AtlEvent.cxx:515
 AtlEvent.cxx:516
 AtlEvent.cxx:517
 AtlEvent.cxx:518
 AtlEvent.cxx:519
 AtlEvent.cxx:520
 AtlEvent.cxx:521
 AtlEvent.cxx:522
 AtlEvent.cxx:523
 AtlEvent.cxx:524
 AtlEvent.cxx:525
 AtlEvent.cxx:526
 AtlEvent.cxx:527
 AtlEvent.cxx:528
 AtlEvent.cxx:529
 AtlEvent.cxx:530
 AtlEvent.cxx:531
 AtlEvent.cxx:532
 AtlEvent.cxx:533
 AtlEvent.cxx:534
 AtlEvent.cxx:535
 AtlEvent.cxx:536
 AtlEvent.cxx:537
 AtlEvent.cxx:538
 AtlEvent.cxx:539
 AtlEvent.cxx:540
 AtlEvent.cxx:541
 AtlEvent.cxx:542
 AtlEvent.cxx:543
 AtlEvent.cxx:544
 AtlEvent.cxx:545
 AtlEvent.cxx:546
 AtlEvent.cxx:547
 AtlEvent.cxx:548
 AtlEvent.cxx:549
 AtlEvent.cxx:550
 AtlEvent.cxx:551
 AtlEvent.cxx:552
 AtlEvent.cxx:553
 AtlEvent.cxx:554
 AtlEvent.cxx:555
 AtlEvent.cxx:556
 AtlEvent.cxx:557
 AtlEvent.cxx:558
 AtlEvent.cxx:559
 AtlEvent.cxx:560
 AtlEvent.cxx:561
 AtlEvent.cxx:562
 AtlEvent.cxx:563
 AtlEvent.cxx:564
 AtlEvent.cxx:565
 AtlEvent.cxx:566
 AtlEvent.cxx:567
 AtlEvent.cxx:568
 AtlEvent.cxx:569
 AtlEvent.cxx:570
 AtlEvent.cxx:571
 AtlEvent.cxx:572
 AtlEvent.cxx:573
 AtlEvent.cxx:574
 AtlEvent.cxx:575
 AtlEvent.cxx:576
 AtlEvent.cxx:577
 AtlEvent.cxx:578
 AtlEvent.cxx:579
 AtlEvent.cxx:580
 AtlEvent.cxx:581
 AtlEvent.cxx:582
 AtlEvent.cxx:583
 AtlEvent.cxx:584
 AtlEvent.cxx:585
 AtlEvent.cxx:586
 AtlEvent.cxx:587
 AtlEvent.cxx:588
 AtlEvent.cxx:589
 AtlEvent.cxx:590
 AtlEvent.cxx:591
 AtlEvent.cxx:592
 AtlEvent.cxx:593
 AtlEvent.cxx:594
 AtlEvent.cxx:595
 AtlEvent.cxx:596
 AtlEvent.cxx:597
 AtlEvent.cxx:598
 AtlEvent.cxx:599
 AtlEvent.cxx:600
 AtlEvent.cxx:601
 AtlEvent.cxx:602
 AtlEvent.cxx:603
 AtlEvent.cxx:604
 AtlEvent.cxx:605
 AtlEvent.cxx:606
 AtlEvent.cxx:607
 AtlEvent.cxx:608
 AtlEvent.cxx:609
 AtlEvent.cxx:610
 AtlEvent.cxx:611
 AtlEvent.cxx:612
 AtlEvent.cxx:613
 AtlEvent.cxx:614
 AtlEvent.cxx:615
 AtlEvent.cxx:616
 AtlEvent.cxx:617
 AtlEvent.cxx:618
 AtlEvent.cxx:619
 AtlEvent.cxx:620
 AtlEvent.cxx:621
 AtlEvent.cxx:622
 AtlEvent.cxx:623
 AtlEvent.cxx:624
 AtlEvent.cxx:625
 AtlEvent.cxx:626
 AtlEvent.cxx:627
 AtlEvent.cxx:628
 AtlEvent.cxx:629
 AtlEvent.cxx:630
 AtlEvent.cxx:631
 AtlEvent.cxx:632
 AtlEvent.cxx:633
 AtlEvent.cxx:634
 AtlEvent.cxx:635
 AtlEvent.cxx:636
 AtlEvent.cxx:637
 AtlEvent.cxx:638
 AtlEvent.cxx:639
 AtlEvent.cxx:640
 AtlEvent.cxx:641
 AtlEvent.cxx:642
 AtlEvent.cxx:643
 AtlEvent.cxx:644
 AtlEvent.cxx:645
 AtlEvent.cxx:646
 AtlEvent.cxx:647
 AtlEvent.cxx:648
 AtlEvent.cxx:649
 AtlEvent.cxx:650
 AtlEvent.cxx:651
 AtlEvent.cxx:652
 AtlEvent.cxx:653
 AtlEvent.cxx:654
 AtlEvent.cxx:655
 AtlEvent.cxx:656
 AtlEvent.cxx:657
 AtlEvent.cxx:658
 AtlEvent.cxx:659
 AtlEvent.cxx:660
 AtlEvent.cxx:661
 AtlEvent.cxx:662
 AtlEvent.cxx:663
 AtlEvent.cxx:664
 AtlEvent.cxx:665
 AtlEvent.cxx:666
 AtlEvent.cxx:667
 AtlEvent.cxx:668
 AtlEvent.cxx:669
 AtlEvent.cxx:670
 AtlEvent.cxx:671
 AtlEvent.cxx:672
 AtlEvent.cxx:673
 AtlEvent.cxx:674
 AtlEvent.cxx:675
 AtlEvent.cxx:676
 AtlEvent.cxx:677
 AtlEvent.cxx:678
 AtlEvent.cxx:679
 AtlEvent.cxx:680
 AtlEvent.cxx:681
 AtlEvent.cxx:682
 AtlEvent.cxx:683
 AtlEvent.cxx:684
 AtlEvent.cxx:685
 AtlEvent.cxx:686
 AtlEvent.cxx:687
 AtlEvent.cxx:688
 AtlEvent.cxx:689
 AtlEvent.cxx:690
 AtlEvent.cxx:691
 AtlEvent.cxx:692
 AtlEvent.cxx:693
 AtlEvent.cxx:694
 AtlEvent.cxx:695
 AtlEvent.cxx:696
 AtlEvent.cxx:697
 AtlEvent.cxx:698
 AtlEvent.cxx:699
 AtlEvent.cxx:700
 AtlEvent.cxx:701
 AtlEvent.cxx:702
 AtlEvent.cxx:703
 AtlEvent.cxx:704
 AtlEvent.cxx:705
 AtlEvent.cxx:706
 AtlEvent.cxx:707
 AtlEvent.cxx:708
 AtlEvent.cxx:709
 AtlEvent.cxx:710
 AtlEvent.cxx:711
 AtlEvent.cxx:712
 AtlEvent.cxx:713
 AtlEvent.cxx:714
 AtlEvent.cxx:715
 AtlEvent.cxx:716
 AtlEvent.cxx:717
 AtlEvent.cxx:718
 AtlEvent.cxx:719
 AtlEvent.cxx:720
 AtlEvent.cxx:721
 AtlEvent.cxx:722
 AtlEvent.cxx:723
 AtlEvent.cxx:724
 AtlEvent.cxx:725
 AtlEvent.cxx:726
 AtlEvent.cxx:727
 AtlEvent.cxx:728
 AtlEvent.cxx:729
 AtlEvent.cxx:730
 AtlEvent.cxx:731
 AtlEvent.cxx:732
 AtlEvent.cxx:733
 AtlEvent.cxx:734
 AtlEvent.cxx:735
 AtlEvent.cxx:736
 AtlEvent.cxx:737
 AtlEvent.cxx:738
 AtlEvent.cxx:739
 AtlEvent.cxx:740
 AtlEvent.cxx:741
 AtlEvent.cxx:742
 AtlEvent.cxx:743
 AtlEvent.cxx:744
 AtlEvent.cxx:745
 AtlEvent.cxx:746
 AtlEvent.cxx:747
 AtlEvent.cxx:748
 AtlEvent.cxx:749
 AtlEvent.cxx:750
 AtlEvent.cxx:751
 AtlEvent.cxx:752
 AtlEvent.cxx:753
 AtlEvent.cxx:754
 AtlEvent.cxx:755
 AtlEvent.cxx:756
 AtlEvent.cxx:757
 AtlEvent.cxx:758
 AtlEvent.cxx:759
 AtlEvent.cxx:760
 AtlEvent.cxx:761
 AtlEvent.cxx:762
 AtlEvent.cxx:763
 AtlEvent.cxx:764
 AtlEvent.cxx:765
 AtlEvent.cxx:766
 AtlEvent.cxx:767
 AtlEvent.cxx:768
 AtlEvent.cxx:769
 AtlEvent.cxx:770
 AtlEvent.cxx:771
 AtlEvent.cxx:772
 AtlEvent.cxx:773
 AtlEvent.cxx:774
 AtlEvent.cxx:775
 AtlEvent.cxx:776
 AtlEvent.cxx:777
 AtlEvent.cxx:778
 AtlEvent.cxx:779
 AtlEvent.cxx:780
 AtlEvent.cxx:781
 AtlEvent.cxx:782
 AtlEvent.cxx:783
 AtlEvent.cxx:784
 AtlEvent.cxx:785
 AtlEvent.cxx:786
 AtlEvent.cxx:787
 AtlEvent.cxx:788
 AtlEvent.cxx:789
 AtlEvent.cxx:790
 AtlEvent.cxx:791
 AtlEvent.cxx:792
 AtlEvent.cxx:793
 AtlEvent.cxx:794
 AtlEvent.cxx:795
 AtlEvent.cxx:796
 AtlEvent.cxx:797
 AtlEvent.cxx:798
 AtlEvent.cxx:799
 AtlEvent.cxx:800
 AtlEvent.cxx:801
 AtlEvent.cxx:802
 AtlEvent.cxx:803
 AtlEvent.cxx:804
 AtlEvent.cxx:805
 AtlEvent.cxx:806
 AtlEvent.cxx:807
 AtlEvent.cxx:808
 AtlEvent.cxx:809
 AtlEvent.cxx:810
 AtlEvent.cxx:811
 AtlEvent.cxx:812
 AtlEvent.cxx:813
 AtlEvent.cxx:814
 AtlEvent.cxx:815
 AtlEvent.cxx:816
 AtlEvent.cxx:817
 AtlEvent.cxx:818
 AtlEvent.cxx:819
 AtlEvent.cxx:820
 AtlEvent.cxx:821
 AtlEvent.cxx:822
 AtlEvent.cxx:823
 AtlEvent.cxx:824
 AtlEvent.cxx:825
 AtlEvent.cxx:826
 AtlEvent.cxx:827
 AtlEvent.cxx:828
 AtlEvent.cxx:829
 AtlEvent.cxx:830
 AtlEvent.cxx:831
 AtlEvent.cxx:832
 AtlEvent.cxx:833
 AtlEvent.cxx:834
 AtlEvent.cxx:835
 AtlEvent.cxx:836
 AtlEvent.cxx:837
 AtlEvent.cxx:838
 AtlEvent.cxx:839
 AtlEvent.cxx:840
 AtlEvent.cxx:841
 AtlEvent.cxx:842
 AtlEvent.cxx:843
 AtlEvent.cxx:844
 AtlEvent.cxx:845
 AtlEvent.cxx:846
 AtlEvent.cxx:847
 AtlEvent.cxx:848
 AtlEvent.cxx:849
 AtlEvent.cxx:850
 AtlEvent.cxx:851
 AtlEvent.cxx:852
 AtlEvent.cxx:853
 AtlEvent.cxx:854
 AtlEvent.cxx:855
 AtlEvent.cxx:856
 AtlEvent.cxx:857
 AtlEvent.cxx:858
 AtlEvent.cxx:859
 AtlEvent.cxx:860
 AtlEvent.cxx:861
 AtlEvent.cxx:862
 AtlEvent.cxx:863
 AtlEvent.cxx:864
 AtlEvent.cxx:865
 AtlEvent.cxx:866
 AtlEvent.cxx:867
 AtlEvent.cxx:868
 AtlEvent.cxx:869
 AtlEvent.cxx:870
 AtlEvent.cxx:871
 AtlEvent.cxx:872
 AtlEvent.cxx:873
 AtlEvent.cxx:874
 AtlEvent.cxx:875
 AtlEvent.cxx:876
 AtlEvent.cxx:877
 AtlEvent.cxx:878
 AtlEvent.cxx:879
 AtlEvent.cxx:880
 AtlEvent.cxx:881
 AtlEvent.cxx:882
 AtlEvent.cxx:883
 AtlEvent.cxx:884
 AtlEvent.cxx:885
 AtlEvent.cxx:886
 AtlEvent.cxx:887
 AtlEvent.cxx:888
 AtlEvent.cxx:889
 AtlEvent.cxx:890
 AtlEvent.cxx:891
 AtlEvent.cxx:892
 AtlEvent.cxx:893
 AtlEvent.cxx:894
 AtlEvent.cxx:895
 AtlEvent.cxx:896
 AtlEvent.cxx:897
 AtlEvent.cxx:898
 AtlEvent.cxx:899
 AtlEvent.cxx:900
 AtlEvent.cxx:901
 AtlEvent.cxx:902
 AtlEvent.cxx:903
 AtlEvent.cxx:904
 AtlEvent.cxx:905
 AtlEvent.cxx:906
 AtlEvent.cxx:907
 AtlEvent.cxx:908
 AtlEvent.cxx:909
 AtlEvent.cxx:910
 AtlEvent.cxx:911
 AtlEvent.cxx:912
 AtlEvent.cxx:913
 AtlEvent.cxx:914
 AtlEvent.cxx:915
 AtlEvent.cxx:916
 AtlEvent.cxx:917
 AtlEvent.cxx:918
 AtlEvent.cxx:919
 AtlEvent.cxx:920
 AtlEvent.cxx:921
 AtlEvent.cxx:922
 AtlEvent.cxx:923
 AtlEvent.cxx:924
 AtlEvent.cxx:925
 AtlEvent.cxx:926
 AtlEvent.cxx:927
 AtlEvent.cxx:928
 AtlEvent.cxx:929
 AtlEvent.cxx:930
 AtlEvent.cxx:931
 AtlEvent.cxx:932
 AtlEvent.cxx:933
 AtlEvent.cxx:934
 AtlEvent.cxx:935
 AtlEvent.cxx:936
 AtlEvent.cxx:937
 AtlEvent.cxx:938
 AtlEvent.cxx:939
 AtlEvent.cxx:940
 AtlEvent.cxx:941
 AtlEvent.cxx:942
 AtlEvent.cxx:943
 AtlEvent.cxx:944
 AtlEvent.cxx:945
 AtlEvent.cxx:946
 AtlEvent.cxx:947
 AtlEvent.cxx:948
 AtlEvent.cxx:949
 AtlEvent.cxx:950
 AtlEvent.cxx:951
 AtlEvent.cxx:952
 AtlEvent.cxx:953
 AtlEvent.cxx:954
 AtlEvent.cxx:955
 AtlEvent.cxx:956
 AtlEvent.cxx:957
 AtlEvent.cxx:958
 AtlEvent.cxx:959
 AtlEvent.cxx:960
 AtlEvent.cxx:961
 AtlEvent.cxx:962
 AtlEvent.cxx:963
 AtlEvent.cxx:964
 AtlEvent.cxx:965
 AtlEvent.cxx:966
 AtlEvent.cxx:967
 AtlEvent.cxx:968
 AtlEvent.cxx:969
 AtlEvent.cxx:970
 AtlEvent.cxx:971
 AtlEvent.cxx:972
 AtlEvent.cxx:973
 AtlEvent.cxx:974
 AtlEvent.cxx:975
 AtlEvent.cxx:976
 AtlEvent.cxx:977
 AtlEvent.cxx:978
 AtlEvent.cxx:979
 AtlEvent.cxx:980
 AtlEvent.cxx:981
 AtlEvent.cxx:982
 AtlEvent.cxx:983
 AtlEvent.cxx:984
 AtlEvent.cxx:985
 AtlEvent.cxx:986
 AtlEvent.cxx:987
 AtlEvent.cxx:988
 AtlEvent.cxx:989
 AtlEvent.cxx:990
 AtlEvent.cxx:991
 AtlEvent.cxx:992
 AtlEvent.cxx:993
 AtlEvent.cxx:994
 AtlEvent.cxx:995
 AtlEvent.cxx:996
 AtlEvent.cxx:997
 AtlEvent.cxx:998
 AtlEvent.cxx:999
 AtlEvent.cxx:1000
 AtlEvent.cxx:1001
 AtlEvent.cxx:1002
 AtlEvent.cxx:1003
 AtlEvent.cxx:1004
 AtlEvent.cxx:1005
 AtlEvent.cxx:1006
 AtlEvent.cxx:1007
 AtlEvent.cxx:1008
 AtlEvent.cxx:1009
 AtlEvent.cxx:1010
 AtlEvent.cxx:1011
 AtlEvent.cxx:1012
 AtlEvent.cxx:1013
 AtlEvent.cxx:1014
 AtlEvent.cxx:1015
 AtlEvent.cxx:1016
 AtlEvent.cxx:1017
 AtlEvent.cxx:1018
 AtlEvent.cxx:1019
 AtlEvent.cxx:1020
 AtlEvent.cxx:1021
 AtlEvent.cxx:1022
 AtlEvent.cxx:1023
 AtlEvent.cxx:1024
 AtlEvent.cxx:1025
 AtlEvent.cxx:1026
 AtlEvent.cxx:1027
 AtlEvent.cxx:1028
 AtlEvent.cxx:1029
 AtlEvent.cxx:1030
 AtlEvent.cxx:1031
 AtlEvent.cxx:1032
 AtlEvent.cxx:1033
 AtlEvent.cxx:1034
 AtlEvent.cxx:1035
 AtlEvent.cxx:1036
 AtlEvent.cxx:1037
 AtlEvent.cxx:1038
 AtlEvent.cxx:1039
 AtlEvent.cxx:1040
 AtlEvent.cxx:1041
 AtlEvent.cxx:1042
 AtlEvent.cxx:1043
 AtlEvent.cxx:1044
 AtlEvent.cxx:1045
 AtlEvent.cxx:1046
 AtlEvent.cxx:1047
 AtlEvent.cxx:1048
 AtlEvent.cxx:1049
 AtlEvent.cxx:1050
 AtlEvent.cxx:1051
 AtlEvent.cxx:1052
 AtlEvent.cxx:1053
 AtlEvent.cxx:1054
 AtlEvent.cxx:1055
 AtlEvent.cxx:1056
 AtlEvent.cxx:1057
 AtlEvent.cxx:1058
 AtlEvent.cxx:1059
 AtlEvent.cxx:1060
 AtlEvent.cxx:1061
 AtlEvent.cxx:1062
 AtlEvent.cxx:1063
 AtlEvent.cxx:1064
 AtlEvent.cxx:1065
 AtlEvent.cxx:1066
 AtlEvent.cxx:1067
 AtlEvent.cxx:1068
 AtlEvent.cxx:1069
 AtlEvent.cxx:1070
 AtlEvent.cxx:1071
 AtlEvent.cxx:1072
 AtlEvent.cxx:1073
 AtlEvent.cxx:1074
 AtlEvent.cxx:1075
 AtlEvent.cxx:1076
 AtlEvent.cxx:1077
 AtlEvent.cxx:1078
 AtlEvent.cxx:1079
 AtlEvent.cxx:1080
 AtlEvent.cxx:1081
 AtlEvent.cxx:1082
 AtlEvent.cxx:1083
 AtlEvent.cxx:1084
 AtlEvent.cxx:1085
 AtlEvent.cxx:1086
 AtlEvent.cxx:1087
 AtlEvent.cxx:1088
 AtlEvent.cxx:1089
 AtlEvent.cxx:1090
 AtlEvent.cxx:1091
 AtlEvent.cxx:1092
 AtlEvent.cxx:1093
 AtlEvent.cxx:1094
 AtlEvent.cxx:1095
 AtlEvent.cxx:1096
 AtlEvent.cxx:1097
 AtlEvent.cxx:1098
 AtlEvent.cxx:1099
 AtlEvent.cxx:1100
 AtlEvent.cxx:1101
 AtlEvent.cxx:1102
 AtlEvent.cxx:1103
 AtlEvent.cxx:1104
 AtlEvent.cxx:1105
 AtlEvent.cxx:1106
 AtlEvent.cxx:1107
 AtlEvent.cxx:1108
 AtlEvent.cxx:1109
 AtlEvent.cxx:1110
 AtlEvent.cxx:1111
 AtlEvent.cxx:1112
 AtlEvent.cxx:1113
 AtlEvent.cxx:1114
 AtlEvent.cxx:1115
 AtlEvent.cxx:1116
 AtlEvent.cxx:1117
 AtlEvent.cxx:1118
 AtlEvent.cxx:1119
 AtlEvent.cxx:1120
 AtlEvent.cxx:1121
 AtlEvent.cxx:1122
 AtlEvent.cxx:1123
 AtlEvent.cxx:1124
 AtlEvent.cxx:1125
 AtlEvent.cxx:1126
 AtlEvent.cxx:1127
 AtlEvent.cxx:1128
 AtlEvent.cxx:1129
 AtlEvent.cxx:1130
 AtlEvent.cxx:1131
 AtlEvent.cxx:1132
 AtlEvent.cxx:1133
 AtlEvent.cxx:1134
 AtlEvent.cxx:1135
 AtlEvent.cxx:1136
 AtlEvent.cxx:1137
 AtlEvent.cxx:1138
 AtlEvent.cxx:1139
 AtlEvent.cxx:1140
 AtlEvent.cxx:1141
 AtlEvent.cxx:1142
 AtlEvent.cxx:1143
 AtlEvent.cxx:1144
 AtlEvent.cxx:1145
 AtlEvent.cxx:1146
 AtlEvent.cxx:1147
 AtlEvent.cxx:1148
 AtlEvent.cxx:1149
 AtlEvent.cxx:1150
 AtlEvent.cxx:1151
 AtlEvent.cxx:1152
 AtlEvent.cxx:1153
 AtlEvent.cxx:1154
 AtlEvent.cxx:1155
 AtlEvent.cxx:1156
 AtlEvent.cxx:1157
 AtlEvent.cxx:1158
 AtlEvent.cxx:1159
 AtlEvent.cxx:1160
 AtlEvent.cxx:1161
 AtlEvent.cxx:1162
 AtlEvent.cxx:1163
 AtlEvent.cxx:1164
 AtlEvent.cxx:1165
 AtlEvent.cxx:1166
 AtlEvent.cxx:1167
 AtlEvent.cxx:1168
 AtlEvent.cxx:1169
 AtlEvent.cxx:1170
 AtlEvent.cxx:1171
 AtlEvent.cxx:1172
 AtlEvent.cxx:1173
 AtlEvent.cxx:1174
 AtlEvent.cxx:1175
 AtlEvent.cxx:1176
 AtlEvent.cxx:1177
 AtlEvent.cxx:1178
 AtlEvent.cxx:1179
 AtlEvent.cxx:1180
 AtlEvent.cxx:1181
 AtlEvent.cxx:1182
 AtlEvent.cxx:1183
 AtlEvent.cxx:1184
 AtlEvent.cxx:1185
 AtlEvent.cxx:1186
 AtlEvent.cxx:1187
 AtlEvent.cxx:1188
 AtlEvent.cxx:1189
 AtlEvent.cxx:1190
 AtlEvent.cxx:1191
 AtlEvent.cxx:1192
 AtlEvent.cxx:1193
 AtlEvent.cxx:1194
 AtlEvent.cxx:1195
 AtlEvent.cxx:1196
 AtlEvent.cxx:1197
 AtlEvent.cxx:1198
 AtlEvent.cxx:1199
 AtlEvent.cxx:1200
 AtlEvent.cxx:1201
 AtlEvent.cxx:1202
 AtlEvent.cxx:1203
 AtlEvent.cxx:1204
 AtlEvent.cxx:1205
 AtlEvent.cxx:1206
 AtlEvent.cxx:1207
 AtlEvent.cxx:1208
 AtlEvent.cxx:1209
 AtlEvent.cxx:1210
 AtlEvent.cxx:1211
 AtlEvent.cxx:1212
 AtlEvent.cxx:1213
 AtlEvent.cxx:1214
 AtlEvent.cxx:1215
 AtlEvent.cxx:1216
 AtlEvent.cxx:1217
 AtlEvent.cxx:1218
 AtlEvent.cxx:1219
 AtlEvent.cxx:1220
 AtlEvent.cxx:1221
 AtlEvent.cxx:1222
 AtlEvent.cxx:1223
 AtlEvent.cxx:1224
 AtlEvent.cxx:1225
 AtlEvent.cxx:1226
 AtlEvent.cxx:1227
 AtlEvent.cxx:1228
 AtlEvent.cxx:1229
 AtlEvent.cxx:1230
 AtlEvent.cxx:1231
 AtlEvent.cxx:1232
 AtlEvent.cxx:1233
 AtlEvent.cxx:1234
 AtlEvent.cxx:1235
 AtlEvent.cxx:1236
 AtlEvent.cxx:1237
 AtlEvent.cxx:1238
 AtlEvent.cxx:1239
 AtlEvent.cxx:1240
 AtlEvent.cxx:1241
 AtlEvent.cxx:1242
 AtlEvent.cxx:1243
 AtlEvent.cxx:1244
 AtlEvent.cxx:1245
 AtlEvent.cxx:1246
 AtlEvent.cxx:1247
 AtlEvent.cxx:1248
 AtlEvent.cxx:1249
 AtlEvent.cxx:1250
 AtlEvent.cxx:1251
 AtlEvent.cxx:1252
 AtlEvent.cxx:1253
 AtlEvent.cxx:1254
 AtlEvent.cxx:1255
 AtlEvent.cxx:1256
 AtlEvent.cxx:1257
 AtlEvent.cxx:1258
 AtlEvent.cxx:1259
 AtlEvent.cxx:1260
 AtlEvent.cxx:1261
 AtlEvent.cxx:1262
 AtlEvent.cxx:1263
 AtlEvent.cxx:1264
 AtlEvent.cxx:1265
 AtlEvent.cxx:1266
 AtlEvent.cxx:1267
 AtlEvent.cxx:1268
 AtlEvent.cxx:1269
 AtlEvent.cxx:1270
 AtlEvent.cxx:1271
 AtlEvent.cxx:1272
 AtlEvent.cxx:1273
 AtlEvent.cxx:1274
 AtlEvent.cxx:1275
 AtlEvent.cxx:1276
 AtlEvent.cxx:1277
 AtlEvent.cxx:1278
 AtlEvent.cxx:1279
 AtlEvent.cxx:1280
 AtlEvent.cxx:1281
 AtlEvent.cxx:1282
 AtlEvent.cxx:1283
 AtlEvent.cxx:1284
 AtlEvent.cxx:1285
 AtlEvent.cxx:1286
 AtlEvent.cxx:1287
 AtlEvent.cxx:1288
 AtlEvent.cxx:1289
 AtlEvent.cxx:1290
 AtlEvent.cxx:1291
 AtlEvent.cxx:1292
 AtlEvent.cxx:1293
 AtlEvent.cxx:1294
 AtlEvent.cxx:1295
 AtlEvent.cxx:1296
 AtlEvent.cxx:1297
 AtlEvent.cxx:1298
 AtlEvent.cxx:1299
 AtlEvent.cxx:1300
 AtlEvent.cxx:1301
 AtlEvent.cxx:1302
 AtlEvent.cxx:1303
 AtlEvent.cxx:1304
 AtlEvent.cxx:1305
 AtlEvent.cxx:1306
 AtlEvent.cxx:1307
 AtlEvent.cxx:1308
 AtlEvent.cxx:1309
 AtlEvent.cxx:1310
 AtlEvent.cxx:1311
 AtlEvent.cxx:1312
 AtlEvent.cxx:1313
 AtlEvent.cxx:1314
 AtlEvent.cxx:1315
 AtlEvent.cxx:1316
 AtlEvent.cxx:1317
 AtlEvent.cxx:1318
 AtlEvent.cxx:1319
 AtlEvent.cxx:1320
 AtlEvent.cxx:1321
 AtlEvent.cxx:1322
 AtlEvent.cxx:1323
 AtlEvent.cxx:1324
 AtlEvent.cxx:1325
 AtlEvent.cxx:1326
 AtlEvent.cxx:1327
 AtlEvent.cxx:1328
 AtlEvent.cxx:1329
 AtlEvent.cxx:1330
 AtlEvent.cxx:1331
 AtlEvent.cxx:1332
 AtlEvent.cxx:1333
 AtlEvent.cxx:1334
 AtlEvent.cxx:1335
 AtlEvent.cxx:1336
 AtlEvent.cxx:1337
 AtlEvent.cxx:1338
 AtlEvent.cxx:1339
 AtlEvent.cxx:1340
 AtlEvent.cxx:1341
 AtlEvent.cxx:1342
 AtlEvent.cxx:1343
 AtlEvent.cxx:1344
 AtlEvent.cxx:1345
 AtlEvent.cxx:1346
 AtlEvent.cxx:1347
 AtlEvent.cxx:1348
 AtlEvent.cxx:1349
 AtlEvent.cxx:1350
 AtlEvent.cxx:1351
 AtlEvent.cxx:1352
 AtlEvent.cxx:1353
 AtlEvent.cxx:1354
 AtlEvent.cxx:1355
 AtlEvent.cxx:1356
 AtlEvent.cxx:1357
 AtlEvent.cxx:1358
 AtlEvent.cxx:1359
 AtlEvent.cxx:1360
 AtlEvent.cxx:1361
 AtlEvent.cxx:1362
 AtlEvent.cxx:1363
 AtlEvent.cxx:1364
 AtlEvent.cxx:1365
 AtlEvent.cxx:1366
 AtlEvent.cxx:1367
 AtlEvent.cxx:1368
 AtlEvent.cxx:1369
 AtlEvent.cxx:1370
 AtlEvent.cxx:1371
 AtlEvent.cxx:1372
 AtlEvent.cxx:1373
 AtlEvent.cxx:1374
 AtlEvent.cxx:1375
 AtlEvent.cxx:1376
 AtlEvent.cxx:1377
 AtlEvent.cxx:1378
 AtlEvent.cxx:1379
 AtlEvent.cxx:1380
 AtlEvent.cxx:1381
 AtlEvent.cxx:1382
 AtlEvent.cxx:1383
 AtlEvent.cxx:1384
 AtlEvent.cxx:1385
 AtlEvent.cxx:1386
 AtlEvent.cxx:1387
 AtlEvent.cxx:1388
 AtlEvent.cxx:1389
 AtlEvent.cxx:1390
 AtlEvent.cxx:1391
 AtlEvent.cxx:1392
 AtlEvent.cxx:1393
 AtlEvent.cxx:1394
 AtlEvent.cxx:1395
 AtlEvent.cxx:1396
 AtlEvent.cxx:1397
 AtlEvent.cxx:1398
 AtlEvent.cxx:1399
 AtlEvent.cxx:1400
 AtlEvent.cxx:1401
 AtlEvent.cxx:1402
 AtlEvent.cxx:1403
 AtlEvent.cxx:1404
 AtlEvent.cxx:1405
 AtlEvent.cxx:1406
 AtlEvent.cxx:1407
 AtlEvent.cxx:1408
 AtlEvent.cxx:1409
 AtlEvent.cxx:1410
 AtlEvent.cxx:1411
 AtlEvent.cxx:1412
 AtlEvent.cxx:1413
 AtlEvent.cxx:1414
 AtlEvent.cxx:1415
 AtlEvent.cxx:1416
 AtlEvent.cxx:1417
 AtlEvent.cxx:1418
 AtlEvent.cxx:1419
 AtlEvent.cxx:1420
 AtlEvent.cxx:1421
 AtlEvent.cxx:1422
 AtlEvent.cxx:1423
 AtlEvent.cxx:1424
 AtlEvent.cxx:1425
 AtlEvent.cxx:1426
 AtlEvent.cxx:1427
 AtlEvent.cxx:1428
 AtlEvent.cxx:1429
 AtlEvent.cxx:1430
 AtlEvent.cxx:1431
 AtlEvent.cxx:1432
 AtlEvent.cxx:1433
 AtlEvent.cxx:1434
 AtlEvent.cxx:1435
 AtlEvent.cxx:1436
 AtlEvent.cxx:1437
 AtlEvent.cxx:1438
 AtlEvent.cxx:1439
 AtlEvent.cxx:1440
 AtlEvent.cxx:1441
 AtlEvent.cxx:1442
 AtlEvent.cxx:1443
 AtlEvent.cxx:1444
 AtlEvent.cxx:1445
 AtlEvent.cxx:1446
 AtlEvent.cxx:1447
 AtlEvent.cxx:1448
 AtlEvent.cxx:1449
 AtlEvent.cxx:1450
 AtlEvent.cxx:1451
 AtlEvent.cxx:1452
 AtlEvent.cxx:1453
 AtlEvent.cxx:1454
 AtlEvent.cxx:1455
 AtlEvent.cxx:1456
 AtlEvent.cxx:1457
 AtlEvent.cxx:1458
 AtlEvent.cxx:1459
 AtlEvent.cxx:1460
 AtlEvent.cxx:1461
 AtlEvent.cxx:1462
 AtlEvent.cxx:1463
 AtlEvent.cxx:1464
 AtlEvent.cxx:1465
 AtlEvent.cxx:1466
 AtlEvent.cxx:1467
 AtlEvent.cxx:1468
 AtlEvent.cxx:1469
 AtlEvent.cxx:1470
 AtlEvent.cxx:1471
 AtlEvent.cxx:1472
 AtlEvent.cxx:1473
 AtlEvent.cxx:1474
 AtlEvent.cxx:1475
 AtlEvent.cxx:1476
 AtlEvent.cxx:1477
 AtlEvent.cxx:1478
 AtlEvent.cxx:1479
 AtlEvent.cxx:1480
 AtlEvent.cxx:1481
 AtlEvent.cxx:1482
 AtlEvent.cxx:1483
 AtlEvent.cxx:1484
 AtlEvent.cxx:1485
 AtlEvent.cxx:1486
 AtlEvent.cxx:1487
 AtlEvent.cxx:1488
 AtlEvent.cxx:1489
 AtlEvent.cxx:1490
 AtlEvent.cxx:1491
 AtlEvent.cxx:1492
 AtlEvent.cxx:1493
 AtlEvent.cxx:1494
 AtlEvent.cxx:1495
 AtlEvent.cxx:1496
 AtlEvent.cxx:1497
 AtlEvent.cxx:1498
 AtlEvent.cxx:1499
 AtlEvent.cxx:1500
 AtlEvent.cxx:1501
 AtlEvent.cxx:1502
 AtlEvent.cxx:1503
 AtlEvent.cxx:1504
 AtlEvent.cxx:1505
 AtlEvent.cxx:1506
 AtlEvent.cxx:1507
 AtlEvent.cxx:1508
 AtlEvent.cxx:1509
 AtlEvent.cxx:1510
 AtlEvent.cxx:1511
 AtlEvent.cxx:1512
 AtlEvent.cxx:1513
 AtlEvent.cxx:1514
 AtlEvent.cxx:1515
 AtlEvent.cxx:1516
 AtlEvent.cxx:1517
 AtlEvent.cxx:1518
 AtlEvent.cxx:1519
 AtlEvent.cxx:1520
 AtlEvent.cxx:1521
 AtlEvent.cxx:1522
 AtlEvent.cxx:1523
 AtlEvent.cxx:1524
 AtlEvent.cxx:1525
 AtlEvent.cxx:1526
 AtlEvent.cxx:1527
 AtlEvent.cxx:1528
 AtlEvent.cxx:1529
 AtlEvent.cxx:1530
 AtlEvent.cxx:1531
 AtlEvent.cxx:1532
 AtlEvent.cxx:1533
 AtlEvent.cxx:1534
 AtlEvent.cxx:1535
 AtlEvent.cxx:1536
 AtlEvent.cxx:1537
 AtlEvent.cxx:1538
 AtlEvent.cxx:1539
 AtlEvent.cxx:1540
 AtlEvent.cxx:1541
 AtlEvent.cxx:1542
 AtlEvent.cxx:1543
 AtlEvent.cxx:1544
 AtlEvent.cxx:1545
 AtlEvent.cxx:1546
 AtlEvent.cxx:1547
 AtlEvent.cxx:1548
 AtlEvent.cxx:1549
 AtlEvent.cxx:1550
 AtlEvent.cxx:1551
 AtlEvent.cxx:1552
 AtlEvent.cxx:1553
 AtlEvent.cxx:1554
 AtlEvent.cxx:1555
 AtlEvent.cxx:1556
 AtlEvent.cxx:1557
 AtlEvent.cxx:1558
 AtlEvent.cxx:1559
 AtlEvent.cxx:1560
 AtlEvent.cxx:1561
 AtlEvent.cxx:1562
 AtlEvent.cxx:1563
 AtlEvent.cxx:1564
 AtlEvent.cxx:1565
 AtlEvent.cxx:1566
 AtlEvent.cxx:1567
 AtlEvent.cxx:1568
 AtlEvent.cxx:1569
 AtlEvent.cxx:1570
 AtlEvent.cxx:1571
 AtlEvent.cxx:1572
 AtlEvent.cxx:1573
 AtlEvent.cxx:1574
 AtlEvent.cxx:1575
 AtlEvent.cxx:1576
 AtlEvent.cxx:1577
 AtlEvent.cxx:1578
 AtlEvent.cxx:1579
 AtlEvent.cxx:1580
 AtlEvent.cxx:1581
 AtlEvent.cxx:1582
 AtlEvent.cxx:1583
 AtlEvent.cxx:1584
 AtlEvent.cxx:1585
 AtlEvent.cxx:1586
 AtlEvent.cxx:1587
 AtlEvent.cxx:1588
 AtlEvent.cxx:1589
 AtlEvent.cxx:1590
 AtlEvent.cxx:1591
 AtlEvent.cxx:1592
 AtlEvent.cxx:1593
 AtlEvent.cxx:1594
 AtlEvent.cxx:1595
 AtlEvent.cxx:1596
 AtlEvent.cxx:1597
 AtlEvent.cxx:1598
 AtlEvent.cxx:1599
 AtlEvent.cxx:1600
 AtlEvent.cxx:1601
 AtlEvent.cxx:1602
 AtlEvent.cxx:1603
 AtlEvent.cxx:1604
 AtlEvent.cxx:1605
 AtlEvent.cxx:1606
 AtlEvent.cxx:1607
 AtlEvent.cxx:1608
 AtlEvent.cxx:1609
 AtlEvent.cxx:1610
 AtlEvent.cxx:1611
 AtlEvent.cxx:1612
 AtlEvent.cxx:1613
 AtlEvent.cxx:1614
 AtlEvent.cxx:1615
 AtlEvent.cxx:1616
 AtlEvent.cxx:1617
 AtlEvent.cxx:1618
 AtlEvent.cxx:1619
 AtlEvent.cxx:1620
 AtlEvent.cxx:1621
 AtlEvent.cxx:1622
 AtlEvent.cxx:1623
 AtlEvent.cxx:1624
 AtlEvent.cxx:1625
 AtlEvent.cxx:1626
 AtlEvent.cxx:1627
 AtlEvent.cxx:1628
 AtlEvent.cxx:1629
 AtlEvent.cxx:1630
 AtlEvent.cxx:1631
 AtlEvent.cxx:1632
 AtlEvent.cxx:1633
 AtlEvent.cxx:1634
 AtlEvent.cxx:1635
 AtlEvent.cxx:1636
 AtlEvent.cxx:1637
 AtlEvent.cxx:1638
 AtlEvent.cxx:1639
 AtlEvent.cxx:1640
 AtlEvent.cxx:1641
 AtlEvent.cxx:1642
 AtlEvent.cxx:1643
 AtlEvent.cxx:1644
 AtlEvent.cxx:1645
 AtlEvent.cxx:1646
 AtlEvent.cxx:1647
 AtlEvent.cxx:1648
 AtlEvent.cxx:1649
 AtlEvent.cxx:1650
 AtlEvent.cxx:1651
 AtlEvent.cxx:1652
 AtlEvent.cxx:1653
 AtlEvent.cxx:1654
 AtlEvent.cxx:1655
 AtlEvent.cxx:1656
 AtlEvent.cxx:1657
 AtlEvent.cxx:1658
 AtlEvent.cxx:1659
 AtlEvent.cxx:1660
 AtlEvent.cxx:1661
 AtlEvent.cxx:1662
 AtlEvent.cxx:1663
 AtlEvent.cxx:1664
 AtlEvent.cxx:1665
 AtlEvent.cxx:1666
 AtlEvent.cxx:1667
 AtlEvent.cxx:1668
 AtlEvent.cxx:1669
 AtlEvent.cxx:1670
 AtlEvent.cxx:1671
 AtlEvent.cxx:1672
 AtlEvent.cxx:1673
 AtlEvent.cxx:1674
 AtlEvent.cxx:1675
 AtlEvent.cxx:1676
 AtlEvent.cxx:1677
 AtlEvent.cxx:1678
 AtlEvent.cxx:1679
 AtlEvent.cxx:1680
 AtlEvent.cxx:1681
 AtlEvent.cxx:1682
 AtlEvent.cxx:1683
 AtlEvent.cxx:1684
 AtlEvent.cxx:1685
 AtlEvent.cxx:1686
 AtlEvent.cxx:1687
 AtlEvent.cxx:1688
 AtlEvent.cxx:1689
 AtlEvent.cxx:1690
 AtlEvent.cxx:1691
 AtlEvent.cxx:1692
 AtlEvent.cxx:1693
 AtlEvent.cxx:1694
 AtlEvent.cxx:1695
 AtlEvent.cxx:1696
 AtlEvent.cxx:1697
 AtlEvent.cxx:1698
 AtlEvent.cxx:1699
 AtlEvent.cxx:1700
 AtlEvent.cxx:1701
 AtlEvent.cxx:1702
 AtlEvent.cxx:1703
 AtlEvent.cxx:1704
 AtlEvent.cxx:1705
 AtlEvent.cxx:1706
 AtlEvent.cxx:1707
 AtlEvent.cxx:1708
 AtlEvent.cxx:1709
 AtlEvent.cxx:1710
 AtlEvent.cxx:1711
 AtlEvent.cxx:1712
 AtlEvent.cxx:1713
 AtlEvent.cxx:1714
 AtlEvent.cxx:1715
 AtlEvent.cxx:1716
 AtlEvent.cxx:1717
 AtlEvent.cxx:1718
 AtlEvent.cxx:1719
 AtlEvent.cxx:1720
 AtlEvent.cxx:1721
 AtlEvent.cxx:1722
 AtlEvent.cxx:1723
 AtlEvent.cxx:1724
 AtlEvent.cxx:1725
 AtlEvent.cxx:1726
 AtlEvent.cxx:1727
 AtlEvent.cxx:1728
 AtlEvent.cxx:1729
 AtlEvent.cxx:1730
 AtlEvent.cxx:1731
 AtlEvent.cxx:1732
 AtlEvent.cxx:1733
 AtlEvent.cxx:1734
 AtlEvent.cxx:1735
 AtlEvent.cxx:1736
 AtlEvent.cxx:1737
 AtlEvent.cxx:1738
 AtlEvent.cxx:1739
 AtlEvent.cxx:1740
 AtlEvent.cxx:1741
 AtlEvent.cxx:1742
 AtlEvent.cxx:1743
 AtlEvent.cxx:1744
 AtlEvent.cxx:1745
 AtlEvent.cxx:1746
 AtlEvent.cxx:1747
 AtlEvent.cxx:1748
 AtlEvent.cxx:1749
 AtlEvent.cxx:1750
 AtlEvent.cxx:1751
 AtlEvent.cxx:1752
 AtlEvent.cxx:1753
 AtlEvent.cxx:1754
 AtlEvent.cxx:1755
 AtlEvent.cxx:1756
 AtlEvent.cxx:1757
 AtlEvent.cxx:1758
 AtlEvent.cxx:1759
 AtlEvent.cxx:1760
 AtlEvent.cxx:1761
 AtlEvent.cxx:1762
 AtlEvent.cxx:1763
 AtlEvent.cxx:1764
 AtlEvent.cxx:1765
 AtlEvent.cxx:1766
 AtlEvent.cxx:1767
 AtlEvent.cxx:1768
 AtlEvent.cxx:1769
 AtlEvent.cxx:1770
 AtlEvent.cxx:1771
 AtlEvent.cxx:1772
 AtlEvent.cxx:1773
 AtlEvent.cxx:1774
 AtlEvent.cxx:1775
 AtlEvent.cxx:1776
 AtlEvent.cxx:1777
 AtlEvent.cxx:1778
 AtlEvent.cxx:1779
 AtlEvent.cxx:1780
 AtlEvent.cxx:1781
 AtlEvent.cxx:1782
 AtlEvent.cxx:1783
 AtlEvent.cxx:1784
 AtlEvent.cxx:1785
 AtlEvent.cxx:1786
 AtlEvent.cxx:1787
 AtlEvent.cxx:1788
 AtlEvent.cxx:1789
 AtlEvent.cxx:1790
 AtlEvent.cxx:1791
 AtlEvent.cxx:1792
 AtlEvent.cxx:1793
 AtlEvent.cxx:1794
 AtlEvent.cxx:1795
 AtlEvent.cxx:1796
 AtlEvent.cxx:1797
 AtlEvent.cxx:1798
 AtlEvent.cxx:1799
 AtlEvent.cxx:1800
 AtlEvent.cxx:1801
 AtlEvent.cxx:1802
 AtlEvent.cxx:1803
 AtlEvent.cxx:1804
 AtlEvent.cxx:1805
 AtlEvent.cxx:1806
 AtlEvent.cxx:1807
 AtlEvent.cxx:1808
 AtlEvent.cxx:1809
 AtlEvent.cxx:1810
 AtlEvent.cxx:1811
 AtlEvent.cxx:1812
 AtlEvent.cxx:1813
 AtlEvent.cxx:1814
 AtlEvent.cxx:1815
 AtlEvent.cxx:1816
 AtlEvent.cxx:1817
 AtlEvent.cxx:1818
 AtlEvent.cxx:1819
 AtlEvent.cxx:1820
 AtlEvent.cxx:1821
 AtlEvent.cxx:1822
 AtlEvent.cxx:1823
 AtlEvent.cxx:1824
 AtlEvent.cxx:1825
 AtlEvent.cxx:1826
 AtlEvent.cxx:1827
 AtlEvent.cxx:1828
 AtlEvent.cxx:1829
 AtlEvent.cxx:1830
 AtlEvent.cxx:1831
 AtlEvent.cxx:1832
 AtlEvent.cxx:1833
 AtlEvent.cxx:1834
 AtlEvent.cxx:1835
 AtlEvent.cxx:1836
 AtlEvent.cxx:1837
 AtlEvent.cxx:1838
 AtlEvent.cxx:1839
 AtlEvent.cxx:1840
 AtlEvent.cxx:1841
 AtlEvent.cxx:1842
 AtlEvent.cxx:1843
 AtlEvent.cxx:1844
 AtlEvent.cxx:1845
 AtlEvent.cxx:1846
 AtlEvent.cxx:1847
 AtlEvent.cxx:1848
 AtlEvent.cxx:1849
 AtlEvent.cxx:1850
 AtlEvent.cxx:1851
 AtlEvent.cxx:1852
 AtlEvent.cxx:1853
 AtlEvent.cxx:1854
 AtlEvent.cxx:1855
 AtlEvent.cxx:1856
 AtlEvent.cxx:1857
 AtlEvent.cxx:1858
 AtlEvent.cxx:1859
 AtlEvent.cxx:1860
 AtlEvent.cxx:1861
 AtlEvent.cxx:1862
 AtlEvent.cxx:1863
 AtlEvent.cxx:1864
 AtlEvent.cxx:1865
 AtlEvent.cxx:1866
 AtlEvent.cxx:1867
 AtlEvent.cxx:1868
 AtlEvent.cxx:1869
 AtlEvent.cxx:1870
 AtlEvent.cxx:1871
 AtlEvent.cxx:1872
 AtlEvent.cxx:1873
 AtlEvent.cxx:1874
 AtlEvent.cxx:1875
 AtlEvent.cxx:1876
 AtlEvent.cxx:1877
 AtlEvent.cxx:1878
 AtlEvent.cxx:1879
 AtlEvent.cxx:1880
 AtlEvent.cxx:1881
 AtlEvent.cxx:1882
 AtlEvent.cxx:1883
 AtlEvent.cxx:1884
 AtlEvent.cxx:1885
 AtlEvent.cxx:1886
 AtlEvent.cxx:1887
 AtlEvent.cxx:1888
 AtlEvent.cxx:1889
 AtlEvent.cxx:1890
 AtlEvent.cxx:1891
 AtlEvent.cxx:1892
 AtlEvent.cxx:1893
 AtlEvent.cxx:1894
 AtlEvent.cxx:1895
 AtlEvent.cxx:1896
 AtlEvent.cxx:1897
 AtlEvent.cxx:1898
 AtlEvent.cxx:1899
 AtlEvent.cxx:1900
 AtlEvent.cxx:1901
 AtlEvent.cxx:1902
 AtlEvent.cxx:1903
 AtlEvent.cxx:1904
 AtlEvent.cxx:1905
 AtlEvent.cxx:1906
 AtlEvent.cxx:1907
 AtlEvent.cxx:1908
 AtlEvent.cxx:1909
 AtlEvent.cxx:1910
 AtlEvent.cxx:1911
 AtlEvent.cxx:1912
 AtlEvent.cxx:1913
 AtlEvent.cxx:1914
 AtlEvent.cxx:1915
 AtlEvent.cxx:1916
 AtlEvent.cxx:1917
 AtlEvent.cxx:1918
 AtlEvent.cxx:1919
 AtlEvent.cxx:1920
 AtlEvent.cxx:1921
 AtlEvent.cxx:1922
 AtlEvent.cxx:1923
 AtlEvent.cxx:1924
 AtlEvent.cxx:1925
 AtlEvent.cxx:1926
 AtlEvent.cxx:1927
 AtlEvent.cxx:1928
 AtlEvent.cxx:1929
 AtlEvent.cxx:1930
 AtlEvent.cxx:1931
 AtlEvent.cxx:1932
 AtlEvent.cxx:1933
 AtlEvent.cxx:1934
 AtlEvent.cxx:1935
 AtlEvent.cxx:1936
 AtlEvent.cxx:1937
 AtlEvent.cxx:1938
 AtlEvent.cxx:1939
 AtlEvent.cxx:1940
 AtlEvent.cxx:1941
 AtlEvent.cxx:1942
 AtlEvent.cxx:1943
 AtlEvent.cxx:1944
 AtlEvent.cxx:1945
 AtlEvent.cxx:1946
 AtlEvent.cxx:1947
 AtlEvent.cxx:1948
 AtlEvent.cxx:1949
 AtlEvent.cxx:1950
 AtlEvent.cxx:1951
 AtlEvent.cxx:1952
 AtlEvent.cxx:1953
 AtlEvent.cxx:1954
 AtlEvent.cxx:1955
 AtlEvent.cxx:1956
 AtlEvent.cxx:1957
 AtlEvent.cxx:1958
 AtlEvent.cxx:1959
 AtlEvent.cxx:1960
 AtlEvent.cxx:1961
 AtlEvent.cxx:1962
 AtlEvent.cxx:1963
 AtlEvent.cxx:1964
 AtlEvent.cxx:1965
 AtlEvent.cxx:1966
 AtlEvent.cxx:1967
 AtlEvent.cxx:1968
 AtlEvent.cxx:1969
 AtlEvent.cxx:1970
 AtlEvent.cxx:1971
 AtlEvent.cxx:1972
 AtlEvent.cxx:1973
 AtlEvent.cxx:1974
 AtlEvent.cxx:1975
 AtlEvent.cxx:1976
 AtlEvent.cxx:1977
 AtlEvent.cxx:1978
 AtlEvent.cxx:1979
 AtlEvent.cxx:1980
 AtlEvent.cxx:1981
 AtlEvent.cxx:1982
 AtlEvent.cxx:1983
 AtlEvent.cxx:1984
 AtlEvent.cxx:1985
 AtlEvent.cxx:1986
 AtlEvent.cxx:1987
 AtlEvent.cxx:1988
 AtlEvent.cxx:1989
 AtlEvent.cxx:1990
 AtlEvent.cxx:1991
 AtlEvent.cxx:1992
 AtlEvent.cxx:1993
 AtlEvent.cxx:1994
 AtlEvent.cxx:1995
 AtlEvent.cxx:1996
 AtlEvent.cxx:1997
 AtlEvent.cxx:1998
 AtlEvent.cxx:1999
 AtlEvent.cxx:2000
 AtlEvent.cxx:2001
 AtlEvent.cxx:2002
 AtlEvent.cxx:2003
 AtlEvent.cxx:2004
 AtlEvent.cxx:2005
 AtlEvent.cxx:2006
 AtlEvent.cxx:2007
 AtlEvent.cxx:2008
 AtlEvent.cxx:2009
 AtlEvent.cxx:2010
 AtlEvent.cxx:2011
 AtlEvent.cxx:2012
 AtlEvent.cxx:2013
 AtlEvent.cxx:2014
 AtlEvent.cxx:2015
 AtlEvent.cxx:2016
 AtlEvent.cxx:2017
 AtlEvent.cxx:2018
 AtlEvent.cxx:2019
 AtlEvent.cxx:2020
 AtlEvent.cxx:2021
 AtlEvent.cxx:2022
 AtlEvent.cxx:2023
 AtlEvent.cxx:2024
 AtlEvent.cxx:2025
 AtlEvent.cxx:2026
 AtlEvent.cxx:2027
 AtlEvent.cxx:2028
 AtlEvent.cxx:2029
 AtlEvent.cxx:2030
 AtlEvent.cxx:2031
 AtlEvent.cxx:2032
 AtlEvent.cxx:2033
 AtlEvent.cxx:2034
 AtlEvent.cxx:2035
 AtlEvent.cxx:2036
 AtlEvent.cxx:2037
 AtlEvent.cxx:2038
 AtlEvent.cxx:2039
 AtlEvent.cxx:2040
 AtlEvent.cxx:2041
 AtlEvent.cxx:2042
 AtlEvent.cxx:2043
 AtlEvent.cxx:2044
 AtlEvent.cxx:2045
 AtlEvent.cxx:2046
 AtlEvent.cxx:2047
 AtlEvent.cxx:2048
 AtlEvent.cxx:2049
 AtlEvent.cxx:2050
 AtlEvent.cxx:2051
 AtlEvent.cxx:2052
 AtlEvent.cxx:2053
 AtlEvent.cxx:2054
 AtlEvent.cxx:2055
 AtlEvent.cxx:2056
 AtlEvent.cxx:2057
 AtlEvent.cxx:2058
 AtlEvent.cxx:2059
 AtlEvent.cxx:2060
 AtlEvent.cxx:2061
 AtlEvent.cxx:2062
 AtlEvent.cxx:2063
 AtlEvent.cxx:2064
 AtlEvent.cxx:2065
 AtlEvent.cxx:2066
 AtlEvent.cxx:2067
 AtlEvent.cxx:2068
 AtlEvent.cxx:2069
 AtlEvent.cxx:2070
 AtlEvent.cxx:2071
 AtlEvent.cxx:2072
 AtlEvent.cxx:2073
 AtlEvent.cxx:2074
 AtlEvent.cxx:2075
 AtlEvent.cxx:2076
 AtlEvent.cxx:2077
 AtlEvent.cxx:2078
 AtlEvent.cxx:2079
 AtlEvent.cxx:2080
 AtlEvent.cxx:2081
 AtlEvent.cxx:2082
 AtlEvent.cxx:2083
 AtlEvent.cxx:2084
 AtlEvent.cxx:2085
 AtlEvent.cxx:2086
 AtlEvent.cxx:2087
 AtlEvent.cxx:2088
 AtlEvent.cxx:2089
 AtlEvent.cxx:2090
 AtlEvent.cxx:2091
 AtlEvent.cxx:2092
 AtlEvent.cxx:2093
 AtlEvent.cxx:2094
 AtlEvent.cxx:2095
 AtlEvent.cxx:2096
 AtlEvent.cxx:2097
 AtlEvent.cxx:2098
 AtlEvent.cxx:2099
 AtlEvent.cxx:2100
 AtlEvent.cxx:2101
 AtlEvent.cxx:2102
 AtlEvent.cxx:2103
 AtlEvent.cxx:2104
 AtlEvent.cxx:2105
 AtlEvent.cxx:2106
 AtlEvent.cxx:2107
 AtlEvent.cxx:2108
 AtlEvent.cxx:2109
 AtlEvent.cxx:2110
 AtlEvent.cxx:2111
 AtlEvent.cxx:2112
 AtlEvent.cxx:2113
 AtlEvent.cxx:2114
 AtlEvent.cxx:2115
 AtlEvent.cxx:2116
 AtlEvent.cxx:2117
 AtlEvent.cxx:2118
 AtlEvent.cxx:2119
 AtlEvent.cxx:2120
 AtlEvent.cxx:2121
 AtlEvent.cxx:2122
 AtlEvent.cxx:2123
 AtlEvent.cxx:2124
 AtlEvent.cxx:2125
 AtlEvent.cxx:2126
 AtlEvent.cxx:2127
 AtlEvent.cxx:2128
 AtlEvent.cxx:2129
 AtlEvent.cxx:2130
 AtlEvent.cxx:2131
 AtlEvent.cxx:2132
 AtlEvent.cxx:2133
 AtlEvent.cxx:2134
 AtlEvent.cxx:2135
 AtlEvent.cxx:2136
 AtlEvent.cxx:2137
 AtlEvent.cxx:2138
 AtlEvent.cxx:2139
 AtlEvent.cxx:2140
 AtlEvent.cxx:2141
 AtlEvent.cxx:2142
 AtlEvent.cxx:2143
 AtlEvent.cxx:2144
 AtlEvent.cxx:2145
 AtlEvent.cxx:2146
 AtlEvent.cxx:2147
 AtlEvent.cxx:2148
 AtlEvent.cxx:2149
 AtlEvent.cxx:2150
 AtlEvent.cxx:2151
 AtlEvent.cxx:2152
 AtlEvent.cxx:2153
 AtlEvent.cxx:2154
 AtlEvent.cxx:2155
 AtlEvent.cxx:2156
 AtlEvent.cxx:2157
 AtlEvent.cxx:2158
 AtlEvent.cxx:2159
 AtlEvent.cxx:2160
 AtlEvent.cxx:2161
 AtlEvent.cxx:2162
 AtlEvent.cxx:2163
 AtlEvent.cxx:2164
 AtlEvent.cxx:2165
 AtlEvent.cxx:2166
 AtlEvent.cxx:2167
 AtlEvent.cxx:2168
 AtlEvent.cxx:2169
 AtlEvent.cxx:2170
 AtlEvent.cxx:2171
 AtlEvent.cxx:2172
 AtlEvent.cxx:2173
 AtlEvent.cxx:2174
 AtlEvent.cxx:2175
 AtlEvent.cxx:2176
 AtlEvent.cxx:2177
 AtlEvent.cxx:2178
 AtlEvent.cxx:2179
 AtlEvent.cxx:2180
 AtlEvent.cxx:2181
 AtlEvent.cxx:2182
 AtlEvent.cxx:2183
 AtlEvent.cxx:2184
 AtlEvent.cxx:2185
 AtlEvent.cxx:2186
 AtlEvent.cxx:2187
 AtlEvent.cxx:2188
 AtlEvent.cxx:2189
 AtlEvent.cxx:2190
 AtlEvent.cxx:2191
 AtlEvent.cxx:2192
 AtlEvent.cxx:2193
 AtlEvent.cxx:2194
 AtlEvent.cxx:2195
 AtlEvent.cxx:2196
 AtlEvent.cxx:2197
 AtlEvent.cxx:2198
 AtlEvent.cxx:2199
 AtlEvent.cxx:2200
 AtlEvent.cxx:2201
 AtlEvent.cxx:2202
 AtlEvent.cxx:2203
 AtlEvent.cxx:2204
 AtlEvent.cxx:2205
 AtlEvent.cxx:2206
 AtlEvent.cxx:2207
 AtlEvent.cxx:2208
 AtlEvent.cxx:2209
 AtlEvent.cxx:2210
 AtlEvent.cxx:2211
 AtlEvent.cxx:2212
 AtlEvent.cxx:2213
 AtlEvent.cxx:2214
 AtlEvent.cxx:2215
 AtlEvent.cxx:2216
 AtlEvent.cxx:2217
 AtlEvent.cxx:2218
 AtlEvent.cxx:2219
 AtlEvent.cxx:2220
 AtlEvent.cxx:2221
 AtlEvent.cxx:2222
 AtlEvent.cxx:2223
 AtlEvent.cxx:2224
 AtlEvent.cxx:2225
 AtlEvent.cxx:2226
 AtlEvent.cxx:2227
 AtlEvent.cxx:2228
 AtlEvent.cxx:2229
 AtlEvent.cxx:2230
 AtlEvent.cxx:2231
 AtlEvent.cxx:2232
 AtlEvent.cxx:2233
 AtlEvent.cxx:2234
 AtlEvent.cxx:2235
 AtlEvent.cxx:2236
 AtlEvent.cxx:2237
 AtlEvent.cxx:2238
 AtlEvent.cxx:2239
 AtlEvent.cxx:2240
 AtlEvent.cxx:2241
 AtlEvent.cxx:2242
 AtlEvent.cxx:2243
 AtlEvent.cxx:2244
 AtlEvent.cxx:2245
 AtlEvent.cxx:2246
 AtlEvent.cxx:2247
 AtlEvent.cxx:2248
 AtlEvent.cxx:2249
 AtlEvent.cxx:2250
 AtlEvent.cxx:2251
 AtlEvent.cxx:2252
 AtlEvent.cxx:2253
 AtlEvent.cxx:2254
 AtlEvent.cxx:2255
 AtlEvent.cxx:2256
 AtlEvent.cxx:2257
 AtlEvent.cxx:2258
 AtlEvent.cxx:2259
 AtlEvent.cxx:2260
 AtlEvent.cxx:2261
 AtlEvent.cxx:2262
 AtlEvent.cxx:2263
 AtlEvent.cxx:2264
 AtlEvent.cxx:2265
 AtlEvent.cxx:2266
 AtlEvent.cxx:2267
 AtlEvent.cxx:2268
 AtlEvent.cxx:2269
 AtlEvent.cxx:2270
 AtlEvent.cxx:2271
 AtlEvent.cxx:2272
 AtlEvent.cxx:2273
 AtlEvent.cxx:2274
 AtlEvent.cxx:2275
 AtlEvent.cxx:2276
 AtlEvent.cxx:2277
 AtlEvent.cxx:2278
 AtlEvent.cxx:2279
 AtlEvent.cxx:2280
 AtlEvent.cxx:2281
 AtlEvent.cxx:2282
 AtlEvent.cxx:2283
 AtlEvent.cxx:2284
 AtlEvent.cxx:2285
 AtlEvent.cxx:2286
 AtlEvent.cxx:2287
 AtlEvent.cxx:2288
 AtlEvent.cxx:2289
 AtlEvent.cxx:2290
 AtlEvent.cxx:2291
 AtlEvent.cxx:2292
 AtlEvent.cxx:2293
 AtlEvent.cxx:2294
 AtlEvent.cxx:2295
 AtlEvent.cxx:2296
 AtlEvent.cxx:2297
 AtlEvent.cxx:2298
 AtlEvent.cxx:2299
 AtlEvent.cxx:2300
 AtlEvent.cxx:2301
 AtlEvent.cxx:2302
 AtlEvent.cxx:2303
 AtlEvent.cxx:2304
 AtlEvent.cxx:2305
 AtlEvent.cxx:2306
 AtlEvent.cxx:2307
 AtlEvent.cxx:2308
 AtlEvent.cxx:2309
 AtlEvent.cxx:2310
 AtlEvent.cxx:2311
 AtlEvent.cxx:2312
 AtlEvent.cxx:2313
 AtlEvent.cxx:2314
 AtlEvent.cxx:2315
 AtlEvent.cxx:2316
 AtlEvent.cxx:2317
 AtlEvent.cxx:2318
 AtlEvent.cxx:2319
 AtlEvent.cxx:2320
 AtlEvent.cxx:2321
 AtlEvent.cxx:2322
 AtlEvent.cxx:2323
 AtlEvent.cxx:2324
 AtlEvent.cxx:2325
 AtlEvent.cxx:2326
 AtlEvent.cxx:2327
 AtlEvent.cxx:2328
 AtlEvent.cxx:2329
 AtlEvent.cxx:2330
 AtlEvent.cxx:2331
 AtlEvent.cxx:2332
 AtlEvent.cxx:2333
 AtlEvent.cxx:2334
 AtlEvent.cxx:2335
 AtlEvent.cxx:2336
 AtlEvent.cxx:2337
 AtlEvent.cxx:2338
 AtlEvent.cxx:2339
 AtlEvent.cxx:2340
 AtlEvent.cxx:2341
 AtlEvent.cxx:2342
 AtlEvent.cxx:2343
 AtlEvent.cxx:2344
 AtlEvent.cxx:2345
 AtlEvent.cxx:2346
 AtlEvent.cxx:2347
 AtlEvent.cxx:2348
 AtlEvent.cxx:2349
 AtlEvent.cxx:2350
 AtlEvent.cxx:2351
 AtlEvent.cxx:2352
 AtlEvent.cxx:2353
 AtlEvent.cxx:2354
 AtlEvent.cxx:2355
 AtlEvent.cxx:2356
 AtlEvent.cxx:2357
 AtlEvent.cxx:2358
 AtlEvent.cxx:2359
 AtlEvent.cxx:2360
 AtlEvent.cxx:2361
 AtlEvent.cxx:2362
 AtlEvent.cxx:2363
 AtlEvent.cxx:2364
 AtlEvent.cxx:2365
 AtlEvent.cxx:2366
 AtlEvent.cxx:2367
 AtlEvent.cxx:2368
 AtlEvent.cxx:2369
 AtlEvent.cxx:2370
 AtlEvent.cxx:2371
 AtlEvent.cxx:2372
 AtlEvent.cxx:2373
 AtlEvent.cxx:2374
 AtlEvent.cxx:2375
 AtlEvent.cxx:2376
 AtlEvent.cxx:2377
 AtlEvent.cxx:2378
 AtlEvent.cxx:2379
 AtlEvent.cxx:2380
 AtlEvent.cxx:2381
 AtlEvent.cxx:2382
 AtlEvent.cxx:2383
 AtlEvent.cxx:2384
 AtlEvent.cxx:2385
 AtlEvent.cxx:2386
 AtlEvent.cxx:2387
 AtlEvent.cxx:2388
 AtlEvent.cxx:2389
 AtlEvent.cxx:2390
 AtlEvent.cxx:2391
 AtlEvent.cxx:2392
 AtlEvent.cxx:2393
 AtlEvent.cxx:2394
 AtlEvent.cxx:2395
 AtlEvent.cxx:2396
 AtlEvent.cxx:2397
 AtlEvent.cxx:2398
 AtlEvent.cxx:2399
 AtlEvent.cxx:2400
 AtlEvent.cxx:2401
 AtlEvent.cxx:2402
 AtlEvent.cxx:2403
 AtlEvent.cxx:2404
 AtlEvent.cxx:2405
 AtlEvent.cxx:2406
 AtlEvent.cxx:2407
 AtlEvent.cxx:2408
 AtlEvent.cxx:2409
 AtlEvent.cxx:2410
 AtlEvent.cxx:2411
 AtlEvent.cxx:2412
 AtlEvent.cxx:2413
 AtlEvent.cxx:2414
 AtlEvent.cxx:2415
 AtlEvent.cxx:2416
 AtlEvent.cxx:2417
 AtlEvent.cxx:2418
 AtlEvent.cxx:2419
 AtlEvent.cxx:2420
 AtlEvent.cxx:2421
 AtlEvent.cxx:2422
 AtlEvent.cxx:2423
 AtlEvent.cxx:2424
 AtlEvent.cxx:2425
 AtlEvent.cxx:2426
 AtlEvent.cxx:2427
 AtlEvent.cxx:2428
 AtlEvent.cxx:2429
 AtlEvent.cxx:2430
 AtlEvent.cxx:2431
 AtlEvent.cxx:2432
 AtlEvent.cxx:2433
 AtlEvent.cxx:2434
 AtlEvent.cxx:2435
 AtlEvent.cxx:2436
 AtlEvent.cxx:2437
 AtlEvent.cxx:2438
 AtlEvent.cxx:2439
 AtlEvent.cxx:2440
 AtlEvent.cxx:2441
 AtlEvent.cxx:2442
 AtlEvent.cxx:2443
 AtlEvent.cxx:2444
 AtlEvent.cxx:2445
 AtlEvent.cxx:2446
 AtlEvent.cxx:2447
 AtlEvent.cxx:2448
 AtlEvent.cxx:2449
 AtlEvent.cxx:2450
 AtlEvent.cxx:2451
 AtlEvent.cxx:2452
 AtlEvent.cxx:2453
 AtlEvent.cxx:2454
 AtlEvent.cxx:2455
 AtlEvent.cxx:2456
 AtlEvent.cxx:2457
 AtlEvent.cxx:2458
 AtlEvent.cxx:2459
 AtlEvent.cxx:2460
 AtlEvent.cxx:2461
 AtlEvent.cxx:2462
 AtlEvent.cxx:2463
 AtlEvent.cxx:2464
 AtlEvent.cxx:2465
 AtlEvent.cxx:2466
 AtlEvent.cxx:2467
 AtlEvent.cxx:2468
 AtlEvent.cxx:2469
 AtlEvent.cxx:2470
 AtlEvent.cxx:2471
 AtlEvent.cxx:2472
 AtlEvent.cxx:2473
 AtlEvent.cxx:2474
 AtlEvent.cxx:2475
 AtlEvent.cxx:2476
 AtlEvent.cxx:2477
 AtlEvent.cxx:2478
 AtlEvent.cxx:2479
 AtlEvent.cxx:2480
 AtlEvent.cxx:2481
 AtlEvent.cxx:2482
 AtlEvent.cxx:2483
 AtlEvent.cxx:2484
 AtlEvent.cxx:2485
 AtlEvent.cxx:2486
 AtlEvent.cxx:2487
 AtlEvent.cxx:2488
 AtlEvent.cxx:2489
 AtlEvent.cxx:2490
 AtlEvent.cxx:2491
 AtlEvent.cxx:2492
 AtlEvent.cxx:2493
 AtlEvent.cxx:2494
 AtlEvent.cxx:2495
 AtlEvent.cxx:2496
 AtlEvent.cxx:2497
 AtlEvent.cxx:2498
 AtlEvent.cxx:2499
 AtlEvent.cxx:2500
 AtlEvent.cxx:2501
 AtlEvent.cxx:2502
 AtlEvent.cxx:2503
 AtlEvent.cxx:2504
 AtlEvent.cxx:2505
 AtlEvent.cxx:2506
 AtlEvent.cxx:2507
 AtlEvent.cxx:2508
 AtlEvent.cxx:2509
 AtlEvent.cxx:2510
 AtlEvent.cxx:2511
 AtlEvent.cxx:2512
 AtlEvent.cxx:2513
 AtlEvent.cxx:2514
 AtlEvent.cxx:2515
 AtlEvent.cxx:2516
 AtlEvent.cxx:2517
 AtlEvent.cxx:2518
 AtlEvent.cxx:2519
 AtlEvent.cxx:2520
 AtlEvent.cxx:2521
 AtlEvent.cxx:2522
 AtlEvent.cxx:2523
 AtlEvent.cxx:2524
 AtlEvent.cxx:2525
 AtlEvent.cxx:2526
 AtlEvent.cxx:2527
 AtlEvent.cxx:2528
 AtlEvent.cxx:2529
 AtlEvent.cxx:2530
 AtlEvent.cxx:2531
 AtlEvent.cxx:2532
 AtlEvent.cxx:2533
 AtlEvent.cxx:2534
 AtlEvent.cxx:2535
 AtlEvent.cxx:2536
 AtlEvent.cxx:2537
 AtlEvent.cxx:2538
 AtlEvent.cxx:2539
 AtlEvent.cxx:2540
 AtlEvent.cxx:2541
 AtlEvent.cxx:2542
 AtlEvent.cxx:2543
 AtlEvent.cxx:2544
 AtlEvent.cxx:2545
 AtlEvent.cxx:2546
 AtlEvent.cxx:2547
 AtlEvent.cxx:2548
 AtlEvent.cxx:2549
 AtlEvent.cxx:2550
 AtlEvent.cxx:2551
 AtlEvent.cxx:2552
 AtlEvent.cxx:2553
 AtlEvent.cxx:2554
 AtlEvent.cxx:2555
 AtlEvent.cxx:2556
 AtlEvent.cxx:2557
 AtlEvent.cxx:2558
 AtlEvent.cxx:2559
 AtlEvent.cxx:2560
 AtlEvent.cxx:2561
 AtlEvent.cxx:2562
 AtlEvent.cxx:2563
 AtlEvent.cxx:2564
 AtlEvent.cxx:2565
 AtlEvent.cxx:2566
 AtlEvent.cxx:2567
 AtlEvent.cxx:2568
 AtlEvent.cxx:2569
 AtlEvent.cxx:2570
 AtlEvent.cxx:2571
 AtlEvent.cxx:2572
 AtlEvent.cxx:2573
 AtlEvent.cxx:2574
 AtlEvent.cxx:2575
 AtlEvent.cxx:2576
 AtlEvent.cxx:2577
 AtlEvent.cxx:2578
 AtlEvent.cxx:2579
 AtlEvent.cxx:2580
 AtlEvent.cxx:2581
 AtlEvent.cxx:2582
 AtlEvent.cxx:2583
 AtlEvent.cxx:2584
 AtlEvent.cxx:2585
 AtlEvent.cxx:2586
 AtlEvent.cxx:2587
 AtlEvent.cxx:2588
 AtlEvent.cxx:2589
 AtlEvent.cxx:2590
 AtlEvent.cxx:2591
 AtlEvent.cxx:2592
 AtlEvent.cxx:2593
 AtlEvent.cxx:2594
 AtlEvent.cxx:2595
 AtlEvent.cxx:2596
 AtlEvent.cxx:2597
 AtlEvent.cxx:2598
 AtlEvent.cxx:2599
 AtlEvent.cxx:2600
 AtlEvent.cxx:2601
 AtlEvent.cxx:2602
 AtlEvent.cxx:2603
 AtlEvent.cxx:2604
 AtlEvent.cxx:2605
 AtlEvent.cxx:2606
 AtlEvent.cxx:2607
 AtlEvent.cxx:2608
 AtlEvent.cxx:2609
 AtlEvent.cxx:2610
 AtlEvent.cxx:2611
 AtlEvent.cxx:2612
 AtlEvent.cxx:2613
 AtlEvent.cxx:2614
 AtlEvent.cxx:2615
 AtlEvent.cxx:2616
 AtlEvent.cxx:2617
 AtlEvent.cxx:2618
 AtlEvent.cxx:2619
 AtlEvent.cxx:2620
 AtlEvent.cxx:2621
 AtlEvent.cxx:2622
 AtlEvent.cxx:2623
 AtlEvent.cxx:2624
 AtlEvent.cxx:2625
 AtlEvent.cxx:2626
 AtlEvent.cxx:2627
 AtlEvent.cxx:2628
 AtlEvent.cxx:2629
 AtlEvent.cxx:2630
 AtlEvent.cxx:2631
 AtlEvent.cxx:2632
 AtlEvent.cxx:2633
 AtlEvent.cxx:2634
 AtlEvent.cxx:2635
 AtlEvent.cxx:2636
 AtlEvent.cxx:2637
 AtlEvent.cxx:2638
 AtlEvent.cxx:2639
 AtlEvent.cxx:2640
 AtlEvent.cxx:2641
 AtlEvent.cxx:2642
 AtlEvent.cxx:2643
 AtlEvent.cxx:2644
 AtlEvent.cxx:2645
 AtlEvent.cxx:2646
 AtlEvent.cxx:2647
 AtlEvent.cxx:2648
 AtlEvent.cxx:2649
 AtlEvent.cxx:2650
 AtlEvent.cxx:2651
 AtlEvent.cxx:2652
 AtlEvent.cxx:2653
 AtlEvent.cxx:2654
 AtlEvent.cxx:2655
 AtlEvent.cxx:2656
 AtlEvent.cxx:2657
 AtlEvent.cxx:2658
 AtlEvent.cxx:2659
 AtlEvent.cxx:2660
 AtlEvent.cxx:2661
 AtlEvent.cxx:2662
 AtlEvent.cxx:2663
 AtlEvent.cxx:2664
 AtlEvent.cxx:2665
 AtlEvent.cxx:2666
 AtlEvent.cxx:2667
 AtlEvent.cxx:2668
 AtlEvent.cxx:2669
 AtlEvent.cxx:2670
 AtlEvent.cxx:2671
 AtlEvent.cxx:2672
 AtlEvent.cxx:2673
 AtlEvent.cxx:2674
 AtlEvent.cxx:2675
 AtlEvent.cxx:2676
 AtlEvent.cxx:2677
 AtlEvent.cxx:2678
 AtlEvent.cxx:2679
 AtlEvent.cxx:2680
 AtlEvent.cxx:2681
 AtlEvent.cxx:2682
 AtlEvent.cxx:2683
 AtlEvent.cxx:2684
 AtlEvent.cxx:2685
 AtlEvent.cxx:2686
 AtlEvent.cxx:2687
 AtlEvent.cxx:2688
 AtlEvent.cxx:2689
 AtlEvent.cxx:2690
 AtlEvent.cxx:2691
 AtlEvent.cxx:2692
 AtlEvent.cxx:2693
 AtlEvent.cxx:2694
 AtlEvent.cxx:2695
 AtlEvent.cxx:2696
 AtlEvent.cxx:2697
 AtlEvent.cxx:2698
 AtlEvent.cxx:2699
 AtlEvent.cxx:2700
 AtlEvent.cxx:2701
 AtlEvent.cxx:2702
 AtlEvent.cxx:2703
 AtlEvent.cxx:2704
 AtlEvent.cxx:2705
 AtlEvent.cxx:2706
 AtlEvent.cxx:2707
 AtlEvent.cxx:2708
 AtlEvent.cxx:2709
 AtlEvent.cxx:2710
 AtlEvent.cxx:2711
 AtlEvent.cxx:2712
 AtlEvent.cxx:2713
 AtlEvent.cxx:2714
 AtlEvent.cxx:2715
 AtlEvent.cxx:2716
 AtlEvent.cxx:2717
 AtlEvent.cxx:2718
 AtlEvent.cxx:2719
 AtlEvent.cxx:2720
 AtlEvent.cxx:2721
 AtlEvent.cxx:2722
 AtlEvent.cxx:2723
 AtlEvent.cxx:2724
 AtlEvent.cxx:2725
 AtlEvent.cxx:2726
 AtlEvent.cxx:2727
 AtlEvent.cxx:2728
 AtlEvent.cxx:2729
 AtlEvent.cxx:2730
 AtlEvent.cxx:2731
 AtlEvent.cxx:2732
 AtlEvent.cxx:2733
 AtlEvent.cxx:2734
 AtlEvent.cxx:2735
 AtlEvent.cxx:2736
 AtlEvent.cxx:2737
 AtlEvent.cxx:2738
 AtlEvent.cxx:2739
 AtlEvent.cxx:2740
 AtlEvent.cxx:2741
 AtlEvent.cxx:2742
 AtlEvent.cxx:2743
 AtlEvent.cxx:2744
 AtlEvent.cxx:2745
 AtlEvent.cxx:2746
 AtlEvent.cxx:2747
 AtlEvent.cxx:2748
 AtlEvent.cxx:2749
 AtlEvent.cxx:2750
 AtlEvent.cxx:2751
 AtlEvent.cxx:2752
 AtlEvent.cxx:2753
 AtlEvent.cxx:2754
 AtlEvent.cxx:2755
 AtlEvent.cxx:2756
 AtlEvent.cxx:2757
 AtlEvent.cxx:2758
 AtlEvent.cxx:2759
 AtlEvent.cxx:2760
 AtlEvent.cxx:2761
 AtlEvent.cxx:2762
 AtlEvent.cxx:2763
 AtlEvent.cxx:2764
 AtlEvent.cxx:2765
 AtlEvent.cxx:2766
 AtlEvent.cxx:2767
 AtlEvent.cxx:2768
 AtlEvent.cxx:2769
 AtlEvent.cxx:2770
 AtlEvent.cxx:2771
 AtlEvent.cxx:2772
 AtlEvent.cxx:2773
 AtlEvent.cxx:2774
 AtlEvent.cxx:2775
 AtlEvent.cxx:2776
 AtlEvent.cxx:2777
 AtlEvent.cxx:2778
 AtlEvent.cxx:2779
 AtlEvent.cxx:2780
 AtlEvent.cxx:2781
 AtlEvent.cxx:2782
 AtlEvent.cxx:2783
 AtlEvent.cxx:2784
 AtlEvent.cxx:2785
 AtlEvent.cxx:2786
 AtlEvent.cxx:2787
 AtlEvent.cxx:2788
 AtlEvent.cxx:2789
 AtlEvent.cxx:2790
 AtlEvent.cxx:2791
 AtlEvent.cxx:2792
 AtlEvent.cxx:2793
 AtlEvent.cxx:2794
 AtlEvent.cxx:2795
 AtlEvent.cxx:2796
 AtlEvent.cxx:2797
 AtlEvent.cxx:2798
 AtlEvent.cxx:2799
 AtlEvent.cxx:2800
 AtlEvent.cxx:2801
 AtlEvent.cxx:2802
 AtlEvent.cxx:2803
 AtlEvent.cxx:2804
 AtlEvent.cxx:2805
 AtlEvent.cxx:2806
 AtlEvent.cxx:2807
 AtlEvent.cxx:2808
 AtlEvent.cxx:2809
 AtlEvent.cxx:2810
 AtlEvent.cxx:2811
 AtlEvent.cxx:2812
 AtlEvent.cxx:2813
 AtlEvent.cxx:2814
 AtlEvent.cxx:2815
 AtlEvent.cxx:2816
 AtlEvent.cxx:2817
 AtlEvent.cxx:2818
 AtlEvent.cxx:2819
 AtlEvent.cxx:2820
 AtlEvent.cxx:2821
 AtlEvent.cxx:2822
 AtlEvent.cxx:2823
 AtlEvent.cxx:2824
 AtlEvent.cxx:2825
 AtlEvent.cxx:2826
 AtlEvent.cxx:2827
 AtlEvent.cxx:2828
 AtlEvent.cxx:2829
 AtlEvent.cxx:2830
 AtlEvent.cxx:2831
 AtlEvent.cxx:2832
 AtlEvent.cxx:2833
 AtlEvent.cxx:2834
 AtlEvent.cxx:2835
 AtlEvent.cxx:2836
 AtlEvent.cxx:2837
 AtlEvent.cxx:2838
 AtlEvent.cxx:2839
 AtlEvent.cxx:2840
 AtlEvent.cxx:2841
 AtlEvent.cxx:2842
 AtlEvent.cxx:2843
 AtlEvent.cxx:2844
 AtlEvent.cxx:2845
 AtlEvent.cxx:2846
 AtlEvent.cxx:2847
 AtlEvent.cxx:2848
 AtlEvent.cxx:2849
 AtlEvent.cxx:2850
 AtlEvent.cxx:2851
 AtlEvent.cxx:2852
 AtlEvent.cxx:2853
 AtlEvent.cxx:2854
 AtlEvent.cxx:2855
 AtlEvent.cxx:2856
 AtlEvent.cxx:2857
 AtlEvent.cxx:2858
 AtlEvent.cxx:2859
 AtlEvent.cxx:2860
 AtlEvent.cxx:2861
 AtlEvent.cxx:2862
 AtlEvent.cxx:2863
 AtlEvent.cxx:2864
 AtlEvent.cxx:2865
 AtlEvent.cxx:2866
 AtlEvent.cxx:2867
 AtlEvent.cxx:2868
 AtlEvent.cxx:2869
 AtlEvent.cxx:2870
 AtlEvent.cxx:2871
 AtlEvent.cxx:2872
 AtlEvent.cxx:2873
 AtlEvent.cxx:2874
 AtlEvent.cxx:2875
 AtlEvent.cxx:2876
 AtlEvent.cxx:2877
 AtlEvent.cxx:2878
 AtlEvent.cxx:2879
 AtlEvent.cxx:2880
 AtlEvent.cxx:2881
 AtlEvent.cxx:2882
 AtlEvent.cxx:2883
 AtlEvent.cxx:2884
 AtlEvent.cxx:2885
 AtlEvent.cxx:2886
 AtlEvent.cxx:2887
 AtlEvent.cxx:2888
 AtlEvent.cxx:2889
 AtlEvent.cxx:2890
 AtlEvent.cxx:2891
 AtlEvent.cxx:2892
 AtlEvent.cxx:2893
 AtlEvent.cxx:2894
 AtlEvent.cxx:2895
 AtlEvent.cxx:2896
 AtlEvent.cxx:2897
 AtlEvent.cxx:2898
 AtlEvent.cxx:2899
 AtlEvent.cxx:2900
 AtlEvent.cxx:2901
 AtlEvent.cxx:2902
 AtlEvent.cxx:2903
 AtlEvent.cxx:2904
 AtlEvent.cxx:2905
 AtlEvent.cxx:2906
 AtlEvent.cxx:2907
 AtlEvent.cxx:2908
 AtlEvent.cxx:2909
 AtlEvent.cxx:2910
 AtlEvent.cxx:2911
 AtlEvent.cxx:2912
 AtlEvent.cxx:2913
 AtlEvent.cxx:2914
 AtlEvent.cxx:2915
 AtlEvent.cxx:2916
 AtlEvent.cxx:2917
 AtlEvent.cxx:2918
 AtlEvent.cxx:2919
 AtlEvent.cxx:2920
 AtlEvent.cxx:2921
 AtlEvent.cxx:2922
 AtlEvent.cxx:2923
 AtlEvent.cxx:2924
 AtlEvent.cxx:2925
 AtlEvent.cxx:2926
 AtlEvent.cxx:2927
 AtlEvent.cxx:2928
 AtlEvent.cxx:2929
 AtlEvent.cxx:2930
 AtlEvent.cxx:2931
 AtlEvent.cxx:2932
 AtlEvent.cxx:2933
 AtlEvent.cxx:2934
 AtlEvent.cxx:2935
 AtlEvent.cxx:2936
 AtlEvent.cxx:2937
 AtlEvent.cxx:2938
 AtlEvent.cxx:2939
 AtlEvent.cxx:2940
 AtlEvent.cxx:2941
 AtlEvent.cxx:2942
 AtlEvent.cxx:2943
 AtlEvent.cxx:2944
 AtlEvent.cxx:2945
 AtlEvent.cxx:2946
 AtlEvent.cxx:2947
 AtlEvent.cxx:2948
 AtlEvent.cxx:2949
 AtlEvent.cxx:2950
 AtlEvent.cxx:2951
 AtlEvent.cxx:2952
 AtlEvent.cxx:2953
 AtlEvent.cxx:2954
 AtlEvent.cxx:2955
 AtlEvent.cxx:2956
 AtlEvent.cxx:2957
 AtlEvent.cxx:2958
 AtlEvent.cxx:2959
 AtlEvent.cxx:2960
 AtlEvent.cxx:2961
 AtlEvent.cxx:2962
 AtlEvent.cxx:2963
 AtlEvent.cxx:2964
 AtlEvent.cxx:2965
 AtlEvent.cxx:2966
 AtlEvent.cxx:2967
 AtlEvent.cxx:2968
 AtlEvent.cxx:2969
 AtlEvent.cxx:2970
 AtlEvent.cxx:2971
 AtlEvent.cxx:2972
 AtlEvent.cxx:2973
 AtlEvent.cxx:2974
 AtlEvent.cxx:2975
 AtlEvent.cxx:2976
 AtlEvent.cxx:2977
 AtlEvent.cxx:2978
 AtlEvent.cxx:2979
 AtlEvent.cxx:2980
 AtlEvent.cxx:2981
 AtlEvent.cxx:2982
 AtlEvent.cxx:2983
 AtlEvent.cxx:2984
 AtlEvent.cxx:2985
 AtlEvent.cxx:2986
 AtlEvent.cxx:2987
 AtlEvent.cxx:2988
 AtlEvent.cxx:2989
 AtlEvent.cxx:2990
 AtlEvent.cxx:2991
 AtlEvent.cxx:2992
 AtlEvent.cxx:2993
 AtlEvent.cxx:2994
 AtlEvent.cxx:2995
 AtlEvent.cxx:2996
 AtlEvent.cxx:2997
 AtlEvent.cxx:2998
 AtlEvent.cxx:2999
 AtlEvent.cxx:3000
 AtlEvent.cxx:3001
 AtlEvent.cxx:3002
 AtlEvent.cxx:3003
 AtlEvent.cxx:3004
 AtlEvent.cxx:3005
 AtlEvent.cxx:3006
 AtlEvent.cxx:3007
 AtlEvent.cxx:3008
 AtlEvent.cxx:3009
 AtlEvent.cxx:3010
 AtlEvent.cxx:3011
 AtlEvent.cxx:3012
 AtlEvent.cxx:3013
 AtlEvent.cxx:3014
 AtlEvent.cxx:3015
 AtlEvent.cxx:3016
 AtlEvent.cxx:3017
 AtlEvent.cxx:3018
 AtlEvent.cxx:3019
 AtlEvent.cxx:3020
 AtlEvent.cxx:3021
 AtlEvent.cxx:3022
 AtlEvent.cxx:3023
 AtlEvent.cxx:3024
 AtlEvent.cxx:3025
 AtlEvent.cxx:3026
 AtlEvent.cxx:3027
 AtlEvent.cxx:3028
 AtlEvent.cxx:3029
 AtlEvent.cxx:3030
 AtlEvent.cxx:3031
 AtlEvent.cxx:3032
 AtlEvent.cxx:3033
 AtlEvent.cxx:3034
 AtlEvent.cxx:3035
 AtlEvent.cxx:3036
 AtlEvent.cxx:3037
 AtlEvent.cxx:3038
 AtlEvent.cxx:3039
 AtlEvent.cxx:3040
 AtlEvent.cxx:3041
 AtlEvent.cxx:3042
 AtlEvent.cxx:3043
 AtlEvent.cxx:3044
 AtlEvent.cxx:3045
 AtlEvent.cxx:3046
 AtlEvent.cxx:3047
 AtlEvent.cxx:3048
 AtlEvent.cxx:3049
 AtlEvent.cxx:3050
 AtlEvent.cxx:3051
 AtlEvent.cxx:3052
 AtlEvent.cxx:3053
 AtlEvent.cxx:3054
 AtlEvent.cxx:3055
 AtlEvent.cxx:3056
 AtlEvent.cxx:3057
 AtlEvent.cxx:3058
 AtlEvent.cxx:3059
 AtlEvent.cxx:3060
 AtlEvent.cxx:3061
 AtlEvent.cxx:3062
 AtlEvent.cxx:3063
 AtlEvent.cxx:3064
 AtlEvent.cxx:3065
 AtlEvent.cxx:3066
 AtlEvent.cxx:3067
 AtlEvent.cxx:3068
 AtlEvent.cxx:3069
 AtlEvent.cxx:3070
 AtlEvent.cxx:3071
 AtlEvent.cxx:3072
 AtlEvent.cxx:3073
 AtlEvent.cxx:3074
 AtlEvent.cxx:3075
 AtlEvent.cxx:3076
 AtlEvent.cxx:3077
 AtlEvent.cxx:3078
 AtlEvent.cxx:3079
 AtlEvent.cxx:3080
 AtlEvent.cxx:3081
 AtlEvent.cxx:3082
 AtlEvent.cxx:3083
 AtlEvent.cxx:3084
 AtlEvent.cxx:3085
 AtlEvent.cxx:3086
 AtlEvent.cxx:3087
 AtlEvent.cxx:3088
 AtlEvent.cxx:3089
 AtlEvent.cxx:3090
 AtlEvent.cxx:3091
 AtlEvent.cxx:3092
 AtlEvent.cxx:3093
 AtlEvent.cxx:3094
 AtlEvent.cxx:3095
 AtlEvent.cxx:3096
 AtlEvent.cxx:3097
 AtlEvent.cxx:3098
 AtlEvent.cxx:3099
 AtlEvent.cxx:3100
 AtlEvent.cxx:3101
 AtlEvent.cxx:3102
 AtlEvent.cxx:3103
 AtlEvent.cxx:3104
 AtlEvent.cxx:3105
 AtlEvent.cxx:3106
 AtlEvent.cxx:3107
 AtlEvent.cxx:3108
 AtlEvent.cxx:3109
 AtlEvent.cxx:3110
 AtlEvent.cxx:3111
 AtlEvent.cxx:3112
 AtlEvent.cxx:3113
 AtlEvent.cxx:3114
 AtlEvent.cxx:3115
 AtlEvent.cxx:3116
 AtlEvent.cxx:3117
 AtlEvent.cxx:3118
 AtlEvent.cxx:3119
 AtlEvent.cxx:3120
 AtlEvent.cxx:3121
 AtlEvent.cxx:3122
 AtlEvent.cxx:3123
 AtlEvent.cxx:3124
 AtlEvent.cxx:3125
 AtlEvent.cxx:3126
 AtlEvent.cxx:3127
 AtlEvent.cxx:3128
 AtlEvent.cxx:3129
 AtlEvent.cxx:3130
 AtlEvent.cxx:3131
 AtlEvent.cxx:3132
 AtlEvent.cxx:3133
 AtlEvent.cxx:3134
 AtlEvent.cxx:3135
 AtlEvent.cxx:3136
 AtlEvent.cxx:3137
 AtlEvent.cxx:3138
 AtlEvent.cxx:3139
 AtlEvent.cxx:3140
 AtlEvent.cxx:3141
 AtlEvent.cxx:3142
 AtlEvent.cxx:3143
 AtlEvent.cxx:3144
 AtlEvent.cxx:3145
 AtlEvent.cxx:3146
 AtlEvent.cxx:3147
 AtlEvent.cxx:3148
 AtlEvent.cxx:3149
 AtlEvent.cxx:3150
 AtlEvent.cxx:3151
 AtlEvent.cxx:3152
 AtlEvent.cxx:3153
 AtlEvent.cxx:3154
 AtlEvent.cxx:3155
 AtlEvent.cxx:3156
 AtlEvent.cxx:3157
 AtlEvent.cxx:3158
 AtlEvent.cxx:3159
 AtlEvent.cxx:3160
 AtlEvent.cxx:3161
 AtlEvent.cxx:3162
 AtlEvent.cxx:3163
 AtlEvent.cxx:3164
 AtlEvent.cxx:3165
 AtlEvent.cxx:3166
 AtlEvent.cxx:3167
 AtlEvent.cxx:3168
 AtlEvent.cxx:3169
 AtlEvent.cxx:3170
 AtlEvent.cxx:3171
 AtlEvent.cxx:3172
 AtlEvent.cxx:3173
 AtlEvent.cxx:3174
 AtlEvent.cxx:3175
 AtlEvent.cxx:3176
 AtlEvent.cxx:3177
 AtlEvent.cxx:3178
 AtlEvent.cxx:3179
 AtlEvent.cxx:3180
 AtlEvent.cxx:3181
 AtlEvent.cxx:3182
 AtlEvent.cxx:3183
 AtlEvent.cxx:3184
 AtlEvent.cxx:3185
 AtlEvent.cxx:3186
 AtlEvent.cxx:3187
 AtlEvent.cxx:3188
 AtlEvent.cxx:3189
 AtlEvent.cxx:3190
 AtlEvent.cxx:3191
 AtlEvent.cxx:3192
 AtlEvent.cxx:3193
 AtlEvent.cxx:3194
 AtlEvent.cxx:3195
 AtlEvent.cxx:3196
 AtlEvent.cxx:3197
 AtlEvent.cxx:3198
 AtlEvent.cxx:3199
 AtlEvent.cxx:3200
 AtlEvent.cxx:3201
 AtlEvent.cxx:3202
 AtlEvent.cxx:3203
 AtlEvent.cxx:3204
 AtlEvent.cxx:3205
 AtlEvent.cxx:3206
 AtlEvent.cxx:3207
 AtlEvent.cxx:3208
 AtlEvent.cxx:3209
 AtlEvent.cxx:3210
 AtlEvent.cxx:3211
 AtlEvent.cxx:3212
 AtlEvent.cxx:3213
 AtlEvent.cxx:3214
 AtlEvent.cxx:3215
 AtlEvent.cxx:3216
 AtlEvent.cxx:3217
 AtlEvent.cxx:3218
 AtlEvent.cxx:3219
 AtlEvent.cxx:3220
 AtlEvent.cxx:3221
 AtlEvent.cxx:3222
 AtlEvent.cxx:3223
 AtlEvent.cxx:3224
 AtlEvent.cxx:3225
 AtlEvent.cxx:3226
 AtlEvent.cxx:3227
 AtlEvent.cxx:3228
 AtlEvent.cxx:3229
 AtlEvent.cxx:3230
 AtlEvent.cxx:3231
 AtlEvent.cxx:3232
 AtlEvent.cxx:3233
 AtlEvent.cxx:3234
 AtlEvent.cxx:3235
 AtlEvent.cxx:3236
 AtlEvent.cxx:3237
 AtlEvent.cxx:3238
 AtlEvent.cxx:3239
 AtlEvent.cxx:3240
 AtlEvent.cxx:3241
 AtlEvent.cxx:3242
 AtlEvent.cxx:3243
 AtlEvent.cxx:3244
 AtlEvent.cxx:3245
 AtlEvent.cxx:3246
 AtlEvent.cxx:3247
 AtlEvent.cxx:3248
 AtlEvent.cxx:3249
 AtlEvent.cxx:3250
 AtlEvent.cxx:3251
 AtlEvent.cxx:3252
 AtlEvent.cxx:3253
 AtlEvent.cxx:3254
 AtlEvent.cxx:3255
 AtlEvent.cxx:3256
 AtlEvent.cxx:3257
 AtlEvent.cxx:3258
 AtlEvent.cxx:3259
 AtlEvent.cxx:3260
 AtlEvent.cxx:3261
 AtlEvent.cxx:3262
 AtlEvent.cxx:3263
 AtlEvent.cxx:3264
 AtlEvent.cxx:3265
 AtlEvent.cxx:3266
 AtlEvent.cxx:3267
 AtlEvent.cxx:3268
 AtlEvent.cxx:3269
 AtlEvent.cxx:3270
 AtlEvent.cxx:3271
 AtlEvent.cxx:3272
 AtlEvent.cxx:3273
 AtlEvent.cxx:3274
 AtlEvent.cxx:3275
 AtlEvent.cxx:3276
 AtlEvent.cxx:3277
 AtlEvent.cxx:3278
 AtlEvent.cxx:3279
 AtlEvent.cxx:3280
 AtlEvent.cxx:3281
 AtlEvent.cxx:3282
 AtlEvent.cxx:3283
 AtlEvent.cxx:3284
 AtlEvent.cxx:3285
 AtlEvent.cxx:3286
 AtlEvent.cxx:3287
 AtlEvent.cxx:3288
 AtlEvent.cxx:3289
 AtlEvent.cxx:3290
 AtlEvent.cxx:3291
 AtlEvent.cxx:3292
 AtlEvent.cxx:3293
 AtlEvent.cxx:3294
 AtlEvent.cxx:3295
 AtlEvent.cxx:3296
 AtlEvent.cxx:3297
 AtlEvent.cxx:3298
 AtlEvent.cxx:3299
 AtlEvent.cxx:3300
 AtlEvent.cxx:3301
 AtlEvent.cxx:3302
 AtlEvent.cxx:3303
 AtlEvent.cxx:3304
 AtlEvent.cxx:3305
 AtlEvent.cxx:3306
 AtlEvent.cxx:3307
 AtlEvent.cxx:3308
 AtlEvent.cxx:3309
 AtlEvent.cxx:3310
 AtlEvent.cxx:3311
 AtlEvent.cxx:3312
 AtlEvent.cxx:3313
 AtlEvent.cxx:3314
 AtlEvent.cxx:3315
 AtlEvent.cxx:3316
 AtlEvent.cxx:3317
 AtlEvent.cxx:3318
 AtlEvent.cxx:3319
 AtlEvent.cxx:3320
 AtlEvent.cxx:3321
 AtlEvent.cxx:3322
 AtlEvent.cxx:3323
 AtlEvent.cxx:3324
 AtlEvent.cxx:3325
 AtlEvent.cxx:3326
 AtlEvent.cxx:3327
 AtlEvent.cxx:3328
 AtlEvent.cxx:3329
 AtlEvent.cxx:3330
 AtlEvent.cxx:3331
 AtlEvent.cxx:3332
 AtlEvent.cxx:3333
 AtlEvent.cxx:3334
 AtlEvent.cxx:3335
 AtlEvent.cxx:3336
 AtlEvent.cxx:3337
 AtlEvent.cxx:3338
 AtlEvent.cxx:3339
 AtlEvent.cxx:3340
 AtlEvent.cxx:3341
 AtlEvent.cxx:3342
 AtlEvent.cxx:3343
 AtlEvent.cxx:3344
 AtlEvent.cxx:3345
 AtlEvent.cxx:3346
 AtlEvent.cxx:3347
 AtlEvent.cxx:3348
 AtlEvent.cxx:3349
 AtlEvent.cxx:3350
 AtlEvent.cxx:3351
 AtlEvent.cxx:3352
 AtlEvent.cxx:3353
 AtlEvent.cxx:3354
 AtlEvent.cxx:3355
 AtlEvent.cxx:3356
 AtlEvent.cxx:3357
 AtlEvent.cxx:3358
 AtlEvent.cxx:3359
 AtlEvent.cxx:3360
 AtlEvent.cxx:3361
 AtlEvent.cxx:3362
 AtlEvent.cxx:3363
 AtlEvent.cxx:3364
 AtlEvent.cxx:3365
 AtlEvent.cxx:3366
 AtlEvent.cxx:3367
 AtlEvent.cxx:3368
 AtlEvent.cxx:3369
 AtlEvent.cxx:3370
 AtlEvent.cxx:3371
 AtlEvent.cxx:3372
 AtlEvent.cxx:3373
 AtlEvent.cxx:3374
 AtlEvent.cxx:3375
 AtlEvent.cxx:3376
 AtlEvent.cxx:3377
 AtlEvent.cxx:3378
 AtlEvent.cxx:3379
 AtlEvent.cxx:3380
 AtlEvent.cxx:3381
 AtlEvent.cxx:3382
 AtlEvent.cxx:3383
 AtlEvent.cxx:3384
 AtlEvent.cxx:3385
 AtlEvent.cxx:3386
 AtlEvent.cxx:3387
 AtlEvent.cxx:3388
 AtlEvent.cxx:3389
 AtlEvent.cxx:3390
 AtlEvent.cxx:3391
 AtlEvent.cxx:3392
 AtlEvent.cxx:3393
 AtlEvent.cxx:3394
 AtlEvent.cxx:3395
 AtlEvent.cxx:3396
 AtlEvent.cxx:3397
 AtlEvent.cxx:3398
 AtlEvent.cxx:3399
 AtlEvent.cxx:3400
 AtlEvent.cxx:3401
 AtlEvent.cxx:3402
 AtlEvent.cxx:3403
 AtlEvent.cxx:3404
 AtlEvent.cxx:3405
 AtlEvent.cxx:3406
 AtlEvent.cxx:3407
 AtlEvent.cxx:3408
 AtlEvent.cxx:3409
 AtlEvent.cxx:3410
 AtlEvent.cxx:3411
 AtlEvent.cxx:3412
 AtlEvent.cxx:3413
 AtlEvent.cxx:3414
 AtlEvent.cxx:3415
 AtlEvent.cxx:3416
 AtlEvent.cxx:3417
 AtlEvent.cxx:3418
 AtlEvent.cxx:3419
 AtlEvent.cxx:3420
 AtlEvent.cxx:3421
 AtlEvent.cxx:3422
 AtlEvent.cxx:3423
 AtlEvent.cxx:3424
 AtlEvent.cxx:3425
 AtlEvent.cxx:3426
 AtlEvent.cxx:3427
 AtlEvent.cxx:3428
 AtlEvent.cxx:3429
 AtlEvent.cxx:3430
 AtlEvent.cxx:3431
 AtlEvent.cxx:3432
 AtlEvent.cxx:3433
 AtlEvent.cxx:3434
 AtlEvent.cxx:3435
 AtlEvent.cxx:3436
 AtlEvent.cxx:3437
 AtlEvent.cxx:3438
 AtlEvent.cxx:3439
 AtlEvent.cxx:3440
 AtlEvent.cxx:3441
 AtlEvent.cxx:3442
 AtlEvent.cxx:3443
 AtlEvent.cxx:3444
 AtlEvent.cxx:3445
 AtlEvent.cxx:3446
 AtlEvent.cxx:3447
 AtlEvent.cxx:3448
 AtlEvent.cxx:3449
 AtlEvent.cxx:3450
 AtlEvent.cxx:3451
 AtlEvent.cxx:3452
 AtlEvent.cxx:3453
 AtlEvent.cxx:3454
 AtlEvent.cxx:3455
 AtlEvent.cxx:3456
 AtlEvent.cxx:3457
 AtlEvent.cxx:3458
 AtlEvent.cxx:3459
 AtlEvent.cxx:3460
 AtlEvent.cxx:3461
 AtlEvent.cxx:3462
 AtlEvent.cxx:3463
 AtlEvent.cxx:3464
 AtlEvent.cxx:3465
 AtlEvent.cxx:3466
 AtlEvent.cxx:3467
 AtlEvent.cxx:3468
 AtlEvent.cxx:3469
 AtlEvent.cxx:3470