Skip to content

Commit bb373ea

Browse files
committed
Merge pull request cms-sw#2449 from cms-tau-pog/CMSSW_7_1_X
Reco update -- TauID patches
2 parents 7dd6557 + e9b51f6 commit bb373ea

18 files changed

+483
-345
lines changed

RecoTauTag/ImpactParameter/interface/MultiProngTauSolver.h

+4-5
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,13 @@ class MultiProngTauSolver {
2222
MultiProngTauSolver(){};
2323
virtual ~MultiProngTauSolver(){};
2424

25-
static void quadratic(double& x_plus,double& x_minus,double a, double b, double c);
26-
static void analyticESolver(TLorentzVector& nu_plus,TLorentzVector& nu_minus,const TLorentzVector& A1);
27-
static void numericalESolver(TLorentzVector& nu_plus,TLorentzVector& nu_minus,const TLorentzVector& A1);
28-
static void solveByRotation(const TVector3& TauDir,const TLorentzVector& A1, TLorentzVector& Tau_plus,TLorentzVector& Tau_minus,TLorentzVector& nu_plus,TLorentzVector& nu_minus,bool rotateback=true);
25+
static void quadratic(double& x_plus,double& x_minus,double a, double b, double c, bool &isReal);
26+
static void analyticESolver(TLorentzVector& nu_plus,TLorentzVector& nu_minus,const TLorentzVector& A1,bool &isReal);
27+
static void numericalESolver(TLorentzVector& nu_plus,TLorentzVector& nu_minus,const TLorentzVector& A1,bool &isReal);
28+
static void solveByRotation(const TVector3& TauDir,const TLorentzVector& A1, TLorentzVector& Tau_plus,TLorentzVector& Tau_minus,TLorentzVector& nu_plus,TLorentzVector& nu_minus, bool &isReal,bool rotateback=true);
2929
static bool setTauDirectionatThetaGJMax(const TLorentzVector& a1, double& theta,double& phi,double scale=1.0);
3030
static double thetaGJMax(const TLorentzVector& a1);
3131
static LorentzVectorParticle estimateNu(const LorentzVectorParticle& a1, const TVector3& pv, int ambiguity, TLorentzVector& tau);
32-
3332
static TVectorT<double> rotateToTauFrame(const TVectorT<double>& inpar);
3433
};
3534

RecoTauTag/ImpactParameter/interface/TauA1NuConstrainedFitter.h

+29-26
Original file line numberDiff line numberDiff line change
@@ -7,54 +7,57 @@
77
* Humboldt Foundations
88
*/
99

10-
#include "RecoTauTag/ImpactParameter/interface/LagrangeMultipliersFitter.h"
1110
#include "TVector3.h"
1211
#include "RecoTauTag/ImpactParameter/interface/MultiProngTauSolver.h"
1312
#include "RecoTauTag/ImpactParameter/interface/LorentzVectorParticle.h"
1413
#include "RecoTauTag/ImpactParameter/interface/ErrorMatrixPropagator.h"
1514
#include <vector>
15+
#include "TMatrixT.h"
16+
#include "TVectorT.h"
17+
#include "TMatrixTSym.h"
1618

