Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4ErrorSymMatrix.hh File Reference
#include <vector>
#include "G4ErrorSymMatrix.icc"

Go to the source code of this file.

Classes

class  G4ErrorSymMatrix
 
class  G4ErrorSymMatrix::G4ErrorSymMatrix_row
 
class  G4ErrorSymMatrix::G4ErrorSymMatrix_row_const
 

Functions

std::ostream & operator<< (std::ostream &s, const G4ErrorSymMatrix &q)
 
G4ErrorMatrix operator* (const G4ErrorMatrix &m1, const G4ErrorSymMatrix &m2)
 
G4ErrorMatrix operator* (const G4ErrorSymMatrix &m1, const G4ErrorMatrix &m2)
 
G4ErrorMatrix operator* (const G4ErrorSymMatrix &m1, const G4ErrorSymMatrix &m2)
 
G4ErrorSymMatrix operator* (G4double t, const G4ErrorSymMatrix &s1)
 
G4ErrorSymMatrix operator* (const G4ErrorSymMatrix &s1, G4double t)
 
G4ErrorSymMatrix operator/ (const G4ErrorSymMatrix &m1, G4double t)
 
G4ErrorMatrix operator+ (const G4ErrorMatrix &m1, const G4ErrorSymMatrix &s2)
 
G4ErrorMatrix operator+ (const G4ErrorSymMatrix &s1, const G4ErrorMatrix &m2)
 
G4ErrorSymMatrix operator+ (const G4ErrorSymMatrix &s1, const G4ErrorSymMatrix &s2)
 
G4ErrorMatrix operator- (const G4ErrorMatrix &m1, const G4ErrorSymMatrix &s2)
 
G4ErrorMatrix operator- (const G4ErrorSymMatrix &m1, const G4ErrorMatrix &m2)
 
G4ErrorSymMatrix operator- (const G4ErrorSymMatrix &s1, const G4ErrorSymMatrix &s2)
 
G4ErrorSymMatrix dsum (const G4ErrorSymMatrix &s1, const G4ErrorSymMatrix &s2)
 
G4double condition (const G4ErrorSymMatrix &m)
 
void diag_step (G4ErrorSymMatrix *t, G4int begin, G4int end)
 
void diag_step (G4ErrorSymMatrix *t, G4ErrorMatrix *u, G4int begin, G4int end)
 
G4ErrorMatrix diagonalize (G4ErrorSymMatrix *s)
 
void house_with_update2 (G4ErrorSymMatrix *a, G4ErrorMatrix *v, G4int row=1, G4int col=1)
 
void tridiagonal (G4ErrorSymMatrix *a, G4ErrorMatrix *hsm)
 
G4ErrorMatrix tridiagonal (G4ErrorSymMatrix *a)
 

Function Documentation

◆ condition()

G4double condition ( const G4ErrorSymMatrix m)

