CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Types | Public Member Functions | Private Member Functions | Private Attributes
SimplePhotonAnalyzer Class Reference
Inheritance diagram for SimplePhotonAnalyzer:
edm::one::EDAnalyzer<> edm::one::EDAnalyzerBase edm::EDConsumerBase

Public Types

typedef dqm::legacy::DQMStore DQMStore
 
typedef dqm::legacy::MonitorElement MonitorElement
 
- Public Types inherited from edm::one::EDAnalyzerBase
typedef EDAnalyzerBase ModuleType
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 

Public Member Functions

void analyze (const edm::Event &, const edm::EventSetup &) override
 
void beginJob () override
 
void endJob () override
 
 SimplePhotonAnalyzer (const edm::ParameterSet &)
 
 ~SimplePhotonAnalyzer () override
 
- Public Member Functions inherited from edm::one::EDAnalyzer<>
 EDAnalyzer ()=default
 
 EDAnalyzer (const EDAnalyzer &)=delete
 
SerialTaskQueueglobalLuminosityBlocksQueue () final
 
SerialTaskQueueglobalRunsQueue () final
 
const EDAnalyzeroperator= (const EDAnalyzer &)=delete
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
bool wantsInputProcessBlocks () const final
 
bool wantsProcessBlocks () const final
 
- Public Member Functions inherited from edm::one::EDAnalyzerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzerBase ()
 
ModuleDescription const & moduleDescription () const
 
bool wantsStreamLuminosityBlocks () const
 
bool wantsStreamRuns () const
 
 ~EDAnalyzerBase () override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
std::vector< ESProxyIndex > const & esGetTokenIndicesVector (edm::Transition iTrans) const
 
std::vector< ESRecordIndex >
const & 
esGetTokenRecordIndicesVector (edm::Transition iTrans) const
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector
< ProductResolverIndexAndSkipBit >
const & 
itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::array< std::vector< ModuleDescription const * > *, NumBranchTypes > &modulesAll, std::vector< ModuleProcessName > &modulesInPreviousProcesses, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void selectInputProcessBlocks (ProductRegistry const &productRegistry, ProcessBlockHelperBase const &processBlockHelperBase)
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Private Member Functions

float etaTransformation (float a, float b)
 

Private Attributes

edm::InputTag barrelEcalHits_
 
DQMStoredbe_
 
edm::InputTag endcapEcalHits_
 
MonitorElementh1_deltaEta_
 
MonitorElementh1_deltaEtaSC_
 
MonitorElementh1_deltaPhi_
 
MonitorElementh1_pho_E_
 
MonitorElementh1_pho_ecalIsoBarrel_
 
MonitorElementh1_pho_ecalIsoEndcap_
 
MonitorElementh1_pho_Et_
 
MonitorElementh1_pho_Eta_
 
MonitorElementh1_pho_hcalIsoBarrel_
 
MonitorElementh1_pho_hcalIsoEndcap_
 
MonitorElementh1_pho_hOverEBarrel_
 
MonitorElementh1_pho_hOverEEndcap_
 
MonitorElementh1_pho_Phi_
 
MonitorElementh1_pho_R9Barrel_
 
MonitorElementh1_pho_R9Endcap_
 
MonitorElementh1_pho_sigmaIetaIetaBarrel_
 
MonitorElementh1_pho_sigmaIetaIetaEndcap_
 
MonitorElementh1_pho_trkIsoBarrel_
 
MonitorElementh1_pho_trkIsoEndcap_
 
MonitorElementh1_recEoverTrueEBarrel_
 
MonitorElementh1_recEoverTrueEEndcap_
 
MonitorElementh1_scEta_
 
std::string mcCollection_
 
std::string mcProducer_
 
edm::InputTag pfEgammaCandidates_
 
std::string photonCollection_
 
std::string photonCollectionProducer_
 
float sample_
 
edm::ESHandle< CaloTopologytheCaloTopo_
 
std::string valueMapPFCandPhoton_
 
std::string vertexProducer_
 

Additional Inherited Members

- Static Public Member Functions inherited from edm::one::EDAnalyzerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
template<BranchType B = InEvent>
EDConsumerBaseAdaptor< B > consumes (edm::InputTag tag) noexcept
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<Transition Tr = Transition::Event>
constexpr auto esConsumes () noexcept
 
template<Transition Tr = Transition::Event>
auto esConsumes (ESInputTag tag) noexcept
 
