CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
PFRecoTauAlgorithm Class Reference

#include <PFRecoTauAlgorithm.h>

Inheritance diagram for PFRecoTauAlgorithm:
PFRecoTauAlgorithmBase

Public Member Functions

reco::PFTau buildPFTau (const reco::PFTauTagInfoRef &, const reco::Vertex &)
 
 PFRecoTauAlgorithm ()
 
 PFRecoTauAlgorithm (const edm::ParameterSet &)
 
 ~PFRecoTauAlgorithm ()
 
- Public Member Functions inherited from PFRecoTauAlgorithmBase
 PFRecoTauAlgorithmBase ()
 
 PFRecoTauAlgorithmBase (const edm::ParameterSet &)
 
void setTransientTrackBuilder (const TransientTrackBuilder *)
 
virtual ~PFRecoTauAlgorithmBase ()
 

Private Member Functions

bool checkPos (const std::vector< math::XYZPoint > &, const math::XYZPoint &) const
 

Private Attributes

bool AddEllipseGammas_
 
double AreaMetric_recoElements_maxabsEta_
 
uint32_t ChargedHadrCand_IsolAnnulus_minNhits_
 
double ChargedHadrCandLeadChargedHadrCand_tksmaxDZ_
 
std::string DataType_
 
std::string ECALIsolConeMetric_
 
double ECALIsolConeSize_max_
 
double ECALIsolConeSize_min_
 
std::string ECALIsolConeSizeFormula_
 
std::string ECALSignalConeMetric_
 
double ECALSignalConeSize_max_
 
double ECALSignalConeSize_min_
 
std::string ECALSignalConeSizeFormula_
 
double EcalStripSumE_deltaEta_
 
double EcalStripSumE_deltaPhiOverQ_maxValue_
 
double EcalStripSumE_deltaPhiOverQ_minValue_
 
double EcalStripSumE_minClusEnergy_
 
double ElecPreIDLeadTkMatch_maxDR_
 
std::string HCALIsolConeMetric_
 
double HCALIsolConeSize_max_
 
double HCALIsolConeSize_min_
 
std::string HCALIsolConeSizeFormula_
 
std::string HCALSignalConeMetric_
 
double HCALSignalConeSize_max_
 
double HCALSignalConeSize_min_
 
std::string HCALSignalConeSizeFormula_
 
double LeadPFCand_minPt_
 
double LeadTrack_minPt_
 
std::string MatchingConeMetric_
 
double MatchingConeSize_max_
 
double MatchingConeSize_min_
 
std::string MatchingConeSizeFormula_
 
double MaxEtInEllipse_
 
double maximumForElectrionPreIDOutput_
 
TFormula myECALIsolConeSizeTFormula
 
TFormula myECALSignalConeSizeTFormula
 
TFormula myHCALIsolConeSizeTFormula
 
TFormula myHCALSignalConeSizeTFormula
 
TFormula myMatchingConeSizeTFormula
 
TFormula myTrackerIsolConeSizeTFormula
 
TFormula myTrackerSignalConeSizeTFormula
 
bool putNeutralHadronsInP4_
 
double Rphi_
 
uint32_t Track_IsolAnnulus_minNhits_
 
std::string TrackerIsolConeMetric_
 
double TrackerIsolConeSize_max_
 
double TrackerIsolConeSize_min_
 
std::string TrackerIsolConeSizeFormula_
 
std::string TrackerSignalConeMetric_
 
double TrackerSignalConeSize_max_
 
double TrackerSignalConeSize_min_
 
std::string TrackerSignalConeSizeFormula_
 
double TrackLeadTrack_maxDZ_
 
bool UseChargedHadrCandLeadChargedHadrCand_tksDZconstraint_
 
bool UseTrackLeadTrackDZconstraint_
 

Additional Inherited Members

- Protected Attributes inherited from PFRecoTauAlgorithmBase
const TransientTrackBuilderTransientTrackBuilder_
 

Detailed Description

Definition at line 21 of file PFRecoTauAlgorithm.h.

Constructor & Destructor Documentation

PFRecoTauAlgorithm::PFRecoTauAlgorithm ( )
PFRecoTauAlgorithm::PFRecoTauAlgorithm ( const edm::ParameterSet iConfig)

Definition at line 17 of file PFRecoTauAlgorithm.cc.

References AddEllipseGammas_, AreaMetric_recoElements_maxabsEta_, ChargedHadrCand_IsolAnnulus_minNhits_, ChargedHadrCandLeadChargedHadrCand_tksmaxDZ_, TauTagTools::computeConeSizeTFormula(), DataType_, ECALIsolConeMetric_, ECALIsolConeSize_max_, ECALIsolConeSize_min_, ECALIsolConeSizeFormula_, ECALSignalConeMetric_, ECALSignalConeSize_max_, ECALSignalConeSize_min_, ECALSignalConeSizeFormula_, EcalStripSumE_deltaEta_, EcalStripSumE_deltaPhiOverQ_maxValue_, EcalStripSumE_deltaPhiOverQ_minValue_, EcalStripSumE_minClusEnergy_, ElecPreIDLeadTkMatch_maxDR_, edm::ParameterSet::exists(), edm::ParameterSet::getParameter(), HCALIsolConeMetric_, HCALIsolConeSize_max_, HCALIsolConeSize_min_, HCALIsolConeSizeFormula_, HCALSignalConeMetric_, HCALSignalConeSize_max_, HCALSignalConeSize_min_, HCALSignalConeSizeFormula_, LeadPFCand_minPt_, LeadTrack_minPt_, MatchingConeMetric_, MatchingConeSize_max_, MatchingConeSize_min_, MatchingConeSizeFormula_, MaxEtInEllipse_, maximumForElectrionPreIDOutput_, myECALIsolConeSizeTFormula, myECALSignalConeSizeTFormula, myHCALIsolConeSizeTFormula, myHCALSignalConeSizeTFormula, myMatchingConeSizeTFormula, myTrackerIsolConeSizeTFormula, myTrackerSignalConeSizeTFormula, putNeutralHadronsInP4_, Rphi_, AlCaHLTBitMon_QueryRunRegistry::string, Track_IsolAnnulus_minNhits_, TrackerIsolConeMetric_, TrackerIsolConeSize_max_, TrackerIsolConeSize_min_, TrackerIsolConeSizeFormula_, TrackerSignalConeMetric_, TrackerSignalConeSize_max_, TrackerSignalConeSize_min_, TrackerSignalConeSizeFormula_, TrackLeadTrack_maxDZ_, UseChargedHadrCandLeadChargedHadrCand_tksDZconstraint_, and UseTrackLeadTrackDZconstraint_.

