CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
Classes | Typedefs | Functions
TauDiscriminationAgainstCaloMuon.cc File Reference
#include "RecoTauTag/RecoTau/interface/TauDiscriminationProducerBase.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "FWCore/Utilities/interface/InputTag.h"
#include "DataFormats/MuonReco/interface/Muon.h"
#include "DataFormats/MuonReco/interface/MuonFwd.h"
#include "DataFormats/EcalRecHit/interface/EcalRecHit.h"
#include "DataFormats/EcalRecHit/interface/EcalRecHitCollections.h"
#include "DataFormats/EcalDetId/interface/EcalSubdetector.h"
#include "DataFormats/HcalRecHit/interface/HBHERecHit.h"
#include "DataFormats/HcalRecHit/interface/HcalRecHitCollections.h"
#include "DataFormats/CaloTowers/interface/CaloTower.h"
#include "DataFormats/CaloTowers/interface/CaloTowerCollection.h"
#include "TrackingTools/TransientTrack/interface/TransientTrackBuilder.h"
#include "TrackingTools/TransientTrack/interface/TransientTrack.h"
#include "TrackingTools/Records/interface/TransientTrackRecord.h"
#include "TrackingTools/TrajectoryState/interface/TrajectoryStateClosestToPoint.h"
#include "Geometry/CaloGeometry/interface/CaloGeometry.h"
#include "Geometry/CaloGeometry/interface/CaloSubdetectorGeometry.h"
#include "Geometry/CaloGeometry/interface/CaloCellGeometry.h"
#include "Geometry/Records/interface/CaloGeometryRecord.h"
#include "DataFormats/Math/interface/deltaR.h"
#include <TVector3.h>
#include <TMath.h>
#include <string>
#include "FWCore/Framework/interface/MakerMacros.h"

Go to the source code of this file.

Classes

class  TauDiscriminationAgainstCaloMuon< TauType, TauDiscriminator >
 
class  TauLeadTrackExtractor< T >
 
class  TauLeadTrackExtractor< reco::PFTau >
 

Typedefs

typedef
TauDiscriminationAgainstCaloMuon
< CaloTau,
CaloTauDiscriminator
CaloRecoTauDiscriminationAgainstCaloMuon
 
typedef
TauDiscriminationAgainstCaloMuon
< PFTau, PFTauDiscriminator
PFRecoTauDiscriminationAgainstCaloMuon
 

Functions

double compEcalEnergySum (const EcalRecHitCollection &ecalRecHits, const CaloSubdetectorGeometry *detGeometry, const reco::TransientTrack &transientTrack, double dR)
 
double compHcalEnergySum (const HBHERecHitCollection &hcalRecHits, const CaloSubdetectorGeometry *hbGeometry, const CaloSubdetectorGeometry *heGeometry, const reco::TransientTrack &transientTrack, double dR)
 
 DEFINE_FWK_MODULE (PFRecoTauDiscriminationAgainstCaloMuon)
 
 DEFINE_FWK_MODULE (CaloRecoTauDiscriminationAgainstCaloMuon)
 

Typedef Documentation

Definition at line 285 of file TauDiscriminationAgainstCaloMuon.cc.

Definition at line 284 of file TauDiscriminationAgainstCaloMuon.cc.

Function Documentation

double compEcalEnergySum ( const EcalRecHitCollection ecalRecHits,
const CaloSubdetectorGeometry detGeometry,
const reco::TransientTrack transientTrack,
double  dR 
)

Definition at line 169 of file TauDiscriminationAgainstCaloMuon.cc.

References edm::SortedCollection< T, SORT >::begin(), dir, CaloRecHits_cff::ecalRecHit, edm::SortedCollection< T, SORT >::end(), CaloSubdetectorGeometry::getGeometry(), CaloCellGeometry::getPosition(), TrajectoryStateClosestToPoint::position(), reco::TrackBase::px(), reco::TrackBase::py(), reco::TrackBase::pz(), reco::TransientTrack::track(), reco::TransientTrack::trajectoryStateClosestToPoint(), PV3DBase< T, VectorTag, FrameTag >::x(), PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), PV3DBase< T, VectorTag, FrameTag >::y(), PV3DBase< T, VectorTag, FrameTag >::z(), and PV3DBase< T, PVType, FrameType >::z().

Referenced by TauDiscriminationAgainstCaloMuon< TauType, TauDiscriminator >::discriminate().

