CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Static Public Member Functions | Private Attributes
PFTauTransverseImpactParameters Class Reference
Inheritance diagram for PFTauTransverseImpactParameters:
edm::stream::EDProducer<>

Public Types

enum  CMSSWPerigee {
  aCurv = 0, aTheta, aPhi, aTip,
  aLip
}
 
- Public Types inherited from edm::stream::EDProducer<>
typedef CacheContexts< T... > CacheTypes
 
typedef CacheTypes::GlobalCache GlobalCache
 
typedef AbilityChecker< T... > HasAbility
 
typedef CacheTypes::LuminosityBlockCache LuminosityBlockCache
 
typedef LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCacheLuminosityBlockContext
 
typedef CacheTypes::LuminosityBlockSummaryCache LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache, GlobalCacheRunContext
 
typedef CacheTypes::RunSummaryCache RunSummaryCache
 

Public Member Functions

 PFTauTransverseImpactParameters (const edm::ParameterSet &iConfig)
 
void produce (edm::Event &, const edm::EventSetup &) override
 
 ~PFTauTransverseImpactParameters () override
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 EDProducer ()=default
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndRuns () const final
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 

Private Attributes

edm::EDGetTokenT< edm::AssociationVector< PFTauRefProd, std::vector< reco::VertexRef > > > PFTauPVAToken_
 
edm::EDGetTokenT< edm::AssociationVector< PFTauRefProd, std::vector< std::vector< reco::VertexRef > > > > PFTauSVAToken_
 
edm::EDGetTokenT< std::vector< reco::PFTau > > PFTauToken_
 
bool useFullCalculation_
 

Detailed Description

Definition at line 54 of file PFTauTransverseImpactParameters.cc.

Member Enumeration Documentation

◆ CMSSWPerigee

Enumerator
aCurv 
aTheta 
aPhi 
aTip 
aLip 

Definition at line 56 of file PFTauTransverseImpactParameters.cc.

56 { aCurv = 0, aTheta, aPhi, aTip, aLip };

Constructor & Destructor Documentation

◆ PFTauTransverseImpactParameters()

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

Definition at line 69 of file PFTauTransverseImpactParameters.cc.

70  : PFTauToken_(consumes<std::vector<reco::PFTau>>(iConfig.getParameter<edm::InputTag>("PFTauTag"))),
71  PFTauPVAToken_(consumes<edm::AssociationVector<PFTauRefProd, std::vector<reco::VertexRef>>>(
72  iConfig.getParameter<edm::InputTag>("PFTauPVATag"))),
73  PFTauSVAToken_(consumes<edm::AssociationVector<PFTauRefProd, std::vector<std::vector<reco::VertexRef>>>>(
74  iConfig.getParameter<edm::InputTag>("PFTauSVATag"))),
75  useFullCalculation_(iConfig.getParameter<bool>("useFullCalculation")) {
76  produces<edm::AssociationVector<PFTauRefProd, std::vector<reco::PFTauTransverseImpactParameterRef>>>();
77  produces<PFTauTransverseImpactParameterCollection>("PFTauTIP");
78 }

◆ ~PFTauTransverseImpactParameters()

PFTauTransverseImpactParameters::~PFTauTransverseImpactParameters ( )
override

Definition at line 80 of file PFTauTransverseImpactParameters.cc.

80 {}

Member Function Documentation

◆ fillDescriptions()

void PFTauTransverseImpactParameters::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 193 of file PFTauTransverseImpactParameters.cc.

193  {
194  // PFTauTransverseImpactParameters
196  desc.add<edm::InputTag>("PFTauPVATag", edm::InputTag("PFTauPrimaryVertexProducer"));
197  desc.add<bool>("useFullCalculation", false);
198  desc.add<edm::InputTag>("PFTauTag", edm::InputTag("hpsPFTauProducer"));
199  desc.add<edm::InputTag>("PFTauSVATag", edm::InputTag("PFTauSecondaryVertexProducer"));
200  descriptions.add("PFTauTransverseImpactParameters", desc);
201 }

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::add(), and HLT_2018_cff::InputTag.

◆ produce()

void PFTauTransverseImpactParameters::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
override

Definition at line 101 of file PFTauTransverseImpactParameters.cc.

