ROOT logo
TCanvas * c;


void createHistos(bool single=true, bool combined = true, bool merged=true, int fromType=0, int toType=2){


	c = new TCanvas();
// 0 = raw->esd
// 1 = raw->flat
// 2= esd -> flat


	TTree * t[4];


	char*sname[4]={"DoEvent.Stop","DoEvent.Stop","DoEvent.Stop","DoEvent.Stop"};
	char*conversion[4]={"rawToEsd","rawToFlat","HltEsdToFlat","NormalEsdToFlat"};
	char *infolder="rawToHltEsd";
	char *subfolder="";
	Int_t outMax = 80;
	Int_t inMax = 150;
	Int_t timeMax = 20;


// create histograms for different types of conversion	

for(int type=fromType; type<=toType; ++type){

	if(type==1){
		timeMax=6;
		outMax = 700;
		inMax = 2000;
		infolder = "rawToFlat";
	}
	else if(type==2){
		timeMax = 1;
		inMax =200;
		infolder = "HltEsdToFlat";
	}
	else if(type==3){
		timeMax = 1;
		inMax =200;
		infolder = "NormalEsdToFlat";
	}


	if(merged){
		t[type] = AliSysInfo::MakeTree(Form("%s/syswatch_merged.log" , infolder) );
		subfolder = "/merged";
	}
	else{
		t[type] = AliSysInfo::MakeTree(Form("%s/syswatch.log" , infolder) );
		subfolder = "/single";

	}



if (single){

	cout<<"Creating plots for "<< infolder<<endl;

	// Draw cpu, sys, cpu+sys time distribution

	t[type]->Draw("1000*(pI.fCpuUser-pIOld.fCpuUser)>>h(100,0,15)", Form("sname==\"%s\"", sname[type]) );
	saveHist("cpuTimeUserDistribution",conversion[type] , infolder, subfolder, "cpu time (user)/event (ms)", "\#events","",kTRUE);

	t[type]->Draw("1000*(pI.fCpuSys-pIOld.fCpuSys)>>h()",Form("sname==\"%s\"", sname[type]));
	saveHist("cpuTimeSysDistribution",conversion[type] , infolder, subfolder, "cpu time (sys)/event (ms)", "\#events","",kTRUE);

	t[type]->Draw("1000*(pI.fCpuUser+pI.fCpuSys-pIOld.fCpuUser-pIOld.fCpuSys)>>h()",Form("sname==\"%s\"", sname[type]));
	saveHist("cpuTimeUserSysDistribution",conversion[type] , infolder, subfolder, "cpu time (user+sys)/event (ms)", "\#events","",kTRUE);



	// Draw cpu, sys, cpu+sys time vs input size

	//t[type]->Draw("1000*(pI.fCpuUser-pIOld.fCpuUser):id0/1000>>h(1000,0,120,1000,0,15)",Form("sname==\"%s\"", sname[type]));


	int scale = type==0? 1000:1;
	t[type]->Draw( Form("1000*(pI.fCpuUser-pIOld.fCpuUser):id0/1024/%d>>h(100,0,%d,100,0,%d)", scale,inMax,timeMax) ,Form("sname==\"%s\"", sname[type]));
	saveHist("cpuTimeUserVsInputSize",conversion[type] , infolder, subfolder, "input size (kB)", "cpu time (user)/event (ms)", "");

	//t[type]->Draw("1000*(pI.fCpuSys-pIOld.fCpuSys):id0/1000>>h(1000,0,120,1000,0,15)",Form("sname==\"%s\"", sname[type]));
	t[type]->Draw( Form("1000*(pI.fCpuSys-pIOld.fCpuSys):id0/1024/%d>>h(100,0,%d,100,0,%d)",scale,inMax,timeMax) ,Form("sname==\"%s\"", sname[type]));
	saveHist("cpuTimeSysVsInputSize",conversion[type] , infolder, subfolder, "input size (kB)", "cpu time (sys)/event (ms)","");

	//t[type]->Draw("1000*(pI.fCpuUser+pI.fCpuSys-pIOld.fCpuUser-pIOld.fCpuSys):id0/1000>>h(1000,0,120,1000,0,15)",Form("sname==\"%s\"", sname[type]));
	t[type]->Draw( Form("1000*(pI.fCpuUser+pI.fCpuSys-pIOld.fCpuUser-pIOld.fCpuSys):id0/1024/%d>>h(100,0,%d,100,0,%d)",scale, inMax,timeMax) ,Form("sname==\"%s\"", sname[type]));
	saveHist("cpuTimeUserSysVsInputSize",conversion[type] , infolder, subfolder, "input size (kB)", "cpu time (user+sys)/event (ms)","");


	// Draw cpu, sys, cpu+sys time vs output size

	//t[type]->Draw("1000*(pI.fCpuUser-pIOld.fCpuUser):id0/1000>>h(1000,0,120,1000,0,15)",Form("sname==\"%s\"", sname[type]));
	t[type]->Draw(Form("1000*(pI.fCpuUser-pIOld.fCpuUser):id1/1024>>h(1000,0,%d,1000,0,%d)",outMax,timeMax) ,Form("sname==\"%s\"", sname[type]));
	saveHist("cpuTimeUserVsOutSize",conversion[type] , infolder, subfolder, "output size (kB)", "cpu time (user)/event (ms)");
	//t[type]->Draw("1000*(pI.fCpuSys-pIOld.fCpuSys):id0/1000>>h(1000,0,120,1000,0,15)",Form("sname==\"%s\"", sname[type]));
	t[type]->Draw(Form("1000*(pI.fCpuSys-pIOld.fCpuSys):id1/1024>>h(1000,0,%d,1000,0,%d)",outMax,timeMax) ,Form("sname==\"%s\"", sname[type]));
	saveHist("cpuTimeSysVsOutSize",conversion[type] , infolder, subfolder, "output size (kB)", "cpu time (sys)/event (ms)");

	//t[type]->Draw("1000*(pI.fCpuUser+pI.fCpuSys-pIOld.fCpuUser-pIOld.fCpuSys):id0/1000>>h(1000,0,120,1000,0,15)",Form("sname==\"%s\"", sname[type]));
	t[type]->Draw(Form("1000*(pI.fCpuUser+pI.fCpuSys-pIOld.fCpuUser-pIOld.fCpuSys):id1/1024>>h(1000,0,%d,1000,0,%d)",outMax,timeMax) ,Form("sname==\"%s\"", sname[type]));
	saveHist("cpuTimeUserSysVsOutSize",conversion[type] , infolder, subfolder, "output size (kB)", "cpu time (user+sys)/event (ms)");


	// Draw cpu, sys, cpu+sys time vs timestamp

	//t[type]->Draw("1000*(pI.fCpuUser-pIOld.fCpuUser):stampSec>>h(1000,1402524e3,1402534e3,1000,0,15)",Form("sname==\"%s\"", sname[type]));
	t[type]->Draw("1000*(pI.fCpuUser-pIOld.fCpuUser):stampSec>>h()",Form("sname==\"%s\"", sname[type]));
	saveHist("cpuTimeUserVsTimestamp",conversion[type] , infolder, subfolder, "timestamp (s)", "cpu time (user)/event (ms)");

	//t[type]->Draw("1000*(pI.fCpuSys-pIOld.fCpuSys):stampSec>>h(1000,1402524e3,1402534e3,1000,0,15)",Form("sname==\"%s\"", sname[type]));
	t[type]->Draw("1000*(pI.fCpuSys-pIOld.fCpuSys):stampSec>>h()",Form("sname==\"%s\"", sname[type]));
	saveHist("cpuTimeSysVsTimestamp",conversion[type] , infolder, subfolder, "timestamp (s)", "cpu time (sys)/event (ms)");

	//t[type]->Draw("1000*(pI.fCpuUser+pI.fCpuSys-pIOld.fCpuUser-pIOld.fCpuSys):stampSec>>h(1000,1402524e3,1402534e3,1000,0,15)",Form("sname==\"%s\"", sname[type]));
	t[type]->Draw("1000*(pI.fCpuUser+pI.fCpuSys-pIOld.fCpuUser-pIOld.fCpuSys):stampSec>>h()",Form("sname==\"%s\"", sname[type]));
	saveHist("cpuTimeUserSysVsTimestamp",conversion[type] , infolder, subfolder, "timestamp (s)", "cpu time (user+sys)/event (ms)");


	// Draw cpu, sys, cpu+sys time vs time in event

	t[type]->Draw("1000*(pI.fCpuUser-pIOld.fCpuUser):T>>h()",Form("sname==\"%s\"", sname[type]));
	saveHist("cpuTimeUserVsT",conversion[type] , infolder, subfolder, "time in file (s)", "cpu time (user)/event (ms)");

	t[type]->Draw("1000*(pI.fCpuSys-pIOld.fCpuSys):T>>h()",Form("sname==\"%s\"", sname[type]));
	saveHist("cpuTimeSysVsT",conversion[type] , infolder, subfolder, "time in file (s)", "cpu time (sys)/event (ms)");

	t[type]->Draw("1000*(pI.fCpuUser+pI.fCpuSys-pIOld.fCpuUser-pIOld.fCpuSys):T>>h()",Form("sname==\"%s\"", sname[type]));
	saveHist("cpuTimeUserSysVsT",conversion[type] , infolder, subfolder, "time in file (s)", "cpu time (user+sys)/event (ms)");

	
	// Draw input size distribution

	t[type]->Draw("id0/1024>>h()",Form("sname==\"%s\"", sname[type]));
	saveHist("inputSize",conversion[type] , infolder, subfolder, "input size (kB)", "\#events","",kTRUE);


	// Draw output size distribution

	t[type]->Draw("id1/1024>>h()",Form("sname==\"%s\"", sname[type]));
	saveHist("outputSize",conversion[type] , infolder, subfolder, "output size (kB)", "\#events","",kTRUE);


	// Draw output vs input size

	t[type]->Draw(Form("id1/1024/%d:id0/1024/%d>>h()",scale,scale),Form("sname==\"%s\"", sname[type]));
	saveHist("OutVsIn",conversion[type] , infolder, subfolder, "input size (kB)", "output size (kB)","", kFALSE, kTRUE);

}
}


// combined histo



// draw time distribution for flat and esd in one histo
if(combined){
	cout<<"Creating combined plots"<<endl;

	infolder = "combined";
	subfolder = "";
	char* legends[2] = {"ESD","flatESD"};
	char* options[2] = {"",""};



	t[0]->Draw("1000*(pI.fCpuUser-pIOld.fCpuUser)>>h1(100,0,15)", Form("sname==\"%s\"", sname[0]) );
	t[1]->Draw("1000*(pI.fCpuUser-pIOld.fCpuUser)>>h2(100,0,15)", Form("sname==\"%s\"", sname[1]) );
//	t[0]->Draw("1000*(pI.fCpuUser-pIOld.fCpuUser)>>h1()", Form("sname==\"%s\"", sname[0]) );
//	t[1]->Draw("1000*(pI.fCpuUser-pIOld.fCpuUser)>>h2()", Form("sname==\"%s\"", sname[1]) );
	save2Hists("cpuTimeUserDistribution","flatVsNormal" , infolder, subfolder, "cpu time (user)/event (ms)", "\#events",legends, options,kTRUE,1) ;

	t[0]->Draw("1000*(pI.fCpuUser-pIOld.fCpuUser):id0/1024/1000>>h1(1000,0,2000,1000,0,16)", Form("sname==\"%s\"", sname[0]) );
	t[1]->Draw("1000*(pI.fCpuUser-pIOld.fCpuUser):id0/1024>>h2(1000,0,2000,1000,0,16)", Form("sname==\"%s\"", sname[1]) );
	//t[0]->Draw("1000*(pI.fCpuUser-pIOld.fCpuUser):id0/1024/1000>>h1()", Form("sname==\"%s\"", sname[0]) );
	//t[1]->Draw("1000*(pI.fCpuUser-pIOld.fCpuUser):id0/1024>>h2()", Form("sname==\"%s\"", sname[1]) );
	save2Hists("cpuTimeUserVsInputSize","flatVsNormal" , infolder, subfolder, "input size (kB)", "cpu time (user)/event (ms)",legends, options,kFALSE,2);




// loop over trees to get combined histos



	TH2D*flatVsNormalCpuTime = new TH2D("flatVsNormalCpuTime", "cpu time: flat vs normal", 400,0,8,150,0,3);
	TH2D*flatVsNormalInSize = new TH2D("flatVsNormalInSize", "input size: flat vs normal", 200,0,200,2000,0,2000);
	TH2D*flatVsNormalOutSize = new TH2D("flatVsNormalOutSize", "output size: flat vs normal", 80,0,80,800,0,800);
	Double_t cpuEsd , cpuOldEsd, cpuFlat, cpuOldFlat;
	Int_t inputSizeEsd, inputSizeFlat,outputSizeEsd, outputSizeFlat;
	char snameEsd[100]=".";
	char snameFlat[100]=".";

	t[0]->SetBranchAddress("pI.fCpuUser",&cpuEsd);
	t[0]->SetBranchAddress("pIOld.fCpuUser",&cpuOldEsd);
	t[0]->SetBranchAddress("sname",&snameEsd);
	t[0]->SetBranchAddress("id0",&inputSizeEsd);
	t[0]->SetBranchAddress("id1",&outputSizeEsd);

	t[1]->SetBranchAddress("pI.fCpuUser",&cpuFlat);
	t[1]->SetBranchAddress("pIOld.fCpuUser",&cpuOldFlat);
	t[1]->SetBranchAddress("sname",&snameFlat);
	t[1]->SetBranchAddress("id0",&inputSizeFlat);
	t[1]->SetBranchAddress("id1",&outputSizeFlat);


     t[0]->SetBranchStatus("*",0); //disable all branches
     t[0]->SetBranchStatus("sname",1);
     t[0]->SetBranchStatus("pI.fCpuUser",1);
     t[0]->SetBranchStatus("pIOld.fCpuUser",1);
     t[0]->SetBranchStatus("id0",1);
     t[0]->SetBranchStatus("id1",1);

     t[1]->SetBranchStatus("*",0); //disable all branches
     t[1]->SetBranchStatus("sname",1);
     t[1]->SetBranchStatus("pI.fCpuUser",1);
     t[1]->SetBranchStatus("pIOld.fCpuUser",1);
     t[1]->SetBranchStatus("id0",1);
     t[1]->SetBranchStatus("id1",1);

Int_t i2=0;

// loop over timestamps in normalESD tree
for (Int_t i1 = 0; i1 < t[0]->GetEntries()  ; i1++) {
	
	t[0]->GetEntry(i1);
	if( strcmp(snameEsd,"DoEvent.Stop") == 0){
		t[1]->GetEntry(i2++);
		while(strcmp(snameFlat,"DoEvent.Stop") != 0 && i2 < t[1]->GetEntries()){
			t[1]->GetEntry(i2++);
		}
		if(i2 < t[1]->GetEntries()){
//cout<<outputSizeEsd<<" "<<outputSizeFlat<<endl;
		  flatVsNormalCpuTime->Fill( 1000*(cpuEsd-cpuOldEsd), 1000*(cpuFlat-cpuOldFlat) );
		  flatVsNormalInSize->Fill( inputSizeEsd/1000/1024, inputSizeFlat/1024);
		  flatVsNormalOutSize->Fill( outputSizeEsd/1000/1024, outputSizeFlat/1024);
		}
	}
	
}


	saveHist(flatVsNormalCpuTime, infolder, subfolder, "cpu time ESD converter (ms)", "cpu time flatESD converter (ms)", "colz", kFALSE, kTRUE,kTRUE);
	saveHist(flatVsNormalInSize, infolder, subfolder, "input size time ESD converter (kB)", "input size flatESD converter (kB)", "colz");
	saveHist(flatVsNormalOutSize, infolder, subfolder, "output size ESD converter (kB)", "output size flatESD converter (kB)", "colz",kFALSE,kTRUE);
delete flatVsNormalCpuTime;
delete flatVsNormalInSize;
delete flatVsNormalOutSize;

}
return;
}

