ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Trigger
TrigAnalysis
TrigInDetAnalysisUtils
TrigInDetAnalysisUtils
TrackMatchDeltaRCosmic.h
Go to the documentation of this file.
1
/* emacs: this is -*- c++ -*- */
13
14
15
#ifndef TRIGINDETANALYSISUTILS_TRACKMATCHDELTARCOSMIC_H
16
#define TRIGINDETANALYSISUTILS_TRACKMATCHDELTARCOSMIC_H
17
18
#include <iostream>
19
#include <string>
20
#include <cmath>
21
#include <map>
22
23
24
#include "
TrigInDetAnalysis/TrackAssociator.h
"
25
#include "
TrigInDetAnalysis/Track.h
"
26
27
28
class
TrackMatchDeltaRCosmic
:
public
TrackAssociator
{
29
30
public
:
31
32
TrackMatchDeltaRCosmic
(
const
std::string& name,
double
R) :
33
TrackAssociator
(name),
m_R2
(R*R)
34
{ }
35
36
~TrackMatchDeltaRCosmic
() { }
37
38
// virtual void match( const std::vector<Track*>& ref, const std::vector<Track*>& test ) {
39
virtual
void
match
(
const
std::vector<TIDA::Track*>& s1,
40
const
std::vector<TIDA::Track*>& s2 )
41
{
42
clear
();
43
44
const
std::vector<TIDA::Track*>&
ref
= s1;
45
const
std::vector<TIDA::Track*>& test = s2;
46
47
// loop over reference tracks
48
for
(
int
i=
ref
.size() ; i-- ; ) {
49
50
TIDA::Track
* reftrack =
ref
[i];
51
52
// find the closest track
53
TIDA::Track
* tmptrack = NULL;
54
double
R2min = 0;
55
56
// loop over test tracks
57
for
(
int
j=test.size() ; j-- ; ) {
58
59
TIDA::Track
* testtrack = test[j];
60
61
double
R2tmp =
deltaR2
( reftrack, testtrack );
62
double
R2PItmp =
deltaR2PI
( reftrack, testtrack );
63
64
if
( R2PItmp<R2tmp ) R2tmp = R2PItmp;
65
66
// found a close track
67
if
( tmptrack==NULL || R2tmp<R2min ) {
68
R2min = R2tmp;
69
tmptrack = testtrack;
70
}
71
}
72
73
// is this inside the delta R specification?
74
if
( tmptrack && R2min<
m_R2
) {
75
mmatched
.insert( map_type::value_type(reftrack,tmptrack) );
76
mrevmatched
.insert( map_type::value_type(tmptrack,reftrack) );
77
78
std::cout <<
"\t\tSUTT matched "
<< *reftrack <<
"\t -> \t"
<< *tmptrack <<
"\tDr="
<< R2min << std::endl;
79
}
80
}
81
}
82
83
84
virtual
double
deltaR2PI
(
const
TIDA::Track
* reftrack,
const
TIDA::Track
* testtrack ) {
85
double
deta = reftrack->
eta
()+testtrack->
eta
();
86
double
dphi = reftrack->
phi
()-testtrack->
phi
()-
M_PI
;
87
if
( dphi>
M_PI
) dphi-=2*
M_PI
;
88
if
( dphi<-
M_PI
) dphi+=2*
M_PI
;
89
return
deta*deta+dphi*dphi;
90
}
91
92
virtual
double
deltaR2
(
const
TIDA::Track
* reftrack,
const
TIDA::Track
* testtrack ) {
93
double
deta = reftrack->
eta
()-testtrack->
eta
();
94
double
dphi = reftrack->
phi
()-testtrack->
phi
();
95
if
( dphi>
M_PI
) dphi-=2*
M_PI
;
96
if
( dphi<-
M_PI
) dphi+=2*
M_PI
;
97
return
deta*deta+dphi*dphi;
98
}
99
100
private
:
101
102
double
m_R2
;
103
104
};
105
106
107
inline
std::ostream&
operator<<
(std::ostream& s,
const
TrackMatchDeltaRCosmic
&
/*tm*/
) {
108
return
s;
109
}
110
111
112
#endif
// TRIGINDETANALYSISUTILS_TRACKMATCHDELTARCOSMIC_H
ref
const std::regex ref(r_ef)
M_PI
#define M_PI
Definition
ActiveFraction.h:14
TrackAssociator.h
TrackAssociator
TIDA::Associator< TIDA::Track > TrackAssociator
Definition
TrackAssociator.h:26
operator<<
std::ostream & operator<<(std::ostream &s, const TrackMatchDeltaRCosmic &)
Definition
TrackMatchDeltaRCosmic.h:107
Track.h
TIDA::Associator< TIDA::Track >::mmatched
map_type mmatched
Definition
TIDAAssociator.h:75
TIDA::Associator< TIDA::Track >::clear
void clear()
Definition
TIDAAssociator.h:65
TIDA::Associator< TIDA::Track >::mrevmatched
rmap_type mrevmatched
Definition
TIDAAssociator.h:76
TIDA::Track
Definition
Trigger/TrigAnalysis/TrigInDetAnalysis/TrigInDetAnalysis/Track.h:26
TIDA::Track::eta
double eta() const
Definition
Trigger/TrigAnalysis/TrigInDetAnalysis/TrigInDetAnalysis/Track.h:46
TIDA::Track::phi
double phi() const
Definition
Trigger/TrigAnalysis/TrigInDetAnalysis/TrigInDetAnalysis/Track.h:47
TrackMatchDeltaRCosmic
Definition
TrackMatchDeltaRCosmic.h:28
TrackMatchDeltaRCosmic::deltaR2
virtual double deltaR2(const TIDA::Track *reftrack, const TIDA::Track *testtrack)
Definition
TrackMatchDeltaRCosmic.h:92
TrackMatchDeltaRCosmic::~TrackMatchDeltaRCosmic
~TrackMatchDeltaRCosmic()
Definition
TrackMatchDeltaRCosmic.h:36
TrackMatchDeltaRCosmic::deltaR2PI
virtual double deltaR2PI(const TIDA::Track *reftrack, const TIDA::Track *testtrack)
Definition
TrackMatchDeltaRCosmic.h:84
TrackMatchDeltaRCosmic::m_R2
double m_R2
Definition
TrackMatchDeltaRCosmic.h:102
TrackMatchDeltaRCosmic::TrackMatchDeltaRCosmic
TrackMatchDeltaRCosmic(const std::string &name, double R)
Definition
TrackMatchDeltaRCosmic.h:32
TrackMatchDeltaRCosmic::match
virtual void match(const std::vector< TIDA::Track * > &s1, const std::vector< TIDA::Track * > &s2)
Definition
TrackMatchDeltaRCosmic.h:39
Generated on
for ATLAS Offline Software by
1.17.0