Referenced by G4VITRestDiscreteProcess::AtRestGetPhysicalInteractionLength(), G4AntiNeutronAnnihilationAtRest::AtRestGetPhysicalInteractionLength(), G4AntiProtonAnnihilationAtRest::AtRestGetPhysicalInteractionLength(), G4KaonMinusAbsorption::AtRestGetPhysicalInteractionLength(), G4NeutronCaptureAtRest::AtRestGetPhysicalInteractionLength(), G4PionMinusAbsorptionAtRest::AtRestGetPhysicalInteractionLength(), G4IVRestDiscreteProcess::AtRestGetPhysicalInteractionLength(), G4VRestContinuousDiscreteProcess::AtRestGetPhysicalInteractionLength(), G4VRestContinuousProcess::AtRestGetPhysicalInteractionLength(), G4VRestDiscreteProcess::AtRestGetPhysicalInteractionLength(), G4FastSimulationManagerProcess::AtRestGetPhysicalInteractionLength(), G4ParallelWorldProcess::AtRestGetPhysicalInteractionLength(), G4ParallelWorldScoringProcess::AtRestGetPhysicalInteractionLength(), G4ScoreSplittingProcess::AtRestGetPhysicalInteractionLength(), G4Decay::AtRestGetPhysicalInteractionLength(), G4AdjointProcessEquivalentToDirectProcess::AtRestGetPhysicalInteractionLength(), G4VITRestProcess::AtRestGetPhysicalInteractionLength(), G4DNAMolecularDecay::AtRestGetPhysicalInteractionLength(), G4eplusPolarizedAnnihilation::AtRestGetPhysicalInteractionLength(), G4eplusAnnihilation::AtRestGetPhysicalInteractionLength(), G4PionMinusNuclearAtRestChips::AtRestGetPhysicalInteractionLength(), G4ProtonAntiProtonAtRestChips::AtRestGetPhysicalInteractionLength(), G4HadronStoppingProcess::AtRestGetPhysicalInteractionLength(), G4VRestProcess::AtRestGetPhysicalInteractionLength(), G4WrapperProcess::AtRestGetPhysicalInteractionLength(), G4VProcess::AtRestGPIL(), G4VLowEnergyTestableDiscreteProcess::DumpMeanFreePath(), G4ForwardXrayTR::GetMeanFreePath(), G4TransitionRadiation::GetMeanFreePath(), G4OpBoundaryProcess::GetMeanFreePath(), G4PolarizedCompton::GetMeanFreePath(), G4VXTRenergyLoss::GetMeanFreePath(), G4Scintillation::GetMeanFreePath(), G4hImpactIonisation::GetMeanFreePath(), G4VAdjointReverseReaction::GetMeanFreePath(), G4eplusPolarizedAnnihilation::GetMeanFreePath(), G4VEmProcess::GetMeanFreePath(), G4VEnergyLossProcess::GetMeanFreePath(), G4SynchrotronRadiation::GetMeanFreePath(), G4SynchrotronRadiationInMat::GetMeanFreePath(), G4VMultipleScattering::GetMeanFreePath(), G4VTransitionRadiation::GetMeanFreePath(), G4Scintillation::GetMeanLifeTime(), G4VMultipleScattering::PostStepGetPhysicalInteractionLength(), G4ParallelWorldProcess::PostStepGetPhysicalInteractionLength(), G4ImportanceProcess::PostStepGetPhysicalInteractionLength(), G4WeightCutOffProcess::PostStepGetPhysicalInteractionLength(), G4WeightWindowProcess::PostStepGetPhysicalInteractionLength(), G4Cerenkov::PostStepGetPhysicalInteractionLength(), G4ErrorMagFieldLimitProcess::PostStepGetPhysicalInteractionLength(), G4ErrorStepLengthLimitProcess::PostStepGetPhysicalInteractionLength(), G4ErrorTrackLengthTarget::PostStepGetPhysicalInteractionLength(), MaxTimeCuts::PostStepGetPhysicalInteractionLength(), MinEkineCuts::PostStepGetPhysicalInteractionLength(), G4Decay::PostStepGetPhysicalInteractionLength(), G4UnknownDecay::PostStepGetPhysicalInteractionLength(), G4AdjointProcessEquivalentToDirectProcess::PostStepGetPhysicalInteractionLength(), G4VITRestDiscreteProcess::PostStepGetPhysicalInteractionLength(), G4eplusPolarizedAnnihilation::PostStepGetPhysicalInteractionLength(), G4PolarizedCompton::PostStepGetPhysicalInteractionLength(), G4VEmProcess::PostStepGetPhysicalInteractionLength(), G4VEnergyLossProcess::PostStepGetPhysicalInteractionLength(), G4HadronStoppingProcess::PostStepGetPhysicalInteractionLength(), G4VContinuousDiscreteProcess::PostStepGetPhysicalInteractionLength(), G4VDiscreteProcess::PostStepGetPhysicalInteractionLength(), G4VRestContinuousDiscreteProcess::PostStepGetPhysicalInteractionLength(), G4VRestDiscreteProcess::PostStepGetPhysicalInteractionLength(), G4WrapperProcess::PostStepGetPhysicalInteractionLength(), G4FastSimulationManagerProcess::PostStepGetPhysicalInteractionLength(), G4ParallelWorldScoringProcess::PostStepGetPhysicalInteractionLength(), G4ScoreSplittingProcess::PostStepGetPhysicalInteractionLength(), G4NeutronKiller::PostStepGetPhysicalInteractionLength(), G4StepLimiter::PostStepGetPhysicalInteractionLength(), G4UserSpecialCuts::PostStepGetPhysicalInteractionLength(), and G4VProcess::PostStepGPIL().

