]> jspc29.x-matter.uni-frankfurt.de Git - radhard.git/commitdiff
Anylyzer: added null pointer exception handling
authorBenjamin Linnik <blinnik@jspc28.x-matter.uni-frankfurt.de>
Tue, 2 Jun 2015 14:10:39 +0000 (16:10 +0200)
committerBenjamin Linnik <blinnik@jspc28.x-matter.uni-frankfurt.de>
Tue, 2 Jun 2015 14:10:39 +0000 (16:10 +0200)
MABS_run_analyzer/ChargeSpektrum.c
MABS_run_analyzer/MAPS.c

index dba54e9f19e3979ad7ad59e338aee267c5e76dca..7944e4eb088de98acf9a86a0e27ec29ec75687c2 100644 (file)
 
 Int_t* ReadRunList();
 Int_t ReadRunList(std::vector<int>*);
-void plotAllRuns();
-void plotAllRuns(TString);
-void writeObservableToFile(TString);
-void writeObservableToFile();
+Bool_t plotAllRuns();
+Bool_t plotAllRuns(TString);
+Bool_t writeObservableToFile(TString);
+Bool_t writeObservableToFile();
 void writeObservableToFileHistSelect(TString);
 Run** runs;
 Int_t numberRuns;
@@ -227,14 +227,19 @@ Int_t ReadRunList(std::vector<int>* runlist)
 //     
 // }
 
-void writeObservableToFile(TString histogramtype)
+Bool_t writeObservableToFile(TString histogramtype)
 {
     if (histogramtype.Contains("threshold"))
     {
         if (histogramtype.Contains("calibrated"))
         {
             for(Int_t runi=0;runi<numberRuns;runi++)/* loop over runs read from file */
-                runs[runi]->plothistogramstructpointer = &runs[runi]->histogramthresholdCalibrated;
+            {
+                if (runs[runi]->histogramthresholdCalibrated.calibrated)
+                    runs[runi]->plothistogramstructpointer = &runs[runi]->histogramthresholdCalibrated;
+                else
+                    return 1;
+            }
         }
         else
         {
@@ -245,11 +250,14 @@ void writeObservableToFile(TString histogramtype)
     }
     else if (histogramtype.Contains("calibrated") || histogramtype.Contains("electron")) {
         for(Int_t runi=0;runi<numberRuns;runi++) /* loop over runs read from file */ {
-            runs[runi]->plothistogramstructpointer = &runs[runi]->histogramCalibrated; } }
+            if (runs[runi]->histogramCalibrated.calibrated)
+                runs[runi]->plothistogramstructpointer = &runs[runi]->histogramCalibrated;
+            else return 1;        } }
     else {
         for(Int_t runi=0;runi<numberRuns;runi++) /* loop over runs read from file */ {
             runs[runi]->plothistogramstructpointer = &runs[runi]->histogram; } }
     writeObservableToFileHistSelect(histogramtype);
+    return 0;
 }
 void writeObservableToFileHistSelect(TString histogramtype)
 {
@@ -268,7 +276,7 @@ void writeObservableToFileHistSelect(TString histogramtype)
     writeObservableToFile();
 }
 
