45 #ifndef G4MoleculeCounter_h 46 #define G4MoleculeCounter_h 104 fLowerBoundSet =
false;
113 #ifdef MOLECULE_COUNTER_TESTING 122 virtual void AddAMoleculeAtTime(G4MolecularConfiguration*,
125 virtual void RemoveAMoleculeAtTime(G4MolecularConfiguration*,
130 static void DeleteInstance();
134 static void InitializeInstance();
136 G4bool SearchTimeMap(G4MolecularConfiguration* molecule);
137 int SearchUpperBoundTime(
double time,
bool sameTypeOfMolecule);
139 int GetNMoleculesAtTime(G4MolecularConfiguration* molecule,
double time);
141 GetNbMoleculeAgainstTime(G4MolecularConfiguration* molecule);
143 RecordedMolecules GetRecordedMolecules();
151 inline virtual void RegisterAll();
158 static void Use(
G4bool flag =
true);
161 inline void SetVerbose(
G4int);
162 inline G4int GetVerbose();
167 void SetTimeSlice(
double);
169 virtual void ResetCounter();
175 return fCheckTimeIsConsistentWithScheduler;
180 fCheckTimeIsConsistentWithScheduler = flag;
188 G4cout <<
" ---> G4MoleculeCounter::ResetCounter" <<
G4endl;
191 fpLastSearch.reset(0);
197 return fCounterMap[molecule];
212 fDontRegister[molDef] =
true;
217 if(fDontRegister.find(molDef) == fDontRegister.end())
return true;
223 fDontRegister.clear();
void CheckTimeForConsistency(G4bool flag)
bool operator()(const double &a, const double &b) const
CounterMapType fCounterMap
std::set< G4double >::iterator RecordedTimesIterator
std::unique_ptr< std::vector< G4MolecularConfiguration * > > RecordedMolecules
std::map< const G4MoleculeDefinition *, G4bool > fDontRegister
std::unique_ptr< Search > fpLastSearch
virtual void RegisterAll()
virtual void DontRegister(const G4MoleculeDefinition *)
const NbMoleculeAgainstTime & GetNbMoleculeAgainstTime(G4MolecularConfiguration *molecule)
G4bool IsTimeCheckedForConsistency() const
G4GLOB_DLL std::ostream G4cout
std::map< G4MolecularConfiguration *, NbMoleculeAgainstTime > CounterMapType
CounterMapType::iterator fLastMoleculeSearched
virtual void ResetCounter()
std::unique_ptr< std::set< G4double > > RecordedTimes
virtual bool IsRegistered(const G4MoleculeDefinition *)
static G4ThreadLocal double fPrecision
NbMoleculeAgainstTime::iterator fLowerBoundTime
static G4ThreadLocal G4MoleculeCounter * fpInstance
std::map< G4double, G4int, compDoubleWithPrecision > NbMoleculeAgainstTime
G4bool fCheckTimeIsConsistentWithScheduler