/sipmScan/examples/plot_tdc_C.lib |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: examples/mppc.cpp |
=================================================================== |
--- examples/mppc.cpp (nonexistent) |
+++ examples/mppc.cpp (revision 30) |
@@ -0,0 +1,188 @@ |
+#include "TROOT.h" |
+#include "TFile.h" |
+#include "TBenchmark.h" |
+#include "TH1F.h" |
+#include "TH2F.h" |
+#include "TCanvas.h" |
+#include "TStyle.h" |
+#include "TPad.h" |
+#include "TF1.h" |
+#include "TGraph.h" |
+#include "TSpectrum.h" |
+ |
+#include "RTUtil.h" |
+ |
+#define TDC_BIN (25./1000.) //1 TDC bin in ns |
+#define MIKRO_BIN 0.49609/1000. //1 mikro step in mm |
+ |
+#define HFILL_COLOR 18 |
+ |
+void mppc(char *fname, char *plopt="t", int nChannels = 1, double fitw=1.0, char *fitf="g") |
+{ |
+ char fullname[256]; |
+ |
+ //get ROOT file with histograms |
+ char fnameroot[1024]; |
+ TFile * rootfile; |
+ TDirectory *dir; |
+ |
+ sprintf(fnameroot, "root/%s.root", fname); |
+ rootfile = (TFile *) gROOT->FindObject(fname); |
+ if(rootfile==NULL) rootfile = new TFile(fnameroot); |
+ if(rootfile==NULL) { |
+ printf("Cannot open root file %s!!!\n",fnameroot); |
+ return; |
+ } |
+ dir = (TDirectory*) rootfile; |
+ |
+ |
+ // set draw style |
+ gStyle->SetOptStat("ne"); |
+ gStyle->SetPalette(1, 0); |
+ |
+ gStyle->SetPaperSize(TStyle::kA4); |
+ gStyle->SetStatBorderSize(1); |
+ gStyle->SetFrameBorderMode(0); |
+ gStyle->SetFrameFillColor(0); |
+ gStyle->SetCanvasBorderMode(0); |
+ gStyle->SetPadBorderMode(0); |
+ gStyle->SetPadColor(0); |
+ gStyle->SetCanvasColor(0); |
+ gStyle->SetStatColor(0); |
+ gStyle->SetOptFit(11); |
+ gStyle->SetOptStat(); |
+ gStyle->SetPadRightMargin(0.15); |
+ gStyle->SetPadLeftMargin(0.12); |
+ //gStyle->SetTitleYOffset(1.4); |
+ |
+ TCanvas *c[16]; |
+ int cc=-1; |
+ char hname[256]; |
+ TH1F *hp1d; TH2F *hp2d; |
+ |
+ |
+// 2d Scan -------------------------------------------------------------------------------------------- |
+ |
+ if( strchr(plopt, '2') != NULL ) { |
+ c[++cc] = new TCanvas("2D Scan", fname, 650, 400, 600, 600); |
+ |
+ int i=0; |
+ gPad->SetLogz(); |
+ sprintf(hname, "h2d%d",i); hp2d = (TH2F *) dir->Get(hname); |
+ |
+ (hp2d->GetYaxis())->SetLabelOffset(0.01); |
+ hp2d->SetTitle("; X [mm]; Y[mm]"); |
+ hp2d->DrawCopy("COLZ"); |
+ |
+ sprintf(fullname, "ps/%s_2d.eps", fname); |
+ c[cc]->SaveAs(fullname); |
+ } |
+ |
+// 1d Scan Y ------------------------------------------------------------------------------------------ |
+ |
+ if( strchr(plopt, 'y') != NULL ) { |
+ c[++cc] = new TCanvas("Y Scan", fname, 250, 200, 600, 600); |
+ |
+ int i=0; |
+ //gPad->SetLogy(); |
+ sprintf(hname, "hnhitsy%d",i); hp1d = (TH1F *) dir->Get(hname); |
+ |
+ hp1d->SetTitle("Y Scan; Y; Count"); |
+ hp1d->DrawCopy(); |
+ |
+ sprintf(fullname, "ps/%s_y.eps", fname); |
+ c[cc]->SaveAs(fullname); |
+ } |
+ |
+// 1d Scan X ------------------------------------------------------------------------------------------ |
+ |
+ if( strchr(plopt, 'x') != NULL ) { |
+ c[++cc] = new TCanvas("X Scan", fname, 250, 200, 600, 600); |
+ |
+ int i=0; |
+ //gPad->SetLogy(); |
+ sprintf(hname, "hnhitsx%d",i); hp1d = (TH1F *) dir->Get(hname); |
+ |
+ hp1d->SetTitle("X Scan; X; Count"); |
+ hp1d->DrawCopy(); |
+ |
+ sprintf(fullname, "ps/%s_x.eps", fname); |
+ c[cc]->SaveAs(fullname); |
+ } |
+ |
+// Fits of corrected TDCs ----------------------------------------------------------------------------- |
+ |
+ TF1 *fg = new TF1("fg", "gaus"); |
+ TF1 *fgg = new TF1("fgg", "gaus(0)+gaus(3)"); |
+ fgg->SetParNames("Constant","Mean","Sigma","Constant2","Mean2","Sigma2"); |
+ if( strchr(plopt, 'f') != NULL ) { |
+ c[++cc] = new TCanvas("Corrected TDCs", fname, 50*(cc+1), 0, 600, 850); |
+ //c[cc]->Divide(2,4); |
+ c[cc]->Divide(nChannels); |
+ |
+ for(int i=0;i<nChannels;i++) { |
+ c[cc]->cd(i+1); gPad->SetLogy(); |
+ sprintf(hname, "hctdc%d",i); hp1d = (TH1F *) dir->Get(hname); |
+ hp1d->SetTitle("cTDC; TDC [ns]; N"); |
+ (hp1d->GetXaxis())->SetRangeUser(-40*TDC_BIN,160*TDC_BIN); |
+ if( hp1d->GetMaximum() < 50 ) continue; |
+ //(hp1d->GetXaxis())->SetRangeUser(-0.25,0.75); |
+ |
+ if( strcmp(fitf, "g")==0 ) { |
+ fg->SetParameters(hp1d->GetMaximum(), hp1d->GetBinCenter(hp1d->GetMaximumBin()), 0.05); |
+ hp1d->Fit(fg, "0ql", "", fg->GetParameter(1)-0.1*fitw, fg->GetParameter(1)+0.05*fitw); |
+ hp1d->Fit(fg, "ql", "", fg->GetParameter(1)-0.1*fitw, fg->GetParameter(1)+0.05*fitw); |
+ |
+ printf("Ch[%d] Sigma =%6.1lfps\n",i,fg->GetParameter(2)*1000.); |
+ } |
+ else if( strcmp(fitf, "gg")==0 ) { |
+ //fgg->SetParameters(2600.,0*TDC_BIN,2*TDC_BIN, 100.,0*TDC_BIN,10*TDC_BIN); |
+ fgg->SetParameters(hp1d->GetMaximum(), hp1d->GetBinCenter(hp1d->GetMaximumBin()), 0.03, |
+ hp1d->GetMaximum(), hp1d->GetBinCenter(hp1d->GetMaximumBin())/10., 0.1); |
+ hp1d->Fit(fgg, "0ql", "", -50*TDC_BIN, 50*TDC_BIN); |
+ hp1d->Fit(fgg, "ql", "", fgg->GetParameter(1)-2.5*fitw*fgg->GetParameter(2), |
+ fgg->GetParameter(1)+3.5*fitw*fgg->GetParameter(2)); |
+ |
+ printf("Ch[%d] Sigma =%6.1lfps\n",i,fgg->GetParameter(2)*1000.); |
+/* |
+ fg->SetRange(-50., 200.); |
+ fg->SetParameters(fgg->GetParameter(0), fgg->GetParameter(1), fgg->GetParameter(2)); |
+ fg->SetLineColor(2); |
+ fg->DrawCopy("LSAME"); |
+ fg->SetParameters(fgg->GetParameter(3), fgg->GetParameter(4), fgg->GetParameter(5)); |
+ fg->SetLineColor(3); |
+ fg->DrawCopy("LSAME"); |
+*/ |
+ } else {printf("Wrong fit function (parameter 4)!!!\n"); return;} |
+ } |
+ sprintf(fullname, "ps/%s_cTDC.eps", fname); |
+ c[cc]->SaveAs(fullname); |
+ } |
+ |
+// TDCs ----------------------------------------------------------------------------------------------- |
+ |
+ if( strchr(plopt, 't') != NULL ) { |
+ c[++cc] = new TCanvas("Raw TDC", fname, 0, 500, 600, 430); |
+ |
+ int i=0; |
+ gPad->SetLogy(); |
+ sprintf(hname, "htdc%d",i); hp1d = (TH1F *) dir->Get(hname); |
+ hp1d->SetTitle("TDC; TDC [ns]; N"); |
+ (hp1d->GetXaxis())->SetRangeUser(-10,20); |
+ hp1d->DrawCopy(); |
+ //if( hp1d->GetMaximum() < 10 ) continue; |
+ |
+ fg->SetParameters(hp1d->GetMaximum(), hp1d->GetBinCenter(hp1d->GetMaximumBin()), 0.25); |
+ fg->SetLineColor(kRed); |
+ hp1d->Fit(fg,"0QL", "", fg->GetParameter(1)-0.5, fg->GetParameter(1)+0.5); |
+ hp1d->Fit(fg,"QL", "", fg->GetParameter(1)-0.8, fg->GetParameter(1)+0.8); |
+ |
+ printf("Ch[%d] RAW Sigma =%6.1lfps\n",i,fg->GetParameter(2)*1000.); |
+ |
+ sprintf(fullname, "ps/%s_TDC.eps", fname); |
+ c[cc]->SaveAs(fullname); |
+ } |
+ |
+ |
+ //rootfile->Close(); |
+} |
Index: examples/plot_adc_tdc.C |
=================================================================== |
--- examples/plot_adc_tdc.C (nonexistent) |
+++ examples/plot_adc_tdc.C (revision 30) |
@@ -0,0 +1,9 @@ |
+{ |
+ TFile *file0 = new TFile("C:/HOME/dino/l2d/root/test.root"); |
+ //TNtuple *ntuple = (TNtuple*) file0->Get("nt"); |
+ TCanvas *canvas1 = new TCanvas("canvas1","canvas1",1000,500); |
+ canvas1->Divide(2); |
+ canvas1->cd(1); |
+ htdc->Draw(); |
+ |
+} |
\ No newline at end of file |
Index: examples/plotThresholdScan.C |
=================================================================== |
--- examples/plotThresholdScan.C (nonexistent) |
+++ examples/plotThresholdScan.C (revision 30) |
@@ -0,0 +1,471 @@ |
+#include "TROOT.h" |
+#include "TFile.h" |
+#include "TBenchmark.h" |
+#include "TH1F.h" |
+#include "TH2F.h" |
+#include "TCanvas.h" |
+#include "TStyle.h" |
+#include "TPad.h" |
+#include "TF1.h" |
+#include "TGraph.h" |
+#include "TSpectrum.h" |
+#include "stdio.h" |
+ |
+#include "RTUtil.h" |
+ |
+double getNoise(TH2F*, int, int); |
+ |
+int plotThreshold(char filename[256] = "test", char plopt[256]="th", int chXstart=0, int chXend=7, int chYstart=0, int chYend=7, bool debug = false) |
+{ |
+ const int c_nChannels = 64; |
+ const double c_xOffset = 1; // mm |
+ const double c_yOffset = 0.7; |
+ |
+ int map[8][8]={{32,34,53,55,40,42,61,63}, |
+ {48,50,37,39,56,58,45,47}, |
+ {33,35,52,54,41,43,60,62}, |
+ {49,51,36,38,57,59,44,46}, |
+ {17,19,4,6,25,27,12,14}, |
+ {1,3,20,22,9,11,28,30}, |
+ {16,18,5,7,24,26,13,15}, |
+ {0,2,21,23,8,10,29,31} |
+ }; |
+ |
+ char fnameroot[256]; |
+ TFile* rootfile; |
+ sprintf(fnameroot, "root/%s.root", filename); |
+ rootfile = (TFile *) gROOT->FindObject(filename); |
+ if(rootfile==NULL) rootfile = new TFile(fnameroot); |
+ if(rootfile==NULL) { |
+ printf("Cannot open root file %s!!!\n",fnameroot); |
+ return(0); |
+ } |
+ |
+ // set draw style |
+ gStyle->SetOptStat("ne"); |
+ gStyle->SetPalette(1, 0); |
+ |
+ gStyle->SetPaperSize(TStyle::kA4); |
+ gStyle->SetStatBorderSize(1); |
+ gStyle->SetFrameBorderMode(0); |
+ gStyle->SetFrameFillColor(0); |
+ gStyle->SetCanvasBorderMode(0); |
+ gStyle->SetPadBorderMode(0); |
+ gStyle->SetPadColor(0); |
+ gStyle->SetCanvasColor(0); |
+ gStyle->SetStatColor(0); |
+ gStyle->SetOptFit(11); |
+ gStyle->SetOptStat(); |
+ gStyle->SetPadRightMargin(0.15); |
+ gStyle->SetPadLeftMargin(0.12); |
+ //gStyle->SetTitleYOffset(1.4); |
+ |
+ if (strstr(plopt, "th") != NULL) { |
+ TCanvas* canvas1 = new TCanvas("canvas1","",500,500); |
+ canvas1->cd(); |
+ TH2F* h_threshold = (TH2F*) rootfile->Get("h_threshold"); |
+ h_threshold->Draw("colz"); |
+ } |
+ |
+ if( strstr(plopt, "all") != NULL ) { |
+ TCanvas *canvas2 = new TCanvas("canvas2","Hits x;;",2000,2000); |
+ TCanvas *canvas3 = new TCanvas("canvas3","Hits y;;",2000,2000); |
+ canvas2->Divide(8,8); |
+ canvas3->Divide(8,8); |
+ TH1F* h_hitsx; |
+ TH1F* h_hitsy; |
+ for(int i=0; i<c_nChannels; i++) { |
+ canvas2->cd(i+1); |
+ char hname[128]; |
+ sprintf(hname, "hnhitsx%d", i); |
+ h_hitsx = (TH1F*)rootfile->Get(hname); |
+ h_hitsx->Draw(); |
+ canvas3->cd(i+1); |
+ sprintf(hname, "hnhitsy%d", i); |
+ h_hitsy = (TH1F*)rootfile->Get(hname); |
+ h_hitsy->Draw(); |
+ } |
+ } |
+ |
+ if( strstr(plopt, "x") != NULL ) { |
+ TCanvas *canvas10 = new TCanvas("canvas10","Ch x;;",500,500); |
+ TH1F* h_hitsx; |
+ canvas10->cd(); |
+ char hname[128]; |
+ sprintf(hname, "hnhitsx%d", chXstart); |
+ h_hitsx = (TH1F*)rootfile->Get(hname); |
+ h_hitsx->Draw(); |
+ } |
+ |
+ if( strstr(plopt, "y") != NULL ) { |
+ TCanvas *canvas11 = new TCanvas("canvas11","Ch x;;",500,500); |
+ TH1F* h_hitsy; |
+ canvas11->cd(); |
+ char hname[128]; |
+ sprintf(hname, "hnhitsy%d", chXstart); |
+ h_hitsy = (TH1F*)rootfile->Get(hname); |
+ h_hitsy->Draw(); |
+ } |
+ |
+ if( strstr(plopt, "share") != NULL ) { |
+ /*TCanvas *canvas4 = new TCanvas("canvas1","canvas1",1000,1000); |
+ int nChannels = chYend-chYstart+1; |
+ int ncols = nChannels/2; |
+ printf("nch %d nch\\2 %d\n", nChannels, ncols); |
+ canvas4->Divide(2,ncols); |
+ TH1F* h_hitsy; |
+ for(int i=chYstart; i<=chYend; i++){ |
+ canvas4->cd(i-chYstart+1); |
+ char hname[128]; |
+ int chPosition = map[0][i]; |
+ sprintf(hname, "hnhitsy%d", chPosition); |
+ h_hitsy = (TH1F*)rootfile->Get(hname); |
+ h_hitsy->Draw(); |
+ }*/ |
+ |
+ TCanvas *canvas4 = new TCanvas("canvas4","canvas4",500,500); |
+ canvas4->cd(); |
+ for(int i=chXstart; i<=chXend; i++) { |
+ TH1F* h_hitsx; |
+ char hname[128]; |
+ int chPosition = map[i][chYstart]; |
+ sprintf(hname, "hnhitsx%d", chPosition); |
+ h_hitsx = (TH1F*)rootfile->Get(hname); |
+ h_hitsx->SetTitle("Scan X;x [mm]; Entries"); |
+ h_hitsx->GetYaxis()->SetTitleOffset(1.3); |
+ h_hitsx->SetStats(0); |
+ if (i == chXstart) |
+ h_hitsx->Draw(); |
+ else { |
+ h_hitsx->SetLineColor(i+1); |
+ h_hitsx->Draw("same"); |
+ } |
+ } |
+ //sprintf(fullname, "ps/%s_Yshare.eps", filename); |
+ //canvas4->SaveAs(fullname); |
+ |
+ TCanvas *canvas5 = new TCanvas("canvas5","canvas5",500,500); |
+ canvas5->cd(); |
+ for(int i=chYstart; i<=chYend; i++) { |
+ TH1F* h_hitsy; |
+ char hname[128]; |
+ int chPosition = map[chXstart][i]; |
+ sprintf(hname, "hnhitsy%d", chPosition); |
+ h_hitsy = (TH1F*)rootfile->Get(hname); |
+ h_hitsy->SetTitle("Scan Y;y [mm]; Entries"); |
+ h_hitsy->GetYaxis()->SetTitleOffset(1.3); |
+ h_hitsy->SetStats(0); |
+ if (i == chYstart) |
+ h_hitsy->Draw(); |
+ else { |
+ h_hitsy->SetLineColor(i+1); |
+ h_hitsy->Draw("same"); |
+ } |
+ } |
+ //sprintf(fullname, "ps/%s_Yshare.eps", filename); |
+ //canvas5->SaveAs(fullname); |
+ } |
+ |
+ /** Draws the signal from 8 channels in x-row |
+ * for one specific y bin, so the background and cross-talk |
+ * can be estimated. |
+ * Draws also a 2d scan of these channels. |
+ */ |
+ if (strstr(plopt, "line") != NULL) { |
+ TCanvas* canvas6 = new TCanvas("canvas6","canvas6",500,500); |
+ canvas6->cd(0); |
+ gStyle->SetOptStat(0); |
+ |
+ TH2F* h0 = (TH2F*) rootfile->Get("h2d0"); |
+ Int_t binsX = h0->GetXaxis()->GetNbins(); |
+ Int_t minX = h0->GetXaxis()->GetFirst(); |
+ Int_t maxX = h0->GetXaxis()->GetLast()+1; |
+ Int_t binsY = h0->GetYaxis()->GetNbins(); |
+ Int_t minY = h0->GetYaxis()->GetFirst(); |
+ Int_t maxY = h0->GetYaxis()->GetLast()+1; |
+ Double_t xLowUser = h0->GetXaxis()->GetBinLowEdge(minX); |
+ Double_t xUpUser = h0->GetXaxis()->GetBinUpEdge(maxX); |
+ Double_t yLowUser = h0->GetYaxis()->GetBinLowEdge(minY); |
+ Double_t yUpUser = h0->GetYaxis()->GetBinUpEdge(maxY); |
+ if (debug) printf("xLow %f xUp %f\n",xLowUser,xUpUser); |
+ |
+ //! 1-dimension position in x vs. hits |
+ TH2F* h[8]; |
+ TH1F* h_line[8]; |
+ for(int j=0; j<8; j++) { |
+ h_line[j] = new TH1F("h_line", "h_line", binsX, xLowUser, xUpUser); |
+ } |
+ |
+ for(int j=chXstart; j<=chXend; j++) { |
+ int chPosition = map[j][chYstart]; |
+ char hname[128]; |
+ sprintf(hname, "h2d%d", chPosition); |
+ int histogram = j; |
+ h[histogram] = (TH2F *) rootfile->Get(hname); |
+ int noise = getNoise(h[histogram], 1, 160); |
+ for(int k=minX; k<=maxX; k++) { |
+ int l=chYstart*20+12; |
+ //for(int l=12; l<=16; l++) { |
+ double signal = h[histogram]->GetBinContent(k,l); |
+ //signal -= noise; |
+ //signal /= 5*10000.0; |
+ double eta = -log(1 - signal); |
+ double x = k*(xUpUser-xLowUser)/double(binsX); |
+ //double y = l*(yUpUser-yLowUser)/double(binsY); |
+ h_line[j]->Fill(x-c_xOffset, signal); |
+ //} |
+ } |
+ if (j == chXstart) { |
+ h_line[j]->SetTitle("SiPM#2 w/o noise subtraction;x[mm];Hits"); |
+ //h_line[j]->GetYaxis()->SetRangeUser(-0.05, 0.3); |
+ //h_line[j]->GetYaxis()->SetRangeUser(-50, 2500); |
+ h_line[j]->Draw(""); |
+ } |
+ else { |
+ h_line[j]->SetLineColor(j+1); |
+ h_line[j]->Draw("same"); |
+ } |
+ } |
+ |
+ |
+ //! 2d scan |
+ TCanvas* canvas61 = new TCanvas("canvas61","canvas61",8*200,300); |
+ canvas61->cd(); |
+ TH2F* h_corrected = new TH2F("h_corrected","h_corrected",binsX,xLowUser,xUpUser, binsY,yLowUser,yUpUser); |
+ for(int i=chXstart; i<=chXend; i++) { |
+ //int canvasPosition = nX*(i-chYstart)+(j-chXstart)+1; |
+ //int canvasPosition = nX*(chYend-i)+chXstart+1; |
+ //if (debug) printf("canvas %d\n",canvasPosition); |
+ int chPosition = map[i][chYstart]; |
+ char hname[128]; |
+ sprintf(hname, "h2d%d", chPosition); |
+ int histogram = i; |
+ h[histogram] = (TH2F *) rootfile->Get(hname); |
+ int noise = getNoise(h[histogram], 1, 100); |
+ |
+ for(int k=minX; k<=maxX; k++) { |
+ for(int l=minY; l<=maxY; l++) { |
+ int signal = h[histogram]->GetBinContent(k,l); // detected |
+ //p /= 10000.; |
+ //double p0 = 1.0 - p; // events with zero photons |
+ //double eta = (-log(p0) * p0 ) / (1-p0-0.00001); |
+ //double eta = -log(p0); |
+ //printf("p=%f p0=%f log(p0)=%f eta=%f\n",p,p0,log(p0),eta); |
+ //double signal = ((p - noise) > 0.1) ? (p-noise) : 0.1; |
+ double p = signal - noise; |
+ p /= 10000.0; |
+ double eta = -log(1 - p); |
+ double x = k*(xUpUser-xLowUser)/double(binsX); |
+ double y = l*(yUpUser-yLowUser)/double(binsY); |
+ h_corrected->Fill(x-c_xOffset, y-c_yOffset, eta); |
+ } |
+ } |
+ } |
+ h_corrected->SetTitle("SiPM#2 n_pe = - ln(P0);x[mm];y[mm]"); |
+ h_corrected->GetZaxis()->SetRangeUser(-0.05,0.30); |
+ h_corrected->Draw("colz"); |
+ |
+ } |
+ |
+ /** Draws the sum of the channels |
+ * Each channel is a 2d plot |
+ * Intended for the study of 1 channel |
+ */ |
+ if (strstr(plopt, "2d") != NULL) { |
+ |
+ int nX = chXend - chXstart + 1; |
+ int nY = chYend - chYstart + 1; |
+ TCanvas* canvas7 = new TCanvas("canvas7","canvas7", nX*400,nY*400); |
+ printf("nx %d ny %d\n",nX,nY); |
+ canvas7->Divide(nX,nY); |
+ for(int i=chYstart; i<=chYend; i++) { |
+ for(int j=chXstart; j<=chXend; j++) { |
+ //int canvasPosition = nX*(i-chYstart)+(j-chXstart)+1; |
+ int canvasPosition = nX*(chYend-i)+(j-chXstart)+1; |
+ if (debug) printf("canvas %d\n",canvasPosition); |
+ canvas7->cd(canvasPosition); |
+ char hname[128]; |
+ int chPosition = map[j][i]; |
+ sprintf(hname, "h2d%d", chPosition); |
+ TH2F* h_2d = (TH2F*)rootfile->Get(hname); |
+ h_2d->Draw("colz"); |
+ } //x |
+ } |
+ |
+ // Number of photoelectrons - Poissonian correction |
+ TCanvas* canvas8 = new TCanvas("canvas8","canvas8", 1000,1000); |
+ canvas8->cd(); |
+ gStyle->SetOptStat(0); |
+ char hname[128]; |
+ int chPosition = map[1][2]; |
+ sprintf(hname, "h2d%d", chPosition); |
+ TH2F* h_2d = (TH2F*)rootfile->Get(hname); |
+ |
+ Int_t binsX = h_2d->GetXaxis()->GetNbins(); |
+ Int_t minX = h_2d->GetXaxis()->GetFirst(); |
+ Int_t maxX = h_2d->GetXaxis()->GetLast()+1; |
+ Int_t binsY = h_2d->GetYaxis()->GetNbins(); |
+ Int_t minY = h_2d->GetYaxis()->GetFirst(); |
+ Int_t maxY = h_2d->GetYaxis()->GetLast()+1; |
+ Double_t xLowUser = h_2d->GetXaxis()->GetBinLowEdge(minX); |
+ Double_t xUpUser = h_2d->GetXaxis()->GetBinUpEdge(maxX); |
+ Double_t yLowUser = h_2d->GetYaxis()->GetBinLowEdge(minY); |
+ Double_t yUpUser = h_2d->GetYaxis()->GetBinUpEdge(maxY); |
+ if (debug) printf("xLow %f xUp %f\n",xLowUser,xUpUser); |
+ TH2F* h_corrected = new TH2F("h_corrected","h_corrected",binsX, xLowUser, xUpUser, binsY, yLowUser, yUpUser); |
+ |
+ double noise = getNoise(h_2d, 1, 89); |
+ if(debug) printf("Noise = %f\n", noise); |
+ for(int k=minX; k<=maxX; k++) { |
+ for(int j=minY; j<=maxY; j++) { |
+ double signal = h_2d->GetBinContent(k,j); // detected |
+ //double p = ((signal - noise) > 1) ? (signal-noise) : 1; |
+ double p = signal - noise; |
+ p /= 10000.; |
+ double p0 = 1.0 - p; // events with zero photons |
+ //double eta = (-log(p0) * p0 ) / (1-p0-0.00001); |
+ double eta = -log(p0); // constant of the poissonian statistics |
+ if (debug) printf("p=%f p0=%f log(p0)=%f eta=%f\n",p,p0,log(p0),eta); |
+ double x = k*(xUpUser-xLowUser)/double(binsX); |
+ double y = j*(yUpUser-yLowUser)/double(binsY); |
+ h_corrected->Fill(x+3,y+8, eta); |
+ } |
+ } |
+ h_corrected->SetTitle("n_pe = - ln P(0);x[mm];y[mm]"); |
+ h_corrected->GetZaxis()->SetRangeUser(-0.05,0.3); |
+ h_corrected->Draw("colz"); |
+ |
+ // collection efficiency |
+ int nPoints =0; |
+ double efficiency=0; |
+ for (int i=18; i<=58; i++) { |
+ for (int j=19; j<=59; j++) { |
+ double signal = h_corrected->GetBinContent(i,j); |
+ if(debug) printf("signal %f\n",signal); |
+ efficiency += signal; |
+ nPoints++; |
+ } |
+ } |
+ printf("Signal sum = %f\n # of points = %d\n",efficiency,nPoints); |
+ } |
+ |
+ /** Draws the sum of channel signals |
+ * Each channel is a 2d ('h2d') histogram |
+ * Suitable for 8x8 chs scan |
+ */ |
+ if( strstr(plopt, "sum") != NULL ) { |
+ int nX = chXend - chXstart + 1; |
+ int nY = chYend - chYstart + 1; |
+ TCanvas* canvas12 = new TCanvas("canvas12","c2",8*200, 8*200); |
+ canvas12->cd(); |
+ gStyle->SetOptStat(0); |
+ |
+ // final histogram parameters |
+ TH2F* h0 = (TH2F*) rootfile->Get("h2d0"); |
+ Int_t binsX = h0->GetXaxis()->GetNbins(); |
+ Int_t minX = h0->GetXaxis()->GetFirst(); |
+ Int_t maxX = h0->GetXaxis()->GetLast()+1; |
+ Int_t binsY = h0->GetYaxis()->GetNbins(); |
+ Int_t minY = h0->GetYaxis()->GetFirst(); |
+ Int_t maxY = h0->GetYaxis()->GetLast()+1; |
+ Double_t xLowUser = h0->GetXaxis()->GetBinLowEdge(minX); |
+ Double_t xUpUser = h0->GetXaxis()->GetBinUpEdge(maxX); |
+ Double_t yLowUser = h0->GetYaxis()->GetBinLowEdge(minY); |
+ Double_t yUpUser = h0->GetYaxis()->GetBinUpEdge(maxY); |
+ if (debug) printf("xLow %f xUp %f\n",xLowUser,xUpUser); |
+ TH2F* h_corrected = new TH2F("h_corrected","h_corrected",binsX,xLowUser,xUpUser, binsY,yLowUser,yUpUser); |
+ TH2F* h[9]; |
+ |
+ // 2d histogram noise subtraction and poisson scaling |
+ for(int i=chYstart; i<=chYend; i++) { |
+ for(int j=chXstart; j<=chXend; j++) { |
+ int chPosition = map[j][i]; |
+ char hname[128]; |
+ sprintf(hname, "h2d%d", chPosition); |
+ int histogram = nX*(i-chYstart)+(j-chXstart); |
+ h[histogram] = (TH2F *) rootfile->Get(hname); |
+ int noise = getNoise(h[histogram], 1, 170); |
+ if (debug) printf("noise: %d\n",noise); |
+ for(int k=minX; k<=maxX; k++) { |
+ for(int l=minY; l<=maxY; l++) { |
+ int signal = h[histogram]->GetBinContent(k,l); // detected |
+ //double p = ((signal - noise) > 0.1) ? (signal-noise) : 0.1; |
+ double p = signal - noise; |
+ p /= 10000.; |
+ double p0 = 1.0 - p; // events with zero photons |
+ //double eta = (-log(p0) * p0 ) / (1-p0-0.00001); |
+ double eta = -log(p0); |
+ //printf("p=%f p0=%f log(p0)=%f eta=%f\n",p,p0,log(p0),eta); |
+ double x = k*(xUpUser-xLowUser)/double(binsX); |
+ double y = l*(yUpUser-yLowUser)/double(binsY); |
+ h_corrected->Fill(x-c_xOffset, y-c_yOffset, signal); |
+ } |
+ } |
+ |
+ } |
+ } |
+ |
+ h_corrected->SetTitle("SiPM#2 n_p.e.;x[mm];y[mm]"); |
+ //h_corrected->GetZaxis()->SetRangeUser(-0.05,.30); |
+ h_corrected->Draw("colz"); |
+ |
+ TCanvas* canvas13 = new TCanvas("canvas13","canvas13",600,300); |
+ canvas13->Divide(2); |
+ canvas13->cd(1); |
+ h[16]->Draw("colz"); |
+ canvas13->cd(2); |
+ h[8]->Draw("colz"); |
+ } |
+ |
+ /** Draws the beam profile and fits it with error function |
+ * on some background function |
+ */ |
+ if (strstr(plopt, "beam") != NULL) { |
+ |
+ TCanvas* canvas9 = new TCanvas("canvas9","canvas9", 500,500); |
+ canvas9->cd(); |
+ char hname[128]; |
+ sprintf(hname, "hnhitsx%d", 36); |
+ TH1F* h_laser = (TH1F*)rootfile->Get(hname); |
+ h_laser->Draw(); |
+ h_laser->SetStats(1); |
+ |
+ TF1* err = new TF1("err","[0]+[1]*TMath::Erf((x-[2])/[3])",17.2,17.50); |
+ err->SetParameter(0,2500); |
+ err->SetParameter(1, h_laser->GetMaximum()); |
+ err->SetParameter(2, h_laser->GetBinCenter(h_laser->GetMaximumBin())); |
+ err->SetParameter(3, 0.001); |
+ h_laser->Fit(err,"qr"); |
+ h_laser->Fit(err,"lr"); |
+ double sigma = err->GetParameter(3); |
+ printf("sigma = %2.0f um, FWHM = %2.0f um\n", sigma*1000, 2.35*sigma*1000); |
+ } |
+ |
+ if (strstr(plopt, "map") != NULL) { |
+ for (int i=7; i>=0; i--) { |
+ //for (int j=7; j>=0; j--) printf("(%d, %d) ", j,i); |
+ for (int j=7; j>=0; j--) printf("%2d ", map[j][i]); |
+ printf("\n"); |
+ } |
+ |
+ } |
+ |
+ return(0); |
+} |
+ |
+/** Function calculates the noise from one channel |
+ * it runs through the bins along x and returns the average value |
+ */ |
+double getNoise(TH2F* histogram, int yStart, int yEnd) |
+{ |
+ double noise=0; |
+ int count=0; |
+ for(int j=yStart; j<yEnd; j++) { |
+ double value = histogram->GetBinContent(j,2); |
+ //if (noise < value) noise = value; |
+ noise += value; |
+ count++; |
+ } |
+ return (noise/double(count)); |
+} |
+ |
Index: examples/plots.cpp |
=================================================================== |
--- examples/plots.cpp (nonexistent) |
+++ examples/plots.cpp (revision 30) |
@@ -0,0 +1,269 @@ |
+#include "TROOT.h" |
+#include "TFile.h" |
+#include "TBenchmark.h" |
+#include "TH1F.h" |
+#include "TH2F.h" |
+#include "TCanvas.h" |
+#include "TStyle.h" |
+#include "TPad.h" |
+#include "TF1.h" |
+#include "TGraph.h" |
+#include "TSpectrum.h" |
+ |
+#include "RTUtil.h" |
+ |
+#define NCH 1 |
+#define TDC_BIN (25./1000.) //1 TDC bin in ns |
+#define MIKRO_BIN 0.3595/1000. //1 mikro step in mm |
+ |
+#define HFILL_COLOR 18 |
+ |
+void plots(char *fname, char *plopt="atc", double fitw=1.0, char *fitf="g") |
+{ |
+ char fullname[256]; |
+ |
+ //get ROOT file with histograms |
+ char fnameroot[1024]; |
+ TFile * rootfile; |
+ TDirectory *dir; |
+ |
+ sprintf(fnameroot, "root/%s.root", fname); |
+ rootfile = (TFile *) gROOT->FindObject(fname); |
+ if(rootfile==NULL) rootfile = new TFile(fnameroot); |
+ if(rootfile==NULL) { |
+ printf("Cannot open root file %s!!!\n",fnameroot); |
+ return; |
+ } |
+ dir = (TDirectory*) rootfile; |
+ |
+ |
+ // set draw style |
+ gStyle->SetOptStat("ne"); |
+ gStyle->SetPalette(1, 0); |
+ |
+ gStyle->SetPaperSize(TStyle::kA4); |
+ gStyle->SetStatBorderSize(1); |
+ gStyle->SetFrameBorderMode(0); |
+ gStyle->SetFrameFillColor(0); |
+ gStyle->SetCanvasBorderMode(0); |
+ gStyle->SetPadBorderMode(0); |
+ gStyle->SetPadColor(0); |
+ gStyle->SetCanvasColor(0); |
+ gStyle->SetStatColor(0); |
+ gStyle->SetOptFit(11); |
+ gStyle->SetPadRightMargin(0.1); |
+ |
+ RTCanvas *c[16]; |
+ int cc=-1; |
+ char hname[256]; |
+ TH1F *hp1d; TH2F *hp2d; |
+ |
+// ADCs ----------------------------------------------------------------------------------------------- |
+ |
+ if( strchr(plopt, 'a') != NULL ) { |
+ c[++cc] = new RTCanvas("QDC", fname, 50*(cc+1), 0, 600, 850); |
+ //c[cc]->Divide(2,4); |
+ c[cc]->Divide(NCH); |
+ |
+ for(int i=0;i<NCH;i++) { |
+ c[cc]->cd(i+1); gPad->SetLogy(); |
+ sprintf(hname, "hadcpos%d",i); hp1d = (TH1F *) dir->Get(hname); |
+ |
+ hp1d->SetTitle("QDC; QDC; N"); |
+ //(hp1d->GetXaxis())->SetRangeUser(0.,2500.); |
+ hp1d->DrawCopy(); |
+ } |
+ sprintf(fullname, "ps/%s_QDC.eps", fname); |
+ c[cc]->SaveAs(fullname); |
+ } |
+ |
+// Correlation 2d plots ------------------------------------------------------------------------------- |
+ |
+ if( strchr(plopt, 'c') != NULL ) { |
+ c[++cc] = new RTCanvas("TDCvsQDC", fname, 50*(cc+1), 0, 600, 850); |
+ //c[cc]->Divide(3,3); |
+ c[cc]->Divide(NCH); |
+ |
+ for(int i=0;i<NCH;i++) { |
+ c[cc]->cd(i+1); gPad->SetLogz(); |
+ sprintf(hname, "hcorpos%d",i); hp2d = (TH2F *) dir->Get(hname); |
+ |
+ hp2d->SetTitle("TDCvsQDC; QDC; TDC [ns]"); |
+ (hp2d->GetXaxis())->SetRangeUser(0.,500.); |
+ //hp2d->GetYaxis()->SetRangeUser(-1.5,5.0); |
+ hp2d->DrawCopy("COLZ"); |
+ } |
+ sprintf(fullname, "ps/%s_cor.eps", fname); |
+ c[cc]->SaveAs(fullname); |
+ } |
+ |
+ |
+// Fits of corrected TDCs ----------------------------------------------------------------------------- |
+ |
+ TF1 *fg = new TF1("fg", "gaus"); |
+ TF1 *fgg = new TF1("fgg", "gaus(0)+gaus(3)"); |
+ fgg->SetParNames("Constant","Mean","Sigma","Constant2","Mean2","Sigma2"); |
+ if( strchr(plopt, 'f') != NULL ) { |
+ c[++cc] = new RTCanvas("Corrected TDCs", fname, 50*(cc+1), 0, 600, 850); |
+ //c[cc]->Divide(2,4); |
+ c[cc]->Divide(NCH); |
+ |
+ for(int i=0;i<NCH;i++) { |
+ c[cc]->cd(i+1); gPad->SetLogy(); |
+ sprintf(hname, "hctdc%d",i); hp1d = (TH1F *) dir->Get(hname); |
+ hp1d->SetTitle("cTDC; TDC [ns]; N"); |
+ (hp1d->GetXaxis())->SetRangeUser(-40*TDC_BIN,160*TDC_BIN); |
+ if( hp1d->GetMaximum() < 50 ) continue; |
+ //(hp1d->GetXaxis())->SetRangeUser(-0.25,0.75); |
+ |
+ if( strcmp(fitf, "g")==0 ) { |
+ fg->SetParameters(hp1d->GetMaximum(), hp1d->GetBinCenter(hp1d->GetMaximumBin()), 0.05); |
+ hp1d->Fit(fg, "0ql", "", fg->GetParameter(1)-0.1*fitw, fg->GetParameter(1)+0.05*fitw); |
+ hp1d->Fit(fg, "ql", "", fg->GetParameter(1)-0.1*fitw, fg->GetParameter(1)+0.05*fitw); |
+ |
+ printf("Ch[%d] Sigma =%6.1lfps\n",i,fg->GetParameter(2)*1000.); |
+ } |
+ else if( strcmp(fitf, "gg")==0 ) { |
+ //fgg->SetParameters(2600.,0*TDC_BIN,2*TDC_BIN, 100.,0*TDC_BIN,10*TDC_BIN); |
+ fgg->SetParameters(hp1d->GetMaximum(), hp1d->GetBinCenter(hp1d->GetMaximumBin()), 0.03, |
+ hp1d->GetMaximum(), hp1d->GetBinCenter(hp1d->GetMaximumBin())/10., 0.1); |
+ hp1d->Fit(fgg, "0ql", "", -50*TDC_BIN, 50*TDC_BIN); |
+ hp1d->Fit(fgg, "ql", "", fgg->GetParameter(1)-2.5*fitw*fgg->GetParameter(2), |
+ fgg->GetParameter(1)+3.5*fitw*fgg->GetParameter(2)); |
+ |
+ printf("Ch[%d] Sigma =%6.1lfps\n",i,fgg->GetParameter(2)*1000.); |
+/* |
+ fg->SetRange(-50., 200.); |
+ fg->SetParameters(fgg->GetParameter(0), fgg->GetParameter(1), fgg->GetParameter(2)); |
+ fg->SetLineColor(2); |
+ fg->DrawCopy("LSAME"); |
+ fg->SetParameters(fgg->GetParameter(3), fgg->GetParameter(4), fgg->GetParameter(5)); |
+ fg->SetLineColor(3); |
+ fg->DrawCopy("LSAME"); |
+*/ |
+ } else {printf("Wrong fit function (parameter 4)!!!\n"); return;} |
+ } |
+ sprintf(fullname, "ps/%s_cTDC.eps", fname); |
+ c[cc]->SaveAs(fullname); |
+ } |
+ |
+// TDCs ----------------------------------------------------------------------------------------------- |
+ |
+ if( strchr(plopt, 't') != NULL ) { |
+ c[++cc] = new RTCanvas("Raw TDC", fname, 50*(cc+1), 0, 600, 850); |
+ //c[cc]->Divide(2,4); |
+ c[cc]->Divide(NCH); |
+ |
+ for(int i=0;i<NCH;i++) { |
+ c[cc]->cd(i+1); gPad->SetLogy(); |
+ sprintf(hname, "htdcpos%d",i); hp1d = (TH1F *) dir->Get(hname); |
+ hp1d->SetTitle("TDC; TDC [ns]; N"); |
+ (hp1d->GetXaxis())->SetRangeUser(-2,5); |
+ hp1d->DrawCopy(); |
+ if( hp1d->GetMaximum() < 50 ) continue; |
+ |
+ fg->SetParameters(hp1d->GetMaximum(), hp1d->GetBinCenter(hp1d->GetMaximumBin()), 0.25); |
+ hp1d->Fit(fg,"0QL", "", fg->GetParameter(1)-0.5, fg->GetParameter(1)+0.25); |
+ hp1d->Fit(fg,"QL", "", fg->GetParameter(1)-0.5, fg->GetParameter(1)+0.25); |
+ |
+ printf("Ch[%d] RAW Sigma =%6.1lfps\n",i,fg->GetParameter(2)*1000.); |
+ } |
+ sprintf(fullname, "ps/%s_TDC.eps", fname); |
+ c[cc]->SaveAs(fullname); |
+ } |
+ |
+// Y scans ----------------------------------------------------------------------------------------------- |
+ |
+ if( strchr(plopt, 'y') != NULL ) { |
+ c[++cc] = new RTCanvas("Yscans", fname, 50*(cc+1), 0, 600, 850); |
+ //c[cc]->Divide(2,4); |
+ c[cc]->Divide(NCH); |
+ |
+ for(int i=0;i<NCH;i++) { |
+ c[cc]->cd(i+1); //gPad->SetLogy(); |
+ sprintf(hname, "hnhitsy%d",i); |
+ hp1d = (TH1F *) dir->Get(hname); |
+ hp1d->SetTitle("YScan; x; N"); |
+ //(hp1d->GetXaxis())->SetRangeUser(-80*TDC_BIN,200*TDC_BIN); |
+ //if(i==0) |
+ hp1d->DrawCopy(); |
+ //else hp1d->DrawCopy("SAME"); |
+ } |
+ sprintf(fullname, "ps/%s_Ys.eps", fname); |
+ c[cc]->SaveAs(fullname); |
+ } |
+ |
+// X scans ----------------------------------------------------------------------------------------------- |
+ TF1 *ferf = new TF1("ferf","[0]+[1]*(1+TMath::Erf((x-[2])/[3]))"); |
+ //int cmap[NCH]={40,1,2,8,4,5,6,41}; |
+ int cmap[NCH]={1}; |
+ if( strchr(plopt, 'x') != NULL ) { |
+ c[++cc] = new RTCanvas("Xscans", fname, 50*(cc+1), 0, 600, 430); |
+ //c[cc]->Divide(2,4); |
+ //c[cc]->Divide(NCH); |
+/* |
+ sprintf(hname, "hnhitsx%d",4); hp1d = (TH1F *) dir->Get(hname); |
+ hp1d->SetTitle("XScan; x; N"); |
+ |
+ ferf->SetParameters(130,1600,43.4,1.0); |
+ ferf->SetParNames("Offset","Constant","Mean","Sigma"); |
+ hp1d->Fit(ferf,"QL"); |
+*/ |
+ |
+ for(int i=0;i<1;i++) { |
+ |
+ sprintf(hname, "hnhitsx%d",i); hp1d = (TH1F *) dir->Get(hname); |
+ hp1d->SetTitle("XScan; x; N"); |
+ hp1d->SetLineColor(cmap[i]); |
+ (hp1d->GetYaxis())->SetRangeUser(0,hp1d->GetMaximum()*1.2); |
+ if(i==0) hp1d->DrawCopy(); |
+ else hp1d->DrawCopy("SAME"); |
+ |
+// c[cc]->cd(i+1); //gPad->SetLogy(); |
+// sprintf(hname, "hnhitsx%d",i); hp1d = (TH1F *) dir->Get(hname); |
+// hp1d->SetTitle("XScan; x; N"); |
+ //(hp1d->GetXaxis())->SetRangeUser(-80*TDC_BIN,200*TDC_BIN); |
+// hp1d->DrawCopy(); |
+ } |
+ |
+ sprintf(fullname, "ps/%s_Xs.eps", fname); |
+ c[cc]->SaveAs(fullname); |
+ } |
+ |
+// tdc vs. MCP OUT tdc ----------------------------------------------------------------------------------- |
+ |
+ if( strchr(plopt, 'm') != NULL ) { |
+ c[++cc] = new RTCanvas("TDCvsMCPOUT", fname, 50*(cc+1), 0, 400, 850); |
+ //c[cc]->Divide(2,4); |
+ c[cc]->Divide(NCH); |
+ |
+ for(int i=0;i<NCH;i++) { |
+ c[cc]->cd(i+1); gPad->SetLogz(); |
+ sprintf(hname, "hmcpoutcor%d",i); hp2d = (TH2F *) dir->Get(hname); |
+ hp2d->SetTitle("TDCvsMCPOUT; MCP OUT TDC [ns]; TDC [ns]"); |
+ //(hp1d->GetXaxis())->SetRangeUser(-80*TDC_BIN,200*TDC_BIN); |
+ hp2d->DrawCopy("COLZ"); |
+ } |
+ sprintf(fullname, "ps/%s_TDCvsMCPOUT.eps", fname); |
+ c[cc]->SaveAs(fullname); |
+ } |
+ |
+// Charge sharing ----------------------------------------------------------------------------------- |
+ |
+ if( strchr(plopt, 's') != NULL ) { |
+ c[++cc] = new RTCanvas("ChargeSharing", fname, 50*(cc+1), 0, 600, 850); |
+ c[cc]->Divide(1,2); |
+ c[cc]->cd(1); gPad->SetLogz(); |
+ sprintf(hname, "hshare"); hp2d = (TH2F *) dir->Get(hname); |
+ hp2d->SetTitle("ChargeSharing; x [mm]; ADC1/(ADC1+ADC2)"); |
+ hp2d->DrawCopy("COLZ"); |
+ |
+ c[cc]->cd(2); //gPad->SetLogy(); |
+ TH1F *hprojx = (TH1F*)hp2d->ProjectionX("ProjectionX", 59, 61); |
+ hprojx->Fit("gaus","QL","", hprojx->GetMean()-hprojx->GetRMS(), hprojx->GetMean()+hprojx->GetRMS()); |
+ sprintf(fullname, "ps/%s_share.eps", fname); |
+ c[cc]->SaveAs(fullname); |
+ } |
+ |
+ //rootfile->Close(); |
+} |
Index: examples/plot_tdc_C.dll |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/examples/plot_tdc_C.dll |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: examples/plot_tdc_C.exp |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/examples/plot_tdc_C.exp |
---|
Property changes: |
Added: svn:mime-type |
## -0,0 +1 ## |
+application/octet-stream |
\ No newline at end of property |
Index: examples/plot_1d_scan.C |
=================================================================== |
--- examples/plot_1d_scan.C (nonexistent) |
+++ examples/plot_1d_scan.C (revision 30) |
@@ -0,0 +1,15 @@ |
+int plot_1d_scan(char * fname="C:/HOME/dino/l2d/root/scan.root"){ |
+ gStyle->SetPalette(1); |
+ TFile *file = new TFile(fname); |
+ TNtuple *ntuple = (TNtuple*) file->Get("nt"); |
+ TCanvas *canvas = new TCanvas("canvas","canvas1",800,800); |
+ canvas->Divide(2,2); |
+ canvas->cd(1)->SetLogz(1); |
+// ntuple2->Draw("y>>h1d(100,0,100)","ch==0 && adc>49"); |
+ ntuple->Draw("x>>h1d(100,0,100)","ch==0 && tdc>150 && tdc<180"); |
+ //ntuple2->Draw("adc:y>>h0(200,-0.5,199.5,100,0,100)","ch==0","colz"); |
+ |
+ //canvas2->cd(); |
+ //canvas2->SetLogz(1); |
+ // ntuple2->Draw("y>>h3(100,0,100)","ch==3 && adc>40"); |
+} |
\ No newline at end of file |
Index: examples/plot_sipm.C |
=================================================================== |
--- examples/plot_sipm.C (nonexistent) |
+++ examples/plot_sipm.C (revision 30) |
@@ -0,0 +1,465 @@ |
+#include "TROOT.h" |
+#include "TFile.h" |
+#include "TBenchmark.h" |
+#include "TH1F.h" |
+#include "TH2F.h" |
+#include "TCanvas.h" |
+#include "TStyle.h" |
+#include "TPad.h" |
+#include "TF1.h" |
+#include "TGraph.h" |
+#include "TSpectrum.h" |
+#include "stdio.h" |
+ |
+#include "RTUtil.h" |
+ |
+double getNoise(TH2F*, int, int); |
+ |
+int plot_sipm(char filename[256] = "test", char plopt[256]="all", int chXstart=0, int chXend=7, int chYstart=0, int chYend=7, bool debug = false) |
+{ |
+ const int c_nChannels = 64; |
+ const double c_xOffset = 1; // mm |
+ const double c_yOffset = 0.7; |
+ |
+ int map[8][8]={{32,34,53,55,40,42,61,63}, |
+ {48,50,37,39,56,58,45,47}, |
+ {33,35,52,54,41,43,60,62}, |
+ {49,51,36,38,57,59,44,46}, |
+ {17,19,4,6,25,27,12,14}, |
+ {1,3,20,22,9,11,28,30}, |
+ {16,18,5,7,24,26,13,15}, |
+ {0,2,21,23,8,10,29,31} |
+ }; |
+ |
+ char fnameroot[256]; |
+ TFile* rootfile; |
+ sprintf(fnameroot, "root/%s.root", filename); |
+ rootfile = (TFile *) gROOT->FindObject(filename); |
+ if(rootfile==NULL) rootfile = new TFile(fnameroot); |
+ if(rootfile==NULL) { |
+ printf("Cannot open root file %s!!!\n",fnameroot); |
+ return(0); |
+ } |
+ |
+ // set draw style |
+ gStyle->SetOptStat("ne"); |
+ gStyle->SetPalette(1, 0); |
+ |
+ gStyle->SetPaperSize(TStyle::kA4); |
+ gStyle->SetStatBorderSize(1); |
+ gStyle->SetFrameBorderMode(0); |
+ gStyle->SetFrameFillColor(0); |
+ gStyle->SetCanvasBorderMode(0); |
+ gStyle->SetPadBorderMode(0); |
+ gStyle->SetPadColor(0); |
+ gStyle->SetCanvasColor(0); |
+ gStyle->SetStatColor(0); |
+ gStyle->SetOptFit(11); |
+ gStyle->SetOptStat(); |
+ gStyle->SetPadRightMargin(0.15); |
+ gStyle->SetPadLeftMargin(0.12); |
+ //gStyle->SetTitleYOffset(1.4); |
+ |
+ |
+ if( strstr(plopt, "all") != NULL ) { |
+ TCanvas *canvas2 = new TCanvas("canvas2","Hits x;;",2000,2000); |
+ TCanvas *canvas3 = new TCanvas("canvas3","Hits y;;",2000,2000); |
+ canvas2->Divide(8,8); |
+ canvas3->Divide(8,8); |
+ TH1F* h_hitsx; |
+ TH1F* h_hitsy; |
+ for(int i=0; i<c_nChannels; i++) { |
+ canvas2->cd(i+1); |
+ char hname[128]; |
+ sprintf(hname, "hnhitsx%d", i); |
+ h_hitsx = (TH1F*)rootfile->Get(hname); |
+ h_hitsx->Draw(); |
+ canvas3->cd(i+1); |
+ sprintf(hname, "hnhitsy%d", i); |
+ h_hitsy = (TH1F*)rootfile->Get(hname); |
+ h_hitsy->Draw(); |
+ } |
+ } |
+ |
+ if( strstr(plopt, "x") != NULL ) { |
+ TCanvas *canvas10 = new TCanvas("canvas10","Ch x;;",500,500); |
+ TH1F* h_hitsx; |
+ canvas10->cd(); |
+ char hname[128]; |
+ sprintf(hname, "hnhitsx%d", chXstart); |
+ h_hitsx = (TH1F*)rootfile->Get(hname); |
+ h_hitsx->Draw(); |
+ } |
+ |
+ if( strstr(plopt, "y") != NULL ) { |
+ TCanvas *canvas11 = new TCanvas("canvas11","Ch x;;",500,500); |
+ TH1F* h_hitsy; |
+ canvas11->cd(); |
+ char hname[128]; |
+ sprintf(hname, "hnhitsy%d", chXstart); |
+ h_hitsy = (TH1F*)rootfile->Get(hname); |
+ h_hitsy->Draw(); |
+ } |
+ |
+ if( strstr(plopt, "share") != NULL ) { |
+ /*TCanvas *canvas4 = new TCanvas("canvas1","canvas1",1000,1000); |
+ int nChannels = chYend-chYstart+1; |
+ int ncols = nChannels/2; |
+ printf("nch %d nch\\2 %d\n", nChannels, ncols); |
+ canvas4->Divide(2,ncols); |
+ TH1F* h_hitsy; |
+ for(int i=chYstart; i<=chYend; i++){ |
+ canvas4->cd(i-chYstart+1); |
+ char hname[128]; |
+ int chPosition = map[0][i]; |
+ sprintf(hname, "hnhitsy%d", chPosition); |
+ h_hitsy = (TH1F*)rootfile->Get(hname); |
+ h_hitsy->Draw(); |
+ }*/ |
+ |
+ TCanvas *canvas4 = new TCanvas("canvas4","canvas4",500,500); |
+ canvas4->cd(); |
+ for(int i=chXstart; i<=chXend; i++) { |
+ TH1F* h_hitsx; |
+ char hname[128]; |
+ int chPosition = map[i][chYstart]; |
+ sprintf(hname, "hnhitsx%d", chPosition); |
+ h_hitsx = (TH1F*)rootfile->Get(hname); |
+ h_hitsx->SetTitle("Scan X;x [mm]; Entries"); |
+ h_hitsx->GetYaxis()->SetTitleOffset(1.3); |
+ h_hitsx->SetStats(0); |
+ if (i == chXstart) |
+ h_hitsx->Draw(); |
+ else { |
+ h_hitsx->SetLineColor(i+1); |
+ h_hitsx->Draw("same"); |
+ } |
+ } |
+ //sprintf(fullname, "ps/%s_Yshare.eps", filename); |
+ //canvas4->SaveAs(fullname); |
+ |
+ TCanvas *canvas5 = new TCanvas("canvas5","canvas5",500,500); |
+ canvas5->cd(); |
+ for(int i=chYstart; i<=chYend; i++) { |
+ TH1F* h_hitsy; |
+ char hname[128]; |
+ int chPosition = map[chXstart][i]; |
+ sprintf(hname, "hnhitsy%d", chPosition); |
+ h_hitsy = (TH1F*)rootfile->Get(hname); |
+ h_hitsy->SetTitle("Scan Y;y [mm]; Entries"); |
+ h_hitsy->GetYaxis()->SetTitleOffset(1.3); |
+ h_hitsy->SetStats(0); |
+ if (i == chYstart) |
+ h_hitsy->Draw(); |
+ else { |
+ h_hitsy->SetLineColor(i+1); |
+ h_hitsy->Draw("same"); |
+ } |
+ } |
+ //sprintf(fullname, "ps/%s_Yshare.eps", filename); |
+ //canvas5->SaveAs(fullname); |
+ } |
+ |
+ /** Draws the signal from 8 channels in x-row |
+ * for one specific y bin, so the background and cross-talk |
+ * can be estimated. |
+ * Draws also a 2d scan of these channels. |
+ */ |
+ if (strstr(plopt, "line") != NULL) { |
+ TCanvas* canvas6 = new TCanvas("canvas6","canvas6",500,500); |
+ canvas6->cd(0); |
+ gStyle->SetOptStat(0); |
+ |
+ TH2F* h0 = (TH2F*) rootfile->Get("h2d0"); |
+ Int_t binsX = h0->GetXaxis()->GetNbins(); |
+ Int_t minX = h0->GetXaxis()->GetFirst(); |
+ Int_t maxX = h0->GetXaxis()->GetLast()+1; |
+ Int_t binsY = h0->GetYaxis()->GetNbins(); |
+ Int_t minY = h0->GetYaxis()->GetFirst(); |
+ Int_t maxY = h0->GetYaxis()->GetLast()+1; |
+ Double_t xLowUser = h0->GetXaxis()->GetBinLowEdge(minX); |
+ Double_t xUpUser = h0->GetXaxis()->GetBinUpEdge(maxX); |
+ Double_t yLowUser = h0->GetYaxis()->GetBinLowEdge(minY); |
+ Double_t yUpUser = h0->GetYaxis()->GetBinUpEdge(maxY); |
+ if (debug) printf("xLow %f xUp %f\n",xLowUser,xUpUser); |
+ |
+ //! 1-dimension position in x vs. hits |
+ TH2F* h[8]; |
+ TH1F* h_line[8]; |
+ for(int j=0; j<8; j++) { |
+ h_line[j] = new TH1F("h_line", "h_line", binsX, xLowUser, xUpUser); |
+ } |
+ |
+ for(int j=chXstart; j<=chXend; j++) { |
+ int chPosition = map[j][chYstart]; |
+ char hname[128]; |
+ sprintf(hname, "h2d%d", chPosition); |
+ int histogram = j; |
+ h[histogram] = (TH2F *) rootfile->Get(hname); |
+ int noise = getNoise(h[histogram], 1, 160); |
+ for(int k=minX; k<=maxX; k++) { |
+ int l=chYstart*20+12; |
+ //for(int l=12; l<=16; l++) { |
+ double signal = h[histogram]->GetBinContent(k,l); |
+ //signal -= noise; |
+ //signal /= 5*10000.0; |
+ double eta = -log(1 - signal); |
+ double x = k*(xUpUser-xLowUser)/double(binsX); |
+ //double y = l*(yUpUser-yLowUser)/double(binsY); |
+ h_line[j]->Fill(x-c_xOffset, signal); |
+ //} |
+ } |
+ if (j == chXstart) { |
+ h_line[j]->SetTitle("SiPM#2 w/o noise subtraction;x[mm];Hits"); |
+ //h_line[j]->GetYaxis()->SetRangeUser(-0.05, 0.3); |
+ //h_line[j]->GetYaxis()->SetRangeUser(-50, 2500); |
+ h_line[j]->Draw(""); |
+ } |
+ else { |
+ h_line[j]->SetLineColor(j+1); |
+ h_line[j]->Draw("same"); |
+ } |
+ } |
+ |
+ |
+ //! 2d scan |
+ TCanvas* canvas61 = new TCanvas("canvas61","canvas61",8*200,300); |
+ canvas61->cd(); |
+ TH2F* h_corrected = new TH2F("h_corrected","h_corrected",binsX,xLowUser,xUpUser, binsY,yLowUser,yUpUser); |
+ for(int i=chXstart; i<=chXend; i++) { |
+ //int canvasPosition = nX*(i-chYstart)+(j-chXstart)+1; |
+ //int canvasPosition = nX*(chYend-i)+chXstart+1; |
+ //if (debug) printf("canvas %d\n",canvasPosition); |
+ int chPosition = map[i][chYstart]; |
+ char hname[128]; |
+ sprintf(hname, "h2d%d", chPosition); |
+ int histogram = i; |
+ h[histogram] = (TH2F *) rootfile->Get(hname); |
+ int noise = getNoise(h[histogram], 1, 100); |
+ |
+ for(int k=minX; k<=maxX; k++) { |
+ for(int l=minY; l<=maxY; l++) { |
+ int signal = h[histogram]->GetBinContent(k,l); // detected |
+ //p /= 10000.; |
+ //double p0 = 1.0 - p; // events with zero photons |
+ //double eta = (-log(p0) * p0 ) / (1-p0-0.00001); |
+ //double eta = -log(p0); |
+ //printf("p=%f p0=%f log(p0)=%f eta=%f\n",p,p0,log(p0),eta); |
+ //double signal = ((p - noise) > 0.1) ? (p-noise) : 0.1; |
+ double p = signal - noise; |
+ p /= 10000.0; |
+ double eta = -log(1 - p); |
+ double x = k*(xUpUser-xLowUser)/double(binsX); |
+ double y = l*(yUpUser-yLowUser)/double(binsY); |
+ h_corrected->Fill(x-c_xOffset, y-c_yOffset, eta); |
+ } |
+ } |
+ } |
+ h_corrected->SetTitle("SiPM#2 n_pe = - ln(P0);x[mm];y[mm]"); |
+ h_corrected->GetZaxis()->SetRangeUser(-0.05,0.30); |
+ h_corrected->Draw("colz"); |
+ |
+ } |
+ |
+ /** Draws the sum of the channels |
+ * Each channel is a 2d plot |
+ * Intended for the study of 1 channel |
+ */ |
+ if (strstr(plopt, "2d") != NULL) { |
+ |
+ int nX = chXend - chXstart + 1; |
+ int nY = chYend - chYstart + 1; |
+ TCanvas* canvas7 = new TCanvas("canvas7","canvas7", nX*400,nY*400); |
+ printf("nx %d ny %d\n",nX,nY); |
+ canvas7->Divide(nX,nY); |
+ for(int i=chYstart; i<=chYend; i++) { |
+ for(int j=chXstart; j<=chXend; j++) { |
+ //int canvasPosition = nX*(i-chYstart)+(j-chXstart)+1; |
+ int canvasPosition = nX*(chYend-i)+(j-chXstart)+1; |
+ if (debug) printf("canvas %d\n",canvasPosition); |
+ canvas7->cd(canvasPosition); |
+ char hname[128]; |
+ int chPosition = map[j][i]; |
+ sprintf(hname, "h2d%d", chPosition); |
+ TH2F* h_2d = (TH2F*)rootfile->Get(hname); |
+ h_2d->Draw("colz"); |
+ } //x |
+ } |
+ |
+ // Number of photoelectrons - Poissonian correction |
+ TCanvas* canvas8 = new TCanvas("canvas8","canvas8", 1000,1000); |
+ canvas8->cd(); |
+ gStyle->SetOptStat(0); |
+ char hname[128]; |
+ int chPosition = map[1][2]; |
+ sprintf(hname, "h2d%d", chPosition); |
+ TH2F* h_2d = (TH2F*)rootfile->Get(hname); |
+ |
+ Int_t binsX = h_2d->GetXaxis()->GetNbins(); |
+ Int_t minX = h_2d->GetXaxis()->GetFirst(); |
+ Int_t maxX = h_2d->GetXaxis()->GetLast()+1; |
+ Int_t binsY = h_2d->GetYaxis()->GetNbins(); |
+ Int_t minY = h_2d->GetYaxis()->GetFirst(); |
+ Int_t maxY = h_2d->GetYaxis()->GetLast()+1; |
+ Double_t xLowUser = h_2d->GetXaxis()->GetBinLowEdge(minX); |
+ Double_t xUpUser = h_2d->GetXaxis()->GetBinUpEdge(maxX); |
+ Double_t yLowUser = h_2d->GetYaxis()->GetBinLowEdge(minY); |
+ Double_t yUpUser = h_2d->GetYaxis()->GetBinUpEdge(maxY); |
+ if (debug) printf("xLow %f xUp %f\n",xLowUser,xUpUser); |
+ TH2F* h_corrected = new TH2F("h_corrected","h_corrected",binsX, xLowUser, xUpUser, binsY, yLowUser, yUpUser); |
+ |
+ double noise = getNoise(h_2d, 1, 89); |
+ if(debug) printf("Noise = %f\n", noise); |
+ for(int k=minX; k<=maxX; k++) { |
+ for(int j=minY; j<=maxY; j++) { |
+ double signal = h_2d->GetBinContent(k,j); // detected |
+ //double p = ((signal - noise) > 1) ? (signal-noise) : 1; |
+ double p = signal - noise; |
+ p /= 10000.; |
+ double p0 = 1.0 - p; // events with zero photons |
+ //double eta = (-log(p0) * p0 ) / (1-p0-0.00001); |
+ double eta = -log(p0); // constant of the poissonian statistics |
+ if (debug) printf("p=%f p0=%f log(p0)=%f eta=%f\n",p,p0,log(p0),eta); |
+ double x = k*(xUpUser-xLowUser)/double(binsX); |
+ double y = j*(yUpUser-yLowUser)/double(binsY); |
+ h_corrected->Fill(x+3,y+8, eta); |
+ } |
+ } |
+ h_corrected->SetTitle("n_pe = - ln P(0);x[mm];y[mm]"); |
+ h_corrected->GetZaxis()->SetRangeUser(-0.05,0.3); |
+ h_corrected->Draw("colz"); |
+ |
+ // collection efficiency |
+ int nPoints =0; |
+ double efficiency=0; |
+ for (int i=18; i<=58; i++) { |
+ for (int j=19; j<=59; j++) { |
+ double signal = h_corrected->GetBinContent(i,j); |
+ if(debug) printf("signal %f\n",signal); |
+ efficiency += signal; |
+ nPoints++; |
+ } |
+ } |
+ printf("Signal sum = %f\n # of points = %d\n",efficiency,nPoints); |
+ } |
+ |
+ /** Draws the sum of channel signals |
+ * Each channel is a 2d ('h2d') histogram |
+ * Suitable for 8x8 chs scan |
+ */ |
+ if( strstr(plopt, "sum") != NULL ) { |
+ int nX = chXend - chXstart + 1; |
+ int nY = chYend - chYstart + 1; |
+ TCanvas* canvas12 = new TCanvas("canvas12","c2",8*200, 8*200); |
+ canvas12->cd(); |
+ gStyle->SetOptStat(0); |
+ |
+ // final histogram parameters |
+ TH2F* h0 = (TH2F*) rootfile->Get("h2d0"); |
+ Int_t binsX = h0->GetXaxis()->GetNbins(); |
+ Int_t minX = h0->GetXaxis()->GetFirst(); |
+ Int_t maxX = h0->GetXaxis()->GetLast()+1; |
+ Int_t binsY = h0->GetYaxis()->GetNbins(); |
+ Int_t minY = h0->GetYaxis()->GetFirst(); |
+ Int_t maxY = h0->GetYaxis()->GetLast()+1; |
+ Double_t xLowUser = h0->GetXaxis()->GetBinLowEdge(minX); |
+ Double_t xUpUser = h0->GetXaxis()->GetBinUpEdge(maxX); |
+ Double_t yLowUser = h0->GetYaxis()->GetBinLowEdge(minY); |
+ Double_t yUpUser = h0->GetYaxis()->GetBinUpEdge(maxY); |
+ if (debug) printf("xLow %f xUp %f\n",xLowUser,xUpUser); |
+ TH2F* h_corrected = new TH2F("h_corrected","h_corrected",binsX,xLowUser,xUpUser, binsY,yLowUser,yUpUser); |
+ TH2F* h[9]; |
+ |
+ // 2d histogram noise subtraction and poisson scaling |
+ for(int i=chYstart; i<=chYend; i++) { |
+ for(int j=chXstart; j<=chXend; j++) { |
+ int chPosition = map[j][i]; |
+ char hname[128]; |
+ sprintf(hname, "h2d%d", chPosition); |
+ int histogram = nX*(i-chYstart)+(j-chXstart); |
+ h[histogram] = (TH2F *) rootfile->Get(hname); |
+ int noise = getNoise(h[histogram], 1, 170); |
+ if (debug) printf("noise: %d\n",noise); |
+ for(int k=minX; k<=maxX; k++) { |
+ for(int l=minY; l<=maxY; l++) { |
+ int signal = h[histogram]->GetBinContent(k,l); // detected |
+ //double p = ((signal - noise) > 0.1) ? (signal-noise) : 0.1; |
+ double p = signal - noise; |
+ p /= 10000.; |
+ double p0 = 1.0 - p; // events with zero photons |
+ //double eta = (-log(p0) * p0 ) / (1-p0-0.00001); |
+ double eta = -log(p0); |
+ //printf("p=%f p0=%f log(p0)=%f eta=%f\n",p,p0,log(p0),eta); |
+ double x = k*(xUpUser-xLowUser)/double(binsX); |
+ double y = l*(yUpUser-yLowUser)/double(binsY); |
+ h_corrected->Fill(x-c_xOffset, y-c_yOffset, signal); |
+ } |
+ } |
+ |
+ } |
+ } |
+ |
+ h_corrected->SetTitle("SiPM#2 n_p.e.;x[mm];y[mm]"); |
+ //h_corrected->GetZaxis()->SetRangeUser(-0.05,.30); |
+ h_corrected->Draw("colz"); |
+ |
+ TCanvas* canvas13 = new TCanvas("canvas13","canvas13",600,300); |
+ canvas13->Divide(2); |
+ canvas13->cd(1); |
+ h[16]->Draw("colz"); |
+ canvas13->cd(2); |
+ h[8]->Draw("colz"); |
+ } |
+ |
+ /** Draws the beam profile and fits it with error function |
+ * on some background function |
+ */ |
+ if (strstr(plopt, "beam") != NULL) { |
+ |
+ TCanvas* canvas9 = new TCanvas("canvas9","canvas9", 500,500); |
+ canvas9->cd(); |
+ char hname[128]; |
+ sprintf(hname, "hnhitsx%d", 36); |
+ TH1F* h_laser = (TH1F*)rootfile->Get(hname); |
+ h_laser->Draw(); |
+ h_laser->SetStats(1); |
+ |
+ TF1* err = new TF1("err","[0]+[1]*TMath::Erf((x-[2])/[3])",17.2,17.50); |
+ err->SetParameter(0,2500); |
+ err->SetParameter(1, h_laser->GetMaximum()); |
+ err->SetParameter(2, h_laser->GetBinCenter(h_laser->GetMaximumBin())); |
+ err->SetParameter(3, 0.001); |
+ h_laser->Fit(err,"qr"); |
+ h_laser->Fit(err,"lr"); |
+ double sigma = err->GetParameter(3); |
+ printf("sigma = %2.0f um, FWHM = %2.0f um\n", sigma*1000, 2.35*sigma*1000); |
+ } |
+ |
+ if (strstr(plopt, "map") != NULL) { |
+ for (int i=7; i>=0; i--) { |
+ //for (int j=7; j>=0; j--) printf("(%d, %d) ", j,i); |
+ for (int j=7; j>=0; j--) printf("%2d ", map[j][i]); |
+ printf("\n"); |
+ } |
+ |
+ } |
+ |
+ return(0); |
+} |
+ |
+/** Function calculates the noise from one channel |
+ * it runs through the bins along x and returns the average value |
+ */ |
+double getNoise(TH2F* histogram, int yStart, int yEnd) |
+{ |
+ double noise=0; |
+ int count=0; |
+ for(int j=yStart; j<yEnd; j++) { |
+ double value = histogram->GetBinContent(j,2); |
+ //if (noise < value) noise = value; |
+ noise += value; |
+ count++; |
+ } |
+ return (noise/double(count)); |
+} |
+ |
Index: examples/plot_tdc_C.def |
=================================================================== |
--- examples/plot_tdc_C.def (nonexistent) |
+++ examples/plot_tdc_C.def (revision 30) |
@@ -0,0 +1,58 @@ |
+LIBRARY plot_tdc_C |
+EXPORTS |
+ ?G__plot_tdc_C_ACLiC_dictLN_TVectorTlEfloatgR@@3UG__linked_taginfo@@A DATA |
+ ?G__plot_tdc_C_ACLiC_dictLN_TMatrixTBaselEfloatgR@@3UG__linked_taginfo@@A DATA |
+ ?G__plot_tdc_C_ACLiC_dictLN_TVectorTlEdoublegR@@3UG__linked_taginfo@@A DATA |
+ ?G__plot_tdc_C_ACLiC_dictLN_TMatrixTBaselEdoublegR@@3UG__linked_taginfo@@A DATA |
+ ?G__plot_tdc_C_ACLiC_dictLN_iteratorlErandom_access_iterator_tagcOcharcOlongcOcharmUcOcharaNgR@@3UG__linked_taginfo@@A DATA |
+ ?G__plot_tdc_C_ACLiC_dictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR@@3UG__linked_taginfo@@A DATA |
+ ?G__plot_tdc_C_ACLiC_dictLN__RanitlEROOTcLcLTSchemaHelpercOlongcOROOTcLcLTSchemaHelpermUcOROOTcLcLTSchemaHelperaNgR@@3UG__linked_taginfo@@A DATA |
+ ?G__plot_tdc_C_ACLiC_dictLN_iteratorlErandom_access_iterator_tagcOROOTcLcLTSchemaHelpercOlongcOROOTcLcLTSchemaHelpermUcOROOTcLcLTSchemaHelperaNgR@@3UG__linked_taginfo@@A DATA |
+ ?G__plot_tdc_C_ACLiC_dictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR@@3UG__linked_taginfo@@A DATA |
+ ?G__plot_tdc_C_ACLiC_dictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLconst_iteratorgR@@3UG__linked_taginfo@@A DATA |
+ ?G__plot_tdc_C_ACLiC_dictLN_iteratorlEbidirectional_iterator_tagcOTObjectmUcOlongcOconstsPTObjectmUmUcOconstsPTObjectmUaNgR@@3UG__linked_taginfo@@A DATA |
+ ?strchr@@YAPADPADH@Z |
+ ?strstr@@YAPADPADPBD@Z |
+ ??2TObject@@SAPAXI@Z |
+ ??1TDatime@@UAE@XZ |
+ ??_R0?AVTDatime@@@8 DATA |
+ ?IsA@TDatime@@UBEPAVTClass@@XZ |
+ ?SetCanvasColor@TStyle@@QAEXF@Z |
+ ?SetCanvasBorderMode@TStyle@@QAEXH@Z |
+ ?SetPadColor@TStyle@@QAEXF@Z |
+ ?SetPadBorderMode@TStyle@@QAEXH@Z |
+ ?SetPadBottomMargin@TStyle@@QAEXM@Z |
+ ?SetPadTopMargin@TStyle@@QAEXM@Z |
+ ?SetPadLeftMargin@TStyle@@QAEXM@Z |
+ ?SetPadRightMargin@TStyle@@QAEXM@Z |
+ ?SetFrameFillColor@TStyle@@QAEXF@Z |
+ ?SetFrameBorderMode@TStyle@@QAEXH@Z |
+ ?SetHistFillColor@TStyle@@QAEXF@Z |
+ ?SetStatColor@TStyle@@QAEXH@Z |
+ ?SetStatBorderSize@TStyle@@QAEXF@Z |
+ ?RTSetStyle@@YAXPAVTStyle@@@Z |
+ ??0RTCanvas@@QAE@PAD0HHHH@Z |
+ ?Divide@RTCanvas@@QAEXHH@Z |
+ ?Divide@RTCanvas@@QAEXH@Z |
+ ?cd@RTCanvas@@QAEPAVTPad@@H@Z |
+ ?SaveAs@RTCanvas@@QAEXPBD@Z |
+ ?Update@RTCanvas@@QAEXXZ |
+ ?plot_tdc@@YAHPAD0HHHH@Z |
+ G__cpp_dllrevplot_tdc_C_ACLiC_dict |
+ ?sizep2memfunc@G__Sizep2memfuncplot_tdc_C_ACLiC_dict@@QAEIXZ |
+ G__cpp_setup_inheritanceplot_tdc_C_ACLiC_dict |
+ G__cpp_setup_typetableplot_tdc_C_ACLiC_dict |
+ G__cpp_setup_memvarplot_tdc_C_ACLiC_dict |
+ G__cpp_setup_memfuncplot_tdc_C_ACLiC_dict |
+ G__cpp_setup_globalplot_tdc_C_ACLiC_dict |
+ G__cpp_setup_funcplot_tdc_C_ACLiC_dict |
+ G__cpp_reset_tagtableplot_tdc_C_ACLiC_dict |
+ G__cpp_setup_tagtableplot_tdc_C_ACLiC_dict |
+ ??1G__cpp_setup_initplot_tdc_C_ACLiC_dict@@QAE@XZ |
+ ??0RTCanvas@@QAE@XZ |
+ G__set_cpp_environmentplot_tdc_C_ACLiC_dict |
+ ??0G__Sizep2memfuncplot_tdc_C_ACLiC_dict@@QAE@XZ |
+ ?G__get_sizep2memfuncplot_tdc_C_ACLiC_dict@@YAIXZ |
+ G__cpp_setupplot_tdc_C_ACLiC_dict |
+ ??0G__cpp_setup_initplot_tdc_C_ACLiC_dict@@QAE@XZ |
+ ?G__cpp_setup_initializerplot_tdc_C_ACLiC_dict@@3VG__cpp_setup_initplot_tdc_C_ACLiC_dict@@A DATA |
Index: examples/plot_tdc.C |
=================================================================== |
--- examples/plot_tdc.C (nonexistent) |
+++ examples/plot_tdc.C (revision 30) |
@@ -0,0 +1,238 @@ |
+#include "TROOT.h" |
+#include "TFile.h" |
+#include "TBenchmark.h" |
+#include "TH1F.h" |
+#include "TH2F.h" |
+#include "TCanvas.h" |
+#include "TStyle.h" |
+#include "TPad.h" |
+#include "TF1.h" |
+#include "TGraph.h" |
+#include "TSpectrum.h" |
+#include "stdio.h" |
+ |
+//#include "../RTUtil.h" |
+ |
+int plot_tdc(char* filename = "test", char *plopt="t", int chXstart=0, int chXend=7, int chYstart=0, int chYend=7) |
+{ |
+ const int c_nChannels = 64; |
+ char fullname[256]; |
+ |
+ int map[8][8]={{32,34,53,55,40,42,61,63}, |
+ {48,50,37,39,56,58,45,47}, |
+ {33,35,52,54,41,43,60,62}, |
+ {49,51,36,38,57,59,44,46}, |
+ {17,19,4,6,25,27,12,14}, |
+ {1,3,20,22,9,11,28,30}, |
+ {16,18,5,7,24,26,13,15}, |
+ {0,2,21,23,8,10,29,31} |
+ }; |
+ |
+ char fnameroot[256]; |
+ TFile* rootfile; |
+ sprintf(fnameroot, "root/%s.root", filename); |
+ rootfile = (TFile *) gROOT->FindObject(filename); |
+ if(rootfile==NULL) rootfile = new TFile(fnameroot); |
+ if(rootfile==NULL) { |
+ printf("Cannot open root file %s!!!\n",fnameroot); |
+ return(0); |
+ } |
+ |
+ // set draw style |
+ gStyle->SetOptStat("ne"); |
+ gStyle->SetPalette(1, 0); |
+ |
+ gStyle->SetPaperSize(TStyle::kA4); |
+ gStyle->SetStatBorderSize(1); |
+ gStyle->SetFrameBorderMode(0); |
+ gStyle->SetFrameFillColor(0); |
+ gStyle->SetCanvasBorderMode(0); |
+ gStyle->SetPadBorderMode(0); |
+ gStyle->SetPadColor(0); |
+ gStyle->SetCanvasColor(0); |
+ gStyle->SetStatColor(0); |
+ gStyle->SetOptFit(11); |
+ gStyle->SetOptStat(); |
+ gStyle->SetPadRightMargin(0.15); |
+ gStyle->SetPadLeftMargin(0.12); |
+ //gStyle->SetTitleYOffset(1.4); |
+ |
+ if( strchr(plopt, 't') != NULL ) { |
+ TCanvas* canvas1 = new TCanvas("canvas1","canvas1",1000,1000); |
+ TH2F* htdc = (TH2F*) rootfile->Get("htdc"); |
+ canvas1->cd(); |
+ htdc->Draw("colz"); |
+ |
+ TH2F* h_correctedTDC = (TH2F*) rootfile->Get("h_correctedTDC"); |
+ TCanvas* canvas6 = new TCanvas("canvas6","canvas6",500,500); |
+ canvas6->cd(); |
+ h_correctedTDC->Draw("colz"); |
+ |
+ TH1D* channelY = htdc->ProjectionX("",54,54); |
+ channelY->SetStats(0); |
+ channelY->SetTitle(";TDC [ns];Events"); |
+ channelY->GetYaxis()->SetTitleOffset(1.7); |
+ //channelY->GetXaxis()->SetRangeUser(-40,40); |
+ //channelY->Draw(); |
+ |
+ TF1* f_gaus = new TF1("f_gaus","gaus(0)+gaus(3)",-10,20); |
+ f_gaus->SetParNames("Constant1","Mean1","Sigma1","Constant2","Mean2","Sigma2"); |
+ f_gaus->SetParameters(channelY->GetMaximum(), channelY->GetBinCenter(channelY->GetMaximumBin()), 0.5, |
+ channelY->GetMaximum(), channelY->GetBinCenter(channelY->GetMaximumBin())/10.0, 0.05); |
+ /*channelY->Fit(f_gaus,"0ql","",f_gaus->GetParameter(1)-0.1,f_gaus->GetParameter(1)+0.05); |
+ channelY->Fit(f_gaus,"ql","",f_gaus->GetParameter(1)-0.1,f_gaus->GetParameter(1)+0.05); |
+ channelY->Fit(f_gaus,"0qlr","",-20,20); |
+ channelY->Fit(f_gaus,"qlr","",f_gaus->GetParameter(1)-2*f_gaus->GetParameter(2), |
+ f_gaus->GetParameter(1)+2*f_gaus->GetParameter(2));*/ |
+ } |
+ |
+ if( strchr(plopt, 'all') != NULL ) { |
+ TCanvas *canvas2 = new TCanvas("canvas2","Hits x;;",2000,2000); |
+ TCanvas *canvas3 = new TCanvas("canvas3","Hits y;;",2000,2000); |
+ canvas2->Divide(8,8); |
+ canvas3->Divide(8,8); |
+ TH1F* h_hitsx; |
+ TH1F* h_hitsy; |
+ for(int i=0; i<64; i++) { |
+ canvas2->cd(i+1); |
+ char hname[128]; |
+ sprintf(hname, "hnhitsx%d", i); |
+ h_hitsx = (TH1F*)rootfile->Get(hname); |
+ h_hitsx->Draw(); |
+ canvas3->cd(i+1); |
+ sprintf(hname, "hnhitsy%d", i); |
+ h_hitsy = (TH1F*)rootfile->Get(hname); |
+ h_hitsy->Draw(); |
+ } |
+ } |
+ |
+ if( strchr(plopt, 'x') != NULL ) { |
+ TCanvas *canvas10 = new TCanvas("canvas10","Ch x;;",500,500); |
+ TH1F* h_hitsx; |
+ canvas10->cd(); |
+ char hname[128]; |
+ sprintf(hname, "hnhitsx%d", chXstart); |
+ h_hitsx = (TH1F*)rootfile->Get(hname); |
+ h_hitsx->Draw(); |
+ } |
+ |
+ if( strchr(plopt, 'y') != NULL ) { |
+ TCanvas *canvas11 = new TCanvas("canvas11","Ch x;;",500,500); |
+ TH1F* h_hitsy; |
+ canvas11->cd(); |
+ char hname[128]; |
+ sprintf(hname, "hnhitsy%d", chXstart); |
+ h_hitsy = (TH1F*)rootfile->Get(hname); |
+ h_hitsy->Draw(); |
+ } |
+ |
+ if( strstr(plopt, "share") != NULL ) { |
+ /*TCanvas *canvas4 = new TCanvas("canvas1","canvas1",1000,1000); |
+ int nChannels = chYend-chYstart+1; |
+ int ncols = nChannels/2; |
+ printf("nch %d nch\\2 %d\n", nChannels, ncols); |
+ canvas4->Divide(2,ncols); |
+ TH1F* h_hitsy; |
+ for(int i=chYstart; i<=chYend; i++){ |
+ canvas4->cd(i-chYstart+1); |
+ char hname[128]; |
+ int chPosition = map[0][i]; |
+ sprintf(hname, "hnhitsy%d", chPosition); |
+ h_hitsy = (TH1F*)rootfile->Get(hname); |
+ h_hitsy->Draw(); |
+ }*/ |
+ |
+ TCanvas *canvas5 = new TCanvas("canvas5","canvas5",500,500); |
+ canvas5->cd(); |
+ for(int i=chYstart; i<=chYend; i++) { |
+ TH1F* h_hitsy; |
+ char hname[128]; |
+ int chPosition = map[chXstart][i]; |
+ sprintf(hname, "hnhitsy%d", chPosition); |
+ h_hitsy = (TH1F*)rootfile->Get(hname); |
+ h_hitsy->SetTitle("Scan Y;y [mm]; Entries"); |
+ h_hitsy->GetYaxis()->SetTitleOffset(1.3); |
+ h_hitsy->SetStats(0); |
+ if (i == chYstart) |
+ h_hitsy->Draw(); |
+ else { |
+ h_hitsy->SetLineColor(i+1); |
+ h_hitsy->Draw("same"); |
+ } |
+ } |
+ sprintf(fullname, "ps/%s_Yshare.eps", filename); |
+ canvas5->SaveAs(fullname); |
+ } |
+ |
+ if (strstr(plopt, "2d") != NULL) { |
+ |
+ int nX = chXend - chXstart + 1; |
+ int nY = chYend - chYstart + 1; |
+ TCanvas* canvas7 = new TCanvas("canvas7","canvas7", nX*250,nY*250); |
+ printf("nx %d ny %d\n",nX,nY); |
+ canvas7->Divide(nX,nY); |
+ for(int i=chYstart; i<=chYend; i++) { |
+ for(int j=chXstart; j<=chXend; j++) { |
+ int canvasPosition = nX*(i-chYstart)+(j-chXstart)+1; |
+ printf("canvas %d\n",canvasPosition); |
+ canvas7->cd(canvasPosition); |
+ char hname[128]; |
+ int chPosition = map[j][i]; |
+ sprintf(hname, "h2d%d", chPosition); |
+ TH2F* h_2d = (TH2F*)rootfile->Get(hname); |
+ h_2d->Draw("colz"); |
+ } //x |
+ } |
+ /* |
+ TCanvas* canvas8 = new TCanvas("canvas8","canvas8", 1000,1000); |
+ char hname[128]; |
+ int chPosition = map[0][7]; |
+ sprintf(hname, "h2d%d", chPosition); |
+ TH2F* h_2d1 = (TH2F*)rootfile->Get(hname); |
+ chPosition = map[0][8]; |
+ sprintf(hname, "h2d%d", chPosition); |
+ TH2F* h_2d2 = (TH2F*)rootfile->Get(hname); |
+ h_2d1->SetOption("colz"); |
+ h_2d1->Draw(); |
+ h_2d2->SetOption("colz"); |
+ h_2d2->Draw("same");*/ |
+ } |
+ |
+ if( strstr(plopt, "sum") != NULL ) { |
+ int nX = chXend - chXstart + 1; |
+ int nY = chYend - chYstart + 1; |
+ TCanvas* canvas12 = new TCanvas("canvas12","c2",1000,1000); |
+ gStyle->SetOptStat(11); |
+ //c2->Divide(1,4); |
+ //TVirtualPad *pad=c2->cd(); |
+ //pad->SetLogz(); |
+ TH2F* h[64]; |
+ for(int i=chYstart; i<=chYend; i++) { |
+ for(int j=chXstart; j<=chXend; j++) { |
+ int chPosition = map[j][i]; |
+ char hname[128]; |
+ sprintf(hname, "h2d%d", chPosition); |
+ int histogram = nX*(i-chYstart)+(j-chXstart); |
+ h[histogram] = (TH2F *) rootfile->Get(hname); |
+ if (histogram) h[0]->Add(h[histogram]); |
+ } |
+ } |
+ h[0]->Draw("COLZ"); |
+ } |
+ |
+ if (strstr(plopt, "beam") != NULL) { |
+ |
+ TCanvas* canvas9 = new TCanvas("canvas9","canvas9", 500,500); |
+ char hname[128]; |
+ sprintf(hname, "hnhitsx%d", 36); |
+ TH1F* h_laser = (TH1F*)rootfile->Get(hname); |
+ h_laser->Draw(); |
+ h_laser->SetStats(1); |
+ |
+ TF1* err = new TF1("err","[0]+[1]*TMath::Erf((x-[2])/[3])"); |
+ err->SetParameters(0,h_laser->GetMaximum(),17.04,0.0001); |
+ h_laser->Fit(err,"l"); |
+ } |
+ |
+ return(0); |
+} |
Index: examples/plot_tdc_C.rootmap |
=================================================================== |
--- examples/plot_tdc_C.rootmap (nonexistent) |
+++ examples/plot_tdc_C.rootmap (revision 30) |
@@ -0,0 +1 @@ |
+Library.plot_tdc_C: plot_tdc_C libCore.dll libMathCore.dll libRIO.dll libGpad.dll libGraf.dll libHist.dll libHist.dll libMatrix.dll libMathCore.dll libGraf.dll libHist.dll libMatrix.dll libMathCore.dll libRIO.dll libSpectrum.dll libHist.dll libMatrix.dll |
Index: examples/scan2d.cpp |
=================================================================== |
--- examples/scan2d.cpp (nonexistent) |
+++ examples/scan2d.cpp (revision 30) |
@@ -0,0 +1,87 @@ |
+#include "stdio.h" |
+#include "TROOT.h" |
+#include "TFile.h" |
+#include "TNtuple.h" |
+#include "TH1F.h" |
+#include "TH2F.h" |
+#include "TF1.h" |
+#include "TMath.h" |
+#include "TStyle.h" |
+#include "TCanvas.h" |
+#include "TLine.h" |
+#include "zlib/zlib.h" |
+ |
+int scan2d(char * fname="test", char *plopt="2d", double value=0){ |
+ |
+ char fullname[256]; |
+ |
+ //get ROOT file with histograms |
+ char fnameroot[1024]; |
+ TFile * rootfile; |
+ TDirectory *dir; |
+ |
+ sprintf(fnameroot, "root/%s.root", fname); |
+ rootfile = (TFile *) gROOT->FindObject(fname); |
+ if(rootfile==NULL) rootfile = new TFile(fnameroot); |
+ if(rootfile==NULL) { |
+ printf("Cannot open root file %s!!!\n",fnameroot); |
+ return 0; |
+ } |
+ dir = (TDirectory*) rootfile; |
+ |
+ |
+ // set draw style |
+ gStyle->SetOptStat("ne"); |
+ gStyle->SetPalette(1, 0); |
+ |
+ gStyle->SetPaperSize(TStyle::kA4); |
+ gStyle->SetStatBorderSize(1); |
+ gStyle->SetFrameBorderMode(0); |
+ gStyle->SetFrameFillColor(0); |
+ gStyle->SetCanvasBorderMode(0); |
+ gStyle->SetPadBorderMode(0); |
+ gStyle->SetPadColor(0); |
+ gStyle->SetCanvasColor(0); |
+ gStyle->SetStatColor(0); |
+ gStyle->SetOptFit(11); |
+ gStyle->SetOptStat(); |
+ gStyle->SetPadRightMargin(0.15); |
+ gStyle->SetPadLeftMargin(0.12); |
+ //gStyle->SetTitleYOffset(1.4); |
+ |
+ TCanvas *c; |
+ int cc=-1; |
+ char hname[256]; |
+ TH1F *hp1d; TH2F *hp2d; |
+ |
+ c = new TCanvas("2D Scan", fname, 650, 0, 600, 1200); |
+ c ->Divide(2,4); |
+ for (int i=0;i<8;i++){ |
+ TVirtualPad *pad=c->cd(i%4*2+i/4+1); |
+ |
+ if( strstr(plopt, "2d") != NULL ) { |
+ pad->SetLogz(); |
+ pad->SetLogy(0); |
+ sprintf(hname, "h2d%d",i); hp2d = (TH2F *) dir->Get(hname); |
+ (hp2d->GetYaxis())->SetLabelOffset(0.01); |
+ hp2d->SetTitle("; X [mm]; Y[mm]"); |
+ hp2d->DrawCopy("COLZ"); |
+ sprintf(fullname, "ps/%s_2d.pdf", fname); |
+ } |
+ if( strstr(plopt, "adc") != NULL ) { |
+ pad->SetLogy(1); |
+ pad->SetLogz(0); |
+ |
+ sprintf(hname, "hadc%d",i); hp1d = (TH1F *) dir->Get(hname); |
+ if (value>0) (hp1d->GetXaxis())->SetRangeUser(0,value); |
+ (hp1d->GetYaxis())->SetLabelOffset(0.01); |
+ hp1d->SetTitle("; ADC (a.u.); N"); |
+ hp1d->DrawCopy(); |
+ sprintf(fullname, "ps/%s_adc.pdf", fname); |
+ |
+ } |
+ } |
+ |
+ c->SaveAs(fullname); |
+return 0; |
+} |
\ No newline at end of file |
Index: examples/plot_tdc_C.d |
=================================================================== |
--- examples/plot_tdc_C.d (nonexistent) |
+++ examples/plot_tdc_C.d (revision 30) |
@@ -0,0 +1,76 @@ |
+# |
+# DO NOT DELETE |
+ |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TROOT.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TDirectory.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TNamed.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TObject.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/Rtypes.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/RConfig.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/RVersion.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/DllImport.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/Rtypeinfo.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TGenericClassInfo.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TSchemaHelper.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TStorage.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TVersionCheck.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/Riosfwd.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TBuffer.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TString.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TRefCnt.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TMathBase.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TList.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TSeqCollection.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TCollection.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TIterator.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TDatime.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TUUID.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TFile.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TDirectoryFile.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TUrl.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TBenchmark.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TStopwatch.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TH1F.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TH1.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TAxis.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TAttAxis.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TArrayD.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TArray.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TAttLine.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TAttFill.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TAttMarker.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TArrayC.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TArrayS.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TArrayI.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TArrayF.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/Foption.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TVectorFfwd.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TVectorDfwd.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TH2F.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TH2.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TMatrixFBasefwd.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TMatrixDBasefwd.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TCanvas.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TPad.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TVirtualPad.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TAttPad.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TVirtualX.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TAttText.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/GuiTypes.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/Buttons.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TQObject.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TAttCanvas.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TCanvasImp.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TStyle.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TF1.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TFormula.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TBits.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TObjArray.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TFormulaPrimitive.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/Math/ParamFunctor.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TGraph.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TSpectrum.h RTUtil.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TPaveLabel.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TPave.h |
+C:\HOME\dino\l2d\plot_tdc.o: /cygdrive/C\root/include/TBox.h RTUtil.cpp |
+C:\HOME\dino\l2d\plot_tdc.C: C:\root\include\cintdictversion.h |
Index: examples/plot_tdc_64ch.C |
=================================================================== |
--- examples/plot_tdc_64ch.C (nonexistent) |
+++ examples/plot_tdc_64ch.C (revision 30) |
@@ -0,0 +1,30 @@ |
+#include "TROOT.h" |
+#include "TFile.h" |
+#include "TBenchmark.h" |
+#include "TH1F.h" |
+#include "TH2F.h" |
+#include "TCanvas.h" |
+#include "TStyle.h" |
+#include "TPad.h" |
+#include "TF1.h" |
+#include "TGraph.h" |
+#include "TSpectrum.h" |
+ |
+#include "RTUtil.h" |
+ |
+int plot_tdc() |
+{ |
+ TFile *file0 = new TFile("C:/HOME/dino/l2d/root/test.root"); |
+ //TNtuple *ntuple = (TNtuple*) file0->Get("nt"); |
+ TCanvas *canvas1 = new TCanvas("canvas1","canvas1",1000,1000); |
+ TH2F* htdc = (TH2F*) file0->Get("htdc"); |
+ canvas1->Divide(2,2); |
+ canvas1->cd(1); |
+ htdc->Draw(); |
+ |
+ TH1F* h1ch = new TH1F("h1ch","h1ch",256,0,256); |
+ htdc->ProjectionX("h1ch",33,34,""); |
+ canvas1->cd(2); |
+ h1ch->Draw(); |
+ |
+} |
\ No newline at end of file |