CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Types | Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes
JetPlusTrackCorrector Class Reference

Jet energy correction algorithm using tracks. More...

#include <JetPlusTrackCorrector.h>

Public Types

typedef math::XYZTLorentzVector P4
 
typedef
math::PtEtaPhiELorentzVectorD 
PtEtaPhiE
 
typedef
math::PtEtaPhiMLorentzVectorD 
PtEtaPhiM
 

Public Member Functions

bool canCorrect (const reco::Jet &) const
 Can jet be JPT-corrected? More...
 
double correctAA (const reco::Jet &, const reco::TrackRefVector &, double &) const
 For AA - correct in tracker. More...
 
double correction (const reco::Jet &, const reco::Jet &, const edm::Event &, const edm::EventSetup &, P4 &) const
 Vectorial correction method (corrected 4-momentum passed by reference) More...
 
double correction (const reco::Jet &, const reco::Jet &, const edm::Event &, const edm::EventSetup &) const
 Scalar correction method. More...
 
double correction (const reco::Jet &) const
 Correction method (not used) More...
 
double correction (const P4 &) const
 Correction method (not used) More...
 
P4 elecCorrection (const P4 &jet, const jpt::MatchedTracks &elecs) const
 Calculates correction to be applied using electrons. More...
 
bool eventRequired () const
 Returns true. More...
 
double getResponseOfChargedWithEff ()
 Get responses/sumPT/SumEnergy with and without Efficiency correction. More...
 
double getResponseOfChargedWithoutEff ()
 
double getSumEnergyWithEff ()
 
double getSumEnergyWithoutEff ()
 
double getSumPtWithEff ()
 
double getSumPtWithoutEff ()
 
 JetPlusTrackCorrector (const edm::ParameterSet &)
 Constructor. More...
 
bool matchTracks (const reco::Jet &, const edm::Event &, const edm::EventSetup &, jpt::MatchedTracks &pions, jpt::MatchedTracks &muons, jpt::MatchedTracks &elecs) const
 Matches tracks to different particle types. More...
 
P4 muonCorrection (const P4 &jet, const jpt::MatchedTracks &muons) const
 Calculates correction to be applied using muons. More...
 
P4 pionCorrection (const P4 &jet, const jpt::MatchedTracks &pions) const
 Calculates corrections to be applied using pions. More...
 
bool vectorialCorrection () const
 Returns value of configurable. More...
 
virtual ~JetPlusTrackCorrector ()
 Destructor. More...
 

Protected Types

typedef
reco::JetTracksAssociation::Container 
JetTracksAssociations
 
typedef edm::ValueMap< float > RecoElectronIds
 
typedef reco::GsfElectronCollection RecoElectrons
 
typedef reco::MuonCollection RecoMuons
 Get reponses. More...
 
typedef reco::TrackRefVector TrackRefs
 

Protected Member Functions

P4 calculateCorr (const P4 &jet, const TrackRefs &, jpt::Efficiency &, bool in_cone_at_vertex, bool in_cone_at_calo_face, double mass, bool is_pion, double mip) const
 Generic method to calculates 4-momentum correction to be applied. More...
 
double checkScale (const P4 &jet, P4 &corrected) const
 Check corrected 4-momentum does not give negative scale. More...
 
const jpt::MapefficiencyMap () const
 
P4 elecCorrection (const P4 &jet, const TrackRefs &elecs, bool in_cone_at_vertex, bool in_cone_at_calo_face) const
 Calculates individual electron corrections. More...
 
void excludeJta (const reco::Jet &, const JetTracksAssociations &, TrackRefs &included, const TrackRefs &excluded) const
 Exclude jet-track association. More...
 
bool failTrackQuality (TrackRefs::const_iterator) const
 Check on track quality. More...
 
bool findTrack (const jpt::JetTracks &, TrackRefs::const_iterator, TrackRefs::iterator &) const
 Find track in JetTracks collection. More...
 
bool findTrack (const jpt::MatchedTracks &pions, const jpt::MatchedTracks &muons, const jpt::MatchedTracks &electrons, TrackRefs::const_iterator) const
 Find track in MatchedTracks collections. More...
 
bool getElectrons (const edm::Event &, edm::Handle< RecoElectrons > &, edm::Handle< RecoElectronIds > &) const
 Get RECO electrons. More...
 
bool getMuons (const edm::Event &, edm::Handle< RecoMuons > &) const
 Get RECO muons. More...
 
P4 jetDirFromTracks (const P4 &jet, const jpt::MatchedTracks &pions, const jpt::MatchedTracks &muons, const jpt::MatchedTracks &elecs) const
 Calculates vectorial correction using total track 3-momentum. More...
 
 JetPlusTrackCorrector ()
 Default constructor. More...
 
virtual bool jetTrackAssociation (const reco::Jet &, const edm::Event &, const edm::EventSetup &, jpt::JetTracks &) const
 Associates tracks to jets (overriden in derived class) More...
 
bool jtaUsingEventData (const reco::Jet &, const edm::Event &, jpt::JetTracks &) const
 JTA using collections from event. More...
 
const jpt::MapleakageMap () const
 
bool matchElectrons (TrackRefs::const_iterator, const edm::Handle< RecoElectrons > &, const edm::Handle< RecoElectronIds > &) const
 Matches tracks to RECO electrons. More...
 
bool matchMuons (TrackRefs::const_iterator, const edm::Handle< RecoMuons > &) const
 Matches tracks to RECO muons. More...
 
virtual void matchTracks (const jpt::JetTracks &, const edm::Event &, jpt::MatchedTracks &pions, jpt::MatchedTracks &muons, jpt::MatchedTracks &elecs) const
 Matches tracks to different particle types (overriden in derived class) More...
 
P4 muonCorrection (const P4 &jet, const TrackRefs &muons, bool in_cone_at_vertex, bool in_cone_at_calo_face) const
 Calculates individual muons corrections. More...
 
P4 pionCorrection (const P4 &jet, const TrackRefs &pions, jpt::Efficiency &, bool in_cone_at_vertex, bool in_cone_at_calo_face) const
 Calculates individual pion corrections. More...
 
P4 pionEfficiency (const P4 &jet, const jpt::Efficiency &, bool in_cone_at_calo_face) const
 Correction to be applied using tracking efficiency. More...
 
void rebuildJta (const reco::Jet &, const JetTracksAssociations &, TrackRefs &included, TrackRefs &excluded) const
 Rebuild jet-track association. More...
 
const jpt::MapresponseMap () const
 
bool tracksInCalo (const jpt::MatchedTracks &pions, const jpt::MatchedTracks &muons, const jpt::MatchedTracks &elecs) const
 Determines if any tracks in cone at CaloFace. More...
 

Protected Attributes

double dzVertexCut_
 
const jpt::Map efficiency_
 
double elecMass_
 
edm::InputTag electronIds_
 
edm::InputTag electrons_
 
int jetSplitMerge_
 
edm::InputTag jetTracksAtCalo_
 
edm::InputTag jetTracksAtVertex_
 
const jpt::Map leakage_
 
double maxEta_
 
double muonMass_
 
edm::InputTag muons_
 
double pionMass_
 
double ptErrorQuality_
 
const jpt::Map response_
 
edm::InputTag srcPVs_
 
float theResponseOfChargedWithEff
 
float theResponseOfChargedWithoutEff
 
float theSumEnergyWithEff
 
float theSumEnergyWithoutEff
 
float theSumPtWithEff
 
float theSumPtWithoutEff
 
reco::TrackBase::TrackQuality trackQuality_
 
bool useEff_
 
bool useElecs_
 
bool useInConeTracks_
 
bool useMuons_
 
bool useOutOfConeTracks_
 
bool useOutOfVertexTracks_
 
bool usePions_
 
bool useTrackQuality_
 
bool vecResponse_
 
bool vectorial_
 
bool verbose_
 
reco::Particle::Point vertex_
 

Detailed Description

Jet energy correction algorithm using tracks.

Definition at line 176 of file JetPlusTrackCorrector.h.

Member Typedef Documentation

Definition at line 263 of file JetPlusTrackCorrector.h.

Definition at line 189 of file JetPlusTrackCorrector.h.

Definition at line 190 of file JetPlusTrackCorrector.h.

Definition at line 191 of file JetPlusTrackCorrector.h.

Definition at line 262 of file JetPlusTrackCorrector.h.

Definition at line 261 of file JetPlusTrackCorrector.h.

Get reponses.

Definition at line 260 of file JetPlusTrackCorrector.h.

Definition at line 264 of file JetPlusTrackCorrector.h.

Constructor & Destructor Documentation

JetPlusTrackCorrector::JetPlusTrackCorrector ( const edm::ParameterSet pset)

Constructor.

Definition at line 21 of file JetPlusTrackCorrector.cc.

References electrons_, edm::ParameterSet::getParameter(), jetSplitMerge_, jetTracksAtCalo_, jetTracksAtVertex_, LogDebug, muons_, useEff_, useElecs_, useInConeTracks_, useMuons_, useOutOfConeTracks_, useOutOfVertexTracks_, usePions_, useTrackQuality_, vecResponse_, vectorial_, and verbose_.

22  : verbose_( pset.getParameter<bool>("Verbose") ),
23  vectorial_( pset.getParameter<bool>("VectorialCorrection") ),
24  vecResponse_( pset.getParameter<bool>("UseResponseInVecCorr") ),
25  useInConeTracks_( pset.getParameter<bool>("UseInConeTracks") ),
26  useOutOfConeTracks_( pset.getParameter<bool>("UseOutOfConeTracks") ),
27  useOutOfVertexTracks_( pset.getParameter<bool>("UseOutOfVertexTracks") ),
28  usePions_( pset.getParameter<bool>("UsePions") ),
29  useEff_( pset.getParameter<bool>("UseEfficiency") ),
30  useMuons_( pset.getParameter<bool>("UseMuons") ),
31  useElecs_( pset.getParameter<bool>("UseElectrons") ),
32  useTrackQuality_( pset.getParameter<bool>("UseTrackQuality") ),
33  jetTracksAtVertex_( pset.getParameter<edm::InputTag>("JetTracksAssociationAtVertex") ),
34  jetTracksAtCalo_( pset.getParameter<edm::InputTag>("JetTracksAssociationAtCaloFace") ),
35  jetSplitMerge_( pset.getParameter<int>("JetSplitMerge") ),
36  srcPVs_(pset.getParameter<edm::InputTag>("srcPVs") ),
37  ptErrorQuality_( pset.getParameter<double>("PtErrorQuality") ),
38  dzVertexCut_( pset.getParameter<double>("DzVertexCut") ),
39  muons_( pset.getParameter<edm::InputTag>("Muons") ),
40  electrons_( pset.getParameter<edm::InputTag>("Electrons") ),
41  electronIds_( pset.getParameter<edm::InputTag>("ElectronIds") ),
42  trackQuality_( reco::TrackBase::qualityByName( pset.getParameter<std::string>("TrackQuality") ) ),
43  response_( Map( pset.getParameter<std::string>("ResponseMap"), verbose_ ) ),
44  efficiency_( Map( pset.getParameter<std::string>("EfficiencyMap"), verbose_ ) ),
45  leakage_( Map( pset.getParameter<std::string>("LeakageMap"), verbose_ ) ),
46  pionMass_(0.140),
47  muonMass_(0.105),
48  elecMass_(0.000511),
49  maxEta_( pset.getParameter<double>("MaxJetEta") )
50 {
51 
52  if ( verbose_ ) {
53  std::stringstream ss;
54  ss << "[JetPlusTrackCorrector::" << __func__ << "] Configuration for JPT corrector: " << std::endl
55  << " Particles" << std::endl
56  << " UsePions : " << ( usePions_ ? "true" : "false" ) << std::endl
57  << " UseMuons : " << ( useMuons_ ? "true" : "false" ) << std::endl
58  << " UseElecs : " << ( useElecs_ ? "true" : "false" ) << std::endl
59  << " Corrections" << std::endl
60  << " UseInConeTracks : " << ( useInConeTracks_ ? "true" : "false" ) << std::endl
61  << " UseOutOfConeTracks : " << ( useOutOfConeTracks_ ? "true" : "false" ) << std::endl
62  << " UseOutOfVertexTracks : " << ( useOutOfVertexTracks_ ? "true" : "false" ) << std::endl
63  << " ResponseMap : " << pset.getParameter<std::string>("ResponseMap") << std::endl
64  << " Efficiency" << std::endl
65  << " UsePionEfficiency : " << ( useEff_ ? "true" : "false" ) << std::endl
66  << " EfficiencyMap : " << pset.getParameter<std::string>("EfficiencyMap") << std::endl
67  << " LeakageMap : " << pset.getParameter<std::string>("LeakageMap") << std::endl
68  << " Tracks" << std::endl
69  << " JetTracksAtVertex : " << jetTracksAtVertex_ << std::endl
70  << " JetTracksAtCalo : " << jetTracksAtCalo_ << std::endl
71  << " JetSplitMerge : " << jetSplitMerge_ << std::endl
72  << " UseTrackQuality : " << ( useTrackQuality_ ? "true" : "false" ) << std::endl
73  << " Collections" << std::endl
74  << " Muons : " << muons_ << std::endl
75  << " Electrons : " << electrons_ << std::endl
76  << " Vectorial" << std::endl
77  << " UseTracksAndResponse : " << ( ( vectorial_ && vecResponse_ ) ? "true" : "false" ) << std::endl
78  << " UseTracksOnly : " << ( ( vectorial_ && !vecResponse_ ) ? "true" : "false" );
79  LogDebug("JetPlusTrackCorrector") << ss.str();
80  //std::cout << ss.str() << std::endl;
81  }
82 
83  if ( !useInConeTracks_ ||
86  std::stringstream ss;
87  ss << "[JetPlusTrackCorrector::" << __func__ << "]"
88  << " You are using JPT algorithm in a non-standard way!" << std::endl
89  << " UseInConeTracks : " << ( useInConeTracks_ ? "true" : "false" ) << std::endl
90  << " UseOutOfConeTracks : " << ( useOutOfConeTracks_ ? "true" : "false" ) << std::endl
91  << " UseOutOfVertexTracks : " << ( useOutOfVertexTracks_ ? "true" : "false" );
92  edm::LogWarning("JetPlusTrackCorrector") << ss.str();
93  }
94 }
#define LogDebug(id)
T getParameter(std::string const &) const
Container class for response &amp; efficiency maps.
static TrackQuality qualityByName(const std::string &name)
Definition: TrackBase.cc:46
reco::TrackBase::TrackQuality trackQuality_
JetPlusTrackCorrector::~JetPlusTrackCorrector ( )
virtual

