59 #include "Math/GenVector/VectorUtil.h"
60 #include "Math/GenVector/PxPyPzE4D.h"
76 std::auto_ptr<JetCrystalsAssociationCollection> associate(
91 produces<reco::JetCrystalsAssociationCollection>();
92 produces<reco::EMLorentzVectorCollection>();
119 using namespace reco;
145 for (
size_t t = 0;
t <
jets->size();
t++)
147 const std::vector<CaloTowerPtr> myTowers=(*jets)[
t].getCaloConstituents();
150 for (
unsigned int iTower = 0; iTower < myTowers.size(); iTower++)
153 size_t numRecHits = theTower->constituentsSize();
155 for (
size_t j = 0;
j < numRecHits;
j++) {
156 DetId RecHitDetID=theTower->constituent(
j);
159 int EcalNum = RecHitDetID.
subdetId();
164 DetId id = theRecHit->detid();
168 double energy = theRecHit->energy();
173 double et = energy *
sin(theta);
176 jetRecHits->push_back(p);
179 }
else if ( EcalNum == 2 ) {
183 DetId id = theRecHit->detid();
187 double energy = theRecHit->energy();
192 double et = energy *
sin(theta);
195 jetRecHits->push_back(p);
206 std::auto_ptr<JetCrystalsAssociationCollection> jetCrystals = associate(
jets,myRecHits);
207 iEvent.
put( jetCrystals );
218 for (
size_t j = 0;
j < jets->size();
j++) {
220 for (
size_t t = 0;
t < myLorentzRecHits->size();
t++) {
221 double delta = ROOT::Math::VectorUtil::DeltaR((*jets)[
j].
p4().Vect(), (*myLorentzRecHits)[
t]);
222 if (delta < m_deltaRCut)
226 return outputCollection;
edm::InputTag m_EBRecHits
T getParameter(std::string const &) const
virtual void produce(edm::Event &, const edm::EventSetup &)
#define DEFINE_FWK_MODULE(type)
Sin< T >::type sin(const T &t)
Geom::Phi< T > phi() const
std::vector< EcalRecHit >::const_iterator const_iterator
Geom::Theta< T > theta() const
const GlobalPoint & getPosition() const
Returns the position of reference for this cell.
Geom::Theta< T > theta() const
math::PtEtaPhiELorentzVectorCollection EMLorentzVectorCollection
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
math::PtEtaPhiELorentzVectorRef EMLorentzVectorRef
edm::InputTag m_EERecHits
int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum) ...
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
std::auto_ptr< JetCrystalsAssociationCollection > associate(const edm::Handle< CaloJetCollection > &jets, const edm::OrphanHandle< EMLorentzVectorCollection > &myLorentzRecHits) const
edm::Ref< CaloJetCollection > CaloJetRef
edm references
math::PtEtaPhiELorentzVector EMLorentzVector
ESHandle< TrackerGeometry > geometry
std::vector< JetCrystalsAssociation > JetCrystalsAssociationCollection
Detector det() const
get the detector field from this detid
JetCrystalsAssociator(const edm::ParameterSet &)