// TrackNtuple.cpp #include "TrackNtuple.h" #include "trfutil/Tuple.h" #include "trfutil/TupleManager.h" #include "trffit/TrackMatch.h" #include "trfutil/Tuple.h" using std::vector; using std::string; using trf::TrackNtuple; //********************************************************************** // Local definitions. //********************************************************************** namespace { // Ntuple names. vector names; int name_count = 0; } // end unnamed namespoace //********************************************************************** // Member functions. //********************************************************************** // constructor TrackNtuple::TrackNtuple() : _auto_store(true) { // Assign names. if ( names.size() == 0 ) { names.push_back("tracks"); names.push_back("tracks2"); names.push_back("tracks3"); names.push_back("tracks4"); names.push_back("tracks5"); names.push_back("tracks6"); names.push_back("tracks7"); names.push_back("tracks8"); names.push_back("tracks9"); } // Create the ntuple. assert( name_count < names.size() ); _pntp = &TupleManager::tuple(names[name_count++]); } //********************************************************************** // destructor TrackNtuple::~TrackNtuple() { } //********************************************************************** // Add a column for integer data. // The new number of columns is returned. int TrackNtuple::add_column_int(string name, int def) { get_tuple().columnDirect(name, def); return get_tuple().nColumns(); } //********************************************************************** // Add a column for floating data. // The new number of columns is returned. int TrackNtuple::add_column_float(string name, float def) { get_tuple().columnDirect(name, def); return get_tuple().nColumns(); } //********************************************************************** // Fill an int value. int TrackNtuple::fill_int(string name, int value) { get_tuple().capture(name,value); return ++_fill_count; } //********************************************************************** // Fill an float value. int TrackNtuple::fill_float(string name, float value) { get_tuple().capture(name,value); return ++_fill_count; } //********************************************************************** // Store the data for the row. // Capture missing data and then store and clear all data for the row. int TrackNtuple::store_row() { get_tuple().captureThenStore(); get_tuple().clearData(); _fill_count = 0; return get_tuple().nrows(); } //********************************************************************** // Return the number of columns in the tuple. int TrackNtuple::ncolumns() const { return get_tuple().nColumns(); } //********************************************************************** // Return the number of rows in the tuple. int TrackNtuple::nrows() const { return get_tuple().nrows(); } //**********************************************************************