Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions
G4WeightWindowProcess Class Reference

#include <G4WeightWindowProcess.hh>

Inheritance diagram for G4WeightWindowProcess:
G4VProcess G4VTrackTerminator

Public Member Functions

 G4WeightWindowProcess (const G4VWeightWindowAlgorithm &aWeightWindowAlgorithm, const G4VWeightWindowStore &aWWStore, const G4VTrackTerminator *TrackTerminator, G4PlaceOfAction placeOfAction, const G4String &aName="WeightWindowProcess", G4bool para=false)
 
virtual ~G4WeightWindowProcess ()
 
void SetParallelWorld (G4String parallelWorldName)
 
void SetParallelWorld (G4VPhysicalVolume *parallelWorld)
 
void StartTracking (G4Track *)
 
virtual G4double PostStepGetPhysicalInteractionLength (const G4Track &aTrack, G4double previousStepSize, G4ForceCondition *condition)
 
virtual G4VParticleChangePostStepDoIt (const G4Track &, const G4Step &)
 
virtual void KillTrack () const
 
virtual const G4StringGetName () const
 
virtual G4double AlongStepGetPhysicalInteractionLength (const G4Track &, G4double, G4double, G4double &, G4GPILSelection *)
 
virtual G4double AtRestGetPhysicalInteractionLength (const G4Track &, G4ForceCondition *)
 
virtual G4VParticleChangeAtRestDoIt (const G4Track &, const G4Step &)
 
virtual G4VParticleChangeAlongStepDoIt (const G4Track &, const G4Step &)
 
- Public Member Functions inherited from G4VProcess
 G4VProcess (const G4String &aName="NoName", G4ProcessType aType=fNotDefined)
 
 G4VProcess (const G4VProcess &right)
 
virtual ~G4VProcess ()
 
G4int operator== (const G4VProcess &right) const
 
G4int operator!= (const G4VProcess &right) const
 
G4double GetCurrentInteractionLength () const
 
void SetPILfactor (G4double value)
 
G4double GetPILfactor () const
 
G4double AlongStepGPIL (const G4Track &track, G4double previousStepSize, G4double currentMinimumStep, G4double &proposedSafety, G4GPILSelection *selection)
 
G4double AtRestGPIL (const G4Track &track, G4ForceCondition *condition)
 
G4double PostStepGPIL (const G4Track &track, G4double previousStepSize, G4ForceCondition *condition)
 
virtual G4bool IsApplicable (const G4ParticleDefinition &)
 
virtual void BuildPhysicsTable (const G4ParticleDefinition &)
 
virtual void PreparePhysicsTable (const G4ParticleDefinition &)
 
virtual G4bool StorePhysicsTable (const G4ParticleDefinition *, const G4String &, G4bool)
 
virtual G4bool RetrievePhysicsTable (const G4ParticleDefinition *, const G4String &, G4bool)
 
const G4StringGetPhysicsTableFileName (const G4ParticleDefinition *, const G4String &directory, const G4String &tableName, G4bool ascii=false)
 
const G4StringGetProcessName () const
 
G4ProcessType GetProcessType () const
 
void SetProcessType (G4ProcessType)
 
G4int GetProcessSubType () const
 
void SetProcessSubType (G4int)
 
virtual void EndTracking ()
 
virtual void SetProcessManager (const G4ProcessManager *)
 
virtual const G4ProcessManagerGetProcessManager ()
 
virtual void ResetNumberOfInteractionLengthLeft ()
 
G4double GetNumberOfInteractionLengthLeft () const
 
G4double GetTotalNumberOfInteractionLengthTraversed () const
 
G4bool isAtRestDoItIsEnabled () const
 
G4bool isAlongStepDoItIsEnabled () const
 
G4bool isPostStepDoItIsEnabled () const
 
virtual void DumpInfo () const
 
void SetVerboseLevel (G4int value)
 
G4int GetVerboseLevel () const
 
virtual void SetMasterProcess (G4VProcess *masterP)
 
const G4VProcessGetMasterProcess () const
 
virtual void BuildWorkerPhysicsTable (const G4ParticleDefinition &part)
 
virtual void PrepareWorkerPhysicsTable (const G4ParticleDefinition &)
 
- Public Member Functions inherited from G4VTrackTerminator
 G4VTrackTerminator ()
 