template<Transition Tr = Transition::Event>
ESGetTokenGeneric esConsumes (eventsetup::EventSetupRecordKey const &iRecord, eventsetup::DataKey const &iKey)
 Used with EventSetupRecord::doGet. More...
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
void resetItemsToGetFrom (BranchType iType)
 

Detailed Description

Description: Get Photon collection from the event and make very basic histos

Author
Nancy Marinelli, U. of Notre Dame, US

Definition at line 40 of file SimplePhotonAnalyzer.cc.

Member Typedef Documentation

Definition at line 42 of file SimplePhotonAnalyzer.cc.

Definition at line 43 of file SimplePhotonAnalyzer.cc.

Constructor & Destructor Documentation

SimplePhotonAnalyzer::SimplePhotonAnalyzer ( const edm::ParameterSet ps)
explicit

Definition at line 100 of file SimplePhotonAnalyzer.cc.

References barrelEcalHits_, endcapEcalHits_, edm::ParameterSet::getParameter(), mcProducer_, pfEgammaCandidates_, photonCollection_, photonCollectionProducer_, sample_, AlCaHLTBitMon_QueryRunRegistry::string, valueMapPFCandPhoton_, and vertexProducer_.

102 {
104  photonCollection_ = ps.getParameter<std::string>("photonCollection");
105 
106  barrelEcalHits_ = ps.getParameter<edm::InputTag>("barrelEcalHits");
107  endcapEcalHits_ = ps.getParameter<edm::InputTag>("endcapEcalHits");
108 
109  pfEgammaCandidates_ = ps.getParameter<edm::InputTag>("pfEgammaCandidates");
110  valueMapPFCandPhoton_ = ps.getParameter<std::string>("valueMapPhotons");
111 
112  mcProducer_ = ps.getParameter<std::string>("mcProducer");
113  //mcCollection_ = ps.getParameter<std::string>("mcCollection");
114  vertexProducer_ = ps.getParameter<std::string>("primaryVertexProducer");
115  sample_ = ps.getParameter<int>("sample");
116 }
edm::InputTag pfEgammaCandidates_
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
std::string photonCollectionProducer_
SimplePhotonAnalyzer::~SimplePhotonAnalyzer ( )
override

Definition at line 119 of file SimplePhotonAnalyzer.cc.

121 {}

Member Function Documentation

void SimplePhotonAnalyzer::analyze ( const edm::Event evt,
const edm::EventSetup es 
)
overridevirtual

Match reconstructed photon candidates with the nearest generated photonPho;

Plot kinematic disctributions for matched photons

Implements edm::one::EDAnalyzerBase.

Definition at line 204 of file SimplePhotonAnalyzer.cc.

References gather_cfg::cout, CommonMethods::delta(), spr::deltaEta, srCondWrite_cfg::deltaPhi, reco::Photon::ecalRecHitSumEtConeDR04(), reco::LeafCandidate::energy(), reco::LeafCandidate::et(), PVValHelper::eta, reco::LeafCandidate::eta(), etaTransformation(), dqm::impl::MonitorElement::Fill(), reco::PFCandidate::gamma, GenParticle::GenParticle, edm::EventSetup::get(), edm::Event::getByLabel(), h1_deltaEta_, h1_deltaEtaSC_, h1_deltaPhi_, h1_pho_E_, h1_pho_ecalIsoBarrel_, h1_pho_ecalIsoEndcap_, h1_pho_Et_, h1_pho_Eta_, h1_pho_hcalIsoBarrel_, h1_pho_hcalIsoEndcap_, h1_pho_hOverEBarrel_, h1_pho_hOverEEndcap_, h1_pho_Phi_, h1_pho_R9Barrel_, h1_pho_R9Endcap_, h1_pho_sigmaIetaIetaBarrel_, h1_pho_sigmaIetaIetaEndcap_, h1_pho_trkIsoBarrel_, h1_pho_trkIsoEndcap_, h1_recEoverTrueEBarrel_, h1_recEoverTrueEEndcap_, h1_scEta_, reco::Photon::hadronicOverEm(), reco::Photon::hcalTowerSumEtConeDR04(), edm::EventBase::id(), edm::Ref< C, T, F >::isNonnull(), edm::InputTag::label(), mcProducer_, AlCaHLTBitMon_ParallelJobs::p, parents, pfEgammaCandidates_, reco::LeafCandidate::phi(), configurableAnalysis::Photon, photonCollection_, photonCollectionProducer_, pi, funct::pow(), reco::Photon::r9(), reco::Photon::sigmaIetaIeta(), mathSSE::sqrt(), reco::Photon::superCluster(), theCaloTopo_, reco::Photon::trkSumPtSolidConeDR04(), and valueMapPFCandPhoton_.

