CMS 3D CMS Logo

List of all members | Public Member Functions | Public Attributes
tree.Tree Class Reference
Inheritance diagram for tree.Tree:

Public Member Functions

def __init__ (self, name, title, defaultFloatType="D", defaultIntType="I")
 
def branch_ (self, selfmap, varName, type, len, postfix="", storageType="default", title=None)
 
def copyStructure (self, tree)
 
def fill (self, varName, value)
 
def reset (self)
 
def setDefaultFloatType (self, defaultFloatType)
 
def setDefaultIntType (self, defaultIntType)
 
def var (self, varName, type=float, default=-99, title=None, storageType="default", filler=None)
 
def vector (self, varName, lenvar, maxlen=None, type=float, default=-99, title=None, storageType="default", filler=None)
 
def vfill (self, varName, values)
 

Public Attributes

 defaultFloatType
 
 defaultIntType
 
 defaults
 
 fillers
 
 tree
 
 vars
 
 vecdefaults
 
 vecvars
 

Detailed Description

Definition at line 6 of file tree.py.

Constructor & Destructor Documentation

◆ __init__()

def tree.Tree.__init__ (   self,
  name,
  title,
  defaultFloatType = "D",
  defaultIntType = "I" 
)

Definition at line 8 of file tree.py.

8  def __init__(self, name, title, defaultFloatType="D", defaultIntType="I"):
9  self.vars = {}
10  self.vecvars = {}
11  self.tree = TTree(name, title)
12  self.defaults = {}
13  self.vecdefaults = {}
14  self.defaultFloatType = defaultFloatType
15  self.defaultIntType = defaultIntType
16  self.fillers = {}
17 

Member Function Documentation

◆ branch_()

def tree.Tree.branch_ (   self,
  selfmap,
  varName,
  type,
  len,
  postfix = "",
  storageType = "default",
  title = None 
)
Backend function used to create scalar and vector branches. 
   Users should call "var" and "vector", not this function directly.

Definition at line 33 of file tree.py.

33  def branch_(self, selfmap, varName, type, len, postfix="", storageType="default", title=None):
34  """Backend function used to create scalar and vector branches.
35  Users should call "var" and "vector", not this function directly."""
36  if storageType == "default":
37  storageType = self.defaultIntType if type is int else self.defaultFloatType
38  if type is float :
39  if storageType == "F":
40  selfmap[varName]=numpy.zeros(len,numpy.float32)
41  self.tree.Branch(varName,selfmap[varName],varName+postfix+'/F')
42  elif storageType == "D":
43  selfmap[varName]=numpy.zeros(len,numpy.float64)
44  self.tree.Branch(varName,selfmap[varName],varName+postfix+'/D')
45  else:
46  raise RuntimeError('Unknown storage type %s for branch %s' % (storageType, varName))
47  elif type is int:
48  dtypes = {
49  "i" : numpy.uint32,
50  "s" : numpy.uint16,
51  "b" : numpy.uint8,
52  "l" : numpy.uint64,
53  "I" : numpy.int32,
54  "S" : numpy.int16,
55  "B" : numpy.int8,
56  "L" : numpy.int64,
57  }
58  if storageType not in dtypes:
59  raise RuntimeError('Unknown storage type %s for branch %s' % (storageType, varName))
60  selfmap[varName]=numpy.zeros(len,dtypes[storageType])
61  self.tree.Branch(varName,selfmap[varName],varName+postfix+'/'+storageType)
62  else:
63  raise RuntimeError('Unknown type %s for branch %s' % (type, varName))
64  if title:
65  self.tree.GetBranch(varName).SetTitle(title)
66 

References tree.Tree.defaultFloatType, tree.Tree.defaultIntType, tree.Tree.tree, HIPMonitorVariables.tree, SimpleTreeProducer.SimpleTreeProducer.tree, eventstfile.Events.tree, CSCTFanalyzer.tree, CSCTFAnalyzer.tree, core.TreeAnalyzerNumpy.TreeAnalyzerNumpy.tree, TreeWriterForEcalCorrection.tree, AlignmentIORootBase.tree, TkOfflineVariables.tree, HIPTwoBodyDecayAnalyzer.tree, EcalPerEvtMatacqAnalyzer.tree, EcalMatacqAnalyzer.tree, BPHHistoSpecificDecay.tree, IsoTrackCalibration.tree, IsoTrackCalib.tree, TkAlMap.TkAlMap.tree, and HcalIsoTrkAnalyzer.tree.

Referenced by tree.Tree.var(), and tree.Tree.vector().

◆ copyStructure()

def tree.Tree.copyStructure (   self,
  tree 
)

