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

#include <TRTMonitoringRun3ESD_Alg.h>

Inheritance diagram for TRTMonitoringRun3ESD_Alg:

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

 TRTMonitoringRun3ESD_Alg (const std::string &name, ISvcLocator *pSvcLocator)
virtual ~TRTMonitoringRun3ESD_Alg ()
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 (std::string_view 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

Public Attributes

 flags = initConfigFlags()
 Files
 isMC
 HISTFileName
 Dynamic
 GeometryPixel
 GeometrySCT
 GeometryTRT
 GlobalTag
 cfg = MainServicesCfg(flags)
 TRTMonitoringRun3Acc = TRTMonitoringRun3ESD_AlgConfig(flags)

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

enum  GasType { Xe = 0 , Ar = 1 , Kr = 2 }
typedef std::vector< std::reference_wrapper< Monitored::IMonitoredVariable > > MonVarVec_t
typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

StatusCode fillTRTTracks (const EventContext &ctx, const xAOD::TrackParticleContainer &trackCollection, const xAOD::TrigDecision *trigDecision, const ComTime *comTimeObject, const xAOD::EventInfo &eventInfo) const
StatusCode fillTRTHighThreshold (const xAOD::TrackParticleContainer &trackCollection, const xAOD::EventInfo &eventInfo, const EventContext &ctx) const
int strawLayerNumber (int strawLayerNumber, int LayerNumber) const
int strawNumber (int strawNumber, int strawlayerNumber, int LayerNumber) const
int chipToBoard (int chip) const
int chipToBoard_EndCap (int chip) const
float radToDegrees (float radValue) const
int strawNumber_reverse (int inp_strawnumber, int *strawNumber, int *strawlayerNumber, int *LayerNumber) const
int strawLayerNumber_reverse (int strawLayerNumInp, int *strawLayerNumber, int *LayerNumber) const
int strawNumberEndCap (int strawNumber, int strawLayerNumber, int LayerNumber, int phi_stack, int side) const
bool checkEventBurst (const TRT_RDO_Container &rdoContainer) const
GasType Straw_Gastype (int stat) const
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

BooleanProperty m_ArgonXenonSplitter {this, "doArgonXenonSeparation", true}
const AtlasDetectorIDm_idHelper {}
ToolHandle< ITRT_StrawStatusSummaryToolm_sumTool {this, "InDetTRTStrawStatusSummaryTool", "TRT_StrawStatusSummaryTool",""}
ServiceHandle< ITRT_StrawNeighbourSvcm_TRTStrawNeighbourSvc {this, "NeighbourSvc", "TRT_StrawNeighbourSvc", ""}
ToolHandle< ITRT_CalDbToolm_TRTCalDbTool {this, "ITRT_CalDbTool", "TRT_CalDbTool", ""}
SG::ReadHandleKey< xAOD::TrackParticleContainerm_trackCollectionKey {this, "TrackParticleContainerKeys", "InDetTrackParticles", "Keys for TrackParticle Container"}
SG::ReadHandleKey< xAOD::EventInfom_xAODEventInfoKey {this, "xAODEventInfo", "EventInfo", "Name of EventInfo object"}
SG::ReadHandleKey< InDetTimeCollectionm_TRT_BCIDCollectionKey {this, "TRTBCIDCollectionName", "TRT_BCID", "Name of TRT BCID collection"}
SG::ReadHandleKey< ComTimem_comTimeObjectKey {this, "ComTimeObjectName", "TRT_Phase", "Name of ComTime object"}
SG::ReadHandleKey< xAOD::TrigDecisionm_trigDecisionKey {this, "TrigDecisionObjectName", "xTrigDecision", "Name of trigger decision object"}
ToolHandle< Trk::ITrackSummaryToolm_TrackSummaryTool {this, "TrackSummaryTool", "InDetTrackSummaryTool", "Track summary tool name"}
ToolHandle< ITRT_DriftFunctionToolm_drifttool {this, "DriftFunctionTool", "TRT_DriftFunctionTool", ""}
const TRT_IDm_pTRTHelper {}
const InDetDD::TRT_DetectorManagerm_mgr {}
Gaudi::Property< bool > m_doTracksMon {this, "DoTracksMon", true, ""}
Gaudi::Property< bool > m_doStraws {this, "doStraws", true, ""}
Gaudi::Property< bool > m_doChips {this, "doChips", true, ""}
Gaudi::Property< bool > m_doShift {this, "doShift", true, ""}
Gaudi::Property< bool > m_doExpert {this, "doExpert", false, ""}
std::vector< std::vector< unsigned char > > m_mat_chip_B {64, std::vector<unsigned char>(1642)}
std::vector< std::vector< unsigned char > > m_mat_chip_E {64, std::vector<unsigned char>(3840)}
Gaudi::Property< float > m_DistToStraw {this, "DistanceToStraw", 0.4f, ""}
bool m_isCosmics {false}
Gaudi::Property< int > m_min_si_hits {this, "min_si_hits", 1, ""}
Gaudi::Property< int > m_min_pixel_hits {this, "min_pixel_hits", 0, ""}
Gaudi::Property< int > m_min_sct_hits {this, "min_sct_hits", 0, ""}
Gaudi::Property< int > m_min_trt_hits {this, "min_trt_hits", 10, ""}
Gaudi::Property< int > m_minTRThits {this, "MinTRTHitCut", 10, ""}
Gaudi::Property< float > m_minP {this, "MinTrackP", 0.0 * CLHEP::GeV}
Gaudi::Property< float > m_min_pT {this, "min_pT", 0.5 * CLHEP::GeV}
int m_EventBurstCut {-1}
ToolHandle< InDet::IInDetTrackSelectionToolm_trackSelTool {this, "TrackSelectionTool", "InDet::InDetTrackSelectionTool/TrackSelectionTool", ""}
std::string m_name
std::unordered_map< std::string, size_t, CxxUtils::TransparentStringHash, std::equal_to<> > 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 s_numberOfBarrelStacks = 32
static const int s_numberOfEndCapStacks = 32
static const int s_Straw_max [2] = {1642, 3840}
static const int s_iStack_max [2] = {32, 64}
static const int s_iChip_max [2] = {104, 240}
static const int s_numberOfStacks [2] = {32, 32}
static const int s_moduleNum [2] = {96, 64}

Detailed Description

Definition at line 62 of file TRTMonitoringRun3ESD_Alg.h.

Member Typedef Documentation

◆ MonVarVec_t

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

Definition at line 373 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 197 of file AthMonitorAlgorithm.h.

197 {
198 userDefined = 0,
199 monteCarlo,
200 collisions,
201 cosmics,
202 heavyIonCollisions,
203 };
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 178 of file AthMonitorAlgorithm.h.

178 {
179 user = 0,
180 online,
181 tier0,
182 tier0Raw,
183 tier0ESD,
184 AOD,
185 altprod,
186 };

◆ GasType

enum TRTMonitoringRun3ESD_Alg::GasType
private
Enumerator
Xe 
Ar 
Kr 

Definition at line 144 of file TRTMonitoringRun3ESD_Alg.h.

144{ Xe = 0, Ar = 1, Kr = 2 };

Constructor & Destructor Documentation

◆ TRTMonitoringRun3ESD_Alg()

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

Definition at line 40 of file TRTMonitoringRun3ESD_Alg.cxx.

41:AthMonitorAlgorithm(name,pSvcLocator)
42{
43}
Base class for Athena Monitoring Algorithms.

◆ ~TRTMonitoringRun3ESD_Alg()

TRTMonitoringRun3ESD_Alg::~TRTMonitoringRun3ESD_Alg ( )
virtual

Definition at line 45 of file TRTMonitoringRun3ESD_Alg.cxx.

45{}

Member Function Documentation

◆ checkEventBurst()

bool TRTMonitoringRun3ESD_Alg::checkEventBurst ( const TRT_RDO_Container & rdoContainer) const
private

Definition at line 351 of file TRTMonitoringRun3ESD_Alg.cxx.

351 {
352//----------------------------------------------------------------------------------//
353 if (m_EventBurstCut <= 0) return true;
354
355 int nHLHits = 0;
356 TRT_RDO_Container::const_iterator RDO_CollectionBegin = rdoContainer.begin();
357 TRT_RDO_Container::const_iterator RDO_CollectionEnd = rdoContainer.end();
358
359 for (; RDO_CollectionBegin != RDO_CollectionEnd; ++RDO_CollectionBegin) {
360 const InDetRawDataCollection<TRT_RDORawData> *TRT_Collection(*RDO_CollectionBegin);
361
362 if (!TRT_Collection) continue;
363 else {
364 DataVector<TRT_RDORawData>::const_iterator p_rdo = TRT_Collection->begin();
365
366 for (; p_rdo != TRT_Collection->end(); ++p_rdo) {
367 const TRT_LoLumRawData *p_lolum = dynamic_cast<const TRT_LoLumRawData *>(*p_rdo);
368
369 if (!p_lolum) continue;
370
371 if (p_lolum->highLevel()) nHLHits++;
372 }
373 }
374 }
375
376 if (nHLHits > m_EventBurstCut) return false;
377 else return true;
378}
DataModel_detail::const_iterator< DataVector > const_iterator
Standard const_iterator.
Definition DataVector.h:838
const_iterator end() const
return const_iterator for end of container
const_iterator begin() const
return const_iterator for first entry
virtual bool highLevel() const override final

◆ chipToBoard()

int TRTMonitoringRun3ESD_Alg::chipToBoard ( int chip) const
private

◆ chipToBoard_EndCap()

int TRTMonitoringRun3ESD_Alg::chipToBoard_EndCap ( int chip) const
private

◆ 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 227 of file AthMonitorAlgorithm.h.

227{ 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 }
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)

◆ 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 211 of file AthMonitorAlgorithm.h.

211{ 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 TRTMonitoringRun3ESD_Alg::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

Implements AthMonitorAlgorithm.

Definition at line 1433 of file TRTMonitoringRun3ESD_Alg.cxx.

1433 {
1434 using namespace Monitored;
1435 bool passEventBurst = true;
1436
1437 // Declare the quantities which should be monitored
1438
1439 // Set the values of the monitored variables for the event
1440
1441 ATH_MSG_VERBOSE("Monitoring Histograms being filled");
1442
1443 SG::ReadHandle<xAOD::TrackParticleContainer> trackCollection(m_trackCollectionKey, ctx);
1444 SG::ReadHandle<xAOD::EventInfo> xAODEventInfo(m_xAODEventInfoKey, ctx);
1445 SG::ReadHandle<InDetTimeCollection> trtBCIDCollection(m_TRT_BCIDCollectionKey, ctx);
1446
1447 if (!xAODEventInfo.isValid()) {
1448 ATH_MSG_ERROR("Could not find event info object " << m_xAODEventInfoKey.key() <<
1449 " in store");
1450 return StatusCode::FAILURE;
1451 }
1452
1453 if (m_doTracksMon) {
1454 if (!trackCollection.isValid()) {
1455 ATH_MSG_ERROR("Could not find track collection " << m_trackCollectionKey.key() <<
1456 " in store");
1457 return StatusCode::FAILURE;
1458 }
1459 const xAOD::TrigDecision* trigDecision = nullptr;
1460 if (! m_trigDecisionKey.empty()) {
1461 trigDecision = SG::get(m_trigDecisionKey, ctx);
1462 if (!trigDecision) {
1463 ATH_MSG_INFO("Could not find trigger decision object " << m_trigDecisionKey.key() <<
1464 " in store");
1465 }
1466 }
1467 const ComTime *comTimeObject=nullptr;
1468 if (!m_comTimeObjectKey.empty()) {
1469 SG::ReadHandle<ComTime> tmp_comTimeObject(m_comTimeObjectKey, ctx);
1470 if (!tmp_comTimeObject.isValid()) {
1471 // NOTE: failing to retrieve ComTime from store for some reason
1472 ATH_MSG_DEBUG("Could not find com time object " << m_comTimeObjectKey.key() << " in store" );
1473 }
1474 else {
1475 comTimeObject = tmp_comTimeObject.cptr();
1476 }
1477 }
1478 ATH_CHECK( fillTRTTracks(ctx, *trackCollection, trigDecision, comTimeObject, *xAODEventInfo) );
1479 }
1480
1481 if (!m_doTracksMon) {
1482 if (!trackCollection.isValid()) {
1483 ATH_MSG_ERROR("Could not find track collection " << m_trackCollectionKey.key() <<
1484 " in store");
1485 return StatusCode::FAILURE;
1486 }
1487 }
1488
1489 if (passEventBurst) { // ESD files does not have an RDO container to pass event burst, what to do?
1490 ATH_CHECK( fillTRTHighThreshold(*trackCollection, *xAODEventInfo, ctx) );
1491 }
1492
1493
1494
1495 return StatusCode::SUCCESS;
1496}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x)
#define ATH_MSG_INFO(x)
#define ATH_MSG_VERBOSE(x)
const std::string & key() const
Return the StoreGate ID for the referenced object.
bool empty() const
Test if the key is blank.
SG::ReadHandleKey< xAOD::TrigDecision > m_trigDecisionKey
StatusCode fillTRTHighThreshold(const xAOD::TrackParticleContainer &trackCollection, const xAOD::EventInfo &eventInfo, const EventContext &ctx) const
SG::ReadHandleKey< ComTime > m_comTimeObjectKey
StatusCode fillTRTTracks(const EventContext &ctx, const xAOD::TrackParticleContainer &trackCollection, const xAOD::TrigDecision *trigDecision, const ComTime *comTimeObject, const xAOD::EventInfo &eventInfo) const
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_trackCollectionKey
Generic monitoring tool for athena components.
const T * get(const ReadCondHandleKey< T > &key, const EventContext &ctx)
Convenience function to retrieve an object given a ReadCondHandleKey.
TrigDecision_v1 TrigDecision
Define the latest version of the trigger decision class.

◆ fillTRTHighThreshold()

StatusCode TRTMonitoringRun3ESD_Alg::fillTRTHighThreshold ( const xAOD::TrackParticleContainer & trackCollection,
const xAOD::EventInfo & eventInfo,
const EventContext & ctx ) const
private

Definition at line 1208 of file TRTMonitoringRun3ESD_Alg.cxx.