◆ diag_step() [1/2]

void diag_step ( G4ErrorSymMatrix t,
G4ErrorMatrix u,
G4int  begin,
G4int  end 
)

◆ diag_step() [2/2]

void diag_step ( G4ErrorSymMatrix t,
G4int  begin,
G4int  end 
)

◆ diagonalize()

G4ErrorMatrix diagonalize ( G4ErrorSymMatrix s)

◆ dsum()

Definition at line 183 of file G4ErrorSymMatrix.cc.

185{
186 G4ErrorSymMatrix mret(mat1.num_row() + mat2.num_row(), 0);
187 mret.sub(1,mat1);
188 mret.sub(mat1.num_row()+1,mat2);
189 return mret;
190}

◆ house_with_update2()

void house_with_update2 ( G4ErrorSymMatrix a,
G4ErrorMatrix v,
G4int  row = 1,
G4int  col = 1 
)

◆ operator*() [1/5]

G4ErrorMatrix operator* ( const G4ErrorMatrix m1,
const G4ErrorSymMatrix m2 
)

Definition at line 287 of file G4ErrorSymMatrix.cc.

288{
289 G4ErrorMatrix mret(mat1.num_row(),mat2.num_col());
290 CHK_DIM_1(mat1.num_col(),mat2.num_row(),*);
291 G4ErrorMatrixConstIter mit1, mit2, sp,snp; //mit2=0
292 G4double temp;
293 G4ErrorMatrixIter mir=mret.m.begin();
294 for(mit1=mat1.m.begin();
295 mit1<mat1.m.begin()+mat1.num_row()*mat1.num_col();
296 mit1 = mit2)
297 {
298 snp=mat2.m.begin();
299 for(int step=1;step<=mat2.num_row();++step)
300 {
301 mit2=mit1;
302 sp=snp;
303 snp+=step;
304 temp=0;
305 while(sp<snp)
306 temp+=*(sp++)*(*(mit2++));
307 if( step<mat2.num_row() ) { // only if we aren't on the last row
308 sp+=step-1;
309 for(int stept=step+1;stept<=mat2.num_row();stept++)
310 {
311 temp+=*sp*(*(mit2++));
312 if(stept<mat2.num_row()) sp+=stept;
313 }
314 } // if(step
315 *(mir++)=temp;
316 } // for(step
317 } // for(mit1
318 return mret;
319}
std::vector< G4double >::iterator G4ErrorMatrixIter
std::vector< G4double >::const_iterator G4ErrorMatrixConstIter
#define CHK_DIM_1(c1, r2, fun)
double G4double
Definition: G4Types.hh:64

◆ operator*() [2/5]

G4ErrorMatrix operator* ( const G4ErrorSymMatrix m1,
const G4ErrorMatrix m2 
)

Definition at line 321 of file G4ErrorSymMatrix.cc.