17  :PFRecoTauAlgorithmBase(iConfig){
18  LeadPFCand_minPt_ = iConfig.getParameter<double>("LeadPFCand_minPt");
19 
21  = iConfig.getParameter<bool>("UseChargedHadrCandLeadChargedHadrCand_tksDZconstraint");
22 
24  = iConfig.getParameter<double>("ChargedHadrCandLeadChargedHadrCand_tksmaxDZ");
25 
26  LeadTrack_minPt_ = iConfig.getParameter<double>("LeadTrack_minPt");
27  UseTrackLeadTrackDZconstraint_ = iConfig.getParameter<bool>("UseTrackLeadTrackDZconstraint");
28  TrackLeadTrack_maxDZ_ = iConfig.getParameter<double>("TrackLeadTrack_maxDZ");
29 
30  MatchingConeMetric_ = iConfig.getParameter<std::string>("MatchingConeMetric");
31  MatchingConeSizeFormula_ = iConfig.getParameter<std::string>("MatchingConeSizeFormula");
32  MatchingConeSize_min_ = iConfig.getParameter<double>("MatchingConeSize_min");
33  MatchingConeSize_max_ = iConfig.getParameter<double>("MatchingConeSize_max");
34  TrackerSignalConeMetric_ = iConfig.getParameter<std::string>("TrackerSignalConeMetric");
35  TrackerSignalConeSizeFormula_ = iConfig.getParameter<std::string>("TrackerSignalConeSizeFormula");
36  TrackerSignalConeSize_min_ = iConfig.getParameter<double>("TrackerSignalConeSize_min");
37  TrackerSignalConeSize_max_ = iConfig.getParameter<double>("TrackerSignalConeSize_max");
38  TrackerIsolConeMetric_ = iConfig.getParameter<std::string>("TrackerIsolConeMetric");
39  TrackerIsolConeSizeFormula_ = iConfig.getParameter<std::string>("TrackerIsolConeSizeFormula");
40  TrackerIsolConeSize_min_ = iConfig.getParameter<double>("TrackerIsolConeSize_min");
41  TrackerIsolConeSize_max_ = iConfig.getParameter<double>("TrackerIsolConeSize_max");
42  ECALSignalConeMetric_ = iConfig.getParameter<std::string>("ECALSignalConeMetric");
43  ECALSignalConeSizeFormula_ = iConfig.getParameter<std::string>("ECALSignalConeSizeFormula");
44  ECALSignalConeSize_min_ = iConfig.getParameter<double>("ECALSignalConeSize_min");
45  ECALSignalConeSize_max_ = iConfig.getParameter<double>("ECALSignalConeSize_max");
46  ECALIsolConeMetric_ = iConfig.getParameter<std::string>("ECALIsolConeMetric");
47  ECALIsolConeSizeFormula_ = iConfig.getParameter<std::string>("ECALIsolConeSizeFormula");
48  ECALIsolConeSize_min_ = iConfig.getParameter<double>("ECALIsolConeSize_min");
49  ECALIsolConeSize_max_ = iConfig.getParameter<double>("ECALIsolConeSize_max");
50  HCALSignalConeMetric_ = iConfig.getParameter<std::string>("HCALSignalConeMetric");
51  HCALSignalConeSizeFormula_ = iConfig.getParameter<std::string>("HCALSignalConeSizeFormula");
52  HCALSignalConeSize_min_ = iConfig.getParameter<double>("HCALSignalConeSize_min");
53  HCALSignalConeSize_max_ = iConfig.getParameter<double>("HCALSignalConeSize_max");
54  HCALIsolConeMetric_ = iConfig.getParameter<std::string>("HCALIsolConeMetric");
55  HCALIsolConeSizeFormula_ = iConfig.getParameter<std::string>("HCALIsolConeSizeFormula");
56  HCALIsolConeSize_min_ = iConfig.getParameter<double>("HCALIsolConeSize_min");
57  HCALIsolConeSize_max_ = iConfig.getParameter<double>("HCALIsolConeSize_max");
58 
59  putNeutralHadronsInP4_ = iConfig.exists("putNeutralHadronsInP4") ?
60  iConfig.getParameter<bool>("putNeutralHadronsInP4") : false;
61 
62  // get paramaeters for ellipse EELL
63  Rphi_ = iConfig.getParameter<double>("Rphi");
64  MaxEtInEllipse_ = iConfig.getParameter<double>("MaxEtInEllipse");
65  AddEllipseGammas_ = iConfig.getParameter<bool>("AddEllipseGammas");
66  // EELL
67 
68  AreaMetric_recoElements_maxabsEta_ = iConfig.getParameter<double>("AreaMetric_recoElements_maxabsEta");
69  ChargedHadrCand_IsolAnnulus_minNhits_ = iConfig.getParameter<uint32_t>("ChargedHadrCand_IsolAnnulus_minNhits");
70  Track_IsolAnnulus_minNhits_ = iConfig.getParameter<uint32_t>("Track_IsolAnnulus_minNhits");
71 
72  ElecPreIDLeadTkMatch_maxDR_ = iConfig.getParameter<double>("ElecPreIDLeadTkMatch_maxDR");
73  EcalStripSumE_minClusEnergy_ = iConfig.getParameter<double>("EcalStripSumE_minClusEnergy");
74  EcalStripSumE_deltaEta_ = iConfig.getParameter<double>("EcalStripSumE_deltaEta");
75  EcalStripSumE_deltaPhiOverQ_minValue_ = iConfig.getParameter<double>("EcalStripSumE_deltaPhiOverQ_minValue");
76  EcalStripSumE_deltaPhiOverQ_maxValue_ = iConfig.getParameter<double>("EcalStripSumE_deltaPhiOverQ_maxValue");
77  maximumForElectrionPreIDOutput_ = iConfig.getParameter<double>("maximumForElectrionPreIDOutput");
78 
79  DataType_ = iConfig.getParameter<std::string>("DataType");
80 
81  //TFormula computation
82  myMatchingConeSizeTFormula = TauTagTools::computeConeSizeTFormula(MatchingConeSizeFormula_,"Matching cone size");
83  //Charged particles cones
84  myTrackerSignalConeSizeTFormula = TauTagTools::computeConeSizeTFormula(TrackerSignalConeSizeFormula_,"Tracker signal cone size");
85  myTrackerIsolConeSizeTFormula = TauTagTools::computeConeSizeTFormula(TrackerIsolConeSizeFormula_,"Tracker isolation cone size");
86  //Gamma candidates cones
87  myECALSignalConeSizeTFormula = TauTagTools::computeConeSizeTFormula(ECALSignalConeSizeFormula_,"ECAL signal cone size");
88  myECALIsolConeSizeTFormula = TauTagTools::computeConeSizeTFormula(ECALIsolConeSizeFormula_,"ECAL isolation cone size");
89  //Neutral hadrons cones
90  myHCALSignalConeSizeTFormula = TauTagTools::computeConeSizeTFormula(HCALSignalConeSizeFormula_,"HCAL signal cone size");
91  myHCALIsolConeSizeTFormula = TauTagTools::computeConeSizeTFormula(HCALIsolConeSizeFormula_,"HCAL isolation cone size");
92 }
std::string ECALIsolConeSizeFormula_
T getParameter(std::string const &) const
std::string TrackerIsolConeSizeFormula_
double maximumForElectrionPreIDOutput_
std::string ECALSignalConeSizeFormula_
uint32_t ChargedHadrCand_IsolAnnulus_minNhits_
bool exists(std::string const &parameterName) const
checks if a parameter exists
std::string HCALSignalConeSizeFormula_
bool UseChargedHadrCandLeadChargedHadrCand_tksDZconstraint_
double EcalStripSumE_deltaPhiOverQ_minValue_
TFormula myHCALSignalConeSizeTFormula
double ChargedHadrCandLeadChargedHadrCand_tksmaxDZ_
TFormula myTrackerSignalConeSizeTFormula
std::string ECALSignalConeMetric_
TFormula myECALSignalConeSizeTFormula
double AreaMetric_recoElements_maxabsEta_
uint32_t Track_IsolAnnulus_minNhits_
TFormula computeConeSizeTFormula(const std::string &ConeSizeFormula, const char *errorMessage)
std::string ECALIsolConeMetric_
std::string TrackerSignalConeMetric_
std::string MatchingConeSizeFormula_
TFormula myMatchingConeSizeTFormula
double EcalStripSumE_deltaPhiOverQ_maxValue_
TFormula myHCALIsolConeSizeTFormula
TFormula myTrackerIsolConeSizeTFormula
std::string HCALIsolConeSizeFormula_
std::string MatchingConeMetric_
std::string TrackerIsolConeMetric_
std::string HCALSignalConeMetric_
std::string TrackerSignalConeSizeFormula_
TFormula myECALIsolConeSizeTFormula
std::string HCALIsolConeMetric_
PFRecoTauAlgorithm::~PFRecoTauAlgorithm ( )
inline

Definition at line 25 of file PFRecoTauAlgorithm.h.

References buildPFTau(), and checkPos().

25 {}

Member Function Documentation

PFTau PFRecoTauAlgorithm::buildPFTau ( const reco::PFTauTagInfoRef myPFTauTagInfoRef,
const reco::Vertex myPV 
)
virtual