204  {
205  //========================================================================
206 
207  using namespace edm; // needed for all fwk related classes
208  edm::LogInfo("PhotonAnalyzer") << "Analyzing event number: " << evt.id() << "\n";
209 
210  // get the calo topology from the event setup:
211  edm::ESHandle<CaloTopology> pTopology;
213 
214  // Get the corrected photon collection (set in the configuration) which also contains infos about conversions
215 
216  Handle<reco::PhotonCollection> photonHandle;
218  const reco::PhotonCollection photonCollection = *(photonHandle.product());
219 
220  Handle<HepMCProduct> hepProd;
221  evt.getByLabel(mcProducer_, hepProd);
222  const HepMC::GenEvent* myGenEvent = hepProd->GetEvent();
223 
224  // Get the PF refined cluster collection
225  Handle<reco::PFCandidateCollection> pfCandidateHandle;
226  evt.getByLabel(pfEgammaCandidates_, pfCandidateHandle);
227  if (!pfCandidateHandle.isValid()) {
228  edm::LogError("SimplePhotonAnalyzer") << "Error! Can't get the product " << pfEgammaCandidates_.label();
229  }
230 
231  edm::Handle<edm::ValueMap<reco::PhotonRef> > pfCandToPhotonMapHandle;
232  edm::ValueMap<reco::PhotonRef> pfCandToPhotonMap;
233  evt.getByLabel("gedPhotons", valueMapPFCandPhoton_, pfCandToPhotonMapHandle);
234  if (!pfCandToPhotonMapHandle.isValid()) {
235  edm::LogInfo("SimplePhotonAnalyzer") << "Error! Can't get the product: valueMapPhotons " << std::endl;
236  }
237  pfCandToPhotonMap = *(pfCandToPhotonMapHandle.product());
238 
239  std::cout << " SimplePhotonAnalyzer valueMap size" << pfCandToPhotonMap.size() << std::endl;
240  unsigned nObj = pfCandidateHandle->size();
241  for (unsigned int lCand = 0; lCand < nObj; lCand++) {
242  reco::PFCandidateRef pfCandRef(reco::PFCandidateRef(pfCandidateHandle, lCand));
243  if (pfCandRef->particleId() != reco::PFCandidate::gamma)
244  continue;
245  reco::PhotonRef myPho = (pfCandToPhotonMap)[pfCandRef];
246  if (myPho.isNonnull())
247  std::cout << " PF SC " << pfCandRef->superClusterRef()->energy() << " Photon SC "
248  << myPho->superCluster()->energy() << std::endl;
249  }
250 
251  for (HepMC::GenEvent::particle_const_iterator p = myGenEvent->particles_begin(); p != myGenEvent->particles_end();
252  ++p) {
253  if (!((*p)->pdg_id() == 22 && (*p)->status() == 1))
254  continue;
255 
256  // single primary photons or photons from Higgs or RS Graviton
257  HepMC::GenParticle* mother = nullptr;
258  if ((*p)->production_vertex()) {
259  if ((*p)->production_vertex()->particles_begin(HepMC::parents) !=
260  (*p)->production_vertex()->particles_end(HepMC::parents))
261  mother = *((*p)->production_vertex()->particles_begin(HepMC::parents));
262  }
263  if (((mother == nullptr) || ((mother != nullptr) && (mother->pdg_id() == 25)) ||
264  ((mother != nullptr) && (mother->pdg_id() == 22)))) {
265  float minDelta = 10000.;
266  std::vector<reco::Photon> localPhotons;
267  int index = 0;
268  int iMatch = -1;
269 
270  float phiPho = (*p)->momentum().phi();
271  float etaPho = (*p)->momentum().eta();
272  etaPho = etaTransformation(etaPho, (*p)->production_vertex()->position().z() / 10.);
273 
274  bool matched = false;
275  // loop Photon candidates
276  for (reco::PhotonCollection::const_iterator iPho = photonCollection.begin(); iPho != photonCollection.end();
277  iPho++) {
278  reco::Photon localPho = reco::Photon(*iPho);
279  localPhotons.push_back(localPho);
280 
282  float phiClu = localPho.phi();
283  float etaClu = localPho.eta();
284  float deltaPhi = phiClu - phiPho;
285  float deltaEta = etaClu - etaPho;
286 
287  if (deltaPhi > pi)
288  deltaPhi -= twopi;
289  if (deltaPhi < -pi)
290  deltaPhi += twopi;
291  deltaPhi = std::pow(deltaPhi, 2);
292  deltaEta = std::pow(deltaEta, 2);
293  float delta = sqrt(deltaPhi + deltaEta);
294  if (delta < 0.1 && delta < minDelta) {
295  minDelta = delta;
296  iMatch = index;
297  }
298  index++;
299  } // End loop over photons
300 
301  if (iMatch > -1)
302  matched = true;
303 
305  if (matched) {
306  reco::Photon matchingPho = localPhotons[iMatch];
307 
308  bool phoIsInBarrel = false;
309  if (fabs(matchingPho.superCluster()->position().eta()) < 1.479) {
310  phoIsInBarrel = true;
311  }
312  edm::Handle<EcalRecHitCollection> ecalRecHitHandle;
313 
314  h1_scEta_->Fill(matchingPho.superCluster()->position().eta());
315  float trueEta = (*p)->momentum().eta();
316  trueEta = etaTransformation(trueEta, (*p)->production_vertex()->position().z() / 10.);
317  h1_deltaEtaSC_->Fill(localPhotons[iMatch].superCluster()->eta() - trueEta);
318 
319  float photonE = matchingPho.energy();
320  float photonEt = matchingPho.et();
321  float photonEta = matchingPho.eta();
322  float photonPhi = matchingPho.phi();
323 
324  float r9 = matchingPho.r9();
325  float sigmaIetaIeta = matchingPho.sigmaIetaIeta();
326  float hOverE = matchingPho.hadronicOverEm();
327  float ecalIso = matchingPho.ecalRecHitSumEtConeDR04();
328  float hcalIso = matchingPho.hcalTowerSumEtConeDR04();
329  float trkIso = matchingPho.trkSumPtSolidConeDR04();
330 
331  h1_pho_E_->Fill(photonE);
332  h1_pho_Et_->Fill(photonEt);
333  h1_pho_Eta_->Fill(photonEta);
334  h1_pho_Phi_->Fill(photonPhi);
335 
336  h1_deltaEta_->Fill(photonEta - (*p)->momentum().eta());
337  h1_deltaPhi_->Fill(photonPhi - (*p)->momentum().phi());
338 
339  if (phoIsInBarrel) {
340  h1_recEoverTrueEBarrel_->Fill(photonE / (*p)->momentum().e());
341  h1_pho_R9Barrel_->Fill(r9);
342  h1_pho_sigmaIetaIetaBarrel_->Fill(sigmaIetaIeta);
343  h1_pho_hOverEBarrel_->Fill(hOverE);
344  h1_pho_ecalIsoBarrel_->Fill(ecalIso);
345  h1_pho_hcalIsoBarrel_->Fill(hcalIso);
346  h1_pho_trkIsoBarrel_->Fill(trkIso);
347 
348  } else {
349  h1_recEoverTrueEEndcap_->Fill(photonE / (*p)->momentum().e());
350  h1_pho_R9Endcap_->Fill(r9);
351  h1_pho_sigmaIetaIetaEndcap_->Fill(sigmaIetaIeta);
352  h1_pho_hOverEEndcap_->Fill(hOverE);
353  h1_pho_ecalIsoEndcap_->Fill(ecalIso);
354  h1_pho_hcalIsoEndcap_->Fill(hcalIso);
355  h1_pho_trkIsoEndcap_->Fill(trkIso);
356  }
357 
358  } // reco photon matching MC truth
359 
360  } // End loop over MC particles
361  }
362 }
bool isNonnull() const
Checks for non-null.
Definition: Ref.h:238
TPRegexp parents
Definition: eve_filter.cc:21
float etaTransformation(float a, float b)
constexpr char Photon[]
Definition: modules.cc:14
MonitorElement * h1_scEta_
MonitorElement * h1_deltaPhi_
float hcalTowerSumEtConeDR04(int depth=0) const
Definition: Photon.h:472
float trkSumPtSolidConeDR04() const
Definition: Photon.h:492
edm::InputTag pfEgammaCandidates_
float ecalRecHitSumEtConeDR04() const
Definition: Photon.h:454
MonitorElement * h1_pho_R9Barrel_
MonitorElement * h1_pho_Eta_
MonitorElement * h1_pho_hcalIsoEndcap_
Log< level::Error, false > LogError
MonitorElement * h1_recEoverTrueEEndcap_
static const double deltaEta
Definition: CaloConstants.h:8
MonitorElement * h1_recEoverTrueEBarrel_
const Double_t pi
void Fill(long long x)
edm::ESHandle< CaloTopology > theCaloTopo_
reco::SuperClusterRef superCluster() const override
Ref to SuperCluster.
T sqrt(T t)
Definition: SSEVec.h:19
MonitorElement * h1_pho_trkIsoBarrel_
float sigmaIetaIeta() const
Definition: Photon.h:270
MonitorElement * h1_pho_E_
MonitorElement * h1_deltaEta_
MonitorElement * h1_pho_trkIsoEndcap_
float hadronicOverEm(int depth=0) const
Definition: Photon.h:233
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:500
MonitorElement * h1_pho_hcalIsoBarrel_
Log< level::Info, false > LogInfo
MonitorElement * h1_pho_Phi_
MonitorElement * h1_pho_sigmaIetaIetaBarrel_
std::vector< Photon > PhotonCollection
collectin of Photon objects
Definition: PhotonFwd.h:9
MonitorElement * h1_pho_hOverEEndcap_
std::string const & label() const
Definition: InputTag.h:36
MonitorElement * h1_pho_R9Endcap_
edm::EventID id() const
Definition: EventBase.h:59
double et() const final
transverse energy
T get() const
Definition: EventSetup.h:88
float r9() const
Definition: Photon.h:273
MonitorElement * h1_pho_ecalIsoBarrel_
tuple cout
Definition: gather_cfg.py:144
MonitorElement * h1_pho_ecalIsoEndcap_
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)
Definition: Power.h:29
std::string photonCollectionProducer_
MonitorElement * h1_pho_hOverEBarrel_
double energy() const final
energy
double eta() const final
momentum pseudorapidity
void SimplePhotonAnalyzer::beginJob ( void  )
overridevirtual

