Skip to content

Commit c2dcde5

Browse files
authored
Merge pull request #42 from lcorcodilos/dev
Handle a few of the issues before Beta 1.4
2 parents b1c0ee5 + debbd73 commit c2dcde5

15 files changed

+671
-18
lines changed

TIMBER/Analyzer.py

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"""
66

77
from TIMBER.Utilities.CollectionGen import BuildCollectionDict, GetKeyValForBranch, StructDef, StructObj
8-
from TIMBER.Tools.Common import GetHistBinningTuple, CompileCpp, ConcatCols, GetStandardFlags
8+
from TIMBER.Tools.Common import GetHistBinningTuple, CompileCpp, ConcatCols, GetStandardFlags, ExecuteCmd
99
from clang import cindex
1010
from collections import OrderedDict
1111

@@ -146,7 +146,7 @@ def __init__(self,fileName,eventsTreeName="Events",runTreeName="Runs", createAll
146146
continue
147147
else:
148148
break
149-
self.lhaid = str(int(self.lhaid)-1) if self.lhaid[-1] == 1 else self.lhaid
149+
self.lhaid = str(int(self.lhaid)-1) if self.lhaid[-1] == "1" else self.lhaid
150150
print ('LHA ID: '+self.lhaid)
151151

152152
self.ActiveNode = self.BaseNode
@@ -222,6 +222,27 @@ def Snapshot(self,columns,outfilename,treename,lazy=False,openOption='RECREATE')
222222
'''@see Node#Snapshot'''
223223
self.ActiveNode.Snapshot(columns,outfilename,treename,lazy,openOption)
224224

225+
def SaveRunChain(self,filename,merge=True):
226+
'''Save the Run tree (chain of all input files) to filename.
227+
If filename already exists, some staging will occur to properly
228+
merge the files via hadd.
229+
230+
@param filename (str): Output file name.
231+
@param merge (bool, optional): Whether to merge with a file that already exists. Defaults to True.
232+
233+
Returns:
234+
None
235+
'''
236+
if (not os.path.exists(filename)) or (not merge): # If it doesn't already exist, nothing special
237+
self.RunChain.Merge(filename)
238+
elif merge:
239+
merge_filename = filename.replace('.root','_temp1.root')
240+
current_filename = filename.replace('.root','_temp2.root')
241+
ExecuteCmd('cp %s %s'%(filename, current_filename)) # copy existing file to <filename>_temp2.root
242+
self.RunChain.Merge(merge_filename) # create merged tree as <filename>_temp1.root
243+
ExecuteCmd('hadd -f %s %s %s'%(filename,merge_filename,current_filename)) # hadd them together into original filename (force overwrite not the greatest)
244+
ExecuteCmd('rm %s %s'%(merge_filename,current_filename)) # clean up
245+
225246
def Range(self,*argv):
226247
'''@see Node#Range'''
227248
return self.SetActiveNode(self.ActiveNode.Range(*argv))
@@ -840,6 +861,29 @@ def MakeWeightCols(self,name='',node=None,correctionNames=None,dropList=[]):
840861
# self.TrackNode(returnNode)
841862
return self.SetActiveNode(returnNode)
842863

864+
def GetWeightName(self,corr,variation,name=""):
865+
'''Return the branch/column name of the requested weight
866+
867+
@param corr (str,Correction): Either the correction object or the name of the correction.
868+
@param variation (str): "up" or "down".
869+
@param name (str,optional): Name given MakeWeightCols to denote group of weight columns. Defaults to "".
870+
871+
Raises:
872+
NameError: If weight name does not exist in the columns.
873+
874+
Returns:
875+
str: Name of the requested weight branch/column.
876+
'''
877+
if isinstance(corr,Correction):
878+
corrname = corr.name
879+
elif isinstance(corr,str):
880+
corrname = corr
881+
namemod = '' if name == '' else '_'+name
882+
weightname = 'weight%s__%s_%s'%(namemod,corrname,variation)
883+
if weightname not in self.DataFrame.GetColumnNames():
884+
raise NameError("The weight name `%s` does not exist in the current columns. Are you sure the correction has been made and MakeWeightCols has been called?"%weightname)
885+
return weightname
886+
843887
def MakeTemplateHistos(self,templateHist,variables,node=None):
844888
'''Generates the uncertainty template histograms based on the weights created by #MakeWeightCols().
845889

activate_ext.csh

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
if (`echo "$PATH" | grep "$TIMBERPATH"` == "") then
2+
setenv PATH ${PATH}:${TIMBERPATH}
3+
echo 'TIMBER added to PATH'
4+
else
5+
echo 'TIMBER already on PATH'
6+
endif

docs/archive_8h_source.html

Lines changed: 87 additions & 0 deletions
Large diffs are not rendered by default.

docs/archive__entry_8h_source.html

Lines changed: 87 additions & 0 deletions
Large diffs are not rendered by default.

docs/class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer-members.html

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -107,19 +107,21 @@
107107
<tr><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#ade0c62b73ea95b2f11ff8f5add708066">GetFlagString</a>(self, flagList=GetStandardFlags())</td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html">analyzer</a></td><td class="entry"></td></tr>
108108
<tr class="even"><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a1940e059a8d927b3b6524f289ecc882f">GetTrackedNodeNames</a>(self)</td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html">analyzer</a></td><td class="entry"></td></tr>
109109
<tr><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a818bf6c1ef57461de293ebf6a4c7ea6a">GetTriggerString</a>(self, trigList)</td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html">analyzer</a></td><td class="entry"></td></tr>
110-
<tr class="even"><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a1cbf92036a120cc45e7bb032c3d61296">isData</a></td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html">analyzer</a></td><td class="entry"></td></tr>
111-
<tr><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#aeb0781b4175a60575386701b2ac1cc4d">lhaid</a></td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html">analyzer</a></td><td class="entry"></td></tr>
112-
<tr class="even"><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a033c29fbbeb320baadaec86ca25ff829">MakeHistsWithBinning</a>(self, histDict, name='', weight=None)</td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html">analyzer</a></td><td class="entry"></td></tr>
113-
<tr><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a611faeda8b08b76181109820e549c232">MakeTemplateHistos</a>(self, templateHist, variables, node=None)</td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html">analyzer</a></td><td class="entry"></td></tr>
114-
<tr class="even"><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#af222479f97b45564dfcc91fec275c48b">MakeWeightCols</a>(self, name='', node=None, correctionNames=None, dropList=[])</td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html">analyzer</a></td><td class="entry"></td></tr>
115-
<tr><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a2f0e7e0c026da9b2cbc160816a2db28b">MergeCollections</a>(self, name, collectionNames)</td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html">analyzer</a></td><td class="entry"></td></tr>
116-
<tr class="even"><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a3eb0b4446dc99738630ed127b7184345">Nminus1</a>(self, cutgroup, node=None)</td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html">analyzer</a></td><td class="entry"></td></tr>
117-
<tr><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#aa933d8e2ef227f994f60ee3b278eb0f6">ObjectFromCollection</a>(self, name, basecoll, index, skip=[])</td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html">analyzer</a></td><td class="entry"></td></tr>
118-
<tr class="even"><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#ae4125cd5a36c17e021b2a6a1af9c4fec">preV6</a></td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html">analyzer</a></td><td class="entry"></td></tr>
119-
<tr><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a2ef44f04939b9ca846de543ef8c8676e">PrintNodeTree</a>(self, outfilename, verbose=False, toSkip=[])</td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html">analyzer</a></td><td class="entry"></td></tr>
120-
<tr class="even"><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a361306a468fa48145cf99ee48c82bf25">Range</a>(self, argv)</td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html">analyzer</a></td><td class="entry"></td></tr>
121-
<tr><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a1c671ab3d2fef88e680beb8299eb4962">ReorderCollection</a>(self, name, basecoll, newOrderCol, skip=[])</td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html">analyzer</a></td><td class="entry"></td></tr>
122-
<tr class="even"><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a3f5844d119f0a72b4f647fbffdb114ce">RunChain</a></td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html">analyzer</a></td><td class="entry"></td></tr>
110+
<tr class="even"><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a2f8118d1dc9a46dd6155791323a8ad63">GetWeightName</a>(self, corr, variation, name=&quot;&quot;)</td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html">analyzer</a></td><td class="entry"></td></tr>
111+
<tr><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a1cbf92036a120cc45e7bb032c3d61296">isData</a></td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html">analyzer</a></td><td class="entry"></td></tr>
112+
<tr class="even"><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#aeb0781b4175a60575386701b2ac1cc4d">lhaid</a></td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html">analyzer</a></td><td class="entry"></td></tr>
113+
<tr><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a033c29fbbeb320baadaec86ca25ff829">MakeHistsWithBinning</a>(self, histDict, name='', weight=None)</td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html">analyzer</a></td><td class="entry"></td></tr>
114+
<tr class="even"><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a611faeda8b08b76181109820e549c232">MakeTemplateHistos</a>(self, templateHist, variables, node=None)</td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html">analyzer</a></td><td class="entry"></td></tr>
115+
<tr><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#af222479f97b45564dfcc91fec275c48b">MakeWeightCols</a>(self, name='', node=None, correctionNames=None, dropList=[])</td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html">analyzer</a></td><td class="entry"></td></tr>
116+
<tr class="even"><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a2f0e7e0c026da9b2cbc160816a2db28b">MergeCollections</a>(self, name, collectionNames)</td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html">analyzer</a></td><td class="entry"></td></tr>
117+
<tr><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a3eb0b4446dc99738630ed127b7184345">Nminus1</a>(self, cutgroup, node=None)</td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html">analyzer</a></td><td class="entry"></td></tr>
118+
<tr class="even"><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#aa933d8e2ef227f994f60ee3b278eb0f6">ObjectFromCollection</a>(self, name, basecoll, index, skip=[])</td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html">analyzer</a></td><td class="entry"></td></tr>
119+
<tr><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#ae4125cd5a36c17e021b2a6a1af9c4fec">preV6</a></td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html">analyzer</a></td><td class="entry"></td></tr>
120+
<tr class="even"><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a2ef44f04939b9ca846de543ef8c8676e">PrintNodeTree</a>(self, outfilename, verbose=False, toSkip=[])</td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html">analyzer</a></td><td class="entry"></td></tr>
121+
<tr><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a361306a468fa48145cf99ee48c82bf25">Range</a>(self, argv)</td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html">analyzer</a></td><td class="entry"></td></tr>
122+
<tr class="even"><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a1c671ab3d2fef88e680beb8299eb4962">ReorderCollection</a>(self, name, basecoll, newOrderCol, skip=[])</td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html">analyzer</a></td><td class="entry"></td></tr>
123+
<tr><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a3f5844d119f0a72b4f647fbffdb114ce">RunChain</a></td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html">analyzer</a></td><td class="entry"></td></tr>
124+
<tr class="even"><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a71c3df3ecfe0afd1abe50caabea431c6">SaveRunChain</a>(self, filename, merge=True)</td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html">analyzer</a></td><td class="entry"></td></tr>
123125
<tr><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a3f19f4e3f9344e283f5cf6ae2371fc70">SetActiveNode</a>(self, node)</td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html">analyzer</a></td><td class="entry"></td></tr>
124126
<tr class="even"><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#ad3b30a4c790299b3affccd8a9bf9bd17">silent</a></td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html">analyzer</a></td><td class="entry"></td></tr>
125127
<tr><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#ac9396d0acbc67a31bbae81c20944900c">Snapshot</a>(self, columns, outfilename, treename, lazy=False, openOption='RECREATE')</td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html">analyzer</a></td><td class="entry"></td></tr>

0 commit comments

Comments
 (0)