CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
RawDataCollectorByLabel.cc
Go to the documentation of this file.
1 
10 
16 
18 
19 #include <iostream>
20 
21 using namespace edm;
22 
24 
25  inputTags_ = pset.getParameter<std::vector<InputTag> >("RawCollectionList");
26  verbose_ = pset.getUntrackedParameter<int>("verbose",0);
27 
28  produces<FEDRawDataCollection>();
29 }
30 
32 
33 }
34 
35 
37 
39  std::vector< Handle<FEDRawDataCollection> > rawData;
40  for(tag_iterator_t inputTag = inputTags_.begin(); inputTag != inputTags_.end(); ++inputTag ) {
42  if (e.getByLabel(*inputTag,input)){
43  rawData.push_back(input);
44  }
45  //else{ //skipping the inputtag requested. but this is a normal operation to bare data & MC. silent warning }
46  }
47 
48  std::auto_ptr<FEDRawDataCollection> producedData(new FEDRawDataCollection);
49 
50  for (unsigned int i=0; i< rawData.size(); ++i ) {
51 
52  const FEDRawDataCollection *rdc=rawData[i].product();
53 
54  if ( verbose_ > 0 ) {
55  std::cout << "\nRAW collection #" << i+1 << std::endl;
56  std::cout << "branch name = " << rawData[i].provenance()->branchName() << std::endl;
57  std::cout << "process index = " << rawData[i].provenance()->productID().processIndex() << std::endl;
58  }
59 
60  for ( int j=0; j< FEDNumbering::MAXFEDID; ++j ) {
61  const FEDRawData & fedData = rdc->FEDData(j);
62  size_t size=fedData.size();
63 
64  if ( size > 0 ) {
65  // this fed has data -- lets copy it
66  if(verbose_ > 1) std::cout << "Copying data from FED #" << j << std::endl;
67  FEDRawData & fedDataProd = producedData->FEDData(j);
68  if ( fedDataProd.size() != 0 ) {
69  if(verbose_ > 1) {
70  std::cout << " More than one FEDRawDataCollection with data in FED ";
71  std::cout << j << " Skipping the 2nd\n";
72  }
73  continue;
74  }
75  fedDataProd.resize(size);
76  unsigned char *dataProd=fedDataProd.data();
77  const unsigned char *data=fedData.data();
78  for ( unsigned int k=0; k<size; ++k ) {
79  dataProd[k]=data[k];
80  }
81  }
82  }
83  }
84 
85  // Insert the new product in the event
86  e.put(producedData);
87 
88 }
89 
90 
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
int i
Definition: DBlmapReader.cc:9
std::vector< edm::InputTag >::const_iterator tag_iterator_t
size_t size() const
Lenght of the data buffer in bytes.
Definition: FEDRawData.h:47
void produce(edm::Event &e, const edm::EventSetup &c)
const FEDRawData & FEDData(int fedid) const
retrieve data for fed
void resize(size_t newsize)
Definition: FEDRawData.cc:33
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Event.h:84
int j
Definition: DBlmapReader.cc:9
virtual ~RawDataCollectorByLabel()
Destructor.
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:355
tuple input
Definition: collect_tpl.py:10
int k[5][pyjets_maxn]
const unsigned char * data() const
Return a const pointer to the beginning of the data buffer.
Definition: FEDRawData.cc:29
RawDataCollectorByLabel(const edm::ParameterSet &pset)
Constructor.
tuple cout
Definition: gather_cfg.py:41
tuple size
Write out results.