-void writeObservableToFile()
+Bool_t writeObservableToFile()
 {
     system("mkdir "+ runs[0]->savepathresults + " -p");
     TString headerInfo = "";
@@ -280,10 +288,16 @@ void writeObservableToFile()
     TString runnumberListe=Form("%s_",plothistogrampointer->GetName());
     TString header="";
        for(Int_t runi=0;runi<numberRuns;runi++) // loop over runs read from file
-    {  
-        plothistogrampointer = *runs[runi]->plothistogrampointer;
-        runnumberListe+=Form("%d_",runs[runi]->labbook.runnumber);
-        header+=Form("%d\t%s\t", runs[runi]->labbook.runnumber, plothistogrampointer->GetName());
+    {
+        if (runs[runi] != nullptr)
+        {
+            if (!runs[runi]->error)
+            {
+                plothistogrampointer = *runs[runi]->plothistogrampointer;
+                runnumberListe+=Form("%d_",runs[runi]->labbook.runnumber);
+                header+=Form("%d\t%s\t", runs[runi]->labbook.runnumber, plothistogrampointer->GetName());
+            }
+        }
        }
     TString filename= runs[0]->savepathresults + "/" + runnumberListe + "histograms.dat";
     fstream* fout = new fstream(filename,ios::out);
@@ -293,26 +307,35 @@ void writeObservableToFile()
     {
                for(Int_t runi=0;runi<numberRuns;runi++) // loop over runs read from file
         {
-            plothistogrampointer = *runs[runi]->plothistogrampointer;
-                       TString outline;
-            outline=Form("%.1f\t%.1f\t",plothistogrampointer->GetBinCenter(bini),plothistogrampointer->GetBinContent(bini));
-                       *fout<<outline;
+            if (runs[runi] != nullptr)
+            {
+                if (!runs[runi]->error)
+                {
+                    plothistogrampointer = *runs[runi]->plothistogrampointer;
+                    TString outline;
+                    outline=Form("%.1f\t%.1f\t",plothistogrampointer->GetBinCenter(bini),plothistogrampointer->GetBinContent(bini));
+                    *fout<<outline;
+                }
+            }
                }
                *fout<<endl;
        }
     fout->close();
        
-    return;
+    return 0;
 }
 
-void plotAllRuns(TString histogramtype)
+Bool_t plotAllRuns(TString histogramtype)
 {
     if (histogramtype.Contains("threshold"))
     {
         if (histogramtype.Contains("calibrated"))
         {
             for(Int_t runi=0;runi<numberRuns;runi++)/* loop over runs read from file */
-                runs[runi]->plothistogramstructpointer = &runs[runi]->histogramthresholdCalibrated;
+                if (runs[runi]->histogramthresholdCalibrated.calibrated)
+                    runs[runi]->plothistogramstructpointer = &runs[runi]->histogramthresholdCalibrated;
+                else
+                    return 1;
         }
         else
         {
@@ -323,14 +346,18 @@ void plotAllRuns(TString histogramtype)
     }
     else if (histogramtype.Contains("calibrated") || histogramtype.Contains("electron")) {
         for(Int_t runi=0;runi<numberRuns;runi++) /* loop over runs read from file */ {
-            runs[runi]->plothistogramstructpointer = &runs[runi]->histogramCalibrated; } }
-            else {
-                for(Int_t runi=0;runi<numberRuns;runi++) /* loop over runs read from file */ {
-                    runs[runi]->plothistogramstructpointer = &runs[runi]->histogram; } }
+            if (runs[runi]->histogramCalibrated.calibrated)
+                runs[runi]->plothistogramstructpointer = &runs[runi]->histogramCalibrated;
+            else
+                return 1;  } }
+    else {
+        for(Int_t runi=0;runi<numberRuns;runi++) /* loop over runs read from file */ {
+            runs[runi]->plothistogramstructpointer = &runs[runi]->histogram; } }
     plotAllRuns();
+    return 0;
 }
 
-void plotAllRuns()
+Bool_t plotAllRuns()
 {
     if (numberRuns > 1)
     {
@@ -392,5 +419,6 @@ void plotAllRuns()
         f->Append(img);
         f->Write();
     }
+    return 0;
 }
 
