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
CaloRecoTauTagInfoAlgorithm Class Reference

#include <CaloRecoTauTagInfoAlgorithm.h>

Public Member Functions

reco::CaloTauTagInfo buildCaloTauTagInfo (edm::Event &, const edm::EventSetup &, const reco::CaloJetRef &, const reco::TrackRefVector &, const reco::Vertex &)
 
reco::CaloTauTagInfo buildCaloTauTagInfo (edm::Event &, const edm::EventSetup &, const reco::JetBaseRef &, const reco::TrackRefVector &, const reco::Vertex &)
 
 CaloRecoTauTagInfoAlgorithm ()
 
 CaloRecoTauTagInfoAlgorithm (const edm::ParameterSet &parameters)
 
std::vector< DetIdgetVectorDetId (const reco::CaloJetRef &)
 
 ~CaloRecoTauTagInfoAlgorithm ()
 

Private Member Functions

reco::TrackRefVector filterTracksByQualityBit (const reco::TrackRefVector &tracks, reco::TrackBase::TrackQuality quality) const
 
std::vector
< reco::BasicClusterRef
getNeutralEcalBasicClusters (edm::Event &, const edm::EventSetup &theEventSetup, const reco::CaloJetRef &, const reco::TrackRefVector &, float theECALBasicClustersAroundCaloJet_DRConeSize, float theECALBasicClusterminE, float theECALBasicClusterpropagTrack_matchingDRConeSize)
 

Private Attributes

edm::InputTag BarrelBasicClusters_
 
edm::InputTag EBRecHitsLabel_
 
double ECALBasicClusterminE_
 
double ECALBasicClusterpropagTrack_matchingDRConeSize_
 
double ECALBasicClustersAroundCaloJet_DRConeSize_
 
edm::InputTag EERecHitsLabel_
 
edm::InputTag EndcapBasicClusters_
 
edm::InputTag ESRecHitsLabel_
 
double tkmaxChi2_
 
double tkmaxipt_
 
int tkminPixelHitsn_
 
double tkminPt_
 
int tkminTrackerHitsn_
 
double tkPVmaxDZ_
 
reco::TrackBase::TrackQuality tkQuality_
 
bool UsePVconstraint_
 
bool UseTrackQuality_
 

Detailed Description

Definition at line 33 of file CaloRecoTauTagInfoAlgorithm.h.

Constructor & Destructor Documentation

CaloRecoTauTagInfoAlgorithm::CaloRecoTauTagInfoAlgorithm ( )
inline

Definition at line 35 of file CaloRecoTauTagInfoAlgorithm.h.

35 {}
CaloRecoTauTagInfoAlgorithm::CaloRecoTauTagInfoAlgorithm ( const edm::ParameterSet parameters)

Definition at line 6 of file CaloRecoTauTagInfoAlgorithm.cc.

References edm::ParameterSet::getParameter(), reco::TrackBase::qualityByName(), and AlCaHLTBitMon_QueryRunRegistry::string.

6  {
7  // parameters of the considered rec. Tracks (catched through a JetTracksAssociation object) :
8  tkminPt_ = parameters.getParameter<double>("tkminPt");
9  tkminPixelHitsn_ = parameters.getParameter<int>("tkminPixelHitsn");
10  tkminTrackerHitsn_ = parameters.getParameter<int>("tkminTrackerHitsn");
11  tkmaxipt_ = parameters.getParameter<double>("tkmaxipt");
12  tkmaxChi2_ = parameters.getParameter<double>("tkmaxChi2");
13  //
14  UsePVconstraint_ = parameters.getParameter<bool>("UsePVconstraint");
15  tkPVmaxDZ_ = parameters.getParameter<double>("tkPVmaxDZ");
16  //
17  UseTrackQuality_ = parameters.getParameter<bool>("UseTrackQuality");
18  if (UseTrackQuality_) {
20  }
21  // parameters of the considered EcalRecHits
22  BarrelBasicClusters_ = parameters.getParameter<edm::InputTag>("BarrelBasicClustersSource");
23  EndcapBasicClusters_ = parameters.getParameter<edm::InputTag>("EndcapBasicClustersSource");
24  // parameters of the considered neutral ECAL BasicClusters
25  ECALBasicClustersAroundCaloJet_DRConeSize_ = parameters.getParameter<double>("ECALBasicClustersAroundCaloJet_DRConeSize");
26  ECALBasicClusterminE_ = parameters.getParameter<double>("ECALBasicClusterminE");
27  ECALBasicClusterpropagTrack_matchingDRConeSize_ = parameters.getParameter<double>("ECALBasicClusterpropagTrack_matchingDRConeSize");
28 }
reco::TrackBase::TrackQuality tkQuality_
T getParameter(std::string const &) const
static TrackQuality qualityByName(const std::string &name)
Definition: TrackBase.cc:123
CaloRecoTauTagInfoAlgorithm::~CaloRecoTauTagInfoAlgorithm ( )
inline

