14#ifndef TIDAUTILS_ASSOCIATOR_BESTMATCH_H
15#define TIDAUTILS_ASSOCIATOR_BESTMATCH_H
46 virtual std::unique_ptr<TrackAssociator>
uclone()
const override {
return std::make_unique<Associator_DeltaRMatcher>(*
this); }
49 double deta =
t0->eta()-t1->eta();
50 double dphi =
t0->phi()-t1->phi();
53 return std::sqrt( deta*deta + dphi*dphi );
73 virtual std::unique_ptr<TrackAssociator>
uclone()
const override {
return std::make_unique<Associator_SecondBestpTMatcher>(*
this); }
76 double dpT = fabs(
t0->pT()/1000 - t1->pT()/1000 );
78 return dpT/(fabs(
t0->pT()/1000));
97 virtual std::unique_ptr<TrackAssociator>
uclone()
const override {
return std::make_unique<Associator_BestDeltaRMatcher>(*
this); }
100 double deta =
t0->eta()-t1->eta();
101 double dphi =
t0->phi()-t1->phi();
104 return std::sqrt( deta*deta + dphi*dphi );
126 std::cout <<
"Associator: Best RZ Matcher" << std::endl;
133 virtual std::unique_ptr<TrackAssociator>
uclone()
const override {
return std::make_unique<Associator_BestDeltaRZMatcher>(*
this); }
136 double deta =
t0->eta()-t1->eta();
137 double dphi =
t0->phi()-t1->phi();
if ( dphi>
M_PI ) dphi-=2*
M_PI;
if ( dphi<-
M_PI ) dphi+=2*
M_PI;
138 double dzed =
t0->z0()-t1->z0();
172 std::cout <<
"Associator: Best RZ Matcher" << std::endl;
179 virtual std::unique_ptr<TrackAssociator>
uclone()
const override {
return std::make_unique<Associator_BestDeltaRZSinThetaMatcher>(*
this); }
182 double theta = 2*std::atan(std::exp(-t1->eta()));
184 double deta =
t0->eta()-t1->eta();
185 double dphi =
t0->phi()-t1->phi();
if ( dphi>
M_PI ) dphi-=2*
M_PI;
if ( dphi<-
M_PI ) dphi+=2*
M_PI;
187 double dzed = (
t0->z0()-t1->z0())*std::sin(
theta);
217 std::cout <<
"Associator: Best Sigma Matcher" << std::endl;
224 virtual std::unique_ptr<TrackAssociator>
uclone()
const override {
return std::make_unique<Associator_BestSigmaMatcher>(*
this); }
227 double deta = t1->eta()-
t0->eta();
228 double dphi = t1->phi()-
t0->phi();
231 double dzed = t1->z0()-
t0->z0();
239 double dr = std::sqrt( deta*deta + dphi*dphi + dzed*dzed );
272 virtual std::unique_ptr<TrackAssociator>
uclone()
const override {
return std::make_unique<Associator_BestDeltaPhiMatcher>(*
this); }
275 double dphi =
t0->phi()-t1->phi();
278 return std::fabs( dphi );
Scalar theta() const
theta method
BestMatcher< TIDA::Track > Associator_BestMatcher
truely generic template class of a best matching algorithm based on an efficient implementation of th...
TIDA::Associator< TIDA::Track > TrackAssociator
virtual ~Associator_BestDeltaPhiMatcher()
virtual TrackAssociator * clone() override
virtual double distance(const TIDA::Track *t0, const TIDA::Track *t1) const override
Associator_BestDeltaPhiMatcher(const std::string &name, double p)
virtual std::unique_ptr< TrackAssociator > uclone() const override
virtual TrackAssociator * clone() override
Associator_BestDeltaRMatcher(const std::string &name, double d)
virtual std::unique_ptr< TrackAssociator > uclone() const override
virtual ~Associator_BestDeltaRMatcher()
virtual double distance(const TIDA::Track *t0, const TIDA::Track *t1) const override
Associator_BestDeltaRZMatcher(const std::string &name, double deta=0.05, double dphi=0.05, double dzed=5)
virtual TrackAssociator * clone() override
virtual ~Associator_BestDeltaRZMatcher()
virtual std::unique_ptr< TrackAssociator > uclone() const override
virtual double distance(const TIDA::Track *t0, const TIDA::Track *t1) const override
virtual ~Associator_BestDeltaRZSinThetaMatcher()
Associator_BestDeltaRZSinThetaMatcher(const std::string &name, double deta=0.05, double dphi=0.05, double dzed=5)
virtual std::unique_ptr< TrackAssociator > uclone() const override
virtual double distance(const TIDA::Track *t0, const TIDA::Track *t1) const override
virtual TrackAssociator * clone() override
virtual double distance(const TIDA::Track *t0, const TIDA::Track *t1) const override
virtual ~Associator_BestSigmaMatcher()
virtual TrackAssociator * clone() override
Associator_BestSigmaMatcher(const std::string &name, double dsigma=1)
virtual std::unique_ptr< TrackAssociator > uclone() const override
virtual ~Associator_DeltaRMatcher()
virtual double distance(const TIDA::Track *t0, const TIDA::Track *t1) const override
virtual std::unique_ptr< TrackAssociator > uclone() const override
virtual TrackAssociator * clone() override
Associator_DeltaRMatcher(const std::string &name, double d)
virtual TrackAssociator * clone() override
virtual std::unique_ptr< TrackAssociator > uclone() const override
virtual double distance(const TIDA::Track *t0, const TIDA::Track *t1) const override
virtual ~Associator_SecondBestpTMatcher()
Associator_SecondBestpTMatcher(const std::string &name, double d)