void annconvergencetest( TDirectory *lhdir ) { TCanvas* c = new TCanvas( "MLPConvergenceTest", "MLP Convergence Test", 150, 0, 600, 580*0.8 ); TH1* estimatorHistTrain = (TH1*)lhdir->Get( "estimatorHistTrain" ); TH1* estimatorHistTest = (TH1*)lhdir->Get( "estimatorHistTest" ); Double_t m1 = estimatorHistTrain->GetMaximum(); Double_t m2 = estimatorHistTest ->GetMaximum(); Double_t max = TMath::Max( m1, m2 ); m1 = estimatorHistTrain->GetMinimum(); m2 = estimatorHistTest ->GetMinimum(); Double_t min = TMath::Min( m1, m2 ); estimatorHistTrain->SetMaximum( max + 0.1*(max - min) ); estimatorHistTrain->SetMinimum( min - 0.1*(max - min) ); estimatorHistTrain->SetLineColor( 2 ); estimatorHistTrain->SetLineWidth( 2 ); estimatorHistTrain->SetTitle( TString("MLP Convergence Test") ); estimatorHistTest->SetLineColor( 4 ); estimatorHistTest->SetLineWidth( 2 ); estimatorHistTrain->GetXaxis()->SetTitle( "Epochs" ); estimatorHistTrain->GetYaxis()->SetTitle( "Estimator" ); estimatorHistTrain->GetXaxis()->SetTitleOffset( 1.20 ); estimatorHistTrain->GetYaxis()->SetTitleOffset( 1.65 ); estimatorHistTrain->Draw(); estimatorHistTest ->Draw("same"); // need a legend TLegend *legend= new TLegend( 1 - c->GetRightMargin() - 0.45, 1-c->GetTopMargin() - 0.20, 1 - c->GetRightMargin() - 0.05, 1-c->GetTopMargin() - 0.05 ); legend->AddEntry(estimatorHistTrain,"Training Sample","l"); legend->AddEntry(estimatorHistTest,"Test sample","l"); legend->Draw("same"); legend->SetMargin( 0.3 ); c->cd(); TMVAGlob::plot_logo(); // don't understand why this doesn't work ... :-( c->Update(); TString fname = "plots/annconvergencetest"; TMVAGlob::imgconv( c, fname ); }
//_________________________________________________________________________________________________ void FillCollection(AliMergeableCollection& hc, time_t runStart, time_t runEnd, int timeResolution) { TIter next(AliMpDDLStore::Instance()->CreateBusPatchIterator()); AliMpBusPatch* bp; Double_t xmin = runStart*1.0; Double_t xmax = runEnd*1.0; int nbins = TMath::Nint((runEnd-runStart)/timeResolution); // basis for all plot = per buspatch while ( ( bp = static_cast<AliMpBusPatch*>(next())) ) { TH1* h = new TH1F(Form("BP%04d",bp->GetId()),Form("Number of hits in %d s bins",timeResolution),nbins,xmin,xmax); h->GetXaxis()->SetTimeDisplay(1); h->GetXaxis()->SetTimeFormat("%H:%M"); hc.Adopt(Form("/BUSPATCH/HITS/%ds",timeResolution),h); } nbins = TMath::Nint((runEnd-runStart)/timeResolution); // number of events needed for normalization TH1* h = new TH1F(Form("Nevents%ds",timeResolution),Form("Number of events %d s bins",timeResolution),nbins,xmin,xmax); h->GetXaxis()->SetTimeDisplay(1); h->GetXaxis()->SetTimeFormat("%H:%M"); hc.Adopt("",h); }
// show the histogram in first slot, try a Gaussian fit with given parameters void PRadHistCanvas::UpdateHist(int index, TObject *tob, int range_min, int range_max) { --index; if(index < 0 || index >= canvases.size()) return; canvases[index]->cd(); canvases[index]->SetGrid(); gPad->SetLogy(); TH1 *hist = (TH1*)tob; hist->GetXaxis()->SetRangeUser(hist->FindFirstBinAbove(0,1) - 10, hist->FindLastBinAbove(0,1) + 10); hist->GetXaxis()->SetLabelSize(HIST_LABEL_SIZE); hist->GetYaxis()->SetLabelSize(HIST_LABEL_SIZE); // try to fit gaussian in certain range if(range_max > range_min && hist->Integral(range_min, range_max + 1) > 0) { TF1 *fit = new TF1("", "gaus", range_min, range_max); fit->SetLineColor(kRed); fit->SetLineWidth(2); hist->Fit(fit,"qlR"); } hist->SetFillColor(fillColors[index]); hist->Draw(); canvases[index]->Refresh(); }
void getPlotData() { TH1 * h = (TH1*) m_file->Get(m_direc.c_str()); for (int i=0; i<h->GetXaxis()->GetNbins(); i++) { m_xs.push_back(h->GetXaxis()->GetBinCenter(i)); m_ys.push_back(h->GetBinContent(i)); } m_plot->m_xAxisTitle = std::string(h->GetXaxis()->GetTitle()); m_plot->m_yAxisTitle = std::string(h->GetYaxis()->GetTitle()); m_plot->m_title = std::string(h->GetTitle()); std::stringstream ssN, ssMu, ssSig, ssUF, ssOF; ssN << std::setprecision(4) << h->GetEntries(); ssMu << std::setprecision(4) << h->GetMean(); ssSig << std::setprecision(4) << h->GetRMS(); ssUF << std::setprecision(4) << h->GetBinContent(0); ssOF << std::setprecision(4) << h->GetBinContent(h->GetNbinsX() + 1); m_statsTitles.push_back("N:"); m_statsTitles.push_back("mu:"); m_statsTitles.push_back("sig:"); m_statsTitles.push_back("UF:"); m_statsTitles.push_back("OF:"); m_statsValues.push_back(ssN.str()); m_statsValues.push_back(ssMu.str()); m_statsValues.push_back(ssSig.str()); m_statsValues.push_back(ssUF.str()); m_statsValues.push_back(ssOF.str()); }
void SetTitle(TH1& h, TString Xtitle, TString Ytitle, TString title){ h.GetXaxis()->SetTitle(Xtitle); h.GetYaxis()->SetTitle(Ytitle); h.GetXaxis()->CenterTitle(); h.GetYaxis()->CenterTitle(); h.SetTitle(title); }
// ----------------------------------------------------------------------------- // TH1* getHisto( TString path, TString nameHist, TString nameFile, TString Dirname, int rebin ) { TString name = path + nameFile; TFile* file = new TFile(name); // file->ls(); TDirectory* dir = (TDirectory*)file->Get(Dirname); // dir->ls(); if( !dir) { std::cout << " dir " << Dirname << std::endl; } TH1* hist = (TH1*)dir->Get(nameHist); if (!hist) { std::cout << " name: " << nameHist << " file: " << nameFile << " dir: " << Dirname << std::endl; abort(); } hist->SetLineWidth(1); if ( rebin > 0 ) { hist->Rebin(rebin); } hist->GetXaxis()->SetTitleSize(0.055); hist->GetYaxis()->SetTitleSize(0.055); hist->GetXaxis()->SetLabelSize(0.05); hist->GetYaxis()->SetLabelSize(0.05); hist->SetStats(kFALSE); return hist; }
// ----------------------------------------------------------------------------- // TH1* getHisto( std::string nameFile, std::string nameHist, std::string Dirname, int rebin ) { std::string name = nameFile; TFile* file = new TFile(name.c_str()); if (file) { std::cout << "Opened file: " << file->GetName() << std::endl; } else { std::cout << "Could not find file: " << name << std::endl; return 0; } TDirectory* dir = (TDirectory*)file->Get(Dirname.c_str()); if (dir) { std::cout << "Opened dir: " << dir->GetName() << std::endl; } else { std::cout << "Could not find dir: " << Dirname << std::endl; return 0; } int low = 375; TH1* hist = 0; if ( false || nameHist.find("HtMultiplicity_HT375") == std::string::npos ) { hist = (TH1*)dir->Get(nameHist.c_str()); } else { for ( uint ii = low; ii <= 975; ii+=100 ) { std::stringstream tmp; tmp << "HtMultiplicity_HT" << ii << nameHist.substr(20); if ( !hist ) { dir->cd(); TH1D* temp = (TH1D*)dir->Get( "HtMultiplicity_HT375_aT0" ); //TH1D* temp = (TH1D*)file->Get( tmp.str().c_str() ); if (temp) { hist = (TH1D*)temp->Clone(); } else { std::cout << "1 Unable to retrieve histo with name " << tmp.str() << std::endl; } } else { dir->cd(); TH1D* temp = (TH1D*)dir->Get( tmp.str().c_str() ); if (temp) { hist->Add( (TH1D*)temp ); } else { std::cout << "2 Unable to retrieve histo with name " << tmp.str() << std::endl; } } } } if (hist) { std::cout << "Opened histo: " << hist->GetName() << std::endl; } else { std::cout << "Could not find histo: " << nameHist << std::endl; return 0; } hist->SetLineWidth(3); if ( rebin > 0 ) { hist->Rebin(rebin); } hist->GetXaxis()->SetTitleSize(0.055); hist->GetYaxis()->SetTitleSize(0.055); hist->GetXaxis()->SetLabelSize(0.05); hist->GetYaxis()->SetLabelSize(0.05); hist->SetStats(kFALSE); return hist; }
//____________________________________________________________________ void Run(const char* newName, const char* oldName, const char* newTitle="New", const char* oldTitle="Old") { TFile* newFile = TFile::Open(newName,"READ"); TFile* oldFile = TFile::Open(oldName,"READ"); if (!newFile || !oldFile) return; TH1* newCent = GetH1(newFile, "realCent"); TH1* oldCent = GetH1(oldFile, "realCent"); if (!newCent || !oldCent) return; TString t; t.Form("#it{R}=#frac{%s}{%s}", newTitle, oldTitle); TCanvas* c = new TCanvas("c", t, 1200, 800); c->SetTopMargin(0.01); c->SetRightMargin(0.20); fLegend = new TLegend(1-c->GetRightMargin(), c->GetBottomMargin(), 1, 1-c->GetTopMargin(), t); fLegend->SetFillStyle(0); fLegend->SetBorderSize(0); THStack* stack = new THStack("ratios",""); fMin = +1e6; fMax = -1e6; TH1* one = 0; for (Int_t i = newCent->GetNbinsX(); i--;) { Double_t c1 = newCent->GetXaxis()->GetBinLowEdge(i+1); Double_t c2 = newCent->GetXaxis()->GetBinUpEdge(i+1); Info("", "c1=%f c2=%f", c1, c2); TH1* r = One(newFile, oldFile, c1, c2); if (!r) continue; if (!one) { one = static_cast<TH1*>(r->Clone("one")); one->SetDirectory(0); one->Reset(); for (Int_t j = 1; j <= one->GetNbinsX(); j++) { one->SetBinContent(j,1); one->SetBinError (j,0); } } // r->Add(one, i-1); // r->Scale(TMath::Power(10,i)); stack->Add(r); } stack->Draw("nostack"); stack->SetMinimum(0.95*fMin); stack->SetMaximum(1.05*fMax); stack->GetHistogram()->SetXTitle("#eta"); stack->GetHistogram()->SetYTitle("#it{R}"); fLegend->Draw(); c->Modified(); c->Update(); c->cd(); c->SaveAs(Form("%sover%s.png", newTitle, oldTitle)); }
void scaleToBinWidth(TH1 &h1){ double nBins = h1.GetXaxis()->GetNbins(); for (int iBin = h1.GetXaxis()->GetFirst(); iBin <= h1.GetXaxis()->GetLast(); iBin++){ double iW = h1.GetBinWidth(iBin); double old = h1.GetBinContent(iBin); h1.SetBinContent(iBin,old/iW); } }
void plotter::draw_output_stat(TH1* output_, TH1* stat_, TH1D* truth_, bool norm, TString file_name){ // std::vector<double> sys = get_sys_errors(); // TH1* output_sys = add_error_bar(output, sys); TH1* output = (TH1*) output_->Clone("output"); TH1* stat = (TH1*) stat_->Clone("stat"); TH1D* truth = (TH1D*) truth_->Clone("truth"); TCanvas *c = new TCanvas("c","",600,600); double ymax; gPad->SetLeftMargin(0.15); if(truth->GetMaximum() > output->GetMaximum()) ymax = 1.5 * truth->GetMaximum(); else ymax = 1.5 * output->GetMaximum(); TGaxis::SetMaxDigits(3); output->SetTitle(" "); output->GetYaxis()->SetRangeUser(0., ymax); output->GetXaxis()->SetTitle("Leading-jet mass [GeV]"); if(norm) output->GetYaxis()->SetTitle("#frac{1}{#sigma} #frac{d#sigma}{dm_{jet}} [#frac{1}{GeV}]"); else output->GetYaxis()->SetTitle("events"); output->GetYaxis()->SetTitleOffset(1.1); output->GetXaxis()->SetTitleOffset(0.9); output->GetYaxis()->SetTitleSize(0.05); output->GetXaxis()->SetTitleSize(0.05); output->GetYaxis()->SetNdivisions(505); output->SetLineColor(kBlack); output->SetMarkerColor(kBlack); output->SetMarkerStyle(8); output->SetMarkerSize(1); output->Draw("E1"); stat->SetLineColor(kBlack); stat->SetMarkerColor(kBlack); stat->SetMarkerStyle(8); stat->SetMarkerSize(1); gStyle->SetEndErrorSize(5); truth->SetLineWidth(3); truth->SetLineColor(kRed); truth->SetLineStyle(2); truth->Draw("HIST SAME"); stat->Draw("E1 SAME"); output->Draw("E1 SAME"); TLegend *l=new TLegend(0.5,0.65,0.85,0.85); l->SetBorderSize(0); l->SetFillStyle(0); l->AddEntry(output,"data unfolded","pl"); l->AddEntry(truth,"MC particle level","pl"); l->SetTextSize(0.04); l->Draw(); c->SaveAs(directory + file_name + ".pdf"); delete c; }
Bool_t KVCanvas::ExpandFunctionRange() { Bool_t up = kFALSE; TH1* hh = FindHisto(); if (!hh) return up; TObject* obj = 0; TIter it(hh->GetListOfFunctions()); while ((obj = it())) { ((TF1*)obj)->SetRange(hh->GetXaxis()->GetXmin(), hh->GetXaxis()->GetXmax()); up = kTRUE; } return up; }
void SetStyle(TH1& h, double size, int color, int style, int fillstyle=0, int linestyle=1){ h.SetMarkerSize(size); h.SetMarkerColor(color); h.SetLineColor(color); h.SetMarkerStyle(style); h.SetFillStyle(fillstyle); h.SetLineStyle(linestyle); h.GetXaxis()->SetTitleFont(42); h.GetYaxis()->SetTitleFont(42); h.GetXaxis()->SetTitleSize(0.048); h.GetYaxis()->SetTitleSize(0.048); h.GetXaxis()->CenterTitle(); h.GetYaxis()->CenterTitle(); }
// echo object at mouse position void exec1() { //example of macro called when a pad is redrawn //one must create a TExec object in the following way // TExec ex("ex",".x exec1.C"); // ex.Draw(); // this macro prints the bin number and the bin content when one clicks //on the histogram contour of any histogram in a pad //Author: Rene Brun if (!gPad) { Error("exec1", "gPad is null, you are not supposed to run this macro"); return; } int event = gPad->GetEvent(); if (event != 11) return; int px = gPad->GetEventX(); TObject *select = gPad->GetSelected(); if (!select) return; if (select->InheritsFrom(TH1::Class())) { TH1 *h = (TH1*)select; Float_t xx = gPad->AbsPixeltoX(px); Float_t x = gPad->PadtoX(xx); Int_t binx = h->GetXaxis()->FindBin(x); printf("event=%d, hist:%s, bin=%d, content=%f\n",event,h->GetName(),binx,h->GetBinContent(binx)); } }
histoBook* histoBook::set( string param, string p1, string p2, string p3, string p4 ){ // force the param name to lowercase transform(param.begin(), param.end(), param.begin(), ::tolower); TH1* h = get( styling ); if ( h ){ if ( "title" == param ){ h->SetTitle( p1.c_str() ); } else if ( "x" == param ){ h->GetXaxis()->SetTitle( p1.c_str() ); } else if ( "y" == param ){ h->GetYaxis()->SetTitle( p1.c_str() ); } else if ( "legend" == param ){ if ( p2 == "") p2="lpf"; legend->AddEntry( h, p1.c_str(), p2.c_str() ); legend->Draw(); } else if ( "draw" == param ){ drawOption = p1; } } return this; }
//________________________________________________________________ void KVCanvas::DynamicZoomTH1(Int_t Sign, Int_t px, Int_t) { // Zoom in or out of histogram with mouse wheel if (!fSelected) return; TH1* TheHisto = (TH1*) FindHisto();//fSelected; Double_t percent = 0.15 - Sign * 0.05; Int_t dX = 0; px = AbsPixeltoX(px); TAxis* ax = TheHisto->GetXaxis(); Int_t NbinsXtmp = ax->GetNbins(); Int_t X0tmp = ax->GetFirst(); Int_t X1tmp = ax->GetLast(); Int_t step = TMath::Min(TMath::Max(1, (Int_t)(percent * (X1tmp - X0tmp))), NbinsXtmp / 2); step *= Sign; X0tmp = TMath::Min(TMath::Max(X0tmp + step, 1), X1tmp - step); X1tmp = TMath::Max(TMath::Min(X1tmp - step, NbinsXtmp), X0tmp); if (X0tmp >= X1tmp) X0tmp = X1tmp - 1; if (Sign > 0) dX = (Int_t)(X0tmp + (X1tmp - X0tmp) * 0.5 - ax->FindBin(px)); if ((X0tmp - dX) < 0) ax->SetRange(0, X1tmp - X0tmp); else if ((X1tmp - dX) > ax->GetNbins()) ax->SetRange(ax->GetNbins() - (X1tmp - X0tmp), ax->GetNbins()); else ax->SetRange(X0tmp - dX, X1tmp - dX); Modified(); Update(); return; }
void fadc_fit_heights(std::string fadc_id,std::string hist_type) { /*****************************************************************/ // Prepare the canvas gStyle->SetOptFit(1111); TCanvas *AlCapCanvas = (TCanvas *) gROOT->GetListOfCanvases()->At(0); AlCapCanvas->Clear(); AlCapCanvas->Divide(4,2); // gROOT->ProcessLine(".L common/get_histogram.C"); // get_histogram() is called here /*****************************************************************/ const int n_channels = 8; std::string bank_names[n_channels] = {"Na", "Nb", "Nc", "Nd", "Ne", "Nf", "Ng", "Nh"}; std::string name; double mean = 0; double rms = 0; for (int iChn = 0; iChn < n_channels; iChn++) { name=bank_names[iChn]+fadc_id; TH1* hist = get_histogram(name, hist_type); mean = hist->GetMean(); rms = hist->GetRMS(); AlCapCanvas->cd(iChn+1); if (hist->Integral()!=0) { TF1* gaus = new TF1("gaus","gaus",mean-rms,mean+rms); hist->Fit("gaus","Q"); hist->GetXaxis()->SetRange(mean-2*rms,mean+2*rms); hist->Draw(); } } }
int main (int argc, char *argv[]) { LineStream ls; char *line; char *pos; Stringa buffer; if (argc != 2) { usage ("%s <file.intraOffsets>"); } TH1 *his = new TH1D ("","Intra-read distribution",1000,0,1000); TCanvas *canv = new TCanvas("","canvas",1200,400); ls = ls_createFromFile (argv[1]); while (line = ls_nextLine (ls)) { his->Fill (atoi (line)); } ls_destroy (ls); his->Draw(); his->GetXaxis()->SetLabelSize (0.04); his->GetYaxis()->SetLabelSize (0.04); buffer = stringCreate (100); pos = strchr (argv[1],'.'); if (pos == NULL) { die ("Expected <file.intraOffsets>: %s",argv[1]); } *pos = '\0'; stringPrintf (buffer,"%s_intraDistribution.jpg",argv[1]); canv->Print (string (buffer),"jpg"); stringDestroy (buffer); return 0; }
TCanvas* DrawNP(int np, TObjArray* harr, TCanvas* cnv) { if (!harr) harr = &histoArr; if (!cnv) cnv = new TCanvas(Form("cnv%d",np),Form("cnv%d",np),900,700); cnv->Clear(); cnv->Divide(2,1); cnv->cd(1); // TH1* dxodd = (TH1*)harr->At(np*10+kDTXodd); TH1* dxevn = (TH1*)harr->At(np*10+kDTXeven); TH1* dxoddS =(TH1*)harr->At(np*10+kDTXoddSPL); TH1* dxevnS =(TH1*)harr->At(np*10+kDTXevenSPL); double max = TMath::Max(dxodd->GetMaximum(),dxevn->GetMaximum()); dxodd->SetMaximum(1.1*max); dxodd->GetXaxis()->SetTitle("#DeltaX, #mum"); dxodd->SetTitle(Form("#DeltaX for clSize=%d",np)); dxodd->Fit("gaus","",""); dxevn->Fit("gaus","","sames"); // dxoddS->Draw("sames"); dxevnS->Draw("sames"); // gPad->Modified(); gPad->Update(); SetStPadPos(dxodd,0.75,0.97,0.8,1., -1,dxodd->GetLineColor()); SetStPadPos(dxevn,0.75,0.97,0.6,0.8, -1,dxevn->GetLineColor()); SetStPadPos(dxoddS,0.75,0.97,0.4,0.6, -1,dxoddS->GetLineColor()); SetStPadPos(dxevnS,0.75,0.97,0.2,0.4, -1,dxevnS->GetLineColor()); // cnv->cd(2); TH1* dz = (TH1*)harr->At(np*10+kDTZ); dz->SetTitle(Form("#DeltaZ for clSize=%d",np)); dz->GetXaxis()->SetTitle("#DeltaZ, #mum"); dz->Fit("gaus"); TH1* dzS = (TH1*)harr->At(np*10+kDTZSPL); dz->Draw("sames"); gPad->Modified(); gPad->Update(); SetStPadPos(dz,0.75,0.97,0.8,1., -1, dz->GetLineColor()); SetStPadPos(dzS,0.75,0.97,0.5,0.7, -1, dzS->GetLineColor()); gPad->Modified(); gPad->Update(); // cnv->cd(); return cnv; }
void MakeNsignalEff_pt15(){ setTDRStyle(); gStyle->SetPalette(1); TH1* medium = makehist("PreSelection_medium_pt15"); TH1* tight = makehist("PreSelection_tight_pt15"); TH1* tight_dxy10= makehist("PreSelection_iso_10_10_pt15"); TH1* tight_anal = makehist("PreSelection_pt15"); TLegend* legendH = new TLegend(0.6, 0.7, 0.9, 0.9); legendH->SetFillColor(kWhite); legendH->SetTextSize(0.03); medium->GetXaxis()->SetTitle("m_{N} GeV"); medium->GetYaxis()->SetTitle("ID efficiency"); medium->SetMarkerColor(kRed); tight->SetMarkerColor(kRed); tight_dxy10->SetMarkerColor(kRed); tight_anal->SetMarkerColor(kRed); medium->SetMarkerStyle(20.); tight->SetMarkerStyle(21.); tight_dxy10->SetMarkerStyle(22.); tight_anal->SetMarkerStyle(23.); legendH->AddEntry(medium, "medium ID", "p"); legendH->AddEntry(tight, "tight ID", "p"); legendH->AddEntry(tight_dxy10, "tight+ dxy ", "p"); legendH->AddEntry(tight_anal, "tight+ dxy+ iso ", "p"); medium->Draw("p"); tight->Draw("psame"); tight_dxy10->Draw("psame"); tight_anal->Draw("psame"); legendH->Draw(); TGraphAsymmErrors * g = new TGraphAsymmErrors(heff); g->SetLineWidth(2.0); g->SetMarkerSize(2.); // g->Draw( "9pXsame" ); CMS_lumi( c1, 2, 11 ); c1->Update(); c1->RedrawAxis(); c1->SaveAs(("/home/jalmond/WebPlots/PreApproval/SignalPlots/SignalEff_presel_med_tight_pt15.pdf" )); }
void showGraph(double canvasSizeX, double canvasSizeY, TGraph* graph, bool useLogScaleX, double xMin, double xMax, const std::string& xAxisTitle, double xAxisOffset, bool useLogScaleY, double yMin, double yMax, const std::string& yAxisTitle, double yAxisOffset, const std::string& outputFileName) { TCanvas* canvas = new TCanvas("canvas", "canvas", canvasSizeX, canvasSizeY); canvas->SetFillColor(10); canvas->SetBorderSize(2); canvas->SetTopMargin(0.05); canvas->SetLeftMargin(0.19); canvas->SetBottomMargin(0.19); canvas->SetRightMargin(0.05); canvas->SetLogx(useLogScaleX); canvas->SetLogy(useLogScaleY); TH1* dummyHistogram = new TH1D("dummyHistogram", "dummyHistogram", 10, xMin, xMax); dummyHistogram->SetTitle(""); dummyHistogram->SetStats(false); dummyHistogram->SetMinimum(yMin); dummyHistogram->SetMaximum(yMax); dummyHistogram->Draw("axis"); TAxis* xAxis = dummyHistogram->GetXaxis(); xAxis->SetTitle(xAxisTitle.data()); xAxis->SetTitleOffset(xAxisOffset); xAxis->SetTitleSize(0.065); xAxis->SetLabelSize(0.055); xAxis->SetLabelOffset(0.01); xAxis->SetTickLength(0.055); xAxis->SetNdivisions(505); TAxis* yAxis = dummyHistogram->GetYaxis(); yAxis->SetTitle(yAxisTitle.data()); yAxis->SetTitleOffset(yAxisOffset); yAxis->SetTitleSize(0.070); yAxis->SetLabelSize(0.055); yAxis->SetLabelOffset(0.01); yAxis->SetTickLength(0.055); yAxis->SetNdivisions(505); graph->SetMarkerColor(1); graph->SetLineColor(1); graph->Draw("p"); canvas->Update(); size_t idx = outputFileName.find_last_of('.'); std::string outputFileName_plot = std::string(outputFileName, 0, idx); if ( useLogScaleY ) outputFileName_plot.append("_log"); else outputFileName_plot.append("_linear"); if ( idx != std::string::npos ) canvas->Print(std::string(outputFileName_plot).append(std::string(outputFileName, idx)).data()); canvas->Print(std::string(outputFileName_plot).append(".png").data()); //canvas->Print(std::string(outputFileName_plot).append(".pdf").data()); //canvas->Print(std::string(outputFileName_plot).append(".root").data()); delete dummyHistogram; delete canvas; }
void DrawHijing50GeV() { TCanvas *c1 = new TCanvas(); TFile *fin = TFile::Open("Gamma_Neutron_Hijing_Energy_Graphs.root"); gROOT->cd(); TH1 *hjbkg = (TH1 *) fin->Get("hjbkg")->Clone(); TGraph *anti_neutron50GeV = (TGraph *) fin->Get("anti_neutron50GeV")->Clone(); TGraph *neutron50GeV = (TGraph *) fin->Get("neutron50GeV")->Clone(); hjbkg->SetStats(0); hjbkg->SetLineColor(6); hjbkg->SetMaximum(5.5); hjbkg->SetLineWidth(2); hjbkg->SetTitle("50 GeV Hadronic Showers with HIJING background"); hjbkg->GetYaxis()->SetTitle("Deposited Energey [GeV]"); hjbkg->GetYaxis()->SetTitleOffset(0.8); hjbkg->GetXaxis()->SetTitle("cone size (#sqrt{#Delta#Phi^{2}+#Delta#Theta^{2}})"); hjbkg->GetXaxis()->SetTitleOffset(1.2); hjbkg->Draw(); anti_neutron50GeV->SetLineColor(4); anti_neutron50GeV->SetLineWidth(2); anti_neutron50GeV->Draw("same"); neutron50GeV->SetLineColor(2); neutron50GeV->SetLineWidth(2); neutron50GeV->Draw("same"); TLine *tl = new TLine(); tl->SetLineStyle(2); tl->DrawLine(0.1,0,0.1,5.5); TLegend *legrda = new TLegend(0.67,0.54,0.87,0.74,NULL,"brNDC"); legrda->SetLineColor(1); legrda->SetLineStyle(1); legrda->SetLineWidth(1); legrda->SetFillColor(10); legrda->SetFillStyle(1001); legrda->SetBorderSize(0); // legrda->SetTextSize(labelsize); legrda->AddEntry(hjbkg,"HIJING bkg"); legrda->AddEntry(anti_neutron50GeV, "50 GeV Anti Neutron","l"); legrda->AddEntry(neutron50GeV, "50 GeV Neutron", "l"); legrda->AddEntry(tl, "HCal tower size","l"); legrda->Draw(); fin->Close(); c1->Print("Hijing50GeV.png"); }
void format1Dhisto(TH1& h1, double Ymax, double Ymin, double& col, double& fill, double& style, const char* titx, const char* tity ){ //void format1Dhisto(TH1& h1, string& xTitle, double Ymax, double Ymin){ //h1.SetTitle(";XXXX;XXXX"); if(Ymax!=-1 && Ymin!=-1) h1.GetYaxis()->SetRangeUser(Ymax, Ymin); //if(Ymax==-1 && Ymin!=-1) h1.GetYaxis()->SetMinimum(Ymin); h1.SetMarkerColor(col); h1.SetMarkerStyle(); h1.SetMarkerColor(); h1.SetLineColor(col); h1.SetFillColor(fill); h1.SetFillStyle(style); h1.GetXaxis()->SetTitle(titx); h1.GetYaxis()->SetTitle(tity); h1.GetXaxis()->CenterTitle(); h1.GetYaxis()->CenterTitle(); //cout<<"The title is : "<<tit<<endl; return; }
void writeFile(const char* inRootFile) { TFile inRoot(inRootFile); if(!inRoot.IsOpen()){ cout << "Cannot open " << inRootFile << endl; return; } TIterator* iterator = inRoot.GetListOfKeys()->MakeIterator(); TKey* key; TString outText = inRootFile; outText.Replace(0,outText.Last('/')+1,""); ofstream os(outText.Data()); char buf[500]; int count(0); while( (key=dynamic_cast<TKey*>(iterator->Next())) != 0){ cout << key->GetName() << endl; TH1* h = (TH1*)inRoot.Get(key->GetName()); if(h->GetDimension()!=1) continue; if(++count>1) break; int nBin = h->GetNbinsX(); os << "name: " << h->GetName() << endl << "title: " << h->GetTitle() << endl << "bins: " << h->GetNbinsX() << endl << "min: " << h->GetXaxis()->GetBinLowEdge(1) << ", max: " << h->GetXaxis()->GetBinUpEdge(h->GetNbinsX()) << endl; for(int i=1; i<=nBin; i++){ os << "bin: " << i << " value: " << (float)h->GetBinContent(i) << " error: " << (float)h->GetBinError(i) << endl; } } }
//#endif void DrawInPad(TVirtualPad* p, Int_t sub, TH1* h, Bool_t logy=false) { TVirtualPad* pp = p->cd(sub); pp->SetRightMargin(0.02); if (logy) pp->SetLogy(); TH1* copy = h->DrawCopy("hist"); copy->GetXaxis()->SetLabelSize(0.13); copy->GetYaxis()->SetLabelSize(0.08); copy->SetDirectory(0); }
drawGraph( TGraph* gr, const Char_t* ytitle = 0 ) { gr->Draw( "AP*" ); TH1* h = gr->GetHistogram( ); std::cout << gr->GetMean( ) << std::endl; gr->Fit( "pol0", "Q", "SAME" ); TF1* fit = gr->GetFunction( "pol0" ); Double_t chi2 = fit->GetChisquare( ); Double_t par0 = fit->GetParameter( 0 ); Double_t err = fit->GetParError( 0 ); TLatex* l = new TLatex; l->SetNDC( ); l->DrawLatex( 0.85, 0.80, Form( "#splitline{Entries = %i}{RMS = %2.3f}", gr->GetN(), gr->GetMean(2)) ); TLatex* l2 = new TLatex; l2->SetNDC( ); l2->DrawLatex( 0.85, 0.7, Form("#splitline{fit = %2.3f#pm%2.3f}{#chi^{2} = %2.3f}", par0, chi2, err) ); // TLegend* leg = new TLegend( 0.8, 0.9, 0.95, 0.95 ); // leg->SetFillColor( kWhite ); // leg->SetBorderSize( 0 ); // leg->AddEntry( "gr", "CPU+AFAR+MBED+ATWD+AMPS", "P" ); // leg->Draw( ); if( h != 0 ) { h->GetXaxis()->SetTimeFormat("%m/%d %H:%M"); h->GetXaxis()->SetNdivisions( 10, 10, 0 ); h->GetXaxis()->SetTimeDisplay( 1 ); h->GetXaxis()->SetTitle("Date / Time (UTC)"); h->GetXaxis()->SetLabelSize( 0.06 ); h->GetYaxis()->SetLabelSize(0.07); h->GetYaxis()->SetTitleSize(0.06); h->GetXaxis()->SetTitleSize(0.055); h->GetYaxis()->SetTitleOffset( 0.9 ); h->GetXaxis()->SetTitleOffset( 0.9 ); h->SetMarkerSize( 5 ); if( ytitle != 0 ) { h->GetYaxis()->SetTitle(ytitle); } } if( gPad != 0 ) { gPad->Update(); } }
/** * Steering * * @param input Input file */ void ExtractGSE(const char* input) { if (!gROOT->GetClass("GraphSysErr")) gROOT->LoadMacro("$HOME/GraphSysErr/GraphSysErr.C+g"); TString base = gSystem->BaseName(input); base.ReplaceAll(".root",""); TFile* file = TFile::Open(input, "READ"); if (!file) return; TH1* cent = GetH1(file, "realCent"); Bool_t first = true; TList* stack = new TList; for (Int_t i = 1; i <= cent->GetNbinsX(); i++) { Double_t c1 = cent->GetXaxis()->GetBinLowEdge(i); Double_t c2 = cent->GetXaxis()->GetBinUpEdge(i); TObject* g = MakeGSE(file, c1, c2); if (!g) continue; stack->Add(g); if (first) g->Draw("quad stat combine axis"); else g->Draw("quad stat combine"); first = false; } TString obase(base); obase.Prepend("GSE_"); std::ofstream out(Form("%s.input", obase.Data())); GraphSysErr::Export(stack, out, "HFC", 2); out << "*E" << std::endl; out.close(); TFile* rout = TFile::Open(Form("%s.root", obase.Data()), "RECREATE"); stack->Write("container", TObject::kSingleKey); rout->Write(); }
void plotter::draw_matrix(TH2* hist_, TString file_name, bool zlog, bool is_migration){ TH1* hist = (TH1*) hist_->Clone("hist"); TCanvas *c= new TCanvas("c","",600,600); gPad->SetRightMargin(0.15); gPad->SetLeftMargin(0.15); if(zlog) gPad->SetLogz(); hist->SetTitle(" "); hist->GetXaxis()->SetTitleOffset(1.1); hist->GetYaxis()->SetTitleOffset(1.5); if(is_migration){ hist->GetXaxis()->SetTitle("generator binning"); hist->GetYaxis()->SetTitle("detector binning"); } else{ hist->GetXaxis()->SetTitle("Leading-jet mass [GeV]"); hist->GetYaxis()->SetTitle("Leading-jet mass [GeV]"); } hist->Draw("COLZ"); hist->Draw("BOX SAME"); c->SaveAs(directory + file_name + ".pdf"); delete c; }
void plotter::draw_delta(TH1* hist_, TString file_name){ TH1* hist = (TH1*) hist_->Clone("hist"); TCanvas *c= new TCanvas("Particle Level","",600,600); gPad->SetLeftMargin(0.15); hist->SetTitle(file_name); hist->GetXaxis()->SetTitle("Leading-jet mass [GeV]"); hist->GetYaxis()->SetTitle("#Delta events"); hist->GetYaxis()->SetTitleOffset(1.5); hist->GetYaxis()->SetNdivisions(505); hist->SetFillColor(810); hist->SetLineColor(810); hist->Draw("HIST"); gPad->RedrawAxis(); c->SaveAs(directory + file_name + ".pdf"); delete c; }
void printStat(const char* fl) { printf("Stat for %s\n",fl); TFile* ff = TFile::Open(fl); TList* lst = (TList*)ff->Get("clist"); if (!lst) {printf("no clist\n");return;} TH1* hstat = (TH1*)lst->FindObject("stat"); if (!hstat) {printf("no hstat\n");return;} // TAxis* ax = hstat->GetXaxis(); for (int ib=1;ib<ax->GetNbins();ib++) { double val = hstat->GetBinContent(ib); if (val) printf("%-20s\t%9d\n",ax->GetBinLabel(ib),int(val)); } ff->Close(); delete ff; return; }
void exec1() { if (!gPad) { Error("exec1", "gPad is null, you are not supposed to run this macro"); return; } int event = gPad->GetEvent(); if (event != 11) return; int px = gPad->GetEventX(); TObject *select = gPad->GetSelected(); if (!select) return; if (select->InheritsFrom(TH1::Class())) { TH1 *h = (TH1*)select; Float_t xx = gPad->AbsPixeltoX(px); Float_t x = gPad->PadtoX(xx); Int_t binx = h->GetXaxis()->FindBin(x); printf("event=%d, hist:%s, bin=%d, content=%f\n",event,h->GetName(),binx,h->GetBinContent(binx)); } }