Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/processes/electromagnetic/dna/management/include/G4ITModelProcessor.hh

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 /processes/electromagnetic/dna/management/include/G4ITModelProcessor.hh (Version 11.3.0) and /processes/electromagnetic/dna/management/include/G4ITModelProcessor.hh (Version 10.6.p3)


  1 //                                                  1 //
  2 // *******************************************      2 // ********************************************************************
  3 // * License and Disclaimer                         3 // * License and Disclaimer                                           *
  4 // *                                                4 // *                                                                  *
  5 // * The  Geant4 software  is  copyright of th      5 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
  6 // * the Geant4 Collaboration.  It is provided      6 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
  7 // * conditions of the Geant4 Software License      7 // * conditions of the Geant4 Software License,  included in the file *
  8 // * LICENSE and available at  http://cern.ch/      8 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
  9 // * include a list of copyright holders.           9 // * include a list of copyright holders.                             *
 10 // *                                               10 // *                                                                  *
 11 // * Neither the authors of this software syst     11 // * Neither the authors of this software system, nor their employing *
 12 // * institutes,nor the agencies providing fin     12 // * institutes,nor the agencies providing financial support for this *
 13 // * work  make  any representation or  warran     13 // * work  make  any representation or  warranty, express or implied, *
 14 // * regarding  this  software system or assum     14 // * regarding  this  software system or assume any liability for its *
 15 // * use.  Please see the license in the file      15 // * use.  Please see the license in the file  LICENSE  and URL above *
 16 // * for the full disclaimer and the limitatio     16 // * for the full disclaimer and the limitation of liability.         *
 17 // *                                               17 // *                                                                  *
 18 // * This  code  implementation is the result      18 // * This  code  implementation is the result of  the  scientific and *
 19 // * technical work of the GEANT4 collaboratio     19 // * technical work of the GEANT4 collaboration.                      *
 20 // * By using,  copying,  modifying or  distri     20 // * By using,  copying,  modifying or  distributing the software (or *
 21 // * any work based  on the software)  you  ag     21 // * any work based  on the software)  you  agree  to acknowledge its *
 22 // * use  in  resulting  scientific  publicati     22 // * use  in  resulting  scientific  publications,  and indicate your *
 23 // * acceptance of all terms of the Geant4 Sof     23 // * acceptance of all terms of the Geant4 Software license.          *
 24 // *******************************************     24 // ********************************************************************
 25 //                                                 25 //
 26 //                                                 26 //
 27 // Author: Mathieu Karamitros                      27 // Author: Mathieu Karamitros
 28                                                    28 
 29 // The code is developed in the framework of t     29 // The code is developed in the framework of the ESA AO7146
 30 //                                                 30 //
 31 // We would be very happy hearing from you, se     31 // We would be very happy hearing from you, send us your feedback! :)
 32 //                                                 32 //
 33 // In order for Geant4-DNA to be maintained an     33 // In order for Geant4-DNA to be maintained and still open-source,
 34 // article citations are crucial.                  34 // article citations are crucial. 
 35 // If you use Geant4-DNA chemistry and you pub     35 // If you use Geant4-DNA chemistry and you publish papers about your software, 
 36 // in addition to the general paper on Geant4-     36 // in addition to the general paper on Geant4-DNA:
 37 //                                                 37 //
 38 // Int. J. Model. Simul. Sci. Comput. 1 (2010)     38 // Int. J. Model. Simul. Sci. Comput. 1 (2010) 157–178
 39 //                                                 39 //
 40 // we would be very happy if you could please      40 // we would be very happy if you could please also cite the following
 41 // reference papers on chemistry:                  41 // reference papers on chemistry:
 42 //                                                 42 //
 43 // J. Comput. Phys. 274 (2014) 841-882             43 // J. Comput. Phys. 274 (2014) 841-882
 44 // Prog. Nucl. Sci. Tec. 2 (2011) 503-508          44 // Prog. Nucl. Sci. Tec. 2 (2011) 503-508 
 45                                                    45 
 46 #pragma once                                       46 #pragma once
 47                                                    47 
 48 #include "G4ITReactionChange.hh"                   48 #include "G4ITReactionChange.hh"
 49 #include "G4ITType.hh"                             49 #include "G4ITType.hh"
 50 #include "G4ITModelHandler.hh"                     50 #include "G4ITModelHandler.hh"
 51 #include "G4ITStepStatus.hh"                       51 #include "G4ITStepStatus.hh"
 52 #include <vector>                                  52 #include <vector>
 53                                                    53 
 54 class G4VITTimeStepComputer;                       54 class G4VITTimeStepComputer;
 55 class G4VITReactionProcess;                        55 class G4VITReactionProcess;
 56 class G4ITModelHandler;                            56 class G4ITModelHandler;
 57 class G4ITReactionSet;                             57 class G4ITReactionSet;
 58 class G4UserTimeStepAction;                        58 class G4UserTimeStepAction;
 59 class G4ITTrackingManager;                         59 class G4ITTrackingManager;
 60 class G4ITTrackHolder;                             60 class G4ITTrackHolder;
 61                                                    61 
 62 /**                                                62 /**
 63  * The G4ITModelProcessor will call the two pr     63  * The G4ITModelProcessor will call the two processes defined in G4VITModel.
 64  * This processes act at the beginning and end     64  * This processes act at the beginning and end of each step.
 65  * The first one, the TimeStepper will calcula     65  * The first one, the TimeStepper will calculate a time step to propagate all
 66  * the track and eventually it can return some     66  * the track and eventually it can return some tracks that can likely react
 67  * at the end of the step.                         67  * at the end of the step.
 68  * The second one, the ReactionProcess will ma     68  * The second one, the ReactionProcess will make the tracks reacting.
 69  * \deprecated This class will be removed          69  * \deprecated This class will be removed
 70  */                                                70  */
 71 class G4ITModelProcessor                           71 class G4ITModelProcessor
 72 {                                                  72 {
 73 public:                                            73 public:
 74     G4ITModelProcessor();                          74     G4ITModelProcessor();
 75     G4ITModelProcessor(const G4ITModelProcesso     75     G4ITModelProcessor(const G4ITModelProcessor& other) = delete;
 76     G4ITModelProcessor& operator=(const G4ITMo     76     G4ITModelProcessor& operator=(const G4ITModelProcessor& other) = delete;
 77     virtual ~G4ITModelProcessor();                 77     virtual ~G4ITModelProcessor();
 78                                                    78 
 79     void SetModelHandler(G4ITModelHandler*);       79     void SetModelHandler(G4ITModelHandler*);
 80     void SetTrackingManager(G4ITTrackingManage     80     void SetTrackingManager(G4ITTrackingManager* trackingManager);
 81                                                    81 
 82     void Initialize();                             82     void Initialize();
 83                                                    83 
 84     void RegisterModel(double time, G4VITStepM     84     void RegisterModel(double time, G4VITStepModel*);
 85                                                    85 
 86     /** Restore the original state. This metho     86     /** Restore the original state. This method should be called only by G4Scheduler */
 87     void CleanProcessor();                         87     void CleanProcessor();
 88                                                    88 
 89     G4double CalculateMinTimeStep(G4double cur     89     G4double CalculateMinTimeStep(G4double currentGlobalTime,
 90                                   G4double def     90                                   G4double definedMinTimeStep);
 91                                                    91 
 92     void ComputeTrackReaction(G4ITStepStatus f     92     void ComputeTrackReaction(G4ITStepStatus fITStepStatus,
 93                               G4double fGlobal     93                               G4double fGlobalTime,
 94                               G4double current     94                               G4double currentTimeStep,
 95                               G4double previou     95                               G4double previousTimeStep,
 96                               G4bool reachedUs     96                               G4bool reachedUserTimeLimit,
 97                               G4double fTimeTo     97                               G4double fTimeTolerance,
 98                               G4UserTimeStepAc     98                               G4UserTimeStepAction* fpUserTimeStepAction,
 99                               G4int fVerbose);     99                               G4int fVerbose);
100                                                   100 
101     void InitializeStepper(G4double currentGlo    101     void InitializeStepper(G4double currentGlobalTime,
102                            G4double userMinTim    102                            G4double userMinTime);
103                                                   103 
104     bool GetComputeTimeStep() const;              104     bool GetComputeTimeStep() const;
105                                                   105 
106 public:                                           106 public:
                                                   >> 107     void CalculateTimeStep(const G4Track*, G4double userMinTimeStep);
                                                   >> 108 
                                                   >> 109     void DoCalculateStep();
                                                   >> 110 
                                                   >> 111     void FindReaction(G4ITReactionSet* pReactionSet,
                                                   >> 112                       double currentStepTime,
                                                   >> 113                       double previousStepTime,
                                                   >> 114                       bool reachedUserStepTimeLimit);
                                                   >> 115 
107     const G4Track* GetTrack() const;              116     const G4Track* GetTrack() const;
108                                                   117 
109 protected:                                        118 protected:
110     void SetTrack(const G4Track*);                119     void SetTrack(const G4Track*);
                                                   >> 120     void ExtractTimeStepperData();
111                                                   121 
112     G4double fTSTimeStep;                         122     G4double fTSTimeStep;
113     G4ITReactionSet* fReactionSet;                123     G4ITReactionSet* fReactionSet;
114     G4ITTrackingManager* fpTrackingManager;       124     G4ITTrackingManager* fpTrackingManager;
115     G4ITTrackHolder* fpTrackContainer;            125     G4ITTrackHolder* fpTrackContainer;
116                                                   126 
117     G4bool fInitialized;                          127     G4bool fInitialized;
118     G4ITModelHandler* fpModelHandler;             128     G4ITModelHandler* fpModelHandler;
119                                                   129 
120     const G4Track* fpTrack;                       130     const G4Track* fpTrack;
121     G4double fUserMinTimeStep;                    131     G4double fUserMinTimeStep;
122                                                   132 
123     std::vector<G4VITStepModel*> fActiveModels    133     std::vector<G4VITStepModel*> fActiveModels;
124     G4VITStepModel* fpActiveModelWithMinTimeSt    134     G4VITStepModel* fpActiveModelWithMinTimeStep;
125                                                   135 
126     std::vector<std::unique_ptr<G4ITReactionCh    136     std::vector<std::unique_ptr<G4ITReactionChange>> fReactionInfo;
127                                                   137 
128     bool fComputeTimeStep;                        138     bool fComputeTimeStep;
129     bool fComputeReaction;                        139     bool fComputeReaction;
130 };                                                140 };
131                                                   141 
132                                                   142