virtual ~G4VTrackTerminator ()
 

Additional Inherited Members

- Static Public Member Functions inherited from G4VProcess
static const G4StringGetProcessTypeName (G4ProcessType)
 
- Protected Member Functions inherited from G4VProcess
void SubtractNumberOfInteractionLengthLeft (G4double previousStepSize)
 
void ClearNumberOfInteractionLengthLeft ()
 
- Protected Attributes inherited from G4VProcess
const G4ProcessManageraProcessManager
 
G4VParticleChangepParticleChange
 
G4ParticleChange aParticleChange
 
G4double theNumberOfInteractionLengthLeft
 
G4double currentInteractionLength
 
G4double theInitialNumberOfInteractionLength
 
G4String theProcessName
 
G4String thePhysicsTableFileName
 
G4ProcessType theProcessType
 
G4int theProcessSubType
 
G4double thePILfactor
 
G4bool enableAtRestDoIt
 
G4bool enableAlongStepDoIt
 
G4bool enablePostStepDoIt
 
G4int verboseLevel
 
- Protected Attributes inherited from G4VTrackTerminator
G4double kCarTolerance
 

Detailed Description

Definition at line 62 of file G4WeightWindowProcess.hh.

Constructor & Destructor Documentation

G4WeightWindowProcess::G4WeightWindowProcess ( const G4VWeightWindowAlgorithm aWeightWindowAlgorithm,
const G4VWeightWindowStore aWWStore,
const G4VTrackTerminator TrackTerminator,
G4PlaceOfAction  placeOfAction,
const G4String aName = "WeightWindowProcess",
G4bool  para = false 
)

Definition at line 55 of file G4WeightWindowProcess.cc.

References FatalException, G4cout, G4endl, G4Exception(), G4PathFinder::GetInstance(), G4Step::GetPostStepPoint(), G4Step::GetPreStepPoint(), G4VProcess::GetProcessName(), G4TransportationManager::GetTransportationManager(), G4VProcess::pParticleChange, and G4VProcess::verboseLevel.

61  : G4VProcess(aName),
62  fParticleChange(new G4ParticleChange),
63  fWeightWindowAlgorithm(aWeightWindowAlgorithm),
64  fWeightWindowStore(aWWStore),
65  fPostStepAction(0),
66  fPlaceOfAction(placeOfAction),
67  fGhostWorldName("NoParallelWorld"),fGhostWorld(0),
68  fGhostNavigator(0), fNavigatorID(-1), fFieldTrack('0')
69 {
70  if (TrackTerminator)
71  {
72  fPostStepAction = new G4SamplingPostStepAction(*TrackTerminator);
73  }
74  else
75  {
76  fPostStepAction = new G4SamplingPostStepAction(*this);
77  }
78  if (!fParticleChange)
79  {
80  G4Exception("G4WeightWindowProcess::G4WeightWindowProcess()",
81  "FatalError", FatalException,
82  "Failed allocation of G4ParticleChange !");
83  }
84  G4VProcess::pParticleChange = fParticleChange;
85 
86  fGhostStep = new G4Step();
87  fGhostPreStepPoint = fGhostStep->GetPreStepPoint();
88  fGhostPostStepPoint = fGhostStep->GetPostStepPoint();
89 
90  fTransportationManager = G4TransportationManager::GetTransportationManager();
91  fPathFinder = G4PathFinder::GetInstance();
92 
93  if (verboseLevel>0)
94  {
95  G4cout << GetProcessName() << " is created " << G4endl;
96  }
97 
98  paraflag = para;
99 
100 }
static G4PathFinder * GetInstance()
Definition: G4PathFinder.cc:57
G4int verboseLevel
Definition: G4VProcess.hh:368
G4VProcess(const G4String &aName="NoName", G4ProcessType aType=fNotDefined)
Definition: G4VProcess.cc:52
G4StepPoint * GetPreStepPoint() const
G4GLOB_DLL std::ostream G4cout
Definition: G4Step.hh:76
const G4String & GetProcessName() const
Definition: G4VProcess.hh:408
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
static G4TransportationManager * GetTransportationManager()
G4StepPoint * GetPostStepPoint() const
G4VParticleChange * pParticleChange
Definition: G4VProcess.hh:283
#define G4endl
Definition: G4ios.hh:61
G4WeightWindowProcess::~G4WeightWindowProcess ( )
virtual

