Line data Source code
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 0 : 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 22 : ClassDef(AliPHOSCpvParam,1); //CPV main parameters class
58 : };
59 : #endif
|