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 hasAbilityToProduceInLumis () const final
 
bool hasAbilityToProduceInRuns () 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 55 of file PFTauTransverseImpactParameters.cc.

Member Enumeration Documentation

Constructor & Destructor Documentation

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

Definition at line 70 of file PFTauTransverseImpactParameters.cc.

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

Member Function Documentation

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

Definition at line 185 of file PFTauTransverseImpactParameters.cc.

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::add(), and DEFINE_FWK_MODULE.

185  {
186  // PFTauTransverseImpactParameters
188  desc.add<edm::InputTag>("PFTauPVATag", edm::InputTag("PFTauPrimaryVertexProducer"));
189  desc.add<bool>("useFullCalculation", false);
190  desc.add<edm::InputTag>("PFTauTag", edm::InputTag("hpsPFTauProducer"));
191  desc.add<edm::InputTag>("PFTauSVATag", edm::InputTag("PFTauSecondaryVertexProducer"));
192  descriptions.add("PFTauTransverseImpactParameters", desc);
193 }
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
void PFTauTransverseImpactParameters::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
override

Definition at line 101 of file PFTauTransverseImpactParameters.cc.

References TransientTrackBuilder::build(), RecoVertex::convertPos(), reco::TrackBase::d0Error(), reco::Vertex::dimension, PVValHelper::dxy, reco::TrackBase::dxy(), reco::TrackBase::dz(), reco::TrackBase::dzError(), reco::TransientTrack::field(), edm::EventSetup::get(), edm::Event::getByToken(), edm::Event::getRefBeforePut(), getTrack(), mps_fire::i, reco::TransientTrack::impactPointState(), electrons_cff::ip3d, edm::Ref< C, T, F >::isNonnull(), edm::HandleBase::isValid(), edm::Ref< C, T, F >::key(), eostools::move(), PFTauPVAToken_, PFTauSVAToken_, PFTauToken_, edm::Event::put(), nanoDQM_cfi::PV, IPTools::signedImpactParameter3D(), IPTools::signedTransverseImpactParameter(), met_cff::significance, nanoDQM_cff::SV, HiIsolationCommonParameters_cff::track, useFullCalculation_, and findQualityFiles::v.

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 = std::make_unique< edm::AssociationVector<PFTauRefProd, std::vector<reco::PFTauTransverseImpactParameterRef>>>(PFTauRefProd(Tau));
117  auto TIPCollection_out = std::make_unique<PFTauTransverseImpactParameterCollection>();
119 
120  // For each Tau Run Algorithim
121  if(Tau.isValid()) {
122  for(reco::PFTauCollection::size_type iPFTau = 0; iPFTau < Tau->size(); iPFTau++) {
123  reco::PFTauRef RefPFTau(Tau, iPFTau);
124  const reco::VertexRef PV=PFTauPVA->value(RefPFTau.key());
125  const std::vector<reco::VertexRef> SV=PFTauSVA->value(RefPFTau.key());
126  double dxy(-999), dxy_err(-999);
127  reco::Vertex::Point poca(0,0,0);
128  double ip3d(-999), ip3d_err(-999);
129  reco::Vertex::Point ip3d_poca(0,0,0);
130  if(RefPFTau->leadChargedHadrCand().isNonnull()){
131  const reco::Track* track = getTrack(*RefPFTau->leadChargedHadrCand());
132  if(track != nullptr){
134  reco::TransientTrack transTrk=transTrackBuilder->build(*track);
135  GlobalVector direction(RefPFTau->p4().px(), RefPFTau->p4().py(), RefPFTau->p4().pz()); //To compute sign of IP
136  std::pair<bool,Measurement1D> signed_IP2D = IPTools::signedTransverseImpactParameter(transTrk, direction, (*PV));
137  dxy=signed_IP2D.second.value();
138  dxy_err=signed_IP2D.second.error();
139  std::pair<bool,Measurement1D> signed_IP3D = IPTools::signedImpactParameter3D(transTrk, direction, (*PV));
140  ip3d=signed_IP3D.second.value();
141  ip3d_err=signed_IP3D.second.error();
142  TransverseImpactPointExtrapolator extrapolator(transTrk.field());
143  GlobalPoint pos = extrapolator.extrapolate(transTrk.impactPointState(), RecoVertex::convertPos(PV->position())).globalPosition();
144  poca=reco::Vertex::Point(pos.x(),pos.y(),pos.z());
145  AnalyticalImpactPointExtrapolator extrapolator3D(transTrk.field());
146  GlobalPoint pos3d = extrapolator3D.extrapolate(transTrk.impactPointState(),RecoVertex::convertPos(PV->position())).globalPosition();
147  ip3d_poca=reco::Vertex::Point(pos3d.x(),pos3d.y(),pos3d.z());
148  }
149  else{
150  dxy_err=track->d0Error();
151  dxy=track->dxy(PV->position());
152  ip3d_err=track->dzError(); //store dz, ip3d not available
153  ip3d=track->dz(PV->position()); //store dz, ip3d not available
154  }
155  }
156  }
157  if(!SV.empty()){
159  reco::Vertex::Point v(SV.at(0)->x()-PV->x(),SV.at(0)->y()-PV->y(),SV.at(0)->z()-PV->z());
160  for(int i=0;i<reco::Vertex::dimension;i++){
161  for(int j=0;j<reco::Vertex::dimension;j++){
162  cov(i,j)=SV.at(0)->covariance(i,j)+PV->covariance(i,j);
163  }
164  }
165  GlobalVector direction(RefPFTau->px(),RefPFTau->py(),RefPFTau->pz());
166  double vSig = SecondaryVertex::computeDist3d(*PV,*SV.at(0),direction,true).significance();
167  reco::PFTauTransverseImpactParameter TIPV(poca,dxy,dxy_err,ip3d_poca,ip3d,ip3d_err,PV,v,vSig,SV.at(0));
168  reco::PFTauTransverseImpactParameterRef TIPVRef=reco::PFTauTransverseImpactParameterRef(TIPRefProd_out,TIPCollection_out->size());
169  TIPCollection_out->push_back(TIPV);
170  AVPFTauTIP->setValue(iPFTau,TIPVRef);
171  }
172  else{
173  reco::PFTauTransverseImpactParameter TIPV(poca,dxy,dxy_err,ip3d_poca,ip3d,ip3d_err,PV);
174  reco::PFTauTransverseImpactParameterRef TIPVRef=reco::PFTauTransverseImpactParameterRef(TIPRefProd_out,TIPCollection_out->size());
175  TIPCollection_out->push_back(TIPV);
176  AVPFTauTIP->setValue(iPFTau,TIPVRef);
177  }
178  }
179  }
180  iEvent.put(std::move(TIPCollection_out),"PFTauTIP");
181  iEvent.put(std::move(AVPFTauTIP));
182 }
reco::Vertex::Point convertPos(const GlobalPoint &p)
double d0Error() const
error on d0
Definition: TrackBase.h:853
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:125
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:517
std::pair< bool, Measurement1D > signedTransverseImpactParameter(const reco::TransientTrack &track, const GlobalVector &direction, const reco::Vertex &vertex)
Definition: IPTools.cc:50
reco::TransientTrack build(const reco::Track *p) const
std::pair< bool, Measurement1D > signedImpactParameter3D(const reco::TransientTrack &track, const GlobalVector &direction, const reco::Vertex &vertex)
Definition: IPTools.cc:71
const MagneticField * field() const
edm::RefProd< PFTauCollection > PFTauRefProd
references to PFTau collection
Definition: PFTauFwd.h:15
uint16_t size_type
math::Error< dimension >::type CovarianceMatrix
covariance error matrix (3x3)
Definition: Vertex.h:45
edm::EDGetTokenT< std::vector< reco::PFTau > > PFTauToken_
edm::EDGetTokenT< edm::AssociationVector< PFTauRefProd, std::vector< std::vector< reco::VertexRef > > > > PFTauSVAToken_
edm::EDGetTokenT< edm::AssociationVector< PFTauRefProd, std::vector< reco::VertexRef > > > PFTauPVAToken_
math::XYZPoint Point
point in the space
Definition: Vertex.h:39
bool isValid() const
Definition: HandleBase.h:74
RefProd< PROD > getRefBeforePut()
Definition: Event.h:150
double dz() const
dz parameter (= dsz/cos(lambda)). This is the track z0 w.r.t (0,0,0) only if the refPoint is close to...
Definition: TrackBase.h:648
double dzError() const
error on dz
Definition: TrackBase.h:865
static const TrackGhostTrackState * getTrack(const BasicGhostTrackState *basic)
edm::Ref< PFTauTransverseImpactParameterCollection > PFTauTransverseImpactParameterRef
presistent reference to a PFTauTransverseImpactParameter
significance
Definition: met_cff.py:19
T get() const
Definition: EventSetup.h:71
TrajectoryStateOnSurface impactPointState() const
std::vector< reco::PFTauTransverseImpactParameter > PFTauTransverseImpactParameterCollection
collection of PFTauTransverseImpactParameter objects
double dxy() const
dxy parameter. (This is the transverse impact parameter w.r.t. to (0,0,0) ONLY if refPoint is close t...
Definition: TrackBase.h:630
def move(src, dest)
Definition: eostools.py:511

Member Data Documentation

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

Definition at line 65 of file PFTauTransverseImpactParameters.cc.

Referenced by produce().

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

Definition at line 66 of file PFTauTransverseImpactParameters.cc.

Referenced by produce().

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

Definition at line 64 of file PFTauTransverseImpactParameters.cc.

Referenced by produce().

bool PFTauTransverseImpactParameters::useFullCalculation_
private

Definition at line 67 of file PFTauTransverseImpactParameters.cc.

Referenced by produce().