CMS 3D CMS Logo

SecSourceAnalyzer.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: SecSourceAnalyzer
4 // Class: SecSourceAnalyzer
5 //
13 //
14 // Original Author: Emilia Lubenova Becheva
15 // Created: Wed Apr 22 16:54:31 CEST 2009
16 //
17 //
18 
19 // system include files
20 #include <memory>
21 #include <functional>
22 
23 // user include files
25 
29 
33 
39 
41 
43 
44 #include "SecSourceAnalyzer.h"
45 
46 #include "TH1F.h"
47 
48 //
49 // constructors and destructor
50 //
51 namespace edm {
53  : minBunch_(0), maxBunch_(0), tag_(InputTag()) {
54  // int minb = minBunch_;
55  // int maxb = maxBunch_;
56  int averageNumber = 1;
58  std::unique_ptr<TH1F> histoName(new TH1F("h", "", 10, 0, 10));
59  bool playback = false;
60 
61  auto conf = std::make_shared<PileUpConfig>("input", averageNumber, histoName, playback);
62  input_ = std::make_unique<edm::PileUp>(
63  iConfig.getParameter<edm::ParameterSet>("input"), conf, consumesCollector(), false);
64 
65  dataStep2_ = iConfig.getParameter<bool>("dataStep2");
66 
67  if (dataStep2_)
68  // The data file contain the PCrossingFrame<SimTrack>
69  label_ = iConfig.getParameter<edm::InputTag>("collPCF");
70  else
71  // The data file contain the SimTrack
72  label_ = iConfig.getParameter<edm::InputTag>("collSimTrack");
73  }
74 
76 
77  //
78  // member functions
79  //
80 
81  // ------------ method called for each event ------------
83  using namespace std::placeholders;
84  vectorEventIDs_.resize(maxBunch_ - minBunch_ + 1);
85 
86  int nevt = 0;
87  for (int ibx = minBunch_; ibx <= maxBunch_; ++ibx) {
88  if (ibx == 0) {
89  input_->readPileUp(iEvent.id(),
91  std::bind(&SecSourceAnalyzer::getBranches, this, _1, iEvent.moduleCallingContext()),
92  ibx,
93  iEvent.streamID());
94  } else {
95  input_->readPileUp(iEvent.id(),
97  std::bind(&SecSourceAnalyzer::dummyFunction, this, _1),
98  ibx,
99  iEvent.streamID());
100  }
101 
102  nevt += vectorEventIDs_[ibx - minBunch_].size();
103  }
104 
105  std::cout << "-> The std::vector<EventPrincipalVector> of the secondary source 'input' has been filled with "
106  << nevt << " element corresponding to " << maxBunch_ - minBunch_ + 1 << " bunch." << std::endl;
107  }
108 
110  InternalContext internalContext(ep.id(), mcc);
111  ParentContext parentContext(&internalContext);
112  ModuleCallingContext moduleCallingContext(&moduleDescription());
113  ModuleContextSentry moduleContextSentry(&moduleCallingContext, parentContext);
114 
115  std::cout << "-> Get the event: id " << ep.id() << std::endl;
116  std::cout << "-> dataStep2_ = " << dataStep2_ << std::endl;
117  tag_ = InputTag(label_);
118 
119  std::cout << "-> Will try to get the branch with the tag : " << tag_ << std::endl;
120  std::cout << " and the EventPrincipal ep with a size = " << ep.size() << std::endl;
121 
122  if (!dataStep2_) {
123  // Get the SimTrack collection
124 
125  // default version changed to transmit vertexoffset
126  std::shared_ptr<Wrapper<std::vector<SimTrack> > const> shPtr =
127  getProductByTag<std::vector<SimTrack> >(ep, tag_, &moduleCallingContext);
128 
129  if (shPtr)
130  std::cout << "-> Could get SimTrack !" << std::endl;
131  else
132  std::cout << "-> Could not get SimTrack !" << std::endl;
133 
134  } else {
135  // Get the PCrossingFrame collection given as signal
136 
137  // default version changed to transmit vertexoffset
138  tag_ = InputTag("CFwriter", "g4SimHits");
139  std::shared_ptr<Wrapper<PCrossingFrame<SimTrack> > const> shPtr =
140  getProductByTag<PCrossingFrame<SimTrack> >(ep, tag_, &moduleCallingContext);
141 
142  if (shPtr)
143  std::cout << "-> Could get PCrossingFrame<SimTrack> !" << std::endl;
144  else
145  std::cout << "-> Could not get PCrossingFrame<SimTrack> !" << std::endl;
146  }
147 
148  return true;
149  }
150 
151  // ------------ method called once each job just before starting event loop ------------
153 
154  // ------------ method called once each job just after ending the event loop ------------
156  if (input_)
157  input_->endStream();
158  }
159 
160 } // namespace edm
void analyze(const edm::Event &, const edm::EventSetup &) override
T getParameter(std::string const &) const
Definition: ParameterSet.h:307
std::unique_ptr< PileUp > input_
bool getBranches(EventPrincipal const &ep, ModuleCallingContext const *)
bool dummyFunction(EventPrincipal const &ep)
int iEvent
Definition: GenABIO.cc:224
ConsumesCollector consumesCollector()
Use a ConsumesCollector to gather consumes information from helper functions.
SecSourceAnalyzer(const edm::ParameterSet &)
ModuleDescription const & moduleDescription() const
HLT enums.
std::vector< std::vector< edm::SecondaryEventIDAndFileInfo > > vectorEventIDs_