ATLAS Offline Software
Public Types | Public Member Functions | Static Public Member Functions | Private Types | Private Attributes | List of all members
TRTCond::StrawDxContainer Class Reference

#include <StrawDxContainer.h>

Inheritance diagram for TRTCond::StrawDxContainer:
Collaboration diagram for TRTCond::StrawDxContainer:

Public Types

typedef StrawDx value_type
 Type of atomic element. More...
 
typedef const StrawDx const_value_type
 const Type of atomic element. More...
 
typedef StrawDxTrait trait_type
 Type of trait. More...
 
typedef std::vector< std::pair< ExpandedIdentifier, const StrawDx * > > FlatContainer
 fill vector with all entries in the container. needed to dump to Peter's flat file format More...
 

Public Member Functions

float getDx1 (const ExpandedIdentifier &id) const
 access to unpacked dx More...
 
float getDx2 (const ExpandedIdentifier &id) const
 
float getDxErr (const ExpandedIdentifier &id) const
 access to unpacked dx error More...
 
void setDx (const ExpandedIdentifier &id, float dx1, float dx2, float dxerr)
 set dx More...
 
void setDx (float dx1, float dx2, float dxerr)
 set the top-level dx More...
 
void unpack (const StrawDx &sd, float &dx1, float &dx2, float &dxerr) const
 public method to unpack a StrawDx object More...
 
float unpackDx1 (const StrawDx &sd) const
 unpack dx near electronics More...
 
float unpackDx2 (const StrawDx &sd) const
 unpack dx near unterminated fixation More...
 
float unpackDxErr (const StrawDx &sd) const
 unpack dx near unterminated fixation More...
 
void set (const ExpandedIdentifier &id, const StrawDx &t)
 set a value. More...
 
void set (const StrawDx &t)
 set the default value More...
 
const StrawDxget (const ExpandedIdentifier &id) const
 get a value. More...
 
const StrawDxget (const ExpandedIdentifier &id, size_t &resolvelevel) const
 
const StrawDxget () const
 get the default value More...
 
void clear ()
 clear entire container More...
 
void clear (const ExpandedIdentifier &id)
 clear only entries specified More...
 
const DaughterContainerdaughters () const
 return the vector of daughters More...
 
size_t numObjects () const
 return the total number of valid calibration objects More...
 
bool operator== (const NestedContainerBase &rhs) const
 equality operator, used for compressing More...
 
bool operator== (const StrawDx &rhs) const
 another equality operator, used for compressing More...
 
size_t footprint () const
 return the memory allocated by the container and its daughters More...
 
void crunch ()
 reduce the footprint as much as possible by removing the extra space allocated by the vectors More...
 
void printindent () const
 some IO for debugging More...
 
void print () const
 
void getall (FlatContainer &entries) const
 

Static Public Member Functions

static const char * classname ()
 classname used to talk to iovservice More...
 

Private Types

typedef std::vector< NestedContainer< NestingLevel+1, StrawDx, StrawDxTrait > > DaughterContainer
 typedef of container More...
 

Private Attributes

LinearPacker< float, unsigned char > m_dxpacker
 packing borders More...
 
LinearPacker< float, unsigned char > m_dxerrpacker
 
DaughterContainer m_daughters
 Container of Daughters. More...
 
StrawDx m_default
 Type of atomic element. More...
 

Detailed Description

specialise to detector level

Definition at line 108 of file StrawDxContainer.h.

Member Typedef Documentation

◆ const_value_type

const Type of atomic element.

Definition at line 161 of file NestedContainer.h.

◆ DaughterContainer

typedef std::vector<NestedContainer< NestingLevel+1, StrawDx, StrawDxTrait > > TRTCond::NestedContainerBase< NestingLevel, NestedContainer< NestingLevel+1, StrawDx, StrawDxTrait > , StrawDx , StrawDxTrait >::DaughterContainer
privateinherited

typedef of container

Definition at line 154 of file NestedContainer.h.

◆ FlatContainer

typedef std::vector< std::pair<ExpandedIdentifier, const StrawDx *> > TRTCond::NestedContainerBase< NestingLevel, NestedContainer< NestingLevel+1, StrawDx, StrawDxTrait > , StrawDx , StrawDxTrait >::FlatContainer
inherited

