G4ParallelWorldScoringProcess.hh

Go to the documentation of this file.
00001 //
00002 // ********************************************************************
00003 // * License and Disclaimer                                           *
00004 // *                                                                  *
00005 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
00006 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
00007 // * conditions of the Geant4 Software License,  included in the file *
00008 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
00009 // * include a list of copyright holders.                             *
00010 // *                                                                  *
00011 // * Neither the authors of this software system, nor their employing *
00012 // * institutes,nor the agencies providing financial support for this *
00013 // * work  make  any representation or  warranty, express or implied, *
00014 // * regarding  this  software system or assume any liability for its *
00015 // * use.  Please see the license in the file  LICENSE  and URL above *
00016 // * for the full disclaimer and the limitation of liability.         *
00017 // *                                                                  *
00018 // * This  code  implementation is the result of  the  scientific and *
00019 // * technical work of the GEANT4 collaboration.                      *
00020 // * By using,  copying,  modifying or  distributing the software (or *
00021 // * any work based  on the software)  you  agree  to acknowledge its *
00022 // * use  in  resulting  scientific  publications,  and indicate your *
00023 // * acceptance of all terms of the Geant4 Software license.          *
00024 // ********************************************************************
00025 //
00026 //
00027 // $Id: G4ParallelWorldScoringProcess.hh 69885 2013-05-17 07:49:30Z gcosmo $
00028 //
00029 // 
00030 //---------------------------------------------------------------
00031 //
00032 //  G4ParallelWorldScoringProcess.hh
00033 //
00034 //  Description:
00035 //    This procss takes a parallel world and limits a step
00036 //   on the boundaries of volumes in the parallel world.
00037 //    It invokes sensitive detectors assigned in the parallel
00038 //   world.
00039 //
00040 //---------------------------------------------------------------
00041 
00042 
00043 #ifndef G4ParallelWorldScoringProcess_h
00044 #define G4ParallelWorldScoringProcess_h 1
00045 
00046 #include "globals.hh"
00047 class G4Step;
00048 class G4Navigator;
00049 class G4TransportationManager;
00050 class G4PathFinder;
00051 class G4VTouchable;
00052 class G4VPhysicalVolume;
00053 class G4ParticleChange;
00054 class G4ParticleDefinition;
00055 #include "G4VProcess.hh"
00056 #include "G4FieldTrack.hh"
00057 #include "G4TouchableHandle.hh"
00058 
00059 //------------------------------------------
00060 //
00061 //        G4ParallelWorldScoringProcess class
00062 //
00063 //------------------------------------------
00064 
00065 
00066 // Class Description:
00067 
00068 class G4ParallelWorldScoringProcess : public G4VProcess
00069 {
00070 public: // with description
00071 
00072   //------------------------
00073   // Constructor/Destructor
00074   //------------------------
00075   
00076   G4ParallelWorldScoringProcess(const G4String& processName = "ParaWorldScore",
00077                                  G4ProcessType theType = fParameterisation);
00078   virtual ~G4ParallelWorldScoringProcess();
00079   
00080   //--------------------------------------------------------------
00081   // Set Paralle World
00082   //--------------------------------------------------------------
00083 
00084   void SetParallelWorld(G4String parallelWorldName);
00085   void SetParallelWorld(G4VPhysicalVolume* parallelWorld);
00086   G4bool IsAtRestRequired(G4ParticleDefinition* partDef);
00087 
00088   //--------------------------------------------------------------
00089   //     Process interface
00090   //--------------------------------------------------------------
00091 
00092   void StartTracking(G4Track*);
00093   
00094   //------------------------------------------------------------------------
00095   // GetPhysicalInteractionLength() and DoIt() methods for AtRest 
00096   //------------------------------------------------------------------------
00097   
00098   G4double AtRestGetPhysicalInteractionLength(
00099                                               const G4Track& ,
00100                                               G4ForceCondition* 
00101                                               );
00102 
00103   G4VParticleChange* AtRestDoIt(
00104                                const G4Track& ,
00105                                const G4Step&
00106                                );
00107 
00108   //------------------------------------------------------------------------
00109   // GetPhysicalInteractionLength() and DoIt() methods for AlongStep 
00110   //------------------------------------------------------------------------
00111   
00112   G4double AlongStepGetPhysicalInteractionLength(
00113                                                  const G4Track&,
00114                                                  G4double  ,
00115                                                  G4double  ,
00116                                                  G4double&,
00117                                                  G4GPILSelection*
00118                                                  );
00119 
00120   G4VParticleChange* AlongStepDoIt(
00121                                   const G4Track& ,
00122                                   const G4Step& 
00123                                   );
00124 
00125   //-----------------------------------------------------------------------
00126   // GetPhysicalInteractionLength() and DoIt() methods for PostStep
00127   //-----------------------------------------------------------------------
00128   
00129   G4double PostStepGetPhysicalInteractionLength(const G4Track& track,
00130                                                 G4double   previousStepSize,
00131                                                 G4ForceCondition* condition);
00132   
00133   G4VParticleChange* PostStepDoIt(const G4Track& ,const G4Step& );
00134 
00135 private:
00136   void CopyStep(const G4Step & step);
00137 
00138   G4Step * fGhostStep;
00139   G4StepPoint * fGhostPreStepPoint;
00140   G4StepPoint * fGhostPostStepPoint;
00141 
00142   G4VParticleChange aDummyParticleChange;
00143   G4ParticleChange xParticleChange;
00144 
00145   G4TransportationManager* fTransportationManager;
00146   G4PathFinder*        fPathFinder;
00147 
00148   // -------------------------------
00149   // Navigation in the Ghost World:
00150   // -------------------------------
00151   G4String             fGhostWorldName;
00152   G4VPhysicalVolume*   fGhostWorld;
00153   G4Navigator*         fGhostNavigator;
00154   G4int                fNavigatorID;
00155   G4TouchableHandle    fOldGhostTouchable;
00156   G4TouchableHandle    fNewGhostTouchable;
00157   G4FieldTrack         fFieldTrack;
00158   G4double             fGhostSafety;
00159   G4bool               fOnBoundary;
00160 
00161   // ******************************************************
00162   // ******************************************************
00163   //
00164   //  For TESTS:
00165   //
00166   // ******************************************************
00167   // ******************************************************
00168 public:
00169   void Verbose(const G4Step&) const;
00170 };
00171 
00172 #endif

Generated on Mon May 27 17:49:14 2013 for Geant4 by  doxygen 1.4.7