| /cvi/apps/l2d2_easyroc/Analysis/Analysis/data/rok0 |
|---|
| Cannot display: file marked as a binary type. |
| svn:mime-type = application/octet-stream |
| Property changes: |
| Added: svn:mime-type |
| +application/octet-stream |
| \ No newline at end of property |
| /cvi/apps/l2d2_easyroc/Analysis/Analysis/data/rok1 |
|---|
| Cannot display: file marked as a binary type. |
| svn:mime-type = application/octet-stream |
| Property changes: |
| Added: svn:mime-type |
| +application/octet-stream |
| \ No newline at end of property |
| /cvi/apps/l2d2_easyroc/Analysis/Analysis/data/rok2 |
|---|
| Cannot display: file marked as a binary type. |
| svn:mime-type = application/octet-stream |
| Property changes: |
| Added: svn:mime-type |
| +application/octet-stream |
| \ No newline at end of property |
| /cvi/apps/l2d2_easyroc/Analysis/Analysis/data/rok3 |
|---|
| Cannot display: file marked as a binary type. |
| svn:mime-type = application/octet-stream |
| Property changes: |
| Added: svn:mime-type |
| +application/octet-stream |
| \ No newline at end of property |
| /cvi/apps/l2d2_easyroc/Analysis/Analysis/e2r.cpp |
|---|
| 0,0 → 1,144 |
| #include "stdio.h" |
| #include "TROOT.h" |
| #include "TSystem.h" |
| #include "TFile.h" |
| #include "TH1F.h" |
| #include "TH2F.h" |
| #include "TF1.h" |
| #include "TMath.h" |
| #define NCH 32 |
| #define HEADER_WORD_1 0xFFFF |
| #define HEADER_WORD_2 0xEA0C |
| #define ID_ADC_HG 0x81 |
| #define ID_ADC_LG 0x60 |
| #define ID_TDC 0xCC |
| #define PRINT_FREQUENCY 10000 |
| void e2r(char* dfile0="test", int dbg=0) |
| { |
| char fullname[256], sbuff[256]; |
| FILE *dfp; |
| char dfile[256]; |
| sprintf(dfile, "data/%s", dfile0); |
| if((dfp=fopen(dfile,"rb")) == NULL) { |
| printf("Cannot open data file %s !!!\n", dfile); |
| return; |
| } else { |
| printf("Opened data file %s.\n", dfile); |
| } |
| if(sizeof(int) != 4) { |
| printf("sizeof(int) != 4, sizeof(int) = %d !!!\n", sizeof(int)); |
| return; |
| } |
| int dum32; |
| char hname[256], htitle[256]; |
| TH1F *htdc[2][NCH], *hadc_hg[NCH], *hadc_lg[NCH]; |
| //opens ROOT file |
| TFile *rootfile; char fnameroot[256]; |
| sprintf(fnameroot, "root/%s.root", dfile0); |
| //rootfile = (TFile *) gROOT->FindObjectAny(dfile0); |
| //if (rootfile!=NULL) {printf("!!!\n");rootfile->Close();} |
| //rootfile = new TFile(fnameroot); |
| //if(rootfile) rootfile->Close(); |
| rootfile = new TFile(fnameroot,"RECREATE",dfile0); |
| for(int i=0; i<NCH; i++) { |
| sprintf(hname, "htdc_le_%d", i); |
| htdc[0][i] = (TH1F*)gROOT->FindObject(hname); |
| if(htdc[0][i]) delete htdc[0][i]; |
| htdc[0][i] = new TH1F(hname, hname, 256, -0.5, 255.5); |
| sprintf(hname, "htdc_te_%d", i); |
| htdc[1][i] = (TH1F*)gROOT->FindObject(hname); |
| if(htdc[1][i]) delete htdc[1][i]; |
| htdc[1][i] = new TH1F(hname, hname, 256, -0.5, 255.5); |
| sprintf(hname, "hadc_hg%d", i); |
| hadc_hg[i] = (TH1F*)gROOT->FindObject(hname); |
| if(hadc_hg[i]) delete hadc_hg[i]; |
| hadc_hg[i] = new TH1F(hname, hname, 4096, -0.5, 4095.5); |
| sprintf(hname, "hadc_lg%d", i); |
| hadc_lg[i] = (TH1F*)gROOT->FindObject(hname); |
| if(hadc_lg[i]) delete hadc_lg[i]; |
| hadc_lg[i] = new TH1F(hname, hname, 4096, -0.5, 4095.5); |
| } |
| // ------------- data ---------------------------------------------------- |
| int ceve = 0; |
| while(!feof(dfp)) { |
| fread( &dum32, sizeof(int), 1, dfp); |
| int hw1 = (dum32 >> 16) & 0xFFFF; |
| int hw2 = dum32 & 0xFFFF; |
| if( (hw1 == HEADER_WORD_1) && (hw2 == HEADER_WORD_2) ) { |
| fread( &dum32, sizeof(int), 1, dfp); |
| int Number_of_word = dum32 & 0xFFFF; |
| fread( &dum32, sizeof(int), 1, dfp); |
| int EventCounter = (dum32 >> 16) & 0xFFFF; |
| if(dbg) printf("\n>>>>>> Number_of_word = %d | EventCounter = %d\n", Number_of_word, EventCounter); |
| //~ else if( !(EventCounter%PRINT_FREQUENCY) ) printf(" EventConter = %d\n", EventCounter); |
| else if( !(EventCounter%PRINT_FREQUENCY) ) printf("."); |
| ceve++; |
| continue; |
| } |
| int id = (dum32 >> 24) & 0xFF; |
| int ch, overflow, edge, data; |
| switch(id) { |
| case ID_ADC_HG: |
| ch = (dum32 >> 16) & 0x1F; |
| overflow = (dum32 >> 13) & 0x1; |
| data = (dum32) & 0xFFF; |
| //~ printf("ID_ADC_HG: ch = %d | X = %d | data = %d\n", ch, overflow, data); |
| if(dbg) printf("HG[%2d]=%4d ", ch, data); |
| hadc_hg[ch]->Fill(data); |
| break; |
| case ID_ADC_LG: |
| ch = (dum32 >> 16) & 0x1F; |
| overflow = (dum32 >> 13) & 0x1; |
| data = (dum32) & 0xFFF; |
| //~ printf("ID_ADC_LG: ch = %d | X = %d | data = %d\n", ch, overflow, data); |
| if(dbg) printf("LG[%2d]=%4d ", ch, data); |
| hadc_lg[ch]->Fill(data); |
| break; |
| case ID_TDC: |
| ch = (dum32 >> 16) & 0x1F; |
| edge = (dum32 >> 15) & 0x1; |
| data = (dum32) & 0x3FFF; |
| printf("ID_TDC: ch = %d | X = %d | data = %d\n", ch, overflow, data); |
| if(edge < 2) htdc[edge][ch]->Fill(data); |
| break; |
| default: |
| printf("default: dum32 = 0x%X!!!\n", dum32); |
| break; |
| } |
| //~ ceve++; |
| //~ if( !(ceve%PRINT_FREQUENCY) ) printf("."); |
| if(dbg && (ceve > dbg) ) break; |
| } |
| printf("\nProcessed events = %d\n", ceve); |
| // ------------------------------------------------------------------------ |
| if(dfp) fclose(dfp); |
| if(dbg) return; |
| if(rootfile) { |
| rootfile->Write(); |
| printf("Saved to %s\n", fnameroot); |
| rootfile->Close(); |
| } |
| gSystem->Exit(1); |
| } |
| /cvi/apps/l2d2_easyroc/Analysis/Analysis/e2r_cpp.d |
|---|
| 0,0 → 1,69 |
| # DO NOT DELETE |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/TROOT.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/TDirectory.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/TNamed.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/TObject.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/Rtypes.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/RConfig.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/RVersion.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/DllImport.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/Rtypeinfo.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/snprintf.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/strlcpy.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/TGenericClassInfo.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/TSchemaHelper.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/TStorage.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/TVersionCheck.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/Riosfwd.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/TBuffer.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/TString.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/TMathBase.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/TList.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/TSeqCollection.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/TCollection.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/TIterator.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/TDatime.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/TUUID.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/TSystem.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/TInetAddress.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/TTimer.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/TSysEvtHandler.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/TQObject.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/TTime.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/TFile.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/TDirectoryFile.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/TMap.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/THashTable.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/TUrl.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/TH1F.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/TH1.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/TAxis.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/TAttAxis.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/TArrayD.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/TArray.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/TAttLine.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/TAttFill.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/TAttMarker.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/TArrayC.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/TArrayS.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/TArrayI.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/TArrayF.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/Foption.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/TVectorFfwd.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/TVectorDfwd.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/TFitResultPtr.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/TH2F.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/TH2.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/TMatrixFBasefwd.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/TMatrixDBasefwd.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/TF1.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/TFormula.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/TBits.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/TObjArray.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/Math/ParamFunctor.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/TMath.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/TError.h |
| ./e2r_cpp.so: /home/rok/root-v5-34-00-patches/include/cintdictversion.h /home/rok/root-v5-34-00-patches/include/RVersion.h |
| e2r_cpp__ROOTBUILDVERSION= 5.34/08 |
| /cvi/apps/l2d2_easyroc/Analysis/Analysis/gif/Canvas_1.gif |
|---|
| Cannot display: file marked as a binary type. |
| svn:mime-type = application/octet-stream |
| Property changes: |
| Added: svn:mime-type |
| +application/octet-stream |
| \ No newline at end of property |
| /cvi/apps/l2d2_easyroc/Analysis/Analysis/root/rok1.root |
|---|
| Cannot display: file marked as a binary type. |
| svn:mime-type = application/octet-stream |
| Property changes: |
| Added: svn:mime-type |
| +application/octet-stream |
| \ No newline at end of property |
| /cvi/apps/l2d2_easyroc/Analysis/Analysis/root/rok2.root |
|---|
| Cannot display: file marked as a binary type. |
| svn:mime-type = application/octet-stream |
| Property changes: |
| Added: svn:mime-type |
| +application/octet-stream |
| \ No newline at end of property |
| /cvi/apps/l2d2_easyroc/Analysis/Analysis/root/rok3.root |
|---|
| Cannot display: file marked as a binary type. |
| svn:mime-type = application/octet-stream |
| Property changes: |
| Added: svn:mime-type |
| +application/octet-stream |
| \ No newline at end of property |
| /cvi/apps/l2d2_easyroc/Analysis/Canvas_1.gif |
|---|
| Cannot display: file marked as a binary type. |
| svn:mime-type = application/octet-stream |
| Property changes: |
| Added: svn:mime-type |
| +application/octet-stream |
| \ No newline at end of property |
| /cvi/apps/l2d2_easyroc/Analysis/e2r.cpp |
|---|
| 0,0 → 1,144 |
| #include "stdio.h" |
| #include "TROOT.h" |
| #include "TSystem.h" |
| #include "TFile.h" |
| #include "TH1F.h" |
| #include "TH2F.h" |
| #include "TF1.h" |
| #include "TMath.h" |
| #define NCH 32 |
| #define HEADER_WORD_1 0xFFFF |
| #define HEADER_WORD_2 0xEA0C |
| #define ID_ADC_HG 0x81 |
| #define ID_ADC_LG 0x60 |
| #define ID_TDC 0xCC |
| #define PRINT_FREQUENCY 10000 |
| void e2r(char* dfile0="test", int dbg=0) |
| { |
| char fullname[256], sbuff[256]; |
| FILE *dfp; |
| char dfile[256]; |
| sprintf(dfile, "data/%s", dfile0); |
| if((dfp=fopen(dfile,"rb")) == NULL) { |
| printf("Cannot open data file %s !!!\n", dfile); |
| return; |
| } else { |
| printf("Opened data file %s.\n", dfile); |
| } |
| if(sizeof(int) != 4) { |
| printf("sizeof(int) != 4, sizeof(int) = %d !!!\n", sizeof(int)); |
| return; |
| } |
| int dum32; |
| char hname[256], htitle[256]; |
| TH1F *htdc[2][NCH], *hadc_hg[NCH], *hadc_lg[NCH]; |
| //opens ROOT file |
| TFile *rootfile; char fnameroot[256]; |
| sprintf(fnameroot, "root/%s.root", dfile0); |
| //rootfile = (TFile *) gROOT->FindObjectAny(dfile0); |
| //if (rootfile!=NULL) {printf("!!!\n");rootfile->Close();} |
| //rootfile = new TFile(fnameroot); |
| //if(rootfile) rootfile->Close(); |
| rootfile = new TFile(fnameroot,"RECREATE",dfile0); |
| for(int i=0; i<NCH; i++) { |
| sprintf(hname, "htdc_le_%d", i); |
| htdc[0][i] = (TH1F*)gROOT->FindObject(hname); |
| if(htdc[0][i]) delete htdc[0][i]; |
| htdc[0][i] = new TH1F(hname, hname, 256, -0.5, 255.5); |
| sprintf(hname, "htdc_te_%d", i); |
| htdc[1][i] = (TH1F*)gROOT->FindObject(hname); |
| if(htdc[1][i]) delete htdc[1][i]; |
| htdc[1][i] = new TH1F(hname, hname, 256, -0.5, 255.5); |
| sprintf(hname, "hadc_hg%d", i); |
| hadc_hg[i] = (TH1F*)gROOT->FindObject(hname); |
| if(hadc_hg[i]) delete hadc_hg[i]; |
| hadc_hg[i] = new TH1F(hname, hname, 4096, -0.5, 4095.5); |
| sprintf(hname, "hadc_lg%d", i); |
| hadc_lg[i] = (TH1F*)gROOT->FindObject(hname); |
| if(hadc_lg[i]) delete hadc_lg[i]; |
| hadc_lg[i] = new TH1F(hname, hname, 4096, -0.5, 4095.5); |
| } |
| // ------------- data ---------------------------------------------------- |
| int ceve = 0; |
| while(!feof(dfp)) { |
| fread( &dum32, sizeof(int), 1, dfp); |
| int hw1 = (dum32 >> 16) & 0xFFFF; |
| int hw2 = dum32 & 0xFFFF; |
| if( (hw1 == HEADER_WORD_1) && (hw2 == HEADER_WORD_2) ) { |
| fread( &dum32, sizeof(int), 1, dfp); |
| int Number_of_word = dum32 & 0xFFFF; |
| fread( &dum32, sizeof(int), 1, dfp); |
| int EventCounter = (dum32 >> 16) & 0xFFFF; |
| if(dbg) printf("\n>>>>>> Number_of_word = %d | EventCounter = %d\n", Number_of_word, EventCounter); |
| //~ else if( !(EventCounter%PRINT_FREQUENCY) ) printf(" EventConter = %d\n", EventCounter); |
| else if( !(EventCounter%PRINT_FREQUENCY) ) printf("."); |
| ceve++; |
| continue; |
| } |
| int id = (dum32 >> 24) & 0xFF; |
| int ch, overflow, edge, data; |
| switch(id) { |
| case ID_ADC_HG: |
| ch = (dum32 >> 16) & 0x1F; |
| overflow = (dum32 >> 13) & 0x1; |
| data = (dum32) & 0xFFF; |
| //~ printf("ID_ADC_HG: ch = %d | X = %d | data = %d\n", ch, overflow, data); |
| if(dbg) printf("HG[%2d]=%4d ", ch, data); |
| hadc_hg[ch]->Fill(data); |
| break; |
| case ID_ADC_LG: |
| ch = (dum32 >> 16) & 0x1F; |
| overflow = (dum32 >> 13) & 0x1; |
| data = (dum32) & 0xFFF; |
| //~ printf("ID_ADC_LG: ch = %d | X = %d | data = %d\n", ch, overflow, data); |
| if(dbg) printf("LG[%2d]=%4d ", ch, data); |
| hadc_lg[ch]->Fill(data); |
| break; |
| case ID_TDC: |
| ch = (dum32 >> 16) & 0x1F; |
| edge = (dum32 >> 15) & 0x1; |
| data = (dum32) & 0x3FFF; |
| printf("ID_TDC: ch = %d | X = %d | data = %d\n", ch, overflow, data); |
| if(edge < 2) htdc[edge][ch]->Fill(data); |
| break; |
| default: |
| printf("default: dum32 = 0x%X!!!\n", dum32); |
| break; |
| } |
| //~ ceve++; |
| //~ if( !(ceve%PRINT_FREQUENCY) ) printf("."); |
| if(dbg && (ceve > dbg) ) break; |
| } |
| printf("\nProcessed events = %d\n", ceve); |
| // ------------------------------------------------------------------------ |
| if(dfp) fclose(dfp); |
| if(dbg) return; |
| if(rootfile) { |
| rootfile->Write(); |
| printf("Saved to %s\n", fnameroot); |
| rootfile->Close(); |
| } |
| gSystem->Exit(1); |
| } |
| /cvi/apps/l2d2_easyroc/Developer Command Prompt for VS2013.lnk |
|---|
| Cannot display: file marked as a binary type. |
| svn:mime-type = application/octet-stream |
| Property changes: |
| Added: svn:mime-type |
| +application/octet-stream |
| \ No newline at end of property |
| /cvi/apps/l2d2_easyroc/DrootHelper.cpp |
|---|
| 0,0 → 1,92 |
| //#include "DrootHelper.cpp" |
| #include "TROOT.h" |
| #include "TStyle.h" |
| #include "TDirectory.h" |
| #include "TH1F.h" |
| #include "TH2F.h" |
| double fontsiz = 0.04; |
| int legmark[] = {kFullTriangleDown,kFullTriangleUp,kFullSquare,kFullTriangleDown,kFullTriangleUp,kFullSquare,kFullCircle,kOpenCircle,kPlus}; |
| int legcol[] = {kBlack,kGray+1,kGray+2,kBlack,kGray+1,kGray+2,kBlack,40,6}; |
| int legsty[] = {1,7,2,1,7,2,9,5,6}; |
| void DrSetDrawStyle(double fntsz = 0.04) { |
| // set draw style |
| gStyle->SetOptStat("ne"); |
| gStyle->SetPalette(1, 0); |
| gStyle->SetPaperSize(TStyle::kA4); |
| gStyle->SetStatBorderSize(1); |
| gStyle->SetFrameBorderMode(0); |
| gStyle->SetFrameFillColor(0); |
| gStyle->SetTitleFillColor(0); |
| gStyle->SetCanvasBorderMode(0); |
| gStyle->SetPadBorderMode(0); |
| gStyle->SetPadColor(0); |
| gStyle->SetCanvasColor(0); |
| gStyle->SetStatColor(0); |
| gStyle->SetOptFit(11); |
| gStyle->SetPadRightMargin(0.1); |
| gStyle->SetPadLeftMargin(0.08); |
| gStyle->SetPadRightMargin(0.1); |
| gStyle->SetPadLeftMargin(0.12); |
| gStyle->SetPadTopMargin(0.11); |
| gStyle->SetPadBottomMargin(0.16); |
| gStyle->SetTitleOffset(1.2, "x"); |
| gStyle->SetLabelOffset(0.02, "x"); |
| //~ gStyle->SetPadLeftMargin(0.12); |
| gStyle->SetPadLeftMargin(0.10); |
| gStyle->SetTitleOffset(0.9, "y"); |
| gStyle->SetPadRightMargin(0.10); |
| gStyle->SetTitleFontSize(0.07); |
| gStyle->SetTitleBorderSize(0); |
| gStyle->SetTitleX(0.4); |
| fontsiz = fntsz; |
| gStyle->SetStatFontSize(fontsiz+0.015); |
| //hp1d->SetLabelSize(fontsiz, "xy"); |
| //hp1d->SetTitleSize(fontsiz, "xy"); |
| } |
| TH1F *DrTH1F(TDirectory *drdir, char *drhname, char *drhtitle="") |
| { |
| TH1F *drhp1d = NULL; |
| drhp1d = (TH1F *)drdir->Get(drhname); |
| drhp1d->SetTitle(drhtitle); |
| drhp1d->SetLabelSize(fontsiz*0.8, "xy"); |
| drhp1d->SetTitleSize(fontsiz, "xy"); |
| return drhp1d; |
| } |
| TH2F *DrTH2F(TDirectory *drdir, char *drhname, char *drhtitle="") |
| { |
| TH2F *drhp2d = NULL; |
| drhp2d = (TH2F *)drdir->Get(drhname); |
| drhp2d->SetTitle(drhtitle); |
| drhp2d->SetLabelSize(fontsiz*0.8, "xyz"); |
| drhp2d->SetTitleSize(fontsiz, "xyz"); |
| return drhp2d; |
| } |
| void DrNull(double x0, double y0, double x1, double y1, char *drhtitle="", int ndiv=-1, double fontfrac=1.0) |
| { |
| TH1F *drhp1d = new TH1F("",drhtitle,100, x0, x1); |
| drhp1d->GetXaxis()->SetRangeUser(x0, x1); |
| drhp1d->GetYaxis()->SetRangeUser(y0, y1); |
| drhp1d->SetLabelSize(fontsiz*fontfrac*0.9, "xyz"); |
| drhp1d->SetTitleSize(fontsiz*fontfrac, "xyz"); |
| if(ndiv>0) (drhp1d->GetYaxis())->SetNdivisions(ndiv); |
| drhp1d->DrawClone(); |
| delete drhp1d; |
| } |
| /cvi/apps/l2d2_easyroc/README.txt |
|---|
| 0,0 → 1,28 |
| Uporaba analize: |
| 1) Datoteko s podatki (npr. test_file01.dat) mora biti v ...analiza\data direktoriju |
| 2) V ukazni vrstici, v kateri bo deloval ROOT zaene ukaze: |
| root -l "d2r.cpp+(\"test\")" |
| oz .x d2r.cpp+("test") |
| kjer je "test" del imena datoteke pred _file01.dat. Program ustvari .root file v ...analiza\root direktoriju. |
| root -l "plots2.cpp(\"test\",\"a\")" |
| kjer je drugi parameter (a) lahko: |
| a: slika porazdelitve naboja in èasa |
| d: razlika v izmerjenih èasih (koincidenèni timing) |
| t: èasovna loèljivost na kanalu 0 (za meritve z laserjem) |
| e: analiza za meritev uèinkovitosti zaznavanja (za meritve z referenènim BGO detektorjem) |
| 3) Za nataène meritve èasa je potrebna e time-walk korekcija: |
| root -l "d2r.cpp+(\"test\")" |
| root -l "cor.cpp(\"test\", 1,64,10,10)" |
| root -l "d2r.cpp+(\"test\")" |
| root -l "plots2.cpp(\"test\",\"d\")" |
| Najprej je potrebno zagnati d2r.cpp, da naredi root file. Potem cor.cpp izraèuna popravke in jih shrani v txt file v ...analiza\data direktorij. Te popravke nato uporabi ko znova zaene d2r.cpp. |
| /cvi/apps/l2d2_easyroc/SiTCP.c |
|---|
| 0,0 → 1,207 |
| #include "SiTCP.h" |
| //------------------------------------------------------------------------------------------------------ |
| void SiTCPinit(){ |
| printf("SiTCP control --> Start.\n"); |
| WORD wVersionRequested; |
| WSADATA wsaData; |
| int err; |
| /* Use the MAKEWORD(lowbyte, highbyte) macro declared in Windef.h */ |
| wVersionRequested = MAKEWORD(2, 2); |
| err = WSAStartup(wVersionRequested, &wsaData); |
| if (err != 0) { |
| /* Tell the user that we could not find a usable */ |
| /* Winsock DLL. */ |
| printf("WSAStartup failed with error: %d\n", err); |
| } |
| }; |
| //------------------------------------------------------------------------------------------------------ |
| void SiTCPclose(){ |
| WSACleanup(); |
| printf("SiTCPclose -> Done.\n"); |
| }; |
| //------------------------------------------------------------------------------------------------------ |
| int SiTCPSetIPPort(char* IpAddr, unsigned int tcp, unsigned int udp){ |
| sitcpIpAddr = IpAddr; |
| if(tcp<=0 || 65535<=tcp || udp<=0 || 65535<=udp){ |
| if(tcp<=0 || 65535<=tcp){ |
| printf("error : invalid port : tcp = %u\n", tcp); |
| } |
| if(udp<=0 || 65535<=udp){ |
| printf("error : invalid port : udp = %u\n", udp); |
| } |
| printf("exit(1);!!!\n"); |
| } |
| tcpPort = tcp; |
| udpPort = udp; |
| puts(""); |
| printf("SiTCP:IP Address = %s\n", sitcpIpAddr); |
| printf(" TCP Port = %u\n", tcpPort); |
| printf(" UDP Port = %u\n", udpPort); |
| puts(""); |
| return 1; |
| } |
| //------------------------------------------------------------------------------------------------------ |
| int SiTCPCreateTCPSock(){ |
| printf("Create socket for TCP..."); |
| tcpsock = socket(AF_INET, SOCK_STREAM, 0); |
| if(tcpsock < 0){ |
| perror("TCP socket"); |
| printf("errno = %d\n", errno); |
| printf("exit(1);!!!\n"); |
| } |
| memset(&tcpAddr, 0, sizeof(tcpAddr)); |
| tcpAddr.sin_family = AF_INET; |
| tcpAddr.sin_port = htons(tcpPort); |
| tcpAddr.sin_addr.s_addr = inet_addr(sitcpIpAddr); |
| printf(" Done\n"); |
| printf(" ->Trying to connect to %s ...\n", sitcpIpAddr); |
| if(connect(tcpsock, (struct sockaddr *)&tcpAddr, sizeof(tcpAddr)) < 0){ |
| if(errno != EINPROGRESS) perror("TCP connection"); |
| FD_ZERO(&rmask); |
| FD_SET(tcpsock, &rmask); |
| wmask = rmask; |
| timeout.tv_sec = 3; |
| timeout.tv_usec = 0; |
| int rc = select(tcpsock+1, &rmask, NULL, NULL, &timeout); |
| if(rc<0) perror("connect-select error"); |
| if(rc==0){ |
| puts("\n =====time out !=====\n "); |
| printf("exit(1);!!!\n"); |
| } |
| else{ |
| puts("\n ===connection error===\n "); |
| printf("exit(1);!!!\n"); |
| } |
| } |
| FD_ZERO(&readfds); |
| FD_SET(tcpsock, &readfds); |
| FD_SET(0, &readfds); |
| puts(" ->Connect success!"); |
| return 1; |
| } |
| //------------------------------------------------------------------------------------------------------ |
| int SiTCPCreateUDPSock(){ |
| printf("Create socket for RBCP..."); |
| udpsock = socket(AF_INET, SOCK_DGRAM, 0); |
| //if(udpsock < 0){ |
| if(udpsock == INVALID_SOCKET){ |
| //perror("UDP socket"); |
| //printf("errno = %d | udpsock = %d\n", errno, udpsock); |
| printf("errno = %d | udpsock = %d\n", WSAGetLastError(), udpsock); |
| printf("exit(1);!!!\n"); |
| } |
| memset(& SiTCPudpAddr, 0, sizeof( SiTCPudpAddr)); |
| SiTCPudpAddr.sin_family = AF_INET; |
| SiTCPudpAddr.sin_port = htons(udpPort); |
| SiTCPudpAddr.sin_addr.s_addr = inet_addr(sitcpIpAddr); |
| printf(" Done\n"); |
| return 1; |
| } |
| //------------------------------------------------------------------------------------------------------ |
| int SiTCPCloseUDPSock(){ |
| printf("Close UDP Socket..."); |
| closesocket(udpsock); |
| printf(" Done\n"); |
| return 1; |
| } |
| //------------------------------------------------------------------------------------------------------ |
| int SiTCPCloseTCPSock(){ |
| printf("Close TCP Socket..."); |
| closesocket(tcpsock); |
| printf(" Done\n"); |
| return 1; |
| } |
| //------------------------------------------------------------------------------------------------------ |
| void SiTCPRBCPskeleton(unsigned char type, unsigned char command, unsigned char id, |
| unsigned char length, unsigned int address){ |
| SiTCPsndHeader.type=type; |
| SiTCPsndHeader.command=command; |
| SiTCPsndHeader.id=id; |
| SiTCPsndHeader.length=length; |
| SiTCPsndHeader.address=htonl(address); |
| memcpy(SiTCPsndBuf, &SiTCPsndHeader, sizeof(SiTCPsndHeader)); |
| } |
| //------------------------------------------------------------------------------------------------------ |
| int SiTCPrcvRBCP_ACK(int output){ |
| //printf("hogeeeee0"); |
| fd_set setSelect; |
| int rcvdBytes; |
| unsigned char rcvdBuf[1024]; |
| int rd_data; |
| // puts("\nWait to receive the ACK packet..."); |
| int recvVal = 1; |
| while(recvVal){ |
| //printf("hogeeeee1"); |
| FD_ZERO(&setSelect); |
| //printf("hogeeeee2"); |
| FD_SET(udpsock, &setSelect); |
| //printf("hogeeeee3"); |
| timeout.tv_sec = 3; |
| timeout.tv_usec = 0; |
| //printf("hogeeeee4"); |
| if(select(udpsock+1, &setSelect, NULL, NULL,&timeout)==0){ |
| // time out |
| //printf("hogeeeee5"); |
| recvVal = 0; |
| puts("\n***** Timeout ! *****"); |
| //printf("hogeeeee6"); |
| return -1; |
| } |
| else { |
| // receive packet |
| //printf("hogeeeee7"); |
| if(FD_ISSET(udpsock,&setSelect)){ |
| //printf("hogeeeee8"); |
| //rcvdBytes=recvfrom(udpsock, rcvdBuf, 2048, 0, NULL, NULL); |
| rcvdBytes=recvfrom(udpsock, rcvdBuf, 1024, 0, NULL, NULL); |
| if(rcvdBytes < 0) { |
| Sleep(1000); |
| rcvdBytes=recvfrom(udpsock, rcvdBuf, 1024, 0, NULL, NULL); |
| } |
| //printf("hogeeee88"); |
| rcvdBuf[rcvdBytes]=0; |
| if(output == 1){ |
| //puts("\n***** A pacekt is received ! *****."); |
| //puts("Received data:"); |
| //printf("hogeeeee9"); |
| int j=0; |
| for(int i=0; i<rcvdBytes; i++){ |
| if(j==0) { |
| //printf("hogeeeee10"); |
| //printf("\t[%.3x]:%.2x ",i,rcvdBuf[i]); |
| j++; |
| }else if(j==3){ |
| //printf("hogeeeee11"); |
| //printf("%.2x \n",rcvdBuf[i]); |
| j=0; |
| }else{ |
| //printf("hogeeeee12"); |
| //printf("%.2x ",rcvdBuf[i]); |
| j++; |
| } |
| } |
| //puts("\n"); |
| rd_data = rcvdBuf[8]; |
| } |
| recvVal = 0; |
| } |
| } |
| } |
| // printf("%.2x",rd_data); |
| return rd_data; |
| //usleep(50); |
| } |
| //------------------------------------------------------------------------------------------------------ |
| int SiTCPGetTCPSock(){return tcpsock;} |
| int SiTCPGetUDPSock(){return udpsock;} |
| struct bcp_header SiTCPGetSiTCPsndHeader() {return SiTCPsndHeader;} |
| /cvi/apps/l2d2_easyroc/SiTCP.h |
|---|
| 0,0 → 1,66 |
| #ifndef SiTCP_H |
| #define SiTCP_H |
| //#include<iostream> |
| #include<stdio.h> |
| #include<stdlib.h> |
| #include<errno.h> |
| //#include<string> |
| //#include<cstring> |
| //#include<arpa/inet.h> |
| #include <Winsock2.h> |
| //#include<fstream> |
| //#include<unistd.h> |
| #define EINPROGRESS 115 /* Operation now in progress */ |
| struct bcp_header{ |
| unsigned char type; |
| unsigned char command; |
| unsigned char id; |
| unsigned char length; |
| unsigned int address; |
| }; |
| char* sitcpIpAddr; |
| unsigned int tcpPort; |
| unsigned int udpPort; |
| int udpsock; |
| int tcpsock; |
| struct sockaddr_in tcpAddr; |
| // struct sockaddr_in udpAddr; |
| fd_set rmask, wmask, readfds; |
| struct timeval timeout; |
| //struct bcp_header sndHeader; |
| //unsigned char sndBuf[2048]; |
| struct bcp_header SiTCPsndHeader; |
| unsigned char SiTCPsndBuf[2048]; |
| unsigned char SiTCPsndData[256]; |
| struct sockaddr_in SiTCPudpAddr; |
| void SiTCPinit(); |
| void SiTCPclose(); |
| int SiTCPSetIPPort(char* IpAddr, unsigned int tcp, unsigned int udp); |
| int SiTCPCreateUDPSock(); |
| int SiTCPCloseUDPSock(); |
| int SiTCPCreateTCPSock(); |
| int SiTCPCloseTCPSock(); |
| //int GetTCPSock(){return tcpsock;} |
| //int GetUDPSock(){return udpsock;} |
| int SiTCPGetTCPSock(); |
| int SiTCPGetUDPSock(); |
| void SiTCPRBCPskeleton(unsigned char type, unsigned char command, unsigned char id, |
| unsigned char length, unsigned int address); |
| int SiTCPrcvRBCP_ACK(int output); |
| struct bcp_header SiTCPGetsndHeader(); |
| //bcp_header GetsndHeader() const {return sndHeader;} |
| #endif |
| /cvi/apps/l2d2_easyroc/cor.cpp |
|---|
| 0,0 → 1,337 |
| #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 "TGraphErrors.h" |
| #include "TSystem.h" |
| #include "TMath.h" |
| #define COROUT |
| #define SHOW_SLICES |
| #define NCH 20 |
| #define USED_CH 2 |
| #define TDC_BIN (25./1000.) //1 TDC bin in ns |
| //~ #define FIRST_CH 0 |
| double g_corpars[NCH][3]; |
| int mapii[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11,12,13,14,15,16,17,18,19 }; |
| int mapij[] = { 1, 0,16,16,16,16,16,16,16,16, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }; |
| // root -l "cor.cpp(\"run045\",64,1,20,\"s\")" |
| void cor(char *fname="cscan3", int range=1, const int nslicex=64, int slmin=1, const int projmin=5, char *fite="s") |
| { |
| double fitw=1.0; |
| char skip='n'; |
| 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); |
| char hname[256]; |
| TH1F *hp1d; TH2F *hp2d; |
| int ch=0; |
| int nbinsx, deltax, bin0, bin1; |
| double binc; |
| TH1F *hprojx[nslicex]; |
| TF1 *f_fit = 0; |
| TF1 *fg = new TF1("fg", "gaus(0)"); |
| fg->SetParNames("Constant","Mean","Sigma"); |
| TF1 *fgg = new TF1("fgg", "gaus(0)+gaus(3)"); |
| fgg->SetParNames("Constant","Mean","Sigma","Constant2","Mean2","Sigma2"); |
| TF1 *fggg = new TF1("fgg", "gaus(0)+gaus(3)+gaus(6)"); |
| fggg->SetParNames("Constant","Mean","Sigma","Constant2","Mean2","Sigma2","Constant3","Mean3","Sigma3"); |
| TF1 *fitsqrt = new TF1("fitsqrt","[0]+[1]/TMath::Sqrt(x-[2])"); |
| TF1 *fcg = new TF1("fcg", "pol0(0)+gaus(1)"); |
| fcg->SetParNames("C", "Constant","Mean","Sigma"); |
| TF1 *fcgg = new TF1("fcgg", "pol0(0)+gaus(1)+gaus(4)"); |
| fcgg->SetParName(0,"Const"); |
| fcgg->SetParName(1,"G1_Const"); fcgg->SetParName(2,"G1_Mean" ); fcgg->SetParName(3,"G1_Sigma" ); |
| fcgg->SetParName(4,"G2_Const"); fcgg->SetParName(5,"G2_Mean" ); fcgg->SetParName(6,"G2_Sigma" ); |
| TGraphErrors *gcor[NCH]; |
| double fitcenter, fitampl; |
| double fitsigmas[2]; |
| int fitminsigmai; |
| double fiterror, fitmean; |
| #ifdef COROUT |
| FILE *fp; |
| //open file to save parameters |
| sprintf(fullname, "data/%s_cor.txt", fname); |
| if( (fp=fopen(fullname, "wt")) == NULL ) |
| printf("Cannot create parameter file %s !!!\n", fullname); |
| else |
| printf("Created parameter file %s\n", fullname); |
| #endif |
| TCanvas *c1 = new TCanvas("Cor.Fits", "Cor.Fits", 0, 0, 1300, 450); |
| c1->Divide(2,1); |
| #ifdef SHOW_SLICES |
| TCanvas *c0 = new TCanvas("Slices", "Slices", 0, 520, 1300, 470); |
| c0->Divide(5,5); |
| #endif |
| const int c0pads = 25; |
| if(nslicex==0) { |
| #ifdef COROUT |
| for(int j=0;j<NCH; j++) fprintf(fp,"%lf %lf %lf\n", 0.0,0.005,0.0); |
| gSystem->Exit(1); |
| return; |
| #endif |
| } else { |
| #ifdef FIRST_CH |
| ch=FIRST_CH; |
| #else |
| for(ch=0;ch<USED_CH; ch++) |
| #endif |
| { |
| gcor[ch] = new TGraphErrors(nslicex); |
| sprintf(hname,"TDC Corection ch%d;QDC;TDC [ps]",ch); |
| gcor[ch]->SetTitle(hname); |
| if(range == 0) { |
| sprintf(hname, "hdiffcor_low_%d_%d",mapii[ch],mapij[ch]); hp2d = (TH2F *) dir->Get(hname); |
| } else if(range == 2) { |
| sprintf(hname, "hdiffcor_hi_%d_%d",mapii[ch],mapij[ch]); hp2d = (TH2F *) dir->Get(hname); |
| } else { |
| sprintf(hname, "hdiffcor_%d_%d",mapii[ch],mapij[ch]); hp2d = (TH2F *) dir->Get(hname); |
| } |
| //~ sprintf(hname, "hcor%d",ch); hp2d = (TH2F *) dir->Get(hname); |
| nbinsx=hp2d->GetNbinsX(); |
| deltax=nbinsx/nslicex; |
| c0->Clear();c0->Divide(8,4); |
| for(int i=slmin; i<nslicex; i++) { |
| bin0=i*deltax+1; |
| bin1=(i+1)*deltax+1; |
| binc=(hp2d->GetXaxis()->GetBinCenter(bin0)+hp2d->GetXaxis()->GetBinCenter(bin1))/2.0; |
| sprintf(hname, "hprojx%d",i); |
| hprojx[i]=(TH1F*)hp2d->ProjectionY(hname, bin0, bin1); |
| //~ (hprojx[i]->GetXaxis())->SetRangeUser(-1, 2); |
| if( hprojx[i]->GetMaximum() > projmin ) { |
| fitcenter = hprojx[i]->GetBinCenter(hprojx[i]->GetMaximumBin()); |
| fitampl = hprojx[i]->GetMaximum(); |
| //------/ |
| if(i<1024) { |
| //~ if( (ch<8) && (i<3) && (fitcenter < 0.4) ) fitcenter = 0.7; |
| f_fit = fcg; |
| f_fit->SetParameters(fitampl*0.1, fitampl*0.9, fitcenter, 0.1); |
| //~ |
| //~ f_fit = fcgg; |
| //~ f_fit->SetParameters(fitampl*0.01, |
| //~ fitampl*0.4, 0, 0.4, |
| //~ fitampl*0.4, 0, 0.2); |
| //~ f_fit = fgg; |
| //~ f_fit->SetParameters(fitampl*0.9, fitcenter, 0.1, fitampl*0.1, fitcenter, 0.5); |
| //~ |
| //~ f_fit = fg; |
| //~ f_fit->SetParameters(fitampl*0.9, fitcenter, 0.1); |
| //~ f_fit->SetParLimits(0, 0, fitampl*3); |
| #ifdef SHOW_SLICES |
| c0->cd(i%c0pads + 1); //c0->cd(i%4 + 1)->SetLogy(); |
| //~ hprojx[i]->Fit(f_fit,"QL", "", fitcenter-1.0*fitw, fitcenter+0.5*fitw); |
| hprojx[i]->Fit(f_fit,"QL", ""); |
| //c0->Update(); |
| //if( !((i+1)%9) && (skip!='y') ) {c0->Update(); printf("Skip?: "); scanf("%c",&skip);} |
| //if( (skip=='q') || (skip=='Q') ) return; |
| //hprojx[i]->DrawClone(); |
| //fgg->SetRange(-1,2); |
| //fgg->DrawClone("LSAME"); |
| #else |
| //~ hprojx[i]>Fit(fgg,"0QL", "", fitcenter-1.0*fitw, fitcenter+2.0*fitw); |
| hprojx[i]->Fit(f_fit,"0QL", ""); |
| #endif |
| //~ fitsigmas[0] = TMath::Abs(f_fit->GetParameter(2)); |
| //~ fitsigmas[1] = TMath::Abs(f_fit->GetParameter(5)); |
| //~ fitminsigmai = TMath::LocMin(2,fitsigmas); |
| //~ fitmean = f_fit->GetParameter(1 + fitminsigmai*3); |
| //~ fiterror = TMath::Abs(f_fit->GetParameter(2 + fitminsigmai*3)); |
| //~ printf("fitminsigmai = %d {%lf, %lf}\n", fitminsigmai, fitsigmas[0], fitsigmas[1]); |
| //~ |
| //~ fitmean = f_fit->GetParameter(1); |
| //~ fiterror = TMath::Abs(f_fit->GetParameter(2)); |
| //~ |
| // fcg |
| fitmean = f_fit->GetMaximumX(fitcenter-1.0*fitw, fitcenter+0.5*fitw); |
| fiterror = TMath::Abs(f_fit->GetParameter(3)); |
| //~ // fcgg |
| //~ fitmean = f_fit->GetMaximumX(fitcenter-1.0*fitw, fitcenter+1.0*fitw); |
| //~ double HalfMax = (f_fit->GetMaximum(fitcenter-1.0*fitw, fitcenter+1.0*fitw) + f_fit->GetParameter(0))/2.0; |
| //~ double MinHalfMax = f_fit->GetX(HalfMax, fitcenter-1.0*fitw, fitcenter); |
| //~ double MaxHalfMax = f_fit->GetX(HalfMax, fitcenter, fitcenter+1.0*fitw); |
| //~ double FWHMc = MaxHalfMax - MinHalfMax; |
| //~ fiterror = TMath::Abs(FWHMc); |
| //~ //------/ |
| } else { |
| fgg->SetParameters(fitampl, fitcenter, 0.05, |
| fitampl/15, fitcenter, 0.5); |
| fgg->SetParLimits(0, fitampl*0.3, fitampl*1.1); |
| fgg->SetParLimits(3, fitampl*0.01, fitampl*0.7); |
| fgg->SetParLimits(1, -1, 1); |
| fgg->SetParLimits(4, -1, 1); |
| fgg->SetParLimits(2, 0, 0.300); |
| fgg->SetParLimits(5, 0.3, 4.0); |
| #ifdef SHOW_SLICES |
| c0->cd(i%c0pads + 1); //c0->cd(i%4 + 1)->SetLogy(); |
| hprojx[i]->Fit(fgg,"QL", "", fitcenter-1.0*fitw, fitcenter+2.0*fitw); |
| //c0->Update(); |
| //if( !((i+1)%9) && (skip!='y') ) {c0->Update(); printf("Skip?: "); scanf("%c",&skip);} |
| //if( (skip=='q') || (skip=='Q') ) return; |
| //hprojx[i]->DrawClone(); |
| //fgg->SetRange(-1,2); |
| //fgg->DrawClone("LSAME"); |
| #else |
| hprojx[i]>Fit(fgg,"0QL", "", fitcenter-1.0*fitw, fitcenter+2.0*fitw); |
| #endif |
| fitsigmas[0] = TMath::Abs(fgg->GetParameter(2)); |
| fitsigmas[1] = TMath::Abs(fgg->GetParameter(5)); |
| fitminsigmai = TMath::LocMin(2,fitsigmas); |
| //printf("fitminsigmai = %d {%.1lf, %.1lf}\n", fitminsigmai, fitsigmas[0]*1000, fitsigmas[1]*1000); |
| fitmean = fgg->GetParameter(1 + fitminsigmai*3); |
| fiterror = TMath::Abs(fgg->GetParameter(2 + fitminsigmai*3)); |
| //------/ |
| } //if(i<4) |
| printf(">>> ADC %3d - %3d -> %5.1lf ps\n", bin0, bin1, fiterror*1000.); |
| gcor[ch]->SetPoint(i, binc, fitmean); |
| // weight = slice fit sigma (default) |
| if( strcmp(fite, "s")==0 ) |
| gcor[ch]->SetPointError(i, 0.0, fiterror); |
| // weight = slice maximum bin content ~ n of events |
| else if( strcmp(fite, "h")==0 ) |
| gcor[ch]->SetPointError(i, 0.0, 2./sqrt(hprojx[i]->GetMaximum())); |
| // weight = both |
| else if( strcmp(fite, "b")==0 ) |
| gcor[ch]->SetPointError(i, 0, 100.*fiterror/hprojx[i]->GetMaximum()); |
| else if( strcmp(fite, "k")==0 ) |
| gcor[ch]->SetPointError(i, 0, 1./sqrt(hprojx[i]->GetMaximum())); |
| } //if( hprojx[i]->GetMaximum() > projmin ) |
| }// for(int i=slmin; i<nslicex; i++) |
| #ifdef SHOW_SLICES |
| c0->Update(); |
| sprintf(fullname, "gif/%s_ch_%d.gif", fname, ch); c0->SaveAs(fullname); |
| #endif |
| c1->cd(ch+1); gPad->SetLogz(); |
| fitsqrt->SetLineWidth(2); |
| gStyle->SetOptStat("e"); |
| gStyle->SetOptFit(11); |
| (gcor[ch]->GetYaxis())->SetRangeUser((hp2d->GetYaxis())->GetXmin(), (hp2d->GetYaxis())->GetXmax()); |
| //~ (gcor[ch]->GetYaxis())->SetRangeUser(-2,3); |
| //gcor[ch]->Draw("AP"); |
| fitsqrt->SetParameters(0, 10, 50); |
| fitsqrt->SetRange(TMath::Ceil(fitsqrt->GetParameter(2)),(gcor[ch]->GetXaxis())->GetXmax()); |
| //~ fitsqrt->SetRange(TMath::Ceil(fitsqrt->GetParameter(2)),3*256.); |
| //fitsqrt->SetParameters(-0.25, 3, 55); |
| //fitsqrt->SetParLimits(0,-4,8); |
| //~ fitsqrt->SetParLimits(1,0,20); |
| //~ fitsqrt->SetParLimits(2,-100,2000); |
| fitsqrt->SetParLimits(2,0,2000); |
| //~ #ifdef FIRST_CH |
| //~ if(ch==FIRST_CH) gcor[ch]->Fit(fitsqrt, "0Q",""); |
| //~ #else |
| //~ if(ch==0) gcor[ch]->Fit(fitsqrt, "0Q",""); |
| //~ #endif |
| gcor[ch]->Fit(fitsqrt, "0QR",""); |
| //(gcor[ch]->GetYaxis())->UnZoom(); |
| sprintf(fullname, "SiPM_%d; Charge [200 fC/bin]; TDC [ns]", ch+1); |
| hp2d->SetTitle(fullname); |
| //~ (hp2d->GetXaxis())->SetRangeUser(0.,4*256.); |
| //~ (hp2d->GetXaxis())->SetRangeUser(0.,3*256.); |
| //(hp2d->GetYaxis())->SetRangeUser(-1.,3.); |
| //~ (hp2d->GetYaxis())->SetRangeUser(-2.5,2.5); |
| hp2d->DrawCopy("COLZ"); |
| fitsqrt->SetRange(TMath::Ceil(fitsqrt->GetParameter(2)),8*256.); |
| //~ fitsqrt->SetRange(TMath::Ceil(fitsqrt->GetParameter(2)),(gcor[ch]->GetXaxis())->GetXmax()); |
| fitsqrt->DrawCopy("LSAME"); |
| gcor[ch]->Draw("PSAME"); |
| sprintf(fullname, "gif/%s_cor.gif", fname); c1->SaveAs(fullname); |
| printf("[ch.%d - ch.%d] %lf %lf\n", mapii[ch], mapij[ch], fitsqrt->GetParameter(1), fitsqrt->GetParameter(2)); |
| #ifdef COROUT |
| fprintf(fp,"%lf %lf %lf\n", fitsqrt->GetParameter(0), fitsqrt->GetParameter(1), fitsqrt->GetParameter(2)); |
| #endif |
| g_corpars[ch][0]=fitsqrt->GetParameter(0); |
| g_corpars[ch][1]=fitsqrt->GetParameter(1); |
| g_corpars[ch][2]=fitsqrt->GetParameter(2); |
| } |
| } |
| #ifdef COROUT |
| for(int i=USED_CH;i<NCH; i++) fprintf(fp,"%lf %lf %lf\n", 0.0,0.005,0.0); |
| if(fp) fclose(fp); |
| #endif |
| //rootfile->Close(); |
| } |
| /cvi/apps/l2d2_easyroc/cor_laser.cpp |
|---|
| 0,0 → 1,300 |
| #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 "TGraphErrors.h" |
| #define COROUT |
| #define SHOW_SLICES |
| #define NCH 20 |
| #define USED_CH 1 |
| #define TDC_BIN (25./1000.) //1 TDC bin in ns |
| //~ #define FIRST_CH 1 |
| double g_corpars[NCH][3]; |
| int mapii[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11,12,13,14,15,16,17,18,19 }; |
| int mapij[] = { 1, 0,16,16,16,16,16,16,16,16, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }; |
| // root -l "cor.cpp(\"run045\",64,1,20,\"s\")" |
| void cor_laser(char *fname="cscan3", const int nslicex=64, int slmin=1, const int projmin=5, char *fite="s") |
| { |
| double fitw=1.0; |
| char skip='n'; |
| 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); |
| char hname[256]; |
| TH1F *hp1d; TH2F *hp2d; |
| int ch=0; |
| int nbinsx, deltax, bin0, bin1; |
| double binc; |
| TH1F *hprojx[nslicex]; |
| TF1 *f_fit = 0; |
| TF1 *fg = new TF1("fg", "gaus(0)"); |
| fg->SetParNames("Constant","Mean","Sigma"); |
| TF1 *fgg = new TF1("fgg", "gaus(0)+gaus(3)"); |
| fgg->SetParNames("Constant","Mean","Sigma","Constant2","Mean2","Sigma2"); |
| TF1 *fggg = new TF1("fgg", "gaus(0)+gaus(3)+gaus(6)"); |
| fggg->SetParNames("Constant","Mean","Sigma","Constant2","Mean2","Sigma2","Constant3","Mean3","Sigma3"); |
| TF1 *fitsqrt = new TF1("fitsqrt","[0]+[1]/TMath::Sqrt(x-[2])"); |
| TF1 *fcg = new TF1("fcg", "pol0(0)+gaus(1)"); |
| fcg->SetParNames("C", "Constant","Mean","Sigma"); |
| TGraphErrors *gcor[NCH]; |
| double fitcenter, fitampl; |
| double fitsigmas[2]; |
| int fitminsigmai; |
| double fiterror, fitmean; |
| #ifdef COROUT |
| FILE *fp; |
| //open file to save parameters |
| sprintf(fullname, "data/%s_cor.txt", fname); |
| if( (fp=fopen(fullname, "wt")) == NULL ) |
| printf("Cannot create parameter file %s !!!\n", fullname); |
| else |
| printf("Created parameter file %s\n", fullname); |
| #endif |
| TCanvas *c1 = new TCanvas("Cor.Fits", "Cor.Fits", 0, 0, 1300, 700); |
| c1->Divide(2,1); |
| #ifdef SHOW_SLICES |
| TCanvas *c0 = new TCanvas("Slices", "Slices", 0, 0, 1300, 700); |
| c0->Divide(5,5); |
| #endif |
| const int c0pads = 25; |
| if(nslicex==0) { |
| #ifdef COROUT |
| for(int j=0;j<NCH; j++) fprintf(fp,"%lf %lf %lf\n", 0.0,0.005,0.0); |
| gSystem->Exit(1); |
| #endif |
| } else { |
| #ifdef FIRST_CH |
| ch=FIRST_CH; |
| #else |
| for(ch=0;ch<USED_CH; ch++) |
| #endif |
| { |
| gcor[ch] = new TGraphErrors(nslicex); |
| sprintf(hname,"TDC Corection ch%d;QDC;TDC [ps]",ch); |
| gcor[ch]->SetTitle(hname); |
| //~ sprintf(hname, "hdiffcor_%d_%d",mapii[ch],mapij[ch]); hp2d = (TH2F *) dir->Get(hname); |
| sprintf(hname, "hcor%d",ch); hp2d = (TH2F *) dir->Get(hname); |
| nbinsx=hp2d->GetNbinsX(); |
| deltax=nbinsx/nslicex; |
| c0->Clear();c0->Divide(8,4); |
| for(int i=slmin; i<nslicex-1; i++) { |
| bin0=i*deltax+1; |
| bin1=(i+1)*deltax+1; |
| binc=(hp2d->GetXaxis()->GetBinCenter(bin0)+hp2d->GetXaxis()->GetBinCenter(bin1))/2.0; |
| sprintf(hname, "hprojx%d",i); |
| hprojx[i]=(TH1F*)hp2d->ProjectionY(hname, bin0, bin1); |
| //~ (hprojx[i]->GetXaxis())->SetRangeUser(-1, 2); |
| if( hprojx[i]->GetMaximum() > projmin ) { |
| fitcenter = hprojx[i]->GetBinCenter(hprojx[i]->GetMaximumBin()); |
| fitampl = hprojx[i]->GetMaximum(); |
| //------/ |
| if(i<1024) { |
| //~ if( (ch<8) && (i<3) && (fitcenter < 0.4) ) fitcenter = 0.7; |
| //~ f_fit = fcg; |
| //~ f_fit->SetParameters(fitampl*0.1, fitampl*0.9, fitcenter, 0.1); |
| f_fit = fgg; |
| f_fit->SetParameters(fitampl*0.9, fitcenter, 0.1, fitampl*0.1, fitcenter, 0.5); |
| //~ |
| //~ f_fit = fg; |
| //~ f_fit->SetParameters(fitampl*0.9, fitcenter, 0.1); |
| //~ f_fit->SetParLimits(0, 0, fitampl*3); |
| #ifdef SHOW_SLICES |
| c0->cd(i%c0pads + 1); //c0->cd(i%4 + 1)->SetLogy(); |
| hprojx[i]->Fit(f_fit,"QL", "", fitcenter-1.0*fitw, fitcenter+0.5*fitw); |
| //~ hprojx[i]->Fit(f_fit,"QL", ""); |
| //c0->Update(); |
| //if( !((i+1)%9) && (skip!='y') ) {c0->Update(); printf("Skip?: "); scanf("%c",&skip);} |
| //if( (skip=='q') || (skip=='Q') ) return; |
| //hprojx[i]->DrawClone(); |
| //fgg->SetRange(-1,2); |
| //fgg->DrawClone("LSAME"); |
| #else |
| //~ hprojx[i]>Fit(fgg,"0QL", "", fitcenter-1.0*fitw, fitcenter+2.0*fitw); |
| hprojx[i]->Fit(f_fit,"0QL", ""); |
| #endif |
| //~ fitsigmas[0] = TMath::Abs(f_fit->GetParameter(2)); |
| //~ fitsigmas[1] = TMath::Abs(f_fit->GetParameter(5)); |
| //~ fitminsigmai = TMath::LocMin(2,fitsigmas); |
| //~ fitmean = f_fit->GetParameter(1 + fitminsigmai*3); |
| //~ fiterror = TMath::Abs(f_fit->GetParameter(2 + fitminsigmai*3)); |
| //~ printf("fitminsigmai = %d {%lf, %lf}\n", fitminsigmai, fitsigmas[0], fitsigmas[1]); |
| //~ |
| //~ fitmean = f_fit->GetParameter(1); |
| //~ fiterror = TMath::Abs(f_fit->GetParameter(2)); |
| //~ |
| fitmean = f_fit->GetMaximumX(fitcenter-1.0*fitw, fitcenter+0.5*fitw); |
| fiterror = TMath::Abs(f_fit->GetParameter(2)); |
| //------/ |
| } else { |
| fgg->SetParameters(fitampl, fitcenter, 0.05, |
| fitampl/15, fitcenter, 0.5); |
| fgg->SetParLimits(0, fitampl*0.3, fitampl*1.1); |
| fgg->SetParLimits(3, fitampl*0.01, fitampl*0.7); |
| fgg->SetParLimits(1, -1, 1); |
| fgg->SetParLimits(4, -1, 1); |
| fgg->SetParLimits(2, 0, 0.300); |
| fgg->SetParLimits(5, 0.3, 4.0); |
| #ifdef SHOW_SLICES |
| c0->cd(i%c0pads + 1); //c0->cd(i%4 + 1)->SetLogy(); |
| hprojx[i]->Fit(fgg,"QL", "", fitcenter-1.0*fitw, fitcenter+2.0*fitw); |
| //c0->Update(); |
| //if( !((i+1)%9) && (skip!='y') ) {c0->Update(); printf("Skip?: "); scanf("%c",&skip);} |
| //if( (skip=='q') || (skip=='Q') ) return; |
| //hprojx[i]->DrawClone(); |
| //fgg->SetRange(-1,2); |
| //fgg->DrawClone("LSAME"); |
| #else |
| hprojx[i]>Fit(fgg,"0QL", "", fitcenter-1.0*fitw, fitcenter+2.0*fitw); |
| #endif |
| fitsigmas[0] = TMath::Abs(fgg->GetParameter(2)); |
| fitsigmas[1] = TMath::Abs(fgg->GetParameter(5)); |
| fitminsigmai = TMath::LocMin(2,fitsigmas); |
| //printf("fitminsigmai = %d {%.1lf, %.1lf}\n", fitminsigmai, fitsigmas[0]*1000, fitsigmas[1]*1000); |
| fitmean = fgg->GetParameter(1 + fitminsigmai*3); |
| fiterror = TMath::Abs(fgg->GetParameter(2 + fitminsigmai*3)); |
| //------/ |
| } //if(i<4) |
| printf(">>> ADC %3d - %3d -> %5.1lf ps\n", bin0, bin1, fiterror*1000.); |
| gcor[ch]->SetPoint(i, binc, fitmean); |
| // weight = slice fit sigma (default) |
| if( strcmp(fite, "s")==0 ) |
| gcor[ch]->SetPointError(i, 0.0, fiterror); |
| // weight = slice maximum bin content ~ n of events |
| else if( strcmp(fite, "h")==0 ) |
| gcor[ch]->SetPointError(i, 0.0, 10./sqrt(hprojx[i]->GetMaximum())); |
| // weight = both |
| else if( strcmp(fite, "b")==0 ) |
| gcor[ch]->SetPointError(i, 0, 100.*fiterror/hprojx[i]->GetMaximum()); |
| } //if( hprojx[i]->GetMaximum() > projmin ) |
| }// for(int i=slmin; i<nslicex; i++) |
| #ifdef SHOW_SLICES |
| c0->Update(); |
| sprintf(fullname, "gif/%s_ch_%d.gif", fname, ch); c0->SaveAs(fullname); |
| #endif |
| c1->cd(ch+1); gPad->SetLogz(); |
| fitsqrt->SetLineWidth(2); |
| gStyle->SetOptFit(); |
| (gcor[ch]->GetYaxis())->SetRangeUser((hp2d->GetYaxis())->GetXmin(), (hp2d->GetYaxis())->GetXmax()); |
| //gcor[ch]->Draw("AP"); |
| fitsqrt->SetParameters(0, 10, 50); |
| //fitsqrt->SetRange(TMath::Ceil(fitsqrt->GetParameter(2)),(gcor[ch]->GetXaxis())->GetXmax()); |
| fitsqrt->SetRange(TMath::Ceil(fitsqrt->GetParameter(2)),3*256.); |
| //fitsqrt->SetParameters(-0.25, 3, 55); |
| //fitsqrt->SetParLimits(0,-4,8); |
| //~ fitsqrt->SetParLimits(1,0,20); |
| //~ fitsqrt->SetParLimits(2,0,200); |
| //~ #ifdef FIRST_CH |
| //~ if(ch==FIRST_CH) gcor[ch]->Fit(fitsqrt, "0Q",""); |
| //~ #else |
| //~ if(ch==0) gcor[ch]->Fit(fitsqrt, "0Q",""); |
| //~ #endif |
| gcor[ch]->Fit(fitsqrt, "0QR",""); |
| //(gcor[ch]->GetYaxis())->UnZoom(); |
| hp2d->SetTitle("TDCvsQDC; QDC; TDC [ns]"); |
| //~ (hp2d->GetXaxis())->SetRangeUser(0.,4*256.); |
| //(hp2d->GetYaxis())->SetRangeUser(-1.,3.); |
| //~ (hp2d->GetYaxis())->SetRangeUser(-3.,3.); |
| hp2d->DrawCopy("COLZ"); |
| fitsqrt->SetRange(TMath::Ceil(fitsqrt->GetParameter(2)),4*256.); |
| fitsqrt->DrawCopy("LSAME"); |
| gcor[ch]->Draw("PSAME"); |
| sprintf(fullname, "gif/%s_cor.gif", fname); c1->SaveAs(fullname); |
| printf("[ch.%d - ch.%d] %lf %lf\n", mapii[ch], mapij[ch], fitsqrt->GetParameter(1), fitsqrt->GetParameter(2)); |
| #ifdef COROUT |
| fprintf(fp,"%lf %lf %lf\n", fitsqrt->GetParameter(0), fitsqrt->GetParameter(1), fitsqrt->GetParameter(2)); |
| #endif |
| g_corpars[ch][0]=fitsqrt->GetParameter(0); |
| g_corpars[ch][1]=fitsqrt->GetParameter(1); |
| g_corpars[ch][2]=fitsqrt->GetParameter(2); |
| } |
| } |
| #ifdef COROUT |
| for(int i=USED_CH;i<NCH; i++) fprintf(fp,"%lf %lf %lf\n", 0.0,0.005,0.0); |
| if(fp) fclose(fp); |
| #endif |
| //rootfile->Close(); |
| } |
| /cvi/apps/l2d2_easyroc/cvibuild.l2d/Debug/BuildStep.bat |
|---|
| 0,0 → 1,2 |
| @call %1.bat > %1.out |
| @echo Build Step complete for %1 |
| /cvi/apps/l2d2_easyroc/cvibuild.l2d/Debug/CAENV965.nidobj |
|---|
| Cannot display: file marked as a binary type. |
| svn:mime-type = application/octet-stream |
| Property changes: |
| Added: svn:mime-type |
| +application/octet-stream |
| \ No newline at end of property |
| /cvi/apps/l2d2_easyroc/cvibuild.l2d/Debug/CAENV965.obj |
|---|
| Cannot display: file marked as a binary type. |
| svn:mime-type = application/octet-stream |
| Property changes: |
| Added: svn:mime-type |
| +application/octet-stream |
| \ No newline at end of property |
| /cvi/apps/l2d2_easyroc/cvibuild.l2d/Debug/CAENV965.obj.cvidefprots |
|---|
| 0,0 → 1,24 |
| [V965_map] |
| Class="Function" |
| Prototype="int V965_map(int ModuleNumber, unsigned long ModuleOffset, int print);" |
| [V965_init] |
| Class="Function" |
| Prototype="int V965_init(int ModuleNumber, unsigned short ped);" |
| [V965_clear] |
| Class="Function" |
| Prototype="int V965_clear(int ModuleNumber);" |
| [V965_status] |
| Class="Function" |
| Prototype="int V965_status(int ModuleNumber);" |
| [V965_status2] |
| Class="Function" |
| Prototype="int V965_status2(int ModuleNumber);" |
| [V965_read] |
| Class="Function" |
| Prototype="int V965_read(int ModuleNumber, unsigned long *whereto);" |
| /cvi/apps/l2d2_easyroc/cvibuild.l2d/Debug/CC_no_dep_options.txt |
|---|
| 0,0 → 1,0 |
| -force-include-file "easiroc.c";"c:\home\rokd\l2d2_easyroc\easiroc.c" -force-include-file "easiroc.h";"c:\home\rokd\l2d2_easyroc\easiroc.h" -force-include-file "l2d.c";"c:\home\rokd\l2d2_easyroc\l2d.c" -force-include-file "l2d_ui.h";"c:\home\rokd\l2d2_easyroc\l2d_ui.h" -force-include-file "sender.c";"c:\home\rokd\l2d2_easyroc\sender.c" -force-include-file "sender.h";"c:\home\rokd\l2d2_easyroc\sender.h" -force-include-file "SiTCP.c";"c:\home\rokd\l2d2_easyroc\SiTCP.c" -force-include-file "SiTCP.h";"c:\home\rokd\l2d2_easyroc\SiTCP.h" |
| /cvi/apps/l2d2_easyroc/cvibuild.l2d/Debug/CC_options.txt |
|---|
| 0,0 → 1,0 |
| -triple i386-pc-win32 -fno-caret-diagnostics -fno-gnu-keywords -fms-extensions -mms-bitfields -fmath-errno -mdisable-fp-elim -Wno-microsoft -Wno-error=invalid-token-paste -Werror=gnu -Werror=pointer-arith -Wno-pointer-sign -Wno-unreachable-code -Wno-parentheses -Wno-unused-variable -Wuninitialized -Wno-div-by-zero -Wno-array-bounds -Wno-null-dereference -Wno-ignored-qualifiers -Wreturn-type -Wno-panel-handle -Wno-tautological-compare -Wno-empty-body -Wno-missing-braces -Wno-overlength-strings -Wno-cast-align -Wno-missing-noreturn -Wno-invalid-noreturn -Wno-shadow -Wno-switch -Wno-switch-enum -Wno-unused-function -Wno-unused-label -Wno-unused-parameter -Wno-unused-value -Wno-used-but-marked-unused -Wno-conversion -Wno-sign-compare -Wno-char-subscripts -Wno-declaration-after-statement -Wno-typecheck-convert -Wno-float-equal -Wno-vla -Wno-attributes -Wno-unknown-attributes -Wno-deprecated-declarations -Wno-packed -Wno-padded -Wno-comment -Wno-format -Wno-implicit-int -Wno-implicit-function-declaration -Wno-builtin-implicit-decl -Wno-missing-declarations -Wno-missing-field-initializers -Wno-trigraphs -Wno-multichar -Wno-long-long -Wno-unknown-pragmas -Wno-ignored-pragmas -Wno-pragma-reset -Wno-pragma-on-off-switch -Wno-pragma-unused -Wno-end-of-directive -Wno-pragma-not-supported -Wno-unexpected-token -Wno-four-char-constants -Wno-discard-qual -Wno-sign-conversion -Wno-variadic-macros -Wno-macro-name -Wno-macro-poisoning -Wno-macro-redefined -Wno-builtin-macro-redefined -Wno-builtin-macro-undefined -Wno-unused-macros -Wno-gnu-designator -Wno-nonnull -Wno-constant-conversion -Wno-out-of-scope-declarations -Wno-static-non-static -Wno-constant-too-large -Wno-#warnings -Wno-undef -Wno-include-next -Wno-extra-tokens -Wno-line-number -Wno-weak -Wno-member-redeclare -Wno-expected-semi -Wno-too-many-args -Wno-literal-range -Wno-unknown-escape -Wno-shift -Wchar-init -Wno-braces-init -Wno-incomplete-field -Wno-tentative -Wno-ordered-comparison -Wno-pointer-compare -Wno-stack-memory -Wno-excess-elements -Wno-missing-terminating -Wno-illegal-storage -Wno-clang -Wno-backslash -Wno-decl-param -Wno-negative-to-unsigned -Wno-extern -Wno-constant-logical-operand -Wno-initializer-overrides -Wno-variadic-call-conv -Wno-main -Wno-omp-nested-parallel -Wno-omp-repeated-ordered -Wpointer-int-conv -Wint-conversion -Wpointer-conv -Wmissing-return-value -Winvalid-return -Wduplicate-decl-spec -Wpromoted-param -Wno-strict-prototypes -Wno-va-named-param -Wno-invalid-token-paste -fdiagnostics-show-option -cvi-debugging=standard -Wuninitialized-runtime -I "c:\Program Files\National Instruments\CVI2013\instr\CAMAC_2000" -I "c:\Program Files\National Instruments\CVI2013\instr\WIENVME_DLL" -I "c:\Program Files\National Instruments\CVI2013\instr\CAENV965" -I "c:\program files\national instruments\cvi2013\toolslib\activex\word" -I "c:\program files\national instruments\cvi2013\toolslib\activex\excel" -I "c:\program files\national instruments\cvi2013\toolslib\custctrl" -I "c:\program files\national instruments\cvi2013\toolslib\custctrl\custsupp" -I "c:\program files\national instruments\cvi2013\toolslib\cvirtsup" -I "c:\program files\national instruments\cvi2013\toolslib\datasock" -I "c:\program files\national instruments\cvi2013\toolslib\daqUtil" -I "c:\program files\national instruments\cvi2013\toolslib\printing" -I "c:\program files\national instruments\cvi2013\toolslib\toolbox" -I "c:\program files\national instruments\cvi2013\toolslib\reportgen" -I "c:\program files\national instruments\cvi2013\toolslib\localui" -I "c:\program files\national instruments\cvi2013\instr" -I "C:\Program Files\National Instruments\Shared\CVI\toolslib\custctrl" -I "C:\Program Files\National Instruments\Shared\CVI\toolslib\custctrl\custsupp" -I "C:\Program Files\National Instruments\Shared\CVI\instr" -I "C:\ProgramData\National Instruments\CVI2013\instr" -I "c:\program files\national instruments\cvi2013\include" -I "C:\Program Files\National Instruments\Shared\CVI\include" -I "C:\ProgramData\National Instruments\CVI2013\include" -I "C:\ProgramData\National Instruments\CVI\include" -I "c:\program files\national instruments\cvi2013\include\ansi" -I "c:\program files\national instruments\cvi2013\include\clang\2.9" -I "C:\Program Files\IVI Foundation\IVI\Include" -I "C:\Program Files\IVI Foundation\VISA\winnt\include" -I "c:\program files\national instruments\cvi2013\sdk\include" -I c:\home\cvi\instr\CAENV965 -I c:\home\cvi\instr\CAMAC_2000 -I c:\home\cvi\instr\WIENVME_DLL -I "c:\Program Files\National Instruments\CVI2013\bin" -I "c:\ProgramData\National Instruments\CVI2013\bin" -I "c:\Program Files\National Instruments\Shared\CVI\Bin" |
| /cvi/apps/l2d2_easyroc/cvibuild.l2d/Debug/CallCC.bat |
|---|
| 0,0 → 1,22 |
| @set INCLUDE= |
| @set LIB= |
| @set FileNum=%1 |
| @shift |
| @set SrcFileName=%1 |
| @shift |
| @set ObjFileName=%1 |
| @shift |
| @set DefProts=%1 |
| @shift |
| @set OutFileName=%1 |
| @shift |
| @set REST=%1 %2 %3 %4 %5 %6 %7 %8 %9 |
| @rem c:\home\rokd\l2d2_easyroc |
| @echo Compiling %FileNum% %SrcFileName% |
| @"c:\program files\national instruments\cvi2013\bin\clang\2.9\clang.exe" -cc1 -nostdinc -emit-obj -add-plugin cvi-emit-defprots -plugin-arg-cvi-emit-defprots %DefProts% %REST% -std=c99 @"CC_no_dep_options.txt" @"CC_options.txt" -D_CVI_="1302" -D_NI_i386_="1" -D_NI_mswin_="1" -D_NI_mswin32_="1" -D_CVI_DEBUG_="1" -D_CVI_EXE_="1" -D_LINK_CVIRTE_="1" -D_CVI_FDS_="1" -D_CVI_USE_FUNCS_FOR_VARS_="1" -D__DEFALIGN="8" -D_NI_VC_="220" -D_WIN32="1" -DWIN32="1" -D__WIN32__="1" -D_WINDOWS="1" -D__NT__="1" -D_M_IX86="400" -D__FLAT__="1" -D_PUSHPOP_SUPPORTED="1" -D_CVI_C99_EXTENSIONS_="1" -D_CVI_PROFILE_LEVEL_="0" -D_TARGET_FILE_VERSION_="\"1.0.0.0\"" -D_TARGET_PRODUCT_VERSION_="\"1.0.0.0\"" -D_OPENMP="200505" -D_CVI_CONFIGURATION_NAME_="\"Debug\"" -D_CVI_RTE_SHARED_="1" -DWIN32_LEAN_AND_MEAN -DWIENVME -o %ObjFileName% %SrcFileName% > %OutFileName% 2>&1 |
| @if errorlevel 1 goto err |
| @echo Compile succeeded for %FileNum% %SrcFileName% |
| @exit 0 |
| :err |
| @echo Compile failed for %FileNum% %SrcFileName% |
| @exit 1 |
| /cvi/apps/l2d2_easyroc/cvibuild.l2d/Debug/CallLink.bat |
|---|
| 0,0 → 1,9 |
| @"c:\program files\national instruments\cvi2013\bin\cvilink.exe" -cmd:link_options.txt -flags:0 -expiry:0 > Link.out 2>&1 |
| @if errorlevel 1 goto err |
| @echo Link success |
| @echo Link complete |
| @exit 0 |
| :err |
| @echo Link complete |
| @echo Link failed |
| @exit 1 |
| /cvi/apps/l2d2_easyroc/cvibuild.l2d/Debug/CallRC.bat |
|---|
| 0,0 → 1,8 |
| @echo "c:\program files\national instruments\cvi2013\sdk\bin\rc.exe" /d _CVI_ /i "c:\program files\national instruments\cvi2013\sdk\include" /fo %2 %1 |
| @"c:\program files\national instruments\cvi2013\sdk\bin\rc.exe" /d _CVI_ /i "c:\program files\national instruments\cvi2013\sdk\include" /fo %2 %1 > Rc.out 2>&1 |
| @if errorlevel 1 goto err |
| @echo RC complete |
| @exit 0 |
| :err |
| @echo RC failed |
| @exit 1 |
| /cvi/apps/l2d2_easyroc/cvibuild.l2d/Debug/Jamfile |
|---|
| 0,0 → 1,85 |
| CCFLAGS = -g ; |
| HDRS = "c:\\Program Files\\National Instruments\\CVI2013\\instr\\CAMAC_2000" |
| "c:\\Program Files\\National Instruments\\CVI2013\\instr\\WIENVME_DLL" |
| "c:\\Program Files\\National Instruments\\CVI2013\\instr\\CAENV965" |
| "c:\\program files\\national instruments\\cvi2013\\toolslib\\activex\\word" |
| "c:\\program files\\national instruments\\cvi2013\\toolslib\\activex\\excel" |
| "c:\\program files\\national instruments\\cvi2013\\toolslib\\custctrl" |
| "c:\\program files\\national instruments\\cvi2013\\toolslib\\custctrl\\custsupp" |
| "c:\\program files\\national instruments\\cvi2013\\toolslib\\cvirtsup" |
| "c:\\program files\\national instruments\\cvi2013\\toolslib\\datasock" |
| "c:\\program files\\national instruments\\cvi2013\\toolslib\\daqUtil" |
| "c:\\program files\\national instruments\\cvi2013\\toolslib\\printing" |
| "c:\\program files\\national instruments\\cvi2013\\toolslib\\toolbox" |
| "c:\\program files\\national instruments\\cvi2013\\toolslib\\reportgen" |
| "c:\\program files\\national instruments\\cvi2013\\toolslib\\localui" |
| "c:\\program files\\national instruments\\cvi2013\\instr" |
| "C:\\Program Files\\National Instruments\\Shared\\CVI\\toolslib\\custctrl" |
| "C:\\Program Files\\National Instruments\\Shared\\CVI\\toolslib\\custctrl\\custsupp" |
| "C:\\Program Files\\National Instruments\\Shared\\CVI\\instr" |
| "C:\\ProgramData\\National Instruments\\CVI2013\\instr" |
| "c:\\program files\\national instruments\\cvi2013\\include" |
| "C:\\Program Files\\National Instruments\\Shared\\CVI\\include" |
| "C:\\ProgramData\\National Instruments\\CVI2013\\include" |
| "C:\\ProgramData\\National Instruments\\CVI\\include" |
| "c:\\program files\\national instruments\\cvi2013\\include\\ansi" |
| "c:\\program files\\national instruments\\cvi2013\\include\\clang\\2.9" |
| "C:\\Program Files\\IVI Foundation\\IVI\\Include" |
| "C:\\Program Files\\IVI Foundation\\VISA\\winnt\\include" |
| "c:\\program files\\national instruments\\cvi2013\\sdk\\include" |
| "c:\\home\\cvi\\instr\\CAENV965" |
| "c:\\home\\cvi\\instr\\CAMAC_2000" |
| "c:\\home\\cvi\\instr\\WIENVME_DLL" |
| "c:\\Program Files\\National Instruments\\CVI2013\\bin" |
| "c:\\ProgramData\\National Instruments\\CVI2013\\bin" |
| "c:\\Program Files\\National Instruments\\Shared\\CVI\\Bin" |
| ; |
| include Jamfile_instr ; |
| LOCATE on "easiroc.c" = "c:\\home\\rokd\\l2d2_easyroc" ; |
| LOCATE on "easiroc.h" = "c:\\home\\rokd\\l2d2_easyroc" ; |
| LOCATE on "l2d.c" = "c:\\home\\rokd\\l2d2_easyroc" ; |
| LOCATE on "l2d_ui.h" = "c:\\home\\rokd\\l2d2_easyroc" ; |
| LOCATE on "sender.c" = "c:\\home\\rokd\\l2d2_easyroc" ; |
| LOCATE on "sender.h" = "c:\\home\\rokd\\l2d2_easyroc" ; |
| LOCATE on "SiTCP.c" = "c:\\home\\rokd\\l2d2_easyroc" ; |
| LOCATE on "SiTCP.h" = "c:\\home\\rokd\\l2d2_easyroc" ; |
| Object "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\easiroc.obj" : "c:\\home\\rokd\\l2d2_easyroc\\easiroc.c" ; |
| FILENUM on "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\easiroc.obj" = 1 ; |
| DEFPROTS on "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\easiroc.obj" = "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\easiroc.obj.cvidefprots" ; |
| OUTFILE on "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\easiroc.obj" = "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\easiroc.obj.out" ; |
| PrjObjects += "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\easiroc.obj" ; |
| Object "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\l2d.obj" : "c:\\home\\rokd\\l2d2_easyroc\\l2d.c" ; |
| FILENUM on "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\l2d.obj" = 2 ; |
| DEFPROTS on "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\l2d.obj" = "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\l2d.obj.cvidefprots" ; |
| OUTFILE on "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\l2d.obj" = "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\l2d.obj.out" ; |
| PrjObjects += "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\l2d.obj" ; |
| Object "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\sender.obj" : "c:\\home\\rokd\\l2d2_easyroc\\sender.c" ; |
| FILENUM on "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\sender.obj" = 3 ; |
| DEFPROTS on "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\sender.obj" = "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\sender.obj.cvidefprots" ; |
| OUTFILE on "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\sender.obj" = "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\sender.obj.out" ; |
| PrjObjects += "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\sender.obj" ; |
| Object "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\SiTCP.obj" : "c:\\home\\rokd\\l2d2_easyroc\\SiTCP.c" ; |
| FILENUM on "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\SiTCP.obj" = 4 ; |
| DEFPROTS on "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\SiTCP.obj" = "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\SiTCP.obj.cvidefprots" ; |
| OUTFILE on "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\SiTCP.obj" = "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\SiTCP.obj.out" ; |
| PrjObjects += "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\SiTCP.obj" ; |
| Object "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\camac.obj" : "c:\\home\\cvi\\instr\\CAMAC_2000\\camac.c" ; |
| FILENUM on "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\camac.obj" = 5 ; |
| DEFPROTS on "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\camac.obj" = "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\camac.obj.cvidefprots" ; |
| OUTFILE on "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\camac.obj" = "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\camac.obj.out" ; |
| InstrObjects += "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\camac.obj" ; |
| Object "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\CAENV965.obj" : "c:\\home\\cvi\\instr\\CAENV965\\CAENV965.c" ; |
| FILENUM on "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\CAENV965.obj" = 6 ; |
| DEFPROTS on "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\CAENV965.obj" = "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\CAENV965.obj.cvidefprots" ; |
| OUTFILE on "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\CAENV965.obj" = "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\CAENV965.obj.out" ; |
| InstrObjects += "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\CAENV965.obj" ; |
| Object "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\wienvme_dll.obj" : "c:\\home\\cvi\\instr\\WIENVME_DLL\\wienvme_dll.c" ; |
| FILENUM on "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\wienvme_dll.obj" = 7 ; |
| DEFPROTS on "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\wienvme_dll.obj" = "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\wienvme_dll.obj.cvidefprots" ; |
| OUTFILE on "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\wienvme_dll.obj" = "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\wienvme_dll.obj.out" ; |
| InstrObjects += "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\wienvme_dll.obj" ; |
| Object "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\resources.res" : "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\resources.in.rc" ; |
| MainFromObjects "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\l2d.exe" : $(PrjObjects) $(InstrObjects) ; |
| Depends "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\l2d.exe" : "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\link_options.txt" ; |
| Depends "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\l2d.exe" : "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\resources.res" ; |
| Depends all : "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\l2d.exe" ; |
| /cvi/apps/l2d2_easyroc/cvibuild.l2d/Debug/Jamfile_instr |
|---|
| 0,0 → 1,49 |
| Depends "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\l2d.exe" : "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\easiroc.obj" ; |
| Depends "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\l2d.exe" : "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\l2d.obj" ; |
| Depends "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\l2d.exe" : "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\sender.obj" ; |
| Depends "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\l2d.exe" : "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\SiTCP.obj" ; |
| Depends "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\l2d.exe" : "c:\\program files\\national instruments\\cvi2013\\sdk\\lib\\msvc\\advapi32.lib" ; |
| NoCare "c:\\program files\\national instruments\\cvi2013\\sdk\\lib\\msvc\\advapi32.lib" ; |
| Depends "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\l2d.exe" : "c:\\ProgramData\\National Instruments\\CVI2013\\bin\\msvc\\analysis.lib" ; |
| NoCare "c:\\ProgramData\\National Instruments\\CVI2013\\bin\\msvc\\analysis.lib" ; |
| Depends "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\l2d.exe" : "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\CAENV965.obj" ; |
| Depends "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\l2d.exe" : "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\camac.obj" ; |
| Depends "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\l2d.exe" : "c:\\Program Files\\National Instruments\\CVI2013\\bin\\msvc\\cviauto.lib" ; |
| NoCare "c:\\Program Files\\National Instruments\\CVI2013\\bin\\msvc\\cviauto.lib" ; |
| Depends "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\l2d.exe" : "c:\\Program Files\\National Instruments\\CVI2013\\bin\\msvc\\cviddc.lib" ; |
| NoCare "c:\\Program Files\\National Instruments\\CVI2013\\bin\\msvc\\cviddc.lib" ; |
| Depends "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\l2d.exe" : "c:\\Program Files\\National Instruments\\CVI2013\\bin\\msvc\\cvidotnet.lib" ; |
| NoCare "c:\\Program Files\\National Instruments\\CVI2013\\bin\\msvc\\cvidotnet.lib" ; |
| Depends "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\l2d.exe" : "c:\\Program Files\\National Instruments\\CVI2013\\bin\\msvc\\cvinetstreams.lib" ; |
| NoCare "c:\\Program Files\\National Instruments\\CVI2013\\bin\\msvc\\cvinetstreams.lib" ; |
| Depends "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\l2d.exe" : "c:\\Program Files\\National Instruments\\CVI2013\\bin\\msvc\\cvinetv.lib" ; |
| NoCare "c:\\Program Files\\National Instruments\\CVI2013\\bin\\msvc\\cvinetv.lib" ; |
| Depends "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\l2d.exe" : "c:\\Program Files\\National Instruments\\CVI2013\\bin\\msvc\\cvintwrk.lib" ; |
| NoCare "c:\\Program Files\\National Instruments\\CVI2013\\bin\\msvc\\cvintwrk.lib" ; |
| Depends "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\l2d.exe" : "c:\\Program Files\\National Instruments\\CVI2013\\bin\\msvc\\cvitdms.lib" ; |
| NoCare "c:\\Program Files\\National Instruments\\CVI2013\\bin\\msvc\\cvitdms.lib" ; |
| Depends "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\l2d.exe" : "c:\\program files\\national instruments\\cvi2013\\sdk\\lib\\msvc\\gdi32.lib" ; |
| NoCare "c:\\program files\\national instruments\\cvi2013\\sdk\\lib\\msvc\\gdi32.lib" ; |
| Depends "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\l2d.exe" : "c:\\Program Files\\National Instruments\\CVI2013\\bin\\msvc\\gpib.lib" ; |
| NoCare "c:\\Program Files\\National Instruments\\CVI2013\\bin\\msvc\\gpib.lib" ; |
| Depends "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\l2d.exe" : "c:\\Program Files\\National Instruments\\Shared\\CVI\\Bin\\msvc\\ivi.lib" ; |
| NoCare "c:\\Program Files\\National Instruments\\Shared\\CVI\\Bin\\msvc\\ivi.lib" ; |
| Depends "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\l2d.exe" : "c:\\program files\\national instruments\\cvi2013\\sdk\\lib\\msvc\\kernel32.lib" ; |
| NoCare "c:\\program files\\national instruments\\cvi2013\\sdk\\lib\\msvc\\kernel32.lib" ; |
| Depends "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\l2d.exe" : "c:\\Program Files\\National Instruments\\CVI2013\\bin\\msvc\\nivxi.lib" ; |
| NoCare "c:\\Program Files\\National Instruments\\CVI2013\\bin\\msvc\\nivxi.lib" ; |
| Depends "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\l2d.exe" : "c:\\Program Files\\National Instruments\\CVI2013\\bin\\msvc\\omp.lib" ; |
| NoCare "c:\\Program Files\\National Instruments\\CVI2013\\bin\\msvc\\omp.lib" ; |
| Depends "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\l2d.exe" : "c:\\Program Files\\National Instruments\\CVI2013\\toolslib\\toolbox\\msvc\\toolbox.obj" ; |
| NoCare "c:\\Program Files\\National Instruments\\CVI2013\\toolslib\\toolbox\\msvc\\toolbox.obj" ; |
| Depends "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\l2d.exe" : "c:\\program files\\national instruments\\cvi2013\\sdk\\lib\\msvc\\user32.lib" ; |
| NoCare "c:\\program files\\national instruments\\cvi2013\\sdk\\lib\\msvc\\user32.lib" ; |
| Depends "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\l2d.exe" : "c:\\program files\\national instruments\\cvi2013\\sdk\\lib\\msvc\\uuid.lib" ; |
| NoCare "c:\\program files\\national instruments\\cvi2013\\sdk\\lib\\msvc\\uuid.lib" ; |
| Depends "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\l2d.exe" : "c:\\Program Files\\National Instruments\\Shared\\CVI\\Bin\\msvc\\visa.lib" ; |
| NoCare "c:\\Program Files\\National Instruments\\Shared\\CVI\\Bin\\msvc\\visa.lib" ; |
| Depends "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\l2d.exe" : "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\wienvme_dll.obj" ; |
| Depends "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\l2d.exe" : "c:\\program files\\national instruments\\cvi2013\\sdk\\lib\\msvc\\winmm.lib" ; |
| NoCare "c:\\program files\\national instruments\\cvi2013\\sdk\\lib\\msvc\\winmm.lib" ; |
| Depends "c:\\home\\rokd\\l2d2_easyroc\\cvibuild.l2d\\Debug\\l2d.exe" : "c:\\Program Files\\Microsoft SDKs\\Windows\\v7.1A\\Lib\\WS2_32.Lib" ; |
| NoCare "c:\\Program Files\\Microsoft SDKs\\Windows\\v7.1A\\Lib\\WS2_32.Lib" ; |
| /cvi/apps/l2d2_easyroc/cvibuild.l2d/Debug/SiTCP.nidobj |
|---|
| Cannot display: file marked as a binary type. |
| svn:mime-type = application/octet-stream |
| Property changes: |
| Added: svn:mime-type |
| +application/octet-stream |
| \ No newline at end of property |
| /cvi/apps/l2d2_easyroc/cvibuild.l2d/Debug/SiTCP.obj |
|---|
| Cannot display: file marked as a binary type. |
| svn:mime-type = application/octet-stream |
| Property changes: |
| Added: svn:mime-type |
| +application/octet-stream |
| \ No newline at end of property |
| /cvi/apps/l2d2_easyroc/cvibuild.l2d/Debug/SiTCP.obj.cvidefprots |
|---|
| 0,0 → 1,48 |
| [SiTCPinit] |
| Class="Function" |
| Prototype="void SiTCPinit();" |
| [SiTCPclose] |
| Class="Function" |
| Prototype="void SiTCPclose();" |
| [SiTCPSetIPPort] |
| Class="Function" |
| Prototype="int SiTCPSetIPPort(char *IpAddr, unsigned int tcp, unsigned int udp);" |
| [SiTCPCreateTCPSock] |
| Class="Function" |
| Prototype="int SiTCPCreateTCPSock();" |
| [SiTCPCreateUDPSock] |
| Class="Function" |
| Prototype="int SiTCPCreateUDPSock();" |
| [SiTCPCloseUDPSock] |
| Class="Function" |
| Prototype="int SiTCPCloseUDPSock();" |
| [SiTCPCloseTCPSock] |
| Class="Function" |
| Prototype="int SiTCPCloseTCPSock();" |
| [SiTCPRBCPskeleton] |
| Class="Function" |
| Prototype="void SiTCPRBCPskeleton(unsigned char type, unsigned char command, unsigned char id, unsigned char length, unsigned int address);" |
| [SiTCPrcvRBCP_ACK] |
| Class="Function" |
| Prototype="int SiTCPrcvRBCP_ACK(int output);" |
| [SiTCPGetTCPSock] |
| Class="Function" |
| Prototype="int SiTCPGetTCPSock();" |
| [SiTCPGetUDPSock] |
| Class="Function" |
| Prototype="int SiTCPGetUDPSock();" |
| [SiTCPGetSiTCPsndHeader] |
| Class="Function" |
| Prototype="struct bcp_header SiTCPGetSiTCPsndHeader();" |
| /cvi/apps/l2d2_easyroc/cvibuild.l2d/Debug/camac.nidobj |
|---|
| Cannot display: file marked as a binary type. |
| svn:mime-type = application/octet-stream |
| Property changes: |
| Added: svn:mime-type |
| +application/octet-stream |
| \ No newline at end of property |
| /cvi/apps/l2d2_easyroc/cvibuild.l2d/Debug/camac.obj |
|---|
| Cannot display: file marked as a binary type. |
| svn:mime-type = application/octet-stream |
| Property changes: |
| Added: svn:mime-type |
| +application/octet-stream |
| \ No newline at end of property |
| /cvi/apps/l2d2_easyroc/cvibuild.l2d/Debug/camac.obj.cvidefprots |
|---|
| 0,0 → 1,20 |
| [CAMAC_map] |
| Class="Function" |
| Prototype="void CAMAC_map();" |
| [CAMAC_cccc] |
| Class="Function" |
| Prototype="void CAMAC_cccc(unsigned long *c_ext);" |
| [CAMAC_cccd] |
| Class="Function" |
| Prototype="void CAMAC_cccd(unsigned long *c_ext, unsigned long *c_sw);" |
| [CAMAC_ccci] |
| Class="Function" |
| Prototype="void CAMAC_ccci(unsigned long *c_ext, unsigned long *c_sw);" |
| [CAMAC_cccz] |
| Class="Function" |
| Prototype="void CAMAC_cccz(unsigned long *c_ext);" |
| /cvi/apps/l2d2_easyroc/cvibuild.l2d/Debug/dlldependencies.txt |
|---|
| 0,0 → 1,8 |
| cvi.lib |
| cvirte.dll |
| kernel32.lib |
| KERNEL32.dll |
| WS2_32.Lib |
| WS2_32.dll |
| user32.lib |
| USER32.dll |
| /cvi/apps/l2d2_easyroc/cvibuild.l2d/Debug/easiroc.nidobj |
|---|
| Cannot display: file marked as a binary type. |
| svn:mime-type = application/octet-stream |
| Property changes: |
| Added: svn:mime-type |
| +application/octet-stream |
| \ No newline at end of property |
| /cvi/apps/l2d2_easyroc/cvibuild.l2d/Debug/easiroc.obj |
|---|
| Cannot display: file marked as a binary type. |
| svn:mime-type = application/octet-stream |
| Property changes: |
| Added: svn:mime-type |
| +application/octet-stream |
| \ No newline at end of property |
| /cvi/apps/l2d2_easyroc/cvibuild.l2d/Debug/easiroc.obj.cvidefprots |
|---|
| 0,0 → 1,80 |
| [usleep] |
| Class="Function" |
| Prototype="void usleep(long long usec);" |
| [easiroc_Init] |
| Class="Function" |
| Prototype="int easiroc_Init(const char *SiTCP_MASTER_IP, unsigned int daq_mode);" |
| [easiroc_Close] |
| Class="Function" |
| Prototype="void easiroc_Close();" |
| [WriteData] |
| Class="Function" |
| Prototype="int WriteData(unsigned int sock, unsigned int data);" |
| [PrepareFPGA] |
| Class="Function" |
| Prototype="void PrepareFPGA();" |
| [PrepareSC] |
| Class="Function" |
| Prototype="void PrepareSC(int chipNo);" |
| [PrepareReadSC] |
| Class="Function" |
| Prototype="void PrepareReadSC(int chipNo);" |
| [DebugFPGA] |
| Class="Function" |
| Prototype="int DebugFPGA(unsigned int socket);" |
| [TransmitSC] |
| Class="Function" |
| Prototype="int TransmitSC(unsigned int socket);" |
| [TransmitReadSC] |
| Class="Function" |
| Prototype="int TransmitReadSC(unsigned int socket);" |
| [PreparePSC] |
| Class="Function" |
| Prototype="int PreparePSC(int CurrentCh, int CurrentProbeType);" |
| [TransmitProbe] |
| Class="Function" |
| Prototype="int TransmitProbe(unsigned int socket);" |
| [easiroc_fTransmitSC] |
| Class="Function" |
| Prototype="int easiroc_fTransmitSC();" |
| [easiroc_fTransmitReadSC] |
| Class="Function" |
| Prototype="int easiroc_fTransmitReadSC();" |
| [easiroc_fAsicInitialize] |
| Class="Function" |
| Prototype="int easiroc_fAsicInitialize();" |
| [easiroc_fTransmitProbe] |
| Class="Function" |
| Prototype="int easiroc_fTransmitProbe(int CurrentCh, int CurrentProbe);" |
| [ADCOneCycle_wHeader_ver2] |
| Class="Function" |
| Prototype="int ADCOneCycle_wHeader_ver2(unsigned int socket, FILE *file);" |
| [ADCStop] |
| Class="Function" |
| Prototype="void ADCStop(unsigned int socket);" |
| [ContinuousADC_ver2] |
| Class="Function" |
| Prototype="int ContinuousADC_ver2(unsigned int socket, char *file_name, int MaxCycleNum);" |
| [easiroc_fDAQ] |
| Class="Function" |
| Prototype="int easiroc_fDAQ(char *file_name, int MaxCycleNum);" |
| /cvi/apps/l2d2_easyroc/cvibuild.l2d/Debug/l2d.exe |
|---|
| Cannot display: file marked as a binary type. |
| svn:mime-type = application/octet-stream |
| Property changes: |
| Added: svn:mime-type |
| +application/octet-stream |
| \ No newline at end of property |
| /cvi/apps/l2d2_easyroc/cvibuild.l2d/Debug/l2d.nidobj |
|---|
| Cannot display: file marked as a binary type. |
| svn:mime-type = application/octet-stream |
| Property changes: |
| Added: svn:mime-type |
| +application/octet-stream |
| \ No newline at end of property |
| /cvi/apps/l2d2_easyroc/cvibuild.l2d/Debug/l2d.obj |
|---|
| Cannot display: file marked as a binary type. |
| svn:mime-type = application/octet-stream |
| Property changes: |
| Added: svn:mime-type |
| +application/octet-stream |
| \ No newline at end of property |
| /cvi/apps/l2d2_easyroc/cvibuild.l2d/Debug/l2d.obj.cvidefprots |
|---|
| 0,0 → 1,24 |
| [wait_loop] |
| Class="Function" |
| Prototype="void wait_loop(unsigned long iloop);" |
| [cb_timer] |
| Class="Function" |
| Prototype="int cb_timer(int panel, int control, int event, void *callbackData, int eventData1, int eventData2);" |
| [update_plots] |
| Class="Function" |
| Prototype="int update_plots();" |
| [daq_run] |
| Class="Function" |
| Prototype="int daq_run(void *functionData);" |
| [WinMain] |
| Class="Function" |
| Prototype="int WinMain(struct HINSTANCE__ *hInstance, struct HINSTANCE__ *hPrevInstance, char *lpszCmdLine, int nCmdShow);" |
| [max_from] |
| Class="Function" |
| Prototype="int max_from(int *array, int ifrom, int ito);" |
| /cvi/apps/l2d2_easyroc/cvibuild.l2d/Debug/link_options.txt |
|---|
| 0,0 → 1,44 |
| -nologo |
| -out:c:\home\rokd\l2d2_easyroc\cvibuild.l2d\Debug\l2d.exe |
| -arch:x86 |
| -timestamp |
| -debug:2 |
| -res:c:\home\rokd\l2d2_easyroc\cvibuild.l2d\Debug\resources.res |
| -entry:_CVIWinMainStartupCodeForDebugging@0 |
| -base:0x400000 |
| -linked:c:\home\rokd\l2d2_easyroc\cvibuild.l2d\Debug\linkersummary.txt |
| -dlldeps:c:\home\rokd\l2d2_easyroc\cvibuild.l2d\Debug\dlldependencies.txt |
| -licensing:c:\home\rokd\l2d2_easyroc\cvibuild.l2d\Debug\linkerlicensing.txt |
| -browsedeps:c:\home\rokd\l2d2_easyroc\cvibuild.l2d\Debug\moduledependencies.txt |
| -stackreserve:1048576 |
| -stackcommit:4096 |
| -in:c:\home\rokd\l2d2_easyroc\cvibuild.l2d\Debug\easiroc.obj |
| -in:c:\home\rokd\l2d2_easyroc\cvibuild.l2d\Debug\l2d.obj |
| -in:c:\home\rokd\l2d2_easyroc\cvibuild.l2d\Debug\sender.obj |
| -in:c:\home\rokd\l2d2_easyroc\cvibuild.l2d\Debug\SiTCP.obj |
| -more:c:\program files\national instruments\cvi2013\bin\msvc\cvistart.lib |
| -more:c:\program files\national instruments\cvi2013\bin\msvc\cvi.lib |
| -more:c:\program files\national instruments\cvi2013\sdk\lib\msvc\advapi32.lib |
| -more:c:\ProgramData\National Instruments\CVI2013\bin\msvc\analysis.lib |
| -more:c:\home\rokd\l2d2_easyroc\cvibuild.l2d\Debug\CAENV965.obj |
| -more:c:\home\rokd\l2d2_easyroc\cvibuild.l2d\Debug\camac.obj |
| -more:c:\Program Files\National Instruments\CVI2013\bin\msvc\cviauto.lib |
| -more:c:\Program Files\National Instruments\CVI2013\bin\msvc\cviddc.lib |
| -more:c:\Program Files\National Instruments\CVI2013\bin\msvc\cvidotnet.lib |
| -more:c:\Program Files\National Instruments\CVI2013\bin\msvc\cvinetstreams.lib |
| -more:c:\Program Files\National Instruments\CVI2013\bin\msvc\cvinetv.lib |
| -more:c:\Program Files\National Instruments\CVI2013\bin\msvc\cvintwrk.lib |
| -more:c:\Program Files\National Instruments\CVI2013\bin\msvc\cvitdms.lib |
| -more:c:\program files\national instruments\cvi2013\sdk\lib\msvc\gdi32.lib |
| -more:c:\Program Files\National Instruments\CVI2013\bin\msvc\gpib.lib |
| -more:c:\Program Files\National Instruments\Shared\CVI\Bin\msvc\ivi.lib |
| -more:c:\program files\national instruments\cvi2013\sdk\lib\msvc\kernel32.lib |
| -more:c:\Program Files\National Instruments\CVI2013\bin\msvc\nivxi.lib |
| -more:c:\Program Files\National Instruments\CVI2013\bin\msvc\omp.lib |
| -more:c:\Program Files\National Instruments\CVI2013\toolslib\toolbox\msvc\toolbox.obj |
| -more:c:\program files\national instruments\cvi2013\sdk\lib\msvc\user32.lib |
| -more:c:\program files\national instruments\cvi2013\sdk\lib\msvc\uuid.lib |
| -more:c:\Program Files\National Instruments\Shared\CVI\Bin\msvc\visa.lib |
| -more:c:\home\rokd\l2d2_easyroc\cvibuild.l2d\Debug\wienvme_dll.obj |
| -more:c:\program files\national instruments\cvi2013\sdk\lib\msvc\winmm.lib |
| -more:c:\Program Files\Microsoft SDKs\Windows\v7.1A\Lib\WS2_32.Lib |
| /cvi/apps/l2d2_easyroc/cvibuild.l2d/Debug/linkersummary.txt |
|---|
| 0,0 → 1,12 |
| easiroc.obj |
| l2d.obj |
| sender.obj |
| SiTCP.obj |
| cvi.lib |
| analysis.lib |
| cvistart.lib |
| kernel32.lib |
| WS2_32.Lib |
| user32.lib |
| EXE Symbol Module |
| Resource Module |
| /cvi/apps/l2d2_easyroc/cvibuild.l2d/Debug/moduledependencies.txt |
|---|
| Cannot display: file marked as a binary type. |
| svn:mime-type = application/octet-stream |
| Property changes: |
| Added: svn:mime-type |
| +application/octet-stream |
| \ No newline at end of property |
| /cvi/apps/l2d2_easyroc/cvibuild.l2d/Debug/resources.in.rc |
|---|
| 0,0 → 1,37 |
| #include "c:\program files\national instruments\cvi2013\sdk\include\winver.h" |
| 2 ICON "c:\\program files\\national instruments\\cvi2013\\bin\\default.ico" |
| STRINGTABLE DISCARDABLE |
| BEGIN |
| 65535 "l2d" |
| END |
| VS_VERSION_INFO VERSIONINFO |
| FILEVERSION 1,0,0,0 |
| PRODUCTVERSION 1,0,0,0 |
| FILEFLAGSMASK VS_FFI_FILEFLAGSMASK |
| FILEFLAGS 0x1L |
| FILEOS VOS__WINDOWS32 |
| FILETYPE VFT_APP |
| FILESUBTYPE VFT_UNKNOWN |
| BEGIN |
| BLOCK "StringFileInfo" |
| BEGIN |
| BLOCK "040904b0" |
| BEGIN |
| VALUE "CompanyName", "\0" |
| VALUE "FileDescription", "l2d (Debug x86)\0" |
| VALUE "FileVersion", "1.0\0" |
| VALUE "InternalName", "l2d\0" |
| VALUE "LegalCopyright", "Copyright © 2018\0" |
| VALUE "OriginalFilename", "l2d.exe\0" |
| VALUE "ProductName", " l2d\0" |
| VALUE "ProductVersion", "1.0\0" |
| END |
| END |
| BLOCK "VarFileInfo" |
| BEGIN |
| VALUE "Translation", 0x409, 0x4b0 |
| END |
| END |
| /cvi/apps/l2d2_easyroc/cvibuild.l2d/Debug/resources.res |
|---|
| Cannot display: file marked as a binary type. |
| svn:mime-type = application/octet-stream |
| Property changes: |
| Added: svn:mime-type |
| +application/octet-stream |
| \ No newline at end of property |
| /cvi/apps/l2d2_easyroc/cvibuild.l2d/Debug/sender.nidobj |
|---|
| Cannot display: file marked as a binary type. |
| svn:mime-type = application/octet-stream |
| Property changes: |
| Added: svn:mime-type |
| +application/octet-stream |
| \ No newline at end of property |
| /cvi/apps/l2d2_easyroc/cvibuild.l2d/Debug/sender.obj |
|---|
| Cannot display: file marked as a binary type. |
| svn:mime-type = application/octet-stream |
| Property changes: |
| Added: svn:mime-type |
| +application/octet-stream |
| \ No newline at end of property |
| /cvi/apps/l2d2_easyroc/cvibuild.l2d/Debug/sender.obj.cvidefprots |
|---|
| 0,0 → 1,36 |
| [SenderInit] |
| Class="Function" |
| Prototype="void SenderInit();" |
| [SenderClose] |
| Class="Function" |
| Prototype="void SenderClose();" |
| [Senderudp_send] |
| Class="Function" |
| Prototype="void Senderudp_send(unsigned int address, int data);" |
| [Senderudp_recv] |
| Class="Function" |
| Prototype="int Senderudp_recv(unsigned int address, int data);" |
| [SenderRBCPpacket_send] |
| Class="Function" |
| Prototype="void SenderRBCPpacket_send(unsigned int address, unsigned char length, int *data);" |
| [SenderRBCPpacket_recv] |
| Class="Function" |
| Prototype="void SenderRBCPpacket_recv(unsigned int address, unsigned char length, int *data);" |
| [SenderRBCP_multi_packet_send] |
| Class="Function" |
| Prototype="void SenderRBCP_multi_packet_send(unsigned int address, unsigned int total_length, int *data);" |
| [Senderread_madc] |
| Class="Function" |
| Prototype="int Senderread_madc(int data);" |
| [Senderclear_all] |
| Class="Function" |
| Prototype="void Senderclear_all();" |
| /cvi/apps/l2d2_easyroc/cvibuild.l2d/Debug/wienvme_dll.nidobj |
|---|
| Cannot display: file marked as a binary type. |
| svn:mime-type = application/octet-stream |
| Property changes: |
| Added: svn:mime-type |
| +application/octet-stream |
| \ No newline at end of property |
| /cvi/apps/l2d2_easyroc/cvibuild.l2d/Debug/wienvme_dll.obj |
|---|
| Cannot display: file marked as a binary type. |
| svn:mime-type = application/octet-stream |
| Property changes: |
| Added: svn:mime-type |
| +application/octet-stream |
| \ No newline at end of property |
| /cvi/apps/l2d2_easyroc/cvibuild.l2d/Debug/wienvme_dll.obj.cvidefprots |
|---|
| 0,0 → 1,100 |
| [WIENVME_load] |
| Class="Function" |
| Prototype="void WIENVME_load(char *module_path);" |
| [WIENVME_open] |
| Class="Function" |
| Prototype="int WIENVME_open(int *hHandle, unsigned char AddMod, char *device_name, unsigned short module_number);" |
| [WIENVME_open24] |
| Class="Function" |
| Prototype="int WIENVME_open24();" |
| [WIENVME_open32] |
| Class="Function" |
| Prototype="int WIENVME_open32();" |
| [WIENVME_start] |
| Class="Function" |
| Prototype="int WIENVME_start(char *module_path);" |
| [WIENVME_unload] |
| Class="Function" |
| Prototype="void WIENVME_unload();" |
| [WIENVME_close] |
| Class="Function" |
| Prototype="int WIENVME_close(int hHandle);" |
| [WIENVME_close24] |
| Class="Function" |
| Prototype="int WIENVME_close24();" |
| [WIENVME_close32] |
| Class="Function" |
| Prototype="int WIENVME_close32();" |
| [WIENVME_stop] |
| Class="Function" |
| Prototype="int WIENVME_stop();" |
| [WIENVME_reset] |
| Class="Function" |
| Prototype="int WIENVME_reset();" |
| [WIENVME_read8] |
| Class="Function" |
| Prototype="int WIENVME_read8(int hHandle, unsigned long n, unsigned long at, void *buff);" |
| [WIENVME_read16] |
| Class="Function" |
| Prototype="int WIENVME_read16(int hHandle, unsigned long n, unsigned long at, void *buff);" |
| [WIENVME_read32] |
| Class="Function" |
| Prototype="int WIENVME_read32(int hHandle, unsigned long n, unsigned long at, void *buff);" |
| [WIENVME_write8] |
| Class="Function" |
| Prototype="int WIENVME_write8(int hHandle, unsigned long n, unsigned long at, void *buff);" |
| [WIENVME_write16] |
| Class="Function" |
| Prototype="int WIENVME_write16(int hHandle, unsigned long n, unsigned long at, void *buff);" |
| [WIENVME_write32] |
| Class="Function" |
| Prototype="int WIENVME_write32(int hHandle, unsigned long n, unsigned long at, void *buff);" |
| [WIENVME_VME_R] |
| Class="Function" |
| Prototype="short WIENVME_VME_R(unsigned short AM, unsigned short DW, unsigned int VME_Address, unsigned int *Data);" |
| [WIENVME_VME_W] |
| Class="Function" |
| Prototype="short WIENVME_VME_W(unsigned short AM, unsigned short DW, unsigned int VME_Address, unsigned int Data);" |
| [WIENVME_VME_MW] |
| Class="Function" |
| Prototype="short WIENVME_VME_MW(unsigned short AM, unsigned short DW, unsigned int VME_Address, unsigned int Data);" |
| [WIENVME_VME_MWRST] |
| Class="Function" |
| Prototype="short WIENVME_VME_MWRST();" |
| [WIENVME_VME_MWEXEC] |
| Class="Function" |
| Prototype="short WIENVME_VME_MWEXEC();" |
| [WIENVME_VME_MR] |
| Class="Function" |
| Prototype="short WIENVME_VME_MR(unsigned short AM, unsigned short DW, unsigned int VME_Address, unsigned int *Data);" |
| [WIENVME_VME_MRRST] |
| Class="Function" |
| Prototype="short WIENVME_VME_MRRST();" |
| [WIENVME_VME_MREXEC] |
| Class="Function" |
| Prototype="short WIENVME_VME_MREXEC(unsigned int *Data);" |
| /cvi/apps/l2d2_easyroc/cvibuild.l2d/build.ini |
|---|
| 0,0 → 1,226 |
| [File 0001] |
| Path = "/c/Program Files/National Instruments/CVI2012/instr/CAENV965/CAENV965.c" |
| Object Format_Debug = "Win32-MSVC" |
| Object Format_Release = "Unknown" |
| Object Format_Debug64 = "Unknown" |
| Object Format_Release64 = "Unknown" |
| ForceCompile_Debug = False |
| ForceCompile_Release = False |
| ForceCompile_Debug64 = False |
| ForceCompile_Release64 = False |
| Object Format Version = 1 |
| Header Dependencies Line0001 = "2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31," |
| Header Dependencies Line0002 = "32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58" |
| Header Dependencies Line0003 = ",59,60,61,62,64,65,66,67,68,71," |
| [File 0002] |
| Path = "/c/Program Files/National Instruments/CVI2012/instr/CAMAC_2000/camac.c" |
| Object Format_Debug = "Win32-MSVC" |
| Object Format_Release = "Unknown" |
| Object Format_Debug64 = "Unknown" |
| Object Format_Release64 = "Unknown" |
| ForceCompile_Debug = False |
| ForceCompile_Release = False |
| ForceCompile_Debug64 = False |
| ForceCompile_Release64 = False |
| Object Format Version = 1 |
| Header Dependencies Line0001 = "2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31," |
| Header Dependencies Line0002 = "32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58" |
| Header Dependencies Line0003 = ",59,60,61,62,63," |
| [File 0003] |
| Path = "/c/home/rokd/temp/l2d2_easyroc/easiroc.c" |
| Object Format_Debug = "Win32-MSVC" |
| Object Format_Release = "Unknown" |
| Object Format_Debug64 = "Unknown" |
| Object Format_Release64 = "Unknown" |
| ForceCompile_Debug = True |
| ForceCompile_Release = True |
| ForceCompile_Debug64 = True |
| ForceCompile_Release64 = True |
| Object Format Version = 1 |
| Header Dependencies Line0001 = "2,3,5,8,9,17,20,22,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,4" |
| Header Dependencies Line0002 = "5,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,74,75,76,77,80," |
| [File 0004] |
| Path = "/c/home/rokd/temp/l2d2_easyroc/l2d.c" |
| Object Format_Debug = "Win32-MSVC" |
| Object Format_Release = "Unknown" |
| Object Format_Debug64 = "Unknown" |
| Object Format_Release64 = "Unknown" |
| ForceCompile_Debug = True |
| ForceCompile_Release = False |
| ForceCompile_Debug64 = False |
| ForceCompile_Release64 = False |
| Object Format Version = 1 |
| Header Dependencies Line0001 = "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,29,30,31" |
| Header Dependencies Line0002 = ",32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,5" |
| Header Dependencies Line0003 = "8,59,60,61,62,69,70,72,73,74,75,76,77,78,80," |
| [File 0005] |
| Path = "/c/home/rokd/temp/l2d2_easyroc/sender.c" |
| Object Format_Debug = "Win32-MSVC" |
| Object Format_Release = "Unknown" |
| Object Format_Debug64 = "Unknown" |
| Object Format_Release64 = "Unknown" |
| ForceCompile_Debug = False |
| ForceCompile_Release = True |
| ForceCompile_Debug64 = True |
| ForceCompile_Release64 = True |
| Object Format Version = 1 |
| Header Dependencies Line0001 = "2,3,5,8,9,17,20,22,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,4" |
| Header Dependencies Line0002 = "5,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,73,74,75,76,77,78," |
| [File 0006] |
| Path = "/c/home/rokd/temp/l2d2_easyroc/SiTCP.c" |
| Object Format_Debug = "Win32-MSVC" |
| Object Format_Release = "Unknown" |
| Object Format_Debug64 = "Unknown" |
| Object Format_Release64 = "Unknown" |
| ForceCompile_Debug = False |
| ForceCompile_Release = True |
| ForceCompile_Debug64 = True |
| ForceCompile_Release64 = True |
| Object Format Version = 1 |
| Header Dependencies Line0001 = "2,3,5,8,9,17,20,22,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,4" |
| Header Dependencies Line0002 = "5,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,73,74,75,76,77," |
| [File 0007] |
| Path = "/c/Program Files/National Instruments/CVI2012/instr/WIENVME_DLL/wienvme_dll.c" |
| Object Format_Debug = "Win32-MSVC" |
| Object Format_Release = "Unknown" |
| Object Format_Debug64 = "Unknown" |
| Object Format_Release64 = "Unknown" |
| ForceCompile_Debug = False |
| ForceCompile_Release = False |
| ForceCompile_Debug64 = False |
| ForceCompile_Release64 = False |
| Object Format Version = 1 |
| Header Dependencies Line0001 = "2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,3" |
| Header Dependencies Line0002 = "1,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57," |
| Header Dependencies Line0003 = "58,59,60,61,62," |
| [Create Executable] |
| Target Creation Date_Debug = 3602830855 |
| Force Creation of Target_Debug = False |
| Needs To Rebuild Resource File_Debug = False |
| File Version Incremented_Debug = False |
| Target Creation Date_Release = 0 |
| Force Creation of Target_Release = False |
| Needs To Rebuild Resource File_Release = True |
| File Version Incremented_Release = False |
| Target Creation Date_Debug64 = 0 |
| Force Creation of Target_Debug64 = False |
| Needs To Rebuild Resource File_Debug64 = True |
| File Version Incremented_Debug64 = False |
| Target Creation Date_Release64 = 0 |
| Force Creation of Target_Release64 = False |
| Needs To Rebuild Resource File_Release64 = True |
| File Version Incremented_Release64 = False |
| Uses NIReports = 0 |
| Uses USI = 0 |
| Uses TDM Streaming = 0 |
| Uses Analysis = 1 |
| Uses Network Variable = 0 |
| Uses DAQmx = 0 |
| Uses CAN = 0 |
| Uses VISA = 0 |
| Uses GPIB = 0 |
| Uses IVI = 0 |
| Uses IMAQ = 0 |
| Uses FlexMotion = 0 |
| Uses Motion = 0 |
| Uses DMM = 0 |
| Uses FGen = 0 |
| Uses Scope = 0 |
| Uses HSDIO = 0 |
| [Included Headers] |
| Header 0079 = "/c/home/rokd/temp/l2d2_easyroc/easiroc.c" |
| Header 0072 = "/c/home/rokd/temp/l2d2_easyroc/l2d_ui.h" |
| Header 0073 = "/c/home/rokd/temp/l2d2_easyroc/SiTCP.h" |
| Header 0078 = "/c/home/rokd/temp/l2d2_easyroc/sender.h" |
| Header 0080 = "/c/home/rokd/temp/l2d2_easyroc/easiroc.h" |
| Header 0001 = "/c/Program Files/National Instruments/CVI2012/include/userint.h" |
| Header 0002 = "/c/Program Files/National Instruments/CVI2012/include/cvidef.h" |
| Header 0003 = "/c/Program Files/National Instruments/CVI2012/include/cvirte.h" |
| Header 0004 = "/c/Program Files/National Instruments/CVI2012/include/utility.h" |
| Header 0005 = "/c/Program Files/National Instruments/CVI2012/include/ansi/stdlib.h" |
| Header 0006 = "/c/Program Files/National Instruments/CVI2012/include/ansi_c.h" |
| Header 0007 = "/c/Program Files/National Instruments/CVI2012/include/ansi/assert.h" |
| Header 0008 = "/c/Program Files/National Instruments/CVI2012/include/ansi/ctype.h" |
| Header 0009 = "/c/Program Files/National Instruments/CVI2012/include/ansi/errno.h" |
| Header 0010 = "/c/Program Files/National Instruments/CVI2012/include/ansi/float.h" |
| Header 0011 = "/c/Program Files/National Instruments/CVI2012/include/ansi/limits.h" |
| Header 0012 = "/c/Program Files/National Instruments/CVI2012/include/ansi/locale.h" |
| Header 0013 = "/c/Program Files/National Instruments/CVI2012/include/ansi/math.h" |
| Header 0014 = "/c/Program Files/National Instruments/CVI2012/include/mbsupp.h" |
| Header 0015 = "/c/Program Files/National Instruments/CVI2012/include/ansi/setjmp.h" |
| Header 0016 = "/c/Program Files/National Instruments/CVI2012/include/ansi/signal.h" |
| Header 0017 = "/c/Program Files/National Instruments/CVI2012/include/ansi/stdarg.h" |
| Header 0018 = "/c/Program Files/National Instruments/CVI2012/include/ansi/stddef.h" |
| Header 0019 = "/c/Program Files/National Instruments/CVI2012/include/ansi/stdint.h" |
| Header 0020 = "/c/Program Files/National Instruments/CVI2012/include/ansi/stdio.h" |
| Header 0021 = "/c/Program Files/National Instruments/CVI2012/include/stdlibex.h" |
| Header 0022 = "/c/Program Files/National Instruments/CVI2012/include/ansi/string.h" |
| Header 0023 = "/c/Program Files/National Instruments/CVI2012/include/ansi/time.h" |
| Header 0024 = "/c/Program Files/National Instruments/CVI2012/instr/WIENVME_DLL/wienvme_dll.h" |
| Header 0025 = "/c/Program Files/National Instruments/CVI2012/sdk/include/Windows.h" |
| Header 0026 = "/c/Program Files/National Instruments/CVI2012/sdk/include/sdkddkver.h" |
| Header 0027 = "/c/Program Files/National Instruments/CVI2012/sdk/include/driverspecs.h" |
| Header 0028 = "/c/Program Files/National Instruments/CVI2012/sdk/include/specstrings.h" |
| Header 0029 = "/c/Program Files/National Instruments/CVI2012/sdk/include/sal_supp.h" |
| Header 0030 = "/c/Program Files/National Instruments/CVI2012/sdk/include/specstrings_supp.h" |
| Header 0031 = "/c/Program Files/National Instruments/CVI2012/sdk/include/specstrings_strict.h" |
| Header 0032 = "/c/Program Files/National Instruments/CVI2012/sdk/include/specstrings_undef.h" |
| Header 0033 = "/c/Program Files/National Instruments/CVI2012/sdk/include/sdv_driverspecs.h" |
| Header 0034 = "/c/Program Files/National Instruments/CVI2012/sdk/include/WinDef.h" |
| Header 0035 = "/c/Program Files/National Instruments/CVI2012/sdk/include/WinNT.h" |
| Header 0036 = "/c/Program Files/National Instruments/CVI2012/sdk/include/kernelspecs.h" |
| Header 0037 = "/c/Program Files/National Instruments/CVI2012/sdk/include/BaseTsd.h" |
| Header 0038 = "/c/Program Files/National Instruments/CVI2012/sdk/include/Guiddef.h" |
| Header 0039 = "/c/Program Files/National Instruments/CVI2012/sdk/include/PshPack4.h" |
| Header 0040 = "/c/Program Files/National Instruments/CVI2012/sdk/include/PopPack.h" |
| Header 0041 = "/c/Program Files/National Instruments/CVI2012/sdk/include/PshPack2.h" |
| Header 0042 = "/c/Program Files/National Instruments/CVI2012/sdk/include/PshPack8.h" |
| Header 0043 = "/c/Program Files/National Instruments/CVI2012/sdk/include/ktmtypes.h" |
| Header 0044 = "/c/Program Files/National Instruments/CVI2012/sdk/include/WinBase.h" |
| Header 0045 = "/c/Program Files/National Instruments/CVI2012/sdk/include/WinError.h" |
| Header 0046 = "/c/Program Files/National Instruments/CVI2012/sdk/include/WinGDI.h" |
| Header 0047 = "/c/Program Files/National Instruments/CVI2012/sdk/include/PshPack1.h" |
| Header 0048 = "/c/Program Files/National Instruments/CVI2012/sdk/include/WinUser.h" |
| Header 0049 = "/c/Program Files/National Instruments/CVI2012/sdk/include/Tvout.h" |
| Header 0050 = "/c/Program Files/National Instruments/CVI2012/sdk/include/WinNls.h" |
| Header 0051 = "/c/Program Files/National Instruments/CVI2012/sdk/include/WinCon.h" |
| Header 0052 = "/c/Program Files/National Instruments/CVI2012/sdk/include/WinVer.h" |
| Header 0053 = "/c/Program Files/National Instruments/CVI2012/sdk/include/VerRsrc.h" |
| Header 0054 = "/c/Program Files/National Instruments/CVI2012/sdk/include/WinReg.h" |
| Header 0055 = "/c/Program Files/National Instruments/CVI2012/sdk/include/Reason.h" |
| Header 0056 = "/c/Program Files/National Instruments/CVI2012/sdk/include/WinNetWk.h" |
| Header 0057 = "/c/Program Files/National Instruments/CVI2012/sdk/include/wnnc.h" |
| Header 0058 = "/c/Program Files/National Instruments/CVI2012/sdk/include/StrAlign.h" |
| Header 0059 = "/c/Program Files/National Instruments/CVI2012/sdk/include/WinSvc.h" |
| Header 0060 = "/c/Program Files/National Instruments/CVI2012/sdk/include/Mcx.h" |
| Header 0061 = "/c/Program Files/National Instruments/CVI2012/sdk/include/Imm.h" |
| Header 0062 = "/c/Program Files/National Instruments/CVI2012/sdk/include/Ime_cmodes.h" |
| Header 0063 = "/c/Program Files/National Instruments/CVI2012/instr/CAMAC_2000/camac.h" |
| Header 0064 = "/c/Program Files/National Instruments/CVI2012/instr/CAENV965/CAENV965.h" |
| Header 0065 = "/c/Program Files/National Instruments/Shared/CVI/include/ivi.h" |
| Header 0066 = "/c/Program Files/National Instruments/Shared/CVI/include/visa.h" |
| Header 0067 = "/c/Program Files/National Instruments/Shared/CVI/include/visatype.h" |
| Header 0068 = "/c/Program Files/National Instruments/Shared/CVI/include/vpptype.h" |
| Header 0069 = "/c/ProgramData/National Instruments/CVI2012/include/analysis.h" |
| Header 0070 = "/c/ProgramData/National Instruments/CVI2012/include/advanlys.h" |
| Header 0071 = "/c/Program Files/National Instruments/CVI2012/instr/CAENV965/CAENV965_DEF.h" |
| Header 0074 = "/c/Program Files/National Instruments/CVI2012/sdk/include/WinSock2.h" |
| Header 0075 = "/c/Program Files/National Instruments/CVI2012/sdk/include/ws2def.h" |
| Header 0076 = "/c/Program Files/National Instruments/CVI2012/sdk/include/inaddr.h" |
| Header 0077 = "/c/Program Files/National Instruments/CVI2012/sdk/include/Qos.h" |
| Max32 Header Number = 80 |
| [TPC Settings] |
| TPCPath = "" |
| TPCDate = 0 |
| TPCPath x64 = "" |
| TPCDate x64 = 0 |
| /cvi/apps/l2d2_easyroc/cvibuild.l2d/dependencies.bri |
|---|
| Cannot display: file marked as a binary type. |
| svn:mime-type = application/octet-stream |
| Property changes: |
| Added: svn:mime-type |
| +application/octet-stream |
| \ No newline at end of property |
| /cvi/apps/l2d2_easyroc/d2r.cpp |
|---|
| 0,0 → 1,690 |
| #include "stdio.h" |
| #include "TROOT.h" |
| #include "TSystem.h" |
| #include "TFile.h" |
| #include "TH1F.h" |
| #include "TH2F.h" |
| #include "TF1.h" |
| #include "TMath.h" |
| #include "TStyle.h" |
| #include "TCanvas.h" |
| #include "TLine.h" |
| //kobayashi |
| #include "TTree.h" |
| //~ #define USE_ZLIB |
| #ifdef USE_ZLIB |
| # include "zlib.h" |
| #endif |
| // ------------------------------------------------------------------------------ |
| #define POSMARG 1000 |
| #define READBUFFERLENGTH 500000 |
| // data format |
| #define MAXDATA 64 |
| #define NCH 32 |
| #define ANALYSE_CH 32 |
| #define MPPC_1_CH 0 |
| #define MPPC_2_CH 1 |
| #define TRIGGER_CH 31 |
| //~ #define ANALYSE_CH 8 |
| //~ #define MPPC_1_CH 2 |
| //~ #define MPPC_2_CH 5 |
| #define REF_CH 0 |
| #define TDC_BIN (25./1000.) //1 TDC bin in ns |
| #define MIKRO_BIN 0.3595/1000. //1 mikro step in mm |
| #define RUNREC_ID 1 |
| #define ENDREC_ID 2 |
| #define POSREC_ID 3 |
| #define EVTREC_ID 4 |
| //define testpulse |
| typedef struct { |
| unsigned long id,len; |
| unsigned long fver,time; |
| unsigned long nev,nch,ped,xy; |
| long nx,x0,dx,ny,y0,dy; |
| } RUNREC; |
| RUNREC *runrec; |
| RUNREC run; |
| typedef struct { |
| unsigned long id,len; |
| unsigned long time; |
| } ENDREC; |
| ENDREC *endrec; |
| typedef struct { |
| unsigned long id,len; |
| unsigned long time; |
| long ix,x,xset,iy,y,yset; |
| } POSREC; |
| POSREC *posrec; |
| POSREC pos; |
| typedef struct { |
| unsigned long id,len; |
| unsigned long nev; |
| unsigned short data[MAXDATA]; |
| } EVTREC; |
| EVTREC *evtrec; |
| // ------------------------------------------------------------------------------ |
| int d2r(char* dfile0="test", double qdcmi=0, double qdcma=4096, double tdcmi=-1.5, double tdcma=3, double adc_cor_min=200.0, double deltaT_ctdcdiff=0) |
| { |
| int dbg=0; |
| printf(" dat 2 root conversion program\nUsage:\nd2r(input file -.dat, TDC min [ps], TDC max [ps], QDC min, QDC max)\n\n"); |
| char fullname[256], sbuff[256]; |
| FILE *fp; |
| //Chanel information |
| //~ int chmapx[NCH]={7,6,5,4,3,2,1,0}; |
| //~ int chmapx[NCH]={ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18,19}; |
| int chmapx[NCH]; for(int i=0; i<NCH; i++) {chmapx[i]=i;}; |
| //~ double padcenter[NCH][2]={ {201000, 210000}, |
| //~ {183000, 210000}, |
| //~ {165000, 210000}, |
| //~ {147000, 210000}, |
| //~ {129000, 210000}, |
| //~ {111000, 210000}, |
| //~ { 93000, 210000}, |
| //~ { 75000, 210000} }; |
| //~ // double tdcoffset[NCH]={57.78, 57.28, 57.86, 57.64, 56.06, 56.46, 57.5, 57.41}; |
| //~ double tdcoffset[NCH]={2311*TDC_BIN, 2291*TDC_BIN, 2314*TDC_BIN, 2306*TDC_BIN, |
| //~ 2242*TDC_BIN, 2258*TDC_BIN, 2300*TDC_BIN, 2296*TDC_BIN}; |
| double padcenter[NCH][2]; for(int i=0; i<NCH; i++) {padcenter[i][0]=0; padcenter[i][1]=0;}; |
| double tdcoffset[NCH]; for(int i=0; i<NCH; i++) {tdcoffset[i]=0;}; |
| sprintf(fullname, "d2r.ini"); |
| if( (fp=fopen(fullname, "rt")) == NULL ) |
| printf("Cannot open pad centers file %s !!!\n", fullname); |
| else { |
| printf("Opened pad centers file %s\n", fullname); |
| fgets(sbuff,256, fp);printf("%s", sbuff); |
| for(int i=0; i<NCH; i++) |
| fscanf(fp, "%lf %lf %lf\n", &padcenter[i][0], &padcenter[i][1], &tdcoffset[i]); |
| fclose(fp); |
| } |
| for(int i=0; i<NCH; i++) printf("%.2lf %.2lf %.2lf\n", padcenter[i][0], padcenter[i][1], tdcoffset[i]); |
| //TDC correction parameters |
| //~ double corpar[NCH][3]={ {-0.8, 25, 0}, |
| //~ {-0.8, 25, 0}, |
| //~ {-0.8, 25, 0}, |
| //~ {-0.8, 25, 0}, |
| //~ {-0.8, 25, 0}, |
| //~ {-0.8, 25, 0}, |
| //~ {-0.8, 25, 0}, |
| //~ {-0.8, 25, 0} }; |
| double corpar[NCH][3]; for(int i=0; i<NCH; i++) {corpar[i][0]=0.0; corpar[i][1]=0.005; corpar[i][2]=0.0;}; |
| sprintf(fullname, "data/%s_cor.txt", dfile0); |
| if( (fp=fopen(fullname, "rt")) == NULL ) |
| printf("Cannot open parameter file %s !!!\n", fullname); |
| else { |
| printf("Opened parameter file %s\n", fullname); |
| for(int i=0; i<NCH; i++) { |
| fscanf(fp, "%lf %lf %lf\n", &corpar[i][0], &corpar[i][1], &corpar[i][2]); |
| /*// check if parameters make sense |
| if( (corpar[i][0] < (tdcmi-0.2*tdcmi)) || ((tdcma+0.2*tdcma) < corpar[i][0]) || |
| (corpar[i][1] < 0) || (1e4*TDC_BIN < corpar[i][1]) || |
| (1e4 < TMath::Abs(corpar[i][2])) ) { |
| printf("Warning: parameters for ch%d out of limits -> using default!\n", i); |
| corpar[i][0]=2200*TDC_BIN; corpar[i][1]=1000*TDC_BIN; corpar[i][2]=-100*TDC_BIN; |
| }*/ |
| } |
| fclose(fp); |
| } |
| for(int i=0; i<NCH; i++) printf("%.2lf %.2lf %.2lf\n", corpar[i][0], corpar[i][1], corpar[i][2]); |
| //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; |
| 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]; |
| runrec = (RUNREC *) readbuf; |
| endrec = (ENDREC *) readbuf; |
| posrec = (POSREC *) readbuf; |
| evtrec = (EVTREC *) readbuf; |
| //data file |
| #ifdef USE_ZLIB |
| gzFile dfp; |
| #else |
| FILE *dfp; |
| #endif |
| char dfile[256]; |
| int ftype=0, fcount=1; |
| do { |
| switch(ftype++) { |
| case 0: |
| sprintf(dfile, "data/%s_file%02d.dat", dfile0, fcount); |
| break; |
| case 1: |
| sprintf(dfile, "data/%s_file%02d.dat.gz", dfile0, fcount); |
| break; |
| case 2: |
| sprintf(dfile, "data/%s_file%02d.gz", dfile0, fcount); |
| break; |
| default: |
| printf(" Cannot find data file for %s !!!\n", dfile0); |
| return -1; |
| } |
| #ifdef USE_ZLIB |
| dfp=gzopen(dfile,"rb"); |
| #else |
| dfp=fopen(dfile,"rb"); |
| #endif |
| } while(!dfp); |
| printf("Opened data file %s\n", dfile); |
| //opens ROOT file |
| TFile *rootfile; char fnameroot[256]; |
| sprintf(fnameroot, "root/%s.root", dfile0); |
| //rootfile = (TFile *) gROOT->FindObjectAny(dfile0); |
| //if (rootfile!=NULL) {printf("!!!\n");rootfile->Close();} |
| //rootfile = new TFile(fnameroot); |
| //if(rootfile) rootfile->Close(); |
| rootfile = new TFile(fnameroot,"RECREATE",dfile0); |
| // ----------------------------------------------- |
| // loop trough records |
| UInt_t rec_id, rec_len; |
| unsigned ulsize = 4; |
| int ceve=0; |
| int end_of_file = 0; |
| while(1) { |
| #ifdef USE_ZLIB |
| if(gzeof(dfp)) end_of_file = 1; |
| #else |
| if(feof(dfp)) end_of_file = 1; |
| #endif |
| #ifdef USE_ZLIB |
| gzread(dfp, (voidp)&readbuf, 2*ulsize); |
| #else |
| fread( (void*)&readbuf, 2*ulsize, 1, dfp); |
| #endif |
| rec_id=readbuf[0]; |
| rec_len=readbuf[ulsize]; |
| //kobayashi |
| if(rec_id == 4) rec_len = 140; |
| //~ if(dbg) printf("-----------------------------------------------\n"); |
| //~ if(dbg) printf("[%d] rec_id = %d | rec_len = %d\n", ceve, rec_id, rec_len); |
| //printf("[%d] rec_id = %d | rec_len = %u\n", ceve, readbuf[0], readbuf[ulsize]); |
| switch(rec_id) |
| { |
| case RUNREC_ID: |
| #ifdef USE_ZLIB |
| gzread(dfp, (voidp)&readbuf[2*ulsize], (rec_len-2*ulsize)); |
| #else |
| fread( (void*)&readbuf[2*ulsize], (rec_len-2*ulsize), 1, dfp); |
| #endif |
| run=*runrec; |
| if(dbg) { |
| printf("RUNREC_ID\n"); |
| printf("id = %d, len = %d, time = %d\n", run.id, run.len, run.time); |
| printf("nev = %d, nch = %d\n", run.nev, run.nch); |
| printf("nx = %d, x0 = %d, dx = %d\n", run.nx, run.x0, run.dx); |
| printf("ny = %d, y0 = %d, dy = %d\n", run.ny, run.y0, run.dy); |
| //~ break; |
| } |
| //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++) { |
| sprintf(hname, "hadc%d", i); |
| hadc[i] = (TH1F*)gROOT->FindObject(hname); |
| if(hadc[i]) delete hadc[i]; |
| hadc[i] = new TH1F(hname, hname, 4096, -0.5, 4095.5); |
| sprintf(hname, "hadc_cut%d", i); |
| hadc_cut[i] = (TH1F*)gROOT->FindObject(hname); |
| 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); |
| 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); |
| 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); |
| 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)); |
| } |
| } |
| break; |
| case POSREC_ID: |
| #ifdef USE_ZLIB |
| gzread(dfp, (voidp)&readbuf[2*ulsize], (rec_len-2*ulsize)); |
| #else |
| fread( (void*)&readbuf[2*ulsize], (rec_len-2*ulsize), 1, dfp); |
| #endif |
| pos=*posrec; |
| if(dbg) { |
| printf("POSREC_ID\n"); |
| printf("id = %d, len = %d, time = %d\n", posrec->id, posrec->len, posrec->time); |
| printf("ix = %d, x = %d, xset = %d\n", posrec->ix, posrec->x, posrec->xset); |
| printf("iy = %d, y = %d, yset = %d\n", posrec->iy, posrec->y, posrec->yset); |
| } else printf(" [%d,%d] %d, %d\n", pos.ix, pos.iy, pos.xset, pos.yset); |
| break; |
| case EVTREC_ID: |
| #ifdef USE_ZLIB |
| gzread(dfp, (voidp)&readbuf[2*ulsize], (rec_len-2*ulsize)); |
| #else |
| fread( (void*)&readbuf[2*ulsize], (rec_len-2*ulsize), 1, dfp); |
| #endif |
| if(dbg) { |
| //~ printf("EVTREC_ID\n"); |
| //~ printf("id = %d, len = %d, nev = %d\n", evtrec->id, evtrec->len, evtrec->nev); |
| //for(int datai = 0; datai < NCH; datai++) printf("%u ", evtrec->data[datai]); |
| //printf("\n"); |
| //for(int datai = NCH; datai < NCH+NCH; datai++) printf("%u ", evtrec->data[datai]); |
| //printf("\n"); |
| //break; |
| } |
| // events ------------------------------------------------------------------------------------------ |
| // fill histograms |
| double tdc_noise_cut; |
| //~ double adc_cor_min; |
| double tdca[ANALYSE_CH]; |
| double ctdca[ANALYSE_CH]; |
| double adca[ANALYSE_CH]; |
| double ctdcdiff, tdcdiff; |
| tdc_noise_cut = 5.0; |
| //~ adc_cor_min = 200.0; |
| 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( (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(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])); |
| } else { |
| ctdca[i] = -999.9*(i+1); |
| } |
| //~ if(tdc_noise_cut < tdca[i]) |
| 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) ) |
| //~ // cut za meritev efficiency: |
| //~ #define CUT_1_CONDITION ( (qdcmi < adca[MPPC_1_CH]) && (adca[MPPC_1_CH] < qdcma) ) |
| //~ #define CUT_1_CONDITION ( (tdcmi < ctdcdiff) && (ctdcdiff < tdcma) ) |
| //~ #define CUT_1_CONDITION ( (ref_cut_1_lo < adca[MPPC_1_CH]) && (adca[MPPC_1_CH] < ref_cut_1_hi) ) |
| //~ #define CUT_1_CONDITION ( (qdcmi < tdca[MPPC_1_CH]) && (tdca[MPPC_1_CH] < qdcma) ) |
| //~ #define CUT_1_CONDITION ( (ref_cut_1_lo < adca[REF_CH]) && (adca[REF_CH] < ref_cut_1_hi) && (ref_cut_1_lo < adca[MPPC_1_CH]) && (adca[MPPC_1_CH] < ref_cut_1_hi) ) |
| // cut za meritev efficiency: |
| #define CUT_2_CONDITION ( (tdcmi < adca[REF_CH]) && (adca[REF_CH] < tdcma) ) |
| //~ #define CUT_2_CONDITION ( (qdcmi < adca[MPPC_1_CH]) && (adca[MPPC_1_CH] < qdcma) && (tdcmi < adca[REF_CH]) && (adca[REF_CH] < tdcma) ) |
| //~ #define CUT_2_CONDITION ( (ref_cut_1_lo < tdca[MPPC_1_CH]) && (tdca[MPPC_1_CH] < ref_cut_1_hi) ) |
| //~ #define CUT_2_CONDITION ( (qdcmi < adca[REF_CH]) && (adca[REF_CH] < qdcma) && (tdcmi < tdca[REF_CH]) && (tdca[REF_CH] < tdcma) ) |
| //~ #define CUT_2_CONDITION ( (ref_cut_1_lo < adca[MPPC_1_CH]) && (adca[MPPC_1_CH] < ref_cut_1_hi) && (ref_cut_2_lo < adca[MPPC_2_CH]) && (adca[MPPC_2_CH] < ref_cut_2_hi) ) |
| //~ #define CUT_2_CONDITION ( (ref_cut_2_lo < adca[REF_CH]) && (adca[REF_CH] < ref_cut_2_hi) ) |
| //~ #define CUT_2_CONDITION ( (ref_cut_1_lo < tdca[MPPC_1_CH]) && (tdca[MPPC_1_CH] < ref_cut_1_hi) && (ref_cut_2_lo < tdca[MPPC_2_CH]) && (tdca[MPPC_2_CH] < ref_cut_2_hi) ) |
| //~ #define CUT_2_CONDITION ( (ref_cut_2_lo < tdca[REF_CH]) && (tdca[REF_CH] < ref_cut_2_hi) && (ref_cut_2_lo < tdca[MPPC_1_CH]) && (tdca[MPPC_1_CH] < ref_cut_2_hi) ) |
| if( (tdc_noise_cut < tdca[MPPC_1_CH]) && (tdc_noise_cut < tdca[MPPC_2_CH])) { |
| //~ if( (qdcmi < adca[MPPC_1_CH]) && (tdcmi < adca[MPPC_2_CH]) ) |
| htdcdiff->Fill(ctdcdiff); |
| if( CUT_1_CONDITION ) { |
| 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++) { |
| //~ if( CUT_1_CONDITION ) { |
| //~ if( ( (qdcmi < adca[REF_CH]) && (adca[REF_CH] < qdcma) ) ) { |
| //~ if( ( (-2 < ctdca[0]) && (ctdca[0] < 2) ) ) { |
| //~ htdc_cut[i]->Fill(tdca[i]-tdca[31]); |
| //~ htdc_cut[i]->Fill(ctdca[i]); |
| //~ hadc_cut[i]->Fill(adca[i]); |
| //~ } |
| 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]); |
| } |
| } |
| //~ 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; |
| case ENDREC_ID: |
| #ifdef USE_ZLIB |
| gzread(dfp, (voidp)&readbuf[2*ulsize], (rec_len-2*ulsize)); |
| #else |
| fread( (void*)&readbuf[2*ulsize], (rec_len-2*ulsize), 1, dfp); |
| #endif |
| if(dbg) { |
| printf("ENDREC_ID\n"); |
| printf("id = %d, len = %d, time = %d\n", endrec->id, endrec->len, endrec->time); |
| } else printf(" ENDREC\n"); |
| fcount++; |
| switch(ftype-1) { |
| case 0: |
| sprintf(dfile, "data/%s_file%02d.dat", dfile0, fcount); |
| break; |
| case 1: |
| sprintf(dfile, "data/%s_file%02d.dat.gz", dfile0, fcount); |
| break; |
| case 2: |
| sprintf(dfile, "data/%s_file%02d.gz", dfile0, fcount); |
| break; |
| } |
| #ifdef USE_ZLIB |
| if(dfp) gzclose(dfp); |
| dfp=gzopen(dfile,"rb"); |
| #else |
| if(dfp) fclose(dfp); |
| dfp=fopen(dfile,"rb"); |
| #endif |
| if(!dfp) { |
| printf(" Cannot open data file: %s ---> Exiting\n", dfile); |
| end_of_file = 1; |
| } else { |
| printf(" Opened data file: %s\n", dfile); |
| end_of_file = 0; |
| } |
| break; |
| default: |
| printf("switch(rec_id): default !!!\n"); |
| end_of_file = 1; |
| break; |
| } |
| ceve++; |
| if( (ceve%50000) == 0) printf(" Current event = %d\n", ceve); |
| if(dbg) if( ceve>dbg ) break; |
| if(end_of_file) break; |
| } |
| #ifdef USE_ZLIB |
| if(dfp) gzclose(dfp); |
| #else |
| if(dfp) fclose(dfp); |
| #endif |
| 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); |
| rootfile->Close(); |
| } |
| gSystem->Exit(1); |
| return 1; |
| } |
| /cvi/apps/l2d2_easyroc/d2r.ini |
|---|
| 0,0 → 1,33 |
| # pad_center_x pad_center_y tdc_offset |
| 0.0 0.0 -3.50000 |
| 1.0 0.0 0.000000 |
| 2.0 0.0 0.000000 |
| 3.0 0.0 0.000000 |
| 4.0 0.0 0.000000 |
| 5.0 0.0 0.000000 |
| 6.0 0.0 0.000000 |
| 7.0 0.0 0.000000 |
| 8.0 0.0 0.000000 |
| 9.0 0.0 0.000000 |
| 10. 0.0 0.000000 |
| 11. 0.0 0.000000 |
| 12. 0.0 0.000000 |
| 13. 0.0 0.000000 |
| 14. 0.0 0.000000 |
| 15. 0.0 -3.70000 |
| 16. 0.0 -3.20000 |
| 17. 0.0 0.000000 |
| 18. 0.0 0.000000 |
| 19. 0.0 0.000000 |
| 20. 0.0 0.000000 |
| 21. 0.0 0.000000 |
| 22. 0.0 0.000000 |
| 23. 0.0 0.000000 |
| 24. 0.0 0.000000 |
| 25. 0.0 0.000000 |
| 26. 0.0 0.000000 |
| 27. 0.0 0.000000 |
| 28. 0.0 0.000000 |
| 29. 0.0 0.000000 |
| 30. 0.0 0.000000 |
| 31. 0.0 0.000000 |
| /cvi/apps/l2d2_easyroc/d2time.cpp |
|---|
| 0,0 → 1,278 |
| #include "stdio.h" |
| #include "TROOT.h" |
| #include "TSystem.h" |
| #include "TFile.h" |
| #include "TH1F.h" |
| #include "TH2F.h" |
| #include "TF1.h" |
| #include "TMath.h" |
| #include "TStyle.h" |
| #include "TCanvas.h" |
| #include "TLine.h" |
| //~ #define USE_ZLIB |
| #ifdef USE_ZLIB |
| # include "zlib.h" |
| #endif |
| // ------------------------------------------------------------------------------ |
| #define POSMARG 1000 |
| #define READBUFFERLENGTH 50000 |
| // data format |
| #define MAXDATA 40 |
| #define RUNREC_ID 1 |
| #define ENDREC_ID 2 |
| #define POSREC_ID 3 |
| #define EVTREC_ID 4 |
| typedef struct { |
| unsigned long id,len; |
| unsigned long fver,time; |
| unsigned long nev,nch,ped,xy; |
| long nx,x0,dx,ny,y0,dy; |
| } RUNREC; |
| RUNREC *runrec; |
| RUNREC run; |
| typedef struct { |
| unsigned long id,len; |
| unsigned long time; |
| } ENDREC; |
| ENDREC *endrec; |
| typedef struct { |
| unsigned long id,len; |
| unsigned long time; |
| long ix,x,xset,iy,y,yset; |
| } POSREC; |
| POSREC *posrec; |
| POSREC pos; |
| typedef struct { |
| unsigned long id,len; |
| unsigned long nev; |
| unsigned short data[MAXDATA]; |
| } EVTREC; |
| EVTREC *evtrec; |
| // ------------------------------------------------------------------------------ |
| int d2time(char* dfile0="test") |
| { |
| unsigned long startTime = 0; |
| unsigned long endTime = 0; |
| int dbg=0; |
| printf(" dat 2 root conversion program\nUsage:\nd2r(input file -.dat, TDC min [ps], TDC max [ps], QDC min, QDC max)\n\n"); |
| char fullname[256], sbuff[256]; |
| FILE *fp; |
| //data buffer |
| char readbuf[READBUFFERLENGTH]; |
| runrec = (RUNREC *) readbuf; |
| endrec = (ENDREC *) readbuf; |
| posrec = (POSREC *) readbuf; |
| evtrec = (EVTREC *) readbuf; |
| //data file |
| #ifdef USE_ZLIB |
| gzFile dfp; |
| #else |
| FILE *dfp; |
| #endif |
| char dfile[256]; |
| int ftype=0, fcount=1; |
| do { |
| switch(ftype++) { |
| case 0: |
| sprintf(dfile, "data/%s_file%02d.dat", dfile0, fcount); |
| break; |
| case 1: |
| sprintf(dfile, "data/%s_file%02d.dat.gz", dfile0, fcount); |
| break; |
| case 2: |
| sprintf(dfile, "data/%s_file%02d.gz", dfile0, fcount); |
| break; |
| default: |
| printf(" Cannot find data file for %s !!!\n", dfile0); |
| return -1; |
| } |
| #ifdef USE_ZLIB |
| dfp=gzopen(dfile,"rb"); |
| #else |
| dfp=fopen(dfile,"rb"); |
| #endif |
| } while(!dfp); |
| printf("Opened data file %s\n", dfile); |
| // ----------------------------------------------- |
| // loop trough records |
| UInt_t rec_id, rec_len; |
| unsigned ulsize = 4; |
| int ceve=0; |
| int end_of_file = 0; |
| while(1) { |
| #ifdef USE_ZLIB |
| if(gzeof(dfp)) end_of_file = 1; |
| #else |
| if(feof(dfp)) end_of_file = 1; |
| #endif |
| #ifdef USE_ZLIB |
| gzread(dfp, (voidp)&readbuf, 2*ulsize); |
| #else |
| fread( (void*)&readbuf, 2*ulsize, 1, dfp); |
| #endif |
| rec_id=readbuf[0]; |
| rec_len=readbuf[ulsize]; |
| if(dbg) printf("-----------------------------------------------\n"); |
| if(dbg) printf("[%d] rec_id = %d | rec_len = %d\n", ceve, rec_id, rec_len); |
| switch(rec_id) |
| { |
| case RUNREC_ID: |
| #ifdef USE_ZLIB |
| gzread(dfp, (voidp)&readbuf[2*ulsize], (rec_len-2*ulsize)); |
| #else |
| fread( (void*)&readbuf[2*ulsize], (rec_len-2*ulsize), 1, dfp); |
| #endif |
| run=*runrec; |
| if(dbg) { |
| printf("RUNREC_ID\n"); |
| printf("id = %d, len = %d, time = %d\n", run.id, run.len, run.time); |
| printf("nev = %d, nch = %d\n", run.nev, run.nch); |
| printf("nx = %d, x0 = %d, dx = %d\n", run.nx, run.x0, run.dx); |
| printf("ny = %d, y0 = %d, dy = %d\n", run.ny, run.y0, run.dy); |
| break; |
| } |
| printf(">>>>>>>>>>>> RUNREC time = %u\n", run.time); |
| startTime = run.time; |
| break; |
| case POSREC_ID: |
| #ifdef USE_ZLIB |
| gzread(dfp, (voidp)&readbuf[2*ulsize], (rec_len-2*ulsize)); |
| #else |
| fread( (void*)&readbuf[2*ulsize], (rec_len-2*ulsize), 1, dfp); |
| #endif |
| pos=*posrec; |
| if(dbg) { |
| printf("POSREC_ID\n"); |
| printf("id = %d, len = %d, time = %d\n", posrec->id, posrec->len, posrec->time); |
| printf("ix = %d, x = %d, xset = %d\n", posrec->ix, posrec->x, posrec->xset); |
| printf("iy = %d, y = %d, yset = %d\n", posrec->iy, posrec->y, posrec->yset); |
| } else printf(" [%d,%d] %d, %d\n", pos.ix, pos.iy, pos.xset, pos.yset); |
| break; |
| case EVTREC_ID: |
| #ifdef USE_ZLIB |
| gzread(dfp, (voidp)&readbuf[2*ulsize], (rec_len-2*ulsize)); |
| #else |
| fread( (void*)&readbuf[2*ulsize], (rec_len-2*ulsize), 1, dfp); |
| #endif |
| if(dbg) { |
| printf("EVTREC_ID\n"); |
| printf("id = %d, len = %d, nev = %d\n", evtrec->id, evtrec->len, evtrec->nev); |
| //for(int datai = 0; datai < NCH; datai++) printf("%u ", evtrec->data[datai]); |
| //printf("\n"); |
| //for(int datai = NCH; datai < NCH+NCH; datai++) printf("%u ", evtrec->data[datai]); |
| //printf("\n"); |
| //break; |
| } |
| break; |
| case ENDREC_ID: |
| #ifdef USE_ZLIB |
| gzread(dfp, (voidp)&readbuf[2*ulsize], (rec_len-2*ulsize)); |
| #else |
| fread( (void*)&readbuf[2*ulsize], (rec_len-2*ulsize), 1, dfp); |
| #endif |
| if(dbg) { |
| printf("ENDREC_ID\n"); |
| printf("id = %d, len = %d, time = %d\n", endrec->id, endrec->len, endrec->time); |
| } else printf(" ENDREC\n"); |
| printf(">>>>>>>>>>>> ENDREC time = %u\n", endrec->time); |
| endTime = endrec->time; |
| fcount++; |
| switch(ftype-1) { |
| case 0: |
| sprintf(dfile, "data/%s_file%02d.dat", dfile0, fcount); |
| break; |
| case 1: |
| sprintf(dfile, "data/%s_file%02d.dat.gz", dfile0, fcount); |
| break; |
| case 2: |
| sprintf(dfile, "data/%s_file%02d.gz", dfile0, fcount); |
| break; |
| } |
| #ifdef USE_ZLIB |
| if(dfp) gzclose(dfp); |
| dfp=gzopen(dfile,"rb"); |
| #else |
| if(dfp) fclose(dfp); |
| dfp=fopen(dfile,"rb"); |
| #endif |
| if(!dfp) { |
| printf(" Cannot open data file: %s ---> Exiting\n", dfile); |
| end_of_file = 1; |
| } else { |
| printf(" Opened data file: %s\n", dfile); |
| end_of_file = 0; |
| } |
| break; |
| default: |
| printf("switch(rec_id): default !!!\n"); |
| end_of_file = 1; |
| break; |
| } |
| ceve++; |
| if( (ceve%50000) == 0) printf(" Current event = %d\n", ceve); |
| if(dbg) if( ceve>dbg ) break; |
| if(end_of_file) break; |
| } |
| #ifdef USE_ZLIB |
| if(dfp) gzclose(dfp); |
| #else |
| if(dfp) fclose(dfp); |
| #endif |
| printf(">>>>>>>>>>>> TIME = ENDREC.time - RUNREC.time = %u (s) = %.2lf (min)\n", endTime - startTime, (endTime - startTime)/60.); |
| if(dbg) return 1; |
| gSystem->Exit(1); |
| return 1; |
| } |
| /cvi/apps/l2d2_easyroc/data/EASIROCtestLinux.dat |
|---|
| Cannot display: file marked as a binary type. |
| svn:mime-type = application/octet-stream |
| Property changes: |
| Added: svn:mime-type |
| +application/octet-stream |
| \ No newline at end of property |
| /cvi/apps/l2d2_easyroc/data/EASIROCtestWin |
|---|
| Cannot display: file marked as a binary type. |
| svn:mime-type = application/octet-stream |
| Property changes: |
| Added: svn:mime-type |
| +application/octet-stream |
| \ No newline at end of property |
| /cvi/apps/l2d2_easyroc/data/test |
|---|
| Cannot display: file marked as a binary type. |
| svn:mime-type = application/octet-stream |
| Property changes: |
| Added: svn:mime-type |
| +application/octet-stream |
| \ No newline at end of property |
| /cvi/apps/l2d2_easyroc/e2r.cpp |
|---|
| 0,0 → 1,144 |
| #include "stdio.h" |
| #include "TROOT.h" |
| #include "TSystem.h" |
| #include "TFile.h" |
| #include "TH1F.h" |
| #include "TH2F.h" |
| #include "TF1.h" |
| #include "TMath.h" |
| #define NCH 32 |
| #define HEADER_WORD_1 0xFFFF |
| #define HEADER_WORD_2 0xEA0C |
| #define ID_ADC_HG 0x81 |
| #define ID_ADC_LG 0x60 |
| #define ID_TDC 0xCC |
| #define PRINT_FREQUENCY 10000 |
| void e2r(char* dfile0="test", int dbg=0) |
| { |
| char fullname[256], sbuff[256]; |
| FILE *dfp; |
| char dfile[256]; |
| sprintf(dfile, "data/%s", dfile0); |
| if((dfp=fopen(dfile,"rb")) == NULL) { |
| printf("Cannot open data file %s !!!\n", dfile); |
| return; |
| } else { |
| printf("Opened data file %s.\n", dfile); |
| } |
| if(sizeof(int) != 4) { |
| printf("sizeof(int) != 4, sizeof(int) = %d !!!\n", sizeof(int)); |
| return; |
| } |
| int dum32; |
| char hname[256], htitle[256]; |
| TH1F *htdc[2][NCH], *hadc_hg[NCH], *hadc_lg[NCH]; |
| //opens ROOT file |
| TFile *rootfile; char fnameroot[256]; |
| sprintf(fnameroot, "root/%s.root", dfile0); |
| //rootfile = (TFile *) gROOT->FindObjectAny(dfile0); |
| //if (rootfile!=NULL) {printf("!!!\n");rootfile->Close();} |
| //rootfile = new TFile(fnameroot); |
| //if(rootfile) rootfile->Close(); |
| rootfile = new TFile(fnameroot,"RECREATE",dfile0); |
| for(int i=0; i<NCH; i++) { |
| sprintf(hname, "htdc_le_%d", i); |
| htdc[0][i] = (TH1F*)gROOT->FindObject(hname); |
| if(htdc[0][i]) delete htdc[0][i]; |
| htdc[0][i] = new TH1F(hname, hname, 256, -0.5, 255.5); |
| sprintf(hname, "htdc_te_%d", i); |
| htdc[1][i] = (TH1F*)gROOT->FindObject(hname); |
| if(htdc[1][i]) delete htdc[1][i]; |
| htdc[1][i] = new TH1F(hname, hname, 256, -0.5, 255.5); |
| sprintf(hname, "hadc_hg%d", i); |
| hadc_hg[i] = (TH1F*)gROOT->FindObject(hname); |
| if(hadc_hg[i]) delete hadc_hg[i]; |
| hadc_hg[i] = new TH1F(hname, hname, 4096, -0.5, 4095.5); |
| sprintf(hname, "hadc_lg%d", i); |
| hadc_lg[i] = (TH1F*)gROOT->FindObject(hname); |
| if(hadc_lg[i]) delete hadc_lg[i]; |
| hadc_lg[i] = new TH1F(hname, hname, 4096, -0.5, 4095.5); |
| } |
| // ------------- data ---------------------------------------------------- |
| int ceve = 0; |
| while(!feof(dfp)) { |
| fread( &dum32, sizeof(int), 1, dfp); |
| int hw1 = (dum32 >> 16) & 0xFFFF; |
| int hw2 = dum32 & 0xFFFF; |
| if( (hw1 == HEADER_WORD_1) && (hw2 == HEADER_WORD_2) ) { |
| fread( &dum32, sizeof(int), 1, dfp); |
| int Number_of_word = dum32 & 0xFFFF; |
| fread( &dum32, sizeof(int), 1, dfp); |
| int EventCounter = (dum32 >> 16) & 0xFFFF; |
| if(dbg) printf("\n>>>>>> Number_of_word = %d | EventCounter = %d\n", Number_of_word, EventCounter); |
| //~ else if( !(EventCounter%PRINT_FREQUENCY) ) printf(" EventConter = %d\n", EventCounter); |
| else if( !(EventCounter%PRINT_FREQUENCY) ) printf("."); |
| ceve++; |
| continue; |
| } |
| int id = (dum32 >> 24) & 0xFF; |
| int ch, overflow, edge, data; |
| switch(id) { |
| case ID_ADC_HG: |
| ch = (dum32 >> 16) & 0x1F; |
| overflow = (dum32 >> 13) & 0x1; |
| data = (dum32) & 0xFFF; |
| //~ printf("ID_ADC_HG: ch = %d | X = %d | data = %d\n", ch, overflow, data); |
| if(dbg) printf("HG[%2d]=%4d ", ch, data); |
| hadc_hg[ch]->Fill(data); |
| break; |
| case ID_ADC_LG: |
| ch = (dum32 >> 16) & 0x1F; |
| overflow = (dum32 >> 13) & 0x1; |
| data = (dum32) & 0xFFF; |
| //~ printf("ID_ADC_LG: ch = %d | X = %d | data = %d\n", ch, overflow, data); |
| if(dbg) printf("LG[%2d]=%4d ", ch, data); |
| hadc_lg[ch]->Fill(data); |
| break; |
| case ID_TDC: |
| ch = (dum32 >> 16) & 0x1F; |
| edge = (dum32 >> 15) & 0x1; |
| data = (dum32) & 0x3FFF; |
| printf("ID_TDC: ch = %d | X = %d | data = %d\n", ch, overflow, data); |
| if(edge < 2) htdc[edge][ch]->Fill(data); |
| break; |
| default: |
| printf("default: dum32 = 0x%X!!!\n", dum32); |
| break; |
| } |
| //~ ceve++; |
| //~ if( !(ceve%PRINT_FREQUENCY) ) printf("."); |
| if(dbg && (ceve > dbg) ) break; |
| } |
| printf("\nProcessed events = %d\n", ceve); |
| // ------------------------------------------------------------------------ |
| if(dfp) fclose(dfp); |
| if(dbg) return; |
| if(rootfile) { |
| rootfile->Write(); |
| printf("Saved to %s\n", fnameroot); |
| rootfile->Close(); |
| } |
| gSystem->Exit(1); |
| } |
| /cvi/apps/l2d2_easyroc/easiroc.c |
|---|
| 0,0 → 1,705 |
| #include "easiroc.h" |
| static const int SiTCP_PORT = 24; |
| SOCKET sock; |
| unsigned int slowdata[sizeByte_SC]; |
| unsigned int ReadSCdata[sizeByte_RSC]; |
| unsigned int Probedata[sizeByte_PSC]; |
| unsigned int Pindata[sizeByte_PIN]; |
| unsigned int Probedata[sizeByte_PSC]; |
| int ForceStop = 0; |
| int EndADC = 0; |
| #include <windows.h> |
| void usleep(__int64 usec) |
| { |
| HANDLE timer; |
| LARGE_INTEGER ft; |
| ft.QuadPart = -(10*usec); // Convert to 100 nanosecond interval, negative value indicates relative time |
| timer = CreateWaitableTimer(NULL, TRUE, NULL); |
| SetWaitableTimer(timer, &ft, 0, NULL, NULL, 0); |
| WaitForSingleObject(timer, INFINITE); |
| CloseHandle(timer); |
| } |
| //------------------------------------------------------------------------------------------------------ |
| int easiroc_Init(const char* SiTCP_MASTER_IP, unsigned int daq_mode) |
| { |
| // Start WinSock |
| printf("easiroc_Init --> Start.\n"); |
| WORD wVersionRequested; |
| WSADATA wsaData; |
| if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) { |
| printf("WSAStartup failed with error!\n"); |
| } |
| //Initialize ------------------------------------------------------------- |
| sock = INVALID_SOCKET; |
| struct sockaddr_in SiTCP_ADDR; |
| const char* IP; |
| unsigned int port; |
| sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); |
| if(sock == INVALID_SOCKET) { |
| printf("Error: easiroc_Init::sock = %d\n", sock); |
| return -1; |
| } |
| IP = SiTCP_MASTER_IP; |
| port = SiTCP_PORT; |
| SiTCP_ADDR.sin_family = AF_INET; |
| SiTCP_ADDR.sin_port = htons(port); |
| SiTCP_ADDR.sin_addr.s_addr = inet_addr(IP); |
| struct timeval tv; |
| tv.tv_sec = 3; |
| tv.tv_usec = 0; |
| setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, (char*)&tv, sizeof(tv)); |
| int flag = 1; |
| setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, (char*)&flag, sizeof(flag)); |
| //Connection ------------------------------------------------------------- |
| int con = connect(sock, (struct sockaddr*)&SiTCP_ADDR, sizeof(SiTCP_ADDR)); |
| printf("easiroc_Init::connect = %d\n", con); |
| if(0 > con){ |
| printf("SiTCP Master :: Connection fail\n"); |
| closesocket(sock); |
| return -1; |
| } |
| printf("SiTCP Master :: Connection Done\n\n"); |
| // Auto Initialize ------------------------------------------------------- |
| PrepareFPGA(); |
| DebugFPGA(sock); |
| printf("\nASIS Initialize : Done\n\n"); |
| //Sleep(1000); |
| WriteData(sock, 37888); |
| PrepareSC(1); |
| TransmitSC(sock); |
| printf("\nSlow Control chip1 : Done\n\n"); |
| PrepareReadSC(1); |
| TransmitReadSC(sock); |
| printf("\nRead Slow Control chip1 : Done\n\n"); |
| WriteData(sock, 21504); |
| PrepareSC(2); |
| TransmitSC(sock); |
| printf("\nSlow Control chip2 : Done\n\n"); |
| PrepareReadSC(2); |
| TransmitReadSC(sock); |
| printf("\nRead Slow Control chip2: Done\n\n"); |
| WriteData(sock, 5120); |
| { |
| unsigned int signal = 31; |
| signal = signal << 16; |
| unsigned int data = daq_mode; |
| data = data << 8; |
| signal += data; |
| if(-1 == WriteData(sock, signal)){ |
| return -1; |
| } |
| printf("\n#D : DAQ mode is %d \n", daq_mode); |
| } |
| return 0; |
| } |
| //------------------------------------------------------------------------------------------------------ |
| void easiroc_Close() |
| { |
| closesocket(sock); |
| WSACleanup(); |
| printf("easiroc_Close -> Done.\n"); |
| } |
| //------------------------------------------------------------------------------------------------------ |
| int WriteData(SOCKET sock, unsigned int data) |
| { |
| int esrcdbg = 0; |
| data += 128 << 24;; |
| if(esrcdbg) printf("0x%X\n", data); |
| send(sock, (char*)&data, sizeof(int), 0); |
| // this sleep is needed! |
| Sleep(WRITEDATA_DELAY); |
| unsigned int buf = 0; |
| unsigned int length = 4; |
| int ret = recv(sock, (char*)&buf, length, 0); |
| if ( ret > 0 ) { |
| if(esrcdbg) printf("Bytes received: %d\n", ret); |
| else printf("."); |
| } else if ( ret == 0 ) { |
| printf("Connection closed\n"); |
| return -1; |
| } else { |
| printf("recv failed: %d\n", WSAGetLastError()); |
| return -1; |
| } |
| return 0; |
| } |
| //------------------------------------------------------------------------------------------------------ |
| void PrepareFPGA() |
| { |
| Pindata[0] = 20; |
| Pindata[1] = 65776; |
| } |
| //------------------------------------------------------------------------------------------------------ |
| void PrepareSC(int chipNo) |
| { |
| if(chipNo == 1) { |
| slowdata[0] = 192; |
| slowdata[1] = 1720319; |
| slowdata[2] = 4253040640; |
| slowdata[3] = 413; |
| slowdata[4] = 0; |
| slowdata[5] = 3739423232; |
| slowdata[6] = 4294967295; |
| slowdata[7] = 4294967295; |
| slowdata[8] = 4294967295; |
| slowdata[9] = 4294967295; |
| slowdata[10] = 4294967295; |
| slowdata[11] = 4294967295; |
| slowdata[12] = 4294967295; |
| slowdata[13] = 4294967295; |
| slowdata[14] = 4294967295; |
| } else { |
| slowdata[0] = 192; |
| slowdata[1] = 4292874239; |
| slowdata[2] = 4257218559; |
| slowdata[3] = 478; |
| slowdata[4] = 0; |
| slowdata[5] = 3740340736; |
| slowdata[6] = 1175693740; |
| slowdata[7] = 2815957775; |
| slowdata[8] = 766945147; |
| slowdata[9] = 1504433946; |
| slowdata[10] = 2729016485; |
| slowdata[11] = 3412554245; |
| slowdata[12] = 2725848728; |
| slowdata[13] = 2267165112; |
| slowdata[14] = 4291041547; |
| } |
| } |
| //------------------------------------------------------------------------------------------------------ |
| void PrepareReadSC(int chipNo) |
| { |
| if(chipNo == 1) { |
| ReadSCdata[0] = 0; |
| } else { |
| ReadSCdata[0] = 1; |
| } |
| } |
| //------------------------------------------------------------------------------------------------------ |
| int DebugFPGA(SOCKET socket) |
| { |
| unsigned int buffer = 0; |
| buffer += 0 << 16; |
| buffer += (Pindata[0] & 255) << 8; |
| if(-1 == WriteData(socket, buffer)){ |
| return -1; |
| } |
| for(int i = 1 ; i<5; ++i){ |
| buffer = 0; |
| if(i == 4){ |
| buffer += 5 << 16; |
| }else{ |
| buffer += i << 16; |
| } |
| buffer += ((Pindata[1] >> (i-1)*8) & 255) << 8; |
| if(-1 == WriteData(socket, buffer)){ |
| return -1; |
| } |
| Sleep(1); |
| } |
| return 0; |
| } |
| //------------------------------------------------------------------------------------------------------ |
| int TransmitSC(SOCKET socket) |
| { |
| unsigned int data = 0; |
| //Set SC mode ----------------------------------------------------------- |
| data = 0; |
| data += 1 << 16; |
| data += 240 << 8; |
| if(-1 == WriteData(socket, data)){ |
| return -1; |
| } |
| //SC start ------------------------------------------------------------- |
| data = 0; |
| data += 10 << 16; |
| data += (slowdata[0] & 255) << 8; |
| if(-1 == WriteData(socket, data)){ |
| return -1; |
| } |
| for(int i = 1; i<15; ++i){ |
| for(int shift = 0; shift<4; ++shift){ |
| data = 0; |
| data += 10 << 16; |
| data += ((slowdata[i] >> 8*shift) & 255) << 8; |
| if(-1 == WriteData(socket, data)){ |
| return -1; |
| } |
| //std::cout<<"test"<<std::endl; |
| Sleep(1); |
| } |
| } |
| // Sleep(50000); |
| //StartCycle ----------------------------------------------------------- |
| data = 0; |
| data += 1 << 16; |
| data += 242 << 8; |
| if(-1 == WriteData(socket, data)){ |
| return -1; |
| } |
| data = 0; |
| data += 1 << 16; |
| data += 240 << 8; |
| if(-1 == WriteData(socket, data)){ |
| return -1; |
| } |
| // Sleep(50000); |
| //Load SC -------------------------------------------------------------- |
| data = 0; |
| data += 1 << 16; |
| data += 241 << 8; |
| if(-1 == WriteData(socket, data)){ |
| return -1; |
| } |
| data = 0; |
| data += 1 << 16; |
| data += 240 << 8; |
| if(-1 == WriteData(socket, data)){ |
| return -1; |
| } |
| return 0; |
| } |
| //------------------------------------------------------------------------------------------------------ |
| int TransmitReadSC(SOCKET socket) |
| { |
| //SCA read --------------------------------------------------------------- |
| unsigned int data = 0; |
| for(int i = 0; i<4; ++i){ |
| data = 0; |
| data += 12 << 16; |
| data += ((ReadSCdata[0] >> i*8) & 255) << 8; |
| if(-1 == WriteData(socket, data)){ |
| return -1; |
| } |
| Sleep(1); |
| } |
| //StartCycle ------------------------------------------------------------ |
| data = 0; |
| data += 1 << 16; |
| data += 242 << 8; |
| if(-1 == WriteData(socket, data)){ |
| return -1; |
| } |
| data = 0; |
| data += 1 << 16; |
| data += 240 << 8; |
| if(-1 == WriteData(socket, data)){ |
| return -1; |
| } |
| return 0; |
| } |
| //------------------------------------------------------------------------------------------------------ |
| int PreparePSC(int CurrentCh, int CurrentProbeType) |
| { |
| enum Asign{fs_all, ssh_16, ssh_0, pa_16, pa_0, sizeAsign}; |
| enum DataName{fs, ssh_hg, ssh_lg, pa_hg, pa_lg, sizeDataName}; |
| enum DataName CurrentProbe; |
| CurrentProbe = fs; |
| static unsigned int ProbeBuffer = 0; |
| int flag_rst = 0; |
| int flag_input = 1; |
| for(int i = 0; i<sizeByte_PSC; ++i){ |
| Probedata[i] = 0; |
| } |
| switch(CurrentProbeType){ |
| case '1': |
| CurrentProbe = pa_hg; |
| break; |
| case '2': |
| CurrentProbe = pa_lg; |
| break; |
| case '3': |
| CurrentProbe = ssh_hg; |
| break; |
| case '4': |
| CurrentProbe = ssh_lg; |
| break; |
| case '5': |
| CurrentProbe = fs; |
| break; |
| case '6': |
| break; |
| case '7': |
| break; |
| case '8': |
| flag_rst = 1; |
| CurrentCh = 0; |
| ProbeBuffer = 0; |
| CurrentProbe = fs; |
| break; |
| default: |
| break; |
| }; |
| if(flag_rst) { |
| return 0; |
| } |
| if(flag_input) { |
| ProbeBuffer = 1 << (31 - CurrentCh); |
| } |
| unsigned int buffer_16 = ProbeBuffer*ProbeBuffer; |
| unsigned int buffer_0 = (ProbeBuffer >> 16)*(ProbeBuffer >> 16); |
| if(CurrentProbe == ssh_hg || CurrentProbe == pa_hg) { |
| buffer_16 = buffer_16 << 1; |
| buffer_0 = buffer_0 << 1; |
| } |
| if(CurrentProbe == fs) { |
| Probedata[fs_all] = ProbeBuffer; |
| } else if(CurrentProbe == ssh_hg || CurrentProbe == ssh_lg) { |
| if(CurrentCh > 15) { |
| Probedata[ssh_16] = buffer_16; |
| } else { |
| Probedata[ssh_0] = buffer_0; |
| } |
| } else if(CurrentProbe == pa_hg || CurrentProbe == pa_lg) { |
| if(CurrentCh > 15){ |
| Probedata[pa_16] = buffer_16; |
| }else{ |
| Probedata[pa_0] = buffer_0; |
| } |
| } else { |
| printf("bug desu\n"); |
| } |
| for(int shift = 0; shift<32; ++shift) { |
| if(((Probedata[fs_all]) >> shift) & 1) { |
| printf("!"); |
| }else{ |
| printf("."); |
| } |
| } |
| printf("\n"); |
| for(int index = ssh_16; index <= ssh_0; ++index) { |
| for(int shift = 0; shift<32; ++shift) { |
| if(((Probedata[index]) >> shift) & 1) { |
| printf("!"); |
| } else { |
| printf("."); |
| } |
| } |
| } |
| printf("\n"); |
| for(int index = pa_16; index <= pa_0; ++index) { |
| for(int shift = 0; shift<32; ++shift) { |
| if(((Probedata[index]) >> shift) & 1) { |
| printf("!"); |
| }else{ |
| printf("."); |
| } |
| } |
| } |
| printf("\n"); |
| return 0; |
| } |
| //------------------------------------------------------------------------------------------------------ |
| int TransmitProbe(SOCKET socket) |
| { |
| unsigned int data = 0; |
| //Set Probe mode -------------------------------------------------------- |
| data += 1 << 16; |
| data += 208 << 8; |
| if(-1 == WriteData(socket, data)) { |
| return -1; |
| } |
| //Probe start ---------------------------------------------------------- |
| for(int i = 0; i<sizeByte_PSC; ++i) { |
| for(int shift = 0; shift<4; ++shift) { |
| data = 0; |
| data += 10 << 16; |
| data += ((Probedata[i] >> 8*shift) & 255) << 8; |
| if(-1 == WriteData(socket, data)) { |
| return -1; |
| } |
| } |
| } |
| //StartCycle ------------------------------------------------------------ |
| data = 0; |
| data += 1 << 16; |
| data += 210 << 8; |
| if(-1 == WriteData(socket, data)) { |
| return -1; |
| } |
| data = 0; |
| data += 1 << 16; |
| data += 208 << 8; |
| if(-1 == WriteData(socket, data)) { |
| return -1; |
| } |
| return 0; |
| } |
| //------------------------------------------------------------------------------------------------------ |
| int easiroc_fTransmitSC() |
| { |
| if(WriteData(sock, 37888) != 0) return -1; |
| PrepareSC(1); |
| if(TransmitSC(sock) != 0) return -1; |
| printf("\nSlow Control chip1 : Done\n\n"); |
| if(WriteData(sock, 21504) != 0) return -1; |
| PrepareSC(2); |
| if(TransmitSC(sock) != 0) return -1; |
| printf("\nSlow Control chip2 : Done\n\n"); |
| if(WriteData(sock, 5120) != 0) return -1; |
| return 0; |
| } |
| //------------------------------------------------------------------------------------------------------ |
| int easiroc_fTransmitReadSC() |
| { |
| if(WriteData(sock, 37888) != 0) return -1; |
| PrepareReadSC(1); |
| if(TransmitReadSC(sock) != 0) return -1; |
| printf("\nRead Slow Control chip1 : Done\n\n"); |
| if(WriteData(sock, 21504) != 0) return -1; |
| PrepareReadSC(2); |
| if(TransmitReadSC(sock) != 0) return -1; |
| printf("\nRead Slow Control chip2 : Done\n\n"); |
| if(WriteData(sock, 5120) != 0) return -1; |
| return 0; |
| } |
| //------------------------------------------------------------------------------------------------------ |
| int easiroc_fAsicInitialize() |
| { |
| PrepareFPGA(); |
| DebugFPGA(sock); |
| printf("\nASIS Initialize : Done\n\n"); |
| return 0; |
| } |
| //------------------------------------------------------------------------------------------------------ |
| int easiroc_fTransmitProbe(int CurrentCh, int CurrentProbe) |
| { |
| //printf("\neasiroc_fTransmitProbe: CurrentCh : %d | CurrentProbe: %d\n\n", CurrentCh, CurrentProbe); |
| if(CurrentCh < 32) { |
| if(WriteData(sock, 37888)!= 0) return -1; |
| } else if(CurrentCh > 31) { |
| if(WriteData(sock, 21504)!= 0) return -1; |
| CurrentCh = CurrentCh - 32; |
| } |
| //printf("\neasiroc_fTransmitProbe: Preparing PSC\n\n"); |
| if(PreparePSC(CurrentCh, CurrentProbe)!= 0) { |
| printf("\neasiroc_fTransmitProbe: PreparingPSC ERROR !!!!!!!!!!!!!!!!!!!\n\n"); |
| return -1; |
| } |
| //printf("\neasiroc_fTransmitProbe: TransmitProbe\n\n"); |
| if(TransmitProbe(sock)!= 0) { |
| printf("\neasiroc_fTransmitProbe: TransmitProbe ERROR !!!!!!!!!!!!!!!!!!!\n\n"); |
| return -1; |
| } |
| //WriteData(3, 5120); |
| //printf("\nTransmitProbe: Success!\n\n"); |
| return 0; |
| } |
| //------------------------------------------------------------------------------------------------------ |
| int ADCOneCycle_wHeader_ver2(SOCKET socket, FILE* file) |
| { |
| static const int NofHeader = 3; |
| unsigned int DataBuffer[1000]; |
| memset(DataBuffer, 0, sizeof(DataBuffer)); |
| unsigned int *ptr_DataBuf = DataBuffer; |
| unsigned int TotalRecvByte = 0; |
| unsigned int TotalRecvEvent = 0; |
| unsigned int sizeHeader = NofHeader*sizeof(int); |
| unsigned int Header[] = {1, 1, 1}; |
| int ret = 0; |
| ret = recv(sock, (char*)Header, sizeHeader, 0); |
| if(ret <= 0 && EndADC == 1) { |
| if(EndADC != 0) printf("Fatal ADC ERROR : recv\n"); |
| return -1; |
| } |
| // sleep necessary! ERRORS happen if trigger rate lower than ~ sleep frequency! |
| usleep(200); |
| //Sleep(1); |
| //printf("Header1 (0xFFFFEA0C) : 0x%x | Header2 (0x00000100) : 0x%x\n", Header[0], Header[1]); |
| if(Header[0] != 0xFFFFEA0C) { |
| printf("Fatal ADC ERROR : HEADER\n"); |
| printf("Header1 : 0x%x | Header2 : 0x%x | Header3 : 0x%x\n", Header[0], Header[1], Header[2]); |
| return -1; |
| } else { |
| unsigned int sizeData = (sizeof(int)*Header[1] & 0xffff); |
| unsigned int NofWord = (Header[1] & 0xffff); |
| unsigned int OneData[NofWord]; |
| recv(socket, (char*)OneData, sizeData, 0); |
| // for(int i = 0; i<NofWord; ++i){ std::cout << std::hex << OneData[i] << std::endl; } |
| memcpy(ptr_DataBuf, Header, sizeHeader); |
| ptr_DataBuf += NofHeader; |
| memcpy(ptr_DataBuf, OneData, sizeData); |
| ptr_DataBuf += sizeData/sizeof(int); |
| TotalRecvByte += sizeHeader + sizeData; |
| ++TotalRecvEvent; |
| } |
| if(EndADC != 1){ |
| for(unsigned int i = 0; i<TotalRecvByte/sizeof(int); ++i) { |
| unsigned int buffer = DataBuffer[i]; |
| fwrite((char*)&buffer, sizeof(int), 1, file); |
| } |
| } |
| return 0; |
| } |
| //------------------------------------------------------------------------------------------------------ |
| void ADCStop(SOCKET socket) |
| { |
| unsigned int signal = 0; |
| printf("ADC exit process\n"); |
| signal += 16 << 24; |
| signal += 100 << 16; |
| send(socket, (char*)&signal, sizeof(int), 0); |
| Sleep(1); |
| signal = 0; |
| signal += 100 << 16; |
| send(socket, (char*)&signal, sizeof(int), 0); |
| Sleep(10); |
| return; |
| } |
| //------------------------------------------------------------------------------------------------------ |
| int ContinuousADC_ver2(SOCKET socket, char *file_name, int MaxCycleNum) |
| { |
| unsigned int signal = 0; |
| int EventNum = 0; |
| FILE *file = NULL; |
| file = fopen(file_name, "wb"); |
| if(file==NULL) { |
| printf("ContinuousADC_ver2: ERROR opneing file %s\n", file_name); |
| return -1; |
| } |
| signal += 32 << 24; |
| signal += 100 << 16; |
| send(socket, (char*)&signal, sizeof(int), 0); |
| Sleep(100); |
| while(EventNum < MaxCycleNum){ |
| //Sleep(10); |
| ADCOneCycle_wHeader_ver2(socket, file); |
| ++EventNum; |
| if(0 == EventNum%1000){ |
| printf("Event # %d\n", EventNum); |
| } |
| if(0 || EventNum == MaxCycleNum|| ForceStop == 1) { |
| ADCStop(socket); |
| EndADC = 1; |
| int abort = 0; |
| while(0 == ADCOneCycle_wHeader_ver2(socket, file)) { |
| Sleep(1); |
| if(abort == 50) { |
| ADCStop(socket); |
| abort = 0; |
| } |
| //printf("dummy data\n"); |
| printf("."); |
| ++abort; |
| } |
| EndADC = 0; |
| ForceStop = 0; |
| break; |
| } |
| } |
| printf("\nEnd ADC\n"); |
| fclose(file); |
| return 0; |
| } |
| //------------------------------------------------------------------------------------------------------ |
| int easiroc_fDAQ(char *file_name, int MaxCycleNum) |
| { |
| printf("easiroc_fDAQ: Starting DAQ with file_name = %s | MaxCycleNum = %d\n", file_name, MaxCycleNum); |
| if(ContinuousADC_ver2(sock, file_name, MaxCycleNum) != 0) return -1; |
| return 0; |
| } |
| /cvi/apps/l2d2_easyroc/easiroc.h |
|---|
| 0,0 → 1,44 |
| #ifndef easiroc_H |
| #define easiroc_H |
| #include<stdio.h> |
| #include<stdlib.h> |
| #include<errno.h> |
| #include <Winsock2.h> |
| #define sizeByte_SC 15 |
| #define sizeByte_PSC 5 |
| #define sizeByte_RSC 1 |
| #define sizeByte_PIN 2 |
| #define WRITEDATA_DELAY 40 |
| //------------------------------------------------------------------------------------------------------ |
| int easiroc_Init(const char* SiTCP_MASTER_IP, unsigned int daq_mode) ; |
| void easiroc_Close(); |
| int WriteData(SOCKET sock, unsigned int data); |
| void PrepareFPGA(); |
| int DebugFPGA(SOCKET socket); |
| void PrepareSC(int chipNo); |
| int TransmitSC(SOCKET socket); |
| void PrepareReadSC(int chipNo); |
| int TransmitReadSC(SOCKET socket); |
| int PreparePSC(int CurrentCh, int CurrentProbeType); |
| int ADCOneCycle_wHeader_ver2(SOCKET socket, FILE* file); |
| void ADCStop(SOCKET socket); |
| int ContinuousADC_ver2(SOCKET socket, char *file_name, int MaxCycleNum); |
| int easiroc_fTransmitSC(); |
| int easiroc_fTransmitReadSC(); |
| int easiroc_fAsicInitialize(); |
| int easiroc_fTransmitProbe(int CurrentCh, int CurrentProbe); |
| int easiroc_fDAQ(char *file_name, int MaxCycleNum); |
| #endif |
| /cvi/apps/l2d2_easyroc/easiroc~cvi151553.c |
|---|
| 0,0 → 1,1266 |
| #include "easiroc.h" |
| static const int SiTCP_PORT = 24; |
| unsigned int slowdata[sizeByte_SC]; |
| unsigned int ReadSCdata[sizeByte_RSC]; |
| unsigned int Probedata[sizeByte_PSC]; |
| unsigned int Pindata[sizeByte_PIN]; |
| //------------------------------------------------------------------------------------------------------ |
| int easiroc_Init(const char* SiTCP_MASTER_IP, unsigned int daq_mode) |
| { |
| // Start WinSock |
| printf("easiroc_Init --> Start.\n"); |
| WORD wVersionRequested; |
| WSADATA wsaData; |
| if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) { |
| printf("WSAStartup failed with error!\n"); |
| } |
| //Initialize ------------------------------------------------------------- |
| SOCKET sock = INVALID_SOCKET; |
| struct sockaddr_in SiTCP_ADDR; |
| const char* IP; |
| unsigned int port; |
| sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); |
| if(sock == INVALID_SOCKET) { |
| printf("easiroc_Init::sock = %d\n", sock); |
| return -1; |
| } |
| IP = SiTCP_MASTER_IP; |
| port = SiTCP_PORT; |
| SiTCP_ADDR.sin_family = AF_INET; |
| SiTCP_ADDR.sin_port = htons(port); |
| SiTCP_ADDR.sin_addr.s_addr = inet_addr(IP); |
| struct timeval tv; |
| tv.tv_sec = 3; |
| tv.tv_usec = 0; |
| setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, (char*)&tv, sizeof(tv)); |
| int flag = 1; |
| setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, (char*)&flag, sizeof(flag)); |
| //Connection ------------------------------------------------------------- |
| int con = connect(sock, (struct sockaddr*)&SiTCP_ADDR, sizeof(SiTCP_ADDR)); |
| printf("easiroc_Init::connect = %d\n", con); |
| if(0 > con){ |
| printf("SiTCP Master :: Connection fail\n"); |
| closesocket(sock); |
| return -1; |
| } |
| printf("SiTCP Master :: Connection Done\n\n"); |
| // Auto Initialize ------------------------------------------------------- |
| PrepareFPGA(); |
| DebugFPGA(sock); |
| printf("\nASIS Initialize : Done\n\n"); |
| // Sleep(10000); |
| WriteData(sock, 37888); |
| PrepareSC(1); |
| TransmitSC(sock); |
| printf("\nSlow Control chip1 : Done\n\n"); |
| PrepareReadSC(1); |
| TransmitReadSC(sock); |
| printf("\nRead Slow Control chip1 : Done\n\n"); |
| WriteData(sock, 21504); |
| PrepareSC(2); |
| TransmitSC(sock); |
| printf("\nSlow Control chip2 : Done\n\n"); |
| PrepareReadSC(2); |
| TransmitReadSC(sock); |
| printf("\nRead Slow Control chip2: Done\n\n"); |
| WriteData(sock, 5120); |
| { |
| unsigned int signal = 31; |
| signal = signal << 16; |
| unsigned int data = daq_mode; |
| data = data << 8; |
| signal += data; |
| if(-1 == WriteData(sock, signal)){ |
| return -1; |
| } |
| printf("\n#D : DAQ mode is %d \n", daq_mode); |
| } |
| return 0; |
| } |
| //------------------------------------------------------------------------------------------------------ |
| void easiroc_Close() |
| { |
| WSACleanup(); |
| printf("easiroc_Close -> Done.\n"); |
| } |
| //------------------------------------------------------------------------------------------------------ |
| int WriteData(SOCKET sock, unsigned int data) |
| { |
| int esrcdbg = 0; |
| Sleep(SOCK_DELAY); |
| data += 128 << 24;; |
| if(esrcdbg) printf("0x%X\n", data); |
| send(sock, (char*)&data, sizeof(int), 0); |
| Sleep(SOCK_DELAY); |
| unsigned int buf = 0; |
| unsigned int length = 4; |
| int ret = recv(sock, (char*)&buf, length, 0); |
| if ( ret > 0 ) { |
| if(esrcdbg) printf("Bytes received: %d\n", ret); |
| else printf("."); |
| } else if ( ret == 0 ) { |
| printf("Connection closed\n"); |
| return -1; |
| } else { |
| printf("recv failed: %d\n", WSAGetLastError()); |
| return -1; |
| } |
| return 0; |
| } |
| //------------------------------------------------------------------------------------------------------ |
| void PrepareFPGA() |
| { |
| Pindata[0] = 20; |
| Pindata[1] = 65776; |
| } |
| //------------------------------------------------------------------------------------------------------ |
| void PrepareSC(int chipNo) |
| { |
| if(chipNo == 1) { |
| slowdata[0] = 192; |
| slowdata[1] = 1720319; |
| slowdata[2] = 4253040640; |
| slowdata[3] = 413; |
| slowdata[4] = 0; |
| slowdata[5] = 3739423232; |
| slowdata[6] = 4294967295; |
| slowdata[7] = 4294967295; |
| slowdata[8] = 4294967295; |
| slowdata[9] = 4294967295; |
| slowdata[10] = 4294967295; |
| slowdata[11] = 4294967295; |
| slowdata[12] = 4294967295; |
| slowdata[13] = 4294967295; |
| slowdata[14] = 4294967295; |
| } else { |
| slowdata[0] = 192; |
| slowdata[1] = 4292874239; |
| slowdata[2] = 4257218559; |
| slowdata[3] = 478; |
| slowdata[4] = 0; |
| slowdata[5] = 3740340736; |
| slowdata[6] = 1175693740; |
| slowdata[7] = 2815957775; |
| slowdata[8] = 766945147; |
| slowdata[9] = 1504433946; |
| slowdata[10] = 2729016485; |
| slowdata[11] = 3412554245; |
| slowdata[12] = 2725848728; |
| slowdata[13] = 2267165112; |
| slowdata[14] = 4291041547; |
| } |
| } |
| //------------------------------------------------------------------------------------------------------ |
| void PrepareReadSC(int chipNo) |
| { |
| if(chipNo == 1) { |
| ReadSCdata[0] = 0; |
| } else { |
| ReadSCdata[0] = 1; |
| } |
| } |
| //------------------------------------------------------------------------------------------------------ |
| int DebugFPGA(SOCKET socket) |
| { |
| unsigned int buffer = 0; |
| buffer += 0 << 16; |
| buffer += (Pindata[0] & 255) << 8; |
| if(-1 == WriteData(socket, buffer)){ |
| return -1; |
| } |
| for(int i = 1 ; i<5; ++i){ |
| buffer = 0; |
| if(i == 4){ |
| buffer += 5 << 16; |
| }else{ |
| buffer += i << 16; |
| } |
| buffer += ((Pindata[1] >> (i-1)*8) & 255) << 8; |
| if(-1 == WriteData(socket, buffer)){ |
| return -1; |
| } |
| Sleep(1); |
| } |
| return 0; |
| } |
| //------------------------------------------------------------------------------------------------------ |
| int TransmitSC(SOCKET socket){ |
| unsigned int data = 0; |
| //Set SC mode ----------------------------------------------------------- |
| data = 0; |
| data += 1 << 16; |
| data += 240 << 8; |
| if(-1 == WriteData(socket, data)){ |
| return -1; |
| } |
| //SC start ------------------------------------------------------------- |
| data = 0; |
| data += 10 << 16; |
| data += (slowdata[0] & 255) << 8; |
| if(-1 == WriteData(socket, data)){ |
| return -1; |
| } |
| for(int i = 1; i<15; ++i){ |
| for(int shift = 0; shift<4; ++shift){ |
| data = 0; |
| data += 10 << 16; |
| data += ((slowdata[i] >> 8*shift) & 255) << 8; |
| if(-1 == WriteData(socket, data)){ |
| return -1; |
| } |
| //std::cout<<"test"<<std::endl; |
| Sleep(1); |
| } |
| } |
| // Sleep(50000); |
| //StartCycle ----------------------------------------------------------- |
| data = 0; |
| data += 1 << 16; |
| data += 242 << 8; |
| if(-1 == WriteData(socket, data)){ |
| return -1; |
| } |
| data = 0; |
| data += 1 << 16; |
| data += 240 << 8; |
| if(-1 == WriteData(socket, data)){ |
| return -1; |
| } |
| // Sleep(50000); |
| //Load SC -------------------------------------------------------------- |
| data = 0; |
| data += 1 << 16; |
| data += 241 << 8; |
| if(-1 == WriteData(socket, data)){ |
| return -1; |
| } |
| data = 0; |
| data += 1 << 16; |
| data += 240 << 8; |
| if(-1 == WriteData(socket, data)){ |
| return -1; |
| } |
| return 0; |
| } |
| //------------------------------------------------------------------------------------------------------ |
| int TransmitReadSC(SOCKET socket) |
| { |
| //SCA read --------------------------------------------------------------- |
| unsigned int data = 0; |
| for(int i = 0; i<4; ++i){ |
| data = 0; |
| data += 12 << 16; |
| data += ((ReadSCdata[0] >> i*8) & 255) << 8; |
| if(-1 == WriteData(socket, data)){ |
| return -1; |
| } |
| Sleep(1); |
| } |
| //StartCycle ------------------------------------------------------------ |
| data = 0; |
| data += 1 << 16; |
| data += 242 << 8; |
| if(-1 == WriteData(socket, data)){ |
| return -1; |
| } |
| data = 0; |
| data += 1 << 16; |
| data += 240 << 8; |
| if(-1 == WriteData(socket, data)){ |
| return -1; |
| } |
| return 0; |
| } |
| //------------------------------------------------------------------------------------------------------ |
| /* |
| #include"src/easiroc.h" |
| #include"src/SC.hh" |
| #include<fstream> |
| #include<ios> |
| static const int SiTCP_PORT = 24; |
| extern unsigned int slowdata[sizeByte_SC]; |
| extern unsigned int ReadSCdata[sizeByte_RSC]; |
| extern unsigned int Probedata[sizeByte_PSC]; |
| extern unsigned int Pindata[sizeByte_PIN]; |
| int ForceStop = 0; |
| int EndADC = 0; |
| void ForceStop_FromCtrl_C(int signal); |
| int receive(int sock, char* data_buf, unsigned int *ReadLength); |
| int WriteData(int socket, unsigned int data); |
| int ReadData(int socket, unsigned int signal, unsigned int data); |
| void ADCStop(int socket); |
| int DebugFPGA(int socket); |
| int TransmitSC(int socket); |
| int TransmitReadSC(int socket); |
| int TransmitProbe(int socket); |
| int ContinuousADC(int socket); |
| int ContinuousADC_ver2(int socket); |
| void ADCOneCycle(int socket, std::ofstream& file); |
| void ADCOneCycle_wHeader(int socket, std::ofstream& file); |
| int ADCOneCycle_wHeader_ver2(int socket, std::ofstream& file); |
| void MHTDC_debug(int socket); |
| int Debugging(int socket); |
| int chipselect(); |
| int main(int argc, char* argv[]){ |
| if(1 == argc){ |
| std::cout << "Usage\n"; |
| std::cout << "./easiroc [IP Address of SOY] [DAQ mode]" << std::e\ |
| ndl; |
| std::cout << " DAQ mode : 1 MHTDC\n"; |
| std::cout << " : 2 ADC\n"; |
| std::cout << " : 3 ADC & MHTDC" << std::endl; |
| exit(-1); |
| } |
| unsigned int daq_mode = (unsigned int)atoi(argv[2]); |
| const char* SiTCP_MASTER_IP = argv[1]; |
| int sock = 0; |
| struct sockaddr_in SiTCP_ADDR; |
| const char* IP; |
| unsigned int port; |
| //Initialize ------------------------------------------------------------- |
| ForceStop = 0; |
| (void) signal(SIGINT, ForceStop_FromCtrl_C); |
| sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); |
| IP = SiTCP_MASTER_IP; |
| port = SiTCP_PORT; |
| SiTCP_ADDR.sin_family = AF_INET; |
| SiTCP_ADDR.sin_port = htons(port); |
| SiTCP_ADDR.sin_addr.s_addr = inet_addr(IP); |
| struct timeval tv; |
| tv.tv_sec = 3; |
| tv.tv_usec = 0; |
| setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, (char*)&tv, sizeof(tv)); |
| int flag = 1; |
| setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, (char*)&flag, sizeof(flag)); |
| //Connection ------------------------------------------------------------- |
| if(0 > connect(sock, (struct sockaddr*)&SiTCP_ADDR, sizeof(SiTCP_ADDR))){ |
| std::cerr << "SiTCP Master :: Connection fail" << std::endl; |
| close(sock); |
| return -1; |
| } |
| std::cout << "SiTCP Master :: Connection Done" << std::endl; |
| std::cout << std::endl; |
| // Auto Initialize ------------------------------------------------------- |
| PrepareFPGA(); |
| DebugFPGA(sock); |
| std::cout << "ASIS Initialize : Done" << std::endl; |
| std::cout << std::endl; |
| usleep(10000); |
| WriteData(3, 37888); |
| PrepareSC(1); |
| TransmitSC(sock); |
| std::cout << "Slow Control chip1 : Done" << std::endl; |
| std::cout << std::endl; |
| PrepareReadSC(1); |
| TransmitReadSC(sock); |
| std::cout << "Read Slow Control chip1 : Done" << std::endl; |
| std::cout << std::endl; |
| WriteData(3, 21504); |
| PrepareSC(2); |
| TransmitSC(sock); |
| std::cout << "Slow Control chip2 : Done" << std::endl; |
| std::cout << std::endl; |
| PrepareReadSC(2); |
| TransmitReadSC(sock); |
| std::cout << "Read Slow Control chip2: Done" << std::endl; |
| std::cout << std::endl; |
| WriteData(3, 5120); |
| { |
| unsigned int signal = 31; |
| signal = signal << 16; |
| unsigned int data = daq_mode; |
| data = data << 8; |
| signal += data; |
| if(-1 == WriteData(sock, signal)){ |
| exit(-1); |
| } |
| std::cout << "#D : DAQ mode is " << daq_mode << std::endl; |
| } |
| // User area ----------------------------------------------------------- |
| bool DispMenu = true; |
| int CurrentCh = 0; |
| while(DispMenu){ |
| for(int i = 0; i<3; ++i){ |
| std::cout << std::endl; |
| } |
| std::cout << "I'm : " << SiTCP_MASTER_IP << std::endl; |
| std::cout << "Please select" << std::endl; |
| std::cout << " 1. Transmit SC" << std::endl; |
| std::cout << " 2. Transmit Read SC" << std::endl; |
| std::cout << " 3. ASIC Initialize" << std::endl; |
| std::cout << " 4. Transmit Probe " << std::endl; |
| std::cout << " 5. Connection Close" << std::endl; |
| std::cout << " 6. Start DAQ" << std::endl; |
| std::cout << " 7. Debug" << std::endl; |
| std::cout << "input # ====> " << std::flush; |
| char buf[10]; |
| fgets(buf, sizeof(buf),stdin); |
| char num; |
| sscanf(buf,"%c",&num); |
| switch(num){ |
| case '1': |
| WriteData(3, 37888); |
| PrepareSC(1); |
| TransmitSC(sock); |
| WriteData(3, 21504); |
| PrepareSC(2); |
| TransmitSC(sock); |
| WriteData(3, 5120); |
| break; |
| case '2': |
| WriteData(3, 37888); |
| PrepareReadSC(1); |
| TransmitReadSC(sock); |
| WriteData(3, 21504); |
| PrepareReadSC(2); |
| TransmitReadSC(sock); |
| WriteData(3, 5120); |
| break; |
| case '3': |
| PrepareFPGA(); |
| DebugFPGA(sock); |
| break; |
| case '4': |
| std::cout << "Input channel number ====> " << std::endl; |
| std::cin >> CurrentCh; |
| fgets(&buf[0],sizeof(buf),stdin); //Enter buffer clear |
| if(CurrentCh < 32){ |
| WriteData(3, 37888); |
| } |
| else if(CurrentCh > 31){ |
| WriteData(3, 21504); |
| CurrentCh = CurrentCh - 32; |
| } |
| std::cout<<CurrentCh<<std::endl; |
| PreparePSC(CurrentCh); |
| TransmitProbe(sock); |
| //WriteData(3, 5120); |
| break; |
| case '5': |
| DispMenu = false; |
| break; |
| case '6': |
| ContinuousADC_ver2(sock); |
| break; |
| case '7': |
| Debugging(sock); |
| break; |
| case '8': |
| MHTDC_debug(sock); |
| break; |
| case '9': |
| chipselect(); |
| break; |
| default: |
| break; |
| }; |
| } |
| //End Connection --------------------------------------------------------- |
| close(sock); |
| std::cout << "All :: Connection Close" << std::endl; |
| return 0; |
| } |
| void ForceStop_FromCtrl_C(int signal){ |
| std::cout << "Stop request from user" << std::endl; |
| ForceStop = 1; |
| EndADC = 1; |
| } |
| int receive(int sock, char* data_buf, unsigned int *ReadLength){ |
| unsigned int revd_size = 0; |
| int tmp_returnVal = 0; |
| while(revd_size < *ReadLength){ |
| tmp_returnVal = recv(sock, data_buf +revd_size, *ReadLength -revd_size, 0); |
| if(tmp_returnVal < 0){ |
| int errbuf = errno; |
| perror("TCP receive"); |
| if(errbuf == EAGAIN){ |
| if(EndADC == 1){ |
| std::cout << "No data" << std::endl; |
| break; |
| } |
| continue; |
| }else if(errbuf == EINTR){ |
| continue; |
| }else{ |
| exit(-1); |
| } |
| } |
| revd_size += tmp_returnVal; |
| } |
| // std::cout << "ret is " << std::dec << revd_size << std::endl; |
| return revd_size; |
| } |
| int WriteData(int sock, unsigned int data){ |
| data += 128 << 24; |
| // for(int i = 31; i>-1; --i){ |
| // unsigned int hoge = (data >> i) & 1; |
| // if(hoge){ |
| // fprintf(stdout, "!"); |
| // }else{ |
| // fprintf(stdout, "."); |
| // } |
| // if(i%8 == 0){ |
| // fprintf(stdout, "\n"); |
| // } |
| // } |
| // fprintf(stdout, "\n"); |
| // std::cout << std::hex << data << std::endl; |
| send(sock, (char*)&data, sizeof(int), 0); |
| unsigned int buf = 0; |
| unsigned int length = 4; |
| receive(sock, (char*)&buf, &length); |
| if(data - buf){ |
| std::cerr << "### Data Transmit Error ###" << std::endl; |
| std::cerr << "Transmited data is " << std::hex << data << std::endl; |
| std::cout << "Returned data is " << std::hex << buf << std::endl; |
| return -1; |
| } |
| return 0; |
| } |
| int ReadData(int sock, unsigned int signal, unsigned int *data){ |
| signal += 64 << 24; |
| send(sock, (char*)&signal, sizeof(int), 0); |
| unsigned int length = 4; |
| receive(sock, (char*)data, &length); |
| // for(int i = 31; i>-1; --i){ |
| // unsigned int hoge = (*data >> i) & 1; |
| // if(hoge){ |
| // fprintf(stdout, "!"); |
| // }else{ |
| // fprintf(stdout, "."); |
| // } |
| // if(i%8 == 0){ |
| // fprintf(stdout, "\n"); |
| // } |
| // } |
| // fprintf(stdout, "\n"); |
| return 0; |
| } |
| int DebugFPGA(int socket){ |
| unsigned int buffer = 0; |
| buffer += 0 << 16; |
| buffer += (Pindata[0] & 255) << 8; |
| if(-1 == WriteData(socket, buffer)){ |
| exit(-1); |
| } |
| for(int i = 1 ; i<5; ++i){ |
| buffer = 0; |
| if(i == 4){ |
| buffer += 5 << 16; |
| }else{ |
| buffer += i << 16; |
| } |
| buffer += ((Pindata[1] >> (i-1)*8) & 255) << 8; |
| if(-1 == WriteData(socket, buffer)){ |
| exit(-1); |
| } |
| usleep(1); |
| } |
| return 0; |
| } |
| int TransmitSC(int socket){ |
| unsigned int data = 0; |
| //Set SC mode ----------------------------------------------------------- |
| data = 0; |
| data += 1 << 16; |
| data += 240 << 8; |
| if(-1 == WriteData(socket, data)){ |
| exit(-1); |
| } |
| //SC start ------------------------------------------------------------- |
| data = 0; |
| data += 10 << 16; |
| data += (slowdata[0] & 255) << 8; |
| if(-1 == WriteData(socket, data)){ |
| exit(-1); |
| } |
| for(int i = 1; i<15; ++i){ |
| for(int shift = 0; shift<4; ++shift){ |
| data = 0; |
| data += 10 << 16; |
| data += ((slowdata[i] >> 8*shift) & 255) << 8; |
| if(-1 == WriteData(socket, data)){ |
| exit(-1); |
| } |
| //std::cout<<"test"<<std::endl; |
| usleep(1); |
| } |
| } |
| // usleep(50000); |
| //StartCycle ----------------------------------------------------------- |
| data = 0; |
| data += 1 << 16; |
| data += 242 << 8; |
| if(-1 == WriteData(socket, data)){ |
| exit(-1); |
| } |
| data = 0; |
| data += 1 << 16; |
| data += 240 << 8; |
| if(-1 == WriteData(socket, data)){ |
| exit(-1); |
| } |
| // usleep(50000); |
| //Load SC -------------------------------------------------------------- |
| data = 0; |
| data += 1 << 16; |
| data += 241 << 8; |
| if(-1 == WriteData(socket, data)){ |
| exit(-1); |
| } |
| data = 0; |
| data += 1 << 16; |
| data += 240 << 8; |
| if(-1 == WriteData(socket, data)){ |
| exit(-1); |
| } |
| return 0; |
| } |
| int TransmitReadSC(int socket){ |
| //SCA read --------------------------------------------------------------- |
| unsigned int data = 0; |
| for(int i = 0; i<4; ++i){ |
| data = 0; |
| data += 12 << 16; |
| data += ((ReadSCdata[0] >> i*8) & 255) << 8; |
| if(-1 == WriteData(socket, data)){ |
| exit(-1); |
| } |
| usleep(1); |
| } |
| //StartCycle ------------------------------------------------------------ |
| data = 0; |
| data += 1 << 16; |
| data += 242 << 8; |
| if(-1 == WriteData(socket, data)){ |
| exit(-1); |
| } |
| data = 0; |
| data += 1 << 16; |
| data += 240 << 8; |
| if(-1 == WriteData(socket, data)){ |
| exit(-1); |
| } |
| return 0; |
| } |
| int TransmitProbe(int socket){ |
| unsigned int data = 0; |
| //Set Probe mode -------------------------------------------------------- |
| data += 1 << 16; |
| data += 208 << 8; |
| if(-1 == WriteData(socket, data)){ |
| exit(-1); |
| } |
| //Probe start ---------------------------------------------------------- |
| for(int i = 0; i<sizeByte_PSC; ++i){ |
| for(int shift = 0; shift<4; ++shift){ |
| data = 0; |
| data += 10 << 16; |
| data += ((Probedata[i] >> 8*shift) & 255) << 8; |
| if(-1 == WriteData(socket, data)){ |
| exit(-1); |
| } |
| usleep(1); |
| } |
| } |
| usleep(50000); |
| //StartCycle ------------------------------------------------------------ |
| data = 0; |
| data += 1 << 16; |
| data += 210 << 8; |
| if(-1 == WriteData(socket, data)){ |
| exit(-1); |
| } |
| data = 0; |
| data += 1 << 16; |
| data += 208 << 8; |
| if(-1 == WriteData(socket, data)){ |
| exit(-1); |
| } |
| return 0; |
| } |
| int ContinuousADC(int socket){ |
| std::string file_num; |
| std::cout << "Input output data file name : " << std::flush; |
| std::cin >> file_num; |
| std::string basename = "after_break_ext_"; |
| std::string file_name = basename + file_num + ".dat"; |
| std::ofstream file(file_name.c_str(),std::ios::binary); |
| int MaxCycleNum = 0; |
| std::cout << "Input total # of events" << std::endl; |
| // std::cout << "If you type 'N', preset # of events will be N*1000" << std::endl; |
| std::cout << "======>" << std::flush; |
| std::cin >> MaxCycleNum; |
| MaxCycleNum = MaxCycleNum/1000; |
| std::cout << "Preset value : " << MaxCycleNum*1000 << std::endl; |
| for(int i = 0; i<MaxCycleNum; ++i){ |
| // ADCOneCycle(socket, file); |
| ADCOneCycle_wHeader(socket, file); |
| std::cout << "Event # " << 1000*(i+1) << std::endl; |
| } |
| std::cout << "End ADC" << std::endl; |
| file.close(); |
| return 0; |
| } |
| int ContinuousADC_ver2(int socket){ |
| std::string file_name; |
| std::cout << "Input output data file name : " << std::flush; |
| std::cin >> file_name; |
| std::ofstream file(file_name.c_str(),std::ios::binary); |
| int MaxCycleNum = 0; |
| std::cout << "Input total # of events" << std::endl; |
| std::cout << "======>" << std::flush; |
| std::cin >> MaxCycleNum; |
| std::cout << "Preset value : " << std::dec << MaxCycleNum << std::endl; |
| unsigned int signal = 0; |
| int EventNum = 0; |
| signal += 32 << 24; |
| signal += 100 << 16; |
| send(socket, (char*)&signal, sizeof(int), 0); |
| while(EventNum < MaxCycleNum){ |
| ADCOneCycle_wHeader_ver2(socket, file); |
| ++EventNum; |
| if(0 == EventNum%1000){ |
| std::cout << "Event # " << std::dec << EventNum << std::endl; |
| } |
| if(false |
| || EventNum == MaxCycleNum |
| || ForceStop == 1 |
| ){ |
| ADCStop(socket); |
| EndADC = 1; |
| int abort = 0; |
| while(0 == ADCOneCycle_wHeader_ver2(socket, file)){ |
| usleep(10000); |
| if(abort == 50){ |
| ADCStop(socket); |
| abort = 0; |
| } |
| std::cout << "dummy data" << std::endl; |
| ++abort; |
| } |
| EndADC = 0; |
| ForceStop = 0; |
| break; |
| } |
| } |
| std::cout << "End ADC" << std::endl; |
| file.close(); |
| return 0; |
| } |
| void ADCOneCycle(int socket, std::ofstream& file){ |
| static const int TotalEvent = 1000; |
| unsigned int signal = 0; |
| signal += 16 << 24; |
| signal += 100 << 16; |
| send(socket, (char*)&signal, sizeof(int), 0); |
| unsigned int ADCData[16*TotalEvent]; |
| for(int i = 0; i<16*TotalEvent; ++i){ |
| ADCData[i] = 0; |
| } |
| static unsigned int ADCLength = sizeof(ADCData); |
| receive(socket, (char*)ADCData, &ADCLength); |
| for(int Event = 0; Event<TotalEvent; ++Event ){ |
| int event = 0xffff; |
| file.write((char*)&event, sizeof(short)); |
| // fprintf(stdout, "Event # %d\n",Event); |
| for(int i = 0; i<16; ++i){ |
| unsigned int buffer = ADCData[i+16*Event] & 4095; |
| // fprintf(stdout, "%d\n",buffer & 15); |
| file.write((char*)&buffer, sizeof(short)); |
| buffer = (ADCData[i+16*Event] >> 16) & 4095; |
| // fprintf(stdout, "%d\n",buffer & 15); |
| file.write((char*)&buffer, sizeof(short)); |
| } |
| // std::cout << std::endl; |
| // std::cout << std::endl; |
| } |
| signal = 0; |
| signal += 100 << 16; |
| if(-1 == WriteData(socket, signal)){ |
| exit(-1); |
| } |
| } |
| void ADCOneCycle_wHeader(int socket, std::ofstream& file){ |
| static const int TotalEvent = 1000; |
| unsigned int signal = 0; |
| unsigned int DataBuffer[100*TotalEvent]; |
| memset(DataBuffer, 0, sizeof(DataBuffer)); |
| unsigned int *ptr_DataBuf = DataBuffer; |
| unsigned int TotalRecvByte = 0; |
| unsigned int TotalRecvEvent = 0; |
| static unsigned int sizeHeader = 2*sizeof(int); |
| signal += 16 << 24; |
| signal += 100 << 16; |
| send(socket, (char*)&signal, sizeof(int), 0); |
| for(int i = 0; i<TotalEvent; ++i){ |
| unsigned int Header[2] = {1, 1}; |
| receive(socket, (char*)Header, &sizeHeader); |
| // Header[0] = 0xFFFFEA0C; |
| // Header[1] = 0x00000100; |
| if(Header[0] != 0xFFFFEA0C){ |
| std::cerr << "Fatal ADC ERROR : HEADER" << std::endl; |
| std::cerr << "Header1 : " << std::hex << Header[0] << " Header2 : " << std::hex << Header[1] << std::endl; |
| exit(-1); |
| }else{ |
| // std::cerr << "Header1 : " << std::hex << Header[0] << " Header2 : " << std::hex << Header[1] << std::endl; |
| // std::cout << "Num " << i << std::endl; |
| // std::cerr << "Header1 : " << std::hex << Header[0] << " Header2 : " << std::hex << Header[1] << std::endl; |
| unsigned int sizeData = Header[1] & 0xffff; |
| unsigned int OneData[sizeData/sizeof(int)]; |
| // for(unsigned int i = 0; i<sizeData/sizeof(int); ++i){ |
| // OneData[i] = (900 +2*i) << 16; |
| // OneData[i] += 900 +2*i +1; |
| // } |
| receive(socket, (char*)OneData, &sizeData); |
| // std::cout << OneData[0] << std::endl; |
| memcpy(ptr_DataBuf, Header, sizeHeader); |
| ptr_DataBuf += 2; |
| memcpy(ptr_DataBuf, OneData, sizeData); |
| ptr_DataBuf += sizeData/sizeof(int); |
| TotalRecvByte += sizeHeader + sizeData; |
| ++TotalRecvEvent; |
| } |
| } |
| for(unsigned int i = 0; i<TotalRecvByte/sizeof(int); ++i){ |
| // unsigned int buffer = (DataBuffer[i] >> 16) & 0xffff; |
| // // fprintf(stdout, "%d\n",buffer & 15); |
| // file.write((char*)&buffer, sizeof(short)); |
| // buffer = DataBuffer[i] & 0xffff; |
| // // fprintf(stdout, "%d\n",buffer & 15); |
| // file.write((char*)&buffer, sizeof(short)); |
| unsigned int buffer = DataBuffer[i]; |
| file.write((char*)&buffer, sizeof(int)); |
| } |
| signal = 0; |
| signal += 100 << 16; |
| if(-1 == WriteData(socket, signal)){ |
| exit(-1); |
| } |
| return; |
| } |
| int ADCOneCycle_wHeader_ver2(int socket, std::ofstream& file){ |
| static const int NofHeader = 3; |
| unsigned int DataBuffer[1000]; |
| memset(DataBuffer, 0, sizeof(DataBuffer)); |
| unsigned int *ptr_DataBuf = DataBuffer; |
| unsigned int TotalRecvByte = 0; |
| unsigned int TotalRecvEvent = 0; |
| static unsigned int sizeHeader = NofHeader*sizeof(int); |
| unsigned int Header[NofHeader] = {1, 1, 1}; |
| int ret = 0; |
| ret = receive(socket, (char*)Header, &sizeHeader); |
| if(ret <= 0 && EndADC == 1){ |
| return -1; |
| } |
| // std::cout << "Header1 : " << std::hex << Header[0] << " Header2 : " << std::hex << Header[1] << std::endl; |
| // Header[0] = 0xFFFFEA0C; |
| // Header[1] = 0x00000100; |
| if(Header[0] != 0xFFFFEA0C){ |
| std::cerr << "Fatal ADC ERROR : HEADER" << std::endl; |
| std::cerr << "Header1 : " << std::hex << Header[0] |
| << " Header2 : " << std::hex << Header[1] |
| << " Header3 : " << std::hex << Header[2] << std::endl; |
| exit(-1); |
| }else{ |
| unsigned int sizeData = (sizeof(int)*Header[1] & 0xffff); |
| unsigned int NofWord = (Header[1] & 0xffff); |
| unsigned int OneData[NofWord]; |
| receive(socket, (char*)OneData, &sizeData); |
| // for(int i = 0; i<NofWord; ++i){ |
| // std::cout << std::hex << OneData[i] << std::endl; |
| // } |
| memcpy(ptr_DataBuf, Header, sizeHeader); |
| ptr_DataBuf += NofHeader; |
| memcpy(ptr_DataBuf, OneData, sizeData); |
| ptr_DataBuf += sizeData/sizeof(int); |
| TotalRecvByte += sizeHeader + sizeData; |
| ++TotalRecvEvent; |
| } |
| if(EndADC != 1){ |
| for(unsigned int i = 0; i<TotalRecvByte/sizeof(int); ++i){ |
| unsigned int buffer = DataBuffer[i]; |
| file.write((char*)&buffer, sizeof(int)); |
| } |
| } |
| return 0; |
| } |
| // Debug --------------------------------------------------------------------- |
| int Debugging(int socket){ |
| enum debug{read, write, quit, sizedebug}; |
| bool flag_[sizedebug]; |
| for(int i = 0; i<sizedebug; ++i){ |
| flag_[i] = false; |
| } |
| std::cout << "Read/Write" << std::endl; |
| std::cout << "1. Read" << std::endl; |
| std::cout << "2. Write" << std::endl; |
| std::cout << "3. Return" << std::endl; |
| std::cout << "input # =====> " << std::flush; |
| char buf[10]; |
| fgets(buf, sizeof(buf), stdin); |
| char num; |
| sscanf(buf, "%c", &num); |
| switch(num){ |
| case '1': |
| flag_[read] = true; |
| break; |
| case '2': |
| flag_[write] = true; |
| break; |
| default: |
| break; |
| }; |
| if(flag_[read]){ |
| std::cout << "Debug Read" << std::endl; |
| std::cout << "Input subaddress : " << std::flush; |
| std::string strbuf; |
| std::cin >> strbuf; |
| std::istringstream valbuf(strbuf); |
| unsigned int saddr = 0; |
| valbuf >> saddr; |
| saddr = saddr << 16; |
| unsigned int data = 0; |
| if(0 == ReadData(socket, saddr, &data)){ |
| std::cout << std::hex << data << std::endl; |
| std::cout << "bit31 << >> bit0" << std::endl; |
| for(int i = 1; i<33; ++i){ |
| if(data >> (32 -i) & 1){ |
| std::cout << "!" << std::flush; |
| }else{ |
| std::cout << "." << std::flush; |
| } |
| if(0 == i%8){ |
| std::cout << " " << std::endl; |
| } |
| } |
| std::cout << std::endl; |
| }else{ |
| std::cerr << "Read error" << std::endl; |
| exit(-1); |
| } |
| } |
| if(flag_[write]){ |
| std::cout << "Debug Write" << std::endl; |
| std::cout << "Input subaddress : " << std::flush; |
| std::string strbuf; |
| std::cin >> strbuf; |
| std::istringstream valbuf(strbuf); |
| unsigned int signal = 0; |
| valbuf >> signal; |
| signal = signal << 16; |
| std::cout << "Input signal : " << std::flush; |
| std::string strbuf2; |
| std::cin >> strbuf2; |
| std::istringstream databuf(strbuf2); |
| unsigned int data = 0; |
| databuf >> data; |
| data = data << 8; |
| signal += data; |
| std::cout << std::hex << signal << std::flush; |
| std::cout << std::dec << std::endl; |
| std::cout << signal << std::endl; |
| if(-1 == WriteData(socket, signal)){ |
| exit(-1); |
| } |
| } |
| return 0; |
| } |
| void ADCStop(int socket){ |
| unsigned int signal = 0; |
| std::cout << "ADC exit process" << std::endl; |
| signal += 16 << 24; |
| signal += 100 << 16; |
| send(socket, (char*)&signal, sizeof(int), 0); |
| sleep(1); |
| signal = 0; |
| signal += 100 << 16; |
| send(socket, (char*)&signal, sizeof(int), 0); |
| usleep(10000); |
| return; |
| } |
| void MHTDC_debug(int sock){ |
| std::ofstream m_file("mhtdc.dat",std::ios::binary); |
| unsigned int saddr = 50; |
| unsigned int data = 0; |
| saddr = saddr << 16; |
| unsigned int signal = 4; |
| signal = signal << 8; |
| saddr += signal; |
| WriteData(sock, saddr); |
| saddr = 50; |
| saddr = saddr << 16; |
| WriteData(sock, saddr); |
| usleep(100000); |
| while(ForceStop == 0){ |
| // for(int k = 0; k<3; ++k){ |
| saddr = 41; |
| data = 0; |
| saddr = saddr << 16; |
| usleep(100000); |
| if(0 == ReadData(sock, saddr, &data)){ |
| int size = (data >> 8) & 0xff; |
| // std::cout << "size : " << size << std::endl; |
| std::cout << std::hex << "status : " << data << std::endl; |
| int valid = data & 0x1; |
| if(valid == 1){ |
| unsigned int f_size = 0xffff; |
| f_size = (f_size << 16) + size; |
| m_file.write((char*)&f_size, sizeof(unsigned int)); |
| for(int i = 0; i<size; ++i){ |
| // usleep(100); |
| saddr = 42; |
| saddr = saddr << 16; |
| unsigned int head =0; |
| if(0 == ReadData(sock, saddr, &data)){ |
| std::cout << std::hex << "header" << i << " : " << data << std::endl; |
| head = data & 0xffff; |
| }else{ |
| std::cerr << "Read error" << std::endl; |
| exit(-1); |
| } |
| // Leading |
| saddr = 40; |
| saddr = saddr << 16; |
| if(0 == ReadData(sock, saddr, &data)){ |
| unsigned int time = (data & 0xffff); |
| unsigned int one_data = (head << 16) + time; |
| m_file.write((char*)&one_data, sizeof(unsigned int)); |
| std::cout << std::dec << "time L" << i << " : " << time << " ns" << std::endl; |
| }else{ |
| std::cerr << "Read error" << std::endl; |
| exit(-1); |
| } |
| // Trailing |
| saddr = 43; |
| saddr = saddr << 16; |
| if(0 == ReadData(sock, saddr, &data)){ |
| unsigned int time = (data & 0xffff); |
| time = (1 << 15) + time; |
| unsigned int one_data = (head << 16) + time; |
| m_file.write((char*)&one_data, sizeof(unsigned int)); |
| std::cout << std::dec << "time T" << i << " : " << (time & 0xfff) << " ns" << std::endl; |
| }else{ |
| std::cerr << "Read error" << std::endl; |
| exit(-1); |
| } |
| } |
| saddr = 50; |
| saddr = saddr << 16; |
| signal = 4; |
| signal = signal << 8; |
| saddr += signal; |
| WriteData(sock, saddr); |
| saddr = 50; |
| saddr = saddr << 16; |
| WriteData(sock, saddr); |
| } |
| }else{ |
| std::cerr << "Read error" << std::endl; |
| exit(-1); |
| } |
| } |
| return; |
| } |
| int chipselect(){ |
| WriteData(3, 37888); |
| // if(-1 == WriteData(3, 5120)){ |
| // exit(-1); |
| // } |
| return 0; |
| } |
| */ |
| /cvi/apps/l2d2_easyroc/l2d.c |
|---|
| 0,0 → 1,1387 |
| //#define USE_DAQ |
| //#define USE_MIKRO |
| #define USE_EASIROC |
| #define USE_UDPCONTROL |
| #ifdef USE_EASIROC |
| #include "easiroc.h" |
| #define erIpAddr "192.168.10.16" |
| #define erDAQmode 3 |
| #endif |
| #ifdef USE_UDPCONTROL |
| #include "SiTCP.h" |
| #include "sender.h" |
| #define IpAddr "192.168.10.16" |
| #define tcpport 24 |
| #define udpport 4660 |
| int HVDAC = 0; |
| int MADC = 0; |
| int MUX = 0; |
| double HV = 0; |
| double rd_data = 0; |
| float DACdata[63]; |
| float HVC_1 = 483.183; |
| float HVC_2 = 780; |
| // HVDAC =HVC_1 * HV + HVC_2; convert HV to DAC bit |
| float ADC2HV = 0.00208; |
| // rd_data = ADC2HV * rd_data; convert ADC bit to HV |
| float ADC2uA = 0.034; |
| // rd_data = ADC2uA * rd_data; convert ADC bit to HVcurrent |
| float ADC2V = 0.0000685; |
| //rd_data = ADC2V * rd_data; convert ADC bit to inputDAC Voltage |
| float ADC2K = 4500; |
| // rd_data = ADC2K * rd_data/65535/2.4; convert ADC bit to TEMP(K) |
| #endif |
| // Izberi ustrezni interface v meniju projektnega okna |
| // Options->CompilerDefines (dodaj /DSISVME ali /DWIENVME) |
| #ifdef USE_DAQ |
| # define USE_CAMAC |
| # include "camac.h" |
| # ifdef SISVME |
| # include "sisWIENVME_VME_dll.h" |
| # endif |
| # ifdef WIENVME |
| //# include "wienWIENVME_VME_dll.h" |
| # include "wienvme_dll.h" |
| # endif |
| # include "CAENV965.h" |
| #endif |
| #ifdef USE_MIKRO |
| # include "MIKRO.h" |
| #endif |
| #include <userint.h> |
| #include <ansi_c.h> |
| #include <utility.h> |
| #include <analysis.h> |
| #include "l2d_ui.h" |
| #ifdef USE_DAQ |
| # define VADC_ADDR1 0x55550000 |
| # define VADC1 1 |
| //# define VADC_ADDR2 0x550000 |
| # define VADC2 2 |
| //# define NTDCJ1 17 |
| //# define NTDCJ2 18 |
| //# define NGL 23 |
| # define NPIO 23 |
| #define USE_CAEN_TDC |
| //CAEN V1290A TDC |
| #define TDC_ADDR 0x44440000 |
| #define NCH_TDC 32 |
| #define EVMAX 4 //how many of the multihit to save |
| // 0 1 2 3 4 5 6 7 8 9 A B C D E F |
| static int tdcmap[32]={ 0, 1,2, 3,4, 5,6, 7,8,9,10,11,12,13,14,15, |
| // 16 19 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
| 16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31}; |
| #endif |
| #ifdef USE_CAEN_TDC |
| // CAEN V1290 TDC |
| int V1290_writeOC(int *write_buffer); |
| int V1290_readOC(int *write_buffer); |
| void V1290_init(); |
| #endif |
| // Pomozne funkcije |
| int max_from(int* array, int ifrom, int ito); |
| #ifdef USE_MIKRO |
| # define MIKRO_COM 5 |
| # define MIKRO_X 1 |
| #define USE_MIKRO_Y |
| # define MIKRO_Y 2 |
| #define USE_MIKRO_Z |
| # define MIKRO_Z 3 |
| #endif |
| #define MAXCH_TDC 65536 |
| #define MAXCH_QDC 0x1000 |
| #define MAX_THREADS 10 |
| #define IWAIT 200 |
| # define NCH 32 |
| static int p1h, pID, rID, tfID; |
| static int ph_tdc, ph_adc; |
| static int dtdc[NCH][2][MAXCH_TDC]; |
| static int dadc[NCH][2][MAXCH_QDC]; |
| static int daq_on; |
| static int poolHandle = 0; |
| static int ntics,dummy; |
| // <- NTDCJ1 ->|<- NTDCJ2 -> |
| // 0 1 2 3 4 5 6 7 8 9 A B C D E F |
| //static int tdcmap[NCH]= { 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7 ,99,99,99,99}; |
| //static int adcmap[NCH*2]={ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15, 99,99,99,99, |
| //99,99,99,9999,99,99,9999,99,99,9999,99,99,99,99, 99,99,99,99}; |
| static int adcmap[32]={ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15, |
| 16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31}; |
| //static int adcmap[16]={99,99,99,99,99,99,99,99, 0, 1, 2, 3, 4, 5, 6, 7}; |
| //static int adcmap[16]={ 0, 1, 2, 3, 4, 5,99, 7, 6,99,99,99,99,99,99,99}; |
| //static int adcmap[16]={ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15}; |
| /************************************************************/ |
| void wait_loop(unsigned long iloop) |
| { |
| int i; |
| for (i=0;i<iloop;i++); |
| return; |
| } |
| int CVICALLBACK cb_timer (int panel, int control, int event, void *callbackData, |
| int eventData1, int eventData2) |
| { |
| QueueUserEvent (9000, p1h, P1_TIMER); |
| return (0); |
| } |
| int update_plots (void) |
| { |
| int irange, ch; |
| GetCtrlVal (p1h, P1_PLCH, &ch); |
| if (ph_tdc>0) DeleteGraphPlot (p1h, P1_TDC, ph_tdc, VAL_DELAYED_DRAW); |
| GetCtrlVal (p1h, P1_TDCHL, &irange); |
| ph_tdc = PlotY (p1h, P1_TDC, &dtdc[ch][irange], MAXCH_TDC, VAL_INTEGER, |
| VAL_VERTICAL_BAR, VAL_EMPTY_SQUARE, VAL_SOLID, 1, VAL_RED); |
| if (ph_adc>0) DeleteGraphPlot (p1h, P1_ADC, ph_adc, VAL_DELAYED_DRAW); |
| GetCtrlVal (p1h, P1_ADCHL, &irange); |
| ph_adc = PlotY (p1h, P1_ADC, &dadc[ch][irange], MAXCH_QDC, VAL_INTEGER, |
| VAL_VERTICAL_BAR, VAL_EMPTY_SQUARE, VAL_SOLID, 1, VAL_BLUE); |
| return (0); |
| } |
| int CVICALLBACK daq_run(void *functionData) |
| { |
| int i,j; |
| int ndat,dtype,ch,rg,adc,cres; |
| unsigned long a,b,ec1,ec2; |
| unsigned long data[100], data2[100]; |
| unsigned long aa[NCH][4]; |
| unsigned long step_minutes, end_time_s, cur_time_s; |
| int start_hours, start_minutes, start_seconds; |
| unsigned short tdcneve; |
| #ifdef USE_DAQ |
| unsigned long tdc_ev_c[NCH_TDC]; |
| #endif |
| int abstime, num_hits, tdcch; |
| int tdcbuff; |
| int dsave,status,fmax,fcount,fev; |
| int popupret; |
| char dfile[MAX_PATHNAME_LEN],dfile0[MAX_PATHNAME_LEN]; |
| int supr0,tdcmin,fseed,esave; |
| float frac; |
| double fracg; |
| int dum; |
| unsigned short dum16; |
| unsigned long dum32; |
| FILE *fp; |
| #define RUNREC_ID 1 |
| #define ENDREC_ID 2 |
| #define POSREC_ID 3 |
| #define EVTREC_ID 4 |
| typedef struct { |
| unsigned long id,len; |
| unsigned long fver,time; |
| unsigned long nev,nch,ped,xy; |
| long nx,x0,dx,ny,y0,dy; |
| } RUNREC; |
| RUNREC runrec; |
| typedef struct { |
| unsigned long id,len; |
| unsigned long time; |
| } ENDREC; |
| ENDREC endrec; |
| typedef struct { |
| unsigned long id,len; |
| unsigned long time; |
| long ix,x,xset,iy,y,yset; |
| } POSREC; |
| POSREC posrec; |
| typedef struct { |
| unsigned long id,len; |
| unsigned long nev; |
| unsigned short data[NCH*2]; |
| } EVTREC; |
| EVTREC evtrec; |
| runrec.id = RUNREC_ID; |
| runrec.len = sizeof(runrec); |
| runrec.fver = 0x10000; |
| runrec.nch = NCH; |
| GetCtrlVal(p1h, P1_ADCHLSAVE, &runrec.xy);//runrec.xy = 1; |
| endrec.id = ENDREC_ID; |
| endrec.len = sizeof(endrec); |
| posrec.id = POSREC_ID; |
| posrec.len = sizeof(posrec); |
| evtrec.id = EVTREC_ID; |
| evtrec.len = sizeof(evtrec); |
| /* |
| printf("<<<<<<<<<<<runrec.len %d\n",runrec.len); |
| printf("<<<<<<<<<<<endrec.len %d\n",endrec.len); |
| printf("<<<<<<<<<<<posrec.len %d\n",posrec.len); |
| printf("<<<<<<<<<<<evtrec.len %d\n",evtrec.len); |
| printf("<<<<<<<<<<<siye evtrec.len %d\n",sizeof(evtrec.len)); |
| printf("<<<<<<<<<<<siye evtrec.id %d\n",sizeof(evtrec.id)); |
| printf("<<<<<<<<<<<siye evtrec.nev %d\n",sizeof(evtrec.nev)); |
| printf("<<<<<<<<<<<siye evtrec.data %d\n",sizeof(evtrec.data)); */ |
| cres = 0; |
| GetCtrlVal (p1h, P1_NEVE, &runrec.nev); |
| GetCtrlVal (p1h, P1_PEDESTAL, &runrec.ped); |
| GetCtrlVal (p1h, P1_NX, &runrec.nx); |
| GetCtrlVal (p1h, P1_XSTEP, &runrec.dx); |
| GetCtrlVal (p1h, P1_XMIN, &runrec.x0); |
| GetCtrlVal (p1h, P1_NY, &runrec.ny); |
| GetCtrlVal (p1h, P1_YSTEP, &runrec.dy); |
| GetCtrlVal (p1h, P1_YMIN, &runrec.y0); |
| GetCtrlVal (p1h, P1_NMIN, &step_minutes); |
| GetSystemTime(&start_hours, &start_minutes, &start_seconds); |
| //cur_time_s = start_hours*3600 + start_minutes*60 + start_seconds; |
| time(&cur_time_s); |
| end_time_s = cur_time_s + step_minutes*60; |
| printf("START:%2d-%2d-%2d (cur_time = %u s, end_time = %u s)\n", start_hours, start_minutes, start_seconds, cur_time_s, end_time_s); |
| GetCtrlVal (p1h, P1_DSAVE, &dsave); |
| if (dsave) { |
| GetCtrlVal (p1h, P1_DFILE, dfile0); |
| fev=0; |
| fcount=1; |
| GetCtrlVal (p1h, P1_NEWF, &fmax); |
| fmax*=1000000;//fmax in Mega Bytes |
| } |
| GetCtrlVal (p1h, P1_SUPR, &supr0); |
| if (supr0) { |
| GetCtrlVal (p1h, P1_TDCMIN, &tdcmin); |
| GetCtrlVal (p1h, P1_FRAC, &frac); |
| } |
| #ifdef USE_DAQ |
| #ifdef VADC_ADDR1 |
| V965_map (VADC1, VADC_ADDR1, 1); |
| V965_init (VADC1, runrec.ped); |
| for(i=0;i<2*16;i++) { |
| dum16=0; |
| WIENVME_VME_A24D16_W(VADC_ADDR1 + 0x1080 + i*2, &dum16); |
| //printf("writing threshold to addr = 0x%X\n", 0x1080 + i*2); |
| } |
| #endif |
| #ifdef VADC_ADDR2 |
| V965_map (VADC2, VADC_ADDR2, 1); |
| V965_init (VADC2, runrec.ped); |
| for(i=0;i<2*16;i++) { |
| dum16=0; |
| WIENVME_VME_A24D16_W(VADC_ADDR2 + 0x1080 + i*2, &dum16); |
| //printf("writing threshold to addr = 0x%X\n", 0x1080 + i*2); |
| } |
| #endif |
| #ifdef USE_CAEN_TDC |
| dum=0; WIENVME_VME_A24D16_W(TDC_ADDR+0x1016, &dum); Delay(0.01); |
| //pair(00)/trailing(01)/leading(10)/both(11) edge |
| dum=0x2200; V1290_writeOC(&dum); |
| GetCtrlVal (p1h, P1_TDC_EDGE, &dum); |
| V1290_writeOC(&dum); |
| #endif |
| #ifdef USE_CAMAC |
| BZ(&cres); |
| CAMAC_cccz(&cres); |
| CAMAC_cccc(&cres); |
| CREM_I(&cres); |
| //CSSA_R(NGL,0,25,&cres); |
| #ifdef NPIO |
| //CAEN C 219 Progammable I/O |
| CSSA_R(NPIO, 0, 9, &dum);//init |
| //dum=6; //(OUTPUT, POSITIVE, NORMAL, TRANSPARENT) |
| dum=2; //(OUTPUT, NEGATIVE, NORMAL, TRANSPARENT) |
| CSSA_W(NPIO, 0, 17, &dum); |
| Delay(0.01); |
| #endif |
| Delay(0.01); |
| #ifdef NTDCJ1 |
| CSSA_R(NTDCJ1,0,9,&cres); |
| printf("CSSA_R(NTDCJ1,0,9,&cres)=0x%0x\n", cres); |
| CSSA_R(NTDCJ1,0,26,&cres); |
| CSSA_R(NTDCJ1,1,26,&cres); |
| printf("CSSA_R(NTDCJ1,0,26,&cres)=0x%0x\n", cres); |
| #endif |
| #ifdef NTDCJ2 |
| CSSA_R(NTDCJ2,0,9,&cres); |
| printf("CSSA_R(NTDCJ2,0,9,&cres)=0x%0x\n", cres); |
| CSSA_R(NTDCJ2,0,26,&cres); |
| printf("CSSA_R(NTDCJ2,0,26,&cres)=0x%0x\n", cres); |
| #endif |
| #endif |
| #endif |
| if (dsave) { |
| sprintf(dfile,"%s_file%02d.dat",dfile0,fcount); |
| /* |
| // checks if file already exists and prompts user for action |
| if( fopen(dfile, "r") != NULL ) { |
| popupret = GenericMessagePopup("Warrning!", "File already exists!", |
| "New file", "Overwrite", "Cancel", 0, 1, 0, |
| VAL_GENERIC_POPUP_BTN1, VAL_GENERIC_POPUP_BTN1, VAL_GENERIC_POPUP_BTN3); |
| //printf("GenericMessagePopup return val = %d\n", popupret); |
| switch( popupret ) { |
| case 1: // "New file" |
| printf("last char = %c\n", dfile[strlen(dfile0)-1]); |
| break; |
| case 2: // "Overwrite" |
| break; |
| default: // "Cancel" |
| daq_on=0; |
| SetCtrlVal (p1h, P1_DAQ, daq_on); |
| return 0; |
| } |
| } |
| */ |
| fp = fopen (dfile, "wb"); |
| time (&runrec.time); |
| status = fwrite (&runrec, 1, runrec.len, fp); |
| } |
| if (supr0) { |
| fseed = runrec.time & 0x7fffffff; |
| Uniform (1, fseed, &fracg); |
| } |
| for (posrec.iy=0;posrec.iy<runrec.ny;posrec.iy++) { |
| posrec.yset=runrec.y0+posrec.iy*runrec.dy; |
| #ifdef USE_MIKRO_Y |
| // printf("MIKRO_MoveTo (2, y);%d\n",y); |
| MIKRO_MoveTo (MIKRO_Y, posrec.yset); |
| // printf("->MIKRO_MoveTo (2, y);%d\n",y); |
| #endif |
| SetCtrlVal (p1h, P1_Y, posrec.yset); |
| SetCtrlVal (p1h, P1_IY, posrec.iy); |
| for (posrec.ix=0;posrec.ix<runrec.nx;posrec.ix++) { |
| posrec.xset=runrec.x0+posrec.ix*runrec.dx; |
| #ifdef USE_MIKRO |
| // printf("MIKRO_MoveTo (1, x);%d\n",x); |
| MIKRO_MoveTo (MIKRO_X, posrec.xset); |
| // printf("->MIKRO_MoveTo (1, x);%d\n",x); |
| #endif |
| SetCtrlVal (p1h, P1_X, posrec.xset); |
| SetCtrlVal (p1h, P1_IX, posrec.ix); |
| if (dsave) { |
| /*if (fmax && (ftell(fp) > fmax)) { |
| fcount+=1; |
| sprintf(dfile,"%s_file%02d.dat",dfile0,fcount); |
| fclose(fp); |
| fp = fopen (dfile, "wb"); |
| } */ |
| time (&posrec.time); |
| status = fwrite (&posrec, 1, posrec.len, fp); |
| } |
| // clear the plots |
| for (j=0;j<NCH;j++) { |
| for (i=0;i<MAXCH_TDC;i++){ |
| dtdc[j][0][i]=0; |
| dtdc[j][1][i]=0; |
| } |
| for (i=0;i<MAXCH_QDC;i++){ |
| dadc[j][0][i]=0; |
| dadc[j][1][i]=0; |
| } |
| } |
| evtrec.nev=1; |
| do { |
| for (j=0;j<NCH;j++) |
| for (i=0;i<4;i++) |
| aa[j][i]=0; |
| // if((neve%1000)==0) printf("Events %ld\n",neve); |
| #ifdef USE_DAQ |
| ndat = 0; |
| # ifdef VADC_ADDR1 |
| ndat=V965_clear(VADC1); |
| # endif |
| # ifdef VADC_ADDR2 |
| ndat=V965_clear(VADC2); |
| # endif |
| # ifdef USE_CAMAC |
| wait_loop(IWAIT); |
| # ifdef NTDCJ1 |
| CSSA_R(NTDCJ1,0,9,&cres); |
| # endif |
| # ifdef NTDCJ2 |
| CSSA_R(NTDCJ2,0,9,&cres); |
| # endif |
| #ifdef USE_CAEN_TDC |
| dum=0; WIENVME_VME_A24D16_W(TDC_ADDR+0x1016, &dum); //Delay(0.01); |
| #endif |
| // Delay(0.001); |
| wait_loop(IWAIT); |
| //CSSA_R(NGL,0,10,&cres); |
| # ifdef NPIO |
| dum=0x0; |
| CSSA_W(NPIO, 0, 16, &dum); |
| //printf("PIO VETO OFF\n"); |
| # endif |
| # endif |
| // Waiting for LAM |
| ntics=0; |
| //while( (!(V965_status(VADC1)&0x1)) && (ntics<2) && daq_on ); |
| /* |
| //tdcbuff=1; |
| #ifdef USE_CAEN_TDC |
| //dum=0x0; PCIWIENVME_VME_read16(hHandle24, 1, TDC_ADDR+0x1002, &dum);//Status Word |
| do { |
| dum16=0x0; WIENVME_VME_A24D16_R(TDC_ADDR+0x1002, &dum16); Delay(0.01); |
| //printf("tdc [%d] dum16 = %d | dum & 0x1 = %d | daq_on = %d\n", evtrec.nev, dum16, dum16 & 0x1, daq_on); |
| //tdcbuff=dum16 & 0x1;//LAM = last bit |
| } while( (!(dum16 & 0x1)) && daq_on ); |
| #endif |
| do { |
| //dum16=0x0; WIENVME_VME_A24D16_R(VADC_ADDR1+0x100E, &dum16); Delay(0.01); |
| //printf("adc [%d] dum16 = %d | dum & 0x1 = %d | VADC_ADDR1 = %x\n", evtrec.nev, dum16, dum16 & 0x1, VADC_ADDR1); |
| }while( (!(V965_status(VADC1)&0x1)) && daq_on ); |
| */ |
| //kobayashi |
| int tdc_lam, adc_lam; |
| #ifdef USE_CAEN_TDC |
| tdc_lam = 0; |
| #else |
| tdc_lam = 1; |
| #endif |
| #ifdef VADC_ADDR1 |
| adc_lam = 0; |
| #else |
| adc_lam = 1; |
| #endif |
| //printf(">>>> LAM: "); |
| #ifdef USE_CAEN_TDC |
| do { |
| dum16=0x0; WIENVME_VME_A24D16_R(TDC_ADDR+0x1002, &dum16); //Delay(0.01); |
| tdc_lam = dum16 & 0x1; |
| } while( (!tdc_lam) && daq_on ); |
| //printf("tdc_lam = %d | ", tdc_lam); |
| #endif |
| #ifdef VADC_ADDR1 |
| do { |
| adc_lam = V965_status(VADC1)&0x1; |
| } while( (!adc_lam) && daq_on ); |
| //printf("adc_lam = %d", adc_lam); |
| #endif |
| //printf("\n"); |
| # ifdef NPIO |
| dum=0x1; |
| CSSA_W(NPIO, 0, 16, &dum); |
| //printf("PIO VETO ON\n"); |
| # endif |
| wait_loop(2000); |
| if (!daq_on) break; |
| if (ntics>=2) { |
| # ifdef VADC_ADDR1 |
| ndat=V965_read (VADC1, &data[0]); |
| # endif |
| # ifdef VADC_ADDR2 |
| ndat=V965_read (VADC2, &data2[0]); |
| # endif |
| if(step_minutes > 0) { |
| GetSystemTime(&start_hours, &start_minutes, &start_seconds); |
| //cur_time_s = start_hours*3600 + start_minutes*60 + start_seconds; |
| time(&cur_time_s); |
| if(cur_time_s >= end_time_s) { |
| end_time_s = cur_time_s + step_minutes*60; |
| printf("STEP (lam):%2d-%2d-%2d @ %d\n", start_hours, start_minutes, start_seconds, posrec.xset); |
| break; |
| } |
| } |
| continue; |
| } |
| for (i=0; i<NCH; i++) { |
| adc=0; |
| wait_loop(IWAIT); |
| # ifdef USE_CAMAC |
| # ifdef NTDCJ1 |
| if(i<8) { |
| CSSA_R(NTDCJ1,tdcmap[i],0,&adc); |
| //printf("TDC=0x%04X\n",adc); |
| adc=adc&0xfff; |
| aa[i][0]=adc; |
| dtdc[i][0][adc]+=1; |
| } |
| # endif |
| # ifdef NTDCJ2 |
| if(8<=i && i<16) { |
| CSSA_R(NTDCJ2,tdcmap[i],0,&adc); |
| //printf("TDC=0x%04X\n",adc); |
| adc=adc&0xfff; |
| //offset for channel mapping (0-9 = MCPPMT5, 0-7 = tdc, 8,9=adc only) |
| aa[i+2][0]=adc; |
| dtdc[i+2][0][adc]+=1; |
| } |
| # endif |
| # endif |
| } |
| // TDC |
| #ifdef USE_CAEN_TDC |
| int dbg_tdc_t = 0; |
| int dbg_tdc_f = 0; |
| FILE *fpout=NULL; |
| if(dbg_tdc_f) fpout=fopen("TDCout.txt", "at"); |
| //number of events |
| //tdcneve=0; PCIWIENVME_VME_read16(hHandle24, 1, TDC_ADDR+0x1020, &tdcneve); |
| tdcneve=0; WIENVME_VME_A24D16_R(TDC_ADDR+0x1020, &tdcneve); |
| unsigned long triggneve=0; WIENVME_VME_A24D32_R(TDC_ADDR+0x101C, &triggneve); |
| if(dbg_tdc_t) printf("\n [%d] tdcneve = %u | triggneve = %u\n", evtrec.nev, tdcneve, triggneve); |
| if(dbg_tdc_f) fprintf(fpout, "\n [%d] tdcneve = %u | triggneve = %u\n", evtrec.nev, tdcneve, triggneve); |
| int tdcchhit[32]; |
| unsigned short l=0; |
| for (i=0;i<NCH_TDC;i++) |
| tdc_ev_c[i]=0; |
| while(l < tdcneve) |
| { |
| //dum=0x0; PCIWIENVME_VME_read32(hHandle24, 1, TDC_ADDR+0x0, &dum);//read |
| dum32=0x0; WIENVME_VME_A24D32_R(TDC_ADDR+0x0, &dum32); |
| if(dbg_tdc_t) printf(">>>>>>>>>>>>> l = %d | %x\n", l, dum32); |
| if(dbg_tdc_f) fprintf(fpout, ">>>>>>>>>>>>> l = %d | %x\n", l, dum32); |
| switch(dum32 & 0xf8000000) |
| { |
| case 0x40000000://01000 = Global Header |
| for (int k=0;k<32;k++) tdcchhit[k]=0; |
| if(dbg_tdc_t) printf(">>> GLOBAL HEADER | event count = %d\n", (dum32 & 0x7FFFFFF) >> 5); |
| if(dbg_tdc_f) fprintf(fpout, ">>> GLOBAL HEADER | event count = %d\n", (dum32 & 0x7FFFFFF) >> 5); |
| break; |
| case 0x8000000://00001 = TDC Header |
| if(dbg_tdc_t) printf(">>> TDC HEADER | Event ID =%d | Bunch ID = %d\n", (dum32 & 0xFFFFFF) >> 12, (dum32 & 0xFFF)); |
| if(dbg_tdc_f) fprintf(fpout, ">>> TDC HEADER | Event ID =%d | Bunch ID = %d\n", (dum32 & 0xFFFFFF) >> 12, (dum32 & 0xFFF)); |
| break; |
| case 0x00000000://00000 = TDC Measurement |
| if(dbg_tdc_t) printf(">>> TDC Measurement !!!!!!!! >>> CH = %d | edge = %d | ev = %d\n", (dum32 & 0x3FFFFFF) >> 21, (dum32 & 0x7FFFFFF) >> 26, dum32 & 0x1FFFFF); |
| if(dbg_tdc_f) fprintf(fpout, ">>> TDC Measurement !!!!!!!! >>> CH = %d | edge = %d | ev = %d\n", (dum32 & 0x3FFFFFF) >> 21, (dum32 & 0x7FFFFFF) >> 26, dum32 & 0x1FFFFF); |
| //TDC Channel = 0000 0x<...Channel...>x 20*x |
| tdcch = tdcmap[(dum32 & 0x3FFFFFF) >> 21]; |
| //TDC Measurement = 0000 0xxx xxx<...TDC...> |
| unsigned long tdc_ev = dum32 & 0x1FFFFF; |
| int tdc_edge = (dum32 & 0x1) >> 26; |
| /* |
| adc = (int)(tdc_ev/4.0); // 21 bit -> 16 bit ??? |
| int adcs = (int)(adc/16.0); |
| */ |
| /* |
| int tdc_ev_offset = 31000; |
| adc = tdc_ev - tdc_ev_offset; |
| int adcs = 0; |
| if(0 < adc) adcs = adc; |
| if(4095 < adc) adcs = 4095; |
| */ |
| if(dbg_tdc_t) printf(">>> tdcch = %d | tdc_ev = %d | raw = %d\n", tdcch, tdc_ev, dum32); |
| if(dbg_tdc_f) fprintf(fpout, ">>> tdcch = %d | tdc_ev = %d | raw = %d\n", tdcch, tdc_ev, dum32); |
| if(l==0) |
| if(tdcchhit[tdcch]==0) |
| if(tdc_edge==0) { |
| if(tdcch < NCH_TDC) { |
| aa[tdcch][0]=tdc_ev; |
| if(tdcch < MAXCH_TDC) { |
| dtdc[tdcch][0][tdc_ev]+=1; |
| } |
| } |
| } |
| tdcchhit[tdcch]=1; |
| break; |
| case 0x18000000://00011 = TDC Trailer |
| if(dbg_tdc_t) printf(">>> TDC Trailer | Event ID =%d\n", (dum32 & 0xFFFFFF) >> 12); |
| if(dbg_tdc_f) fprintf(fpout, ">>> TDC Trailer | Event ID =%d\n", (dum32 & 0xFFFFFF) >> 12); |
| break; |
| case 0x20000000://00100 = TDC Error |
| if(dbg_tdc_t) printf(">>> TDC Error = %d\n", dum32 & 0x7FFF); |
| if(dbg_tdc_f) fprintf(fpout, ">>> TDC Error = %d\n", dum32 & 0x7FFF); |
| break; |
| case 0x88000000://10001 = Extended Trigger Time Tag |
| if(dbg_tdc_t) printf(">>> Extended Trigger Time Tag \n"); |
| if(dbg_tdc_f) fprintf(fpout, ">>> Extended Trigger Time Tag \n"); |
| break; |
| case 0xC0000000://11000 = Filler |
| if(dbg_tdc_t) printf(">>> Filler \n"); |
| if(dbg_tdc_f) fprintf(fpout, ">>> Filler \n"); |
| break; |
| case 0x80000000://10000 = The Trailer |
| num_hits=((dum32 & 0x1FFFFF) >> 5) - 2; |
| l++; |
| if(dbg_tdc_t) printf(">>> The Trailer | status bits: %d%d%d | num_hits = %d\n", (dum32 >> 26) % 0x1, (dum32 >> 25) % 0x1, (dum32 >> 24) % 0x1, num_hits); |
| if(dbg_tdc_f) fprintf(fpout, ">>> The Trailer | num_hits = %d\n", num_hits); |
| break; |
| /* |
| case 0x00000000://00000 = TDC Measurement |
| //TDC Channel = 0000 0x<...Channel...>x 20*x |
| tdcch = tdcmap[(dum32 & 0x3FFFFFF) >> 21]; |
| //TDC Measurement = 0000 0xxx xxx<...TDC...> |
| tdc_ev = dum32 & 0x1FFFFF; |
| if((tdcch < NCH_TDC)&&(tdc_ev < MAXCH_TDC)&&(tdc_ev_c[tdcch] < EVMAX)) |
| { |
| dtdc[tdcch][tdc_ev_c[tdcch]][tdc_ev]++; |
| //atdc[tdcch][tdc_ev_c[tdcch]++] = tdc_ev; |
| } |
| //#define CH_TRG 0 |
| //#define CH_SIPM 1 |
| //#define CH_PMT 2 |
| //for(i=1;i<NCH_TDC;i++) |
| // if(tdc_ev_c[CH_TRG] && tdc_ev_c[i]) |
| // { |
| // abstime=atdc[i][tdc_ev_c[i]-1] - atdc[CH_TRG][tdc_ev_c[CH_TRG]-1] + 30000; |
| // if((0 <= abstime) && (abstime < MAXCH_TDC)) |
| // dtdc2[i][tdc_ev_c[i]-1][abstime]++; |
| // } |
| break; |
| case 0x80000000://10000 = Global Trailer |
| //Word Count = bit 31...21< Word Count: 20 ... 5 > 4...0 |
| num_hits=((dum32 & 0x1FFFFF) >> 5) - 2; |
| l++; |
| break; |
| case 0xC0000000://11000 = Filler |
| l=tdcneve;//exit while loop |
| break; */ |
| default: |
| break; |
| } |
| } |
| if(dbg_tdc_f) fclose(fpout); |
| #endif |
| # ifdef VADC_ADDR1 |
| ndat=V965_read (VADC1, &data[0]); |
| //printf("<<<<<ndat %d\n",ndat); |
| for (i=0; i<ndat; i++) { |
| dtype=(data[i]>>25)&0x3; |
| if (dtype==0) { |
| ch=adcmap[(data[i]>>17)&0xf]; |
| if (ch<NCH) { |
| rg=(data[i]>>16)&0x1; |
| adc=data[i]&0xfff; |
| aa[ch][rg+2]=adc; |
| dadc[ch][rg][adc]+=1; |
| //printf("<<<<<ch %d rg %d adc %d map %d\n",ch,rg,adc, (data[i]>>17)&0xf); |
| } |
| } |
| } |
| //printf("VADC_ADDR1 READ\n"); |
| # endif |
| // printf("======================================\n"); |
| # ifdef VADC_ADDR2 |
| ndat=V965_read (VADC2, &data2[0]); |
| for (i=0; i<ndat; i++) { |
| dtype=(data2[i]>>25)&0x3; |
| if (dtype==0) { |
| ch=adcmap[NCH + ((data2[i]>>17)&0xf)]; |
| //printf("ADCCH = %2d , adcmap[ADCCH] = %2d , ADC = %d\n", NCH + ((data2[i]>>17)&0xf), ch, data2[i]&0xfff); |
| if (ch<NCH) { |
| rg=(data2[i]>>16)&0x1; |
| adc=data2[i]&0xfff; |
| aa[ch][rg+2]=adc; |
| dadc[ch][rg][adc]+=1; |
| } |
| } |
| } |
| # endif |
| #else /* generate test data */ |
| if (!daq_on) break; |
| for (i=0;i<NCH;i++) { |
| adc=100+evtrec.nev%200; |
| dtdc[i][1][adc]+=1; |
| dadc[i][1][adc]+=1; |
| aa[i][0]=adc; |
| aa[i][2]=adc; |
| adc=200+evtrec.nev%400; |
| dtdc[i][0][adc]+=1; |
| dadc[i][0][adc]+=1; |
| aa[i][1]=adc; |
| aa[i][3]=adc; |
| } |
| #endif |
| esave=dsave; |
| if (supr0 && esave) { |
| Uniform (1, -1, &fracg); |
| if (fracg > frac) { |
| esave=0; |
| for (i=0;i<NCH;i++) { |
| if (aa[i][0] >= tdcmin) esave=1; |
| } |
| } |
| } |
| if (esave) { |
| // time (&evtrec.time); |
| //GetCtrlVal(p1h, P1_ADCHLSAVE, &runrec.xy); |
| for (i=0;i<NCH;i++) { |
| evtrec.data[i] = aa[i][0]; //TDC |
| //printf(">>> TDC Measurement !!!!!!!! >>> CH = %d | ev = %d\n", i, evtrec.data[i]); |
| //if(i==0) |
| // evtrec.data[i+NCH] = aa[i][2]; //ADC High Range = 2 , low = 3 |
| //else |
| evtrec.data[i+NCH] = aa[i][2]; //ADC High Range = 2 , low = 3 |
| // printf(">>> ADC Measurement !!!!!!!! >>> CH = %d | ev = %d \n", i, evtrec.data[i+NCH]); |
| //printf("<<<<<<<<<<<evtrec.len %d\n",evtrec.len); |
| } |
| status = fwrite (&evtrec, 1, evtrec.len, fp); |
| } |
| //if (!(evtrec.nev%1000)) |
| SetCtrlVal (p1h, P1_CEVE, evtrec.nev); |
| if (dsave&&(!(evtrec.nev%1000))) { |
| if (fmax && (ftell(fp) > fmax)) { |
| time (&endrec.time); |
| status = fwrite (&endrec, 1, endrec.len, fp); |
| fcount+=1; |
| sprintf(dfile,"%s_file%02d.dat",dfile0,fcount); |
| fclose(fp); |
| fp = fopen (dfile, "wb"); |
| printf(" Opened file %s\n", dfile); |
| } |
| } |
| if(step_minutes > 0) { |
| GetSystemTime(&start_hours, &start_minutes, &start_seconds); |
| //cur_time_s = start_hours*3600 + start_minutes*60 + start_seconds; |
| time(&cur_time_s); |
| if(cur_time_s >= end_time_s) { |
| end_time_s = cur_time_s + step_minutes*60; |
| printf("STEP (nev):%2d-%2d-%2d @ %d\n", start_hours, start_minutes, start_seconds, posrec.xset); |
| break; |
| } |
| } |
| } while (evtrec.nev++<runrec.nev); |
| if (!daq_on) break; |
| } |
| if (!daq_on) break; |
| } |
| if (dsave) { |
| time (&endrec.time); |
| status = fwrite (&endrec, 1, endrec.len, fp); |
| fclose(fp); |
| } |
| daq_on=0; |
| SetCtrlVal (p1h, P1_DAQ, daq_on); |
| SetCtrlVal (p1h, P1_CEVE, evtrec.nev); |
| return 0; |
| } |
| //================================================================================= |
| //================================================================================= |
| //================================================================================= |
| int __stdcall WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, |
| LPSTR lpszCmdLine, int nCmdShow) |
| { |
| int i,j,status,refon; |
| long int xpos, ypos, zpos; |
| char dfile[300]; |
| FILE *fp; |
| int dum; |
| unsigned short dum16; |
| typedef struct { |
| unsigned long id,len; |
| unsigned long fver,time; |
| unsigned long nev,nch,ped,xy; |
| long nx,x0,dx,ny,y0,dy; |
| } RUNREC; |
| RUNREC runrec; |
| if (InitCVIRTE (hInstance, 0, 0) == 0) |
| return -1; /* out of memory */ |
| SetSleepPolicy(VAL_SLEEP_MORE); |
| CmtNewThreadPool (MAX_THREADS, &poolHandle); |
| SetStdioWindowOptions (1000, 0, 0); |
| //SetStdioWindowSize (150, 600); |
| //SetStdioWindowPosition (825, 250); |
| SetStdioWindowSize (900, 600); |
| //SetStdioWindowPosition (20, 800); |
| SetStdioWindowPosition (20, 1100); |
| #ifdef USE_DAQ |
| WIENVME_VME_START(NULL); |
| #endif |
| #ifdef USE_CAEN_TDC |
| V1290_init(); |
| #endif |
| #ifdef USE_MIKRO |
| MIKRO_Open (MIKRO_COM); |
| MIKRO_Init (MIKRO_X,0); |
| #ifdef USE_MIKRO_Y |
| MIKRO_Init (MIKRO_Y,0); |
| #endif |
| #ifdef USE_MIKRO_Z |
| MIKRO_Init (MIKRO_Z,0); |
| #endif |
| #endif |
| if ((p1h = LoadPanel (0, "l2d_ui.uir", P1)) < 0) return -1; |
| DisplayPanel (p1h); |
| SetCtrlAttribute (p1h, P1_PLCH, ATTR_MAX_VALUE, NCH-1); |
| GetCtrlVal(p1h, P1_ADCHLSAVE, &runrec.xy); |
| SetCtrlVal(p1h, P1_ADCHL, runrec.xy-2); |
| QueueUserEvent (1000, p1h, P1_RESET); |
| do { |
| GetUserEvent (1, &pID, &rID); |
| switch (rID) { |
| case P1_TIMER: |
| ntics+=1; |
| GetCtrlVal (p1h, P1_REFON, &refon); |
| if (refon) update_plots(); |
| break; |
| case P1_REFRESH: |
| update_plots(); |
| break; |
| case P1_DAQ: |
| GetCtrlVal (p1h, P1_DAQ, &daq_on); |
| if (daq_on) { |
| CmtScheduleThreadPoolFunction (poolHandle, daq_run, (void *)&dummy, &tfID); |
| } else { |
| CmtWaitForThreadPoolFunctionCompletion (poolHandle, tfID, |
| OPT_TP_PROCESS_EVENTS_WHILE_WAITING); |
| CmtReleaseThreadPoolFunctionID (poolHandle, tfID); |
| # ifdef NPIO |
| dum=0x0; |
| CSSA_W(NPIO, 0, 16, &dum); |
| //printf("PIO VETO OFF\n"); |
| # endif |
| } |
| break; |
| case P1_ZSET: |
| if (!daq_on) { |
| GetCtrlVal (p1h, P1_ZSET, &zpos); |
| #ifdef USE_MIKRO_Z |
| MIKRO_MoveTo (MIKRO_Z, zpos); |
| #endif |
| } |
| break; |
| case P1_REREAD: |
| if (!daq_on) { |
| status = FileSelectPopup ("", "*.dat", ".dat", |
| "Izberi datoteko s podatki", |
| VAL_LOAD_BUTTON, 0, 0, 1, 0, dfile); |
| if (status==1) { |
| fp = fopen (dfile, "rb"); |
| status = fread (&runrec, 1, sizeof(runrec), fp); |
| fclose(fp); |
| if (runrec.id==1) { |
| SetCtrlVal (p1h, P1_NX, runrec.nx); |
| SetCtrlVal (p1h, P1_XSTEP, runrec.dx); |
| SetCtrlVal (p1h, P1_XMIN, runrec.x0); |
| SetCtrlVal (p1h, P1_NY, runrec.ny); |
| SetCtrlVal (p1h, P1_YSTEP, runrec.dy); |
| SetCtrlVal (p1h, P1_YMIN, runrec.y0); |
| SetCtrlVal (p1h, P1_NEVE, runrec.nev); |
| } |
| } |
| } |
| break; |
| case P1_MGET: |
| #ifdef USE_MIKRO |
| MIKRO_GetPosition(MIKRO_X,&xpos); |
| Delay(0.01); |
| SetCtrlVal (p1h, P1_X, xpos); |
| #ifdef USE_MIKRO_Y |
| MIKRO_GetPosition(MIKRO_Y,&ypos); |
| Delay(0.01); |
| SetCtrlVal (p1h, P1_Y, ypos); |
| #endif |
| #ifdef USE_MIKRO_Z |
| MIKRO_GetPosition(MIKRO_Z,&zpos); |
| Delay(0.01); |
| SetCtrlVal (p1h, P1_Z, zpos); |
| #endif |
| #endif |
| break; |
| case P1_HO: |
| if (!daq_on) { |
| SetWaitCursor (1); |
| #ifdef USE_MIKRO |
| MIKRO_ReferenceMove (MIKRO_X); |
| #ifdef USE_MIKRO_Y |
| MIKRO_ReferenceMove (MIKRO_Y); |
| #endif |
| #ifdef USE_MIKRO_Z |
| MIKRO_ReferenceMove (MIKRO_Z); |
| #endif |
| #endif |
| SetWaitCursor (0); |
| } |
| break; |
| case P1_RESET: |
| for (j=0;j<NCH;j++) { |
| for (i=0;i<MAXCH_TDC;i++){ |
| dtdc[j][0][i]=0; |
| dtdc[j][1][i]=0; |
| } |
| for (i=0;i<MAXCH_QDC;i++){ |
| dadc[j][0][i]=0; |
| dadc[j][1][i]=0; |
| } |
| } |
| update_plots(); |
| break; |
| case P1_TDCLOG: |
| GetCtrlVal (p1h, P1_TDCLOG, &status); |
| SetCtrlAttribute (p1h, P1_TDC, ATTR_YMAP_MODE, status); |
| update_plots(); |
| break; |
| case P1_ADCLOG: |
| GetCtrlVal (p1h, P1_ADCLOG, &status); |
| SetCtrlAttribute (p1h, P1_ADC, ATTR_YMAP_MODE, status); |
| update_plots(); |
| break; |
| case P1_PIO_ON: |
| # ifdef NPIO |
| dum=0x1; |
| CSSA_W(NPIO, 0, 16, &dum); |
| printf("PIO VETO ON\n"); |
| # endif |
| break; |
| case P1_PIO_OFF: |
| # ifdef NPIO |
| dum=0x0; |
| CSSA_W(NPIO, 0, 16, &dum); |
| printf("PIO VETO OFF\n"); |
| # endif |
| break; |
| case P1_TDCCLEAR: |
| #ifdef USE_CAEN_TDC |
| dum16=0x0; WIENVME_VME_A24D16_W(TDC_ADDR+0x1014, &dum16); Delay(0.1); |
| dum16=0x0; WIENVME_VME_A24D16_W(TDC_ADDR+0x1016, &dum16); Delay(0.1); |
| dum16=0x0; WIENVME_VME_A24D16_W(TDC_ADDR+0x1018, &dum16); Delay(0.1); |
| #endif |
| break; |
| case P1_TDCMIKRO: |
| #ifdef USE_CAEN_TDC |
| dum=0x0000; WIENVME_VME_A24D16_R(TDC_ADDR + 0x1030, &dum); Delay(0.01); printf("Micro handshake = %x\n", dum); |
| #endif |
| break; |
| case P1_TDCINIT: |
| #ifdef USE_CAEN_TDC |
| //V1290_init() ; |
| ////Maximum number of hits per event |
| printf("V1290_writeOC(0x3300)\n"); |
| dum=0x3300; V1290_writeOC(&dum); Delay(0.1); |
| //dum=0x0001; V1290_writeOC(&dum); Delay(0.1); |
| printf("V1290_writeOC(0x1000)\n"); |
| dum=0x1000; V1290_writeOC(&dum); Delay(0.1); |
| printf("V1290_writeOC(0x3400)\n"); |
| dum=0x3400; V1290_writeOC(&dum); Delay(0.1); |
| dum=0x0; |
| printf("V1290_readOC()\n"); |
| if(V1290_readOC(&dum) == -1) |
| printf("V1290_readOC timeout!!!\n"); |
| else { |
| Delay(0.1); |
| printf("TDC Maximum number of hits per event = %d\n", dum); |
| } |
| #endif |
| break; |
| case P1_TDCTEST: |
| #ifdef USE_CAEN_TDC |
| /* |
| for (i=0x4000;i<0x4050;i+=4) { |
| dum=0; |
| WIENVME_VME_A24D16_R(TDC_ADDR+i, &dum); |
| printf("0x%04X -> 0x%04X\n",i,dum); |
| } |
| for (i=0x4080;i<0x4088;i+=4) { |
| dum=0; |
| WIENVME_VME_A24D16_R(TDC_ADDR+i, &dum); |
| printf("0x%04X -> 0x%04X\n",i,dum); |
| } |
| dum=0;i=0x1026; |
| WIENVME_VME_A24D16_R(TDC_ADDR+i, &dum); |
| printf("0x%04X -> 0x%04X\n",i,dum); |
| dum=0x0200; V1290_writeOC(&dum); |
| dum=0x0; V1290_readOC(&dum); printf("dum = %04X\n", dum&0xFFFF); |
| */ |
| dum=0x4500; V1290_writeOC(&dum); |
| dum=0x0; V1290_readOC(&dum); printf("Ch Enable 1 = %04X\n", dum&0xFFFF); |
| dum=0x0; V1290_readOC(&dum); printf("Ch Enable 2 = %04X\n", dum&0xFFFF); |
| dum=0x1600; V1290_writeOC(&dum); |
| dum=0x0000; V1290_readOC(&dum); printf("Match window Width = %d\n", dum&0xFFFF); |
| dum=0x0000; V1290_readOC(&dum); printf("Window Offset = %d\n", dum&0xFFFF); |
| dum=0x0000; V1290_readOC(&dum); printf("Extra Search Window = %d\n", dum&0xFFFF); |
| dum=0x0000; V1290_readOC(&dum); printf("Reject Margin = %d\n", dum&0xFFFF); |
| dum=0x0000; V1290_readOC(&dum); printf("Trigger Subtraction = %d\n", dum&0xFFFF); |
| dum=0x3400; V1290_writeOC(&dum); |
| dum=0x0000; V1290_readOC(&dum); printf("TDC Maximum number of hits per event = %d\n", dum); |
| /* |
| // test |
| dum16=0x0; WIENVME_VME_A24D16_R(TDC_ADDR+0x1026, &dum16); Delay(0.1); |
| printf("WIENVME_VME_A24D16_R(TDC_ADDR+0x1026, dum16) -> %d\n", dum16); |
| //dum=0x20; WIENVME_VME_A24D16_W(TDC_ADDR+0x1000, &dum); Delay(0.1); |
| dum=0x0; WIENVME_VME_A24D16_R(TDC_ADDR+0x1000, &dum); Delay(0.1); |
| printf("WIENVME_VME_A24D16_R(TDC_ADDR+0x1000, dum) -> %d\n", dum); |
| dum=0x0; WIENVME_VME_A24D16_R(TDC_ADDR+0x1002, &dum); Delay(0.1); |
| printf("WIENVME_VME_A24D16_R(TDC_ADDR+0x1002, dum) -> %d\n", dum); |
| int tdcneve=0; WIENVME_VME_A24D16_R(TDC_ADDR+0x1020, &tdcneve); |
| unsigned long triggneve=0; WIENVME_VME_A24D32_R(TDC_ADDR+0x101C, &triggneve); |
| printf("tdcneve = %d | triggneve = %u\n", tdcneve, triggneve); |
| dum=0x4500; V1290_writeOC(&dum); |
| dum=0x0; V1290_readOC(&dum); printf("Channel enable mask word 1 = %x\n", dum); |
| dum=0x0; V1290_readOC(&dum); printf("Channel enable mask word 2 = %x\n", dum); |
| //dum=0x4500; WIENVME_VME_A24D16_W(TDC_ADDR+0x102E, &dum); Delay(0.1); |
| //dum=0x0000; WIENVME_VME_A24D16_R(TDC_ADDR+0x102E, &dum); Delay(0.1); printf("Channel enable mask word 1 = %x\n", dum); |
| //dum=0x0000; WIENVME_VME_A24D16_R(TDC_ADDR+0x102E, &dum); Delay(0.1); printf("Channel enable mask word 2 = %x\n", dum); |
| */ |
| //dum16=0x0; WIENVME_VME_A24D16_R(VADC_ADDR1+0x1000, &dum16); Delay(0.1); |
| //printf("WIENVME_VME_A24D16_R(VADC_ADDR1+0x1000, dum16) -> %x\n", dum16); |
| /* |
| dum=0xC200; V1290_writeOC(&dum); printf("V1290_writeOC(&dum) -> %d\n", dum); |
| dum=0x0; V1290_readOC(&dum); printf("1. V1290_readOC(&dum) -> %d\n", dum); |
| dum=0x0; V1290_readOC(&dum); printf("2. V1290_readOC(&dum) -> %d\n", dum); |
| dum=0x0; V1290_readOC(&dum); printf("3. V1290_readOC(&dum) -> %d\n", dum); |
| dum=0x0; V1290_readOC(&dum); printf("4. V1290_readOC(&dum) -> %d\n", dum); |
| dum16=0xC200; WIENVME_VME_A24D16_W(TDC_ADDR+0xC200, &dum16); Delay(0.1); |
| printf("WIENVME_VME_A24D16_W(TDC_ADDR+0xC200, dum) -> %x\n", dum16); |
| dum16=0x0; WIENVME_VME_A24D16_R(TDC_ADDR+0xC200, &dum16); Delay(0.1); |
| printf("1. WIENVME_VME_A24D16_R(TDC_ADDR+0xC200, dum) -> %x\n", dum16); |
| dum16=0x0; WIENVME_VME_A24D16_R(TDC_ADDR+0xC200, &dum16); Delay(0.1); |
| printf("2. WIENVME_VME_A24D16_R(TDC_ADDR+0xC200, dum16) -> %x\n", dum16); |
| dum16=0x0; WIENVME_VME_A24D16_R(TDC_ADDR+0xC200, &dum16); Delay(0.1); |
| printf("3. WIENVME_VME_A24D16_R(TDC_ADDR+0xC200, dum16) -> %x\n", dum16); |
| dum16=0x0; WIENVME_VME_A24D16_R(TDC_ADDR+0xC200, &dum16); Delay(0.1); |
| printf("4. WIENVME_VME_A24D16_R(TDC_ADDR+0xC200, dum16) -> %x\n", dum16); */ |
| #endif |
| break; |
| #ifdef USE_EASIROC |
| case P1_ESRC_INIT: |
| easiroc_Init(erIpAddr, erDAQmode); |
| break; |
| case P1_ESRC_F1: |
| easiroc_fTransmitSC(); |
| break; |
| case P1_ESRC_F2: |
| easiroc_fTransmitReadSC(); |
| break; |
| case P1_ESRC_F3: |
| easiroc_fAsicInitialize(); |
| break; |
| case P1_ESRC_F4: |
| int transmitProbeCh = 0; |
| GetCtrlVal (p1h, P1_ESRC_PROBE_CH, &transmitProbeCh); |
| int transmitProbeType = 0; |
| GetCtrlVal (p1h, P1_ESRC_PROBE_TYPE, &transmitProbeType); |
| printf("transmitProbeCh = %d | transmitProbeType = %d\n", transmitProbeCh, transmitProbeType); |
| if(easiroc_fTransmitProbe(transmitProbeCh, transmitProbeType) == 0) |
| printf("\nTransmit Probe SUCESS\n"); |
| break; |
| case P1_ESRC_DAQ: |
| char esrcDaqFile[256]; |
| GetCtrlVal (p1h, P1_DFILE, esrcDaqFile); |
| int esrcDaqNeve = 0; |
| GetCtrlVal (p1h, P1_NEVE, &esrcDaqNeve); |
| if(easiroc_fDAQ(esrcDaqFile, esrcDaqNeve) == 0) |
| printf("\nEASIROC DAQ SUCESS\n"); |
| break; |
| case P1_ESRC_CLOSE: |
| easiroc_Close(); |
| break; |
| #endif |
| #ifdef USE_UDPCONTROL |
| case P1_ER_INIT: |
| SiTCPinit(); |
| SiTCPSetIPPort(IpAddr, tcpport, udpport); |
| // SiTCPCreateTCPSock(); |
| SiTCPCreateUDPSock(); |
| SenderInit(); |
| Senderudp_send(0x00000012,248); //Set ADC rate to 50Hz |
| Senderudp_send(0x0000001f,0); |
| break; |
| case P1_ER_CLOSE: |
| SiTCPclose(); |
| SenderClose(); |
| break; |
| case P1_ER_HV_CONTROL: |
| GetCtrlVal (p1h, P1_ER_HV_CONTROL_IN, &HV); |
| HVDAC = HVC_1 * HV + HVC_2; //change HV to DAC bit |
| printf("P1_ER_HV_CONTROL: HV = %lf | HVDAC = %d\n", HV, HVDAC); |
| Senderudp_send(0x00000010,HVDAC/256);//Set higher 8bit to FPGA reg |
| Senderudp_send(0x00000011,HVDAC%256);//lower 8bit |
| Senderudp_send(0x0000001e,1); //Start DAC control |
| break; |
| case P1_ER_HV_STATUS: |
| rd_data = Senderread_madc(3);//Read ADC data |
| // std::cout <<"MADC_data = "<< rd_data; |
| rd_data = ADC2HV * rd_data; //convert ADC bit to HV |
| printf("Bias voltage : %.2lfV\n",rd_data); |
| rd_data = Senderread_madc(4);//Read ADC data |
| //std::cout <<"MADC_data = "<< rd_data; |
| rd_data = ADC2uA * rd_data; //convert ADC bit to HVcurrent |
| printf("Bias current : %.2lfuA\n",rd_data); |
| break; |
| #endif |
| } |
| } while ((rID != P1_EXIT)||daq_on); |
| CmtDiscardThreadPool (poolHandle); |
| DiscardPanel (p1h); |
| #ifdef USE_MIKRO |
| MIKRO_Close (); |
| #endif |
| #ifdef USE_DAQ |
| WIENVME_VME_STOP(); |
| #endif |
| return 0; |
| } |
| #ifdef USE_CAEN_TDC |
| /* ****************** CAEN V1290 TDC Write OPCODE****************** */ |
| int V1290_writeOC(int *write_buffer) |
| { |
| //printf(">>> Writing %d\n", *write_buffer); |
| int wait_count = 0; |
| int read_buffer = 0; |
| do |
| { |
| // Micro Handshake Register |
| WIENVME_VME_A24D16_R(TDC_ADDR + 0x1030, &read_buffer); Delay(0.01); |
| //printf("V1290_writeOC wait_count = %d | read_buffer = %x\n", wait_count, read_buffer); |
| if(100 < wait_count++) |
| return -1; |
| } while (!(read_buffer & 0x1)); |
| // Micro Register |
| WIENVME_VME_A24D16_W(TDC_ADDR + 0x102E, write_buffer); |
| return 0; |
| } |
| /* ****************** CAEN V1290 TDC Read OPCODE ****************** */ |
| int V1290_readOC(int *return_buffer) |
| { |
| int wait_count = 0; |
| int read_buffer = 0; |
| do |
| { |
| // Micro Handshake Register |
| WIENVME_VME_A24D16_R(TDC_ADDR + 0x1030, &read_buffer); Delay(0.01); |
| //printf("V1290_readOC wait_count = %d | read_buffer = %x\n", wait_count, read_buffer); |
| if(100 < wait_count++) |
| return -1; |
| } while (!(read_buffer&0x2)); |
| // Micro Register |
| WIENVME_VME_A24D16_R(TDC_ADDR + 0x102E, return_buffer); |
| //printf(">>> Returning %d\n", *return_buffer); |
| return 0; |
| } |
| /* ****************** ******************************************* */ |
| void V1290_init() |
| { |
| int dum; |
| // intialization |
| dum=0x0; WIENVME_VME_A24D16_W(TDC_ADDR+0x1014, &dum); Delay(0.1); |
| dum=0x0; WIENVME_VME_A24D16_W(TDC_ADDR+0x1016, &dum); Delay(0.1); |
| dum=0x0; WIENVME_VME_A24D16_W(TDC_ADDR+0x1018, &dum); Delay(0.1); |
| //Trigger matching |
| dum=0x0000; V1290_writeOC(&dum); |
| // Constraints: tdc_window < tdc_offset <= 4095 |
| // Largest window: 4095-margin; |
| // units: clock cycles = 25 ns |
| int tdc_margin = 0; |
| int tdc_offset = 40; |
| int tdc_window = tdc_offset - tdc_margin; |
| //set window width |
| dum=0x1000; V1290_writeOC(&dum); |
| dum=tdc_window; V1290_writeOC(&dum); |
| //set window offset |
| dum=0x1100; V1290_writeOC(&dum); |
| dum=-tdc_offset; V1290_writeOC(&dum); |
| //set extra search margin |
| dum=0x1200; V1290_writeOC(&dum); |
| dum=tdc_margin; V1290_writeOC(&dum); |
| //enable all channels |
| dum=0x4200; V1290_writeOC(&dum); |
| //disable all channels |
| //dum=0x4300; V1290_writeOC(&dum); |
| //enable first NCH_TDC channels |
| //for(i=0;i<NCH_TDC;i++) |
| //{ |
| // dum=0x4000 + i; |
| // V1290_writeOC(&dum); |
| //} |
| //enable used channels |
| //for(i=0;i<32;i++) |
| // if(tdcmap[i]<32) |
| // { |
| // dum=0x4000 + i; |
| // V1290_writeOC(&dum); |
| // } |
| //enable(0x30xx)/disable(0x31xx) TDC Header and Trailer |
| dum=0x3100; V1290_writeOC(&dum); |
| /* |
| ////Maximum number of hits per event (does not work for unknown reason, sets to 0!) |
| dum=0x3300; V1290_writeOC(&dum); |
| //dum=0x0001; V1290_writeOC(&dum); |
| dum=0x1000; V1290_writeOC(&dum); |
| */ |
| dum=0x3400; V1290_writeOC(&dum); |
| dum=0x0000; V1290_readOC(&dum); |
| printf("TDC Maximum number of hits per event = %d\n", dum); |
| //pair(00)/trailing(01)/leading(10)/both(11) edge |
| dum=0x2200; V1290_writeOC(&dum); |
| dum=0x1; V1290_writeOC(&dum); |
| //enable(0x14xx)/disable(0x15xx) substraction of trigger time |
| dum=0x1400; V1290_writeOC(&dum); |
| } |
| #endif |
| /* ****** vrne (INT!) max vrednost iz arraya od elementa do elementa ****** */ |
| int max_from(int* array, int ifrom, int ito) |
| { |
| int i; |
| int vmax; |
| vmax = array[ifrom]; |
| for(i=ifrom+1; i<=ito; i++) |
| if(vmax < array[i]) |
| vmax = array[i]; |
| return vmax; |
| } |
| /cvi/apps/l2d2_easyroc/l2d.cdb |
|---|
| Cannot display: file marked as a binary type. |
| svn:mime-type = application/octet-stream |
| Property changes: |
| Added: svn:mime-type |
| +application/octet-stream |
| \ No newline at end of property |
| /cvi/apps/l2d2_easyroc/l2d.cws |
|---|
| 0,0 → 1,261 |
| [Workspace Header] |
| Version = 1302 |
| Pathname = "/c/home/rokd/l2d2_easyroc/l2d.cws" |
| CVI Dir = "/c/program files/national instruments/cvi2013" |
| CVI Shared Dir = "/C/Program Files/National Instruments/Shared/CVI" |
| CVI Pub Local Dir = "/C/ProgramData/National Instruments/CVI2013" |
| CVI Pub Global Dir = "/C/ProgramData/National Instruments/CVI" |
| IVI Standard Root Dir = "/C/Program Files/IVI Foundation/IVI" |
| IVI Standard Root 64-bit Dir = "/C/Program Files/IVI Foundation/IVI" |
| VXIplug&play Framework Dir = "/C/Program Files/IVI Foundation/VISA/winnt" |
| VXIplug&play Framework 64-bit Dir = "/C/Program Files/IVI Foundation/VISA/win64" |
| Number of Projects = 1 |
| Active Project = 1 |
| Project 0001 = "l2d.prj" |
| Drag Bar Left = 174 |
| Window Top = 31 |
| Window Left = 1 |
| Window Bottom = 1009 |
| Window Right = 839 |
| Maximized = True |
| Maximized Children = True |
| Max32 Number Of Errors = 20 |
| Track Include File Dependencies = True |
| Prompt For Missing Includes = True |
| Stop On First Error File = False |
| Bring Up Err Win At Start = True |
| Bring Up Err Win For Errors = False |
| Save Changes Before Running = "Always" |
| Save Changes Before Compiling = "Always" |
| Hide Windows = False |
| Break At First Statement = False |
| Sort Type = "File Name" |
| Number of Opened Files = 9 |
| Window Confinement Region Enabled = True |
| MainColumnWidth = 157 |
| FileDateColumnWidth = 70 |
| FileSizeColumnWidth = 70 |
| [Project Header 0001] |
| Version = 1302 |
| Don't Update DistKit = False |
| Platform Code = 4 |
| Build Configuration = "Debug" |
| Warn User If Debugging Release = 1 |
| Batch Build Release = False |
| Batch Build Debug = False |
| [File 0001] |
| Path = "/c/home/cvi/instr/CAMAC_2000/CAMAC.fp" |
| File Type = "Function Panel" |
| Disk Date = 3368785720 |
| In Projects = "1," |
| [File 0002] |
| Path = "/c/home/cvi/instr/CAENV965/CAENV965.fp" |
| File Type = "Function Panel" |
| Disk Date = 3565067385 |
| In Projects = "1," |
| [File 0003] |
| Path = "/c/home/cvi/instr/WIENVME_DLL/wienvme_dll.fp" |
| File Type = "Function Panel" |
| Disk Date = 3555477334 |
| In Projects = "1," |
| [File 0004] |
| Path = "/c/home/rokd/l2d2_easyroc/easiroc.c" |
| File Type = "CSource" |
| Disk Date = 3603793368 |
| In Projects = "1," |
| Window Top = 33 |
| Window Left = 10 |
| Window Z-Order = 1 |
| Source Window State = "1,584,585,585,13,13,13,0,0,183,0,0,0,0,0,48,528,0,588,42,349,523,1,0," |
| [File 0005] |
| Path = "/c/home/rokd/l2d2_easyroc/l2d.c" |
| File Type = "CSource" |
| Disk Date = 3603776262 |
| In Projects = "1," |
| Window Top = 436 |
| Window Left = 4 |
| Window Z-Order = 3 |
| Source Window State = "1,8,8,8,20,33,20,0,0,80,0,0,0,0,0,25,39,0,915,4,349,683,1,15," |
| [File 0006] |
| Path = "/c/home/rokd/l2d2_easyroc/l2d_ui.uir" |
| File Type = "User Interface Resource" |
| Disk Date = 3603787634 |
| In Projects = "1," |
| Window Top = 33 |
| Window Left = 10 |
| Window Height = 349 |
| Window Width = 683 |
| Window Z-Order = 5 |
| [File 0007] |
| Path = "/c/home/rokd/l2d2_easyroc/l2d_ui.h" |
| File Type = "Include" |
| Disk Date = 3603786987 |
| In Projects = "1," |
| Window Top = 33 |
| Window Left = -204 |
| Window Z-Order = 9 |
| Source Window State = "1,0,0,0,0,0,0,0,0,80,0,0,0,0,0,25,0,0,0,0,349,683,1,0," |
| [File 0008] |
| Path = "/c/home/rokd/l2d2_easyroc/SiTCP.c" |
| File Type = "CSource" |
| Disk Date = 3594638249 |
| In Projects = "1," |
| Window Top = 219 |
| Window Left = -108 |
| Window Z-Order = 4 |
| Source Window State = "1,137,137,137,22,29,29,0,0,80,0,0,0,0,0,25,0,0,170,8,349,683,1,0," |
| [File 0009] |
| Path = "/c/home/rokd/l2d2_easyroc/SiTCP.h" |
| File Type = "Include" |
| Disk Date = 3579505677 |
| In Projects = "1," |
| Window Top = 188 |
| Window Left = -124 |
| Window Z-Order = 7 |
| Source Window State = "1,0,1,1,0,17,17,0,3,80,0,0,0,0,0,25,0,0,0,0,349,683,1,0," |
| [File 0010] |
| Path = "/c/home/rokd/l2d2_easyroc/sender.c" |
| File Type = "CSource" |
| Disk Date = 3594633824 |
| In Projects = "1," |
| Window Top = 281 |
| Window Left = -76 |
| Window Z-Order = 8 |
| Source Window State = "1,171,171,171,2,7,7,0,0,80,0,0,0,0,0,25,0,0,112,182,349,683,1,0," |
| [File 0011] |
| Path = "/c/home/rokd/l2d2_easyroc/sender.h" |
| File Type = "Include" |
| Disk Date = 3579505274 |
| In Projects = "1," |
| Window Top = 250 |
| Window Left = -92 |
| Window Z-Order = 6 |
| Source Window State = "1,1,1,1,0,18,18,0,0,80,0,0,0,0,0,25,0,0,5,36,349,683,1,14," |
| [File 0012] |
| Path = "/c/home/rokd/l2d2_easyroc/easiroc.h" |
| File Type = "Include" |
| Disk Date = 3603793222 |
| In Projects = "1," |
| Window Top = 188 |
| Window Left = 90 |
| Window Z-Order = 2 |
| Source Window State = "1,13,14,14,29,29,29,0,0,80,0,44,0,44,0,25,0,0,13,29,349,683,1,0," |
| [File 0013] |
| Path = "/c/Program Files/Microsoft SDKs/Windows/v7.1A/Lib/WS2_32.Lib" |
| File Type = "Library" |
| Disk Date = 3431916852 |
| In Projects = "1," |
| [Tab Order] |
| Tab 0001 = "/c/home/rokd/l2d2_easyroc/SiTCP.h" |
| Tab 0002 = "/c/home/rokd/l2d2_easyroc/sender.h" |
| Tab 0003 = "/c/home/rokd/l2d2_easyroc/SiTCP.c" |
| Tab 0004 = "/c/home/rokd/l2d2_easyroc/sender.c" |
| Tab 0005 = "/c/home/rokd/l2d2_easyroc/l2d_ui.uir" |
| Tab 0006 = "/c/home/rokd/l2d2_easyroc/easiroc.h" |
| Tab 0007 = "/c/home/rokd/l2d2_easyroc/l2d.c" |
| Tab 0008 = "/c/home/rokd/l2d2_easyroc/easiroc.c" |
| Tab 0009 = "/c/home/rokd/l2d2_easyroc/l2d_ui.h" |
| [Default Build Config 0001 Debug] |
| Generate Browse Info = True |
| Enable Uninitialized Locals Runtime Warning = True |
| Batch Build = False |
| Profile = "Disabled" |
| Debugging Level = "Standard" |
| Execution Trace = "Disabled" |
| Command Line Args = "" |
| Working Directory = "" |
| Environment Options = "" |
| External Process Path = "" |
| [Default Build Config 0001 Release] |
| Generate Browse Info = True |
| Enable Uninitialized Locals Runtime Warning = True |
| Batch Build = False |
| Profile = "Disabled" |
| Debugging Level = "Standard" |
| Execution Trace = "Disabled" |
| Command Line Args = "" |
| Working Directory = "" |
| Environment Options = "" |
| External Process Path = "" |
| [Default Build Config 0001 Debug64] |
| Generate Browse Info = True |
| Enable Uninitialized Locals Runtime Warning = True |
| Batch Build = False |
| Profile = "Disabled" |
| Debugging Level = "Standard" |
| Execution Trace = "Disabled" |
| Command Line Args = "" |
| Working Directory = "" |
| Environment Options = "" |
| External Process Path = "" |
| [Default Build Config 0001 Release64] |
| Generate Browse Info = True |
| Enable Uninitialized Locals Runtime Warning = True |
| Batch Build = False |
| Profile = "Disabled" |
| Debugging Level = "Standard" |
| Execution Trace = "Disabled" |
| Command Line Args = "" |
| Working Directory = "" |
| Environment Options = "" |
| External Process Path = "" |
| [Build Dependencies 0001] |
| Number of Dependencies = 0 |
| [Build Options 0001] |
| Generate Browse Info = True |
| Enable Uninitialized Locals Runtime Warning = True |
| Execution Trace = "Disabled" |
| Profile = "Disabled" |
| Debugging Level = "Standard" |
| Break On Library Errors = True |
| Break On First Chance Exceptions = False |
| [Execution Target 0001] |
| Execution Target Address = "Local desktop computer" |
| Execution Target Port = 0 |
| Execution Target Type = 0 |
| [SCC Options 0001] |
| Use global settings = True |
| SCC Provider = "" |
| SCC Project = "" |
| Local Path = "" |
| Auxiliary Path = "" |
| Perform Same Action For .h File As For .uir File = "Ask" |
| Perform Same Action For .cds File As For .prj File = "Ask" |
| Username = "" |
| Comment = "" |
| Use Default Username = False |
| Use Default Comment = False |
| Suppress CVI Error Messages = False |
| Always show confirmation dialog = True |
| [DLL Debugging Support 0001] |
| External Process Path = "" |
| [Command Line Args 0001] |
| Command Line Args = "" |
| Working Directory = "" |
| Environment Options = "" |
| /cvi/apps/l2d2_easyroc/l2d.exe |
|---|
| Cannot display: file marked as a binary type. |
| svn:mime-type = application/octet-stream |
| Property changes: |
| Added: svn:mime-type |
| +application/octet-stream |
| \ No newline at end of property |
| /cvi/apps/l2d2_easyroc/l2d.prj |
|---|
| 0,0 → 1,574 |
| [Project Header] |
| Version = 1302 |
| Pathname = "/c/home/rokd/l2d2_easyroc/l2d.prj" |
| CVI Dir = "/c/program files/national instruments/cvi2013" |
| CVI Shared Dir = "/C/Program Files/National Instruments/Shared/CVI" |
| CVI Pub Local Dir = "/C/ProgramData/National Instruments/CVI2013" |
| CVI Pub Global Dir = "/C/ProgramData/National Instruments/CVI" |
| IVI Standard Root Dir = "/C/Program Files/IVI Foundation/IVI" |
| VXIplug&play Framework Dir = "/C/Program Files/IVI Foundation/VISA/winnt" |
| IVI Standard Root 64-bit Dir = "/C/Program Files/IVI Foundation/IVI" |
| VXIplug&play Framework 64-bit Dir = "/C/Program Files/IVI Foundation/VISA/win64" |
| Number of Files = 13 |
| Target Type = "Executable" |
| Flags = 2064 |
| Copied From Locked InstrDrv Directory = False |
| Copied from VXIPNP Directory = False |
| Locked InstrDrv Name = "" |
| Don't Display Deploy InstrDrv Dialog = False |
| [Folders] |
| Folder 0 = "Source Files" |
| FolderEx 0 = "Source Files" |
| Folder 1 = "User Interface Files" |
| FolderEx 1 = "User Interface Files" |
| Folder 2 = "Include Files" |
| FolderEx 2 = "Include Files" |
| Folder 3 = "Instrument Files" |
| FolderEx 3 = "Instrument Files" |
| Folder 4 = "Library Files" |
| FolderEx 4 = "Library Files" |
| [File 0001] |
| File Type = "CSource" |
| Res Id = 1 |
| Path Is Rel = True |
| Path Rel To = "Project" |
| Path Rel Path = "easiroc.c" |
| Path = "/c/home/rokd/l2d2_easyroc/easiroc.c" |
| Exclude = False |
| Compile Into Object File = False |
| Project Flags = 0 |
| Folder = "Source Files" |
| Folder Id = 0 |
| [File 0002] |
| File Type = "CSource" |
| Res Id = 2 |
| Path Is Rel = True |
| Path Rel To = "Project" |
| Path Rel Path = "l2d.c" |
| Path = "/c/home/rokd/l2d2_easyroc/l2d.c" |
| Exclude = False |
| Compile Into Object File = False |
| Project Flags = 0 |
| Folder = "Source Files" |
| Folder Id = 0 |
| [File 0003] |
| File Type = "CSource" |
| Res Id = 3 |
| Path Is Rel = True |
| Path Rel To = "Project" |
| Path Rel Path = "sender.c" |
| Path = "/c/home/rokd/l2d2_easyroc/sender.c" |
| Exclude = False |
| Compile Into Object File = False |
| Project Flags = 0 |
| Folder = "Source Files" |
| Folder Id = 0 |
| [File 0004] |
| File Type = "CSource" |
| Res Id = 4 |
| Path Is Rel = True |
| Path Rel To = "Project" |
| Path Rel Path = "SiTCP.c" |
| Path = "/c/home/rokd/l2d2_easyroc/SiTCP.c" |
| Exclude = False |
| Compile Into Object File = False |
| Project Flags = 0 |
| Folder = "Source Files" |
| Folder Id = 0 |
| [File 0005] |
| File Type = "User Interface Resource" |
| Res Id = 5 |
| Path Is Rel = True |
| Path Rel To = "Project" |
| Path Rel Path = "l2d_ui.uir" |
| Path = "/c/home/rokd/l2d2_easyroc/l2d_ui.uir" |
| Exclude = False |
| Project Flags = 0 |
| Folder = "User Interface Files" |
| Folder Id = 1 |
| [File 0006] |
| File Type = "Include" |
| Res Id = 6 |
| Path Is Rel = True |
| Path Rel To = "Project" |
| Path Rel Path = "easiroc.h" |
| Path = "/c/home/rokd/l2d2_easyroc/easiroc.h" |
| Exclude = False |
| Project Flags = 0 |
| Folder = "Include Files" |
| Folder Id = 2 |
| [File 0007] |
| File Type = "Include" |
| Res Id = 7 |
| Path Is Rel = True |
| Path Rel To = "Project" |
| Path Rel Path = "l2d_ui.h" |
| Path = "/c/home/rokd/l2d2_easyroc/l2d_ui.h" |
| Exclude = False |
| Project Flags = 0 |
| Folder = "Include Files" |
| Folder Id = 2 |
| [File 0008] |
| File Type = "Include" |
| Res Id = 8 |
| Path Is Rel = True |
| Path Rel To = "Project" |
| Path Rel Path = "sender.h" |
| Path = "/c/home/rokd/l2d2_easyroc/sender.h" |
| Exclude = False |
| Project Flags = 0 |
| Folder = "Include Files" |
| Folder Id = 2 |
| [File 0009] |
| File Type = "Include" |
| Res Id = 9 |
| Path Is Rel = True |
| Path Rel To = "Project" |
| Path Rel Path = "SiTCP.h" |
| Path = "/c/home/rokd/l2d2_easyroc/SiTCP.h" |
| Exclude = False |
| Project Flags = 0 |
| Folder = "Include Files" |
| Folder Id = 2 |
| [File 0010] |
| File Type = "Function Panel" |
| Res Id = 10 |
| Path Is Rel = True |
| Path Rel To = "Project" |
| Path Rel Path = "../../cvi/instr/CAENV965/CAENV965.fp" |
| Path = "/c/home/cvi/instr/CAENV965/CAENV965.fp" |
| Exclude = False |
| Project Flags = 0 |
| Folder = "Instrument Files" |
| Folder Id = 3 |
| [File 0011] |
| File Type = "Function Panel" |
| Res Id = 11 |
| Path Is Rel = True |
| Path Rel To = "Project" |
| Path Rel Path = "../../cvi/instr/CAMAC_2000/CAMAC.fp" |
| Path = "/c/home/cvi/instr/CAMAC_2000/CAMAC.fp" |
| Exclude = False |
| Project Flags = 0 |
| Folder = "Instrument Files" |
| Folder Id = 3 |
| [File 0012] |
| File Type = "Function Panel" |
| Res Id = 12 |
| Path Is Rel = True |
| Path Rel To = "Project" |
| Path Rel Path = "../../cvi/instr/WIENVME_DLL/wienvme_dll.fp" |
| Path = "/c/home/cvi/instr/WIENVME_DLL/wienvme_dll.fp" |
| Exclude = False |
| Project Flags = 0 |
| Folder = "Instrument Files" |
| Folder Id = 3 |
| [File 0013] |
| File Type = "Library" |
| Res Id = 13 |
| Path Is Rel = True |
| Path Rel To = "Project" |
| Path Rel Path = "../../../Program Files/Microsoft SDKs/Windows/v7.1A/Lib/WS2_32.Lib" |
| Path = "/c/Program Files/Microsoft SDKs/Windows/v7.1A/Lib/WS2_32.Lib" |
| Exclude = False |
| Project Flags = 0 |
| Folder = "Library Files" |
| Folder Id = 4 |
| [Custom Build Configs] |
| Num Custom Build Configs = 0 |
| [Default Build Config Debug] |
| Config Name = "Debug" |
| Is 64-Bit = False |
| Is Release = False |
| Default Calling Convention = "cdecl" |
| Optimization Level = "No optimizations" |
| Require Prototypes = False |
| Show Warning IDs in Build Output = False |
| Selected Warning Level = "None" |
| Warning List None = "4,9,84,105,106,107,108,109,110,111" |
| Warning List Common = "" |
| Warning List Extended = "" |
| Warning List All = "" |
| Warning Mode = 0 |
| Enable Unreferenced Identifiers Warning = False |
| Enable Pointer Mismatch Warning = False |
| Enable Unreachable Code Warning = False |
| Enable Assignment In Conditional Warning = False |
| Uninitialized Locals Compile Warning = "Aggressive" |
| Require Return Values = True |
| Enable C99 Extensions = True |
| Enable OpenMP Extensions = False |
| Stack Size = 250000 |
| Stack Reserve = 1048576 |
| Stack Commit = 4096 |
| Image Base Address = 4194304 |
| Image Base Address x64 = 4194304 |
| Compiler Defines = "/DWIN32_LEAN_AND_MEAN /DWIENVME" |
| Sign = False |
| Sign Store = "" |
| Sign Certificate = "" |
| Sign Timestamp URL = "" |
| Sign URL = "" |
| Manifest Embed = False |
| Icon File Is Rel = False |
| Icon File = "" |
| Application Title = "" |
| Use IVI Subdirectories for Import Libraries = False |
| Use VXIPNP Subdirectories for Import Libraries = False |
| Use Dflt Import Lib Base Name = True |
| Where to Copy DLL = "Do not copy" |
| Custom Directory to Copy DLL Is Rel = False |
| Custom Directory to Copy DLL = "" |
| Generate Source Documentation = "None" |
| Runtime Support = "Full Runtime Support" |
| Runtime Binding = "Shared" |
| Embed Project .UIRs = False |
| Generate Map File = False |
| Embed Timestamp = True |
| Create Console Application = False |
| Using LoadExternalModule = False |
| DLL Exports = "Include File Symbols" |
| Register ActiveX Server = False |
| Numeric File Version = "1,0,0,0" |
| Numeric Prod Version = "1,0,0,0" |
| Comments = "" |
| Comments Ex = "" |
| Company Name = "" |
| Company Name Ex = "%company" |
| File Description = "l2d (Debug x86)" |
| File Description Ex = "%application (%rel_dbg %arch)" |
| File Version = "1.0" |
| File Version Ex = "%f1.%f2" |
| Internal Name = "l2d" |
| Internal Name Ex = "%basename" |
| Legal Copyright = "Copyright © 2018" |
| Legal Copyright Ex = "Copyright © %company %Y" |
| Legal Trademarks = "" |
| Legal Trademarks Ex = "" |
| Original Filename = "l2d.exe" |
| Original Filename Ex = "%filename" |
| Private Build = "" |
| Private Build Ex = "" |
| Product Name = " l2d" |
| Product Name Ex = "%company %application" |
| Product Version = "1.0" |
| Product Version Ex = "%p1.%p2" |
| Special Build = "" |
| Special Build Ex = "" |
| Add Type Lib To DLL = False |
| Include Type Lib Help Links = False |
| TLB Help Style = "HLP" |
| Type Lib FP File Is Rel = False |
| Type Lib FP File = "" |
| [Default Build Config Release] |
| Config Name = "Release" |
| Is 64-Bit = False |
| Is Release = True |
| Default Calling Convention = "cdecl" |
| Optimization Level = "No optimizations" |
| Require Prototypes = True |
| Show Warning IDs in Build Output = False |
| Selected Warning Level = "None" |
| Warning List None = "4,9,84,105,106,107,108,109,110,111" |
| Warning List Common = "" |
| Warning List Extended = "" |
| Warning List All = "" |
| Warning Mode = 0 |
| Enable Unreferenced Identifiers Warning = False |
| Enable Pointer Mismatch Warning = False |
| Enable Unreachable Code Warning = False |
| Enable Assignment In Conditional Warning = False |
| Uninitialized Locals Compile Warning = "Aggressive" |
| Require Return Values = True |
| Enable C99 Extensions = True |
| Enable OpenMP Extensions = False |
| Stack Size = 250000 |
| Stack Reserve = 1048576 |
| Stack Commit = 4096 |
| Image Base Address = 4194304 |
| Image Base Address x64 = 4194304 |
| Compiler Defines = "/DWIN32_LEAN_AND_MEAN" |
| Sign = False |
| Sign Store = "" |
| Sign Certificate = "" |
| Sign Timestamp URL = "" |
| Sign URL = "" |
| Manifest Embed = False |
| Icon File Is Rel = False |
| Icon File = "" |
| Application Title = "" |
| Use IVI Subdirectories for Import Libraries = False |
| Use VXIPNP Subdirectories for Import Libraries = False |
| Use Dflt Import Lib Base Name = True |
| Where to Copy DLL = "Do not copy" |
| Custom Directory to Copy DLL Is Rel = False |
| Custom Directory to Copy DLL = "" |
| Generate Source Documentation = "None" |
| Runtime Support = "Full Runtime Support" |
| Runtime Binding = "Shared" |
| Embed Project .UIRs = False |
| Generate Map File = False |
| Embed Timestamp = True |
| Create Console Application = False |
| Using LoadExternalModule = False |
| DLL Exports = "Include File Symbols" |
| Register ActiveX Server = False |
| Add Type Lib To DLL = False |
| Include Type Lib Help Links = False |
| TLB Help Style = "HLP" |
| Type Lib FP File Is Rel = False |
| Type Lib FP File = "" |
| [Default Build Config Debug64] |
| Config Name = "Debug64" |
| Is 64-Bit = True |
| Is Release = False |
| Default Calling Convention = "cdecl" |
| Optimization Level = "No optimizations" |
| Require Prototypes = True |
| Show Warning IDs in Build Output = False |
| Selected Warning Level = "None" |
| Warning List None = "4,9,84,105,106,107,108,109,110,111" |
| Warning List Common = "" |
| Warning List Extended = "" |
| Warning List All = "" |
| Warning Mode = 0 |
| Enable Unreferenced Identifiers Warning = False |
| Enable Pointer Mismatch Warning = False |
| Enable Unreachable Code Warning = False |
| Enable Assignment In Conditional Warning = False |
| Uninitialized Locals Compile Warning = "Aggressive" |
| Require Return Values = True |
| Enable C99 Extensions = True |
| Enable OpenMP Extensions = False |
| Stack Size = 250000 |
| Stack Reserve = 1048576 |
| Stack Commit = 4096 |
| Image Base Address = 4194304 |
| Image Base Address x64 = 4194304 |
| Compiler Defines = "/DWIN32_LEAN_AND_MEAN" |
| Sign = False |
| Sign Store = "" |
| Sign Certificate = "" |
| Sign Timestamp URL = "" |
| Sign URL = "" |
| Manifest Embed = False |
| Icon File Is Rel = False |
| Icon File = "" |
| Application Title = "" |
| Use IVI Subdirectories for Import Libraries = False |
| Use VXIPNP Subdirectories for Import Libraries = False |
| Use Dflt Import Lib Base Name = True |
| Where to Copy DLL = "Do not copy" |
| Custom Directory to Copy DLL Is Rel = False |
| Custom Directory to Copy DLL = "" |
| Generate Source Documentation = "None" |
| Runtime Support = "Full Runtime Support" |
| Runtime Binding = "Shared" |
| Embed Project .UIRs = False |
| Generate Map File = False |
| Embed Timestamp = True |
| Create Console Application = False |
| Using LoadExternalModule = False |
| DLL Exports = "Include File Symbols" |
| Register ActiveX Server = False |
| Add Type Lib To DLL = False |
| Include Type Lib Help Links = False |
| TLB Help Style = "HLP" |
| Type Lib FP File Is Rel = False |
| Type Lib FP File = "" |
| [Default Build Config Release64] |
| Config Name = "Release64" |
| Is 64-Bit = True |
| Is Release = True |
| Default Calling Convention = "cdecl" |
| Optimization Level = "No optimizations" |
| Require Prototypes = True |
| Show Warning IDs in Build Output = False |
| Selected Warning Level = "None" |
| Warning List None = "4,9,84,105,106,107,108,109,110,111" |
| Warning List Common = "" |
| Warning List Extended = "" |
| Warning List All = "" |
| Warning Mode = 0 |
| Enable Unreferenced Identifiers Warning = False |
| Enable Pointer Mismatch Warning = False |
| Enable Unreachable Code Warning = False |
| Enable Assignment In Conditional Warning = False |
| Uninitialized Locals Compile Warning = "Aggressive" |
| Require Return Values = True |
| Enable C99 Extensions = True |
| Enable OpenMP Extensions = False |
| Stack Size = 250000 |
| Stack Reserve = 1048576 |
| Stack Commit = 4096 |
| Image Base Address = 4194304 |
| Image Base Address x64 = 4194304 |
| Compiler Defines = "/DWIN32_LEAN_AND_MEAN" |
| Sign = False |
| Sign Store = "" |
| Sign Certificate = "" |
| Sign Timestamp URL = "" |
| Sign URL = "" |
| Manifest Embed = False |
| Icon File Is Rel = False |
| Icon File = "" |
| Application Title = "" |
| Use IVI Subdirectories for Import Libraries = False |
| Use VXIPNP Subdirectories for Import Libraries = False |
| Use Dflt Import Lib Base Name = True |
| Where to Copy DLL = "Do not copy" |
| Custom Directory to Copy DLL Is Rel = False |
| Custom Directory to Copy DLL = "" |
| Generate Source Documentation = "None" |
| Runtime Support = "Full Runtime Support" |
| Runtime Binding = "Shared" |
| Embed Project .UIRs = False |
| Generate Map File = False |
| Embed Timestamp = True |
| Create Console Application = False |
| Using LoadExternalModule = False |
| DLL Exports = "Include File Symbols" |
| Register ActiveX Server = False |
| Add Type Lib To DLL = False |
| Include Type Lib Help Links = False |
| TLB Help Style = "HLP" |
| Type Lib FP File Is Rel = False |
| Type Lib FP File = "" |
| [Compiler Options] |
| Default Calling Convention = "cdecl" |
| Require Prototypes = True |
| Require Return Values = True |
| Enable Pointer Mismatch Warning = False |
| Enable Unreachable Code Warning = False |
| Enable Unreferenced Identifiers Warning = False |
| Enable Assignment In Conditional Warning = False |
| O Option Compatible With 5.0 = False |
| Enable C99 Extensions = True |
| Uninitialized Locals Compile Warning = "Conservative" |
| Precompile Prefix Header = False |
| Prefix Header File = "" |
| [Run Options] |
| Stack Size = 250000 |
| Stack Commit = 4096 |
| Image Base Address = 4194304 |
| Image Base Address x64 = 4194304 |
| [Compiler Defines] |
| Compiler Defines = "/DWIN32_LEAN_AND_MEAN" |
| [Include Paths] |
| Include Path 1 Is Rel = True |
| Include Path 1 Rel To = "CVI" |
| Include Path 1 Rel To Override = "CVI" |
| Include Path 1 Rel Path = "instr/CAMAC_2000" |
| Include Path 1 = "/c/Program Files/National Instruments/CVI2013/instr/CAMAC_2000" |
| Include Path 2 Is Rel = True |
| Include Path 2 Rel To = "CVI" |
| Include Path 2 Rel To Override = "CVI" |
| Include Path 2 Rel Path = "instr/WIENVME_DLL" |
| Include Path 2 = "/c/Program Files/National Instruments/CVI2013/instr/WIENVME_DLL" |
| Include Path 3 Is Rel = True |
| Include Path 3 Rel To = "CVI" |
| Include Path 3 Rel To Override = "CVI" |
| Include Path 3 Rel Path = "instr/CAENV965" |
| Include Path 3 = "/c/Program Files/National Instruments/CVI2013/instr/CAENV965" |
| [Create Executable] |
| Executable File_Debug Is Rel = True |
| Executable File_Debug Rel To = "Project" |
| Executable File_Debug Rel Path = "l2d.exe" |
| Executable File_Debug = "/c/home/rokd/l2d2_easyroc/l2d.exe" |
| Executable File_Release Is Rel = True |
| Executable File_Release Rel To = "Project" |
| Executable File_Release Rel Path = "l2d.exe" |
| Executable File_Release = "/c/home/rokd/l2d2_easyroc/l2d.exe" |
| Executable File_Debug64 Is Rel = True |
| Executable File_Debug64 Rel To = "Project" |
| Executable File_Debug64 Rel Path = "l2d.exe" |
| Executable File_Debug64 = "/c/home/rokd/l2d2_easyroc/l2d.exe" |
| Executable File_Release64 Is Rel = True |
| Executable File_Release64 Rel To = "Project" |
| Executable File_Release64 Rel Path = "l2d.exe" |
| Executable File_Release64 = "/c/home/rokd/l2d2_easyroc/l2d.exe" |
| Icon File Is Rel = False |
| Icon File = "" |
| Application Title = "" |
| DLL Exports = "Include File Symbols" |
| Use IVI Subdirectories for Import Libraries = False |
| Use VXIPNP Subdirectories for Import Libraries = False |
| Use Dflt Import Lib Base Name = True |
| Where to Copy DLL = "Do not copy" |
| Custom Directory to Copy DLL Is Rel = False |
| Custom Directory to Copy DLL = "" |
| Generate Source Documentation = "None" |
| Add Type Lib To DLL = False |
| Include Type Lib Help Links = False |
| TLB Help Style = "HLP" |
| Type Lib FP File Is Rel = False |
| Type Lib FP File = "" |
| Type Lib Guid = "" |
| Runtime Support = "Full Runtime Support" |
| Instrument Driver Support Only = False |
| Embed Project .UIRs = False |
| Generate Map File = False |
| [External Compiler Support] |
| UIR Callbacks File Option = 0 |
| Using LoadExternalModule = False |
| Create Project Symbols File = True |
| UIR Callbacks Obj File Is Rel = False |
| UIR Callbacks Obj File = "" |
| Project Symbols H File Is Rel = False |
| Project Symbols H File = "" |
| Project Symbols Obj File Is Rel = False |
| Project Symbols Obj File = "" |
| [ActiveX Server Options] |
| Specification File Is Rel = False |
| Specification File = "" |
| Source File Is Rel = False |
| Source File = "" |
| Include File Is Rel = False |
| Include File = "" |
| IDL File Is Rel = False |
| IDL File = "" |
| Register ActiveX Server = False |
| [Signing Info] |
| Sign = False |
| Sign Debug Build = False |
| Store = "" |
| Certificate = "" |
| Timestamp URL = "" |
| URL = "" |
| [Manifest Info] |
| Embed = False |
| [tpcSection] |
| tpcEnabled = 0 |
| tpcOverrideEnvironment = 0 |
| tpcEnabled x64 = 0 |
| tpcOverrideEnvironment x64 = 0 |
| /cvi/apps/l2d2_easyroc/l2d_ui.h |
|---|
| 0,0 → 1,104 |
| /**************************************************************************/ |
| /* LabWindows/CVI User Interface Resource (UIR) Include File */ |
| /* */ |
| /* WARNING: Do not add to, delete from, or otherwise modify the contents */ |
| /* of this include file. */ |
| /**************************************************************************/ |
| #include <userint.h> |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| /* Panels and Controls: */ |
| #define P1 1 |
| #define P1_EXIT 2 /* control type: command, callback function: (none) */ |
| #define P1_ADC 3 /* control type: graph, callback function: (none) */ |
| #define P1_TDC 4 /* control type: graph, callback function: (none) */ |
| #define P1_RESET 5 /* control type: command, callback function: (none) */ |
| #define P1_CEVE 6 /* control type: numeric, callback function: (none) */ |
| #define P1_NMIN 7 /* control type: numeric, callback function: (none) */ |
| #define P1_NEVE 8 /* control type: numeric, callback function: (none) */ |
| #define P1_FRAC 9 /* control type: numeric, callback function: (none) */ |
| #define P1_TDCMIN 10 /* control type: numeric, callback function: (none) */ |
| #define P1_PEDESTAL 11 /* control type: numeric, callback function: (none) */ |
| #define P1_ADCHLSAVE 12 /* control type: binary, callback function: (none) */ |
| #define P1_TDC_EDGE 13 /* control type: binary, callback function: (none) */ |
| #define P1_ADCHL 14 /* control type: binary, callback function: (none) */ |
| #define P1_ADCLOG 15 /* control type: binary, callback function: (none) */ |
| #define P1_TDCLOG 16 /* control type: binary, callback function: (none) */ |
| #define P1_TDCHL 17 /* control type: binary, callback function: (none) */ |
| #define P1_DAQ 18 /* control type: textButton, callback function: (none) */ |
| #define P1_SUPR 19 /* control type: radioButton, callback function: (none) */ |
| #define P1_DSAVE 20 /* control type: radioButton, callback function: (none) */ |
| #define P1_DFILE 21 /* control type: string, callback function: (none) */ |
| #define P1_IY 22 /* control type: numeric, callback function: (none) */ |
| #define P1_Z 23 /* control type: numeric, callback function: (none) */ |
| #define P1_Y 24 /* control type: numeric, callback function: (none) */ |
| #define P1_YMIN 25 /* control type: numeric, callback function: (none) */ |
| #define P1_IX 26 /* control type: numeric, callback function: (none) */ |
| #define P1_YSTEP 27 /* control type: numeric, callback function: (none) */ |
| #define P1_X 28 /* control type: numeric, callback function: (none) */ |
| #define P1_NY 29 /* control type: numeric, callback function: (none) */ |
| #define P1_ZSET 30 /* control type: numeric, callback function: (none) */ |
| #define P1_XMIN 31 /* control type: numeric, callback function: (none) */ |
| #define P1_XSTEP 32 /* control type: numeric, callback function: (none) */ |
| #define P1_NX 33 /* control type: numeric, callback function: (none) */ |
| #define P1_MGET 34 /* control type: command, callback function: (none) */ |
| #define P1_REREAD 35 /* control type: command, callback function: (none) */ |
| #define P1_HO 36 /* control type: command, callback function: (none) */ |
| #define P1_PLCH 37 /* control type: numeric, callback function: (none) */ |
| #define P1_NEWF 38 /* control type: numeric, callback function: (none) */ |
| #define P1_REFON 39 /* control type: radioButton, callback function: (none) */ |
| #define P1_REFRESH 40 /* control type: command, callback function: (none) */ |
| #define P1_PIO_OFF 41 /* control type: command, callback function: (none) */ |
| #define P1_PIO_ON 42 /* control type: command, callback function: (none) */ |
| #define P1_TDCTEST 43 /* control type: command, callback function: (none) */ |
| #define P1_TDCCLEAR 44 /* control type: command, callback function: (none) */ |
| #define P1_TDCINIT 45 /* control type: command, callback function: (none) */ |
| #define P1_TDCMIKRO 46 /* control type: command, callback function: (none) */ |
| #define P1_ER_HV_STATUS 47 /* control type: command, callback function: (none) */ |
| #define P1_ESRC_DAQ 48 /* control type: command, callback function: (none) */ |
| #define P1_ESRC_F4 49 /* control type: command, callback function: (none) */ |
| #define P1_ESRC_F3 50 /* control type: command, callback function: (none) */ |
| #define P1_ESRC_F2 51 /* control type: command, callback function: (none) */ |
| #define P1_ESRC_F1 52 /* control type: command, callback function: (none) */ |
| #define P1_ER_HV_CONTROL 53 /* control type: command, callback function: (none) */ |
| #define P1_ESRC_CLOSE 54 /* control type: command, callback function: (none) */ |
| #define P1_ER_CLOSE 55 /* control type: command, callback function: (none) */ |
| #define P1_ESRC_INIT 56 /* control type: command, callback function: (none) */ |
| #define P1_ER_INIT 57 /* control type: command, callback function: (none) */ |
| #define P1_TIMER 58 /* control type: timer, callback function: cb_timer */ |
| #define P1_DECORATION 59 /* control type: deco, callback function: (none) */ |
| #define P1_ESRC_PROBE_CH 60 /* control type: numeric, callback function: (none) */ |
| #define P1_ER_HV_CONTROL_IN 61 /* control type: numeric, callback function: (none) */ |
| #define P1_TEXTMSG 62 /* control type: textMsg, callback function: (none) */ |
| #define P1_TEXTMSG_2 63 /* control type: textMsg, callback function: (none) */ |
| #define P1_TEXTMSG_3 64 /* control type: textMsg, callback function: (none) */ |
| #define P1_TEXTMSG_4 65 /* control type: textMsg, callback function: (none) */ |
| #define P1_ESRC_PROBE_TYPE 66 /* control type: ring, callback function: (none) */ |
| #define P1_TEXTMSG_6 67 /* control type: textMsg, callback function: (none) */ |
| #define P1_TEXTMSG_5 68 /* control type: textMsg, callback function: (none) */ |
| #define P1_DECORATION_2 69 /* control type: deco, callback function: (none) */ |
| /* Control Arrays: */ |
| /* (no control arrays in the resource file) */ |
| /* Menu Bars, Menus, and Menu Items: */ |
| /* (no menu bars in the resource file) */ |
| /* Callback Prototypes: */ |
| int CVICALLBACK cb_timer(int panel, int control, int event, void *callbackData, int eventData1, int eventData2); |
| #ifdef __cplusplus |
| } |
| #endif |
| /cvi/apps/l2d2_easyroc/l2d_ui.uir |
|---|
| Cannot display: file marked as a binary type. |
| svn:mime-type = application/octet-stream |
| Property changes: |
| Added: svn:mime-type |
| +application/octet-stream |
| \ No newline at end of property |
| /cvi/apps/l2d2_easyroc/pcivme_ni.log |
|---|
| 0,0 → 1,0 |
| VMEinitNT |
| /cvi/apps/l2d2_easyroc/plots2.cpp |
|---|
| 0,0 → 1,2186 |
| #include "TROOT.h" |
| #include "TFile.h" |
| #include "TBenchmark.h" |
| #include "TH1F.h" |
| #include "TH2F.h" |
| gROOT->Reset(); |
| #include "TCanvas.h" |
| #include "TStyle.h" |
| #include "TPad.h" |
| #include "TF1.h" |
| #include "TGraph.h" |
| #include "TSpectrum.h" |
| #include "DrootHelper.cpp" |
| #define NCH 2 |
| //------------------------------------------------------------------------------------- |
| void SetGS() { |
| const UInt_t Number = 2; |
| Double_t Red[Number] = {0.00, 1.00}; |
| Double_t Green[Number] = {0.00, 1.00}; |
| Double_t Blue[Number] = {0.00, 1.00}; |
| Double_t Stops[Number] = {0.00, 1.00}; |
| Int_t nb=50; |
| TColor::CreateGradientColorTable(Number, Stops, Red, Green, Blue, nb); |
| } |
| //------------------------------------------------------------------------------------- |
| Double_t ConstantStep(Double_t x) |
| { |
| if(x<=0) return 0.; |
| else return 1.; |
| } |
| // ======================================================================================================= |
| void plotCorTDC(TH1F *hp1d, char *hTitle, double fitmin, double fitmax, double drawmin, double drawmax) |
| { |
| char sbuff[256]; |
| TLegend *leg1 = new TLegend(0.57,0.76,0.88,0.88); |
| leg1->SetFillColor(0); |
| leg1->SetBorderSize(1); |
| leg1->SetTextSize(0.05); |
| leg1->SetTextAlign(22); |
| //gStyle->SetOptFit(111); |
| sprintf(sbuff, "%s;Time[ns];", hTitle); |
| hp1d->SetTitle(sbuff); |
| //~ hp1d->GetXaxis()->SetRangeUser(2*fitmin, 2*fitmax); |
| hp1d->GetXaxis()->SetRangeUser(drawmin, drawmax); |
| //~ hcTDC->DrawClone(); |
| //~ TF1 *fs = new TF1("fs","pol0(0) + gaus(1)"); |
| TF1 *fs = new TF1("fs","gaus(0) + ([3]*exp((x)/[4]) + [5]) * (0.5+0.5*TMath::Erf((x-[6])/[7]))"); |
| fs->SetParName(0, "G_Const"); fs->SetParName(1, "G_Mean"); fs->SetParName(2, "G_Sigma"); |
| fs->SetParName(3, "Exp_p0"); fs->SetParName(4, "Exp_p1"); fs->SetParName(5, "Exp_p2"); |
| fs->SetParName(6, "Erf_p0"); fs->SetParName(7, "Erf_p1"); |
| //~ |
| TF1 *fg1 = new TF1("fg1", "gaus(0)"); fg1->SetNpx(400); |
| TF1 *fe1 = new TF1("fe1", "[0]*exp((x)/[1]) + [2]"); |
| TF1 *ferf1 = new TF1("ferf1", "[0]*(0.5+0.5*TMath::Erf((x-[1])/[2]))"); |
| TF1 *fe1erf = new TF1("fe1erf", "([0]*exp((x)/[1]) + [2]) * (0.5+0.5*TMath::Erf((x-[3])/[4]))"); fe1erf->SetNpx(400); |
| double fitampl = hp1d->GetMaximum(); |
| double fitcenter = hp1d->GetBinCenter(hp1d->GetMaximumBin()); |
| fs->SetNpx(400); |
| fs->SetParameters(fitampl, fitcenter, 0.01, 1e2, -0.1, 1e1, 0, 0.05); |
| // G + Er + Ex |
| //fs->SetParLimits( 1, -0.1, 0.1); |
| //fs->SetParLimits( 2, 0.018, 0.5); |
| fs->SetParLimits( 4, -0.3, 0); |
| //fs->SetParLimits( 6, -1e-1, 1e-1); |
| fs->SetParLimits( 7, 0.04, 0.6); |
| //~ // G |
| //~ fs->SetParameters(fitampl/100., fitampl, fitcenter, 0.01); |
| hp1d->Fit(fs,"Q","",fitmin, fitmax); |
| //~ printf("Chi / NDF = %lf/%lf\n", fs->GetChisquare(), fs->GetNDF()); |
| fg1->SetParameters(fs->GetParameter(0), fs->GetParameter(1), fs->GetParameter(2)); |
| //~ fe1->SetParameters(fs->GetParameter(3), fs->GetParameter(4), fs->GetParameter(5)); |
| //~ ferf1->SetParameters(1e4, fs->GetParameter(6), fs->GetParameter(7)); |
| fe1erf->SetParameters(fs->GetParameter(3), fs->GetParameter(4), fs->GetParameter(5), fs->GetParameter(6), fs->GetParameter(7)); |
| fg1->SetLineColor(kRed); fg1->SetLineWidth(1); fg1->SetLineStyle(1); fg1->SetRange(fitmin, fitmax); fg1->DrawCopy("SAME"); |
| //~ fe1->SetLineColor(kBlue); fe1->SetLineWidth(1); fe1->SetLineStyle(1); fe1->SetRange(fitmin, fitmax); fe1->DrawCopy("SAME"); |
| //~ ferf1->SetLineColor(kYellow); ferf1->SetLineWidth(1);ferf1->SetLineStyle(1);ferf1->SetRange(fitmin, fitmax);ferf1->DrawCopy("SAME"); |
| fe1erf->SetLineColor(kBlue); fe1erf->SetLineWidth(1);fe1erf->SetLineStyle(1);fe1erf->SetRange(fitmin, fitmax);fe1erf->DrawCopy("SAME"); |
| double HalfMax = fitampl/2.0; |
| double MinHalfMax = fs->GetX(HalfMax, -0.5, fitcenter); |
| double MaxHalfMax = fs->GetX(HalfMax, fitcenter, 1.5); |
| double FWHM = MaxHalfMax - MinHalfMax; |
| double sigmaFWHM = fs->GetParameter(2); |
| printf("Corrected %s resolution FWHM = %.1lf [ps]\n", hTitle, FWHM*1000); |
| //~ fprintf(fp,"%lf ", FWHM*1000); |
| sprintf(sbuff, "FWHM = %.0lf ps", FWHM*1000); |
| leg1->AddEntry((TF1*)fs->Clone(),sbuff, "L"); |
| leg1->Draw(); |
| } |
| // ======================================================================================================= |
| void plots2(char *fname="480", char *plopt="d", double fitcenter = 1190., double fitw = 70., double comhi_range_hi = 2100., int batch_q=0) |
| { |
| char sbuff[256]; |
| char *fitopt="crystal1"; |
| double inmin=-10; |
| double inmax=10; |
| double Ecut_lo = 450.; |
| double Ecut_hi = 625.; |
| int printeps = 0; |
| int printgif=-1, double fitlo=1.0, double fithi=1.0; |
| int ch=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; |
| } |
| dir = (TDirectory*) rootfile; |
| DrSetDrawStyle(); |
| TCanvas *c[64]; |
| int cc=-1; |
| char hname[256], htitle[256]; |
| TH1F *hp1d, *hp1dcut; TH2F *hp2d; |
| TLegend *leg[64]; |
| int legi = -1; |
| TH1F *legentry[64]; |
| int legentryi = -1; |
| TGraph *graph[16]; |
| int igraph=-1; |
| int colarr[20] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, kOrange, 10,11,12,13,14,15,16,17,18,19}; |
| int legsty[] = {1,7,2,3,9,6,9,5,6}; |
| TF1 *fg = new TF1("fg", "gaus"); fg->SetNpx(300); |
| TF1 *fgg = new TF1("fgg", "gaus(0)+gaus(3)"); fg->SetNpx(300); |
| fgg->SetParName(0,"G1_Const"); fgg->SetParName(3,"G2_Const"); |
| fgg->SetParName(1,"G1_Mean" ); fgg->SetParName(4,"G2_Mean" ); |
| fgg->SetParName(2,"G1_Sigma"); fgg->SetParName(5,"G2_Sigma"); |
| TF1 *fg3 = new TF1("fg3", "gaus(0)+gaus(3)+gaus(6)"); fg3->SetNpx(300); |
| fg3->SetParName(0,"G1_Const"); fg3->SetParName(3,"G2_Const"); fg3->SetParName(6,"G3_Const"); |
| fg3->SetParName(1,"G1_Mean" ); fg3->SetParName(4,"G2_Mean" ); fg3->SetParName(7,"G3_Mean" ); |
| fg3->SetParName(2,"G1_Sigma"); fg3->SetParName(5,"G2_Sigma"); fg3->SetParName(8,"G3_Sigma"); |
| TF1 *fg4 = new TF1("fg4", "gaus(0)+gaus(3)+gaus(6)+gaus(9)"); fg4->SetNpx(300); |
| fg4->SetParName(0,"G1_Const"); fg4->SetParName(3,"G2_Const"); fg4->SetParName(6,"G3_Const"); fg4->SetParName(9,"G4_Const"); |
| fg4->SetParName(1,"G1_Mean" ); fg4->SetParName(4,"G2_Mean" ); fg4->SetParName(7,"G3_Mean" ); fg4->SetParName(10,"G4_Mean" ); |
| fg4->SetParName(2,"G1_Sigma"); fg4->SetParName(5,"G2_Sigma"); fg4->SetParName(8,"G3_Sigma"); fg4->SetParName(11,"G4_Sigma"); |
| TF1 *fg5 = new TF1("fg5", "gaus(0)+gaus(3)+gaus(6)+gaus(9)+gaus(12)"); fg5->SetNpx(300); |
| fg5->SetParName(0,"G1_Const"); fg5->SetParName(3,"G2_Const"); fg5->SetParName(6,"G3_Const"); fg5->SetParName(9,"G4_Const"); fg5->SetParName(12,"G5_Const"); |
| fg5->SetParName(1,"G1_Mean" ); fg5->SetParName(4,"G2_Mean" ); fg5->SetParName(7,"G3_Mean" ); fg5->SetParName(10,"G4_Mean" ); fg5->SetParName(13,"G5_Mean" ); |
| fg5->SetParName(2,"G1_Sigma"); fg5->SetParName(5,"G2_Sigma"); fg5->SetParName(8,"G3_Sigma"); fg5->SetParName(11,"G4_Sigma"); fg5->SetParName(14,"G5_Sigma"); |
| // ------------------------------------------------------------------- |
| if( strchr(plopt, 'a') != NULL ) { |
| //~ gStyle->SetOptStat(1111); |
| gStyle->SetOptStat(0); |
| gStyle->SetOptFit(0); |
| c[++cc] = new TCanvas("a", "a", 0, 0, 1200, 700); |
| c[cc]->Divide(2,2); |
| int draw_cuts = 1; |
| int rebin_tdcs = 0; |
| int ccccdi = 0; |
| int ich; |
| // -------------------------- qdc 0 ---------------------------------- |
| ich = 0; |
| (c[cc]->cd(++ccccdi))->SetLogy(1); |
| sprintf(hname, "hadc%d", ich); |
| hp1d = DrTH1F(dir, hname, ""); |
| hp1d->SetTitle("MPPC 1;Charge [200 fC/bin]"); |
| hp1d->GetXaxis()->SetRangeUser(0,2000); |
| //~ hp1d->GetYaxis()->SetRangeUser(0.9,hp1d->GetMaximum()*1.1); |
| hp1d->SetLineColor(kBlack); |
| hp1d->DrawClone(); |
| if(draw_cuts) { |
| sprintf(hname, "hadc_cut%d", ich); |
| hp1dcut = DrTH1F(dir, hname, ""); |
| hp1dcut->SetLineColor(kRed); |
| hp1dcut->DrawClone("SAME"); |
| //~ sprintf(hname, "hadc_cut_2%d", ich); |
| //~ hp1dcut = DrTH1F(dir, hname, ""); |
| //~ hp1dcut->SetLineColor(kGreen); |
| //~ hp1dcut->DrawClone("SAME"); |
| } |
| // -------------------------- TDC 0 ---------------------------------- |
| (c[cc]->cd(++ccccdi))->SetLogy(1); |
| sprintf(hname, "htdc%d", ich); |
| hp1d = DrTH1F(dir, hname, ""); |
| hp1d->SetTitle("MPPC 1;Time [ns]"); |
| if(rebin_tdcs) hp1d->Rebin(rebin_tdcs); |
| //~ hp1d->GetXaxis()->SetRangeUser(0,22); |
| hp1d->GetXaxis()->SetRangeUser(20,34); |
| //~ hp1d->GetYaxis()->SetRangeUser(0.9,hp1d->GetMaximum()*1.1); |
| hp1d->SetLineColor(kBlack); |
| hp1d->DrawClone(); |
| if(draw_cuts) { |
| sprintf(hname, "htdc_cut%d", ich); |
| hp1dcut = DrTH1F(dir, hname, ""); |
| if(rebin_tdcs) hp1dcut->Rebin(rebin_tdcs); |
| hp1dcut->SetLineColor(kRed); |
| hp1dcut->DrawClone("SAME"); |
| //~ sprintf(hname, "htdc_cut_2%d", ich); |
| //~ hp1dcut = DrTH1F(dir, hname, ""); |
| //~ if(rebin_tdcs) hp1dcut->Rebin(rebin_tdcs); |
| //~ hp1dcut->SetLineColor(kGreen); |
| //~ hp1dcut->DrawClone("SAME"); |
| } |
| // -------------------------- qdc 1 ---------------------------------- |
| ich = 1; |
| (c[cc]->cd(++ccccdi))->SetLogy(1); |
| sprintf(hname, "hadc%d", ich); |
| hp1d = DrTH1F(dir, hname, ""); |
| hp1d->SetTitle("MPPC 2;Charge [200 fC/bin]"); |
| hp1d->GetXaxis()->SetRangeUser(0,2000); |
| //~ hp1d->GetYaxis()->SetRangeUser(0.9,hp1d->GetMaximum()*1.1); |
| hp1d->SetLineColor(kBlack); |
| hp1d->DrawClone(); |
| if(draw_cuts) { |
| sprintf(hname, "hadc_cut%d", ich); |
| hp1dcut = DrTH1F(dir, hname, ""); |
| hp1dcut->SetLineColor(kRed); |
| hp1dcut->DrawClone("SAME"); |
| //~ sprintf(hname, "hadc_cut_2%d", ich); |
| //~ hp1dcut = DrTH1F(dir, hname, ""); |
| //~ hp1dcut->SetLineColor(kGreen); |
| //~ hp1dcut->DrawClone("SAME"); |
| } |
| // -------------------------- TDC 1 ---------------------------------- |
| (c[cc]->cd(++ccccdi))->SetLogy(1); |
| sprintf(hname, "htdc%d", ich); |
| hp1d = DrTH1F(dir, hname, ""); |
| hp1d->SetTitle("MPPC 2;Time [ns]"); |
| if(rebin_tdcs) hp1d->Rebin(rebin_tdcs); |
| //~ hp1d->GetXaxis()->SetRangeUser(0,22); |
| hp1d->GetXaxis()->SetRangeUser(20,34); |
| //~ hp1d->GetYaxis()->SetRangeUser(0.9,hp1d->GetMaximum()*1.1); |
| hp1d->SetLineColor(kBlack); |
| hp1d->DrawClone(); |
| if(draw_cuts) { |
| sprintf(hname, "htdc_cut%d", ich); |
| hp1dcut = DrTH1F(dir, hname, ""); |
| if(rebin_tdcs) hp1dcut->Rebin(rebin_tdcs); |
| hp1dcut->SetLineColor(kRed); |
| hp1dcut->DrawClone("SAME"); |
| //~ sprintf(hname, "htdc_cut_2%d", ich); |
| //~ hp1dcut = DrTH1F(dir, hname, ""); |
| //~ if(rebin_tdcs) hp1dcut->Rebin(rebin_tdcs); |
| //~ hp1dcut->SetLineColor(kGreen); |
| //~ hp1dcut->DrawClone("SAME"); |
| } |
| sprintf(fullname, "gif/a_%s.gif", fname); c[cc]->SaveAs(fullname); |
| } |
| // ------------------------------------------------------------------- |
| if( strchr(plopt, 'q') != NULL ) { |
| gStyle->SetOptStat(1111); |
| gStyle->SetOptFit(0); |
| c[++cc] = new TCanvas("q", "q", 0, 0, 1200, 700); |
| c[cc]->Divide(3,2); |
| int draw_cuts = 1; |
| int rebin_tdcs = 1; |
| int ccccdi = 0; |
| int ich; |
| /* |
| ich = 2; |
| // -------------------------- qdc ref ---------------------------------- |
| (c[cc]->cd(++ccccdi))->SetLogy(1); |
| sprintf(hname, "hadc%d", ich); |
| hp1d = DrTH1F(dir, hname, ""); |
| //~ hp1d->GetXaxis()->SetRangeUser(0,100); |
| hp1d->GetYaxis()->SetRangeUser(0.9,hp1d->GetMaximum()*1.1); |
| hp1d->DrawClone(); |
| sprintf(hname, "hadc_cut%d", ich); |
| hp1dcut = DrTH1F(dir, hname, ""); |
| hp1dcut->SetLineColor(kRed); |
| hp1dcut->DrawClone("SAME"); |
| sprintf(hname, "hadc_cut_2%d", ich); |
| hp1dcut = DrTH1F(dir, hname, ""); |
| hp1dcut->SetLineColor(kGreen); |
| hp1dcut->DrawClone("SAME"); |
| // -------------------------- TDC ref ---------------------------------- |
| (c[cc]->cd(++ccccdi))->SetLogy(1); |
| sprintf(hname, "htdc%d", ich); |
| hp1d = DrTH1F(dir, hname, ""); |
| hp1d->Rebin(8); |
| hp1d->GetXaxis()->SetRangeUser(5,105); |
| hp1d->GetYaxis()->SetRangeUser(0.9,hp1d->GetMaximum()*1.1); |
| hp1d->DrawClone(); |
| sprintf(hname, "htdc_cut%d", ich); |
| hp1dcut = DrTH1F(dir, hname, ""); |
| hp1dcut->Rebin(8); |
| hp1dcut->SetLineColor(kRed); |
| hp1dcut->DrawClone("SAME"); |
| sprintf(hname, "htdc_cut_2%d", ich); |
| hp1dcut = DrTH1F(dir, hname, ""); |
| hp1dcut->Rebin(8); |
| hp1dcut->SetLineColor(kGreen); |
| hp1dcut->DrawClone("SAME"); |
| */ |
| // -------------------------- TDC DIFF ---------------------------------- |
| (c[cc]->cd(++ccccdi))->SetLogy(0); |
| sprintf(hname, "htdcdiff"); |
| hp1d = DrTH1F(dir, hname, ""); |
| hp1d->Rebin(rebin_tdcs); |
| hp1d->GetXaxis()->SetRangeUser(-15,15); |
| //~ hp1d->GetYaxis()->SetRangeUser(0.9,hp1d->GetMaximum()*2); |
| hp1d->GetYaxis()->SetRangeUser(0.,hp1d->GetMaximum()*1.1); |
| hp1d->DrawClone(); |
| if(draw_cuts) { |
| sprintf(hname, "htdcdiff_cut"); |
| hp1dcut = DrTH1F(dir, hname, ""); |
| hp1dcut->Rebin(rebin_tdcs); |
| hp1dcut->SetLineColor(kRed); |
| hp1dcut->DrawClone("SAME"); |
| sprintf(hname, "htdcdiff_cut_2"); |
| hp1dcut = DrTH1F(dir, hname, ""); |
| hp1dcut->Rebin(rebin_tdcs); |
| hp1dcut->SetLineColor(kGreen); |
| hp1dcut->DrawClone("SAME"); |
| } |
| // -------------------------- qdc MPPC ---------------------------------- |
| ich = 0; |
| (c[cc]->cd(++ccccdi))->SetLogy(1); |
| sprintf(hname, "hadc%d", ich); |
| hp1d = DrTH1F(dir, hname, ""); |
| hp1d->GetXaxis()->SetRangeUser(0,1500); |
| //~ hp1d->GetYaxis()->SetRangeUser(0.9,hp1d->GetMaximum()*1.1); |
| hp1d->DrawClone(); |
| if(draw_cuts) { |
| sprintf(hname, "hadc_cut%d", ich); |
| hp1dcut = DrTH1F(dir, hname, ""); |
| hp1dcut->SetLineColor(kRed); |
| hp1dcut->DrawClone("SAME"); |
| sprintf(hname, "hadc_cut_2%d", ich); |
| hp1dcut = DrTH1F(dir, hname, ""); |
| hp1dcut->SetLineColor(kGreen); |
| hp1dcut->DrawClone("SAME"); |
| } |
| // -------------------------- TDC MPPC ---------------------------------- |
| (c[cc]->cd(++ccccdi))->SetLogy(1); |
| sprintf(hname, "htdc%d", ich); |
| hp1d = DrTH1F(dir, hname, ""); |
| hp1d->Rebin(rebin_tdcs); |
| hp1d->GetXaxis()->SetRangeUser(0,20); |
| hp1d->GetYaxis()->SetRangeUser(0.9,hp1d->GetMaximum()*1.1); |
| hp1d->DrawClone(); |
| if(draw_cuts) { |
| sprintf(hname, "htdc_cut%d", ich); |
| hp1dcut = DrTH1F(dir, hname, ""); |
| hp1dcut->Rebin(rebin_tdcs); |
| hp1dcut->SetLineColor(kRed); |
| hp1dcut->DrawClone("SAME"); |
| sprintf(hname, "htdc_cut_2%d", ich); |
| hp1dcut = DrTH1F(dir, hname, ""); |
| hp1dcut->Rebin(rebin_tdcs); |
| hp1dcut->SetLineColor(kGreen); |
| hp1dcut->DrawClone("SAME"); |
| } |
| // -------------------------- qdc MPPC ---------------------------------- |
| ich = 1; |
| ccccdi++; |
| (c[cc]->cd(++ccccdi))->SetLogy(1); |
| sprintf(hname, "hadc%d", ich); |
| hp1d = DrTH1F(dir, hname, ""); |
| hp1d->GetXaxis()->SetRangeUser(0,1500); |
| //~ hp1d->GetYaxis()->SetRangeUser(0.9,hp1d->GetMaximum()*1.1); |
| hp1d->DrawClone(); |
| if(draw_cuts) { |
| sprintf(hname, "hadc_cut%d", ich); |
| hp1dcut = DrTH1F(dir, hname, ""); |
| hp1dcut->SetLineColor(kRed); |
| hp1dcut->DrawClone("SAME"); |
| sprintf(hname, "hadc_cut_2%d", ich); |
| hp1dcut = DrTH1F(dir, hname, ""); |
| hp1dcut->SetLineColor(kGreen); |
| hp1dcut->DrawClone("SAME"); |
| } |
| // -------------------------- TDC MPPC ---------------------------------- |
| (c[cc]->cd(++ccccdi))->SetLogy(1); |
| sprintf(hname, "htdc%d", ich); |
| hp1d = DrTH1F(dir, hname, ""); |
| hp1d->Rebin(rebin_tdcs); |
| hp1d->GetXaxis()->SetRangeUser(0,20); |
| hp1d->GetYaxis()->SetRangeUser(0.9,hp1d->GetMaximum()*1.1); |
| hp1d->DrawClone(); |
| if(draw_cuts) { |
| sprintf(hname, "htdc_cut%d", ich); |
| hp1dcut = DrTH1F(dir, hname, ""); |
| hp1dcut->Rebin(rebin_tdcs); |
| hp1dcut->SetLineColor(kRed); |
| hp1dcut->DrawClone("SAME"); |
| sprintf(hname, "htdc_cut_2%d", ich); |
| hp1dcut = DrTH1F(dir, hname, ""); |
| hp1dcut->Rebin(rebin_tdcs); |
| hp1dcut->SetLineColor(kGreen); |
| hp1dcut->DrawClone("SAME"); |
| } |
| sprintf(fullname, "gif/q_%s.gif", fname); c[cc]->SaveAs(fullname); |
| //~ sprintf(fullname, "%s_j2.eps", fname); c[cc]->SaveAs(fullname); |
| if(batch_q) gSystem->Exit(1); |
| } |
| // ------------------------------------------------------------------- |
| if( strchr(plopt, 'n') != NULL ) { |
| gStyle->SetOptStat("e"); |
| //~ gStyle->SetOptFit(1); |
| c[++cc] = new TCanvas("d", "d", 0, 0, 900, 600); |
| //~ c[cc]->Divide(2,2); |
| int draw_cuts = 0; |
| int rebin_tdcs = 1; |
| double drawmin = -17; |
| double drawmax = +17; |
| double fitmin = -10; |
| double fitmax = 10; |
| double fitcenter = 0.0; |
| double HalfMax, MinHalfMax, MaxHalfMax, FWHM, FWHMc; |
| int ccccdi = 0; |
| int ich = 0; |
| TF1 *f_fit; |
| TF1 *fcg = new TF1("fcg", "pol0(0)+gaus(1)"); fcg->SetNpx(300); |
| fcg->SetParName(0,"Const"); fcg->SetParName(1,"G_Const"); |
| fcg->SetParName(2,"G_Mean" ); fcg->SetParName(3,"G_Sigma" ); |
| TF1 *fcgg = new TF1("fcgg", "pol0(0)+gaus(1)+gaus(4)"); fcgg->SetNpx(300); |
| fcgg->SetParName(0,"Const"); |
| fcgg->SetParName(1,"G1_Const"); fcgg->SetParName(2,"G1_Mean" ); fcgg->SetParName(3,"G1_Sigma" ); |
| fcgg->SetParName(4,"G2_Const"); fcgg->SetParName(5,"G2_Mean" ); fcgg->SetParName(6,"G2_Sigma" ); |
| (c[cc]->cd(++ccccdi))->SetLogy(0); |
| sprintf(hname, "htdcdiff"); |
| hp1d = DrTH1F(dir, hname, ""); |
| //~ hp1d->Rebin(rebin_tdcs); |
| hp1d->SetLineColor(kBlack); |
| hp1d->GetXaxis()->SetRangeUser(drawmin,drawmax); |
| hp1d->GetYaxis()->SetRangeUser(0.0,hp1d->GetMaximum()*1.1); |
| hp1d->SetTitle(";Coincidence Time [ns];Counts"); |
| f_fit = fcgg; |
| f_fit->SetParameters(hp1d->GetMaximum()*0.25, |
| hp1d->GetMaximum()*0.7, 0, 0.4, |
| hp1d->GetMaximum()*0.05, 0, 0.05); |
| f_fit->SetParLimits(0, 0, hp1d->GetMaximum()); |
| f_fit->SetParLimits(1, 0, hp1d->GetMaximum()); |
| f_fit->SetParLimits(2, fitmin,fitmax); |
| f_fit->SetParLimits(3, 0.2, 1); |
| f_fit->SetParLimits(4, 0, hp1d->GetMaximum()); |
| f_fit->SetParLimits(5, fitmin,fitmax); |
| f_fit->SetParLimits(6, 0.02, 0.3); |
| //~ f_fit = fcgg; |
| //~ f_fit->SetParameters(hp1d->GetMaximum()*0.1, |
| //~ hp1d->GetMaximum()*0.5, 0, 0.05, |
| //~ hp1d->GetMaximum()*0.4, 0, 0.5); |
| //~ f_fit = fcg; |
| //~ f_fit->SetParameters(hp1d->GetMaximum()*0.1, |
| //~ hp1d->GetMaximum()*0.9, 0, 0.05); |
| f_fit->SetRange(fitmin,fitmax); |
| f_fit->SetLineWidth(1); |
| hp1d->Fit(f_fit, "Q", "", fitmin,fitmax); |
| HalfMax = f_fit->GetMaximum(fitmin, fitmax)/2.0; |
| MinHalfMax = f_fit->GetX(HalfMax, fitmin, fitcenter); |
| MaxHalfMax = f_fit->GetX(HalfMax, fitcenter, fitmax); |
| FWHM = MaxHalfMax - MinHalfMax; |
| HalfMax = (f_fit->GetMaximum(fitmin, fitmax) + f_fit->GetParameter(0))/2.0; |
| MinHalfMax = f_fit->GetX(HalfMax, fitmin, fitcenter); |
| MaxHalfMax = f_fit->GetX(HalfMax, fitcenter, fitmax); |
| FWHMc = MaxHalfMax - MinHalfMax; |
| //~ printf("FWHM = %lf ns | FWHMc = %lf ns\n", FWHM, FWHMc); |
| printf("FWHM (peak only) = %.3lf ns\n", FWHMc); |
| leg[++legi] = new TLegend(0.122768, 0.740418, 0.420759, 0.878049); |
| leg[legi]->SetFillColor(0); leg[legi]->SetBorderSize(1); leg[legi]->SetTextSize(0.03); leg[legi]->SetTextAlign(22); |
| for(int i=0; i<6; i++) fgg->SetParameter(i, f_fit->GetParameter(i+1)); |
| //~ fgg->SetRange(drawmin, drawmax); fgg->SetNpx(300); fgg->SetLineColor(kBlue); fgg->SetLineWidth(1); fgg->DrawClone("LSAME"); |
| double Icherenkovs = fgg->Integral(drawmin, drawmax); |
| double Iall = f_fit->Integral(fitmin, fitmax); |
| double Rsn = Icherenkovs/(Iall-Icherenkovs); |
| double Ientr = hp1d->GetEntries()*hp1d->GetBinWidth(1); |
| double Rsne = Icherenkovs/(Ientr-Icherenkovs); |
| double Ihist = hp1d->Integral(1, hp1d->GetNbinsX()-1)*hp1d->GetBinWidth(1); |
| double Rsnh = Icherenkovs/(Ihist-Icherenkovs); |
| //~ printf("ICherenkov = %lf | IAll = %lf | Ientr = %lf | Ihist = %lf\n", Icherenkovs, Iall, Ientr, Ihist); |
| //~ printf("TF1 -> S/N = %lf || TH1F(e) -> S/N = %lf || TH1F(i) -> S/N = %lf\n", Rsn, Rsne, Rsnh); |
| printf("S/N (vs. All) = %lf\n", Rsnh); |
| if(draw_cuts) { |
| sprintf(hname, "htdcdiff_cut"); |
| hp1dcut = DrTH1F(dir, hname, ""); |
| hp1dcut->Rebin(rebin_tdcs); |
| hp1dcut->SetLineColor(kRed); |
| hp1dcut->DrawClone("SAME"); |
| sprintf(hname, "htdcdiff_cut_2"); |
| hp1dcut = DrTH1F(dir, hname, ""); |
| hp1dcut->Rebin(rebin_tdcs); |
| hp1dcut->SetLineColor(kGreen); |
| hp1dcut->DrawClone("SAME"); |
| } |
| //~ #define USE_NOISE_FILE |
| #ifdef USE_NOISE_FILE |
| //get ROOT file with histograms |
| char fnameroot[1024]; |
| TFile * rootfile2; |
| TDirectory *dir2; |
| sprintf(fname, "run054"); |
| sprintf(fnameroot, "root/%s.root", fname); |
| rootfile2 = (TFile *) gROOT->FindObject(fname); |
| if(rootfile2==NULL) rootfile2 = new TFile(fnameroot); |
| if(rootfile2==NULL) { |
| printf("Cannot open root file 2 %s!!!\n",fnameroot); |
| return; |
| } |
| dir2 = (TDirectory*) rootfile2; |
| sprintf(hname, "htdcdiff"); |
| hp1dcut = DrTH1F(dir2, hname, ""); |
| hp1dcut->SetLineColor(kMagenta); |
| hp1dcut->DrawClone("SAME"); |
| leg[legi]->AddEntry((TH1F*)hp1d->Clone(), "With source (30 min)", "L"); |
| leg[legi]->AddEntry((TH1F*)hp1dcut->Clone(), "W/o source (30 min)", "L"); |
| sprintf(fullname, "Fit FWHM = %.3lf ns", FWHMc); |
| leg[legi]->AddEntry((TF1*)f_fit->Clone(), fullname, "L"); |
| leg[legi]->Draw(); |
| #endif |
| sprintf(fullname, "gif/n_%s.gif", fname); c[cc]->SaveAs(fullname); |
| if(batch_q) gSystem->Exit(1); |
| } |
| // ------------------------------------------------------------------- |
| if( strchr(plopt, 'f') != NULL ) { |
| DrSetDrawStyle(0.05); |
| gStyle->SetOptStat("e"); |
| //~ gStyle->SetOptFit(1); |
| gStyle->SetPadRightMargin(0.03); |
| gStyle->SetPadTopMargin(0.05); |
| gStyle->SetPadBottomMargin(0.12); |
| gStyle->SetStatFontSize(0.05); |
| gStyle->SetStatX(0.97); |
| gStyle->SetStatY(0.95); |
| c[++cc] = new TCanvas("f", "f", 0, 460, 720, 400); |
| //~ c[cc]->Divide(2,2); |
| int draw_cuts = 0; |
| int rebin_tdcs = 1; |
| double drawmin = -10; |
| double drawmax = +10; |
| //~ double fitmin = inmin; |
| //~ double fitmax = inmax; |
| double fitmin = -10; |
| double fitmax = 10; |
| double fitcenter = 0.0; |
| double HalfMax, MinHalfMax, MaxHalfMax, FWHM, FWHMc; |
| int ccccdi = 0; |
| int ich = 0; |
| TF1 *f_fit; |
| TF1 *f_integrate; |
| TF1 *fc = new TF1("fc", "pol0(0)"); |
| TF1 *fcg = new TF1("fcg", "pol0(0)+gaus(1)"); fcg->SetNpx(300); |
| fcg->SetParName(0,"Const"); fcg->SetParName(1,"G_Const"); |
| fcg->SetParName(2,"G_Mean" ); fcg->SetParName(3,"G_Sigma" ); |
| TF1 *fcgg = new TF1("fcgg", "pol0(0)+gaus(1)+gaus(4)"); fcgg->SetNpx(300); |
| fcgg->SetParName(0,"Const"); |
| fcgg->SetParName(1,"G1_Const"); fcgg->SetParName(2,"G1_Mean" ); fcgg->SetParName(3,"G1_Sigma" ); |
| fcgg->SetParName(4,"G2_Const"); fcgg->SetParName(5,"G2_Mean" ); fcgg->SetParName(6,"G2_Sigma" ); |
| TF1 *fcggg = new TF1("fcggg", "pol0(0)+gaus(1)+gaus(4)+gaus(7)"); fcggg->SetNpx(300); |
| fcggg->SetParName(0,"Const"); |
| fcggg->SetParName(1,"G1_Const"); fcggg->SetParName(2,"G1_Mean" ); fcggg->SetParName(3,"G1_Sigma" ); |
| fcggg->SetParName(4,"G2_Const"); fcggg->SetParName(5,"G2_Mean" ); fcggg->SetParName(6,"G2_Sigma" ); |
| fcggg->SetParName(7,"G3_Const"); fcggg->SetParName(8,"G3_Mean" ); fcggg->SetParName(9,"G3_Sigma" ); |
| //~ TF1 *f_nocrystal = new TF1("f_nocrystal", "[0]*exp(-0.5*((x-[1])/(sqrt(2)*[2]))**2)+[3]*exp(-0.5*((x-[4])/(sqrt(2)*[5]))**2)+[6]*exp(-1*((x-[7])**2)/(2*(([2])**2+([5])**2)))+[8]*exp(-1*(((x-[9])**2)/(2*(([2])**2+([5])**2))))+[10]"); |
| TF1 *f_nocrystal = new TF1("f_nocrystal", "[0]*([1]**2*TMath::Gaus(x,[2],sqrt(2)*[3],1)+(1-[1])**2*TMath::Gaus(x,[4],sqrt(2)*[5],1)+[1]*(1-[1])*TMath::Gaus(x,[6],sqrt([3]**2+[5]**2),1)+[1]*(1-[1])*TMath::Gaus(x,[7],sqrt([3]**2+[5]**2),1))+[8]"); |
| f_nocrystal->SetParName(0, "const"); |
| f_nocrystal->SetParName(1, "ratio"); |
| f_nocrystal->SetParName(2, "WW_mean"); |
| f_nocrystal->SetParName(3, "Window_sigma"); |
| f_nocrystal->SetParName(4, "MM_mean"); |
| f_nocrystal->SetParName(5, "MCP_sigma"); |
| f_nocrystal->SetParName(6, "WM1_mean"); |
| f_nocrystal->SetParName(7, "WM2_mean"); |
| f_nocrystal->SetParName(8, "Constant"); |
| //~ TF1 *f_crystal = new TF1("f_crystal", "[0]+[1]*([2]**2*(TMath::Gaus(x,[3],sqrt(2)*[4],1))+([5])**2*(TMath::Gaus(x,[6],sqrt(2)*[7],1))+(4*[5]/6)**2*(TMath::Gaus(x,[8],sqrt(2)*[9],1))+[2]*[5]*(TMath::Gaus(x,[10],sqrt([2]**2+[5]**2),1))+[5]*[2]*(TMath::Gaus(x,[11],sqrt([2]**2+[5]**2),1))+[2]*(4/6*[5])*(TMath::Gaus(x,[12],sqrt([2]**2+(4/6*[5])**2),1))+[2]*(4/6*[5])*(TMath::Gaus(x,[13],sqrt([2]**2+(4/6*[5])**2),1))+[5]*(4/6*[5])*(TMath::Gaus(x,[14],sqrt([5]**2+(4/6*[5])**2),1))+[5]*(4/6*[5])*(TMath::Gaus(x,[15],sqrt([5]**2+(4/6*[5])**2),1)))"); |
| TF1 *f_crystal = new TF1("f_crystal", "[0]+[1]*([2]**2*(TMath::Gaus(x,[3],sqrt(2)*[4],1))+([5])**2*(TMath::Gaus(x,[6],sqrt(2)*[7],1))+(4*[5]/6)**2*(TMath::Gaus(x,[8],sqrt(2)*[9],1))+[2]*[5]*(TMath::Gaus(x,[10],sqrt([4]**2+[7]**2),1))+[5]*[2]*(TMath::Gaus(x,[11],sqrt([4]**2+[7]**2),1))+[2]*(4/6*[5])*(TMath::Gaus(x,[12],sqrt([4]**2+[9]**2),1))+[2]*(4/6*[5])*(TMath::Gaus(x,[13],sqrt([4]**2+[9]**2),1))+[5]*(4/6*[5])*(TMath::Gaus(x,[14],sqrt([7]**2+[9]**2),1))+[5]*(4/6*[5])*(TMath::Gaus(x,[15],sqrt([7]**2+[9]**2),1)))"); |
| f_crystal->SetParName(0, "dark"); |
| f_crystal->SetParName(1, "const"); |
| f_crystal->SetParName(2, "Prob_Crystal"); |
| f_crystal->SetParName(3, "CC_mean"); |
| f_crystal->SetParName(4, "Crystal_sigma"); |
| f_crystal->SetParName(5, "Prob_window"); |
| f_crystal->SetParName(6, "WW_mean"); |
| f_crystal->SetParName(7, "WW_sigma"); |
| f_crystal->SetParName(8, "MM_mean"); |
| f_crystal->SetParName(9, "MM_sigma"); |
| f_crystal->SetParName(10, "CW1_mean"); |
| f_crystal->SetParName(11, "CW2_mean"); |
| f_crystal->SetParName(12, "CM1_mean"); |
| f_crystal->SetParName(13, "CM2_mean"); |
| f_crystal->SetParName(14, "WM1_mean"); |
| f_crystal->SetParName(15, "WM2_mean"); |
| //~ TF1 *f_crystal1 = new TF1("f_crystal1", "[0]+[1]*([2]**2*TMath::Gaus(x,[3],sqrt(2)*[4],1)+(1.-5./3*[2])**2*TMath::Gaus(x,[5],sqrt(2)*[6],1)+(4.*[2]/6.)**2*TMath::Gaus(x,[7],sqrt(2)*[8],1)+[2]*(1.-(5./3)*[2])*TMath::Gaus(x,[9],sqrt([4]**2+[6]**2),1)+(1.-(5./3)*[2])*[2]*TMath::Gaus(x,[10],sqrt([4]**2+[6]**2),1)+[2]*4./6.*[2]*TMath::Gaus(x,[11],sqrt([4]**2+[8]**2),1)+[2]*4/6.*[2]*TMath::Gaus(x,[12],sqrt([4]**2+[8]**2),1)+4./6*[2]*(1.-5./3*[2])*TMath::Gaus(x,[13],sqrt([6]**2+[8]**2),1)+(1.-5./3*[2])*4./6*[2]*TMath::Gaus(x,[14],sqrt([8]**2+[6]**2),1))"); |
| TF1 *f_crystal1 = new TF1("f_crystal1", "[0]+[1]*([2]**2*TMath::Gaus(x,[3],sqrt(2)*[4],1)+(1.-(1.+[15])*[2])**2*TMath::Gaus(x,[5],sqrt(2)*[6],1)+([15]*[2])**2*TMath::Gaus(x,[7],sqrt(2)*[8],1)+[16]**2*[2]*(1.-(1+[15])*[2])*TMath::Gaus(x,[9],sqrt([4]**2+[6]**2),1)+[16]**2*(1.-(1+[15])*[2])*[2]*TMath::Gaus(x,[10],sqrt([4]**2+[6]**2),1)+[2]*[15]*[2]*TMath::Gaus(x,[11],sqrt([4]**2+[8]**2),1)+[2]*[15]*[2]*TMath::Gaus(x,[12],sqrt([4]**2+[8]**2),1)+[15]*[2]*(1.-(1+[15])*[2])*TMath::Gaus(x,[13],sqrt([6]**2+[8]**2),1)+(1.-(1.+[15])*[2])*[15]*[2]*TMath::Gaus(x,[14],sqrt([8]**2+[6]**2),1))"); |
| f_crystal1->SetParName(0, "dark"); |
| f_crystal1->SetParName(1, "const"); |
| f_crystal1->SetParName(2, "Prob_Window"); |
| f_crystal1->SetParName(3, "WW_mean"); |
| f_crystal1->SetParName(4, "Window_sigma"); |
| f_crystal1->SetParName(5, "CC_mean"); |
| f_crystal1->SetParName(6, "Crystal_sigma"); |
| f_crystal1->SetParName(7, "MM_mean"); |
| f_crystal1->SetParName(8, "MCP_sigma"); |
| f_crystal1->SetParName(9, "CW1_mean"); |
| f_crystal1->SetParName(10, "CW2_mean"); |
| f_crystal1->SetParName(11, "WM1_mean"); |
| f_crystal1->SetParName(12, "WM2_mean"); |
| f_crystal1->SetParName(13, "CM1_mean"); |
| f_crystal1->SetParName(14, "CM2_mean"); |
| f_crystal1->SetParName(15, "ratio_mcp/window"); |
| f_crystal1->SetParName(16, "Sup._CW"); |
| double ratio_r=0; |
| (c[cc]->cd(++ccccdi))->SetLogy(0); |
| sprintf(hname, "htdcdiff_cut"); |
| hp1d = DrTH1F(dir, hname, ""); |
| //~ hp1d->Rebin(rebin_tdcs); |
| hp1d->SetLineColor(kBlack); |
| hp1d->GetXaxis()->SetRangeUser(drawmin,drawmax); |
| hp1d->GetYaxis()->SetRangeUser(0.0,hp1d->GetMaximum()*1.1); |
| sprintf(fullname, ";Coincidence Time [ns];Counts"); |
| hp1d->SetTitle(fullname); |
| if( strcmp(fitopt, "cgg")==0 ) { |
| f_fit = fcgg; |
| f_fit->SetParameters(hp1d->GetMaximum()*0.1, |
| hp1d->GetMaximum()*0.4, 0, 0.8, |
| hp1d->GetMaximum()*0.5, 0, 0.05); |
| f_fit->SetParLimits(0, 0, hp1d->GetMaximum()); |
| f_fit->SetParLimits(1, 0, hp1d->GetMaximum()); |
| f_fit->SetParLimits(2, fitmin,fitmax); |
| f_fit->SetParLimits(3, 0.05, 1); |
| f_fit->SetParLimits(4, 0, hp1d->GetMaximum()); |
| f_fit->SetParLimits(5, fitmin,fitmax); |
| f_fit->SetParLimits(6, 0.01, 1); |
| } else if(strcmp(fitopt, "cggg")==0) { |
| f_fit = fcggg; |
| f_fit->SetParameters(hp1d->GetMaximum()*0.1, |
| hp1d->GetMaximum()*0.4, 0, 0.4, |
| hp1d->GetMaximum()*0.4, 0, 0.2, |
| hp1d->GetMaximum()*0.1, 0, 0.05); |
| f_fit->SetParLimits(0, 0, hp1d->GetMaximum()); |
| f_fit->SetParLimits(1, 0, hp1d->GetMaximum()); |
| f_fit->SetParLimits(2, fitmin,fitmax); |
| f_fit->SetParLimits(3, 0.01, 1); |
| f_fit->SetParLimits(4, 0, hp1d->GetMaximum()); |
| f_fit->SetParLimits(5, fitmin,fitmax); |
| f_fit->SetParLimits(6, 0.05, 1); |
| f_fit->SetParLimits(7, 0, hp1d->GetMaximum()); |
| f_fit->SetParLimits(8, fitmin,fitmax); |
| f_fit->SetParLimits(9, 0.2, 1); |
| } else if(strcmp(fitopt, "nocrystal")==0) |
| { f_fit = f_nocrystal; |
| //~ f_fit->SetParameters(4000,0.87,0.03,0.03,0.28,0.1,200,200,0.01); |
| f_fit->SetParameters(200,0.8,0.0,0.03,0.0,0.1,-0.13,0.13,10.16); |
| f_fit->SetParLimits(0,0,10000); |
| f_fit->SetParLimits(1,0,1); |
| f_fit->SetParLimits(2,-0.02,0.02); |
| f_fit->SetParLimits(3,0.01,0.3); |
| f_fit->SetParLimits(4,-0.02,0.02); |
| f_fit->SetParLimits(5,0,0.8); |
| f_fit->SetParLimits(6,-0.5,0.0); |
| f_fit->SetParLimits(7,0.0,0.5); |
| f_fit->SetParLimits(8,0.00,9000.5); |
| //~ f_fit->FixParameter(6, 100); |
| //~ f_fit->FixParameter(7, 100); |
| //~ |
| } else if(strcmp(fitopt, "crystal")==0) |
| { |
| f_fit = f_crystal; |
| //~ f_fit->SetParameters(0.1,300,0.8,0,0.07,0.01,0,0.028,0,0.15,0,0,-0.2,0.2,-0.2,0.2); |
| f_fit->SetParameter(0, 0.1); |
| f_fit->SetParameter(1, 300); |
| f_fit->SetParameter(2, 0.8); |
| f_fit->SetParameter(3, 0.); |
| f_fit->SetParameter(4, 0.07); |
| f_fit->SetParameter(5, 0.01); |
| f_fit->SetParameter(6, 0.0); |
| f_fit->SetParameter(7, 0.028); |
| f_fit->SetParameter(8, 0.0); |
| f_fit->SetParameter(9, 0.15); |
| f_fit->SetParameter(10, 0.0); |
| f_fit->SetParameter(11, 0.0); |
| f_fit->SetParameter(12, -0.2); |
| f_fit->SetParameter(13, 0.2); |
| f_fit->SetParameter(14, -0.2); |
| f_fit->SetParameter(15, 0.2); |
| f_fit->SetParameter(15, 0.2); |
| f_fit->SetParLimits(0, 0, 10); |
| f_fit->SetParLimits(1, 0, 1000); |
| f_fit->SetParLimits(2, 0, 1); |
| f_fit->SetParLimits(3, -0.02, 0.02); f_fit->SetParLimits(4, 0, 0.3); |
| f_fit->SetParLimits(5, 0, 1); f_fit->SetParLimits(6, -0.02, 0.02); |
| f_fit->SetParLimits(7, 0, 0.035); |
| f_fit->SetParLimits(8, -0.02, 0.02); |
| f_fit->SetParLimits(9, 0, 0.2); |
| f_fit->SetParLimits(10, -0.02, 0.02); |
| f_fit->SetParLimits(11, -0.02, 0.02); |
| f_fit->SetParLimits(12, -0.04, 0); |
| f_fit->SetParLimits(13, 0, 0.04); |
| f_fit->SetParLimits(14, -0.04, 0); |
| f_fit->SetParLimits(15, 0, 0.04); |
| } else if(strcmp(fitopt, "crystal1")==0) |
| { |
| f_fit = f_crystal1; |
| //~ f_fit->SetParameters(0.1,300,0.8,0,0.07,0.01,0,0.028,0,0.15,0,0,-0.2,0.2,-0.2,0.2); |
| f_fit->SetParameter(0, 100.1); |
| f_fit->SetParameter(1, 1); |
| f_fit->SetParameter(2, 0.2); //prob. window |
| f_fit->SetParameter(3, 0.0); |
| f_fit->SetParameter(4, 0.02); // window sigma |
| f_fit->SetParameter(5, 0.0); |
| f_fit->SetParameter(6, 120/3.3/1000); //crystal sigma |
| f_fit->SetParameter(7, 0.0); |
| f_fit->SetParameter(8, 0.15); // mcp sigma |
| f_fit->SetParameter(9, -0.1825); //cw |
| f_fit->SetParameter(10, 0.1825); |
| f_fit->SetParameter(11, -0.2); //wm |
| f_fit->SetParameter(12, 0.2); |
| f_fit->SetParameter(13, -0.3); //cm |
| f_fit->SetParameter(14, 0.3); |
| f_fit->SetParameter(15, 1/0.6795 -1.); |
| f_fit->SetParameter(16, 0.1); |
| f_fit->SetParameter(1, hp1d->GetMaximum()/(f_fit->Eval(0)-f_fit->GetParameter(0))); |
| f_fit->SetParLimits(0, 0, 400); |
| f_fit->SetParLimits(1, 0, 100000); |
| f_fit->SetParLimits(2, 0, 1.); |
| f_fit->SetParLimits(3, -0.025, 0.025); |
| f_fit->SetParLimits(4, 0.02, 0.08); |
| f_fit->SetParLimits(5, -0.025, 0.025); |
| f_fit->SetParLimits(6, 0.01, 0.2); |
| f_fit->SetParLimits(7, -0.025, 0.025); |
| f_fit->SetParLimits(8, 0, 0.5); |
| f_fit->SetParLimits(9, -0.6, 0.02); |
| f_fit->SetParLimits(10, -0.02, 0.6); |
| f_fit->SetParLimits(11, -0.3, -0.1); |
| f_fit->SetParLimits(12, 0.1, 0.3); |
| f_fit->SetParLimits(13, -0.7, -0.1); |
| f_fit->SetParLimits(14, 0.1, 0.7); |
| f_fit->SetParLimits(15, 0, 0.999); |
| f_fit->SetParLimits(16, 0, 1); |
| f_fit->FixParameter(4,0.02668); |
| //~ f_fit->FixParameter(6,0.048); |
| f_fit->FixParameter(8,0.0877); |
| f_fit->FixParameter(11,-0.19); |
| f_fit->FixParameter(12,0.19); |
| //~ |
| ratio_r = 1/0.6795 -1.; |
| //~ ratio_r = 1/0.8089 -1.; |
| f_fit->FixParameter(15,ratio_r); |
| //~ f_fit->FixParameter(16,1); |
| //~ f_fit->FixParameter(2,0.52); |
| //~ f_fit->FixParameter(6,170/3.3/1000); |
| //~ f_fit->FixParameter(3,0); |
| //~ f_fit->FixParameter(5,0); |
| //~ f_fit->FixParameter(7,0); |
| //~ cout<<"hogeeeeeeeeeeee "<<f_fit->GetParameter(1)*((1.-5./3.*(f_fit->GetParameter(2)))*(4./6.*(f_fit->GetParameter(2))))<<endl; |
| } |
| //~ f_fit->SetRange(fitmin,fitmax); |
| f_fit->SetRange(-10,10); |
| f_fit->SetLineWidth(1); f_fit->SetLineStyle(2); |
| f_fit->SetNpx(300); |
| //~ hp1d->Fit(f_fit, "QWW", "", fitmin,fitmax); |
| //~ hp1d->Fit(f_fit, "ILM+", "", -0.4,0.4); |
| //~ |
| hp1d->Fit(f_fit, "LM+", "", -.5,.5); |
| //~ hp1d->Draw(); |
| //~ f_fit->Draw("same"); //f_fit->SetLineColor(6); |
| f_fit->SetLineColor(1); |
| hp1d->GetXaxis()->SetRangeUser(-1.5,2); |
| gStyle->SetOptFit(1111); |
| double wmsigma = sqrt(f_fit->GetParameter(3)**2 + f_fit->GetParameter(5)**2); |
| double cm1sigma = sqrt(f_fit->GetParameter(6)**2 + f_fit->GetParameter(8)**2); |
| double wm1sigma = sqrt(f_fit->GetParameter(4)**2 + f_fit->GetParameter(8)**2); |
| double cw1sigma = sqrt(f_fit->GetParameter(6)**2 + f_fit->GetParameter(4)**2); |
| //kobayashi |
| TPaveStats* st1 = (TPaveStats*) hp1d->FindObject("stats"); |
| st1->SetX1NDC(0.63); st1->SetX2NDC(0.99); |
| st1->SetY1NDC(0.24); st1->SetY2NDC(0.99); |
| double pw = f_fit->GetParameter(2); |
| double pm = f_fit->GetParameter(15)*f_fit->GetParameter(2); |
| double pc = 1-pw - pm; |
| double rate = pw**2 + pm**2 + 2*pw*pm; |
| double sumrate = pw**2+pm**2+pc**2+2*pw*pm+2*pm*pc+2*pc*pw*f_fit->GetParameter(16)**2; |
| cout<<"pw = "<<pw<<" pm = "<<pm<<" pc = "<<pc<<endl; |
| cout<<"rate = "<<rate<<" sumrate = "<<sumrate<<" rate/sumrate = "<<rate/sumrate<<endl; |
| cout<<" FWHM_sim = "<<f_fit->GetParameter(6)*sqrt(2)*2.35<<endl; |
| if(strcmp(fitopt, "nocrystal")==0) |
| { |
| //~ TF1 *fg_WW = new TF1("fg_WW","[0]*exp(-(x-[1])**2/2/([3]**2))/sqrt(2*3.141592*[2]*[2])"); |
| //~ TF1 *fg_MM = new TF1("fg_MM","[0]*exp(-(x-[1])**2/2/([3]**2))/sqrt(2*3.141592*[2]*[2])"); |
| //~ TF1 *fg_WM1 = new TF1("fg_WM1","[0]*exp(-(x-[1])**2/2/([3]**2))/sqrt(2*3.141592*[2]*[2])"); |
| //~ TF1 *fg_WM2 = new TF1("fg_WM2","[0]*exp(-(x-[1])**2/2/([3]**2))/sqrt(2*3.141592*[2]*[2])"); |
| TF1 *fg_WW = new TF1("fg_WW","[0]*TMath::Gaus(x,[1],[2],1)");fg_WW->SetNpx(300); |
| TF1 *fg_MM = new TF1("fg_MM","[0]*TMath::Gaus(x,[1],[2],1)");fg_MM->SetNpx(300); |
| TF1 *fg_WM1 = new TF1("fg_WM1","[0]*TMath::Gaus(x,[1],[2],1)"); fg_WM1->SetNpx(300); |
| TF1 *fg_WM2 = new TF1("fg_WM2","[0]*TMath::Gaus(x,[1],[2],1)"); fg_WM2->SetNpx(300); |
| fg_WW -> SetParameters(f_fit->GetParameter(1)**2*f_fit->GetParameter(0),f_fit->GetParameter(2),sqrt(2)*f_fit->GetParameter(3)); |
| fg_MM -> SetParameters((1-f_fit->GetParameter(1))**2*f_fit->GetParameter(0),f_fit->GetParameter(4),sqrt(2)*f_fit->GetParameter(5)); |
| fg_WM1 -> SetParameters(f_fit->GetParameter(0)*(1-f_fit->GetParameter(1))*f_fit->GetParameter(1),f_fit->GetParameter(6),wmsigma); |
| fg_WM2 -> SetParameters(f_fit->GetParameter(0)*(1-f_fit->GetParameter(1))*f_fit->GetParameter(1),f_fit->GetParameter(7),wmsigma); |
| fg_WW->Draw("sames"); fg_WW->SetLineColor(kYellow+1); fg_WW->SetRange(-10,10); |
| fg_MM->Draw("sames"); fg_MM->SetLineColor(kMagenta-7); fg_MM->SetRange(-10,10); |
| fg_WM1->Draw("sames"); fg_WM1->SetLineColor(kRed-4); fg_WM1->SetRange(-10,10); |
| fg_WM2->Draw("sames"); fg_WM2->SetLineColor(kRed-4); fg_WM2->SetRange(-10,10); |
| double integ_WW, integ_MM, integ_WM1, integ_WM2; |
| integ_WW = fg_WW->Integral(-4,4); |
| } |
| if(strcmp(fitopt, "crystal1")==0) |
| { |
| TF1 *fg_CC = new TF1("fg_CC","[0]*TMath::Gaus(x,[1],[2],1)"); fg_CC->SetNpx(300); |
| TF1 *fg_WW = new TF1("fg_WW","[0]*TMath::Gaus(x,[1],[2],1)"); fg_WW->SetNpx(300); |
| TF1 *fg_MM = new TF1("fg_MM","[0]*TMath::Gaus(x,[1],[2],1)"); fg_MM->SetNpx(300); |
| TF1 *fg_WM1 = new TF1("fg_WM1","[0]*TMath::Gaus(x,[1],[2],1)"); fg_WM1->SetNpx(300); |
| TF1 *fg_WM2 = new TF1("fg_WM2","[0]*TMath::Gaus(x,[1],[2],1)"); fg_WM2->SetNpx(300); |
| TF1 *fg_CW1 = new TF1("fg_CW1","[0]*TMath::Gaus(x,[1],[2],1)"); fg_CW1->SetNpx(300); |
| TF1 *fg_CW2 = new TF1("fg_CW2","[0]*TMath::Gaus(x,[1],[2],1)"); fg_CW2->SetNpx(300); |
| TF1 *fg_CM1 = new TF1("fg_CM1","[0]*TMath::Gaus(x,[1],[2],1)"); fg_CM1->SetNpx(300); |
| TF1 *fg_CM2 = new TF1("fg_CM2","[0]*TMath::Gaus(x,[1],[2],1)"); fg_CM2->SetNpx(300); |
| // normalize |
| fg_CC -> SetParameters((1.-(1+f_fit->GetParameter(15))*f_fit->GetParameter(2))**2*f_fit->GetParameter(1),f_fit->GetParameter(5),sqrt(2)*f_fit->GetParameter(6)); |
| fg_WW -> SetParameters(f_fit->GetParameter(2)**2*f_fit->GetParameter(1),f_fit->GetParameter(3),sqrt(2)*f_fit->GetParameter(4)); |
| fg_MM -> SetParameters((f_fit->GetParameter(15)*f_fit->GetParameter(2))**2*f_fit->GetParameter(1),f_fit->GetParameter(7),sqrt(2)*f_fit->GetParameter(8)); |
| fg_WM1 -> SetParameters(f_fit->GetParameter(1)*(f_fit->GetParameter(15)*f_fit->GetParameter(2))*f_fit->GetParameter(2),f_fit->GetParameter(11),wm1sigma); |
| fg_WM2 -> SetParameters(f_fit->GetParameter(1)*(f_fit->GetParameter(15)*f_fit->GetParameter(2))*f_fit->GetParameter(2),f_fit->GetParameter(12),wm1sigma); |
| fg_CW1 -> SetParameters(f_fit->GetParameter(1)*f_fit->GetParameter(16)*(1.-(1+f_fit->GetParameter(15))*f_fit->GetParameter(2))*f_fit->GetParameter(2),f_fit->GetParameter(9),cw1sigma); |
| fg_CW2 -> SetParameters(f_fit->GetParameter(1)*f_fit->GetParameter(16)*(1.-(1+f_fit->GetParameter(15))*f_fit->GetParameter(2))*f_fit->GetParameter(2),f_fit->GetParameter(10),cw1sigma); |
| fg_CM1 -> SetParameters(f_fit->GetParameter(1)*(ratio_r*f_fit->GetParameter(2))*(1.-(1+f_fit->GetParameter(15))*f_fit->GetParameter(2)),f_fit->GetParameter(13),cm1sigma); |
| fg_CM2 -> SetParameters(f_fit->GetParameter(1)*(ratio_r*f_fit->GetParameter(2))*(1.-(1+f_fit->GetParameter(15))*f_fit->GetParameter(2)),f_fit->GetParameter(14),cm1sigma); |
| //non normalize |
| //~ fg_CC -> SetParameters((1.-5./3.*f_fit->GetParameter(2))**2*f_fit->GetParameter(1),f_fit->GetParameter(5),sqrt(2)*f_fit->GetParameter(6)); |
| //~ fg_WW -> SetParameters(f_fit->GetParameter(2)**2*f_fit->GetParameter(1),f_fit->GetParameter(3),sqrt(2)*f_fit->GetParameter(4)); |
| //~ fg_MM -> SetParameters((4./6.*f_fit->GetParameter(2))**2*f_fit->GetParameter(1),f_fit->GetParameter(7),sqrt(2)*f_fit->GetParameter(8)); |
| //~ fg_WM1 -> SetParameters(f_fit->GetParameter(1)*(4./6.*f_fit->GetParameter(2))*f_fit->GetParameter(2),f_fit->GetParameter(11),wm1sigma); |
| //~ fg_WM2 -> SetParameters(f_fit->GetParameter(1)*(4./6.*f_fit->GetParameter(2))*f_fit->GetParameter(2),f_fit->GetParameter(12),wm1sigma); |
| //~ fg_CW1 -> SetParameters(f_fit->GetParameter(1)*(1.-5./3*f_fit->GetParameter(2))*f_fit->GetParameter(2),f_fit->GetParameter(9),cw1sigma); |
| //~ fg_CW2 -> SetParameters(f_fit->GetParameter(1)*(1.-5./3*f_fit->GetParameter(2))*f_fit->GetParameter(2),f_fit->GetParameter(10),cw1sigma); |
| //~ fg_CM1 -> SetParameters(f_fit->GetParameter(1)*(4./6.*f_fit->GetParameter(2))*(1.-5./3*f_fit->GetParameter(2)),f_fit->GetParameter(13),cm1sigma); |
| //~ fg_CM2 -> SetParameters(f_fit->GetParameter(1)*(4./6.*f_fit->GetParameter(2))*(1.-5./3*f_fit->GetParameter(2)),f_fit->GetParameter(14),cm1sigma); |
| fg_CC->Draw("sames"); fg_CC->SetLineColor(kCyan-5); fg_CC->SetRange(-10,10); |
| fg_WW->Draw("sames"); fg_WW->SetLineColor(kYellow+1); fg_WW->SetRange(-10,10); |
| fg_MM->Draw("sames"); fg_MM->SetLineColor(kMagenta-7); fg_MM->SetRange(-10,10); |
| fg_CW1->Draw("sames"); fg_CW1->SetLineColor(kGreen+2); fg_CW1->SetRange(-10,10); |
| fg_CW2->Draw("sames"); fg_CW2->SetLineColor(kGreen+2); fg_CW2->SetRange(-10,10); |
| fg_WM1->Draw("sames"); fg_WM1->SetLineColor(kRed-4); fg_WM1->SetRange(-10,10); |
| fg_WM2->Draw("sames"); fg_WM2->SetLineColor(kRed-4); fg_WM2->SetRange(-10,10); |
| fg_CM1->Draw("sames"); fg_CM1->SetLineColor(kBlue+2); fg_CM1->SetRange(-10,10); |
| fg_CM2->Draw("sames"); fg_CM2->SetLineColor(kBlue+2); fg_CM2->SetRange(-10,10); |
| } |
| HalfMax = f_fit->GetMaximum(fitmin, fitmax)/2.0; |
| MinHalfMax = f_fit->GetX(HalfMax, fitmin, fitcenter); |
| MaxHalfMax = f_fit->GetX(HalfMax, fitcenter, fitmax); |
| FWHM = MaxHalfMax - MinHalfMax; |
| HalfMax = (f_fit->GetMaximum(fitmin, fitmax) + f_fit->GetParameter(0))/2.0; |
| MinHalfMax = f_fit->GetX(HalfMax, fitmin, f_fit->GetMaximumX(fitmin, fitmax)); |
| MaxHalfMax = f_fit->GetX(HalfMax, f_fit->GetMaximumX(fitmin, fitmax), fitmax); |
| FWHMc = MaxHalfMax - MinHalfMax; |
| printf("(f) HalfMax = %.3lf ns | MinHalfMax = %.3lf ns | MaxHalfMax = %.3lf ns\n", HalfMax, MinHalfMax, MaxHalfMax); |
| printf("(f) FWHM (peak only) = %.3lf ns\n", FWHMc); |
| f_integrate = fgg; |
| for(int i=0; i<6; i++) f_integrate->SetParameter(i, f_fit->GetParameter(i+1)); |
| //~ for(int i=0; i<9; i++) f_integrate->SetParameter(i, f_fit->GetParameter(i+1)); |
| //~ fgg->SetRange(drawmin, drawmax); fgg->SetNpx(300); fgg->SetLineColor(kBlue); fgg->SetLineWidth(1); fgg->DrawClone("LSAME"); |
| double Icherenkovs = f_integrate->Integral(drawmin, drawmax)/hp1d->GetBinWidth(1); |
| double Iall = f_fit->Integral(fitmin, fitmax)/hp1d->GetBinWidth(1); |
| double Rsn = Icherenkovs/(Iall-Icherenkovs); |
| //~ double Ientr = hp1d->GetEntries()*hp1d->GetBinWidth(1); |
| double Ientr = hp1d->GetEntries(); |
| double Rsne = Icherenkovs/(Ientr-Icherenkovs); |
| //~ double Ihist = hp1d->Integral(1, hp1d->GetNbinsX()-1)*hp1d->GetBinWidth(1); |
| double Ihist = hp1d->Integral(1, hp1d->GetNbinsX()-1); |
| double Rsnh = Icherenkovs/(Ihist-Icherenkovs); |
| double Icherenkovs_10ns = f_integrate->Integral(-10, 10)/hp1d->GetBinWidth(1); |
| fc->SetParameter(0, f_fit->GetParameter(0)); |
| double Inoise_10ns = fc->Integral(-10, 10)/hp1d->GetBinWidth(1); |
| double R10ns = Icherenkovs_10ns/Inoise_10ns; |
| double Icherenkovs_4ns = f_integrate->Integral(-4, 4)/hp1d->GetBinWidth(1); |
| fc->SetParameter(0, f_fit->GetParameter(0)); |
| double Inoise_4ns = fc->Integral(-4, 4)/hp1d->GetBinWidth(1); |
| double R4ns = Icherenkovs_4ns/Inoise_4ns; |
| double Icherenkovs_2ns = f_integrate->Integral(-2, 2)/hp1d->GetBinWidth(1); |
| fc->SetParameter(0, f_fit->GetParameter(0)); |
| double Inoise_2ns = fc->Integral(-2, 2)/hp1d->GetBinWidth(1); |
| double R2ns = Icherenkovs_2ns/Inoise_2ns; |
| //~ printf("ICherenkov = %lf | IAll = %lf | Ientr = %lf | Ihist = %lf\n", Icherenkovs, Iall, Ientr, Ihist); |
| printf("Icherenkovs_4ns = %.0lf\n", Icherenkovs_4ns); |
| //~ printf("TF1 -> S/N = %lf || TH1F(e) -> S/N = %lf || TH1F(i) -> S/N = %lf\n", Rsn, Rsne, Rsnh); |
| //~ printf("S/N (All) = %lf\n", Rsnh); |
| printf("S/N (10ns) = %.2lf\n", R10ns); |
| printf("S/N (4 ns) = %.2lf\n", R4ns); |
| printf("S/N (2 ns) = %.2lf\n", R2ns); |
| leg[++legi] = new TLegend(0.12,0.4,0.43,0.925); |
| leg[legi]->SetFillColor(0); leg[legi]->SetBorderSize(1); leg[legi]->SetTextSize(0.05); leg[legi]->SetTextAlign(12); |
| sprintf(fullname, "FWHM_fit = %.0lf ps", 1000*FWHMc); |
| //~ leg[legi]->AddEntry((TF1*)f_fit->Clone(), fullname, "L"); |
| leg[legi]->AddEntry((TF1*)f_fit->Clone(), fullname, ""); |
| sprintf(fullname, "FWHM_c = %.0lf ps", 1000*f_fit->GetParameter(6)*2.35*sqrt(2)); |
| leg[legi]->AddEntry((TF1*)f_fit->Clone(), fullname, ""); |
| //~ sprintf(fullname, "S/N (#pm10ns) = %.1lf", R10ns); |
| //~ leg[legi]->AddEntry((TF1*)f_fit->Clone(), fullname, ""); |
| //~ sprintf(fullname, "S/N (#pm 4ns) = %.1lf", R4ns); |
| //~ leg[legi]->AddEntry((TF1*)f_fit->Clone(), fullname, ""); |
| //~ sprintf(fullname, "S/N (#pm 2ns) = %.1lf", R2ns); |
| //~ leg[legi]->AddEntry((TF1*)f_fit->Clone(), fullname, ""); |
| //kobayashi |
| sprintf(fullname, "R_w = %.2f" , pw); |
| leg[legi]->AddEntry((TF1*)f_fit->Clone(), fullname, ""); |
| sprintf(fullname, "R_m = %.2f" , pm); |
| leg[legi]->AddEntry((TF1*)f_fit->Clone(), fullname, ""); |
| sprintf(fullname, "R_c = %.2f" , pc); |
| leg[legi]->AddEntry((TF1*)f_fit->Clone(), fullname, ""); |
| sprintf(fullname, "R_w&m = %.2f" , rate); |
| leg[legi]->AddEntry((TF1*)f_fit->Clone(), fullname, ""); |
| sprintf(fullname, "R_sum = %.2f" , sumrate); |
| leg[legi]->AddEntry((TF1*)f_fit->Clone(), fullname, ""); |
| sprintf(fullname, "R_w&m/sum = %.2f" , rate/sumrate); |
| leg[legi]->AddEntry((TF1*)f_fit->Clone(), fullname, ""); |
| leg[legi]->Draw(); |
| if(draw_cuts) { |
| sprintf(hname, "htdcdiff_cut"); |
| hp1dcut = DrTH1F(dir, hname, ""); |
| hp1dcut->Rebin(rebin_tdcs); |
| hp1dcut->SetLineColor(kRed); |
| hp1dcut->DrawClone("SAME"); |
| sprintf(hname, "htdcdiff_cut_2"); |
| hp1dcut = DrTH1F(dir, hname, ""); |
| hp1dcut->Rebin(rebin_tdcs); |
| hp1dcut->SetLineColor(kGreen); |
| hp1dcut->DrawClone("SAME"); |
| } |
| sprintf(fullname, "gif/f_%s.gif", fname); c[cc]->SaveAs(fullname); |
| sprintf(fullname, "eps/f_%s.eps", fname); c[cc]->SaveAs(fullname); |
| cout<< "maximum x value = " << hp1d->GetXaxis()->GetBinCenter( hp1d->GetMaximumBin())<<endl; |
| if(batch_q) gSystem->Exit(1); |
| } |
| // ------------------------------------------------------------------- |
| if( strchr(plopt, 'd') != NULL ) { |
| DrSetDrawStyle(0.05); |
| gStyle->SetOptStat("e"); |
| //~ gStyle->SetOptStat(0); |
| gStyle->SetOptFit(1); |
| //~ gStyle->SetOptFit(0); |
| gStyle->SetPadRightMargin(0.03); |
| gStyle->SetPadTopMargin(0.05); |
| gStyle->SetPadBottomMargin(0.12); |
| gStyle->SetStatFontSize(0.05); |
| gStyle->SetStatX(0.97); |
| gStyle->SetStatY(0.95); |
| c[++cc] = new TCanvas("d", "d", 0, 0, 720, 400); |
| //~ c[cc]->Divide(2,2); |
| int draw_cuts = 0; |
| int rebin_tdcs = 1; |
| double drawmin = -10; |
| double drawmax = +10; |
| //~ double fitmin = inmin; |
| //~ double fitmax = inmax; |
| double fitmin = -10; |
| double fitmax = 10; |
| double fitcenter = 0.0; |
| double HalfMax, MinHalfMax, MaxHalfMax, FWHM, FWHMc; |
| int ccccdi = 0; |
| int ich = 0; |
| TF1 *f_fit; |
| TF1 *f_integrate; |
| TF1 *fc = new TF1("fc", "pol0(0)"); |
| TF1 *fcg = new TF1("fcg", "pol0(0)+gaus(1)"); fcg->SetNpx(300); |
| fcg->SetParName(0,"Const"); fcg->SetParName(1,"G_Const"); |
| fcg->SetParName(2,"G_Mean" ); fcg->SetParName(3,"G_Sigma" ); |
| TF1 *fcgg = new TF1("fcgg", "pol0(0)+gaus(1)+gaus(4)"); fcgg->SetNpx(300); |
| fcgg->SetParName(0,"Const"); |
| fcgg->SetParName(1,"G1_Const"); fcgg->SetParName(2,"G1_Mean" ); fcgg->SetParName(3,"G1_Sigma" ); |
| fcgg->SetParName(4,"G2_Const"); fcgg->SetParName(5,"G2_Mean" ); fcgg->SetParName(6,"G2_Sigma" ); |
| TF1 *fcggg = new TF1("fcggg", "pol0(0)+gaus(1)+gaus(4)+gaus(7)"); fcggg->SetNpx(300); |
| fcggg->SetParName(0,"Const"); |
| fcggg->SetParName(1,"G1_Const"); fcggg->SetParName(2,"G1_Mean" ); fcggg->SetParName(3,"G1_Sigma" ); |
| fcggg->SetParName(4,"G2_Const"); fcggg->SetParName(5,"G2_Mean" ); fcggg->SetParName(6,"G2_Sigma" ); |
| fcggg->SetParName(7,"G3_Const"); fcggg->SetParName(8,"G3_Mean" ); fcggg->SetParName(9,"G3_Sigma" ); |
| (c[cc]->cd(++ccccdi))->SetLogy(0); |
| //~ sprintf(hname, "htdcdiff"); |
| sprintf(hname, "htdcdiff_cut"); |
| hp1d = DrTH1F(dir, hname, ""); |
| //~ hp1d->Rebin(rebin_tdcs); |
| hp1d->SetLineColor(kBlack); |
| hp1d->GetXaxis()->SetRangeUser(drawmin,drawmax); |
| hp1d->GetYaxis()->SetRangeUser(0.0,hp1d->GetMaximum()*1.1); |
| //~ hp1d->GetYaxis()->SetRangeUser(0.0,hp1d->GetMaximum()*2); |
| sprintf(fullname, ";Coincidence Time [ns];Counts"); |
| hp1d->SetTitle(fullname); |
| //kobayashi |
| //~ fitmin = hp1d->GetXaxis()->GetBinCenter(hp1d->GetMaximumBin()) - hp1d->GetRMS()/15; |
| //~ fitmax = hp1d->GetXaxis()->GetBinCenter(hp1d->GetMaximumBin()) + hp1d->GetRMS()/15; |
| //~ if( strcmp(fname, "run000")==0 ) { |
| //~ f_fit = fcg; |
| //~ f_fit->SetParameters(hp1d->GetMaximum()*0.1, |
| //~ hp1d->GetMaximum()*0.9, 0, 0.05); |
| //~ } else if( strcmp(fname, "run061")==0 || |
| //~ strcmp(fname, "run062")==0 || |
| //~ strcmp(fname, "run063")==0 || |
| //~ strcmp(fname, "run064")==0 || |
| //~ strcmp(fname, "run065")==0) { |
| //~ f_fit = fcgg; |
| //~ f_fit->SetParameters(hp1d->GetMaximum()*0.1, |
| //~ hp1d->GetMaximum()*0.5, 0, 0.05, |
| //~ hp1d->GetMaximum()*0.4, 0, 0.5); |
| //~ } else { |
| //~ f_fit = fcgg; |
| //~ f_fit->SetParameters(hp1d->GetMaximum()*0.25, |
| //~ hp1d->GetMaximum()*0.7, 0, 0.4, |
| //~ hp1d->GetMaximum()*0.05, 0, 0.05); |
| //~ f_fit->SetParLimits(0, 0, hp1d->GetMaximum()); |
| //~ f_fit->SetParLimits(1, 0, hp1d->GetMaximum()); |
| //~ f_fit->SetParLimits(2, fitmin,fitmax); |
| //~ f_fit->SetParLimits(3, 0.2, 1); |
| //~ f_fit->SetParLimits(4, 0, hp1d->GetMaximum()); |
| //~ f_fit->SetParLimits(5, fitmin,fitmax); |
| //~ if( strcmp(fname, "run059")==0 || |
| //~ strcmp(fname, "run060")==0) |
| //~ f_fit->SetParLimits(6, 0.02, 0.3); |
| //~ else |
| //~ f_fit->SetParLimits(6, 0.02, 0.2); |
| //~ |
| //~ } |
| if( strcmp(fitopt, "cgg")==0 ) { |
| f_fit = fcgg; |
| f_fit->SetParameters(hp1d->GetMaximum()*0.1, |
| hp1d->GetMaximum()*0.4, 0, 0.9, |
| hp1d->GetMaximum()*0.5, 0, 0.05); |
| f_fit->SetParLimits(0, 0, hp1d->GetMaximum()); |
| f_fit->SetParLimits(1, hp1d->GetMaximum()*0.01, hp1d->GetMaximum()); |
| f_fit->SetParLimits(2, fitmin,fitmax); |
| f_fit->SetParLimits(3, 0.05, 1); |
| f_fit->SetParLimits(4, hp1d->GetMaximum()*0.01, hp1d->GetMaximum()); |
| f_fit->SetParLimits(5, fitmin,fitmax); |
| f_fit->SetParLimits(6, 0.01, 1); |
| } else if(strcmp(fitopt, "cggg")==0) { |
| f_fit = fcggg; |
| //original |
| //~ f_fit->SetParameters(hp1d->GetMaximum()*0.01, |
| //~ hp1d->GetMaximum()*0.4, 0, 0.4, |
| //~ hp1d->GetMaximum()*0.4, 0, 0.2, |
| //~ hp1d->GetMaximum()*0.1, 0, 0.05); |
| //kobayashi |
| double init_mean = hp1d->GetXaxis()->GetBinCenter(hp1d->GetMaximumBin()); |
| f_fit->SetParameters(hp1d->GetMaximum()*0.0001, |
| hp1d->GetMaximum()*0.01, init_mean , 0.04, |
| hp1d->GetMaximum()*0.01, init_mean + 0.2, 0.03, |
| hp1d->GetMaximum()*0.01, init_mean - 0.2, 0.03); |
| f_fit->SetParLimits(0, 0, hp1d->GetMaximum()); |
| f_fit->SetParLimits(1, 0, hp1d->GetMaximum()); |
| f_fit->SetParLimits(2, fitmin,fitmax); |
| f_fit->SetParLimits(3, 0.001, 1); |
| f_fit->SetParLimits(4, hp1d->GetMaximum()*0.1, hp1d->GetMaximum()); |
| f_fit->SetParLimits(5, fitmin,fitmax); |
| f_fit->SetParLimits(6, 0.005, 3); |
| f_fit->SetParLimits(7, hp1d->GetMaximum()*0.1, hp1d->GetMaximum()); |
| f_fit->SetParLimits(8, fitmin,fitmax); |
| f_fit->SetParLimits(9, 0.02, 5); |
| } else if(strcmp(fitopt, "gg")==0) { |
| f_fit = fgg; |
| f_fit->SetParameters(hp1d->GetMaximum()*0.4, 0, 0.9, |
| hp1d->GetMaximum()*0.5, 0, 0.05); |
| f_fit->SetParLimits(0, hp1d->GetMaximum()*0.01, hp1d->GetMaximum()); |
| f_fit->SetParLimits(1, fitmin,fitmax); |
| f_fit->SetParLimits(2, 0.05, 1); |
| f_fit->SetParLimits(3, hp1d->GetMaximum()*0.01, hp1d->GetMaximum()); |
| f_fit->SetParLimits(4, fitmin,fitmax); |
| f_fit->SetParLimits(5, 0.01, 1); |
| } |
| f_fit->SetRange(fitmin,fitmax); |
| f_fit->SetLineWidth(1); f_fit->SetLineStyle(9); |
| hp1d->Fit(f_fit, "QWW", "", fitmin,fitmax); |
| //~ hp1d->Fit(f_fit, "QWW", "", -0.5,+0.5); |
| //~ fg->SetRange(fitmin,fitmax); fg->SetLineWidth(1.0); |
| //~ fg->SetParameters(f_fit->GetParameter(0+1), f_fit->GetParameter(1+1), f_fit->GetParameter(2+1)); fg->SetLineColor(kMagenta); fg->DrawCopy("LSAME"); |
| //~ fg->SetParameters(f_fit->GetParameter(0+4), f_fit->GetParameter(1+4), f_fit->GetParameter(2+4)); fg->SetLineColor(kGreen); fg->DrawCopy("LSAME"); |
| //~ fg->SetParameters(f_fit->GetParameter(0+7), f_fit->GetParameter(1+7), f_fit->GetParameter(2+7)); fg->SetLineColor(kYellow); fg->DrawCopy("LSAME"); |
| HalfMax = f_fit->GetMaximum(fitmin, fitmax)/2.0; |
| MinHalfMax = f_fit->GetX(HalfMax, fitmin, fitcenter); |
| MaxHalfMax = f_fit->GetX(HalfMax, fitcenter, fitmax); |
| FWHM = MaxHalfMax - MinHalfMax; |
| HalfMax = (f_fit->GetMaximum(fitmin, fitmax) + f_fit->GetParameter(0))/2.0; |
| MinHalfMax = f_fit->GetX(HalfMax, fitmin, f_fit->GetMaximumX(fitmin, fitmax)); |
| MaxHalfMax = f_fit->GetX(HalfMax, f_fit->GetMaximumX(fitmin, fitmax), fitmax); |
| FWHMc = MaxHalfMax - MinHalfMax; |
| //~ printf("FWHM = %lf ns | FWHMc = %lf ns\n", FWHM, FWHMc); |
| printf("(d) FWHM (peak only) = %.3lf ns\n", FWHMc); |
| f_integrate = fgg; |
| for(int i=0; i<6; i++) f_integrate->SetParameter(i, f_fit->GetParameter(i+1)); |
| //~ for(int i=0; i<9; i++) f_integrate->SetParameter(i, f_fit->GetParameter(i+1)); |
| //~ fgg->SetRange(drawmin, drawmax); fgg->SetNpx(300); fgg->SetLineColor(kBlue); fgg->SetLineWidth(1); fgg->DrawClone("LSAME"); |
| double Icherenkovs = f_integrate->Integral(drawmin, drawmax)/hp1d->GetBinWidth(1); |
| double Iall = f_fit->Integral(fitmin, fitmax)/hp1d->GetBinWidth(1); |
| double Rsn = Icherenkovs/(Iall-Icherenkovs); |
| //~ double Ientr = hp1d->GetEntries()*hp1d->GetBinWidth(1); |
| double Ientr = hp1d->GetEntries(); |
| double Rsne = Icherenkovs/(Ientr-Icherenkovs); |
| //~ double Ihist = hp1d->Integral(1, hp1d->GetNbinsX()-1)*hp1d->GetBinWidth(1); |
| double Ihist = hp1d->Integral(1, hp1d->GetNbinsX()-1); |
| double Rsnh = Icherenkovs/(Ihist-Icherenkovs); |
| double Icherenkovs_10ns = f_integrate->Integral(-10, 10)/hp1d->GetBinWidth(1); |
| fc->SetParameter(0, f_fit->GetParameter(0)); |
| double Inoise_10ns = fc->Integral(-10, 10)/hp1d->GetBinWidth(1); |
| double R10ns = Icherenkovs_10ns/Inoise_10ns; |
| double Icherenkovs_4ns = f_integrate->Integral(-4, 4)/hp1d->GetBinWidth(1); |
| fc->SetParameter(0, f_fit->GetParameter(0)); |
| double Inoise_4ns = fc->Integral(-4, 4)/hp1d->GetBinWidth(1); |
| double R4ns = Icherenkovs_4ns/Inoise_4ns; |
| double Icherenkovs_2ns = f_integrate->Integral(-2, 2)/hp1d->GetBinWidth(1); |
| fc->SetParameter(0, f_fit->GetParameter(0)); |
| double Inoise_2ns = fc->Integral(-2, 2)/hp1d->GetBinWidth(1); |
| double R2ns = Icherenkovs_2ns/Inoise_2ns; |
| //~ printf("ICherenkov = %lf | IAll = %lf | Ientr = %lf | Ihist = %lf\n", Icherenkovs, Iall, Ientr, Ihist); |
| printf("Icherenkovs_4ns = %.0lf\n", Icherenkovs_4ns); |
| //~ printf("TF1 -> S/N = %lf || TH1F(e) -> S/N = %lf || TH1F(i) -> S/N = %lf\n", Rsn, Rsne, Rsnh); |
| //~ printf("S/N (All) = %lf\n", Rsnh); |
| printf("S/N (10ns) = %.2lf\n", R10ns); |
| printf("S/N (4 ns) = %.2lf\n", R4ns); |
| printf("S/N (2 ns) = %.2lf\n", R2ns); |
| //~ #define USE_NOISE_FILE |
| #ifdef USE_NOISE_FILE |
| //get ROOT file with histograms |
| char fnameroot[1024]; |
| TFile * rootfile2; |
| TDirectory *dir2; |
| //~ sprintf(fname, "run054"); |
| sprintf(fname, "run_309"); |
| sprintf(fnameroot, "root/%s.root", fname); |
| rootfile2 = (TFile *) gROOT->FindObject(fname); |
| if(rootfile2==NULL) rootfile2 = new TFile(fnameroot); |
| if(rootfile2==NULL) { |
| printf("Cannot open root file 2 %s!!!\n",fnameroot); |
| return; |
| } |
| dir2 = (TDirectory*) rootfile2; |
| sprintf(hname, "htdcdiff"); |
| hp1dcut = DrTH1F(dir2, hname, ""); |
| hp1dcut->SetLineColor(40); |
| hp1dcut->SetLineStyle(2); |
| hp1dcut->DrawClone("SAME"); |
| leg[++legi] = new TLegend(0.125,0.5,0.425,0.925); |
| leg[legi]->SetFillColor(0); leg[legi]->SetBorderSize(1); leg[legi]->SetTextSize(0.05); leg[legi]->SetTextAlign(12); |
| leg[legi]->AddEntry((TH1F*)hp1d->Clone(), "With source", "L"); |
| leg[legi]->AddEntry((TH1F*)hp1dcut->Clone(), "W/o source", "L"); |
| #else |
| leg[++legi] = new TLegend(0.125,0.625,0.425,0.925); |
| leg[legi]->SetFillColor(0); leg[legi]->SetBorderSize(1); leg[legi]->SetTextSize(0.05); leg[legi]->SetTextAlign(12); |
| #endif |
| sprintf(fullname, "FWHM = %.0lf ps", 1000*FWHMc); |
| leg[legi]->AddEntry((TF1*)f_fit->Clone(), fullname, "L"); |
| sprintf(fullname, "S/N (#pm10ns) = %.1lf", R10ns); |
| leg[legi]->AddEntry((TF1*)f_fit->Clone(), fullname, ""); |
| sprintf(fullname, "S/N (#pm 4ns) = %.1lf", R4ns); |
| leg[legi]->AddEntry((TF1*)f_fit->Clone(), fullname, ""); |
| sprintf(fullname, "S/N (#pm 2ns) = %.1lf", R2ns); |
| leg[legi]->AddEntry((TF1*)f_fit->Clone(), fullname, ""); |
| leg[legi]->Draw(); |
| if(draw_cuts) { |
| sprintf(hname, "htdcdiff_cut"); |
| hp1dcut = DrTH1F(dir, hname, ""); |
| hp1dcut->Rebin(rebin_tdcs); |
| hp1dcut->SetLineColor(kRed); |
| hp1dcut->DrawClone("SAME"); |
| sprintf(hname, "htdcdiff_cut_2"); |
| hp1dcut = DrTH1F(dir, hname, ""); |
| hp1dcut->Rebin(rebin_tdcs); |
| hp1dcut->SetLineColor(kGreen); |
| hp1dcut->DrawClone("SAME"); |
| } |
| sprintf(fullname, "gif/d_%s.gif", fname); c[cc]->SaveAs(fullname); |
| sprintf(fullname, "eps/d_%s.eps", fname); c[cc]->SaveAs(fullname); |
| if(batch_q) gSystem->Exit(1); |
| } |
| // ------------------------------------------------------------------- |
| if( strchr(plopt, 'c') != NULL ) { |
| //~ gStyle->SetOptStat(1111); |
| //~ gStyle->SetOptFit(0); |
| c[++cc] = new TCanvas("c", "c", 0, 0, 900, 700); |
| //~ c[cc]->Divide(2,2); |
| int ccccdi = 0; |
| (c[cc]->cd(++ccccdi))->SetLogz(1); |
| sprintf(hname, "htdccor"); |
| hp2d = DrTH2F(dir, hname, ""); |
| //~ hp2d->GetYaxis()->SetRangeUser(0,1500); |
| //~ sprintf(fullname, "%s;QDC Reference 1275 keV; QDC Reference Coincidence", fname); |
| //~ hp2d->SetTitle(fullname); |
| hp2d->DrawClone("COLZ"); |
| //~ (c[cc]->cd(++ccccdi))->SetLogz(1); |
| //~ sprintf(hname, "hcor%d",0); |
| //~ hp2d = DrTH2F(dir, hname, ""); |
| //~ hp2d->DrawClone("COLZ"); |
| //~ |
| //~ (c[cc]->cd(++ccccdi))->SetLogz(1); |
| //~ sprintf(hname, "hcor%d",1); |
| //~ hp2d = DrTH2F(dir, hname, ""); |
| //~ hp2d->DrawClone("COLZ"); |
| //~ |
| //~ |
| //~ (c[cc]->cd(++ccccdi))->SetLogz(1); |
| //~ sprintf(hname, "hdiffcor_%d_%d",0,1); |
| //~ hp2d = DrTH2F(dir, hname, ""); |
| //~ hp2d->DrawClone("COLZ"); |
| //~ |
| //~ (c[cc]->cd(++ccccdi))->SetLogz(1); |
| //~ sprintf(hname, "hdiffcor_%d_%d",1,0); |
| //~ hp2d = DrTH2F(dir, hname, ""); |
| //~ hp2d->DrawClone("COLZ"); |
| sprintf(fullname, "gif/c_%s.gif", fname); c[cc]->SaveAs(fullname); |
| } |
| // ------------------------------------------------------------------------------- |
| // ------------------------------------------------------------------- |
| if( strchr(plopt, 't') != NULL ) { |
| gStyle->SetOptStat(1111); |
| //~ gStyle->SetOptFit(0); |
| c[++cc] = new TCanvas("c", "c", 0, 0, 700, 400); |
| //~ c[cc]->Divide(2,2); |
| double drawmin = -1; |
| double drawmax = 2; |
| double fitmin = -1; |
| double fitmax = 0.75; |
| double fitcenter = 0.0; |
| double HalfMax, MinHalfMax, MaxHalfMax, FWHM; |
| int ccccdi = 0; |
| //~ (c[cc]->cd(++ccccdi))->SetLogy(1); |
| sprintf(hname, "hctdc%d", 0); |
| hp1d = DrTH1F(dir, hname, ""); |
| hp1d->SetTitle("Vov = 1.5V; Time [ns];"); |
| hp1d->GetXaxis()->SetRangeUser(drawmin,drawmax); |
| f_fit = fgg; |
| f_fit->SetParameters(hp1d->GetMaximum()*0.9, 0, 0.1, |
| hp1d->GetMaximum()*0.1, 0, 0.5); |
| //~ f_fit->SetParLimits(1, 0, hp1d->GetMaximum()); |
| //~ f_fit->SetParLimits(2, fitmin,fitmax); |
| //~ f_fit->SetParLimits(3, 0.2, 1); |
| //~ f_fit->SetParLimits(4, 0, hp1d->GetMaximum()); |
| //~ f_fit->SetParLimits(5, fitmin,fitmax); |
| f_fit->SetRange(fitmin,fitmax); |
| f_fit->SetLineWidth(1); |
| hp1d->Fit(f_fit, "Q", "", fitmin,fitmax); |
| HalfMax = f_fit->GetMaximum(fitmin, fitmax)/2.0; |
| MinHalfMax = f_fit->GetX(HalfMax, fitmin, fitcenter); |
| MaxHalfMax = f_fit->GetX(HalfMax, fitcenter, fitmax); |
| FWHM = MaxHalfMax - MinHalfMax; |
| printf("FWHM = %.3lf ns\n", FWHM); |
| fg->SetRange(-2,5); fg->SetLineWidth(1.0); |
| fg->SetParameters(f_fit->GetParameter(0), f_fit->GetParameter(1), f_fit->GetParameter(2)); |
| fg->SetLineColor(kGreen); fg->DrawClone("LSAME"); |
| fg->SetParameters(f_fit->GetParameter(0+3), f_fit->GetParameter(1+3), f_fit->GetParameter(2+3)); |
| fg->SetLineColor(kMagenta); fg->DrawClone("LSAME"); |
| sprintf(fullname, "gif/t_%s.gif", fname); c[cc]->SaveAs(fullname); |
| sprintf(fullname, "eps/t_%s.eps", fname); c[cc]->SaveAs(fullname); |
| } |
| // ------------------------------------------------------------------------------- |
| // ------------------------------------------------------------------- |
| if( strchr(plopt, 'e') != NULL ) { |
| DrSetDrawStyle(0.05); |
| gStyle->SetOptStat("e"); |
| gStyle->SetOptFit(0); |
| gStyle->SetPadRightMargin(0.03); |
| gStyle->SetPadTopMargin(0.05); |
| gStyle->SetPadBottomMargin(0.12); |
| gStyle->SetStatFontSize(0.05); |
| gStyle->SetStatX(0.97); |
| gStyle->SetStatY(0.95); |
| c[++cc] = new TCanvas("e_ref", "e_ref", 0, 0, 720, 400); |
| int spectra_rebin = 0; |
| int yaxis_max = 0; |
| //~ int yaxis_max = 1200; |
| //~ int xaxis_max = 2500; |
| int xaxis_max = 3000; |
| //~ double fitcenter = 1190.; |
| //~ double fitw = 70.; |
| //~ double Cher_min = 10; |
| //~ double Cher_max = 16; |
| double Cher_min = -120; |
| double Cher_max = -110; |
| //~ double const_min = 20; |
| //~ double const_max = 80; |
| double const_min = -250; |
| double const_max = -200; |
| int ccccdi = 0; |
| if( strcmp(fname, "eff003")==0) {fitcenter=760.; fitw=100.;} |
| if( strcmp(fname, "eff004")==0) {fitcenter=1220.; fitw=150.; spectra_rebin=8; yaxis_max=3300;} |
| if( strcmp(fname, "eff005")==0) {fitcenter=1140.; fitw=60.;} |
| if( strcmp(fname, "eff006")==0) {fitcenter=2050.; fitw=60.; xaxis_max=4000;} |
| if( strcmp(fname, "eff012")==0) {Cher_min=13; Cher_max=15;} |
| if( strcmp(fname, "eff013")==0) {Cher_min=12; Cher_max=14;} |
| if( strcmp(fname, "eff014")==0) {Cher_min=12; Cher_max=14;} |
| if( strcmp(fname, "eff015")==0) {Cher_min=12; Cher_max=14;} |
| if( strcmp(fname, "eff016")==0) {Cher_min=12; Cher_max=14;} |
| if( strcmp(fname, "eff017")==0) {Cher_min=12; Cher_max=14;} |
| if( strcmp(fname, "eff018")==0) {Cher_min=12; Cher_max=14;} |
| sprintf(hname, "hadc%d", 0); |
| hp1d = DrTH1F(dir, hname, ""); |
| hp1d->SetTitle("; Charge [200 fC/bin];Counts"); |
| if(spectra_rebin) hp1d->Rebin(spectra_rebin); |
| hp1d->SetLineColor(kBlack); |
| hp1d->GetXaxis()->SetRangeUser(0,xaxis_max); |
| if(yaxis_max) hp1d->GetYaxis()->SetRangeUser(0,yaxis_max); |
| hp1d->Draw(); |
| //~ printf("Photofraction ~ %lf\n", hp1d->Integral(1300,1700)/hp1d->Integral(0,1300)); |
| f_fit = fg; |
| f_fit->SetParameters(hp1d->GetMaximum()*0.1, fitcenter, fitw); |
| f_fit->SetRange(fitcenter-fitw, fitcenter+fitw); |
| f_fit->SetLineWidth(3); |
| hp1d->Fit(f_fit, "0Q", "", fitcenter-fitw, fitcenter+fitw); |
| f_fit->DrawClone("LSAME"); |
| double PP_1sigma_min = f_fit->GetParameter(1)-f_fit->GetParameter(2); |
| double PP_1sigma_max = f_fit->GetParameter(1)+f_fit->GetParameter(2); |
| printf("PPcenter, PPwidth = %.0lf, %.0lf\n", f_fit->GetParameter(1), f_fit->GetParameter(2)); |
| printf("PP+/-1sigma = [%.0lf, %.0lf]\n", PP_1sigma_min, PP_1sigma_max); |
| printf("PP resolution = %.1lf\%% (FWHM = %.1lf\%%)\n", 100*f_fit->GetParameter(2)/f_fit->GetParameter(1), 235*f_fit->GetParameter(2)/f_fit->GetParameter(1)); |
| // -------- 1275keV Compton estimation -------- |
| // COMPTON EDGE |
| //~ TF1 *fcompt = new TF1("fcompt", "[2]*(1 - ConstantStep(((x-[0])/[1]) - (1275.*(2*1275./511./(1+2*1275./511.)))))*(2 + (((x-[0])/[1])/1275.)^2/((1275./511.)^2*(1 - (((x-[0])/[1])/1275.))^2) + (((x-[0])/[1])/1275.)*((((x-[0])/[1])/1275.) - 2/(1275./511.))/(1 - (((x-[0])/[1])/1275.)))/(1275./511.)^2"); |
| //~ TF1 *fcomhi = new TF1("fcomhi", "gaus(0)+fcompt"); |
| //~ fcomhi->SetNpx(500); fcomhi->SetLineWidth(1); fcomhi->SetLineColor(6); |
| //~ double comhi_range_low = 1670.; |
| //~ //double comhi_range_hi = 2130.; |
| //~ double comhi_range_hi = 2070.; |
| //~ fcomhi->SetParameters(2000., 1710., 50., 100, 2, 200); |
| //~ fcomhi->SetRange(comhi_range_low, comhi_range_hi); |
| //~ hp1d->Fit(fcomhi, "0QR"); |
| //~ //fcomhi->DrawClone("LSAME"); |
| //~ |
| //~ fcompt->SetNpx(300); fcompt->SetLineWidth(1); fcompt->SetLineColor(kBlue); fcompt->SetLineStyle(9); |
| //~ fcompt->SetParameter(0, fcomhi->GetParameter(3)); |
| //~ fcompt->SetParameter(1, fcomhi->GetParameter(4)); |
| //~ fcompt->SetParameter(2, fcomhi->GetParameter(5)); |
| //~ fcompt->SetRange(0, comhi_range_hi); |
| //~ fcompt->DrawClone("LSAME"); |
| //~ |
| //~ double IComHi = fcompt->Integral(PP_1sigma_min, PP_1sigma_max)/hp1d->GetBinWidth(1); |
| //~ printf("IComHi = %.0lf\n", IComHi); |
| // G LINEAR G |
| //~ TF1 *fcomhi = new TF1("fcomhi", "gaus(0)+pol0(3)+gaus(4)"); |
| //~ fcomhi->SetNpx(500); fcomhi->SetLineWidth(1); fcomhi->SetLineColor(kBlue); |
| //~ double comhi_range_low = 1700.; |
| //~ double comhi_range_hi = 2150.; |
| //~ fcomhi->SetParameters(2000., 1710., 50., |
| //~ 150., |
| //~ 200., 2150., 100.); |
| //~ fcomhi->SetRange(comhi_range_low, comhi_range_hi); |
| //~ hp1d->Fit(fcomhi, "0QR"); |
| //~ fcomhi->DrawClone("LSAME"); |
| //~ |
| //~ TF1 *fcom_lin = new TF1("fcom_lin", "pol0(0)"); |
| //~ fcom_lin->SetNpx(300); fcom_lin->SetLineWidth(1); fcom_lin->SetLineColor(6); |
| //~ fcom_lin->SetParameter(0, fcomhi->GetParameter(3)); |
| //~ fcom_lin->SetRange(0, 4000); |
| //~ fcom_lin->DrawClone("LSAME"); |
| //~ |
| //~ double IComHi = fcom_lin->Integral(PP_1sigma_min, PP_1sigma_max)/hp1d->GetBinWidth(1); |
| // G LINEAR EXP |
| TF1 *fcomhi = new TF1("fcomhi", "gaus(0) + [3] + [4]*TMath::Exp((x-[5])/[6])"); |
| fcomhi->SetNpx(500); fcomhi->SetLineWidth(1); fcomhi->SetLineColor(6); |
| //double comhi_range_low = 1250.; |
| double comhi_range_low = fitcenter - 1.5*fitw; |
| //double comhi_range_hi = 2100.; |
| //~ fcomhi->SetParameters(2000., fitcenter, fitw, |
| //~ 170., |
| //~ 85., 2000., 100.); |
| fcomhi->SetParameters(800., fitcenter, fitw, |
| 40., |
| 5., comhi_range_hi, 100.); |
| //~ fcomhi->SetParLimits(2, 50., 2000.); |
| fcomhi->SetRange(comhi_range_low, comhi_range_hi); |
| hp1d->Fit(fcomhi, "0QR"); |
| //~ fcomhi->SetRange(0, 4000); |
| fcomhi->DrawClone("LSAME"); |
| TF1 *fcompt = new TF1("fcompt", "[0] + [1]*TMath::Exp((x-[2])/[3])"); |
| fcompt->SetNpx(300); fcompt->SetLineWidth(1); fcompt->SetLineColor(kBlue); fcompt->SetLineStyle(9); |
| fcompt->SetParameter(0, fcomhi->GetParameter(3)); |
| fcompt->SetParameter(1, fcomhi->GetParameter(4)); |
| fcompt->SetParameter(2, fcomhi->GetParameter(5)); |
| fcompt->SetParameter(3, fcomhi->GetParameter(6)); |
| //~ fcompt->SetRange(1000, comhi_range_hi); |
| fcompt->SetRange(400, comhi_range_hi); |
| fcompt->DrawClone("LSAME"); |
| //~ |
| double IComHi = fcompt->Integral(PP_1sigma_min, PP_1sigma_max)/hp1d->GetBinWidth(1); |
| printf("IComHi = %.0lf\n", IComHi); |
| //~ |
| //~ // EXP |
| //~ TF1 *fcomhi = new TF1("fcomhi", "[0] + [1]*TMath::Exp((x-[2])/[3])"); |
| //~ fcomhi->SetNpx(500); fcomhi->SetLineWidth(1); fcomhi->SetLineColor(6); |
| //~ double comhi_range_low = 1800.; |
| //~ double comhi_range_hi = 2000.; |
| //~ fcomhi->SetParameters(150., 1., 2000.,1.); |
| //~ fcomhi->SetRange(comhi_range_low, comhi_range_hi); |
| //~ hp1d->Fit(fcomhi, "R"); |
| //~ fcomhi->SetRange(0, 4000); |
| //~ fcomhi->DrawClone("LSAME"); |
| //~ |
| //~ double IComHi = fcomhi->Integral(PP_1sigma_min, PP_1sigma_max)/hp1d->GetBinWidth(1); |
| //~ printf("IComHi = %.0lf\n", IComHi); |
| // LIN |
| //~ TF1 *fcomhi = new TF1("fcomhi", "pol0"); |
| //~ fcomhi->SetNpx(500); fcomhi->SetLineWidth(1); fcomhi->SetLineColor(6); |
| //~ double comhi_range_low = 1800.; |
| //~ double comhi_range_hi = 1900.; |
| //~ fcomhi->SetParameter(0,150); |
| //~ fcomhi->SetRange(comhi_range_low, comhi_range_hi); |
| //~ hp1d->Fit(fcomhi, "QR"); |
| //~ fcomhi->SetRange(0, 4000); |
| //~ fcomhi->DrawClone("LSAME"); |
| //~ |
| //~ double IComHi = fcomhi->Integral(PP_1sigma_min, PP_1sigma_max)/hp1d->GetBinWidth(1); |
| //~ printf("IComHi = %.0lf\n", IComHi); |
| // -------- 1275keV Compton estimation -------- |
| sprintf(hname, "hadc_cut%d", 0); |
| hp1dcut = DrTH1F(dir, hname, ""); |
| if(spectra_rebin) hp1dcut->Rebin(spectra_rebin); |
| hp1dcut->SetLineColor(kRed); |
| hp1dcut->SetLineColor(40); |
| hp1dcut->SetLineStyle(2); |
| hp1dcut->DrawClone("SAME"); |
| double N511 = hp1dcut->GetEntries(); |
| //~ double N511 = hp1dcut->Integral(PP_1sigma_min-10, PP_1sigma_max+10); |
| leg[++legi] = new TLegend(0.124302, 0.65, 0.6, 0.925134); |
| leg[legi]->SetFillColor(0); leg[legi]->SetBorderSize(1); leg[legi]->SetTextSize(0.05); leg[legi]->SetTextAlign(22); |
| leg[legi]->AddEntry((TH1F*)hp1d->Clone(), "Measurement", "L"); |
| leg[legi]->AddEntry((TH1F*)hp1dcut->Clone(), "#pm1 #sigma Photopeak Cut", "L"); |
| leg[legi]->AddEntry((TF1*)fcompt->Clone(), "1275 keV Compton Estimate", "L"); |
| //~ leg[legi]->Draw(); |
| //~ sprintf(hname, "hadc_cut_2%d", 0); |
| //~ hp1d = DrTH1F(dir, hname, ""); |
| //~ hp1d->SetLineColor(kGreen); |
| //~ hp1d->DrawClone("SAME"); |
| sprintf(fullname, "gif/e_%s.gif", fname); c[cc]->SaveAs(fullname); |
| sprintf(fullname, "eps/e_%s.eps", fname); c[cc]->SaveAs(fullname); |
| c[++cc] = new TCanvas("e_sipm", "e_sipm", 0, 470, 720, 300); |
| int ch_Sprttype = 8; |
| (c[cc]->cd(1))->SetLogy(1); |
| sprintf(hname, "htdc%d", ch_Sprttype); |
| hp1d = DrTH1F(dir, hname, ""); |
| hp1d->SetTitle("; Time [ns];Counts"); |
| //~ hp1d->Rebin(4); |
| hp1d->SetLineColor(kBlack); |
| //~ hp1d->GetXaxis()->SetRangeUser(0,80);//original |
| hp1d->GetXaxis()->SetRangeUser(-400,50); |
| hp1d->GetYaxis()->SetRangeUser(0.1,hp1d->GetMaximum()*2); |
| hp1d->DrawClone(); |
| sprintf(hname, "htdc_cut%d", ch_Sprttype); |
| hp1d = DrTH1F(dir, hname, ""); |
| //~ hp1d->Rebin(4); |
| hp1d->SetLineColor(kRed); |
| TF1 *fc = new TF1("fc", "pol0"); fc->SetNpx(300); |
| fc->SetParameter(0,1); |
| //~ fc->SetParameter(1,-0.1); |
| fc->SetRange(const_min,const_max); |
| hp1d->Fit(fc, "0QWWR"); |
| hp1d->DrawClone("SAME"); |
| fc->SetLineColor(kBlue); |
| fc->DrawClone("LSAME"); |
| double Ntdc = hp1d->Integral(hp1d->FindBin(Cher_min), hp1d->FindBin(Cher_max)); |
| double Nbckg = fc->Integral(Cher_min,Cher_max)/hp1d->GetBinWidth(1); |
| printf("fc par(0) = %lf | Nbckg = %.0lf\n", fc->GetParameter(0), Nbckg); |
| //~ sprintf(hname, "htdc_cut_2%d", 1); |
| //~ hp1d = DrTH1F(dir, hname, ""); |
| //~ hp1d->SetLineColor(kGreen); |
| //~ hp1d->DrawClone("SAME"); |
| printf("N511 = %.0lf | Ntdc = %.0lf | R = %.2lf \%% | R_1 = %.2lf \%% | R_2 = %.2lf \%%\n", N511, Ntdc, 100*Ntdc/N511, 100*(Ntdc-Nbckg)/N511, 100*(Ntdc-Nbckg)/(N511-IComHi)); |
| sprintf(fullname, "gif/e2_%s.gif", fname); c[cc]->SaveAs(fullname); |
| sprintf(fullname, "eps/e2_%s.eps", fname); c[cc]->SaveAs(fullname); |
| int kobayashi =1; |
| if(kobayashi){ |
| double Nnohit = hp1d->Integral(hp1d->FindBin(-715), hp1d->FindBin(-685)); |
| printf("N511 = %.0lf | Nnohit = %.0lf | R = %.2lf \%% | R_1 = %.2lf \%% | R_2 = %.2lf \%%\n", N511, Nnohit, 100*(N511-Nnohit)/N511, 100*((N511-Nnohit)-Nbckg)/N511, 100*((N511-Nnohit)-Nbckg)/(N511-IComHi)); |
| } |
| //~ (c[cc]->cd(++ccccdi))->SetLogy(1); |
| //~ sprintf(hname, "hadc%d", 1); |
| //~ hp1d = DrTH1F(dir, hname, ""); |
| //~ hp1d->SetLineColor(kBlack); |
| //~ hp1d->GetXaxis()->SetRangeUser(0,2000); |
| //~ hp1d->DrawClone(); |
| //~ |
| //~ sprintf(hname, "hadc_cut%d", 1); |
| //~ hp1d = DrTH1F(dir, hname, ""); |
| //~ hp1d->SetLineColor(kRed); |
| //~ hp1d->DrawClone("SAME"); |
| //~ |
| //~ sprintf(hname, "hadc_cut_2%d", 1); |
| //~ hp1d = DrTH1F(dir, hname, ""); |
| //~ hp1d->SetLineColor(kGreen); |
| //~ hp1d->DrawClone("SAME"); |
| //~ sprintf(fullname, "gif/e_%s.gif", fname); c[cc]->SaveAs(fullname); |
| //~ sprintf(fullname, "eps/e_%s.eps", fname); c[cc]->SaveAs(fullname); |
| } |
| // ------------------------------------------------------------------- |
| if( strchr(plopt, 'r') != NULL ) { |
| //~ gStyle->SetOptStat(1111); |
| gStyle->SetOptStat(0); |
| gStyle->SetOptFit(0); |
| c[++cc] = new TCanvas("e", "e", 0, 0, 1200, 450); |
| c[cc]->Divide(3,1); |
| int spectra_rebin = 0; |
| int yaxis_max = 0; |
| int xaxis_max = 3000; |
| double fitcenter = 700.; |
| double fitw = 60.; |
| double Cher_min = 4; |
| double Cher_max = 16; |
| double const_min = Cher_max; |
| double const_max = 80; |
| int ccccdi = 0; |
| if( strcmp(fname, "eff003")==0) {fitcenter=760.; fitw=100.;} |
| if( strcmp(fname, "eff004")==0) {fitcenter=1220.; fitw=150.; spectra_rebin=8; yaxis_max=3300;} |
| if( strcmp(fname, "eff005")==0) {fitcenter=1140.; fitw=60.;} |
| if( strcmp(fname, "eff006")==0) {fitcenter=2050.; fitw=60.; xaxis_max=4000;} |
| if( strcmp(fname, "eff007")==0) {fitcenter=710.; fitw=50.;} |
| if( strcmp(fname, "eff009")==0) {fitcenter=900.; fitw=60.; xaxis_max=2000;} |
| (c[cc]->cd(++ccccdi))->SetLogy(1); |
| sprintf(hname, "hadc%d", 0); |
| hp1d = DrTH1F(dir, hname, ""); |
| hp1d->SetTitle("Reference Coincidence; Charge [200 fC/bin];"); |
| if(spectra_rebin) hp1d->Rebin(spectra_rebin); |
| hp1d->SetLineColor(kBlack); |
| hp1d->GetXaxis()->SetRangeUser(0,xaxis_max); |
| if(yaxis_max) hp1d->GetYaxis()->SetRangeUser(0.5,yaxis_max); |
| f_fit = fg; |
| f_fit->SetParameters(hp1d->GetMaximum()*0.1, fitcenter, fitw); |
| f_fit->SetRange(fitcenter-fitw, fitcenter+fitw); |
| f_fit->SetLineWidth(1); |
| hp1d->Fit(f_fit, "Q", "", fitcenter-fitw, fitcenter+fitw); |
| printf("PP+/-1sigma = [%.0lf, %.0lf]\n", f_fit->GetParameter(1)-f_fit->GetParameter(2), f_fit->GetParameter(1)+f_fit->GetParameter(2)); |
| printf("PP resolution = %.1lf\%% (FWHM = %.1lf\%%)\n", 100*f_fit->GetParameter(2)/f_fit->GetParameter(1), 235*f_fit->GetParameter(2)/f_fit->GetParameter(1)); |
| sprintf(hname, "hadc_cut%d", 0); |
| hp1d = DrTH1F(dir, hname, ""); |
| if(spectra_rebin) hp1d->Rebin(spectra_rebin); |
| hp1d->SetLineColor(kRed); |
| hp1d->DrawClone("SAME"); |
| double N511 = hp1d->GetEntries(); |
| sprintf(hname, "hadc_cut_2%d", 0); |
| hp1d = DrTH1F(dir, hname, ""); |
| hp1d->SetLineColor(kGreen); |
| hp1d->DrawClone("SAME"); |
| //----------------------------------------------------------------------- |
| (c[cc]->cd(++ccccdi))->SetLogy(1); |
| sprintf(hname, "hadc%d", 2); |
| hp1d = DrTH1F(dir, hname, ""); |
| hp1d->SetTitle("Reference 1275 keV; Charge [200 fC/bin];"); |
| //~ if(spectra_rebin) hp1d->Rebin(spectra_rebin); |
| hp1d->SetLineColor(kBlack); |
| //~ hp1d->GetXaxis()->SetRangeUser(0,xaxis_max); |
| //~ if(yaxis_max) hp1d->GetYaxis()->SetRangeUser(0,yaxis_max); |
| hp1d->DrawClone(); |
| sprintf(hname, "hadc_cut%d", 2); |
| hp1d = DrTH1F(dir, hname, ""); |
| if(spectra_rebin) hp1d->Rebin(spectra_rebin); |
| hp1d->SetLineColor(kRed); |
| hp1d->DrawClone("SAME"); |
| sprintf(hname, "hadc_cut_2%d", 2); |
| hp1d = DrTH1F(dir, hname, ""); |
| hp1d->SetLineColor(kGreen); |
| hp1d->DrawClone("SAME"); |
| //----------------------------------------------------------------------- |
| (c[cc]->cd(++ccccdi))->SetLogy(1); |
| sprintf(hname, "htdc%d", 1); |
| hp1d = DrTH1F(dir, hname, ""); |
| hp1d->SetTitle("MPPC Cherenkov; Time [ns];"); |
| //~ hp1d->Rebin(4); |
| hp1d->SetLineColor(kBlack); |
| hp1d->GetXaxis()->SetRangeUser(0,80); |
| hp1d->GetYaxis()->SetRangeUser(0.1,hp1d->GetMaximum()*2); |
| hp1d->DrawClone(); |
| sprintf(hname, "htdc_cut%d", 1); |
| hp1d = DrTH1F(dir, hname, ""); |
| //~ hp1d->Rebin(4); |
| hp1d->SetLineColor(kRed); |
| TF1 *fc = new TF1("fc", "pol0"); fc->SetNpx(300); |
| fc->SetParameter(0,1); |
| fc->SetRange(const_min,const_max); |
| hp1d->Fit(fc, "0QWWR"); |
| hp1d->DrawClone("SAME"); |
| fc->SetLineColor(kBlue); |
| fc->DrawClone("LSAME"); |
| double Ntdc = hp1d->Integral(hp1d->FindBin(Cher_min), hp1d->FindBin(Cher_max)); |
| double Nbckg = fc->Integral(Cher_min,Cher_max)/hp1d->GetBinWidth(1); |
| printf("fc par(0) = %lf | Nbckg = %.0lf\n", fc->GetParameter(0), Nbckg); |
| sprintf(hname, "htdc_cut_2%d", 1); |
| hp1d = DrTH1F(dir, hname, ""); |
| hp1d->SetLineColor(kGreen); |
| hp1d->DrawClone("SAME"); |
| printf("N511 = %.0lf | Ntdc = %.0lf | R = %lf\n", N511, Ntdc, Ntdc/N511); |
| printf("R_1 = %lf\n", (Ntdc-Nbckg)/N511); |
| //~ (c[cc]->cd(++ccccdi))->SetLogy(1); |
| //~ sprintf(hname, "hadc%d", 1); |
| //~ hp1d = DrTH1F(dir, hname, ""); |
| //~ hp1d->SetLineColor(kBlack); |
| //~ hp1d->GetXaxis()->SetRangeUser(0,2000); |
| //~ hp1d->DrawClone(); |
| //~ |
| //~ sprintf(hname, "hadc_cut%d", 1); |
| //~ hp1d = DrTH1F(dir, hname, ""); |
| //~ hp1d->SetLineColor(kRed); |
| //~ hp1d->DrawClone("SAME"); |
| //~ |
| //~ sprintf(hname, "hadc_cut_2%d", 1); |
| //~ hp1d = DrTH1F(dir, hname, ""); |
| //~ hp1d->SetLineColor(kGreen); |
| //~ hp1d->DrawClone("SAME"); |
| sprintf(fullname, "gif/e_%s.gif", fname); c[cc]->SaveAs(fullname); |
| sprintf(fullname, "eps/e_%s.eps", fname); c[cc]->SaveAs(fullname); |
| } |
| // ------------------------------------------------------------------------------- |
| // ------------------------------------------------------------------- |
| if( strchr(plopt, 'p') != NULL ) { |
| DrSetDrawStyle(0.05); |
| gStyle->SetOptStat("e"); |
| gStyle->SetOptFit(0); |
| gStyle->SetPadRightMargin(0.03); |
| gStyle->SetPadTopMargin(0.05); |
| gStyle->SetPadBottomMargin(0.12); |
| gStyle->SetStatFontSize(0.05); |
| gStyle->SetStatX(0.97); |
| gStyle->SetStatY(0.95); |
| c[++cc] = new TCanvas("Print", "Print", 0, 0, 720, 400); |
| int spectra_rebin = 0; |
| int yaxis_max = 1000; |
| int xaxis_max = 1200; |
| double Cher_min = 10; |
| double Cher_max = 16; |
| double const_min = 20; |
| double const_max = 80; |
| int ccccdi = 0; |
| sprintf(hname, "hadc%d", 0); |
| hp1d = DrTH1F(dir, hname, ""); |
| hp1d->SetTitle("; Charge [200 fC/bin];Counts"); |
| if(spectra_rebin) hp1d->Rebin(spectra_rebin); |
| hp1d->SetLineColor(kBlack); |
| hp1d->GetXaxis()->SetRangeUser(0,xaxis_max); |
| if(yaxis_max) hp1d->GetYaxis()->SetRangeUser(0,yaxis_max); |
| hp1d->Draw(); |
| sprintf(hname, "hadc_cut%d", 0); |
| hp1dcut = DrTH1F(dir, hname, ""); |
| if(spectra_rebin) hp1dcut->Rebin(spectra_rebin); |
| hp1dcut->SetLineColor(kRed); |
| hp1dcut->Draw("SAME"); |
| sprintf(fullname, "gif/p_%s.gif", fname); c[cc]->SaveAs(fullname); |
| sprintf(fullname, "eps/p_%s.eps", fname); c[cc]->SaveAs(fullname); |
| } |
| // ------------------------------------------------------------------- |
| if( strchr(plopt, 'b') != NULL ) { |
| gStyle->SetOptStat(0); |
| gStyle->SetOptFit(0); |
| c[++cc] = new TCanvas("b", "b", 0, 0, 1200, 700); |
| c[cc]->Divide(2,2); |
| int ccccdi = 0; |
| int ich; |
| /* |
| // ------------------------------------------------------------ |
| ich = 0; |
| (c[cc]->cd(++ccccdi))->SetLogy(1); |
| sprintf(hname, "htdc%d", ich); |
| hp1d = DrTH1F(dir, hname, ""); |
| hp1d->SetTitle(hname); |
| //~ hp1d->GetXaxis()->SetRangeUser(0,2000); |
| //~ hp1d->GetYaxis()->SetRangeUser(0.9,hp1d->GetMaximum()*1.1); |
| hp1d->SetLineColor(kBlack); |
| hp1d->DrawClone(); |
| // ------------------------------------------------------------ |
| ich = 1; |
| (c[cc]->cd(++ccccdi))->SetLogy(1); |
| sprintf(hname, "htdc%d", ich); |
| hp1d = DrTH1F(dir, hname, ""); |
| hp1d->SetTitle(hname); |
| //~ hp1d->GetXaxis()->SetRangeUser(0,2000); |
| //~ hp1d->GetYaxis()->SetRangeUser(0.9,hp1d->GetMaximum()*1.1); |
| hp1d->SetLineColor(kBlack); |
| hp1d->DrawClone(); |
| */ |
| // -------------------------- qdc 0 ---------------------------------- |
| ich = 0; |
| (c[cc]->cd(++ccccdi))->SetLogy(1); |
| /* |
| sprintf(hname, "hadc%d", ich); |
| hp1d = DrTH1F(dir, hname, ""); |
| hp1d->SetTitle("SiPM;Charge [200 fC/bin]"); |
| hp1d->GetXaxis()->SetRangeUser(0,1000); |
| //~ hp1d->GetYaxis()->SetRangeUser(0.9,hp1d->GetMaximum()*1.1); |
| hp1d->SetLineColor(kBlack); |
| hp1d->DrawClone(); |
| */ |
| TLegend *leg0 = new TLegend(0.57,0.66,0.88,0.88); |
| leg0->SetFillColor(0); |
| leg0->SetBorderSize(1); |
| leg0->SetTextSize(0.05); |
| leg0->SetTextAlign(22); |
| sprintf(hname, "hadc%d", ich); |
| TH1F* hADC = DrTH1F(dir, hname, ""); |
| hADC->SetTitle("SiPM;Charge [200 fC/bin]"); |
| hADC->GetXaxis()->SetRangeUser(0,1000); |
| hADC->SetLineColor(kBlack); |
| hADC->DrawClone(); |
| int dbgprint=1; |
| const int nPeaks=3; |
| double pSigma=10; |
| double pThr=0.005; |
| TSpectrum *sADC = new TSpectrum(nPeaks,0.3); |
| sADC->Search(hADC, pSigma,"",pThr); |
| int foundNPeaks = sADC->GetNPeaks(); |
| float *foundPeakX = sADC->GetPositionX(); |
| float *foundPeakY = sADC->GetPositionY(); |
| if(1 < foundNPeaks) { |
| //void Sort(Int_t n1, const Float_t *a, Int_t *index, Bool_t down) |
| int sortedPeakIndex[nPeaks]; |
| TMath::Sort(foundNPeaks, foundPeakX, sortedPeakIndex, 0); |
| if(dbgprint) { |
| printf("foundNPeaks = %d\n",foundNPeaks); |
| for(int i=0; i<foundNPeaks; i++) printf("Peak[%d] = %f\n",i, foundPeakX[sortedPeakIndex[i]]); |
| } |
| float peakMidpointX[nPeaks+1]; |
| float peakMidpointY[nPeaks+1]; |
| peakMidpointX[0] = 0; peakMidpointY[0] = 1; |
| for(int i=1; i<foundNPeaks; i++) { |
| peakMidpointX[i] = (foundPeakX[sortedPeakIndex[i]] + foundPeakX[sortedPeakIndex[i-1]])/2.0; |
| peakMidpointY[i] = 1; |
| if(dbgprint) printf("peakMidpointX[%d] = %f\n",i, peakMidpointX[i]); |
| } |
| peakMidpointX[foundNPeaks] = 1120; peakMidpointY[foundNPeaks] = 1; |
| if(dbgprint) printf("peakMidpointX[%d] = %f\n",foundNPeaks, peakMidpointX[foundNPeaks]); |
| TPolyMarker *pmMidpoints = new TPolyMarker(nPeaks+1, peakMidpointX, peakMidpointY); |
| pmMidpoints->SetMarkerStyle(33); pmMidpoints->SetMarkerColor(9); pmMidpoints->SetMarkerSize(2); |
| pmMidpoints->Draw("SAME"); |
| //~ fprintf(fp,"peakEvents:\n"); |
| double peakEvents[nPeaks]; |
| for(int i=0; i<foundNPeaks-1; i++) { |
| peakEvents[i] = hADC->Integral(hADC->FindBin(peakMidpointX[i]), hADC->FindBin(peakMidpointX[i+1])); |
| if(dbgprint) printf("I(%.1f, %.1f) = %.1lf\n", peakMidpointX[i], peakMidpointX[i+1], peakEvents[i]); |
| //~ fprintf(fp,"%lf\n", peakEvents[i]); |
| } |
| peakEvents[foundNPeaks-1] = hADC->Integral(hADC->FindBin(peakMidpointX[foundNPeaks-1]), hADC->FindBin(1130.)); |
| if(dbgprint) printf("I(%.1f, %.1f) = %.1lf\n", peakMidpointX[foundNPeaks-1], 1130., peakEvents[foundNPeaks-1]); |
| //~ fprintf(fp,"%lf\n", peakEvents[foundNPeaks-1]); |
| double N0all = -TMath::Log(peakEvents[0]/hADC->GetEntries()); |
| double N01 = peakEvents[1]/peakEvents[0]; |
| double N02 = 2*peakEvents[2]/peakEvents[1]; |
| if(dbgprint) printf("Poisson <N>: N0all -> %.3lf | N01 -> %.3lf | N12 -> %.3lf\n", N0all, N01, N02); |
| sprintf(sbuff, "<N> = %.3lf", N0all); |
| leg0->AddEntry((TH1F*)hADC->Clone(),sbuff, ""); |
| sprintf(sbuff, "1 CPH = %.0lf", foundPeakX[sortedPeakIndex[1]]); |
| leg0->AddEntry((TH1F*)hADC->Clone(),sbuff, ""); |
| leg0->Draw(); |
| } |
| double N_adc_integral = hADC->Integral(hADC->FindBin(peakMidpointX[1]), hADC->FindBin(1000.)); |
| double N_poisson = (1 - TMath::Exp(-N0all))*hADC->GetEntries(); |
| printf("hADC->GetEntries() = %.0lf\n", hADC->GetEntries()); |
| printf("N_adc_integral = %.0lf | N_poisson = %.0lf\n", N_adc_integral, N_poisson); |
| sprintf(hname, "hadc_cut%d", ich); |
| hp1d = DrTH1F(dir, hname, ""); |
| hp1d->SetLineColor(kRed); |
| hp1d->DrawClone("SAME"); |
| // -------------------------- TDC 0 ---------------------------------- |
| (c[cc]->cd(++ccccdi))->SetLogy(1); |
| sprintf(hname, "htdc%d", ich); |
| hp1d = DrTH1F(dir, hname, ""); |
| hp1d->SetTitle("SiPM;Time [ns]"); |
| hp1d->GetXaxis()->SetRangeUser(-5,5); |
| //~ hp1d->GetYaxis()->SetRangeUser(0.9,hp1d->GetMaximum()*1.1); |
| hp1d->SetLineColor(kBlack); |
| hp1d->DrawClone(); |
| printf("hTDC->GetEntries() = %.0lf\n", hp1d->GetEntries()); |
| double N_tdc_integral = hp1d->Integral(hp1d->FindBin(-10), hp1d->FindBin(10)); |
| printf("N_tdc_integral = %.0lf\n", N_tdc_integral); |
| // ----------------------------------------------------------- |
| (c[cc]->cd(++ccccdi))->SetLogy(0); |
| sprintf(hname, "hcor%d", ich); |
| hp2d = DrTH2F(dir, hname, ""); |
| hp2d->SetTitle(";Charge [200 fC/bin];cTime [ns]"); |
| //~ hp1d->GetXaxis()->SetRangeUser(0,2000); |
| //~ hp1d->GetYaxis()->SetRangeUser(0.9,hp1d->GetMaximum()*1.1); |
| //~ hp1d->SetLineColor(kBlack); |
| hp2d->DrawClone("COLZ"); |
| // -------------------------- cTDC 0 ---------------------------------- |
| (c[cc]->cd(++ccccdi))->SetLogy(0); |
| sprintf(hname, "hctdc%d", ich); |
| hp1d = DrTH1F(dir, hname, ""); |
| //~ hp1d->SetTitle("SiPM;cTime [ns]"); |
| //~ hp1d->GetXaxis()->SetRangeUser(-5,5); |
| //~ //hp1d->GetYaxis()->SetRangeUser(0.9,hp1d->GetMaximum()*1.1); |
| hp1d->SetLineColor(kBlack); |
| //~ hp1d->DrawClone(); |
| plotCorTDC(hp1d, "SiPM;cTime [ns]", -0.5, 0.45, -1., 2); |
| printf("hcTDC->GetEntries() = %.0lf\n", hp1d->GetEntries()); |
| double N_ctdc_integral = hp1d->Integral(hp1d->FindBin(-2), hp1d->FindBin(2)); |
| printf("N_ctdc_integral = %.0lf\n", N_ctdc_integral); |
| printf("N_ctdc_integral/N_poisson = %.3lf\n", N_ctdc_integral/N_poisson); |
| printf("N_adc_integral/N_poisson = %.3lf\n", N_adc_integral/N_poisson); |
| printf("N_ctdc_integral/N_adc_integral = %.3lf\n", N_ctdc_integral/N_adc_integral); |
| //~ sprintf(hname, "htdc_cut%d", ich); |
| //~ hp1d = DrTH1F(dir, hname, ""); |
| //~ hp1d->SetLineColor(kRed); |
| //~ hp1d->DrawClone("SAME"); |
| sprintf(fullname, "gif/b_%s.gif", fname); c[cc]->SaveAs(fullname); |
| } |
| // ------------------------------------------------------------------- |
| if( strchr(plopt, 'g') != NULL ) { |
| gStyle->SetOptStat(0); |
| gStyle->SetOptFit(0); |
| c[++cc] = new TCanvas("g", "g", 640, 0, 640, 360); |
| int ccccdi = 0; |
| int ich = 15; |
| (c[cc]->cd(++ccccdi))->SetLogy(0); |
| sprintf(hname, "htdc%d", ich); |
| hp1d = DrTH1F(dir, hname, ""); |
| //~ hp1d->SetTitle("SiPM;cTime [ns]"); |
| //~ hp1d->GetXaxis()->SetRangeUser(-5,5); |
| //~ //hp1d->GetYaxis()->SetRangeUser(0.9,hp1d->GetMaximum()*1.1); |
| hp1d->SetLineColor(kBlack); |
| //~ hp1d->DrawClone(); |
| sprintf(hname, "Trigger(ch.%d)-Trigger(ch.31);Time [ns]", ich); |
| plotCorTDC(hp1d, hname, -0.25, 0.25, -0.5, 0.5); |
| sprintf(fullname, "gif/g_%s.gif", fname); c[cc]->SaveAs(fullname); |
| } |
| // ------------------------------------------------------------------------------- |
| } |
| /cvi/apps/l2d2_easyroc/root/EASIROCtestLinux.dat.root |
|---|
| Cannot display: file marked as a binary type. |
| svn:mime-type = application/octet-stream |
| Property changes: |
| Added: svn:mime-type |
| +application/octet-stream |
| \ No newline at end of property |
| /cvi/apps/l2d2_easyroc/root/EASIROCtestLinux.gif |
|---|
| Cannot display: file marked as a binary type. |
| svn:mime-type = application/octet-stream |
| Property changes: |
| Added: svn:mime-type |
| +application/octet-stream |
| \ No newline at end of property |
| /cvi/apps/l2d2_easyroc/root/EASIROCtestWin.gif |
|---|
| Cannot display: file marked as a binary type. |
| svn:mime-type = application/octet-stream |
| Property changes: |
| Added: svn:mime-type |
| +application/octet-stream |
| \ No newline at end of property |
| /cvi/apps/l2d2_easyroc/root/EASIROCtestWin.root |
|---|
| Cannot display: file marked as a binary type. |
| svn:mime-type = application/octet-stream |
| Property changes: |
| Added: svn:mime-type |
| +application/octet-stream |
| \ No newline at end of property |
| /cvi/apps/l2d2_easyroc/sender.c |
|---|
| 0,0 → 1,247 |
| #include "sender.h" |
| #define binary(bit) strtol(bit,NULL,2) |
| void SenderInit(){}; |
| void SenderClose(){}; |
| //------------------------------------------------------------------------------------------------------ |
| // Send 1 data & address by UDP |
| void Senderudp_send( unsigned int address, int data){// data: send only 1 data length |
| SiTCPRBCPskeleton(0xff, 0x80, address, 0x1, address); |
| SiTCPsndData[0] = data; |
| memcpy(SiTCPsndBuf+sizeof(struct bcp_header), SiTCPsndData, sizeof SiTCPsndData); |
| int len = 0; |
| len = sendto(SiTCPGetUDPSock(), SiTCPsndBuf, 1 + sizeof(struct bcp_header), 0, |
| (struct sockaddr *)&SiTCPudpAddr, sizeof(SiTCPudpAddr));//important! |
| if(len < 0){ |
| perror("UDP send error"); |
| printf("exit(1);!!!\n"); |
| } |
| SiTCPrcvRBCP_ACK(1); |
| } |
| //------------------------------------------------------------------------------------------------------ |
| // Recv 1 data & address by UDP |
| int Senderudp_recv( unsigned int address, int data){// data: send only 1 data length |
| SiTCPRBCPskeleton(0xff, 0xc0, address, 0x1, address); |
| int len = 0; |
| len = sendto(SiTCPGetUDPSock(), SiTCPsndBuf, 1 + sizeof(struct bcp_header), 0, |
| (struct sockaddr *)&SiTCPudpAddr, sizeof(SiTCPudpAddr));//important! |
| if(len < 0){ |
| perror("UDP recv error"); |
| printf("exit(1);!!!\n"); |
| } |
| int rd_data = 0; |
| rd_data = SiTCPrcvRBCP_ACK(1); |
| // std::cout << rd_data << std::endl; |
| return rd_data; |
| } |
| //------------------------------------------------------------------------------------------------------ |
| // Send 1 packet data & address by UDP |
| void SenderRBCPpacket_send( unsigned int address, |
| unsigned char length, int* data){ |
| printf("enter packet function\n"); |
| SiTCPRBCPskeleton(0xff, 0x80, address, length, address); |
| for(int i=0; i<256; ++i){ |
| SiTCPsndData[i] = data[i];// <- sndData: 0~255 |
| } |
| memcpy(SiTCPsndBuf+sizeof(struct bcp_header), SiTCPsndData, sizeof SiTCPsndData); |
| int len = 0; |
| len = sendto(SiTCPGetUDPSock(), SiTCPsndBuf, sizeof SiTCPsndData + sizeof(struct bcp_header), 0, |
| (struct sockaddr *)&SiTCPudpAddr, sizeof(SiTCPudpAddr));//important! |
| if(len < 0){ |
| perror("UDP send error"); |
| printf("exit(1);!!!\n"); |
| } |
| SiTCPrcvRBCP_ACK(0); |
| } |
| //------------------------------------------------------------------------------------------------------ |
| // Recv 1 packet data & address by UDP |
| void SenderRBCPpacket_recv( unsigned int address, |
| unsigned char length, int* data){ |
| printf("enter packet function\n"); |
| SiTCPRBCPskeleton(0xff, 0xc0, address, length, address); |
| int len = 0; |
| len = sendto(SiTCPGetUDPSock(), SiTCPsndBuf, sizeof SiTCPsndData + sizeof(struct bcp_header), 0, |
| (struct sockaddr *)&SiTCPudpAddr, sizeof(SiTCPudpAddr));//important! |
| if(len < 0){ |
| perror("UDP recv error"); |
| printf("exit(1);!!!\n"); |
| } |
| SiTCPrcvRBCP_ACK(1); |
| } |
| //------------------------------------------------------------------------------------------------------ |
| //=============== multi packet sending method =============== |
| void SenderRBCP_multi_packet_send( unsigned int address, |
| unsigned int total_length, int* data){ |
| unsigned int total_packet = ((total_length/255)+1)*2; |
| unsigned int packetNo = 0; |
| printf("------------------ RBCP : register access ------------------\n"); |
| printf("\n"); |
| printf("Start sending packet data"); |
| for(packetNo=0; packetNo<total_packet; ++packetNo){ |
| // SiTCPrcvRBCP_ACK(0); |
| SiTCPRBCPskeleton(0xff, 0x80, address+(packetNo*255), 0xff, address+(packetNo*255)); |
| for(int i=0; i<255; ++i){ |
| SiTCPsndData[i] = data[i+(packetNo*255)];// <- sndData: 0~255 |
| } |
| memcpy(SiTCPsndBuf+sizeof(struct bcp_header), SiTCPsndData, sizeof SiTCPsndData); |
| int len = 0; |
| len = sendto(SiTCPGetUDPSock(), SiTCPsndBuf, sizeof SiTCPsndData + sizeof(struct bcp_header), 0, |
| (struct sockaddr *)&SiTCPudpAddr, sizeof(SiTCPudpAddr));//important! |
| if(len < 0){ |
| perror("Send DAQ Start Signal"); |
| printf("exit(1);!!!\n"); |
| } |
| SiTCPrcvRBCP_ACK(0); |
| // std::cout << SiTCPrcvRBCP_ACK(1) << std::endl; |
| printf("."); |
| } |
| printf("Done!!!\n"); |
| printf("\n"); |
| printf("Number of sent packets = %d\n", packetNo); |
| printf("\n"); |
| } |
| //------------------------------------------------------------------------------------------------------ |
| //--------------------EASIROC MADC sender--------------------------- |
| int Senderread_madc( int data){// data: send only 1 data length |
| //Set ADC ch to FPGA reg |
| SiTCPRBCPskeleton(0xff, 0x80, 0x00000012, 0x1, 0x00000012); |
| SiTCPsndData[0] = data; |
| memcpy(SiTCPsndBuf+sizeof(struct bcp_header), SiTCPsndData, sizeof SiTCPsndData); |
| int len = 0; |
| len = sendto(SiTCPGetUDPSock(), SiTCPsndBuf, 1 + sizeof(struct bcp_header), 0, |
| (struct sockaddr *)&SiTCPudpAddr, sizeof(SiTCPudpAddr));//important! |
| if(len < 0){ |
| perror("UDP Send error"); |
| printf("exit(1);!!!\n"); |
| } |
| SiTCPrcvRBCP_ACK(1); |
| SiTCPRBCPskeleton(0xff, 0x80, 0x0000001f, 0x1, 0x0000001f); |
| SiTCPsndData[0] = 1; |
| memcpy(SiTCPsndBuf+sizeof(struct bcp_header), SiTCPsndData, sizeof SiTCPsndData); |
| len = 0; |
| len = sendto(SiTCPGetUDPSock(), SiTCPsndBuf, 1 + sizeof(struct bcp_header), 0, |
| (struct sockaddr *)&SiTCPudpAddr, sizeof(SiTCPudpAddr));//important! |
| if(len < 0){ |
| perror("UDP Send error"); |
| printf("exit(1);!!!\n"); |
| } |
| SiTCPrcvRBCP_ACK(1); |
| //Sleep(20000);//wait ADC ch change |
| Sleep(2000);//wait ADC ch change |
| //start Read ADC |
| SiTCPRBCPskeleton(0xff, 0x80, 0x00000012, 0x1, 0x00000012); |
| SiTCPsndData[0] = 240; |
| memcpy(SiTCPsndBuf+sizeof(struct bcp_header), SiTCPsndData, sizeof SiTCPsndData); |
| len = 0; |
| len = sendto(SiTCPGetUDPSock(), SiTCPsndBuf, 1 + sizeof(struct bcp_header), 0, |
| (struct sockaddr *)&SiTCPudpAddr, sizeof(SiTCPudpAddr));//important! |
| if(len < 0){ |
| perror("UDP Send error"); |
| printf("exit(1);!!!\n"); |
| } |
| SiTCPrcvRBCP_ACK(1); |
| SiTCPRBCPskeleton(0xff, 0x80, 0x0000001f, 0x1, 0x0000001f); |
| SiTCPsndData[0] = 0; |
| memcpy(SiTCPsndBuf+sizeof(struct bcp_header), SiTCPsndData, sizeof SiTCPsndData); |
| len = 0; |
| len = sendto(SiTCPGetUDPSock(), SiTCPsndBuf, 1 + sizeof(struct bcp_header), 0, |
| (struct sockaddr *)&SiTCPudpAddr, sizeof(SiTCPudpAddr));//important! |
| if(len < 0){ |
| perror("UDP Send error"); |
| printf("exit(1);!!!\n"); |
| } |
| SiTCPrcvRBCP_ACK(1); |
| //read data |
| int rd_data = 0; |
| int rd_data1 = 0; |
| int rd_data2 = 0; |
| SiTCPRBCPskeleton(0xff, 0xc0, 0x00000004, 0x1, 0x00000004); |
| len = 0; |
| len = sendto(SiTCPGetUDPSock(), SiTCPsndBuf, 1 + sizeof(struct bcp_header), 0, |
| (struct sockaddr *)&SiTCPudpAddr, sizeof(SiTCPudpAddr));//important! |
| if(len < 0){ |
| perror("UDP recv error"); |
| printf("exit(1);!!!\n"); |
| } |
| rd_data1 = SiTCPrcvRBCP_ACK(1); |
| // std::cout << rd_data << std::endl; |
| SiTCPRBCPskeleton(0xff, 0xc0, 0x00000005, 0x1, 0x00000005); |
| len = 0; |
| len = sendto(SiTCPGetUDPSock(), SiTCPsndBuf, 1 + sizeof(struct bcp_header), 0, |
| (struct sockaddr *)&SiTCPudpAddr, sizeof(SiTCPudpAddr));//important! |
| if(len < 0){ |
| perror("UDP recv error"); |
| printf("exit(1);!!!\n"); |
| } |
| rd_data2 = SiTCPrcvRBCP_ACK(1); |
| // std::cout << rd_data << std::endl; |
| rd_data = rd_data1*256 + rd_data2; |
| return rd_data; |
| } |
| //------------------------------------------------------------------------------------------------------ |
| void Senderclear_all(){ |
| unsigned char address; |
| int data; |
| //int nbyte; |
| // Send register clear |
| address = 0x00; |
| data = 0x0; |
| Senderudp_send(address, data); |
| printf("Clear all registers in FPGA.\n"); |
| } |
| /cvi/apps/l2d2_easyroc/sender.h |
|---|
| 0,0 → 1,15 |
| #pragma once |
| #include "SiTCP.h" |
| //#include <unistd.h> |
| void SenderInit(); |
| void SenderClose(); |
| void Senderudp_send( unsigned int address, int data); |
| int Senderudp_recv( unsigned int address, int data); |
| void SenderRBCPpacket_send( unsigned int address, unsigned char length, int* data); |
| void SenderRBCPpacket_recv( unsigned int address, unsigned char length, int* data); |
| void SenderRBCP_multi_packet_send( unsigned int address, unsigned int total_length, int* data); |
| int Senderread_madc( int data); |
| void Senderclear_all(); |
| void Sendertcp_send( char* data); |
| /cvi/apps/l2d2_easyroc/test |
|---|