8 #include <rawdata/modules/Convert2RawDet.h>
29 setDescription(
"convert from RawCOPPER or RawDataBlock to RawDetector objects");
35 Convert2RawDetModule::~Convert2RawDetModule()
39 void Convert2RawDetModule::initialize()
41 gSystem->Load(
"libdataobjects");
46 m_rawDataBlock.registerInDataStore();
47 m_rawCOPPER.registerInDataStore();
48 m_rawSVD.registerInDataStore();
49 m_rawCDC.registerInDataStore();
50 m_rawTOP.registerInDataStore();
51 m_rawARICH.registerInDataStore();
52 m_rawECL.registerInDataStore();
53 m_rawKLM.registerInDataStore();
54 m_rawTRG.registerInDataStore();
55 m_rawFTSW.registerInDataStore();
66 void Convert2RawDetModule::beginRun()
68 B2INFO(
"beginRun called.");
72 void Convert2RawDetModule::event()
76 vector<unsigned int> cpr_id;
82 for (
int i = 0; i < raw_svdarray.
getEntries(); i++) {
83 for (
int j = 0; j < raw_svdarray[ i ]->GetNumEntries(); j++) {
84 cpr_id.push_back(raw_svdarray[ i ]->GetNodeID(j));
89 for (
int i = 0; i < raw_cdcarray.
getEntries(); i++) {
90 for (
int j = 0; j < raw_cdcarray[ i ]->GetNumEntries(); j++) {
91 cpr_id.push_back(raw_cdcarray[ i ]->GetNodeID(j));
96 for (
int i = 0; i < raw_toparray.
getEntries(); i++) {
97 for (
int j = 0; j < raw_toparray[ i ]->GetNumEntries(); j++) {
98 cpr_id.push_back(raw_toparray[ i ]->GetNodeID(j));
103 for (
int i = 0; i < raw_aricharray.
getEntries(); i++) {
104 for (
int j = 0; j < raw_aricharray[ i ]->GetNumEntries(); j++) {
105 cpr_id.push_back(raw_aricharray[ i ]->GetNodeID(j));
110 for (
int i = 0; i < raw_eclarray.
getEntries(); i++) {
111 for (
int j = 0; j < raw_eclarray[ i ]->GetNumEntries(); j++) {
112 cpr_id.push_back(raw_eclarray[ i ]->GetNodeID(j));
117 for (
int i = 0; i < raw_klmarray.
getEntries(); i++) {
118 for (
int j = 0; j < raw_klmarray[ i ]->GetNumEntries(); j++) {
119 cpr_id.push_back(raw_klmarray[ i ]->GetNodeID(j));
124 for (
int i = 0; i < raw_trgarray.
getEntries(); i++) {
125 for (
int j = 0; j < raw_trgarray[ i ]->GetNumEntries(); j++) {
126 cpr_id.push_back(raw_trgarray[ i ]->GetNodeID(j));
132 for (
int i = 0; i < raw_datablkarray.
getEntries(); i++) {
133 convertDataObject(raw_datablkarray[ i ], cpr_id);
135 raw_datablkarray.
clear();
138 for (
int i = 0; i < raw_cprarray.
getEntries(); i++) {
139 convertDataObject((
RawDataBlock*)(raw_cprarray[ i ]), cpr_id);
141 raw_cprarray.
clear();
144 for (
unsigned int i = 0; i < cpr_id.size(); i++) {
145 for (
unsigned int j = i + 1; j < cpr_id.size(); j++) {
147 if (cpr_id[ i ] == cpr_id[ j ]) {
148 B2FATAL(
"Duplicated COPPER object is found. ID=0x" << hex << cpr_id[ i ] <<
" Exiting...");
157 void Convert2RawDetModule::convertDataObject(
RawDataBlock* raw_dblk, std::vector<unsigned int>& cpr_id)
165 printf(
"[FATAL] %s : This module should be used for data with num_eve = 1\n", __PRETTY_FUNCTION__);
181 for (
int j = 0; j < num_eve; j++) {
182 for (
int k = 0; k < num_nodes; k++) {
184 int blkid = j * num_nodes + k;
188 int* temp_buf =
new int[ nwords ];
189 memcpy(temp_buf, raw_dblk->
GetBuffer(blkid), nwords *
sizeof(
int));
194 const int temp_num_eve = 1;
195 const int temp_num_nodes = 1;
198 tempcpr.
SetBuffer(temp_buf, nwords, delete_flag, temp_num_eve, temp_num_nodes);
202 cpr_id.push_back((
unsigned int)subsys_id);
208 if ((subsys_id & DETECTOR_MASK) == SVD_ID) {
210 (ary.
appendNew())->SetBuffer(temp_buf, nwords, delete_flag, temp_num_eve, temp_num_nodes);
211 }
else if ((subsys_id & DETECTOR_MASK) == CDC_ID) {
213 (ary.
appendNew())->SetBuffer(temp_buf, nwords, delete_flag, temp_num_eve, temp_num_nodes);
214 }
else if ((subsys_id & DETECTOR_MASK) == TOP_ID) {
216 (ary.
appendNew())->SetBuffer(temp_buf, nwords, delete_flag, temp_num_eve, temp_num_nodes);
217 }
else if ((subsys_id & DETECTOR_MASK) == ARICH_ID) {
219 (ary.
appendNew())->SetBuffer(temp_buf, nwords, delete_flag, temp_num_eve, temp_num_nodes);
220 }
else if ((subsys_id & DETECTOR_MASK) == BECL_ID) {
222 (ary.
appendNew())->SetBuffer(temp_buf, nwords, delete_flag, temp_num_eve, temp_num_nodes);
223 }
else if ((subsys_id & DETECTOR_MASK) == EECL_ID) {
225 (ary.
appendNew())->SetBuffer(temp_buf, nwords, delete_flag, temp_num_eve, temp_num_nodes);
226 }
else if ((subsys_id & DETECTOR_MASK) == BKLM_ID) {
228 (ary.
appendNew())->SetBuffer(temp_buf, nwords, delete_flag, temp_num_eve, temp_num_nodes);
229 }
else if ((subsys_id & DETECTOR_MASK) == EKLM_ID) {
231 (ary.
appendNew())->SetBuffer(temp_buf, nwords, delete_flag, temp_num_eve, temp_num_nodes);
232 }
else if (((subsys_id & DETECTOR_MASK) & 0xF0000000) == TRGDATA_ID) {
234 (ary.
appendNew())->SetBuffer(temp_buf, nwords, delete_flag, temp_num_eve, temp_num_nodes);
236 printf(
"[FATAL] Undefined detector ID(0x%.8x). Exiting...\n", subsys_id);
250 void Convert2RawDetModule::endRun()
254 B2INFO(
"Convert2RawDet: endRun done.");
258 void Convert2RawDetModule::terminate()
260 B2INFO(
"Convert2RawDet: terminate called");