ATLAS Offline Software
Loading...
Searching...
No Matches
IDAlignMonResidualsAlg Class Reference

#include <IDAlignMonResidualsAlg.h>

Inheritance diagram for IDAlignMonResidualsAlg:

Public Types

enum class  Environment_t {
  user = 0 , online , tier0 , tier0Raw ,
  tier0ESD , AOD , altprod
}
 Specifies the processing environment. More...
enum class  DataType_t {
  userDefined = 0 , monteCarlo , collisions , cosmics ,
  heavyIonCollisions
}
 Specifies what type of input data is being monitored. More...

Public Member Functions

 IDAlignMonResidualsAlg (const std::string &name, ISvcLocator *pSvcLocator)
virtual ~IDAlignMonResidualsAlg ()
virtual StatusCode initialize () override
 initialize
virtual StatusCode fillHistograms (const EventContext &ctx) const override
 adds event to the monitoring histograms
virtual StatusCode execute (const EventContext &ctx) const override
 Applies filters and trigger requirements.
void fill (const ToolHandle< GenericMonitoringTool > &groupHandle, std::vector< std::reference_wrapper< Monitored::IMonitoredVariable > > &&variables) const
 Fills a vector of variables to a group by reference.
void fill (const ToolHandle< GenericMonitoringTool > &groupHandle, const std::vector< std::reference_wrapper< Monitored::IMonitoredVariable > > &variables) const
 Fills a vector of variables to a group by reference.
template<typename... T>
void fill (const ToolHandle< GenericMonitoringTool > &groupHandle, T &&... variables) const
 Fills a variadic list of variables to a group by reference.
void fill (const std::string &groupName, std::vector< std::reference_wrapper< Monitored::IMonitoredVariable > > &&variables) const
 Fills a vector of variables to a group by name.
void fill (const std::string &groupName, const std::vector< std::reference_wrapper< Monitored::IMonitoredVariable > > &variables) const
 Fills a vector of variables to a group by name.
template<typename... T>
void fill (const std::string &groupName, T &&... variables) const
 Fills a variadic list of variables to a group by name.
Environment_t environment () const
 Accessor functions for the environment.
Environment_t envStringToEnum (const std::string &str) const
 Convert the environment string from the python configuration to an enum object.
DataType_t dataType () const
 Accessor functions for the data type.
DataType_t dataTypeStringToEnum (const std::string &str) const
 Convert the data type string from the python configuration to an enum object.
const ToolHandle< GenericMonitoringTool > & getGroup (const std::string &name) const
 Get a specific monitoring tool from the tool handle array.
const ToolHandle< Trig::TrigDecisionTool > & getTrigDecisionTool () const
 Get the trigger decision tool member.
bool trigChainsArePassed (const std::vector< std::string > &vTrigNames) const
 Check whether triggers are passed.
SG::ReadHandle< xAOD::EventInfoGetEventInfo (const EventContext &) const
 Return a ReadHandle for an EventInfo object (get run/event numbers, etc.).
virtual float lbAverageInteractionsPerCrossing (const EventContext &ctx) const
 Calculate the average mu, i.e.
virtual float lbInteractionsPerCrossing (const EventContext &ctx) const
 Calculate instantaneous number of interactions, i.e.
virtual float lbAverageLuminosity (const EventContext &ctx) const
 Calculate average luminosity (in ub-1 s-1 => 10^30 cm-2 s-1).
virtual float lbLuminosityPerBCID (const EventContext &ctx) const
 Calculate the instantaneous luminosity per bunch crossing.
virtual double lbDuration (const EventContext &ctx) const
 Calculate the duration of the luminosity block (in seconds).
virtual float lbAverageLivefraction (const EventContext &ctx) const
 Calculate the average luminosity livefraction.
virtual float livefractionPerBCID (const EventContext &ctx) const
 Calculate the live fraction per bunch crossing ID.
virtual double lbLumiWeight (const EventContext &ctx) const
 Calculate the average integrated luminosity multiplied by the live fraction.
virtual StatusCode parseList (const std::string &line, std::vector< std::string > &result) const
 Parse a string into a vector.
virtual StatusCode sysInitialize () override
 Override sysInitialize.
virtual bool isClonable () const override
 Specify if the algorithm is clonable.
virtual StatusCode sysExecute (const EventContext &ctx) override
 Execute an algorithm.
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies.
virtual bool filterPassed (const EventContext &ctx) const
 Get filter decision:
virtual void setFilterPassed (bool state, const EventContext &ctx) const
 Set filter decision:
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed.

Protected Attributes

ToolHandleArray< GenericMonitoringToolm_tools {this,"GMTools",{}}
 Array of Generic Monitoring Tools.
PublicToolHandle< Trig::TrigDecisionToolm_trigDecTool
 Tool to tell whether a specific trigger is passed.
ToolHandleArray< IDQFilterToolm_DQFilterTools {this,"FilterTools",{}}
 Array of Data Quality filter tools.
SG::ReadCondHandleKey< LuminosityCondDatam_lumiDataKey {this,"LuminosityCondDataKey","LuminosityCondData","SG Key of LuminosityCondData object"}
SG::ReadCondHandleKey< LBDurationCondDatam_lbDurationDataKey {this,"LBDurationCondDataKey","LBDurationCondData","SG Key of LBDurationCondData object"}
SG::ReadCondHandleKey< TrigLiveFractionCondDatam_trigLiveFractionDataKey {this,"TrigLiveFractionCondDataKey","TrigLiveFractionCondData", "SG Key of TrigLiveFractionCondData object"}
AthMonitorAlgorithm::Environment_t m_environment
 Instance of the Environment_t enum.
AthMonitorAlgorithm::DataType_t m_dataType
 Instance of the DataType_t enum.
Gaudi::Property< std::string > m_environmentStr {this,"Environment","user"}
 Environment string pulled from the job option and converted to enum.
Gaudi::Property< std::string > m_dataTypeStr {this,"DataType","userDefined"}
 DataType string pulled from the job option and converted to enum.
Gaudi::Property< std::string > m_triggerChainString {this,"TriggerChain",""}
 Trigger chain string pulled from the job option and parsed into a vector.
std::vector< std::string > m_vTrigChainNames
 Vector of trigger chain names parsed from trigger chain string.
Gaudi::Property< std::string > m_fileKey {this,"FileKey",""}
 Internal Athena name for file.
Gaudi::Property< bool > m_useLumi {this,"EnableLumi",false}
 Allows use of various luminosity functions.
Gaudi::Property< float > m_defaultLBDuration {this,"DefaultLBDuration",60.}
 Default duration of one lumi block.
Gaudi::Property< int > m_detailLevel {this,"DetailLevel",0}
 Sets the level of detail used in the monitoring.
SG::ReadHandleKey< xAOD::EventInfom_EventInfoKey {this,"EventInfoKey","EventInfo"}
 Key for retrieving EventInfo from StoreGate.

Private Types

typedef std::vector< std::reference_wrapper< Monitored::IMonitoredVariable > > MonVarVec_t
typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

void fillTRTHistograms (int barrel_ec, int layer_or_wheel, int phi_module, float predictR, float hitR, float residualR, float pullR, bool isTubeHit, float trketa, float qpT) const
void fillTRTBarrelHistograms (int barrel_ec, int layer_or_wheel, int phi_module, float predictR, float hitR, float residualR, float pullR, bool LRcorrect, bool isTubeHit, float trketa) const
void fillTRTEndcapHistograms (int barrel_ec, int layer_or_wheel, int phi_module, float predictR, float hitR, float residualR, float pullR, bool LRcorrect, bool isTubeHit, float trketa, float qpT) const
StatusCode setupTools ()
StatusCode getSiResiduals (const Trk::Track *, const Trk::TrackStateOnSurface *, bool, double *) const
std::unique_ptr< Trk::TrackParametersgetUnbiasedTrackParameters (const Trk::Track *, const Trk::TrackStateOnSurface *) const
bool trackRequiresRefit (const Trk::Track *) const
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

const AtlasDetectorIDm_idHelper {}
const InDetDD::PixelDetectorManagerm_PIX_Mgr {}
const InDetDD::SCT_DetectorManagerm_SCT_Mgr {}
const PixelIDm_pixelID {}
const SCT_IDm_sctID {}
const TRT_IDm_trtID {}
SG::ReadHandleKey< TrackCollectionm_tracksKey {this,"TrackName2", "CombinedInDetTracks", "track data key"}
SG::ReadHandleKey< TrackCollectionm_tracksName {this,"TrackName","CombinedInDetTracks", "track data key"}
ToolHandle< ITRT_CalDbToolm_trtcaldbTool
ToolHandle< Trk::IUpdatorm_iUpdator
ToolHandle< Trk::IPropagatorm_propagator
ToolHandle< Trk::IResidualPullCalculatorm_residualPullCalculator
 The residual and pull calculator tool handle.
ToolHandle< InDet::IInDetTrackSelectionToolm_trackSelection
ToolHandle< IInDetAlignHitQualSelToolm_hitQualityTool
std::string m_Pixel_Manager
std::string m_SCT_Manager
bool m_extendedPlots {}
bool m_doHitQuality {false}
int m_checkrate {}
bool m_doPulls {}
bool m_applyTrkSel {}
std::vector< int > m_pixResidualX
std::vector< int > m_pixResidualX_2DProf
std::vector< int > m_pixResidualY
std::vector< int > m_pixResidualY_2DProf
std::vector< int > m_pixPullX
std::vector< int > m_pixPullY
std::vector< int > m_pixResidualXvsEta
std::vector< int > m_pixResidualYvsEta
std::vector< int > m_pixResidualXvsPhi
std::vector< int > m_pixResidualYvsPhi
std::vector< int > m_pixECAResidualX
std::vector< int > m_pixECAResidualY
std::vector< int > m_pixECResidualX_2DProf
std::vector< int > m_pixECResidualY_2DProf
std::vector< int > m_pixECCResidualX
std::vector< int > m_pixECCResidualY
std::vector< int > m_sctResidualX
std::vector< int > m_sctResidualX_2DProf
std::vector< int > m_sct_s0_ResidualX_2DProf
std::vector< int > m_sct_s1_ResidualX_2DProf
std::vector< int > m_sctECAResidualX_2DProf
std::vector< int > m_sctECA_s0_ResidualX_2DProf
std::vector< int > m_sctECA_s1_ResidualX_2DProf
std::vector< int > m_sctECCResidualX_2DProf
std::vector< int > m_sctECC_s0_ResidualX_2DProf
std::vector< int > m_sctECC_s1_ResidualX_2DProf
std::vector< int > m_sctPullX
std::vector< int > m_sctResidualXvsEta
std::vector< int > m_sctResidualXvsPhi
std::vector< int > m_trtBPredictedR
std::vector< int > m_trtBMeasuredR
std::vector< int > m_trtBResidualR
std::vector< int > m_trtBPullR
std::vector< int > m_trtBResidualRNoTube
std::vector< int > m_trtBPullRNoTube
std::vector< int > m_trtBLR
std::vector< std::vector< int > > m_trtBResVsEta
std::vector< std::vector< int > > m_trtBResVsPhiSec
std::vector< std::vector< int > > m_trtBLRVsPhiSec
std::vector< int > m_trtECPredictedR
std::vector< int > m_trtECMeasuredR
std::vector< int > m_trtECResidualR
std::vector< int > m_trtECPullR
std::vector< int > m_trtECResidualRNoTube
std::vector< int > m_trtECPullRNoTube
std::vector< int > m_trtECLR
std::vector< int > m_trtECResVsEta
std::vector< int > m_trtECResVsPhiSec
std::vector< int > m_trtECLRVsPhiSec
std::vector< int > m_trtECResVsPt_2DProf
std::string m_name
std::unordered_map< std::string, size_t > m_toolLookupMap
const ToolHandle< GenericMonitoringToolm_dummy
Gaudi::Property< bool > m_enforceExpressTriggers
DataObjIDColl m_extendedExtraObjects
 Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default).
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default).
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared

Static Private Attributes

static const int m_nSiBlayers {4}
static const int m_nPixEClayers {3}
static const int m_nSCTEClayers {9}
static const int m_nTRTBlayers {3}
static const int m_nTRTEClayers {2}

Detailed Description

Definition at line 48 of file IDAlignMonResidualsAlg.h.

Member Typedef Documentation

◆ MonVarVec_t

typedef std::vector<std::reference_wrapper<Monitored::IMonitoredVariable> > AthMonitorAlgorithm::MonVarVec_t
privateinherited

Definition at line 370 of file AthMonitorAlgorithm.h.

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Member Enumeration Documentation

◆ DataType_t

enum class AthMonitorAlgorithm::DataType_t
stronginherited

Specifies what type of input data is being monitored.

An enumeration of the different types of data the monitoring application may be running over. This can be used to select which histograms to produce, e.g. to prevent the production of colliding-beam histograms when running on cosmic-ray data. Strings of the same names may be given as jobOptions.

Enumerator
userDefined 
monteCarlo 
collisions 
cosmics 
heavyIonCollisions 

Definition at line 194 of file AthMonitorAlgorithm.h.

194 {
195 userDefined = 0,
196 monteCarlo,
197 collisions,
198 cosmics,
199 heavyIonCollisions,
200 };
AthConfigFlags cosmics(AthConfigFlags flags, str instanceName, str recoMode)

◆ Environment_t

enum class AthMonitorAlgorithm::Environment_t
stronginherited

Specifies the processing environment.

The running environment may be used to select which histograms are produced, and where they are located in the output. For example, the output paths of the histograms are different for the "user", "online" and the various offline flags. Strings of the same names may be given as jobOptions.

Enumerator
user 
online 
tier0 
tier0Raw 
tier0ESD 
AOD 
altprod 

Definition at line 175 of file AthMonitorAlgorithm.h.

175 {
176 user = 0,
177 online,
178 tier0,
179 tier0Raw,
180 tier0ESD,
181 AOD,
182 altprod,
183 };

Constructor & Destructor Documentation

◆ IDAlignMonResidualsAlg()

IDAlignMonResidualsAlg::IDAlignMonResidualsAlg ( const std::string & name,
ISvcLocator * pSvcLocator )

Definition at line 47 of file IDAlignMonResidualsAlg.cxx.

