//____________________________________________________________________
//
// Single-Top Validation Analysis 
//
//
// Input: some A++ tree or chain
//
// Ouput: .root file containing validation histograms
//
// Usage:
// 
// {
//   TChain *ch = new TChain("MyInputTree");
//   ch->Add("MyInputFiles*.root");
//   AtlWtChallenge *sel = new AtlWtChallenge("MyOutputFile.root");
//   ch->Process(sel, "CTRL");
// }
//
//  
// Author: Michelangelo Giorgi <mailto: strider@physik.hu-berlin.de>
// Update: $Id: AtlWtChallenge.cxx,v 1.5 2013/08/07 23:59:38 stamm Exp $
// Copyright: 2009 (C) Oliver Maria Kind
//
#ifndef ATLAS_AtlWtChallenge
#include <AtlWtChallenge.h>
#endif
#include <TString.h>
#include <TH1F.h>
#include <TH2F.h>
#include <iostream>

using namespace std;

#ifndef __CINT__
ClassImp(AtlWtChallenge);
#endif

//____________________________________________________________________

AtlWtChallenge::AtlWtChallenge(const char* OutputFile) :
    AtlSelector(OutputFile) {
    //
    // Default constructor
    //

    // Init
    fJets    = 0;
    fBJets   = 0;
    fLeptons = 0;
    fElectrons   = 0;
    fMuons       = 0;
    fVetoLeptons = 0;

    fMET.Set(0., 0.);
    fRecoW = 0;
    fVertexTracksPresent = kFALSE; 
    fBadJetsPresent      = kFALSE;
    fElMuTrackMatched    = kFALSE;
	
    SetCutDefaults();

}

//____________________________________________________________________

AtlWtChallenge::~AtlWtChallenge() {
  //
  // Default destructor
  //
}

//____________________________________________________________________

void AtlWtChallenge::SetBranchStatus() {
    //
    // Switch on/off branches in order to gain speed
    //
    
    // Switch off all branches by default
    fTree->SetBranchStatus("*", kFALSE);
    
    // Switch on only branches we are going to use
    // This will speed up the analysis process considerably
    fTree->SetBranchStatus("fEventHeader*", kTRUE);
    fTree->SetBranchStatus("fTrigger*",     kTRUE);
}

//____________________________________________________________________

void AtlWtChallenge::SetCutDefaults() {
    //
    // Selection cut defaults
    //
    fLeptonMode = kMuonMode;//kElectronMode, kMuonMode
    
    fEleTriggerChoice = "EF_e20_medium";
    fMuTriggerChoice  = "EF_mu18";
    fWmassT_min     = 60.;    
    fMET_Mag_min    = 25.;
    fElPt_Min       = 25.;
    fMuPt_Min       = 20.;
    fJets_Pt_min    = 25.;
    fJets_Eta_min   = -4.5;
    fJets_Eta_max   = 4.5;
    fBJets_Pt_min    = 35.;
    fBJets_Eta_min  = -2.5;
    fBJets_Eta_max  = 2.5;
}

//____________________________________________________________________

