Rev 215 | Rev 218 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 215 | Rev 216 | ||
---|---|---|---|
Line 10... | Line 10... | ||
10 | // Program za analizo podatkov zajetih z AITSiPMDAQ |
10 | // Program za analizo podatkov zajetih z AITSiPMDAQ |
11 | 11 | ||
12 | int aitana( const char *fname="a1.dat", int range=10, float cut=500, int *offset = NULL) |
12 | int aitana( const char *fname="a1.dat", int range=10, float cut=500, int *offset = NULL) |
13 | { |
13 | { |
14 | int debug=0; |
14 | int debug=0; |
- | 15 | //int off[4]={507,521,497,459}; |
|
- | 16 | int off[4]={87,125,95,80}; |
|
- | 17 | if (offset) for (int i=0;i<4;i++){off[i]=offset[i];}; |
|
15 | 18 | ||
16 | FILE *fin; |
- | |
17 | - | ||
18 | unsigned short hdr[2]; |
- | |
19 | - | ||
20 | int off[4]={507,521,497,459}; |
- | |
21 | if (offset) for (int i=0;i<4;i++){off[i]=offset[i];}; |
- | |
22 | // gStyle->SetOptStat(1111111); |
- | |
23 | gStyle->SetOptStat(0); |
19 | gStyle->SetOptStat(0); |
24 | // gStyle->SetPalette(52); |
- | |
25 | 20 | ||
26 | char rootname[0xFF]; |
21 | char rootname[0xFF]; |
27 | sprintf(rootname, "%s.root", fname); |
22 | sprintf(rootname, "%s.root", fname); |
28 | TFile *froot = new TFile(rootname,"RECREATE"); |
23 | TFile *froot = new TFile(rootname,"RECREATE"); |
29 | char histname[128]; |
24 | char histname[128]; |
30 | TLegend * leg = new TLegend(0.8, 0.8, 1, 1); |
25 | TLegend * leg = new TLegend(0.8, 0.8, 1, 1); |
Line 32... | Line 27... | ||
32 | TH1F *hadcsum; |
27 | TH1F *hadcsum; |
33 | TH1F *hadcsumx; |
28 | TH1F *hadcsumx; |
34 | TH1F *hadcsumy; |
29 | TH1F *hadcsumy; |
35 | TH2F *hxy; |
30 | TH2F *hxy; |
36 | TH2F *h2d=NULL; |
31 | TH2F *h2d=NULL; |
- | 32 | TH2F *h2dx=NULL; |
|
- | 33 | TH2F *h2dy=NULL; |
|
37 | TH2F *hxcorr=NULL; |
34 | TH2F *hxcorr=NULL; |
38 | TH2F *hycorr=NULL; |
35 | TH2F *hycorr=NULL; |
39 |
|
36 | |
40 | 37 | ||
41 | for (int i=0; i<4; i++) { |
38 | for (int i=0; i<4; i++) { |
42 | sprintf(histname,"adc%d",i); |
39 | sprintf(histname,"adc%d",i); |
43 | hadc[i]=new TH1F(histname,histname,200,0.5,200*range+0.5); |
40 | hadc[i]=new TH1F(histname,histname,200,0.5,200*range+0.5); |
44 | } |
41 | } |
45 | - | ||
46 | sprintf(histname,"adcsum"); |
- | |
47 | hadcsum=new TH1F( |
42 | hadcsum=new TH1F("adcsum","adcsum",200,0.5,8*200*range+0.5); |
48 | - | ||
49 | sprintf(histname,"adcsumx"); |
- | |
50 | hadcsumx=new TH1F( |
43 | hadcsumx=new TH1F("adcsumx","adcsumx",200,0.5,200*range+0.5); |
51 | - | ||
52 | sprintf(histname,"adcsumy"); |
- | |
53 | hadcsumy=new TH1F( |
44 | hadcsumy=new TH1F("adcsumy","adcsumy",200,0.5,200*range+0.5); |
54 | - | ||
55 | sprintf(histname,"hxy"); |
- | |
56 | hxy=new TH2F( |
45 | hxy=new TH2F("hxy","Center of gravity;ycog(a.u.);xcog(a.u.)",200,0,1,200,0,1); |
57 | 46 | ||
58 | - | ||
59 | - | ||
60 | fin=fopen(fname,"rb"); |
47 | FILE *fin=fopen(fname,"rb"); |
61 | if (fin==NULL) { |
48 | if (fin==NULL) { |
62 | printf("Error opening file %s\n",fname); |
49 | printf("Error opening file %s\n",fname); |
63 | return 0; |
50 | return 0; |
64 | } |
51 | } |
65 | 52 | ||
- | 53 | unsigned short hdr[2]; |
|
66 | int pos[7]={0,0,0,0,0,0,0}; |
54 | int pos[7]={0,0,0,0,0,0,0}; |
67 | int poshdr[9]={0,0,0,0,0,0,0,0,0}; |
55 | int poshdr[9]={0,0,0,0,0,0,0,0,0}; |
68 | float b[4], sum=0; |
56 | float b[4], sum=0; |
69 | unsigned short a[4]; |
57 | unsigned short a[4]; |
- | 58 | unsigned short buf[10000]; |
|
70 | 59 | float posx=0, posy=0; |
|
71 | while(!feof(fin)) { |
60 | while(!feof(fin)) { |
72 | 61 | ||
73 | int stat=fread(hdr,1,4,fin); |
62 | int stat=fread(hdr,1,4,fin); |
74 | 63 | ||
75 | //if (hdr[0]!= 1 ) printf("#%d %d\n",hdr[0], hdr[1] ); |
64 | //if (hdr[0]!= 1 ) printf("#%d %d\n",hdr[0], hdr[1] ); |
Line 89... | Line 78... | ||
89 | unsigned short *adc=&buf[i*4]; |
78 | unsigned short *adc=&buf[i*4]; |
90 | sum=0; |
79 | sum=0; |
91 | for (int j=0;j<4;j++){ |
80 | for (int j=0;j<4;j++){ |
92 | a[j]=adc[j]&0xFFF; |
81 | a[j]=adc[j]&0xFFF; |
93 | sum+=a[j]; |
82 | sum+=a[j]; |
94 | hadc[j]->Fill(a[j]); |
83 | hadc[j]->Fill(a[j]); |
95 | //const int off[4]={87,125,95,80}; |
- | |
96 | - | ||
97 | - | ||
98 | b[j]=a[j]-off[j]+10; |
84 | b[j]=a[j]-off[j]+10; |
99 | sum+=b[j]; |
85 | sum+=b[j]; |
100 | } |
86 | } |
101 | hadcsum->Fill(sum); |
87 | hadcsum->Fill(sum); |
102 | hadcsumx->Fill(a[0]+a[1]); |
88 | hadcsumx->Fill(a[0]+a[1]); |
103 | hadcsumy->Fill(a[2]+a[3]); |
89 | hadcsumy->Fill(a[2]+a[3]); |
104 | float y = (b[0]+b[1])? b[0]/(b[0]+b[1]) : 0; |
90 | float y = (b[0]+b[1])? b[0]/(b[0]+b[1]) : 0; |
105 | float x = (b[2]+b[3])? b[2]/(b[2]+b[3]) : 0; |
91 | float x = (b[2]+b[3])? b[2]/(b[2]+b[3]) : 0; |
106 | if (h2d) h2d->Fill( |
92 | if (h2d) h2d->Fill(posx,posy,sum); |
- | 93 | if (h2dx) h2dx->Fill(posx,posy,b[0]+b[1]); |
|
- | 94 | if (h2dy) h2dy->Fill(posx,posy,b[2]+b[3]); |
|
- | 95 | ||
107 | if (sum>cut) { |
96 | if (sum>cut) { |
108 | hxy->Fill(y,x); |
97 | hxy->Fill(y,x); |
109 | if (hxcorr) hxcorr->Fill(pos[0],y); |
98 | if (hxcorr) hxcorr->Fill(pos[0],y); |
110 | if (hycorr) hycorr->Fill(pos[1],x); |
99 | if (hycorr) hycorr->Fill(pos[1],x); |
111 | } |
100 | } |
Line 114... | Line 103... | ||
114 | break; |
103 | break; |
115 | case 0x2:{ |
104 | case 0x2:{ |
116 | int *p= (int *) &buf[0]; |
105 | int *p= (int *) &buf[0]; |
117 | for (int k=0;k<7;k++) pos[k]=p[k]; |
106 | for (int k=0;k<7;k++) pos[k]=p[k]; |
118 | printf("Position: %d %d\n",pos[3], pos[4] ); |
107 | printf("Position: %d %d\n",pos[3], pos[4] ); |
- | 108 | posx = poshdr[0]+pos[3]* poshdr[3]; |
|
- | 109 | posy = poshdr[1]+pos[4]* poshdr[4]; |
|
119 | } |
110 | } |
120 | break; |
111 | break; |
121 | case 0x3:{ |
112 | case 0x3:{ |
122 | int *p= (int *) &buf[0]; |
113 | int *p= (int *) &buf[0]; |
123 | for (int k=0;k<9;k++) poshdr[k]=p[k]; |
114 | for (int k=0;k<9;k++) poshdr[k]=p[k]; |
124 |
|
115 | |
125 | h2d=new TH2F( |
116 | h2d=new TH2F("h2d","Position dependency of sum;x(step);y(step)", |
- | 117 | poshdr[6],poshdr[0]-poshdr[3]*0.5 ,poshdr[0]+poshdr[6]*(poshdr[3]-0.5), |
|
126 |
|
118 | poshdr[7],poshdr[1]-poshdr[4]*0.5 ,poshdr[1]+poshdr[7]*(poshdr[4]-0.5) ); |
127 | 119 | ||
- | 120 | h2dx=new TH2F("h2dx","Position dependency of xsum;x(step);y(step)", |
|
- | 121 | poshdr[6],poshdr[0]-poshdr[3]*0.5 ,poshdr[0]+poshdr[6]*(poshdr[3]-0.5), |
|
- | 122 | poshdr[7],poshdr[1]-poshdr[4]*0.5 ,poshdr[1]+poshdr[7]*(poshdr[4]-0.5) ); |
|
- | 123 | ||
- | 124 | h2dy=new TH2F("h2dy","Position dependency of ysum;x(step);y(step)", |
|
- | 125 | poshdr[6],poshdr[0]-poshdr[3]*0.5 ,poshdr[0]+poshdr[6]*(poshdr[3]-0.5), |
|
- | 126 | poshdr[7],poshdr[1]-poshdr[4]*0.5 ,poshdr[1]+poshdr[7]*(poshdr[4]-0.5) ); |
|
- | 127 | ||
128 |
|
128 | |
129 | hxcorr=new TH2F( |
129 | hxcorr=new TH2F("hxcorr","Correlation stage position vs cog;x(step);xcog(a.u.)", |
130 |
|
130 | poshdr[6],poshdr[0]-poshdr[3]*0.5 ,poshdr[0]+poshdr[6]*(poshdr[3]-0.5), 100 , 0, 1); |
131 | 131 | ||
132 | sprintf(histname,"hycorr"); |
- | |
133 | hycorr=new TH2F( |
132 | hycorr=new TH2F("hycorr","Correlation stage position vs cog;y(step);ycog(a.u.)", |
134 |
|
133 | poshdr[7],poshdr[1]-poshdr[4]*0.5 ,poshdr[1]+poshdr[7]*(poshdr[4]-0.5), 100 , 0, 1); |
135 | } |
134 | } |
136 | break; |
135 | break; |
137 | default: break; |
136 | default: break; |
138 | } |
137 | } |
139 | } |
138 | } |
Line 163... | Line 162... | ||
163 | 162 | ||
164 | c= new TCanvas("c1","ait reconstruction",750,50,700,700); |
163 | c= new TCanvas("c1","ait reconstruction",750,50,700,700); |
165 | c->Divide(2,3); |
164 | c->Divide(2,3); |
166 | if (!h2d){ |
165 | if (!h2d){ |
167 | c->Clear(); |
166 | c->Clear(); |
168 | c->Divide(1, |
167 | c->Divide(1,4); |
169 | } |
168 | } |
170 |
|
169 | |
171 | 170 | ||
172 | hxy->SetMinimum(-1); |
171 | hxy->SetMinimum(-1); |
173 | hxy->SetMaximum(1000); |
172 | hxy->SetMaximum(1000); |
174 | c->cd(1)->SetLogz(); hxy->DrawCopy("colz"); |
173 | c->cd(1)->SetLogz(); hxy->DrawCopy("colz"); |
- | 174 | c->cd(4)->SetLogy(); hadcsum->DrawCopy(); |
|
175 | 175 | ||
176 | if (h2d){ |
176 | if (h2d){ |
177 | hxcorr->SetMinimum(-1); |
177 | hxcorr->SetMinimum(-1); |
178 | hycorr->SetMinimum(-1); |
178 | hycorr->SetMinimum(-1); |
179 | c->cd( |
179 | c->cd(5); hxcorr->DrawCopy("colz"); |
180 | c->cd( |
180 | c->cd(6); hycorr->DrawCopy("colz"); |
181 | c->cd(6); h2d->DrawCopy("colz"); |
- | |
182 | } |
181 | } |
183 | TH1D *px = hxy->ProjectionX("_px",0,-1); |
182 | TH1D *px = hxy->ProjectionX("_px",0,-1); |
184 | c->cd(2); px->DrawCopy(); |
183 | c->cd(2); px->DrawCopy(); |
- | 184 | ||
- | 185 | TH1D *py = hxy->ProjectionY("_py",0,-1); |
|
- | 186 | c->cd(3); py->DrawCopy(); |
|
- | 187 | ||
185 | c->Modified(); |
188 | c->Modified(); |
186 | c->Update(); |
189 | c->Update(); |
187 | c->Print(rootname,"pdf"); |
190 | c->Print(rootname,"pdf"); |
- | 191 | ||
- | 192 | ||
- | 193 | if (h2d){ |
|
- | 194 | c= new TCanvas("c2","position dependence sum, xsum, ysum",750,50,700,700); |
|
- | 195 | c->Divide(1,3); |
|
- | 196 | c->cd(1); h2d->DrawCopy("colz"); |
|
- | 197 | c->cd(2); h2dx->DrawCopy("colz"); |
|
- | 198 | c->cd(3); h2dy->DrawCopy("colz"); |
|
- | 199 | c->Modified(); |
|
- | 200 | c->Update(); |
|
- | 201 | c->Print(rootname,"pdf"); |
|
- | 202 | } |
|
- | 203 | ||
188 | c->Print(TString(rootname) + "]","pdf"); |
204 | c->Print(TString(rootname) + "]","pdf"); |
189 | froot->Write(); |
205 | froot->Write(); |
190 | froot->Close(); |
206 | froot->Close(); |
191 | if (fin) fclose(fin); |
207 | if (fin) fclose(fin); |
192 | 208 |