47 :
48 AthMonitorAlgorithm(name, pSvcLocator),
49 m_trtcaldbTool("TRT_CalDbTool", this),
50 m_iUpdator ("Trk::KalmanUpdator"),
51 m_propagator ("Trk::RungeKuttaPropagator"),
52 m_residualPullCalculator( "Trk::ResidualPullCalculator/ResidualPullCalculator"),
53 m_trackSelection( "InDet::InDetTrackSelectionTool/TrackSelectionTool", this),
55 declareProperty("CheckRate" , m_checkrate=1000);
56 declareProperty("ITRT_CalDbTool" , m_trtcaldbTool);
57 declareProperty("iUpdator" , m_iUpdator);
58 declareProperty("propagator" , m_propagator);
59 declareProperty("TrackSelectionTool" , m_trackSelection);
60 declareProperty("ResidualPullCalculatorTool", m_residualPullCalculator);
61 declareProperty("HitQualityTool" , m_hitQualityTool);
62 declareProperty("Pixel_Manager" , m_Pixel_Manager);
63 declareProperty("SCT_Manager" , m_SCT_Manager);
64 declareProperty("ApplyTrackSelection" , m_applyTrkSel = true);
65}
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
AthMonitorAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor.
ToolHandle< InDet::IInDetTrackSelectionTool > m_trackSelection
ToolHandle< Trk::IUpdator > m_iUpdator
ToolHandle< IInDetAlignHitQualSelTool > m_hitQualityTool
ToolHandle< ITRT_CalDbTool > m_trtcaldbTool
ToolHandle< Trk::IResidualPullCalculator > m_residualPullCalculator
The residual and pull calculator tool handle.
ToolHandle< Trk::IPropagator > m_propagator

◆ ~IDAlignMonResidualsAlg()

IDAlignMonResidualsAlg::~IDAlignMonResidualsAlg ( )
virtual

Definition at line 69 of file IDAlignMonResidualsAlg.cxx.

69{}

Member Function Documentation

◆ dataType()

DataType_t AthMonitorAlgorithm::dataType ( ) const
inlineinherited

Accessor functions for the data type.

Returns
the current value of the class's DataType_t instance.

Definition at line 224 of file AthMonitorAlgorithm.h.

224{ return m_dataType; }
AthMonitorAlgorithm::DataType_t m_dataType
Instance of the DataType_t enum.

◆ dataTypeStringToEnum()

AthMonitorAlgorithm::DataType_t AthMonitorAlgorithm::dataTypeStringToEnum ( const std::string & str) const
inherited

Convert the data type string from the python configuration to an enum object.

Returns
a value in the DataType_t enumeration which matches the input string.

Definition at line 144 of file AthMonitorAlgorithm.cxx.

144 {
145 // convert the string to all lowercase
146 std::string lowerCaseStr = str;
147 std::transform(lowerCaseStr.begin(), lowerCaseStr.end(), lowerCaseStr.begin(), ::tolower);
148
149 // check if it matches one of the enum choices
150 if( lowerCaseStr == "userdefined" ) {
152 } else if( lowerCaseStr == "montecarlo" ) {
154 } else if( lowerCaseStr == "collisions" ) {
156 } else if( lowerCaseStr == "cosmics" ) {
157 return DataType_t::cosmics;
158 } else if( lowerCaseStr == "heavyioncollisions" ) {
160 } else { // otherwise, warn the user and return "userDefined"
161 ATH_MSG_WARNING("AthMonitorAlgorithm::dataTypeStringToEnum(): Unknown data type "
162 <<str<<", returning userDefined.");
164 }
165}
#define ATH_MSG_WARNING(x)
void tolower(std::string &s)

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareGaudiProperty ( Gaudi::Property< T, V, H > & hndl,
const SG::VarHandleKeyType &  )
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( Gaudi::Property< T, V, H > & t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ detStore()

const ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

◆ environment()

Environment_t AthMonitorAlgorithm::environment ( ) const
inlineinherited

Accessor functions for the environment.

Returns
the current value of the class's Environment_t instance.

Definition at line 208 of file AthMonitorAlgorithm.h.

208{ return m_environment; }
AthMonitorAlgorithm::Environment_t m_environment
Instance of the Environment_t enum.

◆ envStringToEnum()

AthMonitorAlgorithm::Environment_t AthMonitorAlgorithm::envStringToEnum ( const std::string & str) const
inherited

Convert the environment string from the python configuration to an enum object.

Returns
a value in the Environment_t enumeration which matches the input string.

Definition at line 116 of file AthMonitorAlgorithm.cxx.

116 {
117 // convert the string to all lowercase
118 std::string lowerCaseStr = str;
119 std::transform(lowerCaseStr.begin(), lowerCaseStr.end(), lowerCaseStr.begin(), ::tolower);
120
121 // check if it matches one of the enum choices
122 if( lowerCaseStr == "user" ) {
123 return Environment_t::user;
124 } else if( lowerCaseStr == "online" ) {
126 } else if( lowerCaseStr == "tier0" ) {
128 } else if( lowerCaseStr == "tier0raw" ) {
130 } else if( lowerCaseStr == "tier0esd" ) {
132 } else if( lowerCaseStr == "aod" ) {
133 return Environment_t::AOD;
134 } else if( lowerCaseStr == "altprod" ) {
136 } else { // otherwise, warn the user and return "user"
137 ATH_MSG_WARNING("AthMonitorAlgorithm::envStringToEnum(): Unknown environment "
138 <<str<<", returning user.");
139 return Environment_t::user;
140 }
141}

◆ evtStore()

ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

◆ execute()

StatusCode AthMonitorAlgorithm::execute ( const EventContext & ctx) const
overridevirtualinherited

Applies filters and trigger requirements.

Then, calls fillHistograms().

Parameters
ctxevent context for reentrant Athena call
Returns
StatusCode

Definition at line 77 of file AthMonitorAlgorithm.cxx.

77 {
78
79 // Checks that all of the DQ filters are passed. If any one of the filters
80 // fails, return SUCCESS code and do not fill the histograms with the event.
81 for ( const auto& filterItr : m_DQFilterTools ) {
82 if (!filterItr->accept(ctx)) {
83 ATH_MSG_DEBUG("Event rejected due to filter tool.");
84 return StatusCode::SUCCESS;
85 }
86 }
87
88 // Trigger: If there is a decision tool and the chains fail, skip the event.
90 ATH_MSG_DEBUG("Event rejected due to trigger filter.");
91 return StatusCode::SUCCESS;
92 }
93
94 ATH_MSG_DEBUG("Event accepted!");
95 return fillHistograms(ctx);
96}
#define ATH_MSG_DEBUG(x)
virtual StatusCode fillHistograms(const EventContext &ctx) const =0
adds event to the monitoring histograms
bool trigChainsArePassed(const std::vector< std::string > &vTrigNames) const
Check whether triggers are passed.
std::vector< std::string > m_vTrigChainNames
Vector of trigger chain names parsed from trigger chain string.
PublicToolHandle< Trig::TrigDecisionTool > m_trigDecTool
Tool to tell whether a specific trigger is passed.
ToolHandleArray< IDQFilterTool > m_DQFilterTools
Array of Data Quality filter tools.

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase & ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ extraOutputDeps()

const DataObjIDColl & AthCommonAlgorithm< Gaudi::Algorithm >::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

This list is extended to include symlinks implied by inheritance relations.

Definition at line 89 of file AthCommonAlgorithm.cxx.

54{
55 // If we didn't find any symlinks to add, just return the collection
56 // from the base class. Otherwise, return the extended collection.
57 if (!m_extendedExtraObjects.empty()) {
59 }
61}
Common base class for algorithms.

◆ fillHistograms()

StatusCode IDAlignMonResidualsAlg::fillHistograms ( const EventContext & ctx) const
overridevirtual

adds event to the monitoring histograms

User will overwrite this function. Histogram booking is no longer done in C++. This function is called in execute once the filters are all passed.

Parameters
ctxforwarded from execute
Returns
StatusCode

filling TRT histograms

Implements AthMonitorAlgorithm.

Definition at line 147 of file IDAlignMonResidualsAlg.cxx.

