Go to the documentation of this file.00001
00002
00003
00004
00005
00006 #include <EventFilter/RawDataCollector/interface/RawDataFEDSelector.h>
00007
00008 #include <DataFormats/FEDRawData/interface/FEDRawDataCollection.h>
00009 #include <DataFormats/FEDRawData/interface/FEDRawData.h>
00010 #include <DataFormats/FEDRawData/interface/FEDNumbering.h>
00011
00012 #include <stdio.h>
00013
00014 using namespace std;
00015 using namespace edm;
00016
00017 auto_ptr<FEDRawDataCollection> RawDataFEDSelector::select(const Handle<FEDRawDataCollection> & rawData) {
00018
00019 auto_ptr<FEDRawDataCollection> selectedRawData(new FEDRawDataCollection);
00020
00021
00022 if (fedList.size()) {
00023 vector<int>::const_iterator it = fedList.begin();
00024 vector<int>::const_iterator itEnd = fedList.end();
00025 for (;it != itEnd; ++it) {
00026
00027 const FEDRawData & fedData = rawData->FEDData(*it);
00028 size_t size=fedData.size();
00029
00030 FEDRawData & fedDataProd = selectedRawData->FEDData(*it);
00031 fedDataProd.resize(size);
00032
00033 memcpy(fedDataProd.data(),fedData.data(),size);
00034 }
00035 }
00036
00037
00038 else {
00039
00040
00041 if (fedRange.second==0) setRange(pair<int,int>(0,FEDNumbering::lastFEDId()));
00042
00043 for (int i = fedRange.first; i <= fedRange.second; ++i) {
00044
00045 const FEDRawData & fedData = rawData->FEDData(i);
00046 size_t size=fedData.size();
00047
00048 FEDRawData & fedDataProd = selectedRawData->FEDData(i);
00049 fedDataProd.resize(size);
00050
00051 memcpy(fedDataProd.data(),fedData.data(),size);
00052 }
00053 }
00054
00055 return selectedRawData;
00056 }
00057
00058
00059 auto_ptr<FEDRawDataCollection> RawDataFEDSelector::select(const Handle<FEDRawDataCollection> & rawData,
00060 const pair<int,int> & range) {
00061 setRange(range);
00062 return select(rawData);
00063 }
00064
00065 auto_ptr<FEDRawDataCollection> RawDataFEDSelector::select(const Handle<FEDRawDataCollection> & rawData,
00066 const vector<int> & list) {
00067 setRange(list);
00068 return select(rawData);
00069 }
00070
00071
00072
00073