Definition at line 102 of file G4WeightWindowProcess.cc.

103 {
104 
105  delete fPostStepAction;
106  delete fParticleChange;
107  // delete fGhostStep;
108 
109 }

Member Function Documentation

G4VParticleChange * G4WeightWindowProcess::AlongStepDoIt ( const G4Track track,
const G4Step  
)
virtual

Implements G4VProcess.

Definition at line 389 of file G4WeightWindowProcess.cc.

References G4VParticleChange::Initialize(), and G4VProcess::pParticleChange.

390 {
391  // Dummy ParticleChange ie: does nothing
392  // Expecting G4Transportation to move the track
393  pParticleChange->Initialize(track);
394  return pParticleChange;
395 
396  // return 0;
397 }
virtual void Initialize(const G4Track &)
G4VParticleChange * pParticleChange
Definition: G4VProcess.hh:283
G4double G4WeightWindowProcess::AlongStepGetPhysicalInteractionLength ( const G4Track track,
G4double  previousStepSize,
G4double  currentMinimumStep,
G4double proposedSafety,
G4GPILSelection selection 
)
virtual

Implements G4VProcess.

Definition at line 301 of file G4WeightWindowProcess.cc.

References CandidateForSelection, G4Navigator::ComputeSafety(), G4PathFinder::ComputeStep(), DBL_MAX, G4ThreadLocal, G4Track::GetCurrentStepNumber(), G4Track::GetVolume(), kDoNot, kSharedOther, kSharedTransport, kUnique, NotCandidateForSelection, and G4FieldTrackUpdator::Update().

304 {
305  if(paraflag) {
306  static G4ThreadLocal G4FieldTrack *endTrack_G4MT_TLS_ = 0 ; if (!endTrack_G4MT_TLS_) endTrack_G4MT_TLS_ = new G4FieldTrack ('0') ; G4FieldTrack &endTrack = *endTrack_G4MT_TLS_;
307  static G4ThreadLocal ELimited *eLimited_G4MT_TLS_ = 0 ; if (!eLimited_G4MT_TLS_) eLimited_G4MT_TLS_ = new ELimited ; ELimited &eLimited = *eLimited_G4MT_TLS_;
308 
309  *selection = NotCandidateForSelection;
310  G4double returnedStep = DBL_MAX;
311 
312  if (previousStepSize > 0.)
313  { fGhostSafety -= previousStepSize; }
314  // else
315  // { fGhostSafety = -1.; }
316  if (fGhostSafety < 0.) fGhostSafety = 0.0;
317 
318  // ------------------------------------------
319  // Determination of the proposed STEP LENGTH:
320  // ------------------------------------------
321  if (currentMinimumStep <= fGhostSafety && currentMinimumStep > 0.)
322  {
323  // I have no chance to limit
324  returnedStep = currentMinimumStep;
325  fOnBoundary = false;
326  proposedSafety = fGhostSafety - currentMinimumStep;
327  }
328  else // (currentMinimumStep > fGhostSafety: I may limit the Step)
329  {
330  G4FieldTrackUpdator::Update(&fFieldTrack,&track);
331  //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
332  // ComputeStep
333  //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
334  returnedStep
335  = fPathFinder->ComputeStep(fFieldTrack,currentMinimumStep,fNavigatorID,
336  track.GetCurrentStepNumber(),fGhostSafety,eLimited,
337  endTrack,track.GetVolume());
338  //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
339  if(eLimited == kDoNot)
340  {
341  // Track is not on the boundary
342  fOnBoundary = false;
343  fGhostSafety = fGhostNavigator->ComputeSafety(endTrack.GetPosition());
344  }
345  else
346  {
347  // Track is on the boundary
348  fOnBoundary = true;
349  proposedSafety = fGhostSafety;
350  }
351  //xbug? proposedSafety = fGhostSafety;
352  if(eLimited == kUnique || eLimited == kSharedOther) {
353  *selection = CandidateForSelection;
354  }else if (eLimited == kSharedTransport) {
355  returnedStep *= (1.0 + 1.0e-9);
356  // Expand to disable its selection in Step Manager comparison
357  }
358 
359  }
360 
361  // ----------------------------------------------
362  // Returns the fGhostSafety as the proposedSafety
363  // The SteppingManager will take care of keeping
364  // the smallest one.
365  // ----------------------------------------------
366  return returnedStep;
367 
368  } else {
369  return DBL_MAX;
370  // not sensible - time goes backwards! return -1.0;
371  }
372 
373 }
ELimited
#define G4ThreadLocal
Definition: tls.hh:52
G4int GetCurrentStepNumber() const
G4double ComputeStep(const G4FieldTrack &pFieldTrack, G4double pCurrentProposedStepLength, G4int navigatorId, G4int stepNo, G4double &pNewSafety, ELimited &limitedStep, G4FieldTrack &EndState, G4VPhysicalVolume *currentVolume)
G4VPhysicalVolume * GetVolume() const
double G4double
Definition: G4Types.hh:76
virtual G4double ComputeSafety(const G4ThreeVector &globalpoint, const G4double pProposedMaxLength=DBL_MAX, const G4bool keepState=true)
#define DBL_MAX
Definition: templates.hh:83
static void Update(G4FieldTrack *, const G4Track *)
G4VParticleChange * G4WeightWindowProcess::AtRestDoIt ( const G4Track ,
const G4Step  
)
virtual