Reimplemented from edm::one::EDAnalyzerBase.

Definition at line 124 of file SimplePhotonAnalyzer.cc.

References dqm::implementation::IBooker::book1D(), dbe_, h1_deltaEta_, h1_deltaEtaSC_, h1_deltaPhi_, h1_pho_E_, h1_pho_ecalIsoBarrel_, h1_pho_ecalIsoEndcap_, h1_pho_Et_, h1_pho_Eta_, h1_pho_hcalIsoBarrel_, h1_pho_hcalIsoEndcap_, h1_pho_hOverEBarrel_, h1_pho_hOverEEndcap_, h1_pho_Phi_, h1_pho_R9Barrel_, h1_pho_R9Endcap_, h1_pho_sigmaIetaIetaBarrel_, h1_pho_sigmaIetaIetaEndcap_, h1_pho_trkIsoBarrel_, h1_pho_trkIsoEndcap_, h1_recEoverTrueEBarrel_, h1_recEoverTrueEEndcap_, h1_scEta_, Utilities::operator, and sample_.

124  {
125  //========================================================================
126 
127  dbe_ = nullptr;
129 
130  float hiE = 0;
131  float loE = 0;
132  float hiEt = 0;
133  float loEt = 0;
134  float dPhi = 0;
135  float loRes = 0;
136  float hiRes = 0;
137  if (sample_ == 1) {
138  loE = 0.;
139  hiE = 30.;
140  loEt = 0.;
141  hiEt = 30.;
142  dPhi = 0.2;
143  loRes = 0.;
144  hiRes = 1.2;
145  } else if (sample_ == 2) {
146  loE = 0.;
147  hiE = 200.;
148  loEt = 0.;
149  hiEt = 50.;
150  dPhi = 0.05;
151  loRes = 0.7;
152  hiRes = 1.2;
153  } else if (sample_ == 3) {
154  loE = 0.;
155  hiE = 500.;
156  loEt = 0.;
157  hiEt = 500.;
158  dPhi = 0.05;
159  loRes = 0.7;
160  hiRes = 1.2;
161  } else if (sample_ == 4) {
162  loE = 0.;
163  hiE = 6000.;
164  loEt = 0.;
165  hiEt = 1200.;
166  dPhi = 0.05;
167  loRes = 0.7;
168  hiRes = 1.2;
169  }
170 
171  h1_deltaEta_ = dbe_->book1D("deltaEta", " Reco photon Eta minus Generated photon Eta ", 100, -0.2, 0.2);
172  h1_deltaPhi_ = dbe_->book1D("deltaPhi", "Reco photon Phi minus Generated photon Phi ", 100, -dPhi, dPhi);
173  h1_pho_Eta_ = dbe_->book1D("phoEta", "Photon Eta ", 40, -3., 3.);
174  h1_pho_Phi_ = dbe_->book1D("phoPhi", "Photon Phi ", 40, -3.14, 3.14);
175  h1_pho_E_ = dbe_->book1D("phoE", "Photon Energy ", 100, loE, hiE);
176  h1_pho_Et_ = dbe_->book1D("phoEt", "Photon Et ", 100, loEt, hiEt);
177 
178  h1_scEta_ = dbe_->book1D("scEta", " SC Eta ", 40, -3., 3.);
179  h1_deltaEtaSC_ = dbe_->book1D("deltaEtaSC", " SC Eta minus Generated photon Eta ", 100, -0.02, 0.02);
180 
181  //
183  "recEoverTrueEBarrel", " Reco photon Energy over Generated photon Energy: Barrel ", 100, loRes, hiRes);
185  "recEoverTrueEEndcap", " Reco photon Energy over Generated photon Energy: Endcap ", 100, loRes, hiRes);
186 
187  //
188 
189  h1_pho_R9Barrel_ = dbe_->book1D("phoR9Barrel", "Photon 3x3 energy / SuperCluster energy : Barrel ", 100, 0., 1.2);
190  h1_pho_R9Endcap_ = dbe_->book1D("phoR9Endcap", "Photon 3x3 energy / SuperCluster energy : Endcap ", 100, 0., 1.2);
191  h1_pho_sigmaIetaIetaBarrel_ = dbe_->book1D("sigmaIetaIetaBarrel", "sigmaIetaIeta: Barrel", 100, 0., 0.05);
192  h1_pho_sigmaIetaIetaEndcap_ = dbe_->book1D("sigmaIetaIetaEndcap", "sigmaIetaIeta: Endcap", 100, 0., 0.1);
193  h1_pho_hOverEBarrel_ = dbe_->book1D("hOverEBarrel", "H/E: Barrel", 100, 0., 0.1);
194  h1_pho_hOverEEndcap_ = dbe_->book1D("hOverEEndcap", "H/E: Endcap", 100, 0., 0.1);
195  h1_pho_ecalIsoBarrel_ = dbe_->book1D("ecalIsolBarrel", "isolation et sum in Ecal: Barrel", 100, 0., 100.);
196  h1_pho_ecalIsoEndcap_ = dbe_->book1D("ecalIsolEndcap", "isolation et sum in Ecal: Endcap", 100, 0., 100.);
197  h1_pho_hcalIsoBarrel_ = dbe_->book1D("hcalIsolBarrel", "isolation et sum in Hcal: Barrel", 100, 0., 100.);
198  h1_pho_hcalIsoEndcap_ = dbe_->book1D("hcalIsolEndcap", "isolation et sum in Hcal: Endcap", 100, 0., 100.);
199  h1_pho_trkIsoBarrel_ = dbe_->book1D("trkIsolBarrel", "isolation pt sum in the tracker: Barrel", 100, 0., 100.);
200  h1_pho_trkIsoEndcap_ = dbe_->book1D("trkIsolEndcap", "isolation pt sum in the tracker: Endcap", 100, 0., 100.);
201 }
MonitorElement * h1_scEta_
MonitorElement * h1_deltaPhi_
MonitorElement * h1_pho_R9Barrel_
MonitorElement * h1_pho_Eta_
MonitorElement * h1_pho_hcalIsoEndcap_
MonitorElement * h1_recEoverTrueEEndcap_
MonitorElement * h1_recEoverTrueEBarrel_
MonitorElement * h1_pho_trkIsoBarrel_
MonitorElement * h1_pho_E_
MonitorElement * h1_deltaEta_
MonitorElement * h1_pho_trkIsoEndcap_
MonitorElement * h1_pho_hcalIsoBarrel_
MonitorElement * h1_pho_Phi_
MonitorElement * h1_pho_sigmaIetaIetaBarrel_
MonitorElement * h1_pho_hOverEEndcap_
MonitorElement * h1_pho_R9Endcap_
MonitorElement * h1_pho_ecalIsoBarrel_
MonitorElement * h1_pho_ecalIsoEndcap_
MonitorElement * h1_pho_sigmaIetaIetaEndcap_
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
Definition: DQMStore.h:98
MonitorElement * h1_deltaEtaSC_
MonitorElement * h1_pho_Et_
MonitorElement * h1_pho_hOverEBarrel_
void SimplePhotonAnalyzer::endJob ( void  )
overridevirtual

