#include <EventFilter/DTRawToDigi/plugins/DTROS25Unpacker.h>
Public Member Functions | |
DTROS25Unpacker (const edm::ParameterSet &ps) | |
Constructor. | |
const std::vector< DTROS25Data > & | getROSsControlData () const |
virtual void | interpretRawData (const unsigned int *index, int datasize, int dduID, edm::ESHandle< DTReadOutMapping > &mapping, std::auto_ptr< DTDigiCollection > &product, std::auto_ptr< DTLocalTriggerCollection > &product2, uint16_t rosList=0) |
Unpacking method. | |
virtual | ~DTROS25Unpacker () |
Destructor. | |
Private Member Functions | |
int | swap (int x) |
Private Attributes | |
std::vector< DTROS25Data > | controlDataFromAllROS |
DTDataMonitorInterface * | dataMonitor |
bool | debug |
int | hardcodedDDUID |
to analyze older data.. | |
bool | localDAQ |
if reading data locally, words, being assembled as 32-bits, do not need to be swapped | |
bool | performDataIntegrityMonitor |
perform DQM on ROS data | |
bool | readDDUIDfromDDU |
since June 2007, local DAQ, provides FED number | |
bool | readingDDU |
if data are read from ROS directly, no information on the ROS Id is present | |
bool | writeSC |
make the local SC spy data persistent |
Definition at line 21 of file DTROS25Unpacker.h.
DTROS25Unpacker::DTROS25Unpacker | ( | const edm::ParameterSet & | ps | ) |
Constructor.
Definition at line 33 of file DTROS25Unpacker.cc.
References dataMonitor, debug, edm::ParameterSet::getUntrackedParameter(), hardcodedDDUID, localDAQ, performDataIntegrityMonitor, readDDUIDfromDDU, readingDDU, and writeSC.
00033 { 00034 00035 00036 localDAQ = ps.getUntrackedParameter<bool>("localDAQ",false); 00037 readingDDU = ps.getUntrackedParameter<bool>("readingDDU",true); 00038 00039 readDDUIDfromDDU = ps.getUntrackedParameter<bool>("readDDUIDfromDDU",true); 00040 hardcodedDDUID = ps.getUntrackedParameter<int>("dduID",770); 00041 00042 writeSC = ps.getUntrackedParameter<bool>("writeSC",false); 00043 performDataIntegrityMonitor = ps.getUntrackedParameter<bool>("performDataIntegrityMonitor",false); 00044 debug = ps.getUntrackedParameter<bool>("debug",false); 00045 00046 if (performDataIntegrityMonitor) dataMonitor = edm::Service<DTDataMonitorInterface>().operator->(); 00047 00048 }
DTROS25Unpacker::~DTROS25Unpacker | ( | ) | [virtual] |
const std::vector<DTROS25Data>& DTROS25Unpacker::getROSsControlData | ( | ) | const [inline] |
Definition at line 39 of file DTROS25Unpacker.h.
References controlDataFromAllROS.
Referenced by DTDDUUnpacker::interpretRawData().
00039 { 00040 return controlDataFromAllROS; 00041 }
void DTROS25Unpacker::interpretRawData | ( | const unsigned int * | index, | |
int | datasize, | |||
int | dduID, | |||
edm::ESHandle< DTReadOutMapping > & | mapping, | |||
std::auto_ptr< DTDigiCollection > & | product, | |||
std::auto_ptr< DTLocalTriggerCollection > & | product2, | |||
uint16_t | rosList = 0 | |||
) | [virtual] |
Unpacking method.
index is the pointer to the beginning of the buffer. datasize is the size of the buffer in bytes
Implements DTUnpacker.
Definition at line 54 of file DTROS25Unpacker.cc.
References DTROS25Data::addROBHeader(), DTROS25Data::addROBTrailer(), DTROS25Data::addROSDebug(), DTROS25Data::addROSError(), DTROS25Data::addROSHeader(), DTROS25Data::addROSTrailer(), DTROS25Data::addSCData(), DTROS25Data::addTDCData(), DTROS25Data::addTDCError(), DTROBHeaderWord::bunchID(), DTROS25Data::clean(), controlDataFromAllROS, GenMuonPlsPt100GeV_cfg::cout, dataMonitor, debug, DTROSDebugWord::debugMessage(), DTROSDebugWord::debugType(), detId, lat::endl(), DTROSErrorWord::errorType(), DTROBHeaderWord::eventID(), DTLocalTriggerHeaderWord::eventID(), DTROBTrailerWord::eventID(), DTROSTrailerWord::EventWordCount(), DTDataMonitorInterface::fedEntry(), DTDataMonitorInterface::fedFatal(), DTDataMonitorInterface::fedNonFatal(), DTLocalTriggerDataWord::getBits(), DTROChainCoding::getCode(), DTROSWordType::GroupHeader, DTROSWordType::GroupTrailer, hardcodedDDUID, DTLocalTriggerDataWord::hasTrigger(), int, DTWireId::layerId(), DTLocalTriggerSectorCollectorSubHeaderWord::LocalBunchCounter(), DTLocalTriggerSectorCollectorHeaderWord::NumberOf16bitWords(), performDataIntegrityMonitor, funct::pow(), DTLocalTrigger::print(), DTTDCErrorNotifier::print(), DTDataMonitorInterface::processROS25(), readDDUIDfromDDU, readingDDU, DTROSErrorWord::robID(), DTROBTrailerWord::robID(), DTROBHeaderWord::robID(), DTROSWordType::ROSDebug, DTROSWordType::ROSError, DTROSWordType::ROSHeader, DTROSWordType::ROSTrailer, DTROSWordType::SCData, DTLocalTriggerDataWord::SCData(), DTROSWordType::SCHeader, DTROSWordType::SCTrailer, DTChamberId::sector(), DTROS25Data::setROSId(), DTChamberId::station(), swap(), DTTDCMeasurementWord::tdcChannel(), DTROSWordType::TDCDebug, DTROSWordType::TDCError, DTTDCMeasurementWord::tdcID(), DTROSWordType::TDCMeasurement, DTTDCMeasurementWord::tdcTime(), DTLocalTriggerDataWord::trackQuality(), DTLocalTriggerSectorCollectorSubHeaderWord::TriggerDelay(), DTROSHeaderWord::TTCEventCounter(), DTChamberId::wheel(), DTWireId::wire(), DTROBTrailerWord::wordCount(), DTLocalTriggerTrailerWord::wordCount(), and writeSC.
Referenced by DTDDUUnpacker::interpretRawData().
00059 { 00060 00061 00062 int dduID; 00063 if (readDDUIDfromDDU) dduID = dduIDfromDDU; 00064 else dduID = hardcodedDDUID; 00065 00066 const int wordLength = 4; 00067 int numberOfWords = datasize / wordLength; 00068 00069 int rosID = 0; 00070 DTROS25Data controlData(rosID); 00071 controlDataFromAllROS.clear(); 00072 00073 int wordCounter = 0; 00074 uint32_t word = index[swap(wordCounter)]; 00075 00076 map<uint32_t,int> hitOrder; 00077 00078 00079 /****************************************************** 00080 / The the loop is performed with "do-while" statements 00081 / because the ORDER of the words in the event data 00082 / is assumed to be fixed. Eventual changes into the 00083 / structure should be considered as data corruption 00084 *******************************************************/ 00085 00086 // Loop on ROSs 00087 while (wordCounter < numberOfWords) { 00088 00089 controlData.clean(); 00090 00091 rosID++; // to be mapped; 00092 00093 if ( readingDDU ) { 00094 // matching the ROS number with the enabled DDU channel 00095 if ( rosID <= 12 && !((rosList & int(pow(2., (rosID-1) )) ) >> (rosID-1) ) ) continue; 00096 if (debug) cout<<"[DTROS25Unpacker]: ros list: "<<rosList <<" ROS ID "<<rosID<<endl; 00097 } 00098 00099 // FRC prepare info for DTLocalTrigger: wheel and sector corresponding to this ROS 00100 00101 int SCwheel=-3; 00102 int SCsector=0; 00103 int dum1, dum2, dum3, dum4; 00104 00105 if (writeSC && ! mapping->readOutToGeometry(dduID, rosID, 1, 1, 1, 00106 SCwheel, dum1, SCsector, dum2, dum3, dum4) ) { 00107 if (debug) cout <<" found SCwheel: "<<SCwheel<<" and SCsector: "<<SCsector<<endl; 00108 } 00109 else { 00110 if (writeSC && debug) cout <<" WARNING failed to find WHEEL and SECTOR for ROS "<<rosID<<" !"<<endl; 00111 } 00112 00113 00114 // ROS Header; 00115 if (DTROSWordType(word).type() == DTROSWordType::ROSHeader) { 00116 DTROSHeaderWord rosHeaderWord(word); 00117 00118 if (debug) cout<<"[DTROS25Unpacker]: ROSHeader "<<rosHeaderWord.TTCEventCounter()<<endl; 00119 00120 // container for words to be sent to DQM 00121 controlData.setROSId(rosID); 00122 controlData.addROSHeader(rosHeaderWord); 00123 00124 00125 // Loop on ROBs 00126 do { 00127 wordCounter++; word = index[swap(wordCounter)]; 00128 00129 // Eventual ROS Error: occurs when some errors are found in a ROB 00130 if (DTROSWordType(word).type() == DTROSWordType::ROSError) { 00131 DTROSErrorWord dtROSErrorWord(word); 00132 controlData.addROSError(dtROSErrorWord); 00133 if (debug) cout<<"[DTROS25Unpacker]: ROSError, Error type "<<dtROSErrorWord.errorType() 00134 <<" robID "<<dtROSErrorWord.robID()<<endl; 00135 } 00136 00137 // Eventual ROS Debugging; 00138 else if (DTROSWordType(word).type() == DTROSWordType::ROSDebug) { 00139 DTROSDebugWord rosDebugWord(word); 00140 controlData.addROSDebug(rosDebugWord); 00141 if (debug) cout<<"[DTROS25Unpacker]: ROSDebug, type "<<rosDebugWord.debugType() 00142 <<" message "<<rosDebugWord.debugMessage()<<endl; 00143 } 00144 00145 // Check ROB header 00146 else if (DTROSWordType(word).type() == DTROSWordType::GroupHeader) { 00147 00148 DTROBHeaderWord robHeaderWord(word); 00149 int eventID = robHeaderWord.eventID(); // from the TDCs 00150 int bunchID = robHeaderWord.bunchID(); // from the TDCs 00151 int robID = robHeaderWord.robID(); // to be mapped 00152 00153 DTROBHeader robHeader(robID,robHeaderWord); // IJ 00154 controlData.addROBHeader(robHeader); // IJ 00155 00156 if (debug) cout<<"[DTROS25Unpacker] ROB: ID "<<robID 00157 <<" Event ID "<<eventID 00158 <<" BXID "<<bunchID<<endl; 00159 00160 // Loop on TDCs data (headers and trailers are not there) 00161 do { 00162 wordCounter++; word = index[swap(wordCounter)]; 00163 00164 // Eventual TDC Error 00165 if ( DTROSWordType(word).type() == DTROSWordType::TDCError) { 00166 DTTDCErrorWord dtTDCErrorWord(word); 00167 DTTDCError tdcError(robID,dtTDCErrorWord); 00168 controlData.addTDCError(tdcError); 00169 00170 DTTDCErrorNotifier dtTDCError(dtTDCErrorWord); 00171 if (debug) dtTDCError.print(); 00172 } 00173 00174 // Eventual TDC Debug 00175 else if ( DTROSWordType(word).type() == DTROSWordType::TDCDebug) { 00176 if (debug) cout<<"TDC Debugging"<<endl; 00177 } 00178 00179 // The TDC information 00180 else if (DTROSWordType(word).type() == DTROSWordType::TDCMeasurement) { 00181 00182 DTTDCMeasurementWord tdcMeasurementWord(word); 00183 DTTDCData tdcData(robID,tdcMeasurementWord); 00184 controlData.addTDCData(tdcData); 00185 00186 int tdcID = tdcMeasurementWord.tdcID(); 00187 int tdcChannel = tdcMeasurementWord.tdcChannel(); 00188 00189 if (debug) cout<<"[DTROS25Unpacker] TDC: ID "<<tdcID 00190 <<" Channel "<< tdcChannel 00191 <<" Time "<<tdcMeasurementWord.tdcTime()<<endl; 00192 00193 DTROChainCoding channelIndex(dduID, rosID, robID, tdcID, tdcChannel); 00194 00195 hitOrder[channelIndex.getCode()]++; 00196 00197 if (debug) { 00198 cout<<"[DTROS25Unpacker] ROAddress: DDU "<< dduID 00199 <<", ROS "<< rosID 00200 <<", ROB "<< robID 00201 <<", TDC "<< tdcID 00202 <<", Channel "<< tdcChannel<<endl; 00203 } 00204 00205 // FRC if not already done for this ROS, find wheel and sector for SC data 00206 if (writeSC && (SCsector < 1 || SCwheel < -2) ) { 00207 00208 if (debug) cout <<" second try to find SCwheel and SCsector "<<endl; 00209 if ( ! mapping->readOutToGeometry(dduID, rosID, robID, tdcID, tdcChannel, 00210 SCwheel, dum1, SCsector, dum2, dum3, dum4) ) { 00211 if (debug) cout<<" ROS "<<rosID<<" SC wheel "<<SCwheel<<" SC sector "<<SCsector<<endl; 00212 } 00213 else { 00214 if (debug) cout<<" WARNING !! ROS "<<rosID<<" failed again to map for SC!! "<<endl; 00215 } 00216 } 00217 00218 00219 // Map the RO channel to the DetId and wire 00220 DTWireId detId; 00221 // if ( ! mapping->readOutToGeometry(dduID, rosID, robID, tdcID, tdcChannel, detId)) { 00222 int wheelId, stationId, sectorId, slId,layerId, cellId; 00223 if ( ! mapping->readOutToGeometry(dduID, rosID, robID, tdcID, tdcChannel, 00224 wheelId, stationId, sectorId, slId, layerId, cellId)) { 00225 00226 // skip the digi if the detId is invalid 00227 if (sectorId==0 || stationId == 0) continue; 00228 else detId = DTWireId(wheelId, stationId, sectorId, slId, layerId, cellId); 00229 00230 if (debug) cout<<"[DTROS25Unpacker] "<<detId<<endl; 00231 int wire = detId.wire(); 00232 00233 // Produce the digi 00234 DTDigi digi( wire, tdcMeasurementWord.tdcTime(), hitOrder[channelIndex.getCode()]-1); 00235 00236 // Commit to the event 00237 detectorProduct->insertDigi(detId.layerId(),digi); 00238 } 00239 else { 00240 LogWarning ("DTRawToDigi|DTROS25Unpacker") <<"Unable to map the RO channel. DDU"<<dduID 00241 <<"ROS"<<rosID<<"ROB"<<robID<<"TDC"<<tdcID<<"TDC channel"<<tdcChannel; 00242 if (debug) cout<<"[DTROS25Unpacker] ***ERROR*** Missing wire: DDU"<<dduID 00243 <<"ROS"<<rosID<<"ROB"<<robID<<"TDC"<<tdcID<<"TDC channel"<<tdcChannel<<endl; 00244 } 00245 00246 } // TDC information 00247 00248 } while ( DTROSWordType(word).type() != DTROSWordType::GroupTrailer && 00249 DTROSWordType(word).type() != DTROSWordType::ROSError); // loop on TDC's? 00250 00251 // Check ROB Trailer (condition already verified) 00252 if (DTROSWordType(word).type() == DTROSWordType::GroupTrailer) { 00253 DTROBTrailerWord robTrailerWord(word); 00254 controlData.addROBTrailer(robTrailerWord); 00255 if (debug) cout<<"[DTROS25Unpacker]: ROBTrailer, robID "<<robTrailerWord.robID() 00256 <<" eventID "<<robTrailerWord.eventID() 00257 <<" wordCount "<<robTrailerWord.wordCount()<<endl; 00258 } 00259 } // ROB header 00260 00261 // Check the eventual Sector Collector Header 00262 else if (DTROSWordType(word).type() == DTROSWordType::SCHeader) { 00263 DTLocalTriggerHeaderWord scHeaderWord(word); 00264 if (debug) cout<<"[DTROS25Unpacker]: SCHeader eventID "<<scHeaderWord.eventID()<<endl; 00265 00266 // RT added : first word following SCHeader is a SC private header 00267 wordCounter++; word = index[swap(wordCounter)]; 00268 00269 if(DTROSWordType(word).type() == DTROSWordType::SCData){ 00270 DTLocalTriggerSectorCollectorHeaderWord scPrivateHeaderWord(word); 00271 00272 int numofscword = scPrivateHeaderWord.NumberOf16bitWords(); 00273 int leftword = numofscword; 00274 00275 if(debug) cout<<"[DTROS25Unpacker]: SCPrivateHeader (number of data + subheader = " 00276 << scPrivateHeaderWord.NumberOf16bitWords() << ")" <<endl; 00277 00278 // if no SC data -> no loop ; 00279 // otherwise subtract 1 word (subheader) and countdown for bx assignment 00280 if(numofscword > 0){ 00281 00282 int bx_received = (numofscword - 1) / 2; 00283 if(debug) cout<<"[DTROS25Unpacker]: number of bx " << bx_received << endl; 00284 00285 wordCounter++; word = index[swap(wordCounter)]; 00286 if (DTROSWordType(word).type() == DTROSWordType::SCData) { 00287 //second word following SCHeader is a SC private SUB-header 00288 leftword--; 00289 00290 DTLocalTriggerSectorCollectorSubHeaderWord scPrivateSubHeaderWord(word); 00291 00292 if(debug) cout <<"[DTROS25Unpacker]: SC trigger delay = " 00293 << scPrivateSubHeaderWord.TriggerDelay() << endl 00294 <<"[DTROS25Unpacker]: SC bunch counter = " 00295 << scPrivateSubHeaderWord.LocalBunchCounter() << endl; 00296 00297 00298 00299 // actual loop on SC time slots 00300 int stationGroup=0; 00301 do { 00302 wordCounter++; word = index[swap(wordCounter)]; 00303 int SCstation=0; 00304 00305 if (DTROSWordType(word).type() == DTROSWordType::SCData) { 00306 leftword--; 00307 //RT: bx are sent from SC in reverse order starting from the one 00308 //which stopped the spy buffer 00309 int bx_counter = int(round( (leftword + 1)/ 2.)); 00310 00311 if(debug){ 00312 if(bx_counter < 0 || leftword < 0) 00313 cout<<"[DTROS25Unpacker]: SC data more than expected; negative bx counter reached! "<<endl; 00314 } 00315 00316 DTLocalTriggerDataWord scDataWord(word); 00317 00318 // DTSectorCollectorData scData(scDataWord, int(round(bx_counter/2.))); M.Z. 00319 DTSectorCollectorData scData(scDataWord,bx_counter); 00320 controlData.addSCData(scData); 00321 00322 if (debug) { 00323 //cout<<"[DTROS25Unpacker]: SCData bits "<<scDataWord.SCData()<<endl; 00324 //cout << " word in esadecimale: " << hex << word << dec << endl; 00325 if (scDataWord.hasTrigger(0)) 00326 cout<<" at BX "<< bx_counter //round(bx_counter/2.) 00327 <<" lower part has trigger! with track quality " 00328 << scDataWord.trackQuality(0)<<endl; 00329 if (scDataWord.hasTrigger(1)) 00330 cout<<" at BX "<< bx_counter //round(bx_counter/2.) 00331 <<" upper part has trigger! with track quality " 00332 << scDataWord.trackQuality(1)<<endl; 00333 } 00334 00335 if (writeSC && SCwheel >= -2 && SCsector >=1 ) { 00336 00337 // FRC: start constructing persistent SC objects: 00338 // first identify the station (data come in 2 triggers per word: MB1+MB2, MB3+MB4) 00339 if ( scDataWord.hasTrigger(0) || (scDataWord.getBits(0) & 0x30) ) { 00340 if ( stationGroup%2 == 0) SCstation = 1; 00341 else SCstation = 3; 00342 00343 // construct localtrigger for first station of this "group" ... 00344 DTLocalTrigger localtrigger(bx_counter,(scDataWord.SCData()) & 0xFF); 00345 // ... and commit it to the event 00346 DTChamberId chamberId (SCwheel,SCstation,SCsector); 00347 triggerProduct->insertDigi(chamberId,localtrigger); 00348 if (debug) { 00349 cout<<"FRC: just put in triggerProduct: "<<chamberId.wheel() 00350 <<" "<<chamberId.station()<<" "<<chamberId.sector() 00351 <<endl;; 00352 localtrigger.print(); } 00353 } 00354 if ( scDataWord.hasTrigger(1) || (scDataWord.getBits(1) & 0x30) ) { 00355 if ( stationGroup%2 == 0) SCstation = 2; 00356 else SCstation = 4; 00357 00358 // construct localtrigger for second station of this "group" ... 00359 DTLocalTrigger localtrigger(bx_counter,(scDataWord.SCData()) >> 8); 00360 // ... and commit it to the event 00361 DTChamberId chamberId (SCwheel,SCstation,SCsector); 00362 triggerProduct->insertDigi(chamberId,localtrigger); 00363 if(debug) { 00364 cout <<"FRC: just put in triggerProduct: " 00365 <<chamberId.wheel()<<" "<<chamberId.station() 00366 <<" "<<chamberId.sector() 00367 <<endl;; 00368 localtrigger.print(); 00369 } 00370 } 00371 00372 stationGroup++; 00373 } // if writeSC 00374 } // if SC data 00375 } while ( DTROSWordType(word).type() != DTROSWordType::SCTrailer ); 00376 00377 } // end SC subheader 00378 } // end if SC send more than only its own header! 00379 } // end if first data following SCheader is not SCData 00380 00381 if (DTROSWordType(word).type() == DTROSWordType::SCTrailer) { 00382 DTLocalTriggerTrailerWord scTrailerWord(word); 00383 if (debug) cout<<"[DTROS25Unpacker]: SCTrailer, number of words " 00384 <<scTrailerWord.wordCount()<<endl; 00385 } 00386 } 00387 00388 } while ( DTROSWordType(word).type() != DTROSWordType::ROSTrailer ); // loop on ROBS 00389 00390 // check ROS Trailer (condition already verified) 00391 if (DTROSWordType(word).type() == DTROSWordType::ROSTrailer){ 00392 DTROSTrailerWord rosTrailerWord(word); 00393 controlData.addROSTrailer(rosTrailerWord); 00394 if (debug) cout<<"[DTROS25Unpacker]: ROSTrailer "<<rosTrailerWord.EventWordCount()<<endl; 00395 } 00396 00397 // Perform dqm if requested: 00398 // DQM IS PERFORMED FOR EACH ROS SEPARATELY 00399 if (performDataIntegrityMonitor) { 00400 dataMonitor->processROS25(controlData, dduID, rosID); 00401 // fill the vector with ROS's control data 00402 controlDataFromAllROS.push_back(controlData); 00403 } 00404 00405 } 00406 00407 else if (index[swap(wordCounter)] == 0) { 00408 // in the case of odd number of words of a given ROS the header of 00409 // the next one is postponed by 4 bytes word set to 0. 00410 // rosID needs to be step back by 1 unit 00411 if (debug) cout<<"[DTROS25Unpacker]: odd number of ROS words"<<endl; 00412 rosID--; 00413 } // if ROS header 00414 00415 else { 00416 cout<<"[DTROS25Unpacker]: ERROR! First word is not a ROS Header"<<endl; 00417 } 00418 00419 // (needed if there are more than 1 ROS) 00420 wordCounter++; word = index[swap(wordCounter)]; 00421 00422 } // loop on ROS! 00423 00424 // Check that we found the payload for each of the 12 ROS 00425 if (performDataIntegrityMonitor) { 00426 if(controlDataFromAllROS.size() == 12) { 00427 dataMonitor->fedEntry(dduID); 00428 } else if(controlDataFromAllROS.size() == 0) { 00429 dataMonitor->fedFatal(dduID); 00430 } else { 00431 dataMonitor->fedNonFatal(dduID); 00432 } 00433 } 00434 00435 }
Definition at line 438 of file DTROS25Unpacker.cc.
References localDAQ, and HLT_VtxMuL3::result.
Referenced by interpretRawData().
00438 { 00439 00440 int result=n; 00441 00442 if ( !localDAQ ) { 00443 if (n%2==0) result = (n+1); 00444 if (n%2==1) result = (n-1); 00445 } 00446 00447 return result; 00448 }
std::vector<DTROS25Data> DTROS25Unpacker::controlDataFromAllROS [private] |
Definition at line 68 of file DTROS25Unpacker.h.
Referenced by getROSsControlData(), and interpretRawData().
Definition at line 66 of file DTROS25Unpacker.h.
Referenced by DTROS25Unpacker(), and interpretRawData().
bool DTROS25Unpacker::debug [private] |
Definition at line 64 of file DTROS25Unpacker.h.
Referenced by DTROS25Unpacker(), and interpretRawData().
int DTROS25Unpacker::hardcodedDDUID [private] |
to analyze older data..
Definition at line 56 of file DTROS25Unpacker.h.
Referenced by DTROS25Unpacker(), and interpretRawData().
bool DTROS25Unpacker::localDAQ [private] |
if reading data locally, words, being assembled as 32-bits, do not need to be swapped
Definition at line 48 of file DTROS25Unpacker.h.
Referenced by DTROS25Unpacker(), and swap().
perform DQM on ROS data
Definition at line 62 of file DTROS25Unpacker.h.
Referenced by DTROS25Unpacker(), and interpretRawData().
bool DTROS25Unpacker::readDDUIDfromDDU [private] |
since June 2007, local DAQ, provides FED number
Definition at line 54 of file DTROS25Unpacker.h.
Referenced by DTROS25Unpacker(), and interpretRawData().
bool DTROS25Unpacker::readingDDU [private] |
if data are read from ROS directly, no information on the ROS Id is present
Definition at line 51 of file DTROS25Unpacker.h.
Referenced by DTROS25Unpacker(), and interpretRawData().
bool DTROS25Unpacker::writeSC [private] |
make the local SC spy data persistent
Definition at line 59 of file DTROS25Unpacker.h.
Referenced by DTROS25Unpacker(), and interpretRawData().