fill vector with all entries in the container. needed to dump to Peter's flat file format

Definition at line 346 of file NestedContainer.h.

◆ trait_type

typedef StrawDxTrait TRTCond::NestedContainerBase< NestingLevel, NestedContainer< NestingLevel+1, StrawDx, StrawDxTrait > , StrawDx , StrawDxTrait >::trait_type
inherited

Type of trait.

Definition at line 162 of file NestedContainer.h.

◆ value_type

typedef StrawDx TRTCond::NestedContainerBase< NestingLevel, NestedContainer< NestingLevel+1, StrawDx, StrawDxTrait > , StrawDx , StrawDxTrait >::value_type
inherited

Type of atomic element.

Definition at line 160 of file NestedContainer.h.

Member Function Documentation

◆ classname()

static const char* TRTCond::StrawDxContainerTemplate< LEVEL >::classname
inlinestaticinherited

classname used to talk to iovservice

Definition at line 100 of file StrawDxContainer.h.

100 { return "TRTCond::StrawDxContainer" ; }

◆ clear() [1/2]

void TRTCond::NestedContainerBase< NestingLevel, NestedContainer< NestingLevel+1, StrawDx, StrawDxTrait > , StrawDx , StrawDxTrait >::clear
inlineinherited

clear entire container

Definition at line 238 of file NestedContainer.h.

238  {
239  for( typename DaughterContainer::iterator it = m_daughters.begin() ; it != m_daughters.end(); ++it )
241  m_daughters.clear() ;
242  Trait::erase(m_default) ;
243  }

◆ clear() [2/2]

void TRTCond::NestedContainerBase< NestingLevel, NestedContainer< NestingLevel+1, StrawDx, StrawDxTrait > , StrawDx , StrawDxTrait >::clear ( const ExpandedIdentifier id)
inlineinherited

clear only entries specified

Definition at line 246 of file NestedContainer.h.

246  {
247  if( NestingLevel == id.level() ) clear() ;
248  else {
249  unsigned int thisindex = id.index(NestingLevel+1) ;
250  if(thisindex<m_daughters.size())
252  }
253  }

◆ crunch()

void TRTCond::NestedContainerBase< NestingLevel, NestedContainer< NestingLevel+1, StrawDx, StrawDxTrait > , StrawDx , StrawDxTrait >::crunch
inlineinherited

reduce the footprint as much as possible by removing the extra space allocated by the vectors

Definition at line 292 of file NestedContainer.h.

292  {
293  // first the daughters
294  for( typename DaughterContainer::iterator it = m_daughters.begin() ; it != m_daughters.end(); ++it )
295  NestedContainerDaughterAccessor<Daughter,T,Trait>::crunch(*it) ;
296  // now use, if anything is there
297  if( m_daughters.size()>0 ) {
298  // find the first daughter that is valid
299  size_t firstvaliddaughter(0);
300  bool allequal(true) ;
301  for(size_t idau=0; idau<m_daughters.size() && allequal; ++idau) {
302  allequal = NestedContainerDaughterAccessor<Daughter,T,Trait>::empty(m_daughters[idau]) ;
303  if( allequal ) {
304  bool isvalid = Trait::isvalid( NestedContainerDaughterAccessor<Daughter,T,Trait>::get(m_daughters[idau])) ;
305  if( isvalid ) {
306  if( firstvaliddaughter==0 ) firstvaliddaughter = idau ;
307  } else {
308  allequal = NestedContainerDaughterAccessor<Daughter,T,Trait>::isequal(m_daughters[idau],m_daughters[firstvaliddaughter]) ;
309  }
310  }
311  }
312  if(allequal) {
313  // set the default value to the value form the first daughter
314  T defaultvalue(Trait::initialvalue()) ;
315  if( firstvaliddaughter < m_daughters.size() )
317  clear() ; // this clears pointers in the daughters. would rather replace that with destructors.
320  } else if(m_daughters.size()<m_daughters.capacity()) {
321  DaughterContainer newdaughters(0) ;
322  newdaughters.reserve( m_daughters.size() ) ;
323  newdaughters.insert( newdaughters.end(), m_daughters.begin(), m_daughters.end() ) ;
324  newdaughters.swap(m_daughters) ;
325  }
326  }
327  }

◆ daughters()

