Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/tracking/src/G4TrackingManager.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/G4TrackingManager.cc (Version 11.3.0) and /tracking/src/G4TrackingManager.cc (Version 7.0.p1)


  1 //                                                  1 //
  2 // *******************************************      2 // ********************************************************************
  3 // * License and Disclaimer                    <<   3 // * DISCLAIMER                                                       *
  4 // *                                                4 // *                                                                  *
  5 // * The  Geant4 software  is  copyright of th <<   5 // * The following disclaimer summarizes all the specific disclaimers *
  6 // * the Geant4 Collaboration.  It is provided <<   6 // * of contributors to this software. The specific disclaimers,which *
  7 // * conditions of the Geant4 Software License <<   7 // * govern, are listed with their locations in:                      *
  8 // * LICENSE and available at  http://cern.ch/ <<   8 // *   http://cern.ch/geant4/license                                  *
  9 // * include a list of copyright holders.      << 
 10 // *                                                9 // *                                                                  *
 11 // * Neither the authors of this software syst     10 // * Neither the authors of this software system, nor their employing *
 12 // * institutes,nor the agencies providing fin     11 // * institutes,nor the agencies providing financial support for this *
 13 // * work  make  any representation or  warran     12 // * work  make  any representation or  warranty, express or implied, *
 14 // * regarding  this  software system or assum     13 // * regarding  this  software system or assume any liability for its *
 15 // * use.  Please see the license in the file  <<  14 // * use.                                                             *
 16 // * for the full disclaimer and the limitatio << 
 17 // *                                               15 // *                                                                  *
 18 // * This  code  implementation is the result  <<  16 // * This  code  implementation is the  intellectual property  of the *
 19 // * technical work of the GEANT4 collaboratio <<  17 // * GEANT4 collaboration.                                            *
 20 // * By using,  copying,  modifying or  distri <<  18 // * By copying,  distributing  or modifying the Program (or any work *
 21 // * any work based  on the software)  you  ag <<  19 // * based  on  the Program)  you indicate  your  acceptance of  this *
 22 // * use  in  resulting  scientific  publicati <<  20 // * statement, and all its terms.                                    *
 23 // * acceptance of all terms of the Geant4 Sof << 
 24 // *******************************************     21 // ********************************************************************
 25 //                                                 22 //
 26 // G4TrackingManager class implementation      <<  23 //
                                                   >>  24 // $Id: G4TrackingManager.cc,v 1.15 2003/11/18 18:39:39 asaim Exp $
                                                   >>  25 // GEANT4 tag $Name: geant4-07-00-patch-01 $
                                                   >>  26 //
                                                   >>  27 //
                                                   >>  28 //---------------------------------------------------------------
                                                   >>  29 //
                                                   >>  30 // G4TrackingManager.cc
 27 //                                                 31 //
 28 // Contact:                                        32 // Contact:
 29 //   Questions and comments to this code shoul     33 //   Questions and comments to this code should be sent to
 30 //     Katsuya Amako  (e-mail: Katsuya.Amako@k     34 //     Katsuya Amako  (e-mail: Katsuya.Amako@kek.jp)
 31 //     Takashi Sasaki (e-mail: Takashi.Sasaki@     35 //     Takashi Sasaki (e-mail: Takashi.Sasaki@kek.jp)
 32 // ------------------------------------------- <<  36 //
                                                   >>  37 //---------------------------------------------------------------
 33                                                    38 
 34 #include "G4TrackingManager.hh"                    39 #include "G4TrackingManager.hh"
 35                                                << 
 36 #include "G4Trajectory.hh"                         40 #include "G4Trajectory.hh"
 37 #include "G4RichTrajectory.hh"                 << 
 38 #include "G4SmoothTrajectory.hh"               << 
 39 #include "G4ios.hh"                                41 #include "G4ios.hh"
 40                                                    42 
 41 //////////////////////////////////////             43 //////////////////////////////////////
 42 G4TrackingManager::G4TrackingManager()             44 G4TrackingManager::G4TrackingManager()
 43 //////////////////////////////////////             45 //////////////////////////////////////
                                                   >>  46   : fpUserTrackingAction(NULL), fpTrajectory(NULL),
                                                   >>  47     StoreTrajectory(false), verboseLevel(0), EventIsAborted(false)
 44 {                                                  48 {
 45   messenger = new G4TrackingMessenger(this);   << 
 46   fpSteppingManager = new G4SteppingManager();     49   fpSteppingManager = new G4SteppingManager();
                                                   >>  50   messenger = new G4TrackingMessenger(this);
 47 }                                                  51 }
 48                                                    52 
 49 ///////////////////////////////////////            53 ///////////////////////////////////////
 50 G4TrackingManager::~G4TrackingManager()            54 G4TrackingManager::~G4TrackingManager()
 51 ///////////////////////////////////////            55 ///////////////////////////////////////
 52 {                                                  56 {
 53   delete messenger;                                57   delete messenger;
 54   delete fpSteppingManager;                        58   delete fpSteppingManager;
 55   delete fpUserTrackingAction;                 <<  59   if (fpUserTrackingAction) delete fpUserTrackingAction;
 56 }                                                  60 }
 57                                                    61 
 58 //////////////////////////////////////////////     62 ////////////////////////////////////////////////////////////////
 59 void G4TrackingManager::ProcessOneTrack(G4Trac     63 void G4TrackingManager::ProcessOneTrack(G4Track* apValueG4Track)
 60 //////////////////////////////////////////////     64 ////////////////////////////////////////////////////////////////
 61 {                                                  65 {
 62   // Receiving a G4Track from the EventManager << 
 63   // responsibility to trace the track till it << 
 64                                                    66 
                                                   >>  67   // Receiving a G4Track from the EventManager, this funciton has the
                                                   >>  68   // responsibility to trace the track till it stops.
 65   fpTrack = apValueG4Track;                        69   fpTrack = apValueG4Track;
 66   EventIsAborted = false;                          70   EventIsAborted = false;
 67                                                    71 
 68   // Clear secondary particle vector           <<  72   // Clear 2ndary particle vector
 69   //                                           <<  73   //  GimmeSecondaries()->clearAndDestroy();    
 70   for (auto& itr : *GimmeSecondaries()) {      <<  74   //  std::vector<G4Track*>::iterator itr;
 71     delete itr;                                <<  75   size_t itr;
                                                   >>  76   //  for(itr=GimmeSecondaries()->begin();itr=GimmeSecondaries()->end();itr++){ 
                                                   >>  77   for(itr=0;itr<GimmeSecondaries()->size();itr++){ 
                                                   >>  78      delete (*GimmeSecondaries())[itr];
 72   }                                                79   }
 73   GimmeSecondaries()->clear();                 <<  80   GimmeSecondaries()->clear();  
 74                                                <<  81   
 75   if (verboseLevel > 0 && (G4VSteppingVerbose: <<  82 #ifdef G4VERBOSE
                                                   >>  83                          // !!!!! Verbose
                                                   >>  84                          if(verboseLevel>0) Verbose("ProcessOneTrack");
                                                   >>  85 #endif
 76                                                    86 
 77   // Give SteppingManger the pointer to the tr <<  87   // Give SteppingManger the pointer to the track which will be tracked 
 78   //                                           << 
 79   fpSteppingManager->SetInitialStep(fpTrack);      88   fpSteppingManager->SetInitialStep(fpTrack);
 80                                                    89 
 81   // Pre tracking user intervention process    <<  90   // Pre tracking user intervention process.
 82                                                <<  91   fpTrajectory = 0;
 83   fpTrajectory = nullptr;                      <<  92   if( fpUserTrackingAction != NULL ) {
 84   if (fpUserTrackingAction != nullptr) {       <<  93      fpUserTrackingAction->PreUserTrackingAction(fpTrack);
 85     fpUserTrackingAction->PreUserTrackingActio << 
 86   }                                                94   }
 87                                                << 
 88   // we need this to scope the G4Track::Profil << 
 89   // the PreUserTrackingAction and PostUserTra << 
 90   {                                            << 
 91 #ifdef G4_STORE_TRAJECTORY                         95 #ifdef G4_STORE_TRAJECTORY
 92     // Construct a trajectory if it is request <<  96   // Construct a trajectory if it is requested
 93     //                                         <<  97   if(StoreTrajectory&&(!fpTrajectory)) { 
 94     if ((StoreTrajectory != 0) && (fpTrajector <<  98      fpTrajectory = new G4Trajectory(fpTrack); // default trajectory concrete class object
 95       // default trajectory concrete class obj <<  99   }
 96       switch (StoreTrajectory) {               << 
 97         default:                               << 
 98         case 1:                                << 
 99           fpTrajectory = new G4Trajectory(fpTr << 
100           break;                               << 
101         case 2:                                << 
102           fpTrajectory = new G4SmoothTrajector << 
103           break;                               << 
104         case 3:                                << 
105           fpTrajectory = new G4RichTrajectory( << 
106           break;                               << 
107         case 4:                                << 
108           fpTrajectory = new G4RichTrajectory( << 
109           break;                               << 
110       }                                        << 
111     }                                          << 
112 #endif                                            100 #endif
113                                                   101 
114     // Give SteppingManger the maxmimum number << 102   // Give SteppingManger the maxmimum number of processes 
115     fpSteppingManager->GetProcessNumber();     << 103   fpSteppingManager->GetProcessNumber();
116                                                   104 
117     // Give track the pointer to the Step      << 105   // Give track the pointer to the Step
118     fpTrack->SetStep(fpSteppingManager->GetSte << 106   fpTrack->SetStep(fpSteppingManager->GetStep());
119                                                   107 
120     // Inform beginning of tracking to physics << 108   // Inform beginning of tracking to physics processes 
121     fpTrack->GetDefinition()->GetProcessManage << 109   fpTrack->GetDefinition()->GetProcessManager()->StartTracking();
122                                                   110 
123     // Track the particle Step-by-Step while i << 111   // Track the particle Step-by-Step while it is alive
124     //                                         << 112   G4StepStatus stepStatus;
125     while ((fpTrack->GetTrackStatus() == fAliv << 113 
126       fpTrack->IncrementCurrentStepNumber();   << 114   while( (fpTrack->GetTrackStatus() == fAlive) ||
127       fpSteppingManager->Stepping();           << 115          (fpTrack->GetTrackStatus() == fStopButAlive) ){
                                                   >> 116 
                                                   >> 117     fpTrack->IncrementCurrentStepNumber();
                                                   >> 118     stepStatus = fpSteppingManager->Stepping();
128 #ifdef G4_STORE_TRAJECTORY                        119 #ifdef G4_STORE_TRAJECTORY
129       if (StoreTrajectory != 0) {              << 120     if(StoreTrajectory) fpTrajectory->
130         fpTrajectory->AppendStep(fpSteppingMan << 121                         AppendStep(fpSteppingManager->GetStep()); 
131       }                                        << 122 #endif
132 #endif                                         << 123     if(EventIsAborted) {
133       if (EventIsAborted) {                    << 124       fpTrack->SetTrackStatus( fKillTrackAndSecondaries );
134         fpTrack->SetTrackStatus(fKillTrackAndS << 
135       }                                        << 
136     }                                             125     }
137     // Inform end of tracking to physics proce << 
138     fpTrack->GetDefinition()->GetProcessManage << 
139   }                                               126   }
                                                   >> 127   // Inform end of tracking to physics processes 
                                                   >> 128   fpTrack->GetDefinition()->GetProcessManager()->EndTracking();
140                                                   129 
141   // Post tracking user intervention process.     130   // Post tracking user intervention process.
142   if (fpUserTrackingAction != nullptr) {       << 131   if( fpUserTrackingAction != NULL ) {
143     fpUserTrackingAction->PostUserTrackingActi << 132      fpUserTrackingAction->PostUserTrackingAction(fpTrack);
144   }                                               133   }
145                                                   134 
146   // Destruct the trajectory if it was created    135   // Destruct the trajectory if it was created
147 #ifdef G4VERBOSE                                  136 #ifdef G4VERBOSE
148   if ((StoreTrajectory != 0) && verboseLevel > << 137   if(StoreTrajectory&&verboseLevel>10) fpTrajectory->ShowTrajectory();
149     fpTrajectory->ShowTrajectory();            << 
150   }                                            << 
151 #endif                                            138 #endif
152   if ((StoreTrajectory == 0) && (fpTrajectory  << 139   if( (!StoreTrajectory)&&fpTrajectory ) {
153     delete fpTrajectory;                       << 140       delete fpTrajectory;
154     fpTrajectory = nullptr;                    << 141       fpTrajectory = 0;
155   }                                               142   }
156 }                                                 143 }
157                                                   144 
158 //////////////////////////////////////         << 
159 void G4TrackingManager::SetTrajectory(G4VTraje    145 void G4TrackingManager::SetTrajectory(G4VTrajectory* aTrajectory)
160 //////////////////////////////////////         << 
161 {                                                 146 {
162 #ifndef G4_STORE_TRAJECTORY                       147 #ifndef G4_STORE_TRAJECTORY
163   G4Exception("G4TrackingManager::SetTrajector << 148   G4Exception("G4TrackingManager::SetTrajectory is invoked without G4_STORE_TRAJECTORY compilor option");
164     "Invoked without G4_STORE_TRAJECTORY optio << 
165 #endif                                            149 #endif
166   fpTrajectory = aTrajectory;                     150   fpTrajectory = aTrajectory;
167 }                                                 151 }
168                                                   152 
169 //////////////////////////////////////            153 //////////////////////////////////////
170 void G4TrackingManager::EventAborted()            154 void G4TrackingManager::EventAborted()
171 //////////////////////////////////////            155 //////////////////////////////////////
172 {                                                 156 {
173   fpTrack->SetTrackStatus(fKillTrackAndSeconda << 157   fpTrack->SetTrackStatus( fKillTrackAndSecondaries );
174   EventIsAborted = true;                          158   EventIsAborted = true;
175 }                                                 159 }
176                                                   160 
177 //////////////////////////////////////         << 161 //************************************************************************
178 void G4TrackingManager::TrackBanner()          << 162 //
179 //////////////////////////////////////         << 163 //  Private Member Functions
180 {                                              << 164 //
181   G4cout << G4endl;                            << 165 //************************************************************************
182   G4cout << "********************************* << 
183          << "********************************* << 
184   G4cout << "* G4Track Information: "          << 
185          << "  Particle = " << fpTrack->GetDef << 
186          << "   Track ID = " << fpTrack->GetTr << 
187          << "   Parent ID = " << fpTrack->GetP << 
188   G4cout << "********************************* << 
189          << "********************************* << 
190   G4cout << G4endl;                            << 
191 }                                              << 
192                                                   166 
193 //////////////////////////////////////         << 167 
194 void G4TrackingManager::SetStoreTrajectory(G4i << 168 ////////////////////////////////////////////////
195 //////////////////////////////////////         << 169 void G4TrackingManager::Verbose(G4String select)
                                                   >> 170 ////////////////////////////////////////////////
196 {                                                 171 {
197   StoreTrajectory = value;                     << 172 
                                                   >> 173   // !!!!! Verbose
                                                   >> 174   if( select == "ProcessOneTrack" ){
                                                   >> 175 #ifdef G4VERBOSE
                                                   >> 176      if(verboseLevel >= 1) { 
                                                   >> 177        G4cout << G4endl;
                                                   >> 178        G4cout << "*******************************************************"
                                                   >> 179             << "**************************************************"
                                                   >> 180             << G4endl;
                                                   >> 181        G4cout << "* G4Track Information: " 
                                                   >> 182             << "  Particle = " << fpTrack->GetDefinition()->GetParticleName() 
                                                   >> 183             << "," 
                                                   >> 184       << "   Track ID = " << fpTrack->GetTrackID() 
                                                   >> 185             << "," 
                                                   >> 186       << "   Parent ID = " << fpTrack->GetParentID() 
                                                   >> 187             << G4endl;
                                                   >> 188        G4cout << "*******************************************************"
                                                   >> 189             << "**************************************************"
                                                   >> 190             << G4endl;
                                                   >> 191        G4cout << G4endl;
                                                   >> 192       
                                                   >> 193      }
                                                   >> 194 #endif
                                                   >> 195   }
198 }                                                 196 }
                                                   >> 197 
                                                   >> 198 
                                                   >> 199 
                                                   >> 200 
                                                   >> 201 
                                                   >> 202 
                                                   >> 203 
                                                   >> 204 
199                                                   205 
200                                                   206