Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/geometry/navigation/src/G4LocatorChangeLogger.cc

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 /geometry/navigation/src/G4LocatorChangeLogger.cc (Version 11.3.0) and /geometry/navigation/src/G4LocatorChangeLogger.cc (Version 9.3.p1)


  1 //                                                  1 
  2 // *******************************************    
  3 // * License and Disclaimer                       
  4 // *                                              
  5 // * The  Geant4 software  is  copyright of th    
  6 // * the Geant4 Collaboration.  It is provided    
  7 // * conditions of the Geant4 Software License    
  8 // * LICENSE and available at  http://cern.ch/    
  9 // * include a list of copyright holders.         
 10 // *                                              
 11 // * Neither the authors of this software syst    
 12 // * institutes,nor the agencies providing fin    
 13 // * work  make  any representation or  warran    
 14 // * regarding  this  software system or assum    
 15 // * use.  Please see the license in the file     
 16 // * for the full disclaimer and the limitatio    
 17 // *                                              
 18 // * This  code  implementation is the result     
 19 // * technical work of the GEANT4 collaboratio    
 20 // * By using,  copying,  modifying or  distri    
 21 // * any work based  on the software)  you  ag    
 22 // * use  in  resulting  scientific  publicati    
 23 // * acceptance of all terms of the Geant4 Sof    
 24 // *******************************************    
 25 //                                                
 26 // G4LocatorChangeLogger class implementation     
 27 //                                                
 28 // Author: John Apostolakis, 04.09.19 - First     
 29 // -------------------------------------------    
 30                                                   
 31 #include <iostream>                               
 32 #include <iomanip>                                
 33 #include <locale>                                 
 34 // #include <cassert>                             
 35                                                   
 36 #include "G4LocatorChangeLogger.hh"               
 37                                                   
 38 // -------------------------------------------    
 39 // Streaming operator dumping record              
 40 //                                                
 41 std::ostream& operator<< ( std::ostream& os,      
 42                            const G4LocatorChan    
 43 {                                                 
 44   return logger.StreamInfo(os);                   
 45 }                                                 
 46                                                   
 47 // -------------------------------------------    
 48 // Stream object contents to an output stream     
 49 //                                                
 50 std::ostream& G4LocatorChangeLogger::StreamInf    
 51 {                                                 
 52   G4long oldprc = os.precision(16);               
 53   G4LocatorChangeRecord::ReportVector( os, thi    
 54   os.precision(oldprc);                           
 55   return os;                                      
 56 }                                                 
 57                                                   
 58 // -------------------------------------------    
 59 //  Print the changes in start, end points in     
 60 //                                                
 61 std::ostream& G4LocatorChangeLogger::ReportEnd    
 62                                        const G    
 63                                        const G    
 64 {                                                 
 65   using std::setw;                                
 66   G4int prec= 16;                                 
 67   const G4bool confirm = true;                    
 68   G4long oldprc = os.precision(prec);             
 69                                                   
 70   auto itrecA= startA.cbegin();                   
 71   auto itrecB= endB.cbegin();                     
 72                                                   
 73   os << "=====================================    
 74      << G4endl;                                   
 75   os << "  Size of individual change record:      
 76      << "  endB : " <<   endB.size() << G4endl    
 77   os << "=====================================    
 78      << G4endl;                                   
 79                                                   
 80   os << setw( 7 ) << "Change#"  << "  "           
 81      << setw( 4 ) << "Iter"  << "  "              
 82      << setw( 20 ) << "CodeLocation"  << "  "     
 83      << setw( prec+9 ) << "Length-A (start)" <    
 84      << setw( prec+9 ) << "Length-B (end)" <<     
 85      << G4endl;                                   
 86   os << "=====================================    
 87                                                   
 88   auto eventA = (*itrecA).GetCount();             
 89   auto eventB = (*itrecB).GetCount();             
 90                                                   
 91   G4bool isLastA= false;                          
 92   G4bool isLastB= false;                          
 93                                                   
 94   G4int maxEvent = std::max( startA[ startA.si    
 95                              endB[   endB.size    
 96   G4int prevA = -1;                               
 97   G4int prevB = -1;                               
 98                                                   
 99   G4bool advanceA= false, advanceB= false;        
100   do                                              
101   {                                               
102      advanceA= false;                             
103      advanceB= false;                             
104                                                   
105      if( ((G4int)eventA>prevA) && ((G4int)even    
106      {                                            
107         auto codeLocA= (*itrecA).GetLocation()    
108                                                   
109         os << G4endl;                             
110         os << setw( 7 ) << eventA  << "  "        
111            << setw( 4 ) << (*itrecA).GetIterat    
112            << setw( 3 ) << codeLocA << " "        
113            << setw( 15 )                          
114            << G4LocatorChangeRecord::GetNameCh    
115            << setw( prec+9 ) << (*itrecA).GetL    
116            << setw( prec+9 ) << (*itrecB).GetL    
117         if( confirm )                             
118         {                                         
119           os << setw( 4 ) << (*itrecB).GetIter    
120              << setw( 15 ) << (*itrecB).GetLoc    
121         }                                         
122      }                                            
123      else                                         
124      {                                            
125         if ( (G4int)eventA > prevA )              
126         {                                         
127           auto codeLocA= (*itrecA).GetLocation    
128           os << G4endl;                           
129           os << setw( 7 ) << (*itrecA).GetCoun    
130              << setw( 4 ) << (*itrecA).GetIter    
131              << setw( 3 ) << codeLocA << " "      
132              << setw( 15 )                        
133              << G4LocatorChangeRecord::GetName    
134              << setw( prec+9 ) << (*itrecA).Ge    
135              << setw( prec+9 ) << "       " <<    
136         }                                         
137         else                                      
138         {                                         
139           // assert( (G4int)eventB > prevB );     
140           auto codeLocB= (*itrecB).GetLocation    
141                                                   
142           os << G4endl;                           
143           os << setw( 7 ) << eventB  << "  "      
144              << setw( 4 ) << (*itrecB).GetIter    
145              << setw( 3 ) << codeLocB << " "      
146              << setw( 15 )                        
147              << G4LocatorChangeRecord::GetName    
148              << setw( prec+9 ) << "       " <<    
149              << setw( prec+9 ) << (*itrecB).Ge    
150         }                                         
151      }                                            
152                                                   
153      prevA= eventA;                               
154      prevB= eventB;                               
155                                                   
156      auto nextA= itrecA;                          
157      auto nextB= itrecB;                          
158                                                   
159      G4int nextAct = maxEvent, nextBct = maxEv    
160      ++nextA;                                     
161      ++nextB;                                     
162      if ( nextA != startA.end() ) { nextAct =     
163      if ( nextB !=   endB.end() ) { nextBct =     
164                                                   
165      isLastA=  ( nextA >= startA.end() );         
166      isLastB=  ( nextB >=   endB.end() );         
167                                                   
168      advanceA= ( nextAct <= nextBct ) && !isLa    
169      advanceB= ( nextBct <= nextAct ) && !isLa    
170                                                   
171      if( advanceA )                               
172      {                                            
173         ++itrecA;                                 
174         eventA = isLastA ? maxEvent : (*itrecA    
175      }                                            
176                                                   
177      if( advanceB )                               
178      {                                            
179         ++itrecB;                                 
180         eventB = isLastB ? maxEvent : (*itrecB    
181      }                                            
182                                                   
183      // Checks                                    
184      if( isLastA !=  ( nextA == startA.end() )    
185      {                                            
186         os << G4endl;                             
187         os << "  Checking isLastA= " << isLast    
188            << " vs expected :  " << ( itrecA =    
189         os << " BAD --- ERROR " << G4endl;        
190      }                                            
191      if( isLastB !=  ( nextB == endB.end() ) )    
192      {                                            
193         os << G4endl;                             
194         os << "  Checking isLastB= " << isLast    
195            << " vs expected :  " << ( itrecB =    
196         os << " BAD --- ERROR " << G4endl;        
197      }                                            
198   } while ( ! ( isLastA && isLastB ) );           
199                                                   
200   os << G4endl;                                   
201   os.precision(oldprc);                           
202   return os;                                      
203 }                                                 
204