const DaughterContainer& TRTCond::NestedContainerBase< NestingLevel, NestedContainer< NestingLevel+1, StrawDx, StrawDxTrait > , StrawDx , StrawDxTrait >::daughters
inlineinherited

return the vector of daughters

Definition at line 256 of file NestedContainer.h.

256 { return m_daughters ; }

◆ footprint()

size_t TRTCond::NestedContainerBase< NestingLevel, NestedContainer< NestingLevel+1, StrawDx, StrawDxTrait > , StrawDx , StrawDxTrait >::footprint
inlineinherited

return the memory allocated by the container and its daughters

Definition at line 282 of file NestedContainer.h.

282  {
283  size_t total = Trait::footprint(m_default) + (m_daughters.capacity()-m_daughters.size())*sizeof(Daughter) ;
284  for( typename DaughterContainer::const_iterator it = m_daughters.begin() ; it != m_daughters.end(); ++it )
285  total += NestedContainerDaughterAccessor<Daughter,T,Trait>::footprint(*it) ;
286  return total ;
287  }

◆ get() [1/3]

const StrawDx & TRTCond::NestedContainerBase< NestingLevel, NestedContainer< NestingLevel+1, StrawDx, StrawDxTrait > , StrawDx , StrawDxTrait >::get
inlineinherited

get the default value

Definition at line 232 of file NestedContainer.h.

232 { return m_default ; }

◆ get() [2/3]

const StrawDx & TRTCond::NestedContainerBase< NestingLevel, NestedContainer< NestingLevel+1, StrawDx, StrawDxTrait > , StrawDx , StrawDxTrait >::get ( const ExpandedIdentifier id) const
inlineinherited

get a value.

return the default value if no valid entry for id exists.

Definition at line 205 of file NestedContainer.h.

205  {
206  if( NestingLevel < id.level() ) {
207  unsigned int thisindex = id.index(NestingLevel+1) ;
208  if(thisindex<m_daughters.size()) {
210  // only return this value if it is valid. otherwise, return the default.
211  if( Trait::isvalid(rc) ) return rc ;
212  }
213  }
214  return m_default ;
215  }

◆ get() [3/3]

const StrawDx & TRTCond::NestedContainerBase< NestingLevel, NestedContainer< NestingLevel+1, StrawDx, StrawDxTrait > , StrawDx , StrawDxTrait >::get ( const ExpandedIdentifier id,
size_t &  resolvelevel 
) const
inlineinherited

Definition at line 217 of file NestedContainer.h.

218  {
219  if( NestingLevel < id.level() ) {
220  unsigned int thisindex = id.index(NestingLevel+1) ;
221  if(thisindex<m_daughters.size()) {
222  const T& rc = NestedContainerDaughterAccessor<Daughter,T,Trait>::get(m_daughters[thisindex],id,resolvelevel) ;
223  if( Trait::isvalid(rc) ) return rc ;
224  }
225  }
226  resolvelevel = NestingLevel ;
227  return m_default ;
228  }

◆ getall()

void TRTCond::NestedContainerBase< NestingLevel, NestedContainer< NestingLevel+1, StrawDx, StrawDxTrait > , StrawDx , StrawDxTrait >::getall ( FlatContainer entries) const
inlineinherited

Definition at line 347 of file NestedContainer.h.

347  {
348  // add the daughters
349  for(unsigned int idau = 0; idau<m_daughters.size(); ++idau) {
350  FlatContainer dauentries ;
351  // first get them
352  NestedContainerDaughterAccessor<Daughter,T,Trait>::getall(m_daughters[idau], dauentries) ;
353  // now update the identifiers to have the dauhgter index set correctly
354  for(unsigned int j=0; j< dauentries.size(); ++j )
355  dauentries[j].first.index(NestingLevel+1) = idau ;
356  // and append
357  entries.insert(entries.end(),dauentries.begin(),dauentries.end()) ;
358  }
359  // add the default value
360  if( Trait::isvalid(m_default) ) {
361  ExpandedIdentifier id(0,0,0,0,0,NestingLevel) ;
362  entries.push_back( std::pair<ExpandedIdentifier, const T*>(id,&m_default)) ;
363  }
364  }

◆ getDx1()

float TRTCond::StrawDxContainerTemplate< LEVEL >::getDx1 ( const ExpandedIdentifier id) const
inlineinherited

