LCOV - code coverage report
Current view: top level - EMCAL/EMCALUtils - AliEMCALGeoParams.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 0 8 0.0 %
Date: 2016-06-14 17:26:59 Functions: 0 8 0.0 %

          Line data    Source code
       1             : #ifndef ALIEMCALGEOPARAMS_H
       2             : #define ALIEMCALGEOPARAMS_H
       3             : /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
       4             :  * See cxx source for full Copyright notice                               */
       5             : 
       6             : //////////////////////////////////////////////////////////
       7             : // class for holding various parameters; 
       8             : //
       9             : // Author: David Silvermyr (ORNL)
      10             : //
      11             : //////////////////////////////////////////////////////////
      12             : 
      13             : class AliEMCALGeoParams
      14             : {
      15             : public:
      16             : 
      17             :   // general geometry info
      18             :   static const int fgkEMCALModules     = 22;   // number of modules, 12 for EMCal + 8 for DCAL
      19             :   static const int fgkEMCALRows        = 24;   // number of rows per module for EMCAL
      20             :   static const int fgkEMCALCols        = 48;   // number of columns per module for EMCAL
      21             : 
      22             :   static const int fgkEMCALLEDRefs     = 24;   // number of LEDs (reference/monitors) per module for EMCAL; one per StripModule
      23             :   static const int fgkEMCALTempSensors = 8;    // number Temperature sensors per module for EMCAL
      24             : 
      25             :   Int_t GetStripModule(Int_t iSM, Int_t iCol) const
      26             :     // Strip 0 is the one closest to the FEE crates; different for A (iColumn/2) and C sides
      27           0 :     { return ( (iSM%2==0) ? iCol/2 : AliEMCALGeoParams::fgkEMCALLEDRefs - 1 - iCol/2 ); }
      28             : 
      29             :   // also a few readout related variables:
      30             :   //  static const int fgkLastAltroDDL     = 39;   // 0..23 (i.e. 24) for EMCAL; 24..39 (i.e. 16) allocated for DCAL
      31             :   static const int fgkSampleMax        = 1023; // highest possible sample value (10-bit = 0x3ff)
      32             :   static const int fgkOverflowCut      = 950;  // saturation starts around here; also exist as private constant in AliEMCALRawUtils, should probably be replaced
      33             :   static const int fgkSampleMin        = 0;    // lowest possible sample value 
      34             : 
      35             :   // TRU numbers
      36             :   static const int fgkEMCALTRUsPerSM   = 3;    // number of TRU's in a SuperModule
      37             :   static const int fgkEMCAL2x2PerTRU   = 96;   // number of 2x2's in a TRU
      38             :   static const int fgkEMCALTRURows     = 4;    // number of TRU rows
      39             :   static const int fgkEMCALTRUCols     = 24;   // number of TRY cols
      40             : 
      41             :   //STU numbers
      42             :   static const int fgkEMCALSTUCols     = 48;   // STU columns
      43             :   static const int fgkEMCALSTURows     = 64;   // STU rows
      44             :   
      45             :   // RAW/AliCaloAltroMapping provides the correspondence information between
      46             :   // an electronics HWAddress (Branch<<1 | FEC<<7 | ALTRO<<4 | Channel) 
      47             :   // for the RCUs and which tower (Column and Row) that corresponds to. 
      48             :   // For the cases when one doesn't have a Raw stream to decode the HW address
      49             :   // into the other FEE indices, we provide the needed simple methods here 
      50             :   // with arguments (within an RCU)
      51             :   Int_t GetHWAddress(Int_t iBranch, Int_t iFEC, Int_t iALTRO, Int_t iChannel) const
      52           0 :   { return ( (iBranch<<11) | (iFEC<<7) | (iALTRO<<4) | iChannel ); } // 
      53             :   // and for converting back to the individual indices
      54           0 :   Int_t GetBranch(Int_t iHW)  const { return ( (iHW>>11) & 0x1 ) ; } // 
      55           0 :   Int_t GetFEC(Int_t iHW)     const { return ( (iHW>>7) & 0xf )  ; } // 
      56           0 :   Int_t GetAltro(Int_t iHW)   const { return ( (iHW>>4) & 0x7 )  ; } // 
      57           0 :   Int_t GetChannel(Int_t iHW) const { return ( iHW & 0xf )       ; } // 
      58             : 
      59             :   // We can also encode a very similar CSP address
      60             :   Int_t GetCSPAddress(Int_t iBranch, Int_t iFEC, Int_t iCSP) const
      61           0 :   { return ( (iBranch<<11) | (iFEC<<7) | iCSP ); }; // 
      62             :   // and for converting back to the individual indices
      63             :   // Branch and FEC methods would just be the same as above
      64           0 :   Int_t GetCSPFromAddress(Int_t i) const { return ( i & 0x1f )   ; } // 
      65             : 
      66             :   /* // Below is some placeholder info that can later be added
      67             :      // in AliEMCALGeometry, together with the Get methods just above 
      68             : 
      69             :   // But which CSP (0..31) corresponds to which ALTRO and Channel is not 
      70             :   // given anywhere (CSPs are used for APD biases etc).
      71             :   // So, we add a conversion method for that here also.
      72             :   // The order that the CSPs appear in the data is a bit funky so I include
      73             :   // a mapping array instead of some complicated function
      74             :   static const int fgkNCSP = 32;
      75             :   static const int fgkCspOrder[32] =
      76             :     { // just from ALTRO mapping of chips/channels to CSP
      77             :       11,  27,  10,  26,  24,   8,  25,   9, // ALTRO 0
      78             :       3,  19,   2,  18,  16,   0,  17,   1, // ALTRO 2
      79             :       4,  20,   5,  21,  23,   7,  22,   6, // ALTRO 3
      80             :       12,  28,  13,  29,  31,  15,  30,  14 // ALTRO 4
      81             :     };
      82             :   // This method is not used for reconstruction or so, but just for cross-
      83             :   // checks with the DCS for the APD biases. 
      84             :   int GetCSP(int iALTRO, int iChannel) const 
      85             :   { 
      86             :     int id = iChannel/2; // 2 channels per tower (low and high gain)
      87             :     int ichip = iALTRO;
      88             :     if (ichip>=2) { ichip--; } // there is no ALTRO 1; (0,2,3,4 -> 0,1,2,3)
      89             :     id += ichip*8; // 8 CSPs per ALTRO
      90             :     //return fgkCspOrder[id];
      91             :     return id;
      92             :   }
      93             : 
      94             :   */
      95             :   
      96             : };
      97             : 
      98             : #endif

Generated by: LCOV version 1.11