52 G4int oldprc = os.precision(16);
67 const G4bool confirm =
true;
68 G4int oldprc = os.precision(prec);
70 auto itrecA= startA.cbegin();
71 auto itrecB= endB.cbegin();
73 os <<
"====================================================================="
75 os <<
" Size of individual change record: startA : " << startA.size()
76 <<
" endB : " << endB.size() <<
G4endl;
77 os <<
"====================================================================="
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)" <<
" "
86 os <<
"=====================================================================";
88 auto eventA = (*itrecA).GetCount();
89 auto eventB = (*itrecB).GetCount();
96 G4int maxEvent = std::max( startA[ startA.size() - 1 ].GetCount() ,
97 endB[ endB.size() - 1 ].GetCount() );
101 G4bool advanceA=
false, advanceB=
false;
107 if( ((
G4int)eventA>prevA) && ((
G4int)eventB>prevB) )
109 auto codeLocA= (*itrecA).GetLocation();
112 os << setw( 7 ) << eventA <<
" "
113 << setw( 4 ) << (*itrecA).GetIteration() <<
" "
114 << setw( 3 ) << codeLocA <<
" "
117 << setw( prec+9 ) << (*itrecA).GetLength() <<
" "
118 << setw( prec+9 ) << (*itrecB).GetLength() <<
" ";
121 os << setw( 4 ) << (*itrecB).GetIteration() <<
" "
122 << setw( 15 ) << (*itrecB).GetLocation();
127 if ( (
G4int)eventA > prevA )
129 auto codeLocA= (*itrecA).GetLocation();
131 os << setw( 7 ) << (*itrecA).GetCount() <<
" "
132 << setw( 4 ) << (*itrecA).GetIteration() <<
" "
133 << setw( 3 ) << codeLocA <<
" "
136 << setw( prec+9 ) << (*itrecA).GetLength() <<
" "
137 << setw( prec+9 ) <<
" " <<
" ";
142 auto codeLocB= (*itrecB).GetLocation();
145 os << setw( 7 ) << eventB <<
" "
146 << setw( 4 ) << (*itrecB).GetIteration() <<
" "
147 << setw( 3 ) << codeLocB <<
" "
150 << setw( prec+9 ) <<
" " <<
" "
151 << setw( prec+9 ) << (*itrecB).GetLength() <<
" " ;
161 G4int nextAct = maxEvent, nextBct = maxEvent;
164 if ( nextA != startA.end() ) { nextAct = (*nextA).GetCount(); }
165 if ( nextB != endB.end() ) { nextBct = (*nextB).GetCount(); }
167 isLastA= ( nextA >= startA.end() );
168 isLastB= ( nextB >= endB.end() );
170 advanceA= ( nextAct <= nextBct ) && !isLastA;
171 advanceB= ( nextBct <= nextAct ) && !isLastB;
176 if( !isLastA ) { ++jA; }
177 eventA = isLastA ? maxEvent : (*itrecA).GetCount();
183 if( !isLastB ) { ++jB; }
184 eventB = isLastB ? maxEvent : (*itrecB).GetCount();
188 if( isLastA != ( nextA == startA.end() ) )
191 os <<
" Checking isLastA= " << isLastA
192 <<
" vs expected : " << ( itrecA == startA.end() );
193 os <<
" BAD --- ERROR " <<
G4endl;
195 if( isLastB != ( nextB == endB.end() ) )
198 os <<
" Checking isLastB= " << isLastB
199 <<
" vs expected : " << ( itrecB == endB.end() );
200 os <<
" BAD --- ERROR " <<
G4endl;
202 }
while ( ! ( isLastA && isLastB ) );
205 os.precision(oldprc);
std::ostream & operator<<(std::ostream &os, const G4LocatorChangeLogger &logger)
std::ostream & StreamInfo(std::ostream &os) const
static std::ostream & ReportEndChanges(std::ostream &os, const G4LocatorChangeLogger &startA, const G4LocatorChangeLogger &endB)
static const char * GetNameChangeLocation(EChangeLocation)
static std::ostream & ReportVector(std::ostream &os, const std::string &nameOfRecord, const std::vector< G4LocatorChangeRecord > &lcr)