22 produces<nanoaod::FlatTable>();
28 auto npuTab = std::make_unique<nanoaod::FlatTable>(1,
"Pileup",
true);
32 const double refpvz = (*pvsIn)[0].position().z();
54 for (
unsigned int ibx = 0; ibx < npuProd.size(); ibx++) {
55 if (npuProd[ibx].getBunchCrossing() == 0) {
57 nt = npuProd[ibx].getTrueNumInteractions();
58 npu = npuProd[ibx].getPU_NumInteractions();
60 std::vector<float> zpositions;
61 unsigned int nzpositions = npuProd[ibx].getPU_zpositions().size();
62 for (
unsigned int j = 0;
j < nzpositions; ++
j) {
63 zpositions.push_back(npuProd[ibx].getPU_zpositions()[
j]);
64 if (
std::abs(zpositions.back() - refpvz) < 0.1)
70 gpudensity /= (20.0 * (*(zbin) - *(zbin - 1)));
73 if (!npuProd[ibx].getPU_pT_hats().empty()) {
74 pthatmax = *max_element(npuProd[ibx].getPU_pT_hats().begin(), npuProd[ibx].getPU_pT_hats().
end());
79 unsigned int eoot = 0;
80 for (
unsigned int ipu = 0; ipu < bx0; ipu++) {
81 eoot += npuProd[ipu].getPU_NumInteractions();
83 unsigned int loot = 0;
84 for (
unsigned int ipu = npuProd.size() - 1; ipu > bx0; ipu--) {
85 loot += npuProd[ipu].getPU_NumInteractions();
87 out.addColumnValue<
float>(
"nTrueInt",
89 "the true mean number of the poisson distribution for this event from which the number "
90 "of interactions each bunch crossing has been sampled");
91 out.addColumnValue<
int>(
94 "the number of pileup interactions that have been added to the event in the current bunch crossing");
95 out.addColumnValue<
int>(
"sumEOOT", eoot,
"number of early out of time pileup");
96 out.addColumnValue<
int>(
"sumLOOT", loot,
"number of late out of time pileup");
97 out.addColumnValue<
float>(
"pudensity", pudensity,
"PU vertices / mm");
98 out.addColumnValue<
float>(
"gpudensity", gpudensity,
"Generator-level PU vertices / mm");
100 out.addColumnValue<
float>(
"pthatmax", pthatmax,
"Maximum pt-hat");
107 ->setComment(
"tag for the PU information (vector<PileupSummaryInfo>)");
109 desc.add<std::vector<double>>(
"zbins", {})
110 ->setComment(
"Z bins to compute the generator-level number of PU vertices per mm");
111 desc.add<
bool>(
"savePtHatMax",
false)->setComment(
"Store maximum pt-hat of PU");
112 descriptions.
add(
"puTable",
desc);
119 const std::vector<double>
vz_;