ATLAS Offline Software
CscThresholdClusterBuilder.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 // CscThresholdClusterBuilder.h
6 
7 #ifndef CscThresholdClusterBuilder_H
8 #define CscThresholdClusterBuilder_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 
61 #include "GaudiKernel/ToolHandle.h"
65 
66 namespace MuonGM {
67  class MuonDetectorManager;
68 }
69 class CscIdHelper;
70 namespace Muon {
71  class CscPrepData;
72  class CscStripPrepData;
73 } // namespace Muon
75 class CscDigit;
76 
78 public: // methods
79  // Constructor.
80  CscThresholdClusterBuilder(const std::string& name, ISvcLocator* pSvcLocator);
81 
82  // Destructor.
84 
85  // Initialization.
87 
88  // Event processing.
90 
91 private: // data
92  // Strip fitter.
93  ToolHandle<ICscClusterBuilder> m_cluster_builder{
94  this,
95  "cluster_builder",
96  "CscThresholdClusterBuilderTool/CscThresholdClusterBuilderTool",
97  };
98 
100  this,
101  "MuonIdHelperSvc",
102  "Muon::MuonIdHelperSvc/MuonIdHelperSvc",
103  };
104 
105  SG::WriteHandleKey<Muon::CscPrepDataContainer> m_pclusters{this, "cluster_key", "CSC_Clusters", "Ouput CSC Cluster container"};
106 };
107 
108 #endif
MuonGM
Ensure that the Athena extensions are properly loaded.
Definition: GeoMuonHits.h:27
ICscClusterBuilder.h
Trk::PrepRawDataType::CscStripPrepData
@ CscStripPrepData
MuonPrepDataContainer.h
CscThresholdClusterBuilder::initialize
StatusCode initialize()
Definition: CscThresholdClusterBuilder.cxx:28
Muon
This class provides conversion from CSC RDO data to CSC Digits.
Definition: TrackSystemController.h:49
CscThresholdClusterBuilder
Definition: CscThresholdClusterBuilder.h:77
Trk::PrepRawDataType::CscPrepData
@ CscPrepData
AthAlgorithm.h
ICscClusterFitter.h
SG::WriteHandleKey
Property holding a SG store/key/clid from which a WriteHandle is made.
Definition: StoreGate/StoreGate/WriteHandleKey.h:40
Muon::CscPrepData
Class representing clusters from the CSC.
Definition: CscPrepData.h:39
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
CscThresholdClusterBuilder::m_cluster_builder
ToolHandle< ICscClusterBuilder > m_cluster_builder
Definition: CscThresholdClusterBuilder.h:93
CscDigit
Definition: CscDigit.h:17
CscThresholdClusterBuilder::CscThresholdClusterBuilder
CscThresholdClusterBuilder(const std::string &name, ISvcLocator *pSvcLocator)
Definition: CscThresholdClusterBuilder.cxx:17
AthAlgorithm
Definition: AthAlgorithm.h:47
CscPrepDataContainer.h
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
CscThresholdClusterBuilder::execute
StatusCode execute()
Definition: CscThresholdClusterBuilder.cxx:42
CscIdHelper
Definition: CscIdHelper.h:52
CscThresholdClusterBuilder::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition: CscThresholdClusterBuilder.h:99
ICscStripFitter.h
CscThresholdClusterBuilder::~CscThresholdClusterBuilder
~CscThresholdClusterBuilder()
CscThresholdClusterBuilder::m_pclusters
SG::WriteHandleKey< Muon::CscPrepDataContainer > m_pclusters
Definition: CscThresholdClusterBuilder.h:105
IMuonIdHelperSvc.h
MyCscDigit
Muon::CscPrepData MyCscDigit
Definition: CscThresholdClusterBuilder.h:74
ServiceHandle< Muon::IMuonIdHelperSvc >