CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes
HcalTBSource Class Reference

#include <HcalTBSource.h>

Inheritance diagram for HcalTBSource:
edm::ProducerSourceFromFiles edm::ProducerSourceBase edm::FromFiles edm::InputSource edm::ProductRegistryHelper

Public Member Functions

 HcalTBSource (const edm::ParameterSet &pset, edm::InputSourceDescription const &desc)
 
virtual ~HcalTBSource ()
 
- Public Member Functions inherited from edm::ProducerSourceFromFiles
virtual bool noFiles () const override
 
 ProducerSourceFromFiles (ParameterSet const &pset, InputSourceDescription const &desc, bool realData)
 
virtual ~ProducerSourceFromFiles ()
 
- 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
 
virtual ~ProducerSourceBase ()
 
- Public Member Functions inherited from edm::InputSource
boost::shared_ptr
< ActivityRegistry
actReg () const
 Accessor for Activity Registry. More...
 
boost::shared_ptr
< BranchIDListHelper
branchIDListHelper () const
 Accessor for branchIDListHelper. More...
 
void closeFile (FileBlock *, bool cleaningUpAfterException)
 close current file More...
 
void doBeginJob ()
 Called by framework at beginning of job. More...
 
void doBeginLumi (LuminosityBlockPrincipal &lbp, ProcessContext const *)
 Called by framework at beginning of lumi block. More...
 
void doBeginRun (RunPrincipal &rp, ProcessContext const *)
 Called by framework at beginning of run. More...
 
void doEndJob ()
 Called by framework at end of job. More...
 
void doEndLumi (LuminosityBlockPrincipal &lbp, bool cleaningUpAfterException, ProcessContext const *)
 Called by framework at end of lumi block. More...
 
void doEndRun (RunPrincipal &rp, bool cleaningUpAfterException, ProcessContext const *)
 Called by framework at end of run. More...
 
void doPostForkReacquireResources (boost::shared_ptr< multicore::MessageReceiverForSource >)
 
void doPreForkReleaseResources ()
 Called by the framework before forking the process. 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)
 issue an event report More...
 
LuminosityBlockNumber_t luminosityBlock () const
 Accessor for current luminosity block number. More...
 
boost::shared_ptr
< LuminosityBlockAuxiliary
luminosityBlockAuxiliary () 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
 
bool primary () const
 Accessor for primary input source flag. More...
 
ProcessConfiguration const & processConfiguration () const
 Accessor for Process Configuration. More...
 
std::string const & processGUID () const
 Accessor for global process identifier. More...
 
ProcessHistoryRegistry const & processHistoryRegistry () const
 Const accessor for process history registry. More...
 
ProcessHistoryRegistryprocessHistoryRegistryForUpdate ()
 Non-const accessor for process history registry. More...
 
ProcessingMode processingMode () const
 RunsLumisAndEvents (default), RunsAndLumis, or Runs. More...
 
boost::shared_ptr
< ProductRegistry const > 
productRegistry () const
 Accessor for product registry. More...
 
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...
 
boost::shared_ptr
< LuminosityBlockAuxiliary
readLuminosityBlockAuxiliary ()
 Read next luminosity block Auxilary. More...
 
void readRun (RunPrincipal &runPrincipal, HistoryAppender &historyAppender)
 Read next run (new run) More...
 
boost::shared_ptr< RunAuxiliaryreadRunAuxiliary ()
 Read next run Auxiliary. More...
 
ProcessHistoryID const & reducedProcessHistoryID () const
 
void registerProducts ()
 Register any produced products. More...
 
int remainingEvents () const
 
int remainingLuminosityBlocks () const
 
void repeat ()
 Reset the remaining number of events/lumis to the maximum number. More...
 
ProcessingController::ReverseState reverseState () const
 
void rewind ()
 Begin again at the first event. More...
 
RunNumber_t run () const
 Accessor for current run number. More...
 
boost::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)
 
bool skipForForking ()
 
Timestamp const & timestamp () const
 Accessor for the current time, as seen by the input source. More...
 
virtual ~InputSource ()
 Destructor. More...
 

Private Member Functions

void openFile (const std::string &filename)
 
virtual void produce (edm::Event &e)
 
virtual bool setRunAndEventInfo (edm::EventID &id, edm::TimeValue_t &time)
 
void unpackSetup (const std::vector< std::string > &params)
 

Private Attributes

int m_chunkIds [CHUNK_COUNT]
 
CDFChunkm_chunks [CHUNK_COUNT]
 
CDFEventInfom_eventInfo
 
int m_eventNumberOffset
 
TFile * m_file
 
int m_fileCounter
 
int m_i
 
bool m_onlyRemapped
 
