CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
ChargedHadronTrackResolutionFilter Class Reference
Inheritance diagram for ChargedHadronTrackResolutionFilter:
edm::global::EDFilter<> edm::global::EDFilterBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

 ChargedHadronTrackResolutionFilter (const edm::ParameterSet &)
 
 ~ChargedHadronTrackResolutionFilter ()
 
- Public Member Functions inherited from edm::global::EDFilter<>
 EDFilter ()=default
 
- Public Member Functions inherited from edm::global::EDFilterBase
 EDFilterBase ()
 
ModuleDescription const & moduleDescription () const
 
virtual ~EDFilterBase ()
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 ProducerBase ()
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription
const &)> 
registrationCallback () const
 used by the fwk to register list of products More...
 
virtual ~ProducerBase ()
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
 EDConsumerBase ()
 
ProductHolderIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
std::vector
< ProductHolderIndexAndSkipBit >
const & 
itemsToGetFromEvent () const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesDependentUpon (const std::string &iProcessName, std::vector< const char * > &oModuleLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
bool registeredToConsume (ProductHolderIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void updateLookup (BranchType iBranchType, ProductHolderIndexHelper const &)
 
virtual ~EDConsumerBase ()
 

Private Member Functions

virtual bool filter (edm::StreamID iID, edm::Event &, const edm::EventSetup &) const override
 

Private Attributes

const bool debug_
 
const double metSignifMin_
 
const double p1_
 
const double p2_
 
const double p3_
 
const double ptMin_
 
const bool taggingMode_
 
edm::EDGetTokenT
< reco::PFCandidateCollection
tokenPFCandidates_
 
edm::EDGetTokenT
< reco::PFMETCollection
tokenPFMET_
 

Additional Inherited Members

- Public Types inherited from edm::global::EDFilterBase
typedef EDFilterBase ModuleType
 
- Public Types inherited from edm::ProducerBase
typedef
ProductRegistryHelper::TypeLabelList 
TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::global::EDFilterBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Detailed Description

Definition at line 27 of file ChargedHadronTrackResolutionFilter.cc.

Constructor & Destructor Documentation

ChargedHadronTrackResolutionFilter::ChargedHadronTrackResolutionFilter ( const edm::ParameterSet iConfig)
explicit

Definition at line 60 of file ChargedHadronTrackResolutionFilter.cc.

61  : tokenPFCandidates_ ( consumes<reco::PFCandidateCollection>(iConfig.getParameter<edm::InputTag> ("PFCandidates") ))
62  , tokenPFMET_ ( consumes<reco::PFMETCollection>(iConfig.getParameter<edm::InputTag> ("PFMET") ))
63  , taggingMode_ ( iConfig.getParameter<bool> ("taggingMode") )
64  , ptMin_ ( iConfig.getParameter<double> ("ptMin") )
65  , metSignifMin_ ( iConfig.getParameter<double> ("MetSignifMin") )
66  , p1_ ( iConfig.getParameter<double> ("p1") )
67  , p2_ ( iConfig.getParameter<double> ("p2") )
68  , p3_ ( iConfig.getParameter<double> ("p3") )
69  , debug_ ( iConfig.getParameter<bool> ("debug") )
70 {
71  produces<bool>();
72 }
T getParameter(std::string const &) const
edm::EDGetTokenT< reco::PFMETCollection > tokenPFMET_
edm::EDGetTokenT< reco::PFCandidateCollection > tokenPFCandidates_
ChargedHadronTrackResolutionFilter::~ChargedHadronTrackResolutionFilter ( )

Definition at line 74 of file ChargedHadronTrackResolutionFilter.cc.

74 { }

Member Function Documentation

bool ChargedHadronTrackResolutionFilter::filter ( edm::StreamID  iID,
edm::Event iEvent,
const edm::EventSetup iSetup 
) const
overrideprivatevirtual

Implements edm::global::EDFilterBase.

Definition at line 83 of file ChargedHadronTrackResolutionFilter.cc.

References funct::abs(), gather_cfg::cout, debug_, edm::Event::getByToken(), i, edm::Ref< C, T, F >::isNull(), metSignifMin_, P, p1_, p2_, p3_, reco::LeafCandidate::pdgId(), reco::tau::pfCandidates(), pfMET_cfi::pfMET, funct::pow(), reco::tau::disc::Pt(), ptMin_, edm::Event::put(), reco::LeafCandidate::px(), reco::LeafCandidate::py(), mathSSE::sqrt(), taggingMode_, tokenPFCandidates_, tokenPFMET_, and reco::PFCandidate::trackRef().

84 {
85  using namespace std;
86  using namespace edm;
87 
92 
93  bool foundBadTrack = false;
94  if ( debug_ ) cout << "starting loop over pfCandidates" << endl;
95 
96  for ( unsigned i=0; i<pfCandidates->size(); ++i ) {
97 
98  const reco::PFCandidate & cand = (*pfCandidates)[i];
99 
100  if ( std::abs(cand.pdgId()) == 211 ) {
101 
102  if (cand.trackRef().isNull()) continue;
103 
104  const reco::TrackRef trackref = cand.trackRef();
105  const double Pt = trackref->pt();
106  const double DPt = trackref->ptError();
107  if (Pt < ptMin_) continue;
108  if ( debug_ ) cout << "charged hadron track pT > " << Pt << " GeV - " << " dPt: " << DPt << " GeV - algorithm: " << trackref->algo() << std::endl;
109 
110  const double P = trackref->p();
111 
112  const unsigned int LostHits = trackref->numberOfLostHits();
113 
114  if ( (DPt/Pt) > (p1_ * sqrt(p2_*p2_/P+p3_*p3_) / (1.+LostHits)) ) {
115 
116  const double MET_px = pfMET->begin()->px();
117  const double MET_py = pfMET->begin()->py();
118  const double MET_et = pfMET->begin()->et();
119  const double MET_sumEt = pfMET->begin()->sumEt();
120  const double hadron_px = cand.px();
121  const double hadron_py = cand.py();
122  if (MET_sumEt == 0) continue;
123  const double MET_signif = MET_et/MET_sumEt;
124  const double MET_et_corr = sqrt( (MET_px + hadron_px)*(MET_px + hadron_px) + (MET_py + hadron_py)*(MET_py + hadron_py) );
125  const double MET_signif_corr = MET_et_corr/MET_sumEt;
126  if ( debug_ ) std::cout << "MET signif before: " << MET_signif << " - after: " << MET_signif_corr << " - reduction factor: " << MET_signif/MET_signif_corr << endl;
127 
128  if ( (MET_signif/MET_signif_corr) > metSignifMin_ ) {
129 
130  foundBadTrack = true;
131 
132  if ( debug_ ) {
133  cout << cand << endl;
134  cout << "charged hadron \t" << "track pT = " << Pt << " +/- " << DPt;
135  cout << endl;
136  cout << "MET: " << MET_et << " MET phi: " << pfMET->begin()->phi()<<
137  " MET sumet: " << MET_sumEt << " MET significance: " << MET_et/MET_sumEt << endl;
138  cout << "MET_px: " << MET_px << " MET_py: " << MET_py << " hadron_px: " << hadron_px << " hadron_py: " << hadron_py << endl;
139  cout << "corrected: " << sqrt( pow((MET_px + hadron_px),2) + pow((MET_py + hadron_py),2)) << endl;
140  }
141  }
142  }
143  }
144  } // end loop over PF candidates
145 
146  bool pass = !foundBadTrack;
147 
148  iEvent.put( std::auto_ptr<bool>(new bool(pass)) );
149 
150  return taggingMode_ || pass;
151 }
int i
Definition: DBlmapReader.cc:9
virtual int pdgId() const
PDG identifier.
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:464
edm::EDGetTokenT< reco::PFMETCollection > tokenPFMET_
#define P
tuple pfMET
Definition: pfMET_cfi.py:7
edm::EDGetTokenT< reco::PFCandidateCollection > tokenPFCandidates_
std::vector< PFCandidatePtr > pfCandidates(const PFJet &jet, int particleId, bool sort=true)
reco::TrackRef trackRef() const
Definition: PFCandidate.cc:433
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Event.h:120
T sqrt(T t)
Definition: SSEVec.h:48
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
bool isNull() const
Checks for null.
Definition: Ref.h:249
virtual double px() const
x coordinate of momentum vector
Particle reconstructed by the particle flow algorithm.
Definition: PFCandidate.h:39
tuple cout
Definition: gather_cfg.py:121
virtual double py() const
y coordinate of momentum vector
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40

Member Data Documentation

const bool ChargedHadronTrackResolutionFilter::debug_
private

Definition at line 45 of file ChargedHadronTrackResolutionFilter.cc.

Referenced by filter().

const double ChargedHadronTrackResolutionFilter::metSignifMin_
private

Definition at line 41 of file ChargedHadronTrackResolutionFilter.cc.

Referenced by filter().

const double ChargedHadronTrackResolutionFilter::p1_
private

Definition at line 42 of file ChargedHadronTrackResolutionFilter.cc.

Referenced by filter().

const double ChargedHadronTrackResolutionFilter::p2_
private

Definition at line 43 of file ChargedHadronTrackResolutionFilter.cc.

Referenced by filter().

const double ChargedHadronTrackResolutionFilter::p3_
private

Definition at line 44 of file ChargedHadronTrackResolutionFilter.cc.

Referenced by filter().

const double ChargedHadronTrackResolutionFilter::ptMin_
private

Definition at line 40 of file ChargedHadronTrackResolutionFilter.cc.

Referenced by filter().

const bool ChargedHadronTrackResolutionFilter::taggingMode_
private

Definition at line 39 of file ChargedHadronTrackResolutionFilter.cc.

Referenced by filter().

edm::EDGetTokenT<reco::PFCandidateCollection> ChargedHadronTrackResolutionFilter::tokenPFCandidates_
private

Definition at line 37 of file ChargedHadronTrackResolutionFilter.cc.

Referenced by filter().

edm::EDGetTokenT<reco::PFMETCollection> ChargedHadronTrackResolutionFilter::tokenPFMET_
private

Definition at line 38 of file ChargedHadronTrackResolutionFilter.cc.

Referenced by filter().