access to unpacked dx

Definition at line 61 of file StrawDxContainer.h.

61  {
63  return StrawDxTrait::isvalid(sd) ? m_dxpacker.unpack(sd.packeddx1()) : 0 ;
64  }

◆ getDx2()

float TRTCond::StrawDxContainerTemplate< LEVEL >::getDx2 ( const ExpandedIdentifier id) const
inlineinherited

Definition at line 65 of file StrawDxContainer.h.

65  {
67  return StrawDxTrait::isvalid(sd) ? m_dxpacker.unpack(sd.packeddx2()) : 0 ;
68  }

◆ getDxErr()

float TRTCond::StrawDxContainerTemplate< LEVEL >::getDxErr ( const ExpandedIdentifier id) const
inlineinherited

access to unpacked dx error

Definition at line 70 of file StrawDxContainer.h.

70  {
72  return m_dxerrpacker.unpack(sd.packeddxerr());
73  }

◆ numObjects()

size_t TRTCond::NestedContainerBase< NestingLevel, NestedContainer< NestingLevel+1, StrawDx, StrawDxTrait > , StrawDx , StrawDxTrait >::numObjects
inlineinherited

return the total number of valid calibration objects

Definition at line 260 of file NestedContainer.h.

260  {
261  size_t rc(0) ;
262  assert( std::distance(m_daughters.begin(),m_daughters.end())==(int)m_daughters.size()) ;
263  assert( m_daughters.size() < 1000 ) ;
264  for( typename DaughterContainer::const_iterator it = m_daughters.begin() ; it != m_daughters.end(); ++it )
265  rc += NestedContainerDaughterAccessor<Daughter,T,Trait>::numObjects(*it) ;
266  if( Trait::isvalid(m_default) ) ++rc ;
267  return rc ;
268  }

◆ operator==() [1/2]

bool TRTCond::NestedContainerBase< NestingLevel, NestedContainer< NestingLevel+1, StrawDx, StrawDxTrait > , StrawDx , StrawDxTrait >::operator== ( const NestedContainerBase< NestingLevel, NestedContainer< NestingLevel+1, StrawDx, StrawDxTrait >, StrawDx, StrawDxTrait > &  rhs) const
inlineinherited

equality operator, used for compressing

Definition at line 272 of file NestedContainer.h.

272  {
273  return m_daughters.size()==0 && rhs.m_daughters.size()==0 && Trait::isequal(m_default,rhs.m_default) ;
274  }

◆ operator==() [2/2]

bool TRTCond::NestedContainerBase< NestingLevel, NestedContainer< NestingLevel+1, StrawDx, StrawDxTrait > , StrawDx , StrawDxTrait >::operator== ( const StrawDx rhs) const
inlineinherited

another equality operator, used for compressing

Definition at line 277 of file NestedContainer.h.

277  {
278  return m_daughters.size()==0 && Trait::isequal(m_default,rhs) ;
279  }

◆ print()

void TRTCond::NestedContainerBase< NestingLevel, NestedContainer< NestingLevel+1, StrawDx, StrawDxTrait > , StrawDx , StrawDxTrait >::print
inlineinherited

Definition at line 334 of file NestedContainer.h.

334  {
335  printindent() ;
337  std::cout << "level = " << id.name(NestingLevel) << " (" << NestingLevel << ")" << std::endl ;
338  for(unsigned int i=0; i< m_daughters.size(); ++i) {
339  printindent() ;
340  std::cout << "daughter " << i << std::endl ;
342  }
343  }

◆ printindent()

void TRTCond::NestedContainerBase< NestingLevel, NestedContainer< NestingLevel+1, StrawDx, StrawDxTrait > , StrawDx , StrawDxTrait >::printindent
inlineinherited

some IO for debugging

Definition at line 330 of file NestedContainer.h.

330  {
331  for(int i=0; i<NestingLevel; ++i)
332  std::cout << '\t' ;
333  }

◆ set() [1/2]

void TRTCond::NestedContainerBase< NestingLevel, NestedContainer< NestingLevel+1, StrawDx, StrawDxTrait > , StrawDx , StrawDxTrait >::set ( const ExpandedIdentifier id,
const StrawDx t 
)
inlineinherited

set a value.

