Browse Source

Misc. Updates including

  - Renames Filter to ObsFilter and introduces new Filter class that
    acts on vectors, rather than event by event.
  - Fixes some styling on Gen-Level object graphs
  - Adds new plot type which plots the same variable from different
    datasets on the same canvas, but not stacked.
  - Updates Docs
Caleb Fangmeier 7 years ago
parent
commit
5d5ec3f925
85 changed files with 6334 additions and 2152 deletions
  1. 96 96
      MiniTreeDoc.txt
  2. 96 52
      analysis/TTTT_Analysis.cpp
  3. 1 1
      cmake/convert_nb
  4. 4 4
      docs/MiniTreeDataSet_8hpp_source.html
  5. 5198 1591
      docs/TTTT_Analysis.html
  6. 7 0
      docs/TTTT__Analysis_8cpp.html
  7. 21 19
      docs/annotated.html
  8. 9 9
      docs/api_8hpp_source.html
  9. 22 21
      docs/classes.html
  10. 3 3
      docs/classfv_1_1Container.html
  11. 3 3
      docs/classfv_1_1ContainerMean.html
  12. 1 1
      docs/classfv_1_1DerivedValue.html
  13. 21 24
      docs/classfv_1_1Filter-members.html
  14. 57 89
      docs/classfv_1_1Filter.html
  15. 3 5
      docs/classfv_1_1Filter__coll__graph.map
  16. 1 1
      docs/classfv_1_1Filter__coll__graph.md5
  17. BIN
      docs/classfv_1_1Filter__coll__graph.png
  18. 3 6
      docs/classfv_1_1Filter__inherit__graph.map
  19. 1 1
      docs/classfv_1_1Filter__inherit__graph.md5
  20. BIN
      docs/classfv_1_1Filter__inherit__graph.png
  21. 3 0
      docs/classfv_1_1Filter_a3666dcad055ca8b0f7c7ab675f5eb57d_cgraph.map
  22. 1 0
      docs/classfv_1_1Filter_a3666dcad055ca8b0f7c7ab675f5eb57d_cgraph.md5
  23. BIN
      docs/classfv_1_1Filter_a3666dcad055ca8b0f7c7ab675f5eb57d_cgraph.png
  24. 6 5
      docs/classfv_1_1Function_3_01R_07ArgTypes_8_8_8_08_4-members.html
  25. 4 0
      docs/classfv_1_1Function_3_01R_07ArgTypes_8_8_8_08_4.html
  26. 6 6
      docs/classfv_1_1GenContainer.html
  27. 5 4
      docs/classfv_1_1GenFunction-members.html
  28. 4 0
      docs/classfv_1_1GenFunction.html
  29. 15 14
      docs/classfv_1_1Map_3_01Ret_07ArgTypes_8_8_8_08_4-members.html
  30. 18 13
      docs/classfv_1_1Map_3_01Ret_07ArgTypes_8_8_8_08_4.html
  31. 3 5
      docs/classfv_1_1Map_3_01Ret_07ArgTypes_8_8_8_08_4__coll__graph.map
  32. 1 1
      docs/classfv_1_1Map_3_01Ret_07ArgTypes_8_8_8_08_4__coll__graph.md5
  33. BIN
      docs/classfv_1_1Map_3_01Ret_07ArgTypes_8_8_8_08_4__coll__graph.png
  34. 2 2
      docs/classfv_1_1Map_3_01Ret_07ArgTypes_8_8_8_08_4_acd85576e1e4eb0eb4ef0d4947299478c_cgraph.map
  35. 1 1
      docs/classfv_1_1Map_3_01Ret_07ArgTypes_8_8_8_08_4_acd85576e1e4eb0eb4ef0d4947299478c_cgraph.md5
  36. BIN
      docs/classfv_1_1Map_3_01Ret_07ArgTypes_8_8_8_08_4_acd85576e1e4eb0eb4ef0d4947299478c_cgraph.png
  37. 101 0
      docs/classfv_1_1TupFilter-members.html
  38. 209 0
      docs/classfv_1_1TupFilter.html
  39. 5 0
      docs/classfv_1_1TupFilter__coll__graph.map
  40. 1 0
      docs/classfv_1_1TupFilter__coll__graph.md5
  41. BIN
      docs/classfv_1_1TupFilter__coll__graph.png
  42. 4 0
      docs/classfv_1_1TupFilter__inherit__graph.map
  43. 1 0
      docs/classfv_1_1TupFilter__inherit__graph.md5
  44. BIN
      docs/classfv_1_1TupFilter__inherit__graph.png
  45. 4 0
      docs/classfv_1_1TupFilter_a0d1078323dca5f712ee122b14bafd20b_cgraph.map
  46. 1 0
      docs/classfv_1_1TupFilter_a0d1078323dca5f712ee122b14bafd20b_cgraph.md5
  47. BIN
      docs/classfv_1_1TupFilter_a0d1078323dca5f712ee122b14bafd20b_cgraph.png
  48. 4 4
      docs/container_8hpp_source.html
  49. 1 1
      docs/dataset_8hpp_source.html
  50. 1 1
      docs/filter_8hpp_source.html
  51. 2 0
      docs/functions.html
  52. 2 0
      docs/functions_func.html
  53. 14 12
      docs/hierarchy.html
  54. 2 2
      docs/inherit_graph_18.map
  55. 1 1
      docs/inherit_graph_18.md5
  56. BIN
      docs/inherit_graph_18.png
  57. 4 3
      docs/inherit_graph_19.map
  58. 1 1
      docs/inherit_graph_19.md5
  59. BIN
      docs/inherit_graph_19.png
  60. 1 1
      docs/inherit_graph_27.map
  61. 1 1
      docs/inherit_graph_27.md5
  62. BIN
      docs/inherit_graph_27.png
  63. 11 5
      docs/inherits.html
  64. 12 6
      docs/namespacefv.html
  65. 1 1
      docs/root_2container_8hpp_source.html
  66. 1 2
      docs/search/all_11.js
  67. 1 0
      docs/search/all_5.js
  68. 1 0
      docs/search/all_d.js
  69. 1 1
      docs/search/all_e.js
  70. 2 1
      docs/search/all_f.js
  71. 1 0
      docs/search/classes_5.js
  72. 1 0
      docs/search/classes_b.js
  73. 2 1
      docs/search/classes_c.js
  74. 1 2
      docs/search/classes_e.js
  75. 1 1
      docs/search/functions_4.js
  76. 6 0
      docs/value_8hpp.html
  77. 38 34
      docs/value_8hpp_source.html
  78. 5 5
      filval/api.hpp
  79. 4 3
      filval/container.hpp
  80. 2 1
      filval/dataset.hpp
  81. 11 11
      filval/filter.hpp
  82. 64 2
      filval/value.hpp
  83. 2 2
      filval_root/container.hpp
  84. 107 32
      python/TTTT_Analysis.ipynb
  85. 83 38
      python/utils.py

+ 96 - 96
MiniTreeDoc.txt

@@ -403,19 +403,19 @@ met_jecDown_genEta                                                            :
  #    # #""""  #   #  #""""   #     m"""#    #    #""""  #   #         #      m"""#   #       #      #    #        #    #""""   """m
   "mmm" "#mm"  #   #  "#mm"   #     "mm"#    "mm  "#mm"  "#m##         #      "mm"#   #       "mm  mm#mm  "#mm"    "mm  "#mm"  "mmm"
 ------------------------------------------------------------------------------------------------------------------------------------
-nGenPart                                                                      : nGenPart/I
-GenPart_motherId                                                              : Int_t pdgId of the mother of the particle for Hard scattering particles, with ancestry and links
-GenPart_grandmotherId                                                         : Int_t pdgId of the grandmother of the particle for Hard scattering particles, with ancestry and links
-GenPart_sourceId                                                              : Int_t origin of the particle (heaviest ancestor) : 6=t, 25=h, 23/24=W/Z for Hard scattering particles, with ancestry and links
-GenPart_charge                                                                : Float_t charge for Hard scattering particles, with ancestry and links
-GenPart_status                                                                : Int_t status for Hard scattering particles, with ancestry and links
-GenPart_isPromptHard                                                          : Int_t isPromptHard for Hard scattering particles, with ancestry and links
-GenPart_pdgId                                                                 : Int_t pdgId for Hard scattering particles, with ancestry and links
-GenPart_pt                                                                    : Float_t pt for Hard scattering particles, with ancestry and links
-GenPart_eta                                                                   : Float_t eta for Hard scattering particles, with ancestry and links
-GenPart_phi                                                                   : Float_t phi for Hard scattering particles, with ancestry and links
-GenPart_mass                                                                  : Float_t mass for Hard scattering particles, with ancestry and links
-GenPart_motherIndex                                                           : Int_t index of the mother in the generatorSummary for Hard scattering particles, with ancestry and links
+nGenPart                                                                      : nGenPart/I : Hard scattering particles, with ancestry and links
+GenPart_motherId                                                              : Int_t pdgId of the mother of the particle
+GenPart_grandmotherId                                                         : Int_t pdgId of the grandmother of the particle
+GenPart_sourceId                                                              : Int_t origin of the particle (heaviest ancestor) : 6=t, 25=h, 23/24=W/Z
+GenPart_charge                                                                : Float_t charge
+GenPart_status                                                                : Int_t status
+GenPart_isPromptHard                                                          : Int_t isPromptHard
+GenPart_pdgId                                                                 : Int_t pdgId
+GenPart_pt                                                                    : Float_t pt
+GenPart_eta                                                                   : Float_t eta
+GenPart_phi                                                                   : Float_t phi
+GenPart_mass                                                                  : Float_t mass
+GenPart_motherIndex                                                           : Int_t index of the mother in the generatorSummary
 ------------------------------------------------------------------------------------------------------------------------------
   mmmm                                  #                              m    m                 m      "
  #"   "  mmm    mmm    mmm   m mm    mmm#   mmm    m mm  m   m         "m  m"  mmm    m mm  mm#mm  mmm     mmm    mmm    mmm
@@ -496,7 +496,7 @@ LepGood_relIso03                                                              :
 LepGood_relIso04                                                              : Float_t PF Rel Iso, R=0.4, pile-up corrected
 LepGood_miniRelIso                                                            : Float_t PF Rel miniRel, pile-up corrected
 LepGood_relIsoAn04                                                            : Float_t PF Activity Annulus, pile-up corrected
-LepGood_tightCharge                                                           : Int_t Tight charge criteria : for electrons, 2 if isGsfCtfScPixChargeConsistent, 1 if only isGsfScPixChargeConsistent, 0 otherwise; for muons, 2 if ptError/pt < 0.20, 0 otherwise 
+LepGood_tightCharge                                                           : Int_t Tight charge criteria : for electrons, 2 if isGsfCtfScPixChargeConsistent, 1 if only isGsfScPixChargeConsistent, 0 otherwise; for muons, 2 if ptError/pt < 0.20, 0 otherwise
 LepGood_mcMatchId                                                             : Int_t Match to source from hard scatter (pdgId of heaviest particle in chain, 25 for H, 6 for t, 23/24 for W/Z), zero if non-prompt or fake
 LepGood_mcMatchAny                                                            : Int_t Match to any final state leptons : 0 if unmatched, 1 if light flavour (including prompt), 4 if charm, 5 if bottom
 LepGood_mcMatchTau                                                            : Int_t True if the leptons comes from a tau
@@ -589,51 +589,51 @@ LepGood_jetLepAwareJEC_energy                                                 :
                                                                                      #
                                                                                      "
 -----------------------------------------------------------------------------------------------------------------------
