cout<<" Save/Overwrite data : "<<fSave<<endl;
cout<<" System specified : "<<fSystem<<endl;
+ if(fOrderCode=="FSBB")
+ {
+ fRows = 8;
+ fColumns=208;
+ fPixels = fRows*fColumns;
+ cout<<"fOrderCode is" <<fOrderCode<<"therefore for data read use fRows: "<<fRows<<"and fColumns: "<<fColumns<<". This is changed after calling reOrder in getFrame()"<<endl;
+ }
// loadNoise();
//-----------------------------------------------
used_default_config = true;
FileEvNbInConfig = 20000; ///< Event number per file
FileTotalEvNbInConfig = 10000000;
- fPixelsData = run->sensorinfocur.columns*run->sensorinfocur.rows;
+ fPixelsData = fColumns*fRows;
//-----------------------------------------------
cout<<"-----------------------"<<endl;
cout<<" ==> Load default config file ..."<<endl;
if (fOrderCode == "") { }
else if (fOrderCode == "Mi34") { }
else if (fOrderCode == "Pegasus"){ }
- else if (fOrderCode == "FSBB") { reorderFSBB(); }
+ // else if (fOrderCode == "FSBB") { }
+ else if (fOrderCode == "FSBB") { reorderFSBB(); }
else if (fOrderCode == "Mi29a") { reorderMi29a(); }
// else if (fOrderCode == "Mi29b") { reorderMi29b(); }
//==========================================================================
cout <<endl <<endl << colorwhite << "---------------- FRAME " << fFrameNumber << " ----------------" << colorreset << endl << endl;
cout<<"CDS matrix:"<<endl;
debugStream<>(fCdsmatrix, fPixels, fColumns, 0, 39);
+ Float_t cdsmatrixCorrPed[fPixels];
+ for(Int_t i=0; i<fPixels; i++)
+ {
+ cdsmatrixCorrPed[i]=(float)(1.*fCdsmatrix[i]-fPedestals[i]);
+ }
+ debugStream<>(cdsmatrixCorrPed, fPixels, fColumns, 0, 10);
// cout<<fCdsmatrix[0]<<","<<fCdsmatrix[1]<<","<<fCdsmatrix[2]<<","<<fCdsmatrix[3]<<","<<fCdsmatrix[4]<<","<<fCdsmatrix[5]<<","<<fCdsmatrix[6]<<endl;
cout<<"Hitted pixel discriminator matrix:"<<endl;
debugStream<>(fHittedPixel, fPixels, fColumns, 1, 1);
//####################################################################
void MAPS::reorderFSBB() {
- Float_t CDSMATRIX2 [4*208];
+ Float_t CDSMATRIX2 [4*208*2];
Float_t CDSMATRIX [fPixels];
Int_t F0MATRIX [fPixels];
Int_t F1MATRIX [fPixels];
F1MATRIX [i] = fF1matrix [i];
}
fRows = 4;
- fColumns = 208;
+ fColumns = 416;
fPixels = fRows*fColumns;
+ // cout<<"Changed parameters for FSBB, fRows is now: "<<fRows<<" and fColumns is now: "<<fColumns<<endl;
// debugStream(CDSMATRIX, fPixels, 208, 0, 39);
- Int_t a0[4][208];
- Int_t a1[4][208];
- Int_t aMerge[4][2*208];
- Int_t subMatrix0[4][208];
- Int_t subMatrix1[4][208];
+
+ Int_t subRows = 4;
+ Int_t subColumns = 208;
+ Int_t a0[subRows][subColumns];
+ Int_t a1[subRows][subColumns];
+ Int_t aMerge[fRows][fColumns];
+ Int_t subMatrix0[subRows][subColumns];
+ Int_t subMatrix1[subRows][subColumns];
//Divide CDSMATRIX in the channels. First 208 pixels are from A0-0, then A0-1, then A0-2, then A0-3, then A1-0, then A1-1, then A1-2, then A1-3
- for(Int_t iOutChannel=0; iOutChannel<4; iOutChannel++)
+ for(Int_t iOutChannel=0; iOutChannel<subRows; iOutChannel++)
{
- for(Int_t iPixelInZeile=0; iPixelInZeile<208; iPixelInZeile++)
+ for(Int_t iPixelInZeile=0; iPixelInZeile<subColumns; iPixelInZeile++)
{
- a0[iOutChannel][iPixelInZeile]=CDSMATRIX [iOutChannel*208+iPixelInZeile];
- a1[iOutChannel][iPixelInZeile]=CDSMATRIX [(4+iOutChannel)*208+iPixelInZeile];//4+iOutChannel, because this is A1, which is shifted by four channels of A0
+ a0[iOutChannel][iPixelInZeile]=CDSMATRIX [iOutChannel*subColumns+iPixelInZeile];
+ a1[iOutChannel][iPixelInZeile]=CDSMATRIX [(4+iOutChannel)*subColumns+iPixelInZeile];//4+iOutChannel, because this is A1, which is shifted by four channels of A0
}
}
// for(Int_t i=0; i<208; i++)
// }
// cout<<endl;
- for(Int_t iOutChannel=0; iOutChannel<4; iOutChannel++)
+ for(Int_t iOutChannel=0; iOutChannel<subRows; iOutChannel++)
{
- for(Int_t iMerge2channels=0; iMerge2channels<208;iMerge2channels++)
+ for(Int_t iMerge2channels=0; iMerge2channels<subColumns;iMerge2channels++)
{
//Merge A0-0[0],A1-0[0],A0-0[1],A1-0[1],A0-0[2],A1-0[2],... output is an array of 4 geometrically columns
aMerge[iOutChannel][iMerge2channels*2]=a0[iOutChannel][iMerge2channels];//A0-iOutChannel[iMerge2channels]
// cout<<endl;
// cout<<endl;
// }
- for(Int_t iOutChannel=0; iOutChannel<4; iOutChannel++)
+ for(Int_t iOutChannel=0; iOutChannel<subRows; iOutChannel++)
{
- for(Int_t iDivideMatrix=0; iDivideMatrix<208;iDivideMatrix++)
+ for(Int_t iDivideMatrix=0; iDivideMatrix<subColumns;iDivideMatrix++)
{
//Divide in 2 submatrices
subMatrix0[iOutChannel][iDivideMatrix]=aMerge[iOutChannel][iDivideMatrix];
- subMatrix1[iOutChannel][iDivideMatrix]=aMerge[iOutChannel][208+iDivideMatrix];
+ subMatrix1[iOutChannel][iDivideMatrix]=aMerge[iOutChannel][subColumns+iDivideMatrix];
}
}
// for(Int_t i=0; i<208; i++)
// }
// cout<<endl;
// cout<<endl;
- Int_t choiceSubMatrix=0;
+ Int_t choiceSubMatrix=2;
if(choiceSubMatrix==0)//Choose a submatrix and combine its value in an array
{
- for(Int_t iOutChannel=0; iOutChannel<4; iOutChannel++)
+ for(Int_t iOutChannel=0; iOutChannel<subRows; iOutChannel++)
+ {
+ for(Int_t iPixel=0; iPixel<subColumns;iPixel++)
+ {
+ CDSMATRIX2[iOutChannel*subColumns+iPixel]=subMatrix0[iOutChannel][iPixel];
+ }
+ }
+ for(Int_t i=0; i<subRows*subColumns; i++)
+ {
+ fCdsmatrix[i]= CDSMATRIX2 [i];
+ }
+ }
+ else if(choiceSubMatrix==1)
+ {
+ for(Int_t iOutChannel=0; iOutChannel<subRows; iOutChannel++)
{
- for(Int_t iPixel=0; iPixel<208;iPixel++)
+ for(Int_t iPixel=0; iPixel<subColumns;iPixel++)
{
- CDSMATRIX2[iOutChannel*208+iPixel]=subMatrix0[iOutChannel][iPixel];
+ CDSMATRIX2[iOutChannel*subColumns+iPixel]=subMatrix1[iOutChannel][iPixel];
}
- }
+ }
+ for(Int_t i=0; i<subRows*subColumns; i++)
+ {
+ fCdsmatrix[i]= CDSMATRIX2 [i];
+ }
}
- else
+ else if(choiceSubMatrix==2)//For FSBB, do not divide the matrix
{
- for(Int_t iOutChannel=0; iOutChannel<4; iOutChannel++)
+ for(Int_t iOutChannel=0; iOutChannel<subRows; iOutChannel++)
{
- for(Int_t iPixel=0; iPixel<208;iPixel++)
+ for(Int_t iPixel=0; iPixel<fColumns;iPixel++)
{
- CDSMATRIX2[iOutChannel*208+iPixel]=subMatrix1[iOutChannel][iPixel];
+ CDSMATRIX2[iOutChannel*fColumns+iPixel]=aMerge[iOutChannel][iPixel];
}
- }
+ }
+ for(Int_t i=0; i<fRows*fColumns; i++)
+ {
+ fCdsmatrix[i]= CDSMATRIX2 [i];
+ }
}
// debugStream(CDSMATRIX2, 4*208, 208,0,30);
-
- for(Int_t i=0; i<4*208; i++)
- {
- fCdsmatrix[i]= CDSMATRIX [i];
- }
+
+ // for(Int_t i=0; i<4*208; i++)
+ // {
+ // fCdsmatrix[i]= CDSMATRIX2 [i];
+ // }
+
+ // for(Int_t i=0; i<4*208*2; i++)
+ // {
+ // fCdsmatrix[i]= aMerge [i];
+ // }
/*
{
// cout << "getframe " << i << endl;
processed->getFrame(i);
- processed->filterCommonMode();
+ // processed->filterCommonMode();
// cout << "hitana " << i << endl;
processed->hitana();
// cout << "regetDynNoise " << endl;
sensorinfostruct sensorinfoMi34USB( 8, 64 );
sensorinfostruct sensorinfoMi34PXI( 16, /* rows */ 64 /* columns */ );
sensorinfostruct sensorinfoPegasus( 8, 56 );
- sensorinfostruct sensorinfoFSBB( 8, 208 );
+ sensorinfostruct sensorinfoFSBB( 4, 416 );
if (labbook.system.EqualTo("USB") && labbook.chipGen.EqualTo("Mi34") )
sensorinfocur=sensorinfoMi34USB;
}
void Run::selectSubMatrixFSBB(TString matrixname)
-{
+{
+
if (matrixname.EqualTo("A0")) {
- setSubMatrixBorders(0, sensorinfocur.columns, 0, sensorinfocur.rows/2-2, false);
+ setSubMatrixBorders(0, sensorinfocur.columns/2-2, 0, sensorinfocur.rows, false);
runcodesuffix += "_A0_";
humanreadablesuffix += "A0, ";
}
else if (matrixname.EqualTo("A1")) {
- setSubMatrixBorders(0, sensorinfocur.columns, sensorinfocur.rows/2+2, sensorinfocur.rows, false);
+ setSubMatrixBorders(sensorinfocur.columns/2+2, sensorinfocur.columns, 0, sensorinfocur.rows, false);
runcodesuffix += "_A1_";
humanreadablesuffix += "A1, ";
}
notSeedSum = 0;
if(labbook.chipGen=="FSBB")
{
- Float_t clusterArray[processed->clustersize*processed->clustersize];
+ Float_t clusterArray[processed->clustersize*processed->clustersize];// temp variable clusterArray necessary, because Sort only accepts 1-dim arrays
Int_t index[processed->clustersize*processed->clustersize];
for (Int_t clusteri=0; clusteri<processed->clustersize*processed->clustersize; clusteri++)
{