146,27 → 146,15 |
//histograms |
char hname[256], htitle[256]; |
double adc,tdc; |
TH1F *hadc[NCH], *hadc_cut[NCH], *hadc_cut_2[NCH]; |
TH1F *htdc[NCH], *htdc_cut[NCH], *htdc_cut_2[NCH], *hctdc[NCH]; |
TH2F *h2d[NCH], *hcor[NCH]; |
TH2F *hdiffcor[NCH][NCH]; |
TH2F *hdiffcor_low[NCH][NCH]; |
TH2F *hdiffcor_hi[NCH][NCH]; |
TH2F *hadccor; |
TH2F *htdccor; |
TH2F *hcoradctdc0, *hcoradctdc1, hcoradctdc01, hcoradctdc11; |
TH1F *htesttdc1, *htesttdc2; |
TTree *ftt; |
|
TH1F *htdcdiff, *htdcdiff_cut, *htdcdiff_cut_2; |
TH1F *hadc[NCH], *hadc_cut[NCH]; |
TH1F *htdc[NCH], *htdc_cut[NCH], *hctdc[NCH]; |
TH2F *hcor[NCH]; |
TH1F *htdcdiff, *htdcdiff_cut; |
|
double ref_cut_1_lo = qdcmi; |
double ref_cut_1_hi = qdcma; |
double ref_cut_2_lo = tdcmi; |
double ref_cut_2_hi = tdcma; |
|
//kobayashi |
double t_adc0, t_tdc0, t_adc1, t_tdc1, t_ctdc; |
|
//data buffer |
char readbuf[READBUFFERLENGTH]; |
267,69 → 255,7 |
} |
|
//create histograms |
|
sprintf(hname, "htdcdiff"); |
htdcdiff = (TH1F*)gROOT->FindObject(hname); |
if(htdcdiff) delete htdcdiff; |
htdcdiff = new TH1F(hname, hname, 4096, -2048.5*TDC_BIN, 2047.5*TDC_BIN); |
//~ htdcdiff = new TH1F(hname, hname, 4096, -0.5*TDC_BIN, 4095.5*TDC_BIN); |
|
sprintf(hname, "htdcdiff_cut"); |
htdcdiff_cut = (TH1F*)gROOT->FindObject(hname); |
if(htdcdiff_cut) delete htdcdiff_cut; |
//~ htdcdiff_cut = new TH1F(hname, hname, 4096, -2048.5*TDC_BIN, 2047.5*TDC_BIN); |
htdcdiff_cut = new TH1F(hname, hname, 4096, -2048.5*TDC_BIN, 2047.5*TDC_BIN); |
//kobayashi |
//~ htdcdiff_cut = new TH1F(hname, hname, 4096, -0.5*TDC_BIN, 4095.5*TDC_BIN); |
|
sprintf(hname, "htdcdiff_cut_2"); |
htdcdiff_cut_2 = (TH1F*)gROOT->FindObject(hname); |
if(htdcdiff_cut_2) delete htdcdiff_cut_2; |
htdcdiff_cut_2 = new TH1F(hname, hname, 4096, -2048.5*TDC_BIN, 2047.5*TDC_BIN); |
//~ htdcdiff_cut_2 = new TH1F(hname, hname, 4096, -0.5*TDC_BIN, 4095.5*TDC_BIN); |
|
sprintf(hname, "hadccor"); |
hadccor = (TH2F*)gROOT->FindObject(hname); |
if(hadccor) delete hadccor; |
//~ hadccor = new TH2F(hname, hname, 256, 0, 4096, 256, 0, 4096); |
hadccor = new TH2F(hname, hname, 256, 0, 4096, 256, -32768.5*TDC_BIN, 32767.5*TDC_BIN); |
|
sprintf(hname, "htdccor"); |
htdccor = (TH2F*)gROOT->FindObject(hname); |
if(htdccor) delete hadccor; |
//~ htdccor = new TH2F(hname, hname, 512, 0, 1024*TDC_BIN, 512, 0, 1024*TDC_BIN); |
htdccor = new TH2F(hname, hname, 512, 1024*TDC_BIN, 2048*TDC_BIN, 512, 1024*TDC_BIN, 2048*TDC_BIN); |
//~ htdccor = new TH2F(hname, hname, 512, 0, 2048*TDC_BIN, 512, 0, 2048*TDC_BIN); |
//~ htdccor = new TH2F(hname, hname, 11*20+1, 15.985, 27.035, 3*40+1, 15.990,19.015); |
//~ htdccor = new TH2F(hname, hname, 512, 0, 2047.5*TDC_BIN, 3*40+1, 15.990,19.015); |
|
//kobayashi |
sprintf(hname, "hcoradctdc0"); |
hcoradctdc0 = (TH2F*)gROOT->FindObject(hname); |
hcoradctdc0 = new TH2F(hname,hname,2000,0,2000,800,-10,10); |
sprintf(hname, "hcoradctdc1"); |
hcoradctdc1 = (TH2F*)gROOT->FindObject(hname); |
hcoradctdc1 = new TH2F(hname,hname,2000,0,2000,800,-10,10); |
ftt = (TTree*)gROOT->FindObject("ftt"); |
if(ftt) delete ftt; |
ftt = new TTree("ftt","ftt"); |
ftt->Branch("t_adc0",&t_adc0,"t_adc0/D"); |
ftt->Branch("t_adc1",&t_adc1,"t_adc1/D"); |
ftt->Branch("t_tdc0",&t_tdc0,"t_tdc0/D"); |
ftt->Branch("t_tdc1",&t_tdc1,"t_tdc1/D"); |
ftt->Branch("t_ctdc",&t_ctdc,"t_ctdc/D"); |
#ifdef testpulse |
sprintf(hname, "htesttdc1"); |
htesttdc1 = (TH1F*)gROOT->FindObject(hname); |
if(htesttdc1) delete htesttdc1; |
htesttdc1 = new TH1F(hname, hname, 65536, -0.5*TDC_BIN, 65535.5*TDC_BIN); |
sprintf(hname, "htesttdc2"); |
htesttdc2 = (TH1F*)gROOT->FindObject(hname); |
if(htesttdc2) delete htesttdc2; |
htesttdc2 = new TH1F(hname, hname, 65536, -0.5*TDC_BIN, 65535.5*TDC_BIN); |
#endif |
|
for(int i=0; i<ANALYSE_CH; i++) { |
for(int i=0; i<ANALYSE_CH; i++) { |
sprintf(hname, "hadc%d", i); |
hadc[i] = (TH1F*)gROOT->FindObject(hname); |
if(hadc[i]) delete hadc[i]; |
340,18 → 266,9 |
if(hadc_cut[i]) delete hadc_cut[i]; |
hadc_cut[i] = new TH1F(hname, hname, 4096, -0.5, 4095.5); |
|
sprintf(hname, "hadc_cut_2%d", i); |
hadc_cut_2[i] = (TH1F*)gROOT->FindObject(hname); |
if(hadc_cut_2[i]) delete hadc_cut_2[i]; |
hadc_cut_2[i] = new TH1F(hname, hname, 4096, -0.5, 4095.5); |
|
sprintf(hname, "htdc%d", i); |
htdc[i] = (TH1F*)gROOT->FindObject(hname); |
if(htdc[i]) delete htdc[i]; |
//~ htdc[i] = new TH1F(hname, hname, 4096, -2048.5*TDC_BIN, 2047.5*TDC_BIN); |
//~ htdc[i] = new TH1F(hname, hname, 4096, -0.5*TDC_BIN, 4095.5*TDC_BIN); //original |
//~ htdc[i] = new TH1F(hname, hname, 65536/2, -0.5*TDC_BIN, 65535.5*TDC_BIN); //koba |
//~ htdc[i] = new TH1F(hname, hname, 65536/2, -32768.5*TDC_BIN, 32767.5*TDC_BIN); //koba |
htdc[i] = new TH1F(hname, hname, 65536, -32768.5*TDC_BIN, 32767.5*TDC_BIN); |
//~ htdc[i] = new TH1F(hname, hname, 65536, -0.5*TDC_BIN, 65535.5*TDC_BIN); |
|
358,62 → 275,35 |
sprintf(hname, "htdc_cut%d", i); |
htdc_cut[i] = (TH1F*)gROOT->FindObject(hname); |
if(htdc_cut[i]) delete htdc_cut[i]; |
//~ htdc_cut[i] = new TH1F(hname, hname, 4096, -2048.5*TDC_BIN, 2047.5*TDC_BIN); |
//~ htdc_cut[i] = new TH1F(hname, hname, 4096, -0.5*TDC_BIN, 4095.5*TDC_BIN);//original |
//~ htdc_cut[i] = new TH1F(hname, hname, 65536/2, -0.5*TDC_BIN, 65535.5*TDC_BIN); //koba |
htdc_cut[i] = new TH1F(hname, hname, 65536/2, -32768.5*TDC_BIN, 32767.5*TDC_BIN); //koba |
//~ htdc_cut[i] = new TH1F(hname, hname, 65536, -32768.5*TDC_BIN, 32767.5*TDC_BIN); |
htdc_cut[i] = new TH1F(hname, hname, 65536, -32768.5*TDC_BIN, 32767.5*TDC_BIN); |
//~ htdc_cut[i] = new TH1F(hname, hname, 65536, -0.5*TDC_BIN, 65535.5*TDC_BIN); |
|
sprintf(hname, "htdc_cut_2%d", i); |
htdc_cut_2[i] = (TH1F*)gROOT->FindObject(hname); |
if(htdc_cut_2[i]) delete htdc_cut_2[i]; |
//~ htdc_cut_2[i] = new TH1F(hname, hname, 4096, -2048.5*TDC_BIN, 2047.5*TDC_BIN); |
//~ htdc_cut_2[i] = new TH1F(hname, hname, 4096, -0.5*TDC_BIN, 4095.5*TDC_BIN);//original |
htdc_cut_2[i] = new TH1F(hname, hname, 65536, -0.5*TDC_BIN, 65535.5*TDC_BIN); //koba |
|
sprintf(hname, "hctdc%d", i); |
hctdc[i] = (TH1F*)gROOT->FindObject(hname); |
if(hctdc[i]) delete hctdc[i]; |
//~ hctdc[i] = new TH1F(hname, hname, 4096, -2048.5*TDC_BIN, 2047.5*TDC_BIN); |
//~ hctdc[i] = new TH1F(hname, hname, 65536/2, -32768.5*TDC_BIN, 32767.5*TDC_BIN); |
hctdc[i] = new TH1F(hname, hname, 65536, -32768.5*TDC_BIN, 32767.5*TDC_BIN); |
|
sprintf(hname, "h2d%d", i); |
h2d[i] = (TH2F*)gROOT->FindObject(hname); |
if(h2d[i]) delete h2d[i]; |
h2d[i] = new TH2F(hname, hname, run.nx, (run.x0-0.5*run.dx)*MIKRO_BIN, (run.x0+(run.nx-0.5)*run.dx)*MIKRO_BIN, |
run.ny, (run.y0-0.5*run.dy)*MIKRO_BIN, (run.y0+(run.ny-0.5)*run.dy)*MIKRO_BIN); |
//~ hctdc[i] = new TH1F(hname, hname, 65536, -0.5*TDC_BIN, 65535.5*TDC_BIN); |
|
sprintf(hname, "hcor%d", i); |
hcor[i] = (TH2F*)gROOT->FindObject(hname); |
if(hcor[i]) delete hcor[i]; |
//~ hcor[i] = new TH2F(hname, hname, 256, 0-0.5, 1024-0.5, 200, 10-(TDC_BIN/2), 20-(TDC_BIN/2)); |
//~ hcor[i] = new TH2F(hname, hname, 512, 0-0.5, 1024-0.5, 4096, -32768.5*TDC_BIN, 32767.5*TDC_BIN); |
//~ hcor[i] = new TH2F(hname, hname, 256, 0-0.5, 512-0.5, 160, -2-(TDC_BIN/2), 2-(TDC_BIN/2)); |
hcor[i] = new TH2F(hname, hname, 512, 0-0.5, 1024-0.5, 160, -1.5-(TDC_BIN/2), 2.5-(TDC_BIN/2)); |
|
|
for(int j=0; j<ANALYSE_CH; j++) { |
sprintf(hname, "hdiffcor_%d_%d",i,j); |
sprintf(htitle, "ch.%d - ch.%d",i,j); |
hdiffcor[i][j] = (TH2F*)gROOT->FindObject(hname); |
if(hdiffcor[i][j]) delete hdiffcor[i][j]; |
hdiffcor[i][j] = new TH2F(hname, htitle, 256, 0-0.5, 1024-0.5, 128, -6.4-(TDC_BIN/2), 6.4-(TDC_BIN/2)); |
|
sprintf(hname, "hdiffcor_low_%d_%d",i,j); |
sprintf(htitle, "ch.%d - ch.%d",i,j); |
hdiffcor_low[i][j] = (TH2F*)gROOT->FindObject(hname); |
if(hdiffcor_low[i][j]) delete hdiffcor_low[i][j]; |
hdiffcor_low[i][j] = new TH2F(hname, htitle, 256, 0-0.5, 512-0.5, 128, -6.4-(TDC_BIN/2), 6.4-(TDC_BIN/2)); |
|
sprintf(hname, "hdiffcor_hi_%d_%d",i,j); |
sprintf(htitle, "ch.%d - ch.%d",i,j); |
hdiffcor_hi[i][j] = (TH2F*)gROOT->FindObject(hname); |
if(hdiffcor_hi[i][j]) delete hdiffcor_hi[i][j]; |
hdiffcor_hi[i][j] = new TH2F(hname, htitle, 256, 0-0.5, 2048-0.5, 128, -6.4-(TDC_BIN/2), 6.4-(TDC_BIN/2)); |
} |
//~ hcor[i] = new TH2F(hname, hname, 512, 0-0.5, 1024-0.5, 160, -1.5-(TDC_BIN/2), 2.5-(TDC_BIN/2)); |
hcor[i] = new TH2F(hname, hname, 512, 0-0.5, 4096-0.5, (100/TDC_BIN)/8, -50-(TDC_BIN/2), 50-(TDC_BIN/2)); |
//~ hcor[i] = new TH2F(hname, hname, 512, 0-0.5, 4096-0.5, 256, -32768.5*TDC_BIN, 32767.5*TDC_BIN); |
//~ hcor[i] = new TH2F(hname, hname, 512, 0-0.5, 4096-0.5, 256, -0.5*TDC_BIN, 65535.5*TDC_BIN); |
} |
|
sprintf(hname, "htdcdiff"); |
htdcdiff = (TH1F*)gROOT->FindObject(hname); |
if(htdcdiff) delete htdcdiff; |
htdcdiff = new TH1F(hname, hname, 4096, -2048.5*TDC_BIN, 2047.5*TDC_BIN); |
|
sprintf(hname, "htdcdiff_cut"); |
htdcdiff_cut = (TH1F*)gROOT->FindObject(hname); |
if(htdcdiff_cut) delete htdcdiff_cut; |
htdcdiff_cut = new TH1F(hname, hname, 4096, -2048.5*TDC_BIN, 2047.5*TDC_BIN); |
|
|
break; |
|
case POSREC_ID: |
467,23 → 357,20 |
|
for(int i=0; i<ANALYSE_CH; i++) { |
tdc=((double)evtrec->data[i])*TDC_BIN + tdcoffset[i]; |
//~ tdc=((double)evtrec->data[i])*TDC_BIN; |
|
adc=(double)evtrec->data[i+NCH]; |
//~ if(i==15) printf("aaaaaaaaaaa15 norma %f\n",tdc); |
tdca[i]=tdc; |
adca[i]=adc; |
|
//~ if(ceve < 100) { |
//~ printf("[%3d] tdc[%2d] = %lf | adc[%2d] = %lf\n", ceve, i, tdc, i, adc); |
//~ } |
} |
for(int i=0; i<ANALYSE_CH; i++) { |
if(0 < adca[i]) hadc[i]->Fill(adca[i]); |
//~ if(0 < adca[i]) |
hadc[i]->Fill(adca[i]); |
//~ if( (qdcmi < adca[i]) && (adca[i] < qdcma) ) |
if(0 < tdca[i]) htdc[i]->Fill(tdca[i]-tdca[TRIGGER_CH]); |
//~ if(0 < tdca[i]) htdc[i]->Fill(tdca[i]); |
hcor[i]->Fill(adca[i],tdca[i]-tdca[TRIGGER_CH]); |
//~ if(0 < tdca[i]) htdc[i]->Fill(tdca[i]-tdca[TRIGGER_CH]); |
//~ if(0 < tdca[i]) |
htdc[i]->Fill(tdca[i]-tdca[TRIGGER_CH]); |
//~ hcor[i]->Fill(adca[i],tdca[i]); |
hcor[i]->Fill(adca[i],tdca[i]-tdca[TRIGGER_CH]); |
|
if(adca[i] > corpar[i][2]) { |
ctdca[i] = tdca[i]-tdca[TRIGGER_CH] - (corpar[i][0] + corpar[i][1]/TMath::Sqrt(adca[i] - corpar[i][2])); |
491,41 → 378,14 |
ctdca[i] = -999.9*(i+1); |
} |
//~ if(tdc_noise_cut < tdca[i]) |
double adc_max_cut = 1000; |
if(adca[i] < adc_max_cut) |
//~ double adc_max_cut = 1000; |
//~ if(adca[i] < adc_max_cut) |
hctdc[i]->Fill( ctdca[i] ); |
|
//~ if(dbg && (i<4) && (1 < tdca[0] && (1 < tdca[1]))) printf("tdca[%d] = %lf | tdca[TRG] = %lf | ctdca[i] = %lf | adca[i] = %lf\n", i, tdca[i],tdca[TRIGGER_CH],ctdca[i],adca[i]); |
if(dbg && (i<4) ) printf("[%4d] tdca[%d] = %lf | tdca[TRG] = %lf | ctdca[i] = %lf | adca[i] = %lf\n", ceve, i, tdca[i],tdca[TRIGGER_CH],ctdca[i],adca[i]); |
|
if( (qdcmi < adca[i]) && (adca[i] < qdcma) && (tdcmi < tdca[i]) && (tdca[i] < tdcma)) { |
h2d[i]->Fill(pos.xset*MIKRO_BIN, pos.yset*MIKRO_BIN); |
} |
} |
|
//~ printf("aaaaaaaaaaa15 %f\n",((double)evtrec->data[15])); printf("aaaaaaaaaaa15 %f\n",((double)evtrec->data[15])*TDC_BIN); |
//~ printf("aaaaaaaaaaa30 %d\n",evtrec->data[30]); |
//~ printf("aaaaaaaaaaa31 %d\n",evtrec->data[31]); |
//~ printf("aaaaaaaaaaa15 %f\n",tdca[15]); |
//~ printf("aaaaaaaaaaa30 %d\n",tdca[30]); |
//~ printf("aaaaaaaaaaa31 %d\n",tdca[31]); |
//~ |
//kobayashi |
ctdcdiff = ctdca[MPPC_2_CH] - ctdca[MPPC_1_CH] +deltaT_ctdcdiff; |
tdcdiff = tdca[MPPC_2_CH] - tdca[MPPC_1_CH]; |
t_ctdc = ctdcdiff; |
t_tdc0=tdca[0]; |
t_tdc1=tdca[1]; |
t_adc0=adca[15]; |
t_adc1=adca[1]; |
|
hcoradctdc0->Fill(adca[0],ctdcdiff); |
hcoradctdc1->Fill(adca[1],ctdcdiff); |
ftt->Fill(); |
#ifdef testpulse |
htesttdc1->Fill(tdca[16]-tdca[14]); |
htesttdc2->Fill(tdca[14]-tdca[15]); |
#endif |
|
//cut za timing: |
#define CUT_1_CONDITION ( (qdcmi < adca[MPPC_1_CH]) && (adca[MPPC_1_CH] < qdcma) && (tdcmi < adca[MPPC_2_CH]) && (adca[MPPC_2_CH] < tdcma) ) |
557,9 → 417,6 |
htdcdiff_cut->Fill(ctdcdiff); |
//~ htdcdiff_cut->Fill(tdcdiff); |
} |
if( CUT_2_CONDITION ) { |
htdcdiff_cut_2->Fill(ctdcdiff); |
} |
} |
|
for(int i=0; i<ANALYSE_CH; i++) { |
574,37 → 431,9 |
if( (qdcmi < adca[i]) && (adca[i] < qdcma) && (adca[i] > corpar[i][2]) ) |
htdc_cut[i]->Fill(ctdca[i]); |
if( (tdcmi < ctdca[i]) && (ctdca[i] < tdcma) ) |
hadc_cut[i]->Fill(adca[i]); |
|
if( CUT_2_CONDITION ) { |
htdc_cut_2[i]->Fill(tdca[i]); |
hadc_cut_2[i]->Fill(adca[i]); |
hadc_cut_2[i]->Fill(adca[i]); |
} |
hadc_cut[i]->Fill(adca[i]); |
} |
|
//~ hadccor->Fill(adca[REF_CH], adca[MPPC_1_CH]); |
hadccor->Fill(adca[REF_CH], tdca[8]-tdca[31]); |
|
htdccor->Fill(tdca[MPPC_1_CH], tdca[MPPC_2_CH]); |
|
|
// --------------- corelation plots for time-walk correction --------------- |
|
if( (tdc_noise_cut<tdca[MPPC_1_CH]) && (tdc_noise_cut<tdca[MPPC_2_CH]) && (adc_cor_min<adca[MPPC_2_CH]) ) { |
hdiffcor[MPPC_1_CH][MPPC_2_CH]->Fill(adca[MPPC_1_CH],tdca[MPPC_1_CH]-ctdca[MPPC_2_CH]); |
|
hdiffcor_low[MPPC_1_CH][MPPC_2_CH]->Fill(adca[MPPC_1_CH],tdca[MPPC_1_CH]-ctdca[MPPC_2_CH]); |
hdiffcor_hi[MPPC_1_CH][MPPC_2_CH]->Fill(adca[MPPC_1_CH],tdca[MPPC_1_CH]-ctdca[MPPC_2_CH]); |
} |
|
if( (tdc_noise_cut<tdca[MPPC_2_CH]) && (tdc_noise_cut<tdca[MPPC_1_CH]) && (adc_cor_min<adca[MPPC_1_CH]) ) { |
hdiffcor[MPPC_2_CH][MPPC_1_CH]->Fill(adca[MPPC_2_CH],tdca[MPPC_2_CH]-ctdca[MPPC_1_CH]); |
|
hdiffcor_low[MPPC_2_CH][MPPC_1_CH]->Fill(adca[MPPC_2_CH],tdca[MPPC_2_CH]-ctdca[MPPC_1_CH]); |
hdiffcor_hi[MPPC_2_CH][MPPC_1_CH]->Fill(adca[MPPC_2_CH],tdca[MPPC_2_CH]-ctdca[MPPC_1_CH]); |
} |
|
// events ------------------------------------------------------------------------------------------ |
|
break; |
673,11 → 502,6 |
|
if(dbg) return 1; |
if(rootfile) { |
#ifdef testpulse |
printf("<<< EASIROC Disc : %f [ps]\n", htesttdc1->GetRMS()*1000); |
printf("<<< TEST Disc : %f [ps]\n", htesttdc2->GetRMS()*1000); |
#endif |
ftt->Write(); |
rootfile->Write(); |
//cout<<"maximum x value = " << htdcdiff->GetXaxis()->GetBinCenter( htdcdiff->GetMaximumBin()) <<endl; |
printf("Saved to %s\n", fnameroot); |