322{
323 G4ErrorMatrix mret(mat1.num_row(),mat2.num_col());
324 CHK_DIM_1(mat1.num_col(),mat2.num_row(),*);
325 G4int step,stept;
326 G4ErrorMatrixConstIter mit1,mit2,sp,snp;
327 G4double temp;
328 G4ErrorMatrixIter mir=mret.m.begin();
329 for(step=1,snp=mat1.m.begin();step<=mat1.num_row();snp+=step++)
330 {
331 for(mit1=mat2.m.begin();mit1<mat2.m.begin()+mat2.num_col();mit1++)
332 {
333 mit2=mit1;
334 sp=snp;
335 temp=0;
336 while(sp<snp+step)
337 {
338 temp+=*mit2*(*(sp++));
339 mit2+=mat2.num_col();
340 }
341 sp+=step-1;
342 for(stept=step+1;stept<=mat1.num_row();stept++)
343 {
344 temp+=*mit2*(*sp);
345 mit2+=mat2.num_col();
346 sp+=stept;
347 }
348 *(mir++)=temp;
349 }
350 }
351 return mret;
352}
int G4int
Definition: G4Types.hh:66

◆ operator*() [3/5]

G4ErrorMatrix operator* ( const G4ErrorSymMatrix m1,
const G4ErrorSymMatrix m2 
)

Definition at line 354 of file G4ErrorSymMatrix.cc.

355{
356 G4ErrorMatrix mret(mat1.num_row(),mat1.num_row());
357 CHK_DIM_1(mat1.num_col(),mat2.num_row(),*);
358 G4int step1,stept1,step2,stept2;
359 G4ErrorMatrixConstIter snp1,sp1,snp2,sp2;
360 G4double temp;
361 G4ErrorMatrixIter mr = mret.m.begin();
362 for(step1=1,snp1=mat1.m.begin();step1<=mat1.num_row();snp1+=step1++)
363 {
364 for(step2=1,snp2=mat2.m.begin();step2<=mat2.num_row();)
365 {
366 sp1=snp1;
367 sp2=snp2;
368 snp2+=step2;
369 temp=0;
370 if(step1<step2)
371 {
372 while(sp1<snp1+step1)
373 { temp+=(*(sp1++))*(*(sp2++)); }
374 sp1+=step1-1;
375 for(stept1=step1+1;stept1!=step2+1;sp1+=stept1++)
376 { temp+=(*sp1)*(*(sp2++)); }
377 sp2+=step2-1;
378 for(stept2=++step2;stept2<=mat2.num_row();sp1+=stept1++,sp2+=stept2++)
379 { temp+=(*sp1)*(*sp2); }
380 }
381 else
382 {
383 while(sp2<snp2)
384 { temp+=(*(sp1++))*(*(sp2++)); }
385 sp2+=step2-1;
386 for(stept2=++step2;stept2!=step1+1;sp2+=stept2++)
387 { temp+=(*(sp1++))*(*sp2); }
388 sp1+=step1-1;
389 for(stept1=step1+1;stept1<=mat1.num_row();sp1+=stept1++,sp2+=stept2++)
390 { temp+=(*sp1)*(*sp2); }
391 }
392 *(mr++)=temp;
393 }
394 }
395 return mret;
396}

◆ operator*() [4/5]

G4ErrorSymMatrix operator* ( const G4ErrorSymMatrix s1,
G4double  t 
)

Definition at line 273 of file G4ErrorSymMatrix.cc.

274{
275 G4ErrorSymMatrix mret(mat1);
276 mret *= t;
277 return mret;
278}

◆ operator*() [5/5]

G4ErrorSymMatrix operator* ( G4double  t,
const G4ErrorSymMatrix s1 
)

Definition at line 280 of file G4ErrorSymMatrix.cc.

281{
282 G4ErrorSymMatrix mret(mat1);
283 mret *= t;
284 return mret;
285}

◆ operator+() [1/3]

G4ErrorMatrix operator+ ( const G4ErrorMatrix m1,
const G4ErrorSymMatrix s2 
)

Definition at line 207 of file G4ErrorSymMatrix.cc.