Definition at line 37 of file CaloRecoTauTagInfoAlgorithm.h.

37 {}

Member Function Documentation

CaloTauTagInfo CaloRecoTauTagInfoAlgorithm::buildCaloTauTagInfo ( edm::Event theEvent,
const edm::EventSetup theEventSetup,
const reco::CaloJetRef theCaloJet,
const reco::TrackRefVector theTracks,
const reco::Vertex thePV 
)

Definition at line 30 of file CaloRecoTauTagInfoAlgorithm.cc.

References TauTagTools::filteredTracks(), reco::CaloTauTagInfo::setcalojetRef(), reco::CaloTauTagInfo::setneutralECALBasicClusters(), reco::BaseTauTagInfo::setTracks(), and reco::Vertex::z().

30  {
31  CaloTauTagInfo resultExtended;
32  resultExtended.setcalojetRef(theCaloJet);
33 
34  TrackRefVector theFilteredTracks;
37  if (UseTrackQuality_) theFilteredTracks = filterTracksByQualityBit(theFilteredTracks,tkQuality_);
38  resultExtended.setTracks(theFilteredTracks);
39 
40  //resultExtended.setpositionAndEnergyECALRecHits(getPositionAndEnergyEcalRecHits(theEvent,theEventSetup,theCaloJet));
41 
42  std::vector<BasicClusterRef> theNeutralEcalBasicClusters=getNeutralEcalBasicClusters(theEvent,theEventSetup,theCaloJet,theFilteredTracks,ECALBasicClustersAroundCaloJet_DRConeSize_,ECALBasicClusterminE_,ECALBasicClusterpropagTrack_matchingDRConeSize_);
43  resultExtended.setneutralECALBasicClusters(theNeutralEcalBasicClusters);
44 
45  return resultExtended;
46 }
reco::TrackBase::TrackQuality tkQuality_
void setTracks(const TrackRefVector &)
reco::TrackRefVector filteredTracks(reco::TrackRefVector theInitialTracks, double tkminPt, int tkminPixelHitsn, int tkminTrackerHitsn, double tkmaxipt, double tkmaxChi2, reco::Vertex pV)
Definition: TauTagTools.cc:77
double z() const
y coordinate
Definition: Vertex.h:112
void setcalojetRef(const CaloJetRef)
std::vector< reco::BasicClusterRef > getNeutralEcalBasicClusters(edm::Event &, const edm::EventSetup &theEventSetup, const reco::CaloJetRef &, const reco::TrackRefVector &, float theECALBasicClustersAroundCaloJet_DRConeSize, float theECALBasicClusterminE, float theECALBasicClusterpropagTrack_matchingDRConeSize)
reco::TrackRefVector filterTracksByQualityBit(const reco::TrackRefVector &tracks, reco::TrackBase::TrackQuality quality) const
void setneutralECALBasicClusters(const std::vector< BasicClusterRef > &)
CaloTauTagInfo CaloRecoTauTagInfoAlgorithm::buildCaloTauTagInfo ( edm::Event theEvent,
const edm::EventSetup theEventSetup,
const reco::JetBaseRef theJet,
const reco::TrackRefVector theTracks,
const reco::Vertex thePV 
)

Definition at line 47 of file CaloRecoTauTagInfoAlgorithm.cc.

References reco::CaloTauTagInfo::calojetRef(), TauTagTools::filteredTracks(), reco::CaloTauTagInfo::setJetRef(), reco::CaloTauTagInfo::setneutralECALBasicClusters(), reco::BaseTauTagInfo::setTracks(), and reco::Vertex::z().