bool m_quiet
 
std::map< std::string, int > m_sourceIdRemap
 
TTree * m_tree
 
int n_chunks
 

Static Private Attributes

static const int CHUNK_COUNT =64
 

Additional Inherited Members

- Public Types inherited from edm::InputSource
enum  ItemType {
  IsInvalid, IsStop, IsFile, IsRun,
  IsLumi, IsEvent, IsRepeat, IsSynchronize
}
 
enum  ProcessingMode { Runs, RunsAndLumis, RunsLumisAndEvents }
 
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 &)
 
- Protected Member Functions inherited from edm::InputSource
void decreaseRemainingEventsBy (int iSkipped)
 
bool eventCached () const
 
boost::shared_ptr
< LuminosityBlockPrincipal >
const 
luminosityBlockPrincipal () const
 
bool newLumi () const
 
bool newRun () const
 
ProcessHistoryRegistryprocessHistoryRegistryUpdate () const
 
ProductRegistryproductRegistryUpdate () const
 
void reset () const
 
void resetEventCached ()
 
void resetLuminosityBlockAuxiliary (bool isNewLumi=true) const
 
void resetNewLumi ()
 
void resetNewRun ()
 
void resetRunAuxiliary (bool isNewRun=true) const
 
boost::shared_ptr
< RunPrincipal > const 
runPrincipal () 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

Note
Notice that there is a hack to renumber events from runs where the first event number was zero.
Date:
2008/10/16 08:09:12
Revision:
1.7
Author
J. Mans - Minnesota

Definition at line 27 of file HcalTBSource.h.

Constructor & Destructor Documentation

HcalTBSource::HcalTBSource ( const edm::ParameterSet pset,
edm::InputSourceDescription const &  desc 
)
explicit

Definition at line 17 of file HcalTBSource.cc.

17  :
18  edm::ProducerSourceFromFiles(pset,desc, true),
19  m_quiet( pset.getUntrackedParameter<bool>("quiet",true)),
20  m_onlyRemapped( pset.getUntrackedParameter<bool>("onlyRemapped",false))
21 {
22  m_tree=0;
23  m_fileCounter=-1;
24  m_file=0;
25  m_i=0;
26 
27  unpackSetup(pset.getUntrackedParameter<std::vector<std::string> >("streams",std::vector<std::string>()));
28  produces<FEDRawDataCollection>();
29 }
T getUntrackedParameter(std::string const &, T const &) const
TFile * m_file
Definition: HcalTBSource.h:37
TTree * m_tree
Definition: HcalTBSource.h:36
bool m_onlyRemapped
Definition: HcalTBSource.h:39
void unpackSetup(const std::vector< std::string > &params)
Definition: HcalTBSource.cc:31
HcalTBSource::~HcalTBSource ( )
virtual

Definition at line 47 of file HcalTBSource.cc.

References m_file, and m_tree.

47  {
48  if (m_file!=0) {
49  m_file->Close();
50  m_file=0;
51  m_tree=0;
52  }
53 }
TFile * m_file
Definition: HcalTBSource.h:37
TTree * m_tree
Definition: HcalTBSource.h:36

Member Function Documentation

void HcalTBSource::openFile ( const std::string &  filename)
private

Definition at line 55 of file HcalTBSource.cc.

References b, i, m_chunkIds, m_chunks, m_eventInfo, m_file, m_i, m_onlyRemapped, m_quiet, m_sourceIdRemap, m_tree, and n_chunks.

Referenced by setRunAndEventInfo().

