29 #include "CLHEP/Units/GlobalPhysicalConstants.h" 116 "recEoverTrueEBarrel",
" Reco photon Energy over Generated photon Energy: Barrel ", 100, loRes, hiRes);
118 "recEoverTrueEEndcap",
" Reco photon Energy over Generated photon Energy: Endcap ", 100, loRes, hiRes);
141 edm::LogInfo(
"PhotonAnalyzer") <<
"Analyzing event number: " << evt.
id() <<
"\n";
160 if (!pfCandidateHandle.
isValid()) {
167 if (!pfCandToPhotonMapHandle.
isValid()) {
168 edm::LogInfo(
"SimplePhotonAnalyzer") <<
"Error! Can't get the product: valueMapPhotons " << std::endl;
170 pfCandToPhotonMap = *(pfCandToPhotonMapHandle.
product());
172 std::cout <<
" SimplePhotonAnalyzer valueMap size" << pfCandToPhotonMap.
size() << std::endl;
173 unsigned nObj = pfCandidateHandle->size();
174 for (
unsigned int lCand = 0; lCand < nObj; lCand++) {
180 std::cout <<
" PF SC " << pfCandRef->superClusterRef()->energy() <<
" Photon SC " 181 << myPho->superCluster()->energy() << std::endl;
184 for (HepMC::GenEvent::particle_const_iterator
p = myGenEvent->particles_begin();
p != myGenEvent->particles_end();
186 if (!((*p)->pdg_id() == 22 && (*p)->status() == 1))
191 if ((*p)->production_vertex()) {
194 mother = *((*p)->production_vertex()->particles_begin(
HepMC::parents));
196 if (((mother ==
nullptr) || ((mother !=
nullptr) && (mother->pdg_id() == 25)) ||
197 ((mother !=
nullptr) && (mother->pdg_id() == 22)))) {
198 float minDelta = 10000.;
199 std::vector<reco::Photon> localPhotons;
203 float phiPho = (*p)->momentum().phi();
204 float etaPho = (*p)->momentum().eta();
205 etaPho =
etaTransformation(etaPho, (*p)->production_vertex()->position().z() / 10.);
209 for (reco::PhotonCollection::const_iterator iPho = photonCollection.begin(); iPho != photonCollection.end();
212 localPhotons.push_back(localPho);
215 float phiClu = localPho.
phi();
216 float etaClu = localPho.
eta();
227 if (delta < 0.1 && delta < minDelta) {
241 bool phoIsInBarrel =
false;
242 if (fabs(matchingPho.
superCluster()->position().eta()) < 1.479) {
243 phoIsInBarrel =
true;
248 float trueEta = (*p)->momentum().eta();
249 trueEta =
etaTransformation(trueEta, (*p)->production_vertex()->position().z() / 10.);
252 float photonE = matchingPho.
energy();
253 float photonEt = matchingPho.
et();
257 float r9 = matchingPho.
r9();
299 const float PI = 3.1415927;
303 const float R_ECAL = 136.5;
310 float ZEcal = R_ECAL * sinh(EtaParticle) + Zvertex;
313 Theta = atan(R_ECAL / ZEcal);
318 if (fabs(ETA) > etaBarrelEndcap) {
320 if (EtaParticle < 0.0)
322 float Zlen = Zend - Zvertex;
323 float RR = Zlen / sinh(EtaParticle);
324 Theta = atan(RR / Zend);
327 ETA = -
log(
tan(0.5 * Theta));
T getParameter(std::string const &) const
float hcalTowerSumEtConeDR04() const
Hcal isolation sum.
edm::InputTag barrelEcalHits_
bool isNonnull() const
Checks for non-null.
float etaTransformation(float a, float b)
double eta() const final
momentum pseudorapidity
MonitorElement * h1_scEta_
MonitorElement * h1_deltaPhi_
float trkSumPtSolidConeDR04() const
std::string vertexProducer_
edm::InputTag pfEgammaCandidates_
float ecalRecHitSumEtConeDR04() const
MonitorElement * h1_pho_R9Barrel_
std::string photonCollection_
MonitorElement * h1_pho_Eta_
MonitorElement * h1_pho_hcalIsoEndcap_
reco::SuperClusterRef superCluster() const override
Ref to SuperCluster.
edm::InputTag endcapEcalHits_
MonitorElement * h1_recEoverTrueEEndcap_
static const double deltaEta
MonitorElement * h1_recEoverTrueEBarrel_
edm::ESHandle< CaloTopology > theCaloTopo_
void analyze(const edm::Event &, const edm::EventSetup &) override
double et() const final
transverse energy
MonitorElement * h1_pho_trkIsoBarrel_
float sigmaIetaIeta() const
double energy() const final
energy
Tan< T >::type tan(const T &t)
static float etaBarrelEndcap
MonitorElement * h1_pho_E_
MonitorElement * h1_deltaEta_
MonitorElement * h1_pho_trkIsoEndcap_
float hadronicOverEm() const
the total hadronic over electromagnetic fraction
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
SimplePhotonAnalyzer(const edm::ParameterSet &)
MonitorElement * h1_pho_hcalIsoBarrel_
MonitorElement * h1_pho_Phi_
const HepMC::GenEvent * GetEvent() const
MonitorElement * h1_pho_sigmaIetaIetaBarrel_
T const * product() const
std::vector< Photon > PhotonCollection
collectin of Photon objects
MonitorElement * h1_pho_hOverEEndcap_
MonitorElement * h1_pho_R9Endcap_
MonitorElement * book1D(char_string const &name, char_string const &title, int const nchX, double const lowX, double const highX)
Book 1D histogram.
MonitorElement * h1_pho_ecalIsoBarrel_
MonitorElement * h1_pho_ecalIsoEndcap_
~SimplePhotonAnalyzer() override
MonitorElement * h1_pho_sigmaIetaIetaEndcap_
MonitorElement * h1_deltaEtaSC_
MonitorElement * h1_pho_Et_
double phi() const final
momentum azimuthal angle
Power< A, B >::type pow(const A &a, const B &b)
std::string photonCollectionProducer_
std::string valueMapPFCandPhoton_
MonitorElement * h1_pho_hOverEBarrel_