using 'level' in id we can specify if we want to set the default value.

Definition at line 191 of file NestedContainer.h.

191  {
192  if( NestingLevel == id.level() ) {
193  // set the default value
195  } else {
196  unsigned int thisindex = id.index(NestingLevel+1) ;
197  // expand daughter array if necessary
198  if(thisindex>=m_daughters.size())
199  m_daughters.resize( thisindex+1, NestedContainerDaughterAccessor<Daughter,T,Trait>::initialvalue() ) ;
201  }
202  }

◆ set() [2/2]

void TRTCond::NestedContainerBase< NestingLevel, NestedContainer< NestingLevel+1, StrawDx, StrawDxTrait > , StrawDx , StrawDxTrait >::set ( const StrawDx t)
inlineinherited

set the default value

Definition at line 235 of file NestedContainer.h.

235 { Trait::copy(m_default,t) ; }

◆ setDx() [1/2]

void TRTCond::StrawDxContainerTemplate< LEVEL >::setDx ( const ExpandedIdentifier id,
float  dx1,
float  dx2,
float  dxerr 
)
inlineinherited

set dx

Definition at line 76 of file StrawDxContainer.h.

◆ setDx() [2/2]

void TRTCond::StrawDxContainerTemplate< LEVEL >::setDx ( float  dx1,
float  dx2,
float  dxerr 
)
inlineinherited

set the top-level dx

Definition at line 81 of file StrawDxContainer.h.

◆ unpack()

void TRTCond::StrawDxContainerTemplate< LEVEL >::unpack ( const StrawDx sd,
float &  dx1,
float &  dx2,
float &  dxerr 
) const
inlineinherited

public method to unpack a StrawDx object

Definition at line 86 of file StrawDxContainer.h.

86  {
87  dx1 = m_dxpacker.unpack(sd.packeddx1()) ;
88  dx2 = m_dxpacker.unpack(sd.packeddx2()) ;
89  dxerr = m_dxerrpacker.unpack(sd.packeddxerr()) ;
90  }

◆ unpackDx1()

float TRTCond::StrawDxContainerTemplate< LEVEL >::unpackDx1 ( const StrawDx sd) const
inlineinherited

unpack dx near electronics

Definition at line 93 of file StrawDxContainer.h.

93 { return m_dxpacker.unpack(sd.packeddx1()); }

◆ unpackDx2()

float TRTCond::StrawDxContainerTemplate< LEVEL >::unpackDx2 ( const StrawDx sd) const
inlineinherited

unpack dx near unterminated fixation

Definition at line 95 of file StrawDxContainer.h.

95 { return m_dxpacker.unpack(sd.packeddx2()); }

◆ unpackDxErr()

float TRTCond::StrawDxContainerTemplate< LEVEL >::unpackDxErr ( const StrawDx sd) const
inlineinherited

unpack dx near unterminated fixation

Definition at line 97 of file StrawDxContainer.h.

97 { return m_dxerrpacker.unpack(sd.packeddxerr()); }

Member Data Documentation

◆ m_daughters

DaughterContainer TRTCond::NestedContainerBase< NestingLevel, NestedContainer< NestingLevel+1, StrawDx, StrawDxTrait > , StrawDx , StrawDxTrait >::m_daughters
privateinherited

Container of Daughters.

Definition at line 156 of file NestedContainer.h.

◆ m_default

StrawDx TRTCond::NestedContainerBase< NestingLevel, NestedContainer< NestingLevel+1, StrawDx, StrawDxTrait > , StrawDx , StrawDxTrait >::m_default
privateinherited

Type of atomic element.

Definition at line 157 of file NestedContainer.h.

◆ m_dxerrpacker

LinearPacker<float,unsigned char> TRTCond::StrawDxContainerTemplate< LEVEL >::m_dxerrpacker
privateinherited

Definition at line 52 of file StrawDxContainer.h.

◆ m_dxpacker

LinearPacker<float,unsigned char> TRTCond::StrawDxContainerTemplate< LEVEL >::m_dxpacker
privateinherited

packing borders

Definition at line 51 of file StrawDxContainer.h.


