Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/externals/g4tools/include/tools/data_axis

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 /externals/g4tools/include/tools/data_axis (Version 11.3.0) and /externals/g4tools/include/tools/data_axis (Version 9.5.p2)


  1 // Copyright (C) 2010, Guy Barrand. All rights    
  2 // See the file tools.license for terms.          
  3                                                   
  4 #ifndef tools_data_axis                           
  5 #define tools_data_axis                           
  6                                                   
  7 #include "mathf"                                  
  8                                                   
  9 namespace tools {                                 
 10                                                   
 11 class data_axis {                                 
 12 public:                                           
 13   data_axis():m_min_value(0),m_max_value(0),m_    
 14   virtual ~data_axis(){}                          
 15 public:                                           
 16   data_axis(const data_axis& a_from)              
 17   :m_min_value(a_from.m_min_value)                
 18   ,m_max_value(a_from.m_max_value)                
 19   ,m_is_log(a_from.m_is_log)                      
 20   {}                                              
 21   data_axis& operator=(const data_axis& a_from    
 22     m_min_value = a_from.m_min_value;             
 23     m_max_value = a_from.m_max_value;             
 24     m_is_log = a_from.m_is_log;                   
 25     return *this;                                 
 26   }                                               
 27 public:                                           
 28   bool set_is_log(bool a_v) {if(m_is_log==a_v)    
 29   bool set_min_value(float a_v) {if(m_min_valu    
 30   bool set_max_value(float a_v) {if(m_max_valu    
 31 #ifdef tools_data_axis  //g4tools backcomp :      
 32   bool is_log(bool a_v) {if(m_is_log==a_v) ret    
 33   bool min_value(float a_v) {if(m_min_value==a    
 34   bool max_value(float a_v) {if(m_max_value==a    
 35 #endif                                            
 36   float min_value() const {return m_min_value;    
 37   float max_value() const {return m_max_value;    
 38   bool is_log() const {return m_is_log;}          
 39                                                   
 40   void adjust() { //from hippodraw.               
 41     int _axis = 0;                                
 42     float step;                                   
 43     float mylow, myhigh;                          
 44     int N_NICE = 4;                               
 45     static const float nice[/*N_NICE*/4] = { 1    
 46                                                   
 47     if (m_min_value > m_max_value) {              
 48       float low = m_min_value;                    
 49       m_min_value = m_max_value;                  
 50       m_max_value = low;                          
 51     } else if (m_min_value == m_max_value) {      
 52       float value = m_min_value;                  
 53       m_min_value = value - 1;                    
 54       m_max_value = value + 1;                    
 55       return;                                     
 56     }                                             
 57                                                   
 58     //if (m_steps <= 0) { //if letting the if     
 59       _axis    = 1;                               
 60     unsigned int m_steps = 10;                    
 61     //}                                           
 62                                                   
 63     // Round the "bin width" to a nice number.    
 64     // If this is being done for an axis (ie m    
 65     // we don't have to go > *m_max_value.        
 66     //                                            
 67     float w = (m_max_value - m_min_value)/((fl    
 68     float mag = ffloor(flog10(w));                
 69     int i = 0;                                    
 70     do {                                          
 71       step   = nice[i] * fpow(10.0,mag);          
 72       mylow  = ffloor(m_min_value/step) * step    
 73     //myhigh = _axis==1 ? fceil(m_max_value/st    
 74       myhigh = fceil(m_max_value/step) * step;    
 75       i++;                                        
 76       if (i>=N_NICE) {i = 0;mag++;}               
 77     }                                             
 78     while ( ( (_axis==1) && (myhigh < m_max_va    
 79             ( (_axis==0) && (myhigh <= m_max_v    
 80                                                   
 81     float range = myhigh - mylow;                 
 82                                                   
 83     // we now have decided on a range. Try to     
 84     // m_min_value/m_max_value a little           
 85     // to end up on a nice number.                
 86     //                                            
 87     // first check if either end is near 0.0      
 88     if ( !m_is_log && (m_min_value >= 0.0) &&     
 89         (( (_axis==1) && (range>=m_max_value)     
 90          ( (_axis==0) && (range>m_max_value) )    
 91       m_min_value = 0.0;                          
 92       m_max_value = range;                        
 93       return;                                     
 94     }                                             
 95                                                   
 96     if ( (( (_axis==1) && (m_max_value<=0.0) )    
 97           ( (_axis==0) && (m_max_value<0.0) ))    
 98          && (-range<=m_min_value)) {              
 99       m_max_value = 0.0;                          
100       m_min_value = -range;                       
101       return;                                     
102     }                                             
103                                                   
104     // try to round *m_min_value.                 
105     // correction                                 
106     if( m_is_log && (m_min_value<=0.0)) m_min_    
107                                                   
108     i   = N_NICE-1;                               
109     mag = myhigh != 0.0 ? fceil(flog10(ffabs(m    
110                                                   
111     do {                                          
112       step   = nice[i] * fpow(10.0,mag);          
113       mylow  = ffloor(m_min_value/step) * step    
114       myhigh = mylow + range;                     
115       i--;                                        
116       if (i<0) {                                  
117         i = N_NICE-1;                             
118         mag--;                                    
119       }                                           
120     }                                             
121     while (( m_is_log && (mylow  <= 0.0)     )    
122            ( (_axis==1)  && (myhigh < m_max_va    
123            ( (_axis==0)  && (myhigh <= m_max_v    
124                                                   
125     m_min_value = mylow;                          
126     m_max_value = myhigh;                         
127   }                                               
128 protected:                                        
129   float m_min_value;                              
130   float m_max_value;                              
131   //int m_steps;                                  
132   bool m_is_log;                                  
133 };                                                
134                                                   
135 }                                                 
136                                                   
137 #endif