172 {
173  double ecalEnergySum = 0.;
175  ecalRecHit != ecalRecHits.end(); ++ecalRecHit ) {
176  const CaloCellGeometry* cellGeometry = detGeometry->getGeometry(ecalRecHit->detid());
177 
178  if ( !cellGeometry ) {
179  edm::LogError ("compEcalEnergySum")
180  << " Failed to access ECAL geometry for detId = " << ecalRecHit->detid().rawId()
181  << " --> skipping !!";
182  continue;
183  }
184 
185  const GlobalPoint& cellPosition = cellGeometry->getPosition();
186 
187  TrajectoryStateClosestToPoint dcaPosition = transientTrack.trajectoryStateClosestToPoint(cellPosition);
188 
189  Vector3DBase<float, GlobalTag> d = (cellPosition - dcaPosition.position());
190 
191  TVector3 d3(d.x(), d.y(), d.z());
192  TVector3 dir(transientTrack.track().px(), transientTrack.track().py(), transientTrack.track().pz());
193 
194  double dPerp = d3.Cross(dir.Unit()).Mag();
195  double dParl = TVector3(cellPosition.x(), cellPosition.y(), cellPosition.z()).Dot(dir.Unit());
196 
197  if ( dPerp < dR && dParl > 100. ) {
198  ecalEnergySum += ecalRecHit->energy();
199  }
200  }
201 
202  return ecalEnergySum;
203 }
std::vector< T >::const_iterator const_iterator
double px() const
x coordinate of momentum vector
Definition: TrackBase.h:132
virtual const CaloCellGeometry * getGeometry(const DetId &id) const
Get the cell geometry of a given detector id. Should return false if not found.
double pz() const
z coordinate of momentum vector
Definition: TrackBase.h:136
const_iterator end() const
const Track & track() const
TrajectoryStateClosestToPoint trajectoryStateClosestToPoint(const GlobalPoint &point) const
dbl *** dir
Definition: mlp_gen.cc:35
const GlobalPoint & getPosition() const
const_iterator begin() const
double py() const
y coordinate of momentum vector
Definition: TrackBase.h:134
double compHcalEnergySum ( const HBHERecHitCollection hcalRecHits,
const CaloSubdetectorGeometry hbGeometry,
const CaloSubdetectorGeometry heGeometry,
const reco::TransientTrack transientTrack,
double  dR 
)

Definition at line 205 of file TauDiscriminationAgainstCaloMuon.cc.

References edm::SortedCollection< T, SORT >::begin(), dir, edm::SortedCollection< T, SORT >::end(), CaloSubdetectorGeometry::getGeometry(), CaloCellGeometry::getPosition(), TrajectoryStateClosestToPoint::position(), reco::TrackBase::px(), reco::TrackBase::py(), reco::TrackBase::pz(), reco::TransientTrack::track(), reco::TransientTrack::trajectoryStateClosestToPoint(), PV3DBase< T, VectorTag, FrameTag >::x(), PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, VectorTag, FrameTag >::y(), PV3DBase< T, PVType, FrameType >::y(), PV3DBase< T, PVType, FrameType >::z(), and PV3DBase< T, VectorTag, FrameTag >::z().

Referenced by TauDiscriminationAgainstCaloMuon< TauType, TauDiscriminator >::discriminate().

208 {
209  double hcalEnergySum = 0.;
210  for ( HBHERecHitCollection::const_iterator hcalRecHit = hcalRecHits.begin();
211  hcalRecHit != hcalRecHits.end(); ++hcalRecHit ) {
212  const CaloCellGeometry* hbCellGeometry = hbGeometry->getGeometry(hcalRecHit->detid());
213  const CaloCellGeometry* heCellGeometry = heGeometry->getGeometry(hcalRecHit->detid());
214 
215  const GlobalPoint* cellPosition = 0;
216  if ( hbCellGeometry ) cellPosition = &(hbCellGeometry->getPosition());
217  if ( heCellGeometry ) cellPosition = &(heCellGeometry->getPosition());
218 
219  if ( !cellPosition ) {
220  edm::LogError ("compHcalEnergySum")
221  << " Failed to access HCAL geometry for detId = " << hcalRecHit->detid().rawId()
222  << " --> skipping !!";
223  continue;
224  }
225 
226  TrajectoryStateClosestToPoint dcaPosition = transientTrack.trajectoryStateClosestToPoint(*cellPosition);
227 
228  Vector3DBase<float, GlobalTag> d = ((*cellPosition) - dcaPosition.position());
229 
230  TVector3 d3(d.x(), d.y(), d.z());
231  TVector3 dir(transientTrack.track().px(), transientTrack.track().py(), transientTrack.track().pz());
232 
233  double dPerp = d3.Cross(dir.Unit()).Mag();
234  double dParl = TVector3(cellPosition->x(), cellPosition->y(), cellPosition->z()).Dot(dir.Unit());
235 
236  if ( dPerp < dR && dParl > 100. ) {
237  hcalEnergySum += hcalRecHit->energy();
238  }
239  }
240 
241  return hcalEnergySum;
242 }
std::vector< T >::const_iterator const_iterator
double px() const
x coordinate of momentum vector
Definition: TrackBase.h:132
virtual const CaloCellGeometry * getGeometry(const DetId &id) const
Get the cell geometry of a given detector id. Should return false if not found.
double pz() const
z coordinate of momentum vector
Definition: TrackBase.h:136
const_iterator end() const
const Track & track() const
TrajectoryStateClosestToPoint trajectoryStateClosestToPoint(const GlobalPoint &point) const
dbl *** dir
Definition: mlp_gen.cc:35
const GlobalPoint & getPosition() const
const_iterator begin() const
double py() const
y coordinate of momentum vector
Definition: TrackBase.h:134
DEFINE_FWK_MODULE ( PFRecoTauDiscriminationAgainstCaloMuon  )