CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Types | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
edm::TRandomAdaptor Class Reference

#include <TRandomAdaptor.h>

Inheritance diagram for edm::TRandomAdaptor:

Public Types

typedef value_ptr< TRandom3 > TRandom3Ptr
 

Public Member Functions

std::string beginTag ()
 
double flat ()
 
void flatArray (int const size, double *vect)
 
virtual std::istream & get (std::istream &is)
 
bool get (std::vector< unsigned long > const &v)
 
TRandom3 * getRootEngine ()
 
virtual std::istream & getState (std::istream &is)
 
bool getState (std::vector< unsigned long > const &v)
 
std::string name () const
 
 operator float ()
 
 operator unsigned int ()
 
virtual std::ostream & put (std::ostream &os) const
 
std::vector< unsigned long > put () const
 
void restoreStatus (char const filename[]="TRandom.conf")
 
void saveStatus (char const filename[]="TRandom.conf") const
 
void setSeed (long seed, int)
 
void setSeeds (long const *seeds, int)
 
void showStatus () const
 
 TRandomAdaptor ()
 
 TRandomAdaptor (long seed)
 
 TRandomAdaptor (int rowIndex, int colIndex)
 
 TRandomAdaptor (std::istream &is)
 
virtual ~TRandomAdaptor ()
 

Static Public Member Functions

static std::string engineName ()
 

Private Member Functions

void Grumble (std::string const &errortext) const
 

Private Attributes

TRandom3Ptr trand_
 

Detailed Description

Definition at line 13 of file TRandomAdaptor.h.

Member Typedef Documentation

Definition at line 16 of file TRandomAdaptor.h.

Constructor & Destructor Documentation

edm::TRandomAdaptor::TRandomAdaptor ( )
inline

Definition at line 19 of file TRandomAdaptor.h.

19 : trand_(new TRandom3()) {}
edm::TRandomAdaptor::TRandomAdaptor ( long  seed)
inline

Definition at line 20 of file TRandomAdaptor.h.

20 : trand_(new TRandom3(seed)) {}
edm::TRandomAdaptor::TRandomAdaptor ( int  rowIndex,
int  colIndex 
)
inline

Definition at line 21 of file TRandomAdaptor.h.

21 : trand_(new TRandom3(rowIndex*colIndex-1)) {}
edm::TRandomAdaptor::TRandomAdaptor ( std::istream &  is)

Definition at line 17 of file TRandomAdaptor.cc.

References Grumble().

17  {
18  Grumble(std::string("Cannot instantiate a TRandom engine from an istream"));
19 }
void Grumble(std::string const &errortext) const
edm::TRandomAdaptor::~TRandomAdaptor ( )
virtual

Definition at line 21 of file TRandomAdaptor.cc.

21  {
22 }

Member Function Documentation

std::string edm::TRandomAdaptor::beginTag ( )
inline

Definition at line 55 of file TRandomAdaptor.h.

References trand_.

55 { return std::string(trand_->GetName())+std::string("-begin"); }
static std::string edm::TRandomAdaptor::engineName ( )
inlinestatic

Definition at line 60 of file TRandomAdaptor.h.

60 { return std::string("TRandomAdaptor"); }
double edm::TRandomAdaptor::flat ( void  )
inline

Definition at line 26 of file TRandomAdaptor.h.

References trand_.

26 { return trand_->Rndm(); }
void edm::TRandomAdaptor::flatArray ( int const  size,
double *  vect 
)
inline

Definition at line 29 of file TRandomAdaptor.h.

References trand_.

29 { trand_->RndmArray(size,vect); }
tuple size
Write out results.
std::istream & edm::TRandomAdaptor::get ( std::istream &  is)
virtual

Definition at line 65 of file TRandomAdaptor.cc.

References getState(), and Grumble().

Referenced by Options.Options::__getitem__(), betterConfigParser.BetterConfigParser::__updateDict(), betterConfigParser.BetterConfigParser::getCompares(), betterConfigParser.BetterConfigParser::getGeneral(), and betterConfigParser.BetterConfigParser::getResultingSection().

65  {
66  Grumble(std::string("get(std::istream) not available for TRandom engines"));
67  return getState(is);
68 }
virtual std::istream & getState(std::istream &is)
void Grumble(std::string const &errortext) const
bool edm::TRandomAdaptor::get ( std::vector< unsigned long > const &  v)

Definition at line 75 of file TRandomAdaptor.cc.

References i, and trand_.

Referenced by Options.Options::__getitem__(), betterConfigParser.BetterConfigParser::__updateDict(), betterConfigParser.BetterConfigParser::getCompares(), betterConfigParser.BetterConfigParser::getGeneral(), and betterConfigParser.BetterConfigParser::getResultingSection().

75  {
76  if(v.empty()) return false;
77  if(v[0] != CLHEP::engineIDulong<TRandomAdaptor>()) return false;
78  int32_t numItems = v.size()-1;
79 
80  int32_t itemSize = sizeof(uint32_t);
81  TBufferFile buffer(TBuffer::kRead, numItems * itemSize + 1024);
82  char* bufferPtr = buffer.Buffer();
83  for(int32_t i = 0; i < numItems; ++i) {
84 
85  *reinterpret_cast<uint32_t*>(bufferPtr + i * itemSize) = static_cast<uint32_t>(v[i+1] & 0xffffffff);
86  }
87 
88  // Note that this will fail if the TRandom3 version (specifically the TStreamerInfo)
89  // has changed between the time the state was saved and the time the following call
90  // is made. Because we are manually calling the Streamer function, the original
91  // TStreamerInfo is not saved anywhere. Normally ROOT saves the TStreamerInfo
92  // automatically.
93  trand_->Streamer(buffer);
94 
95  return true;
96 }
int i
Definition: DBlmapReader.cc:9
mathSSE::Vec4< T > v
TRandom3* edm::TRandomAdaptor::getRootEngine ( )
inline

