]>
Commit | Line | Data |
---|---|---|
0d931d35 | 1 | #ifndef AliPHOSCPVParam_h |
2 | #define AliPHOSCPVParam_h | |
3 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
4 | * See cxx source for full Copyright notice */ | |
5 | ||
6 | // Class provides a set of static methods to convert absolute number of pad to pair (X,Y) | |
7 | // and vice versa | |
8 | // and some other | |
9 | // Author - Mikhail Stolpovskiy, IHEP Protvino (2013) | |
10 | ||
11 | #include <TNamed.h> //base class | |
12 | #include "AliPHOSCpv3GConnection.h" | |
13 | ||
14 | class AliPHOSCpvParam :public TNamed | |
15 | { | |
16 | public: | |
17 | enum EChamberData{kMinCh=0,kMaxCh=0}; //Segmenation. CPV has only one chamber | |
18 | enum EPadxData{kPadPcX=128,kMinPx=0,kMaxPx=127}; //Segmentation structure along x | |
19 | enum EPadyData{kPadPcY=60 ,kMinPy=0,kMaxPy=59 }; //Segmentation structure along y | |
20 | enum { | |
21 | kNRows = 16, // Number of rows (column controlers) | |
22 | kN3GAdd = 10, // Number of 3GASSIPLEXs in a row | |
23 | kNPadAdd = 48, // Number of pad row | |
24 | kNRowsPerSegment = 8, // Number of rows per segment | |
25 | kNDDL = 5, // Number of already installed modules (ddls) | |
26 | kNModules = 5 // Number of modules (equals to the number of PHOS modules) | |
27 | }; | |
28 | ||
29 | // x <=> phi | |
30 | // y <=> Z | |
31 | // But x-y is a local module axes (Int_t) | |
32 | ||
33 | static Bool_t IsValidAbs(Int_t abs); | |
34 | static Bool_t DecodeRawWord(Int_t ddl,Int_t rWord, Int_t & abs, Int_t & q, Int_t & eType); | |
35 | static Int_t Abs (Int_t ddl,Int_t columnCtrl,Int_t gassiplex3,Int_t pad); // abs pad | |
36 | static Int_t A2DDL(Int_t abs) ; // abs pad -> ddl | |
37 | static Int_t A2Mod(Int_t abs) ; // abs -> number of module | |
38 | static Int_t DDL2Mod(Int_t ddl); | |
39 | static Int_t Mod2DDL(Int_t mod); | |
40 | static Int_t A2CC (Int_t abs) ; // abs pad -> column controler | |
41 | static Int_t A23G (Int_t abs) ; // abs pad -> number of 3gassiplex card | |
42 | static Int_t A2Pad(Int_t abs) ; // abs pad -> number of pad in 3gassiplex | |
43 | static Int_t A2X (Int_t abs) ; // abs pad -> pad X | |
44 | static Int_t A2Y (Int_t abs) ; // abs pad -> pad Y | |
45 | static Int_t XY2A (Int_t ddl, Int_t x, Int_t y) ; // pad X,Y -> abs pad | |
46 | static Int_t X2CC (Int_t x) ; // pad X -> number of column controller | |
47 | static Int_t Y23G (Int_t y) ; // pad Y -> number of 3gassiplex card | |
48 | static Int_t XY2Pad (Int_t x, Int_t y) ; // pad X,Y -> number of pad in 3gassiplex | |
49 | static Bool_t GetLimOfCConX( Int_t cc, Int_t &xmin, Int_t &xmax); // returns limits on X for column controler cc | |
50 | static Bool_t GetLimOf3GonY( Int_t g3, Int_t &ymin, Int_t &ymax); // returns limits on Y for 3gassiplex g3 | |
51 | ||
52 | static Int_t A2fId(Int_t abs) ; // returns number of channel with common PHOS+CPV numeration | |
53 | ||
54 | private: | |
55 | // connection of channels of 3gassiplex to pads | |
56 | static AliPHOSCpv3GConnection fConnection; | |
57 | ClassDef(AliPHOSCpvParam,1); //CPV main parameters class | |
58 | }; | |
59 | #endif |