index 0d575402bee4fabb18d57f1e56ca9418465141f3..e5a32bfb0ca55ae094dad0b39567c2242325f116 100644 (file)
@@ -821,7 +821,7 @@ bool MAPS::InitialDynNoise(Int_t startframe, Int_t frames) {
             getFrame(framei);
             for(Int_t pixeli=0; pixeli<fPixels; pixeli++)
             {
-                if (abs(1.*(fCdsmatrix[pixeli]-fPedestals[pixeli])) < 5.*fNoise[pixeli])
+                if (abs(1.*(fCdsmatrix[pixeli]-fPedestals[pixeli])) <= 5.*fNoise[pixeli])
                 {
                     pixelpedestal2[pixeli] += fCdsmatrix[pixeli];
                 }
@@ -845,7 +845,7 @@ bool MAPS::InitialDynNoise(Int_t startframe, Int_t frames) {
             getFrame(framei);
             for(Int_t pixeli=0; pixeli<fPixels; pixeli++)
             {
-                if (abs(1.*(fCdsmatrix[pixeli]-fPedestals[pixeli])) < 5.*fNoise[pixeli])
+                if (abs(1.*(fCdsmatrix[pixeli]-fPedestals[pixeli])) <= 5.*fNoise[pixeli])
                 {
                     pixelnoise2[pixeli] += TMath::Power(1.*fCdsmatrix[pixeli]-pixelpedestal2[pixeli],2);
                 }
@@ -858,8 +858,7 @@ bool MAPS::InitialDynNoise(Int_t startframe, Int_t frames) {
         }
         npixelscutawaysecondnoiseestimate = SumOverArray(nframescutawaysecondnoiseestimate, fPixels);
         cout << "In second estimate of dynamic noise, cutted away " << npixelscutawaysecondnoiseestimate << " pixels, in " << frames << " frames. (" << (npixelscutawaysecondnoiseestimate*100./fPixels/frames) << " %)" << endl;
-        
-        
+                
         // third estimate
         // cut away pixels with cds - pedestial > 5 * sigma of noise value from second estimate
         // sum up over all frames every CDS value, pixelwise
@@ -876,7 +875,7 @@ bool MAPS::InitialDynNoise(Int_t startframe, Int_t frames) {
             getFrame(framei);
             for(Int_t pixeli=0; pixeli<fPixels; pixeli++)
             {
-                if (abs(1.*(fCdsmatrix[pixeli]-pixelpedestal2[pixeli])) < 5.*pixelnoise2[pixeli])
+                if (abs(1.*(fCdsmatrix[pixeli]-pixelpedestal2[pixeli])) <= 5.*pixelnoise2[pixeli])
                 {
                     fPedestals[pixeli] += fCdsmatrix[pixeli];
                     if (!useexponentialdecayingnoisewindow)
@@ -900,7 +899,7 @@ bool MAPS::InitialDynNoise(Int_t startframe, Int_t frames) {
             getFrame(framei);
             for(Int_t pixeli=0; pixeli<fPixels; pixeli++)
             {
-                if (abs(1.*(fCdsmatrix[pixeli]-pixelpedestal2[pixeli])) < 5.*pixelnoise2[pixeli])
+                if (abs(1.*(fCdsmatrix[pixeli]-pixelpedestal2[pixeli])) <= 5.*pixelnoise2[pixeli])
                 {
                     fNoise[pixeli] += TMath::Power(1.*fCdsmatrix[pixeli]-fPedestals[pixeli],2);
                     if (!useexponentialdecayingnoisewindow)
@@ -915,7 +914,7 @@ bool MAPS::InitialDynNoise(Int_t startframe, Int_t frames) {
         }
         npixelscutawaythirdnoiseestimate = SumOverArray(nframescutawaythirdnoiseestimate, fPixels);
         cout << "In third estimate of dynamic noise, cutted away " << npixelscutawaythirdnoiseestimate << " pixels in total in " << frames << " frames. (" << (npixelscutawaythirdnoiseestimate*100./fPixels/frames) << " %)" << endl;
-     
+        
         if( fSave  )
         {
             Float_t PEDESTAL;
@@ -1003,14 +1002,14 @@ bool MAPS::regetDynNoise(Int_t Frames) {
                     fPedestalhighFrames++;
                     pedestalhighinthisframe=true;                        
                 }
-                //                     cout<<"\rFrame: "<<fFrameNumber<< " row: " << (Int_t)pixeli/fColumns << " Pedestial of pixel: " << fPedestals[pixeli] <<  " --> Pedestal suspiciously high!"<<endl;
-                //                     cout<<" CDS signal of sensor: ";
-                //                     debugStream<>(fCdsmatrix , fPixels, fColumns, 1, 20);
-                //                     cout<<" Pedestial of sensor: ";
-                //                     debugStream<>(fPedestals , fPixels, fColumns, 1, 20);
-                //                     cout<<" Hitted Pixel discriminator matrix: ";
-                //                     debugStream<>(fHittedPixel, fPixels, fColumns, 1, 1);
-                //                     exit(1);
+//                                     cout<<"\rFrame: "<<fFrameNumber<< " row: " << (Int_t)pixeli/fColumns << " Pedestial of pixel: " << fPedestals[pixeli] <<  " --> Pedestal suspiciously high!"<<endl;
+//                                     cout<<" CDS signal of sensor: ";
+//                                     debugStream<>(fCdsmatrix , fPixels, fColumns, 1, 20);
+//                                     cout<<" Pedestial of sensor: ";
+//                                     debugStream<>(fPedestals , fPixels, fColumns, 1, 20);
+//                                     cout<<" Hitted Pixel discriminator matrix: ";
+//                                     debugStream<>(fHittedPixel, fPixels, fColumns, 1, 1);
+//                                     exit(1);
             }
             if (abs(fNoise[pixeli])>20)
             {