148{
149 using namespace Monitored;
150
151 ATH_MSG_DEBUG("fillHistograms() -- dealing with track collection: " << m_tracksName.key());
152
153 // For histogram naming
154 const auto & residualGroup = getGroup("Residuals");
155
156 //counters
157 float mu = 0.;
158 int nTracks = 0;
159 //recreates original behaviour...but...
160 //calls this every time
162 auto mu_m = Monitored::Scalar<float>("mu_m", 0.0);
163 mu_m = mu;
164
165 if (m_extendedPlots){
166 fill("residualGroup", mu_m);
167 }
168
169 // Retrieving tracks
170 auto tracks = SG::makeHandle(m_tracksName, ctx);
171 if (not tracks.isValid()) {
172 ATH_MSG_ERROR(m_tracksName.key() << " could not be retrieved");
173 return StatusCode::RECOVERABLE;
174 }
175
176 //looping over tracks
177 ATH_MSG_DEBUG ("IDAlignMonResidual: Start loop on tracks. Number of tracks " << tracks->size());
178 for (const Trk::Track* trksItr: *tracks) {
179
180 // Found track?!
181 if ( !trksItr || trksItr->perigeeParameters() == nullptr ) {
182 ATH_MSG_DEBUG( "InDetAlignmentMonitoringRun3: NULL track pointer in collection" );
183 continue;
184 }
185
186 // Select tracks
187 if ( m_applyTrkSel and !m_trackSelection->accept(*trksItr) )
188 continue;
189
190 nTracks++;
191
192 //check that all TSOS of track have track parameters defined (required to compute residuals/pulls)
193 if(trackRequiresRefit(trksItr)){
194 ATH_MSG_DEBUG("Not all TSOS contain track parameters - will be missing residuals/pulls");
195 }
196 else
197 ATH_MSG_DEBUG("All TSOS of track " << nTracks << "/" << tracks->size() << " contain track parameters - Good!");
198
199 //trackStateOnSurfaces is a vector of Trk::TrackStateOnSurface objects which contain information
200 //on track at each (inner)detector surface it crosses eg hit used to fit track
201 ATH_MSG_DEBUG( "** IDAlignMonResiduals::fillHistograms() ** track: " << nTracks << " has " << trksItr->trackStateOnSurfaces()->size() << " TrkSurfaces");
202
203 int nHits = 0; //counts number of tsos from which we can define residual/pull
204 int nTSOS = -1; //counts all TSOS on the track
205
206 const Trk::Perigee* measPer = trksItr->perigeeParameters();
207 float charge = 1; if (measPer->charge() < 0) charge = -1;
208 float trkpt = -999;
209 trkpt = measPer->pT()/1000.;
210 float qpT = charge*trkpt;
211
212 //looping over the hits of the track
213 for (const Trk::TrackStateOnSurface* tsos : *trksItr->trackStateOnSurfaces()) {
214
215 ++nTSOS;
216
217 if (tsos == nullptr) {
218 ATH_MSG_DEBUG(" TSOS (hit) = " << nTSOS << " is NULL ");
219 continue;
220 }
221
222 //skipping outliers
223 ATH_MSG_DEBUG(" --> testing if hit " << nTSOS << "/" << trksItr->trackStateOnSurfaces()->size() << " is a track measurement");
225 ATH_MSG_DEBUG("Skipping TSOS " << nTSOS << " because it is an outlier (or the first TSOS on the track)");
226 continue;
227 }
228
229 const Trk::MeasurementBase* mesh =tsos->measurementOnTrack();
230 ATH_MSG_DEBUG(" --> Defined hit measurementOnTrack() for hit: " << nTSOS << "/" << trksItr->trackStateOnSurfaces()->size() << " of track " << nTracks);
231
232 //Trk::RIO_OnTrack object contains information on the hit used to fit the track at this surface
233 const Trk::RIO_OnTrack* hit = dynamic_cast <const Trk::RIO_OnTrack*>(mesh);
234 ATH_MSG_DEBUG(" --> Going to retrieve the Trk::RIO_OnTrack for hit " << nTSOS);
235 if (hit== nullptr) {
236 //for some reason the first tsos has no associated hit - maybe because this contains the defining parameters?
237 if (nHits >0) ATH_MSG_DEBUG("No hit associated with TSOS " << nTSOS);
238 continue;
239 }
240
241 ATH_MSG_DEBUG(" --> Going to retrieve the track parameters of this TSOS: " << nTSOS);
242 const Trk::TrackParameters* trackParameter = tsos->trackParameters();
243 if(trackParameter==nullptr) {
244 //if no TrackParameters for TSOS we cannot define residuals
245 ATH_MSG_DEBUG(" Skipping TSOS " << nTSOS << " because it does not have TrackParameters");
246 continue;
247 }
248 //trackParameter cannot be nullptr here
249 const AmgSymMatrix(5)* TrackParCovariance = trackParameter->covariance();
250
251 if(TrackParCovariance==nullptr) {
252 //if no MeasuredTrackParameters the hit will not have associated convariance error matrix and will not
253 //be able to define a pull or unbiased residual (errors needed for propagation)
254 ATH_MSG_DEBUG("Skipping TSOS " << nTSOS << " because does not have MeasuredTrackParameters");
255 continue;
256 }
257
259 " --> going to define residuals and everything of TSOS #" << nTSOS << "/" <<
260 trksItr->trackStateOnSurfaces()->size());
261
262 float residualX = 9999.0;
263 float residualY = 9999.0;
264 float pullX = 9999.0;
265 float pullY = 9999.0;
266 float biasedResidualX = 9999.0;
267 float biasedResidualY = 9999.0;
268 int detType = 99;
269 int barrelEC = 99;
270 int layerDisk = 99;
271 int barrel_ec = 99;
272 int layer_or_wheel = 99;
273 int sctSide = 99;
274 int modEta = 9999;
275 int modPhi = 9999;
276
277 const Identifier & hitId = hit->identify();
278 if (m_idHelper->is_trt(hitId)) detType = 2;
279 else if (m_idHelper->is_sct(hitId)) detType = 1;
280 else if (m_idHelper->is_pixel(hitId)) detType = 0;
281 else detType = 99;
282
283 //hits with detType = 0 are no Inner Detector hits -> skip
284 if ( detType == 99) {
285 ATH_MSG_DEBUG(" --> Hit " << nTSOS << " with detector type " << detType << " is not an Inner Detector hit -> skip this hit");
286 continue;
287 }
288
289 //TRT hits: detType = 2
290 if (detType == 2) {
291 ATH_MSG_DEBUG("** IDAlignMonResidualsAlg::fillHistograms() ** Hit is from the TRT, finding residuals... ");
292 bool isTubeHit = (mesh->localCovariance()(Trk::locX, Trk::locX) > 1.0);
293 const Trk::TrackParameters* trackParameter = tsos->trackParameters();
294 //finding residuals
295 if (!trackParameter) {
296 ATH_MSG_WARNING("No TrackParameters associated with TRT TrkSurface " << nTSOS);
297 continue;
298 }
299 float hitR = hit->localParameters()[Trk::driftRadius];
300 float trketa = tsos->trackParameters()->eta();
301 float pullR = -9.9;
302
303 const Identifier& id = m_trtID->layer_id(hitId);
304 barrel_ec = m_trtID->barrel_ec(id);
305 layer_or_wheel = m_trtID->layer_or_wheel(id);
306 int phi_module = m_trtID->phi_module(id);
307
308
309 ATH_MSG_DEBUG("Found Trk::TrackParameters for hit " << nTSOS << " --> TRT hit (detType= " << detType << ")" );
310
311 //getting unbiased track parameters by removing the hit from the track and refitting
312 //std::unique_ptr <Trk::TrackParameters> trackParameterUnbiased;
313 auto trackParameterUnbiased = getUnbiasedTrackParameters(trksItr, tsos);
314
315 if (!trackParameterUnbiased) {//updator can fail
316 ATH_MSG_WARNING("Cannot define unbiased parameters for hit, skipping it.");
317 continue;
318 }
319 ATH_MSG_DEBUG(" --> TRT UnBiased TrackParameters of hit " << nTSOS << " FOUND");
320
321 float predictR = trackParameterUnbiased->parameters()[Trk::locR];
322
323 const Trk::MeasurementBase* mesh = tsos->measurementOnTrack();
324 std::optional<Trk::ResidualPull> residualPull =
325 m_residualPullCalculator->residualPull(mesh,
326 trackParameterUnbiased.get(),
328
329 if (residualPull) {
330 pullR = residualPull->pull()[Trk::locR];
331 }
332 else {
333 ATH_MSG_DEBUG(" no covariance of the track parameters given, can not calculate pull!");
334 }
335
336 //delete trackParameterUnbiased;
337
338 float residualR = hitR - predictR;
339
340 const InDet::TRT_DriftCircleOnTrack* trtCircle =
341 dynamic_cast<const InDet::TRT_DriftCircleOnTrack*>(tsos->measurementOnTrack());
342
343 if (trtCircle != nullptr) {
344 ATH_MSG_DEBUG(" fillHistograms() ** filling TRT histograms for hit/tsos #" << nTSOS
345 << " Barrel/EndCap: " << barrel_ec
346 << " layer/wheel: " << layer_or_wheel
347 << " phi: " << phi_module
348 << " Residual: " << residualR);
350 fillTRTHistograms(barrel_ec
351 , layer_or_wheel
352 , phi_module
353 , predictR
354 , hitR
355 , residualR
356 , pullR
357 , isTubeHit
358 , trketa
359 , qpT);
360 }
361 }//end-TRT hit
362
363 else { //have identified a PIXEL or SCT hit
364 if(m_doHitQuality) {
365 ATH_MSG_DEBUG("applying hit quality cuts to Silicon hit...");
366 hit = m_hitQualityTool->getGoodHit(tsos);
367 if(hit==nullptr) {
368 ATH_MSG_DEBUG("hit failed quality cuts and is rejected.");
369 continue;
370 }
371 ATH_MSG_DEBUG("hit passed quality cuts");
372 }
373 else ATH_MSG_DEBUG("hit quality cuts NOT APPLIED to Silicon hit.");
374
375 //determining Si module physical position (can modify residual calculation eg. SCT endcaps)
376 if (detType==0){//pixel
377 const Identifier& id = m_pixelID->wafer_id(hitId);
378 barrelEC = m_pixelID -> barrel_ec(id);
379 layerDisk = m_pixelID -> layer_disk(id);
380 modEta = m_pixelID->eta_module(id); //For the endcaps these are the rings
381 modPhi = m_pixelID->phi_module(id);
382 }
383 else {//sct. Since detType == 0 or detType == 1 here
384 const Identifier& id = m_sctID->wafer_id(hitId);
385 barrelEC = m_sctID->barrel_ec(id);
386 layerDisk = m_sctID->layer_disk(id);
387 modEta = m_sctID->eta_module(id);
388 modPhi = m_sctID->phi_module(id);
389 sctSide = m_sctID->side(id);
390 }
391
392 //finding residuals
393 if(trackParameter){//should always have TrackParameters since we now skip tracks with no MeasuredTrackParameters
394
395 ATH_MSG_DEBUG("Found Trk::TrackParameters " << trackParameter);
396
397 double unbiasedResXY[4] = {9999.0,9999.0,9999.0,9999.0};
398 double biasedResXY[4] = {9999.0,9999.0,9999.0,9999.0};
399
400 //finding unbiased single residuals
402 sc = getSiResiduals(trksItr,tsos,true,unbiasedResXY);
403 if (sc.isFailure()) {
404 ATH_MSG_DEBUG("Problem in determining unbiased residuals! Hit is skipped.");
405 auto detType_m = Monitored::Scalar<int>( "m_detType", detType);
406 fill(residualGroup, detType_m);
407 continue;
408 }
409 else
410 ATH_MSG_DEBUG("unbiased residuals found ok");
411
412 residualX = (float)unbiasedResXY[0];
413 residualY = (float)unbiasedResXY[1];
414 pullX = (float)unbiasedResXY[2];
415 pullY = (float)unbiasedResXY[3];
416
417 //finding biased single residuals (for interest)
418 sc = getSiResiduals(trksItr,tsos,false,biasedResXY);
419 if (sc.isFailure()) {
420 ATH_MSG_DEBUG("Problem in determining biased residuals! Hit is skipped.");
421 continue;
422 }
423 else
424 ATH_MSG_DEBUG("biased residuals found ok");
425
426 biasedResidualX = (float)biasedResXY[0];
427 biasedResidualY = (float)biasedResXY[1];
428
429 }
430 else {
431 ATH_MSG_DEBUG("No TrackParameters associated with Si TrkSurface "<< nTSOS << " - Hit is probably an outlier");
432 }
433 }//end-Pixel and SCT hits
434
435 //--------------------------------------------
436 //
437 // Filling Residual Histograms for Pixel and SCT
438 //
439 //--------------------------------------------
440
441 //Common for Pixel and SCT and other variables used
442 auto si_residualx_m = Monitored::Scalar<float>( "m_si_residualx", 0.0);
443 auto si_b_residualx_m = Monitored::Scalar<float>( "m_si_b_residualx", 0.0);
444 auto si_barrel_resX_m = Monitored::Scalar<float>( "m_si_barrel_resX", 0.0);
445 auto si_barrel_resY_m = Monitored::Scalar<float>( "m_si_barrel_resY", 0.0);
446 auto si_barrel_pullX_m = Monitored::Scalar<float>( "m_si_barrel_pullX", 0.0);
447 auto si_barrel_pullY_m = Monitored::Scalar<float>( "m_si_barrel_pullY", 0.0);
448 auto si_eca_resX_m = Monitored::Scalar<float>( "m_si_eca_resX", 0.0);
449 auto si_eca_resY_m = Monitored::Scalar<float>( "m_si_eca_resY", 0.0);
450 auto si_eca_pullX_m = Monitored::Scalar<float>( "m_si_eca_pullX", 0.0);
451 auto si_eca_pullY_m = Monitored::Scalar<float>( "m_si_eca_pullY", 0.0);
452 auto si_ecc_resX_m = Monitored::Scalar<float>( "m_si_ecc_resX", 0.0);
453 auto si_ecc_resY_m = Monitored::Scalar<float>( "m_si_ecc_resY", 0.0);
454 auto si_ecc_pullX_m = Monitored::Scalar<float>( "m_si_ecc_pullX", 0.0);
455 auto si_ecc_pullY_m = Monitored::Scalar<float>( "m_si_ecc_pullY", 0.0);
456 auto residualX_m = Monitored::Scalar<float>( "m_residualX", residualX);
457 auto residualY_m = Monitored::Scalar<float>( "m_residualY", residualY);
458 auto modEta_m = Monitored::Scalar<int>( "m_modEta", modEta );
459 auto modPhi_m = Monitored::Scalar<int>( "m_modPhi", modPhi );
460 int lb = GetEventInfo(ctx)->lumiBlock();
461 auto lb_m = Monitored::Scalar<int>( "m_lb", lb );
462 auto layerDisk_m = Monitored::Scalar<float>("m_layerDisk", layerDisk);
463 auto layerDisk_si_m = Monitored::Scalar<float>("m_layerDisk_si", 0);
464
465 if (detType==0) {//filling pixel histograms
466 ATH_MSG_DEBUG(" This is a PIXEL hit " << hitId << " - filling histograms");
467
468 si_residualx_m = residualX;
469 fill(residualGroup, si_residualx_m);
470
471 if(barrelEC==0){//filling pixel barrel histograms
472 int ModEtaShift[4] = {12, 38, 60, 82};
473 int ModPhiShift[4] = {0, 24, 56, 104};
474
475 //common Si plots
476 si_b_residualx_m = residualX;
477 fill(residualGroup, si_b_residualx_m);
478
479 layerDisk_si_m = layerDisk;
480 si_barrel_resX_m = residualX;
481 si_barrel_resY_m = residualY;
482 si_barrel_pullX_m = pullX;
483 si_barrel_pullY_m = pullY;
484 fill(residualGroup, layerDisk_si_m, si_barrel_resX_m, si_barrel_resY_m, si_barrel_pullX_m, si_barrel_pullY_m);
485
486 //Pixel Residual plots
487 auto pix_b_residualx_m = Monitored::Scalar<float>( "m_pix_b_residualx", residualX);
488 auto pix_b_biased_residualx_m = Monitored::Scalar<float>( "m_pix_b_biased_residualx", biasedResidualX);
489 auto pix_b_residualy_m = Monitored::Scalar<float>( "m_pix_b_residualy", residualY);
490 auto pix_b_biased_residualy_m = Monitored::Scalar<float>( "m_pix_b_biased_residualy", biasedResidualY);
491 fill(residualGroup, pix_b_residualx_m, pix_b_biased_residualx_m, pix_b_residualy_m, pix_b_biased_residualy_m);
492 auto pix_b_residualsx_m = Monitored::Scalar<float>("m_pix_residualsx", residualX);
493 fill(m_tools[m_pixResidualX[layerDisk]], pix_b_residualsx_m);
494 fill(m_tools[m_pixResidualX_2DProf[layerDisk]], modEta_m, modPhi_m, pix_b_residualsx_m);
495 auto pix_b_residualsy_m = Monitored::Scalar<float>("m_pix_residualsy", residualY);
496 fill(m_tools[m_pixResidualY[layerDisk]], pix_b_residualsy_m);
497 fill(m_tools[m_pixResidualY_2DProf[layerDisk]], modEta_m, modPhi_m, pix_b_residualsy_m);
498 auto pix_b_pullsx_m = Monitored::Scalar<float>("m_pix_pullsx", pullX);
499 fill(m_tools[m_pixPullX[layerDisk]], pix_b_pullsx_m);
500 auto pix_b_pullsy_m = Monitored::Scalar<float>("m_pix_pullsy", pullY);
501 fill(m_tools[m_pixPullY[layerDisk]], pix_b_pullsy_m);
502
503 //Residuals vs Eta and Phi
504 fill(m_tools[m_pixResidualXvsEta[layerDisk]], modEta_m, residualX_m );
505 fill(m_tools[m_pixResidualYvsEta[layerDisk]], modEta_m, residualY_m );
506 fill(m_tools[m_pixResidualXvsPhi[layerDisk]], modPhi_m, residualX_m );
507 fill(m_tools[m_pixResidualYvsPhi[layerDisk]], modPhi_m, residualY_m );
508
509 auto residualX_barrel_m = Monitored::Scalar<float>( "m_residualX_barrel", residualX);
510 auto residualY_barrel_m = Monitored::Scalar<float>( "m_residualY_barrel", residualY);
511 auto modPhiShift_barrel_m = Monitored::Scalar<int>( "m_modPhiShift_barrel", modPhi + ModPhiShift[layerDisk] );
512 auto modEtaShift_barrel_m = Monitored::Scalar<int>( "m_modEtaShift_barrel", modEta + ModEtaShift[layerDisk] );
513 fill(residualGroup, modPhiShift_barrel_m, residualX_barrel_m, residualY_barrel_m);
514 fill(residualGroup, modEtaShift_barrel_m, residualX_barrel_m, residualY_barrel_m);
515 }
516 else if(barrelEC==2){//three Pixel endcap disks from 0-2
517 int ModPhiShift[3] = {0, 55, 110};
518
519 //Common Si plots
520 layerDisk_si_m = layerDisk;
521 si_eca_resX_m = residualX;
522 si_eca_resY_m = residualY;
523 si_eca_pullX_m = pullX;
524 si_eca_pullY_m = pullY;
525 fill(residualGroup, layerDisk_si_m, si_eca_resX_m, si_eca_resY_m, si_eca_pullX_m, si_eca_pullY_m);
526
527 //Pixel Residual plots
528 auto pix_eca_residualx_m = Monitored::Scalar<float>( "m_pix_eca_residualx", residualX);
529 auto pix_ec_residualx_m = Monitored::Scalar<float>( "m_pix_ec_residualx", residualX);
530 fill(m_tools[m_pixECResidualX_2DProf[0]], layerDisk_m , modPhi_m, pix_ec_residualx_m);
531 auto pix_eca_residualy_m = Monitored::Scalar<float>( "m_pix_eca_residualy", residualY);
532 auto pix_ec_residualy_m = Monitored::Scalar<float>( "m_pix_ec_residualy", residualY);
533 fill(residualGroup, pix_eca_residualx_m, pix_eca_residualy_m);
534 fill(m_tools[m_pixECResidualY_2DProf[0]], layerDisk_m, modPhi_m, pix_ec_residualy_m);
535 auto pix_eca_pullx_m = Monitored::Scalar<float>( "m_pix_eca_pullx", pullX);
536 auto pix_eca_pully_m = Monitored::Scalar<float>( "m_pix_eca_pully", pullY);
537 fill(residualGroup, pix_eca_pullx_m, pix_eca_pully_m);
538
539 //Residuals vs Eta and Phi
540 auto residualX_eca_m = Monitored::Scalar<float>( "m_residualX_eca", residualX );
541 auto residualY_eca_m = Monitored::Scalar<float>( "m_residualY_eca", residualY );
542 auto modPhiShift_eca_m = Monitored::Scalar<int>( "m_modPhiShift_eca", modPhi + ModPhiShift[layerDisk]);
543 fill(m_tools[m_pixECAResidualX[layerDisk]], modPhi_m, pix_eca_residualx_m);
544 fill(m_tools[m_pixECAResidualY[layerDisk]], modPhi_m, pix_eca_residualy_m);
545 fill(residualGroup, modPhiShift_eca_m, residualX_eca_m, residualY_eca_m);
546 }
547 else if(barrelEC==-2){
548 int ModPhiShift[3] = {0, 55, 110};
549
550 //Common Si plots
551 layerDisk_si_m = layerDisk;
552 si_ecc_resX_m = residualX;
553 si_ecc_resY_m = residualY;
554 si_ecc_pullX_m = pullX;
555 si_ecc_pullY_m = pullY;
556 fill(residualGroup, layerDisk_si_m, si_ecc_resX_m, si_ecc_resY_m, si_ecc_pullX_m, si_ecc_pullY_m);
557
558 //Pixel Residual plots
559 auto pix_ecc_residualx_m = Monitored::Scalar<float>( "m_pix_ecc_residualx", residualX);
560 auto pix_ec_residualx_m = Monitored::Scalar<float>( "m_pix_ec_residualx", residualX);
561 fill(m_tools[m_pixECResidualX_2DProf[1]], layerDisk_m , modPhi_m, pix_ec_residualx_m);
562 auto pix_ecc_residualy_m = Monitored::Scalar<float>( "m_pix_ecc_residualy", residualY);
563 auto pix_ec_residualy_m = Monitored::Scalar<float>( "m_pix_ec_residualy", residualY);
564 fill(residualGroup, pix_ecc_residualx_m, pix_ecc_residualy_m);
565 fill(m_tools[m_pixECResidualY_2DProf[1]], layerDisk_m, modPhi_m, pix_ec_residualy_m);
566 auto pix_ecc_pullx_m = Monitored::Scalar<float>( "m_pix_ecc_pullx", pullX);
567 auto pix_ecc_pully_m = Monitored::Scalar<float>( "m_pix_ecc_pully", pullY);
568 fill(residualGroup, pix_ecc_pullx_m, pix_ecc_pully_m);
569
570 //Residuals vs Eta and Phi
571 auto residualX_ecc_m = Monitored::Scalar<float>( "m_residualX_ecc", residualX);
572 auto residualY_ecc_m = Monitored::Scalar<float>( "m_residualY_ecc", residualY);
573 auto modPhiShift_ecc_m = Monitored::Scalar<int>( "m_modPhiShift_ecc", modPhi + ModPhiShift[layerDisk] );
574 fill(m_tools[m_pixECCResidualX[layerDisk]], modPhi_m, pix_ecc_residualx_m);
575 fill(m_tools[m_pixECCResidualY[layerDisk]], modPhi_m, pix_ecc_residualy_m);
576 fill(residualGroup, modPhiShift_ecc_m, residualX_ecc_m, residualY_ecc_m);
577 }
578 }
579 else if (detType==1) {//filling SCT histograms
580 si_residualx_m = residualX;
581 fill(residualGroup, si_residualx_m);
582
583 ATH_MSG_DEBUG(" This is a SCT hit " << hitId << " - filling histograms");
584
585 if(barrelEC==0){//filling SCT barrel histograms
586 int ModPhiShift[4] = {0, 42, 92, 150};
587 int ModEtaShift[4] = {12, 34, 54, 78};
588
589 //common Si plots
590 si_b_residualx_m = residualX;
591 fill(residualGroup, si_b_residualx_m);
592
593 layerDisk_si_m = 4 + 2 * layerDisk + sctSide;
594 si_barrel_resX_m = residualX;
595 si_barrel_pullX_m = pullX;
596 fill(residualGroup, layerDisk_si_m, si_barrel_resX_m, si_barrel_pullX_m);
597
598 //SCT Residual plots
599 auto sct_b_residualx_m = Monitored::Scalar<float>( "m_sct_b_residualx", residualX);
600 fill(residualGroup, sct_b_residualx_m);
601 auto sct_b_biased_residualx_m = Monitored::Scalar<float>( "m_sct_b_biased_residualx", biasedResidualX);
602 auto sct_b_residualsx_m = Monitored::Scalar<float>("m_sct_residualsx", residualX);
603 fill(m_tools[m_sctResidualX[layerDisk]], sct_b_residualsx_m);
604 fill(m_tools[m_sctResidualX_2DProf[layerDisk]], modEta_m, modPhi_m, sct_b_residualsx_m);
605 auto sct_b_pullsx_m = Monitored::Scalar<float>("m_sct_pullsx", pullX);
606 fill(m_tools[m_sctPullX[layerDisk]], sct_b_pullsx_m);
607 if (sctSide == 0) {
608 fill(m_tools[m_sct_s0_ResidualX_2DProf[layerDisk]], modEta_m, modPhi_m, sct_b_residualsx_m);
609 } else {
610 fill(m_tools[m_sct_s1_ResidualX_2DProf[layerDisk]], modEta_m, modPhi_m, sct_b_residualsx_m);
611 }
612
613 //Residuals vs Eta and Phi
614 fill(m_tools[m_sctResidualXvsEta[layerDisk]], modEta_m, residualX_m);
615 fill(m_tools[m_sctResidualXvsPhi[layerDisk]], modPhi_m, residualX_m);
616
617 auto residualX_sct_barrel_m = Monitored::Scalar<float>( "m_residualX_sct_barrel", residualX);
618 auto modPhiShift_sct_barrel_m = Monitored::Scalar<int>( "m_modPhiShift_sct_barrel", modPhi + ModPhiShift[layerDisk] );
619 auto modEtaShift_sct_barrel_m = Monitored::Scalar<int>( "m_modEtaShift_sct_barrel", modEta + ModEtaShift[layerDisk] );
620 fill(residualGroup, modPhiShift_sct_barrel_m, modEtaShift_sct_barrel_m, residualX_sct_barrel_m);
621 } // end SCT barrel
622
623 else if(barrelEC==2){//nine SCT endcap disks from 0-8
624 int Nmods = 52;
625 int gap_sct = 10;
626
627 //Common Si plots
628 layerDisk_si_m = 3 + 2 * layerDisk + sctSide;
629 si_eca_resX_m = residualX;
630 si_eca_pullX_m = pullX;
631 fill(residualGroup, layerDisk_si_m, si_eca_resX_m, si_eca_pullX_m);
632
633 //SCT Residual plots
634 auto sct_eca_residualx_m = Monitored::Scalar<float>( "m_sct_eca_residualx", residualX);
635 fill(m_tools[m_sctECAResidualX_2DProf[layerDisk]], modEta_m, modPhi_m, sct_eca_residualx_m);
636 auto sct_eca_pullx_m = Monitored::Scalar<float>( "m_sct_eca_pullx", pullX);
637 fill(residualGroup, sct_eca_residualx_m, sct_eca_pullx_m);
638 if (sctSide == 0) {
639 fill(m_tools[m_sctECA_s0_ResidualX_2DProf[layerDisk]], modEta_m, modPhi_m, sct_eca_residualx_m);
640 } else {
641 fill(m_tools[m_sctECA_s1_ResidualX_2DProf[layerDisk]], modEta_m, modPhi_m, sct_eca_residualx_m);
642 }
643
644 //Residuals vs Eta and Phi
645 auto residualX_sct_eca_m = Monitored::Scalar<float>( "m_residualX_sct_eca", residualX);
646 auto modPhiShift_sct_eca_m = Monitored::Scalar<int>( "m_modPhiShift_sct_eca", modPhi + layerDisk * (gap_sct + Nmods) );
647 fill(residualGroup, modPhiShift_sct_eca_m, residualX_sct_eca_m);
648 } // end SCT end-cap A
649
650 else if(barrelEC==-2){//start SCT end-cap C
651 int Nmods = 52;
652 int gap_sct = 10;
653
654 //Common Si plots
655 layerDisk_si_m = 3 + 2 * layerDisk + sctSide;
656 si_ecc_resX_m = residualX;
657 si_ecc_pullX_m = pullX;
658 fill(residualGroup, layerDisk_si_m, si_ecc_resX_m, si_ecc_pullX_m);
659
660 //SCT Residual plots
661 auto sct_ecc_residualx_m = Monitored::Scalar<float>( "m_sct_ecc_residualx", residualX);
662 fill(m_tools[m_sctECCResidualX_2DProf[layerDisk]], modEta_m, modPhi_m, sct_ecc_residualx_m);
663 auto sct_ecc_pullx_m = Monitored::Scalar<float>( "m_sct_ecc_pullx", pullX);
664 fill(residualGroup, sct_ecc_residualx_m, sct_ecc_pullx_m);
665 if (sctSide == 0) {
666 fill(m_tools[m_sctECC_s0_ResidualX_2DProf[layerDisk]], modEta_m, modPhi_m, sct_ecc_residualx_m);
667 } else {
668 fill(m_tools[m_sctECC_s1_ResidualX_2DProf[layerDisk]], modEta_m, modPhi_m, sct_ecc_residualx_m);
669 }
670
671 //Residuals vs Eta and Phi
672 auto residualX_sct_ecc_m = Monitored::Scalar<float>( "m_residualX_sct_ecc", residualX);
673 auto modPhiShift_sct_ecc_m = Monitored::Scalar<int>( "m_modPhiShift_sct_ecc", modPhi + layerDisk * (gap_sct + Nmods) );
674 fill(residualGroup, modPhiShift_sct_ecc_m, residualX_sct_ecc_m);
675 } // end SCT end-cap C
676 }// end of SCT
677 ++nHits;
678 //++nHitsEvent;
679 }//end of loop on track surfaces
680 } // end of loop on tracks
681
682 ATH_MSG_DEBUG("Number of tracks : "<< nTracks);
683
684 return StatusCode::SUCCESS;
685}
#define ATH_MSG_ERROR(x)
double charge(const T &p)
Definition AtlasPID.h:997
#define AmgSymMatrix(dim)
static Double_t sc
static const uint32_t nHits
const ToolHandle< GenericMonitoringTool > & getGroup(const std::string &name) const
Get a specific monitoring tool from the tool handle array.
SG::ReadHandle< xAOD::EventInfo > GetEventInfo(const EventContext &) const
Return a ReadHandle for an EventInfo object (get run/event numbers, etc.).
ToolHandleArray< GenericMonitoringTool > m_tools
Array of Generic Monitoring Tools.
StatusCode getSiResiduals(const Trk::Track *, const Trk::TrackStateOnSurface *, bool, double *) const
void fillTRTHistograms(int barrel_ec, int layer_or_wheel, int phi_module, float predictR, float hitR, float residualR, float pullR, bool isTubeHit, float trketa, float qpT) const
std::vector< int > m_sct_s1_ResidualX_2DProf
std::vector< int > m_pixResidualYvsEta
std::vector< int > m_pixResidualYvsPhi
std::vector< int > m_pixECResidualY_2DProf
std::vector< int > m_sctECC_s0_ResidualX_2DProf
std::vector< int > m_pixResidualX_2DProf
std::vector< int > m_sctECC_s1_ResidualX_2DProf
std::vector< int > m_sctResidualXvsEta
std::vector< int > m_sctResidualXvsPhi
std::vector< int > m_pixResidualX
std::vector< int > m_pixResidualY_2DProf
std::vector< int > m_pixResidualXvsPhi
std::vector< int > m_sctECA_s0_ResidualX_2DProf
bool trackRequiresRefit(const Trk::Track *) const
std::vector< int > m_pixResidualY
const AtlasDetectorID * m_idHelper
std::vector< int > m_pixECCResidualX
std::vector< int > m_pixResidualXvsEta
std::unique_ptr< Trk::TrackParameters > getUnbiasedTrackParameters(const Trk::Track *, const Trk::TrackStateOnSurface *) const
std::vector< int > m_sctECA_s1_ResidualX_2DProf
std::vector< int > m_sct_s0_ResidualX_2DProf
std::vector< int > m_pixECAResidualX
std::vector< int > m_pixECCResidualY
std::vector< int > m_sctECCResidualX_2DProf
std::vector< int > m_pixECAResidualY
std::vector< int > m_sctECAResidualX_2DProf
std::vector< int > m_pixECResidualX_2DProf
std::vector< int > m_sctResidualX_2DProf
std::vector< int > m_sctResidualX
SG::ReadHandleKey< TrackCollection > m_tracksName
const LocalParameters & localParameters() const
Interface method to get the LocalParameters.
const Amg::MatrixX & localCovariance() const
Interface method to get the localError.
double charge() const
Returns the charge.
double pT() const
Access method for transverse momentum.
Identifier identify() const
return the identifier -extends MeasurementBase
@ Unbiased
RP with track state that has measurement not included.
@ Measurement
This is a measurement, and will at least contain a Trk::MeasurementBase.
int lb
Definition globals.cxx:23
void fill(const ToolHandle< GenericMonitoringTool > &groupHandle, std::vector< std::reference_wrapper< Monitored::IMonitoredVariable > > &&variables) const
Fills a vector of variables to a group by reference.
virtual float lbAverageInteractionsPerCrossing(const EventContext &ctx) const
Calculate the average mu, i.e.
::StatusCode StatusCode
StatusCode definition for legacy code.
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
ParametersT< TrackParametersDim, Charged, PerigeeSurface > Perigee
@ driftRadius
trt, straws
Definition ParamDefs.h:53
@ locX
Definition ParamDefs.h:37
@ locR
Definition ParamDefs.h:44
ParametersBase< TrackParametersDim, Charged > TrackParameters