47  {
48  CaloTauTagInfo resultExtended;
49  resultExtended.setJetRef(theJet);
50 
51  TrackRefVector theFilteredTracks;
54  if (UseTrackQuality_) theFilteredTracks = filterTracksByQualityBit(theFilteredTracks,tkQuality_);
55  resultExtended.setTracks(theFilteredTracks);
56 
57  //resultExtended.setpositionAndEnergyECALRecHits(getPositionAndEnergyEcalRecHits(theEvent,theEventSetup,theCaloJet));
58 
59  //reco::JPTJetRef const theJPTJetRef = theJet.castTo<reco::JPTJetRef>();
60  //reco::CaloJetRef const theCaloJet = (theJPTJetRef->getCaloJetRef()).castTo<reco::CaloJetRef>();
61  reco::CaloJetRef const theCaloJet = resultExtended.calojetRef();
62  std::vector<BasicClusterRef> theNeutralEcalBasicClusters=getNeutralEcalBasicClusters(theEvent,theEventSetup,theCaloJet,theFilteredTracks,ECALBasicClustersAroundCaloJet_DRConeSize_,ECALBasicClusterminE_,ECALBasicClusterpropagTrack_matchingDRConeSize_);
63  resultExtended.setneutralECALBasicClusters(theNeutralEcalBasicClusters);
64 
65  return resultExtended;
66 }
reco::TrackBase::TrackQuality tkQuality_
void setTracks(const TrackRefVector &)
const CaloJetRef & calojetRef() const
reco::TrackRefVector filteredTracks(reco::TrackRefVector theInitialTracks, double tkminPt, int tkminPixelHitsn, int tkminTrackerHitsn, double tkmaxipt, double tkmaxChi2, reco::Vertex pV)
Definition: TauTagTools.cc:77
void setJetRef(const JetBaseRef)
double z() const
y coordinate
Definition: Vertex.h:112
std::vector< reco::BasicClusterRef > getNeutralEcalBasicClusters(edm::Event &, const edm::EventSetup &theEventSetup, const reco::CaloJetRef &, const reco::TrackRefVector &, float theECALBasicClustersAroundCaloJet_DRConeSize, float theECALBasicClusterminE, float theECALBasicClusterpropagTrack_matchingDRConeSize)
reco::TrackRefVector filterTracksByQualityBit(const reco::TrackRefVector &tracks, reco::TrackBase::TrackQuality quality) const
void setneutralECALBasicClusters(const std::vector< BasicClusterRef > &)
TrackRefVector CaloRecoTauTagInfoAlgorithm::filterTracksByQualityBit ( const reco::TrackRefVector tracks,
reco::TrackBase::TrackQuality  quality 
) const
private

Definition at line 185 of file CaloRecoTauTagInfoAlgorithm.cc.

References edm::RefVector< C, T, F >::begin(), edm::RefVector< C, T, F >::end(), TauTagTools::filteredTracks(), and edm::RefVector< C, T, F >::push_back().

186 {
188  for (TrackRefVector::const_iterator iTrack = tracks.begin(); iTrack != tracks.end(); iTrack++) {
189  if ((*iTrack)->quality(quality)) filteredTracks.push_back(*iTrack);
190  }
191  return filteredTracks;
192 }
reco::TrackRefVector filteredTracks(reco::TrackRefVector theInitialTracks, double tkminPt, int tkminPixelHitsn, int tkminTrackerHitsn, double tkmaxipt, double tkmaxChi2, reco::Vertex pV)
Definition: TauTagTools.cc:77
const_iterator end() const
Termination of iteration.
Definition: RefVector.h:255
const_iterator begin() const
Initialize an iterator over the RefVector.
Definition: RefVector.h:250
void push_back(value_type const &ref)
Add a Ref&lt;C, T&gt; to the RefVector.
Definition: RefVector.h:62
std::vector< BasicClusterRef > CaloRecoTauTagInfoAlgorithm::getNeutralEcalBasicClusters ( edm::Event theEvent,
const edm::EventSetup theEventSetup,
const reco::CaloJetRef theCaloJet,
const reco::TrackRefVector theTracks,
float  theECALBasicClustersAroundCaloJet_DRConeSize,
float  theECALBasicClusterminE,
float  theECALBasicClusterpropagTrack_matchingDRConeSize 
)
private

Definition at line 137 of file CaloRecoTauTagInfoAlgorithm.cc.

References edm::RefVector< C, T, F >::begin(), HLT_25ns14e33_v1_cff::DeltaR, edm::RefVector< C, T, F >::end(), edm::EventSetup::get(), edm::Event::getByLabel(), edm::Ref< C, T, F >::isNull(), edm::ESHandle< class >::product(), and TauTagTools::propagTrackECALSurfContactPoint().

