#include "TFile.h" #include "TCanvas.h" #include "TStyle.h" #include "TH1.h" #include "TH2.h" #include "TH3.h" #include "TGaxis.h" #include "TRandom.h" #include "TLegend.h" #include "TPaveStats.h" #include "TGraph.h" void calo() { float n=3; int a=8; int b=9; int c_YTitleSize=25; int c_YTitleFont=43; int c_YTitleOffset=1.55; int c_YLabelFont=43; int c_YLabelSize=20; int c_XTitleSize=25; int c_XTitleFont=43; int c_XTitleOffset=1; int c_XLabelFont=43; int c_XLabelSize=20; int c2_YTitleSize=25; int c2_YTitleFont=43; int c2_YTitleOffset=1.55; int c2_YLabelFont=43; int c2_YLabelSize=20; int c2_XTitleSize=25; int c2_XTitleFont=43; int c2_XTitleOffset=1; int c2_XLabelFont=43; int c2_XLabelSize=20; float p0; float p1; float p2; char myfilein[200]= "D:/si-500330.root"; char myplottimeout[200]="D:/si-500330_time.pdf"; char myploteneout[200]="D:/si-500330_ene.pdf"; char mydatavalueouta[200]="D:/si-500330_CaloEnDep8.txt"; char mydatavalueoutb[200]="D:/si-500330_CaloEnDep9.txt"; char mydatavalueoutab[200]="D:/si-500330_CaloEnDep8-9.txt"; char myfitresults[200]="D:/si-500330_fit.txt"; char canvtitle[200]= "si-500330"; char cdname[200]= "si-500330: Time_{scint}_{8}-Time_{scint}_{9}"; char cdnamea[200]= "si-500330: Energy_{Scintillator}_{8}"; char cdnameb[200]= "si-500330: Energy_{Scintillator}_{9}"; char fobject[200]= "lemma"; char cdXname[200]= "#DeltaTime (unit)"; char cdYname[200]= "# Counts"; char cdXnameab[200]= "Energy (unit)"; char cdYnameab[200]= "# Counts"; TFile *f = TFile::Open(myfilein); f->ls (); TGaxis::SetMaxDigits(n); if (f == 0) { printf("Error: cannot open the file!\n"); return; } TTree *t=0; f->GetObject(fobject,t); TCanvas *c = new TCanvas("c",canvtitle,1280,1024); gStyle->SetOptFit(); t->SetLineColor(kBlue); t->Draw(Form("Calo_Time[%d]-Calo_Time[%d]",a,b)); t->GetHistogram()->SetTitle(cdname); lemma->SetScanField(0); ((TTreePlayer*)(t->GetPlayer()))->SetScanRedirect(true); ((TTreePlayer*)(t->GetPlayer()))->SetScanFileName(mydatavalueouta); t->Scan(Form("Calo_Time[%d]",a)); ((TTreePlayer*)(t->GetPlayer()))->SetScanRedirect(true); ((TTreePlayer*)(t->GetPlayer()))->SetScanFileName(mydatavalueoutb); t->Scan(Form("Calo_Time[%d]",b)); ((TTreePlayer*)(t->GetPlayer()))->SetScanRedirect(true); ((TTreePlayer*)(t->GetPlayer()))->SetScanFileName(mydatavalueoutab); t->Scan(Form("Calo_Time[%d]-Calo_Time[%d]",a,b)); TH1F *htemp = (TH1F*)gPad->GetPrimitive("htemp"); htemp->Fit("gaus"); p0 = gaus->GetParameter(0); p1 = gaus->GetParameter(1); p2 = gaus->GetParameter(2); htemp->GetXaxis()->SetTitle(cdXname); htemp->GetYaxis()->SetTitle(cdYname); htemp->GetYaxis()->SetTitleSize(c_YTitleSize); htemp->GetYaxis()->SetTitleFont(c_YTitleFont); htemp->GetYaxis()->SetTitleOffset(c_YTitleOffset); htemp->GetYaxis()->SetLabelFont(c_YLabelFont); htemp->GetYaxis()->SetLabelSize(c_YLabelSize); htemp->GetXaxis()->SetTitleSize(c_XTitleSize); htemp->GetXaxis()->SetTitleFont(c_XTitleFont); htemp->GetXaxis()->SetTitleOffset(c_XTitleOffset); htemp->GetXaxis()->SetLabelFont(c_XLabelFont); htemp->GetXaxis()->SetLabelSize(c_XLabelSize); htemp->Draw(); c->Update(); TLegend* leg = new TLegend(0.15, 0.7, .25, .75); leg->SetNColumns(1); leg->AddEntry(htemp, "Data", "l"); leg->AddEntry(gaus, "Fit", "l"); leg->Draw(); c->Update(); TPaveStats *statsg = (TPaveStats*)htemp->GetListOfFunctions()->FindObject("stats"); statsg->SetTextColor(kBlue); statsg->SetX1NDC(0.80); statsg->SetX2NDC(0.98); statsg->SetY1NDC(0.77); statsg->SetY2NDC(0.92); gPad->Update(); c->Print(myplottimeout); delete c; TCanvas *c2 = new TCanvas("c2",canvtitle,1280,1024); c2->Divide (2,1); c2->cd(1); t->SetLineColor(kBlue); if (Form("Calo_Time[%d]-Calo_Time[%d]",a,b))> (p1-3*p2) && (Form("Calo_Time[%d]-Calo_Time[%d]",a,b)) < (p1+3*p2) { t->Draw (Form("Calo_Time[%d]",a)); } t->GetHistogram()->SetTitle(cdnamea); TH1F *htempa = (TH1F*)gPad->GetPrimitive("htemp"); htempa->GetXaxis()->SetTitle(cdXnameab); htempa->GetYaxis()->SetTitle(cdYnameab); htempa->GetYaxis()->SetTitleSize(c2_YTitleSize); htempa->GetYaxis()->SetTitleFont(c2_YTitleFont); htempa->GetYaxis()->SetTitleOffset(c2_YTitleOffset); htempa->GetYaxis()->SetLabelFont(c2_YLabelFont); htempa->GetYaxis()->SetLabelSize(c2_YLabelSize); htempa->GetXaxis()->SetTitleSize(c2_XTitleSize); htempa->GetXaxis()->SetTitleFont(c2_XTitleFont); htempa->GetXaxis()->SetTitleOffset(c2_XTitleOffset); htempa->GetXaxis()->SetLabelFont(c2_XLabelFont); htempa->GetXaxis()->SetLabelSize(c2_XLabelSize); htempa->Draw(); TLegend* lega = new TLegend(0.15, 0.7, .25, .75); lega->SetNColumns(1); lega->AddEntry(htempa, "Data", "l"); lega->Draw(); gPad->Update(); c2->cd(2); t->SetLineColor(kBlue); if (Form("Calo_Time[%d]-Calo_Time[%d]",a,b)) > (p1-3*p2) && (Form("Calo_Time[%d]-Calo_Time[%d]",a,b)) < (p1+3*p2) { t->Draw (Form("Calo_Time[%d]",b)); } t->GetHistogram()->SetTitle(cdnameb); TH1F *htempb = (TH1F*)gPad->GetPrimitive("htemp"); htempb->GetXaxis()->SetTitle(cdXnameab); htempb->GetYaxis()->SetTitle(cdYnameab); htempb->GetYaxis()->SetTitleSize(c2_YTitleSize); htempb->GetYaxis()->SetTitleFont(c2_YTitleFont); htempb->GetYaxis()->SetTitleOffset(c2_YTitleOffset); htempb->GetYaxis()->SetLabelFont(c2_YLabelFont); htempb->GetYaxis()->SetLabelSize(c2_YLabelSize); htempb->GetXaxis()->SetTitleSize(c2_XTitleSize); htempb->GetXaxis()->SetTitleFont(c2_XTitleFont); htempb->GetXaxis()->SetTitleOffset(c2_XTitleOffset); htempb->GetXaxis()->SetLabelFont(c2_XLabelFont); htempb->GetXaxis()->SetLabelSize(c2_XLabelSize); htempb->Draw(); TLegend* legb = new TLegend(0.15, 0.7, .25, .75); legb->SetNColumns(1); legb->AddEntry(htempb, "Data", "l"); legb->Draw(); gPad->Update(); c2->Print(myploteneout); delete c2; gROOT->ProcessLine("gROOT->SetBatch(kFALSE)"); exit(); }