88 fpRichPointsContainer =
new RichTrajectoryPointsContainer;
94 fpInitialVolume = right.fpInitialVolume;
95 fpInitialNextVolume = right.fpInitialNextVolume;
96 fpCreatorProcess = right.fpCreatorProcess;
97 fCreatorModelID = right.fCreatorModelID;
98 fpFinalVolume = right.fpFinalVolume;
99 fpFinalNextVolume = right.fpFinalNextVolume;
100 fpEndingProcess = right.fpEndingProcess;
101 fFinalKineticEnergy = right.fFinalKineticEnergy;
102 fpRichPointsContainer =
new RichTrajectoryPointsContainer;
103 for (
auto& i : *right.fpRichPointsContainer) {
104 auto rightPoint = (G4RichTrajectoryPoint*)i;
105 fpRichPointsContainer->push_back(new G4RichTrajectoryPoint(*rightPoint));
111 if (fpRichPointsContainer !=
nullptr) {
112 for (
auto& i : *fpRichPointsContainer) {
115 fpRichPointsContainer->clear();
116 delete fpRichPointsContainer;
133 fFinalKineticEnergy =
140 if (secondTrajectory ==
nullptr)
return;
144 for (
G4int i = 1; i < ent; ++i) {
147 fpRichPointsContainer->push_back((*(seco->fpRichPointsContainer))[i]);
149 delete (*seco->fpRichPointsContainer)[0];
150 seco->fpRichPointsContainer->clear();
183 (*store)[ID] =
G4AttDef(ID,
"Initial Volume Path",
"Physics",
"",
"G4String");
186 (*store)[ID] =
G4AttDef(ID,
"Initial Next Volume Path",
"Physics",
"",
"G4String");
189 (*store)[ID] =
G4AttDef(ID,
"Creator Process Name",
"Physics",
"",
"G4String");
192 (*store)[ID] =
G4AttDef(ID,
"Creator Process Type Name",
"Physics",
"",
"G4String");
195 (*store)[ID] =
G4AttDef(ID,
"Creator Model ID",
"Physics",
"",
"G4int");
198 (*store)[ID] =
G4AttDef(ID,
"Creator Model Name",
"Physics",
"",
"G4String");
201 (*store)[ID] =
G4AttDef(ID,
"Final Volume Path",
"Physics",
"",
"G4String");
204 (*store)[ID] =
G4AttDef(ID,
"Final Next Volume Path",
"Physics",
"",
"G4String");
207 (*store)[ID] =
G4AttDef(ID,
"Ending Process Name",
"Physics",
"",
"G4String");
210 (*store)[ID] =
G4AttDef(ID,
"Ending Process Type Name",
"Physics",
"",
"G4String");
213 (*store)[ID] =
G4AttDef(ID,
"Final kinetic energy",
"Physics",
"G4BestUnit",
"G4double");
221 std::ostringstream oss;
223 for (
G4int i = depth; i >= 0; --i) {
225 if (i != 0) oss <<
'/';
235 if (fpInitialVolume && (fpInitialVolume->
GetVolume() !=
nullptr)) {
236 values->push_back(
G4AttValue(
"IVPath", Path(fpInitialVolume),
""));
239 values->push_back(
G4AttValue(
"IVPath",
"None",
""));
242 if (fpInitialNextVolume && (fpInitialNextVolume->
GetVolume() !=
nullptr)) {
243 values->push_back(
G4AttValue(
"INVPath", Path(fpInitialNextVolume),
""));
246 values->push_back(
G4AttValue(
"INVPath",
"None",
""));
249 if (fpCreatorProcess !=
nullptr) {
255 values->push_back(
G4AttValue(
"CMN", creatorModelName,
""));
258 values->push_back(
G4AttValue(
"CPN",
"None",
""));
259 values->push_back(
G4AttValue(
"CPTN",
"None",
""));
260 values->push_back(
G4AttValue(
"CMID",
"None",
""));
261 values->push_back(
G4AttValue(
"CMN",
"None",
""));
264 if (fpFinalVolume && (fpFinalVolume->
GetVolume() !=
nullptr)) {
265 values->push_back(
G4AttValue(
"FVPath", Path(fpFinalVolume),
""));
268 values->push_back(
G4AttValue(
"FVPath",
"None",
""));
271 if (fpFinalNextVolume && (fpFinalNextVolume->
GetVolume() !=
nullptr)) {
272 values->push_back(
G4AttValue(
"FNVPath", Path(fpFinalNextVolume),
""));
275 values->push_back(
G4AttValue(
"FNVPath",
"None",
""));
278 if (fpEndingProcess !=
nullptr) {
284 values->push_back(
G4AttValue(
"EPN",
"None",
""));
285 values->push_back(
G4AttValue(
"EPTN",
"None",
""));
G4Allocator< G4RichTrajectory > *& aRichTrajectoryAllocator()
G4GLOB_DLL std::ostream G4cout
static const G4String GetModelNameFromID(const G4int modelID)
void AppendStep(const G4Step *aStep) override
const std::map< G4String, G4AttDef > * GetAttDefs() const override
void DrawTrajectory() const override
void MergeTrajectory(G4VTrajectory *secondTrajectory) override
~G4RichTrajectory() override
G4RichTrajectory()=default
void ShowTrajectory(std::ostream &os=G4cout) const override
std::vector< G4AttValue > * CreateAttValues() const override
const G4VProcess * GetProcessDefinedStep() const
G4double GetKineticEnergy() const
G4Track * GetTrack() const
G4StepPoint * GetPreStepPoint() const
G4double GetTotalEnergyDeposit() const
G4StepPoint * GetPostStepPoint() const
G4int GetCopyNumber(G4int depth=0) const
virtual G4VPhysicalVolume * GetVolume(G4int depth=0) const
virtual G4int GetHistoryDepth() const
const G4TouchableHandle & GetNextTouchableHandle() const
const G4VProcess * GetCreatorProcess() const
G4int GetCreatorModelID() const
G4int GetCurrentStepNumber() const
const G4TouchableHandle & GetTouchableHandle() const
G4double GetKineticEnergy() const
const std::map< G4String, G4AttDef > * GetAttDefs() const override
std::vector< G4AttValue > * CreateAttValues() const override
static G4String ConvertToString(G4bool boolVal)
const G4String & GetName() const
static const G4String & GetProcessTypeName(G4ProcessType)
G4ProcessType GetProcessType() const
const G4String & GetProcessName() const
virtual G4int GetPointEntries() const =0
virtual void ShowTrajectory(std::ostream &os=G4cout) const
virtual void DrawTrajectory() const
std::map< G4String, G4AttDef > * GetInstance(const G4String &storeKey, G4bool &isNew)
#define G4ThreadLocalStatic