◆ fillTRTBarrelHistograms()

void IDAlignMonResidualsAlg::fillTRTBarrelHistograms ( int barrel_ec,
int layer_or_wheel,
int phi_module,
float predictR,
float hitR,
float residualR,
float pullR,
bool LRcorrect,
bool isTubeHit,
float trketa ) const
private

Definition at line 816 of file IDAlignMonResidualsAlg.cxx.

816 {
817
818 //Loop over the barrel sides
819 for (unsigned int side = 0; side < 3; ++side) {
820 bool doFill = false;
821 if (!side) doFill = true;
822 else if (side == 1 && barrel_ec == 1) doFill = true;
823 else if (side == 2 && barrel_ec == -1) doFill = true;
824
825 if (!doFill) continue;
826
827 auto trt_b_PredictedR_m = Monitored::Scalar<float>( "m_trt_b_PredictedR", predictR);
828 fill(m_tools[m_trtBPredictedR[side]], trt_b_PredictedR_m);
829 auto trt_b_MeasuredR_m = Monitored::Scalar<float>( "m_trt_b_MeasuredR", hitR);
830 fill(m_tools[m_trtBMeasuredR[side]], trt_b_MeasuredR_m);
831 auto trt_b_residualR_m = Monitored::Scalar<float>( "m_trt_b_residualR", residualR);
832 fill(m_tools[m_trtBResidualR[side]], trt_b_residualR_m);
833 auto trt_b_pullR_m = Monitored::Scalar<float>( "m_trt_b_pullR", pullR);
834 fill(m_tools[m_trtBPullR[side]], trt_b_pullR_m);
835
836 if (!isTubeHit) {
837 auto trt_b_residualR_notube_m = Monitored::Scalar<float>( "m_trt_b_residualR_notube", residualR);
838 fill(m_tools[m_trtBResidualRNoTube[side]], trt_b_residualR_notube_m);
839 auto trt_b_pullR_notube_m = Monitored::Scalar<float>( "m_trt_b_pullR_notube", pullR);
840 fill(m_tools[m_trtBPullRNoTube[side]], trt_b_pullR_notube_m);
841 }
842
843 auto trt_b_lr_m = Monitored::Scalar<float>( "m_trt_b_lr", 0.0);
844 if (LRcorrect && !isTubeHit) trt_b_lr_m = 0.5;
845 if (LRcorrect && isTubeHit) trt_b_lr_m = 1.5;
846 if (!LRcorrect && !isTubeHit) trt_b_lr_m = 2.5;
847 if (!LRcorrect && isTubeHit) trt_b_lr_m = 3.5;
848 fill(m_tools[m_trtBLR[side]], trt_b_lr_m);
849
850 auto trt_b_aveResVsTrackEta_m = Monitored::Scalar<float>( "m_trt_b_aveResVsTrackEta", trketa);
851 auto trt_b_PhiSec_m = Monitored::Scalar<float>( "m_trt_b_PhiSec", phi_module);
852 auto trt_b_lrVsPhiSec_m = Monitored::Scalar<float>( "m_trt_b_lrVsPhiSec", LRcorrect);
853 fill(m_tools[m_trtBResVsEta[side][layer_or_wheel]], trt_b_aveResVsTrackEta_m, trt_b_residualR_m);
854 fill(m_tools[m_trtBResVsPhiSec[side][layer_or_wheel]], trt_b_PhiSec_m, trt_b_residualR_m);
855 trt_b_lrVsPhiSec_m = LRcorrect;
856 fill(m_tools[m_trtBLRVsPhiSec[side][layer_or_wheel]], trt_b_PhiSec_m, trt_b_lrVsPhiSec_m);
857
858 }//Over sides
859
860 return;
861}//fillTRTBarrelHistograms
std::vector< int > m_trtBPredictedR
std::vector< int > m_trtBResidualRNoTube
std::vector< std::vector< int > > m_trtBLRVsPhiSec
std::vector< int > m_trtBMeasuredR
std::vector< std::vector< int > > m_trtBResVsEta
std::vector< std::vector< int > > m_trtBResVsPhiSec
std::vector< int > m_trtBResidualR
std::vector< int > m_trtBPullRNoTube
void doFill(H *hist, W weight, size_t i, const M &m1, const Ms &... m)
Perform (arbitrary dimension) histogram fill with weight.