208{
209 G4ErrorMatrix mret(mat1);
210 CHK_DIM_2(mat1.num_row(),mat2.num_row(), mat1.num_col(),mat2.num_col(),+);
211 mret += mat2;
212 return mret;
213}
#define CHK_DIM_2(r1, r2, c1, c2, fun)

◆ operator+() [2/3]

G4ErrorMatrix operator+ ( const G4ErrorSymMatrix s1,
const G4ErrorMatrix m2 
)

Definition at line 215 of file G4ErrorSymMatrix.cc.

216{
217 G4ErrorMatrix mret(mat2);
218 CHK_DIM_2(mat1.num_row(),mat2.num_row(),mat1.num_col(),mat2.num_col(),+);
219 mret += mat1;
220 return mret;
221}

◆ operator+() [3/3]

Definition at line 223 of file G4ErrorSymMatrix.cc.

225{
226 G4ErrorSymMatrix mret(mat1.nrow);
227 CHK_DIM_1(mat1.nrow, mat2.nrow,+);
228 SIMPLE_TOP(+)
229 return mret;
230}
#define SIMPLE_TOP(OPER)

◆ operator-() [1/3]

G4ErrorMatrix operator- ( const G4ErrorMatrix m1,
const G4ErrorSymMatrix s2 
)

Definition at line 236 of file G4ErrorSymMatrix.cc.

237{
238 G4ErrorMatrix mret(mat1);
239 CHK_DIM_2(mat1.num_row(),mat2.num_row(),mat1.num_col(),mat2.num_col(),-);
240 mret -= mat2;
241 return mret;
242}

◆ operator-() [2/3]

G4ErrorMatrix operator- ( const G4ErrorSymMatrix m1,
const G4ErrorMatrix m2 
)

Definition at line 244 of file G4ErrorSymMatrix.cc.

245{
246 G4ErrorMatrix mret(mat1);
247 CHK_DIM_2(mat1.num_row(),mat2.num_row(),mat1.num_col(),mat2.num_col(),-);
248 mret -= mat2;
249 return mret;
250}

◆ operator-() [3/3]

Definition at line 252 of file G4ErrorSymMatrix.cc.

254{
255 G4ErrorSymMatrix mret(mat1.num_row());
256 CHK_DIM_1(mat1.num_row(),mat2.num_row(),-);
257 SIMPLE_TOP(-)
258 return mret;
259}

◆ operator/()

G4ErrorSymMatrix operator/ ( const G4ErrorSymMatrix m1,
G4double  t 
)

Definition at line 266 of file G4ErrorSymMatrix.cc.

267{
268 G4ErrorSymMatrix mret(mat1);
269 mret /= t;
270 return mret;
271}

◆ operator<<()

std::ostream & operator<< ( std::ostream &  s,
const G4ErrorSymMatrix q 
)

Definition at line 524 of file G4ErrorSymMatrix.cc.

525{
526 os << G4endl;
527
528 // Fixed format needs 3 extra characters for field,
529 // while scientific needs 7
530
531 G4int width;
532 if(os.flags() & std::ios::fixed)
533 {
534 width = os.precision()+3;
535 }
536 else
537 {
538 width = os.precision()+7;
539 }
540 for(G4int irow = 1; irow<= q.num_row(); irow++)
541 {
542 for(G4int icol = 1; icol <= q.num_col(); icol++)
543 {
544 os.width(width);
545 os << q(irow,icol) << " ";
546 }
547 os << G4endl;
548 }
549 return os;
550}
#define G4endl
Definition: G4ios.hh:52
G4int num_row() const
G4int num_col() const

◆ tridiagonal() [1/2]

G4ErrorMatrix tridiagonal ( G4ErrorSymMatrix a)

◆ tridiagonal() [2/2]

void tridiagonal ( G4ErrorSymMatrix a,
G4ErrorMatrix hsm 
)