Implements PFRecoTauAlgorithmBase.

Definition at line 95 of file PFRecoTauAlgorithm.cc.

References funct::abs(), AddEllipseGammas_, groupFilesInBlocks::block, TransientTrackBuilder::build(), ChargedHadrCand_IsolAnnulus_minNhits_, ChargedHadrCandLeadChargedHadrCand_tksmaxDZ_, checkPos(), TauElementsOperators::computeConeSize(), TauTagTools::computeDeltaR(), DataType_, spr::deltaEta, MuonCkfTrajectoryBuilder_cfi::deltaPhi, allConversions_cfi::DeltaPhi, deltaR(), HiRegitMuonDetachedTripletStep_cff::DeltaR, reco::PFBlockElement::ECAL, ECALIsolConeMetric_, ECALIsolConeSize_max_, ECALIsolConeSize_min_, ECALSignalConeMetric_, ECALSignalConeSize_max_, ECALSignalConeSize_min_, EcalStripSumE_deltaEta_, EcalStripSumE_deltaPhiOverQ_maxValue_, EcalStripSumE_deltaPhiOverQ_minValue_, EcalStripSumE_minClusEnergy_, allElectronIsolations_cfi::elements, reco::PFBlock::elements(), stringResolutionProvider_cfi::et, TauTagTools::filteredPFChargedHadrCandsByNumTrkHits(), TauTagTools::filteredTracksByNumTrkHits(), objects.autophobj::float, reco::PFBlockElement::HCAL, HCALIsolConeMetric_, HCALIsolConeSize_max_, HCALIsolConeSize_min_, HCALSignalConeMetric_, HCALSignalConeSize_max_, HCALSignalConeSize_min_, mps_fire::i, createfilelist::int, edm::Ptr< T >::isNonnull(), edm::Ref< C, T, F >::isNonnull(), LeadPFCand_minPt_, PFTauElementsOperators::leadPFChargedHadrCand(), TauElementsOperators::leadTk(), LeadTrack_minPt_, MatchingConeMetric_, MatchingConeSize_max_, MatchingConeSize_min_, MaxEtInEllipse_, maximumForElectrionPreIDOutput_, reco::LeafCandidate::momentum(), reco::PFCandidate::mva_e_pi(), myECALIsolConeSizeTFormula, myECALSignalConeSizeTFormula, myHCALIsolConeSizeTFormula, myHCALSignalConeSizeTFormula, myMatchingConeSizeTFormula, myTrackerIsolConeSizeTFormula, myTrackerSignalConeSizeTFormula, PFTauElementsOperators::PFCandsInCone(), PFTauElementsOperators::PFChargedHadrCandsInAnnulus(), PFTauElementsOperators::PFChargedHadrCandsInCone(), PFTauElementsOperators::PFGammaCandsInAnnulus(), PFTauElementsOperators::PFGammaCandsInCone(), PFTauElementsOperators::PFGammaCandsInOutEllipse(), PFTauElementsOperators::PFNeutrHadrCandsInAnnulus(), PFTauElementsOperators::PFNeutrHadrCandsInCone(), PFTauAlgo_ChargedHadrCand_minPt_, PFTauAlgo_GammaCand_minPt_, PFTauAlgo_NeutrHadrCand_minPt_, PFTauAlgo_PFCand_minPt_, PFTauAlgo_Track_minPt_, reco::Vertex::position(), reco::PFCandidate::positionAtECALEntrance(), EnergyCorrector::pt, reco::LeafCandidate::pt(), putNeutralHadronsInP4_, Rphi_, reco::PFTau::setpfTauTagInfoRef(), IPTools::signedTransverseImpactParameter(), funct::sin(), edm::OwnVector< T, P >::size(), Track_IsolAnnulus_minNhits_, TrackerIsolConeMetric_, TrackerIsolConeSize_max_, TrackerIsolConeSize_min_, TrackerSignalConeMetric_, TrackerSignalConeSize_max_, TrackerSignalConeSize_min_, TrackLeadTrack_maxDZ_, reco::PFCandidate::trackRef(), TauElementsOperators::tracksInAnnulus(), TauElementsOperators::tracksInCone(), PFRecoTauAlgorithmBase::TransientTrackBuilder_, UseChargedHadrCandLeadChargedHadrCand_tksDZconstraint_, UseTrackLeadTrackDZconstraint_, reco::Vertex::x(), reco::Vertex::y(), and reco::Vertex::z().

Referenced by ~PFRecoTauAlgorithm().

