ROOT logo

#ifndef __CINT__
#include "TGraphErrors.h"
#include "TTree.h"
#include "TList.h"
#include "TFile.h"
#include "TCanvas.h"
#include "TH1D.h"
#include <iostream>
#include "TLegend.h"
#include "TMath.h"
#include "TString.h"
#endif
void SetStyles(TH1 *histo,int marker, int color,char *xtitle, char *ytitle){
  histo->Sumw2();
  histo->SetMarkerStyle(marker);
  histo->SetMarkerColor(color);
  histo->SetLineColor(color);
  histo->GetXaxis()->SetTitle(xtitle);
  histo->GetYaxis()->SetTitle(ytitle);
}

void PlotEmEt(TString filename = "rootFiles/LHC10hPass2/Et.ESD.realPbPb.EMCal.LHC10hPass2.Run139465.root", TString det = "Emcal", bool sim = false, double scaleFactor = 1, double pionScale = 1.0)
{
  Int_t colors[] = {TColor::kRed, TColor::kOrange, TColor::kGreen+3, TColor::kBlue, TColor::kBlack, 
		    TColor::kRed, TColor::kOrange, TColor::kGreen+3, TColor::kBlue, TColor::kBlack, 
		    TColor::kRed, TColor::kOrange, TColor::kGreen+3, TColor::kBlue, TColor::kBlack, 
		    TColor::kRed, TColor::kOrange, TColor::kGreen+3, TColor::kBlue, TColor::kBlack};
  Int_t markers[] = {20,21,22,23,33, 24,25,26,32,27, 20,21,22,23,33, 24,25,26,32,27};
  Float_t pionPlusEt[10] = {360.7,298.3,223.8,149.9,96.1, 58.1,32.4,16.4,7.3,2.7};
  Float_t pionMinusEt[10] ={363.7,300.4,225.4,150.5,96.6, 58.4,32.5,16.5,7.4,2.8};
  Float_t pionEtError[10] = {19.3, 15.3,11.3 ,7.5  , 4.8,  2.9, 1.6, 0.8,0.4,0.1};
  Float_t pionEt[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
  Float_t emEtPerNpart[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
  Float_t emEtPerNpartErr[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
  Float_t emEt[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
  Float_t emEtErr[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
  for(int i=0;i<10;i++){
    pionEt[i] = (pionPlusEt[i]+pionMinusEt[i])/2.0;
    emEt[i] = pionEt[i]*1.085;
    emEtErr[i] = emEt[i]*TMath::Sqrt(TMath::Power(0.030/1.085,2)+TMath::Power(pionEtError[i]/pionEt[i],2));
  }


    Float_t x[20], xerr[20],  y_rel_error[20] ,yerr[20], xpion[20], xpionerr[20], ypion[20], ypionerr[20], ysim[20], yrec[20];
    Float_t nonLinError[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
    Float_t efficiencyError[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
    Float_t hadError[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
    Float_t hadCorr[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
    Float_t kaonError[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
    Float_t kaonCorr[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
    Float_t minEtErr[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
    Float_t minEtCorr[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
    Float_t rawEtErr[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
    Float_t rawEtValue[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
    Float_t rawEt500MeVErr[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
    Float_t rawEt500MeVValue[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
    Float_t partialCorrEtErr[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
    Float_t partialCorrEtValue[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
    Float_t corrEtErr[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
    Float_t corrEtValue[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
    TString centLabels[] = {"0-5%","5-10%","10-15%","15-20%","20-25%",  "25-30%","30-35%","35-40%","40-45%","45-50%",  "50-55%","55-60%","60-65%","65-70%","70-75%",  "75-80%","80-85%","85-90%","90-95%","95-100%"};

    Float_t nonLinErrorShort[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
    Float_t efficiencyErrorShort[20] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
    Float_t nonLinErrorShort[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
    Float_t efficiencyErrorShort[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
    Float_t hadErrorShort[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
    Float_t hadCorrShort[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
    Float_t kaonErrorShort[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
    Float_t kaonCorrShort[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
    Float_t hadErrorShort500MeV[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
    Float_t hadCorrShort500MeV[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
    Float_t kaonErrorShort500MeV[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
    Float_t kaonCorrShort500MeV[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
    Float_t minEtErrShort[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
    Float_t minEtCorrShort[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
    Float_t rawEtErrShort[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
    Float_t rawEtValueShort[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
    Float_t rawEt500MeVErrShort[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
    Float_t rawEt500MeVValueShort[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
    Float_t partialCorrEtErrShort[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
    Float_t partialCorrEtValueShort[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
    Float_t partialCorrEtErrShort500MeV[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
    Float_t partialCorrEtValueShort500MeV[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
    Float_t corrEtErrShort[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
    Float_t corrEtValueShort[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
    Float_t corrEtErrShort500MeV[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
    Float_t corrEtValueShort500MeV[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
    Float_t corrEtErrPerNPartShort[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
    Float_t corrEtValuePerNPartShort[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
    Float_t corrEtErrPerNPartShort500MeV[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
    Float_t corrEtValuePerNPartShort500MeV[10] = {0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0};
    TString centLabelsShort[] = {"0-5%","5-10%","10-20%","20-30%","30-40%","40-50%","50-60%","60-70%","70-80%","80-90%"};

    Float_t hadErrorEmcal[20] = {9.96941,4.34033,3.2544,2.46096,1.85974,1.39188,1.04314,0.768989,0.566392,0.416278,0.303809,0.219583,0.169077,0.137327,0.115232,0.099452,0.095027,0.0887826,0.0645363,};
    Float_t hadCorrEmcal[20] = {58.0371,29.4045,23.0345,18.0506,14.0786,10.8591,8.31337,6.26566,4.66497,3.46897,2.5448,1.90246,1.5164,1.2924,1.15985,1.07691,1.03915,1.00897,0.944257,};
    Float_t hadError500MeVEmcal[20] = {5.19955,2.91943,2.30763,1.82901,1.44725,1.13405,0.880527,0.673811,0.506236,0.380598,0.278777,0.207644,0.158179,0.124682,0.101618,0.0854513,0.074277,0.0710671,0.0628612,};
    Float_t hadCorr500MeVEmcal[20] = {41.4917,18.5258,14.5182,11.3836,8.87434,6.84412,5.23258,3.94014,2.9284,2.17168,1.5966,1.2164,1.01307,0.92015,0.886337,0.876897,0.896635,0.912078,0.890611,};


    Float_t hadErrorPhos[20] = {2.17752,1.02329,0.808674,0.639466,0.507094,0.413639,0.333212,0.272335,0.229312,0.192292,0.16624,0.147969,0.132668,0.118544,0.117667,0.111382,0.109401,0.115973,0.111227,};
    Float_t hadCorrPhos[20] = {16.8125,8.3289,6.67917,5.38945,4.36484,3.61504,3.02595,2.6012,2.28153,2.03373,1.85627,1.72462,1.62872,1.54236,1.52404,1.48698,1.47255,1.48271,1.46966,};
    //Float_t hadError500MeVPhos[20] = {1.78823,0.965582,0.768239,0.61382,0.491313,0.398799,0.323919,0.267179,0.223729,0.188801,0.163673,0.143605,0.129474,0.117266,0.120714,0.124057,0.119597,0.162631,0.121791,};
    //Float_t hadCorr500MeVPhos[20] = {9.91472,4.0766,3.29702,2.68898,2.20738,1.86918,1.6142,1.44665,1.3227,1.23356,1.1716,1.13759,1.11538,1.08378,1.1192,1.12753,1.12033,1.18281,1.12409,};
    Float_t hadError500MeVPhos[20] = {1.63912,0.986321,0.777252,0.627139,0.507912,0.409661,0.337173,0.281528,0.237638,0.200728,0.176946,0.153582,0.135979,0.128235,0.114839,0.105581,0.103842,0.110116,0.127558,};
    Float_t hadCorr500MeVPhos[20] = {10.3323,4.33103,3.44988,2.82032,2.31597,1.95055,1.70481,1.51718,1.38961,1.29369,1.22474,1.18656,1.16962,1.13756,1.19274,1.16588,1.17661,1.19598,1.23654,};

    //PHOS kaon deposits corresponding to minimum energy cut of 250 MeV
    Float_t kaonCorrPhos[10] = {0.522969,1.0701,0.33745,0.386312,0.091973,0.0874692,0.0599575,0.0425214,0.0178472,0.0543614};
    Float_t kaonErrorPhos[10] = {0.0443465,0.112813,0.0256754,0.0344671,0.00641868,0.00744562,0.00488688,0.00348225,0.00161517,0.00590774};
    Float_t kaonCorrPhos500MeV[10] = {0.33013,0.626137,0.20589,0.28063,0.0917355,0.0555848,0.0490011,0.0282463,0.0122385,0.0325976};
    Float_t kaonErrorPhos500MeV[10] = {0.0279942,0.0499577,0.0156654,0.0250381,0.00640211,0.00473154,0.00399387,0.0023132,0.00110758,0.00354255};

    //EMCal kaon deposits corresponding to minimum energy cut of 300 MeV
    Float_t kaonCorrEmcal[10] = {14.8391,14.6397,4.80481,3.72969,1.76575,1.49971,0.929531,0.615978,0.223484,0.668516};
    Float_t kaonErrorEmcal[10] = {1.76834,1.89738,0.460842,0.398095,0.161214,0.155527,0.0938913,0.0626049,0.0243395,0.083329};
    Float_t kaonCorrEmcal500MeV[10] = {12.586,13.8596,4.30586,3.17298,1.45638,1.21947,0.775579,0.516616,0.208884,0.626861};
    Float_t kaonErrorEmcal500MeV[10] = {1.56637,1.82579,0.412986,0.338674,0.132968,0.126465,0.0783407,0.0525063,0.0227494,0.0781368};

    //Cuts for 250 MeV min ET cut
    Float_t minEtCorrPhos[10] = {0.757,0.756,0.756,0.753,0.747,0.739,0.729,0.718,0.706,0.690};
    Float_t minEtErrPhos[10] = {0.027,0.027,0.028,0.028,0.029,0.030,0.031,0.034,0.034,0.034};
    //Cuts for 300 MeV min ET cut
    Float_t minEtCorrEmcal[10] = {0.691,0.691,0.691,0.688,0.681,0.673,0.662,0.650,0.637,0.619};
    Float_t minEtErrEmcal[10] = {0.031,0.031,0.032,0.032,0.032,0.034,0.035,0.037,0.037,0.038};
    //Cuts for 500 MeV min ET cut
    Float_t minEtCorr500MeV[10] = {0.465,0.466,0.467,0.465,0.460,0.452,0.441,0.430,0.418,0.398};
    Float_t minEtErr500MeV[10] = {0.036,0.036,0.036,0.036,0.036,0.037,0.038,0.038,0.038,0.039};
    //10 centrality bins are 0-5,5-10,10-20,20-30,30-40,  40-50,50-60,60-70,70-80,80-90
    int j=0;
    float scale = 1.0;//Scale for eta acceptance and geometric acceptance
    if(det.Contains("Emc")){//Output from the PlotMatchedTracksDeposts.C
      scale = 360.0/40.0/1.2/2;//Azimuthal acceptance over eta range
      for(int i=0;i<10;i++){
	if(i<2){//These bins are exactly what they should bin in the 20 bin binning
	  hadCorrShort[i] = hadCorrEmcal[i];
	  hadErrorShort[i] = hadErrorEmcal[i];
	  hadCorrShort500MeV[i] = hadCorr500MeVEmcal[i];
	  hadErrorShort500MeV[i] = hadError500MeVEmcal[i];
	  j++;//i=0 j=0; i=1 j=1
	}
	else{
	  //i=2 j=2
	  //cout<<"adding bins "<<j<<" and "<<j+1<<endl;
	  hadCorrShort[i] = (hadCorrEmcal[j]+hadCorrEmcal[j+1])/2.0;
	  hadErrorShort[i] = (hadErrorEmcal[j]+hadErrorEmcal[j+1])/2.0;
	  hadCorrShort500MeV[i] = (hadCorr500MeVEmcal[j]+hadCorr500MeVEmcal[j+1])/2.0;
	  hadErrorShort500MeV[i] = (hadError500MeVEmcal[j]+hadError500MeVEmcal[j+1])/2.0;
	  j+=2;
	}
	//The corrections below are already in 10 bin binning
	kaonCorrShort500MeV[i] = kaonCorrEmcal500MeV[i];
	kaonErrorShort500MeV[i] = kaonErrorEmcal500MeV[i];
	kaonCorrShort[i] = kaonCorrEmcal[i];
	kaonErrorShort[i] = kaonErrorEmcal[i];
	minEtCorrShort[i] = minEtCorrEmcal[i];
	minEtErrShort[i] = minEtErrEmcal[i];
	//cout<<"cent bin "<<centLabelsShort[i].Data()<<" hadronic corr "<<hadCorrShort[i]<<endl;
      }
    }
    else{
      scale = 360.0/60/0.24/2;//Azimuthal acceptance over eta range
      for(int i=0;i<10;i++){
	if(i<2){//These bins are exactly what they should bin in the 20 bin binning
	  hadCorrShort[i] = hadCorrPhos[i];
	  hadErrorShort[i] = hadErrorPhos[i];
	  hadCorrShort500MeV[i] = hadCorr500MeVPhos[i];
	  hadErrorShort500MeV[i] = hadError500MeVPhos[i];
	  j++;//i=0 j=0; i=1 j=1
	}
	else{
	  //i=2 j=2
	  hadCorrShort[i] = (hadCorrPhos[j]+hadCorrPhos[j+1])/2.0;
	  hadErrorShort[i] = (hadErrorPhos[j]+hadErrorPhos[j+1])/2.0;
	  hadCorrShort500MeV[i] = (hadCorr500MeVPhos[j]+hadCorr500MeVPhos[j+1])/2.0;
	  hadErrorShort500MeV[i] = (hadError500MeVPhos[j]+hadError500MeVPhos[j+1])/2.0;
	  j+=2;
	}
	//The corrections below are already in 10 bin binning
	kaonCorrShort[i] = kaonCorrPhos[i];
	kaonErrorShort[i] = kaonErrorPhos[i];
	kaonCorrShort500MeV[i] = kaonCorrPhos500MeV[i];
	kaonErrorShort500MeV[i] = kaonErrorPhos500MeV[i];
	minEtCorrShort[i] = minEtCorrPhos[i];
	minEtErrShort[i] = minEtErrPhos[i];
      }
    }
    cout<<"scale:  "<<scale<<endl;

    int j = -1;
    if(det.Contains("Emc")){//Output from the PlotMatchedTracksDeposts.C
      for(int i=0;i<20;i++){
	if(i%2==0){//even numbers
	  j++;//i=0,j=0; i=1,j=0; i=2,j=1
	}
	//cout<<"i "<<i<<" j "<<j<<endl;
	hadCorr[i] = hadCorrEmcal[i];
	hadError[i] = hadErrorEmcal[i];
	kaonCorr[i] = kaonCorrEmcal[j];
	kaonError[i] = kaonErrorEmcal[j];
	minEtCorr[i] = minEtCorrEmcal[j];
	minEtErr[i] = minEtErrEmcal[j];
      }
    }
    else{
      for(int i=0;i<20;i++){
	if(i%2==0){//even numbers
	  j++;//i=0,j=0; i=1,j=0; i=2,j=1
	}
	hadCorr[i] = hadCorrPhos[i];
	hadError[i] = hadErrorPhos[i];
	kaonCorr[i] = kaonCorrPhos[j];
	kaonError[i] = kaonErrorPhos[j];
	minEtCorr[i] = minEtCorrPhos[j];
	minEtErr[i] = minEtErrPhos[j];
      }
    }

    TCanvas *cents = new TCanvas("cents", "cents",700, 600);
    TCanvas *centsAlt = new TCanvas("centsAlt", "centsAlt",700, 600);
    cents->Divide(6,3);
    cents->cd(1);

    int n = 0;
    xpion[n] = 382.8;
    xpionerr[n] = 6;
    n++;
    xpion[n] = 329.7;//n=1
    xpionerr[n] = 6;
    x[n] = 356;
    xerr[n] = 6;
    n++;
    x[n] = xpion[n] = 260.5;//n=2
    xerr[n] = xpionerr[n] = 4.4;
    n++;
    x[n] = xpion[n] = 186.4;//n=3
    xerr[n] = xpionerr[n] = 3.9;
    n++;
    x[n] = xpion[n] = 128.9;//n=4
    xerr[n] = xpionerr[n] = 3.3;
    n++;
    x[n] = xpion[n] = 85;//n=5
    xerr[n] = xpionerr[n] = 2.6;
    n++;
    x[n] = xpion[n] = 52.8;//n=6
    xerr[n] = xpionerr[n] = 2;
    n++;
    x[n] = xpion[n] = 30.0;//n=7
    xerr[n] = xpionerr[n] = 1.3;
    n++;
    x[n] = xpion[n] = 15.8;//n=8
    xerr[n] = xpionerr[n] = 0.6;
    n++;
    x[n] = xpion[n] = 7.48;//n=9
    xerr[n] = xpionerr[n] = 0.29;
    n++;

    for(int i=0;i<10;i++){
      ypion[i] = pionEt[i]/(xpion[i]/2);
      ypionerr[i] = pionEtError[i]/(xpion[i]/2);
      emEtPerNpart[i] = emEt[i]/(xpion[i]/2);
      emEtPerNpartErr[i] = emEtErr[i]/(xpion[i]/2);
    }

    int nmax = 18;

    TFile *f = TFile::Open(filename, "READ");
    if (!f)
    {
        std::cerr << "Could not open file: " << filename << std::endl;
    }

    TList *l = dynamic_cast<TList*>(f->Get("out1"));

    if (!l)
    {
        std::cerr << "Could not get object list from: " << filename << std::endl;
    }
    TString treename = "fEventSummaryTree"+det+"Rec";
    TTree *t = dynamic_cast<TTree*>(l->FindObject(treename.Data()));

    if (!t)
    {
        std::cerr << "Could not get tree from: " << filename << std::endl;
	return;
    }
    TString prefix = "fHistNominal";
    TH2F *fHistNominalRawEt = l->FindObject((prefix+"RawEt"+det+"Rec").Data());
    TH2F *fHistNominalNonLinLowEt = l->FindObject((prefix+"NonLinLowEt"+det+"Rec").Data());
    TH2F *fHistNominalNonLinHighEt = l->FindObject((prefix+"NonLinHighEt"+det+"Rec").Data());
    TH2F *fHistNominalEffLowEt = l->FindObject((prefix+"EffLowEt"+det+"Rec").Data());
    TH2F *fHistNominalEffHighEt = l->FindObject((prefix+"EffHighEt"+det+"Rec").Data());
    TH2F *fHistTotRawEt = l->FindObject("fHistTotRawEt");
    TH2F *fHistTotRawEt500MeV = l->FindObject("fHistTotRawEt500MeV");
    TObjArray rawEt(20);
    TObjArray rawEt500MeV(20);
    TLegend *centLegends[20];
    for(int i = 0; i < nmax; i++)
    {
      //cent bin is nmax-i-1
      int centbin = i;
      //nmax = 18 so this is 17, 16, 15... 0
      rawEt[i]= fHistTotRawEt->ProjectionX(Form("RawEt%i",i),centbin+1,centbin+1);
      rawEt500MeV[i]= fHistTotRawEt500MeV->ProjectionX(Form("RawEt%i",i),centbin+1,centbin+1);
      SetStyles((TH1*)rawEt[i],markers[i],colors[i],"E_{T}","N_{eve}");
      SetStyles((TH1*)rawEt500MeV[i],markers[i],colors[i],"E_{T}","N_{eve}");
      if(((TH1*)rawEt[0])->GetMaximum() < ((TH1*)rawEt[i])->GetMaximum()){
	((TH1*)rawEt[0])->SetMaximum(((TH1*)rawEt[i])->GetMaximum() );
      }
      rawEtValue[centbin] = ((TH1D*)rawEt[i])->GetMean();
      rawEtErr[centbin] = ((TH1D*)rawEt[i])->GetMeanError();
      rawEt500MeVValue[centbin] = ((TH1D*)rawEt[i])->GetMean();
      rawEt500MeVErr[centbin] = ((TH1D*)rawEt[i])->GetMeanError();
      cout<<"Cent bin "<<centbin<<" "<<centLabels[centbin].Data()<<" Raw ET "<<rawEtValue[i]<<" +/- "<<rawEtErr[i]<<" Raw ET> 500 MeV "<<rawEt500MeVValue[i]<<" +/- "<<rawEt500MeVErr[i]<<endl;
      TH1D *temp = fHistNominalRawEt->ProjectionX("temp",centbin+1,centbin+1);
      float nominal = temp->GetMean();
      //cout<<" Mean "<<temp->GetMean()<<" nbins "<<temp->GetNbinsX()<<endl;
      delete temp;
      temp = fHistNominalNonLinLowEt->ProjectionX("temp",centbin+1,centbin+1);
      float nonlinlow = temp->GetMean();
      delete temp;
      temp = fHistNominalNonLinHighEt->ProjectionX("temp",centbin+1,centbin+1);
      float nonlinhigh = temp->GetMean();
      delete temp;
      temp = fHistNominalEffLowEt->ProjectionX("temp",centbin+1,centbin+1);
      float efflow = temp->GetMean();
      delete temp;
      temp = fHistNominalEffHighEt->ProjectionX("temp",centbin+1,centbin+1);
      float effhigh = temp->GetMean();
      delete temp;
      float nonlinfracerr = TMath::Abs(nonlinhigh-nonlinlow)/(nonlinhigh+nonlinlow);
      float efffracerr = TMath::Abs(effhigh-efflow)/(effhigh+efflow);
      nonLinError[centbin] = nonlinfracerr;
      efficiencyError[centbin] = efffracerr;
      cents->cd(i+1);
      cents->cd(i+1)->SetLogy(1);
      ((TH1D*)rawEt[i])->Draw("same");
      cents->cd(i+1)->Update();
      centLegends[i] = new TLegend(0.55,0.7,0.9,0.8);
      
      centLegends[i]->SetFillColor(kWhite);
      centLegends[i]->AddEntry((TH1D*)rawEt[i],"Reconstructed E_{T} distribution", "l");
      centsAlt->cd();
      ((TH1D*)rawEt[i])->Draw("same");
    }
    nmax = 10;
    TObjArray rawEtShort(20);
    TObjArray rawEt500MeVShort(20);
    TLegend *centLegendsShort[20];
    int cbMin = 0;
    int cbMax = 0;
    TCanvas *centsShort = new TCanvas("centsShort", "centsShort",700, 600);
    centsShort->Divide(3,3);
    centsShort->cd(1);
    TCanvas *centsAltShort = new TCanvas("centsAltShort", "centsAltShort",700, 600);
    for(int i = 0; i < nmax; i++)
    {
      if(i>1) cbMax = cbMin+1;//For everything but the first two bins, rebin
      else{cbMax=cbMin;}
      rawEtShort[i]= fHistTotRawEt->ProjectionX(Form("RawEtShort%i",i),cbMin+1,cbMax+1);
      rawEtValueShort[i] = ((TH1D*)rawEtShort[i])->GetMean();
      rawEtErrShort[i] = ((TH1D*)rawEtShort[i])->GetMeanError();
      rawEt500MeVShort[i]= fHistTotRawEt500MeV->ProjectionX(Form("RawEtShort500MeV%i",i),cbMin+1,cbMax+1);
      rawEt500MeVValueShort[i] = ((TH1D*)rawEt500MeVShort[i])->GetMean();
      rawEt500MeVErrShort[i] = ((TH1D*)rawEt500MeVShort[i])->GetMeanError();

      SetStyles((TH1*)rawEtShort[i],markers[i],colors[i],"E_{T}","N_{eve}");
      SetStyles((TH1*)rawEt500MeVShort[i],markers[i],colors[i],"E_{T}","N_{eve}");
      TLine *line = new TLine(rawEtValueShort[i],0,rawEtValueShort[i],((TH1*)rawEtShort[i])->GetMaximum());
      line->SetLineColor(colors[i]);
      if(((TH1*)rawEtShort[0])->GetMaximum() < ((TH1*)rawEtShort[i])->GetMaximum()){
	((TH1*)rawEtShort[0])->SetMaximum(((TH1*)rawEtShort[i])->GetMaximum() );
      }

      TH1D *temp = fHistNominalRawEt->ProjectionX("temp",cbMin+1,cbMax+1);
      float nominal = temp->GetMean();
      //cout<<" Mean "<<temp->GetMean()<<" nbins "<<temp->GetNbinsX()<<endl;
      delete temp;
      temp = fHistNominalNonLinLowEt->ProjectionX("temp",cbMin+1,cbMax+1);
      float nonlinlow = temp->GetMean();
      delete temp;
      temp = fHistNominalNonLinHighEt->ProjectionX("temp",cbMin+1,cbMax+1);
      float nonlinhigh = temp->GetMean();
      delete temp;
      temp = fHistNominalEffLowEt->ProjectionX("temp",cbMin+1,cbMax+1);
      float efflow = temp->GetMean();
      delete temp;
      temp = fHistNominalEffHighEt->ProjectionX("temp",cbMin+1,cbMax+1);
      float effhigh = temp->GetMean();
      delete temp;
      float nonlinfracerr = TMath::Abs(nonlinhigh-nonlinlow)/(nonlinhigh+nonlinlow);
      float efffracerr = TMath::Abs(effhigh-efflow)/(effhigh+efflow);
      nonLinError[nmax-i-1] = nonlinfracerr;
      efficiencyError[nmax-i-1] = efffracerr;
      centsShort->cd(i+1);
      centsShort->cd(i+1)->SetLogy(1);
      ((TH1D*)rawEtShort[i])->Draw("same");
      centsShort->cd(i+1)->Update();
      centsAltShort->cd();
      ((TH1D*)rawEtShort[i])->Draw("same");
      line->Draw();
      centLegendsShort[i] = new TLegend(0.55,0.7,0.9,0.8);
      
      centLegendsShort[i]->SetFillColor(kWhite);
      centLegendsShort[i]->AddEntry((TH1D*)rawEt[i],"Reconstructed E_{T} distribution", "l");
      cbMin = cbMax+1;
      partialCorrEtValueShort[i] = rawEtValueShort[i] - kaonCorrShort[i] - hadCorrShort[i];
      partialCorrEtErrShort[i] = TMath::Sqrt(TMath::Power(kaonErrorShort[i],2)+TMath::Power(hadErrorShort[i],2)+TMath::Power(partialCorrEtValueShort[i]*efffracerr,2)+TMath::Power(partialCorrEtValueShort[i]*nonlinfracerr,2));
      corrEtValueShort[i] = scale*partialCorrEtValueShort[i]/minEtCorr[i];
      corrEtErrShort[i] = corrEtValueShort[i]*TMath::Sqrt(TMath::Power(minEtErr[i]/minEtCorr[i],2)+TMath::Power(partialCorrEtErrShort[i]/partialCorrEtValueShort[i],2));
      corrEtValuePerNPartShort[i] = corrEtValueShort[i]/(xpion[i]/2);
      corrEtErrPerNPartShort[i] = corrEtErrShort[i]/(xpion[i]/2);
      y_rel_error[i] = (corrEtValueShort[i]-emEt[i])/emEt[i];
      cout<<y_rel_error[i]<<" = ("<<corrEtValueShort[i]<<"-"<<emEt[i]<<")/"<<emEt[i]<<endl;
      yerr[i] =  corrEtErrShort[i]/emEt[i];


      partialCorrEtValueShort500MeV[i] = rawEt500MeVValueShort[i] - kaonCorrShort500MeV[i] - hadCorrShort500MeV[i];
      partialCorrEtErrShort500MeV[i] = TMath::Sqrt(TMath::Power(kaonErrorShort500MeV[i],2)+TMath::Power(hadErrorShort500MeV[i],2)+TMath::Power(partialCorrEtValueShort500MeV[i]*efffracerr,2)+TMath::Power(partialCorrEtValueShort500MeV[i]*nonlinfracerr,2));
      corrEtValueShort500MeV[i] = scale*partialCorrEtValueShort500MeV[i]/minEtCorr500MeV[i];
      corrEtErrShort500MeV[i] = corrEtValueShort500MeV[i]*TMath::Sqrt(TMath::Power(minEtErr500MeV[i]/minEtCorr500MeV[i],2)+TMath::Power(partialCorrEtErrShort500MeV[i]/partialCorrEtValueShort500MeV[i],2));
      corrEtValuePerNPartShort500MeV[i] = corrEtValueShort500MeV[i]/(xpion[i]/2);
      corrEtErrPerNPartShort500MeV[i] = corrEtErrShort500MeV[i]/(xpion[i]/2);

      cout<<" partial corr ET "<<partialCorrEtValueShort[i]<<" +/- "<<partialCorrEtErrShort[i]<<" = "<<rawEtValueShort[i]<<"+/-"<<TMath::Power(partialCorrEtValueShort[i]*nonlinfracerr,2)<<"(NL)+/-"<<TMath::Power(partialCorrEtValueShort[i]*efffracerr,2)<<"(eff) - "<<kaonCorrShort[i]<<"+/-"<<kaonErrorShort[i]<<"(kaon) - "<<hadCorrShort[i]<<"+/-"<<hadErrorShort[i]<<"(Had)"<<" frac had ET "<<hadCorrShort[i]/rawEtValueShort[i]<<endl;
      cout<<" corr et "<< corrEtValueShort[i]<<" +/- "<<corrEtErrShort[i]<<" = "<< scale<<"/"<<partialCorrEtValueShort[i]<<"*"<<minEtCorr[i]<<" +/- "<<corrEtValueShort[i]<<"*("<<minEtErr[i]/minEtCorr[i]<<"(Min ET) * "<<partialCorrEtErrShort[i]/partialCorrEtValueShort[i]<<"(others) )"<<endl;
      cout<<"Cent bin "<<centLabelsShort[i].Data()<<" cb min "<<cbMin<<" cb max "<<cbMax<<" Raw ET "<<rawEtValueShort[i]<<" +/- "<<rawEtErrShort[i];//<<endl;
      cout<<" partial corr ET "<<partialCorrEtValueShort[i]<<" +/- "<<partialCorrEtErrShort[i];
      cout<<endl;
      cout<<" corr ET "<<corrEtValueShort[i]<<" +/- "<<corrEtErrShort[i];
      cout<<" pion ET "<<pionEt[i]<<" +/- "<<pionEtError[i]<<" Em Et "<<emEt[i]<<" +/- "<<emEtErr[i]<<endl;
      float correcthadet = rawEtValueShort[i] - pionEt[i]/scale*minEtCorr[i] - kaonCorrShort[i];
      cout<<"Partial corr ET I should measure "<<pionEt[i]/scale*minEtCorr[i]<<" \"correct\" had ET "<<correcthadet<<" correct had et frac "<<correcthadet/rawEtValueShort[i]<<endl;

      cout<<" partial corr ET 500 MeV "<<partialCorrEtValueShort500MeV[i]<<" +/- "<<partialCorrEtErrShort500MeV[i]<<" = "<<rawEt500MeVValueShort[i]<<"+/-"<<TMath::Power(partialCorrEtValueShort500MeV[i]*nonlinfracerr,2)<<"(NL)+/-"<<TMath::Power(partialCorrEtValueShort500MeV[i]*efffracerr,2)<<"(eff) - "<<kaonCorrShort500MeV[i]<<"+/-"<<kaonErrorShort500MeV[i]<<"(kaon) - "<<hadCorrShort500MeV[i]<<"+/-"<<hadErrorShort500MeV[i]<<"(Had)"<<" frac had ET "<<hadCorrShort500MeV[i]/rawEt500MeVValueShort[i]<<endl;
      cout<<" corr et "<< corrEtValueShort500MeV[i]<<" +/- "<<corrEtErrShort500MeV[i]<<" = "<< scale<<"/"<<partialCorrEtValueShort500MeV[i]<<"*"<<minEtCorr500MeV[i]<<" +/- "<<corrEtValueShort500MeV[i]<<"*("<<minEtErr500MeV[i]/minEtCorr500MeV[i]<<"(Min ET) * "<<partialCorrEtErrShort500MeV[i]/partialCorrEtValueShort500MeV[i]<<"(others) )"<<endl;
      cout<<"Cent bin "<<centLabelsShort[i].Data()<<" cb min "<<cbMin<<" cb max "<<cbMax<<" Raw ET "<<rawEt500MeVValueShort[i]<<" +/- "<<rawEt500MeVErrShort[i];//<<endl;
      cout<<" partial corr ET "<<partialCorrEtValueShort500MeV[i]<<" +/- "<<partialCorrEtErrShort500MeV[i];
      cout<<endl;
      cout<<" corr ET "<<corrEtValueShort500MeV[i]<<" +/- "<<corrEtErrShort500MeV[i];
      cout<<endl<<endl;
    }

    TCanvas *c2 = new TCanvas("c2", "dE_{T}/d#eta#frac{1}{0.5*N_{part}} [GeV]",700, 600);
   
    for(int i=0;i<10;i++){
      cout<<"x "<<xpion[i]<<" y "<<corrEtValuePerNPartShort[i]<<" +/- "<<corrEtErrPerNPartShort[i]<<endl;
    }
    TGraphErrors *gr = new TGraphErrors(10,xpion,corrEtValuePerNPartShort,xerr,corrEtErrPerNPartShort);
    gr->SetMarkerStyle(20);

    TLegend *leg = new TLegend(0.363422,0.157061,0.813187,0.357349);
    leg->SetFillColor(kWhite);
    leg->SetLineColor(kWhite);
    leg->AddEntry(gr,"Reconstructed EM E_{T}", "lp");

    TH1F *frame = new TH1F("frame","frame",1,0,2);
    frame->GetYaxis()->SetTitle("dE_{T}/d#eta");
    frame->GetXaxis()->SetTitle("N_{part}");
    //fPion->SetRange(0,2);
    frame->SetMinimum(0);
    frame->SetMaximum(5);
    //frame->Draw();

    TGraphErrors *gr2 = new TGraphErrors(10,xpion,ypion,xpionerr,ypionerr);
    gr2->GetYaxis()->SetTitle("dE_{T}/d#eta#frac{1}{0.5*N_{part}} [GeV]");
    gr2->GetXaxis()->SetTitle("N_{part}");
    gr2->SetTitle("");
    gr2->GetXaxis()->SetRangeUser(0, 400);
    gr2->GetYaxis()->SetRangeUser(0, 2.5);
    gr2->SetMarkerStyle(20);
    gr2->SetMarkerColor(kRed);
    gr2->Draw("AP same");
    leg->AddEntry(gr2,"Reconstructed charged pion E_{T} (scaled by 0.5)", "lp");

    TGraphErrors *gr3 = new TGraphErrors(10,xpion,emEtPerNpart,xpionerr,emEtPerNpartErr);
    gr3->SetMarkerStyle(29);
    gr3->SetMarkerColor(kBlue);
    gr3->Draw("P same");
    leg->AddEntry(gr3,"E_{T}^{em} from charged pions", "lp");
    
    gr->Draw("P same");
    
    leg->Draw();
    
    
    TString title;
    TString ytitle;
    TString xtitle = "N_{part}";
    if(sim)
    {
	title = "Relative Discrepancy for reconstructed vs true";
	ytitle = "#frac{E_{T,rec}-E_{T,true}}{E_{T,true}}";
    }
    else
    {
      title = "Relative Discrepancy for EM E_{T} vs EM #pi^{+/-}";
      ytitle = "#frac{E_{T,rec}-E_{T,#pi^{+/-}}}{E_{T,#pi^{+/-}}}";
    }
     
    TCanvas *c3 = new TCanvas("c3", title,700, 600);
    TGraphErrors *gr4 = 0;
    if(sim)
    {
      gr4 = new TGraphErrors(10,xpion,y_rel_error,xpionerr,yerr);
    }
    else
    {
      gr4 = new TGraphErrors(10,xpion,y_rel_error,xpionerr,yerr);
    }
    gr4->SetTitle(title);
    gr4->GetYaxis()->SetTitle(ytitle);
    gr4->GetXaxis()->SetTitle(xtitle);
    gr4->GetXaxis()->SetRangeUser(0, 400);
    if(sim) gr4->GetYaxis()->SetRangeUser(-0.2,0.2);
    else gr4->GetYaxis()->SetRangeUser(-1,0);
    gr4->SetMarkerStyle(20);
    gr4->Draw("AP");
    
    TString name = "dn_deta_npart_scale_factor_" + TString::Format("%.2f", scaleFactor);
    if(sim) name += "_sim.png";
    else name += "_real.png";
    c2->Print(name, "png");

    name = "rel_error_";
    if(sim) name += "_sim.png";
    else name += "_real.png";
    c3->Print(name, "png");

    if(sim) name = "tot_neutral_et_sim.png";
    else name = "tot_neutral_et_real.png";
    cents->Print(name, "png");



}
 PlotEmEt.C:1
 PlotEmEt.C:2
 PlotEmEt.C:3
 PlotEmEt.C:4
 PlotEmEt.C:5
 PlotEmEt.C:6
 PlotEmEt.C:7
 PlotEmEt.C:8
 PlotEmEt.C:9
 PlotEmEt.C:10
 PlotEmEt.C:11
 PlotEmEt.C:12
 PlotEmEt.C:13
 PlotEmEt.C:14
 PlotEmEt.C:15
 PlotEmEt.C:16
 PlotEmEt.C:17
 PlotEmEt.C:18
 PlotEmEt.C:19
 PlotEmEt.C:20
 PlotEmEt.C:21
 PlotEmEt.C:22
 PlotEmEt.C:23
 PlotEmEt.C:24
 PlotEmEt.C:25
 PlotEmEt.C:26
 PlotEmEt.C:27
 PlotEmEt.C:28
 PlotEmEt.C:29
 PlotEmEt.C:30
 PlotEmEt.C:31
 PlotEmEt.C:32
 PlotEmEt.C:33
 PlotEmEt.C:34
 PlotEmEt.C:35
 PlotEmEt.C:36
 PlotEmEt.C:37
 PlotEmEt.C:38
 PlotEmEt.C:39
 PlotEmEt.C:40
 PlotEmEt.C:41
 PlotEmEt.C:42
 PlotEmEt.C:43
 PlotEmEt.C:44
 PlotEmEt.C:45
 PlotEmEt.C:46
 PlotEmEt.C:47
 PlotEmEt.C:48
 PlotEmEt.C:49
 PlotEmEt.C:50
 PlotEmEt.C:51
 PlotEmEt.C:52
 PlotEmEt.C:53
 PlotEmEt.C:54
 PlotEmEt.C:55
 PlotEmEt.C:56
 PlotEmEt.C:57
 PlotEmEt.C:58
 PlotEmEt.C:59
 PlotEmEt.C:60
 PlotEmEt.C:61
 PlotEmEt.C:62
 PlotEmEt.C:63
 PlotEmEt.C:64
 PlotEmEt.C:65
 PlotEmEt.C:66
 PlotEmEt.C:67
 PlotEmEt.C:68
 PlotEmEt.C:69
 PlotEmEt.C:70
 PlotEmEt.C:71
 PlotEmEt.C:72
 PlotEmEt.C:73
 PlotEmEt.C:74
 PlotEmEt.C:75
 PlotEmEt.C:76
 PlotEmEt.C:77
 PlotEmEt.C:78
 PlotEmEt.C:79
 PlotEmEt.C:80
 PlotEmEt.C:81
 PlotEmEt.C:82
 PlotEmEt.C:83
 PlotEmEt.C:84
 PlotEmEt.C:85
 PlotEmEt.C:86
 PlotEmEt.C:87
 PlotEmEt.C:88
 PlotEmEt.C:89
 PlotEmEt.C:90
 PlotEmEt.C:91
 PlotEmEt.C:92
 PlotEmEt.C:93
 PlotEmEt.C:94
 PlotEmEt.C:95
 PlotEmEt.C:96
 PlotEmEt.C:97
 PlotEmEt.C:98
 PlotEmEt.C:99
 PlotEmEt.C:100
 PlotEmEt.C:101
 PlotEmEt.C:102
 PlotEmEt.C:103
 PlotEmEt.C:104
 PlotEmEt.C:105
 PlotEmEt.C:106
 PlotEmEt.C:107
 PlotEmEt.C:108
 PlotEmEt.C:109
 PlotEmEt.C:110
 PlotEmEt.C:111
 PlotEmEt.C:112
 PlotEmEt.C:113
 PlotEmEt.C:114
 PlotEmEt.C:115
 PlotEmEt.C:116
 PlotEmEt.C:117
 PlotEmEt.C:118
 PlotEmEt.C:119
 PlotEmEt.C:120
 PlotEmEt.C:121
 PlotEmEt.C:122
 PlotEmEt.C:123
 PlotEmEt.C:124
 PlotEmEt.C:125
 PlotEmEt.C:126
 PlotEmEt.C:127
 PlotEmEt.C:128
 PlotEmEt.C:129
 PlotEmEt.C:130
 PlotEmEt.C:131
 PlotEmEt.C:132
 PlotEmEt.C:133
 PlotEmEt.C:134
 PlotEmEt.C:135
 PlotEmEt.C:136
 PlotEmEt.C:137
 PlotEmEt.C:138
 PlotEmEt.C:139
 PlotEmEt.C:140
 PlotEmEt.C:141
 PlotEmEt.C:142
 PlotEmEt.C:143
 PlotEmEt.C:144
 PlotEmEt.C:145
 PlotEmEt.C:146
 PlotEmEt.C:147
 PlotEmEt.C:148
 PlotEmEt.C:149
 PlotEmEt.C:150
 PlotEmEt.C:151
 PlotEmEt.C:152
 PlotEmEt.C:153
 PlotEmEt.C:154
 PlotEmEt.C:155
 PlotEmEt.C:156
 PlotEmEt.C:157
 PlotEmEt.C:158
 PlotEmEt.C:159
 PlotEmEt.C:160
 PlotEmEt.C:161
 PlotEmEt.C:162
 PlotEmEt.C:163
 PlotEmEt.C:164
 PlotEmEt.C:165
 PlotEmEt.C:166
 PlotEmEt.C:167
 PlotEmEt.C:168
 PlotEmEt.C:169
 PlotEmEt.C:170
 PlotEmEt.C:171
 PlotEmEt.C:172
 PlotEmEt.C:173
 PlotEmEt.C:174
 PlotEmEt.C:175
 PlotEmEt.C:176
 PlotEmEt.C:177
 PlotEmEt.C:178
 PlotEmEt.C:179
 PlotEmEt.C:180
 PlotEmEt.C:181
 PlotEmEt.C:182
 PlotEmEt.C:183
 PlotEmEt.C:184
 PlotEmEt.C:185
 PlotEmEt.C:186
 PlotEmEt.C:187
 PlotEmEt.C:188
 PlotEmEt.C:189
 PlotEmEt.C:190
 PlotEmEt.C:191
 PlotEmEt.C:192
 PlotEmEt.C:193
 PlotEmEt.C:194
 PlotEmEt.C:195
 PlotEmEt.C:196
 PlotEmEt.C:197
 PlotEmEt.C:198
 PlotEmEt.C:199
 PlotEmEt.C:200
 PlotEmEt.C:201
 PlotEmEt.C:202
 PlotEmEt.C:203
 PlotEmEt.C:204
 PlotEmEt.C:205
 PlotEmEt.C:206
 PlotEmEt.C:207
 PlotEmEt.C:208
 PlotEmEt.C:209
 PlotEmEt.C:210
 PlotEmEt.C:211
 PlotEmEt.C:212
 PlotEmEt.C:213
 PlotEmEt.C:214
 PlotEmEt.C:215
 PlotEmEt.C:216
 PlotEmEt.C:217
 PlotEmEt.C:218
 PlotEmEt.C:219
 PlotEmEt.C:220
 PlotEmEt.C:221
 PlotEmEt.C:222
 PlotEmEt.C:223
 PlotEmEt.C:224
 PlotEmEt.C:225
 PlotEmEt.C:226
 PlotEmEt.C:227
 PlotEmEt.C:228
 PlotEmEt.C:229
 PlotEmEt.C:230
 PlotEmEt.C:231
 PlotEmEt.C:232
 PlotEmEt.C:233
 PlotEmEt.C:234
 PlotEmEt.C:235
 PlotEmEt.C:236
 PlotEmEt.C:237
 PlotEmEt.C:238
 PlotEmEt.C:239
 PlotEmEt.C:240
 PlotEmEt.C:241
 PlotEmEt.C:242
 PlotEmEt.C:243
 PlotEmEt.C:244
 PlotEmEt.C:245
 PlotEmEt.C:246
 PlotEmEt.C:247
 PlotEmEt.C:248
 PlotEmEt.C:249
 PlotEmEt.C:250
 PlotEmEt.C:251
 PlotEmEt.C:252
 PlotEmEt.C:253
 PlotEmEt.C:254
 PlotEmEt.C:255
 PlotEmEt.C:256
 PlotEmEt.C:257
 PlotEmEt.C:258
 PlotEmEt.C:259
 PlotEmEt.C:260
 PlotEmEt.C:261
 PlotEmEt.C:262
 PlotEmEt.C:263
 PlotEmEt.C:264
 PlotEmEt.C:265
 PlotEmEt.C:266
 PlotEmEt.C:267
 PlotEmEt.C:268
 PlotEmEt.C:269
 PlotEmEt.C:270
 PlotEmEt.C:271
 PlotEmEt.C:272
 PlotEmEt.C:273
 PlotEmEt.C:274
 PlotEmEt.C:275
 PlotEmEt.C:276
 PlotEmEt.C:277
 PlotEmEt.C:278
 PlotEmEt.C:279
 PlotEmEt.C:280
 PlotEmEt.C:281
 PlotEmEt.C:282
 PlotEmEt.C:283
 PlotEmEt.C:284
 PlotEmEt.C:285
 PlotEmEt.C:286
 PlotEmEt.C:287
 PlotEmEt.C:288
 PlotEmEt.C:289
 PlotEmEt.C:290
 PlotEmEt.C:291
 PlotEmEt.C:292
 PlotEmEt.C:293
 PlotEmEt.C:294
 PlotEmEt.C:295
 PlotEmEt.C:296
 PlotEmEt.C:297
 PlotEmEt.C:298
 PlotEmEt.C:299
 PlotEmEt.C:300
 PlotEmEt.C:301
 PlotEmEt.C:302
 PlotEmEt.C:303
 PlotEmEt.C:304
 PlotEmEt.C:305
 PlotEmEt.C:306
 PlotEmEt.C:307
 PlotEmEt.C:308
 PlotEmEt.C:309
 PlotEmEt.C:310
 PlotEmEt.C:311
 PlotEmEt.C:312
 PlotEmEt.C:313
 PlotEmEt.C:314
 PlotEmEt.C:315
 PlotEmEt.C:316
 PlotEmEt.C:317
 PlotEmEt.C:318
 PlotEmEt.C:319
 PlotEmEt.C:320
 PlotEmEt.C:321
 PlotEmEt.C:322
 PlotEmEt.C:323
 PlotEmEt.C:324
 PlotEmEt.C:325
 PlotEmEt.C:326
 PlotEmEt.C:327
 PlotEmEt.C:328
 PlotEmEt.C:329
 PlotEmEt.C:330
 PlotEmEt.C:331
 PlotEmEt.C:332
 PlotEmEt.C:333
 PlotEmEt.C:334
 PlotEmEt.C:335
 PlotEmEt.C:336
 PlotEmEt.C:337
 PlotEmEt.C:338
 PlotEmEt.C:339
 PlotEmEt.C:340
 PlotEmEt.C:341
 PlotEmEt.C:342
 PlotEmEt.C:343
 PlotEmEt.C:344
 PlotEmEt.C:345
 PlotEmEt.C:346
 PlotEmEt.C:347
 PlotEmEt.C:348
 PlotEmEt.C:349
 PlotEmEt.C:350
 PlotEmEt.C:351
 PlotEmEt.C:352
 PlotEmEt.C:353
 PlotEmEt.C:354
 PlotEmEt.C:355
 PlotEmEt.C:356
 PlotEmEt.C:357
 PlotEmEt.C:358
 PlotEmEt.C:359
 PlotEmEt.C:360
 PlotEmEt.C:361
 PlotEmEt.C:362
 PlotEmEt.C:363
 PlotEmEt.C:364
 PlotEmEt.C:365
 PlotEmEt.C:366
 PlotEmEt.C:367
 PlotEmEt.C:368
 PlotEmEt.C:369
 PlotEmEt.C:370
 PlotEmEt.C:371
 PlotEmEt.C:372
 PlotEmEt.C:373
 PlotEmEt.C:374
 PlotEmEt.C:375
 PlotEmEt.C:376
 PlotEmEt.C:377
 PlotEmEt.C:378
 PlotEmEt.C:379
 PlotEmEt.C:380
 PlotEmEt.C:381
 PlotEmEt.C:382
 PlotEmEt.C:383
 PlotEmEt.C:384
 PlotEmEt.C:385
 PlotEmEt.C:386
 PlotEmEt.C:387
 PlotEmEt.C:388
 PlotEmEt.C:389
 PlotEmEt.C:390
 PlotEmEt.C:391
 PlotEmEt.C:392
 PlotEmEt.C:393
 PlotEmEt.C:394
 PlotEmEt.C:395
 PlotEmEt.C:396
 PlotEmEt.C:397
 PlotEmEt.C:398
 PlotEmEt.C:399
 PlotEmEt.C:400
 PlotEmEt.C:401
 PlotEmEt.C:402
 PlotEmEt.C:403
 PlotEmEt.C:404
 PlotEmEt.C:405
 PlotEmEt.C:406
 PlotEmEt.C:407
 PlotEmEt.C:408
 PlotEmEt.C:409
 PlotEmEt.C:410
 PlotEmEt.C:411
 PlotEmEt.C:412
 PlotEmEt.C:413
 PlotEmEt.C:414
 PlotEmEt.C:415
 PlotEmEt.C:416
 PlotEmEt.C:417
 PlotEmEt.C:418
 PlotEmEt.C:419
 PlotEmEt.C:420
 PlotEmEt.C:421
 PlotEmEt.C:422
 PlotEmEt.C:423
 PlotEmEt.C:424
 PlotEmEt.C:425
 PlotEmEt.C:426
 PlotEmEt.C:427
 PlotEmEt.C:428
 PlotEmEt.C:429
 PlotEmEt.C:430
 PlotEmEt.C:431
 PlotEmEt.C:432
 PlotEmEt.C:433
 PlotEmEt.C:434
 PlotEmEt.C:435
 PlotEmEt.C:436
 PlotEmEt.C:437
 PlotEmEt.C:438
 PlotEmEt.C:439
 PlotEmEt.C:440
 PlotEmEt.C:441
 PlotEmEt.C:442
 PlotEmEt.C:443
 PlotEmEt.C:444
 PlotEmEt.C:445
 PlotEmEt.C:446
 PlotEmEt.C:447
 PlotEmEt.C:448
 PlotEmEt.C:449
 PlotEmEt.C:450
 PlotEmEt.C:451
 PlotEmEt.C:452
 PlotEmEt.C:453
 PlotEmEt.C:454
 PlotEmEt.C:455
 PlotEmEt.C:456
 PlotEmEt.C:457
 PlotEmEt.C:458
 PlotEmEt.C:459
 PlotEmEt.C:460
 PlotEmEt.C:461
 PlotEmEt.C:462
 PlotEmEt.C:463
 PlotEmEt.C:464
 PlotEmEt.C:465
 PlotEmEt.C:466
 PlotEmEt.C:467
 PlotEmEt.C:468
 PlotEmEt.C:469
 PlotEmEt.C:470
 PlotEmEt.C:471
 PlotEmEt.C:472
 PlotEmEt.C:473
 PlotEmEt.C:474
 PlotEmEt.C:475
 PlotEmEt.C:476
 PlotEmEt.C:477
 PlotEmEt.C:478
 PlotEmEt.C:479
 PlotEmEt.C:480
 PlotEmEt.C:481
 PlotEmEt.C:482
 PlotEmEt.C:483
 PlotEmEt.C:484
 PlotEmEt.C:485
 PlotEmEt.C:486
 PlotEmEt.C:487
 PlotEmEt.C:488
 PlotEmEt.C:489
 PlotEmEt.C:490
 PlotEmEt.C:491
 PlotEmEt.C:492
 PlotEmEt.C:493
 PlotEmEt.C:494
 PlotEmEt.C:495
 PlotEmEt.C:496
 PlotEmEt.C:497
 PlotEmEt.C:498
 PlotEmEt.C:499
 PlotEmEt.C:500
 PlotEmEt.C:501
 PlotEmEt.C:502
 PlotEmEt.C:503
 PlotEmEt.C:504
 PlotEmEt.C:505
 PlotEmEt.C:506
 PlotEmEt.C:507
 PlotEmEt.C:508
 PlotEmEt.C:509
 PlotEmEt.C:510
 PlotEmEt.C:511
 PlotEmEt.C:512
 PlotEmEt.C:513
 PlotEmEt.C:514
 PlotEmEt.C:515
 PlotEmEt.C:516
 PlotEmEt.C:517
 PlotEmEt.C:518
 PlotEmEt.C:519
 PlotEmEt.C:520
 PlotEmEt.C:521
 PlotEmEt.C:522
 PlotEmEt.C:523
 PlotEmEt.C:524
 PlotEmEt.C:525
 PlotEmEt.C:526
 PlotEmEt.C:527
 PlotEmEt.C:528
 PlotEmEt.C:529
 PlotEmEt.C:530
 PlotEmEt.C:531
 PlotEmEt.C:532
 PlotEmEt.C:533
 PlotEmEt.C:534
 PlotEmEt.C:535
 PlotEmEt.C:536
 PlotEmEt.C:537
 PlotEmEt.C:538