From ac151e7bf0fdae48a4cc74508d6c53a340dded9a Mon Sep 17 00:00:00 2001 From: lcorcodilos <lac352@scarletmail.rutgers.edu> Date: Wed, 6 Jan 2021 17:48:10 -0500 Subject: [PATCH] Update docs for release --- TIMBER/Framework/include/common.h | 8 +- TIMBER/Tools/Common.py | 11 + TIMBER/Tools/Plot.py | 1 - docs/_gen_matching_8h_source.html | 2 +- docs/_jet_m_e_tinfo_8h_source.html | 89 ++++++ docs/_jet_recalib_8h_source.html | 87 ++++++ docs/_jet_smearer_8h_source.html | 91 ++++++ docs/_lumi_filter_8h_source.html | 6 +- docs/_pythonic_8h_source.html | 3 +- docs/annotated.html | 21 +- docs/class_eff_loader-members.html | 91 ++++++ docs/class_eff_loader.html | 270 ++++++++++++++++++ docs/class_jet_smearer-members.html | 90 ++++++ docs/class_jet_smearer.html | 183 ++++++++++++ ...r_1_1_analyzer_1_1_correction-members.html | 6 +- ...i_m_b_e_r_1_1_analyzer_1_1_correction.html | 58 ++-- ...m_b_e_r_1_1_analyzer_1_1_node-members.html | 4 +- ...ass_t_i_m_b_e_r_1_1_analyzer_1_1_node.html | 61 +++- ..._e_r_1_1_analyzer_1_1analyzer-members.html | 12 +- ..._t_i_m_b_e_r_1_1_analyzer_1_1analyzer.html | 143 ++++++++-- docs/class_trigger__weight-members.html | 2 +- docs/class_trigger__weight.html | 12 +- docs/common_8h_source.html | 9 +- docs/group___common.html | 56 ++++ docs/group___plot.html | 1 - ..._t_i_m_b_e_r__framework__gen_matching.html | 2 +- docs/md__t_i_m_b_e_r_data__r_e_a_d_m_e.html | 8 +- docs/namespacehardware.html | 42 ++- docs/namespacemembers.html | 3 + docs/namespacemembers_func.html | 3 + docs/search/all_0.js | 2 +- docs/search/all_1.js | 2 +- docs/search/all_10.js | 10 +- docs/search/all_11.js | 13 +- docs/search/all_12.js | 17 +- docs/search/all_13.js | 10 +- docs/search/all_14.html | 26 ++ docs/search/all_14.js | 6 + docs/search/all_3.js | 1 + docs/search/all_4.js | 2 +- docs/search/all_5.js | 6 +- docs/search/all_6.js | 1 + docs/search/all_7.js | 7 +- docs/search/all_a.js | 2 +- docs/search/all_b.js | 4 +- docs/search/all_c.js | 13 +- docs/search/all_d.js | 13 +- docs/search/all_e.js | 4 +- docs/search/all_f.js | 9 +- docs/search/classes_2.js | 4 +- docs/search/classes_3.js | 3 +- docs/search/classes_4.js | 4 +- docs/search/classes_5.js | 3 +- docs/search/classes_6.js | 3 +- docs/search/classes_7.js | 2 +- docs/search/classes_8.js | 3 +- docs/search/classes_9.js | 3 +- docs/search/classes_a.js | 2 +- docs/search/classes_b.html | 26 ++ docs/search/classes_b.js | 5 + docs/search/classes_c.html | 26 ++ docs/search/classes_c.js | 4 + docs/search/functions_0.js | 2 +- docs/search/functions_1.js | 2 +- docs/search/functions_10.js | 9 +- docs/search/functions_11.js | 12 +- docs/search/functions_12.js | 5 +- docs/search/functions_13.html | 26 ++ docs/search/functions_13.js | 4 + docs/search/functions_3.js | 1 + docs/search/functions_4.js | 2 +- docs/search/functions_5.js | 6 +- docs/search/functions_7.js | 7 +- docs/search/functions_c.js | 4 +- docs/search/functions_e.js | 1 + docs/search/searchdata.js | 6 +- docs/search/variables_a.js | 1 + 77 files changed, 1513 insertions(+), 186 deletions(-) create mode 100644 docs/_jet_m_e_tinfo_8h_source.html create mode 100644 docs/_jet_recalib_8h_source.html create mode 100644 docs/_jet_smearer_8h_source.html create mode 100644 docs/class_eff_loader-members.html create mode 100644 docs/class_eff_loader.html create mode 100644 docs/class_jet_smearer-members.html create mode 100644 docs/class_jet_smearer.html create mode 100644 docs/search/all_14.html create mode 100644 docs/search/all_14.js create mode 100644 docs/search/classes_b.html create mode 100644 docs/search/classes_b.js create mode 100644 docs/search/classes_c.html create mode 100644 docs/search/classes_c.js create mode 100644 docs/search/functions_13.html create mode 100644 docs/search/functions_13.js diff --git a/TIMBER/Framework/include/common.h b/TIMBER/Framework/include/common.h index 823e566..d86baeb 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 090c344..7c5472b 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 afd4991..208bb60 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 92dc233..d8893f8 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> <span class="preprocessor">#include <map></span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#include <algorithm></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="preprocessor">#include <numeric></span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include <math.h></span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="preprocessor">#include <cstdlib></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="preprocessor">#include "Collection.h"</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="preprocessor">#include "Pythonic.h"</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="preprocessor">#include "Math/Vector4Dfwd.h"</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="preprocessor">#include "Math/VectorUtil.h"</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> </div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <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> <span class="keyword">using</span> LVector = ROOT::Math::PtEtaPhiMVector;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="keywordtype">bool</span> BitChecker(<span class="keyword">const</span> <span class="keywordtype">int</span> &bit, <span class="keywordtype">int</span> &number){</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  <span class="keywordtype">int</span> result = number & (1 << bit);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  <span class="keywordflow">if</span> (result > 0) {<span class="keywordflow">return</span> <span class="keyword">true</span>;}</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  <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> }</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">static</span> <span class="keyword">const</span> std::map <int, std::string> PDGIds {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  {1,<span class="stringliteral">"d"</span>}, {2,<span class="stringliteral">"u"</span>}, {3,<span class="stringliteral">"s"</span>}, {4,<span class="stringliteral">"c"</span>}, {5,<span class="stringliteral">"b"</span>}, {6,<span class="stringliteral">"t"</span>},</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  {11,<span class="stringliteral">"e"</span>}, {12,<span class="stringliteral">"nu_e"</span>}, {13,<span class="stringliteral">"mu"</span>}, {14,<span class="stringliteral">"nu_mu"</span>},{ 15,<span class="stringliteral">"tau"</span>},</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  {16,<span class="stringliteral">"nu_tau"</span>}, {21,<span class="stringliteral">"g"</span>}, {22,<span class="stringliteral">"photon"</span>}, {23,<span class="stringliteral">"Z"</span>}, {24,<span class="stringliteral">"W"</span>}, {25,<span class="stringliteral">"h"</span>}</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> };</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">static</span> <span class="keyword">const</span> std::map <std::string, int> GenParticleStatusFlags {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  {<span class="stringliteral">"isPrompt"</span>, 0},</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  {<span class="stringliteral">"isDecayedLeptonHadron"</span>, 1},</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  {<span class="stringliteral">"isTauDecayProduct"</span>, 2},</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  {<span class="stringliteral">"isPromptTauDecayProduct"</span>, 3},</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  {<span class="stringliteral">"isDirectTauDecayProduct"</span>, 4},</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  {<span class="stringliteral">"isDirectPromptTauDecayProduct"</span>, 5},</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  {<span class="stringliteral">"isDirectHadronDecayProduct"</span>, 6},</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  {<span class="stringliteral">"isHardProcess"</span>, 7},</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  {<span class="stringliteral">"fromHardProcess"</span>, 8},</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  {<span class="stringliteral">"isHardProcessTauDecayProduct"</span>, 9},</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  {<span class="stringliteral">"isDirectHardProcessTauDecayProduct"</span>, 10},</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  {<span class="stringliteral">"fromHardProcessBeforeFSR"</span>, 11},</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  {<span class="stringliteral">"isFirstCopy"</span>, 12},</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  {<span class="stringliteral">"isLastCopy"</span>, 13},</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  {<span class="stringliteral">"isLastCopyBeforeFSR"</span>, 14}</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> };</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="class_particle.html"> 59</a></span> <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>  <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>  <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>  <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>  <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>  <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>  std::map <std::string, int> <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>  <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>  std::vector<int> <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>  LVector <a class="code" href="class_particle.html#a8a36c244243007833951b034201ab89d">vect</a>; </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <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>  <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>  parentIndex = idx;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  }</div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="class_particle.html#acb900ac432e4c38ad6765c4d6b5a6321"> 83</a></span>  <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>  childIndex.push_back(idx);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordtype">float</span> DeltaR(LVector input_vector);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> };</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="class_particle.html#a217625337b1642ead85a1fb1c0c80660"> 98</a></span> <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>  <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> };</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="class_gen_particle_tree.html"> 106</a></span> <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> {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <a class="code" href="struct_collection.html">Collection</a> GenParts;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  std::vector<Particle*> nodes;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  std::vector<Particle*> heads;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <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>  std::vector<Particle*> RunChain(<a class="code" href="class_particle.html">Particle</a>* node, std::vector<std::string> chain);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  std::vector<int> StoredIndexes();</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <a class="code" href="class_particle.html">Particle</a> NoneParticle;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <a class="code" href="class_gen_particle_tree.html">GenParticleTree</a>(){</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  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>  };</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <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>  std::vector<Particle*> <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>  std::vector<Particle*> GetChildren(<a class="code" href="class_particle.html">Particle</a>* particle);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <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>  std::vector<std::vector<Particle*>> FindChain(std::string chainstring);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> };</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> std::vector<int> GenParticleTree::StoredIndexes(){</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  std::vector<int> current_idxs {};</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < nodes.size(); i++) {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  current_idxs.push_back(nodes.at(i)->index);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">return</span> current_idxs;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> }</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> </div><div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="class_gen_particle_tree.html#abb1f8139f3e928faf36ad322697fd5af"> 166</a></span> <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>  <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> </div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="comment">// First check if current heads don't have new parents and </span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="comment">// remove them from heads if they do</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  std::vector<int> heads_to_delete {};</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < heads.size(); i++) {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">if</span> (heads.at(i)->parentIndex == staged_node-><a class="code" href="class_particle.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>) {</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  heads_to_delete.push_back(i);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  }</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <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>  <span class="comment">// indices after a deletion</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> ih = heads_to_delete.size(); ih >= 0; ih--) {</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  heads.erase(heads.begin()+ih);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  }</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  </div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <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>  <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>  std::vector<int> indexes = StoredIndexes();</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordflow">if</span> (InList(staged_node-><a class="code" href="class_particle.html#ac120842e7faaa838279f15b0b0e7d210">parentIndex</a>, indexes)) {</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  heads.push_back(staged_node);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  nodes.push_back(staged_node);</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> inode = 0; inode < nodes.size(); inode++) {</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">if</span> (staged_node-><a class="code" href="class_particle.html#ac120842e7faaa838279f15b0b0e7d210">parentIndex</a> == nodes[inode]->index){</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  staged_node-><a class="code" href="class_particle.html#a089d18b57a5fc65fa72df180c1d01cad">AddParent</a>(inode);</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  nodes.at(inode)->AddChild(nodes.size());</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  nodes.push_back(staged_node);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  }</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  } </div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  }</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> };</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> </div><div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="class_gen_particle_tree.html#ad4512e01e57691c5498e42064e95227a"> 200</a></span> std::vector<Particle*> <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>  std::vector<Particle*> children {};</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < particle-><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>  children.push_back(nodes[particle-><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>  }</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">return</span> children;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> }</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> </div><div class="line"><a name="l00208"></a><span class="lineno"><a class="line" href="class_gen_particle_tree.html#a7f812e9b9b5de2498fa03ba6003af7e9"> 208</a></span> <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>  <span class="keywordflow">if</span> (nodes.size() > particle-><a class="code" href="class_particle.html#ac120842e7faaa838279f15b0b0e7d210">parentIndex</a>){</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordflow">return</span> nodes.at(particle-><a class="code" href="class_particle.html#ac120842e7faaa838279f15b0b0e7d210">parentIndex</a>);</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="keywordflow">return</span> &NoneParticle;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  }</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  </div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> }</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> </div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> <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>  std::vector<int> pdgIds {}; </div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keywordflow">if</span> (InString(<span class="stringliteral">":"</span>,<span class="keywordtype">string</span>)) {</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordtype">int</span> startId = std::stoi( <span class="keywordtype">string</span>.substr(0,<span class="keywordtype">string</span>.find(<span class="charliteral">':'</span>)) );</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordtype">int</span> stopId = std::stoi( <span class="keywordtype">string</span>.substr(1,<span class="keywordtype">string</span>.find(<span class="charliteral">':'</span>)) );</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  pdgIds = range(startId, stopId);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (InString(<span class="stringliteral">","</span>,<span class="keywordtype">string</span>)) {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keyword">auto</span> splits = split(<span class="keywordtype">string</span>,<span class="charliteral">','</span>);</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> istr = 0; istr < splits.size(); istr++) {</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  pdgIds.push_back( std::stoi(splits.at(istr)) );</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  }</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  }</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> </div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordtype">bool</span> out;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keywordflow">if</span> (pdgIds.size() == 0) {</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">if</span> (std::abs(*particle-><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>  out = <span class="keyword">true</span>;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  } <span class="keywordflow">else</span> {out = <span class="keyword">false</span>;}</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keywordflow">if</span> (InList(std::abs(*particle-><a class="code" href="class_particle.html#a3fdb24d523e00a1ce48a6dd2a2c283cd">pdgId</a>), pdgIds)) {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  out = <span class="keyword">true</span>;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  } <span class="keywordflow">else</span> {out = <span class="keyword">false</span>;}</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  }</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> </div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keywordflow">return</span> out;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> }</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> </div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> std::vector<Particle*> GenParticleTree::RunChain(<a class="code" href="class_particle.html">Particle</a>* node, std::vector<std::string> chain) {</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  std::vector<Particle*> nodechain {node};</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <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>  std::vector<std::string> chain_minus_first = {chain.begin()+1,chain.end()};</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  </div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keywordflow">if</span> (chain.size() == 0) {</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keywordflow">return</span> nodechain;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (parent-><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>  nodechain.push_back(&NoneParticle);</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  } <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>  Extend(nodechain, RunChain(parent,chain_minus_first));</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (parent-><a class="code" href="class_particle.html#a3fdb24d523e00a1ce48a6dd2a2c283cd">pdgId</a> == node-><a class="code" href="class_particle.html#a3fdb24d523e00a1ce48a6dd2a2c283cd">pdgId</a>) {</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  Extend(nodechain, RunChain(parent, chain));</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  nodechain.push_back(&NoneParticle);</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  }</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span> </div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordflow">return</span> nodechain;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span> }</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> </div><div class="line"><a name="l00264"></a><span class="lineno"><a class="line" href="class_gen_particle_tree.html#aa3eb638a3431c774e952404690bc2cf9"> 264</a></span> std::vector<std::vector<Particle*>> <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>  std::vector<std::string> reveresed_chain = split(chainstring,<span class="charliteral">'>'</span>);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  std::reverse(reveresed_chain.begin(), reveresed_chain.end());</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> </div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  std::vector<std::string> reveresed_chain_minus_first = {reveresed_chain.begin()+1,reveresed_chain.end()};</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span> </div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  std::vector<Particle*> chain_result;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  std::vector<std::vector<Particle*>> out;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> </div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> inode = 0; inode < nodes.size(); inode++) {</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <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>  <span class="keywordflow">if</span> (MatchParticleToString(n, reveresed_chain.at(0))) {</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  chain_result = RunChain(n,reveresed_chain_minus_first);</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <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>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> icr = 0; icr < chain_result.size(); icr++) {</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">if</span> (chain_result[icr]->flag == <span class="keyword">false</span>) {</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  no_NoneParticle = <span class="keyword">false</span>;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  }</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  }</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <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>  } </div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  }</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keywordflow">return</span> out;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span> }</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> </div><div class="line"><a name="l00294"></a><span class="lineno"><a class="line" href="class_gen_particle_objs.html"> 294</a></span> <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>  <span class="keyword">private</span>:</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <a class="code" href="struct_collection.html">Collection</a> GenPartCollection; </div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <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> </div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <a class="code" href="class_gen_particle_objs.html">GenParticleObjs</a>(RVec<float> in_pt, </div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  RVec<float> in_eta, RVec<float> in_phi, </div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  RVec<float> in_m, RVec<int> in_pdgId, </div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  RVec<int> in_status, RVec<int> in_statusFlags, </div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  RVec<int> in_genPartIdxMother);</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <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> </div><div class="line"><a name="l00328"></a><span class="lineno"><a class="line" href="class_gen_particle_objs.html#a3fdd1544a8ce44bbd4eef935f71b8cb6"> 328</a></span>  <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>  std::map< std::string, bool> CompareToVector(LVector vect);</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <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>  <span class="keywordtype">int</span> GetStatusFlag(std::string flagName);</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span> };</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span> </div><div class="line"><a name="l00362"></a><span class="lineno"><a class="line" href="class_gen_particle_objs.html#a5a36271980ffa82d725d97cfd1be1a1a"> 362</a></span> <a class="code" href="class_gen_particle_objs.html#a5a36271980ffa82d725d97cfd1be1a1a">GenParticleObjs::GenParticleObjs</a>(RVec<float> in_pt, </div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  RVec<float> in_eta, RVec<float> in_phi, </div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  RVec<float> in_m, RVec<int> in_pdgId, </div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  RVec<int> in_status, RVec<int> in_statusFlags, </div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  RVec<int> in_genPartIdxMother) {</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span> </div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  GenPartCollection.RVecInt = { </div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  {<span class="stringliteral">"pdgId"</span>,&in_pdgId},</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  {<span class="stringliteral">"status"</span>,&in_status},</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  {<span class="stringliteral">"statusFlags"</span>,&in_statusFlags},</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  {<span class="stringliteral">"genPartIdxMother"</span>,&in_genPartIdxMother}</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  };</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  GenPartCollection.RVecFloat = { </div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  {<span class="stringliteral">"pt"</span>,&in_pt},</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  {<span class="stringliteral">"eta"</span>,&in_eta},</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  {<span class="stringliteral">"phi"</span>,&in_phi},</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  {<span class="stringliteral">"m"</span>,&in_m}</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  };</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <span class="comment">// Settings for the "set" particle</span></div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  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> }</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span> </div><div class="line"><a name="l00384"></a><span class="lineno"><a class="line" href="class_gen_particle_objs.html#ae26a40274b535d7e7f0a7abe3a73f01a"> 384</a></span> <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>  GenPartCollection = genParts;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span> };</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span> </div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span> <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>  <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>  particle.<a class="code" href="class_particle.html#a217c4e30f87d5903ed0367f2d253f298">statusFlags</a>[it->first] = BitChecker(it->second, GenPartCollection.RVecInt[<span class="stringliteral">"statusFlags"</span>]->at(particleIndex));</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  }</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span> }</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span> </div><div class="line"><a name="l00394"></a><span class="lineno"><a class="line" href="class_gen_particle_objs.html#a97a10edf215b0459fcdba2a7d8e173cc"> 394</a></span> std::map< std::string, bool> <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>  std::map< std::string, bool> out;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  out[<span class="stringliteral">"sameHemisphere"</span>] = (ROOT::Math::VectorUtil::DeltaPhi(particle.<a class="code" href="class_particle.html#a8a36c244243007833951b034201ab89d">vect</a>,vect) < M_PI);</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  out[<span class="stringliteral">"deltaR"</span>] = (particle.<a class="code" href="class_particle.html#a217625337b1642ead85a1fb1c0c80660">DeltaR</a>(vect) < 0.8);</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  out[<span class="stringliteral">"deltaM"</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() < 0.05);</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <span class="keywordflow">return</span> out;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span> };</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span> </div><div class="line"><a name="l00402"></a><span class="lineno"><a class="line" href="class_gen_particle_objs.html#a28cffdddc2a7e6f88c82bd1915311103"> 402</a></span> <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>  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>  particle.<a class="code" href="class_particle.html#a3fdb24d523e00a1ce48a6dd2a2c283cd">pdgId</a> = &GenPartCollection.RVecInt[<span class="stringliteral">"pdgId"</span>]->at(idx);</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  SetStatusFlags(idx);</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  particle.<a class="code" href="class_particle.html#ac120842e7faaa838279f15b0b0e7d210">parentIndex</a> = GenPartCollection.RVecInt[<span class="stringliteral">"genPartIdxMother"</span>]->at(idx);</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  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>  GenPartCollection.RVecFloat[<span class="stringliteral">"pt"</span>]->at(idx),</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  GenPartCollection.RVecFloat[<span class="stringliteral">"eta"</span>]->at(idx),</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  GenPartCollection.RVecFloat[<span class="stringliteral">"phi"</span>]->at(idx),</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  GenPartCollection.RVecFloat[<span class="stringliteral">"m"</span>]->at(idx)</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  );</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span> </div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  <span class="keywordflow">return</span> particle;</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span> }; </div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span> </div><div class="line"><a name="l00417"></a><span class="lineno"><a class="line" href="class_gen_particle_objs.html#aa3c5d3a3186bb6e46381b5abf4a9d065"> 417</a></span> <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>  <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> };</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> <span class="preprocessor">#include <map></span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#include <algorithm></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="preprocessor">#include <numeric></span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include <math.h></span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="preprocessor">#include <cstdlib></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="preprocessor">#include "Collection.h"</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="preprocessor">#include "Pythonic.h"</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="preprocessor">#include "Math/Vector4Dfwd.h"</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="preprocessor">#include "Math/VectorUtil.h"</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> </div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <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> <span class="keyword">using</span> LVector = ROOT::Math::PtEtaPhiMVector;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="keywordtype">bool</span> BitChecker(<span class="keyword">const</span> <span class="keywordtype">int</span> &bit, <span class="keywordtype">int</span> &number){</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  <span class="keywordtype">int</span> result = number & (1 << bit);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  <span class="keywordflow">if</span> (result > 0) {<span class="keywordflow">return</span> <span class="keyword">true</span>;}</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  <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> }</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">static</span> <span class="keyword">const</span> std::map <int, std::string> PDGIds {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  {1,<span class="stringliteral">"d"</span>}, {2,<span class="stringliteral">"u"</span>}, {3,<span class="stringliteral">"s"</span>}, {4,<span class="stringliteral">"c"</span>}, {5,<span class="stringliteral">"b"</span>}, {6,<span class="stringliteral">"t"</span>},</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  {11,<span class="stringliteral">"e"</span>}, {12,<span class="stringliteral">"nu_e"</span>}, {13,<span class="stringliteral">"mu"</span>}, {14,<span class="stringliteral">"nu_mu"</span>},{ 15,<span class="stringliteral">"tau"</span>},</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  {16,<span class="stringliteral">"nu_tau"</span>}, {21,<span class="stringliteral">"g"</span>}, {22,<span class="stringliteral">"photon"</span>}, {23,<span class="stringliteral">"Z"</span>}, {24,<span class="stringliteral">"W"</span>}, {25,<span class="stringliteral">"h"</span>}</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> };</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">static</span> <span class="keyword">const</span> std::map <std::string, int> GenParticleStatusFlags {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  {<span class="stringliteral">"isPrompt"</span>, 0},</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  {<span class="stringliteral">"isDecayedLeptonHadron"</span>, 1},</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  {<span class="stringliteral">"isTauDecayProduct"</span>, 2},</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  {<span class="stringliteral">"isPromptTauDecayProduct"</span>, 3},</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  {<span class="stringliteral">"isDirectTauDecayProduct"</span>, 4},</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  {<span class="stringliteral">"isDirectPromptTauDecayProduct"</span>, 5},</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  {<span class="stringliteral">"isDirectHadronDecayProduct"</span>, 6},</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  {<span class="stringliteral">"isHardProcess"</span>, 7},</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  {<span class="stringliteral">"fromHardProcess"</span>, 8},</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  {<span class="stringliteral">"isHardProcessTauDecayProduct"</span>, 9},</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  {<span class="stringliteral">"isDirectHardProcessTauDecayProduct"</span>, 10},</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  {<span class="stringliteral">"fromHardProcessBeforeFSR"</span>, 11},</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  {<span class="stringliteral">"isFirstCopy"</span>, 12},</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  {<span class="stringliteral">"isLastCopy"</span>, 13},</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  {<span class="stringliteral">"isLastCopyBeforeFSR"</span>, 14}</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> };</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="class_particle.html"> 59</a></span> <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>  <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>  <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>  <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>  <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>  <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>  std::map <std::string, int> <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>  <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>  std::vector<int> <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>  LVector <a class="code" href="class_particle.html#a8a36c244243007833951b034201ab89d">vect</a>; </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <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>  <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>  parentIndex = idx;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  }</div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="class_particle.html#acb900ac432e4c38ad6765c4d6b5a6321"> 83</a></span>  <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>  childIndex.push_back(idx);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordtype">float</span> DeltaR(LVector input_vector);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> };</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="class_particle.html#a217625337b1642ead85a1fb1c0c80660"> 98</a></span> <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>  <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> };</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="class_gen_particle_tree.html"> 106</a></span> <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> {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <a class="code" href="struct_collection.html">Collection</a> GenParts;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  std::vector<Particle*> nodes;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  std::vector<Particle*> heads;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <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>  std::vector<Particle*> RunChain(<a class="code" href="class_particle.html">Particle</a>* node, std::vector<std::string> chain);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  std::vector<int> StoredIndexes();</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <a class="code" href="class_particle.html">Particle</a> NoneParticle;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <a class="code" href="class_gen_particle_tree.html">GenParticleTree</a>(){</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  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>  };</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <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>  std::vector<Particle*> <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>  std::vector<Particle*> GetChildren(<a class="code" href="class_particle.html">Particle</a>* particle);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <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>  std::vector<std::vector<Particle*>> FindChain(std::string chainstring);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> };</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> std::vector<int> GenParticleTree::StoredIndexes(){</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  std::vector<int> current_idxs {};</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < nodes.size(); i++) {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  current_idxs.push_back(nodes.at(i)->index);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">return</span> current_idxs;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> }</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> </div><div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="class_gen_particle_tree.html#abb1f8139f3e928faf36ad322697fd5af"> 166</a></span> <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>  <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> </div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="comment">// First check if current heads don't have new parents and </span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="comment">// remove them from heads if they do</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  std::vector<int> heads_to_delete {};</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < heads.size(); i++) {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">if</span> (heads.at(i)->parentIndex == staged_node-><a class="code" href="class_particle.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>) {</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  heads_to_delete.push_back(i);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  }</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <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>  <span class="comment">// indices after a deletion</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> ih = heads_to_delete.size(); ih >= 0; ih--) {</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  heads.erase(heads.begin()+ih);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  }</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  </div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <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>  <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>  std::vector<int> indexes = StoredIndexes();</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordflow">if</span> (Pythonic::InList(staged_node-><a class="code" href="class_particle.html#ac120842e7faaa838279f15b0b0e7d210">parentIndex</a>, indexes)) {</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  heads.push_back(staged_node);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  nodes.push_back(staged_node);</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> inode = 0; inode < nodes.size(); inode++) {</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">if</span> (staged_node-><a class="code" href="class_particle.html#ac120842e7faaa838279f15b0b0e7d210">parentIndex</a> == nodes[inode]->index){</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  staged_node-><a class="code" href="class_particle.html#a089d18b57a5fc65fa72df180c1d01cad">AddParent</a>(inode);</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  nodes.at(inode)->AddChild(nodes.size());</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  nodes.push_back(staged_node);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  }</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  } </div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  }</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> };</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> </div><div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="class_gen_particle_tree.html#ad4512e01e57691c5498e42064e95227a"> 200</a></span> std::vector<Particle*> <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>  std::vector<Particle*> children {};</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < particle-><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>  children.push_back(nodes[particle-><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>  }</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">return</span> children;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> }</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> </div><div class="line"><a name="l00208"></a><span class="lineno"><a class="line" href="class_gen_particle_tree.html#a7f812e9b9b5de2498fa03ba6003af7e9"> 208</a></span> <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>  <span class="keywordflow">if</span> (nodes.size() > particle-><a class="code" href="class_particle.html#ac120842e7faaa838279f15b0b0e7d210">parentIndex</a>){</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordflow">return</span> nodes.at(particle-><a class="code" href="class_particle.html#ac120842e7faaa838279f15b0b0e7d210">parentIndex</a>);</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="keywordflow">return</span> &NoneParticle;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  }</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  </div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> }</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> </div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> <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>  std::vector<int> pdgIds {}; </div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keywordflow">if</span> (Pythonic::InString(<span class="stringliteral">":"</span>,<span class="keywordtype">string</span>)) {</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordtype">int</span> startId = std::stoi( <span class="keywordtype">string</span>.substr(0,<span class="keywordtype">string</span>.find(<span class="charliteral">':'</span>)) );</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordtype">int</span> stopId = std::stoi( <span class="keywordtype">string</span>.substr(1,<span class="keywordtype">string</span>.find(<span class="charliteral">':'</span>)) );</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  pdgIds = Pythonic::Range(startId, stopId);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Pythonic::InString(<span class="stringliteral">","</span>,<span class="keywordtype">string</span>)) {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keyword">auto</span> splits = Pythonic::Split(<span class="keywordtype">string</span>,<span class="charliteral">','</span>);</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> istr = 0; istr < splits.size(); istr++) {</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  pdgIds.push_back( std::stoi(splits.at(istr)) );</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  }</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  }</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> </div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordtype">bool</span> out;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keywordflow">if</span> (pdgIds.size() == 0) {</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">if</span> (std::abs(*particle-><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>  out = <span class="keyword">true</span>;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  } <span class="keywordflow">else</span> {out = <span class="keyword">false</span>;}</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keywordflow">if</span> (Pythonic::InList((<span class="keywordtype">int</span>)std::abs(*particle-><a class="code" href="class_particle.html#a3fdb24d523e00a1ce48a6dd2a2c283cd">pdgId</a>), pdgIds)) {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  out = <span class="keyword">true</span>;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  } <span class="keywordflow">else</span> {out = <span class="keyword">false</span>;}</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  }</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> </div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keywordflow">return</span> out;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> }</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> </div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> std::vector<Particle*> GenParticleTree::RunChain(<a class="code" href="class_particle.html">Particle</a>* node, std::vector<std::string> chain) {</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  std::vector<Particle*> nodechain {node};</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <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>  std::vector<std::string> chain_minus_first = {chain.begin()+1,chain.end()};</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  </div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keywordflow">if</span> (chain.size() == 0) {</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keywordflow">return</span> nodechain;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (parent-><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>  nodechain.push_back(&NoneParticle);</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  } <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>  Pythonic::Extend(nodechain, RunChain(parent,chain_minus_first));</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (parent-><a class="code" href="class_particle.html#a3fdb24d523e00a1ce48a6dd2a2c283cd">pdgId</a> == node-><a class="code" href="class_particle.html#a3fdb24d523e00a1ce48a6dd2a2c283cd">pdgId</a>) {</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  Pythonic::Extend(nodechain, RunChain(parent, chain));</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  nodechain.push_back(&NoneParticle);</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  }</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span> </div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordflow">return</span> nodechain;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span> }</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> </div><div class="line"><a name="l00264"></a><span class="lineno"><a class="line" href="class_gen_particle_tree.html#aa3eb638a3431c774e952404690bc2cf9"> 264</a></span> std::vector<std::vector<Particle*>> <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>  std::vector<std::string> reveresed_chain = Pythonic::Split(chainstring,<span class="charliteral">'>'</span>);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  std::reverse(reveresed_chain.begin(), reveresed_chain.end());</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> </div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  std::vector<std::string> reveresed_chain_minus_first = {reveresed_chain.begin()+1,reveresed_chain.end()};</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span> </div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  std::vector<Particle*> chain_result;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  std::vector<std::vector<Particle*>> out;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> </div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> inode = 0; inode < nodes.size(); inode++) {</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <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>  <span class="keywordflow">if</span> (MatchParticleToString(n, reveresed_chain.at(0))) {</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  chain_result = RunChain(n,reveresed_chain_minus_first);</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <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>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> icr = 0; icr < chain_result.size(); icr++) {</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">if</span> (chain_result[icr]->flag == <span class="keyword">false</span>) {</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  no_NoneParticle = <span class="keyword">false</span>;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  }</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  }</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <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>  } </div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  }</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keywordflow">return</span> out;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span> }</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> </div><div class="line"><a name="l00294"></a><span class="lineno"><a class="line" href="class_gen_particle_objs.html"> 294</a></span> <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>  <span class="keyword">private</span>:</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <a class="code" href="struct_collection.html">Collection</a> GenPartCollection; </div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <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> </div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <a class="code" href="class_gen_particle_objs.html">GenParticleObjs</a>(RVec<float> in_pt, </div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  RVec<float> in_eta, RVec<float> in_phi, </div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  RVec<float> in_m, RVec<int> in_pdgId, </div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  RVec<int> in_status, RVec<int> in_statusFlags, </div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  RVec<int> in_genPartIdxMother);</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <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> </div><div class="line"><a name="l00328"></a><span class="lineno"><a class="line" href="class_gen_particle_objs.html#a3fdd1544a8ce44bbd4eef935f71b8cb6"> 328</a></span>  <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>  std::map< std::string, bool> CompareToVector(LVector vect);</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <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>  <span class="keywordtype">int</span> GetStatusFlag(std::string flagName);</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span> };</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span> </div><div class="line"><a name="l00362"></a><span class="lineno"><a class="line" href="class_gen_particle_objs.html#a5a36271980ffa82d725d97cfd1be1a1a"> 362</a></span> <a class="code" href="class_gen_particle_objs.html#a5a36271980ffa82d725d97cfd1be1a1a">GenParticleObjs::GenParticleObjs</a>(RVec<float> in_pt, </div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  RVec<float> in_eta, RVec<float> in_phi, </div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  RVec<float> in_m, RVec<int> in_pdgId, </div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  RVec<int> in_status, RVec<int> in_statusFlags, </div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  RVec<int> in_genPartIdxMother) {</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span> </div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  GenPartCollection.RVecInt = { </div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  {<span class="stringliteral">"pdgId"</span>,&in_pdgId},</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  {<span class="stringliteral">"status"</span>,&in_status},</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  {<span class="stringliteral">"statusFlags"</span>,&in_statusFlags},</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  {<span class="stringliteral">"genPartIdxMother"</span>,&in_genPartIdxMother}</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  };</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  GenPartCollection.RVecFloat = { </div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  {<span class="stringliteral">"pt"</span>,&in_pt},</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  {<span class="stringliteral">"eta"</span>,&in_eta},</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  {<span class="stringliteral">"phi"</span>,&in_phi},</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  {<span class="stringliteral">"m"</span>,&in_m}</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  };</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <span class="comment">// Settings for the "set" particle</span></div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  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> }</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span> </div><div class="line"><a name="l00384"></a><span class="lineno"><a class="line" href="class_gen_particle_objs.html#ae26a40274b535d7e7f0a7abe3a73f01a"> 384</a></span> <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>  GenPartCollection = genParts;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span> };</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span> </div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span> <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>  <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>  particle.<a class="code" href="class_particle.html#a217c4e30f87d5903ed0367f2d253f298">statusFlags</a>[it->first] = BitChecker(it->second, GenPartCollection.RVecInt[<span class="stringliteral">"statusFlags"</span>]->at(particleIndex));</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  }</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span> }</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span> </div><div class="line"><a name="l00394"></a><span class="lineno"><a class="line" href="class_gen_particle_objs.html#a97a10edf215b0459fcdba2a7d8e173cc"> 394</a></span> std::map< std::string, bool> <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>  std::map< std::string, bool> out;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  out[<span class="stringliteral">"sameHemisphere"</span>] = (ROOT::Math::VectorUtil::DeltaPhi(particle.<a class="code" href="class_particle.html#a8a36c244243007833951b034201ab89d">vect</a>,vect) < M_PI);</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  out[<span class="stringliteral">"deltaR"</span>] = (particle.<a class="code" href="class_particle.html#a217625337b1642ead85a1fb1c0c80660">DeltaR</a>(vect) < 0.8);</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  out[<span class="stringliteral">"deltaM"</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() < 0.05);</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <span class="keywordflow">return</span> out;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span> };</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span> </div><div class="line"><a name="l00402"></a><span class="lineno"><a class="line" href="class_gen_particle_objs.html#a28cffdddc2a7e6f88c82bd1915311103"> 402</a></span> <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>  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>  particle.<a class="code" href="class_particle.html#a3fdb24d523e00a1ce48a6dd2a2c283cd">pdgId</a> = &GenPartCollection.RVecInt[<span class="stringliteral">"pdgId"</span>]->at(idx);</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  SetStatusFlags(idx);</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  particle.<a class="code" href="class_particle.html#ac120842e7faaa838279f15b0b0e7d210">parentIndex</a> = GenPartCollection.RVecInt[<span class="stringliteral">"genPartIdxMother"</span>]->at(idx);</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  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>  GenPartCollection.RVecFloat[<span class="stringliteral">"pt"</span>]->at(idx),</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  GenPartCollection.RVecFloat[<span class="stringliteral">"eta"</span>]->at(idx),</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  GenPartCollection.RVecFloat[<span class="stringliteral">"phi"</span>]->at(idx),</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  GenPartCollection.RVecFloat[<span class="stringliteral">"m"</span>]->at(idx)</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  );</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span> </div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  <span class="keywordflow">return</span> particle;</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span> }; </div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span> </div><div class="line"><a name="l00417"></a><span class="lineno"><a class="line" href="class_gen_particle_objs.html#aa3c5d3a3186bb6e46381b5abf4a9d065"> 417</a></span> <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>  <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> };</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< Particle * > 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 0000000..8c25d1c --- /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 +  <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> <span class="preprocessor">#include <map></span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <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> </div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <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> </div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>  <span class="comment">// JEC dict</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  map<string,string> jecTagsMC = {</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  {<span class="stringliteral">"2016"</span>, <span class="stringliteral">"Summer16_07Aug2017_V11_MC"</span>},</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  {<span class="stringliteral">"2017"</span>, <span class="stringliteral">"Fall17_17Nov2017_V32_MC"</span>},</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  {<span class="stringliteral">"2018"</span>, <span class="stringliteral">"Autumn18_V19_MC"</span>},</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  {<span class="stringliteral">"UL2017"</span>, <span class="stringliteral">"Summer19UL17_V5_MC"</span>},</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  };</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  map<string,string> jecTagsFastSim = {</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  {<span class="stringliteral">"2016"</span>, <span class="stringliteral">"Spring16_25nsFastSimV1_MC"</span>},</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  {<span class="stringliteral">"2017"</span>, <span class="stringliteral">"Fall17_FastSimV1_MC"</span>},</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  {<span class="stringliteral">"2018"</span>, <span class="stringliteral">"Autumn18_FastSimV1_MC"</span>}</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  };</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  map<string,string> archiveTagsDATA = {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  {<span class="stringliteral">"2016"</span>, <span class="stringliteral">"Summer16_07Aug2017_V11_DATA"</span>},</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  {<span class="stringliteral">"2017"</span>, <span class="stringliteral">"Fall17_17Nov2017_V32_DATA"</span>},</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  {<span class="stringliteral">"2018"</span>, <span class="stringliteral">"Autumn18_V19_DATA"</span>},</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  {<span class="stringliteral">"UL2017"</span>, <span class="stringliteral">"Summer19UL17_V5_DATA"</span>}</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  };</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  map<string,string> jecTagsDATA = {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  {<span class="stringliteral">"2016B"</span>, <span class="stringliteral">"Summer16_07Aug2017BCD_V11_DATA"</span>},</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  {<span class="stringliteral">"2016C"</span>, <span class="stringliteral">"Summer16_07Aug2017BCD_V11_DATA"</span>},</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  {<span class="stringliteral">"2016D"</span>, <span class="stringliteral">"Summer16_07Aug2017BCD_V11_DATA"</span>},</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  {<span class="stringliteral">"2016E"</span>, <span class="stringliteral">"Summer16_07Aug2017EF_V11_DATA"</span>},</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  {<span class="stringliteral">"2016F"</span>, <span class="stringliteral">"Summer16_07Aug2017EF_V11_DATA"</span>},</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  {<span class="stringliteral">"2016G"</span>, <span class="stringliteral">"Summer16_07Aug2017GH_V11_DATA"</span>},</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  {<span class="stringliteral">"2016H"</span>, <span class="stringliteral">"Summer16_07Aug2017GH_V11_DATA"</span>},</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  {<span class="stringliteral">"2017B"</span>, <span class="stringliteral">"Fall17_17Nov2017B_V32_DATA"</span>},</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  {<span class="stringliteral">"2017C"</span>, <span class="stringliteral">"Fall17_17Nov2017C_V32_DATA"</span>},</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  {<span class="stringliteral">"2017D"</span>, <span class="stringliteral">"Fall17_17Nov2017DE_V32_DATA"</span>},</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  {<span class="stringliteral">"2017E"</span>, <span class="stringliteral">"Fall17_17Nov2017DE_V32_DATA"</span>},</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  {<span class="stringliteral">"2017F"</span>, <span class="stringliteral">"Fall17_17Nov2017F_V32_DATA"</span>},</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  {<span class="stringliteral">"2018A"</span>, <span class="stringliteral">"Autumn18_RunA_V19_DATA"</span>},</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  {<span class="stringliteral">"2018B"</span>, <span class="stringliteral">"Autumn18_RunB_V19_DATA"</span>},</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  {<span class="stringliteral">"2018C"</span>, <span class="stringliteral">"Autumn18_RunC_V19_DATA"</span>},</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  {<span class="stringliteral">"2018D"</span>, <span class="stringliteral">"Autumn18_RunD_V19_DATA"</span>},</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  {<span class="stringliteral">"UL2017B"</span>, <span class="stringliteral">"Summer19UL17_RunB_V5_DATA"</span>},</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  {<span class="stringliteral">"UL2017C"</span>, <span class="stringliteral">"Summer19UL17_RunC_V5_DATA"</span>},</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  {<span class="stringliteral">"UL2017D"</span>, <span class="stringliteral">"Summer19UL17_RunD_V5_DATA"</span>},</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  {<span class="stringliteral">"UL2017E"</span>, <span class="stringliteral">"Summer19UL17_RunE_V5_DATA"</span>},</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  {<span class="stringliteral">"UL2017F"</span>, <span class="stringliteral">"Summer19UL17_RunF_V5_DATA"</span>}</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  };</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  map<string,string> jerTagsMC = {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  {<span class="stringliteral">"2016"</span>, <span class="stringliteral">"Summer16_25nsV1_MC"</span>},</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  {<span class="stringliteral">"2017"</span>, <span class="stringliteral">"Fall17_V3_MC"</span>},</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  {<span class="stringliteral">"2018"</span>, <span class="stringliteral">"Autumn18_V7b_MC"</span>},</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  {<span class="stringliteral">"UL2017"</span>, <span class="stringliteral">"Summer19UL17_JRV2_MC"</span>},</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  };</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <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>  <span class="comment">// nominal, up, down</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  map<string, vector<float>> jmrValues = {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  {<span class="stringliteral">"2016"</span>, {1.0, 1.2, 0.8}},</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  {<span class="stringliteral">"2017"</span>, {1.09, 1.14, 1.04}},</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <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>  {<span class="stringliteral">"2018"</span>, {1.09, 1.14, 1.04}},</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  {<span class="stringliteral">"UL2017"</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>  };</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="comment">// jet mass scale</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <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>  map<string, vector<float>> jmsValues = {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  {<span class="stringliteral">"2016"</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>  {<span class="stringliteral">"2017"</span>, {0.982, 0.978, 0.986}},</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <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>  {<span class="stringliteral">"2018"</span>, {0.982, 0.978, 0.986}},</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  {<span class="stringliteral">"UL2017"</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>  };</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> }</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  <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 0000000..43b7579 --- /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 +  <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  <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 0000000..1279773 --- /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 +  <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> <span class="comment">// Requires CMSSW</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include <cstdlib></span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="preprocessor">#include <unistd.h></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="preprocessor">#include <math.h></span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// #include "CondFormats/JetMETObjects/interface/JetResolutionObject.h"</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// #include "JetMETCorrections/Modules/interface/JetResolution.h"</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="preprocessor">#include <TRandom3.h></span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="preprocessor">#include <TFile.h></span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="preprocessor">#include <TF1.h></span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="preprocessor">#include <TString.h></span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#include <TSystem.h></span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#include <ROOT/RVec.hxx></span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="preprocessor">#include <Math/GenVector/LorentzVector.h></span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <Math/GenVector/PtEtaPhiM4D.h></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include <Math/Vector4Dfwd.h></span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "../include/Pythonic.h"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <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> <span class="keyword">using</span> LorentzV = ROOT::Math::PtEtaPhiMVector;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"><a class="line" href="class_jet_smearer.html"> 23</a></span> <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>  <span class="keyword">private</span>:</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <span class="keyword">const</span> std::string jetType_;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <span class="keyword">const</span> std::string jerTag_;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="keyword">const</span> std::vector<float> jmrVals_;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keyword">const</span> std::string timberPath_ = std::string(std::getenv(<span class="stringliteral">"TIMBERPATH"</span>));</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keyword">const</span> std::string jerInputArchivePath_ = timberPath_ + <span class="stringliteral">"TIMBER/data/jme/"</span>;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  TFile *puppiJMRFile_ = <span class="keyword">new</span> TFile(TString(timberPath_ + <span class="stringliteral">"TIMBER/data/jme/puppiSoftdropResol.root"</span>));</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  TF1 *puppisd_resolution_cen = (TF1*)puppiJMRFile_->Get(<span class="stringliteral">"massResolution_0eta1v3"</span>);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  TF1 *puppisd_resolution_for = (TF1*)puppiJMRFile_->Get(<span class="stringliteral">"massResolution_1v3eta2v5"</span>);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  TRandom3 rnd;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  std::string jerInputFileName_;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  std::string jerUncertaintyInputFileName_;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordtype">char</span> *tempDir = mkdtemp(<span class="stringliteral">"/tmp/jmeuntar/"</span>);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  JME::JetParameters params_sf_and_uncertainty();</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  JME::JetParameters params_resolution();</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  JME::JetResolution jer;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  JME::JetResolution jerSF;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <a class="code" href="class_jet_smearer.html">JetSmearer</a>(</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  std::string jetType,</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  std::string jetTag,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  std::vector<float> jmrVals);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  ~<a class="code" href="class_jet_smearer.html">JetSmearer</a>(){</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  rmdir(tempDir);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  };</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  RVec<float> GetSmearValsPt(LorentzV jet, LorentzV genJet, <span class="keywordtype">float</span> rho);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  RVec<float> GetSmearValsM(LorentzV jet, LorentzV genJet);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> };</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> JetSmearer::JetSmearer(std::string jetType,</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  std::string jerTag,</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  std::vector<float> jmrVals) : </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  jetType_(jetType), jerTag_(jerTag),</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  jmrVals_(jmrVals),</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  jerInputFileName_(jerTag + <span class="stringliteral">"_PtResolution_"</span> + jetType + <span class="stringliteral">".txt"</span>),</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  jerUncertaintyInputFileName_(jerTag + <span class="stringliteral">"_SF_"</span> + jetType + <span class="stringliteral">".txt"</span>) {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  Pythonic::Execute(std::string(<span class="stringliteral">"tar -xzvf "</span>+jerInputArchivePath_+<span class="stringliteral">"/"</span>+jerInputFileName_+<span class="stringliteral">" -C "</span>+tempDir));</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  Pythonic::Execute(std::string(<span class="stringliteral">"tar -xzvf "</span>+jerInputArchivePath_+<span class="stringliteral">"/"</span>+jerUncertaintyInputFileName_+<span class="stringliteral">" -C "</span>+tempDir));</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  rnd = TRandom3(12345); <span class="comment">// initialize random number generator</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="comment">// (needed for jet pT smearing)</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <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>  <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>  std::vector<std::string> libraries = {<span class="stringliteral">"libCondFormatsJetMETObjects"</span>, <span class="stringliteral">"libPhysicsToolsNanoAODTools"</span>};</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> ilib = 0; ilib < libraries.size(); ilib++) {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">if</span> (Pythonic::InList(libraries[ilib],Pythonic::Split(gSystem->GetLibraries()))) {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  printf(<span class="stringliteral">"Load Library '%s'"</span>, libraries[ilib].c_str());</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  gSystem->Load(TString(libraries[ilib]));</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  } </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  printf(<span class="stringliteral">"Loading jet energy resolutions (JER) from file '%s/%s'"</span>,tempDir.c_str(),jerInputFileName_.c_str());</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  jer = JetResolution(TString(tempDir+jerInputFileName_));</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  printf(<span class="stringliteral">"Loading JER scale factors and uncertainties from file '%s'"</span>,tempDir.c_str(),jerUncertaintyInputFileName_.c_str());</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  jerSF = JetResolutionScaleFactor(TString(tempDir+jerUncertaintyInputFileName_));</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="class_jet_smearer.html#a2c0d63e784a2037d5f81d190b167e739"> 107</a></span> RVec<float> <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>  RVec<float> out = {};</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">if</span> (jet.Pt() <= 0.){</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  printf(<span class="stringliteral">"WARNING: jet pT = %f !!"</span>, jet.Pt());</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  out = {1.,1.,1.};</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordtype">int</span> central_or_shift;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  std::vector<int> 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> </div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  std::map<int, float> jet_pt_sf_and_uncertainty = {};</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < 3; i++) {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  central_or_shift = variation_index[i];</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  params_sf_and_uncertainty.setJetEta(jet.Eta());</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  params_sf_and_uncertainty.setJetPt(jet.Pt());</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  jet_pt_sf_and_uncertainty[central_or_shift] = </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  jerSF.getScaleFactor(params_sf_and_uncertainty, central_or_shift);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  </div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  std::map<int, float> smear_vals = {};</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordtype">float</span> jet_pt_resolution, smear_factor;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <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>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < 3; i++) {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  central_or_shift = variation_index[i];</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordtype">float</span> dPt = jet.Pt() - genJet.Pt();</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  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>  smear_vals[central_or_shift] = smear_factor;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  params_resolution.setJetPt(jet.Pt());</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  params_resolution.setJetEta(jet.Eta());</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  params_resolution.setRho(rho);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  jet_pt_resolution = jer.getResolution(params_resolution);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <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> </div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < 3; i++) {</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  central_or_shift = variation_index[i];</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordflow">if</span> (jet_pt_sf_and_uncertainty[central_or_shift] > 1.){ <span class="comment">// Case 2</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  smear_factor =</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  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>  } <span class="keywordflow">else</span> { <span class="comment">// Case 3</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  smear_factor = 1.;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  }</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  smear_vals[central_or_shift] = smear_factor;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  }</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <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>  <span class="comment">// the jet would change ("flip") otherwise - and this is not what we want</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < 3; i++) {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  central_or_shift = variation_index[i];</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordflow">if</span> (smear_vals[central_or_shift] * jet.E() < 1.e-2){</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  smear_vals[central_or_shift] = 1.e-2 / jet.E();</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  }</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  out.push_back(smear_vals[central_or_shift]);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  }</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">return</span> out;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> }</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00188"></a><span class="lineno"><a class="line" href="class_jet_smearer.html#a5bc3a0baca6e3017f96619eeab7a04f9"> 188</a></span> RVec<float> <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>  RVec<float> out = {};</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordflow">if</span> (jet.M() <= 0.){</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  printf(<span class="stringliteral">"WARNING: jet m = %f !!"</span>, jet.M());</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  out = {1.,1.,1.};</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  }</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> </div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keywordtype">int</span> central_or_shift;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  std::vector<int> 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> </div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  std::map<int, float> jet_m_sf_and_uncertainty = {</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  {0, jmrVals_[0]},</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  {1, jmrVals_[1]},</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  {2, jmrVals_[2]}</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  };</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  std::map<int, float> smear_vals = {};</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordtype">float</span> jet_pt_resolution, smear_factor;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> </div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <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>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < 3; i++) {</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  central_or_shift = variation_index[i];</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordtype">float</span> dM = jet.M() - genJet.M();</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  smear_factor =</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  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>  }</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keywordtype">float</span> jet_m_resolution;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">if</span> (abs(jet.Eta()) <= 1.3) {</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  jet_m_resolution = puppisd_resolution_cen->Eval(jet.Pt());</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  jet_m_resolution = puppisd_resolution_for->Eval(jet.Pt());</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  }</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> </div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <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>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < 3; i++) {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  central_or_shift = variation_index[i];</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keywordflow">if</span> (jet_m_sf_and_uncertainty[central_or_shift] > 1.){ <span class="comment">// Case 2</span></div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  smear_factor =</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  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>  } <span class="keywordflow">else</span> { <span class="comment">// Case 3</span></div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  smear_factor = 1.;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  }</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  }</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  }</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> </div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <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>  <span class="comment">// the jet would change ("flip") otherwise - and this is not what we want</span></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < 3; i++) {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  central_or_shift = variation_index[i];</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="keywordflow">if</span> (smear_vals[central_or_shift] * jet.M() < 1.e-2){</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  smear_vals[central_or_shift] = 1.e-2;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  }</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  out.push_back(smear_vals[central_or_shift]);</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  }</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keywordflow">return</span> out;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> }</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< float > 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< float > 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  <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 bb69d8a..6c89ba1 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> <span class="preprocessor">#include <boost/property_tree/ptree.hpp></span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#include <boost/property_tree/json_parser.hpp></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="preprocessor">#include <algorithm></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="preprocessor">#include <iostream></span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="preprocessor">#include "TIMBER/Framework/include/Pythonic.h"</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> </div><div class="line"><a name="l00014"></a><span class="lineno"><a class="line" href="class_lumi_filter.html"> 14</a></span> <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>  <span class="keyword">private</span>:</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  boost::property_tree::ptree ptree;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> lumStart;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> lumEnd;</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <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>  <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>  ~<a class="code" href="class_lumi_filter.html">LumiFilter</a>();</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <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> };</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="class_lumi_filter.html#a22f8121062d7d9ad202974dfb5d22f6f"> 46</a></span> <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>  boost::property_tree::read_json(filename, ptree);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> }</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="class_lumi_filter.html#a1cc0f25a2b925ba83e4b27c86965a065"> 50</a></span> <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>  <span class="keywordflow">if</span> (year == 17 or year == 2017) {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  boost::property_tree::read_json(std::getenv(<span class="stringliteral">"TIMBERPATH"</span>)+std::string(<span class="stringliteral">"TIMBER/data/LumiJSON/Cert_294927-306462_13TeV_EOY2017ReReco_Collisions17_JSON.txt"</span>), ptree);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  } <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>  boost::property_tree::read_json(std::getenv(<span class="stringliteral">"TIMBERPATH"</span>)+std::string(<span class="stringliteral">"TIMBER/data/LumiJSON/Cert_314472-325175_13TeV_17SeptEarlyReReco2018ABC_PromptEraD_Collisions18_JSON.txt"</span>), ptree);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  std::cout << <span class="stringliteral">"Year "</span> << year << <span class="stringliteral">" not supported by LumiFilter"</span> << std::endl;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">throw</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> LumiFilter::~LumiFilter() {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="class_lumi_filter.html#ab3e31a13fec5b494c562c002e18faa7d"> 64</a></span> <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>  <span class="keywordtype">bool</span> out = <span class="keyword">false</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">for</span> ( <span class="keyword">const</span> <span class="keyword">auto</span>& runEntry : ptree ) {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">if</span> (std::stoul(runEntry.first) == run) {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordflow">for</span> ( <span class="keyword">const</span> <span class="keyword">auto</span>& lrEntry : runEntry.second ) {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <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>  lumStart = std::stoul(lrNd.begin()->second.data());</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  lumEnd = std::stoul((++lrNd.begin())->second.data());</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">if</span> ((lumi < lumEnd) && (lumi > lumStart)) {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  out = <span class="keyword">true</span>;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  }</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  }</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">return</span> out;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> }</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> <span class="preprocessor">#include <boost/property_tree/ptree.hpp></span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#include <boost/property_tree/json_parser.hpp></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="preprocessor">#include <algorithm></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="preprocessor">#include <iostream></span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00013"></a><span class="lineno"><a class="line" href="class_lumi_filter.html"> 13</a></span> <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>  <span class="keyword">private</span>:</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  boost::property_tree::ptree ptree;</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> lumStart;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> lumEnd;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> </div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <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>  <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>  ~<a class="code" href="class_lumi_filter.html">LumiFilter</a>();</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <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> };</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="class_lumi_filter.html#a22f8121062d7d9ad202974dfb5d22f6f"> 45</a></span> <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>  boost::property_tree::read_json(filename, ptree);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="class_lumi_filter.html#a1cc0f25a2b925ba83e4b27c86965a065"> 49</a></span> <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>  <span class="keywordflow">if</span> (year == 17 or year == 2017) {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  boost::property_tree::read_json(std::getenv(<span class="stringliteral">"TIMBERPATH"</span>)+std::string(<span class="stringliteral">"TIMBER/data/LumiJSON/Cert_294927-306462_13TeV_EOY2017ReReco_Collisions17_JSON.txt"</span>), ptree);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  } <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>  boost::property_tree::read_json(std::getenv(<span class="stringliteral">"TIMBERPATH"</span>)+std::string(<span class="stringliteral">"TIMBER/data/LumiJSON/Cert_314472-325175_13TeV_17SeptEarlyReReco2018ABC_PromptEraD_Collisions18_JSON.txt"</span>), ptree);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  std::cout << <span class="stringliteral">"Year "</span> << year << <span class="stringliteral">" not supported by LumiFilter"</span> << std::endl;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">throw</span>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> LumiFilter::~LumiFilter() {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> }</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="class_lumi_filter.html#ab3e31a13fec5b494c562c002e18faa7d"> 63</a></span> <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>  <span class="keywordtype">bool</span> out = <span class="keyword">false</span>;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordflow">for</span> ( <span class="keyword">const</span> <span class="keyword">auto</span>& runEntry : ptree ) {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">if</span> (std::stoul(runEntry.first) == run) {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">for</span> ( <span class="keyword">const</span> <span class="keyword">auto</span>& lrEntry : runEntry.second ) {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <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>  lumStart = std::stoul(lrNd.begin()->second.data());</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  lumEnd = std::stoul((++lrNd.begin())->second.data());</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">if</span> ((lumi < lumEnd) && (lumi > lumStart)) {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  out = <span class="keyword">true</span>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  }</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  }</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  }</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">return</span> out;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> }</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 43493a1..8c24d34 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> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#include <sstream></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="preprocessor">#include <algorithm></span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include <iterator></span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="preprocessor">#include <stdexcept></span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="keyword">template</span> <<span class="keyword">typename</span> IntType></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> std::vector<IntType> range(IntType start, IntType stop, IntType step)</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> {</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  <span class="keywordflow">if</span> (step == IntType(0))</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  <span class="keywordflow">throw</span> std::invalid_argument(<span class="stringliteral">"step for range must be non-zero"</span>);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  }</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  std::vector<IntType> result;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  IntType i = start;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keywordflow">while</span> ((step > 0) ? (i < stop) : (i > stop))</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  result.push_back(i);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  i += step;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  }</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> }</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="keyword">template</span> <<span class="keyword">typename</span> IntType></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> std::vector<IntType> range(IntType start, IntType stop)</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">return</span> range(start, stop, IntType(1));</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="keyword">template</span> <<span class="keyword">typename</span> IntType></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> std::vector<IntType> range(IntType stop)</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">return</span> range(IntType(0), stop, IntType(1));</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> std::vector<std::string> split(<span class="keyword">const</span> std::string& str, <span class="keywordtype">char</span> delim = <span class="charliteral">' '</span>) {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  std::vector<std::string> out {};</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  std::stringstream ss(str);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  std::string token;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">while</span> (std::getline(ss, token, delim)) {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  out.push_back(token);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordflow">return</span> out;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> }</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="comment">// Personal</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="comment"></span><span class="keyword">template</span><<span class="keyword">typename</span> T></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="keywordtype">bool</span> InList(T obj, std::vector<T> list) {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordtype">bool</span> out;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <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>  <span class="keywordflow">if</span> (pos != std::end(list)){</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  out = <span class="keyword">true</span>;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  } <span class="keywordflow">else</span> {out = <span class="keyword">false</span>;}</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">return</span> out;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <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>  <span class="keywordtype">bool</span> out;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keyword">auto</span> found = main.find(sub);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">if</span> (found != std::string::npos){</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  out = <span class="keyword">true</span>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  } <span class="keywordflow">else</span> {out = <span class="keyword">false</span>;}</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">return</span> out;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> <span class="keyword">template</span><<span class="keyword">typename</span> T></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> <span class="keywordtype">void</span> Extend(std::vector<T> base, std::vector<T> extension) {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < extension.size(); i++) {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  base.push_back(extension.at(i));</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> }</div></div><!-- fragment --></div><!-- contents --> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="preprocessor">#ifndef _TIMBER_PYTHONIC</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define _TIMBER_PYTHONIC</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include <sstream></span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="preprocessor">#include <algorithm></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="preprocessor">#include <iterator></span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="preprocessor">#include <stdexcept></span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="preprocessor">#ifndef _STRUCT_TIMESPEC</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="preprocessor">#define _STRUCT_TIMESPEC</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="preprocessor">#include <sys/stat.h></span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> </div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <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>  <span class="keyword">template</span> <<span class="keyword">typename</span> IntType></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  std::vector<IntType> Range(IntType start, IntType stop, IntType step) {</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="keywordflow">if</span> (step == IntType(0)) {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keywordflow">throw</span> std::invalid_argument(<span class="stringliteral">"step for range must be non-zero"</span>);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  }</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  std::vector<IntType> result;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  IntType i = start;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordflow">while</span> ((step > 0) ? (i < stop) : (i > stop)) {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  result.push_back(i);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  i += step;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  }</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  }</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> IntType></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  std::vector<IntType> Range(IntType start, IntType stop) {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordflow">return</span> Range(start, stop, IntType(1));</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> IntType></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  std::vector<IntType> Range(IntType stop) {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordflow">return</span> Range(IntType(0), stop, IntType(1));</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  std::vector<std::string> Split(<span class="keyword">const</span> std::string& str, <span class="keywordtype">char</span> delim = <span class="charliteral">' '</span>) {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  std::vector<std::string> out {};</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  std::stringstream ss(str);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  std::string token;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">while</span> (std::getline(ss, token, delim)) {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  out.push_back(token);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  }</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">return</span> out;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="comment">// Personal</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="comment"></span> <span class="keyword">template</span><<span class="keyword">typename</span> T></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordtype">bool</span> InList(T obj, std::vector<T> list) {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordtype">bool</span> out;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <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>  <span class="keywordflow">if</span> (pos != std::end(list)){</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  out = <span class="keyword">true</span>;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  } <span class="keywordflow">else</span> {out = <span class="keyword">false</span>;}</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">return</span> out;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  }</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <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>  <span class="keywordtype">bool</span> out;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keyword">auto</span> found = main.find(sub);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">if</span> (found != std::string::npos){</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  out = <span class="keyword">true</span>;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  } <span class="keywordflow">else</span> {out = <span class="keyword">false</span>;}</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">return</span> out;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordtype">void</span> Extend(std::vector<T> base, std::vector<T> extension) {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < extension.size(); i++) {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  base.push_back(extension.at(i));</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <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>  <span class="keyword">struct </span>stat sb;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordtype">bool</span> exists;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> </div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">if</span> (stat(dirname, &sb) == 0 && S_ISDIR(sb.st_mode)) {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  exists = <span class="keyword">true</span>;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  exists = <span class="keyword">false</span>;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  }</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">return</span> exists;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  }</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordtype">void</span> Execute(std::string cmd) {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  printf(<span class="stringliteral">"Executing: %s"</span>,cmd.c_str());</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  std::system(cmd.c_str());</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  }</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> }</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> <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  <a href="http://www.doxygen.org/index.html"> diff --git a/docs/annotated.html b/docs/annotated.html index 36e412f..be2390f 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;"> </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;"> </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;"> </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 <branchName, branchValue> 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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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;"> </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 0000000..73bdb04 --- /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 +  <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  <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 0000000..7af35a1 --- /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 +  <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> | +<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> + </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"> </td><td class="mdescRight">Empty constructor. <br /></td></tr> +<tr class="separator:af839abf1fc3ac508b0dc8fbc187d6690"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ae7501000359cccbe0c5a912b9dffa239"><td class="memItemLeft" align="right" valign="top"> </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"> </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"> </td></tr> +<tr class="memitem:a3afbe21ea66123f16e08b2718b017535"><td class="memItemLeft" align="right" valign="top">std::vector< float > </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"> </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"> </td></tr> +<tr class="memitem:a2acf43283607d1bd97a4fa685a3f48b5"><td class="memItemLeft" align="right" valign="top">std::vector< float > </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"> </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"> </td></tr> +<tr class="memitem:a3dfc7ef86f8106535b10cbbe000318b0"><td class="memItemLeft" align="right" valign="top">std::vector< float > </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"> </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"> </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 & Destructor Documentation</h2> +<a id="ae7501000359cccbe0c5a912b9dffa239"></a> +<h2 class="memtitle"><span class="permalink"><a href="#ae7501000359cccbe0c5a912b9dffa239">◆ </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 </td> + <td class="paramname"><em>filename</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">std::string </td> + <td class="paramname"><em>histname</em> </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">◆ </a></span>eval()</h2> + +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">std::vector< float > eval </td> + <td>(</td> + <td class="paramtype">float </td> + <td class="paramname"><em>xval</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">float </td> + <td class="paramname"><em>yval</em> = <code>0</code>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">float </td> + <td class="paramname"><em>zval</em> = <code>0</code> </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<float> {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">◆ </a></span>eval_bybin()</h2> + +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">std::vector< float > eval_bybin </td> + <td>(</td> + <td class="paramtype">int </td> + <td class="paramname"><em>binx</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>biny</em> = <code>0</code>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"><em>binz</em> = <code>0</code> </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<float> {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">◆ </a></span>eval_byglobal()</h2> + +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">std::vector< float > eval_byglobal </td> + <td>(</td> + <td class="paramtype">int </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<float> {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  <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 0000000..22b33fc --- /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 +  <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< float > 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  <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 0000000..c886b7f --- /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 +  <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> | +<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> + </td><td class="memItemRight" valign="bottom"><b>JetSmearer</b> (std::string jetType, std::string jetTag, std::vector< float > jmrVals)</td></tr> +<tr class="separator:a30c354cf076310caca3202dd79ed17b5"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a2c0d63e784a2037d5f81d190b167e739"><td class="memItemLeft" align="right" valign="top">RVec< float > </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"> </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"> </td></tr> +<tr class="memitem:a5bc3a0baca6e3017f96619eeab7a04f9"><td class="memItemLeft" align="right" valign="top">RVec< float > </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"> </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"> </td></tr> +</table> +<h2 class="groupheader">Member Function Documentation</h2> +<a id="a5bc3a0baca6e3017f96619eeab7a04f9"></a> +<h2 class="memtitle"><span class="permalink"><a href="#a5bc3a0baca6e3017f96619eeab7a04f9">◆ </a></span>GetSmearValsM()</h2> + +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">RVec< float > GetSmearValsM </td> + <td>(</td> + <td class="paramtype">LorentzV </td> + <td class="paramname"><em>jet</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">LorentzV </td> + <td class="paramname"><em>genJet</em> </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">◆ </a></span>GetSmearValsPt()</h2> + +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">RVec< float > GetSmearValsPt </td> + <td>(</td> + <td class="paramtype">LorentzV </td> + <td class="paramname"><em>jet</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">LorentzV </td> + <td class="paramname"><em>genJet</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">float </td> + <td class="paramname"><em>rho</em> </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<float> {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  <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 18edadd..4c6da14 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 76e26f2..580d077 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 </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"> </td><td class="mdescRight">Constructor. <a href="#a0b3102dac1f626d41d3ab6a99c48b519">More...</a><br /></td></tr> -<tr class="separator:a0b3102dac1f626d41d3ab6a99c48b519"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a3e0c81538d6f0e3bfcc48b46307e5e67"><td class="memItemLeft" align="right" valign="top">def </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"> </td><td class="mdescRight">Constructor. <a href="#a3e0c81538d6f0e3bfcc48b46307e5e67">More...</a><br /></td></tr> +<tr class="separator:a3e0c81538d6f0e3bfcc48b46307e5e67"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ad6e0df224a7987f76c4c0744151167fb"><td class="memItemLeft" align="right" valign="top">def </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"> </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"> </td></tr> -<tr class="memitem:af3b819295400bd83f7131b6f0cb45aaa"><td class="memItemLeft" align="right" valign="top">def </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"> </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"> </td></tr> -<tr class="memitem:afb58852d69fc4cdd9bce36e86ed03192"><td class="memItemLeft" align="right" valign="top">def </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"> </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"> </td></tr> +<tr class="memitem:aa6b648587129a1fec783efe1e2c6ecdd"><td class="memItemLeft" align="right" valign="top">def </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"> </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"> </td></tr> +<tr class="memitem:a7d989985f36ca7d2c79c7b51c5cb0bb8"><td class="memItemLeft" align="right" valign="top">def </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"> </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"> </td></tr> <tr class="memitem:a495bda3e8e2a86f5c1f4f58091bfbccb"><td class="memItemLeft" align="right" valign="top">def </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"> </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"> </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 <nominal, up, down> for "weight" type and <up, down> for "uncert" type. </p> </div><h2 class="groupheader">Constructor & Destructor Documentation</h2> -<a id="a0b3102dac1f626d41d3ab6a99c48b519"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a0b3102dac1f626d41d3ab6a99c48b519">◆ </a></span>__init__()</h2> +<a id="a3e0c81538d6f0e3bfcc48b46307e5e67"></a> +<h2 class="memtitle"><span class="permalink"><a href="#a3e0c81538d6f0e3bfcc48b46307e5e67">◆ </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"> </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">◆ </a></span>GetCall()</h2> +<a id="a7d989985f36ca7d2c79c7b51c5cb0bb8"></a> +<h2 class="memtitle"><span class="permalink"><a href="#a7d989985f36ca7d2c79c7b51c5cb0bb8">◆ </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"> </td> - <td class="paramname"><em>inArgs</em> = <code>[]</code> </td> + <td class="paramname"><em>inArgs</em> = <code>{}</code>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"> </td> + <td class="paramname"><em>toCheck</em> = <code>None</code> </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">◆ </a></span>MakeCall()</h2> +<a id="aa6b648587129a1fec783efe1e2c6ecdd"></a> +<h2 class="memtitle"><span class="permalink"><a href="#aa6b648587129a1fec783efe1e2c6ecdd">◆ </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"> </td> - <td class="paramname"><em>inArgs</em> = <code>[]</code> </td> + <td class="paramname"><em>inArgs</em> = <code>{}</code>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"> </td> + <td class="paramname"><em>toCheck</em> = <code>None</code> </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 89fd02e..450ccca 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 5195b84..fb345df 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 </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"> </td><td class="mdescRight">Constructor. <a href="#a9ff723bc556264af934b8d22ddf15051">More...</a><br /></td></tr> -<tr class="separator:a9ff723bc556264af934b8d22ddf15051"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a62d7887f281652fad43626fb4d2e791a"><td class="memItemLeft" align="right" valign="top">def </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"> </td><td class="mdescRight">Constructor. <a href="#a62d7887f281652fad43626fb4d2e791a">More...</a><br /></td></tr> +<tr class="separator:a62d7887f281652fad43626fb4d2e791a"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a303f02c4b5af83bafee2f1064bab45fa"><td class="memItemLeft" align="right" valign="top">def </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"> </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"> </td></tr> @@ -126,6 +126,9 @@ Public Member Functions</h2></td></tr> <tr class="memitem:af9f0f605c4d451aac2ea024e56f296fc"><td class="memItemLeft" align="right" valign="top">def </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"> </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"> </td></tr> +<tr class="memitem:a361306a468fa48145cf99ee48c82bf25"><td class="memItemLeft" align="right" valign="top">def </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"> </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"> </td></tr> <tr class="memitem:ac9396d0acbc67a31bbae81c20944900c"><td class="memItemLeft" align="right" valign="top">def </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"> </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"> </td></tr> @@ -148,6 +151,10 @@ Public Attributes</h2></td></tr>  </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"> </td><td class="mdescRight">List of child nodes. <br /></td></tr> <tr class="separator:a0ad3c9f0298ae46424fb2461b3e2d506"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a457d913bff1ebc8671c1eca1c9d5fc03"><td class="memItemLeft" align="right" valign="top"><a id="a457d913bff1ebc8671c1eca1c9d5fc03"></a> + </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"> </td><td class="mdescRight">Parent node. <br /></td></tr> +<tr class="separator:a457d913bff1ebc8671c1eca1c9d5fc03"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a7aead736a07eaf25623ad7bfa1f0ee2d"><td class="memItemLeft" align="right" valign="top"> </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"> </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"> </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 & Destructor Documentation</h2> -<a id="a9ff723bc556264af934b8d22ddf15051"></a> -<h2 class="memtitle"><span class="permalink"><a href="#a9ff723bc556264af934b8d22ddf15051">◆ </a></span>__init__()</h2> +<a id="a62d7887f281652fad43626fb4d2e791a"></a> +<h2 class="memtitle"><span class="permalink"><a href="#a62d7887f281652fad43626fb4d2e791a">◆ </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"> </td> - <td class="paramname"><em>children</em> = <code>[]</code> </td> + <td class="paramname"><em>children</em> = <code>[]</code>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"> </td> + <td class="paramname"><em>parent</em> = <code>None</code> </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">◆ </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"> </td> + <td class="paramname"><em>self</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"> </td> + <td class="paramname"><em>argv</em> </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 6582353..1bf7025 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="Events", runTreeName="Runs")</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 4304b5b..3d3e12b 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"> </td></tr> <tr class="memitem:ac9396d0acbc67a31bbae81c20944900c"><td class="memItemLeft" align="right" valign="top">def </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"> </td></tr> +<tr class="memitem:a361306a468fa48145cf99ee48c82bf25"><td class="memItemLeft" align="right" valign="top">def </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"> </td></tr> <tr class="memitem:a3f19f4e3f9344e283f5cf6ae2371fc70"><td class="memItemLeft" align="right" valign="top">def </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"> </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"> </td></tr> @@ -134,9 +136,9 @@ Public Member Functions</h2></td></tr> <tr class="memitem:a818bf6c1ef57461de293ebf6a4c7ea6a"><td class="memItemLeft" align="right" valign="top">def </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"> </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"> </td></tr> -<tr class="memitem:afe44fb85cff031cf2e19c17b36afe935"><td class="memItemLeft" align="right" valign="top">def </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"> </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"> </td></tr> +<tr class="memitem:ade0c62b73ea95b2f11ff8f5add708066"><td class="memItemLeft" align="right" valign="top">def </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"> </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"> </td></tr> <tr class="memitem:add61011322111cb5adf1cbc721a6e8c6"><td class="memItemLeft" align="right" valign="top">def </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"> </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"> </td></tr> @@ -155,23 +157,26 @@ Public Member Functions</h2></td></tr> <tr class="memitem:ae00326bddf9a3bb23051007674e6cc5b"><td class="memItemLeft" align="right" valign="top">def </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"> </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"> </td></tr> +<tr class="memitem:aa933d8e2ef227f994f60ee3b278eb0f6"><td class="memItemLeft" align="right" valign="top">def </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"> </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"> </td></tr> <tr class="memitem:a2f0e7e0c026da9b2cbc160816a2db28b"><td class="memItemLeft" align="right" valign="top">def </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"> </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"> </td></tr> <tr class="memitem:a2893215aeed2a64dc72b15589eeab9f2"><td class="memItemLeft" align="right" valign="top">def </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"> </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"> </td></tr> -<tr class="memitem:a32bfe7e08329c1207530da3ed0b38ac5"><td class="memItemLeft" align="right" valign="top">def </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"> </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"> </td></tr> +<tr class="memitem:afe470917a833262458cb26da33e124ec"><td class="memItemLeft" align="right" valign="top">def </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"> </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"> </td></tr> <tr class="memitem:ad89f013ac60b6e44f4d0566fafbd8219"><td class="memItemLeft" align="right" valign="top">def </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"> </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"> </td></tr> -<tr class="memitem:adea335ba0db85d4bf48562523fffe963"><td class="memItemLeft" align="right" valign="top">def </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"> </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"> </td></tr> +<tr class="memitem:af222479f97b45564dfcc91fec275c48b"><td class="memItemLeft" align="right" valign="top">def </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"> </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"> </td></tr> <tr class="memitem:a611faeda8b08b76181109820e549c232"><td class="memItemLeft" align="right" valign="top">def </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"> </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"> </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"> </td></tr> <tr class="memitem:a5061b8f5d8934a98f26990aafa9e26db"><td class="memItemLeft" align="right" valign="top">def </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"> </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">◆ </a></span>AddCorrection()</h2> +<a id="afe470917a833262458cb26da33e124ec"></a> +<h2 class="memtitle"><span class="permalink"><a href="#afe470917a833262458cb26da33e124ec">◆ </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"> </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">◆ </a></span>GetFlagString()</h2> +<a id="ade0c62b73ea95b2f11ff8f5add708066"></a> +<h2 class="memtitle"><span class="permalink"><a href="#ade0c62b73ea95b2f11ff8f5add708066">◆ </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"> </td> - <td class="paramname"><em>flagList</em> </td> + <td class="paramname"><em>flagList</em> = <code>GetStandardFlags()</code> </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">◆ </a></span>MakeWeightCols()</h2> +<a id="af222479f97b45564dfcc91fec275c48b"></a> +<h2 class="memtitle"><span class="permalink"><a href="#af222479f97b45564dfcc91fec275c48b">◆ </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"> </td> <td class="paramname"><em>self</em>, </td> </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"> </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_<name>__</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">◆ </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"> </td> + <td class="paramname"><em>self</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"> </td> + <td class="paramname"><em>name</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"> </td> + <td class="paramname"><em>basecoll</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"> </td> + <td class="paramname"><em>index</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"> </td> + <td class="paramname"><em>skip</em> = <code>[]</code> </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">'LeadJet'</span>,<span class="stringliteral">'FatJet'</span>,<span class="stringliteral">'0'</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">◆ </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"> </td> + <td class="paramname"><em>self</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"> </td> + <td class="paramname"><em>argv</em> </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">'TopJets'</span>,<span class="stringliteral">'FatJet'</span>,<span class="stringliteral">'FatJet_msoftdrop > 105 && FatJet_msoftdrop < 220'</span>)</div></div><!-- fragment --> </div> </div> diff --git a/docs/class_trigger__weight-members.html b/docs/class_trigger__weight-members.html index 781d004..12d1960 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 d9f88a9..0beedcd 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"> </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"> </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"> </td></tr> -<tr class="memitem:a77ad53e559c5255e944d4d726d2047ef"><td class="memItemLeft" align="right" valign="top">RVec< float > </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"> </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"> </td></tr> +<tr class="memitem:ac846f7f0fce4e3c397d11a0b2dbc5856"><td class="memItemLeft" align="right" valign="top">RVec< float > </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"> </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"> </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">◆ </a></span>eval()</h2> +<a id="ac846f7f0fce4e3c397d11a0b2dbc5856"></a> +<h2 class="memtitle"><span class="permalink"><a href="#ac846f7f0fce4e3c397d11a0b2dbc5856">◆ </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 </td> - <td class="paramname"><em>plateau</em> = <code>-1.0</code> </td> + <td class="paramname"><em>plateau</em> = <code>0</code> </td> </tr> <tr> <td></td> diff --git a/docs/common_8h_source.html b/docs/common_8h_source.html index 73e14e9..a6bb06c 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> <span class="preprocessor">#ifndef COMMON_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define COMMON_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> </div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="preprocessor">#include <cmath></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="preprocessor">#include <ROOT/RVec.hxx></span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="preprocessor">#include <TMath.h></span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="preprocessor">#include <Math/GenVector/LorentzVector.h></span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="preprocessor">#include <Math/GenVector/PtEtaPhiM4D.h></span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="preprocessor">#include <Math/Vector4Dfwd.h></span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> </div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <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> <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>  <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>  <span class="keywordtype">float</span> result = phi1 - phi2;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="keywordflow">while</span> (result > TMath::Pi()) result -= 2*TMath::Pi();</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keywordflow">while</span> (result <= -TMath::Pi()) result += 2*TMath::Pi();</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  }</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <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>  <span class="keywordtype">float</span> deta = v1.Eta()-v2.Eta();</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <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>  <span class="keywordflow">return</span> sqrt(deta*deta+dphi*dphi);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  }</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="namespacehardware.html#a86cac73d45dc208c29d331a6438cc5d1"> 46</a></span>  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>  ROOT::Math::PtEtaPhiMVector v(pt,eta,phi,m);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">return</span> v;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  }</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="namespacehardware.html#abfdf87f14ffb0769dc41c74a62d90b6e"> 59</a></span>  RVec<ROOT::Math::PtEtaPhiMVector> <a class="code" href="namespacehardware.html#a86cac73d45dc208c29d331a6438cc5d1">TLvector</a>(RVec<float> pt,RVec<float> eta,RVec<float> phi,RVec<float> m) {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  RVec<ROOT::Math::PtEtaPhiMVector> vs;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < pt.size(); i++) {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  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>  vs.push_back(v);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordflow">return</span> vs;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="namespacehardware.html#aece5e1d3b9c47f248f8bb83f1206b04f"> 78</a></span>  <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>  <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>  }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="namespacehardware.html#a35a91a442950509fafc36c5d5d4c58ed"> 91</a></span>  <span class="keywordtype">double</span> <a class="code" href="namespacehardware.html#a35a91a442950509fafc36c5d5d4c58ed">invariantMass</a>(RVec<ROOT::Math::PtEtaPhiMVector> vects) {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  ROOT::Math::PtEtaPhiMVector sum;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  sum.SetCoordinates(0,0,0,0);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < vects.size(); i++) {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  sum = sum + vects[i];</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">return</span> sum.M();</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> }</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&#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> <span class="preprocessor">#ifndef COMMON_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define COMMON_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> </div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="preprocessor">#include <cmath></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="preprocessor">#include <cstdlib></span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="preprocessor">#include <ROOT/RVec.hxx></span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="preprocessor">#include <TMath.h></span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="preprocessor">#include <Math/GenVector/LorentzVector.h></span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="preprocessor">#include <Math/GenVector/PtEtaPhiM4D.h></span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="preprocessor">#include <Math/Vector4Dfwd.h></span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <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> <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>  <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>  <span class="keywordtype">float</span> result = phi1 - phi2;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keywordflow">while</span> (result > TMath::Pi()) result -= 2*TMath::Pi();</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keywordflow">while</span> (result <= -TMath::Pi()) result += 2*TMath::Pi();</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  }</div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="namespacehardware.html#ad4b8b087606d67425cb9534692e47e0e"> 39</a></span>  <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>  <span class="keywordtype">float</span> deta = v1.Eta()-v2.Eta();</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <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>  <span class="keywordflow">return</span> sqrt(deta*deta+dphi*dphi);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  }</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="namespacehardware.html#a86cac73d45dc208c29d331a6438cc5d1"> 53</a></span>  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>  ROOT::Math::PtEtaPhiMVector v(pt,eta,phi,m);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordflow">return</span> v;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  }</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="namespacehardware.html#abfdf87f14ffb0769dc41c74a62d90b6e"> 66</a></span>  RVec<ROOT::Math::PtEtaPhiMVector> <a class="code" href="namespacehardware.html#a86cac73d45dc208c29d331a6438cc5d1">TLvector</a>(RVec<float> pt,RVec<float> eta,RVec<float> phi,RVec<float> m) {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  RVec<ROOT::Math::PtEtaPhiMVector> vs;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < pt.size(); i++) {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  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>  vs.push_back(v);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">return</span> vs;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  }</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="namespacehardware.html#aece5e1d3b9c47f248f8bb83f1206b04f"> 85</a></span>  <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>  <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>  }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="namespacehardware.html#a35a91a442950509fafc36c5d5d4c58ed"> 98</a></span>  <span class="keywordtype">double</span> <a class="code" href="namespacehardware.html#a35a91a442950509fafc36c5d5d4c58ed">invariantMass</a>(RVec<ROOT::Math::PtEtaPhiMVector> vects) {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  ROOT::Math::PtEtaPhiMVector sum;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  sum.SetCoordinates(0,0,0,0);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < vects.size(); i++) {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  sum = sum + vects[i];</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">return</span> sum.M();</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="comment">// std::pair<int,float> closest(obj, collection, presel=lambda x, y: True):</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="comment">// ret = None</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="comment">// drMin = 999</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="comment">// for x in collection:</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="comment">// if not presel(obj, x):</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="comment">// continue</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="comment">// dr = deltaR(obj, x)</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="comment">// if dr < drMin:</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="comment">// ret = x</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="comment">// drMin = dr</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="comment">// return (ret, drMin)</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="comment">// def matchObjectCollection(objs,</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="comment">// collection,</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="comment">// dRmax=0.4,</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="comment">// presel=lambda x, y: True):</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="comment">// pairs = {}</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="comment">// if len(objs) == 0:</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="comment">// return pairs</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="comment">// if len(collection) == 0:</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <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>  <span class="comment">// for obj in objs:</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="comment">// (bm, dR) = closest(obj,</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <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>  <span class="comment">// if dR < dRmax:</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="comment">// pairs[obj] = bm</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="comment">// else:</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="comment">// pairs[obj] = None</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="comment">// return pairs</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> </div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="comment">// def matchObjectCollectionMultiple(</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="comment">// objs,</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="comment">// collection,</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="comment">// dRmax=0.4,</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="comment">// presel=lambda x, y: True</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="comment">// ):</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="comment">// pairs = {}</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="comment">// if len(objs) == 0:</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="comment">// return pairs</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="comment">// if len(collection) == 0:</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <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>  <span class="comment">// for obj in objs:</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="comment">// matched = []</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="comment">// for c in collection:</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="comment">// if presel(obj, c) and deltaR(obj, c) < dRmax:</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="comment">// matched.append(c)</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="comment">// pairs[obj] = matched</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="comment">// return pairs</span></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> }</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&#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< ROOT::Math::PtEtaPhiMVector > 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< ROOT::Math::PtEtaPhiMVector > 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 131aa7d..6d1c45f 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 </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"> </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"> </td></tr> <tr class="memitem:ga9d19a9ceee7d4de34321b40563c1070a"><td class="memItemLeft" align="right" valign="top">def </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"> </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"> </td></tr> @@ -122,6 +125,9 @@ Functions</h2></td></tr> <tr class="memitem:gaa4e8229330d67d54397e18048078ddd2"><td class="memItemLeft" align="right" valign="top">def </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"> </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"> </td></tr> +<tr class="memitem:ga362ce18096811fbbc2dba955e605ffa0"><td class="memItemLeft" align="right" valign="top">def </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"> </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"> </td></tr> <tr class="memitem:ga6e0f471be6c0aab5d2c8390cd3337aa2"><td class="memItemLeft" align="right" valign="top">def </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"> </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"> </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">◆ </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"> </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">◆ </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">"Flag_goodVertices"</span>,</div><div class="line"> <span class="stringliteral">"Flag_globalTightHalo2016Filter"</span>,</div><div class="line"> <span class="stringliteral">"Flag_eeBadScFilter"</span>,</div><div class="line"> <span class="stringliteral">"Flag_HBHENoiseFilter"</span>,</div><div class="line"> <span class="stringliteral">"Flag_HBHENoiseIsoFilter"</span>,</div><div class="line"> <span class="stringliteral">"Flag_ecalBadCalibFilter"</span>,</div><div class="line"> <span class="stringliteral">"Flag_EcalDeadCellTriggerPrimitiveFilter"</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 fa3c473..b271c90 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 877767b..67d614e 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 "Math/Vector4Dfwd.h"</span></div><div class="line"><span class="preprocessor">#include "TIMBER/Framework/include/GenMatching.h"</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<float> GenPart_pt, RVec<float> GenPart_eta,</div><div class="line"> RVec<float> GenPart_phi, RVec<float> GenPart_mass,</div><div class="line"> RVec<int> GenPart_pdgId, RVec<int> GenPart_status,</div><div class="line"> RVec<int> GenPart_statusFlags, RVec<int> 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'll check</span></div><div class="line">vector<Particle*> 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 < 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 = &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-><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 && this_particle-><a class="code" href="class_particle.html#a217625337b1642ead85a1fb1c0c80660">DeltaR</a>(top_vect) < 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) >= 1 && abs(this_pdgId) <= 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 < quarks.size(); iq++) {</div><div class="line"> q = quarks[iq];</div><div class="line"> <span class="keywordflow">if</span> (abs(*(q-><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-><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-><a class="code" href="class_particle.html#a3fdb24d523e00a1ce48a6dd2a2c283cd">pdgId</a>)) == 6 && bottom_parent-><a class="code" href="class_particle.html#a217625337b1642ead85a1fb1c0c80660">DeltaR</a>(top_vect) < 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<Particle*> this_W_children;</div><div class="line"><span class="keywordflow">for</span> (<span class="keywordtype">int</span> iW = 0; iW < 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-><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's in the jet</span></div><div class="line"> <span class="keywordflow">if</span> (abs(*(wParent-><a class="code" href="class_particle.html#a3fdb24d523e00a1ce48a6dd2a2c283cd">pdgId</a>)) == 6 && wParent-><a class="code" href="class_particle.html#a217625337b1642ead85a1fb1c0c80660">DeltaR</a>(top_vect) < 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 && this_W_children[0]->pdgId == W-><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 < 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-><a class="code" href="class_particle.html#a3fdb24d523e00a1ce48a6dd2a2c283cd">pdgId</a>);</div><div class="line"> <span class="keywordflow">if</span> (abs(child_pdgId) >= 1 && abs(child_pdgId) <= 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 < prongs.size(); iprong++) {</div><div class="line"> <span class="keywordflow">if</span> (prongs[iprong]->DeltaR(top_vect) < 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'll check</span></div><div class="line">vector<Particle*> 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 < 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 = &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-><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 && this_particle-><a class="code" href="class_particle.html#a217625337b1642ead85a1fb1c0c80660">DeltaR</a>(top_vect) < 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) >= 1 && abs(this_pdgId) <= 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 < quarks.size(); iq++) {</div><div class="line"> q = quarks[iq];</div><div class="line"> <span class="keywordflow">if</span> (abs(*(q-><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-><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-><a class="code" href="class_particle.html#a3fdb24d523e00a1ce48a6dd2a2c283cd">pdgId</a>)) == 6 && bottom_parent-><a class="code" href="class_particle.html#a217625337b1642ead85a1fb1c0c80660">DeltaR</a>(top_vect) < 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<Particle*> this_W_children;</div><div class="line"><span class="keywordflow">for</span> (<span class="keywordtype">int</span> iW = 0; iW < 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-><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's in the jet</span></div><div class="line"> <span class="keywordflow">if</span> (abs(*(wParent-><a class="code" href="class_particle.html#a3fdb24d523e00a1ce48a6dd2a2c283cd">pdgId</a>)) == 6 && wParent-><a class="code" href="class_particle.html#a217625337b1642ead85a1fb1c0c80660">DeltaR</a>(top_vect) < 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 && this_W_children[0]->pdgId == W-><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 < 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-><a class="code" href="class_particle.html#a3fdb24d523e00a1ce48a6dd2a2c283cd">pdgId</a>);</div><div class="line"> <span class="keywordflow">if</span> (abs(child_pdgId) >= 1 && abs(child_pdgId) <= 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 < prongs.size(); iprong++) {</div><div class="line"> <span class="keywordflow">if</span> (prongs[iprong]-><a class="code" href="namespacehardware.html#ad4b8b087606d67425cb9534692e47e0e">DeltaR</a>(top_vect) < 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  <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 164d18f..b0c67c9 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 97a31ac..8c7ff5c 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 </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"> </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"> </td></tr> -<tr class="memitem:ad4b8b087606d67425cb9534692e47e0e"><td class="memItemLeft" align="right" valign="top"><a id="ad4b8b087606d67425cb9534692e47e0e"></a> -float </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 </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"> </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"> </td></tr> <tr class="memitem:a86cac73d45dc208c29d331a6438cc5d1"><td class="memItemLeft" align="right" valign="top">ROOT::Math::PtEtaPhiMVector </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"> </td><td class="mdescRight">Create a ROOT::Math::PtEtaPhiMVector. <a href="#a86cac73d45dc208c29d331a6438cc5d1">More...</a><br /></td></tr> @@ -138,6 +138,44 @@ float </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">◆ </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 </td> + <td class="paramname"><em>v1</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">ROOT::Math::PtEtaPhiMVector </td> + <td class="paramname"><em>v2</em> </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 cacd32a..c1f54ec 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 92e44b2..3ed0df2 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 54bfb4c..0f7ae1a 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 e4fd3fe..b890ff6 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 8138b68..cc7d9f8 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 a4dd6dc..3a2b8f7 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 5209bed..a4dd6dc 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< float > pt, RVec< float > eta, RVec< float > phi, RVec< float > 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 b715545..5209bed 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< float > pt, RVec< float > eta, RVec< float > phi, RVec< float > 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 0000000..fb4d0ec --- /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 0000000..b715545 --- /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 cde584a..29ed654 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 10cf576..4589e27 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 036016b..537fadb 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 a7a1e08..78f02fc 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 745285a..200ef69 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 0965c02..1ede914 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 545ed26..0965c02 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 35e1ff8..545ed26 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 cd074d3..7e27567 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 1c07952..cd074d3 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 cff23ed..e710e09 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 4511b5e..b9bc458 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 71a9bd3..828f470 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 a3eeb3c..4511b5e 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 a6f309b..71a9bd3 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 f94600f..1ede914 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 ed23a3f..a3eeb3c 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 fd0c6f0..a6f309b 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 458e817..f94600f 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 458e817..ed23a3f 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 0000000..6071ae0 --- /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 0000000..fd0c6f0 --- /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 0000000..6cf1d00 --- /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 0000000..458e817 --- /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 54bfb4c..0f7ae1a 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 a25d480..1ce744d 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 b21ff60..11b5dee 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 d7f074d..b21ff60 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< float > pt, RVec< float > eta, RVec< float > phi, RVec< float > 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 e34e705..d7f074d 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< float > pt, RVec< float > eta, RVec< float > phi, RVec< float > 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 0000000..febf8e0 --- /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 0000000..e34e705 --- /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 ad289b4..908faf6 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 37dd9c1..0f50674 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 036016b..be449d2 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 ece940b..210d2fe 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< float > in_pt, RVec< float > in_eta, RVec< float > in_phi, RVec< float > in_m, RVec< int > in_pdgId, RVec< int > in_status, RVec< int > in_statusFlags, RVec< int > 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 35e1ff8..7e27567 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 1c07952..e710e09 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 077c5e1..50b36b2 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 49bf8bb..cd42538 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']]], -- GitLab