Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:28:09

0001 // -*- C++ -*-
0002 // AID-GENERATED
0003 // =========================================================================
0004 // This class was generated by AID - Abstract Interface Definition          
0005 // DO NOT MODIFY, but use the org.freehep.aid.Aid utility to regenerate it. 
0006 // =========================================================================
0007 #ifndef AIDA_ITUPLEFACTORY_H
0008 #define AIDA_ITUPLEFACTORY_H 1
0009 
0010 //  This file is part of the AIDA library
0011 //  Copyright (C) 2002 by the AIDA team.  All rights reserved.
0012 //  This library is free software and under the terms of the
0013 //  GNU Library General Public License described in the LGPL.txt
0014 
0015 #include <string>
0016 #include <vector>
0017 
0018 namespace AIDA {
0019 
0020 class IEvaluator;
0021 class IFilter;
0022 class ITuple;
0023 
0024 /**
0025  * A factory for creating ITuples.
0026  *
0027  * @author The AIDA team (http://aida.freehep.org/)
0028  */
0029  
0030 class ITupleFactory {
0031 
0032 public: 
0033     /// Destructor.
0034     virtual ~ITupleFactory() { /* nop */; }
0035 
0036     /**
0037      * Creates an NTuple
0038      * @param path        The path of the created ITuple. The path can either be a relative or full path.
0039      *                    ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0040      *                    All the directories in the path must exist. The characther `/` cannot be used
0041      *                    in names; it is only used to delimit directories within paths.
0042      * @param title       The title of the n-tuple
0043      * @param columnNames The names of the columns
0044      * @param columnType  The types of  the columns
0045      * @param options     NTuple options (currently undefined)
0046      *
0047      */
0048     virtual ITuple * create(const std::string & path, const std::string & title, const std::vector<std::string>  & columnNames, const std::vector<std::string>  & columnType, const std::string & options = "") = 0;
0049 
0050     /**
0051      * Creates an NTuple
0052      * @param path    The path of the created ITuple. The path can either be a relative or full path.
0053      *                ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0054      *                All the directories in the path must exist. The characther `/` cannot be used
0055      *                in names; it is only used to delimit directories within paths.
0056      * @param title   The title of the n-tuple
0057      * @param columns The names and types of the columns e.g. "float px, py, pz, float energy, int charge"
0058      * @param options NTuple options (currently undefined)
0059      *
0060      */
0061     virtual ITuple * create(const std::string & path, const std::string & title, const std::string & columns, const std::string & options = "") = 0;
0062 
0063     /**
0064      * Creates a logical chain of ITuples. All ITuples in the set must
0065      * have the same structure. Chained ITuple can not be filled.
0066      * Original n-tuple data is not copied.
0067      * @param path  The path of the chained ITuple. The path can either be a relative or full path.
0068      *              ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0069      *              All the directories in the path must exist. The characther `/` cannot be used
0070      *              in names; it is only used to delimit directories within paths.
0071      * @param title The title of the new n-tuple
0072      * @param set   The array of ITuples to chain
0073      *
0074      */
0075     virtual ITuple * createChained(const std::string & path, const std::string & title, const std::vector<ITuple *>  & set) = 0;
0076 
0077     /**
0078      * Creates a logical chain of ITuples. All ITuples in the set must
0079      * have the same structure. Chained ITuple can not be filled.
0080      * Original n-tuple data is not copied.
0081      * @param path  The path of the chained ITuple. The path can either be a relative or full path.
0082      *              ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0083      *              All the directories in the path must exist. The characther `/` cannot be used
0084      *              in names; it is only used to delimit directories within paths.
0085      * @param title The title of the new n-tuple
0086      * @param set   The array of the names of the ITuples to chain
0087      *
0088      */
0089     virtual ITuple * createChained(const std::string & path, const std::string & title, const std::vector<std::string>  & set) = 0;
0090 
0091     /**
0092      * Creates a new reduced tuple (less rows) from an existing one
0093      * by applying a filter. Data is explicitly copied to a new n-tuple.
0094      * @param path   The path of the filtered ITuple. The path can either be a relative or full path.
0095      *               ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0096      *               All the directories in the path must exist. The characther `/` cannot be used
0097      *               in names; it is only used to delimit directories within paths.
0098      * @param tuple  Original n-tuple
0099      * @param filter IFilter to be used
0100      *
0101      */
0102     virtual ITuple * createFiltered(const std::string & path, ITuple & tuple, IFilter & filter) = 0;
0103 
0104     /**
0105      * Creates a new reduced tuple (less rows) from an existing one
0106      * by applying a filter. Only subset of the variables (columns) is copied.
0107      * Data is explicitly copied to a new n-tuple.
0108      * @param path    The path of the filtered ITuple. The path can either be a relative or full path.
0109      *                ("/folder1/folder2/dataName" and "../folder/dataName" are valid paths).
0110      *                All the directories in the path must exist. The characther `/` cannot be used
0111      *                in names; it is only used to delimit directories within paths.
0112      * @param tuple   Original n-tuple
0113      * @param filter  IFilter to be used
0114      * @param columns Names of columns to for a new n-tuple
0115      *
0116      */
0117     virtual ITuple * createFiltered(const std::string & path, ITuple & tuple, IFilter & filter, const std::vector<std::string>  & columns) = 0;
0118 
0119     /**
0120      * Creates IFilter object given a string defining of the "cut" expression.
0121      * @param expression String defining of the "cut" expression.
0122      *
0123      */
0124     virtual IFilter * createFilter(const std::string & expression) = 0;
0125 
0126     /**
0127      * Creates a filter object given a string defining the "cut" expression.
0128      * Filter processes only subset of data.
0129      * @param expression String defining of the "cut" expression.
0130      * @param rowsToProcess How many rows to process
0131      * @param startingRow Row number where to start
0132      *
0133      */
0134     virtual IFilter * createFilter(const std::string & expression, int rowsToProcess, int startingRow = 0) = 0;
0135 
0136     /**
0137      * Create IEvaluator object given its expression.
0138      * @param expression String defining of the evaluator expression.
0139      *
0140      */
0141     virtual IEvaluator * createEvaluator(const std::string & expression) = 0;
0142 }; // class
0143 } // namespace AIDA
0144 #endif /* ifndef AIDA_ITUPLEFACTORY_H */