ATLAS Offline Software
TrigR3Mon.cxx
Go to the documentation of this file.
1 
13 
17 
20 
21 #include "TrigR3Mon.h"
22 
24 
25 #include <mutex>
26 
27 TrigR3Mon::TrigR3Mon( const std::string & name, ISvcLocator* pSvcLocator)
28  : AthMonitorAlgorithm(name, pSvcLocator),
29  m_tdt("Trig::TrigDecisionTool/TrigDecisionTool"),
30  m_buildNtuple(false),
31  m_initialisePerRun(true),
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),
39  m_shifterChains(1),
40  m_sliceTag(""),
41  m_containTracks(false),
42  m_legacy(true),
43  m_fiducial_radius(32),
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 = 2000 );
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 
211  ac->set_ptmin( m_pTCutOffline );
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 
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
323  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
335  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 
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 = 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 = 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 ( mcTruth ) tnp = new TagNProbe( "Truth", massMin, massMax );
454  else tnp = new TagNProbe( "Offline", massMin, massMax );
455 
456  tnp->tag(tag.raw()) ;
457  tnp->probe(probe.raw()) ;
458 
459  ATH_MSG_DEBUG( "Tag and probe pair found: " << tag << " : " << probe );
460 
461  break ;
462 
463  }
464  }
465 
466 
468 
469  {
470 
471  ATH_MSG_INFO( "configure analysis: " << m_chainNames[i] );
472 
473  AnalysisConfigR3_Tier0* analysis = new AnalysisConfigR3_Tier0( m_sliceTag, // m_chainNames[i],
474  m_chainNames[i], "", "",
475  m_chainNames[i], "", "",
476  filterTest, filterRef,
477  dR_matcher,
479  tnp );
480 
481  analysis->setRunPurity(m_runPurity);
482  // analysis->setShifter(m_shifter);
483  analysis->containTracks(m_containTracks);
484 
485  analysis->set_monTool( monTools[i] );
486  if ( mtypes.size()>0 ) analysis->setTypes( mtypes );
487 
488  analysis->initialise();
489 
490  if ( mcTruth ) {
491  analysis->setPdgID( m_selectTruthPdgId );
493 
494  analysis->setMCTruthRef( true );
495  analysis->setOfflineRef( false );
496  }
497 
498  m_sequences.push_back( analysis );
499 
500  std::string highestPT_str = "";
501  std::string vtxindex_str = "";
502 
503  if ( m_useHighestPT ) {
504  highestPT_str = ": using highest PT only";
505  m_sequences.back()->setUseHighestPT(true);
506  }
507  else m_sequences.back()->setUseHighestPT(false);
508 
509  if ( !(m_vtxIndex<0) ) {
510  vtxindex_str = ": searching for vertex index ";
511  m_sequences.back()->setVtxIndex(m_vtxIndex);
512  }
513 
514  m_sequences.back()->releaseData(m_releaseMetaData);
515 
519  if ( m_chainNames[i].find("cosmic")!=std::string::npos ||
520  m_chainNames[i].find("Cosmic")!=std::string::npos ) m_sequences.back()->setFilterOnRoi(false);
521 
522  ATH_MSG_DEBUG( " ----- creating analysis " << m_sequences.back()->name() << " : " << m_chainNames[i] << " " << highestPT_str << " " << vtxindex_str << " -----" );
523 
524  }
525  }
526  }
527 
528  if ( !m_fileopen && ( m_initialisePerRun || m_firstRun ) ) {
529  m_fileopen = true;
530 
531  for ( unsigned i=0 ; i<m_sequences.size() ; i++ ) {
532  ATH_MSG_VERBOSE( " ----- booking for analysis " << m_sequences[i]->name() << " -----" );
533  m_sequences[i]->initialize( this, &m_tdt );
534  m_sequences[i]->setGenericFlag(m_genericFlag);
535  m_sequences[i]->book();
536  }
537  m_firstRun = false;
538  }
539 
540  ATH_MSG_DEBUG( " configured " << m_sequences.size() << " sequences" );
541 
542  ATH_MSG_DEBUG( " ----- exit book() ----- " );
543 
544  return StatusCode::SUCCESS;
545 
546 }
547 
548 
549 
550 
551 
552 //StatusCode TrigR3Mon::execute() {
553 StatusCode TrigR3Mon::fillHistograms(const EventContext &/*context*/) const {
554 
555  ATH_MSG_DEBUG( " ----- enter fill() ----- " );
556 
557  const Trig::ChainGroup* chainGroup = m_tdt->getChainGroup( "HLT_e.*" );
558  const std::vector<std::string> selectChains = chainGroup->getListOfTriggers();
559 
561  static std::once_flag flag;
562  std::call_once(flag, [&]() {
563  for ( unsigned i=0 ; i<selectChains.size() ; i++ ) {
564  ATH_MSG_DEBUG( "\tchain " << selectChains[i] << " from TDT" );
565  }
566 
567  for ( size_t i=selectChains.size() ; i-- ; ) {
568  if ( i>5 ) i=5;
569  ATH_MSG_INFO( "^[[91;1m" << "configured chain " << selectChains[i] << "^[[m" );
570  }
571  });
572 
573  if (msgLvl(MSG::DEBUG)) {
574  const std::vector<bool> isPassed = chainGroup->isPassedForEach();
575  for ( unsigned i=0 ; i<selectChains.size() ; i++ ) {
576  if ( isPassed[i] ) {
577  ATH_MSG_DEBUG( "chain " << selectChains[i] << "\tpass: " << isPassed[i] << "\tprescale: " << m_tdt->getPrescale(selectChains[i]) );
578  }
579  }
580  }
581 
582  for ( unsigned i=0 ; i<m_sequences.size() ; i++ ) {
583  m_sequences[i]->execute();
584  }
585 
586  ATH_MSG_DEBUG(" ----- exit fill() ----- ");
587 
588  return StatusCode::SUCCESS;
589 }
590 
591 
592 
593 
594 
595 // bool newEventsBlock, bool newLumiBlock, bool newRun are protected varibales
596 // correctly set before this is called
598 
599  ATH_MSG_DEBUG( " ====== enter proc() ====== " );
600  if ( m_initialisePerRun ) {
601  for ( unsigned i=0 ; i<m_sequences.size() ; i++ ) m_sequences[i]->finalize();
602  m_fileopen = false;
603  }
604  ATH_MSG_DEBUG( " ====== exit proc() ====== " );
605 
606  return StatusCode::SUCCESS;
607 }
608 
609 
610 
611 
612 
613 
614 
615 
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
TrigR3Mon::m_requireDecision
bool m_requireDecision
Definition: TrigR3Mon.h:157
TIDA::Associator
Definition: TIDAAssociator.h:24
T_AnalysisConfigR3_Tier0::containTracks
void containTracks(bool b)
Definition: T_AnalysisConfigR3_Tier0.h:207
TrigR3Mon::m_sctHits
int m_sctHits
Definition: TrigR3Mon.h:65
TrigR3Mon::finalize
virtual StatusCode finalize() override
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
find
std::string find(const std::string &s)
return a remapped string
Definition: hcg.cxx:135
TrigR3Mon::m_mind0CutOffline
double m_mind0CutOffline
Definition: TrigR3Mon.h:76
TrigR3Mon::m_firstRun
bool m_firstRun
Definition: TrigR3Mon.h:116
AnalysisConfigMT_Ntuple::set_ptmin
void set_ptmin(double d)
Definition: AnalysisConfigMT_Ntuple.h:45
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
TrackFilter
Definition: TrackFilter.h:26
AnalysisConfigMT_Ntuple
Definition: AnalysisConfigMT_Ntuple.h:24
TrigR3Mon::m_shifter
bool m_shifter
determine whether this should be treated as a shifter chain
Definition: TrigR3Mon.h:140
ChainString::head
std::string head() const
Definition: ChainString.h:33
Filters.h
TrigR3Mon::m_strawHitsOffline
int m_strawHitsOffline
Definition: TrigR3Mon.h:89
T_AnalysisConfigR3_Tier0::setTypes
void setTypes(const std::vector< std::string > &t)
Definition: T_AnalysisConfigR3_Tier0.h:217
TrigR3Mon::m_tauEtCutOffline
double m_tauEtCutOffline
Definition: TrigR3Mon.h:71
AthCommonMsg< Gaudi::Algorithm >::msgLvl
bool msgLvl(const MSG::Level lvl) const
Definition: AthCommonMsg.h:30
TrigR3Mon::m_selectTruthPdgId
int m_selectTruthPdgId
Definition: TrigR3Mon.h:119
TrigR3Mon::m_doTauThreeProng
double m_doTauThreeProng
Definition: TrigR3Mon.h:72
TrigR3Mon::m_chainNames
std::vector< std::string > m_chainNames
Definition: TrigR3Mon.h:103
ChainString
Definition: ChainString.h:23
TrigR3Mon::m_blayerHitsOffline
int m_blayerHitsOffline
Definition: TrigR3Mon.h:82
Filter_AcceptAll
Definition: Filter_AcceptAll.h:29
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
TrigR3Mon::m_siHits
int m_siHits
Definition: TrigR3Mon.h:63
Filter_AcceptAll.h
TrigR3Mon::m_sequences
std::vector< T_AnalysisConfig< AthReentrantAlgorithm > * > m_sequences
do we need this ??? why not the base class ???
Definition: TrigR3Mon.h:101
TrigR3Mon::m_pTCutOffline
double m_pTCutOffline
Definition: TrigR3Mon.h:73
TrigR3Mon::m_filters
std::vector< TrackFilter * > m_filters
Definition: TrigR3Mon.h:97
T_AnalysisConfigR3_Tier0::setPdgID
void setPdgID(int i=0)
Definition: T_AnalysisConfigR3_Tier0.h:209
TrigR3Mon::m_sctHitsOffline
int m_sctHitsOffline
Definition: TrigR3Mon.h:81
TrigR3Mon::m_sctHolesOffline
int m_sctHolesOffline
Definition: TrigR3Mon.h:85
TrigR3Mon::m_trackdummykeys
SG::ReadHandleKeyArray< xAOD::TrackParticleContainer > m_trackdummykeys
Definition: TrigR3Mon.h:163
TrigR3Mon::initialize
virtual StatusCode initialize() override
initialize
Definition: TrigR3Mon.cxx:141
TrigR3Mon::m_useHighestPT
bool m_useHighestPT
use only the highest pt tracks
Definition: TrigR3Mon.h:130
TrigR3Mon::m_buildNtuple
bool m_buildNtuple
Definition: TrigR3Mon.h:107
AthMonitorAlgorithm
Base class for Athena Monitoring Algorithms.
Definition: AthMonitorAlgorithm.h:36
ChainString::extra
std::string extra() const
Definition: ChainString.h:38
TrigR3Mon::m_outputFileName
std::string m_outputFileName
Definition: TrigR3Mon.h:111
TrigR3Mon::m_pixHitsOffline
int m_pixHitsOffline
Definition: TrigR3Mon.h:80
TagNProbe
Definition: TagNProbe.h:28
TrigR3Mon::m_monTools
ToolHandleArray< GenericMonitoringTool > m_monTools
Definition: TrigR3Mon.h:161
TrigR3Mon::m_containTracks
bool m_containTracks
do we want basic, or rigorous roi track containment
Definition: TrigR3Mon.h:149
TrigR3Mon::m_strawHits
int m_strawHits
Definition: TrigR3Mon.h:68
TagNProbe.h
emacs: this is -*- c++ -*-
TrigR3Mon::m_d0Cut
double m_d0Cut
Definition: TrigR3Mon.h:60
TrigR3Mon::m_vtxdummykeys
SG::ReadHandleKeyArray< xAOD::VertexContainer > m_vtxdummykeys
Definition: TrigR3Mon.h:165
TrigR3Mon::m_vtxIndex
int m_vtxIndex
if performing the vertex analysis, the index of the offline vertex to look for
Definition: TrigR3Mon.h:134
TrigR3Mon::m_shifterChains
int m_shifterChains
max number of shifter chains to use - must be < 2 at the moment
Definition: TrigR3Mon.h:143
TrigR3Mon::m_ntupleChainNames
std::vector< std::string > m_ntupleChainNames
Definition: TrigR3Mon.h:104
ParseInputs.gDirectory
gDirectory
Definition: Final2012/ParseInputs.py:133
lumiFormat.i
int i
Definition: lumiFormat.py:92
TrigR3Mon::m_analysis_config
std::string m_analysis_config
Definition: TrigR3Mon.h:110
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
TrigR3Mon::m_matchPhi
double m_matchPhi
Definition: TrigR3Mon.h:93
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
TagNProbe::tag
void tag(const std::string &chainName)
getters and setters
Definition: TagNProbe.h:45
TrigR3Mon::~TrigR3Mon
virtual ~TrigR3Mon()
Definition: TrigR3Mon.cxx:125
T_AnalysisConfigR3_Tier0::initialise
void initialise()
Definition: T_AnalysisConfigR3_Tier0.h:184
TrigR3Mon::m_legacy
bool m_legacy
Definition: TrigR3Mon.h:151
TrigR3Mon::m_etaCut
double m_etaCut
Definition: TrigR3Mon.h:59
master.flag
bool flag
Definition: master.py:29
TrigR3Mon::m_releaseMetaData
std::string m_releaseMetaData
Definition: TrigR3Mon.h:105
TrigR3Mon::m_filter_on_roi
bool m_filter_on_roi
Definition: TrigR3Mon.h:159
TrigR3Mon::m_siHolesOffline
int m_siHolesOffline
Definition: TrigR3Mon.h:86
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
Associator_BestDeltaRMatcher
Definition: Associator_BestMatch.h:80
AnalysisConfigMT_Ntuple::set_fiducial_radius
void set_fiducial_radius(double d)
Definition: AnalysisConfigMT_Ntuple.h:44
TrigR3Mon::m_etaCutOffline
double m_etaCutOffline
Definition: TrigR3Mon.h:74
TrigR3Mon::m_sliceTag
std::string m_sliceTag
additional string for the histogram directory
Definition: TrigR3Mon.h:146
TrigR3Mon::m_initialisePerRun
bool m_initialisePerRun
Definition: TrigR3Mon.h:115
TrigR3Mon::m_genericFlag
bool m_genericFlag
Definition: TrigR3Mon.h:113
Trig::ChainGroup
Definition: Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/ChainGroup.h:51
ChainString::raw
std::string raw() const
Definition: ChainString.h:53
ChainString::element
std::string element() const
Definition: ChainString.h:37
TrigR3Mon::m_keepAllEvents
bool m_keepAllEvents
kepp events even if they fail the requested trigger chains
Definition: TrigR3Mon.h:124
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
TrigR3Mon::m_z0Cut
double m_z0Cut
Definition: TrigR3Mon.h:61
ChainString.h
T_AnalysisConfigR3_Tier0
Definition: T_AnalysisConfigR3_Tier0.h:96
T_AnalysisConfigR3_Tier0::set_monTool
void set_monTool(ToolHandle< GenericMonitoringTool > *m)
Definition: T_AnalysisConfigR3_Tier0.h:219
TrigR3Mon::fillHistograms
virtual StatusCode fillHistograms(const EventContext &context) const override
adds event to the monitoring histograms
TrigR3Mon::m_trtHits
int m_trtHits
Definition: TrigR3Mon.h:67
TrigR3Mon::m_trtHitsOffline
int m_trtHitsOffline
Definition: TrigR3Mon.h:88
AthMonitorAlgorithm::initialize
virtual StatusCode initialize() override
initialize
Definition: AthMonitorAlgorithm.cxx:18
python.copyTCTOutput.chains
chains
Definition: copyTCTOutput.py:81
python.TrigInDetValidation_AODtoTrkNtuple_CA.mcTruth
mcTruth
Definition: TrigInDetValidation_AODtoTrkNtuple_CA.py:72
TrigR3Mon::m_associators
std::vector< TrackAssociator * > m_associators
Definition: TrigR3Mon.h:98
TrigR3Mon::m_fileopen
bool m_fileopen
if an ntple file open?
Definition: TrigR3Mon.h:127
TrigR3Mon::m_siHitsOffline
int m_siHitsOffline
Definition: TrigR3Mon.h:79
TrigR3Mon::m_mcTruthIn
bool m_mcTruthIn
Definition: TrigR3Mon.h:108
T_AnalysisConfigR3_Tier0::setMCTruthRef
void setMCTruthRef(bool b)
Definition: T_AnalysisConfigR3_Tier0.h:213
AnalysisR3_Tier0
Definition: AnalysisR3_Tier0.h:30
AnalysisConfigR3_Tier0
T_AnalysisConfigR3_Tier0< AthReentrantAlgorithm, AnalysisR3_Tier0 > AnalysisConfigR3_Tier0
Definition: AnalysisConfig_Tier0.h:21
T_AnalysisConfigR3_Tier0::setOfflineRef
void setOfflineRef(bool b)
Definition: T_AnalysisConfigR3_Tier0.h:215
T_AnalysisConfigR3_Tier0::setRunPurity
void setRunPurity(bool b)
Definition: T_AnalysisConfigR3_Tier0.h:201
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
Filter_Track
sadly need to include a root dependency, but no matter - the TIDA::Track class itself inherets from T...
Definition: Filter_Track.h:41
Trig::ChainGroup::isPassedForEach
std::vector< bool > isPassedForEach(unsigned int condition=TrigDefs::Physics) const
return vector with isPassed decision for each chain
Definition: Trigger/TrigAnalysis/TrigDecisionTool/Root/ChainGroup.cxx:193
DEBUG
#define DEBUG
Definition: page_access.h:11
TrigR3Mon::m_matchR
double m_matchR
Definition: TrigR3Mon.h:92
python.TriggerAPI.TriggerAPISession.chainName
chainName
Definition: TriggerAPISession.py:353
TrigR3Mon::m_pixHits
int m_pixHits
Definition: TrigR3Mon.h:64
AthCommonMsg< Gaudi::Algorithm >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
TrigR3Mon::m_z0CutOffline
double m_z0CutOffline
Definition: TrigR3Mon.h:77
TrigR3Mon::m_runPurity
bool m_runPurity
also run purity analyses
Definition: TrigR3Mon.h:137
TrigR3Mon::m_tdt
ToolHandle< Trig::TrigDecisionTool > m_tdt
Definition: TrigR3Mon.h:95
CaloCondBlobAlgs_fillNoiseFromASCII.tag
string tag
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:24
TrigR3Mon::m_selectParentTruthPdgId
int m_selectParentTruthPdgId
Definition: TrigR3Mon.h:121
TrigR3Mon.h
emacs: this is -*- c++ -*-
Trig::ChainGroup::getListOfTriggers
std::vector< std::string > getListOfTriggers() const
Definition: Trigger/TrigAnalysis/TrigDecisionTool/Root/ChainGroup.cxx:467
TrigR3Mon::bookHistograms
virtual StatusCode bookHistograms()
Definition: TrigR3Mon.cxx:177
TrigR3Mon::m_d0CutOffline
double m_d0CutOffline
Definition: TrigR3Mon.h:75
T_AnalysisConfigR3_Tier0::setParentPdgID
void setParentPdgID(int i=0)
Definition: T_AnalysisConfigR3_Tier0.h:211
Filter_Track.h
AnalysisConfig_Ntuple
Definition: AnalysisConfig_Ntuple.h:32
AnalysisConfigMT_Ntuple.h
TrigR3Mon::m_pixHolesOffline
int m_pixHolesOffline
Definition: TrigR3Mon.h:84
TrigR3Mon::m_fiducial_radius
double m_fiducial_radius
ntuple building variables
Definition: TrigR3Mon.h:155
TrigR3Mon::TrigR3Mon
TrigR3Mon(const std::string &name, ISvcLocator *pSvcLocator)
Definition: TrigR3Mon.cxx:27
TagNProbe::probe
void probe(const std::string &chainName)
Definition: TagNProbe.h:46
TIDAHistogram.h
emacs: this is -* c++ -*-
TrigR3Mon::m_pTCut
double m_pTCut
Definition: TrigR3Mon.h:58