ATLAS Offline Software
Loading...
Searching...
No Matches
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#include <string>
9#include <list>
10#include <vector>
11
13
14namespace TrigL2MuonSA {
15
17{
18 std::multimap<int, int> groupCand;
19 int group;
20 double dMM;
21 double dMO;
22 double aw[3];
23 double bw[3];
24 int clustersID[8];
26 double phi_middle;
27 double phi_outer;
29
30 void Clear(){
31 groupCand.clear();
32 group = -1;
33 dMM = 9999;
34 dMO = 9999;
35 isGoodFit = false;
36 phi_middle = 0;
37 phi_outer = 0;
38 nclusters = 0;
39 for(int i=0; i < 3; i++){
40 aw[i] = 0;
41 bw[i] = 0;
42 }
43 for(int i=0; i < 8; i++) clustersID[i] = -1;
44 }
45
46 bool operator==(const ClusterPattern& clp) const {
47 for(int i=0; i < 8; i++){
48 if(clustersID[i] != clp.clustersID[i]) return false;
49 }
50 return true;
51 }
52
53};
54
55// --------------------------------------------------------------------------------
56// --------------------------------------------------------------------------------
58{
59 std::vector<std::list<double>> clusters_in_layer_eta;
60 std::vector<std::list<double>> clusters_in_layer_phi;
61 std::vector<std::vector<double>> clusters_in_layer_Z;
62 std::vector<std::vector<double>> clusters_in_layer_R;
63 void clear() {
64 std::list<double> z;
65 z.clear();
66 clusters_in_layer_eta.assign(8,z);
67 clusters_in_layer_phi.assign(8,z);
68 std::vector<double> zz;
69 zz.clear();
70 clusters_in_layer_R.assign(8,zz);
71 clusters_in_layer_Z.assign(8,zz);
72 }
73};
74
75// --------------------------------------------------------------------------------
76// --------------------------------------------------------------------------------
77
79{
80
81 public:
82 ClusterPatFinder(const std::string& type,
83 const std::string& name,
84 const IInterface* parent);
85
86 public:
87
88 void addCluster(const std::string& stationName,
89 int stationEta,
90 bool measuresPhi,
91 unsigned int gasGap,
92 unsigned int doubletR,
93 double gPosX, double gPosY, double gPosZ,
94 TrigL2MuonSA::RpcLayerClusters& rpcLayerClusters) const;
95
96 bool findPatternEta(std::vector<std::vector<double>>& aw,
97 std::vector<std::vector<double>>& bw,
98 TrigL2MuonSA::RpcLayerClusters& rpcLayerClusters) const;
99
100 bool findPatternPhi(std::vector<double>& phi_middle,
101 std::vector<double>& phi_outer,
102 TrigL2MuonSA::RpcLayerClusters& rpcLayerClusters) const;
103
104 private:
105 bool patfinder_forEta(std::vector<TrigL2MuonSA::ClusterPattern>& crPatterns,
106 TrigL2MuonSA::RpcLayerClusters& rpcLayerClusters) const;
107
108 bool patfinder(std::vector<TrigL2MuonSA::ClusterPattern>& crPattern,
109 TrigL2MuonSA::RpcLayerClusters& rpcLayerClusters) const;
110
111 bool deltaOK(int l1, int l2, double x1, double x2, int isphi, double &delta) const;
112
113 double calibR(const std::string& stationName, double R, double Phi) const;
114
115 void abcal(unsigned int result_pat, size_t index[], double aw[], double bw[], TrigL2MuonSA::RpcLayerClusters& rpcLayerClusters) const;
116
117 void removeSimilarRoad(std::vector<TrigL2MuonSA::ClusterPattern>& crPatterns) const;
118
119 void setGroup(int& nGroup,
120 std::vector<TrigL2MuonSA::ClusterPattern>& crPatterns) const;
121 void selectGoodFit(int nGroup,
122 std::vector<TrigL2MuonSA::ClusterPattern>& crPatterns) const;
123};
124
125}
126#endif
127
#define z
AthAlgTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
double calibR(const std::string &stationName, double R, double Phi) const
void removeSimilarRoad(std::vector< TrigL2MuonSA::ClusterPattern > &crPatterns) const
ClusterPatFinder(const std::string &type, const std::string &name, const IInterface *parent)
bool findPatternPhi(std::vector< double > &phi_middle, std::vector< double > &phi_outer, TrigL2MuonSA::RpcLayerClusters &rpcLayerClusters) const
bool patfinder(std::vector< TrigL2MuonSA::ClusterPattern > &crPattern, TrigL2MuonSA::RpcLayerClusters &rpcLayerClusters) const
bool deltaOK(int l1, int l2, double x1, double x2, int isphi, double &delta) const
void setGroup(int &nGroup, std::vector< TrigL2MuonSA::ClusterPattern > &crPatterns) const
void selectGoodFit(int nGroup, std::vector< TrigL2MuonSA::ClusterPattern > &crPatterns) const
bool findPatternEta(std::vector< std::vector< double > > &aw, std::vector< std::vector< double > > &bw, TrigL2MuonSA::RpcLayerClusters &rpcLayerClusters) const
void abcal(unsigned int result_pat, size_t index[], double aw[], double bw[], TrigL2MuonSA::RpcLayerClusters &rpcLayerClusters) const
bool patfinder_forEta(std::vector< TrigL2MuonSA::ClusterPattern > &crPatterns, TrigL2MuonSA::RpcLayerClusters &rpcLayerClusters) const
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 index.py:1
bool operator==(const ClusterPattern &clp) const
std::multimap< int, int > groupCand
std::vector< std::vector< double > > clusters_in_layer_Z
std::vector< std::list< double > > clusters_in_layer_phi
std::vector< std::vector< double > > clusters_in_layer_R
std::vector< std::list< double > > clusters_in_layer_eta