Geant4-11
G4LocatorChangeRecord.hh
Go to the documentation of this file.
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26// G4LocatorChangeRecord
27//
28// Class description:
29//
30// Record the changes in an endpoint of a locator.
31// Its key use is in playing these back in case of a problem.
32
33// Author: John Apostolakis, 27.08.19 - First version
34// --------------------------------------------------------------------
35#ifndef G4LOCATOR_CHANGE_RECORD_HH
36#define G4LOCATOR_CHANGE_RECORD_HH
37
38#include <vector>
39#include "G4FieldTrack.hh"
40
42{
43 public:
44
50
51 static const char* fNameChangeLocation[];
52 static const char* GetNameChangeLocation( EChangeLocation );
53
55 G4int iter,
56 unsigned int count,
57 const G4FieldTrack& fieldTrack )
58 : fCodeLocation( codeLocation), fIteration(iter), fEventCount(count),
59 fFieldTrack( fieldTrack ) {}
62
63 // No set methods -> create a new record for each entry (more reliable)
64 // void SetLocation( EChangeLocation loc ) { fCodeLocation= loc; }
65 // void SetLength( double len ) { fLength= len; }
66 // void SetCount( int cnt ) { fEventCount= cnt; }
67 // void SetIteration( int iter ) { fIteration= iter; }
68
69 inline EChangeLocation GetLocation() const { return fCodeLocation; }
70 inline unsigned int GetCount() const { return fEventCount; }
71 inline G4int GetIteration() const { return fIteration; }
72 inline G4double GetLength() const { return fFieldTrack.GetCurveLength(); }
73
74 friend std::ostream& operator<< ( std::ostream& os,
75 const G4LocatorChangeRecord& r );
76 // Streaming operator, using StreamInfo().
77
78 friend std::ostream& operator<< ( std::ostream& os,
79 const std::vector<G4LocatorChangeRecord> & vecR );
80
81 std::ostream& StreamInfo(std::ostream& os) const;
82
83 static std::ostream& ReportVector ( std::ostream& os,
84 const std::string & nameOfRecord,
85 const std::vector<G4LocatorChangeRecord> & lcr );
86
87 static std::ostream& ReportEndChanges ( std::ostream& os,
88 const std::vector<G4LocatorChangeRecord> & startA,
89 const std::vector<G4LocatorChangeRecord> & endB );
90
91 private:
92
95 unsigned int fEventCount = 0;
97};
98
99#endif
double G4double
Definition: G4Types.hh:83
int G4int
Definition: G4Types.hh:85
G4double GetCurveLength() const
G4LocatorChangeRecord(EChangeLocation codeLocation, G4int iter, unsigned int count, const G4FieldTrack &fieldTrack)
friend std::ostream & operator<<(std::ostream &os, const G4LocatorChangeRecord &r)
static const char * fNameChangeLocation[]
static const char * GetNameChangeLocation(EChangeLocation)
static std::ostream & ReportEndChanges(std::ostream &os, const std::vector< G4LocatorChangeRecord > &startA, const std::vector< G4LocatorChangeRecord > &endB)
EChangeLocation GetLocation() const
std::ostream & StreamInfo(std::ostream &os) const
G4LocatorChangeRecord(G4LocatorChangeRecord &&)=default
static std::ostream & ReportVector(std::ostream &os, const std::string &nameOfRecord, const std::vector< G4LocatorChangeRecord > &lcr)
unsigned int GetCount() const
G4LocatorChangeRecord(const G4LocatorChangeRecord &)=default