Destructor.

Definition at line 98 of file JetPlusTrackCorrector.cc.

98 {;}
JetPlusTrackCorrector::JetPlusTrackCorrector ( )
inlineprotected

Default constructor.

Definition at line 380 of file JetPlusTrackCorrector.h.

380 {;}

Member Function Documentation

JetPlusTrackCorrector::P4 JetPlusTrackCorrector::calculateCorr ( const P4 jet,
const TrackRefs tracks,
jpt::Efficiency eff,
bool  in_cone_at_vertex,
bool  in_cone_at_calo_face,
double  mass,
bool  is_pion,
double  mip 
) const
protected

Generic method to calculates 4-momentum correction to be applied.

Definition at line 809 of file JetPlusTrackCorrector.cc.

References jpt::Efficiency::addE(), edm::RefVector< C, T, F >::begin(), correction(), edm::RefVector< C, T, F >::empty(), edm::RefVector< C, T, F >::end(), relval_parameters_module::energy, eta(), jpt::Map::etaBin(), SurfaceOrientation::inner, edm::isDebugEnabled(), LogDebug, jpt::Map::nEtaBins(), jpt::Map::nPtBins(), SurfaceOrientation::outer, ExpressReco_HICollisions_FallBack::pt, jpt::Map::ptBin(), jpt::Efficiency::reset(), response_, mathSSE::sqrt(), cond::rpcobtemp::temp, theResponseOfChargedWithEff, theResponseOfChargedWithoutEff, theSumEnergyWithEff, theSumEnergyWithoutEff, theSumPtWithEff, theSumPtWithoutEff, jpt::Map::value(), vecResponse_, vectorial_, and verbose_.

Referenced by elecCorrection(), muonCorrection(), and pionCorrection().

816  {
817 
818  // Correction to be applied to jet 4-momentum
819  P4 correction;
820 
821 /*
822  std::cout<<" >>>>> Jet "<<jet.pt()<<" "<<jet.eta()<<" "<<jet.phi()<<" Number of tracks "<<tracks.size()<<" Pions? "<<is_pion<<" InVert "<<in_cone_at_vertex<<
823  " InCalo "<<in_cone_at_calo_face<<std::endl;
824 
825  std::cout<<" calculateCorr Start::Corrections for jet "<< theResponseOfChargedWithEff <<" "<<
826  theResponseOfChargedWithoutEff <<" "<<
827  theSumPtWithEff <<" "<<
828  theSumPtWithoutEff <<" "<<
829  theSumEnergyWithEff <<" "<<
830  theSumEnergyWithoutEff <<std::endl;
831 */
832 
833 
834  // Reset efficiency container
835  eff.reset();
836 
837  double theSumResp = 0;
838  double theSumPt = 0;
839  double theSumEnergy = 0;
840 
841 
842  // Iterate through tracks
843  if ( !tracks.empty() ) {
844  TrackRefs::iterator itrk = tracks.begin();
845  TrackRefs::iterator jtrk = tracks.end();
846 
847  for ( ; itrk != jtrk; ++itrk ) {
848 
849  // Ignore high-pt tracks (only when in-cone and not a mip)
850  if ( in_cone_at_calo_face && is_pion && (*itrk)->pt() >= 50. ) { continue; }
851 
852  // Inner track 4-momentum
853  P4 inner;
854  if ( vectorial_ && vecResponse_ ) {
855  inner = PtEtaPhiM( (*itrk)->pt(), (*itrk)->eta(), (*itrk)->phi(), mass );
856  } else {
857  double energy = sqrt( (*itrk)->px() * (*itrk)->px() +
858  (*itrk)->py() * (*itrk)->py() +
859  (*itrk)->pz() * (*itrk)->pz() +
860  mass * mass );
861  inner = ( jet.energy() > 0. ? energy / jet.energy() : 1. ) * jet;
862  }
863 
864  // Add track momentum (if in-cone at vertex)
865  if ( in_cone_at_vertex ) { correction += inner; }
866 
867  // Find appropriate eta/pt bin for given track
868  double eta = fabs( (*itrk)->eta() );
869  double pt = fabs( (*itrk)->pt() );
870  uint32_t ieta = response_.etaBin( eta );
871  uint32_t ipt = response_.ptBin( pt );
872 
873  // Check bins (not for mips)
874  if ( is_pion && ( ieta == response_.nEtaBins() || ipt == response_.nPtBins() ) ) { continue; }
875 
876  // Outer track 4-momentum
877  P4 outer;
878  if ( in_cone_at_calo_face ) {
879  if ( vectorial_ && vecResponse_ ) {
880  // Build 4-momentum from outer track (SHOULD USE IMPACT POINT?!)
881  double outer_pt = (*itrk)->pt();
882  double outer_eta = (*itrk)->eta();
883  double outer_phi = (*itrk)->phi();
884  if ( (*itrk)->extra().isNonnull() ) {
885  outer_pt = (*itrk)->pt();
886  outer_eta = (*itrk)->outerPosition().eta(); //@@ outerMomentum().eta()
887  outer_phi = (*itrk)->outerPosition().phi(); //@@ outerMomentum().phi()
888  }
889  outer = PtEtaPhiM( outer_pt, outer_eta, outer_phi, mass );
890  // Check if mip or not
891  if ( !is_pion ) { outer *= ( outer.energy() > 0. ? mip / outer.energy() : 1. ); } //@@ Scale to mip energy
892  else { outer *= ( outer.energy() > 0. ? inner.energy() / outer.energy() : 1. ); } //@@ Scale to inner track energy
893  } else {
894  // Check if mip or not
895  if ( !is_pion ) { outer = ( jet.energy() > 0. ? mip / jet.energy() : 1. ) * jet; } //@@ Jet 4-mom scaled by mip energy
896  else { outer = inner; } //@@ Set to inner track 4-momentum
897  }
898  if ( is_pion ) { outer *= response_.value(ieta,ipt); } //@@ Scale by pion response
899  correction -= outer; //@@ Subtract
900 
901 // Calculate the sum of responses
902  if( is_pion ) {theSumResp += response_.value(ieta,ipt);} else {theSumResp += mip;}
903  }
904 
905 // Calculate the sum of pt and energies
906  theSumPt += inner.pt();
907  theSumEnergy += inner.energy();
908 
909  // Record inner track energy for pion efficiency correction
910  if ( is_pion ) { eff.addE( ieta, ipt, inner.energy() ); }
911 
912  // Debug
913  if ( verbose_ && edm::isDebugEnabled() ) {
914  std::stringstream temp;
915  temp << " Response[" << ieta << "," << ipt << "]";
916  std::stringstream ss;
917  ss << "[JetPlusTrackCorrector::" << __func__ << "]" << std::endl
918  << " Track eta / pt : " << eta << " / " << pt << std::endl
919  << temp.str() << std::setw(21-temp.str().size()) << " : "
920  << response_.value(ieta,ipt) << std::endl
921  << " Track momentum added : " << inner.energy() << std::endl
922  << " Response subtracted : " << outer.energy() << std::endl
923  << " Energy correction : " << correction.energy();
924  LogDebug("JetPlusTrackCorrector") << ss.str();
925  }
926 
927  } // loop through tracks
928  } // ntracks != 0
929 
930  if( in_cone_at_vertex ) {
931 
932  theResponseOfChargedWithEff += theSumResp;
933  theResponseOfChargedWithoutEff += theSumResp;
934  theSumPtWithEff += theSumPt;
935  theSumPtWithoutEff += theSumPt;
936  theSumEnergyWithEff += theSumEnergy;
937  theSumEnergyWithoutEff += theSumEnergy;
938 
939  }
940 /*
941  std::cout<<" calculateCorr End::Corrections for jet "<< theResponseOfChargedWithEff <<" "<<
942  theResponseOfChargedWithoutEff <<" "<<
943  theSumPtWithEff <<" "<<
944  theSumPtWithoutEff <<" "<<
945  theSumEnergyWithEff <<" "<<
946  theSumEnergyWithoutEff <<std::endl;
947 */
948  return correction;
949 
950 }
#define LogDebug(id)
math::XYZTLorentzVector P4
bool isDebugEnabled()
double correction(const reco::Jet &, const reco::Jet &, const edm::Event &, const edm::EventSetup &, P4 &) const
Vectorial correction method (corrected 4-momentum passed by reference)
uint32_t nEtaBins() const
void addE(uint32_t eta_bin, uint32_t pt_bin, double energy)
uint32_t etaBin(double eta) const
T eta() const
T sqrt(T t)
Definition: SSEVec.h:28
refhelper::RefVectorTrait< TrackCollection, T, F >::iterator_type iterator
Definition: RefVector.h:40
tuple tracks
Definition: testEve_cfg.py:39
uint32_t nPtBins() const
uint32_t ptBin(double pt) const
double value(uint32_t eta_bin, uint32_t pt_bin) const
math::PtEtaPhiMLorentzVectorD PtEtaPhiM
bool JetPlusTrackCorrector::canCorrect ( const reco::Jet jet) const
inline

Can jet be JPT-corrected?

Definition at line 448 of file JetPlusTrackCorrector.h.

References reco::LeafCandidate::eta(), and maxEta_.

Referenced by correction().

448 { return ( fabs( jet.eta() ) <= maxEta_ ); }
virtual double eta() const
momentum pseudorapidity
double JetPlusTrackCorrector::checkScale ( const P4 jet,
P4 corrected 
) const
inlineprotected

Check corrected 4-momentum does not give negative scale.

Definition at line 474 of file JetPlusTrackCorrector.h.

References metsig::jet.

Referenced by correction().

474  {
475  if ( jet.energy() > 0. && ( corrected.energy() / jet.energy() ) < 0. ) {
476  corrected = jet;
477  }
478  return corrected.energy() / jet.energy();
479 }
double JetPlusTrackCorrector::correctAA ( const reco::Jet fJet,
const reco::TrackRefVector trBgOutOfVertex,
double &  mConeSize 
) const

For AA - correct in tracker.

Definition at line 1183 of file JetPlusTrackCorrector.cc.

References edm::RefVector< C, T, F >::begin(), edm::RefVector< C, T, F >::end(), reco::LeafCandidate::energy(), eta(), reco::LeafCandidate::eta(), jpt::Map::etaBin(), M_PI, jpt::Map::nEtaBins(), jpt::Map::nPtBins(), ExpressReco_HICollisions_FallBack::pt, jpt::Map::ptBin(), response_, edm::RefVector< C, T, F >::size(), mathSSE::sqrt(), and jpt::Map::value().