55  {
56  if (m_file!=0) {
57  m_file->Close();
58  m_file=0;
59  m_tree=0;
60  }
61 
62  // try {
63  m_file=TFile::Open(filename.c_str());
64  if (m_file==0) {
65  edm::LogError("HCAL") << "Unable to open " << filename << endl;
66  m_tree=0;
67  return;
68  }
69 
70  m_tree=(TTree*)m_file->Get("CMSRAW");
71 
72  if (m_tree==0) {
73  m_file->Close();
74  m_file=0;
75  edm::LogError("HCAL") << "Unable to find CMSRAW tree" << endl;
76  return;
77  }
78 
79  if (!m_quiet) {
80  edm::LogInfo("HCAL") << "Opening '" << filename << "' with " << m_tree->GetEntries() << " events.\n";
81  }
82 
83  TObjArray* lb=m_tree->GetListOfBranches();
84  n_chunks=0;
85  for (int i=0; i<lb->GetSize(); i++) {
86  TBranch* b=(TBranch*)lb->At(i);
87  if (b==0) continue;
88  if (!strcmp(b->GetClassName(),"CDFEventInfo")) {
89  m_eventInfo=0;
90  b->SetAddress(&m_eventInfo);
91  } else {
92  if (strcmp(b->GetClassName(),"CDFChunk")) continue;
93  if (m_sourceIdRemap.find(b->GetName())==m_sourceIdRemap.end()) {
94  if (m_onlyRemapped) continue;
95  m_sourceIdRemap.insert(std::pair<std::string,int>(b->GetName(),-1));
96  if (!m_quiet)
97  edm::LogInfo("HCAL") << "Also reading branch " << b->GetName();
98  }
99 
100  m_chunks[n_chunks]=0; // allow ROOT to allocate
101  b->SetAddress(&(m_chunks[n_chunks]));
102  m_chunkIds[n_chunks]=m_sourceIdRemap[b->GetName()];
103  n_chunks++;
104  }
105  }
106  m_i=0;
107 }
int i
Definition: DBlmapReader.cc:9
TFile * m_file
Definition: HcalTBSource.h:37
TTree * m_tree
Definition: HcalTBSource.h:36
bool m_onlyRemapped
Definition: HcalTBSource.h:39
CDFChunk * m_chunks[CHUNK_COUNT]
Definition: HcalTBSource.h:42
int m_chunkIds[CHUNK_COUNT]
Definition: HcalTBSource.h:43
double b
Definition: hdecay.h:120
tuple filename
Definition: lut2db_cfg.py:20
CDFEventInfo * m_eventInfo
Definition: HcalTBSource.h:45
std::map< std::string, int > m_sourceIdRemap
Definition: HcalTBSource.h:44
void HcalTBSource::produce ( edm::Event e)
privatevirtual

Implements edm::ProducerSourceBase.

Definition at line 147 of file HcalTBSource.cc.

References FEDRawData::data(), data, AlCaHLTBitMon_QueryRunRegistry::getData(), CDFChunk::getDataLength(), CDFChunk::getSourceId(), i, m_chunkIds, m_chunks, m_quiet, n_chunks, edm::Event::put(), and FEDRawData::resize().

147  {
148 
149  std::auto_ptr<FEDRawDataCollection> bare_product(new FEDRawDataCollection());
150  for (int i=0; i<n_chunks; i++) {
151  const unsigned char* data=(const unsigned char*)m_chunks[i]->getData();
152  int len=m_chunks[i]->getDataLength()*8;
153 
154  int natId=m_chunks[i]->getSourceId();
155  int id=(m_chunkIds[i]>0)?(m_chunkIds[i]):(natId);
156 
157  FEDRawData& fed=bare_product->FEDData(id);
158  fed.resize(len);
159  memcpy(fed.data(),data,len);
160 
161  // patch the SourceId...
162  if (natId!=id) {
163  unsigned int* header=(unsigned int*)fed.data();
164  header[0]=(header[0]&0xFFF000FFu)|(id<<8);
165  // TODO: patch CRC after this change!
166  }
167  if (!m_quiet)
168  edm::LogInfo("HCAL") << "Reading " << len << " bytes for FED " << id << std::endl;
169  }
170 
171  e.put(bare_product);
172 }
int i
Definition: DBlmapReader.cc:9
int getSourceId() const
Definition: CDFChunk.h:15
void resize(size_t newsize)
Definition: FEDRawData.cc:32
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Event.h:116
CDFChunk * m_chunks[CHUNK_COUNT]
Definition: HcalTBSource.h:42
int m_chunkIds[CHUNK_COUNT]
Definition: HcalTBSource.h:43
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:82
const unsigned char * data() const
Return a const pointer to the beginning of the data buffer.
Definition: FEDRawData.cc:28
Int_t getDataLength() const
Definition: CDFChunk.h:14
bool HcalTBSource::setRunAndEventInfo ( edm::EventID id,
edm::TimeValue_t time 
)
privatevirtual

Implements edm::ProducerSourceBase.

Definition at line 109 of file HcalTBSource.cc.

References edm::FromFiles::fileNames(), CDFEventInfo::getEventNumber(), CDFEventInfo::getRunNumber(), edm::ProducerSourceBase::luminosityBlock(), m_eventInfo, m_eventNumberOffset, m_file, m_fileCounter, m_i, m_tree, openFile(), edm::ProducerSourceBase::presentTime(), findQualityFiles::size, and edm::ProducerSourceBase::timeBetweenEvents().

