ATLAS Offline Software
Loading...
Searching...
No Matches
TrigR3Mon.cxx
Go to the documentation of this file.
1
11
13
17
20
21#include "TrigR3Mon.h"
22
24
25#include <mutex>
26
27TrigR3Mon::TrigR3Mon( const std::string & name, ISvcLocator* pSvcLocator)
28 : AthMonitorAlgorithm(name, pSvcLocator),
29 m_tdt("Trig::TrigDecisionTool/TrigDecisionTool"),
30 m_buildNtuple(false),
32 m_firstRun(true),
33 m_keepAllEvents(false),
34 m_fileopen(false),
35 m_useHighestPT(false),
36 m_vtxIndex(-1),
37 m_runPurity(false),
38 m_shifter(false),
40 m_sliceTag(""),
41 m_containTracks(false),
42 m_legacy(true),
44 m_requireDecision(false),
45 m_filter_on_roi(false)
46{
47# ifdef USE_DATE_TIME_STAMP
48 msg(MSG::INFO) << "TrigR3Mon::TrigR3Mon() compiled: " << __DATE__ << " " << __TIME__ << endmsg;
49# endif
50
51 declareProperty( "SliceTag", m_sliceTag = "" );
52
53 declareProperty( "pTCut", m_pTCut = 0 );
54 declareProperty( "etaCut", m_etaCut = 5 );
55 declareProperty( "d0Cut", m_d0Cut = 1000 );
56 declareProperty( "z0Cut", m_z0Cut = 2000 );
57 declareProperty( "siHits", m_siHits = -1 );
58 m_pixHits=0;
59 m_sctHits=0;
60
61 declareProperty( "trtHits", m_trtHits = -2 );
62 declareProperty( "strawHits", m_strawHits = -2 );
63
64 declareProperty( "tauEtCutOffline", m_tauEtCutOffline = 0 );
65 declareProperty( "doTauThreeProng", m_doTauThreeProng = false);
66
67 declareProperty( "pTCutOffline", m_pTCutOffline = 1000 );
68 declareProperty( "etaCutOffline", m_etaCutOffline = 2.5 );
69 declareProperty( "d0CutOffline", m_d0CutOffline = 1000 );
70 declareProperty( "mind0CutOffline", m_mind0CutOffline = 0 );
71 declareProperty( "z0CutOffline", m_z0CutOffline = 2000 );
72 declareProperty( "pixHitsOffline", m_pixHitsOffline = 2 ); // 1 <- old value ( 2 degrees of freedom = 1 cluster )
73 declareProperty( "sctHitsOffline", m_sctHitsOffline = 6 ); // 6 <- old value ( 6 clusters = 3 spacepoints )
74 declareProperty( "siHitsOffline", m_siHitsOffline = 8 );
75 declareProperty( "blayerHitsOffline", m_blayerHitsOffline = -1 ); // no requirement - in case IBL is off
76
77 declareProperty( "pixHolesOffline", m_pixHolesOffline = 20 ); // essentially no limit
78 declareProperty( "sctHolesOffline", m_sctHolesOffline = 20 ); // essentially no limit
79 declareProperty( "siHolesOffline", m_siHolesOffline = 2 ); // npix holes + nsi holes <= 2 ( not degrees of freedom ! )
80
81 declareProperty( "ContainTracks", m_containTracks = false ); // use only basic track containment
82 declareProperty( "FiducialRadius", m_fiducial_radius = 32 );
83
84 declareProperty( "trtHitsOffline", m_trtHitsOffline = -2 );
85 declareProperty( "strawHitsOffline", m_strawHitsOffline = -2 );
86
87 declareProperty( "matchR", m_matchR = 0.1 );
88 declareProperty( "matchPhi", m_matchPhi = 0.1 );
89
90 declareProperty( "ntupleChainNames", m_ntupleChainNames );
91 declareProperty( "releaseMetaData", m_releaseMetaData );
92
93 declareProperty( "buildNtuple", m_buildNtuple = false );
94 declareProperty( "mcTruth", m_mcTruthIn = false );
95
96 declareProperty( "AnalysisConfig", m_analysis_config = "Ntuple");
97
98 declareProperty( "SelectTruthPdgId", m_selectTruthPdgId = 0 );
99 declareProperty( "SelectParentTruthPdgId", m_selectParentTruthPdgId = 0 );
100
101 declareProperty( "InitialisePerRun", m_initialisePerRun = false );
102 declareProperty( "KeepAllEvents", m_keepAllEvents = false );
103 declareProperty( "UseHighestPT", m_useHighestPT = false );
104 declareProperty( "VtxIndex", m_vtxIndex = -1 );
105
106 declareProperty( "RunPurity", m_runPurity = false );
107 declareProperty( "Shifter", m_shifter = false );
108
109 declareProperty( "ShifterChains", m_shifterChains = 1 );
110
111 declareProperty( "GenericFlag", m_genericFlag = true );
112
113 declareProperty( "Legacy", m_legacy = true );
114
115 declareProperty( "outputFileName", m_outputFileName = "TrkNtuple.root" );
116
117 declareProperty( "RequireDecision", m_requireDecision = false );
118
119 declareProperty( "FilterOnRoi", m_filter_on_roi = false );
120
121 msg(MSG::INFO) << "TrigR3Mon::TrigR3Mon() exiting " << gDirectory->GetName() << endmsg;
122
123}
124
125
126
128
129 if ( m_fileopen ) {
130 for ( unsigned i=0 ; i<m_sequences.size() ; i++ ) m_sequences[i]->finalize();
131 for ( unsigned i=0 ; i<m_sequences.size() ; i++ ) delete m_sequences[i];
132 m_fileopen = false;
133 }
134
135 // msg(MSG::INFO) << "TrigR3Mon::~TrigR3Mon()" << endmsg;
136 for ( unsigned i=m_filters.size() ; i-- ; ) delete m_filters[i];
137 for ( unsigned i=m_associators.size() ; i-- ; ) delete m_associators[i];
138
139}
140
141
142
144
145 msg(MSG::DEBUG) << " ----- enter initialize() ----- " << endmsg;
146
147 msg(MSG::INFO) << "TrigR3Mon::initialize() " << gDirectory->GetName() << " " << m_sliceTag << endmsg;
148
152
153#if 0
154 std::cout << "TrigR3Mon::name = " << name() << std::endl;
155 std::cout << "TrigR3Mon::SliceTag = " << m_sliceTag << std::endl;
156 std::cout << "TrigR3Mon::AnalysisConfig = " << m_analysis_config << std::endl;
157 std::cout << "TrigR3Mon::Legacy = " << m_legacy << std::endl;
158#endif
159
160 ATH_CHECK(m_monTools.retrieve());
161
163
168
169 ATH_CHECK (m_trackdummykeys.initialize());
170 ATH_CHECK (m_vtxdummykeys.initialize());
171
172 ATH_MSG_DEBUG( " ----- exit init() ----- " );
173
175
176}
177
178
180
181 ATH_MSG_DEBUG( " ----- enter book() ----- " );
182
183 ATH_MSG_INFO( " TrigR3Mon::book() " << gDirectory->GetName() );
184
186 // "^[[91;1m"
187 // "^[[m"
188
189 ATH_MSG_INFO( "^[[91;1m" << name() << "\t:AnalysisConfig " << m_analysis_config << "^[[m" );
190
191 ATH_MSG_INFO( "configuring chains: " << m_ntupleChainNames.size() << "\tmonTools: " << m_monTools.size() );
192
193 std::string lastvtx = "";
194
197
198 bool mcTruth = m_mcTruthIn;
199
200 if ( m_buildNtuple ) {
201
202 if ( m_tdt->getNavigationFormat() == "TriggerElement" ) {
205 m_keepAllEvents ) );
206 }
207 else {
211
214 m_sequences.push_back( ac );
215 }
216
217 m_sequences.back()->releaseData(m_releaseMetaData);
218 if ( m_requireDecision ) m_sequences.back()->setRequireDecision(true);
219 if ( m_mcTruthIn ) m_sequences.back()->setMCTruth(mcTruth);
220 m_sequences.back()->setFilterOnRoi( m_filter_on_roi );
221 }
222 else if ( m_analysis_config=="Tier0" ) {
223
225
226 // track filters
227 // reference tracks (offline or truth) ...
232
233 // test (trigger) tracks..
234 // TrackFilter* filterTest = new Filter_Track( m_etaCut, m_d0Cut, m_z0Cut, m_pTCut, -1, -1, -1, -1, -2, -2 );
235 TrackFilter* filterTest = new Filter_AcceptAll();
236
237 // keep track of the filters so they can be cleaned up at the end
238 m_filters.push_back(filterRef);
239 m_filters.push_back(filterTest);
240 // m_filters.push_back(filterTest_TRT);
241
242
243 // track associators
244 TrackAssociator* dR_matcher = new Associator_BestDeltaRMatcher("EBdeltaR", m_matchR); // this needs to be set correctly
245
246 // keep track of the associators so they can be cleaned up at the end
247 m_associators.push_back(dR_matcher);
248
252
253 // TrackAssociator* phi_matcher = new Associator_BestDeltaPhiMatcher("EBdeltaPhi", m_matchPhi); // this needs to be set correctly
254 // m_associators.push_back(phi_matcher);
255
256 std::vector<std::string> chains;
257
258 chains.reserve( m_monTools.size() );
259
262
263 std::vector<ToolHandle<GenericMonitoringTool>*> monTools;
264 monTools.reserve(m_monTools.size());
265
266 ToolHandleArray<GenericMonitoringTool>::iterator toolitr = m_monTools.begin();;
267
268 while ( toolitr!=m_monTools.end() ) {
269
271 ChainString chainName = (toolitr->name());
272
273 ATH_MSG_DEBUG( "configuring chain: " << chainName.head() << "\t: " << chainName.tail() );
274
276
277 if ( chainName.head() == "" ) {
278
279 std::string selectChain = chainName.raw();
280
282 // toolitr->setPath( m_sliceTag+"/"+chainName );
283
284 if (std::find(chains.begin(), chains.end(), selectChain) == chains.end()) { // deduplicate
285 chains.push_back( selectChain );
286 monTools.push_back( &(*toolitr) );
287 }
288
289 }
290 else {
291
293
294 if ( chainName.head().find("HLT_")==std::string::npos && chainName.head().find("EF_")==std::string::npos ) {
295 ++toolitr;
296 continue;
297 }
298
300
301 std::string selectChain = chainName.head();
302
304
305 ATH_MSG_DEBUG( "checking chain: " << chainName.head() );
306
307 if ( selectChain=="" ) {
308 msg(MSG::WARNING) << "^[[91;1m" << "No chain matched\tchain input " << chainName.head() << " : " << chainName.tail() << "^[[m"<< endmsg;
309 ++toolitr;
310 continue;
311 }
312
313 std::string mchain = selectChain; //chainName.head();
314
315 if ( chainName.tail()!="" ) mchain += "/"+chainName.tail();
316 if ( chainName.roi()!="" ) mchain += "_"+chainName.roi();
317 if ( chainName.vtx()!="" ) mchain += "_"+chainName.vtx();
318 if ( chainName.element()!="" ) mchain += "_"+chainName.element();
319 if ( chainName.extra()!="" ) mchain += "_"+chainName.extra();
320 if ( !chainName.passed() ) mchain += "_DTE";
321
322 selectChain = chainName.subs( selectChain );
323
324#if 0
326 std::cout << "\nTrigR3Mon::chain specification: " << chainName << "\t" << chainName.raw() << std::endl;
327 std::cout << "\tchain: " << chainName.head() << std::endl;
328 std::cout << "\tkey: " << chainName.tail() << std::endl;
329 std::cout << "\troi: " << chainName.roi() << std::endl;
330 std::cout << "\tvtx: " << chainName.vtx() << std::endl;
331 std::cout << "\tte: " << chainName.element() << std::endl;
332 std::cout << "\textra: " << chainName.extra() << std::endl;
333#endif
334
335
336#if 0
339 int shifter_efid = 0;
340 int shifter_ftf = 0;
341 int shifter_efid_run1 = 0;
342
344 int shifterChains = m_shifterChains;
345 if ( chainName.vtx()=="" ) shifterChains = ( m_shifterChains>1 ? 1 : m_shifterChains );
346
347 if ( m_sliceTag.find("Shifter")!=std::string::npos || m_shifter ) {
349 if ( chainName.tail().find("_FTF")!=std::string::npos ) {
351 if ( shifter_ftf>=shifterChains ||
352 ( shifter_ftf<shifterChains && chainName.vtx()!="" && chainName.vtx()==lastvtx ) ) {
353 msg(MSG::DEBUG) << "^[[91;1m" << "Matching chain " << selectChain << " excluded - Shifter chain already definied^[[m" << endmsg;
355 ++toolitr;
356 continue;
357 }
358 ++shifter_ftf;
359 lastvtx = chainName.vtx();
360 }
361 else if ( chainName.tail().find("_IDTrig")!=std::string::npos || chainName.tail().find("CosmicsN_EFID")!=std::string::npos ) {
363 ++shifter_efid;
364 if ( shifter_efid>shifterChains ) {
365 msg(MSG::DEBUG) << "^[[91;1m" << "Matching chain " << selectChain << " excluded - Shifter chain already definied^[[m" << endmsg;
366 ++toolitr;
367 continue;
368 }
369 }
370 else if ( chainName.tail().find("_EFID")!=std::string::npos ) {
372 shifter_efid_run1++;
373 if ( shifter_efid_run1>shifterChains ) {
374 msg(MSG::DEBUG) << "^[[91;1m" << "Matching chain " << selectChain << " excluded - Shifter chain already definied^[[m" << endmsg;
375 ++toolitr;
376 continue;
377 }
378 }
379 }
380#endif
381
382 if ( std::find(chains.begin(), chains.end(), selectChain) == chains.end() ) { // deduplicate
383 chains.push_back( selectChain );
384 monTools.push_back( &(*toolitr) );
385 }
386
387 }
388
389 ++toolitr;
390 }
391
392 m_chainNames = chains;
393
394 // tag and probe object creation
395 std::vector<std::string>& allchains = m_ntupleChainNames;
396
397 std::vector<ChainString> allcs;
398
399 allcs.reserve(allchains.size());
400
401
403 std::vector<std::string> mtypes;
404
405 for ( size_t i=0 ; i<allchains.size() ; i++ ) {
406 allcs.emplace_back( ChainString( allchains[i] ) );
407 if ( allcs.back().head().find("HLT_")==0 ) continue;
408 if ( allcs.back().head().find("EF_")==0 ) continue;
409 if ( allcs.back().head()=="Offline" ) {
410 mcTruth = false;
411 if ( allcs.back().tail()!="" ) {
412 if ( allcs.back().tail().find("+")==0 ) {
413 mtypes.push_back( allcs.back().tail().substr(1) );
414 ATH_MSG_INFO( "Adding Offline reference collection: " << mtypes.back() );
415 }
416 else {
417 if ( mtypes.size()<1 ) ATH_MSG_WARNING( "Too Many reference collections : " << allcs.back().tail() );
418 else {
419 mtypes.push_back( allcs.back().tail() );
420 ATH_MSG_INFO( "Offline reference collection: " << mtypes.back() );
421 }
422 }
423 }
424 else {
425 mtypes.push_back( "" );
426 }
427 }
428 }
429
430 for ( size_t i=0 ; i<m_chainNames.size() ; i++ ) {
431
432 ChainString probe = m_chainNames[i] ;
433
434 TagNProbe* tnp = 0;
435
436 if ( probe.extra().find("probe")!=std::string::npos ) {
437
438 std::string probe_key = std::string(probe.extra()).erase( probe.extra().find("probe"), 5 ) ;
439
440 for ( size_t j=0 ; j<allchains.size() ; j++ ) {
441
442 ChainString tag = allchains[j];
443
444 // tag chain must be the same as probe chain but with te=0 and extra=*_tag
445 if ( tag.head() != probe.head() ) continue;
446 if ( tag.element() == probe.element() ) continue;
447 if ( tag.extra().find("tag")==std::string::npos ) continue;
448
449 std::string tag_key = std::string(tag.extra()).erase( tag.extra().find("tag"), 3 ) ;
450
451 if ( tag_key != probe_key ) continue;
452
453 double massMin = 40;
454 double massMax = 150;
455
456 if ( tag.head().find("Jpsi")!=std::string::npos ) {
457 massMin = 0;
458 massMax = 20;
459 }
460
461 if ( mcTruth ) tnp = new TagNProbe( "Truth", massMin, massMax );
462 else tnp = new TagNProbe( "Offline", massMin, massMax );
463
464 tnp->tag(tag.raw()) ;
465 tnp->probe(probe.raw()) ;
466
467 ATH_MSG_DEBUG( "Tag and probe pair found: " << tag << " : " << probe );
468
469 break ;
470
471 }
472 }
473
474
476
477 {
478
479 ATH_MSG_INFO( "configure analysis: " << m_chainNames[i] );
480
481 AnalysisConfigR3_Tier0* analysis = new AnalysisConfigR3_Tier0( m_sliceTag, // m_chainNames[i],
482 m_chainNames[i], "", "",
483 m_chainNames[i], "", "",
484 filterTest, filterRef,
485 dR_matcher,
487 tnp );
488
489 analysis->setRunPurity(m_runPurity);
490 // analysis->setShifter(m_shifter);
492
493 analysis->set_monTool( monTools[i] );
494 if ( mtypes.size()>0 ) analysis->setTypes( mtypes );
495
496 analysis->initialise();
497
498 if ( mcTruth ) {
499 analysis->setPdgID( m_selectTruthPdgId );
501
502 analysis->setMCTruthRef( true );
503 analysis->setOfflineRef( false );
504 }
505
506 m_sequences.push_back( analysis );
507
508 std::string highestPT_str = "";
509 std::string vtxindex_str = "";
510
511 if ( m_useHighestPT ) {
512 highestPT_str = ": using highest PT only";
513 m_sequences.back()->setUseHighestPT(true);
514 }
515 else m_sequences.back()->setUseHighestPT(false);
516
517 if ( !(m_vtxIndex<0) ) {
518 vtxindex_str = ": searching for vertex index ";
519 m_sequences.back()->setVtxIndex(m_vtxIndex);
520 }
521
522 m_sequences.back()->releaseData(m_releaseMetaData);
523
527 if ( m_chainNames[i].find("cosmic")!=std::string::npos ||
528 m_chainNames[i].find("Cosmic")!=std::string::npos ) m_sequences.back()->setFilterOnRoi(false);
529
530 ATH_MSG_DEBUG( " ----- creating analysis " << m_sequences.back()->name() << " : " << m_chainNames[i] << " " << highestPT_str << " " << vtxindex_str << " -----" );
531
532 }
533 }
534 }
535
536 if ( !m_fileopen && ( m_initialisePerRun || m_firstRun ) ) {
537 m_fileopen = true;
538
539 for ( unsigned i=0 ; i<m_sequences.size() ; i++ ) {
540 ATH_MSG_VERBOSE( " ----- booking for analysis " << m_sequences[i]->name() << " -----" );
541 m_sequences[i]->initialize( this, &m_tdt );
542 m_sequences[i]->setGenericFlag(m_genericFlag);
543 m_sequences[i]->book();
544 }
545 m_firstRun = false;
546 }
547
548 ATH_MSG_DEBUG( " configured " << m_sequences.size() << " sequences" );
549
550 ATH_MSG_DEBUG( " ----- exit book() ----- " );
551
552 return StatusCode::SUCCESS;
553
554}
555
556
557
558
559
560StatusCode TrigR3Mon::fillHistograms(const EventContext &/*context*/) const {
561
562 ATH_MSG_DEBUG( " ----- enter fill() ----- " );
563
564 const Trig::ChainGroup* chainGroup = m_tdt->getChainGroup( "(HLT|EF)_e.*" );
565 const std::vector<std::string> selectChains = chainGroup->getListOfTriggers();
566
568 static std::once_flag flag;
569 std::call_once(flag, [&]() {
570 for ( unsigned i=0 ; i<selectChains.size() ; i++ ) {
571 ATH_MSG_DEBUG( "\tchain " << selectChains[i] << " from TDT" );
572 }
573
574 for ( size_t i=selectChains.size() ; i-- ; ) {
575 if ( i>5 ) i=5;
576 ATH_MSG_INFO( "^[[91;1m" << "configured chain " << selectChains[i] << "^[[m" );
577 }
578 });
579
580 if (msgLvl(MSG::DEBUG)) {
581 const std::vector<bool> isPassed = chainGroup->isPassedForEach();
582 for ( unsigned i=0 ; i<selectChains.size() ; i++ ) {
583 if ( isPassed[i] ) {
584 ATH_MSG_DEBUG( "chain " << selectChains[i] << "\tpass: " << isPassed[i] << "\tprescale: " << m_tdt->getPrescale(selectChains[i]) );
585 }
586 }
587 }
588
589 for ( unsigned i=0 ; i<m_sequences.size() ; i++ ) {
590 m_sequences[i]->execute();
591 }
592
593 ATH_MSG_DEBUG(" ----- exit fill() ----- ");
594
595 return StatusCode::SUCCESS;
596}
597
598
599
600
601
602// bool newEventsBlock, bool newLumiBlock, bool newRun are protected varibales
603// correctly set before this is called
605
606 ATH_MSG_DEBUG( " ====== enter proc() ====== " );
607 if ( m_initialisePerRun ) {
608 for ( unsigned i=0 ; i<m_sequences.size() ; i++ ) m_sequences[i]->finalize();
609 m_fileopen = false;
610 }
611 ATH_MSG_DEBUG( " ====== exit proc() ====== " );
612
613 return StatusCode::SUCCESS;
614}
615
616
617
618
619
620
621
622
#define endmsg
T_AnalysisConfigR3_Tier0< AthReentrantAlgorithm, AnalysisR3_Tier0 > AnalysisConfigR3_Tier0
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_DEBUG(x,...)
#define ATH_MSG_WARNING(x,...)
#define ATH_MSG_VERBOSE(x,...)
#define ATH_MSG_INFO(x,...)
generic track filter to filter on kinematics, si and trt hit content NB: Should really make this up f...
emacs: this is -* c++ -*-
TIDA::Associator< TIDA::Track > TrackAssociator
emacs: this is -*- c++ -*-
emacs: this is -*- c++ -*-
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
bool msgLvl(const MSG::Level lvl) const
virtual StatusCode initialize() override
initialize
AthMonitorAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor.
const std::string & extra() const
Definition ChainString.h:38
const std::string & roi() const
Definition ChainString.h:35
std::string subs(std::string s) const
const std::string & raw() const
Definition ChainString.h:42
const std::string & head() const
Definition ChainString.h:33
const std::string & tail() const
Definition ChainString.h:34
bool passed() const
Definition ChainString.h:40
const std::string & vtx() const
Definition ChainString.h:36
const std::string & element() const
Definition ChainString.h:37
sadly need to include a root dependency, but no matter - the TIDA::Track class itself inherets from T...
void set_monTool(ToolHandle< GenericMonitoringTool > *m)
void setTypes(const std::vector< std::string > &t)
void tag(const std::string &chainName)
getters and setters
std::vector< T_AnalysisConfig< AthReentrantAlgorithm > * > m_sequences
do we need this ??? why not the base class ???
Definition TrigR3Mon.h:101
double m_pTCut
Definition TrigR3Mon.h:58
bool m_runPurity
also run purity analyses
Definition TrigR3Mon.h:137
std::vector< TrackFilter * > m_filters
Definition TrigR3Mon.h:97
bool m_shifter
determine whether this should be treated as a shifter chain
Definition TrigR3Mon.h:140
std::vector< std::string > m_chainNames
Definition TrigR3Mon.h:103
double m_d0CutOffline
Definition TrigR3Mon.h:75
bool m_initialisePerRun
Definition TrigR3Mon.h:115
int m_sctHitsOffline
Definition TrigR3Mon.h:81
int m_selectParentTruthPdgId
Definition TrigR3Mon.h:121
int m_pixHitsOffline
Definition TrigR3Mon.h:80
SG::ReadHandleKeyArray< xAOD::TrackParticleContainer > m_trackdummykeys
Definition TrigR3Mon.h:163
bool m_legacy
Definition TrigR3Mon.h:151
int m_pixHits
Definition TrigR3Mon.h:64
int m_sctHits
Definition TrigR3Mon.h:65
int m_pixHolesOffline
Definition TrigR3Mon.h:84
std::string m_releaseMetaData
Definition TrigR3Mon.h:105
int m_trtHitsOffline
Definition TrigR3Mon.h:88
virtual StatusCode initialize() override
initialize
std::string m_analysis_config
Definition TrigR3Mon.h:110
int m_strawHits
Definition TrigR3Mon.h:68
double m_etaCutOffline
Definition TrigR3Mon.h:74
bool m_firstRun
Definition TrigR3Mon.h:116
TrigR3Mon(const std::string &name, ISvcLocator *pSvcLocator)
Definition TrigR3Mon.cxx:27
bool m_keepAllEvents
kepp events even if they fail the requested trigger chains
Definition TrigR3Mon.h:124
std::string m_outputFileName
Definition TrigR3Mon.h:111
virtual StatusCode fillHistograms(const EventContext &context) const override
adds event to the monitoring histograms
double m_z0CutOffline
Definition TrigR3Mon.h:77
std::vector< std::string > m_ntupleChainNames
Definition TrigR3Mon.h:104
bool m_useHighestPT
use only the highest pt tracks
Definition TrigR3Mon.h:130
double m_matchPhi
Definition TrigR3Mon.h:93
std::string m_sliceTag
additional string for the histogram directory
Definition TrigR3Mon.h:146
bool m_mcTruthIn
Definition TrigR3Mon.h:108
bool m_requireDecision
Definition TrigR3Mon.h:157
int m_trtHits
Definition TrigR3Mon.h:67
int m_siHits
Definition TrigR3Mon.h:63
int m_siHitsOffline
Definition TrigR3Mon.h:79
std::vector< TrackAssociator * > m_associators
Definition TrigR3Mon.h:98
double m_fiducial_radius
ntuple building variables
Definition TrigR3Mon.h:155
ToolHandleArray< GenericMonitoringTool > m_monTools
Definition TrigR3Mon.h:161
SG::ReadHandleKeyArray< xAOD::VertexContainer > m_vtxdummykeys
Definition TrigR3Mon.h:165
bool m_fileopen
if an ntple file open?
Definition TrigR3Mon.h:127
double m_z0Cut
Definition TrigR3Mon.h:61
int m_sctHolesOffline
Definition TrigR3Mon.h:85
ToolHandle< Trig::TrigDecisionTool > m_tdt
Definition TrigR3Mon.h:95
bool m_buildNtuple
Definition TrigR3Mon.h:107
int m_shifterChains
max number of shifter chains to use - must be < 2 at the moment
Definition TrigR3Mon.h:143
virtual ~TrigR3Mon()
bool m_genericFlag
Definition TrigR3Mon.h:113
double m_tauEtCutOffline
Definition TrigR3Mon.h:71
double m_doTauThreeProng
Definition TrigR3Mon.h:72
bool m_containTracks
do we want basic, or rigorous roi track containment
Definition TrigR3Mon.h:149
virtual StatusCode finalize() override
int m_siHolesOffline
Definition TrigR3Mon.h:86
double m_mind0CutOffline
Definition TrigR3Mon.h:76
virtual StatusCode bookHistograms()
double m_d0Cut
Definition TrigR3Mon.h:60
int m_vtxIndex
if performing the vertex analysis, the index of the offline vertex to look for
Definition TrigR3Mon.h:134
double m_pTCutOffline
Definition TrigR3Mon.h:73
int m_selectTruthPdgId
Definition TrigR3Mon.h:119
double m_etaCut
Definition TrigR3Mon.h:59
bool m_filter_on_roi
Definition TrigR3Mon.h:159
double m_matchR
Definition TrigR3Mon.h:92
int m_blayerHitsOffline
Definition TrigR3Mon.h:82
int m_strawHitsOffline
Definition TrigR3Mon.h:89
std::vector< bool > isPassedForEach(unsigned int condition=TrigDefs::Physics) const
return vector with isPassed decision for each chain
std::vector< std::string > getListOfTriggers() const
std::string find(const std::string &s)
return a remapped string
Definition hcg.cxx:140