1183  {
1184 double mScale = 1.;
1185 double NewResponse = fJet.energy();
1186 if( trBgOutOfVertex.size() == 0 ) return mScale;
1187  double EnergyOfBackgroundCharged = 0.;
1188  double ResponseOfBackgroundCharged = 0.;
1189  for( reco::TrackRefVector::iterator iBgtV = trBgOutOfVertex.begin(); iBgtV != trBgOutOfVertex.end(); iBgtV++)
1190  {
1191  // Temporary solution>>>>>> Remove tracks with pt>50 GeV
1192  if( (**iBgtV).pt() >= 50. ) continue;
1193  //response_.value(ieta,ipt);
1194  double eta = fabs( (**iBgtV).eta() );
1195  double pt = fabs( (**iBgtV).pt() );
1196  uint32_t ieta = response_.etaBin( eta );
1197  uint32_t ipt = response_.ptBin( pt );
1198 
1199  if(fabs(fJet.eta() -(**iBgtV).eta()) > mConeSize) continue;
1200 
1201  // Check bins (not for mips)
1202  if ( ieta == response_.nEtaBins() || ipt == response_.nPtBins() ) { continue; }
1203  double echarBg=sqrt((**iBgtV).px()*(**iBgtV).px()+(**iBgtV).py()*(**iBgtV).py()+(**iBgtV).pz()*(**iBgtV).pz()+0.14*0.14);
1204  ResponseOfBackgroundCharged += echarBg*response_.value(ieta,ipt);
1205  EnergyOfBackgroundCharged += echarBg;
1206  } // BG tracks
1207 
1208  double SquareEtaRingWithoutJets = 4*(M_PI*mConeSize - mConeSize*mConeSize);
1209  EnergyOfBackgroundCharged = EnergyOfBackgroundCharged/SquareEtaRingWithoutJets;
1210  ResponseOfBackgroundCharged = ResponseOfBackgroundCharged/SquareEtaRingWithoutJets;
1211  EnergyOfBackgroundCharged = M_PI*mConeSize*mConeSize*EnergyOfBackgroundCharged;
1212  ResponseOfBackgroundCharged = M_PI*mConeSize*mConeSize*ResponseOfBackgroundCharged;
1213  NewResponse = NewResponse - EnergyOfBackgroundCharged + ResponseOfBackgroundCharged;
1214  mScale = NewResponse/fJet.energy();
1215  if(mScale <0.) mScale=1;
1216 return mScale;
1217 }
uint32_t nEtaBins() const
const_iterator end() const
Termination of iteration.
Definition: RefVector.h:242
uint32_t etaBin(double eta) const
T eta() const
virtual double eta() const
momentum pseudorapidity
const_iterator begin() const
Initialize an iterator over the RefVector.
Definition: RefVector.h:237
virtual double energy() const
energy
T sqrt(T t)
Definition: SSEVec.h:28
#define M_PI
Definition: BFit3D.cc:3
uint32_t nPtBins() const
uint32_t ptBin(double pt) const
size_type size() const
Size of the RefVector.
Definition: RefVector.h:85
double value(uint32_t eta_bin, uint32_t pt_bin) const
double JetPlusTrackCorrector::correction ( const reco::Jet fJet,
const reco::Jet fJetcalo,
const edm::Event event,
const edm::EventSetup setup,
P4 corrected 
) const

Vectorial correction method (corrected 4-momentum passed by reference)

Definition at line 102 of file JetPlusTrackCorrector.cc.

References canCorrect(), checkScale(), elecCorrection(), reco::LeafCandidate::energy(), reco::LeafCandidate::et(), reco::LeafCandidate::eta(), jetDirFromTracks(), reco::LeafCandidate::mass(), matchTracks(), muonCorrection(), ExpressReco_HICollisions_FallBack::muons, convertSQLiteXML::ok, reco::LeafCandidate::p4(), reco::LeafCandidate::phi(), pionCorrection(), reco::LeafCandidate::pt(), reco::LeafCandidate::px(), reco::LeafCandidate::py(), reco::LeafCandidate::pz(), theResponseOfChargedWithEff, theResponseOfChargedWithoutEff, theSumEnergyWithEff, theSumEnergyWithoutEff, theSumPtWithEff, theSumPtWithoutEff, useElecs_, useMuons_, usePions_, vecResponse_, vectorial_, and verbose_.

Referenced by calculateCorr(), correction(), and pionEfficiency().

106 {
107 
108 // std::cout<<" JetPlusTrackCorrector::correction "<<std::endl;
109 
112  theSumPtWithEff = 0.;
113  theSumPtWithoutEff = 0.;
114  theSumEnergyWithEff = 0.;
116 
117  // Corrected 4-momentum for jet
118  corrected = fJet.p4();
119 
120  // Check if jet can be JPT-corrected
121  if ( !canCorrect(fJet) ) { return 1.; }
122 
123 // std::cout<<" Jet can be corrected "<<std::endl;
124 
125  // Match tracks to different particle types
126  MatchedTracks pions;
128  MatchedTracks elecs;
129  bool ok = matchTracks( fJetcalo, event, setup, pions, muons, elecs );
130  if ( !ok ) { return 1.; }
131 
132  // std::cout<<" Tracks are matched "<<std::endl;
133 
134  // Debug
135  if ( verbose_ ) {
136  edm::LogInfo("JetPlusTrackCorrector")
137  << "[JetPlusTrackCorrector::" << __func__ << "]"
138  << " Applying JPT corrections...";
139  }
140 
141  // Pion corrections (both scalar and vectorial)
142  if ( usePions_ ) { corrected += pionCorrection( fJet.p4(), pions ); }
143 
144  // Muon corrections (both scalar and vectorial)
145  if ( useMuons_ ) { corrected += muonCorrection( fJet.p4(), muons ); }
146 
147  // Electrons corrections (both scalar and vectorial)
148  if ( useElecs_ ) { corrected += elecCorrection( fJet.p4(), elecs ); }
149 
150  // Define jet direction using total 3-momentum of tracks (overrides above)
151  if ( vectorial_ && !vecResponse_ ) { corrected = jetDirFromTracks( corrected, pions, muons, elecs ); }
152 
153  // Check if corrected 4-momentum gives negative scale
154  double scale = checkScale( fJet.p4(), corrected );
155 
156  // Debug
157  if ( verbose_ ) {
158  std::stringstream ss;
159  ss << "Total correction:" << std::endl
160  << std::fixed << std::setprecision(6)
161  << " Uncorrected (Px,Py,Pz,E) : "
162  << "(" << fJet.px()
163  << "," << fJet.py()
164  << "," << fJet.pz()
165  << "," << fJet.energy()
166  << ")" << std::endl
167  << " Corrected (Px,Py,Pz,E) : "
168  << "(" << corrected.px()
169  << "," << corrected.py()
170  << "," << corrected.pz()
171  << "," << corrected.energy()
172  << ")" << std::endl
173  << " Uncorrected (Pt,Eta,Phi,M) : "
174  << "(" << fJet.pt()
175  << "," << fJet.eta()
176  << "," << fJet.phi()
177  << "," << fJet.mass()
178  << ")" << std::endl
179  << " Corrected (Pt,Eta,Phi,M) : "
180  << "(" << corrected.pt()
181  << "," << corrected.eta()
182  << "," << corrected.phi()
183  << "," << corrected.mass()
184  << ")" << std::endl
185  << " Scalar correction to E : " << scale << std::endl
186  << " Scalar correction to Et : " << ( fJet.et() > 0. ? corrected.Et() / fJet.et() : 1. );// << std::endl
187  edm::LogVerbatim("JetPlusTrackCorrector") << ss.str();
188  }
189 
190 // std::cout << " mScale= " << scale
191 // << " NewResponse " << corrected.energy()
192 // << " Jet energy " << fJet.energy()
193 // << " event " << event.id().event() << std::endl;
194 
195 /*
196  std::cout<<" Correction::Corrections for jet "<< theResponseOfChargedWithEff <<" "<<
197  theResponseOfChargedWithoutEff <<" "<<
198  theSumPtWithEff <<" "<<
199  theSumPtWithoutEff <<" "<<
200  theSumEnergyWithEff <<" "<<
201  theSumEnergyWithoutEff <<std::endl;
202 */
203 
204 
205  // Return energy correction
206  return scale;
207 
208 }
virtual double et() const
transverse energy
P4 pionCorrection(const P4 &jet, const jpt::MatchedTracks &pions) const
Calculates corrections to be applied using pions.
double checkScale(const P4 &jet, P4 &corrected) const
Check corrected 4-momentum does not give negative scale.
virtual double eta() const
momentum pseudorapidity
P4 muonCorrection(const P4 &jet, const jpt::MatchedTracks &muons) const
Calculates correction to be applied using muons.
virtual double mass() const
mass
virtual double energy() const
energy
bool canCorrect(const reco::Jet &) const
Can jet be JPT-corrected?
P4 elecCorrection(const P4 &jet, const jpt::MatchedTracks &elecs) const
Calculates correction to be applied using electrons.
virtual double px() const
x coordinate of momentum vector
virtual double pt() const
transverse momentum
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.
bool matchTracks(const reco::Jet &, const edm::Event &, const edm::EventSetup &, jpt::MatchedTracks &pions, jpt::MatchedTracks &muons, jpt::MatchedTracks &elecs) const
Matches tracks to different particle types.
P4 jetDirFromTracks(const P4 &jet, const jpt::MatchedTracks &pions, const jpt::MatchedTracks &muons, const jpt::MatchedTracks &elecs) const
Calculates vectorial correction using total track 3-momentum.
virtual double phi() const
momentum azimuthal angle
virtual const LorentzVector & p4() const
four-momentum Lorentz vector
virtual double py() const
y coordinate of momentum vector
double JetPlusTrackCorrector::correction ( const reco::Jet fJet,
const reco::Jet fJetcalo,
const edm::Event event,
const edm::EventSetup setup 
) const
inline

Scalar correction method.

Definition at line 439 of file JetPlusTrackCorrector.h.

References correction().

441  {
442  P4 not_used_for_scalar_correction;
443  return correction( fJet, fJetcalo, event, setup, not_used_for_scalar_correction );
444 }
math::XYZTLorentzVector P4
double correction(const reco::Jet &, const reco::Jet &, const edm::Event &, const edm::EventSetup &, P4 &) const
Vectorial correction method (corrected 4-momentum passed by reference)
double JetPlusTrackCorrector::correction ( const reco::Jet jet) const

Correction method (not used)

Definition at line 212 of file JetPlusTrackCorrector.cc.

212  {
213  edm::LogError("JetPlusTrackCorrector")
214  << "JetPlusTrackCorrector can be run on entire event only";
215  return 1.;
216 }
double JetPlusTrackCorrector::correction ( const P4 jet) const

Correction method (not used)

Definition at line 220 of file JetPlusTrackCorrector.cc.

220  {
221  edm::LogError("JetPlusTrackCorrector")
222  << "JetPlusTrackCorrector can be run on entire event only";
223  return 1.;
224 }
const jpt::Map & JetPlusTrackCorrector::efficiencyMap ( ) const
inlineprotected

Definition at line 482 of file JetPlusTrackCorrector.h.

References efficiency_.

Referenced by elecCorrection(), muonCorrection(), and pionCorrection().

482 { return efficiency_; }
JetPlusTrackCorrector::P4 JetPlusTrackCorrector::elecCorrection ( const P4 jet,
const jpt::MatchedTracks elecs 
) const

Calculates correction to be applied using electrons.

Definition at line 705 of file JetPlusTrackCorrector.cc.

References jpt::MatchedTracks::inVertexInCalo_, jpt::MatchedTracks::inVertexOutOfCalo_, jpt::MatchedTracks::outOfVertexInCalo_, edm::RefVector< C, T, F >::size(), and verbose_.

Referenced by correction().

