44 std::vector<reco::CandidatePtr>
const & constituents,
66 std::vector<reco::CandidatePtr>
const & constituents,
76 std::vector<reco::CandidatePtr>
const & constituents,
91 std::vector<reco::CandidatePtr>
const & constituents,
99 for ( std::vector<reco::CandidatePtr>::const_iterator ic = constituents.begin(),
100 icbegin = constituents.begin(), icend = constituents.end();
101 ic != icend; ++ic ) {
102 charge += (*ic)->charge();
104 jet =
reco::PFJet( p4, point, specific, constituents);
113 std::vector<reco::CandidatePtr>
const & constituents,
127 if (0==caloJetSpecific)
return false;
132 vector<double> eECal_i;
133 vector<double> eHCal_i;
139 double eHadInHF = 0.;
145 vector<reco::CandidatePtr>::const_iterator itTower;
146 for (itTower=towers.begin();itTower!=towers.end();++itTower) {
147 if ( itTower->isNull() || !itTower->isAvailable() ) {
154 eECal_i.push_back(tower->
emEnergy());
181 float dEta = fabs(geometry->
getCorners()[0].eta()-
185 jetArea += dEta *
dPhi;
188 edm::LogWarning(
"DataNotFound") <<
"reco::makeCaloJetSpecific: Geometry for cell "
189 <<tower->
id()<<
" can not be found. Ignoring cell\n";
193 edm::LogWarning(
"DataNotFound")<<
"reco::makeCaloJetSpecific: Constituent is not of "
194 <<
"CaloTower type\n";
198 double towerEnergy = eInHad + eInEm;
206 if (towerEnergy > 0) {
219 sort(eECal_i.begin(), eECal_i.end(), greater<double>());
220 sort(eHCal_i.begin(), eHCal_i.end(), greater<double>());
222 if (!towers.empty()) {
236 if (0==pfJetSpecific)
return false;
242 float chargedHadronEnergy=0.;
243 float neutralHadronEnergy=0.;
244 float photonEnergy=0.;
245 float electronEnergy=0.;
247 float HFHadronEnergy=0.;
249 int chargedHadronMultiplicity=0;
250 int neutralHadronMultiplicity=0;
251 int photonMultiplicity=0;
252 int electronMultiplicity=0;
253 int muonMultiplicity=0;
254 int HFHadronMultiplicity=0;
255 int HFEMMultiplicity=0;
257 float chargedEmEnergy=0.;
258 float neutralEmEnergy=0.;
259 float chargedMuEnergy=0.;
260 int chargedMultiplicity=0;
261 int neutralMultiplicity=0;
263 vector<reco::CandidatePtr>::const_iterator itParticle;
264 for (itParticle=particles.begin();itParticle!=particles.end();++itParticle){
265 if ( itParticle->isNull() || !itParticle->isAvailable() ) {
266 edm::LogWarning(
"DataNotFound") <<
" JetSpecific: PF Particle is invalid\n";
273 chargedHadronEnergy += pfCand->
energy();
274 chargedHadronMultiplicity++;
275 chargedMultiplicity++;
278 case PFCandidate::h0 :
279 neutralHadronEnergy += pfCand->
energy();
280 neutralHadronMultiplicity++;
281 neutralMultiplicity++;
284 case PFCandidate::gamma:
285 photonEnergy += pfCand->
energy();
286 photonMultiplicity++;
287 neutralEmEnergy += pfCand->
energy();
288 neutralMultiplicity++;
292 electronEnergy += pfCand->
energy();
293 electronMultiplicity++;
294 chargedEmEnergy += pfCand->
energy();
295 chargedMultiplicity++;
298 case PFCandidate::mu:
299 muonEnergy += pfCand->
energy();
301 chargedMuEnergy += pfCand->
energy();
302 chargedMultiplicity++;
305 case PFCandidate::h_HF :
306 HFHadronEnergy += pfCand->
energy();
307 HFHadronMultiplicity++;
308 neutralMultiplicity++;
311 case PFCandidate::egamma_HF :
312 HFEMEnergy += pfCand->
energy();
314 neutralEmEnergy += pfCand->
energy();
315 neutralMultiplicity++;
320 edm::LogWarning(
"DataNotFound") <<
"reco::makePFJetSpecific: Unknown PFCandidate::ParticleType: "
326 edm::LogWarning(
"DataNotFound") <<
"reco::makePFJetSpecific: Referred constituent is not "
361 if (0==genJetSpecific)
return false;
363 vector<reco::CandidatePtr>::const_iterator itMcParticle=mcparticles.begin();
364 for (;itMcParticle!=mcparticles.end();++itMcParticle) {
365 if ( itMcParticle->isNull() || !itMcParticle->isAvailable() ) {
366 edm::LogWarning(
"DataNotFound") <<
" JetSpecific: MC Particle is invalid\n";
371 const GenParticle* genParticle = GenJet::genParticle(candidate);
373 double e = genParticle->
energy();
374 switch (
abs (genParticle->
pdgId ())) {
398 edm::LogWarning(
"DataNotFound") <<
"reco::makeGenJetSpecific: Referred GenParticleCandidate "
399 <<
"is not available in the event\n";
float mMaxEInEmTowers
Maximum energy in EM towers.
virtual int pdgId() const
PDG identifier.
ParticleType
particle types
Jets made from CaloTowers.
float mEmEnergyInHF
Em energy in HF.
float mEnergyFractionHadronic
Hadronic energy fraction.
virtual void setCharge(Charge q)
set electric charge
float mEmEnergyInEB
Em energy in EB.
bool makeSpecific(std::vector< reco::CandidatePtr > const &towers, const CaloSubdetectorGeometry &towerGeometry, reco::CaloJet::Specific *caloJetSpecific)
Make CaloJet specifics. Assumes PseudoJet is made from CaloTowerCandidates.
float mNeutralHadronEnergy
float mHadEnergyInHB
Hadronic energy in HB.
Jets made from CaloTowers.
Jets made from PFObjects.
float mChargedHadronEnergy
virtual const CaloCellGeometry * getGeometry(const DetId &id) const
Get the cell geometry of a given detector id. Should return false if not found.
virtual double energy() const
energy
virtual bool hasMasterClone() const =0
double dPhi(double phi1, double phi2)
static const int SubdetId
int mChargedHadronMultiplicity
math::XYZPoint Point
point in the space
Jets made from MC generator particles.
float mEnergyFractionEm
Em energy fraction.
float mHadEnergyInHF
Hadronic energy in HF.
float m_InvisibleEnergy
Invisible energy (mu, nu, ...)
float mMaxEInHadTowers
Maximum energy in HCAL towers.
int mElectronMultiplicity
CaloTowerDetId id() const
int mNeutralHadronMultiplicity
float m_AuxiliaryEnergy
Anything else (undecayed Sigmas etc.)
float mHadEnergyInHO
Hadronic nergy fraction in HO.
ESHandle< TrackerGeometry > geometry
Particle reconstructed by the particle flow algorithm.
float m_HadEnergy
Energy of Hadrons.
T get() const
get a component
float mTowersArea
Area of contributing CaloTowers.
HcalSubdetector hcalSubdetector(int iEta)
converts eta to the corresponding HCAL subdetector.
int ieta() const
get the tower ieta
virtual ParticleType particleId() const
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
int mHFHadronMultiplicity
float m_EmEnergy
Energy of EM particles.
math::XYZTLorentzVector LorentzVector
Lorentz vector.
value_type const * get() const
float mEmEnergyInEE
Em energy in EE.
*vegas h *****************************************************used in the default bin number in original ***version of VEGAS is ***a higher bin number might help to derive a more precise ***grade subtle point
double outerEnergy() const
virtual const CornersVec & getCorners() const =0
float mHadEnergyInHE
Hadronic energy in HE.
void writeSpecific(reco::CaloJet &jet, reco::Particle::LorentzVector const &p4, reco::Particle::Point const &point, std::vector< reco::CandidatePtr > const &constituents, edm::EventSetup const &c)
virtual const CandidateBaseRef & masterClone() const =0