Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/tracking/src/G4RichTrajectoryPoint.cc

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Diff markup

Differences between /tracking/src/G4RichTrajectoryPoint.cc (Version 11.3.0) and /tracking/src/G4RichTrajectoryPoint.cc (Version 7.1.p1)


  1 //                                                  1 
  2 // *******************************************    
  3 // * License and Disclaimer                       
  4 // *                                              
  5 // * The  Geant4 software  is  copyright of th    
  6 // * the Geant4 Collaboration.  It is provided    
  7 // * conditions of the Geant4 Software License    
  8 // * LICENSE and available at  http://cern.ch/    
  9 // * include a list of copyright holders.         
 10 // *                                              
 11 // * Neither the authors of this software syst    
 12 // * institutes,nor the agencies providing fin    
 13 // * work  make  any representation or  warran    
 14 // * regarding  this  software system or assum    
 15 // * use.  Please see the license in the file     
 16 // * for the full disclaimer and the limitatio    
 17 // *                                              
 18 // * This  code  implementation is the result     
 19 // * technical work of the GEANT4 collaboratio    
 20 // * By using,  copying,  modifying or  distri    
 21 // * any work based  on the software)  you  ag    
 22 // * use  in  resulting  scientific  publicati    
 23 // * acceptance of all terms of the Geant4 Sof    
 24 // *******************************************    
 25 //                                                
 26 // G4RichTrajectoryPoint class implementation     
 27 //                                                
 28 // Contact:                                       
 29 //   Questions and comments on G4TrajectoryPoi    
 30 //   should be sent to                            
 31 //     Katsuya Amako  (e-mail: Katsuya.Amako@k    
 32 //     Makoto  Asai   (e-mail: asai@slac.stanf    
 33 //     Takashi Sasaki (e-mail: Takashi.Sasaki@    
 34 //   and on the extended code to:                 
 35 //     John Allison   (e-mail: John.Allison@ma    
 36 //     Joseph Perl    (e-mail: perl@slac.stanf    
 37 // -------------------------------------------    
 38                                                   
 39 #include "G4RichTrajectoryPoint.hh"               
 40                                                   
 41 #include "G4AttDef.hh"                            
 42 #include "G4AttDefStore.hh"                       
 43 #include "G4AttValue.hh"                          
 44 #include "G4Step.hh"                              
 45 #include "G4Track.hh"                             
 46 #include "G4UIcommand.hh"                         
 47 #include "G4UnitsTable.hh"                        
 48 #include "G4VProcess.hh"                          
 49                                                   
 50 // #define G4ATTDEBUG                             
 51 #ifdef G4ATTDEBUG                                 
 52 #  include "G4AttCheck.hh"                        
 53 #endif                                            
 54                                                   
 55 #include <sstream>                                
 56                                                   
 57 G4Allocator<G4RichTrajectoryPoint>*& aRichTraj    
 58 {                                                 
 59   G4ThreadLocalStatic G4Allocator<G4RichTrajec    
 60   return _instance;                               
 61 }                                                 
 62                                                   
 63 G4RichTrajectoryPoint::G4RichTrajectoryPoint()    
 64                                                   
 65 G4RichTrajectoryPoint::G4RichTrajectoryPoint(c    
 66   : fPosition(aTrack->GetPosition()),             
 67     fPreStepPointGlobalTime(aTrack->GetGlobalT    
 68     fPostStepPointGlobalTime(aTrack->GetGlobal    
 69     fpPreStepPointVolume(aTrack->GetTouchableH    
 70     fpPostStepPointVolume(aTrack->GetNextTouch    
 71     fPreStepPointWeight(aTrack->GetWeight()),     
 72     fPostStepPointWeight(aTrack->GetWeight())     
 73 {}                                                
 74                                                   
 75 G4RichTrajectoryPoint::G4RichTrajectoryPoint(c    
 76   : fPosition(aStep->GetPostStepPoint()->GetPo    
 77     fpAuxiliaryPointVector(aStep->GetPointerTo    
 78     fTotEDep(aStep->GetTotalEnergyDeposit())      
 79 {                                                 
 80   G4StepPoint* preStepPoint = aStep->GetPreSte    
 81   G4StepPoint* postStepPoint = aStep->GetPostS    
 82   if (aStep->GetTrack()->GetCurrentStepNumber(    
 83   {                                               
 84     fRemainingEnergy = aStep->GetTrack()->GetK    
 85   }                                               
 86   else {                                          
 87     fRemainingEnergy = preStepPoint->GetKineti    
 88   }                                               
 89   fpProcess = postStepPoint->GetProcessDefined    
 90   fPreStepPointStatus = preStepPoint->GetStepS    
 91   fPostStepPointStatus = postStepPoint->GetSte    
 92   fPreStepPointGlobalTime = preStepPoint->GetG    
 93   fPostStepPointGlobalTime = postStepPoint->Ge    
 94   fpPreStepPointVolume = preStepPoint->GetTouc    
 95   fpPostStepPointVolume = postStepPoint->GetTo    
 96   fPreStepPointWeight = preStepPoint->GetWeigh    
 97   fPostStepPointWeight = postStepPoint->GetWei    
 98 }                                                 
 99                                                   
100 // This is certainly wrong. the fpAuxiliaryPoi    
101 // and must be deep copied. Note also the copy    
102 // However, G4RichTrajectory requires a copy c    
103 G4RichTrajectoryPoint::G4RichTrajectoryPoint(c    
104                                                   
105 G4RichTrajectoryPoint::~G4RichTrajectoryPoint(    
106                                                   
107 const std::map<G4String, G4AttDef>* G4RichTraj    
108 {                                                 
109   G4bool isNew;                                   
110   std::map<G4String, G4AttDef>* store = G4AttD    
111   if (isNew) {                                    
112     G4String ID;                                  
113                                                   
114     ID = "Pos";                                   
115     (*store)[ID] = G4AttDef(ID, "Position", "P    
116     ID = "Aux";                                   
117     (*store)[ID] =                                
118       G4AttDef(ID, "Auxiliary Point Position",    
119     ID = "TED";                                   
120     (*store)[ID] = G4AttDef(ID, "Total Energy     
121     ID = "RE";                                    
122     (*store)[ID] = G4AttDef(ID, "Remaining Ene    
123     ID = "PDS";                                   
124     (*store)[ID] = G4AttDef(ID, "Process Defin    
125     ID = "PTDS";                                  
126     (*store)[ID] = G4AttDef(ID, "Process Type     
127     ID = "PreStatus";                             
128     (*store)[ID] = G4AttDef(ID, "Pre-step-poin    
129     ID = "PostStatus";                            
130     (*store)[ID] = G4AttDef(ID, "Post-step-poi    
131     ID = "PreT";                                  
132     (*store)[ID] = G4AttDef(ID, "Pre-step-poin    
133     ID = "PostT";                                 
134     (*store)[ID] = G4AttDef(ID, "Post-step-poi    
135     ID = "PreVPath";                              
136     (*store)[ID] = G4AttDef(ID, "Pre-step Volu    
137     ID = "PostVPath";                             
138     (*store)[ID] = G4AttDef(ID, "Post-step Vol    
139     ID = "PreW";                                  
140     (*store)[ID] = G4AttDef(ID, "Pre-step-poin    
141     ID = "PostW";                                 
142     (*store)[ID] = G4AttDef(ID, "Post-step-poi    
143   }                                               
144   return store;                                   
145 }                                                 
146                                                   
147 static G4String Status(G4StepStatus stps)         
148 {                                                 
149   G4String status;                                
150   switch (stps) {                                 
151     case fWorldBoundary:                          
152       status = "fWorldBoundary";                  
153       break;                                      
154     case fGeomBoundary:                           
155       status = "fGeomBoundary";                   
156       break;                                      
157     case fAtRestDoItProc:                         
158       status = "fAtRestDoItProc";                 
159       break;                                      
160     case fAlongStepDoItProc:                      
161       status = "fAlongStepDoItProc";              
162       break;                                      
163     case fPostStepDoItProc:                       
164       status = "fPostStepDoItProc";               
165       break;                                      
166     case fUserDefinedLimit:                       
167       status = "fUserDefinedLimit";               
168       break;                                      
169     case fExclusivelyForcedProc:                  
170       status = "fExclusivelyForcedProc";          
171       break;                                      
172     case fUndefined:                              
173       status = "fUndefined";                      
174       break;                                      
175     default:                                      
176       status = "Not recognised";                  
177       break;                                      
178   }                                               
179   return status;                                  
180 }                                                 
181                                                   
182 static G4String Path(const G4TouchableHandle&     
183 {                                                 
184   std::ostringstream oss;                         
185   G4int depth = th->GetHistoryDepth();            
186   for (G4int i = depth; i >= 0; --i) {            
187     oss << th->GetVolume(i)->GetName() << ':'     
188     if (i != 0) oss << '/';                       
189   }                                               
190   return oss.str();                               
191 }                                                 
192                                                   
193 std::vector<G4AttValue>* G4RichTrajectoryPoint    
194 {                                                 
195   // Create base class att values...              
196                                                   
197   auto values = new std::vector<G4AttValue>;      
198   values->push_back(G4AttValue("Pos", G4BestUn    
199                                                   
200 #ifdef G4ATTDEBUG                                 
201   G4cout << G4AttCheck(values, GetAttDefs());     
202 #endif                                            
203                                                   
204   if (fpAuxiliaryPointVector != nullptr) {        
205     for (const auto& iAux : *fpAuxiliaryPointV    
206       values->push_back(G4AttValue("Aux", G4Be    
207     }                                             
208   }                                               
209                                                   
210   values->push_back(G4AttValue("TED", G4BestUn    
211   values->push_back(G4AttValue("RE", G4BestUni    
212                                                   
213   if (fpProcess != nullptr) {                     
214     values->push_back(G4AttValue("PDS", fpProc    
215     values->push_back(                            
216       G4AttValue("PTDS", G4VProcess::GetProces    
217   }                                               
218   else {                                          
219     values->push_back(G4AttValue("PDS", "None"    
220     values->push_back(G4AttValue("PTDS", "None    
221   }                                               
222                                                   
223   values->push_back(G4AttValue("PreStatus", St    
224                                                   
225   values->push_back(G4AttValue("PostStatus", S    
226                                                   
227   values->push_back(G4AttValue("PreT", G4BestU    
228                                                   
229   values->push_back(G4AttValue("PostT", G4Best    
230                                                   
231   if (fpPreStepPointVolume && (fpPreStepPointV    
232     values->push_back(G4AttValue("PreVPath", P    
233   }                                               
234   else {                                          
235     values->push_back(G4AttValue("PreVPath", "    
236   }                                               
237                                                   
238   if (fpPostStepPointVolume && (fpPostStepPoin    
239     values->push_back(G4AttValue("PostVPath",     
240   }                                               
241   else {                                          
242     values->push_back(G4AttValue("PostVPath",     
243   }                                               
244                                                   
245   std::ostringstream oss1;                        
246   oss1 << fPreStepPointWeight;                    
247   values->push_back(G4AttValue("PreW", oss1.st    
248                                                   
249   std::ostringstream oss2;                        
250   oss2 << fPostStepPointWeight;                   
251   values->push_back(G4AttValue("PostW", oss2.s    
252                                                   
253 #ifdef G4ATTDEBUG                                 
254   G4cout << G4AttCheck(values, GetAttDefs());     
255 #endif                                            
256                                                   
257   return values;                                  
258 }                                                 
259