/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
* See cxx source for full Copyright notice */
-/* $Id: AliEMCALGeoParams.h $ */
-
//////////////////////////////////////////////////////////
-// class for holding various parameters; to be used by new
-// AliEMCALGeoUtils class //
+// class for holding various parameters;
+//
+// Author: David Silvermyr (ORNL)
+//
//////////////////////////////////////////////////////////
class AliEMCALGeoParams
public:
// general geometry info
- static const int fgkEMCALModules = 12; // number of modules for EMCAL
- static const int fgkEMCALRows = 24; // number of rows per module for EMCAL
- static const int fgkEMCALCols = 48; // number of columns per module for EMCAL
+ static const int fgkEMCALModules = 22; // number of modules, 12 for EMCal + 8 for DCAL
+ static const int fgkEMCALRows = 24; // number of rows per module for EMCAL
+ static const int fgkEMCALCols = 48; // number of columns per module for EMCAL
- static const int fgkEMCALLEDRefs = 24; // number of LEDs (reference/monitors) per module for EMCAL; one per StripModule
- static const int fgkEMCALTempSensors = 8; // number Temperature sensors per module for EMCAL
+ static const int fgkEMCALLEDRefs = 24; // number of LEDs (reference/monitors) per module for EMCAL; one per StripModule
+ static const int fgkEMCALTempSensors = 8; // number Temperature sensors per module for EMCAL
Int_t GetStripModule(Int_t iSM, Int_t iCol) const
// Strip 0 is the one closest to the FEE crates; different for A (iColumn/2) and C sides
{ return ( (iSM%2==0) ? iCol/2 : AliEMCALGeoParams::fgkEMCALLEDRefs - 1 - iCol/2 ); }
// also a few readout related variables:
- static const int fgkSampleMax = 1023; // highest possible sample value (10-bit = 0x3ff)
- static const int fgkOverflowCut = 950; // saturation starts around here; also exist as private constant in AliEMCALRawUtils, should probably be replaced
- static const int fgkSampleMin = 0; // lowest possible sample value
+ static const int fgkLastAltroDDL = 43; // 0..23 (i.e. 24) for EMCAL; 24..39 (i.e. 16) allocated for DCAL
+ static const int fgkSampleMax = 1023; // highest possible sample value (10-bit = 0x3ff)
+ static const int fgkOverflowCut = 950; // saturation starts around here; also exist as private constant in AliEMCALRawUtils, should probably be replaced
+ static const int fgkSampleMin = 0; // lowest possible sample value
+
+ // TRU numbers
+ static const int fgkEMCALTRUsPerSM = 3; // number of TRU's in a SuperModule
+ static const int fgkEMCAL2x2PerTRU = 96; // number of 2x2's in a TRU
+ static const int fgkEMCALTRURows = 4; // number of TRU rows
+ static const int fgkEMCALTRUCols = 24; // number of TRY cols
+
+ //STU numbers
+ static const int fgkEMCALSTUCols = 48; // STU columns
+ static const int fgkEMCALSTURows = 64; // STU rows
// RAW/AliCaloAltroMapping provides the correspondence information between
// an electronics HWAddress (Branch<<1 | FEC<<7 | ALTRO<<4 | Channel)
// into the other FEE indices, we provide the needed simple methods here
// with arguments (within an RCU)
Int_t GetHWAddress(Int_t iBranch, Int_t iFEC, Int_t iALTRO, Int_t iChannel) const
- { return ( (iBranch<<11) | (iFEC<<7) | (iALTRO<<4) | iChannel ); }; //
+ { return ( (iBranch<<11) | (iFEC<<7) | (iALTRO<<4) | iChannel ); } //
// and for converting back to the individual indices
- Int_t GetBranch(Int_t iHW) const { return ( (iHW>>11) & 0x1 ); }; //
- Int_t GetFEC(Int_t iHW) const { return ( (iHW>>7) & 0xf ); }; //
- Int_t GetAltro(Int_t iHW) const { return ( (iHW>>4) & 0x7 ); }; //
- Int_t GetChannel(Int_t iHW) const { return ( iHW & 0xf ); }; //
+ Int_t GetBranch(Int_t iHW) const { return ( (iHW>>11) & 0x1 ) ; } //
+ Int_t GetFEC(Int_t iHW) const { return ( (iHW>>7) & 0xf ) ; } //
+ Int_t GetAltro(Int_t iHW) const { return ( (iHW>>4) & 0x7 ) ; } //
+ Int_t GetChannel(Int_t iHW) const { return ( iHW & 0xf ) ; } //
// We can also encode a very similar CSP address
Int_t GetCSPAddress(Int_t iBranch, Int_t iFEC, Int_t iCSP) const
{ return ( (iBranch<<11) | (iFEC<<7) | iCSP ); }; //
// and for converting back to the individual indices
// Branch and FEC methods would just be the same as above
- Int_t GetCSPFromAddress(Int_t i) const { return ( i & 0x1f ); }; //
+ Int_t GetCSPFromAddress(Int_t i) const { return ( i & 0x1f ) ; } //
/* // Below is some placeholder info that can later be added
- // in AliEMCALGeoUtils, together with the Get methods just above
+ // in AliEMCALGeometry, together with the Get methods just above
// But which CSP (0..31) corresponds to which ALTRO and Channel is not
// given anywhere (CSPs are used for APD biases etc).
*/
+ ClassDef(AliEMCALGeoParams,2)
+
};
#endif