void AtlWtChallenge::BookHistograms() {
    //
    // Book histograms
    //
    // This example shows also how to create sub-folders inside a
    // .root file in order to group the large amount of histograms one
    // usually has
    //
    
    // Save present working directory
    // (only relevant when creating sub-directories)
    fOutputFile->cd();

    TDirectory *savdir = gDirectory;
    
    gDirectory->mkdir("AtlWtChallenge","Single-Top Validation Analysis");
    gDirectory->cd("AtlWtChallenge");
        
    // Cut-flow, electrons
    fHistCutFlow_e = new TH1F("h_cutflow_e", "Cut-Flow (Electrons)",
			      24, 0, 24);
    //common sgtop
    fHistCutFlow_e->GetXaxis()->SetBinLabel(1,  "(C0)  Total/GRL");
    fHistCutFlow_e->GetXaxis()->SetBinLabel(2,  "(C1)  Trigger Passed");
    fHistCutFlow_e->GetXaxis()->SetBinLabel(3,  "(C2)  Vtx Cut");
    fHistCutFlow_e->GetXaxis()->SetBinLabel(4,  "Loose  Tree");
    fHistCutFlow_e->GetXaxis()->SetBinLabel(5,  "(C3)  Tight Electron");
    fHistCutFlow_e->GetXaxis()->SetBinLabel(6,  "(C4)  Veto Lepton");
    fHistCutFlow_e->GetXaxis()->SetBinLabel(7,  "(C5)  Trigger Match");
    fHistCutFlow_e->GetXaxis()->SetBinLabel(8,  "(C6)  e/#mu OR");
    fHistCutFlow_e->GetXaxis()->SetBinLabel(9,  "(C7)  Bad Jets Cleaning");
    fHistCutFlow_e->GetXaxis()->SetBinLabel(10, "(C8)  Etmiss");
    fHistCutFlow_e->GetXaxis()->SetBinLabel(11, "(C9)  ElectronPt > 25 GeV");
    fHistCutFlow_e->GetXaxis()->SetBinLabel(12, "(C10) +2 jets bin, P_{t} > 25 GeV, |#eta| < 4.5");

    // Wt Selection Challenge
    
    // C11 (Triangle cut)
    fHistCutFlow_e->GetXaxis()->SetBinLabel(13, "Triangle(C11)");
    // MTWs
    fHistCutFlow_e->GetXaxis()->SetBinLabel(14, "(Underflow) M_{T}(W) > 60 > GeV @ -1j bin");
    fHistCutFlow_e->GetXaxis()->SetBinLabel(15, "(C11B2) M_{T}(W) > 60 GeV & 2 jets");
    fHistCutFlow_e->GetXaxis()->SetBinLabel(16, "(C11B3) M_{T}(W) > 60 GeV & 3 jets");
    fHistCutFlow_e->GetXaxis()->SetBinLabel(17, "(C11B4) M_{T}(W) > 60 GeV & 4 jets");
    fHistCutFlow_e->GetXaxis()->SetBinLabel(18, "(OverFlow) M_{T}(W) > 60 GeV & +5 jets");

    // C12 (+1 b-tagging)
    // b-tag bins
    fHistCutFlow_e->GetXaxis()->SetBinLabel(19, "b-tag > 35 GeV, |#eta| <2.5 @ (C12)");
    fHistCutFlow_e->GetXaxis()->SetBinLabel(20, "(Underflow) b-tag > 35 GeV, |#eta| <2.5 @ -1j bin");
    fHistCutFlow_e->GetXaxis()->SetBinLabel(21, "(C12B2) b-tag > 35 GeV, |#eta| <2.5 @ 2j bin");
    fHistCutFlow_e->GetXaxis()->SetBinLabel(22, "(C12B3) b-tag > 35 GeV, |#eta| <2.5 @ 3j bin");
    fHistCutFlow_e->GetXaxis()->SetBinLabel(23, "(C12B4) b-tag > 35 GeV, |#eta| <2.5 @ 4j bin");
    fHistCutFlow_e->GetXaxis()->SetBinLabel(24, "(OverFlow) b-tag > 35 GeV, |#eta| <2.5 @ +5j bin");
    
    fHistCutFlow_e->SetYTitle("Number of Events");

    
    // Cut-flow, muons
    fHistCutFlow_mu = new TH1F("h_cutflow_mu", "Cut-Flow (Muons)",
			      24, 0, 24);
    //common sgtop
    fHistCutFlow_mu->GetXaxis()->SetBinLabel(1,  "Total/GRL (C0)");
    fHistCutFlow_mu->GetXaxis()->SetBinLabel(2,  "Trigger Passed (C1)");
    fHistCutFlow_mu->GetXaxis()->SetBinLabel(3,  "Vtx Cut (C2)");
    fHistCutFlow_mu->GetXaxis()->SetBinLabel(4,  "Loose Tree");
    fHistCutFlow_mu->GetXaxis()->SetBinLabel(5,  "Tight Electron (C3)");
    fHistCutFlow_mu->GetXaxis()->SetBinLabel(6,  "Veto Lepton (C4)");
    fHistCutFlow_mu->GetXaxis()->SetBinLabel(7,  "Trigger Match (C5)");
    fHistCutFlow_mu->GetXaxis()->SetBinLabel(8,  "e/#mu OR (C6)");
    fHistCutFlow_mu->GetXaxis()->SetBinLabel(9,  "Bad Jets Cleaning (C7)");
    fHistCutFlow_mu->GetXaxis()->SetBinLabel(10, "Etmiss  (C8)");
    fHistCutFlow_mu->GetXaxis()->SetBinLabel(11, "ElectronPt > 25 GeV (C9)");
    fHistCutFlow_mu->GetXaxis()->SetBinLabel(12, "+2 jets bin, P_{t} > 25 GeV, |#eta| < 4.5 (C10)");

    // Wt Selection Challenge
    
    // C11 (Triangle cut)
    fHistCutFlow_mu->GetXaxis()->SetBinLabel(13, "Triangle(C11)");
    // MTWs
    fHistCutFlow_mu->GetXaxis()->SetBinLabel(14, "(Underflow) M_{T}(W) > 60 > GeV @ -1j bin");
    fHistCutFlow_mu->GetXaxis()->SetBinLabel(15, "(C11B2) M_{T}(W) > 60 GeV & 2 jets");
    fHistCutFlow_mu->GetXaxis()->SetBinLabel(16, "(C11B3) M_{T}(W) > 60 GeV & 3 jets");
    fHistCutFlow_mu->GetXaxis()->SetBinLabel(17, "(C11B4) M_{T}(W) > 60 GeV & 4 jets");
    fHistCutFlow_mu->GetXaxis()->SetBinLabel(18, "(OverFlow) M_{T}(W) > 60 GeV & +5 jets");

    // C12 (+1 b-tagging)
    // b-tag bins
    fHistCutFlow_mu->GetXaxis()->SetBinLabel(19, "b-tag > 35 GeV, |#eta| <2.5 @ (C12)");
    fHistCutFlow_mu->GetXaxis()->SetBinLabel(20, "(Underflow) b-tag > 35 GeV, |#eta| <2.5 @ -1j bin");
    fHistCutFlow_mu->GetXaxis()->SetBinLabel(21, "(C12B2) b-tag > 35 GeV, |#eta| <2.5 @ 2j bin");
    fHistCutFlow_mu->GetXaxis()->SetBinLabel(22, "(C12B3) b-tag > 35 GeV, |#eta| <2.5 @ 3j bin");
    fHistCutFlow_mu->GetXaxis()->SetBinLabel(23, "(C12B4) b-tag > 35 GeV, |#eta| <2.5 @ 4j bin");
    fHistCutFlow_mu->GetXaxis()->SetBinLabel(24, "(OverFlow) b-tag > 35 GeV, |#eta| <2.5 @ +5j bin");

    
    fHistCutFlow_mu->SetYTitle("Number of Events");

    // Restore pwd
    savdir->cd();
    
    // Open a file for output of event numbers
    gDirectory->cd("../../../tasks");
    if ( fLeptonMode == kElectronMode )
	fOut.open("logfile_e");
    if ( fLeptonMode == kMuonMode )
	fOut.open("logfile_mu");

    // Restore pwd
    savdir->cd();
}



//____________________________________________________________________

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

    //
    // Obtain Objects from Object Definitions Tool
    //
    // AtlAnalysisTool *tool = 0;
    // TIter next_tool(fListOfTools);    
    // next_tool.Reset();
    // while ( (tool = (AtlAnalysisTool*)next_tool()) ) {
    // 	if( ((TString)tool->ClassName()).Contains("AtlSgTopObjectsDefinitionTool") ){
    // 	    fMET      = ((AtlSgTopObjectsDefinitionTool*)tool)->GetEtmiss();
    // 	    fJets     = ((AtlSgTopObjectsDefinitionTool*)tool)->GetJets();
    // 	    fBJets    = ((AtlSgTopObjectsDefinitionTool*)tool)->GetBJets();
    // 	    fLeptons  = ((AtlSgTopObjectsDefinitionTool*)tool)->GetLeptons();
    // 	    fElectrons = ((AtlSgTopObjectsDefinitionTool*)tool)->GetElectrons();
    // 	    fMuons     = ((AtlSgTopObjectsDefinitionTool*)tool)->GetMuons();
    // 	    fVetoLeptons  = ((AtlSgTopObjectsDefinitionTool*)tool)->GetVetoLeptons();
    // 	    fVertexTracksPresent =
    // 		((AtlSgTopObjectsDefinitionTool*)tool)->GetVertexTracksPresent();
    // 	    fBadJetsPresent =
    // 		((AtlSgTopObjectsDefinitionTool*)tool)->GetBadJetsPresent();
    // 	    fElMuTrackMatched =
    // 		((AtlSgTopObjectsDefinitionTool*)tool)->GetElMuTrackMatched();
    // 	}
    // }


    //
    // Additional topological Cuts on Jets
    //

    // ===========================
    // Refine list of generic jets
    // ===========================
    TIter next_jet(fJets);
    AtlJet *jet = 0;

    // Remove low energetic jets and non-central jets from the list
    while ( (jet = (AtlJet*)next_jet()) ) {
	if ( 
	    ( jet->JES_Pt() <= fJets_Pt_min )
 	    || ( ( jet->EMScaleEta() + jet->EMJES_EtaCorr() ) < fJets_Eta_min ) 
 	    || ( ( jet->EMScaleEta() + jet->EMJES_EtaCorr() ) > fJets_Eta_max ) 
	    )
	    fJets->Remove(jet);
    }
    
    // Sort list
    fJets->Sort(kSortDescending);



    // ===========================
    // Get refined list of b-jets 
    // ===========================
    TIter next_bjet(fBJets);
    AtlJet *bjet = 0;

    // Remove low energetic jets and non-central jets from the list
    while ( (bjet = (AtlJet*)next_bjet()) ) {
	if ( 
	    ( bjet->JES_Pt() <= fBJets_Pt_min ) 
	    || ( ( bjet->EMScaleEta() + bjet->EMJES_EtaCorr() )  < fBJets_Eta_min )
	    || ( ( bjet->EMScaleEta() + bjet->EMJES_EtaCorr() )  > fBJets_Eta_max )
	    )
	    fBJets->Remove(bjet);
    }

    // Sort list
    fBJets->Sort(kSortDescending);

}

