Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/examples/advanced/stim_pixe_tomography/scripts/TomoSpectrum_HIST.C

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Diff markup

Differences between /examples/advanced/stim_pixe_tomography/scripts/TomoSpectrum_HIST.C (Version 11.3.0) and /examples/advanced/stim_pixe_tomography/scripts/TomoSpectrum_HIST.C (Version 9.1.p2)


  1 //********************************************      1 
  2 // TomoSpectrum_HIST.C                            
  3 // Root command file                              
  4 // Type: root TomoSpectrum_HIST.C                 
  5 //                                                
  6 // It visualizes the spectrum of X-rays and pl    
  7 //                                                
  8 // More information is available in UserGuide     
  9 // Created by Z.LI LP2i Bordeaux 2022             
 10 //********************************************    
 11                                                   
 12 #include <math.h>                                 
 13 #include <stdint.h>                               
 14 #include <stdio.h>                                
 15 #include <string.h>                               
 16                                                   
 17 #include <vector>                                 
 18 // using namespace std;                           
 19                                                   
 20 struct PixeEvent                                  
 21 {                                                 
 22   uint16_t energy_10eV;                           
 23   uint16_t pixelIndex;                            
 24   uint16_t sliceIndex;                            
 25   uint8_t projectionIndex;                        
 26 };                                                
 27                                                   
 28 void Plot(vector<double>& energies, int bin, d    
 29 {                                                 
 30   gROOT->Reset();                                 
 31                                                   
 32   auto mycanvas = new TCanvas("canvas", "canva    
 33   mycanvas->ToggleEventStatus();                  
 34                                                   
 35   gPad->SetLeftMargin(0.15);                      
 36                                                   
 37   auto hist = new TH1D("HIST", "Spectrum", bin    
 38                                                   
 39   for (int i = 0; i < energies.size(); ++i) {     
 40     hist->Fill(energies[i]);                      
 41   }                                               
 42                                                   
 43   hist->Draw();                                   
 44   hist->SetTitle("TOMO Energy Spectrum");         
 45   hist->GetXaxis()->SetTitle("ADC channels");     
 46   hist->GetYaxis()->SetTitle("Nb events");        
 47                                                   
 48   hist->GetXaxis()->CenterTitle();                
 49   hist->GetYaxis()->CenterTitle();                
 50                                                   
 51   // hist->GetYaxis()->SetTitleOffset(2);         
 52                                                   
 53   mycanvas->Print("TomoSpectrum_hist.png");       
 54 }                                                 
 55                                                   
 56 void TomoSpectrum_HIST()                          
 57 {                                                 
 58   FILE* input = fopen("../build/PixeEvent_std_    
 59                                                   
 60   if (input == NULL) {                            
 61     printf("----------error for opening the in    
 62     return;                                       
 63   }                                               
 64                                                   
 65   //******************************************    
 66   //**************************Selection parame    
 67   //******************************************    
 68   const int nbProjection = 10;                    
 69   const int nbSlice = 1;                          
 70   const int nbPixel = 20;                         
 71                                                   
 72   int projection_index_begin = 0;  // starter     
 73   int projection_index_end = 0;  // end of the    
 74                                                   
 75   int slice_index_begin = 0;  // starter of th    
 76   int slice_index_end = 0;  // end of the slic    
 77                                                   
 78   //********************Parameters for spectru    
 79   int nbChannels = 4096;                          
 80   double eMin = 0;  // initialization             
 81   double eMax = 0;  //                            
 82                                                   
 83   //******************************************    
 84   //**************************Selection parame    
 85   //******************************************    
 86                                                   
 87   vector<double> energies;                        
 88   PixeEvent p;                                    
 89   while (fread(&p, 7, 1, input)) {                
 90     if (p.projectionIndex >= projection_index_    
 91       if (p.sliceIndex >= slice_index_begin &&    
 92         energies.push_back(p.energy_10eV);        
 93         if (p.energy_10eV > eMax) eMax = p.ene    
 94       }                                           
 95     }                                             
 96   }                                               
 97                                                   
 98   fclose(input);                                  
 99                                                   
100   long int size = energies.size();                
101   vector<int> X(nbChannels);  // save channels    
102   vector<int> Y(nbChannels);                      
103   for (long int i = 0; i < size; ++i) {           
104     int energy = energies[i];                     
105     Y[energy - 1] = Y[energy - 1] + 1;            
106   }                                               
107   for (int i = 0; i < nbChannels; ++i) {          
108     X[i] = 1 + i;                                 
109   }                                               
110                                                   
111   FILE* out = fopen("Spectrum_hist.txt", "wb")    
112                                                   
113   for (int i = 0; i < nbChannels; ++i) {          
114     fprintf(out, "%d\t%d\n", X[i], Y[i]);         
115   }                                               
116                                                   
117   fclose(out);                                    
118                                                   
119   Plot(energies, nbChannels, 0, nbChannels);      
120 }                                                 
121