◆ fillTRTEndcapHistograms()

void IDAlignMonResidualsAlg::fillTRTEndcapHistograms ( int barrel_ec,
int layer_or_wheel,
int phi_module,
float predictR,
float hitR,
float residualR,
float pullR,
bool LRcorrect,
bool isTubeHit,
float trketa,
float qpT ) const
private

Definition at line 863 of file IDAlignMonResidualsAlg.cxx.

863 {
864 for (unsigned int endcap = 0; endcap < 2; ++endcap) {
865 bool doFill = false;
866 if (!endcap && barrel_ec == 2) doFill = true;
867 else if (endcap && barrel_ec == -2) doFill = true;
868
869 if (!doFill) continue;
870
871 auto trt_ec_PredictedR_m = Monitored::Scalar<float>( "m_trt_ec_PredictedR", predictR);
872 fill(m_tools[m_trtECPredictedR[endcap]], trt_ec_PredictedR_m);
873 auto trt_ec_MeasuredR_m = Monitored::Scalar<float>( "m_trt_ec_MeasuredR", hitR);
874 fill(m_tools[m_trtECMeasuredR[endcap]], trt_ec_MeasuredR_m);
875 auto trt_ec_residualR_m = Monitored::Scalar<float>( "m_trt_ec_residualR", residualR);
876 fill(m_tools[m_trtECResidualR[endcap]], trt_ec_residualR_m);
877 auto trt_ec_pullR_m = Monitored::Scalar<float>( "m_trt_ec_pullR", pullR);
878 fill(m_tools[m_trtECPullR[endcap]], trt_ec_pullR_m);
879
880 //Filling TRT 2Dprof histograms
881 auto layer_or_wheel_m = Monitored::Scalar<float>("m_layer_or_wheel", layer_or_wheel);
882 auto pT_m = Monitored::Scalar<float>( "m_pT", qpT );
883 fill(m_tools[m_trtECResVsPt_2DProf[endcap]], layer_or_wheel_m, pT_m, trt_ec_residualR_m);
884
885 if (!isTubeHit) {
886 auto trt_ec_pullR_notube_m = Monitored::Scalar<float>( "m_trt_ec_pullR_notube", pullR);
887 fill(m_tools[m_trtECPullRNoTube[endcap]], trt_ec_pullR_notube_m);
888 auto trt_ec_residualR_notube_m = Monitored::Scalar<float>( "m_trt_ec_residualR_notube", residualR);
889 fill(m_tools[m_trtECResidualRNoTube[endcap]], trt_ec_residualR_notube_m);
890 }
891
892 auto trt_ec_lr_m = Monitored::Scalar<float>( "m_trt_ec_lr", 0.0);
893 if (LRcorrect && !isTubeHit) trt_ec_lr_m = 0.5;
894 else if (LRcorrect && isTubeHit) trt_ec_lr_m = 1.5;
895 else if (!LRcorrect && !isTubeHit) trt_ec_lr_m = 2.5;
896 else if (!LRcorrect && isTubeHit) trt_ec_lr_m = 3.5;
897 fill(m_tools[m_trtECLR[endcap]], trt_ec_lr_m);
898
899 auto trt_ec_aveResVsTrackEta_m = Monitored::Scalar<float>( "m_trt_ec_aveResVsTrackEta", trketa);
900 fill(m_tools[m_trtECResVsEta[endcap]], trt_ec_aveResVsTrackEta_m, trt_ec_residualR_m);
901
902 auto trt_ec_phi_m = Monitored::Scalar<float>( "m_trt_ec_phi", phi_module);
903 fill(m_tools[m_trtECResVsPhiSec[endcap]], trt_ec_phi_m, trt_ec_residualR_m);
904 auto trt_ec_lrVsPhiSec_m = Monitored::Scalar<float>( "m_trt_ec_lrVsPhiSec", LRcorrect);
905 fill(m_tools[m_trtECLRVsPhiSec[endcap]], trt_ec_phi_m, trt_ec_lrVsPhiSec_m);
906 }
907
908 return;
909}
std::vector< int > m_trtECResVsPt_2DProf
std::vector< int > m_trtECResVsPhiSec
std::vector< int > m_trtECPredictedR
std::vector< int > m_trtECResidualR
std::vector< int > m_trtECMeasuredR
std::vector< int > m_trtECLRVsPhiSec
std::vector< int > m_trtECResidualRNoTube
std::vector< int > m_trtECResVsEta
std::vector< int > m_trtECPullRNoTube

◆ fillTRTHistograms()

void IDAlignMonResidualsAlg::fillTRTHistograms ( int barrel_ec,
int layer_or_wheel,
int phi_module,
float predictR,
float hitR,
float residualR,
float pullR,
bool isTubeHit,
float trketa,
float qpT ) const
private

Filling EndCapA histograms

Definition at line 778 of file IDAlignMonResidualsAlg.cxx.

778 {
779 bool LRcorrect = (predictR * hitR > 0);
780
781 //Need to correct the TRT residual on the C-side.
782 if (barrel_ec == -1) {
783 residualR *= -1;
784 }
785
786 if (barrel_ec == 1 || barrel_ec == -1)
788 , layer_or_wheel
789 , phi_module
790 , predictR
791 , hitR
792 , residualR
793 , pullR
794 , LRcorrect
795 , isTubeHit
796 , trketa);
797
799 if (barrel_ec == 2 || barrel_ec == -2)
801 , layer_or_wheel
802 , phi_module
803 , predictR
804 , hitR
805 , residualR
806 , pullR
807 , LRcorrect
808 , isTubeHit
809 , trketa
810 , qpT);
811
812 return;
813}
void fillTRTEndcapHistograms(int barrel_ec, int layer_or_wheel, int phi_module, float predictR, float hitR, float residualR, float pullR, bool LRcorrect, bool isTubeHit, float trketa, float qpT) const
void fillTRTBarrelHistograms(int barrel_ec, int layer_or_wheel, int phi_module, float predictR, float hitR, float residualR, float pullR, bool LRcorrect, bool isTubeHit, float trketa) const

◆ filterPassed()

virtual bool AthCommonAlgorithm< Gaudi::Algorithm >::filterPassed ( const EventContext & ctx) const
inlinevirtualinherited

Get filter decision:

Definition at line 93 of file AthCommonAlgorithm.h.

93 {
94 return execState( ctx ).filterPassed();
95 }
virtual bool filterPassed(const EventContext &ctx) const
Get filter decision:

◆ GetEventInfo()

SG::ReadHandle< xAOD::EventInfo > AthMonitorAlgorithm::GetEventInfo ( const EventContext & ctx) const
inherited

Return a ReadHandle for an EventInfo object (get run/event numbers, etc.).

Parameters
ctxEventContext for the event
Returns
a SG::ReadHandle<xAOD::EventInfo>

Definition at line 111 of file AthMonitorAlgorithm.cxx.

111 {
112 return SG::ReadHandle<xAOD::EventInfo>(m_EventInfoKey, ctx);
113}
SG::ReadHandleKey< xAOD::EventInfo > m_EventInfoKey
Key for retrieving EventInfo from StoreGate.

◆ getGroup()

const ToolHandle< GenericMonitoringTool > & AthMonitorAlgorithm::getGroup ( const std::string & name) const
inherited

Get a specific monitoring tool from the tool handle array.

Finds a specific GenericMonitoringTool instance from the list of monitoring tools (a ToolHandleArray). Throws a FATAL warning if the object found is empty.

Parameters
namestring name of the desired tool
Returns
reference to the desired monitoring tool

Definition at line 168 of file AthMonitorAlgorithm.cxx.

168 {
169 // get the pointer to the tool, and check that it exists
170 auto idx = m_toolLookupMap.find(name);
171 //Check if the tool exists in the map
172 if (ATH_LIKELY(idx != m_toolLookupMap.end())) {
173 return m_tools[idx->second];
174 }
175 else {
176 //Check if the map is empty
177 if (m_toolLookupMap.empty()) {
178 ATH_MSG_FATAL("The m_toolLookupMap is empty. The tool " << name << " cannot be found in an empty map.");
179 return m_dummy;
180 }
181 //If the map is not empty and the tool was not found, print a fatal error
182 if (!m_toolLookupMap.empty()) {
183 std::string available = std::accumulate(
184 m_toolLookupMap.begin(), m_toolLookupMap.end(), std::string(""),
185 [](const std::string& s, auto h) { return s + "," + h.first; });
186 ATH_MSG_FATAL("The tool " << name << " could not be found in the tool array of the "
187 << "monitoring algorithm " << m_name << ". This probably reflects a discrepancy between "
188 << "your python configuration and c++ filling code. Note: your available groups are {"
189 << available << "}.");
190
191 return m_dummy;
192 }
193 if (!isInitialized()) {
195 "It seems that the AthMonitorAlgorithm::initialize was not called "
196 "in derived class initialize method, group name: " << name);
197 }
198 }
199 return m_dummy;
200}
#define ATH_MSG_FATAL(x)
#define ATH_LIKELY(x)
std::unordered_map< std::string, size_t > m_toolLookupMap
const ToolHandle< GenericMonitoringTool > m_dummy

◆ getSiResiduals()

StatusCode IDAlignMonResidualsAlg::getSiResiduals ( const Trk::Track * track,
const Trk::TrackStateOnSurface * tsos,
bool unBias,
double * results ) const
private

Definition at line 688 of file IDAlignMonResidualsAlg.cxx.

689{
690 if (!m_doPulls) return StatusCode::FAILURE;
691
692 StatusCode sc = StatusCode::SUCCESS;
693
694 double residualX = -9999.0;
695 double residualY = -9999.0;
696 double pullX = -9999.0;
697 double pullY = -9999.0;
698
699 //extract the hit object from the tsos
700 const Trk::MeasurementBase* mesh =tsos->measurementOnTrack();
701 const Trk::RIO_OnTrack* hit = dynamic_cast <const Trk::RIO_OnTrack*>(mesh);
702
703 //get the unbiased track parameters (can fail if no MeasuredTrackParameters exists)
704 std::unique_ptr <Trk::TrackParameters> trackParameterUnbiased{};
705 if(unBias) trackParameterUnbiased = getUnbiasedTrackParameters(track,tsos);
706
707 //updator can fail in defining unbiased parameters, in which case we use biased
708 std::unique_ptr <Trk::TrackParameters> trackParameterForResiduals{};
709 if(trackParameterUnbiased){
710 trackParameterForResiduals = std:: move(trackParameterUnbiased);
711 }
712 else {
713 //use the original biased track parameters
714 std::unique_ptr <Trk::TrackParameters> uTrkPtr = tsos->trackParameters()->uniqueClone();
715 trackParameterForResiduals = std::move(uTrkPtr);
716 }
717
718 if (!m_residualPullCalculator.empty()) {
719
720 if (hit && trackParameterForResiduals) {
721
722 ATH_MSG_DEBUG(" got hit and track parameters ");
723
724 std::optional<Trk::ResidualPull> residualPull = std::nullopt;
725 if(unBias) residualPull = m_residualPullCalculator->residualPull(mesh, trackParameterForResiduals.get(), Trk::ResidualPull::Unbiased);
726 else residualPull = m_residualPullCalculator->residualPull(mesh, trackParameterForResiduals.get(), Trk::ResidualPull::Biased);
727
728 ATH_MSG_DEBUG(" got hit and track parameters...done ");
729 if (residualPull) {
730
731 ATH_MSG_DEBUG(" got residual pull object");
732 residualX = residualPull->residual()[Trk::loc1];
733 if(residualPull->isPullValid()) pullX = residualPull->pull()[Trk::loc1];
734 else {
735 ATH_MSG_DEBUG("ResidualPullCalculator finds invalid X Pull!!!");
736 sc = StatusCode::FAILURE;
737 }
738
739 if (residualPull->dimension() >= 2){
740
741 ATH_MSG_DEBUG(" residualPull dim >= 2");
742 residualY = residualPull->residual()[Trk::loc2];
743
744 ATH_MSG_DEBUG(" residual Y = " << residualY);
745 if(residualPull->isPullValid()) pullY = residualPull->pull()[Trk::loc2];
746 else {
747 ATH_MSG_DEBUG("ResidualPullCalculator finds invalid Y Pull!!!");
748 sc = StatusCode::FAILURE;
749 }
750 }
751 }
752 else {
753 ATH_MSG_DEBUG("ResidualPullCalculator failed!");
754 sc = StatusCode::FAILURE;
755 }
756 }
757 }
758
759 // for SCT modules the residual pull calculator only finds the (rotated) Rphi residual
760 // for each of the SCT sides; residualPull->dimension()==1 always.
761
762 //std::pair <double, double> result(residualX, residualY);
763 results[0] = residualX;
764 results[1] = residualY;
765 results[2] = pullX;
766 results[3] = pullY;
767
768 if(pullX!=pullX || pullY!=pullY){
769 ATH_MSG_DEBUG("ResidualPullCalculator finds Pull=NAN!!!");
770 sc = StatusCode::FAILURE;
771 }
772
773 return sc;
774
775}
std::unique_ptr< ParametersBase< DIM, T > > uniqueClone() const
clone method for polymorphic deep copy returning unique_ptr; it is not overriden, but uses the existi...
@ Biased
RP with track state including the hit.
const MeasurementBase * measurementOnTrack() const
returns MeasurementBase const overload
const TrackParameters * trackParameters() const
return ptr to trackparameters const overload
@ loc2
generic first and second local coordinate
Definition ParamDefs.h:35
@ loc1
Definition ParamDefs.h:34

◆ getTrigDecisionTool()

const ToolHandle< Trig::TrigDecisionTool > & AthMonitorAlgorithm::getTrigDecisionTool ( ) const
inherited

Get the trigger decision tool member.

The trigger decision tool is used to check whether a specific trigger is passed by an event.

Returns
m_trigDecTool

Definition at line 203 of file AthMonitorAlgorithm.cxx.

203 {
204 return m_trigDecTool;
205}

◆ getUnbiasedTrackParameters()

