CMS 3D CMS Logo

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  for (int i = 0; i < 10; i++)
15  phibins.push_back(-TMath::Pi() + (2 * i + 1) * TMath::TwoPi() / 20.);
16  //define the eta bins
17  vector<float> etabins;
18  if (etaRegion == Central) {
19  for (int i = 0; i < 8; ++i)
20  etabins.push_back(-2.1 + 0.6 * i);
21  } else if (etaRegion == Forward) {
22  for (int i = 0; i < 10; ++i) {
23  if (i < 5)
24  etabins.push_back(-5.1 + 0.6 * i);
25  else
26  etabins.push_back(2.7 + 0.6 * (i - 5));
27  }
28  } else if (etaRegion == All) {
29  for (int i = 0; i < 18; ++i)
30  etabins.push_back(-5.1 + 0.6 * i);
31  }
32  return fixedGridRho(etabins, phibins);
33 }
34 
35 float FixedGridEnergyDensity::fixedGridRho(std::vector<float>& etabins, std::vector<float>& phibins) {
36  float etadist = etabins[1] - etabins[0];
37  float phidist = phibins[1] - phibins[0];
38  float etahalfdist = (etabins[1] - etabins[0]) / 2.;
39  float phihalfdist = (phibins[1] - phibins[0]) / 2.;
40  vector<float> sumPFNallSMDQ;
41  sumPFNallSMDQ.reserve(etabins.size() * phibins.size());
42  for (unsigned int ieta = 0; ieta < etabins.size(); ++ieta) {
43  for (unsigned int iphi = 0; iphi < phibins.size(); ++iphi) {
44  float pfniso_ieta_iphi = 0;
45  for (PFCandidateCollection::const_iterator pf_it = pfCandidates->begin(); pf_it != pfCandidates->end(); pf_it++) {
46  if (fabs(etabins[ieta] - pf_it->eta()) > etahalfdist)
47  continue;
48  if (fabs(reco::deltaPhi(phibins[iphi], pf_it->phi())) > phihalfdist)
49  continue;
50  pfniso_ieta_iphi += pf_it->pt();
51  }
52  sumPFNallSMDQ.push_back(pfniso_ieta_iphi);
53  }
54  }
55  float evt_smdq = 0;
56  sort(sumPFNallSMDQ.begin(), sumPFNallSMDQ.end());
57  if (sumPFNallSMDQ.size() % 2)
58  evt_smdq = sumPFNallSMDQ[(sumPFNallSMDQ.size() - 1) / 2];
59  else
60  evt_smdq = (sumPFNallSMDQ[sumPFNallSMDQ.size() / 2] + sumPFNallSMDQ[(sumPFNallSMDQ.size() - 2) / 2]) / 2.;
61  return evt_smdq / (etadist * phidist);
62 }
zmumugammaAnalyzer_cfi.pfCandidates
pfCandidates
Definition: zmumugammaAnalyzer_cfi.py:11
mps_fire.i
i
Definition: mps_fire.py:355
TwoPi
const double TwoPi
Definition: CosmicMuonParameters.h:19
PFCandidate.h
reco::deltaPhi
constexpr double deltaPhi(double phi1, double phi2)
Definition: deltaPhi.h:26
edm
HLT enums.
Definition: AlignableModifier.h:19
reco
fixed size matrix
Definition: AlignmentAlgorithmBase.h:45
FixedGridEnergyDensity.h
LEDCalibrationChannels.iphi
iphi
Definition: LEDCalibrationChannels.py:64
FixedGridEnergyDensity::EtaRegion
EtaRegion
Definition: FixedGridEnergyDensity.h:10
dyt_utils::etaRegion
etaRegion
Definition: DynamicTruncation.h:44
LEDCalibrationChannels.ieta
ieta
Definition: LEDCalibrationChannels.py:63
muon::All
Definition: MuonSelectors.h:20
std
Definition: JetResolutionObject.h:76
Pi
const double Pi
Definition: CosmicMuonParameters.h:18
FixedGridEnergyDensity::fixedGridRho
float fixedGridRho(EtaRegion etaRegion=Central)
Definition: FixedGridEnergyDensity.cc:11
defaults_cfi.etabins
etabins
Definition: defaults_cfi.py:7
deltaPhi.h