#include "Table.h"
Description: A Table which is a 'structure of arrays'
Usage: A Table provides a 'structure of arrays' using a spreadsheet metaphor. The template arguments of a Table should be edm::soa::Column<> types which declare the type of the column and a label.
The same declaration of a column should be shared by different tables in order to allow the functions to be reused across tables. [See TableView]
Accessing data within a Table is done by specifying the column and row to be used. The column is identified by the edm::soa::Column<> type and the row by an integer.
One can iterate over all rows of a Table and get the values of interest
2) passing a single container of objects where the objects hold the value of interests and where appropriate 'value_for_column' functions are defined [See ColumnFillers.h]
Functions which operate over Tables should not take Tables are arguments. Instead, they should take an edm::soa::TableView<>. This will allow the function to operate on any Table that uses the edm::soa::Column<> type needed by the function.
New Table declarations can be created based on existing Table declarations. E.g. say you want a new Table based on an existing Table but with an additional column.
It is also possible to declare a new Table by removing columns from an existing declaration