CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
PixelSLinkDataInputSource Class Reference

#include <PixelSLinkDataInputSource.h>

Inheritance diagram for PixelSLinkDataInputSource:
edm::ProducerSourceFromFiles edm::ProducerSourceBase edm::FromFiles edm::PuttableSourceBase edm::InputSource edm::ProducerBase edm::ProductRegistryHelper

Public Member Functions

 PixelSLinkDataInputSource (const edm::ParameterSet &pset, const edm::InputSourceDescription &desc)
 
 ~PixelSLinkDataInputSource () override
 
- Public Member Functions inherited from edm::ProducerSourceFromFiles
bool noFiles () const override
 
 ProducerSourceFromFiles (ParameterSet const &pset, InputSourceDescription const &desc, bool realData)
 
 ~ProducerSourceFromFiles () override
 
- Public Member Functions inherited from edm::ProducerSourceBase
EventNumber_t event () const
 
unsigned int eventCreationDelay () const
 
EventID const & eventID () const
 
LuminosityBlockNumber_t luminosityBlock () const
 
unsigned int numberEventsInLumi () const
 
unsigned int numberEventsInRun () const
 
unsigned int numberEventsInThisLumi () const
 
unsigned int numberEventsInThisRun () const
 
TimeValue_t presentTime () const
 
 ProducerSourceBase (ParameterSet const &pset, InputSourceDescription const &desc, bool realData)
 
RunNumber_t run () const
 
unsigned int timeBetweenEvents () const
 
 ~ProducerSourceBase () noexcept(false) override
 
- Public Member Functions inherited from edm::PuttableSourceBase
bool hasAbilityToProduceInLumis () const final
 
bool hasAbilityToProduceInRuns () const final
 
 PuttableSourceBase (ParameterSet const &, InputSourceDescription const &)
 
void registerProducts () final
 Register any produced products. More...
 
- Public Member Functions inherited from edm::InputSource
std::shared_ptr< ActivityRegistryactReg () const
 Accessor for Activity Registry. More...
 
std::shared_ptr< BranchIDListHelper const > branchIDListHelper () const
 Accessors for branchIDListHelper. More...
 
std::shared_ptr< BranchIDListHelper > & branchIDListHelper ()
 
void closeFile (FileBlock *, bool cleaningUpAfterException)
 close current file More...
 
void doBeginJob ()
 Called by framework at beginning of job. More...
 
void doEndJob ()
 Called by framework at end of job. More...
 
ProcessingController::ForwardState forwardState () const
 
bool goToEvent (EventID const &eventID)
 
 InputSource (ParameterSet const &, InputSourceDescription const &)
 Constructor. More...
 
 InputSource (InputSource const &)=delete
 
void issueReports (EventID const &eventID, StreamID streamID)
 issue an event report More...
 
LuminosityBlockNumber_t luminosityBlock () const
 Accessor for current luminosity block number. More...
 
std::shared_ptr< LuminosityBlockAuxiliaryluminosityBlockAuxiliary () const
 Called by the framework to merge or insert lumi in principal cache. More...
 
int maxEvents () const
 
int maxLuminosityBlocks () const
 
ModuleDescription const & moduleDescription () const
 Accessor for 'module' description. More...
 
ItemType nextItemType ()
 Advances the source to the next item. More...
 
InputSourceoperator= (InputSource const &)=delete
 
ProcessConfiguration const & processConfiguration () const
 Accessor for Process Configuration. More...
 
std::string const & processGUID () const
 Accessor for global process identifier. More...
 
ProcessHistoryRegistry const & processHistoryRegistry () const
 Accessors for process history registry. More...
 
ProcessHistoryRegistryprocessHistoryRegistry ()
 
ProcessingMode processingMode () const
 RunsLumisAndEvents (default), RunsAndLumis, or Runs. More...
 
std::shared_ptr< ProductRegistry const > productRegistry () const
 Accessors for product registry. More...
 
std::shared_ptr< ProductRegistry > & productRegistry ()
 
bool randomAccess () const
 
void readAndMergeLumi (LuminosityBlockPrincipal &lbp)
 Read next luminosity block (same as a prior lumi) More...
 