1209 {
1210//----------------------------------------------------------------------------------//
1211
1212 auto IntLum = Monitored::Scalar<float>("IntLum", 0.0);
1213 auto LBvsLum = Monitored::Scalar<float>("LBvsLum", 0.0);
1214 auto LBvsTime_x = Monitored::Scalar<float>("LBvsTime_x", 0.0);
1215 auto LBvsTime_y = Monitored::Scalar<float>("LBvsTime_y", 0.0);
1216 auto IntLumWeight = Monitored::Scalar<float>("IntLumWeight", 0.0);
1217 auto LBvsLumWeight = Monitored::Scalar<float>("LBvsLumWeight", 0.0);
1218
1219 int lumiBlockNumber;
1220 int timeStamp;
1221 lumiBlockNumber = eventInfo.lumiBlock();
1222 timeStamp = eventInfo.timeStamp();
1223
1224 int runNumber;
1225 runNumber = eventInfo.runNumber();
1226 // get Online Luminosity
1227 double intLum = (lbDuration(ctx) * lbAverageLuminosity(ctx));
1228 IntLum = 0.5;
1229 IntLumWeight = intLum;
1230 fill("SmryHistograms", IntLumWeight, IntLum);
1231 LBvsLum = lumiBlockNumber;
1232 LBvsLumWeight = intLum;
1233 fill("SmryHistograms", LBvsLumWeight, LBvsLum);
1234 LBvsTime_x = lumiBlockNumber;
1235 LBvsTime_y = timeStamp;
1236 fill("SmryHistograms", LBvsTime_x, LBvsTime_y);
1237
1238 ATH_MSG_VERBOSE("Filling TRT Aging Histos");
1239
1240 auto Trackr_HT = Monitored::Scalar<float>("Trackr_HT", 0.0);
1241 auto Trackr_All = Monitored::Scalar<float>("Trackr_All", 0.0);
1242 auto Trackz_HT = Monitored::Scalar<float>("Trackz_HT", 0.0);
1243 auto Trackz_All = Monitored::Scalar<float>("Trackz_All", 0.0);
1244
1245 auto p_trk = trackCollection.begin();
1246 const Trk::Perigee *perigee = nullptr;
1247 const DataVector<const Trk::TrackParameters> *AllTrkPar(nullptr);
1249
1250 for (; p_trk != trackCollection.end(); ++p_trk) {
1251 AllTrkPar = ((*p_trk)->track())->trackParameters();
1252
1253 for (p_trkpariter = AllTrkPar->begin(); p_trkpariter != AllTrkPar->end(); ++p_trkpariter) {
1254 if ((perigee = dynamic_cast<const Trk::Perigee *>(*p_trkpariter))) break;
1255 }
1256
1257 // If you went through all of the track parameters and found no perigee mearsurement
1258 // then something is wrong with the track and so don't use the track.
1259 // i.e. continue to the next track.
1260 if (!perigee) {
1261 ATH_MSG_DEBUG("No perigee mearsurement found for the track. This entry will not be propogated to aging histograms.");
1262 continue;
1263 }
1264
1265 float track_eta = perigee->eta();
1266 float track_p = (perigee->parameters()[Trk::qOverP] != 0.) ? std::abs(1. / (perigee->parameters()[Trk::qOverP])) : 10e7;
1267 const Trk::TrackStates *trackStates = ((*p_trk)->track())->trackStateOnSurfaces();
1268
1269 if (trackStates == nullptr) continue;
1270
1271 Trk::TrackStates::const_iterator TSOSItBegin = trackStates->begin();
1272 Trk::TrackStates::const_iterator TSOSItEnd = trackStates->end();
1273
1274 uint8_t tempHitsVariable = 0;
1275 (*p_trk)->summaryValue(tempHitsVariable, xAOD::SummaryType::numberOfTRTHits);
1276 int trt_hits = unsigned(tempHitsVariable);
1277
1278 const bool passed_track_preselection = (static_cast<bool>(m_trackSelTool->accept(**p_trk)) || m_isCosmics) &&
1279 trt_hits >= 6. &&
1280 std::abs(track_p) >= 5000.;
1281
1282 if (!passed_track_preselection) continue;
1283
1284 // Now we have hit informations
1285 const Trk::TrackStates *track_states = ((*p_trk)->track())->trackStateOnSurfaces();
1286
1287 if (track_states) {
1288 ATH_MSG_DEBUG("This track has " << track_states->size() << " track states on surface.");
1289 } else {
1290 ATH_MSG_DEBUG("This track has null track states on surface.");
1291 continue;
1292 }
1293
1294 int barrel_ec_side = 0;
1295 int layer_or_wheel = 0;
1296 int phi_module = 0;
1297 int straw_layer = 0;
1298
1299 for (; TSOSItBegin != TSOSItEnd; ++TSOSItBegin) {
1300 if ((*TSOSItBegin) == nullptr) continue;
1301 if ( !((*TSOSItBegin)->type(Trk::TrackStateOnSurface::Measurement)) ) continue;
1302
1303 const InDet::TRT_DriftCircleOnTrack *trtCircle = dynamic_cast<const InDet::TRT_DriftCircleOnTrack *>((*TSOSItBegin)->measurementOnTrack());
1304 const Trk::TrackParameters *aTrackParam = dynamic_cast<const Trk::TrackParameters *>((*TSOSItBegin)->trackParameters());
1305
1306 if (!trtCircle) continue;
1307 if (!aTrackParam) continue;
1308
1309
1310 Identifier DCoTId = trtCircle->identify();
1311 barrel_ec_side = m_pTRTHelper->barrel_ec(DCoTId);
1312 layer_or_wheel = m_pTRTHelper->layer_or_wheel(DCoTId);
1313 phi_module = m_pTRTHelper->phi_module(DCoTId);
1314 straw_layer = m_pTRTHelper->straw_layer(DCoTId);
1315 int Ba_Ec = abs(barrel_ec_side) - 1; // Ba_Ec: 0 is barrel, 1 is Endcap
1316 int Side = barrel_ec_side > 0 ? 0 : 1; // Side : 0 is side_A, 1 is side_C
1317 double xPos = trtCircle->globalPosition().x(); // Global x coordinate
1318 double yPos = trtCircle->globalPosition().y(); // Global y coordinate
1319 double zPos = trtCircle->globalPosition().z(); // Global z coordinate
1320 double RPos = sqrt(xPos * xPos + yPos * yPos);
1321 Identifier surfaceID;
1322 surfaceID = trtCircle->identify();
1323 // Assume always Xe if m_ArgonXenonSplitter is not enabled, otherwise check the straw status (good is Xe, non-good is Ar)
1324 const InDet::TRT_DriftCircle *RawDriftCircle = dynamic_cast<const InDet::TRT_DriftCircle *>(trtCircle->prepRawData());
1325
1326 if (!RawDriftCircle) { //coverity 25097
1327 // This shouldn't happen in normal conditions because trtCircle is a TRT_DriftCircleOnTrack object
1328 ATH_MSG_WARNING("RawDriftCircle object returned null");
1329 continue;
1330 }
1331
1332 int middleHTbit = RawDriftCircle->getWord() & 0x00020000;
1333 //0x00020000 = 0000 0000 0000 0000 0000 0010 0000 0000 0000 0000
1334 bool is_middleHTbit_high = (middleHTbit != 0);
1335 // bool isHighLevel= RawDriftCircle->highLevel();
1336 bool isHighLevel = is_middleHTbit_high; // Hardcoded HT Middle Bit
1337 bool shortStraw = false;
1338 int InputBar = 0;
1339
1340 if (std::abs(track_eta) < 2. && Ba_Ec == 0.) {
1341 if ((layer_or_wheel == 0) && (phi_module < 4 || (phi_module > 7 && phi_module < 12) || (phi_module > 15 && phi_module < 20) || (phi_module > 23 && phi_module < 28))) InputBar = 1;
1342 else if ((runNumber >= 296939) && (layer_or_wheel == 0) && (phi_module > 27)) InputBar = 1;
1343 else if (layer_or_wheel == 0)
1344 InputBar = 0;
1345 else if ((layer_or_wheel == 1) && ((phi_module > 1 && phi_module < 6) || (phi_module > 9 && phi_module < 14) || (phi_module > 17 && phi_module < 22) || (phi_module > 25 && phi_module < 30)))
1346 InputBar = 1;
1347 else if (layer_or_wheel == 1)
1348 InputBar = 0;
1349 else if (layer_or_wheel == 2 && phi_module % 2 != 0)
1350 InputBar = 1;
1351 else if (layer_or_wheel == 2)
1352 InputBar = 0;
1353 else {
1354 ATH_MSG_WARNING("Should not pass here");
1355 continue;
1356 }
1357
1358 if ((layer_or_wheel == 0) && straw_layer < 9.)
1359 shortStraw = true;
1360 }
1361
1362 // Fill Barrel Plots
1363 if ((!shortStraw) && (Ba_Ec == 0)) {
1364 Trackz_All = zPos;
1365 fill("TRTAgingHistograms0"+std::to_string(layer_or_wheel)+std::to_string(InputBar), Trackz_All);
1366 if (isHighLevel) {
1367 Trackz_HT = zPos;
1368 fill("TRTAgingHistograms"+std::to_string(Ba_Ec)+std::to_string(layer_or_wheel)+std::to_string(InputBar), Trackz_HT);
1369 }
1370 }
1371
1372 if (shortStraw) {
1373 if (zPos > 0.) {
1374 Trackz_All = zPos;
1375 fill("TRTAgingHistograms"+std::to_string(Ba_Ec)+"3"+std::to_string(InputBar), Trackz_All);
1376 if (isHighLevel) {
1377 Trackz_HT = zPos;
1378 fill("TRTAgingHistograms"+std::to_string(Ba_Ec)+"3"+std::to_string(InputBar), Trackz_HT);
1379 }
1380 } else {
1381 Trackz_All = zPos;
1382 fill("TRTAgingHistograms"+std::to_string(Ba_Ec)+"4"+std::to_string(InputBar), Trackz_All);
1383
1384 if (isHighLevel) {
1385 Trackz_HT = zPos;
1386 fill("TRTAgingHistograms"+std::to_string(Ba_Ec)+"4"+std::to_string(InputBar), Trackz_HT);
1387 }
1388 }
1389 }
1390
1391 // End of Barrel plots, moving to Endcap plots
1392 int WType = -1;
1393
1394 if ((Ba_Ec == 1) && (layer_or_wheel < 6) &&
1395 ((straw_layer > 3 && straw_layer < 8) ||
1396 (straw_layer > 11))) {
1397 WType = 0;
1398 }
1399 if ((Ba_Ec == 1) && (layer_or_wheel >= 6) &&
1400 (straw_layer > 3)) {
1401 WType = 3;
1402 }
1403 if ((Ba_Ec == 1) && (layer_or_wheel < 6) &&
1404 ((straw_layer > -1 && straw_layer < 4) ||
1405 (straw_layer > 7 && straw_layer < 12))) {
1406 WType = 2;
1407 }
1408 if ((Ba_Ec == 1) && (layer_or_wheel >= 6) &&
1409 ((straw_layer > -1 && straw_layer < 4))) {
1410 WType = 1;
1411 }
1412
1413 if (WType < 0 && Ba_Ec == 1) { // Coverity CID 25096
1414 ATH_MSG_WARNING("The variable \"WType\" is less than zero!.");
1415 continue;
1416 }
1417
1418 if (Ba_Ec == 1) {
1419 Trackr_All = RPos;
1420 fill("TRTAgingHistograms"+std::to_string(Ba_Ec)+std::to_string(WType)+std::to_string(Side), Trackr_All);
1421 if (isHighLevel) {
1422 Trackr_HT = RPos;
1423 fill("TRTAgingHistograms"+std::to_string(Ba_Ec)+std::to_string(WType)+std::to_string(Side), Trackr_HT);
1424 }
1425 }
1426 }
1427 }
1428
1429 return StatusCode::SUCCESS;
1430}
Derived DataVector<T>.
Definition DataVector.h:795
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
size_type size() const noexcept
Returns the number of elements in the collection.
virtual const TRT_DriftCircle * prepRawData() const override final
returns the PrepRawData - is a TRT_DriftCircle in this scope
virtual const Amg::Vector3D & globalPosition() const override final
return the global position of this RIO_OnTrack
unsigned int getWord() const
returns the TRT dataword
Declare a monitored scalar variable.
ToolHandle< InDet::IInDetTrackSelectionTool > m_trackSelTool
int phi_module(const Identifier &id) const
Definition TRT_ID.h:801
int barrel_ec(const Identifier &id) const
Values of different levels (failure returns 0).
Definition TRT_ID.h:792
int layer_or_wheel(const Identifier &id) const
Definition TRT_ID.h:810
int straw_layer(const Identifier &id) const
Definition TRT_ID.h:819
double eta() const
Access method for pseudorapidity - from momentum.
Identifier identify() const
return the identifier -extends MeasurementBase
@ Measurement
This is a measurement, and will at least contain a Trk::MeasurementBase.
uint32_t lumiBlock() const
The current event's luminosity block number.
uint32_t timeStamp() const
POSIX time in seconds from 1970. January 1st.
uint32_t runNumber() const
The current event's run number.
DataVector< const Trk::TrackStateOnSurface > TrackStates
ParametersT< TrackParametersDim, Charged, PerigeeSurface > Perigee
@ qOverP
perigee
Definition ParamDefs.h:67
ParametersBase< TrackParametersDim, Charged > TrackParameters
@ numberOfTRTHits
number of TRT hits [unit8_t].
void fill(H5::Group &out_file, size_t iterations)

◆ fillTRTTracks()

StatusCode TRTMonitoringRun3ESD_Alg::fillTRTTracks ( const EventContext & ctx,
const xAOD::TrackParticleContainer & trackCollection,
const xAOD::TrigDecision * trigDecision,
const ComTime * comTimeObject,
const xAOD::EventInfo & eventInfo ) const
private

Definition at line 383 of file TRTMonitoringRun3ESD_Alg.cxx.