std::unique_ptr< Trk::TrackParameters > IDAlignMonResidualsAlg::getUnbiasedTrackParameters ( const Trk::Track * trkPnt,
const Trk::TrackStateOnSurface * tsos ) const
private

Definition at line 912 of file IDAlignMonResidualsAlg.cxx.

913{
914
915 std::unique_ptr <Trk::TrackParameters> TrackParams{};
916 std::unique_ptr <Trk::TrackParameters> UnbiasedTrackParams{};
917 std::unique_ptr <Trk::TrackParameters> PropagatedTrackParams{};
918 std::unique_ptr <Trk::TrackParameters> OtherSideUnbiasedTrackParams{};
919
920 //controls if the SCT residuals will be 'truly' unbiased - removing also the opposite side hit.
921 bool trueUnbiased = true;
922
923 Identifier surfaceID;
924
925
926 ATH_MSG_VERBOSE("original track parameters: " << *(tsos->trackParameters()) );
927 ATH_MSG_VERBOSE("Trying to unbias track parameters.");
928
929 const Trk::RIO_OnTrack* hitOnTrack = dynamic_cast <const Trk::RIO_OnTrack*>(tsos->measurementOnTrack());
930
931 if (hitOnTrack != nullptr) surfaceID = hitOnTrack->identify();
932
933
934 // if SCT Hit and TrueUnbiased then remove other side hit first
935 if (surfaceID.is_valid() && trueUnbiased && m_idHelper->is_sct(surfaceID)) { //there's no TrueUnbiased for non-SCT (pixel) hits)
936 ATH_MSG_VERBOSE("Entering True Unbiased loop.");
937
938 // check if other module side was also hit and try to remove other hit as well
939 const Trk::TrackStateOnSurface* OtherModuleSideHit(nullptr);
940 const Identifier waferID = m_sctID->wafer_id(surfaceID);
941 const IdentifierHash waferHash = m_sctID->wafer_hash(waferID);
942 IdentifierHash otherSideHash;
943 m_sctID->get_other_side(waferHash, otherSideHash);
944 const Identifier OtherModuleSideID = m_sctID->wafer_id(otherSideHash);
945
946 for (const Trk::TrackStateOnSurface* TempTsos : *trkPnt->trackStateOnSurfaces()) {
947
948 const Trk::RIO_OnTrack* TempHitOnTrack = dynamic_cast <const Trk::RIO_OnTrack*>(TempTsos->measurementOnTrack());
949 if (TempHitOnTrack != nullptr) {
950 if (m_sctID->wafer_id(TempHitOnTrack->identify()) == OtherModuleSideID) {
951 ATH_MSG_VERBOSE("True unbiased residual. Removing OtherModuleSide Hit " << m_idHelper->show_to_string(OtherModuleSideID,nullptr,'/') );
952 OtherModuleSideHit = TempTsos;
953 }
954 }
955 }
956
957 if (OtherModuleSideHit) {
958 const Trk::TrackParameters* OMSHmeasuredTrackParameter = OtherModuleSideHit->trackParameters();
959 const AmgSymMatrix(5)* OMSHmeasuredTrackParameterCov = OMSHmeasuredTrackParameter ? OMSHmeasuredTrackParameter->covariance() : nullptr;
960
961 // check that the hit on the other module side has measuredtrackparameters, otherwise it cannot be removed from the track
962 if (OMSHmeasuredTrackParameterCov) {
963 ATH_MSG_VERBOSE("OtherSideTrackParameters: " << *(OtherModuleSideHit->trackParameters()) );
964 OtherSideUnbiasedTrackParams = m_iUpdator->removeFromState(*(OtherModuleSideHit->trackParameters()),
965 OtherModuleSideHit->measurementOnTrack()->localParameters(),
966 OtherModuleSideHit->measurementOnTrack()->localCovariance());
967
968 if (OtherSideUnbiasedTrackParams) {
969 ATH_MSG_VERBOSE("Unbiased OtherSideTrackParameters: " << *OtherSideUnbiasedTrackParams);
970
971
972 const Trk::Surface* TempSurface = &(OtherModuleSideHit->measurementOnTrack()->associatedSurface());
973
974 const Trk::MagneticFieldProperties* TempField = nullptr;
975 if (TempSurface)
976 {
977 ATH_MSG_VERBOSE("After OtherSide surface call. Surface exists");
978 if (TempSurface->associatedLayer())
979 {
980 ATH_MSG_VERBOSE("TempSurface->associatedLayer() exists");
981 if(TempSurface->associatedLayer()->enclosingTrackingVolume())
982 {
983 ATH_MSG_VERBOSE("TempSurface->associatedLayer()->enclosingTrackingVolume exists");
984
985 TempField = dynamic_cast <const Trk::MagneticFieldProperties*>(TempSurface->associatedLayer()->enclosingTrackingVolume());
986 ATH_MSG_VERBOSE("After MagneticFieldProperties cast");
987 ATH_MSG_VERBOSE("Before other side unbiased propagation");
988
989 if (TempSurface->associatedLayer() && TempField) PropagatedTrackParams = m_propagator->propagate(
990 Gaudi::Hive::currentContext(),
991 *OtherSideUnbiasedTrackParams,
993 Trk::anyDirection, false,
994 *TempField,
996
997 } else {
998 ATH_MSG_VERBOSE("TempSurface->associatedLayer()->enclosingTrackingVolume does not exist");
999 }
1000 } else {
1001 ATH_MSG_VERBOSE("TempSurface->associatedLayer() does not exist");
1002 }
1003 } else {
1004 ATH_MSG_VERBOSE("After OtherSide surface call. Surface does not exist");
1005 }
1006
1007 ATH_MSG_VERBOSE("After other side unbiased propagation");
1008 if (PropagatedTrackParams) {
1009 ATH_MSG_VERBOSE("Propagated Track Parameters: " << *PropagatedTrackParams);
1010 } else {
1011 ATH_MSG_DEBUG("Propagation of unbiased OtherSideParameters failed");
1012 }
1013 } else {
1014 ATH_MSG_DEBUG("RemoveFromState did not work for OtherSideParameters");
1015 }
1016 } else {
1017 ATH_MSG_VERBOSE("No OtherModuleSideHit Measured Track Parameters found");
1018 }
1019 } else {
1020 ATH_MSG_VERBOSE("No OtherModuleSideHit found");
1021 }
1022 }
1023
1024 // if propagation failed or no TrueUnbiased or no SCT then use original TrackParams
1025 if (!PropagatedTrackParams) {
1026 std::unique_ptr <Trk::TrackParameters> uTrkPtr = tsos->trackParameters()->uniqueClone();
1027 PropagatedTrackParams = std::move(uTrkPtr);
1028 }
1029
1030 UnbiasedTrackParams =
1032 ->removeFromState(*PropagatedTrackParams,
1035
1036 if (UnbiasedTrackParams) {
1037 if(surfaceID.is_valid() ) ATH_MSG_VERBOSE("Unbiased residual. Removing original Hit " << m_idHelper->show_to_string(surfaceID,nullptr,'/') );
1038 ATH_MSG_VERBOSE("Unbiased Trackparameters: " << *UnbiasedTrackParams);
1039
1040 TrackParams = std::move(UnbiasedTrackParams);
1041
1042 } else { // Unbiasing went awry.
1043 ATH_MSG_WARNING("RemoveFromState did not work, using original TrackParameters");
1044
1045 std::unique_ptr <Trk::TrackParameters> uTrkPtr = tsos->trackParameters()->uniqueClone();
1046 TrackParams = std::move(uTrkPtr);
1047 }
1048
1049 return TrackParams;
1050
1051}
#define ATH_MSG_VERBOSE(x)
bool is_valid() const
Check if id is in a valid state.
const TrackingVolume * enclosingTrackingVolume() const
get the confining TrackingVolume
virtual const Surface & associatedSurface() const =0
Interface method to get the associated Surface.
const Trk::Layer * associatedLayer() const
return the associated Layer
const Trk::TrackStates * trackStateOnSurfaces() const
return a pointer to a const DataVector of const TrackStateOnSurfaces.
@ anyDirection

◆ initialize()

StatusCode IDAlignMonResidualsAlg::initialize ( )
overridevirtual

initialize

Returns
StatusCode

Get TRTCalDbTool

Reimplemented from AthMonitorAlgorithm.

Definition at line 71 of file IDAlignMonResidualsAlg.cxx.

72{
73 //initialize tools and services
74 ATH_MSG_DEBUG("Calling initialize() to setup tools/services");
76 if (sc.isFailure()) {
77 ATH_MSG_WARNING("Failed to initialize tools/services!");
78 return StatusCode::SUCCESS;
79 }
80 else
81 ATH_MSG_DEBUG("Successfully initialized tools/services");
82
84 ATH_CHECK( m_trtcaldbTool.retrieve() );
85
86 ATH_CHECK( m_tracksName.initialize() );
87 ATH_CHECK( m_tracksKey.initialize() );
88
101 m_pixECResidualX_2DProf = Monitored::buildToolMap<int>(m_tools, "PixResidualXEC_2DProf", 2);
102 m_pixECResidualY_2DProf = Monitored::buildToolMap<int>(m_tools, "PixResidualYEC_2DProf", 2);
139
140 ATH_MSG_DEBUG("initialize() -- completed --");
142}
#define ATH_CHECK
Evaluate an expression and check for errors.
virtual StatusCode initialize() override
initialize
SG::ReadHandleKey< TrackCollection > m_tracksKey
std::vector< V > buildToolMap(const ToolHandleArray< GenericMonitoringTool > &tools, const std::string &baseName, int nHist)
Builds an array of indices (base case).

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ isClonable()

virtual bool AthCommonAlgorithm< Gaudi::Algorithm >::isClonable ( ) const
inlineoverridevirtualinherited

Specify if the algorithm is clonable.

Only relevant for non-reentrant algorithms. Actual number of clones needs to be set via the "Cardinality" property.

Reimplemented in AFP_DigiTop, AlgB, AlgT, BCM_Digitization, CscDigitBuilder, CscDigitToCscRDO, G4AtlasAlg, G4RunAlg, HGTD_Digitization, HiveAlgBase, InDet::GNNSeedingTrackMaker, InDet::SCT_Clusterization, InDet::SiSPGNNTrackMaker, InDet::SiSPSeededTrackFinder, InDet::SiTrackerSpacePointFinder, ISF::SimKernelMT, ITk::StripDigitization, ITkPixelCablingAlg, ITkStripCablingAlg, LArHitEMapMaker, LArTTL1Maker, LUCID_DigiTop, LVL1::L1TopoSimulation, MergeCalibHits, MergeGenericMuonSimHitColl, MergeHijingPars, MergeMcEventCollection, MergeTrackRecordCollection, MergeTruthJets, MergeTruthParticles, MuonDigitizer, PileUpMTAlg, PixelDigitization, RoIBResultToxAOD, SCT_ByteStreamErrorsTestAlg, SCT_CablingCondAlgFromCoraCool, SCT_CablingCondAlgFromText, SCT_ConditionsParameterTestAlg, SCT_ConditionsSummaryTestAlg, SCT_ConfigurationConditionsTestAlg, SCT_Digitization, SCT_FlaggedConditionTestAlg, SCT_LinkMaskingTestAlg, SCT_MajorityConditionsTestAlg, SCT_ModuleVetoTestAlg, SCT_MonitorConditionsTestAlg, SCT_PrepDataToxAOD, SCT_RawDataToxAOD, SCT_ReadCalibChipDataTestAlg, SCT_ReadCalibDataTestAlg, SCT_RODVetoTestAlg, SCT_SensorsTestAlg, SCT_SiliconConditionsTestAlg, SCT_StripVetoTestAlg, SCT_TdaqEnabledTestAlg, SCT_TestCablingAlg, SCTEventFlagWriter, SCTRawDataProvider, SCTSiLorentzAngleTestAlg, SCTSiPropertiesTestAlg, SGInputLoader, Simulation::BeamEffectsAlg, TileHitVecToCnt, TileMuonFitter, TilePulseForTileMuonReceiver, TileRawChannelMaker, TRTDigitization, and ZDC_DigiTop.

Definition at line 68 of file AthCommonAlgorithm.h.

68 {
69 return true;
70 }

◆ msg()

MsgStream & AthCommonMsg< Gaudi::Algorithm >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24 {
25 return this->msgStream();
26 }

◆ msgLvl()

bool AthCommonMsg< Gaudi::Algorithm >::msgLvl ( const MSG::Level lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30 {
31 return this->msgLevel(lvl);
32 }

◆ outputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ parseList()

StatusCode AthMonitorAlgorithm::parseList ( const std::string & line,
std::vector< std::string > & result ) const
virtualinherited

Parse a string into a vector.

The input string is a single long string of all of the trigger names. It parses this string and turns it into a vector, where each element is one trigger or trigger category.

Parameters
lineThe input string.
resultThe parsed output vector of strings.
Returns
StatusCode

Definition at line 350 of file AthMonitorAlgorithm.cxx.

350 {
351 std::string item;
352 std::stringstream ss(line);
353
354 ATH_MSG_DEBUG( "AthMonitorAlgorithm::parseList()" );
355
356 while ( std::getline(ss, item, ',') ) {
357 std::stringstream iss(item); // remove whitespace
358 iss >> item;
359 result.push_back(item);
360 }
361
362 return StatusCode::SUCCESS;
363}
static Double_t ss

◆ renounce()

std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::renounce ( T & h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381 {
382 h.renounce();
384 }
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ setFilterPassed()

virtual void AthCommonAlgorithm< Gaudi::Algorithm >::setFilterPassed ( bool state,
const EventContext & ctx ) const
inlinevirtualinherited

Set filter decision:

Reimplemented in AthFilterAlgorithm.

Definition at line 99 of file AthCommonAlgorithm.h.

99 {
101 }
virtual void setFilterPassed(bool state, const EventContext &ctx) const
Set filter decision:

◆ setupTools()

StatusCode IDAlignMonResidualsAlg::setupTools ( )
private

Definition at line 1054 of file IDAlignMonResidualsAlg.cxx.

1055{
1056 //initializing tools
1057
1058 ATH_MSG_DEBUG("In setupTools()");
1059
1060 StatusCode sc;
1061 //Get the PIX manager from the detector store
1063 ATH_MSG_DEBUG("Initialized PixelManager");
1064
1065 //Get the SCT manager from the detector store
1067 ATH_MSG_DEBUG("Initialized SCTManager");
1068
1069 ATH_CHECK(detStore()->retrieve(m_pixelID, "PixelID"));
1070 ATH_MSG_DEBUG("Initialized PixelIDHelper");
1071
1072 ATH_CHECK(detStore()->retrieve(m_sctID, "SCT_ID"));
1073 ATH_MSG_DEBUG("Initialized SCTIDHelper");
1074
1075 ATH_CHECK(detStore()->retrieve(m_trtID, "TRT_ID"));
1076 ATH_MSG_DEBUG("Initialized TRTIDHelper");
1077
1078 //ID Helper
1079 ATH_CHECK(detStore()->retrieve(m_idHelper, "AtlasID"));
1080
1081 ATH_CHECK(m_iUpdator.retrieve());
1082 ATH_MSG_DEBUG("Retrieved iUpdator tool " << m_iUpdator);
1083
1084 if (m_propagator.retrieve().isFailure()) {
1085 ATH_MSG_WARNING("Can not retrieve Propagator tool of type " << m_propagator.typeAndName());
1086 return StatusCode::FAILURE;
1087 } else ATH_MSG_INFO("Retrieved tool " << m_propagator.typeAndName());
1088
1089 if (m_trackSelection.retrieve().isFailure()) {
1090 ATH_MSG_WARNING("Can not retrieve TrackSelection tool of type " << m_trackSelection.typeAndName());
1091 return StatusCode::FAILURE;
1092 } else ATH_MSG_INFO("Retrieved tool " << m_trackSelection.typeAndName());;
1093
1094 if (m_residualPullCalculator.empty()) {
1095 ATH_MSG_DEBUG("No residual/pull calculator for general hit residuals configured.");
1096 ATH_MSG_DEBUG("It is recommended to give R/P calculators to the det-specific tool handle lists then.");
1097 m_doPulls = false;
1098 ATH_CHECK(m_residualPullCalculator.retrieve( DisableTool{!m_doPulls} ));
1099 } else if (m_residualPullCalculator.retrieve().isFailure()) {
1100 ATH_MSG_WARNING("Could not retrieve "<< m_residualPullCalculator << " (to calculate residuals and pulls) ");
1101 m_doPulls = false;
1102
1103 } else {
1104 ATH_MSG_DEBUG("Generic hit residuals&pulls will be calculated in one or both available local coordinates");
1105 m_doPulls = true;
1106 }
1107
1108 if (m_hitQualityTool.empty()) {
1109 ATH_MSG_DEBUG("No hit quality tool configured - not hit quality cuts will be imposed");
1110 m_doHitQuality = false;
1111 ATH_CHECK(m_hitQualityTool.retrieve( DisableTool{!m_doHitQuality} ));
1112 } else if (m_hitQualityTool.retrieve().isFailure()) {
1113 ATH_MSG_WARNING("Could not retrieve " << m_hitQualityTool << " to apply hit quality cuts to Si hits");
1114 m_doHitQuality = false;
1115 } else {
1116 ATH_MSG_DEBUG("Hit quality tool setup - hit quality cuts will be applied to Si hits");
1117 m_doHitQuality = true;
1118 }
1119
1120
1121 return StatusCode::SUCCESS;
1122}
#define ATH_MSG_INFO(x)
const ServiceHandle< StoreGateSvc > & detStore() const
const InDetDD::SCT_DetectorManager * m_SCT_Mgr
const InDetDD::PixelDetectorManager * m_PIX_Mgr

◆ sysExecute()

StatusCode AthCommonAlgorithm< Gaudi::Algorithm >::sysExecute ( const EventContext & ctx)
overridevirtualinherited

Execute an algorithm.

We override this in order to work around an issue with the Algorithm base class storing the event context in a member variable that can cause crashes in MT jobs.

Reimplemented in AthAnalysisAlgorithm.

Definition at line 80 of file AthCommonAlgorithm.cxx.

41{
42 return BaseAlg::sysExecute (ctx);
43}

◆ sysInitialize()

StatusCode AthCommonAlgorithm< Gaudi::Algorithm >::sysInitialize ( )
overridevirtualinherited

Override sysInitialize.

Override sysInitialize from the base class.

Loop through all output handles, and if they're WriteCondHandles, automatically register them and this Algorithm with the CondSvc

Scan through all outputHandles, and if they're WriteCondHandles, register them with the CondSvc

Reimplemented from AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >.

Reimplemented in AthAnalysisAlgorithm, AthFilterAlgorithm, AthHistogramAlgorithm, HypoBase, InputMakerBase, and PyAthena::Alg.

Definition at line 60 of file AthCommonAlgorithm.cxx.

71 {
73
74 if (sc.isFailure()) {
75 return sc;
76 }
77
78 ServiceHandle<ICondSvc> cs("CondSvc",name());
79 for (auto h : outputHandles()) {
80 if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
81 // do this inside the loop so we don't create the CondSvc until needed
82 if ( cs.retrieve().isFailure() ) {
83 ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
85 }
86 if (cs->regHandle(this,*h).isFailure()) {
88 ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
89 << " with CondSvc");
90 }
91 }
92 }
93 return sc;
94}
virtual StatusCode sysInitialize() override
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ trackRequiresRefit()

bool IDAlignMonResidualsAlg::trackRequiresRefit ( const Trk::Track * track) const
private

Definition at line 1125 of file IDAlignMonResidualsAlg.cxx.

1126{
1127
1128 // Checks to see if any of the measurements on track do not have track parameters associated
1129 // (as happens for certain track collections in e.g. ESD)
1130 // If this is the case we cannot define residuals and track needs to be refitted (return true)
1131
1132 bool refitTrack = false;
1133
1134 int nHits = 0;
1135 int nHitsNoParams = 0;
1136
1137 ATH_MSG_DEBUG("Testing track to see if requires refit...");
1138
1139 for (const Trk::TrackStateOnSurface* tsos : *track->trackStateOnSurfaces()) {
1140
1141 if(tsos == nullptr) continue;
1142
1143 //skipping outliers
1144 if(!tsos->type(Trk::TrackStateOnSurface::Measurement)) continue;
1145
1146 const Trk::MeasurementBase* mesh =tsos->measurementOnTrack();
1147 if (mesh==nullptr) continue;
1148 const Trk::RIO_OnTrack* hit = dynamic_cast <const Trk::RIO_OnTrack*>(mesh);
1149 if (hit==nullptr) continue;
1150
1151 ++nHits;
1152
1153 const Trk::TrackParameters* trackParameter = tsos->trackParameters();
1154 if(trackParameter==nullptr) ++nHitsNoParams; //if no TrackParameters for TSOS we cannot define residuals
1155
1156 }
1157
1158 ATH_MSG_DEBUG("Total nhits on track (excluding outliers) = " << nHits << ", nhits without trackparameters = " << nHitsNoParams);
1159
1160 if(nHitsNoParams>0) {
1161 refitTrack = true;
1162 ATH_MSG_DEBUG("Track Requires refit to get residuals!!!");
1163 }
1164
1165 return refitTrack;
1166}

◆ trigChainsArePassed()

bool AthMonitorAlgorithm::trigChainsArePassed ( const std::vector< std::string > & vTrigNames) const
inherited

Check whether triggers are passed.

For the event, use the trigger decision tool to check that at least one of the triggers listed in the supplied vector is passed.

Parameters
vTrigNamesList of trigger names.
Returns
If empty input, default to true. If at least one trigger is specified, returns whether at least one trigger was passed.

Definition at line 208 of file AthMonitorAlgorithm.cxx.

208 {
209
210
211 // If no triggers were given, return true.
212 if (vTrigNames.empty()) return true;
213
214
215 // Trigger: Check if this Algorithm is being run as an Express Stream job.
216 // Events are entering the express stream are chosen randomly, and by chain,
217 // Hence an additional check should be aplied to see if the chain(s)
218 // monitored here are responsible for the event being selected for
219 // the express stream.
220
221 const auto group = m_trigDecTool->getChainGroup(vTrigNames);
223 const auto passedBits = m_trigDecTool->isPassedBits(group);
224 bool expressPass = passedBits & TrigDefs::Express_passed; //bitwise AND
225 if(!expressPass) {
226 return false;
227 }
228 }
229
230 // monitor the event if any of the chains in the chain group passes the event.
231 return group->isPassed();
232
233}
Gaudi::Property< bool > m_enforceExpressTriggers

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::updateVHKA ( Gaudi::Details::PropertyBase & )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308 {
309 // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310 // << " size: " << m_vhka.size() << endmsg;
311 for (auto &a : m_vhka) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }

Member Data Documentation

◆ m_applyTrkSel

bool IDAlignMonResidualsAlg::m_applyTrkSel {}
private

Definition at line 92 of file IDAlignMonResidualsAlg.h.

92{};

◆ m_checkrate

int IDAlignMonResidualsAlg::m_checkrate {}
private

Definition at line 90 of file IDAlignMonResidualsAlg.h.

90{};

◆ m_dataType

AthMonitorAlgorithm::DataType_t AthMonitorAlgorithm::m_dataType
protectedinherited

Instance of the DataType_t enum.

Definition at line 356 of file AthMonitorAlgorithm.h.

◆ m_dataTypeStr

Gaudi::Property<std::string> AthMonitorAlgorithm::m_dataTypeStr {this,"DataType","userDefined"}
protectedinherited

DataType string pulled from the job option and converted to enum.

Definition at line 358 of file AthMonitorAlgorithm.h.

358{this,"DataType","userDefined"};

◆ m_defaultLBDuration

Gaudi::Property<float> AthMonitorAlgorithm::m_defaultLBDuration {this,"DefaultLBDuration",60.}
protectedinherited

Default duration of one lumi block.

Definition at line 365 of file AthMonitorAlgorithm.h.

365{this,"DefaultLBDuration",60.};

◆ m_detailLevel

Gaudi::Property<int> AthMonitorAlgorithm::m_detailLevel {this,"DetailLevel",0}
protectedinherited

Sets the level of detail used in the monitoring.

Definition at line 366 of file AthMonitorAlgorithm.h.

366{this,"DetailLevel",0};

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default).

