ATLAS Offline Software
AnalysisConfigMT_Ntuple.cxx
Go to the documentation of this file.
1 
10 
13 
15 
17 
23 
26 
27 
28 std::string date();
29 
30 
31 //function to find true taus
32 HepMC::ConstGenParticlePtr fromParent( int pdg_id, HepMC::ConstGenParticlePtr p, bool printout=false );
33 
34 
35 
36 template<class T>
37 void remove_duplicates(std::vector<T>& vec) {
38  std::sort(vec.begin(), vec.end());
39  vec.erase(std::unique(vec.begin(), vec.end()), vec.end());
40 }
41 
42 
44  std::set<std::string> chains;
45  const std::vector<std::string> configuredChains = (*m_tdt)->getListOfTriggers("L2_.*, EF_.*, HLT_.*");
46 
47  if (m_provider->msg().level() <= MSG::VERBOSE) {
48  m_provider->msg(MSG::VERBOSE) << "" << configuredChains.size() << " Configured Chains" << "" << endmsg;
49  }
50 
51  for ( unsigned i=0 ; i<configuredChains.size() ; i++ ) {
52  if (m_provider->msg().level() <= MSG::VERBOSE) {
53  m_provider->msg(MSG::VERBOSE) << "" << "Chain " << configuredChains[i] << " (ACN)" << endmsg;
54  }
55  chains.insert( configuredChains[i] );
56  }
57 
58  std::vector<ChainString> chainNames;
60 
62  while ( chainitr!=m_chainNames.end() ) {
63 
65  ChainString& chainName = (*chainitr);
66 
68 
69  std::vector<std::string> selectChains;
70  selectChains.clear();
71  if ( chainitr->head()=="" ) selectChains.push_back("");
72  else selectChains = (*m_tdt)->getListOfTriggers( chainName.head() );
73 
74  for ( unsigned iselected=0 ; iselected<selectChains.size() ; iselected++ ) {
75 
76  selectChains[iselected] = chainName.subs( selectChains[iselected] );
77 
79  chainNames.push_back( ChainString(selectChains[iselected]) );
80 
81  m_provider->msg(MSG::INFO) << "" << "Matching chain " << selectChains[iselected] << "" << endmsg;
82 
85  if ( selectChains[iselected].find("cosmic")!=std::string::npos ) m_fiducial_radius = 1e10;
86 
87  }
88 
89  ++chainitr;
90  }
91 
92  m_chainNames = chainNames;
93  return chains;
94 }
95 
96 
98 
99  m_provider->msg(MSG::DEBUG) << "" << "AnalysisConfigMT_Ntuple::loop() for " << m_analysisInstanceName
100  << " compiled " << __DATE__ << " " << __TIME__ << "\t: " << date() << "" << endmsg;
101 
102 
103  bool foundOffline = false;
104 
105  // get (offline) beam position
106  double xbeam = 0;
107  double ybeam = 0;
108  double zbeam = 0;
109  std::vector<double> beamline;
110 
111 
112  // get (online) beam position
113  double xbeam_online = 0;
114  double ybeam_online = 0;
115  double zbeam_online = 0;
116 
117  std::vector<double> beamline_online;
118 
119  // m_provider->msg(MSG::INFO) << " offline beam position\tx=" << xbeam << "\ty=" << ybeam << "\tz=" << zbeam << endmsg;
120  // m_provider->msg(MSG::INFO) << " online beam position\tx=" << xbeam_online << "\ty=" << ybeam_online << "\tz=" << zbeam_online << endmsg;
121 
123  static const std::set<std::string> configuredHLTChains = get_configured_chains();
124 
128  Filter_etaPT filterRef(5,500);
130  Filter_etaPT filter_etaPT(5.0,m_ptmin);
131  Filter_pdgIdpTeta filter_pdgIdpTeta(m_TruthPdgId,5.0,m_ptmin); // |eta|<5, pt>m_ptmin
132 
133  TrackFilter* truthFilter = &filter_etaPT;
134 
135  TrigTrackSelector selectorTruth( truthFilter, m_fiducial_radius, m_TruthPdgId, m_parentTruthPdgId);
136 
137  TrigTrackSelector selectorRef( &filter_etaPT );
138  TrigTrackSelector selectorTest( &filter );
139 
140  TIDAVertexBuilder vertexBuilder;
141 
142  if ( xbeam!=0 || ybeam!=0 ) {
143  selectorTruth.setBeamline( xbeam, ybeam, zbeam );
144  selectorRef.setBeamline( xbeam, ybeam, zbeam );
145  }
146 
147  if ( xbeam_online!=0 || ybeam_online!=0 ) {
148  selectorTest.setBeamline( xbeam_online, ybeam_online, zbeam_online );
149  }
150 
151  selectorTruth.correctTracks( true );
152  selectorRef.correctTracks( true );
153  selectorTest.correctTracks( true );
154 
155 
156  // clear the ntuple TIDA::Event class
157  m_event->clear();
158 
159  const xAOD::EventInfo* pEventInfo = 0;
160 
161  unsigned run_number = 0;
162  unsigned long long event_number = 0;
163  unsigned lumi_block = 0;
164  unsigned bunch_crossing_id = 0;
165  unsigned time_stamp = 0;
166  double mu_val = 0;
167 
168  if ( retrieve(pEventInfo, "EventInfo").isFailure() ) {
169  m_provider->msg(MSG::DEBUG) << "Failed to get EventInfo " << endmsg;
170  }
171  else {
172  run_number = pEventInfo->runNumber();
173  event_number = pEventInfo->eventNumber();
174  lumi_block = pEventInfo->lumiBlock();
175  time_stamp = pEventInfo->timeStamp();
176  bunch_crossing_id = pEventInfo->bcid();
177  mu_val = pEventInfo->averageInteractionsPerCrossing();
178  }
179 
180  m_provider->msg(MSG::DEBUG) << "run " << run_number
181  << "\tevent " << event_number
182  << "\tlb " << lumi_block << endmsg;
183 
185  m_event->event_number(event_number);
186  m_event->lumi_block(lumi_block);
187  m_event->time_stamp(time_stamp);
188  m_event->bunch_crossing_id(bunch_crossing_id);
189  m_event->mu(mu_val);
190 
191  // build a chain group on the fly and use the reference
192  const Trig::ChainGroup* L2chain=(*m_tdt)->getChainGroup("L2_.*");
193  const Trig::ChainGroup* EFchain=(*m_tdt)->getChainGroup("EF_.*");
194  const Trig::ChainGroup* HLTchain=(*m_tdt)->getChainGroup("HLT_.*");
195 
196  m_provider->msg(MSG::DEBUG) << ""
197  << "L2 pass " << L2chain->isPassed() << "\t"
198  << "EF pass " << EFchain->isPassed() << "\t"
199  << "HLT pass " << HLTchain->isPassed() << ""
200  << endmsg;
201 
204 
205  bool analyse = false;
206 
207  unsigned decisiontype = TrigDefs::Physics;
208 
210 
211  int passed_chains = 0;
212 
213  m_provider->msg(MSG::DEBUG) << "Checking " << m_chainNames.size() << " chains" << endmsg;
214 
215  if ( m_chainNames.empty() ) {
216  m_provider->msg(MSG::WARNING) << "No chains to check" << endmsg;
217  return;
218  }
219 
220  for ( unsigned ichain=0 ; ichain<m_chainNames.size() ; ichain++ ) {
221 
222  std::string chainName = m_chainNames[ichain].head();
223 
224  // Only for trigger chains
225 
226  if (chainName.find("L2") == std::string::npos &&
227  chainName.find("EF") == std::string::npos &&
228  chainName.find("HLT") == std::string::npos ) continue;
229 
230  if ( configuredHLTChains.find(chainName)==configuredHLTChains.end() ) {
231  m_provider->msg(MSG::WARNING) << "" << "Chain " << chainName
232  << " is not configured for this event" << ""
233  << endmsg;
234  continue;
235  }
236 
237  if ( m_chainNames[ichain].passed() ) decisiontype = TrigDefs::Physics;
238  else decisiontype = TrigDefs::includeFailedDecisions;
239 
240  std::string roistring = "";
241  if ( m_chainNames[ichain].roi()!="" ) roistring += "\troi " + m_chainNames[ichain].roi();
242 
243  bool passPhysics = (*m_tdt)->isPassed(chainName);
244 
245  m_provider->msg(MSG::DEBUG) << "Chain " << chainName << "\troi " << roistring
246  << "\tpres " << (*m_tdt)->getPrescale(chainName)
247  << ( passPhysics ? "" : "" ) << "\tpass physics " << passPhysics << ( passPhysics ? "" : "" )
248  << "\t: ( pass " << (*m_tdt)->isPassed(chainName, decisiontype ) << "\tdec type " << decisiontype << " ) " << endmsg;
249 
250  if ( (*m_tdt)->isPassed(chainName, decisiontype ) || !m_chainNames[ichain].passed() ) {
251  analyse = true;
252  passed_chains++;
253  }
254 
255  }
256 
257 
258 
261  if ( !analyse && !m_keepAllEvents && !foundOffline ) {
262  m_provider->msg(MSG::DEBUG) << "No chains passed unprescaled - not processing this event: " << run_number << " " << event_number << " " << lumi_block << endmsg;
263  return;
264  }
265 
266 
267  m_provider->msg(MSG::DEBUG) << "Chains passed " << passed_chains << endmsg;
268 
269 
271 
272  // const TruthParticleContainer* mcpartTES = 0;
273 
274  selectorTruth.clear();
275 
276  m_provider->msg(MSG::DEBUG) << "MC Truth flag " << m_mcTruth << endmsg;
277  const TrigInDetTrackTruthMap* truthMap = 0;
278 
279  if ( m_mcTruth) {
280  m_provider->msg(MSG::DEBUG) << "getting Truth" << endmsg;
281  if ( retrieve(truthMap, "TrigInDetTrackTruthMap").isFailure()) {
282  m_hasTruthMap = false;
283  }
284  else {
285  m_hasTruthMap = true;
286  }
287  if (m_provider->evtStore()->contains<TruthParticleContainer>("INav4MomTruthEvent")) {
288  //ESD
289  selectTracks<TruthParticleContainer>( &selectorTruth, "INav4MomTruthEvent" );
290  }
291  else if (m_provider->evtStore()->contains<TruthParticleContainer>("SpclMC")) {
293  selectTracks<TruthParticleContainer>( &selectorTruth, "SpclMC");
294  }
295  else if (m_provider->evtStore()->contains<TruthParticleContainer>("")) {
297  selectTracks<TruthParticleContainer>( &selectorTruth, "");
298  }
299  else if (m_provider->evtStore()->contains<xAOD::TruthParticleContainer>("TruthParticles")) {
301  selectTracks<xAOD::TruthParticleContainer>( &selectorTruth, "TruthParticles" );
302  }
303  else if (m_provider->evtStore()->contains<xAOD::TruthParticleContainer>("")) {
305  selectTracks<xAOD::TruthParticleContainer>( &selectorTruth, "" );
306  }
307  else {
308  m_provider->msg(MSG::WARNING) << "Truth not found - none whatsoever!" << endmsg;
309  }
310  }
311 
312 
313  // clear the ntuple TIDA::Event class
314  m_event->clear();
315 
317 
319 
320  m_provider->msg(MSG::DEBUG) << " Offline tracks " << endmsg;
321 
322  selectorRef.clear();
323 
324  if (m_provider->evtStore()->contains<xAOD::TrackParticleContainer>("InDetTrackParticles")) {
325  selectTracks<xAOD::TrackParticleContainer>( &selectorRef, "InDetTrackParticles" );
326  }
327  else if (m_provider->evtStore()->contains<Rec::TrackParticleContainer>("TrackParticleCandidate")) {
328  selectTracks<Rec::TrackParticleContainer>( &selectorRef, "TrackParticleCandidate" );
329  }
330  else {
331  m_provider->msg(MSG::WARNING) << " Offline tracks not found " << endmsg;
332  }
333 
334 
336  for ( size_t iv=0; iv<m_vertexType.size(); iv++ ) {
337 
338  std::vector<TIDA::Vertex> vertices;
339 
340  std::string vertexType = "PrimaryVertices";
341  std::string vertexChainname = "Vertex";
342  if ( m_vertexType[iv]!="" ) {
343  vertexType = m_vertexType[iv];
344  vertexChainname += ":" + vertexType;
345  }
346 
347  m_provider->msg(MSG::VERBOSE) << "fetching offline AOD vertex container with key " << vertexType << endmsg;
348 
349  const xAOD::VertexContainer* xaodVtxCollection = 0;
350 
351  if ( retrieve( xaodVtxCollection, vertexType ).isFailure()) {
352  if (m_provider->msg().level() <= MSG::WARNING) m_provider->msg(MSG::WARNING) << "xAOD vertex container not found with key " << vertexType << endmsg;
353  }
354 
355  if ( xaodVtxCollection!=0 ) {
356 
357  m_provider->msg(MSG::DEBUG) << "xAOD vertex container " << vertexType << " found with " << xaodVtxCollection->size() << " entries" << endmsg;
358 
359  // Vertex types in some secondary vertex collections are not properly set and are all 0,
360  // allow these vertices if primary vertices are not used
361  if ( vertexType.find("SecVtx") != std::string::npos ) {
362  vertices = vertexBuilder.select( xaodVtxCollection, &selectorRef.tracks(), true );
363  }
364  else {
365  vertices = vertexBuilder.select( xaodVtxCollection, &selectorRef.tracks() );
366  }
367  }
368 
369  // now add the offline vertices
370  if ( m_doOffline || m_doVertices ) {
371  m_event->addChain( vertexChainname );
373  m_event->back().back().addVertices( vertices );
374  }
375  }
376 
378 
380 
381  if ( m_mcTruth ) {
382  m_event->addChain( "Truth" );
384  m_event->back().back().addTracks(selectorTruth.tracks());
385  }
386 
387 #if 0
388  for ( unsigned i=0 ; i<vertices.size() ; i++ ) {
390  m_provider->msg(MSG::DEBUG) << "vertex " << i << " " << vertices[i] << endmsg;
391  m_event->addVertex(vertices[i]);
392  }
393 #endif
394 
396 
397  int Noff = 0;
398  int Nmu = 0;
399  int Nel = 0;
400  int Ntau = 0;
401 
403 
404  if ( m_doOffline ) {
405 
406  m_event->addChain( "Offline" );
408  m_event->back().back().addTracks(selectorRef.tracks());
409 
410  if ( selectorRef.getBeamX()!=0 || selectorRef.getBeamY()!=0 || selectorRef.getBeamZ()!=0 ) {
411  std::vector<double> beamline_;
412  beamline_.push_back( selectorRef.getBeamX() );
413  beamline_.push_back( selectorRef.getBeamY() );
414  beamline_.push_back( selectorRef.getBeamZ() );
415  m_event->back().back().addUserData(beamline_);
416  }
417 
418 
419  Noff = selectorRef.tracks().size();
420 
421  m_provider->msg(MSG::DEBUG) << "ref tracks.size() " << selectorRef.tracks().size() << endmsg;
422  for ( int ii=selectorRef.tracks().size() ; ii-- ; ) m_provider->msg(MSG::DEBUG) << " ref track " << ii << " " << *selectorRef.tracks()[ii] << endmsg;
423 
424  }
425 
427  for ( unsigned ichain=0 ; ichain<m_chainNames.size() ; ichain++ ) {
428 
430  // m_provider->msg(MSG::INFO)<< "chain:\t" << m_chainNames[ichain] << endmsg;
431 
433  std::string chainname = m_chainNames[ichain].head();
434  std::string collectionname = m_chainNames[ichain].tail();
435  std::string vtx_name = m_chainNames[ichain].vtx();
436 
437 
438  if ( chainname!="" ) continue;
439  if ( collectionname=="" ) continue;
440 
441  chainname = collectionname;
442  if ( vtx_name!="" ) chainname += ":" + vtx_name;
443 
444  // useful debug information - leave this here
445 
448 
449  selectorTest.clear();
450 
451  bool found = false;
452 
453  std::string collection_test = collectionname;
454  size_t pos = collectionname.find("/");
455  if ( pos!=std::string::npos ) collection_test = collectionname.substr( pos+1, collectionname.size()-pos );
456 
457  if (m_provider->evtStore()->contains<Rec::TrackParticleContainer>(collection_test)) {
458  found = selectTracks<Rec::TrackParticleContainer>( &selectorTest, collectionname );
459  }
460  else if (m_provider->evtStore()->contains<xAOD::TrackParticleContainer>(collection_test)) {
461  found = selectTracks<xAOD::TrackParticleContainer>( &selectorTest, collectionname );
462  }
463  else if (m_provider->evtStore()->contains<TrigInDetTrackCollection>(collection_test)) {
464  found = selectTracks<TrigInDetTrackCollection>( &selectorTest, collectionname );
465  }
466  else if (m_provider->evtStore()->contains<TrackCollection>(collection_test)) {
467  found = selectTracks<TrackCollection>( &selectorTest, collectionname );
468  }
469  else {
470  m_provider->msg(MSG::WARNING) << "\tcollection " << collectionname << " not found" << endmsg;
471  }
472 
473 
475 
476  std::vector<TIDA::Vertex> tidavertices;
477 
478  m_provider->msg(MSG::DEBUG) << "\tFetch xAOD::VertexContainer with key " << vtx_name << endmsg;
479 
480  if ( vtx_name!="" ) {
481 
482  m_provider->msg(MSG::DEBUG) << "\tFetch xAOD::VertexContainer with key " << vtx_name << endmsg;
483 
485 
486  const xAOD::VertexContainer* xaodVtxCollection = 0;
487 
488  if ( retrieve( xaodVtxCollection, vtx_name ).isFailure() ) {
489  if (m_provider->msg().level() <= MSG::WARNING) m_provider->msg(MSG::WARNING) << "xAOD vertex container not found with key " << vtx_name << endmsg;
490  }
491 
492  if ( xaodVtxCollection!=0 ) {
493 
494  m_provider->msg(MSG::DEBUG) << "\txAOD::VertexContainer found with size " << xaodVtxCollection->size()
495  << "\t" << vtx_name << endmsg;
496 
497  // Vertex types in some secondary vertex collections are not properly set and are all 0,
498  // allow these vertices if primary vertices are not used
499  if ( vtx_name.find("SecVtx") != std::string::npos ) {
500  tidavertices = vertexBuilder.select( xaodVtxCollection, 0, true );
501  }
502  else {
503  tidavertices = vertexBuilder.select( xaodVtxCollection );
504  }
505  }
506 
507  }
508 
509 
510  if ( found ) {
511 
512  m_event->addChain( chainname );
514  if ( vtx_name!="" ) m_event->back().back().addVertices( tidavertices );
515  m_event->back().back().addTracks(selectorTest.tracks());
516 
517  if ( selectorTest.getBeamX()!=0 || selectorTest.getBeamY()!=0 || selectorTest.getBeamZ()!=0 ) {
518  std::vector<double> beamline_;
519  beamline_.push_back( selectorTest.getBeamX() );
520  beamline_.push_back( selectorTest.getBeamY() );
521  beamline_.push_back( selectorTest.getBeamZ() );
522  m_event->back().back().addUserData(beamline_);
523  }
524 
525  int Ntest = selectorTest.tracks().size();
526 
527  m_provider->msg(MSG::DEBUG) << "collection " << collectionname << "\ttest tracks.size() " << Ntest << endmsg;
528  for ( int ii=Ntest ; ii-- ; ) m_provider->msg(MSG::DEBUG) << " test track " << ii << " " << *selectorTest.tracks()[ii] << endmsg;
529  }
530  }
531 
532 
533  std::string ElectronRef[7] = {
534  "",
535  "TightCB", "MediumCB", "LooseCB",
536  "TightLH", "MediumLH", "LooseLH" };
537 
538 
540 
541  for ( size_t ielec=0 ; ielec<m_electronType.size() ; ielec++ ) {
544 
545  int itype = -1;
546  for ( int it=0 ; it<7 ; it++ ) if ( m_electronType[ielec]==ElectronRef[it] ) itype = it;
547  if ( itype<0 ) continue;
548 
549  std::vector<TrackTrigObject> elevec;
550 
551  std::string echain = std::string("Electrons");
552  if (m_electronIsLRT[ielec]) echain = std::string("LRTElectrons");
553 
554  int Nel_ = processElectrons( selectorRef, &elevec, itype, ( m_rawElectrons[ielec]=="raw" ? true : false ), 0.0, echain );
555 
556  if ( Nel_ < 1 ) continue;
557 
558  Nel += Nel_;
559 
560  if ( m_electronType[ielec]!="" ) echain += "_" + m_electronType[ielec];
561  if ( m_rawElectrons[ielec]=="raw" ) echain += "_raw";
562 
563  m_event->addChain( echain );
565  m_event->back().back().addTracks(selectorRef.tracks());
566  m_event->back().back().addObjects( elevec );
567 
568  if ( selectorRef.getBeamX()!=0 || selectorRef.getBeamY()!=0 || selectorRef.getBeamZ()!=0 ) {
569  std::vector<double> beamline_;
570  beamline_.push_back( selectorRef.getBeamX() );
571  beamline_.push_back( selectorRef.getBeamY() );
572  beamline_.push_back( selectorRef.getBeamZ() );
573  m_event->back().back().addUserData(beamline_);
574  }
575 
576  }
577 
578 
579  std::string MuonRef[5] = { "", "Tight", "Medium", "Loose", "VeryLoose" };
580 
582  for ( size_t imuon=0 ; imuon<m_muonType.size() ; imuon++ ) {
583 
584  m_provider->msg(MSG::DEBUG) << "fetching offline muons " << endmsg;
585 
586  int muonType = -1;
587  for ( int it=0 ; it<5 ; it++ ) if ( m_muonType[imuon] == MuonRef[it] ) muonType=it;
588  if ( muonType<0 ) continue;
589 
590  std::string mchain = "Muons";
591  if (m_muonIsLRT[imuon]) mchain = "MuonsLRT";
592 
593  int Nmu_ = processMuons( selectorRef, muonType, 0, mchain );
594 
595  if ( Nmu_ < 1 ) continue;
596 
597  Nmu += Nmu_;
598 
599  m_provider->msg(MSG::DEBUG) << "found " << Nmu << " offline muons " << endmsg;
600 
601  if ( m_muonType[imuon]!="" ) mchain += "_" + m_muonType[imuon];
602 
603  m_event->addChain(mchain);
605  m_event->back().back().addTracks(selectorRef.tracks());
606 
607  if ( selectorRef.getBeamX()!=0 || selectorRef.getBeamY()!=0 || selectorRef.getBeamZ()!=0 ) {
608  std::vector<double> beamline_;
609  beamline_.push_back( selectorRef.getBeamX() );
610  beamline_.push_back( selectorRef.getBeamY() );
611  beamline_.push_back( selectorRef.getBeamZ() );
612  m_event->back().back().addUserData(beamline_);
613  }
614 
615  m_provider->msg(MSG::DEBUG) << "ref muon tracks.size() " << selectorRef.tracks().size() << endmsg;
616  for ( int ii=selectorRef.tracks().size() ; ii-- ; ) m_provider->msg(MSG::DEBUG) << " ref muon track " << ii << " " << *selectorRef.tracks()[ii] << endmsg;
617  }
618 
619 
621  if ( m_doMuonsSP ) {
622 
623  m_provider->msg(MSG::DEBUG) << "fetching offline muons " << endmsg;
624 
625  int muonType = 0;
626 
627  Nmu += processMuons( selectorRef, muonType );
628 
629  m_provider->msg(MSG::DEBUG) << "found " << Nmu << " offline muons " << endmsg;
630 
631  m_event->addChain("MuonsSP");
633  m_event->back().back().addTracks(selectorRef.tracks());
634 
635  m_provider->msg(MSG::DEBUG) << "ref muon tracks.size() " << selectorRef.tracks().size() << endmsg;
636  for ( int ii=selectorRef.tracks().size() ; ii-- ; ) m_provider->msg(MSG::DEBUG) << " ref muon track " << ii << " " << *selectorRef.tracks()[ii] << endmsg;
637  }
638 
639 
640 
642  std::string TauRef[4] = { "", "Tight", "Medium", "Loose" };
643 
644 
645  for ( size_t itau=0 ; itau<m_tauType.size() ; itau++ ) {
648 
649  int itype = -1;
650  for ( int it=0 ; it<4 ; it++ ) if ( m_tauType[itau]==TauRef[it] ) itype = it;
651  if ( itype<0 ) continue;
652 
654  int requireNtracks = 0;
655  if ( m_tauProngs[itau]=="3Prong" ) requireNtracks = 3;
656  if ( m_tauProngs[itau]=="1Prong" ) requireNtracks = 1;
657 
658  std::vector<TrackTrigObject> tauvec;
659 
660  int Ntau_ = processTaus( selectorRef, &tauvec, itype, requireNtracks, 20000 );
661 
662  Ntau += Ntau_;
663 
664  if ( Ntau_ > 0 ) {
667 
668  std::string tchain = std::string("Taus");
669  if ( m_tauType[itau] != "" ) tchain += "_" + m_tauType[itau];
670  if ( m_tauProngs[itau] != "" ) tchain += "_" + m_tauProngs[itau];
671 
672  m_event->addChain( tchain );
674  m_event->back().back().addTracks(selectorRef.tracks());
675  m_event->back().back().addObjects( tauvec ) ;
676 
677  if ( selectorRef.getBeamX()!=0 || selectorRef.getBeamY()!=0 || selectorRef.getBeamZ()!=0 ) {
678  std::vector<double> beamline_;
679  beamline_.push_back( selectorRef.getBeamX() );
680  beamline_.push_back( selectorRef.getBeamY() );
681  beamline_.push_back( selectorRef.getBeamZ() );
682  m_event->back().back().addUserData(beamline_);
683  }
684 
685  }
686  }
687 
688  if ( Nmu==0 && Noff==0 && Nel==0 && Ntau==0 ) m_provider->msg(MSG::DEBUG) << "No offline objects found " << endmsg;
689  else foundOffline = true;
690 
691 
692  // now loop over all relevant chains to get the trigger tracks...
693 
694  for ( unsigned ichain=0 ; ichain<m_chainNames.size() ; ichain++ ) {
695 
696  // create chains for ntpl
697 
699  const std::string& chainName = m_chainNames[ichain].head();
700 
702  const std::string& collectionName = m_chainNames[ichain].tail();
703 
704  if( chainName.find("L2_")==std::string::npos &&
705  chainName.find("EF_")==std::string::npos &&
706  chainName.find("HLT_")==std::string::npos ) continue;
707 
708  if ( m_chainNames[ichain].passed() ) decisiontype = TrigDefs::Physics;
709  else decisiontype = TrigDefs::includeFailedDecisions;
710 
711 
712  m_provider->msg(MSG::DEBUG) << "chain " << chainName
713  << "\tprescale " << (*m_tdt)->getPrescale(chainName)
714  << "\tpass " << (*m_tdt)->isPassed(chainName) << " physics "
715  << " (req dec " << (*m_tdt)->isPassed(chainName, decisiontype ) << " dec type " << decisiontype << ")"
716  << endmsg;
717 
720 
722  if ( !(*m_tdt)->isPassed( chainName, decisiontype ) ) continue;
723 
725 
726 
727  std::string roi_key = m_chainNames[ichain].roi();
728  std::string vtx_name = m_chainNames[ichain].vtx();
729 
730 
731 #if 0
732 
737 
738  if ( roi_name!="" ) {
739 
740  std::string roi_name_tmp = roi_name;
741  std::string roi_tename = "";
742 
743  if ( roi_name.find("/")!=std::string::npos ) {
744  roi_name_tmp = roi_name.substr( roi_name.find("/")+1, roi_name.size()-roi_name.find("/") );
745  roi_tename = roi_name.substr( 0, roi_name.find("/") );
746  }
747 
748  roist = comb->get<TrigRoiDescriptor>( roi_name_tmp, decisiontype, roi_tename );
749 
750  if ( roist.size()>0 ) {
751  for ( unsigned ir=0 ; ir<roist.size() ; ir++ ) m_provider->msg(MSG::DEBUG) << "\t\tRetrieved roi " << roi_name << "\t" << *roist[ir].cptr() << endmsg;
752  }
753  else {
754  m_provider->msg(MSG::WARNING) << "\t\tRequested roi " << roi_name << " not found" << endmsg;
755  }
756 
757  }
758  else {
759  roist = comb->get<TrigRoiDescriptor>("forID1");
760  if ( roist.empty() ) roist = comb->get<TrigRoiDescriptor>("forID");
761  if ( roist.empty() ) roist = comb->get<TrigRoiDescriptor>("");
762  if ( roist.empty() ) roist = comb->get<TrigRoiDescriptor>("initialRoI");
763  }
764 #endif
765 
766 
767  unsigned feature_type = TrigDefs::lastFeatureOfType;
768 
769  if ( roi_key!="" ) feature_type = TrigDefs::allFeaturesOfType;
770 
771  int leg = -1;
772 
773  if ( m_chainNames[ichain].element()!="" ) {
774  leg = std::atoi(m_chainNames[ichain].element().c_str());
775  }
776 
777 
778  std::string rgex = roi_key;
779 
780  std::vector< TrigCompositeUtils::LinkInfo<TrigRoiDescriptorCollection> > rois =
781  (*m_tdt)->template features<TrigRoiDescriptorCollection>( Trig::FeatureRequestDescriptor( chainName,
782  decisiontype,
783  rgex,
784  feature_type,
785  "roi",
786  leg ) );
787 
790  if ( rois.empty() ) {
791  if ( !rgex.empty() ) {
792  rgex += "_probe";
793  rois = (*m_tdt)->template features<TrigRoiDescriptorCollection>( Trig::FeatureRequestDescriptor( chainName,
794  decisiontype,
795  rgex,
796  feature_type,
797  "roi",
798  leg ) );
799  }
800  }
801 
802  int iroi = 0;
803 
805 
806  if ( rois.size()==0 ) continue;
807 
809 
810  m_event->addChain( m_chainNames[ichain] );
811 
813 
816 
817  iroi++;
818 
822 
823  if ( roi_key=="SuperRoi" && iroi>1 ) continue;
824 
825  if ( roi_key.find("JetSuper")!=std::string::npos && iroi>1 ) continue;
826 
827  const ElementLink<TrigRoiDescriptorCollection> roi_link = roi_info.link;
828 
830  if ( roi_key!="" && roi_link.dataID()!=rgex ) continue;
831 
832  const TrigRoiDescriptor* const* roiptr = roi_link.cptr();
833 
834  if ( roiptr == 0 ) {
835  // std::cerr << "\treadback link is null DAMMIT !!!" << std::endl;
836  continue;
837  }
838 
839  if (m_provider->msg().level() <= MSG::VERBOSE) {
840  m_provider->msg(MSG::VERBOSE) << " RoI descriptor for seeded chain " << chainName << " " << **roiptr << endmsg;
841  }
842 
843  TIDARoiDescriptor* roi_tmp = new TIDARoiDescriptor( TIDARoiDescriptorBuilder(**roiptr) );
844 
846 
849 
852 
853  selectorTest.clear();
854 
855 
856  if ( chainName.find("HLT_")!=std::string::npos ) {
857  if ( selectTracks<xAOD::TrackParticleContainer>( &selectorTest, roi_link, collectionName ) );
858  else {
859  if (m_provider->msg().level() <= MSG::DEBUG) {
860  m_provider->msg(MSG::WARNING) << "\tNo track collection " << collectionName << " found" << endmsg;
861  }
862  }
863  }
864 
866 
867  std::vector<TIDA::Vertex> tidavertices;
868 
869  if ( vtx_name!="" ) {
870 
871  m_provider->msg(MSG::DEBUG) << "\tFetch xAOD::VertexContainer for chain " << chainName << " with key " << vtx_name << endmsg;
872 
874 
876  xAOD::VertexContainer::const_iterator > vtx_itrpair = getCollection<xAOD::VertexContainer>( roi_link, vtx_name );
877 
878  if ( vtx_itrpair.first == vtx_itrpair.second ) {
879  if ( m_provider->msg().level() <= MSG::DEBUG ) {
880  m_provider->msg(MSG::WARNING) << "\tNo xAOD::Vertex for chain " << chainName << " for key " << vtx_name << endmsg;
881  }
882  }
883  else {
884 
885  m_provider->msg(MSG::DEBUG) << "\txAOD::VertexContainer found with size " << (vtx_itrpair.second - vtx_itrpair.first)
886  << "\t" << vtx_name << endmsg;
887 
888  // Vertex types in some secondary vertex collections are not properly set and are all 0,
889  // allow these vertices if primary vertices are not used
890  if ( vtx_name.find("SecVtx") != std::string::npos ) {
891  tidavertices = vertexBuilder.select( vtx_itrpair.first, vtx_itrpair.second, &selectorRef.tracks(), true );
892  }
893  else {
894  tidavertices = vertexBuilder.select( vtx_itrpair.first, vtx_itrpair.second, &selectorTest.tracks() );
895  }
896  }
897  }
898 
899 #if 0
900  // now get the jets if they are present
902  std::vector<TrackTrigObject> jets;
903  if ( chainName.find("HLT_j")!=std::string::npos ) {
904  if ( get_jets( comb, jets ) == 0 ) m_provider->msg(MSG::WARNING) << "\tjets could not be retrieved " << endmsg;
905  }
906 #endif
907 
908  const std::vector<TIDA::Track*>& testTracks = selectorTest.tracks();
909  m_provider->msg(MSG::DEBUG) << "\ttest tracks.size() " << testTracks.size() << endmsg;
910  for (unsigned int ii=0; ii < testTracks.size(); ii++) {
911  m_provider->msg(MSG::DEBUG) << " test track " << ii << "for chain " << chainName + ":" + collectionName << " " << *testTracks[ii] << endmsg;
912  }
913 
914 
915  // only add chain if there are any rois - also add beamline position for postprocessing
916 
917 
918  if ( roi_tmp == 0 ) {
919  if ( testTracks.size()>0 ) m_provider->msg(MSG::WARNING) << "\ttest tracks.size() " << testTracks.size() << "found but no roi!!!" << endmsg;
920  roi_tmp = new TIDARoiDescriptor(true);
921  }
922 
923  chain.addRoi( *roi_tmp );
924 
925  chain.back().addTracks(testTracks);
926  chain.back().addVertices(tidavertices);
927 
928 #if 0
929  if ( chainName.find("HLT_j")!=std::string::npos ) chain.back().addObjects( jets );
931 #endif
932 
933  if ( selectorTest.getBeamX()!=0 || selectorTest.getBeamY()!=0 || selectorTest.getBeamZ()!=0 ) {
934  std::vector<double> beamline_;
935  beamline_.push_back( selectorTest.getBeamX() );
936  beamline_.push_back( selectorTest.getBeamY() );
937  beamline_.push_back( selectorTest.getBeamZ() );
938  chain.back().addUserData(beamline_);
939  }
940 
941  delete roi_tmp;
942  roi_tmp = 0;
943 
944  }
945 
946  }
947 
948 #if 0
949 
951  {
953 
954  if ( filterOnRoi() || m_ptmin>0 ) {
955 
956  TIDA::Chain* offline = 0;
957 
958  std::vector<std::string> chainnames = m_event->chainnames();
959 
961 
962  for ( size_t ic=chainnames.size() ; ic-- ; ) {
963  if ( chainnames[ic] == "Offline" ) {
964  offline = &(m_event->chains()[ic]);
965  break;
966  }
967  }
968 
969  if ( offline ) {
970 
971  std::vector<TIDA::Chain>& chains = m_event->chains();
973 
974  std::vector<std::pair<double,double> > philims;
975 
976  for ( ; citr!=chains.end() ; ++citr ) {
977  if ( citr->name().find("HLT_")!=std::string::npos ) {
978  for ( size_t ir=0 ; ir<citr->size() ; ir++ ) {
979  TIDARoiDescriptor& roi = citr->rois()[ir].roi();
980  if ( roi.composite() ) {
981  for ( size_t isub=0 ; isub<roi.size() ; isub++ ) {
982  philims.push_back( std::pair<double,double>( roi[isub]->phiMinus(), roi[isub]->phiPlus() ) );
983  }
984  }
985  else philims.push_back( std::pair<double,double>( roi.phiMinus(), roi.phiPlus() ) );
986  }
987  }
988  }
989 
990  remove_duplicates( philims );
991 
992  for ( size_t iroi=0 ; iroi<offline->size() ; iroi++ ) {
993 
994  std::vector<TIDA::Track>& tracks = offline->rois()[iroi].tracks();
995 
998  // size_t Noffline = tracks.size();
999 
1000  for ( std::vector<TIDA::Track>::iterator it=tracks.begin() ; it<tracks.end() ; ) {
1001  bool inc = true;
1002  if ( m_ptmin>0 ) {
1003  if ( std::fabs(it->pT())<m_ptmin ) { inc=false; tracks.erase( it ); }
1004  }
1005  if ( inc && filterOnRoi() ) {
1006  bool remove_track = true;
1007  for ( size_t isub=0 ; isub<philims.size() ; isub++ ) {
1008 
1009  if ( philims[isub].first < philims[isub].second ) {
1010  if ( it->phi()>=philims[isub].first && it->phi()<=philims[isub].second ) {
1011  remove_track = false;
1012  break;
1013  }
1014  }
1015  else {
1016  if ( it->phi()>=philims[isub].first || it->phi()<=philims[isub].second ) {
1017  remove_track = false;
1018  break;
1019  }
1020  }
1021  }
1022  if ( remove_track ) { inc=false; tracks.erase( it ); }
1023  }
1024  if ( inc ) ++it;
1025  }
1026 
1029  // m_provider->msg(MSG::DEBUG) << "TIDA::Roi offline track reduction: " << Noffline << " -> " << tracks.size() << endmsg;
1030 
1031  }
1032 
1033  }
1034 
1035  }
1036  }
1037 
1038 #endif
1039 
1040  if ( m_Tree ) m_Tree->Fill();
1041 
1042 }
1043 
1044 
1045 
AnalysisConfig_Ntuple::get_jets
size_t get_jets(Trig::FeatureContainer::combination_const_iterator citr, std::vector< TrackTrigObject > &objects, const std::string &key="")
retrieve the jets from the Roi
Definition: AnalysisConfig_Ntuple.cxx:134
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
AnalysisConfig_Ntuple::m_TruthPdgId
int m_TruthPdgId
Definition: AnalysisConfig_Ntuple.h:187
Trig::FeatureRequestDescriptor
Definition: FeatureRequestDescriptor.h:37
python.SystemOfUnits.second
int second
Definition: SystemOfUnits.py:120
TIDARoiDescriptorBuilder.h
T_AnalysisConfig< AthReentrantAlgorithm >::m_mcTruth
bool m_mcTruth
Definition: T_AnalysisConfig.h:986
Filter_RoiSelector.h
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
T_AnalysisConfig< AthReentrantAlgorithm >::processMuons
unsigned processMuons(TrigTrackSelector &selectorRef, const unsigned int selection=0, double ETOffline=0, const std::string &containerName="StacoMuonCollection")
select offlinqe muons
Definition: T_AnalysisConfig.h:787
plotting.plot_kinematics.run_number
run_number
Definition: plot_kinematics.py:29
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
runLayerRecalibration.chain
chain
Definition: runLayerRecalibration.py:175
TIDAVertexBuilder::select
static std::vector< TIDA::Vertex > select(const xAOD::VertexContainer *xAODVertices, const std::vector< TIDA::Track * > *trackCollection=0, bool useType0=false, bool require_tracks=true)
Definition: TIDAVertexBuilder.cxx:13
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< AthReentrantAlgorithm >::m_provider
AthReentrantAlgorithm * m_provider
Definition: T_AnalysisConfig.h:955
TrigTrackSelector::clear
virtual void clear() override
Definition: TrigTrackSelector.h:102
find
std::string find(const std::string &s)
return a remapped string
Definition: hcg.cxx:135
xAOD::EventInfo_v1::eventNumber
uint64_t eventNumber() const
The current event's event number.
TIDA::Roi::addTracks
void addTracks(const std::vector< TIDA::Track > &tracks)
accessors for the track vector
Definition: TIDARoi.h:46
DataVector::const_iterator
DataModel_detail::const_iterator< DataVector > const_iterator
Standard const_iterator.
Definition: DataVector.h:837
AnalysisConfig_Ntuple::m_muonIsLRT
std::vector< bool > m_muonIsLRT
Definition: AnalysisConfig_Ntuple.h:170
TrigInDetTrackCollection
Definition: TrigInDetTrackCollection.h:13
AnalysisConfigMT_Ntuple::get_configured_chains
std::set< std::string > get_configured_chains()
Definition: AnalysisConfigMT_Ntuple.cxx:43
AnalysisConfig_Ntuple::m_parentTruthPdgId
int m_parentTruthPdgId
Definition: AnalysisConfig_Ntuple.h:197
TrackFilter
Definition: TrackFilter.h:26
TIDA::Event::chainnames
std::vector< std::string > chainnames() const
Definition: TIDAEvent.cxx:27
Filter_etaPT
Definition: Filter_etaPT.h:27
AnalysisConfig_Ntuple::m_vertexType
std::vector< std::string > m_vertexType
Definition: AnalysisConfig_Ntuple.h:179
TruthVertexContainer.h
TruthParticleContainer.h
Filters.h
AnalysisConfig_Ntuple::m_chainNames
std::vector< ChainString > m_chainNames
Definition: AnalysisConfig_Ntuple.h:162
skel.it
it
Definition: skel.GENtoEVGEN.py:423
TIDARoiDescriptor
Describes the Region of Ineterest geometry It has basically 8 parameters.
Definition: TIDARoiDescriptor.h:42
offline
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
vec
std::vector< size_t > vec
Definition: CombinationsGeneratorTest.cxx:12
TrigTrackSelector
L2 tracks.
Definition: TrigTrackSelector.h:58
TrigTrackSelector::correctTracks
void correctTracks(bool b=true)
Definition: TrigTrackSelector.h:100
Filter_AcceptAll
Definition: Filter_AcceptAll.h:29
Filter_AcceptAll.h
TIDA::Roi::addObjects
void addObjects(const std::vector< TrackTrigObject > &ob)
Definition: TIDARoi.h:65
TIDA::Event::lumi_block
void lumi_block(unsigned lb)
Definition: TIDAEvent.h:44
TruthParticleContainer
Definition: PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/TruthParticleContainer.h:42
AnalysisConfig_Ntuple::m_electronIsLRT
std::vector< bool > m_electronIsLRT
Definition: AnalysisConfig_Ntuple.h:174
TIDARoiDescriptor::size
size_t size() const
Definition: TIDARoiDescriptor.h:176
xAOD::EventInfo_v1::runNumber
uint32_t runNumber() const
The current event's run number.
date
std::string date()
sadly, includes a return at the end
Definition: hcg.cxx:55
TIDARoiDescriptor::phiPlus
double phiPlus() const
Definition: TIDARoiDescriptor.h:141
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
T_AnalysisConfig< AthReentrantAlgorithm >::m_analysisInstanceName
std::string m_analysisInstanceName
Definition: T_AnalysisConfig.h:963
covarianceTool.filter
filter
Definition: covarianceTool.py:514
TrigTrackSelector::getBeamX
double getBeamX() const
Definition: TrigTrackSelector.h:96
TIDA::Chain::back
TIDA::Roi & back()
Definition: TIDAChain.h:60
AthCommonDataStore::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:85
TIDDirectory.h
class to keep a directory for each object in a root sort of way, but needed to keep the root objects ...
Filter_pdgIdpTeta
Definition: Filters.h:73
TIDA::Event::addChain
void addChain(const std::string &chainname)
methods to add and access chains
Definition: TIDAEvent.h:67
TIDA::Event::time_stamp
void time_stamp(unsigned t)
Definition: TIDAEvent.h:45
TIDARoiDescriptor::composite
bool composite() const
composite RoI methods
Definition: TIDARoiDescriptor.h:174
AnalysisConfig_Ntuple::m_muonType
std::vector< std::string > m_muonType
Definition: AnalysisConfig_Ntuple.h:169
AnalysisConfigMT_Ntuple::loop
virtual void loop()
Definition: AnalysisConfigMT_Ntuple.cxx:97
TIDA::Event::back
TIDA::Chain & back()
get the last chain from the vector
Definition: TIDAEvent.h:89
lumiFormat.i
int i
Definition: lumiFormat.py:92
AnalysisConfig_Ntuple::m_Tree
TTree * m_Tree
Definition: AnalysisConfig_Ntuple.h:159
T_AnalysisConfig< AthReentrantAlgorithm >::processTaus
unsigned processTaus(TrigTrackSelector &selectorRef, std::vector< TrackTrigObject > *tauvec=0, const unsigned selection=0, int requireNtracks=0, double EtCutOffline=0, const std::string &containerName="TauRecContainer")
select offline taus
Definition: T_AnalysisConfig.h:844
TIDA::Event::event_number
void event_number(unsigned long long e)
Definition: TIDAEvent.h:43
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
T_AnalysisConfig< AthReentrantAlgorithm >::processElectrons
unsigned processElectrons(TrigTrackSelector &selectorRef, std::vector< TrackTrigObject > *elevec=0, const unsigned int selection=0, bool raw_track=false, double ETOffline=0, const std::string &containerName="ElectronAODCollection")
select offline electrons
Definition: T_AnalysisConfig.h:701
fromParent
HepMC::ConstGenParticlePtr fromParent(int pdg_id, HepMC::ConstGenParticlePtr p, bool printout=false)
Definition: AnalysisConfig_Ntuple.cxx:78
TrigInDetTrackTruthMap
Definition: TrigInDetTrackTruthMap.h:38
AnalysisConfig_Ntuple::m_rawElectrons
std::vector< std::string > m_rawElectrons
Definition: AnalysisConfig_Ntuple.h:173
TIDA::Roi::addUserData
void addUserData(const std::vector< double > &user)
Definition: TIDARoi.h:70
compute_lumi.leg
leg
Definition: compute_lumi.py:95
Filter_etaPT.h
TIDAVertexBuilder
Definition: TIDAVertexBuilder.h:22
T_AnalysisConfig< AthReentrantAlgorithm >::m_keepAllEvents
bool m_keepAllEvents
Definition: T_AnalysisConfig.h:993
AnalysisConfig_Ntuple::m_tauProngs
std::vector< std::string > m_tauProngs
Definition: AnalysisConfig_Ntuple.h:177
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
xAOD::EventInfo_v1::lumiBlock
uint32_t lumiBlock() const
The current event's luminosity block number.
remove_duplicates
void remove_duplicates(std::vector< T > &vec)
Definition: AnalysisConfigMT_Ntuple.cxx:37
grepfile.ic
int ic
Definition: grepfile.py:33
Trig::ChainGroup
Definition: Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/ChainGroup.h:51
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
Trig::ChainGroup::isPassed
bool isPassed(unsigned int condition=TrigDefs::Physics) const
tells if chain group passed
Definition: Trigger/TrigAnalysis/TrigDecisionTool/Root/ChainGroup.cxx:208
HepMC::ConstGenParticlePtr
const GenParticle * ConstGenParticlePtr
Definition: GenParticle.h:38
T_AnalysisConfig< AthReentrantAlgorithm >::retrieve
StatusCode retrieve(Collection const *&collection, const std::string &key="")
Definition: T_AnalysisConfig.h:571
AnalysisConfig_Ntuple::m_doOffline
bool m_doOffline
Definition: AnalysisConfig_Ntuple.h:164
TrackSelector::tracks
const std::vector< TIDA::Track * > & tracks() const
Definition: Trigger/TrigAnalysis/TrigInDetAnalysis/TrigInDetAnalysis/TrackSelector.h:53
Rec::TrackParticleContainer
Definition: Reconstruction/Particle/Particle/TrackParticleContainer.h:33
TIDA::Chain
Definition: TIDAChain.h:28
xAOD::vertexType
vertexType
Definition: Vertex_v1.cxx:166
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
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
xAOD::EventInfo_v1
Class describing the basic event information.
Definition: EventInfo_v1.h:43
TIDA::Event::mu
void mu(double m)
Definition: TIDAEvent.h:47
python.copyTCTOutput.chains
chains
Definition: copyTCTOutput.py:81
TIDAVertexBuilder.h
ir
int ir
counter of the current depth
Definition: fastadd.cxx:49
AnalysisConfigMT_Ntuple::m_fiducial_radius
double m_fiducial_radius
Definition: AnalysisConfigMT_Ntuple.h:55
TrigCompositeUtils::LinkInfo
Helper to keep a Decision object, ElementLink and ActiveState (with respect to some requested ChainGr...
Definition: LinkInfo.h:28
CondAlgsOpts.found
int found
Definition: CondAlgsOpts.py:101
AnalysisConfigMT_Ntuple::m_ptmin
double m_ptmin
Definition: AnalysisConfigMT_Ntuple.h:56
DeMoScan.first
bool first
Definition: DeMoScan.py:534
DEBUG
#define DEBUG
Definition: page_access.h:11
python.TriggerAPI.TriggerAPISession.chainName
chainName
Definition: TriggerAPISession.py:353
TriggerTest.rois
rois
Definition: TriggerTest.py:23
AthCommonMsg::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
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.
AnalysisConfig_Ntuple::m_event
TIDA::Event * m_event
Definition: AnalysisConfig_Ntuple.h:156
TrigTrackSelector::getBeamZ
double getBeamZ() const
Definition: TrigTrackSelector.h:98
AnalysisConfig_Ntuple::m_doVertices
bool m_doVertices
Definition: AnalysisConfig_Ntuple.h:165
TrigTrackSelector::getBeamY
double getBeamY() const
Definition: TrigTrackSelector.h:97
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< AthReentrantAlgorithm >::filterOnRoi
bool filterOnRoi() const
Definition: T_AnalysisConfig.h:282
defineDB.jets
list jets
Definition: JetTagCalibration/share/defineDB.py:24
AnalysisConfig_Ntuple::m_tauType
std::vector< std::string > m_tauType
Definition: AnalysisConfig_Ntuple.h:176
python.Constants.VERBOSE
int VERBOSE
Definition: Control/AthenaCommon/python/Constants.py:14
TIDA::Roi::addVertices
void addVertices(const std::vector< TIDA::Vertex > &v)
Definition: TIDARoi.h:59
TIDA::Event::bunch_crossing_id
void bunch_crossing_id(unsigned b)
Definition: TIDAEvent.h:46
AnalysisConfig_Ntuple::m_hasTruthMap
bool m_hasTruthMap
Definition: AnalysisConfig_Ntuple.h:182
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
FeatureRequestDescriptor.h
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
AnalysisConfig_Ntuple::m_doMuonsSP
bool m_doMuonsSP
Definition: AnalysisConfig_Ntuple.h:167
TIDARoiDescriptor::phiMinus
double phiMinus() const
Definition: TIDARoiDescriptor.h:140
AnalysisConfigMT_Ntuple.h
zbeam
Definition: zbeam.h:24
AnalysisConfig_Ntuple::m_electronType
std::vector< std::string > m_electronType
Definition: AnalysisConfig_Ntuple.h:172