387 {
388//----------------------------------------------------------------------------------//
389 ATH_MSG_VERBOSE("Filling TRT Tracks Histos");
390
391
392 // TProfile
393 auto ValidRawDriftTimeonTrkS_x = Monitored::Scalar<float>("ValidRawDriftTimeonTrkS_x", 0.0);
394 auto ValidRawDriftTimeonTrkS_y = Monitored::Scalar<float>("ValidRawDriftTimeonTrkS_y", 0.0);
395 auto ValidRawDriftTimeonTrkC_x = Monitored::Scalar<float>("ValidRawDriftTimeonTrkC_x", 0.0);
396 auto ValidRawDriftTimeonTrkC_y = Monitored::Scalar<float>("ValidRawDriftTimeonTrkC_y", 0.0);
397 auto HitTronTMapC_x = Monitored::Scalar<float>("HitTronTMapC_x", 0.0);
398 auto HitTronTMapC_y = Monitored::Scalar<float>("HitTronTMapC_y", 0.0);
399 auto HitTronTwEPCMapS_x = Monitored::Scalar<float>("HitTronTwEPCMapS_x", 0.0);
400 auto HitTronTwEPCMapS_y = Monitored::Scalar<float>("HitTronTwEPCMapS_y", 0.0);
401 auto HitTronTwEPCMapC_x = Monitored::Scalar<float>("HitTronTwEPCMapC_x", 0.0);
402 auto HitTronTwEPCMapC_y = Monitored::Scalar<float>("HitTronTwEPCMapC_y", 0.0);
403 auto AvgTroTDetPhi_B_Ar_x = Monitored::Scalar<float>("AvgTroTDetPhi_B_Ar_x", 0.0);
404 auto AvgTroTDetPhi_B_Ar_y = Monitored::Scalar<float>("AvgTroTDetPhi_B_Ar_y", 0.0);
405 auto AvgTroTDetPhi_B_x = Monitored::Scalar<float>("AvgTroTDetPhi_B_x", 0.0);
406 auto AvgTroTDetPhi_B_y = Monitored::Scalar<float>("AvgTroTDetPhi_B_y", 0.0);
407 auto AvgTroTDetPhi_E_Ar_x = Monitored::Scalar<float>("AvgTroTDetPhi_E_Ar_x", 0.0);
408 auto AvgTroTDetPhi_E_Ar_y = Monitored::Scalar<float>("AvgTroTDetPhi_E_Ar_y", 0.0);
409 auto AvgTroTDetPhi_E_x = Monitored::Scalar<float>("AvgTroTDetPhi_E_x", 0.0);
410 auto AvgTroTDetPhi_E_y = Monitored::Scalar<float>("AvgTroTDetPhi_E_y", 0.0);
411 auto NumHoTDetPhi_B_x = Monitored::Scalar<float>("NumHoTDetPhi_B_x", 0.0);
412 auto NumHoTDetPhi_B_y = Monitored::Scalar<float>("NumHoTDetPhi_B_y", 0.0);
413 auto NumHoTDetPhi_E_x = Monitored::Scalar<float>("NumHoTDetPhi_E_x", 0.0);
414 auto NumHoTDetPhi_E_y = Monitored::Scalar<float>("NumHoTDetPhi_E_y", 0.0);
415 auto EvtPhaseDetPhi_B_x = Monitored::Scalar<float>("EvtPhaseDetPhi_B_x", 0.0);
416 auto EvtPhaseDetPhi_B_y = Monitored::Scalar<float>("EvtPhaseDetPhi_B_y", 0.0);
417 auto EvtPhaseDetPhi_E_x = Monitored::Scalar<float>("EvtPhaseDetPhi_E_x", 0.0);
418 auto EvtPhaseDetPhi_E_y = Monitored::Scalar<float>("EvtPhaseDetPhi_E_y", 0.0);
419 auto NTrksperLB_x = Monitored::Scalar<float>("NTrksperLB_x", 0.0);
420 auto NTrksperLB_y = Monitored::Scalar<float>("NTrksperLB_y", 0.0);
421
422
423 // TH1F
424 auto DriftTimeonTrkDist_B = Monitored::Scalar<float>("DriftTimeonTrkDist_B", 0.0);
425 auto DriftTimeonTrkDist_B_Ar = Monitored::Scalar<float>("DriftTimeonTrkDist_B_Ar", 0.0);
426 auto DriftTimeonTrkDist_E_Ar = Monitored::Scalar<float>("DriftTimeonTrkDist_E_Ar", 0.0);
427 auto DriftTimeonTrkDist_E = Monitored::Scalar<float>("DriftTimeonTrkDist_E", 0.0);
428 auto NumTrksDetPhi_B = Monitored::Scalar<float>("NumTrksDetPhi_B", 0.0);
429 auto NumTrksDetPhi_E = Monitored::Scalar<float>("NumTrksDetPhi_E", 0.0);
430 auto Pull_Biased_Barrel = Monitored::Scalar<float>("Pull_Biased_Barrel", 0.0);
431 auto Pull_Biased_EndCap = Monitored::Scalar<float>("Pull_Biased_EndCap", 0.0);
432 auto Residual_B = Monitored::Scalar<float>("Residual_B", 0.0);
433 auto Residual_B_Ar = Monitored::Scalar<float>("Residual_B_Ar", 0.0);
434 auto Residual_B_20GeV = Monitored::Scalar<float>("Residual_B_20GeV", 0.0);
435 auto Residual_B_Ar_20GeV = Monitored::Scalar<float>("Residual_B_Ar_20GeV", 0.0);
436 auto Residual_E = Monitored::Scalar<float>("Residual_E", 0.0);
437 auto Residual_E_Ar = Monitored::Scalar<float>("Residual_E_Ar", 0.0);
438 auto Residual_E_20GeV = Monitored::Scalar<float>("Residual_E_20GeV", 0.0);
439 auto Residual_E_Ar_20GeV = Monitored::Scalar<float>("Residual_E_Ar_20GeV", 0.0);
440 auto Residual_noTubeHits_B = Monitored::Scalar<float>("Residual_noTubeHits_B", 0.0);
441 auto Residual_noTubeHits_B_Ar = Monitored::Scalar<float>("Residual_noTubeHits_B_Ar", 0.0);
442 auto Residual_noTubeHits_B_20GeV = Monitored::Scalar<float>("Residual_noTubeHits_B_20GeV", 0.0);
443 auto Residual_noTubeHits_B_Ar_20GeV = Monitored::Scalar<float>("Residual_noTubeHits_B_Ar_20GeV", 0.0);
444 auto Residual_noTubeHits_E = Monitored::Scalar<float>("Residual_noTubeHits_E", 0.0);
445 auto Residual_noTubeHits_E_Ar = Monitored::Scalar<float>("Residual_noTubeHits_E_Ar", 0.0);
446 auto Residual_noTubeHits_E_20GeV = Monitored::Scalar<float>("Residual_noTubeHits_E_20GeV", 0.0);
447 auto Residual_noTubeHits_E_Ar_20GeV = Monitored::Scalar<float>("Residual_noTubeHits_E_Ar_20GeV", 0.0);
448 auto TimeResidual_B = Monitored::Scalar<float>("TimeResidual_B", 0.0);
449 auto TimeResidual_B_Ar = Monitored::Scalar<float>("TimeResidual_B_Ar", 0.0);
450 auto TimeResidual_E = Monitored::Scalar<float>("TimeResidual_E", 0.0);
451 auto TimeResidual_E_Ar = Monitored::Scalar<float>("TimeResidual_E_Ar", 0.0);
452 auto TimeResidual_noTubeHits_B = Monitored::Scalar<float>("TimeResidual_noTubeHits_B", 0.0);
453 auto TimeResidual_noTubeHits_B_Ar = Monitored::Scalar<float>("TimeResidual_noTubeHits_B_Ar", 0.0);
454 auto TimeResidual_noTubeHits_E = Monitored::Scalar<float>("TimeResidual_noTubeHits_E", 0.0);
455 auto TimeResidual_noTubeHits_E_Ar = Monitored::Scalar<float>("TimeResidual_noTubeHits_E_Ar", 0.0);
456 auto TronTDist_E = Monitored::Scalar<float>("TronTDist_E", 0.0);
457 auto TronTDist_B = Monitored::Scalar<float>("TronTDist_B", 0.0);
458 auto TronTDist_B_Ar = Monitored::Scalar<float>("TronTDist_B_Ar", 0.0);
459 auto TronTDist_E_Ar = Monitored::Scalar<float>("TronTDist_E_Ar", 0.0);
460 auto WireToTrkPosition_B_Ar = Monitored::Scalar<float>("WireToTrkPosition_B_Ar", 0.0);
461 auto WireToTrkPosition_B = Monitored::Scalar<float>("WireToTrkPosition_B", 0.0);
462 auto WireToTrkPosition_E_Ar = Monitored::Scalar<float>("WireToTrkPosition_E_Ar", 0.0);
463 auto WireToTrkPosition_E = Monitored::Scalar<float>("WireToTrkPosition_E", 0.0);
464 auto EvtPhase = Monitored::Scalar<float>("EvtPhase", 0.0);
465 auto Summary = Monitored::Scalar<float>("Summary", 0.0);
466 auto SummaryWeight = Monitored::Scalar<float>("SummaryWeight", 0.0);
467
468 // TH2F
469 auto RtRelation_B_Ar_x = Monitored::Scalar<float>("RtRelation_B_Ar_x", 0.0);
470 auto RtRelation_B_Ar_y = Monitored::Scalar<float>("RtRelation_B_Ar_y", 0.0);
471 auto RtRelation_B_x = Monitored::Scalar<float>("RtRelation_B_x", 0.0);
472 auto RtRelation_B_y = Monitored::Scalar<float>("RtRelation_B_y", 0.0);
473 auto RtRelation_E_Ar_x = Monitored::Scalar<float>("RtRelation_E_Ar_x", 0.0);
474 auto RtRelation_E_Ar_y = Monitored::Scalar<float>("RtRelation_E_Ar_y", 0.0);
475 auto RtRelation_E_x = Monitored::Scalar<float>("RtRelation_E_x", 0.0);
476 auto RtRelation_E_y = Monitored::Scalar<float>("RtRelation_E_y", 0.0);
477 auto EvtPhaseVsTrig_x = Monitored::Scalar<float>("EvtPhaseVsTrig_x", 0.0);
478 auto EvtPhaseVsTrig_y = Monitored::Scalar<float>("EvtPhaseVsTrig_y", 0.0);
479
480 // Initialize a bunch of stuff before looping over the track collection. Fill some basic histograms.
481 const float timeCor = comTimeObject ? comTimeObject->getTime() : 0;
482
483 auto p_trk = trackCollection.begin();
484
485 const Trk::Perigee *mPer = nullptr;
486 const DataVector<const Trk::TrackParameters> *AllTrkPar(nullptr);
488
489 int ntrackstack[2][64];
490 int nTotalTracks = 0;
491 int nTracksB[2] = {0, 0};
492 int nTracksEC[2] = {0, 0};
493 int nTracksEC_B[2] = {0, 0};
494 int nTrksperLB_B = 0;
495 int nTrksperLB_E[2] = {0, 0};
496
497 for (int ibe = 0; ibe < 2; ibe++) {
498 std::fill(ntrackstack[ibe], ntrackstack[ibe] + 64, 0);
499 }
500
501for (; p_trk != trackCollection.end(); ++p_trk) {
502
503 uint8_t tempHitsVariable(0);
504 (*p_trk)->summaryValue(tempHitsVariable, xAOD::SummaryType::numberOfTRTHits);
505 int nTRTHits = unsigned(tempHitsVariable);
506
507
508 if (nTRTHits < m_minTRThits) continue;
509
510 AllTrkPar = ((*p_trk)->track())->trackParameters();
511
512 // Search of MeasuredPerigee in TrackParameters
513 // The following algorithm only finds the First perigee measurement.
514 // As there should be one and only one perigee measurement then this assumption should be valid.
515 // But no check is done to see if there is more than one perigee measurement.
516 for (p_trkpariter = AllTrkPar->begin(); p_trkpariter != AllTrkPar->end(); ++p_trkpariter) {
517 // If track parameter does have a measured perigee then the track parameter is a keeper and break out of the loop
518 if ((mPer = dynamic_cast<const Trk::Perigee *>(*p_trkpariter))) break;
519 }
520
521 if (!mPer) continue;
522
523 float theta = mPer->parameters()[Trk::theta];
524 float p = (mPer->parameters()[Trk::qOverP] != 0.) ? std::abs(1. / (mPer->parameters()[Trk::qOverP])) : 10e7;
525 float pT = (p * std::sin(theta));
526 pT = pT * 1e-3; // GeV
527
528 if (p < m_minP) continue;
529
530 const Trk::TrackStates *trackStates = ((*p_trk)->track())->trackStateOnSurfaces();
531
532 if (trackStates == nullptr) continue;
533
534 Trk::TrackStates::const_iterator TSOSItBegin0 = trackStates->begin();
535 Trk::TrackStates::const_iterator TSOSItBegin = trackStates->begin();
536 Trk::TrackStates::const_iterator TSOSItBeginTemp = trackStates->begin();
537 Trk::TrackStates::const_iterator TSOSItEnd = trackStates->end();
538
539 (*p_trk)->summaryValue(tempHitsVariable, xAOD::SummaryType::numberOfTRTHits);
540 int n_trt_hits = unsigned(tempHitsVariable);
541
542 bool is_pT_over_20GeV = false;
543
544 if (mPer->pT() > 20 * CLHEP::GeV) {
545 is_pT_over_20GeV = true;
546 } else {
547 is_pT_over_20GeV = false;
548 }
549
550 const bool cnst_is_pT_over_20GeV = is_pT_over_20GeV;
551
552 const bool passed_track_preselection = (static_cast<bool>(m_trackSelTool->accept(**p_trk)) || m_isCosmics) &&
553 n_trt_hits >= m_min_trt_hits &&
554 mPer->pT() > (m_isCosmics?m_min_pT.value() : 2.0 * CLHEP::GeV); // Hardcoded cut for pT 2.0 GeV for collision setup
555 if (!passed_track_preselection) continue;
556
557 nTotalTracks++;
558 int checkB[2] = {0, 0};
559 int checkEC[2] = {0, 0};
560 int checkEC_B[2] = {0, 0};
561 int nTRTHitsW[2][2];
562 int nTRTHits_side[2][2];
563 int nTRTHitsW_perwheel[2][18];
564 int hitontrack[2] = {0, 0};
565 int hitontrack_E_side[2] = {0, 0};
566
567 for (int ibe = 0; ibe < 2; ibe++) {
568 for (int iside = 0; iside < 2; iside++) {
569 nTRTHits_side[ibe][iside] = -1;
570 nTRTHitsW[ibe][iside] = 0;
571 }
572 std::fill(nTRTHitsW_perwheel[ibe], nTRTHitsW_perwheel[ibe] + 18, 0);
573 }
574
575 int barrel_ec = 0;
576 int layer_or_wheel = 0;
577 int phi_module = 0;
578 int straw_layer = 0;
579 int straw = 0;
580 int nearest_straw_layer[2] = {100, 100};
581 int nearest_straw[2] = {0, 0};
582 int testLayer[2] = {100, 100};
583 float phi2D[2] = {-100, -100};
584
585 for (TSOSItBeginTemp = TSOSItBegin0; TSOSItBeginTemp != TSOSItEnd; ++TSOSItBeginTemp) {
586 if ((*TSOSItBeginTemp) == nullptr) continue;
587
588 if (! ((*TSOSItBeginTemp)->type(Trk::TrackStateOnSurface::Measurement)) ) continue;
589 const InDet::TRT_DriftCircleOnTrack *trtCircle = dynamic_cast<const InDet::TRT_DriftCircleOnTrack *>((*TSOSItBeginTemp)->measurementOnTrack());
590
591 if (!trtCircle) continue;
592 const Trk::TrackParameters *aTrackParam = dynamic_cast<const Trk::TrackParameters *>((*TSOSItBeginTemp)->trackParameters());
593
594 if (!aTrackParam) continue;
595 Identifier DCoTId = trtCircle->identify();
596 barrel_ec = m_pTRTHelper->barrel_ec(DCoTId);
597 int ibe = std::abs(barrel_ec) - 1;
598 layer_or_wheel = m_pTRTHelper->layer_or_wheel (DCoTId);
599 straw_layer = m_pTRTHelper->straw_layer(DCoTId);
600 straw = m_pTRTHelper->straw(DCoTId);
601
602 // Restrict ourselves to the inner most TRT layers To get detector phi.
603 if (layer_or_wheel >= testLayer[ibe]) continue;
604 testLayer[ibe] = layer_or_wheel;
605
606 if (straw_layer < nearest_straw_layer[ibe]) {
607 nearest_straw_layer[ibe] = straw_layer;
608 nearest_straw[ibe] = straw;
609 const InDetDD::TRT_BaseElement *circleElement = nullptr;
610 circleElement = trtCircle->detectorElement();
611 phi2D[ibe] = radToDegrees(circleElement->strawCenter(nearest_straw[ibe]).phi());
612 circleElement = nullptr;
613 }
614 }
615
616 if (phi2D[0] == -999) {
617 ATH_MSG_DEBUG("Track did not go through inner layer of Barrel.");
618 } else {
619 ATH_MSG_VERBOSE("Track's closest approach is m_layer_or_wheel: " <<
620 testLayer[0] << " m_straw_layer: " <<
621 nearest_straw_layer[0] << " (in the Barrel).");
622 }
623
624 if (phi2D[1] == -999) {
625 ATH_MSG_DEBUG("Track did not go through any inner layer of EndCap A or C.");
626 } else {
627 ATH_MSG_VERBOSE("Track's closest approach is m_layer_or_wheel: " <<
628 testLayer[1] << " m_straw_layer: " <<
629 nearest_straw_layer[1] << " (in the EndCaps).");
630 }
631
632 bool trackfound[2][64];
633
634 for (int i = 0; i < 2; i++) {
635 std::fill(trackfound[i], trackfound[i] + 64, false);
636 }
637
638 for (TSOSItBegin = TSOSItBegin0; TSOSItBegin != TSOSItEnd; ++TSOSItBegin) {
639 // Select a TSOS which is non-empty, measurement type and contains both drift circle and track parameters informations
640 if ((*TSOSItBegin) == nullptr) continue;
641
642 if ( !((*TSOSItBegin)->type(Trk::TrackStateOnSurface::Measurement)) ) continue;
643
644 const InDet::TRT_DriftCircleOnTrack *trtCircle = dynamic_cast<const InDet::TRT_DriftCircleOnTrack *>((*TSOSItBegin)->measurementOnTrack());
645
646 if (!trtCircle) continue;
647
648 const Trk::TrackParameters *aTrackParam = dynamic_cast<const Trk::TrackParameters *>((*TSOSItBegin)->trackParameters());
649
650 if (!aTrackParam) continue;
651
652 Identifier DCoTId = trtCircle->identify();
653 barrel_ec = m_pTRTHelper->barrel_ec(DCoTId);
654 layer_or_wheel = m_pTRTHelper->layer_or_wheel(DCoTId);
655 phi_module = m_pTRTHelper->phi_module(DCoTId);
656 straw_layer = m_pTRTHelper->straw_layer(DCoTId);
657 straw = m_pTRTHelper->straw(DCoTId);
658 int ibe = std::abs(barrel_ec) - 1; // ibe = 0 (Barrel), ibe = 1 (Endcap)
659 int iside = barrel_ec > 0 ? 0 : 1; // iside = 0 (Side A), iside = 1 (Side C)
660 int thisStrawNumber[2] = {-1, -1};
661 int chip[2] = {0, 0};
662
663 if (ibe == 0) {
664 thisStrawNumber[ibe] = strawNumber(straw, straw_layer, layer_or_wheel);
665
666 if (thisStrawNumber[ibe] >= 0 && thisStrawNumber[ibe] < s_Straw_max[ibe]) {
667 chip[ibe] = m_mat_chip_B.at(phi_module).at(thisStrawNumber[ibe]);
668 }
669 } else if (ibe == 1) {
670 thisStrawNumber[ibe] = strawNumberEndCap(straw, straw_layer, layer_or_wheel, phi_module, barrel_ec);
671
672 if (thisStrawNumber[ibe] >= 0 && thisStrawNumber[ibe] < s_Straw_max[ibe]) {
673 chip[ibe] = m_mat_chip_E.at(phi_module).at(thisStrawNumber[ibe]);
674 }
675 } else {
676 thisStrawNumber[ibe] = -1;
677 }
678
679 if (thisStrawNumber[ibe] < 0 || thisStrawNumber[ibe] >= s_Straw_max[ibe]) continue;
680
681 if (checkB[iside] == 0 && ibe == 0) {
682 nTracksB[iside]++;
683 checkB[iside] = 1;
684 }
685
686 if (checkEC[iside] == 0 && ibe == 1) {
687 nTracksEC[iside]++;
688 checkEC[iside] = 1;
689 }
690
691 if (checkEC_B[iside] == 0 && checkB[iside] == 1 && ibe == 1 ) {
692 nTracksEC_B[iside]++;
693 checkEC_B[iside] = 1;
694 }
695
696 Identifier surfaceID;
697 const Trk::MeasurementBase *mesb = (*TSOSItBegin)->measurementOnTrack();
698 surfaceID = trtCircle->identify();
699 const bool isArgonStraw = ( Straw_Gastype( m_sumTool->getStatusHT(surfaceID, ctx) ) == GasType::Ar );
700 // Assume always Xe if m_ArgonXenonSplitter is not enabled, otherwise check the straw status (good is Xe, non-good is Ar)
701 float temp_locr = aTrackParam->parameters()[Trk::driftRadius];
702 TRTCond::RtRelation const *rtr = m_TRTCalDbTool->getRtRelation(surfaceID);
703 int iphi_module = -9999;
704
705 if (iside == 0) iphi_module = phi_module;
706 else if (iside == 1) iphi_module = phi_module + 32;
707
708 if (iphi_module >= 0 && iphi_module < 64) trackfound[ibe][iphi_module] = true;
709 else ATH_MSG_ERROR("Variable iphi_module is out of range!");
710
711 if (((ibe == 0) && (temp_locr < m_DistToStraw)) ||
712 ((ibe == 1) && ((*TSOSItBegin)->type(Trk::TrackStateOnSurface::Measurement) ||
713 (*TSOSItBegin)->type(Trk::TrackStateOnSurface::Outlier) ||
714 (*TSOSItBegin)->type(Trk::TrackStateOnSurface::Hole)) &&
715 (temp_locr < m_DistToStraw))) {
716 if (m_idHelper->is_trt(DCoTId)) {
717 if (ibe == 0) {
718 hitontrack[ibe]++;
719 } else if (ibe == 1) {
720 hitontrack[ibe]++;
721 hitontrack_E_side[iside]++;
722 }
723 }
724 }
725 const InDet::TRT_DriftCircle *RawDriftCircle = dynamic_cast<const InDet::TRT_DriftCircle *>(trtCircle->prepRawData());
726 bool isTubeHit = (mesb->localCovariance()(Trk::locX, Trk::locX) > 1.0) ? 1 : 0;
727 if (RawDriftCircle) {
728 nTRTHits_side[ibe][iside]++;
730
731 const bool driftTimeValid = RawDriftCircle->driftTimeValid();
732
733 if (driftTimeValid) {
734 const float validRawDriftTime = RawDriftCircle->rawDriftTime();
735
736 if (m_doExpert && m_doStraws) {
737 ValidRawDriftTimeonTrkS_x = thisStrawNumber[ibe];
738 ValidRawDriftTimeonTrkS_y = validRawDriftTime;
739 fill("TRTTrackHistograms"+std::to_string(ibe)+std::to_string(iphi_module), ValidRawDriftTimeonTrkS_x, ValidRawDriftTimeonTrkS_y);
740 }
741
742 if (m_doExpert && m_doChips) {
743 ValidRawDriftTimeonTrkC_x = chip[ibe] - 1;
744 ValidRawDriftTimeonTrkC_y = validRawDriftTime;
745 fill("TRTTrackHistograms"+std::to_string(ibe)+std::to_string(iphi_module), ValidRawDriftTimeonTrkC_x, ValidRawDriftTimeonTrkC_y);
746 }
747 }
748
749 if (m_doShift && m_doStraws) {
750 if (ibe == 0) {
751 if (isArgonStraw) {
752 DriftTimeonTrkDist_B_Ar = RawDriftCircle->rawDriftTime();
753 fill("ShiftTRTTrackHistograms"+std::to_string(ibe), DriftTimeonTrkDist_B_Ar);
754 }
755 else {
756 DriftTimeonTrkDist_B = RawDriftCircle->rawDriftTime();
757 fill("ShiftTRTTrackHistograms"+std::to_string(ibe), DriftTimeonTrkDist_B);
758 }
759 } else if (ibe == 1) {
760 if (isArgonStraw) {
761 DriftTimeonTrkDist_E_Ar = RawDriftCircle->rawDriftTime();
762 fill("ShiftTRTTrackHistograms"+std::to_string(ibe)+std::to_string(iside), DriftTimeonTrkDist_E_Ar);
763 }
764 else {
765 DriftTimeonTrkDist_E = RawDriftCircle->rawDriftTime();
766 fill("ShiftTRTTrackHistograms"+std::to_string(ibe)+std::to_string(iside), DriftTimeonTrkDist_E);
767 }
768 }
769 }
770
771 float locR_err = 0.0;
772 const AmgSymMatrix(5)* b_err = aTrackParam->covariance();
773
774 if (b_err) {
775 if (!Amg::hasPositiveDiagElems(*b_err)) {
776 ATH_MSG_WARNING("Some diagonal element(s) of the covariance matrix is (are) infinite or smaller than / too close to zero or above the covariance cutoff");
777 }
778 else {
779 locR_err = Amg::error(*b_err, Trk::locR);
780 }
781 } else {
782 ATH_MSG_ERROR("Track parameters have no covariance attached.");
783 }
784
785 float loc_err = Amg::error(trtCircle->localCovariance(), Trk::driftRadius);
786 float locR = aTrackParam->parameters()[Trk::driftRadius];
787 float loc = trtCircle->localParameters()[Trk::driftRadius];
788
789 if (isTubeHit) {
790 bool isOK = false;
791 loc = m_drifttool->driftRadius(RawDriftCircle->rawDriftTime(), DCoTId, t0, isOK);
792
793 if ((loc * locR) < 0) loc = -loc;
794 }
795
796 // Calculate Residuals for hit
797 if (m_doShift && m_doStraws) {
798 bool pull_b_fill;
799 double pull_b = -999.;
800 const double diff_loc_err = std::abs(loc_err-locR_err);
801 if ( diff_loc_err > 0 ) {
802 pull_b = (loc - locR) /diff_loc_err ;
803 pull_b_fill = true;
804 }
805 else pull_b_fill = false;
806 const double thist0 = m_TRTCalDbTool->getT0(surfaceID);
807 const double trkdrifttime = (!rtr) ? 0 : rtr->drifttime(std::abs(locR));
808 const double timeresidual = RawDriftCircle->rawDriftTime() - thist0 - trkdrifttime;
809
810 if (ibe == 0) {
811 if (!isTubeHit) {
812 if (pull_b_fill) {
813 Pull_Biased_Barrel = pull_b;
814 fill("ShiftTRTTrackHistograms"+std::to_string(ibe), Pull_Biased_Barrel);
815 }
816 }
817
818 if (isArgonStraw) {
819 Residual_B_Ar = loc - locR;
820 fill("ShiftTRTTrackHistograms"+std::to_string(ibe), Residual_B_Ar);
821 Residual_noTubeHits_B_Ar = loc - locR;
822 if (!isTubeHit) fill("ShiftTRTTrackHistograms"+std::to_string(ibe), Residual_noTubeHits_B_Ar);
823
824 if (cnst_is_pT_over_20GeV) {
825 Residual_B_Ar_20GeV = loc - locR;
826 fill("ShiftTRTTrackHistograms"+std::to_string(ibe), Residual_B_Ar_20GeV);
827 Residual_noTubeHits_B_Ar_20GeV = loc - locR;
828 if (!isTubeHit) fill("ShiftTRTTrackHistograms"+std::to_string(ibe), Residual_noTubeHits_B_Ar_20GeV);
829 }
830 TimeResidual_B_Ar = timeresidual;
831 fill("ShiftTRTTrackHistograms"+std::to_string(ibe), TimeResidual_B_Ar);
832 TimeResidual_noTubeHits_B_Ar = timeresidual;
833 if (!isTubeHit) fill("ShiftTRTTrackHistograms"+std::to_string(ibe), TimeResidual_noTubeHits_B_Ar);
834 } else {
835 Residual_B = loc - locR;
836 fill("ShiftTRTTrackHistograms"+std::to_string(ibe), Residual_B);
837 Residual_noTubeHits_B = loc - locR;
838 if (!isTubeHit) fill("ShiftTRTTrackHistograms"+std::to_string(ibe), Residual_noTubeHits_B);
839 TimeResidual_B = timeresidual;
840 fill("ShiftTRTTrackHistograms"+std::to_string(ibe), TimeResidual_B);
841 TimeResidual_noTubeHits_B = timeresidual;
842 if (!isTubeHit) fill("ShiftTRTTrackHistograms"+std::to_string(ibe), TimeResidual_noTubeHits_B);
843
844 if (cnst_is_pT_over_20GeV) {
845 Residual_B_20GeV = loc - locR;
846 fill("ShiftTRTTrackHistograms"+std::to_string(ibe), Residual_B_20GeV);
847 Residual_noTubeHits_B_20GeV = loc - locR;
848 if (!isTubeHit) fill("ShiftTRTTrackHistograms"+std::to_string(ibe), Residual_noTubeHits_B_20GeV);
849 }
850 }
851 } else if (ibe == 1) {
852 if (!isTubeHit) {
853 if (pull_b_fill) {
854 Pull_Biased_EndCap = pull_b;
855 fill("ShiftTRTTrackHistograms"+std::to_string(ibe), Pull_Biased_EndCap);
856 }
857 }
858
859 if (isArgonStraw) {
860 Residual_E_Ar = loc - locR;
861 fill("ShiftTRTTrackHistograms"+std::to_string(ibe)+std::to_string(iside), Residual_E_Ar);
862 Residual_noTubeHits_E_Ar = loc - locR;
863 if (!isTubeHit) fill("ShiftTRTTrackHistograms"+std::to_string(ibe)+std::to_string(iside), Residual_noTubeHits_E_Ar);
864 TimeResidual_E_Ar = timeresidual;
865 fill("ShiftTRTTrackHistograms"+std::to_string(ibe)+std::to_string(iside), TimeResidual_E_Ar);
866 TimeResidual_noTubeHits_E_Ar = timeresidual;
867 if (!isTubeHit) fill("ShiftTRTTrackHistograms"+std::to_string(ibe)+std::to_string(iside), TimeResidual_noTubeHits_E_Ar);
868
869 if (cnst_is_pT_over_20GeV) {
870 Residual_E_Ar_20GeV = loc - locR;
871 fill("ShiftTRTTrackHistograms"+std::to_string(ibe)+std::to_string(iside), Residual_E_Ar_20GeV);
872 Residual_noTubeHits_E_Ar_20GeV = loc - locR;
873 if (!isTubeHit) fill("ShiftTRTTrackHistograms"+std::to_string(ibe)+std::to_string(iside), Residual_noTubeHits_E_Ar_20GeV);
874 }
875 } else {
876 Residual_E = loc - locR;
877 fill("ShiftTRTTrackHistograms"+std::to_string(ibe)+std::to_string(iside), Residual_E);
878 Residual_noTubeHits_E = loc - locR;
879 if (!isTubeHit) fill("ShiftTRTTrackHistograms"+std::to_string(ibe)+std::to_string(iside), Residual_noTubeHits_E);
880 TimeResidual_E = timeresidual;
881 fill("ShiftTRTTrackHistograms"+std::to_string(ibe)+std::to_string(iside), TimeResidual_E);
882 TimeResidual_noTubeHits_E = timeresidual;
883 if (!isTubeHit) fill("ShiftTRTTrackHistograms"+std::to_string(ibe)+std::to_string(iside), TimeResidual_noTubeHits_E);
884
885 if (cnst_is_pT_over_20GeV) {
886 Residual_E_20GeV = loc - locR;
887 fill("ShiftTRTTrackHistograms"+std::to_string(ibe)+std::to_string(iside), Residual_E_20GeV);
888 Residual_noTubeHits_E_20GeV = loc - locR;
889 if (!isTubeHit) fill("ShiftTRTTrackHistograms"+std::to_string(ibe)+std::to_string(iside), Residual_noTubeHits_E_20GeV);
890 }
891 }
892 }
893 }
894
895 if (m_doShift) {
896 if (ibe == 0) {
897 if (isArgonStraw) {
898 WireToTrkPosition_B_Ar = locR;
899 fill("ShiftTRTTrackHistograms"+std::to_string(ibe), WireToTrkPosition_B_Ar);
900 } else {
901 WireToTrkPosition_B = locR;
902 fill("ShiftTRTTrackHistograms"+std::to_string(ibe), WireToTrkPosition_B);
903 }
904 } else if (ibe == 1) {
905 if (isArgonStraw) {
906 WireToTrkPosition_E_Ar = locR;
907 fill("ShiftTRTTrackHistograms"+std::to_string(ibe)+std::to_string(iside), WireToTrkPosition_E_Ar);
908 } else {
909 WireToTrkPosition_E = locR;
910 fill("ShiftTRTTrackHistograms"+std::to_string(ibe)+std::to_string(iside), WireToTrkPosition_E);
911 }
912 }
913 }
914
915 const float LE = (RawDriftCircle->driftTimeBin()) * 3.125;
916 const float EP = timeCor;
917
918 if (m_doShift && m_doStraws) {
919 if (ibe == 0) {
920 if (isArgonStraw) {
921 if (m_isCosmics) {
922 RtRelation_B_Ar_x = LE - EP - t0;
923 RtRelation_B_Ar_y = std::abs(locR);
924 fill("ShiftTRTTrackHistograms"+std::to_string(ibe), RtRelation_B_Ar_x, RtRelation_B_Ar_y);
925 } else {
926 RtRelation_B_Ar_x = LE - t0;
927 RtRelation_B_Ar_y = std::abs(locR);
928 fill("ShiftTRTTrackHistograms"+std::to_string(ibe), RtRelation_B_Ar_x, RtRelation_B_Ar_y);
929 }
930 } else {
931 if (m_isCosmics) {
932 RtRelation_B_x = LE - EP - t0;
933 RtRelation_B_y = std::abs(locR);
934 fill("ShiftTRTTrackHistograms"+std::to_string(ibe), RtRelation_B_x, RtRelation_B_y);
935 } else {
936 RtRelation_B_x = LE - t0;
937 RtRelation_B_y = std::abs(locR);
938 fill("ShiftTRTTrackHistograms"+std::to_string(ibe), RtRelation_B_x, RtRelation_B_y);
939 }
940 }
941 } else if (ibe == 1) {
942 if (isArgonStraw) {
943 if (m_isCosmics) {
944 RtRelation_E_Ar_x = LE - EP - t0;
945 RtRelation_E_Ar_y = std::abs(locR);
946 fill("ShiftTRTTrackHistograms"+std::to_string(ibe)+std::to_string(iside), RtRelation_E_Ar_x, RtRelation_E_Ar_y);
947 } else {
948 RtRelation_E_Ar_x = LE - t0;
949 RtRelation_E_Ar_y = std::abs(locR);
950 fill("ShiftTRTTrackHistograms"+std::to_string(ibe)+std::to_string(iside), RtRelation_E_Ar_x, RtRelation_E_Ar_y);
951 }
952 } else {
953 if (m_isCosmics) {
954 RtRelation_E_x = LE - EP - t0;
955 RtRelation_E_y = std::abs(locR);
956 fill("ShiftTRTTrackHistograms"+std::to_string(ibe)+std::to_string(iside), RtRelation_E_x, RtRelation_E_y);
957 } else {
958 RtRelation_E_x = LE - t0;
959 RtRelation_E_y = std::abs(locR);
960 fill("ShiftTRTTrackHistograms"+std::to_string(ibe)+std::to_string(iside), RtRelation_E_x, RtRelation_E_y);
961 }
962 }
963 }
964 }
965
966 const int driftTimeBin = RawDriftCircle->driftTimeBin();
967 const int firstBinHigh = RawDriftCircle->firstBinHigh();
968 const int lastBinHigh = RawDriftCircle->lastBinHigh();
969 const int trailingEdge = RawDriftCircle->trailingEdge();
970 float trailingEdgeScaled = (trailingEdge + 1) * 3.125;
971
972 if (firstBinHigh || lastBinHigh || driftTimeBin > 0 || trailingEdge < 23) nTRTHitsW[ibe][iside]++;
973
974 if ((trailingEdge < 23) &&
975 !(RawDriftCircle->lastBinHigh()) &&
976 !(RawDriftCircle->firstBinHigh())) {
977
978 if (m_doExpert && m_doChips) {
979 HitTronTMapC_x = chip[ibe] - 1;
980 HitTronTMapC_y = trailingEdgeScaled;
981 fill("TRTTrackHistograms"+std::to_string(ibe)+std::to_string(iphi_module), HitTronTMapC_x, HitTronTMapC_y);
982 }
983
984 if (m_doExpert && m_doStraws) {
985 HitTronTwEPCMapS_x = thisStrawNumber[ibe];
986 HitTronTwEPCMapS_y = trailingEdgeScaled - timeCor;
987 fill("TRTTrackHistograms"+std::to_string(ibe)+std::to_string(iphi_module), HitTronTwEPCMapS_x, HitTronTwEPCMapS_y);
988 }
989
990 if (m_doExpert && m_doChips) {
991 HitTronTwEPCMapC_x = chip[ibe] - 1;
992 HitTronTwEPCMapC_y = trailingEdgeScaled - timeCor;
993 fill("TRTTrackHistograms"+std::to_string(ibe)+std::to_string(iphi_module), HitTronTwEPCMapC_x, HitTronTwEPCMapC_y);
994 }
995
996 if (m_doShift && m_doStraws) {
997 if (RawDriftCircle->driftTimeValid()) {
998 if (ibe == 0) {
999 if (isArgonStraw) {
1000 TronTDist_B_Ar = trailingEdgeScaled;
1001 fill("ShiftTRTTrackHistograms"+std::to_string(ibe), TronTDist_B_Ar);
1002 AvgTroTDetPhi_B_Ar_x = phi2D[ibe];
1003 AvgTroTDetPhi_B_Ar_y = trailingEdgeScaled;
1004 fill("ShiftTRTTrackHistograms"+std::to_string(ibe), AvgTroTDetPhi_B_Ar_x, AvgTroTDetPhi_B_Ar_y);
1005 } else {
1006 TronTDist_B = trailingEdgeScaled;
1007 fill("ShiftTRTTrackHistograms"+std::to_string(ibe), TronTDist_B);
1008 AvgTroTDetPhi_B_x = phi2D[ibe];
1009 AvgTroTDetPhi_B_y = trailingEdgeScaled;
1010 fill("ShiftTRTTrackHistograms"+std::to_string(ibe), AvgTroTDetPhi_B_x, AvgTroTDetPhi_B_y);
1011 }
1012 } else if (ibe == 1) {
1013 if (isArgonStraw) {
1014 TronTDist_E_Ar = trailingEdgeScaled;
1015 fill("ShiftTRTTrackHistograms"+std::to_string(ibe)+std::to_string(iside), TronTDist_E_Ar);
1016 AvgTroTDetPhi_E_Ar_x = phi2D[ibe];
1017 AvgTroTDetPhi_E_Ar_y = trailingEdgeScaled;
1018 fill("ShiftTRTTrackHistograms"+std::to_string(ibe)+std::to_string(iside), AvgTroTDetPhi_E_Ar_x, AvgTroTDetPhi_E_Ar_y);
1019 } else {
1020 TronTDist_E = trailingEdgeScaled;
1021 fill("ShiftTRTTrackHistograms"+std::to_string(ibe)+std::to_string(iside), TronTDist_E);
1022 AvgTroTDetPhi_E_x = phi2D[ibe];
1023 AvgTroTDetPhi_E_y = trailingEdgeScaled;
1024 fill("ShiftTRTTrackHistograms"+std::to_string(ibe)+std::to_string(iside), AvgTroTDetPhi_E_x, AvgTroTDetPhi_E_y);
1025 }
1026 }
1027 }
1028 }
1029 }
1030 }
1031 }
1032
1033 // ToDo: work on the part below
1034 for (int ibe = 0; ibe < 2; ibe++) {
1035 for (int i = 0; i < 64; i++)
1036 if (trackfound[ibe][i])
1037 ntrackstack[ibe][i]++;
1038
1039 if (m_doShift) {
1040 if (ibe == 0) {
1041 if (hitontrack[ibe] >= m_minTRThits) {
1042 NumHoTDetPhi_B_x = phi2D[ibe];
1043 NumHoTDetPhi_B_y = hitontrack[ibe];
1044 fill("ShiftTRTTrackHistograms"+std::to_string(ibe), NumHoTDetPhi_B_x, NumHoTDetPhi_B_y);
1045 }
1046 }
1047
1048 if (ibe == 1) {
1049 if (hitontrack_E_side[0] >= m_minTRThits) {
1050 NumHoTDetPhi_E_x = phi2D[ibe];
1051 NumHoTDetPhi_E_y = hitontrack_E_side[0];
1052 fill("ShiftTRTTrackHistograms"+std::to_string(ibe)+"0", NumHoTDetPhi_E_x, NumHoTDetPhi_E_y);
1053 }
1054
1055 if (hitontrack_E_side[1] >= m_minTRThits) {
1056 NumHoTDetPhi_E_x = phi2D[ibe];
1057 NumHoTDetPhi_E_y = hitontrack_E_side[1];
1058 fill("ShiftTRTTrackHistograms"+std::to_string(ibe)+"1", NumHoTDetPhi_E_x, NumHoTDetPhi_E_y);
1059 }
1060 }
1061 }
1062
1063 if (phi2D[ibe] < 0) continue;
1064
1065 if (m_doShift) {
1066 if (ibe == 0) {
1067 if (nTRTHitsW[ibe][0] + nTRTHitsW[ibe][1] > 0) {
1068 NumTrksDetPhi_B = phi2D[ibe];
1069 fill("ShiftTRTTrackHistograms"+std::to_string(ibe), NumTrksDetPhi_B);
1070 }
1071 } else if (ibe == 1) {
1072 if (nTRTHitsW[ibe][0] > 0) {
1073 NumTrksDetPhi_E = phi2D[ibe];
1074 fill("ShiftTRTTrackHistograms"+std::to_string(ibe)+"0", NumTrksDetPhi_E);
1075 }
1076
1077 if (nTRTHitsW[ibe][1] > 0) {
1078 NumTrksDetPhi_E = phi2D[ibe];
1079 fill("ShiftTRTTrackHistograms"+std::to_string(ibe)+"1", NumTrksDetPhi_E);
1080 }
1081 }
1082 }
1083
1084 if (ibe == 0) {
1085 if ((nTRTHitsW[ibe][0] + nTRTHitsW[ibe][1]) > 0) {
1086 nTrksperLB_B++;
1087 }
1088 if (comTimeObject) {
1089 if (m_doShift && (phi2D[ibe] > 0) && (std::abs(timeCor) > 1e-8)) {
1090 EvtPhaseDetPhi_B_x = phi2D[ibe];
1091 EvtPhaseDetPhi_B_y = timeCor;
1092 fill("ShiftTRTTrackHistograms"+std::to_string(ibe), EvtPhaseDetPhi_B_x, EvtPhaseDetPhi_B_y);
1093 }
1094 }
1095 } else if (ibe == 1) {
1096 for (int iside = 0; iside < 2; iside++) {
1097 if (nTRTHitsW[ibe][iside] > 0) nTrksperLB_E[iside]++;
1098 if (comTimeObject) {
1099 if (nTRTHits_side[ibe][iside] > 5 && (std::abs(timeCor)
1100 > 1e-8)) {
1101 if (m_doShift) {
1102 EvtPhaseDetPhi_E_x = phi2D[ibe];
1103 EvtPhaseDetPhi_E_y = timeCor;
1104 fill("ShiftTRTTrackHistograms"+std::to_string(ibe)+std::to_string(iside), EvtPhaseDetPhi_E_x, EvtPhaseDetPhi_E_y);
1105 }
1106 }
1107 }
1108 }
1109 }
1110 }
1111 }
1112
1113 if (comTimeObject) {
1114 static const std::string histoName{"ShiftTRTTrackHistograms0"};
1115 if (std::abs(timeCor) > 1e-8) {
1116 if (m_doShift) {
1117 EvtPhase = timeCor;
1118 fill(histoName, EvtPhase);
1119 }
1120
1121 if (m_doShift && trigDecision) {
1122 std::vector<int> trigid;
1123 trigid.clear(); // Trigger ID
1124 // Get bits for trigger after veto
1125 std::vector<unsigned int> level1TAV = trigDecision->tav();
1126
1127 for (unsigned int j = 0; j < 8 && j < level1TAV.size(); ++j) {
1128 for (unsigned int i = 0; i < 32; ++i) {
1129 if ((level1TAV[j] >> i) & 0x1) {
1130 trigid.push_back(i + (j % 8) * 32); // Found the ID
1131 }
1132 }
1133 }
1134
1135 for (unsigned int j = 0; j < trigid.size(); ++j) {
1136 EvtPhaseVsTrig_x = timeCor;
1137 EvtPhaseVsTrig_y = trigid[j];
1138 fill(histoName, EvtPhaseVsTrig_x, EvtPhaseVsTrig_y);
1139 }
1140 }
1141 }
1142 }
1143
1144 if (m_doShift) {
1145 Summary = 0;
1146 SummaryWeight = 1.;
1147 fill("SmryHistograms", SummaryWeight, Summary);
1148
1149 if (m_doTracksMon) {
1150 Summary = 1;
1151 SummaryWeight = nTotalTracks;
1152 fill("SmryHistograms", SummaryWeight, Summary);
1153 Summary = 2;
1154 SummaryWeight = nTracksB[0];
1155 fill("SmryHistograms", SummaryWeight, Summary);
1156 Summary = 3;
1157 SummaryWeight = nTracksB[1];
1158 fill("SmryHistograms", SummaryWeight, Summary);
1159 Summary = 4;
1160 SummaryWeight = nTracksEC[0];
1161 fill("SmryHistograms", SummaryWeight, Summary);
1162 Summary = 5;
1163 SummaryWeight = nTracksEC[1];
1164 fill("SmryHistograms", SummaryWeight, Summary);
1165 Summary = 6;
1166 SummaryWeight = nTracksEC_B[0];
1167 fill("SmryHistograms", SummaryWeight, Summary);
1168 Summary = 7;
1169 SummaryWeight = nTracksEC_B[1];
1170 fill("SmryHistograms", SummaryWeight, Summary);
1171 }
1172
1173 const unsigned int lumiBlock = eventInfo.lumiBlock();
1174 ATH_MSG_VERBOSE("This is lumiblock : " << lumiBlock);
1175 int lastLumiBlock = -99; // ToDo - last lumiblock calculation is not correct
1176 if ((int)lumiBlock != lastLumiBlock) {
1177 lastLumiBlock = lumiBlock;
1178 }
1179 float evtLumiBlock = 1.;
1180 float lumiBlockScale = (evtLumiBlock > 0) ? (1. / evtLumiBlock) : 0;
1181
1182 if (m_doTracksMon && evtLumiBlock > 0) {
1183 NTrksperLB_x = lastLumiBlock;
1184 NTrksperLB_y = (float)nTrksperLB_B * lumiBlockScale;
1185 fill("ShiftTRTTrackHistograms0", NTrksperLB_x, NTrksperLB_y);
1186
1187 for (int iside = 0; iside < 2; iside++) {
1188 NTrksperLB_x = lastLumiBlock;
1189 NTrksperLB_y = (float)nTrksperLB_E[iside] * lumiBlockScale;
1190 fill("ShiftTRTTrackHistograms1"+std::to_string(iside), NTrksperLB_x, NTrksperLB_y);
1191 }
1192
1193 nTrksperLB_B = 0;
1194
1195 for (int iside = 0; iside < 2; iside++) {
1196 nTrksperLB_E[iside] = 0;
1197 }
1198 }
1199 }
1200
1201 ATH_MSG_DEBUG("end of event and lumi block");
1202 //number of events in lumiblock counter setted to zero since it is end of the run or the lumiblock
1203
1204 return StatusCode::SUCCESS;
1205}
Scalar theta() const
theta method
#define AmgSymMatrix(dim)
static Double_t t0
bool is_trt(Identifier id) const
double getTime() const
Definition ComTime.h:44
const Amg::Vector3D & strawCenter(int straw) const
Straw Surface: Local -> global transform of the straw via integer.
virtual const InDetDD::TRT_BaseElement * detectorElement() const override final
returns the detector element, assoicated with the PRD of this class
bool driftTimeValid() const
return true if the corrected drift time is OK
int driftTimeBin() const
returns the leading edge bin defined as in TRT_LoLumRawData to be the first 0-1 transition
bool lastBinHigh() const
returns true if the last bin is high
bool firstBinHigh() const
returns true if the first bin is high
double rawDriftTime() const
returns the raw driftTime
int trailingEdge() const
returns the trailing edge bin
float radToDegrees(float radValue) const
int strawNumberEndCap(int strawNumber, int strawLayerNumber, int LayerNumber, int phi_stack, int side) const
const AtlasDetectorID * m_idHelper
Gaudi::Property< int > m_min_trt_hits
Gaudi::Property< float > m_min_pT
std::vector< std::vector< unsigned char > > m_mat_chip_E
std::vector< std::vector< unsigned char > > m_mat_chip_B
ToolHandle< ITRT_CalDbTool > m_TRTCalDbTool
int strawNumber(int strawNumber, int strawlayerNumber, int LayerNumber) const
ToolHandle< ITRT_DriftFunctionTool > m_drifttool
GasType Straw_Gastype(int stat) const
ToolHandle< ITRT_StrawStatusSummaryTool > m_sumTool
int straw(const Identifier &id) const
Definition TRT_ID.h:828
const LocalParameters & localParameters() const
Interface method to get the LocalParameters.
const Amg::MatrixX & localCovariance() const
Interface method to get the localError.
double pT() const
Access method for transverse momentum.
@ Outlier
This TSoS contains an outlier, that is, it contains a MeasurementBase/RIO_OnTrack which was not used ...
@ Hole
A hole on the track - this is defined in the following way.
const std::vector< uint32_t > & tav() const
Get the Trigger After Veto bits.
int trailingEdge(unsigned int m_word)
Definition driftCircle.h:64
int driftTimeBin(unsigned int m_word)
Definition driftCircle.h:50
bool lastBinHigh(unsigned int m_word)
bool firstBinHigh(unsigned int m_word)
double error(const Amg::MatrixX &mat, int index)
return diagonal error of the matrix caller should ensure the matrix is symmetric and the index is in ...
bool hasPositiveDiagElems(const AmgSymMatrix(N) &mat)
Returns true if all diagonal elements of the covariance matrix are finite aka sane in the above defin...
float nTRTHits(const U &p)
@ straw
Definition HitInfo.h:82
float j(const xAOD::IParticle &, const xAOD::TrackMeasurementValidation &hit, const Eigen::Matrix3d &jab_inv)
@ driftRadius
trt, straws
Definition ParamDefs.h:53
@ locX
Definition ParamDefs.h:37
@ locR
Definition ParamDefs.h:44
@ theta
Definition ParamDefs.h:66
setTeId lumiBlock

