]> jspc29.x-matter.uni-frankfurt.de Git - radhard.git/commitdiff
FSBB: Set fRows and fColumns in MAPS.C to the fixed values 8 and 208 to read the...
authorDennis Doering <doering@physik.uni-frankfurt.de>
Mon, 7 Sep 2015 13:48:54 +0000 (15:48 +0200)
committerDennis Doering <doering@physik.uni-frankfurt.de>
Mon, 7 Sep 2015 13:48:54 +0000 (15:48 +0200)
MABS_run_analyzer/MAPS.c
MABS_run_analyzer/Run.c

index 1f0f2dd608b81bc28d779a1e417be2154cc49546..03373ae7fa0460747ede94d42bec23efa09e092f 100644 (file)
@@ -223,6 +223,13 @@ Bool_t MAPS::initMapsRun( ) {
     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();
 
 //-----------------------------------------------
@@ -395,7 +402,7 @@ bool MAPS::defaultConf(  ) {
     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;
@@ -657,7 +664,8 @@ bool MAPS::getFrame(UInt_t FrameNumber) {
         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();       }
 //==========================================================================
@@ -1754,6 +1762,12 @@ void MAPS::plotFrame(Int_t FrameNumber) {
         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);
@@ -2406,7 +2420,7 @@ void MAPS::reorderMi29a() {
 //####################################################################
 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];
@@ -2417,21 +2431,25 @@ void MAPS::reorderFSBB() {
             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++)
@@ -2445,9 +2463,9 @@ void MAPS::reorderFSBB() {
         // }
                // 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]
@@ -2471,13 +2489,13 @@ void MAPS::reorderFSBB() {
                        // 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++)
@@ -2492,33 +2510,60 @@ void MAPS::reorderFSBB() {
         // }
                // 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];
+        // }
                
                
                /*
index 536be77eaaebb534fa6476b7bb10d08903a90a4e..f6d6d8763f2d9d8fede283dddf8b9ad0c39ada74 100644 (file)
@@ -273,7 +273,7 @@ Bool_t Run::analyzeRun(Bool_t force)
             {
 //                 cout << "getframe " << i << endl;
                 processed->getFrame(i);
-                                processed->filterCommonMode();
+               //                 processed->filterCommonMode();
 //                     cout << "hitana " << i << endl;
                 processed->hitana();
 //                 cout << "regetDynNoise " << endl;
@@ -571,7 +571,7 @@ void Run::setSensorInSystemParam()
     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;
@@ -606,14 +606,15 @@ void Run::setSubMatrixBorders(u_int x_start, u_int x_end, u_int y_start, u_int y
 }
 
 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, ";
     }
@@ -804,7 +805,7 @@ Bool_t Run::binSeedSumVeto()
                     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++)
                         {