ATLAS Offline Software
SCTHitEffMonTool.h
Go to the documentation of this file.
1 // -*- C++ -*-
2 
3 /*
4  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
5 */
6 
14 #ifndef SCTEFFICIENCYTOOL_H
15 #define SCTEFFICIENCYTOOL_H
16 
18 
20 
31 #include "TrkTrack/Track.h"
33 
34 //Gaudi
35 #include "GaudiKernel/ToolHandle.h"
36 
37 //STL
38 #include <array>
39 #include <string>
40 
41 class Identifier;
43 class PixelID;
44 class SCT_ID;
45 class TRT_ID;
46 
47 class TH1D;
48 class TH1F;
49 class TH2I;
50 class TH1I;
51 class TProfile2D;
52 class TProfile;
53 class TGraphErrors;
54 
60 
61  public:
63  SCTHitEffMonTool (const std::string& type, const std::string& name, const IInterface* parent);
65  virtual ~SCTHitEffMonTool() = default;
66 
67  virtual StatusCode initialize() override final;
68 
70  virtual StatusCode bookHistograms() override final;
71  virtual StatusCode bookHistogramsRecurrent() override final;
72 
74  virtual StatusCode fillHistograms() override final;
75  virtual StatusCode procHistograms() override final;
76 
77  private:
83 
85  StatusCode failCut(bool value, const std::string & name) const;
86 
89  const InDetDD::SiDetectorElementCollection* elements,
90  double& theta, double& phi) const;
91 
93  int previousChip(double xl, int side, bool swap) const;
94 
96  double getResidual(const Identifier& surfaceID,
97  const Trk::TrackParameters* trkParam,
98  const InDet::SCT_ClusterContainer* p_sctclcontainer) const;
99 
101  template < class T > StatusCode bookEffHisto(T*& histo, MonGroup& MG,
102  TString name, TString title,
103  int nbin, double x1, double x2) const;
104 
105  template < class T > StatusCode bookEffHisto(T*& histo, MonGroup& MG,
106  TString name, TString title,
107  int nbinx, double x1, double x2,
108  int nbiny, double y1, double y2) const;
109 
110  template < class T > StatusCode bookEffHisto(T*& histo, MonGroup& MG,
111  TString name, TString title,
112  int nbinx, double* xbins,
113  int nbiny, double* ybins) const;
114 
115 
123  int becIdxLayer2Index(const int becIdx, const int layer) const;
124 
125  std::string m_gpath;
126  const std::map<Identifier, unsigned int>* m_badChips{nullptr};
127 
128  SG::ReadHandleKey<InDet::SCT_ClusterContainer> m_sctContainerName{this, "SCT_ClusterContainer", "SCT_Clusters"};
129  SG::ReadHandleKey<TrackCollection> m_TrackName{this, "TrackName", "CombinedInDetTracks"};
130  SG::ReadHandleKey<ComTime> m_comTimeName{this, "ComTimeKey", "TRT_Phase"};
131  SG::ReadCondHandleKey<InDetDD::SiDetectorElementCollection> m_SCTDetEleCollKey{this, "SCTDetEleCollKey", "SCT_DetectorElementCollection", "Key of SiDetectorElementCollection for SCT"};
132  SG::ReadCondHandleKey<AtlasFieldCacheCondObj> m_fieldCondObjInputKey{this, "AtlasFieldCacheCondObj", "fieldCondObj", "Name of the Magnetic Field conditions object key"};
133  SG::ReadCondHandleKey<BunchCrossingCondData> m_bunchCrossingKey{this, "BunchCrossingKey", "BunchCrossingData", "Key BunchCrossing CDO" };
134 
135  ToolHandle<Trk::IResidualPullCalculator> m_residualPullCalculator{this, "ResPullCalc", "Trk::ResidualPullCalculator/ResidualPullCalculator"};
136  ToolHandle<Trk::IRIO_OnTrackCreator> m_rotcreator{this, "ROTCreator", "InDet::SCT_ClusterOnTrackTool/SCT_ClusterOnTrackTool"};
137  ToolHandle<Trk::ITrackHoleSearchTool> m_holeSearchTool{this, "HoleSearch", "InDet::InDetTrackHoleSearchTool"};
138  ToolHandle<ISCT_ConfigurationConditionsTool> m_configConditions{this, "ConfigConditions",
139  "SCT_ConfigurationConditionsTool/InDetSCT_ConfigurationConditionsTool", "Tool to retrieve SCT Configuration Tool"};
140 
141  const PixelID* m_pixelId{nullptr};
142  const SCT_ID* m_sctId{nullptr};
143  const TRT_ID* m_trtId{nullptr};
144 
145  // If all 3 of these -1, defaults depend on cosmic/not
146  IntegerProperty m_minSCTHits{this, "MinSCTHits", -1};
147  IntegerProperty m_minTRTHits{this, "MinTRTHits", -1};
148  IntegerProperty m_minOtherHits{this, "MinOtherHits", 6};
149 
150  IntegerProperty m_minPixelHits{this, "MinPixelHits", -1};
151 
152  FloatProperty m_maxPhiAngle{this, "MaxPhiAngle", 40., "Degrees, 100 implies no cut."};
153  FloatProperty m_maxChi2{this, "MaxChi2", 3.};
154  FloatProperty m_maxD0{this, "Maxd0", 10., "mm of D0"};
155  FloatProperty m_minPt{this, "MinPt", 1000., "minimu pt in MeV/c"};
156  FloatProperty m_effdistcut{this, "effDistanceCut", 2.};
157  FloatProperty m_maxZ0sinTheta{this, "MaxZ0sinTheta", 0.};
158  UnsignedIntegerProperty m_maxTracks{this, "MaxTracks", 500};
159 
160  BooleanProperty m_insideOutOnly{this, "InsideOutOnly", false};
161  BooleanProperty m_isCosmic{this, "IsCosmic", false};
162  BooleanProperty m_useTRTPhase{this, "UseTRTPhase", false};
163  BooleanProperty m_useSCTorTRT{this, "UseSCTorTRT", false};
164  BooleanProperty m_requireEnclosingHits{this, "RequireEnclosingHits", false};
165  BooleanProperty m_requireOtherFace{this, "RequireOtherFace", false};
166  BooleanProperty m_requireGuardRing{this, "RequireGuardRing", false, "should be returned to true"};
167  BooleanProperty m_vetoBadChips{this, "VetoBadChips", true};
168  BooleanProperty m_useIDGlobal{this, "useIDGlobal", false};
169 
170  std::array < std::array < TProfile2D*, 2 >, SCT_Monitoring::N_LAYERS_TOTAL > m_effMap{};
171  std::array < std::array < TProfile2D*, 2 >, SCT_Monitoring::N_LAYERS_TOTAL > m_effMapFirstBCID{};
172  std::array < std::array < TProfile2D*, 2 >, SCT_Monitoring::N_LAYERS_TOTAL > m_ineffMap{};
173  std::array < std::array < TProfile*, 2 >, SCT_Monitoring::N_LAYERS_TOTAL > m_effLumiBlock{};
174 
180 
184 };
185 
186 #endif //SCTEFFICIENCYTOOL_H
ReadHandleKey.h
Property holding a SG store/key/clid from which a ReadHandle is made.
SCT_Monitoring::BecIndex
BecIndex
what array indices mean when looping over subsystems
Definition: SCT_MonitoringNumbers.h:19
plotBeamSpotCompare.x1
x1
Definition: plotBeamSpotCompare.py:216
SCTHitEffMonTool::m_maxD0
FloatProperty m_maxD0
Definition: SCTHitEffMonTool.h:154
SCTHitEffMonTool::m_effMap
std::array< std::array< TProfile2D *, 2 >, SCT_Monitoring::N_LAYERS_TOTAL > m_effMap
Definition: SCTHitEffMonTool.h:170
SCTHitEffMonTool::TH2FArrayLayer
std::array< std::array< TH2F *, SCT_Monitoring::N_ENDCAPS >, SCT_Monitoring::N_REGIONS > TH2FArrayLayer
Definition: SCTHitEffMonTool.h:82
ComTime.h
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
SCTHitEffMonTool::m_rotcreator
ToolHandle< Trk::IRIO_OnTrackCreator > m_rotcreator
Definition: SCTHitEffMonTool.h:136
SCT_ConditionsData::N_REGIONS
@ N_REGIONS
Definition: SCT_ConditionsParameters.h:28
SCTHitEffMonTool
Definition: SCTHitEffMonTool.h:59
SCTHitEffMonTool::layerIndex2becIndex
SCT_Monitoring::BecIndex layerIndex2becIndex(const int index) const
Convert a layer/disk number (0-21) to a bec index (0,1,2) according to position of that layer Numberi...
Definition: SCTHitEffMonTool.cxx:1010
SCTHitEffMonTool::m_useTRTPhase
BooleanProperty m_useTRTPhase
Definition: SCTHitEffMonTool.h:162
SCTHitEffMonTool::m_maxTracks
UnsignedIntegerProperty m_maxTracks
Definition: SCTHitEffMonTool.h:158
TH1I
Definition: rootspy.cxx:332
ManagedMonitorToolBase
Provides functionality for users to implement and save histograms, ntuples, and summary data,...
Definition: ManagedMonitorToolBase.h:74
TH2F
Definition: rootspy.cxx:420
AtlasFieldCacheCondObj.h
index
Definition: index.py:1
InDet
DUMMY Primary Vertex Finder.
Definition: VP1ErrorUtils.h:36
SCT_Monitoring::N_ENDCAPS
@ N_ENDCAPS
Definition: SCT_MonitoringNumbers.h:46
SCTHitEffMonTool::failCut
StatusCode failCut(bool value, const std::string &name) const
Method to cut on track or hit variables and automatize DEBUG statements.
Definition: SCTHitEffMonTool.cxx:894
IRIO_OnTrackCreator.h
SCTHitEffMonTool::m_bunchCrossingKey
SG::ReadCondHandleKey< BunchCrossingCondData > m_bunchCrossingKey
Definition: SCTHitEffMonTool.h:133
plotBeamSpotCompare.x2
x2
Definition: plotBeamSpotCompare.py:218
theta
Scalar theta() const
theta method
Definition: AmgMatrixBasePlugin.h:71
SCTHitEffMonTool::m_Eff_summaryHisto
TProfArray m_Eff_summaryHisto
Definition: SCTHitEffMonTool.h:181
taskman.template
dictionary template
Definition: taskman.py:317
TProfile2D
Definition: rootspy.cxx:531
TH1D
Definition: rootspy.cxx:342
PixelAthClusterMonAlgCfg.ybins
ybins
Definition: PixelAthClusterMonAlgCfg.py:163
SCTHitEffMonTool::m_minPixelHits
IntegerProperty m_minPixelHits
Definition: SCTHitEffMonTool.h:150
SCTHitEffMonTool::m_requireGuardRing
BooleanProperty m_requireGuardRing
Definition: SCTHitEffMonTool.h:166
athena.value
value
Definition: athena.py:122
SCTHitEffMonTool::m_badChips
const std::map< Identifier, unsigned int > * m_badChips
Definition: SCTHitEffMonTool.h:126
SCTHitEffMonTool::m_requireOtherFace
BooleanProperty m_requireOtherFace
Definition: SCTHitEffMonTool.h:165
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:562
SG::ReadHandleKey< InDet::SCT_ClusterContainer >
SCTHitEffMonTool::m_configConditions
ToolHandle< ISCT_ConfigurationConditionsTool > m_configConditions
Definition: SCTHitEffMonTool.h:138
SCTHitEffMonTool::m_maxChi2
FloatProperty m_maxChi2
Definition: SCTHitEffMonTool.h:153
SCT_Monitoring
Definition: SCT_MonitoringNumbers.h:17
makeTRTBarrelCans.y1
tuple y1
Definition: makeTRTBarrelCans.py:15
xAOD::TrackParameters
TrackParameters_v1 TrackParameters
Definition: Event/xAOD/xAODTracking/xAODTracking/TrackParameters.h:11
SCTHitEffMonTool::m_ineffMap
std::array< std::array< TProfile2D *, 2 >, SCT_Monitoring::N_LAYERS_TOTAL > m_ineffMap
Definition: SCTHitEffMonTool.h:172
TRT::Hit::side
@ side
Definition: HitInfo.h:83
Track.h
SCTHitEffMonTool::procHistograms
virtual StatusCode procHistograms() override final
An inheriting class should either override this function or finalHists().
Definition: SCTHitEffMonTool.cxx:870
SCTHitEffMonTool::m_vetoBadChips
BooleanProperty m_vetoBadChips
Definition: SCTHitEffMonTool.h:167
SCTHitEffMonTool::m_Eff_LumiBlockHisto_Total
TProfile * m_Eff_LumiBlockHisto_Total
Definition: SCTHitEffMonTool.h:178
ManagedMonitorToolBase.h
SCTHitEffMonTool::findAnglesToWaferSurface
StatusCode findAnglesToWaferSurface(const Amg::Vector3D &mom, const Identifier id, const InDetDD::SiDetectorElementCollection *elements, double &theta, double &phi) const
Method to compute incident angle of track to wafer.
Definition: SCTHitEffMonTool.cxx:917
ManagedMonitorToolBase::MonGroup
A container of information describing a monitoring object.
Definition: ManagedMonitorToolBase.h:138
SCTHitEffMonTool::m_SCTDetEleCollKey
SG::ReadCondHandleKey< InDetDD::SiDetectorElementCollection > m_SCTDetEleCollKey
Definition: SCTHitEffMonTool.h:131
SCTHitEffMonTool::m_Eff_summaryHistoFirstBCID
TProfArray m_Eff_summaryHistoFirstBCID
Definition: SCTHitEffMonTool.h:182
ParticleGun_EoverP_Config.mom
mom
Definition: ParticleGun_EoverP_Config.py:63
SCTHitEffMonTool::m_isCosmic
BooleanProperty m_isCosmic
Definition: SCTHitEffMonTool.h:161
SCTHitEffMonTool::m_effLumiBlock
std::array< std::array< TProfile *, 2 >, SCT_Monitoring::N_LAYERS_TOTAL > m_effLumiBlock
Definition: SCTHitEffMonTool.h:173
SCTHitEffMonTool::m_sctId
const SCT_ID * m_sctId
Definition: SCTHitEffMonTool.h:142
SCTHitEffMonTool::m_Eff_TotalBCID
TProfile * m_Eff_TotalBCID
Definition: SCTHitEffMonTool.h:176
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
SCTHitEffMonTool::bookHistogramsRecurrent
virtual StatusCode bookHistogramsRecurrent() override final
An inheriting class should either override this function, bookHists() or bookHistograms().
Definition: SCTHitEffMonTool.cxx:311
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
TH2I
Definition: rootspy.cxx:410
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
makeTRTBarrelCans.y2
tuple y2
Definition: makeTRTBarrelCans.py:18
covarianceTool.title
title
Definition: covarianceTool.py:542
SCTHitEffMonTool::fillHistograms
virtual StatusCode fillHistograms() override final
Histogram filling method.
Definition: SCTHitEffMonTool.cxx:430
TrackCollection.h
SCTHitEffMonTool::m_effMapFirstBCID
std::array< std::array< TProfile2D *, 2 >, SCT_Monitoring::N_LAYERS_TOTAL > m_effMapFirstBCID
Definition: SCTHitEffMonTool.h:171
SCTHitEffMonTool::m_sctContainerName
SG::ReadHandleKey< InDet::SCT_ClusterContainer > m_sctContainerName
Definition: SCTHitEffMonTool.h:128
SCTHitEffMonTool::previousChip
int previousChip(double xl, int side, bool swap) const
Method to find the chip just before a given hit.
Definition: SCTHitEffMonTool.cxx:904
SCTHitEffMonTool::m_maxPhiAngle
FloatProperty m_maxPhiAngle
Definition: SCTHitEffMonTool.h:152
test_pyathena.parent
parent
Definition: test_pyathena.py:15
SCTHitEffMonTool::m_TrackName
SG::ReadHandleKey< TrackCollection > m_TrackName
Definition: SCTHitEffMonTool.h:129
SCTHitEffMonTool::TH1FArray
std::array< TH1F *, SCT_Monitoring::N_REGIONS > TH1FArray
Definition: SCTHitEffMonTool.h:80
SCTHitEffMonTool::m_trtId
const TRT_ID * m_trtId
Definition: SCTHitEffMonTool.h:143
ISCT_ConfigurationConditionsTool
Definition: ISCT_ConfigurationConditionsTool.h:28
SCT_Monitoring::N_LAYERS_TOTAL
@ N_LAYERS_TOTAL
Definition: SCT_MonitoringNumbers.h:45
SCTHitEffMonTool::TH2FArray
std::array< TH2F *, SCT_Monitoring::N_REGIONS > TH2FArray
Definition: SCTHitEffMonTool.h:81
WriteCalibToCool.swap
swap
Definition: WriteCalibToCool.py:94
SCTHitEffMonTool::m_comTimeName
SG::ReadHandleKey< ComTime > m_comTimeName
Definition: SCTHitEffMonTool.h:130
SCTHitEffMonTool::layerIndex2layer
int layerIndex2layer(const int index) const
Convert a layer/disk number (0-21) to a layer number (0-8 for endcaps, 0-3 for barrel)
Definition: SCTHitEffMonTool.cxx:1019
ReadCondHandleKey.h
SCTHitEffMonTool::TProfArray
std::array< TProfile *, SCT_Monitoring::N_REGIONS > TProfArray
Definition: SCTHitEffMonTool.h:78
lumiFormat.array
array
Definition: lumiFormat.py:98
SCTHitEffMonTool::bookEffHisto
StatusCode bookEffHisto(T *&histo, MonGroup &MG, TString name, TString title, int nbin, double x1, double x2) const
Single histogram booking method.
Definition: SCTHitEffMonTool.cxx:947
SCTHitEffMonTool::m_minTRTHits
IntegerProperty m_minTRTHits
Definition: SCTHitEffMonTool.h:147
ITrackHoleSearchTool.h
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
Amg
Definition of ATLAS Math & Geometry primitives (Amg)
Definition: AmgStringHelpers.h:19
private
#define private
Definition: DetDescrConditionsDict_dict_fixes.cxx:13
SCTHitEffMonTool::m_effdistcut
FloatProperty m_effdistcut
Definition: SCTHitEffMonTool.h:156
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
SCTHitEffMonTool::TProf2DArray
std::array< TProfile2D *, SCT_Monitoring::N_REGIONS > TProf2DArray
Definition: SCTHitEffMonTool.h:79
SCTHitEffMonTool::m_Eff_hashCodeHisto
TProfile * m_Eff_hashCodeHisto
Definition: SCTHitEffMonTool.h:177
TProfile
Definition: rootspy.cxx:515
SiDetectorElementCollection.h
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
SCTHitEffMonTool::getResidual
double getResidual(const Identifier &surfaceID, const Trk::TrackParameters *trkParam, const InDet::SCT_ClusterContainer *p_sctclcontainer) const
Computes residual of a hit to a track.
Definition: SCTHitEffMonTool.cxx:976
SCTHitEffMonTool::m_maxZ0sinTheta
FloatProperty m_maxZ0sinTheta
Definition: SCTHitEffMonTool.h:157
SCT_MonitoringNumbers.h
SCTHitEffMonTool::m_residualPullCalculator
ToolHandle< Trk::IResidualPullCalculator > m_residualPullCalculator
Definition: SCTHitEffMonTool.h:135
SCTHitEffMonTool::m_useSCTorTRT
BooleanProperty m_useSCTorTRT
Definition: SCTHitEffMonTool.h:163
LArCellBinning.xbins
int xbins
Definition: LArCellBinning.py:163
IResidualPullCalculator.h
SCTHitEffMonTool::m_requireEnclosingHits
BooleanProperty m_requireEnclosingHits
Definition: SCTHitEffMonTool.h:164
SG::ReadCondHandleKey< InDetDD::SiDetectorElementCollection >
SCTHitEffMonTool::m_effdistribution
TH1F * m_effdistribution
Definition: SCTHitEffMonTool.h:179
TRT_ID
Definition: TRT_ID.h:84
SCTHitEffMonTool::m_minOtherHits
IntegerProperty m_minOtherHits
Definition: SCTHitEffMonTool.h:148
TH1F
Definition: rootspy.cxx:320
SCT_ID
Definition: SCT_ID.h:68
SCTHitEffMonTool::m_minSCTHits
IntegerProperty m_minSCTHits
Definition: SCTHitEffMonTool.h:146
InDetDD
Message Stream Member.
Definition: FakeTrackBuilder.h:8
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
SCTHitEffMonTool::becIdxLayer2Index
int becIdxLayer2Index(const int becIdx, const int layer) const
Definition: SCTHitEffMonTool.cxx:1028
SCT_ClusterContainer.h
SCTHitEffMonTool::initialize
virtual StatusCode initialize() override final
Definition: SCTHitEffMonTool.cxx:137
BunchCrossingCondData.h
Replaces the BunchCrossing AlgTool used in run1/2.
SCTHitEffMonTool::m_fieldCondObjInputKey
SG::ReadCondHandleKey< AtlasFieldCacheCondObj > m_fieldCondObjInputKey
Definition: SCTHitEffMonTool.h:132
SCTHitEffMonTool::m_Eff_LumiBlockHisto
TProfArray m_Eff_LumiBlockHisto
Definition: SCTHitEffMonTool.h:183
SCTHitEffMonTool::m_gpath
std::string m_gpath
Definition: SCTHitEffMonTool.h:125
SCTHitEffMonTool::m_useIDGlobal
BooleanProperty m_useIDGlobal
Definition: SCTHitEffMonTool.h:168
SCTHitEffMonTool::m_minPt
FloatProperty m_minPt
Definition: SCTHitEffMonTool.h:155
SCTHitEffMonTool::bookHistograms
virtual StatusCode bookHistograms() override final
Histogram booking method.
Definition: SCTHitEffMonTool.cxx:180
SCTHitEffMonTool::m_insideOutOnly
BooleanProperty m_insideOutOnly
Definition: SCTHitEffMonTool.h:160
SCTHitEffMonTool::SCTHitEffMonTool
SCTHitEffMonTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor.
Definition: SCTHitEffMonTool.cxx:115
plotBeamSpotCompare.histo
histo
Definition: plotBeamSpotCompare.py:415
PixelID
Definition: PixelID.h:67
SCTHitEffMonTool::~SCTHitEffMonTool
virtual ~SCTHitEffMonTool()=default
Destructor.
TSU::T
unsigned long long T
Definition: L1TopoDataTypes.h:35
SCTHitEffMonTool::m_pixelId
const PixelID * m_pixelId
Definition: SCTHitEffMonTool.h:141
SCTHitEffMonTool::m_holeSearchTool
ToolHandle< Trk::ITrackHoleSearchTool > m_holeSearchTool
Definition: SCTHitEffMonTool.h:137
SCTHitEffMonTool::m_Eff_Total
TProfile * m_Eff_Total
Definition: SCTHitEffMonTool.h:175