Reimplemented from edm::one::EDAnalyzerBase.

Definition at line 402 of file SimplePhotonAnalyzer.cc.

402  {
403  //========================================================================
404 }
float SimplePhotonAnalyzer::etaTransformation ( float  a,
float  b 
)
private

Definition at line 364 of file SimplePhotonAnalyzer.cc.

References ETA, etaBarrelEndcap, log, PI, R_ECAL, funct::tan(), Z_Endcap, and ZEcal.

Referenced by analyze().

364  {
365  //---Definitions
366  const float PI = 3.1415927;
367  //UNUSED const float TWOPI = 2.0*PI;
368 
369  //---Definitions for ECAL
370  const float R_ECAL = 136.5;
371  const float Z_Endcap = 328.0;
372  const float etaBarrelEndcap = 1.479;
373 
374  //---ETA correction
375 
376  float Theta = 0.0;
377  float ZEcal = R_ECAL * sinh(EtaParticle) + Zvertex;
378 
379  if (ZEcal != 0.0)
380  Theta = atan(R_ECAL / ZEcal);
381  if (Theta < 0.0)
382  Theta = Theta + PI;
383  float ETA = -log(tan(0.5 * Theta));
384 
385  if (fabs(ETA) > etaBarrelEndcap) {
386  float Zend = Z_Endcap;
387  if (EtaParticle < 0.0)
388  Zend = -Zend;
389  float Zlen = Zend - Zvertex;
390  float RR = Zlen / sinh(EtaParticle);
391  Theta = atan(RR / Zend);
392  if (Theta < 0.0)
393  Theta = Theta + PI;
394  ETA = -log(tan(0.5 * Theta));
395  }
396  //---Return the result
397  return ETA;
398  //---end
399 }
static std::vector< std::string > checklist log
static constexpr float R_ECAL
#define ETA
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
static constexpr float etaBarrelEndcap
#define PI
Definition: QcdUeDQM.h:37
static constexpr float ZEcal
static constexpr float Z_Endcap