137  {
138  std::vector<math::XYZPoint> thepropagTracksECALSurfContactPoints;
140  theEventSetup.get<IdealMagneticFieldRecord>().get(theMF);
141  const MagneticField* theMagField=theMF.product();
142  for(TrackRefVector::const_iterator i_Track=theTracks.begin();i_Track!=theTracks.end();i_Track++){
143  math::XYZPoint thepropagTrackECALSurfContactPoint=TauTagTools::propagTrackECALSurfContactPoint(theMagField,*i_Track);
144  if(thepropagTrackECALSurfContactPoint.R()!=0.) thepropagTracksECALSurfContactPoints.push_back(thepropagTrackECALSurfContactPoint);
145  }
146 
147  math::XYZPoint aCaloJetFakePosition((*theCaloJet).px(),(*theCaloJet).py(),(*theCaloJet).pz());
148 
149  std::vector<BasicClusterRef> theBasicClusters;
150 
151  edm::Handle<BasicClusterCollection> theBarrelBCCollection;
152  // theEvent.getByLabel("islandBasicClusters","islandBarrelBasicClusters",theBarrelBCCollection);
153  theEvent.getByLabel(BarrelBasicClusters_,theBarrelBCCollection);
154  for(unsigned int i_BC=0;i_BC!=theBarrelBCCollection->size();i_BC++) {
155  BasicClusterRef theBasicClusterRef(theBarrelBCCollection,i_BC);
156  if (theBasicClusterRef.isNull()) continue;
157  if (ROOT::Math::VectorUtil::DeltaR(aCaloJetFakePosition,(*theBasicClusterRef).position())<=theECALBasicClustersAroundCaloJet_DRConeSize && (*theBasicClusterRef).energy()>=theECALBasicClusterminE) theBasicClusters.push_back(theBasicClusterRef);
158  }
159  edm::Handle<BasicClusterCollection> theEndcapBCCollection;
160  // theEvent.getByLabel("islandBasicClusters","islandEndcapBasicClusters",theEndcapBCCollection);
161  theEvent.getByLabel(EndcapBasicClusters_,theEndcapBCCollection);
162  for(unsigned int j_BC=0;j_BC!=theEndcapBCCollection->size();j_BC++) {
163  BasicClusterRef theBasicClusterRef(theEndcapBCCollection,j_BC);
164  if (theBasicClusterRef.isNull()) continue;
165  if (ROOT::Math::VectorUtil::DeltaR(aCaloJetFakePosition,(*theBasicClusterRef).position())<=theECALBasicClustersAroundCaloJet_DRConeSize && (*theBasicClusterRef).energy()>=theECALBasicClusterminE) theBasicClusters.push_back(theBasicClusterRef);
166  }
167 
168  std::vector<BasicClusterRef> theNeutralBasicClusters=theBasicClusters;
169  std::vector<BasicClusterRef>::iterator kmatchedBasicCluster;
170  for (std::vector<math::XYZPoint>::iterator ipropagTrackECALSurfContactPoint=thepropagTracksECALSurfContactPoints.begin();ipropagTrackECALSurfContactPoint!=thepropagTracksECALSurfContactPoints.end();ipropagTrackECALSurfContactPoint++) {
171  double theMatchedEcalBasicClusterpropagTrack_minDR=theECALBasicClusterpropagTrack_matchingDRConeSize;
172  bool Track_matchedwithEcalBasicCluster=false;
173  for (std::vector<BasicClusterRef>::iterator jBasicCluster=theNeutralBasicClusters.begin();jBasicCluster!=theNeutralBasicClusters.end();jBasicCluster++) {
174  if(ROOT::Math::VectorUtil::DeltaR((*ipropagTrackECALSurfContactPoint),(**jBasicCluster).position())<theMatchedEcalBasicClusterpropagTrack_minDR){
175  Track_matchedwithEcalBasicCluster=true;
176  theMatchedEcalBasicClusterpropagTrack_minDR=ROOT::Math::VectorUtil::DeltaR((*ipropagTrackECALSurfContactPoint),(**jBasicCluster).position());
177  kmatchedBasicCluster=jBasicCluster;
178  }
179  }
180  if(Track_matchedwithEcalBasicCluster) kmatchedBasicCluster=theNeutralBasicClusters.erase(kmatchedBasicCluster);
181  }
182  return theNeutralBasicClusters;
183 }
math::XYZPoint propagTrackECALSurfContactPoint(const MagneticField *, reco::TrackRef)
Definition: TauTagTools.cc:184
const_iterator end() const
Termination of iteration.
Definition: RefVector.h:255
const_iterator begin() const
Initialize an iterator over the RefVector.
Definition: RefVector.h:250
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:420
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition: Point3D.h:12
const T & get() const
Definition: EventSetup.h:56
T const * product() const
Definition: ESHandle.h:86
std::vector< DetId > CaloRecoTauTagInfoAlgorithm::getVectorDetId ( const reco::CaloJetRef theCaloJet)