◆ 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 ( std::string_view 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)
const ToolHandle< GenericMonitoringTool > m_dummy
std::unordered_map< std::string, size_t, CxxUtils::TransparentStringHash, std::equal_to<> > m_toolLookupMap
ToolHandleArray< GenericMonitoringTool > m_tools
Array of Generic Monitoring Tools.

◆ 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}

◆ initialize()

StatusCode TRTMonitoringRun3ESD_Alg::initialize ( )
overridevirtual

initialize

Returns
StatusCode

Reimplemented from AthMonitorAlgorithm.

Definition at line 47 of file TRTMonitoringRun3ESD_Alg.cxx.

47 {
48 using namespace Monitored;
49
50 ATH_MSG_VERBOSE("Initializing TRT Monitoring");
51
52 // Initialize superclass
54
55 // Retrieve detector manager
56 ATH_CHECK( detStore()->retrieve(m_mgr, "TRT") );
57 // Get ID helper for TRT to access various detector components like straw, straw_layer, layer_or_wheel, phi_module, etc.
58 ATH_CHECK( detStore()->retrieve(m_pTRTHelper, "TRT_ID") );
59 ATH_CHECK( detStore()->retrieve(m_idHelper, "AtlasID") );
60
61 // InDetTrackSelectionTools initialization:
62 ATH_CHECK( m_trackSelTool.retrieve() );
63
64 if (m_doExpert) {
65 // Retrieve the TRT_Straw Status Service
66 if (m_sumTool.name().empty()) {
67 ATH_MSG_WARNING("TRT_StrawStatusTool not given.");
68 } else {
69 ATH_CHECK( m_sumTool.retrieve() );
70 }
71
72 Identifier ident;
73
74 if (m_sumTool.name() != "") {
75 ATH_MSG_VERBOSE("Trying " << m_sumTool << " isGood");
76 ATH_MSG_VERBOSE("TRT_StrawStatusTool reports status = " << m_sumTool->getStatus(ident, Gaudi::Hive::currentContext()));
77 }
78 } //If do expert
79
80 // Retrieve TRT_StrawNeighbourService
81 if (m_TRTStrawNeighbourSvc.name().empty()) {
82 ATH_MSG_WARNING("TRT_StrawNeighbourSvc not given.");
83 } else {
84 if (m_TRTStrawNeighbourSvc.retrieve().isFailure()) {
85 ATH_MSG_FATAL("Could not get StrawNeighbourSvc.");
86 }
87 }
88
89 // Get Track summary tool
90 if (m_TrackSummaryTool.retrieve().isFailure())
91 ATH_MSG_ERROR("Cannot get TrackSummaryTool");
92 else
93 ATH_MSG_DEBUG("Retrieved succesfully the track summary tool" << m_TrackSummaryTool);
94
95 //Get TRTCalDbTool
96 if (m_TRTCalDbTool.name().empty()) {
97 ATH_MSG_WARNING("TRT_CalDbTool not given.");
98 } else {
99 if (m_TRTCalDbTool.retrieve().isFailure()) {
100 ATH_MSG_ERROR("Cannot get TRTCalDBTool.");
101 }
102 }
103
104 ATH_CHECK(m_drifttool.retrieve());
105
106 // Initialize arrays
107 // These arrays store information about each entry to the HitMap histograms
108
109 if (true) {
110 //loop over straw hash index to create straw number mapping for TRTViewer
111 unsigned int maxHash = m_pTRTHelper->straw_layer_hash_max();
112
113 for (int ibe = 0; ibe < 2; ibe++) { // ibe=0(barrel), ibe=1(endcap)
114 for (unsigned int index = 0; index < maxHash; index++) {
115 IdentifierHash idHash = index;
116 Identifier id = m_pTRTHelper->layer_id(idHash);
117 int idBarrelEndcap = m_pTRTHelper->barrel_ec(id);
118 int idLayerWheel = m_pTRTHelper->layer_or_wheel(id);
119 int idPhiModule = m_pTRTHelper->phi_module(id);
120 int idStrawLayer = m_pTRTHelper->straw_layer(id);
121 bool isBarrel = m_pTRTHelper->is_barrel(id);
122 int idSide;
123 int sectorflag = 0;
124 const InDetDD::TRT_BaseElement *element = nullptr;
125
126 if (ibe == 0) { // barrel
127 idSide = idBarrelEndcap ? 1 : -1;
128
129 if (isBarrel && (idBarrelEndcap == -1)) {
130 sectorflag = 1;
131 element = m_mgr->getBarrelElement(idSide, idLayerWheel, idPhiModule, idStrawLayer);
132 }
133 } else if (ibe == 1) { // endcap
134 idSide = idBarrelEndcap ? 1 : 0;
135
136 if (!isBarrel && ((idBarrelEndcap == -2) || (idBarrelEndcap == 2))) {
137 sectorflag = 1;
138 element = m_mgr->getEndcapElement(idSide, idLayerWheel, idStrawLayer, idPhiModule);//, idStrawLayer_ec);
139 }
140 }
141
142 if (sectorflag == 1) {
143 if (!element) continue;
144
145 for (unsigned int istraw = 0; istraw < element->nStraws(); istraw++) {
146 std::vector<Identifier> neighbourIDs;
147 Identifier strawID = m_pTRTHelper->straw_id(id, int(istraw));
148 int i_chip, i_pad;
149 m_TRTStrawNeighbourSvc->getChip(strawID, i_chip);
150 m_TRTStrawNeighbourSvc->getPad(id, i_pad);
151
152 if (ibe == 0) { //barrel
153 if (idLayerWheel == 1) i_chip += 21;
154
155 if (idLayerWheel == 2) i_chip += 54;
156
157 int tempStrawNumber = strawNumber(istraw, idStrawLayer, idLayerWheel);
158
159 if (tempStrawNumber < 0 || tempStrawNumber > (s_Straw_max[ibe] - 1)) {
160 ATH_MSG_WARNING("Found tempStrawNumber = " << tempStrawNumber << " out of range.");
161 } else {
162 m_mat_chip_B.at(idPhiModule).at(tempStrawNumber) = i_chip;
163 m_mat_chip_B.at(idPhiModule + 32).at(tempStrawNumber) = i_chip;
164 }
165 } else if (ibe == 1) { //endcap
166 ++i_chip -= 104;
167 int tempStrawNumber = strawNumberEndCap(istraw, idStrawLayer, idLayerWheel, idPhiModule, idSide);
168
169 if (tempStrawNumber < 0 || tempStrawNumber > (s_Straw_max[ibe] - 1)) {
170 ATH_MSG_WARNING("Found tempStrawNumber = " << tempStrawNumber << " out of range.");
171 } else {
172 m_mat_chip_E.at(idPhiModule).at(tempStrawNumber) = i_chip;
173 m_mat_chip_E.at(idPhiModule + 32).at(tempStrawNumber) = i_chip;
174 }
175 }
176 }
177 }
178 }
179 }
180 }
181
182 // Initialization of VarHandleKeys
184 ATH_CHECK( m_xAODEventInfoKey.initialize() );
188
189 return StatusCode::SUCCESS;
190}
virtual StatusCode initialize() override
initialize
unsigned int nStraws() const
Number of straws in the element.
const TRT_BarrelElement * getBarrelElement(unsigned int positive, unsigned int moduleIndex, unsigned int phiIndex, unsigned int strawLayerIndex) const
Access Barrel Elements:---------------—(Fast)-------------------------—.
const TRT_EndcapElement * getEndcapElement(unsigned int positive, unsigned int wheelIndex, unsigned int strawLayerIndex, unsigned int phiIndex) const
Access Endcap Elements:---------------—(Fast)--------------------------—.
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
SG::ReadHandleKey< InDetTimeCollection > m_TRT_BCIDCollectionKey
ToolHandle< Trk::ITrackSummaryTool > m_TrackSummaryTool
ServiceHandle< ITRT_StrawNeighbourSvc > m_TRTStrawNeighbourSvc
SG::ReadHandleKey< xAOD::EventInfo > m_xAODEventInfoKey
const InDetDD::TRT_DetectorManager * m_mgr
Identifier layer_id(int barrel_ec, int phi_module, int layer_or_wheel, int straw_layer) const
For an individual straw layer.
Definition TRT_ID.h:502
size_type straw_layer_hash_max() const
Definition TRT_ID.h:846
bool is_barrel(const Identifier &id) const
Test for barrel.
Definition TRT_ID.h:783
Identifier straw_id(int barrel_ec, int phi_module, int layer_or_wheel, int straw_layer, int straw) const
Three ways of getting id for a single straw:
Definition TRT_ID.h:583
str index
Definition DeMoScan.py:362
@ ident
Definition HitInfo.h:77

