ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Trigger
TrigAlgorithms
TrigL2MuonSA
src
ClusterPatFinder.h
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#ifndef TRIGL2MUONSA_CLUSTERPATFINDER_H
6
#define TRIGL2MUONSA_CLUSTERPATFINDER_H
7
8
9
10
#include "
AthenaBaseComps/AthAlgTool.h
"
11
#include <string>
12
#include <list>
13
#include <vector>
14
#include <map>
15
16
namespace
TrigL2MuonSA
{
17
18
struct
ClusterPattern
19
{
20
std::multimap<int, int>
groupCand
;
21
int
group
{};
22
double
dMM
{};
23
double
dMO
{};
24
double
aw
[3]{};
25
double
bw
[3]{};
26
int
clustersID
[8]{};
27
bool
isGoodFit
{};
28
double
phi_middle
{};
29
double
phi_outer
{};
30
int
nclusters
{};
31
32
void
Clear
(){
33
groupCand
.clear();
34
group
= -1;
35
dMM
= 9999;
36
dMO
= 9999;
37
isGoodFit
=
false
;
38
phi_middle
= 0;
39
phi_outer
= 0;
40
nclusters
= 0;
41
for
(
int
i=0; i < 3; i++){
42
aw
[i] = 0;
43
bw
[i] = 0;
44
}
45
for
(
int
i=0; i < 8; i++)
clustersID
[i] = -1;
46
}
47
48
bool
operator==
(
const
ClusterPattern
& clp)
const
{
49
for
(
int
i=0; i < 8; i++){
50
if
(
clustersID
[i] != clp.
clustersID
[i])
return
false
;
51
}
52
return
true
;
53
}
54
55
};
56
57
// --------------------------------------------------------------------------------
58
// --------------------------------------------------------------------------------
59
struct
RpcLayerClusters
60
{
61
std::vector<std::list<double>>
clusters_in_layer_eta
;
62
std::vector<std::list<double>>
clusters_in_layer_phi
;
63
std::vector<std::vector<double>>
clusters_in_layer_Z
;
64
std::vector<std::vector<double>>
clusters_in_layer_R
;
65
void
clear
() {
66
std::list<double>
z
;
67
z
.clear();
68
clusters_in_layer_eta
.assign(8,
z
);
69
clusters_in_layer_phi
.assign(8,
z
);
70
std::vector<double> zz;
71
zz.clear();
72
clusters_in_layer_R
.assign(8,zz);
73
clusters_in_layer_Z
.assign(8,zz);
74
}
75
};
76
77
// --------------------------------------------------------------------------------
78
// --------------------------------------------------------------------------------
79
80
class
ClusterPatFinder
:
public
AthAlgTool
81
{
82
83
public
:
84
ClusterPatFinder
(
const
std::string&
type
,
85
const
std::string& name,
86
const
IInterface* parent);
87
88
public
:
89
90
void
addCluster
(
const
std::string& stationName,
91
int
stationEta,
92
bool
measuresPhi,
93
unsigned
int
gasGap,
94
unsigned
int
doubletR,
95
double
gPosX,
double
gPosY,
double
gPosZ,
96
TrigL2MuonSA::RpcLayerClusters
& rpcLayerClusters)
const
;
97
98
bool
findPatternEta
(std::vector<std::vector<double>>& aw,
99
std::vector<std::vector<double>>& bw,
100
TrigL2MuonSA::RpcLayerClusters
& rpcLayerClusters)
const
;
101
102
bool
findPatternPhi
(std::vector<double>& phi_middle,
103
std::vector<double>& phi_outer,
104
TrigL2MuonSA::RpcLayerClusters
& rpcLayerClusters)
const
;
105
106
private
:
107
bool
patfinder_forEta
(std::vector<TrigL2MuonSA::ClusterPattern>& crPatterns,
108
TrigL2MuonSA::RpcLayerClusters
& rpcLayerClusters)
const
;
109
110
bool
patfinder
(std::vector<TrigL2MuonSA::ClusterPattern>& crPattern,
111
TrigL2MuonSA::RpcLayerClusters
& rpcLayerClusters)
const
;
112
113
bool
deltaOK
(
int
l1,
int
l2,
double
x1,
double
x2,
int
isphi,
double
&delta)
const
;
114
115
double
calibR
(
const
std::string& stationName,
double
R,
double
Phi)
const
;
116
117
void
abcal
(
unsigned
int
result_pat,
size_t
index
[],
double
aw[],
double
bw[],
TrigL2MuonSA::RpcLayerClusters
& rpcLayerClusters)
const
;
118
119
void
removeSimilarRoad
(std::vector<TrigL2MuonSA::ClusterPattern>& crPatterns)
const
;
120
121
void
setGroup
(
int
& nGroup,
122
std::vector<TrigL2MuonSA::ClusterPattern>& crPatterns)
const
;
123
void
selectGoodFit
(
int
nGroup,
124
std::vector<TrigL2MuonSA::ClusterPattern>& crPatterns)
const
;
125
};
126
127
}
128
#endif
129
AthAlgTool.h
z
#define z
AthAlgTool::AthAlgTool
AthAlgTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
Definition
AthAlgTool.cxx:16
TrigL2MuonSA::ClusterPatFinder::calibR
double calibR(const std::string &stationName, double R, double Phi) const
Definition
ClusterPatFinder.cxx:478
TrigL2MuonSA::ClusterPatFinder::removeSimilarRoad
void removeSimilarRoad(std::vector< TrigL2MuonSA::ClusterPattern > &crPatterns) const
Definition
ClusterPatFinder.cxx:662
TrigL2MuonSA::ClusterPatFinder::ClusterPatFinder
ClusterPatFinder(const std::string &type, const std::string &name, const IInterface *parent)
Definition
ClusterPatFinder.cxx:16
TrigL2MuonSA::ClusterPatFinder::findPatternPhi
bool findPatternPhi(std::vector< double > &phi_middle, std::vector< double > &phi_outer, TrigL2MuonSA::RpcLayerClusters &rpcLayerClusters) const
Definition
ClusterPatFinder.cxx:66
TrigL2MuonSA::ClusterPatFinder::patfinder
bool patfinder(std::vector< TrigL2MuonSA::ClusterPattern > &crPattern, TrigL2MuonSA::RpcLayerClusters &rpcLayerClusters) const
Definition
ClusterPatFinder.cxx:85
TrigL2MuonSA::ClusterPatFinder::deltaOK
bool deltaOK(int l1, int l2, double x1, double x2, int isphi, double &delta) const
Definition
ClusterPatFinder.cxx:408
TrigL2MuonSA::ClusterPatFinder::setGroup
void setGroup(int &nGroup, std::vector< TrigL2MuonSA::ClusterPattern > &crPatterns) const
Definition
ClusterPatFinder.cxx:676
TrigL2MuonSA::ClusterPatFinder::selectGoodFit
void selectGoodFit(int nGroup, std::vector< TrigL2MuonSA::ClusterPattern > &crPatterns) const
Definition
ClusterPatFinder.cxx:731
TrigL2MuonSA::ClusterPatFinder::findPatternEta
bool findPatternEta(std::vector< std::vector< double > > &aw, std::vector< std::vector< double > > &bw, TrigL2MuonSA::RpcLayerClusters &rpcLayerClusters) const
Definition
ClusterPatFinder.cxx:232
TrigL2MuonSA::ClusterPatFinder::abcal
void abcal(unsigned int result_pat, size_t index[], double aw[], double bw[], TrigL2MuonSA::RpcLayerClusters &rpcLayerClusters) const
Definition
ClusterPatFinder.cxx:506
TrigL2MuonSA::ClusterPatFinder::patfinder_forEta
bool patfinder_forEta(std::vector< TrigL2MuonSA::ClusterPattern > &crPatterns, TrigL2MuonSA::RpcLayerClusters &rpcLayerClusters) const
Definition
ClusterPatFinder.cxx:255
TrigL2MuonSA::ClusterPatFinder::addCluster
void addCluster(const std::string &stationName, int stationEta, bool measuresPhi, unsigned int gasGap, unsigned int doubletR, double gPosX, double gPosY, double gPosZ, TrigL2MuonSA::RpcLayerClusters &rpcLayerClusters) const
Definition
ClusterPatFinder.cxx:26
TrigL2MuonSA
Definition
AlignmentBarrelLUT.h:13
index
Definition
index.py:1
type
TrigL2MuonSA::ClusterPattern
Definition
ClusterPatFinder.h:19
TrigL2MuonSA::ClusterPattern::group
int group
Definition
ClusterPatFinder.h:21
TrigL2MuonSA::ClusterPattern::bw
double bw[3]
Definition
ClusterPatFinder.h:25
TrigL2MuonSA::ClusterPattern::phi_middle
double phi_middle
Definition
ClusterPatFinder.h:28
TrigL2MuonSA::ClusterPattern::nclusters
int nclusters
Definition
ClusterPatFinder.h:30
TrigL2MuonSA::ClusterPattern::operator==
bool operator==(const ClusterPattern &clp) const
Definition
ClusterPatFinder.h:48
TrigL2MuonSA::ClusterPattern::dMM
double dMM
Definition
ClusterPatFinder.h:22
TrigL2MuonSA::ClusterPattern::clustersID
int clustersID[8]
Definition
ClusterPatFinder.h:26
TrigL2MuonSA::ClusterPattern::groupCand
std::multimap< int, int > groupCand
Definition
ClusterPatFinder.h:20
TrigL2MuonSA::ClusterPattern::phi_outer
double phi_outer
Definition
ClusterPatFinder.h:29
TrigL2MuonSA::ClusterPattern::isGoodFit
bool isGoodFit
Definition
ClusterPatFinder.h:27
TrigL2MuonSA::ClusterPattern::Clear
void Clear()
Definition
ClusterPatFinder.h:32
TrigL2MuonSA::ClusterPattern::dMO
double dMO
Definition
ClusterPatFinder.h:23
TrigL2MuonSA::ClusterPattern::aw
double aw[3]
Definition
ClusterPatFinder.h:24
TrigL2MuonSA::RpcLayerClusters
Definition
ClusterPatFinder.h:60
TrigL2MuonSA::RpcLayerClusters::clusters_in_layer_Z
std::vector< std::vector< double > > clusters_in_layer_Z
Definition
ClusterPatFinder.h:63
TrigL2MuonSA::RpcLayerClusters::clear
void clear()
Definition
ClusterPatFinder.h:65
TrigL2MuonSA::RpcLayerClusters::clusters_in_layer_phi
std::vector< std::list< double > > clusters_in_layer_phi
Definition
ClusterPatFinder.h:62
TrigL2MuonSA::RpcLayerClusters::clusters_in_layer_R
std::vector< std::vector< double > > clusters_in_layer_R
Definition
ClusterPatFinder.h:64
TrigL2MuonSA::RpcLayerClusters::clusters_in_layer_eta
std::vector< std::list< double > > clusters_in_layer_eta
Definition
ClusterPatFinder.h:61
Generated on
for ATLAS Offline Software by
1.17.0