Definition at line 120 of file CaloRecoTauTagInfoAlgorithm.cc.

References j.

120  {
121  std::vector<CaloTowerPtr> theCaloTowers=theCaloJet->getCaloConstituents();
122  std::vector<DetId> myDetIds;
123  myDetIds.clear();
124 
125  for(std::vector<CaloTowerPtr>::const_iterator i_Tower=theCaloTowers.begin();i_Tower!=theCaloTowers.end();i_Tower++){
126  size_t numRecHits = (**i_Tower).constituentsSize();
127  for(size_t j=0;j<numRecHits;j++) {
128  DetId RecHitDetID=(**i_Tower).constituent(j);
129 
130  myDetIds.push_back(RecHitDetID);
131  }
132  }
133  return myDetIds;
134 }
int j
Definition: DBlmapReader.cc:9
Definition: DetId.h:18

Member Data Documentation

edm::InputTag CaloRecoTauTagInfoAlgorithm::BarrelBasicClusters_
private

Definition at line 66 of file CaloRecoTauTagInfoAlgorithm.h.

edm::InputTag CaloRecoTauTagInfoAlgorithm::EBRecHitsLabel_
private

Definition at line 65 of file CaloRecoTauTagInfoAlgorithm.h.

double CaloRecoTauTagInfoAlgorithm::ECALBasicClusterminE_
private

Definition at line 61 of file CaloRecoTauTagInfoAlgorithm.h.

double CaloRecoTauTagInfoAlgorithm::ECALBasicClusterpropagTrack_matchingDRConeSize_
private

Definition at line 62 of file CaloRecoTauTagInfoAlgorithm.h.

double CaloRecoTauTagInfoAlgorithm::ECALBasicClustersAroundCaloJet_DRConeSize_
private

Definition at line 60 of file CaloRecoTauTagInfoAlgorithm.h.

edm::InputTag CaloRecoTauTagInfoAlgorithm::EERecHitsLabel_
private

Definition at line 65 of file CaloRecoTauTagInfoAlgorithm.h.

edm::InputTag CaloRecoTauTagInfoAlgorithm::EndcapBasicClusters_
private

Definition at line 66 of file CaloRecoTauTagInfoAlgorithm.h.

edm::InputTag CaloRecoTauTagInfoAlgorithm::ESRecHitsLabel_
private

Definition at line 65 of file CaloRecoTauTagInfoAlgorithm.h.

double CaloRecoTauTagInfoAlgorithm::tkmaxChi2_
private

Definition at line 52 of file CaloRecoTauTagInfoAlgorithm.h.

double CaloRecoTauTagInfoAlgorithm::tkmaxipt_
private

Definition at line 51 of file CaloRecoTauTagInfoAlgorithm.h.

int CaloRecoTauTagInfoAlgorithm::tkminPixelHitsn_
private

Definition at line 49 of file CaloRecoTauTagInfoAlgorithm.h.

double CaloRecoTauTagInfoAlgorithm::tkminPt_
private

Definition at line 48 of file CaloRecoTauTagInfoAlgorithm.h.

int CaloRecoTauTagInfoAlgorithm::tkminTrackerHitsn_
private

Definition at line 50 of file CaloRecoTauTagInfoAlgorithm.h.

double CaloRecoTauTagInfoAlgorithm::tkPVmaxDZ_
private

Definition at line 55 of file CaloRecoTauTagInfoAlgorithm.h.

reco::TrackBase::TrackQuality CaloRecoTauTagInfoAlgorithm::tkQuality_
private

Definition at line 58 of file CaloRecoTauTagInfoAlgorithm.h.

bool CaloRecoTauTagInfoAlgorithm::UsePVconstraint_
private

Definition at line 54 of file CaloRecoTauTagInfoAlgorithm.h.

bool CaloRecoTauTagInfoAlgorithm::UseTrackQuality_
private

Definition at line 57 of file CaloRecoTauTagInfoAlgorithm.h.