◆ 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

◆ radToDegrees()

float TRTMonitoringRun3ESD_Alg::radToDegrees ( float radValue) const
private

Definition at line 338 of file TRTMonitoringRun3ESD_Alg.cxx.

338 {
339//----------------------------------------------------------------------------------//
340 float degreeValue = radValue / M_PI * 180;
341
342 if (degreeValue < 0) degreeValue += 360;
343
344 return degreeValue;
345}
#define M_PI

◆ 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:

◆ Straw_Gastype()

GasType TRTMonitoringRun3ESD_Alg::Straw_Gastype ( int stat) const
inlineprivate

Definition at line 146 of file TRTMonitoringRun3ESD_Alg.h.

146 {
147 // getStatusHT returns enum {Undefined, Dead, Good, Xenon, Argon, Krypton}.
148 // Our representation of 'GasType' is 0:Xenon, 1:Argon, 2:Krypton
149 GasType Gas = Xe; // Xenon is default
150 if (m_ArgonXenonSplitter) {
151 // int stat=m_sumSvc->getStatusHT(TRT_Identifier);
152 if ( stat==2 || stat==3 ) { Gas = Xe; } // Xe
153 else if ( stat==1 || stat==4 ) { Gas = Ar; } // Ar
154 else if ( stat==5 ) { Gas = Kr; } // Kr
155 else if ( stat==6 ) { Gas = Xe; } // Emulate Ar (so treat as Xe here)
156 else if ( stat==7 ) { Gas = Xe; } // Emulate Kr (so treat as Xe here)
157 else { ATH_MSG_FATAL ("getStatusHT = " << stat << ", must be 'Good(2)||Xenon(3)' or 'Dead(1)||Argon(4)' or 'Krypton(5)!' or 6 or 7 for emulated types!");
158 throw std::exception();
159 }
160 }
161 return Gas;
162 }