void readAndMergeRun (RunPrincipal &rp)
 Read next run (same as a prior run) More...
 
void readEvent (EventPrincipal &ep, StreamContext &)
 Read next event. More...
 
bool readEvent (EventPrincipal &ep, EventID const &, StreamContext &)
 Read a specific event. More...
 
std::unique_ptr< FileBlockreadFile ()
 Read next file. More...
 
void readLuminosityBlock (LuminosityBlockPrincipal &lumiPrincipal, HistoryAppender &historyAppender)
 Read next luminosity block (new lumi) More...
 
std::shared_ptr< LuminosityBlockAuxiliaryreadLuminosityBlockAuxiliary ()
 Read next luminosity block Auxilary. More...
 
void readRun (RunPrincipal &runPrincipal, HistoryAppender &historyAppender)
 Read next run (new run) More...
 
std::shared_ptr< RunAuxiliaryreadRunAuxiliary ()
 Read next run Auxiliary. More...
 
ProcessHistoryID const & reducedProcessHistoryID () const
 
int remainingEvents () const
 
int remainingLuminosityBlocks () const
 
void repeat ()
 Reset the remaining number of events/lumis to the maximum number. More...
 
std::pair< SharedResourcesAcquirer *, std::recursive_mutex * > resourceSharedWithDelayedReader ()
 Returns nullptr if no resource shared between the Source and a DelayedReader. More...
 
ProcessingController::ReverseState reverseState () const
 
void rewind ()
 Begin again at the first event. More...
 
RunNumber_t run () const
 Accessor for current run number. More...
 
std::shared_ptr< RunAuxiliaryrunAuxiliary () const
 Called by the framework to merge or insert run in principal cache. More...
 
void setLuminosityBlockNumber_t (LuminosityBlockNumber_t lb)
 Set the luminosity block ID. More...
 
void setRunNumber (RunNumber_t r)
 Set the run number. More...
 
void skipEvents (int offset)
 
std::shared_ptr< ThinnedAssociationsHelper const > thinnedAssociationsHelper () const
 Accessors for thinnedAssociationsHelper. More...
 
std::shared_ptr< ThinnedAssociationsHelper > & thinnedAssociationsHelper ()
 
Timestamp const & timestamp () const
 Accessor for the current time, as seen by the input source. More...
 
virtual ~InputSource () noexcept(false)
 Destructor. More...
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts (BranchType iBranchType) const
 
 ProducerBase ()
 
std::vector< edm::ProductResolverIndex > const & putTokenIndexToProductResolverIndex () const
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription const &)> registrationCallback () const
 used by the fwk to register list of products More...
 
void resolvePutIndicies (BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
 
 ~ProducerBase () noexcept(false) override
 

Private Member Functions

int getEventNumberFromFillWords (const std::vector< uint64_t > &data, uint32_t &totword)
 
void produce (edm::Event &event) override
 
bool setRunAndEventInfo (edm::EventID &id, edm::TimeValue_t &time, edm::EventAuxiliary::ExperimentType &) override
 
uint32_t synchronizeEvents ()
 

Private Attributes

std::unique_ptr< FEDRawDataCollectionbuffers
 
uint32_t m_currenteventnumber
 
uint32_t m_currenttriggernumber
 
uint64_t m_data
 
int32_t m_eventnumber_shift
 
int m_fedid
 
uint32_t m_fileindex
 
uint32_t m_globaleventnumber
 
int m_runnumber
 
std::unique_ptr< Storagestorage
 

Additional Inherited Members

- Public Types inherited from edm::InputSource
enum  ItemType {
  IsInvalid, IsStop, IsFile, IsRun,
  IsLumi, IsEvent, IsRepeat, IsSynchronize
}
 
enum  ProcessingMode { Runs, RunsAndLumis, RunsLumisAndEvents }
 
- Public Types inherited from edm::ProducerBase
using ModuleToResolverIndicies = std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex >>
 
typedef ProductRegistryHelper::TypeLabelList TypeLabelList
 
- Static Public Member Functions inherited from edm::ProducerSourceFromFiles
static void fillDescription (ParameterSetDescription &desc)
 
- Static Public Member Functions inherited from edm::ProducerSourceBase
static void fillDescription (ParameterSetDescription &desc)
 
- Static Public Member Functions inherited from edm::InputSource
static const std::string & baseType ()
 
static void fillDescription (ParameterSetDescription &desc)
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &)
 
