Warning, file /include/Geant4/G4VMoleculeReactionCounter.hh was not indexed
or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027 #ifndef G4VMOLECULEREACTIONCOUNTER_HH
0028 #define G4VMOLECULEREACTIONCOUNTER_HH 1
0029
0030 #include "G4VMoleculeCounterInternalBase.hh"
0031
0032 #include <map>
0033 #include <memory>
0034
0035 class G4Track;
0036 class G4DNAMolecularReactionData;
0037
0038
0039
0040 class G4VMoleculeReactionCounter : public G4VMoleculeCounterInternalBase
0041 {
0042 template<typename>
0043 friend class G4VUserMoleculeReactionCounter;
0044
0045 public:
0046 enum MoleculeReactionCounterType
0047 {
0048 Other,
0049 Basic,
0050 };
0051 struct G4VMoleculeReactionCounterIndex
0052 {
0053 virtual ~G4VMoleculeReactionCounterIndex() = default;
0054 virtual G4bool operator<(G4VMoleculeReactionCounterIndex const&) const = 0;
0055 virtual G4bool operator==(G4VMoleculeReactionCounterIndex const&) const = 0;
0056 virtual G4String GetInfo() const = 0;
0057 virtual const G4DNAMolecularReactionData* GetReactionData() const = 0;
0058 };
0059
0060 private:
0061 G4VMoleculeReactionCounter();
0062 G4VMoleculeReactionCounter(const G4String&, MoleculeReactionCounterType =
0063 MoleculeReactionCounterType::Basic);
0064 G4VMoleculeReactionCounter(G4VMoleculeReactionCounter const&) = delete;
0065 void operator=(G4VMoleculeReactionCounter const& x) = delete;
0066
0067 public:
0068 ~G4VMoleculeReactionCounter() override = default;
0069
0070 public:
0071
0072 virtual std::unique_ptr<G4VMoleculeReactionCounterIndex> BuildSimpleIndex(const G4DNAMolecularReactionData*) const = 0;
0073
0074 virtual void RecordReaction(std::unique_ptr<G4VMoleculeReactionCounterIndex>, G4double, G4int = 1) = 0;
0075
0076 virtual std::set<const G4DNAMolecularReactionData*> GetRecordedReactions() const = 0;
0077
0078 protected:
0079 MoleculeReactionCounterType fType{MoleculeReactionCounterType::Basic};
0080
0081 public:
0082 MoleculeReactionCounterType GetType() const;
0083 };
0084
0085
0086
0087 inline G4VMoleculeReactionCounter::MoleculeReactionCounterType G4VMoleculeReactionCounter::GetType() const
0088 {
0089 return fType;
0090 }
0091
0092 #endif