706  {
707 
708  P4 null; //@@ null 4-momentum
709 
710  if ( verbose_ ) {
711  std::stringstream ss;
712  ss << " Electron corrections:" << std::endl
713  << " In/In : " << "(" << elecs.inVertexInCalo_.size() << ") " << null.energy() << std::endl
714  << " In/Out : " << "(" << elecs.inVertexOutOfCalo_.size() << ") " << null.energy() << std::endl
715  << " Out/In : " << "(" << elecs.outOfVertexInCalo_.size() << ") " << null.energy();
716  edm::LogVerbatim("JetPlusTrackCorrector") << ss.str();
717  }
718 
719  return null; //@@ to be implemented
720 
721 }
math::XYZTLorentzVector P4
reco::TrackRefVector inVertexInCalo_
reco::TrackRefVector inVertexOutOfCalo_
reco::TrackRefVector outOfVertexInCalo_
size_type size() const
Size of the RefVector.
Definition: RefVector.h:85
JetPlusTrackCorrector::P4 JetPlusTrackCorrector::elecCorrection ( const P4 jet,
const TrackRefs elecs,
bool  in_cone_at_vertex,
bool  in_cone_at_calo_face 
) const
inlineprotected

Calculates individual electron corrections.

Definition at line 466 of file JetPlusTrackCorrector.h.

References calculateCorr(), efficiencyMap(), elecMass_, leakageMap(), and responseMap().

469  {
470  static jpt::Efficiency not_used( responseMap(), efficiencyMap(), leakageMap() );
471  return calculateCorr( jet, elecs, not_used, in_cone_at_vertex, in_cone_at_calo_face, elecMass_, false, 0. );
472 }
const jpt::Map & responseMap() const
const jpt::Map & efficiencyMap() const
const jpt::Map & leakageMap() const
P4 calculateCorr(const P4 &jet, const TrackRefs &, jpt::Efficiency &, bool in_cone_at_vertex, bool in_cone_at_calo_face, double mass, bool is_pion, double mip) const
Generic method to calculates 4-momentum correction to be applied.
Generic container class.
bool JetPlusTrackCorrector::eventRequired ( ) const
inline

Returns true.

Definition at line 446 of file JetPlusTrackCorrector.h.

446 { return true; }
void JetPlusTrackCorrector::excludeJta ( const reco::Jet fJet,
const JetTracksAssociations jtV0,
TrackRefs included,
const TrackRefs excluded 
) const
protected

Exclude jet-track association.

Definition at line 1148 of file JetPlusTrackCorrector.cc.

References edm::RefVector< C, T, F >::begin(), edm::RefVector< C, T, F >::clear(), edm::RefVector< C, T, F >::end(), spr::find(), reco::JetTracksAssociation::getValue(), jetSplitMerge_, edm::RefVector< C, T, F >::push_back(), edm::RefVector< C, T, F >::size(), and testEve_cfg::tracks.

Referenced by jtaUsingEventData().

1151  {
1152 
1153  //std::cout<<" NEW2" << std::endl;
1154 
1155  tracksthis = reco::JetTracksAssociation::getValue(jtV0,fJet);
1156  if(Excl.size() == 0) return;
1157  if(jetSplitMerge_<0) return;
1158 
1159  TrackRefs tracks = tracksthis;
1160  tracksthis.clear();
1161 
1162  //std::cout<<" Size of initial vector "<<tracks.size()<<" "<<fJet.et()<<" "<<fJet.eta()<<" "<<fJet.phi()<<std::endl;
1163 
1164  for(TrackRefs::iterator it = tracks.begin(); it != tracks.end(); it++ )
1165  {
1166 
1167  //std::cout<<" Track at calo surface "
1168  //<<" Track "<<(**it).eta()<<" "<<(**it).phi()<<std::endl;
1169  TrackRefs::iterator itold = find(Excl.begin(),Excl.end(),(*it));
1170  if(itold == Excl.end()) {
1171  tracksthis.push_back (*it);
1172  }
1173  //else { std::cout<<"Exclude "<<(**it).eta()<<" "<<(**it).phi()<<std::endl; }
1174 
1175  }
1176 
1177  //std::cout<<" Size of calo tracks "<<tracksthis.size()<<std::endl;
1178 
1179  return;
1180 
1181 }
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:7
reco::TrackRefVector TrackRefs
refhelper::RefVectorTrait< TrackCollection, T, F >::iterator_type iterator
Definition: RefVector.h:40
const reco::TrackRefVector & getValue(const Container &, const reco::JetBaseRef &)
get value for the association. Throw exception if no association found
tuple tracks
Definition: testEve_cfg.py:39
bool JetPlusTrackCorrector::failTrackQuality ( TrackRefs::const_iterator  itrk) const
protected

Check on track quality.

Definition at line 528 of file JetPlusTrackCorrector.cc.

References dzVertexCut_, ptErrorQuality_, trackQuality_, useTrackQuality_, and vertex_.

Referenced by matchTracks().

528  {
529 // if ( useTrackQuality_ && !(*itrk)->quality(trackQuality_) ) { return true; }
530 // else { return false; }
531 
532  bool retcode = false;
533  if ( useTrackQuality_ && !(*itrk)->quality(trackQuality_) ) { retcode = true; return retcode;}
534  if(((*itrk)->ptError()/(*itrk)->pt()) > ptErrorQuality_) {
535 // std::cout<<" failTrackQuality::Pt track "<<(*itrk)->pt()<<" "<<(*itrk)->ptError()/(*itrk)->pt()<<
536 // " Cut "<<ptErrorQuality_<<std::endl;
537  retcode = true; return retcode;
538  }
539  if(fabs((*itrk)->dz(vertex_)) > dzVertexCut_) {
540 // std::cout<<" failTrackQuality::Pt track::vertex "<<(*itrk)->pt()<<" dz_vertex "<<(*itrk)->dz(vertex_)<<
541 // "Track vz "<<(*itrk)->vz()<<" vertex "<<vertex_<<" Cut "<<dzVertexCut_<<" Pt cut "<<(*itrk)->ptError()/(*itrk)->pt()<<std::endl;
542  retcode = true; return retcode;
543  }
544  return retcode;
545 }
reco::Particle::Point vertex_
reco::TrackBase::TrackQuality trackQuality_
bool JetPlusTrackCorrector::findTrack ( const jpt::JetTracks jet_tracks,
TrackRefs::const_iterator  itrk,
TrackRefs::iterator it 
) const
protected

Find track in JetTracks collection.

Definition at line 549 of file JetPlusTrackCorrector.cc.

References edm::RefVector< C, T, F >::begin(), jpt::JetTracks::caloFace_, edm::RefVector< C, T, F >::end(), and spr::find().

Referenced by matchTracks().

551  {
552  it = find( jet_tracks.caloFace_.begin(),
553  jet_tracks.caloFace_.end(),
554  *itrk );
555  if ( it != jet_tracks.caloFace_.end() ) { return true; }
556  else { return false; }
557 }
const_iterator end() const
Termination of iteration.
Definition: RefVector.h:242
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:7
const_iterator begin() const
Initialize an iterator over the RefVector.
Definition: RefVector.h:237
reco::TrackRefVector caloFace_
bool JetPlusTrackCorrector::findTrack ( const jpt::MatchedTracks pions,
const jpt::MatchedTracks muons,
const jpt::MatchedTracks electrons,
TrackRefs::const_iterator  itrk 
) const
protected

Find track in MatchedTracks collections.

Definition at line 561 of file JetPlusTrackCorrector.cc.

References edm::RefVector< C, T, F >::begin(), edm::RefVector< C, T, F >::end(), spr::find(), and jpt::MatchedTracks::inVertexInCalo_.

564  {
566  pions.inVertexInCalo_.end(),
567  *itrk );
569  muons.inVertexInCalo_.end(),
570  *itrk );
571  TrackRefs::iterator ie = find( elecs.inVertexInCalo_.begin(),
572  elecs.inVertexInCalo_.end(),
573  *itrk );
574  if ( ip == pions.inVertexInCalo_.end() &&
575  im == muons.inVertexInCalo_.end() &&
576  ie == elecs.inVertexInCalo_.end() ) { return false; }
577  else { return true; }
578 }
reco::TrackRefVector inVertexInCalo_
const_iterator end() const
Termination of iteration.
Definition: RefVector.h:242
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:7
const_iterator begin() const
Initialize an iterator over the RefVector.
Definition: RefVector.h:237
refhelper::RefVectorTrait< TrackCollection, T, F >::iterator_type iterator
Definition: RefVector.h:40
bool JetPlusTrackCorrector::getElectrons ( const edm::Event event,
edm::Handle< RecoElectrons > &  reco_elecs,
edm::Handle< RecoElectronIds > &  reco_elec_ids 
) const
protected

Get RECO electrons.

Definition at line 498 of file JetPlusTrackCorrector.cc.

References electronIds_, electrons_, edm::HandleBase::failedToGet(), edm::InputTag::instance(), edm::HandleBase::isValid(), edm::InputTag::label(), and edm::InputTag::process().

Referenced by matchTracks().

500  {
501  event.getByLabel( electrons_, reco_elecs );
502  if ( !reco_elecs.isValid() || reco_elecs.failedToGet() ) {
503  edm::LogError("JetPlusTrackCorrector")
504  << "[JetPlusTrackCorrector::" << __func__ << "]"
505  << " Invalid handle to reco::GsfElectron collection"
506  << " with InputTag (label:instance:process) \""
507  << electrons_.label() << ":"
508  << electrons_.instance() << ":"
509  << electrons_.process() << "\"";
510  return false;
511  }
512  event.getByLabel( electronIds_, reco_elec_ids );
513  if ( !reco_elec_ids.isValid() || reco_elec_ids.failedToGet() ) {
514  edm::LogError("JetPlusTrackCorrector")
515  << "[JetPlusTrackCorrector::" << __func__ << "]"
516  << " Invalid handle to reco::GsfElectron collection"
517  << " with InputTag (label:instance:process) \""
518  << electronIds_.label() << ":"
519  << electronIds_.instance() << ":"
520  << electronIds_.process() << "\"";
521  return false;
522  }
523  return true;
524 }
bool isValid() const
Definition: HandleBase.h:76
bool failedToGet() const
Definition: HandleBase.h:80
std::string const & label() const
Definition: InputTag.h:25
std::string const & process() const
Definition: InputTag.h:29
std::string const & instance() const
Definition: InputTag.h:26
bool JetPlusTrackCorrector::getMuons ( const edm::Event event,
edm::Handle< RecoMuons > &  reco_muons 
) const
protected

Get RECO muons.

Definition at line 366 of file JetPlusTrackCorrector.cc.

References edm::HandleBase::failedToGet(), edm::InputTag::instance(), edm::HandleBase::isValid(), edm::InputTag::label(), muons_, and edm::InputTag::process().

Referenced by matchTracks().

366  {
367  event.getByLabel( muons_, reco_muons );
368  if ( !reco_muons.isValid() || reco_muons.failedToGet() ) {
369  edm::LogError("JetPlusTrackCorrector")
370  << "[JetPlusTrackCorrector::" << __func__ << "]"
371  << " Invalid handle to reco::Muon collection"
372  << " with InputTag (label:instance:process) \""
373  << muons_.label() << ":"
374  << muons_.instance() << ":"
375  << muons_.process() << "\"";
376  return false;
377  }
378  return true;
379 }
bool isValid() const
Definition: HandleBase.h:76
bool failedToGet() const
Definition: HandleBase.h:80
std::string const & label() const
Definition: InputTag.h:25
std::string const & process() const
Definition: InputTag.h:29
std::string const & instance() const
Definition: InputTag.h:26
double JetPlusTrackCorrector::getResponseOfChargedWithEff ( )
inline

Get responses/sumPT/SumEnergy with and without Efficiency correction.

Definition at line 219 of file JetPlusTrackCorrector.h.

References theResponseOfChargedWithEff.

double JetPlusTrackCorrector::getResponseOfChargedWithoutEff ( )
inline
double JetPlusTrackCorrector::getSumEnergyWithEff ( )
inline

Definition at line 223 of file JetPlusTrackCorrector.h.

References theSumEnergyWithEff.

double JetPlusTrackCorrector::getSumEnergyWithoutEff ( )
inline

Definition at line 224 of file JetPlusTrackCorrector.h.

References theSumEnergyWithoutEff.

double JetPlusTrackCorrector::getSumPtWithEff ( )
inline

Definition at line 221 of file JetPlusTrackCorrector.h.

References theSumPtWithEff.

double JetPlusTrackCorrector::getSumPtWithoutEff ( )
inline

Definition at line 222 of file JetPlusTrackCorrector.h.

References theSumPtWithoutEff.

JetPlusTrackCorrector::P4 JetPlusTrackCorrector::jetDirFromTracks ( const P4 jet,
const jpt::MatchedTracks pions,
const jpt::MatchedTracks muons,
const jpt::MatchedTracks elecs 
) const
protected

Calculates vectorial correction using total track 3-momentum.

Definition at line 725 of file JetPlusTrackCorrector.cc.

