Subversion Repositories f9daq

Compare Revisions

Ignore whitespace Rev 215 → Rev 216

/cvi/instr/AitSipmDAQ/data/aitana.cxx
12,17 → 12,12
int aitana( const char *fname="a1.dat", int range=10, float cut=500, int *offset = NULL)
{
int debug=0;
//int off[4]={507,521,497,459};
int off[4]={87,125,95,80};
if (offset) for (int i=0;i<4;i++){off[i]=offset[i];};
 
FILE *fin;
 
unsigned short hdr[2];
 
int off[4]={507,521,497,459};
if (offset) for (int i=0;i<4;i++){off[i]=offset[i];};
// gStyle->SetOptStat(1111111);
gStyle->SetOptStat(0);
// gStyle->SetPalette(52);
 
char rootname[0xFF];
sprintf(rootname, "%s.root", fname);
TFile *froot = new TFile(rootname,"RECREATE");
34,40 → 29,34
TH1F *hadcsumy;
TH2F *hxy;
TH2F *h2d=NULL;
TH2F *h2dx=NULL;
TH2F *h2dy=NULL;
TH2F *hxcorr=NULL;
TH2F *hycorr=NULL;
unsigned short buf[10000];
for (int i=0; i<4; i++) {
sprintf(histname,"adc%d",i);
hadc[i]=new TH1F(histname,histname,200,0.5,200*range+0.5);
}
sprintf(histname,"adcsum");
hadcsum=new TH1F(histname,histname,200,0.5,8*200*range+0.5);
sprintf(histname,"adcsumx");
hadcsumx=new TH1F(histname,histname,200,0.5,200*range+0.5);
sprintf(histname,"adcsumy");
hadcsumy=new TH1F(histname,histname,200,0.5,200*range+0.5);
sprintf(histname,"hxy");
hxy=new TH2F(histname,"Center of gravity;ycog(a.u.);xcog(a.u.)",200,0,1,200,0,1);
 
fin=fopen(fname,"rb");
hadcsum=new TH1F("adcsum","adcsum",200,0.5,8*200*range+0.5);
hadcsumx=new TH1F("adcsumx","adcsumx",200,0.5,200*range+0.5);
hadcsumy=new TH1F("adcsumy","adcsumy",200,0.5,200*range+0.5);
hxy=new TH2F("hxy","Center of gravity;ycog(a.u.);xcog(a.u.)",200,0,1,200,0,1);
FILE *fin=fopen(fname,"rb");
if (fin==NULL) {
printf("Error opening file %s\n",fname);
return 0;
}
int pos[7]={0,0,0,0,0,0,0};
unsigned short hdr[2];
int pos[7]={0,0,0,0,0,0,0};
int poshdr[9]={0,0,0,0,0,0,0,0,0};
float b[4], sum=0;
unsigned short a[4];
unsigned short buf[10000];
float posx=0, posy=0;
while(!feof(fin)) {
int stat=fread(hdr,1,4,fin);
91,10 → 80,7
for (int j=0;j<4;j++){
a[j]=adc[j]&0xFFF;
sum+=a[j];
hadc[j]->Fill(a[j]);
//const int off[4]={87,125,95,80};
hadc[j]->Fill(a[j]);
b[j]=a[j]-off[j]+10;
sum+=b[j];
}
103,7 → 89,10
hadcsumy->Fill(a[2]+a[3]);
float y = (b[0]+b[1])? b[0]/(b[0]+b[1]) : 0;
float x = (b[2]+b[3])? b[2]/(b[2]+b[3]) : 0;
if (h2d) h2d->Fill(pos[0],pos[1],sum);
if (h2d) h2d->Fill(posx,posy,sum);
if (h2dx) h2dx->Fill(posx,posy,b[0]+b[1]);
if (h2dy) h2dy->Fill(posx,posy,b[2]+b[3]);
if (sum>cut) {
hxy->Fill(y,x);
if (hxcorr) hxcorr->Fill(pos[0],y);
116,22 → 105,32
int *p= (int *) &buf[0];
for (int k=0;k<7;k++) pos[k]=p[k];
printf("Position: %d %d\n",pos[3], pos[4] );
posx = poshdr[0]+pos[3]* poshdr[3];
posy = poshdr[1]+pos[4]* poshdr[4];
}
break;
case 0x3:{
int *p= (int *) &buf[0];
for (int k=0;k<9;k++) poshdr[k]=p[k];
sprintf(histname,"h2d");
h2d=new TH2F(histname,"Position dependency of sum;x(step);y(step)",poshdr[6],poshdr[0]-poshdr[3]*0.5 ,poshdr[0]+poshdr[6]*(poshdr[3]-0.5),
poshdr[7],poshdr[1]-poshdr[4]*0.5 ,poshdr[1]+poshdr[7]*(poshdr[4]-0.5) );
h2d=new TH2F("h2d","Position dependency of sum;x(step);y(step)",
poshdr[6],poshdr[0]-poshdr[3]*0.5 ,poshdr[0]+poshdr[6]*(poshdr[3]-0.5),
poshdr[7],poshdr[1]-poshdr[4]*0.5 ,poshdr[1]+poshdr[7]*(poshdr[4]-0.5) );
sprintf(histname,"hxcorr");
hxcorr=new TH2F(histname,"Correlation stage position vs cog;x(step);xcog(a.u.)",
poshdr[6],poshdr[0]-poshdr[3]*0.5 ,poshdr[0]+poshdr[6]*(poshdr[3]-0.5), 100 , 0, 1);
sprintf(histname,"hycorr");
hycorr=new TH2F(histname,"Correlation stage position vs cog;y(step);ycog(a.u.)",
poshdr[7],poshdr[1]-poshdr[4]*0.5 ,poshdr[1]+poshdr[7]*(poshdr[4]-0.5), 100 , 0, 1);
h2dx=new TH2F("h2dx","Position dependency of xsum;x(step);y(step)",
poshdr[6],poshdr[0]-poshdr[3]*0.5 ,poshdr[0]+poshdr[6]*(poshdr[3]-0.5),
poshdr[7],poshdr[1]-poshdr[4]*0.5 ,poshdr[1]+poshdr[7]*(poshdr[4]-0.5) );
h2dy=new TH2F("h2dy","Position dependency of ysum;x(step);y(step)",
poshdr[6],poshdr[0]-poshdr[3]*0.5 ,poshdr[0]+poshdr[6]*(poshdr[3]-0.5),
poshdr[7],poshdr[1]-poshdr[4]*0.5 ,poshdr[1]+poshdr[7]*(poshdr[4]-0.5) );
hxcorr=new TH2F("hxcorr","Correlation stage position vs cog;x(step);xcog(a.u.)",
poshdr[6],poshdr[0]-poshdr[3]*0.5 ,poshdr[0]+poshdr[6]*(poshdr[3]-0.5), 100 , 0, 1);
hycorr=new TH2F("hycorr","Correlation stage position vs cog;y(step);ycog(a.u.)",
poshdr[7],poshdr[1]-poshdr[4]*0.5 ,poshdr[1]+poshdr[7]*(poshdr[4]-0.5), 100 , 0, 1);
}
break;
default: break;
165,26 → 164,43
c->Divide(2,3);
if (!h2d){
c->Clear();
c->Divide(1,3);
c->Divide(1,4);
}
c->cd(3)->SetLogy(); hadcsum->DrawCopy();
hxy->SetMinimum(-1);
hxy->SetMaximum(1000);
c->cd(1)->SetLogz(); hxy->DrawCopy("colz");
c->cd(4)->SetLogy(); hadcsum->DrawCopy();
if (h2d){
hxcorr->SetMinimum(-1);
hycorr->SetMinimum(-1);
c->cd(4); hxcorr->DrawCopy("colz");
c->cd(5); hycorr->DrawCopy("colz");
c->cd(6); h2d->DrawCopy("colz");
c->cd(5); hxcorr->DrawCopy("colz");
c->cd(6); hycorr->DrawCopy("colz");
}
TH1D *px = hxy->ProjectionX("_px",0,-1);
c->cd(2); px->DrawCopy();
TH1D *py = hxy->ProjectionY("_py",0,-1);
c->cd(3); py->DrawCopy();
c->Modified();
c->Update();
c->Print(rootname,"pdf");
if (h2d){
c= new TCanvas("c2","position dependence sum, xsum, ysum",750,50,700,700);
c->Divide(1,3);
c->cd(1); h2d->DrawCopy("colz");
c->cd(2); h2dx->DrawCopy("colz");
c->cd(3); h2dy->DrawCopy("colz");
c->Modified();
c->Update();
c->Print(rootname,"pdf");
}
c->Print(TString(rootname) + "]","pdf");
froot->Write();
froot->Close();