Definition at line 393 of file AthCommonDataStore.h.

◆ m_doHitQuality

bool IDAlignMonResidualsAlg::m_doHitQuality {false}
private

Definition at line 89 of file IDAlignMonResidualsAlg.h.

89{false};

◆ m_doPulls

bool IDAlignMonResidualsAlg::m_doPulls {}
private

Definition at line 91 of file IDAlignMonResidualsAlg.h.

91{};

◆ m_DQFilterTools

ToolHandleArray<IDQFilterTool> AthMonitorAlgorithm::m_DQFilterTools {this,"FilterTools",{}}
protectedinherited

Array of Data Quality filter tools.

Definition at line 346 of file AthMonitorAlgorithm.h.

346{this,"FilterTools",{}};

◆ m_dummy

const ToolHandle<GenericMonitoringTool> AthMonitorAlgorithm::m_dummy
privateinherited

Definition at line 374 of file AthMonitorAlgorithm.h.

◆ m_enforceExpressTriggers

Gaudi::Property<bool> AthMonitorAlgorithm::m_enforceExpressTriggers
privateinherited
Initial value:
{this,
"EnforceExpressTriggers", false,
"Requires that matched triggers made the event enter the express stream"}

Definition at line 377 of file AthMonitorAlgorithm.h.

377 {this,
378 "EnforceExpressTriggers", false,
379 "Requires that matched triggers made the event enter the express stream"};

◆ m_environment

AthMonitorAlgorithm::Environment_t AthMonitorAlgorithm::m_environment
protectedinherited

Instance of the Environment_t enum.

Definition at line 355 of file AthMonitorAlgorithm.h.

◆ m_environmentStr

Gaudi::Property<std::string> AthMonitorAlgorithm::m_environmentStr {this,"Environment","user"}
protectedinherited

Environment string pulled from the job option and converted to enum.

Definition at line 357 of file AthMonitorAlgorithm.h.

357{this,"Environment","user"};

◆ m_EventInfoKey

SG::ReadHandleKey<xAOD::EventInfo> AthMonitorAlgorithm::m_EventInfoKey {this,"EventInfoKey","EventInfo"}
protectedinherited

Key for retrieving EventInfo from StoreGate.

Definition at line 367 of file AthMonitorAlgorithm.h.

367{this,"EventInfoKey","EventInfo"};

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default).

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthCommonAlgorithm< Gaudi::Algorithm >::m_extendedExtraObjects
privateinherited

Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.

Empty if no symlinks were found.

Definition at line 108 of file AthCommonAlgorithm.h.

◆ m_extendedPlots

bool IDAlignMonResidualsAlg::m_extendedPlots {}
private

Definition at line 88 of file IDAlignMonResidualsAlg.h.

88{};

◆ m_fileKey

Gaudi::Property<std::string> AthMonitorAlgorithm::m_fileKey {this,"FileKey",""}
protectedinherited

Internal Athena name for file.

Definition at line 363 of file AthMonitorAlgorithm.h.

363{this,"FileKey",""};

◆ m_hitQualityTool

ToolHandle<IInDetAlignHitQualSelTool> IDAlignMonResidualsAlg::m_hitQualityTool
private

Definition at line 84 of file IDAlignMonResidualsAlg.h.

◆ m_idHelper

const AtlasDetectorID* IDAlignMonResidualsAlg::m_idHelper {}
private

Definition at line 69 of file IDAlignMonResidualsAlg.h.

69{};

◆ m_iUpdator

ToolHandle<Trk::IUpdator> IDAlignMonResidualsAlg::m_iUpdator
private

Definition at line 80 of file IDAlignMonResidualsAlg.h.

◆ m_lbDurationDataKey

SG::ReadCondHandleKey<LBDurationCondData> AthMonitorAlgorithm::m_lbDurationDataKey {this,"LBDurationCondDataKey","LBDurationCondData","SG Key of LBDurationCondData object"}
protectedinherited

Definition at line 350 of file AthMonitorAlgorithm.h.

351{this,"LBDurationCondDataKey","LBDurationCondData","SG Key of LBDurationCondData object"};

◆ m_lumiDataKey

SG::ReadCondHandleKey<LuminosityCondData> AthMonitorAlgorithm::m_lumiDataKey {this,"LuminosityCondDataKey","LuminosityCondData","SG Key of LuminosityCondData object"}
protectedinherited

Definition at line 348 of file AthMonitorAlgorithm.h.

349{this,"LuminosityCondDataKey","LuminosityCondData","SG Key of LuminosityCondData object"};

◆ m_name

std::string AthMonitorAlgorithm::m_name
privateinherited

Definition at line 371 of file AthMonitorAlgorithm.h.

◆ m_nPixEClayers

const int IDAlignMonResidualsAlg::m_nPixEClayers {3}
staticprivate

Definition at line 95 of file IDAlignMonResidualsAlg.h.

95{3}; //

◆ m_nSCTEClayers

const int IDAlignMonResidualsAlg::m_nSCTEClayers {9}
staticprivate

Definition at line 96 of file IDAlignMonResidualsAlg.h.

96{9}; //

◆ m_nSiBlayers

const int IDAlignMonResidualsAlg::m_nSiBlayers {4}
staticprivate

Definition at line 94 of file IDAlignMonResidualsAlg.h.

94{4}; //

◆ m_nTRTBlayers

const int IDAlignMonResidualsAlg::m_nTRTBlayers {3}
staticprivate

Definition at line 97 of file IDAlignMonResidualsAlg.h.

97{3}; //

◆ m_nTRTEClayers

const int IDAlignMonResidualsAlg::m_nTRTEClayers {2}
staticprivate

Definition at line 98 of file IDAlignMonResidualsAlg.h.

98{2}; //

◆ m_PIX_Mgr

