854 if (!filter.empty() && select.Compile(filter.c_str()))
855 throw runtime_error(
"Syntax Error: TFormula::Compile failed for '"+filter+
"'");
859 vector<vector<char>> statData;
863 for (
auto it=cols.begin(); it!=cols.end(); it++)
864 statData.emplace_back(vector<char>(it->col.size*rows*(it->last-it->first+1)));
868 for (
auto it=cols.begin(); it!=cols.end(); it++)
869 num += it->last-it->first+1;
871 vector<Double_t>
data(num+1);
875 const size_t last = limit ?
first + limit : size_t(-1);
881 const size_t row =
GetRow();
892 for (
auto it=cols.begin(); it!=cols.end(); it++)
893 for (uint32_t
i=it->first; i<=it->last;
i++, p++)
896 if (select.EvalPar(0,
data.data())<0.5)
901 auto statsIt = statData.begin();
902 for (
auto it=cols.begin(); it!=cols.end(); it++, statsIt++)
904 const char *src =
reinterpret_cast<const char*
>(it->ptr);
905 const size_t sz = (it->last-it->first+1)*it->col.size;
906 memcpy(statsIt->data()+counter*sz, src+it->first*it->col.size, sz);
912 auto statsIt = statData.begin();
913 for (
auto it=cols.begin(); it!=cols.end(); it++, statsIt++)
915 fout <<
"\n[" << it->name <<
':' << it->first;
916 if (it->last!=it->first)
917 fout <<
':' << it->last;
920 const size_t sz = (it->last-it->first+1)*it->col.size;
921 statsIt->resize(counter*sz);
923 switch (it->col.type)
926 displayStats<bool>(*statsIt, fout);
929 displayStats<char>(*statsIt, fout);
932 displayStats<int16_t>(*statsIt, fout);
935 displayStats<int32_t>(*statsIt, fout);
938 displayStats<int64_t>(*statsIt, fout);
941 displayStats<float>(*statsIt, fout);
944 displayStats<double>(*statsIt, fout);
size_t GetNumRows() const
int64_t first
Size of this column in the tile.
double GetDouble(const MyColumn &, size_t) const