![]() |
![]() |
#include <IORawData/CSCTFCommissioning/src/CSCTFFileReader.h>
Public Member Functions | |
CSCTFFileReader (const edm::ParameterSet &pset) | |
bool | fillRawData (edm::EventID &eID, edm::Timestamp &tstamp, FEDRawDataCollection *&data) |
overload to fill the fed collection to be put in the transient event store. | |
virtual | ~CSCTFFileReader () |
Private Attributes | |
SPReader * | ___ddu |
Definition at line 11 of file CSCTFFileReader.h.
CSCTFFileReader::CSCTFFileReader | ( | const edm::ParameterSet & | pset | ) |
Definition at line 28 of file CSCTFFileReader.cc.
References ___ddu, GenMuonPlsPt100GeV_cfg::cout, lat::endl(), EgammaValidation_cff::filename, edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), and SPReader::openFile().
00028 :DaqBaseReader() 00029 { 00030 // Following code is stolen from IORawData/DTCommissioning 00031 const std::string dataformat = pset.getUntrackedParameter<std::string>("dataFormat","TestBeam"); 00032 00033 if(dataformat == "TestBeam") 00034 { 00035 ___ddu = new FileReaderSP(); 00036 } 00037 if(dataformat == "Final") 00038 { 00039 ___ddu = new FileReaderSPNewFormat(); 00040 } 00041 00042 const std::string & filename = pset.getParameter<std::string>("fileName"); 00043 std::cout << "Opening File: " << filename << std::endl; 00044 ___ddu->openFile(filename.c_str()); 00045 }
CSCTFFileReader::~CSCTFFileReader | ( | ) | [virtual] |
Definition at line 47 of file CSCTFFileReader.cc.
References ___ddu.
00048 { 00049 delete ___ddu; 00050 }
bool CSCTFFileReader::fillRawData | ( | edm::EventID & | eID, | |
edm::Timestamp & | tstamp, | |||
FEDRawDataCollection *& | data | |||
) | [virtual] |
overload to fill the fed collection to be put in the transient event store.
NOTE: the FEDRawDataCollection data must be created (with new) withing the method; ownership is passed to the caller.
Implements DaqBaseReader.
Definition at line 52 of file CSCTFFileReader.cc.
References ___ddu, edmNew::copy(), FEDRawData::data(), SPReader::data(), SPReader::dataLength(), FEDRawDataCollection::FEDData(), first, FEDNumbering::getCSCFEDIds(), SPReader::readNextEvent(), and FEDRawData::resize().
00052 { 00053 data = new FEDRawDataCollection(); 00054 00055 // Event buffer and its length 00056 size_t length=0; 00057 00058 // Read DDU record 00059 ___ddu->readNextEvent(); 00060 const unsigned short* dduBuf = reinterpret_cast<unsigned short*>(___ddu->data()); 00061 length = ___ddu->dataLength(); 00062 00063 if(!length) { 00064 delete data; data=0; 00065 return false; 00066 } 00067 00068 int runNumber = 0; // Unknown at the level of EMu local DAQ 00069 int eventNumber =((dduBuf[2])&0x0FFF) | ((dduBuf[3]&0x0FFF)<<12); // L1A Number 00070 eID = EventID(runNumber,eventNumber); 00071 00072 00073 unsigned short dccBuf[200000+4*4];//, *dccHeader=dccBuf, *dccTrailer=dccBuf+4*2+(length/2); 00074 memcpy(dccBuf,dduBuf,length); 00075 00076 // The FED ID 00077 FEDRawData& fedRawData = data->FEDData( FEDNumbering::getCSCFEDIds().first ); 00078 int newlength = 0; 00079 if(length%8) 00080 { 00081 newlength = length + (8-(length%8)); 00082 } 00083 else newlength = length; 00084 fedRawData.resize(newlength); 00085 00086 copy(reinterpret_cast<unsigned char*>(dccBuf), 00087 reinterpret_cast<unsigned char*>(dccBuf)+length, fedRawData.data()); 00088 00089 return true; 00090 }
SPReader* CSCTFFileReader::___ddu [private] |
Definition at line 14 of file CSCTFFileReader.h.
Referenced by CSCTFFileReader(), fillRawData(), and ~CSCTFFileReader().