References edm::RefVector< C, T, F >::begin(), corr, edm::RefVector< C, T, F >::empty(), edm::RefVector< C, T, F >::end(), jpt::MatchedTracks::inVertexInCalo_, and jpt::MatchedTracks::inVertexOutOfCalo_.

Referenced by correction().

728  {
729 
730  // Correction to be applied to jet 4-momentum
731  P4 corr;
732 
733  bool tracks_present = false;
734 
735  // Correct using pions in-cone at vertex
736 
737  if ( !pions.inVertexInCalo_.empty() ) {
739  TrackRefs::iterator jtrk = pions.inVertexInCalo_.end();
740  for ( ; itrk != jtrk; ++itrk ) {
741  corr += PtEtaPhiM( (*itrk)->pt(), (*itrk)->eta(), (*itrk)->phi(), 0. );
742  tracks_present = true;
743  }
744  }
745 
746  if ( !pions.inVertexOutOfCalo_.empty() ) {
749  for ( ; itrk != jtrk; ++itrk ) {
750  corr += PtEtaPhiM( (*itrk)->pt(), (*itrk)->eta(), (*itrk)->phi(), 0. );
751  tracks_present = true;
752  }
753  }
754 
755  // Correct using muons in-cone at vertex
756 
757  if ( !muons.inVertexInCalo_.empty() ) {
759  TrackRefs::iterator jtrk = muons.inVertexInCalo_.end();
760  for ( ; itrk != jtrk; ++itrk ) {
761  corr += PtEtaPhiM( (*itrk)->pt(), (*itrk)->eta(), (*itrk)->phi(), 0. );
762  tracks_present = true;
763  }
764  }
765 
766  if ( !muons.inVertexOutOfCalo_.empty() ) {
769  for ( ; itrk != jtrk; ++itrk ) {
770  corr += PtEtaPhiM( (*itrk)->pt(), (*itrk)->eta(), (*itrk)->phi(), 0. );
771  tracks_present = true;
772  }
773  }
774 
775  // Correct using electrons in-cone at vertex
776 
777  if ( !elecs.inVertexInCalo_.empty() ) {
779  TrackRefs::iterator jtrk = elecs.inVertexInCalo_.end();
780  for ( ; itrk != jtrk; ++itrk ) {
781  corr += PtEtaPhiM( (*itrk)->pt(), (*itrk)->eta(), (*itrk)->phi(), 0. );
782  tracks_present = true;
783  }
784  }
785 
786  if ( !elecs.inVertexOutOfCalo_.empty() ) {
789  for ( ; itrk != jtrk; ++itrk ) {
790  corr += PtEtaPhiM( (*itrk)->pt(), (*itrk)->eta(), (*itrk)->phi(), 0. );
791  tracks_present = true;
792  }
793  }
794 
795  // Adjust direction if tracks are present
796 
797  if ( !tracks_present ) { corr = corrected; }
798  else {
799  corr *= ( corr.P() > 0. ? corrected.P() / corr.P() : 1. );
800  corr = P4( corr.px(), corr.py(), corr.pz(), corrected.energy() );
801  }
802 
803  return corr;
804 
805 }
math::XYZTLorentzVector P4
reco::TrackRefVector inVertexInCalo_
reco::TrackRefVector inVertexOutOfCalo_
const_iterator end() const
Termination of iteration.
Definition: RefVector.h:242
bool empty() const
Is the RefVector empty.
Definition: RefVector.h:82
const_iterator begin() const
Initialize an iterator over the RefVector.
Definition: RefVector.h:237
refhelper::RefVectorTrait< TrackCollection, T, F >::iterator_type iterator
Definition: RefVector.h:40
JetCorrectorParameters corr
Definition: classes.h:9
math::PtEtaPhiMLorentzVectorD PtEtaPhiM
bool JetPlusTrackCorrector::jetTrackAssociation ( const reco::Jet fJet,
const edm::Event event,
const edm::EventSetup setup,
jpt::JetTracks trks 
) const
protectedvirtual

Associates tracks to jets (overriden in derived class)

Definition at line 264 of file JetPlusTrackCorrector.cc.

References jpt::JetTracks::clear(), edm::InputTag::instance(), jetTracksAtCalo_, jetTracksAtVertex_, jtaUsingEventData(), edm::InputTag::label(), and edm::InputTag::process().

Referenced by matchTracks().

267  {
268 
269  // Some init
270  trks.clear();
271 
272  // Check if labels are given
273  if ( !jetTracksAtVertex_.label().empty() && !jetTracksAtCalo_.label().empty() ) {
274 
275  // std::cout<<" Try to associate with splitting "<< std::endl;
276 
277  return jtaUsingEventData( fJet, event, trks );
278  } else {
279  edm::LogWarning("PatJPTCorrector")
280  << "[JetPlusTrackCorrector::" << __func__ << "]"
281  << " Empty label for the reco::JetTracksAssociation::Containers"
282  << std::endl
283  << " InputTag for JTA \"at vertex\" (label:instance:process) \""
284  << jetTracksAtVertex_.label() << ":"
285  << jetTracksAtVertex_.instance() << ":"
286  << jetTracksAtVertex_.process() << "\""
287  << std::endl
288  << " InputTag for JTA \"at calo face\" (label:instance:process) \""
289  << jetTracksAtCalo_.label() << ":"
290  << jetTracksAtCalo_.instance() << ":"
291  << jetTracksAtCalo_.process() << "\"";
292  return false;
293  }
294 
295 }
std::string const & label() const
Definition: InputTag.h:25
std::string const & process() const
Definition: InputTag.h:29
bool jtaUsingEventData(const reco::Jet &, const edm::Event &, jpt::JetTracks &) const
JTA using collections from event.
std::string const & instance() const
Definition: InputTag.h:26
bool JetPlusTrackCorrector::jtaUsingEventData ( const reco::Jet fJet,
const edm::Event event,
jpt::JetTracks trks 
) const
protected

JTA using collections from event.

Definition at line 299 of file JetPlusTrackCorrector.cc.

References jpt::JetTracks::caloFace_, edm::RefVector< C, T, F >::empty(), excludeJta(), edm::HandleBase::failedToGet(), reco::JetTracksAssociation::getValue(), edm::InputTag::instance(), edm::isDebugEnabled(), edm::HandleBase::isValid(), jetSplitMerge_, jetTracksAtCalo_, jetTracksAtVertex_, edm::InputTag::label(), edm::InputTag::process(), edm::Handle< T >::product(), rebuildJta(), verbose_, and jpt::JetTracks::vertex_.

Referenced by jetTrackAssociation().

301  {
302 
303  // std::cout<<"JetPlusTrackCorrector::jtaUsingEventData::starts "<<std::endl;
304 
305  // Get Jet-track association at Vertex
307  event.getByLabel( jetTracksAtVertex_, jetTracksAtVertex );
308 
309 // std::cout<<" Collection:: "<<jetTracksAtVertex.isValid()<<" "<<jetTracksAtVertex.failedToGet()<<std::endl;
310 // std::cout<<" Name "<<jetTracksAtVertex_.label()<<" "<<jetTracksAtVertex_.instance()<<" "<<jetTracksAtVertex_.process()<<std::endl;
311 
312 
313  if ( !jetTracksAtVertex.isValid() || jetTracksAtVertex.failedToGet() ) {
314  if ( verbose_ && edm::isDebugEnabled() ) {
315  edm::LogWarning("JetPlusTrackCorrector")
316  << "[JetPlusTrackCorrector::" << __func__ << "]"
317  << " Invalid handle to reco::JetTracksAssociation::Container (for Vertex)"
318  << " with InputTag (label:instance:process) \""
319  << jetTracksAtVertex_.label() << ":"
320  << jetTracksAtVertex_.instance() << ":"
321  << jetTracksAtVertex_.process() << "\"";
322  }
323  return false;
324  }
325 
326 
327  // std::cout<<" JetPlusTrackCorrector::jtaUsingEventData::here "<<jetSplitMerge_<<std::endl;
328 
329  // Retrieve jet-tracks association for given jet
330  const reco::JetTracksAssociation::Container jtV = *( jetTracksAtVertex.product() );
331  TrackRefs excluded;
332  if ( jetSplitMerge_ < 0 ) { trks.vertex_ = reco::JetTracksAssociation::getValue( jtV, fJet ); }
333  else { rebuildJta( fJet, jtV, trks.vertex_, excluded ); }
334 
335  // Check if any tracks are associated to jet at vertex
336  if ( trks.vertex_.empty() ) { return false; }
337 
338  // Get Jet-track association at Calo
340  event.getByLabel( jetTracksAtCalo_, jetTracksAtCalo );
341  if ( !jetTracksAtCalo.isValid() || jetTracksAtCalo.failedToGet() ) {
342  if ( verbose_ && edm::isDebugEnabled() ) {
343  edm::LogWarning("JetPlusTrackCorrector")
344  << "[JetPlusTrackCorrector::" << __func__ << "]"
345  << " Invalid handle to reco::JetTracksAssociation::Container (for CaloFace)"
346  << " with InputTag (label:instance:process) \""
347  << jetTracksAtCalo_.label() << ":"
348  << jetTracksAtCalo_.instance() << ":"
349  << jetTracksAtCalo_.process() << "\"";
350  }
351  return false;
352  }
353 
354  // Retrieve jet-tracks association for given jet
355  const reco::JetTracksAssociation::Container jtC = *( jetTracksAtCalo.product() );
356  if ( jetSplitMerge_ < 0 ) { trks.caloFace_ = reco::JetTracksAssociation::getValue( jtC, fJet ); }
357  else { excludeJta( fJet, jtC, trks.caloFace_, excluded ); }
358 
359  // Successful
360  return true;
361 
362 }
bool isDebugEnabled()
reco::TrackRefVector vertex_
bool empty() const
Is the RefVector empty.
Definition: RefVector.h:82
reco::TrackRefVector caloFace_
reco::TrackRefVector TrackRefs
const reco::TrackRefVector & getValue(const Container &, const reco::JetBaseRef &)
get value for the association. Throw exception if no association found
bool isValid() const
Definition: HandleBase.h:76
void rebuildJta(const reco::Jet &, const JetTracksAssociations &, TrackRefs &included, TrackRefs &excluded) const
Rebuild jet-track association.
bool failedToGet() const
Definition: HandleBase.h:80
void excludeJta(const reco::Jet &, const JetTracksAssociations &, TrackRefs &included, const TrackRefs &excluded) const
Exclude jet-track association.
T const * product() const
Definition: Handle.h:74
std::string const & label() const
Definition: InputTag.h:25
std::string const & process() const
Definition: InputTag.h:29
std::string const & instance() const
Definition: InputTag.h:26
const jpt::Map & JetPlusTrackCorrector::leakageMap ( ) const
inlineprotected

Definition at line 483 of file JetPlusTrackCorrector.h.

References leakage_.

Referenced by elecCorrection(), muonCorrection(), and pionCorrection().

483 { return leakage_; }
bool JetPlusTrackCorrector::matchElectrons ( TrackRefs::const_iterator  itrk,
const edm::Handle< RecoElectrons > &  elecs,
const edm::Handle< RecoElectronIds > &  elec_ids 
) const
protected

Matches tracks to RECO electrons.

Definition at line 1050 of file JetPlusTrackCorrector.cc.

References abs, deltaR(), ExpressReco_HICollisions_FallBack::e, funct::pow(), and mathSSE::sqrt().

Referenced by matchTracks().

1052  {
1053 
1054  if ( elecs->empty() ) { return false; }
1055 
1056  double deltaR = 999.;
1057  double deltaRMIN = 999.;
1058 
1059  uint32_t electron_index = 0;
1060  RecoElectrons::const_iterator ielec = elecs->begin();
1061  RecoElectrons::const_iterator jelec = elecs->end();
1062  for ( ; ielec != jelec; ++ielec ) {
1063 
1064  edm::Ref<RecoElectrons> electron_ref( elecs, electron_index );
1065  electron_index++;
1066 
1067  if ( (*elec_ids)[electron_ref] < 1.e-6 ) { continue; } //@@ Check for null value
1068 
1069  // DR matching b/w electron and track
1070  double deltaphi = fabs( ielec->phi() - (*itrk)->momentum().phi() );
1071  if ( deltaphi > 6.283185308 ) deltaphi -= 6.283185308;
1072  if ( deltaphi > 3.141592654 ) deltaphi = 6.283185308 - deltaphi;
1073  deltaR = abs( sqrt( pow( (ielec->eta() - (*itrk)->momentum().eta()), 2 ) +
1074  pow( deltaphi , 2 ) ) );
1075  if ( deltaR < deltaRMIN ) { deltaRMIN = deltaR; }
1076 
1077  }
1078 
1079  if ( deltaR < 0.02 ) return true;
1080  else return false;
1081 
1082 }
#define abs(x)
Definition: mlp_lapack.h:159
T sqrt(T t)
Definition: SSEVec.h:28
double deltaR(double eta1, double eta2, double phi1, double phi2)
Definition: TreeUtility.cc:17
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
bool JetPlusTrackCorrector::matchMuons ( TrackRefs::const_iterator  itrk,
const edm::Handle< RecoMuons > &  muons 
) const
protected