- Public Attributes inherited from edm::InputSource
signalslot::Signal< void(StreamContext const &, ModuleCallingContext const &)> postEventReadFromSourceSignal_
 
signalslot::Signal< void(StreamContext const &, ModuleCallingContext const &)> preEventReadFromSourceSignal_
 
- Protected Member Functions inherited from edm::PuttableSourceBase
void beginJob () override
 
- Protected Member Functions inherited from edm::InputSource
void decreaseRemainingEventsBy (int iSkipped)
 
bool eventCached () const
 
bool newLumi () const
 
bool newRun () const
 
ProcessHistoryRegistryprocessHistoryRegistryForUpdate ()
 
ProductRegistryproductRegistryUpdate ()
 
void reset () const
 
void resetEventCached ()
 
void resetLuminosityBlockAuxiliary (bool isNewLumi=true) const
 
void resetNewLumi ()
 
void resetNewRun ()
 
void resetRunAuxiliary (bool isNewRun=true) const
 
void setEventCached ()
 Called by the framework to merge or ached() const {return eventCached_;}. More...
 
void setLuminosityBlockAuxiliary (LuminosityBlockAuxiliary *lbp)
 
void setNewLumi ()
 
void setNewRun ()
 
void setRunAuxiliary (RunAuxiliary *rp)
 
void setTimestamp (Timestamp const &theTime)
 To set the current time, as seen by the input source. More...
 
ItemType state () const
 

Detailed Description

IORawData/SiPixelInputSources/interface/PixelSLinkDataInputSource.h

Description: <one line="" class="" summary>="">

Implementation: <Notes on="" implementation>="">

IORawData/SiPixelInputSources/src/PixelSLinkDataInputSource.cc

Description: <one line="" class="" summary>="">

Implementation: <Notes on="" implementation>="">

Definition at line 39 of file PixelSLinkDataInputSource.h.

Constructor & Destructor Documentation

PixelSLinkDataInputSource::PixelSLinkDataInputSource ( const edm::ParameterSet pset,
const edm::InputSourceDescription desc 
)
explicit

Definition at line 193 of file PixelSLinkDataInputSource.cc.

References StorageFactory::check(), StorageFactory::enableAccounting(), edm::FromFiles::fileNames(), StorageFactory::get(), StorageFactory::getToModify(), createfilelist::int, m_currenteventnumber, m_data, m_fileindex, m_runnumber, StorageFactory::open(), Storage::read(), summaryLumi::runnum, findQualityFiles::size, storage, and AlCaHLTBitMon_QueryRunRegistry::string.

