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