PhysicsTools
RecoUtils
src
CandMassKinFitter.cc
Go to the documentation of this file.
1
#include "
PhysicsTools/RecoUtils/interface/CandMassKinFitter.h
"
2
#include "
PhysicsTools/KinFitter/interface/TKinFitter.h
"
3
#include "
DataFormats/RecoCandidate/interface/RecoCandidate.h
"
4
#include "
PhysicsTools/KinFitter/interface/TFitConstraintM.h
"
5
#include "
PhysicsTools/KinFitter/interface/TFitParticleMCCart.h
"
6
#include "TMatrixD.h"
7
#include <iostream>
8
using namespace
reco
;
9
using namespace
std
;
10
11
FitQuality
CandMassKinFitter::set
(
Candidate
&
c
)
const
{
12
TKinFitter
fitter(
"CandMassFit"
,
"CandMassFit"
);
13
TString
name
(
"dau0"
);
14
size_t
daus =
c
.numberOfDaughters();
15
vector<TMatrixD>
errors
(daus, TMatrix(3, 3));
16
vector<TVector3> momenta(daus);
17
vector<TFitParticleMCCart*>
particles
(daus,
nullptr
);
18
TFitConstraintM
constraint
(
"MassConstraint"
,
"MassConstraint"
,
nullptr
,
nullptr
, mass_);
19
for
(
size_t
i
= 0;
i
< daus; ++
i
) {
20
const
Candidate
& dau = *
c
.daughter(
i
);
21
const
Particle::LorentzVector
&
p4
= dau.
p4
();
22
TMatrixD&
err
=
errors
[
i
];
23
TVector3& mom = momenta[
i
];
24
mom = TVector3(
p4
.px(),
p4
.py(),
p4
.pz());
25
TrackRef
trk = dau.
get
<
TrackRef
>();
26
// dummy errors for now...
27
// should play with track parametrization...
28
err
.Zero();
29
err
(0, 0) = 0.1;
30
err
(1, 1) = 0.1;
31
err
(2, 2) = 0.1;
32
fitter.
addMeasParticle
(
particles
[
i
] =
new
TFitParticleMCCart
(
name
,
name
, &mom, dau.
mass
(), &
err
));
33
name
[3]++;
34
constraint
.addParticle1(
particles
[
i
]);
35
}
36
fitter.
addConstraint
(&
constraint
);
37
fitter.
setMaxNbIter
(30);
38
fitter.
setMaxDeltaS
(1
e
-2);
39
fitter.
setMaxF
(1
e
-1);
40
fitter.
setVerbosity
(0);
41
fitter.
fit
();
42
// if ( fitter->getStatus() != 0 ) throw ...
43
TLorentzVector sum(0, 0, 0, 0);
44
for
(
size_t
i
= 0;
i
< daus; ++
i
) {
45
Candidate
& dau = *
c
.daughter(
i
);
46
TFitParticleMCCart
*
part
=
particles
[
i
];
47
const
TLorentzVector*
p4
=
part
->getCurr4Vec();
48
dau.
setP4
(
Particle::LorentzVector
(
p4
->X(),
p4
->Y(),
p4
->Z(),
p4
->T()));
49
sum += *
p4
;
50
delete
particles
[
i
];
51
}
52
c
.setP4(
Particle::LorentzVector
(sum.X(), sum.Y(), sum.Z(), sum.T()));
53
return
FitQuality
(fitter.
getS
(), fitter.
getNDF
());
54
}
reco::FitQuality
Definition:
FitQuality.h:16
TKinFitter::setMaxF
void setMaxF(Double_t maxF)
Definition:
TKinFitter.h:54
mps_fire.i
i
Definition:
mps_fire.py:428
reco::Candidate::setP4
virtual void setP4(const LorentzVector &p4)=0
set 4-momentum
HLT_FULL_cff.constraint
constraint
Definition:
HLT_FULL_cff.py:51992
reco::Candidate::mass
virtual double mass() const =0
mass
TFitConstraintM
Definition:
TFitConstraintM.h:11
reco::Candidate::get
T get() const
get a component
Definition:
Candidate.h:221
TKinFitter
Definition:
TKinFitter.h:13
reco
fixed size matrix
Definition:
AlignmentAlgorithmBase.h:45
TFitConstraintM.h
RecoCandidate.h
ecalTrigSettings_cff.particles
particles
Definition:
ecalTrigSettings_cff.py:11
reco::Particle::LorentzVector
math::XYZTLorentzVector LorentzVector
Lorentz vector.
Definition:
Particle.h:21
edm::Ref< TrackCollection >
part
part
Definition:
HCALResponse.h:20
TKinFitter::fit
Int_t fit()
Definition:
TKinFitter.cc:318
errors
Definition:
errors.py:1
CandMassKinFitter.h
TKinFitter::getS
Double_t getS()
Definition:
TKinFitter.cc:1066
TKinFitter::setVerbosity
void setVerbosity(Int_t verbosity=1)
Definition:
TKinFitter.cc:304
TKinFitter::setMaxNbIter
void setMaxNbIter(Int_t maxNbIter)
Definition:
TKinFitter.h:48
TFitParticleMCCart.h
FitQuality
FitQuality
Definition:
Fit.h:30
TKinFitter::getNDF
Int_t getNDF()
Definition:
TKinFitter.h:45
p4
double p4[4]
Definition:
TauolaWrapper.h:92
TKinFitter.h
TFitParticleMCCart
Definition:
TFitParticleMCCart.h:9
HltBtagPostValidation_cff.c
c
Definition:
HltBtagPostValidation_cff.py:31
submitPVResolutionJobs.err
err
Definition:
submitPVResolutionJobs.py:85
CandMassKinFitter::set
reco::FitQuality set(reco::Candidate &) const
Definition:
CandMassKinFitter.cc:11
reco::Candidate
Definition:
Candidate.h:27
TKinFitter::addConstraint
void addConstraint(TAbsFitConstraint *constraint)
Definition:
TKinFitter.cc:292
std
Definition:
JetResolutionObject.h:76
TKinFitter::setMaxDeltaS
void setMaxDeltaS(Double_t maxDeltaS)
Definition:
TKinFitter.h:52
TKinFitter::addMeasParticle
void addMeasParticle(TAbsFitParticle *particle)
Definition:
TKinFitter.cc:194
Skims_PA_cff.name
name
Definition:
Skims_PA_cff.py:17
reco::Candidate::p4
virtual const LorentzVector & p4() const =0
four-momentum Lorentz vector
MillePedeFileConverter_cfg.e
e
Definition:
MillePedeFileConverter_cfg.py:37
debug_messages_cfi.errors
errors
Definition:
debug_messages_cfi.py:54
Generated for CMSSW Reference Manual by
1.8.16