diff --git a/Projects/ComptonTelescope/online/mfm.bin b/Projects/ComptonTelescope/online/mfm.bin deleted file mode 100644 index 0348b762dca3bb4c1d25130d81fe84c9a4a43ed4..0000000000000000000000000000000000000000 Binary files a/Projects/ComptonTelescope/online/mfm.bin and /dev/null differ diff --git a/Projects/ComptonTelescope/online/src/DecodeD.cpp b/Projects/ComptonTelescope/online/src/DecodeD.cpp index ab53fce82bc754f021030b859fbf9843acc25093..a7434f50e4fd47042145184e700c5ef5f6b28958 100644 --- a/Projects/ComptonTelescope/online/src/DecodeD.cpp +++ b/Projects/ComptonTelescope/online/src/DecodeD.cpp @@ -36,6 +36,10 @@ void DecodeD::setTree(const char* filename) t1->SetBranchAddress("sample", &event.sample); t1->SetBranchAddress("cm_data", &event.cm_data); t1->SetBranchAddress("timestamp", &event.timestamp); + #if __EVENTTYPE__ == frame_t && __EVENTTYPE__ != newframe_t + t1->SetBranchAddress("chain", &event.chain); + t1->SetBranchAddress("nb_asic", &event.nb_asic); + #endif } void DecodeD::setRaw() @@ -88,7 +92,8 @@ long int DecodeD::getTime() return event.timestamp; } -newframe_t* DecodeD::getEvent() +//newframe_t* DecodeD::getEvent() +__EVENTTYPE__* DecodeD::getEvent() { return &event; } @@ -100,6 +105,7 @@ void DecodeD::decodeEvent() case D_ROOT: if (cursor < length) { t1->GetEntry(cursor); + #if __EVENTTYPE__ == newframe_t && __EVENTTYPE__ != frame_t for (int i = 0; i < 2; i++) { // 2 faces for (int j = 0; j < NBDETECTORS; j++) { if (event.chip_data[i][j]) { // Test if data is present @@ -113,7 +119,7 @@ void DecodeD::decodeEvent() } // end Test } // end loop on detectors } // end loop on faces - + #endif cursor++; } break; @@ -147,17 +153,28 @@ void DecodeD::Dump() return; } cout << "Timestamp: " << event.timestamp << endl; + #if __EVENTTYPE__ == frame_t && __EVENTTYPE__ != newframe_t + cout << "Chain: " << event.chain << " - Asic: " << event.nb_asic << endl; + cout << "Chip data: " << event.chip_data << " Analog trigger: " << event.analog_trigger << " seu: " << event.seu << " Channel status: " << event.ch_status << " cm data: " << event.cm_data << endl; + cout << "Samples: "; + for (int k = 0; k<NBSTRIPS; k++) { + cout << event.sample[k] << " "; + } + cout << endl; + #endif + #if __EVENTTYPE__ != frame_t && __EVENTTYPE__ == newframe_t cout << "Chip data\tanalog trigger\tseu\tchannel status\tref channel\tcm data" << endl; for (int i = 0; i < 2; i++) { - for (int j = 0; j < 8; j++) { + for (int j = 0; j < NBDETECTORS; j++) { cout << (int)event.chip_data[i][j] << "\t" << (int)event.analog_trigger[i][j] << "\t" << (int)event.seu[i][j] << "\t" << (int)event.ch_status[i][j] << "\t" << (int)event.ref_channel[i][j] << "\t" << (int)event.cm_data[i][j] << endl; cout << "Samples: "; - for (int k = 0; k<32; k++) { + for (int k = 0; k<NBSTRIPS; k++) { cout << event.sample[i][j][k] << " "; } cout << endl; } } + #endif } diff --git a/Projects/ComptonTelescope/online/src/DecodeD.h b/Projects/ComptonTelescope/online/src/DecodeD.h index ded08672ee7245278d543a5673a06efc834da698..5e6479fd445702e5801d0ad66a8fcf73693dce26 100644 --- a/Projects/ComptonTelescope/online/src/DecodeD.h +++ b/Projects/ComptonTelescope/online/src/DecodeD.h @@ -1,6 +1,10 @@ #ifndef DECODED_H #define DECODED_H +//#define __EVENTTYPE__ frame_t // To read data before conversion +#define __EVENTTYPE__ newframe_t // To read data after conversion + + // General C++ librairies #include <iostream> #include <fstream> @@ -48,7 +52,8 @@ class DecodeD bool verbose; Datatype datatype; long int cursor; - newframe_t event; + __EVENTTYPE__ event; + //newframe_t event; // For root data TTree* t1; @@ -76,7 +81,8 @@ class DecodeD int getStripNbr(const int i); double getEnergy(const int i); long int getTime(); - newframe_t* getEvent(); + __EVENTTYPE__* getEvent(); + //newframe_t* getEvent(); // One may add a few getters here and deprecate getEvent to avoid requiring the class user to know the newframe_t struct void decodeEvent(); diff --git a/Projects/ComptonTelescope/online/src/online_coinc.cpp b/Projects/ComptonTelescope/online/src/online_coinc.cpp index cc3b04e84f28d6259b1e94615bb7897109271fb1..b3fb244cd3b894e744bd9b81a1a24eb0cb57ae72 100644 --- a/Projects/ComptonTelescope/online/src/online_coinc.cpp +++ b/Projects/ComptonTelescope/online/src/online_coinc.cpp @@ -17,13 +17,13 @@ #include "DecodeT.h" #define __TEST_ZONE__ -#undef __TEST_ZONE__ +//#undef __TEST_ZONE__ #define __CIRCULAR_TREE__ #undef __CIRCULAR_TREE__ #define __USE_CUTG__ -#undef __USE_CUTG__ +//#undef __USE_CUTG__ // C++ headers #include <iostream> @@ -109,7 +109,7 @@ int main(int argc, char** argv) DecodeR* DR = new DecodeR(false); // Instantiates DecodeR object reading calorimeter data flux DecodeT* DT = new DecodeT(false); // Instantiates DecodeT object reading trigger data flux DecodeD* DD = new DecodeD(false); // Instantiates DecodeD object reading DSSSD(s) data flux - newframe_t* event; +// newframe_t* event; //DD -> setTree("/disk/proto-data/data/20210304_run2/bb7_3309-7_cs137_20210304_14h35_conv.root"); DD -> setTree("/disk/proto-data/data/20210305_run3/bb7_3309-7_cs137_20210305_14h53_conv.root"); int dlen = DD -> getLength(); @@ -122,7 +122,7 @@ int main(int argc, char** argv) // Open data files ifstream iros, itrig; - cout << "Loading data files "; + cout << "Loading data files " << std::flush; itrig.open("/disk/proto-data/data/20210305_run3/mfm_trigger_20210305_run3.raw", ios::binary); itrig.seekg(0, ios::end); @@ -131,7 +131,7 @@ int main(int argc, char** argv) char* tbuff = new char[tlen]; itrig.read(tbuff, tlen); itrig.close(); - cout << "... "; + cout << "... " << std::flush; iros.open("/disk/proto-data/data/20210305_run3/mfm_rosmap_20210305_run3.raw", ios::binary); iros.seekg(0, ios::end); @@ -252,9 +252,55 @@ int main(int argc, char** argv) } else {// non reset search mode c = 0; - + DR -> setRaw(rbuff); DR -> decodeBlobMFM(); + +#ifdef __TEST_ZONE__ + cout << "Entering test zone." << endl; + DD -> setTree("/disk/proto-data/data/20210305_run3/bb7_3309-7_cs137_20210305_14h53.root"); + #if 0 + int lblength = 50; + char* lb = new char[lblength]; + for (int j = 0; j<lblength; j++) {lb[j] = ' ';} + while (DR -> getCursor() < rlen) { + if (i%10000==0) { + for (int j = 0; j<lblength; j++) { + if ((int) lblength * DR -> getCursor() / rlen > j) + {lb[j] = '#';} } + cout << "\r[" << lb << "] " << i << ": " << DR -> getCursor() << "/" << rlen << "\r" << std::flush; + } + m_NPDetectorManager->ClearEventPhysics(); + m_NPDetectorManager->ClearEventData(); + ccamData -> SetCTCalorimeter(1, 4, DR->getPixelNumber(), DR->getTime(), DR->getData(), pixelNumber); + ccamData -> SetResetCount(cr); + m_NPDetectorManager->BuildPhysicalEvent(); + m_OutputTree->Fill(); + m_NPDetectorManager->CheckSpectraServer(); + i++; + DR -> decodeBlobMFM(); + } + #endif + DD -> decodeEvent(); + int td = DD -> getTime(); + int hist[10] = {0}; + int c = 0; + while (DD->getCursor() < dlen) { + DD -> decodeEvent(); + if (td == DD -> getTime()) { + c++; + } else { + hist[c]++; c = 0; + td = DD -> getTime(); + } +// cout << DD -> getTime() - td << ","; +// cout << DD -> getTime() << " " << td << " : " << DD -> getTime() - td << endl; + } + for (int i = 0; i<10; i++) { + cout << hist[i] << ", "; + } + cout << endl; +#else DD -> rewind(); DD -> decodeEvent(); @@ -268,12 +314,12 @@ int main(int argc, char** argv) #ifndef __TEST_ZONE__ if (td-tr > 20 and td-tr < 120) { // That one is the real one #else - if (td-tr > -1000 and td-tr < 1000) { + if (td-tr > -1000 and td-tr < 0) { #endif //DR -> Dump(); //DD -> Dump(); c++; - cout << cc << " " << c << "(" << cr << ", " << cd << ") : " << tr << " " << td << "\n"; + cout << cc << " " << c /*<< "(" << cr << ", " << cd << ") : " << tr << " " << td*/ << "\n"; // Clear raw and physics data m_NPDetectorManager->ClearEventPhysics(); m_NPDetectorManager->ClearEventData(); @@ -290,7 +336,6 @@ int main(int argc, char** argv) if (ccamPhys->EventMultiplicity > 0) { #ifdef __USE_CUTG__ if (mcut->IsInside(ccamPhys->Half_Energy[0], ccamPhys->Calor_E[0])) { - //cout << "c" << endl; cc++; m_OutputTree->Fill(); } @@ -299,13 +344,11 @@ int main(int argc, char** argv) cc++; #endif } - //cout << "c" << endl; // check spectra m_NPDetectorManager->CheckSpectraServer(); //cout << "d" << endl; } - //#endif if (td < tr) { DD -> decodeEvent(); } else { @@ -328,6 +371,7 @@ int main(int argc, char** argv) i++; } // End of main loop +#endif } // End of mode if delete DR;