109  {
110  bool is_new=false;
111 
112  while (m_tree==0 || m_i==m_tree->GetEntries()) {
113  m_fileCounter++;
114  if (m_file!=0) {
115  m_file->Close();
116  m_file=0;
117  m_tree=0;
118  }
119  if (m_fileCounter>=int(fileNames().size())) return false; // nothing good
121  is_new=true;
122  }
123 
124  if (m_tree==0 || m_i==m_tree->GetEntries()) return false; //nothing good
125 
126  m_tree->GetEntry(m_i);
127  m_i++;
128 
129  if (m_eventInfo!=0) {
130  if (is_new) {
132  else m_eventNumberOffset=0;
133  }
134  // ZERO is unacceptable for a run number from a technical point of view
136  } else {
137  id = EventID(m_fileCounter+10, id.luminosityBlock(), m_i+1);
138  }
139  // time is a hack
140  edm::TimeValue_t present_time = presentTime();
141  unsigned long time_between_events = timeBetweenEvents();
142 
143  time = present_time + time_between_events;
144  return true;
145 }
TFile * m_file
Definition: HcalTBSource.h:37
int m_eventNumberOffset
Definition: HcalTBSource.h:46
std::vector< std::string > const & fileNames() const
Definition: FromFiles.h:22
TTree * m_tree
Definition: HcalTBSource.h:36
void openFile(const std::string &filename)
Definition: HcalTBSource.cc:55
unsigned int timeBetweenEvents() const
unsigned long long TimeValue_t
Definition: Timestamp.h:28
UInt_t getRunNumber() const
get the run number
Definition: CDFEventInfo.h:12
TimeValue_t presentTime() const
LuminosityBlockNumber_t luminosityBlock() const
CDFEventInfo * m_eventInfo
Definition: HcalTBSource.h:45
ULong64_t getEventNumber() const
get the event number
Definition: CDFEventInfo.h:16
tuple size
Write out results.
void HcalTBSource::unpackSetup ( const std::vector< std::string > &  params)
private

Definition at line 31 of file HcalTBSource.cc.

References i, m_sourceIdRemap, and AlCaHLTBitMon_QueryRunRegistry::string.

31  {
32  for (std::vector<std::string>::const_iterator i=params.begin(); i!=params.end(); i++) {
33  unsigned long pos=i->find(':');
34  std::string streamName=i->substr(0,pos);
35  int remapTo=-1;
36  if (pos!=std::string::npos)
37  remapTo=atoi(i->c_str()+pos+1);
38 
39  m_sourceIdRemap.insert(std::pair<std::string,int>(streamName,remapTo));
40  if (remapTo!=-1)
41  edm::LogInfo("HCAL") << streamName << " --> " << remapTo << endl;
42  else
43  edm::LogInfo("HCAL") << streamName << " using fedid in file" << endl;
44  }
45 }
int i
Definition: DBlmapReader.cc:9
std::map< std::string, int > m_sourceIdRemap
Definition: HcalTBSource.h:44

Member Data Documentation

const int HcalTBSource::CHUNK_COUNT =64
staticprivate

Definition at line 41 of file HcalTBSource.h.

int HcalTBSource::m_chunkIds[CHUNK_COUNT]
private

Definition at line 43 of file HcalTBSource.h.

Referenced by openFile(), and produce().

CDFChunk* HcalTBSource::m_chunks[CHUNK_COUNT]
private

Definition at line 42 of file HcalTBSource.h.

Referenced by openFile(), and produce().

CDFEventInfo* HcalTBSource::m_eventInfo
private

Definition at line 45 of file HcalTBSource.h.

Referenced by openFile(), and setRunAndEventInfo().

int HcalTBSource::m_eventNumberOffset
private

Definition at line 46 of file HcalTBSource.h.

Referenced by setRunAndEventInfo().

TFile* HcalTBSource::m_file
private

Definition at line 37 of file HcalTBSource.h.

Referenced by openFile(), setRunAndEventInfo(), and ~HcalTBSource().

int HcalTBSource::m_fileCounter
private

Definition at line 38 of file HcalTBSource.h.

Referenced by setRunAndEventInfo().

int HcalTBSource::m_i
private

Definition at line 38 of file HcalTBSource.h.

Referenced by openFile(), and setRunAndEventInfo().

bool HcalTBSource::m_onlyRemapped
private

Definition at line 39 of file HcalTBSource.h.

Referenced by openFile().

bool HcalTBSource::m_quiet
private

Definition at line 39 of file HcalTBSource.h.

Referenced by openFile(), and produce().

std::map<std::string,int> HcalTBSource::m_sourceIdRemap
private

Definition at line 44 of file HcalTBSource.h.

Referenced by openFile(), and unpackSetup().

TTree* HcalTBSource::m_tree
private

Definition at line 36 of file HcalTBSource.h.

Referenced by openFile(), setRunAndEventInfo(), and ~HcalTBSource().

int HcalTBSource::n_chunks
private

Definition at line 40 of file HcalTBSource.h.

Referenced by openFile(), and produce().