CMS 3D CMS Logo

PileupSummaryInfoSlimmer.cc
Go to the documentation of this file.
5 
7 
8 #include <iostream>
9 
11 public:
13  : src_(consumes<std::vector<PileupSummaryInfo>>(conf.getParameter<edm::InputTag>("src"))),
14  keepDetailedInfoFor_(conf.getParameter<std::vector<int32_t>>("keepDetailedInfoFor")) {
15  produces<std::vector<PileupSummaryInfo>>();
16  }
17 
18  void produce(edm::StreamID, edm::Event&, edm::EventSetup const&) const final;
19 
20 private:
22  const std::vector<int> keepDetailedInfoFor_;
23 };
24 
27  auto output = std::make_unique<std::vector<PileupSummaryInfo>>();
28 
29  evt.getByToken(src_, input);
30 
31  for (const auto& psu : *input) {
32  const int bunchCrossing = psu.getBunchCrossing();
33  const int bunchSpacing = psu.getBunchSpacing();
34  const int num_PU_vertices = psu.getPU_NumInteractions();
35  const float TrueNumInteractions = psu.getTrueNumInteractions();
36 
37  std::vector<float> zpositions;
38  std::vector<float> times;
39  std::vector<float> sumpT_lowpT;
40  std::vector<float> sumpT_highpT;
41  std::vector<int> ntrks_lowpT;
42  std::vector<int> ntrks_highpT;
43  std::vector<edm::EventID> eventInfo;
44  std::vector<float> pT_hats;
45 
46  const bool keep_details = std::find(keepDetailedInfoFor_.begin(), keepDetailedInfoFor_.end(), bunchCrossing) !=
48 
49  if (keep_details) {
50  zpositions = psu.getPU_zpositions();
51  times = psu.getPU_times();
52  sumpT_lowpT = psu.getPU_sumpT_lowpT();
53  sumpT_highpT = psu.getPU_sumpT_highpT();
54  ntrks_lowpT = psu.getPU_ntrks_lowpT();
55  ntrks_highpT = psu.getPU_ntrks_highpT();
56  eventInfo = psu.getPU_EventID();
57  pT_hats = psu.getPU_pT_hats();
58  }
59  // insert the slimmed vertex info
60  output->emplace_back(num_PU_vertices,
61  zpositions,
62  times,
63  sumpT_lowpT,
64  sumpT_highpT,
65  ntrks_lowpT,
66  ntrks_highpT,
67  eventInfo,
68  pT_hats,
69  bunchCrossing,
70  TrueNumInteractions,
71  bunchSpacing);
72  }
73 
74  evt.put(std::move(output));
75 }
76 
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:133
void produce(edm::StreamID, edm::Event &, edm::EventSetup const &) const final
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:540
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:19
static std::string const input
Definition: EdmProvDump.cc:50
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
PileupSummaryInfoSlimmer(const edm::ParameterSet &conf)
const std::vector< int > keepDetailedInfoFor_
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
const edm::EDGetTokenT< std::vector< PileupSummaryInfo > > src_
HLT enums.
Definition: output.py:1
eventInfo
add run, event number and lumi section
def move(src, dest)
Definition: eostools.py:511