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