Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

CacheBuffer.cxx

Go to the documentation of this file.
00001 
00015 #include "CacheBuffer.h"
00016 
00017 ClassImp(CacheBuffer)
00018 
00019 //_________________________________________________________________________________________
00020 ostream & operator << (ostream & stream, const CacheBuffer & buffer)
00021 {
00022   map<double, double>::const_iterator cache_iter;
00023   for(cache_iter = buffer.fCache.begin(); cache_iter != buffer.fCache.end(); ++cache_iter) 
00024        stream << "    E = " << cache_iter->first << " MeV "
00025               << "--> dE/dx = " << cache_iter->second << " MeV cm^2 / gr" << endl;
00026 
00027   return stream;  
00028 }
00029 //_________________________________________________________________________________________
00030 CacheBuffer::CacheBuffer()
00031 {
00032   fCacheSize      = fCache.size();
00033   fAutoclearLimit = 1000;
00034 }
00035 //_________________________________________________________________________________________
00036 CacheBuffer::CacheBuffer(unsigned int autoclear_limit) :
00037 fAutoclearLimit(autoclear_limit)
00038 {
00039   fCacheSize = fCache.size();
00040 }
00041 //_________________________________________________________________________________________
00042 CacheBuffer::~CacheBuffer()
00043 {
00044   
00045 }
00046 //_________________________________________________________________________________________
00047 void CacheBuffer::AddToCache(double e, double de_dx)
00048 {
00049   fCacheSize = fCache.size();
00050 
00051   // check cache buffer size, 0 disables auto-clear 
00052   if(fCacheSize > fAutoclearLimit && fAutoclearLimit != 0) fCache.clear();
00053 
00054   fCache.insert( map<double, double>::value_type(e, de_dx) );
00055 }
00056 //_________________________________________________________________________________________
00057 bool CacheBuffer::Retrieve(double e, double & de_dx) const
00058 {
00059   if( fCache.count(e) == 1) {
00060      map<double, double>::const_iterator iter = fCache.find(e);
00061      de_dx = iter->second;
00062      return true;
00063   }
00064   de_dx = 0;
00065   return false;   
00066 }
00067 //_________________________________________________________________________________________
00068 void CacheBuffer::ClearCache(void)
00069 {
00070   fCache.clear();
00071 }
00072 //_________________________________________________________________________________________
00073 void CacheBuffer::Print(const Option_t *) const
00074 {
00075   cout << *this;
00076 }
00077 //_________________________________________________________________________________________
00078 
00079 
00080 

Generated on Mon Feb 15 11:06:26 2010 for loon by  doxygen 1.3.9.1