void saveHist(TH1*h, char*infolder, char*subfolder, char*x="",char*y="",char*options="", Bool_t log=kFALSE, Bool_t fit = kFALSE, Bool_t xy=kFALSE){
	TCanvas *c = new TCanvas();
	if(log){
		c->SetLogy();
	}
	h->GetXaxis()->SetTitle(x);
	h->GetYaxis()->SetTitle(y);
	h->SetStats(0);
		h->SetMarkerStyle(6);
	h->Draw(options);
	//c->SaveAs( Form("%s%s/%s.png", infolder, subfolder, h->GetName()) );
	//c->SaveAs( Form("%s%s/%s.root", infolder, subfolder, h->GetName()) );
	if(fit){

        TF1 *linear = new TF1("linear","pol2(0)", 0,2000);

        linear->SetParameters(0.5,0.2);
        linear->SetLineColor(kRed);
        linear->SetLineWidth(2);
		h->Fit(linear);

	}
	if(xy){

        TF1 *linear = new TF1("lin","x",0,8);
        linear->SetLineColor(kRed);
        linear->SetLineWidth(2);
		linear->Draw("same");

	}
	c->SaveAs( Form("%s%s/%s_fit.png", infolder, subfolder, h->GetName()) );
	c->SaveAs( Form("%s%s/%s_fit.root", infolder, subfolder, h->GetName()) );
}