Member Data Documentation

edm::InputTag SimplePhotonAnalyzer::barrelEcalHits_
private

Definition at line 61 of file SimplePhotonAnalyzer.cc.

Referenced by SimplePhotonAnalyzer().

DQMStore* SimplePhotonAnalyzer::dbe_
private

Definition at line 69 of file SimplePhotonAnalyzer.cc.

Referenced by beginJob().

edm::InputTag SimplePhotonAnalyzer::endcapEcalHits_
private

Definition at line 62 of file SimplePhotonAnalyzer.cc.

Referenced by SimplePhotonAnalyzer().

MonitorElement* SimplePhotonAnalyzer::h1_deltaEta_
private

Definition at line 92 of file SimplePhotonAnalyzer.cc.

Referenced by analyze(), and beginJob().

MonitorElement* SimplePhotonAnalyzer::h1_deltaEtaSC_
private

Definition at line 72 of file SimplePhotonAnalyzer.cc.

Referenced by analyze(), and beginJob().

MonitorElement* SimplePhotonAnalyzer::h1_deltaPhi_
private

Definition at line 93 of file SimplePhotonAnalyzer.cc.

Referenced by analyze(), and beginJob().

MonitorElement* SimplePhotonAnalyzer::h1_pho_E_
private

Definition at line 73 of file SimplePhotonAnalyzer.cc.

