ATLAS Offline Software
TrigDisappearingTrackHypoAlg.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 
4  * Trigger Hypo Tool, that is aimed at triggering disappearing tracks
5  * author Kunihiro Nagano <kunihiro.nagano@cern.ch>
6 */
8 #include "AthViews/ViewHelper.h"
10 #include "GaudiKernel/SystemOfUnits.h"
13 
28 
29 // ------------------------------------------------------------------------------------------------
30 // ------------------------------------------------------------------------------------------------
31 
33  ISvcLocator* pSvcLocator ) :
34  ::HypoBase( name, pSvcLocator ) {}
35 
36 // ------------------------------------------------------------------------------------------------
37 // ------------------------------------------------------------------------------------------------
38 
40 {
41  CHECK( m_hypoTools.retrieve() );
42  CHECK( m_DisTrkCandKey.initialize() );
43  CHECK( m_DisTrkBDTSelKey.initialize());
44 
45  if ( !m_monTool.empty() ) CHECK( m_monTool.retrieve() );
46 
47  // --- declare variables to the reader
48  const std::string methodName = "BDT method";
49 
50  // pix4l_sct0
51  for (auto& reader : m_tmva_pix4l_sct0_reader) {
52  reader.tmva = std::make_unique<TMVA::Reader>( "!Color:!Silent" );
53  reader.tmva->AddVariable("pt", &reader.pt);
54  reader.tmva->AddVariable("z0", &reader.z0);
55  reader.tmva->AddVariable("d0", &reader.d0);
56  reader.tmva->AddVariable("trkiso3_dr01", &reader.trkiso3_dr01);
57  reader.tmva->AddVariable("trkiso3_dr0201", &reader.trkiso3_dr0201);
58  reader.tmva->AddVariable("chi2ndof", &reader.chi2ndof);
59  reader.tmva->AddVariable("chi2ndof_pix", &reader.chi2ndof_pix);
60  reader.tmva->AddVariable("refit_pt", &reader.refit_pt);
61  reader.tmva->AddVariable("n_pix", &reader.n_pix);
62  reader.tmva->AddVariable("refit_ptratio", &reader.refit_ptratio);
63  reader.tmva->AddVariable("refit_chi2ndof", &reader.refit_chi2ndof);
64  reader.tmva->AddVariable("n_bl", &reader.n_bl);
65 
66  const std::string tuningVer = "v21a";
67  const std::string weightfile = PathResolver::find_calib_file(
68  "TrigDisappearingTrackTriggerHypo/pix4l_sct0.BDT.weights." + tuningVer + ".xml");
69  ATH_MSG_DEBUG( "opening weightfile for Pix4l_SCT0 = " << weightfile );
70  reader.tmva->BookMVA(methodName, weightfile);
71  }
72 
73  // pix4l_sct1p
74  for (auto& reader : m_tmva_pix4l_sct1p_reader) {
75  reader.tmva = std::make_unique<TMVA::Reader>( "!Color:!Silent" );
76  reader.tmva->AddVariable("pt", &reader.pt);
77  reader.tmva->AddVariable("refit_pt", &reader.refit_pt);
78  reader.tmva->AddVariable("refit_z0", &reader.refit_z0);
79  reader.tmva->AddVariable("refit_d0", &reader.refit_d0);
80  reader.tmva->AddVariable("n_sct", &reader.n_sct);
81  reader.tmva->AddVariable("refit_ptratio", &reader.refit_ptratio);
82  reader.tmva->AddVariable("refit_chi2ndof_ratio", &reader.refit_chi2ndof_ratio);
83  reader.tmva->AddVariable("trkiso3_dr01", &reader.trkiso3_dr01);
84  reader.tmva->AddVariable("trkiso3_dr0201", &reader.trkiso3_dr0201);
85  reader.tmva->AddVariable("is_fail", &reader.is_fail);
86  reader.tmva->AddVariable("chi2ndof_pix", &reader.chi2ndof_pix);
87  reader.tmva->AddVariable("n_pix", &reader.n_pix);
88 
89  const std::string tuningVer = "v21b"; // "b" only for this category
90  const std::string weightfile = PathResolver::find_calib_file(
91  "TrigDisappearingTrackTriggerHypo/pix4l_sct1p.BDT.weights." + tuningVer + ".xml");
92  ATH_MSG_DEBUG( "opening weightfile for Pix4l_SCT1p = " << weightfile );
93  reader.tmva->BookMVA(methodName, weightfile);
94  }
95 
96  // pix3l_sct0
97  for (auto& reader : m_tmva_pix3l_sct0_reader) {
98  reader.tmva = std::make_unique<TMVA::Reader>( "!Color:!Silent" );
99  reader.tmva->AddVariable("pt", &reader.pt);
100  reader.tmva->AddVariable("z0", &reader.z0);
101  reader.tmva->AddVariable("d0", &reader.d0);
102  reader.tmva->AddVariable("chi2ndof", &reader.chi2ndof);
103  reader.tmva->AddVariable("chi2ndof_pix", &reader.chi2ndof_pix);
104  reader.tmva->AddVariable("trkiso3_dr01", &reader.trkiso3_dr01);
105  reader.tmva->AddVariable("trkiso3_dr0201", &reader.trkiso3_dr0201);
106  reader.tmva->AddVariable("refit_pt", &reader.refit_pt);
107  reader.tmva->AddVariable("refit_z0", &reader.refit_z0);
108  reader.tmva->AddVariable("refit_d0", &reader.refit_d0);
109  reader.tmva->AddVariable("n_pix", &reader.n_pix);
110  reader.tmva->AddVariable("n_bl", &reader.n_bl);
111 
112  const std::string tuningVer = "v21a";
113  const std::string weightfile = PathResolver::find_calib_file(
114  "TrigDisappearingTrackTriggerHypo/pix3l_sct0.BDT.weights." + tuningVer + ".xml");
115  ATH_MSG_DEBUG( "opening weightfile for Pix3l_SCT0 = " << weightfile );
116  reader.tmva->BookMVA(methodName, weightfile);
117  }
118 
119  // pix3l_sct1p
120  for (auto& reader : m_tmva_pix3l_sct1p_reader) {
121  reader.tmva = std::make_unique<TMVA::Reader>( "!Color:!Silent" );
122  reader.tmva->AddVariable("pt", &reader.pt);
123  reader.tmva->AddVariable("z0", &reader.z0);
124  reader.tmva->AddVariable("d0", &reader.d0);
125  reader.tmva->AddVariable("refit_pt", &reader.refit_pt);
126  reader.tmva->AddVariable("refit_z0", &reader.refit_z0);
127  reader.tmva->AddVariable("refit_d0", &reader.refit_d0);
128  reader.tmva->AddVariable("n_pix", &reader.n_pix);
129  reader.tmva->AddVariable("n_sct", &reader.n_sct);
130  reader.tmva->AddVariable("refit_ptratio", &reader.refit_ptratio);
131  reader.tmva->AddVariable("is_fail", &reader.is_fail);
132  reader.tmva->AddVariable("n_bl", &reader.n_bl);
133  reader.tmva->AddVariable("chi2ndof", &reader.chi2ndof);
134  reader.tmva->AddVariable("trkiso3_dr01", &reader.trkiso3_dr01);
135  reader.tmva->AddVariable("trkiso3_dr0201", &reader.trkiso3_dr0201);
136  reader.tmva->AddVariable("refit_chi2ndof", &reader.refit_chi2ndof);
137 
138  const std::string tuningVer = "v21a";
139  const std::string weightfile = PathResolver::find_calib_file(
140  "TrigDisappearingTrackTriggerHypo/pix3l_sct1p.BDT.weights." + tuningVer + ".xml");
141  ATH_MSG_DEBUG( "opening weightfile for Pix3l_SCT1p = " << weightfile );
142  reader.tmva->BookMVA(methodName, weightfile);
143  }
144 
145  return StatusCode::SUCCESS;
146 }
147 
148 // ------------------------------------------------------------------------------------------------
149 // ------------------------------------------------------------------------------------------------
150 
151 StatusCode TrigDisappearingTrackHypoAlg::execute( const EventContext& context ) const
152 {
153  // previous decisions
154  ATH_MSG_DEBUG( "Retrieving pervious decision: \"" << decisionInput().key() << "\"" );
155  auto previousDecisionsHandle = SG::makeHandle( decisionInput(), context );
156  ATH_CHECK( previousDecisionsHandle.isValid() );
157 
158  ATH_MSG_DEBUG( "Running with " << previousDecisionsHandle->size() << " previous decisions" );
159  if( previousDecisionsHandle->size()!=1 ) {
160  ATH_MSG_ERROR( "Previous decision handle size is not 1. It is" << previousDecisionsHandle->size() );
161  return StatusCode::FAILURE;
162  }
163  const Decision * previousDecision = previousDecisionsHandle->at(0);
164 
165  TrigCompositeUtils::DecisionIDContainer previousDecisionIDs;
166  TrigCompositeUtils::decisionIDs(previousDecision, previousDecisionIDs);
167  ATH_MSG_VERBOSE( "IDs of active legs:" );
168  for(auto decisionID: previousDecisionIDs) { ATH_MSG_VERBOSE( " " << decisionID ); }
169 
170  // new output decisions
171  ATH_MSG_DEBUG( "Creating new output decision handle" );
173  auto outputDecisions = outputHandle.ptr();
174 
175  // input disappearing track objects
176  auto DisTrkCandHandle = SG::makeHandle(m_DisTrkCandKey, context );
177  ATH_CHECK( DisTrkCandHandle.isValid() );
178  ATH_MSG_DEBUG( "DisTrkCand handle size: " << DisTrkCandHandle->size() );
179 
180  const xAOD::TrigCompositeContainer * disTrkCandContainer = DisTrkCandHandle.get();
181  if( disTrkCandContainer == nullptr ) {
182  ATH_MSG_ERROR( "ERROR Cannot get DisappearingTrks container" );
183  return StatusCode::FAILURE;
184  }
185 
186  // output EDM object
187  auto DisTrkBDTSelContainer = std::make_unique<xAOD::TrigCompositeContainer>();
188  auto DisTrkBDTSelContainerAux = std::make_unique<xAOD::TrigCompositeAuxContainer>();
189  DisTrkBDTSelContainer->setStore(DisTrkBDTSelContainerAux.get());
190 
191  xAOD::TrigCompositeContainer* disTrkContainer = DisTrkBDTSelContainer.get();
192 
193  // Prepare inputs to HypoTool
194  ATH_CHECK( createCandidates(context, disTrkCandContainer, disTrkContainer) );
195 
196  std::vector<TrigDisappearingTrackHypoTool::DisTrkHypoInfo> disTrkHypoInputs;
197 
198  for ( auto distrk : *disTrkContainer ) {
199  Decision* newDecision = TrigCompositeUtils::newDecisionIn( outputDecisions, previousDecision, TrigCompositeUtils::hypoAlgNodeName(), context);
200 
202  ATH_CHECK( distrkEL.isValid() );
203 
204  ATH_CHECK( newDecision->setObjectLink<xAOD::TrigCompositeContainer>(TrigCompositeUtils::featureString(), distrkEL) );
205 
206  TrigDisappearingTrackHypoTool::DisTrkHypoInfo hypoInfo{ newDecision, distrk, previousDecisionIDs };
207  disTrkHypoInputs.push_back( hypoInfo );
208  }
209 
210  // Loop over all hypoToolinputs and get their decisions
211  for ( auto & tool: m_hypoTools ) {
212  ATH_MSG_VERBOSE( "+++++ Now computing decision for " << tool->name() );
213  ATH_CHECK( tool->decide( disTrkHypoInputs ) );
214  }
215 
216  DecisionContainer::iterator it = outputDecisions->begin();
217  while(it != outputDecisions->end()) {
218  ATH_MSG_VERBOSE( "+++++ outputDecision: " << *it << " +++++" );
219  if ( allFailed( *it ) ) {
220  ATH_MSG_VERBOSE( "---> all failed, erasing" );
221  it = outputDecisions->erase(it);
222  } else {
223  ATH_MSG_VERBOSE( "---> not all failed" );
224  ++it;
225  }
226  }
227 
228  // record
230  ATH_CHECK( DisTrkBDTSelHandle.record( std::move( DisTrkBDTSelContainer ), std::move( DisTrkBDTSelContainerAux ) ) );
231  ATH_MSG_VERBOSE( "recorded DisTrkBDTSel object to SG" );
232 
233  //
234  ATH_CHECK( hypoBaseOutputProcessing(outputHandle) );
235 
236  //
237  return StatusCode::SUCCESS;
238 }
239 
240 // ------------------------------------------------------------------------------------------------
241 // ------------------------------------------------------------------------------------------------
242 
243 StatusCode TrigDisappearingTrackHypoAlg::createCandidates( const EventContext& context, const xAOD::TrigCompositeContainer* disTrkCandContainer,
244  xAOD::TrigCompositeContainer* disTrkBDTSelContainer) const
245 {
246  // monitoring
247  std::vector<int> mnt_category;
248  auto mon_category = Monitored::Collection("category", mnt_category);
249  auto monDisTrk = Monitored::Group(m_monTool, mon_category);
250 
251  std::vector<float> mnt_cat1_pt;
252  std::vector<float> mnt_cat1_z0;
253  std::vector<float> mnt_cat1_d0;
254  std::vector<float> mnt_cat1_iso01;
255  std::vector<float> mnt_cat1_iso0201;
256  std::vector<float> mnt_cat1_chi2ndof;
257  std::vector<float> mnt_cat1_chi2ndof_pix;
258  std::vector<float> mnt_cat1_refit_pt;
259  std::vector<int> mnt_cat1_n_pix;
260  std::vector<float> mnt_cat1_refit_ptratio;
261  std::vector<float> mnt_cat1_refit_chi2ndof;
262  std::vector<int> mnt_cat1_n_bl;
263  std::vector<float> mnt_cat1_bdtscore;
264  auto mon_cat1_pt = Monitored::Collection("pix4_sct0_pt", mnt_cat1_pt);
265  auto mon_cat1_z0 = Monitored::Collection("pix4_sct0_z0", mnt_cat1_z0);
266  auto mon_cat1_d0 = Monitored::Collection("pix4_sct0_d0", mnt_cat1_d0);
267  auto mon_cat1_iso01 = Monitored::Collection("pix4_sct0_iso01", mnt_cat1_iso01);
268  auto mon_cat1_iso0201 = Monitored::Collection("pix4_sct0_iso0201", mnt_cat1_iso0201);
269  auto mon_cat1_chi2ndof = Monitored::Collection("pix4_sct0_chi2ndof", mnt_cat1_chi2ndof);
270  auto mon_cat1_chi2ndof_pix = Monitored::Collection("pix4_sct0_chi2ndof_pix", mnt_cat1_chi2ndof_pix);
271  auto mon_cat1_refit_pt = Monitored::Collection("pix4_sct0_refit_pt", mnt_cat1_refit_pt);
272  auto mon_cat1_n_pix = Monitored::Collection("pix4_sct0_n_pix", mnt_cat1_n_pix);
273  auto mon_cat1_refit_ptratio = Monitored::Collection("pix4_sct0_refit_ptratio", mnt_cat1_refit_ptratio);
274  auto mon_cat1_refit_chi2ndof = Monitored::Collection("pix4_sct0_refit_chi2ndof", mnt_cat1_refit_chi2ndof);
275  auto mon_cat1_n_bl = Monitored::Collection("pix4_sct0_n_bl", mnt_cat1_n_bl);
276  auto mon_cat1_bdtscore = Monitored::Collection("pix4_sct0_bdtscore", mnt_cat1_bdtscore);
277  auto monDisTrkCat1 = Monitored::Group(m_monTool, mon_cat1_pt, mon_cat1_z0, mon_cat1_d0, mon_cat1_iso01, mon_cat1_iso0201, mon_cat1_chi2ndof,
278  mon_cat1_chi2ndof_pix, mon_cat1_refit_pt, mon_cat1_n_pix, mon_cat1_refit_ptratio,
279  mon_cat1_refit_chi2ndof, mon_cat1_n_bl, mon_cat1_bdtscore);
280  //
281  std::vector<float> mnt_cat2_pt;
282  std::vector<float> mnt_cat2_refit_pt;
283  std::vector<float> mnt_cat2_refit_z0;
284  std::vector<float> mnt_cat2_refit_d0;
285  std::vector<int> mnt_cat2_n_sct;
286  std::vector<float> mnt_cat2_refit_ptratio;
287  std::vector<float> mnt_cat2_refit_chi2ndof_ratio;
288  std::vector<float> mnt_cat2_iso01;
289  std::vector<float> mnt_cat2_iso0201;
290  std::vector<float> mnt_cat2_chi2ndof_pix;
291  std::vector<int> mnt_cat2_n_pix;
292  std::vector<float> mnt_cat2_bdtscore;
293  auto mon_cat2_pt = Monitored::Collection("pix4_sct1p_pt", mnt_cat2_pt);
294  auto mon_cat2_refit_pt = Monitored::Collection("pix4_sct1p_refit_pt", mnt_cat2_refit_pt);
295  auto mon_cat2_refit_z0 = Monitored::Collection("pix4_sct1p_refit_z0", mnt_cat2_refit_z0);
296  auto mon_cat2_refit_d0 = Monitored::Collection("pix4_sct1p_refit_d0", mnt_cat2_refit_d0);
297  auto mon_cat2_n_sct = Monitored::Collection("pix4_sct1p_n_sct", mnt_cat2_n_sct);
298  auto mon_cat2_refit_ptratio = Monitored::Collection("pix4_sct1p_refit_ptratio", mnt_cat2_refit_ptratio);
299  auto mon_cat2_refit_chi2ndof_ratio = Monitored::Collection("pix4_sct1p_refit_chi2ndof_ratio", mnt_cat2_refit_chi2ndof_ratio);
300  auto mon_cat2_iso01 = Monitored::Collection("pix4_sct1p_iso01", mnt_cat2_iso01);
301  auto mon_cat2_iso0201 = Monitored::Collection("pix4_sct1p_iso0201", mnt_cat2_iso0201);
302  auto mon_cat2_chi2ndof_pix = Monitored::Collection("pix4_sct1p_chi2ndof_pix", mnt_cat2_chi2ndof_pix);
303  auto mon_cat2_n_pix = Monitored::Collection("pix4_sct1p_n_pix", mnt_cat2_n_pix);
304  auto mon_cat2_bdtscore = Monitored::Collection("pix4_sct1p_bdtscore", mnt_cat2_bdtscore);
305  auto monDisTrkCat2 = Monitored::Group(m_monTool, mon_cat2_pt, mon_cat2_refit_pt, mon_cat2_refit_z0, mon_cat2_refit_d0, mon_cat2_n_sct,
306  mon_cat2_refit_ptratio, mon_cat2_refit_chi2ndof_ratio, mon_cat2_iso01, mon_cat2_iso0201,
307  mon_cat2_chi2ndof_pix, mon_cat2_n_pix, mon_cat2_bdtscore);
308  //
309  std::vector<float> mnt_cat3_pt;
310  std::vector<float> mnt_cat3_z0;
311  std::vector<float> mnt_cat3_d0;
312  std::vector<float> mnt_cat3_chi2ndof;
313  std::vector<float> mnt_cat3_chi2ndof_pix;
314  std::vector<float> mnt_cat3_iso01;
315  std::vector<float> mnt_cat3_iso0201;
316  std::vector<float> mnt_cat3_refit_pt;
317  std::vector<float> mnt_cat3_refit_z0;
318  std::vector<float> mnt_cat3_refit_d0;
319  std::vector<int> mnt_cat3_n_pix;
320  std::vector<int> mnt_cat3_n_bl;
321  std::vector<float> mnt_cat3_bdtscore;
322  auto mon_cat3_pt = Monitored::Collection("pix3_sct0_pt", mnt_cat3_pt);
323  auto mon_cat3_z0 = Monitored::Collection("pix3_sct0_z0", mnt_cat3_z0);
324  auto mon_cat3_d0 = Monitored::Collection("pix3_sct0_d0", mnt_cat3_d0);
325  auto mon_cat3_chi2ndof = Monitored::Collection("pix3_sct0_chi2ndof", mnt_cat3_chi2ndof);
326  auto mon_cat3_chi2ndof_pix = Monitored::Collection("pix3_sct0_chi2ndof_pix", mnt_cat3_chi2ndof_pix);
327  auto mon_cat3_iso01 = Monitored::Collection("pix3_sct0_iso01", mnt_cat3_iso01);
328  auto mon_cat3_iso0201 = Monitored::Collection("pix3_sct0_iso0201", mnt_cat3_iso0201);
329  auto mon_cat3_refit_pt = Monitored::Collection("pix3_sct0_refit_pt", mnt_cat3_refit_pt);
330  auto mon_cat3_refit_z0 = Monitored::Collection("pix3_sct0_refit_z0", mnt_cat3_refit_z0);
331  auto mon_cat3_refit_d0 = Monitored::Collection("pix3_sct0_refit_d0", mnt_cat3_refit_d0);
332  auto mon_cat3_n_pix = Monitored::Collection("pix3_sct0_n_pix", mnt_cat3_n_pix);
333  auto mon_cat3_n_bl = Monitored::Collection("pix3_sct0_n_bl", mnt_cat3_n_bl);
334  auto mon_cat3_bdtscore = Monitored::Collection("pix3_sct0_bdtscore", mnt_cat3_bdtscore);
335  auto monDisTrkCat3 = Monitored::Group(m_monTool, mon_cat3_pt, mon_cat3_z0, mon_cat3_d0, mon_cat3_chi2ndof, mon_cat3_chi2ndof_pix,
336  mon_cat3_iso01, mon_cat3_iso0201, mon_cat3_refit_pt, mon_cat3_refit_z0, mon_cat3_refit_d0,
337  mon_cat3_n_pix, mon_cat3_n_bl, mon_cat3_bdtscore);
338  //
339  std::vector<float> mnt_cat4_pt;
340  std::vector<float> mnt_cat4_z0;
341  std::vector<float> mnt_cat4_d0;
342  std::vector<float> mnt_cat4_refit_pt;
343  std::vector<float> mnt_cat4_refit_z0;
344  std::vector<float> mnt_cat4_refit_d0;
345  std::vector<int> mnt_cat4_n_pix;
346  std::vector<int> mnt_cat4_n_sct;
347  std::vector<float> mnt_cat4_refit_ptratio;
348  std::vector<int> mnt_cat4_n_bl;
349  std::vector<float> mnt_cat4_chi2ndof;
350  std::vector<float> mnt_cat4_iso01;
351  std::vector<float> mnt_cat4_iso0201;
352  std::vector<float> mnt_cat4_refit_chi2ndof;
353  std::vector<float> mnt_cat4_bdtscore;
354  auto mon_cat4_pt = Monitored::Collection("pix3_sct1p_pt", mnt_cat4_pt);
355  auto mon_cat4_z0 = Monitored::Collection("pix3_sct1p_z0", mnt_cat4_z0);
356  auto mon_cat4_d0 = Monitored::Collection("pix3_sct1p_d0", mnt_cat4_d0);
357  auto mon_cat4_refit_pt = Monitored::Collection("pix3_sct1p_refit_pt", mnt_cat4_refit_pt);
358  auto mon_cat4_refit_z0 = Monitored::Collection("pix3_sct1p_refit_z0", mnt_cat4_refit_z0);
359  auto mon_cat4_refit_d0 = Monitored::Collection("pix3_sct1p_refit_d0", mnt_cat4_refit_d0);
360  auto mon_cat4_n_pix = Monitored::Collection("pix3_sct1p_n_pix", mnt_cat4_n_pix);
361  auto mon_cat4_n_sct = Monitored::Collection("pix3_sct1p_n_sct", mnt_cat4_n_sct);
362  auto mon_cat4_refit_ptratio = Monitored::Collection("pix3_sct1p_refit_ptratio", mnt_cat4_refit_ptratio);
363  auto mon_cat4_n_bl = Monitored::Collection("pix3_sct1p_n_bl", mnt_cat4_n_bl);
364  auto mon_cat4_chi2ndof = Monitored::Collection("pix3_sct1p_chi2ndof", mnt_cat4_chi2ndof);
365  auto mon_cat4_iso01 = Monitored::Collection("pix3_sct1p_iso01", mnt_cat4_iso01);
366  auto mon_cat4_iso0201 = Monitored::Collection("pix3_sct1p_iso0201", mnt_cat4_iso0201);
367  auto mon_cat4_refit_chi2ndof = Monitored::Collection("pix3_sct1p_refit_chi2ndof", mnt_cat4_refit_chi2ndof);
368  auto mon_cat4_bdtscore = Monitored::Collection("pix3_sct1p_bdtscore", mnt_cat4_bdtscore);
369  auto monDisTrkCat4 = Monitored::Group(m_monTool, mon_cat4_pt, mon_cat4_z0, mon_cat4_d0, mon_cat4_refit_pt, mon_cat4_refit_z0, mon_cat4_refit_d0,
370  mon_cat4_n_pix, mon_cat4_n_sct, mon_cat4_refit_ptratio, mon_cat4_n_bl, mon_cat4_chi2ndof,
371  mon_cat4_iso01, mon_cat4_iso0201, mon_cat4_refit_chi2ndof, mon_cat4_bdtscore);
372 
373  //
374 
375  const std::string prefixIn = "disTrkCand";
376  const std::string prefixOut = "disTrk";
377 
378  unsigned int i_cand=0;
379 
380  for ( const xAOD::TrigComposite* cand : *disTrkCandContainer ) {
381 
382  ATH_MSG_VERBOSE("===== i_cand: " << i_cand++ << " =====" );
383 
384  // category
385  int category = (int)cand->getDetail<int16_t>(prefixIn+"_category");
386  if( category<=0 || category>=5 ) {
387  ATH_MSG_VERBOSE("category is out of range = " << category);
388  continue;
389  }
390  mnt_category.push_back(category);
391 
392  // get values
393  float ptGeV = cand->getDetail<float>(prefixIn+"_pt");
394  float refit_ptGeV = cand->getDetail<float>(prefixIn+"_refit_pt");
395  ptGeV /= Gaudi::Units::GeV;
396  refit_ptGeV /= Gaudi::Units::GeV;
397  int is_fail = (int)cand->getDetail<int16_t>(prefixIn+"_is_fail");
398  float d0_wrtVtx = cand->getDetail<float>(prefixIn+"_d0_wrtVtx");
399  float z0_wrtVtx = cand->getDetail<float>(prefixIn+"_z0_wrtVtx");
400  float chi2 = cand->getDetail<float>(prefixIn+"_chi2");
401  float ndof = cand->getDetail<float>(prefixIn+"_ndof");
402  float chi2ndof = ( std::abs(ndof) > 1e-4 ) ? chi2 / ndof : 20;
403  int n_hits_pix = (int)cand->getDetail<int16_t>(prefixIn+"_n_hits_pix");
404  int n_hits_sct = (int)cand->getDetail<int16_t>(prefixIn+"_n_hits_sct");
405  int n_hits_bl = (int)cand->getDetail<int16_t>(prefixIn+"_n_hits_innermost");
406  float iso3_dr01 = cand->getDetail<float>(prefixIn+"_iso3_dr01");
407  iso3_dr01 /= Gaudi::Units::GeV;
408  float iso3_dr02 = cand->getDetail<float>(prefixIn+"_iso3_dr02");
409  iso3_dr02 /= Gaudi::Units::GeV;
410  float refit_ptratio = ( std::abs(ptGeV) > 1e-4 ) ? refit_ptGeV / ptGeV : 0;
411  float refit_d0_wrtVtx = cand->getDetail<float>(prefixIn+"_refit_d0_wrtVtx");
412  float refit_z0_wrtVtx = cand->getDetail<float>(prefixIn+"_refit_z0_wrtVtx");
413  float refit_chi2 = cand->getDetail<float>(prefixIn+"_refit_chi2");
414  float refit_ndof = cand->getDetail<float>(prefixIn+"_refit_ndof");
415  float refit_chi2ndof = ( std::abs(refit_ndof) > 1e-4 ) ? refit_chi2 / refit_ndof : 20;
416  float refit_chi2ndof_ratio = (std::abs(chi2ndof) > 1e-4 ) ? refit_chi2ndof / chi2ndof : 0;
417  float chi2_pix=0; float ndof_pix=0;
418  chi2_pix += cand->getDetail<float>(prefixIn+"_chi2sum_br_ibl");
419  chi2_pix += cand->getDetail<float>(prefixIn+"_chi2sum_br_pix1");
420  chi2_pix += cand->getDetail<float>(prefixIn+"_chi2sum_br_pix2");
421  chi2_pix += cand->getDetail<float>(prefixIn+"_chi2sum_br_pix3");
422  ndof_pix += cand->getDetail<float>(prefixIn+"_ndofsum_br_ibl");
423  ndof_pix += cand->getDetail<float>(prefixIn+"_ndofsum_br_pix1");
424  ndof_pix += cand->getDetail<float>(prefixIn+"_ndofsum_br_pix2");
425  ndof_pix += cand->getDetail<float>(prefixIn+"_ndofsum_br_pix3");
426  float chi2ndof_pix = ( std::abs(ndof_pix) > 1e-4 ) ? chi2_pix / ndof_pix : 0;
427 
428  // BDT score
429  float bdt_score = 0.0;
430  if( category==1 ) {
431  bdt_score = bdt_eval_pix4l_sct0(context, ptGeV, z0_wrtVtx, d0_wrtVtx, iso3_dr01, iso3_dr02-iso3_dr01, chi2ndof, chi2ndof_pix,
432  refit_ptGeV, n_hits_pix, refit_ptratio, refit_chi2ndof, n_hits_bl);
433  mnt_cat1_pt.push_back(ptGeV);
434  mnt_cat1_z0.push_back(z0_wrtVtx);
435  mnt_cat1_d0.push_back(d0_wrtVtx);
436  mnt_cat1_iso01.push_back(iso3_dr01);
437  mnt_cat1_iso0201.push_back(iso3_dr02-iso3_dr01);
438  mnt_cat1_chi2ndof.push_back(chi2ndof);
439  mnt_cat1_chi2ndof_pix.push_back(chi2ndof_pix);
440  mnt_cat1_refit_pt.push_back(refit_ptGeV);
441  mnt_cat1_n_pix.push_back(n_hits_pix);
442  mnt_cat1_refit_ptratio.push_back(refit_ptratio);
443  mnt_cat1_refit_chi2ndof.push_back(refit_chi2ndof);
444  mnt_cat1_n_bl.push_back(n_hits_bl);
445  mnt_cat1_bdtscore.push_back(bdt_score);
446  }
447  else if( category==2 ) {
448  bdt_score = bdt_eval_pix4l_sct1p(context, ptGeV, refit_ptGeV, refit_z0_wrtVtx, refit_d0_wrtVtx, n_hits_sct, refit_ptratio,
449  refit_chi2ndof_ratio, iso3_dr01, iso3_dr02-iso3_dr01, is_fail, chi2ndof_pix, n_hits_pix);
450  mnt_cat2_pt.push_back(ptGeV);
451  mnt_cat2_refit_pt.push_back(refit_ptGeV);
452  mnt_cat2_refit_z0.push_back(refit_z0_wrtVtx);
453  mnt_cat2_refit_d0.push_back(refit_d0_wrtVtx);
454  mnt_cat2_n_sct.push_back(n_hits_sct);
455  mnt_cat2_refit_ptratio.push_back(refit_ptratio);
456  mnt_cat2_refit_chi2ndof_ratio.push_back(refit_chi2ndof_ratio);
457  mnt_cat2_iso01.push_back(iso3_dr01);
458  mnt_cat2_iso0201.push_back(iso3_dr02-iso3_dr01);
459  mnt_cat2_chi2ndof_pix.push_back(chi2ndof_pix);
460  mnt_cat2_n_pix.push_back(n_hits_pix);
461  mnt_cat2_bdtscore.push_back(bdt_score);
462  }
463  else if( category==3 ) {
464  bdt_score = bdt_eval_pix3l_sct0(context, ptGeV, z0_wrtVtx, d0_wrtVtx, chi2ndof, chi2ndof_pix, iso3_dr01, iso3_dr02-iso3_dr01,
465  refit_ptGeV, refit_z0_wrtVtx, refit_d0_wrtVtx, n_hits_pix, n_hits_bl);
466  mnt_cat3_pt.push_back(ptGeV);
467  mnt_cat3_z0.push_back(z0_wrtVtx);
468  mnt_cat3_d0.push_back(d0_wrtVtx);
469  mnt_cat3_chi2ndof.push_back(chi2ndof);
470  mnt_cat3_chi2ndof_pix.push_back(chi2ndof_pix);
471  mnt_cat3_iso01.push_back(iso3_dr01);
472  mnt_cat3_iso0201.push_back(iso3_dr02-iso3_dr01);
473  mnt_cat3_refit_pt.push_back(refit_ptGeV);
474  mnt_cat3_refit_z0.push_back(refit_z0_wrtVtx);
475  mnt_cat3_refit_d0.push_back(refit_d0_wrtVtx);
476  mnt_cat3_n_pix.push_back(n_hits_pix);
477  mnt_cat3_n_bl.push_back(n_hits_bl);
478  mnt_cat3_bdtscore.push_back(bdt_score);
479  }
480  else if( category==4 ) {
481  bdt_score = bdt_eval_pix3l_sct1p(context, ptGeV, z0_wrtVtx, d0_wrtVtx, refit_ptGeV, refit_z0_wrtVtx, refit_d0_wrtVtx, n_hits_pix, n_hits_sct,
482  refit_ptratio, is_fail, n_hits_bl, chi2ndof, iso3_dr01, iso3_dr02-iso3_dr01, refit_chi2ndof);
483  mnt_cat4_pt.push_back(ptGeV);
484  mnt_cat4_z0.push_back(z0_wrtVtx);
485  mnt_cat4_d0.push_back(d0_wrtVtx);
486  mnt_cat4_refit_pt.push_back(refit_ptGeV);
487  mnt_cat4_refit_z0.push_back(refit_z0_wrtVtx);
488  mnt_cat4_refit_d0.push_back(refit_d0_wrtVtx);
489  mnt_cat4_n_pix.push_back(n_hits_pix);
490  mnt_cat4_n_sct.push_back(n_hits_sct);
491  mnt_cat4_refit_ptratio.push_back(refit_ptratio);
492  mnt_cat4_n_bl.push_back(n_hits_bl);
493  mnt_cat4_chi2ndof.push_back(chi2ndof);
494  mnt_cat4_iso01.push_back(iso3_dr01);
495  mnt_cat4_iso0201.push_back(iso3_dr02-iso3_dr01);
496  mnt_cat4_refit_chi2ndof.push_back(refit_chi2ndof);
497  mnt_cat4_bdtscore.push_back(bdt_score);
498  }
499  ATH_MSG_VERBOSE("BDT score = " << bdt_score);
500 
501  // preselection
502  const float PRESEL_PT_GEV = 7.5;
503  const float PRESEL_BDT_SCORE_CAT3 = -0.4;
504  const float PRESEL_BDT_SCORE_CAT4 = -0.2;
505  if( ptGeV < PRESEL_PT_GEV && refit_ptGeV < PRESEL_PT_GEV ) continue;
506  if( category==3 && bdt_score < PRESEL_BDT_SCORE_CAT3 ) continue;
507  if( category==4 && bdt_score < PRESEL_BDT_SCORE_CAT4 ) continue;
508 
509  // create EDM object
511  distrk->makePrivateStore();
512  disTrkBDTSelContainer->push_back(distrk);
513 
514  distrk->setDetail<int16_t>(prefixOut+"_category", (int16_t)category);
515  distrk->setDetail<float>(prefixOut+"_pt", ptGeV*Gaudi::Units::GeV);
516  float eta = cand->getDetail<float>(prefixIn+"_eta");
517  float phi = cand->getDetail<float>(prefixIn+"_phi");
518  distrk->setDetail<float>(prefixOut+"_eta", eta);
519  distrk->setDetail<float>(prefixOut+"_phi", phi);
520  distrk->setDetail<float>(prefixOut+"_refit_pt", refit_ptGeV*Gaudi::Units::GeV);
521  distrk->setDetail<int16_t>(prefixOut+"_is_fail", is_fail);
522  distrk->setDetail<float>(prefixOut+"_d0_wrtVtx", d0_wrtVtx);
523  distrk->setDetail<float>(prefixOut+"_z0_wrtVtx", z0_wrtVtx);
524  distrk->setDetail<float>(prefixOut+"_chi2", chi2);
525  distrk->setDetail<float>(prefixOut+"_ndof", ndof);
526  distrk->setDetail<int16_t>(prefixOut+"_n_hits_pix", (int16_t)n_hits_pix);
527  distrk->setDetail<int16_t>(prefixOut+"_n_hits_sct", (int16_t)n_hits_sct);
528  distrk->setDetail<int16_t>(prefixOut+"_n_hits_innermost", (int16_t)n_hits_bl);
529  distrk->setDetail<float>(prefixOut+"_iso3_dr01", iso3_dr01*Gaudi::Units::GeV);
530  distrk->setDetail<float>(prefixOut+"_iso3_dr02", iso3_dr02*Gaudi::Units::GeV);
531  distrk->setDetail<float>(prefixOut+"_refit_d0_wrtVtx", refit_d0_wrtVtx);
532  distrk->setDetail<float>(prefixOut+"_refit_z0_wrtVtx", refit_z0_wrtVtx);
533  distrk->setDetail<float>(prefixOut+"_refit_chi2", refit_chi2);
534  distrk->setDetail<float>(prefixOut+"_refit_ndof", refit_ndof);
535  distrk->setDetail<float>(prefixOut+"_chi2ndof_pix", chi2ndof_pix);
536  distrk->setDetail<float>(prefixOut+"_bdtscore", bdt_score);
537 
538  ATH_MSG_VERBOSE("Created a new entry EDM" );
539  }
540 
541  return StatusCode::SUCCESS;
542 }
543 
544 // ------------------------------------------------------------------------------------------------
545 // ------------------------------------------------------------------------------------------------
546 
547 inline float TrigDisappearingTrackHypoAlg::BDTinput(float var) const { return ( std::abs(var) < 1e-5 ) ? 1e-5 : var; }
548 
550 (const EventContext& context,
551  float pt, float z0, float d0, float trkiso3_dr01, float trkiso3_dr0201, float chi2ndof, float chi2ndof_pix,
552  float refit_pt, int n_pix, float refit_ptratio, float refit_chi2ndof, int n_bl) const
553 {
554  auto& reader = *m_tmva_pix4l_sct0_reader.get(context);
555  reader.pt = BDTinput(pt);
556  reader.z0 = BDTinput(z0);
557  reader.d0 = BDTinput(d0);
558  reader.trkiso3_dr01 = BDTinput(trkiso3_dr01);
559  reader.trkiso3_dr0201 = BDTinput(trkiso3_dr0201);
560  reader.chi2ndof = BDTinput(chi2ndof);
561  reader.chi2ndof_pix = BDTinput(chi2ndof_pix);
562  reader.refit_pt = BDTinput(refit_pt);
563  reader.n_pix = BDTinput((float)n_pix);
564  reader.refit_ptratio = BDTinput(refit_ptratio);
565  reader.refit_chi2ndof = BDTinput(refit_chi2ndof);
566  reader.n_bl = BDTinput((float)n_bl);
567 
568  return reader.tmva->EvaluateMVA("BDT method");
569 }
570 
572 (const EventContext& context,
573  float pt, float refit_pt, float refit_z0, float refit_d0, int n_sct, float refit_ptratio,
574  float refit_chi2ndof_ratio, float trkiso3_dr01, float trkiso3_dr0201, int is_fail, float chi2ndof_pix, int n_pix) const
575 {
576  auto& reader = *m_tmva_pix4l_sct1p_reader.get(context);
577  reader.pt = BDTinput(pt);
578  reader.refit_pt = BDTinput(refit_pt);
579  reader.refit_z0 = BDTinput(refit_z0);
580  reader.refit_d0 = BDTinput(refit_d0);
581  reader.n_sct = BDTinput((float)n_sct);
582  reader.refit_ptratio = BDTinput(refit_ptratio);
583  reader.refit_chi2ndof_ratio = BDTinput(refit_chi2ndof_ratio);
584  reader.trkiso3_dr01 = BDTinput(trkiso3_dr01);
585  reader.trkiso3_dr0201 = BDTinput(trkiso3_dr0201);
586  reader.is_fail = BDTinput((float)is_fail);
587  reader.chi2ndof_pix = BDTinput(chi2ndof_pix);
588  reader.n_pix = BDTinput((float)n_pix);
589 
590  return reader.tmva->EvaluateMVA("BDT method");
591 }
592 
594 (const EventContext& context,
595  float pt, float z0, float d0, float chi2ndof, float chi2ndof_pix, float trkiso3_dr01, float trkiso3_dr0201,
596  float refit_pt, float refit_z0, float refit_d0, int n_pix, int n_bl) const
597 {
598  auto& reader = *m_tmva_pix3l_sct0_reader.get(context);
599  reader.pt = BDTinput(pt);
600  reader.z0 = BDTinput(z0);
601  reader.d0 = BDTinput(d0);
602  reader.chi2ndof = BDTinput(chi2ndof);
603  reader.chi2ndof_pix = BDTinput(chi2ndof_pix);
604  reader.trkiso3_dr01 = BDTinput(trkiso3_dr01);
605  reader.trkiso3_dr0201 = BDTinput(trkiso3_dr0201);
606  reader.refit_pt = BDTinput(refit_pt);
607  reader.refit_z0 = BDTinput(refit_z0);
608  reader.refit_d0 = BDTinput(refit_d0);
609  reader.n_pix = BDTinput((float)n_pix);
610  reader.n_bl = BDTinput((float)n_bl);
611 
612  return reader.tmva->EvaluateMVA("BDT method");
613 }
614 
616 (const EventContext& context,
617  float pt, float z0, float d0, float refit_pt, float refit_z0, float refit_d0,
618  int n_pix, int n_sct, float refit_ptratio, int is_fail, int n_bl,
619  float chi2ndof, float trkiso3_dr01, float trkiso3_dr0201, float refit_chi2ndof) const
620 {
621  auto& reader = *m_tmva_pix3l_sct1p_reader.get(context);
622  reader.pt = BDTinput(pt);
623  reader.z0 = BDTinput(z0);
624  reader.d0 = BDTinput(d0);
625  reader.refit_pt = BDTinput(refit_pt);
626  reader.refit_z0 = BDTinput(refit_z0);
627  reader.refit_d0 = BDTinput(refit_d0);
628  reader.n_pix = BDTinput((float)n_pix);
629  reader.n_sct = BDTinput((float)n_sct);
630  reader.refit_ptratio = BDTinput(refit_ptratio);
631  reader.is_fail = BDTinput((float)is_fail);
632  reader.n_bl = BDTinput((float)n_bl);
633  reader.chi2ndof = BDTinput(chi2ndof);
634  reader.trkiso3_dr01 = BDTinput(trkiso3_dr01);
635  reader.trkiso3_dr0201 = BDTinput(trkiso3_dr0201);
636  reader.refit_chi2ndof = BDTinput(refit_chi2ndof);
637 
638  return reader.tmva->EvaluateMVA("BDT method");
639 }
640 
641 // ------------------------------------------------------------------------------------------------
642 // ------------------------------------------------------------------------------------------------
643 
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
PathResolver::find_calib_file
static std::string find_calib_file(const std::string &logical_file_name)
Definition: PathResolver.cxx:384
IDTPM::ndof
float ndof(const U &p)
Definition: TrackParametersHelper.h:142
beamspotnt.var
var
Definition: bin/beamspotnt.py:1394
TrigDisappearingTrackHypoAlg::createCandidates
StatusCode createCandidates(const EventContext &, const xAOD::TrigCompositeContainer *, xAOD::TrigCompositeContainer *) const
Definition: TrigDisappearingTrackHypoAlg.cxx:243
xAOD::TrigComposite_v1::setDetail
bool setDetail(const std::string &name, const TYPE &value)
Set an TYPE detail on the object.
TrigDefs::Group
Group
Properties of a chain group.
Definition: GroupProperties.h:13
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
TrigCompositeUtils::DecisionContainer
xAOD::TrigCompositeContainer DecisionContainer
Definition: Event/xAOD/xAODTrigger/xAODTrigger/TrigCompositeContainer.h:21
TrigDisappearingTrackHypoAlg::initialize
virtual StatusCode initialize() override
Definition: TrigDisappearingTrackHypoAlg.cxx:39
TrigCompositeUtils.h
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
xAOD::TrigComposite
TrigComposite_v1 TrigComposite
Declare the latest version of the class.
Definition: Event/xAOD/xAODTrigger/xAODTrigger/TrigComposite.h:16
TrigCompositeUtils::newDecisionIn
Decision * newDecisionIn(DecisionContainer *dc, const std::string &name)
Helper method to create a Decision object, place it in the container and return a pointer to it.
Definition: TrigCompositeUtilsRoot.cxx:46
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:79
TrigDisappearingTrackHypoAlg::m_DisTrkCandKey
SG::ReadHandleKey< xAOD::TrigCompositeContainer > m_DisTrkCandKey
Definition: TrigDisappearingTrackHypoAlg.h:35
TrigCompositeUtils::hypoAlgNodeName
const std::string & hypoAlgNodeName()
Definition: TrigCompositeUtilsRoot.cxx:906
TrigDisappearingTrackHypoAlg.h
skel.it
it
Definition: skel.GENtoEVGEN.py:423
test_pyathena.pt
pt
Definition: test_pyathena.py:11
DataVector::get
const T * get(size_type n) const
Access an element, as an rvalue.
HypoBase::decisionInput
const SG::ReadHandleKey< TrigCompositeUtils::DecisionContainer > & decisionInput() const
methods for derived classes to access handles of the base class input other read/write handles may be...
Definition: HypoBase.cxx:16
TrigCompositeUtils::createAndStore
SG::WriteHandle< DecisionContainer > createAndStore(const SG::WriteHandleKey< DecisionContainer > &key, const EventContext &ctx)
Creates and right away records the DecisionContainer with the key.
Definition: TrigCompositeUtilsRoot.cxx:30
TrigDisappearingTrackHypoAlg::bdt_eval_pix4l_sct1p
float bdt_eval_pix4l_sct1p(const EventContext &, float, float, float, float, int, float, float, float, float, int, float, int) const
Definition: TrigDisappearingTrackHypoAlg.cxx:572
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
TrigDisappearingTrackHypoAlg::m_monTool
ToolHandle< GenericMonitoringTool > m_monTool
Definition: TrigDisappearingTrackHypoAlg.h:40
TrigDisappearingTrackHypoAlg::bdt_eval_pix4l_sct0
float bdt_eval_pix4l_sct0(const EventContext &, float, float, float, float, float, float, float, float, int, float, float, int) const
Definition: TrigDisappearingTrackHypoAlg.cxx:550
ViewHelper.h
xAOD::int16_t
setScaleOne setStatusOne setSaturated int16_t
Definition: gFexGlobalRoI_v1.cxx:55
HypoBase::decisionOutput
const SG::WriteHandleKey< TrigCompositeUtils::DecisionContainer > & decisionOutput() const
methods for derived classes to access handles of the base class output other read/write handles may b...
Definition: HypoBase.cxx:20
Monitored::Collection
ValuesCollection< T > Collection(std::string name, const T &collection)
Declare a monitored (double-convertible) collection.
Definition: MonitoredCollection.h:38
TrigDisappearingTrackHypoTool::DisTrkHypoInfo
Definition: TrigDisappearingTrackHypoTool.h:30
SG::makeHandle
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
Definition: ReadCondHandle.h:270
TrigDisappearingTrackHypoAlg::execute
virtual StatusCode execute(const EventContext &context) const override
Definition: TrigDisappearingTrackHypoAlg.cxx:151
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
HypoBase::hypoBaseOutputProcessing
StatusCode hypoBaseOutputProcessing(SG::WriteHandle< TrigCompositeUtils::DecisionContainer > &outputHandle, MSG::Level lvl=MSG::DEBUG) const
Base class function to be called once slice specific code has finished. Handles debug printing and va...
Definition: HypoBase.cxx:33
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
SG::WriteHandle::ptr
pointer_type ptr()
Dereference the pointer.
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
ReweightUtils.category
category
Definition: ReweightUtils.py:15
chi2
double chi2(TH1 *h0, TH1 *h1)
Definition: comparitor.cxx:522
TRT::Track::d0
@ d0
Definition: InnerDetector/InDetCalibEvent/TRT_CalibData/TRT_CalibData/TrackInfo.h:62
TrigDisappearingTrackHypoAlg::BDTinput
float BDTinput(float) const
Definition: TrigDisappearingTrackHypoAlg.cxx:547
TrigDisappearingTrackHypoAlg::TrigDisappearingTrackHypoAlg
TrigDisappearingTrackHypoAlg(const std::string &name, ISvcLocator *pSvcLocator)
Definition: TrigDisappearingTrackHypoAlg.cxx:32
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
CHECK
#define CHECK(...)
Evaluate an expression and check for errors.
Definition: Control/AthenaKernel/AthenaKernel/errorcheck.h:422
TRT::Track::z0
@ z0
Definition: InnerDetector/InDetCalibEvent/TRT_CalibData/TRT_CalibData/TrackInfo.h:63
xAOD::TrigComposite_v1
Class used to describe composite objects in the HLT.
Definition: TrigComposite_v1.h:52
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
Monitored.h
Header file to be included by clients of the Monitored infrastructure.
TrigCompositeUtils::DecisionAuxContainer
xAOD::TrigCompositeAuxContainer DecisionAuxContainer
Definition: TrigCompositeAuxContainer.h:20
TrigCompositeUtils::featureString
const std::string & featureString()
Definition: TrigCompositeUtilsRoot.cxx:886
PathResolver.h
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
HypoBase
Hypothesis algorithms take the output of reco algorithms and the decision from the preceeding InputMa...
Definition: HypoBase.h:13
TrigCompositeUtils::Decision
xAOD::TrigComposite Decision
Definition: Event/xAOD/xAODTrigger/xAODTrigger/TrigComposite.h:20
AtlCoolConsole.tool
tool
Definition: AtlCoolConsole.py:453
DataVector::push_back
value_type push_back(value_type pElem)
Add an element to the end of the collection.
SG::AuxElement::makePrivateStore
void makePrivateStore()
Create a new (empty) private store for this object.
Definition: AuxElement.cxx:172
TrigDisappearingTrackHypoAlg::m_hypoTools
ToolHandleArray< TrigDisappearingTrackHypoTool > m_hypoTools
Definition: TrigDisappearingTrackHypoAlg.h:34
TrigDisappearingTrackHypoAlg::m_DisTrkBDTSelKey
SG::WriteHandleKey< xAOD::TrigCompositeContainer > m_DisTrkBDTSelKey
Definition: TrigDisappearingTrackHypoAlg.h:36
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:76
TrigCompositeUtils::linkToPrevious
void linkToPrevious(Decision *d, const std::string &previousCollectionKey, size_t previousIndex)
Links to the previous object, location of previous 'seed' decision supplied by hand.
Definition: TrigCompositeUtilsRoot.cxx:139
TrigCompositeUtils::LinkInfo
Helper to keep a Decision object, ElementLink and ActiveState (with respect to some requested ChainGr...
Definition: LinkInfo.h:28
DiTauMassTools::MaxHistStrategyV2::e
e
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:26
TrigCompositeUtils::DecisionIDContainer
std::set< DecisionID > DecisionIDContainer
Definition: TrigComposite_v1.h:28
SG::WriteHandle::record
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
TrigCompositeUtils::findLink
LinkInfo< T > findLink(const Decision *start, const std::string &linkName, const bool suppressMultipleLinksWarning=false)
Perform a recursive search for ElementLinks of type T and name 'linkName', starting from Decision obj...
TrigCompositeUtils::allFailed
bool allFailed(const Decision *d)
return true if there is no positive decision stored
Definition: TrigCompositeUtilsRoot.cxx:103
TrigDisappearingTrackHypoAlg::bdt_eval_pix3l_sct0
float bdt_eval_pix3l_sct0(const EventContext &, float, float, float, float, float, float, float, float, float, float, int, int) const
Definition: TrigDisappearingTrackHypoAlg.cxx:594
TrigCompositeUtils::decisionIDs
void decisionIDs(const Decision *d, DecisionIDContainer &destination)
Extracts DecisionIDs stored in the Decision object.
Definition: TrigCompositeUtilsRoot.cxx:67
collisions.reader
reader
read the goodrunslist xml file(s)
Definition: collisions.py:22
GeV
#define GeV
Definition: CaloTransverseBalanceVecMon.cxx:30
TrigCompositeUtils::viewString
const std::string & viewString()
Definition: TrigCompositeUtilsRoot.cxx:882
TrigDisappearingTrackHypoAlg::bdt_eval_pix3l_sct1p
float bdt_eval_pix3l_sct1p(const EventContext &, float, float, float, float, float, float, int, int, float, int, int, float, float, float, float) const
Definition: TrigDisappearingTrackHypoAlg.cxx:616
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37