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

Generated the decision for hypo thats triggers on high pt isolated tracks. More...

#include <TrigIsoHPtTrackTriggerHypoTool.h>

Inheritance diagram for TrigIsoHPtTrackTriggerHypoTool:
Collaboration diagram for TrigIsoHPtTrackTriggerHypoTool:

Classes

struct  TrackInfo

Public Member Functions

 TrigIsoHPtTrackTriggerHypoTool (const std::string &type, const std::string &name, const IInterface *parent)
virtual ~TrigIsoHPtTrackTriggerHypoTool ()
virtual StatusCode initialize () override
StatusCode decide (std::vector< TrackInfo > &decisions) const
 decides upon a collection of tracks
bool decideOnSingleObject (const xAOD::TrackParticle_v1 *track, const xAOD::TrackParticleContainer *AllTracks, size_t cutIndex) const
 Auxiluary method, single track selection.
StatusCode inclusiveSelection (std::vector< TrackInfo > &input) const
 actual implementation of decide, in case of inclusive selection ( one object cut )
StatusCode multiplicitySelection (std::vector< TrackInfo > &input) const
 actual implementation of decide, in case of multiple objects selection ( independentone )
StatusCode markPassing (std::vector< TrackInfo > &input, const std::set< size_t > &passing) const
 stores decisions for all object passing multiple cuts The passsingSelection inner vectors have to have size == input size
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 sysInitialize () override
 Perform system initialization for an algorithm.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const

Protected Member Functions

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

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

HLT::Identifier m_decisionId
Gaudi::Property< std::vector< float > > m_TrackPt { this, "MinTrackPt", { float( 50.0*Gaudi::Units::GeV ) }, "Track pT requirement" }
Gaudi::Property< std::vector< float > > m_TrackEta { this, "MinTrackEta", { float(2.5 ) }, "Track Eta requirement" }
Gaudi::Property< std::vector< float > > m_Trackd0 { this, "MaxTrackd0", {5.}, "Maximum Track d0 allowed" }
Gaudi::Property< std::vector< float > > m_Trackd0Sig { this, "MaxTrackd0Sig", {5.}, "Maximum Track d0 Sig allowed" }
Gaudi::Property< std::vector< unsigned > > m_TrackNPixHits { this, "MinTrackNPixHits", {2}, "Minimum number of pixel hits required from the trigger" }
Gaudi::Property< std::vector< unsigned > > m_TrackNSCTHits { this, "MinTrackNSCTHits", {5}, "Minimum number of SCT hits required from the trigger" }
Gaudi::Property< std::vector< bool > > m_doIso { this, "EnableTrackIsolation", {false}, "If track based isolation should be applied or not? "}
Gaudi::Property< std::vector< bool > > m_IsoCum { this, "EnableCumalitiveIsolation", {false}, "Instead of checking if one track is above a certain pT threshold, add up all tracks for isolation"}
Gaudi::Property< std::vector< float > > m_IsoDR { this, "TrackIsoCone", {0.3}, "Isolation requirment over the main track" }
Gaudi::Property< std::vector< float > > m_IsoPt { this, "MinIsoTrackPt", {float( 5.0*Gaudi::Units::GeV )}, "Min pT requirment of other tracks to be considered for isolation" }
size_t m_multiplicity = 1
ToolHandle< GenericMonitoringToolm_monTool { this, "MonTool", "", "Monitoring tool" }
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

Detailed Description

Generated the decision for hypo thats triggers on high pt isolated tracks.

Author
Ismet Siral ismet.nosp@m..sir.nosp@m.al@ce.nosp@m.rn.c.nosp@m.h - University of Oregon

Definition at line 23 of file TrigIsoHPtTrackTriggerHypoTool.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< AlgTool > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ TrigIsoHPtTrackTriggerHypoTool()

TrigIsoHPtTrackTriggerHypoTool::TrigIsoHPtTrackTriggerHypoTool ( const std::string & type,
const std::string & name,
const IInterface * parent )

Definition at line 17 of file TrigIsoHPtTrackTriggerHypoTool.cxx.

20 : AthAlgTool( type, name, parent ),
AthAlgTool()
Default constructor:
static HLT::Identifier fromToolName(const std::string &tname)

◆ ~TrigIsoHPtTrackTriggerHypoTool()

TrigIsoHPtTrackTriggerHypoTool::~TrigIsoHPtTrackTriggerHypoTool ( )
virtual

Definition at line 56 of file TrigIsoHPtTrackTriggerHypoTool.cxx.