101  {
102  // Obtain Collections
103  edm::ESHandle<TransientTrackBuilder> transTrackBuilder;
104  iSetup.get<TransientTrackRecord>().get("TransientTrackBuilder", transTrackBuilder);
105 
107  iEvent.getByToken(PFTauToken_, Tau);
108 
110  iEvent.getByToken(PFTauPVAToken_, PFTauPVA);
111 
113  iEvent.getByToken(PFTauSVAToken_, PFTauSVA);
114 
115  // Set Association Map
116  auto AVPFTauTIP =
117  std::make_unique<edm::AssociationVector<PFTauRefProd, std::vector<reco::PFTauTransverseImpactParameterRef>>>(
118  PFTauRefProd(Tau));
119  auto TIPCollection_out = std::make_unique<PFTauTransverseImpactParameterCollection>();
121  iEvent.getRefBeforePut<reco::PFTauTransverseImpactParameterCollection>("PFTauTIP");
122 
123  // For each Tau Run Algorithim
124  if (Tau.isValid()) {
125  for (reco::PFTauCollection::size_type iPFTau = 0; iPFTau < Tau->size(); iPFTau++) {
126  reco::PFTauRef RefPFTau(Tau, iPFTau);
127  const reco::VertexRef PV = PFTauPVA->value(RefPFTau.key());
128  const std::vector<reco::VertexRef> SV = PFTauSVA->value(RefPFTau.key());
129  double dxy(-999), dxy_err(-999);
130  reco::Vertex::Point poca(0, 0, 0);
131  double ip3d(-999), ip3d_err(-999);
132  reco::Vertex::Point ip3d_poca(0, 0, 0);
133  if (RefPFTau->leadChargedHadrCand().isNonnull()) {
134  const reco::Track* track = getTrack(*RefPFTau->leadChargedHadrCand());
135  if (track != nullptr) {
136  if (useFullCalculation_) {
137  reco::TransientTrack transTrk = transTrackBuilder->build(*track);
138  GlobalVector direction(
139  RefPFTau->p4().px(), RefPFTau->p4().py(), RefPFTau->p4().pz()); //To compute sign of IP
140  std::pair<bool, Measurement1D> signed_IP2D =
141  IPTools::signedTransverseImpactParameter(transTrk, direction, (*PV));
142  dxy = signed_IP2D.second.value();
143  dxy_err = signed_IP2D.second.error();
144  std::pair<bool, Measurement1D> signed_IP3D = IPTools::signedImpactParameter3D(transTrk, direction, (*PV));
145  ip3d = signed_IP3D.second.value();
146  ip3d_err = signed_IP3D.second.error();
147  TransverseImpactPointExtrapolator extrapolator(transTrk.field());
148  GlobalPoint pos =
149  extrapolator.extrapolate(transTrk.impactPointState(), RecoVertex::convertPos(PV->position()))
150  .globalPosition();
151  poca = reco::Vertex::Point(pos.x(), pos.y(), pos.z());
152  AnalyticalImpactPointExtrapolator extrapolator3D(transTrk.field());
153  GlobalPoint pos3d =
154  extrapolator3D.extrapolate(transTrk.impactPointState(), RecoVertex::convertPos(PV->position()))
155  .globalPosition();
156  ip3d_poca = reco::Vertex::Point(pos3d.x(), pos3d.y(), pos3d.z());
157  } else {
158  dxy_err = track->d0Error();
159  dxy = track->dxy(PV->position());
160  ip3d_err = track->dzError(); //store dz, ip3d not available
161  ip3d = track->dz(PV->position()); //store dz, ip3d not available
162  }
163  }
164  }
165  if (!SV.empty()) {
167  reco::Vertex::Point v(SV.at(0)->x() - PV->x(), SV.at(0)->y() - PV->y(), SV.at(0)->z() - PV->z());
168  for (int i = 0; i < reco::Vertex::dimension; i++) {
169  for (int j = 0; j < reco::Vertex::dimension; j++) {
170  cov(i, j) = SV.at(0)->covariance(i, j) + PV->covariance(i, j);
171  }
172  }
173  GlobalVector direction(RefPFTau->px(), RefPFTau->py(), RefPFTau->pz());
174  double vSig = SecondaryVertex::computeDist3d(*PV, *SV.at(0), direction, true).significance();
175  reco::PFTauTransverseImpactParameter TIPV(poca, dxy, dxy_err, ip3d_poca, ip3d, ip3d_err, PV, v, vSig, SV.at(0));
177  reco::PFTauTransverseImpactParameterRef(TIPRefProd_out, TIPCollection_out->size());
178  TIPCollection_out->push_back(TIPV);
179  AVPFTauTIP->setValue(iPFTau, TIPVRef);
180  } else {
181  reco::PFTauTransverseImpactParameter TIPV(poca, dxy, dxy_err, ip3d_poca, ip3d, ip3d_err, PV);
183  reco::PFTauTransverseImpactParameterRef(TIPRefProd_out, TIPCollection_out->size());
184  TIPCollection_out->push_back(TIPV);
185  AVPFTauTIP->setValue(iPFTau, TIPVRef);
186  }
187  }
188  }
189  iEvent.put(std::move(TIPCollection_out), "PFTauTIP");
190  iEvent.put(std::move(AVPFTauTIP));
191 }

