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

Annotation of /PamCut/CommonDefs.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.6 - (hide annotations) (download)
Tue Mar 9 18:02:10 2010 UTC (14 years, 8 months ago) by pam-fi
Branch: MAIN
Changes since 1.5: +5 -4 lines
File MIME type: text/plain
Upgraded to support ND.

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 pam-fi 1.6 ANT = 8, ///< Code for AntiCoincidence
26     TRG = 16, ///< Code for Trigger
27 pam-fi 1.1 ORB = 32, ///< Code for Orbital Info
28 pam-fi 1.6 DEFAULT = 63, ///< TRK, CALO, TOF, ANT, TRG, ORB
29     ND = 64, ///< Code for Neutron Detector
30     CALO_L1 = 128
31 pam-fi 1.3 ///< Code for Calorimeter level1
32 pam-fi 1.2 };
33    
34 pam-fi 1.4 /*! @enum TOFLAYERS Flags to identify layers. */
35     enum TOFLAYERS {
36     S11 = 1, ///< S11.
37     S12 = 2, ///< S12.
38     S21 = 4, ///< S21.
39     S22 = 8, ///< S22.
40     S31 = 16, ///< S31.
41     S32 = 32
42     ///< S32.
43     };
44    
45 pam-fi 1.2 /*! @var TOFNPADLAYER
46     * The number of pads in each ToF layer. S11 corresponds to element 0, S12 to element 1 and so on.
47     */
48     const int TOFNPADLAYER[6] = { 8, 6, 2, 2, 3, 3 };
49    
50     /*! @brief A simple matrix class.
51     *
52     * This class defines a matrix built by STL vectors. It is basically a variable-dimension
53 pam-fi 1.3 * vector of vectors. It is intended as a container and not for algebraic manipulations.
54     * The class provides a standard access operator [] and a resize method.
55 pam-fi 1.2 */
56     template<class T>
57     class SimpleMatrix {
58    
59     public:
60     /*! @brief Constructor
61     *
62     * The constructor will build an nRows x nCols matrix, initialized with a default value. If T
63     * is a class with no default constructor, a default value for T must be provided, which will
64     * be replicated in every matrix element.
65     *
66     * @param nRows The number of rows.
67     * @param nCols The number of columns
68     * @param elements The initialization value for the matrix elements.
69     */
70 pam-fi 1.5 SimpleMatrix(unsigned int nRows = 0, unsigned int nCols = 0, T elements = T()) :
71 pam-fi 1.3 _matrix(nRows, std::vector<T>(nCols, elements)) {
72 pam-fi 1.2
73     }
74    
75     /*! @brief Standard accessor.
76     *
77     * @param i The desired row.
78     * @return The i-th row (a vector).
79     */
80     std::vector<T>& operator[](int i) {
81     return _matrix[i];
82     }
83    
84     /*! @brief Returns the number of rows.
85     *
86     * @return The number of rows.
87     */
88     unsigned int GetNRows() {
89 pam-fi 1.3 return _matrix.size();
90 pam-fi 1.2 }
91    
92     /*! @brief Returns the number of columns.
93     *
94     * @return The number of columns.
95     */
96     unsigned int GetNCols() {
97 pam-fi 1.3 return _matrix[0].size();
98     }
99    
100     /*! @brief Resizes the matrix.
101     *
102     * If new rows or columns are added, they are initialized to the default value; if T
103     * is a class with no default constructor, a default value for T must be provided, which will
104     * be replicated in every new matrix element. No modification
105     * is done to existing elements (except for those that will be eventually removed).
106     *
107     * @param nRows The new number of rows.
108     * @param nCols The new number of columns.
109     * @param elements The initialization value for the new matrix elements.
110     */
111     void Resize(unsigned int nRows, unsigned int nCols, T elements = T()) {
112    
113     _matrix.resize(nRows, std::vector<T>(nCols, elements));
114     for (unsigned int i = 0; i < _matrix.size(); i++)
115     _matrix[i].resize(nCols, elements);
116 pam-fi 1.2 }
117    
118     private:
119    
120     std::vector<std::vector<T> > _matrix;
121 pam-fi 1.1 };
122    
123     #endif /* COMMONDEFS_H_ */

  ViewVC Help
Powered by ViewVC 1.1.23