◆ strawLayerNumber()

int TRTMonitoringRun3ESD_Alg::strawLayerNumber ( int strawLayerNumber,
int LayerNumber ) const
private

Definition at line 194 of file TRTMonitoringRun3ESD_Alg.cxx.

194 {
195//----------------------------------------------------------------------------------//
196 switch (LayerNumber) {
197 case 0:
198 return strawLayerNumber;
199
200 case 1:
201 return strawLayerNumber + 19;
202
203 case 2:
204 return strawLayerNumber + 43;
205
206 default:
207 return strawLayerNumber;
208 }
209}

◆ strawLayerNumber_reverse()

int TRTMonitoringRun3ESD_Alg::strawLayerNumber_reverse ( int strawLayerNumInp,
int * strawLayerNumber,
int * LayerNumber ) const
private

◆ strawNumber()

int TRTMonitoringRun3ESD_Alg::strawNumber ( int strawNumber,
int strawlayerNumber,
int LayerNumber ) const
private

Definition at line 212 of file TRTMonitoringRun3ESD_Alg.cxx.

212 {
213//----------------------------------------------------------------------------------//
214 int addToStrawNumber = 0;
215 int addToStrawNumberNext = 0;
216 int i = 0;
217 const int numberOfStraws[75] = {
218 0,
219 15,
220 16, 16, 16, 16,
221 17, 17, 17, 17, 17,
222 18, 18, 18, 18, 18,
223 19, 19, 19,
224 18,
225 19,
226 20, 20, 20, 20, 20,
227 21, 21, 21, 21, 21,
228 22, 22, 22, 22, 22,
229 23, 23, 23, 23, 23,
230 24, 24,
231 23, 23,
232 24, 24, 24, 24,
233 25, 25, 25, 25, 25,
234 26, 26, 26, 26, 26,
235 27, 27, 27, 27, 27,
236 28, 28, 28, 28, 28,
237 29, 29, 29, 29,
238 28,
239 0
240 };
241
242 do {
243 i++;
244 addToStrawNumber += numberOfStraws[i - 1];
245 addToStrawNumberNext = addToStrawNumber + numberOfStraws[i];
246 } while (strawLayerNumber(strawlayerNumber, LayerNumber) != i - 1);
247
248 strawNumber = addToStrawNumberNext - strawNumber - 1;
249
250 if (strawNumber < 0 || strawNumber > s_Straw_max[0] - 1) {
251 ATH_MSG_WARNING("strawNumber = " << strawNumber << " out of range. Will set to 0.");
252 strawNumber = 0;
253 }
254
255 return strawNumber;
256}
int strawLayerNumber(int strawLayerNumber, int LayerNumber) const