195  : ProducerSourceFromFiles(pset, desc, true),
196  m_fedid(pset.getUntrackedParameter<int>("fedid")),
197  m_fileindex(0),
198  m_runnumber(pset.getUntrackedParameter<int>("runNumber", -1)),
202  produces<FEDRawDataCollection>();
203 
204  if (m_fileindex >= fileNames().size()) {
205  edm::LogInfo("") << "no more file to read " << std::endl;
206  return; // ???
207  }
208  std::string currentfilename = fileNames()[m_fileindex];
209  edm::LogInfo("") << "now examining file " << currentfilename;
210  m_fileindex++;
211  // reading both castor and other ('normal'/dcap) files.
212  IOOffset size = -1;
214 
215  edm::LogInfo("PixelSLinkDataInputSource")
216  << " unsigned long int size = " << sizeof(unsigned long int)
217  << "\n unsigned long size = " << sizeof(unsigned long)
218  << "\n unsigned long long size = " << sizeof(unsigned long long) << "\n uint32_t size = " << sizeof(uint32_t)
219  << "\n uint64_t size = " << sizeof(uint64_t) << std::endl;
220 
221  bool exists = StorageFactory::get()->check(currentfilename, &size);
222 
223  edm::LogInfo("PixelSLinkDataInputSource") << "file size " << size << std::endl;
224 
225  if (!exists) {
226  edm::LogInfo("") << "file " << currentfilename << " cannot be found.";
227  return;
228  }
229  // now open the file stream:
230  storage = StorageFactory::get()->open(currentfilename);
231  // (throw if storage is 0)
232 
233  // check run number by opening up data file...
234 
235  Storage &temp_file = *storage;
236  // IOSize n =
237  temp_file.read((char *)&m_data, 8);
238  if ((m_data >> 60) != 0x5) {
239  uint32_t runnum = m_data;
240  if (m_runnumber != -1)
241  edm::LogInfo("") << "WARNING: observed run number encoded in S-Link dump. Overwriting "
242  "run number as defined in .cfg file!!! Run number now set to "
243  << runnum << " (was " << m_runnumber << ")";
244  m_runnumber = runnum;
245  }
246  temp_file.read((char *)&m_data, 8);
247  m_currenteventnumber = (m_data >> 32) & 0x00ffffff;
248 }
size
Write out results.
bool check(const std::string &url, IOOffset *size=0) const
T getUntrackedParameter(std::string const &, T const &) const
bool enableAccounting(bool enabled)
virtual IOSize read(void *into, IOSize n, IOOffset pos)
Definition: Storage.cc:17
ProducerSourceFromFiles(ParameterSet const &pset, InputSourceDescription const &desc, bool realData)
std::vector< std::string > const & fileNames() const
Definition: FromFiles.h:22
static const StorageFactory * get(void)
unsigned long long uint64_t
Definition: Time.h:15
int64_t IOOffset
Definition: IOTypes.h:19
std::unique_ptr< Storage > storage
static StorageFactory * getToModify(void)
std::unique_ptr< Storage > open(const std::string &url, int mode=IOFlags::OpenRead) const
PixelSLinkDataInputSource::~PixelSLinkDataInputSource ( )
override

Definition at line 251 of file PixelSLinkDataInputSource.cc.

251 {}

Member Function Documentation

int PixelSLinkDataInputSource::getEventNumberFromFillWords ( const std::vector< uint64_t > &  data,
uint32_t &  totword 
)
private

Definition at line 34 of file PixelSLinkDataInputSource.cc.

References officialStyle::chan, HFPhase1Reconstructor_cfi::gap, GetRecoTauVFromDQM_MC_cff::kk, and mps_update::status.