Implements G4VProcess.

Definition at line 383 of file G4WeightWindowProcess.cc.

384 {
385  return 0;
386 }
G4double G4WeightWindowProcess::AtRestGetPhysicalInteractionLength ( const G4Track ,
G4ForceCondition  
)
virtual

Implements G4VProcess.

Definition at line 376 of file G4WeightWindowProcess.cc.

378 {
379  return -1.0;
380 }
const G4String & G4WeightWindowProcess::GetName ( void  ) const
virtual

Implements G4VTrackTerminator.

Definition at line 295 of file G4WeightWindowProcess.cc.

References G4VProcess::GetProcessName().

296 {
298 }
const G4String & GetProcessName() const
Definition: G4VProcess.hh:408
void G4WeightWindowProcess::KillTrack ( ) const
virtual

Implements G4VTrackTerminator.

Definition at line 290 of file G4WeightWindowProcess.cc.

References fStopAndKill, and G4VParticleChange::ProposeTrackStatus().

291 {
292  fParticleChange->ProposeTrackStatus(fStopAndKill);
293 }
void ProposeTrackStatus(G4TrackStatus status)
G4VParticleChange * G4WeightWindowProcess::PostStepDoIt ( const G4Track aTrack,
const G4Step aStep 
)
virtual

Implements G4VProcess.

Definition at line 200 of file G4WeightWindowProcess.cc.

References G4VWeightWindowAlgorithm::Calculate(), G4PathFinder::CreateTouchableHandle(), G4SamplingPostStepAction::DoIt(), fGeomBoundary, G4Track::GetKineticEnergy(), G4VWeightWindowStore::GetLowerWeight(), G4StepPoint::GetPhysicalVolume(), G4Step::GetPostStepPoint(), G4VTouchable::GetReplicaNumber(), G4Step::GetStepLength(), G4StepPoint::GetStepStatus(), G4StepPoint::GetTouchable(), G4StepPoint::GetTouchableHandle(), G4Track::GetWeight(), G4ParticleChange::Initialize(), G4VTrackTerminator::kCarTolerance, onBoundary, onBoundaryAndCollision, onCollision, and G4StepPoint::SetTouchableHandle().