◆ strawNumber_reverse()

int TRTMonitoringRun3ESD_Alg::strawNumber_reverse ( int inp_strawnumber,
int * strawNumber,
int * strawlayerNumber,
int * LayerNumber ) const
private

◆ strawNumberEndCap()

int TRTMonitoringRun3ESD_Alg::strawNumberEndCap ( int strawNumber,
int strawLayerNumber,
int LayerNumber,
int phi_stack,
int side ) const
private

Definition at line 260 of file TRTMonitoringRun3ESD_Alg.cxx.

260 {
261//----------------------------------------------------------------------------------//
262 // Before perfoming map, corrections need to be perfomed.
263 // apply special rotations for endcap mappings
264 // for eca, rotate triplets by 180 for stacks 9-16, and 25-32.
265 static const int TripletOrientation[2][32] = {
266 {
267 1, 1, 1, 1, 1, 1, 1, 1,
268 0, 0, 0, 0, 0, 0, 0, 0,
269 1, 1, 1, 1, 1, 1, 1, 1,
270 0, 0, 0, 0, 0, 0, 0, 0
271 },
272 {
273 1, 1, 1, 1, 1, 1, 1, 1,
274 0, 0, 0, 0, 0, 0, 0, 0,
275 1, 1, 1, 1, 1, 1, 1, 1,
276 0, 0, 0, 0, 0, 0, 0, 0
277 }
278 };
279 int phi1 = -1;
280
281 if (side == 2) phi1 = phi_stack, side = 1;
282 else if (side == -2) phi1 = 31 - phi_stack, side = 0;
283
284 if (phi1 > -1) {
285 if (TripletOrientation[side][phi1]) {
286 // Change straw number from 0-23 in straw layer to 0-192
287 if (strawLayerNumber < 8)strawNumber = strawNumber + 24 * strawLayerNumber;
288
289 if (strawLayerNumber > 7)strawNumber = strawNumber + 24 * (strawLayerNumber - 8);
290
291 strawNumber = (192 - 1) * TripletOrientation[side][phi1] + strawNumber * (1 - 2 * TripletOrientation[side][phi1]); //actual rotation
292
293 // Take strawNumber back to 0-23
294 if (strawLayerNumber < 8) strawLayerNumber = int(strawNumber / 24);
295
296 if (strawLayerNumber > 7) strawLayerNumber = int(strawNumber / 24) + 8;
297
298 strawNumber = strawNumber % 24;
299 }
300
301 // Finish rotation
302 // Flip straw in layer.
303
304 if (side == 0) strawNumber = 23 - strawNumber;
305
306 // Finish Flipping
307 }
308
309 // Done with corrections
310 // Start mapping from athena identifiers to TRTViewer maps
311 int strawNumberNew = 0;
312
313 if (LayerNumber < 6 && strawLayerNumber > 7) {
314 strawNumberNew = strawNumberNew + (384 * LayerNumber);
315 strawNumberNew = strawNumberNew + 192 + (strawLayerNumber % 8) + (strawNumber * 8);
316 } else if (LayerNumber < 6 && strawLayerNumber < 8) {
317 strawNumberNew = strawNumberNew + (384 * LayerNumber);
318 strawNumberNew = strawNumberNew + (strawLayerNumber % 8) + (strawNumber * 8);
319 } else if (LayerNumber > 5 && strawLayerNumber > 7) {
320 strawNumberNew = strawNumberNew + 2304 + 192 * (LayerNumber - 6);
321 strawNumberNew = strawNumberNew + 192 + (strawLayerNumber % 8) + (8 * strawNumber);
322 } else if (LayerNumber > 5 && strawLayerNumber < 8) {
323 strawNumberNew = strawNumberNew + 2304 + 192 * (LayerNumber - 6);
324 strawNumberNew = strawNumberNew + (strawLayerNumber % 8) + (8 * strawNumber);
325 }
326
327 strawNumber = strawNumberNew;
328
329 if (strawNumber < 0 || strawNumber > s_Straw_max[1] - 1) {
330 ATH_MSG_WARNING("strawNumber = " << strawNumber << " out of range. Will set to 0.");
331 strawNumber = 0;
332 }
333
334 return strawNumber;
335}

◆ 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.

◆ 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

◆ cfg

TRTMonitoringRun3ESD_Alg.cfg = MainServicesCfg(flags)

Definition at line 264 of file TRTMonitoringRun3ESD_Alg.py.

◆ Dynamic

TRTMonitoringRun3ESD_Alg.Dynamic

Definition at line 254 of file TRTMonitoringRun3ESD_Alg.py.

◆ Files

TRTMonitoringRun3ESD_Alg.Files

Definition at line 251 of file TRTMonitoringRun3ESD_Alg.py.

◆ flags

TRTMonitoringRun3ESD_Alg.flags = initConfigFlags()

Definition at line 250 of file TRTMonitoringRun3ESD_Alg.py.

◆ GeometryPixel

TRTMonitoringRun3ESD_Alg.GeometryPixel

Definition at line 255 of file TRTMonitoringRun3ESD_Alg.py.

◆ GeometrySCT

TRTMonitoringRun3ESD_Alg.GeometrySCT

Definition at line 256 of file TRTMonitoringRun3ESD_Alg.py.

◆ GeometryTRT

TRTMonitoringRun3ESD_Alg.GeometryTRT

Definition at line 257 of file TRTMonitoringRun3ESD_Alg.py.

◆ GlobalTag

TRTMonitoringRun3ESD_Alg.GlobalTag

Definition at line 258 of file TRTMonitoringRun3ESD_Alg.py.

◆ HISTFileName

TRTMonitoringRun3ESD_Alg.HISTFileName

Definition at line 253 of file TRTMonitoringRun3ESD_Alg.py.

◆ isMC

TRTMonitoringRun3ESD_Alg.isMC

Definition at line 252 of file TRTMonitoringRun3ESD_Alg.py.

◆ m_ArgonXenonSplitter

BooleanProperty TRTMonitoringRun3ESD_Alg::m_ArgonXenonSplitter {this, "doArgonXenonSeparation", true}
private

Definition at line 102 of file TRTMonitoringRun3ESD_Alg.h.

102{this, "doArgonXenonSeparation", true};

◆ m_comTimeObjectKey

SG::ReadHandleKey<ComTime> TRTMonitoringRun3ESD_Alg::m_comTimeObjectKey {this, "ComTimeObjectName", "TRT_Phase", "Name of ComTime object"}
private

Definition at line 114 of file TRTMonitoringRun3ESD_Alg.h.

114{this, "ComTimeObjectName", "TRT_Phase", "Name of ComTime object"};