-nDiscLep                                                                      : nDiscLep/I
-DiscLep_charge                                                                : Int_t charge for Leptons discarded in the jet-lepton cleaning
-DiscLep_tightId                                                               : Int_t POG Tight ID (for electrons it's configured in the analyzer) for Leptons discarded in the jet-lepton cleaning
-DiscLep_eleCutIdCSA14_25ns_v1                                                 : Int_t Electron cut-based id (POG CSA14_25ns_v1) : 0=none, 1=veto, 2=loose, 3=medium, 4=tight for Leptons discarded in the jet-lepton cleaning
-DiscLep_eleCutIdCSA14_50ns_v1                                                 : Int_t Electron cut-based id (POG CSA14_50ns_v1) : 0=none, 1=veto, 2=loose, 3=medium, 4=tight for Leptons discarded in the jet-lepton cleaning
-DiscLep_eleCutIdSpring15_25ns_v1                                              : Int_t Electron cut-based id (POG Spring15_25ns_v1) : 0=none, 1=veto, 2=loose, 3=medium, 4=tight for Leptons discarded in the jet-lepton cleaning
-DiscLep_dxy                                                                   : Float_t d_{xy} with respect to PV, in cm (with sign) for Leptons discarded in the jet-lepton cleaning
-DiscLep_dz                                                                    : Float_t d_{z} with respect to PV, in cm (with sign) for Leptons discarded in the jet-lepton cleaning
-DiscLep_edxy                                                                  : Float_t #sigma(d_{xy}) with respect to PV, in cm for Leptons discarded in the jet-lepton cleaning
-DiscLep_edz                                                                   : Float_t #sigma(d_{z}) with respect to PV, in cm for Leptons discarded in the jet-lepton cleaning
-DiscLep_ip3d                                                                  : Float_t d_{3d} with respect to PV, in cm (absolute value) for Leptons discarded in the jet-lepton cleaning
-DiscLep_sip3d                                                                 : Float_t S_{ip3d} with respect to PV (significance) for Leptons discarded in the jet-lepton cleaning
-DiscLep_convVeto                                                              : Int_t Conversion veto (always true for muons) for Leptons discarded in the jet-lepton cleaning
-DiscLep_lostHits                                                              : Int_t Number of lost hits on inner track for Leptons discarded in the jet-lepton cleaning
-DiscLep_relIso03                                                              : Float_t PF Rel Iso, R=0.3, pile-up corrected for Leptons discarded in the jet-lepton cleaning
-DiscLep_relIso04                                                              : Float_t PF Rel Iso, R=0.4, pile-up corrected for Leptons discarded in the jet-lepton cleaning
-DiscLep_miniRelIso                                                            : Float_t PF Rel miniRel, pile-up corrected for Leptons discarded in the jet-lepton cleaning
-DiscLep_relIsoAn04                                                            : Float_t PF Activity Annulus, pile-up corrected for Leptons discarded in the jet-lepton cleaning
-DiscLep_tightCharge                                                           : Int_t Tight charge criteria : for electrons, 2 if isGsfCtfScPixChargeConsistent, 1 if only isGsfScPixChargeConsistent, 0 otherwise; for muons, 2 if ptError/pt < 0.20, 0 otherwise  for Leptons discarded in the jet-lepton cleaning
-DiscLep_mcMatchId                                                             : Int_t Match to source from hard scatter (pdgId of heaviest particle in chain, 25 for H, 6 for t, 23/24 for W/Z), zero if non-prompt or fake for Leptons discarded in the jet-lepton cleaning
-DiscLep_mcMatchAny                                                            : Int_t Match to any final state leptons : 0 if unmatched, 1 if light flavour (including prompt), 4 if charm, 5 if bottom for Leptons discarded in the jet-lepton cleaning
-DiscLep_mcMatchTau                                                            : Int_t True if the leptons comes from a tau for Leptons discarded in the jet-lepton cleaning
-DiscLep_mcPt                                                                  : Float_t p_{T} of associated gen lepton for Leptons discarded in the jet-lepton cleaning
-DiscLep_mediumMuonId                                                          : Int_t Muon POG Medium id for Leptons discarded in the jet-lepton cleaning
-DiscLep_ICHEPsoftMuonId                                                       : Int_t Muon POG Soft id with fix for ICHEP 2016 for Leptons discarded in the jet-lepton cleaning
-DiscLep_ICHEPmediumMuonId                                                     : Int_t Muon POG Medium id with fix for ICHEP 2016 for Leptons discarded in the jet-lepton cleaning
-DiscLep_pdgId                                                                 : Int_t pdgId for Leptons discarded in the jet-lepton cleaning
-DiscLep_pt                                                                    : Float_t pt for Leptons discarded in the jet-lepton cleaning
-DiscLep_eta                                                                   : Float_t eta for Leptons discarded in the jet-lepton cleaning
-DiscLep_phi                                                                   : Float_t phi for Leptons discarded in the jet-lepton cleaning
-DiscLep_mass                                                                  : Float_t mass for Leptons discarded in the jet-lepton cleaning
-DiscLep_mvaIdSpring15                                                         : Float_t EGamma POG MVA ID for non-triggering electrons, Spring15 re-training; 1 for muons for Leptons discarded in the jet-lepton cleaning
-DiscLep_mvaTTH                                                                : Float_t Lepton MVA (TTH version) for Leptons discarded in the jet-lepton cleaning
-DiscLep_mvaSUSY                                                               : Float_t Lepton MVA (SUSY version) for Leptons discarded in the jet-lepton cleaning
-DiscLep_mvaSoftT2tt                                                           : Float_t Lepton MVA (Soft T2tt version) for Leptons discarded in the jet-lepton cleaning
-DiscLep_mvaSoftEWK                                                            : Float_t Lepton MVA (Soft EWK version) for Leptons discarded in the jet-lepton cleaning
-DiscLep_jetPtRatiov1                                                          : Float_t pt(lepton)/pt(nearest jet) for Leptons discarded in the jet-lepton cleaning
-DiscLep_jetPtRelv1                                                            : Float_t pt of the lepton transverse to the jet axis (subtracting the lepton) for Leptons discarded in the jet-lepton cleaning
-DiscLep_jetPtRatiov2                                                          : Float_t pt(lepton)/[rawpt(jet-PU-lep)*L2L3Res+pt(lepton)] for Leptons discarded in the jet-lepton cleaning
-DiscLep_jetPtRelv2                                                            : Float_t pt of the lepton transverse to the jet axis (subtracting the lepton) - v2 for Leptons discarded in the jet-lepton cleaning
-DiscLep_jetBTagCSV                                                            : Float_t CSV btag of nearest jet for Leptons discarded in the jet-lepton cleaning
-DiscLep_jetBTagCMVA                                                           : Float_t CMA btag of nearest jet for Leptons discarded in the jet-lepton cleaning
-DiscLep_jetDR                                                                 : Float_t deltaR(lepton, nearest jet) for Leptons discarded in the jet-lepton cleaning
-DiscLep_r9                                                                    : Float_t SuperCluster 5x5 r9 variable, only for electrons; -99 for muons for Leptons discarded in the jet-lepton cleaning
-DiscLep_mvaIdSpring16                                                         : Float_t EGamma POG MVA ID, Spring16; 1 for muons for Leptons discarded in the jet-lepton cleaning
+nDiscLep                                                                      : nDiscLep/I : Leptons discarded in the jet-lepton cleaning
+DiscLep_charge                                                                : Int_t charge
+DiscLep_tightId                                                               : Int_t POG Tight ID (for electrons it's configured in the analyzer)
+DiscLep_eleCutIdCSA14_25ns_v1                                                 : Int_t Electron cut-based id (POG CSA14_25ns_v1) : 0=none, 1=veto, 2=loose, 3=medium, 4=tight
+DiscLep_eleCutIdCSA14_50ns_v1                                                 : Int_t Electron cut-based id (POG CSA14_50ns_v1) : 0=none, 1=veto, 2=loose, 3=medium, 4=tight
+DiscLep_eleCutIdSpring15_25ns_v1                                              : Int_t Electron cut-based id (POG Spring15_25ns_v1) : 0=none, 1=veto, 2=loose, 3=medium, 4=tight
+DiscLep_dxy                                                                   : Float_t d_{xy} with respect to PV, in cm (with sign)
+DiscLep_dz                                                                    : Float_t d_{z} with respect to PV, in cm (with sign)
+DiscLep_edxy                                                                  : Float_t #sigma(d_{xy}) with respect to PV, in cm
+DiscLep_edz                                                                   : Float_t #sigma(d_{z}) with respect to PV, in cm
+DiscLep_ip3d                                                                  : Float_t d_{3d} with respect to PV, in cm (absolute value)
+DiscLep_sip3d                                                                 : Float_t S_{ip3d} with respect to PV (significance)
+DiscLep_convVeto                                                              : Int_t Conversion veto (always true for muons)
+DiscLep_lostHits                                                              : Int_t Number of lost hits on inner track
+DiscLep_relIso03                                                              : Float_t PF Rel Iso, R=0.3, pile-up corrected
+DiscLep_relIso04                                                              : Float_t PF Rel Iso, R=0.4, pile-up corrected
+DiscLep_miniRelIso                                                            : Float_t PF Rel miniRel, pile-up corrected
+DiscLep_relIsoAn04                                                            : Float_t PF Activity Annulus, pile-up corrected
+DiscLep_tightCharge                                                           : Int_t Tight charge criteria : for electrons, 2 if isGsfCtfScPixChargeConsistent, 1 if only isGsfScPixChargeConsistent, 0 otherwise; for muons, 2 if ptError/pt < 0.20, 0 otherwise
+DiscLep_mcMatchId                                                             : Int_t Match to source from hard scatter (pdgId of heaviest particle in chain, 25 for H, 6 for t, 23/24 for W/Z), zero if non-prompt or fake
+DiscLep_mcMatchAny                                                            : Int_t Match to any final state leptons : 0 if unmatched, 1 if light flavour (including prompt), 4 if charm, 5 if bottom
+DiscLep_mcMatchTau                                                            : Int_t True if the leptons comes from a tau
+DiscLep_mcPt                                                                  : Float_t p_{T} of associated gen lepton
+DiscLep_mediumMuonId                                                          : Int_t Muon POG Medium id
+DiscLep_ICHEPsoftMuonId                                                       : Int_t Muon POG Soft id with fix for ICHEP 2016
+DiscLep_ICHEPmediumMuonId                                                     : Int_t Muon POG Medium id with fix for ICHEP 2016
+DiscLep_pdgId                                                                 : Int_t pdgId
+DiscLep_pt                                                                    : Float_t pt
+DiscLep_eta                                                                   : Float_t eta
+DiscLep_phi                                                                   : Float_t phi
+DiscLep_mass                                                                  : Float_t mass
+DiscLep_mvaIdSpring15                                                         : Float_t EGamma POG MVA ID for non-triggering electrons, Spring15 re-training; 1 for muons
+DiscLep_mvaTTH                                                                : Float_t Lepton MVA (TTH version)
+DiscLep_mvaSUSY                                                               : Float_t Lepton MVA (SUSY version)
+DiscLep_mvaSoftT2tt                                                           : Float_t Lepton MVA (Soft T2tt version)
+DiscLep_mvaSoftEWK                                                            : Float_t Lepton MVA (Soft EWK version)
+DiscLep_jetPtRatiov1                                                          : Float_t pt(lepton)/pt(nearest jet)
+DiscLep_jetPtRelv1                                                            : Float_t pt of the lepton transverse to the jet axis (subtracting the lepton)
+DiscLep_jetPtRatiov2                                                          : Float_t pt(lepton)/[rawpt(jet-PU-lep)*L2L3Res+pt(lepton)]
+DiscLep_jetPtRelv2                                                            : Float_t pt of the lepton transverse to the jet axis (subtracting the lepton) - v2
+DiscLep_jetBTagCSV                                                            : Float_t CSV btag of nearest jet
+DiscLep_jetBTagCMVA                                                           : Float_t CMA btag of nearest jet
+DiscLep_jetDR                                                                 : Float_t deltaR(lepton, nearest jet)
+DiscLep_r9                                                                    : Float_t SuperCluster 5x5 r9 variable, only for electrons; -99 for muons
+DiscLep_mvaIdSpring16                                                         : Float_t EGamma POG MVA ID, Spring16; 1 for muons
 ------------------------------------------------------------------------------------------
   mmmm    m    #                           m                      m
  m"  "m mm#mm  # mm    mmm    m mm         #       mmm   mmmm   mm#mm   mmm   m mm    mmm
@@ -661,7 +661,7 @@ LepOther_relIso03                                                             :
 LepOther_relIso04                                                             : Float_t PF Rel Iso, R=0.4, pile-up corrected
 LepOther_miniRelIso                                                           : Float_t PF Rel miniRel, pile-up corrected
 LepOther_relIsoAn04                                                           : Float_t PF Activity Annulus, pile-up corrected
-LepOther_tightCharge                                                          : Int_t Tight charge criteria : for electrons, 2 if isGsfCtfScPixChargeConsistent, 1 if only isGsfScPixChargeConsistent, 0 otherwise; for muons, 2 if ptError/pt < 0.20, 0 otherwise 
+LepOther_tightCharge                                                          : Int_t Tight charge criteria : for electrons, 2 if isGsfCtfScPixChargeConsistent, 1 if only isGsfScPixChargeConsistent, 0 otherwise; for muons, 2 if ptError/pt < 0.20, 0 otherwise
 LepOther_mcMatchId                                                            : Int_t Match to source from hard scatter (pdgId of heaviest particle in chain, 25 for H, 6 for t, 23/24 for W/Z), zero if non-prompt or fake
 LepOther_mcMatchAny                                                           : Int_t Match to any final state leptons : 0 if unmatched, 1 if light flavour (including prompt), 4 if charm, 5 if bottom
 LepOther_mcMatchTau                                                           : Int_t True if the leptons comes from a tau
@@ -880,9 +880,9 @@ GenTop_isPromptHard                                                           :
  "mmm"  "#mm"    "mm  "mmm"
 ---------------------------
 nJet                                                                          : nJet/I : Cental jets after full selection and cleaning, sorted by pt
-Jet_mcMatchFlav                                                               : Int_t Flavour of associated parton from hard scatter (if any) 
+Jet_mcMatchFlav                                                               : Int_t Flavour of associated parton from hard scatter (if any)
 Jet_charge                                                                    : Float_t Jet charge
-Jet_ctagCsvL                                                                  : Float_t CsvL discriminator 
+Jet_ctagCsvL                                                                  : Float_t CsvL discriminator
 Jet_ctagCsvB                                                                  : Float_t CsvB discriminator
 Jet_area                                                                      : Float_t Catchment area of jet
 Jet_qgl                                                                       : Float_t QG Likelihood
@@ -1035,41 +1035,41 @@ FatJet_nSubJets                                                               :
 -------------------------------------------------------------------------------------------------
 nDiscJet                                                                      : nDiscJet/I Jets discarded in the jet-lepton cleaning
 DiscJet_mcMatchFlav                                                           : Int_t Flavour of associated parton from hard scatter (if any)
-DiscJet_charge                                                                : Float_t Jet charge 
-DiscJet_ctagCsvL                                                              : Float_t CsvL discriminator 
-DiscJet_ctagCsvB                                                              : Float_t CsvB discriminator 
-DiscJet_area                                                                  : Float_t Catchment area of jet 
-DiscJet_qgl                                                                   : Float_t QG Likelihood 
-DiscJet_ptd                                                                   : Float_t QG input variable, ptD 
-DiscJet_axis2                                                                 : Float_t QG input variable, axis2 
-DiscJet_mult                                                                  : Int_t QG input variable, total multiplicity 
-DiscJet_partonId                                                              : Int_t parton flavour (manually matching to status 23 particles) 
-DiscJet_partonMotherId                                                        : Int_t parton flavour (manually matching to status 23 particles) 
-DiscJet_nLeptons                                                              : Float_t Number of associated leptons 
-DiscJet_id                                                                    : Int_t POG Loose jet ID 
+DiscJet_charge                                                                : Float_t Jet charge
+DiscJet_ctagCsvL                                                              : Float_t CsvL discriminator
+DiscJet_ctagCsvB                                                              : Float_t CsvB discriminator
+DiscJet_area                                                                  : Float_t Catchment area of jet
+DiscJet_qgl                                                                   : Float_t QG Likelihood
+DiscJet_ptd                                                                   : Float_t QG input variable, ptD
+DiscJet_axis2                                                                 : Float_t QG input variable, axis2
+DiscJet_mult                                                                  : Int_t QG input variable, total multiplicity
+DiscJet_partonId                                                              : Int_t parton flavour (manually matching to status 23 particles)
+DiscJet_partonMotherId                                                        : Int_t parton flavour (manually matching to status 23 particles)
+DiscJet_nLeptons                                                              : Float_t Number of associated leptons
+DiscJet_id                                                                    : Int_t POG Loose jet ID
 DiscJet_puId                                                                  : Int_t puId (full MVA, loose WP, 5.3.X training on AK5PFchs, the only thing that is available now)
-DiscJet_btagCSV                                                               : Float_t CSV-IVF v2 discriminator 
-DiscJet_btagCMVA                                                              : Float_t CMVA discriminator 
-DiscJet_rawPt                                                                 : Float_t p_{T} before JEC 
-DiscJet_mcPt                                                                  : Float_t p_{T} of associated gen jet 
-DiscJet_mcFlavour                                                             : Int_t parton flavour (physics definition, i.e. including b's from shower) 
-DiscJet_partonFlavour                                                         : Int_t purely parton-based flavour 
-DiscJet_hadronFlavour                                                         : Int_t hadron flavour (ghost matching to B/C hadrons) 
-DiscJet_mcMatchId                                                             : Int_t Match to source from hard scatter (pdgId of heaviest particle in chain, 25 for H, 6 for t, 23/24 for W/Z), zero if non-prompt or fake 
-DiscJet_corr_JECUp                                                            : Float_t corr_JECUp 
-DiscJet_corr_JECDown                                                          : Float_t corr_JECDown 
-DiscJet_corr                                                                  : Float_t corr 
-DiscJet_corr_JERUp                                                            : Float_t corr_JERUp 
-DiscJet_corr_JERDown                                                          : Float_t corr_JERDown 
-DiscJet_corr_JER                                                              : Float_t corr_JER 
-DiscJet_pt                                                                    : Float_t pt 
-DiscJet_eta                                                                   : Float_t eta 
-DiscJet_phi                                                                   : Float_t phi 
-DiscJet_mass                                                                  : Float_t mass 
-DiscJet_CorrFactor_L1                                                         : Float_t L1 correction factor 
-DiscJet_CorrFactor_L1L2                                                       : Float_t L1L2 correction factor 
-DiscJet_CorrFactor_L1L2L3                                                     : Float_t L1L2L3 correction factor 
-DiscJet_CorrFactor_L1L2L3Res                                                  : Float_t L1L2L3Res correction factor 
+DiscJet_btagCSV                                                               : Float_t CSV-IVF v2 discriminator
+DiscJet_btagCMVA                                                              : Float_t CMVA discriminator
+DiscJet_rawPt                                                                 : Float_t p_{T} before JEC
+DiscJet_mcPt                                                                  : Float_t p_{T} of associated gen jet
+DiscJet_mcFlavour                                                             : Int_t parton flavour (physics definition, i.e. including b's from shower)
+DiscJet_partonFlavour                                                         : Int_t purely parton-based flavour
+DiscJet_hadronFlavour                                                         : Int_t hadron flavour (ghost matching to B/C hadrons)
+DiscJet_mcMatchId                                                             : Int_t Match to source from hard scatter (pdgId of heaviest particle in chain, 25 for H, 6 for t, 23/24 for W/Z), zero if non-prompt or fake
+DiscJet_corr_JECUp                                                            : Float_t corr_JECUp
+DiscJet_corr_JECDown                                                          : Float_t corr_JECDown
+DiscJet_corr                                                                  : Float_t corr
+DiscJet_corr_JERUp                                                            : Float_t corr_JERUp
+DiscJet_corr_JERDown                                                          : Float_t corr_JERDown
+DiscJet_corr_JER                                                              : Float_t corr_JER
+DiscJet_pt                                                                    : Float_t pt
+DiscJet_eta                                                                   : Float_t eta
+DiscJet_phi                                                                   : Float_t phi
+DiscJet_mass                                                                  : Float_t mass
+DiscJet_CorrFactor_L1                                                         : Float_t L1 correction factor
+DiscJet_CorrFactor_L1L2                                                       : Float_t L1L2 correction factor
+DiscJet_CorrFactor_L1L2L3                                                     : Float_t L1L2L3 correction factor
+DiscJet_CorrFactor_L1L2L3Res                                                  : Float_t L1L2L3Res correction factor
 nDiscJet_jecDown                                                              : nDiscJet_jecDown/I
 DiscJet_jecDown_mcMatchFlav                                                   : Int_t Flavour of associated parton from hard scatter (if any)  (JEC -1sigma)
 DiscJet_jecDown_charge                                                        : Float_t Jet charge  (JEC -1sigma)

+ 96 - 52
analysis/TTTT_Analysis.cpp

@@ -45,6 +45,8 @@
 #include "MiniTreeDataSet.hpp"
 #include <TSystem.h>
 
+#define PI 3.14159
+
 using namespace std;
 using namespace fv;
 using namespace fv::root;
@@ -53,6 +55,7 @@ void enable_branches(MiniTreeDataSet& mt){
     mt.fChain->SetBranchStatus("*", false);
 
     mt.track_branch<int>("nLepGood");
+    mt.track_branch_vec< int >("nLepGood", "LepGood_pdgId");
     mt.track_branch_vec<float>("nLepGood", "LepGood_pt");
     mt.track_branch_vec<float>("nLepGood", "LepGood_eta");
     mt.track_branch_vec<float>("nLepGood", "LepGood_phi");
@@ -71,51 +74,34 @@ void enable_branches(MiniTreeDataSet& mt){
     mt.track_branch_vec<float>("nJet", "Jet_mass");
     mt.track_branch_vec<float>("nJet", "Jet_btagCMVA");
 
-    mt.track_branch<int>("nGenTop");
-    mt.track_branch_vec<int>("nGenTop", "GenTop_pdgId");
-    mt.track_branch_vec<float>("nGenTop", "GenTop_pt");
 
     mt.track_branch<int>("nGenPart");
-    mt.track_branch_vec<int>("nGenPart", "GenPart_pdgId");
-    mt.track_branch_vec<int>("nGenPart", "GenPart_motherIndex");
-    mt.track_branch_vec<int>("nGenPart", "GenPart_motherId");
+    mt.track_branch_vec< int >("nGenPart", "GenPart_pdgId");
+    mt.track_branch_vec< int >("nGenPart", "GenPart_motherIndex");
+    mt.track_branch_vec< int >("nGenPart", "GenPart_motherId");
     mt.track_branch_vec<float>("nGenPart", "GenPart_pt");
     mt.track_branch_vec<float>("nGenPart", "GenPart_eta");
     mt.track_branch_vec<float>("nGenPart", "GenPart_phi");
     mt.track_branch_vec<float>("nGenPart", "GenPart_mass");
+    mt.track_branch_vec< int >("nGenPart", "GenPart_status");
 
     mt.track_branch<int>("nBJetLoose40");
     mt.track_branch<int>("nBJetMedium40");
     mt.track_branch<int>("nBJetTight40");
 
 
-    mt.track_branch<int>("ngenLep");
-    mt.track_branch_vec<int>("ngenLep", "genLep_sourceId");
-    mt.track_branch_vec<float>("ngenLep", "genLep_pt");
-
     mt.track_branch<int>("nVert");
 }
 
 
 void declare_values(MiniTreeDataSet& mt){
 
-
-    auto& add = GenFunction::register_function<int(int,int)>("add",
-        FUNC(([](int a, int b){
-            return a + b;
-        })));
-    auto& sub = GenFunction::register_function<int(int,int)>("sub",
-        FUNC(([](int a, int b){
-            return a - b;
-        })));
-    auto loose_medium = fv::tuple<int,int>(lookup<int>("nBJetLoose40"), lookup<int>("nBJetMedium40"));
-    apply(add,loose_medium, "looseplusmedium");
-    apply(sub,loose_medium, "looseminusmedium");
-
     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");
 
     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");
 
     max<float>("LepGood_energy", "LepGood_energy_max");
     min<float>("LepGood_energy", "LepGood_energy_min");
@@ -123,30 +109,56 @@ void declare_values(MiniTreeDataSet& mt){
     mean<float>("LepGood_energy", "LepGood_energy_mean");
 
     count<float>(GenFunction::register_function<bool(float)>("bJet_Selection", FUNC(([](float x){return x>0;}))),
-                     "Jet_btagCMVA",  "b_jet_count");
+                                                             "Jet_btagCMVA",  "b_jet_count");
+
+    auto &is_electron = GenFunction::register_function<bool(int)>("is_electron", FUNC(([](int pdgId)
+        {
+            return abs(pdgId) == 11;
+        })));
+    auto &is_muon = GenFunction::register_function<bool(int)>("is_muon", FUNC(([](int pdgId)
+        {
+            return abs(pdgId) == 13;
+        })));
+    auto &is_lepton = GenFunction::register_function<bool(int)>("is_lepton", FUNC(([ie=&is_electron, im=&is_muon](int pdgId)
+        {
+            return (*ie)(pdgId) || (*im)(pdgId);
+        })));
+
+    count<int>(is_electron, "GenPart_pdgId", "genEle_count");
+    count<int>(is_muon,     "GenPart_pdgId", "genMu_count");
+    count<int>(is_lepton,   "GenPart_pdgId", "genLep_count");
 
-    filter("trilepton", FUNC(([nLepGood=lookup<int>("nLepGood")](){
-                return dynamic_cast<Value<int>*>(nLepGood)->get_value() == 3;})));
+    count<int>(is_electron, "LepGood_pdgId", "recEle_count");
+    count<int>(is_muon,     "LepGood_pdgId", "recMu_count");
+    count<int>(is_lepton,   "LepGood_pdgId", "recLep_count");
 
-    filter("os-dilepton", FUNC(([LepGood_charge=lookup<vector<int>>("LepGood_charge")](){
-               auto& charges = LepGood_charge->get_value();
-               return charges.size()==2 && (charges[0] != charges[1]);})));
 
-    filter("ss-dilepton", FUNC(([LepGood_charge=lookup<vector<int>>("LepGood_charge")](){
-               auto& charges = LepGood_charge->get_value();
-               return charges.size()==2 && (charges[0] == charges[1]); })));
+    fv::pair<int, int>("genEle_count", "recEle_count", "genEle_count_v_recEle_count");
+    fv::pair<int, int>("genMu_count", "recMu_count", "genMu_count_v_recMu_count");
+    fv::pair<int, int>("genLep_count", "recLep_count", "genLep_count_v_recLep_count");
+
+    obs_filter("trilepton", FUNC(([nLepGood=lookup<int>("nLepGood")]()
+        {
+            return dynamic_cast<Value<int>*>(nLepGood)->get_value() == 3;
+        })));
+
+    obs_filter("os-dilepton", FUNC(([LepGood_charge=lookup<vector<int>>("LepGood_charge")]()
+        {
+            auto& charges = LepGood_charge->get_value();
+            return charges.size()==2 && (charges[0] != charges[1]);
+        })));
+
+    obs_filter("ss-dilepton", FUNC(([LepGood_charge=lookup<vector<int>>("LepGood_charge")]()
+        {
+            auto& charges = LepGood_charge->get_value();
+            return charges.size()==2 && (charges[0] == charges[1]);
+        })));
 
 }
 
 void declare_containers(MiniTreeDataSet& mt){
 
-    mt.register_container(new ContainerTH1<int>("loose", "Loose", lookup<int>("nBJetLoose40"), 10, 0, 10));
-    mt.register_container(new ContainerTH1<int>("medium", "Medium", lookup<int>("nBJetMedium40"), 10, 0, 10));
-    mt.register_container(new ContainerTH1<int>("looseplusmedium", "Loose + Medium", lookup<int>("looseplusmedium"), 10, 0, 10));
-    mt.register_container(new ContainerTH1<int>("looseminusmedium", "Loose - Medium", lookup<int>("looseminusmedium"), 10, -5, 5));
-
     mt.register_container(new ContainerTH1<int>("lepton_count", "Lepton Multiplicity", lookup<int>("nLepGood"), 8, 0, 8));
-    mt.register_container(new ContainerTH1<int>("top_quark_count", "Top Quark Multiplicity", lookup<int>("nGenTop"), 8, 0, 8));
 
     mt.register_container(new ContainerTH1Many<float>("LepGood_energy_all", "Lepton Energy - All",
                                                       lookup<vector<float>>("LepGood_energy"), 50, 0, 500));
@@ -160,40 +172,72 @@ void declare_containers(MiniTreeDataSet& mt){
                                                   lookup<float>("LepGood_energy_range"), 50, 0, 500,
                                                   "Lepton Energy Range(GeV)"));
 
-
-    mt.register_container(new ContainerTGraph("nLepvsnJet", "Number of Leptons vs Number of Jets",
-                                              fv::pair<int, int>("nLepGood", "nJet") ));
+    mt.register_container(new ContainerTH1Many<float>("Jet_pt", "Jet P_T",
+                                                      lookup<vector<float>>("Jet_pt"), 50, 0, 500,
+                                                      "Jet P_T"));
+    mt.register_container(new ContainerTH1Many<float>("Jet_eta", "Jet Eta",
+                                                      lookup<vector<float>>("Jet_eta"), 50, -3, 3,
+                                                      "Jet Eta"));
+    mt.register_container(new ContainerTH1Many<float>("Jet_phi", "Jet Phi",
+                                                      lookup<vector<float>>("Jet_phi"), 20, -PI, PI,
+                                                      "Jet Phi"));
+    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>("Jet_energy", "Jet Energy",
+                                                      lookup<vector<float>>("Jet_energy"), 100, 0, 400,
+                                                      "Jet Energy"));
+    mt.register_container(new ContainerTH2Many<float>("Jet_energy_vs_Jet_eta", "Jet Energy vs Jet Eta",
+                                                      lookup<std::pair<vector<float>, vector<float>>>("Jet_energy_vs_Jet_eta"),
+                                                      100, 0, 400, 50, -3, 3,
+                                                      "Jet Energy", "Jet Eta"));
+
+    mt.register_container(new ContainerTH2<int>("nLepvsnJet", "Number of Leptons vs Number of Jets",
+                                              fv::pair<int, int>("nLepGood", "nJet"),
+                                              7, 0, 7, 20, 0, 20,
+                                              "Number of Leptons", "Number of Jets"));
 
     mt.register_container(new ContainerTH2Many<float>("LepGood_energy_vs_pt", "Lepton Energy vs Lepton Pt",
                                                       lookup<std::pair<std::vector<float>,std::vector<float>>>("LepGood_energy_LepGood_pt"),
                                                       50, 0, 500, 50, 0, 500,
                                                       "lepton energy","lepton Pt"));
 
-    mt.register_container(new ContainerTH1<int>("b_jet_count", "B-Jet Multiplicity", lookup<int>("b_jet_count"), 10, 0, 10));
+    mt.register_container(new ContainerTH2<int>("genEle_count_v_recEle_count", "Number of Generated Electrons v. Number of Reconstructed Electrons",
+                                                lookup<std::pair<int,int>>("genEle_count_v_recEle_count"),
+                                                10, 0, 10, 10, 0, 10,
+                                                "Generated Electrons","Reconstructed Electrons"));
 
+    mt.register_container(new ContainerTH2<int>("genMu_count_v_recMu_count", "Number of Generated Muons v. Number of Reconstructed Muons",
+                                                lookup<std::pair<int,int>>("genMu_count_v_recMu_count"),
+                                                10, 0, 10, 10, 0, 10,
+                                                "Generated Muons","Reconstructed Muons"));
 
-    mt.register_container(new ContainerTH1<int>("jet_count_os_dilepton", "Jet Multiplicity - OS Dilepton Events", lookup<int>("nJet"), 14, 0, 14));
-    mt.get_container("jet_count_os_dilepton")->add_filter(lookup_filter("os-dilepton"));
+    mt.register_container(new ContainerTH2<int>("genLep_count_v_recLep_count", "Number of Generated Leptons v. Number of Reconstructed Leptons (e & mu only)",
+                                                lookup<std::pair<int,int>>("genLep_count_v_recLep_count"),
+                                                10, 0, 10, 10, 0, 10,
+                                                "Generated Leptons","Reconstructed Leptons"));
+
+    mt.register_container(new ContainerTH1<int>("b_jet_count", "B-Jet Multiplicity", lookup<int>("b_jet_count"), 10, 0, 10));
 
-    mt.register_container(new ContainerTH1<int>("jet_count_ss_dilepton", "Jet Multiplicity - SS Dilepton Events", lookup<int>("nJet"), 14, 0, 14));
-    mt.get_container("jet_count_ss_dilepton")->add_filter(lookup_filter("ss-dilepton"));
 
-    mt.register_container(new ContainerTH1<int>("jet_count_trilepton", "Jet Multiplicity - Trilepton Events", lookup<int>("nJet"), 14, 0, 14));
-    mt.get_container("jet_count_trilepton")->add_filter(lookup_filter("trilepton"));
+    mt.register_container(new ContainerTH1<int>("jet_count_os_dilepton", "Jet Multiplicity - OS Dilepton Events",
+                                                lookup<int>("nJet"), 14, 0, 14))->add_filter(lookup_obs_filter("os-dilepton"));
+    mt.register_container(new ContainerTH1<int>("jet_count_ss_dilepton", "Jet Multiplicity - SS Dilepton Events",
+                                                lookup<int>("nJet"), 14, 0, 14))->add_filter(lookup_obs_filter("ss-dilepton"));
+    mt.register_container(new ContainerTH1<int>("jet_count_trilepton", "Jet Multiplicity - Trilepton Events",
+                                                lookup<int>("nJet"), 14, 0, 14))->add_filter(lookup_obs_filter("trilepton"));
 
-    mt.register_container(new ContainerTH1<int>("primary_vert_count", "Number of Primary Vertices", lookup<int>("nVert"), 50, 0, 50));
+    mt.register_container(new ContainerTH1<int>("nVert", "Number of Primary Vertices", lookup<int>("nVert"), 50, 0, 50));
 
-    mt.register_container(new CounterMany<int>("GenTop_pdgId_counter", lookup<vector<int>>("GenTop_pdgId")));
     mt.register_container(new CounterMany<int>("GenPart_pdgId_counter", lookup<vector<int>>("GenPart_pdgId")));
 
-    mt.register_container(new Vector<vector< int >>("GenTop_pdgId", lookup<vector< int >>("GenTop_pdgId")));
-    mt.register_container(new Vector<vector<float>>("GenTop_pt",    lookup<vector<float>>("GenTop_pt")));
 
     mt.register_container(new Vector<vector< int >>("GenPart_pdgId",          lookup<vector< int >>("GenPart_pdgId")));
     mt.register_container(new Vector<vector< int >>("GenPart_motherIndex",    lookup<vector< int >>("GenPart_motherIndex")));
     mt.register_container(new Vector<vector< int >>("GenPart_motherId",       lookup<vector< int >>("GenPart_motherId")));
     mt.register_container(new Vector<vector<float>>("GenPart_pt",             lookup<vector<float>>("GenPart_pt")));
     mt.register_container(new Vector<vector<float>>("GenPart_energy",         lookup<vector<float>>("GenPart_energy")));
+    mt.register_container(new Vector<vector< int >>("GenPart_status",         lookup<vector< int >>("GenPart_status")));
 
     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")));

+ 1 - 1
cmake/convert_nb

@@ -8,7 +8,7 @@ then
     echo "Usage: $0 [nbconvert-exe] [output_directory] (--update)"
     exit 0
 fi
-if [ $# -eq 3 ] && [ $3 -eq "--update" ]
+if [ "$#" -eq 3 ] && [ "$3" == "--update" ]
 then
     exec_opt="--ExecutePreprocessor.enabled=True"
 else

File diff suppressed because it is too large
+ 4 - 4
docs/MiniTreeDataSet_8hpp_source.html


File diff suppressed because it is too large
+ 5198 - 1591
docs/TTTT_Analysis.html


+ 7 - 0
docs/TTTT__Analysis_8cpp.html

@@ -64,6 +64,7 @@ $(function() {
 </div><!-- top -->
 <div class="header">
   <div class="summary">
+<a href="#define-members">Macros</a> &#124;
 <a href="#func-members">Functions</a>  </div>
   <div class="headertitle">
 <div class="title">TTTT_Analysis.cpp File Reference</div>  </div>
@@ -99,6 +100,12 @@ Include dependency graph for TTTT_Analysis.cpp:</div>
 </map>
 </div>
 </div><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
+Macros</h2></td></tr>
+<tr class="memitem:a598a3330b3c21701223ee0ca14316eca"><td class="memItemLeft" align="right" valign="top"><a id="a598a3330b3c21701223ee0ca14316eca"></a>
+#define&#160;</td><td class="memItemRight" valign="bottom"><b>PI</b>&#160;&#160;&#160;3.14159</td></tr>
+<tr class="separator:a598a3330b3c21701223ee0ca14316eca"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
 Functions</h2></td></tr>
 <tr class="memitem:a61440582853f695f95e3ae079ca9557d"><td class="memItemLeft" align="right" valign="top"><a id="a61440582853f695f95e3ae079ca9557d"></a>

+ 21 - 19
docs/annotated.html

@@ -77,25 +77,27 @@ $(function() {
 <tr id="row_0_6_"><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_1Count.html" target="_self">Count</a></td><td class="desc">Returns the count of elements in the input vector passing a test function </td></tr>
 <tr id="row_0_7_" 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">DerivedValue</a></td><td class="desc">A <a class="el" href="classfv_1_1Value.html" title="A generic value. ">Value</a> derived from some other Values, not directly from the dataset </td></tr>
 <tr id="row_0_8_"><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_1ElementOf.html" target="_self">ElementOf</a></td><td class="desc">Extract the element at a specific index from a vector </td></tr>
-<tr id="row_0_9_" 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_1Function_3_01R_07ArgTypes_8_8_8_08_4.html" target="_self">Function&lt; R(ArgTypes...)&gt;</a></td><td class="desc">In order to enable proper provenance tracking, and at the same time keep the ability to embed functions into values, the Function class should be used </td></tr>
-<tr id="row_0_10_"><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_1GenContainer.html" target="_self">GenContainer</a></td><td class="desc">Generic, untyped parent class of <a class="el" href="classfv_1_1Container.html" title="A class that is used to &quot;hold&quot; values. ">Container</a> </td></tr>
-<tr id="row_0_11_" 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_1GenFunction.html" target="_self">GenFunction</a></td><td class="desc">Parent class to all Function classes </td></tr>
-<tr id="row_0_12_"><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_1Map_3_01Ret_07ArgTypes_8_8_8_08_4.html" target="_self">Map&lt; Ret(ArgTypes...)&gt;</a></td><td class="desc">Maps a function over an input vector </td></tr>
-<tr id="row_0_13_" 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_1Max.html" target="_self">Max</a></td><td class="desc">Find and return the maximum value of a vector </td></tr>
-<tr id="row_0_14_"><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_1MaxIndex.html" target="_self">MaxIndex</a></td><td class="desc">Find and return the maximum value of a vector and its index </td></tr>
-<tr id="row_0_15_" 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_1Mean.html" target="_self">Mean</a></td><td class="desc">Calculate the mean value of a vector </td></tr>
-<tr id="row_0_16_"><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_1Min.html" target="_self">Min</a></td><td class="desc">Find and return the minimum value of a vector </td></tr>
-<tr id="row_0_17_" 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_1MinIndex.html" target="_self">MinIndex</a></td><td class="desc">Find and return the minimum value of a vector and its index </td></tr>
-<tr id="row_0_18_"><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_1ObservedValue.html" target="_self">ObservedValue</a></td><td class="desc">A value supplied by the dataset, not derived </td></tr>
-<tr id="row_0_19_" 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_1Pair.html" target="_self">Pair</a></td><td class="desc">Creates a std::pair type from a two other <a class="el" href="classfv_1_1Value.html" title="A generic value. ">Value</a> objects </td></tr>
-<tr id="row_0_20_"><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_1PointerValue.html" target="_self">PointerValue</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_0_21_" 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_1Range.html" target="_self">Range</a></td><td class="desc">Calculate the range of the values in a vector </td></tr>
-<tr id="row_0_22_"><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_1Reduce.html" target="_self">Reduce</a></td><td class="desc"><a class="el" href="classfv_1_1Reduce.html" title="Reduce a Value of type vector&lt;T&gt; to just a T. ">Reduce</a> a <a class="el" href="classfv_1_1Value.html" title="A generic value. ">Value</a> of type vector&lt;T&gt; to just a T </td></tr>
-<tr id="row_0_23_" 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_1ReduceIndex.html" target="_self">ReduceIndex</a></td><td class="desc">Similar to <a class="el" href="classfv_1_1Reduce.html" title="Reduce a Value of type vector&lt;T&gt; to just a T. ">Reduce</a>, but returns a pair of a T and an int </td></tr>
-<tr id="row_0_24_"><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_1Tuple.html" target="_self">Tuple</a></td><td class="desc">Takes a series of <a class="el" href="classfv_1_1Value.html" title="A generic value. ">Value</a> objects and bundles them together into a std::tuple object </td></tr>
-<tr id="row_0_25_" 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_1Value.html" target="_self">Value</a></td><td class="desc">A generic value </td></tr>
-<tr id="row_0_26_"><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_1WrapperVector.html" target="_self">WrapperVector</a></td><td class="desc">A std::vector wrapper around a C-style array </td></tr>
-<tr id="row_0_27_" 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_1Zip.html" target="_self">Zip</a></td><td class="desc">Zips a series of vectors together </td></tr>
+<tr id="row_0_9_" 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_1Filter.html" target="_self">Filter</a></td><td class="desc">Returns the elements in a vector that pass a test function </td></tr>
+<tr id="row_0_10_"><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_1Function_3_01R_07ArgTypes_8_8_8_08_4.html" target="_self">Function&lt; R(ArgTypes...)&gt;</a></td><td class="desc">In order to enable proper provenance tracking, and at the same time keep the ability to embed functions into values, the Function class should be used </td></tr>
+<tr id="row_0_11_" 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_1GenContainer.html" target="_self">GenContainer</a></td><td class="desc">Generic, untyped parent class of <a class="el" href="classfv_1_1Container.html" title="A class that is used to &quot;hold&quot; values. ">Container</a> </td></tr>
+<tr id="row_0_12_"><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_1GenFunction.html" target="_self">GenFunction</a></td><td class="desc">Parent class to all Function classes </td></tr>
+<tr id="row_0_13_" 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_1Map_3_01Ret_07ArgTypes_8_8_8_08_4.html" target="_self">Map&lt; Ret(ArgTypes...)&gt;</a></td><td class="desc">Maps a function over an input vector </td></tr>
+<tr id="row_0_14_"><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_1Max.html" target="_self">Max</a></td><td class="desc">Find and return the maximum value of a vector </td></tr>
+<tr id="row_0_15_" 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_1MaxIndex.html" target="_self">MaxIndex</a></td><td class="desc">Find and return the maximum value of a vector and its index </td></tr>
+<tr id="row_0_16_"><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_1Mean.html" target="_self">Mean</a></td><td class="desc">Calculate the mean value of a vector </td></tr>
+<tr id="row_0_17_" 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_1Min.html" target="_self">Min</a></td><td class="desc">Find and return the minimum value of a vector </td></tr>
+<tr id="row_0_18_"><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_1MinIndex.html" target="_self">MinIndex</a></td><td class="desc">Find and return the minimum value of a vector and its index </td></tr>
+<tr id="row_0_19_" 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_1ObservedValue.html" target="_self">ObservedValue</a></td><td class="desc">A value supplied by the dataset, not derived </td></tr>
+<tr id="row_0_20_"><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_1Pair.html" target="_self">Pair</a></td><td class="desc">Creates a std::pair type from a two other <a class="el" href="classfv_1_1Value.html" title="A generic value. ">Value</a> objects </td></tr>
+<tr id="row_0_21_" 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_1PointerValue.html" target="_self">PointerValue</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_0_22_"><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_1Range.html" target="_self">Range</a></td><td class="desc">Calculate the range of the values in a vector </td></tr>
+<tr id="row_0_23_" 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_1Reduce.html" target="_self">Reduce</a></td><td class="desc"><a class="el" href="classfv_1_1Reduce.html" title="Reduce a Value of type vector&lt;T&gt; to just a T. ">Reduce</a> a <a class="el" href="classfv_1_1Value.html" title="A generic value. ">Value</a> of type vector&lt;T&gt; to just a T </td></tr>
+<tr id="row_0_24_"><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_1ReduceIndex.html" target="_self">ReduceIndex</a></td><td class="desc">Similar to <a class="el" href="classfv_1_1Reduce.html" title="Reduce a Value of type vector&lt;T&gt; to just a T. ">Reduce</a>, but returns a pair of a T and an int </td></tr>
+<tr id="row_0_25_" 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_1TupFilter.html" target="_self">TupFilter</a></td><td class="desc">Returns the elements in a vector that pass a test function </td></tr>
+<tr id="row_0_26_"><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_1Tuple.html" target="_self">Tuple</a></td><td class="desc">Takes a series of <a class="el" href="classfv_1_1Value.html" title="A generic value. ">Value</a> objects and bundles them together into a std::tuple object </td></tr>
+<tr id="row_0_27_" 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_1Value.html" target="_self">Value</a></td><td class="desc">A generic value </td></tr>
+<tr id="row_0_28_"><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_1WrapperVector.html" target="_self">WrapperVector</a></td><td class="desc">A std::vector wrapper around a C-style array </td></tr>
+<tr id="row_0_29_" 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_1Zip.html" target="_self">Zip</a></td><td class="desc">Zips a series of vectors together </td></tr>
 </table>
 </div><!-- directory -->
 </div><!-- contents -->

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


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


+ 3 - 3
docs/classfv_1_1Container.html

@@ -108,9 +108,9 @@ virtual H *&#160;</td><td class="memItemRight" valign="bottom"><b>get_container<
 <tr class="memitem:a34630bea6b7a4f97507420997122ae38 inherit pub_methods_classfv_1_1GenContainer"><td class="memItemLeft" align="right" valign="top"><a id="a34630bea6b7a4f97507420997122ae38"></a>
 &#160;</td><td class="memItemRight" valign="bottom"><b>GenContainer</b> (const std::string name)</td></tr>
 <tr class="separator:a34630bea6b7a4f97507420997122ae38 inherit pub_methods_classfv_1_1GenContainer"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a5ec383ec157a845610061c3e50f275ac inherit pub_methods_classfv_1_1GenContainer"><td class="memItemLeft" align="right" valign="top"><a id="a5ec383ec157a845610061c3e50f275ac"></a>
-void&#160;</td><td class="memItemRight" valign="bottom"><b>add_filter</b> (GenValue *filter)</td></tr>
-<tr class="separator:a5ec383ec157a845610061c3e50f275ac inherit pub_methods_classfv_1_1GenContainer"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ade39779eaf5f1b09c190ac58bd27f1c6 inherit pub_methods_classfv_1_1GenContainer"><td class="memItemLeft" align="right" valign="top"><a id="ade39779eaf5f1b09c190ac58bd27f1c6"></a>
+<a class="el" href="classfv_1_1GenContainer.html">GenContainer</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>add_filter</b> (GenValue *filter)</td></tr>
+<tr class="separator:ade39779eaf5f1b09c190ac58bd27f1c6 inherit pub_methods_classfv_1_1GenContainer"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:af9b35ceab9c8238f0d7b51174a28aad9 inherit pub_methods_classfv_1_1GenContainer"><td class="memItemLeft" align="right" valign="top"><a id="af9b35ceab9c8238f0d7b51174a28aad9"></a>
 void&#160;</td><td class="memItemRight" valign="bottom"><b>fill</b> ()</td></tr>
 <tr class="separator:af9b35ceab9c8238f0d7b51174a28aad9 inherit pub_methods_classfv_1_1GenContainer"><td class="memSeparator" colspan="2">&#160;</td></tr>

+ 3 - 3
docs/classfv_1_1ContainerMean.html

@@ -118,9 +118,9 @@ void&#160;</td><td class="memItemRight" valign="bottom"><b>save_as</b> (const st
 <tr class="memitem:a34630bea6b7a4f97507420997122ae38 inherit pub_methods_classfv_1_1GenContainer"><td class="memItemLeft" align="right" valign="top"><a id="a34630bea6b7a4f97507420997122ae38"></a>
 &#160;</td><td class="memItemRight" valign="bottom"><b>GenContainer</b> (const std::string name)</td></tr>
 <tr class="separator:a34630bea6b7a4f97507420997122ae38 inherit pub_methods_classfv_1_1GenContainer"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a5ec383ec157a845610061c3e50f275ac inherit pub_methods_classfv_1_1GenContainer"><td class="memItemLeft" align="right" valign="top"><a id="a5ec383ec157a845610061c3e50f275ac"></a>
-void&#160;</td><td class="memItemRight" valign="bottom"><b>add_filter</b> (GenValue *filter)</td></tr>
-<tr class="separator:a5ec383ec157a845610061c3e50f275ac inherit pub_methods_classfv_1_1GenContainer"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ade39779eaf5f1b09c190ac58bd27f1c6 inherit pub_methods_classfv_1_1GenContainer"><td class="memItemLeft" align="right" valign="top"><a id="ade39779eaf5f1b09c190ac58bd27f1c6"></a>
+<a class="el" href="classfv_1_1GenContainer.html">GenContainer</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>add_filter</b> (GenValue *filter)</td></tr>
+<tr class="separator:ade39779eaf5f1b09c190ac58bd27f1c6 inherit pub_methods_classfv_1_1GenContainer"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:af9b35ceab9c8238f0d7b51174a28aad9 inherit pub_methods_classfv_1_1GenContainer"><td class="memItemLeft" align="right" valign="top"><a id="af9b35ceab9c8238f0d7b51174a28aad9"></a>
 void&#160;</td><td class="memItemRight" valign="bottom"><b>fill</b> ()</td></tr>
 <tr class="separator:af9b35ceab9c8238f0d7b51174a28aad9 inherit pub_methods_classfv_1_1GenContainer"><td class="memSeparator" colspan="2">&#160;</td></tr>

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


+ 21 - 24
docs/classfv_1_1Filter-members.html

@@ -64,34 +64,31 @@ $(function() {
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">fv::Filter Member List</div>  </div>
+<div class="title">fv::Filter&lt; T &gt; Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="classfv_1_1Filter.html">fv::Filter</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="classfv_1_1Filter.html">fv::Filter&lt; T &gt;</a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>alias</b>(const std::string &amp;name, GenValue *value) (defined in <a class="el" href="classfv_1_1GenValue.html">fv::GenValue</a>)</td><td class="entry"><a class="el" href="classfv_1_1GenValue.html">fv::GenValue</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>alias</b>(const std::string &amp;name) (defined in <a class="el" href="classfv_1_1GenValue.html">fv::GenValue</a>)</td><td class="entry"><a class="el" href="classfv_1_1GenValue.html">fv::GenValue</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classfv_1_1GenValue.html#ab58b81925a05884bbebca0d870da80d0">aliases</a></td><td class="entry"><a class="el" href="classfv_1_1GenValue.html">fv::GenValue</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>DerivedValue</b>(const std::string &amp;name, const std::string &amp;alias=&quot;&quot;) (defined in <a class="el" href="classfv_1_1DerivedValue.html">fv::DerivedValue&lt; bool &gt;</a>)</td><td class="entry"><a class="el" href="classfv_1_1DerivedValue.html">fv::DerivedValue&lt; bool &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Filter</b>(const std::string &amp;name, std::function&lt; bool()&gt; filter_function, const std::string &amp;impl=&quot;&quot;) (defined in <a class="el" href="classfv_1_1Filter.html">fv::Filter</a>)</td><td class="entry"><a class="el" href="classfv_1_1Filter.html">fv::Filter</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>filter_function</b> (defined in <a class="el" href="classfv_1_1Filter.html">fv::Filter</a>)</td><td class="entry"><a class="el" href="classfv_1_1Filter.html">fv::Filter</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GenValue</b>(const std::string &amp;name, const std::string &amp;alias) (defined in <a class="el" href="classfv_1_1GenValue.html">fv::GenValue</a>)</td><td class="entry"><a class="el" href="classfv_1_1GenValue.html">fv::GenValue</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>get_name</b>() (defined in <a class="el" href="classfv_1_1GenValue.html">fv::GenValue</a>)</td><td class="entry"><a class="el" href="classfv_1_1GenValue.html">fv::GenValue</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classfv_1_1DerivedValue.html#a39970158aa8f6eb062a28037df6e2128">get_value</a>()</td><td class="entry"><a class="el" href="classfv_1_1DerivedValue.html">fv::DerivedValue&lt; bool &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>get_value</b>(const std::string &amp;name) (defined in <a class="el" href="classfv_1_1GenValue.html">fv::GenValue</a>)</td><td class="entry"><a class="el" href="classfv_1_1GenValue.html">fv::GenValue</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classfv_1_1Filter.html#abb459c8bbb3b51cd85ab5a0f7b2f154d">operator!</a>()</td><td class="entry"><a class="el" href="classfv_1_1Filter.html">fv::Filter</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classfv_1_1Filter.html#ae787cf77d98ac3604cba541afad0b351">operator*</a>(Filter *f)</td><td class="entry"><a class="el" href="classfv_1_1Filter.html">fv::Filter</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classfv_1_1Filter.html#aea96a9a83e172b7fdb64be78b0b3fffe">operator+</a>(Filter *f)</td><td class="entry"><a class="el" href="classfv_1_1Filter.html">fv::Filter</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>reset</b>() (defined in <a class="el" href="classfv_1_1GenValue.html">fv::GenValue</a>)</td><td class="entry"><a class="el" href="classfv_1_1GenValue.html">fv::GenValue</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_name</b>(const std::string &amp;new_name) (defined in <a class="el" href="classfv_1_1GenValue.html">fv::GenValue</a>)</td><td class="entry"><a class="el" href="classfv_1_1GenValue.html">fv::GenValue</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>summary</b>() (defined in <a class="el" href="classfv_1_1GenValue.html">fv::GenValue</a>)</td><td class="entry"><a class="el" href="classfv_1_1GenValue.html">fv::GenValue</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classfv_1_1Filter.html#ab3ed620127ccb32f75bc5e78bc8a60b3">update_value</a>()</td><td class="entry"><a class="el" href="classfv_1_1Filter.html">fv::Filter</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">private</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>value</b> (defined in <a class="el" href="classfv_1_1DerivedValue.html">fv::DerivedValue&lt; bool &gt;</a>)</td><td class="entry"><a class="el" href="classfv_1_1DerivedValue.html">fv::DerivedValue&lt; bool &gt;</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Value</b>(const std::string &amp;name, const std::string &amp;alias=&quot;&quot;) (defined in <a class="el" href="classfv_1_1Value.html">fv::Value&lt; bool &gt;</a>)</td><td class="entry"><a class="el" href="classfv_1_1Value.html">fv::Value&lt; bool &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>value_valid</b> (defined in <a class="el" href="classfv_1_1DerivedValue.html">fv::DerivedValue&lt; bool &gt;</a>)</td><td class="entry"><a class="el" href="classfv_1_1DerivedValue.html">fv::DerivedValue&lt; bool &gt;</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classfv_1_1GenValue.html#abbb57abc392c44d1f7ad5e7e74a75297">values</a></td><td class="entry"><a class="el" href="classfv_1_1GenValue.html">fv::GenValue</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>verify_integrity</b>() (defined in <a class="el" href="classfv_1_1Filter.html">fv::Filter</a>)</td><td class="entry"><a class="el" href="classfv_1_1Filter.html">fv::Filter</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">private</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>alias</b>(const std::string &amp;name, GenValue *value) (defined in <b>fv::GenValue</b>)</td><td class="entry"><a class="el" href="classfv_1_1GenValue.html">fv::GenValue</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>alias</b>(const std::string &amp;name) (defined in <b>fv::GenValue</b>)</td><td class="entry"><a class="el" href="classfv_1_1GenValue.html">fv::GenValue</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>aliases</b> (defined in <b>fv::GenValue</b>)</td><td class="entry"><a class="el" href="classfv_1_1GenValue.html">fv::GenValue</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>DerivedValue</b>(const std::string &amp;name, const std::string &amp;alias=&quot;&quot;) (defined in <a class="el" href="classfv_1_1DerivedValue.html">fv::DerivedValue&lt; std::vector&lt; T &gt; &gt;</a>)</td><td class="entry"><a class="el" href="classfv_1_1DerivedValue.html">fv::DerivedValue&lt; std::vector&lt; T &gt; &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Filter</b>(Function&lt; bool(T)&gt; &amp;filter, Value&lt; std::vector&lt; T &gt;&gt; *v, const std::string alias) (defined in <a class="el" href="classfv_1_1Filter.html">fv::Filter&lt; T &gt;</a>)</td><td class="entry"><a class="el" href="classfv_1_1Filter.html">fv::Filter&lt; T &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>filter</b> (defined in <a class="el" href="classfv_1_1Filter.html">fv::Filter&lt; T &gt;</a>)</td><td class="entry"><a class="el" href="classfv_1_1Filter.html">fv::Filter&lt; T &gt;</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GenValue</b>(const std::string &amp;name, const std::string &amp;alias) (defined in <b>fv::GenValue</b>)</td><td class="entry"><a class="el" href="classfv_1_1GenValue.html">fv::GenValue</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>get_name</b>() (defined in <b>fv::GenValue</b>)</td><td class="entry"><a class="el" href="classfv_1_1GenValue.html">fv::GenValue</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classfv_1_1DerivedValue.html#a39970158aa8f6eb062a28037df6e2128">get_value</a>()</td><td class="entry"><a class="el" href="classfv_1_1DerivedValue.html">fv::DerivedValue&lt; std::vector&lt; T &gt; &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>get_value</b>(const std::string &amp;name) (defined in <b>fv::GenValue</b>)</td><td class="entry"><a class="el" href="classfv_1_1GenValue.html">fv::GenValue</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reset</b>() (defined in <b>fv::GenValue</b>)</td><td class="entry"><a class="el" href="classfv_1_1GenValue.html">fv::GenValue</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>set_name</b>(const std::string &amp;new_name) (defined in <b>fv::GenValue</b>)</td><td class="entry"><a class="el" href="classfv_1_1GenValue.html">fv::GenValue</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>summary</b>() (defined in <b>fv::GenValue</b>)</td><td class="entry"><a class="el" href="classfv_1_1GenValue.html">fv::GenValue</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classfv_1_1Filter.html#a3666dcad055ca8b0f7c7ab675f5eb57d">update_value</a>()</td><td class="entry"><a class="el" href="classfv_1_1Filter.html">fv::Filter&lt; T &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">private</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>v</b> (defined in <a class="el" href="classfv_1_1Filter.html">fv::Filter&lt; T &gt;</a>)</td><td class="entry"><a class="el" href="classfv_1_1Filter.html">fv::Filter&lt; T &gt;</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>value</b> (defined in <a class="el" href="classfv_1_1DerivedValue.html">fv::DerivedValue&lt; std::vector&lt; T &gt; &gt;</a>)</td><td class="entry"><a class="el" href="classfv_1_1DerivedValue.html">fv::DerivedValue&lt; std::vector&lt; T &gt; &gt;</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Value</b>(const std::string &amp;name, const std::string &amp;alias=&quot;&quot;) (defined in <a class="el" href="classfv_1_1Value.html">fv::Value&lt; std::vector&lt; T &gt; &gt;</a>)</td><td class="entry"><a class="el" href="classfv_1_1Value.html">fv::Value&lt; std::vector&lt; T &gt; &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>value_valid</b> (defined in <a class="el" href="classfv_1_1DerivedValue.html">fv::DerivedValue&lt; std::vector&lt; T &gt; &gt;</a>)</td><td class="entry"><a class="el" href="classfv_1_1DerivedValue.html">fv::DerivedValue&lt; std::vector&lt; T &gt; &gt;</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>values</b> (defined in <b>fv::GenValue</b>)</td><td class="entry"><a class="el" href="classfv_1_1GenValue.html">fv::GenValue</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>

+ 57 - 89
docs/classfv_1_1Filter.html

@@ -5,7 +5,7 @@
 <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::Filter Class Reference</title>
+<title>TTTT Analysis: fv::Filter&lt; T &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>
@@ -69,133 +69,95 @@ $(function() {
 <a href="#pri-attribs">Private Attributes</a> &#124;
 <a href="classfv_1_1Filter-members.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">fv::Filter Class Reference</div>  </div>
+<div class="title">fv::Filter&lt; T &gt; Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
+
+<p>Returns the elements in a vector that pass a test function.  
+ <a href="classfv_1_1Filter.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::Filter:</div>
+Inheritance diagram for fv::Filter&lt; T &gt;:</div>
 <div class="dyncontent">
-<div class="center"><img src="classfv_1_1Filter__inherit__graph.png" border="0" usemap="#fv_1_1Filter_inherit__map" alt="Inheritance graph"/></div>
-<map name="fv_1_1Filter_inherit__map" id="fv_1_1Filter_inherit__map">
-<area shape="rect" id="node5" href="classfv_1_1RangeFilter.html" title="fv::RangeFilter\&lt; T \&gt;" alt="" coords="5,304,159,331"/>
-<area shape="rect" id="node6" href="classfv_1_1root_1_1MassFilter.html" title="fv::root::MassFilter" alt="" coords="183,304,325,331"/>
-<area shape="rect" id="node2" href="classfv_1_1DerivedValue.html" title="fv::DerivedValue\&lt; bool \&gt;" alt="" coords="74,155,261,181"/>
-<area shape="rect" id="node3" href="classfv_1_1Value.html" title="fv::Value\&lt; bool \&gt;" alt="" coords="99,80,235,107"/>
-<area shape="rect" id="node4" href="classfv_1_1GenValue.html" title="fv::GenValue" alt="" coords="115,5,219,32"/>
+<div class="center"><img src="classfv_1_1Filter__inherit__graph.png" border="0" usemap="#fv_1_1Filter_3_01T_01_4_inherit__map" alt="Inheritance graph"/></div>
+<map name="fv_1_1Filter_3_01T_01_4_inherit__map" id="fv_1_1Filter_3_01T_01_4_inherit__map">
+<area shape="rect" id="node2" href="classfv_1_1DerivedValue.html" title="fv::DerivedValue\&lt; std\l::vector\&lt; T \&gt; \&gt;" alt="" coords="5,95,169,136"/>
+<area shape="rect" id="node3" href="classfv_1_1Value.html" title="fv::Value\&lt; std::vector\l\&lt; T \&gt; \&gt;" alt="" coords="6,5,169,47"/>
 </map>
 <center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
 <div class="dynheader">
-Collaboration diagram for fv::Filter:</div>
+Collaboration diagram for fv::Filter&lt; T &gt;:</div>
 <div class="dyncontent">
-<div class="center"><img src="classfv_1_1Filter__coll__graph.png" border="0" usemap="#fv_1_1Filter_coll__map" alt="Collaboration graph"/></div>
-<map name="fv_1_1Filter_coll__map" id="fv_1_1Filter_coll__map">
-<area shape="rect" id="node2" href="classfv_1_1DerivedValue.html" title="fv::DerivedValue\&lt; bool \&gt;" alt="" coords="5,157,192,184"/>
-<area shape="rect" id="node3" href="classfv_1_1Value.html" title="fv::Value\&lt; bool \&gt;" alt="" coords="31,81,167,108"/>
-<area shape="rect" id="node4" href="classfv_1_1GenValue.html" title="fv::GenValue" alt="" coords="47,5,151,32"/>
-<area shape="rect" id="node5" href="classfv_1_1Function.html" title="fv::Function\&lt; bool()\&gt;" alt="" coords="216,157,376,184"/>
+<div class="center"><img src="classfv_1_1Filter__coll__graph.png" border="0" usemap="#fv_1_1Filter_3_01T_01_4_coll__map" alt="Collaboration graph"/></div>
+<map name="fv_1_1Filter_3_01T_01_4_coll__map" id="fv_1_1Filter_3_01T_01_4_coll__map">
+<area shape="rect" id="node2" href="classfv_1_1DerivedValue.html" title="fv::DerivedValue\&lt; std\l::vector\&lt; T \&gt; \&gt;" alt="" coords="109,96,273,137"/>
+<area shape="rect" id="node3" href="classfv_1_1Value.html" title="fv::Value\&lt; std::vector\l\&lt; T \&gt; \&gt;" alt="" coords="5,5,168,47"/>
 </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:a7bb0f3ff6419e820a24be78d48b8769d"><td class="memItemLeft" align="right" valign="top"><a id="a7bb0f3ff6419e820a24be78d48b8769d"></a>
-&#160;</td><td class="memItemRight" valign="bottom"><b>Filter</b> (const std::string &amp;<a class="el" href="classfv_1_1GenValue.html#a610f89ee441eaad4c9e78f74d6bde93b">name</a>, std::function&lt; bool()&gt; filter_function, const std::string &amp;impl=&quot;&quot;)</td></tr>
-<tr class="separator:a7bb0f3ff6419e820a24be78d48b8769d"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae787cf77d98ac3604cba541afad0b351"><td class="memItemLeft" align="right" valign="top"><a id="ae787cf77d98ac3604cba541afad0b351"></a>
-<a class="el" href="classfv_1_1Filter.html">Filter</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfv_1_1Filter.html#ae787cf77d98ac3604cba541afad0b351">operator*</a> (<a class="el" href="classfv_1_1Filter.html">Filter</a> *f)</td></tr>
-<tr class="memdesc:ae787cf77d98ac3604cba541afad0b351"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a new filter that is the conjuction of the two source filters. <br /></td></tr>
-<tr class="separator:ae787cf77d98ac3604cba541afad0b351"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aea96a9a83e172b7fdb64be78b0b3fffe"><td class="memItemLeft" align="right" valign="top"><a id="aea96a9a83e172b7fdb64be78b0b3fffe"></a>
-<a class="el" href="classfv_1_1Filter.html">Filter</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfv_1_1Filter.html#aea96a9a83e172b7fdb64be78b0b3fffe">operator+</a> (<a class="el" href="classfv_1_1Filter.html">Filter</a> *f)</td></tr>
-<tr class="memdesc:aea96a9a83e172b7fdb64be78b0b3fffe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a new filter that is the disjunction of the two source filters. <br /></td></tr>
-<tr class="separator:aea96a9a83e172b7fdb64be78b0b3fffe"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:abb459c8bbb3b51cd85ab5a0f7b2f154d"><td class="memItemLeft" align="right" valign="top"><a id="abb459c8bbb3b51cd85ab5a0f7b2f154d"></a>
-<a class="el" href="classfv_1_1Filter.html">Filter</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfv_1_1Filter.html#abb459c8bbb3b51cd85ab5a0f7b2f154d">operator!</a> ()</td></tr>
-<tr class="memdesc:abb459c8bbb3b51cd85ab5a0f7b2f154d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a new filter that is the negation of the source filter. <br /></td></tr>
-<tr class="separator:abb459c8bbb3b51cd85ab5a0f7b2f154d"><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; bool &gt;</a></td></tr>
+<tr class="memitem:af12c1e5e9b47fffb363156481ef41dc7"><td class="memItemLeft" align="right" valign="top"><a id="af12c1e5e9b47fffb363156481ef41dc7"></a>
+&#160;</td><td class="memItemRight" valign="bottom"><b>Filter</b> (Function&lt; bool(T)&gt; &amp;filter, <a class="el" href="classfv_1_1Value.html">Value</a>&lt; std::vector&lt; T &gt;&gt; *v, const std::string alias)</td></tr>
+<tr class="separator:af12c1e5e9b47fffb363156481ef41dc7"><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; T &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;<a class="el" href="classfv_1_1GenValue.html#a610f89ee441eaad4c9e78f74d6bde93b">name</a>, const std::string &amp;alias=&quot;&quot;)</td></tr>
+&#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>
-bool &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>get_value</b> ()</td></tr>
+std::vector&lt; T &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; bool &gt;</a></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; T &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;<a class="el" href="classfv_1_1GenValue.html#a610f89ee441eaad4c9e78f74d6bde93b">name</a>, const std::string &amp;alias=&quot;&quot;)</td></tr>
+&#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>
-<tr class="inherit_header pub_methods_classfv_1_1GenValue"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classfv_1_1GenValue')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classfv_1_1GenValue.html">fv::GenValue</a></td></tr>
-<tr class="memitem:a6a85db33e2414e7e77735a4706760300 inherit pub_methods_classfv_1_1GenValue"><td class="memItemLeft" align="right" valign="top"><a id="a6a85db33e2414e7e77735a4706760300"></a>
-&#160;</td><td class="memItemRight" valign="bottom"><b>GenValue</b> (const std::string &amp;<a class="el" href="classfv_1_1GenValue.html#a610f89ee441eaad4c9e78f74d6bde93b">name</a>, const std::string &amp;alias)</td></tr>
-<tr class="separator:a6a85db33e2414e7e77735a4706760300 inherit pub_methods_classfv_1_1GenValue"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a56f7eab1a0043ea73ecf01ec11dafa5c inherit pub_methods_classfv_1_1GenValue"><td class="memItemLeft" align="right" valign="top"><a id="a56f7eab1a0043ea73ecf01ec11dafa5c"></a>
-const std::string &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>get_name</b> ()</td></tr>
-<tr class="separator:a56f7eab1a0043ea73ecf01ec11dafa5c inherit pub_methods_classfv_1_1GenValue"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aff8a4008b9d449fb05ddc825135ba8a2 inherit pub_methods_classfv_1_1GenValue"><td class="memItemLeft" align="right" valign="top"><a id="aff8a4008b9d449fb05ddc825135ba8a2"></a>
-void&#160;</td><td class="memItemRight" valign="bottom"><b>set_name</b> (const std::string &amp;new_name)</td></tr>
-<tr class="separator:aff8a4008b9d449fb05ddc825135ba8a2 inherit pub_methods_classfv_1_1GenValue"><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:ab3ed620127ccb32f75bc5e78bc8a60b3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfv_1_1Filter.html#ab3ed620127ccb32f75bc5e78bc8a60b3">update_value</a> ()</td></tr>
-<tr class="memdesc:ab3ed620127ccb32f75bc5e78bc8a60b3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Updates the internal value.  <a href="#ab3ed620127ccb32f75bc5e78bc8a60b3">More...</a><br /></td></tr>
-<tr class="separator:ab3ed620127ccb32f75bc5e78bc8a60b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ac32f05ca33c453e8e1f71ea8c0f98ce9"><td class="memItemLeft" align="right" valign="top"><a id="ac32f05ca33c453e8e1f71ea8c0f98ce9"></a>
-void&#160;</td><td class="memItemRight" valign="bottom"><b>verify_integrity</b> ()</td></tr>
-<tr class="separator:ac32f05ca33c453e8e1f71ea8c0f98ce9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3666dcad055ca8b0f7c7ab675f5eb57d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfv_1_1Filter.html#a3666dcad055ca8b0f7c7ab675f5eb57d">update_value</a> ()</td></tr>
+<tr class="memdesc:a3666dcad055ca8b0f7c7ab675f5eb57d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Updates the internal value.  <a href="#a3666dcad055ca8b0f7c7ab675f5eb57d">More...</a><br /></td></tr>
+<tr class="separator:a3666dcad055ca8b0f7c7ab675f5eb57d"><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:a0c8d620dcf75608a8afaf2e34c773e3f"><td class="memItemLeft" align="right" valign="top"><a id="a0c8d620dcf75608a8afaf2e34c773e3f"></a>
-<a class="el" href="classfv_1_1Function.html">Function</a>&lt; bool()&gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>filter_function</b></td></tr>
-<tr class="separator:a0c8d620dcf75608a8afaf2e34c773e3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afee4243c260f13e30e6d31f58688c4a3"><td class="memItemLeft" align="right" valign="top"><a id="afee4243c260f13e30e6d31f58688c4a3"></a>
+Function&lt; bool(T)&gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>filter</b></td></tr>
+<tr class="separator:afee4243c260f13e30e6d31f58688c4a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae90ca89b005377e33e4586bdcb090fe0"><td class="memItemLeft" align="right" valign="top"><a id="ae90ca89b005377e33e4586bdcb090fe0"></a>
+<a class="el" href="classfv_1_1Value.html">Value</a>&lt; std::vector&lt; T &gt; &gt; *&#160;</td><td class="memItemRight" valign="bottom"><b>v</b></td></tr>
+<tr class="separator:ae90ca89b005377e33e4586bdcb090fe0"><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 pub_static_methods_classfv_1_1GenValue"><td colspan="2" onclick="javascript:toggleInherit('pub_static_methods_classfv_1_1GenValue')"><img src="closed.png" alt="-"/>&#160;Static Public Member Functions inherited from <a class="el" href="classfv_1_1GenValue.html">fv::GenValue</a></td></tr>
-<tr class="memitem:a804fa6719404472466896cc191a8123c inherit pub_static_methods_classfv_1_1GenValue"><td class="memItemLeft" align="right" valign="top"><a id="a804fa6719404472466896cc191a8123c"></a>
-static void&#160;</td><td class="memItemRight" valign="bottom"><b>reset</b> ()</td></tr>
-<tr class="separator:a804fa6719404472466896cc191a8123c inherit pub_static_methods_classfv_1_1GenValue"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a26e4aaa4c26437925dbe895fbb558bc5 inherit pub_static_methods_classfv_1_1GenValue"><td class="memItemLeft" align="right" valign="top"><a id="a26e4aaa4c26437925dbe895fbb558bc5"></a>
-static <a class="el" href="classfv_1_1GenValue.html">GenValue</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>get_value</b> (const std::string &amp;<a class="el" href="classfv_1_1GenValue.html#a610f89ee441eaad4c9e78f74d6bde93b">name</a>)</td></tr>
-<tr class="separator:a26e4aaa4c26437925dbe895fbb558bc5 inherit pub_static_methods_classfv_1_1GenValue"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2d4be21b68793e1f02411fe1143396cf inherit pub_static_methods_classfv_1_1GenValue"><td class="memItemLeft" align="right" valign="top"><a id="a2d4be21b68793e1f02411fe1143396cf"></a>
-static void&#160;</td><td class="memItemRight" valign="bottom"><b>alias</b> (const std::string &amp;<a class="el" href="classfv_1_1GenValue.html#a610f89ee441eaad4c9e78f74d6bde93b">name</a>, <a class="el" href="classfv_1_1GenValue.html">GenValue</a> *value)</td></tr>
-<tr class="separator:a2d4be21b68793e1f02411fe1143396cf inherit pub_static_methods_classfv_1_1GenValue"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a71d887498102aca1c896e956c50bc0fe inherit pub_static_methods_classfv_1_1GenValue"><td class="memItemLeft" align="right" valign="top"><a id="a71d887498102aca1c896e956c50bc0fe"></a>
-static <a class="el" href="classfv_1_1GenValue.html">GenValue</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>alias</b> (const std::string &amp;<a class="el" href="classfv_1_1GenValue.html#a610f89ee441eaad4c9e78f74d6bde93b">name</a>)</td></tr>
-<tr class="separator:a71d887498102aca1c896e956c50bc0fe inherit pub_static_methods_classfv_1_1GenValue"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a66807a611d5f3e693f538e8430ae9585 inherit pub_static_methods_classfv_1_1GenValue"><td class="memItemLeft" align="right" valign="top"><a id="a66807a611d5f3e693f538e8430ae9585"></a>
-static std::string&#160;</td><td class="memItemRight" valign="bottom"><b>summary</b> ()</td></tr>
-<tr class="separator:a66807a611d5f3e693f538e8430ae9585 inherit pub_static_methods_classfv_1_1GenValue"><td class="memSeparator" colspan="2">&#160;</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; bool &gt;</a></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; T &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>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>value</b></td></tr>
+std::vector&lt; T &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>
-<tr class="inherit_header pro_static_attribs_classfv_1_1GenValue"><td colspan="2" onclick="javascript:toggleInherit('pro_static_attribs_classfv_1_1GenValue')"><img src="closed.png" alt="-"/>&#160;Static Protected Attributes inherited from <a class="el" href="classfv_1_1GenValue.html">fv::GenValue</a></td></tr>
-<tr class="memitem:abbb57abc392c44d1f7ad5e7e74a75297 inherit pro_static_attribs_classfv_1_1GenValue"><td class="memItemLeft" align="right" valign="top">static std::map&lt; const std::string, <a class="el" href="classfv_1_1GenValue.html">GenValue</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfv_1_1GenValue.html#abbb57abc392c44d1f7ad5e7e74a75297">values</a></td></tr>
-<tr class="memdesc:abbb57abc392c44d1f7ad5e7e74a75297 inherit pro_static_attribs_classfv_1_1GenValue"><td class="mdescLeft">&#160;</td><td class="mdescRight">A static mapping containing all created <a class="el" href="classfv_1_1Value.html" title="A generic value. ">Value</a> objects.  <a href="classfv_1_1GenValue.html#abbb57abc392c44d1f7ad5e7e74a75297">More...</a><br /></td></tr>
-<tr class="separator:abbb57abc392c44d1f7ad5e7e74a75297 inherit pro_static_attribs_classfv_1_1GenValue"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab58b81925a05884bbebca0d870da80d0 inherit pro_static_attribs_classfv_1_1GenValue"><td class="memItemLeft" align="right" valign="top">static std::map&lt; const std::string, <a class="el" href="classfv_1_1GenValue.html">GenValue</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfv_1_1GenValue.html#ab58b81925a05884bbebca0d870da80d0">aliases</a></td></tr>
-<tr class="memdesc:ab58b81925a05884bbebca0d870da80d0 inherit pro_static_attribs_classfv_1_1GenValue"><td class="mdescLeft">&#160;</td><td class="mdescRight">Composite value names are typically nested.  <a href="classfv_1_1GenValue.html#ab58b81925a05884bbebca0d870da80d0">More...</a><br /></td></tr>
-<tr class="separator:ab58b81925a05884bbebca0d870da80d0 inherit pro_static_attribs_classfv_1_1GenValue"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
-<h2 class="groupheader">Member Function Documentation</h2>
-<a id="ab3ed620127ccb32f75bc5e78bc8a60b3"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ab3ed620127ccb32f75bc5e78bc8a60b3">&#9670;&nbsp;</a></span>update_value()</h2>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><h3>template&lt;typename T&gt;<br />
+class fv::Filter&lt; T &gt;</h3>
+
+<p>Returns the elements in a vector that pass a test function. </p>
+</div><h2 class="groupheader">Member Function Documentation</h2>
+<a id="a3666dcad055ca8b0f7c7ab675f5eb57d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3666dcad055ca8b0f7c7ab675f5eb57d">&#9670;&nbsp;</a></span>update_value()</h2>
 
 <div class="memitem">
 <div class="memproto">
+<div class="memtemplate">
+template&lt;typename T &gt; </div>
 <table class="mlabels">
   <tr>
   <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">void fv::Filter::update_value </td>
+          <td class="memname">void <a class="el" href="classfv_1_1Filter.html">fv::Filter</a>&lt; T &gt;::update_value </td>
           <td>(</td>
           <td class="paramname"></td><td>)</td>
           <td></td>
@@ -211,14 +173,20 @@ bool&#160;</td><td class="memItemRight" valign="bottom"><b>value_valid</b></td><
 <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; bool &gt;</a>.</p>
-
-<p>Reimplemented in <a class="el" href="classfv_1_1root_1_1MassFilter.html#a1a8b086086e1220bc352523184d3f1c2">fv::root::MassFilter</a>.</p>
+<p>Implements <a class="el" href="classfv_1_1DerivedValue.html#ae59e80a98eb74b95d8961bfe12ee5ec2">fv::DerivedValue&lt; std::vector&lt; T &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_1Filter_a3666dcad055ca8b0f7c7ab675f5eb57d_cgraph.png" border="0" usemap="#classfv_1_1Filter_a3666dcad055ca8b0f7c7ab675f5eb57d_cgraph" alt=""/></div>
+<map name="classfv_1_1Filter_a3666dcad055ca8b0f7c7ab675f5eb57d_cgraph" id="classfv_1_1Filter_a3666dcad055ca8b0f7c7ab675f5eb57d_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="180,13,331,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="filter_8hpp_source.html">filter.hpp</a></li>
+<li>/home/caleb/Sources/TTTT/filval/<a class="el" href="value_8hpp_source.html">value.hpp</a></li>
 </ul>
 </div><!-- contents -->
 <!-- start footer part -->

+ 3 - 5
docs/classfv_1_1Filter__coll__graph.map

@@ -1,6 +1,4 @@
-<map id="fv::Filter" name="fv::Filter">
-<area shape="rect" id="node2" href="$classfv_1_1DerivedValue.html" title="fv::DerivedValue\&lt; bool \&gt;" alt="" coords="5,157,192,184"/>
-<area shape="rect" id="node3" href="$classfv_1_1Value.html" title="fv::Value\&lt; bool \&gt;" alt="" coords="31,81,167,108"/>
-<area shape="rect" id="node4" href="$classfv_1_1GenValue.html" title="fv::GenValue" alt="" coords="47,5,151,32"/>
-<area shape="rect" id="node5" href="$classfv_1_1Function.html" title="fv::Function\&lt; bool()\&gt;" alt="" coords="216,157,376,184"/>
+<map id="fv::Filter&lt; T &gt;" name="fv::Filter&lt; T &gt;">
+<area shape="rect" id="node2" href="$classfv_1_1DerivedValue.html" title="fv::DerivedValue\&lt; std\l::vector\&lt; T \&gt; \&gt;" alt="" coords="109,96,273,137"/>
+<area shape="rect" id="node3" href="$classfv_1_1Value.html" title="fv::Value\&lt; std::vector\l\&lt; T \&gt; \&gt;" alt="" coords="5,5,168,47"/>
 </map>

+ 1 - 1
docs/classfv_1_1Filter__coll__graph.md5

@@ -1 +1 @@
-cda7006037d992d2abf4ad0a177d0203
+d31b0e816fb11eee5eb13f6ebbcfe9ef

BIN
docs/classfv_1_1Filter__coll__graph.png


+ 3 - 6
docs/classfv_1_1Filter__inherit__graph.map

@@ -1,7 +1,4 @@
-<map id="fv::Filter" name="fv::Filter">
-<area shape="rect" id="node5" href="$classfv_1_1RangeFilter.html" title="fv::RangeFilter\&lt; T \&gt;" alt="" coords="5,304,159,331"/>
-<area shape="rect" id="node6" href="$classfv_1_1root_1_1MassFilter.html" title="fv::root::MassFilter" alt="" coords="183,304,325,331"/>
-<area shape="rect" id="node2" href="$classfv_1_1DerivedValue.html" title="fv::DerivedValue\&lt; bool \&gt;" alt="" coords="74,155,261,181"/>
-<area shape="rect" id="node3" href="$classfv_1_1Value.html" title="fv::Value\&lt; bool \&gt;" alt="" coords="99,80,235,107"/>
-<area shape="rect" id="node4" href="$classfv_1_1GenValue.html" title="fv::GenValue" alt="" coords="115,5,219,32"/>
+<map id="fv::Filter&lt; T &gt;" name="fv::Filter&lt; T &gt;">
+<area shape="rect" id="node2" href="$classfv_1_1DerivedValue.html" title="fv::DerivedValue\&lt; std\l::vector\&lt; T \&gt; \&gt;" alt="" coords="5,95,169,136"/>
+<area shape="rect" id="node3" href="$classfv_1_1Value.html" title="fv::Value\&lt; std::vector\l\&lt; T \&gt; \&gt;" alt="" coords="6,5,169,47"/>
 </map>

+ 1 - 1
docs/classfv_1_1Filter__inherit__graph.md5

@@ -1 +1 @@
-81cce3f4ff09acb983771635bf733f88
+1e7978e099b89c91b7d894b0f62ad59d

BIN
docs/classfv_1_1Filter__inherit__graph.png


+ 3 - 0
docs/classfv_1_1Filter_a3666dcad055ca8b0f7c7ab675f5eb57d_cgraph.map

@@ -0,0 +1,3 @@
+<map id="fv::Filter::update_value" name="fv::Filter::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="180,13,331,39"/>
+</map>

+ 1 - 0
docs/classfv_1_1Filter_a3666dcad055ca8b0f7c7ab675f5eb57d_cgraph.md5

@@ -0,0 +1 @@
+61f8b4d649622cf6a586ebf5ca29acdb

BIN
docs/classfv_1_1Filter_a3666dcad055ca8b0f7c7ab675f5eb57d_cgraph.png


+ 6 - 5
docs/classfv_1_1Function_3_01R_07ArgTypes_8_8_8_08_4-members.html

@@ -78,11 +78,12 @@ $(function() {
   <tr bgcolor="#f0f0f0"><td class="entry"><b>GenFunction</b>(const std::string &amp;name, const std::string &amp;impl) (defined in <a class="el" href="classfv_1_1GenFunction.html">fv::GenFunction</a>)</td><td class="entry"><a class="el" href="classfv_1_1GenFunction.html">fv::GenFunction</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
   <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>get_name</b>() (defined in <a class="el" href="classfv_1_1GenFunction.html">fv::GenFunction</a>)</td><td class="entry"><a class="el" href="classfv_1_1GenFunction.html">fv::GenFunction</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
   <tr bgcolor="#f0f0f0"><td class="entry"><b>in_register_function</b> (defined in <a class="el" href="classfv_1_1GenFunction.html">fv::GenFunction</a>)</td><td class="entry"><a class="el" href="classfv_1_1GenFunction.html">fv::GenFunction</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator()</b>(ArgTypes ...args) (defined in <a class="el" href="classfv_1_1Function_3_01R_07ArgTypes_8_8_8_08_4.html">fv::Function&lt; R(ArgTypes...)&gt;</a>)</td><td class="entry"><a class="el" href="classfv_1_1Function_3_01R_07ArgTypes_8_8_8_08_4.html">fv::Function&lt; R(ArgTypes...)&gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>register_function</b>(const std::string &amp;name, std::function&lt; T &gt; f, const std::string &amp;impl) (defined in <a class="el" href="classfv_1_1GenFunction.html">fv::GenFunction</a>)</td><td class="entry"><a class="el" href="classfv_1_1GenFunction.html">fv::GenFunction</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>summary</b>() (defined in <a class="el" href="classfv_1_1GenFunction.html">fv::GenFunction</a>)</td><td class="entry"><a class="el" href="classfv_1_1GenFunction.html">fv::GenFunction</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~Function</b>() (defined in <a class="el" href="classfv_1_1Function_3_01R_07ArgTypes_8_8_8_08_4.html">fv::Function&lt; R(ArgTypes...)&gt;</a>)</td><td class="entry"><a class="el" href="classfv_1_1Function_3_01R_07ArgTypes_8_8_8_08_4.html">fv::Function&lt; R(ArgTypes...)&gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~GenFunction</b>() (defined in <a class="el" href="classfv_1_1GenFunction.html">fv::GenFunction</a>)</td><td class="entry"><a class="el" href="classfv_1_1GenFunction.html">fv::GenFunction</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>lookup_function</b>(const std::string &amp;name) (defined in <a class="el" href="classfv_1_1GenFunction.html">fv::GenFunction</a>)</td><td class="entry"><a class="el" href="classfv_1_1GenFunction.html">fv::GenFunction</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator()</b>(ArgTypes ...args) (defined in <a class="el" href="classfv_1_1Function_3_01R_07ArgTypes_8_8_8_08_4.html">fv::Function&lt; R(ArgTypes...)&gt;</a>)</td><td class="entry"><a class="el" href="classfv_1_1Function_3_01R_07ArgTypes_8_8_8_08_4.html">fv::Function&lt; R(ArgTypes...)&gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>register_function</b>(const std::string &amp;name, std::function&lt; T &gt; f, const std::string &amp;impl) (defined in <a class="el" href="classfv_1_1GenFunction.html">fv::GenFunction</a>)</td><td class="entry"><a class="el" href="classfv_1_1GenFunction.html">fv::GenFunction</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>summary</b>() (defined in <a class="el" href="classfv_1_1GenFunction.html">fv::GenFunction</a>)</td><td class="entry"><a class="el" href="classfv_1_1GenFunction.html">fv::GenFunction</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~Function</b>() (defined in <a class="el" href="classfv_1_1Function_3_01R_07ArgTypes_8_8_8_08_4.html">fv::Function&lt; R(ArgTypes...)&gt;</a>)</td><td class="entry"><a class="el" href="classfv_1_1Function_3_01R_07ArgTypes_8_8_8_08_4.html">fv::Function&lt; R(ArgTypes...)&gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>~GenFunction</b>() (defined in <a class="el" href="classfv_1_1GenFunction.html">fv::GenFunction</a>)</td><td class="entry"><a class="el" href="classfv_1_1GenFunction.html">fv::GenFunction</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>

+ 4 - 0
docs/classfv_1_1Function_3_01R_07ArgTypes_8_8_8_08_4.html

@@ -131,6 +131,10 @@ static std::string&#160;</td><td class="memItemRight" valign="bottom"><b>summary
 template&lt;typename T &gt; </td></tr>
 <tr class="memitem:a2635f33d1ef39f00c07bde754c98cc6f inherit pub_static_methods_classfv_1_1GenFunction"><td class="memTemplItemLeft" align="right" valign="top">static Function&lt; T &gt; &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>register_function</b> (const std::string &amp;name, std::function&lt; T &gt; f, const std::string &amp;impl)</td></tr>
 <tr class="separator:a2635f33d1ef39f00c07bde754c98cc6f inherit pub_static_methods_classfv_1_1GenFunction"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad2ff572dc8ba3059f2679cb450b719d3 inherit pub_static_methods_classfv_1_1GenFunction"><td class="memTemplParams" colspan="2"><a id="ad2ff572dc8ba3059f2679cb450b719d3"></a>
+template&lt;typename T &gt; </td></tr>
+<tr class="memitem:ad2ff572dc8ba3059f2679cb450b719d3 inherit pub_static_methods_classfv_1_1GenFunction"><td class="memTemplItemLeft" align="right" valign="top">static Function&lt; T &gt; &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>lookup_function</b> (const std::string &amp;name)</td></tr>
+<tr class="separator:ad2ff572dc8ba3059f2679cb450b719d3 inherit pub_static_methods_classfv_1_1GenFunction"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="inherit_header pub_static_attribs_classfv_1_1GenFunction"><td colspan="2" onclick="javascript:toggleInherit('pub_static_attribs_classfv_1_1GenFunction')"><img src="closed.png" alt="-"/>&#160;Static Public Attributes inherited from <a class="el" href="classfv_1_1GenFunction.html">fv::GenFunction</a></td></tr>
 <tr class="memitem:a62f52779bd4aa60fefbd842f557b1f7d inherit pub_static_attribs_classfv_1_1GenFunction"><td class="memItemLeft" align="right" valign="top"><a id="a62f52779bd4aa60fefbd842f557b1f7d"></a>
 static std::map&lt; const std::string, <a class="el" href="classfv_1_1GenFunction.html">GenFunction</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfv_1_1GenFunction.html#a62f52779bd4aa60fefbd842f557b1f7d">function_registry</a></td></tr>

+ 6 - 6
docs/classfv_1_1GenContainer.html

@@ -102,9 +102,9 @@ Public Member Functions</h2></td></tr>
 <tr class="memitem:a34630bea6b7a4f97507420997122ae38"><td class="memItemLeft" align="right" valign="top"><a id="a34630bea6b7a4f97507420997122ae38"></a>
 &#160;</td><td class="memItemRight" valign="bottom"><b>GenContainer</b> (const std::string name)</td></tr>
 <tr class="separator:a34630bea6b7a4f97507420997122ae38"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a5ec383ec157a845610061c3e50f275ac"><td class="memItemLeft" align="right" valign="top"><a id="a5ec383ec157a845610061c3e50f275ac"></a>
-void&#160;</td><td class="memItemRight" valign="bottom"><b>add_filter</b> (GenValue *filter)</td></tr>
-<tr class="separator:a5ec383ec157a845610061c3e50f275ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ade39779eaf5f1b09c190ac58bd27f1c6"><td class="memItemLeft" align="right" valign="top"><a id="ade39779eaf5f1b09c190ac58bd27f1c6"></a>
+<a class="el" href="classfv_1_1GenContainer.html">GenContainer</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>add_filter</b> (GenValue *filter)</td></tr>
+<tr class="separator:ade39779eaf5f1b09c190ac58bd27f1c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:af9b35ceab9c8238f0d7b51174a28aad9"><td class="memItemLeft" align="right" valign="top"><a id="af9b35ceab9c8238f0d7b51174a28aad9"></a>
 void&#160;</td><td class="memItemRight" valign="bottom"><b>fill</b> ()</td></tr>
 <tr class="separator:af9b35ceab9c8238f0d7b51174a28aad9"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -135,9 +135,9 @@ std::string&#160;</td><td class="memItemRight" valign="bottom"><b>name</b></td><
 <tr class="memitem:ab81b296313d0911f66301b9343be1b1b"><td class="memItemLeft" align="right" valign="top"><a id="ab81b296313d0911f66301b9343be1b1b"></a>
 std::string&#160;</td><td class="memItemRight" valign="bottom"><b>desc</b></td></tr>
 <tr class="separator:ab81b296313d0911f66301b9343be1b1b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab0a9af04074f17fb7bd7e84fafa5ac6c"><td class="memItemLeft" align="right" valign="top"><a id="ab0a9af04074f17fb7bd7e84fafa5ac6c"></a>
-std::vector&lt; Filter * &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>filters</b></td></tr>
-<tr class="separator:ab0a9af04074f17fb7bd7e84fafa5ac6c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af43cdeb468b11963ad4959c45037ed91"><td class="memItemLeft" align="right" valign="top"><a id="af43cdeb468b11963ad4959c45037ed91"></a>
+std::vector&lt; ObsFilter * &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>filters</b></td></tr>
+<tr class="separator:af43cdeb468b11963ad4959c45037ed91"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <div class="textblock"><p>Generic, untyped parent class of <a class="el" href="classfv_1_1Container.html" title="A class that is used to &quot;hold&quot; values. ">Container</a>. </p>

+ 5 - 4
docs/classfv_1_1GenFunction-members.html

@@ -76,10 +76,11 @@ $(function() {
   <tr bgcolor="#f0f0f0"><td class="entry"><b>get_name</b>() (defined in <a class="el" href="classfv_1_1GenFunction.html">fv::GenFunction</a>)</td><td class="entry"><a class="el" href="classfv_1_1GenFunction.html">fv::GenFunction</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
   <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>impl</b> (defined in <a class="el" href="classfv_1_1GenFunction.html">fv::GenFunction</a>)</td><td class="entry"><a class="el" href="classfv_1_1GenFunction.html">fv::GenFunction</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
   <tr bgcolor="#f0f0f0"><td class="entry"><b>in_register_function</b> (defined in <a class="el" href="classfv_1_1GenFunction.html">fv::GenFunction</a>)</td><td class="entry"><a class="el" href="classfv_1_1GenFunction.html">fv::GenFunction</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>name</b> (defined in <a class="el" href="classfv_1_1GenFunction.html">fv::GenFunction</a>)</td><td class="entry"><a class="el" href="classfv_1_1GenFunction.html">fv::GenFunction</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>register_function</b>(const std::string &amp;name, std::function&lt; T &gt; f, const std::string &amp;impl) (defined in <a class="el" href="classfv_1_1GenFunction.html">fv::GenFunction</a>)</td><td class="entry"><a class="el" href="classfv_1_1GenFunction.html">fv::GenFunction</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>summary</b>() (defined in <a class="el" href="classfv_1_1GenFunction.html">fv::GenFunction</a>)</td><td class="entry"><a class="el" href="classfv_1_1GenFunction.html">fv::GenFunction</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~GenFunction</b>() (defined in <a class="el" href="classfv_1_1GenFunction.html">fv::GenFunction</a>)</td><td class="entry"><a class="el" href="classfv_1_1GenFunction.html">fv::GenFunction</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>lookup_function</b>(const std::string &amp;name) (defined in <a class="el" href="classfv_1_1GenFunction.html">fv::GenFunction</a>)</td><td class="entry"><a class="el" href="classfv_1_1GenFunction.html">fv::GenFunction</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>name</b> (defined in <a class="el" href="classfv_1_1GenFunction.html">fv::GenFunction</a>)</td><td class="entry"><a class="el" href="classfv_1_1GenFunction.html">fv::GenFunction</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>register_function</b>(const std::string &amp;name, std::function&lt; T &gt; f, const std::string &amp;impl) (defined in <a class="el" href="classfv_1_1GenFunction.html">fv::GenFunction</a>)</td><td class="entry"><a class="el" href="classfv_1_1GenFunction.html">fv::GenFunction</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>summary</b>() (defined in <a class="el" href="classfv_1_1GenFunction.html">fv::GenFunction</a>)</td><td class="entry"><a class="el" href="classfv_1_1GenFunction.html">fv::GenFunction</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~GenFunction</b>() (defined in <a class="el" href="classfv_1_1GenFunction.html">fv::GenFunction</a>)</td><td class="entry"><a class="el" href="classfv_1_1GenFunction.html">fv::GenFunction</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>

+ 4 - 0
docs/classfv_1_1GenFunction.html

@@ -109,6 +109,10 @@ static std::string&#160;</td><td class="memItemRight" valign="bottom"><b>summary
 template&lt;typename T &gt; </td></tr>
 <tr class="memitem:a2635f33d1ef39f00c07bde754c98cc6f"><td class="memTemplItemLeft" align="right" valign="top">static Function&lt; T &gt; &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>register_function</b> (const std::string &amp;name, std::function&lt; T &gt; f, const std::string &amp;impl)</td></tr>
 <tr class="separator:a2635f33d1ef39f00c07bde754c98cc6f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad2ff572dc8ba3059f2679cb450b719d3"><td class="memTemplParams" colspan="2"><a id="ad2ff572dc8ba3059f2679cb450b719d3"></a>
+template&lt;typename T &gt; </td></tr>
+<tr class="memitem:ad2ff572dc8ba3059f2679cb450b719d3"><td class="memTemplItemLeft" align="right" valign="top">static Function&lt; T &gt; &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>lookup_function</b> (const std::string &amp;name)</td></tr>
+<tr class="separator:ad2ff572dc8ba3059f2679cb450b719d3"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
 Static Public Attributes</h2></td></tr>

+ 15 - 14
docs/classfv_1_1Map_3_01Ret_07ArgTypes_8_8_8_08_4-members.html

@@ -74,21 +74,22 @@ $(function() {
   <tr bgcolor="#f0f0f0"><td class="entry"><b>alias</b>(const std::string &amp;name) (defined in <b>fv::GenValue</b>)</td><td class="entry"><a class="el" href="classfv_1_1GenValue.html">fv::GenValue</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
   <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>aliases</b> (defined in <b>fv::GenValue</b>)</td><td class="entry"><a class="el" href="classfv_1_1GenValue.html">fv::GenValue</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
   <tr bgcolor="#f0f0f0"><td class="entry"><b>arg</b> (defined in <a class="el" href="classfv_1_1Map_3_01Ret_07ArgTypes_8_8_8_08_4.html">fv::Map&lt; Ret(ArgTypes...)&gt;</a>)</td><td class="entry"><a class="el" href="classfv_1_1Map_3_01Ret_07ArgTypes_8_8_8_08_4.html">fv::Map&lt; Ret(ArgTypes...)&gt;</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>DerivedValue</b>(const std::string &amp;name, const std::string &amp;alias=&quot;&quot;) (defined in <a class="el" href="classfv_1_1DerivedValue.html">fv::DerivedValue&lt; std::vector&lt; Ret &gt; &gt;</a>)</td><td class="entry"><a class="el" href="classfv_1_1DerivedValue.html">fv::DerivedValue&lt; std::vector&lt; Ret &gt; &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>fn</b> (defined in <a class="el" href="classfv_1_1Map_3_01Ret_07ArgTypes_8_8_8_08_4.html">fv::Map&lt; Ret(ArgTypes...)&gt;</a>)</td><td class="entry"><a class="el" href="classfv_1_1Map_3_01Ret_07ArgTypes_8_8_8_08_4.html">fv::Map&lt; Ret(ArgTypes...)&gt;</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GenValue</b>(const std::string &amp;name, const std::string &amp;alias) (defined in <b>fv::GenValue</b>)</td><td class="entry"><a class="el" href="classfv_1_1GenValue.html">fv::GenValue</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>get_name</b>() (defined in <b>fv::GenValue</b>)</td><td class="entry"><a class="el" href="classfv_1_1GenValue.html">fv::GenValue</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classfv_1_1DerivedValue.html#a39970158aa8f6eb062a28037df6e2128">get_value</a>()</td><td class="entry"><a class="el" href="classfv_1_1DerivedValue.html">fv::DerivedValue&lt; std::vector&lt; Ret &gt; &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>get_value</b>(const std::string &amp;name) (defined in <b>fv::GenValue</b>)</td><td class="entry"><a class="el" href="classfv_1_1GenValue.html">fv::GenValue</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Map</b>(Function&lt; Ret(ArgTypes...)&gt; &amp;fn, Zip&lt; ArgTypes... &gt; *arg, const std::string &amp;alias) (defined in <a class="el" href="classfv_1_1Map_3_01Ret_07ArgTypes_8_8_8_08_4.html">fv::Map&lt; Ret(ArgTypes...)&gt;</a>)</td><td class="entry"><a class="el" href="classfv_1_1Map_3_01Ret_07ArgTypes_8_8_8_08_4.html">fv::Map&lt; Ret(ArgTypes...)&gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>reset</b>() (defined in <b>fv::GenValue</b>)</td><td class="entry"><a class="el" href="classfv_1_1GenValue.html">fv::GenValue</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_name</b>(const std::string &amp;new_name) (defined in <b>fv::GenValue</b>)</td><td class="entry"><a class="el" href="classfv_1_1GenValue.html">fv::GenValue</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>summary</b>() (defined in <b>fv::GenValue</b>)</td><td class="entry"><a class="el" href="classfv_1_1GenValue.html">fv::GenValue</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="classfv_1_1Map_3_01Ret_07ArgTypes_8_8_8_08_4.html#acd85576e1e4eb0eb4ef0d4947299478c">update_value</a>()</td><td class="entry"><a class="el" href="classfv_1_1Map_3_01Ret_07ArgTypes_8_8_8_08_4.html">fv::Map&lt; Ret(ArgTypes...)&gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">private</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>value</b> (defined in <a class="el" href="classfv_1_1DerivedValue.html">fv::DerivedValue&lt; std::vector&lt; Ret &gt; &gt;</a>)</td><td class="entry"><a class="el" href="classfv_1_1DerivedValue.html">fv::DerivedValue&lt; std::vector&lt; Ret &gt; &gt;</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>arg_type</b> typedef (defined in <a class="el" href="classfv_1_1Map_3_01Ret_07ArgTypes_8_8_8_08_4.html">fv::Map&lt; Ret(ArgTypes...)&gt;</a>)</td><td class="entry"><a class="el" href="classfv_1_1Map_3_01Ret_07ArgTypes_8_8_8_08_4.html">fv::Map&lt; Ret(ArgTypes...)&gt;</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>DerivedValue</b>(const std::string &amp;name, const std::string &amp;alias=&quot;&quot;) (defined in <a class="el" href="classfv_1_1DerivedValue.html">fv::DerivedValue&lt; std::vector&lt; Ret &gt; &gt;</a>)</td><td class="entry"><a class="el" href="classfv_1_1DerivedValue.html">fv::DerivedValue&lt; std::vector&lt; Ret &gt; &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>fn</b> (defined in <a class="el" href="classfv_1_1Map_3_01Ret_07ArgTypes_8_8_8_08_4.html">fv::Map&lt; Ret(ArgTypes...)&gt;</a>)</td><td class="entry"><a class="el" href="classfv_1_1Map_3_01Ret_07ArgTypes_8_8_8_08_4.html">fv::Map&lt; Ret(ArgTypes...)&gt;</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>GenValue</b>(const std::string &amp;name, const std::string &amp;alias) (defined in <b>fv::GenValue</b>)</td><td class="entry"><a class="el" href="classfv_1_1GenValue.html">fv::GenValue</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>get_name</b>() (defined in <b>fv::GenValue</b>)</td><td class="entry"><a class="el" href="classfv_1_1GenValue.html">fv::GenValue</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classfv_1_1DerivedValue.html#a39970158aa8f6eb062a28037df6e2128">get_value</a>()</td><td class="entry"><a class="el" href="classfv_1_1DerivedValue.html">fv::DerivedValue&lt; std::vector&lt; Ret &gt; &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>get_value</b>(const std::string &amp;name) (defined in <b>fv::GenValue</b>)</td><td class="entry"><a class="el" href="classfv_1_1GenValue.html">fv::GenValue</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>Map</b>(Function&lt; Ret(ArgTypes...)&gt; &amp;fn, arg_type *arg, const std::string &amp;alias) (defined in <a class="el" href="classfv_1_1Map_3_01Ret_07ArgTypes_8_8_8_08_4.html">fv::Map&lt; Ret(ArgTypes...)&gt;</a>)</td><td class="entry"><a class="el" href="classfv_1_1Map_3_01Ret_07ArgTypes_8_8_8_08_4.html">fv::Map&lt; Ret(ArgTypes...)&gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reset</b>() (defined in <b>fv::GenValue</b>)</td><td class="entry"><a class="el" href="classfv_1_1GenValue.html">fv::GenValue</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>set_name</b>(const std::string &amp;new_name) (defined in <b>fv::GenValue</b>)</td><td class="entry"><a class="el" href="classfv_1_1GenValue.html">fv::GenValue</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>summary</b>() (defined in <b>fv::GenValue</b>)</td><td class="entry"><a class="el" href="classfv_1_1GenValue.html">fv::GenValue</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classfv_1_1Map_3_01Ret_07ArgTypes_8_8_8_08_4.html#acd85576e1e4eb0eb4ef0d4947299478c">update_value</a>()</td><td class="entry"><a class="el" href="classfv_1_1Map_3_01Ret_07ArgTypes_8_8_8_08_4.html">fv::Map&lt; Ret(ArgTypes...)&gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">private</span><span class="mlabel">virtual</span></td></tr>
   <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Value</b>(const std::string &amp;name, const std::string &amp;alias=&quot;&quot;) (defined in <a class="el" href="classfv_1_1Value.html">fv::Value&lt; std::vector&lt; Ret &gt; &gt;</a>)</td><td class="entry"><a class="el" href="classfv_1_1Value.html">fv::Value&lt; std::vector&lt; Ret &gt; &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>value_valid</b> (defined in <a class="el" href="classfv_1_1DerivedValue.html">fv::DerivedValue&lt; std::vector&lt; Ret &gt; &gt;</a>)</td><td class="entry"><a class="el" href="classfv_1_1DerivedValue.html">fv::DerivedValue&lt; std::vector&lt; Ret &gt; &gt;</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>values</b> (defined in <b>fv::GenValue</b>)</td><td class="entry"><a class="el" href="classfv_1_1GenValue.html">fv::GenValue</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>value</b> (defined in <a class="el" href="classfv_1_1DerivedValue.html">fv::DerivedValue&lt; std::vector&lt; Ret &gt; &gt;</a>)</td><td class="entry"><a class="el" href="classfv_1_1DerivedValue.html">fv::DerivedValue&lt; std::vector&lt; Ret &gt; &gt;</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>value_valid</b> (defined in <a class="el" href="classfv_1_1DerivedValue.html">fv::DerivedValue&lt; std::vector&lt; Ret &gt; &gt;</a>)</td><td class="entry"><a class="el" href="classfv_1_1DerivedValue.html">fv::DerivedValue&lt; std::vector&lt; Ret &gt; &gt;</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>values</b> (defined in <b>fv::GenValue</b>)</td><td class="entry"><a class="el" href="classfv_1_1GenValue.html">fv::GenValue</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>

+ 18 - 13
docs/classfv_1_1Map_3_01Ret_07ArgTypes_8_8_8_08_4.html

@@ -65,6 +65,7 @@ $(function() {
 <div class="header">
   <div class="summary">
 <a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pri-types">Private Types</a> &#124;
 <a href="#pri-methods">Private Member Functions</a> &#124;
 <a href="#pri-attribs">Private Attributes</a> &#124;
 <a href="classfv_1_1Map_3_01Ret_07ArgTypes_8_8_8_08_4-members.html">List of all members</a>  </div>
@@ -91,19 +92,17 @@ Collaboration diagram for fv::Map&lt; Ret(ArgTypes...)&gt;:</div>
 <div class="dyncontent">
 <div class="center"><img src="classfv_1_1Map_3_01Ret_07ArgTypes_8_8_8_08_4__coll__graph.png" border="0" usemap="#fv_1_1Map_3_01Ret_07ArgTypes_8_8_8_08_4_coll__map" alt="Collaboration graph"/></div>
 <map name="fv_1_1Map_3_01Ret_07ArgTypes_8_8_8_08_4_coll__map" id="fv_1_1Map_3_01Ret_07ArgTypes_8_8_8_08_4_coll__map">
-<area shape="rect" id="node2" href="classfv_1_1DerivedValue.html" title="fv::DerivedValue\&lt; std\l::vector\&lt; Ret \&gt; \&gt;" alt="" coords="497,7,661,48"/>
-<area shape="rect" id="node3" href="classfv_1_1Value.html" title="fv::Value\&lt; std::vector\l\&lt; Ret \&gt; \&gt;" alt="" coords="285,5,447,47"/>
-<area shape="rect" id="node4" href="classfv_1_1Zip.html" title="fv::Zip\&lt; ArgTypes... \&gt;" alt="" coords="497,77,661,103"/>
-<area shape="rect" id="node5" href="classfv_1_1DerivedValue.html" title="fv::DerivedValue\&lt; std\l::vector\&lt; std::tuple\l\&lt; ArgTypes... \&gt; \&gt; \&gt;" alt="" coords="284,71,448,127"/>
-<area shape="rect" id="node6" href="classfv_1_1Value.html" title="fv::Value\&lt; std::vector\l\&lt; std::tuple\&lt; ArgTypes... \&gt; \&gt; \&gt;" alt="" coords="5,79,235,120"/>
+<area shape="rect" id="node2" href="classfv_1_1DerivedValue.html" title="fv::DerivedValue\&lt; std\l::vector\&lt; Ret \&gt; \&gt;" alt="" coords="250,5,414,47"/>
+<area shape="rect" id="node3" 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="node4" href="classfv_1_1Value.html" title="fv::Value\&lt; std::vector\l\&lt; std::tuple\&lt; ArgTypes... \&gt; \&gt; \&gt;" alt="" coords="217,71,447,112"/>
 </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:a361466c7e2f2f329e316036d7aebe6a8"><td class="memItemLeft" align="right" valign="top"><a id="a361466c7e2f2f329e316036d7aebe6a8"></a>
-&#160;</td><td class="memItemRight" valign="bottom"><b>Map</b> (Function&lt; Ret(ArgTypes...)&gt; &amp;fn, <a class="el" href="classfv_1_1Zip.html">Zip</a>&lt; ArgTypes... &gt; *arg, const std::string &amp;alias)</td></tr>
-<tr class="separator:a361466c7e2f2f329e316036d7aebe6a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af43efb6cf34aa4a80404166aaffdc189"><td class="memItemLeft" align="right" valign="top"><a id="af43efb6cf34aa4a80404166aaffdc189"></a>
+&#160;</td><td class="memItemRight" valign="bottom"><b>Map</b> (Function&lt; Ret(ArgTypes...)&gt; &amp;fn, <a class="el" href="classfv_1_1Value.html">arg_type</a> *arg, const std::string &amp;alias)</td></tr>
+<tr class="separator:af43efb6cf34aa4a80404166aaffdc189"><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; Ret &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>
@@ -117,6 +116,12 @@ std::vector&lt; Ret &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom
 &#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-types"></a>
+Private Types</h2></td></tr>
+<tr class="memitem:a138b795697ca85bf0b31a159db82e707"><td class="memItemLeft" align="right" valign="top"><a id="a138b795697ca85bf0b31a159db82e707"></a>
+typedef <a class="el" href="classfv_1_1Value.html">Value</a>&lt; std::vector&lt; std::tuple&lt; ArgTypes... &gt; &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>arg_type</b></td></tr>
+<tr class="separator:a138b795697ca85bf0b31a159db82e707"><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:acd85576e1e4eb0eb4ef0d4947299478c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfv_1_1Map_3_01Ret_07ArgTypes_8_8_8_08_4.html#acd85576e1e4eb0eb4ef0d4947299478c">update_value</a> ()</td></tr>
@@ -128,9 +133,9 @@ Private Attributes</h2></td></tr>
 <tr class="memitem:a7a53f1ef04199ec8188bbaaef18b1479"><td class="memItemLeft" align="right" valign="top"><a id="a7a53f1ef04199ec8188bbaaef18b1479"></a>
 Function&lt; Ret(ArgTypes...)&gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>fn</b></td></tr>
 <tr class="separator:a7a53f1ef04199ec8188bbaaef18b1479"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a8279bd0f755233a8d541add6bfe3ac51"><td class="memItemLeft" align="right" valign="top"><a id="a8279bd0f755233a8d541add6bfe3ac51"></a>
-<a class="el" href="classfv_1_1Zip.html">Zip</a>&lt; ArgTypes... &gt; *&#160;</td><td class="memItemRight" valign="bottom"><b>arg</b></td></tr>
-<tr class="separator:a8279bd0f755233a8d541add6bfe3ac51"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae3cba565923c62eea5aa6b1ed4160a3b"><td class="memItemLeft" align="right" valign="top"><a id="ae3cba565923c62eea5aa6b1ed4160a3b"></a>
+<a class="el" href="classfv_1_1Value.html">arg_type</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>arg</b></td></tr>
+<tr class="separator:ae3cba565923c62eea5aa6b1ed4160a3b"><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>
@@ -183,8 +188,8 @@ Here is the call graph for this function:</div>
 <div class="dyncontent">
 <div class="center"><img src="classfv_1_1Map_3_01Ret_07ArgTypes_8_8_8_08_4_acd85576e1e4eb0eb4ef0d4947299478c_cgraph.png" border="0" usemap="#classfv_1_1Map_3_01Ret_07ArgTypes_8_8_8_08_4_acd85576e1e4eb0eb4ef0d4947299478c_cgraph" alt=""/></div>
 <map name="classfv_1_1Map_3_01Ret_07ArgTypes_8_8_8_08_4_acd85576e1e4eb0eb4ef0d4947299478c_cgraph" id="classfv_1_1Map_3_01Ret_07ArgTypes_8_8_8_08_4_acd85576e1e4eb0eb4ef0d4947299478c_cgraph">
-<area shape="rect" id="node2" href="namespacefv.html#a182def996bfac5212fd450627a187ae4" title="This calls a function of type F with the contents of the tuple as separate arguments. " alt="" coords="283,5,348,32"/>
-<area shape="rect" id="node3" href="classfv_1_1Value.html#a4cc70444ceaf5d7651922adf9b7beeff" title="Calculate, if necessary, and return the value held by this object. " alt="" coords="240,56,391,83"/>
+<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="240,5,391,32"/>
+<area shape="rect" id="node3" href="namespacefv.html#a182def996bfac5212fd450627a187ae4" title="This calls a function of type F with the contents of the tuple as separate arguments. " alt="" coords="283,56,348,83"/>
 </map>
 </div>
 

+ 3 - 5
docs/classfv_1_1Map_3_01Ret_07ArgTypes_8_8_8_08_4__coll__graph.map

@@ -1,7 +1,5 @@
 <map id="fv::Map&lt; Ret(ArgTypes...)&gt;" name="fv::Map&lt; Ret(ArgTypes...)&gt;">
-<area shape="rect" id="node2" href="$classfv_1_1DerivedValue.html" title="fv::DerivedValue\&lt; std\l::vector\&lt; Ret \&gt; \&gt;" alt="" coords="497,7,661,48"/>
-<area shape="rect" id="node3" href="$classfv_1_1Value.html" title="fv::Value\&lt; std::vector\l\&lt; Ret \&gt; \&gt;" alt="" coords="285,5,447,47"/>
-<area shape="rect" id="node4" href="$classfv_1_1Zip.html" title="fv::Zip\&lt; ArgTypes... \&gt;" alt="" coords="497,77,661,103"/>
-<area shape="rect" id="node5" href="$classfv_1_1DerivedValue.html" title="fv::DerivedValue\&lt; std\l::vector\&lt; std::tuple\l\&lt; ArgTypes... \&gt; \&gt; \&gt;" alt="" coords="284,71,448,127"/>
-<area shape="rect" id="node6" href="$classfv_1_1Value.html" title="fv::Value\&lt; std::vector\l\&lt; std::tuple\&lt; ArgTypes... \&gt; \&gt; \&gt;" alt="" coords="5,79,235,120"/>
+<area shape="rect" id="node2" href="$classfv_1_1DerivedValue.html" title="fv::DerivedValue\&lt; std\l::vector\&lt; Ret \&gt; \&gt;" alt="" coords="250,5,414,47"/>
+<area shape="rect" id="node3" 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="node4" href="$classfv_1_1Value.html" title="fv::Value\&lt; std::vector\l\&lt; std::tuple\&lt; ArgTypes... \&gt; \&gt; \&gt;" alt="" coords="217,71,447,112"/>
 </map>

+ 1 - 1
docs/classfv_1_1Map_3_01Ret_07ArgTypes_8_8_8_08_4__coll__graph.md5

@@ -1 +1 @@
-86c08a67ab3e201c9377e177fe5cc0f5
+d32ddce208fa13810d08036e12ec3b75

BIN
docs/classfv_1_1Map_3_01Ret_07ArgTypes_8_8_8_08_4__coll__graph.png


+ 2 - 2
docs/classfv_1_1Map_3_01Ret_07ArgTypes_8_8_8_08_4_acd85576e1e4eb0eb4ef0d4947299478c_cgraph.map

@@ -1,4 +1,4 @@
 <map id="fv::Map&lt; Ret(ArgTypes...)&gt;::update_value" name="fv::Map&lt; Ret(ArgTypes...)&gt;::update_value">
-<area shape="rect" id="node2" href="$namespacefv.html#a182def996bfac5212fd450627a187ae4" title="This calls a function of type F with the contents of the tuple as separate arguments. " alt="" coords="283,5,348,32"/>
-<area shape="rect" id="node3" href="$classfv_1_1Value.html#a4cc70444ceaf5d7651922adf9b7beeff" title="Calculate, if necessary, and return the value held by this object. " alt="" coords="240,56,391,83"/>
+<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="240,5,391,32"/>
+<area shape="rect" id="node3" href="$namespacefv.html#a182def996bfac5212fd450627a187ae4" title="This calls a function of type F with the contents of the tuple as separate arguments. " alt="" coords="283,56,348,83"/>
 </map>

+ 1 - 1
docs/classfv_1_1Map_3_01Ret_07ArgTypes_8_8_8_08_4_acd85576e1e4eb0eb4ef0d4947299478c_cgraph.md5

@@ -1 +1 @@
-c5e1277b4a704ecd50eb53087b8f8548
+bdbc575d18f175354f4be4fdc1a2e972

BIN
docs/classfv_1_1Map_3_01Ret_07ArgTypes_8_8_8_08_4_acd85576e1e4eb0eb4ef0d4947299478c_cgraph.png


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


+ 209 - 0
docs/classfv_1_1TupFilter.html

@@ -0,0 +1,209 @@
+<!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::TupFilter&lt; ArgTypes &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_1TupFilter.html">TupFilter</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pri-types">Private Types</a> &#124;
+<a href="#pri-methods">Private Member Functions</a> &#124;
+<a href="#pri-attribs">Private Attributes</a> &#124;
+<a href="classfv_1_1TupFilter-members.html">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">fv::TupFilter&lt; ArgTypes &gt; Class Template Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Returns the elements in a vector that pass a test function.  
+ <a href="classfv_1_1TupFilter.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::TupFilter&lt; ArgTypes &gt;:</div>
+<div class="dyncontent">
+<div class="center"><img src="classfv_1_1TupFilter__inherit__graph.png" border="0" usemap="#fv_1_1TupFilter_3_01ArgTypes_01_4_inherit__map" alt="Inheritance graph"/></div>
+<map name="fv_1_1TupFilter_3_01ArgTypes_01_4_inherit__map" id="fv_1_1TupFilter_3_01ArgTypes_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; ArgTypes... \&gt; \&gt; \&gt;" alt="" coords="38,95,202,151"/>
+<area shape="rect" id="node3" href="classfv_1_1Value.html" title="fv::Value\&lt; std::vector\l\&lt; std::tuple\&lt; ArgTypes... \&gt; \&gt; \&gt;" alt="" coords="5,5,235,47"/>
+</map>
+<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
+<div class="dynheader">
+Collaboration diagram for fv::TupFilter&lt; ArgTypes &gt;:</div>
+<div class="dyncontent">
+<div class="center"><img src="classfv_1_1TupFilter__coll__graph.png" border="0" usemap="#fv_1_1TupFilter_3_01ArgTypes_01_4_coll__map" alt="Collaboration graph"/></div>
+<map name="fv_1_1TupFilter_3_01ArgTypes_01_4_coll__map" id="fv_1_1TupFilter_3_01ArgTypes_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; ArgTypes... \&gt; \&gt; \&gt;" alt="" coords="292,5,456,61"/>
+<area shape="rect" id="node3" href="classfv_1_1Value.html" title="fv::Value\&lt; std::vector\l\&lt; std::tuple\&lt; ArgTypes... \&gt; \&gt; \&gt;" alt="" coords="5,13,235,54"/>
+<area shape="rect" id="node4" href="classfv_1_1Value.html" title="fv::Value\&lt; value_type \&gt;" alt="" coords="284,85,464,112"/>
+</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:abdb37891c610603d3fda14c77ea3558c"><td class="memItemLeft" align="right" valign="top"><a id="abdb37891c610603d3fda14c77ea3558c"></a>
+&#160;</td><td class="memItemRight" valign="bottom"><b>TupFilter</b> (Function&lt; bool(ArgTypes...)&gt; &amp;filter, <a class="el" href="classfv_1_1Value.html">Value</a>&lt; value_type &gt; *arg, const std::string alias)</td></tr>
+<tr class="separator:abdb37891c610603d3fda14c77ea3558c"><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; ArgTypes... &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; ArgTypes... &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; ArgTypes... &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-types"></a>
+Private Types</h2></td></tr>
+<tr class="memitem:ab6e9ffbeda78885ecceb1996368f3776"><td class="memItemLeft" align="right" valign="top"><a id="ab6e9ffbeda78885ecceb1996368f3776"></a>
+typedef std::vector&lt; std::tuple&lt; ArgTypes... &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
+<tr class="separator:ab6e9ffbeda78885ecceb1996368f3776"><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:a0d1078323dca5f712ee122b14bafd20b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfv_1_1TupFilter.html#a0d1078323dca5f712ee122b14bafd20b">update_value</a> ()</td></tr>
+<tr class="memdesc:a0d1078323dca5f712ee122b14bafd20b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Updates the internal value.  <a href="#a0d1078323dca5f712ee122b14bafd20b">More...</a><br /></td></tr>
+<tr class="separator:a0d1078323dca5f712ee122b14bafd20b"><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:a540b52370580733b5986877d5951be50"><td class="memItemLeft" align="right" valign="top"><a id="a540b52370580733b5986877d5951be50"></a>
+Function&lt; bool(ArgTypes...)&gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>filter</b></td></tr>
+<tr class="separator:a540b52370580733b5986877d5951be50"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa557cb14e0172c506a86fee7745d7a61"><td class="memItemLeft" align="right" valign="top"><a id="aa557cb14e0172c506a86fee7745d7a61"></a>
+<a class="el" href="classfv_1_1Value.html">Value</a>&lt; value_type &gt; *&#160;</td><td class="memItemRight" valign="bottom"><b>arg</b></td></tr>
+<tr class="separator:aa557cb14e0172c506a86fee7745d7a61"><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; ArgTypes... &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; ArgTypes... &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... ArgTypes&gt;<br />
+class fv::TupFilter&lt; ArgTypes &gt;</h3>
+
+<p>Returns the elements in a vector that pass a test function. </p>
+<p>The elements on the vector must be tuples. Typically this will be used in conjunction with <a class="el" href="classfv_1_1Zip.html" title="Zips a series of vectors together. ">Zip</a> and Map. </p>
+</div><h2 class="groupheader">Member Function Documentation</h2>
+<a id="a0d1078323dca5f712ee122b14bafd20b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0d1078323dca5f712ee122b14bafd20b">&#9670;&nbsp;</a></span>update_value()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename... ArgTypes&gt; </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void <a class="el" href="classfv_1_1TupFilter.html">fv::TupFilter</a>&lt; ArgTypes &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; ArgTypes... &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_1TupFilter_a0d1078323dca5f712ee122b14bafd20b_cgraph.png" border="0" usemap="#classfv_1_1TupFilter_a0d1078323dca5f712ee122b14bafd20b_cgraph" alt=""/></div>
+<map name="classfv_1_1TupFilter_a0d1078323dca5f712ee122b14bafd20b_cgraph" id="classfv_1_1TupFilter_a0d1078323dca5f712ee122b14bafd20b_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="203,5,353,32"/>
+<area shape="rect" id="node3" href="namespacefv.html#a182def996bfac5212fd450627a187ae4" title="This calls a function of type F with the contents of the tuple as separate arguments. " alt="" coords="245,56,311,83"/>
+</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>

+ 5 - 0
docs/classfv_1_1TupFilter__coll__graph.map

@@ -0,0 +1,5 @@
+<map id="fv::TupFilter&lt; ArgTypes &gt;" name="fv::TupFilter&lt; ArgTypes &gt;">
+<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="292,5,456,61"/>
+<area shape="rect" id="node3" href="$classfv_1_1Value.html" title="fv::Value\&lt; std::vector\l\&lt; std::tuple\&lt; ArgTypes... \&gt; \&gt; \&gt;" alt="" coords="5,13,235,54"/>
+<area shape="rect" id="node4" href="$classfv_1_1Value.html" title="fv::Value\&lt; value_type \&gt;" alt="" coords="284,85,464,112"/>
+</map>

+ 1 - 0
docs/classfv_1_1TupFilter__coll__graph.md5

@@ -0,0 +1 @@
+b9ea9edf041969522e839959b72bb2ee

BIN
docs/classfv_1_1TupFilter__coll__graph.png


+ 4 - 0
docs/classfv_1_1TupFilter__inherit__graph.map

@@ -0,0 +1,4 @@
+<map id="fv::TupFilter&lt; ArgTypes &gt;" name="fv::TupFilter&lt; ArgTypes &gt;">
+<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="38,95,202,151"/>
+<area shape="rect" id="node3" href="$classfv_1_1Value.html" title="fv::Value\&lt; std::vector\l\&lt; std::tuple\&lt; ArgTypes... \&gt; \&gt; \&gt;" alt="" coords="5,5,235,47"/>
+</map>

+ 1 - 0
docs/classfv_1_1TupFilter__inherit__graph.md5

@@ -0,0 +1 @@
+46a3c3674023ad30324ef78d0a909f53

BIN
docs/classfv_1_1TupFilter__inherit__graph.png


+ 4 - 0
docs/classfv_1_1TupFilter_a0d1078323dca5f712ee122b14bafd20b_cgraph.map

@@ -0,0 +1,4 @@
+<map id="fv::TupFilter::update_value" name="fv::TupFilter::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="203,5,353,32"/>
+<area shape="rect" id="node3" href="$namespacefv.html#a182def996bfac5212fd450627a187ae4" title="This calls a function of type F with the contents of the tuple as separate arguments. " alt="" coords="245,56,311,83"/>
+</map>

+ 1 - 0
docs/classfv_1_1TupFilter_a0d1078323dca5f712ee122b14bafd20b_cgraph.md5

@@ -0,0 +1 @@
+12729c4f87075f9d68b6ca22c5b988c7

BIN
docs/classfv_1_1TupFilter_a0d1078323dca5f712ee122b14bafd20b_cgraph.png


File diff suppressed because it is too large
+ 4 - 4
docs/container_8hpp_source.html


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


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


+ 2 - 0
docs/functions.html

@@ -77,11 +77,13 @@ $(function() {
 , <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>
+, <a class="el" href="classfv_1_1Filter.html#a3666dcad055ca8b0f7c7ab675f5eb57d">fv::Filter&lt; T &gt;</a>
 , <a class="el" href="classfv_1_1Map_3_01Ret_07ArgTypes_8_8_8_08_4.html#acd85576e1e4eb0eb4ef0d4947299478c">fv::Map&lt; Ret(ArgTypes...)&gt;</a>
 , <a class="el" href="classfv_1_1Pair.html#ab3225f03f49240fc1547a5005f57b864">fv::Pair&lt; T1, T2 &gt;</a>
 , <a class="el" href="classfv_1_1PointerValue.html#a81e39d040919be39c37f845a27343f3e">fv::PointerValue&lt; T &gt;</a>
 , <a class="el" href="classfv_1_1Reduce.html#ab0809c4ab1884b84a7f88e005ade76a5">fv::Reduce&lt; T &gt;</a>
 , <a class="el" href="classfv_1_1ReduceIndex.html#a462bffebe2a93c940aca526566d48e37">fv::ReduceIndex&lt; T &gt;</a>
+, <a class="el" href="classfv_1_1TupFilter.html#a0d1078323dca5f712ee122b14bafd20b">fv::TupFilter&lt; ArgTypes &gt;</a>
 , <a class="el" href="classfv_1_1Tuple.html#a5cbf67ef6b68f1a18fb4b2b4e8b98c22">fv::Tuple&lt; ArgTypes &gt;</a>
 , <a class="el" href="classfv_1_1WrapperVector.html#a2ee99bc4425642d209df7b48ee2ada95">fv::WrapperVector&lt; T &gt;</a>
 , <a class="el" href="classfv_1_1Zip.html#abecba2b15aa8dccf72c0dff1f2304c8b">fv::Zip&lt; ArgTypes &gt;</a>

+ 2 - 0
docs/functions_func.html

@@ -74,11 +74,13 @@ $(function() {
 , <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>
+, <a class="el" href="classfv_1_1Filter.html#a3666dcad055ca8b0f7c7ab675f5eb57d">fv::Filter&lt; T &gt;</a>
 , <a class="el" href="classfv_1_1Map_3_01Ret_07ArgTypes_8_8_8_08_4.html#acd85576e1e4eb0eb4ef0d4947299478c">fv::Map&lt; Ret(ArgTypes...)&gt;</a>
 , <a class="el" href="classfv_1_1Pair.html#ab3225f03f49240fc1547a5005f57b864">fv::Pair&lt; T1, T2 &gt;</a>
 , <a class="el" href="classfv_1_1PointerValue.html#a81e39d040919be39c37f845a27343f3e">fv::PointerValue&lt; T &gt;</a>
 , <a class="el" href="classfv_1_1Reduce.html#ab0809c4ab1884b84a7f88e005ade76a5">fv::Reduce&lt; T &gt;</a>
 , <a class="el" href="classfv_1_1ReduceIndex.html#a462bffebe2a93c940aca526566d48e37">fv::ReduceIndex&lt; T &gt;</a>
+, <a class="el" href="classfv_1_1TupFilter.html#a0d1078323dca5f712ee122b14bafd20b">fv::TupFilter&lt; ArgTypes &gt;</a>
 , <a class="el" href="classfv_1_1Tuple.html#a5cbf67ef6b68f1a18fb4b2b4e8b98c22">fv::Tuple&lt; ArgTypes &gt;</a>
 , <a class="el" href="classfv_1_1WrapperVector.html#a2ee99bc4425642d209df7b48ee2ada95">fv::WrapperVector&lt; T &gt;</a>
 , <a class="el" href="classfv_1_1Zip.html#abecba2b15aa8dccf72c0dff1f2304c8b">fv::Zip&lt; ArgTypes &gt;</a>

+ 14 - 12
docs/hierarchy.html

@@ -125,20 +125,22 @@ This inheritance list is sorted roughly, but not completely, alphabetically:</di
 <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_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_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"></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_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_"><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_" 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_22_"><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_" class="even"><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_"><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_" 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_24_"><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_" 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_26_"><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_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>
 </table>
 </div><!-- directory -->
 </div><!-- contents -->

+ 2 - 2
docs/inherit_graph_18.map

@@ -1,6 +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; 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_1Zip.html" title="Zips a series of vectors together. " alt="" coords="501,5,653,32"/>
-<area shape="rect" id="node4" href="$classfv_1_1Zip.html" title="fv::Zip\&lt; ArgTypes... \&gt;" alt="" coords="495,56,659,83"/>
+<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_18.md5

@@ -1 +1 @@
-3ee1971d97d98b6d948bf1d7a6ae1b43
+f116ee487ccae6e6cd06864376d2909a

BIN
docs/inherit_graph_18.png


+ 4 - 3
docs/inherit_graph_19.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; std::vector\l\&lt; T \&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; T \&gt; \&gt;" alt="" coords="216,5,380,47"/>
-<area shape="rect" id="node3" href="$classfv_1_1WrapperVector.html" title="A std::vector wrapper around a C&#45;style array. " alt="" coords="428,13,603,39"/>
+<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_19.md5

@@ -1 +1 @@
-9fd8af1eb80e847ac121132e22ae450f
+50f502fe6a1f986ee356c8dfb62f979b

BIN
docs/inherit_graph_19.png


+ 1 - 1
docs/inherit_graph_27.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; value_type \&gt;" alt="" coords="5,5,185,32"/>
 </map>

+ 1 - 1
docs/inherit_graph_27.md5

@@ -1 +1 @@
-f8590c51af3be772bdcff3584679d957
+dccb4fe1767046fe6b430b67f699d01b

BIN
docs/inherit_graph_27.png


+ 11 - 5
docs/inherits.html

@@ -187,15 +187,16 @@ $(function() {
 <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"/>
-<area shape="rect" id="node3" href="classfv_1_1Zip.html" title="Zips a series of vectors together. " alt="" coords="501,5,653,32"/>
-<area shape="rect" id="node4" href="classfv_1_1Zip.html" title="fv::Zip\&lt; ArgTypes... \&gt;" alt="" coords="495,56,659,83"/>
+<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>
 </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"/>
 <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,5,168,47"/>
-<area shape="rect" id="node2" href="classfv_1_1DerivedValue.html" title="fv::DerivedValue\&lt; std\l::vector\&lt; T \&gt; \&gt;" alt="" coords="216,5,380,47"/>
-<area shape="rect" id="node3" href="classfv_1_1WrapperVector.html" title="A std::vector wrapper around a C&#45;style array. " alt="" coords="428,13,603,39"/>
+<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>
 </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"/>
@@ -246,6 +247,11 @@ $(function() {
 <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"/>
+<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>
+</td></tr>
 </table>
 </div><!-- contents -->
 <!-- start footer part -->

+ 12 - 6
docs/namespacefv.html

@@ -98,6 +98,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_1ElementOf.html">ElementOf</a></td></tr>
 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Extract the element at a specific index from a vector.  <a href="classfv_1_1ElementOf.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_1Filter.html">Filter</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the elements in a vector that pass a test function.  <a href="classfv_1_1Filter.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_1Function_3_01R_07ArgTypes_8_8_8_08_4.html">Function&lt; R(ArgTypes...)&gt;</a></td></tr>
 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">In order to enable proper provenance tracking, and at the same time keep the ability to embed functions into values, the Function class should be used.  <a href="classfv_1_1Function_3_01R_07ArgTypes_8_8_8_08_4.html#details">More...</a><br /></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -143,6 +146,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_1ReduceIndex.html">ReduceIndex</a></td></tr>
 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Similar to <a class="el" href="classfv_1_1Reduce.html" title="Reduce a Value of type vector&lt;T&gt; to just a T. ">Reduce</a>, but returns a pair of a T and an int.  <a href="classfv_1_1ReduceIndex.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_1TupFilter.html">TupFilter</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the elements in a vector that pass a test function.  <a href="classfv_1_1TupFilter.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_1Tuple.html">Tuple</a></td></tr>
 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Takes a series of <a class="el" href="classfv_1_1Value.html" title="A generic value. ">Value</a> objects and bundles them together into a std::tuple object.  <a href="classfv_1_1Tuple.html#details">More...</a><br /></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -180,9 +186,9 @@ Functions</h2></td></tr>
 template&lt;typename T &gt; </td></tr>
 <tr class="memitem:a0fae7ec6ace37b889e1dd4d6a6cdc813"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classfv_1_1Value.html">Value</a>&lt; T &gt; *&#160;</td><td class="memTemplItemRight" valign="bottom"><b>lookup</b> (const std::string &amp;name)</td></tr>
 <tr class="separator:a0fae7ec6ace37b889e1dd4d6a6cdc813"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a45702232f05163457af6b331bb03a352"><td class="memItemLeft" align="right" valign="top"><a id="a45702232f05163457af6b331bb03a352"></a>
-Filter *&#160;</td><td class="memItemRight" valign="bottom"><b>lookup_filter</b> (const std::string &amp;name)</td></tr>
-<tr class="separator:a45702232f05163457af6b331bb03a352"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a18680fa2be352500598d8001eb9b2fd1"><td class="memItemLeft" align="right" valign="top"><a id="a18680fa2be352500598d8001eb9b2fd1"></a>
+ObsFilter *&#160;</td><td class="memItemRight" valign="bottom"><b>lookup_obs_filter</b> (const std::string &amp;name)</td></tr>
+<tr class="separator:a18680fa2be352500598d8001eb9b2fd1"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a64a1f0e13731499d25233a0869d32371"><td class="memTemplParams" colspan="2"><a id="a64a1f0e13731499d25233a0869d32371"></a>
 template&lt;typename... ArgTypes&gt; </td></tr>
 <tr class="memitem:a64a1f0e13731499d25233a0869d32371"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classfv_1_1Zip.html">Zip</a>&lt; ArgTypes... &gt; *&#160;</td><td class="memTemplItemRight" valign="bottom"><b>zip</b> (<a class="el" href="classfv_1_1Value.html">Value</a>&lt; std::vector&lt; ArgTypes &gt;&gt; *... args, const std::string &amp;alias=&quot;&quot;)</td></tr>
@@ -247,9 +253,9 @@ template&lt;typename T &gt; </td></tr>
 template&lt;typename T &gt; </td></tr>
 <tr class="memitem:a5664cf7172a7c27d8d9e19bd8eb5d78d"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classfv_1_1Count.html">Count</a>&lt; T &gt; *&#160;</td><td class="memTemplItemRight" valign="bottom"><b>count</b> (Function&lt; bool(T)&gt; &amp;selector, const std::string &amp;v_name, const std::string alias)</td></tr>
 <tr class="separator:a5664cf7172a7c27d8d9e19bd8eb5d78d"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a776430ebcc0f4265018e5f55501c0336"><td class="memItemLeft" align="right" valign="top"><a id="a776430ebcc0f4265018e5f55501c0336"></a>
-Filter *&#160;</td><td class="memItemRight" valign="bottom"><b>filter</b> (const std::string &amp;name, std::function&lt; bool()&gt; filter_function, const std::string &amp;impl=&quot;&quot;)</td></tr>
-<tr class="separator:a776430ebcc0f4265018e5f55501c0336"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a97c916f0cec36778d54ff19e98c8abaf"><td class="memItemLeft" align="right" valign="top"><a id="a97c916f0cec36778d54ff19e98c8abaf"></a>
+ObsFilter *&#160;</td><td class="memItemRight" valign="bottom"><b>obs_filter</b> (const std::string &amp;name, std::function&lt; bool()&gt; filter_function, const std::string &amp;impl=&quot;&quot;)</td></tr>
+<tr class="separator:a97c916f0cec36778d54ff19e98c8abaf"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a182def996bfac5212fd450627a187ae4"><td class="memTemplParams" colspan="2">template&lt;typename F , typename TUPLE &gt; </td></tr>
 <tr class="memitem:a182def996bfac5212fd450627a187ae4"><td class="memTemplItemLeft" align="right" valign="top">auto&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacefv.html#a182def996bfac5212fd450627a187ae4">call</a> (F &amp;f, TUPLE &amp;&amp;t)</td></tr>
 <tr class="memdesc:a182def996bfac5212fd450627a187ae4"><td class="mdescLeft">&#160;</td><td class="mdescRight">This calls a function of type F with the contents of the tuple as separate arguments.  <a href="#a182def996bfac5212fd450627a187ae4">More...</a><br /></td></tr>

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


+ 1 - 2
docs/search/all_11.js

@@ -1,5 +1,4 @@
 var searchData=
 [
-  ['zip',['Zip',['../classfv_1_1Zip.html',1,'fv']]],
-  ['zip_3c_20argtypes_2e_2e_2e_20_3e',['Zip&lt; ArgTypes... &gt;',['../classfv_1_1Zip.html',1,'fv']]]
+  ['zip',['Zip',['../classfv_1_1Zip.html',1,'fv']]]
 ];

+ 1 - 0
docs/search/all_5.js

@@ -1,5 +1,6 @@
 var searchData=
 [
+  ['filter',['Filter',['../classfv_1_1Filter.html',1,'fv']]],
   ['filter_2ehpp',['filter.hpp',['../filter_8hpp.html',1,'']]],
   ['format_5fcode',['format_code',['../classfv_1_1GenFunction.html#aecc1187b5bb9c551c104eb8478bdb567',1,'fv::GenFunction']]],
   ['function_3c_20r_28argtypes_2e_2e_2e_29_3e',['Function&lt; R(ArgTypes...)&gt;',['../classfv_1_1Function_3_01R_07ArgTypes_8_8_8_08_4.html',1,'fv']]],

+ 1 - 0
docs/search/all_d.js

@@ -2,6 +2,7 @@ var searchData=
 [
   ['tttt_20production_20cross_2dsection_20measurement',['TTTT Production Cross-Section Measurement',['../index.html',1,'']]],
   ['tttt_5fanalysis_2ecpp',['TTTT_Analysis.cpp',['../TTTT__Analysis_8cpp.html',1,'']]],
+  ['tupfilter',['TupFilter',['../classfv_1_1TupFilter.html',1,'fv']]],
   ['tuple',['Tuple',['../classfv_1_1Tuple.html',1,'fv']]],
   ['tuple_3c_20argtypes_2e_2e_2e_20_3e',['Tuple&lt; ArgTypes... &gt;',['../classfv_1_1Tuple.html',1,'fv']]]
 ];

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


+ 2 - 1
docs/search/all_f.js

@@ -23,5 +23,6 @@ var searchData=
   ['value_3c_20t_20_2a_20_3e',['Value&lt; T * &gt;',['../classfv_1_1Value.html',1,'fv']]],
   ['value_3c_20t_20_2a_3e',['Value&lt; T *&gt;',['../classfv_1_1Value.html',1,'fv']]],
   ['value_3c_20tlorentzvector_20_3e',['Value&lt; TLorentzVector &gt;',['../classfv_1_1Value.html',1,'fv']]],
-  ['value_3c_20v_20_3e',['Value&lt; V &gt;',['../classfv_1_1Value.html',1,'fv']]]
+  ['value_3c_20v_20_3e',['Value&lt; V &gt;',['../classfv_1_1Value.html',1,'fv']]],
+  ['value_3c_20value_5ftype_20_3e',['Value&lt; value_type &gt;',['../classfv_1_1Value.html',1,'fv']]]
 ];

+ 1 - 0
docs/search/classes_5.js

@@ -1,4 +1,5 @@
 var searchData=
 [
+  ['filter',['Filter',['../classfv_1_1Filter.html',1,'fv']]],
   ['function_3c_20r_28argtypes_2e_2e_2e_29_3e',['Function&lt; R(ArgTypes...)&gt;',['../classfv_1_1Function_3_01R_07ArgTypes_8_8_8_08_4.html',1,'fv']]]
 ];

+ 1 - 0
docs/search/classes_b.js

@@ -1,5 +1,6 @@
 var searchData=
 [
+  ['tupfilter',['TupFilter',['../classfv_1_1TupFilter.html',1,'fv']]],
   ['tuple',['Tuple',['../classfv_1_1Tuple.html',1,'fv']]],
   ['tuple_3c_20argtypes_2e_2e_2e_20_3e',['Tuple&lt; ArgTypes... &gt;',['../classfv_1_1Tuple.html',1,'fv']]]
 ];

+ 2 - 1
docs/search/classes_c.js

@@ -22,5 +22,6 @@ var searchData=
   ['value_3c_20t_20_2a_20_3e',['Value&lt; T * &gt;',['../classfv_1_1Value.html',1,'fv']]],
   ['value_3c_20t_20_2a_3e',['Value&lt; T *&gt;',['../classfv_1_1Value.html',1,'fv']]],
   ['value_3c_20tlorentzvector_20_3e',['Value&lt; TLorentzVector &gt;',['../classfv_1_1Value.html',1,'fv']]],
-  ['value_3c_20v_20_3e',['Value&lt; V &gt;',['../classfv_1_1Value.html',1,'fv']]]
+  ['value_3c_20v_20_3e',['Value&lt; V &gt;',['../classfv_1_1Value.html',1,'fv']]],
+  ['value_3c_20value_5ftype_20_3e',['Value&lt; value_type &gt;',['../classfv_1_1Value.html',1,'fv']]]
 ];

+ 1 - 2
docs/search/classes_e.js

@@ -1,5 +1,4 @@
 var searchData=
 [
-  ['zip',['Zip',['../classfv_1_1Zip.html',1,'fv']]],
-  ['zip_3c_20argtypes_2e_2e_2e_20_3e',['Zip&lt; ArgTypes... &gt;',['../classfv_1_1Zip.html',1,'fv']]]
+  ['zip',['Zip',['../classfv_1_1Zip.html',1,'fv']]]
 ];

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


+ 6 - 0
docs/value_8hpp.html

@@ -144,6 +144,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_1Map_3_01Ret_07ArgTypes_8_8_8_08_4.html">fv::Map&lt; Ret(ArgTypes...)&gt;</a></td></tr>
 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maps a function over an input vector.  <a href="classfv_1_1Map_3_01Ret_07ArgTypes_8_8_8_08_4.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_1TupFilter.html">fv::TupFilter&lt; ArgTypes &gt;</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the elements in a vector that pass a test function.  <a href="classfv_1_1TupFilter.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_1Tuple.html">fv::Tuple&lt; ArgTypes &gt;</a></td></tr>
 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Takes a series of <a class="el" href="classfv_1_1Value.html" title="A generic value. ">Value</a> objects and bundles them together into a std::tuple object.  <a href="classfv_1_1Tuple.html#details">More...</a><br /></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -153,6 +156,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_1Count.html">fv::Count&lt; T &gt;</a></td></tr>
 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the count of elements in the input vector passing a test function.  <a href="classfv_1_1Count.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_1Filter.html">fv::Filter&lt; T &gt;</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the elements in a vector that pass a test function.  <a href="classfv_1_1Filter.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_1Reduce.html">fv::Reduce&lt; T &gt;</a></td></tr>
 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classfv_1_1Reduce.html" title="Reduce a Value of type vector&lt;T&gt; to just a T. ">Reduce</a> a <a class="el" href="classfv_1_1Value.html" title="A generic value. ">Value</a> of type vector&lt;T&gt; to just a T.  <a href="classfv_1_1Reduce.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
+ 38 - 34
docs/value_8hpp_source.html


+ 5 - 5
filval/api.hpp

@@ -15,10 +15,10 @@ namespace fv{
         return tv;
     }
 
-    Filter* lookup_filter(const std::string& name){
-        Filter* f =  dynamic_cast<Filter*>(GenValue::get_value(name));
+    ObsFilter* lookup_obs_filter(const std::string& name){
+        ObsFilter* f =  dynamic_cast<ObsFilter*>(GenValue::get_value(name));
         if(f == nullptr){
-            CRITICAL("Filter: "+f->get_name() + "has improper type.",-1);
+            CRITICAL("ObsFilter: "+f->get_name() + "has improper type.",-1);
         }
         return f;
     }
@@ -107,8 +107,8 @@ namespace fv{
         return count<T>(selector, lookup<std::vector<T>>(v_name), alias);
     }
 
-    Filter* filter(const std::string& name, std::function<bool()> filter_function, const std::string& impl=""){
-        return new Filter(name, filter_function, impl);
+    ObsFilter* obs_filter(const std::string& name, std::function<bool()> filter_function, const std::string& impl=""){
+        return new ObsFilter(name, filter_function, impl);
     }
 }
 #endif // API_HPP

+ 4 - 3
filval/container.hpp

@@ -78,7 +78,7 @@ class GenContainer{
     private:
         std::string name;
         std::string desc;
-        std::vector<Filter*> filters;
+        std::vector<ObsFilter*> filters;
     protected:
         virtual void _fill() = 0;
     public:
@@ -88,8 +88,9 @@ class GenContainer{
         GenContainer(const std::string name)
           :GenContainer(name,"N/A"){ }
 
-        void add_filter(GenValue* filter){
-            filters.push_back(dynamic_cast<Filter*>(filter));
+        GenContainer* add_filter(GenValue* filter){
+            filters.push_back(dynamic_cast<ObsFilter*>(filter));
+            return this;
         }
 
         void fill(){

+ 2 - 1
filval/dataset.hpp

@@ -82,11 +82,12 @@ class DataSet{
                 container.second->save();
         }
 
-        void register_container(GenContainer *container){
+        GenContainer* register_container(GenContainer *container){
             if (containers[container->get_name()] != nullptr){
                 CRITICAL("Container with name \""+container->get_name()+"\" already exists.", -1);
             }
             containers[container->get_name()] = container;
+            return container;
         }
 
         GenContainer* get_container(std::string container_name){

+ 11 - 11
filval/filter.hpp

@@ -41,7 +41,7 @@
 #include "value.hpp"
 namespace fv {
 
-class Filter : public DerivedValue<bool>{
+class ObsFilter : public DerivedValue<bool>{
     private:
         Function<bool()>& filter_function;
 
@@ -52,40 +52,40 @@ class Filter : public DerivedValue<bool>{
         void verify_integrity(){ };
 
     public:
-        Filter(const std::string& name, std::function<bool()> filter_function, const std::string& impl="")
+        ObsFilter(const std::string& name, std::function<bool()> filter_function, const std::string& impl="")
           :DerivedValue<bool>(name),
            filter_function(GenFunction::register_function<bool()>("filter::"+name, filter_function, impl)){ }
 
         /** Return a new filter that is the conjuction of the two source
          * filters.
          */
-        Filter* operator*(Filter *f){
+        ObsFilter* operator*(ObsFilter *f){
             auto new_name = this->get_name() + "&&" + f->get_name();
-            return new Filter(new_name, [this, f](){return this->get_value() && f->get_value();});
+            return new ObsFilter(new_name, [this, f](){return this->get_value() && f->get_value();});
         }
 
         /** Return a new filter that is the disjunction of the two source
          * filters.
          */
-        Filter* operator+(Filter *f){
+        ObsFilter* operator+(ObsFilter *f){
             auto new_name = this->get_name() + "||" + f->get_name();
-            return new Filter(new_name, [this, f](){return this->get_value() || f->get_value();});
+            return new ObsFilter(new_name, [this, f](){return this->get_value() || f->get_value();});
         }
 
         /** Return a new filter that is the negation of the source filter.
          */
-        Filter* operator!(){
+        ObsFilter* operator!(){
             auto new_name = std::string("!(") + this->get_name() + std::string(")");
-            return new Filter(new_name, [this](){return !this->get_value();});
+            return new ObsFilter(new_name, [this](){return !this->get_value();});
         }
 };
 
 template <typename T>
-class RangeFilter : public Filter{
+class RangeObsFilter : public ObsFilter{
     private:
     public:
-        RangeFilter(const std::string name, Value<T>* test_value, T range_low, T range_high):
-          Filter(name, [test_value, range_low, range_high]{
+        RangeObsFilter(const std::string name, Value<T>* test_value, T range_low, T range_high):
+          ObsFilter(name, [test_value, range_low, range_high]{
                   T val = test_value->get_value();
                   return (val >= range_low) && (val < range_high);
                   }) { }

+ 64 - 2
filval/value.hpp

@@ -164,6 +164,19 @@ class GenFunction {
             in_register_function = false;
             return *func;
         }
+
+        template <typename T>
+        static Function<T>& lookup_function(const std::string& name){
+            if (GenFunction::function_registry[name] == nullptr){
+                CRITICAL("Function \"" << name << "\" not previously registered", -1);
+            } else {
+                Function<T>* func = dynamic_cast<Function<T>*>(GenFunction::function_registry[name]);
+                if (func == nullptr){
+                    CRITICAL("Function \"" << name << "\" request and register have mismatched types", -1);
+                }
+                return *GenFunction::function_registry[name];
+            }
+        }
 };
 
 
@@ -564,8 +577,9 @@ template<typename> class Map; // undefined
 template <typename Ret, typename... ArgTypes>
 class Map<Ret(ArgTypes...)> : public DerivedValue<std::vector<Ret>>{
     private:
+        typedef Value<std::vector<std::tuple<ArgTypes...>>> arg_type;
         Function<Ret(ArgTypes...)>& fn;
-        Zip<ArgTypes...>* arg;
+        arg_type* arg;
 
         void update_value(){
             this->value.clear();
@@ -575,11 +589,36 @@ class Map<Ret(ArgTypes...)> : public DerivedValue<std::vector<Ret>>{
         }
 
     public:
-        Map(Function<Ret(ArgTypes...)>& fn, Zip<ArgTypes...>* arg, const std::string& alias)
+        Map(Function<Ret(ArgTypes...)>& fn, arg_type* arg, const std::string& alias)
           :DerivedValue<std::vector<Ret>>("map("+fn.get_name()+":"+arg->get_name()+")", alias),
            fn(fn), arg(arg){ }
 
 };
+/**
+ * Returns the elements in a vector that pass a test function. The elements on
+ * the vector must be tuples. Typically this will be used in conjunction with
+ * Zip and Map.
+ */
+template<typename... ArgTypes>
+class TupFilter : public DerivedValue<std::vector<std::tuple<ArgTypes...>>>{
+    private:
+        typedef std::vector<std::tuple<ArgTypes...>> value_type;
+        Function<bool(ArgTypes...)>& filter;
+        Value<value_type>* arg;
+
+        void update_value(){
+            this->value.clear();
+            for(auto val : arg->get_value()){
+                if(call(filter,val))
+                    this->value.push_back(val);
+            }
+        }
+
+    public:
+        TupFilter(Function<bool(ArgTypes...)>& filter, Value<value_type>* arg, const std::string alias)
+          :DerivedValue<value_type>("filter("+filter.get_name()+":"+arg->get_name()+")", alias),
+           filter(filter), arg(arg) { }
+};
 
 template<typename... T> class _Tuple;
 template<>
@@ -694,6 +733,29 @@ class Count : public DerivedValue<int>{
            selector(selector), v(v) { }
 };
 
+/**
+ * Returns the elements in a vector that pass a test function.
+ */
+template<typename T>
+class Filter : public DerivedValue<std::vector<T>>{
+    private:
+        Function<bool(T)>& filter;
+        Value<std::vector<T> >* v;
+
+        void update_value(){
+            this->value.clear();
+            for(auto val : v->get_value()){
+                if(selector(val))
+                    this->value.push_back(val);
+            }
+        }
+
+    public:
+        Filter(Function<bool(T)>& filter, Value<std::vector<T>>* v, const std::string alias)
+          :DerivedValue<std::vector<T>>("filter("+filter.get_name()+":"+v->get_name()+")", alias),
+           filter(filter), v(v) { }
+};
+
 
 /**
  * Reduce a Value of type vector<T> to just a T.

+ 2 - 2
filval_root/container.hpp

@@ -194,8 +194,8 @@ class _ContainerTH2 : public Container<TH2>{
 };
 
 template <typename V>
-class ContainerTH2 : public _ContainerTH2<std::vector<V>>{
-    using _ContainerTH2<std::vector<V>>::_ContainerTH2;
+class ContainerTH2 : public _ContainerTH2<V>{
+    using _ContainerTH2<V>::_ContainerTH2;
     void _do_fill(std::pair<V,V>& val){
         this->container->Fill(val.first,val.second);
     }

File diff suppressed because it is too large
+ 107 - 32
python/TTTT_Analysis.ipynb


+ 83 - 38
python/utils.py

@@ -3,7 +3,7 @@ import os
 import sys
 import itertools as it
 from os.path import dirname, join, abspath, normpath, getctime
-from math import ceil, sqrt
+from math import ceil, floor, sqrt
 from subprocess import run, PIPE
 from IPython.display import Image
 
@@ -42,19 +42,41 @@ MAX_WIDTH = 1800
 SCALE = .75
 CAN_SIZE_DEF = (int(1600*SCALE), int(1200*SCALE))
 CANVAS = ROOT.TCanvas("c1", "", *CAN_SIZE_DEF)
+ROOT.gStyle.SetPalette(112)  # set the "virdidis" color map
+
+def clear():
+    CANVAS.Clear()
+    CANVAS.SetCanvasSize(*CAN_SIZE_DEF)
+
+def get_color(val, max_val, min_val = 0):
+    val = (val-min_val)/(max_val-min_val)
+    val = round(val * (ROOT.gStyle.GetNumberOfColors()-1))
+    col_idx = ROOT.gStyle.GetColorPalette(val)
+    col = ROOT.gROOT.GetColor(col_idx)
+    r = floor(256*col.GetRed())
+    g = floor(256*col.GetGreen())
+    b = floor(256*col.GetBlue())
+    gs = (r + g + b)//3
+    text_color = 'white' if gs < 100 else 'black'
+    return '#{:02x}{:02x}{:02x}'.format(r, g, b), text_color
 
 
 def show_event(dataset, idx):
     ids = list(dataset.GenPart_pdgId[idx])
-    nrgs = list(dataset.GenPart_energy[idx])
+    stats = list(dataset.GenPart_status[idx])
+    energies = list(dataset.GenPart_energy[idx])
     links = list(dataset.GenPart_motherIndex[idx])
-    max_nrg = max(nrgs)
-    nrgs_scaled = [nrg/max_nrg for nrg in nrgs]
+    max_energy = max(energies)
     g = pdp.Dot()
     for i, id_ in enumerate(ids):
-        color = ",".join(map(str, [nrgs_scaled[i], .7, .8]))
-        g.add_node(pdp.Node(str(i), label=PDG[id_],
+        color, text_color = get_color(energies[i], max_energy)
+        shape = "ellipse" if stats[i] in (1, 23) else "invhouse"
+        label = "{}({})".format(PDG[id_], stats[i])
+        # label = PDG[id_]+"({:03e})".format(energies[i])
+        g.add_node(pdp.Node(str(i), label=label,
                    style="filled",
+                   shape=shape,
+                   fontcolor=text_color,
                    fillcolor=color))
     for i, mother in enumerate(links):
         if mother != -1:
@@ -88,30 +110,21 @@ class OutputCapture:
         self.stderr = None
 
 
-def bin_range(n, end=None):
-    if end is None:
-        return range(1, n+1)
-    else:
-        return range(n+1, end+1)
-
-
 def normalize_columns(hist2d):
     normHist = ROOT.TH2D(hist2d)
     cols, rows = hist2d.GetNbinsX(), hist2d.GetNbinsY()
-    for col in bin_range(cols):
+    for col in range(1, cols+1):
         sum_ = 0
-        for row in bin_range(rows):
+        for row in range(1, rows+1):
             sum_ += hist2d.GetBinContent(col, row)
         if sum_ == 0:
             continue
-        for row in bin_range(rows):
+        for row in range(1, rows+1):
             norm = hist2d.GetBinContent(col, row) / sum_
             normHist.SetBinContent(col, row, norm)
     return normHist
 
 
-
-
 class HistCollection:
 
     def __init__(self, sample_name, input_filename):
@@ -137,7 +150,7 @@ class HistCollection:
         def recompute():
             print("Running analysis for sample: ", self.sample_name)
             if run([EXE_PATH, "-s", "-f", self.input_filename]).returncode != 0:
-                raise RuntimeError(("Failed recompiling analysis code."
+                raise RuntimeError(("Failed running analysis code."
                                     " See log file for more information"))
 
         if run(["make"], cwd=join(PRJ_PATH, "build"), stdout=PIPE, stderr=PIPE).returncode != 0:
@@ -164,36 +177,47 @@ class HistCollection:
             setattr(self, name, obj)
         file.Close()
 
+    @classmethod
+    def calc_shape(cls, n_plots):
+        if n_plots*SINGLE_PLOT_SIZE[0] > MAX_WIDTH:
+            shape_x = MAX_WIDTH//SINGLE_PLOT_SIZE[0]
+            shape_y = ceil(n_plots / shape_x)
+            return (shape_x, shape_y)
+        else:
+            return (n_plots, 1)
+
+
     def draw(self, shape=None):
+        objs = [obj for obj in self.map.values() if hasattr(obj, "Draw")]
         if shape is None:
-            n_plots = len([obj for obj in self.map.values() if hasattr(obj, "Draw") ])
-            if n_plots*SINGLE_PLOT_SIZE[0] > MAX_WIDTH:
-                shape_x = MAX_WIDTH//SINGLE_PLOT_SIZE[0]
-                shape_y = ceil(n_plots / shape_x)
-                shape = (shape_x, shape_y)
+            n_plots = len(objs)
+            shape = self.calc_shape(n_plots)
         CANVAS.Clear()
         CANVAS.SetCanvasSize(shape[0]*SINGLE_PLOT_SIZE[0], shape[1]*SINGLE_PLOT_SIZE[1])
         CANVAS.Divide(*shape)
         i = 1
-        for hist in self.map.values():
+        for hist in objs:
             CANVAS.cd(i)
             try:
                 hist.SetStats(False)
             except AttributeError:
                 pass
-            draw_option = ""
-            if type(hist) in (ROOT.TH1F, ROOT.TH1I, ROOT.TH1D):
-                draw_option = ""
-            elif type(hist) in (ROOT.TH2F, ROOT.TH2I, ROOT.TH2D):
-                draw_option = "COLZ"
-            elif type(hist) in (ROOT.TGraph,):
-                draw_option = "A*"
-            else:
-                continue  # Not a drawable type(probably)
-            hist.Draw(draw_option)
+            hist.Draw(self.get_draw_option(hist))
             i += 1
         CANVAS.Draw()
 
+    @staticmethod
+    def get_draw_option(obj):
+        obj_type = type(obj)
+        if obj_type in (ROOT.TH1F, ROOT.TH1I, ROOT.TH1D):
+            return ""
+        elif obj_type in (ROOT.TH2F, ROOT.TH2I, ROOT.TH2D):
+            return "COLZ"
+        elif obj_type in (ROOT.TGraph,):
+            return "A*"
+        else:
+            return None
+
     @classmethod
     def get_hist_set(cls, attrname):
         labels, hists = zip(*[(sample_name, getattr(h, attrname))
@@ -263,11 +287,32 @@ class HistCollection:
                 shape = (1, n_hists)
             else:
                 shape = (ceil(sqrt(n_hists)),)*2
-        CANVAS.SetCanvasSize(SINGLE_PLOT_SIZE[0]*shape[0], SINGLE_PLOT_SIZE[1]*shape[1])
+        CANVAS.SetCanvasSize(SINGLE_PLOT_SIZE[0]*shape[0],
+                             SINGLE_PLOT_SIZE[1]*shape[1])
         CANVAS.Divide(*shape)
-        for i, hist_name, title in zip(bin_range(n_hists), hist_names, titles):
+        for i, hist_name, title in zip(range(1, n_hists+1), hist_names, titles):
             CANVAS.cd(i)
-            hists, labels = cls.get_hist_set(hist_name)
             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, "")
+
+    pts = []
+    @classmethod
+    def hist_array_single(cls,
+                          hist_name,
+                          title=None,
+                          **kwargs):
+        n_hists = len(cls.collections)
+        shape = cls.calc_shape(n_hists)
+        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)
+            CANVAS.cd(i)
+            hist.SetStats(False)
+            hist.Draw(cls.get_draw_option(hist))
+            pt.AddText("Dataset: "+label)
+            pt.Draw()
+            cls.pts.append(pt)