Matches tracks to RECO muons.

Definition at line 1018 of file JetPlusTrackCorrector.cc.

References muon::isGoodMuon(), and muon::TMLastStationTight.

Referenced by matchTracks().

1019  {
1020 
1021  if ( muons->empty() ) { return false; }
1022 
1023  RecoMuons::const_iterator imuon = muons->begin();
1024  RecoMuons::const_iterator jmuon = muons->end();
1025  for ( ; imuon != jmuon; ++imuon ) {
1026 
1027  if ( imuon->innerTrack().isNull() ||
1029  imuon->innerTrack()->pt() < 3.0 ) { continue; }
1030 
1031  if ( itrk->id() != imuon->innerTrack().id() ) {
1032  edm::LogError("JetPlusTrackCorrector")
1033  << "[JetPlusTrackCorrector::" << __func__ << "]"
1034  << "Product id of the tracks associated to the jet " << itrk->id()
1035  <<" is different from the product id of the inner track used for muons " << imuon->innerTrack().id()
1036  << "!" << std::endl
1037  << "Cannot compare tracks from different collection. Configuration Error!";
1038  return false;
1039  }
1040 
1041  if ( *itrk == imuon->innerTrack() ) { return true; }
1042  }
1043 
1044  return false;
1045 
1046 }
bool isGoodMuon(const reco::Muon &muon, SelectionType type, reco::Muon::ArbitrationType arbitrationType=reco::Muon::SegmentAndTrackArbitration)
main GoodMuon wrapper call
bool JetPlusTrackCorrector::matchTracks ( const reco::Jet fJet,
const edm::Event event,
const edm::EventSetup setup,
jpt::MatchedTracks pions,
jpt::MatchedTracks muons,
jpt::MatchedTracks elecs 
) const

Matches tracks to different particle types.

Definition at line 228 of file JetPlusTrackCorrector.cc.

References jpt::JetTracks::caloFace_, jetTrackAssociation(), convertSQLiteXML::ok, edm::RefVector< C, T, F >::size(), verbose_, and jpt::JetTracks::vertex_.

Referenced by correction().

233  {
234 
235  // Associate tracks to jet at both the Vertex and CaloFace
236  JetTracks jet_tracks;
237  bool ok = jetTrackAssociation( fJet, event, setup, jet_tracks );
238 
239 // std::cout<<" JetTrackAssociation "<<ok<<std::endl;
240 
241  if ( !ok ) { return false; }
242 
243 // std::cout<<" Tracks can be matched "<<ok<<std::endl;
244 
245 
246  // Track collections propagated to Vertex and CaloFace for "pions", muons and electrons
247  matchTracks( jet_tracks, event, pions, muons, elecs );
248 
249  // Debug
250  if ( verbose_ ) {
251  std::stringstream ss;
252  ss << "Number of tracks:" << std::endl
253  << " In-cone at Vertex : " << jet_tracks.vertex_.size() << std::endl
254  << " In-cone at CaloFace : " << jet_tracks.caloFace_.size();
255  edm::LogVerbatim("JetPlusTrackCorrector") << ss.str();
256  }
257 
258  return true;
259 
260 }
reco::TrackRefVector vertex_
reco::TrackRefVector caloFace_
Tracks associated to jets that are in-cone at Vertex and CaloFace.
bool matchTracks(const reco::Jet &, const edm::Event &, const edm::EventSetup &, jpt::MatchedTracks &pions, jpt::MatchedTracks &muons, jpt::MatchedTracks &elecs) const
Matches tracks to different particle types.
size_type size() const
Size of the RefVector.
Definition: RefVector.h:85
virtual bool jetTrackAssociation(const reco::Jet &, const edm::Event &, const edm::EventSetup &, jpt::JetTracks &) const
Associates tracks to jets (overriden in derived class)
void JetPlusTrackCorrector::matchTracks ( const jpt::JetTracks jet_tracks,
const edm::Event event,
jpt::MatchedTracks pions,
jpt::MatchedTracks muons,
jpt::MatchedTracks elecs 
) const
protectedvirtual

Matches tracks to different particle types (overriden in derived class)

Definition at line 383 of file JetPlusTrackCorrector.cc.

References edm::RefVector< C, T, F >::begin(), jpt::JetTracks::caloFace_, jpt::MatchedTracks::clear(), edm::RefVector< C, T, F >::end(), failTrackQuality(), findTrack(), newFWLiteAna::found, getElectrons(), getMuons(), jpt::MatchedTracks::inVertexInCalo_, jpt::MatchedTracks::inVertexOutOfCalo_, edm::isDebugEnabled(), edm::HandleBase::isValid(), LogTrace, matchElectrons(), matchMuons(), jpt::MatchedTracks::outOfVertexInCalo_, edm::RefVector< C, T, F >::push_back(), edm::RefVector< C, T, F >::size(), srcPVs_, tracksInCalo(), useElecs_, useMuons_, verbose_, jpt::JetTracks::vertex_, and vertex_.

387  {
388 
389  // Some init
390  pions.clear();
391  muons.clear();
392  elecs.clear();
393 
394  // Need vertex for track cleaning
395 
398  event.getByLabel(srcPVs_,pvCollection);
399  if ( pvCollection.isValid() && pvCollection->size()>0 ) vertex_=pvCollection->begin()->position();
400 
401  // Get RECO muons
402  edm::Handle<RecoMuons> reco_muons;
403  bool found_reco_muons = true;
404  if ( useMuons_ ) { getMuons( event, reco_muons ); }
405 
406  // Get RECO electrons and their ids
407  edm::Handle<RecoElectrons> reco_elecs;
408  edm::Handle<RecoElectronIds> reco_elec_ids;
409  bool found_reco_elecs = true;
410  if ( useElecs_ ) { getElectrons( event, reco_elecs, reco_elec_ids ); }
411 
412  // Check RECO products found
413  if ( !found_reco_muons || !found_reco_elecs ) {
414  edm::LogError("JetPlusTrackCorrector")
415  << "[JetPlusTrackCorrector::" << __func__ << "]"
416  << " Unable to access RECO collections for muons and electrons";
417  return;
418  }
419 
420  // Identify pions/muons/electrons that are "in/in" and "in/out"
421  {
422  TrackRefs::const_iterator itrk = jet_tracks.vertex_.begin();
423  TrackRefs::const_iterator jtrk = jet_tracks.vertex_.end();
424 
425  // std::cout<<" JetPlusTrack::Number of tracks at vertex "<<jet_tracks.vertex_.size()<<std::endl;
426 
427  for ( ; itrk != jtrk; ++itrk ) {
428 
429  if ( failTrackQuality(itrk) ) { continue; }
430 
431  // std::cout<<" Track accepted "<<std::endl;
432 
433  TrackRefs::iterator it = jet_tracks.caloFace_.end();
434  bool found = findTrack( jet_tracks, itrk, it );
435 
436  bool is_muon = useMuons_ && matchMuons( itrk, reco_muons );
437  bool is_ele = useElecs_ && matchElectrons( itrk, reco_elecs, reco_elec_ids );
438 
439  if ( found ) {
440  if ( is_muon ) { muons.inVertexInCalo_.push_back(*it); }
441  else if ( is_ele ) { elecs.inVertexInCalo_.push_back(*it); }
442  else { pions.inVertexInCalo_.push_back(*it); }
443  } else {
444  if ( is_muon ) { muons.inVertexOutOfCalo_.push_back(*itrk); }
445  else if ( is_ele ) { elecs.inVertexOutOfCalo_.push_back(*itrk); }
446  else { pions.inVertexOutOfCalo_.push_back(*itrk); }
447  }
448  }
449  }
450 
451  // Identify pions/muons/electrons that are "out/in"
452  {
453  TrackRefs::iterator itrk = jet_tracks.caloFace_.begin();
454  TrackRefs::iterator jtrk = jet_tracks.caloFace_.end();
455  for ( ; itrk != jtrk; ++itrk ) {
456 
457  if ( failTrackQuality(itrk) ) { continue; }
458 
459  if ( !tracksInCalo( pions, muons, elecs ) ) { continue; }
460 
461  bool found = findTrack( pions, muons, elecs, itrk );
462 
463  if ( !found ) {
464 
465  bool is_muon = useMuons_ && matchMuons( itrk, reco_muons );
466  bool is_ele = useElecs_ && matchElectrons( itrk, reco_elecs, reco_elec_ids );
467 
468  if ( is_muon ) { muons.outOfVertexInCalo_.push_back(*itrk); }
469  else if ( is_ele ) { elecs.outOfVertexInCalo_.push_back(*itrk); }
470  else { pions.outOfVertexInCalo_.push_back(*itrk); }
471 
472  }
473  }
474  }
475 
476  if ( verbose_ && edm::isDebugEnabled() ) {
477  std::stringstream ss;
478  ss << "[JetPlusTrackCorrector::" << __func__ << "] Number of tracks:" << std::endl
479  << " In-cone at Vertex and in-cone at CaloFace:" << std::endl
480  << " Pions : " << pions.inVertexInCalo_.size() << std::endl
481  << " Muons : " << muons.inVertexInCalo_.size() << std::endl
482  << " Electrons : " << elecs.inVertexInCalo_.size() << std::endl
483  << " In-cone at Vertex and out-of-cone at CaloFace:" << std::endl
484  << " Pions : " << pions.inVertexOutOfCalo_.size() << std::endl
485  << " Muons : " << muons.inVertexOutOfCalo_.size() << std::endl
486  << " Electrons : " << elecs.inVertexOutOfCalo_.size() << std::endl
487  << " Out-of-cone at Vertex and in-cone at CaloFace:" << std::endl
488  << " Pions : " << pions.outOfVertexInCalo_.size() << std::endl
489  << " Muons : " << muons.outOfVertexInCalo_.size() << std::endl
490  << " Electrons : " << elecs.outOfVertexInCalo_.size() << std::endl;
491  LogTrace("JetPlusTrackCorrector") << ss.str();
492  }
493 
494 }
bool isDebugEnabled()
bool findTrack(const jpt::JetTracks &, TrackRefs::const_iterator, TrackRefs::iterator &) const
Find track in JetTracks collection.
reco::TrackRefVector inVertexInCalo_
reco::TrackRefVector vertex_
reco::TrackRefVector inVertexOutOfCalo_
const_iterator end() const
Termination of iteration.
Definition: RefVector.h:242
const_iterator begin() const
Initialize an iterator over the RefVector.
Definition: RefVector.h:237
bool tracksInCalo(const jpt::MatchedTracks &pions, const jpt::MatchedTracks &muons, const jpt::MatchedTracks &elecs) const
Determines if any tracks in cone at CaloFace.
reco::Particle::Point vertex_
bool matchMuons(TrackRefs::const_iterator, const edm::Handle< RecoMuons > &) const
Matches tracks to RECO muons.
reco::TrackRefVector caloFace_
math::XYZPoint Point
point in the space
Definition: Particle.h:30
reco::TrackRefVector outOfVertexInCalo_
refhelper::RefVectorTrait< TrackCollection, T, F >::iterator_type iterator
Definition: RefVector.h:40
bool isValid() const
Definition: HandleBase.h:76
#define LogTrace(id)
bool getMuons(const edm::Event &, edm::Handle< RecoMuons > &) const
Get RECO muons.
bool matchElectrons(TrackRefs::const_iterator, const edm::Handle< RecoElectrons > &, const edm::Handle< RecoElectronIds > &) const
Matches tracks to RECO electrons.
bool getElectrons(const edm::Event &, edm::Handle< RecoElectrons > &, edm::Handle< RecoElectronIds > &) const
Get RECO electrons.
bool failTrackQuality(TrackRefs::const_iterator) const
Check on track quality.
void push_back(value_type const &ref)
Add a Ref&lt;C, T&gt; to the RefVector.
Definition: RefVector.h:61
size_type size() const
Size of the RefVector.
Definition: RefVector.h:85
JetPlusTrackCorrector::P4 JetPlusTrackCorrector::muonCorrection ( const P4 jet,
const jpt::MatchedTracks muons 
) const

