ATLAS Offline Software
T_AnalysisConfigMT_Tier0.h
Go to the documentation of this file.
1 /* emacs: this is -*- c++ -*- */
23 #ifndef TrigInDetAnalysisExample_T_AnalysisConfigMT_Tier0_H
24 #define TrigInDetAnalysisExample_T_AnalysisConfigMT_Tier0_H
25 
31 
37 
38 #include "TTree.h"
39 #include "TFile.h"
40 
41 #include "GaudiKernel/ToolHandle.h"
43 
44 
45 // McParticleEvent includes
47 
49 #include "AtlasHepMC/GenEvent.h"
50 #include "AtlasHepMC/GenVertex.h"
51 #include "AtlasHepMC/GenParticle.h"
52 
54 
55 
56 
58 
60 
66 
67 
68 
69 #include "VxVertex/VxContainer.h"
70 
72 
74 
76 
77 
80 
81 // #include "TrigSteeringEvent/TrigRoiDescriptorCollection.h"
82 
85 
87 
88 
89 
90 
91 
92 template<typename T, typename A=Analysis_Tier0>
94 
95 public:
96 
97  // Full constructor: test/reference/selection
98  // - analysisInstanceName: the name of the analysis chain being created
99  // - xxxChainName: the name of the chain to be used as test/reference/selection; must be "StoreGate" in case of direct access to SG containers
100  // - xxxType: the type of tracks to be retrieved from the test/reference/selection chain or container
101  // - xxxKey: the key for tracks to be retrieved from the test/reference/selection chain or container
102  // - all standard operations are performed in loops over 0=test 1=reference 2=selection
103  T_AnalysisConfigMT_Tier0(const std::string& analysisInstanceName,
104  const std::string& testChainName, const std::string& testType, const std::string& testKey,
105  const std::string& referenceChainName, const std::string& referenceType, const std::string& referenceKey,
106  TrackFilter* testFilter, TrackFilter* referenceFilter,
107  TrackAssociator* associator,
109  TagNProbe* TnP_tool = 0) :
110  T_AnalysisConfig<T>( analysisInstanceName,
111  testChainName, testType, testKey,
112  referenceChainName, referenceType, referenceKey,
113  testFilter, referenceFilter,
114  associator,
115  analysis),
116  _analysis(0),
117  m_useBeamCondSvc(false),
118  m_doOffline(true),
119  m_doMuons(false),
120  m_doElectrons(false),
121  m_doTaus(false),
122  m_doBjets(false),
123  m_hasTruthMap(false),
124  m_doTauThreeProng(false),
125  m_tauEtCutOffline(false),
126  m_NRois(0),
127  m_NRefTracks(0),
128  m_NTestTracks(0),
129  m_runPurity(false),
130  m_shifter(false),
131  m_pTthreshold(0),
132  m_first(true),
133  m_containTracks(false),
134  m_TnP_tool(TnP_tool),
135  m_invmass(0),
136  m_invmass_obj(0),
137  m_monTool(0)
138  {
140  m_event = new TIDA::Event();
141  m_chainNames.push_back(testChainName);
142 
143 #if 0
144  ChainString& chain = m_chainNames.back();
145 
146  std::cout << "\nT_AnalysisConfigMT_Tier0::name: " << name() << "\t" << this << std::endl;
147  std::cout << "T_AnalysisConfigMT_Tier0::chain specification: " << testChainName << " -> " << chain << "\t" << chain.raw() << std::endl;
148  std::cout << "\tchain: " << chain.head() << std::endl;
149  std::cout << "\tkey: " << chain.tail() << std::endl;
150  std::cout << "\troi: " << chain.roi() << std::endl;
151  std::cout << "\tvtx: " << chain.vtx() << std::endl;
152  std::cout << "\tte: " << chain.element() << std::endl;
153 
154  std::cout << "\tpost: " << chain.post() << std::endl;
155  std::cout << "\tpt: " << chain.postvalue("pt") << std::endl;
156 
157  std::cout << "\tcontainTracks: " << m_containTracks << std::endl;
158 #endif
159 
160  m_testType = testType;
161  }
162 
164  delete m_event;
165  if ( m_TnP_tool != 0 ) delete m_TnP_tool ;
166  }
167 
168  void setRunPurity( bool b ) { m_runPurity=b; }
169 
170  void setShifter( bool b ) { m_shifter=b; }
171 
172  void useBeamCondSvc( bool b ) { m_useBeamCondSvc = b; }
173 
174  void containTracks( bool b ) { m_containTracks = b; }
175 
176 public:
177 
179 
180 protected:
181 
185 
188 
193 
194 
195  virtual void loop() {
196 
197  bool TnP_flag = (m_TnP_tool != 0) ; // flag for tag and probe analysis
198 
199  if( m_provider->msg().level() <= MSG::VERBOSE) {
200  m_provider->msg(MSG::VERBOSE) << "AnalysisConfigMT_Tier0::loop() for " << T_AnalysisConfig<T>::m_analysisInstanceName << endmsg;
201  }
202 
203  // get (offline) beam position
204  double xbeam = 0;
205  double ybeam = 0;
206 
207  if ( m_first ) {
208 
209  m_first = false;
210 
211  if ( m_provider->msg().level() <= MSG::VERBOSE ) {
212  m_provider->msg(MSG::VERBOSE) << " using beam position\tx=" << xbeam << "\ty=" << ybeam << endmsg;
213 
214  std::vector<std::string> configuredChains = (*(m_tdt))->getListOfTriggers("L2_.*, EF_.*, HLT_.*");
215 
216  for ( unsigned i=0 ; i<configuredChains.size() ; i++ ) {
217  // std::cout << "Configured chain " << configuredChains[i] << std::endl;
218  m_provider->msg(MSG::VERBOSE) << "Chain " << configuredChains[i] << endmsg;
219  }
220  }
221 
222  // std::cout << "\tloop() analyse chains " << m_chainNames.size() << std::endl;
223 
225 
226  std::vector<ChainString> chains;
227 
231  while ( chainitr!=m_chainNames.end() ) {
232 
234  ChainString& chainName = (*chainitr);
235 
236  if (m_provider->msg().level() <= MSG::VERBOSE) {
237  m_provider->msg(MSG::VERBOSE) << "process chain " << chainName << endmsg;
238  }
239 
240  if ( chainName.head() == "" ) {
241 
242  std::string selectChain = chainName.raw();
243 
244  chains.push_back( ChainString(selectChain) );
245 
246  }
247  else {
248 
250  std::vector<std::string> selectChains = (*(m_tdt))->getListOfTriggers( chainName.head() );
251 
252  for ( unsigned iselected=0 ; iselected<selectChains.size() ; iselected++ ) {
253 
254  selectChains[iselected] = chainName.subs( selectChains[iselected] );
255 
256 #if 0
257  std::cout << "sorting:: chain specification: " << chainName << "\traw:" << chainName.raw() << std::endl;
258  std::cout << "\tchain: " << chainName.head() << std::endl;
259  std::cout << "\tkey: " << chainName.tail() << std::endl;
260  std::cout << "\tind: " << chainName.extra() << std::endl;
261  std::cout << "\troi: " << chainName.roi() << std::endl;
262  std::cout << "\tvtx: " << chainName.vtx() << std::endl;
263  std::cout << "\tte: " << chainName.element() << std::endl;
264 #endif
265 
267  chains.push_back( ChainString(selectChains[iselected]) );
268 
269  if(m_provider->msg().level() <= MSG::VERBOSE) {
270  m_provider->msg(MSG::VERBOSE) << "Matching chain " << selectChains[iselected] << " (" << chainName.head() << ")" << endmsg;
271  }
272 
273  // std::cout<< "\tMatching chain " << sc << " (" << chainName.head() << ")" << std::endl;
274 
275  }
276  }
277 
278  ++chainitr;
279  }
280 
281  // m_chainNames.insert( m_chainNames.end(), chains.begin(), chains.end() );
283 
284  if(m_provider->msg().level() <= MSG::VERBOSE) {
285  for ( size_t ic=m_chainNames.size() ; ic-- ; ) m_provider->msg(MSG::VERBOSE) << "Analyse chain " << m_chainNames[ic] << endmsg;
286  }
287 
288  }
289 
290  // std::cout << "\tloop() event analysis ..." << std::endl;
291 
294 
295  Filter_etaPT filter_etaPT(5,200);
296  Filter_Combined filter_truth( &filter_etaPT, &filter_etaPT);
297 
299  // Filter_Combined filterRef (&filter_offline, &filter_vertex);
300 
301  int iRefFilter = 1;
302  int iTestFilter = 0;
303 
304  if ( m_runPurity ) {
305  iRefFilter = 0;
306  iTestFilter = 1;
307  }
308 
309  Filter_Combined filterRef( m_filters[iRefFilter][0], &filter );
310  Filter_Combined filterTest( m_filters[iTestFilter][0], &filter );
311 
312 
313  TrigTrackSelector selectorTruth( &filter_truth );
314  TrigTrackSelector selectorRef( &filterRef );
315  m_selectorRef = &selectorRef;
316  TrigTrackSelector selectorTest( &filterTest );
317  m_selectorTest = &selectorTest;
318 
319  if ( xbeam!=0 || ybeam!=0 ) {
320  m_selectorRef->setBeamline( xbeam, ybeam );
321  }
322 
324 
325  // clear the ntuple TIDA::Event class
326  m_event->clear();
327 
329 
330  const xAOD::EventInfo* pEventInfo;
331 
332  unsigned run_number = 0;
333  unsigned long long event_number = 0;
334  unsigned lumi_block = 0;
335  unsigned bunch_crossing_id = 0;
336  unsigned time_stamp = 0;
337  double mu_val = 0;
338 
339  // std::cout << "\tloop() get EventInfo" << std::endl;
340 
341  if ( this->template retrieve(pEventInfo, "EventInfo").isFailure() ) {
342  m_provider->msg(MSG::WARNING) << "Failed to get EventInfo " << endmsg;
343  } else {
344 
345  run_number = pEventInfo->runNumber();
346  event_number = pEventInfo->eventNumber();
347  lumi_block = pEventInfo->lumiBlock();
348  time_stamp = pEventInfo->timeStamp();
349  bunch_crossing_id = pEventInfo->bcid();
350  mu_val = pEventInfo->averageInteractionsPerCrossing();
351  }
352 
353  if(m_provider->msg().level() <= MSG::VERBOSE){
354  m_provider->msg(MSG::VERBOSE) << "run " << run_number
355  << "\tevent " << event_number
356  << "\tlb " << lumi_block << endmsg;
357  }
358 
359  // m_provider->msg(MSG::INFO) << "run " << run_number
360  // << "\tevent " << event_number
361  // << "\tlb " << lumi_block << endmsg;
362 
363  // std::cout << "\trun " << run_number << "\tevent " << event_number << "\tlb " << lumi_block << std::endl;
364 
365 
366  // clear the ntuple TIDA::Event class
367  m_event->clear();
368 
370  m_event->event_number(event_number);
371  m_event->lumi_block(lumi_block);
372  m_event->time_stamp(time_stamp);
373  m_event->bunch_crossing_id(bunch_crossing_id);
374  m_event->mu(mu_val);
375 
378 
379  bool analyse = false;
380 
381  // Check HLTResult
382 
383  // std::cout << "\tloop() loop over trigger chains to determine whether to process this event ..." << std::endl;
384 
385  for ( unsigned ichain=0 ; ichain<m_chainNames.size() ; ichain++ ) {
386 
387  const std::string& chainname = m_chainNames[ichain].head();
388 
389  if ( chainname == "" ) analyse = true;
390  else {
391 
392  //Only for trigger chains
393  if ( chainname.find("L2") == std::string::npos &&
394  chainname.find("EF") == std::string::npos &&
395  chainname.find("HLT") == std::string::npos ) continue;
396 
397  if ( m_provider->msg().level() <= MSG::DEBUG ) {
398  m_provider->msg(MSG::DEBUG) << "Chain " << chainname
399  << "\tpass " << (*m_tdt)->isPassed(chainname)
400  << "\tpres " << (*m_tdt)->getPrescale(chainname) << endmsg;
401  }
402 
403  // std::cout << "\tChain " << chainname << "\tpass " << (*m_tdt)->isPassed(chainname)
404  // << "\tpres " << (*m_tdt)->getPrescale(chainname) << std::endl;
405 
406  if ( (*(m_tdt))->isPassed(chainname) || (*(m_tdt))->getPrescale(chainname) ) analyse = true;
407 
408  }
409  }
410 
411 
412  // if ( (*m_tdt)->ExperimentalAndExpertMethods().isHLTTruncated() ) {
413  // m_provider->msg(MSG::WARNING) << "HLTResult truncated, skipping event" << endmsg;
414  // return;
415  // }
416 
417  if ( !this->m_keepAllEvents && !analyse ) {
418  // m_provider->msg(MSG::VERBOSE) << "No chains passed unprescaled - not processing this event" << endmsg;
419  if(m_provider->msg().level() <= MSG::VERBOSE) {
420  m_provider->msg(MSG::VERBOSE) << "No chains passed unprescaled - not processing this event" << endmsg;
421  }
422  // std::cout << "\tNo chains passed unprescaled - not processing this event" << std::endl;
423  return;
424  }
425 
426 
427 
429 
430  selectorTruth.clear();
431 
432 
433 
434  if(m_provider->msg().level() <= MSG::VERBOSE)
435  m_provider->msg(MSG::VERBOSE) << "MC Truth flag " << m_mcTruth << endmsg;
436 
437  const TrigInDetTrackTruthMap* truthMap = 0;
438 
439  if ( m_mcTruth ) {
440  if(m_provider->msg().level() <= MSG::VERBOSE ) m_provider->msg(MSG::VERBOSE) << "getting Truth" << endmsg;
441 
442  if ( this->template retrieve(truthMap, "TrigInDetTrackTruthMap").isFailure()) {
443  if(m_provider->msg().level() <= MSG::VERBOSE)
444  m_provider->msg(MSG::VERBOSE) << "TrigInDetTrackTruthMap not found" << endmsg;
445  m_hasTruthMap = false;
446  }
447  else {
448  if(m_provider->msg().level() <= MSG::VERBOSE)
449  m_provider->msg(MSG::VERBOSE) << "TrigInDetTrackTruthMap found" << endmsg;
450  m_hasTruthMap = true;
451  }
452  }
453 
454 
456 
457  std::vector<TIDA::Vertex> vertices;
458  std::vector<TIDA::Vertex> vertices_rec;
459 
460  std::vector<double> refbeamspot;
461  std::vector<double> testbeamspot;
462 
464 
465  m_provider->msg(MSG::VERBOSE) << "fetching AOD Primary vertex container" << endmsg;
466 
467  if ( !this->select( vertices, "PrimaryVertices" ) ) {
468  m_provider->msg(MSG::VERBOSE) << "could not retrieve vertex collection " "PrimaryVertices" << std::endl;
469  }
470 
472 
473  if ( m_mcTruth ) {
474  m_event->addChain( "Truth" );
476  m_event->back().back().addTracks(selectorTruth.tracks());
477  }
478 
480 
481  if ( m_doOffline ) {
482  for ( unsigned i=0 ; i<vertices.size() ; i++ ) {
483  if(m_provider->msg().level() <= MSG::VERBOSE)
484  m_provider->msg(MSG::VERBOSE) << "vertex " << i << " " << vertices[i] << endmsg;
485  m_event->addVertex(vertices[i]);
486  }
487  }
488 
490 
491  // int Noff = 0;
492  std::vector<TIDA::Track*> offline_tracks;
493  std::vector<TIDA::Track*> electron_tracks;
494  std::vector<TIDA::Track*> muon_tracks;
495 
496  std::vector<TIDA::Track*> ref_tracks;
497  std::vector<TIDA::Track*> test_tracks;
498 
499  offline_tracks.clear();
500  electron_tracks.clear();
501  muon_tracks.clear();
502 
503  ref_tracks.clear();
504  test_tracks.clear();
505 
506  // offline track retrieval now done once for each chain rather than each roi
507  if ( m_provider->msg().level() <= MSG::VERBOSE )
508  m_provider->msg(MSG::VERBOSE) << "MC Truth flag " << m_mcTruth << endmsg;
509 
510  bool foundTruth = false;
511 
512  if ( !m_doOffline && m_mcTruth ) {
513 
514  filter_truth.setRoi( 0 ); // don't filter on RoI yet (or until needed)
515 
516  selectorTruth.clear();
517 
518  if ( m_provider->msg().level() <= MSG::VERBOSE )
519  m_provider->msg(MSG::VERBOSE) << "getting Truth" << endmsg;
520 
521  if ( m_provider->evtStore()->template contains<TruthParticleContainer>("INav4MomTruthEvent") ) {
522  //ESD
523  this->template selectTracks<TruthParticleContainer>( &selectorTruth, "INav4MomTruthEvent" );
524  foundTruth = true;
525  }
526  else if ( m_provider->evtStore()->template contains<TruthParticleContainer>("SpclMC") ) {
528  this->template selectTracks<TruthParticleContainer>( &selectorTruth, "SpclMC");
529  foundTruth = true;
530  }
531  else if ( m_provider->evtStore()->template contains<xAOD::TruthParticleContainer>("TruthParticles") ) {
533  this->template selectTracks<xAOD::TruthParticleContainer>( &selectorTruth, "TruthParticles");
534  foundTruth = true;
535  }
536  else if ( m_provider->evtStore()->template contains<TruthParticleContainer>("") ) {
538  this->template selectTracks<TruthParticleContainer>( &selectorTruth, "");
539  foundTruth = true;
540  }
541  else
542  if ( m_provider->msg().level() <= MSG::VERBOSE ) {
543  m_provider->msg(MSG::VERBOSE) << "Truth not found - none whatsoever!" << endmsg;
544  }
545  }
546 
547  if ( !m_doOffline && m_mcTruth && !foundTruth ) {
548 
549  if ( m_provider->msg().level() <= MSG::VERBOSE ) {
550  m_provider->msg(MSG::VERBOSE) << "getting Truth" << endmsg;
551  }
552 
554 
555  const DataHandle<McEventCollection> mcevent;
556 
558 
559  std::string keys[4] = { "GEN_AOD", "TruthEvent", "", "G4Truth" };
560 
561  std::string key = "";
562 
563  bool foundcollection = false;
564 
565  for ( int ik=0 ; ik<4 ; ik++ ) {
566 
567  if ( m_provider->msg().level() <= MSG::VERBOSE ) {
568  m_provider->msg(MSG::VERBOSE) << "Try McEventCollection: " << keys[ik] << endmsg;
569  }
570 
571  if ( !m_provider->evtStore()->template contains<McEventCollection>(keys[ik]) ) {
572  if( m_provider->msg().level() <= MSG::VERBOSE )
573  m_provider->msg(MSG::VERBOSE) << "No McEventCollection: " << keys[ik] << endmsg;
574  continue;
575  }
576 
577  if ( m_provider->msg().level() <= MSG::VERBOSE )
578  m_provider->msg(MSG::VERBOSE) << "evtStore()->retrieve( mcevent, " << keys[ik] << " )" << endmsg;
579 
580  if ( this->template retrieve( mcevent, keys[ik] ).isFailure() ) {
581  if ( m_provider->msg().level() <= MSG::VERBOSE )
582  m_provider->msg(MSG::VERBOSE) << "Failed to get McEventCollection: " << keys[ik] << endmsg;
583  }
584  else {
586  key = keys[ik];
587  if(m_provider->msg().level() <= MSG::VERBOSE)
588  m_provider->msg(MSG::VERBOSE) << "Found McEventCollection: " << key << endmsg;
589  foundcollection = true;
590  break;
591  }
592  }
593 
595  if ( !foundcollection ) {
596  if(m_provider->msg().level() <= MSG::VERBOSE)
597  m_provider->msg(MSG::WARNING) << "No MC Truth Collections of any sort, whatsoever!!!" << endmsg;
598 
599  // m_tree->Fill();
600  // return StatusCode::FAILURE;
601 
602  return;
603  }
604 
605  if ( m_provider->msg().level() <= MSG::VERBOSE ) {
606  m_provider->msg(MSG::VERBOSE) << "Found McEventCollection: " << key << "\tNevents " << mcevent->size() << endmsg;
607  }
608 
609  McEventCollection::const_iterator evitr = mcevent->begin();
610  McEventCollection::const_iterator evend = mcevent->end();
611 
612  unsigned ie = 0;
613  unsigned ip = 0;
614 
615  unsigned ie_ip = 0;
616 
617  while ( evitr!=evend ) {
618 
619  int _ip = 0;
620 
621  int pid = HepMC::signal_process_id((*evitr));
622 
623  //The logic should be clarified here
624  if ( pid!=0 ) {
625 
626  for (auto pitr: *(*evitr) ) {
627 
628  selectorTruth.selectTrack( pitr );
629 
630  ++_ip;
631 
632  }
633 
634  }
635  ++ie;
636  ++evitr;
637 
638  if ( _ip>0 ) {
640  // m_provider->msg(MSG::VERBOSE) << "Found " << ie << "\tpid " << pid << "\t with " << ip << " TruthParticles (GenParticles)" << endmsg;
641  ++ie_ip;
642  ip += _ip;
643  }
644  }
645 
646  if(m_provider->msg().level() <= MSG::VERBOSE){
647  m_provider->msg(MSG::VERBOSE) << "Found " << ip << " TruthParticles (GenParticles) in " << ie_ip << " GenEvents out of " << ie << endmsg;
648  m_provider->msg(MSG::VERBOSE) << "selected " << selectorTruth.size() << " TruthParticles (GenParticles)" << endmsg;
649  }
650 
651  if(selectorTruth.size() > 0) foundTruth = true;
652 
653  if ( !(ip>0) ) {
654  if (m_provider->msg().level() <= MSG::VERBOSE) m_provider->msg(MSG::WARNING) << "NO TRUTH PARTICLES - returning" << endmsg;
655  return;
656  }
657 
658  }
659 
660  // m_provider->msg(MSG::VERBOSE) << " Offline tracks " << endmsg;
661 
662  if ( m_doOffline ) {
663 
664  if ( m_provider->evtStore()->template contains<xAOD::TrackParticleContainer>("InDetTrackParticles") ) {
665  this->template selectTracks<xAOD::TrackParticleContainer>( m_selectorRef, "InDetTrackParticles" );
666  refbeamspot = this->template getBeamspot<xAOD::TrackParticleContainer>( "InDetTrackParticles" );
667  }
668  else if (m_provider->evtStore()->template contains<Rec::TrackParticleContainer>("TrackParticleCandidate") ) {
669  this->template selectTracks<Rec::TrackParticleContainer>( m_selectorRef, "TrackParticleCandidate" );
670  }
671  else if ( m_provider->msg().level() <= MSG::WARNING ) {
672  m_provider->msg(MSG::WARNING) << " Offline tracks not found " << endmsg;
673  }
674 
675  }
676 
677 
678  // std::cout << "\tloop() loop over chains proper ..." << std::endl;
679 
681  for ( unsigned ichain=0 ; ichain<m_chainNames.size() ; ichain++ ) {
682 
684 
685  // std::string& chainname = chains[ichain];
686  const std::string& chainname = m_chainNames[ichain].head();
687  const std::string& key = m_chainNames[ichain].tail();
688  const std::string& vtx_name = m_chainNames[ichain].vtx();
689  //Not used left just in case
690  //const std::string& roi_name = m_chainNames[ichain].roi();
691  //const std::string& te_name = m_chainNames[ichain].element();
692  m_pTthreshold = 0;
693 
694  if ( m_chainNames[ichain].postcount() ) {
695  std::string ptvalue = m_chainNames[ichain].postvalue("pt");
696  if ( ptvalue!="" ) m_pTthreshold = std::stod(ptvalue);
697  }
698 
699 
700  unsigned _decisiontype = TrigDefs::Physics;
701  unsigned decisiontype;
702 
703  if ( this->requireDecision() ) _decisiontype = TrigDefs::requireDecision;
704 
705 
706  if ( m_chainNames[ichain].passed() ) decisiontype = _decisiontype;
707  else decisiontype = TrigDefs::alsoDeactivateTEs;
708 
710  // if ( decisiontype==TrigDefs::requireDecision ) std::cout << "\tSUTT TrigDefs::requireDecision " << decisiontype << std::endl;
711  // if ( decisiontype==TrigDefs::Physics ) std::cout << "\tSUTT TrigDefs::Physics " << decisiontype << std::endl;
712 
713  if ( chainname!="" && m_provider->msg().level() <= MSG::VERBOSE ) {
714 
715  m_provider->msg(MSG::VERBOSE) << "status for chain " << chainname
716  << "\tpass " << (*m_tdt)->isPassed(chainname)
717  << "\tprescale " << (*m_tdt)->getPrescale(chainname) << endmsg;
718 
719  m_provider->msg(MSG::VERBOSE) << "fetching features for chain " << chainname << endmsg;
720 
721  m_provider->msg(MSG::VERBOSE) << chainname << "\tpassed: " << (*m_tdt)->isPassed( chainname ) << endmsg;
722  }
723 
725  // std::cout << "\tstatus for chain " << chainname
726  // << "\tpass " << (*m_tdt)->isPassed( chainname )
727  // << "\tpassdt " << (*m_tdt)->isPassed( chainname, decisiontype )
728  // << "\tprescale " << (*m_tdt)->getPrescale( chainname ) << std::endl;
729 
730 
731  // m_provider->msg(MSG::INFO) << chainname << "\tpassed: " << (*m_tdt)->isPassed( chainname ) << "\t" << m_chainNames[ichain] << "\trun " << run_number << "\tevent " << event_number << endmsg;
732 
733 
734  if ( chainname!="" && !this->m_keepAllEvents && !(*m_tdt)->isPassed( chainname, decisiontype ) ) continue;
735 
736 
739  // Trig::FeatureContainer f = (*m_tdt)->features( chainname, TrigDefs::alsoDeactivateTEs);
740 
743 
744  // tag and probe analysis processes multiple chains passed in the tag and probe tool at once so loop over vector of chains
745  std::vector<std::string> chainNames ;
746 
747  if ( !TnP_flag ) {
748  chainNames.push_back(m_chainNames[ichain].raw()) ;
749  }
750  else {
751  chainNames.push_back(m_TnP_tool->tag()) ;
752  chainNames.push_back(m_TnP_tool->probe()) ;
753  }
754 
755  // loop over new chainNames vector but doing the same stuff
756  for ( unsigned i = 0 ; i < chainNames.size() ; ++i ) {
757 
758  ChainString chainConfig = chainNames[i] ;
759  std::string chainName = chainConfig.head();
760 
761  m_event->addChain( chainNames[i] );
762 
764 
765  if ( chainName == "" ) {
766 
768 
770 
772 
773  TIDARoiDescriptor* roiInfo = new TIDARoiDescriptor(true);
774 
775  chain.addRoi( *roiInfo );
776 
777  if ( m_provider->evtStore()->template contains<xAOD::TrackParticleContainer>(key) ) {
778  this->template selectTracks<xAOD::TrackParticleContainer>( m_selectorTest, key );
779  refbeamspot = this->template getBeamspot<xAOD::TrackParticleContainer>( key );
780  }
781 
782  const std::vector<TIDA::Track*>& testtracks = m_selectorTest->tracks();
783 
784  chain.back().addTracks(testtracks);
785 
786  if ( vtx_name!="" ) {
787 
789 
790  m_provider->msg(MSG::VERBOSE) << "\tFetch xAOD::VertexContainer with key " << vtx_name << endmsg;
791 
792  std::vector<TIDA::Vertex> tidavertices;
793 
794  if ( this->select( tidavertices, vtx_name ) ) chain.back().addVertices( tidavertices );
795  }
796 
797 
798  delete roiInfo;
799 
800  }
801  else {
802 
804 
805  //std::string roi_key = m_chainNames[ichain].roi();
806 
807  std::string roi_key = chainConfig.roi();
808 
809  unsigned feature_type =TrigDefs::lastFeatureOfType;
810 
811  if ( roi_key!="" ) feature_type= TrigDefs::allFeaturesOfType;
812 
814 
815  int leg = -1;
816 
817  if ( chainConfig.element()!="" ) {
818  leg = std::atoi(chainConfig.element().c_str());
819  }
820 
821  std::vector< TrigCompositeUtils::LinkInfo<TrigRoiDescriptorCollection> > rois =
822  (*m_tdt)->template features<TrigRoiDescriptorCollection>( Trig::FeatureRequestDescriptor( chainName,
823  decisiontype,
824  roi_key,
825  feature_type,
826  "roi",
827  leg ) );
828 
829  // const unsigned int featureCollectionMode = const std::string& navElementLinkKey = "roi") const;
830 
831  int iroi = 0;
832 
834 
835  iroi++;
836 
840 
841  if ( roi_key=="SuperRoi" && iroi>1 ) continue;
842 
843  // std::cout << "\troi: get link " << roi_key << " ..." << std::endl;
844 
845  const ElementLink<TrigRoiDescriptorCollection> roi_link = roi_info.link;
846 
848  if ( roi_key!="" && roi_link.dataID()!=roi_key ) continue;
849 
850  const TrigRoiDescriptor* const* roiptr = roi_link.cptr();
851 
852  if ( roiptr == 0 ) {
853  continue;
854  }
855 
856  // std::cout << "\troi: link deref ..." << *roiptr << std::endl;
857 
858  if (m_provider->msg().level() <= MSG::VERBOSE) {
859  m_provider->msg(MSG::VERBOSE) << " RoI descriptor for seeded chain " << chainname << " " << **roiptr << endmsg;
860  }
861 
863 
864  // if ( dbg ) std::cout << "\troi " << iroi << " " << *roiInfo << std::endl;
865 
867 
869 
870  if ( this->template selectTracks<xAOD::TrackParticleContainer>( m_selectorTest, roi_link, key ) ) { }
871 
872  // beamspot stuff not needed for xAOD::TrackParticles
873 
875 
876  chain.addRoi( *roiInfo );
877 
879 
880  const std::vector<TIDA::Track*>& testtracks = m_selectorTest->tracks();
881 
882  chain.back().addTracks(testtracks);
883 
884 
886 
887  if ( vtx_name!="" ) {
888 
889  std::vector<TIDA::Vertex> tidavertices;
890 
891  this->select( tidavertices, roi_link, vtx_name );
892 
893  chain.back().addVertices( tidavertices );
894 
895  }
896 
897 
898 #if 0
899  if ( dbg ) {
900  std::cout << "\tTIDA analysis for chain: " << chainname << "\t key: " << key << "\t" << **roiptr << std::endl;
901  std::cout << "\tcollections: " << chain.back() << std::endl;
902  }
903 #endif
904 
905  delete roiInfo;
906 
907  }
908 
909 
910  }
911 
912  } // end of loop chainNames vector loop
913 
914 
915  if ( m_provider->msg().level() <= MSG::VERBOSE ) {
916  m_provider->msg(MSG::VERBOSE) << "event: " << *m_event << endmsg;
917  }
918 
919  }
920 
921  // close previous loop over chains and open new one
922 
923  for ( unsigned ichain=0 ; ichain<m_event->size() ; ichain++ ) {
924 
925  TIDA::Chain& chain = (*m_event)[ichain];
926  ChainString chainConfig(chain.name());
927  const std::string& vtx_name = chainConfig.vtx();
928 
929  // skip tag chains to avoid performing standard analysis on them (done for tnp at the same time as probes)
930  if ( TnP_flag && chainConfig.extra().find("_tag")!=std::string::npos ) continue ;
931 
932  std::vector<TIDA::Roi*> rois ;
933 
934  if (TnP_flag) {
936  // needs to be done AFTER retrieving offline tracks as m_selectorRef passed as arguement, hence restructuring
937  }
938  else {
939  rois.reserve( chain.size() );
940  for ( size_t ir=0 ; ir<chain.size() ; ir++ ) {
941  rois.push_back( &(chain.rois()[ir]) );
942  }
943  }
944 
945  // now loop over the rois (again)
946 
947  for ( unsigned iroi=0 ; iroi<rois.size() ; iroi++ ) {
948 
949  if ( this->filterOnRoi() ) {
950  filterRef.setRoi( &(rois.at(iroi)->roi() ) );
951  filterRef.containtracks( m_containTracks );
952  }
953  else filterRef.setRoi( 0 );
954 
955  test_tracks.clear();
956 
957  // this block is before the track retrieval in the original, is it working the same here?
958 
972 
973  if ( m_provider->msg().level() <= MSG::VERBOSE )
974  m_provider->msg(MSG::VERBOSE) << "MC Truth flag " << m_mcTruth << endmsg;
975 
976  if ( !m_doOffline && m_mcTruth ) {
977  if ( this->filterOnRoi() ) filter_truth.setRoi( &(rois.at(iroi)->roi() ) );
978  ref_tracks = m_selectorRef->tracks(&filter_truth);
979  }
980  else { // ie. if ( m_doOffline )
981  ref_tracks = m_selectorRef->tracks(&filterRef) ;
982  }
983 
984  if ( m_provider->msg().level() <= MSG::VERBOSE ) {
985  m_provider->msg(MSG::VERBOSE) << "ref tracks.size() " << m_selectorRef->tracks().size() << endmsg;
986  for ( int ii=m_selectorRef->tracks().size() ; ii-- ; ) {
987  m_provider->msg(MSG::VERBOSE) << " ref track " << ii << " " << *m_selectorRef->tracks()[ii] << endmsg;
988  }
989  }
990 
991  test_tracks.clear();
992 
993 
994  for ( unsigned itrk=0 ; itrk<rois.at(iroi)->tracks().size() ; itrk++ ) {
995  test_tracks.push_back(&(rois.at(iroi)->tracks().at(itrk)));
996  }
997 
998  // std::cout << "sutt track multiplicities: offline " << offline_tracks.size() << "\ttest " << test_tracks.size() << std::endl;
999 
1000  _analysis->setvertices( vertices.size() );
1001 
1002  if ( refbeamspot.size()>0 ) _analysis->setBeamRef( refbeamspot );
1003  if ( testbeamspot.size()>0 ) _analysis->setBeamTest( testbeamspot );
1004 
1007 
1008  if ( m_runPurity ) {
1009 
1010  if ( this->getUseHighestPT() ) HighestPTOnly( test_tracks );
1011 
1012  if ( m_pTthreshold>0 ) FilterPT( test_tracks, m_pTthreshold );
1013 
1015  m_NRois++;
1016  m_NRefTracks += test_tracks.size();
1017  m_NTestTracks += ref_tracks.size();
1018 
1019 
1021  m_associator->match( test_tracks, ref_tracks );
1022 
1023  _analysis->execute( test_tracks, ref_tracks, m_associator );
1024 
1025  }
1026  else {
1027 
1029  if ( this->getUseHighestPT() ) HighestPTOnly( ref_tracks );
1030 
1032 
1033  if ( m_pTthreshold>0 ) FilterPT( ref_tracks, m_pTthreshold );
1034 
1036  m_NRois++;
1037  m_NRefTracks += ref_tracks.size();
1038  m_NTestTracks += test_tracks.size();
1039 
1041  m_associator->match( ref_tracks, test_tracks );
1042 
1043  _analysis->setroi( &rois.at(iroi)->roi() );
1044  _analysis->execute( ref_tracks, test_tracks, m_associator );
1045 
1046  if ( vtx_name!="" ) {
1048  std::vector<TIDA::Vertex> vr = rois.at(iroi)->vertices();
1049  std::vector<TIDA::Vertex*> vtx_rec;
1050  for ( unsigned iv=0 ; iv<vr.size() ; iv++ ) vtx_rec.push_back( &vr[iv] );
1051 
1052  std::vector<TIDA::Vertex*> vtx;
1053  if ( this->getVtxIndex()<0 ) {
1054  for ( unsigned iv=0 ; iv<vertices.size() ; iv++ ) vtx.push_back( &vertices[iv] );
1055  }
1056  else {
1057  if ( vertices.size()>unsigned(this->getVtxIndex()) ) vtx.push_back( &vertices[this->getVtxIndex()] );
1058  }
1059 
1060  _analysis->execute_vtx( vtx, vtx_rec, m_event );
1061  }
1062 
1063  }
1064 
1065  if ( _analysis->debug() ) {
1066  m_provider->msg(MSG::INFO) << "Missing track for " << m_chainNames[ichain]
1067  << "\trun " << run_number
1068  << "\tevent " << event_number
1069  << "\tlb " << lumi_block << endmsg;
1070  }
1071 
1072  }
1073 
1074  }
1075 
1076  if ( m_provider->msg().level() <= MSG::VERBOSE ) {
1077  m_provider->msg(MSG::VERBOSE) << "\n\nEvent " << *m_event << endmsg;
1078  }
1079  }
1080 
1081 
1082 
1083  virtual void book() {
1084 
1085  if(m_provider->msg().level() <= MSG::VERBOSE)
1086  m_provider->msg(MSG::VERBOSE) << "AnalysisConfigMT_Tier0::book() " << name() << endmsg;
1087 
1088  m_provider->msg(MSG::ERROR) << "AnalysisConfigMT_Tier0::book() should no longer be called: " << name() << endmsg;
1089 
1090 
1091  }
1092 
1093 
1094 
1095  virtual void finalize() {
1096 
1097  if(m_provider->msg().level() <= MSG::VERBOSE){
1098  m_provider->msg(MSG::VERBOSE) << "AnalysisConfigMT_Tier0::finalise() " << m_provider->name() << endmsg;
1099  }
1100 
1101  m_analysis->finalise();
1102 
1103  // deleting instance of TnP_tool and setting pointer to null
1104  if ( m_TnP_tool != 0 ) {
1105  delete m_TnP_tool ;
1106  m_TnP_tool = 0 ;
1107  }
1108 
1109  m_provider->msg(MSG::INFO) << m_provider->name() << " " << m_chainNames[0] << " \tNRois processed: " << m_NRois << "\tRef tracks: " << m_NRefTracks << "\tTestTracks: " << m_NTestTracks << endmsg;
1110 
1111  if(m_provider->msg().level() <= MSG::VERBOSE) {
1112  m_provider->msg(MSG::VERBOSE) << m_provider->name() << " finalised" << endmsg;
1113  }
1114  }
1115 
1116  void set_monTool( ToolHandle<GenericMonitoringTool>* m ) { m_monTool=m; }
1117 
1118  ToolHandle<GenericMonitoringTool>* monTool() { return m_monTool; }
1119 
1120 protected:
1121 
1123 
1125 
1126  std::vector<ChainString> m_chainNames;
1127  std::vector<A*> m_analyses;
1128  std::string m_testType;
1129 
1133  bool m_doTaus;
1138 
1139  std::string m_outputFileName;
1140 
1142  int m_NRois;
1145 
1147 
1149 
1151 
1152  bool m_first;
1153 
1155 
1157 
1160 
1161  ToolHandle<GenericMonitoringTool>* m_monTool;
1162 
1163 };
1164 
1165 
1166 
1167 #endif // TrigInDetAnalysisExample_T_AnalysisConfigMT_Tier0_H
1168 
T_AnalysisConfigMT_Tier0::m_containTracks
bool m_containTracks
Definition: T_AnalysisConfigMT_Tier0.h:1154
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
T_AnalysisConfig< T >::m_selectorRef
TrigTrackSelector * m_selectorRef
Definition: T_AnalysisConfig.h:981
T_AnalysisConfigMT_Tier0::T_AnalysisConfigMT_Tier0
T_AnalysisConfigMT_Tier0(const std::string &analysisInstanceName, const std::string &testChainName, const std::string &testType, const std::string &testKey, const std::string &referenceChainName, const std::string &referenceType, const std::string &referenceKey, TrackFilter *testFilter, TrackFilter *referenceFilter, TrackAssociator *associator, TrackAnalysis *analysis, TagNProbe *TnP_tool=0)
Definition: T_AnalysisConfigMT_Tier0.h:103
Trig::FeatureRequestDescriptor
Definition: FeatureRequestDescriptor.h:37
TIDA::Associator
Definition: TIDAAssociator.h:24
TIDARoiDescriptorBuilder.h
T_AnalysisConfig< T >::m_mcTruth
bool m_mcTruth
Definition: T_AnalysisConfig.h:988
Filter_RoiSelector.h
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
GenEvent.h
plotting.plot_kinematics.run_number
run_number
Definition: plot_kinematics.py:29
ElectronContainer.h
python.SystemOfUnits.m
int m
Definition: SystemOfUnits.py:91
T_AnalysisConfigMT_Tier0::m_doTaus
bool m_doTaus
Definition: T_AnalysisConfigMT_Tier0.h:1133
runLayerRecalibration.chain
chain
Definition: runLayerRecalibration.py:175
T_AnalysisConfigMT_Tier0::setShifter
void setShifter(bool b)
Definition: T_AnalysisConfigMT_Tier0.h:170
TrigCompositeUtils::passed
bool passed(DecisionID id, const DecisionIDContainer &idSet)
checks if required decision ID is in the set of IDs in the container
Definition: TrigCompositeUtilsRoot.cxx:117
T_AnalysisConfig< T >::m_provider
T * m_provider
Definition: T_AnalysisConfig.h:957
TrigTrackSelector::clear
virtual void clear() override
Definition: TrigTrackSelector.h:102
xAOD::EventInfo_v1::eventNumber
uint64_t eventNumber() const
The current event's event number.
T_AnalysisConfigMT_Tier0::m_NTestTracks
int m_NTestTracks
Definition: T_AnalysisConfigMT_Tier0.h:1144
TrackAnalysis::finalise
virtual void finalise()=0
TIDA::Roi::addTracks
void addTracks(const std::vector< TIDA::Track > &tracks)
accessors for the track vector
Definition: TIDARoi.h:46
T_AnalysisConfig< T >::m_tdt
ToolHandle< Trig::TrigDecisionTool > * m_tdt
Definition: T_AnalysisConfig.h:959
TIDAEvent.h
Basic event class to contain a vector of chains for trigger analysis
T_AnalysisConfigMT_Tier0::m_outputFileName
std::string m_outputFileName
Definition: T_AnalysisConfigMT_Tier0.h:1139
TruthParticleContainer.h
TrackFilter
Definition: TrackFilter.h:26
HepMC::signal_process_id
int signal_process_id(const GenEvent &e)
Definition: GenEvent.h:635
TrackSelector::size
unsigned size() const
Definition: Trigger/TrigAnalysis/TrigInDetAnalysis/TrigInDetAnalysis/TrackSelector.h:63
T_AnalysisConfigMT_Tier0::m_runPurity
bool m_runPurity
Definition: T_AnalysisConfigMT_Tier0.h:1146
Filter_etaPT
Definition: Filter_etaPT.h:27
Analysis_Tier0.h
GenVertex.h
TIDA::Event::size
unsigned size() const
vertex multiplicity ?
Definition: TIDAEvent.h:64
TIDAVertex.h
JiveXML::Event
struct Event_t Event
Definition: ONCRPCServer.h:65
MuonContainer.h
Filters.h
T_AnalysisConfigMT_Tier0::m_first
bool m_first
Definition: T_AnalysisConfigMT_Tier0.h:1152
T_AnalysisConfig< T >::analysis
const TrackAnalysis * analysis() const
Definition: T_AnalysisConfig.h:258
T_AnalysisConfigMT_Tier0::m_pTthreshold
double m_pTthreshold
Definition: T_AnalysisConfigMT_Tier0.h:1150
T_AnalysisConfigMT_Tier0::loop
virtual void loop()
Definition: T_AnalysisConfigMT_Tier0.h:195
TIDARoiDescriptor
Describes the Region of Ineterest geometry It has basically 8 parameters.
Definition: TIDARoiDescriptor.h:42
T_AnalysisConfigMT_Tier0::m_NRois
int m_NRois
output stats
Definition: T_AnalysisConfigMT_Tier0.h:1142
T_AnalysisConfigMT_Tier0::~T_AnalysisConfigMT_Tier0
virtual ~T_AnalysisConfigMT_Tier0()
Definition: T_AnalysisConfigMT_Tier0.h:163
TrigRoiDescriptor
nope - should be used for standalone also, perhaps need to protect the class def bits #ifndef XAOD_AN...
Definition: TrigRoiDescriptor.h:56
ChainString
Definition: ChainString.h:23
TIDATools.h
useful tool for the TrigInDetAnalysis class code
T_AnalysisConfigMT_Tier0::m_hasTruthMap
bool m_hasTruthMap
Definition: T_AnalysisConfigMT_Tier0.h:1135
TrigTrackSelector
L2 tracks.
Definition: TrigTrackSelector.h:58
T_AnalysisConfigMT_Tier0::m_doElectrons
bool m_doElectrons
Definition: T_AnalysisConfigMT_Tier0.h:1132
ExpertMethods.h
T_AnalysisConfigMT_Tier0::m_TnP_tool
TagNProbe * m_TnP_tool
Definition: T_AnalysisConfigMT_Tier0.h:1156
T_AnalysisConfig< T >::getUseHighestPT
bool getUseHighestPT() const
Definition: T_AnalysisConfig.h:279
Filter_AcceptAll.h
T_AnalysisConfig.h
HLTResult.h
Associator_BestMatch.h
TIDA::Event
Definition: TIDAEvent.h:33
TIDA::Event::lumi_block
void lumi_block(unsigned lb)
Definition: TIDAEvent.h:44
GenParticle.h
T_AnalysisConfigMT_Tier0::setRunPurity
void setRunPurity(bool b)
Definition: T_AnalysisConfigMT_Tier0.h:168
xAOD::EventInfo_v1::runNumber
uint32_t runNumber() const
The current event's run number.
TIDA::Event::chains
const std::vector< TIDA::Chain > & chains() const
Definition: TIDAEvent.h:76
TIDA::Chain::addRoi
void addRoi(TIDA::Roi &roi)
add and roi by root dictionary class
Definition: TIDAChain.h:44
PlotCalibFromCool.ie
ie
Definition: PlotCalibFromCool.py:420
covarianceTool.filter
filter
Definition: covarianceTool.py:514
TIDA::Chain::back
TIDA::Roi & back()
Definition: TIDAChain.h:60
T_AnalysisConfigMT_Tier0
Definition: T_AnalysisConfigMT_Tier0.h:93
T_AnalysisConfigMT_Tier0::m_tauEtCutOffline
bool m_tauEtCutOffline
Definition: T_AnalysisConfigMT_Tier0.h:1137
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
FilterPT
void FilterPT(std::vector< T * > &tracks, double pt)
Definition: TIDATools.h:41
TIDDirectory.h
class to keep a directory for each object in a root sort of way, but needed to keep the root objects ...
TrigCompositeUtils.h
T_AnalysisConfigMT_Tier0::m_doTauThreeProng
bool m_doTauThreeProng
Definition: T_AnalysisConfigMT_Tier0.h:1136
TagNProbe
Definition: TagNProbe.h:28
T_AnalysisConfigMT_Tier0::finalize
virtual void finalize()
Definition: T_AnalysisConfigMT_Tier0.h:1095
GenericMonitoringTool.h
A
T_AnalysisConfigMT_Tier0::containTracks
void containTracks(bool b)
Definition: T_AnalysisConfigMT_Tier0.h:174
TagNProbe.h
emacs: this is -*- c++ -*-
TIDA::Event::addChain
void addChain(const std::string &chainname)
methods to add and access chains
Definition: TIDAEvent.h:67
T_AnalysisConfigMT_Tier0::set_monTool
void set_monTool(ToolHandle< GenericMonitoringTool > *m)
Definition: T_AnalysisConfigMT_Tier0.h:1116
TIDA::Event::time_stamp
void time_stamp(unsigned t)
Definition: TIDAEvent.h:45
T_AnalysisConfigMT_Tier0::m_invmass_obj
TH1F * m_invmass_obj
Definition: T_AnalysisConfigMT_Tier0.h:1159
McEventCollection.h
TIDA::Event::back
TIDA::Chain & back()
get the last chain from the vector
Definition: TIDAEvent.h:89
lumiFormat.i
int i
Definition: lumiFormat.py:85
TIDA::Event::event_number
void event_number(unsigned long long e)
Definition: TIDAEvent.h:43
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
TagNProbe::tag
void tag(const std::string &chainName)
getters and setters
Definition: TagNProbe.h:45
TrackSelector.h
T_AnalysisConfig< T >::m_analysis
TrackAnalysis * m_analysis
Definition: T_AnalysisConfig.h:986
T_AnalysisConfig< T >::getVtxIndex
int getVtxIndex() const
Definition: T_AnalysisConfig.h:282
TrigInDetTrackTruthMap
Definition: TrigInDetTrackTruthMap.h:38
TrackAnalysis
Definition: TrackAnalysis.h:32
ParticleGun_EoverP_Config.pid
pid
Definition: ParticleGun_EoverP_Config.py:62
T_AnalysisConfigMT_Tier0::m_monTool
ToolHandle< GenericMonitoringTool > * m_monTool
Definition: T_AnalysisConfigMT_Tier0.h:1161
find_tgc_unfilled_channelids.ip
ip
Definition: find_tgc_unfilled_channelids.py:3
compute_lumi.leg
leg
Definition: compute_lumi.py:95
Filter_etaPT.h
HighestPTOnly
void HighestPTOnly(std::vector< T * > &tracks)
Definition: TIDATools.h:20
TauJetContainer.h
T_AnalysisConfig< T >::m_keepAllEvents
bool m_keepAllEvents
Definition: T_AnalysisConfig.h:995
VxContainer.h
T_AnalysisConfigMT_Tier0::m_event
TIDA::Event * m_event
Definition: T_AnalysisConfigMT_Tier0.h:1124
T_AnalysisConfigMT_Tier0::m_NRefTracks
int m_NRefTracks
Definition: T_AnalysisConfigMT_Tier0.h:1143
Filter_True
default simple filter which accepts all tracks
Definition: Filters.h:26
ChainString::extra
const std::string & extra() const
Definition: ChainString.h:38
xAOD::EventInfo_v1::lumiBlock
uint32_t lumiBlock() const
The current event's luminosity block number.
T_AnalysisConfigMT_Tier0::m_doMuons
bool m_doMuons
Definition: T_AnalysisConfigMT_Tier0.h:1131
VtxAnalysis.h
T_AnalysisConfigMT_Tier0::m_useBeamCondSvc
bool m_useBeamCondSvc
Definition: T_AnalysisConfigMT_Tier0.h:1122
TrigTrackSelector::selectTrack
bool selectTrack(const TrigInDetTrack *track, const TrigInDetTrackTruthMap *truthMap=0)
neater code to make use of vector function also for a single ancestor pdgid, instead of the full code...
Definition: TrigTrackSelector.cxx:116
grepfile.ic
int ic
Definition: grepfile.py:33
T_AnalysisConfigMT_Tier0::monTool
ToolHandle< GenericMonitoringTool > * monTool()
Definition: T_AnalysisConfigMT_Tier0.h:1118
xAOD::EventInfo_v1::averageInteractionsPerCrossing
float averageInteractionsPerCrossing() const
Average interactions per crossing for all BCIDs - for out-of-time pile-up.
Definition: EventInfo_v1.cxx:397
T_AnalysisConfigMT_Tier0::m_doBjets
bool m_doBjets
Definition: T_AnalysisConfigMT_Tier0.h:1134
T_AnalysisConfig< T >::retrieve
StatusCode retrieve(Collection const *&collection, const std::string &key="")
Definition: T_AnalysisConfig.h:573
dbg
Definition: SGImplSvc.cxx:69
T_AnalysisConfig< T >::m_associator
TrackAssociator * m_associator
Definition: T_AnalysisConfig.h:985
TrackSelector::tracks
const std::vector< TIDA::Track * > & tracks() const
Definition: Trigger/TrigAnalysis/TrigInDetAnalysis/TrigInDetAnalysis/TrackSelector.h:53
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
ChainString.h
Filter_Combined
Definition: Filters.h:225
TIDA::Chain
Definition: TIDAChain.h:28
DataHandle
an iterator over instances of a given type in StoreGateSvc. It d-casts and caches locally the pointed...
Definition: DataHandle.h:42
TIDARoiDescriptorBuilder
Definition: TIDARoiDescriptorBuilder.h:21
TIDA::Event::addVertex
void addVertex(const TIDA::Vertex &v)
Definition: TIDAEvent.h:71
EventInfo.h
TIDA::Event::clear
void clear()
clear the event
Definition: TIDAEvent.h:86
xAOD::EventInfo_v1
Class describing the basic event information.
Definition: EventInfo_v1.h:43
T_AnalysisConfigMT_Tier0::m_analyses
std::vector< A * > m_analyses
Definition: T_AnalysisConfigMT_Tier0.h:1127
Filter_Combined::containtracks
void containtracks(bool b=true)
set / unset the flag to determine whether tracks should be fully contained in the RoI or not
Definition: Filters.h:242
TIDA::Event::mu
void mu(double m)
Definition: TIDAEvent.h:47
python.copyTCTOutput.chains
chains
Definition: copyTCTOutput.py:81
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
ir
int ir
counter of the current depth
Definition: fastadd.cxx:49
TrackParticle.h
Filter_Combined::setRoi
void setRoi(TIDARoiDescriptor *r)
Definition: Filters.h:236
T_AnalysisConfigMT_Tier0::_analysis
A * _analysis
Definition: T_AnalysisConfigMT_Tier0.h:178
ChainString::head
const std::string & head() const
Definition: ChainString.h:33
ChainString::roi
const std::string & roi() const
Definition: ChainString.h:35
TagNProbe::GetRois
std::vector< TIDA::Roi * > GetRois(std::vector< TIDA::Chain > &chains, const TrackSelector *selector, TrackFilter *filter, T *hmass, T *hmass_obj, TrigObjectMatcher *tom=0) const
Definition: TagNProbe.h:60
TrigCompositeUtils::LinkInfo
Helper to keep a Decision object, ElementLink and ActiveState (with respect to some requested ChainGr...
Definition: LinkInfo.h:28
T_AnalysisConfigMT_Tier0::book
virtual void book()
Definition: T_AnalysisConfigMT_Tier0.h:1083
AnalysisR3_Tier0.h
T_AnalysisConfigMT_Tier0::m_chainNames
std::vector< ChainString > m_chainNames
Definition: T_AnalysisConfigMT_Tier0.h:1126
DEBUG
#define DEBUG
Definition: page_access.h:11
python.TriggerAPI.TriggerAPISession.chainName
chainName
Definition: TriggerAPISession.py:426
TriggerTest.rois
rois
Definition: TriggerTest.py:23
TrigTrackSelector::setBeamline
void setBeamline(double x, double y, double z=0)
Definition: TrigTrackSelector.h:94
xAOD::EventInfo_v1::timeStamp
uint32_t timeStamp() const
POSIX time in seconds from 1970. January 1st.
CxxUtils::atoi
int atoi(std::string_view str)
Helper functions to unpack numbers decoded in string into integers and doubles The strings are requir...
Definition: Control/CxxUtils/Root/StringUtils.cxx:85
T_AnalysisConfig< T >::filterOnRoi
bool filterOnRoi() const
Definition: T_AnalysisConfig.h:284
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:798
T_AnalysisConfigMT_Tier0::m_invmass
TH1F * m_invmass
Definition: T_AnalysisConfigMT_Tier0.h:1158
python.TrigEgammaMonitorHelper.TH1F
def TH1F(name, title, nxbins, bins_par2, bins_par3=None, path='', **kwargs)
Definition: TrigEgammaMonitorHelper.py:24
python.Constants.VERBOSE
int VERBOSE
Definition: Control/AthenaCommon/python/Constants.py:14
ChainString::element
const std::string & element() const
Definition: ChainString.h:37
TIDA::Associator::match
virtual void match(const std::vector< T * > &s1, const std::vector< S * > &s2)=0
python.StandardJetMods.vr
vr
Definition: StandardJetMods.py:305
TIDA::Event::bunch_crossing_id
void bunch_crossing_id(unsigned b)
Definition: TIDAEvent.h:46
T_AnalysisConfig< T >::m_filters
std::vector< std::vector< TrackFilter * > > m_filters
Definition: T_AnalysisConfig.h:979
xAOD::EventInfo_v1::bcid
uint32_t bcid() const
The bunch crossing ID of the event.
TIDA::Event::run_number
void run_number(unsigned r)
accessors
Definition: TIDAEvent.h:42
T_AnalysisConfig< T >::m_selectorTest
TrigTrackSelector * m_selectorTest
Definition: T_AnalysisConfig.h:982
T_AnalysisConfigMT_Tier0::useBeamCondSvc
void useBeamCondSvc(bool b)
Definition: T_AnalysisConfigMT_Tier0.h:172
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
T_AnalysisConfig< T >::name
const std::string & name() const
Definition: T_AnalysisConfig.h:235
TrackParticleContainer.h
TSU::T
unsigned long long T
Definition: L1TopoDataTypes.h:35
TagNProbe::probe
void probe(const std::string &chainName)
Definition: TagNProbe.h:46
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
T_AnalysisConfig< T >::requireDecision
bool requireDecision() const
Definition: T_AnalysisConfig.h:288
T_AnalysisConfigMT_Tier0::m_shifter
bool m_shifter
Definition: T_AnalysisConfigMT_Tier0.h:1148
T_AnalysisConfig< T >::select
bool select(std::vector< TIDA::Vertex > &vertices, xAOD::VertexContainer::const_iterator vtx_start, xAOD::VertexContainer::const_iterator vtx_end)
Definition: T_AnalysisConfig.h:342
ChainString::vtx
const std::string & vtx() const
Definition: ChainString.h:36
T_AnalysisConfig
Definition: T_AnalysisConfig.h:59
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37
T_AnalysisConfigMT_Tier0::m_testType
std::string m_testType
Definition: T_AnalysisConfigMT_Tier0.h:1128
T_AnalysisConfigMT_Tier0::m_doOffline
bool m_doOffline
Definition: T_AnalysisConfigMT_Tier0.h:1130