56{}

Member Function Documentation

◆ decide()

StatusCode TrigIsoHPtTrackTriggerHypoTool::decide ( std::vector< TrackInfo > & decisions) const

decides upon a collection of tracks

Definition at line 283 of file TrigIsoHPtTrackTriggerHypoTool.cxx.

283 {
284 // handle the simplest and most common case ( multiplicity == 1 ) in easiest possible manner
285 if ( m_TrackPt.size() == 1 ) {
286 return inclusiveSelection( input );
287
288 } else {
289 return multiplicitySelection( input );
290 }
291
292 return StatusCode::SUCCESS;
293}
Gaudi::Property< std::vector< float > > m_TrackPt
StatusCode multiplicitySelection(std::vector< TrackInfo > &input) const
actual implementation of decide, in case of multiple objects selection ( independentone )
StatusCode inclusiveSelection(std::vector< TrackInfo > &input) const
actual implementation of decide, in case of inclusive selection ( one object cut )

◆ decideOnSingleObject()

bool TrigIsoHPtTrackTriggerHypoTool::decideOnSingleObject ( const xAOD::TrackParticle_v1 * track,
const xAOD::TrackParticleContainer * AllTracks,
size_t cutIndex ) const

Auxiluary method, single track selection.

Definition at line 58 of file TrigIsoHPtTrackTriggerHypoTool.cxx.

