ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
MuonSpectrometer
MuonReconstruction
MuonDataPrep
CscClusterization
src
CscPeakThresholdClusterBuilderTool.h
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
// CscPeakThresholdClusterBuilderTool.h
6
7
#ifndef CscPeakThresholdClusterBuilderTool_H
8
#define CscPeakThresholdClusterBuilderTool_H
9
10
// David Adams
11
// June 2006
12
//
13
// ATLAS algorithm to build CSC clusters from CSC digits.
14
// A simple threshold cluster algorithm is applied: any adjacent
15
// channels with charge above a user-specified threshold are
16
// merged into a cluster.
17
//
18
// Clusters are tagged as spoiled if any of the following apply:
19
// 1. Too narrow: only one strip.
20
// 2. Too wide: pitch*(nstrip-1) above a user-specified cutoff.
21
// 3. Multiple peaks.
22
// 4. Skewed: peak not in in the central channel for an odd cluster
23
// (odd # strips) or central two for an even cluster.
24
// 5. Edge: cluster includes the first or last strip in the plane.
25
// 6. RMS: charge centroid RMS is too large
26
// The different algorithms used to evaluate the unspoiled position
27
// may transfer clusters into the spoiled state. E.g. the adjacent
28
// charge ratios method requires left and right to be consistent.
29
//
30
// Spoiled clusters are assigned position at the center of the cluster
31
// and a large error: width/sqrt(12) with possible correction for the
32
// intrinsic signal width.
33
//
34
// The positions for unspoiled clusters may evaluated in a number of
35
// ways selected through job options.
36
//
37
// The corrected charge centroid method starts with the charge
38
// centroid and then applies a strip position correction
39
// which is a function of the plane type (CSS or CSL, r or phi), the
40
// number of strips in the cluster, and the deviation of the charge
41
// centroid from the center of the cluster. Thes corrections are 4th
42
// order odd polynomials in that deviation, i.e.
43
// A d + B d**3 + C D**5 + D d**7
44
// and the coefficients were determined by comparison with Monte Carlo
45
// track positions. For now these coefficients are hardwired into the
46
// code.
47
//
48
// The adjacent charge ratios method uses the ratios of the left and
49
// right charges to that of the central strip to estimate the position
50
// again using a polynomial calibration.
51
//
52
// Unspoiled clusters are assigned a position error of
53
// m_unspoiled_error.
54
55
// Algorithm to construct CSC clusters from digits.
56
57
#include "
AthenaBaseComps/AthAlgTool.h
"
58
#include "
CscClusterization/ICscClusterBuilder.h
"
59
#include "
CscClusterization/ICscClusterFitter.h
"
60
#include "
CscClusterization/ICscStripFitter.h
"
61
#include "GaudiKernel/ToolHandle.h"
62
#include "
MuonIdHelpers/IMuonIdHelperSvc.h
"
63
#include "
MuonPrepRawData/MuonPrepDataContainer.h
"
64
#include "
MuonReadoutGeometry/MuonDetectorManager.h
"
65
66
namespace
Muon
{
67
class
CscPrepData
;
68
class
CscStripPrepData
;
69
}
// namespace Muon
70
typedef
Muon::CscPrepData
MyCscDigit
;
71
class
CscDigit
;
72
73
class
CscPeakThresholdClusterBuilderTool
:
virtual
public
ICscClusterBuilder
,
public
AthAlgTool
{
74
public
:
// methods
75
// Constructor.
76
CscPeakThresholdClusterBuilderTool
(
const
std::string&
type
,
const
std::string& aname,
const
IInterface*);
77
78
// Destructor.
79
~CscPeakThresholdClusterBuilderTool
();
80
83
// static const InterfaceID& interfaceID( ) ;
84
85
// Initialization.
86
StatusCode
initialize
();
87
88
// Event processing.
89
StatusCode
getClusters
(std::vector<IdentifierHash>& idVect, std::vector<IdentifierHash>& selectedIdVect,
90
Muon::CscPrepDataContainer
*
object
);
91
92
// Finalization.
93
StatusCode
finalize
();
94
95
private
:
// Private methods.
96
// Cluster a cathode plane.
97
// int make_clusters(bool dump, int maxstrip, double pitch,
98
// const std::vector<MyCscDigit*>& idstrip, const std::vector<double>& qstrip);
99
// int make_clusters(bool dump, int maxstrip, double pitch, const std::vector<Muon::CscStripPrepData*>& strips);
100
int
make_clusters
(
bool
measphi,
const
std::vector<const Muon::CscStripPrepData*>& strips,
Muon::CscPrepDataCollection
*& collection);
101
StatusCode
getClusters
(
IdentifierHash
idVect, std::vector<IdentifierHash>& selectedIdVect,
Muon::CscPrepDataContainer
* pclusters);
102
StatusCode
getClusters
(std::vector<IdentifierHash>& selectedIdVect,
Muon::CscPrepDataContainer
* pclusters);
103
104
private
:
// data
105
// Properties.
106
double
m_qpeak_threshold_eta
;
// Charge qpeak threshold to include strip in cluster
107
double
m_qpeak_threshold_phi
;
// Charge qpeak threshold to include strip in cluster
108
double
m_q3sum_threshold_eta
;
// Charge qleft+qpeak+qright threshold to include strip in cluster
109
double
m_q3sum_threshold_phi
;
// Charge qleft+qpeak+qright threshold to include strip in cluster
110
SG::ReadHandleKey<Muon::CscStripPrepDataContainer>
m_digit_key
;
// SG key for input digits
111
SG::WriteHandle<Muon::CscPrepDataContainer>
m_cluster_handle
;
// SG key for output clusters
112
113
// Strip fitter.
114
ToolHandle<ICscStripFitter>
m_pstrip_fitter
{
115
this
,
116
"strip_fitter"
,
117
"CalibCscStripFitter/CalibCscStripFitter"
,
118
};
119
120
// Cluster fitters.
121
ToolHandle<ICscClusterFitter>
m_pfitter_def
{
122
this
,
123
"default_fitter"
,
124
"SimpleCscClusterFitter/SimpleCscClusterFitter"
,
125
};
126
ToolHandle<ICscClusterFitter>
m_pfitter_prec
{
127
this
,
128
"precision_fitter"
,
129
"QratCscClusterFitter/QratCscClusterFitter"
,
130
};
131
ToolHandle<ICscClusterFitter>
m_pfitter_split
{
132
this
,
133
"split_fitter"
,
134
"CscSplitClusterFitter/CscSplitClusterFitter"
,
135
};
136
137
ServiceHandle<Muon::IMuonIdHelperSvc>
m_idHelperSvc
{
138
this
,
139
"MuonIdHelperSvc"
,
140
"Muon::MuonIdHelperSvc/MuonIdHelperSvc"
,
141
};
142
144
SG::ReadCondHandleKey<MuonGM::MuonDetectorManager>
m_DetectorManagerKey
{
145
this
,
146
"DetectorManagerKey"
,
147
"MuonDetectorManager"
,
148
"Key of input MuonDetectorManager condition data"
,
149
};
150
};
151
152
#endif
AthAlgTool.h
MyCscDigit
Muon::CscPrepData MyCscDigit
Definition
CscPeakThresholdClusterBuilderTool.h:70
ICscClusterBuilder.h
ICscClusterFitter.h
ICscStripFitter.h
IMuonIdHelperSvc.h
MuonDetectorManager.h
MuonPrepDataContainer.h
AthAlgTool::AthAlgTool
AthAlgTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
Definition
AthAlgTool.cxx:16
CscDigit
Definition
CscDigit.h:17
CscPeakThresholdClusterBuilderTool::m_q3sum_threshold_eta
double m_q3sum_threshold_eta
Definition
CscPeakThresholdClusterBuilderTool.h:108
CscPeakThresholdClusterBuilderTool::make_clusters
int make_clusters(bool measphi, const std::vector< const Muon::CscStripPrepData * > &strips, Muon::CscPrepDataCollection *&collection)
Definition
CscPeakThresholdClusterBuilderTool.cxx:338
CscPeakThresholdClusterBuilderTool::finalize
StatusCode finalize()
Definition
CscPeakThresholdClusterBuilderTool.cxx:324
CscPeakThresholdClusterBuilderTool::m_qpeak_threshold_phi
double m_qpeak_threshold_phi
Definition
CscPeakThresholdClusterBuilderTool.h:107
CscPeakThresholdClusterBuilderTool::CscPeakThresholdClusterBuilderTool
CscPeakThresholdClusterBuilderTool(const std::string &type, const std::string &aname, const IInterface *)
Definition
CscPeakThresholdClusterBuilderTool.cxx:66
CscPeakThresholdClusterBuilderTool::m_pfitter_def
ToolHandle< ICscClusterFitter > m_pfitter_def
Definition
CscPeakThresholdClusterBuilderTool.h:121
CscPeakThresholdClusterBuilderTool::~CscPeakThresholdClusterBuilderTool
~CscPeakThresholdClusterBuilderTool()
CscPeakThresholdClusterBuilderTool::m_DetectorManagerKey
SG::ReadCondHandleKey< MuonGM::MuonDetectorManager > m_DetectorManagerKey
retrieve MuonDetectorManager from the conditions store
Definition
CscPeakThresholdClusterBuilderTool.h:144
CscPeakThresholdClusterBuilderTool::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition
CscPeakThresholdClusterBuilderTool.h:137
CscPeakThresholdClusterBuilderTool::m_digit_key
SG::ReadHandleKey< Muon::CscStripPrepDataContainer > m_digit_key
Definition
CscPeakThresholdClusterBuilderTool.h:110
CscPeakThresholdClusterBuilderTool::m_q3sum_threshold_phi
double m_q3sum_threshold_phi
Definition
CscPeakThresholdClusterBuilderTool.h:109
CscPeakThresholdClusterBuilderTool::initialize
StatusCode initialize()
AlgTool InterfaceID.
Definition
CscPeakThresholdClusterBuilderTool.cxx:86
CscPeakThresholdClusterBuilderTool::m_qpeak_threshold_eta
double m_qpeak_threshold_eta
Definition
CscPeakThresholdClusterBuilderTool.h:106
CscPeakThresholdClusterBuilderTool::m_pfitter_split
ToolHandle< ICscClusterFitter > m_pfitter_split
Definition
CscPeakThresholdClusterBuilderTool.h:131
CscPeakThresholdClusterBuilderTool::m_pstrip_fitter
ToolHandle< ICscStripFitter > m_pstrip_fitter
Definition
CscPeakThresholdClusterBuilderTool.h:114
CscPeakThresholdClusterBuilderTool::getClusters
StatusCode getClusters(std::vector< IdentifierHash > &idVect, std::vector< IdentifierHash > &selectedIdVect, Muon::CscPrepDataContainer *object)
Definition
CscPeakThresholdClusterBuilderTool.cxx:124
CscPeakThresholdClusterBuilderTool::m_pfitter_prec
ToolHandle< ICscClusterFitter > m_pfitter_prec
Definition
CscPeakThresholdClusterBuilderTool.h:126
CscPeakThresholdClusterBuilderTool::m_cluster_handle
SG::WriteHandle< Muon::CscPrepDataContainer > m_cluster_handle
Definition
CscPeakThresholdClusterBuilderTool.h:111
ICscClusterBuilder
Definition
ICscClusterBuilder.h:27
IdentifierHash
This is a "hash" representation of an Identifier.
Definition
IdentifierHash.h:25
Muon::CscPrepData
Class representing clusters from the CSC.
Definition
CscPrepData.h:39
Muon::CscStripPrepData
Class representing the raw data of one CSC strip (for clusters look at Muon::CscPrepData).
Definition
CscStripPrepData.h:40
SG::ReadCondHandleKey
Definition
ReadCondHandleKey.h:21
SG::ReadHandleKey
Property holding a SG store/key/clid from which a ReadHandle is made.
Definition
StoreGate/StoreGate/ReadHandleKey.h:40
SG::WriteHandle
Definition
StoreGate/StoreGate/WriteHandle.h:73
ServiceHandle
Definition
ClusterMakerTool.h:36
Muon
NRpcCablingAlg reads raw condition data and writes derived condition data to the condition store.
Definition
TrackSystemController.h:46
Muon::CscPrepDataCollection
MuonPrepDataCollection< CscPrepData > CscPrepDataCollection
Definition
MuonPrepDataCollection.h:109
Muon::CscPrepDataContainer
MuonPrepDataContainerT< CscPrepData > CscPrepDataContainer
Definition
MuonPrepDataContainer.h:97
type
Generated on
for ATLAS Offline Software by
1.17.0