void loopMPV( const char* fileName, const char* gr_title ) { std::cout << "fileName = " << fileName << "\n"; std::ifstream file; file.open(fileName); if ( !file.good() ) exit(12); TString stringName(fileName); TString globalName = ((TObjString*)stringName.Tokenize(".")->At(0))->GetString(); TString saveFileName; saveFileName.Form("%sSave.root",globalName.Data()); TString picName; picName.Form("%s.png",globalName.Data()); TString cName; cName.Form("%s.C",globalName.Data()); TMultiGraph * mg = new TMultiGraph("mg",gr_title); TFile *fSave = new TFile(saveFileName.Data(),"RECREATE"); fSave->cd(); std::string rootFileName; TGraphErrors *gr; int markerstyle, markercolor; while( 1 ) { file >> rootFileName >> markerstyle >> markercolor; if ( file.eof() ) break; std::cout << "\t" << rootFileName << "\n"; gr = readMPV( rootFileName.c_str() ); gr->SetMarkerStyle(markerstyle); gr->SetMarkerColor(markercolor); fSave->cd(); gr->Write(); mg->Add( gr ); } TCanvas* c1= new TCanvas("c1","",800,600); c1->cd(); c1->SetGrid(1,1); mg->Draw("AP"); mg->GetXaxis()->SetTitle("Bias [V]"); mg->GetYaxis()->SetTitle("MPV [ke]"); mg->GetXaxis()->SetRangeUser(0.,1000.); mg->GetYaxis()->SetRangeUser(0.,30.); TLegend* leg = c1->BuildLegend(.55,.66,.90,.85); leg->SetName("legend"); leg->SetFillColor(0); leg->SetBorderSize(0); leg->SetTextSize(.03); leg->Draw(); // gPad->Modified(); c1->Update(); c1->SaveAs(cName.Data()); c1->SaveAs(picName.Data()); mg->Write(); leg->Write(); fSave->Close(); } TGraphErrors* readMPV( const char* rootFileName ) { // gROOT->Reset(); gROOT->SetStyle("Plain"); TString stringName(rootFileName); TString globalName = ((TObjString*)stringName.Tokenize(".")->At(0))->GetString(); int maxFiles = 100; TFile *f = new TFile(rootFileName,"READ"); f->cd(); float v; float mpv; float mpverror; int fl; int cs; const char* detName, *period; int angle; TString *tst_period; TString *tst_name; TString *tst_fluence; TString *tst_angle; TIter next(f->GetListOfKeys()); TKey *key; while ((key=(TKey*)next())) { const char* name = key->GetName(); const char* className = key->GetClassName(); if ( strcmp( className, "TString" ) == 0 ) { if ( strcmp( name, "period" ) == 0 ) { tst_period = (TString*)f->Get("period"); } if ( strcmp( name, "name" ) == 0 ) { tst_name = (TString*)f->Get("name"); } if ( strcmp( name, "fluence" ) == 0 ) { tst_fluence = (TString*)f->Get("fluence"); } if ( strcmp( name, "angle" ) == 0 ) { tst_angle = (TString*)f->Get("angle"); } } } fl = tst_fluence->Atoi(); detName = tst_name->Data(); angle = tst_angle->Atoi(); period = tst_period->Data(); std::cout << "name\tperiod\tfluence\tangle\n"; std::cout << detName<<"\t"<Get(treeFileName.Data()); TString title; title.Form("%s_%s, #phi = %d^{#circ}",detName,period,angle); t->SetBranchAddress("mpv",&mpv); t->SetBranchAddress("mpverror",&mpverror); t->SetBranchAddress("v",&v); Int_t nentries = (Int_t)t->GetEntries(); float* Volt = new float[maxFiles]; float* MPV = new float[maxFiles]; float* MPVerr = new float[maxFiles]; int n = 0; for (Int_t i=0;iGetEntry(i); Volt[n] = v; MPV[n] = mpv; MPVerr[n] = sqrt((mpv*0.05)*(mpv*0.05)+(0.4)*(0.4)); n++; } f->Close(); TGraphErrors * gr = new TGraphErrors( n, Volt, MPV, 0, MPVerr ); gr->SetName(treeFileName.Data()); gr->SetTitle(title.Data()); gr->SetMarkerStyle(21); gr->SetMarkerColor(kRed); gr->SetDrawOption("AP"); gr->SetFillStyle(0); f->Close(); gROOT->cd(); return gr; }