202 {
203 
204  fParticleChange->Initialize(aTrack);
205 
206  if(paraflag) {
207  fOldGhostTouchable = fGhostPostStepPoint->GetTouchableHandle();
208  //xbug? fOnBoundary = false;
209  CopyStep(aStep);
210 
211  if(fOnBoundary)
212  {
213 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
214 // Locate the point and get new touchable
215 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
216  //?? fPathFinder->Locate(step.GetPostStepPoint()->GetPosition(),
217  //?? step.GetPostStepPoint()->GetMomentumDirection());
218  fNewGhostTouchable = fPathFinder->CreateTouchableHandle(fNavigatorID);
219 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
220  }
221  else
222  {
223  // Do I need this ??????????????????????????????????????????????????????????
224  // fGhostNavigator->LocateGlobalPointWithinVolume(track.GetPosition());
225  // ?????????????????????????????????????????????????????????????????????????
226 
227  // fPathFinder->ReLocate(track.GetPosition());
228 
229  // reuse the touchable
230  fNewGhostTouchable = fOldGhostTouchable;
231  }
232 
233  fGhostPreStepPoint->SetTouchableHandle(fOldGhostTouchable);
234  fGhostPostStepPoint->SetTouchableHandle(fNewGhostTouchable);
235 
236  }
237 
238  if (aStep.GetStepLength() > kCarTolerance)
239  {
240 // if ( ( fPlaceOfAction == onBoundaryAndCollision)
241 // || ( (fPlaceOfAction == onBoundary) &&
242 // (aStep.GetPostStepPoint()->GetStepStatus() == fGeomBoundary) )
243 // || ( (fPlaceOfAction == onCollision) &&
244 // (aStep.GetPostStepPoint()->GetStepStatus() != fGeomBoundary) ) )
245  if(paraflag) {
246  if ( ( fPlaceOfAction == onBoundaryAndCollision)
247  || ( (fPlaceOfAction == onBoundary) &&
248  (fGhostPostStepPoint->GetStepStatus() == fGeomBoundary) )
249  || ( (fPlaceOfAction == onCollision) &&
250  (fGhostPostStepPoint->GetStepStatus() != fGeomBoundary) ) )
251  {
252 
253 // G4StepPoint *postpoint = aStep.GetPostStepPoint();
254 
255 // G4GeometryCell postCell(*(postpoint->GetPhysicalVolume()),
256 // postpoint->GetTouchable()->GetReplicaNumber());
257 
258  G4GeometryCell postCell(*(fGhostPostStepPoint->GetPhysicalVolume()),
259  fGhostPostStepPoint->GetTouchable()->GetReplicaNumber());
260  G4Nsplit_Weight nw =
261  fWeightWindowAlgorithm.Calculate(aTrack.GetWeight(),
262  fWeightWindowStore.GetLowerWeight(postCell,
263  aTrack.GetKineticEnergy()));
264  fPostStepAction->DoIt(aTrack, fParticleChange, nw);
265  }
266  } else {
267  if ( ( fPlaceOfAction == onBoundaryAndCollision)
268  || ( (fPlaceOfAction == onBoundary) &&
270  || ( (fPlaceOfAction == onCollision) &&
271  (aStep.GetPostStepPoint()->GetStepStatus() != fGeomBoundary) ) )
272  {
273 
274  G4StepPoint *postpoint = aStep.GetPostStepPoint();
275 
276  G4GeometryCell postCell(*(postpoint->GetPhysicalVolume()),
277  postpoint->GetTouchable()->GetReplicaNumber());
278 
279  G4Nsplit_Weight nw =
280  fWeightWindowAlgorithm.Calculate(aTrack.GetWeight(),
281  fWeightWindowStore.GetLowerWeight(postCell,
282  aTrack.GetKineticEnergy()));
283  fPostStepAction->DoIt(aTrack, fParticleChange, nw);
284  }
285  }
286  }
287  return fParticleChange;
288 }
G4double GetStepLength() const
G4StepStatus GetStepStatus() const
G4TouchableHandle CreateTouchableHandle(G4int navId) const
const G4VTouchable * GetTouchable() const
G4double GetKineticEnergy() const
G4VPhysicalVolume * GetPhysicalVolume() const
virtual void Initialize(const G4Track &)
void DoIt(const G4Track &aTrack, G4ParticleChange *aParticleChange, const G4Nsplit_Weight &nw)
G4StepPoint * GetPostStepPoint() const
virtual G4int GetReplicaNumber(G4int depth=0) const
Definition: G4VTouchable.cc:58
virtual G4Nsplit_Weight Calculate(G4double init_w, G4double lowerWeightBound) const =0
G4double GetWeight() const
virtual G4double GetLowerWeight(const G4GeometryCell &gCell, G4double partEnergy) const =0
void SetTouchableHandle(const G4TouchableHandle &apValue)
const G4TouchableHandle & GetTouchableHandle() const
G4double G4WeightWindowProcess::PostStepGetPhysicalInteractionLength ( const G4Track aTrack,
G4double  previousStepSize,
G4ForceCondition condition 
)
virtual

Implements G4VProcess.

Definition at line 187 of file G4WeightWindowProcess.cc.

References DBL_MAX, and Forced.

190 {
191 // *condition = Forced;
192 // return kInfinity;
193 
194 // *condition = StronglyForced;
195  *condition = Forced;
196  return DBL_MAX;
197 }
G4double condition(const G4ErrorSymMatrix &m)
#define DBL_MAX
Definition: templates.hh:83
void G4WeightWindowProcess::SetParallelWorld ( G4String  parallelWorldName)

Definition at line 118 of file G4WeightWindowProcess.cc.

References G4TransportationManager::GetNavigator(), and G4TransportationManager::GetParallelWorld().

Referenced by G4WeightWindowConfigurator::Configure().

119 {
120 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
121 // Get pointers of the parallel world and its navigator
122 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
123  fGhostWorldName = parallelWorldName;
124  fGhostWorld = fTransportationManager->GetParallelWorld(fGhostWorldName);
125  fGhostNavigator = fTransportationManager->GetNavigator(fGhostWorld);
126 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
127 }
G4VPhysicalVolume * GetParallelWorld(const G4String &worldName)
G4Navigator * GetNavigator(const G4String &worldName)
void G4WeightWindowProcess::SetParallelWorld ( G4VPhysicalVolume parallelWorld)

Definition at line 130 of file G4WeightWindowProcess.cc.

References G4VPhysicalVolume::GetName(), and G4TransportationManager::GetNavigator().

131 {
132 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
133 // Get pointer of navigator
134 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
135  fGhostWorldName = parallelWorld->GetName();
136  fGhostWorld = parallelWorld;
137  fGhostNavigator = fTransportationManager->GetNavigator(fGhostWorld);
138 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
139 }
const G4String & GetName() const
G4Navigator * GetNavigator(const G4String &worldName)
void G4WeightWindowProcess::StartTracking ( G4Track trk)
virtual

Reimplemented from G4VProcess.

Definition at line 146 of file G4WeightWindowProcess.cc.

References G4TransportationManager::ActivateNavigator(), G4PathFinder::CreateTouchableHandle(), FatalException, G4Exception(), G4Track::GetMomentumDirection(), G4Track::GetPosition(), G4PathFinder::PrepareNewTrack(), and G4StepPoint::SetTouchableHandle().

147 {
148 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
149 // Activate navigator and get the navigator ID
150 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
151 // G4cout << " G4ParallelWorldScoringProcess::StartTracking" << G4endl;
152 
153  if(paraflag) {
154  if(fGhostNavigator)
155  { fNavigatorID = fTransportationManager->ActivateNavigator(fGhostNavigator); }
156  else
157  {
158  G4Exception("G4WeightWindowProcess::StartTracking",
159  "ProcParaWorld000",FatalException,
160  "G4WeightWindowProcess is used for tracking without having a parallel world assigned");
161  }
162 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
163 
164 // G4cout << "G4ParallelWorldScoringProcess::StartTracking <<<<<<<<<<<<<<<<<< " << G4endl;
165 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
166 // Let PathFinder initialize
167 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
168  fPathFinder->PrepareNewTrack(trk->GetPosition(),trk->GetMomentumDirection());
169 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
170 
171 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
172 // Setup initial touchables for the first step
173 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
174  fOldGhostTouchable = fPathFinder->CreateTouchableHandle(fNavigatorID);
175  fGhostPreStepPoint->SetTouchableHandle(fOldGhostTouchable);
176  fNewGhostTouchable = fOldGhostTouchable;
177  fGhostPostStepPoint->SetTouchableHandle(fNewGhostTouchable);
178 
179  // Initialize
180  fGhostSafety = -1.;
181  fOnBoundary = false;
182  }
183 }
void PrepareNewTrack(const G4ThreeVector &position, const G4ThreeVector &direction, G4VPhysicalVolume *massStartVol=0)
const G4ThreeVector & GetPosition() const
G4TouchableHandle CreateTouchableHandle(G4int navId) const
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
G4int ActivateNavigator(G4Navigator *aNavigator)
const G4ThreeVector & GetMomentumDirection() const
void SetTouchableHandle(const G4TouchableHandle &apValue)

The documentation for this class was generated from the following files: