make_binned_and_fitted_to_root.C

#include "TFile.h"
#include "TGraphErrors.h"
#include "TCanvas.h"
#include "TAxis.h"
//g++ `root-config --libs --cflags --ldflags` make_graph.C -o make_graph
//.x ./make_binned_and_fitted_to_root.C("binned_and_fitted_channel_signal_1_channel_trigger_2_pulse_length_3.csv", "graphs.root", "title", "x_name", "y_name")
#include "Riostream.h"
using namespace std;

void make_binned_and_fitted_to_root(TString csv_file, TString root_file, TString Graph_Name="", TString x_name="", TString y_name=""){
	ifstream in;
	in.open(csv_file);
	TFile *f = new TFile(root_file, "UPDATE");
	TGraphErrors *g1 = new TGraphErrors();
	TCanvas *c1 = new TCanvas(Graph_Name);
	Double_t dac, A, mu, sigma;
	Int_t point = 0;

	while(1){
		in>>dac>>A>>mu>>sigma;
		point++;
		if (!in.good()){
			break;
		}
		g1->Set(point);
		g1->SetPoint(point, dac, mu);
		g1->SetPointError(point, 50, sigma);
	}
	c1->cd();
	g1->SetTitle(Graph_Name);
	g1->GetXaxis()->SetTitle(x_name);
	g1->GetYaxis()->SetTitle(y_name);
	g1->Draw("ap");
	f->cd();
	c1->Write();
	f->Close();
	delete f;
	delete c1;
	delete g1;
}

int main(int argc, char **argv){
	switch(argc){
		case 3:
			make_binned_and_fitted_to_root(argv[1], argv[2]);
			break;
		case 4: 
			make_binned_and_fitted_to_root(argv[1], argv[2], argv[3]);
			break;
		case 5:
			make_binned_and_fitted_to_root(argv[1], argv[2], argv[3],argv[4]);
			break;
		case 6:
			make_binned_and_fitted_to_root(argv[1], argv[2], argv[3],argv[4],argv[5]);
			break;
		default:
			return 1;
	}
	return 0;
}

make_graph.C

#include "TFile.h"
#include "TGraph.h"
#include "TCanvas.h"
#include "TAxis.h"
//g++ `root-config --libs --cflags --ldflags` make_graph.C -o make_graph
#include "Riostream.h"
using namespace std;

void make_graph(TString csv_file, TString root_file, TString Graph_Name="", TString x_name="", TString y_name=""){
	ifstream in;
	in.open(csv_file);
	TFile *f = new TFile(root_file, "UPDATE");
	TGraph *g1 = new TGraph();
	TCanvas *c1 = new TCanvas(Graph_Name);
	Double_t x, y;
	Int_t point = 0;
	
	while(1){
		in>>x>>y;
		point++;
		if (!in.good()){
			break;
		}
		g1->Set(point);
		g1->SetPoint(point, x, y);
	}
	c1->cd();
	g1->SetTitle(Graph_Name);
	g1->GetXaxis()->SetTitle(x_name);
	g1->GetYaxis()->SetTitle(y_name);
	g1->Draw("ap");
	f->cd();
	c1->Write();
	f->Close();
}

int main(int argc, char **argv){
	switch(argc){
		case 3:
			make_graph(argv[1], argv[2]);
			break;
		case 4: 
			make_graph(argv[1], argv[2], argv[3]);
			break;
		case 5:
			make_graph(argv[1], argv[2], argv[3],argv[4]);
			break;
		case 6:
			make_graph(argv[1], argv[2], argv[3],argv[4],argv[5]);
			break;
		default:
			return 1;
	}
	return 0;
}