Browse Source

Adds dijet invarient mass distribution

Caleb Fangmeier 7 years ago
parent
commit
59c1743e15
82 changed files with 7608 additions and 4959 deletions
  1. 35 1
      analysis/TTTT_Analysis.cpp
  2. 1 1
      docs/MiniTreeDataSet_8hpp_source.html
  3. 6749 4741
      docs/TTTT_Analysis.html
  4. 28 27
      docs/annotated.html
  5. 2 1
      docs/api_8hpp_source.html
  6. 18 18
      docs/classes.html
  7. 101 0
      docs/classfv_1_1CartProduct-members.html
  8. 204 0
      docs/classfv_1_1CartProduct.html
  9. 6 0
      docs/classfv_1_1CartProduct__coll__graph.map
  10. 1 0
      docs/classfv_1_1CartProduct__coll__graph.md5
  11. BIN
      docs/classfv_1_1CartProduct__coll__graph.png
  12. 4 0
      docs/classfv_1_1CartProduct__inherit__graph.map
  13. 1 0
      docs/classfv_1_1CartProduct__inherit__graph.md5
  14. BIN
      docs/classfv_1_1CartProduct__inherit__graph.png
  15. 3 0
      docs/classfv_1_1CartProduct_a087a4b184e628e3fa20040b33225a906_cgraph.map
  16. 1 0
      docs/classfv_1_1CartProduct_a087a4b184e628e3fa20040b33225a906_cgraph.md5
  17. BIN
      docs/classfv_1_1CartProduct_a087a4b184e628e3fa20040b33225a906_cgraph.png
  18. 1 1
      docs/classfv_1_1DerivedValue.html
  19. 1 0
      docs/functions.html
  20. 1 0
      docs/functions_func.html
  21. 27 22
      docs/hierarchy.html
  22. 1 1
      docs/inherit_graph_16.map
  23. 1 1
      docs/inherit_graph_16.md5
  24. BIN
      docs/inherit_graph_16.png
  25. 1 3
      docs/inherit_graph_17.map
  26. 1 1
      docs/inherit_graph_17.md5
  27. BIN
      docs/inherit_graph_17.png
  28. 3 4
      docs/inherit_graph_18.map
  29. 1 1
      docs/inherit_graph_18.md5
  30. BIN
      docs/inherit_graph_18.png
  31. 1 4
      docs/inherit_graph_19.map
  32. 1 1
      docs/inherit_graph_19.md5
  33. BIN
      docs/inherit_graph_19.png
  34. 4 2
      docs/inherit_graph_20.map
  35. 1 1
      docs/inherit_graph_20.md5
  36. BIN
      docs/inherit_graph_20.png
  37. 3 1
      docs/inherit_graph_21.map
  38. 1 1
      docs/inherit_graph_21.md5
  39. BIN
      docs/inherit_graph_21.png
  40. 4 3
      docs/inherit_graph_22.map
  41. 1 1
      docs/inherit_graph_22.md5
  42. BIN
      docs/inherit_graph_22.png
  43. 2 1
      docs/inherit_graph_23.map
  44. 1 1
      docs/inherit_graph_23.md5
  45. BIN
      docs/inherit_graph_23.png
  46. 1 11
      docs/inherit_graph_24.map
  47. 1 1
      docs/inherit_graph_24.md5
  48. BIN
      docs/inherit_graph_24.png
  49. 3 1
      docs/inherit_graph_25.map
  50. 1 1
      docs/inherit_graph_25.md5
  51. BIN
      docs/inherit_graph_25.png
  52. 1 1
      docs/inherit_graph_26.map
  53. 1 1
      docs/inherit_graph_26.md5
  54. BIN
      docs/inherit_graph_26.png
  55. 11 1
      docs/inherit_graph_27.map
  56. 1 1
      docs/inherit_graph_27.md5
  57. BIN
      docs/inherit_graph_27.png
  58. 1 1
      docs/inherit_graph_28.map
  59. 1 1
      docs/inherit_graph_28.md5
  60. BIN
      docs/inherit_graph_28.png
  61. 3 0
      docs/inherit_graph_29.map
  62. 1 0
      docs/inherit_graph_29.md5
  63. BIN
      docs/inherit_graph_29.png
  64. 3 0
      docs/inherit_graph_30.map
  65. 1 0
      docs/inherit_graph_30.md5
  66. BIN
      docs/inherit_graph_30.png
  67. 29 12
      docs/inherits.html
  68. 17 6
      docs/namespacefv.html
  69. 1 0
      docs/search/all_2.js
  70. 1 0
      docs/search/all_3.js
  71. 1 1
      docs/search/all_e.js
  72. 3 0
      docs/search/all_f.js
  73. 1 0
      docs/search/classes_2.js
  74. 1 0
      docs/search/classes_3.js
  75. 3 0
      docs/search/classes_c.js
  76. 1 1
      docs/search/functions_4.js
  77. 3 0
      docs/value_8hpp.html
  78. 8 6
      docs/value_8hpp_source.html
  79. 47 19
      filval/api.hpp
  80. 32 0
      filval/value.hpp
  81. 202 44
      python/TTTT_Analysis.ipynb
  82. 17 11
      python/utils.py

+ 35 - 1
analysis/TTTT_Analysis.cpp

@@ -91,6 +91,11 @@ void enable_branches(MiniTreeDataSet& mt){
 
 
     mt.track_branch<int>("nVert");
+
+    mt.track_branch< int >("run" );
+    mt.track_branch< int >("lumi");
+    mt.track_branch< int >("evt" );
+    mt.track_branch<float>("xsec");
 }
 
 
