diff --git a/TIMBER/Framework/include/common.h b/TIMBER/Framework/include/common.h
index 823e5660b333652043e1a033b4f93088fd85af52..d86baebe71c1f932bfb72adc69f07d055f8c0fbf 100644
--- a/TIMBER/Framework/include/common.h
+++ b/TIMBER/Framework/include/common.h
@@ -29,7 +29,13 @@ namespace hardware {
         while (result <= -TMath::Pi()) result += 2*TMath::Pi();
         return result;
     }
-
+    /**
+     * @brief Calculate \f$\Delta R\f$ between two vectors.
+     * 
+     * @param v1 
+     * @param v2 
+     * @return float 
+     */
     float DeltaR(ROOT::Math::PtEtaPhiMVector v1, ROOT::Math::PtEtaPhiMVector v2) {
         float deta = v1.Eta()-v2.Eta();
         float dphi = DeltaPhi(v1.Phi(),v2.Phi());
diff --git a/TIMBER/Tools/Common.py b/TIMBER/Tools/Common.py
index 090c3444848e91e3c58be2de66da336f30b2487b..7c5472b9fcde5a55fa7574424bba8a3a7493f450 100755
--- a/TIMBER/Tools/Common.py
+++ b/TIMBER/Tools/Common.py
@@ -400,6 +400,17 @@ def FindCommonString(string_list):
     return to_match[:-2]
 
 def GetStandardFlags():
+    '''List of the following recommended flags as of Jan. 6th, 2021.
+
+    Returns:
+        ["Flag_goodVertices",
+         "Flag_globalTightHalo2016Filter", 
+         "Flag_eeBadScFilter", 
+         "Flag_HBHENoiseFilter", 
+         "Flag_HBHENoiseIsoFilter", 
+         "Flag_ecalBadCalibFilter", 
+         "Flag_EcalDeadCellTriggerPrimitiveFilter"]
+    '''
     flags = ["Flag_goodVertices",
                "Flag_globalTightHalo2016Filter", 
                "Flag_eeBadScFilter", 
diff --git a/TIMBER/Tools/Plot.py b/TIMBER/Tools/Plot.py
index afd4991ea05708602353e2aa3f784bc94ee9dccc..208bb60706cefd0ebf59205f40615fc289b05a3a 100644
--- a/TIMBER/Tools/Plot.py
+++ b/TIMBER/Tools/Plot.py
@@ -199,7 +199,6 @@ def MakeSoverB(stack_of_bkgs,signal):
     to the left of the peak and forwards to the right of the peak.
 
     Args:
-        pad (TPad): TPad that's already built
         stack_of_bkgs (THStack): Stack of backgrounds, already normalized
             together, and as a sum normalized to 1.
         signal (TH1): One histogram for signal. Can only calculate
diff --git a/docs/_gen_matching_8h_source.html b/docs/_gen_matching_8h_source.html
index 92dc233344621aeb3856695aa008bc4e3cb17271..d8893f8955bca5d7d850682516d4cb65ba536b0b 100644
--- a/docs/_gen_matching_8h_source.html
+++ b/docs/_gen_matching_8h_source.html
@@ -76,7 +76,7 @@ $(function() {
 <div class="title">GenMatching.h</div>  </div>
 </div><!--header-->
 <div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="preprocessor">#include &lt;map&gt;</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="preprocessor">#include &lt;algorithm&gt;</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="preprocessor">#include &lt;numeric&gt;</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="preprocessor">#include &lt;math.h&gt;</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="preprocessor">#include &lt;cstdlib&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="preprocessor">#include &quot;Collection.h&quot;</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="preprocessor">#include &quot;Pythonic.h&quot;</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="preprocessor">#include &quot;Math/Vector4Dfwd.h&quot;</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="preprocessor">#include &quot;Math/VectorUtil.h&quot;</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;</div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespace_r_o_o_t_1_1_vec_ops.html">ROOT::VecOps</a>;</div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="keyword">using</span> LVector = ROOT::Math::PtEtaPhiMVector;</div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="keywordtype">bool</span> BitChecker(<span class="keyword">const</span> <span class="keywordtype">int</span> &amp;bit, <span class="keywordtype">int</span> &amp;number){</div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;    <span class="keywordtype">int</span> result = number &amp; (1 &lt;&lt; bit);</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;    <span class="keywordflow">if</span> (result &gt; 0) {<span class="keywordflow">return</span> <span class="keyword">true</span>;}</div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;    <span class="keywordflow">else</span> {<span class="keywordflow">return</span> <span class="keyword">false</span>;}</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;}</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> std::map &lt;int, std::string&gt; PDGIds {</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;    {1,<span class="stringliteral">&quot;d&quot;</span>}, {2,<span class="stringliteral">&quot;u&quot;</span>}, {3,<span class="stringliteral">&quot;s&quot;</span>}, {4,<span class="stringliteral">&quot;c&quot;</span>}, {5,<span class="stringliteral">&quot;b&quot;</span>}, {6,<span class="stringliteral">&quot;t&quot;</span>},</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;    {11,<span class="stringliteral">&quot;e&quot;</span>}, {12,<span class="stringliteral">&quot;nu_e&quot;</span>}, {13,<span class="stringliteral">&quot;mu&quot;</span>}, {14,<span class="stringliteral">&quot;nu_mu&quot;</span>},{ 15,<span class="stringliteral">&quot;tau&quot;</span>},</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;    {16,<span class="stringliteral">&quot;nu_tau&quot;</span>}, {21,<span class="stringliteral">&quot;g&quot;</span>}, {22,<span class="stringliteral">&quot;photon&quot;</span>}, {23,<span class="stringliteral">&quot;Z&quot;</span>}, {24,<span class="stringliteral">&quot;W&quot;</span>}, {25,<span class="stringliteral">&quot;h&quot;</span>}</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;};</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> std::map &lt;std::string, int&gt; GenParticleStatusFlags {</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;        {<span class="stringliteral">&quot;isPrompt&quot;</span>, 0},</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;        {<span class="stringliteral">&quot;isDecayedLeptonHadron&quot;</span>, 1},</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;        {<span class="stringliteral">&quot;isTauDecayProduct&quot;</span>, 2},</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;        {<span class="stringliteral">&quot;isPromptTauDecayProduct&quot;</span>, 3},</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;        {<span class="stringliteral">&quot;isDirectTauDecayProduct&quot;</span>, 4},</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;        {<span class="stringliteral">&quot;isDirectPromptTauDecayProduct&quot;</span>, 5},</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;        {<span class="stringliteral">&quot;isDirectHadronDecayProduct&quot;</span>, 6},</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;        {<span class="stringliteral">&quot;isHardProcess&quot;</span>, 7},</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;        {<span class="stringliteral">&quot;fromHardProcess&quot;</span>, 8},</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;        {<span class="stringliteral">&quot;isHardProcessTauDecayProduct&quot;</span>, 9},</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;        {<span class="stringliteral">&quot;isDirectHardProcessTauDecayProduct&quot;</span>, 10},</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;        {<span class="stringliteral">&quot;fromHardProcessBeforeFSR&quot;</span>, 11},</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;        {<span class="stringliteral">&quot;isFirstCopy&quot;</span>, 12},</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;        {<span class="stringliteral">&quot;isLastCopy&quot;</span>, 13},</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;        {<span class="stringliteral">&quot;isLastCopyBeforeFSR&quot;</span>, 14}</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;};</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="class_particle.html">   59</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_particle.html">Particle</a> {</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;    <span class="keyword">public</span>:</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="class_particle.html#a8b3ab54ed3e81c69863d65e4e6c424a0">   61</a></span>&#160;        <span class="keywordtype">bool</span> flag = <span class="keyword">true</span>; </div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="class_particle.html#a750b5d744c39a06bfb13e6eb010e35d0">   62</a></span>&#160;        <span class="keywordtype">int</span> <a class="code" href="class_particle.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>; </div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="class_particle.html#a3fdb24d523e00a1ce48a6dd2a2c283cd">   63</a></span>&#160;        <span class="keywordtype">int</span>* <a class="code" href="class_particle.html#a3fdb24d523e00a1ce48a6dd2a2c283cd">pdgId</a>; </div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="class_particle.html#a0cb30d84f44ed74c600711d9405b85a5">   64</a></span>&#160;        <span class="keywordtype">int</span>* <a class="code" href="class_particle.html#a0cb30d84f44ed74c600711d9405b85a5">status</a>; </div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="class_particle.html#a217c4e30f87d5903ed0367f2d253f298">   65</a></span>&#160;        std::map &lt;std::string, int&gt; <a class="code" href="class_particle.html#a217c4e30f87d5903ed0367f2d253f298">statusFlags</a>; </div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="class_particle.html#ac120842e7faaa838279f15b0b0e7d210">   66</a></span>&#160;        <span class="keywordtype">int</span> <a class="code" href="class_particle.html#ac120842e7faaa838279f15b0b0e7d210">parentIndex</a>; </div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="class_particle.html#a6f2e99182732bd6db261eae6202a4ca1">   67</a></span>&#160;        std::vector&lt;int&gt; <a class="code" href="class_particle.html#a6f2e99182732bd6db261eae6202a4ca1">childIndex</a>; </div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="class_particle.html#a8a36c244243007833951b034201ab89d">   68</a></span>&#160;        LVector <a class="code" href="class_particle.html#a8a36c244243007833951b034201ab89d">vect</a>; </div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;        <a class="code" href="class_particle.html">Particle</a>(){};</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="class_particle.html#a089d18b57a5fc65fa72df180c1d01cad">   75</a></span>&#160;        <span class="keywordtype">void</span> <a class="code" href="class_particle.html#a089d18b57a5fc65fa72df180c1d01cad">AddParent</a>(<span class="keywordtype">int</span> idx){</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;            parentIndex = idx;</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;        }</div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="class_particle.html#acb900ac432e4c38ad6765c4d6b5a6321">   83</a></span>&#160;        <span class="keywordtype">void</span> <a class="code" href="class_particle.html#acb900ac432e4c38ad6765c4d6b5a6321">AddChild</a>(<span class="keywordtype">int</span> idx){</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;            childIndex.push_back(idx);</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;        }</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;        <span class="keywordtype">float</span> DeltaR(LVector input_vector);</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;};</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="class_particle.html#a217625337b1642ead85a1fb1c0c80660">   98</a></span>&#160;<span class="keywordtype">float</span> <a class="code" href="class_particle.html#a217625337b1642ead85a1fb1c0c80660">Particle::DeltaR</a>(LVector input_vector) {</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;    <span class="keywordflow">return</span> ROOT::Math::VectorUtil::DeltaR(vect,input_vector);</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;};</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="class_gen_particle_tree.html">  106</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_gen_particle_tree.html">GenParticleTree</a></div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;{</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;    <span class="keyword">private</span>:</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;        <a class="code" href="struct_collection.html">Collection</a> GenParts;</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;        std::vector&lt;Particle*&gt; nodes;</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;        std::vector&lt;Particle*&gt; heads;</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;        <span class="keywordtype">bool</span> MatchParticleToString(<a class="code" href="class_particle.html">Particle</a>* particle, std::string <span class="keywordtype">string</span>);</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;        std::vector&lt;Particle*&gt; RunChain(<a class="code" href="class_particle.html">Particle</a>* node, std::vector&lt;std::string&gt; chain);</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;        std::vector&lt;int&gt; StoredIndexes();</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;        <a class="code" href="class_particle.html">Particle</a> NoneParticle;</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;    <span class="keyword">public</span>:</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;        <a class="code" href="class_gen_particle_tree.html">GenParticleTree</a>(){</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;            NoneParticle.<a class="code" href="class_particle.html#a8b3ab54ed3e81c69863d65e4e6c424a0">flag</a> = <span class="keyword">false</span>;</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;        };</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;        <span class="keywordtype">void</span> AddParticle(<a class="code" href="class_particle.html">Particle</a>* particle);</div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="class_gen_particle_tree.html#a9867e896c69d44a613ffcb00dd287f1c">  134</a></span>&#160;        std::vector&lt;Particle*&gt; <a class="code" href="class_gen_particle_tree.html#a9867e896c69d44a613ffcb00dd287f1c">GetParticles</a>() {<span class="keywordflow">return</span> nodes;}</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;        std::vector&lt;Particle*&gt; GetChildren(<a class="code" href="class_particle.html">Particle</a>* particle);</div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;        <a class="code" href="class_particle.html">Particle</a>* GetParent(<a class="code" href="class_particle.html">Particle</a>* particle);</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;        std::vector&lt;std::vector&lt;Particle*&gt;&gt; FindChain(std::string chainstring);</div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;};</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;std::vector&lt;int&gt; GenParticleTree::StoredIndexes(){</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;    std::vector&lt;int&gt; current_idxs {};</div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; nodes.size(); i++) {</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;        current_idxs.push_back(nodes.at(i)-&gt;index);</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;    }</div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;    <span class="keywordflow">return</span> current_idxs;</div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;}</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;</div><div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="class_gen_particle_tree.html#abb1f8139f3e928faf36ad322697fd5af">  166</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="class_gen_particle_tree.html#abb1f8139f3e928faf36ad322697fd5af">GenParticleTree::AddParticle</a>(<a class="code" href="class_particle.html">Particle</a>* particle) {</div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;    <a class="code" href="class_particle.html">Particle</a>* staged_node = particle;</div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;</div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;    <span class="comment">// First check if current heads don&#39;t have new parents and </span></div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;    <span class="comment">// remove them from heads if they do</span></div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;    std::vector&lt;int&gt; heads_to_delete {};</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; heads.size(); i++) {</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;        <span class="keywordflow">if</span> (heads.at(i)-&gt;parentIndex == staged_node-&gt;<a class="code" href="class_particle.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>) {</div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;            heads_to_delete.push_back(i);</div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;        }</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;    }</div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;    <span class="comment">// Need to delete indices in reverse order so as not to shift </span></div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;    <span class="comment">// indices after a deletion</span></div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">int</span> ih = heads_to_delete.size(); ih &gt;= 0; ih--) {</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;        heads.erase(heads.begin()+ih);</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;    }</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;   </div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;    <span class="comment">// Next identify staged node has no parent (heads)</span></div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;    <span class="comment">// If no parent, no other infor we can get from this particle</span></div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;    std::vector&lt;int&gt; indexes = StoredIndexes();</div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;    <span class="keywordflow">if</span> (InList(staged_node-&gt;<a class="code" href="class_particle.html#ac120842e7faaa838279f15b0b0e7d210">parentIndex</a>, indexes)) {</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;        heads.push_back(staged_node);</div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;        nodes.push_back(staged_node);</div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;    } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;        <span class="keywordflow">for</span> (<span class="keywordtype">int</span> inode = 0; inode &lt; nodes.size(); inode++) {</div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;            <span class="keywordflow">if</span> (staged_node-&gt;<a class="code" href="class_particle.html#ac120842e7faaa838279f15b0b0e7d210">parentIndex</a> == nodes[inode]-&gt;index){</div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;                staged_node-&gt;<a class="code" href="class_particle.html#a089d18b57a5fc65fa72df180c1d01cad">AddParent</a>(inode);</div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;                nodes.at(inode)-&gt;AddChild(nodes.size());</div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;                nodes.push_back(staged_node);</div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;            }</div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;        }        </div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;    }</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;};</div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;</div><div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="class_gen_particle_tree.html#ad4512e01e57691c5498e42064e95227a">  200</a></span>&#160;std::vector&lt;Particle*&gt; <a class="code" href="class_gen_particle_tree.html#ad4512e01e57691c5498e42064e95227a">GenParticleTree::GetChildren</a>(<a class="code" href="class_particle.html">Particle</a>* particle){</div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;    std::vector&lt;Particle*&gt; children {};</div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; particle-&gt;<a class="code" href="class_particle.html#a6f2e99182732bd6db261eae6202a4ca1">childIndex</a>.size(); i++) {</div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;        children.push_back(nodes[particle-&gt;<a class="code" href="class_particle.html#a6f2e99182732bd6db261eae6202a4ca1">childIndex</a>.at(i)]);</div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;    }</div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;    <span class="keywordflow">return</span> children;</div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;}</div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;</div><div class="line"><a name="l00208"></a><span class="lineno"><a class="line" href="class_gen_particle_tree.html#a7f812e9b9b5de2498fa03ba6003af7e9">  208</a></span>&#160;<a class="code" href="class_particle.html">Particle</a>* <a class="code" href="class_gen_particle_tree.html#a7f812e9b9b5de2498fa03ba6003af7e9">GenParticleTree::GetParent</a>(<a class="code" href="class_particle.html">Particle</a>* particle) {</div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;    <span class="keywordflow">if</span> (nodes.size() &gt; particle-&gt;<a class="code" href="class_particle.html#ac120842e7faaa838279f15b0b0e7d210">parentIndex</a>){</div><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;        <span class="keywordflow">return</span> nodes.at(particle-&gt;<a class="code" href="class_particle.html#ac120842e7faaa838279f15b0b0e7d210">parentIndex</a>);</div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;    } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;        <span class="keywordflow">return</span> &amp;NoneParticle;</div><div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;    }</div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;    </div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;}</div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;</div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;<span class="keywordtype">bool</span> GenParticleTree::MatchParticleToString(<a class="code" href="class_particle.html">Particle</a>* particle, std::string <span class="keywordtype">string</span>){</div><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;    std::vector&lt;int&gt; pdgIds {}; </div><div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;    <span class="keywordflow">if</span> (InString(<span class="stringliteral">&quot;:&quot;</span>,<span class="keywordtype">string</span>)) {</div><div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;        <span class="keywordtype">int</span> startId = std::stoi( <span class="keywordtype">string</span>.substr(0,<span class="keywordtype">string</span>.find(<span class="charliteral">&#39;:&#39;</span>)) );</div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;        <span class="keywordtype">int</span> stopId  = std::stoi( <span class="keywordtype">string</span>.substr(1,<span class="keywordtype">string</span>.find(<span class="charliteral">&#39;:&#39;</span>)) );</div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;        pdgIds = range(startId, stopId);</div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;    } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (InString(<span class="stringliteral">&quot;,&quot;</span>,<span class="keywordtype">string</span>)) {</div><div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;        <span class="keyword">auto</span> splits = split(<span class="keywordtype">string</span>,<span class="charliteral">&#39;,&#39;</span>);</div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;        <span class="keywordflow">for</span> (<span class="keywordtype">int</span> istr = 0; istr &lt; splits.size(); istr++) {</div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;            pdgIds.push_back( std::stoi(splits.at(istr)) );</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;        }</div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;    }</div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;</div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;    <span class="keywordtype">bool</span> out;</div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;    <span class="keywordflow">if</span> (pdgIds.size() == 0) {</div><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;        <span class="keywordflow">if</span> (std::abs(*particle-&gt;<a class="code" href="class_particle.html#a3fdb24d523e00a1ce48a6dd2a2c283cd">pdgId</a>) == std::stoi(<span class="keywordtype">string</span>)) {</div><div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;            out = <span class="keyword">true</span>;</div><div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;        } <span class="keywordflow">else</span> {out = <span class="keyword">false</span>;}</div><div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;    } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;        <span class="keywordflow">if</span> (InList(std::abs(*particle-&gt;<a class="code" href="class_particle.html#a3fdb24d523e00a1ce48a6dd2a2c283cd">pdgId</a>), pdgIds)) {</div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;            out = <span class="keyword">true</span>;</div><div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;        } <span class="keywordflow">else</span> {out = <span class="keyword">false</span>;}</div><div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;    }</div><div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;</div><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;    <span class="keywordflow">return</span> out;</div><div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;}</div><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;</div><div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;std::vector&lt;Particle*&gt; GenParticleTree::RunChain(<a class="code" href="class_particle.html">Particle</a>* node, std::vector&lt;std::string&gt; chain) {</div><div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;    std::vector&lt;Particle*&gt; nodechain {node};</div><div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;    <a class="code" href="class_particle.html">Particle</a>* parent = GetParent(node);</div><div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;    std::vector&lt;std::string&gt; chain_minus_first = {chain.begin()+1,chain.end()};</div><div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;    </div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;    <span class="keywordflow">if</span> (chain.size() == 0) {</div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;        <span class="keywordflow">return</span> nodechain;</div><div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;    } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (parent-&gt;<a class="code" href="class_particle.html#a8b3ab54ed3e81c69863d65e4e6c424a0">flag</a> == <span class="keyword">false</span>) {</div><div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;        nodechain.push_back(&amp;NoneParticle);</div><div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;    } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (MatchParticleToString(parent, chain.at(0))) {</div><div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;        Extend(nodechain, RunChain(parent,chain_minus_first));</div><div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;    } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (parent-&gt;<a class="code" href="class_particle.html#a3fdb24d523e00a1ce48a6dd2a2c283cd">pdgId</a> == node-&gt;<a class="code" href="class_particle.html#a3fdb24d523e00a1ce48a6dd2a2c283cd">pdgId</a>) {</div><div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;        Extend(nodechain, RunChain(parent, chain));</div><div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;    } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;        nodechain.push_back(&amp;NoneParticle);</div><div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;    }</div><div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;</div><div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;    <span class="keywordflow">return</span> nodechain;</div><div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;}</div><div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;</div><div class="line"><a name="l00264"></a><span class="lineno"><a class="line" href="class_gen_particle_tree.html#aa3eb638a3431c774e952404690bc2cf9">  264</a></span>&#160;std::vector&lt;std::vector&lt;Particle*&gt;&gt; <a class="code" href="class_gen_particle_tree.html#aa3eb638a3431c774e952404690bc2cf9">GenParticleTree::FindChain</a>(std::string chainstring) {</div><div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;    std::vector&lt;std::string&gt; reveresed_chain = split(chainstring,<span class="charliteral">&#39;&gt;&#39;</span>);</div><div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;    std::reverse(reveresed_chain.begin(), reveresed_chain.end());</div><div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;</div><div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;    std::vector&lt;std::string&gt; reveresed_chain_minus_first = {reveresed_chain.begin()+1,reveresed_chain.end()};</div><div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;</div><div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;    std::vector&lt;Particle*&gt; chain_result;</div><div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;    std::vector&lt;std::vector&lt;Particle*&gt;&gt; out;</div><div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;</div><div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">int</span> inode = 0; inode &lt; nodes.size(); inode++) {</div><div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;        <a class="code" href="class_particle.html">Particle</a>* n = nodes[inode];</div><div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;        <span class="keywordflow">if</span> (MatchParticleToString(n, reveresed_chain.at(0))) {</div><div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;            chain_result = RunChain(n,reveresed_chain_minus_first);</div><div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;            <span class="keywordtype">bool</span> no_NoneParticle = <span class="keyword">true</span>;</div><div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;            <span class="keywordflow">for</span> (<span class="keywordtype">int</span> icr = 0; icr &lt; chain_result.size(); icr++) {</div><div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;                <span class="keywordflow">if</span> (chain_result[icr]-&gt;flag == <span class="keyword">false</span>) {</div><div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;                    no_NoneParticle = <span class="keyword">false</span>;</div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;                    <span class="keywordflow">break</span>;</div><div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;                }</div><div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;            }</div><div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;            <span class="keywordflow">if</span> (no_NoneParticle) {out.push_back(chain_result);}</div><div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;        } </div><div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;    }</div><div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;    <span class="keywordflow">return</span> out;</div><div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;}</div><div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;</div><div class="line"><a name="l00294"></a><span class="lineno"><a class="line" href="class_gen_particle_objs.html">  294</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_gen_particle_objs.html">GenParticleObjs</a> {</div><div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;    <span class="keyword">private</span>:</div><div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;        <a class="code" href="struct_collection.html">Collection</a> GenPartCollection; </div><div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;        <span class="keywordtype">void</span> SetStatusFlags(<span class="keywordtype">int</span> particleIndex);</div><div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;</div><div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;    <span class="keyword">public</span>:</div><div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;        <a class="code" href="class_gen_particle_objs.html">GenParticleObjs</a>(RVec&lt;float&gt; in_pt, </div><div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;                        RVec&lt;float&gt; in_eta, RVec&lt;float&gt; in_phi, </div><div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;                        RVec&lt;float&gt; in_m, RVec&lt;int&gt; in_pdgId, </div><div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;                        RVec&lt;int&gt; in_status, RVec&lt;int&gt; in_statusFlags, </div><div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;                        RVec&lt;int&gt; in_genPartIdxMother);</div><div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;        <a class="code" href="class_gen_particle_objs.html">GenParticleObjs</a>(<a class="code" href="struct_collection.html">Collection</a> genParts);   </div><div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;</div><div class="line"><a name="l00328"></a><span class="lineno"><a class="line" href="class_gen_particle_objs.html#a3fdd1544a8ce44bbd4eef935f71b8cb6">  328</a></span>&#160;        <a class="code" href="class_particle.html">Particle</a> <a class="code" href="class_gen_particle_objs.html#a3fdd1544a8ce44bbd4eef935f71b8cb6">particle</a>; </div><div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;        std::map&lt; std::string, bool&gt; CompareToVector(LVector vect);</div><div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;        <a class="code" href="class_particle.html">Particle</a> SetIndex(<span class="keywordtype">int</span> idx);   </div><div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;        <span class="keywordtype">int</span> GetStatusFlag(std::string flagName);</div><div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;};</div><div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;</div><div class="line"><a name="l00362"></a><span class="lineno"><a class="line" href="class_gen_particle_objs.html#a5a36271980ffa82d725d97cfd1be1a1a">  362</a></span>&#160;<a class="code" href="class_gen_particle_objs.html#a5a36271980ffa82d725d97cfd1be1a1a">GenParticleObjs::GenParticleObjs</a>(RVec&lt;float&gt; in_pt, </div><div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;                RVec&lt;float&gt; in_eta, RVec&lt;float&gt; in_phi, </div><div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;                RVec&lt;float&gt; in_m, RVec&lt;int&gt; in_pdgId, </div><div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;                RVec&lt;int&gt; in_status, RVec&lt;int&gt; in_statusFlags, </div><div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;                RVec&lt;int&gt; in_genPartIdxMother) {</div><div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;</div><div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;    GenPartCollection.RVecInt = { </div><div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;        {<span class="stringliteral">&quot;pdgId&quot;</span>,&amp;in_pdgId},</div><div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;        {<span class="stringliteral">&quot;status&quot;</span>,&amp;in_status},</div><div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;        {<span class="stringliteral">&quot;statusFlags&quot;</span>,&amp;in_statusFlags},</div><div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;        {<span class="stringliteral">&quot;genPartIdxMother&quot;</span>,&amp;in_genPartIdxMother}</div><div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;    };</div><div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;    GenPartCollection.RVecFloat = { </div><div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;        {<span class="stringliteral">&quot;pt&quot;</span>,&amp;in_pt},</div><div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;        {<span class="stringliteral">&quot;eta&quot;</span>,&amp;in_eta},</div><div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;        {<span class="stringliteral">&quot;phi&quot;</span>,&amp;in_phi},</div><div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;        {<span class="stringliteral">&quot;m&quot;</span>,&amp;in_m}</div><div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;    };</div><div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;    <span class="comment">// Settings for the &quot;set&quot; particle</span></div><div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;    particle.<a class="code" href="class_particle.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a> = -1;</div><div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;}</div><div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;</div><div class="line"><a name="l00384"></a><span class="lineno"><a class="line" href="class_gen_particle_objs.html#ae26a40274b535d7e7f0a7abe3a73f01a">  384</a></span>&#160;<a class="code" href="class_gen_particle_objs.html#a5a36271980ffa82d725d97cfd1be1a1a">GenParticleObjs::GenParticleObjs</a>(<a class="code" href="struct_collection.html">Collection</a> genParts) {</div><div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;    GenPartCollection = genParts;</div><div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;};</div><div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;</div><div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;<span class="keywordtype">void</span> GenParticleObjs::SetStatusFlags(<span class="keywordtype">int</span> particleIndex){</div><div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = GenParticleStatusFlags.begin(); it != GenParticleStatusFlags.end(); ++it) {</div><div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;        particle.<a class="code" href="class_particle.html#a217c4e30f87d5903ed0367f2d253f298">statusFlags</a>[it-&gt;first] = BitChecker(it-&gt;second, GenPartCollection.RVecInt[<span class="stringliteral">&quot;statusFlags&quot;</span>]-&gt;at(particleIndex));</div><div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;    }</div><div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;}</div><div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;</div><div class="line"><a name="l00394"></a><span class="lineno"><a class="line" href="class_gen_particle_objs.html#a97a10edf215b0459fcdba2a7d8e173cc">  394</a></span>&#160;std::map&lt; std::string, bool&gt; <a class="code" href="class_gen_particle_objs.html#a97a10edf215b0459fcdba2a7d8e173cc">GenParticleObjs::CompareToVector</a>(LVector vect) {</div><div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;    std::map&lt; std::string, bool&gt; out;</div><div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;    out[<span class="stringliteral">&quot;sameHemisphere&quot;</span>] = (ROOT::Math::VectorUtil::DeltaPhi(particle.<a class="code" href="class_particle.html#a8a36c244243007833951b034201ab89d">vect</a>,vect) &lt; M_PI);</div><div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;    out[<span class="stringliteral">&quot;deltaR&quot;</span>] = (particle.<a class="code" href="class_particle.html#a217625337b1642ead85a1fb1c0c80660">DeltaR</a>(vect) &lt; 0.8);</div><div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;    out[<span class="stringliteral">&quot;deltaM&quot;</span>] = (std::abs(vect.M() - particle.<a class="code" href="class_particle.html#a8a36c244243007833951b034201ab89d">vect</a>.M())/particle.<a class="code" href="class_particle.html#a8a36c244243007833951b034201ab89d">vect</a>.M() &lt; 0.05);</div><div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;    <span class="keywordflow">return</span> out;</div><div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;};</div><div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;</div><div class="line"><a name="l00402"></a><span class="lineno"><a class="line" href="class_gen_particle_objs.html#a28cffdddc2a7e6f88c82bd1915311103">  402</a></span>&#160;<a class="code" href="class_particle.html">Particle</a> <a class="code" href="class_gen_particle_objs.html#a28cffdddc2a7e6f88c82bd1915311103">GenParticleObjs::SetIndex</a>(<span class="keywordtype">int</span> idx) {</div><div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;    particle.<a class="code" href="class_particle.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a> = idx;</div><div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;    particle.<a class="code" href="class_particle.html#a3fdb24d523e00a1ce48a6dd2a2c283cd">pdgId</a> = &amp;GenPartCollection.RVecInt[<span class="stringliteral">&quot;pdgId&quot;</span>]-&gt;at(idx);</div><div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;    SetStatusFlags(idx);</div><div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;    particle.<a class="code" href="class_particle.html#ac120842e7faaa838279f15b0b0e7d210">parentIndex</a> = GenPartCollection.RVecInt[<span class="stringliteral">&quot;genPartIdxMother&quot;</span>]-&gt;at(idx);</div><div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;    particle.<a class="code" href="class_particle.html#a8a36c244243007833951b034201ab89d">vect</a>.SetCoordinates(</div><div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;        GenPartCollection.RVecFloat[<span class="stringliteral">&quot;pt&quot;</span>]-&gt;at(idx),</div><div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;        GenPartCollection.RVecFloat[<span class="stringliteral">&quot;eta&quot;</span>]-&gt;at(idx),</div><div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;        GenPartCollection.RVecFloat[<span class="stringliteral">&quot;phi&quot;</span>]-&gt;at(idx),</div><div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;        GenPartCollection.RVecFloat[<span class="stringliteral">&quot;m&quot;</span>]-&gt;at(idx)</div><div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;        );</div><div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;</div><div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;    <span class="keywordflow">return</span> particle;</div><div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;};   </div><div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;</div><div class="line"><a name="l00417"></a><span class="lineno"><a class="line" href="class_gen_particle_objs.html#aa3c5d3a3186bb6e46381b5abf4a9d065">  417</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="class_gen_particle_objs.html#aa3c5d3a3186bb6e46381b5abf4a9d065">GenParticleObjs::GetStatusFlag</a>(std::string flagName){</div><div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;    <span class="keywordflow">return</span> particle.<a class="code" href="class_particle.html#a217c4e30f87d5903ed0367f2d253f298">statusFlags</a>[flagName];</div><div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;};</div><div class="ttc" id="class_gen_particle_objs_html"><div class="ttname"><a href="class_gen_particle_objs.html">GenParticleObjs</a></div><div class="ttdoc">Object that stores and manipulates the information for gen particles. Stores all gen particles in the...</div><div class="ttdef"><b>Definition:</b> GenMatching.h:294</div></div>
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="preprocessor">#include &lt;map&gt;</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="preprocessor">#include &lt;algorithm&gt;</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="preprocessor">#include &lt;numeric&gt;</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="preprocessor">#include &lt;math.h&gt;</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="preprocessor">#include &lt;cstdlib&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="preprocessor">#include &quot;Collection.h&quot;</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="preprocessor">#include &quot;Pythonic.h&quot;</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="preprocessor">#include &quot;Math/Vector4Dfwd.h&quot;</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="preprocessor">#include &quot;Math/VectorUtil.h&quot;</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;</div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespace_r_o_o_t_1_1_vec_ops.html">ROOT::VecOps</a>;</div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="keyword">using</span> LVector = ROOT::Math::PtEtaPhiMVector;</div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="keywordtype">bool</span> BitChecker(<span class="keyword">const</span> <span class="keywordtype">int</span> &amp;bit, <span class="keywordtype">int</span> &amp;number){</div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;    <span class="keywordtype">int</span> result = number &amp; (1 &lt;&lt; bit);</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;    <span class="keywordflow">if</span> (result &gt; 0) {<span class="keywordflow">return</span> <span class="keyword">true</span>;}</div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;    <span class="keywordflow">else</span> {<span class="keywordflow">return</span> <span class="keyword">false</span>;}</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;}</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> std::map &lt;int, std::string&gt; PDGIds {</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;    {1,<span class="stringliteral">&quot;d&quot;</span>}, {2,<span class="stringliteral">&quot;u&quot;</span>}, {3,<span class="stringliteral">&quot;s&quot;</span>}, {4,<span class="stringliteral">&quot;c&quot;</span>}, {5,<span class="stringliteral">&quot;b&quot;</span>}, {6,<span class="stringliteral">&quot;t&quot;</span>},</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;    {11,<span class="stringliteral">&quot;e&quot;</span>}, {12,<span class="stringliteral">&quot;nu_e&quot;</span>}, {13,<span class="stringliteral">&quot;mu&quot;</span>}, {14,<span class="stringliteral">&quot;nu_mu&quot;</span>},{ 15,<span class="stringliteral">&quot;tau&quot;</span>},</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;    {16,<span class="stringliteral">&quot;nu_tau&quot;</span>}, {21,<span class="stringliteral">&quot;g&quot;</span>}, {22,<span class="stringliteral">&quot;photon&quot;</span>}, {23,<span class="stringliteral">&quot;Z&quot;</span>}, {24,<span class="stringliteral">&quot;W&quot;</span>}, {25,<span class="stringliteral">&quot;h&quot;</span>}</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;};</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> std::map &lt;std::string, int&gt; GenParticleStatusFlags {</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;        {<span class="stringliteral">&quot;isPrompt&quot;</span>, 0},</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;        {<span class="stringliteral">&quot;isDecayedLeptonHadron&quot;</span>, 1},</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;        {<span class="stringliteral">&quot;isTauDecayProduct&quot;</span>, 2},</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;        {<span class="stringliteral">&quot;isPromptTauDecayProduct&quot;</span>, 3},</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;        {<span class="stringliteral">&quot;isDirectTauDecayProduct&quot;</span>, 4},</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;        {<span class="stringliteral">&quot;isDirectPromptTauDecayProduct&quot;</span>, 5},</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;        {<span class="stringliteral">&quot;isDirectHadronDecayProduct&quot;</span>, 6},</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;        {<span class="stringliteral">&quot;isHardProcess&quot;</span>, 7},</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;        {<span class="stringliteral">&quot;fromHardProcess&quot;</span>, 8},</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;        {<span class="stringliteral">&quot;isHardProcessTauDecayProduct&quot;</span>, 9},</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;        {<span class="stringliteral">&quot;isDirectHardProcessTauDecayProduct&quot;</span>, 10},</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;        {<span class="stringliteral">&quot;fromHardProcessBeforeFSR&quot;</span>, 11},</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;        {<span class="stringliteral">&quot;isFirstCopy&quot;</span>, 12},</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;        {<span class="stringliteral">&quot;isLastCopy&quot;</span>, 13},</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;        {<span class="stringliteral">&quot;isLastCopyBeforeFSR&quot;</span>, 14}</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;};</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="class_particle.html">   59</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_particle.html">Particle</a> {</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;    <span class="keyword">public</span>:</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="class_particle.html#a8b3ab54ed3e81c69863d65e4e6c424a0">   61</a></span>&#160;        <span class="keywordtype">bool</span> flag = <span class="keyword">true</span>; </div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="class_particle.html#a750b5d744c39a06bfb13e6eb010e35d0">   62</a></span>&#160;        <span class="keywordtype">int</span> <a class="code" href="class_particle.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>; </div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="class_particle.html#a3fdb24d523e00a1ce48a6dd2a2c283cd">   63</a></span>&#160;        <span class="keywordtype">int</span>* <a class="code" href="class_particle.html#a3fdb24d523e00a1ce48a6dd2a2c283cd">pdgId</a>; </div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="class_particle.html#a0cb30d84f44ed74c600711d9405b85a5">   64</a></span>&#160;        <span class="keywordtype">int</span>* <a class="code" href="class_particle.html#a0cb30d84f44ed74c600711d9405b85a5">status</a>; </div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="class_particle.html#a217c4e30f87d5903ed0367f2d253f298">   65</a></span>&#160;        std::map &lt;std::string, int&gt; <a class="code" href="class_particle.html#a217c4e30f87d5903ed0367f2d253f298">statusFlags</a>; </div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="class_particle.html#ac120842e7faaa838279f15b0b0e7d210">   66</a></span>&#160;        <span class="keywordtype">int</span> <a class="code" href="class_particle.html#ac120842e7faaa838279f15b0b0e7d210">parentIndex</a>; </div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="class_particle.html#a6f2e99182732bd6db261eae6202a4ca1">   67</a></span>&#160;        std::vector&lt;int&gt; <a class="code" href="class_particle.html#a6f2e99182732bd6db261eae6202a4ca1">childIndex</a>; </div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="class_particle.html#a8a36c244243007833951b034201ab89d">   68</a></span>&#160;        LVector <a class="code" href="class_particle.html#a8a36c244243007833951b034201ab89d">vect</a>; </div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;        <a class="code" href="class_particle.html">Particle</a>(){};</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="class_particle.html#a089d18b57a5fc65fa72df180c1d01cad">   75</a></span>&#160;        <span class="keywordtype">void</span> <a class="code" href="class_particle.html#a089d18b57a5fc65fa72df180c1d01cad">AddParent</a>(<span class="keywordtype">int</span> idx){</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;            parentIndex = idx;</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;        }</div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="class_particle.html#acb900ac432e4c38ad6765c4d6b5a6321">   83</a></span>&#160;        <span class="keywordtype">void</span> <a class="code" href="class_particle.html#acb900ac432e4c38ad6765c4d6b5a6321">AddChild</a>(<span class="keywordtype">int</span> idx){</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;            childIndex.push_back(idx);</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;        }</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;        <span class="keywordtype">float</span> DeltaR(LVector input_vector);</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;};</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="class_particle.html#a217625337b1642ead85a1fb1c0c80660">   98</a></span>&#160;<span class="keywordtype">float</span> <a class="code" href="class_particle.html#a217625337b1642ead85a1fb1c0c80660">Particle::DeltaR</a>(LVector input_vector) {</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;    <span class="keywordflow">return</span> ROOT::Math::VectorUtil::DeltaR(vect,input_vector);</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;};</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="class_gen_particle_tree.html">  106</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_gen_particle_tree.html">GenParticleTree</a></div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;{</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;    <span class="keyword">private</span>:</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;        <a class="code" href="struct_collection.html">Collection</a> GenParts;</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;        std::vector&lt;Particle*&gt; nodes;</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;        std::vector&lt;Particle*&gt; heads;</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;        <span class="keywordtype">bool</span> MatchParticleToString(<a class="code" href="class_particle.html">Particle</a>* particle, std::string <span class="keywordtype">string</span>);</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;        std::vector&lt;Particle*&gt; RunChain(<a class="code" href="class_particle.html">Particle</a>* node, std::vector&lt;std::string&gt; chain);</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;        std::vector&lt;int&gt; StoredIndexes();</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;        <a class="code" href="class_particle.html">Particle</a> NoneParticle;</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;    <span class="keyword">public</span>:</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;        <a class="code" href="class_gen_particle_tree.html">GenParticleTree</a>(){</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;            NoneParticle.<a class="code" href="class_particle.html#a8b3ab54ed3e81c69863d65e4e6c424a0">flag</a> = <span class="keyword">false</span>;</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;        };</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;        <span class="keywordtype">void</span> AddParticle(<a class="code" href="class_particle.html">Particle</a>* particle);</div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="class_gen_particle_tree.html#a9867e896c69d44a613ffcb00dd287f1c">  134</a></span>&#160;        std::vector&lt;Particle*&gt; <a class="code" href="class_gen_particle_tree.html#a9867e896c69d44a613ffcb00dd287f1c">GetParticles</a>() {<span class="keywordflow">return</span> nodes;}</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;        std::vector&lt;Particle*&gt; GetChildren(<a class="code" href="class_particle.html">Particle</a>* particle);</div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;        <a class="code" href="class_particle.html">Particle</a>* GetParent(<a class="code" href="class_particle.html">Particle</a>* particle);</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;        std::vector&lt;std::vector&lt;Particle*&gt;&gt; FindChain(std::string chainstring);</div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;};</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;std::vector&lt;int&gt; GenParticleTree::StoredIndexes(){</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;    std::vector&lt;int&gt; current_idxs {};</div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; nodes.size(); i++) {</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;        current_idxs.push_back(nodes.at(i)-&gt;index);</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;    }</div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;    <span class="keywordflow">return</span> current_idxs;</div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;}</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;</div><div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="class_gen_particle_tree.html#abb1f8139f3e928faf36ad322697fd5af">  166</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="class_gen_particle_tree.html#abb1f8139f3e928faf36ad322697fd5af">GenParticleTree::AddParticle</a>(<a class="code" href="class_particle.html">Particle</a>* particle) {</div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;    <a class="code" href="class_particle.html">Particle</a>* staged_node = particle;</div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;</div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;    <span class="comment">// First check if current heads don&#39;t have new parents and </span></div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;    <span class="comment">// remove them from heads if they do</span></div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;    std::vector&lt;int&gt; heads_to_delete {};</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; heads.size(); i++) {</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;        <span class="keywordflow">if</span> (heads.at(i)-&gt;parentIndex == staged_node-&gt;<a class="code" href="class_particle.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>) {</div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;            heads_to_delete.push_back(i);</div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;        }</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;    }</div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;    <span class="comment">// Need to delete indices in reverse order so as not to shift </span></div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;    <span class="comment">// indices after a deletion</span></div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> ih = heads_to_delete.size(); ih &gt;= 0; ih--) {</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;        heads.erase(heads.begin()+ih);</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;    }</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;   </div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;    <span class="comment">// Next identify staged node has no parent (heads)</span></div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;    <span class="comment">// If no parent, no other infor we can get from this particle</span></div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;    std::vector&lt;int&gt; indexes = StoredIndexes();</div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;    <span class="keywordflow">if</span> (Pythonic::InList(staged_node-&gt;<a class="code" href="class_particle.html#ac120842e7faaa838279f15b0b0e7d210">parentIndex</a>, indexes)) {</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;        heads.push_back(staged_node);</div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;        nodes.push_back(staged_node);</div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;    } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;        <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> inode = 0; inode &lt; nodes.size(); inode++) {</div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;            <span class="keywordflow">if</span> (staged_node-&gt;<a class="code" href="class_particle.html#ac120842e7faaa838279f15b0b0e7d210">parentIndex</a> == nodes[inode]-&gt;index){</div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;                staged_node-&gt;<a class="code" href="class_particle.html#a089d18b57a5fc65fa72df180c1d01cad">AddParent</a>(inode);</div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;                nodes.at(inode)-&gt;AddChild(nodes.size());</div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;                nodes.push_back(staged_node);</div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;            }</div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;        }        </div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;    }</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;};</div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;</div><div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="class_gen_particle_tree.html#ad4512e01e57691c5498e42064e95227a">  200</a></span>&#160;std::vector&lt;Particle*&gt; <a class="code" href="class_gen_particle_tree.html#ad4512e01e57691c5498e42064e95227a">GenParticleTree::GetChildren</a>(<a class="code" href="class_particle.html">Particle</a>* particle){</div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;    std::vector&lt;Particle*&gt; children {};</div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; particle-&gt;<a class="code" href="class_particle.html#a6f2e99182732bd6db261eae6202a4ca1">childIndex</a>.size(); i++) {</div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;        children.push_back(nodes[particle-&gt;<a class="code" href="class_particle.html#a6f2e99182732bd6db261eae6202a4ca1">childIndex</a>.at(i)]);</div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;    }</div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;    <span class="keywordflow">return</span> children;</div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;}</div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;</div><div class="line"><a name="l00208"></a><span class="lineno"><a class="line" href="class_gen_particle_tree.html#a7f812e9b9b5de2498fa03ba6003af7e9">  208</a></span>&#160;<a class="code" href="class_particle.html">Particle</a>* <a class="code" href="class_gen_particle_tree.html#a7f812e9b9b5de2498fa03ba6003af7e9">GenParticleTree::GetParent</a>(<a class="code" href="class_particle.html">Particle</a>* particle) {</div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;    <span class="keywordflow">if</span> (nodes.size() &gt; particle-&gt;<a class="code" href="class_particle.html#ac120842e7faaa838279f15b0b0e7d210">parentIndex</a>){</div><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;        <span class="keywordflow">return</span> nodes.at(particle-&gt;<a class="code" href="class_particle.html#ac120842e7faaa838279f15b0b0e7d210">parentIndex</a>);</div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;    } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;        <span class="keywordflow">return</span> &amp;NoneParticle;</div><div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;    }</div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;    </div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;}</div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;</div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;<span class="keywordtype">bool</span> GenParticleTree::MatchParticleToString(<a class="code" href="class_particle.html">Particle</a>* particle, std::string <span class="keywordtype">string</span>){</div><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;    std::vector&lt;int&gt; pdgIds {}; </div><div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;    <span class="keywordflow">if</span> (Pythonic::InString(<span class="stringliteral">&quot;:&quot;</span>,<span class="keywordtype">string</span>)) {</div><div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;        <span class="keywordtype">int</span> startId = std::stoi( <span class="keywordtype">string</span>.substr(0,<span class="keywordtype">string</span>.find(<span class="charliteral">&#39;:&#39;</span>)) );</div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;        <span class="keywordtype">int</span> stopId  = std::stoi( <span class="keywordtype">string</span>.substr(1,<span class="keywordtype">string</span>.find(<span class="charliteral">&#39;:&#39;</span>)) );</div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;        pdgIds = Pythonic::Range(startId, stopId);</div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;    } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Pythonic::InString(<span class="stringliteral">&quot;,&quot;</span>,<span class="keywordtype">string</span>)) {</div><div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;        <span class="keyword">auto</span> splits = Pythonic::Split(<span class="keywordtype">string</span>,<span class="charliteral">&#39;,&#39;</span>);</div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;        <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> istr = 0; istr &lt; splits.size(); istr++) {</div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;            pdgIds.push_back( std::stoi(splits.at(istr)) );</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;        }</div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;    }</div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;</div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;    <span class="keywordtype">bool</span> out;</div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;    <span class="keywordflow">if</span> (pdgIds.size() == 0) {</div><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;        <span class="keywordflow">if</span> (std::abs(*particle-&gt;<a class="code" href="class_particle.html#a3fdb24d523e00a1ce48a6dd2a2c283cd">pdgId</a>) == std::stoi(<span class="keywordtype">string</span>)) {</div><div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;            out = <span class="keyword">true</span>;</div><div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;        } <span class="keywordflow">else</span> {out = <span class="keyword">false</span>;}</div><div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;    } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;        <span class="keywordflow">if</span> (Pythonic::InList((<span class="keywordtype">int</span>)std::abs(*particle-&gt;<a class="code" href="class_particle.html#a3fdb24d523e00a1ce48a6dd2a2c283cd">pdgId</a>), pdgIds)) {</div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;            out = <span class="keyword">true</span>;</div><div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;        } <span class="keywordflow">else</span> {out = <span class="keyword">false</span>;}</div><div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;    }</div><div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;</div><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;    <span class="keywordflow">return</span> out;</div><div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;}</div><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;</div><div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;std::vector&lt;Particle*&gt; GenParticleTree::RunChain(<a class="code" href="class_particle.html">Particle</a>* node, std::vector&lt;std::string&gt; chain) {</div><div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;    std::vector&lt;Particle*&gt; nodechain {node};</div><div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;    <a class="code" href="class_particle.html">Particle</a>* parent = GetParent(node);</div><div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;    std::vector&lt;std::string&gt; chain_minus_first = {chain.begin()+1,chain.end()};</div><div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;    </div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;    <span class="keywordflow">if</span> (chain.size() == 0) {</div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;        <span class="keywordflow">return</span> nodechain;</div><div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;    } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (parent-&gt;<a class="code" href="class_particle.html#a8b3ab54ed3e81c69863d65e4e6c424a0">flag</a> == <span class="keyword">false</span>) {</div><div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;        nodechain.push_back(&amp;NoneParticle);</div><div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;    } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (MatchParticleToString(parent, chain.at(0))) {</div><div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;        Pythonic::Extend(nodechain, RunChain(parent,chain_minus_first));</div><div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;    } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (parent-&gt;<a class="code" href="class_particle.html#a3fdb24d523e00a1ce48a6dd2a2c283cd">pdgId</a> == node-&gt;<a class="code" href="class_particle.html#a3fdb24d523e00a1ce48a6dd2a2c283cd">pdgId</a>) {</div><div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;        Pythonic::Extend(nodechain, RunChain(parent, chain));</div><div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;    } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;        nodechain.push_back(&amp;NoneParticle);</div><div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;    }</div><div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;</div><div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;    <span class="keywordflow">return</span> nodechain;</div><div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;}</div><div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;</div><div class="line"><a name="l00264"></a><span class="lineno"><a class="line" href="class_gen_particle_tree.html#aa3eb638a3431c774e952404690bc2cf9">  264</a></span>&#160;std::vector&lt;std::vector&lt;Particle*&gt;&gt; <a class="code" href="class_gen_particle_tree.html#aa3eb638a3431c774e952404690bc2cf9">GenParticleTree::FindChain</a>(std::string chainstring) {</div><div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;    std::vector&lt;std::string&gt; reveresed_chain = Pythonic::Split(chainstring,<span class="charliteral">&#39;&gt;&#39;</span>);</div><div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;    std::reverse(reveresed_chain.begin(), reveresed_chain.end());</div><div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;</div><div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;    std::vector&lt;std::string&gt; reveresed_chain_minus_first = {reveresed_chain.begin()+1,reveresed_chain.end()};</div><div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;</div><div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;    std::vector&lt;Particle*&gt; chain_result;</div><div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;    std::vector&lt;std::vector&lt;Particle*&gt;&gt; out;</div><div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;</div><div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> inode = 0; inode &lt; nodes.size(); inode++) {</div><div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;        <a class="code" href="class_particle.html">Particle</a>* n = nodes[inode];</div><div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;        <span class="keywordflow">if</span> (MatchParticleToString(n, reveresed_chain.at(0))) {</div><div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;            chain_result = RunChain(n,reveresed_chain_minus_first);</div><div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;            <span class="keywordtype">bool</span> no_NoneParticle = <span class="keyword">true</span>;</div><div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;            <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> icr = 0; icr &lt; chain_result.size(); icr++) {</div><div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;                <span class="keywordflow">if</span> (chain_result[icr]-&gt;flag == <span class="keyword">false</span>) {</div><div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;                    no_NoneParticle = <span class="keyword">false</span>;</div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;                    <span class="keywordflow">break</span>;</div><div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;                }</div><div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;            }</div><div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;            <span class="keywordflow">if</span> (no_NoneParticle) {out.push_back(chain_result);}</div><div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;        } </div><div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;    }</div><div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;    <span class="keywordflow">return</span> out;</div><div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;}</div><div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;</div><div class="line"><a name="l00294"></a><span class="lineno"><a class="line" href="class_gen_particle_objs.html">  294</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_gen_particle_objs.html">GenParticleObjs</a> {</div><div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;    <span class="keyword">private</span>:</div><div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;        <a class="code" href="struct_collection.html">Collection</a> GenPartCollection; </div><div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;        <span class="keywordtype">void</span> SetStatusFlags(<span class="keywordtype">int</span> particleIndex);</div><div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;</div><div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;    <span class="keyword">public</span>:</div><div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;        <a class="code" href="class_gen_particle_objs.html">GenParticleObjs</a>(RVec&lt;float&gt; in_pt, </div><div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;                        RVec&lt;float&gt; in_eta, RVec&lt;float&gt; in_phi, </div><div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;                        RVec&lt;float&gt; in_m, RVec&lt;int&gt; in_pdgId, </div><div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;                        RVec&lt;int&gt; in_status, RVec&lt;int&gt; in_statusFlags, </div><div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;                        RVec&lt;int&gt; in_genPartIdxMother);</div><div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;        <a class="code" href="class_gen_particle_objs.html">GenParticleObjs</a>(<a class="code" href="struct_collection.html">Collection</a> genParts);   </div><div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;</div><div class="line"><a name="l00328"></a><span class="lineno"><a class="line" href="class_gen_particle_objs.html#a3fdd1544a8ce44bbd4eef935f71b8cb6">  328</a></span>&#160;        <a class="code" href="class_particle.html">Particle</a> <a class="code" href="class_gen_particle_objs.html#a3fdd1544a8ce44bbd4eef935f71b8cb6">particle</a>; </div><div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;        std::map&lt; std::string, bool&gt; CompareToVector(LVector vect);</div><div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;        <a class="code" href="class_particle.html">Particle</a> SetIndex(<span class="keywordtype">int</span> idx);   </div><div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;        <span class="keywordtype">int</span> GetStatusFlag(std::string flagName);</div><div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;};</div><div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;</div><div class="line"><a name="l00362"></a><span class="lineno"><a class="line" href="class_gen_particle_objs.html#a5a36271980ffa82d725d97cfd1be1a1a">  362</a></span>&#160;<a class="code" href="class_gen_particle_objs.html#a5a36271980ffa82d725d97cfd1be1a1a">GenParticleObjs::GenParticleObjs</a>(RVec&lt;float&gt; in_pt, </div><div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;                RVec&lt;float&gt; in_eta, RVec&lt;float&gt; in_phi, </div><div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;                RVec&lt;float&gt; in_m, RVec&lt;int&gt; in_pdgId, </div><div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;                RVec&lt;int&gt; in_status, RVec&lt;int&gt; in_statusFlags, </div><div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;                RVec&lt;int&gt; in_genPartIdxMother) {</div><div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;</div><div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;    GenPartCollection.RVecInt = { </div><div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;        {<span class="stringliteral">&quot;pdgId&quot;</span>,&amp;in_pdgId},</div><div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;        {<span class="stringliteral">&quot;status&quot;</span>,&amp;in_status},</div><div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;        {<span class="stringliteral">&quot;statusFlags&quot;</span>,&amp;in_statusFlags},</div><div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;        {<span class="stringliteral">&quot;genPartIdxMother&quot;</span>,&amp;in_genPartIdxMother}</div><div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;    };</div><div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;    GenPartCollection.RVecFloat = { </div><div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;        {<span class="stringliteral">&quot;pt&quot;</span>,&amp;in_pt},</div><div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;        {<span class="stringliteral">&quot;eta&quot;</span>,&amp;in_eta},</div><div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;        {<span class="stringliteral">&quot;phi&quot;</span>,&amp;in_phi},</div><div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;        {<span class="stringliteral">&quot;m&quot;</span>,&amp;in_m}</div><div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;    };</div><div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;    <span class="comment">// Settings for the &quot;set&quot; particle</span></div><div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;    particle.<a class="code" href="class_particle.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a> = -1;</div><div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;}</div><div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;</div><div class="line"><a name="l00384"></a><span class="lineno"><a class="line" href="class_gen_particle_objs.html#ae26a40274b535d7e7f0a7abe3a73f01a">  384</a></span>&#160;<a class="code" href="class_gen_particle_objs.html#a5a36271980ffa82d725d97cfd1be1a1a">GenParticleObjs::GenParticleObjs</a>(<a class="code" href="struct_collection.html">Collection</a> genParts) {</div><div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;    GenPartCollection = genParts;</div><div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;};</div><div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;</div><div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;<span class="keywordtype">void</span> GenParticleObjs::SetStatusFlags(<span class="keywordtype">int</span> particleIndex){</div><div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;    <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = GenParticleStatusFlags.begin(); it != GenParticleStatusFlags.end(); ++it) {</div><div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;        particle.<a class="code" href="class_particle.html#a217c4e30f87d5903ed0367f2d253f298">statusFlags</a>[it-&gt;first] = BitChecker(it-&gt;second, GenPartCollection.RVecInt[<span class="stringliteral">&quot;statusFlags&quot;</span>]-&gt;at(particleIndex));</div><div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;    }</div><div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;}</div><div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;</div><div class="line"><a name="l00394"></a><span class="lineno"><a class="line" href="class_gen_particle_objs.html#a97a10edf215b0459fcdba2a7d8e173cc">  394</a></span>&#160;std::map&lt; std::string, bool&gt; <a class="code" href="class_gen_particle_objs.html#a97a10edf215b0459fcdba2a7d8e173cc">GenParticleObjs::CompareToVector</a>(LVector vect) {</div><div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;    std::map&lt; std::string, bool&gt; out;</div><div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;    out[<span class="stringliteral">&quot;sameHemisphere&quot;</span>] = (ROOT::Math::VectorUtil::DeltaPhi(particle.<a class="code" href="class_particle.html#a8a36c244243007833951b034201ab89d">vect</a>,vect) &lt; M_PI);</div><div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;    out[<span class="stringliteral">&quot;deltaR&quot;</span>] = (particle.<a class="code" href="class_particle.html#a217625337b1642ead85a1fb1c0c80660">DeltaR</a>(vect) &lt; 0.8);</div><div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;    out[<span class="stringliteral">&quot;deltaM&quot;</span>] = (std::abs(vect.M() - particle.<a class="code" href="class_particle.html#a8a36c244243007833951b034201ab89d">vect</a>.M())/particle.<a class="code" href="class_particle.html#a8a36c244243007833951b034201ab89d">vect</a>.M() &lt; 0.05);</div><div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;    <span class="keywordflow">return</span> out;</div><div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;};</div><div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;</div><div class="line"><a name="l00402"></a><span class="lineno"><a class="line" href="class_gen_particle_objs.html#a28cffdddc2a7e6f88c82bd1915311103">  402</a></span>&#160;<a class="code" href="class_particle.html">Particle</a> <a class="code" href="class_gen_particle_objs.html#a28cffdddc2a7e6f88c82bd1915311103">GenParticleObjs::SetIndex</a>(<span class="keywordtype">int</span> idx) {</div><div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;    particle.<a class="code" href="class_particle.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a> = idx;</div><div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;    particle.<a class="code" href="class_particle.html#a3fdb24d523e00a1ce48a6dd2a2c283cd">pdgId</a> = &amp;GenPartCollection.RVecInt[<span class="stringliteral">&quot;pdgId&quot;</span>]-&gt;at(idx);</div><div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;    SetStatusFlags(idx);</div><div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;    particle.<a class="code" href="class_particle.html#ac120842e7faaa838279f15b0b0e7d210">parentIndex</a> = GenPartCollection.RVecInt[<span class="stringliteral">&quot;genPartIdxMother&quot;</span>]-&gt;at(idx);</div><div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;    particle.<a class="code" href="class_particle.html#a8a36c244243007833951b034201ab89d">vect</a>.SetCoordinates(</div><div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;        GenPartCollection.RVecFloat[<span class="stringliteral">&quot;pt&quot;</span>]-&gt;at(idx),</div><div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;        GenPartCollection.RVecFloat[<span class="stringliteral">&quot;eta&quot;</span>]-&gt;at(idx),</div><div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;        GenPartCollection.RVecFloat[<span class="stringliteral">&quot;phi&quot;</span>]-&gt;at(idx),</div><div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;        GenPartCollection.RVecFloat[<span class="stringliteral">&quot;m&quot;</span>]-&gt;at(idx)</div><div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;        );</div><div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;</div><div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;    <span class="keywordflow">return</span> particle;</div><div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;};   </div><div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;</div><div class="line"><a name="l00417"></a><span class="lineno"><a class="line" href="class_gen_particle_objs.html#aa3c5d3a3186bb6e46381b5abf4a9d065">  417</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="class_gen_particle_objs.html#aa3c5d3a3186bb6e46381b5abf4a9d065">GenParticleObjs::GetStatusFlag</a>(std::string flagName){</div><div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;    <span class="keywordflow">return</span> particle.<a class="code" href="class_particle.html#a217c4e30f87d5903ed0367f2d253f298">statusFlags</a>[flagName];</div><div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;};</div><div class="ttc" id="class_gen_particle_objs_html"><div class="ttname"><a href="class_gen_particle_objs.html">GenParticleObjs</a></div><div class="ttdoc">Object that stores and manipulates the information for gen particles. Stores all gen particles in the...</div><div class="ttdef"><b>Definition:</b> GenMatching.h:294</div></div>
 <div class="ttc" id="class_particle_html_acb900ac432e4c38ad6765c4d6b5a6321"><div class="ttname"><a href="class_particle.html#acb900ac432e4c38ad6765c4d6b5a6321">Particle::AddChild</a></div><div class="ttdeci">void AddChild(int idx)</div><div class="ttdoc">Add child index to track. </div><div class="ttdef"><b>Definition:</b> GenMatching.h:83</div></div>
 <div class="ttc" id="class_gen_particle_tree_html_a9867e896c69d44a613ffcb00dd287f1c"><div class="ttname"><a href="class_gen_particle_tree.html#a9867e896c69d44a613ffcb00dd287f1c">GenParticleTree::GetParticles</a></div><div class="ttdeci">std::vector&lt; Particle * &gt; GetParticles()</div><div class="ttdoc">Get the list of particle objects. </div><div class="ttdef"><b>Definition:</b> GenMatching.h:134</div></div>
 <div class="ttc" id="class_particle_html_a750b5d744c39a06bfb13e6eb010e35d0"><div class="ttname"><a href="class_particle.html#a750b5d744c39a06bfb13e6eb010e35d0">Particle::index</a></div><div class="ttdeci">int index</div><div class="ttdef"><b>Definition:</b> GenMatching.h:62</div></div>
diff --git a/docs/_jet_m_e_tinfo_8h_source.html b/docs/_jet_m_e_tinfo_8h_source.html
new file mode 100644
index 0000000000000000000000000000000000000000..8c25d1c0262020f59d70decb5ba79d9b2e3f4fa5
--- /dev/null
+++ b/docs/_jet_m_e_tinfo_8h_source.html
@@ -0,0 +1,89 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>TIMBER: TIMBER/Framework/include/JetMETinfo.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+  MathJax.Hub.Config({
+    extensions: ["tex2jax.js"],
+    jax: ["input/TeX","output/HTML-CSS"],
+});
+</script><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="doxygen-styles.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectlogo"><img alt="Logo" src="logo_small.png"/></td>
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">TIMBER
+   &#160;<span id="projectnumber">beta</span>
+   </div>
+   <div id="projectbrief">Tree Interface for Making Binned Events with RDataFrame</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.13 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d6d9562795f317eab1196869323d45a8.html">TIMBER</a></li><li class="navelem"><a class="el" href="dir_16d9e443a39e4d4bfc6fd05dcfa96ec2.html">Framework</a></li><li class="navelem"><a class="el" href="dir_ac73f0278e065ab7918de78d30844c9a.html">include</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">JetMETinfo.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="preprocessor">#include &lt;map&gt;</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespacestd.html">std</a>;</div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;</div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespace_j_m_e.html">JME</a> {</div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;    <span class="comment">// JEC dict</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;    map&lt;string,string&gt; jecTagsMC = {</div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;        {<span class="stringliteral">&quot;2016&quot;</span>, <span class="stringliteral">&quot;Summer16_07Aug2017_V11_MC&quot;</span>},</div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;        {<span class="stringliteral">&quot;2017&quot;</span>, <span class="stringliteral">&quot;Fall17_17Nov2017_V32_MC&quot;</span>},</div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;        {<span class="stringliteral">&quot;2018&quot;</span>, <span class="stringliteral">&quot;Autumn18_V19_MC&quot;</span>},</div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;        {<span class="stringliteral">&quot;UL2017&quot;</span>, <span class="stringliteral">&quot;Summer19UL17_V5_MC&quot;</span>},</div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;    };</div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;    map&lt;string,string&gt; jecTagsFastSim = {</div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;        {<span class="stringliteral">&quot;2016&quot;</span>, <span class="stringliteral">&quot;Spring16_25nsFastSimV1_MC&quot;</span>},</div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;        {<span class="stringliteral">&quot;2017&quot;</span>, <span class="stringliteral">&quot;Fall17_FastSimV1_MC&quot;</span>},</div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;        {<span class="stringliteral">&quot;2018&quot;</span>, <span class="stringliteral">&quot;Autumn18_FastSimV1_MC&quot;</span>}</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;    };</div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;    map&lt;string,string&gt; archiveTagsDATA = {</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;        {<span class="stringliteral">&quot;2016&quot;</span>, <span class="stringliteral">&quot;Summer16_07Aug2017_V11_DATA&quot;</span>},</div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;        {<span class="stringliteral">&quot;2017&quot;</span>, <span class="stringliteral">&quot;Fall17_17Nov2017_V32_DATA&quot;</span>},</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;        {<span class="stringliteral">&quot;2018&quot;</span>, <span class="stringliteral">&quot;Autumn18_V19_DATA&quot;</span>},</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;        {<span class="stringliteral">&quot;UL2017&quot;</span>, <span class="stringliteral">&quot;Summer19UL17_V5_DATA&quot;</span>}</div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;    };</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;    map&lt;string,string&gt; jecTagsDATA = {</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;        {<span class="stringliteral">&quot;2016B&quot;</span>, <span class="stringliteral">&quot;Summer16_07Aug2017BCD_V11_DATA&quot;</span>},</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;        {<span class="stringliteral">&quot;2016C&quot;</span>, <span class="stringliteral">&quot;Summer16_07Aug2017BCD_V11_DATA&quot;</span>},</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;        {<span class="stringliteral">&quot;2016D&quot;</span>, <span class="stringliteral">&quot;Summer16_07Aug2017BCD_V11_DATA&quot;</span>},</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;        {<span class="stringliteral">&quot;2016E&quot;</span>, <span class="stringliteral">&quot;Summer16_07Aug2017EF_V11_DATA&quot;</span>},</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;        {<span class="stringliteral">&quot;2016F&quot;</span>, <span class="stringliteral">&quot;Summer16_07Aug2017EF_V11_DATA&quot;</span>},</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;        {<span class="stringliteral">&quot;2016G&quot;</span>, <span class="stringliteral">&quot;Summer16_07Aug2017GH_V11_DATA&quot;</span>},</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;        {<span class="stringliteral">&quot;2016H&quot;</span>, <span class="stringliteral">&quot;Summer16_07Aug2017GH_V11_DATA&quot;</span>},</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;        {<span class="stringliteral">&quot;2017B&quot;</span>, <span class="stringliteral">&quot;Fall17_17Nov2017B_V32_DATA&quot;</span>},</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;        {<span class="stringliteral">&quot;2017C&quot;</span>, <span class="stringliteral">&quot;Fall17_17Nov2017C_V32_DATA&quot;</span>},</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;        {<span class="stringliteral">&quot;2017D&quot;</span>, <span class="stringliteral">&quot;Fall17_17Nov2017DE_V32_DATA&quot;</span>},</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;        {<span class="stringliteral">&quot;2017E&quot;</span>, <span class="stringliteral">&quot;Fall17_17Nov2017DE_V32_DATA&quot;</span>},</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;        {<span class="stringliteral">&quot;2017F&quot;</span>, <span class="stringliteral">&quot;Fall17_17Nov2017F_V32_DATA&quot;</span>},</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;        {<span class="stringliteral">&quot;2018A&quot;</span>, <span class="stringliteral">&quot;Autumn18_RunA_V19_DATA&quot;</span>},</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;        {<span class="stringliteral">&quot;2018B&quot;</span>, <span class="stringliteral">&quot;Autumn18_RunB_V19_DATA&quot;</span>},</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;        {<span class="stringliteral">&quot;2018C&quot;</span>, <span class="stringliteral">&quot;Autumn18_RunC_V19_DATA&quot;</span>},</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;        {<span class="stringliteral">&quot;2018D&quot;</span>, <span class="stringliteral">&quot;Autumn18_RunD_V19_DATA&quot;</span>},</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;        {<span class="stringliteral">&quot;UL2017B&quot;</span>, <span class="stringliteral">&quot;Summer19UL17_RunB_V5_DATA&quot;</span>},</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;        {<span class="stringliteral">&quot;UL2017C&quot;</span>, <span class="stringliteral">&quot;Summer19UL17_RunC_V5_DATA&quot;</span>},</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;        {<span class="stringliteral">&quot;UL2017D&quot;</span>, <span class="stringliteral">&quot;Summer19UL17_RunD_V5_DATA&quot;</span>},</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;        {<span class="stringliteral">&quot;UL2017E&quot;</span>, <span class="stringliteral">&quot;Summer19UL17_RunE_V5_DATA&quot;</span>},</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;        {<span class="stringliteral">&quot;UL2017F&quot;</span>, <span class="stringliteral">&quot;Summer19UL17_RunF_V5_DATA&quot;</span>}</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;    };</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;    map&lt;string,string&gt; jerTagsMC = {</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;        {<span class="stringliteral">&quot;2016&quot;</span>, <span class="stringliteral">&quot;Summer16_25nsV1_MC&quot;</span>},</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;        {<span class="stringliteral">&quot;2017&quot;</span>, <span class="stringliteral">&quot;Fall17_V3_MC&quot;</span>},</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;        {<span class="stringliteral">&quot;2018&quot;</span>, <span class="stringliteral">&quot;Autumn18_V7b_MC&quot;</span>},</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;        {<span class="stringliteral">&quot;UL2017&quot;</span>, <span class="stringliteral">&quot;Summer19UL17_JRV2_MC&quot;</span>},</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;    };</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;    <span class="comment">// jet mass resolution: https://twiki.cern.ch/twiki/bin/view/CMS/JetWtagging</span></div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;    <span class="comment">// nominal, up, down</span></div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;    map&lt;string, vector&lt;float&gt;&gt; jmrValues = {</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;        {<span class="stringliteral">&quot;2016&quot;</span>, {1.0, 1.2, 0.8}},</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;        {<span class="stringliteral">&quot;2017&quot;</span>, {1.09, 1.14, 1.04}},</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;        <span class="comment">// Use 2017 values for 2018 until 2018 are released</span></div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;        {<span class="stringliteral">&quot;2018&quot;</span>, {1.09, 1.14, 1.04}},</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;        {<span class="stringliteral">&quot;UL2017&quot;</span>, {1.00, 1.00, 1.00}},  <span class="comment">// placeholder</span></div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;    };</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;    <span class="comment">// jet mass scale</span></div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;    <span class="comment">// W-tagging PUPPI softdrop JMS values: https://twiki.cern.ch/twiki/bin/view/CMS/JetWtagging</span></div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;    map&lt;string, vector&lt;float&gt;&gt; jmsValues = {</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;        {<span class="stringliteral">&quot;2016&quot;</span>, {1.00, 0.9906, 1.0094}},  <span class="comment">// nominal, down, up</span></div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;        {<span class="stringliteral">&quot;2017&quot;</span>, {0.982, 0.978, 0.986}},</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;        <span class="comment">// Use 2017 values for 2018 until 2018 are released</span></div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;        {<span class="stringliteral">&quot;2018&quot;</span>, {0.982, 0.978, 0.986}},</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;        {<span class="stringliteral">&quot;UL2017&quot;</span>, {1.000, 1.000, 1.000}}, <span class="comment">// placeholder</span></div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;    };</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;}</div><div class="ttc" id="namespacestd_html"><div class="ttname"><a href="namespacestd.html">std</a></div></div>
+<div class="ttc" id="namespace_j_m_e_html"><div class="ttname"><a href="namespace_j_m_e.html">JME</a></div><div class="ttdef"><b>Definition:</b> JetMETinfo.h:6</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.13
+</small></address>
+</body>
+</html>
diff --git a/docs/_jet_recalib_8h_source.html b/docs/_jet_recalib_8h_source.html
new file mode 100644
index 0000000000000000000000000000000000000000..43b7579fd1cb9ba78f7612900397d3af45a9a879
--- /dev/null
+++ b/docs/_jet_recalib_8h_source.html
@@ -0,0 +1,87 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>TIMBER: TIMBER/Framework/include/JetRecalib.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+  MathJax.Hub.Config({
+    extensions: ["tex2jax.js"],
+    jax: ["input/TeX","output/HTML-CSS"],
+});
+</script><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="doxygen-styles.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectlogo"><img alt="Logo" src="logo_small.png"/></td>
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">TIMBER
+   &#160;<span id="projectnumber">beta</span>
+   </div>
+   <div id="projectbrief">Tree Interface for Making Binned Events with RDataFrame</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.13 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d6d9562795f317eab1196869323d45a8.html">TIMBER</a></li><li class="navelem"><a class="el" href="dir_16d9e443a39e4d4bfc6fd05dcfa96ec2.html">Framework</a></li><li class="navelem"><a class="el" href="dir_ac73f0278e065ab7918de78d30844c9a.html">include</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">JetRecalib.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"></div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.13
+</small></address>
+</body>
+</html>
diff --git a/docs/_jet_smearer_8h_source.html b/docs/_jet_smearer_8h_source.html
new file mode 100644
index 0000000000000000000000000000000000000000..127977327a20521e85d99aa76f54e80dfd16fe59
--- /dev/null
+++ b/docs/_jet_smearer_8h_source.html
@@ -0,0 +1,91 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>TIMBER: TIMBER/Framework/include/JetSmearer.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+  MathJax.Hub.Config({
+    extensions: ["tex2jax.js"],
+    jax: ["input/TeX","output/HTML-CSS"],
+});
+</script><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="doxygen-styles.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectlogo"><img alt="Logo" src="logo_small.png"/></td>
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">TIMBER
+   &#160;<span id="projectnumber">beta</span>
+   </div>
+   <div id="projectbrief">Tree Interface for Making Binned Events with RDataFrame</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.13 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d6d9562795f317eab1196869323d45a8.html">TIMBER</a></li><li class="navelem"><a class="el" href="dir_16d9e443a39e4d4bfc6fd05dcfa96ec2.html">Framework</a></li><li class="navelem"><a class="el" href="dir_ac73f0278e065ab7918de78d30844c9a.html">include</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">JetSmearer.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">// Requires CMSSW</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="preprocessor">#include &lt;cstdlib&gt;</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="preprocessor">#include &lt;unistd.h&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="preprocessor">#include &lt;math.h&gt;</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment">// #include &quot;CondFormats/JetMETObjects/interface/JetResolutionObject.h&quot;</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment">// #include &quot;JetMETCorrections/Modules/interface/JetResolution.h&quot;</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="preprocessor">#include &lt;TRandom3.h&gt;</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="preprocessor">#include &lt;TFile.h&gt;</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="preprocessor">#include &lt;TF1.h&gt;</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="preprocessor">#include &lt;TString.h&gt;</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#include &lt;TSystem.h&gt;</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#include &lt;ROOT/RVec.hxx&gt;</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="preprocessor">#include &lt;Math/GenVector/LorentzVector.h&gt;</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;Math/GenVector/PtEtaPhiM4D.h&gt;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#include &lt;Math/Vector4Dfwd.h&gt;</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#include &quot;../include/Pythonic.h&quot;</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespace_r_o_o_t_1_1_vec_ops.html">ROOT::VecOps</a>;</div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="keyword">using</span> LorentzV = ROOT::Math::PtEtaPhiMVector;</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"><a class="line" href="class_jet_smearer.html">   23</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_jet_smearer.html">JetSmearer</a> {</div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;    <span class="keyword">private</span>:</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;        <span class="keyword">const</span> std::string jetType_;</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;        <span class="keyword">const</span> std::string jerTag_;</div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;        <span class="keyword">const</span> std::vector&lt;float&gt; jmrVals_;</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;        <span class="keyword">const</span> std::string timberPath_ = std::string(std::getenv(<span class="stringliteral">&quot;TIMBERPATH&quot;</span>));</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;        <span class="keyword">const</span> std::string jerInputArchivePath_ = timberPath_ + <span class="stringliteral">&quot;TIMBER/data/jme/&quot;</span>;</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;        TFile *puppiJMRFile_ = <span class="keyword">new</span> TFile(TString(timberPath_ + <span class="stringliteral">&quot;TIMBER/data/jme/puppiSoftdropResol.root&quot;</span>));</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;        TF1 *puppisd_resolution_cen = (TF1*)puppiJMRFile_-&gt;Get(<span class="stringliteral">&quot;massResolution_0eta1v3&quot;</span>);</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;        TF1 *puppisd_resolution_for = (TF1*)puppiJMRFile_-&gt;Get(<span class="stringliteral">&quot;massResolution_1v3eta2v5&quot;</span>);</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;        </div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;        TRandom3 rnd;</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;        std::string jerInputFileName_;</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;        std::string jerUncertaintyInputFileName_;</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;        <span class="keywordtype">char</span> *tempDir = mkdtemp(<span class="stringliteral">&quot;/tmp/jmeuntar/&quot;</span>);</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;        JME::JetParameters params_sf_and_uncertainty();</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;        JME::JetParameters params_resolution();</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;        </div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;        JME::JetResolution jer;</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;        JME::JetResolution jerSF;</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;    <span class="keyword">public</span>:</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;        <a class="code" href="class_jet_smearer.html">JetSmearer</a>(</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;            std::string jetType,</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;            std::string jetTag,</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;            std::vector&lt;float&gt; jmrVals);</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;        ~<a class="code" href="class_jet_smearer.html">JetSmearer</a>(){</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;            rmdir(tempDir);</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;        };</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;        RVec&lt;float&gt; GetSmearValsPt(LorentzV jet, LorentzV genJet, <span class="keywordtype">float</span> rho);</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;        RVec&lt;float&gt; GetSmearValsM(LorentzV jet, LorentzV genJet);</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;};</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;JetSmearer::JetSmearer(std::string jetType,</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;            std::string jerTag,</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;            std::vector&lt;float&gt; jmrVals) : </div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;            jetType_(jetType), jerTag_(jerTag),</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;            jmrVals_(jmrVals),</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;            jerInputFileName_(jerTag + <span class="stringliteral">&quot;_PtResolution_&quot;</span> + jetType + <span class="stringliteral">&quot;.txt&quot;</span>),</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;            jerUncertaintyInputFileName_(jerTag + <span class="stringliteral">&quot;_SF_&quot;</span> + jetType + <span class="stringliteral">&quot;.txt&quot;</span>) {</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;    Pythonic::Execute(std::string(<span class="stringliteral">&quot;tar -xzvf &quot;</span>+jerInputArchivePath_+<span class="stringliteral">&quot;/&quot;</span>+jerInputFileName_+<span class="stringliteral">&quot; -C &quot;</span>+tempDir));</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;    Pythonic::Execute(std::string(<span class="stringliteral">&quot;tar -xzvf &quot;</span>+jerInputArchivePath_+<span class="stringliteral">&quot;/&quot;</span>+jerUncertaintyInputFileName_+<span class="stringliteral">&quot; -C &quot;</span>+tempDir));</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;    rnd = TRandom3(12345); <span class="comment">// initialize random number generator</span></div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;                                 <span class="comment">// (needed for jet pT smearing)</span></div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;    </div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;    <span class="comment">// load libraries for accessing JER scale factors and uncertainties from txt files</span></div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;    <span class="comment">// NOTE: Not sure if this is still necessary but will try it</span></div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;    std::vector&lt;std::string&gt; libraries = {<span class="stringliteral">&quot;libCondFormatsJetMETObjects&quot;</span>, <span class="stringliteral">&quot;libPhysicsToolsNanoAODTools&quot;</span>};</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> ilib = 0; ilib &lt; libraries.size(); ilib++) {</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;       <span class="keywordflow">if</span> (Pythonic::InList(libraries[ilib],Pythonic::Split(gSystem-&gt;GetLibraries()))) {</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;            printf(<span class="stringliteral">&quot;Load Library &#39;%s&#39;&quot;</span>, libraries[ilib].c_str());</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;            gSystem-&gt;Load(TString(libraries[ilib]));</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;       }</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;    }         </div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;    printf(<span class="stringliteral">&quot;Loading jet energy resolutions (JER) from file &#39;%s/%s&#39;&quot;</span>,tempDir.c_str(),jerInputFileName_.c_str());</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;    jer = JetResolution(TString(tempDir+jerInputFileName_));</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;    </div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;    printf(<span class="stringliteral">&quot;Loading JER scale factors and uncertainties from file &#39;%s&#39;&quot;</span>,tempDir.c_str(),jerUncertaintyInputFileName_.c_str());</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;    jerSF = JetResolutionScaleFactor(TString(tempDir+jerUncertaintyInputFileName_));</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;}</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;</div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="class_jet_smearer.html#a2c0d63e784a2037d5f81d190b167e739">  107</a></span>&#160;RVec&lt;float&gt; <a class="code" href="class_jet_smearer.html#a2c0d63e784a2037d5f81d190b167e739">JetSmearer::GetSmearValsPt</a>(LorentzV jet, LorentzV genJet, <span class="keywordtype">float</span> rho) {</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;    RVec&lt;float&gt; out = {};</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;    <span class="keywordflow">if</span> (jet.Pt() &lt;= 0.){</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;        printf(<span class="stringliteral">&quot;WARNING: jet pT = %f !!&quot;</span>, jet.Pt());</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;        out = {1.,1.,1.};</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;    }</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;    <span class="keywordtype">int</span> central_or_shift;</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;    std::vector&lt;int&gt; variation_index = {0,2,1}; <span class="comment">// nom,up,down</span></div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;    std::map&lt;int, float&gt; jet_pt_sf_and_uncertainty = {};</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; 3; i++) {</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;        central_or_shift = variation_index[i];</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;        params_sf_and_uncertainty.setJetEta(jet.Eta());</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;        params_sf_and_uncertainty.setJetPt(jet.Pt());</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;        jet_pt_sf_and_uncertainty[central_or_shift] = </div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;            jerSF.getScaleFactor(params_sf_and_uncertainty, central_or_shift);</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;    }</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;    </div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;    std::map&lt;int, float&gt; smear_vals = {};</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;    <span class="keywordtype">float</span> jet_pt_resolution, smear_factor;</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;    <span class="keywordflow">if</span> (genJet) { <span class="comment">// Case 1</span></div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;        <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; 3; i++) {</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;            central_or_shift = variation_index[i];</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;            <span class="keywordtype">float</span> dPt = jet.Pt() - genJet.Pt();</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;            smear_factor = 1. + (jet_pt_sf_and_uncertainty[central_or_shift] - 1.) * dPt /  jet.Pt();</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;            smear_vals[central_or_shift] = smear_factor;</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;        }</div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;    } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;        params_resolution.setJetPt(jet.Pt());</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;        params_resolution.setJetEta(jet.Eta());</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;        params_resolution.setRho(rho);</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;        jet_pt_resolution = jer.getResolution(params_resolution);</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;        <span class="keywordtype">float</span> rand = rnd.Gaus(0, jet_pt_resolution);</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;        <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; 3; i++) {</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;            central_or_shift = variation_index[i];</div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;            <span class="keywordflow">if</span> (jet_pt_sf_and_uncertainty[central_or_shift] &gt; 1.){ <span class="comment">// Case 2</span></div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;                smear_factor =</div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;                    1. + rand * sqrt( pow(jet_pt_sf_and_uncertainty[central_or_shift],2) - 1.);</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;            } <span class="keywordflow">else</span> { <span class="comment">// Case 3</span></div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;                smear_factor = 1.;</div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;            }</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;            smear_vals[central_or_shift] = smear_factor;</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;        }</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;    }</div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;    <span class="comment">// check that smeared jet energy remains positive, as the direction of</span></div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;    <span class="comment">// the jet would change (&quot;flip&quot;) otherwise - and this is not what we want</span></div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; 3; i++) {</div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;        central_or_shift = variation_index[i];</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;        <span class="keywordflow">if</span> (smear_vals[central_or_shift] * jet.E() &lt; 1.e-2){</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;            smear_vals[central_or_shift] = 1.e-2 / jet.E();</div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;        }</div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;        out.push_back(smear_vals[central_or_shift]);</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;    }</div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;    <span class="keywordflow">return</span> out;</div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;}</div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;</div><div class="line"><a name="l00188"></a><span class="lineno"><a class="line" href="class_jet_smearer.html#a5bc3a0baca6e3017f96619eeab7a04f9">  188</a></span>&#160;RVec&lt;float&gt; <a class="code" href="class_jet_smearer.html#a5bc3a0baca6e3017f96619eeab7a04f9">JetSmearer::GetSmearValsM</a>(LorentzV jet, LorentzV genJet){</div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;    RVec&lt;float&gt; out = {};</div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;    <span class="keywordflow">if</span> (jet.M() &lt;= 0.){</div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;        printf(<span class="stringliteral">&quot;WARNING: jet m = %f !!&quot;</span>, jet.M());</div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;        out = {1.,1.,1.};</div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;    }</div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;</div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;    <span class="keywordtype">int</span> central_or_shift;</div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;    std::vector&lt;int&gt; variation_index = {0,2,1}; <span class="comment">// nom,up,down</span></div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;    std::map&lt;int, float&gt; jet_m_sf_and_uncertainty = {</div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;        {0, jmrVals_[0]},</div><div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;        {1, jmrVals_[1]},</div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;        {2, jmrVals_[2]}</div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;    };</div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;    </div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;    std::map&lt;int, float&gt; smear_vals = {};</div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;    <span class="keywordtype">float</span> jet_pt_resolution, smear_factor;</div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;</div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;    <span class="keywordflow">if</span> (genJet) { <span class="comment">// Case 1</span></div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;        <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; 3; i++) {</div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;            central_or_shift = variation_index[i];</div><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;            <span class="keywordtype">float</span> dM = jet.M() - genJet.M();</div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;            smear_factor =</div><div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;                1. + jet_m_sf_and_uncertainty[central_or_shift] - 1. * dM / jet.M();</div><div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;        }</div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;    } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;        <span class="keywordtype">float</span> jet_m_resolution;</div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;        <span class="keywordflow">if</span> (abs(jet.Eta()) &lt;= 1.3) {</div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;            jet_m_resolution = puppisd_resolution_cen-&gt;Eval(jet.Pt());</div><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;        } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;            jet_m_resolution = puppisd_resolution_for-&gt;Eval(jet.Pt());</div><div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;        }</div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;</div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;        <span class="keywordtype">float</span> rand = rnd.Gaus(0, jet_m_resolution);</div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;        <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; 3; i++) {</div><div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;            central_or_shift = variation_index[i];</div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;            <span class="keywordflow">if</span> (jet_m_sf_and_uncertainty[central_or_shift] &gt; 1.){ <span class="comment">// Case 2</span></div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;                smear_factor =</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;                    rand * sqrt(pow(jet_m_sf_and_uncertainty[central_or_shift],2) - 1.);</div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;            } <span class="keywordflow">else</span> { <span class="comment">// Case 3</span></div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;                smear_factor = 1.;</div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;            }</div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;        }</div><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;    }</div><div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;</div><div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;    <span class="comment">// check that smeared jet energy remains positive, as the direction of</span></div><div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;    <span class="comment">// the jet would change (&quot;flip&quot;) otherwise - and this is not what we want</span></div><div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; 3; i++) {</div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;        central_or_shift = variation_index[i];</div><div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;        <span class="keywordflow">if</span> (smear_vals[central_or_shift] * jet.M() &lt; 1.e-2){</div><div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;            smear_vals[central_or_shift] = 1.e-2;</div><div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;        }</div><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;        out.push_back(smear_vals[central_or_shift]);</div><div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;    }</div><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;    <span class="keywordflow">return</span> out;</div><div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;}</div><div class="ttc" id="class_jet_smearer_html_a2c0d63e784a2037d5f81d190b167e739"><div class="ttname"><a href="class_jet_smearer.html#a2c0d63e784a2037d5f81d190b167e739">JetSmearer::GetSmearValsPt</a></div><div class="ttdeci">RVec&lt; float &gt; GetSmearValsPt(LorentzV jet, LorentzV genJet, float rho)</div><div class="ttdoc">CV: Smear jet pT to account for measured difference in JER between data and simulation. The function computes the nominal smeared jet pT simultaneously with the JER up and down shifts, in order to use the same random number to smear all three (for consistency reasons). </div><div class="ttdef"><b>Definition:</b> JetSmearer.h:107</div></div>
+<div class="ttc" id="namespace_r_o_o_t_1_1_vec_ops_html"><div class="ttname"><a href="namespace_r_o_o_t_1_1_vec_ops.html">VecOps</a></div></div>
+<div class="ttc" id="class_jet_smearer_html"><div class="ttname"><a href="class_jet_smearer.html">JetSmearer</a></div><div class="ttdef"><b>Definition:</b> JetSmearer.h:23</div></div>
+<div class="ttc" id="class_jet_smearer_html_a5bc3a0baca6e3017f96619eeab7a04f9"><div class="ttname"><a href="class_jet_smearer.html#a5bc3a0baca6e3017f96619eeab7a04f9">JetSmearer::GetSmearValsM</a></div><div class="ttdeci">RVec&lt; float &gt; GetSmearValsM(LorentzV jet, LorentzV genJet)</div><div class="ttdoc">Smear jet m to account for measured difference in JMR between data and simulation. The function computes the nominal smeared jet m simultaneously with the JMR up and down shifts, in order to use the same random number to smear all three (for consistency reasons). </div><div class="ttdef"><b>Definition:</b> JetSmearer.h:188</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.13
+</small></address>
+</body>
+</html>
diff --git a/docs/_lumi_filter_8h_source.html b/docs/_lumi_filter_8h_source.html
index bb69d8a6eec1a06b36672e9d471d702c5af4fe29..6c89ba1ad25ae9e9e78e38802ffaef3bb3711329 100644
--- a/docs/_lumi_filter_8h_source.html
+++ b/docs/_lumi_filter_8h_source.html
@@ -76,9 +76,9 @@ $(function() {
 <div class="title">LumiFilter.h</div>  </div>
 </div><!--header-->
 <div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="preprocessor">#include &lt;boost/property_tree/ptree.hpp&gt;</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="preprocessor">#include &lt;boost/property_tree/json_parser.hpp&gt;</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="preprocessor">#include &lt;algorithm&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="preprocessor">#include &lt;iostream&gt;</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="preprocessor">#include &quot;TIMBER/Framework/include/Pythonic.h&quot;</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;</div><div class="line"><a name="l00014"></a><span class="lineno"><a class="line" href="class_lumi_filter.html">   14</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_lumi_filter.html">LumiFilter</a> {</div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;    <span class="keyword">private</span>:</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;        boost::property_tree::ptree ptree;</div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;        <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> lumStart;</div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;        <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> lumEnd;</div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;    <span class="keyword">public</span>:</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;        <a class="code" href="class_lumi_filter.html#a22f8121062d7d9ad202974dfb5d22f6f">LumiFilter</a>(std::string filename);</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;        <a class="code" href="class_lumi_filter.html#a22f8121062d7d9ad202974dfb5d22f6f">LumiFilter</a>(<span class="keywordtype">int</span> year);</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;        ~<a class="code" href="class_lumi_filter.html">LumiFilter</a>();</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;        <span class="keywordtype">bool</span> <a class="code" href="class_lumi_filter.html#ab3e31a13fec5b494c562c002e18faa7d">eval</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> run, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> lumi);</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;};</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="class_lumi_filter.html#a22f8121062d7d9ad202974dfb5d22f6f">   46</a></span>&#160;<a class="code" href="class_lumi_filter.html#a22f8121062d7d9ad202974dfb5d22f6f">LumiFilter::LumiFilter</a>(std::string filename) {</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;    boost::property_tree::read_json(filename, ptree);</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;}</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="class_lumi_filter.html#a1cc0f25a2b925ba83e4b27c86965a065">   50</a></span>&#160;<a class="code" href="class_lumi_filter.html#a22f8121062d7d9ad202974dfb5d22f6f">LumiFilter::LumiFilter</a>(<span class="keywordtype">int</span> year){</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;    <span class="keywordflow">if</span> (year == 17 or year == 2017) {</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;        boost::property_tree::read_json(std::getenv(<span class="stringliteral">&quot;TIMBERPATH&quot;</span>)+std::string(<span class="stringliteral">&quot;TIMBER/data/LumiJSON/Cert_294927-306462_13TeV_EOY2017ReReco_Collisions17_JSON.txt&quot;</span>), ptree);</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;    } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (year == 18 or year == 2018) {</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;        boost::property_tree::read_json(std::getenv(<span class="stringliteral">&quot;TIMBERPATH&quot;</span>)+std::string(<span class="stringliteral">&quot;TIMBER/data/LumiJSON/Cert_314472-325175_13TeV_17SeptEarlyReReco2018ABC_PromptEraD_Collisions18_JSON.txt&quot;</span>), ptree);</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;    } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;        std::cout &lt;&lt; <span class="stringliteral">&quot;Year &quot;</span> &lt;&lt; year &lt;&lt; <span class="stringliteral">&quot; not supported by LumiFilter&quot;</span> &lt;&lt; std::endl;</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;        <span class="keywordflow">throw</span>;</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;    }</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;}</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;LumiFilter::~LumiFilter() {</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;}</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="class_lumi_filter.html#ab3e31a13fec5b494c562c002e18faa7d">   64</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="class_lumi_filter.html#ab3e31a13fec5b494c562c002e18faa7d">LumiFilter::eval</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> run, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> lumi) {</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;    <span class="keywordtype">bool</span> out = <span class="keyword">false</span>;</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;    <span class="keywordflow">for</span> ( <span class="keyword">const</span> <span class="keyword">auto</span>&amp; runEntry : ptree ) {</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;        <span class="keywordflow">if</span> (std::stoul(runEntry.first) == run) {</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;            <span class="keywordflow">for</span> ( <span class="keyword">const</span> <span class="keyword">auto</span>&amp; lrEntry : runEntry.second ) {</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;                <span class="keyword">const</span> <span class="keyword">auto</span> lrNd = lrEntry.second;</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;                lumStart = std::stoul(lrNd.begin()-&gt;second.data());</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;                lumEnd = std::stoul((++lrNd.begin())-&gt;second.data());</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;                <span class="keywordflow">if</span> ((lumi &lt; lumEnd) &amp;&amp; (lumi &gt; lumStart)) {</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;                    out = <span class="keyword">true</span>;</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;                }</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;            }</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;        }</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;    }</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;    <span class="keywordflow">return</span> out;</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;}</div><div class="ttc" id="class_lumi_filter_html_ab3e31a13fec5b494c562c002e18faa7d"><div class="ttname"><a href="class_lumi_filter.html#ab3e31a13fec5b494c562c002e18faa7d">LumiFilter::eval</a></div><div class="ttdeci">bool eval(unsigned int run, unsigned int lumi)</div><div class="ttdoc">Evaluate whether the given run and lumi pass the luminosity JSON filter. </div><div class="ttdef"><b>Definition:</b> LumiFilter.h:64</div></div>
-<div class="ttc" id="class_lumi_filter_html_a22f8121062d7d9ad202974dfb5d22f6f"><div class="ttname"><a href="class_lumi_filter.html#a22f8121062d7d9ad202974dfb5d22f6f">LumiFilter::LumiFilter</a></div><div class="ttdeci">LumiFilter(std::string filename)</div><div class="ttdoc">Construct a new Lumi Filter object with a custom json file name. </div><div class="ttdef"><b>Definition:</b> LumiFilter.h:46</div></div>
-<div class="ttc" id="class_lumi_filter_html"><div class="ttname"><a href="class_lumi_filter.html">LumiFilter</a></div><div class="ttdoc">Tool to filter luminosity block/run based on golden JSONs. Golden JSONs are provided in TIMBER but a ...</div><div class="ttdef"><b>Definition:</b> LumiFilter.h:14</div></div>
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="preprocessor">#include &lt;boost/property_tree/ptree.hpp&gt;</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="preprocessor">#include &lt;boost/property_tree/json_parser.hpp&gt;</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="preprocessor">#include &lt;algorithm&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="preprocessor">#include &lt;iostream&gt;</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"><a class="line" href="class_lumi_filter.html">   13</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_lumi_filter.html">LumiFilter</a> {</div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;    <span class="keyword">private</span>:</div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;        boost::property_tree::ptree ptree;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;        <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> lumStart;</div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;        <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> lumEnd;</div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;</div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;    <span class="keyword">public</span>:</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;        <a class="code" href="class_lumi_filter.html#a22f8121062d7d9ad202974dfb5d22f6f">LumiFilter</a>(std::string filename);</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;        <a class="code" href="class_lumi_filter.html#a22f8121062d7d9ad202974dfb5d22f6f">LumiFilter</a>(<span class="keywordtype">int</span> year);</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;        ~<a class="code" href="class_lumi_filter.html">LumiFilter</a>();</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;        <span class="keywordtype">bool</span> <a class="code" href="class_lumi_filter.html#ab3e31a13fec5b494c562c002e18faa7d">eval</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> run, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> lumi);</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;};</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="class_lumi_filter.html#a22f8121062d7d9ad202974dfb5d22f6f">   45</a></span>&#160;<a class="code" href="class_lumi_filter.html#a22f8121062d7d9ad202974dfb5d22f6f">LumiFilter::LumiFilter</a>(std::string filename) {</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;    boost::property_tree::read_json(filename, ptree);</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;}</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="class_lumi_filter.html#a1cc0f25a2b925ba83e4b27c86965a065">   49</a></span>&#160;<a class="code" href="class_lumi_filter.html#a22f8121062d7d9ad202974dfb5d22f6f">LumiFilter::LumiFilter</a>(<span class="keywordtype">int</span> year){</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;    <span class="keywordflow">if</span> (year == 17 or year == 2017) {</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;        boost::property_tree::read_json(std::getenv(<span class="stringliteral">&quot;TIMBERPATH&quot;</span>)+std::string(<span class="stringliteral">&quot;TIMBER/data/LumiJSON/Cert_294927-306462_13TeV_EOY2017ReReco_Collisions17_JSON.txt&quot;</span>), ptree);</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;    } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (year == 18 or year == 2018) {</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;        boost::property_tree::read_json(std::getenv(<span class="stringliteral">&quot;TIMBERPATH&quot;</span>)+std::string(<span class="stringliteral">&quot;TIMBER/data/LumiJSON/Cert_314472-325175_13TeV_17SeptEarlyReReco2018ABC_PromptEraD_Collisions18_JSON.txt&quot;</span>), ptree);</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;    } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;        std::cout &lt;&lt; <span class="stringliteral">&quot;Year &quot;</span> &lt;&lt; year &lt;&lt; <span class="stringliteral">&quot; not supported by LumiFilter&quot;</span> &lt;&lt; std::endl;</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;        <span class="keywordflow">throw</span>;</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;    }</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;}</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;LumiFilter::~LumiFilter() {</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;}</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="class_lumi_filter.html#ab3e31a13fec5b494c562c002e18faa7d">   63</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="class_lumi_filter.html#ab3e31a13fec5b494c562c002e18faa7d">LumiFilter::eval</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> run, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> lumi) {</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;    <span class="keywordtype">bool</span> out = <span class="keyword">false</span>;</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;    <span class="keywordflow">for</span> ( <span class="keyword">const</span> <span class="keyword">auto</span>&amp; runEntry : ptree ) {</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;        <span class="keywordflow">if</span> (std::stoul(runEntry.first) == run) {</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;            <span class="keywordflow">for</span> ( <span class="keyword">const</span> <span class="keyword">auto</span>&amp; lrEntry : runEntry.second ) {</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;                <span class="keyword">const</span> <span class="keyword">auto</span> lrNd = lrEntry.second;</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;                lumStart = std::stoul(lrNd.begin()-&gt;second.data());</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;                lumEnd = std::stoul((++lrNd.begin())-&gt;second.data());</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;                <span class="keywordflow">if</span> ((lumi &lt; lumEnd) &amp;&amp; (lumi &gt; lumStart)) {</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;                    out = <span class="keyword">true</span>;</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;                }</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;            }</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;        }</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;    }</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;    <span class="keywordflow">return</span> out;</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;}</div><div class="ttc" id="class_lumi_filter_html_ab3e31a13fec5b494c562c002e18faa7d"><div class="ttname"><a href="class_lumi_filter.html#ab3e31a13fec5b494c562c002e18faa7d">LumiFilter::eval</a></div><div class="ttdeci">bool eval(unsigned int run, unsigned int lumi)</div><div class="ttdoc">Evaluate whether the given run and lumi pass the luminosity JSON filter. </div><div class="ttdef"><b>Definition:</b> LumiFilter.h:63</div></div>
+<div class="ttc" id="class_lumi_filter_html_a22f8121062d7d9ad202974dfb5d22f6f"><div class="ttname"><a href="class_lumi_filter.html#a22f8121062d7d9ad202974dfb5d22f6f">LumiFilter::LumiFilter</a></div><div class="ttdeci">LumiFilter(std::string filename)</div><div class="ttdoc">Construct a new Lumi Filter object with a custom json file name. </div><div class="ttdef"><b>Definition:</b> LumiFilter.h:45</div></div>
+<div class="ttc" id="class_lumi_filter_html"><div class="ttname"><a href="class_lumi_filter.html">LumiFilter</a></div><div class="ttdoc">Tool to filter luminosity block/run based on golden JSONs. Golden JSONs are provided in TIMBER but a ...</div><div class="ttdef"><b>Definition:</b> LumiFilter.h:13</div></div>
 </div><!-- fragment --></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/_pythonic_8h_source.html b/docs/_pythonic_8h_source.html
index 43493a1de274161e56cfa9a3a96067d65deb1f00..8c24d34e3aaaa2bdb8c8a46a6b2eb631728f335a 100644
--- a/docs/_pythonic_8h_source.html
+++ b/docs/_pythonic_8h_source.html
@@ -76,7 +76,8 @@ $(function() {
 <div class="title">Pythonic.h</div>  </div>
 </div><!--header-->
 <div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="preprocessor">#include &lt;sstream&gt;</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="preprocessor">#include &lt;algorithm&gt;</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="preprocessor">#include &lt;iterator&gt;</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="preprocessor">#include &lt;stdexcept&gt;</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> IntType&gt;</div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;std::vector&lt;IntType&gt; range(IntType start, IntType stop, IntType step)</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;{</div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;  <span class="keywordflow">if</span> (step == IntType(0))</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;  {</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;    <span class="keywordflow">throw</span> std::invalid_argument(<span class="stringliteral">&quot;step for range must be non-zero&quot;</span>);</div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;  }</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;  std::vector&lt;IntType&gt; result;</div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;  IntType i = start;</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;  <span class="keywordflow">while</span> ((step &gt; 0) ? (i &lt; stop) : (i &gt; stop))</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;  {</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;    result.push_back(i);</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;    i += step;</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;  }</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;}</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> IntType&gt;</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;std::vector&lt;IntType&gt; range(IntType start, IntType stop)</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;{</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;  <span class="keywordflow">return</span> range(start, stop, IntType(1));</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;}</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> IntType&gt;</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;std::vector&lt;IntType&gt; range(IntType stop)</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;{</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;  <span class="keywordflow">return</span> range(IntType(0), stop, IntType(1));</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;}</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;std::vector&lt;std::string&gt; split(<span class="keyword">const</span> std::string&amp; str, <span class="keywordtype">char</span> delim = <span class="charliteral">&#39; &#39;</span>) {</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;    std::vector&lt;std::string&gt; out {};</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;    std::stringstream ss(str);</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;    std::string token;</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;    <span class="keywordflow">while</span> (std::getline(ss, token, delim)) {</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;        out.push_back(token);</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;    }</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;    <span class="keywordflow">return</span> out;</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;}</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;<span class="comment">// Personal</span></div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;<span class="comment"></span><span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;<span class="keywordtype">bool</span> InList(T obj, std::vector&lt;T&gt; list) {</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;    <span class="keywordtype">bool</span> out;</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;    <span class="keyword">auto</span> pos = std::find(std::begin(list), std::end(list), obj);</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;    <span class="keywordflow">if</span> (pos != std::end(list)){</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;        out = <span class="keyword">true</span>;</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;    } <span class="keywordflow">else</span> {out = <span class="keyword">false</span>;}</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;    <span class="keywordflow">return</span> out;</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;}</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;<span class="keywordtype">bool</span> InString(std::string sub, std::string main) {</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;    <span class="keywordtype">bool</span> out;</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;    <span class="keyword">auto</span> found = main.find(sub);</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;    <span class="keywordflow">if</span> (found != std::string::npos){</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;        out = <span class="keyword">true</span>;</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;    } <span class="keywordflow">else</span> {out = <span class="keyword">false</span>;}</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;    <span class="keywordflow">return</span> out;</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;}</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;<span class="keywordtype">void</span> Extend(std::vector&lt;T&gt; base, std::vector&lt;T&gt; extension) {</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; extension.size(); i++) {</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;        base.push_back(extension.at(i));</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;    }</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;}</div></div><!-- fragment --></div><!-- contents -->
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="preprocessor">#ifndef _TIMBER_PYTHONIC</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="preprocessor">#define _TIMBER_PYTHONIC</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="preprocessor">#include &lt;sstream&gt;</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="preprocessor">#include &lt;algorithm&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="preprocessor">#include &lt;iterator&gt;</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="preprocessor">#include &lt;stdexcept&gt;</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="preprocessor">#ifndef _STRUCT_TIMESPEC</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="preprocessor">#define _STRUCT_TIMESPEC</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="preprocessor">#include &lt;sys/stat.h&gt;</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;</div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespace_pythonic.html">Pythonic</a> {</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;    <span class="keyword">template</span> &lt;<span class="keyword">typename</span> IntType&gt;</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;    std::vector&lt;IntType&gt; Range(IntType start, IntType stop, IntType step) {</div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;        <span class="keywordflow">if</span> (step == IntType(0)) {</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;            <span class="keywordflow">throw</span> std::invalid_argument(<span class="stringliteral">&quot;step for range must be non-zero&quot;</span>);</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;        }</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;        std::vector&lt;IntType&gt; result;</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;        IntType i = start;</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;        <span class="keywordflow">while</span> ((step &gt; 0) ? (i &lt; stop) : (i &gt; stop)) {</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;            result.push_back(i);</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;            i += step;</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;        }</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;        <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;    }</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;    <span class="keyword">template</span> &lt;<span class="keyword">typename</span> IntType&gt;</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;    std::vector&lt;IntType&gt; Range(IntType start, IntType stop) {</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;        <span class="keywordflow">return</span> Range(start, stop, IntType(1));</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;    }</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;    <span class="keyword">template</span> &lt;<span class="keyword">typename</span> IntType&gt;</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;    std::vector&lt;IntType&gt; Range(IntType stop) {</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;        <span class="keywordflow">return</span> Range(IntType(0), stop, IntType(1));</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;    }</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;    std::vector&lt;std::string&gt; Split(<span class="keyword">const</span> std::string&amp; str, <span class="keywordtype">char</span> delim = <span class="charliteral">&#39; &#39;</span>) {</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;        std::vector&lt;std::string&gt; out {};</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;        std::stringstream ss(str);</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;        std::string token;</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;        <span class="keywordflow">while</span> (std::getline(ss, token, delim)) {</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;            out.push_back(token);</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;        }</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;        <span class="keywordflow">return</span> out;</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;    }</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;    <span class="comment">// Personal</span></div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;<span class="comment"></span>    <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;    <span class="keywordtype">bool</span> InList(T obj, std::vector&lt;T&gt; list) {</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;        <span class="keywordtype">bool</span> out;</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;        <span class="keyword">auto</span> pos = std::find(std::begin(list), std::end(list), obj);</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;        <span class="keywordflow">if</span> (pos != std::end(list)){</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;            out = <span class="keyword">true</span>;</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;        } <span class="keywordflow">else</span> {out = <span class="keyword">false</span>;}</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;        <span class="keywordflow">return</span> out;</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;    }</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;    <span class="keywordtype">bool</span> InString(std::string sub, std::string main) {</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;        <span class="keywordtype">bool</span> out;</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;        <span class="keyword">auto</span> found = main.find(sub);</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;        <span class="keywordflow">if</span> (found != std::string::npos){</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;            out = <span class="keyword">true</span>;</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;        } <span class="keywordflow">else</span> {out = <span class="keyword">false</span>;}</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;        <span class="keywordflow">return</span> out;</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;    }</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;    <span class="keywordtype">void</span> Extend(std::vector&lt;T&gt; base, std::vector&lt;T&gt; extension) {</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;        <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; extension.size(); i++) {</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;            base.push_back(extension.at(i));</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;        }</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;    }</div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;    <span class="keywordtype">bool</span> IsDir(<span class="keywordtype">char</span>* dirname) {</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;        <span class="keyword">struct </span>stat sb;</div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;        <span class="keywordtype">bool</span> exists;</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;</div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;        <span class="keywordflow">if</span> (stat(dirname, &amp;sb) == 0 &amp;&amp; S_ISDIR(sb.st_mode)) {</div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;            exists = <span class="keyword">true</span>;</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;        } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;            exists = <span class="keyword">false</span>;</div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;        }</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;        <span class="keywordflow">return</span> exists;</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;    }</div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;    <span class="keywordtype">void</span> Execute(std::string cmd) {</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;        printf(<span class="stringliteral">&quot;Executing: %s&quot;</span>,cmd.c_str());</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;        std::system(cmd.c_str());</div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;    }</div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;}</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;<span class="preprocessor">#endif</span></div><div class="ttc" id="namespace_pythonic_html"><div class="ttname"><a href="namespace_pythonic.html">Pythonic</a></div><div class="ttdef"><b>Definition:</b> Pythonic.h:14</div></div>
+</div><!-- fragment --></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
 Generated by &#160;<a href="http://www.doxygen.org/index.html">
diff --git a/docs/annotated.html b/docs/annotated.html
index 36e412f8dd10177af06a4e799c8c59ce8f950c8c..be2390f5818bb0c1c4a73a94d80e78913eb825a9 100644
--- a/docs/annotated.html
+++ b/docs/annotated.html
@@ -84,15 +84,18 @@ $(function() {
 <tr id="row_0_0_5_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html" target="_self">Node</a></td><td class="desc">Class to represent nodes in the DataFrame processing graph </td></tr>
 <tr id="row_0_0_6_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_var_group.html" target="_self">VarGroup</a></td><td class="desc">Stores Define actions </td></tr>
 <tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_collection.html" target="_self">Collection</a></td><td class="desc">Structure to store maps of the various types of objects in a collection. UChar not considered. Use by building each map as &lt;branchName, branchValue&gt; and then assigning to the correct struct member </td></tr>
-<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_gen_particle_objs.html" target="_self">GenParticleObjs</a></td><td class="desc">Object that stores and manipulates the information for gen particles. Stores all gen particles in the event and member functions can be used to access the gen particles by index </td></tr>
-<tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_gen_particle_tree.html" target="_self">GenParticleTree</a></td><td class="desc">Constructs tree by adding particles. Establish relationships between particles (parent, child) and allows you to search for a chain of decays </td></tr>
-<tr id="row_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_hist_loader.html" target="_self">HistLoader</a></td><td class="desc">Generic histogram loader with methods to return bin values </td></tr>
-<tr id="row_5_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_lumi_filter.html" target="_self">LumiFilter</a></td><td class="desc">Tool to filter luminosity block/run based on golden JSONs. Golden JSONs are provided in TIMBER but a custom one can be provided </td></tr>
-<tr id="row_6_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_particle.html" target="_self">Particle</a></td><td class="desc">Stores identifying features of a particle in the GenPart collection </td></tr>
-<tr id="row_7_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_p_d_fweight__uncert.html" target="_self">PDFweight_uncert</a></td><td class="desc">PDF weight uncertainty lookup class </td></tr>
-<tr id="row_8_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_s_j_btag___s_f.html" target="_self">SJBtag_SF</a></td><td class="desc">Subjet b tagging scale factor lookup </td></tr>
-<tr id="row_9_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_top_pt__weight.html" target="_self">TopPt_weight</a></td><td class="desc">Handles the top \(p_T\) reweighting value for \(t\bar{t}\) simulation based on doing gen particle matching. The weight is calculated as </td></tr>
-<tr id="row_10_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_trigger__weight.html" target="_self">Trigger_weight</a></td><td class="desc">Specializes in the construction of trigger efficiency weights. Uncertainties are calculated as one half of the trigger inefficiency (ie. (1-eff)/2) </td></tr>
+<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_eff_loader.html" target="_self">EffLoader</a></td><td class="desc">Generic histogram loader with methods to return bin values </td></tr>
+<tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfat_jet_uncertainties.html" target="_self">fatJetUncertainties</a></td><td class="desc"></td></tr>
+<tr id="row_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_gen_particle_objs.html" target="_self">GenParticleObjs</a></td><td class="desc">Object that stores and manipulates the information for gen particles. Stores all gen particles in the event and member functions can be used to access the gen particles by index </td></tr>
+<tr id="row_5_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_gen_particle_tree.html" target="_self">GenParticleTree</a></td><td class="desc">Constructs tree by adding particles. Establish relationships between particles (parent, child) and allows you to search for a chain of decays </td></tr>
+<tr id="row_6_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_hist_loader.html" target="_self">HistLoader</a></td><td class="desc">Generic histogram loader with methods to return bin values </td></tr>
+<tr id="row_7_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_jet_smearer.html" target="_self">JetSmearer</a></td><td class="desc"></td></tr>
+<tr id="row_8_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_lumi_filter.html" target="_self">LumiFilter</a></td><td class="desc">Tool to filter luminosity block/run based on golden JSONs. Golden JSONs are provided in TIMBER but a custom one can be provided </td></tr>
+<tr id="row_9_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_particle.html" target="_self">Particle</a></td><td class="desc">Stores identifying features of a particle in the GenPart collection </td></tr>
+<tr id="row_10_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_p_d_fweight__uncert.html" target="_self">PDFweight_uncert</a></td><td class="desc">PDF weight uncertainty lookup class </td></tr>
+<tr id="row_11_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_s_j_btag___s_f.html" target="_self">SJBtag_SF</a></td><td class="desc">Subjet b tagging scale factor lookup </td></tr>
+<tr id="row_12_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_top_pt__weight.html" target="_self">TopPt_weight</a></td><td class="desc">Handles the top \(p_T\) reweighting value for \(t\bar{t}\) simulation based on doing gen particle matching. The weight is calculated as </td></tr>
+<tr id="row_13_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_trigger__weight.html" target="_self">Trigger_weight</a></td><td class="desc">Specializes in the construction of trigger efficiency weights. Uncertainties are calculated as one half of the trigger inefficiency (ie. (1-eff)/2) </td></tr>
 </table>
 </div><!-- directory -->
 </div><!-- contents -->
diff --git a/docs/class_eff_loader-members.html b/docs/class_eff_loader-members.html
new file mode 100644
index 0000000000000000000000000000000000000000..73bdb044bdf6453a373c52ee374242b27d635efe
--- /dev/null
+++ b/docs/class_eff_loader-members.html
@@ -0,0 +1,91 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>TIMBER: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+  MathJax.Hub.Config({
+    extensions: ["tex2jax.js"],
+    jax: ["input/TeX","output/HTML-CSS"],
+});
+</script><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="doxygen-styles.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectlogo"><img alt="Logo" src="logo_small.png"/></td>
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">TIMBER
+   &#160;<span id="projectnumber">beta</span>
+   </div>
+   <div id="projectbrief">Tree Interface for Making Binned Events with RDataFrame</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.13 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">EffLoader Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="class_eff_loader.html">EffLoader</a>, including all inherited members.</p>
+<table class="directory">
+  <tr class="even"><td class="entry"><a class="el" href="class_eff_loader.html#af839abf1fc3ac508b0dc8fbc187d6690">EffLoader</a>()</td><td class="entry"><a class="el" href="class_eff_loader.html">EffLoader</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="class_eff_loader.html#ae7501000359cccbe0c5a912b9dffa239">EffLoader</a>(std::string filename, std::string histname)</td><td class="entry"><a class="el" href="class_eff_loader.html">EffLoader</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_eff_loader.html#a3dfc7ef86f8106535b10cbbe000318b0">eval</a>(float xval, float yval=0, float zval=0)</td><td class="entry"><a class="el" href="class_eff_loader.html">EffLoader</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="class_eff_loader.html#a2acf43283607d1bd97a4fa685a3f48b5">eval_bybin</a>(int binx, int biny=0, int binz=0)</td><td class="entry"><a class="el" href="class_eff_loader.html">EffLoader</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_eff_loader.html#a3afbe21ea66123f16e08b2718b017535">eval_byglobal</a>(int globalbin)</td><td class="entry"><a class="el" href="class_eff_loader.html">EffLoader</a></td><td class="entry"></td></tr>
+</table></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.13
+</small></address>
+</body>
+</html>
diff --git a/docs/class_eff_loader.html b/docs/class_eff_loader.html
new file mode 100644
index 0000000000000000000000000000000000000000..7af35a16a57f80a7dfefe3ec4d94063711f3ac37
--- /dev/null
+++ b/docs/class_eff_loader.html
@@ -0,0 +1,270 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>TIMBER: EffLoader Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+  MathJax.Hub.Config({
+    extensions: ["tex2jax.js"],
+    jax: ["input/TeX","output/HTML-CSS"],
+});
+</script><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="doxygen-styles.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectlogo"><img alt="Logo" src="logo_small.png"/></td>
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">TIMBER
+   &#160;<span id="projectnumber">beta</span>
+   </div>
+   <div id="projectbrief">Tree Interface for Making Binned Events with RDataFrame</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.13 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="class_eff_loader-members.html">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">EffLoader Class Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Generic histogram loader with methods to return bin values.  
+ <a href="class_eff_loader.html#details">More...</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:af839abf1fc3ac508b0dc8fbc187d6690"><td class="memItemLeft" align="right" valign="top"><a id="af839abf1fc3ac508b0dc8fbc187d6690"></a>
+&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_eff_loader.html#af839abf1fc3ac508b0dc8fbc187d6690">EffLoader</a> ()</td></tr>
+<tr class="memdesc:af839abf1fc3ac508b0dc8fbc187d6690"><td class="mdescLeft">&#160;</td><td class="mdescRight">Empty constructor. <br /></td></tr>
+<tr class="separator:af839abf1fc3ac508b0dc8fbc187d6690"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae7501000359cccbe0c5a912b9dffa239"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_eff_loader.html#ae7501000359cccbe0c5a912b9dffa239">EffLoader</a> (std::string filename, std::string histname)</td></tr>
+<tr class="memdesc:ae7501000359cccbe0c5a912b9dffa239"><td class="mdescLeft">&#160;</td><td class="mdescRight">Construct a new <a class="el" href="class_eff_loader.html" title="Generic histogram loader with methods to return bin values. ">EffLoader</a> object.  <a href="#ae7501000359cccbe0c5a912b9dffa239">More...</a><br /></td></tr>
+<tr class="separator:ae7501000359cccbe0c5a912b9dffa239"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3afbe21ea66123f16e08b2718b017535"><td class="memItemLeft" align="right" valign="top">std::vector&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_eff_loader.html#a3afbe21ea66123f16e08b2718b017535">eval_byglobal</a> (int globalbin)</td></tr>
+<tr class="memdesc:a3afbe21ea66123f16e08b2718b017535"><td class="mdescLeft">&#160;</td><td class="mdescRight">Evaluate by global bin number.  <a href="#a3afbe21ea66123f16e08b2718b017535">More...</a><br /></td></tr>
+<tr class="separator:a3afbe21ea66123f16e08b2718b017535"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2acf43283607d1bd97a4fa685a3f48b5"><td class="memItemLeft" align="right" valign="top">std::vector&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_eff_loader.html#a2acf43283607d1bd97a4fa685a3f48b5">eval_bybin</a> (int binx, int biny=0, int binz=0)</td></tr>
+<tr class="memdesc:a2acf43283607d1bd97a4fa685a3f48b5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Evaluate by per-axis bin numbers.  <a href="#a2acf43283607d1bd97a4fa685a3f48b5">More...</a><br /></td></tr>
+<tr class="separator:a2acf43283607d1bd97a4fa685a3f48b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3dfc7ef86f8106535b10cbbe000318b0"><td class="memItemLeft" align="right" valign="top">std::vector&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_eff_loader.html#a3dfc7ef86f8106535b10cbbe000318b0">eval</a> (float xval, float yval=0, float zval=0)</td></tr>
+<tr class="memdesc:a3dfc7ef86f8106535b10cbbe000318b0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Evaluate by axis value.  <a href="#a3dfc7ef86f8106535b10cbbe000318b0">More...</a><br /></td></tr>
+<tr class="separator:a3dfc7ef86f8106535b10cbbe000318b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Generic histogram loader with methods to return bin values. </p>
+</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a id="ae7501000359cccbe0c5a912b9dffa239"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae7501000359cccbe0c5a912b9dffa239">&#9670;&nbsp;</a></span>EffLoader()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="class_eff_loader.html">EffLoader</a> </td>
+          <td>(</td>
+          <td class="paramtype">std::string&#160;</td>
+          <td class="paramname"><em>filename</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">std::string&#160;</td>
+          <td class="paramname"><em>histname</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Construct a new <a class="el" href="class_eff_loader.html" title="Generic histogram loader with methods to return bin values. ">EffLoader</a> object. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">filename</td><td>File to access. </td></tr>
+    <tr><td class="paramname">histname</td><td>Histogram name in the file. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a id="a3dfc7ef86f8106535b10cbbe000318b0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3dfc7ef86f8106535b10cbbe000318b0">&#9670;&nbsp;</a></span>eval()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">std::vector&lt; float &gt; eval </td>
+          <td>(</td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>xval</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>yval</em> = <code>0</code>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>zval</em> = <code>0</code>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Evaluate by axis value. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">xval</td><td></td></tr>
+    <tr><td class="paramname">yval</td><td></td></tr>
+    <tr><td class="paramname">zval</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>std::vector&lt;float&gt; {nominal value, up error+nominal, down error+nominal} </dd></dl>
+
+</div>
+</div>
+<a id="a2acf43283607d1bd97a4fa685a3f48b5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2acf43283607d1bd97a4fa685a3f48b5">&#9670;&nbsp;</a></span>eval_bybin()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">std::vector&lt; float &gt; eval_bybin </td>
+          <td>(</td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>binx</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>biny</em> = <code>0</code>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>binz</em> = <code>0</code>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Evaluate by per-axis bin numbers. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">binx</td><td></td></tr>
+    <tr><td class="paramname">biny</td><td></td></tr>
+    <tr><td class="paramname">binz</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>std::vector&lt;float&gt; {nominal value, up error+nominal, down error+nominal} </dd></dl>
+
+</div>
+</div>
+<a id="a3afbe21ea66123f16e08b2718b017535"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3afbe21ea66123f16e08b2718b017535">&#9670;&nbsp;</a></span>eval_byglobal()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">std::vector&lt; float &gt; eval_byglobal </td>
+          <td>(</td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>globalbin</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Evaluate by global bin number. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">globalbin</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>std::vector&lt;float&gt; {nominal value, up error+nominal, down error+nominal} </dd></dl>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>TIMBER/Framework/src/EffLoader.cc</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.13
+</small></address>
+</body>
+</html>
diff --git a/docs/class_jet_smearer-members.html b/docs/class_jet_smearer-members.html
new file mode 100644
index 0000000000000000000000000000000000000000..22b33fcd3a7108c3f5a293f3cd33dda3b4d52bad
--- /dev/null
+++ b/docs/class_jet_smearer-members.html
@@ -0,0 +1,90 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>TIMBER: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+  MathJax.Hub.Config({
+    extensions: ["tex2jax.js"],
+    jax: ["input/TeX","output/HTML-CSS"],
+});
+</script><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="doxygen-styles.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectlogo"><img alt="Logo" src="logo_small.png"/></td>
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">TIMBER
+   &#160;<span id="projectnumber">beta</span>
+   </div>
+   <div id="projectbrief">Tree Interface for Making Binned Events with RDataFrame</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.13 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">JetSmearer Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="class_jet_smearer.html">JetSmearer</a>, including all inherited members.</p>
+<table class="directory">
+  <tr class="even"><td class="entry"><a class="el" href="class_jet_smearer.html#a5bc3a0baca6e3017f96619eeab7a04f9">GetSmearValsM</a>(LorentzV jet, LorentzV genJet)</td><td class="entry"><a class="el" href="class_jet_smearer.html">JetSmearer</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="class_jet_smearer.html#a2c0d63e784a2037d5f81d190b167e739">GetSmearValsPt</a>(LorentzV jet, LorentzV genJet, float rho)</td><td class="entry"><a class="el" href="class_jet_smearer.html">JetSmearer</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>JetSmearer</b>(std::string jetType, std::string jetTag, std::vector&lt; float &gt; jmrVals) (defined in <a class="el" href="class_jet_smearer.html">JetSmearer</a>)</td><td class="entry"><a class="el" href="class_jet_smearer.html">JetSmearer</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>~JetSmearer</b>() (defined in <a class="el" href="class_jet_smearer.html">JetSmearer</a>)</td><td class="entry"><a class="el" href="class_jet_smearer.html">JetSmearer</a></td><td class="entry"></td></tr>
+</table></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.13
+</small></address>
+</body>
+</html>
diff --git a/docs/class_jet_smearer.html b/docs/class_jet_smearer.html
new file mode 100644
index 0000000000000000000000000000000000000000..c886b7fb4812710f214020850db29975d3a704ec
--- /dev/null
+++ b/docs/class_jet_smearer.html
@@ -0,0 +1,183 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>TIMBER: JetSmearer Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+  MathJax.Hub.Config({
+    extensions: ["tex2jax.js"],
+    jax: ["input/TeX","output/HTML-CSS"],
+});
+</script><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="doxygen-styles.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectlogo"><img alt="Logo" src="logo_small.png"/></td>
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">TIMBER
+   &#160;<span id="projectnumber">beta</span>
+   </div>
+   <div id="projectbrief">Tree Interface for Making Binned Events with RDataFrame</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.13 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="class_jet_smearer-members.html">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">JetSmearer Class Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a30c354cf076310caca3202dd79ed17b5"><td class="memItemLeft" align="right" valign="top"><a id="a30c354cf076310caca3202dd79ed17b5"></a>
+&#160;</td><td class="memItemRight" valign="bottom"><b>JetSmearer</b> (std::string jetType, std::string jetTag, std::vector&lt; float &gt; jmrVals)</td></tr>
+<tr class="separator:a30c354cf076310caca3202dd79ed17b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2c0d63e784a2037d5f81d190b167e739"><td class="memItemLeft" align="right" valign="top">RVec&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_jet_smearer.html#a2c0d63e784a2037d5f81d190b167e739">GetSmearValsPt</a> (LorentzV jet, LorentzV genJet, float rho)</td></tr>
+<tr class="memdesc:a2c0d63e784a2037d5f81d190b167e739"><td class="mdescLeft">&#160;</td><td class="mdescRight">CV: Smear jet pT to account for measured difference in JER between data and simulation. The function computes the nominal smeared jet pT simultaneously with the JER up and down shifts, in order to use the same random number to smear all three (for consistency reasons).  <a href="#a2c0d63e784a2037d5f81d190b167e739">More...</a><br /></td></tr>
+<tr class="separator:a2c0d63e784a2037d5f81d190b167e739"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5bc3a0baca6e3017f96619eeab7a04f9"><td class="memItemLeft" align="right" valign="top">RVec&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_jet_smearer.html#a5bc3a0baca6e3017f96619eeab7a04f9">GetSmearValsM</a> (LorentzV jet, LorentzV genJet)</td></tr>
+<tr class="memdesc:a5bc3a0baca6e3017f96619eeab7a04f9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Smear jet m to account for measured difference in JMR between data and simulation. The function computes the nominal smeared jet m simultaneously with the JMR up and down shifts, in order to use the same random number to smear all three (for consistency reasons).  <a href="#a5bc3a0baca6e3017f96619eeab7a04f9">More...</a><br /></td></tr>
+<tr class="separator:a5bc3a0baca6e3017f96619eeab7a04f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a id="a5bc3a0baca6e3017f96619eeab7a04f9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5bc3a0baca6e3017f96619eeab7a04f9">&#9670;&nbsp;</a></span>GetSmearValsM()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">RVec&lt; float &gt; GetSmearValsM </td>
+          <td>(</td>
+          <td class="paramtype">LorentzV&#160;</td>
+          <td class="paramname"><em>jet</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">LorentzV&#160;</td>
+          <td class="paramname"><em>genJet</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Smear jet m to account for measured difference in JMR between data and simulation. The function computes the nominal smeared jet m simultaneously with the JMR up and down shifts, in order to use the same random number to smear all three (for consistency reasons). </p>
+<p>Consider three cases: Case 1: we have a "good" generator level jet matched to the reconstructed jet Case 2: we don't have a generator level jet. Smear jet m using a random Gaussian variation Case 3: we cannot smear this jet, as we don't have a generator level jet and the resolution in data is better than the resolution in the simulation, so we would need to randomly "unsmear" the jet, which is impossible.</p>
+<p>The implementation of this function follows: PhysicsTools/PatUtils/interface/SmearedJetProducerT.h Procedure outline in: <a href="https://twiki.cern.ch/twiki/bin/view/Sandbox/PUPPIJetMassScaleAndResolution">https://twiki.cern.ch/twiki/bin/view/Sandbox/PUPPIJetMassScaleAndResolution</a></p>
+<dl class="section return"><dt>Returns</dt><dd>def </dd></dl>
+
+</div>
+</div>
+<a id="a2c0d63e784a2037d5f81d190b167e739"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2c0d63e784a2037d5f81d190b167e739">&#9670;&nbsp;</a></span>GetSmearValsPt()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">RVec&lt; float &gt; GetSmearValsPt </td>
+          <td>(</td>
+          <td class="paramtype">LorentzV&#160;</td>
+          <td class="paramname"><em>jet</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">LorentzV&#160;</td>
+          <td class="paramname"><em>genJet</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">float&#160;</td>
+          <td class="paramname"><em>rho</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>CV: Smear jet pT to account for measured difference in JER between data and simulation. The function computes the nominal smeared jet pT simultaneously with the JER up and down shifts, in order to use the same random number to smear all three (for consistency reasons). </p>
+<p>The implementation of this function follows PhysicsTools/PatUtils/interface/SmearedJetProducerT.h</p>
+<p>Consider three cases: Case 1: we have a "good" generator level jet matched to the reconstructed jet Case 2: we don't have a generator level jet. Smear jet pT using a random Gaussian variation Case 3: we cannot smear this jet, as we don't have a generator level jet and the resolution in data is better than the resolution in the simulation, so we would need to randomly "unsmear" the jet, which is impossible</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">jet</td><td>Jet Lorentz vector </td></tr>
+    <tr><td class="paramname">genJet</td><td>GenJet Lorentz vector </td></tr>
+    <tr><td class="paramname">rho</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>RVec&lt;float&gt; {nom,up,down} </dd></dl>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>TIMBER/Framework/include/<a class="el" href="_jet_smearer_8h_source.html">JetSmearer.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.13
+</small></address>
+</body>
+</html>
diff --git a/docs/class_t_i_m_b_e_r_1_1_analyzer_1_1_correction-members.html b/docs/class_t_i_m_b_e_r_1_1_analyzer_1_1_correction-members.html
index 18edadd22b3d01f394be0d7cf0327f85663f7ffd..4c6da14e8f276a4776d1c447faec089955df6ebc 100644
--- a/docs/class_t_i_m_b_e_r_1_1_analyzer_1_1_correction-members.html
+++ b/docs/class_t_i_m_b_e_r_1_1_analyzer_1_1_correction-members.html
@@ -79,13 +79,13 @@ $(function() {
 
 <p>This is the complete list of members for <a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html">Correction</a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html#a0b3102dac1f626d41d3ab6a99c48b519">__init__</a>(self, name, script, constructor=[], mainFunc='eval', corrtype='', columnList=None, isClone=False)</td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html">Correction</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html#a3e0c81538d6f0e3bfcc48b46307e5e67">__init__</a>(self, name, script, constructor=[], mainFunc='eval', corrtype=None, columnList=None, isClone=False)</td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html">Correction</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html#ad6e0df224a7987f76c4c0744151167fb">Clone</a>(self, name, newMainFunc=None, newType=None)</td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html">Correction</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html#afb58852d69fc4cdd9bce36e86ed03192">GetCall</a>(self, inArgs=[])</td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html">Correction</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html#a7d989985f36ca7d2c79c7b51c5cb0bb8">GetCall</a>(self, inArgs={}, toCheck=None)</td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html">Correction</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html#a1bd1760631abbfbdde1169006d685066">GetFuncNames</a>(self)</td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html">Correction</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html#a495bda3e8e2a86f5c1f4f58091bfbccb">GetMainFunc</a>(self)</td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html">Correction</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html#afde9a246543a0b49710f9312d6020b7b">GetType</a>(self)</td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html">Correction</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html#af3b819295400bd83f7131b6f0cb45aaa">MakeCall</a>(self, inArgs=[])</td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html">Correction</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html#aa6b648587129a1fec783efe1e2c6ecdd">MakeCall</a>(self, inArgs={}, toCheck=None)</td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html">Correction</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html#ab74e6bf80237ddc4109968cedc58c151">name</a></td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html">Correction</a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
diff --git a/docs/class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html b/docs/class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html
index 76e26f2aa7f55f7880140494221af7907d9c2bd4..580d077bdf5c7adab7cd0f47d57d8b360caefb2c 100644
--- a/docs/class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html
+++ b/docs/class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html
@@ -96,18 +96,18 @@ Collaboration diagram for Correction:</div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a0b3102dac1f626d41d3ab6a99c48b519"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html#a0b3102dac1f626d41d3ab6a99c48b519">__init__</a> (self, <a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html#ab74e6bf80237ddc4109968cedc58c151">name</a>, script, constructor=[], mainFunc='eval', corrtype='', columnList=None, isClone=False)</td></tr>
-<tr class="memdesc:a0b3102dac1f626d41d3ab6a99c48b519"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor.  <a href="#a0b3102dac1f626d41d3ab6a99c48b519">More...</a><br /></td></tr>
-<tr class="separator:a0b3102dac1f626d41d3ab6a99c48b519"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3e0c81538d6f0e3bfcc48b46307e5e67"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html#a3e0c81538d6f0e3bfcc48b46307e5e67">__init__</a> (self, <a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html#ab74e6bf80237ddc4109968cedc58c151">name</a>, script, constructor=[], mainFunc='eval', corrtype=None, columnList=None, isClone=False)</td></tr>
+<tr class="memdesc:a3e0c81538d6f0e3bfcc48b46307e5e67"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor.  <a href="#a3e0c81538d6f0e3bfcc48b46307e5e67">More...</a><br /></td></tr>
+<tr class="separator:a3e0c81538d6f0e3bfcc48b46307e5e67"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ad6e0df224a7987f76c4c0744151167fb"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html#ad6e0df224a7987f76c4c0744151167fb">Clone</a> (self, <a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html#ab74e6bf80237ddc4109968cedc58c151">name</a>, newMainFunc=None, newType=None)</td></tr>
 <tr class="memdesc:ad6e0df224a7987f76c4c0744151167fb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Makes a clone of current instance.  <a href="#ad6e0df224a7987f76c4c0744151167fb">More...</a><br /></td></tr>
 <tr class="separator:ad6e0df224a7987f76c4c0744151167fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af3b819295400bd83f7131b6f0cb45aaa"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html#af3b819295400bd83f7131b6f0cb45aaa">MakeCall</a> (self, inArgs=[])</td></tr>
-<tr class="memdesc:af3b819295400bd83f7131b6f0cb45aaa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Makes the call (stored in class instance) to the method with the branch/column names deduced or added from input.  <a href="#af3b819295400bd83f7131b6f0cb45aaa">More...</a><br /></td></tr>
-<tr class="separator:af3b819295400bd83f7131b6f0cb45aaa"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:afb58852d69fc4cdd9bce36e86ed03192"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html#afb58852d69fc4cdd9bce36e86ed03192">GetCall</a> (self, inArgs=[])</td></tr>
-<tr class="memdesc:afb58852d69fc4cdd9bce36e86ed03192"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the call to the method to be evaluated per-event.  <a href="#afb58852d69fc4cdd9bce36e86ed03192">More...</a><br /></td></tr>
-<tr class="separator:afb58852d69fc4cdd9bce36e86ed03192"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa6b648587129a1fec783efe1e2c6ecdd"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html#aa6b648587129a1fec783efe1e2c6ecdd">MakeCall</a> (self, inArgs={}, toCheck=None)</td></tr>
+<tr class="memdesc:aa6b648587129a1fec783efe1e2c6ecdd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Makes the call (stored in class instance) to the method with the branch/column names deduced or added from input.  <a href="#aa6b648587129a1fec783efe1e2c6ecdd">More...</a><br /></td></tr>
+<tr class="separator:aa6b648587129a1fec783efe1e2c6ecdd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7d989985f36ca7d2c79c7b51c5cb0bb8"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html#a7d989985f36ca7d2c79c7b51c5cb0bb8">GetCall</a> (self, inArgs={}, toCheck=None)</td></tr>
+<tr class="memdesc:a7d989985f36ca7d2c79c7b51c5cb0bb8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the call to the method to be evaluated per-event.  <a href="#a7d989985f36ca7d2c79c7b51c5cb0bb8">More...</a><br /></td></tr>
+<tr class="separator:a7d989985f36ca7d2c79c7b51c5cb0bb8"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a495bda3e8e2a86f5c1f4f58091bfbccb"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html#a495bda3e8e2a86f5c1f4f58091bfbccb">GetMainFunc</a> (self)</td></tr>
 <tr class="memdesc:a495bda3e8e2a86f5c1f4f58091bfbccb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets full main function name.  <a href="#a495bda3e8e2a86f5c1f4f58091bfbccb">More...</a><br /></td></tr>
 <tr class="separator:a495bda3e8e2a86f5c1f4f58091bfbccb"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -129,11 +129,11 @@ Public Attributes</h2></td></tr>
 <div class="textblock"><p>Class to handle corrections produced by C++ modules. </p>
 <p>Uses clang in python to parse the C++ code and determine function names, namespaces, and argument names and types.</p>
 <p>Writing the C++ modules has two requirements:</p>
-<p>(1) the desired branch/column names must be used as the argument variable names to allow the framework to automatically determine what branch/column to use in <a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html#afb58852d69fc4cdd9bce36e86ed03192" title="Gets the call to the method to be evaluated per-event. ">GetCall()</a>,</p>
+<p>(1) the desired branch/column names must be used as the argument variable names to allow the framework to automatically determine what branch/column to use in <a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html#a7d989985f36ca7d2c79c7b51c5cb0bb8" title="Gets the call to the method to be evaluated per-event. ">GetCall()</a>,</p>
 <p>(2) the return must be a vector ordered as &lt;nominal, up, down&gt; for "weight" type and &lt;up, down&gt; for "uncert" type. </p>
 </div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
-<a id="a0b3102dac1f626d41d3ab6a99c48b519"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a0b3102dac1f626d41d3ab6a99c48b519">&#9670;&nbsp;</a></span>__init__()</h2>
+<a id="a3e0c81538d6f0e3bfcc48b46307e5e67"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3e0c81538d6f0e3bfcc48b46307e5e67">&#9670;&nbsp;</a></span>__init__()</h2>
 
 <div class="memitem">
 <div class="memproto">
@@ -172,7 +172,7 @@ Public Attributes</h2></td></tr>
           <td class="paramkey"></td>
           <td></td>
           <td class="paramtype">&#160;</td>
-          <td class="paramname"><em>corrtype</em> = <code>''</code>, </td>
+          <td class="paramname"><em>corrtype</em> = <code>None</code>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
@@ -201,7 +201,7 @@ Public Attributes</h2></td></tr>
     <tr><td class="paramname">script</td><td>(str): Path to C++ script with function to calculate correction. </td></tr>
     <tr><td class="paramname">constructor</td><td>([str], optional): List of arguments to script class constructor. Defaults to []. </td></tr>
     <tr><td class="paramname">mainFunc</td><td>(str, optional): Name of the function to use inside script. Defaults to None and the class will try to deduce it. </td></tr>
-    <tr><td class="paramname">corrtype</td><td>(str, optional): Either "weight" (nominal weight to apply with an uncertainty), "corr" (only a correction) or "uncert" (only an uncertainty). Defaults to '' and the class will try to deduce it. </td></tr>
+    <tr><td class="paramname">corrtype</td><td>(str, optional): Either "weight" (nominal weight to apply with an uncertainty), "corr" (only a correction), or "uncert" (only an uncertainty). Defaults to '' and the class will try to deduce it. </td></tr>
     <tr><td class="paramname">columnList</td><td>([str], optional): List of column names to search mainFunc arguments against. Defaults to None and the standard NanoAOD columns from LoadColumnNames() will be used. </td></tr>
     <tr><td class="paramname">isClone</td><td>(bool, optional): For internal use when cloning. Defaults to False. If True, will not duplicate compile the same script if two functions are needed in one C++ script. </td></tr>
   </table>
@@ -265,8 +265,8 @@ Public Attributes</h2></td></tr>
 
 </div>
 </div>
-<a id="afb58852d69fc4cdd9bce36e86ed03192"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#afb58852d69fc4cdd9bce36e86ed03192">&#9670;&nbsp;</a></span>GetCall()</h2>
+<a id="a7d989985f36ca7d2c79c7b51c5cb0bb8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7d989985f36ca7d2c79c7b51c5cb0bb8">&#9670;&nbsp;</a></span>GetCall()</h2>
 
 <div class="memitem">
 <div class="memproto">
@@ -281,7 +281,13 @@ Public Attributes</h2></td></tr>
           <td class="paramkey"></td>
           <td></td>
           <td class="paramtype">&#160;</td>
-          <td class="paramname"><em>inArgs</em> = <code>[]</code>&#160;</td>
+          <td class="paramname"><em>inArgs</em> = <code>{}</code>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">&#160;</td>
+          <td class="paramname"><em>toCheck</em> = <code>None</code>&#160;</td>
         </tr>
         <tr>
           <td></td>
@@ -294,7 +300,8 @@ Public Attributes</h2></td></tr>
 <p>Gets the call to the method to be evaluated per-event. </p>
 <dl class="params"><dt>Parameters</dt><dd>
   <table class="params">
-    <tr><td class="paramname">inArgs</td><td>(list, optional): Args to use for eval if <a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html#af3b819295400bd83f7131b6f0cb45aaa" title="Makes the call (stored in class instance) to the method with the branch/column names deduced or added...">MakeCall()</a> has not already been called. Defaults to []. If <a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html#af3b819295400bd83f7131b6f0cb45aaa" title="Makes the call (stored in class instance) to the method with the branch/column names deduced or added...">MakeCall()</a> has not already been called and inArgs == [], then the arguments to the method will be deduced from the C++ method definition argument names.</td></tr>
+    <tr><td class="paramname">inArgs</td><td>(list, optional): Args to use for eval if <a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html#aa6b648587129a1fec783efe1e2c6ecdd" title="Makes the call (stored in class instance) to the method with the branch/column names deduced or added...">MakeCall()</a> has not already been called. Defaults to []. If <a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html#aa6b648587129a1fec783efe1e2c6ecdd" title="Makes the call (stored in class instance) to the method with the branch/column names deduced or added...">MakeCall()</a> has not already been called and inArgs == [], then the arguments to the method will be deduced from the C++ method definition argument names. </td></tr>
+    <tr><td class="paramname">toCheck</td><td>(<a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html" title="Class to represent nodes in the DataFrame processing graph. ">Node</a>, ROOT.RDataFrame, list, optional): Object with column information to check argument names exist. Defaults to None in which case a default NanoAODv6 list is loaded.</td></tr>
   </table>
   </dd>
 </dl>
@@ -371,8 +378,8 @@ str <a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html" titl
 
 </div>
 </div>
-<a id="af3b819295400bd83f7131b6f0cb45aaa"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#af3b819295400bd83f7131b6f0cb45aaa">&#9670;&nbsp;</a></span>MakeCall()</h2>
+<a id="aa6b648587129a1fec783efe1e2c6ecdd"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa6b648587129a1fec783efe1e2c6ecdd">&#9670;&nbsp;</a></span>MakeCall()</h2>
 
 <div class="memitem">
 <div class="memproto">
@@ -387,7 +394,13 @@ str <a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html" titl
           <td class="paramkey"></td>
           <td></td>
           <td class="paramtype">&#160;</td>
-          <td class="paramname"><em>inArgs</em> = <code>[]</code>&#160;</td>
+          <td class="paramname"><em>inArgs</em> = <code>{}</code>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">&#160;</td>
+          <td class="paramname"><em>toCheck</em> = <code>None</code>&#160;</td>
         </tr>
         <tr>
           <td></td>
@@ -400,7 +413,8 @@ str <a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html" titl
 <p>Makes the call (stored in class instance) to the method with the branch/column names deduced or added from input. </p>
 <dl class="params"><dt>Parameters</dt><dd>
   <table class="params">
-    <tr><td class="paramname">inArgs</td><td>(list, optional): List of arguments (branch/column names) to provide to per-event evaluation method. Defaults to [] in which case the arguments are deduced from what is written in the C++ script.</td></tr>
+    <tr><td class="paramname">inArgs</td><td>(dict, optional): Dict with keys as C++ method argument names and values as the actual argument to provide (branch/column names) for per-event evaluation. For any argument names where a key is not provided, will attempt to find branch/column that already matches based on name. Defaults to {} in which case ther will be automatic deduction from the argument names written in the C++ script. </td></tr>
+    <tr><td class="paramname">toCheck</td><td>(<a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html" title="Class to represent nodes in the DataFrame processing graph. ">Node</a>, ROOT.RDataFrame, list, optional): Object with column information to check argument names exist. Defaults to None in which case a default NanoAODv6 list is loaded.</td></tr>
   </table>
   </dd>
 </dl>
diff --git a/docs/class_t_i_m_b_e_r_1_1_analyzer_1_1_node-members.html b/docs/class_t_i_m_b_e_r_1_1_analyzer_1_1_node-members.html
index 89fd02e06d9e7825d37713ddfd70ecedd3075e92..450ccca232a054b4a6a2682b46cccace85498bf0 100644
--- a/docs/class_t_i_m_b_e_r_1_1_analyzer_1_1_node-members.html
+++ b/docs/class_t_i_m_b_e_r_1_1_analyzer_1_1_node-members.html
@@ -79,7 +79,7 @@ $(function() {
 
 <p>This is the complete list of members for <a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html">Node</a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#a9ff723bc556264af934b8d22ddf15051">__init__</a>(self, name, DataFrame, action='', nodetype='', children=[])</td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html">Node</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#a62d7887f281652fad43626fb4d2e791a">__init__</a>(self, name, DataFrame, action='', nodetype='', children=[], parent=None)</td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html">Node</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#a23e8041ce1015febe4fdace3225714f9">__str__</a>(self)</td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html">Node</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#a2f4ab7bf743142dae2e459aa18f9f1d4">action</a></td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html">Node</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#af9f0f605c4d451aac2ea024e56f296fc">Apply</a>(self, actionGroupList)</td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html">Node</a></td><td class="entry"></td></tr>
@@ -91,6 +91,8 @@ $(function() {
   <tr><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#a10d358548c587a45ae627eeb6948aef8">Define</a>(self, name, var, nodetype=None)</td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html">Node</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#af0228790d32682b44a9ff3bf3199b207">Discriminate</a>(self, name, discriminator)</td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html">Node</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#ab74e6bf80237ddc4109968cedc58c151">name</a></td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html">Node</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#a457d913bff1ebc8671c1eca1c9d5fc03">parent</a></td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html">Node</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.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_1_node.html">Node</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#a82be871373e5ef1b41fd076630e72873">SetChild</a>(self, child, overwrite=False)</td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html">Node</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#add3a1faeeb9529ee59760ea265fdbade">SetChildren</a>(self, children, overwrite=False)</td><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html">Node</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.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_1_node.html">Node</a></td><td class="entry"></td></tr>
diff --git a/docs/class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html b/docs/class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html
index 5195b8494fa80dfccf0e9a8d344fcf7f00143544..fb345dfa1528ea8fb6a51d88a9fa41852735e973 100644
--- a/docs/class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html
+++ b/docs/class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html
@@ -96,9 +96,9 @@ Collaboration diagram for Node:</div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a9ff723bc556264af934b8d22ddf15051"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#a9ff723bc556264af934b8d22ddf15051">__init__</a> (self, <a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#ab74e6bf80237ddc4109968cedc58c151">name</a>, <a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#ae8dafbef0bedc58da1657f86a31508e6">DataFrame</a>, <a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#a2f4ab7bf743142dae2e459aa18f9f1d4">action</a>='', nodetype='', <a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#a0ad3c9f0298ae46424fb2461b3e2d506">children</a>=[])</td></tr>
-<tr class="memdesc:a9ff723bc556264af934b8d22ddf15051"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor.  <a href="#a9ff723bc556264af934b8d22ddf15051">More...</a><br /></td></tr>
-<tr class="separator:a9ff723bc556264af934b8d22ddf15051"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a62d7887f281652fad43626fb4d2e791a"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#a62d7887f281652fad43626fb4d2e791a">__init__</a> (self, <a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#ab74e6bf80237ddc4109968cedc58c151">name</a>, <a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#ae8dafbef0bedc58da1657f86a31508e6">DataFrame</a>, <a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#a2f4ab7bf743142dae2e459aa18f9f1d4">action</a>='', nodetype='', <a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#a0ad3c9f0298ae46424fb2461b3e2d506">children</a>=[], <a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#a457d913bff1ebc8671c1eca1c9d5fc03">parent</a>=None)</td></tr>
+<tr class="memdesc:a62d7887f281652fad43626fb4d2e791a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor.  <a href="#a62d7887f281652fad43626fb4d2e791a">More...</a><br /></td></tr>
+<tr class="separator:a62d7887f281652fad43626fb4d2e791a"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a303f02c4b5af83bafee2f1064bab45fa"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#a303f02c4b5af83bafee2f1064bab45fa">Close</a> (self)</td></tr>
 <tr class="memdesc:a303f02c4b5af83bafee2f1064bab45fa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Safely deletes <a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html" title="Class to represent nodes in the DataFrame processing graph. ">Node</a> instance and all descendants.  <a href="#a303f02c4b5af83bafee2f1064bab45fa">More...</a><br /></td></tr>
 <tr class="separator:a303f02c4b5af83bafee2f1064bab45fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -126,6 +126,9 @@ Public Member Functions</h2></td></tr>
 <tr class="memitem:af9f0f605c4d451aac2ea024e56f296fc"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#af9f0f605c4d451aac2ea024e56f296fc">Apply</a> (self, actionGroupList)</td></tr>
 <tr class="memdesc:af9f0f605c4d451aac2ea024e56f296fc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Applies a single CutGroup/VarGroup or an ordered list of Groups to this <a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html" title="Class to represent nodes in the DataFrame processing graph. ">Node</a> to produce a new final <a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html" title="Class to represent nodes in the DataFrame processing graph. ">Node</a>.  <a href="#af9f0f605c4d451aac2ea024e56f296fc">More...</a><br /></td></tr>
 <tr class="separator:af9f0f605c4d451aac2ea024e56f296fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a361306a468fa48145cf99ee48c82bf25"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#a361306a468fa48145cf99ee48c82bf25">Range</a> (self, argv)</td></tr>
+<tr class="memdesc:a361306a468fa48145cf99ee48c82bf25"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calls the <a href="https://root.cern/doc/master/classROOT_1_1RDF_1_1RInterface.html#a1b36b7868831de2375e061bb06cfc225">RDataFrame Range method</a>.  <a href="#a361306a468fa48145cf99ee48c82bf25">More...</a><br /></td></tr>
+<tr class="separator:a361306a468fa48145cf99ee48c82bf25"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ac9396d0acbc67a31bbae81c20944900c"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#ac9396d0acbc67a31bbae81c20944900c">Snapshot</a> (self, columns, outfilename, treename, lazy=False, openOption='RECREATE')</td></tr>
 <tr class="memdesc:ac9396d0acbc67a31bbae81c20944900c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Takes a snapshot of the RDataFrame corresponding to this <a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html" title="Class to represent nodes in the DataFrame processing graph. ">Node</a>.  <a href="#ac9396d0acbc67a31bbae81c20944900c">More...</a><br /></td></tr>
 <tr class="separator:ac9396d0acbc67a31bbae81c20944900c"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -148,6 +151,10 @@ Public Attributes</h2></td></tr>
 &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#a0ad3c9f0298ae46424fb2461b3e2d506">children</a></td></tr>
 <tr class="memdesc:a0ad3c9f0298ae46424fb2461b3e2d506"><td class="mdescLeft">&#160;</td><td class="mdescRight">List of child nodes. <br /></td></tr>
 <tr class="separator:a0ad3c9f0298ae46424fb2461b3e2d506"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a457d913bff1ebc8671c1eca1c9d5fc03"><td class="memItemLeft" align="right" valign="top"><a id="a457d913bff1ebc8671c1eca1c9d5fc03"></a>
+&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#a457d913bff1ebc8671c1eca1c9d5fc03">parent</a></td></tr>
+<tr class="memdesc:a457d913bff1ebc8671c1eca1c9d5fc03"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parent node. <br /></td></tr>
+<tr class="separator:a457d913bff1ebc8671c1eca1c9d5fc03"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a7aead736a07eaf25623ad7bfa1f0ee2d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#a7aead736a07eaf25623ad7bfa1f0ee2d">type</a></td></tr>
 <tr class="memdesc:a7aead736a07eaf25623ad7bfa1f0ee2d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Either 'Cut' or 'Define' depending what generated the <a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html" title="Class to represent nodes in the DataFrame processing graph. ">Node</a>.  <a href="#a7aead736a07eaf25623ad7bfa1f0ee2d">More...</a><br /></td></tr>
 <tr class="separator:a7aead736a07eaf25623ad7bfa1f0ee2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -156,8 +163,8 @@ Public Attributes</h2></td></tr>
 <div class="textblock"><p>Class to represent nodes in the DataFrame processing graph. </p>
 <p>Can make new nodes via Define, Cut, and Discriminate and setup relations between nodes (done automatically via Define, Cut, Discriminate) </p>
 </div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
-<a id="a9ff723bc556264af934b8d22ddf15051"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a9ff723bc556264af934b8d22ddf15051">&#9670;&nbsp;</a></span>__init__()</h2>
+<a id="a62d7887f281652fad43626fb4d2e791a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a62d7887f281652fad43626fb4d2e791a">&#9670;&nbsp;</a></span>__init__()</h2>
 
 <div class="memitem">
 <div class="memproto">
@@ -196,7 +203,13 @@ Public Attributes</h2></td></tr>
           <td class="paramkey"></td>
           <td></td>
           <td class="paramtype">&#160;</td>
-          <td class="paramname"><em>children</em> = <code>[]</code>&#160;</td>
+          <td class="paramname"><em>children</em> = <code>[]</code>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">&#160;</td>
+          <td class="paramname"><em>parent</em> = <code>None</code>&#160;</td>
         </tr>
         <tr>
           <td></td>
@@ -214,6 +227,7 @@ Public Attributes</h2></td></tr>
     <tr><td class="paramname">name</td><td>(str): Name for the node. Duplicate named nodes cannot be tracked simultaneously in the analyzer. </td></tr>
     <tr><td class="paramname">DataFrame</td><td>(RDataFrame): Dataframe to track. </td></tr>
     <tr><td class="paramname">children</td><td>([<a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html" title="Class to represent nodes in the DataFrame processing graph. ">Node</a>], optional): Child nodes if they exist. Defaults to []. </td></tr>
+    <tr><td class="paramname">parent</td><td>(<a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html" title="Class to represent nodes in the DataFrame processing graph. ">Node</a>, optional): Parent node if it exists. Defaults to None. </td></tr>
     <tr><td class="paramname">nodetype</td><td>(str, optional): The type of the <a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html" title="Class to represent nodes in the DataFrame processing graph. ">Node</a>. Useful for organizing and grouping Nodes. Defaults to ''. </td></tr>
     <tr><td class="paramname">action</td><td>(str, optional): Action performed (the C++ line). Default is '' but should only be used for a base RDataFrame. </td></tr>
   </table>
@@ -503,6 +517,41 @@ None </dd></dl>
 <dd>
 dict Dictionary with keys "pass" and "fail" corresponding to the passing and failing Nodes stored as values. </dd></dl>
 
+</div>
+</div>
+<a id="a361306a468fa48145cf99ee48c82bf25"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a361306a468fa48145cf99ee48c82bf25">&#9670;&nbsp;</a></span>Range()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def Range </td>
+          <td>(</td>
+          <td class="paramtype">&#160;</td>
+          <td class="paramname"><em>self</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">&#160;</td>
+          <td class="paramname"><em>argv</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Calls the <a href="https://root.cern/doc/master/classROOT_1_1RDF_1_1RInterface.html#a1b36b7868831de2375e061bb06cfc225">RDataFrame Range method</a>. </p>
+<p>Follows the same syntax (ie. Range(begin, end, stride) or Range(end)).</p>
+<dl class="section warning"><dt>Warning</dt><dd>Will not work with ROOT.EnableImplicitMT(). Please comment this out before using <a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#a361306a468fa48145cf99ee48c82bf25" title="Calls the RDataFrame Range method. ">Range()</a>.</dd></dl>
+<dl class="section return"><dt>Returns</dt><dd></dd>
+<dd>
+<a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html" title="Class to represent nodes in the DataFrame processing graph. ">Node</a> New node with specified range of entries selected. </dd></dl>
+
 </div>
 </div>
 <a id="a82be871373e5ef1b41fd076630e72873"></a>
diff --git a/docs/class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer-members.html b/docs/class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer-members.html
index 65823537da691cf00d1fa52e87d48d32cafa439c..1bf70259ff10c232c5f02621b7c232671b7fc42b 100644
--- a/docs/class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer-members.html
+++ b/docs/class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer-members.html
@@ -82,7 +82,7 @@ $(function() {
   <tr class="even"><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#abe24adb4b40ba81eebc81f2b9c60175a">__init__</a>(self, fileName, eventsTreeName=&quot;Events&quot;, runTreeName=&quot;Runs&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>
   <tr><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a23e8041ce1015febe4fdace3225714f9">__str__</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>
   <tr class="even"><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a517b5caa6818e1f61b5b742625e575f4">ActiveNode</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>
-  <tr><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a32bfe7e08329c1207530da3ed0b38ac5">AddCorrection</a>(self, correction, evalArgs=[], 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>
+  <tr><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#afe470917a833262458cb26da33e124ec">AddCorrection</a>(self, correction, evalArgs={}, 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>
   <tr class="even"><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#ad89f013ac60b6e44f4d0566fafbd8219">AddCorrections</a>(self, correctionList, 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>
   <tr><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a7ccb2956248a8ac23440a44ab366aba6">AllNodes</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>
   <tr class="even"><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a2b6f523f41d15269f91e673884abab98">Apply</a>(self, actionGroupList, node=None, trackEach=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>
@@ -102,18 +102,20 @@ $(function() {
   <tr class="even"><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#ac7735430c66b1526c49cc7b947169b2e">GetBaseNode</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>
   <tr><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a0fa8abc3c6c72bda1ba5f977ff93c589">GetCorrectionNames</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>
   <tr class="even"><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#add61011322111cb5adf1cbc721a6e8c6">GetFileName</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>
-  <tr><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#afe44fb85cff031cf2e19c17b36afe935">GetFlagString</a>(self, flagList)</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>
+  <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>
   <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>
   <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>
   <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>
   <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>
   <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>
   <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>
-  <tr class="even"><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#adea335ba0db85d4bf48562523fffe963">MakeWeightCols</a>(self, 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>
+  <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>
   <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>
   <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>
-  <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>
-  <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>
+  <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>
+  <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>
+  <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>
+  <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>
   <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>
   <tr class="even"><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>
   <tr><td class="entry"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#ae00326bddf9a3bb23051007674e6cc5b">SubCollection</a>(self, name, basecoll, condition, 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>
diff --git a/docs/class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html b/docs/class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html
index 4304b5b9bc58d8807ae1b2b6323654dc4b6ecec8..3d3e12bef165f4d7f4b366d1fb4f20cad38a0ade 100644
--- a/docs/class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html
+++ b/docs/class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html
@@ -110,6 +110,8 @@ Public Member Functions</h2></td></tr>
 <tr class="separator:a1ba09da1969b6677c42489b42495ba0f"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ac9396d0acbc67a31bbae81c20944900c"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><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></tr>
 <tr class="separator:ac9396d0acbc67a31bbae81c20944900c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a361306a468fa48145cf99ee48c82bf25"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a361306a468fa48145cf99ee48c82bf25">Range</a> (self, argv)</td></tr>
+<tr class="separator:a361306a468fa48145cf99ee48c82bf25"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a3f19f4e3f9344e283f5cf6ae2371fc70"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a3f19f4e3f9344e283f5cf6ae2371fc70">SetActiveNode</a> (self, node)</td></tr>
 <tr class="memdesc:a3f19f4e3f9344e283f5cf6ae2371fc70"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the active node.  <a href="#a3f19f4e3f9344e283f5cf6ae2371fc70">More...</a><br /></td></tr>
 <tr class="separator:a3f19f4e3f9344e283f5cf6ae2371fc70"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -134,9 +136,9 @@ Public Member Functions</h2></td></tr>
 <tr class="memitem:a818bf6c1ef57461de293ebf6a4c7ea6a"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a818bf6c1ef57461de293ebf6a4c7ea6a">GetTriggerString</a> (self, trigList)</td></tr>
 <tr class="memdesc:a818bf6c1ef57461de293ebf6a4c7ea6a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks input list for missing triggers and drops those missing (<a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a09416f276df2240aaec70e938e465fca" title="Takes a list of possible columns and returns only those that exist in the RDataFrame of the supplied ...">FilterColumnNames</a>) and then concatenates those remaining into an OR (<code>||</code>) string.  <a href="#a818bf6c1ef57461de293ebf6a4c7ea6a">More...</a><br /></td></tr>
 <tr class="separator:a818bf6c1ef57461de293ebf6a4c7ea6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:afe44fb85cff031cf2e19c17b36afe935"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#afe44fb85cff031cf2e19c17b36afe935">GetFlagString</a> (self, flagList)</td></tr>
-<tr class="memdesc:afe44fb85cff031cf2e19c17b36afe935"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks input list for missing flags and drops those missing (<a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a09416f276df2240aaec70e938e465fca" title="Takes a list of possible columns and returns only those that exist in the RDataFrame of the supplied ...">FilterColumnNames</a>) and then concatenates those remaining into an AND string.  <a href="#afe44fb85cff031cf2e19c17b36afe935">More...</a><br /></td></tr>
-<tr class="separator:afe44fb85cff031cf2e19c17b36afe935"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ade0c62b73ea95b2f11ff8f5add708066"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#ade0c62b73ea95b2f11ff8f5add708066">GetFlagString</a> (self, flagList=GetStandardFlags())</td></tr>
+<tr class="memdesc:ade0c62b73ea95b2f11ff8f5add708066"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks input list for missing flags and drops those missing (<a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a09416f276df2240aaec70e938e465fca" title="Takes a list of possible columns and returns only those that exist in the RDataFrame of the supplied ...">FilterColumnNames</a>) and then concatenates those remaining into an AND string.  <a href="#ade0c62b73ea95b2f11ff8f5add708066">More...</a><br /></td></tr>
+<tr class="separator:ade0c62b73ea95b2f11ff8f5add708066"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:add61011322111cb5adf1cbc721a6e8c6"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#add61011322111cb5adf1cbc721a6e8c6">GetFileName</a> (self)</td></tr>
 <tr class="memdesc:add61011322111cb5adf1cbc721a6e8c6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get input file name.  <a href="#add61011322111cb5adf1cbc721a6e8c6">More...</a><br /></td></tr>
 <tr class="separator:add61011322111cb5adf1cbc721a6e8c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -155,23 +157,26 @@ Public Member Functions</h2></td></tr>
 <tr class="memitem:ae00326bddf9a3bb23051007674e6cc5b"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#ae00326bddf9a3bb23051007674e6cc5b">SubCollection</a> (self, name, basecoll, condition, skip=[])</td></tr>
 <tr class="memdesc:ae00326bddf9a3bb23051007674e6cc5b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a collection of a current collection (from a NanoAOD-like format) where the array-type branch is slimmed based on some selection.  <a href="#ae00326bddf9a3bb23051007674e6cc5b">More...</a><br /></td></tr>
 <tr class="separator:ae00326bddf9a3bb23051007674e6cc5b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa933d8e2ef227f994f60ee3b278eb0f6"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><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></tr>
+<tr class="memdesc:aa933d8e2ef227f994f60ee3b278eb0f6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Similar to creating a SubCollection except the newly defined columns are single values (not vectors/arrays) for the object at the provided index.  <a href="#aa933d8e2ef227f994f60ee3b278eb0f6">More...</a><br /></td></tr>
+<tr class="separator:aa933d8e2ef227f994f60ee3b278eb0f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a2f0e7e0c026da9b2cbc160816a2db28b"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a2f0e7e0c026da9b2cbc160816a2db28b">MergeCollections</a> (self, name, collectionNames)</td></tr>
 <tr class="memdesc:a2f0e7e0c026da9b2cbc160816a2db28b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Merge collections (provided by list of names in <code>collectionNames</code>) into one called <code>name</code>.  <a href="#a2f0e7e0c026da9b2cbc160816a2db28b">More...</a><br /></td></tr>
 <tr class="separator:a2f0e7e0c026da9b2cbc160816a2db28b"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a2893215aeed2a64dc72b15589eeab9f2"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a2893215aeed2a64dc72b15589eeab9f2">CommonVars</a> (self, collections)</td></tr>
 <tr class="memdesc:a2893215aeed2a64dc72b15589eeab9f2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Find the common variables between collections.  <a href="#a2893215aeed2a64dc72b15589eeab9f2">More...</a><br /></td></tr>
 <tr class="separator:a2893215aeed2a64dc72b15589eeab9f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a32bfe7e08329c1207530da3ed0b38ac5"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a32bfe7e08329c1207530da3ed0b38ac5">AddCorrection</a> (self, correction, evalArgs=[], node=None)</td></tr>
-<tr class="memdesc:a32bfe7e08329c1207530da3ed0b38ac5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a <a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html" title="Class to handle corrections produced by C++ modules. ">Correction</a> to track.  <a href="#a32bfe7e08329c1207530da3ed0b38ac5">More...</a><br /></td></tr>
-<tr class="separator:a32bfe7e08329c1207530da3ed0b38ac5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afe470917a833262458cb26da33e124ec"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#afe470917a833262458cb26da33e124ec">AddCorrection</a> (self, correction, evalArgs={}, node=None)</td></tr>
+<tr class="memdesc:afe470917a833262458cb26da33e124ec"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a <a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html" title="Class to handle corrections produced by C++ modules. ">Correction</a> to track.  <a href="#afe470917a833262458cb26da33e124ec">More...</a><br /></td></tr>
+<tr class="separator:afe470917a833262458cb26da33e124ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ad89f013ac60b6e44f4d0566fafbd8219"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#ad89f013ac60b6e44f4d0566fafbd8219">AddCorrections</a> (self, correctionList, node=None)</td></tr>
 <tr class="memdesc:ad89f013ac60b6e44f4d0566fafbd8219"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add multiple Corrections to track.  <a href="#ad89f013ac60b6e44f4d0566fafbd8219">More...</a><br /></td></tr>
 <tr class="separator:ad89f013ac60b6e44f4d0566fafbd8219"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:adea335ba0db85d4bf48562523fffe963"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#adea335ba0db85d4bf48562523fffe963">MakeWeightCols</a> (self, node=None, correctionNames=None, dropList=[])</td></tr>
-<tr class="memdesc:adea335ba0db85d4bf48562523fffe963"><td class="mdescLeft">&#160;</td><td class="mdescRight">Makes columns/variables to store total weights based on the Corrections that have been added.  <a href="#adea335ba0db85d4bf48562523fffe963">More...</a><br /></td></tr>
-<tr class="separator:adea335ba0db85d4bf48562523fffe963"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af222479f97b45564dfcc91fec275c48b"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><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></tr>
+<tr class="memdesc:af222479f97b45564dfcc91fec275c48b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Makes columns/variables to store total weights based on the Corrections that have been added.  <a href="#af222479f97b45564dfcc91fec275c48b">More...</a><br /></td></tr>
+<tr class="separator:af222479f97b45564dfcc91fec275c48b"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a611faeda8b08b76181109820e549c232"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><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></tr>
-<tr class="memdesc:a611faeda8b08b76181109820e549c232"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generates the uncertainty template histograms based on the weights created by <a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#adea335ba0db85d4bf48562523fffe963" title="Makes columns/variables to store total weights based on the Corrections that have been added...">MakeWeightCols()</a>.  <a href="#a611faeda8b08b76181109820e549c232">More...</a><br /></td></tr>
+<tr class="memdesc:a611faeda8b08b76181109820e549c232"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generates the uncertainty template histograms based on the weights created by <a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#af222479f97b45564dfcc91fec275c48b" title="Makes columns/variables to store total weights based on the Corrections that have been added...">MakeWeightCols()</a>.  <a href="#a611faeda8b08b76181109820e549c232">More...</a><br /></td></tr>
 <tr class="separator:a611faeda8b08b76181109820e549c232"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a5061b8f5d8934a98f26990aafa9e26db"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a5061b8f5d8934a98f26990aafa9e26db">DrawTemplates</a> (self, hGroup, saveLocation, projection='X', projectionArgs=(), fileType='pdf')</td></tr>
 <tr class="memdesc:a5061b8f5d8934a98f26990aafa9e26db"><td class="mdescLeft">&#160;</td><td class="mdescRight">Draw the template uncertainty histograms created by <a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a611faeda8b08b76181109820e549c232" title="Generates the uncertainty template histograms based on the weights created by MakeWeightCols(). ">MakeTemplateHistos()</a>.  <a href="#a5061b8f5d8934a98f26990aafa9e26db">More...</a><br /></td></tr>
@@ -297,8 +302,8 @@ str </dd></dl>
 
 </div>
 </div>
-<a id="a32bfe7e08329c1207530da3ed0b38ac5"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a32bfe7e08329c1207530da3ed0b38ac5">&#9670;&nbsp;</a></span>AddCorrection()</h2>
+<a id="afe470917a833262458cb26da33e124ec"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#afe470917a833262458cb26da33e124ec">&#9670;&nbsp;</a></span>AddCorrection()</h2>
 
 <div class="memitem">
 <div class="memproto">
@@ -319,7 +324,7 @@ str </dd></dl>
           <td class="paramkey"></td>
           <td></td>
           <td class="paramtype">&#160;</td>
-          <td class="paramname"><em>evalArgs</em> = <code>[]</code>, </td>
+          <td class="paramname"><em>evalArgs</em> = <code>{}</code>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
@@ -942,8 +947,8 @@ str File name </dd></dl>
 
 </div>
 </div>
-<a id="afe44fb85cff031cf2e19c17b36afe935"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#afe44fb85cff031cf2e19c17b36afe935">&#9670;&nbsp;</a></span>GetFlagString()</h2>
+<a id="ade0c62b73ea95b2f11ff8f5add708066"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ade0c62b73ea95b2f11ff8f5add708066">&#9670;&nbsp;</a></span>GetFlagString()</h2>
 
 <div class="memitem">
 <div class="memproto">
@@ -958,7 +963,7 @@ str File name </dd></dl>
           <td class="paramkey"></td>
           <td></td>
           <td class="paramtype">&#160;</td>
-          <td class="paramname"><em>flagList</em>&#160;</td>
+          <td class="paramname"><em>flagList</em> = <code>GetStandardFlags()</code>&#160;</td>
         </tr>
         <tr>
           <td></td>
@@ -1133,7 +1138,7 @@ dict Dictionary with same structure as the input (column names for keys) with ne
       </table>
 </div><div class="memdoc">
 
-<p>Generates the uncertainty template histograms based on the weights created by <a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#adea335ba0db85d4bf48562523fffe963" title="Makes columns/variables to store total weights based on the Corrections that have been added...">MakeWeightCols()</a>. </p>
+<p>Generates the uncertainty template histograms based on the weights created by <a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#af222479f97b45564dfcc91fec275c48b" title="Makes columns/variables to store total weights based on the Corrections that have been added...">MakeWeightCols()</a>. </p>
 <dl class="params"><dt>Parameters</dt><dd>
   <table class="params">
     <tr><td class="paramname">templateHist</td><td>(TH1,TH2,TH3): A TH1, TH2, or TH3 used as a template to create the histograms. </td></tr>
@@ -1148,8 +1153,8 @@ dict Dictionary with same structure as the input (column names for keys) with ne
 
 </div>
 </div>
-<a id="adea335ba0db85d4bf48562523fffe963"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#adea335ba0db85d4bf48562523fffe963">&#9670;&nbsp;</a></span>MakeWeightCols()</h2>
+<a id="af222479f97b45564dfcc91fec275c48b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af222479f97b45564dfcc91fec275c48b">&#9670;&nbsp;</a></span>MakeWeightCols()</h2>
 
 <div class="memitem">
 <div class="memproto">
@@ -1160,6 +1165,12 @@ dict Dictionary with same structure as the input (column names for keys) with ne
           <td class="paramtype">&#160;</td>
           <td class="paramname"><em>self</em>, </td>
         </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">&#160;</td>
+          <td class="paramname"><em>name</em> = <code>''</code>, </td>
+        </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
@@ -1192,6 +1203,7 @@ dict Dictionary with same structure as the input (column names for keys) with ne
 <p>A list of correction names can be provided if only a subset of the corrections being tracked are desired. A drop list can also be supplied to remove a subset of corrections.</p>
 <dl class="params"><dt>Parameters</dt><dd>
   <table class="params">
+    <tr><td class="paramname">name</td><td>(str): Name for group of weights so as not to duplicate weight columns if running method multiple times. Output columns will have suffix <code>weight_&lt;name&gt;__</code>. Defaults to '' with suffix <code>weight__</code>. </td></tr>
     <tr><td class="paramname">node</td><td>(<a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html" title="Class to represent nodes in the DataFrame processing graph. ">Node</a>): <a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html" title="Class to represent nodes in the DataFrame processing graph. ">Node</a> to calculate weights on top of. Must be of type <a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html" title="Class to represent nodes in the DataFrame processing graph. ">Node</a> (not RDataFrame). Defaults to <a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a517b5caa6818e1f61b5b742625e575f4" title="Node. ">ActiveNode</a>. </td></tr>
     <tr><td class="paramname">correctionNames</td><td>list(str): List of correction names (strings) to consider. Default is None in which case all corrections being tracked are considered. </td></tr>
     <tr><td class="paramname">dropList</td><td>list(str): List of correction names (strings) to not consider. Default is empty lists in which case no corrections are dropped from consideration.</td></tr>
@@ -1293,6 +1305,64 @@ dict Dictionary with same structure as the input (column names for keys) with ne
 <dd>
 dict N nodes in dictionary with keys indicating the cut that was not applied. </dd></dl>
 
+</div>
+</div>
+<a id="aa933d8e2ef227f994f60ee3b278eb0f6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa933d8e2ef227f994f60ee3b278eb0f6">&#9670;&nbsp;</a></span>ObjectFromCollection()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ObjectFromCollection </td>
+          <td>(</td>
+          <td class="paramtype">&#160;</td>
+          <td class="paramname"><em>self</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">&#160;</td>
+          <td class="paramname"><em>name</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">&#160;</td>
+          <td class="paramname"><em>basecoll</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">&#160;</td>
+          <td class="paramname"><em>index</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">&#160;</td>
+          <td class="paramname"><em>skip</em> = <code>[]</code>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Similar to creating a SubCollection except the newly defined columns are single values (not vectors/arrays) for the object at the provided index. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">name</td><td>(str): Name of new collection. </td></tr>
+    <tr><td class="paramname">basecoll</td><td>(str): Name of derivative collection. </td></tr>
+    <tr><td class="paramname">index</td><td>(str): Index of the collection item to extract. </td></tr>
+    <tr><td class="paramname">skip</td><td>([str]): List of variable names in the collection to skip.</td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>None. New nodes created with the sub collection.</dd></dl>
+<p><b>Examples</b> </p><div class="fragment"><div class="line">ObjectFromCollection(<span class="stringliteral">&#39;LeadJet&#39;</span>,<span class="stringliteral">&#39;FatJet&#39;</span>,<span class="stringliteral">&#39;0&#39;</span>)</div></div><!-- fragment --> 
 </div>
 </div>
 <a id="a2ef44f04939b9ca846de543ef8c8676e"></a>
@@ -1347,6 +1417,35 @@ dict N nodes in dictionary with keys indicating the cut that was not applied. </
 <dd>
 None </dd></dl>
 
+</div>
+</div>
+<a id="a361306a468fa48145cf99ee48c82bf25"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a361306a468fa48145cf99ee48c82bf25">&#9670;&nbsp;</a></span>Range()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def Range </td>
+          <td>(</td>
+          <td class="paramtype">&#160;</td>
+          <td class="paramname"><em>self</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">&#160;</td>
+          <td class="paramname"><em>argv</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#a361306a468fa48145cf99ee48c82bf25" title="Calls the RDataFrame Range method. ">Node::Range</a> </dd></dl>
+
 </div>
 </div>
 <a id="a3f19f4e3f9344e283f5cf6ae2371fc70"></a>
@@ -1496,12 +1595,14 @@ None </dd></dl>
   <table class="params">
     <tr><td class="paramname">name</td><td>(str): Name of new collection. </td></tr>
     <tr><td class="paramname">basecoll</td><td>(str): Name of derivative collection. </td></tr>
-    <tr><td class="paramname">condition</td><td>(str): C++ condition that determines which items </td></tr>
+    <tr><td class="paramname">condition</td><td>(str): C++ condition that determines which items to keep. </td></tr>
     <tr><td class="paramname">skip</td><td>([str]): List of variable names in the collection to skip.</td></tr>
   </table>
   </dd>
 </dl>
-<dl class="section return"><dt>Returns</dt><dd>None. New nodes created with the sub collection.</dd></dl>
+<dl class="section return"><dt>Returns</dt><dd></dd>
+<dd>
+<a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html" title="Class to represent nodes in the DataFrame processing graph. ">Node</a> New <a class="el" href="class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a517b5caa6818e1f61b5b742625e575f4" title="Node. ">ActiveNode</a>.</dd></dl>
 <p><b>Examples</b> </p><div class="fragment"><div class="line">SubCollection(<span class="stringliteral">&#39;TopJets&#39;</span>,<span class="stringliteral">&#39;FatJet&#39;</span>,<span class="stringliteral">&#39;FatJet_msoftdrop &gt; 105 &amp;&amp; FatJet_msoftdrop &lt; 220&#39;</span>)</div></div><!-- fragment --> 
 </div>
 </div>
diff --git a/docs/class_trigger__weight-members.html b/docs/class_trigger__weight-members.html
index 781d00453c2251b5e11a062b31f48d62574a34c0..12d19609cfc71f77f290aadb4aa176ad2a1b13ea 100644
--- a/docs/class_trigger__weight-members.html
+++ b/docs/class_trigger__weight-members.html
@@ -75,7 +75,7 @@ $(function() {
 
 <p>This is the complete list of members for <a class="el" href="class_trigger__weight.html">Trigger_weight</a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="class_trigger__weight.html#a77ad53e559c5255e944d4d726d2047ef">eval</a>(float var, float plateau=-1.0)</td><td class="entry"><a class="el" href="class_trigger__weight.html">Trigger_weight</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="class_trigger__weight.html#ac846f7f0fce4e3c397d11a0b2dbc5856">eval</a>(float var, float plateau=0)</td><td class="entry"><a class="el" href="class_trigger__weight.html">Trigger_weight</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="class_trigger__weight.html#add6c70823ca2c13e555d3a45ccd2a607">Trigger_weight</a>(std::string filename, std::string histname)</td><td class="entry"><a class="el" href="class_trigger__weight.html">Trigger_weight</a></td><td class="entry"></td></tr>
   <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~Trigger_weight</b>() (defined in <a class="el" href="class_trigger__weight.html">Trigger_weight</a>)</td><td class="entry"><a class="el" href="class_trigger__weight.html">Trigger_weight</a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
diff --git a/docs/class_trigger__weight.html b/docs/class_trigger__weight.html
index d9f88a94a7622391f4df8632c424e8d2343d712d..0beedcd9b3c3c32c9ab55e46d6f1b5d3af055337 100644
--- a/docs/class_trigger__weight.html
+++ b/docs/class_trigger__weight.html
@@ -84,9 +84,9 @@ Public Member Functions</h2></td></tr>
 <tr class="memitem:add6c70823ca2c13e555d3a45ccd2a607"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_trigger__weight.html#add6c70823ca2c13e555d3a45ccd2a607">Trigger_weight</a> (std::string filename, std::string histname)</td></tr>
 <tr class="memdesc:add6c70823ca2c13e555d3a45ccd2a607"><td class="mdescLeft">&#160;</td><td class="mdescRight">Construct a new <a class="el" href="class_trigger__weight.html" title="Specializes in the construction of trigger efficiency weights. Uncertainties are calculated as one ha...">Trigger_weight</a> object.  <a href="#add6c70823ca2c13e555d3a45ccd2a607">More...</a><br /></td></tr>
 <tr class="separator:add6c70823ca2c13e555d3a45ccd2a607"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a77ad53e559c5255e944d4d726d2047ef"><td class="memItemLeft" align="right" valign="top">RVec&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_trigger__weight.html#a77ad53e559c5255e944d4d726d2047ef">eval</a> (float var, float plateau=-1.0)</td></tr>
-<tr class="memdesc:a77ad53e559c5255e944d4d726d2047ef"><td class="mdescLeft">&#160;</td><td class="mdescRight">Evaluates the efficiency as a weight for the provided value, <code>var</code>. Also calculates variations of the weight with uncertainties calculated as one half of the trigger inefficiency.  <a href="#a77ad53e559c5255e944d4d726d2047ef">More...</a><br /></td></tr>
-<tr class="separator:a77ad53e559c5255e944d4d726d2047ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac846f7f0fce4e3c397d11a0b2dbc5856"><td class="memItemLeft" align="right" valign="top">RVec&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_trigger__weight.html#ac846f7f0fce4e3c397d11a0b2dbc5856">eval</a> (float var, float plateau=0)</td></tr>
+<tr class="memdesc:ac846f7f0fce4e3c397d11a0b2dbc5856"><td class="mdescLeft">&#160;</td><td class="mdescRight">Evaluates the efficiency as a weight for the provided value, <code>var</code>. Also calculates variations of the weight with uncertainties calculated as one half of the trigger inefficiency.  <a href="#ac846f7f0fce4e3c397d11a0b2dbc5856">More...</a><br /></td></tr>
+<tr class="separator:ac846f7f0fce4e3c397d11a0b2dbc5856"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <div class="textblock"><p>Specializes in the construction of trigger efficiency weights. Uncertainties are calculated as one half of the trigger inefficiency (ie. (1-eff)/2). </p>
@@ -131,8 +131,8 @@ Public Member Functions</h2></td></tr>
 </div>
 </div>
 <h2 class="groupheader">Member Function Documentation</h2>
-<a id="a77ad53e559c5255e944d4d726d2047ef"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a77ad53e559c5255e944d4d726d2047ef">&#9670;&nbsp;</a></span>eval()</h2>
+<a id="ac846f7f0fce4e3c397d11a0b2dbc5856"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac846f7f0fce4e3c397d11a0b2dbc5856">&#9670;&nbsp;</a></span>eval()</h2>
 
 <div class="memitem">
 <div class="memproto">
@@ -147,7 +147,7 @@ Public Member Functions</h2></td></tr>
           <td class="paramkey"></td>
           <td></td>
           <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>plateau</em> = <code>-1.0</code>&#160;</td>
+          <td class="paramname"><em>plateau</em> = <code>0</code>&#160;</td>
         </tr>
         <tr>
           <td></td>
diff --git a/docs/common_8h_source.html b/docs/common_8h_source.html
index 73e14e90302aae25b91fc99c5854278fe2d68916..a6bb06c1e7c21b2b4b03e6784e6097118f0dc1e2 100644
--- a/docs/common_8h_source.html
+++ b/docs/common_8h_source.html
@@ -76,12 +76,13 @@ $(function() {
 <div class="title">common.h</div>  </div>
 </div><!--header-->
 <div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="preprocessor">#ifndef COMMON_H</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="preprocessor">#define COMMON_H</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;</div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="preprocessor">#include &lt;cmath&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="preprocessor">#include &lt;ROOT/RVec.hxx&gt;</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="preprocessor">#include &lt;TMath.h&gt;</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="preprocessor">#include &lt;Math/GenVector/LorentzVector.h&gt;</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="preprocessor">#include &lt;Math/GenVector/PtEtaPhiM4D.h&gt;</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="preprocessor">#include &lt;Math/Vector4Dfwd.h&gt;</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;</div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespace_r_o_o_t_1_1_vec_ops.html">ROOT::VecOps</a>;</div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacehardware.html">hardware</a> {  </div><div class="line"><a name="l00025"></a><span class="lineno"><a class="line" href="namespacehardware.html#aed751de3ad381dd4b6b17c2b506dea5f">   25</a></span>&#160;    <span class="keywordtype">float</span> <a class="code" href="namespacehardware.html#aed751de3ad381dd4b6b17c2b506dea5f">DeltaPhi</a>(<span class="keywordtype">float</span> phi1,<span class="keywordtype">float</span> phi2) {</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;        <span class="keywordtype">float</span> result = phi1 - phi2;</div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;        <span class="keywordflow">while</span> (result &gt; TMath::Pi()) result -= 2*TMath::Pi();</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;        <span class="keywordflow">while</span> (result &lt;= -TMath::Pi()) result += 2*TMath::Pi();</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;        <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;    }</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;    <span class="keywordtype">float</span> DeltaR(ROOT::Math::PtEtaPhiMVector v1, ROOT::Math::PtEtaPhiMVector v2) {</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;        <span class="keywordtype">float</span> deta = v1.Eta()-v2.Eta();</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;        <span class="keywordtype">float</span> dphi = <a class="code" href="namespacehardware.html#aed751de3ad381dd4b6b17c2b506dea5f">DeltaPhi</a>(v1.Phi(),v2.Phi());</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;        <span class="keywordflow">return</span> sqrt(deta*deta+dphi*dphi);</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;    }</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="namespacehardware.html#a86cac73d45dc208c29d331a6438cc5d1">   46</a></span>&#160;    ROOT::Math::PtEtaPhiMVector <a class="code" href="namespacehardware.html#a86cac73d45dc208c29d331a6438cc5d1">TLvector</a>(<span class="keywordtype">float</span> pt,<span class="keywordtype">float</span> eta,<span class="keywordtype">float</span> phi,<span class="keywordtype">float</span> m) {</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;        ROOT::Math::PtEtaPhiMVector v(pt,eta,phi,m);</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;        <span class="keywordflow">return</span> v;</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;    }</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="namespacehardware.html#abfdf87f14ffb0769dc41c74a62d90b6e">   59</a></span>&#160;    RVec&lt;ROOT::Math::PtEtaPhiMVector&gt; <a class="code" href="namespacehardware.html#a86cac73d45dc208c29d331a6438cc5d1">TLvector</a>(RVec&lt;float&gt; pt,RVec&lt;float&gt; eta,RVec&lt;float&gt; phi,RVec&lt;float&gt; m) {</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;        RVec&lt;ROOT::Math::PtEtaPhiMVector&gt; vs;</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;        <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; pt.size(); i++) {</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;            ROOT::Math::PtEtaPhiMVector v(pt[i],eta[i],phi[i],m[i]);</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;            vs.push_back(v);</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;        }</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;        <span class="keywordflow">return</span> vs;</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;    }</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="namespacehardware.html#aece5e1d3b9c47f248f8bb83f1206b04f">   78</a></span>&#160;    <span class="keywordtype">float</span> <a class="code" href="namespacehardware.html#aece5e1d3b9c47f248f8bb83f1206b04f">transverseMass</a>(<span class="keywordtype">float</span> MET_pt, <span class="keywordtype">float</span> obj_pt, <span class="keywordtype">float</span> MET_phi, <span class="keywordtype">float</span> obj_phi) {</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;        <span class="keywordflow">return</span> sqrt(2.0*MET_pt*obj_pt-(1-cos(<a class="code" href="namespacehardware.html#aed751de3ad381dd4b6b17c2b506dea5f">DeltaPhi</a>(MET_phi,obj_phi))));</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;    }</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="namespacehardware.html#a35a91a442950509fafc36c5d5d4c58ed">   91</a></span>&#160;    <span class="keywordtype">double</span> <a class="code" href="namespacehardware.html#a35a91a442950509fafc36c5d5d4c58ed">invariantMass</a>(RVec&lt;ROOT::Math::PtEtaPhiMVector&gt; vects) {</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;        ROOT::Math::PtEtaPhiMVector sum;</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;        sum.SetCoordinates(0,0,0,0);</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;        <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; vects.size(); i++) {</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;            sum = sum + vects[i];</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;        }</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;        <span class="keywordflow">return</span> sum.M();</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;    }</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;}</div><div class="ttc" id="namespacehardware_html_aece5e1d3b9c47f248f8bb83f1206b04f"><div class="ttname"><a href="namespacehardware.html#aece5e1d3b9c47f248f8bb83f1206b04f">hardware::transverseMass</a></div><div class="ttdeci">float transverseMass(float MET_pt, float obj_pt, float MET_phi, float obj_phi)</div><div class="ttdoc">Calculate the transverse mass from MET  and  and an object&amp;#39;s  and . </div><div class="ttdef"><b>Definition:</b> common.h:78</div></div>
-<div class="ttc" id="namespacehardware_html_a86cac73d45dc208c29d331a6438cc5d1"><div class="ttname"><a href="namespacehardware.html#a86cac73d45dc208c29d331a6438cc5d1">hardware::TLvector</a></div><div class="ttdeci">ROOT::Math::PtEtaPhiMVector TLvector(float pt, float eta, float phi, float m)</div><div class="ttdoc">Create a ROOT::Math::PtEtaPhiMVector. </div><div class="ttdef"><b>Definition:</b> common.h:46</div></div>
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="preprocessor">#ifndef COMMON_H</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="preprocessor">#define COMMON_H</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;</div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="preprocessor">#include &lt;cmath&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="preprocessor">#include &lt;cstdlib&gt;</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="preprocessor">#include &lt;ROOT/RVec.hxx&gt;</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="preprocessor">#include &lt;TMath.h&gt;</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="preprocessor">#include &lt;Math/GenVector/LorentzVector.h&gt;</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="preprocessor">#include &lt;Math/GenVector/PtEtaPhiM4D.h&gt;</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="preprocessor">#include &lt;Math/Vector4Dfwd.h&gt;</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespace_r_o_o_t_1_1_vec_ops.html">ROOT::VecOps</a>;</div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacehardware.html">hardware</a> {  </div><div class="line"><a name="l00026"></a><span class="lineno"><a class="line" href="namespacehardware.html#aed751de3ad381dd4b6b17c2b506dea5f">   26</a></span>&#160;    <span class="keywordtype">float</span> <a class="code" href="namespacehardware.html#aed751de3ad381dd4b6b17c2b506dea5f">DeltaPhi</a>(<span class="keywordtype">float</span> phi1,<span class="keywordtype">float</span> phi2) {</div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;        <span class="keywordtype">float</span> result = phi1 - phi2;</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;        <span class="keywordflow">while</span> (result &gt; TMath::Pi()) result -= 2*TMath::Pi();</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;        <span class="keywordflow">while</span> (result &lt;= -TMath::Pi()) result += 2*TMath::Pi();</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;        <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;    }</div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="namespacehardware.html#ad4b8b087606d67425cb9534692e47e0e">   39</a></span>&#160;    <span class="keywordtype">float</span> <a class="code" href="namespacehardware.html#ad4b8b087606d67425cb9534692e47e0e">DeltaR</a>(ROOT::Math::PtEtaPhiMVector v1, ROOT::Math::PtEtaPhiMVector v2) {</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;        <span class="keywordtype">float</span> deta = v1.Eta()-v2.Eta();</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;        <span class="keywordtype">float</span> dphi = <a class="code" href="namespacehardware.html#aed751de3ad381dd4b6b17c2b506dea5f">DeltaPhi</a>(v1.Phi(),v2.Phi());</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;        <span class="keywordflow">return</span> sqrt(deta*deta+dphi*dphi);</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;    }</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="namespacehardware.html#a86cac73d45dc208c29d331a6438cc5d1">   53</a></span>&#160;    ROOT::Math::PtEtaPhiMVector <a class="code" href="namespacehardware.html#a86cac73d45dc208c29d331a6438cc5d1">TLvector</a>(<span class="keywordtype">float</span> pt,<span class="keywordtype">float</span> eta,<span class="keywordtype">float</span> phi,<span class="keywordtype">float</span> m) {</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;        ROOT::Math::PtEtaPhiMVector v(pt,eta,phi,m);</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;        <span class="keywordflow">return</span> v;</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;    }</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="namespacehardware.html#abfdf87f14ffb0769dc41c74a62d90b6e">   66</a></span>&#160;    RVec&lt;ROOT::Math::PtEtaPhiMVector&gt; <a class="code" href="namespacehardware.html#a86cac73d45dc208c29d331a6438cc5d1">TLvector</a>(RVec&lt;float&gt; pt,RVec&lt;float&gt; eta,RVec&lt;float&gt; phi,RVec&lt;float&gt; m) {</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;        RVec&lt;ROOT::Math::PtEtaPhiMVector&gt; vs;</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;        <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; pt.size(); i++) {</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;            ROOT::Math::PtEtaPhiMVector v(pt[i],eta[i],phi[i],m[i]);</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;            vs.push_back(v);</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;        }</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;        <span class="keywordflow">return</span> vs;</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;    }</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="namespacehardware.html#aece5e1d3b9c47f248f8bb83f1206b04f">   85</a></span>&#160;    <span class="keywordtype">float</span> <a class="code" href="namespacehardware.html#aece5e1d3b9c47f248f8bb83f1206b04f">transverseMass</a>(<span class="keywordtype">float</span> MET_pt, <span class="keywordtype">float</span> obj_pt, <span class="keywordtype">float</span> MET_phi, <span class="keywordtype">float</span> obj_phi) {</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;        <span class="keywordflow">return</span> sqrt(2.0*MET_pt*obj_pt-(1-cos(<a class="code" href="namespacehardware.html#aed751de3ad381dd4b6b17c2b506dea5f">DeltaPhi</a>(MET_phi,obj_phi))));</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;    }</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="namespacehardware.html#a35a91a442950509fafc36c5d5d4c58ed">   98</a></span>&#160;    <span class="keywordtype">double</span> <a class="code" href="namespacehardware.html#a35a91a442950509fafc36c5d5d4c58ed">invariantMass</a>(RVec&lt;ROOT::Math::PtEtaPhiMVector&gt; vects) {</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;        ROOT::Math::PtEtaPhiMVector sum;</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;        sum.SetCoordinates(0,0,0,0);</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;        <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; vects.size(); i++) {</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;            sum = sum + vects[i];</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;        }</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;        <span class="keywordflow">return</span> sum.M();</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;    }</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;    <span class="comment">// std::pair&lt;int,float&gt; closest(obj, collection, presel=lambda x, y: True):</span></div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;    <span class="comment">//     ret = None</span></div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;    <span class="comment">//     drMin = 999</span></div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;    <span class="comment">//     for x in collection:</span></div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;    <span class="comment">//         if not presel(obj, x):</span></div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;    <span class="comment">//             continue</span></div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;    <span class="comment">//         dr = deltaR(obj, x)</span></div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;    <span class="comment">//         if dr &lt; drMin:</span></div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;    <span class="comment">//             ret = x</span></div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;    <span class="comment">//             drMin = dr</span></div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;    <span class="comment">//     return (ret, drMin)</span></div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;    <span class="comment">// def matchObjectCollection(objs,</span></div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;    <span class="comment">//                         collection,</span></div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;    <span class="comment">//                         dRmax=0.4,</span></div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;    <span class="comment">//                         presel=lambda x, y: True):</span></div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;    <span class="comment">//     pairs = {}</span></div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;    <span class="comment">//     if len(objs) == 0:</span></div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;    <span class="comment">//         return pairs</span></div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;    <span class="comment">//     if len(collection) == 0:</span></div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;    <span class="comment">//         return dict(list(zip(objs, [None] * len(objs))))</span></div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;    <span class="comment">//     for obj in objs:</span></div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;    <span class="comment">//         (bm, dR) = closest(obj,</span></div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;    <span class="comment">//                         [mobj for mobj in collection if presel(obj, mobj)])</span></div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;    <span class="comment">//         if dR &lt; dRmax:</span></div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;    <span class="comment">//             pairs[obj] = bm</span></div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;    <span class="comment">//         else:</span></div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;    <span class="comment">//             pairs[obj] = None</span></div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;    <span class="comment">//     return pairs</span></div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;    <span class="comment">// def matchObjectCollectionMultiple(</span></div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;    <span class="comment">//         objs,</span></div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;    <span class="comment">//         collection,</span></div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;    <span class="comment">//         dRmax=0.4,</span></div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;    <span class="comment">//         presel=lambda x, y: True</span></div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;    <span class="comment">// ):</span></div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;    <span class="comment">//     pairs = {}</span></div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;    <span class="comment">//     if len(objs) == 0:</span></div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;    <span class="comment">//         return pairs</span></div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;    <span class="comment">//     if len(collection) == 0:</span></div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;    <span class="comment">//         return dict(list(zip(objs, [None] * len(objs))))</span></div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;    <span class="comment">//     for obj in objs:</span></div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;    <span class="comment">//         matched = []</span></div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;    <span class="comment">//         for c in collection:</span></div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;    <span class="comment">//             if presel(obj, c) and deltaR(obj, c) &lt; dRmax:</span></div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;    <span class="comment">//                 matched.append(c)</span></div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;    <span class="comment">//         pairs[obj] = matched</span></div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;    <span class="comment">//     return pairs</span></div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;}</div><div class="ttc" id="namespacehardware_html_aece5e1d3b9c47f248f8bb83f1206b04f"><div class="ttname"><a href="namespacehardware.html#aece5e1d3b9c47f248f8bb83f1206b04f">hardware::transverseMass</a></div><div class="ttdeci">float transverseMass(float MET_pt, float obj_pt, float MET_phi, float obj_phi)</div><div class="ttdoc">Calculate the transverse mass from MET  and  and an object&amp;#39;s  and . </div><div class="ttdef"><b>Definition:</b> common.h:85</div></div>
+<div class="ttc" id="namespacehardware_html_a86cac73d45dc208c29d331a6438cc5d1"><div class="ttname"><a href="namespacehardware.html#a86cac73d45dc208c29d331a6438cc5d1">hardware::TLvector</a></div><div class="ttdeci">ROOT::Math::PtEtaPhiMVector TLvector(float pt, float eta, float phi, float m)</div><div class="ttdoc">Create a ROOT::Math::PtEtaPhiMVector. </div><div class="ttdef"><b>Definition:</b> common.h:53</div></div>
 <div class="ttc" id="namespacehardware_html"><div class="ttname"><a href="namespacehardware.html">hardware</a></div><div class="ttdoc">Namespace for common physics functions. </div></div>
-<div class="ttc" id="namespacehardware_html_aed751de3ad381dd4b6b17c2b506dea5f"><div class="ttname"><a href="namespacehardware.html#aed751de3ad381dd4b6b17c2b506dea5f">hardware::DeltaPhi</a></div><div class="ttdeci">float DeltaPhi(float phi1, float phi2)</div><div class="ttdoc">Calculate the difference in . </div><div class="ttdef"><b>Definition:</b> common.h:25</div></div>
+<div class="ttc" id="namespacehardware_html_ad4b8b087606d67425cb9534692e47e0e"><div class="ttname"><a href="namespacehardware.html#ad4b8b087606d67425cb9534692e47e0e">hardware::DeltaR</a></div><div class="ttdeci">float DeltaR(ROOT::Math::PtEtaPhiMVector v1, ROOT::Math::PtEtaPhiMVector v2)</div><div class="ttdoc">Calculate  between two vectors. </div><div class="ttdef"><b>Definition:</b> common.h:39</div></div>
+<div class="ttc" id="namespacehardware_html_aed751de3ad381dd4b6b17c2b506dea5f"><div class="ttname"><a href="namespacehardware.html#aed751de3ad381dd4b6b17c2b506dea5f">hardware::DeltaPhi</a></div><div class="ttdeci">float DeltaPhi(float phi1, float phi2)</div><div class="ttdoc">Calculate the difference in . </div><div class="ttdef"><b>Definition:</b> common.h:26</div></div>
 <div class="ttc" id="namespace_r_o_o_t_1_1_vec_ops_html"><div class="ttname"><a href="namespace_r_o_o_t_1_1_vec_ops.html">VecOps</a></div></div>
-<div class="ttc" id="namespacehardware_html_a35a91a442950509fafc36c5d5d4c58ed"><div class="ttname"><a href="namespacehardware.html#a35a91a442950509fafc36c5d5d4c58ed">hardware::invariantMass</a></div><div class="ttdeci">double invariantMass(RVec&lt; ROOT::Math::PtEtaPhiMVector &gt; vects)</div><div class="ttdoc">Calculates the invariant mass of a vector of Lorentz vectors (ROOT::Math::PtEtaPhiMVector). Note that this is an alternative to ROOT::VecOps::InvariantMasses() which does not need the intermediate Lorentz vector. </div><div class="ttdef"><b>Definition:</b> common.h:91</div></div>
+<div class="ttc" id="namespacehardware_html_a35a91a442950509fafc36c5d5d4c58ed"><div class="ttname"><a href="namespacehardware.html#a35a91a442950509fafc36c5d5d4c58ed">hardware::invariantMass</a></div><div class="ttdeci">double invariantMass(RVec&lt; ROOT::Math::PtEtaPhiMVector &gt; vects)</div><div class="ttdoc">Calculates the invariant mass of a vector of Lorentz vectors (ROOT::Math::PtEtaPhiMVector). Note that this is an alternative to ROOT::VecOps::InvariantMasses() which does not need the intermediate Lorentz vector. </div><div class="ttdef"><b>Definition:</b> common.h:98</div></div>
 </div><!-- fragment --></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/group___common.html b/docs/group___common.html
index 131aa7df3195f9a5917271021e0b37afdc2cc907..6d1c45f17b5642eb530ff8b82d08819184c5ed54 100644
--- a/docs/group___common.html
+++ b/docs/group___common.html
@@ -80,6 +80,9 @@ $(function() {
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
 Functions</h2></td></tr>
+<tr class="memitem:gae6b78b44267b07448079c63bfe9a8413"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___common.html#gae6b78b44267b07448079c63bfe9a8413">CutflowDict</a> (node)</td></tr>
+<tr class="memdesc:gae6b78b44267b07448079c63bfe9a8413"><td class="mdescLeft">&#160;</td><td class="mdescRight">Turns the RDataFrame cutflow report into an OrderedDict.  <a href="group___common.html#gae6b78b44267b07448079c63bfe9a8413">More...</a><br /></td></tr>
+<tr class="separator:gae6b78b44267b07448079c63bfe9a8413"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ga9d19a9ceee7d4de34321b40563c1070a"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___common.html#ga9d19a9ceee7d4de34321b40563c1070a">CutflowHist</a> (name, node, efficiency=False)</td></tr>
 <tr class="memdesc:ga9d19a9ceee7d4de34321b40563c1070a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Draws a cutflow histogram using the report feature of RDF.  <a href="group___common.html#ga9d19a9ceee7d4de34321b40563c1070a">More...</a><br /></td></tr>
 <tr class="separator:ga9d19a9ceee7d4de34321b40563c1070a"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -122,6 +125,9 @@ Functions</h2></td></tr>
 <tr class="memitem:gaa4e8229330d67d54397e18048078ddd2"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___common.html#gaa4e8229330d67d54397e18048078ddd2">FindCommonString</a> (string_list)</td></tr>
 <tr class="memdesc:gaa4e8229330d67d54397e18048078ddd2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Finds a common string between a list of strings.  <a href="group___common.html#gaa4e8229330d67d54397e18048078ddd2">More...</a><br /></td></tr>
 <tr class="separator:gaa4e8229330d67d54397e18048078ddd2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga362ce18096811fbbc2dba955e605ffa0"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___common.html#ga362ce18096811fbbc2dba955e605ffa0">GetStandardFlags</a> ()</td></tr>
+<tr class="memdesc:ga362ce18096811fbbc2dba955e605ffa0"><td class="mdescLeft">&#160;</td><td class="mdescRight">List of the following recommended flags as of Jan.  <a href="group___common.html#ga362ce18096811fbbc2dba955e605ffa0">More...</a><br /></td></tr>
+<tr class="separator:ga362ce18096811fbbc2dba955e605ffa0"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ga6e0f471be6c0aab5d2c8390cd3337aa2"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___common.html#ga6e0f471be6c0aab5d2c8390cd3337aa2">cd</a> (newdir)</td></tr>
 <tr class="memdesc:ga6e0f471be6c0aab5d2c8390cd3337aa2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Context manager to cd to another folder in the middle of a python script.  <a href="group___common.html#ga6e0f471be6c0aab5d2c8390cd3337aa2">More...</a><br /></td></tr>
 <tr class="separator:ga6e0f471be6c0aab5d2c8390cd3337aa2"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -311,6 +317,35 @@ str String with new spacing between words. </dd></dl>
 <dd>
 str Concatenated string of the entire evaluation that in C++ will return a bool. </dd></dl>
 
+</div>
+</div>
+<a id="gae6b78b44267b07448079c63bfe9a8413"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gae6b78b44267b07448079c63bfe9a8413">&#9670;&nbsp;</a></span>CutflowDict()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def TIMBER.Tools.Common.CutflowDict </td>
+          <td>(</td>
+          <td class="paramtype">&#160;</td>
+          <td class="paramname"><em>node</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Turns the RDataFrame cutflow report into an OrderedDict. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">node</td><td>(Node): Input Node from which to get the cutflow.</td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd></dd>
+<dd>
+OrderedDict Ordered cutflow dictionary with filter names as keys and number of events as values. </dd></dl>
+
 </div>
 </div>
 <a id="ga9d19a9ceee7d4de34321b40563c1070a"></a>
@@ -615,6 +650,27 @@ str Matched sub-string. </dd></dl>
 </dl>
 <dl class="section return"><dt>Returns</dt><dd>tuple(tuple, int): First element of return is the binning and the second element is the dimension. </dd></dl>
 
+</div>
+</div>
+<a id="ga362ce18096811fbbc2dba955e605ffa0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga362ce18096811fbbc2dba955e605ffa0">&#9670;&nbsp;</a></span>GetStandardFlags()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def TIMBER.Tools.Common.GetStandardFlags </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>List of the following recommended flags as of Jan. </p>
+<p>6th, 2021.</p>
+<dl class="section return"><dt>Returns</dt><dd><div class="fragment"><div class="line">[<span class="stringliteral">&quot;Flag_goodVertices&quot;</span>,</div><div class="line"> <span class="stringliteral">&quot;Flag_globalTightHalo2016Filter&quot;</span>,</div><div class="line"> <span class="stringliteral">&quot;Flag_eeBadScFilter&quot;</span>,</div><div class="line"> <span class="stringliteral">&quot;Flag_HBHENoiseFilter&quot;</span>,</div><div class="line"> <span class="stringliteral">&quot;Flag_HBHENoiseIsoFilter&quot;</span>,</div><div class="line"> <span class="stringliteral">&quot;Flag_ecalBadCalibFilter&quot;</span>,</div><div class="line"> <span class="stringliteral">&quot;Flag_EcalDeadCellTriggerPrimitiveFilter&quot;</span>]</div></div><!-- fragment --></dd></dl>
+
 </div>
 </div>
 <a id="ga4b63a003f89b48ce9f994c29a40dcf96"></a>
diff --git a/docs/group___plot.html b/docs/group___plot.html
index fa3c473527a69889413145a851e2192d321ac0a1..b271c90694e389e262d9130392630ecde4dd27cc 100644
--- a/docs/group___plot.html
+++ b/docs/group___plot.html
@@ -431,7 +431,6 @@ TH1 Histogram of the pull. </dd></dl>
 <p>The script will automatically find which of these to do and if the signal peak is not at edge of the space. If it is not at the edge, it will find the signal peak and build the cumulative distributions backwards to the left of the peak and forwards to the right of the peak.</p>
 <dl class="params"><dt>Parameters</dt><dd>
   <table class="params">
-    <tr><td class="paramname">pad</td><td>TPad that's already built </td></tr>
     <tr><td class="paramname">stack_of_bkgs</td><td>Stack of backgrounds, already normalized together, and as a sum normalized to 1. </td></tr>
     <tr><td class="paramname">signal</td><td>One histogram for signal. Can only calculate s/sqrt(b) one signal at a time.</td></tr>
   </table>
diff --git a/docs/md__t_i_m_b_e_r__framework__gen_matching.html b/docs/md__t_i_m_b_e_r__framework__gen_matching.html
index 877767b294056361a07ac3a2a0d320010879f885..67d614e4efbdd5646c17d2f84e2a231d706e38f0 100644
--- a/docs/md__t_i_m_b_e_r__framework__gen_matching.html
+++ b/docs/md__t_i_m_b_e_r__framework__gen_matching.html
@@ -79,7 +79,7 @@ $(function() {
 <p>First, one should construct the skeleton of the function.</p>
 <div class="fragment"><div class="line"><span class="preprocessor">#include &quot;Math/Vector4Dfwd.h&quot;</span></div><div class="line"><span class="preprocessor">#include &quot;TIMBER/Framework/include/GenMatching.h&quot;</span></div><div class="line"></div><div class="line"><span class="keyword">using</span> LVector = ROOT::Math::PtEtaPhiMVector;</div><div class="line"></div><div class="line"><span class="keywordtype">int</span> NMerged(LVector top_vect, <span class="keywordtype">int</span> nGenPart,</div><div class="line">                RVec&lt;float&gt; GenPart_pt, RVec&lt;float&gt; GenPart_eta,</div><div class="line">                RVec&lt;float&gt; GenPart_phi, RVec&lt;float&gt; GenPart_mass,</div><div class="line">                RVec&lt;int&gt; GenPart_pdgId, RVec&lt;int&gt; GenPart_status,</div><div class="line">                RVec&lt;int&gt; GenPart_statusFlags, RVec&lt;int&gt; GenPart_genPartIdxMother) {</div><div class="line"></div><div class="line">    <span class="keywordtype">int</span> nmerged = 0;</div><div class="line">    <span class="comment">/*</span></div><div class="line"><span class="comment">        rest of the code here</span></div><div class="line"><span class="comment">    */</span></div><div class="line"></div><div class="line">    <span class="keywordflow">return</span> nmerged;</div><div class="line">}</div></div><!-- fragment --><p>Now create a <a class="el" href="class_gen_particle_objs.html" title="Object that stores and manipulates the information for gen particles. Stores all gen particles in the...">GenParticleObjs</a> instance. This is effectively reconfigures the input information from vectors of properties to a vector of <a class="el" href="class_particle.html" title="Stores identifying features of a particle in the GenPart collection. ">Particle</a> objects, each with its own properties. Adding to the <code>rest of the code here</code> area...</p>
 <div class="fragment"><div class="line"><a class="code" href="class_gen_particle_objs.html">GenParticleObjs</a> GenParticles (GenPart_pt, GenPart_eta,</div><div class="line">                                  GenPart_phi, GenPart_mass,</div><div class="line">                                  GenPart_pdgId, GenPart_status,</div><div class="line">                                  GenPart_statusFlags, GenPart_genPartIdxMother);</div></div><!-- fragment --><p>Now initialize the tree and some storage objects...</p>
-<div class="fragment"><div class="line"><a class="code" href="class_gen_particle_tree.html">GenParticleTree</a> GPT;</div><div class="line"><span class="comment">// prongs are final particles we&#39;ll check</span></div><div class="line">vector&lt;Particle*&gt; tops, Ws, quarks, prongs; </div></div><!-- fragment --><p>Now we can start filling in the tree and tracking particle we care about (top, W, non-top quarks)... </p><div class="fragment"><div class="line"><span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; nGenPart; i++) {</div><div class="line">    GenParticles.SetIndex(i); <span class="comment">// access ith particle</span></div><div class="line">    <a class="code" href="class_particle.html">Particle</a>* this_particle = &amp;GenParticles.particle;</div><div class="line">    GPT.<a class="code" href="class_gen_particle_tree.html#abb1f8139f3e928faf36ad322697fd5af">AddParticle</a>(this_particle); <span class="comment">// add particle to tree</span></div><div class="line"></div><div class="line">    <span class="keywordtype">int</span> this_pdgId = *(this_particle-&gt;<a class="code" href="class_particle.html#a3fdb24d523e00a1ce48a6dd2a2c283cd">pdgId</a>);</div><div class="line"></div><div class="line">    <span class="keywordflow">if</span> (abs(this_pdgId) == 6 &amp;&amp; this_particle-&gt;<a class="code" href="class_particle.html#a217625337b1642ead85a1fb1c0c80660">DeltaR</a>(top_vect) &lt; 0.8) {</div><div class="line">        tops.push_back(this_particle);</div><div class="line">    } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (abs(this_pdgId) == 24) {</div><div class="line">        Ws.push_back(this_particle);</div><div class="line">    } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (abs(this_pdgId) &gt;= 1 &amp;&amp; abs(this_pdgId) &lt;= 5) {</div><div class="line">        quarks.push_back(this_particle);</div><div class="line">    }</div><div class="line">}</div></div><!-- fragment --><p>With the tree built and all of the tops, Ws, and non-top quarks tracked, we'll look for the bottom quark (from the matching top). </p><div class="fragment"><div class="line"><a class="code" href="class_particle.html">Particle</a> *q, *bottom_parent;</div><div class="line"><span class="keywordflow">for</span> (<span class="keywordtype">int</span> iq = 0; iq &lt; quarks.size(); iq++) {</div><div class="line">    q = quarks[iq];</div><div class="line">    <span class="keywordflow">if</span> (abs(*(q-&gt;<a class="code" href="class_particle.html#a3fdb24d523e00a1ce48a6dd2a2c283cd">pdgId</a>)) == 5) { <span class="comment">// if bottom</span></div><div class="line">        bottom_parent = GPT.<a class="code" href="class_gen_particle_tree.html#a7f812e9b9b5de2498fa03ba6003af7e9">GetParent</a>(q);</div><div class="line">        <span class="keywordflow">if</span> (bottom_parent-&gt;<a class="code" href="class_particle.html#a8b3ab54ed3e81c69863d65e4e6c424a0">flag</a> != <span class="keyword">false</span>) { <span class="comment">// if has parent</span></div><div class="line">            <span class="comment">// if parent is a matched top</span></div><div class="line">            <span class="keywordflow">if</span> (abs(*(bottom_parent-&gt;<a class="code" href="class_particle.html#a3fdb24d523e00a1ce48a6dd2a2c283cd">pdgId</a>)) == 6 &amp;&amp; bottom_parent-&gt;<a class="code" href="class_particle.html#a217625337b1642ead85a1fb1c0c80660">DeltaR</a>(top_vect) &lt; 0.8) { </div><div class="line">                prongs.push_back(q);</div><div class="line">            }</div><div class="line">        }</div><div class="line">    }</div><div class="line">}</div></div><!-- fragment --><p>Next, look for W (from the matching top) and then get the daughter quarks. </p><div class="fragment"><div class="line"><a class="code" href="class_particle.html">Particle</a> *W, *this_W, *wChild, *wParent;</div><div class="line">vector&lt;Particle*&gt; this_W_children;</div><div class="line"><span class="keywordflow">for</span> (<span class="keywordtype">int</span> iW = 0; iW &lt; Ws.size(); iW++) {</div><div class="line">    W = Ws[iW];</div><div class="line">    wParent = GPT.<a class="code" href="class_gen_particle_tree.html#a7f812e9b9b5de2498fa03ba6003af7e9">GetParent</a>(W);</div><div class="line">    <span class="keywordflow">if</span> (wParent-&gt;<a class="code" href="class_particle.html#a8b3ab54ed3e81c69863d65e4e6c424a0">flag</a> != <span class="keyword">false</span>) {</div><div class="line">        <span class="comment">// Make sure parent is top that&#39;s in the jet</span></div><div class="line">        <span class="keywordflow">if</span> (abs(*(wParent-&gt;<a class="code" href="class_particle.html#a3fdb24d523e00a1ce48a6dd2a2c283cd">pdgId</a>)) == 6 &amp;&amp; wParent-&gt;<a class="code" href="class_particle.html#a217625337b1642ead85a1fb1c0c80660">DeltaR</a>(top_vect) &lt; 0.8) {</div><div class="line">            this_W = W;</div><div class="line">            this_W_children = GPT.<a class="code" href="class_gen_particle_tree.html#ad4512e01e57691c5498e42064e95227a">GetChildren</a>(this_W);</div><div class="line">            <span class="comment">// Make sure the child is not just another W</span></div><div class="line">            <span class="keywordflow">if</span> (this_W_children.size() == 1 &amp;&amp; this_W_children[0]-&gt;pdgId == W-&gt;<a class="code" href="class_particle.html#a3fdb24d523e00a1ce48a6dd2a2c283cd">pdgId</a>) {</div><div class="line">                this_W = this_W_children[0];</div><div class="line">                this_W_children = GPT.<a class="code" href="class_gen_particle_tree.html#ad4512e01e57691c5498e42064e95227a">GetChildren</a>(this_W);</div><div class="line">            }</div><div class="line">            <span class="comment">// Add children as prongs</span></div><div class="line">            <span class="keywordflow">for</span> (<span class="keywordtype">int</span> ichild = 0; ichild &lt; this_W_children.size(); ichild++) {</div><div class="line">                wChild = this_W_children[ichild];</div><div class="line">                <span class="keywordtype">int</span> child_pdgId = *(wChild-&gt;<a class="code" href="class_particle.html#a3fdb24d523e00a1ce48a6dd2a2c283cd">pdgId</a>);</div><div class="line">                <span class="keywordflow">if</span> (abs(child_pdgId) &gt;= 1 &amp;&amp; abs(child_pdgId) &lt;= 5) {</div><div class="line">                    prongs.push_back(wChild);</div><div class="line">                }</div><div class="line">            } </div><div class="line">        }</div><div class="line">    }</div><div class="line">}</div></div><!-- fragment --><p>Finally, check how many of the prongs found are within the radius of the jet and return... </p><div class="fragment"><div class="line"><span class="keywordflow">for</span> (<span class="keywordtype">int</span> iprong = 0; iprong &lt; prongs.size(); iprong++) {</div><div class="line">    <span class="keywordflow">if</span> (prongs[iprong]-&gt;DeltaR(top_vect) &lt; 0.8) {</div><div class="line">        nmerged++;</div><div class="line">    }</div><div class="line">}</div><div class="line"></div><div class="line"><span class="keywordflow">return</span> nmerged;</div></div><!-- fragment --> </div></div><!-- contents -->
+<div class="fragment"><div class="line"><a class="code" href="class_gen_particle_tree.html">GenParticleTree</a> GPT;</div><div class="line"><span class="comment">// prongs are final particles we&#39;ll check</span></div><div class="line">vector&lt;Particle*&gt; tops, Ws, quarks, prongs; </div></div><!-- fragment --><p>Now we can start filling in the tree and tracking particle we care about (top, W, non-top quarks)... </p><div class="fragment"><div class="line"><span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; nGenPart; i++) {</div><div class="line">    GenParticles.SetIndex(i); <span class="comment">// access ith particle</span></div><div class="line">    <a class="code" href="class_particle.html">Particle</a>* this_particle = &amp;GenParticles.particle;</div><div class="line">    GPT.<a class="code" href="class_gen_particle_tree.html#abb1f8139f3e928faf36ad322697fd5af">AddParticle</a>(this_particle); <span class="comment">// add particle to tree</span></div><div class="line"></div><div class="line">    <span class="keywordtype">int</span> this_pdgId = *(this_particle-&gt;<a class="code" href="class_particle.html#a3fdb24d523e00a1ce48a6dd2a2c283cd">pdgId</a>);</div><div class="line"></div><div class="line">    <span class="keywordflow">if</span> (abs(this_pdgId) == 6 &amp;&amp; this_particle-&gt;<a class="code" href="class_particle.html#a217625337b1642ead85a1fb1c0c80660">DeltaR</a>(top_vect) &lt; 0.8) {</div><div class="line">        tops.push_back(this_particle);</div><div class="line">    } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (abs(this_pdgId) == 24) {</div><div class="line">        Ws.push_back(this_particle);</div><div class="line">    } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (abs(this_pdgId) &gt;= 1 &amp;&amp; abs(this_pdgId) &lt;= 5) {</div><div class="line">        quarks.push_back(this_particle);</div><div class="line">    }</div><div class="line">}</div></div><!-- fragment --><p>With the tree built and all of the tops, Ws, and non-top quarks tracked, we'll look for the bottom quark (from the matching top). </p><div class="fragment"><div class="line"><a class="code" href="class_particle.html">Particle</a> *q, *bottom_parent;</div><div class="line"><span class="keywordflow">for</span> (<span class="keywordtype">int</span> iq = 0; iq &lt; quarks.size(); iq++) {</div><div class="line">    q = quarks[iq];</div><div class="line">    <span class="keywordflow">if</span> (abs(*(q-&gt;<a class="code" href="class_particle.html#a3fdb24d523e00a1ce48a6dd2a2c283cd">pdgId</a>)) == 5) { <span class="comment">// if bottom</span></div><div class="line">        bottom_parent = GPT.<a class="code" href="class_gen_particle_tree.html#a7f812e9b9b5de2498fa03ba6003af7e9">GetParent</a>(q);</div><div class="line">        <span class="keywordflow">if</span> (bottom_parent-&gt;<a class="code" href="class_particle.html#a8b3ab54ed3e81c69863d65e4e6c424a0">flag</a> != <span class="keyword">false</span>) { <span class="comment">// if has parent</span></div><div class="line">            <span class="comment">// if parent is a matched top</span></div><div class="line">            <span class="keywordflow">if</span> (abs(*(bottom_parent-&gt;<a class="code" href="class_particle.html#a3fdb24d523e00a1ce48a6dd2a2c283cd">pdgId</a>)) == 6 &amp;&amp; bottom_parent-&gt;<a class="code" href="class_particle.html#a217625337b1642ead85a1fb1c0c80660">DeltaR</a>(top_vect) &lt; 0.8) { </div><div class="line">                prongs.push_back(q);</div><div class="line">            }</div><div class="line">        }</div><div class="line">    }</div><div class="line">}</div></div><!-- fragment --><p>Next, look for W (from the matching top) and then get the daughter quarks. </p><div class="fragment"><div class="line"><a class="code" href="class_particle.html">Particle</a> *W, *this_W, *wChild, *wParent;</div><div class="line">vector&lt;Particle*&gt; this_W_children;</div><div class="line"><span class="keywordflow">for</span> (<span class="keywordtype">int</span> iW = 0; iW &lt; Ws.size(); iW++) {</div><div class="line">    W = Ws[iW];</div><div class="line">    wParent = GPT.<a class="code" href="class_gen_particle_tree.html#a7f812e9b9b5de2498fa03ba6003af7e9">GetParent</a>(W);</div><div class="line">    <span class="keywordflow">if</span> (wParent-&gt;<a class="code" href="class_particle.html#a8b3ab54ed3e81c69863d65e4e6c424a0">flag</a> != <span class="keyword">false</span>) {</div><div class="line">        <span class="comment">// Make sure parent is top that&#39;s in the jet</span></div><div class="line">        <span class="keywordflow">if</span> (abs(*(wParent-&gt;<a class="code" href="class_particle.html#a3fdb24d523e00a1ce48a6dd2a2c283cd">pdgId</a>)) == 6 &amp;&amp; wParent-&gt;<a class="code" href="class_particle.html#a217625337b1642ead85a1fb1c0c80660">DeltaR</a>(top_vect) &lt; 0.8) {</div><div class="line">            this_W = W;</div><div class="line">            this_W_children = GPT.<a class="code" href="class_gen_particle_tree.html#ad4512e01e57691c5498e42064e95227a">GetChildren</a>(this_W);</div><div class="line">            <span class="comment">// Make sure the child is not just another W</span></div><div class="line">            <span class="keywordflow">if</span> (this_W_children.size() == 1 &amp;&amp; this_W_children[0]-&gt;pdgId == W-&gt;<a class="code" href="class_particle.html#a3fdb24d523e00a1ce48a6dd2a2c283cd">pdgId</a>) {</div><div class="line">                this_W = this_W_children[0];</div><div class="line">                this_W_children = GPT.<a class="code" href="class_gen_particle_tree.html#ad4512e01e57691c5498e42064e95227a">GetChildren</a>(this_W);</div><div class="line">            }</div><div class="line">            <span class="comment">// Add children as prongs</span></div><div class="line">            <span class="keywordflow">for</span> (<span class="keywordtype">int</span> ichild = 0; ichild &lt; this_W_children.size(); ichild++) {</div><div class="line">                wChild = this_W_children[ichild];</div><div class="line">                <span class="keywordtype">int</span> child_pdgId = *(wChild-&gt;<a class="code" href="class_particle.html#a3fdb24d523e00a1ce48a6dd2a2c283cd">pdgId</a>);</div><div class="line">                <span class="keywordflow">if</span> (abs(child_pdgId) &gt;= 1 &amp;&amp; abs(child_pdgId) &lt;= 5) {</div><div class="line">                    prongs.push_back(wChild);</div><div class="line">                }</div><div class="line">            } </div><div class="line">        }</div><div class="line">    }</div><div class="line">}</div></div><!-- fragment --><p>Finally, check how many of the prongs found are within the radius of the jet and return... </p><div class="fragment"><div class="line"><span class="keywordflow">for</span> (<span class="keywordtype">int</span> iprong = 0; iprong &lt; prongs.size(); iprong++) {</div><div class="line">    <span class="keywordflow">if</span> (prongs[iprong]-&gt;<a class="code" href="namespacehardware.html#ad4b8b087606d67425cb9534692e47e0e">DeltaR</a>(top_vect) &lt; 0.8) {</div><div class="line">        nmerged++;</div><div class="line">    }</div><div class="line">}</div><div class="line"></div><div class="line"><span class="keywordflow">return</span> nmerged;</div></div><!-- fragment --> </div></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
 Generated by &#160;<a href="http://www.doxygen.org/index.html">
diff --git a/docs/md__t_i_m_b_e_r_data__r_e_a_d_m_e.html b/docs/md__t_i_m_b_e_r_data__r_e_a_d_m_e.html
index 164d18ffc0dfad0fc2ca24dbdee79c5e1407435b..b0c67c946dc356ce49593a14755e0f3370dd9d4f 100644
--- a/docs/md__t_i_m_b_e_r_data__r_e_a_d_m_e.html
+++ b/docs/md__t_i_m_b_e_r_data__r_e_a_d_m_e.html
@@ -84,13 +84,13 @@ $(function() {
 <h2>Scale Factors</h2>
 <table class="doxtable">
 <tr>
-<th>Correction </th><th>Group </th><th>Date added </th><th>File </th><th>JHUanalyzer module(s) </th><th>Sources  </th></tr>
+<th>Correction </th><th>Group </th><th>Date added </th><th>File </th><th>TIMBER module(s) </th><th>Sources  </th></tr>
 <tr>
-<td>DeepCSV (2016 Legacy) </td><td>BTV </td><td>Jan 9, 2020 </td><td>DeepCSV_2016LegacySF_V1.csv </td><td>None </td><td><a href="https://twiki.cern.ch/twiki/bin/viewauth/CMS/BtagRecommendation2016Legacy">Twiki</a> </td></tr>
+<td>DeepCSV (2016 Legacy) </td><td>BTV </td><td>Jan 9, 2020 </td><td>DeepCSV_2016LegacySF_V1.csv </td><td>SJBtag_SF.cc </td><td><a href="https://twiki.cern.ch/twiki/bin/viewauth/CMS/BtagRecommendation2016Legacy">Twiki</a> </td></tr>
 <tr>
-<td>DeepCSV (2017) </td><td>BTV </td><td>Jan 9, 2020 </td><td>DeepCSV_94XSF_V4_B_F.csv </td><td>None </td><td><a href="https://twiki.cern.ch/twiki/bin/viewauth/CMS/BtagRecommendation94X">Twiki</a> </td></tr>
+<td>DeepCSV (2017) </td><td>BTV </td><td>Jan 9, 2020 </td><td>DeepCSV_94XSF_V4_B_F.csv </td><td>SJBtag_SF.cc </td><td><a href="https://twiki.cern.ch/twiki/bin/viewauth/CMS/BtagRecommendation94X">Twiki</a> </td></tr>
 <tr>
-<td>DeepCSV (2018) </td><td>BTV </td><td>Jan 9, 2020 </td><td>DeepCSV_102XSF_V1.csv </td><td>None </td><td><a href="https://twiki.cern.ch/twiki/bin/viewauth/CMS/BtagRecommendation102X">Twiki</a> </td></tr>
+<td>DeepCSV (2018) </td><td>BTV </td><td>Jan 9, 2020 </td><td>DeepCSV_102XSF_V1.csv </td><td>SJBtag_SF.cc </td><td><a href="https://twiki.cern.ch/twiki/bin/viewauth/CMS/BtagRecommendation102X">Twiki</a> </td></tr>
 <tr>
 <td>Top tagging </td><td>JME </td><td>Sept 22, 2020 </td><td>201*TopTaggingScaleFactors*.root </td><td>None </td><td><a href="https://twiki.cern.ch/twiki/bin/viewauth/CMS/JetTopTagging">Twiki</a> <a href="https://github.com/cms-jet/TopTaggingScaleFactors">GitHub</a> </td></tr>
 </table>
diff --git a/docs/namespacehardware.html b/docs/namespacehardware.html
index 97a31aceeda7c4748672e279474c139459db7ede..8c7ff5c18ea393192c504e83289044c645d03ac9 100644
--- a/docs/namespacehardware.html
+++ b/docs/namespacehardware.html
@@ -83,8 +83,8 @@ Functions</h2></td></tr>
 <tr class="memitem:aed751de3ad381dd4b6b17c2b506dea5f"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacehardware.html#aed751de3ad381dd4b6b17c2b506dea5f">DeltaPhi</a> (float phi1, float phi2)</td></tr>
 <tr class="memdesc:aed751de3ad381dd4b6b17c2b506dea5f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate the difference in \(\phi\).  <a href="#aed751de3ad381dd4b6b17c2b506dea5f">More...</a><br /></td></tr>
 <tr class="separator:aed751de3ad381dd4b6b17c2b506dea5f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad4b8b087606d67425cb9534692e47e0e"><td class="memItemLeft" align="right" valign="top"><a id="ad4b8b087606d67425cb9534692e47e0e"></a>
-float&#160;</td><td class="memItemRight" valign="bottom"><b>DeltaR</b> (ROOT::Math::PtEtaPhiMVector v1, ROOT::Math::PtEtaPhiMVector v2)</td></tr>
+<tr class="memitem:ad4b8b087606d67425cb9534692e47e0e"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacehardware.html#ad4b8b087606d67425cb9534692e47e0e">DeltaR</a> (ROOT::Math::PtEtaPhiMVector v1, ROOT::Math::PtEtaPhiMVector v2)</td></tr>
+<tr class="memdesc:ad4b8b087606d67425cb9534692e47e0e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate \(\Delta R\) between two vectors.  <a href="#ad4b8b087606d67425cb9534692e47e0e">More...</a><br /></td></tr>
 <tr class="separator:ad4b8b087606d67425cb9534692e47e0e"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a86cac73d45dc208c29d331a6438cc5d1"><td class="memItemLeft" align="right" valign="top">ROOT::Math::PtEtaPhiMVector&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacehardware.html#a86cac73d45dc208c29d331a6438cc5d1">TLvector</a> (float pt, float eta, float phi, float m)</td></tr>
 <tr class="memdesc:a86cac73d45dc208c29d331a6438cc5d1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a ROOT::Math::PtEtaPhiMVector.  <a href="#a86cac73d45dc208c29d331a6438cc5d1">More...</a><br /></td></tr>
@@ -138,6 +138,44 @@ float&#160;</td><td class="memItemRight" valign="bottom"><b>DeltaR</b> (ROOT::Ma
 </dl>
 <dl class="section return"><dt>Returns</dt><dd>float Difference in \(\phi\). </dd></dl>
 
+</div>
+</div>
+<a id="ad4b8b087606d67425cb9534692e47e0e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad4b8b087606d67425cb9534692e47e0e">&#9670;&nbsp;</a></span>DeltaR()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">float hardware::DeltaR </td>
+          <td>(</td>
+          <td class="paramtype">ROOT::Math::PtEtaPhiMVector&#160;</td>
+          <td class="paramname"><em>v1</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">ROOT::Math::PtEtaPhiMVector&#160;</td>
+          <td class="paramname"><em>v2</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Calculate \(\Delta R\) between two vectors. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">v1</td><td></td></tr>
+    <tr><td class="paramname">v2</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>float </dd></dl>
+
 </div>
 </div>
 <a id="a35a91a442950509fafc36c5d5d4c58ed"></a>
diff --git a/docs/namespacemembers.html b/docs/namespacemembers.html
index cacd32a0c8381ae6873731aa393b493fe9592a15..c1f54ec3bcc471a700d4af2b5501148218c1f293 100644
--- a/docs/namespacemembers.html
+++ b/docs/namespacemembers.html
@@ -72,6 +72,9 @@ $(function() {
 <li>DeltaPhi()
 : <a class="el" href="namespacehardware.html#aed751de3ad381dd4b6b17c2b506dea5f">hardware</a>
 </li>
+<li>DeltaR()
+: <a class="el" href="namespacehardware.html#ad4b8b087606d67425cb9534692e47e0e">hardware</a>
+</li>
 <li>invariantMass()
 : <a class="el" href="namespacehardware.html#a35a91a442950509fafc36c5d5d4c58ed">hardware</a>
 </li>
diff --git a/docs/namespacemembers_func.html b/docs/namespacemembers_func.html
index 92e44b2070865a458a8e92d482775343953161fb..3ed0df2bbda3b1c8d59cb5d299d84dc738bb5494 100644
--- a/docs/namespacemembers_func.html
+++ b/docs/namespacemembers_func.html
@@ -72,6 +72,9 @@ $(function() {
 <li>DeltaPhi()
 : <a class="el" href="namespacehardware.html#aed751de3ad381dd4b6b17c2b506dea5f">hardware</a>
 </li>
+<li>DeltaR()
+: <a class="el" href="namespacehardware.html#ad4b8b087606d67425cb9534692e47e0e">hardware</a>
+</li>
 <li>invariantMass()
 : <a class="el" href="namespacehardware.html#a35a91a442950509fafc36c5d5d4c58ed">hardware</a>
 </li>
diff --git a/docs/search/all_0.js b/docs/search/all_0.js
index 54bfb4c13c56b9a8e4cbffe0732be608daba8fd9..0f7ae1ad034bf25c3847b0ae171d749c067716ed 100644
--- a/docs/search/all_0.js
+++ b/docs/search/all_0.js
@@ -2,7 +2,7 @@ var searchData=
 [
   ['_5f_5fadd_5f_5f',['__add__',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_group.html#a547cf97e438ebc6734fd6d1ea2b21b6d',1,'TIMBER::Analyzer::Group']]],
   ['_5f_5fgetitem_5f_5f',['__getitem__',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_group.html#a9c010f80f5ebc27fd01780e480682686',1,'TIMBER::Analyzer::Group']]],
-  ['_5f_5finit_5f_5f',['__init__',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#abe24adb4b40ba81eebc81f2b9c60175a',1,'TIMBER.Analyzer.analyzer.__init__()'],['../class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#a9ff723bc556264af934b8d22ddf15051',1,'TIMBER.Analyzer.Node.__init__()'],['../class_t_i_m_b_e_r_1_1_analyzer_1_1_group.html#ac1f269f187d7993a4459415dfc3f8666',1,'TIMBER.Analyzer.Group.__init__()'],['../class_t_i_m_b_e_r_1_1_analyzer_1_1_cut_group.html#ac1f269f187d7993a4459415dfc3f8666',1,'TIMBER.Analyzer.CutGroup.__init__()'],['../class_t_i_m_b_e_r_1_1_analyzer_1_1_var_group.html#ac1f269f187d7993a4459415dfc3f8666',1,'TIMBER.Analyzer.VarGroup.__init__()'],['../class_t_i_m_b_e_r_1_1_analyzer_1_1_hist_group.html#ac1f269f187d7993a4459415dfc3f8666',1,'TIMBER.Analyzer.HistGroup.__init__()'],['../class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html#a0b3102dac1f626d41d3ab6a99c48b519',1,'TIMBER.Analyzer.Correction.__init__()']]],
+  ['_5f_5finit_5f_5f',['__init__',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#abe24adb4b40ba81eebc81f2b9c60175a',1,'TIMBER.Analyzer.analyzer.__init__()'],['../class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#a62d7887f281652fad43626fb4d2e791a',1,'TIMBER.Analyzer.Node.__init__()'],['../class_t_i_m_b_e_r_1_1_analyzer_1_1_group.html#ac1f269f187d7993a4459415dfc3f8666',1,'TIMBER.Analyzer.Group.__init__()'],['../class_t_i_m_b_e_r_1_1_analyzer_1_1_cut_group.html#ac1f269f187d7993a4459415dfc3f8666',1,'TIMBER.Analyzer.CutGroup.__init__()'],['../class_t_i_m_b_e_r_1_1_analyzer_1_1_var_group.html#ac1f269f187d7993a4459415dfc3f8666',1,'TIMBER.Analyzer.VarGroup.__init__()'],['../class_t_i_m_b_e_r_1_1_analyzer_1_1_hist_group.html#ac1f269f187d7993a4459415dfc3f8666',1,'TIMBER.Analyzer.HistGroup.__init__()'],['../class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html#a3e0c81538d6f0e3bfcc48b46307e5e67',1,'TIMBER.Analyzer.Correction.__init__()']]],
   ['_5f_5fsetitem_5f_5f',['__setitem__',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_group.html#ae69d8026d841ea4f1e828a27ce507ef6',1,'TIMBER::Analyzer::Group']]],
   ['_5f_5fstr_5f_5f',['__str__',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a23e8041ce1015febe4fdace3225714f9',1,'TIMBER.Analyzer.analyzer.__str__()'],['../class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#a23e8041ce1015febe4fdace3225714f9',1,'TIMBER.Analyzer.Node.__str__()']]]
 ];
diff --git a/docs/search/all_1.js b/docs/search/all_1.js
index e4fd3feb75342c4c02d3a214b23c06d328f1bbe1..b890ff6934caa03f67111a2c09ccc36490d584d9 100644
--- a/docs/search/all_1.js
+++ b/docs/search/all_1.js
@@ -4,7 +4,7 @@ var searchData=
   ['activenode',['ActiveNode',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a517b5caa6818e1f61b5b742625e575f4',1,'TIMBER::Analyzer::analyzer']]],
   ['add',['Add',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_group.html#a9235e4c62b098752a093fbe467921235',1,'TIMBER::Analyzer::Group']]],
   ['addchild',['AddChild',['../class_particle.html#acb900ac432e4c38ad6765c4d6b5a6321',1,'Particle']]],
-  ['addcorrection',['AddCorrection',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a32bfe7e08329c1207530da3ed0b38ac5',1,'TIMBER::Analyzer::analyzer']]],
+  ['addcorrection',['AddCorrection',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#afe470917a833262458cb26da33e124ec',1,'TIMBER::Analyzer::analyzer']]],
   ['addcorrections',['AddCorrections',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#ad89f013ac60b6e44f4d0566fafbd8219',1,'TIMBER::Analyzer::analyzer']]],
   ['addparent',['AddParent',['../class_particle.html#a089d18b57a5fc65fa72df180c1d01cad',1,'Particle']]],
   ['addparticle',['AddParticle',['../class_gen_particle_tree.html#abb1f8139f3e928faf36ad322697fd5af',1,'GenParticleTree']]],
diff --git a/docs/search/all_10.js b/docs/search/all_10.js
index 8138b6806897623c71a79e1151a6b63b2e1e6e77..cc7d9f82a414a6cda9f94f31a9d7b8add80f66d1 100644
--- a/docs/search/all_10.js
+++ b/docs/search/all_10.js
@@ -1,5 +1,11 @@
 var searchData=
 [
-  ['rvecfloat',['RVecFloat',['../struct_collection.html#aa99b31ef8d2531c6ea052a482f95c06e',1,'Collection']]],
-  ['rvecint',['RVecInt',['../struct_collection.html#afaab1969951afe78b5ad759bdc1e1e0e',1,'Collection']]]
+  ['parent',['parent',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#a457d913bff1ebc8671c1eca1c9d5fc03',1,'TIMBER::Analyzer::Node']]],
+  ['parentindex',['parentIndex',['../class_particle.html#ac120842e7faaa838279f15b0b0e7d210',1,'Particle']]],
+  ['particle',['Particle',['../class_particle.html',1,'Particle'],['../class_gen_particle_objs.html#a3fdd1544a8ce44bbd4eef935f71b8cb6',1,'GenParticleObjs::particle()']]],
+  ['pdfweight_5funcert',['PDFweight_uncert',['../class_p_d_fweight__uncert.html',1,'PDFweight_uncert'],['../class_p_d_fweight__uncert.html#a61c588914c394d32246f963c715cffb7',1,'PDFweight_uncert::PDFweight_uncert()']]],
+  ['pdgid',['pdgId',['../class_particle.html#a3fdb24d523e00a1ce48a6dd2a2c283cd',1,'Particle']]],
+  ['plotting_20tools',['Plotting Tools',['../group___plot.html',1,'']]],
+  ['prev6',['preV6',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#ae4125cd5a36c17e021b2a6a1af9c4fec',1,'TIMBER::Analyzer::analyzer']]],
+  ['printnodetree',['PrintNodeTree',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a2ef44f04939b9ca846de543ef8c8676e',1,'TIMBER::Analyzer::analyzer']]]
 ];
diff --git a/docs/search/all_11.js b/docs/search/all_11.js
index a4dd6dc3a640d115be8e69fa229d3c716a76b7f0..3a2b8f781c743fc9911fd0efb950006efab3e4b8 100644
--- a/docs/search/all_11.js
+++ b/docs/search/all_11.js
@@ -1,13 +1,6 @@
 var searchData=
 [
-  ['setactivenode',['SetActiveNode',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a3f19f4e3f9344e283f5cf6ae2371fc70',1,'TIMBER::Analyzer::analyzer']]],
-  ['setchild',['SetChild',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#a82be871373e5ef1b41fd076630e72873',1,'TIMBER::Analyzer::Node']]],
-  ['setchildren',['SetChildren',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#add3a1faeeb9529ee59760ea265fdbade',1,'TIMBER::Analyzer::Node']]],
-  ['setindex',['SetIndex',['../class_gen_particle_objs.html#a28cffdddc2a7e6f88c82bd1915311103',1,'GenParticleObjs']]],
-  ['sjbtag_5fsf',['SJBtag_SF',['../class_s_j_btag___s_f.html',1,'SJBtag_SF'],['../class_s_j_btag___s_f.html#af37f9907058b34422480cc7ba81a75e0',1,'SJBtag_SF::SJBtag_SF()']]],
-  ['snapshot',['Snapshot',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#ac9396d0acbc67a31bbae81c20944900c',1,'TIMBER.Analyzer.analyzer.Snapshot()'],['../class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#ac9396d0acbc67a31bbae81c20944900c',1,'TIMBER.Analyzer.Node.Snapshot()']]],
-  ['status',['status',['../class_particle.html#a0cb30d84f44ed74c600711d9405b85a5',1,'Particle']]],
-  ['statusflags',['statusFlags',['../class_particle.html#a217c4e30f87d5903ed0367f2d253f298',1,'Particle']]],
-  ['stitchqcd',['StitchQCD',['../group___common.html#ga80bc14c9dd0fa60d53515a31dbd67c2c',1,'TIMBER::Tools::Common']]],
-  ['subcollection',['SubCollection',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#ae00326bddf9a3bb23051007674e6cc5b',1,'TIMBER::Analyzer::analyzer']]]
+  ['range',['Range',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a361306a468fa48145cf99ee48c82bf25',1,'TIMBER.Analyzer.analyzer.Range()'],['../class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#a361306a468fa48145cf99ee48c82bf25',1,'TIMBER.Analyzer.Node.Range()']]],
+  ['rvecfloat',['RVecFloat',['../struct_collection.html#aa99b31ef8d2531c6ea052a482f95c06e',1,'Collection']]],
+  ['rvecint',['RVecInt',['../struct_collection.html#afaab1969951afe78b5ad759bdc1e1e0e',1,'Collection']]]
 ];
diff --git a/docs/search/all_12.js b/docs/search/all_12.js
index 5209bed9478ba0743d7f579bfdbbed2bb32e14f6..a4dd6dc3a640d115be8e69fa229d3c716a76b7f0 100644
--- a/docs/search/all_12.js
+++ b/docs/search/all_12.js
@@ -1,10 +1,13 @@
 var searchData=
 [
-  ['timber',['TIMBER',['../index.html',1,'']]],
-  ['tlvector',['TLvector',['../namespacehardware.html#a86cac73d45dc208c29d331a6438cc5d1',1,'hardware::TLvector(float pt, float eta, float phi, float m)'],['../namespacehardware.html#abfdf87f14ffb0769dc41c74a62d90b6e',1,'hardware::TLvector(RVec&lt; float &gt; pt, RVec&lt; float &gt; eta, RVec&lt; float &gt; phi, RVec&lt; float &gt; m)']]],
-  ['toppt_5fweight',['TopPt_weight',['../class_top_pt__weight.html',1,'']]],
-  ['tracknode',['TrackNode',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#ae289711dc0bd4fc64eaf5594cc9a6637',1,'TIMBER::Analyzer::analyzer']]],
-  ['transversemass',['transverseMass',['../namespacehardware.html#aece5e1d3b9c47f248f8bb83f1206b04f',1,'hardware']]],
-  ['trigger_5fweight',['Trigger_weight',['../class_trigger__weight.html',1,'Trigger_weight'],['../class_trigger__weight.html#add6c70823ca2c13e555d3a45ccd2a607',1,'Trigger_weight::Trigger_weight()']]],
-  ['type',['type',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#a7aead736a07eaf25623ad7bfa1f0ee2d',1,'TIMBER.Analyzer.Node.type()'],['../class_t_i_m_b_e_r_1_1_analyzer_1_1_group.html#a7aead736a07eaf25623ad7bfa1f0ee2d',1,'TIMBER.Analyzer.Group.type()'],['../class_t_i_m_b_e_r_1_1_analyzer_1_1_cut_group.html#a7aead736a07eaf25623ad7bfa1f0ee2d',1,'TIMBER.Analyzer.CutGroup.type()'],['../class_t_i_m_b_e_r_1_1_analyzer_1_1_var_group.html#a7aead736a07eaf25623ad7bfa1f0ee2d',1,'TIMBER.Analyzer.VarGroup.type()'],['../class_t_i_m_b_e_r_1_1_analyzer_1_1_hist_group.html#a7aead736a07eaf25623ad7bfa1f0ee2d',1,'TIMBER.Analyzer.HistGroup.type()']]]
+  ['setactivenode',['SetActiveNode',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a3f19f4e3f9344e283f5cf6ae2371fc70',1,'TIMBER::Analyzer::analyzer']]],
+  ['setchild',['SetChild',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#a82be871373e5ef1b41fd076630e72873',1,'TIMBER::Analyzer::Node']]],
+  ['setchildren',['SetChildren',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#add3a1faeeb9529ee59760ea265fdbade',1,'TIMBER::Analyzer::Node']]],
+  ['setindex',['SetIndex',['../class_gen_particle_objs.html#a28cffdddc2a7e6f88c82bd1915311103',1,'GenParticleObjs']]],
+  ['sjbtag_5fsf',['SJBtag_SF',['../class_s_j_btag___s_f.html',1,'SJBtag_SF'],['../class_s_j_btag___s_f.html#af37f9907058b34422480cc7ba81a75e0',1,'SJBtag_SF::SJBtag_SF()']]],
+  ['snapshot',['Snapshot',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#ac9396d0acbc67a31bbae81c20944900c',1,'TIMBER.Analyzer.analyzer.Snapshot()'],['../class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#ac9396d0acbc67a31bbae81c20944900c',1,'TIMBER.Analyzer.Node.Snapshot()']]],
+  ['status',['status',['../class_particle.html#a0cb30d84f44ed74c600711d9405b85a5',1,'Particle']]],
+  ['statusflags',['statusFlags',['../class_particle.html#a217c4e30f87d5903ed0367f2d253f298',1,'Particle']]],
+  ['stitchqcd',['StitchQCD',['../group___common.html#ga80bc14c9dd0fa60d53515a31dbd67c2c',1,'TIMBER::Tools::Common']]],
+  ['subcollection',['SubCollection',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#ae00326bddf9a3bb23051007674e6cc5b',1,'TIMBER::Analyzer::analyzer']]]
 ];
diff --git a/docs/search/all_13.js b/docs/search/all_13.js
index b715545c8e836ba325db1410e7c05df9e6dd5122..5209bed9478ba0743d7f579bfdbbed2bb32e14f6 100644
--- a/docs/search/all_13.js
+++ b/docs/search/all_13.js
@@ -1,6 +1,10 @@
 var searchData=
 [
-  ['values',['values',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_group.html#a706ee54da90740b6ebd6cb5ddb324e0a',1,'TIMBER::Analyzer::Group']]],
-  ['vargroup',['VarGroup',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_var_group.html',1,'TIMBER::Analyzer']]],
-  ['vect',['vect',['../class_particle.html#a8a36c244243007833951b034201ab89d',1,'Particle']]]
+  ['timber',['TIMBER',['../index.html',1,'']]],
+  ['tlvector',['TLvector',['../namespacehardware.html#a86cac73d45dc208c29d331a6438cc5d1',1,'hardware::TLvector(float pt, float eta, float phi, float m)'],['../namespacehardware.html#abfdf87f14ffb0769dc41c74a62d90b6e',1,'hardware::TLvector(RVec&lt; float &gt; pt, RVec&lt; float &gt; eta, RVec&lt; float &gt; phi, RVec&lt; float &gt; m)']]],
+  ['toppt_5fweight',['TopPt_weight',['../class_top_pt__weight.html',1,'']]],
+  ['tracknode',['TrackNode',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#ae289711dc0bd4fc64eaf5594cc9a6637',1,'TIMBER::Analyzer::analyzer']]],
+  ['transversemass',['transverseMass',['../namespacehardware.html#aece5e1d3b9c47f248f8bb83f1206b04f',1,'hardware']]],
+  ['trigger_5fweight',['Trigger_weight',['../class_trigger__weight.html',1,'Trigger_weight'],['../class_trigger__weight.html#add6c70823ca2c13e555d3a45ccd2a607',1,'Trigger_weight::Trigger_weight()']]],
+  ['type',['type',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#a7aead736a07eaf25623ad7bfa1f0ee2d',1,'TIMBER.Analyzer.Node.type()'],['../class_t_i_m_b_e_r_1_1_analyzer_1_1_group.html#a7aead736a07eaf25623ad7bfa1f0ee2d',1,'TIMBER.Analyzer.Group.type()'],['../class_t_i_m_b_e_r_1_1_analyzer_1_1_cut_group.html#a7aead736a07eaf25623ad7bfa1f0ee2d',1,'TIMBER.Analyzer.CutGroup.type()'],['../class_t_i_m_b_e_r_1_1_analyzer_1_1_var_group.html#a7aead736a07eaf25623ad7bfa1f0ee2d',1,'TIMBER.Analyzer.VarGroup.type()'],['../class_t_i_m_b_e_r_1_1_analyzer_1_1_hist_group.html#a7aead736a07eaf25623ad7bfa1f0ee2d',1,'TIMBER.Analyzer.HistGroup.type()']]]
 ];
diff --git a/docs/search/all_14.html b/docs/search/all_14.html
new file mode 100644
index 0000000000000000000000000000000000000000..fb4d0ecc7bd511419d65a51178a60ec2f6de57c3
--- /dev/null
+++ b/docs/search/all_14.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_14.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/docs/search/all_14.js b/docs/search/all_14.js
new file mode 100644
index 0000000000000000000000000000000000000000..b715545c8e836ba325db1410e7c05df9e6dd5122
--- /dev/null
+++ b/docs/search/all_14.js
@@ -0,0 +1,6 @@
+var searchData=
+[
+  ['values',['values',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_group.html#a706ee54da90740b6ebd6cb5ddb324e0a',1,'TIMBER::Analyzer::Group']]],
+  ['vargroup',['VarGroup',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_var_group.html',1,'TIMBER::Analyzer']]],
+  ['vect',['vect',['../class_particle.html#a8a36c244243007833951b034201ab89d',1,'Particle']]]
+];
diff --git a/docs/search/all_3.js b/docs/search/all_3.js
index cde584af5cf03c1b1e185684b192a7ecbdddce3f..29ed654d82e79f36aca3a8a9a7fd43d4d4b34d99 100644
--- a/docs/search/all_3.js
+++ b/docs/search/all_3.js
@@ -17,6 +17,7 @@ var searchData=
   ['correction',['Correction',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html',1,'TIMBER::Analyzer']]],
   ['corrections',['Corrections',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a46c1a564f4ceb0cf70b26f3f74ccfe33',1,'TIMBER::Analyzer::analyzer']]],
   ['cut',['Cut',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a9d823d75c32e4043b72ced813790363f',1,'TIMBER.Analyzer.analyzer.Cut()'],['../class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#a437987a119982a9deced80476a49457b',1,'TIMBER.Analyzer.Node.Cut()']]],
+  ['cutflowdict',['CutflowDict',['../group___common.html#gae6b78b44267b07448079c63bfe9a8413',1,'TIMBER::Tools::Common']]],
   ['cutflowhist',['CutflowHist',['../group___common.html#ga9d19a9ceee7d4de34321b40563c1070a',1,'TIMBER::Tools::Common']]],
   ['cutflowtxt',['CutflowTxt',['../group___common.html#ga73228e3cf96ee395949c7e563f89f312',1,'TIMBER::Tools::Common']]],
   ['cutgroup',['CutGroup',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_cut_group.html',1,'TIMBER::Analyzer']]]
diff --git a/docs/search/all_4.js b/docs/search/all_4.js
index 10cf5761c660a7c6901c84daac662b0f9b9a6457..4589e27417a00311a697e9416a41ef120a61a9bf 100644
--- a/docs/search/all_4.js
+++ b/docs/search/all_4.js
@@ -3,7 +3,7 @@ var searchData=
   ['dataframe',['DataFrame',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#ae8dafbef0bedc58da1657f86a31508e6',1,'TIMBER.Analyzer.Node.DataFrame()'],['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a1ba09da1969b6677c42489b42495ba0f',1,'TIMBER.Analyzer.analyzer.DataFrame()']]],
   ['define',['Define',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a2b2e0a06dac0a384b1435823ada82792',1,'TIMBER.Analyzer.analyzer.Define()'],['../class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#a10d358548c587a45ae627eeb6948aef8',1,'TIMBER.Analyzer.Node.Define()']]],
   ['deltaphi',['DeltaPhi',['../namespacehardware.html#aed751de3ad381dd4b6b17c2b506dea5f',1,'hardware']]],
-  ['deltar',['DeltaR',['../class_particle.html#a217625337b1642ead85a1fb1c0c80660',1,'Particle']]],
+  ['deltar',['DeltaR',['../class_particle.html#a217625337b1642ead85a1fb1c0c80660',1,'Particle::DeltaR()'],['../namespacehardware.html#ad4b8b087606d67425cb9534692e47e0e',1,'hardware::DeltaR()']]],
   ['dictcopy',['DictCopy',['../group___common.html#ga1aaec96a73bafbbbc9890df3fdf1ac8e',1,'TIMBER::Tools::Common']]],
   ['dictstructurecopy',['DictStructureCopy',['../group___common.html#gaf716e063fa7f868daa3fb300a135e160',1,'TIMBER::Tools::Common']]],
   ['dicttolatextable',['DictToLatexTable',['../group___common.html#ga03accc09d6689d1b8387555e06048661',1,'TIMBER::Tools::Common']]],
diff --git a/docs/search/all_5.js b/docs/search/all_5.js
index 036016b7787d3782b05f8fbf5f27b87077f5a856..537fadb00d459d2881fdce33ccb0c5b2c3490326 100644
--- a/docs/search/all_5.js
+++ b/docs/search/all_5.js
@@ -1,7 +1,9 @@
 var searchData=
 [
   ['easyplots',['EasyPlots',['../group___plot.html#ga38bfe24c8ec0570de7787a95ee7972d8',1,'TIMBER::Tools::Plot']]],
-  ['eval',['eval',['../class_lumi_filter.html#ab3e31a13fec5b494c562c002e18faa7d',1,'LumiFilter::eval()'],['../class_hist_loader.html#a1291ab5321660c22152252a74ffc9a3d',1,'HistLoader::eval()'],['../class_p_d_fweight__uncert.html#a839b38e76ccc3cd48adda607341c7ffc',1,'PDFweight_uncert::eval()'],['../class_s_j_btag___s_f.html#acb80522cdaab7fcd3153e449860862ea',1,'SJBtag_SF::eval()'],['../class_trigger__weight.html#a77ad53e559c5255e944d4d726d2047ef',1,'Trigger_weight::eval()']]],
-  ['eval_5fbybin',['eval_bybin',['../class_hist_loader.html#a2acf43283607d1bd97a4fa685a3f48b5',1,'HistLoader']]],
+  ['effloader',['EffLoader',['../class_eff_loader.html',1,'EffLoader'],['../class_eff_loader.html#af839abf1fc3ac508b0dc8fbc187d6690',1,'EffLoader::EffLoader()'],['../class_eff_loader.html#ae7501000359cccbe0c5a912b9dffa239',1,'EffLoader::EffLoader(std::string filename, std::string histname)']]],
+  ['eval',['eval',['../class_lumi_filter.html#ab3e31a13fec5b494c562c002e18faa7d',1,'LumiFilter::eval()'],['../class_eff_loader.html#a3dfc7ef86f8106535b10cbbe000318b0',1,'EffLoader::eval()'],['../class_hist_loader.html#a1291ab5321660c22152252a74ffc9a3d',1,'HistLoader::eval()'],['../class_p_d_fweight__uncert.html#a839b38e76ccc3cd48adda607341c7ffc',1,'PDFweight_uncert::eval()'],['../class_s_j_btag___s_f.html#acb80522cdaab7fcd3153e449860862ea',1,'SJBtag_SF::eval()'],['../class_trigger__weight.html#ac846f7f0fce4e3c397d11a0b2dbc5856',1,'Trigger_weight::eval()']]],
+  ['eval_5fbybin',['eval_bybin',['../class_eff_loader.html#a2acf43283607d1bd97a4fa685a3f48b5',1,'EffLoader::eval_bybin()'],['../class_hist_loader.html#a2acf43283607d1bd97a4fa685a3f48b5',1,'HistLoader::eval_bybin()']]],
+  ['eval_5fbyglobal',['eval_byglobal',['../class_eff_loader.html#a3afbe21ea66123f16e08b2718b017535',1,'EffLoader']]],
   ['executecmd',['ExecuteCmd',['../group___common.html#gaf20f16aa6eff8f36c885f1017d18863b',1,'TIMBER::Tools::Common']]]
 ];
diff --git a/docs/search/all_6.js b/docs/search/all_6.js
index a7a1e08e78188560ffeb0a35683c8ec7236f310e..78f02fc19b2f1f2e40bc37f6633c1796ceb181d0 100644
--- a/docs/search/all_6.js
+++ b/docs/search/all_6.js
@@ -1,5 +1,6 @@
 var searchData=
 [
+  ['fatjetuncertainties',['fatJetUncertainties',['../classfat_jet_uncertainties.html',1,'']]],
   ['filename',['fileName',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#acbece2625a541230e9f9091adca38c8c',1,'TIMBER::Analyzer::analyzer']]],
   ['filtercolumnnames',['FilterColumnNames',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a09416f276df2240aaec70e938e465fca',1,'TIMBER::Analyzer::analyzer']]],
   ['findchain',['FindChain',['../class_gen_particle_tree.html#aa3eb638a3431c774e952404690bc2cf9',1,'GenParticleTree']]],
diff --git a/docs/search/all_7.js b/docs/search/all_7.js
index 745285a90a7f352bb062e7d6c739b74cb0679183..200ef694493203fcc7062c25c55c51bfe75a59b0 100644
--- a/docs/search/all_7.js
+++ b/docs/search/all_7.js
@@ -5,16 +5,19 @@ var searchData=
   ['genparticletree',['GenParticleTree',['../class_gen_particle_tree.html',1,'']]],
   ['getactivenode',['GetActiveNode',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a4213e0c87961a00c5812401951098568',1,'TIMBER::Analyzer::analyzer']]],
   ['getbasenode',['GetBaseNode',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#ac7735430c66b1526c49cc7b947169b2e',1,'TIMBER::Analyzer::analyzer']]],
-  ['getcall',['GetCall',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html#afb58852d69fc4cdd9bce36e86ed03192',1,'TIMBER::Analyzer::Correction']]],
+  ['getcall',['GetCall',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html#a7d989985f36ca7d2c79c7b51c5cb0bb8',1,'TIMBER::Analyzer::Correction']]],
   ['getchildren',['GetChildren',['../class_gen_particle_tree.html#ad4512e01e57691c5498e42064e95227a',1,'GenParticleTree']]],
   ['getcorrectionnames',['GetCorrectionNames',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a0fa8abc3c6c72bda1ba5f977ff93c589',1,'TIMBER::Analyzer::analyzer']]],
   ['getfilename',['GetFileName',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#add61011322111cb5adf1cbc721a6e8c6',1,'TIMBER::Analyzer::analyzer']]],
-  ['getflagstring',['GetFlagString',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#afe44fb85cff031cf2e19c17b36afe935',1,'TIMBER::Analyzer::analyzer']]],
+  ['getflagstring',['GetFlagString',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#ade0c62b73ea95b2f11ff8f5add708066',1,'TIMBER::Analyzer::analyzer']]],
   ['getfuncnames',['GetFuncNames',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html#a1bd1760631abbfbdde1169006d685066',1,'TIMBER::Analyzer::Correction']]],
   ['gethistbinningtuple',['GetHistBinningTuple',['../group___common.html#gaf88df070cc47d0cf19d7b9e8a3f6368c',1,'TIMBER::Tools::Common']]],
   ['getmainfunc',['GetMainFunc',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html#a495bda3e8e2a86f5c1f4f58091bfbccb',1,'TIMBER::Analyzer::Correction']]],
   ['getparent',['GetParent',['../class_gen_particle_tree.html#a7f812e9b9b5de2498fa03ba6003af7e9',1,'GenParticleTree']]],
   ['getparticles',['GetParticles',['../class_gen_particle_tree.html#a9867e896c69d44a613ffcb00dd287f1c',1,'GenParticleTree']]],
+  ['getsmearvalsm',['GetSmearValsM',['../class_jet_smearer.html#a5bc3a0baca6e3017f96619eeab7a04f9',1,'JetSmearer']]],
+  ['getsmearvalspt',['GetSmearValsPt',['../class_jet_smearer.html#a2c0d63e784a2037d5f81d190b167e739',1,'JetSmearer']]],
+  ['getstandardflags',['GetStandardFlags',['../group___common.html#ga362ce18096811fbbc2dba955e605ffa0',1,'TIMBER::Tools::Common']]],
   ['getstatusflag',['GetStatusFlag',['../class_gen_particle_objs.html#aa3c5d3a3186bb6e46381b5abf4a9d065',1,'GenParticleObjs']]],
   ['gettrackednodenames',['GetTrackedNodeNames',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a1940e059a8d927b3b6524f289ecc882f',1,'TIMBER::Analyzer::analyzer']]],
   ['gettriggerstring',['GetTriggerString',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a818bf6c1ef57461de293ebf6a4c7ea6a',1,'TIMBER::Analyzer::analyzer']]],
diff --git a/docs/search/all_a.js b/docs/search/all_a.js
index 0965c025e09cedf6fdc25f8a2f2bb4656a85d665..1ede9146d4d47bf160fc99d83bb2772fffc9e4de 100644
--- a/docs/search/all_a.js
+++ b/docs/search/all_a.js
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['keys',['keys',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_group.html#a89d8a00f894393293852f9e16641be32',1,'TIMBER::Analyzer::Group']]]
+  ['jetsmearer',['JetSmearer',['../class_jet_smearer.html',1,'']]]
 ];
diff --git a/docs/search/all_b.js b/docs/search/all_b.js
index 545ed26d8dc45cfa06b8fcd13275d2f272b57217..0965c025e09cedf6fdc25f8a2f2bb4656a85d665 100644
--- a/docs/search/all_b.js
+++ b/docs/search/all_b.js
@@ -1,6 +1,4 @@
 var searchData=
 [
-  ['lhaid',['lhaid',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#aeb0781b4175a60575386701b2ac1cc4d',1,'TIMBER::Analyzer::analyzer']]],
-  ['lumifilter',['LumiFilter',['../class_lumi_filter.html',1,'LumiFilter'],['../class_lumi_filter.html#a22f8121062d7d9ad202974dfb5d22f6f',1,'LumiFilter::LumiFilter(std::string filename)'],['../class_lumi_filter.html#a1cc0f25a2b925ba83e4b27c86965a065',1,'LumiFilter::LumiFilter(int year)']]],
-  ['ledger_20of_20data_20files_20and_20their_20sources',['Ledger of data files and their sources',['../md__t_i_m_b_e_r_data__r_e_a_d_m_e.html',1,'']]]
+  ['keys',['keys',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_group.html#a89d8a00f894393293852f9e16641be32',1,'TIMBER::Analyzer::Group']]]
 ];
diff --git a/docs/search/all_c.js b/docs/search/all_c.js
index 35e1ff8ea0ffba19fda8cde6e36d359c0125c681..545ed26d8dc45cfa06b8fcd13275d2f272b57217 100644
--- a/docs/search/all_c.js
+++ b/docs/search/all_c.js
@@ -1,13 +1,6 @@
 var searchData=
 [
-  ['makecall',['MakeCall',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html#af3b819295400bd83f7131b6f0cb45aaa',1,'TIMBER::Analyzer::Correction']]],
-  ['makecumulative',['MakeCumulative',['../group___plot.html#ga48a04f428269184b1a9c2c07991b49b0',1,'TIMBER::Tools::Plot']]],
-  ['makehistswithbinning',['MakeHistsWithBinning',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a033c29fbbeb320baadaec86ca25ff829',1,'TIMBER::Analyzer::analyzer']]],
-  ['makepullplot',['MakePullPlot',['../group___plot.html#ga7c16fa7d4ea701ed0825f1b7dd9afb49',1,'TIMBER::Tools::Plot']]],
-  ['makesoverb',['MakeSoverB',['../group___plot.html#gaf2a2fbe25ad5ef71e42661b4210189e0',1,'TIMBER::Tools::Plot']]],
-  ['maketemplatehistos',['MakeTemplateHistos',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a611faeda8b08b76181109820e549c232',1,'TIMBER::Analyzer::analyzer']]],
-  ['makeupdown',['MakeUpDown',['../group___plot.html#ga49a8db027ed151ca43425510a1e6c9f7',1,'TIMBER::Tools::Plot']]],
-  ['makeweightcols',['MakeWeightCols',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#adea335ba0db85d4bf48562523fffe963',1,'TIMBER::Analyzer::analyzer']]],
-  ['merge',['Merge',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_hist_group.html#adf3215b60915b224aaa1dfddd673d575',1,'TIMBER::Analyzer::HistGroup']]],
-  ['mergecollections',['MergeCollections',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a2f0e7e0c026da9b2cbc160816a2db28b',1,'TIMBER::Analyzer::analyzer']]]
+  ['lhaid',['lhaid',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#aeb0781b4175a60575386701b2ac1cc4d',1,'TIMBER::Analyzer::analyzer']]],
+  ['lumifilter',['LumiFilter',['../class_lumi_filter.html',1,'LumiFilter'],['../class_lumi_filter.html#a22f8121062d7d9ad202974dfb5d22f6f',1,'LumiFilter::LumiFilter(std::string filename)'],['../class_lumi_filter.html#a1cc0f25a2b925ba83e4b27c86965a065',1,'LumiFilter::LumiFilter(int year)']]],
+  ['ledger_20of_20data_20files_20and_20their_20sources',['Ledger of data files and their sources',['../md__t_i_m_b_e_r_data__r_e_a_d_m_e.html',1,'']]]
 ];
diff --git a/docs/search/all_d.js b/docs/search/all_d.js
index cd074d3f7fe281fed17a385971912be56530fb9a..7e2756718c8e60c47463031928b95ac1076e04fc 100644
--- a/docs/search/all_d.js
+++ b/docs/search/all_d.js
@@ -1,6 +1,13 @@
 var searchData=
 [
-  ['name',['name',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#ab74e6bf80237ddc4109968cedc58c151',1,'TIMBER.Analyzer.Node.name()'],['../class_t_i_m_b_e_r_1_1_analyzer_1_1_group.html#ab74e6bf80237ddc4109968cedc58c151',1,'TIMBER.Analyzer.Group.name()'],['../class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html#ab74e6bf80237ddc4109968cedc58c151',1,'TIMBER.Analyzer.Correction.name()']]],
-  ['nminus1',['Nminus1',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a3eb0b4446dc99738630ed127b7184345',1,'TIMBER::Analyzer::analyzer']]],
-  ['node',['Node',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html',1,'TIMBER::Analyzer']]]
+  ['makecall',['MakeCall',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html#aa6b648587129a1fec783efe1e2c6ecdd',1,'TIMBER::Analyzer::Correction']]],
+  ['makecumulative',['MakeCumulative',['../group___plot.html#ga48a04f428269184b1a9c2c07991b49b0',1,'TIMBER::Tools::Plot']]],
+  ['makehistswithbinning',['MakeHistsWithBinning',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a033c29fbbeb320baadaec86ca25ff829',1,'TIMBER::Analyzer::analyzer']]],
+  ['makepullplot',['MakePullPlot',['../group___plot.html#ga7c16fa7d4ea701ed0825f1b7dd9afb49',1,'TIMBER::Tools::Plot']]],
+  ['makesoverb',['MakeSoverB',['../group___plot.html#gaf2a2fbe25ad5ef71e42661b4210189e0',1,'TIMBER::Tools::Plot']]],
+  ['maketemplatehistos',['MakeTemplateHistos',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a611faeda8b08b76181109820e549c232',1,'TIMBER::Analyzer::analyzer']]],
+  ['makeupdown',['MakeUpDown',['../group___plot.html#ga49a8db027ed151ca43425510a1e6c9f7',1,'TIMBER::Tools::Plot']]],
+  ['makeweightcols',['MakeWeightCols',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#af222479f97b45564dfcc91fec275c48b',1,'TIMBER::Analyzer::analyzer']]],
+  ['merge',['Merge',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_hist_group.html#adf3215b60915b224aaa1dfddd673d575',1,'TIMBER::Analyzer::HistGroup']]],
+  ['mergecollections',['MergeCollections',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a2f0e7e0c026da9b2cbc160816a2db28b',1,'TIMBER::Analyzer::analyzer']]]
 ];
diff --git a/docs/search/all_e.js b/docs/search/all_e.js
index 1c07952bd22cf8573414488797d7b4d921bd3ceb..cd074d3f7fe281fed17a385971912be56530fb9a 100644
--- a/docs/search/all_e.js
+++ b/docs/search/all_e.js
@@ -1,4 +1,6 @@
 var searchData=
 [
-  ['openjson',['OpenJSON',['../group___common.html#ga4b63a003f89b48ce9f994c29a40dcf96',1,'TIMBER::Tools::Common']]]
+  ['name',['name',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#ab74e6bf80237ddc4109968cedc58c151',1,'TIMBER.Analyzer.Node.name()'],['../class_t_i_m_b_e_r_1_1_analyzer_1_1_group.html#ab74e6bf80237ddc4109968cedc58c151',1,'TIMBER.Analyzer.Group.name()'],['../class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html#ab74e6bf80237ddc4109968cedc58c151',1,'TIMBER.Analyzer.Correction.name()']]],
+  ['nminus1',['Nminus1',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a3eb0b4446dc99738630ed127b7184345',1,'TIMBER::Analyzer::analyzer']]],
+  ['node',['Node',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html',1,'TIMBER::Analyzer']]]
 ];
diff --git a/docs/search/all_f.js b/docs/search/all_f.js
index cff23ed14d83595b5ada20c27d1f3651b4424caa..e710e09b94fe772804e552235791a49d6e070eea 100644
--- a/docs/search/all_f.js
+++ b/docs/search/all_f.js
@@ -1,10 +1,5 @@
 var searchData=
 [
-  ['parentindex',['parentIndex',['../class_particle.html#ac120842e7faaa838279f15b0b0e7d210',1,'Particle']]],
-  ['particle',['Particle',['../class_particle.html',1,'Particle'],['../class_gen_particle_objs.html#a3fdd1544a8ce44bbd4eef935f71b8cb6',1,'GenParticleObjs::particle()']]],
-  ['pdfweight_5funcert',['PDFweight_uncert',['../class_p_d_fweight__uncert.html',1,'PDFweight_uncert'],['../class_p_d_fweight__uncert.html#a61c588914c394d32246f963c715cffb7',1,'PDFweight_uncert::PDFweight_uncert()']]],
-  ['pdgid',['pdgId',['../class_particle.html#a3fdb24d523e00a1ce48a6dd2a2c283cd',1,'Particle']]],
-  ['plotting_20tools',['Plotting Tools',['../group___plot.html',1,'']]],
-  ['prev6',['preV6',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#ae4125cd5a36c17e021b2a6a1af9c4fec',1,'TIMBER::Analyzer::analyzer']]],
-  ['printnodetree',['PrintNodeTree',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a2ef44f04939b9ca846de543ef8c8676e',1,'TIMBER::Analyzer::analyzer']]]
+  ['objectfromcollection',['ObjectFromCollection',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#aa933d8e2ef227f994f60ee3b278eb0f6',1,'TIMBER::Analyzer::analyzer']]],
+  ['openjson',['OpenJSON',['../group___common.html#ga4b63a003f89b48ce9f994c29a40dcf96',1,'TIMBER::Tools::Common']]]
 ];
diff --git a/docs/search/classes_2.js b/docs/search/classes_2.js
index 4511b5e26f656b4c3cc194d21d370385648f40e3..b9bc4583becfa02b30605855ab2d2247cc998483 100644
--- a/docs/search/classes_2.js
+++ b/docs/search/classes_2.js
@@ -1,6 +1,4 @@
 var searchData=
 [
-  ['genparticleobjs',['GenParticleObjs',['../class_gen_particle_objs.html',1,'']]],
-  ['genparticletree',['GenParticleTree',['../class_gen_particle_tree.html',1,'']]],
-  ['group',['Group',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_group.html',1,'TIMBER::Analyzer']]]
+  ['effloader',['EffLoader',['../class_eff_loader.html',1,'']]]
 ];
diff --git a/docs/search/classes_3.js b/docs/search/classes_3.js
index 71a9bd35c29f4f6133005b63cd66514b6aaab71c..828f47040cd04d32456a866e3915a4b642bc84be 100644
--- a/docs/search/classes_3.js
+++ b/docs/search/classes_3.js
@@ -1,5 +1,4 @@
 var searchData=
 [
-  ['histgroup',['HistGroup',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_hist_group.html',1,'TIMBER::Analyzer']]],
-  ['histloader',['HistLoader',['../class_hist_loader.html',1,'']]]
+  ['fatjetuncertainties',['fatJetUncertainties',['../classfat_jet_uncertainties.html',1,'']]]
 ];
diff --git a/docs/search/classes_4.js b/docs/search/classes_4.js
index a3eeb3c427bb23edae9cecda53c865ddd51e1a09..4511b5e26f656b4c3cc194d21d370385648f40e3 100644
--- a/docs/search/classes_4.js
+++ b/docs/search/classes_4.js
@@ -1,4 +1,6 @@
 var searchData=
 [
-  ['lumifilter',['LumiFilter',['../class_lumi_filter.html',1,'']]]
+  ['genparticleobjs',['GenParticleObjs',['../class_gen_particle_objs.html',1,'']]],
+  ['genparticletree',['GenParticleTree',['../class_gen_particle_tree.html',1,'']]],
+  ['group',['Group',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_group.html',1,'TIMBER::Analyzer']]]
 ];
diff --git a/docs/search/classes_5.js b/docs/search/classes_5.js
index a6f309bee4ca1fb6a4702799bad89acfb9df7cfc..71a9bd35c29f4f6133005b63cd66514b6aaab71c 100644
--- a/docs/search/classes_5.js
+++ b/docs/search/classes_5.js
@@ -1,4 +1,5 @@
 var searchData=
 [
-  ['node',['Node',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html',1,'TIMBER::Analyzer']]]
+  ['histgroup',['HistGroup',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_hist_group.html',1,'TIMBER::Analyzer']]],
+  ['histloader',['HistLoader',['../class_hist_loader.html',1,'']]]
 ];
diff --git a/docs/search/classes_6.js b/docs/search/classes_6.js
index f94600f88bbe0f6ef00ec3786a86500cbed65eb9..1ede9146d4d47bf160fc99d83bb2772fffc9e4de 100644
--- a/docs/search/classes_6.js
+++ b/docs/search/classes_6.js
@@ -1,5 +1,4 @@
 var searchData=
 [
-  ['particle',['Particle',['../class_particle.html',1,'']]],
-  ['pdfweight_5funcert',['PDFweight_uncert',['../class_p_d_fweight__uncert.html',1,'']]]
+  ['jetsmearer',['JetSmearer',['../class_jet_smearer.html',1,'']]]
 ];
diff --git a/docs/search/classes_7.js b/docs/search/classes_7.js
index ed23a3f4832068743339978fbdb93d81ea74d1b4..a3eeb3c427bb23edae9cecda53c865ddd51e1a09 100644
--- a/docs/search/classes_7.js
+++ b/docs/search/classes_7.js
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['sjbtag_5fsf',['SJBtag_SF',['../class_s_j_btag___s_f.html',1,'']]]
+  ['lumifilter',['LumiFilter',['../class_lumi_filter.html',1,'']]]
 ];
diff --git a/docs/search/classes_8.js b/docs/search/classes_8.js
index fd0c6f08b9ea4c532c30a05f51099dd15fc14ff8..a6f309bee4ca1fb6a4702799bad89acfb9df7cfc 100644
--- a/docs/search/classes_8.js
+++ b/docs/search/classes_8.js
@@ -1,5 +1,4 @@
 var searchData=
 [
-  ['toppt_5fweight',['TopPt_weight',['../class_top_pt__weight.html',1,'']]],
-  ['trigger_5fweight',['Trigger_weight',['../class_trigger__weight.html',1,'']]]
+  ['node',['Node',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html',1,'TIMBER::Analyzer']]]
 ];
diff --git a/docs/search/classes_9.js b/docs/search/classes_9.js
index 458e817dce2030407a5fdd925918ccf2c622120a..f94600f88bbe0f6ef00ec3786a86500cbed65eb9 100644
--- a/docs/search/classes_9.js
+++ b/docs/search/classes_9.js
@@ -1,4 +1,5 @@
 var searchData=
 [
-  ['vargroup',['VarGroup',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_var_group.html',1,'TIMBER::Analyzer']]]
+  ['particle',['Particle',['../class_particle.html',1,'']]],
+  ['pdfweight_5funcert',['PDFweight_uncert',['../class_p_d_fweight__uncert.html',1,'']]]
 ];
diff --git a/docs/search/classes_a.js b/docs/search/classes_a.js
index 458e817dce2030407a5fdd925918ccf2c622120a..ed23a3f4832068743339978fbdb93d81ea74d1b4 100644
--- a/docs/search/classes_a.js
+++ b/docs/search/classes_a.js
@@ -1,4 +1,4 @@
 var searchData=
 [
-  ['vargroup',['VarGroup',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_var_group.html',1,'TIMBER::Analyzer']]]
+  ['sjbtag_5fsf',['SJBtag_SF',['../class_s_j_btag___s_f.html',1,'']]]
 ];
diff --git a/docs/search/classes_b.html b/docs/search/classes_b.html
new file mode 100644
index 0000000000000000000000000000000000000000..6071ae049f857d4f53f4e3650e77b1db0433c214
--- /dev/null
+++ b/docs/search/classes_b.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="classes_b.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/docs/search/classes_b.js b/docs/search/classes_b.js
new file mode 100644
index 0000000000000000000000000000000000000000..fd0c6f08b9ea4c532c30a05f51099dd15fc14ff8
--- /dev/null
+++ b/docs/search/classes_b.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['toppt_5fweight',['TopPt_weight',['../class_top_pt__weight.html',1,'']]],
+  ['trigger_5fweight',['Trigger_weight',['../class_trigger__weight.html',1,'']]]
+];
diff --git a/docs/search/classes_c.html b/docs/search/classes_c.html
new file mode 100644
index 0000000000000000000000000000000000000000..6cf1d00807f25ef139cfab5edb75cb8f295788b2
--- /dev/null
+++ b/docs/search/classes_c.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="classes_c.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/docs/search/classes_c.js b/docs/search/classes_c.js
new file mode 100644
index 0000000000000000000000000000000000000000..458e817dce2030407a5fdd925918ccf2c622120a
--- /dev/null
+++ b/docs/search/classes_c.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['vargroup',['VarGroup',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_var_group.html',1,'TIMBER::Analyzer']]]
+];
diff --git a/docs/search/functions_0.js b/docs/search/functions_0.js
index 54bfb4c13c56b9a8e4cbffe0732be608daba8fd9..0f7ae1ad034bf25c3847b0ae171d749c067716ed 100644
--- a/docs/search/functions_0.js
+++ b/docs/search/functions_0.js
@@ -2,7 +2,7 @@ var searchData=
 [
   ['_5f_5fadd_5f_5f',['__add__',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_group.html#a547cf97e438ebc6734fd6d1ea2b21b6d',1,'TIMBER::Analyzer::Group']]],
   ['_5f_5fgetitem_5f_5f',['__getitem__',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_group.html#a9c010f80f5ebc27fd01780e480682686',1,'TIMBER::Analyzer::Group']]],
-  ['_5f_5finit_5f_5f',['__init__',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#abe24adb4b40ba81eebc81f2b9c60175a',1,'TIMBER.Analyzer.analyzer.__init__()'],['../class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#a9ff723bc556264af934b8d22ddf15051',1,'TIMBER.Analyzer.Node.__init__()'],['../class_t_i_m_b_e_r_1_1_analyzer_1_1_group.html#ac1f269f187d7993a4459415dfc3f8666',1,'TIMBER.Analyzer.Group.__init__()'],['../class_t_i_m_b_e_r_1_1_analyzer_1_1_cut_group.html#ac1f269f187d7993a4459415dfc3f8666',1,'TIMBER.Analyzer.CutGroup.__init__()'],['../class_t_i_m_b_e_r_1_1_analyzer_1_1_var_group.html#ac1f269f187d7993a4459415dfc3f8666',1,'TIMBER.Analyzer.VarGroup.__init__()'],['../class_t_i_m_b_e_r_1_1_analyzer_1_1_hist_group.html#ac1f269f187d7993a4459415dfc3f8666',1,'TIMBER.Analyzer.HistGroup.__init__()'],['../class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html#a0b3102dac1f626d41d3ab6a99c48b519',1,'TIMBER.Analyzer.Correction.__init__()']]],
+  ['_5f_5finit_5f_5f',['__init__',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#abe24adb4b40ba81eebc81f2b9c60175a',1,'TIMBER.Analyzer.analyzer.__init__()'],['../class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#a62d7887f281652fad43626fb4d2e791a',1,'TIMBER.Analyzer.Node.__init__()'],['../class_t_i_m_b_e_r_1_1_analyzer_1_1_group.html#ac1f269f187d7993a4459415dfc3f8666',1,'TIMBER.Analyzer.Group.__init__()'],['../class_t_i_m_b_e_r_1_1_analyzer_1_1_cut_group.html#ac1f269f187d7993a4459415dfc3f8666',1,'TIMBER.Analyzer.CutGroup.__init__()'],['../class_t_i_m_b_e_r_1_1_analyzer_1_1_var_group.html#ac1f269f187d7993a4459415dfc3f8666',1,'TIMBER.Analyzer.VarGroup.__init__()'],['../class_t_i_m_b_e_r_1_1_analyzer_1_1_hist_group.html#ac1f269f187d7993a4459415dfc3f8666',1,'TIMBER.Analyzer.HistGroup.__init__()'],['../class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html#a3e0c81538d6f0e3bfcc48b46307e5e67',1,'TIMBER.Analyzer.Correction.__init__()']]],
   ['_5f_5fsetitem_5f_5f',['__setitem__',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_group.html#ae69d8026d841ea4f1e828a27ce507ef6',1,'TIMBER::Analyzer::Group']]],
   ['_5f_5fstr_5f_5f',['__str__',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a23e8041ce1015febe4fdace3225714f9',1,'TIMBER.Analyzer.analyzer.__str__()'],['../class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#a23e8041ce1015febe4fdace3225714f9',1,'TIMBER.Analyzer.Node.__str__()']]]
 ];
diff --git a/docs/search/functions_1.js b/docs/search/functions_1.js
index a25d480f38da5d2b1e893658d9b23d7e8fcc96ae..1ce744d67e8d5f97e57b5ad1517b9f0e61604732 100644
--- a/docs/search/functions_1.js
+++ b/docs/search/functions_1.js
@@ -2,7 +2,7 @@ var searchData=
 [
   ['add',['Add',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_group.html#a9235e4c62b098752a093fbe467921235',1,'TIMBER::Analyzer::Group']]],
   ['addchild',['AddChild',['../class_particle.html#acb900ac432e4c38ad6765c4d6b5a6321',1,'Particle']]],
-  ['addcorrection',['AddCorrection',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a32bfe7e08329c1207530da3ed0b38ac5',1,'TIMBER::Analyzer::analyzer']]],
+  ['addcorrection',['AddCorrection',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#afe470917a833262458cb26da33e124ec',1,'TIMBER::Analyzer::analyzer']]],
   ['addcorrections',['AddCorrections',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#ad89f013ac60b6e44f4d0566fafbd8219',1,'TIMBER::Analyzer::analyzer']]],
   ['addparent',['AddParent',['../class_particle.html#a089d18b57a5fc65fa72df180c1d01cad',1,'Particle']]],
   ['addparticle',['AddParticle',['../class_gen_particle_tree.html#abb1f8139f3e928faf36ad322697fd5af',1,'GenParticleTree']]],
diff --git a/docs/search/functions_10.js b/docs/search/functions_10.js
index b21ff604732553ff38140195b9876fc0640910a5..11b5dee508e0c3f5cb62f0644d6be2f6ccfacc9c 100644
--- a/docs/search/functions_10.js
+++ b/docs/search/functions_10.js
@@ -1,11 +1,4 @@
 var searchData=
 [
-  ['setactivenode',['SetActiveNode',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a3f19f4e3f9344e283f5cf6ae2371fc70',1,'TIMBER::Analyzer::analyzer']]],
-  ['setchild',['SetChild',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#a82be871373e5ef1b41fd076630e72873',1,'TIMBER::Analyzer::Node']]],
-  ['setchildren',['SetChildren',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#add3a1faeeb9529ee59760ea265fdbade',1,'TIMBER::Analyzer::Node']]],
-  ['setindex',['SetIndex',['../class_gen_particle_objs.html#a28cffdddc2a7e6f88c82bd1915311103',1,'GenParticleObjs']]],
-  ['sjbtag_5fsf',['SJBtag_SF',['../class_s_j_btag___s_f.html#af37f9907058b34422480cc7ba81a75e0',1,'SJBtag_SF']]],
-  ['snapshot',['Snapshot',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#ac9396d0acbc67a31bbae81c20944900c',1,'TIMBER.Analyzer.analyzer.Snapshot()'],['../class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#ac9396d0acbc67a31bbae81c20944900c',1,'TIMBER.Analyzer.Node.Snapshot()']]],
-  ['stitchqcd',['StitchQCD',['../group___common.html#ga80bc14c9dd0fa60d53515a31dbd67c2c',1,'TIMBER::Tools::Common']]],
-  ['subcollection',['SubCollection',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#ae00326bddf9a3bb23051007674e6cc5b',1,'TIMBER::Analyzer::analyzer']]]
+  ['range',['Range',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a361306a468fa48145cf99ee48c82bf25',1,'TIMBER.Analyzer.analyzer.Range()'],['../class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#a361306a468fa48145cf99ee48c82bf25',1,'TIMBER.Analyzer.Node.Range()']]]
 ];
diff --git a/docs/search/functions_11.js b/docs/search/functions_11.js
index d7f074d804381ca96f7880cc0d20d51031238c3c..b21ff604732553ff38140195b9876fc0640910a5 100644
--- a/docs/search/functions_11.js
+++ b/docs/search/functions_11.js
@@ -1,7 +1,11 @@
 var searchData=
 [
-  ['tlvector',['TLvector',['../namespacehardware.html#a86cac73d45dc208c29d331a6438cc5d1',1,'hardware::TLvector(float pt, float eta, float phi, float m)'],['../namespacehardware.html#abfdf87f14ffb0769dc41c74a62d90b6e',1,'hardware::TLvector(RVec&lt; float &gt; pt, RVec&lt; float &gt; eta, RVec&lt; float &gt; phi, RVec&lt; float &gt; m)']]],
-  ['tracknode',['TrackNode',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#ae289711dc0bd4fc64eaf5594cc9a6637',1,'TIMBER::Analyzer::analyzer']]],
-  ['transversemass',['transverseMass',['../namespacehardware.html#aece5e1d3b9c47f248f8bb83f1206b04f',1,'hardware']]],
-  ['trigger_5fweight',['Trigger_weight',['../class_trigger__weight.html#add6c70823ca2c13e555d3a45ccd2a607',1,'Trigger_weight']]]
+  ['setactivenode',['SetActiveNode',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a3f19f4e3f9344e283f5cf6ae2371fc70',1,'TIMBER::Analyzer::analyzer']]],
+  ['setchild',['SetChild',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#a82be871373e5ef1b41fd076630e72873',1,'TIMBER::Analyzer::Node']]],
+  ['setchildren',['SetChildren',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#add3a1faeeb9529ee59760ea265fdbade',1,'TIMBER::Analyzer::Node']]],
+  ['setindex',['SetIndex',['../class_gen_particle_objs.html#a28cffdddc2a7e6f88c82bd1915311103',1,'GenParticleObjs']]],
+  ['sjbtag_5fsf',['SJBtag_SF',['../class_s_j_btag___s_f.html#af37f9907058b34422480cc7ba81a75e0',1,'SJBtag_SF']]],
+  ['snapshot',['Snapshot',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#ac9396d0acbc67a31bbae81c20944900c',1,'TIMBER.Analyzer.analyzer.Snapshot()'],['../class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#ac9396d0acbc67a31bbae81c20944900c',1,'TIMBER.Analyzer.Node.Snapshot()']]],
+  ['stitchqcd',['StitchQCD',['../group___common.html#ga80bc14c9dd0fa60d53515a31dbd67c2c',1,'TIMBER::Tools::Common']]],
+  ['subcollection',['SubCollection',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#ae00326bddf9a3bb23051007674e6cc5b',1,'TIMBER::Analyzer::analyzer']]]
 ];
diff --git a/docs/search/functions_12.js b/docs/search/functions_12.js
index e34e7051ffc60197327d766a022fdad51fd5a2c4..d7f074d804381ca96f7880cc0d20d51031238c3c 100644
--- a/docs/search/functions_12.js
+++ b/docs/search/functions_12.js
@@ -1,4 +1,7 @@
 var searchData=
 [
-  ['values',['values',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_group.html#a706ee54da90740b6ebd6cb5ddb324e0a',1,'TIMBER::Analyzer::Group']]]
+  ['tlvector',['TLvector',['../namespacehardware.html#a86cac73d45dc208c29d331a6438cc5d1',1,'hardware::TLvector(float pt, float eta, float phi, float m)'],['../namespacehardware.html#abfdf87f14ffb0769dc41c74a62d90b6e',1,'hardware::TLvector(RVec&lt; float &gt; pt, RVec&lt; float &gt; eta, RVec&lt; float &gt; phi, RVec&lt; float &gt; m)']]],
+  ['tracknode',['TrackNode',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#ae289711dc0bd4fc64eaf5594cc9a6637',1,'TIMBER::Analyzer::analyzer']]],
+  ['transversemass',['transverseMass',['../namespacehardware.html#aece5e1d3b9c47f248f8bb83f1206b04f',1,'hardware']]],
+  ['trigger_5fweight',['Trigger_weight',['../class_trigger__weight.html#add6c70823ca2c13e555d3a45ccd2a607',1,'Trigger_weight']]]
 ];
diff --git a/docs/search/functions_13.html b/docs/search/functions_13.html
new file mode 100644
index 0000000000000000000000000000000000000000..febf8e03d033cae84812116350dd93cd0109b32a
--- /dev/null
+++ b/docs/search/functions_13.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="functions_13.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/docs/search/functions_13.js b/docs/search/functions_13.js
new file mode 100644
index 0000000000000000000000000000000000000000..e34e7051ffc60197327d766a022fdad51fd5a2c4
--- /dev/null
+++ b/docs/search/functions_13.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['values',['values',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_group.html#a706ee54da90740b6ebd6cb5ddb324e0a',1,'TIMBER::Analyzer::Group']]]
+];
diff --git a/docs/search/functions_3.js b/docs/search/functions_3.js
index ad289b416caae3be3652d144f608a6bcebdfd988..908faf6eba078edb5b788766b180b42247ea830c 100644
--- a/docs/search/functions_3.js
+++ b/docs/search/functions_3.js
@@ -11,6 +11,7 @@ var searchData=
   ['concatcols',['ConcatCols',['../group___common.html#gaf0721d1f79a9542d2a07df88852114a8',1,'TIMBER::Tools::Common']]],
   ['corr',['corr',['../class_top_pt__weight.html#a56b49e7cb8ff3991a8a301a7be3b57e9',1,'TopPt_weight']]],
   ['cut',['Cut',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a9d823d75c32e4043b72ced813790363f',1,'TIMBER.Analyzer.analyzer.Cut()'],['../class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#a437987a119982a9deced80476a49457b',1,'TIMBER.Analyzer.Node.Cut()']]],
+  ['cutflowdict',['CutflowDict',['../group___common.html#gae6b78b44267b07448079c63bfe9a8413',1,'TIMBER::Tools::Common']]],
   ['cutflowhist',['CutflowHist',['../group___common.html#ga9d19a9ceee7d4de34321b40563c1070a',1,'TIMBER::Tools::Common']]],
   ['cutflowtxt',['CutflowTxt',['../group___common.html#ga73228e3cf96ee395949c7e563f89f312',1,'TIMBER::Tools::Common']]]
 ];
diff --git a/docs/search/functions_4.js b/docs/search/functions_4.js
index 37dd9c1be4d0a2d91f3f967b78b2844c69382b5f..0f506742534dbe9d0d123d7a2869e9d951d86835 100644
--- a/docs/search/functions_4.js
+++ b/docs/search/functions_4.js
@@ -3,7 +3,7 @@ var searchData=
   ['dataframe',['DataFrame',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a1ba09da1969b6677c42489b42495ba0f',1,'TIMBER::Analyzer::analyzer']]],
   ['define',['Define',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a2b2e0a06dac0a384b1435823ada82792',1,'TIMBER.Analyzer.analyzer.Define()'],['../class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#a10d358548c587a45ae627eeb6948aef8',1,'TIMBER.Analyzer.Node.Define()']]],
   ['deltaphi',['DeltaPhi',['../namespacehardware.html#aed751de3ad381dd4b6b17c2b506dea5f',1,'hardware']]],
-  ['deltar',['DeltaR',['../class_particle.html#a217625337b1642ead85a1fb1c0c80660',1,'Particle']]],
+  ['deltar',['DeltaR',['../class_particle.html#a217625337b1642ead85a1fb1c0c80660',1,'Particle::DeltaR()'],['../namespacehardware.html#ad4b8b087606d67425cb9534692e47e0e',1,'hardware::DeltaR()']]],
   ['dictcopy',['DictCopy',['../group___common.html#ga1aaec96a73bafbbbc9890df3fdf1ac8e',1,'TIMBER::Tools::Common']]],
   ['dictstructurecopy',['DictStructureCopy',['../group___common.html#gaf716e063fa7f868daa3fb300a135e160',1,'TIMBER::Tools::Common']]],
   ['dicttolatextable',['DictToLatexTable',['../group___common.html#ga03accc09d6689d1b8387555e06048661',1,'TIMBER::Tools::Common']]],
diff --git a/docs/search/functions_5.js b/docs/search/functions_5.js
index 036016b7787d3782b05f8fbf5f27b87077f5a856..be449d2204bb5217350fea89906fd3bad5da3374 100644
--- a/docs/search/functions_5.js
+++ b/docs/search/functions_5.js
@@ -1,7 +1,9 @@
 var searchData=
 [
   ['easyplots',['EasyPlots',['../group___plot.html#ga38bfe24c8ec0570de7787a95ee7972d8',1,'TIMBER::Tools::Plot']]],
-  ['eval',['eval',['../class_lumi_filter.html#ab3e31a13fec5b494c562c002e18faa7d',1,'LumiFilter::eval()'],['../class_hist_loader.html#a1291ab5321660c22152252a74ffc9a3d',1,'HistLoader::eval()'],['../class_p_d_fweight__uncert.html#a839b38e76ccc3cd48adda607341c7ffc',1,'PDFweight_uncert::eval()'],['../class_s_j_btag___s_f.html#acb80522cdaab7fcd3153e449860862ea',1,'SJBtag_SF::eval()'],['../class_trigger__weight.html#a77ad53e559c5255e944d4d726d2047ef',1,'Trigger_weight::eval()']]],
-  ['eval_5fbybin',['eval_bybin',['../class_hist_loader.html#a2acf43283607d1bd97a4fa685a3f48b5',1,'HistLoader']]],
+  ['effloader',['EffLoader',['../class_eff_loader.html#af839abf1fc3ac508b0dc8fbc187d6690',1,'EffLoader::EffLoader()'],['../class_eff_loader.html#ae7501000359cccbe0c5a912b9dffa239',1,'EffLoader::EffLoader(std::string filename, std::string histname)']]],
+  ['eval',['eval',['../class_lumi_filter.html#ab3e31a13fec5b494c562c002e18faa7d',1,'LumiFilter::eval()'],['../class_eff_loader.html#a3dfc7ef86f8106535b10cbbe000318b0',1,'EffLoader::eval()'],['../class_hist_loader.html#a1291ab5321660c22152252a74ffc9a3d',1,'HistLoader::eval()'],['../class_p_d_fweight__uncert.html#a839b38e76ccc3cd48adda607341c7ffc',1,'PDFweight_uncert::eval()'],['../class_s_j_btag___s_f.html#acb80522cdaab7fcd3153e449860862ea',1,'SJBtag_SF::eval()'],['../class_trigger__weight.html#ac846f7f0fce4e3c397d11a0b2dbc5856',1,'Trigger_weight::eval()']]],
+  ['eval_5fbybin',['eval_bybin',['../class_eff_loader.html#a2acf43283607d1bd97a4fa685a3f48b5',1,'EffLoader::eval_bybin()'],['../class_hist_loader.html#a2acf43283607d1bd97a4fa685a3f48b5',1,'HistLoader::eval_bybin()']]],
+  ['eval_5fbyglobal',['eval_byglobal',['../class_eff_loader.html#a3afbe21ea66123f16e08b2718b017535',1,'EffLoader']]],
   ['executecmd',['ExecuteCmd',['../group___common.html#gaf20f16aa6eff8f36c885f1017d18863b',1,'TIMBER::Tools::Common']]]
 ];
diff --git a/docs/search/functions_7.js b/docs/search/functions_7.js
index ece940bef20a0761d01451af0a391f85ca9603d9..210d2fee8931be755b54997d3e3593640e4a1b23 100644
--- a/docs/search/functions_7.js
+++ b/docs/search/functions_7.js
@@ -3,16 +3,19 @@ var searchData=
   ['genparticleobjs',['GenParticleObjs',['../class_gen_particle_objs.html#a5a36271980ffa82d725d97cfd1be1a1a',1,'GenParticleObjs::GenParticleObjs(RVec&lt; float &gt; in_pt, RVec&lt; float &gt; in_eta, RVec&lt; float &gt; in_phi, RVec&lt; float &gt; in_m, RVec&lt; int &gt; in_pdgId, RVec&lt; int &gt; in_status, RVec&lt; int &gt; in_statusFlags, RVec&lt; int &gt; in_genPartIdxMother)'],['../class_gen_particle_objs.html#ae26a40274b535d7e7f0a7abe3a73f01a',1,'GenParticleObjs::GenParticleObjs(Collection genParts)']]],
   ['getactivenode',['GetActiveNode',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a4213e0c87961a00c5812401951098568',1,'TIMBER::Analyzer::analyzer']]],
   ['getbasenode',['GetBaseNode',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#ac7735430c66b1526c49cc7b947169b2e',1,'TIMBER::Analyzer::analyzer']]],
-  ['getcall',['GetCall',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html#afb58852d69fc4cdd9bce36e86ed03192',1,'TIMBER::Analyzer::Correction']]],
+  ['getcall',['GetCall',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html#a7d989985f36ca7d2c79c7b51c5cb0bb8',1,'TIMBER::Analyzer::Correction']]],
   ['getchildren',['GetChildren',['../class_gen_particle_tree.html#ad4512e01e57691c5498e42064e95227a',1,'GenParticleTree']]],
   ['getcorrectionnames',['GetCorrectionNames',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a0fa8abc3c6c72bda1ba5f977ff93c589',1,'TIMBER::Analyzer::analyzer']]],
   ['getfilename',['GetFileName',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#add61011322111cb5adf1cbc721a6e8c6',1,'TIMBER::Analyzer::analyzer']]],
-  ['getflagstring',['GetFlagString',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#afe44fb85cff031cf2e19c17b36afe935',1,'TIMBER::Analyzer::analyzer']]],
+  ['getflagstring',['GetFlagString',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#ade0c62b73ea95b2f11ff8f5add708066',1,'TIMBER::Analyzer::analyzer']]],
   ['getfuncnames',['GetFuncNames',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html#a1bd1760631abbfbdde1169006d685066',1,'TIMBER::Analyzer::Correction']]],
   ['gethistbinningtuple',['GetHistBinningTuple',['../group___common.html#gaf88df070cc47d0cf19d7b9e8a3f6368c',1,'TIMBER::Tools::Common']]],
   ['getmainfunc',['GetMainFunc',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html#a495bda3e8e2a86f5c1f4f58091bfbccb',1,'TIMBER::Analyzer::Correction']]],
   ['getparent',['GetParent',['../class_gen_particle_tree.html#a7f812e9b9b5de2498fa03ba6003af7e9',1,'GenParticleTree']]],
   ['getparticles',['GetParticles',['../class_gen_particle_tree.html#a9867e896c69d44a613ffcb00dd287f1c',1,'GenParticleTree']]],
+  ['getsmearvalsm',['GetSmearValsM',['../class_jet_smearer.html#a5bc3a0baca6e3017f96619eeab7a04f9',1,'JetSmearer']]],
+  ['getsmearvalspt',['GetSmearValsPt',['../class_jet_smearer.html#a2c0d63e784a2037d5f81d190b167e739',1,'JetSmearer']]],
+  ['getstandardflags',['GetStandardFlags',['../group___common.html#ga362ce18096811fbbc2dba955e605ffa0',1,'TIMBER::Tools::Common']]],
   ['getstatusflag',['GetStatusFlag',['../class_gen_particle_objs.html#aa3c5d3a3186bb6e46381b5abf4a9d065',1,'GenParticleObjs']]],
   ['gettrackednodenames',['GetTrackedNodeNames',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a1940e059a8d927b3b6524f289ecc882f',1,'TIMBER::Analyzer::analyzer']]],
   ['gettriggerstring',['GetTriggerString',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a818bf6c1ef57461de293ebf6a4c7ea6a',1,'TIMBER::Analyzer::analyzer']]],
diff --git a/docs/search/functions_c.js b/docs/search/functions_c.js
index 35e1ff8ea0ffba19fda8cde6e36d359c0125c681..7e2756718c8e60c47463031928b95ac1076e04fc 100644
--- a/docs/search/functions_c.js
+++ b/docs/search/functions_c.js
@@ -1,13 +1,13 @@
 var searchData=
 [
-  ['makecall',['MakeCall',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html#af3b819295400bd83f7131b6f0cb45aaa',1,'TIMBER::Analyzer::Correction']]],
+  ['makecall',['MakeCall',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_correction.html#aa6b648587129a1fec783efe1e2c6ecdd',1,'TIMBER::Analyzer::Correction']]],
   ['makecumulative',['MakeCumulative',['../group___plot.html#ga48a04f428269184b1a9c2c07991b49b0',1,'TIMBER::Tools::Plot']]],
   ['makehistswithbinning',['MakeHistsWithBinning',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a033c29fbbeb320baadaec86ca25ff829',1,'TIMBER::Analyzer::analyzer']]],
   ['makepullplot',['MakePullPlot',['../group___plot.html#ga7c16fa7d4ea701ed0825f1b7dd9afb49',1,'TIMBER::Tools::Plot']]],
   ['makesoverb',['MakeSoverB',['../group___plot.html#gaf2a2fbe25ad5ef71e42661b4210189e0',1,'TIMBER::Tools::Plot']]],
   ['maketemplatehistos',['MakeTemplateHistos',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a611faeda8b08b76181109820e549c232',1,'TIMBER::Analyzer::analyzer']]],
   ['makeupdown',['MakeUpDown',['../group___plot.html#ga49a8db027ed151ca43425510a1e6c9f7',1,'TIMBER::Tools::Plot']]],
-  ['makeweightcols',['MakeWeightCols',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#adea335ba0db85d4bf48562523fffe963',1,'TIMBER::Analyzer::analyzer']]],
+  ['makeweightcols',['MakeWeightCols',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#af222479f97b45564dfcc91fec275c48b',1,'TIMBER::Analyzer::analyzer']]],
   ['merge',['Merge',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_hist_group.html#adf3215b60915b224aaa1dfddd673d575',1,'TIMBER::Analyzer::HistGroup']]],
   ['mergecollections',['MergeCollections',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#a2f0e7e0c026da9b2cbc160816a2db28b',1,'TIMBER::Analyzer::analyzer']]]
 ];
diff --git a/docs/search/functions_e.js b/docs/search/functions_e.js
index 1c07952bd22cf8573414488797d7b4d921bd3ceb..e710e09b94fe772804e552235791a49d6e070eea 100644
--- a/docs/search/functions_e.js
+++ b/docs/search/functions_e.js
@@ -1,4 +1,5 @@
 var searchData=
 [
+  ['objectfromcollection',['ObjectFromCollection',['../class_t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html#aa933d8e2ef227f994f60ee3b278eb0f6',1,'TIMBER::Analyzer::analyzer']]],
   ['openjson',['OpenJSON',['../group___common.html#ga4b63a003f89b48ce9f994c29a40dcf96',1,'TIMBER::Tools::Common']]]
 ];
diff --git a/docs/search/searchdata.js b/docs/search/searchdata.js
index 077c5e1eb750d2eee2e667554b8a9de397147759..50b36b25437fbc8f0a8eb7cf9de8f8e831c2c5e1 100644
--- a/docs/search/searchdata.js
+++ b/docs/search/searchdata.js
@@ -1,9 +1,9 @@
 var indexSectionsWithContent =
 {
-  0: "_abcdefghiklmnoprstv",
-  1: "acghlnpstv",
+  0: "_abcdefghijklmnoprstv",
+  1: "acefghjlnpstv",
   2: "h",
-  3: "_abcdefghiklmnopstv",
+  3: "_abcdefghiklmnoprstv",
   4: "abcdfghilnprstv",
   5: "cp",
   6: "fghlt"
diff --git a/docs/search/variables_a.js b/docs/search/variables_a.js
index 49bf8bbe5bb5a22f3249433e6501b8e7eb037805..cd42538396a7e48ce1e2aec2455f7582710021a6 100644
--- a/docs/search/variables_a.js
+++ b/docs/search/variables_a.js
@@ -1,5 +1,6 @@
 var searchData=
 [
+  ['parent',['parent',['../class_t_i_m_b_e_r_1_1_analyzer_1_1_node.html#a457d913bff1ebc8671c1eca1c9d5fc03',1,'TIMBER::Analyzer::Node']]],
   ['parentindex',['parentIndex',['../class_particle.html#ac120842e7faaa838279f15b0b0e7d210',1,'Particle']]],
   ['particle',['particle',['../class_gen_particle_objs.html#a3fdd1544a8ce44bbd4eef935f71b8cb6',1,'GenParticleObjs']]],
   ['pdgid',['pdgId',['../class_particle.html#a3fdb24d523e00a1ce48a6dd2a2c283cd',1,'Particle']]],