58 {
59 auto cutCounter = Monitored::Scalar<int>( "CutCounter", -1 );
60 auto cutIndexM = Monitored::Scalar<int>( "CutIndex", cutIndex ); // one can do 2D plots for each cut independently
61
62 auto MONtrackPt = Monitored::Scalar( "trackPt", -999. );
63 auto MONtrackd0 = Monitored::Scalar( "trackd0", -999. );
64 auto MONtrackNPixHits = Monitored::Scalar( "trackNPixHits", -999. );
65 auto MONtrackNSCTHits = Monitored::Scalar( "trackNSCTHits", -999. );
66 auto MONtrackd0Sig = Monitored::Scalar( "trackd0Sig", -999. );
67 auto MONtrackEta = Monitored::Scalar( "trackEta", -999. );
68 auto MONtrackIsoPt = Monitored::Scalar( "trackIsoPt", -999. );
69 auto MONtrackAggrIsoPt = Monitored::Scalar( "trackAggrIsoPt", -999. );
70 auto monitorIt = Monitored::Group( m_monTool, cutCounter, cutIndexM,
71 MONtrackPt, MONtrackEta,
72 MONtrackd0, MONtrackd0Sig,
73 MONtrackNPixHits, MONtrackNSCTHits,
74 MONtrackIsoPt, MONtrackAggrIsoPt
75 );
76
77
78
79
80 //Checking Track pT Requirments
81 auto trackPt= (track)->pt();
82 if( trackPt < m_TrackPt[cutIndex] ) { // Check track pT requirments
83 ATH_MSG_DEBUG( "Fails pt cut" << trackPt << " < " << m_TrackPt[cutIndex] );
84 return false;
85
86 }
87 cutCounter++;
88
89
90 //Checking Track Eta Requirments
91 auto trackEta=std::abs( (track)->p4().Eta() );
92 if( trackEta > m_TrackEta[cutIndex] ) { // Check track pT requirments
93 ATH_MSG_DEBUG( "Fails Eta cut" << trackEta << " > " << m_TrackEta[cutIndex] );
94 return false;
95
96 }
97 cutCounter++;
98
99
100
101 //Checking Track d0 Requirments
102 auto trackd0= std::abs((track)->d0());
103 if( trackd0 > m_Trackd0[cutIndex]) {
104 ATH_MSG_DEBUG( "Fails d0 cut" << trackd0 << " > " << m_Trackd0[cutIndex] );
105 return false;
106
107 }
108 cutCounter++;
109
110
111 //Checking Track d0 Sig Requirments
112 auto trackd0Sig= std::abs(xAOD::TrackingHelpers::d0significance(track));
113 if( trackd0Sig > m_Trackd0Sig[cutIndex]) {
114 ATH_MSG_DEBUG( "Fails d0 Sig cut" << trackd0Sig << " > " << m_Trackd0Sig[cutIndex] );
115 return false;
116
117 }
118 cutCounter++;
119
120
121 //Attempt to read track summary, and save info on number of pixels
122 uint8_t trackNPixHits=0;
123 if ( ! (track)->summaryValue(trackNPixHits,xAOD::numberOfPixelHits )) { // Cannot obtain the track summary
124 ATH_MSG_DEBUG( "Failed to retrieve pedigree parameters");
125 return false;
126 }
127 ATH_MSG_DEBUG( "Succesfully retrieved pedigree parameters");
128 cutCounter++;
129 //Attempt to read track summary, and save info on number of SCT hits
130 uint8_t trackNSCTHits=0;
131 if ( ! (track)->summaryValue(trackNSCTHits,xAOD::numberOfSCTHits )) { // Cannot obtain the track summary
132 ATH_MSG_DEBUG( "Failed to retrieve pedigree parameters");
133 return false;
134 }
135 ATH_MSG_DEBUG( "Succesfully retrieved pedigree parameters");
136 cutCounter++;
137
138
139
140 //Checking Track Min number of Pix Hits Requirments
141 if( trackNPixHits <= m_TrackNPixHits[cutIndex] ){
142
143 ATH_MSG_DEBUG( "Fails numperOfPixelHits cut" << trackNPixHits << " <= " << m_TrackNPixHits[cutIndex] );
144 return false;
145 }
146 cutCounter++;
147
148
149 //Checking Track Min number of SCT Hits Requirments
150 if( trackNSCTHits <= m_TrackNSCTHits[cutIndex] ){
151
152 ATH_MSG_DEBUG( "Fails numperOfSCTHits cut" << trackNSCTHits << " <= " << m_TrackNSCTHits[cutIndex] );
153 return false;
154 }
155 cutCounter++;
156
157
158 //Definning a cumlative pT variable that adds up the momentum of all tracks
159
160 //If isolation is applied, loop over all tracks, and veto the event if there is a track above a certain threshold in the isolation cone
161 if (m_doIso[cutIndex]) {
162 float CumulativePT = 0.0;
163
164 for (auto trackIter = AllTracks->begin(); trackIter != AllTracks->end(); ++trackIter){
165
166 //Skip the track that is out of DR
167 if( (*trackIter)==track) continue;
168 if (track->p4().DeltaR((*trackIter)->p4()) > m_IsoDR[cutIndex] ) continue;
169
170 //Skip the track that doens't have many Pixel and SCT Hits (Quality Check)
171 uint8_t iterPix=0;
172 if ( ! (*trackIter)->summaryValue(iterPix,xAOD::numberOfPixelHits ))
173 continue;
174 uint8_t iterSCT=0;
175 if ( ! (*trackIter)->summaryValue(iterSCT,xAOD::numberOfSCTHits ))
176 continue;
177
178 if (iterPix<=m_TrackNPixHits[cutIndex] ) continue;
179 if (iterSCT<=2 ) continue;
180
181
182 //If cumalitve, add up the momentum of the track, if it's a bove a certain threshold kill the trac
183
184 if(m_IsoCum[cutIndex]){
185 CumulativePT+=(*trackIter)->pt();
186 if(CumulativePT>=m_IsoPt[cutIndex]) {
187 MONtrackAggrIsoPt=CumulativePT;
188 ATH_MSG_DEBUG( "Fails Cum Isolation cut" );
189 return false;
190 }
191 }
192 //If not cumlaitve, veto the track only if one track is bigger then the threshold
193 else {
194 if ((*trackIter)->pt() > MONtrackIsoPt ) {
195 MONtrackIsoPt=(*trackIter)->pt();
196 }
197
198 if( (*trackIter)->pt()>=m_IsoPt[cutIndex] ) {
199 ATH_MSG_DEBUG( "Fails Isolation cut" );
200 return false;
201 }
202 }
203
204
205
206 }
207
208 MONtrackAggrIsoPt=CumulativePT;
209 cutCounter++;
210 }
211
212 //Monitorung histograms are filled at the end, only if they pass the selection. (For optimisation studies)
213 MONtrackNPixHits=trackNPixHits;
214 MONtrackNSCTHits=trackNSCTHits;
215 MONtrackPt= trackPt;
216 MONtrackEta= trackEta;
217 MONtrackd0= trackd0;
218 MONtrackd0Sig= trackd0Sig;
219
220
221
222 ATH_MSG_DEBUG( "Passed selection" );
223 return true;
224
225}
#define ATH_MSG_DEBUG(x)
@ Eta
Definition RPCdef.h:8
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.
Gaudi::Property< std::vector< float > > m_IsoDR
Gaudi::Property< std::vector< float > > m_Trackd0
Gaudi::Property< std::vector< bool > > m_doIso
ToolHandle< GenericMonitoringTool > m_monTool
Gaudi::Property< std::vector< bool > > m_IsoCum
Gaudi::Property< std::vector< float > > m_Trackd0Sig
Gaudi::Property< std::vector< float > > m_IsoPt
Gaudi::Property< std::vector< unsigned > > m_TrackNSCTHits
Gaudi::Property< std::vector< float > > m_TrackEta
Gaudi::Property< std::vector< unsigned > > m_TrackNPixHits
bool trackEta(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool trackPt(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
double d0significance(const xAOD::TrackParticle *tp, double d0_uncert_beam_spot_2)
@ numberOfSCTHits
number of hits in SCT [unit8_t].
@ numberOfPixelHits
these are the pixel hits, including the b-layer [unit8_t].

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< AlgTool > >::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< AlgTool > >::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< AlgTool > >::detStore ( ) const
inlineinherited

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

Definition at line 95 of file AthCommonDataStore.h.

◆ evtStore()

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

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

Definition at line 85 of file AthCommonDataStore.h.

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::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

◆ inclusiveSelection()

StatusCode TrigIsoHPtTrackTriggerHypoTool::inclusiveSelection ( std::vector< TrackInfo > & input) const

actual implementation of decide, in case of inclusive selection ( one object cut )

Definition at line 227 of file TrigIsoHPtTrackTriggerHypoTool.cxx.

227 {
228 for ( auto i: input ) {
229
230 if ( i.previousDecisionsIDs.count( m_decisionId.numeric() ) == 0 ) {
231 continue;
232 }
233
234 auto objDecision = decideOnSingleObject( i.track, i.AllTracks, 0 );
235 if ( objDecision == true ) {
236
237 addDecisionID( m_decisionId.numeric(), i.decision );
238 }
239 }
240 return StatusCode::SUCCESS;
241}
bool decideOnSingleObject(const xAOD::TrackParticle_v1 *track, const xAOD::TrackParticleContainer *AllTracks, size_t cutIndex) const
Auxiluary method, single track selection.
void addDecisionID(DecisionID id, Decision *d)
Appends the decision (given as ID) to the decision object.

◆ initialize()

StatusCode TrigIsoHPtTrackTriggerHypoTool::initialize ( )
overridevirtual

Definition at line 23 of file TrigIsoHPtTrackTriggerHypoTool.cxx.

23 {
24
25 if ( !m_monTool.empty() ) CHECK( m_monTool.retrieve() );
26
27 ATH_MSG_VERBOSE( "Initialization completed successfully:" );
28
29 //Track Trigger Kinematic Requirments
30 ATH_MSG_VERBOSE( "MaxTrackPt = " << m_TrackPt );
31 ATH_MSG_VERBOSE( "MaxTrackEta = " << m_TrackEta );
32 ATH_MSG_VERBOSE( "MaxTrackd0 = " << m_Trackd0 );
33 ATH_MSG_VERBOSE( "MaxTrackd0Sig = " << m_Trackd0Sig );
34 ATH_MSG_VERBOSE( "MinTrackNPixHits = " << m_TrackNPixHits );
35 ATH_MSG_VERBOSE( "MinTrackNSCTHits = " << m_TrackNSCTHits );
36 //Track Trigger Isolation Requirments
37 ATH_MSG_VERBOSE( "TrackIsoCone = " << m_IsoDR );
38 ATH_MSG_VERBOSE( "MinIsoTrackPt = " << m_IsoPt );
39 ATH_MSG_VERBOSE( "EnableTrackIsolation = " << m_doIso );
40 ATH_MSG_VERBOSE( "EnableCumulIsolation = " << m_IsoCum );
41
42 std::vector<size_t> sizes( {m_TrackPt.size(), m_TrackEta.size(), m_Trackd0.size( ), m_Trackd0Sig.size(), m_TrackNPixHits.size() , m_TrackNSCTHits.size() , m_doIso.size() , m_IsoDR.size() , m_IsoPt.size() } );
43
44
45 if ( *std::min_element( sizes.begin(), sizes.end() ) != *std::max_element( sizes.begin(), sizes.end() ) ) {
46 ATH_MSG_ERROR( "Missconfiguration, cut properties listed above ( when INFO ) have different dimensions shortest: " << *std::min_element( sizes.begin(), sizes.end() ) << " longest " << *std::max_element( sizes.begin(), sizes.end() ) );
47 return StatusCode::FAILURE;
48 }
49
50 ATH_MSG_VERBOSE( "Tool configured for chain/id: " << m_decisionId );
51
52 return StatusCode::SUCCESS;
53}
#define ATH_MSG_ERROR(x)
#define ATH_MSG_VERBOSE(x)
#define CHECK(...)
Evaluate an expression and check for errors.

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< AlgTool > >::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.

◆ markPassing()

StatusCode TrigIsoHPtTrackTriggerHypoTool::markPassing ( std::vector< TrackInfo > & input,
const std::set< size_t > & passing ) const

stores decisions for all object passing multiple cuts The passsingSelection inner vectors have to have size == input size

Definition at line 244 of file TrigIsoHPtTrackTriggerHypoTool.cxx.

244 {
245
246 for ( auto idx: passing )
247 addDecisionID( m_decisionId.numeric(), input[idx].decision );
248 return StatusCode::SUCCESS;
249
250}

◆ msg()

MsgStream & AthCommonMsg< AlgTool >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

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

◆ msgLvl()

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

Definition at line 30 of file AthCommonMsg.h.

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

◆ multiplicitySelection()

StatusCode TrigIsoHPtTrackTriggerHypoTool::multiplicitySelection ( std::vector< TrackInfo > & input) const

actual implementation of decide, in case of multiple objects selection ( independentone )

Definition at line 253 of file TrigIsoHPtTrackTriggerHypoTool.cxx.

253 {
254 HLT::Index2DVec passingSelection( m_multiplicity );
255
256 for ( size_t cutIndex = 0; cutIndex < m_multiplicity; ++ cutIndex ) {
257 size_t trkIndex{ 0 };
258 for ( auto trkIter = input.begin(); trkIter != input.end(); ++trkIter, ++trkIndex ) {
259
260 if ( trkIter->previousDecisionsIDs.count( m_decisionId.numeric() ) == 0 ) {
261 continue;
262 }
263
264 if ( decideOnSingleObject( trkIter->track, trkIter->AllTracks, cutIndex ) ) {
265 passingSelection[cutIndex].push_back( trkIndex );
266
267 }
268 }
269 // checking if by chance none of the objects passed the single obj selection, if so there will be no valid combination and we can skip
270 if ( passingSelection[cutIndex].empty() ) {
271 ATH_MSG_DEBUG( "No object passed selection " << cutIndex << " rejecting" );
272 return StatusCode::SUCCESS;
273 }
274 }
275
276 std::set<size_t> passingIndices;
277 HLT::elementsInUniqueCombinations( passingSelection, passingIndices );
278 return markPassing( input, passingIndices );
279
280
281}
static const Attributes_t empty
StatusCode markPassing(std::vector< TrackInfo > &input, const std::set< size_t > &passing) const
stores decisions for all object passing multiple cuts The passsingSelection inner vectors have to hav...
void elementsInUniqueCombinations(const Index2DVec &indices, std::set< size_t > &participants, const std::function< bool(const Index1DVec &)> &filter)
std::vector< Index1DVec > Index2DVec

◆ outputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< AlgTool > >::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.

◆ 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< AlgTool > >::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< AlgTool > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ sysInitialize()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysInitialize ( )
overridevirtualinherited

Perform system initialization for an algorithm.

We override this to declare all the elements of handle key arrays at the end of initialization. See comments on updateVHKA.

Reimplemented in asg::AsgMetadataTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and DerivationFramework::CfAthAlgTool.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::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.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::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 }
std::vector< SG::VarHandleKeyArray * > m_vhka

Member Data Documentation

◆ m_decisionId

HLT::Identifier TrigIsoHPtTrackTriggerHypoTool::m_decisionId
private

Definition at line 73 of file TrigIsoHPtTrackTriggerHypoTool.h.

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_doIso

Gaudi::Property< std::vector<bool> > TrigIsoHPtTrackTriggerHypoTool::m_doIso { this, "EnableTrackIsolation", {false}, "If track based isolation should be applied or not? "}
private

Definition at line 82 of file TrigIsoHPtTrackTriggerHypoTool.h.

82{ this, "EnableTrackIsolation", {false}, "If track based isolation should be applied or not? "};

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_IsoCum

Gaudi::Property< std::vector<bool> > TrigIsoHPtTrackTriggerHypoTool::m_IsoCum { this, "EnableCumalitiveIsolation", {false}, "Instead of checking if one track is above a certain pT threshold, add up all tracks for isolation"}
private

Definition at line 83 of file TrigIsoHPtTrackTriggerHypoTool.h.

83{ this, "EnableCumalitiveIsolation", {false}, "Instead of checking if one track is above a certain pT threshold, add up all tracks for isolation"};

◆ m_IsoDR

Gaudi::Property< std::vector<float> > TrigIsoHPtTrackTriggerHypoTool::m_IsoDR { this, "TrackIsoCone", {0.3}, "Isolation requirment over the main track" }
private

Definition at line 84 of file TrigIsoHPtTrackTriggerHypoTool.h.

84{ this, "TrackIsoCone", {0.3}, "Isolation requirment over the main track" };

◆ m_IsoPt

Gaudi::Property< std::vector<float> > TrigIsoHPtTrackTriggerHypoTool::m_IsoPt { this, "MinIsoTrackPt", {float( 5.0*Gaudi::Units::GeV )}, "Min pT requirment of other tracks to be considered for isolation" }
private

Definition at line 85 of file TrigIsoHPtTrackTriggerHypoTool.h.

85{ this, "MinIsoTrackPt", {float( 5.0*Gaudi::Units::GeV )}, "Min pT requirment of other tracks to be considered for isolation" };

◆ m_monTool

ToolHandle<GenericMonitoringTool> TrigIsoHPtTrackTriggerHypoTool::m_monTool { this, "MonTool", "", "Monitoring tool" }
private

Definition at line 90 of file TrigIsoHPtTrackTriggerHypoTool.h.

90{ this, "MonTool", "", "Monitoring tool" };

◆ m_multiplicity

size_t TrigIsoHPtTrackTriggerHypoTool::m_multiplicity = 1
private

Definition at line 88 of file TrigIsoHPtTrackTriggerHypoTool.h.

◆ m_Trackd0

Gaudi::Property< std::vector<float> > TrigIsoHPtTrackTriggerHypoTool::m_Trackd0 { this, "MaxTrackd0", {5.}, "Maximum Track d0 allowed" }
private

Definition at line 77 of file TrigIsoHPtTrackTriggerHypoTool.h.

77{ this, "MaxTrackd0", {5.}, "Maximum Track d0 allowed" };

◆ m_Trackd0Sig

Gaudi::Property< std::vector<float> > TrigIsoHPtTrackTriggerHypoTool::m_Trackd0Sig { this, "MaxTrackd0Sig", {5.}, "Maximum Track d0 Sig allowed" }
private

Definition at line 78 of file TrigIsoHPtTrackTriggerHypoTool.h.

78{ this, "MaxTrackd0Sig", {5.}, "Maximum Track d0 Sig allowed" };

◆ m_TrackEta

Gaudi::Property< std::vector<float> > TrigIsoHPtTrackTriggerHypoTool::m_TrackEta { this, "MinTrackEta", { float(2.5 ) }, "Track Eta requirement" }
private

Definition at line 76 of file TrigIsoHPtTrackTriggerHypoTool.h.

76{ this, "MinTrackEta", { float(2.5 ) }, "Track Eta requirement" };

◆ m_TrackNPixHits

Gaudi::Property< std::vector<unsigned> > TrigIsoHPtTrackTriggerHypoTool::m_TrackNPixHits { this, "MinTrackNPixHits", {2}, "Minimum number of pixel hits required from the trigger" }
private

Definition at line 79 of file TrigIsoHPtTrackTriggerHypoTool.h.

79{ this, "MinTrackNPixHits", {2}, "Minimum number of pixel hits required from the trigger" };

◆ m_TrackNSCTHits

Gaudi::Property< std::vector<unsigned> > TrigIsoHPtTrackTriggerHypoTool::m_TrackNSCTHits { this, "MinTrackNSCTHits", {5}, "Minimum number of SCT hits required from the trigger" }
private

Definition at line 80 of file TrigIsoHPtTrackTriggerHypoTool.h.

80{ this, "MinTrackNSCTHits", {5}, "Minimum number of SCT hits required from the trigger" };

◆ m_TrackPt

Gaudi::Property< std::vector<float> > TrigIsoHPtTrackTriggerHypoTool::m_TrackPt { this, "MinTrackPt", { float( 50.0*Gaudi::Units::GeV ) }, "Track pT requirement" }
private

Definition at line 75 of file TrigIsoHPtTrackTriggerHypoTool.h.

75{ this, "MinTrackPt", { float( 50.0*Gaudi::Units::GeV ) }, "Track pT requirement" };

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< AlgTool > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

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

Definition at line 398 of file AthCommonDataStore.h.


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