@@ -98,7 +103,17 @@ void declare_values(MiniTreeDataSet& mt){
 
     energies(lorentz_vectors("LepGood_pt", "LepGood_eta", "LepGood_phi", "LepGood_mass", "LepGood_4v"), "LepGood_energy");
     energies(lorentz_vectors("GenPart_pt", "GenPart_eta", "GenPart_phi", "GenPart_mass", "GenPart_4v"), "GenPart_energy");
-    energies(lorentz_vectors("Jet_pt", "Jet_eta", "Jet_phi", "Jet_mass", "Jet_4v"), "Jet_energy");
+    energies(lorentz_vectors("Jet_pt",     "Jet_eta",     "Jet_phi",     "Jet_mass",     "Jet_4v"    ), "Jet_energy");
+
+    auto dijet_4v = cart_product<TLorentzVector, TLorentzVector>("Jet_4v", "Jet_4v", "di-jet_4v");
+
+    auto& inv_mass = GenFunction::register_function<float(TLorentzVector, TLorentzVector)>("inv_mass",
+        FUNC(([] (const TLorentzVector& v1, const TLorentzVector& v2){
+            TLorentzVector sum = v1 + v2;
+            return (float)sum.M();
+        })));
+
+    fv::map(inv_mass, dijet_4v, "di-jet_inv_mass");
 
     fv::pair<vector<float>,vector<float>>("LepGood_energy", "LepGood_pt", "LepGood_energy_LepGood_pt");
     fv::pair<vector<float>,vector<float>>("Jet_energy", "Jet_eta", "Jet_energy_vs_Jet_eta");
@@ -184,6 +199,20 @@ void declare_containers(MiniTreeDataSet& mt){
     mt.register_container(new ContainerTH1Many<float>("Jet_mass", "Jet Mass",
                                                       lookup<vector<float>>("Jet_mass"), 50, 0, 200,
                                                       "Jet Mass"));
+
+    mt.register_container(new ContainerTH1Many<float>("dijet_inv_mass", "Di-Jet Inv. Mass - All",
+                                                      lookup<vector<float>>("di-jet_inv_mass"), 100, 0, 500,
+                                                      "Di-Jet Mass"));
+    mt.register_container(new ContainerTH1Many<float>("dijet_inv_mass_osdilepton", "Di-Jet Inv. Mass - OS Dilepton",
+                                                      lookup<vector<float>>("di-jet_inv_mass"), 100, 0, 500,
+                                                      "Di-Jet Mass"))->add_filter(lookup_obs_filter("os-dilepton"));
+    mt.register_container(new ContainerTH1Many<float>("dijet_inv_mass_ssdilepton", "Di-Jet Inv. Mass - SS Dilepton",
+                                                      lookup<vector<float>>("di-jet_inv_mass"), 100, 0, 500,
+                                                      "Di-Jet Mass"))->add_filter(lookup_obs_filter("ss-dilepton"));
+    mt.register_container(new ContainerTH1Many<float>("dijet_inv_mass_trilepton", "Di-Jet Inv. Mass - Trilepton",
+                                                      lookup<vector<float>>("di-jet_inv_mass"), 100, 0, 500,
+                                                      "Di-Jet Mass"))->add_filter(lookup_obs_filter("trilepton"));
+
     mt.register_container(new ContainerTH1Many<float>("Jet_energy", "Jet Energy",
                                                       lookup<vector<float>>("Jet_energy"), 100, 0, 400,
                                                       "Jet Energy"));
@@ -241,6 +270,11 @@ void declare_containers(MiniTreeDataSet& mt){
 
     mt.register_container(new Vector<vector< int >>("LepGood_mcMatchId",      lookup<vector< int >>("LepGood_mcMatchId")));
     mt.register_container(new Vector<vector< int >>("LepGood_mcMatchPdgId",   lookup<vector< int >>("LepGood_mcMatchPdgId")));
+
+    mt.register_container(new Vector< int >("run",  lookup< int >("run") ));
+    mt.register_container(new Vector< int >("lumi", lookup< int >("lumi")));
+    mt.register_container(new Vector< int >("evt",  lookup< int >("evt") ));
+    mt.register_container(new Vector<float>("xsec", lookup<float>("xsec")));
 }
 
 

+ 1 - 1
docs/MiniTreeDataSet_8hpp_source.html

@@ -74,7 +74,7 @@ $(function() {
 <div class="ttc" id="classfv_1_1Value_html"><div class="ttname"><a href="classfv_1_1Value.html">fv::Value</a></div><div class="ttdoc">A generic value. </div><div class="ttdef"><b>Definition:</b> value.hpp:352</div></div>
 <div class="ttc" id="namespacefv_1_1root_html"><div class="ttname"><a href="namespacefv_1_1root.html">fv::root</a></div><div class="ttdef"><b>Definition:</b> api.hpp:8</div></div>
 <div class="ttc" id="MiniTree_8hpp_html"><div class="ttname"><a href="MiniTree_8hpp.html">MiniTree.hpp</a></div></div>
-<div class="ttc" id="classfv_1_1PointerValue_html"><div class="ttname"><a href="classfv_1_1PointerValue.html">fv::PointerValue</a></div><div class="ttdoc">A Value of a pointer. </div><div class="ttdef"><b>Definition:</b> value.hpp:923</div></div>
+<div class="ttc" id="classfv_1_1PointerValue_html"><div class="ttname"><a href="classfv_1_1PointerValue.html">fv::PointerValue</a></div><div class="ttdoc">A Value of a pointer. </div><div class="ttdef"><b>Definition:</b> value.hpp:955</div></div>
 </div><!-- fragment --></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>

File diff suppressed because it is too large
+ 6749 - 4741
docs/TTTT_Analysis.html


File diff suppressed because it is too large
+ 28 - 27
docs/annotated.html


File diff suppressed because it is too large
+ 2 - 1
docs/api_8hpp_source.html


File diff suppressed because it is too large
+ 18 - 18
docs/classes.html


File diff suppressed because it is too large
+ 101 - 0
docs/classfv_1_1CartProduct-members.html


+ 204 - 0
docs/classfv_1_1CartProduct.html

@@ -0,0 +1,204 @@
+<!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>TTTT Analysis: fv::CartProduct&lt; FST, SND &gt; Class Template 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>
+<link href="doxygen.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="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">TTTT Analysis
+   &#160;<span id="projectnumber">0.1</span>
+   </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="namespacefv.html">fv</a></li><li class="navelem"><a class="el" href="classfv_1_1CartProduct.html">CartProduct</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pri-methods">Private Member Functions</a> &#124;
+<a href="#pri-attribs">Private Attributes</a> &#124;
+<a href="classfv_1_1CartProduct-members.html">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">fv::CartProduct&lt; FST, SND &gt; Class Template Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Find and return the minimum value of a vector and its index.  
+ <a href="classfv_1_1CartProduct.html#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="value_8hpp_source.html">value.hpp</a>&gt;</code></p>
+<div class="dynheader">
+Inheritance diagram for fv::CartProduct&lt; FST, SND &gt;:</div>
+<div class="dyncontent">
+<div class="center"><img src="classfv_1_1CartProduct__inherit__graph.png" border="0" usemap="#fv_1_1CartProduct_3_01FST_00_01SND_01_4_inherit__map" alt="Inheritance graph"/></div>
+<map name="fv_1_1CartProduct_3_01FST_00_01SND_01_4_inherit__map" id="fv_1_1CartProduct_3_01FST_00_01SND_01_4_inherit__map">
+<area shape="rect" id="node2" href="classfv_1_1DerivedValue.html" title="fv::DerivedValue\&lt; std\l::vector\&lt; std::tuple\l\&lt; FST, SND \&gt; \&gt; \&gt;" alt="" coords="32,95,196,151"/>
+<area shape="rect" id="node3" href="classfv_1_1Value.html" title="fv::Value\&lt; std::vector\l\&lt; std::tuple\&lt; FST, SND \&gt; \&gt; \&gt;" alt="" coords="5,5,223,47"/>
+</map>
+<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
+<div class="dynheader">
+Collaboration diagram for fv::CartProduct&lt; FST, SND &gt;:</div>
+<div class="dyncontent">
+<div class="center"><img src="classfv_1_1CartProduct__coll__graph.png" border="0" usemap="#fv_1_1CartProduct_3_01FST_00_01SND_01_4_coll__map" alt="Collaboration graph"/></div>
+<map name="fv_1_1CartProduct_3_01FST_00_01SND_01_4_coll__map" id="fv_1_1CartProduct_3_01FST_00_01SND_01_4_coll__map">
+<area shape="rect" id="node2" href="classfv_1_1DerivedValue.html" title="fv::DerivedValue\&lt; std\l::vector\&lt; std::tuple\l\&lt; FST, SND \&gt; \&gt; \&gt;" alt="" coords="272,5,436,61"/>
+<area shape="rect" id="node3" href="classfv_1_1Value.html" title="fv::Value\&lt; std::vector\l\&lt; std::tuple\&lt; FST, SND \&gt; \&gt; \&gt;" alt="" coords="5,13,223,54"/>
+<area shape="rect" id="node4" href="classfv_1_1Value.html" title="fv::Value\&lt; std::vector\l\&lt; SND \&gt; \&gt;" alt="" coords="273,86,435,127"/>
+<area shape="rect" id="node5" href="classfv_1_1Value.html" title="fv::Value\&lt; std::vector\l\&lt; FST \&gt; \&gt;" alt="" coords="273,151,435,193"/>
+</map>
+<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></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:a736fdbe6e9f44cadd640165a88696ad4"><td class="memItemLeft" align="right" valign="top"><a id="a736fdbe6e9f44cadd640165a88696ad4"></a>
+&#160;</td><td class="memItemRight" valign="bottom"><b>CartProduct</b> (<a class="el" href="classfv_1_1Value.html">Value</a>&lt; std::vector&lt; FST &gt;&gt; *val1, <a class="el" href="classfv_1_1Value.html">Value</a>&lt; std::vector&lt; SND &gt;&gt; *val2, const std::string alias=&quot;&quot;)</td></tr>
+<tr class="separator:a736fdbe6e9f44cadd640165a88696ad4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="inherit_header pub_methods_classfv_1_1DerivedValue"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classfv_1_1DerivedValue')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classfv_1_1DerivedValue.html">fv::DerivedValue&lt; std::vector&lt; std::tuple&lt; FST, SND &gt; &gt; &gt;</a></td></tr>
+<tr class="memitem:a00219a17112600afdc060d67d6f95b21 inherit pub_methods_classfv_1_1DerivedValue"><td class="memItemLeft" align="right" valign="top"><a id="a00219a17112600afdc060d67d6f95b21"></a>
+&#160;</td><td class="memItemRight" valign="bottom"><b>DerivedValue</b> (const std::string &amp;name, const std::string &amp;alias=&quot;&quot;)</td></tr>
+<tr class="separator:a00219a17112600afdc060d67d6f95b21 inherit pub_methods_classfv_1_1DerivedValue"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a39970158aa8f6eb062a28037df6e2128 inherit pub_methods_classfv_1_1DerivedValue"><td class="memItemLeft" align="right" valign="top"><a id="a39970158aa8f6eb062a28037df6e2128"></a>
+std::vector&lt; std::tuple&lt; FST, SND &gt; &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>get_value</b> ()</td></tr>
+<tr class="memdesc:a39970158aa8f6eb062a28037df6e2128 inherit pub_methods_classfv_1_1DerivedValue"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate, if necessary, and return the value held by this object. <br /></td></tr>
+<tr class="separator:a39970158aa8f6eb062a28037df6e2128 inherit pub_methods_classfv_1_1DerivedValue"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="inherit_header pub_methods_classfv_1_1Value"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classfv_1_1Value')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classfv_1_1Value.html">fv::Value&lt; std::vector&lt; std::tuple&lt; FST, SND &gt; &gt; &gt;</a></td></tr>
+<tr class="memitem:afded92c24f946c1551c1f1b005f31091 inherit pub_methods_classfv_1_1Value"><td class="memItemLeft" align="right" valign="top"><a id="afded92c24f946c1551c1f1b005f31091"></a>
+&#160;</td><td class="memItemRight" valign="bottom"><b>Value</b> (const std::string &amp;name, const std::string &amp;alias=&quot;&quot;)</td></tr>
+<tr class="separator:afded92c24f946c1551c1f1b005f31091 inherit pub_methods_classfv_1_1Value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-methods"></a>
+Private Member Functions</h2></td></tr>
+<tr class="memitem:a087a4b184e628e3fa20040b33225a906"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfv_1_1CartProduct.html#a087a4b184e628e3fa20040b33225a906">update_value</a> ()</td></tr>
+<tr class="memdesc:a087a4b184e628e3fa20040b33225a906"><td class="mdescLeft">&#160;</td><td class="mdescRight">Updates the internal value.  <a href="#a087a4b184e628e3fa20040b33225a906">More...</a><br /></td></tr>
+<tr class="separator:a087a4b184e628e3fa20040b33225a906"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
+Private Attributes</h2></td></tr>
+<tr class="memitem:a95a20c4b3860c67f9f3d738843ac94f6"><td class="memItemLeft" align="right" valign="top"><a id="a95a20c4b3860c67f9f3d738843ac94f6"></a>
+<a class="el" href="classfv_1_1Value.html">Value</a>&lt; std::vector&lt; FST &gt; &gt; *&#160;</td><td class="memItemRight" valign="bottom"><b>val1</b></td></tr>
+<tr class="separator:a95a20c4b3860c67f9f3d738843ac94f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3d03589f22cf80ae731646046e270ea5"><td class="memItemLeft" align="right" valign="top"><a id="a3d03589f22cf80ae731646046e270ea5"></a>
+<a class="el" href="classfv_1_1Value.html">Value</a>&lt; std::vector&lt; SND &gt; &gt; *&#160;</td><td class="memItemRight" valign="bottom"><b>val2</b></td></tr>
+<tr class="separator:a3d03589f22cf80ae731646046e270ea5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa80b1f9cd5c51bbf948238370dfe3d93"><td class="memItemLeft" align="right" valign="top"><a id="aa80b1f9cd5c51bbf948238370dfe3d93"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>self_product</b></td></tr>
+<tr class="separator:aa80b1f9cd5c51bbf948238370dfe3d93"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
+Additional Inherited Members</h2></td></tr>
+<tr class="inherit_header pro_attribs_classfv_1_1DerivedValue"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classfv_1_1DerivedValue')"><img src="closed.png" alt="-"/>&#160;Protected Attributes inherited from <a class="el" href="classfv_1_1DerivedValue.html">fv::DerivedValue&lt; std::vector&lt; std::tuple&lt; FST, SND &gt; &gt; &gt;</a></td></tr>
+<tr class="memitem:aeb7ff5d17ad44b2040fc9930bbcc2c7a inherit pro_attribs_classfv_1_1DerivedValue"><td class="memItemLeft" align="right" valign="top"><a id="aeb7ff5d17ad44b2040fc9930bbcc2c7a"></a>
+std::vector&lt; std::tuple&lt; FST, SND &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>value</b></td></tr>
+<tr class="separator:aeb7ff5d17ad44b2040fc9930bbcc2c7a inherit pro_attribs_classfv_1_1DerivedValue"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aafa55adbb38dc7fe210ea15e920515dc inherit pro_attribs_classfv_1_1DerivedValue"><td class="memItemLeft" align="right" valign="top"><a id="aafa55adbb38dc7fe210ea15e920515dc"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>value_valid</b></td></tr>
+<tr class="separator:aafa55adbb38dc7fe210ea15e920515dc inherit pro_attribs_classfv_1_1DerivedValue"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><h3>template&lt;typename FST, typename SND&gt;<br />
+class fv::CartProduct&lt; FST, SND &gt;</h3>
+
+<p>Find and return the minimum value of a vector and its index. </p>
+</div><h2 class="groupheader">Member Function Documentation</h2>
+<a id="a087a4b184e628e3fa20040b33225a906"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a087a4b184e628e3fa20040b33225a906">&#9670;&nbsp;</a></span>update_value()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename FST, typename SND&gt; </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void <a class="el" href="classfv_1_1CartProduct.html">fv::CartProduct</a>&lt; FST, SND &gt;::update_value </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">private</span><span class="mlabel">virtual</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Updates the internal value. </p>
+<p>This function should be overridden by any child class to do the actual work of updating value based on whatever rules the class chooses. Normally, this consists of geting the values from some associated <a class="el" href="classfv_1_1Value.html" title="A generic value. ">Value</a> objects, doing some calculation on them, and storing the result in value. </p>
+
+<p>Implements <a class="el" href="classfv_1_1DerivedValue.html#ae59e80a98eb74b95d8961bfe12ee5ec2">fv::DerivedValue&lt; std::vector&lt; std::tuple&lt; FST, SND &gt; &gt; &gt;</a>.</p>
+<div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dyncontent">
+<div class="center"><img src="classfv_1_1CartProduct_a087a4b184e628e3fa20040b33225a906_cgraph.png" border="0" usemap="#classfv_1_1CartProduct_a087a4b184e628e3fa20040b33225a906_cgraph" alt=""/></div>
+<map name="classfv_1_1CartProduct_a087a4b184e628e3fa20040b33225a906_cgraph" id="classfv_1_1CartProduct_a087a4b184e628e3fa20040b33225a906_cgraph">
+<area shape="rect" id="node2" href="classfv_1_1Value.html#a4cc70444ceaf5d7651922adf9b7beeff" title="Calculate, if necessary, and return the value held by this object. " alt="" coords="224,13,375,39"/>
+</map>
+</div>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>/home/caleb/Sources/TTTT/filval/<a class="el" href="value_8hpp_source.html">value.hpp</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.13
+</small></address>
+</body>
+</html>

+ 6 - 0
docs/classfv_1_1CartProduct__coll__graph.map

@@ -0,0 +1,6 @@
+<map id="fv::CartProduct&lt; FST, SND &gt;" name="fv::CartProduct&lt; FST, SND &gt;">
+<area shape="rect" id="node2" href="$classfv_1_1DerivedValue.html" title="fv::DerivedValue\&lt; std\l::vector\&lt; std::tuple\l\&lt; FST, SND \&gt; \&gt; \&gt;" alt="" coords="272,5,436,61"/>
+<area shape="rect" id="node3" href="$classfv_1_1Value.html" title="fv::Value\&lt; std::vector\l\&lt; std::tuple\&lt; FST, SND \&gt; \&gt; \&gt;" alt="" coords="5,13,223,54"/>
+<area shape="rect" id="node4" href="$classfv_1_1Value.html" title="fv::Value\&lt; std::vector\l\&lt; SND \&gt; \&gt;" alt="" coords="273,86,435,127"/>
+<area shape="rect" id="node5" href="$classfv_1_1Value.html" title="fv::Value\&lt; std::vector\l\&lt; FST \&gt; \&gt;" alt="" coords="273,151,435,193"/>
+</map>

+ 1 - 0
docs/classfv_1_1CartProduct__coll__graph.md5

@@ -0,0 +1 @@
+fe7a08941c2ef69059fbc48d2e8f5500

BIN
docs/classfv_1_1CartProduct__coll__graph.png


+ 4 - 0
docs/classfv_1_1CartProduct__inherit__graph.map

@@ -0,0 +1,4 @@
+<map id="fv::CartProduct&lt; FST, SND &gt;" name="fv::CartProduct&lt; FST, SND &gt;">
+<area shape="rect" id="node2" href="$classfv_1_1DerivedValue.html" title="fv::DerivedValue\&lt; std\l::vector\&lt; std::tuple\l\&lt; FST, SND \&gt; \&gt; \&gt;" alt="" coords="32,95,196,151"/>
+<area shape="rect" id="node3" href="$classfv_1_1Value.html" title="fv::Value\&lt; std::vector\l\&lt; std::tuple\&lt; FST, SND \&gt; \&gt; \&gt;" alt="" coords="5,5,223,47"/>
+</map>

+ 1 - 0
docs/classfv_1_1CartProduct__inherit__graph.md5

@@ -0,0 +1 @@
+dee514d60cc9af40ecb307e6513ddd44

BIN
docs/classfv_1_1CartProduct__inherit__graph.png


+ 3 - 0
docs/classfv_1_1CartProduct_a087a4b184e628e3fa20040b33225a906_cgraph.map

@@ -0,0 +1,3 @@
+<map id="fv::CartProduct::update_value" name="fv::CartProduct::update_value">
+<area shape="rect" id="node2" href="$classfv_1_1Value.html#a4cc70444ceaf5d7651922adf9b7beeff" title="Calculate, if necessary, and return the value held by this object. " alt="" coords="224,13,375,39"/>
+</map>

+ 1 - 0
docs/classfv_1_1CartProduct_a087a4b184e628e3fa20040b33225a906_cgraph.md5

@@ -0,0 +1 @@
+55e46efcd7acd1baf37d1e5943b5b7e1

BIN
docs/classfv_1_1CartProduct_a087a4b184e628e3fa20040b33225a906_cgraph.png


File diff suppressed because it is too large
+ 1 - 1
docs/classfv_1_1DerivedValue.html


+ 1 - 0
docs/functions.html

@@ -74,6 +74,7 @@ $(function() {
 <li>update_value()
 : <a class="el" href="classfv_1_1Apply_3_01Ret_07ArgTypes_8_8_8_08_4.html#ab983f969ff7652150e7ce1d1240672e0">fv::Apply&lt; Ret(ArgTypes...)&gt;</a>
 , <a class="el" href="classfv_1_1BoundValue.html#a51ba914f1eac694af4264d62785282a1">fv::BoundValue&lt; T &gt;</a>
+, <a class="el" href="classfv_1_1CartProduct.html#a087a4b184e628e3fa20040b33225a906">fv::CartProduct&lt; FST, SND &gt;</a>
 , <a class="el" href="classfv_1_1ConstantValue.html#a6581e7fb69c082c07c9714138063b320">fv::ConstantValue&lt; T &gt;</a>
 , <a class="el" href="classfv_1_1Count.html#afff1c16a8747a82db1cc1c8248c56a08">fv::Count&lt; T &gt;</a>
 , <a class="el" href="classfv_1_1DerivedValue.html#ae59e80a98eb74b95d8961bfe12ee5ec2">fv::DerivedValue&lt; T &gt;</a>

+ 1 - 0
docs/functions_func.html

@@ -71,6 +71,7 @@ $(function() {
 <li>update_value()
 : <a class="el" href="classfv_1_1Apply_3_01Ret_07ArgTypes_8_8_8_08_4.html#ab983f969ff7652150e7ce1d1240672e0">fv::Apply&lt; Ret(ArgTypes...)&gt;</a>
 , <a class="el" href="classfv_1_1BoundValue.html#a51ba914f1eac694af4264d62785282a1">fv::BoundValue&lt; T &gt;</a>
+, <a class="el" href="classfv_1_1CartProduct.html#a087a4b184e628e3fa20040b33225a906">fv::CartProduct&lt; FST, SND &gt;</a>
 , <a class="el" href="classfv_1_1ConstantValue.html#a6581e7fb69c082c07c9714138063b320">fv::ConstantValue&lt; T &gt;</a>
 , <a class="el" href="classfv_1_1Count.html#afff1c16a8747a82db1cc1c8248c56a08">fv::Count&lt; T &gt;</a>
 , <a class="el" href="classfv_1_1DerivedValue.html#ae59e80a98eb74b95d8961bfe12ee5ec2">fv::DerivedValue&lt; T &gt;</a>

+ 27 - 22
docs/hierarchy.html

@@ -119,28 +119,33 @@ This inheritance list is sorted roughly, but not completely, alphabetically:</di
 <tr id="row_15_0_1_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfv_1_1Tuple.html" target="_self">fv::Tuple&lt; ArgTypes... &gt;</a></td><td class="desc"></td></tr>
 <tr id="row_16_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_16_" class="arrow" onclick="toggleFolder('16_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfv_1_1Value.html" target="_self">fv::Value&lt; std::vector&lt; float &gt; &gt;</a></td><td class="desc"></td></tr>
 <tr id="row_16_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfv_1_1DerivedValue.html" target="_self">fv::DerivedValue&lt; std::vector&lt; float &gt; &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_17_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfv_1_1Value.html" target="_self">fv::Value&lt; std::vector&lt; Head &gt; &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_18_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_18_" class="arrow" onclick="toggleFolder('18_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfv_1_1Value.html" target="_self">fv::Value&lt; std::vector&lt; Ret &gt; &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_18_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_18_0_" class="arrow" onclick="toggleFolder('18_0_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfv_1_1DerivedValue.html" target="_self">fv::DerivedValue&lt; std::vector&lt; Ret &gt; &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_18_0_0_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfv_1_1Map_3_01Ret_07ArgTypes_8_8_8_08_4.html" target="_self">fv::Map&lt; Ret(ArgTypes...)&gt;</a></td><td class="desc">Maps a function over an input vector </td></tr>
-<tr id="row_19_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_19_" class="arrow" onclick="toggleFolder('19_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfv_1_1Value.html" target="_self">fv::Value&lt; std::vector&lt; std::tuple&lt; ArgTypes... &gt; &gt; &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_19_0_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_19_0_" class="arrow" onclick="toggleFolder('19_0_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfv_1_1DerivedValue.html" target="_self">fv::DerivedValue&lt; std::vector&lt; std::tuple&lt; ArgTypes... &gt; &gt; &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_19_0_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfv_1_1TupFilter.html" target="_self">fv::TupFilter&lt; ArgTypes &gt;</a></td><td class="desc">Returns the elements in a vector that pass a test function </td></tr>
-<tr id="row_19_0_1_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfv_1_1Zip.html" target="_self">fv::Zip&lt; ArgTypes &gt;</a></td><td class="desc">Zips a series of vectors together </td></tr>
-<tr id="row_20_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_20_" class="arrow" onclick="toggleFolder('20_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfv_1_1Value.html" target="_self">fv::Value&lt; std::vector&lt; T &gt; &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_20_0_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_20_0_" class="arrow" onclick="toggleFolder('20_0_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfv_1_1DerivedValue.html" target="_self">fv::DerivedValue&lt; std::vector&lt; T &gt; &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_20_0_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfv_1_1Filter.html" target="_self">fv::Filter&lt; T &gt;</a></td><td class="desc">Returns the elements in a vector that pass a test function </td></tr>
-<tr id="row_20_0_1_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfv_1_1WrapperVector.html" target="_self">fv::WrapperVector&lt; T &gt;</a></td><td class="desc">A std::vector wrapper around a C-style array </td></tr>
-<tr id="row_21_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_21_" class="arrow" onclick="toggleFolder('21_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfv_1_1Value.html" target="_self">fv::Value&lt; std::vector&lt; TLorentzVector &gt; &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_21_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfv_1_1DerivedValue.html" target="_self">fv::DerivedValue&lt; std::vector&lt; TLorentzVector &gt; &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_22_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfv_1_1Value.html" target="_self">fv::Value&lt; std::vector&lt; V &gt; &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_23_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_23_" class="arrow" onclick="toggleFolder('23_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfv_1_1Value.html" target="_self">fv::Value&lt; T * &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_23_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_23_0_" class="arrow" onclick="toggleFolder('23_0_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfv_1_1DerivedValue.html" target="_self">fv::DerivedValue&lt; T *&gt;</a></td><td class="desc"></td></tr>
-<tr id="row_23_0_0_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfv_1_1PointerValue.html" target="_self">fv::PointerValue&lt; T &gt;</a></td><td class="desc">A <a class="el" href="classfv_1_1Value.html" title="A generic value. ">Value</a> of a pointer </td></tr>
-<tr id="row_24_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfv_1_1Value.html" target="_self">fv::Value&lt; T *&gt;</a></td><td class="desc"></td></tr>
-<tr id="row_25_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfv_1_1Value.html" target="_self">fv::Value&lt; TLorentzVector &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_26_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfv_1_1Value.html" target="_self">fv::Value&lt; V &gt;</a></td><td class="desc"></td></tr>
-<tr id="row_27_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfv_1_1Value.html" target="_self">fv::Value&lt; value_type &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_17_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfv_1_1Value.html" target="_self">fv::Value&lt; std::vector&lt; FST &gt; &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_18_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfv_1_1Value.html" target="_self">fv::Value&lt; std::vector&lt; Head &gt; &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_19_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_19_" class="arrow" onclick="toggleFolder('19_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfv_1_1Value.html" target="_self">fv::Value&lt; std::vector&lt; Ret &gt; &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_19_0_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_19_0_" class="arrow" onclick="toggleFolder('19_0_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfv_1_1DerivedValue.html" target="_self">fv::DerivedValue&lt; std::vector&lt; Ret &gt; &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_19_0_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfv_1_1Map_3_01Ret_07ArgTypes_8_8_8_08_4.html" target="_self">fv::Map&lt; Ret(ArgTypes...)&gt;</a></td><td class="desc">Maps a function over an input vector </td></tr>
+<tr id="row_20_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfv_1_1Value.html" target="_self">fv::Value&lt; std::vector&lt; SND &gt; &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_21_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_21_" class="arrow" onclick="toggleFolder('21_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfv_1_1Value.html" target="_self">fv::Value&lt; std::vector&lt; std::tuple&lt; ArgTypes... &gt; &gt; &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_21_0_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_21_0_" class="arrow" onclick="toggleFolder('21_0_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfv_1_1DerivedValue.html" target="_self">fv::DerivedValue&lt; std::vector&lt; std::tuple&lt; ArgTypes... &gt; &gt; &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_21_0_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfv_1_1TupFilter.html" target="_self">fv::TupFilter&lt; ArgTypes &gt;</a></td><td class="desc">Returns the elements in a vector that pass a test function </td></tr>
+<tr id="row_21_0_1_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfv_1_1Zip.html" target="_self">fv::Zip&lt; ArgTypes &gt;</a></td><td class="desc">Zips a series of vectors together </td></tr>
+<tr id="row_22_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_22_" class="arrow" onclick="toggleFolder('22_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfv_1_1Value.html" target="_self">fv::Value&lt; std::vector&lt; std::tuple&lt; FST, SND &gt; &gt; &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_22_0_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_22_0_" class="arrow" onclick="toggleFolder('22_0_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfv_1_1DerivedValue.html" target="_self">fv::DerivedValue&lt; std::vector&lt; std::tuple&lt; FST, SND &gt; &gt; &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_22_0_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfv_1_1CartProduct.html" target="_self">fv::CartProduct&lt; FST, SND &gt;</a></td><td class="desc">Find and return the minimum value of a vector and its index </td></tr>
+<tr id="row_23_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_23_" class="arrow" onclick="toggleFolder('23_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfv_1_1Value.html" target="_self">fv::Value&lt; std::vector&lt; T &gt; &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_23_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_23_0_" class="arrow" onclick="toggleFolder('23_0_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfv_1_1DerivedValue.html" target="_self">fv::DerivedValue&lt; std::vector&lt; T &gt; &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_23_0_0_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfv_1_1Filter.html" target="_self">fv::Filter&lt; T &gt;</a></td><td class="desc">Returns the elements in a vector that pass a test function </td></tr>
+<tr id="row_23_0_1_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfv_1_1WrapperVector.html" target="_self">fv::WrapperVector&lt; T &gt;</a></td><td class="desc">A std::vector wrapper around a C-style array </td></tr>
+<tr id="row_24_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_24_" class="arrow" onclick="toggleFolder('24_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfv_1_1Value.html" target="_self">fv::Value&lt; std::vector&lt; TLorentzVector &gt; &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_24_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfv_1_1DerivedValue.html" target="_self">fv::DerivedValue&lt; std::vector&lt; TLorentzVector &gt; &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_25_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfv_1_1Value.html" target="_self">fv::Value&lt; std::vector&lt; V &gt; &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_26_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_26_" class="arrow" onclick="toggleFolder('26_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfv_1_1Value.html" target="_self">fv::Value&lt; T * &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_26_0_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_26_0_" class="arrow" onclick="toggleFolder('26_0_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfv_1_1DerivedValue.html" target="_self">fv::DerivedValue&lt; T *&gt;</a></td><td class="desc"></td></tr>
+<tr id="row_26_0_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfv_1_1PointerValue.html" target="_self">fv::PointerValue&lt; T &gt;</a></td><td class="desc">A <a class="el" href="classfv_1_1Value.html" title="A generic value. ">Value</a> of a pointer </td></tr>
+<tr id="row_27_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfv_1_1Value.html" target="_self">fv::Value&lt; T *&gt;</a></td><td class="desc"></td></tr>
+<tr id="row_28_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfv_1_1Value.html" target="_self">fv::Value&lt; TLorentzVector &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_29_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfv_1_1Value.html" target="_self">fv::Value&lt; V &gt;</a></td><td class="desc"></td></tr>
+<tr id="row_30_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classfv_1_1Value.html" target="_self">fv::Value&lt; value_type &gt;</a></td><td class="desc"></td></tr>
 </table>
 </div><!-- directory -->
 </div><!-- contents -->

+ 1 - 1
docs/inherit_graph_16.map

@@ -1,3 +1,3 @@
 <map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$classfv_1_1Value.html" title="fv::Value\&lt; std::vector\l\&lt; Head \&gt; \&gt;" alt="" coords="5,5,168,47"/>
+<area shape="rect" id="node1" href="$classfv_1_1Value.html" title="fv::Value\&lt; std::vector\l\&lt; FST \&gt; \&gt;" alt="" coords="5,5,168,47"/>
 </map>

+ 1 - 1
docs/inherit_graph_16.md5

@@ -1 +1 @@
-5ce634d75d7335e46f3abfd03d9c2249
+6364497f39fcee60632a97d5ebe5f887

BIN
docs/inherit_graph_16.png


+ 1 - 3
docs/inherit_graph_17.map

@@ -1,5 +1,3 @@
 <map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$classfv_1_1Value.html" title="fv::Value\&lt; std::vector\l\&lt; Ret \&gt; \&gt;" alt="" coords="5,5,168,47"/>
-<area shape="rect" id="node2" href="$classfv_1_1DerivedValue.html" title="fv::DerivedValue\&lt; std\l::vector\&lt; Ret \&gt; \&gt;" alt="" coords="216,5,380,47"/>
-<area shape="rect" id="node3" href="$classfv_1_1Map_3_01Ret_07ArgTypes_8_8_8_08_4.html" title="Maps a function over an input vector. " alt="" coords="428,13,625,39"/>
+<area shape="rect" id="node1" href="$classfv_1_1Value.html" title="fv::Value\&lt; std::vector\l\&lt; Head \&gt; \&gt;" alt="" coords="5,5,168,47"/>
 </map>

+ 1 - 1
docs/inherit_graph_17.md5

@@ -1 +1 @@
-967f3831231b60a52ab70ca9692a536c
+5ce634d75d7335e46f3abfd03d9c2249

BIN
docs/inherit_graph_17.png


+ 3 - 4
docs/inherit_graph_18.map

@@ -1,6 +1,5 @@
 <map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$classfv_1_1Value.html" title="fv::Value\&lt; std::vector\l\&lt; std::tuple\&lt; ArgTypes... \&gt; \&gt; \&gt;" alt="" coords="5,23,235,65"/>
-<area shape="rect" id="node2" href="$classfv_1_1DerivedValue.html" title="fv::DerivedValue\&lt; std\l::vector\&lt; std::tuple\l\&lt; ArgTypes... \&gt; \&gt; \&gt;" alt="" coords="283,16,447,72"/>
-<area shape="rect" id="node3" href="$classfv_1_1TupFilter.html" title="Returns the elements in a vector that pass a test function. " alt="" coords="495,5,680,32"/>
-<area shape="rect" id="node4" href="$classfv_1_1Zip.html" title="Zips a series of vectors together. " alt="" coords="511,56,663,83"/>
+<area shape="rect" id="node1" href="$classfv_1_1Value.html" title="fv::Value\&lt; std::vector\l\&lt; Ret \&gt; \&gt;" alt="" coords="5,5,168,47"/>
+<area shape="rect" id="node2" href="$classfv_1_1DerivedValue.html" title="fv::DerivedValue\&lt; std\l::vector\&lt; Ret \&gt; \&gt;" alt="" coords="216,5,380,47"/>
+<area shape="rect" id="node3" href="$classfv_1_1Map_3_01Ret_07ArgTypes_8_8_8_08_4.html" title="Maps a function over an input vector. " alt="" coords="428,13,625,39"/>
 </map>

+ 1 - 1
docs/inherit_graph_18.md5

@@ -1 +1 @@
-f116ee487ccae6e6cd06864376d2909a
+967f3831231b60a52ab70ca9692a536c

BIN
docs/inherit_graph_18.png


+ 1 - 4
docs/inherit_graph_19.map

@@ -1,6 +1,3 @@
 <map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$classfv_1_1Value.html" title="fv::Value\&lt; std::vector\l\&lt; T \&gt; \&gt;" alt="" coords="5,23,168,65"/>
-<area shape="rect" id="node2" href="$classfv_1_1DerivedValue.html" title="fv::DerivedValue\&lt; std\l::vector\&lt; T \&gt; \&gt;" alt="" coords="216,23,380,65"/>
-<area shape="rect" id="node3" href="$classfv_1_1Filter.html" title="Returns the elements in a vector that pass a test function. " alt="" coords="459,5,571,32"/>
-<area shape="rect" id="node4" href="$classfv_1_1WrapperVector.html" title="A std::vector wrapper around a C&#45;style array. " alt="" coords="428,56,603,83"/>
+<area shape="rect" id="node1" href="$classfv_1_1Value.html" title="fv::Value\&lt; std::vector\l\&lt; SND \&gt; \&gt;" alt="" coords="5,5,168,47"/>
 </map>

+ 1 - 1
docs/inherit_graph_19.md5

@@ -1 +1 @@
-50f502fe6a1f986ee356c8dfb62f979b
+5dd2f00087ed25543aea29e3cf30492b

BIN
docs/inherit_graph_19.png


+ 4 - 2
docs/inherit_graph_20.map

@@ -1,4 +1,6 @@
 <map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$classfv_1_1Value.html" title="fv::Value\&lt; std::vector\l\&lt; TLorentzVector \&gt; \&gt;" alt="" coords="5,5,169,47"/>
-<area shape="rect" id="node2" href="$classfv_1_1DerivedValue.html" title="fv::DerivedValue\&lt; std\l::vector\&lt; TLorentzVector \&gt; \&gt;" alt="" coords="217,5,431,47"/>
+<area shape="rect" id="node1" href="$classfv_1_1Value.html" title="fv::Value\&lt; std::vector\l\&lt; std::tuple\&lt; ArgTypes... \&gt; \&gt; \&gt;" alt="" coords="5,23,235,65"/>
+<area shape="rect" id="node2" href="$classfv_1_1DerivedValue.html" title="fv::DerivedValue\&lt; std\l::vector\&lt; std::tuple\l\&lt; ArgTypes... \&gt; \&gt; \&gt;" alt="" coords="283,16,447,72"/>
+<area shape="rect" id="node3" href="$classfv_1_1TupFilter.html" title="Returns the elements in a vector that pass a test function. " alt="" coords="495,5,680,32"/>
+<area shape="rect" id="node4" href="$classfv_1_1Zip.html" title="Zips a series of vectors together. " alt="" coords="511,56,663,83"/>
 </map>

+ 1 - 1
docs/inherit_graph_20.md5

@@ -1 +1 @@
-a6baa56cbb56821e502ec6ff11186d37
+f116ee487ccae6e6cd06864376d2909a

BIN
docs/inherit_graph_20.png


+ 3 - 1
docs/inherit_graph_21.map

@@ -1,3 +1,5 @@
 <map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$classfv_1_1Value.html" title="fv::Value\&lt; std::vector\l\&lt; V \&gt; \&gt;" alt="" coords="5,5,168,47"/>
+<area shape="rect" id="node1" href="$classfv_1_1Value.html" title="fv::Value\&lt; std::vector\l\&lt; std::tuple\&lt; FST, SND \&gt; \&gt; \&gt;" alt="" coords="5,13,223,54"/>
+<area shape="rect" id="node2" href="$classfv_1_1DerivedValue.html" title="fv::DerivedValue\&lt; std\l::vector\&lt; std::tuple\l\&lt; FST, SND \&gt; \&gt; \&gt;" alt="" coords="271,5,435,61"/>
+<area shape="rect" id="node3" href="$classfv_1_1CartProduct.html" title="Find and return the minimum value of a vector and its index. " alt="" coords="483,13,643,54"/>
 </map>

+ 1 - 1
docs/inherit_graph_21.md5

@@ -1 +1 @@
-59040436ff77fad31270b2724331d66c
+aaa9ef20804eb4d89d7c220fd45e6507

BIN
docs/inherit_graph_21.png


+ 4 - 3
docs/inherit_graph_22.map

@@ -1,5 +1,6 @@
 <map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$classfv_1_1Value.html" title="fv::Value\&lt; T * \&gt;" alt="" coords="5,5,132,32"/>
-<area shape="rect" id="node2" href="$classfv_1_1DerivedValue.html" title="fv::DerivedValue\&lt; T *\&gt;" alt="" coords="180,5,355,32"/>
-<area shape="rect" id="node3" href="$classfv_1_1PointerValue.html" title="A Value of a pointer. " alt="" coords="403,5,565,32"/>
+<area shape="rect" id="node1" href="$classfv_1_1Value.html" title="fv::Value\&lt; std::vector\l\&lt; T \&gt; \&gt;" alt="" coords="5,23,168,65"/>
+<area shape="rect" id="node2" href="$classfv_1_1DerivedValue.html" title="fv::DerivedValue\&lt; std\l::vector\&lt; T \&gt; \&gt;" alt="" coords="216,23,380,65"/>
+<area shape="rect" id="node3" href="$classfv_1_1Filter.html" title="Returns the elements in a vector that pass a test function. " alt="" coords="459,5,571,32"/>
+<area shape="rect" id="node4" href="$classfv_1_1WrapperVector.html" title="A std::vector wrapper around a C&#45;style array. " alt="" coords="428,56,603,83"/>
 </map>

+ 1 - 1
docs/inherit_graph_22.md5

@@ -1 +1 @@
-5889636ccb22b328ada01936718ac5c5
+50f502fe6a1f986ee356c8dfb62f979b

BIN
docs/inherit_graph_22.png


+ 2 - 1
docs/inherit_graph_23.map

@@ -1,3 +1,4 @@
 <map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$classfv_1_1Value.html" title="fv::Value\&lt; T *\&gt;" alt="" coords="5,5,128,32"/>
+<area shape="rect" id="node1" href="$classfv_1_1Value.html" title="fv::Value\&lt; std::vector\l\&lt; TLorentzVector \&gt; \&gt;" alt="" coords="5,5,169,47"/>
+<area shape="rect" id="node2" href="$classfv_1_1DerivedValue.html" title="fv::DerivedValue\&lt; std\l::vector\&lt; TLorentzVector \&gt; \&gt;" alt="" coords="217,5,431,47"/>
 </map>

+ 1 - 1
docs/inherit_graph_23.md5

@@ -1 +1 @@
-06c791d8bc3032d2b7850b156590fdda
+a6baa56cbb56821e502ec6ff11186d37

BIN
docs/inherit_graph_23.png


+ 1 - 11
docs/inherit_graph_24.map

@@ -1,13 +1,3 @@
 <map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$classfv_1_1Value.html" title="A generic value. " alt="" coords="5,81,121,108"/>
-<area shape="rect" id="node2" href="$classfv_1_1DerivedValue.html" title="A Value derived from some other Values, not directly from the dataset. " alt="" coords="175,56,342,83"/>
-<area shape="rect" id="node11" href="$classfv_1_1ObservedValue.html" title="A value supplied by the dataset, not derived. " alt="" coords="169,107,348,133"/>
-<area shape="rect" id="node3" href="$classfv_1_1BoundValue.html" title="A generic value owning only a function object. " alt="" coords="405,5,562,32"/>
-<area shape="rect" id="node4" href="$classfv_1_1ConstantValue.html" title="A Value which always returns the same value, supplied in the constructor. " alt="" coords="396,56,571,83"/>
-<area shape="rect" id="node5" href="$classfv_1_1Reduce.html" title="Reduce a Value of type vector&lt;T&gt; to just a T. " alt="" coords="420,107,547,133"/>
-<area shape="rect" id="node6" href="$classfv_1_1ElementOf.html" title="Extract the element at a specific index from a vector. " alt="" coords="619,5,768,32"/>
-<area shape="rect" id="node7" href="$classfv_1_1Max.html" title="Find and return the maximum value of a vector. " alt="" coords="640,56,747,83"/>
-<area shape="rect" id="node8" href="$classfv_1_1Mean.html" title="Calculate the mean value of a vector. " alt="" coords="636,107,751,133"/>
-<area shape="rect" id="node9" href="$classfv_1_1Min.html" title="Find and return the minimum value of a vector. " alt="" coords="642,157,745,184"/>
-<area shape="rect" id="node10" href="$classfv_1_1Range.html" title="Calculate the range of the values in a vector. " alt="" coords="633,208,754,235"/>
+<area shape="rect" id="node1" href="$classfv_1_1Value.html" title="fv::Value\&lt; std::vector\l\&lt; V \&gt; \&gt;" alt="" coords="5,5,168,47"/>
 </map>

+ 1 - 1
docs/inherit_graph_24.md5

@@ -1 +1 @@
-a8e3ea71c0e071a0f143344db0dfc7ed
+59040436ff77fad31270b2724331d66c

BIN
docs/inherit_graph_24.png


+ 3 - 1
docs/inherit_graph_25.map

@@ -1,3 +1,5 @@
 <map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$classfv_1_1Value.html" title="fv::Value\&lt; TLorentzVector \&gt;" alt="" coords="5,5,211,32"/>
+<area shape="rect" id="node1" href="$classfv_1_1Value.html" title="fv::Value\&lt; T * \&gt;" alt="" coords="5,5,132,32"/>
+<area shape="rect" id="node2" href="$classfv_1_1DerivedValue.html" title="fv::DerivedValue\&lt; T *\&gt;" alt="" coords="180,5,355,32"/>
+<area shape="rect" id="node3" href="$classfv_1_1PointerValue.html" title="A Value of a pointer. " alt="" coords="403,5,565,32"/>
 </map>

+ 1 - 1
docs/inherit_graph_25.md5

@@ -1 +1 @@
-660f5fb3f84e0dfc454816c1ac775210
+5889636ccb22b328ada01936718ac5c5

BIN
docs/inherit_graph_25.png


+ 1 - 1
docs/inherit_graph_26.map

@@ -1,3 +1,3 @@
 <map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$classfv_1_1Value.html" title="fv::Value\&lt; V \&gt;" alt="" coords="5,5,123,32"/>
+<area shape="rect" id="node1" href="$classfv_1_1Value.html" title="fv::Value\&lt; T *\&gt;" alt="" coords="5,5,128,32"/>
 </map>

+ 1 - 1
docs/inherit_graph_26.md5

@@ -1 +1 @@
-f8590c51af3be772bdcff3584679d957
+06c791d8bc3032d2b7850b156590fdda

BIN
docs/inherit_graph_26.png


+ 11 - 1
docs/inherit_graph_27.map

@@ -1,3 +1,13 @@
 <map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$classfv_1_1Value.html" title="fv::Value\&lt; value_type \&gt;" alt="" coords="5,5,185,32"/>
+<area shape="rect" id="node1" href="$classfv_1_1Value.html" title="A generic value. " alt="" coords="5,81,121,108"/>
+<area shape="rect" id="node2" href="$classfv_1_1DerivedValue.html" title="A Value derived from some other Values, not directly from the dataset. " alt="" coords="175,56,342,83"/>
+<area shape="rect" id="node11" href="$classfv_1_1ObservedValue.html" title="A value supplied by the dataset, not derived. " alt="" coords="169,107,348,133"/>
+<area shape="rect" id="node3" href="$classfv_1_1BoundValue.html" title="A generic value owning only a function object. " alt="" coords="405,5,562,32"/>
+<area shape="rect" id="node4" href="$classfv_1_1ConstantValue.html" title="A Value which always returns the same value, supplied in the constructor. " alt="" coords="396,56,571,83"/>
+<area shape="rect" id="node5" href="$classfv_1_1Reduce.html" title="Reduce a Value of type vector&lt;T&gt; to just a T. " alt="" coords="420,107,547,133"/>
+<area shape="rect" id="node6" href="$classfv_1_1ElementOf.html" title="Extract the element at a specific index from a vector. " alt="" coords="619,5,768,32"/>
+<area shape="rect" id="node7" href="$classfv_1_1Max.html" title="Find and return the maximum value of a vector. " alt="" coords="640,56,747,83"/>
+<area shape="rect" id="node8" href="$classfv_1_1Mean.html" title="Calculate the mean value of a vector. " alt="" coords="636,107,751,133"/>
+<area shape="rect" id="node9" href="$classfv_1_1Min.html" title="Find and return the minimum value of a vector. " alt="" coords="642,157,745,184"/>
+<area shape="rect" id="node10" href="$classfv_1_1Range.html" title="Calculate the range of the values in a vector. " alt="" coords="633,208,754,235"/>
 </map>

+ 1 - 1
docs/inherit_graph_27.md5

@@ -1 +1 @@
-dccb4fe1767046fe6b430b67f699d01b
+a8e3ea71c0e071a0f143344db0dfc7ed

BIN
docs/inherit_graph_27.png


+ 1 - 1
docs/inherit_graph_28.map

@@ -1,3 +1,3 @@
 <map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
-<area shape="rect" id="node1" href="$classfv_1_1Value.html" title="fv::Value\&lt; V \&gt;" alt="" coords="5,5,123,32"/>
+<area shape="rect" id="node1" href="$classfv_1_1Value.html" title="fv::Value\&lt; TLorentzVector \&gt;" alt="" coords="5,5,211,32"/>
 </map>

+ 1 - 1
docs/inherit_graph_28.md5

@@ -1 +1 @@
-f8590c51af3be772bdcff3584679d957
+660f5fb3f84e0dfc454816c1ac775210

BIN
docs/inherit_graph_28.png


+ 3 - 0
docs/inherit_graph_29.map

@@ -0,0 +1,3 @@
+<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
+<area shape="rect" id="node1" href="$classfv_1_1Value.html" title="fv::Value\&lt; V \&gt;" alt="" coords="5,5,123,32"/>
+</map>

+ 1 - 0
docs/inherit_graph_29.md5

@@ -0,0 +1 @@
+f8590c51af3be772bdcff3584679d957

BIN
docs/inherit_graph_29.png


+ 3 - 0
docs/inherit_graph_30.map

@@ -0,0 +1,3 @@
+<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
+<area shape="rect" id="node1" href="$classfv_1_1Value.html" title="fv::Value\&lt; value_type \&gt;" alt="" coords="5,5,185,32"/>
+</map>

+ 1 - 0
docs/inherit_graph_30.md5

@@ -0,0 +1 @@
+dccb4fe1767046fe6b430b67f699d01b

BIN
docs/inherit_graph_30.png


+ 29 - 12
docs/inherits.html

@@ -171,19 +171,29 @@ $(function() {
 <area shape="rect" id="node2" href="classfv_1_1DerivedValue.html" title="fv::DerivedValue\&lt; std\l::vector\&lt; float \&gt; \&gt;" alt="" coords="216,5,380,47"/>
 </map>
 </td></tr>
-<tr><td><img src="inherit_graph_16.png" border="0" alt="" usemap="#fv_1_1Value_3_01std_1_1vector_3_01Head_01_4_01_4"/>
+<tr><td><img src="inherit_graph_16.png" border="0" alt="" usemap="#fv_1_1Value_3_01std_1_1vector_3_01FST_01_4_01_4"/>
+<map name="fv_1_1Value_3_01std_1_1vector_3_01FST_01_4_01_4" id="fv_1_1Value_3_01std_1_1vector_3_01FST_01_4_01_4">
+<area shape="rect" id="node1" href="classfv_1_1Value.html" title="fv::Value\&lt; std::vector\l\&lt; FST \&gt; \&gt;" alt="" coords="5,5,168,47"/>
+</map>
+</td></tr>
+<tr><td><img src="inherit_graph_17.png" border="0" alt="" usemap="#fv_1_1Value_3_01std_1_1vector_3_01Head_01_4_01_4"/>
 <map name="fv_1_1Value_3_01std_1_1vector_3_01Head_01_4_01_4" id="fv_1_1Value_3_01std_1_1vector_3_01Head_01_4_01_4">
 <area shape="rect" id="node1" href="classfv_1_1Value.html" title="fv::Value\&lt; std::vector\l\&lt; Head \&gt; \&gt;" alt="" coords="5,5,168,47"/>
 </map>
 </td></tr>
-<tr><td><img src="inherit_graph_17.png" border="0" alt="" usemap="#fv_1_1Value_3_01std_1_1vector_3_01Ret_01_4_01_4"/>
+<tr><td><img src="inherit_graph_18.png" border="0" alt="" usemap="#fv_1_1Value_3_01std_1_1vector_3_01Ret_01_4_01_4"/>
 <map name="fv_1_1Value_3_01std_1_1vector_3_01Ret_01_4_01_4" id="fv_1_1Value_3_01std_1_1vector_3_01Ret_01_4_01_4">
 <area shape="rect" id="node1" href="classfv_1_1Value.html" title="fv::Value\&lt; std::vector\l\&lt; Ret \&gt; \&gt;" alt="" coords="5,5,168,47"/>
 <area shape="rect" id="node2" href="classfv_1_1DerivedValue.html" title="fv::DerivedValue\&lt; std\l::vector\&lt; Ret \&gt; \&gt;" alt="" coords="216,5,380,47"/>
 <area shape="rect" id="node3" href="classfv_1_1Map_3_01Ret_07ArgTypes_8_8_8_08_4.html" title="Maps a function over an input vector. " alt="" coords="428,13,625,39"/>
 </map>
 </td></tr>
-<tr><td><img src="inherit_graph_18.png" border="0" alt="" usemap="#fv_1_1Value_3_01std_1_1vector_3_01std_1_1tuple_3_01ArgTypes_8_8_8_01_4_01_4_01_4"/>
+<tr><td><img src="inherit_graph_19.png" border="0" alt="" usemap="#fv_1_1Value_3_01std_1_1vector_3_01SND_01_4_01_4"/>
+<map name="fv_1_1Value_3_01std_1_1vector_3_01SND_01_4_01_4" id="fv_1_1Value_3_01std_1_1vector_3_01SND_01_4_01_4">
+<area shape="rect" id="node1" href="classfv_1_1Value.html" title="fv::Value\&lt; std::vector\l\&lt; SND \&gt; \&gt;" alt="" coords="5,5,168,47"/>
+</map>
+</td></tr>
+<tr><td><img src="inherit_graph_20.png" border="0" alt="" usemap="#fv_1_1Value_3_01std_1_1vector_3_01std_1_1tuple_3_01ArgTypes_8_8_8_01_4_01_4_01_4"/>
 <map name="fv_1_1Value_3_01std_1_1vector_3_01std_1_1tuple_3_01ArgTypes_8_8_8_01_4_01_4_01_4" id="fv_1_1Value_3_01std_1_1vector_3_01std_1_1tuple_3_01ArgTypes_8_8_8_01_4_01_4_01_4">
 <area shape="rect" id="node1" href="classfv_1_1Value.html" title="fv::Value\&lt; std::vector\l\&lt; std::tuple\&lt; ArgTypes... \&gt; \&gt; \&gt;" alt="" coords="5,23,235,65"/>
 <area shape="rect" id="node2" href="classfv_1_1DerivedValue.html" title="fv::DerivedValue\&lt; std\l::vector\&lt; std::tuple\l\&lt; ArgTypes... \&gt; \&gt; \&gt;" alt="" coords="283,16,447,72"/>
@@ -191,7 +201,14 @@ $(function() {
 <area shape="rect" id="node4" href="classfv_1_1Zip.html" title="Zips a series of vectors together. " alt="" coords="511,56,663,83"/>
 </map>
 </td></tr>
-<tr><td><img src="inherit_graph_19.png" border="0" alt="" usemap="#fv_1_1Value_3_01std_1_1vector_3_01T_01_4_01_4"/>
+<tr><td><img src="inherit_graph_21.png" border="0" alt="" usemap="#fv_1_1Value_3_01std_1_1vector_3_01std_1_1tuple_3_01FST_00_01SND_01_4_01_4_01_4"/>
+<map name="fv_1_1Value_3_01std_1_1vector_3_01std_1_1tuple_3_01FST_00_01SND_01_4_01_4_01_4" id="fv_1_1Value_3_01std_1_1vector_3_01std_1_1tuple_3_01FST_00_01SND_01_4_01_4_01_4">
+<area shape="rect" id="node1" href="classfv_1_1Value.html" title="fv::Value\&lt; std::vector\l\&lt; std::tuple\&lt; FST, SND \&gt; \&gt; \&gt;" alt="" coords="5,13,223,54"/>
+<area shape="rect" id="node2" href="classfv_1_1DerivedValue.html" title="fv::DerivedValue\&lt; std\l::vector\&lt; std::tuple\l\&lt; FST, SND \&gt; \&gt; \&gt;" alt="" coords="271,5,435,61"/>
+<area shape="rect" id="node3" href="classfv_1_1CartProduct.html" title="Find and return the minimum value of a vector and its index. " alt="" coords="483,13,643,54"/>
+</map>
+</td></tr>
+<tr><td><img src="inherit_graph_22.png" border="0" alt="" usemap="#fv_1_1Value_3_01std_1_1vector_3_01T_01_4_01_4"/>
 <map name="fv_1_1Value_3_01std_1_1vector_3_01T_01_4_01_4" id="fv_1_1Value_3_01std_1_1vector_3_01T_01_4_01_4">
 <area shape="rect" id="node1" href="classfv_1_1Value.html" title="fv::Value\&lt; std::vector\l\&lt; T \&gt; \&gt;" alt="" coords="5,23,168,65"/>
 <area shape="rect" id="node2" href="classfv_1_1DerivedValue.html" title="fv::DerivedValue\&lt; std\l::vector\&lt; T \&gt; \&gt;" alt="" coords="216,23,380,65"/>
@@ -199,30 +216,30 @@ $(function() {
 <area shape="rect" id="node4" href="classfv_1_1WrapperVector.html" title="A std::vector wrapper around a C&#45;style array. " alt="" coords="428,56,603,83"/>
 </map>
 </td></tr>
-<tr><td><img src="inherit_graph_20.png" border="0" alt="" usemap="#fv_1_1Value_3_01std_1_1vector_3_01TLorentzVector_01_4_01_4"/>
+<tr><td><img src="inherit_graph_23.png" border="0" alt="" usemap="#fv_1_1Value_3_01std_1_1vector_3_01TLorentzVector_01_4_01_4"/>
 <map name="fv_1_1Value_3_01std_1_1vector_3_01TLorentzVector_01_4_01_4" id="fv_1_1Value_3_01std_1_1vector_3_01TLorentzVector_01_4_01_4">
 <area shape="rect" id="node1" href="classfv_1_1Value.html" title="fv::Value\&lt; std::vector\l\&lt; TLorentzVector \&gt; \&gt;" alt="" coords="5,5,169,47"/>
 <area shape="rect" id="node2" href="classfv_1_1DerivedValue.html" title="fv::DerivedValue\&lt; std\l::vector\&lt; TLorentzVector \&gt; \&gt;" alt="" coords="217,5,431,47"/>
 </map>
 </td></tr>
-<tr><td><img src="inherit_graph_21.png" border="0" alt="" usemap="#fv_1_1Value_3_01std_1_1vector_3_01V_01_4_01_4"/>
+<tr><td><img src="inherit_graph_24.png" border="0" alt="" usemap="#fv_1_1Value_3_01std_1_1vector_3_01V_01_4_01_4"/>
 <map name="fv_1_1Value_3_01std_1_1vector_3_01V_01_4_01_4" id="fv_1_1Value_3_01std_1_1vector_3_01V_01_4_01_4">
 <area shape="rect" id="node1" href="classfv_1_1Value.html" title="fv::Value\&lt; std::vector\l\&lt; V \&gt; \&gt;" alt="" coords="5,5,168,47"/>
 </map>
 </td></tr>
-<tr><td><img src="inherit_graph_22.png" border="0" alt="" usemap="#fv_1_1Value_3_01T_01_5_01_4"/>
+<tr><td><img src="inherit_graph_25.png" border="0" alt="" usemap="#fv_1_1Value_3_01T_01_5_01_4"/>
 <map name="fv_1_1Value_3_01T_01_5_01_4" id="fv_1_1Value_3_01T_01_5_01_4">
 <area shape="rect" id="node1" href="classfv_1_1Value.html" title="fv::Value\&lt; T * \&gt;" alt="" coords="5,5,132,32"/>
 <area shape="rect" id="node2" href="classfv_1_1DerivedValue.html" title="fv::DerivedValue\&lt; T *\&gt;" alt="" coords="180,5,355,32"/>
 <area shape="rect" id="node3" href="classfv_1_1PointerValue.html" title="A Value of a pointer. " alt="" coords="403,5,565,32"/>
 </map>
 </td></tr>
-<tr><td><img src="inherit_graph_23.png" border="0" alt="" usemap="#fv_1_1Value_3_01T_01_5_4"/>
+<tr><td><img src="inherit_graph_26.png" border="0" alt="" usemap="#fv_1_1Value_3_01T_01_5_4"/>
 <map name="fv_1_1Value_3_01T_01_5_4" id="fv_1_1Value_3_01T_01_5_4">
 <area shape="rect" id="node1" href="classfv_1_1Value.html" title="fv::Value\&lt; T *\&gt;" alt="" coords="5,5,128,32"/>
 </map>
 </td></tr>
-<tr><td><img src="inherit_graph_24.png" border="0" alt="" usemap="#fv_1_1Value_3_01T_01_4"/>
+<tr><td><img src="inherit_graph_27.png" border="0" alt="" usemap="#fv_1_1Value_3_01T_01_4"/>
 <map name="fv_1_1Value_3_01T_01_4" id="fv_1_1Value_3_01T_01_4">
 <area shape="rect" id="node1" href="classfv_1_1Value.html" title="A generic value. " alt="" coords="5,81,121,108"/>
 <area shape="rect" id="node2" href="classfv_1_1DerivedValue.html" title="A Value derived from some other Values, not directly from the dataset. " alt="" coords="175,56,342,83"/>
@@ -237,17 +254,17 @@ $(function() {
 <area shape="rect" id="node10" href="classfv_1_1Range.html" title="Calculate the range of the values in a vector. " alt="" coords="633,208,754,235"/>
 </map>
 </td></tr>
-<tr><td><img src="inherit_graph_25.png" border="0" alt="" usemap="#fv_1_1Value_3_01TLorentzVector_01_4"/>
+<tr><td><img src="inherit_graph_28.png" border="0" alt="" usemap="#fv_1_1Value_3_01TLorentzVector_01_4"/>
 <map name="fv_1_1Value_3_01TLorentzVector_01_4" id="fv_1_1Value_3_01TLorentzVector_01_4">
 <area shape="rect" id="node1" href="classfv_1_1Value.html" title="fv::Value\&lt; TLorentzVector \&gt;" alt="" coords="5,5,211,32"/>
 </map>
 </td></tr>
-<tr><td><img src="inherit_graph_26.png" border="0" alt="" usemap="#fv_1_1Value_3_01V_01_4"/>
+<tr><td><img src="inherit_graph_29.png" border="0" alt="" usemap="#fv_1_1Value_3_01V_01_4"/>
 <map name="fv_1_1Value_3_01V_01_4" id="fv_1_1Value_3_01V_01_4">
 <area shape="rect" id="node1" href="classfv_1_1Value.html" title="fv::Value\&lt; V \&gt;" alt="" coords="5,5,123,32"/>
 </map>
 </td></tr>
-<tr><td><img src="inherit_graph_27.png" border="0" alt="" usemap="#fv_1_1Value_3_01value__type_01_4"/>
+<tr><td><img src="inherit_graph_30.png" border="0" alt="" usemap="#fv_1_1Value_3_01value__type_01_4"/>
 <map name="fv_1_1Value_3_01value__type_01_4" id="fv_1_1Value_3_01value__type_01_4">
 <area shape="rect" id="node1" href="classfv_1_1Value.html" title="fv::Value\&lt; value_type \&gt;" alt="" coords="5,5,185,32"/>
 </map>

File diff suppressed because it is too large
+ 17 - 6
docs/namespacefv.html


+ 1 - 0
docs/search/all_2.js

@@ -1,6 +1,7 @@
 var searchData=
 [
   ['call',['call',['../namespacefv.html#a182def996bfac5212fd450627a187ae4',1,'fv']]],
+  ['cartproduct',['CartProduct',['../classfv_1_1CartProduct.html',1,'fv']]],
   ['constantvalue',['ConstantValue',['../classfv_1_1ConstantValue.html',1,'fv']]],
   ['container',['Container',['../classfv_1_1Container.html',1,'fv']]],
   ['container_2ehpp',['container.hpp',['../container_8hpp.html',1,'']]],

+ 1 - 0
docs/search/all_3.js

@@ -11,6 +11,7 @@ var searchData=
   ['derivedvalue_3c_20std_3a_3avector_3c_20float_20_3e_20_3e',['DerivedValue&lt; std::vector&lt; float &gt; &gt;',['../classfv_1_1DerivedValue.html',1,'fv']]],
   ['derivedvalue_3c_20std_3a_3avector_3c_20ret_20_3e_20_3e',['DerivedValue&lt; std::vector&lt; Ret &gt; &gt;',['../classfv_1_1DerivedValue.html',1,'fv']]],
   ['derivedvalue_3c_20std_3a_3avector_3c_20std_3a_3atuple_3c_20argtypes_2e_2e_2e_20_3e_20_3e_20_3e',['DerivedValue&lt; std::vector&lt; std::tuple&lt; ArgTypes... &gt; &gt; &gt;',['../classfv_1_1DerivedValue.html',1,'fv']]],
+  ['derivedvalue_3c_20std_3a_3avector_3c_20std_3a_3atuple_3c_20fst_2c_20snd_20_3e_20_3e_20_3e',['DerivedValue&lt; std::vector&lt; std::tuple&lt; FST, SND &gt; &gt; &gt;',['../classfv_1_1DerivedValue.html',1,'fv']]],
   ['derivedvalue_3c_20std_3a_3avector_3c_20t_20_3e_20_3e',['DerivedValue&lt; std::vector&lt; T &gt; &gt;',['../classfv_1_1DerivedValue.html',1,'fv']]],
   ['derivedvalue_3c_20std_3a_3avector_3c_20tlorentzvector_20_3e_20_3e',['DerivedValue&lt; std::vector&lt; TLorentzVector &gt; &gt;',['../classfv_1_1DerivedValue.html',1,'fv']]],
   ['derivedvalue_3c_20t_20_2a_3e',['DerivedValue&lt; T *&gt;',['../classfv_1_1DerivedValue.html',1,'fv']]]

File diff suppressed because it is too large
+ 1 - 1
docs/search/all_e.js


+ 3 - 0
docs/search/all_f.js

@@ -14,9 +14,12 @@ var searchData=
   ['value_3c_20std_3a_3apair_3c_20v_2c_20v_20_3e_20_3e',['Value&lt; std::pair&lt; V, V &gt; &gt;',['../classfv_1_1Value.html',1,'fv']]],
   ['value_3c_20std_3a_3atuple_3c_20argtypes_2e_2e_2e_20_3e_20_3e',['Value&lt; std::tuple&lt; ArgTypes... &gt; &gt;',['../classfv_1_1Value.html',1,'fv']]],
   ['value_3c_20std_3a_3avector_3c_20float_20_3e_20_3e',['Value&lt; std::vector&lt; float &gt; &gt;',['../classfv_1_1Value.html',1,'fv']]],
+  ['value_3c_20std_3a_3avector_3c_20fst_20_3e_20_3e',['Value&lt; std::vector&lt; FST &gt; &gt;',['../classfv_1_1Value.html',1,'fv']]],
   ['value_3c_20std_3a_3avector_3c_20head_20_3e_20_3e',['Value&lt; std::vector&lt; Head &gt; &gt;',['../classfv_1_1Value.html',1,'fv']]],
   ['value_3c_20std_3a_3avector_3c_20ret_20_3e_20_3e',['Value&lt; std::vector&lt; Ret &gt; &gt;',['../classfv_1_1Value.html',1,'fv']]],
+  ['value_3c_20std_3a_3avector_3c_20snd_20_3e_20_3e',['Value&lt; std::vector&lt; SND &gt; &gt;',['../classfv_1_1Value.html',1,'fv']]],
   ['value_3c_20std_3a_3avector_3c_20std_3a_3atuple_3c_20argtypes_2e_2e_2e_20_3e_20_3e_20_3e',['Value&lt; std::vector&lt; std::tuple&lt; ArgTypes... &gt; &gt; &gt;',['../classfv_1_1Value.html',1,'fv']]],
+  ['value_3c_20std_3a_3avector_3c_20std_3a_3atuple_3c_20fst_2c_20snd_20_3e_20_3e_20_3e',['Value&lt; std::vector&lt; std::tuple&lt; FST, SND &gt; &gt; &gt;',['../classfv_1_1Value.html',1,'fv']]],
   ['value_3c_20std_3a_3avector_3c_20t_20_3e_20_3e',['Value&lt; std::vector&lt; T &gt; &gt;',['../classfv_1_1Value.html',1,'fv']]],
   ['value_3c_20std_3a_3avector_3c_20tlorentzvector_20_3e_20_3e',['Value&lt; std::vector&lt; TLorentzVector &gt; &gt;',['../classfv_1_1Value.html',1,'fv']]],
   ['value_3c_20std_3a_3avector_3c_20v_20_3e_20_3e',['Value&lt; std::vector&lt; V &gt; &gt;',['../classfv_1_1Value.html',1,'fv']]],

+ 1 - 0
docs/search/classes_2.js

@@ -1,5 +1,6 @@
 var searchData=
 [
+  ['cartproduct',['CartProduct',['../classfv_1_1CartProduct.html',1,'fv']]],
   ['constantvalue',['ConstantValue',['../classfv_1_1ConstantValue.html',1,'fv']]],
   ['container',['Container',['../classfv_1_1Container.html',1,'fv']]],
   ['container_3c_20std_3a_3amap_3c_20d_2c_20int_20_3e_20_3e',['Container&lt; std::map&lt; D, int &gt; &gt;',['../classfv_1_1Container.html',1,'fv']]],

+ 1 - 0
docs/search/classes_3.js

@@ -10,6 +10,7 @@ var searchData=
   ['derivedvalue_3c_20std_3a_3avector_3c_20float_20_3e_20_3e',['DerivedValue&lt; std::vector&lt; float &gt; &gt;',['../classfv_1_1DerivedValue.html',1,'fv']]],
   ['derivedvalue_3c_20std_3a_3avector_3c_20ret_20_3e_20_3e',['DerivedValue&lt; std::vector&lt; Ret &gt; &gt;',['../classfv_1_1DerivedValue.html',1,'fv']]],
   ['derivedvalue_3c_20std_3a_3avector_3c_20std_3a_3atuple_3c_20argtypes_2e_2e_2e_20_3e_20_3e_20_3e',['DerivedValue&lt; std::vector&lt; std::tuple&lt; ArgTypes... &gt; &gt; &gt;',['../classfv_1_1DerivedValue.html',1,'fv']]],
+  ['derivedvalue_3c_20std_3a_3avector_3c_20std_3a_3atuple_3c_20fst_2c_20snd_20_3e_20_3e_20_3e',['DerivedValue&lt; std::vector&lt; std::tuple&lt; FST, SND &gt; &gt; &gt;',['../classfv_1_1DerivedValue.html',1,'fv']]],
   ['derivedvalue_3c_20std_3a_3avector_3c_20t_20_3e_20_3e',['DerivedValue&lt; std::vector&lt; T &gt; &gt;',['../classfv_1_1DerivedValue.html',1,'fv']]],
   ['derivedvalue_3c_20std_3a_3avector_3c_20tlorentzvector_20_3e_20_3e',['DerivedValue&lt; std::vector&lt; TLorentzVector &gt; &gt;',['../classfv_1_1DerivedValue.html',1,'fv']]],
   ['derivedvalue_3c_20t_20_2a_3e',['DerivedValue&lt; T *&gt;',['../classfv_1_1DerivedValue.html',1,'fv']]]

+ 3 - 0
docs/search/classes_c.js

@@ -13,9 +13,12 @@ var searchData=
   ['value_3c_20std_3a_3apair_3c_20v_2c_20v_20_3e_20_3e',['Value&lt; std::pair&lt; V, V &gt; &gt;',['../classfv_1_1Value.html',1,'fv']]],
   ['value_3c_20std_3a_3atuple_3c_20argtypes_2e_2e_2e_20_3e_20_3e',['Value&lt; std::tuple&lt; ArgTypes... &gt; &gt;',['../classfv_1_1Value.html',1,'fv']]],
   ['value_3c_20std_3a_3avector_3c_20float_20_3e_20_3e',['Value&lt; std::vector&lt; float &gt; &gt;',['../classfv_1_1Value.html',1,'fv']]],
+  ['value_3c_20std_3a_3avector_3c_20fst_20_3e_20_3e',['Value&lt; std::vector&lt; FST &gt; &gt;',['../classfv_1_1Value.html',1,'fv']]],
   ['value_3c_20std_3a_3avector_3c_20head_20_3e_20_3e',['Value&lt; std::vector&lt; Head &gt; &gt;',['../classfv_1_1Value.html',1,'fv']]],
   ['value_3c_20std_3a_3avector_3c_20ret_20_3e_20_3e',['Value&lt; std::vector&lt; Ret &gt; &gt;',['../classfv_1_1Value.html',1,'fv']]],
+  ['value_3c_20std_3a_3avector_3c_20snd_20_3e_20_3e',['Value&lt; std::vector&lt; SND &gt; &gt;',['../classfv_1_1Value.html',1,'fv']]],
   ['value_3c_20std_3a_3avector_3c_20std_3a_3atuple_3c_20argtypes_2e_2e_2e_20_3e_20_3e_20_3e',['Value&lt; std::vector&lt; std::tuple&lt; ArgTypes... &gt; &gt; &gt;',['../classfv_1_1Value.html',1,'fv']]],
+  ['value_3c_20std_3a_3avector_3c_20std_3a_3atuple_3c_20fst_2c_20snd_20_3e_20_3e_20_3e',['Value&lt; std::vector&lt; std::tuple&lt; FST, SND &gt; &gt; &gt;',['../classfv_1_1Value.html',1,'fv']]],
   ['value_3c_20std_3a_3avector_3c_20t_20_3e_20_3e',['Value&lt; std::vector&lt; T &gt; &gt;',['../classfv_1_1Value.html',1,'fv']]],
   ['value_3c_20std_3a_3avector_3c_20tlorentzvector_20_3e_20_3e',['Value&lt; std::vector&lt; TLorentzVector &gt; &gt;',['../classfv_1_1Value.html',1,'fv']]],
   ['value_3c_20std_3a_3avector_3c_20v_20_3e_20_3e',['Value&lt; std::vector&lt; V &gt; &gt;',['../classfv_1_1Value.html',1,'fv']]],

File diff suppressed because it is too large
+ 1 - 1
docs/search/functions_4.js


+ 3 - 0
docs/value_8hpp.html

@@ -186,6 +186,9 @@ Classes</h2></td></tr>
 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfv_1_1MinIndex.html">fv::MinIndex&lt; T &gt;</a></td></tr>
 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Find and return the minimum value of a vector and its index.  <a href="classfv_1_1MinIndex.html#details">More...</a><br /></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfv_1_1CartProduct.html">fv::CartProduct&lt; FST, SND &gt;</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Find and return the minimum value of a vector and its index.  <a href="classfv_1_1CartProduct.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfv_1_1BoundValue.html">fv::BoundValue&lt; T &gt;</a></td></tr>
 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A generic value owning only a function object.  <a href="classfv_1_1BoundValue.html#details">More...</a><br /></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>

File diff suppressed because it is too large
+ 8 - 6
docs/value_8hpp_source.html


+ 47 - 19
filval/api.hpp

@@ -10,7 +10,7 @@ namespace fv{
         GenValue* gv = GenValue::get_value(name);
         Value<T>* tv = dynamic_cast<Value<T>*>(gv);
         if(tv == nullptr){
-            CRITICAL("Value: "+gv->get_name() + "has improper type.",-1);
+            CRITICAL("Value: \""+gv->get_name() + "\" has improper type.",-1);
         }
         return tv;
     }
@@ -24,89 +24,117 @@ namespace fv{
     }
 
     template <typename... ArgTypes>
-    Zip<ArgTypes...>* zip(Value<std::vector<ArgTypes>>*... args, const std::string& alias=""){
+    Value<std::vector<std::tuple<ArgTypes...>>>*
+    zip(Value<std::vector<ArgTypes>>*... args, const std::string& alias=""){
         return new Zip<ArgTypes...>(args..., alias);
     }
 
     template <typename Ret, typename... ArgTypes>
-    Map<Ret(ArgTypes...)>* map(Function<Ret(ArgTypes...)>& fn,
-                                        Zip<ArgTypes...>* arg, const std::string& alias=""){
+    Map<Ret(ArgTypes...)>*
+    map(Function<Ret(ArgTypes...)>& fn,
+        Value<std::vector<std::tuple<ArgTypes...>>>* arg, const std::string& alias=""){
         return new Map<Ret(ArgTypes...)>(fn, arg, alias);
     }
 
 
     template <typename... ArgTypes>
-    Tuple<ArgTypes...>* tuple(Value<ArgTypes>*... args, const std::string& alias=""){
+    Tuple<ArgTypes...>*
+    tuple(Value<ArgTypes>*... args, const std::string& alias=""){
         return new Tuple<ArgTypes...>(args..., alias);
     }
 
     template <typename Ret, typename... ArgTypes>
-    Apply<Ret(ArgTypes...)>* apply(Function<Ret(ArgTypes...)>& fn,
-                                   Tuple<ArgTypes...>* arg, const std::string& alias=""){
+    Apply<Ret(ArgTypes...)>*
+    apply(Function<Ret(ArgTypes...)>& fn,
+          Tuple<ArgTypes...>* arg, const std::string& alias=""){
         return new Apply<Ret(ArgTypes...)>(fn, arg, alias);
     }
 
     template <typename T1, typename T2>
-    Pair<T1, T2>* pair(Value<T1>* val1, Value<T2>* val2, const std::string& alias=""){
+    Pair<T1, T2>*
+    pair(Value<T1>* val1, Value<T2>* val2, const std::string& alias=""){
         return new Pair<T1,T2>(val1, val2, alias);
     }
 
     template <typename T1, typename T2>
-    Pair<T1, T2>* pair(const std::string& name1, const std::string& name2, const std::string& alias=""){
+    Pair<T1, T2>*
+    pair(const std::string& name1, const std::string& name2, const std::string& alias=""){
         return pair<T1,T2>(lookup<T1>(name1), lookup<T2>(name2), alias);
     }
 
 
     template <typename T>
-    Max<T>* max(Value<std::vector<T>>* v, const std::string alias){
+    Max<T>*
+    max(Value<std::vector<T>>* v, const std::string alias){
         return new Max<T>(v, alias);
     }
 
     template <typename T>
-    Max<T>* max(const std::string& v_name, const std::string alias){
+    Max<T>*
+    max(const std::string& v_name, const std::string alias){
         return max(lookup<std::vector<T>>(v_name), alias);
     }
 
     template <typename T>
-    Min<T>* min(Value<std::vector<T>>* v, const std::string alias){
+    Min<T>*
+    min(Value<std::vector<T>>* v, const std::string alias){
         return new Min<T>(v, alias);
     }
 
     template <typename T>
-    Min<T>* min(const std::string& v_name, const std::string alias){
+    Min<T>*
+    min(const std::string& v_name, const std::string alias){
         return min(lookup<std::vector<T>>(v_name), alias);
     }
 
     template <typename T>
-    Range<T>* range(Value<std::vector<T>>* v, const std::string alias){
+    Range<T>*
+    range(Value<std::vector<T>>* v, const std::string alias){
         return new Range<T>(v, alias);
     }
 
     template <typename T>
-    Range<T>* range(const std::string& v_name, const std::string alias){
+    Range<T>*
+    range(const std::string& v_name, const std::string alias){
         return range(lookup<std::vector<T>>(v_name), alias);
     }
 
     template <typename T>
-    Mean<T>* mean(Value<std::vector<T>>* v, const std::string alias){
+    Mean<T>*
+    mean(Value<std::vector<T>>* v, const std::string alias){
         return new Mean<T>(v, alias);
     }
 
     template <typename T>
-    Mean<T>* mean(const std::string& v_name, const std::string alias){
+    Mean<T>*
+    mean(const std::string& v_name, const std::string alias){
         return mean(lookup<std::vector<T>>(v_name), alias);
     }
 
     template <typename T>
-    Count<T>* count(Function<bool(T)>& selector, Value<std::vector<T>>* v, const std::string alias){
+    Count<T>*
+    count(Function<bool(T)>& selector, Value<std::vector<T>>* v, const std::string alias){
         return new Count<T>(selector, v, alias);
     }
 
     template <typename T>
-    Count<T>* count(Function<bool(T)>& selector, const std::string& v_name, const std::string alias){
+    Count<T>*
+    count(Function<bool(T)>& selector, const std::string& v_name, const std::string alias){
         return count<T>(selector, lookup<std::vector<T>>(v_name), alias);
     }
 
+    template <typename FST, typename SND>
+    Value<std::vector<std::tuple<FST,SND>>>*
+    cart_product(Value<std::vector<FST>>* val1, Value<std::vector<SND>>* val2, const std::string alias){
+        return new CartProduct<FST, SND>(val1, val2, alias);
+    }
+
+    template <typename FST, typename SND>
+    Value<std::vector<std::tuple<FST,SND>>>*
+    cart_product(const std::string& val1_name, const std::string& val2_name, const std::string alias = ""){
+        return cart_product<FST,SND>(lookup<std::vector<FST>>(val1_name), lookup<std::vector<SND>>(val2_name), alias);
+    }
+
     ObsFilter* obs_filter(const std::string& name, std::function<bool()> filter_function, const std::string& impl=""){
         return new ObsFilter(name, filter_function, impl);
     }

+ 32 - 0
filval/value.hpp

@@ -897,6 +897,38 @@ class MinIndex : public ReduceIndex<T>{
                           v, alias) { }
 };
 
+/**
+ * Find and return the minimum value of a vector and its index.
+ */
+template <typename FST, typename SND>
+class CartProduct : public DerivedValue<std::vector<std::tuple<FST,SND>>>{
+    private:
+        Value<std::vector<FST>>* val1;
+        Value<std::vector<SND>>* val2;
+        bool self_product;
+
+        void update_value(){
+            this->value.clear();
+            auto& v1 = val1->get_value();
+            auto& v2 = val2->get_value();
+            for(int i=0; i<v1.size(); i++){
+                int lower_lim = self_product ? i+1 : 0;
+                for(int j=lower_lim; j<v2.size(); j++){
+                    this->value.push_back(std::tuple<FST,SND>(v1[i],v2[j]));
+                }
+            }
+        }
+
+    public:
+        CartProduct(Value<std::vector<FST>>* val1, Value<std::vector<SND>>* val2, const std::string alias="")
+          :DerivedValue<std::vector<std::tuple<FST,SND>>>("cartProduct("+
+                                                          val1->get_name()+","+
+                                                          val2->get_name()+")", alias),
+           val1(val1),
+           val2(val2),
+           self_product(val1 == val2) { }
+};
+
 /**
  * A generic value owning only a function object.
  * All necessary values upon which this value depends must be bound to the

File diff suppressed because it is too large
+ 202 - 44
python/TTTT_Analysis.ipynb


+ 17 - 11
python/utils.py

@@ -4,6 +4,7 @@ import sys
 import itertools as it
 from os.path import dirname, join, abspath, normpath, getctime
 from math import ceil, floor, sqrt
+from collections import deque
 from subprocess import run, PIPE
 from IPython.display import Image
 
@@ -281,38 +282,43 @@ class HistCollection:
                          hist_names,
                          titles,
                          shape=None, **kwargs):
-        n_hists = len(hist_names)
+        n_hist = len(hist_names)
         if shape is None:
-            if n_hists <= 4:
-                shape = (1, n_hists)
+            if n_hist <= 4:
+                shape = (1, n_hist)
             else:
-                shape = (ceil(sqrt(n_hists)),)*2
+                shape = (ceil(sqrt(n_hist)),)*2
         CANVAS.SetCanvasSize(SINGLE_PLOT_SIZE[0]*shape[0],
                              SINGLE_PLOT_SIZE[1]*shape[1])
         CANVAS.Divide(*shape)
-        for i, hist_name, title in zip(range(1, n_hists+1), hist_names, titles):
+        for i, hist_name, title in zip(range(1, n_hist+1), hist_names, titles):
             CANVAS.cd(i)
             cls.stack_hist(hist_name, title=title, draw=True,
                            draw_canvas=False, **kwargs)
-        CANVAS.cd(n_hists).BuildLegend(0.75, 0.75, 0.95, 0.95, "")
+        CANVAS.cd(n_hist).BuildLegend(0.75, 0.75, 0.95, 0.95, "")
+
+    pts = deque([], 50)
 
-    pts = []
     @classmethod
     def hist_array_single(cls,
                           hist_name,
                           title=None,
                           **kwargs):
-        n_hists = len(cls.collections)
-        shape = cls.calc_shape(n_hists)
+        n_hist = len(cls.collections)
+        shape = cls.calc_shape(n_hist)
         CANVAS.SetCanvasSize(SINGLE_PLOT_SIZE[0]*shape[0],
                              SINGLE_PLOT_SIZE[1]*shape[1])
         CANVAS.Divide(*shape)
         labels, hists = cls.get_hist_set(hist_name)
-        for i, label, hist in zip(range(1, n_hists+1), labels, hists):
-            pt = ROOT.TPaveText(300, 3, 400, 3.5)
+
+        def pave_loc():
+            hist.Get
+        for i, label, hist in zip(range(1, n_hist+1), labels, hists):
             CANVAS.cd(i)
             hist.SetStats(False)
             hist.Draw(cls.get_draw_option(hist))
+
+            pt = ROOT.TPaveText(0.70, 0.87, 0.85, 0.95, "NDC")
             pt.AddText("Dataset: "+label)
             pt.Draw()
             cls.pts.append(pt)