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;
char dval;
if (dataStructure) { if (dataStructure) {
dataStructure->getPixel(i,x,y);
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 (cbSubtractPedestal->IsOn()) {
if (photonFinder) { if (photonFinder) {
ped=photonFinder->getPedestal(x,y,cmSub); ped=photonFinder->getPedestal(x,y,cmSub);
} }
} }
if (h2DMapAn)
h2DMapAn->SetBinContent(x+1,y+1,aval-ped);
if (h2DMapDig)
h2DMapDig->SetBinContent(x+1,y+1,dataStructure->getGain(data->cvalues,x,y));
//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;
} }
} }
} else
//if (enableFlag[ig]) {
h=adcHisto[ig];
h1=countsHisto[ig];
//}
if (plotFlag[ig]) {
// cout << data->getChannel(i) << endl;
h->SetBinContent(ip+1,aval-ped);
h1->Fill(aval-ped);
}
i++;
}
}
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,36 +949,44 @@ 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++) {
@ -1026,17 +995,8 @@ sample1 (dbit0 + dbit1 +...)if (cmd == "rx_dbitlist") {
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;
// cout << "Bit number " << ib << endl;
if (bitPlotFlag[ib]) { if (bitPlotFlag[ib]) {
hb=bitHisto[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
@ -1044,20 +1004,6 @@ sample1 (dbit0 + dbit1 +...)if (cmd == "rx_dbitlist") {
} }
} }
// #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 { } else {
@ -1067,7 +1013,7 @@ sample1 (dbit0 + dbit1 +...)if (cmd == "rx_dbitlist") {
for (const auto &value : dbitlist) { for (const auto &value : dbitlist) {
ib=value; ib=value;
hb=bitHisto[ib]; hb=bitHisto[ib];
cout << dec <<endl << "Bit " << ib << " " << (nDigitalSamples-dBitOffset)/8 << endl; // cout << dec <<endl << "Bit " << ib << " " << (nDigitalSamples-dBitOffset)/8 << endl;
iii=0; iii=0;
for (ip=0; ip<(nDigitalSamples-dBitOffset)/8; ip++) { for (ip=0; ip<(nDigitalSamples-dBitOffset)/8; ip++) {
if (bitPlotFlag[ib]) { if (bitPlotFlag[ib]) {
@ -1085,25 +1031,44 @@ sample1 (dbit0 + dbit1 +...)if (cmd == "rx_dbitlist") {
ii++; 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) {
if (adcPlot && dbitPlot) {
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->cd();
myCanvas->Modified(); myCanvas->Modified();
myCanvas->Update(); myCanvas->Update();
}
} }
// TThread::UnLock(); // TThread::UnLock();
} }
@ -1111,19 +1076,37 @@ 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 (adcPlot && dbitPlot) {
if (myCanvas->GetPad(1)==NULL || myCanvas->GetPad(2)==NULL) {
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 (rbWaveform->IsOn())
if (adcStack) if (adcStack)
adcStack->Draw("NOSTACK"); adcStack->Draw("NOSTACK");
@ -1135,21 +1118,41 @@ void ctbAcquisition::changePlot(){
else else
cout << "countsStack is NULL" << endl; cout << "countsStack is NULL" << endl;
else if (rb2D->IsOn()) { else if (rb2D->IsOn()) {
if (h2DMap) if (h2DMapAn)
h2DMap->Draw("colz"); h2DMapAn->Draw("colz");
else if (h1DMap) else if (h1DMap)
h1DMap->Draw(); h1DMap->Draw();
else else
cout << "h2DMap and h1DMap are NULL" << endl; cout << "h2DMap and h1DMap are NULL" << endl;
} // else if (rbScan->IsOn()) { }
}
if (dbitPlot) {
if (adcPlot)
myCanvas->cd(2);
if (rb2D->IsOn()) {
if (h2DMapDig)
h2DMapDig->Draw("colz");
} else if (bitStack)
bitStack->Draw("NOSTACK");
else
cout << "bitStack is 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();
}
} }
@ -1162,16 +1165,18 @@ void ctbAcquisition::changeDetector(){
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;
@ -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,8 +2053,8 @@ 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();
@ -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

@ -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.