Referenced by analyze(), and beginJob().

MonitorElement* SimplePhotonAnalyzer::h1_pho_ecalIsoBarrel_
private

Definition at line 83 of file SimplePhotonAnalyzer.cc.

Referenced by analyze(), and beginJob().

MonitorElement* SimplePhotonAnalyzer::h1_pho_ecalIsoEndcap_
private

Definition at line 84 of file SimplePhotonAnalyzer.cc.

Referenced by analyze(), and beginJob().

MonitorElement* SimplePhotonAnalyzer::h1_pho_Et_
private

Definition at line 74 of file SimplePhotonAnalyzer.cc.

Referenced by analyze(), and beginJob().

MonitorElement* SimplePhotonAnalyzer::h1_pho_Eta_
private

Definition at line 75 of file SimplePhotonAnalyzer.cc.

Referenced by analyze(), and beginJob().

MonitorElement* SimplePhotonAnalyzer::h1_pho_hcalIsoBarrel_
private

Definition at line 85 of file SimplePhotonAnalyzer.cc.

Referenced by analyze(), and beginJob().

MonitorElement* SimplePhotonAnalyzer::h1_pho_hcalIsoEndcap_
private

Definition at line 86 of file SimplePhotonAnalyzer.cc.

Referenced by analyze(), and beginJob().