1719
namespace tauImpactParameter {
1820

19-
class TauA1NuConstrainedFitter : public LagrangeMultipliersFitter, public MultiProngTauSolver{
21+
class TauA1NuConstrainedFitter : public MultiProngTauSolver{
2022
public:
21-
TauA1NuConstrainedFitter(unsigned int ambiguity,const LorentzVectorParticle& A1,const TVector3& PVertex, const TMatrixTSym<double>& VertexCov);
23+
TauA1NuConstrainedFitter(unsigned int ambiguity,const LorentzVectorParticle& A1,const TVector3& PVertex, const TMatrixTSym<double>& VertexCov);
2224
virtual ~TauA1NuConstrainedFitter(){};
2325

2426
enum Pars{tau_phi=0,tau_theta,a1_px,a1_py,a1_pz,a1_m,nu_px,nu_py,nu_pz,npar};
2527
enum ExpandedPars{a1_vx=9,a1_vy,a1_vz,nexpandedpar};
2628
enum OrignialPars{norigpar=13};
2729

28-
virtual bool fit();
29-
virtual double nConstraints(){return 3;}
30-
virtual double ndf(){return 0;}
31-
virtual int nDaughters(){return 2;}
32-
3330
std::vector<LorentzVectorParticle> getRefitDaughters();
3431
LorentzVectorParticle getMother();
32+
double getTauRotationSignificance();
33+
34+
bool fit();
3535

36-
protected:
37-
virtual TVectorD value(const TVectorD& v);
38-
3936
private:
40-
static TVectorT<double> computeInitalExpPar(const TVectorT<double>& inpar);
41-
static TVectorT<double> computeExpParToPar(const TVectorT<double>& inpar);
42-
static TVectorT<double> computeNuLorentzVectorPar(const TVectorT<double>& inpar);
43-
static TVectorT<double> computeA1LorentzVectorPar(const TVectorT<double>& inpar);
44-
static TVectorT<double> computeMotherLorentzVectorPar(const TVectorT<double>& inpar);
45-
void updateExpandedPar();
46-
static void covertParToObjects(const TVectorD& v, TLorentzVector& a1, TLorentzVector& nu, double& phi, double& theta, TVector3& TauDir);
47-
48-
TVectorT<double> exppar_;
49-
TMatrixTSym<double> expcov_;
37+
static TVectorT<double> ComputeInitalExpPar(const TVectorT<double> &inpar);
38+
static TVectorT<double> ComputeExpParToPar(const TVectorT<double> &inpar);
39+
static TVectorT<double> ComputeNuLorentzVectorPar(const TVectorT<double> &inpar);
40+
static TVectorT<double> ComputeA1LorentzVectorPar(const TVectorT<double> &inpar);
41+
static TVectorT<double> ComputeMotherLorentzVectorPar(const TVectorT<double> &inpar);
42+
static TVectorT<double> SolveAmbiguityAnalytically(const TVectorT<double> &inpar);
43+
static TVectorT<double> SolveAmbiguityAnalyticallywithRot(const TVectorT<double> &inpar);
44+
static TVectorT<double> TauRot(const TVectorT<double> &inpar);
45+
46+
void UpdateExpandedPar();
47+
static void CovertParToObjects(const TVectorD &v,TLorentzVector &a1,TLorentzVector &nu,double &phi,double &theta,TVector3 &TauDir);
48+
49+
TVectorT<double> par_0;
50+
TVectorT<double> par;
51+
TMatrixTSym<double> cov_0;
52+
TMatrixTSym<double> cov;
53+
54+
TVectorT<double> exppar;
55+
TMatrixTSym<double> expcov;
5056
std::vector<LorentzVectorParticle> particles_;
51-
int ConstraintMode_;
5257
unsigned int ambiguity_;
5358

54-
void solveAmbiguityAnalytically();
55-
static TVectorT<double> findThetaGJMax(const TVectorT<double>& inpar);
56-
static TVectorT<double> setThetaGJMax(const TVectorT<double>& inpar);
57-
};
59+
static unsigned int static_amb;
5860

61+
};
5962
}
6063
#endif

RecoTauTag/ImpactParameter/plugins/PFTau3ProngReco.cc

+2-4
Original file line numberDiff line numberDiff line change
@@ -242,10 +242,8 @@ void PFTau3ProngReco::produce(edm::Event& iEvent,const edm::EventSetup& iSetup){
242242
}
243243
for(unsigned int i=0; i<PFTau3ProngSummary::nsolutions;i++){
244244
TauA1NuConstrainedFitter TauA1NU(i,a1,pv,pvcov);
245-
TauA1NU.setMaxDelta(0.01);
246-
TauA1NU.setNIterMax(1000);
247245
bool isFitOK=TauA1NU.fit();
248-
if(TauA1NU.isConverged()){
246+
if(isFitOK){
249247
LorentzVectorParticle theTau=TauA1NU.getMother();
250248
std::vector<LorentzVectorParticle> daughter=TauA1NU.getRefitDaughters();
251249
std::vector<TLorentzVector> daughter_p4;
@@ -255,7 +253,7 @@ void PFTau3ProngReco::produce(edm::Event& iEvent,const edm::EventSetup& iSetup){
255253
daughter_charge.push_back((int)daughter[d].charge());
256254
daughter_PDGID.push_back(daughter[d].pdgId());
257255
}
258-
PFTau3PS.AddSolution(i,theTau.p4(),daughter_p4,daughter_charge,daughter_PDGID,(isFitOK&&TauA1NU.isConverged()),TauA1NU.chiSquare(),-999);
256+
PFTau3PS.AddSolution(i,theTau.p4(),daughter_p4,daughter_charge,daughter_PDGID,(isFitOK),0.0,-999);
259257
}
260258
}
261259
}

