void JetEvaluator::fillOutputNtuples(PHCompositeNode *topNode) { if (Verbosity() > 2) cout << "JetEvaluator::fillOutputNtuples() entered" << endl; JetRecoEval* recoeval = _jetevalstack->get_reco_eval(); //JetTruthEval* trutheval = _jetevalstack->get_truth_eval(); //------------------------- // fill the reco jet ntuple //------------------------- if (_do_recojet_eval) { if (Verbosity() > 1) cout << "JetEvaluator::filling recojet ntuple..." << endl; JetMap* recojets = findNode::getClass<JetMap>(topNode,_recojetname.c_str()); if (!recojets) { cerr << PHWHERE << " ERROR: Can't find " << _recojetname << endl; exit(-1); } // for every recojet for (JetMap::Iter iter = recojets->begin(); iter != recojets->end(); ++iter) { Jet* recojet = iter->second; Jet* truthjet = recoeval->max_truth_jet_by_energy(recojet); float id = recojet->get_id(); float ncomp = recojet->size_comp(); float eta = recojet->get_eta(); float phi = recojet->get_phi(); float e = recojet->get_e(); float pt = recojet->get_pt(); float gid = NAN; float gncomp = NAN; float geta = NAN; float gphi = NAN; float ge = NAN; float gpt = NAN; float efromtruth = NAN; if (truthjet) { gid = truthjet->get_id(); gncomp = truthjet->size_comp(); geta = truthjet->get_eta(); gphi = truthjet->get_phi(); ge = truthjet->get_e(); gpt = truthjet->get_pt(); efromtruth = recoeval->get_energy_contribution(recojet,truthjet); } float recojet_data[14] = {(float) _ievent, id, ncomp, eta, phi, e, pt, gid, gncomp, geta, gphi, ge, gpt, efromtruth }; _ntp_recojet->Fill(recojet_data); } } //------------------------- // fill the truth jet ntuple //------------------------- if (_do_truthjet_eval) { if (Verbosity() > 1) cout << "JetEvaluator::filling truthjet ntuple..." << endl; JetMap* truthjets = findNode::getClass<JetMap>(topNode,_truthjetname.c_str()); if (!truthjets) { cerr << PHWHERE << " ERROR: Can't find " << _truthjetname << endl; exit(-1); } // for every truthjet for (JetMap::Iter iter = truthjets->begin(); iter != truthjets->end(); ++iter) { Jet* truthjet = iter->second; Jet* recojet = recoeval->best_jet_from(truthjet); float gid = truthjet->get_id(); float gncomp = truthjet->size_comp(); float geta = truthjet->get_eta(); float gphi = truthjet->get_phi(); float ge = truthjet->get_e(); float gpt = truthjet->get_pt(); float id = NAN; float ncomp = NAN; float eta = NAN; float phi = NAN; float e = NAN; float pt = NAN; float efromtruth = NAN; if (recojet) { id = recojet->get_id(); ncomp = recojet->size_comp(); eta = recojet->get_eta(); phi = recojet->get_phi(); e = recojet->get_e(); pt = recojet->get_pt(); efromtruth = recoeval->get_energy_contribution(recojet,truthjet); } float truthjet_data[14] = {(float) _ievent, gid, gncomp, geta, gphi, ge, gpt, id, ncomp, eta, phi, e, pt, efromtruth }; _ntp_truthjet->Fill(truthjet_data); } } return; }
int LeptoquarksReco::AddJetInformation( type_map_tcan& tauCandidateMap, JetMap* recojets, type_map_cdata* map_calotower ) { /* Loop over tau candidates */ for (type_map_tcan::iterator iter = tauCandidateMap.begin(); iter != tauCandidateMap.end(); ++iter) { Jet* jetx = recojets->get( (iter->second)->get_property_uint( PidCandidate::jet_id ) ); /* calculate transverse mass of jet */ float jet_mtrans = sqrt( pow( jetx->get_mass(), 2 ) + pow( jetx->get_pt(), 2 ) ); /* count jet ncomp above thresholds */ unsigned int jet_ncomp_above_0p1 = 0; unsigned int jet_ncomp_above_1 = 0; unsigned int jet_ncomp_above_10 = 0; for (Jet::ConstIter jcompiter = jetx->begin_comp(); jcompiter != jetx->end_comp(); ++jcompiter) { RawTowerDefs::CalorimeterId calo_id = RawTowerDefs::NONE; switch ( jcompiter->first ) { case Jet::CEMC_TOWER: calo_id = RawTowerDefs::CEMC; break; case Jet::HCALIN_TOWER: calo_id = RawTowerDefs::HCALIN; break; case Jet::HCALOUT_TOWER: calo_id = RawTowerDefs::HCALOUT; break; default: break; } /* continue if no calorimeter id found */ if ( calo_id == RawTowerDefs::NONE ) continue; /* get tower container from map, find tower in tower container, get tower energy */ float e_component = 0; if ( map_calotower->find( calo_id ) != map_calotower->end() ) e_component = ( ( ( map_calotower->find( calo_id ) )->second ).first )->getTower( jcompiter->second )->get_energy(); /* check if energy is above threshold and count up matching counters accordingly */ if ( e_component > 0.1 ) jet_ncomp_above_0p1++; if ( e_component > 1 ) jet_ncomp_above_1++; if ( e_component > 10 ) jet_ncomp_above_10++; } /* set tau candidate jet properties */ (iter->second)->set_property( PidCandidate::jet_eta , jetx->get_eta() ); (iter->second)->set_property( PidCandidate::jet_phi , jetx->get_phi() ); (iter->second)->set_property( PidCandidate::jet_etotal , jetx->get_e() ); (iter->second)->set_property( PidCandidate::jet_etrans , jetx->get_et() ); (iter->second)->set_property( PidCandidate::jet_ptotal , jetx->get_p() ); (iter->second)->set_property( PidCandidate::jet_ptrans , jetx->get_pt() ); (iter->second)->set_property( PidCandidate::jet_minv , jetx->get_mass() ); (iter->second)->set_property( PidCandidate::jet_mtrans , jet_mtrans ); (iter->second)->set_property( PidCandidate::jet_ncomp , (uint)jetx->size_comp() ); (iter->second)->set_property( PidCandidate::jet_ncomp_above_0p1 , jet_ncomp_above_0p1 ); (iter->second)->set_property( PidCandidate::jet_ncomp_above_1 , jet_ncomp_above_1 ); (iter->second)->set_property( PidCandidate::jet_ncomp_above_10 , jet_ncomp_above_10 ); (iter->second)->set_property( PidCandidate::jet_ncomp_emcal , (uint)jetx->count_comp( Jet::CEMC_TOWER ) ); } return 0; }