Definition at line 24 of file tree.py.

24  def copyStructure(self, tree):
25  for branch in tree.GetListOfBranches():
26  name = branch.GetName()
27  typeName = branch.GetListOfLeaves()[0].GetTypeName()
28  type = float
29  if typeName == 'Int_t':
30  type = int
31  self.var(name, type)
32 

References CentralityTable::BinValues.var, TaggingVariablePlotter::VariableConfig.var, tree.Tree.var(), reco::parser::Grammar::definition< ScannerT >.var, PhysicsTools::MVAComputer::InputVar.var, and TkAlMap.TkAlMap.var.

◆ fill()

def tree.Tree.fill (   self,
  varName,
  value 
)

Definition at line 117 of file tree.py.

117  def fill(self, varName, value ):
118  if isinstance(self.vars[varName], numpy.ndarray):
119  self.vars[varName][0]=value
120  else:
121  self.fillers[varName](self.vars[varName],value)
122 

References tree.Tree.fillers, tree.Tree.vars, PlotAlignmentValidation::DMRPlotInfo.vars, and JsonOutputProducer.vars.

◆ reset()

def tree.Tree.reset (   self)

Definition at line 104 of file tree.py.

104  def reset(self):
105  for name,value in six.iteritems(self.vars):
106  if name in self.fillers:
107  self.fillers[name](value, self.defaults[name])
108  else:
109  value[0]=self.defaults[name]
110  for name,value in six.iteritems(self.vecvars):
111  if isinstance(value, numpy.ndarray):
112  value.fill(self.vecdefaults[name])
113  else:
114  if isinstance(value, ROOT.TObject) and value.ClassName() == "TClonesArray":
115  value.ExpandCreateFast(0)
116 

References tree.Tree.defaults, geometryComparison.GeometryComparison.defaults, primaryVertexResolution.PrimaryVertexResolution.defaults, primaryVertexValidation.PrimaryVertexValidation.defaults, offlineValidation.OfflineValidation.defaults, trackSplittingValidation.TrackSplittingValidation.defaults, zMuMuValidation.ZMuMuValidation.defaults, preexistingValidation.PreexistingValidation.defaults, plottingOptions.BasePlottingOptions.defaults, genericValidation.GenericValidation.defaults, preexistingValidation.PreexistingOfflineValidation.defaults, plottingOptions.PlottingOptionsTrackSplitting.defaults, plottingOptions.PlottingOptionsZMuMu.defaults, plottingOptions.PlottingOptionsOffline.defaults, plottingOptions.PlottingOptionsPrimaryVertex.defaults, plottingOptions.PlottingOptionsPVResolution.defaults, genericValidation.GenericValidationData.defaults, genericValidation.GenericValidationData_CTSR.defaults, svgfig.Path.defaults, svgfig.Curve.defaults, svgfig.Poly.defaults, svgfig.Text.defaults, svgfig.TextGlobal.defaults, svgfig.Dots.defaults, svgfig.Line.defaults, svgfig.LineGlobal.defaults, svgfig.VLine.defaults, svgfig.HLine.defaults, svgfig.Rect.defaults, svgfig.Ellipse.defaults, svgfig.Ticks.defaults, svgfig.CurveAxis.defaults, svgfig.LineAxis.defaults, svgfig.XAxis.defaults, svgfig.YAxis.defaults, svgfig.Axes.defaults, svgfig.HGrid.defaults, svgfig.VGrid.defaults, svgfig.Grid.defaults, svgfig.XErrorBars.defaults, svgfig.YErrorBars.defaults, tree.Tree.fillers, tree.Tree.vars, PlotAlignmentValidation::DMRPlotInfo.vars, JsonOutputProducer.vars, tree.Tree.vecdefaults, and tree.Tree.vecvars.

◆ setDefaultFloatType()

def tree.Tree.setDefaultFloatType (   self,
  defaultFloatType 
)

Definition at line 18 of file tree.py.

18  def setDefaultFloatType(self, defaultFloatType):
19  self.defaultFloatType = defaultFloatType
20 

References tree.Tree.defaultFloatType.

◆ setDefaultIntType()

def tree.Tree.setDefaultIntType (   self,
  defaultIntType 
)

Definition at line 21 of file tree.py.

21  def setDefaultIntType(self, defaultIntType):
22  self.defaultIntType = defaultIntType
23 

References tree.Tree.defaultIntType.

◆ var()

def tree.Tree.var (   self,
  varName,
  type = float,
  default = -99,
  title = None,
  storageType = "default",
  filler = None 
)

Definition at line 67 of file tree.py.

