BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
MucFec.h
Go to the documentation of this file.
1//------------------------------------------------------------------------------|
2// [File ]: MucFec.h |
3// [Brief ]: Header file of class MucFec for electronics mapping |
4// [Author]: Xie Yuguang, <ygxie@mail.ihep.ac.cn> |
5// [Date ]: Jun 7, 2006 |
6// [Log ]: See ChangLog |
7//------------------------------------------------------------------------------|
8
9#ifndef MUC_FEC_H
10#define MUC_FEC_H
11
12#include <iostream>
13#include <string>
14#include <vector>
15
16using namespace std;
17
18static const int LENGTH = 16; // Size of record section
19static const int STRIP_NUM = 16; // Number of strip channel in one fec
20static const int DEFAULT_STRIP_ORDER = -1; // Default strip id defined order
21 // Order of strip connected to data bit
22 // 1: low data bit corresponding to low strip ID
23 // -1: low data bit corresponding to high strip ID
24
25// present DAQ format
26// ModuleID ErrorFlag Slot FEC
27// |= = = = =|= = = = = |= = |= = = =|16bit FEC data|
28
29// Old DAQ format
30// ErrorFlag ModuleID Slot FEC
31// |= = = = =|= = = = = |= = |= = = =|16bit FEC data|
32
33static const int MODULE_BIT = 6; // ">>" bit number for module, old DAQ format
34// static const int MODULE_BIT = 11; // ">>" bit number for module, present DAQ format, but
35// used in MucBuilder not here
36static const int SOCKET_BIT = 4; // ">>" bit number for socket
37static const int PART_BIT = 14; // ">>" bit number for part
38static const int SEG_BIT = 11; // ">>" bit number for segment
39static const int LAY_BIT = 7; // ">>" bit number for layer
40
41class MucFec {
42public:
43 MucFec( int id );
44 MucFec( int id, int stripOrder, int part, int segment, int layer, int firstStripID,
45 unsigned int vmeRecord, string chainName );
46 ~MucFec() { ; }
47
48 //-------------------------- Get methods --------------------------------
49 int GetID() { return m_ID; }
50 int GetStripOrder() { return m_StripOrder; }
51 unsigned int GetVmeRecord() { return m_VmeRecord; }
52 unsigned short GetVmeAddress() { return m_VmeAddress; }
53 unsigned short GetData() { return m_Data; }
54
55 int GetPart() { return m_Part; }
56 int GetSegment() { return m_Segment; }
57 int GetLayer() { return m_Layer; }
58 int GetFirstStripID() { return m_FirstStripID; }
60 int DecodeModule() { return m_Module; }
61 int DecodeSocket() { return m_Socket; }
62 int DecodeFecID() { return m_FecID; }
63 unsigned int GetPowerpcRecord();
64 unsigned short GetGeoAddress() { return m_GeoAddress; }
65 vector<int>* GetFiredStripVect();
66 string GetChainName() { return m_ChainName; }
67 string GetBin( unsigned int record );
68 string GetBin( unsigned short record );
69 string GetVmeBin();
70 string GetGeoBin();
71 string GetDataBin();
72
73 //-------------------------- Set methods --------------------------------
74 void SetStripOrder( int stripOrder );
75 void SetLocation( int part, int segment, int layer );
76 void SetFirstStripID( int firstStripID );
77 void SetChainName( string chainName );
78 void SetData( unsigned short data );
79
80private:
81 int m_ID; // Id in chain, 0~STRIPNUM-1
82 int m_StripOrder; // Order of strip connected to data bit
83 unsigned int m_VmeRecord; // 32 bits record data of VME format: VME address + data
84 // high 16 bits are the VME address, the low 16 bits are signals
85 // address contains module, socket, FEC id
86 unsigned int m_PowerpcRecord; // 32 bits record data of PowerPC format: GEO address + data
87 // high 16 bits are the FEC address, the low 16 bits are
88 // signals address contains part, segment, layer, and first
89 // strip id signals contain 16 strips status
90 unsigned short m_VmeAddress; // High 16 bit of VME record for VME address
91 unsigned short m_GeoAddress; // High 16 bit of PowerPC record for GEO address
92 unsigned short m_Data; // Low 16 bit of record for data
93
94 int m_Module; // Module number decoded from VME address
95 int m_Socket; // Socket number decoded from VME address
96 int m_FecID; // FEC id decode from VME address, matching m_ID or (STRIPNUM-1) - m_ID
97 string m_ChainName; // Chain name FEC belongs to
98 int m_Part; // Located part
99 int m_Segment; // located segment
100 int m_Layer; // located layer
101 int m_FirstStripID; // First strip id
102 int m_FiredStripNumber; // Number of fired strips
103 vector<int> m_FiredStripVect; // Vector of fired strip ids
104
105 void Initialize();
106 void DecodeData();
107 void DecodeVmeAddress();
108 void SetFiredStripNumber();
109 void SetFiredStripVect();
110 void EncodePowerpcRecord();
111};
112
113#endif
TTree * data
string GetGeoBin()
Definition MucFec.cxx:212
string GetChainName()
Definition MucFec.h:66
~MucFec()
Definition MucFec.h:46
int GetID()
Definition MucFec.h:49
void SetChainName(string chainName)
int GetFirstStripID()
Definition MucFec.h:58
unsigned int GetPowerpcRecord()
Definition MucFec.cxx:179
void SetStripOrder(int stripOrder)
Definition MucFec.cxx:150
int DecodeModule()
Definition MucFec.h:60
int GetSegment()
Definition MucFec.h:56
unsigned int GetVmeRecord()
Definition MucFec.h:51
int GetPart()
Definition MucFec.h:55
string GetDataBin()
Definition MucFec.cxx:214
int DecodeSocket()
Definition MucFec.h:61
vector< int > * GetFiredStripVect()
Definition MucFec.cxx:180
int DecodeFecID()
Definition MucFec.h:62
int GetFiredStripNumber()
Definition MucFec.cxx:178
int GetLayer()
Definition MucFec.h:57
MucFec(int id)
Definition MucFec.cxx:18
void SetFirstStripID(int firstStripID)
Definition MucFec.cxx:163
unsigned short GetData()
Definition MucFec.h:53
void SetData(unsigned short data)
Definition MucFec.cxx:169
string GetVmeBin()
Definition MucFec.cxx:210
string GetBin(unsigned int record)
Definition MucFec.cxx:182
void SetLocation(int part, int segment, int layer)
Definition MucFec.cxx:155
unsigned short GetGeoAddress()
Definition MucFec.h:64
int GetStripOrder()
Definition MucFec.h:50
unsigned short GetVmeAddress()
Definition MucFec.h:52