96 {
97  PFJetRef myPFJet=(*myPFTauTagInfoRef).pfjetRef(); // catch a ref to the initial PFJet
98  PFTau myPFTau(std::numeric_limits<int>::quiet_NaN(),myPFJet->p4()); // create the PFTau
99 
100  myPFTau.setpfTauTagInfoRef(myPFTauTagInfoRef);
101 
102  std::vector<PFCandidatePtr> myPFCands=(*myPFTauTagInfoRef).PFCands();
103 
104  PFTauElementsOperators myPFTauElementsOperators(myPFTau);
105  double myMatchingConeSize=myPFTauElementsOperators.computeConeSize(myMatchingConeSizeTFormula,MatchingConeSize_min_,MatchingConeSize_max_);
106 
107  PFCandidatePtr myleadPFChargedCand=myPFTauElementsOperators.leadPFChargedHadrCand(MatchingConeMetric_,myMatchingConeSize,PFTauAlgo_PFCand_minPt_);
108 
109  // These two quantities always taken from the signal cone
110  PFCandidatePtr myleadPFNeutralCand;
111  PFCandidatePtr myleadPFCand;
112 
113  bool myleadPFCand_rectkavailable = false;
114  double myleadPFCand_rectkDZ = 0.;
115 
116  // Determine the SIPT of the lead track
117  if(myleadPFChargedCand.isNonnull()) {
118  myPFTau.setleadPFChargedHadrCand(myleadPFChargedCand);
119  TrackRef myleadPFCand_rectk=(*myleadPFChargedCand).trackRef();
120  if(myleadPFCand_rectk.isNonnull()) {
121  myleadPFCand_rectkavailable=true;
122  myleadPFCand_rectkDZ=(*myleadPFCand_rectk).dz(myPV.position());
123  if(TransientTrackBuilder_!=0) {
124  const TransientTrack myleadPFCand_rectransienttk=TransientTrackBuilder_->build(&(*myleadPFCand_rectk));
125  GlobalVector myPFJetdir((*myPFJet).px(),(*myPFJet).py(),(*myPFJet).pz());
126  if(IPTools::signedTransverseImpactParameter(myleadPFCand_rectransienttk,myPFJetdir,myPV).first)
127  myPFTau.setleadPFChargedHadrCandsignedSipt(
128  IPTools::signedTransverseImpactParameter(myleadPFCand_rectransienttk,myPFJetdir,myPV).second.significance());
129  }
130  }
131  }
132 
133  //Building PF Components
134  if (myleadPFChargedCand.isNonnull())
135  {
136  math::XYZVector tauAxis = myleadPFChargedCand->momentum();
137  // Compute energy of the PFTau considering only inner constituents
138  // (inner == pfcandidates inside a cone which is equal to the maximum value of the signal cone)
139  // The axis is built about the lead charged hadron
140  std::vector<PFCandidatePtr> myTmpPFCandsInSignalCone =
141  myPFTauElementsOperators.PFCandsInCone(tauAxis,TrackerSignalConeMetric_,TrackerSignalConeSize_max_,0.5);
142  math::XYZTLorentzVector tmpLorentzVect(0.,0.,0.,0.);
143 
144  double jetOpeningAngle = 0.0;
145  for (std::vector<PFCandidatePtr>::const_iterator iCand = myTmpPFCandsInSignalCone.begin();
146  iCand != myTmpPFCandsInSignalCone.end(); iCand++)
147  {
148  //find the maximum opening angle of the jet (now a parameter in available TFormulas)
149  double deltaRToSeed = TauTagTools::computeDeltaR(tauAxis, (**iCand).momentum());
150  if (deltaRToSeed > jetOpeningAngle)
151  jetOpeningAngle = deltaRToSeed;
152 
153  tmpLorentzVect+=(**iCand).p4();
154  }
155 
156  //Setting the myPFTau four momentum as the one made from the signal cone constituents.
157  double energy = tmpLorentzVect.energy();
158  double transverseEnergy = tmpLorentzVect.pt();
159  myPFTau.setP4(tmpLorentzVect);
160 
161  // Compute the cone sizes
162  double myTrackerSignalConeSize = myPFTauElementsOperators.computeConeSize(
163  myTrackerSignalConeSizeTFormula, TrackerSignalConeSize_min_, TrackerSignalConeSize_max_, transverseEnergy, energy, jetOpeningAngle);
164  double myTrackerIsolConeSize = myPFTauElementsOperators.computeConeSize(
165  myTrackerIsolConeSizeTFormula, TrackerIsolConeSize_min_, TrackerIsolConeSize_max_, transverseEnergy, energy, jetOpeningAngle);
166  double myECALSignalConeSize = myPFTauElementsOperators.computeConeSize(
167  myECALSignalConeSizeTFormula, ECALSignalConeSize_min_, ECALSignalConeSize_max_, transverseEnergy, energy, jetOpeningAngle);
168  double myECALIsolConeSize = myPFTauElementsOperators.computeConeSize(
169  myECALIsolConeSizeTFormula, ECALIsolConeSize_min_, ECALIsolConeSize_max_, transverseEnergy, energy, jetOpeningAngle);
170  double myHCALSignalConeSize = myPFTauElementsOperators.computeConeSize(
171  myHCALSignalConeSizeTFormula, HCALSignalConeSize_min_, HCALSignalConeSize_max_, transverseEnergy, energy, jetOpeningAngle);
172  double myHCALIsolConeSize = myPFTauElementsOperators.computeConeSize(
173  myHCALIsolConeSizeTFormula, HCALIsolConeSize_min_, HCALIsolConeSize_max_, transverseEnergy, energy, jetOpeningAngle);
174 
175  // Signal cone collections
176  std::vector<PFCandidatePtr> mySignalPFChargedHadrCands, mySignalPFNeutrHadrCands, mySignalPFGammaCands, mySignalPFCands;
177 
178  if (UseChargedHadrCandLeadChargedHadrCand_tksDZconstraint_ && myleadPFCand_rectkavailable) {
179  mySignalPFChargedHadrCands=myPFTauElementsOperators.PFChargedHadrCandsInCone(tauAxis,
181  ChargedHadrCandLeadChargedHadrCand_tksmaxDZ_, myleadPFCand_rectkDZ, myPV);
182  }
183  else {
184  mySignalPFChargedHadrCands=myPFTauElementsOperators.PFChargedHadrCandsInCone(tauAxis,
186  }
187 
188  // Set the Charged hadronics that live in the signal cones
189  myPFTau.setsignalPFChargedHadrCands(mySignalPFChargedHadrCands);
190 
191  // Set the neurtral hadrons that live in the signal cone
192  mySignalPFNeutrHadrCands=myPFTauElementsOperators.PFNeutrHadrCandsInCone(tauAxis,
194 
195  myPFTau.setsignalPFNeutrHadrCands(mySignalPFNeutrHadrCands);
196 
197  // Compute the gammas that live in the signal cone
198  mySignalPFGammaCands=myPFTauElementsOperators.PFGammaCandsInCone(tauAxis,
200 
201  myPFTau.setsignalPFGammaCands(mySignalPFGammaCands);
202 
203  // Add charged objects to signal cone, and calculate charge
204  if(mySignalPFChargedHadrCands.size() != 0) {
205  int mySignalPFChargedHadrCands_qsum=0;
206  for(size_t i = 0; i < mySignalPFChargedHadrCands.size(); i++) {
207  mySignalPFChargedHadrCands_qsum += mySignalPFChargedHadrCands[i]->charge();
208  mySignalPFCands.push_back(mySignalPFChargedHadrCands[i]);
209  }
210  myPFTau.setCharge(mySignalPFChargedHadrCands_qsum);
211  }
212 
213  //Add neutral objects to signal cone
214  for(size_t i = 0; i < mySignalPFNeutrHadrCands.size(); i++) {
215  mySignalPFCands.push_back(mySignalPFNeutrHadrCands[i]);
216  }
217 
218  // For the signal gammas, keep track of the highest pt object
219  double maxSignalGammaPt = 0.;
220  for(size_t i = 0; i < mySignalPFGammaCands.size(); i++) {
221  if(mySignalPFGammaCands[i]->pt() > maxSignalGammaPt) {
222  myleadPFNeutralCand = mySignalPFGammaCands[i];
223  maxSignalGammaPt = mySignalPFGammaCands[i]->pt();
224  }
225  mySignalPFCands.push_back(mySignalPFGammaCands[i]);
226  }
227  myPFTau.setsignalPFCands(mySignalPFCands);
228  // Set leading gamma
229  myPFTau.setleadPFNeutralCand(myleadPFNeutralCand);
230 
231  // Logic to determine lead PFCand. If the lead charged object
232  // is above the threshold, take that. If the lead charged object is less
233  // than the threshold (but exists), AND there exists a gamma above the threshold
234  // take the gamma as the leadPFCand. Otherwise it is null.
235 
236  if(myleadPFChargedCand->pt() > LeadPFCand_minPt_) {
237  myPFTau.setleadPFCand(myleadPFChargedCand);
238  } else if (maxSignalGammaPt > LeadPFCand_minPt_) {
239  myPFTau.setleadPFCand(myleadPFNeutralCand);
240  }
241 
242  // Declare isolation collections
243  std::vector<PFCandidatePtr> myUnfilteredIsolPFChargedHadrCands, myIsolPFNeutrHadrCands, myIsolPFGammaCands, myIsolPFCands;
244 
245  // Build unfiltered isolation collection
246  if(UseChargedHadrCandLeadChargedHadrCand_tksDZconstraint_ && myleadPFCand_rectkavailable) {
247  myUnfilteredIsolPFChargedHadrCands=myPFTauElementsOperators.PFChargedHadrCandsInAnnulus(
248  tauAxis,TrackerSignalConeMetric_,myTrackerSignalConeSize,TrackerIsolConeMetric_,myTrackerIsolConeSize,
250  } else {
251  myUnfilteredIsolPFChargedHadrCands=myPFTauElementsOperators.PFChargedHadrCandsInAnnulus(
252  tauAxis,TrackerSignalConeMetric_,myTrackerSignalConeSize,TrackerIsolConeMetric_,myTrackerIsolConeSize,
254  }
255 
256  // Filter isolation annulus charge dhadrons with additional nHits quality cut
257  // (note that other cuts [pt, chi2, are already cut on])
258  std::vector<PFCandidatePtr> myIsolPFChargedHadrCands;
259  myIsolPFChargedHadrCands = TauTagTools::filteredPFChargedHadrCandsByNumTrkHits(
260  myUnfilteredIsolPFChargedHadrCands, ChargedHadrCand_IsolAnnulus_minNhits_);
261 
262  myPFTau.setisolationPFChargedHadrCands(myIsolPFChargedHadrCands);
263 
264  // Fill neutral hadrons
265  myIsolPFNeutrHadrCands = myPFTauElementsOperators.PFNeutrHadrCandsInAnnulus(
266  tauAxis, HCALSignalConeMetric_, myHCALSignalConeSize, HCALIsolConeMetric_,
267  myHCALIsolConeSize, PFTauAlgo_NeutrHadrCand_minPt_);
268  myPFTau.setisolationPFNeutrHadrCands(myIsolPFNeutrHadrCands);
269 
270  // Fill gamma candidates
271  myIsolPFGammaCands = myPFTauElementsOperators.PFGammaCandsInAnnulus(
272  tauAxis, ECALSignalConeMetric_, myECALSignalConeSize, ECALIsolConeMetric_,
273  myECALIsolConeSize, PFTauAlgo_GammaCand_minPt_);
274  myPFTau.setisolationPFGammaCands(myIsolPFGammaCands);
275 
276  //Incorporate converted gammas from isolation ellipse into signal ... ELLL
277  //Get pair with in/out elements using the isoPFGammaCandidates set by default
278  if(AddEllipseGammas_) {
279  double rPhi;
280  if(Rphi_ >= 1.)
281  rPhi = Rphi_*myECALSignalConeSize;
282  else
283  rPhi = Rphi_;
284 
285  std::pair<std::vector<PFCandidatePtr>,std::vector<PFCandidatePtr>> elementsInOutEllipse =
286  myPFTauElementsOperators.PFGammaCandsInOutEllipse(myIsolPFGammaCands, *myleadPFCand, rPhi, myECALSignalConeSize, MaxEtInEllipse_);
287 
288  std::vector<PFCandidatePtr> elementsInEllipse = elementsInOutEllipse.first;
289  std::vector<PFCandidatePtr> elementsOutEllipse = elementsInOutEllipse.second;
290  //add the inside elements to signal PFCandidates and reset signal PFCands
291  for(std::vector<PFCandidatePtr>::const_iterator inEllipseIt = elementsInEllipse.begin(); inEllipseIt != elementsInEllipse.end(); inEllipseIt++){
292  mySignalPFCands.push_back(*inEllipseIt);
293  mySignalPFGammaCands.push_back(*inEllipseIt);
294  }
295  myPFTau.setsignalPFCands(mySignalPFCands);
296  //redefine isoPFGammaCandidates to be the outside elements
297  myIsolPFGammaCands=elementsOutEllipse;
298  myPFTau.setisolationPFGammaCands(myIsolPFGammaCands);
299  }
300 
301 
302  // Fill isolation collections, and calculate pt sum in isolation cone
303  float myIsolPFChargedHadrCands_Ptsum = 0.;
304  float myIsolPFGammaCands_Etsum = 0.;
305  for(size_t i = 0; i < myIsolPFChargedHadrCands.size(); i++) {
306  myIsolPFChargedHadrCands_Ptsum += myIsolPFChargedHadrCands[i]->pt();
307  myIsolPFCands.push_back(myIsolPFChargedHadrCands[i]);
308  }
309  myPFTau.setisolationPFChargedHadrCandsPtSum(myIsolPFChargedHadrCands_Ptsum);
310 
311  // Put neutral hadrons into collection
312  for(size_t i = 0; i < myIsolPFNeutrHadrCands.size(); i++) {
313  myIsolPFCands.push_back(myIsolPFNeutrHadrCands[i]);
314  }
315 
316  for(size_t i = 0; i < myIsolPFGammaCands.size(); i++) {
317  myIsolPFGammaCands_Etsum += myIsolPFGammaCands[i]->et();
318  myIsolPFCands.push_back(myIsolPFGammaCands[i]);
319  }
320  myPFTau.setisolationPFGammaCandsEtSum(myIsolPFGammaCands_Etsum);
321  myPFTau.setisolationPFCands(myIsolPFCands);
322 
323  //Making the alternateLorentzVector, i.e. direction with only signal components
324  math::XYZTLorentzVector alternatLorentzVect(0.,0.,0.,0.);
325  for (std::vector<PFCandidatePtr>::const_iterator iGammaCand = mySignalPFGammaCands.begin();
326  iGammaCand != mySignalPFGammaCands.end(); iGammaCand++) {
327  alternatLorentzVect+=(**iGammaCand).p4();
328  }
329 
330  for (std::vector<PFCandidatePtr>::const_iterator iChargedHadrCand = mySignalPFChargedHadrCands.begin();
331  iChargedHadrCand != mySignalPFChargedHadrCands.end(); iChargedHadrCand++) {
332  alternatLorentzVect+=(**iChargedHadrCand).p4();
333  }
334  // Alternate lorentz std::vector is always charged + gammas
335  myPFTau.setalternatLorentzVect(alternatLorentzVect);
336 
337  // Optionally add the neutral hadrons to the p4
339  for (std::vector<PFCandidatePtr>::const_iterator iNeutralHadrCand = mySignalPFNeutrHadrCands.begin();
340  iNeutralHadrCand != mySignalPFNeutrHadrCands.end(); iNeutralHadrCand++) {
341  alternatLorentzVect+=(**iNeutralHadrCand).p4();
342  }
343  }
344  myPFTau.setP4(alternatLorentzVect);
345 
346  // Set tau vertex as PV vertex
347  myPFTau.setVertex(math::XYZPoint(myPV.x(), myPV.y(), myPV.z()));
348  }
349 
350  // set the leading, signal cone and isolation annulus Tracks (the initial list of Tracks was catched through a JetTracksAssociation
351  // object, not through the charged hadr. PFCandidates inside the PFJet ;
352  // the motivation for considering these objects is the need for checking that a selection by the
353  // charged hadr. PFCandidates is equivalent to a selection by the rec. Tracks.)
354  TrackRef myleadTk=myPFTauElementsOperators.leadTk(MatchingConeMetric_,myMatchingConeSize,LeadTrack_minPt_);
355  myPFTau.setleadTrack(myleadTk);
356  if(myleadTk.isNonnull()){
357  double myleadTkDZ = (*myleadTk).dz(myPV.position());
358  double myTrackerSignalConeSize=myPFTauElementsOperators.computeConeSize(myTrackerSignalConeSizeTFormula,TrackerSignalConeSize_min_,TrackerSignalConeSize_max_);
359  double myTrackerIsolConeSize=myPFTauElementsOperators.computeConeSize(myTrackerIsolConeSizeTFormula,TrackerIsolConeSize_min_,TrackerIsolConeSize_max_);
361  myPFTau.setsignalTracks(myPFTauElementsOperators.tracksInCone((*myleadTk).momentum(),TrackerSignalConeMetric_,myTrackerSignalConeSize,PFTauAlgo_Track_minPt_,TrackLeadTrack_maxDZ_,myleadTkDZ, myPV));
362 
363  TrackRefVector myUnfilteredTracks = myPFTauElementsOperators.tracksInAnnulus((*myleadTk).momentum(),TrackerSignalConeMetric_,myTrackerSignalConeSize,TrackerIsolConeMetric_,myTrackerIsolConeSize,PFTauAlgo_Track_minPt_,TrackLeadTrack_maxDZ_,myleadTkDZ, myPV);
365  myPFTau.setisolationTracks(myFilteredTracks);
366 
367  }else{
368  myPFTau.setsignalTracks(myPFTauElementsOperators.tracksInCone((*myleadTk).momentum(),TrackerSignalConeMetric_,myTrackerSignalConeSize,PFTauAlgo_Track_minPt_));
369 
370  TrackRefVector myUnfilteredTracks = myPFTauElementsOperators.tracksInAnnulus((*myleadTk).momentum(),TrackerSignalConeMetric_,myTrackerSignalConeSize,TrackerIsolConeMetric_,myTrackerIsolConeSize,PFTauAlgo_Track_minPt_);
372  myPFTau.setisolationTracks(myFilteredTracks);
373  }
374  }
375 
376 
377  /* For elecron rejection */
378  double myECALenergy = 0.;
379  double myHCALenergy = 0.;
380  double myHCALenergy3x3 = 0.;
381  double myMaximumHCALPFClusterE = 0.;
382  double myMaximumHCALPFClusterEt = 0.;
383  double myStripClusterE = 0.;
384  double myEmfrac = -1.;
385  double myElectronPreIDOutput = -1111.;
386  bool myElecPreid = false;
387  reco::TrackRef myElecTrk;
388 
389  typedef std::pair<reco::PFBlockRef, unsigned> ElementInBlock;
390  typedef std::vector< ElementInBlock > ElementsInBlocks;
391 
392  //Use the electron rejection only in case there is a charged leading pion
393  if(myleadPFChargedCand.isNonnull()){
394  myElectronPreIDOutput = myleadPFChargedCand->mva_e_pi();
395 
396  math::XYZPointF myElecTrkEcalPos = myleadPFChargedCand->positionAtECALEntrance();
397  myElecTrk = myleadPFChargedCand->trackRef();//Electron candidate
398 
399  if(myElecTrk.isNonnull()) {
400  //FROM AOD
401  if(DataType_ == "AOD"){
402  // Corrected Cluster energies
403  for(int i=0;i<(int)myPFCands.size();i++){
404  myHCALenergy += myPFCands[i]->hcalEnergy();
405  myECALenergy += myPFCands[i]->ecalEnergy();
406 
407  math::XYZPointF candPos;
408  if (myPFCands[i]->particleId()==1 || myPFCands[i]->particleId()==2)//if charged hadron or electron
409  candPos = myPFCands[i]->positionAtECALEntrance();
410  else
411  candPos = math::XYZPointF(myPFCands[i]->px(),myPFCands[i]->py(),myPFCands[i]->pz());
412 
413  double deltaR = ROOT::Math::VectorUtil::DeltaR(myElecTrkEcalPos,candPos);
414  double deltaPhi = ROOT::Math::VectorUtil::DeltaPhi(myElecTrkEcalPos,candPos);
415  double deltaEta = std::abs(myElecTrkEcalPos.eta()-candPos.eta());
416  double deltaPhiOverQ = deltaPhi/(double)myElecTrk->charge();
417 
418  if (myPFCands[i]->ecalEnergy() >= EcalStripSumE_minClusEnergy_ && deltaEta < EcalStripSumE_deltaEta_ &&
420  myStripClusterE += myPFCands[i]->ecalEnergy();
421  }
422  if (deltaR<0.184) {
423  myHCALenergy3x3 += myPFCands[i]->hcalEnergy();
424  }
425  if (myPFCands[i]->hcalEnergy()>myMaximumHCALPFClusterE) {
426  myMaximumHCALPFClusterE = myPFCands[i]->hcalEnergy();
427  }
428  if ((myPFCands[i]->hcalEnergy()*fabs(sin(candPos.Theta())))>myMaximumHCALPFClusterEt) {
429  myMaximumHCALPFClusterEt = (myPFCands[i]->hcalEnergy()*fabs(sin(candPos.Theta())));
430  }
431  }
432 
433  } else if(DataType_ == "RECO"){ //From RECO
434  // Against double counting of clusters
435  std::vector<math::XYZPoint> hcalPosV; hcalPosV.clear();
436  std::vector<math::XYZPoint> ecalPosV; ecalPosV.clear();
437  for(int i=0;i<(int)myPFCands.size();i++){
438  const ElementsInBlocks& elts = myPFCands[i]->elementsInBlocks();
439  for(ElementsInBlocks::const_iterator it=elts.begin(); it!=elts.end(); ++it) {
440  const reco::PFBlock& block = *(it->first);
441  unsigned indexOfElementInBlock = it->second;
443  assert(indexOfElementInBlock<elements.size());
444 
445  const reco::PFBlockElement& element = elements[indexOfElementInBlock];
446 
447  if(element.type()==reco::PFBlockElement::HCAL) {
448  math::XYZPoint clusPos = element.clusterRef()->position();
449  double en = (double)element.clusterRef()->energy();
450  double et = (double)element.clusterRef()->energy()*fabs(sin(clusPos.Theta()));
451  if (en>myMaximumHCALPFClusterE) {
452  myMaximumHCALPFClusterE = en;
453  }
454  if (et>myMaximumHCALPFClusterEt) {
455  myMaximumHCALPFClusterEt = et;
456  }
457  if (!checkPos(hcalPosV,clusPos)) {
458  hcalPosV.push_back(clusPos);
459  myHCALenergy += en;
460  double deltaR = ROOT::Math::VectorUtil::DeltaR(myElecTrkEcalPos,clusPos);
461  if (deltaR<0.184) {
462  myHCALenergy3x3 += en;
463  }
464  }
465  } else if(element.type()==reco::PFBlockElement::ECAL) {
466  double en = (double)element.clusterRef()->energy();
467  math::XYZPoint clusPos = element.clusterRef()->position();
468  if (!checkPos(ecalPosV,clusPos)) {
469  ecalPosV.push_back(clusPos);
470  myECALenergy += en;
471  double deltaPhi = ROOT::Math::VectorUtil::DeltaPhi(myElecTrkEcalPos,clusPos);
472  double deltaEta = std::abs(myElecTrkEcalPos.eta()-clusPos.eta());
473  double deltaPhiOverQ = deltaPhi/(double)myElecTrk->charge();
474  if (en >= EcalStripSumE_minClusEnergy_ && deltaEta<EcalStripSumE_deltaEta_ && deltaPhiOverQ > EcalStripSumE_deltaPhiOverQ_minValue_ && deltaPhiOverQ < EcalStripSumE_deltaPhiOverQ_maxValue_) {
475  myStripClusterE += en;
476  }
477  }
478  }
479  } //end elements in blocks
480  } //end loop over PFcands
481  } //end RECO case
482  } // end check for null electrk
483  } // end check for null pfChargedHadrCand
484 
485  if ((myHCALenergy+myECALenergy)>0.)
486  myEmfrac = myECALenergy/(myHCALenergy+myECALenergy);
487  myPFTau.setemFraction((float)myEmfrac);
488 
489  // scale the appropriate quantities by the momentum of the electron if it exists
490  if (myElecTrk.isNonnull())
491  {
492  float myElectronMomentum = (float)myElecTrk->p();
493  if (myElectronMomentum > 0.)
494  {
495  myHCALenergy /= myElectronMomentum;
496  myMaximumHCALPFClusterE /= myElectronMomentum;
497  myHCALenergy3x3 /= myElectronMomentum;
498  myStripClusterE /= myElectronMomentum;
499  }
500  }
501  myPFTau.sethcalTotOverPLead((float)myHCALenergy);
502  myPFTau.sethcalMaxOverPLead((float)myMaximumHCALPFClusterE);
503  myPFTau.sethcal3x3OverPLead((float)myHCALenergy3x3);
504  myPFTau.setecalStripSumEOverPLead((float)myStripClusterE);
505  myPFTau.setmaximumHCALPFClusterEt(myMaximumHCALPFClusterEt);
506  myPFTau.setelectronPreIDOutput(myElectronPreIDOutput);
507  if (myElecTrk.isNonnull())
508  myPFTau.setelectronPreIDTrack(myElecTrk);
509  if (myElectronPreIDOutput > maximumForElectrionPreIDOutput_)
510  myElecPreid = true;
511  myPFTau.setelectronPreIDDecision(myElecPreid);
512 
513  // These need to be filled!
514  //myPFTau.setbremsRecoveryEOverPLead(my...);
515 
516  /* End elecron rejection */
517 
518  return myPFTau;
519 }
virtual double pt() const final
transverse momentum
Abstract base class for a PFBlock element (track, cluster...)
bool isNonnull() const
Checks for non-null.
Definition: Ref.h:252
#define PFTauAlgo_ChargedHadrCand_minPt_
double maximumForElectrionPreIDOutput_
const TransientTrackBuilder * TransientTrackBuilder_
double y() const
y coordinate
Definition: Vertex.h:113
uint32_t ChargedHadrCand_IsolAnnulus_minNhits_
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
std::pair< bool, Measurement1D > signedTransverseImpactParameter(const reco::TransientTrack &track, const GlobalVector &direction, const reco::Vertex &vertex)
Definition: IPTools.cc:50
size_type size() const
Definition: OwnVector.h:264
#define PFTauAlgo_Track_minPt_
reco::TransientTrack build(const reco::Track *p) const
bool UseChargedHadrCandLeadChargedHadrCand_tksDZconstraint_
const edm::OwnVector< reco::PFBlockElement > & elements() const
Definition: PFBlock.h:107
virtual Vector momentum() const final
spatial momentum vector
double EcalStripSumE_deltaPhiOverQ_minValue_
TFormula myHCALSignalConeSizeTFormula
ROOT::Math::PositionVector3D< ROOT::Math::Cartesian3D< float > > XYZPointF
point in space with cartesian internal representation
Definition: Point3D.h:10
const Point & position() const
position
Definition: Vertex.h:109
std::vector< reco::PFCandidatePtr > filteredPFChargedHadrCandsByNumTrkHits(const std::vector< reco::PFCandidatePtr > &theInitialPFCands, int ChargedHadrCand_tkminTrackerHitsn)
Definition: TauTagTools.cc:104
const math::XYZPointF & positionAtECALEntrance() const
Definition: PFCandidate.h:367
static const double deltaEta
Definition: CaloConstants.h:8
double ChargedHadrCandLeadChargedHadrCand_tksmaxDZ_
reco::TrackRef trackRef() const
Definition: PFCandidate.cc:438
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:29
#define PFTauAlgo_NeutrHadrCand_minPt_
TFormula myTrackerSignalConeSizeTFormula
std::string ECALSignalConeMetric_
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
double z() const
z coordinate
Definition: Vertex.h:115
TFormula myECALSignalConeSizeTFormula
uint32_t Track_IsolAnnulus_minNhits_
std::string ECALIsolConeMetric_
double computeDeltaR(const math::XYZVector &vec1, const math::XYZVector &vec2)
Definition: TauTagTools.cc:8
bool isNonnull() const
Checks for non-null.
Definition: Ptr.h:169
std::string TrackerSignalConeMetric_
float mva_e_pi() const
mva for electron-pion discrimination
Definition: PFCandidate.h:313
double deltaR(double eta1, double eta2, double phi1, double phi2)
Definition: TreeUtility.cc:17
double x() const
x coordinate
Definition: Vertex.h:111
std::vector< ElementInBlock > ElementsInBlocks
TFormula myMatchingConeSizeTFormula
double EcalStripSumE_deltaPhiOverQ_maxValue_
TFormula myHCALIsolConeSizeTFormula
XYZVectorD XYZVector
spatial vector with cartesian internal representation
Definition: Vector3D.h:30
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition: Point3D.h:12
bool checkPos(const std::vector< math::XYZPoint > &, const math::XYZPoint &) const
TFormula myTrackerIsolConeSizeTFormula
std::pair< reco::PFBlockRef, unsigned > ElementInBlock
et
define resolution functions of each parameter
reco::TrackRefVector filteredTracksByNumTrkHits(const reco::TrackRefVector &theInitialTracks, int tkminTrackerHitsn)
Definition: TauTagTools.cc:68
#define PFTauAlgo_GammaCand_minPt_
std::string MatchingConeMetric_
std::string TrackerIsolConeMetric_
std::string HCALSignalConeMetric_
TFormula myECALIsolConeSizeTFormula
#define PFTauAlgo_PFCand_minPt_
void setpfTauTagInfoRef(const PFTauTagInfoRef)
Definition: PFTau.cc:65
Block of elements.
Definition: PFBlock.h:30
std::string HCALIsolConeMetric_
bool PFRecoTauAlgorithm::checkPos ( const std::vector< math::XYZPoint > &  CalPos,
const math::XYZPoint CandPos 
) const
private

Definition at line 522 of file PFRecoTauAlgorithm.cc.

References RemoveAddSevLevel::flag, and mps_fire::i.

Referenced by buildPFTau(), and ~PFRecoTauAlgorithm().

522  {
523  bool flag = false;
524  for (unsigned int i=0;i<CalPos.size();i++) {
525  if (CalPos[i] == CandPos) {
526  flag = true;
527  break;
528  }
529  }
530  return flag;
531  //return false;
532 }

Member Data Documentation

bool PFRecoTauAlgorithm::AddEllipseGammas_
private

Definition at line 71 of file PFRecoTauAlgorithm.h.

Referenced by buildPFTau(), and PFRecoTauAlgorithm().

double PFRecoTauAlgorithm::AreaMetric_recoElements_maxabsEta_
private

Definition at line 67 of file PFRecoTauAlgorithm.h.

Referenced by PFRecoTauAlgorithm().

uint32_t PFRecoTauAlgorithm::ChargedHadrCand_IsolAnnulus_minNhits_
private

Definition at line 74 of file PFRecoTauAlgorithm.h.

Referenced by buildPFTau(), and PFRecoTauAlgorithm().

double PFRecoTauAlgorithm::ChargedHadrCandLeadChargedHadrCand_tksmaxDZ_
private

Definition at line 35 of file PFRecoTauAlgorithm.h.

Referenced by buildPFTau(), and PFRecoTauAlgorithm().

std::string PFRecoTauAlgorithm::DataType_
private

Definition at line 80 of file PFRecoTauAlgorithm.h.

Referenced by buildPFTau(), and PFRecoTauAlgorithm().

std::string PFRecoTauAlgorithm::ECALIsolConeMetric_
private

Definition at line 55 of file PFRecoTauAlgorithm.h.

Referenced by buildPFTau(), and PFRecoTauAlgorithm().

double PFRecoTauAlgorithm::ECALIsolConeSize_max_
private

Definition at line 58 of file PFRecoTauAlgorithm.h.

Referenced by buildPFTau(), and PFRecoTauAlgorithm().

double PFRecoTauAlgorithm::ECALIsolConeSize_min_
private

Definition at line 57 of file PFRecoTauAlgorithm.h.

Referenced by buildPFTau(), and PFRecoTauAlgorithm().

std::string PFRecoTauAlgorithm::ECALIsolConeSizeFormula_
private

Definition at line 56 of file PFRecoTauAlgorithm.h.

Referenced by PFRecoTauAlgorithm().

std::string PFRecoTauAlgorithm::ECALSignalConeMetric_
private

Definition at line 51 of file PFRecoTauAlgorithm.h.

Referenced by buildPFTau(), and PFRecoTauAlgorithm().

double PFRecoTauAlgorithm::ECALSignalConeSize_max_
private

Definition at line 54 of file PFRecoTauAlgorithm.h.

Referenced by buildPFTau(), and PFRecoTauAlgorithm().

double PFRecoTauAlgorithm::ECALSignalConeSize_min_
private

Definition at line 53 of file PFRecoTauAlgorithm.h.

Referenced by buildPFTau(), and PFRecoTauAlgorithm().

std::string PFRecoTauAlgorithm::ECALSignalConeSizeFormula_
private

Definition at line 52 of file PFRecoTauAlgorithm.h.

Referenced by PFRecoTauAlgorithm().

double PFRecoTauAlgorithm::EcalStripSumE_deltaEta_
private

Definition at line 84 of file PFRecoTauAlgorithm.h.

Referenced by buildPFTau(), and PFRecoTauAlgorithm().

double PFRecoTauAlgorithm::EcalStripSumE_deltaPhiOverQ_maxValue_
private

Definition at line 86 of file PFRecoTauAlgorithm.h.

Referenced by buildPFTau(), and PFRecoTauAlgorithm().

double PFRecoTauAlgorithm::EcalStripSumE_deltaPhiOverQ_minValue_
private

Definition at line 85 of file PFRecoTauAlgorithm.h.

Referenced by buildPFTau(), and PFRecoTauAlgorithm().

double PFRecoTauAlgorithm::EcalStripSumE_minClusEnergy_
private

Definition at line 83 of file PFRecoTauAlgorithm.h.

Referenced by buildPFTau(), and PFRecoTauAlgorithm().

double PFRecoTauAlgorithm::ElecPreIDLeadTkMatch_maxDR_
private

Definition at line 82 of file PFRecoTauAlgorithm.h.

Referenced by PFRecoTauAlgorithm().

std::string PFRecoTauAlgorithm::HCALIsolConeMetric_
private

Definition at line 63 of file PFRecoTauAlgorithm.h.

Referenced by buildPFTau(), and PFRecoTauAlgorithm().

double PFRecoTauAlgorithm::HCALIsolConeSize_max_
private

Definition at line 66 of file PFRecoTauAlgorithm.h.

Referenced by buildPFTau(), and PFRecoTauAlgorithm().

double PFRecoTauAlgorithm::HCALIsolConeSize_min_
private

Definition at line 65 of file PFRecoTauAlgorithm.h.

Referenced by buildPFTau(), and PFRecoTauAlgorithm().

std::string PFRecoTauAlgorithm::HCALIsolConeSizeFormula_
private

Definition at line 64 of file PFRecoTauAlgorithm.h.

Referenced by PFRecoTauAlgorithm().

std::string PFRecoTauAlgorithm::HCALSignalConeMetric_
private

Definition at line 59 of file PFRecoTauAlgorithm.h.

Referenced by buildPFTau(), and PFRecoTauAlgorithm().

double PFRecoTauAlgorithm::HCALSignalConeSize_max_
private

Definition at line 62 of file PFRecoTauAlgorithm.h.

Referenced by buildPFTau(), and PFRecoTauAlgorithm().

double PFRecoTauAlgorithm::HCALSignalConeSize_min_
private

Definition at line 61 of file PFRecoTauAlgorithm.h.

Referenced by buildPFTau(), and PFRecoTauAlgorithm().

std::string PFRecoTauAlgorithm::HCALSignalConeSizeFormula_
private

Definition at line 60 of file PFRecoTauAlgorithm.h.

Referenced by PFRecoTauAlgorithm().

double PFRecoTauAlgorithm::LeadPFCand_minPt_
private

Definition at line 32 of file PFRecoTauAlgorithm.h.

Referenced by buildPFTau(), and PFRecoTauAlgorithm().

double PFRecoTauAlgorithm::LeadTrack_minPt_
private

Definition at line 33 of file PFRecoTauAlgorithm.h.

Referenced by buildPFTau(), and PFRecoTauAlgorithm().

std::string PFRecoTauAlgorithm::MatchingConeMetric_
private

Definition at line 39 of file PFRecoTauAlgorithm.h.

Referenced by buildPFTau(), and PFRecoTauAlgorithm().

double PFRecoTauAlgorithm::MatchingConeSize_max_
private

Definition at line 42 of file PFRecoTauAlgorithm.h.

Referenced by buildPFTau(), and PFRecoTauAlgorithm().

double PFRecoTauAlgorithm::MatchingConeSize_min_
private

Definition at line 41 of file PFRecoTauAlgorithm.h.

Referenced by buildPFTau(), and PFRecoTauAlgorithm().

std::string PFRecoTauAlgorithm::MatchingConeSizeFormula_
private

Definition at line 40 of file PFRecoTauAlgorithm.h.

Referenced by PFRecoTauAlgorithm().

double PFRecoTauAlgorithm::MaxEtInEllipse_
private

Definition at line 70 of file PFRecoTauAlgorithm.h.

Referenced by buildPFTau(), and PFRecoTauAlgorithm().

double PFRecoTauAlgorithm::maximumForElectrionPreIDOutput_
private

Definition at line 87 of file PFRecoTauAlgorithm.h.

Referenced by buildPFTau(), and PFRecoTauAlgorithm().

TFormula PFRecoTauAlgorithm::myECALIsolConeSizeTFormula
private

Definition at line 89 of file PFRecoTauAlgorithm.h.

Referenced by buildPFTau(), and PFRecoTauAlgorithm().

TFormula PFRecoTauAlgorithm::myECALSignalConeSizeTFormula
private

Definition at line 89 of file PFRecoTauAlgorithm.h.

Referenced by buildPFTau(), and PFRecoTauAlgorithm().

TFormula PFRecoTauAlgorithm::myHCALIsolConeSizeTFormula
private

Definition at line 89 of file PFRecoTauAlgorithm.h.

Referenced by buildPFTau(), and PFRecoTauAlgorithm().

TFormula PFRecoTauAlgorithm::myHCALSignalConeSizeTFormula
private

Definition at line 89 of file PFRecoTauAlgorithm.h.

Referenced by buildPFTau(), and PFRecoTauAlgorithm().

TFormula PFRecoTauAlgorithm::myMatchingConeSizeTFormula
private

Definition at line 89 of file PFRecoTauAlgorithm.h.

Referenced by buildPFTau(), and PFRecoTauAlgorithm().

TFormula PFRecoTauAlgorithm::myTrackerIsolConeSizeTFormula
private

Definition at line 89 of file PFRecoTauAlgorithm.h.

Referenced by buildPFTau(), and PFRecoTauAlgorithm().

TFormula PFRecoTauAlgorithm::myTrackerSignalConeSizeTFormula
private

Definition at line 89 of file PFRecoTauAlgorithm.h.

Referenced by buildPFTau(), and PFRecoTauAlgorithm().

bool PFRecoTauAlgorithm::putNeutralHadronsInP4_
private

Definition at line 78 of file PFRecoTauAlgorithm.h.

Referenced by buildPFTau(), and PFRecoTauAlgorithm().

double PFRecoTauAlgorithm::Rphi_
private

Definition at line 69 of file PFRecoTauAlgorithm.h.

Referenced by buildPFTau(), and PFRecoTauAlgorithm().

uint32_t PFRecoTauAlgorithm::Track_IsolAnnulus_minNhits_
private

Definition at line 75 of file PFRecoTauAlgorithm.h.

Referenced by buildPFTau(), and PFRecoTauAlgorithm().

std::string PFRecoTauAlgorithm::TrackerIsolConeMetric_
private

Definition at line 47 of file PFRecoTauAlgorithm.h.

Referenced by buildPFTau(), and PFRecoTauAlgorithm().

double PFRecoTauAlgorithm::TrackerIsolConeSize_max_
private

Definition at line 50 of file PFRecoTauAlgorithm.h.

Referenced by buildPFTau(), and PFRecoTauAlgorithm().

double PFRecoTauAlgorithm::TrackerIsolConeSize_min_
private

Definition at line 49 of file PFRecoTauAlgorithm.h.

Referenced by buildPFTau(), and PFRecoTauAlgorithm().

std::string PFRecoTauAlgorithm::TrackerIsolConeSizeFormula_
private

Definition at line 48 of file PFRecoTauAlgorithm.h.

Referenced by PFRecoTauAlgorithm().

std::string PFRecoTauAlgorithm::TrackerSignalConeMetric_
private

Definition at line 43 of file PFRecoTauAlgorithm.h.

Referenced by buildPFTau(), and PFRecoTauAlgorithm().

double PFRecoTauAlgorithm::TrackerSignalConeSize_max_
private

Definition at line 46 of file PFRecoTauAlgorithm.h.

Referenced by buildPFTau(), and PFRecoTauAlgorithm().

double PFRecoTauAlgorithm::TrackerSignalConeSize_min_
private

Definition at line 45 of file PFRecoTauAlgorithm.h.

Referenced by buildPFTau(), and PFRecoTauAlgorithm().

std::string PFRecoTauAlgorithm::TrackerSignalConeSizeFormula_
private

Definition at line 44 of file PFRecoTauAlgorithm.h.

Referenced by PFRecoTauAlgorithm().

double PFRecoTauAlgorithm::TrackLeadTrack_maxDZ_
private

Definition at line 38 of file PFRecoTauAlgorithm.h.

Referenced by buildPFTau(), and PFRecoTauAlgorithm().

bool PFRecoTauAlgorithm::UseChargedHadrCandLeadChargedHadrCand_tksDZconstraint_
private

Definition at line 34 of file PFRecoTauAlgorithm.h.

Referenced by buildPFTau(), and PFRecoTauAlgorithm().

bool PFRecoTauAlgorithm::UseTrackLeadTrackDZconstraint_
private

Definition at line 37 of file PFRecoTauAlgorithm.h.

Referenced by buildPFTau(), and PFRecoTauAlgorithm().