const InDetDD::PixelDetectorManager* IDAlignMonResidualsAlg::m_PIX_Mgr {}
private

Definition at line 70 of file IDAlignMonResidualsAlg.h.

70{};

◆ m_pixECAResidualX

std::vector<int> IDAlignMonResidualsAlg::m_pixECAResidualX
private

Definition at line 109 of file IDAlignMonResidualsAlg.h.

◆ m_pixECAResidualY

std::vector<int> IDAlignMonResidualsAlg::m_pixECAResidualY
private

Definition at line 110 of file IDAlignMonResidualsAlg.h.

◆ m_pixECCResidualX

std::vector<int> IDAlignMonResidualsAlg::m_pixECCResidualX
private

Definition at line 113 of file IDAlignMonResidualsAlg.h.

◆ m_pixECCResidualY

std::vector<int> IDAlignMonResidualsAlg::m_pixECCResidualY
private

Definition at line 114 of file IDAlignMonResidualsAlg.h.

◆ m_pixECResidualX_2DProf

std::vector<int> IDAlignMonResidualsAlg::m_pixECResidualX_2DProf
private

Definition at line 111 of file IDAlignMonResidualsAlg.h.

◆ m_pixECResidualY_2DProf

std::vector<int> IDAlignMonResidualsAlg::m_pixECResidualY_2DProf
private

Definition at line 112 of file IDAlignMonResidualsAlg.h.

◆ m_Pixel_Manager

std::string IDAlignMonResidualsAlg::m_Pixel_Manager
private

Definition at line 86 of file IDAlignMonResidualsAlg.h.

◆ m_pixelID

const PixelID* IDAlignMonResidualsAlg::m_pixelID {}
private

Definition at line 72 of file IDAlignMonResidualsAlg.h.

72{};

◆ m_pixPullX

std::vector<int> IDAlignMonResidualsAlg::m_pixPullX
private

Definition at line 103 of file IDAlignMonResidualsAlg.h.

◆ m_pixPullY

std::vector<int> IDAlignMonResidualsAlg::m_pixPullY
private

Definition at line 104 of file IDAlignMonResidualsAlg.h.

◆ m_pixResidualX

std::vector<int> IDAlignMonResidualsAlg::m_pixResidualX
private

Definition at line 99 of file IDAlignMonResidualsAlg.h.

◆ m_pixResidualX_2DProf

std::vector<int> IDAlignMonResidualsAlg::m_pixResidualX_2DProf
private

Definition at line 100 of file IDAlignMonResidualsAlg.h.

◆ m_pixResidualXvsEta

std::vector<int> IDAlignMonResidualsAlg::m_pixResidualXvsEta
private

Definition at line 105 of file IDAlignMonResidualsAlg.h.

◆ m_pixResidualXvsPhi

std::vector<int> IDAlignMonResidualsAlg::m_pixResidualXvsPhi
private

Definition at line 107 of file IDAlignMonResidualsAlg.h.

◆ m_pixResidualY

std::vector<int> IDAlignMonResidualsAlg::m_pixResidualY
private

Definition at line 101 of file IDAlignMonResidualsAlg.h.

◆ m_pixResidualY_2DProf

std::vector<int> IDAlignMonResidualsAlg::m_pixResidualY_2DProf
private

Definition at line 102 of file IDAlignMonResidualsAlg.h.

◆ m_pixResidualYvsEta

std::vector<int> IDAlignMonResidualsAlg::m_pixResidualYvsEta
private

Definition at line 106 of file IDAlignMonResidualsAlg.h.

◆ m_pixResidualYvsPhi

std::vector<int> IDAlignMonResidualsAlg::m_pixResidualYvsPhi
private

Definition at line 108 of file IDAlignMonResidualsAlg.h.

◆ m_propagator

ToolHandle<Trk::IPropagator> IDAlignMonResidualsAlg::m_propagator
private

Definition at line 81 of file IDAlignMonResidualsAlg.h.

◆ m_residualPullCalculator

ToolHandle<Trk::IResidualPullCalculator> IDAlignMonResidualsAlg::m_residualPullCalculator
private

The residual and pull calculator tool handle.

Definition at line 82 of file IDAlignMonResidualsAlg.h.

◆ m_SCT_Manager

std::string IDAlignMonResidualsAlg::m_SCT_Manager
private

Definition at line 87 of file IDAlignMonResidualsAlg.h.

◆ m_SCT_Mgr

const InDetDD::SCT_DetectorManager* IDAlignMonResidualsAlg::m_SCT_Mgr {}
private

Definition at line 71 of file IDAlignMonResidualsAlg.h.

71{};

◆ m_sct_s0_ResidualX_2DProf

std::vector<int> IDAlignMonResidualsAlg::m_sct_s0_ResidualX_2DProf
private

Definition at line 117 of file IDAlignMonResidualsAlg.h.

◆ m_sct_s1_ResidualX_2DProf

std::vector<int> IDAlignMonResidualsAlg::m_sct_s1_ResidualX_2DProf
private

Definition at line 118 of file IDAlignMonResidualsAlg.h.

◆ m_sctECA_s0_ResidualX_2DProf

std::vector<int> IDAlignMonResidualsAlg::m_sctECA_s0_ResidualX_2DProf
private

Definition at line 120 of file IDAlignMonResidualsAlg.h.

◆ m_sctECA_s1_ResidualX_2DProf

std::vector<int> IDAlignMonResidualsAlg::m_sctECA_s1_ResidualX_2DProf
private

Definition at line 121 of file IDAlignMonResidualsAlg.h.

◆ m_sctECAResidualX_2DProf

std::vector<int> IDAlignMonResidualsAlg::m_sctECAResidualX_2DProf
private

Definition at line 119 of file IDAlignMonResidualsAlg.h.

◆ m_sctECC_s0_ResidualX_2DProf

std::vector<int> IDAlignMonResidualsAlg::m_sctECC_s0_ResidualX_2DProf
private

Definition at line 123 of file IDAlignMonResidualsAlg.h.

◆ m_sctECC_s1_ResidualX_2DProf

std::vector<int> IDAlignMonResidualsAlg::m_sctECC_s1_ResidualX_2DProf
private

Definition at line 124 of file IDAlignMonResidualsAlg.h.

◆ m_sctECCResidualX_2DProf

std::vector<int> IDAlignMonResidualsAlg::m_sctECCResidualX_2DProf
private

Definition at line 122 of file IDAlignMonResidualsAlg.h.

◆ m_sctID

const SCT_ID* IDAlignMonResidualsAlg::m_sctID {}
private

Definition at line 73 of file IDAlignMonResidualsAlg.h.

73{};

◆ m_sctPullX

std::vector<int> IDAlignMonResidualsAlg::m_sctPullX
private

Definition at line 125 of file IDAlignMonResidualsAlg.h.

◆ m_sctResidualX

std::vector<int> IDAlignMonResidualsAlg::m_sctResidualX
private

Definition at line 115 of file IDAlignMonResidualsAlg.h.

◆ m_sctResidualX_2DProf

std::vector<int> IDAlignMonResidualsAlg::m_sctResidualX_2DProf
private

Definition at line 116 of file IDAlignMonResidualsAlg.h.

◆ m_sctResidualXvsEta

std::vector<int> IDAlignMonResidualsAlg::m_sctResidualXvsEta
private

Definition at line 126 of file IDAlignMonResidualsAlg.h.

◆ m_sctResidualXvsPhi

std::vector<int> IDAlignMonResidualsAlg::m_sctResidualXvsPhi
private

Definition at line 127 of file IDAlignMonResidualsAlg.h.

◆ m_toolLookupMap

std::unordered_map<std::string, size_t> AthMonitorAlgorithm::m_toolLookupMap
privateinherited

Definition at line 372 of file AthMonitorAlgorithm.h.

◆ m_tools

ToolHandleArray<GenericMonitoringTool> AthMonitorAlgorithm::m_tools {this,"GMTools",{}}
protectedinherited

Array of Generic Monitoring Tools.

Definition at line 341 of file AthMonitorAlgorithm.h.

341{this,"GMTools",{}};

◆ m_trackSelection

ToolHandle<InDet::IInDetTrackSelectionTool> IDAlignMonResidualsAlg::m_trackSelection
private

Definition at line 83 of file IDAlignMonResidualsAlg.h.

◆ m_tracksKey

SG::ReadHandleKey<TrackCollection> IDAlignMonResidualsAlg::m_tracksKey {this,"TrackName2", "CombinedInDetTracks", "track data key"}
private

Definition at line 76 of file IDAlignMonResidualsAlg.h.

76{this,"TrackName2", "CombinedInDetTracks", "track data key"};

◆ m_tracksName

SG::ReadHandleKey<TrackCollection> IDAlignMonResidualsAlg::m_tracksName {this,"TrackName","CombinedInDetTracks", "track data key"}
private

Definition at line 77 of file IDAlignMonResidualsAlg.h.

77{this,"TrackName","CombinedInDetTracks", "track data key"};

◆ m_trigDecTool

PublicToolHandle<Trig::TrigDecisionTool> AthMonitorAlgorithm::m_trigDecTool
protectedinherited

Tool to tell whether a specific trigger is passed.

Definition at line 345 of file AthMonitorAlgorithm.h.

◆ m_triggerChainString

Gaudi::Property<std::string> AthMonitorAlgorithm::m_triggerChainString {this,"TriggerChain",""}
protectedinherited

Trigger chain string pulled from the job option and parsed into a vector.

Definition at line 360 of file AthMonitorAlgorithm.h.

360{this,"TriggerChain",""};

◆ m_trigLiveFractionDataKey

SG::ReadCondHandleKey<TrigLiveFractionCondData> AthMonitorAlgorithm::m_trigLiveFractionDataKey {this,"TrigLiveFractionCondDataKey","TrigLiveFractionCondData", "SG Key of TrigLiveFractionCondData object"}
protectedinherited

Definition at line 352 of file AthMonitorAlgorithm.h.

353{this,"TrigLiveFractionCondDataKey","TrigLiveFractionCondData", "SG Key of TrigLiveFractionCondData object"};

◆ m_trtBLR

std::vector<int> IDAlignMonResidualsAlg::m_trtBLR
private

Definition at line 134 of file IDAlignMonResidualsAlg.h.

◆ m_trtBLRVsPhiSec

std::vector<std::vector<int> > IDAlignMonResidualsAlg::m_trtBLRVsPhiSec
private

Definition at line 137 of file IDAlignMonResidualsAlg.h.

◆ m_trtBMeasuredR

std::vector<int> IDAlignMonResidualsAlg::m_trtBMeasuredR
private

Definition at line 129 of file IDAlignMonResidualsAlg.h.

◆ m_trtBPredictedR

std::vector<int> IDAlignMonResidualsAlg::m_trtBPredictedR
private

Definition at line 128 of file IDAlignMonResidualsAlg.h.

◆ m_trtBPullR

std::vector<int> IDAlignMonResidualsAlg::m_trtBPullR
private

Definition at line 131 of file IDAlignMonResidualsAlg.h.

◆ m_trtBPullRNoTube

std::vector<int> IDAlignMonResidualsAlg::m_trtBPullRNoTube
private

Definition at line 133 of file IDAlignMonResidualsAlg.h.

◆ m_trtBResidualR

std::vector<int> IDAlignMonResidualsAlg::m_trtBResidualR
private

Definition at line 130 of file IDAlignMonResidualsAlg.h.

◆ m_trtBResidualRNoTube

std::vector<int> IDAlignMonResidualsAlg::m_trtBResidualRNoTube
private

Definition at line 132 of file IDAlignMonResidualsAlg.h.

◆ m_trtBResVsEta

std::vector<std::vector<int> > IDAlignMonResidualsAlg::m_trtBResVsEta
private

Definition at line 135 of file IDAlignMonResidualsAlg.h.

◆ m_trtBResVsPhiSec

std::vector<std::vector<int> > IDAlignMonResidualsAlg::m_trtBResVsPhiSec
private

Definition at line 136 of file IDAlignMonResidualsAlg.h.

◆ m_trtcaldbTool

ToolHandle<ITRT_CalDbTool> IDAlignMonResidualsAlg::m_trtcaldbTool
private

Definition at line 79 of file IDAlignMonResidualsAlg.h.

◆ m_trtECLR

std::vector<int> IDAlignMonResidualsAlg::m_trtECLR
private

Definition at line 144 of file IDAlignMonResidualsAlg.h.

◆ m_trtECLRVsPhiSec

std::vector<int> IDAlignMonResidualsAlg::m_trtECLRVsPhiSec
private

Definition at line 147 of file IDAlignMonResidualsAlg.h.

◆ m_trtECMeasuredR

std::vector<int> IDAlignMonResidualsAlg::m_trtECMeasuredR
private

Definition at line 139 of file IDAlignMonResidualsAlg.h.

◆ m_trtECPredictedR

std::vector<int> IDAlignMonResidualsAlg::m_trtECPredictedR
private

Definition at line 138 of file IDAlignMonResidualsAlg.h.

◆ m_trtECPullR

std::vector<int> IDAlignMonResidualsAlg::m_trtECPullR
private

Definition at line 141 of file IDAlignMonResidualsAlg.h.

◆ m_trtECPullRNoTube

std::vector<int> IDAlignMonResidualsAlg::m_trtECPullRNoTube
private

Definition at line 143 of file IDAlignMonResidualsAlg.h.

◆ m_trtECResidualR

std::vector<int> IDAlignMonResidualsAlg::m_trtECResidualR
private

Definition at line 140 of file IDAlignMonResidualsAlg.h.

◆ m_trtECResidualRNoTube

std::vector<int> IDAlignMonResidualsAlg::m_trtECResidualRNoTube
private

Definition at line 142 of file IDAlignMonResidualsAlg.h.

◆ m_trtECResVsEta

std::vector<int> IDAlignMonResidualsAlg::m_trtECResVsEta
private

Definition at line 145 of file IDAlignMonResidualsAlg.h.

◆ m_trtECResVsPhiSec

std::vector<int> IDAlignMonResidualsAlg::m_trtECResVsPhiSec
private

Definition at line 146 of file IDAlignMonResidualsAlg.h.

◆ m_trtECResVsPt_2DProf

std::vector<int> IDAlignMonResidualsAlg::m_trtECResVsPt_2DProf
private

Definition at line 148 of file IDAlignMonResidualsAlg.h.

◆ m_trtID

const TRT_ID* IDAlignMonResidualsAlg::m_trtID {}
private

Definition at line 74 of file IDAlignMonResidualsAlg.h.

74{};

◆ m_useLumi

Gaudi::Property<bool> AthMonitorAlgorithm::m_useLumi {this,"EnableLumi",false}
protectedinherited

Allows use of various luminosity functions.

Definition at line 364 of file AthMonitorAlgorithm.h.

364{this,"EnableLumi",false};

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.

◆ m_vTrigChainNames

std::vector<std::string> AthMonitorAlgorithm::m_vTrigChainNames
protectedinherited

Vector of trigger chain names parsed from trigger chain string.

Definition at line 361 of file AthMonitorAlgorithm.h.


The documentation for this class was generated from the following files: