CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
FixedGridEnergyDensity.cc
Go to the documentation of this file.
2 
5 #include "TMath.h"
6 
7 using namespace reco;
8 using namespace edm;
9 using namespace std;
10 
12  //define the phi bins
13  vector<float> phibins;
14  phibins.reserve(10);
15  for (int i = 0; i < 10; i++)
16  phibins.push_back(-TMath::Pi() + (2 * i + 1) * TMath::TwoPi() / 20.);
17  //define the eta bins
18  vector<float> etabins;
19  if (etaRegion == Central) {
20  for (int i = 0; i < 8; ++i)
21  etabins.push_back(-2.1 + 0.6 * i);
22  } else if (etaRegion == Forward) {
23  for (int i = 0; i < 10; ++i) {
24  if (i < 5)
25  etabins.push_back(-5.1 + 0.6 * i);
26  else
27  etabins.push_back(2.7 + 0.6 * (i - 5));
28  }
29  } else if (etaRegion == All) {
30  for (int i = 0; i < 18; ++i)
31  etabins.push_back(-5.1 + 0.6 * i);
32  }
33  return fixedGridRho(etabins, phibins);
34 }
35 
36 float FixedGridEnergyDensity::fixedGridRho(std::vector<float>& etabins, std::vector<float>& phibins) {
37  float etadist = etabins[1] - etabins[0];
38  float phidist = phibins[1] - phibins[0];
39  float etahalfdist = (etabins[1] - etabins[0]) / 2.;
40  float phihalfdist = (phibins[1] - phibins[0]) / 2.;
41  vector<float> sumPFNallSMDQ;
42  sumPFNallSMDQ.reserve(etabins.size() * phibins.size());
43  for (unsigned int ieta = 0; ieta < etabins.size(); ++ieta) {
44  for (unsigned int iphi = 0; iphi < phibins.size(); ++iphi) {
45  float pfniso_ieta_iphi = 0;
46  for (PFCandidateCollection::const_iterator pf_it = pfCandidates->begin(); pf_it != pfCandidates->end(); pf_it++) {
47  if (fabs(etabins[ieta] - pf_it->eta()) > etahalfdist)
48  continue;
49  if (fabs(reco::deltaPhi(phibins[iphi], pf_it->phi())) > phihalfdist)
50  continue;
51  pfniso_ieta_iphi += pf_it->pt();
52  }
53  sumPFNallSMDQ.push_back(pfniso_ieta_iphi);
54  }
55  }
56  float evt_smdq = 0;
57  sort(sumPFNallSMDQ.begin(), sumPFNallSMDQ.end());
58  if (sumPFNallSMDQ.size() % 2)
59  evt_smdq = sumPFNallSMDQ[(sumPFNallSMDQ.size() - 1) / 2];
60  else
61  evt_smdq = (sumPFNallSMDQ[sumPFNallSMDQ.size() / 2] + sumPFNallSMDQ[(sumPFNallSMDQ.size() - 2) / 2]) / 2.;
62  return evt_smdq / (etadist * phidist);
63 }
constexpr double deltaPhi(double phi1, double phi2)
Definition: deltaPhi.h:26
const double TwoPi
const double Pi
float fixedGridRho(EtaRegion etaRegion=Central)