References TransientTrackBuilder::build(), RecoVertex::convertPos(), reco::Vertex::dimension, PVValHelper::dxy, reco::TransientTrack::field(), edm::EventSetup::get(), get, getTrack(), mps_fire::i, iEvent, reco::TransientTrack::impactPointState(), electrons_cff::ip3d, edm::Ref< C, T, F >::isNonnull(), dqmiolumiharvest::j, edm::Ref< C, T, F >::key(), eostools::move(), PFTauPVAToken_, PFTauSVAToken_, PFTauToken_, nanoDQM_cfi::PV, IPTools::signedImpactParameter3D(), IPTools::signedTransverseImpactParameter(), met_cff::significance, nanoDQM_cfi::SV, L1TRate_Offline_cfi::Tau, HLT_2018_cff::track, useFullCalculation_, and findQualityFiles::v.

Member Data Documentation

◆ PFTauPVAToken_

edm::EDGetTokenT<edm::AssociationVector<PFTauRefProd, std::vector<reco::VertexRef> > > PFTauTransverseImpactParameters::PFTauPVAToken_
private

Definition at line 64 of file PFTauTransverseImpactParameters.cc.

Referenced by produce().

◆ PFTauSVAToken_

edm::EDGetTokenT<edm::AssociationVector<PFTauRefProd, std::vector<std::vector<reco::VertexRef> > > > PFTauTransverseImpactParameters::PFTauSVAToken_
private

Definition at line 65 of file PFTauTransverseImpactParameters.cc.

Referenced by produce().

◆ PFTauToken_

edm::EDGetTokenT<std::vector<reco::PFTau> > PFTauTransverseImpactParameters::PFTauToken_
private

Definition at line 63 of file PFTauTransverseImpactParameters.cc.

Referenced by produce().

◆ useFullCalculation_

bool PFTauTransverseImpactParameters::useFullCalculation_
private

Definition at line 66 of file PFTauTransverseImpactParameters.cc.

Referenced by produce().