void saveHist(char* name, char* type, char*infolder, char*subfolder, char*x="",char*y="", char*options="", Bool_t log=kFALSE, Bool_t fit = kFALSE){
	TCanvas *c = new TCanvas();
	if(log){
		c->SetLogy();
	}
	TH1* h = (TH1*)gDirectory->Get("h");
	cout<<name<<" mean: "<< h->GetMean()<<endl;
	h->SetTitle(Form("%s_%s", name, type) );
	h->GetXaxis()->SetTitle(x);
	h->GetYaxis()->SetTitle(y);
	h->SetStats(0);
	//h->SetMarkerStyle(6);
	h->Draw(options);
	if(fit){

        TF1 *linear = new TF1("linear","pol2(0)", 0,2000);

        linear->SetParameters(0.5,0.2);
        linear->SetLineColor(kRed);
        linear->SetLineWidth(2);
		h->Fit(linear);

	}


	c->SaveAs( Form("%s%s/%s_%s.png", infolder, subfolder, name, type) );
	c->SaveAs( Form("%s%s/%s_%s.root", infolder, subfolder, name, type) );
	gDirectory->DeleteAll();
}


void save2Hists(char* name, char* infolder, char*subfolder, char*x="",char*y="", char**legends =0x0, char**options=0x0,  Bool_t log=kFALSE, Int_t dim=1){
	TCanvas *c = new TCanvas();
	if(log){
		c->SetLogy();
	}
	TH1* h1 = (TH1*)gDirectory->Get("h1");
	TH1* h2 = (TH1*)gDirectory->Get("h2");

	if(dim==1){
		h1->SetFillColor(kRed);
		h2->SetFillColor(kBlue);
	}
	else if(dim==2){
		h1->SetMarkerColor(kRed);
		h2->SetMarkerColor(kBlue);
		h1->SetMarkerStyle(6);
		h2->SetMarkerStyle(6);
	}

	h1->SetTitle(Form("%s_%s", name, type) );
	h1->GetXaxis()->SetTitle(x);
	h1->GetYaxis()->SetTitle(y);
	h1->SetStats(0);
	h1->Draw();
	h2->Draw("same");
    TLegend* l=new TLegend(.58,0.68,.88,0.85);
	l->SetFillColor(0);
	l->SetBorderSize(0);

	if(dim==1){
		l->AddEntry(h1, legends[0], "f");
		l->AddEntry(h2, legends[1],"f");
	}
	else if(dim==2){
		l->AddEntry(h1, legends[0],"p");
		l->AddEntry(h2, legends[1],"p");
	}

	l->Draw("same");
	c->SaveAs( Form("%s%s/%s_%s.png", infolder, subfolder, name, type) );
	c->SaveAs( Form("%s%s/%s_%s.root", infolder, subfolder, name,type) );
	gDirectory->DeleteAll();
	delete l;
}
 createHistos.C:1
 createHistos.C:2
 createHistos.C:3
 createHistos.C:4
 createHistos.C:5
 createHistos.C:6
 createHistos.C:7
 createHistos.C:8
 createHistos.C:9
 createHistos.C:10
 createHistos.C:11
 createHistos.C:12
 createHistos.C:13
 createHistos.C:14
 createHistos.C:15
 createHistos.C:16
 createHistos.C:17
 createHistos.C:18
 createHistos.C:19
 createHistos.C:20
 createHistos.C:21
 createHistos.C:22
 createHistos.C:23
 createHistos.C:24
 createHistos.C:25
 createHistos.C:26
 createHistos.C:27
 createHistos.C:28
 createHistos.C:29
 createHistos.C:30
 createHistos.C:31
 createHistos.C:32
 createHistos.C:33
 createHistos.C:34
 createHistos.C:35
 createHistos.C:36
 createHistos.C:37
 createHistos.C:38
 createHistos.C:39
 createHistos.C:40
 createHistos.C:41
 createHistos.C:42
 createHistos.C:43
 createHistos.C:44
 createHistos.C:45
 createHistos.C:46
 createHistos.C:47
 createHistos.C:48
 createHistos.C:49
 createHistos.C:50
 createHistos.C:51
 createHistos.C:52
 createHistos.C:53
 createHistos.C:54
 createHistos.C:55
 createHistos.C:56
 createHistos.C:57
 createHistos.C:58
 createHistos.C:59
 createHistos.C:60
 createHistos.C:61
 createHistos.C:62
 createHistos.C:63
 createHistos.C:64
 createHistos.C:65
 createHistos.C:66
 createHistos.C:67
 createHistos.C:68
 createHistos.C:69
 createHistos.C:70
 createHistos.C:71
 createHistos.C:72
 createHistos.C:73
 createHistos.C:74
 createHistos.C:75
 createHistos.C:76
 createHistos.C:77
 createHistos.C:78
 createHistos.C:79
 createHistos.C:80
 createHistos.C:81
 createHistos.C:82
 createHistos.C:83
 createHistos.C:84
 createHistos.C:85
 createHistos.C:86
 createHistos.C:87
 createHistos.C:88
 createHistos.C:89
 createHistos.C:90
 createHistos.C:91
 createHistos.C:92
 createHistos.C:93
 createHistos.C:94
 createHistos.C:95
 createHistos.C:96
 createHistos.C:97
 createHistos.C:98
 createHistos.C:99
 createHistos.C:100
 createHistos.C:101
 createHistos.C:102
 createHistos.C:103
 createHistos.C:104
 createHistos.C:105
 createHistos.C:106
 createHistos.C:107
 createHistos.C:108
 createHistos.C:109
 createHistos.C:110
 createHistos.C:111
 createHistos.C:112
 createHistos.C:113
 createHistos.C:114
 createHistos.C:115
 createHistos.C:116
 createHistos.C:117
 createHistos.C:118
 createHistos.C:119
 createHistos.C:120
 createHistos.C:121
 createHistos.C:122
 createHistos.C:123
 createHistos.C:124
 createHistos.C:125
 createHistos.C:126
 createHistos.C:127
 createHistos.C:128
 createHistos.C:129
 createHistos.C:130
 createHistos.C:131
 createHistos.C:132
 createHistos.C:133
 createHistos.C:134
 createHistos.C:135
 createHistos.C:136
 createHistos.C:137
 createHistos.C:138
 createHistos.C:139
 createHistos.C:140
 createHistos.C:141
 createHistos.C:142
 createHistos.C:143
 createHistos.C:144
 createHistos.C:145
 createHistos.C:146
 createHistos.C:147
 createHistos.C:148
 createHistos.C:149
 createHistos.C:150
 createHistos.C:151
 createHistos.C:152
 createHistos.C:153
 createHistos.C:154
 createHistos.C:155
 createHistos.C:156
 createHistos.C:157
 createHistos.C:158
 createHistos.C:159
 createHistos.C:160
 createHistos.C:161
 createHistos.C:162
 createHistos.C:163
 createHistos.C:164
 createHistos.C:165
 createHistos.C:166
 createHistos.C:167
 createHistos.C:168
 createHistos.C:169
 createHistos.C:170
 createHistos.C:171
 createHistos.C:172
 createHistos.C:173
 createHistos.C:174
 createHistos.C:175
 createHistos.C:176
 createHistos.C:177
 createHistos.C:178
 createHistos.C:179
 createHistos.C:180
 createHistos.C:181
 createHistos.C:182
 createHistos.C:183
 createHistos.C:184
 createHistos.C:185
 createHistos.C:186
 createHistos.C:187
 createHistos.C:188
 createHistos.C:189
 createHistos.C:190
 createHistos.C:191
 createHistos.C:192
 createHistos.C:193
 createHistos.C:194
 createHistos.C:195
 createHistos.C:196
 createHistos.C:197
 createHistos.C:198
 createHistos.C:199
 createHistos.C:200
 createHistos.C:201
 createHistos.C:202
 createHistos.C:203
 createHistos.C:204
 createHistos.C:205
 createHistos.C:206
 createHistos.C:207
 createHistos.C:208
 createHistos.C:209
 createHistos.C:210
 createHistos.C:211
 createHistos.C:212
 createHistos.C:213
 createHistos.C:214
 createHistos.C:215
 createHistos.C:216
 createHistos.C:217
 createHistos.C:218
 createHistos.C:219
 createHistos.C:220
 createHistos.C:221
 createHistos.C:222
 createHistos.C:223
 createHistos.C:224
 createHistos.C:225
 createHistos.C:226
 createHistos.C:227
 createHistos.C:228
 createHistos.C:229
 createHistos.C:230
 createHistos.C:231
 createHistos.C:232
 createHistos.C:233
 createHistos.C:234
 createHistos.C:235
 createHistos.C:236
 createHistos.C:237
 createHistos.C:238
 createHistos.C:239
 createHistos.C:240
 createHistos.C:241
 createHistos.C:242
 createHistos.C:243
 createHistos.C:244
 createHistos.C:245
 createHistos.C:246
 createHistos.C:247
 createHistos.C:248
 createHistos.C:249
 createHistos.C:250
 createHistos.C:251
 createHistos.C:252
 createHistos.C:253
 createHistos.C:254
 createHistos.C:255
 createHistos.C:256
 createHistos.C:257
 createHistos.C:258
 createHistos.C:259
 createHistos.C:260
 createHistos.C:261
 createHistos.C:262
 createHistos.C:263
 createHistos.C:264
 createHistos.C:265
 createHistos.C:266
 createHistos.C:267
 createHistos.C:268
 createHistos.C:269
 createHistos.C:270
 createHistos.C:271
 createHistos.C:272
 createHistos.C:273
 createHistos.C:274
 createHistos.C:275
 createHistos.C:276
 createHistos.C:277
 createHistos.C:278
 createHistos.C:279
 createHistos.C:280
 createHistos.C:281
 createHistos.C:282
 createHistos.C:283
 createHistos.C:284
 createHistos.C:285
 createHistos.C:286
 createHistos.C:287
 createHistos.C:288
 createHistos.C:289
 createHistos.C:290
 createHistos.C:291
 createHistos.C:292
 createHistos.C:293
 createHistos.C:294
 createHistos.C:295
 createHistos.C:296
 createHistos.C:297
 createHistos.C:298
 createHistos.C:299
 createHistos.C:300
 createHistos.C:301
 createHistos.C:302
 createHistos.C:303
 createHistos.C:304
 createHistos.C:305
 createHistos.C:306
 createHistos.C:307
 createHistos.C:308
 createHistos.C:309
 createHistos.C:310
 createHistos.C:311
 createHistos.C:312
 createHistos.C:313
 createHistos.C:314
 createHistos.C:315
 createHistos.C:316
 createHistos.C:317
 createHistos.C:318
 createHistos.C:319
 createHistos.C:320
 createHistos.C:321
 createHistos.C:322
 createHistos.C:323
 createHistos.C:324
 createHistos.C:325
 createHistos.C:326
 createHistos.C:327
 createHistos.C:328
 createHistos.C:329
 createHistos.C:330
 createHistos.C:331
 createHistos.C:332
 createHistos.C:333
 createHistos.C:334
 createHistos.C:335
 createHistos.C:336
 createHistos.C:337
 createHistos.C:338
 createHistos.C:339
 createHistos.C:340
 createHistos.C:341
 createHistos.C:342
 createHistos.C:343
 createHistos.C:344
 createHistos.C:345
 createHistos.C:346
 createHistos.C:347
 createHistos.C:348
 createHistos.C:349
 createHistos.C:350
 createHistos.C:351
 createHistos.C:352
 createHistos.C:353
 createHistos.C:354
 createHistos.C:355
 createHistos.C:356
 createHistos.C:357
 createHistos.C:358
 createHistos.C:359
 createHistos.C:360
 createHistos.C:361
 createHistos.C:362
 createHistos.C:363
 createHistos.C:364
 createHistos.C:365
 createHistos.C:366
 createHistos.C:367
 createHistos.C:368
 createHistos.C:369
 createHistos.C:370
 createHistos.C:371