Calculates correction to be applied using muons.

Definition at line 666 of file JetPlusTrackCorrector.cc.

References jpt::MatchedTracks::inVertexInCalo_, jpt::MatchedTracks::inVertexOutOfCalo_, jpt::MatchedTracks::outOfVertexInCalo_, edm::RefVector< C, T, F >::size(), useInConeTracks_, useOutOfConeTracks_, useOutOfVertexTracks_, and verbose_.

Referenced by correction().

667  {
668 
669  P4 corr_muons;
670 
671  P4 corr_muons_in_cone;
672  P4 corr_muons_out_of_cone;
673  P4 corr_muons_out_of_vertex;
674 
675  if ( useInConeTracks_ ) {
676  corr_muons_in_cone = muonCorrection( jet, muons.inVertexInCalo_, true, true );
677  corr_muons += corr_muons_in_cone;
678  }
679 
680  if ( useOutOfConeTracks_ ) {
681  corr_muons_out_of_cone = muonCorrection( jet, muons.inVertexOutOfCalo_, true, false );
682  corr_muons += corr_muons_out_of_cone;
683  }
684 
685  if ( useOutOfVertexTracks_ ) {
686  corr_muons_out_of_vertex = muonCorrection( jet, muons.outOfVertexInCalo_, false, true );
687  corr_muons += corr_muons_out_of_vertex;
688  }
689 
690  if ( verbose_ ) {
691  std::stringstream ss;
692  ss << " Muon corrections:" << std::endl
693  << " In/In : " << "(" << muons.inVertexInCalo_.size() << ") " << corr_muons_in_cone.energy() << std::endl
694  << " In/Out : " << "(" << muons.inVertexOutOfCalo_.size() << ") " << corr_muons_out_of_cone.energy() << std::endl
695  << " Out/In : " << "(" << muons.outOfVertexInCalo_.size() << ") " << corr_muons_out_of_vertex.energy();
696  edm::LogVerbatim("JetPlusTrackCorrector") << ss.str();
697  }
698 
699  return corr_muons;
700 
701 }
math::XYZTLorentzVector P4
reco::TrackRefVector inVertexInCalo_
reco::TrackRefVector inVertexOutOfCalo_
P4 muonCorrection(const P4 &jet, const jpt::MatchedTracks &muons) const
Calculates correction to be applied using muons.
reco::TrackRefVector outOfVertexInCalo_
size_type size() const
Size of the RefVector.
Definition: RefVector.h:85
JetPlusTrackCorrector::P4 JetPlusTrackCorrector::muonCorrection ( const P4 jet,
const TrackRefs muons,
bool  in_cone_at_vertex,
bool  in_cone_at_calo_face 
) const
inlineprotected

Calculates individual muons corrections.

Definition at line 458 of file JetPlusTrackCorrector.h.

References calculateCorr(), efficiencyMap(), leakageMap(), muonMass_, and responseMap().

461  {
462  static jpt::Efficiency not_used( responseMap(), efficiencyMap(), leakageMap() );
463  return calculateCorr( jet, muons, not_used, in_cone_at_vertex, in_cone_at_calo_face, muonMass_, false, 2. );
464 }
const jpt::Map & responseMap() const
const jpt::Map & efficiencyMap() const
const jpt::Map & leakageMap() const
P4 calculateCorr(const P4 &jet, const TrackRefs &, jpt::Efficiency &, bool in_cone_at_vertex, bool in_cone_at_calo_face, double mass, bool is_pion, double mip) const
Generic method to calculates 4-momentum correction to be applied.
Generic container class.
JetPlusTrackCorrector::P4 JetPlusTrackCorrector::pionCorrection ( const P4 jet,
const jpt::MatchedTracks pions 
) const

Calculates corrections to be applied using pions.

Definition at line 593 of file JetPlusTrackCorrector.cc.

References efficiencyMap(), jpt::MatchedTracks::inVertexInCalo_, jpt::MatchedTracks::inVertexOutOfCalo_, leakageMap(), jpt::MatchedTracks::outOfVertexInCalo_, pionEfficiency(), responseMap(), edm::RefVector< C, T, F >::size(), useEff_, useInConeTracks_, useOutOfConeTracks_, useOutOfVertexTracks_, and verbose_.

Referenced by correction().

594  {
595 
596  P4 corr_pions;
597 /*
598  std::cout<<" pionCorrection::Corrections for jet "<< theResponseOfChargedWithEff <<" "<<
599  theResponseOfChargedWithoutEff <<" "<<
600  theSumPtWithEff <<" "<<
601  theSumPtWithoutEff <<" "<<
602  theSumEnergyWithEff <<" "<<
603  theSumEnergyWithoutEff <<std::endl;
604 */
605 
606  // In-cone
607 
608  P4 corr_pions_in_cone;
609  P4 corr_pions_eff_in_cone;
610  Efficiency in_cone( responseMap(), efficiencyMap(), leakageMap() );
611 
612  if ( useInConeTracks_ ) {
613  corr_pions_in_cone = pionCorrection( jet, pions.inVertexInCalo_, in_cone, true, true );
614  corr_pions += corr_pions_in_cone;
615  if ( useEff_ ) {
616  corr_pions_eff_in_cone = pionEfficiency( jet, in_cone, true );
617  corr_pions += corr_pions_eff_in_cone;
618  }
619  }
620 
621  // Out-of-cone
622 
623  P4 corr_pions_out_of_cone;
624  P4 corr_pions_eff_out_of_cone;
625  Efficiency out_of_cone( responseMap(), efficiencyMap(), leakageMap() );
626 
627  if ( useOutOfConeTracks_ ) {
628  corr_pions_out_of_cone = pionCorrection( jet, pions.inVertexOutOfCalo_, out_of_cone, true, false );
629  corr_pions += corr_pions_out_of_cone;
630  if ( useEff_ ) {
631  corr_pions_eff_out_of_cone = pionEfficiency( jet, out_of_cone, false );
632  corr_pions += corr_pions_eff_out_of_cone;
633  }
634  }
635 
636  // Out-of-vertex
637 
638  P4 corr_pions_out_of_vertex;
639  Efficiency not_used( responseMap(), efficiencyMap(), leakageMap() );
640 
641  if ( useOutOfVertexTracks_ ) {
642  corr_pions_out_of_vertex = pionCorrection( jet, pions.outOfVertexInCalo_, not_used, false, true );
643  corr_pions += corr_pions_out_of_vertex;
644  }
645 
646  if ( verbose_ ) {
647  std::stringstream ss;
648  ss << " Pion corrections:" << std::endl
649  << " In/In : " << "(" << pions.inVertexInCalo_.size() << ") " << corr_pions_in_cone.energy() << std::endl
650  << " In/Out : " << "(" << pions.inVertexOutOfCalo_.size() << ") " << corr_pions_out_of_cone.energy() << std::endl
651  << " Out/In : " << "(" << pions.outOfVertexInCalo_.size() << ") " << corr_pions_out_of_vertex.energy() << std::endl;
652  if ( useEff_ ) {
653  ss << " Pion efficiency corrections:" << std::endl
654  << " In/In : " << "(" << pions.inVertexInCalo_.size() << ") " << corr_pions_eff_in_cone.energy() << std::endl
655  << " In/Out : " << "(" << pions.inVertexOutOfCalo_.size() << ") " << corr_pions_eff_out_of_cone.energy();
656  }
657  edm::LogVerbatim("JetPlusTrackCorrector") << ss.str();
658  }
659 
660  return corr_pions;
661 
662 }
math::XYZTLorentzVector P4
const jpt::Map & responseMap() const
reco::TrackRefVector inVertexInCalo_
P4 pionCorrection(const P4 &jet, const jpt::MatchedTracks &pions) const
Calculates corrections to be applied using pions.
reco::TrackRefVector inVertexOutOfCalo_
const jpt::Map & efficiencyMap() const
P4 pionEfficiency(const P4 &jet, const jpt::Efficiency &, bool in_cone_at_calo_face) const
Correction to be applied using tracking efficiency.
const jpt::Map & leakageMap() const
reco::TrackRefVector outOfVertexInCalo_
size_type size() const
Size of the RefVector.
Definition: RefVector.h:85
Generic container class.
JetPlusTrackCorrector::P4 JetPlusTrackCorrector::pionCorrection ( const P4 jet,
const TrackRefs pions,
jpt::Efficiency eff,
bool  in_cone_at_vertex,
bool  in_cone_at_calo_face 
) const
inlineprotected

Calculates individual pion corrections.

Definition at line 450 of file JetPlusTrackCorrector.h.

References calculateCorr(), and pionMass_.

454  {
455  return calculateCorr( jet, pions, eff, in_cone_at_vertex, in_cone_at_calo_face, pionMass_, true, -1. );
456 }
P4 calculateCorr(const P4 &jet, const TrackRefs &, jpt::Efficiency &, bool in_cone_at_vertex, bool in_cone_at_calo_face, double mass, bool is_pion, double mip) const
Generic method to calculates 4-momentum correction to be applied.
JetPlusTrackCorrector::P4 JetPlusTrackCorrector::pionEfficiency ( const P4 jet,
const jpt::Efficiency eff,
bool  in_cone_at_calo_face 
) const
protected

Correction to be applied using tracking efficiency.

Definition at line 954 of file JetPlusTrackCorrector.cc.

References jpt::Map::binCenterEta(), jpt::Map::binCenterPt(), corr, correction(), jpt::Efficiency::inConeCorr(), jpt::Map::nEtaBins(), jpt::Map::nPtBins(), jpt::Efficiency::nTrks(), jpt::Efficiency::outOfConeCorr(), pionMass_, response_, theResponseOfChargedWithEff, theSumEnergyWithEff, theSumPtWithEff, vecResponse_, and vectorial_.

Referenced by pionCorrection().

956  {
957 
958  // Total correction to be applied
959  P4 correction;
960 
961  double theSumResp = 0;
962  double theSumPt = 0;
963  double theSumEnergy = 0;
964 
965  // Iterate through eta/pt bins
966  for ( uint32_t ieta = 0; ieta < response_.nEtaBins()-1; ++ieta ) {
967  for ( uint32_t ipt = 0; ipt < response_.nPtBins()-1; ++ipt ) {
968 
969  // Check tracks are found in this eta/pt bin
970  if ( !eff.nTrks(ieta,ipt) ) { continue; }
971 
972  for ( uint16_t ii = 0; ii < 2; ++ii ) {
973 
974  // Check which correction should be applied
975  double corr = 0.;
976  if ( ii == 0 ) { corr = eff.outOfConeCorr( ieta, ipt );}
977  else if ( ii == 1 && in_cone_at_calo_face ) { corr = eff.inConeCorr( ieta, ipt );}
978  else { continue; }
979 
980  // Calculate correction to be applied
981  P4 corr_p4;
982  if ( vectorial_ && vecResponse_ ) {
983  double corr_eta = response_.binCenterEta(ieta);
984  double corr_phi = jet.phi(); //@@ jet phi!
985  double corr_pt = response_.binCenterPt(ipt);
986  corr_p4 = PtEtaPhiM( corr_pt, corr_eta, corr_phi, pionMass_ ); //@@ E^2 = p^2 + m_pion^2, |p| calc'ed from pt bin
987  corr_p4 *= ( corr_p4.energy() > 0. ? corr / corr_p4.energy() : 1. ); //@@ p4 scaled up by mean energy for bin
988  } else {
989  corr_p4 = ( jet.energy() > 0. ? corr / jet.energy() : 1. ) * jet;
990  }
991 
992  // Apply correction
993  if ( ii == 0 ) { correction += corr_p4; theSumPt += corr_p4.pt(); theSumEnergy += corr_p4.energy();} //@@ Add out-of-cone
994  else if ( ii == 1 ) { correction -= corr_p4; theSumResp += corr_p4.energy();} //@@ Subtract in-cone
995 
996  }
997 
998  }
999  }
1000 
1001  theResponseOfChargedWithEff += theSumResp;
1002  theSumPtWithEff += theSumPt;
1003  theSumEnergyWithEff += theSumEnergy;
1004 /*
1005  std::cout<<" Efficiency correction End::Corrections for jet "<< theResponseOfChargedWithEff <<" "<<
1006  theResponseOfChargedWithoutEff <<" "<<
1007  theSumPtWithEff <<" "<<
1008  theSumPtWithoutEff <<" "<<
1009  theSumEnergyWithEff <<" "<<
1010  theSumEnergyWithoutEff <<std::endl;
1011 */
1012  return correction;
1013 
1014 }
math::XYZTLorentzVector P4
double correction(const reco::Jet &, const reco::Jet &, const edm::Event &, const edm::EventSetup &, P4 &) const
Vectorial correction method (corrected 4-momentum passed by reference)
uint32_t nEtaBins() const
double binCenterPt(uint32_t) const
double outOfConeCorr(uint32_t eta_bin, uint32_t pt_bin) const
double inConeCorr(uint32_t eta_bin, uint32_t pt_bin) const
JetCorrectorParameters corr
Definition: classes.h:9
uint16_t nTrks(uint32_t eta_bin, uint32_t pt_bin) const
uint32_t nPtBins() const
double binCenterEta(uint32_t) const
math::PtEtaPhiMLorentzVectorD PtEtaPhiM
void JetPlusTrackCorrector::rebuildJta ( const reco::Jet fJet,
const JetTracksAssociations jtV0,
TrackRefs included,
TrackRefs excluded 
) const
protected