Definition at line 67 of file TRandomAdaptor.h.

References trand_.

67 { return trand_.operator->(); }
std::istream & edm::TRandomAdaptor::getState ( std::istream &  is)
virtual

Definition at line 70 of file TRandomAdaptor.cc.

References Grumble().

Referenced by get().

70  {
71  Grumble(std::string("getState(std::istream) not available for TRandom engines"));
72  return is;
73 }
void Grumble(std::string const &errortext) const
bool edm::TRandomAdaptor::getState ( std::vector< unsigned long > const &  v)
inline

Definition at line 64 of file TRandomAdaptor.h.

References v.

64 { return get(v); }
mathSSE::Vec4< T > v
void edm::TRandomAdaptor::Grumble ( std::string const &  errortext) const
private

Definition at line 98 of file TRandomAdaptor.cc.

References edm::errors::UnimplementedFeature.

Referenced by get(), getState(), put(), and TRandomAdaptor().

98  {
99 
100 // Throw an edm::Exception for unimplemented functions
101  std::ostringstream sstr;
102  sstr << "Unimplemented Feature: " << errortext << '\n';
104  throw except;
105 }
std::string edm::TRandomAdaptor::name ( void  ) const
inline

Definition at line 59 of file TRandomAdaptor.h.

References trand_.

Referenced by BeautifulSoup.Tag::_invert().

59 { return std::string("T")+std::string(trand_->GetName()); }
edm::TRandomAdaptor::operator float ( )
inline

Definition at line 48 of file TRandomAdaptor.h.

References trand_.

48 { return (float)(trand_->Rndm()); }
edm::TRandomAdaptor::operator unsigned int ( )
inline

Definition at line 51 of file TRandomAdaptor.h.

References trand_.

51 { return (unsigned int)((trand_->Rndm())*exponent_bit_32); }
std::ostream & edm::TRandomAdaptor::put ( std::ostream &  os) const
virtual

Definition at line 24 of file TRandomAdaptor.cc.

References Grumble().

24  {
25  Grumble(std::string("put(std::ostream) not available for TRandom engines"));
26  return os;
27 }
void Grumble(std::string const &errortext) const
std::vector< unsigned long > edm::TRandomAdaptor::put ( ) const

Definition at line 29 of file TRandomAdaptor.cc.

References i, trand_, and v.

29  {
30  std::vector<unsigned long> v;
31 
32  int32_t itemSize = sizeof(uint32_t);
33  TBufferFile buffer(TBuffer::kWrite, 2048 * itemSize);
34  trand_->Streamer(buffer);
35  buffer.SetReadMode();
36  char* bufferPtr = buffer.Buffer();
37  int32_t numItems = (buffer.Length() + itemSize - 1) / itemSize;
38  v.reserve(numItems + 1);
39  v.push_back(CLHEP::engineIDulong<TRandomAdaptor>());
40  for(int i = 0; i < numItems; ++i) {
41 
42  // Here we do some ugly manipulations to the data to match the format
43  // of the output of the CLHEP put function (the whole point of this adaptor
44  // is to make TRandom3 work through the CLHEP interface as if it were a
45  // a CLHEP engine ...). In CLHEP, the vector returned by put contains
46  // unsigned long's, but these always contain only 32 bits of information.
47  // In the case of a 64 bit build the top 32 bits is only padding (all 0's).
48 
49  // Get the next 32 bits of data from the buffer
50  uint32_t value32 = *reinterpret_cast<uint32_t*>(bufferPtr + i * itemSize);
51 
52  if(i == numItems - 1) {
53  int nBytes = buffer.Length() % itemSize;
54  if(nBytes == 1) value32 &= 0xffu;
55  else if(nBytes == 2) value32 &= 0xffffu;
56  else if(nBytes == 3) value32 &= 0xffffffu;
57  }
58 
59  // Push it into the vector in an unsigned long which may be 32 or 64 bits
60  v.push_back(static_cast<unsigned long>(value32));
61  }
62  return v;
63 }
int i
Definition: DBlmapReader.cc:9
mathSSE::Vec4< T > v
void edm::TRandomAdaptor::restoreStatus ( char const  filename[] = "TRandom.conf")
inline

Definition at line 42 of file TRandomAdaptor.h.

References lut2db_cfg::filename, and trand_.

42 { trand_->ReadRandom(filename); }
tuple filename
Definition: lut2db_cfg.py:20
void edm::TRandomAdaptor::saveStatus ( char const  filename[] = "TRandom.conf") const
inline

Definition at line 39 of file TRandomAdaptor.h.

References lut2db_cfg::filename, and trand_.

39 { trand_->WriteRandom(filename); }
tuple filename
Definition: lut2db_cfg.py:20
void edm::TRandomAdaptor::setSeed ( long  seed,
int   
)
inline

Definition at line 32 of file TRandomAdaptor.h.

References trand_.

32 { trand_->SetSeed(seed); }
void edm::TRandomAdaptor::setSeeds ( long const *  seeds,
int   
)
inline

Definition at line 36 of file TRandomAdaptor.h.

References trand_.

36 { trand_->SetSeed(seeds[0]); }
void edm::TRandomAdaptor::showStatus ( ) const
inline

Definition at line 45 of file TRandomAdaptor.h.

References trand_.

45 { trand_->Dump(); }

Member Data Documentation

TRandom3Ptr edm::TRandomAdaptor::trand_
private