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

Diff of /PamCut/CommonDefs.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.2 by pam-fi, Fri May 29 08:59:40 2009 UTC revision 1.9.2.1 by pam-fi, Fri May 28 14:41:16 2010 UTC
# Line 14  Line 14 
14  /*! @brief The implementations of PamCut::Check() must return this value if the event satisfy the cut*/  /*! @brief The implementations of PamCut::Check() must return this value if the event satisfy the cut*/
15  const int CUTOK = -1;  const int CUTOK = -1;
16    
17    const float POSITIVE = 1.0; ///< Positive sign alias
18    const float NEGATIVE = -1.0; ///< Negative sign alias
19    
20  /*! @enum DETECTORCODE  /*! @enum DETECTORCODE
21   * The values for each detector correspond to a binary code associated to that detector.   * The values for each detector correspond to a binary code associated to that detector.
22   * These can be arithmetically added to create a binary code for a set of detectors.   * These can be arithmetically added to create a binary code for a set of detectors.
# Line 22  enum DETECTORCODE { Line 25  enum DETECTORCODE {
25    TRK = 1, ///< Code for Tracker    TRK = 1, ///< Code for Tracker
26    CALO = 2, ///< Code for Calorimeter level2    CALO = 2, ///< Code for Calorimeter level2
27    TOF = 4, ///< Code for ToF    TOF = 4, ///< Code for ToF
28    AC = 8, ///< Code for AntiCoincidence    ANT = 8, ///< Code for AntiCoincidence
29    TRIG = 16, ///< Code for Trigger    TRG = 16, ///< Code for Trigger
30    ORB = 32, ///< Code for Orbital Info    ORB = 32, ///< Code for Orbital Info
31    ALL = 63, ///< Sum of all the above codes    DEFAULT = 63, ///< TRK, CALO, TOF, ANT, TRG, ORB
32    CALO_L1 = 64 ///< Code for Calorimeter level1    ND = 64, ///< Code for Neutron Detector
33      CALO_L1 = 128
34    ///< Code for Calorimeter level1
35    };
36    
37    /*! @enum TOFLAYERS Flags to identify TOF layers. */
38    enum TOFLAYERS {
39      S11 = 1, ///< S11.
40      S12 = 2, ///< S12.
41      S21 = 4, ///< S21.
42      S22 = 8, ///< S22.
43      S31 = 16, ///< S31.
44      S32 = 32
45    ///< S32.
46  };  };
47    
48    /*! @enum TRKLAYERS Flags to identify Tracker layers. */
49    enum TRKLAYERS {
50      T1X = 1, ///< T1X.
51      T2X = 2, ///< T2X.
52      T3X = 4, ///< T3X.
53      T4X = 8, ///< T4X.
54      T5X = 16, ///< T5X.
55      T6X = 32, ///< T6X.
56      TX = 63, ///< All the X layers
57      T1Y = 64, ///< T1Y.
58      T2Y = 128, ///< T2Y.
59      T3Y = 256, ///< T3Y.
60      T4Y = 512, ///< T4Y.
61      T5Y = 1024, ///< T5Y.
62      T6Y = 2048, ///< T6Y.
63      TY = 4032
64    ///< All the Y layers
65    };
66  /*! @var TOFNPADLAYER  /*! @var TOFNPADLAYER
67   * The number of pads in each ToF layer. S11 corresponds to element 0, S12 to element 1 and so on.   * The number of pads in each ToF layer. S11 corresponds to element 0, S12 to element 1 and so on.
68   */   */
69  const int TOFNPADLAYER[6] = { 8, 6, 2, 2, 3, 3 };  const int TOFNPADLAYER[6] = { 8, 6, 2, 2, 3, 3 };
70    
71    /*! @var H_MASS
72     * Proton mass
73     */
74    const float H_MASS = 0.93827203; // GeV (pdg.web.cern.ch)
75    
76    /*! @var HE4_MASS
77     * Helium 4 mass
78     */
79    const float HE4_MASS = 3.7274; // GeV (http://hyperphysics.phy-astr.gsu.edu/Hbase/pertab/He.html)
80    
81    /*! @var HE3_MASS
82     * Helium 3 mass
83     */
84    const float HE3_MASS = 2.8084; // GeV (http://hyperphysics.phy-astr.gsu.edu/Hbase/pertab/He.html)
85    
86    /*! @var E_MASS
87     * Electron mass
88     */
89    const float E_MASS = 0.000510998; // GeV (from PDG)
90    
91  /*! @brief A simple matrix class.  /*! @brief A simple matrix class.
92   *   *
93   *  This class defines a matrix built by STL vectors. It is basically a variable-dimension   *  This class defines a matrix built by STL vectors. It is basically a variable-dimension
94   *  vector of vectors; the dimension is defined at construction and cannot be changed in   *  vector of vectors. It is intended as a container and not for algebraic manipulations.
95   *  current implementation. It is intended as a container and not for algebraic manipulations.   *  The class provides a standard access operator [] and a resize method.
  *  The class provides a standard access operator [].  
96   */   */
97  template<class T>  template<class T>
98  class SimpleMatrix {  class SimpleMatrix {
# Line 55  public: Line 108  public:
108     * @param nCols The number of columns     * @param nCols The number of columns
109     * @param elements The initialization value for the matrix elements.     * @param elements The initialization value for the matrix elements.
110     */     */
111    SimpleMatrix(unsigned int nRows, unsigned int nCols, T elements = T()) :    SimpleMatrix(unsigned int nRows = 0, unsigned int nCols = 0, T elements = T()) :
112      _matrix(nRows, std::vector<T>(nCols, elements)), _nRows(nRows), _nCols(nCols) {      _matrix(nRows, std::vector<T>(nCols, elements)) {
113    
114    }    }
115    
# Line 74  public: Line 127  public:
127     * @return The number of rows.     * @return The number of rows.
128     */     */
129    unsigned int GetNRows() {    unsigned int GetNRows() {
130      return _nRows;      return _matrix.size();
131    }    }
132    
133    /*! @brief Returns the number of columns.    /*! @brief Returns the number of columns.
# Line 82  public: Line 135  public:
135     * @return The number of columns.     * @return The number of columns.
136     */     */
137    unsigned int GetNCols() {    unsigned int GetNCols() {
138      return _nCols;      return _matrix[0].size();
139      }
140    
141      /*! @brief Resizes the matrix.
142       *
143       * If new rows or columns are added, they are initialized to the default value; if T
144       * is a class with no default constructor, a default value for T must be provided, which will
145       * be replicated in every new matrix element. No modification
146       * is done to existing elements (except for those that will be eventually removed).
147       *
148       * @param nRows The new number of rows.
149       * @param nCols The new number of columns.
150       * @param elements The initialization value for the new matrix elements.
151       */
152      void Resize(unsigned int nRows, unsigned int nCols, T elements = T()) {
153    
154        _matrix.resize(nRows, std::vector<T>(nCols, elements));
155        for (unsigned int i = 0; i < _matrix.size(); i++)
156          _matrix[i].resize(nCols, elements);
157    }    }
158    
159  private:  private:
160    
161    std::vector<std::vector<T> > _matrix;    std::vector<std::vector<T> > _matrix;
   unsigned int _nRows, _nCols;  
162  };  };
163    
164  #endif /* COMMONDEFS_H_ */  #endif /* COMMONDEFS_H_ */

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.9.2.1

  ViewVC Help
Powered by ViewVC 1.1.23