Rebuild jet-track association.

Definition at line 1086 of file JetPlusTrackCorrector.cc.

References reco::JetTracksAssociation::allJets(), edm::RefVector< C, T, F >::begin(), edm::RefVector< C, T, F >::clear(), Geom::deltaR2(), edm::RefVector< C, T, F >::end(), reco::LeafCandidate::et(), reco::LeafCandidate::eta(), reco::JetTracksAssociation::getValue(), jetSplitMerge_, reco::LeafCandidate::phi(), edm::RefVector< C, T, F >::push_back(), and testEve_cfg::tracks.

Referenced by jtaUsingEventData().

1089  {
1090 
1091  //std::cout<<" NEW1 Merge/Split schema "<<jetSplitMerge_<<std::endl;
1092 
1093  tracksthis = reco::JetTracksAssociation::getValue(jtV0,fJet);
1094 
1095  if(jetSplitMerge_<0) return;
1096 
1097  typedef std::vector<reco::JetBaseRef>::iterator JetBaseRefIterator;
1098  std::vector<reco::JetBaseRef> theJets = reco::JetTracksAssociation::allJets(jtV0);
1099 
1100  TrackRefs tracks = tracksthis;
1101  tracksthis.clear();
1102 
1103  //std::cout<<" Size of initial vector "<<tracks.size()<<" "<<fJet.et()<<" "<<fJet.eta()<<" "<<fJet.phi()<<std::endl;
1104 
1105  int tr=0;
1106 
1107  for(TrackRefs::iterator it = tracks.begin(); it != tracks.end(); it++ )
1108  {
1109 
1110  double dR2this = deltaR2( fJet.eta(), fJet.phi(), (**it).eta(), (**it).phi() );
1111  // double dfi = fabs(fJet.phi()-(**it).phi());
1112  // if(dfi>4.*atan(1.))dfi = 8.*atan(1.)-dfi;
1113  // double deta = fJet.eta() - (**it).eta();
1114  // double dR2check = sqrt(dfi*dfi+deta*deta);
1115 
1116  double scalethis = dR2this;
1117  if(jetSplitMerge_ == 0) scalethis = 1./fJet.et();
1118  if(jetSplitMerge_ == 2) scalethis = dR2this/fJet.et();
1119  tr++;
1120  int flag = 1;
1121  for(JetBaseRefIterator ii = theJets.begin(); ii != theJets.end(); ii++)
1122  {
1123  if(&(**ii) == &fJet ) {continue;}
1124  double dR2 = deltaR2( (*ii)->eta(), (*ii)->phi(), (**it).eta(), (**it).phi() );
1125  double scale = dR2;
1126  if(jetSplitMerge_ == 0) scale = 1./fJet.et();
1127  if(jetSplitMerge_ == 2) scale = dR2/fJet.et();
1128  if(scale < scalethis) flag = 0;
1129 
1130  if(flag == 0) {
1131  //std::cout<<" Track belong to another jet also "<<dR2<<" "<<
1132  //(*ii)->et()<<" "<<(*ii)->eta()<<" "<< (*ii)->phi()<<" Track "<<(**it).eta()<<" "<<(**it).phi()<<" "<<scalethis<<" "<<scale<<" "<<flag<<std::endl;
1133  break;
1134  }
1135  }
1136 
1137  //std::cout<<" Track "<<tr<<" "<<flag<<" "<<dR2this<<" "<<dR2check<<" Jet "<<fJet.eta()<<" "<< fJet.phi()<<" Track "<<(**it).eta()<<" "<<(**it).phi()<<std::endl;
1138  if(flag == 1) {tracksthis.push_back (*it);}else{Excl.push_back (*it);}
1139  }
1140 
1141  //std::cout<<" The new size of tracks "<<tracksthis.size()<<" Excludede "<<Excl.size()<<std::endl;
1142  return;
1143 
1144 }
long int flag
Definition: mlp_lapack.h:47
virtual double et() const
transverse energy
virtual double eta() const
momentum pseudorapidity
reco::TrackRefVector TrackRefs
refhelper::RefVectorTrait< TrackCollection, T, F >::iterator_type iterator
Definition: RefVector.h:40
const reco::TrackRefVector & getValue(const Container &, const reco::JetBaseRef &)
get value for the association. Throw exception if no association found
double deltaR2(const Vector1 &v1, const Vector2 &v2)
Definition: VectorUtil.h:78
std::vector< reco::JetBaseRef > allJets(const Container &)
fill list of all jets associated with values. Return # of jets in the list
tuple tracks
Definition: testEve_cfg.py:39
virtual double phi() const
momentum azimuthal angle
const jpt::Map & JetPlusTrackCorrector::responseMap ( ) const
inlineprotected

Definition at line 481 of file JetPlusTrackCorrector.h.

References response_.

Referenced by elecCorrection(), muonCorrection(), and pionCorrection().

481 { return response_; }
bool JetPlusTrackCorrector::tracksInCalo ( const jpt::MatchedTracks pions,
const jpt::MatchedTracks muons,
const jpt::MatchedTracks elecs 
) const
protected

Determines if any tracks in cone at CaloFace.

Definition at line 582 of file JetPlusTrackCorrector.cc.

References edm::RefVector< C, T, F >::empty(), and jpt::MatchedTracks::inVertexInCalo_.

Referenced by matchTracks().

584  {
585  if ( !pions.inVertexInCalo_.empty() ||
586  !muons.inVertexInCalo_.empty() ||
587  !elecs.inVertexInCalo_.empty() ) { return true; }
588  else { return false; }
589 }
reco::TrackRefVector inVertexInCalo_
bool empty() const
Is the RefVector empty.
Definition: RefVector.h:82
bool JetPlusTrackCorrector::vectorialCorrection ( ) const
inline

Returns value of configurable.

Definition at line 447 of file JetPlusTrackCorrector.h.

References vectorial_.

447 { return vectorial_; }

Member Data Documentation

double JetPlusTrackCorrector::dzVertexCut_
protected

Definition at line 405 of file JetPlusTrackCorrector.h.

Referenced by failTrackQuality().

const jpt::Map JetPlusTrackCorrector::efficiency_
protected

Definition at line 418 of file JetPlusTrackCorrector.h.

Referenced by efficiencyMap().

double JetPlusTrackCorrector::elecMass_
protected

Definition at line 424 of file JetPlusTrackCorrector.h.

Referenced by elecCorrection().

edm::InputTag JetPlusTrackCorrector::electronIds_
protected

Definition at line 411 of file JetPlusTrackCorrector.h.

Referenced by getElectrons().

edm::InputTag JetPlusTrackCorrector::electrons_
protected

Definition at line 410 of file JetPlusTrackCorrector.h.

Referenced by getElectrons(), and JetPlusTrackCorrector().

int JetPlusTrackCorrector::jetSplitMerge_
protected
edm::InputTag JetPlusTrackCorrector::jetTracksAtCalo_
protected
edm::InputTag JetPlusTrackCorrector::jetTracksAtVertex_
protected
const jpt::Map JetPlusTrackCorrector::leakage_
protected

Definition at line 419 of file JetPlusTrackCorrector.h.

Referenced by leakageMap().

double JetPlusTrackCorrector::maxEta_
protected

Definition at line 427 of file JetPlusTrackCorrector.h.

Referenced by canCorrect().

double JetPlusTrackCorrector::muonMass_
protected

Definition at line 423 of file JetPlusTrackCorrector.h.

Referenced by muonCorrection().

edm::InputTag JetPlusTrackCorrector::muons_
protected

Definition at line 409 of file JetPlusTrackCorrector.h.

Referenced by getMuons(), and JetPlusTrackCorrector().

double JetPlusTrackCorrector::pionMass_
protected

Definition at line 422 of file JetPlusTrackCorrector.h.

Referenced by pionCorrection(), and pionEfficiency().

double JetPlusTrackCorrector::ptErrorQuality_
protected

Definition at line 404 of file JetPlusTrackCorrector.h.

Referenced by failTrackQuality().

const jpt::Map JetPlusTrackCorrector::response_
protected

Definition at line 417 of file JetPlusTrackCorrector.h.

Referenced by calculateCorr(), correctAA(), pionEfficiency(), and responseMap().

edm::InputTag JetPlusTrackCorrector::srcPVs_
protected

Definition at line 403 of file JetPlusTrackCorrector.h.

Referenced by matchTracks().

float JetPlusTrackCorrector::theResponseOfChargedWithEff
mutableprotected
float JetPlusTrackCorrector::theResponseOfChargedWithoutEff
mutableprotected
float JetPlusTrackCorrector::theSumEnergyWithEff
mutableprotected
float JetPlusTrackCorrector::theSumEnergyWithoutEff
mutableprotected

Definition at line 433 of file JetPlusTrackCorrector.h.

Referenced by calculateCorr(), correction(), and getSumEnergyWithoutEff().

float JetPlusTrackCorrector::theSumPtWithEff
mutableprotected
float JetPlusTrackCorrector::theSumPtWithoutEff
mutableprotected

Definition at line 431 of file JetPlusTrackCorrector.h.

Referenced by calculateCorr(), correction(), and getSumPtWithoutEff().

reco::TrackBase::TrackQuality JetPlusTrackCorrector::trackQuality_
protected

Definition at line 414 of file JetPlusTrackCorrector.h.

Referenced by failTrackQuality().

bool JetPlusTrackCorrector::useEff_
protected

Definition at line 394 of file JetPlusTrackCorrector.h.

Referenced by JetPlusTrackCorrector(), and pionCorrection().

bool JetPlusTrackCorrector::useElecs_
protected

Definition at line 396 of file JetPlusTrackCorrector.h.

Referenced by correction(), JetPlusTrackCorrector(), and matchTracks().

bool JetPlusTrackCorrector::useInConeTracks_
protected

Definition at line 390 of file JetPlusTrackCorrector.h.

Referenced by JetPlusTrackCorrector(), muonCorrection(), and pionCorrection().

bool JetPlusTrackCorrector::useMuons_
protected

Definition at line 395 of file JetPlusTrackCorrector.h.

Referenced by correction(), JetPlusTrackCorrector(), and matchTracks().

bool JetPlusTrackCorrector::useOutOfConeTracks_
protected

Definition at line 391 of file JetPlusTrackCorrector.h.

Referenced by JetPlusTrackCorrector(), muonCorrection(), and pionCorrection().

bool JetPlusTrackCorrector::useOutOfVertexTracks_
protected

Definition at line 392 of file JetPlusTrackCorrector.h.

Referenced by JetPlusTrackCorrector(), muonCorrection(), and pionCorrection().

bool JetPlusTrackCorrector::usePions_
protected

Definition at line 393 of file JetPlusTrackCorrector.h.

Referenced by correction(), and JetPlusTrackCorrector().

bool JetPlusTrackCorrector::useTrackQuality_
protected

Definition at line 397 of file JetPlusTrackCorrector.h.

Referenced by failTrackQuality(), and JetPlusTrackCorrector().

bool JetPlusTrackCorrector::vecResponse_
protected
bool JetPlusTrackCorrector::vectorial_
protected
bool JetPlusTrackCorrector::verbose_
protected
reco::Particle::Point JetPlusTrackCorrector::vertex_
mutableprotected

Definition at line 406 of file JetPlusTrackCorrector.h.

Referenced by failTrackQuality(), and matchTracks().