◆ m_dataType

AthMonitorAlgorithm::DataType_t AthMonitorAlgorithm::m_dataType
protectedinherited

Instance of the DataType_t enum.

Definition at line 359 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 361 of file AthMonitorAlgorithm.h.

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

◆ m_defaultLBDuration

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

Default duration of one lumi block.

Definition at line 368 of file AthMonitorAlgorithm.h.

368{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 369 of file AthMonitorAlgorithm.h.

369{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_DistToStraw

Gaudi::Property<float> TRTMonitoringRun3ESD_Alg::m_DistToStraw {this, "DistanceToStraw", 0.4f, ""}
private

Definition at line 133 of file TRTMonitoringRun3ESD_Alg.h.

133{this, "DistanceToStraw", 0.4f, ""};

◆ m_doChips

Gaudi::Property<bool> TRTMonitoringRun3ESD_Alg::m_doChips {this, "doChips", true, ""}
private

Definition at line 126 of file TRTMonitoringRun3ESD_Alg.h.

126{this, "doChips", true, ""};

◆ m_doExpert

Gaudi::Property<bool> TRTMonitoringRun3ESD_Alg::m_doExpert {this, "doExpert", false, ""}
private

Definition at line 128 of file TRTMonitoringRun3ESD_Alg.h.

128{this, "doExpert", false, ""};

◆ m_doShift

Gaudi::Property<bool> TRTMonitoringRun3ESD_Alg::m_doShift {this, "doShift", true, ""}
private

Definition at line 127 of file TRTMonitoringRun3ESD_Alg.h.

127{this, "doShift", true, ""};

◆ m_doStraws

Gaudi::Property<bool> TRTMonitoringRun3ESD_Alg::m_doStraws {this, "doStraws", true, ""}
private

Definition at line 125 of file TRTMonitoringRun3ESD_Alg.h.

125{this, "doStraws", true, ""};

◆ m_doTracksMon

Gaudi::Property<bool> TRTMonitoringRun3ESD_Alg::m_doTracksMon {this, "DoTracksMon", true, ""}
private

Definition at line 124 of file TRTMonitoringRun3ESD_Alg.h.

124{this, "DoTracksMon", true, ""};

◆ m_DQFilterTools

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

Array of Data Quality filter tools.

Definition at line 349 of file AthMonitorAlgorithm.h.

349{this,"FilterTools",{}};

◆ m_drifttool

ToolHandle<ITRT_DriftFunctionTool> TRTMonitoringRun3ESD_Alg::m_drifttool {this, "DriftFunctionTool", "TRT_DriftFunctionTool", ""}
private

Definition at line 119 of file TRTMonitoringRun3ESD_Alg.h.

119{this, "DriftFunctionTool", "TRT_DriftFunctionTool", ""};

◆ m_dummy

const ToolHandle<GenericMonitoringTool> AthMonitorAlgorithm::m_dummy
privateinherited

Definition at line 377 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 380 of file AthMonitorAlgorithm.h.

380 {this,
381 "EnforceExpressTriggers", false,
382 "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 358 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 360 of file AthMonitorAlgorithm.h.

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

◆ m_EventBurstCut

int TRTMonitoringRun3ESD_Alg::m_EventBurstCut {-1}
private

Definition at line 164 of file TRTMonitoringRun3ESD_Alg.h.

164{-1};

◆ m_EventInfoKey

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

Key for retrieving EventInfo from StoreGate.

Definition at line 370 of file AthMonitorAlgorithm.h.

370{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_fileKey

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

Internal Athena name for file.

Definition at line 366 of file AthMonitorAlgorithm.h.

366{this,"FileKey",""};

◆ m_idHelper

const AtlasDetectorID* TRTMonitoringRun3ESD_Alg::m_idHelper {}
private

Definition at line 103 of file TRTMonitoringRun3ESD_Alg.h.

103{};

◆ m_isCosmics

bool TRTMonitoringRun3ESD_Alg::m_isCosmics {false}
private

Definition at line 134 of file TRTMonitoringRun3ESD_Alg.h.

134{false};

◆ m_lbDurationDataKey

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

Definition at line 353 of file AthMonitorAlgorithm.h.

354{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 351 of file AthMonitorAlgorithm.h.

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

◆ m_mat_chip_B

std::vector<std::vector<unsigned char> > TRTMonitoringRun3ESD_Alg::m_mat_chip_B {64, std::vector<unsigned char>(1642)}
private

Definition at line 130 of file TRTMonitoringRun3ESD_Alg.h.

130{64, std::vector<unsigned char>(1642)};

◆ m_mat_chip_E

std::vector<std::vector<unsigned char> > TRTMonitoringRun3ESD_Alg::m_mat_chip_E {64, std::vector<unsigned char>(3840)}
private

Definition at line 131 of file TRTMonitoringRun3ESD_Alg.h.

131{64, std::vector<unsigned char>(3840)};

◆ m_mgr

const InDetDD::TRT_DetectorManager* TRTMonitoringRun3ESD_Alg::m_mgr {}
private

Definition at line 122 of file TRTMonitoringRun3ESD_Alg.h.

122{};

◆ m_min_pixel_hits

Gaudi::Property<int> TRTMonitoringRun3ESD_Alg::m_min_pixel_hits {this, "min_pixel_hits", 0, ""}
private

Definition at line 137 of file TRTMonitoringRun3ESD_Alg.h.

137{this, "min_pixel_hits", 0, ""};

◆ m_min_pT

Gaudi::Property<float> TRTMonitoringRun3ESD_Alg::m_min_pT {this, "min_pT", 0.5 * CLHEP::GeV}
private

Definition at line 142 of file TRTMonitoringRun3ESD_Alg.h.

142{this, "min_pT", 0.5 * CLHEP::GeV};

◆ m_min_sct_hits

Gaudi::Property<int> TRTMonitoringRun3ESD_Alg::m_min_sct_hits {this, "min_sct_hits", 0, ""}
private

Definition at line 138 of file TRTMonitoringRun3ESD_Alg.h.

138{this, "min_sct_hits", 0, ""};

◆ m_min_si_hits

Gaudi::Property<int> TRTMonitoringRun3ESD_Alg::m_min_si_hits {this, "min_si_hits", 1, ""}
private

Definition at line 136 of file TRTMonitoringRun3ESD_Alg.h.

136{this, "min_si_hits", 1, ""};

◆ m_min_trt_hits

Gaudi::Property<int> TRTMonitoringRun3ESD_Alg::m_min_trt_hits {this, "min_trt_hits", 10, ""}
private

Definition at line 139 of file TRTMonitoringRun3ESD_Alg.h.

139{this, "min_trt_hits", 10, ""};

◆ m_minP

Gaudi::Property<float> TRTMonitoringRun3ESD_Alg::m_minP {this, "MinTrackP", 0.0 * CLHEP::GeV}
private

Definition at line 141 of file TRTMonitoringRun3ESD_Alg.h.

141{this, "MinTrackP", 0.0 * CLHEP::GeV};

◆ m_minTRThits

Gaudi::Property<int> TRTMonitoringRun3ESD_Alg::m_minTRThits {this, "MinTRTHitCut", 10, ""}
private

Definition at line 140 of file TRTMonitoringRun3ESD_Alg.h.

140{this, "MinTRTHitCut", 10, ""};

◆ m_name

std::string AthMonitorAlgorithm::m_name
privateinherited

Definition at line 374 of file AthMonitorAlgorithm.h.

◆ m_pTRTHelper

const TRT_ID* TRTMonitoringRun3ESD_Alg::m_pTRTHelper {}
private

Definition at line 121 of file TRTMonitoringRun3ESD_Alg.h.

121{};

◆ m_sumTool

ToolHandle<ITRT_StrawStatusSummaryTool> TRTMonitoringRun3ESD_Alg::m_sumTool {this, "InDetTRTStrawStatusSummaryTool", "TRT_StrawStatusSummaryTool",""}
private

Definition at line 106 of file TRTMonitoringRun3ESD_Alg.h.

106{this, "InDetTRTStrawStatusSummaryTool", "TRT_StrawStatusSummaryTool",""};

◆ m_toolLookupMap

std::unordered_map<std::string, size_t, CxxUtils::TransparentStringHash, std::equal_to<> > AthMonitorAlgorithm::m_toolLookupMap
privateinherited

Definition at line 375 of file AthMonitorAlgorithm.h.

◆ m_tools

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

Array of Generic Monitoring Tools.

Definition at line 344 of file AthMonitorAlgorithm.h.

344{this,"GMTools",{}};

◆ m_trackCollectionKey

SG::ReadHandleKey<xAOD::TrackParticleContainer> TRTMonitoringRun3ESD_Alg::m_trackCollectionKey {this, "TrackParticleContainerKeys", "InDetTrackParticles", "Keys for TrackParticle Container"}
private

Definition at line 111 of file TRTMonitoringRun3ESD_Alg.h.

111{this, "TrackParticleContainerKeys", "InDetTrackParticles", "Keys for TrackParticle Container"};

◆ m_trackSelTool

ToolHandle<InDet::IInDetTrackSelectionTool> TRTMonitoringRun3ESD_Alg::m_trackSelTool {this, "TrackSelectionTool", "InDet::InDetTrackSelectionTool/TrackSelectionTool", ""}
private

Definition at line 165 of file TRTMonitoringRun3ESD_Alg.h.

165{this, "TrackSelectionTool", "InDet::InDetTrackSelectionTool/TrackSelectionTool", ""};

◆ m_TrackSummaryTool

ToolHandle<Trk::ITrackSummaryTool> TRTMonitoringRun3ESD_Alg::m_TrackSummaryTool {this, "TrackSummaryTool", "InDetTrackSummaryTool", "Track summary tool name"}
private

Definition at line 118 of file TRTMonitoringRun3ESD_Alg.h.

118{this, "TrackSummaryTool", "InDetTrackSummaryTool", "Track summary tool name"};

◆ m_trigDecisionKey

SG::ReadHandleKey<xAOD::TrigDecision> TRTMonitoringRun3ESD_Alg::m_trigDecisionKey {this, "TrigDecisionObjectName", "xTrigDecision", "Name of trigger decision object"}
private

Definition at line 115 of file TRTMonitoringRun3ESD_Alg.h.

115{this, "TrigDecisionObjectName", "xTrigDecision", "Name of trigger decision object"};

◆ m_trigDecTool

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

Tool to tell whether a specific trigger is passed.

Definition at line 348 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 363 of file AthMonitorAlgorithm.h.

363{this,"TriggerChain",""};

◆ m_trigLiveFractionDataKey

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

Definition at line 355 of file AthMonitorAlgorithm.h.

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

◆ m_TRT_BCIDCollectionKey

SG::ReadHandleKey<InDetTimeCollection> TRTMonitoringRun3ESD_Alg::m_TRT_BCIDCollectionKey {this, "TRTBCIDCollectionName", "TRT_BCID", "Name of TRT BCID collection"}
private

Definition at line 113 of file TRTMonitoringRun3ESD_Alg.h.

113{this, "TRTBCIDCollectionName", "TRT_BCID", "Name of TRT BCID collection"};

◆ m_TRTCalDbTool

ToolHandle<ITRT_CalDbTool> TRTMonitoringRun3ESD_Alg::m_TRTCalDbTool {this, "ITRT_CalDbTool", "TRT_CalDbTool", ""}
private

Definition at line 108 of file TRTMonitoringRun3ESD_Alg.h.

108{this, "ITRT_CalDbTool", "TRT_CalDbTool", ""};

◆ m_TRTStrawNeighbourSvc

ServiceHandle<ITRT_StrawNeighbourSvc> TRTMonitoringRun3ESD_Alg::m_TRTStrawNeighbourSvc {this, "NeighbourSvc", "TRT_StrawNeighbourSvc", ""}
private

Definition at line 107 of file TRTMonitoringRun3ESD_Alg.h.

107{this, "NeighbourSvc", "TRT_StrawNeighbourSvc", ""};

◆ m_useLumi

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

Allows use of various luminosity functions.

Definition at line 367 of file AthMonitorAlgorithm.h.

367{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 364 of file AthMonitorAlgorithm.h.

◆ m_xAODEventInfoKey

SG::ReadHandleKey<xAOD::EventInfo> TRTMonitoringRun3ESD_Alg::m_xAODEventInfoKey {this, "xAODEventInfo", "EventInfo", "Name of EventInfo object"}
private

Definition at line 112 of file TRTMonitoringRun3ESD_Alg.h.

112{this, "xAODEventInfo", "EventInfo", "Name of EventInfo object"};

◆ s_iChip_max

const int TRTMonitoringRun3ESD_Alg::s_iChip_max = {104, 240}
staticprivate

Definition at line 36 of file TRTMonitoringRun3ESD_Alg.h.

◆ s_iStack_max

const int TRTMonitoringRun3ESD_Alg::s_iStack_max = {32, 64}
staticprivate

Definition at line 35 of file TRTMonitoringRun3ESD_Alg.h.

◆ s_moduleNum

const int TRTMonitoringRun3ESD_Alg::s_moduleNum = {96, 64}
staticprivate

Definition at line 38 of file TRTMonitoringRun3ESD_Alg.h.

◆ s_numberOfBarrelStacks

const int TRTMonitoringRun3ESD_Alg::s_numberOfBarrelStacks = 32
staticprivate

Definition at line 94 of file TRTMonitoringRun3ESD_Alg.h.

◆ s_numberOfEndCapStacks

const int TRTMonitoringRun3ESD_Alg::s_numberOfEndCapStacks = 32
staticprivate

Definition at line 95 of file TRTMonitoringRun3ESD_Alg.h.

◆ s_numberOfStacks

const int TRTMonitoringRun3ESD_Alg::s_numberOfStacks = {32, 32}
staticprivate

Definition at line 37 of file TRTMonitoringRun3ESD_Alg.h.

◆ s_Straw_max

const int TRTMonitoringRun3ESD_Alg::s_Straw_max = {1642, 3840}
staticprivate

Definition at line 34 of file TRTMonitoringRun3ESD_Alg.h.

◆ TRTMonitoringRun3Acc

TRTMonitoringRun3ESD_Alg.TRTMonitoringRun3Acc = TRTMonitoringRun3ESD_AlgConfig(flags)

Definition at line 272 of file TRTMonitoringRun3ESD_Alg.py.


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