//____________________________________________________________________


void AtlWtChallenge::ReconstructW() {
    //
    // reconstruction of W transverse 4-momentum and mass
    //

    if ( fRecoW != 0 ) {
	delete fRecoW;
	fRecoW = 0;
    }
    
    // Require at least a leading lepton
    HepParticle *Lepton = (HepParticle*)fLeptons->At(0);
    if ( Lepton != 0 ) {
	// Get neutrino 4-vector by means of Et_miss	
	TLorentzVector p_nu(fMET.Px(),
			    fMET.Py(),
			    0.,fMET.Mod());
	
	// Get (transverse) leading lepton 4-momentum
	TLorentzVector p_lep = Lepton->P();
	if ( Lepton->IsElectron() ) {
	    // customized electron 4-momentum
	    Float_t cluster_e = ((AtlElectron*)Lepton)->ClusterE();
	    Float_t track_eta = ((AtlElectron*)Lepton)->GetIDTrack()->Eta();
	    Float_t track_phi = ((AtlElectron*)Lepton)->GetIDTrack()->Phi();
	    Float_t cosh_track_eta = TMath::CosH((Double_t)track_eta);
	    p_lep.SetPtEtaPhiE(
		cluster_e/cosh_track_eta, // pt
		track_eta,                // eta
		track_phi,                // phi
		cluster_e);               // e
	}
	p_lep.SetE(p_lep.Et());
	p_lep.SetPz(0.);
	
	// Reconstruct (transverse) W 4-momentum
	TLorentzVector p_W = p_nu + p_lep;

	// Which W?
	Int_t Wpdg = -24;
	if ( Lepton->IsPositive() ) Wpdg = 24;
	fRecoW = new HepParticle(1,p_W.Px(),p_W.Py(),p_W.Pz(),p_W.E(), Wpdg);

	//
	// Try to only reconstruct transverse W mass
	//
	fWmassT = TMath::Sqrt(
	    2*p_lep.Pt()*fMET.Mod()
	    *(1. -
	      TMath::Cos(TVector2::Phi_mpi_pi((Double_t) (p_lep.Phi() - fMET.Phi())))));

    }

}

//____________________________________________________________________

Bool_t AtlWtChallenge::ProcessCut() {
    //
    // Event selection
    //
    // In this example only events containing at least one muon with a
    // transverse momentum higher than 10 GeV are chosen
    //
    return kTRUE;
}


//____________________________________________________________________