34  {
35  // buffer validity, should already be pretty clean as this is exactly what
36  // goes into the FEDRawDataobject.
37 
38  // code copied directly from A. Ryd's fill word checker in
39  // PixelFEDInterface::PwordSlink64
40 
41  int fif2cnt = 0;
42  int dumcnt = 0;
43  int gapcnt = 0;
44  uint32_t gap[9];
45  uint32_t dum[9];
46  uint32_t word[2] = {0, 0};
47  uint32_t chan = 0;
48  uint32_t roc = 0;
49 
50  const uint32_t rocmsk = 0x3e00000;
51  const uint32_t chnlmsk = 0xfc000000;
52 
53  for (int jk = 1; jk < 9; jk++)
54  gap[jk] = 0;
55  for (int jk = 1; jk < 9; jk++)
56  dum[jk] = 0;
57 
58  int fifcnt = 1;
59  for (size_t kk = 0; kk < buffer.size(); ++kk) {
60  word[0] = (uint32_t)buffer[kk];
61  word[1] = (uint32_t)(buffer[kk] >> 32);
62 
63  for (size_t iw = 0; iw < 2; iw++) {
64  chan = ((word[iw] & chnlmsk) >> 26);
65  roc = ((word[iw] & rocmsk) >> 21);
66 
67  // count non-error words
68  if (roc < 25) {
69  if ((chan > 4) && (chan < 10) && (fifcnt != 2)) {
70  fif2cnt = 0;
71  fifcnt = 2;
72  }
73  if ((chan > 9) && (chan < 14) && (fifcnt != 3)) {
74  fif2cnt = 0;
75  fifcnt = 3;
76  }
77  if ((chan > 13) && (chan < 19) && (fifcnt != 4)) {
78  fif2cnt = 0;
79  fifcnt = 4;
80  }
81  if ((chan > 18) && (chan < 23) && (fifcnt != 5)) {
82  fif2cnt = 0;
83  fifcnt = 5;
84  }
85  if ((chan > 22) && (chan < 28) && (fifcnt != 6)) {
86  fif2cnt = 0;
87  fifcnt = 6;
88  }
89  if ((chan > 27) && (chan < 32) && (fifcnt != 7)) {
90  fif2cnt = 0;
91  fifcnt = 7;
92  }
93  if ((chan > 31) && (fifcnt != 8)) {
94  fif2cnt = 0;
95  fifcnt = 8;
96  }
97  fif2cnt++;
98  }
99  if (roc == 26) {
100  gap[fifcnt] = (0x1000 + (word[iw] & 0xff));
101  gapcnt++;
102  }
103 
104  if ((roc == 27) && ((fif2cnt + dumcnt) < 6)) {
105  dumcnt++;
106  dum[fifcnt] = (0x1000 + (word[iw] & 0xff));
107  } else if ((roc == 27) && ((fif2cnt + dumcnt) > 6)) {
108  dumcnt = 1;
109  fif2cnt = 0;
110  fifcnt++;
111  }
112  }
113 
114  // word check complete
115  if (((fif2cnt + dumcnt) == 6) && (dumcnt > 0)) // done with this fifo
116  {
117  dumcnt = 0;
118  fif2cnt = 0;
119  fifcnt++;
120  }
121  if ((gapcnt > 0) && ((dumcnt + fif2cnt) > 5)) // done with this fifo
122  {
123  gapcnt = 0;
124  fifcnt++;
125  fif2cnt = 0;
126  dumcnt = 0;
127  } else if ((gapcnt > 0) && ((dumcnt + fif2cnt) < 6))
128  gapcnt = 0;
129 
130  } // end of fifo-3 word loop-see what we got!
131 
132  int status = 0;
133 
134  if (gap[1] > 0) {
135  totword = (gap[1] & 0xff);
136  status = 1;
137  } else if (gap[2] > 0) {
138  totword = (gap[2] & 0xff);
139  status = 1;
140  } else if (dum[1] > 0) {
141  totword = (dum[1] & 0xff);
142  status = 1;
143  } else if (dum[2] > 0) {
144  totword = (dum[2] & 0xff);
145  status = 1;
146  }
147 
148  if (gap[3] > 0) {
149  totword = totword | ((gap[3] & 0xff) << 8);
150  status = status | 0x2;
151  } else if (gap[4] > 0) {
152  totword = totword | ((gap[4] & 0xff) << 8);
153  status = status | 0x2;
154  } else if (dum[3] > 0) {
155  totword = totword | ((dum[3] & 0xff) << 8);
156  status = status | 0x2;
157  } else if (dum[4] > 0) {
158  totword = totword | ((dum[4] & 0xff) << 8);
159  status = status | 0x2;
160  }
161 
162  if (gap[5] > 0) {
163  totword = totword | ((gap[5] & 0xff) << 16);
164  status = status | 0x4;
165  } else if (gap[6] > 0) {
166  totword = totword | ((gap[6] & 0xff) << 16);
167  status = status | 0x4;
168  } else if (dum[5] > 0) {
169  totword = totword | ((dum[5] & 0xff) << 16);
170  status = status | 0x4;
171  } else if (dum[6] > 0) {
172  totword = totword | ((dum[6] & 0xff) << 16);
173  status = status | 0x4;
174  }
175 
176  if (gap[7] > 0) {
177  totword = totword | ((gap[7] & 0xff) << 24);
178  status = status | 0x8;
179  } else if (gap[8] > 0) {
180  totword = totword | ((gap[8] & 0xff) << 24);
181  status = status | 0x8;
182  } else if (dum[7] > 0) {
183  totword = totword | ((dum[7] & 0xff) << 24);
184  status = status | 0x8;
185  } else if (dum[8] > 0) {
186  totword = totword | ((dum[8] & 0xff) << 24);
187  status = status | 0x8;
188  }
189  return (status);
190 }
chan
lumi = TPaveText(lowX+0.38, lowY+0.061, lowX+0.45, lowY+0.161, "NDC") lumi.SetBorderSize( 0 ) lumi...
void PixelSLinkDataInputSource::produce ( edm::Event event)
overrideprivatevirtual