67  def var(self, varName,type=float, default=-99, title=None, storageType="default", filler=None ):
68  if type in [int, float]:
69  self.branch_(self.vars, varName, type, 1, title=title, storageType=storageType)
70  self.defaults[varName] = default
71  elif __builtins__['type'](type) == str:
72  # create a value, looking up the type from ROOT and calling the default constructor
73  self.vars[varName] = getattr(ROOT,type)()
74  if type in [ "TLorentzVector" ]: # custom streamer classes
75  self.tree.Branch(varName+".", type, self.vars[varName], 8000,-1)
76  else:
77  self.tree.Branch(varName+".", type, self.vars[varName])
78  if filler is None:
79  raise RuntimeError("Error: when brancing with an object, filler should be set to a function that takes as argument an object instance and a value, and set the instance to the value (as otherwise python assignment of objects changes the address as well)")
80  self.fillers[varName] = filler
81  else:
82  raise RuntimeError('Unknown type %s for branch %s: it is not int, float or a string' % (type, varName))
83  self.defaults[varName] = default
84 

References tree.Tree.branch_(), fwlite::RecordWriter::DataBuffer.branch_, edm::TypeInBranchType.branch_, fwlite::internal::Data.branch_, BareRootProductGetter::Buffer.branch_, edm::PoolOutputModule::SpecialSplitLevelForBranch.branch_, tree.Tree.defaults, geometryComparison.GeometryComparison.defaults, primaryVertexResolution.PrimaryVertexResolution.defaults, primaryVertexValidation.PrimaryVertexValidation.defaults, offlineValidation.OfflineValidation.defaults, zMuMuValidation.ZMuMuValidation.defaults, trackSplittingValidation.TrackSplittingValidation.defaults, preexistingValidation.PreexistingValidation.defaults, plottingOptions.BasePlottingOptions.defaults, genericValidation.GenericValidation.defaults, preexistingValidation.PreexistingOfflineValidation.defaults, plottingOptions.PlottingOptionsTrackSplitting.defaults, plottingOptions.PlottingOptionsZMuMu.defaults, plottingOptions.PlottingOptionsOffline.defaults, plottingOptions.PlottingOptionsPrimaryVertex.defaults, plottingOptions.PlottingOptionsPVResolution.defaults, genericValidation.GenericValidationData.defaults, genericValidation.GenericValidationData_CTSR.defaults, svgfig.Path.defaults, svgfig.Curve.defaults, svgfig.Poly.defaults, svgfig.Text.defaults, svgfig.TextGlobal.defaults, svgfig.Dots.defaults, svgfig.Line.defaults, svgfig.LineGlobal.defaults, svgfig.VLine.defaults, svgfig.HLine.defaults, svgfig.Rect.defaults, svgfig.Ellipse.defaults, svgfig.Ticks.defaults, svgfig.CurveAxis.defaults, svgfig.LineAxis.defaults, svgfig.XAxis.defaults, svgfig.YAxis.defaults, svgfig.Axes.defaults, svgfig.HGrid.defaults, svgfig.VGrid.defaults, svgfig.Grid.defaults, svgfig.XErrorBars.defaults, svgfig.YErrorBars.defaults, tree.Tree.fillers, tree.Tree.tree, SimpleTreeProducer.SimpleTreeProducer.tree, HIPMonitorVariables.tree, eventstfile.Events.tree, CSCTFanalyzer.tree, CSCTFAnalyzer.tree, core.TreeAnalyzerNumpy.TreeAnalyzerNumpy.tree, TreeWriterForEcalCorrection.tree, AlignmentIORootBase.tree, TkOfflineVariables.tree, HIPTwoBodyDecayAnalyzer.tree, EcalPerEvtMatacqAnalyzer.tree, EcalMatacqAnalyzer.tree, BPHHistoSpecificDecay.tree, IsoTrackCalibration.tree, IsoTrackCalib.tree, TkAlMap.TkAlMap.tree, HcalIsoTrkAnalyzer.tree, tree.Tree.vars, PlotAlignmentValidation::DMRPlotInfo.vars, and JsonOutputProducer.vars.

Referenced by tree.Tree.copyStructure().

◆ vector()

def tree.Tree.vector (   self,
  varName,
  lenvar,
  maxlen = None,
  type = float,
  default = -99,
  title = None,
  storageType = "default",
  filler = None 
)
either lenvar is a string, and maxlen an int (variable size array), or lenvar is an int and maxlen is not specified (fixed array)

Definition at line 85 of file tree.py.