void AtlWtChallenge::FillHistograms() {
    //
    // Fill histograms
    //
    Double_t MET_Mag = fMET.Mod();

//     Double_t met = fEvent->GetEnergySum()->GetRefFinalEM_etight_MissingEt().Mod();
//     cout << endl << "fEvent->GetEnergySum()->GetRefFinalEM_etight_MissingEt().Mod() = "
// 	 << met << endl << "MET_Mag = " << MET_Mag << endl;

    // ================
    // Electron Channel
    // ================
    
    if ( fLeptonMode == kElectronMode ) {
	
	// Total number of events (0)
	fHistCutFlow_e->Fill(0.5, 1.);

	// Trigger (1)
	if ( fEvent->HasPassedHLT(fEleTriggerChoice) == kFALSE ) return;
	fHistCutFlow_e->Fill(1.5, 1.);
	
	// Minimum number of tracks from primary or pile-up vertex? (C2)
	if ( !fVertexTracksPresent ) return;    
	fHistCutFlow_e->Fill(2.5, 1.);
	
	// Loose electron or muon
	if ( fVetoLeptons->GetEntries() == 0 ) return;
	fHistCutFlow_e->Fill(3.5, 1.);
	
	// Tight electron (3)
	if ( fElectrons->GetEntries() != 1 ) return;
	fHistCutFlow_e->Fill(4.5, 1.);
	
	// Veto on 2nd tight lepton (4)
	if ( fLeptons->GetEntries() > 1 ) return;
	fHistCutFlow_e->Fill(5.5, 1.);

	// Trigger Match (C5)
	if ( !fEvent->HasMatchedHLT((AtlElectron*)fElectrons->At(0), fEleTriggerChoice.Data()) && (fEvent->IsDATA()) ) return;
	fHistCutFlow_e->Fill(6.5, 1.);
	
	// No electron-muon overlaps (C6)
	if ( fElMuTrackMatched == kTRUE ) return; 
	fHistCutFlow_e->Fill(7.5, 1.);
	
	// Bad jets in event? (C7)
	if ( fBadJetsPresent ) return;
	fHistCutFlow_e->Fill(8.5, 1.);
		
	// Etmiss (C8)
	if ( MET_Mag <= fMET_Mag_min  ) return;  // correct
	fHistCutFlow_e->Fill(9.5, 1.);	
	
	// in Tree: other event selection criteria
	// ElectronPt
	AtlElectron *el = ((AtlElectron*)fElectrons->At(0));
	if ( ( el->ClusterE() / TMath::CosH((Double_t)el->GetIDTrack()->Eta()) )
	     <= fElPt_Min ) return;    
	fHistCutFlow_e->Fill(10.5, 1.);

	// At least 2 jet
	if ( fJets->GetEntries() < 2 ) return;  
	fHistCutFlow_e->Fill(11.5, 1.);    
	
		
	// -----------------------------------------------------
	//
	// C11
	//
	// Triangle cut: Mt(W) + Etmiss > 60 GeV?
	
	//
	// Simple W-boson reconstruction
	//
	ReconstructW();
	
	if ( (fWmassT + MET_Mag) <= fWmassT_min  ) return;

	fHistCutFlow_e->Fill(12.5, 1.);

              // Binwise working
	Int_t n_GoodJets=0;
	
	AtlJet *myjet =0;
	for (int i = 0; i < fJets->GetEntries(); i++) {
	    myjet =(AtlJet*)fJets->At(i);
		   
	    if ( (myjet->EMScaleEta() + myjet->EMJES_EtaCorr() < 2.5 )
		 &&
	         (myjet->EMScaleEta() + myjet->EMJES_EtaCorr() > -2.5 ) )

		n_GoodJets++;
	}
              // C11 B1-2-3
	
	if ( n_GoodJets  < 2) {fHistCutFlow_e->Fill(13.5, 1.); }
	if ( n_GoodJets == 2) {fHistCutFlow_e->Fill(14.5, 1.); }
	if ( n_GoodJets == 3) {fHistCutFlow_e->Fill(15.5, 1.); }
	if ( n_GoodJets == 4) {fHistCutFlow_e->Fill(16.5, 1.); }
	if ( n_GoodJets  > 4) {fHistCutFlow_e->Fill(17.5, 1.); }

	// -----------------------------------------------------
	//
	// C12
	//
	// b-tagging cut: existing fBjets list
	// (its existence means 2.5-eta range & 35 GeV
	// 
	
	if ( fBJets->GetEntries() != 1 ) return;
	fHistCutFlow_e->Fill(18.5, 1.); 
	
	// C12 B1-2-3
	if (n_GoodJets  < 2) {fHistCutFlow_e->Fill(19.5, 1.); }
	if (n_GoodJets == 2) {fHistCutFlow_e->Fill(20.5, 1.); }
	if (n_GoodJets == 3) {fHistCutFlow_e->Fill(21.5, 1.); }
	if (n_GoodJets == 4) {fHistCutFlow_e->Fill(22.5, 1.); }
	if (n_GoodJets  > 4) {fHistCutFlow_e->Fill(23.5, 1.); }	

    }



    
    // ============
    // Muon Channel
    // ============
    
    if ( fLeptonMode == kMuonMode ) {
	
	// Total number of events
	fHistCutFlow_mu->Fill(0.5, 1.);

	// Trigger
	if ( fEvent->HasPassedHLT(fMuTriggerChoice) == kFALSE ) return;
	fHistCutFlow_mu->Fill(1.5, 1.);

	// Minimum number of tracks from primary or pile-up vertex?
	if ( !fVertexTracksPresent ) return;    
	fHistCutFlow_mu->Fill(2.5, 1.);
	
	// Loose electron or muon 
	if ( fVetoLeptons->GetEntries() == 0 ) return;
	fHistCutFlow_mu->Fill(3.5, 1.);

	// Tight muon	
	if ( fMuons->GetEntries() != 1 ) return;
	fHistCutFlow_mu->Fill(4.5, 1.);

	// Veto on 2nd tight lepton
	if ( fLeptons->GetEntries() > 1 ) return;
	fHistCutFlow_mu->Fill(5.5, 1.);

 	// Trigger-Match
	if ( !fEvent->HasMatchedHLT((AtlMuon*)fMuons->At(0), fMuTriggerChoice.Data()) ) return;
	fHistCutFlow_mu->Fill(6.5, 1.);
	
	// No electron-muon overlaps
	if ( fElMuTrackMatched == kTRUE ) return;
	fHistCutFlow_mu->Fill(7.5, 1.);

	// Bad jets in event?
	if ( fBadJetsPresent ) return;
	fHistCutFlow_mu->Fill(8.5, 1.);
	
	// Etmiss
	if ( MET_Mag <= fMET_Mag_min  ) return;    
	fHistCutFlow_mu->Fill(9.5, 1.);
		
	// in Tree: other event selection criteria
	// ElectronPt
	AtlMuon *mu = ((AtlMuon*)fMuons->At(0));
	if ( mu->Pt() 
	     <= fMuPt_Min ) return;    
	fHistCutFlow_mu->Fill(10.5, 1.);
	
	// At least 1 jet
	if ( fJets->GetEntries() < 2 ) return;	
	fHistCutFlow_mu->Fill(11.5, 1.);    
		
	// Triangle cut: Mt(W) + Etmiss > 60 GeV?

	//
	// Simple W-boson reconstruction
	//
	ReconstructW();

	if ( (fWmassT + MET_Mag) <= 60.  ) return;
	fHistCutFlow_mu->Fill(12.5, 1.);
	
              // Binwise working
	Int_t n_GoodJets=0;
	
	AtlJet *myjet =0;
	for (int i = 0; i < fJets->GetEntries(); i++) {
	    myjet =(AtlJet*)fJets->At(i);
		   
	    if ( (myjet->EMScaleEta() + myjet->EMJES_EtaCorr() < 2.5 )
		 &&
	         (myjet->EMScaleEta() + myjet->EMJES_EtaCorr() > -2.5 ) )

		n_GoodJets++;
	}
              // C11 B1-2-3
              // C11 B1-2-3
	
	if ( n_GoodJets  < 2) {fHistCutFlow_mu->Fill(13.5, 1.); }
	if ( n_GoodJets == 2) {fHistCutFlow_mu->Fill(14.5, 1.); }
	if ( n_GoodJets == 3) {fHistCutFlow_mu->Fill(15.5, 1.); }
	if ( n_GoodJets == 4) {fHistCutFlow_mu->Fill(16.5, 1.); }
	if ( n_GoodJets  > 4) {fHistCutFlow_mu->Fill(17.5, 1.); }
	
	// -----------------------------------------------------
	//
	// C12
	//
	// b-tagging cut: existing fBjets list
	// (its existence means 2.5-eta range & 35 GeV
	// 
	
	if ( fBJets->GetEntries() != 1 ) return;
	fHistCutFlow_mu->Fill(18.5, 1.); 

      // C12 B1-2-3
	if (n_GoodJets  < 2) {fHistCutFlow_mu->Fill(19.5, 1.); }
	if (n_GoodJets == 2) {fHistCutFlow_mu->Fill(20.5, 1.); }
	if (n_GoodJets == 3) {fHistCutFlow_mu->Fill(21.5, 1.); }
	if (n_GoodJets == 4) {fHistCutFlow_mu->Fill(22.5, 1.); }
	if (n_GoodJets  > 4) {fHistCutFlow_mu->Fill(23.5, 1.); }	

}

}

//____________________________________________________________________

void AtlWtChallenge::Terminate() {
    //
    // Terminate job
    //

    // Close output text file
    fOut.close(); 

    fHistCutFlow_e->Print("all");
    fHistCutFlow_mu->Print("all");
    
    AtlSelector::Terminate();
}

//____________________________________________________________________