RecoTauTag/ImpactParameter/src/ImpactParameterAlgorithm.cc

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
#include "RecoBTag/BTagTools/interface/SignedImpactParameter3D.h"
55

66
#include "TrackingTools/TransientTrack/interface/TransientTrackBuilder.h"
7+
#include "FWCore/MessageLogger/interface/MessageLogger.h"
78

89
ImpactParameterAlgorithm::ImpactParameterAlgorithm(){
910
ip_min = -9999;
@@ -30,8 +31,7 @@ void ImpactParameterAlgorithm::setTransientTrackBuilder(const TransientTrackBuil
3031
std::pair<float,reco::TauImpactParameterInfo> ImpactParameterAlgorithm::tag(const reco::IsolatedTauTagInfoRef & tauRef, const reco::Vertex & pv) {
3132

3233
if(transientTrackBuilder == 0){
33-
std::cout << "Transient track builder is 0. abort!" << std::endl;
34-
abort(); //FIXME: trow an exception here
34+
throw cms::Exception("NullTransientTrackBuilder") << "Transient track builder is 0. ";
3535
}
3636

3737
reco::TauImpactParameterInfo resultExtended;
@@ -52,7 +52,7 @@ std::pair<float,reco::TauImpactParameterInfo> ImpactParameterAlgorithm::tag(cons
5252

5353
SignedImpactParameter3D signed_ip3D;
5454
Measurement1D ip3D = signed_ip3D.apply(transientTrack,direction,pv).second;
55-
//std::cout << "check pv,ip3d,track z " << pv.z() << " " << ip3D.value() << " " << transientTrack->dz() << std::endl;
55+
LogDebug("ImpactParameterAlgorithm::tag") << "check pv,ip3d " << pv.z() << " " << ip3D.value() ;
5656
if(!use_sign){
5757
Measurement1D tmp2D(fabs(ip.value()),ip.error());
5858
ip = tmp2D;

RecoTauTag/ImpactParameter/src/MultiProngTauSolver.cc

+48-35
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,30 @@
1-
/* From SimpleFits Package
2-
* Designed an written by
3-
* author: Ian M. Nugent
4-
* Humboldt Foundations
5-
*/
61
#include "RecoTauTag/ImpactParameter/interface/MultiProngTauSolver.h"
7-
#include <iostream>
82
#include "TMatrixTSym.h"
3+
#include "TVectorT.h"
4+
#include "FWCore/MessageLogger/interface/MessageLogger.h"
95

106
using namespace tauImpactParameter;
117

12-
void MultiProngTauSolver::quadratic(double& x_plus,double& x_minus,double a, double b, double c){
8+
void MultiProngTauSolver::quadratic(double &x_plus,double &x_minus,double a, double b, double c, bool &isReal){
139
double R=b*b-4*a*c;
14-
if(R<0){R=0;}
15-
x_minus=(-b+sqrt(R))/(2.0*a); // opposite sign is smaller
16-
x_plus=(-b-sqrt(R))/(2.0*a);
10+
isReal=true;
11+
if(R<0){isReal=false;}// flag cases when R<0 but compute quadratic equation with |R|
12+
x_minus=(-b+sqrt(fabs(R)))/(2.0*a); // opposite sign is smaller
13+
x_plus=(-b-sqrt(fabs(R)))/(2.0*a);
1714
}
1815

19-
void MultiProngTauSolver::analyticESolver(TLorentzVector& nu_plus,TLorentzVector& nu_minus, const TLorentzVector& A1){
16+
void MultiProngTauSolver::analyticESolver(TLorentzVector& nu_plus,TLorentzVector& nu_minus,const TLorentzVector &A1,bool &isReal){
2017
double a=(A1.Pz()*A1.Pz())/(A1.E()*A1.E())-1.0;
2118
double K=(PDGInfo::tau_mass()*PDGInfo::tau_mass()-A1.M2()-2.0*A1.Pt()*A1.Pt())/(2.0*A1.E());
2219
double b=2.0*K*A1.Pz()/A1.E();
2320
double c=K*K-A1.Pt()*A1.Pt();
2421
double z_plus(0),z_minus(0);
25-
quadratic(z_plus,z_minus,a,b,c);
26-
nu_plus.SetPxPyPzE(-A1.Px(),-A1.Py(),z_plus,sqrt(z_plus*z_plus+A1.Pt()*A1.Pt()));
27-
nu_minus.SetPxPyPzE(-A1.Px(),-A1.Py(),z_minus,sqrt(z_minus*z_minus+A1.Pt()*A1.Pt()));
22+
quadratic(z_plus,z_minus,a,b,c,isReal);
23+
nu_plus=TLorentzVector(-A1.Px(),-A1.Py(),z_plus,sqrt(z_plus*z_plus+A1.Pt()*A1.Pt()));
24+
nu_minus=TLorentzVector(-A1.Px(),-A1.Py(),z_minus,sqrt(z_minus*z_minus+A1.Pt()*A1.Pt()));
2825
}
2926

30-
void MultiProngTauSolver::numericalESolver(TLorentzVector& nu_plus,TLorentzVector& nu_minus, const TLorentzVector& A1){
27+
void MultiProngTauSolver::numericalESolver(TLorentzVector& nu_plus,TLorentzVector& nu_minus,const TLorentzVector& A1,bool &isReal){
3128
double rmin(-100), rmax(100), step(0.01), mtau2(PDGInfo::tau_mass()*PDGInfo::tau_mass()), z1(-999), z2(-999), zmin(-999), min(9999), prev(9999);
3229
double z=rmin;
3330
TLorentzVector nu,tau;
@@ -42,25 +39,24 @@ void MultiProngTauSolver::numericalESolver(TLorentzVector& nu_plus,TLorentzVecto
4239
z+=step;
4340
}
4441
if(z1!=-999 && z2!=-999){
45-
nu_plus.SetPxPyPzE(-A1.Px(),-A1.Py(),z1,sqrt(z1*z1+A1.Pt()*A1.Pt()));
46-
nu_minus.SetPxPyPzE(-A1.Px(),-A1.Py(),z2,sqrt(z2*z2+A1.Pt()*A1.Pt()));
42+
nu_plus=TLorentzVector(-A1.Px(),-A1.Py(),z1,sqrt(z1*z1+A1.Pt()*A1.Pt()));
43+
nu_minus=TLorentzVector(-A1.Px(),-A1.Py(),z2,sqrt(z2*z2+A1.Pt()*A1.Pt()));
4744
}
4845
else{
49-
nu_plus.SetPxPyPzE(-A1.Px(),-A1.Py(),zmin,sqrt(zmin*zmin+A1.Pt()*A1.Pt()));
50-
nu_minus.SetPxPyPzE(-A1.Px(),-A1.Py(),zmin,sqrt(zmin*zmin+A1.Pt()*A1.Pt()));
46+
nu_plus=TLorentzVector(-A1.Px(),-A1.Py(),zmin,sqrt(zmin*zmin+A1.Pt()*A1.Pt()));
47+
nu_minus=TLorentzVector(-A1.Px(),-A1.Py(),zmin,sqrt(zmin*zmin+A1.Pt()*A1.Pt()));
5148
}
5249
}
5350

5451
void MultiProngTauSolver::solveByRotation(const TVector3& TauDir,const TLorentzVector& A1, TLorentzVector& Tau_plus,TLorentzVector& Tau_minus,
55-
TLorentzVector& nu_plus,TLorentzVector& nu_minus, bool rotateback){
52+
TLorentzVector &nu_plus,TLorentzVector &nu_minus, bool &isReal,bool rotateback){
5653
TLorentzVector A1rot=A1;
5754
double phi(TauDir.Phi()),theta(TauDir.Theta());
5855
A1rot.RotateZ(-phi);
5956
A1rot.RotateY(-theta);
6057
/////////////////////////////////////////////////////
61-
// numericalESolver(nu_plus,nu_minus,A1rot); // for debugging AnalyticESolver (slow)
62-
//analyticESolver(nu_plus,nu_minus,A1rot);
63-
analyticESolver(nu_plus,nu_minus,A1rot);
58+
// NumericalESolver(nu_plus,nu_minus,A1rot); // for debugging analyticESolver (slow)
59+
analyticESolver(nu_plus,nu_minus,A1rot,isReal);
6460
/////////////////////////////////////////////////////
6561
if(rotateback){
6662
nu_plus.RotateY(theta);
@@ -78,13 +74,21 @@ void MultiProngTauSolver::solveByRotation(const TVector3& TauDir,const TLorentzV
7874
}
7975

8076
bool MultiProngTauSolver::setTauDirectionatThetaGJMax(const TLorentzVector& a1, double& theta,double& phi,double scale){
81-
double thetaGJMax_a1 =thetaGJMax(a1);
82-
double dtheta=(theta-a1.Theta());
83-
double dphi=fmod(fabs(phi-a1.Phi()),2*TMath::Pi());if(phi<a1.Phi())dphi*=-1.0;
84-
double dphitheta=sqrt(dtheta*dtheta+dphi*dphi);
85-
if(thetaGJMax_a1<dphitheta || scale<0){
86-
theta=a1.Theta()+dtheta*(thetaGJMax_a1/dphitheta)*fabs(scale);
87-
phi=a1.Phi()+dphi*(thetaGJMax_a1/dphitheta)*fabs(scale);
77+
double thetaGJMaxvar =thetaGJMax(a1);
78+
TVector3 a1v(a1.Vect()); if(a1v.Mag()!=0) a1v*=1/a1v.Mag();
79+
TVector3 tau(cos(phi)*sin(theta),sin(phi)*sin(theta),cos(theta));
80+
double dphitheta=acos(a1v.Dot(tau)/(a1v.Mag()*tau.Mag()));
81+
if(thetaGJMaxvar<dphitheta || scale<0){
82+
if(scale<0) scale=1.0;
83+
double a=(thetaGJMaxvar/dphitheta)-(1-scale);
84+
double b=1-(thetaGJMaxvar/dphitheta)+(1-scale);
85+
edm::LogInfo("RecoTauTag/ImpactParameter") << "SetTauDirectionatThetaGJMax before GF " << thetaGJMaxvar << " dot " << acos(a1v.Dot(tau)/(a1v.Mag()*tau.Mag())) << " a1 phi " << a1v.Phi() << " tau phi " << tau.Phi() << " a1 theta " <<a1v.Theta() << " tau theta " << tau.Theta() ;
86+
tau*=a;
87+
a1v*=b;
88+
tau+=a1v;
89+
theta=tau.Theta();
90+
phi=tau.Phi();
91+
edm::LogInfo("RecoTauTag/ImpactParameter") << "SetTauDirectionatThetaGJMax GF " << thetaGJMaxvar << " dot " << acos(a1v.Dot(tau)/(a1v.Mag()*tau.Mag())) << " phi " << phi << " theta " << theta ;
8892
return true;
8993
}
9094
return false;
@@ -105,14 +109,15 @@ LorentzVectorParticle MultiProngTauSolver::estimateNu(const LorentzVectorParticl
105109
double theta=tauFlghtDir.Theta();
106110
double phi=tauFlghtDir.Phi();
107111
setTauDirectionatThetaGJMax(lorentzA1,theta,phi);
108-
startingtauFlghtDir.SetMagThetaPhi(1.0,theta,phi);
112+
startingtauFlghtDir=TVector3(sin(theta)*cos(phi),sin(theta)*sin(phi),cos(theta));
109113
}
110114
TLorentzVector tau1,tau2,nu1,nu2;
111-
solveByRotation(startingtauFlghtDir,lorentzA1,tau1,tau2,nu1,nu2);
115+
bool isReal;
116+
solveByRotation(startingtauFlghtDir,lorentzA1,tau1,tau2,nu1,nu2,isReal);
112117
if(ambiguity==plus){ nuGuess=nu1; tau=tau1; }
113118
if(ambiguity==minus){ nuGuess=nu2; tau=tau1; }
114119
if(ambiguity==zero){ nuGuess=nu1; tau=tau1; }
115-
TVectorT<double> par(LorentzVectorParticle::NLorentzandVertexPar,10);
120+
TVectorT<double> par(LorentzVectorParticle::NLorentzandVertexPar);
116121
par(LorentzVectorParticle::vx)=a1.parameter(LorentzVectorParticle::vx);
117122
par(LorentzVectorParticle::vy)=a1.parameter(LorentzVectorParticle::vy);
118123
par(LorentzVectorParticle::vz)=a1.parameter(LorentzVectorParticle::vz);
@@ -135,11 +140,19 @@ LorentzVectorParticle MultiProngTauSolver::estimateNu(const LorentzVectorParticl
135140
return LorentzVectorParticle(par,Cov,PDGInfo::nu_tau,0,a1.bField());
136141
}
137142

138-
TVectorT<double> MultiProngTauSolver::rotateToTauFrame(const TVectorT<double>& inpar){
143+
TVectorT<double> MultiProngTauSolver::rotateToTauFrame(const TVectorT<double> &inpar){
139144
TVectorT<double> outpar(3);
140145
TVector3 res(inpar(0),inpar(1),inpar(2));
141-
TVector3 Uz;Uz.SetMagThetaPhi(1,inpar(4),inpar(3));
146+
TVector3 Uz(sin(inpar(4))*cos(inpar(3)),sin(inpar(4))*sin(inpar(3)),cos(inpar(4)));
142147
res.RotateUz(Uz);
148+
/* double phi=inpar(3,0);
149+
double theta=inpar(4,0);
150+
res.RotateZ(-phi);
151+
TVector3 Y(0,1,0);
152+
TVector3 thetadir=res.Cross(Y);
153+
thetadir.RotateY(-theta);
154+
res.RotateY(-theta);
155+
res.RotateZ(thetadir.Phi());*/
143156
outpar(0)=res.X();
144157
outpar(1)=res.Y();
145158
outpar(2)=res.Z();

RecoTauTag/ImpactParameter/src/ParticleBuilder.cc

+8-8
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
#include "TrackingTools/TrajectoryParametrization/interface/PerigeeTrajectoryError.h"
1313
#include "RecoTauTag/ImpactParameter/interface/TrackHelixVertexFitter.h"
1414
#include <TVector3.h>
15+
#include "FWCore/MessageLogger/interface/MessageLogger.h"
1516

1617
using namespace tauImpactParameter;
1718

@@ -80,13 +81,12 @@ TrackParticle ParticleBuilder::createTrackParticle(const reco::TransientTrack& t
8081
if(useTrackHelixPropagation){
8182
/////////////////////////////////////////////////////////////////
8283
// correct dxy dz neglecting material and radiative corrections
83-
/*
84-
std::cout << "Offical CMS dxy - " << par(TrackParticle::dxy) << " dz " << par(TrackParticle::dz)
85-
<< " kappa " << track->qoverp() << " " << par(reco::TrackBase::i_qoverp) << std::endl;
86-
std::cout << "Offical CMS dxy - SimpleFits Format" << SFpar(TrackParticle::dxy) << " dz " << SFpar(TrackParticle::dz)
87-
<< " kappa " << track->qoverp() << " " << SFpar(reco::TrackBase::i_qoverp) << std::endl;
88-
std::cout << "x " << TrackIPOrigin.x() << " y " << TrackIPOrigin.y() << " z " << TrackIPOrigin.z() << std::endl;
89-
*/
84+
85+
LogDebug("RecoTauImpactParameterParticleBuilder") << "Offical CMS dxy - " << par(TrackParticle::dxy) << " dz " << par(TrackParticle::dz)
86+
<< " kappa " << par(reco::TrackBase::i_qoverp) ;
87+
LogDebug("RecoTauImpactParameterParticleBuilder") << "Offical CMS dxy - SimpleFits Format" << SFpar(TrackParticle::dxy) << " dz " << SFpar(TrackParticle::dz)
88+
<< " kappa " << SFpar(reco::TrackBase::i_qoverp) ;
89+
9090
double x,y,z,dxy,dz,s,kappa,lambda,phi;
9191
TVectorT<double> freehelix(TrackHelixVertexFitter::NFreeTrackPar);
9292
freehelix(TrackHelixVertexFitter::x0)=TrackIPPos.x();
@@ -98,7 +98,7 @@ TrackParticle ParticleBuilder::createTrackParticle(const reco::TransientTrack& t
9898
TrackHelixVertexFitter::computedxydz(freehelix,0,kappa,lambda,phi,x,y,z,s,dxy,dz);
9999
SFpar(TrackParticle::dxy) = dxy;
100100
SFpar(TrackParticle::dz) = dz;
101-
//std::cout << "Found values dxy " << dxy << " dz " << dz << std::endl;
101+
LogDebug("RecoTauImpactParameterParticleBuilder") << "Found values dxy " << dxy << " dz " << dz;
102102
//exit(0);
103103
////////////////////////////////////////////////////////////////
104104
}

0 commit comments

Comments
 (0)