85  def vector(self, varName, lenvar, maxlen=None, type=float, default=-99, title=None, storageType="default", filler=None ):
86  """either lenvar is a string, and maxlen an int (variable size array), or lenvar is an int and maxlen is not specified (fixed array)"""
87  if type in [int, float]:
88  if __builtins__['type'](lenvar) == int: # need the __builtins__ since 'type' is a variable here :-/
89  self.branch_(self.vecvars, varName, type, lenvar, postfix="[%d]" % lenvar, title=title, storageType=storageType)
90  else:
91  if maxlen == None: RuntimeError, 'You must specify a maxlen if making a dynamic array';
92  self.branch_(self.vecvars, varName, type, maxlen, postfix="[%s]" % lenvar, title=title, storageType=storageType)
93  elif __builtins__['type'](type) == str:
94  self.vecvars[varName] = ROOT.TClonesArray(type,(lenvar if __builtins__['type'](lenvar) == int else maxlen))
95  if type in [ "TLorentzVector" ]: # custom streamer classes
96  self.tree.Branch(varName+".", self.vecvars[varName], 32000, -1)
97  else:
98  self.tree.Branch(varName+".", self.vecvars[varName])
99  if filler is None:
100  raise RuntimeError("Error: when brancing with an object, filler should be set to a function that takes as argument an object instance and a value, and set the instance to the value (as otherwise python assignment of objects changes the address as well)")
101  self.fillers[varName] = filler
102  self.vecdefaults[varName] = default
103 

References tree.Tree.branch_(), fwlite::RecordWriter::DataBuffer.branch_, edm::TypeInBranchType.branch_, fwlite::internal::Data.branch_, BareRootProductGetter::Buffer.branch_, edm::PoolOutputModule::SpecialSplitLevelForBranch.branch_, tree.Tree.fillers, tree.Tree.tree, HIPMonitorVariables.tree, SimpleTreeProducer.SimpleTreeProducer.tree, eventstfile.Events.tree, CSCTFanalyzer.tree, CSCTFAnalyzer.tree, core.TreeAnalyzerNumpy.TreeAnalyzerNumpy.tree, TreeWriterForEcalCorrection.tree, AlignmentIORootBase.tree, TkOfflineVariables.tree, HIPTwoBodyDecayAnalyzer.tree, EcalPerEvtMatacqAnalyzer.tree, EcalMatacqAnalyzer.tree, BPHHistoSpecificDecay.tree, IsoTrackCalibration.tree, IsoTrackCalib.tree, TkAlMap.TkAlMap.tree, HcalIsoTrkAnalyzer.tree, tree.Tree.vecdefaults, and tree.Tree.vecvars.

◆ vfill()

def tree.Tree.vfill (   self,
  varName,
  values 
)

Definition at line 123 of file tree.py.

123  def vfill(self, varName, values ):
124  a = self.vecvars[varName]
125  if isinstance(a, numpy.ndarray):
126  for (i,v) in enumerate(values):
127  a[i]=v
128  else:
129  if isinstance(a, ROOT.TObject) and a.ClassName() == "TClonesArray":
130  a.ExpandCreateFast(len(values))
131  fillit = self.fillers[varName]
132  for (i,v) in enumerate(values):
133  fillit(a[i],v)

References tree.Tree.fillers, and tree.Tree.vecvars.

Member Data Documentation

◆ defaultFloatType

tree.Tree.defaultFloatType

Definition at line 14 of file tree.py.

Referenced by tree.Tree.branch_(), and tree.Tree.setDefaultFloatType().

◆ defaultIntType

tree.Tree.defaultIntType

Definition at line 15 of file tree.py.

Referenced by tree.Tree.branch_(), and tree.Tree.setDefaultIntType().

◆ defaults

tree.Tree.defaults

Definition at line 12 of file tree.py.

Referenced by tree.Tree.reset(), and tree.Tree.var().

◆ fillers

tree.Tree.fillers

◆ tree

tree.Tree.tree

◆ vars

tree.Tree.vars

Definition at line 9 of file tree.py.

Referenced by tree.Tree.fill(), tree.Tree.reset(), and tree.Tree.var().

◆ vecdefaults

tree.Tree.vecdefaults

Definition at line 13 of file tree.py.

Referenced by tree.Tree.reset(), and tree.Tree.vector().

◆ vecvars

tree.Tree.vecvars

Definition at line 10 of file tree.py.

Referenced by tree.Tree.reset(), tree.Tree.vector(), and tree.Tree.vfill().

trigObjTnPSource_cfi.var
var
Definition: trigObjTnPSource_cfi.py:21
ntuplemaker.fill
fill
Definition: ntuplemaker.py:304
trackerHitRTTI::vector
Definition: trackerHitRTTI.h:21
reset
void reset(double vett[256])
Definition: TPedValues.cc:11