void AtlWtChallenge::Print() const {
    //
    // Prints chosen parameter settings for the validation analysis
    //

    cout << endl
	 << "========================================================" << endl
	 << "  Single-Top t-Channel Validation Analysis              " << endl
	 << "========================================================" << endl
	 << "  fLeptonMode                = ";
    if ( fLeptonMode == kElectronMode ) cout << "kElectronMode" << endl;
    if ( fLeptonMode == kMuonMode )     cout << "kMuonMode" << endl;
    cout << "--------------------------------------------------------" << endl 
	 << "  Specifications of physics objects:                    " << endl
	 << "--------------------------------------------------------" << endl
	 << "  fEleTriggerChoice          = " << fEleTriggerChoice << endl
	 << "  fMuTriggerChoice           = " << fMuTriggerChoice << endl
	 << "                                                        " << endl
	 << "  fElectron_Pt_min           = " << fElPt_Min << endl
	 << "--------------------------------------------------------" << endl
	 << "  Minimum Etmiss is  fMET_Mag_min = " << fMET_Mag_min << endl
	 << "                                                        " << endl
	 << "  Minimum Transverse fWmassT_min  = " << fWmassT_min  << endl
	 << "                                                        " << endl
	 << "  fJets_Pt_min               = " << fJets_Pt_min << endl
	 << "  fJets_Eta_min              = " << fJets_Eta_min << endl
	 << "  fJets_Eta_max              = " << fJets_Eta_max << endl   
	 << "  fBJets_Et_min              = " << fJets_Pt_min << endl
	 << "  fBJets_Pt_min              = " << fBJets_Pt_min << endl
	 << "  fBJets_Eta_min             = " << fBJets_Eta_min << endl
	 << "  fBJets_Eta_max             = " << fBJets_Eta_max << endl
	 << "========================================================" << endl
	 << endl;
}
 AtlWtChallenge.cxx:1
 AtlWtChallenge.cxx:2
 AtlWtChallenge.cxx:3
 AtlWtChallenge.cxx:4
 AtlWtChallenge.cxx:5
 AtlWtChallenge.cxx:6
 AtlWtChallenge.cxx:7
 AtlWtChallenge.cxx:8
 AtlWtChallenge.cxx:9
 AtlWtChallenge.cxx:10
 AtlWtChallenge.cxx:11
 AtlWtChallenge.cxx:12
 AtlWtChallenge.cxx:13
 AtlWtChallenge.cxx:14
 AtlWtChallenge.cxx:15
 AtlWtChallenge.cxx:16
 AtlWtChallenge.cxx:17
 AtlWtChallenge.cxx:18
 AtlWtChallenge.cxx:19
 AtlWtChallenge.cxx:20
 AtlWtChallenge.cxx:21
 AtlWtChallenge.cxx:22
 AtlWtChallenge.cxx:23
 AtlWtChallenge.cxx:24
 AtlWtChallenge.cxx:25
 AtlWtChallenge.cxx:26
 AtlWtChallenge.cxx:27
 AtlWtChallenge.cxx:28
 AtlWtChallenge.cxx:29
 AtlWtChallenge.cxx:30
 AtlWtChallenge.cxx:31
 AtlWtChallenge.cxx:32
 AtlWtChallenge.cxx:33
 AtlWtChallenge.cxx:34
 AtlWtChallenge.cxx:35
 AtlWtChallenge.cxx:36
 AtlWtChallenge.cxx:37
 AtlWtChallenge.cxx:38
 AtlWtChallenge.cxx:39
 AtlWtChallenge.cxx:40
 AtlWtChallenge.cxx:41
 AtlWtChallenge.cxx:42
 AtlWtChallenge.cxx:43
 AtlWtChallenge.cxx:44
 AtlWtChallenge.cxx:45
 AtlWtChallenge.cxx:46
 AtlWtChallenge.cxx:47
 AtlWtChallenge.cxx:48
 AtlWtChallenge.cxx:49
 AtlWtChallenge.cxx:50
 AtlWtChallenge.cxx:51
 AtlWtChallenge.cxx:52
 AtlWtChallenge.cxx:53
 AtlWtChallenge.cxx:54
 AtlWtChallenge.cxx:55
 AtlWtChallenge.cxx:56
 AtlWtChallenge.cxx:57
 AtlWtChallenge.cxx:58
 AtlWtChallenge.cxx:59
 AtlWtChallenge.cxx:60
 AtlWtChallenge.cxx:61
 AtlWtChallenge.cxx:62
 AtlWtChallenge.cxx:63
 AtlWtChallenge.cxx:64
 AtlWtChallenge.cxx:65
 AtlWtChallenge.cxx:66
 AtlWtChallenge.cxx:67
 AtlWtChallenge.cxx:68
 AtlWtChallenge.cxx:69
 AtlWtChallenge.cxx:70
 AtlWtChallenge.cxx:71
 AtlWtChallenge.cxx:72
 AtlWtChallenge.cxx:73
 AtlWtChallenge.cxx:74
 AtlWtChallenge.cxx:75
 AtlWtChallenge.cxx:76
 AtlWtChallenge.cxx:77
 AtlWtChallenge.cxx:78
 AtlWtChallenge.cxx:79
 AtlWtChallenge.cxx:80
 AtlWtChallenge.cxx:81
 AtlWtChallenge.cxx:82
 AtlWtChallenge.cxx:83
 AtlWtChallenge.cxx:84
 AtlWtChallenge.cxx:85
 AtlWtChallenge.cxx:86
 AtlWtChallenge.cxx:87
 AtlWtChallenge.cxx:88
 AtlWtChallenge.cxx:89
 AtlWtChallenge.cxx:90
 AtlWtChallenge.cxx:91
 AtlWtChallenge.cxx:92
 AtlWtChallenge.cxx:93
 AtlWtChallenge.cxx:94
 AtlWtChallenge.cxx:95
 AtlWtChallenge.cxx:96
 AtlWtChallenge.cxx:97
 AtlWtChallenge.cxx:98
 AtlWtChallenge.cxx:99
 AtlWtChallenge.cxx:100
 AtlWtChallenge.cxx:101
 AtlWtChallenge.cxx:102
 AtlWtChallenge.cxx:103
 AtlWtChallenge.cxx:104
 AtlWtChallenge.cxx:105
 AtlWtChallenge.cxx:106
 AtlWtChallenge.cxx:107
 AtlWtChallenge.cxx:108
 AtlWtChallenge.cxx:109
 AtlWtChallenge.cxx:110
 AtlWtChallenge.cxx:111
 AtlWtChallenge.cxx:112
 AtlWtChallenge.cxx:113
 AtlWtChallenge.cxx:114
 AtlWtChallenge.cxx:115
 AtlWtChallenge.cxx:116
 AtlWtChallenge.cxx:117
 AtlWtChallenge.cxx:118
 AtlWtChallenge.cxx:119
 AtlWtChallenge.cxx:120
 AtlWtChallenge.cxx:121
 AtlWtChallenge.cxx:122
 AtlWtChallenge.cxx:123
 AtlWtChallenge.cxx:124
 AtlWtChallenge.cxx:125
 AtlWtChallenge.cxx:126
 AtlWtChallenge.cxx:127
 AtlWtChallenge.cxx:128
 AtlWtChallenge.cxx:129
 AtlWtChallenge.cxx:130
 AtlWtChallenge.cxx:131
 AtlWtChallenge.cxx:132
 AtlWtChallenge.cxx:133
 AtlWtChallenge.cxx:134
 AtlWtChallenge.cxx:135
 AtlWtChallenge.cxx:136
 AtlWtChallenge.cxx:137
 AtlWtChallenge.cxx:138
 AtlWtChallenge.cxx:139
 AtlWtChallenge.cxx:140
 AtlWtChallenge.cxx:141
 AtlWtChallenge.cxx:142
 AtlWtChallenge.cxx:143
 AtlWtChallenge.cxx:144
 AtlWtChallenge.cxx:145
 AtlWtChallenge.cxx:146
 AtlWtChallenge.cxx:147
 AtlWtChallenge.cxx:148
 AtlWtChallenge.cxx:149
 AtlWtChallenge.cxx:150
 AtlWtChallenge.cxx:151
 AtlWtChallenge.cxx:152
 AtlWtChallenge.cxx:153
 AtlWtChallenge.cxx:154
 AtlWtChallenge.cxx:155
 AtlWtChallenge.cxx:156
 AtlWtChallenge.cxx:157
 AtlWtChallenge.cxx:158
 AtlWtChallenge.cxx:159
 AtlWtChallenge.cxx:160
 AtlWtChallenge.cxx:161
 AtlWtChallenge.cxx:162
 AtlWtChallenge.cxx:163
 AtlWtChallenge.cxx:164
 AtlWtChallenge.cxx:165
 AtlWtChallenge.cxx:166
 AtlWtChallenge.cxx:167
 AtlWtChallenge.cxx:168
 AtlWtChallenge.cxx:169
 AtlWtChallenge.cxx:170
 AtlWtChallenge.cxx:171
 AtlWtChallenge.cxx:172
 AtlWtChallenge.cxx:173
 AtlWtChallenge.cxx:174
 AtlWtChallenge.cxx:175
 AtlWtChallenge.cxx:176
 AtlWtChallenge.cxx:177
 AtlWtChallenge.cxx:178
 AtlWtChallenge.cxx:179
 AtlWtChallenge.cxx:180
 AtlWtChallenge.cxx:181
 AtlWtChallenge.cxx:182
 AtlWtChallenge.cxx:183
 AtlWtChallenge.cxx:184
 AtlWtChallenge.cxx:185
 AtlWtChallenge.cxx:186
 AtlWtChallenge.cxx:187
 AtlWtChallenge.cxx:188
 AtlWtChallenge.cxx:189
 AtlWtChallenge.cxx:190
 AtlWtChallenge.cxx:191
 AtlWtChallenge.cxx:192
 AtlWtChallenge.cxx:193
 AtlWtChallenge.cxx:194
 AtlWtChallenge.cxx:195
 AtlWtChallenge.cxx:196
 AtlWtChallenge.cxx:197
 AtlWtChallenge.cxx:198
 AtlWtChallenge.cxx:199
 AtlWtChallenge.cxx:200
 AtlWtChallenge.cxx:201
 AtlWtChallenge.cxx:202
 AtlWtChallenge.cxx:203
 AtlWtChallenge.cxx:204
 AtlWtChallenge.cxx:205
 AtlWtChallenge.cxx:206
 AtlWtChallenge.cxx:207
 AtlWtChallenge.cxx:208
 AtlWtChallenge.cxx:209
 AtlWtChallenge.cxx:210
 AtlWtChallenge.cxx:211
 AtlWtChallenge.cxx:212
 AtlWtChallenge.cxx:213
 AtlWtChallenge.cxx:214
 AtlWtChallenge.cxx:215
 AtlWtChallenge.cxx:216
 AtlWtChallenge.cxx:217
 AtlWtChallenge.cxx:218
 AtlWtChallenge.cxx:219
 AtlWtChallenge.cxx:220
 AtlWtChallenge.cxx:221
 AtlWtChallenge.cxx:222
 AtlWtChallenge.cxx:223
 AtlWtChallenge.cxx:224
 AtlWtChallenge.cxx:225
 AtlWtChallenge.cxx:226
 AtlWtChallenge.cxx:227
 AtlWtChallenge.cxx:228
 AtlWtChallenge.cxx:229
 AtlWtChallenge.cxx:230
 AtlWtChallenge.cxx:231
 AtlWtChallenge.cxx:232
 AtlWtChallenge.cxx:233
 AtlWtChallenge.cxx:234
 AtlWtChallenge.cxx:235
 AtlWtChallenge.cxx:236
 AtlWtChallenge.cxx:237
 AtlWtChallenge.cxx:238
 AtlWtChallenge.cxx:239
 AtlWtChallenge.cxx:240
 AtlWtChallenge.cxx:241
 AtlWtChallenge.cxx:242
 AtlWtChallenge.cxx:243
 AtlWtChallenge.cxx:244
 AtlWtChallenge.cxx:245
 AtlWtChallenge.cxx:246
 AtlWtChallenge.cxx:247
 AtlWtChallenge.cxx:248
 AtlWtChallenge.cxx:249
 AtlWtChallenge.cxx:250
 AtlWtChallenge.cxx:251
 AtlWtChallenge.cxx:252
 AtlWtChallenge.cxx:253
 AtlWtChallenge.cxx:254
 AtlWtChallenge.cxx:255
 AtlWtChallenge.cxx:256
 AtlWtChallenge.cxx:257
 AtlWtChallenge.cxx:258
 AtlWtChallenge.cxx:259
 AtlWtChallenge.cxx:260
 AtlWtChallenge.cxx:261
 AtlWtChallenge.cxx:262
 AtlWtChallenge.cxx:263
 AtlWtChallenge.cxx:264
 AtlWtChallenge.cxx:265
 AtlWtChallenge.cxx:266
 AtlWtChallenge.cxx:267
 AtlWtChallenge.cxx:268
 AtlWtChallenge.cxx:269
 AtlWtChallenge.cxx:270
 AtlWtChallenge.cxx:271
 AtlWtChallenge.cxx:272
 AtlWtChallenge.cxx:273
 AtlWtChallenge.cxx:274
 AtlWtChallenge.cxx:275
 AtlWtChallenge.cxx:276
 AtlWtChallenge.cxx:277
 AtlWtChallenge.cxx:278
 AtlWtChallenge.cxx:279
 AtlWtChallenge.cxx:280
 AtlWtChallenge.cxx:281
 AtlWtChallenge.cxx:282
 AtlWtChallenge.cxx:283
 AtlWtChallenge.cxx:284
 AtlWtChallenge.cxx:285
 AtlWtChallenge.cxx:286
 AtlWtChallenge.cxx:287
 AtlWtChallenge.cxx:288
 AtlWtChallenge.cxx:289
 AtlWtChallenge.cxx:290
 AtlWtChallenge.cxx:291
 AtlWtChallenge.cxx:292
 AtlWtChallenge.cxx:293
 AtlWtChallenge.cxx:294
 AtlWtChallenge.cxx:295
 AtlWtChallenge.cxx:296
 AtlWtChallenge.cxx:297
 AtlWtChallenge.cxx:298
 AtlWtChallenge.cxx:299
 AtlWtChallenge.cxx:300
 AtlWtChallenge.cxx:301
 AtlWtChallenge.cxx:302
 AtlWtChallenge.cxx:303
 AtlWtChallenge.cxx:304
 AtlWtChallenge.cxx:305
 AtlWtChallenge.cxx:306
 AtlWtChallenge.cxx:307
 AtlWtChallenge.cxx:308
 AtlWtChallenge.cxx:309
 AtlWtChallenge.cxx:310
 AtlWtChallenge.cxx:311
 AtlWtChallenge.cxx:312
 AtlWtChallenge.cxx:313
 AtlWtChallenge.cxx:314
 AtlWtChallenge.cxx:315
 AtlWtChallenge.cxx:316
 AtlWtChallenge.cxx:317
 AtlWtChallenge.cxx:318
 AtlWtChallenge.cxx:319
 AtlWtChallenge.cxx:320
 AtlWtChallenge.cxx:321
 AtlWtChallenge.cxx:322
 AtlWtChallenge.cxx:323
 AtlWtChallenge.cxx:324
 AtlWtChallenge.cxx:325
 AtlWtChallenge.cxx:326
 AtlWtChallenge.cxx:327
 AtlWtChallenge.cxx:328
 AtlWtChallenge.cxx:329
 AtlWtChallenge.cxx:330
 AtlWtChallenge.cxx:331
 AtlWtChallenge.cxx:332
 AtlWtChallenge.cxx:333
 AtlWtChallenge.cxx:334
 AtlWtChallenge.cxx:335
 AtlWtChallenge.cxx:336
 AtlWtChallenge.cxx:337
 AtlWtChallenge.cxx:338
 AtlWtChallenge.cxx:339
 AtlWtChallenge.cxx:340
 AtlWtChallenge.cxx:341
 AtlWtChallenge.cxx:342
 AtlWtChallenge.cxx:343
 AtlWtChallenge.cxx:344
 AtlWtChallenge.cxx:345
 AtlWtChallenge.cxx:346
 AtlWtChallenge.cxx:347
 AtlWtChallenge.cxx:348
 AtlWtChallenge.cxx:349
 AtlWtChallenge.cxx:350
 AtlWtChallenge.cxx:351
 AtlWtChallenge.cxx:352
 AtlWtChallenge.cxx:353
 AtlWtChallenge.cxx:354
 AtlWtChallenge.cxx:355
 AtlWtChallenge.cxx:356
 AtlWtChallenge.cxx:357
 AtlWtChallenge.cxx:358
 AtlWtChallenge.cxx:359
 AtlWtChallenge.cxx:360
 AtlWtChallenge.cxx:361
 AtlWtChallenge.cxx:362
 AtlWtChallenge.cxx:363
 AtlWtChallenge.cxx:364
 AtlWtChallenge.cxx:365
 AtlWtChallenge.cxx:366
 AtlWtChallenge.cxx:367
 AtlWtChallenge.cxx:368
 AtlWtChallenge.cxx:369
 AtlWtChallenge.cxx:370
 AtlWtChallenge.cxx:371
 AtlWtChallenge.cxx:372
 AtlWtChallenge.cxx:373
 AtlWtChallenge.cxx:374
 AtlWtChallenge.cxx:375
 AtlWtChallenge.cxx:376
 AtlWtChallenge.cxx:377
 AtlWtChallenge.cxx:378
 AtlWtChallenge.cxx:379
 AtlWtChallenge.cxx:380
 AtlWtChallenge.cxx:381
 AtlWtChallenge.cxx:382
 AtlWtChallenge.cxx:383
 AtlWtChallenge.cxx:384
 AtlWtChallenge.cxx:385
 AtlWtChallenge.cxx:386
 AtlWtChallenge.cxx:387
 AtlWtChallenge.cxx:388
 AtlWtChallenge.cxx:389
 AtlWtChallenge.cxx:390
 AtlWtChallenge.cxx:391
 AtlWtChallenge.cxx:392
 AtlWtChallenge.cxx:393
 AtlWtChallenge.cxx:394
 AtlWtChallenge.cxx:395
 AtlWtChallenge.cxx:396
 AtlWtChallenge.cxx:397
 AtlWtChallenge.cxx:398
 AtlWtChallenge.cxx:399
 AtlWtChallenge.cxx:400
 AtlWtChallenge.cxx:401
 AtlWtChallenge.cxx:402
 AtlWtChallenge.cxx:403
 AtlWtChallenge.cxx:404
 AtlWtChallenge.cxx:405
 AtlWtChallenge.cxx:406
 AtlWtChallenge.cxx:407
 AtlWtChallenge.cxx:408
 AtlWtChallenge.cxx:409
 AtlWtChallenge.cxx:410
 AtlWtChallenge.cxx:411
 AtlWtChallenge.cxx:412
 AtlWtChallenge.cxx:413
 AtlWtChallenge.cxx:414
 AtlWtChallenge.cxx:415
 AtlWtChallenge.cxx:416
 AtlWtChallenge.cxx:417
 AtlWtChallenge.cxx:418
 AtlWtChallenge.cxx:419
 AtlWtChallenge.cxx:420
 AtlWtChallenge.cxx:421
 AtlWtChallenge.cxx:422
 AtlWtChallenge.cxx:423
 AtlWtChallenge.cxx:424
 AtlWtChallenge.cxx:425
 AtlWtChallenge.cxx:426
 AtlWtChallenge.cxx:427
 AtlWtChallenge.cxx:428
 AtlWtChallenge.cxx:429
 AtlWtChallenge.cxx:430
 AtlWtChallenge.cxx:431
 AtlWtChallenge.cxx:432
 AtlWtChallenge.cxx:433
 AtlWtChallenge.cxx:434
 AtlWtChallenge.cxx:435
 AtlWtChallenge.cxx:436
 AtlWtChallenge.cxx:437
 AtlWtChallenge.cxx:438
 AtlWtChallenge.cxx:439
 AtlWtChallenge.cxx:440
 AtlWtChallenge.cxx:441
 AtlWtChallenge.cxx:442
 AtlWtChallenge.cxx:443
 AtlWtChallenge.cxx:444
 AtlWtChallenge.cxx:445
 AtlWtChallenge.cxx:446
 AtlWtChallenge.cxx:447
 AtlWtChallenge.cxx:448
 AtlWtChallenge.cxx:449
 AtlWtChallenge.cxx:450
 AtlWtChallenge.cxx:451
 AtlWtChallenge.cxx:452
 AtlWtChallenge.cxx:453
 AtlWtChallenge.cxx:454
 AtlWtChallenge.cxx:455
 AtlWtChallenge.cxx:456
 AtlWtChallenge.cxx:457
 AtlWtChallenge.cxx:458
 AtlWtChallenge.cxx:459
 AtlWtChallenge.cxx:460
 AtlWtChallenge.cxx:461
 AtlWtChallenge.cxx:462
 AtlWtChallenge.cxx:463
 AtlWtChallenge.cxx:464
 AtlWtChallenge.cxx:465
 AtlWtChallenge.cxx:466
 AtlWtChallenge.cxx:467
 AtlWtChallenge.cxx:468
 AtlWtChallenge.cxx:469
 AtlWtChallenge.cxx:470
 AtlWtChallenge.cxx:471
 AtlWtChallenge.cxx:472
 AtlWtChallenge.cxx:473
 AtlWtChallenge.cxx:474
 AtlWtChallenge.cxx:475
 AtlWtChallenge.cxx:476
 AtlWtChallenge.cxx:477
 AtlWtChallenge.cxx:478
 AtlWtChallenge.cxx:479
 AtlWtChallenge.cxx:480
 AtlWtChallenge.cxx:481
 AtlWtChallenge.cxx:482
 AtlWtChallenge.cxx:483
 AtlWtChallenge.cxx:484
 AtlWtChallenge.cxx:485
 AtlWtChallenge.cxx:486
 AtlWtChallenge.cxx:487
 AtlWtChallenge.cxx:488
 AtlWtChallenge.cxx:489
 AtlWtChallenge.cxx:490
 AtlWtChallenge.cxx:491
 AtlWtChallenge.cxx:492
 AtlWtChallenge.cxx:493
 AtlWtChallenge.cxx:494
 AtlWtChallenge.cxx:495
 AtlWtChallenge.cxx:496
 AtlWtChallenge.cxx:497
 AtlWtChallenge.cxx:498
 AtlWtChallenge.cxx:499
 AtlWtChallenge.cxx:500
 AtlWtChallenge.cxx:501
 AtlWtChallenge.cxx:502
 AtlWtChallenge.cxx:503
 AtlWtChallenge.cxx:504
 AtlWtChallenge.cxx:505
 AtlWtChallenge.cxx:506
 AtlWtChallenge.cxx:507
 AtlWtChallenge.cxx:508
 AtlWtChallenge.cxx:509
 AtlWtChallenge.cxx:510
 AtlWtChallenge.cxx:511
 AtlWtChallenge.cxx:512
 AtlWtChallenge.cxx:513
 AtlWtChallenge.cxx:514
 AtlWtChallenge.cxx:515
 AtlWtChallenge.cxx:516
 AtlWtChallenge.cxx:517
 AtlWtChallenge.cxx:518
 AtlWtChallenge.cxx:519
 AtlWtChallenge.cxx:520
 AtlWtChallenge.cxx:521
 AtlWtChallenge.cxx:522
 AtlWtChallenge.cxx:523
 AtlWtChallenge.cxx:524
 AtlWtChallenge.cxx:525
 AtlWtChallenge.cxx:526
 AtlWtChallenge.cxx:527
 AtlWtChallenge.cxx:528
 AtlWtChallenge.cxx:529
 AtlWtChallenge.cxx:530
 AtlWtChallenge.cxx:531
 AtlWtChallenge.cxx:532
 AtlWtChallenge.cxx:533
 AtlWtChallenge.cxx:534
 AtlWtChallenge.cxx:535
 AtlWtChallenge.cxx:536
 AtlWtChallenge.cxx:537
 AtlWtChallenge.cxx:538
 AtlWtChallenge.cxx:539
 AtlWtChallenge.cxx:540
 AtlWtChallenge.cxx:541
 AtlWtChallenge.cxx:542
 AtlWtChallenge.cxx:543
 AtlWtChallenge.cxx:544
 AtlWtChallenge.cxx:545
 AtlWtChallenge.cxx:546
 AtlWtChallenge.cxx:547
 AtlWtChallenge.cxx:548
 AtlWtChallenge.cxx:549
 AtlWtChallenge.cxx:550
 AtlWtChallenge.cxx:551
 AtlWtChallenge.cxx:552
 AtlWtChallenge.cxx:553
 AtlWtChallenge.cxx:554
 AtlWtChallenge.cxx:555
 AtlWtChallenge.cxx:556
 AtlWtChallenge.cxx:557
 AtlWtChallenge.cxx:558
 AtlWtChallenge.cxx:559
 AtlWtChallenge.cxx:560
 AtlWtChallenge.cxx:561
 AtlWtChallenge.cxx:562
 AtlWtChallenge.cxx:563
 AtlWtChallenge.cxx:564
 AtlWtChallenge.cxx:565
 AtlWtChallenge.cxx:566
 AtlWtChallenge.cxx:567
 AtlWtChallenge.cxx:568
 AtlWtChallenge.cxx:569
 AtlWtChallenge.cxx:570
 AtlWtChallenge.cxx:571
 AtlWtChallenge.cxx:572
 AtlWtChallenge.cxx:573
 AtlWtChallenge.cxx:574
 AtlWtChallenge.cxx:575
 AtlWtChallenge.cxx:576
 AtlWtChallenge.cxx:577
 AtlWtChallenge.cxx:578
 AtlWtChallenge.cxx:579
 AtlWtChallenge.cxx:580
 AtlWtChallenge.cxx:581
 AtlWtChallenge.cxx:582
 AtlWtChallenge.cxx:583
 AtlWtChallenge.cxx:584
 AtlWtChallenge.cxx:585
 AtlWtChallenge.cxx:586
 AtlWtChallenge.cxx:587
 AtlWtChallenge.cxx:588
 AtlWtChallenge.cxx:589
 AtlWtChallenge.cxx:590
 AtlWtChallenge.cxx:591
 AtlWtChallenge.cxx:592
 AtlWtChallenge.cxx:593
 AtlWtChallenge.cxx:594
 AtlWtChallenge.cxx:595
 AtlWtChallenge.cxx:596
 AtlWtChallenge.cxx:597
 AtlWtChallenge.cxx:598
 AtlWtChallenge.cxx:599
 AtlWtChallenge.cxx:600
 AtlWtChallenge.cxx:601
 AtlWtChallenge.cxx:602
 AtlWtChallenge.cxx:603
 AtlWtChallenge.cxx:604
 AtlWtChallenge.cxx:605
 AtlWtChallenge.cxx:606
 AtlWtChallenge.cxx:607
 AtlWtChallenge.cxx:608
 AtlWtChallenge.cxx:609
 AtlWtChallenge.cxx:610
 AtlWtChallenge.cxx:611
 AtlWtChallenge.cxx:612
 AtlWtChallenge.cxx:613
 AtlWtChallenge.cxx:614
 AtlWtChallenge.cxx:615
 AtlWtChallenge.cxx:616
 AtlWtChallenge.cxx:617
 AtlWtChallenge.cxx:618
 AtlWtChallenge.cxx:619
 AtlWtChallenge.cxx:620
 AtlWtChallenge.cxx:621
 AtlWtChallenge.cxx:622
 AtlWtChallenge.cxx:623
 AtlWtChallenge.cxx:624
 AtlWtChallenge.cxx:625
 AtlWtChallenge.cxx:626
 AtlWtChallenge.cxx:627
 AtlWtChallenge.cxx:628
 AtlWtChallenge.cxx:629
 AtlWtChallenge.cxx:630
 AtlWtChallenge.cxx:631
 AtlWtChallenge.cxx:632
 AtlWtChallenge.cxx:633
 AtlWtChallenge.cxx:634
 AtlWtChallenge.cxx:635
 AtlWtChallenge.cxx:636
 AtlWtChallenge.cxx:637
 AtlWtChallenge.cxx:638
 AtlWtChallenge.cxx:639
 AtlWtChallenge.cxx:640
 AtlWtChallenge.cxx:641
 AtlWtChallenge.cxx:642
 AtlWtChallenge.cxx:643
 AtlWtChallenge.cxx:644
 AtlWtChallenge.cxx:645
 AtlWtChallenge.cxx:646
 AtlWtChallenge.cxx:647
 AtlWtChallenge.cxx:648
 AtlWtChallenge.cxx:649
 AtlWtChallenge.cxx:650
 AtlWtChallenge.cxx:651
 AtlWtChallenge.cxx:652
 AtlWtChallenge.cxx:653
 AtlWtChallenge.cxx:654
 AtlWtChallenge.cxx:655
 AtlWtChallenge.cxx:656
 AtlWtChallenge.cxx:657
 AtlWtChallenge.cxx:658
 AtlWtChallenge.cxx:659
 AtlWtChallenge.cxx:660
 AtlWtChallenge.cxx:661
 AtlWtChallenge.cxx:662
 AtlWtChallenge.cxx:663
 AtlWtChallenge.cxx:664