Implements edm::ProducerSourceBase.

Definition at line 350 of file PixelSLinkDataInputSource.cc.

References buffers, and eostools::move().

350  {
351  event.put(std::move(buffers));
352  buffers.reset();
353 }
std::unique_ptr< FEDRawDataCollection > buffers
def move(src, dest)
Definition: eostools.py:511
bool PixelSLinkDataInputSource::setRunAndEventInfo ( edm::EventID id,
edm::TimeValue_t time,
edm::EventAuxiliary::ExperimentType  
)
overrideprivatevirtual

Implements edm::ProducerSourceBase.

Definition at line 253 of file PixelSLinkDataInputSource.cc.

References edmScanValgrind::buffer, buffers, KineDebug3::count(), TauDecayModes::dec, mps_fire::i, edm::ProducerSourceBase::luminosityBlock(), m_currenteventnumber, m_currenttriggernumber, m_data, m_eventnumber_shift, m_fedid, m_runnumber, gen::n, Storage::read(), edm::ProducerSourceBase::run(), storage, and synchronizeEvents().

255  {
256  Storage &m_file = *storage;
257 
258  // create product (raw data)
259  buffers.reset(new FEDRawDataCollection);
260 
261  // uint32_t currenteventnumber = (m_data >> 32)&0x00ffffff;
262  uint32_t eventnumber = (m_data >> 32) & 0x00ffffff;
263 
264  do {
265  std::vector<uint64_t> buffer;
266 
267  uint16_t count = 0;
268  eventnumber = (m_data >> 32) & 0x00ffffff;
269  if (m_currenteventnumber == 0)
270  m_currenteventnumber = eventnumber;
271  edm::LogInfo("PixelSLinkDataInputSource::produce()")
272  << "**** event number = " << eventnumber << " global event number " << m_currenteventnumber << " data "
273  << std::hex << m_data << std::dec << std::endl;
274  while ((m_data >> 60) != 0x5) {
275  // std::cout << std::hex << m_data << std::dec << std::endl;
276  if (count == 0) {
277  edm::LogWarning("") << "DATA CORRUPTION!";
278  edm::LogWarning("") << "Expected to find header, but read: 0x" << std::hex << m_data << std::dec;
279  }
280 
281  count++;
282  int n = m_file.read((char *)&m_data, 8);
283  edm::LogWarning("") << "next data " << std::hex << m_data << std::dec << std::endl;
284 
285  if (n != 8) {
286  edm::LogInfo("") << "End of input file";
287  return false;
288  }
289  }
290 
291  if (count > 0) {
292  edm::LogWarning("") << "Had to read " << count << " words before finding header!" << std::endl;
293  }
294 
295  if (m_fedid > -1) {
296  m_data = (m_data & 0xfffffffffff000ffLL) | ((m_fedid & 0xfff) << 8);
297  }
298 
299  uint16_t fed_id = (m_data >> 8) & 0xfff;
300  // std::cout << "fed id = " << fed_id << std::endl;
301  buffer.push_back(m_data);
302 
303  do {
304  m_file.read((char *)&m_data, 8);
305  buffer.push_back(m_data);
306  } while ((m_data >> 60) != 0xa);
307  // std::cout << "read " << buffer.size() << " long words" << std::endl;
308 
309  auto rawData = std::make_unique<FEDRawData>(8 * buffer.size());
310  // FEDRawData * rawData = new FEDRawData(8*buffer.size());
311  unsigned char *dataptr = rawData->data();
312 
313  for (uint16_t i = 0; i < buffer.size(); i++) {
314  ((uint64_t *)dataptr)[i] = buffer[i];
315  }
316  uint32_t thetriggernumber = 0;
317  int nfillwords = 0; // getEventNumberFromFillWords(buffer,thetriggernumber);
318 
319  if (nfillwords > 0) {
320  LogInfo("") << "n fill words = " << nfillwords << ", trigger numbers: " << thetriggernumber << ","
321  << m_currenttriggernumber << std::endl;
322  m_eventnumber_shift = thetriggernumber - m_currenttriggernumber;
323  }
324  m_currenttriggernumber = thetriggernumber;
325  FEDRawData &fedRawData = buffers->FEDData(fed_id);
326  fedRawData = *rawData;
327 
328  // read the first data member of the next blob to check on event number
329  int n = m_file.read((char *)&m_data, 8);
330  if (n == 0) {
331  edm::LogInfo("") << "End of input file";
332  }
333  m_currenteventnumber = (m_data >> 32) & 0x00ffffff;
334  if (m_currenteventnumber < eventnumber)
335  LogError("PixelSLinkDataInputSource")
336  << " error, the previous event number (" << eventnumber << ") is LARGER than the next event number ("
337  << m_currenteventnumber << ")" << std::endl;
338 
339  } while (eventnumber == m_currenteventnumber);
340 
341  uint32_t realeventno = synchronizeEvents();
342  if (m_runnumber != 0)
343  id = edm::EventID(m_runnumber, id.luminosityBlock(), realeventno);
344  else
345  id = edm::EventID(id.run(), id.luminosityBlock(), realeventno);
346  return true;
347 }
virtual IOSize read(void *into, IOSize n, IOOffset pos)
Definition: Storage.cc:17
RunNumber_t run() const
std::unique_ptr< FEDRawDataCollection > buffers
unsigned long long uint64_t
Definition: Time.h:15
LuminosityBlockNumber_t luminosityBlock() const
std::unique_ptr< Storage > storage
uint32_t PixelSLinkDataInputSource::synchronizeEvents ( )
private

