Subversion Repositories f9daq

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
30 f9daq 1
#include "TROOT.h"
2
#include "TFile.h"
3
#include "TBenchmark.h"
4
#include "TH1F.h"
5
#include "TH2F.h"
6
#include "TCanvas.h"
7
#include "TStyle.h"
8
#include "TPad.h"
9
#include "TF1.h"
10
#include "TGraph.h"
11
#include "TSpectrum.h"
12
#include "stdio.h"
13
 
14
//#include "../RTUtil.h"
15
 
16
int plot_tdc(char* filename = "test", char *plopt="t", int chXstart=0, int chXend=7, int chYstart=0, int chYend=7)
17
{
18
  const int c_nChannels = 64;
19
  char fullname[256];
20
 
21
  int map[8][8]={{32,34,53,55,40,42,61,63},
22
                 {48,50,37,39,56,58,45,47},
23
                 {33,35,52,54,41,43,60,62},
24
                 {49,51,36,38,57,59,44,46},
25
                 {17,19,4,6,25,27,12,14},
26
                 {1,3,20,22,9,11,28,30},
27
                 {16,18,5,7,24,26,13,15},
28
                 {0,2,21,23,8,10,29,31}
29
                };
30
 
31
  char fnameroot[256];
32
  TFile* rootfile;
33
	sprintf(fnameroot, "root/%s.root", filename);
34
	rootfile = (TFile *) gROOT->FindObject(filename);
35
	if(rootfile==NULL) rootfile = new TFile(fnameroot);
36
	if(rootfile==NULL) {
37
	  printf("Cannot open root file %s!!!\n",fnameroot);
38
	  return(0);
39
	}
40
 
41
	// set draw style
42
	gStyle->SetOptStat("ne");
43
	gStyle->SetPalette(1, 0);
44
 
45
	gStyle->SetPaperSize(TStyle::kA4);
46
	gStyle->SetStatBorderSize(1);
47
	gStyle->SetFrameBorderMode(0);
48
	gStyle->SetFrameFillColor(0);
49
	gStyle->SetCanvasBorderMode(0);
50
	gStyle->SetPadBorderMode(0);
51
	gStyle->SetPadColor(0);
52
	gStyle->SetCanvasColor(0);
53
	gStyle->SetStatColor(0);
54
	gStyle->SetOptFit(11);
55
	gStyle->SetOptStat();
56
	gStyle->SetPadRightMargin(0.15);
57
	gStyle->SetPadLeftMargin(0.12);
58
	//gStyle->SetTitleYOffset(1.4);
59
 
60
	if( strchr(plopt, 't') != NULL ) {
61
    TCanvas* canvas1 = new TCanvas("canvas1","canvas1",1000,1000);
62
    TH2F* htdc = (TH2F*) rootfile->Get("htdc");
63
    canvas1->cd();
64
    htdc->Draw("colz");
65
 
66
    TH2F* h_correctedTDC = (TH2F*) rootfile->Get("h_correctedTDC");
67
    TCanvas* canvas6 = new TCanvas("canvas6","canvas6",500,500);
68
    canvas6->cd();
69
    h_correctedTDC->Draw("colz");
70
 
71
    TH1D* channelY = htdc->ProjectionX("",54,54);
72
    channelY->SetStats(0);
73
    channelY->SetTitle(";TDC [ns];Events");
74
    channelY->GetYaxis()->SetTitleOffset(1.7);
75
    //channelY->GetXaxis()->SetRangeUser(-40,40);
76
    //channelY->Draw();
77
 
78
    TF1* f_gaus = new TF1("f_gaus","gaus(0)+gaus(3)",-10,20);
79
    f_gaus->SetParNames("Constant1","Mean1","Sigma1","Constant2","Mean2","Sigma2");
80
    f_gaus->SetParameters(channelY->GetMaximum(), channelY->GetBinCenter(channelY->GetMaximumBin()), 0.5,
81
                          channelY->GetMaximum(), channelY->GetBinCenter(channelY->GetMaximumBin())/10.0, 0.05);
82
    /*channelY->Fit(f_gaus,"0ql","",f_gaus->GetParameter(1)-0.1,f_gaus->GetParameter(1)+0.05);
83
    channelY->Fit(f_gaus,"ql","",f_gaus->GetParameter(1)-0.1,f_gaus->GetParameter(1)+0.05);
84
    channelY->Fit(f_gaus,"0qlr","",-20,20);
85
    channelY->Fit(f_gaus,"qlr","",f_gaus->GetParameter(1)-2*f_gaus->GetParameter(2),
86
                                 f_gaus->GetParameter(1)+2*f_gaus->GetParameter(2));*/
87
  }
88
 
89
  if( strchr(plopt, 'all') != NULL ) {
90
    TCanvas *canvas2 = new TCanvas("canvas2","Hits x;;",2000,2000);
91
    TCanvas *canvas3 = new TCanvas("canvas3","Hits y;;",2000,2000);
92
    canvas2->Divide(8,8);
93
    canvas3->Divide(8,8);
94
    TH1F* h_hitsx;
95
    TH1F* h_hitsy;
96
    for(int i=0; i<64; i++) {
97
      canvas2->cd(i+1);
98
      char hname[128];
99
      sprintf(hname, "hnhitsx%d", i);
100
      h_hitsx = (TH1F*)rootfile->Get(hname);
101
      h_hitsx->Draw();
102
      canvas3->cd(i+1);
103
      sprintf(hname, "hnhitsy%d", i);
104
      h_hitsy = (TH1F*)rootfile->Get(hname);
105
      h_hitsy->Draw();
106
    }
107
  }
108
 
109
  if( strchr(plopt, 'x') != NULL ) {
110
    TCanvas *canvas10 = new TCanvas("canvas10","Ch x;;",500,500);
111
    TH1F* h_hitsx;
112
    canvas10->cd();
113
    char hname[128];
114
    sprintf(hname, "hnhitsx%d", chXstart);
115
    h_hitsx = (TH1F*)rootfile->Get(hname);
116
    h_hitsx->Draw();
117
  }
118
 
119
  if( strchr(plopt, 'y') != NULL ) {
120
    TCanvas *canvas11 = new TCanvas("canvas11","Ch x;;",500,500);
121
    TH1F* h_hitsy;
122
    canvas11->cd();
123
    char hname[128];
124
    sprintf(hname, "hnhitsy%d", chXstart);
125
    h_hitsy = (TH1F*)rootfile->Get(hname);
126
    h_hitsy->Draw();
127
  }
128
 
129
  if( strstr(plopt, "share") != NULL ) {
130
   /*TCanvas *canvas4 = new TCanvas("canvas1","canvas1",1000,1000);
131
   int nChannels = chYend-chYstart+1;
132
   int ncols = nChannels/2;
133
   printf("nch %d nch\\2 %d\n", nChannels, ncols);
134
   canvas4->Divide(2,ncols);
135
   TH1F* h_hitsy;
136
   for(int i=chYstart; i<=chYend; i++){
137
     canvas4->cd(i-chYstart+1);
138
     char hname[128];
139
     int chPosition = map[0][i];
140
     sprintf(hname, "hnhitsy%d", chPosition);
141
     h_hitsy = (TH1F*)rootfile->Get(hname);
142
     h_hitsy->Draw();
143
   }*/
144
 
145
   TCanvas *canvas5 = new TCanvas("canvas5","canvas5",500,500);
146
   canvas5->cd();
147
   for(int i=chYstart; i<=chYend; i++) {
148
     TH1F* h_hitsy;
149
     char hname[128];
150
     int chPosition = map[chXstart][i];
151
     sprintf(hname, "hnhitsy%d", chPosition);
152
     h_hitsy = (TH1F*)rootfile->Get(hname);
153
     h_hitsy->SetTitle("Scan Y;y [mm]; Entries");
154
     h_hitsy->GetYaxis()->SetTitleOffset(1.3);
155
     h_hitsy->SetStats(0);
156
     if (i == chYstart)
157
      h_hitsy->Draw();
158
     else {
159
      h_hitsy->SetLineColor(i+1);
160
      h_hitsy->Draw("same");
161
     }
162
   }
163
   sprintf(fullname, "ps/%s_Yshare.eps", filename);
164
	 canvas5->SaveAs(fullname);
165
  }
166
 
167
  if (strstr(plopt, "2d") != NULL) {
168
 
169
    int nX = chXend - chXstart + 1;
170
    int nY = chYend - chYstart + 1;
171
    TCanvas* canvas7 = new TCanvas("canvas7","canvas7", nX*250,nY*250);
172
    printf("nx %d ny %d\n",nX,nY);
173
    canvas7->Divide(nX,nY);
174
    for(int i=chYstart; i<=chYend; i++) {
175
      for(int j=chXstart; j<=chXend; j++) {
176
      int canvasPosition = nX*(i-chYstart)+(j-chXstart)+1;
177
      printf("canvas %d\n",canvasPosition);
178
        canvas7->cd(canvasPosition);
179
        char hname[128];
180
        int chPosition = map[j][i];
181
        sprintf(hname, "h2d%d", chPosition);
182
        TH2F* h_2d = (TH2F*)rootfile->Get(hname);
183
        h_2d->Draw("colz");
184
      } //x
185
    }
186
  /*
187
    TCanvas* canvas8 = new TCanvas("canvas8","canvas8", 1000,1000);
188
      char hname[128];
189
      int chPosition = map[0][7];
190
      sprintf(hname, "h2d%d", chPosition);
191
      TH2F* h_2d1 = (TH2F*)rootfile->Get(hname);
192
      chPosition = map[0][8];
193
      sprintf(hname, "h2d%d", chPosition);
194
      TH2F* h_2d2 = (TH2F*)rootfile->Get(hname);
195
      h_2d1->SetOption("colz");
196
      h_2d1->Draw();
197
      h_2d2->SetOption("colz");
198
      h_2d2->Draw("same");*/
199
  }
200
 
201
  if( strstr(plopt, "sum") != NULL ) {
202
    int nX = chXend - chXstart + 1;
203
    int nY = chYend - chYstart + 1;
204
	  TCanvas* canvas12 = new TCanvas("canvas12","c2",1000,1000);
205
	  gStyle->SetOptStat(11);
206
	  //c2->Divide(1,4);
207
	  //TVirtualPad *pad=c2->cd();
208
	  //pad->SetLogz();
209
	  TH2F* h[64];
210
	  for(int i=chYstart; i<=chYend; i++) {
211
      for(int j=chXstart; j<=chXend; j++) {
212
      int chPosition = map[j][i];
213
      char hname[128];
214
	    sprintf(hname, "h2d%d", chPosition);
215
	    int histogram = nX*(i-chYstart)+(j-chXstart);
216
	    h[histogram] = (TH2F *) rootfile->Get(hname);
217
	    if (histogram) h[0]->Add(h[histogram]);
218
    }
219
    }
220
    h[0]->Draw("COLZ");
221
  }
222
 
223
  if (strstr(plopt, "beam") != NULL) {
224
 
225
  TCanvas* canvas9 = new TCanvas("canvas9","canvas9", 500,500);
226
  char hname[128];
227
  sprintf(hname, "hnhitsx%d", 36);
228
  TH1F* h_laser = (TH1F*)rootfile->Get(hname);
229
  h_laser->Draw();
230
  h_laser->SetStats(1);
231
 
232
  TF1* err = new TF1("err","[0]+[1]*TMath::Erf((x-[2])/[3])");
233
  err->SetParameters(0,h_laser->GetMaximum(),17.04,0.0001);
234
  h_laser->Fit(err,"l");
235
  }
236
 
237
  return(0);
238
}