/[PAMELA software]/PamCut/CommonDefs.h
ViewVC logotype

Annotation of /PamCut/CommonDefs.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.3 - (hide annotations) (download)
Wed Jun 10 12:45:46 2009 UTC (15 years, 5 months ago) by pam-fi
Branch: MAIN
Changes since 1.2: +25 -8 lines
File MIME type: text/plain
Added a Resize() method to the SimpleMatrix.

1 pam-fi 1.1 /*
2     * CommonDefs.h
3     *
4     * Created on: 10-mar-2009
5     * Author: Nicola Mori
6     */
7    
8     /*! @file CommonDefs.h A header file with all the common definitions for the PamCut framework.
9     */
10    
11     #ifndef COMMONDEFS_H_
12     #define COMMONDEFS_H_
13    
14     /*! @brief The implementations of PamCut::Check() must return this value if the event satisfy the cut*/
15     const int CUTOK = -1;
16    
17     /*! @enum DETECTORCODE
18     * The values for each detector correspond to a binary code associated to that detector.
19     * These can be arithmetically added to create a binary code for a set of detectors.
20     */
21     enum DETECTORCODE {
22     TRK = 1, ///< Code for Tracker
23 pam-fi 1.2 CALO = 2, ///< Code for Calorimeter level2
24 pam-fi 1.1 TOF = 4, ///< Code for ToF
25     AC = 8, ///< Code for AntiCoincidence
26     TRIG = 16, ///< Code for Trigger
27     ORB = 32, ///< Code for Orbital Info
28 pam-fi 1.2 ALL = 63, ///< Sum of all the above codes
29 pam-fi 1.3 CALO_L1 = 64
30     ///< Code for Calorimeter level1
31 pam-fi 1.2 };
32    
33     /*! @var TOFNPADLAYER
34     * The number of pads in each ToF layer. S11 corresponds to element 0, S12 to element 1 and so on.
35     */
36     const int TOFNPADLAYER[6] = { 8, 6, 2, 2, 3, 3 };
37    
38     /*! @brief A simple matrix class.
39     *
40     * This class defines a matrix built by STL vectors. It is basically a variable-dimension
41 pam-fi 1.3 * vector of vectors. It is intended as a container and not for algebraic manipulations.
42     * The class provides a standard access operator [] and a resize method.
43 pam-fi 1.2 */
44     template<class T>
45     class SimpleMatrix {
46    
47     public:
48     /*! @brief Constructor
49     *
50     * The constructor will build an nRows x nCols matrix, initialized with a default value. If T
51     * is a class with no default constructor, a default value for T must be provided, which will
52     * be replicated in every matrix element.
53     *
54     * @param nRows The number of rows.
55     * @param nCols The number of columns
56     * @param elements The initialization value for the matrix elements.
57     */
58     SimpleMatrix(unsigned int nRows, unsigned int nCols, T elements = T()) :
59 pam-fi 1.3 _matrix(nRows, std::vector<T>(nCols, elements)) {
60 pam-fi 1.2
61     }
62    
63     /*! @brief Standard accessor.
64     *
65     * @param i The desired row.
66     * @return The i-th row (a vector).
67     */
68     std::vector<T>& operator[](int i) {
69     return _matrix[i];
70     }
71    
72     /*! @brief Returns the number of rows.
73     *
74     * @return The number of rows.
75     */
76     unsigned int GetNRows() {
77 pam-fi 1.3 return _matrix.size();
78 pam-fi 1.2 }
79    
80     /*! @brief Returns the number of columns.
81     *
82     * @return The number of columns.
83     */
84     unsigned int GetNCols() {
85 pam-fi 1.3 return _matrix[0].size();
86     }
87    
88     /*! @brief Resizes the matrix.
89     *
90     * If new rows or columns are added, they are initialized to the default value; if T
91     * is a class with no default constructor, a default value for T must be provided, which will
92     * be replicated in every new matrix element. No modification
93     * is done to existing elements (except for those that will be eventually removed).
94     *
95     * @param nRows The new number of rows.
96     * @param nCols The new number of columns.
97     * @param elements The initialization value for the new matrix elements.
98     */
99     void Resize(unsigned int nRows, unsigned int nCols, T elements = T()) {
100    
101     _matrix.resize(nRows, std::vector<T>(nCols, elements));
102     for (unsigned int i = 0; i < _matrix.size(); i++)
103     _matrix[i].resize(nCols, elements);
104 pam-fi 1.2 }
105    
106     private:
107    
108     std::vector<std::vector<T> > _matrix;
109 pam-fi 1.1 };
110    
111     #endif /* COMMONDEFS_H_ */

  ViewVC Help
Powered by ViewVC 1.1.23