19#ifndef BDSOUTPUTROOTEVENTTRAJECTORY_H
20#define BDSOUTPUTROOTEVENTTRAJECTORY_H
24#include "BDSOutputROOTEventTrajectoryPoint.hh"
25#include "BDSTrajectoryFilter.hh"
26#include "BDSTrajectoriesToStore.hh"
40 struct TrajectoryOptions;
50 92 COUPLED_TRANSPORTATION
57 6 fAnnihilationToMuMu,
58 7 fAnnihilationToHadrons,
60 10 fMultipleScattering,
62 12 fPhotoElectricEffect,
63 13 fComptonScattering,
65 15 fGammaConversionToMuMu,
68 23 fSynchrotronRadiation,
69 24 fTransitionRadiation
88 5 fPhotolepton_hadron,
92 203 DECAY_PionMakeSpin,
93 210 DECAY_Radioactive,
95 231 DECAY_External = 231
98 402 USER_SPECIAL_CUTS,
121 int storeStepPointsN,
122 bool storeStepPointLast,
124 const std::map<G4Material*, short int>& materialToID);
130 std::vector<int> preProcessType;
131 std::vector<int> preProcessSubType;
132 std::vector<int> postProcessType;
133 std::vector<int> postProcessSubType;
134 std::vector<double> preWeight;
135 std::vector<double> postWeight;
136 std::vector<double> energyDeposit;
137 std::vector<TVector3> XYZ;
138 std::vector<TVector3> PXPYPZ;
139 std::vector<double> S;
140 std::vector<double> T;
141 std::vector<TVector3> xyz;
142 std::vector<TVector3> pxpypz;
143 std::vector<int> charge;
144 std::vector<double> kineticEnergy;
145 std::vector<int> turn;
146 std::vector<double> mass;
147 std::vector<double> rigidity;
148 std::vector<bool> isIon;
149 std::vector<int> ionA;
150 std::vector<int> ionZ;
151 std::vector<int> nElectrons;
152 std::vector<int> modelIndex;
153 std::vector<short int> materialID;
161 const std::map<G4Material*, short int>& materialToID)
const;
172 std::vector<std::bitset<BDS::NTrajectoryFilters> > filters;
173 std::vector<int> partID;
174 std::vector<unsigned int> trackID;
175 std::vector<unsigned int> parentID;
176 std::vector<unsigned int> parentIndex;
177 std::vector<unsigned int> parentStepIndex;
178 std::vector<int> primaryStepIndex;
179 std::vector<int> depth;
181 std::vector<std::vector<int>> preProcessTypes;
182 std::vector<std::vector<int>> preProcessSubTypes;
183 std::vector<std::vector<int>> postProcessTypes;
184 std::vector<std::vector<int>> postProcessSubTypes;
186 std::vector<std::vector<double>> preWeights;
187 std::vector<std::vector<double>> postWeights;
188 std::vector<std::vector<double>> energyDeposit;
190 std::vector<std::vector<TVector3>> XYZ;
191 std::vector<std::vector<double>> S;
192 std::vector<std::vector<TVector3>> PXPYPZ;
193 std::vector<std::vector<double>> T;
196 std::vector<std::vector<TVector3>>
xyz;
197 std::vector<std::vector<TVector3>>
pxpypz;
204 std::vector<std::vector<double>>
mass;
209 std::vector<std::vector<bool>>
isIon;
210 std::vector<std::vector<int>>
ionA;
211 std::vector<std::vector<int>>
ionZ;
215 std::vector<std::vector<short int>> materialID;
217 std::vector<std::vector<int>> modelIndicies;
219 std::map<int, int> trackID_trackIndex;
226 std::vector<BDSOutputROOTEventTrajectoryPoint> trackInteractions(
int trackIDIn)
const;
229 std::vector<BDSOutputROOTEventTrajectoryPoint> processHistory(
int trackIDIn)
const;
230 void printTrajectoryInfoByTrackID(
int trackIDIn)
const;
231 void printTrajectoryInfo(
int storageIndex)
const;
232 bool parentIsPrimary(
int trackIDIn)
const;
Extra G4Navigator to get coordinate transforms.
Information recorded for a single piece of energy deposition.
Structure to record a trajectory point.
Structure to record a trajectory.
std::vector< std::vector< int > > nElectrons
Ion trajectory information.
std::vector< std::vector< int > > charge
Link trajectory information.
std::vector< std::vector< TVector3 > > pxpypz
Local coordinates.
std::vector< std::vector< bool > > isIon
Ion trajectory information.
void Flush()
add comment to avoid warning (no need to make persistent, see issue #191)
void FillIndividualTrajectory(IndividualTrajectory &itj, BDSTrajectory *traj, int i, const std::map< G4Material *, short int > &materialToID) const
BDSAuxiliaryNavigator * auxNavigator
Required to find beamline index careful including in streamer.
std::vector< std::vector< double > > mass
Link trajectory information.
std::vector< std::vector< int > > ionZ
Ion trajectory information.
std::vector< std::vector< TVector3 > > xyz
Local coordinates.
std::vector< std::vector< int > > turnsTaken
Link trajectory information.
std::vector< std::vector< double > > rigidity
Link trajectory information.
std::vector< std::vector< int > > ionA
Ion trajectory information.
std::vector< std::vector< double > > kineticEnergy
Link trajectory information.
Double map of trajectories to bitset of which filters matched whether to store them.
Trajectory information from track including last scatter etc.
Return either G4Tubs or G4CutTubs depending on flat face.
Temporary structure for an individual trajectory used to convert types.