Vector3DBase
Definition: Vector3DBase.h:8
edm::RefProd
Definition: EDProductfwd.h:25
mps_fire.i
i
Definition: mps_fire.py:355
edm::ParameterSetDescription::add
ParameterDescriptionBase * add(U const &iLabel, T const &value)
Definition: ParameterSetDescription.h:95
reco::PFTauTransverseImpactParameterRef
edm::Ref< PFTauTransverseImpactParameterCollection > PFTauTransverseImpactParameterRef
presistent reference to a PFTauTransverseImpactParameter
Definition: PFTauTransverseImpactParameterFwd.h:13
L1TRate_Offline_cfi.Tau
Tau
Definition: L1TRate_Offline_cfi.py:43
PFTauTransverseImpactParameters::aLip
Definition: PFTauTransverseImpactParameters.cc:56
pos
Definition: PixelAliasList.h:18
reco::PFTauRefProd
edm::RefProd< PFTauCollection > PFTauRefProd
references to PFTau collection
Definition: PFTauFwd.h:15
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
reco::Vertex::CovarianceMatrix
math::Error< dimension >::type CovarianceMatrix
covariance error matrix (3x3)
Definition: Vertex.h:46
TransverseImpactPointExtrapolator
Definition: TransverseImpactPointExtrapolator.h:26
Tau
Definition: Tau.py:1
findQualityFiles.v
v
Definition: findQualityFiles.py:179
IPTools::signedTransverseImpactParameter
std::pair< bool, Measurement1D > signedTransverseImpactParameter(const reco::TransientTrack &track, const GlobalVector &direction, const reco::Vertex &vertex)
Definition: IPTools.cc:57
edm::Handle
Definition: AssociativeIterator.h:50
nanoDQM_cfi.PV
PV
Definition: nanoDQM_cfi.py:440
edm::Ref< PFTauCollection >
PFTauTransverseImpactParameters::aPhi
Definition: PFTauTransverseImpactParameters.cc:56
trigger::size_type
uint16_t size_type
Definition: TriggerTypeDefs.h:18
edm::EventSetup::get
T get() const
Definition: EventSetup.h:73
edm::ConfigurationDescriptions::add
void add(std::string const &label, ParameterSetDescription const &psetDescription)
Definition: ConfigurationDescriptions.cc:57
IPTools::signedImpactParameter3D
std::pair< bool, Measurement1D > signedImpactParameter3D(const reco::TransientTrack &track, const GlobalVector &direction, const reco::Vertex &vertex)
Definition: IPTools.cc:81
TransientTrackRecord
Definition: TransientTrackRecord.h:11
reco::Track
Definition: Track.h:27
edm::ESHandle< TransientTrackBuilder >
PFTauTransverseImpactParameters::PFTauToken_
edm::EDGetTokenT< std::vector< reco::PFTau > > PFTauToken_
Definition: PFTauTransverseImpactParameters.cc:63
Point3DBase< float, GlobalTag >
reco::PFTauTransverseImpactParameter
Definition: PFTauTransverseImpactParameter.h:25
PFTauTransverseImpactParameters::PFTauPVAToken_
edm::EDGetTokenT< edm::AssociationVector< PFTauRefProd, std::vector< reco::VertexRef > > > PFTauPVAToken_
Definition: PFTauTransverseImpactParameters.cc:64
edm::AssociationVector
Definition: AssociationVector.h:67
HLT_2018_cff.InputTag
InputTag
Definition: HLT_2018_cff.py:79016
AnalyticalImpactPointExtrapolator
Definition: AnalyticalImpactPointExtrapolator.h:26
reco::Vertex::dimension
Definition: Vertex.h:42
electrons_cff.ip3d
ip3d
Definition: electrons_cff.py:363
reco::TransientTrack::impactPointState
TrajectoryStateOnSurface impactPointState() const
Definition: TransientTrack.h:98
nanoDQM_cfi.SV
SV
Definition: nanoDQM_cfi.py:528
iEvent
int iEvent
Definition: GenABIO.cc:224
PFTauTransverseImpactParameters::useFullCalculation_
bool useFullCalculation_
Definition: PFTauTransverseImpactParameters.cc:66
get
#define get
reco::TransientTrack::field
const MagneticField * field() const
Definition: TransientTrack.h:110
PFTauTransverseImpactParameters::aTip
Definition: PFTauTransverseImpactParameters.cc:56
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
getTrack
static const TrackGhostTrackState * getTrack(const BasicGhostTrackState *basic)
Definition: GhostTrackState.cc:49
PFTauTransverseImpactParameters::aTheta
Definition: PFTauTransverseImpactParameters.cc:56
PFTauTransverseImpactParameters::PFTauSVAToken_
edm::EDGetTokenT< edm::AssociationVector< PFTauRefProd, std::vector< std::vector< reco::VertexRef > > > > PFTauSVAToken_
Definition: PFTauTransverseImpactParameters.cc:65
reco::Vertex::Point
math::XYZPoint Point
point in the space
Definition: Vertex.h:40
eostools.move
def move(src, dest)
Definition: eostools.py:511
reco::PFTauTransverseImpactParameterCollection
std::vector< reco::PFTauTransverseImpactParameter > PFTauTransverseImpactParameterCollection
collection of PFTauTransverseImpactParameter objects
Definition: PFTauTransverseImpactParameterFwd.h:9
reco::TransientTrack
Definition: TransientTrack.h:19
PVValHelper::dxy
Definition: PVValidationHelpers.h:47
PFTauTransverseImpactParameters::aCurv
Definition: PFTauTransverseImpactParameters.cc:56
RecoVertex::convertPos
reco::Vertex::Point convertPos(const GlobalPoint &p)
Definition: ConvertToFromReco.h:7
TransientTrackBuilder::build
reco::TransientTrack build(const reco::Track *p) const
Definition: TransientTrackBuilder.cc:20
HLT_2018_cff.track
track
Definition: HLT_2018_cff.py:10352
dqmiolumiharvest.j
j
Definition: dqmiolumiharvest.py:66
edm::InputTag
Definition: InputTag.h:15
met_cff.significance
significance
Definition: met_cff.py:19