ATLAS Offline Software
TrigTRTHTHhypoTool.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #include "TrigTRTHTHhypoTool.h"
8 
9 namespace TCU = TrigCompositeUtils;
10 
12  const std::string& name,
13  const IInterface* parent )
14  : base_class( type, name, parent ),
15  m_decisionId( HLT::Identifier::fromToolName( name ) )
16 {}
17 
19 
20  ATH_MSG_DEBUG( "Tool configured for chain/id: " << m_decisionId );
21 
22  return StatusCode::SUCCESS;
23 }
24 
26 
27  bool pass = false;
28 
29  auto fHT_road = Monitored::Scalar( "HTRatioRoad", -1. );
30  auto fHT_wedge = Monitored::Scalar( "HTRatioWedge", -1. );
31  auto trththits_road = Monitored::Scalar( "TRTHTHitsRoad" , -1.0 );
32  auto trththits_wedge = Monitored::Scalar( "TRTHTHitsWedge", -1.0 );
33  auto monitorIt = Monitored::Group( m_monTool, fHT_road, fHT_wedge, trththits_road, trththits_wedge);
34 
35  if( m_acceptAll ){
36  pass=true;
37  ATH_MSG_DEBUG ( "Accepting all events in " << name());
38  return pass;
39  }
40 
41  auto rnn = input.rnnOutput;
42  std::vector<float> vec = rnn->rnnDecision();
43 
44  if (vec.size()!=6){
45  pass = true;
46  return pass;
47  }
48 
49  //Parse the vector to assign fHT and nHT appropriately
50 
51  fHT_road = vec.at(1);
52  fHT_wedge = vec.at(3);
53  trththits_road = vec.at(0);
54  trththits_wedge = vec.at(2);
55 
56  ATH_MSG_DEBUG ( "trththits_road: " << trththits_road);
57  ATH_MSG_DEBUG ("m_minTRTHTHitsRoad in hypotool: "<<m_minTRTHTHitsRoad);
58  ATH_MSG_DEBUG ( "trththits_wedge: " << trththits_wedge);
59  ATH_MSG_DEBUG ("m_minTRTHTHitsWedge in hypotool:: "<< m_minTRTHTHitsWedge);
60  ATH_MSG_DEBUG ( "fHT_road: " << fHT_road);
61  ATH_MSG_DEBUG ("m_minHTratioRoad in hypotool: "<<m_minHTratioRoad);
62  ATH_MSG_DEBUG ( "fHT_wedge: " << fHT_wedge);
63  ATH_MSG_DEBUG ("m_minHTratioWedge in hypotool: "<<m_minHTratioWedge);
64 
65  //Apply the cuts
66 
67  if (fHT_road > m_minHTratioRoad && trththits_road > m_minTRTHTHitsRoad && m_doRoad) pass = true;
68 
69  if (fHT_wedge > m_minHTratioWedge && trththits_wedge > m_minTRTHTHitsWedge && m_doWedge) pass = true;
70 
71  ATH_MSG_DEBUG ( name() << " hypo result " << pass);
72 
73  return pass;
74 
75 }
76 
77 
78 StatusCode TrigTRTHTHhypoTool::decide( std::vector<RNNOutputInfo>& input ) const {
79  for ( auto& i: input ) {
80  if ( TCU::passed ( m_decisionId.numeric(), i.previousDecisionIDs ) ) {
81  if ( decide( i ) ) {
82  TCU::addDecisionID( m_decisionId, i.decision );
83  }
84  }
85  }
86  return StatusCode::SUCCESS;
87 }
88 
TrigTRTHTHhypoTool::m_doRoad
Gaudi::Property< bool > m_doRoad
Definition: TrigTRTHTHhypoTool.h:40
TrigDefs::Group
Group
Properties of a chain group.
Definition: GroupProperties.h:13
TrigCompositeUtils::passed
bool passed(DecisionID id, const DecisionIDContainer &idSet)
checks if required decision ID is in the set of IDs in the container
Definition: TrigCompositeUtilsRoot.cxx:117
HLT::Identifier::numeric
TrigCompositeUtils::DecisionID numeric() const
numeric ID
Definition: TrigCompositeUtils/TrigCompositeUtils/HLTIdentifier.h:47
ITrigTRTHTHhypoTool::RNNOutputInfo
Definition: ITrigTRTHTHhypoTool.h:25
TrigCompositeUtils::addDecisionID
void addDecisionID(DecisionID id, Decision *d)
Appends the decision (given as ID) to the decision object.
Definition: TrigCompositeUtilsRoot.cxx:61
TrigTRTHTHhypoTool::TrigTRTHTHhypoTool
TrigTRTHTHhypoTool(const std::string &type, const std::string &name, const IInterface *parent)
Definition: TrigTRTHTHhypoTool.cxx:11
vec
std::vector< size_t > vec
Definition: CombinationsGeneratorTest.cxx:12
TrigTRTHTHhypoTool::decide
virtual StatusCode decide(std::vector< ITrigTRTHTHhypoTool::RNNOutputInfo > &input) const override
TrigCompositeUtils.h
TrigTRTHTHhypoTool::m_doWedge
Gaudi::Property< bool > m_doWedge
Definition: TrigTRTHTHhypoTool.h:39
TrigTRTHTHhypoTool::initialize
virtual StatusCode initialize() override
Definition: TrigTRTHTHhypoTool.cxx:18
TrigTRTHTHhypoTool::m_decisionId
HLT::Identifier m_decisionId
Definition: TrigTRTHTHhypoTool.h:32
HLT
It used to be useful piece of code for replacing actual SG with other store of similar functionality ...
Definition: HLTResultReader.h:26
lumiFormat.i
int i
Definition: lumiFormat.py:85
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
TrigTRTHTHhypoTool::m_minHTratioWedge
Gaudi::Property< float > m_minHTratioWedge
Definition: TrigTRTHTHhypoTool.h:38
PlotPulseshapeFromCool.input
input
Definition: PlotPulseshapeFromCool.py:106
test_pyathena.parent
parent
Definition: test_pyathena.py:15
TrigTRTHTHhypoTool::m_minHTratioRoad
Gaudi::Property< float > m_minHTratioRoad
Definition: TrigTRTHTHhypoTool.h:36
TrigTRTHTHhypoTool::m_acceptAll
Gaudi::Property< bool > m_acceptAll
Definition: TrigTRTHTHhypoTool.h:34
Monitored.h
Header file to be included by clients of the Monitored infrastructure.
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
TrigTRTHTHhypoTool::m_minTRTHTHitsRoad
Gaudi::Property< unsigned int > m_minTRTHTHitsRoad
Definition: TrigTRTHTHhypoTool.h:35
TrigTRTHTHhypoTool::m_minTRTHTHitsWedge
Gaudi::Property< unsigned int > m_minTRTHTHitsWedge
Definition: TrigTRTHTHhypoTool.h:37
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
TrigCompositeUtils
Definition: Event/xAOD/xAODTrigger/xAODTrigger/TrigComposite.h:19
TrigTRTHTHhypoTool::m_monTool
ToolHandle< GenericMonitoringTool > m_monTool
Definition: TrigTRTHTHhypoTool.h:42
Monitored::Scalar
Declare a monitored scalar variable.
Definition: MonitoredScalar.h:34
TrigTRTHTHhypoTool.h
Identifier
Definition: IdentifierFieldParser.cxx:14