MonitorElement* SimplePhotonAnalyzer::h1_pho_hOverEBarrel_
private

Definition at line 81 of file SimplePhotonAnalyzer.cc.

Referenced by analyze(), and beginJob().

MonitorElement* SimplePhotonAnalyzer::h1_pho_hOverEEndcap_
private

Definition at line 82 of file SimplePhotonAnalyzer.cc.

Referenced by analyze(), and beginJob().

MonitorElement* SimplePhotonAnalyzer::h1_pho_Phi_
private

Definition at line 76 of file SimplePhotonAnalyzer.cc.

Referenced by analyze(), and beginJob().

MonitorElement* SimplePhotonAnalyzer::h1_pho_R9Barrel_
private

Definition at line 77 of file SimplePhotonAnalyzer.cc.

Referenced by analyze(), and beginJob().

MonitorElement* SimplePhotonAnalyzer::h1_pho_R9Endcap_
private

Definition at line 78 of file SimplePhotonAnalyzer.cc.

Referenced by analyze(), and beginJob().

MonitorElement* SimplePhotonAnalyzer::h1_pho_sigmaIetaIetaBarrel_
private

Definition at line 79 of file SimplePhotonAnalyzer.cc.

Referenced by analyze(), and beginJob().

MonitorElement* SimplePhotonAnalyzer::h1_pho_sigmaIetaIetaEndcap_
private

Definition at line 80 of file SimplePhotonAnalyzer.cc.

Referenced by analyze(), and beginJob().

MonitorElement* SimplePhotonAnalyzer::h1_pho_trkIsoBarrel_
private

Definition at line 87 of file SimplePhotonAnalyzer.cc.

Referenced by analyze(), and beginJob().

MonitorElement* SimplePhotonAnalyzer::h1_pho_trkIsoEndcap_
private

Definition at line 88 of file SimplePhotonAnalyzer.cc.

Referenced by analyze(), and beginJob().

MonitorElement* SimplePhotonAnalyzer::h1_recEoverTrueEBarrel_
private

Definition at line 90 of file SimplePhotonAnalyzer.cc.

Referenced by analyze(), and beginJob().

MonitorElement* SimplePhotonAnalyzer::h1_recEoverTrueEEndcap_
private

Definition at line 91 of file SimplePhotonAnalyzer.cc.

Referenced by analyze(), and beginJob().

MonitorElement* SimplePhotonAnalyzer::h1_scEta_
private

Definition at line 71 of file SimplePhotonAnalyzer.cc.

Referenced by analyze(), and beginJob().

std::string SimplePhotonAnalyzer::mcCollection_
private

Definition at line 56 of file SimplePhotonAnalyzer.cc.

std::string SimplePhotonAnalyzer::mcProducer_
private

Definition at line 55 of file SimplePhotonAnalyzer.cc.

Referenced by analyze(), and SimplePhotonAnalyzer().

edm::InputTag SimplePhotonAnalyzer::pfEgammaCandidates_
private

Definition at line 60 of file SimplePhotonAnalyzer.cc.

Referenced by analyze(), and SimplePhotonAnalyzer().

std::string SimplePhotonAnalyzer::photonCollection_
private

Definition at line 58 of file SimplePhotonAnalyzer.cc.

Referenced by analyze(), and SimplePhotonAnalyzer().

std::string SimplePhotonAnalyzer::photonCollectionProducer_
private

Definition at line 57 of file SimplePhotonAnalyzer.cc.

Referenced by analyze(), and SimplePhotonAnalyzer().

float SimplePhotonAnalyzer::sample_
private

Definition at line 67 of file SimplePhotonAnalyzer.cc.

Referenced by beginJob(), and SimplePhotonAnalyzer().

edm::ESHandle<CaloTopology> SimplePhotonAnalyzer::theCaloTopo_
private

Definition at line 64 of file SimplePhotonAnalyzer.cc.

Referenced by analyze().

std::string SimplePhotonAnalyzer::valueMapPFCandPhoton_
private

Definition at line 59 of file SimplePhotonAnalyzer.cc.

Referenced by analyze(), and SimplePhotonAnalyzer().

std::string SimplePhotonAnalyzer::vertexProducer_
private

Definition at line 66 of file SimplePhotonAnalyzer.cc.

Referenced by SimplePhotonAnalyzer().