Belle II Software  release-05-02-19
TRGGRLUnpackerModule.cc
1 //---------------------------------------------------------------
2 // $Id$
3 //---------------------------------------------------------------
4 // Filename : TRGGRLUnpackerModule.cc
5 // Section :
6 // Owner :
7 // Email :
8 //---------------------------------------------------------------
9 // Description : TRGGRLUnpacker Module
10 //---------------------------------------------------------------
11 // $Log$
12 //---------------------------------------------------------------
13 
14 #include <trg/grl/modules/TRGGRLUnpacker/TRGGRLUnpackerModule.h>
15 
16 using namespace std;
17 using namespace Belle2;
18 using namespace TRGGRLUNPACKERSPACE;
19 
21 REG_MODULE(TRGGRLUnpacker);
22 
23 string TRGGRLUnpackerModule::version() const
24 {
25  return string("1.00");
26 }
27 
28 TRGGRLUnpackerModule::TRGGRLUnpackerModule()
29  : Module::Module()
30 {
31 
32  string desc = "TRGGRLUnpackerModule(" + version() + ")";
33  setDescription(desc);
35  B2DEBUG(20, "TRGGRLUnpacker: Constructor done.");
36 }
37 
39 {
40 }
41 
43 {
44 }
45 
47 {
48  StoreObjPtr<TRGGRLUnpackerStore> evtinfo("TRGGRLUnpackerStore");
49  evtinfo.registerInDataStore();
50 }
51 
53 {
54 }
55 
57 {
58 }
59 
61 {
62  StoreArray<RawTRG> raw_trgarray;
63 
64  for (int i = 0; i < raw_trgarray.getEntries(); i++) {
65  if (raw_trgarray[i]->GetTRGType(0) == 7) {continue;}
66 
67  for (int j = 0; j < raw_trgarray[i]->GetNumEntries(); j++) {
68  if (raw_trgarray[i]->GetNodeID(j) == 0x15000002) {
69  //cout << raw_trgarray[i]->GetDetectorNwords(j, 0) << endl;
70  //if (raw_trgarray[i]->GetDetectorNwords(j, 0) == 0xC03)
71  if (raw_trgarray[i]->GetDetectorNwords(j, 0) > 0) {
72  fillTreeTRGGRLUnpacker(raw_trgarray[i]->GetDetectorBuffer(j, 0), raw_trgarray[i]->GetEveNo(j));
73  }
74  }
75  }
76  }
77 }
78 
80 {
81 
82  const unsigned nword_header = 3;
83 
84 // StoreArray<TRGGRLUnpackerStore> storeAry("GRLclk");
85  TRGGRLUnpackerStore* rawstore = new TRGGRLUnpackerStore();
86  StoreObjPtr<TRGGRLUnpackerStore> evtinfo("TRGGRLUnpackerStore");
87 // evtinfo.registerInDataStore();
88 // storeAry.appendNew();
89 // int ntups = storeAry.getEntries() - 1;
90  int* bitArray[nLeafs + nLeafsExtra];
91  setLeafPointersArray(rawstore, bitArray);
92  for (int l = 0; l < nLeafs + nLeafsExtra; l++) *bitArray[l] = 0;
93 
94  rawstore->m_evt = evt;
95  rawstore->m_clk = 0;
96  rawstore->m_firmid = buf[0];
97  rawstore->m_firmver = buf[1];
98  rawstore->m_coml1 = buf[2] & ((1 << 12) - 1);
99  rawstore->m_b2ldly = (buf[2] >> 12) & ((1 << 9) - 1);
100  rawstore->m_maxrvc = (buf[2] >> 21) & ((1 << 11) - 1);
101 
102  //cout<<"nClks: "<<nClks<<endl;
103  //for (int _wd = 0; _wd < nBits / 32; _wd++)
104  //{
105  // bitset<32> buf_b(buf[clk * (nBits / 32) + _wd + nword_header]);
106  // cout<<"clk["<<clk<<"] wd["<<_wd<<"] "<<buf_b<<endl;
107  //}
108 
109  for (int _wd = 0; _wd < nBits / 32; _wd++) { // 0..19
110  int wd = buf[0 * (nBits / 32) + _wd + nword_header];
111  for (int bb = 0; bb < 32; bb++) { // bit by bit
112  if ((wd >> (31 - bb)) & 1) { /* MSB to LSB */
113  int bitPosition = (nBits - 1) - _wd * 32 - bb;
114  for (int leaf = 0; // Find a leaf that covers the bit.
115  leaf < nLeafs; leaf++) {
116  int bitMaxOfTheLeaf = BitMap[leaf][0];
117  int bitWidOfTheLeaf = BitMap[leaf][1];
118  int bitMinOfTheLeaf = bitMaxOfTheLeaf - bitWidOfTheLeaf;
119  if (bitMinOfTheLeaf <= bitPosition && bitPosition <= bitMaxOfTheLeaf) {
120  *bitArray[leaf] |= (1 << (bitPosition - bitMinOfTheLeaf));
121  }
122  }
123  }
124  }
125  }
126 //----------
127  rawstore->m_N_cluster = rawstore->m_N_cluster_0 + rawstore->m_N_cluster_1;
128  evtinfo.assign(rawstore);
129  std::vector<int> index_ECL;
130  std::vector<int> clkindex_ECL;
131  for (int i = 0; i < rawstore->m_N_cluster_0; i++) {
132  index_ECL.push_back(i); clkindex_ECL.push_back(0);
133  }
134  for (int i = 0; i < rawstore->m_N_cluster_1; i++) {
135  index_ECL.push_back(i + 6); clkindex_ECL.push_back(1);
136  }
137 // for (int i = 0; i < rawstore->m_N_cluster_2; i++) {
138 // index_ECL.push_back(i+12); clkindex_ECL.push_back(2);}
139 
140  evtinfo->m_E_ECL.clear();
141  evtinfo->m_t_ECL.clear();
142  evtinfo->m_clk_ECL.clear();
143  evtinfo->m_theta_ECL.clear();
144  evtinfo->m_phi_ECL.clear();
145  evtinfo->m_1GeV_ECL.clear();
146  evtinfo->m_2GeV_ECL.clear();
147 
148  for (int i = 0; i < rawstore->m_N_cluster; i++) {
149  int index = index_ECL[i];
150  int clkindex = clkindex_ECL[i];
151  evtinfo->m_clk_ECL.push_back(clkindex);
152  evtinfo->m_E_ECL.push_back(rawstore->m_E_ECL[index]);
153  evtinfo->m_t_ECL.push_back(rawstore->m_t_ECL[index]);
154  evtinfo->m_theta_ECL.push_back(rawstore->m_theta_ECL[index]);
155  evtinfo->m_phi_ECL.push_back(rawstore->m_phi_ECL[index]);
156  evtinfo->m_E_ECL.push_back(rawstore->m_E_ECL[index]);
157  evtinfo->m_1GeV_ECL.push_back(rawstore->m_1GeV_ECL[index]);
158  evtinfo->m_2GeV_ECL.push_back(rawstore->m_2GeV_ECL[index]);
159  }
160 
161 //----------
162 
163  for (int i = 0; i < 32; i++) {
164  evtinfo->m_phi_i[i] = ((rawstore->m_phi_i_int[0] & (1 << i)) != 0);
165  evtinfo->m_phi_CDC[i] = ((rawstore->m_phi_CDC_int[0] & (1 << i)) != 0);
166  }
167  for (int i = 32; i < 36; i++) {
168  evtinfo->m_phi_i[i] = ((rawstore->m_phi_i_int[1] & (1 << (i - 32))) != 0);
169  evtinfo->m_phi_CDC[i] = ((rawstore->m_phi_CDC_int[1] & (1 << (i - 32))) != 0);
170  }
171 
172  for (int i = 0; i < 16; i++) {
173  evtinfo->m_slot_CDC[i] = ((rawstore->m_slot_CDC_int & (1 << i)) != 0);
174  evtinfo->m_slot_TOP[i] = ((rawstore->m_slot_TOP_int & (1 << i)) != 0);
175  }
176 
177  for (int i = 0; i < 8; i++) {
178  evtinfo->m_sector_CDC[i] = ((rawstore->m_sector_CDC_int & (1 << i)) != 0);
179  evtinfo->m_sector_KLM[i] = ((rawstore->m_sector_KLM_int & (1 << i)) != 0);
180  }
181 
182  for (int i = 0; i < 32; i++) {
183  evtinfo->m_map_ST[i] = ((rawstore->m_map_ST_int[0] & (1 << i)) != 0);
184  evtinfo->m_map_ST2[i] = ((rawstore->m_map_ST2_int[0] & (1 << i)) != 0);
185  evtinfo->m_map_veto[i] = ((rawstore->m_map_veto_int[0] & (1 << i)) != 0);
186  evtinfo->m_map_TSF0[i] = ((rawstore->m_map_TSF0_int[0] & (1 << i)) != 0);
187  evtinfo->m_map_TSF2[i] = ((rawstore->m_map_TSF2_int[0] & (1 << i)) != 0);
188  evtinfo->m_map_TSF4[i] = ((rawstore->m_map_TSF4_int[0] & (1 << i)) != 0);
189  evtinfo->m_map_TSF1[i] = ((rawstore->m_map_TSF1_int[0] & (1 << i)) != 0);
190  evtinfo->m_map_TSF3[i] = ((rawstore->m_map_TSF3_int[0] & (1 << i)) != 0);
191  }
192  for (int i = 32; i < 64; i++) {
193  evtinfo->m_map_ST[i] = ((rawstore->m_map_ST_int[1] & (1 << (i - 32))) != 0);
194  evtinfo->m_map_ST2[i] = ((rawstore->m_map_ST2_int[1] & (1 << (i - 32))) != 0);
195  evtinfo->m_map_veto[i] = ((rawstore->m_map_veto_int[1] & (1 << (i - 32))) != 0);
196  evtinfo->m_map_TSF0[i] = ((rawstore->m_map_TSF0_int[1] & (1 << (i - 32))) != 0);
197  evtinfo->m_map_TSF2[i] = ((rawstore->m_map_TSF2_int[1] & (1 << (i - 32))) != 0);
198  evtinfo->m_map_TSF4[i] = ((rawstore->m_map_TSF4_int[1] & (1 << (i - 32))) != 0);
199  evtinfo->m_map_TSF1[i] = ((rawstore->m_map_TSF1_int[1] & (1 << (i - 32))) != 0);
200  evtinfo->m_map_TSF3[i] = ((rawstore->m_map_TSF3_int[1] & (1 << (i - 32))) != 0);
201  }
202 
203 
204 }
Belle2::TRGGRLUNPACKERSPACE::TRGGRLUnpackerModule::~TRGGRLUnpackerModule
virtual ~TRGGRLUnpackerModule()
Destructor.
Definition: TRGGRLUnpackerModule.cc:38
Belle2::TRGGRLUNPACKERSPACE::TRGGRLUnpackerModule::version
std::string version() const
returns version of TRGGRLUnpackerModule.
Definition: TRGGRLUnpackerModule.cc:23
Belle2::TRGGRLUnpackerStore::m_sector_CDC_int
int m_sector_CDC_int
m_sector_CDC integer leaf
Definition: TRGGRLUnpackerStore.h:86
Belle2::TRGGRLUnpackerStore::m_firmver
int m_firmver
m_firmver leafs
Definition: TRGGRLUnpackerStore.h:253
Belle2::Module::setDescription
void setDescription(const std::string &description)
Sets the description of the module.
Definition: Module.cc:216
Belle2::TRGGRLUNPACKERSPACE::TRGGRLUnpackerModule::beginRun
virtual void beginRun() override
Called when new run started.
Definition: TRGGRLUnpackerModule.cc:52
Belle2::TRGGRLUnpackerStore::m_evt
int m_evt
m_evt leafs
Definition: TRGGRLUnpackerStore.h:255
Belle2::TRGGRLUnpackerStore
Example Detector.
Definition: TRGGRLUnpackerStore.h:26
Belle2::TRGGRLUNPACKERSPACE::TRGGRLUnpackerModule::terminate
virtual void terminate() override
Called when processing ended.
Definition: TRGGRLUnpackerModule.cc:42
REG_MODULE
#define REG_MODULE(moduleName)
Register the given module (without 'Module' suffix) with the framework.
Definition: Module.h:652
Belle2::Module::c_ParallelProcessingCertified
@ c_ParallelProcessingCertified
This module can be run in parallel processing mode safely (All I/O must be done through the data stor...
Definition: Module.h:82
Belle2::TRGGRLUnpackerStore::m_slot_TOP_int
int m_slot_TOP_int
m_slot_TOP integer leaf
Definition: TRGGRLUnpackerStore.h:131
Belle2::TRGGRLUNPACKERSPACE::TRGGRLUnpackerModule::event
virtual void event() override
Called event by event.
Definition: TRGGRLUnpackerModule.cc:60
Belle2::TRGGRLUnpackerStore::m_map_ST_int
int m_map_ST_int[2]
m_map_ST integer leaf
Definition: TRGGRLUnpackerStore.h:174
Belle2::TRGGRLUnpackerStore::m_firmid
int m_firmid
m_firmid leafs
Definition: TRGGRLUnpackerStore.h:251
Belle2::TRGGRLUnpackerStore::m_map_veto_int
int m_map_veto_int[2]
m_map_veto integer leaf
Definition: TRGGRLUnpackerStore.h:172
Belle2::TRGGRLUnpackerStore::m_clk
int m_clk
m_clk leafs
Definition: TRGGRLUnpackerStore.h:257
Belle2::TRGGRLUnpackerStore::m_sector_KLM_int
int m_sector_KLM_int
m_sector_KLM integer leaf
Definition: TRGGRLUnpackerStore.h:82
Belle2::TRGGRLUnpackerStore::m_t_ECL
std::vector< int > m_t_ECL
m_t_ECL leaf
Definition: TRGGRLUnpackerStore.h:151
Belle2::TRGGRLUnpackerStore::m_1GeV_ECL
std::vector< int > m_1GeV_ECL
m_1GeV_flag_ECL leaf
Definition: TRGGRLUnpackerStore.h:157
Belle2::TRGGRLUnpackerStore::m_map_TSF2_int
int m_map_TSF2_int[2]
m_map_TSF2 integer leaf
Definition: TRGGRLUnpackerStore.h:164
Belle2::Module
Base class for Modules.
Definition: Module.h:74
Belle2::TRGGRLUnpackerStore::m_map_TSF4_int
int m_map_TSF4_int[2]
m_map_TSF4 integer leaf
Definition: TRGGRLUnpackerStore.h:166
Belle2::TRGGRLUnpackerStore::m_phi_i_int
int m_phi_i_int[2]
m_phi_i integer leaf
Definition: TRGGRLUnpackerStore.h:46
Belle2::Module::setPropertyFlags
void setPropertyFlags(unsigned int propertyFlags)
Sets the flags for the module properties.
Definition: Module.cc:210
Belle2::TRGGRLUNPACKERSPACE::TRGGRLUnpackerModule::initialize
virtual void initialize() override
Initilizes TRGGRLUnpackerUnpackerModule.
Definition: TRGGRLUnpackerModule.cc:46
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::TRGGRLUnpackerStore::m_N_cluster_0
int m_N_cluster_0
m_N_cluster_0 leaf
Definition: TRGGRLUnpackerStore.h:205
Belle2::StoreObjPtr
Type-safe access to single objects in the data store.
Definition: ParticleList.h:33
Belle2::TRGGRLUNPACKERSPACE::TRGGRLUnpackerModule::endRun
virtual void endRun() override
Called when run ended.
Definition: TRGGRLUnpackerModule.cc:56
Belle2::TRGGRLUnpackerStore::m_map_ST2_int
int m_map_ST2_int[2]
m_map_ST2 integer leaf
Definition: TRGGRLUnpackerStore.h:176
Belle2::TRGGRLUNPACKERSPACE::TRGGRLUnpackerModule::fillTreeTRGGRLUnpacker
virtual void fillTreeTRGGRLUnpacker(int *buf, int evt)
Unpacker main function.
Definition: TRGGRLUnpackerModule.cc:79
Belle2::TRGGRLUnpackerStore::m_phi_ECL
std::vector< int > m_phi_ECL
m_phi_ECL leaf
Definition: TRGGRLUnpackerStore.h:149
Belle2::TRGGRLUnpackerStore::m_slot_CDC_int
int m_slot_CDC_int
m_slot_CDC integer leaf
Definition: TRGGRLUnpackerStore.h:127
Belle2::TRGGRLUnpackerStore::m_theta_ECL
std::vector< int > m_theta_ECL
m_theta_ECL leaf
Definition: TRGGRLUnpackerStore.h:147
Belle2::TRGGRLUnpackerStore::m_map_TSF1_int
int m_map_TSF1_int[2]
m_map_TSF1 integer leaf
Definition: TRGGRLUnpackerStore.h:168
Belle2::TRGGRLUnpackerStore::m_map_TSF3_int
int m_map_TSF3_int[2]
m_map_TSF3 integer leaf
Definition: TRGGRLUnpackerStore.h:170
Belle2::TRGGRLUnpackerStore::m_map_TSF0_int
int m_map_TSF0_int[2]
m_map_TSF0 integer leaf
Definition: TRGGRLUnpackerStore.h:162
Belle2::TRGGRLUnpackerStore::m_N_cluster_1
int m_N_cluster_1
m_N_cluster_1 leaf
Definition: TRGGRLUnpackerStore.h:207
Belle2::TRGGRLUnpackerStore::m_E_ECL
std::vector< int > m_E_ECL
m_E_ECL leaf
Definition: TRGGRLUnpackerStore.h:153
Belle2::TRGGRLUnpackerStore::m_N_cluster
int m_N_cluster
m_N_cluster leaf
Definition: TRGGRLUnpackerStore.h:203
Belle2::TRGGRLUnpackerStore::m_coml1
int m_coml1
m_coml1 leafs
Definition: TRGGRLUnpackerStore.h:259
Belle2::StoreArray
Accessor to arrays stored in the data store.
Definition: ECLMatchingPerformanceExpertModule.h:33
Belle2::TRGGRLUnpackerStore::m_phi_CDC_int
int m_phi_CDC_int[2]
m_phi_CDC integer leaf
Definition: TRGGRLUnpackerStore.h:42
Belle2::TRGGRLUnpackerStore::m_maxrvc
int m_maxrvc
m_maxrvc leafs
Definition: TRGGRLUnpackerStore.h:263
Belle2::TRGGRLUnpackerStore::m_b2ldly
int m_b2ldly
m_b2ldly leafs
Definition: TRGGRLUnpackerStore.h:261
Belle2::TRGGRLUnpackerStore::m_2GeV_ECL
std::vector< int > m_2GeV_ECL
m_2GeV_flag_ECL leaf
Definition: TRGGRLUnpackerStore.h:159
Belle2::StoreArray::getEntries
int getEntries() const
Get the number of objects in the array.
Definition: StoreArray.h:226