77 "dynamicHybridSuperClusters",
edm::InputTag(
"dynamicHybridSuperClusters")));
79 "correctedHybridSuperClusters",
edm::InputTag(
"correctedHybridSuperClusters")));
82 "correctedDynamicHybridSuperClusters",
edm::InputTag(
"correctedDynamicHybridSuperClusters")));
85 edm::InputTag(
"correctedFixedMatrixSuperClustersWithPreshower")));
88 "fixedMatrixSuperClustersWithPreshower",
edm::InputTag(
"fixedMatrixSuperClustersWithPreshower")));
108 mytree_ =
new TTree(
"energyScale",
"");
109 TString treeVariables =
110 "mc_npar/I:parID:mc_sep/"
111 "F:mc_e:mc_et:mc_phi:mc_eta:mc_theta:";
112 treeVariables +=
"em_dR/F:";
114 "em_isInCrack/I:em_scType:em_e/F:em_et:em_phi:em_eta:em_theta:em_nCell/"
116 treeVariables +=
"em_pet/F:em_pe:em_peta:em_ptheta:";
119 treeVariables +=
"emCorr_e/F:emCorr_et:emCorr_eta:emCorr_phi:emCorr_theta:";
122 treeVariables +=
"emCorr_pet/F:emCorr_peta:emCorr_ptheta:";
124 treeVariables +=
"em_pw/F:em_ew:em_br";
148 if (!(hepMC.isValid())) {
149 LogInfo(
"EnergyScaleAnalyzer") <<
"Could not get MC Product!";
154 std::vector<Handle<HepMCProduct>> evtHandles;
157 for (
unsigned int i = 0;
i < evtHandles.size(); ++
i) {
163 HepMC::GenEvent::vertex_const_iterator vtx = evt->vertices_begin();
164 if (evtHandles[
i].provenance()->moduleLabel() ==
std::string(
l.module)) {
166 xVtx_ = 0.1 * (*vtx)->position().x();
167 yVtx_ = 0.1 * (*vtx)->position().y();
168 zVtx_ = 0.1 * (*vtx)->position().z();
179 edm::LogError(
"EnergyScaleAnalyzer") <<
"Can't get collection with producer hybridSuperClusters.";
186 edm::LogError(
"EnergyScaleAnalyzer") <<
"Can't get collection with producer dynamicHybridSuperClusters.";
193 edm::LogError(
"EnergyScaleAnalyzer") <<
"Can't get collection with producer "
194 "fixedMatrixSuperClustersWithPreshower.";
202 edm::LogError(
"EnergyScaleAnalyzer") <<
"Can't get collection with producer correctedHybridSuperClusters.";
209 edm::LogError(
"EnergyScaleAnalyzer") <<
"Can't get collection with producer "
210 "correctedDynamicHybridSuperClusters.";
217 edm::LogError(
"EnergyScaleAnalyzer") <<
"Can't get collection with producer "
218 "correctedFixedMatrixSuperClustersWithPreshower.";
268 HepMC::GenEvent::particle_const_iterator
p =
genEvent->particles_begin();
274 std::vector<HepMC::GenParticle *> mcParticles;
276 for (HepMC::GenEvent::particle_const_iterator
p =
genEvent->particles_begin();
p !=
genEvent->particles_end(); ++
p) {
280 if ((*p)->pdg_id() != 22 &&
abs((*p)->pdg_id()) != 11)
284 bool satisfySelectionCriteria = (*p)->momentum().perp() > min_eT && fabs((*p)->momentum().eta()) <
max_eta;
286 if (!satisfySelectionCriteria)
290 mcParticles.push_back(*
p);
294 if (mcParticles.size() == 2) {
298 kinem::delta_R(mc1->momentum().eta(), mc1->momentum().phi(), mc2->momentum().eta(), mc2->momentum().phi());
304 for (std::vector<HepMC::GenParticle *>::const_iterator
p = mcParticles.begin();
p != mcParticles.end(); ++
p) {
311 tree_.
mc_et = mc->momentum().e() *
sin(mc->momentum().theta());
347 reco::SuperClusterCollection::const_iterator em = scColl->end();
348 float energyMax = -100.0;
349 for (reco::SuperClusterCollection::const_iterator aClus = scColl->begin(); aClus != scColl->end(); ++aClus) {
352 kinem::delta_R(mc->momentum().eta(), mc->momentum().phi(), aClus->position().eta(), aClus->position().phi());
354 float energy = aClus->energy();
355 if (energy < energyMax)
362 if (em == scColl->end()) {
373 double emAbsEta = fabs(em->position().eta());
376 if (emAbsEta < 0.018 || (emAbsEta > 0.423 && emAbsEta < 0.461) || (emAbsEta > 0.770 && emAbsEta < 0.806) ||
377 (emAbsEta > 1.127 && emAbsEta < 1.163) || (emAbsEta > 1.460 && emAbsEta < 1.558))
380 tree_.
em_dR =
kinem::delta_R(mc->momentum().eta(), mc->momentum().phi(), em->position().eta(), em->position().phi());
381 tree_.
em_e = em->energy();
382 tree_.
em_et = em->energy() *
sin(em->position().theta());
383 tree_.
em_phi = em->position().phi();
384 tree_.
em_eta = em->position().eta();
385 tree_.
em_theta = em->position().theta();
387 tree_.
em_nBC = em->clustersSize();
401 etaMax_ = em->position().eta();
402 phiMax_ = em->position().phi();
422 em = corrSCColl->end();
424 for (reco::SuperClusterCollection::const_iterator aClus = corrSCColl->begin(); aClus != corrSCColl->end(); ++aClus) {
427 kinem::delta_R(mc->momentum().eta(), mc->momentum().phi(), aClus->position().eta(), aClus->position().phi());
429 float energy = aClus->energy();
430 if (energy < energyMax)
437 if (em == corrSCColl->end()) {
447 tree_.
emCorr_et = em->energy() *
sin(em->position().theta());
460 tree_.
em_pw = em->phiWidth();
461 tree_.
em_ew = em->etaWidth();
edm::EDGetTokenT< reco::SuperClusterCollection > dynamicHybridSuperClusters_token
T getUntrackedParameter(std::string const &, T const &) const
edm::EDGetTokenT< reco::SuperClusterCollection > fixedMatrixSuperClustersWithPreshower_token
static std::vector< std::string > checklist log
~EnergyScaleAnalyzer() override
const bool isValid(const Frame &aFrame, const FrameQuality &aQuality, const uint16_t aExpectedPos)
tuple hybridSuperClusters
bool getByToken(EDGetToken token, Handle< PROD > &result) const
#define DEFINE_FWK_MODULE(type)
void analyze(const edm::Event &, const edm::EventSetup &) override
Sin< T >::type sin(const T &t)
edm::EDGetTokenT< edm::HepMCProduct > hepMCLabel_
void getManyByType(std::vector< Handle< PROD >> &results) const
edm::EDGetTokenT< reco::SuperClusterCollection > correctedFixedMatrixSuperClustersWithPreshower_token
Log< level::Error, false > LogError
edm::EDGetTokenT< reco::SuperClusterCollection > hybridSuperClusters_token
void fillTree(const reco::SuperClusterCollection *scColl, const reco::SuperClusterCollection *corrSCColl, HepMC::GenParticle *mc, tree_structure_ &tree_, float xV, float yV, float zV, int scType)
std::vector< SuperCluster > SuperClusterCollection
collection of SuperCluser objectr
Tan< T >::type tan(const T &t)
Abs< T >::type abs(const T &t)
double delta_R(double eta1, double phi1, double eta2, double phi2)
edm::EDGetTokenT< reco::SuperClusterCollection > correctedDynamicHybridSuperClusters_token
edm::EDGetTokenT< reco::SuperClusterCollection > correctedHybridSuperClusters_token
Log< level::Info, false > LogInfo
EnergyScaleAnalyzer(const edm::ParameterSet &)
tuple dynamicHybridSuperClusters
T getParameter(std::string const &) const
void labelsForToken(EDGetToken iToken, Labels &oLabels) const