G4ScoreSplittingProcess.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: G4ScoreSplittingProcess.hh 69885 2013-05-17 07:49:30Z gcosmo $
00028 //
00029 // 
00030 //---------------------------------------------------------------
00031 //
00032 //  G4ScoreSplittingProcess.hh
00033 //
00034 //  Description:
00035 //    This process is used to split the length and energy 
00036 //   of a step in a regular structure into sub-steps, and to 
00037 //   call the scorers for each sub-volume.
00038 //    It invokes sensitive detectors assigned in the *mass*
00039 //   world.
00040 //
00041 //  Design and first implementation: J. Apostolakis / M.Asai 2010
00042 //---------------------------------------------------------------
00043 
00044 
00045 #ifndef G4ScoreSplittingProcess_h
00046 #define G4ScoreSplittingProcess_h 1
00047 
00048 #include "globals.hh"
00049 class G4Step;
00050 class G4Navigator;
00051 class G4TransportationManager;
00052 class G4PathFinder;
00053 class G4VTouchable;
00054 class G4VPhysicalVolume;
00055 class G4ParticleChange;
00056 class G4EnergySplitter; 
00057 
00058 #include "G4VProcess.hh"
00059 #include "G4FieldTrack.hh"
00060 #include "G4TouchableHandle.hh"
00061 class G4TouchableHistory;
00062 // #include "G4TouchableHistory.hh"
00063 
00064 //------------------------------------------
00065 //
00066 //        G4ScoreSplittingProcess class
00067 //
00068 //------------------------------------------
00069 
00070 
00071 // Class Description:
00072 
00073 class G4ScoreSplittingProcess : public G4VProcess
00074 {
00075 public: // with description
00076 
00077   //------------------------
00078   // Constructor/Destructor
00079   //------------------------
00080   
00081   G4ScoreSplittingProcess(const G4String& processName = "ScoreSplittingProc",
00082                                  G4ProcessType theType = fParameterisation);
00083   virtual ~G4ScoreSplittingProcess();
00084   
00085   //--------------------------------------------------------------
00086   //     Process interface
00087   //--------------------------------------------------------------
00088 
00089   void StartTracking(G4Track*);
00090   
00091   //------------------------------------------------------------------------
00092   // GetPhysicalInteractionLength() and DoIt() methods for AtRest 
00093   //------------------------------------------------------------------------
00094   
00095   G4double AtRestGetPhysicalInteractionLength(
00096                                               const G4Track& ,
00097                                               G4ForceCondition* 
00098                                               );
00099 
00100   G4VParticleChange* AtRestDoIt(
00101                                const G4Track& ,
00102                                const G4Step&
00103                                );
00104 
00105   //------------------------------------------------------------------------
00106   // GetPhysicalInteractionLength() and DoIt() methods for AlongStep 
00107   //------------------------------------------------------------------------
00108   
00109   G4double AlongStepGetPhysicalInteractionLength(
00110                                                  const G4Track&,
00111                                                  G4double  ,
00112                                                  G4double  ,
00113                                                  G4double&,
00114                                                  G4GPILSelection*
00115                                                  );
00116 
00117   G4VParticleChange* AlongStepDoIt(
00118                                   const G4Track& ,
00119                                   const G4Step& 
00120                                   );
00121 
00122   //-----------------------------------------------------------------------
00123   // GetPhysicalInteractionLength() and DoIt() methods for PostStep
00124   //-----------------------------------------------------------------------
00125   
00126   G4double PostStepGetPhysicalInteractionLength(const G4Track& track,
00127                                                 G4double   previousStepSize,
00128                                                 G4ForceCondition* condition);
00129   
00130   G4VParticleChange* PostStepDoIt(const G4Track& ,const G4Step& );
00131 
00132 private:
00133   G4TouchableHistory* CreateTouchableForSubStep( G4int newVoxelNum, G4ThreeVector newPosition ); 
00134 
00135 private:
00136   void CopyStepStart(const G4Step & step);
00137 
00138   G4Step * fSplitStep;
00139   G4StepPoint *fSplitPreStepPoint;
00140   G4StepPoint *fSplitPostStepPoint;
00141 
00142   G4VParticleChange dummyParticleChange;
00143   G4ParticleChange xParticleChange;
00144 
00145   // G4TransportationManager* fTransportationManager;
00146   // G4PathFinder*        fPathFinder;
00147 
00148   // -------------------------------
00149   // Touchables for the Split Step
00150   // -------------------------------
00151   G4TouchableHandle    fOldTouchableH;
00152   G4TouchableHandle    fNewTouchableH;
00153 
00154   // Memory of Touchables of full step
00155   G4TouchableHandle    fInitialTouchableH;
00156   G4TouchableHandle    fFinalTouchableH;
00157 
00158   G4EnergySplitter     *fpEnergySplitter; 
00159 
00160   // ******************************************************
00161   //  For TESTS:
00162   // ******************************************************
00163 public:
00164   void Verbose(const G4Step&) const;
00165 };
00166 
00167 #endif

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