69 vectorial_ = iConfig.
getParameter<
bool>(
"VectorialCorrection");
74 produces<reco::JPTJetCollection>().setBranchAlias(alias);
109 for (
unsigned i = 0;
i < jets_h->size(); ++
i) {
117 double factorZSP = 1.;
118 if(useZSP) factorZSP = mZSPalgo->correction(corrected, iEvent, iSetup);
124 double scaleJPT = 1.;
130 scaleJPT = mJPTalgo->correction ( corrected, *oldjet, iEvent, iSetup );
132 corrected.
py()*scaleJPT,
133 corrected.
pz()*scaleJPT,
134 corrected.
energy()*scaleJPT );
136 scaleJPT = mJPTalgo->correction( corrected, *oldjet, iEvent, iSetup, p4 );
144 bool ok = mJPTalgo->matchTracks( *oldjet,
180 double deEta2Tr = 0.;
181 double dePhi2Tr = 0.;
185 double denominator_tracks = 0.;
189 double deR =
deltaR((*it)->eta(), (*it)->phi(), p4.eta(), p4.phi());
190 double deEta = (*it)->eta() - p4.eta();
191 double dePhi =
deltaPhi((*it)->phi(), p4.phi());
192 if((**it).ptError()/(**it).pt() < 0.1) {
193 deR2Tr = deR2Tr + deR*deR*(*it)->pt();
194 deEta2Tr = deEta2Tr + deEta*deEta*(*it)->pt();
195 dePhi2Tr = dePhi2Tr + dePhi*dePhi*(*it)->pt();
196 denominator_tracks = denominator_tracks + (*it)->pt();
198 ((*it)->px()*p4.Px()+(*it)->py()*p4.Py()+(*it)->pz()*p4.Pz())/(p4.P()*p4.P());
199 Pout2 = Pout2 + (**it).p()*(**it).p() - (Zch*p4.P())*(Zch*p4.P());
207 double deR =
deltaR((*it)->eta(), (*it)->phi(), p4.eta(), p4.phi());
208 double deEta = (*it)->eta() - p4.eta();
209 double dePhi =
deltaPhi((*it)->phi(), p4.phi());
210 if((**it).ptError()/(**it).pt() < 0.1) {
211 deR2Tr = deR2Tr + deR*deR*(*it)->pt();
212 deEta2Tr = deEta2Tr + deEta*deEta*(*it)->pt();
213 dePhi2Tr = dePhi2Tr + dePhi*dePhi*(*it)->pt();
214 denominator_tracks = denominator_tracks + (*it)->pt();
216 ((*it)->px()*p4.Px()+(*it)->py()*p4.Py()+(*it)->pz()*p4.Pz())/(p4.P()*p4.P());
217 Pout2 = Pout2 + (**it).p()*(**it).p() - (Zch*p4.P())*(Zch*p4.P());
222 double deR =
deltaR((*it)->eta(), (*it)->phi(), p4.eta(), p4.phi());
223 double deEta = (*it)->eta() - p4.eta();
224 double dePhi =
deltaPhi((*it)->phi(), p4.phi());
225 if((**it).ptError()/(**it).pt() < 0.1) {
226 deR2Tr = deR2Tr + deR*deR*(*it)->pt();
227 deEta2Tr = deEta2Tr + deEta*deEta*(*it)->pt();
228 dePhi2Tr = dePhi2Tr + dePhi*dePhi*(*it)->pt();
229 denominator_tracks = denominator_tracks + (*it)->pt();
231 ((*it)->px()*p4.Px()+(*it)->py()*p4.Py()+(*it)->pz()*p4.Pz())/(p4.P()*p4.P());
232 Pout2 = Pout2 + (**it).p()*(**it).p() - (Zch*p4.P())*(Zch*p4.P());
238 Pout =
sqrt(fabs(Pout2))/ntracks;
241 if (denominator_tracks!=0){
242 deR2Tr = deR2Tr/denominator_tracks;
243 deEta2Tr= deEta2Tr/denominator_tracks;
244 dePhi2Tr= dePhi2Tr/denominator_tracks;
250 specific.
Pout = Pout;
264 if ( pvCollection.
isValid() && pvCollection->size()>0 ) vertex_=pvCollection->begin()->position();
271 pOut->push_back(fJet);
reco::TrackRefVector muonsInVertexOutCalo
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
float mSumEnergyOfChargedWithoutEff
virtual void produce(edm::Event &, const edm::EventSetup &)
Jets made from CaloTowers.
reco::TrackRefVector muonsInVertexInCalo
std::vector< JPTJet > JPTJetCollection
collection of CaloJet objects
double deltaPhi(float phi1, float phi2)
float mChargedHadronEnergy
float mSumPtOfChargedWithEff
reco::TrackRefVector inVertexInCalo_
reco::TrackRefVector muonsOutVertexInCalo
virtual void scaleEnergy(double fScale)
scale energy of the jet
reco::TrackRefVector inVertexOutOfCalo_
float mResponseOfChargedWithEff
reco::TrackRefVector elecsOutVertexInCalo
reco::TrackRefVector pionsInVertexOutCalo
const_iterator end() const
Termination of iteration.
const_iterator begin() const
Initialize an iterator over the RefVector.
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
virtual double energy() const
energy
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Jets made from CaloJets corrected for ZSP and tracks.
reco::TrackRefVector pionsOutVertexInCalo
float mSumEnergyOfChargedWithEff
math::XYZPoint Point
point in the space
reco::TrackRefVector outOfVertexInCalo_
reco::TrackRefVector elecsInVertexInCalo
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
edm::RefToBase< reco::Jet > theCaloJetRef
double deltaR(double eta1, double eta2, double phi1, double phi2)
JetPlusTrackProducer(const edm::ParameterSet &)
float mResponseOfChargedWithoutEff
reco::TrackRefVector pionsInVertexInCalo
virtual double px() const
x coordinate of momentum vector
float mSumPtOfChargedWithoutEff
reco::TrackRefVector elecsInVertexOutCalo
virtual double pz() const
z coordinate of momentum vector
Particles matched to tracks that are in/in, in/out, out/in at Vertex and CaloFace.
Jet energy correction algorithm using tracks.
virtual double py() const
y coordinate of momentum vector
math::XYZPoint Point
point in the space
virtual Constituents getJetConstituents() const
list of constituents