Definition at line 357 of file PixelSLinkDataInputSource.cc.

References m_currenteventnumber, and mps_fire::result.

Referenced by setRunAndEventInfo().

357  {
358  int32_t result = m_currenteventnumber - 1;
359 
360  return (uint32_t)result;
361 }

Member Data Documentation

std::unique_ptr<FEDRawDataCollection> PixelSLinkDataInputSource::buffers
private

Definition at line 60 of file PixelSLinkDataInputSource.h.

Referenced by produce(), and setRunAndEventInfo().

uint32_t PixelSLinkDataInputSource::m_currenteventnumber
private
uint32_t PixelSLinkDataInputSource::m_currenttriggernumber
private

Definition at line 56 of file PixelSLinkDataInputSource.h.

Referenced by setRunAndEventInfo().

uint64_t PixelSLinkDataInputSource::m_data
private

Definition at line 54 of file PixelSLinkDataInputSource.h.

Referenced by PixelSLinkDataInputSource(), and setRunAndEventInfo().

int32_t PixelSLinkDataInputSource::m_eventnumber_shift
private

Definition at line 58 of file PixelSLinkDataInputSource.h.

Referenced by setRunAndEventInfo().

int PixelSLinkDataInputSource::m_fedid
private

Definition at line 50 of file PixelSLinkDataInputSource.h.

Referenced by setRunAndEventInfo().

uint32_t PixelSLinkDataInputSource::m_fileindex
private

Definition at line 51 of file PixelSLinkDataInputSource.h.

Referenced by PixelSLinkDataInputSource().

uint32_t PixelSLinkDataInputSource::m_globaleventnumber
private

Definition at line 57 of file PixelSLinkDataInputSource.h.

int PixelSLinkDataInputSource::m_runnumber
private

Definition at line 53 of file PixelSLinkDataInputSource.h.

Referenced by PixelSLinkDataInputSource(), and setRunAndEventInfo().

std::unique_ptr<Storage> PixelSLinkDataInputSource::storage
private

Definition at line 52 of file PixelSLinkDataInputSource.h.

Referenced by PixelSLinkDataInputSource(), and setRunAndEventInfo().