The documentation for this class was generated from the following file:
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
skel.it
it
Definition: skel.GENtoEVGEN.py:423
ExpandedIdentifier
Definition: DetectorDescription/Identifier/Identifier/ExpandedIdentifier.h:108
TRTCond::NestedContainerBase< NestingLevel, NestedContainer< NestingLevel+1, StrawDx, StrawDxTrait >, StrawDx, StrawDxTrait >::m_daughters
DaughterContainer m_daughters
Container of Daughters.
Definition: NestedContainer.h:156
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
TRTCond::NestedContainerBase< NestingLevel, NestedContainer< NestingLevel+1, StrawDx, StrawDxTrait >, StrawDx, StrawDxTrait >::FlatContainer
std::vector< std::pair< ExpandedIdentifier, const StrawDx * > > FlatContainer
fill vector with all entries in the container. needed to dump to Peter's flat file format
Definition: NestedContainer.h:346
TRTCond::StrawDxContainerTemplate< ExpandedIdentifier::DETECTOR >::m_dxpacker
LinearPacker< float, unsigned char > m_dxpacker
packing borders
Definition: StrawDxContainer.h:51
python.iconfTool.models.loaders.level
level
Definition: loaders.py:20
python.selector.AtlRunQuerySelectorLhcOlc.sd
sd
Definition: AtlRunQuerySelectorLhcOlc.py:612
lumiFormat.i
int i
Definition: lumiFormat.py:92
TRTCond::LinearPacker::unpack
UnpackedType unpack(PackedType val) const
Unpack method.
Definition: LinearPacker.h:27
TRTCond::NestedContainerBase< NestingLevel, NestedContainer< NestingLevel+1, StrawDx, StrawDxTrait >, StrawDx, StrawDxTrait >::printindent
void printindent() const
some IO for debugging
Definition: NestedContainer.h:330
CxxUtils::set
constexpr std::enable_if_t< is_bitmask_v< E >, E & > set(E &lhs, E rhs)
Convenience function to set bits in a class enum bitmask.
Definition: bitmask.h:224
TRTCond::StrawDxContainerTemplate< ExpandedIdentifier::DETECTOR >::m_dxerrpacker
LinearPacker< float, unsigned char > m_dxerrpacker
Definition: StrawDxContainer.h:52
id
SG::auxid_t id
Definition: Control/AthContainers/Root/debug.cxx:191
TRTCond::NestedContainerBase< NestingLevel, NestedContainer< NestingLevel+1, StrawDx, StrawDxTrait >, StrawDx, StrawDxTrait >::m_default
StrawDx m_default
Type of atomic element.
Definition: NestedContainer.h:157
VKalVrtAthena::varHolder_detail::clear
void clear(T &var)
Definition: NtupleVars.h:48
DeMoScan.first
bool first
Definition: DeMoScan.py:534
Muon::print
std::string print(const MuPatSegment &)
Definition: MuonTrackSteering.cxx:28
get
T * get(TKey *tobj)
get a TObject* from a TKey* (why can't a TObject be a TKey?)
Definition: hcg.cxx:127
entries
double entries
Definition: listroot.cxx:49
TRTCond::LinearPacker::pack
PackedType pack(UnpackedType x) const
Pack method.
Definition: LinearPacker.h:30
CaloCellTimeCorrFiller.defaultvalue
float defaultvalue
Definition: CaloCellTimeCorrFiller.py:25
TRTCond::NestedContainerBase< NestingLevel, NestedContainer< NestingLevel+1, StrawDx, StrawDxTrait >, StrawDx, StrawDxTrait >::clear
void clear()
clear entire container
Definition: NestedContainer.h:238
calibdata.copy
bool copy
Definition: calibdata.py:27
TRTCond::NestedContainerBase< NestingLevel, NestedContainer< NestingLevel+1, StrawDx, StrawDxTrait >, StrawDx, StrawDxTrait >::DaughterContainer
std::vector< NestedContainer< NestingLevel+1, StrawDx, StrawDxTrait > > DaughterContainer
typedef of container
Definition: NestedContainer.h:154
Amg::distance
float distance(const Amg::Vector3D &p1, const Amg::Vector3D &p2)
calculates the distance between two point in 3D space
Definition: GeoPrimitivesHelpers.h:54
TSU::T
unsigned long long T
Definition: L1TopoDataTypes.h:35
python.trfValidateRootFile.rc
rc
Definition: trfValidateRootFile.py:350