diff --git a/BRANplotter.cpp b/BRANplotter.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..2dc0bc278be1de30111d99982845d2f2ec216eb4
--- /dev/null
+++ b/BRANplotter.cpp
@@ -0,0 +1,722 @@
+//////////////////////////////////////////////////////////////////////////////////
+//  BRANRod.cpp
+//  Author: Chad Lantz
+//
+//  This script is a compilation of plotting functions and really nothing more
+//  A few global values have been set, that is:
+//
+//  TFile *f - the root file with the transmission spectra
+//  TTree *Control - the tree that contains the control spectra
+//  nRods - the number of rods in the root file (I may change this to auto-detect them)
+//  RodNames - Really it's rod numbers. This is mostly used to title histograms in a loop
+//  RodDescription - This gets used to fill legend entries or to name histograms
+//  option - These are the ROOT options for TF1::ShowBackground() used in the BRANRod class
+//
+//  
+//  The only multi-purpose function here is ScatterPlot. Most of the plotting here is scatter
+//  and it just made sense to have a consistent way of doing it.
+//
+//
+//  Current plotting methods are as follows:
+//
+//    TransPlot(int wl)
+//          Produces a 2x2 canvas with plots of the following for all BRAN rods:
+//              Top left:     Transmission vs Dose
+//              Top right:    Transmission vs Neutron Fluence
+//              Bottom left:  Transmission vs Hadron Fluence 
+//              Bottom right: Transmission vs Y-position
+//          wl - 0 = 240nm, 1 = 259nm, 2 = 303nm
+//
+//    DosePlots()
+//          Produces a 2x2 canvas with plots of the following for all BRAN rods: 
+//              Top left:     Dose            vs Y-position
+//              Top right:    Neutron Fluence vs Y-position
+//              Bottom left:  Hadron Fluence  vs Y-position
+//              Bottom right: Transmission    vs Y-position
+//
+//    crossPlots(int pos)
+//          Draw transverse spectra from each rod on a single pad for a given position
+//          Position is pos + 2.5cm
+//
+//    longPlots()
+//          Draw the longitudinal spectra from each rod on one pad
+//
+//    DrawReference()
+//          Produces a 2x2 canvas with plots of each rod before and after background subtraction
+//
+//    ComparePlot()
+//          Seems like a duplicate of TransPlot. I'll delete it if I can't find a use
+//
+//    SurfacePlot(Option_t option)
+//          Draws a surface plot of all transmission spectra for a given rod axis are:
+//              x - Wavelength (nm)
+//              y - Selected by option. Options are:
+//                  "y" -       rod y axis
+//                  "dose" -    uhh... dose
+//                  "neutron" - neutron fluence
+//                  "hadron" -  hadron fluence
+//              z - Relative transmission
+//
+//    Print()
+//          Output data points to .csv
+//          
+//
+//////////////////////////////////////////////////////////////////////////////////
+#define BRANRod_cxx
+#include "BRANRod.h"
+#include "AtlasStyle.C"
+
+#include <fstream>
+#include <math.h>
+#include "TGraph.h"
+#include "TMultiGraph.h"
+#include "TGraph2D.h"
+
+
+/////////////// Make 3D plots by dose //////////////////////
+
+TGraphErrors* ScatterPlot( vector< double > _vx, vector< double > _vy, vector< double > _ex, vector< double > _ey, string title, int style, int color);
+
+
+
+
+
+////////////  Global options: File and control rod tree. Rod names, descriptions and plotting colors
+////////////  option for background generation
+
+TFile *f = new TFile("data/done.root");
+TTree *Control=(TTree*)f->Get("Control");
+    
+int    nRods = 4;
+string RodNames[] = {"Rod2","Rod3","Rod4","Rod5"};
+int    Color[] = {kBlack,kRed,kGreen-1,kBlue,kGray,kMagenta+2,kCyan+2};
+    
+string RodDescription[] = {": Spectrosil 2000 (High OH, Low H_{2})",
+                           ": Spectrosil 2000 (High OH, High H_{2})", 
+                           ": Spectrosil 2000 (High OH, No H_{2})", 
+                           ": Suprasil 3301 (Low OH, High H_{2})"};
+                           
+string option = "BackIncreasingWindow BackOrder2 nosmoothing nocompton";
+
+////////////  End global options
+
+
+
+
+
+
+
+/*  This function does whatever Sheng wants it to
+ *
+ *
+ *
+ */
+void ShengsProcess(){
+    int position = 3;
+    
+    //Make the BRAN Rods
+    vector< BRANRod* > vRod(nRods,0);
+    
+    for(int rod = 0; rod < nRods; rod++){
+        vRod[rod] = new BRANRod( (TTree*)f->Get( RodNames[rod].c_str() ), Control->CloneTree() );
+        vRod[rod]->Process(option, 0);
+        vRod[rod]->vSpectra[position]->Draw();
+    }
+    
+}
+
+
+
+
+
+/**  Produces a 2x2 canvas with plots of the following for all BRAN rods:
+ *
+ *   Top left:     Transmission vs Dose
+ *   Top right:    Transmission vs Neutron Fluence
+ *   Bottom left:  Transmission vs Hadron Fluence 
+ *   Bottom right: Transmission vs Y-position
+ */
+void TransPlot(int wl){
+    
+    string GraphTitle[] = {"%dnm Transmission vs Dose; Dose (MRad); Transmission",
+                           "%dnm Transmission vs Neutron Fluence; Neutron Fluence (cm^{-2}); Transmission",
+                           "%dnm Transmission vs Hadron Fluence; Hadron Fluence (cm^{-2}); Transmission",
+                           "%dnm Transmission vs Y-position; Y (cm); Transmission"};
+    
+    int wavelength[] = {240,259,303};
+    
+    SetAtlasStyle();
+
+    //Make the BRAN Rods
+    vector< BRANRod* > vRod(nRods,0);
+    
+    for(int rod = 0; rod < nRods; rod++){
+        vRod[rod] = new BRANRod( (TTree*)f->Get( RodNames[rod].c_str() ), Control->CloneTree() );
+    }
+
+    //////////////////////   Assemble the data   ///////////////////////
+    //In order, the graph types are: Dose, neutrons, hadrons, y-position
+    int nTypes = 4;
+    TMultiGraph *gDose    = new TMultiGraph();
+    TMultiGraph *gNeutron = new TMultiGraph();
+    TMultiGraph *gHadron  = new TMultiGraph();
+    TMultiGraph *gY       = new TMultiGraph();
+    TGraphErrors *gFilter[nTypes];
+    
+    // For formatting in a loop
+    vector < TMultiGraph* > gEasy = {gDose, gNeutron, gHadron, gY};
+    
+    //Loop over rods
+    for(int rod = 0; rod < nRods; rod++){
+        vRod[rod]->Process(option, 0);
+        
+        string title =  RodNames[rod] + RodDescription[rod];
+        
+        
+        // This block filters dose plots with high errors
+        double errorThresh = 0.7;
+        vector < double > newDose,newDoseErr,newTrans,newTransError;
+        for(int point = 0; point < vRod[rod]->dose->size(); point++){
+            if( vRod[rod]->doseErr->at(point) < errorThresh*vRod[rod]->dose->at(point) ){
+                
+                newDose.push_back(       vRod[rod]->dose->at(point)               );
+                newDoseErr.push_back(    vRod[rod]->doseErr->at(point)            );
+                newTrans.push_back(      vRod[rod]->transmission[wl].at(point)    );
+                newTransError.push_back( vRod[rod]->transmissionErr[wl].at(point) );
+            }
+        }
+            
+        gDose->Add(    ScatterPlot( newDose, newTrans, newDoseErr, newTransError, title, 20 + rod, Color[rod] ) );
+        gNeutron->Add( ScatterPlot( *vRod[rod]->neutron, vRod[rod]->transmission[wl], vRod[rod]->neutronErr, vRod[rod]->transmissionErr[wl], title, 20 + rod, Color[rod] ) );
+        gHadron->Add(  ScatterPlot( *vRod[rod]->hadron,  vRod[rod]->transmission[wl], vRod[rod]->hadronErr,  vRod[rod]->transmissionErr[wl], title, 20 + rod, Color[rod] ) );
+        gY->Add(       ScatterPlot(  vRod[rod]->yAxis,   vRod[rod]->transmission[wl], vRod[rod]->yAxisErr,   vRod[rod]->transmissionErr[wl], title, 20 + rod, Color[rod] ) );
+
+    }//End loop over rods
+
+
+    
+
+    //////////////////////   Plot the assembled data   ///////////////////////
+    
+    TCanvas *c = new TCanvas("All","All",1920,1080);
+    c->Divide(2,2);
+    
+    // Legend locations
+    float top = 0.9;
+    float bottom = 0.18;
+    float left = 0.18;
+    float right = 0.83;
+    float width = 0.35;
+    float height = 0.20;
+    
+    for(int pad = 0; pad < nTypes; pad++){
+        
+        // Plot each type on it's own pad. Names are gathered from GraphTitle and wavelength is added
+        c->cd( pad + 1 );
+        gEasy[pad]->SetTitle(Form( GraphTitle[pad].c_str() , wavelength[wl] ) );
+        //gEasy[pad]->Draw("ap");
+        gEasy[pad]->Draw("5ap");
+        
+        //Give the transmission vs y plot a different legend location and don't SetLogx
+        if(pad == nTypes - 1){ 
+            TLegend *leg = gPad->BuildLegend(right - width, bottom, right, bottom + height, Form("%dnm Color Center", wavelength[wl]) ); 
+            leg->SetBorderSize(0);
+            gEasy[pad]->GetHistogram()->SetAxisRange( 0, 1.1, "Y");
+            gEasy[pad]->GetHistogram()->SetAxisRange( 0, 40,  "X");
+            continue; 
+            }
+      
+        TLegend *leg = gPad->BuildLegend(left, bottom, left + width, bottom + height, Form("%dnm Color Center", wavelength[wl]));
+        leg->SetBorderSize(0);
+        gPad->SetLogx();
+        gEasy[pad]->GetHistogram()->GetYaxis()->SetRangeUser(0,1.1);
+        
+    }
+    
+    // Treat special cases
+    gNeutron->GetHistogram()->GetXaxis()->SetRangeUser( 3e+15, 2e+16);
+    gNeutron->GetHistogram()->GetXaxis()->SetMoreLogLabels();
+    
+    
+    c->Print("test.pdf");
+    
+    for(int rod = 0; rod < nRods; rod++){
+        delete vRod[rod];
+    }
+    
+
+}
+
+
+
+/**  Produces a 2x2 canvas with plots of the following for all BRAN rods:
+ *
+ *   Top left:     Dose            vs Y-position
+ *   Top right:    Neutron Fluence vs Y-position
+ *   Bottom left:  Hadron Fluence  vs Y-position
+ *   Bottom right: Transmission    vs Y-position
+ */
+void DosePlots(){
+    
+    SetAtlasStyle();
+    
+    string GraphTitle[] = {"Dose vs Y-position; Y (cm); Dose (MRad)",
+                           "Neutron Fluence vs Y-position; Y (cm); Neutron Fluence (cm^{-2})",
+                           "Hadron Fluencevs Y-position; Y (cm); Hadron Fluence (cm^{-2})",
+                           "240nm Transmission vs Y-position; Y (cm); Transmission"};
+
+    //Make the BRAN Rods
+    vector< BRANRod* > vRod(nRods,0);
+    for(int rod = 0; rod < nRods; rod++){
+        vRod[rod] = new BRANRod( (TTree*)f->Get( RodNames[rod].c_str() ), Control->CloneTree() );
+    }
+
+    //////////////////////   Assemble the data   ///////////////////////
+
+    //In order, the graph types are: Dose, neutrons, hadrons, y-position
+    int nTypes = 4;
+    TMultiGraph *gDose    = new TMultiGraph();
+    TMultiGraph *gNeutron = new TMultiGraph();
+    TMultiGraph *gHadron  = new TMultiGraph();
+    TMultiGraph *gTrans   = new TMultiGraph();
+    
+    // For formatting in a loop
+    vector < TMultiGraph* > gEasy = {gDose, gNeutron, gHadron, gTrans};
+    
+    //Loop over rods
+    for(int rod = 0; rod < nRods; rod++){
+        vRod[rod]->Process(option , 0);
+        
+        string title =  RodNames[rod] + RodDescription[rod];
+       
+        gDose->Add(    ScatterPlot( vRod[rod]->yAxis, *vRod[rod]->dose,            vRod[rod]->yAxisErr, *vRod[rod]->doseErr,             title, 20 + rod, Color[rod] ) );
+        gNeutron->Add( ScatterPlot( vRod[rod]->yAxis, *vRod[rod]->neutron,         vRod[rod]->yAxisErr,  vRod[rod]->neutronErr,          title, 20 + rod, Color[rod] ) );
+        gHadron->Add(  ScatterPlot( vRod[rod]->yAxis, *vRod[rod]->hadron,          vRod[rod]->yAxisErr,  vRod[rod]->hadronErr,           title, 20 + rod, Color[rod] ) );
+        gTrans->Add(   ScatterPlot( vRod[rod]->yAxis,  vRod[rod]->transmission[0], vRod[rod]->yAxisErr,  vRod[rod]->transmissionErr[0],  title, 20 + rod, Color[rod] ) );
+    
+    }//End loop over rods
+    
+    //////////////////////   Plot the assembled data   ///////////////////////
+    
+    TCanvas *c = new TCanvas("All","All",1920,1080);
+    c->Divide(2,2);
+    
+    // Draw all graphs and set the X-range from 0-40cm. Set doses to LogY
+    for(int pad = 0; pad < nTypes; pad++){
+        c->cd( pad + 1 );
+        gEasy[pad]->SetTitle( GraphTitle[pad].c_str() );
+        gEasy[pad]->Draw("ap");
+        gEasy[pad]->GetHistogram()->SetAxisRange(0,40,"X");
+    }
+    
+    // Legend locations
+    float top = 0.9;
+    float bottom = 0.18;
+    float left = 0.18;
+    float right = 0.8;
+    float width = 0.35;
+    float height = 0.20;
+    
+    c->cd(1);
+    gDose->GetHistogram()->SetAxisRange( 0.1, 1.1e+4, "Y");
+    gPad->SetLogy();
+    TLegend *legD = gPad->BuildLegend(right - width, top - height, right, top, "Dose");
+    legD->SetBorderSize(0);
+    
+    c->cd(2);
+    gNeutron->GetHistogram()->SetAxisRange( 1e+15, 2.5e+16, "Y");
+    gPad->SetLogy();
+    gNeutron->GetHistogram()->GetYaxis()->SetMoreLogLabels();
+    TLegend *legN = gPad->BuildLegend(left, bottom, left + width, bottom + height, "Neutron Fluence");
+    legN->SetBorderSize(0);
+    
+    c->cd(3);
+    gHadron->GetHistogram()->SetAxisRange( 5e+11, 3e+15, "Y");
+    gPad->SetLogy();
+    TLegend *legH = gPad->BuildLegend(right - width, top - height, right, top, "Hadron Fluence");
+    legH->SetBorderSize(0);
+    
+    c->cd(4);
+    TLegend *legT = gPad->BuildLegend(right - width, bottom, right, bottom + height, "240nm Transmission");
+    legT->SetBorderSize(0);
+    gTrans->GetHistogram()->GetYaxis()->SetRangeUser(0.0,1.1);
+    
+    for(int rod = 0; rod < nRods; rod++){
+        delete vRod[rod];
+    }
+}
+
+/** Draw transverse spectra from each rod on a single pad
+ *
+ *
+ */
+void crossPlots(int pos = 3){
+    
+    SetAtlasStyle();
+    
+    TCanvas *c = new TCanvas("name","title", 600, 800);
+    string axisTitle = "; Wavelength (nm); Relative Transmission";
+    
+    //Make the BRAN Rods
+    vector< BRANRod* > vRod(nRods,0);
+    
+    for(int rod = 0; rod < nRods; rod++){
+        vRod[rod] = new BRANRod( (TTree*)f->Get( RodNames[rod].c_str() ), Control->CloneTree() );
+        vRod[rod]->Process(option, 0);
+        vRod[rod]->vSpectra[pos]->Draw("same");
+        vRod[rod]->vSpectra[pos]->SetTitle( (RodNames[rod] + RodDescription[rod] + axisTitle).c_str() );
+        vRod[rod]->vSpectra[pos]->SetAxisRange(198, 900, "X");
+        vRod[rod]->vSpectra[pos]->SetAxisRange(0, 1.15, "Y");
+        vRod[rod]->vSpectra[pos]->SetLineColor(Color[rod]);
+        vRod[rod]->vSpectra[pos]->SetLineWidth(2);
+        vRod[rod]->vSpectra[pos]->Smooth(10);
+    }
+    // Legend locations
+    float top = 0.9;
+    float bottom = 0.18;
+    float left = 0.18;
+    float right = 0.83;
+    float width = 0.55;
+    float height = 0.50;
+    
+    TLegend *leg = gPad->BuildLegend(right - width, bottom, right, bottom + height, "");
+    leg->SetBorderSize(0);
+    
+    
+}
+
+
+/** Draw the longitudinal spectra from each rod on one pad
+ *
+ *
+ */
+void longPlots(){
+    
+    SetAtlasStyle();
+    
+    TCanvas *c = new TCanvas("name","title", 600, 800);
+    TH1F* h[4];
+    string str;
+    string axisTitle = "; Wavelength (nm); Relative Transmission";
+    
+    for(int rod = 2; rod <= 5; rod++){
+        ifstream file( Form("data/RawInput/optical/rod%dlongitudinal.txt", rod ) );
+        h[rod] = new TH1F( Form("Rod%d", rod ), (RodNames[rod-2] + RodDescription[rod - 2 ] + axisTitle).c_str(), 3648, 197.2888,  1027.23596);
+
+        // Read the file
+        if(!file.is_open()){
+            cout << "File didn't open" << endl;
+            return;
+        }
+        
+        //Pull the data from the file
+        int bin = 0;
+        while(file){
+            getline(file,str);
+            h[rod]->SetBinContent( bin, atof( str.c_str() ) );
+            bin++;
+        }//End line loop
+        file.close();
+        
+        
+        /////////////////  Set the tail to 1 /////////////////
+        int lowerLimit = h[rod]->GetXaxis()->FindBin(850);
+        int upperLimit = h[rod]->GetXaxis()->FindBin(900);
+        
+        float average = h[rod]->GetBinContent(lowerLimit - 1);
+        for(bin = lowerLimit; bin < upperLimit; bin++ ){
+            average = (average + h[rod]->GetBinContent( bin ) )/2.0;
+        }
+        
+        for(bin = 0; bin < 3648; bin++){
+            h[rod]->SetBinContent(bin, h[rod]->GetBinContent(bin) - (average - 1));
+        }
+
+
+        h[rod]->Draw("same");
+        h[rod]->Smooth(10);
+        h[rod]->SetAxisRange(197, 900, "X");
+        h[rod]->SetAxisRange(0, 1.15, "Y");
+        h[rod]->SetLineColor(Color[rod-2]);
+    }
+
+    TLegend *l = gPad->BuildLegend();
+    l->SetBorderSize(0);
+
+}
+/** Draws plots of the sample/control for a given position
+ *
+ *
+ */
+void DrawReference(int _pos){
+    
+    SetAtlasStyle();
+ 
+    string legLabels[] = {"After background subtraction",
+                          "Before background subtraction",
+                          "Background to be subtracted"};
+    
+    //Make the BRAN Rods
+    vector< BRANRod* > vRod(nRods,0);
+    
+    for(int rod = 0; rod < nRods; rod++){
+        vRod[rod] = new BRANRod( (TTree*)f->Get( RodNames[rod].c_str() ), Control->CloneTree() );
+    }
+    
+    
+    TCanvas *cRef = new TCanvas("yPos","yPos",1920,1080);
+    cRef->Divide(2,2);
+    
+    // Legend locations
+    float top = 0.9;
+    float bottom = 0.18;
+    float left = 0.18;
+    float right = 0.8;
+    float width = 0.35;
+    float height = 0.20;
+    
+    //Loop over rods
+    for(int rod = 0; rod < nRods; rod++){
+        vRod[rod]->Process(option, 0);
+        
+        cRef->cd(rod + 1);
+        THStack* h = vRod[rod]->DrawOne(_pos, Form("Rod%d", rod + 1) );
+        h->GetXaxis()->SetTitle("Wavelength (nm)");
+        h->GetYaxis()->SetTitle("Relative Transmission");
+        h->Draw("nostack");
+
+        TLegend *l = gPad->BuildLegend(right - width, bottom, right, bottom + height);
+        TList *p = l->GetListOfPrimitives();
+        l->SetBorderSize(0);
+
+        
+        
+        TIter next(p);
+        TObject *obj;
+        TLegendEntry *le;
+        int i = 0;
+
+        while ((obj = next())) {
+            le = (TLegendEntry*)obj;
+            le->SetLabel( legLabels[i].c_str() );
+            i++;
+        }
+        
+        l->SetHeader( Form( "Rod%d: %d.5cm", rod + 1, _pos + 2 ), "C");
+        
+        // Draw a horizontal line at y = 1
+        TLine *line = new TLine( 198, 1.0, 900, 1.0);
+        line->SetLineWidth(2);
+        line->Draw("same");
+    }
+}
+
+/**
+ *  Draws Plots of all raw values vs y-position
+ *
+ */
+void ComparePlot(){
+    
+    SetAtlasStyle();
+ 
+    string legLabels[] = {"Transmission",
+                          "Dose",
+                          "Neutron Fluence",
+                          "Hadron Fluence"};
+    
+    //Make the BRAN Rods
+    vector< BRANRod* > vRod(nRods,0);
+    
+    for(int rod = 0; rod < nRods; rod++){
+        vRod[rod] = new BRANRod( (TTree*)f->Get( RodNames[rod].c_str() ), Control->CloneTree() );
+    }
+    
+    
+    TCanvas *c = new TCanvas("yPos","yPos",1920,1080);
+    c->Divide(2,2);
+    
+    // Legend locations
+    float top = 0.9;
+    float bottom = 0.18;
+    float left = 0.18;
+    float right = 0.8;
+    float width = 0.35;
+    float height = 0.20;
+        
+    //////////////////////   Assemble the data   ///////////////////////
+
+    //In order, the graph types are: Dose, neutrons, hadrons, y-position
+    TMultiGraph *g[nRods];
+    
+    //Loop over rods
+    for(int rod = 0; rod < nRods; rod++){
+        vRod[rod]->Process(option , 0);
+        g[rod] = new TMultiGraph();
+        
+        string title =  RodNames[rod] + RodDescription[rod];
+            
+        g[rod]->Add( ScatterPlot( vRod[rod]->yAxis, *vRod[rod]->dose,            vRod[rod]->yAxisErr, *vRod[rod]->doseErr,             title, 20 + rod, Color[rod] ) );
+        g[rod]->Add( ScatterPlot( vRod[rod]->yAxis, *vRod[rod]->neutron,         vRod[rod]->yAxisErr,  vRod[rod]->neutronErr,          title, 20 + rod, Color[rod] ) );
+        g[rod]->Add( ScatterPlot( vRod[rod]->yAxis, *vRod[rod]->hadron,          vRod[rod]->yAxisErr,  vRod[rod]->hadronErr,           title, 20 + rod, Color[rod] ) );
+        g[rod]->Add( ScatterPlot( vRod[rod]->yAxis,  vRod[rod]->transmission[0], vRod[rod]->yAxisErr,  vRod[rod]->transmissionErr[0],  title, 20 + rod, Color[rod] ) );
+    
+    }//End loop over rods
+    
+    
+}
+
+/** Draws a surface plot of all transmission spectra for a given rod axis are:
+ *    x - Wavelength (nm)
+ *    y - Selected by option. Options are:
+ *        "y" -       rod y axis
+ *        "dose" -    uhh... dose
+ *        "neutron" - neutron fluence
+ *        "hadron" -  hadron fluence
+ *    z - Relative transmission
+ */
+void SurfacePlot(Option_t Option){
+    
+    SetAtlasStyle();
+    
+    string yaxis[] = {"y-position (cm)",
+                      "Dose (MRad)",
+                      "Neutron Fluence (cm^{-2})",
+                      "Hadron Fluence (cm^{-2})"};
+    
+    // Sort the option and make it numeric
+    TString opt = Option;
+    opt.ToUpper();
+    int nOpt;
+    if(opt.Contains("Y")){ nOpt = 1; } // Y-position
+    if(opt.Contains("S")){ nOpt = 2; } // Dose
+    if(opt.Contains("U")){ nOpt = 3; } // Neutron Fluence
+    if(opt.Contains("A")){ nOpt = 4; } // Hadron Fluence
+    
+    string axis = ";Wavelength (nm);" + yaxis[nOpt - 1] + ";Relative Transmission";
+    
+    TCanvas *c = new TCanvas("3D","3D",1920,1080);
+    c->Divide(2,2);
+    TGraph2D *g[nRods];
+    
+    
+    //Make the BRAN Rods
+    vector< BRANRod* > vRod(nRods,0);
+    
+    for(int rod = 0; rod < nRods; rod++){
+        vRod[rod] = new BRANRod( (TTree*)f->Get( RodNames[rod].c_str() ), Control->CloneTree() );
+        vRod[rod]->Process(option, 0);
+        g[rod] = new TGraph2D();
+        
+        vector < double > yPtr;
+        if( nOpt == 1 ){ yPtr =  vRod[rod]->yAxis; }
+        if( nOpt == 2 ){ yPtr = *vRod[rod]->dose; }
+        if( nOpt == 3 ){ yPtr = *vRod[rod]->neutron; }
+        if( nOpt == 4 ){ yPtr = *vRod[rod]->hadron; }
+
+        
+        // Loop over all x (wavelength) for each y value and set the point in x,y,z
+        int point = 0;
+        for(int y = 0; y < vRod[rod]->nSpectra; y++){
+            //int nBins = vRod[rod]->vSpectra[y]->GetNbinsX();
+            int nBins = 3130;
+            for(int bin = 1; bin < nBins; bin++){
+      
+                // Get the points individually and avoid a super long function call
+                double xVal = vRod[rod]->vSpectra[y]->GetXaxis()->GetBinCenter(bin);
+                double yVal = yPtr.at(y);
+                double zVal = vRod[rod]->vSpectra[y]->GetBinContent(bin);
+                if( isnan(zVal) || isinf(zVal) ){cout << bin << ", " << zVal << endl;}
+                g[rod]->SetPoint(point, xVal, yVal, zVal);
+                point++;
+            }
+        }
+        
+        c->cd(rod+1);
+        
+        string name = RodNames[rod] + RodDescription[rod] + axis;
+        g[rod]->SetTitle( name.c_str() );
+        g[rod]->GetHistogram()->Draw("SURF2");
+        //g[rod]->GetHistogram()->GetXaxis()->SetRangeUser( 198, 900);
+        //g[rod]->GetHistogram()->GetZaxis()->SetRangeUser( 0, 1.1);
+
+        gStyle->SetPalette(61);
+        //if(nOpt != 1){ gPad->SetLogy(); }
+        //if(nOpt == 3){ g[rod]->GetHistogram()->GetYaxis()->SetMoreLogLabels(); }
+        gPad->Modified();
+        gPad->Update();
+        c->Print( Form("Rod%d_3d.png",rod) );
+    }
+
+    
+}
+
+/**  Output data points to .csv
+ *
+ *
+ */
+void Print(){
+    
+    SetAtlasStyle();
+    
+    string name[] = {"output/Rod2.csv", "output/Rod3.csv", "output/Rod4.csv", "output/Rod5.csv"};
+
+    
+    //Make the BRAN Rods
+    vector< BRANRod* > vRod(nRods,0);
+    
+    for(int rod = 0; rod < nRods; rod++){
+        vRod[rod] = new BRANRod( (TTree*)f->Get( RodNames[rod].c_str() ), Control->CloneTree() );
+    }
+    
+    for(int rod = 0; rod < nRods; rod++){
+        vRod[rod]->Process(option , 0);
+        ofstream myfile( name[rod].c_str() );
+        
+        myfile << "Y-position, Transmission, Dose, Neutron Fluence, Hadron Fluence" << endl;
+        
+        for(int i = 0; i < 36; i++){
+            myfile << vRod[rod]->yAxis[i]           << ", ";
+            myfile << vRod[rod]->transmission[0][i] << ", ";
+            myfile << vRod[rod]->dose->at(i)        << ", ";
+            myfile << vRod[rod]->neutron->at(i)     << ", ";
+            myfile << vRod[rod]->hadron->at(i)      << endl;
+        }
+        myfile.close();   
+    }
+}
+
+
+/** 
+ * @brief Draws a scatter plot from two vectors 
+ *
+ * @param _vx - Vector of x values
+ * @param _vy - Vector of y values
+ * @param _ex - Vector of x error values
+ * @param _ey - Vector of y error values
+ * @param title - Title of the output graph
+ * @param style - Style of marker to be used
+ * @param color - Color of the marker to be used
+ */
+TGraphErrors* ScatterPlot( vector< double > _vx, vector< double > _vy, vector< double > _ex, vector< double > _ey, string title, int style, int color){
+    
+    if( _vx.size() != _vy.size() ){
+        cerr << "Vectors aren't the same size. This may not work" << endl;
+        cerr << "vx is " << _vx.size() << " long, and vy is " << _vy.size() << " long" << endl;
+    }
+    
+    //Declare TVectors using the input std::vectors
+    TVectorD *TVx = new TVectorD(_vx.size(),&_vx[0]);
+    TVectorD *TEx = new TVectorD(_ex.size(),&_ex[0]);
+    TVectorD *TVy = new TVectorD(_vy.size(),&_vy[0]);
+    TVectorD *TEy = new TVectorD(_ey.size(),&_ey[0]);
+    
+    TGraphErrors *g = new TGraphErrors(*TVx, *TVy, *TEx, *TEy);
+    g->SetTitle( title.c_str() );
+    g->SetMarkerStyle( style );
+    g->SetMarkerColor( color );
+    g->SetLineColor( color );
+    g->SetMarkerSize( 1.5 );
+    g->SetFillColor( color );
+    g->SetFillColorAlpha( color, 0.3 );
+    return g;
+}
\ No newline at end of file
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..4a37b5163c5f7d9897fe0db0f21d3887d5164828
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,25 @@
+cmake_minimum_required (VERSION 2.8)
+project (BRAN_done_right)
+set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR})
+
+
+#Root support
+find_package (ROOT REQUIRED)
+include_directories (${ROOT_INCLUDE_DIR})
+
+
+FILE(GLOB_RECURSE PA_INC
+    "${CMAKE_SOURCE_DIR}/include/*.h"
+)
+
+FILE(GLOB_RECURSE DEPENDENCIES
+    "${CMAKE_SOURCE_DIR}/include/*.h"
+    "${CMAKE_SOURCE_DIR}/src/*.cpp"
+)
+
+add_executable(runBRAN ${DEPENDENCIES} ${PROJECT_SOURCE_DIR}/src/BRANRod.cpp)
+TARGET_LINK_LIBRARIES(runBRAN ${ROOT_LIBRARIES})
+install(TARGETS runBRAN RUNTIME DESTINATION bin)
+
+
+
diff --git a/cmakeModules/FindROOT.cmake b/cmakeModules/FindROOT.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..783cf9bf32947242a6244fbd7caa5dac46039866
--- /dev/null
+++ b/cmakeModules/FindROOT.cmake
@@ -0,0 +1,269 @@
+# - Find ROOT instalation
+# This module tries to find the ROOT installation on your system.
+# It tries to find the root-config script which gives you all the needed information.
+# If the system variable ROOTSYS is set this is straight forward.
+# If not the module uses the pathes given in ROOT_CONFIG_SEARCHPATH.
+# If you need an other path you should add this path to this varaible.
+# The root-config script is then used to detect basically everything else.
+# This module defines a number of key variables and macros.
+
+# F.Uhlig@gsi.de (fairroot.gsi.de)
+
+
+MESSAGE(STATUS "Looking for Root...")
+
+SET(ROOT_CONFIG_SEARCHPATH
+  ${SIMPATH}/tools/root/bin
+  $ENV{ROOTSYS}/bin
+)
+
+SET(ROOT_DEFINITIONS "")
+
+SET(ROOT_INSTALLED_VERSION_TOO_OLD FALSE)
+
+SET(ROOT_CONFIG_EXECUTABLE ROOT_CONFIG_EXECUTABLE-NOTFOUND)
+
+FIND_PROGRAM(ROOT_CONFIG_EXECUTABLE NAMES root-config PATHS
+   ${ROOT_CONFIG_SEARCHPATH}
+   NO_DEFAULT_PATH)
+
+IF (${ROOT_CONFIG_EXECUTABLE} MATCHES "ROOT_CONFIG_EXECUTABLE-NOTFOUND")
+  MESSAGE( FATAL_ERROR "ROOT not installed in the searchpath and ROOTSYS is not set. Please
+ set ROOTSYS or add the path to your ROOT installation in the Macro FindROOT.cmake in the
+ subdirectory cmake/modules.")
+ELSE (${ROOT_CONFIG_EXECUTABLE} MATCHES "ROOT_CONFIG_EXECUTABLE-NOTFOUND")
+  STRING(REGEX REPLACE "(^.*)/bin/root-config" "\\1" test ${ROOT_CONFIG_EXECUTABLE})
+  SET( ENV{ROOTSYS} ${test})
+  set( ROOTSYS ${test})
+ENDIF (${ROOT_CONFIG_EXECUTABLE} MATCHES "ROOT_CONFIG_EXECUTABLE-NOTFOUND")
+
+
+IF (ROOT_CONFIG_EXECUTABLE)
+
+  SET(ROOT_FOUND FALSE)
+
+  EXEC_PROGRAM(${ROOT_CONFIG_EXECUTABLE} ARGS "--version" OUTPUT_VARIABLE ROOTVERSION)
+
+  MESSAGE(STATUS "Looking for Root... - found $ENV{ROOTSYS}/bin/root")
+  MESSAGE(STATUS "Looking for Root... - version ${ROOTVERSION} ")
+
+  # we need at least version 5.00/00
+  IF (NOT ROOT_MIN_VERSION)
+    SET(ROOT_MIN_VERSION "5.00/00")
+  ENDIF (NOT ROOT_MIN_VERSION)
+
+  # now parse the parts of the user given version string into variables
+  STRING(REGEX REPLACE "^([0-9]+)\\.[0-9][0-9]+\\/[0-9][0-9]+" "\\1" req_root_major_vers "${ROOT_MIN_VERSION}")
+  STRING(REGEX REPLACE "^[0-9]+\\.([0-9][0-9])+\\/[0-9][0-9]+.*" "\\1" req_root_minor_vers "${ROOT_MIN_VERSION}")
+  STRING(REGEX REPLACE "^[0-9]+\\.[0-9][0-9]+\\/([0-9][0-9]+)" "\\1" req_root_patch_vers "${ROOT_MIN_VERSION}")
+
+  # and now the version string given by qmake
+  STRING(REGEX REPLACE "^([0-9]+)\\.[0-9][0-9]+\\/[0-9][0-9]+.*" "\\1" found_root_major_vers "${ROOTVERSION}")
+  STRING(REGEX REPLACE "^[0-9]+\\.([0-9][0-9])+\\/[0-9][0-9]+.*" "\\1" found_root_minor_vers "${ROOTVERSION}")
+  STRING(REGEX REPLACE "^[0-9]+\\.[0-9][0-9]+\\/([0-9][0-9]+).*" "\\1" found_root_patch_vers "${ROOTVERSION}")
+
+  IF (found_root_major_vers LESS 5)
+    MESSAGE( FATAL_ERROR "Invalid ROOT version \"${ROOTERSION}\", at least major version 4 is required, e.g. \"5.00/00\"")
+  ENDIF (found_root_major_vers LESS 5)
+
+  # compute an overall version number which can be compared at once
+  MATH(EXPR req_vers "${req_root_major_vers}*10000 + ${req_root_minor_vers}*100 + ${req_root_patch_vers}")
+  MATH(EXPR found_vers "${found_root_major_vers}*10000 + ${found_root_minor_vers}*100 + ${found_root_patch_vers}")
+
+  IF (found_vers LESS req_vers)
+    SET(ROOT_FOUND FALSE)
+    SET(ROOT_INSTALLED_VERSION_TOO_OLD TRUE)
+  ELSE (found_vers LESS req_vers)
+    SET(ROOT_FOUND TRUE)
+  ENDIF (found_vers LESS req_vers)
+
+ENDIF (ROOT_CONFIG_EXECUTABLE)
+
+
+IF (ROOT_FOUND)
+
+  # ask root-config for the library dir
+  # Set ROOT_LIBRARY_DIR
+
+  EXEC_PROGRAM( ${ROOT_CONFIG_EXECUTABLE}
+    ARGS "--libdir"
+    OUTPUT_VARIABLE ROOT_LIBRARY_DIR_TMP )
+
+  IF(EXISTS "${ROOT_LIBRARY_DIR_TMP}")
+    SET(ROOT_LIBRARY_DIR ${ROOT_LIBRARY_DIR_TMP} )
+  ELSE(EXISTS "${ROOT_LIBRARY_DIR_TMP}")
+    MESSAGE("Warning: ROOT_CONFIG_EXECUTABLE reported ${ROOT_LIBRARY_DIR_TMP} as library path,")
+    MESSAGE("Warning: but ${ROOT_LIBRARY_DIR_TMP} does NOT exist, ROOT must NOT be installed correctly.")
+  ENDIF(EXISTS "${ROOT_LIBRARY_DIR_TMP}")
+
+  # ask root-config for the binary dir
+  EXEC_PROGRAM(${ROOT_CONFIG_EXECUTABLE}
+    ARGS "--bindir"
+    OUTPUT_VARIABLE root_bins )
+  SET(ROOT_BINARY_DIR ${root_bins})
+
+  # ask root-config for the include dir
+  EXEC_PROGRAM( ${ROOT_CONFIG_EXECUTABLE}
+    ARGS "--incdir"
+    OUTPUT_VARIABLE root_headers )
+  SET(ROOT_INCLUDE_DIR ${root_headers})
+      # CACHE INTERNAL "")
+
+  # ask root-config for the library varaibles
+  EXEC_PROGRAM( ${ROOT_CONFIG_EXECUTABLE}
+#    ARGS "--noldflags --noauxlibs --libs"
+    ARGS "--glibs"
+    OUTPUT_VARIABLE root_flags )
+
+#  STRING(REGEX MATCHALL "([^ ])+"  root_libs_all ${root_flags})
+#  STRING(REGEX MATCHALL "-L([^ ])+"  root_library ${root_flags})
+#  REMOVE_FROM_LIST(root_flags "${root_libs_all}" "${root_library}")
+
+  SET(ROOT_LIBRARIES ${root_flags})
+
+  # Make variables changeble to the advanced user
+  MARK_AS_ADVANCED( ROOT_LIBRARY_DIR ROOT_INCLUDE_DIR ROOT_DEFINITIONS)
+
+  # Set ROOT_INCLUDES
+  SET( ROOT_INCLUDES ${ROOT_INCLUDE_DIR})
+
+  SET(LD_LIBRARY_PATH ${LD_LIBRARY_PATH} ${ROOT_LIBRARY_DIR})
+
+  #######################################
+  #
+  #       Check the executables of ROOT
+  #          ( rootcint )
+  #
+  #######################################
+
+  FIND_PROGRAM(ROOT_CINT_EXECUTABLE
+    NAMES rootcint
+    PATHS ${ROOT_BINARY_DIR}
+    NO_DEFAULT_PATH
+    )
+
+ENDIF (ROOT_FOUND)
+
+
+
+  ###########################################
+  #
+  #       Macros for building ROOT dictionary
+  #
+  ###########################################
+
+MACRO (ROOT_GENERATE_DICTIONARY_OLD )
+
+   set(INFILES "")
+
+   foreach (_current_FILE ${ARGN})
+
+     IF (${_current_FILE} MATCHES "^.*\\.h$")
+       IF (${_current_FILE} MATCHES "^.*Link.*$")
+         set(LINKDEF_FILE ${_current_FILE})
+       ELSE (${_current_FILE} MATCHES "^.*Link.*$")
+         set(INFILES ${INFILES} ${_current_FILE})
+       ENDIF (${_current_FILE} MATCHES "^.*Link.*$")
+     ELSE (${_current_FILE} MATCHES "^.*\\.h$")
+       IF (${_current_FILE} MATCHES "^.*\\.cxx$")
+         set(OUTFILE ${_current_FILE})
+       ELSE (${_current_FILE} MATCHES "^.*\\.cxx$")
+         set(INCLUDE_DIRS ${INCLUDE_DIRS} -I${_current_FILE})
+       ENDIF (${_current_FILE} MATCHES "^.*\\.cxx$")
+     ENDIF (${_current_FILE} MATCHES "^.*\\.h$")
+
+   endforeach (_current_FILE ${ARGN})
+
+#  MESSAGE("INFILES: ${INFILES}")
+#  MESSAGE("OutFILE: ${OUTFILE}")
+#  MESSAGE("LINKDEF_FILE: ${LINKDEF_FILE}")
+#  MESSAGE("INCLUDE_DIRS: ${INCLUDE_DIRS}")
+
+   STRING(REGEX REPLACE "(^.*).cxx" "\\1.h" bla "${OUTFILE}")
+#   MESSAGE("BLA: ${bla}")
+   SET (OUTFILES ${OUTFILE} ${bla})
+
+   ADD_CUSTOM_COMMAND(OUTPUT ${OUTFILES}
+      COMMAND ${ROOT_CINT_EXECUTABLE}
+      ARGS -f ${OUTFILE} -c -DHAVE_CONFIG_H ${INCLUDE_DIRS} ${INFILES} ${LINKDEF_FILE} DEPENDS ${INFILES})
+
+#   MESSAGE("ROOT_CINT_EXECUTABLE has created the dictionary ${OUTFILE}")
+
+ENDMACRO (ROOT_GENERATE_DICTIONARY_OLD)
+
+  ###########################################
+  #
+  #       Macros for building ROOT dictionary
+  #
+  ###########################################
+
+MACRO (ROOT_GENERATE_DICTIONARY INFILES LINKDEF_FILE OUTFILE INCLUDE_DIRS_IN)
+
+  set(INCLUDE_DIRS)
+
+  foreach (_current_FILE ${INCLUDE_DIRS_IN})
+    set(INCLUDE_DIRS ${INCLUDE_DIRS} -I${_current_FILE})
+  endforeach (_current_FILE ${INCLUDE_DIRS_IN})
+
+
+#  MESSAGE("INFILES: ${INFILES}")
+#  MESSAGE("OutFILE: ${OUTFILE}")
+#  MESSAGE("LINKDEF_FILE: ${LINKDEF_FILE}")
+#  MESSAGE("INCLUDE_DIRS: ${INCLUDE_DIRS}")
+
+  STRING(REGEX REPLACE "^(.*)\\.(.*)$" "\\1.h" bla "${OUTFILE}")
+#  MESSAGE("BLA: ${bla}")
+  SET (OUTFILES ${OUTFILE} ${bla})
+
+
+  if (CMAKE_SYSTEM_NAME MATCHES Linux)
+    ADD_CUSTOM_COMMAND(OUTPUT ${OUTFILES}
+       COMMAND ROOTSYS=${ROOTSYS} ${ROOT_CINT_EXECUTABLE}
+       ARGS -f ${OUTFILE} -c -DHAVE_CONFIG_H ${INCLUDE_DIRS} ${INFILES} ${LINKDEF_FILE} DEPENDS ${INFILES} ${LINKDEF_FILE})
+  else (CMAKE_SYSTEM_NAME MATCHES Linux)
+    if (CMAKE_SYSTEM_NAME MATCHES Darwin)
+      ADD_CUSTOM_COMMAND(OUTPUT ${OUTFILES}
+       COMMAND DYLD_LIBRARY_PATH=${ROOT_LIBRARY_DIR} ROOTSYS=${ROOTSYS} ${ROOT_CINT_EXECUTABLE}
+       ARGS -f ${OUTFILE} -c -DHAVE_CONFIG_H ${INCLUDE_DIRS} ${INFILES} ${LINKDEF_FILE} DEPENDS ${INFILES} ${LINKDEF_FILE})
+    endif (CMAKE_SYSTEM_NAME MATCHES Darwin)
+  endif (CMAKE_SYSTEM_NAME MATCHES Linux)
+
+ENDMACRO (ROOT_GENERATE_DICTIONARY)
+
+MACRO (GENERATE_ROOT_TEST_SCRIPT SCRIPT_FULL_NAME)
+
+  get_filename_component(path_name ${SCRIPT_FULL_NAME} PATH)
+  get_filename_component(file_extension ${SCRIPT_FULL_NAME} EXT)
+  get_filename_component(file_name ${SCRIPT_FULL_NAME} NAME_WE)
+  set(shell_script_name "${file_name}.sh")
+
+  #MESSAGE("PATH: ${path_name}")
+  #MESSAGE("Ext: ${file_extension}")
+  #MESSAGE("Name: ${file_name}")
+  #MESSAGE("Shell Name: ${shell_script_name}")
+
+  string(REPLACE ${PROJECT_SOURCE_DIR}
+         ${PROJECT_BINARY_DIR} new_path ${path_name}
+        )
+
+  #MESSAGE("New PATH: ${new_path}")
+
+  file(MAKE_DIRECTORY ${new_path}/data)
+
+  CONVERT_LIST_TO_STRING(${LD_LIBRARY_PATH})
+  set(MY_LD_LIBRARY_PATH ${output})
+  set(my_script_name ${SCRIPT_FULL_NAME})
+
+  if(CMAKE_SYSTEM MATCHES Darwin)
+    configure_file(${PROJECT_SOURCE_DIR}/cmake/scripts/root_macro_macos.sh.in
+                   ${new_path}/${shell_script_name}
+                  )
+  else(CMAKE_SYSTEM MATCHES Darwin)
+    configure_file(${PROJECT_SOURCE_DIR}/cmake/scripts/root_macro.sh.in
+                   ${new_path}/${shell_script_name}
+                  )
+  endif(CMAKE_SYSTEM MATCHES Darwin)
+
+  EXEC_PROGRAM(/bin/chmod ARGS "u+x  ${new_path}/${shell_script_name}")
+
+ENDMACRO (GENERATE_ROOT_TEST_SCRIPT)
diff --git a/cmakeModules/FindXerces.cmake b/cmakeModules/FindXerces.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..fb7569883c08482bb95e6c05bed17e35ca92573d
--- /dev/null
+++ b/cmakeModules/FindXerces.cmake
@@ -0,0 +1,105 @@
+# - Try to find Xerces-C
+# Once done this will define
+#
+#  XERCESC_FOUND - system has Xerces-C
+#  XERCESC_INCLUDE - the Xerces-C include directory
+#  XERCESC_LIBRARY - Link these to use Xerces-C
+#  XERCESC_VERSION - Xerces-C found version
+
+IF (XERCESC_INCLUDE AND XERCESC_LIBRARY)
+# in cache already
+SET(XERCESC_FIND_QUIETLY TRUE)
+ENDIF (XERCESC_INCLUDE AND XERCESC_LIBRARY)
+
+OPTION(XERCESC_STATIC "Set to ON to link your project with static library (instead of DLL)." ON)
+
+IF (NOT  ${XERCESC_WAS_STATIC} STREQUAL ${XERCESC_STATIC})
+UNSET(XERCESC_LIBRARY CACHE)
+UNSET(XERCESC_LIBRARY_DEBUG CACHE)
+ENDIF (NOT  ${XERCESC_WAS_STATIC} STREQUAL ${XERCESC_STATIC})
+
+SET(XERCESC_WAS_STATIC ${XERCESC_STATIC} CACHE INTERNAL "" )
+
+FIND_PATH(XERCESC_INCLUDE NAMES xercesc/util/XercesVersion.hpp
+PATHS 
+$ENV{XERCESC_INCLUDE_DIR}
+${XERCESC_INCLUDE_DIR}
+ /usr/local/include
+ /usr/include
+)
+
+IF (XERCESC_STATIC)
+FIND_LIBRARY(XERCESC_LIBRARY NAMES xerces-c_static_3 xerces-c-3.1 xerces-c
+ PATHS
+ $ENV{XERCESC_LIBRARY_DIR}
+ ${XERCESC_LIBRARY_DIR}
+ /usr/lib
+ /usr/local/lib
+)
+FIND_LIBRARY(XERCESC_LIBRARY_DEBUG NAMES xerces-c_static_3D xerces-c-3.1D
+ PATHS
+ $ENV{XERCESC_LIBRARY_DIR}
+ ${XERCESC_LIBRARY_DIR}
+ /usr/lib
+ /usr/local/lib
+)
+ADD_DEFINITIONS( -DXERCES_STATIC_LIBRARY )
+ELSE (XERCESC_STATIC)
+FIND_LIBRARY(XERCESC_LIBRARY NAMES xerces-c_3
+ PATHS
+ $ENV{XERCESC_LIBRARY_DIR}
+ ${XERCESC_LIBRARY_DIR}
+)
+FIND_LIBRARY(XERCESC_LIBRARY_DEBUG NAMES xerces-c_3D
+ PATHS
+ $ENV{XERCESC_LIBRARY_DIR}
+ ${XERCESC_LIBRARY_DIR}
+)
+ENDIF (XERCESC_STATIC)
+
+IF (XERCESC_INCLUDE AND XERCESC_LIBRARY)
+SET(XERCESC_FOUND TRUE)
+ELSE (XERCESC_INCLUDE AND XERCESC_LIBRARY)
+SET(XERCESC_FOUND FALSE)
+ENDIF (XERCESC_INCLUDE AND XERCESC_LIBRARY)
+
+IF(XERCESC_FOUND)
+
+FIND_PATH(XERCESC_XVERHPPPATH NAMES XercesVersion.hpp PATHS
+ ${XERCESC_INCLUDE}
+ PATH_SUFFIXES xercesc/util)
+
+IF ( ${XERCESC_XVERHPPPATH} STREQUAL XERCESC_XVERHPPPATH-NOTFOUND )
+ SET(XERCES_VERSION "0")
+ELSE( ${XERCESC_XVERHPPPATH} STREQUAL XERCESC_XVERHPPPATH-NOTFOUND )
+ FILE(READ ${XERCESC_XVERHPPPATH}/XercesVersion.hpp XVERHPP)
+
+ STRING(REGEX MATCHALL "\n *#define XERCES_VERSION_MAJOR +[0-9]+" XVERMAJ
+   ${XVERHPP})
+ STRING(REGEX MATCH "\n *#define XERCES_VERSION_MINOR +[0-9]+" XVERMIN
+   ${XVERHPP})
+ STRING(REGEX MATCH "\n *#define XERCES_VERSION_REVISION +[0-9]+" XVERREV
+   ${XVERHPP})
+
+ STRING(REGEX REPLACE "\n *#define XERCES_VERSION_MAJOR +" ""
+   XVERMAJ ${XVERMAJ})
+ STRING(REGEX REPLACE "\n *#define XERCES_VERSION_MINOR +" ""
+   XVERMIN ${XVERMIN})
+ STRING(REGEX REPLACE "\n *#define XERCES_VERSION_REVISION +" ""
+   XVERREV ${XVERREV})
+
+ SET(XERCESC_VERSION ${XVERMAJ}.${XVERMIN}.${XVERREV})
+
+ENDIF ( ${XERCESC_XVERHPPPATH} STREQUAL XERCESC_XVERHPPPATH-NOTFOUND )
+
+IF(NOT XERCESC_FIND_QUIETLY)
+ MESSAGE(STATUS "Found Xerces-C: ${XERCESC_LIBRARY}")
+ MESSAGE(STATUS "              : ${XERCESC_INCLUDE}")
+ MESSAGE(STATUS "       Version: ${XERCESC_VERSION}")
+ENDIF(NOT XERCESC_FIND_QUIETLY)
+ELSE(XERCESC_FOUND)
+MESSAGE(FATAL_ERROR "Could not find Xerces-C !")
+ENDIF(XERCESC_FOUND)
+
+MARK_AS_ADVANCED(XERCESC_INCLUDE XERCESC_LIBRARY) 
+
diff --git a/include/AtlasStyle/#AtlasExample.C# b/include/AtlasStyle/#AtlasExample.C#
new file mode 100644
index 0000000000000000000000000000000000000000..95e09ae6909cfa665fafc50a8edbf3b093193881
--- /dev/null
+++ b/include/AtlasStyle/#AtlasExample.C#
@@ -0,0 +1,225 @@
+#include <iostream>
+#include <cmath>
+
+#include "Rtypes.h"
+
+#include "AtlasUtils.h"
+#include "AtlasStyle.h"
+#include "AtlasLabels.h"
+
+#ifdef __CLING__
+// these are not headers - do not treat them as such - needed for ROOT6
+#include "AtlasLabels.C"
+#include "AtlasUtils.C"
+#endif
+
+#include "TCanvas.h"
+#include "TFile.h"
+#include "TROOT.h"
+#include "TH1F.h"
+#include "TRandom.h"
+#include "TGraphErrors.h"
+
+using namespace std;
+
+const Int_t GMAX=864;
+
+const int nren=3;
+static const double mur[nren] = {1.0,0.25,4.0};
+static const double muf[nren] = {1.0,0.25,4.0};
+const unsigned int NUMPDF=41;
+
+TGraphErrors* GetGraph(Int_t ir, Int_t ifs,Int_t icut, Int_t ipdf);
+
+
+void AtlasExample() 
+{ 
+
+  #ifdef __CINT__
+    gROOT->LoadMacro("AtlasLabels.C");
+    gROOT->LoadMacro("AtlasUtils.C");
+  #endif
+
+  SetAtlasStyle();
+
+  Int_t icol1=5;
+  Int_t icol2=5;
+
+  TCanvas* c1 = new TCanvas("c1","single inclusive jets",50,50,600,600);
+  // TCanvas* c1 = new TCanvas("c1","single inclusive jets");
+  TPad* thePad = (TPad*)c1->cd();
+  thePad->SetLogy();
+
+  Double_t ymin=1.e-3;  Double_t ymax=2e7;
+  Double_t xmin=60.00;  Double_t xmax=3500.;
+  TH1F *h1 = thePad->DrawFrame(xmin,ymin,xmax,ymax);
+  h1->SetYTitle("d#sigma_{jet}/dE_{T,jet} [fb/GeV]");
+  h1->SetXTitle("E_{T,jet}  [GeV]");
+  h1->GetYaxis()->SetTitleOffset(1.4);
+  h1->GetXaxis()->SetTitleOffset(1.4);
+  //h1->GetXaxis()->SetNdivisions(5);
+  h1->Draw();
+
+  const Int_t ncut=1;
+  TGraphErrors *data[ncut];
+
+  for (Int_t icut=0; icut<ncut; icut++) { // loop over cuts
+
+    TGraphErrors *g1[nren][ncut];
+    for (Int_t ir=0; ir<nren; ir++) { // loop over ren scale
+      g1[ir][icut]= GetGraph(ir,ir,icut,0);
+      if (g1[ir][icut]) 
+	cout << g1[ir][icut]->GetTitle() << " found "  << g1[ir][icut]->GetName()  << endl;
+      else { 
+	cout << " g1 not  found " << endl; 
+	return; 
+      } 
+      g1[ir][icut]->SetLineColor(1);
+      g1[ir][icut]->SetMarkerStyle(0);
+      //g1[ir][icut]->Draw("C");
+    }
+
+    char daname[100];
+    sprintf(daname,"data_%d",icut); 
+    data[icut]=(TGraphErrors*)g1[0][icut]->Clone(daname); 
+    data[icut]->SetMarkerStyle(20);
+    data[icut]->SetMarkerColor(1);
+
+    // just invent some data
+    for (Int_t i=0; i< data[icut]->GetN(); i++) {
+      Double_t x1,y1,e,dx1=0.;
+      data[icut]->GetPoint(i,x1,y1);
+      Double_t r1 = 0.4*(gRandom->Rndm(1)+2);
+      Double_t r2 = 0.4*(gRandom->Rndm(1)+2);
+      //cout << " i= " << i << " x1= " << x1 << " y1= " << y1 << " r= " << r << endl;
+      Double_t y;
+      if (icut==0) y=r1*y1+r1*r2*r2*x1/50000.;
+      else         y=r1*y1;
+      e=sqrt(y*1000)/200;
+      data[icut]->SetPoint(i, x1,y);
+      data[icut]->SetPointError(i,dx1,e);
+    }
+    //data[icut]->Print();
+  
+    TGraphAsymmErrors* scale[ncut];
+    TGraphAsymmErrors* scalepdf[ncut];
+
+    scale[icut]=  myMakeBand(g1[0][icut],g1[1][icut],g1[2][icut]);
+    //printf(" band1: \n");
+    //scale->Print();
+
+    scalepdf[icut]=(TGraphAsymmErrors* ) scale[icut]->Clone("scalepdf");
+
+    TGraphErrors *gpdf[NUMPDF][ncut];
+    for (Int_t ipdf=0; ipdf<NUMPDF; ipdf++) {
+      gpdf[ipdf][icut]= GetGraph(0,0,icut,ipdf);
+      if (gpdf[ipdf][icut]) 
+	cout << gpdf[ipdf][icut]->GetTitle() << " found "  << gpdf[ipdf][icut]->GetName() << endl;
+      else { 
+	cout << " gpdf not  found " << endl; 
+	return; 
+      } 
+      gpdf[ipdf][icut]->SetLineColor(2);
+      gpdf[ipdf][icut]->SetLineStyle(1);
+      gpdf[ipdf][icut]->SetMarkerStyle(0);
+      myAddtoBand(gpdf[ipdf][icut],scalepdf[icut]); 
+    }
+
+    scalepdf[icut]->SetFillColor(icol2);
+    scalepdf[icut]->Draw("zE2"); 
+    scale[icut]->SetFillColor(icol1);
+    scale[icut]->Draw("zE2");
+    g1[0][icut]->SetLineWidth(3);
+    g1[0][icut]->Draw("z");
+    data[icut]->Draw("P");
+    
+  }
+
+  myText(       0.3,  0.85, 1, "#sqrt{s}= 14 TeV");
+  myText(       0.57, 0.85, 1, "|#eta_{jet}|<0.5");
+  myMarkerText( 0.55, 0.75, 1, 20, "Data 2009",1.3);
+  myBoxText(    0.55, 0.67, 0.05, icol1, "NLO QCD");
+
+  //ATLAS_LABEL(0.2,0.2); myText( 0.37,0.2,1,"Preliminary");
+
+  // new method for ATLAS labels. Use this!
+  //ATLASLabel(0.2,0.2);
+  ATLASLabel(0.2,0.2,"Preliminary");
+  //ATLASLabel(0.2,0.2,"Work in progress");
+
+  c1->Print("AtlasExample.eps");
+  c1->Print("AtlasExample.png");
+  c1->Print("AtlasExample.pdf");
+
+}
+
+TGraphErrors* GetGraph(Int_t ir, Int_t ifs,Int_t icut, Int_t ipdf) 
+{ 
+ 
+  const bool debug=0;
+
+  const char *cuts[5] = 
+    {"0.0 <= |eta| < 0.5",
+     "0.5 <= |eta| < 1.0",
+     "1.0 <= |eta| < 1.5",
+     "1.5 <= |eta| < 2.0",
+     "2.0 <= |eta| < 3.0"};
+  
+  const double mur[] = {1.0,0.25,4.0};
+  const double muf[] = {1.0,0.25,4.0};
+
+  TFile *f1 = TFile::Open("nlofiles.root");
+  if (f1&&debug) cout << " file opened " << endl;
+
+  char gname[100];
+  char tname[100];
+
+  if (debug) cout << " mur= " << mur[ir] << " muf= " << muf[ifs] 
+		  << " iut= " << icut << " ipdf= " << ipdf << endl;
+
+  if (ipdf>=0)
+    sprintf(tname," E_T (mu_r=%g, mu_f=%g);%s Pdf: %d",mur[ir],muf[ifs],cuts[icut],ipdf);
+  else
+    sprintf(tname," E_T %s Ms= %d",cuts[icut],-ipdf);
+
+  if (debug) cout << "**GetGraph: Look for: " << tname << endl;
+
+  TGraphErrors* g1 = 0;
+
+  for (int i=1; i<=GMAX; i++){ 
+    sprintf(gname,"full_%d",i);
+    // sprintf(gname,"born_%d",i);
+    sprintf(gname,"full_%d",i);
+    g1=(TGraphErrors*) f1->Get(gname);
+    if (!g1) { cout << gname << "  not found " << endl; return g1=0; } 
+    
+    const char *title=g1->GetTitle();
+    
+    if (debug){ 
+      cout << " Title= " << title << endl;
+      cout << " tname= " << tname << endl;
+      cout << " strcmp: " << strcmp(title,tname) << endl;
+    }
+
+    if (strcmp(title,tname)==0) break;
+    g1=0;
+  }
+
+  if (!g1) return 0;
+  if (debug) cout << " found: " << g1->GetTitle() << endl;  
+  
+  return g1;
+} 
+
+
+
+#ifndef __CINT__
+
+int main()  { 
+  
+  AtlasExample();
+  gPad->Print("atlas.png");
+  return 0;
+}
+
+#endif
diff --git a/include/AtlasStyle/AtlasExample.C b/include/AtlasStyle/AtlasExample.C
new file mode 100644
index 0000000000000000000000000000000000000000..95e09ae6909cfa665fafc50a8edbf3b093193881
--- /dev/null
+++ b/include/AtlasStyle/AtlasExample.C
@@ -0,0 +1,225 @@
+#include <iostream>
+#include <cmath>
+
+#include "Rtypes.h"
+
+#include "AtlasUtils.h"
+#include "AtlasStyle.h"
+#include "AtlasLabels.h"
+
+#ifdef __CLING__
+// these are not headers - do not treat them as such - needed for ROOT6
+#include "AtlasLabels.C"
+#include "AtlasUtils.C"
+#endif
+
+#include "TCanvas.h"
+#include "TFile.h"
+#include "TROOT.h"
+#include "TH1F.h"
+#include "TRandom.h"
+#include "TGraphErrors.h"
+
+using namespace std;
+
+const Int_t GMAX=864;
+
+const int nren=3;
+static const double mur[nren] = {1.0,0.25,4.0};
+static const double muf[nren] = {1.0,0.25,4.0};
+const unsigned int NUMPDF=41;
+
+TGraphErrors* GetGraph(Int_t ir, Int_t ifs,Int_t icut, Int_t ipdf);
+
+
+void AtlasExample() 
+{ 
+
+  #ifdef __CINT__
+    gROOT->LoadMacro("AtlasLabels.C");
+    gROOT->LoadMacro("AtlasUtils.C");
+  #endif
+
+  SetAtlasStyle();
+
+  Int_t icol1=5;
+  Int_t icol2=5;
+
+  TCanvas* c1 = new TCanvas("c1","single inclusive jets",50,50,600,600);
+  // TCanvas* c1 = new TCanvas("c1","single inclusive jets");
+  TPad* thePad = (TPad*)c1->cd();
+  thePad->SetLogy();
+
+  Double_t ymin=1.e-3;  Double_t ymax=2e7;
+  Double_t xmin=60.00;  Double_t xmax=3500.;
+  TH1F *h1 = thePad->DrawFrame(xmin,ymin,xmax,ymax);
+  h1->SetYTitle("d#sigma_{jet}/dE_{T,jet} [fb/GeV]");
+  h1->SetXTitle("E_{T,jet}  [GeV]");
+  h1->GetYaxis()->SetTitleOffset(1.4);
+  h1->GetXaxis()->SetTitleOffset(1.4);
+  //h1->GetXaxis()->SetNdivisions(5);
+  h1->Draw();
+
+  const Int_t ncut=1;
+  TGraphErrors *data[ncut];
+
+  for (Int_t icut=0; icut<ncut; icut++) { // loop over cuts
+
+    TGraphErrors *g1[nren][ncut];
+    for (Int_t ir=0; ir<nren; ir++) { // loop over ren scale
+      g1[ir][icut]= GetGraph(ir,ir,icut,0);
+      if (g1[ir][icut]) 
+	cout << g1[ir][icut]->GetTitle() << " found "  << g1[ir][icut]->GetName()  << endl;
+      else { 
+	cout << " g1 not  found " << endl; 
+	return; 
+      } 
+      g1[ir][icut]->SetLineColor(1);
+      g1[ir][icut]->SetMarkerStyle(0);
+      //g1[ir][icut]->Draw("C");
+    }
+
+    char daname[100];
+    sprintf(daname,"data_%d",icut); 
+    data[icut]=(TGraphErrors*)g1[0][icut]->Clone(daname); 
+    data[icut]->SetMarkerStyle(20);
+    data[icut]->SetMarkerColor(1);
+
+    // just invent some data
+    for (Int_t i=0; i< data[icut]->GetN(); i++) {
+      Double_t x1,y1,e,dx1=0.;
+      data[icut]->GetPoint(i,x1,y1);
+      Double_t r1 = 0.4*(gRandom->Rndm(1)+2);
+      Double_t r2 = 0.4*(gRandom->Rndm(1)+2);
+      //cout << " i= " << i << " x1= " << x1 << " y1= " << y1 << " r= " << r << endl;
+      Double_t y;
+      if (icut==0) y=r1*y1+r1*r2*r2*x1/50000.;
+      else         y=r1*y1;
+      e=sqrt(y*1000)/200;
+      data[icut]->SetPoint(i, x1,y);
+      data[icut]->SetPointError(i,dx1,e);
+    }
+    //data[icut]->Print();
+  
+    TGraphAsymmErrors* scale[ncut];
+    TGraphAsymmErrors* scalepdf[ncut];
+
+    scale[icut]=  myMakeBand(g1[0][icut],g1[1][icut],g1[2][icut]);
+    //printf(" band1: \n");
+    //scale->Print();
+
+    scalepdf[icut]=(TGraphAsymmErrors* ) scale[icut]->Clone("scalepdf");
+
+    TGraphErrors *gpdf[NUMPDF][ncut];
+    for (Int_t ipdf=0; ipdf<NUMPDF; ipdf++) {
+      gpdf[ipdf][icut]= GetGraph(0,0,icut,ipdf);
+      if (gpdf[ipdf][icut]) 
+	cout << gpdf[ipdf][icut]->GetTitle() << " found "  << gpdf[ipdf][icut]->GetName() << endl;
+      else { 
+	cout << " gpdf not  found " << endl; 
+	return; 
+      } 
+      gpdf[ipdf][icut]->SetLineColor(2);
+      gpdf[ipdf][icut]->SetLineStyle(1);
+      gpdf[ipdf][icut]->SetMarkerStyle(0);
+      myAddtoBand(gpdf[ipdf][icut],scalepdf[icut]); 
+    }
+
+    scalepdf[icut]->SetFillColor(icol2);
+    scalepdf[icut]->Draw("zE2"); 
+    scale[icut]->SetFillColor(icol1);
+    scale[icut]->Draw("zE2");
+    g1[0][icut]->SetLineWidth(3);
+    g1[0][icut]->Draw("z");
+    data[icut]->Draw("P");
+    
+  }
+
+  myText(       0.3,  0.85, 1, "#sqrt{s}= 14 TeV");
+  myText(       0.57, 0.85, 1, "|#eta_{jet}|<0.5");
+  myMarkerText( 0.55, 0.75, 1, 20, "Data 2009",1.3);
+  myBoxText(    0.55, 0.67, 0.05, icol1, "NLO QCD");
+
+  //ATLAS_LABEL(0.2,0.2); myText( 0.37,0.2,1,"Preliminary");
+
+  // new method for ATLAS labels. Use this!
+  //ATLASLabel(0.2,0.2);
+  ATLASLabel(0.2,0.2,"Preliminary");
+  //ATLASLabel(0.2,0.2,"Work in progress");
+
+  c1->Print("AtlasExample.eps");
+  c1->Print("AtlasExample.png");
+  c1->Print("AtlasExample.pdf");
+
+}
+
+TGraphErrors* GetGraph(Int_t ir, Int_t ifs,Int_t icut, Int_t ipdf) 
+{ 
+ 
+  const bool debug=0;
+
+  const char *cuts[5] = 
+    {"0.0 <= |eta| < 0.5",
+     "0.5 <= |eta| < 1.0",
+     "1.0 <= |eta| < 1.5",
+     "1.5 <= |eta| < 2.0",
+     "2.0 <= |eta| < 3.0"};
+  
+  const double mur[] = {1.0,0.25,4.0};
+  const double muf[] = {1.0,0.25,4.0};
+
+  TFile *f1 = TFile::Open("nlofiles.root");
+  if (f1&&debug) cout << " file opened " << endl;
+
+  char gname[100];
+  char tname[100];
+
+  if (debug) cout << " mur= " << mur[ir] << " muf= " << muf[ifs] 
+		  << " iut= " << icut << " ipdf= " << ipdf << endl;
+
+  if (ipdf>=0)
+    sprintf(tname," E_T (mu_r=%g, mu_f=%g);%s Pdf: %d",mur[ir],muf[ifs],cuts[icut],ipdf);
+  else
+    sprintf(tname," E_T %s Ms= %d",cuts[icut],-ipdf);
+
+  if (debug) cout << "**GetGraph: Look for: " << tname << endl;
+
+  TGraphErrors* g1 = 0;
+
+  for (int i=1; i<=GMAX; i++){ 
+    sprintf(gname,"full_%d",i);
+    // sprintf(gname,"born_%d",i);
+    sprintf(gname,"full_%d",i);
+    g1=(TGraphErrors*) f1->Get(gname);
+    if (!g1) { cout << gname << "  not found " << endl; return g1=0; } 
+    
+    const char *title=g1->GetTitle();
+    
+    if (debug){ 
+      cout << " Title= " << title << endl;
+      cout << " tname= " << tname << endl;
+      cout << " strcmp: " << strcmp(title,tname) << endl;
+    }
+
+    if (strcmp(title,tname)==0) break;
+    g1=0;
+  }
+
+  if (!g1) return 0;
+  if (debug) cout << " found: " << g1->GetTitle() << endl;  
+  
+  return g1;
+} 
+
+
+
+#ifndef __CINT__
+
+int main()  { 
+  
+  AtlasExample();
+  gPad->Print("atlas.png");
+  return 0;
+}
+
+#endif
diff --git a/include/AtlasStyle/AtlasExample.eps b/include/AtlasStyle/AtlasExample.eps
new file mode 100644
index 0000000000000000000000000000000000000000..6aeb60b797dbcf6e491f173d7c555d3318574254
--- /dev/null
+++ b/include/AtlasStyle/AtlasExample.eps
@@ -0,0 +1,154 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%BoundingBox:  0 0 567 544
+%%Title: AtlasExample.eps: single inclusive jets
+%%Creator: ROOT Version 6.04/14
+%%CreationDate: Fri May  5 00:42:23 2017
+%%DocumentNeededResources: ProcSet (FontSetInit)
+%%EndComments
+%%BeginProlog
+80 dict begin
+/s {stroke} def /l {lineto} def /m {moveto} def /t {translate} def
+/r {rotate} def /rl {roll}  def /R {repeat} def
+/d {rlineto} def /rm {rmoveto} def /gr {grestore} def /f {eofill} def
+/c {setrgbcolor} def /black {0 setgray} def /sd {setdash} def
+/cl {closepath} def /sf {scalefont setfont} def /lw {setlinewidth} def
+/box {m dup 0 exch d exch 0 d 0 exch neg d cl} def
+/NC{systemdict begin initclip end}def/C{NC box clip newpath}def
+/bl {box s} def /bf {gsave box gsave f grestore 1 lw [] 0 sd s grestore} def /Y { 0 exch d} def /X { 0 d} def 
+/K {{pop pop 0 moveto} exch kshow} bind def
+/ita {/ang 15 def gsave [1 0 ang dup sin exch cos div 1 0 0] concat} def 
+/mp {newpath /y exch def /x exch def} def
+/side {[w .77 mul w .23 mul] .385 w mul sd w 0 l currentpoint t -144 r} def
+/mr {mp x y w2 0 360 arc} def /m24 {mr s} def /m20 {mr f} def
+/mb {mp x y w2 add m w2 neg 0 d 0 w neg d w 0 d 0 w d cl} def
+/mt {mp x y w2 add m w2 neg w neg d w 0 d cl} def
+/m21 {mb f} def /m25 {mb s} def /m22 {mt f} def /m26{mt s} def
+/m23 {mp x y w2 sub m w2 w d w neg 0 d cl f} def
+/m27 {mp x y w2 add m w3 neg w2 neg d w3 w2 neg d w3 w2 d cl s} def
+/m28 {mp x w2 sub y w2 sub w3 add m w3 0 d  0 w3 neg d w3 0 d 0 w3 d w3 0 d  0 w3 d w3 neg 0 d 0 w3 d w3 neg 0 d 0 w3 neg d w3 neg 0 d cl s } def
+/m29 {mp gsave x w2 sub y w2 add w3 sub m currentpoint t 4 {side} repeat cl fill gr} def
+/m30 {mp gsave x w2 sub y w2 add w3 sub m currentpoint t 4 {side} repeat cl s gr} def
+/m31 {mp x y w2 sub m 0 w d x w2 sub y m w 0 d x w2 sub y w2 add m w w neg d x w2 sub y w2 sub m w w d s} def
+/m32 {mp x y w2 sub m w2 w d w neg 0 d cl s} def
+/m33 {mp x y w2 add m w3 neg w2 neg d w3 w2 neg d w3 w2 d cl f} def
+/m34 {mp x w2 sub y w2 sub w3 add m w3 0 d  0 w3 neg d w3 0 d 0 w3 d w3 0 d  0 w3 d w3 neg 0 d 0 w3 d w3 neg 0 d 0 w3 neg d w3 neg 0 d cl f } def
+/m2 {mp x y w2 sub m 0 w d x w2 sub y m w 0 d s} def
+/m5 {mp x w2 sub y w2 sub m w w d x w2 sub y w2 add m w w neg d s} def
+%%IncludeResource: ProcSet (FontSetInit)
+%%IncludeResource: font Times-Roman
+%%IncludeResource: font Times-Italic
+%%IncludeResource: font Times-Bold
+%%IncludeResource: font Times-BoldItalic
+%%IncludeResource: font Helvetica
+%%IncludeResource: font Helvetica-Oblique
+%%IncludeResource: font Helvetica-Bold
+%%IncludeResource: font Helvetica-BoldOblique
+%%IncludeResource: font Courier
+%%IncludeResource: font Courier-Oblique
+%%IncludeResource: font Courier-Bold
+%%IncludeResource: font Courier-BoldOblique
+%%IncludeResource: font Symbol
+%%IncludeResource: font ZapfDingbats
+/reEncode {exch findfont dup length dict begin {1 index /FID eq  {pop pop} {def} ifelse } forall /Encoding exch def currentdict end dup /FontName get exch definefont pop } def [/Times-Bold /Times-Italic /Times-BoldItalic /Helvetica /Helvetica-Oblique
+ /Helvetica-Bold /Helvetica-BoldOblique /Courier /Courier-Oblique /Courier-Bold /Courier-BoldOblique /Times-Roman /AvantGarde-Book /AvantGarde-BookOblique /AvantGarde-Demi /AvantGarde-DemiOblique /Bookman-Demi /Bookman-DemiItalic /Bookman-Light
+ /Bookman-LightItalic /Helvetica-Narrow /Helvetica-Narrow-Bold /Helvetica-Narrow-BoldOblique /Helvetica-Narrow-Oblique /NewCenturySchlbk-Roman /NewCenturySchlbk-Bold /NewCenturySchlbk-BoldItalic /NewCenturySchlbk-Italic /Palatino-Bold
+ /Palatino-BoldItalic /Palatino-Italic /Palatino-Roman ] {ISOLatin1Encoding reEncode } forall
+%%EndProlog
+%%BeginSetup
+%%EndSetup
+newpath  gsave  .25 .25 scale  gsave  0 0 t black[  ] 0 sd 3 lw 1 1 1 c 2268 2177 0 0 bf black 1 1 1 c 1791 1720 363 348 bf black 1791 1720 363 348 bl 6 lw 1 1 1 c black 363 348 m 1791 X s 3 lw 363 348 m 1791 X s
+ gsave  2268 2177 0 0 C 1839.2 87.2199 t 0 r /Helvetica findfont 102.389 sf 0 0 m (  [GeV]) show NC gr 
+ gsave  2268 2177 0 0 C 1706.48 56.8825 t 0 r /Helvetica findfont 68.259 sf 0 0 m (T,jet) show NC gr 
+ gsave  2268 2177 0 0 C 1642.01 87.2199 t 0 r /Helvetica findfont 102.389 sf 0 0 m (E) show NC gr  592 400 m -52 Y s 644 374 m -26 Y s 696 374 m -26 Y s 748 374 m -26 Y s 800 374 m -26 Y s 852 400 m -52 Y s 904 374 m -26 Y s 957 374 m -26 Y s 1009
+ 374 m -26 Y s 1061 374 m -26 Y s 1113 400 m -52 Y s 1165 374 m -26 Y s 1217 374 m -26 Y s 1269 374 m -26 Y s 1321 374 m -26 Y s 1373 400 m -52 Y s 1425 374 m -26 Y s 1477 374 m -26 Y s 1529 374 m -26 Y s 1581 374 m -26 Y s 1634 400 m -52 Y s 1686
+ 374 m -26 Y s 1738 374 m -26 Y s 1790 374 m -26 Y s 1842 374 m -26 Y s 1894 400 m -52 Y s 1946 374 m -26 Y s 1998 374 m -26 Y s 2050 374 m -26 Y s 2102 374 m -26 Y s 2154 400 m -52 Y s 592 400 m -52 Y s 540 374 m -26 Y s 488 374 m -26 Y s 436 374 m
+ -26 Y s 384 374 m -26 Y s
+ gsave  2268 2177 0 0 C 508.151 254.075 t 0 r /Helvetica findfont 102.389 sf 0 0 m (500) show NC gr 
+ gsave  2268 2177 0 0 C 735.681 254.075 t 0 r /Helvetica findfont 102.389 sf 0 0 m (1000) show NC gr 
+ gsave  2268 2177 0 0 C 997.34 254.075 t 0 r /Helvetica findfont 102.389 sf 0 0 m (1500) show NC gr 
+ gsave  2268 2177 0 0 C 1259 254.075 t 0 r /Helvetica findfont 102.389 sf 0 0 m (2000) show NC gr 
+ gsave  2268 2177 0 0 C 1516.87 254.075 t 0 r /Helvetica findfont 102.389 sf 0 0 m (2500) show NC gr 
+ gsave  2268 2177 0 0 C 1778.53 254.075 t 0 r /Helvetica findfont 102.389 sf 0 0 m (3000) show NC gr 
+ gsave  2268 2177 0 0 C 2040.19 254.075 t 0 r /Helvetica findfont 102.389 sf 0 0 m (3500) show NC gr  363 2068 m 1791 X s 592 2016 m 52 Y s 644 2042 m 26 Y s 696 2042 m 26 Y s 748 2042 m 26 Y s 800 2042 m 26 Y s 852 2016 m 52 Y s 904 2042 m 26 Y s
+ 957 2042 m 26 Y s 1009 2042 m 26 Y s 1061 2042 m 26 Y s 1113 2016 m 52 Y s 1165 2042 m 26 Y s 1217 2042 m 26 Y s 1269 2042 m 26 Y s 1321 2042 m 26 Y s 1373 2016 m 52 Y s 1425 2042 m 26 Y s 1477 2042 m 26 Y s 1529 2042 m 26 Y s 1581 2042 m 26 Y s
+ 1634 2016 m 52 Y s 1686 2042 m 26 Y s 1738 2042 m 26 Y s 1790 2042 m 26 Y s 1842 2042 m 26 Y s 1894 2016 m 52 Y s 1946 2042 m 26 Y s 1998 2042 m 26 Y s 2050 2042 m 26 Y s 2102 2042 m 26 Y s 2154 2016 m 52 Y s 592 2016 m 52 Y s 540 2042 m 26 Y s 488
+ 2042 m 26 Y s 436 2042 m 26 Y s 384 2042 m 26 Y s 363 348 m 1720 Y s
+ gsave  2268 2177 0 0 C 121.349 1672.35 t 90 r /Helvetica findfont 102.389 sf 0 0 m ( [fb/GeV]) show NC gr 
+ gsave  2268 2177 0 0 C 159.271 1539.62 t 90 r /Helvetica findfont 68.259 sf 0 0 m (T,jet) show NC gr 
+ gsave  2268 2177 0 0 C 121.349 1384.14 t 90 r /Helvetica findfont 102.389 sf 0 0 m (/dE) show NC gr 
+ gsave  2268 2177 0 0 C 159.271 1308.3 t 90 r /Helvetica findfont 68.259 sf 0 0 m (jet) show NC gr 
+ gsave  2268 2177 0 0 C 121.349 1247.62 t 90 r /Symbol findfont 102.389 sf 0 0 m (s) show NC gr 
+ gsave  2268 2177 0 0 C 121.349 1194.53 t 90 r /Helvetica findfont 102.389 sf 0 0 m (d) show NC gr  417 348 m -54 X s
+ gsave  2268 2177 0 0 C 303.373 348.879 t 0 r /Helvetica findfont 68.259 sf 0 0 m (3) show NC gr 
+ gsave  2268 2177 0 0 C 265.452 348.879 t 0 r /Symbol findfont 68.259 sf 0 0 m (-) show NC gr 
+ gsave  2268 2177 0 0 C 155.479 299.581 t 0 r /Helvetica findfont 102.389 sf 0 0 m (10) show NC gr  390 399 m -27 X s 390 428 m -27 X s 390 449 m -27 X s 390 465 m -27 X s 390 478 m -27 X s 390 489 m -27 X s 390 499 m -27 X s 390 508 m -27 X s 417
+ 515 m -54 X s
+ gsave  2268 2177 0 0 C 303.373 511.943 t 0 r /Helvetica findfont 68.259 sf 0 0 m (2) show NC gr 
+ gsave  2268 2177 0 0 C 265.452 511.943 t 0 r /Symbol findfont 68.259 sf 0 0 m (-) show NC gr 
+ gsave  2268 2177 0 0 C 155.479 466.437 t 0 r /Helvetica findfont 102.389 sf 0 0 m (10) show NC gr  390 565 m -27 X s 390 595 m -27 X s 390 616 m -27 X s 390 632 m -27 X s 390 645 m -27 X s 390 656 m -27 X s 390 666 m -27 X s 390 675 m -27 X s 417
+ 682 m -54 X s
+ gsave  2268 2177 0 0 C 314.75 678.798 t 0 r /Helvetica findfont 68.259 sf 0 0 m (1) show NC gr 
+ gsave  2268 2177 0 0 C 276.828 678.798 t 0 r /Symbol findfont 68.259 sf 0 0 m (-) show NC gr 
+ gsave  2268 2177 0 0 C 166.855 633.292 t 0 r /Helvetica findfont 102.389 sf 0 0 m (10) show NC gr  390 732 m -27 X s 390 762 m -27 X s 390 783 m -27 X s 390 799 m -27 X s 390 812 m -27 X s 390 823 m -27 X s 390 833 m -27 X s 390 841 m -27 X s 417
+ 849 m -54 X s
+ gsave  2268 2177 0 0 C 342.425 806.604 t 0 r  -56 0 t /Helvetica findfont 102.389 sf 0 0 m (1) show NC gr  390 899 m -27 X s 390 929 m -27 X s 390 950 m -27 X s 390 966 m -27 X s 390 979 m -27 X s 390 990 m -27 X s 390 1000 m -27 X s 390 1008 m -27
+ X s 417 1016 m -54 X s
+ gsave  2268 2177 0 0 C 342.425 973.538 t 0 r  -113 0 t /Helvetica findfont 102.389 sf 0 0 m (10) show NC gr  390 1066 m -27 X s 390 1096 m -27 X s 390 1117 m -27 X s 390 1133 m -27 X s 390 1146 m -27 X s 390 1157 m -27 X s 390 1167 m -27 X s 390
+ 1175 m -27 X s 417 1183 m -54 X s
+ gsave  2268 2177 0 0 C 303.373 1179.36 t 0 r /Helvetica findfont 68.259 sf 0 0 m (2) show NC gr 
+ gsave  2268 2177 0 0 C 193.401 1133.86 t 0 r /Helvetica findfont 102.389 sf 0 0 m (10) show NC gr  390 1233 m -27 X s 390 1263 m -27 X s 390 1283 m -27 X s 390 1300 m -27 X s 390 1313 m -27 X s 390 1324 m -27 X s 390 1334 m -27 X s 390 1342 m -27 X
+ s 417 1350 m -54 X s
+ gsave  2268 2177 0 0 C 303.373 1350.01 t 0 r /Helvetica findfont 68.259 sf 0 0 m (3) show NC gr 
+ gsave  2268 2177 0 0 C 193.401 1300.71 t 0 r /Helvetica findfont 102.389 sf 0 0 m (10) show NC gr  390 1400 m -27 X s 390 1430 m -27 X s 390 1450 m -27 X s 390 1467 m -27 X s 390 1480 m -27 X s 390 1491 m -27 X s 390 1501 m -27 X s 390 1509 m -27 X
+ s 417 1517 m -54 X s
+ gsave  2268 2177 0 0 C 303.373 1513.08 t 0 r /Helvetica findfont 68.259 sf 0 0 m (4) show NC gr 
+ gsave  2268 2177 0 0 C 193.401 1467.57 t 0 r /Helvetica findfont 102.389 sf 0 0 m (10) show NC gr  390 1567 m -27 X s 390 1596 m -27 X s 390 1617 m -27 X s 390 1633 m -27 X s 390 1647 m -27 X s 390 1658 m -27 X s 390 1668 m -27 X s 390 1676 m -27 X
+ s 417 1684 m -54 X s
+ gsave  2268 2177 0 0 C 303.373 1687.51 t 0 r /Helvetica findfont 68.259 sf 0 0 m (5) show NC gr 
+ gsave  2268 2177 0 0 C 193.401 1638.22 t 0 r /Helvetica findfont 102.389 sf 0 0 m (10) show NC gr  390 1734 m -27 X s 390 1763 m -27 X s 390 1784 m -27 X s 390 1800 m -27 X s 390 1814 m -27 X s 390 1825 m -27 X s 390 1835 m -27 X s 390 1843 m -27 X
+ s 417 1851 m -54 X s
+ gsave  2268 2177 0 0 C 303.373 1854.37 t 0 r /Helvetica findfont 68.259 sf 0 0 m (6) show NC gr 
+ gsave  2268 2177 0 0 C 193.401 1805.07 t 0 r /Helvetica findfont 102.389 sf 0 0 m (10) show NC gr  390 1901 m -27 X s 390 1930 m -27 X s 390 1951 m -27 X s 390 1967 m -27 X s 390 1981 m -27 X s 390 1992 m -27 X s 390 2001 m -27 X s 390 2010 m -27 X
+ s 417 2018 m -54 X s
+ gsave  2268 2177 0 0 C 303.373 2017.43 t 0 r /Helvetica findfont 68.259 sf 0 0 m (7) show NC gr 
+ gsave  2268 2177 0 0 C 193.401 1971.93 t 0 r /Helvetica findfont 102.389 sf 0 0 m (10) show NC gr  390 2068 m -27 X s 2154 348 m 1720 Y s 2101 348 m 53 X s 2127 399 m 27 X s 2127 428 m 27 X s 2127 449 m 27 X s 2127 465 m 27 X s 2127 478 m 27 X s
+ 2127 489 m 27 X s 2127 499 m 27 X s 2127 508 m 27 X s 2101 515 m 53 X s 2127 565 m 27 X s 2127 595 m 27 X s 2127 616 m 27 X s 2127 632 m 27 X s 2127 645 m 27 X s 2127 656 m 27 X s 2127 666 m 27 X s 2127 675 m 27 X s 2101 682 m 53 X s 2127 732 m 27 X
+ s 2127 762 m 27 X s 2127 783 m 27 X s 2127 799 m 27 X s 2127 812 m 27 X s 2127 823 m 27 X s 2127 833 m 27 X s 2127 841 m 27 X s 2101 849 m 53 X s 2127 899 m 27 X s 2127 929 m 27 X s 2127 950 m 27 X s 2127 966 m 27 X s 2127 979 m 27 X s 2127 990 m 27
+ X s 2127 1000 m 27 X s 2127 1008 m 27 X s 2101 1016 m 53 X s 2127 1066 m 27 X s 2127 1096 m 27 X s 2127 1117 m 27 X s 2127 1133 m 27 X s 2127 1146 m 27 X s 2127 1157 m 27 X s 2127 1167 m 27 X s 2127 1175 m 27 X s 2101 1183 m 53 X s 2127 1233 m 27 X
+ s 2127 1263 m 27 X s 2127 1283 m 27 X s 2127 1300 m 27 X s 2127 1313 m 27 X s 2127 1324 m 27 X s 2127 1334 m 27 X s 2127 1342 m 27 X s 2101 1350 m 53 X s 2127 1400 m 27 X s 2127 1430 m 27 X s 2127 1450 m 27 X s 2127 1467 m 27 X s 2127 1480 m 27 X s
+ 2127 1491 m 27 X s 2127 1501 m 27 X s 2127 1509 m 27 X s 2101 1517 m 53 X s 2127 1567 m 27 X s 2127 1596 m 27 X s 2127 1617 m 27 X s 2127 1633 m 27 X s 2127 1647 m 27 X s 2127 1658 m 27 X s 2127 1668 m 27 X s 2127 1676 m 27 X s 2101 1684 m 53 X s
+ 2127 1734 m 27 X s 2127 1763 m 27 X s 2127 1784 m 27 X s 2127 1800 m 27 X s 2127 1814 m 27 X s 2127 1825 m 27 X s 2127 1835 m 27 X s 2127 1843 m 27 X s 2101 1851 m 53 X s 2127 1901 m 27 X s 2127 1930 m 27 X s 2127 1951 m 27 X s 2127 1967 m 27 X s
+ 2127 1981 m 27 X s 2127 1992 m 27 X s 2127 2001 m 27 X s 2127 2010 m 27 X s 2101 2018 m 53 X s 2127 2068 m 27 X s 1 1 0 c 52 12 384 1981 bf black 1 1 0 c 52 11 436 1761 bf black 1 1 0 c 52 12 488 1624 bf black 1 1 0 c 52 12 540 1516 bf black 1 1 0 c
+ 52 12 592 1428 bf black 1 1 0 c 52 15 644 1357 bf black 1 1 0 c 52 16 696 1293 bf black 1 1 0 c 52 16 748 1235 bf black 1 1 0 c 52 18 800 1183 bf black 1 1 0 c 52 20 852 1136 bf black 1 1 0 c 53 19 904 1089 bf black 1 1 0 c 52 21 957 1047 bf black 1
+ 1 0 c 52 21 1009 1008 bf black 1 1 0 c 52 22 1061 970 bf black 1 1 0 c 52 24 1113 933 bf black 1 1 0 c 52 25 1165 904 bf black 1 1 0 c 52 25 1217 864 bf black 1 1 0 c 52 26 1269 838 bf black 1 1 0 c 52 27 1321 804 bf black 1 1 0 c 52 27 1373 768 bf
+ black 1 1 0 c 52 28 1425 740 bf black 1 1 0 c 52 30 1477 721 bf black 1 1 0 c 52 29 1529 673 bf black 1 1 0 c 53 29 1581 654 bf black 1 1 0 c 52 31 1634 620 bf black 1 1 0 c 52 31 1686 597 bf black 1 1 0 c 52 33 1738 564 bf black 1 1 0 c 52 35 1790
+ 542 bf black 1 1 0 c 52 33 1842 505 bf black 1 1 0 c 52 35 1894 477 bf black 1 1 0 c 52 36 1946 451 bf black 1 1 0 c 52 37 1998 424 bf black 1 1 0 c 52 38 2050 395 bf black 1 1 0 c 52 39 2102 355 bf black 1 1 0 c black 1 1 0 c 52 11 384 1982 bf
+ black 1 1 0 c 52 9 436 1762 bf black 1 1 0 c 52 12 488 1624 bf black 1 1 0 c 52 10 540 1517 bf black 1 1 0 c 52 9 592 1429 bf black 1 1 0 c 52 11 644 1358 bf black 1 1 0 c 52 12 696 1294 bf black 1 1 0 c 52 12 748 1236 bf black 1 1 0 c 52 12 800
+ 1185 bf black 1 1 0 c 52 13 852 1139 bf black 1 1 0 c 53 11 904 1091 bf black 1 1 0 c 52 11 957 1050 bf black 1 1 0 c 52 11 1009 1011 bf black 1 1 0 c 52 12 1061 973 bf black 1 1 0 c 52 11 1113 937 bf black 1 1 0 c 52 14 1165 908 bf black 1 1 0 c 52
+ 10 1217 869 bf black 1 1 0 c 52 14 1269 842 bf black 1 1 0 c 52 13 1321 809 bf black 1 1 0 c 52 11 1373 773 bf black 1 1 0 c 52 11 1425 745 bf black 1 1 0 c 52 18 1477 725 bf black 1 1 0 c 52 7 1529 679 bf black 1 1 0 c 53 13 1581 659 bf black 1 1 0
+ c 52 12 1634 625 bf black 1 1 0 c 52 14 1686 602 bf black 1 1 0 c 52 13 1738 570 bf black 1 1 0 c 52 16 1790 548 bf black 1 1 0 c 52 12 1842 511 bf black 1 1 0 c 52 12 1894 484 bf black 1 1 0 c 52 15 1946 458 bf black 1 1 0 c 52 16 1998 430 bf black
+ 1 1 0 c 52 17 2050 401 bf black 1 1 0 c 52 12 2102 363 bf black 1 1 0 c black 9 lw 410 1988 m -26 X s 410 1988 m 26 X s 462 1768 m -26 X s 462 1768 m 26 X s 514 1631 m -26 X s 514 1631 m 26 X s 566 1523 m -26 X s 566 1523 m 26 X s 618 1435 m -26 X s
+ 618 1435 m 26 X s 670 1365 m -26 X s 670 1365 m 26 X s 722 1301 m -26 X s 722 1301 m 26 X s 774 1243 m -26 X s 774 1243 m 26 X s 826 1192 m -26 X s 826 1192 m 26 X s 878 1147 m -26 X s 878 1147 m 26 X s 930 1098 m -26 X s 930 1098 m 27 X s 983 1057
+ m -26 X s 983 1057 m 26 X s 1035 1018 m -26 X s 1035 1018 m 26 X s 1087 981 m -26 X s 1087 981 m 26 X s 1139 944 m -26 X s 1139 944 m 26 X s 1191 916 m -26 X s 1191 916 m 26 X s 1243 876 m -26 X s 1243 876 m 26 X s 1295 850 m -26 X s 1295 850 m 26 X
+ s 1347 817 m -26 X s 1347 817 m 26 X s 1399 780 m -26 X s 1399 780 m 26 X s 1451 752 m -26 X s 1451 752 m 26 X s 1503 735 m -26 X s 1503 735 m 26 X s 1555 685 m -26 X s 1555 685 m 26 X s 1608 667 m -27 X s 1608 667 m 26 X s 1660 633 m -26 X s 1660
+ 633 m 26 X s 1712 611 m -26 X s 1712 611 m 26 X s 1764 578 m -26 X s 1764 578 m 26 X s 1816 557 m -26 X s 1816 557 m 26 X s 1868 519 m -26 X s 1868 519 m 26 X s 1920 492 m -26 X s 1920 492 m 26 X s 1972 467 m -26 X s 1972 467 m 26 X s 2024 440 m -26
+ X s 2024 440 m 26 X s 2076 411 m -26 X s 2076 411 m 26 X s 2128 371 m -26 X s 2128 371 m 26 X s 6 lw 1399 791 m 2 Y s 1399 793 m cl s 1399 761 m -7 Y s 1399 754 m cl s 1451 768 m 4 Y s 1451 772 m cl s 1451 737 m -11 Y s 1451 726 m cl s 1503 748 m 6
+ Y s 1503 754 m cl s 1503 717 m -16 Y s 1503 701 m cl s 1555 721 m 11 Y s 1555 732 m cl s 1555 691 m -25 Y s 1555 666 m cl s 1608 719 m 11 Y s 1608 730 m cl s 1608 689 m -26 Y s 1608 663 m cl s 1660 688 m 16 Y s 1660 704 m cl s 1660 658 m -40 Y s
+ 1660 618 m cl s 1712 675 m 18 Y s 1712 693 m cl s 1712 645 m -48 Y s 1712 597 m cl s 1764 672 m 18 Y s 1764 690 m cl s 1764 641 m -50 Y s 1764 591 m cl s 1816 654 m 22 Y s 1816 676 m cl s 1816 623 m -66 Y s 1816 557 m cl s 1868 666 m 19 Y s 1868 685
+ m cl s 1868 635 m -55 Y s 1868 580 m cl s 1920 660 m 21 Y s 1920 681 m cl s 1920 630 m -60 Y s 1920 570 m cl s 1972 669 m 19 Y s 1972 688 m cl s 1972 638 m -52 Y s 1972 586 m cl s 2024 657 m 22 Y s 2024 679 m cl s 2024 627 m -63 Y s 2024 564 m cl s
+ 2076 684 m 17 Y s 2076 701 m cl s 2076 654 m -43 Y s 2076 611 m cl s 2128 676 m 18 Y s 2128 694 m cl s 2128 646 m -48 Y s 2128 598 m cl s 1 1 1 c black 3 lw /w 36 def /w2 {w 2 div} def /w3 {w 3 div} def 410 1982 462 1759 514 1643 566 1525 618 1442
+ 670 1359 722 1302 774 1243 826 1184 878 1131 930 1089 983 1060 1035 1023 1087 983 1139 939 1191 903 1243 884 1295 858 1347 826 1399 776 1451 753 1503 732 1555 706 1608 704 1660 673 1712 660 1764 657 1816 638 1868 650 1920 645 1972 654 2024 642 2076
+ 669 2128 661 34 { m20} R 6 lw
+ gsave  2268 2177 0 0 C 781.187 1850.58 t 0 r /Helvetica findfont 102.389 sf 0 0 m (= 14 TeV) show NC gr 
+ gsave  2268 2177 0 0 C 731.888 1850.58 t 0 r /Helvetica findfont 102.389 sf 0 0 m (s) show NC gr  698 1907 m 11 -60 d s 3 lw 709 1847 m 12 91 d s 721 1938 m 60 X s
+ gsave  2268 2177 0 0 C 1441.02 1850.58 t 0 r /Helvetica findfont 102.389 sf 0 0 m (|<0.5) show NC gr 
+ gsave  2268 2177 0 0 C 1365.18 1797.49 t 0 r /Helvetica findfont 68.259 sf 0 0 m (jet) show NC gr 
+ gsave  2268 2177 0 0 C 1308.3 1850.58 t 0 r /Symbol findfont 102.389 sf 0 0 m (h) show NC gr 
+ gsave  2268 2177 0 0 C 1289.34 1850.58 t 0 r /Helvetica findfont 102.389 sf 0 0 m (|) show NC gr  /w 39 def /w2 {w 2 div} def /w3 {w 3 div} def 1193 1633 m20
+ gsave  2268 2177 0 0 C 1243.83 1596.5 t 0 r /Helvetica findfont 102.389 sf 0 0 m (Data 2009) show NC gr 
+ gsave  2268 2177 0 0 C 1243.83 1422.06 t 0 r /Helvetica findfont 102.389 sf 0 0 m (NLO QCD) show NC gr  1 1 0 c 113 65 1093 1426 bf black 12 lw 1093 1458 m 113 X s
+ gsave  2268 2177 0 0 C 451.268 436.099 t 0 r /Helvetica-BoldOblique findfont 102.389 sf 0 0 m (ATLAS) show NC gr 
+ gsave  2268 2177 0 0 C 819.108 436.099 t 0 r /Helvetica findfont 102.389 sf 0 0 m (Preliminary) show NC gr 
+ gr  gr showpage
+end
+%%EOF
diff --git a/include/AtlasStyle/AtlasExample.pdf b/include/AtlasStyle/AtlasExample.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..d0683ab8a844057141778d05c2e5992d1d3d4feb
Binary files /dev/null and b/include/AtlasStyle/AtlasExample.pdf differ
diff --git a/include/AtlasStyle/AtlasExample.png b/include/AtlasStyle/AtlasExample.png
new file mode 100644
index 0000000000000000000000000000000000000000..e477ad61930b86ce83242b10ade8dbd2567a8117
Binary files /dev/null and b/include/AtlasStyle/AtlasExample.png differ
diff --git a/include/AtlasStyle/AtlasLabels.C b/include/AtlasStyle/AtlasLabels.C
new file mode 100644
index 0000000000000000000000000000000000000000..f7e9a604e9b88ff670f2d863ebf999105e1ae6c2
--- /dev/null
+++ b/include/AtlasStyle/AtlasLabels.C
@@ -0,0 +1,182 @@
+#include "AtlasLabels.h"
+
+#include "TLatex.h"
+#include "TLine.h"
+#include "TPave.h"
+#include "TPad.h"
+#include "TMarker.h"
+
+
+void ATLASLabel(Double_t x,Double_t y,char* text,Color_t color) 
+{
+  TLatex l; //l.SetTextAlign(12); l.SetTextSize(tsize); 
+  l.SetNDC();
+  l.SetTextFont(72);
+  l.SetTextColor(color);
+
+  double delx = 0.115*696*gPad->GetWh()/(472*gPad->GetWw());
+
+  l.DrawLatex(x,y,"ATLAS");
+  if (text) {
+    TLatex p; 
+    p.SetNDC();
+    p.SetTextFont(42);
+    p.SetTextColor(color);
+    p.DrawLatex(x+delx,y,text);
+    //    p.DrawLatex(x,y,"#sqrt{s}=900GeV");
+  }
+}
+
+
+void ATLASLabelOld(Double_t x,Double_t y,bool Preliminary,Color_t color) 
+{
+  TLatex l; //l.SetTextAlign(12); l.SetTextSize(tsize); 
+  l.SetNDC();
+  l.SetTextFont(72);
+  l.SetTextColor(color);
+  l.DrawLatex(x,y,"ATLAS");
+  if (Preliminary) {
+    TLatex p; 
+    p.SetNDC();
+    p.SetTextFont(42);
+    p.SetTextColor(color);
+    p.DrawLatex(x+0.115,y,"Preliminary");
+  }
+}
+
+
+
+void ATLASVersion(char* version,Double_t x,Double_t y,Color_t color) 
+{
+
+  if (version) {
+    char versionString[100];
+    sprintf(versionString,"Version %s",version);
+    TLatex l;
+    l.SetTextAlign(22); 
+    l.SetTextSize(0.04); 
+    l.SetNDC();
+    l.SetTextFont(72);
+    l.SetTextColor(color);
+    l.DrawLatex(x,y,versionString);
+  }
+}
+
+
+
+void myText(Double_t x,Double_t y,Color_t color,char *text) 
+{
+  //Double_t tsize=0.05;
+  TLatex l; //l.SetTextAlign(12); l.SetTextSize(tsize); 
+  l.SetNDC();
+  l.SetTextColor(color);
+  l.DrawLatex(x,y,text);
+}
+ 
+void myBoxText(Double_t x, Double_t y,Double_t boxsize,Int_t mcolor,char *text) 
+{
+  Double_t tsize=0.06;
+
+  TLatex l; l.SetTextAlign(12); //l.SetTextSize(tsize); 
+  l.SetNDC();
+  l.DrawLatex(x,y,text);
+
+  Double_t y1=y-0.25*tsize;
+  Double_t y2=y+0.25*tsize;
+  Double_t x2=x-0.3*tsize;
+  Double_t x1=x2-boxsize;
+
+  printf("x1= %f x2= %f y1= %f y2= %f \n",x1,x2,y1,y2);
+
+  TPave *mbox= new TPave(x1,y1,x2,y2,0,"NDC");
+
+  mbox->SetFillColor(mcolor);
+  mbox->SetFillStyle(1001);
+  mbox->Draw();
+
+  TLine mline;
+  mline.SetLineWidth(4);
+  mline.SetLineColor(1);
+  mline.SetLineStyle(1);
+  Double_t y_new=(y1+y2)/2.;
+  mline.DrawLineNDC(x1,y_new,x2,y_new);
+
+}
+
+void myBoxText2(Double_t x, Double_t y,Double_t boxsize,Int_t mcolor,char *text, Double_t tsize, Double_t ftyle) 
+{
+  //Double_t tsize=0.06;
+
+  TLatex l;
+  l.SetTextAlign(12); //
+  l.SetTextSize(tsize); 
+  l.SetNDC();
+  l.DrawLatex(x,y,text);
+
+  Double_t y1=y-0.25*tsize;
+  Double_t y2=y+0.25*tsize;
+  Double_t x2=x-0.3*tsize;
+  Double_t x1=x2-boxsize;
+
+  printf("x1= %f x2= %f y1= %f y2= %f \n",x1,x2,y1,y2);
+
+  TPave *mbox= new TPave(x1,y1,x2,y2,0,"NDC");
+
+  //TBox *mbox= new TBox(x1,y1,x2,y2);
+
+  mbox->SetLineWidth(2);
+  mbox->SetLineColor(mcolor);
+  mbox->SetFillColor(mcolor);
+  mbox->SetFillStyle(ftyle);
+  mbox->Draw("arcl");
+
+  TLine mline;
+  mline.SetLineWidth(4);
+  mline.SetLineColor(1);
+  mline.SetLineStyle(1);
+  Double_t y_new=(y1+y2)/2.;
+  //mline.DrawLineNDC(x1,y_new,x2,y_new);
+
+}
+
+void myMarkerText(Double_t x,Double_t y,Int_t color,Int_t mstyle,char *text) 
+{
+  //  printf("**myMarker: text= %s\ m ",text);
+
+  Double_t tsize=0.06;
+  TMarker *marker = new TMarker(x-(0.4*tsize),y,8);
+  marker->SetMarkerColor(color);  marker->SetNDC();
+  marker->SetMarkerStyle(mstyle);
+  marker->SetMarkerSize(2.0);
+  marker->Draw();
+
+  TLatex l; l.SetTextAlign(12); //l.SetTextSize(tsize); 
+  l.SetNDC();
+  l.DrawLatex(x,y,text);
+}
+
+void myLineText(Double_t x, Double_t y,Double_t boxsize,Int_t mcolor,char *text,Int_t lstyle, Double_t tsize) 
+{
+  //Double_t tsize=0.06;
+
+  TLatex l; l.SetTextAlign(12); //
+  l.SetTextSize(tsize); 
+  l.SetNDC();
+  l.DrawLatex(x,y,text);
+
+  Double_t y1=y-0.25*tsize;
+  Double_t y2=y+0.25*tsize;
+  Double_t x2=x-0.3*tsize;
+  Double_t x1=x2-boxsize;
+
+  printf("x1= %f x2= %f y1= %f y2= %f \n",x1,x2,y1,y2);
+
+  TLine mline;
+  mline.SetLineWidth(4);
+  mline.SetLineColor(mcolor);
+  mline.SetLineStyle(lstyle);
+  Double_t y_new=(y1+y2)/2.;
+  mline.DrawLineNDC(x1,y_new,x2,y_new);
+
+}
+
diff --git a/include/AtlasStyle/AtlasLabels.C~ b/include/AtlasStyle/AtlasLabels.C~
new file mode 100644
index 0000000000000000000000000000000000000000..b8852db33f9de7e4e2be52c86cb5ebc52dcae4df
--- /dev/null
+++ b/include/AtlasStyle/AtlasLabels.C~
@@ -0,0 +1,181 @@
+#include "AtlasLabels.h"
+
+#include "TLatex.h"
+#include "TLine.h"
+#include "TPave.h"
+#include "TMarker.h"
+
+
+void ATLASLabel(Double_t x,Double_t y,char* text,Color_t color) 
+{
+  TLatex l; //l.SetTextAlign(12); l.SetTextSize(tsize); 
+  l.SetNDC();
+  l.SetTextFont(72);
+  l.SetTextColor(color);
+
+  double delx = 0.115*696*gPad->GetWh()/(472*gPad->GetWw());
+
+  l.DrawLatex(x,y,"ATLAS");
+  if (text) {
+    TLatex p; 
+    p.SetNDC();
+    p.SetTextFont(42);
+    p.SetTextColor(color);
+    p.DrawLatex(x+delx,y,text);
+    //    p.DrawLatex(x,y,"#sqrt{s}=900GeV");
+  }
+}
+
+
+void ATLASLabelOld(Double_t x,Double_t y,bool Preliminary,Color_t color) 
+{
+  TLatex l; //l.SetTextAlign(12); l.SetTextSize(tsize); 
+  l.SetNDC();
+  l.SetTextFont(72);
+  l.SetTextColor(color);
+  l.DrawLatex(x,y,"ATLAS");
+  if (Preliminary) {
+    TLatex p; 
+    p.SetNDC();
+    p.SetTextFont(42);
+    p.SetTextColor(color);
+    p.DrawLatex(x+0.115,y,"Preliminary");
+  }
+}
+
+
+
+void ATLASVersion(char* version,Double_t x,Double_t y,Color_t color) 
+{
+
+  if (version) {
+    char versionString[100];
+    sprintf(versionString,"Version %s",version);
+    TLatex l;
+    l.SetTextAlign(22); 
+    l.SetTextSize(0.04); 
+    l.SetNDC();
+    l.SetTextFont(72);
+    l.SetTextColor(color);
+    l.DrawLatex(x,y,versionString);
+  }
+}
+
+
+
+void myText(Double_t x,Double_t y,Color_t color,char *text) 
+{
+  //Double_t tsize=0.05;
+  TLatex l; //l.SetTextAlign(12); l.SetTextSize(tsize); 
+  l.SetNDC();
+  l.SetTextColor(color);
+  l.DrawLatex(x,y,text);
+}
+ 
+void myBoxText(Double_t x, Double_t y,Double_t boxsize,Int_t mcolor,char *text) 
+{
+  Double_t tsize=0.06;
+
+  TLatex l; l.SetTextAlign(12); //l.SetTextSize(tsize); 
+  l.SetNDC();
+  l.DrawLatex(x,y,text);
+
+  Double_t y1=y-0.25*tsize;
+  Double_t y2=y+0.25*tsize;
+  Double_t x2=x-0.3*tsize;
+  Double_t x1=x2-boxsize;
+
+  printf("x1= %f x2= %f y1= %f y2= %f \n",x1,x2,y1,y2);
+
+  TPave *mbox= new TPave(x1,y1,x2,y2,0,"NDC");
+
+  mbox->SetFillColor(mcolor);
+  mbox->SetFillStyle(1001);
+  mbox->Draw();
+
+  TLine mline;
+  mline.SetLineWidth(4);
+  mline.SetLineColor(1);
+  mline.SetLineStyle(1);
+  Double_t y_new=(y1+y2)/2.;
+  mline.DrawLineNDC(x1,y_new,x2,y_new);
+
+}
+
+void myBoxText2(Double_t x, Double_t y,Double_t boxsize,Int_t mcolor,char *text, Double_t tsize, Double_t ftyle) 
+{
+  //Double_t tsize=0.06;
+
+  TLatex l;
+  l.SetTextAlign(12); //
+  l.SetTextSize(tsize); 
+  l.SetNDC();
+  l.DrawLatex(x,y,text);
+
+  Double_t y1=y-0.25*tsize;
+  Double_t y2=y+0.25*tsize;
+  Double_t x2=x-0.3*tsize;
+  Double_t x1=x2-boxsize;
+
+  printf("x1= %f x2= %f y1= %f y2= %f \n",x1,x2,y1,y2);
+
+  TPave *mbox= new TPave(x1,y1,x2,y2,0,"NDC");
+
+  //TBox *mbox= new TBox(x1,y1,x2,y2);
+
+  mbox->SetLineWidth(2);
+  mbox->SetLineColor(mcolor);
+  mbox->SetFillColor(mcolor);
+  mbox->SetFillStyle(ftyle);
+  mbox->Draw("arcl");
+
+  TLine mline;
+  mline.SetLineWidth(4);
+  mline.SetLineColor(1);
+  mline.SetLineStyle(1);
+  Double_t y_new=(y1+y2)/2.;
+  //mline.DrawLineNDC(x1,y_new,x2,y_new);
+
+}
+
+void myMarkerText(Double_t x,Double_t y,Int_t color,Int_t mstyle,char *text) 
+{
+  //  printf("**myMarker: text= %s\ m ",text);
+
+  Double_t tsize=0.06;
+  TMarker *marker = new TMarker(x-(0.4*tsize),y,8);
+  marker->SetMarkerColor(color);  marker->SetNDC();
+  marker->SetMarkerStyle(mstyle);
+  marker->SetMarkerSize(2.0);
+  marker->Draw();
+
+  TLatex l; l.SetTextAlign(12); //l.SetTextSize(tsize); 
+  l.SetNDC();
+  l.DrawLatex(x,y,text);
+}
+
+void myLineText(Double_t x, Double_t y,Double_t boxsize,Int_t mcolor,char *text,Int_t lstyle, Double_t tsize) 
+{
+  //Double_t tsize=0.06;
+
+  TLatex l; l.SetTextAlign(12); //
+  l.SetTextSize(tsize); 
+  l.SetNDC();
+  l.DrawLatex(x,y,text);
+
+  Double_t y1=y-0.25*tsize;
+  Double_t y2=y+0.25*tsize;
+  Double_t x2=x-0.3*tsize;
+  Double_t x1=x2-boxsize;
+
+  printf("x1= %f x2= %f y1= %f y2= %f \n",x1,x2,y1,y2);
+
+  TLine mline;
+  mline.SetLineWidth(4);
+  mline.SetLineColor(mcolor);
+  mline.SetLineStyle(lstyle);
+  Double_t y_new=(y1+y2)/2.;
+  mline.DrawLineNDC(x1,y_new,x2,y_new);
+
+}
+
diff --git a/include/AtlasStyle/AtlasLabels.h b/include/AtlasStyle/AtlasLabels.h
new file mode 100644
index 0000000000000000000000000000000000000000..c51e516d1b2f5c9f26456e57161f90f25649ef96
--- /dev/null
+++ b/include/AtlasStyle/AtlasLabels.h
@@ -0,0 +1,28 @@
+//
+//   @file    AtlasLabels.h         
+//   
+//   @author M.Sutton
+// 
+//   Copyright (C) 2010 Atlas Collaboration
+//
+//   $Id: AtlasLabels.h, v0.0   Thu 25 Mar 2010 10:34:20 CET $
+
+
+#ifndef __ATLASLABELS_H
+#define __ATLASLABELS_H
+
+#include "Rtypes.h"
+
+void ATLASLabel(Double_t x,Double_t y,char* text=NULL,Color_t color=1); 
+
+void ATLASLabelOld(Double_t x,Double_t y,bool Preliminary=false,Color_t color=1); 
+
+void ATLASVersion(char* version=NULL,Double_t x=0.88,Double_t y=0.975,Color_t color=1); 
+
+void myText(Double_t x,Double_t y,Color_t color,char *text); 
+
+void myBoxText(Double_t x, Double_t y,Double_t boxsize,Int_t mcolor,char *text); 
+
+void myMarkerText(Double_t x,Double_t y,Int_t color,Int_t mstyle,char *text); 
+
+#endif // __ATLASLABELS_H
diff --git a/include/AtlasStyle/AtlasLabels.o b/include/AtlasStyle/AtlasLabels.o
new file mode 100644
index 0000000000000000000000000000000000000000..6c992cfe4e1ec4175f49499e6a81711c233b621d
Binary files /dev/null and b/include/AtlasStyle/AtlasLabels.o differ
diff --git a/include/AtlasStyle/AtlasLabels_original.C b/include/AtlasStyle/AtlasLabels_original.C
new file mode 100644
index 0000000000000000000000000000000000000000..824e6d391ce95d97c6745ea114502fbf5cd530d7
--- /dev/null
+++ b/include/AtlasStyle/AtlasLabels_original.C
@@ -0,0 +1,64 @@
+#include "AtlasLabels.h"
+
+#include "TLatex.h"
+#include "TLine.h"
+#include "TPave.h"
+#include "TPad.h"
+#include "TMarker.h"
+
+
+void ATLASLabel(Double_t x,Double_t y,const char* text,Color_t color) 
+{
+  TLatex l; //l.SetTextAlign(12); l.SetTextSize(tsize); 
+  l.SetNDC();
+  l.SetTextFont(72);
+  l.SetTextColor(color);
+
+  double delx = 0.115*696*gPad->GetWh()/(472*gPad->GetWw());
+
+  l.DrawLatex(x,y,"ATLAS");
+  if (text) {
+    TLatex p; 
+    p.SetNDC();
+    p.SetTextFont(42);
+    p.SetTextColor(color);
+    p.DrawLatex(x+delx,y,text);
+    //    p.DrawLatex(x,y,"#sqrt{s}=900GeV");
+  }
+}
+
+
+void ATLASLabelOld(Double_t x,Double_t y,bool Preliminary,Color_t color) 
+{
+  TLatex l; //l.SetTextAlign(12); l.SetTextSize(tsize); 
+  l.SetNDC();
+  l.SetTextFont(72);
+  l.SetTextColor(color);
+  l.DrawLatex(x,y,"ATLAS");
+  if (Preliminary) {
+    TLatex p; 
+    p.SetNDC();
+    p.SetTextFont(42);
+    p.SetTextColor(color);
+    p.DrawLatex(x+0.115,y,"Preliminary");
+  }
+}
+
+
+
+void ATLASVersion(const char* version,Double_t x,Double_t y,Color_t color) 
+{
+
+  if (version) {
+    char versionString[100];
+    sprintf(versionString,"Version %s",version);
+    TLatex l;
+    l.SetTextAlign(22); 
+    l.SetTextSize(0.04); 
+    l.SetNDC();
+    l.SetTextFont(72);
+    l.SetTextColor(color);
+    l.DrawLatex(x,y,versionString);
+  }
+}
+
diff --git a/include/AtlasStyle/AtlasLabels_original.h b/include/AtlasStyle/AtlasLabels_original.h
new file mode 100644
index 0000000000000000000000000000000000000000..0126c2c14b6623dfd033afa1b1ba09807a6517c7
--- /dev/null
+++ b/include/AtlasStyle/AtlasLabels_original.h
@@ -0,0 +1,22 @@
+//
+//   @file    AtlasLabels.h         
+//   
+//   @author M.Sutton
+// 
+//   Copyright (C) 2010 Atlas Collaboration
+//
+//   $Id: AtlasLabels.h, v0.0   Thu 25 Mar 2010 10:34:20 CET $
+
+
+#ifndef __ATLASLABELS_H
+#define __ATLASLABELS_H
+
+#include "Rtypes.h"
+
+void ATLASLabel(Double_t x,Double_t y,const char* text=NULL,Color_t color=1); 
+
+void ATLASLabelOld(Double_t x,Double_t y,bool Preliminary=false,Color_t color=1); 
+
+void ATLASVersion(const char* version=NULL,Double_t x=0.88,Double_t y=0.975,Color_t color=1); 
+
+#endif // __ATLASLABELS_H
diff --git a/include/AtlasStyle/AtlasStyle.C b/include/AtlasStyle/AtlasStyle.C
new file mode 100644
index 0000000000000000000000000000000000000000..7e3140ca6848ac6d0253a594af84060a50eb3c59
--- /dev/null
+++ b/include/AtlasStyle/AtlasStyle.C
@@ -0,0 +1,97 @@
+//
+// ATLAS Style, based on a style file from BaBar
+//
+
+#include <iostream>
+
+#include "AtlasStyle.h"
+
+#include "TROOT.h"
+
+void SetAtlasStyle ()
+{
+  static TStyle* atlasStyle = 0;
+  std::cout << "\nApplying ATLAS style settings...\n" << std::endl ;
+  if ( atlasStyle==0 ) atlasStyle = AtlasStyle();
+  gROOT->SetStyle("ATLAS");
+  gROOT->ForceStyle();
+}
+
+TStyle* AtlasStyle() 
+{
+  TStyle *atlasStyle = new TStyle("ATLAS","Atlas style");
+
+  // use plain black on white colors
+  Int_t icol=0; // WHITE
+  atlasStyle->SetFrameBorderMode(icol);
+  atlasStyle->SetFrameFillColor(icol);
+  atlasStyle->SetCanvasBorderMode(icol);
+  atlasStyle->SetCanvasColor(icol);
+  atlasStyle->SetPadBorderMode(icol);
+  atlasStyle->SetPadColor(icol);
+  atlasStyle->SetStatColor(icol);
+  //atlasStyle->SetFillColor(icol); // don't use: white fill color for *all* objects
+
+  // set the paper & margin sizes
+  atlasStyle->SetPaperSize(20,26);
+
+  // set margin sizes
+  atlasStyle->SetPadTopMargin(0.05);
+  atlasStyle->SetPadRightMargin(0.15);
+  atlasStyle->SetPadBottomMargin(0.15);
+  atlasStyle->SetPadLeftMargin(0.15);
+
+  // set title offsets (for axis label)
+  atlasStyle->SetTitleXOffset(1.4);
+  atlasStyle->SetTitleYOffset(1.4);
+
+  // use large fonts
+  //Int_t font=72; // Helvetica italics
+  Int_t font=42; // Helvetica
+  Double_t tsize=0.05;
+  //Int_t font=43; // Helvetica
+  //Double_t tsize=22;
+  atlasStyle->SetTextFont(font);
+
+  atlasStyle->SetTextSize(tsize);
+  atlasStyle->SetLabelFont(font,"x");
+  atlasStyle->SetTitleFont(font,"x");
+  atlasStyle->SetLabelFont(font,"y");
+  atlasStyle->SetTitleFont(font,"y");
+  atlasStyle->SetLabelFont(font,"z");
+  atlasStyle->SetTitleFont(font,"z");
+  
+  atlasStyle->SetLabelSize(tsize,"x");
+  atlasStyle->SetTitleSize(tsize,"x");
+  atlasStyle->SetLabelSize(tsize,"y");
+  atlasStyle->SetTitleSize(tsize,"y");
+  atlasStyle->SetLabelSize(tsize,"z");
+  atlasStyle->SetTitleSize(tsize,"z");
+
+  // use bold lines and markers
+  atlasStyle->SetMarkerStyle(1);
+  //atlasStyle->SetMarkerSize(1.2);
+  atlasStyle->SetHistLineWidth(3.);
+  atlasStyle->SetLineStyleString(2,"[12 12]"); // postscript dashes
+  atlasStyle->SetLineScalePS(1.2);
+
+  // get rid of X error bars 
+  //atlasStyle->SetErrorX(0.001);
+  // get rid of error bar caps
+  atlasStyle->SetEndErrorSize(0.);
+
+  // do not display any of the standard histogram decorations
+  atlasStyle->SetOptTitle(0);
+  //atlasStyle->SetOptStat(1111);
+  atlasStyle->SetOptStat(0);
+  //atlasStyle->SetOptFit(1111);
+  atlasStyle->SetOptFit(0);
+
+  // put tick marks on top and RHS of plots
+  atlasStyle->SetPadTickX(1);
+  atlasStyle->SetPadTickY(1);
+
+  return atlasStyle;
+
+}
+
diff --git a/include/AtlasStyle/AtlasStyle.C~ b/include/AtlasStyle/AtlasStyle.C~
new file mode 100644
index 0000000000000000000000000000000000000000..b25aa6439a3fc2976ead990c56a291670e8356ce
--- /dev/null
+++ b/include/AtlasStyle/AtlasStyle.C~
@@ -0,0 +1,96 @@
+//
+// ATLAS Style, based on a style file from BaBar
+//
+
+#include <iostream>
+
+#include "AtlasStyle.h"
+
+#include "TROOT.h"
+
+void SetAtlasStyle ()
+{
+  static TStyle* atlasStyle = 0;
+  std::cout << "\nApplying ATLAS style settings...\n" << std::endl ;
+  if ( atlasStyle==0 ) atlasStyle = AtlasStyle();
+  gROOT->SetStyle("ATLAS");
+  gROOT->ForceStyle();
+}
+
+TStyle* AtlasStyle() 
+{
+  TStyle *atlasStyle = new TStyle("ATLAS","Atlas style");
+
+  // use plain black on white colors
+  Int_t icol=0; // WHITE
+  atlasStyle->SetFrameBorderMode(icol);
+  atlasStyle->SetFrameFillColor(icol);
+  atlasStyle->SetCanvasBorderMode(icol);
+  atlasStyle->SetCanvasColor(icol);
+  atlasStyle->SetPadBorderMode(icol);
+  atlasStyle->SetPadColor(icol);
+  atlasStyle->SetStatColor(icol);
+  //atlasStyle->SetFillColor(icol); // don't use: white fill color for *all* objects
+
+  // set the paper & margin sizes
+  atlasStyle->SetPaperSize(20,26);
+
+  // set margin sizes
+  atlasStyle->SetPadTopMargin(0.05);
+  atlasStyle->SetPadRightMargin(0.13);
+  atlasStyle->SetPadBottomMargin(0.14);
+  atlasStyle->SetPadLeftMargin(0.14);
+
+  // set title offsets (for axis label)
+  atlasStyle->SetTitleXOffset(1.4);
+  atlasStyle->SetTitleYOffset(1.4);
+
+  // use large fonts
+  //Int_t font=72; // Helvetica italics
+  Int_t font=42; // Helvetica
+  Double_t tsize=0.05;
+  //Int_t font=43; // Helvetica
+  //Double_t tsize=22;
+  atlasStyle->SetTextFont(font);
+
+  atlasStyle->SetTextSize(tsize);
+  atlasStyle->SetLabelFont(font,"x");
+  atlasStyle->SetTitleFont(font,"x");
+  atlasStyle->SetLabelFont(font,"y");
+  atlasStyle->SetTitleFont(font,"y");
+  atlasStyle->SetLabelFont(font,"z");
+  atlasStyle->SetTitleFont(font,"z");
+  
+  atlasStyle->SetLabelSize(tsize,"x");
+  atlasStyle->SetTitleSize(tsize,"x");
+  atlasStyle->SetLabelSize(tsize,"y");
+  atlasStyle->SetTitleSize(tsize,"y");
+  atlasStyle->SetLabelSize(tsize,"z");
+  atlasStyle->SetTitleSize(tsize,"z");
+
+  // use bold lines and markers
+  atlasStyle->SetMarkerStyle(20);
+  atlasStyle->SetMarkerSize(1.2);
+  atlasStyle->SetHistLineWidth(2.);
+  atlasStyle->SetLineStyleString(2,"[12 12]"); // postscript dashes
+
+  // get rid of X error bars 
+  //atlasStyle->SetErrorX(0.001);
+  // get rid of error bar caps
+  atlasStyle->SetEndErrorSize(0.);
+
+  // do not display any of the standard histogram decorations
+  atlasStyle->SetOptTitle(0);
+  //atlasStyle->SetOptStat(1111);
+  atlasStyle->SetOptStat(0);
+  //atlasStyle->SetOptFit(1111);
+  atlasStyle->SetOptFit(0);
+
+  // put tick marks on top and RHS of plots
+  atlasStyle->SetPadTickX(1);
+  atlasStyle->SetPadTickY(1);
+
+  return atlasStyle;
+
+}
+
diff --git a/include/AtlasStyle/AtlasStyle.h b/include/AtlasStyle/AtlasStyle.h
new file mode 100644
index 0000000000000000000000000000000000000000..85b027e457afba708da04f8128a4e13fc0a3b01e
--- /dev/null
+++ b/include/AtlasStyle/AtlasStyle.h
@@ -0,0 +1,22 @@
+//
+//   @file    AtlasStyle.h         
+//   
+//            ATLAS Style, based on a style file from BaBar
+//
+//
+//   @author M.Sutton
+// 
+//   Copyright (C) 2010 Atlas Collaboration
+//
+//   $Id: AtlasStyle.h, v0.0   Thu 25 Mar 2010 10:34:20 CET $
+
+#ifndef  __ATLASSTYLE_H
+#define __ATLASSTYLE_H
+
+#include "TStyle.h"
+
+void SetAtlasStyle();
+
+TStyle* AtlasStyle(); 
+
+#endif // __ATLASSTYLE_H
diff --git a/include/AtlasStyle/AtlasStyle.o b/include/AtlasStyle/AtlasStyle.o
new file mode 100644
index 0000000000000000000000000000000000000000..3032d750559d78a5b0d4544720a74a6ba2a97d07
Binary files /dev/null and b/include/AtlasStyle/AtlasStyle.o differ
diff --git a/include/AtlasStyle/AtlasStyle.py b/include/AtlasStyle/AtlasStyle.py
new file mode 100644
index 0000000000000000000000000000000000000000..b4a31b25b680df651c6d630dadba5df9ad82f848
--- /dev/null
+++ b/include/AtlasStyle/AtlasStyle.py
@@ -0,0 +1,3 @@
+from ROOT import *
+ROOT.gROOT.LoadMacro("AtlasStyle.C") 
+#SetAtlasStyle()
diff --git a/include/AtlasStyle/AtlasStyle_original.C b/include/AtlasStyle/AtlasStyle_original.C
new file mode 100644
index 0000000000000000000000000000000000000000..ac1b68a386dc013586326d9ccfcd54d3c23020e6
--- /dev/null
+++ b/include/AtlasStyle/AtlasStyle_original.C
@@ -0,0 +1,94 @@
+//
+// ATLAS Style, based on a style file from BaBar
+//
+
+#include <iostream>
+
+#include "AtlasStyle.h"
+
+#include "TROOT.h"
+
+void SetAtlasStyle ()
+{
+  static TStyle* atlasStyle = 0;
+  std::cout << "\nApplying ATLAS style settings...\n" << std::endl ;
+  if ( atlasStyle==0 ) atlasStyle = AtlasStyle();
+  gROOT->SetStyle("ATLAS");
+  gROOT->ForceStyle();
+}
+
+TStyle* AtlasStyle() 
+{
+  TStyle *atlasStyle = new TStyle("ATLAS","Atlas style");
+
+  // use plain black on white colors
+  Int_t icol=0; // WHITE
+  atlasStyle->SetFrameBorderMode(icol);
+  atlasStyle->SetFrameFillColor(icol);
+  atlasStyle->SetCanvasBorderMode(icol);
+  atlasStyle->SetCanvasColor(icol);
+  atlasStyle->SetPadBorderMode(icol);
+  atlasStyle->SetPadColor(icol);
+  atlasStyle->SetStatColor(icol);
+  //atlasStyle->SetFillColor(icol); // don't use: white fill color for *all* objects
+
+  // set the paper & margin sizes
+  atlasStyle->SetPaperSize(20,26);
+
+  // set margin sizes
+  atlasStyle->SetPadTopMargin(0.05);
+  atlasStyle->SetPadRightMargin(0.05);
+  atlasStyle->SetPadBottomMargin(0.16);
+  atlasStyle->SetPadLeftMargin(0.16);
+
+  // set title offsets (for axis label)
+  atlasStyle->SetTitleXOffset(1.4);
+  atlasStyle->SetTitleYOffset(1.4);
+
+  // use large fonts
+  //Int_t font=72; // Helvetica italics
+  Int_t font=42; // Helvetica
+  Double_t tsize=0.05;
+  atlasStyle->SetTextFont(font);
+
+  atlasStyle->SetTextSize(tsize);
+  atlasStyle->SetLabelFont(font,"x");
+  atlasStyle->SetTitleFont(font,"x");
+  atlasStyle->SetLabelFont(font,"y");
+  atlasStyle->SetTitleFont(font,"y");
+  atlasStyle->SetLabelFont(font,"z");
+  atlasStyle->SetTitleFont(font,"z");
+  
+  atlasStyle->SetLabelSize(tsize,"x");
+  atlasStyle->SetTitleSize(tsize,"x");
+  atlasStyle->SetLabelSize(tsize,"y");
+  atlasStyle->SetTitleSize(tsize,"y");
+  atlasStyle->SetLabelSize(tsize,"z");
+  atlasStyle->SetTitleSize(tsize,"z");
+
+  // use bold lines and markers
+  atlasStyle->SetMarkerStyle(20);
+  atlasStyle->SetMarkerSize(1.2);
+  atlasStyle->SetHistLineWidth(2.);
+  atlasStyle->SetLineStyleString(2,"[12 12]"); // postscript dashes
+
+  // get rid of X error bars (as recommended in ATLAS figure guidelines)
+  atlasStyle->SetErrorX(0.0001);
+  // get rid of error bar caps
+  atlasStyle->SetEndErrorSize(0.);
+
+  // do not display any of the standard histogram decorations
+  atlasStyle->SetOptTitle(0);
+  //atlasStyle->SetOptStat(1111);
+  atlasStyle->SetOptStat(0);
+  //atlasStyle->SetOptFit(1111);
+  atlasStyle->SetOptFit(0);
+
+  // put tick marks on top and RHS of plots
+  atlasStyle->SetPadTickX(1);
+  atlasStyle->SetPadTickY(1);
+
+  return atlasStyle;
+
+}
+
diff --git a/include/AtlasStyle/AtlasStyle_original.h b/include/AtlasStyle/AtlasStyle_original.h
new file mode 100644
index 0000000000000000000000000000000000000000..85b027e457afba708da04f8128a4e13fc0a3b01e
--- /dev/null
+++ b/include/AtlasStyle/AtlasStyle_original.h
@@ -0,0 +1,22 @@
+//
+//   @file    AtlasStyle.h         
+//   
+//            ATLAS Style, based on a style file from BaBar
+//
+//
+//   @author M.Sutton
+// 
+//   Copyright (C) 2010 Atlas Collaboration
+//
+//   $Id: AtlasStyle.h, v0.0   Thu 25 Mar 2010 10:34:20 CET $
+
+#ifndef  __ATLASSTYLE_H
+#define __ATLASSTYLE_H
+
+#include "TStyle.h"
+
+void SetAtlasStyle();
+
+TStyle* AtlasStyle(); 
+
+#endif // __ATLASSTYLE_H
diff --git a/include/AtlasStyle/AtlasUtils.C b/include/AtlasStyle/AtlasUtils.C
new file mode 100644
index 0000000000000000000000000000000000000000..da3db04ccae3a157c86c7adee1b6192824766f2a
--- /dev/null
+++ b/include/AtlasStyle/AtlasUtils.C
@@ -0,0 +1,362 @@
+
+#include <iostream>
+#include <cmath>
+
+#include "AtlasUtils.h"
+
+#include "TLine.h"
+#include "TLatex.h"
+#include "TMarker.h"
+#include "TPave.h"
+#include "TH1.h"
+
+void ATLAS_LABEL(Double_t x,Double_t y,Color_t color) 
+{
+  TLatex l; //l.SetTextAlign(12); l.SetTextSize(tsize); 
+  l.SetNDC();
+  l.SetTextFont(72);
+  l.SetTextColor(color);
+  l.DrawLatex(x,y,"ATLAS");
+}
+
+TGraphErrors* myTGraphErrorsDivide(TGraphErrors* g1,TGraphErrors* g2) {
+ 
+  const Int_t debug=0; 
+
+  if (!g1) printf("**myTGraphErrorsDivide: g1 does not exist !  \n"); 
+  if (!g2) printf("**myTGraphErrorsDivide: g2 does not exist !  \n"); 
+
+
+  Int_t n1=g1->GetN();
+  Int_t n2=g2->GetN();
+
+  if (n1!=n2) {
+   printf("**myTGraphErrorsDivide: vector do not have same number of entries !  \n"); 
+  }
+
+  TGraphErrors* g3= new TGraphErrors();
+
+  Double_t  x1=0., y1=0., x2=0., y2=0.;
+  Double_t dx1=0.,dy1=0.,       dy2=0.;
+
+  Int_t iv=0;
+  for (Int_t i1=0; i1<n1; i1++) {
+   for (Int_t i2=0; i2<n2; i2++) {
+     //if (debug) printf("**myTGraphErrorsDivide: %d  %d !  \n",i1,i2);
+
+    g1->GetPoint(i1,x1,y1);
+    g2->GetPoint(i2,x2,y2);
+    if (x1!=x2) {
+      //printf("**myTGraphErrorsDivide: %d x1!=x2  %f %f  !  \n",iv,x1,x2);
+    }else{
+      //if (debug) printf("**myTGraphErrorsDivide: %d x1=x2  %f %f  !  \n",iv,x1,x2);
+     dx1  = g1->GetErrorX(i1);
+     if (y1!=0) dy1  = g1->GetErrorY(i1)/y1;
+     if (y2!=0) dy2  = g2->GetErrorY(i2)/y2;
+   
+     if (debug)
+      printf("**myTGraphErrorsDivide: %d x1=%f x2=%f y1=%f y2=%f  \n",iv,x1,x2,y1,y2);
+
+     if (y2!=0.) g3->SetPoint(iv, x1,y1/y2);
+     else        g3->SetPoint(iv, x1,y2);
+   
+     Double_t e=0.;
+     if (y1!=0 && y2!=0) e=std::sqrt(dy1*dy1+dy2*dy2)*(y1/y2); 
+     g3->SetPointError(iv,dx1,e);
+
+
+     if (debug) {
+       //Double_t g3y, g3x,g3e;
+       //g3->GetPoint(iv, g3y,g3x);
+       //g3e=g3->GetErrorY(iv);
+       //printf("%d g3y= %f g3e=%f  \n",iv,g3y,g3e);
+     }
+     iv++;
+    }
+    //    printf("**myTGraphErrorsDivide: ...next  \n");
+   }
+  }  
+  return g3;
+
+}
+
+
+TGraphAsymmErrors* myTGraphErrorsDivide(TGraphAsymmErrors* g1,TGraphAsymmErrors* g2) {
+
+  const Int_t debug=0; 
+
+  TGraphAsymmErrors* g3= new TGraphAsymmErrors();
+  Int_t n1=g1->GetN();
+  Int_t n2=g2->GetN();
+
+  if (n1!=n2) {
+    printf(" vectors do not have same number of entries !  \n");
+   return g3;
+  }
+
+  Double_t   x1=0.,   y1=0., x2=0., y2=0.;
+  Double_t dx1h=0., dx1l=0.;
+  Double_t dy1h=0., dy1l=0.;
+  Double_t dy2h=0., dy2l=0.;
+
+  Double_t* X1 = g1->GetX();
+  Double_t* Y1 = g1->GetY();
+  Double_t* EXhigh1 = g1->GetEXhigh();
+  Double_t* EXlow1 =  g1->GetEXlow();
+  Double_t* EYhigh1 = g1->GetEYhigh();
+  Double_t* EYlow1 =  g1->GetEYlow();
+
+  Double_t* X2 = g2->GetX();
+  Double_t* Y2 = g2->GetY();
+  Double_t* EXhigh2 = g2->GetEXhigh();
+  Double_t* EXlow2 =  g2->GetEXlow();
+  Double_t* EYhigh2 = g2->GetEYhigh();
+  Double_t* EYlow2 =  g2->GetEYlow();
+
+  for (Int_t i=0; i<g1->GetN(); i++) {
+    g1->GetPoint(i,x1,y1);
+    g2->GetPoint(i,x2,y2);
+    dx1h  = EXhigh1[i];
+    dx1l  = EXlow1[i];
+    if (y1!=0.) dy1h  = EYhigh1[i]/y1;
+    else        dy1h  = 0.;
+    if (y2!=0.) dy2h  = EYhigh2[i]/y2;
+    else        dy2h  = 0.;
+    if (y1!=0.) dy1l  = EYlow1 [i]/y1;
+    else        dy1l  = 0.;
+    if (y2!=0.) dy2l  = EYlow2 [i]/y2;
+    else        dy2l  = 0.;
+   
+    //if (debug)
+    //printf("%d x1=%f x2=%f y1=%f y2=%f  \n",i,x1,x2,y1,y2);
+    if (debug)
+      printf("%d dy1=%f %f dy2=%f %f sqrt= %f %f \n",i,dy1l,dy1h,dy2l,dy2h,
+	     std::sqrt(dy1l*dy1l+dy2l*dy2l), std::sqrt(dy1h*dy1h+dy2h*dy2h));
+
+    if (y2!=0.) g3->SetPoint(i, x1,y1/y2);
+    else       g3->SetPoint(i, x1,y2);
+    Double_t el=0.; Double_t eh=0.;
+
+    if (y1!=0. && y2!=0.) el=std::sqrt(dy1l*dy1l+dy2l*dy2l)*(y1/y2);
+    if (y1!=0. && y2!=0.) eh=std::sqrt(dy1h*dy1h+dy2h*dy2h)*(y1/y2);
+
+    if (debug) printf("dx1h=%f  dx1l=%f  el=%f  eh=%f \n",dx1h,dx1l,el,eh);
+    g3->SetPointError(i,dx1h,dx1l,el,eh);
+
+  }  
+  return g3;
+
+}
+
+
+
+TGraphAsymmErrors* myMakeBand(TGraphErrors* g0, TGraphErrors* g1,TGraphErrors* g2) {
+  // default is g0
+    //const Int_t debug=0;
+
+  TGraphAsymmErrors* g3= new TGraphAsymmErrors();
+
+  Double_t  x1=0., y1=0., x2=0., y2=0., y0=0, x3=0.;
+  //Double_t dx1=0.;
+  Double_t dum;
+  for (Int_t i=0; i<g1->GetN(); i++) {
+    g0->GetPoint(i, x1,y0);
+    g1->GetPoint(i, x1,y1);
+    g2->GetPoint(i, x1,y2);
+
+    // if (y1==0) y1=1;
+    //if (y2==0) y2=1;
+
+    if (i==g1->GetN()-1) x2=x1;
+    else                 g2->GetPoint(i+1,x2,dum);
+
+    if (i==0)            x3=x1;
+    else                 g2->GetPoint(i-1,x3,dum);
+
+    Double_t tmp=y2;
+    if (y1<y2) {y2=y1; y1=tmp;}
+    //Double_t y3=1.;
+    Double_t y3=y0;
+    g3->SetPoint(i,x1,y3);
+
+    Double_t binwl=(x1-x3)/2.;
+    Double_t binwh=(x2-x1)/2.;
+    if (binwl==0.)  binwl= binwh;
+    if (binwh==0.)  binwh= binwl;
+    g3->SetPointError(i,binwl,binwh,(y3-y2),(y1-y3));
+
+  }
+  return g3;
+
+}
+
+void myAddtoBand(TGraphErrors* g1, TGraphAsymmErrors* g2) {
+
+  Double_t  x1=0., y1=0.,  y2=0., y0=0;
+  //Double_t dx1=0.;
+  //Double_t dum;
+
+  if (g1->GetN()!=g2->GetN())
+    std::cout << " graphs have not the same # of elements " << std::endl;
+
+  Double_t* EYhigh = g2-> GetEYhigh();
+  Double_t* EYlow  = g2-> GetEYlow();
+
+  for (Int_t i=0; i<g1->GetN(); i++) {
+    g1->GetPoint(i, x1,y1);
+    g2->GetPoint(i, x1,y2);
+
+    if (y1==0) y1=1;
+    if (y2==0) y2=1;
+
+    //    if (i==g1->GetN()-1) x2=x1;
+    //    else                 g2->GetPoint(i+1,x2,dum);
+    //    if (i==0)            x3=x1;
+    //    else                 g2->GetPoint(i-1,x3,dum);
+
+    Double_t eyh=0., eyl=0.;
+    //if (y1<y2) {y2=y1; y1=tmp;}
+    //Double_t y3=1.;
+
+    //printf("%d: y1=%f y2=%f Eyhigh= %f Eylow= %f \n",i,y1,y2,EYhigh[i],EYlow[i]);
+
+    y0=y1-y2;
+    if (y0!=0) {
+     if (y0>0){
+      eyh=EYhigh[i];
+      eyh=std::sqrt(eyh*eyh+y0*y0);
+      //printf("high: %d: y0=%f eyh=%f  \n",i,y0,eyh);
+      g2->SetPointEYhigh(i,eyh);
+     } else {
+      eyl=EYlow[i];
+      eyl=std::sqrt(eyl*eyl+y0*y0);
+      // printf("low: %d: y0=%f eyl=%f  \n",i,y0,eyl);
+      g2->SetPointEYlow (i,eyl);
+     }
+    }
+  }
+  return;
+
+}
+
+TGraphErrors* TH1TOTGraph(TH1 *h1){
+
+
+  if (!h1) std::cout << "TH1TOTGraph: histogram not found !" << std::endl;
+
+ TGraphErrors* g1= new TGraphErrors();
+
+ Double_t x, y, ex, ey;
+ for (Int_t i=0; i<h1->GetNbinsX(); i++) {
+   y=h1->GetBinContent(i);
+  ey=h1->GetBinError(i);
+   x=h1->GetBinCenter(i);
+  ex=h1->GetBinWidth(i);
+
+  //   cout << " x,y = " << x << " " << y << " ex,ey = " << ex << " " << ey << endl;
+
+   g1->SetPoint(i,x,y);
+   g1->SetPointError(i,ex,ey);
+
+ }
+
+ //g1->Print();
+
+ return g1;
+}
+
+void myText(Double_t x,Double_t y,Color_t color,char *text) {
+
+  //Double_t tsize=0.05;
+  TLatex l; //l.SetTextAlign(12); l.SetTextSize(tsize); 
+  l.SetNDC();
+  l.SetTextColor(color);
+  l.DrawLatex(x,y,text);
+}
+
+void myText2(Double_t x,Double_t y,Color_t color,char *text,Double_t tsize) {
+
+  //Double_t tsize=0.05;
+  TLatex l; //l.SetTextAlign(12); 
+  l.SetTextSize(tsize); 
+  l.SetNDC();
+  l.SetTextColor(color);
+  l.DrawLatex(x,y,text);
+}
+ 
+
+void myBoxText(Double_t x, Double_t y,Double_t boxsize,Int_t mcolor,char *text, Double_t tsize, Int_t fstyle) 
+{
+
+  //Double_t tsize=0.06;
+
+  TLatex l; l.SetTextAlign(12); 
+  l.SetTextSize(tsize); 
+  l.SetNDC();
+  l.DrawLatex(x,y,text);
+
+  Double_t y1=y-0.25*tsize;
+  Double_t y2=y+0.25*tsize;
+  Double_t x2=x-0.3*tsize;
+  Double_t x1=x2-boxsize;
+
+  printf("x1= %f x2= %f y1= %f y2= %f \n",x1,x2,y1,y2);
+
+  TPave *mbox= new TPave(x1,y1,x2,y2,0,"NDC");
+
+  
+  mbox->SetFillColor(mcolor);
+  mbox->SetFillStyle(fstyle);
+  mbox->Draw("l");
+/*
+  TLine mline;
+  mline.SetLineWidth(4);
+  mline.SetLineColor(1);
+  mline.SetLineStyle(1);
+  Double_t y_new=(y1+y2)/2.;
+  mline.DrawLineNDC(x1,y_new,x2,y_new);
+*/
+}
+
+
+void myMarkerText(Double_t x,Double_t y,Int_t color,Int_t mstyle,char *text,Float_t msize) 
+{
+  Double_t tsize=0.06;
+  TMarker *marker = new TMarker(x-(0.8*tsize),y,8);
+  marker->SetMarkerColor(color);  marker->SetNDC();
+  marker->SetMarkerStyle(mstyle);
+  marker->SetMarkerSize(msize);
+  marker->Draw();
+
+  TMarker *marker2 = new TMarker(x-(0.8*tsize),y,8);
+  marker2->SetMarkerColor(color);  marker2->SetNDC();
+  marker2->SetMarkerStyle(2);
+  marker2->SetMarkerSize(2*msize);
+  marker2->Draw();
+
+  TLatex l; l.SetTextAlign(12); //l.SetTextSize(tsize); 
+  l.SetNDC();
+  l.DrawLatex(x,y,text);
+}
+
+void myMarkerText(Double_t x,Double_t y,Int_t color,Int_t mstyle,char *text,Float_t msize, Double_t tsize) 
+{
+  //Double_t tsize=0.06;
+  TMarker *marker = new TMarker(x-(0.8*tsize),y,8);
+  marker->SetMarkerColor(color);  marker->SetNDC();
+  marker->SetMarkerStyle(mstyle);
+  marker->SetMarkerSize(msize);
+  marker->Draw();
+
+  TMarker *marker2 = new TMarker(x-(0.8*tsize),y,8);
+  marker2->SetMarkerColor(color);  marker2->SetNDC();
+  marker2->SetMarkerStyle(2);
+  marker2->SetMarkerSize(2*msize);
+  marker2->Draw();
+
+  TLatex l; l.SetTextAlign(12); 
+  l.SetTextSize(tsize); 
+  l.SetNDC();
+  l.DrawLatex(x,y,text);
+}
+
diff --git a/include/AtlasStyle/AtlasUtils.h b/include/AtlasStyle/AtlasUtils.h
new file mode 100644
index 0000000000000000000000000000000000000000..7d06972d74b7c94f009f7eaaff81d3dcf22f909c
--- /dev/null
+++ b/include/AtlasStyle/AtlasUtils.h
@@ -0,0 +1,37 @@
+//
+//   @file    AtlasUtils.h         
+//   
+//
+//   @author M.Sutton
+// 
+//   Copyright (C) 2010 Atlas Collaboration
+//
+//   $Id: AtlasUtils.h, v0.0   Thu 25 Mar 2010 10:34:20 CET $
+
+
+#ifndef __ATLASUTILS_H
+#define __ATLASUTILS_H
+
+#include "TGraphErrors.h"
+#include "TGraphAsymmErrors.h"
+
+void ATLAS_LABEL(Double_t x,Double_t y,Color_t color=1); 
+
+TGraphErrors* myTGraphErrorsDivide(TGraphErrors* g1,TGraphErrors* g2);
+
+TGraphAsymmErrors* myTGraphErrorsDivide(TGraphAsymmErrors* g1,TGraphAsymmErrors* g2);
+
+TGraphAsymmErrors* myMakeBand(TGraphErrors* g0, TGraphErrors* g1,TGraphErrors* g2);
+
+void myAddtoBand(TGraphErrors* g1, TGraphAsymmErrors* g2);
+
+TGraphErrors* TH1TOTGraph(TH1 *h1);
+
+void myText(Double_t x,Double_t y,Color_t color,char *text);
+
+void myBoxText(Double_t x, Double_t y,Double_t boxsize,Int_t mcolor,char *text);
+
+void myMarkerText(Double_t x,Double_t y,Int_t color,Int_t mstyle,char *text,Float_t msize=2.); 
+void myMarkerText(Double_t x,Double_t y,Int_t color,Int_t mstyle,char *text,Float_t msize, Double_t tsize) ;
+
+#endif // __ATLASUTILS_H
diff --git a/include/AtlasStyle/AtlasUtils.o b/include/AtlasStyle/AtlasUtils.o
new file mode 100644
index 0000000000000000000000000000000000000000..2bc4671cf3fbafbae2bdb633915df32c733911fc
Binary files /dev/null and b/include/AtlasStyle/AtlasUtils.o differ
diff --git a/include/AtlasStyle/AtlasUtils.py b/include/AtlasStyle/AtlasUtils.py
new file mode 100644
index 0000000000000000000000000000000000000000..d313beb0d3e0c3f32024515d1e1016620053cdbd
--- /dev/null
+++ b/include/AtlasStyle/AtlasUtils.py
@@ -0,0 +1,3 @@
+from ROOT import *
+ROOT.gROOT.LoadMacro("AtlasUtils.C") 
+
diff --git a/include/AtlasStyle/AtlasUtils_original.C b/include/AtlasStyle/AtlasUtils_original.C
new file mode 100644
index 0000000000000000000000000000000000000000..cee343d2aacd87249cb0357a947133c5149cb171
--- /dev/null
+++ b/include/AtlasStyle/AtlasUtils_original.C
@@ -0,0 +1,326 @@
+
+#include <iostream>
+#include <cmath>
+
+#include "AtlasUtils.h"
+
+#include "TLine.h"
+#include "TLatex.h"
+#include "TMarker.h"
+#include "TPave.h"
+#include "TH1.h"
+
+void ATLAS_LABEL(Double_t x,Double_t y,Color_t color) 
+{
+  TLatex l; //l.SetTextAlign(12); l.SetTextSize(tsize); 
+  l.SetNDC();
+  l.SetTextFont(72);
+  l.SetTextColor(color);
+  l.DrawLatex(x,y,"ATLAS");
+}
+
+TGraphErrors* myTGraphErrorsDivide(TGraphErrors* g1,TGraphErrors* g2) {
+ 
+  const Int_t debug=0; 
+
+  if (!g1) printf("**myTGraphErrorsDivide: g1 does not exist !  \n"); 
+  if (!g2) printf("**myTGraphErrorsDivide: g2 does not exist !  \n"); 
+
+
+  Int_t n1=g1->GetN();
+  Int_t n2=g2->GetN();
+
+  if (n1!=n2) {
+   printf("**myTGraphErrorsDivide: vector do not have same number of entries !  \n"); 
+  }
+
+  TGraphErrors* g3= new TGraphErrors();
+
+  Double_t  x1=0., y1=0., x2=0., y2=0.;
+  Double_t dx1=0.,dy1=0.,       dy2=0.;
+
+  Int_t iv=0;
+  for (Int_t i1=0; i1<n1; i1++) {
+   for (Int_t i2=0; i2<n2; i2++) {
+     //if (debug) printf("**myTGraphErrorsDivide: %d  %d !  \n",i1,i2);
+
+    g1->GetPoint(i1,x1,y1);
+    g2->GetPoint(i2,x2,y2);
+    if (x1!=x2) {
+      //printf("**myTGraphErrorsDivide: %d x1!=x2  %f %f  !  \n",iv,x1,x2);
+    }else{
+      //if (debug) printf("**myTGraphErrorsDivide: %d x1=x2  %f %f  !  \n",iv,x1,x2);
+     dx1  = g1->GetErrorX(i1);
+     if (y1!=0) dy1  = g1->GetErrorY(i1)/y1;
+     if (y2!=0) dy2  = g2->GetErrorY(i2)/y2;
+   
+     if (debug)
+      printf("**myTGraphErrorsDivide: %d x1=%f x2=%f y1=%f y2=%f  \n",iv,x1,x2,y1,y2);
+
+     if (y2!=0.) g3->SetPoint(iv, x1,y1/y2);
+     else        g3->SetPoint(iv, x1,y2);
+   
+     Double_t e=0.;
+     if (y1!=0 && y2!=0) e=std::sqrt(dy1*dy1+dy2*dy2)*(y1/y2); 
+     g3->SetPointError(iv,dx1,e);
+
+
+     if (debug) {
+       //Double_t g3y, g3x,g3e;
+       //g3->GetPoint(iv, g3y,g3x);
+       //g3e=g3->GetErrorY(iv);
+       //printf("%d g3y= %f g3e=%f  \n",iv,g3y,g3e);
+     }
+     iv++;
+    }
+    //    printf("**myTGraphErrorsDivide: ...next  \n");
+   }
+  }  
+  return g3;
+
+}
+
+
+TGraphAsymmErrors* myTGraphErrorsDivide(TGraphAsymmErrors* g1,TGraphAsymmErrors* g2) {
+
+  const Int_t debug=0; 
+
+  TGraphAsymmErrors* g3= new TGraphAsymmErrors();
+  Int_t n1=g1->GetN();
+  Int_t n2=g2->GetN();
+
+  if (n1!=n2) {
+    printf(" vectors do not have same number of entries !  \n");
+   return g3;
+  }
+
+  Double_t   x1=0.,   y1=0., x2=0., y2=0.;
+  Double_t dx1h=0., dx1l=0.;
+  Double_t dy1h=0., dy1l=0.;
+  Double_t dy2h=0., dy2l=0.;
+
+  Double_t* X1 = g1->GetX();
+  Double_t* Y1 = g1->GetY();
+  Double_t* EXhigh1 = g1->GetEXhigh();
+  Double_t* EXlow1 =  g1->GetEXlow();
+  Double_t* EYhigh1 = g1->GetEYhigh();
+  Double_t* EYlow1 =  g1->GetEYlow();
+
+  Double_t* X2 = g2->GetX();
+  Double_t* Y2 = g2->GetY();
+  Double_t* EXhigh2 = g2->GetEXhigh();
+  Double_t* EXlow2 =  g2->GetEXlow();
+  Double_t* EYhigh2 = g2->GetEYhigh();
+  Double_t* EYlow2 =  g2->GetEYlow();
+
+  for (Int_t i=0; i<g1->GetN(); i++) {
+    g1->GetPoint(i,x1,y1);
+    g2->GetPoint(i,x2,y2);
+    dx1h  = EXhigh1[i];
+    dx1l  = EXlow1[i];
+    if (y1!=0.) dy1h  = EYhigh1[i]/y1;
+    else        dy1h  = 0.;
+    if (y2!=0.) dy2h  = EYhigh2[i]/y2;
+    else        dy2h  = 0.;
+    if (y1!=0.) dy1l  = EYlow1 [i]/y1;
+    else        dy1l  = 0.;
+    if (y2!=0.) dy2l  = EYlow2 [i]/y2;
+    else        dy2l  = 0.;
+   
+    //if (debug)
+    //printf("%d x1=%f x2=%f y1=%f y2=%f  \n",i,x1,x2,y1,y2);
+    if (debug)
+      printf("%d dy1=%f %f dy2=%f %f sqrt= %f %f \n",i,dy1l,dy1h,dy2l,dy2h,
+	     std::sqrt(dy1l*dy1l+dy2l*dy2l), std::sqrt(dy1h*dy1h+dy2h*dy2h));
+
+    if (y2!=0.) g3->SetPoint(i, x1,y1/y2);
+    else       g3->SetPoint(i, x1,y2);
+    Double_t el=0.; Double_t eh=0.;
+
+    if (y1!=0. && y2!=0.) el=std::sqrt(dy1l*dy1l+dy2l*dy2l)*(y1/y2);
+    if (y1!=0. && y2!=0.) eh=std::sqrt(dy1h*dy1h+dy2h*dy2h)*(y1/y2);
+
+    if (debug) printf("dx1h=%f  dx1l=%f  el=%f  eh=%f \n",dx1h,dx1l,el,eh);
+    g3->SetPointError(i,dx1h,dx1l,el,eh);
+
+  }  
+  return g3;
+
+}
+
+
+
+TGraphAsymmErrors* myMakeBand(TGraphErrors* g0, TGraphErrors* g1,TGraphErrors* g2) {
+  // default is g0
+    //const Int_t debug=0;
+
+  TGraphAsymmErrors* g3= new TGraphAsymmErrors();
+
+  Double_t  x1=0., y1=0., x2=0., y2=0., y0=0, x3=0.;
+  //Double_t dx1=0.;
+  Double_t dum;
+  for (Int_t i=0; i<g1->GetN(); i++) {
+    g0->GetPoint(i, x1,y0);
+    g1->GetPoint(i, x1,y1);
+    g2->GetPoint(i, x1,y2);
+
+    // if (y1==0) y1=1;
+    //if (y2==0) y2=1;
+
+    if (i==g1->GetN()-1) x2=x1;
+    else                 g2->GetPoint(i+1,x2,dum);
+
+    if (i==0)            x3=x1;
+    else                 g2->GetPoint(i-1,x3,dum);
+
+    Double_t tmp=y2;
+    if (y1<y2) {y2=y1; y1=tmp;}
+    //Double_t y3=1.;
+    Double_t y3=y0;
+    g3->SetPoint(i,x1,y3);
+
+    Double_t binwl=(x1-x3)/2.;
+    Double_t binwh=(x2-x1)/2.;
+    if (binwl==0.)  binwl= binwh;
+    if (binwh==0.)  binwh= binwl;
+    g3->SetPointError(i,binwl,binwh,(y3-y2),(y1-y3));
+
+  }
+  return g3;
+
+}
+
+void myAddtoBand(TGraphErrors* g1, TGraphAsymmErrors* g2) {
+
+  Double_t  x1=0., y1=0.,  y2=0., y0=0;
+  //Double_t dx1=0.;
+  //Double_t dum;
+
+  if (g1->GetN()!=g2->GetN())
+    std::cout << " graphs have not the same # of elements " << std::endl;
+
+  Double_t* EYhigh = g2-> GetEYhigh();
+  Double_t* EYlow  = g2-> GetEYlow();
+
+  for (Int_t i=0; i<g1->GetN(); i++) {
+    g1->GetPoint(i, x1,y1);
+    g2->GetPoint(i, x1,y2);
+    
+    if ( y1==0 || y2==0 ) { 
+      std::cerr << "check these points very carefully : myAddtoBand() : point " << i << std::endl;  
+    }
+    //    if (y1==0) y1=1;
+    //    if (y2==0) y2=1;
+
+    //    if (i==g1->GetN()-1) x2=x1;
+    //    else                 g2->GetPoint(i+1,x2,dum);
+    //    if (i==0)            x3=x1;
+    //    else                 g2->GetPoint(i-1,x3,dum);
+
+    Double_t eyh=0., eyl=0.;
+    //if (y1<y2) {y2=y1; y1=tmp;}
+    //Double_t y3=1.;
+
+    //printf("%d: y1=%f y2=%f Eyhigh= %f Eylow= %f \n",i,y1,y2,EYhigh[i],EYlow[i]);
+
+    y0=y1-y2;
+    if (y0!=0) {
+     if (y0>0){
+      eyh=EYhigh[i];
+      eyh=std::sqrt(eyh*eyh+y0*y0);
+      //printf("high: %d: y0=%f eyh=%f  \n",i,y0,eyh);
+      g2->SetPointEYhigh(i,eyh);
+     } else {
+      eyl=EYlow[i];
+      eyl=std::sqrt(eyl*eyl+y0*y0);
+      // printf("low: %d: y0=%f eyl=%f  \n",i,y0,eyl);
+      g2->SetPointEYlow (i,eyl);
+     }
+    }
+  }
+  return;
+
+}
+
+TGraphErrors* TH1TOTGraph(TH1 *h1){
+
+
+  if (!h1) std::cout << "TH1TOTGraph: histogram not found !" << std::endl;
+
+ TGraphErrors* g1= new TGraphErrors();
+
+ Double_t x, y, ex, ey;
+ for (Int_t i=1 ; i<=h1->GetNbinsX(); i++) {
+   y=h1->GetBinContent(i);
+   ey=h1->GetBinError(i);
+   x=h1->GetBinCenter(i);
+   ex=h1->GetBinWidth(i);
+   
+  //   cout << " x,y = " << x << " " << y << " ex,ey = " << ex << " " << ey << endl;
+
+   g1->SetPoint(i-1,x,y);
+   g1->SetPointError(i-1,ex,ey);
+
+ }
+
+ //g1->Print();
+
+ return g1;
+}
+
+void myText(Double_t x,Double_t y,Color_t color, const char *text) {
+
+  //Double_t tsize=0.05;
+  TLatex l; //l.SetTextAlign(12); l.SetTextSize(tsize); 
+  l.SetNDC();
+  l.SetTextColor(color);
+  l.DrawLatex(x,y,text);
+}
+ 
+
+void myBoxText(Double_t x, Double_t y,Double_t boxsize,Int_t mcolor,const char *text) 
+{
+
+  Double_t tsize=0.06;
+
+  TLatex l; l.SetTextAlign(12); //l.SetTextSize(tsize); 
+  l.SetNDC();
+  l.DrawLatex(x,y,text);
+
+  Double_t y1=y-0.25*tsize;
+  Double_t y2=y+0.25*tsize;
+  Double_t x2=x-0.3*tsize;
+  Double_t x1=x2-boxsize;
+
+  printf("x1= %f x2= %f y1= %f y2= %f \n",x1,x2,y1,y2);
+
+  TPave *mbox= new TPave(x1,y1,x2,y2,0,"NDC");
+
+  mbox->SetFillColor(mcolor);
+  mbox->SetFillStyle(1001);
+  mbox->Draw();
+
+  TLine mline;
+  mline.SetLineWidth(4);
+  mline.SetLineColor(1);
+  mline.SetLineStyle(1);
+  Double_t y_new=(y1+y2)/2.;
+  mline.DrawLineNDC(x1,y_new,x2,y_new);
+
+}
+
+
+void myMarkerText(Double_t x,Double_t y,Int_t color,Int_t mstyle, const char *text,Float_t msize) 
+{
+  Double_t tsize=0.06;
+  TMarker *marker = new TMarker(x-(0.4*tsize),y,8);
+  marker->SetMarkerColor(color);  marker->SetNDC();
+  marker->SetMarkerStyle(mstyle);
+  marker->SetMarkerSize(msize);
+  marker->Draw();
+
+  TLatex l; l.SetTextAlign(12); //l.SetTextSize(tsize); 
+  l.SetNDC();
+  l.DrawLatex(x,y,text);
+}
+
diff --git a/include/AtlasStyle/AtlasUtils_original.h b/include/AtlasStyle/AtlasUtils_original.h
new file mode 100644
index 0000000000000000000000000000000000000000..1f869ab185570fb4e9bed502f9c26b2113239c3f
--- /dev/null
+++ b/include/AtlasStyle/AtlasUtils_original.h
@@ -0,0 +1,36 @@
+//
+//   @file    AtlasUtils.h         
+//   
+//
+//   @author M.Sutton
+// 
+//   Copyright (C) 2010 Atlas Collaboration
+//
+//   $Id: AtlasUtils.h, v0.0   Thu 25 Mar 2010 10:34:20 CET $
+
+
+#ifndef __ATLASUTILS_H
+#define __ATLASUTILS_H
+
+#include "TGraphErrors.h"
+#include "TGraphAsymmErrors.h"
+
+void ATLAS_LABEL(Double_t x,Double_t y,Color_t color=1); 
+
+TGraphErrors* myTGraphErrorsDivide(TGraphErrors* g1,TGraphErrors* g2);
+
+TGraphAsymmErrors* myTGraphErrorsDivide(TGraphAsymmErrors* g1,TGraphAsymmErrors* g2);
+
+TGraphAsymmErrors* myMakeBand(TGraphErrors* g0, TGraphErrors* g1,TGraphErrors* g2);
+
+void myAddtoBand(TGraphErrors* g1, TGraphAsymmErrors* g2);
+
+TGraphErrors* TH1TOTGraph(TH1 *h1);
+
+void myText(Double_t x,Double_t y,Color_t color,const char *text);
+
+void myBoxText(Double_t x, Double_t y,Double_t boxsize,Int_t mcolor,const char *text);
+
+void myMarkerText(Double_t x,Double_t y,Int_t color,Int_t mstyle,const char *text,Float_t msize=2.); 
+
+#endif // __ATLASUTILS_H
diff --git a/include/AtlasStyle/BasicExample.C b/include/AtlasStyle/BasicExample.C
new file mode 100644
index 0000000000000000000000000000000000000000..2f7636ff5ce52795cf593c10ecf39a9a81c7b378
--- /dev/null
+++ b/include/AtlasStyle/BasicExample.C
@@ -0,0 +1,46 @@
+
+#include "TH1F.h"
+#include "TPad.h"
+#include "TRandom.h"
+
+#include "AtlasLabels.h"
+#include "AtlasStyle.h"
+
+#ifdef __CLING__
+// these are not headers - do not treat them as such - needed for ROOT6
+#include "AtlasLabels.C"
+#endif
+
+void BasicExample()
+{
+  SetAtlasStyle();
+
+  // generate some random data
+  TH1F* hpx  = new TH1F("hpx","This is the px distribution",100,-4,4);
+  gRandom->SetSeed();
+  for (Int_t i = 0; i < 25000; i++) {
+    hpx->Fill(gRandom->Gaus());
+  }
+  hpx->GetXaxis()->SetTitle("random variable [unit]");
+  hpx->GetYaxis()->SetTitle("#frac{dN}{dr} [unit^{-1}]");
+  hpx->SetMaximum(1000.);
+
+  // and plot it
+  hpx->Draw();
+
+#ifdef __CINT__
+  gROOT->LoadMacro("AtlasLabels.C");
+#endif
+
+  ATLASVersion("1.000000000");
+
+  return;
+}
+
+#ifndef __CINT__
+int main() { 
+  BasicExample();
+  gPad->Print("basic.png");
+  return 0;
+}
+#endif
diff --git a/include/AtlasStyle/ChangeLog b/include/AtlasStyle/ChangeLog
new file mode 100644
index 0000000000000000000000000000000000000000..94985f45c734ff9384ec6e6148fe68ebdafc65ff
--- /dev/null
+++ b/include/AtlasStyle/ChangeLog
@@ -0,0 +1,70 @@
+2017-05-05 Stephane Willocq <Stephane.Willocq@cern.ch>
+	* README: Update instructions
+	* Tag atlasstyle-00-04-02
+	
+2017-05-05 Stephane Willocq <Stephane.Willocq@cern.ch>
+	* SetErrorX to 0.0001 in order to suppress horizontal error bars
+	  in accordance to ATLAS figure guidelines
+	* Tag atlasstyle-00-04-01
+	
+2017-05-05 Stephane Willocq <Stephane.Willocq@cern.ch>
+	* Major update for compatibility with ROOT6
+	* Tag atlasstyle-00-04-00
+	
+2012-08-20 Marco Delmastro <Marco.Delmastro@cern.ch>
+	* Added changed from Mark Sutton
+	* Tag atlasstyle-00-03-05
+	
+2010-10-01 Marco Delmastro <Marco.Delmastro@cern.ch>
+	* Atlaslabels::ATLASLabel() parametrized "Preliminary" text
+	* Tag atlasstyle-00-03-04
+	
+2010-06-22 Marco Delmastro <Marco.Delmastro@cern.ch>
+	* AtlasLabels.h: fixed header typo
+	* tag atlasstyle-00-03-03
+	
+2010-06-16 Marco Delmastro <Marco.Delmastro@cern.ch>
+	* Added python wrappers for AtlasUtils.C and AtlasStyle.C
+	* tag atlasstyle-00-03-02
+	
+2010-04-20 Marco Delmastro <Marco.Delmastro@cern.ch>
+	* AtlasStyle.C and AtlasExample.C: bug fixes in includes to
+	  run/compile on linux machines
+	* tag atlasstyle-00-03-01
+	
+2010-04-15 Marco Delmastro <Marco.Delmastro@cern.ch>
+	* Improved macro versions from Mark Sutton:
+	  - Macros can be compiled to proper executable.
+	  - Modified the ATLASLabel function in AtlasUtils.C so that it
+	    calculates the space between "ATLAS" and "Preliminary"
+	    dependent on the canvas dimensions.
+	  - Fixed bugs in AtlasExample.C 
+	* tag atlasstyle-00-03-00
+	
+2010-02-05 Marco Delmastro <Marco.Delmastro@cern.ch>
+	* Added headers to AtlasUtils.C to allow compilation
+	* tag atlasstyle-00-02-05
+	
+2010-01-21 Marco Delmastro <Marco.Delmastro@cern.ch>
+	* Force removal of error bar caps
+	* Reduced marker size in example plot legend
+	* tag atlasstyle-00-02-04
+	
+2009-12-04 Marco Delmastro <Marco.Delmastro@cern.ch>
+	* Fix typo in AtlasExample.C
+	* tag atlasstyle-00-02-03
+	
+2009-11-06 Marco Delmastro <Marco.Delmastro@cern.ch>
+	* Fix typo in README instruction
+	* tag atlasstyle-00-02-02
+	
+2009-11-03 Marco Delmastro <Marco.Delmastro@cern.ch>
+	* Added TestLabel.C
+	
+2009-09-24 Marco Delmastro <Marco.Delmastro@cern.ch>
+	* Package moved from private SVN repository to PubCom SVN repo
+	* tag atlasstyle-00-02-01
+	
+2009-07-31 Marco Delmastro <Marco.Delmastro@cern.ch>
+	* Initial import to CVS
+	* tag atlasstyle-00-02-00
diff --git a/include/AtlasStyle/Makefile b/include/AtlasStyle/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..5a20b8c4d1158c8d8b271f7688e9f60dae97673f
--- /dev/null
+++ b/include/AtlasStyle/Makefile
@@ -0,0 +1,28 @@
+
+ROOTINC = $(shell root-config --cflags)
+ROOTLIB = $(shell root-config --libs)
+
+
+OBJ = AtlasLabels.o AtlasStyle.o AtlasUtils.o TestLabel.o
+
+ATLASOBJ = AtlasExample.o $(OBJS)
+BASICOBJ = BasicExample.o $(OBJS)
+
+all : atlastest basictest
+
+.SUFFIXES: .C .o
+
+.C.o :
+	g++ $(ROOTINC) -c $<
+
+atlastest : $(OBJ)
+	g++  -o $@ $(OBJ) $(ROOTLIB)
+
+basictest : $(OBJ)
+	g++  -o $@ $(OBJ) $(ROOTLIB)
+
+archive : clean
+	cd .. ; tar -czf atlasstyle-00-04-00.tgz atlasstyle-00-04-00		  
+
+clean : 
+	rm -rf *.o *~
diff --git a/include/AtlasStyle/README b/include/AtlasStyle/README
new file mode 100644
index 0000000000000000000000000000000000000000..9980072522471e1880c04eb81f14c834945324d1
--- /dev/null
+++ b/include/AtlasStyle/README
@@ -0,0 +1,72 @@
+=======================================================================
+ATLAS Root style
+=======================================================================
+
+This package contains the following files:
+
+- AtlasStyle.C: it contains the actual style definition. You can call it
+  from any macro by adding the following line near the top of the macro
+  (this line is not required if it is included in your rootlogon.C):
+
+  #include "AtlasStyle.C"
+
+  and then invoking the style function with:
+
+  SetAtlasStyle();
+
+- AtlasStyle.py: example of python wrapper for AtlasStyle.C, in case
+  you prefer to use pyROOT.
+
+- rootlogon.C: automatically loads the ATLAS style. Put in your
+  working directory together with StyleAtlas.C, and you'll get the
+  ATLAS style loaded by default any time you launch ROOT in that
+  directory.
+
+- dot.rootrc: this is an example of the .rootrc file you could put in
+  you home directory to get the ATLAS style loaded any time you launch
+  ROOT from any location, without having to copy the style file
+  around. It contains the following lines:
+
+  Unix.*.Root.DynamicPath:    .:$(ROOTSYS)/lib:$(HOME)/RootUtils/lib:
+  
+  This one tells ROOT where to look for libraries. It points to the
+  current directory (.), the standard ROOT library location
+  ($(ROOTSYS)/lib), and a custom location ($(HOME)/RootUtils/lib) that
+  you should change to fit your needs.
+
+  Unix.*.Root.MacroPath:      .:$(HOME)/RootUtils:
+
+  This one tells root where to look for macros. It points to the
+  current directory (.) and to a custom location ($(HOME)/RootUtils)
+  that you should change to fit your needs.
+
+  $(HOME)/RootUtils (or whatever is the name of your custom macro
+  repository) is where you should put both your 'rootlogon.C' and
+  'StyleAtlas.C' files in order to get the ATLAS style loaded by
+  default without copying them around.
+
+- AtlasUtils.C and AtlasLabels.C: useful utility packages, containing several function
+  definitions, like the one to generate the ATLAS label. You can load
+  them by including the following lines near the top of your macro:
+  
+  #include "AtlasUtils.C"
+  #include "AtlasLabels.C"
+
+  The files should be in you working directory, or in your custom macro
+  repository defined in your .rootrc file, where you also should have
+  put the AtlasStyle.C file. In this case, you can safely load them from
+  anywhere.
+
+- AtlasUtils.py: example of python wrapper for AtlasUtils.C, in case
+  you prefer to use pyROOT.
+
+- AtlasExample.C and nlofiles.root will produce an example plot. Just copy
+  them in the directory with all the other style and utility files,
+  and execute the macro. Enter root and do:
+  
+  .x AtlasExample.C
+
+  If you setup your .rootrc file and your custom macro repository, in
+  order to produce the example plots (AtlasExample.eps,
+  AtlasExample.png, AtlasExample.pdf) you will just need AtlasExample.C and
+  nlofiles.root.
\ No newline at end of file
diff --git a/include/AtlasStyle/TestLabel.C b/include/AtlasStyle/TestLabel.C
new file mode 100644
index 0000000000000000000000000000000000000000..fcba07d41427ab7232dd95efb8ef0bef7baa32f9
--- /dev/null
+++ b/include/AtlasStyle/TestLabel.C
@@ -0,0 +1,39 @@
+
+#include "AtlasStyle.h"
+#include "AtlasUtils.h"
+
+#ifdef __CLING__
+// these are not headers - do not treat them as such - needed for ROOT6
+#include "AtlasUtils.C"
+#endif
+
+#include "TCanvas.h"
+#include "TPad.h"
+
+void TestLabel()
+{
+
+  SetAtlasStyle();
+
+  TCanvas* test = new TCanvas("test","",0,0,800,600);
+
+#ifdef __CINT__
+  gROOT->LoadMacro("AtlasUtils.C");
+#endif
+
+  ATLAS_LABEL(0.2,0.8); myText(0.34,0.8,1,"Preliminary");
+
+  myText(0.2,0.7,1,"2008 Cosmic muons");
+
+}
+
+
+#ifndef __CINT__
+
+int main() { 
+  TestLabel();
+  gPad->Print("label.png");
+  return 0;
+}
+
+#endif
diff --git a/include/AtlasStyle/TestLabel.o b/include/AtlasStyle/TestLabel.o
new file mode 100644
index 0000000000000000000000000000000000000000..40a87683b99bc97f71f2a58d8c5cc2722b8002a5
Binary files /dev/null and b/include/AtlasStyle/TestLabel.o differ
diff --git a/include/AtlasStyle/basictest b/include/AtlasStyle/basictest
new file mode 100644
index 0000000000000000000000000000000000000000..94a7a866be9e93ecdd853cc3657bfb356306885e
Binary files /dev/null and b/include/AtlasStyle/basictest differ
diff --git a/include/AtlasStyle/dot.rootrc b/include/AtlasStyle/dot.rootrc
new file mode 100644
index 0000000000000000000000000000000000000000..a818af40bd08f9a6f88915efa238302ed3ba42fd
--- /dev/null
+++ b/include/AtlasStyle/dot.rootrc
@@ -0,0 +1,5 @@
+Unix.*.Root.DynamicPath:    .:$(ROOTSYS)/lib:$(HOME)/RootUtils/lib:
+Unix.*.Root.MacroPath:	    .:$(HOME)/RootUtils:
+
+Root.ShowPath: false
+
diff --git a/include/AtlasStyle/label.png b/include/AtlasStyle/label.png
new file mode 100644
index 0000000000000000000000000000000000000000..beda366ff2243bf41b003079b1cf1565f7552be8
Binary files /dev/null and b/include/AtlasStyle/label.png differ
diff --git a/include/AtlasStyle/nlofiles.root b/include/AtlasStyle/nlofiles.root
new file mode 100644
index 0000000000000000000000000000000000000000..3c807293e8ae45eee1f42e2e22e8019e13c46b71
Binary files /dev/null and b/include/AtlasStyle/nlofiles.root differ
diff --git a/include/AtlasStyle/rootlogon.C b/include/AtlasStyle/rootlogon.C
new file mode 100644
index 0000000000000000000000000000000000000000..b4df9efed60a9288652ba76cd858b60da374fb9f
--- /dev/null
+++ b/include/AtlasStyle/rootlogon.C
@@ -0,0 +1,7 @@
+#include "AtlasStyle.C"
+void rootlogon()
+{
+  // Load ATLAS style
+  //gROOT->LoadMacro("AtlasStyle.C"); //No longer works for ROOT6
+  SetAtlasStyle();
+}
diff --git a/include/AtlasStyle/version b/include/AtlasStyle/version
new file mode 100644
index 0000000000000000000000000000000000000000..af95b045b84a4480db07731d014582f2533f9e47
--- /dev/null
+++ b/include/AtlasStyle/version
@@ -0,0 +1 @@
+atlasstyle-00-04-00
diff --git a/include/BRANRod.h b/include/BRANRod.h
new file mode 100644
index 0000000000000000000000000000000000000000..aae4cca3d62afafae4240df53749223b32f315c3
--- /dev/null
+++ b/include/BRANRod.h
@@ -0,0 +1,123 @@
+//////////////////////////////////////////////////////////////////////////////////
+//  BRANRod.h
+//  Author: Chad Lantz
+//
+//  This class retrieves data from a root tree and processes raw optical spectra
+//  to produce relative transmission data
+//
+//  The raw and produced data is available as public members available to the 
+//  function these are made in
+//  
+//  The idea here is that processing is consistent across all rods as well as the
+//  measurements made. Details about processing can be found in the function 
+//  descriptions (above each function), but the general algorithm is as follows.
+//
+//  Init: Read raw spectra and dose data from sample tree and get one spectrum 
+//        from control tree
+//
+//  Step 1: Determine background by taking control/cold end spectrum and use
+//          TF1::ShowBackground() to get a background estimate histogram
+//
+//  Step 2: For each spectrum, divide by control and subtract background
+//  
+//  Step 3: Average over a few bins surrounding an absorption peak and push
+//          those values into a transmission vector
+//
+//  Step 4: ???
+//
+//  Step 5: Profit
+//
+//////////////////////////////////////////////////////////////////////////////////
+#ifndef BRANRod_h
+#define BRANRod_h
+
+#include <iostream>
+#include <string>
+#include <vector>
+
+#include "TFile.h"
+#include "TH1F.h"
+#include "TDatime.h"
+
+using namespace std;
+
+
+class BRANRod {
+public :
+
+    BRANRod(TTree *tree = 0, TTree *control = 0);
+    virtual ~BRANRod();
+
+
+    virtual void     Init             ( TTree *tree );
+    virtual Int_t    GetEntry         ( int entry );
+    virtual void     Process          ( string option = "BackIncreasingWindow BackOrder2 nosmoothing nocompton", int _entry = 0 );
+    virtual void     MakeBackground   ( string option );
+    virtual TH1F*    GetBackground    ( ){ return hBack; }
+    virtual void     SetBackground    ( TH1F* hIn ){ hBack = (TH1F*)hIn->Clone(); }
+    virtual void     RemoveBackground ( TH1F* hIn );
+    virtual void     Invert           ( TH1F* hIn );
+    virtual void     Flip             ( TH1F* hIn );
+    virtual double   AverageWindow    ( TH1F* hIn, float start, float stop);
+    virtual THStack* DrawOne          ( int spec, string name);
+    virtual TH2F*    Draw3dHisto      ( string name = "", bool save = false);
+    
+
+    /** Vector of spectra without baseline removed */
+    vector< TH1F* >               vRawSpectra;
+    /** Vector of the processed spectra*/
+    vector< TH1F* >               vSpectra;
+    /** Vector of points along y in the beam coordinates */
+    vector < double >             yAxis;
+    /** Vector of y position error */
+    vector < double >             yAxisErr;
+    /** Vector containing transmission of peaks contained in window */
+    vector < vector < double > >  transmission;
+    /** Vector of transmission error */
+    vector < vector < double > >  transmissionErr;
+    /** Vector containing the EM dose from FLUKA (Gy in Tree, converted to MRad in GetEntry)*/
+    vector < double > *dose = 0;
+    /** Vector of dose error */
+    vector < double > *doseErr = 0;
+    /** Vector containing the neutron fluence from FLUKA */
+    vector < double > *neutron = 0;
+    /** Vector of neutron fluence error */
+    vector < double >  neutronErr;
+    /** Vector containing the hadron fluence from FLUKA */
+    vector < double > *hadron = 0;
+    /** Vector of hadron fluence error */
+    vector < double >  hadronErr;
+    /** Date of the measurement */
+    TDatime           *Date;
+    /** Number of spectra in the tree */
+    int                nSpectra;
+
+    
+    
+private :
+
+//////////////// The input data ////////////////
+    /** Pointer to the Control rod tree */
+    TTree             *trControl;
+    /** Pointer to the tree */
+    TTree             *tr;
+    /** Spectrum of the control rod */
+    TH1F              *hControl = 0;
+    
+    
+    
+//////////////// The intermediate data ////////////////
+    /** Histogram of the estimated background */
+    TH1F*                              hBack = 0;
+    /** Vector of pairs with the start and stop of each peak averaging window */
+    vector < pair < double, double > > window { {234, 247}, {252, 266}, {296, 310} };
+    /** Number of spectral peaks to be measured */
+    int                                nPeaks = window.size();
+    /** Number of bins in a full spectrum */
+    int                                nBins;
+    /** Current entry */
+    int                                m_entry = -1;
+
+
+};
+#endif
diff --git a/src/BRANRod.cpp b/src/BRANRod.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..29976a42cc5194b9adc0d7b6422a7c744d9978d8
--- /dev/null
+++ b/src/BRANRod.cpp
@@ -0,0 +1,313 @@
+#include "../include/BRANRod.h"
+
+/** Default constructor
+ *
+ *  Two arguments are needed. One with sample spectra, and one with control
+ *
+ *  if parameter tree is not specified (or zero), connect the file
+ *  used to generate this class and read the Tree. 
+ *  
+ *  Defaults to Rod2, so make sure to specify
+ */
+BRANRod::BRANRod(TTree *tree, TTree *control)
+{
+   if (tree == 0) {
+      TFile *f = (TFile*)gROOT->GetListOfFiles()->FindObject("SpectraHist.root");
+      if (!f || !f->IsOpen()) {
+         f = new TFile("SpectraHist.root");
+      }
+      f->GetObject("Rod2",tree);
+      f->GetObject("Control",control);
+      cout<<"You didn't specify a rod, so I'm defaulting to Rod2"<<endl;
+   }
+   trControl = control;
+   Init(tree);
+}
+
+
+
+/*
+ *Default destructor
+ */
+BRANRod::~BRANRod()
+{
+   if (!tr) return;
+   delete tr->GetCurrentFile();
+}
+
+
+/** Initialize the new BRANRod
+ *
+ *  Vectors are sresized here and branch addresses are set
+ *  The tree is assumed to have 
+ */
+void BRANRod::Init(TTree *tree)
+{
+   if(!tree) return;
+   tr = tree;
+   
+   // Set object pointer
+   Date = 0;
+   
+   // Resize vectors before use
+   nSpectra = tr->GetNbranches() - 5;
+   vSpectra.resize(nSpectra);
+   vRawSpectra.resize(nSpectra);
+   neutronErr.resize(nSpectra);
+   hadronErr.resize(nSpectra);
+   transmission.resize( nPeaks );
+   transmissionErr.resize( nPeaks );
+   yAxisErr.resize(nSpectra, 0.15);
+   
+
+   // Set Addresses
+   tr->SetBranchAddress( "TDatime"   , &Date     );
+   tr->SetBranchAddress( "dose"      , &dose     );
+   tr->SetBranchAddress( "doseError" , &doseErr  );
+   tr->SetBranchAddress( "neutron"   , &neutron  );
+   tr->SetBranchAddress( "hadron"    , &hadron   );
+   trControl->SetBranchAddress( "2.5cm"  , &hControl );
+   
+   for(int i = 0; i < nSpectra; i++){
+       vSpectra[i]=0;
+       tr->SetBranchAddress( Form( "%d.5cm",i+2) , &vSpectra[i]);
+       yAxis.push_back( 2.5 + i);
+   }
+   
+   cout<< "BRANRod successfully created with " << nSpectra << " spectra" <<endl;
+}
+
+
+/* Read contents of entry.
+ *
+ * If data has already been retrieved, reset all histograms,
+ * delete the background, and clear vectors
+ * Then get the data from the new entry, calculate errors
+ * and convert dose values and dose error to MRad
+ */
+Int_t BRANRod::GetEntry(int entry)
+{
+   if(m_entry != -1){
+       for(int spec = 0; spec < nSpectra; spec++){
+           vSpectra[spec]->Reset();
+           vRawSpectra[spec]->Reset();
+        }
+        delete hBack;
+        hControl->Reset();
+        dose->clear();
+        doseErr->clear();
+        neutron->clear();
+        neutronErr.clear();
+        hadron->clear();
+        hadronErr.clear();
+   }
+   
+   m_entry = entry;
+   if (!tr){ return 0; }
+   int bytes = tr->GetEntry(entry);
+   trControl->GetEntry(entry);
+   
+   nBins = hControl->GetNbinsX();
+   // Convert dose from Gy to MRad
+   for(int i = 0; i < nSpectra; i++){
+       neutronErr[i] = sqrt( neutron->at(i) );
+       hadronErr[i] = sqrt( hadron->at(i) );
+       doseErr->at(i) /=10000;
+       dose->at(i) /= 10000;
+   }
+   
+   return bytes;
+}
+
+/** Main processor
+ *
+ *  Calls the rest of the smaller processes in sequence
+ *  Processes a single entry
+ *
+ */
+void BRANRod::Process( string option, int _entry = 0){
+    
+    GetEntry(_entry);
+    MakeBackground( option );
+
+    for(int spec = 0; spec < nSpectra; spec++){
+        vSpectra[spec]->Divide( hControl );
+        vRawSpectra[spec] = (TH1F*)vSpectra[spec]->Clone( Form( "%d.5cm Raw", spec + 2 ) );
+        RemoveBackground( vSpectra[spec] );
+        //Flip( vSpectra[spec] );  // Flip it if you want absorption instead of transmission
+        
+        for(int peak = 0; peak < nPeaks; peak++){
+            transmission[peak].push_back( AverageWindow( vSpectra[spec], window[peak].first, window[peak].second ) );  // This is over complicated
+            transmissionErr[peak].push_back( 0.1*( 1.0 - transmission[peak][spec]) );
+        }
+    }
+}
+
+
+/** Get the background of the spectrum
+ *
+ *  Clones the last spectrum (cold end), inverts it so the background can be calculated
+ *  Calculates the background and inverts it so it lines up with an uninverted spectrum
+ *  Subtracts 1 from the background because TH1::Add() doesn't support 1-background
+ *
+ */
+void BRANRod::MakeBackground( string option ){
+    
+    /*  This wasn't working and it should be fixed if we want to fabricate a background
+    if( !hBack ){
+        cout << "User backgound in use" << endl;
+        return;
+    }
+    */
+    
+    TH1F* hIn = (TH1F*)vSpectra[nSpectra - 1]->Clone("temp");
+    hIn->Divide(hControl);
+    
+    Invert(hIn);
+    hBack = new TH1F(*(TH1F*)hIn->ShowBackground(40, option.c_str() ) );
+    Invert(hBack);
+    
+    for(int bin = 0; bin < hBack->GetNbinsX(); bin++){ 
+        hBack->SetBinContent( bin, hBack->GetBinContent(bin) - 1); 
+    }
+    
+    delete hIn;
+}
+
+
+/** Remove the background
+ *
+ * Subtracts the background from all stored spectra. 
+ * It is uncomplicated now, but I left it open to become complicated
+ */
+void BRANRod::RemoveBackground( TH1F* hIn ){
+    
+    hIn->Add(hBack,-1);
+    
+}
+
+
+/** Invert a histogram
+ *
+ *  If the content of a bin is 0, use the content of the last non zero bin
+ */
+void BRANRod::Invert(TH1F* hIn){
+    
+    float lastNonZero;
+    
+    for(int bin = 0; bin < hIn->GetNbinsX(); bin++){ 
+        float buffer = hIn->GetBinContent( bin);
+        if( buffer != 0){ lastNonZero = buffer; }
+        hIn->SetBinContent( bin, 1/lastNonZero );
+    }  
+}
+
+
+/** 
+ *  Flip the spectrum from % transmission to % absorption
+ */
+void BRANRod::Flip(TH1F* hIn){
+    for(int bin = 0; bin < nBins; bin++){
+        hIn->SetBinContent(bin, 1 - hIn->GetBinContent(bin));
+    }
+    
+}
+
+
+/** 
+ *  Find the average value within a given window
+ */
+double BRANRod::AverageWindow( TH1F* hIn, float start, float stop){
+    int startBin = hIn->FindBin(start);
+    int stopBin  = hIn->FindBin(stop );
+    double result = 0;
+    
+    for(int bin = startBin; bin < stopBin; bin++){
+        result += hIn->GetBinContent(bin);
+        if(result != 0) result /= 2.0; 
+    }
+    return result;
+}
+
+
+
+///////////////////////////  These are plots that I should implement in BRANplotter  /////////////////////////////////
+
+/**
+ *  Draw a single absorption spectrum (sample/control), 
+ *  with (green) and without (blue) baseline (red) subtracted
+ *
+ *  returns a THStack* of the three plots
+ */
+THStack* BRANRod::DrawOne(int spec, string name){
+
+    THStack *hs = new THStack( "hs", name.c_str() );
+    
+    // Clone the background so we can shift it back up without affecting future processing
+    TH1F *hback = (TH1F*)hBack->Clone("hback"); 
+    for(int bin = 0; bin < hback->GetNbinsX(); bin ++){ hback->SetBinContent( bin, hBack->GetBinContent(bin) + 1); }
+    
+    
+    // Set line colors
+    vSpectra[spec]->SetLineColor(kGreen);    
+    vRawSpectra[spec]->SetLineColor(kBlue);
+    hback->SetLineColor(kRed);
+    
+    // Set y-axis range. This isn't working on the THStack for some reason
+    vSpectra[spec]->GetYaxis()->SetRangeUser( 0.0, 1.1);
+    vRawSpectra[spec]->GetYaxis()->SetRangeUser( 0.0, 1.1);
+    hback->GetYaxis()->SetRangeUser( 0.0, 1.1);
+    
+    // Add the histograms to the stack. Draw it so we can access the axis
+    // then set the axis range and redraw with the new range
+    hs->Add( vSpectra[spec] );
+    hs->Add( vRawSpectra[spec] );
+    hs->Add( hback );
+    hs->Draw("nostack");
+    hs->GetXaxis()->SetRangeUser( 198, 900);
+    //hs->Draw("nostack");
+    
+    return hs;
+}
+
+
+/**
+ *  Draws a 3D histogram of the spectra arranged by position
+ *
+ *
+ */
+TH2F* BRANRod::Draw3dHisto( string name, bool save ){
+    TCanvas *c = new TCanvas("3D histo","3D histo",700,500);
+    c->cd();
+    gStyle->SetOptTitle(1);
+    
+    float xLow = vSpectra[0]->GetBinCenter(0);
+    float xUp  = vSpectra[0]->GetBinCenter(nBins - 1);
+    
+    TH2F *h = new TH2F( (name + " Spectrum").c_str(), (name + " Spectrum; Wavelength (nm); y-Position (cm); Transmission").c_str(), nBins, xLow, xUp, nSpectra - 1, 2.5, 37.5);
+    
+    for(int spec = 0; spec < nSpectra; spec++){
+        
+        for(int bin = 0; bin < nBins; bin++){
+            float y = vSpectra[spec]->GetBinContent(bin);
+            h->SetBinContent( bin, spec, y );   
+        }
+    }
+
+    h->GetXaxis()->SetRangeUser( 198, 900);
+    h->GetZaxis()->SetRangeUser( 0, 1.1);
+    h->Draw("SURF2");
+
+    gStyle->SetPalette(61);
+    gPad->Modified();
+    gPad->Update();
+    
+    if(save){
+        c->Print( (name + ".png").c_str() );
+        delete c;
+    }
+    gStyle->SetOptTitle(0);
+    return h;
+    
+}
+ 
\ No newline at end of file