Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/examples/extended/medical/dna/chem3/src/ITTrackingInteractivity.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 /examples/extended/medical/dna/chem3/src/ITTrackingInteractivity.cc (Version 11.3.0) and /examples/extended/medical/dna/chem3/src/ITTrackingInteractivity.cc (Version 5.2.p2)


  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 // This example is provided by the Geant4-DNA     
 27 // Any report or published results obtained us    
 28 // shall cite the following Geant4-DNA collabo    
 29 // Med. Phys. 37 (2010) 4692-4708                 
 30 // J. Comput. Phys. 274 (2014) 841-882            
 31 // The Geant4-DNA web site is available at htt    
 32 //                                                
 33 //                                                
 34 /// \file ITTrackingInteractivity.hh              
 35 /// \brief Implementation of the ITTrackingInt    
 36                                                   
 37 #include "ITTrackingInteractivity.hh"             
 38                                                   
 39 #include "G4Event.hh"                             
 40 #include "G4EventManager.hh"                      
 41 #include "G4IT.hh"                                
 42 #include "G4RichTrajectory.hh"                    
 43 #include "G4SmoothTrajectory.hh"                  
 44 #include "G4TrackingInformation.hh"               
 45 #include "G4Trajectory.hh"                        
 46 #include "G4UserSteppingAction.hh"                
 47 #include "G4UserTrackingAction.hh"                
 48 #include "G4VSteppingVerbose.hh"                  
 49 #include "G4VTrajectory.hh"                       
 50 #include "G4VisManager.hh"                        
 51                                                   
 52 class G4Trajectory_Lock                           
 53 {                                                 
 54     friend class ITTrackingInteractivity;         
 55                                                   
 56     G4Trajectory_Lock() : fpTrajectory(0) { ;     
 57                                                   
 58     ~G4Trajectory_Lock() { ; }                    
 59                                                   
 60     G4VTrajectory* fpTrajectory;                  
 61 };                                                
 62                                                   
 63 ITTrackingInteractivity::ITTrackingInteractivi    
 64 {                                                 
 65   fStoreTrajectory = 0;                           
 66   fVerboseLevel = 0;                              
 67                                                   
 68   fpUserTrackingAction = 0;                       
 69   fpUserSteppingAction = 0;                       
 70                                                   
 71   ////////////////////////////                    
 72   // In case you want to use same tracking/ste    
 73   // for normal and IT stepping                   
 74   /*                                              
 75     fpUserTrackingAction =                        
 76       trackingManager->GetUserTrackingAction()    
 77     fpUserSteppingAction =                        
 78       G4EventManager::GetEventManager()->GetUs    
 79    */                                             
 80   ////////////////////////////                    
 81 }                                                 
 82                                                   
 83 //....oooOO0OOooo........oooOO0OOooo........oo    
 84                                                   
 85 ITTrackingInteractivity::~ITTrackingInteractiv    
 86 {                                                 
 87   G4EventManager* eventManager = G4EventManage    
 88                                                   
 89   if (eventManager) {                             
 90     G4UserTrackingAction* std_trackAct = event    
 91     if (fpUserTrackingAction != std_trackAct &    
 92                                                   
 93     G4UserSteppingAction* std_stepAct = eventM    
 94     if (fpUserSteppingAction != std_stepAct &&    
 95   }                                               
 96   else {                                          
 97     if (fpUserSteppingAction) {                   
 98       delete fpUserSteppingAction;                
 99     }                                             
100                                                   
101     if (fpUserTrackingAction) {                   
102       delete fpUserTrackingAction;                
103     }                                             
104   }                                               
105 }                                                 
106                                                   
107 //....oooOO0OOooo........oooOO0OOooo........oo    
108                                                   
109 void ITTrackingInteractivity::Initialize()        
110 {                                                 
111   G4TrackingManager* trackingManager = G4Event    
112   fStoreTrajectory = trackingManager->GetStore    
113   fVerboseLevel = trackingManager->GetVerboseL    
114 }                                                 
115                                                   
116 //....oooOO0OOooo........oooOO0OOooo........oo    
117                                                   
118 void ITTrackingInteractivity::StartTracking(G4    
119 {                                                 
120 #ifdef G4VERBOSE                                  
121   if (fVerboseLevel) {                            
122     TrackBanner(track, "G4ITTrackingManager::S    
123   }                                               
124 #endif                                            
125                                                   
126   if (fVerboseLevel > 0 && (G4VSteppingVerbose    
127                                                   
128   // Pre tracking user intervention process.      
129   if (fpUserTrackingAction != 0) {                
130     fpUserTrackingAction->PreUserTrackingActio    
131   }                                               
132   // #ifdef G4_STORE_TRAJECTORY                   
133   G4TrackingInformation* trackingInfo = GetIT(    
134   G4Trajectory_Lock* trajectory_lock = trackin    
135                                                   
136   // Construct a trajectory if it is requested    
137   if (fStoreTrajectory && (!trajectory_lock))     
138     trajectory_lock = new G4Trajectory_Lock();    
139     trackingInfo->SetTrajectory_Lock(trajector    
140     G4VTrajectory* trajectory = 0;                
141     // default trajectory concrete class objec    
142     switch (fStoreTrajectory) {                   
143       default:                                    
144       case 1:                                     
145         trajectory = new G4Trajectory(track);     
146         break;                                    
147       case 2:                                     
148         trajectory = new G4SmoothTrajectory(tr    
149         break;                                    
150       case 3:                                     
151         trajectory = new G4RichTrajectory(trac    
152         break;                                    
153     }                                             
154     trajectory_lock->fpTrajectory = trajectory    
155   }                                               
156   // #endif                                       
157 }                                                 
158                                                   
159 //....oooOO0OOooo........oooOO0OOooo........oo    
160                                                   
161 void ITTrackingInteractivity::AppendStep(G4Tra    
162 {                                                 
163   ////////////////////////////                    
164   // If you want to use sensitive detector        
165   /*                                              
166     G4VPhysicalVolume* currentVolume =            
167     step->GetPreStepPoint()->GetPhysicalVolume    
168     G4SteppingControl stepControlFlag =  step-    
169                                                   
170     if( currentVolume  != 0 && stepControlFlag    
171     {                                             
172         G4VSensitiveDetector* sensitive = step    
173                 GetSensitiveDetector();           
174         if( sensitive != 0 )                      
175         {                                         
176             sensitive->Hit(fpStep);               
177         }                                         
178     }                                             
179    */                                             
180   ////////////////////////////                    
181                                                   
182   if (fpUserSteppingAction) fpUserSteppingActi    
183                                                   
184   ////////////////////////////                    
185   // If you want to use regional stepping acti    
186   /*                                              
187     G4UserSteppingAction* regionalAction          
188             = fpStep->GetPreStepPoint()->GetPh    
189                   GetLogicalVolume()->GetRegio    
190                   GetRegionalSteppingAction();    
191     if( regionalAction ) regionalAction->UserS    
192    */                                             
193   ////////////////////////////                    
194                                                   
195   if (fStoreTrajectory) {                         
196     G4TrackingInformation* trackingInfo = GetI    
197     G4Trajectory_Lock* trajectory_lock = track    
198     trajectory_lock->fpTrajectory->AppendStep(    
199   }                                               
200 }                                                 
201                                                   
202 //....oooOO0OOooo........oooOO0OOooo........oo    
203                                                   
204 void ITTrackingInteractivity::EndTracking(G4Tr    
205 {                                                 
206 #ifdef G4VERBOSE                                  
207   if (fVerboseLevel) {                            
208     TrackBanner(track, "G4ITTrackingManager::E    
209   }                                               
210 #endif                                            
211   // Post tracking user intervention process.     
212   if (fpUserTrackingAction != 0) {                
213     fpUserTrackingAction->PostUserTrackingActi    
214   }                                               
215                                                   
216   // #ifdef G4_STORE_TRAJECTORY                   
217   G4TrackingInformation* trackingInfo = GetIT(    
218   G4Trajectory_Lock* trajectory_lock = trackin    
219                                                   
220   if (trajectory_lock) {                          
221     G4VTrajectory*& trajectory = trajectory_lo    
222                                                   
223     if (fStoreTrajectory && trajectory) {         
224 #ifdef G4VERBOSE                                  
225       if (fVerboseLevel > 10) trajectory->Show    
226 #endif                                            
227       G4TrackStatus istop = track->GetTrackSta    
228                                                   
229       if (trajectory && (istop != fStopButAliv    
230         G4Event* currentEvent = G4EventManager    
231                                                   
232         if (currentEvent) {                       
233           G4TrajectoryContainer* trajectoryCon    
234                                                   
235           if (!trajectoryContainer) {             
236             trajectoryContainer = new G4Trajec    
237             currentEvent->SetTrajectoryContain    
238           }                                       
239           trajectoryContainer->insert(trajecto    
240         }                                         
241         else {                                    
242           fTrajectories.push_back(trajectory);    
243         }                                         
244       }                                           
245     }                                             
246     // Destruct the trajectory if it was creat    
247     else if ((!fStoreTrajectory) && trajectory    
248       delete trajectory;                          
249       trajectory = 0;                             
250     }                                             
251     delete trajectory_lock;                       
252     trackingInfo->SetTrajectory_Lock(0);          
253   }                                               
254   // #endif                                       
255 }                                                 
256                                                   
257 void ITTrackingInteractivity::Finalize()          
258 {                                                 
259   for (std::vector<G4VTrajectory*>::iterator i    
260        it++)                                      
261   {                                               
262     G4VisManager::GetConcreteInstance()->Draw(    
263   }                                               
264 }                                                 
265