Separated plot for digital and analog values; deserializer still to be tested

This commit is contained in:
bergamaschi 2019-06-17 17:08:23 +02:00
parent c96939cf94
commit 8c332e8ffd
4 changed files with 269 additions and 247 deletions

View File

@ -38,7 +38,7 @@
#include "Mythen3_01_jctbData.h" #include "Mythen3_01_jctbData.h"
#include "Mythen3_02_jctbData.h" #include "Mythen3_02_jctbData.h"
#include "adcSar2_jctbData.h" #include "adcSar2_jctbData.h"
#include "moench04CtbReceiverData.h" #include "moench04CtbZmqData.h"
#include "deserializer.h" #include "deserializer.h"
#include "detectorData.h" #include "detectorData.h"
@ -299,7 +299,7 @@ hframe=new TGHorizontalFrame(this, 800,50);
TGNumberFormat::kNELLimitMinMax,0,16535); TGNumberFormat::kNELLimitMinMax,0,16535);
hframe->AddFrame(eNumCount,new TGLayoutHints(kLHintsTop | kLHintsExpandX, 1, 1, 1, 1)); hframe->AddFrame(eNumCount,new TGLayoutHints(kLHintsTop | kLHintsExpandX, 1, 1, 1, 1));
eNumCount->MapWindow();; eNumCount->MapWindow();;
eNumCount->SetNumber(64*3); eNumCount->SetNumber(128*3);
e= eNumCount->TGNumberEntry::GetNumberEntry(); e= eNumCount->TGNumberEntry::GetNumberEntry();
eNumCount->Connect("ValueSet(Long_t)","ctbAcquisition",this,"ChangeNumberOfChannels(Long_t)"); eNumCount->Connect("ValueSet(Long_t)","ctbAcquisition",this,"ChangeNumberOfChannels(Long_t)");
e->Connect("ReturnPressed()","ctbAcquisition",this,"ChangeNumberOfChannels()"); e->Connect("ReturnPressed()","ctbAcquisition",this,"ChangeNumberOfChannels()");
@ -633,8 +633,8 @@ hframe=new TGHorizontalFrame(this, 800,50);
// mgAdcs=new TMultiGraph(); // mgAdcs=new TMultiGraph();
// bitStack=new THStack(); bitStack=new THStack();
bitStack=adcStack; // bitStack=adcStack;
TH1F *hb; TH1F *hb;
for (int i=0; i<NSIGNALS; i++) { for (int i=0; i<NSIGNALS; i++) {
sprintf(tit,"bit%d",i); sprintf(tit,"bit%d",i);
@ -670,7 +670,8 @@ hframe=new TGHorizontalFrame(this, 800,50);
dataStructure=NULL; dataStructure=NULL;
commonMode=NULL; commonMode=NULL;
photonFinder=NULL; photonFinder=NULL;
h2DMap=NULL; h2DMapAn=NULL;
h2DMapDig=NULL;
//h2Scan=NULL; //h2Scan=NULL;
h1DMap=NULL; h1DMap=NULL;
@ -901,27 +902,19 @@ sample1 (dbit0 + dbit1 +...)if (cmd == "rx_dbitlist") {
uint16_t aval; uint16_t aval;
i=0; i=0;
for (ip=0; ip<nAnalogSamples; ip++) {
for (ii=0; ii<nadc; ii++) {
//for (ip=0; ip<adclist.size(); ip++) {
if (adclist.empty())
ig=ii;
else
ig=adclist.at(ii);
aval=data->getChannel(i);//*((uint16_t*)(data->cvalues+i*2));//
// cout << "asample " << ip << " adc " << ig << " " << i << " " << aval << endl;
ped=0;
char *d_data= data->cvalues+2*nadc*nAnalogSamples;
if (dataStructure) { char dval;
dataStructure->getPixel(i,x,y);
if (dataStructure) {
for (int x=0; x<nx; x++) {
for (int y=0; y<ny; y++) {
ped=0;
aval=dataStructure->getValue(data->cvalues,x,y);
if (cbGetPedestal->IsOn()) { if (cbGetPedestal->IsOn()) {
if (photonFinder) { if (photonFinder) {
@ -929,58 +922,26 @@ sample1 (dbit0 + dbit1 +...)if (cmd == "rx_dbitlist") {
} }
} }
if (plotFlag[ig]) { if (cbSubtractPedestal->IsOn()) {
if (photonFinder) {
if (cbSubtractPedestal->IsOn()) { ped=photonFinder->getPedestal(x,y,cmSub);
if (photonFinder) {
ped=photonFinder->getPedestal(x,y,cmSub);
}
}
//normal filling except when deserializer
if (h2DMap)
h2DMap->SetBinContent(x+1,y+1,aval-ped);
if (h1DMap){
h1DMap->SetBinContent(x+1,aval-ped);
// cout << "plotting 1D " << endl;
}
// if (h2Scan) {
// //cout << "plotting Scan " << endl;
// h2Scan->SetBinContent((x+1)+y*nx,iScanStep+1,data->getChannel(i)-ped);
// } else
// cout << "No scan (analog)" << endl;
} }
} }
if (h2DMapAn)
h2DMapAn->SetBinContent(x+1,y+1,aval-ped);
//if (enableFlag[ig]) { if (h2DMapDig)
h=adcHisto[ig]; h2DMapDig->SetBinContent(x+1,y+1,dataStructure->getGain(data->cvalues,x,y));
h1=countsHisto[ig];
//}
if (plotFlag[ig]) {
// cout << data->getChannel(i) << endl;
h->SetBinContent(ip+1,aval-ped);
h1->Fill(aval-ped);
} }
i++;
} }
} else
}
char *d_data= data->cvalues+2*nadc*nAnalogSamples;
char dval;
/**** Digital Samples ****/
if (deserializer) { if (deserializer) {
cout << "deserializer"<< endl;
if (dbitlist.empty()) if (dbitlist.empty())
val=deserializer::deserializeAll(d_data,plotlist,dr,nx,soff);//dataStructure->getData(d_data); val=deserializer::deserializeAll(d_data,plotlist,dr,nx,soff);//dataStructure->getData(d_data);
else else
@ -988,122 +949,126 @@ sample1 (dbit0 + dbit1 +...)if (cmd == "rx_dbitlist") {
if (val) { if (val) {
// if (h2DMap) {
// for (x=0; x<nx; x++) {
// for (y=0; y<ny; y++) {
// h2DMap->SetBinContent(x+1,y+1,val[y][x]);
// }
// }
// }
if (h1DMap){ if (h1DMap){
for (x=0; x<nx; x++) { for (x=0; x<nx; x++) {
h1DMap->SetBinContent(x+1,val[x]); h1DMap->SetBinContent(x+1,val[x]);
// cout << dec << x << " " << val[0][x] << endl;
} }
} }
// if (h2Scan) {
// for (x=0; x<nx; x++) {
// for (y=0; y<ny; y++) {
// //cout << "plotting Scan " << (x+1)+y*nx << " " << iScanStep+1 << " " << val[y][x] << endl;
// h2Scan->SetBinContent((x+1)+y*nx,iScanStep+1,val[y][x]);
// }
// }
// } else
// cout << "No scan (digital)" << endl;
delete [] val; delete [] val;
} else } else
cout << "get val did not succeed"<<endl; cout << "get val did not succeed"<<endl;
} } else {
cout << "analog histo " << endl;
for (ip=0; ip<nAnalogSamples; ip++) {
for (ii=0; ii<nadc; ii++) {
//for (ip=0; ip<adclist.size(); ip++) {
if (adclist.empty())
ig=ii;
else
ig=adclist.at(ii);
aval=data->getChannel(i);//*((uint16_t*)(data->cvalues+i*2));//
if (plotFlag[ig]) {
//if (enableFlag[ig]) {
h=adcHisto[ig];
h1=countsHisto[ig];
//}
// cout << data->getChannel(i) << endl;
h->SetBinContent(ip+1,aval);
h1->Fill(aval);
}
i++;
}
}
cout << "bit histo"<< endl;
if (dbitlist.empty()) { if (dbitlist.empty()) {
for (ip=0; ip<nDigitalSamples; ip++) { for (ip=0; ip<nDigitalSamples; ip++) {
for (ig=0; ig<8; ig++) { for (ig=0; ig<8; ig++) {
dval=*(d_data+ip*8+ig); dval=*(d_data+ip*8+ig);
for (ib=(ig)*8; ib<(ig+1)*8; ib++) { for (ib=(ig)*8; ib<(ig+1)*8; ib++) {
// cout << "dsample " << ip << " bit " << ib << endl; if (bitPlotFlag[ib]) {
// cout << "Bit number " << ib << endl; hb=bitHisto[ib];
if (bitPlotFlag[ib]) {
hb=bitHisto[ib];
// if (bitStack->GetHists()->Contains(hb)==0) cout << "ERROR!" << endl;
//#define ADCSAR2
// #ifdef ADCSAR2
// if (ib==0) vv1=dval;
// if (ib==16) vv2=dval;
// cout << ib << " " << hex << vv << dec << endl;
// #endif
if (dval&(1<<(ib%8))) if (dval&(1<<(ib%8)))
hb->SetBinContent(ip+1,1+bitOffset[ib]); hb->SetBinContent(ip+1,1+bitOffset[ib]);
else else
hb->SetBinContent(ip+1,bitOffset[ib]); hb->SetBinContent(ip+1,bitOffset[ib]);
}
} }
}
// #ifdef ADCSAR2
// //this is a deserializer similar to MYTHEN!
// hb=bitHisto[0];
// int adcvalue=0;
// // int startbit= ig;
// for (int jj=0;jj<8;jj++){
// adcvalue=adcvalue+ (((vv1>>(jj*2)) & 0x1)<<(jj));
// }
// for (int jj=0;jj<4;jj++){
// adcvalue=adcvalue+ (((vv2>>(jj*2)) & 0x1)<<(jj+8));
// }
// hb->SetBinContent(ip+1, adcvalue);
// printf(" %d 0x%x 0x%x adc=%d \n", i, vv1, vv2, adcvalue);
// #endif
}
}
} else {
ii=0;
int iii=0;
int nb=dbitlist.size();
for (const auto &value : dbitlist) {
ib=value;
hb=bitHisto[ib];
cout << dec <<endl << "Bit " << ib << " " << (nDigitalSamples-dBitOffset)/8 << endl;
iii=0;
for (ip=0; ip<(nDigitalSamples-dBitOffset)/8; ip++) {
if (bitPlotFlag[ib]) {
dval=*(d_data+ii*nDigitalSamples/8+ip);
for (int jj=0; jj<8; jj++) {
if (dval&(1<<jj))
hb->SetBinContent(iii,1+bitOffset[ib]);
else
hb->SetBinContent(iii,bitOffset[ib]);
iii++;
}
} }
} }
ii++; } else {
ii=0;
int iii=0;
int nb=dbitlist.size();
for (const auto &value : dbitlist) {
ib=value;
hb=bitHisto[ib];
// cout << dec <<endl << "Bit " << ib << " " << (nDigitalSamples-dBitOffset)/8 << endl;
iii=0;
for (ip=0; ip<(nDigitalSamples-dBitOffset)/8; ip++) {
if (bitPlotFlag[ib]) {
dval=*(d_data+ii*nDigitalSamples/8+ip);
for (int jj=0; jj<8; jj++) {
if (dval&(1<<jj))
hb->SetBinContent(iii,1+bitOffset[ib]);
else
hb->SetBinContent(iii,bitOffset[ib]);
iii++;
}
}
}
ii++;
}
} }
} }
Draw(); Draw();
// iScanStep++; // iScanStep++;
if (photonFinder) if (photonFinder)
photonFinder->newFrame(); photonFinder->newFrame();
return i; }
}
return 0; return 0;
} }
void ctbAcquisition::Draw(){ void ctbAcquisition::Draw(){
if (globalPlot) { if (globalPlot) {
// TThread::Lock(); // TThread::Lock();
cout << "Draw" << endl; cout << "Draw" << endl;
if (myCanvas && globalPlot!=0) { if (myCanvas) {
myCanvas->cd(); if (adcPlot && dbitPlot) {
myCanvas->Modified();
myCanvas->Update(); myCanvas->cd(1);
// myCanvas->Modified();
// myCanvas->Update();
gPad->Modified();
gPad->Update();
myCanvas->cd(2);
// myCanvas->Modified();
// myCanvas->Update();
gPad->Modified();
gPad->Update();
} else {
myCanvas->cd();
myCanvas->Modified();
myCanvas->Update();
}
} }
// TThread::UnLock(); // TThread::UnLock();
} }
@ -1111,45 +1076,83 @@ void ctbAcquisition::Draw(){
} }
//here!!
void ctbAcquisition::changePlot(){ void ctbAcquisition::changePlot(){
if (rbPlotOff->IsOn()) { if (rbPlotOff->IsOn()) {
globalPlot=0; adcPlot=0;
dbitPlot=0;
} else { } else {
globalPlot=0; adcPlot=0;
dbitPlot=0;
for (int ii=0; ii<NADCS; ii++) for (int ii=0; ii<NADCS; ii++)
if (plotFlag[ii]==1) globalPlot=1; if (plotFlag[ii]==1) adcPlot=1;
for (int ii=0; ii<NSIGNALS; ii++) for (int ii=0; ii<NSIGNALS; ii++)
if (bitPlotFlag[ii]==1) globalPlot=1; if (bitPlotFlag[ii]==1) dbitPlot=1;
} }
globalPlot=adcPlot || dbitPlot;
if (globalPlot!=0 && myCanvas) { if (globalPlot!=0 && myCanvas) {
if (rbWaveform->IsOn()) if (adcPlot && dbitPlot) {
if (adcStack) if (myCanvas->GetPad(1)==NULL || myCanvas->GetPad(2)==NULL) {
adcStack->Draw("NOSTACK"); myCanvas->Clear();
myCanvas->Divide(1,2);
} else
cout << "Pad already there" << endl;
myCanvas->cd(1);
} else {
myCanvas->Clear();
// myCanvas->Divide(1,1);
myCanvas->cd();
}
if (adcPlot) {
if (rbWaveform->IsOn())
if (adcStack)
adcStack->Draw("NOSTACK");
else
cout << "adcStack is NULL" << endl;
else if (rbDistribution->IsOn())
if (countsStack)
countsStack->Draw("NOSTACK");
else
cout << "countsStack is NULL" << endl;
else if (rb2D->IsOn()) {
if (h2DMapAn)
h2DMapAn->Draw("colz");
else if (h1DMap)
h1DMap->Draw();
else
cout << "h2DMap and h1DMap are NULL" << endl;
}
}
if (dbitPlot) {
if (adcPlot)
myCanvas->cd(2);
if (rb2D->IsOn()) {
if (h2DMapDig)
h2DMapDig->Draw("colz");
} else if (bitStack)
bitStack->Draw("NOSTACK");
else else
cout << "adcStack is NULL" << endl; cout << "bitStack is NULL" << endl;
else if (rbDistribution->IsOn())
if (countsStack)
countsStack->Draw("NOSTACK");
else }
cout << "countsStack is NULL" << endl;
else if (rb2D->IsOn()) {
if (h2DMap) // else if (rbScan->IsOn()) {
h2DMap->Draw("colz");
else if (h1DMap)
h1DMap->Draw();
else
cout << "h2DMap and h1DMap are NULL" << endl;
} // else if (rbScan->IsOn()) {
// if (h2Scan) // if (h2Scan)
// h2Scan->Draw("colz"); // h2Scan->Draw("colz");
// else // else
// cout << "h2Scan is NULL" << endl; // cout << "h2Scan is NULL" << endl;
// } // }
}
Draw();
Draw();
}
} }
@ -1159,27 +1162,29 @@ void ctbAcquisition::changePlot(){
void ctbAcquisition::changeDetector(){ void ctbAcquisition::changeDetector(){
// cout << "change detector " << i << " old " << cbDetType->GetSelected() << endl; // cout << "change detector " << i << " old " << cbDetType->GetSelected() << endl;
if (dataStructure) delete dataStructure; if (dataStructure) delete dataStructure;
if (commonMode) delete commonMode; if (commonMode) delete commonMode;
if (photonFinder) delete photonFinder; if (photonFinder) delete photonFinder;
if (h2DMap) delete h2DMap; if (h2DMapAn) delete h2DMapAn;
if (h2DMapDig) delete h2DMapDig;
if (h1DMap) delete h1DMap; if (h1DMap) delete h1DMap;
// if (h2Scan) delete h2Scan; // if (h2Scan) delete h2Scan;
h2DMap=NULL; h2DMapAn=NULL;
h2DMapDig=NULL;
h1DMap=NULL; h1DMap=NULL;
// h2Scan=NULL; // h2Scan=NULL;
photonFinder=NULL; photonFinder=NULL;
dataStructure=NULL; dataStructure=NULL;
commonMode=NULL; commonMode=NULL;
TH2F *h2DMapOld=h2DMap; TH2F *h2DMapOld=h2DMapAn;
// TH2F *h2ScanOld=h2Scan; // TH2F *h2ScanOld=h2Scan;
TH1F *h1DMapOld=h1DMap; TH1F *h1DMapOld=h1DMap;
int dim=2; int dim=2;
int nx,ny; int nx,ny;
int csize=3; int csize=3;
int nsigma=5; int nsigma=5;
commonModeSubtraction* cm=0; commonModeSubtraction* cm=0;
eNumCount->SetState(kFALSE); eNumCount->SetState(kFALSE);
eDynRange->SetState(kFALSE); eDynRange->SetState(kFALSE);
eSerOff->SetState(kFALSE); eSerOff->SetState(kFALSE);
deserializer=0; deserializer=0;
@ -1187,12 +1192,12 @@ void ctbAcquisition::changeDetector(){
switch (cbDetType->GetSelected()) { switch (cbDetType->GetSelected()) {
case DESERIALIZER: case DESERIALIZER:
deserializer=1; deserializer=1;
// cout << "DESERIALIZER!" << endl; cout << "DESERIALIZER!" << endl;
// dataStructure=new moench03T1CtbData(); // dataStructure=new moench03T1CtbData();
// commonMode=new moench03CommonMode(); // commonMode=new moench03CommonMode();
break; break;
case MOENCH04: case MOENCH04:
dataStructure=new moench04CtbReceiverData(); dataStructure=new moench04CtbZmqData(nAnalogSamples, nDigitalSamples);
cout << "MOENCH 0.4!" << endl; cout << "MOENCH 0.4!" << endl;
commonMode=new moench03CommonMode(); commonMode=new moench03CommonMode();
break; break;
@ -1263,6 +1268,9 @@ void ctbAcquisition::changeDetector(){
if (deserializer) { if (deserializer) {
ny=1; ny=1;
nx=eNumCount->GetIntNumber(); nx=eNumCount->GetIntNumber();
eNumCount->SetState(kTRUE);
eDynRange->SetState(kTRUE);
eSerOff->SetState(kTRUE);
} }
// cout << "h size is " << nx << " " << ny << endl; // cout << "h size is " << nx << " " << ny << endl;
int ymax=ny, xmax=nx; int ymax=ny, xmax=nx;
@ -1271,9 +1279,14 @@ void ctbAcquisition::changeDetector(){
cout << "*** " << nx << " " << ny << endl; cout << "*** " << nx << " " << ny << endl;
if (rb2D->IsOn()) { if (rb2D->IsOn()) {
if (ny>1) { if (ny>1) {
h2DMap=new TH2F("h2dmap","",nx,0,xmax,ny,0,ymax); h2DMapAn=new TH2F("h2dmapAn","",nx,0,xmax,ny,0,ymax);
h2DMap->SetStats(kFALSE); h2DMapAn->SetStats(kFALSE);
cout << "Created h2DMap"<< endl; cout << "Created h2DMapAn"<< endl;
if (dbitPlot && adcPlot){
h2DMapDig=new TH2F("h2dmapDig","",nx,0,xmax,ny,0,ymax);
h2DMapDig->SetStats(kFALSE);
cout << "Created h2DMapDig"<< endl;
}
} else { } else {
h1DMap=new TH1F("h1dmap","",nx,0,xmax); h1DMap=new TH1F("h1dmap","",nx,0,xmax);
h1DMap->SetStats(kFALSE); h1DMap->SetStats(kFALSE);
@ -1598,8 +1611,10 @@ void ctbAcquisition::toggleAcquisition() {
for (int i=0; i<NSIGNALS; i++) { for (int i=0; i<NSIGNALS; i++) {
bitHisto[i]->Reset(); bitHisto[i]->Reset();
} }
cout << "reset 2d" << endl;; cout << "reset 2d an" << endl;;
if (h2DMap) h2DMap->Reset(); if (h2DMapAn) h2DMapAn->Reset();
cout << "reset 2d dig" << endl;;
if (h2DMapDig) h2DMapDig->Reset();
cout << "reset 1d" << endl;; cout << "reset 1d" << endl;;
if (h1DMap) h1DMap->Reset(); if (h1DMap) h1DMap->Reset();
cout << "done" << endl;; cout << "done" << endl;;
@ -1953,42 +1968,44 @@ void ctbAcquisition::ChangeNumberOfChannels(Long_t a){
void ctbAcquisition::ChangeSerialOffset(){ void ctbAcquisition::ChangeSerialOffset(){
if (dataStructure) { // if (dataStructure) {
cout << cbDetType->GetSelected()<< endl; // // cout << cbDetType->GetSelected()<< endl;
if (cbDetType->GetSelected()==MYTHEN301 || cbDetType->GetSelected()==MYTHEN302 ){ // // if (cbDetType->GetSelected()==MYTHEN301 || cbDetType->GetSelected()==MYTHEN302 ){
cout << "settings offsets for MYTHEN" << endl; // // cout << "settings offsets for MYTHEN" << endl;
mythen3_01_jctbData* ms=(mythen3_01_jctbData*)dataStructure; // // mythen3_01_jctbData* ms=(mythen3_01_jctbData*)dataStructure;
ms->setSerialOffset(eSerOff->GetIntNumber()); // // ms->setSerialOffset(eSerOff->GetIntNumber());
} // // }
} // }
}; };
void ctbAcquisition::ChangeDynamicRange(){ void ctbAcquisition::ChangeDynamicRange(){
if (dataStructure) { // if (dataStructure) {
cout << cbDetType->GetSelected()<< endl; // cout << cbDetType->GetSelected()<< endl;
if (cbDetType->GetSelected()==MYTHEN301 || cbDetType->GetSelected()==MYTHEN302){ // if (cbDetType->GetSelected()==MYTHEN301 || cbDetType->GetSelected()==MYTHEN302){
cout << "settings dynamic range for MYTHEN" << endl; // cout << "settings dynamic range for MYTHEN" << endl;
mythen3_01_jctbData* ms=(mythen3_01_jctbData*)dataStructure; // mythen3_01_jctbData* ms=(mythen3_01_jctbData*)dataStructure;
ms->setDynamicRange(eDynRange->GetIntNumber()); // ms->setDynamicRange(eDynRange->GetIntNumber());
} // }
} // }
}; };
void ctbAcquisition::ChangeNumberOfChannels(){ void ctbAcquisition::ChangeNumberOfChannels(){
if (dataStructure) { // if (dataStructure) {
cout << cbDetType->GetSelected()<< endl; // cout << cbDetType->GetSelected()<< endl;
if (cbDetType->GetSelected()==MYTHEN301 || cbDetType->GetSelected()==MYTHEN302){ // if (cbDetType->GetSelected()==MYTHEN301 || cbDetType->GetSelected()==MYTHEN302){
cout << "settings number of channels for MYTHEN" << endl; // cout << "settings number of channels for MYTHEN" << endl;
mythen3_01_jctbData* ms=(mythen3_01_jctbData*)dataStructure; // mythen3_01_jctbData* ms=(mythen3_01_jctbData*)dataStructure;
ms->setNumberOfCounters(eNumCount->GetIntNumber()); // ms->setNumberOfCounters(eNumCount->GetIntNumber());
} // }
} // }
if (deserializer)
changePlot();
}; };
@ -2023,9 +2040,9 @@ void ctbAcquisition::ChangeHistoLimitsPedSub(){
if (cMinMaxPedSub->IsOn()) { if (cMinMaxPedSub->IsOn()) {
adcStack->SetMaximum( eMaxPedSub->GetNumber()); adcStack->SetMaximum( eMaxPedSub->GetNumber());
adcStack->SetMinimum( eMinPedSub->GetNumber()); adcStack->SetMinimum( eMinPedSub->GetNumber());
if (h2DMap) { if (h2DMapAn) {
h2DMap->SetMaximum( eMaxPedSub->GetNumber()); h2DMapAn->SetMaximum( eMaxPedSub->GetNumber());
h2DMap->SetMinimum( eMinPedSub->GetNumber()); h2DMapAn->SetMinimum( eMinPedSub->GetNumber());
} }
if (h1DMap) { if (h1DMap) {
h1DMap->SetMaximum( eMaxPedSub->GetNumber()); h1DMap->SetMaximum( eMaxPedSub->GetNumber());
@ -2036,11 +2053,11 @@ void ctbAcquisition::ChangeHistoLimitsPedSub(){
} else { } else {
if (adcStack->GetHistogram()) if (adcStack->GetHistogram())
adcStack->GetHistogram()->GetYaxis()->UnZoom(); adcStack->GetHistogram()->GetYaxis()->UnZoom();
if (h2DMap) { if (h2DMapAn) {
h2DMap->GetZaxis()->UnZoom(); h2DMapAn->GetZaxis()->UnZoom();
} }
if (h1DMap) { if (h1DMap) {
h1DMap->GetYaxis()->UnZoom(); h1DMap->GetYaxis()->UnZoom();
} }
if (countsStack->GetHistogram()) if (countsStack->GetHistogram())
countsStack->GetHistogram()->GetXaxis()->UnZoom(); countsStack->GetHistogram()->GetXaxis()->UnZoom();
@ -2061,9 +2078,9 @@ void ctbAcquisition::ChangeHistoLimitsRaw(){
if (cMinMaxRaw->IsOn()) { if (cMinMaxRaw->IsOn()) {
adcStack->SetMaximum( eMaxRaw->GetNumber()); adcStack->SetMaximum( eMaxRaw->GetNumber());
adcStack->SetMinimum( eMinRaw->GetNumber()); adcStack->SetMinimum( eMinRaw->GetNumber());
if (h2DMap) { if (h2DMapAn) {
h2DMap->SetMaximum( eMaxRaw->GetNumber()); h2DMapAn->SetMaximum( eMaxRaw->GetNumber());
h2DMap->SetMinimum( eMinRaw->GetNumber()); h2DMapAn->SetMinimum( eMinRaw->GetNumber());
} }
if (h1DMap) { if (h1DMap) {
h1DMap->SetMaximum( eMaxRaw->GetNumber()); h1DMap->SetMaximum( eMaxRaw->GetNumber());
@ -2075,8 +2092,8 @@ void ctbAcquisition::ChangeHistoLimitsRaw(){
if (adcStack->GetHistogram()) if (adcStack->GetHistogram())
adcStack->GetHistogram()->GetYaxis()->UnZoom(); adcStack->GetHistogram()->GetYaxis()->UnZoom();
if (h2DMap) { if (h2DMapAn) {
h2DMap->GetZaxis()->UnZoom(); h2DMapAn->GetZaxis()->UnZoom();
} }
if (h1DMap) { if (h1DMap) {

View File

@ -20,8 +20,8 @@ class TTimer;
class TCanvas; class TCanvas;
class TH2F; class TH2F;
class TH1F; class TH1F;
class TGLabel; class TGLabel;
class TGTextButton; class TGTextButton;
class multiSlsDetector; class multiSlsDetector;
class detectorData; class detectorData;
@ -103,7 +103,8 @@ class ctbAcquisition : public TGGroupFrame {
TH2F *h2DMap; // for 2D detectors TH2F *h2DMapAn; // for 2D detectors
TH2F *h2DMapDig; // for 2D detectors
TH1F *h1DMap; //for 1D detectors TH1F *h1DMap; //for 1D detectors
// TH2F *h2Scan; // for 2D detectors // TH2F *h2Scan; // for 2D detectors
@ -148,6 +149,8 @@ class ctbAcquisition : public TGGroupFrame {
char patternCompiler[10000]; char patternCompiler[10000];
int globalPlot; int globalPlot;
int adcPlot;
int dbitPlot;
int nAnalogSamples, nDigitalSamples; int nAnalogSamples, nDigitalSamples;
// int iScanStep; // int iScanStep;

View File

@ -126,7 +126,7 @@ void setwaittime(int iloop, uint64_t t) {
void pw(){ void pw(){
if (iaddr<MAXWORDS) if (iaddr<MAXWORDS)
PAT[iaddr]= pat; PAT[iaddr]= pat;
fprintf(fd,"patword %04x %016llx\n",iaddr, pat); fprintf(fd,"patword 0x%04x 0x%016llx\n",iaddr, pat);
iaddr++; iaddr++;
if (iaddr>=MAXWORDS) printf("ERROR: too many word in the pattern (%d instead of %d)!",iaddr, MAXWORDS); if (iaddr>=MAXWORDS) printf("ERROR: too many word in the pattern (%d instead of %d)!",iaddr, MAXWORDS);
} }
@ -154,18 +154,18 @@ main(void) {
fd=fopen(OUTFILE,"w"); fd=fopen(OUTFILE,"w");
#include INFILE #include INFILE
fprintf(fd,"patioctrl %016llx\n",iopat); fprintf(fd,"patioctrl 0x%016llx\n",iopat);
fprintf(fd,"patclkctrl %016llx\n",clkpat); fprintf(fd,"patclkctrl 0x%016llx\n",clkpat);
fprintf(fd,"patlimits %04x %04x\n",start, stop); fprintf(fd,"patlimits 0x%04x 0x%04x\n",start, stop);
for (iloop=0; iloop<MAXLOOPS; iloop++) { for (iloop=0; iloop<MAXLOOPS; iloop++) {
fprintf(fd,"patloop%d %04x %04x\n",iloop, startloopaddr[iloop], stoploopaddr[iloop]); fprintf(fd,"patloop%d 0x%04x 0x%04x\n",iloop, startloopaddr[iloop], stoploopaddr[iloop]);
if ( startloopaddr[iloop]<0 || stoploopaddr[iloop]<= startloopaddr[iloop]) nloop[iloop]=0; if ( startloopaddr[iloop]<0 || stoploopaddr[iloop]<= startloopaddr[iloop]) nloop[iloop]=0;
fprintf(fd,"patnloop%d %d\n",iloop, nloop[iloop]); fprintf(fd,"patnloop%d %d\n",iloop, nloop[iloop]);
} }
for (iloop=0; iloop<MAXTIMERS; iloop++) { for (iloop=0; iloop<MAXTIMERS; iloop++) {
fprintf(fd,"patwait%d %04x\n",iloop, waitaddr[iloop]); fprintf(fd,"patwait%d 0x%04x\n",iloop, waitaddr[iloop]);
if (waitaddr[iloop]<0) waittime[iloop]=0; if (waitaddr[iloop]<0) waittime[iloop]=0;
fprintf(fd,"patwaittime%d %lld\n",iloop, waittime[iloop]); fprintf(fd,"patwaittime%d %lld\n",iloop, waittime[iloop]);
} }

View File

@ -261,6 +261,8 @@ class slsDetectorData {
return d^m; return d^m;
}; };
virtual int getGain(char *data, int ix, int iy=0){return 0;};
/** /**
Returns the value of the selected channel for the given dataset. Virtual function, can be overloaded. Returns the value of the selected channel for the given dataset. Virtual function, can be overloaded.