ATLAS Offline Software
Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
FPGATrackSimDataFlowTool Class Reference

#include <FPGATrackSimDataFlowTool.h>

Inheritance diagram for FPGATrackSimDataFlowTool:
Collaboration diagram for FPGATrackSimDataFlowTool:

Public Member Functions

 FPGATrackSimDataFlowTool (std::string const &, std::string const &, IInterface const *)
 
virtual ~FPGATrackSimDataFlowTool ()=default
 
virtual StatusCode initialize () override
 
StatusCode calculateDataFlow (FPGATrackSimDataFlowInfo *info, FPGATrackSimLogicalEventInputHeader const *header_1st, std::vector< FPGATrackSimCluster > const &clusters_1st, std::vector< FPGATrackSimRoad * > const &roads_1st, std::vector< FPGATrackSimTrack > const &tracks_1st, std::vector< FPGATrackSimRoad * > const &roads_2nd, std::vector< FPGATrackSimTrack > const &tracks_2nd)
 
StatusCode getDataFlowInfo (FPGATrackSimDataFlowInfo const &info)
 
virtual StatusCode finalize () override
 
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & evtStore () const
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc. More...
 
virtual StatusCode sysInitialize () override
 Perform system initialization for an algorithm. More...
 
virtual StatusCode sysStart () override
 Handle START transition. More...
 
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles. More...
 
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles. More...
 
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T > &t)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc="none")
 Declare a new Gaudi property. More...
 
void updateVHKA (Gaudi::Details::PropertyBase &)
 
MsgStream & msg () const
 
MsgStream & msg (const MSG::Level lvl) const
 
bool msgLvl (const MSG::Level lvl) const
 

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution More...
 
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
 
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed. More...
 

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

StatusCode makeDataFlowTable ()
 
StatusCode addDataFlow (float const n, std::string const &key, bool const isInt=true)
 
StatusCode printDataFlow (std::string const &key, int const div=1)
 
void addTableBreak (unsigned const n=1)
 
void findAndReplaceAll (std::string &data, std::string const &toFind, std::string const &replaceStr) const
 
void setMaxAcceptance (TH1 *h, double const max_frac, double &max_value) const
 
double roundTo (double const v, int const nSigDigits) const
 
void setHistDir (std::string const &dir)
 
std::string constgetHistDir ()
 
void clearHistDir ()
 
StatusCode regHist (std::string const &dir, TH1 *h)
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &)
 specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
 

Private Attributes

ServiceHandle< ITHistSvc > m_tHistSvc {this,"THistSvc","THistSvc"}
 
ServiceHandle< IFPGATrackSimMappingSvcm_FPGATrackSimMapping {this,"FPGATrackSimMappingSvc","FPGATrackSimMappingSvc"}
 
ServiceHandle< IFPGATrackSimEventSelectionSvcm_evtSel {this,"FPGATrackSimEventSelectionSvc","FPGATrackSimEventSelectionSvc"}
 
Gaudi::Property< bool > m_runSecondStage {this, "RunSecondStage", false, "flag to enable running the second stage fitting"}
 
Gaudi::Property< std::string > m_outputtag {this, "outputTag", "", "Extra string to use in output folder names - default none"}
 
Gaudi::Property< float > m_cut_chi2ndof {this, "Chi2ndofCut", 40., "cut on Chi2 of FPGATrackSimTrack"}
 
std::string const m_dataFlowTxtName = "./dataflow.txt"
 
std::string const m_dataFlowTeXName = "./dataflow.tex"
 
std::ofstream m_dataFlowTxt
 
std::ofstream m_dataFlowTeX
 
std::string m_dir
 
size_t m_nEvents = 0
 
unsigned m_nLayers_1st = 0U
 
unsigned const m_nSigDigits = 2
 
unsigned const m_tableTypeWidth = 32
 
unsigned const m_tableDataWidth = 9
 
double const m_max_frac = 0.99
 
std::unordered_map< std::string, int > m_dataFlowDataI_min
 
std::unordered_map< std::string, int > m_dataFlowDataI_max
 
std::unordered_map< std::string, float > m_dataFlowDataF_min
 
std::unordered_map< std::string, float > m_dataFlowDataF_max
 
std::unordered_map< std::string, TH1I * > m_dataFlowHistsI
 
std::unordered_map< std::string, TH1F * > m_dataFlowHistsF
 
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default) More...
 
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default) More...
 
std::vector< SG::VarHandleKeyArray * > m_vhka
 
bool m_varHandleArraysDeclared
 

Detailed Description

Definition at line 26 of file FPGATrackSimDataFlowTool.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< AlgTool > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ FPGATrackSimDataFlowTool()

FPGATrackSimDataFlowTool::FPGATrackSimDataFlowTool ( std::string const algname,
std::string const name,
IInterface const ifc 
)

Definition at line 18 of file FPGATrackSimDataFlowTool.cxx.

18  :
19  AthAlgTool(algname, name, ifc)
20 {
21 }

◆ ~FPGATrackSimDataFlowTool()

virtual FPGATrackSimDataFlowTool::~FPGATrackSimDataFlowTool ( )
virtualdefault

Member Function Documentation

◆ addDataFlow()

StatusCode FPGATrackSimDataFlowTool::addDataFlow ( float const  n,
std::string const key,
bool const  isInt = true 
)
private

Definition at line 334 of file FPGATrackSimDataFlowTool.cxx.

335 {
336  if (isInt) {
337  if (m_dataFlowDataI_min.find(key) == m_dataFlowDataI_min.end()) {
338  m_dataFlowDataI_min.insert({key, n});
339  }
340  else if (n < m_dataFlowDataI_min.find(key)->second) {
341  m_dataFlowDataI_min.find(key)->second = n;
342  }
343 
344  if (m_dataFlowDataI_max.find(key) == m_dataFlowDataI_max.end()) {
345  m_dataFlowDataI_max.insert({key, n});
346  }
347  else if (n > m_dataFlowDataI_max.find(key)->second) {
348  m_dataFlowDataI_max.find(key)->second = n;
349  }
350  }
351  else {
352  if (m_dataFlowDataF_min.find(key) == m_dataFlowDataF_min.end()) {
353  m_dataFlowDataF_min.insert({key, n});
354  }
355  else if (n < m_dataFlowDataF_min.find(key)->second) {
356  m_dataFlowDataF_min.find(key)->second = n;
357  }
358 
359  if (m_dataFlowDataF_max.find(key) == m_dataFlowDataF_max.end()) {
360  m_dataFlowDataF_max.insert({key, n});
361  }
362  else if (n > m_dataFlowDataF_max.find(key)->second) {
363  m_dataFlowDataF_max.find(key)->second = n;
364  }
365  }
366 
367  if ((isInt && m_dataFlowHistsI.find(key) == m_dataFlowHistsI.end()) ||
368  (!isInt && m_dataFlowHistsF.find(key) == m_dataFlowHistsF.end())) {
369  std::string hname = "h_dataflow_" + key;
370  if (!m_outputtag.value().empty()) hname += ("_" + m_outputtag.value());
371  findAndReplaceAll(hname, "/", "_over_");
372 
373  setHistDir("/DataFlowHist/");
374  TH1* h;
375  if (isInt)
376  h = new TH1I(hname.c_str(), key.c_str(), n + 1, -0.5, n + 0.5);
377  else
378  h = new TH1F(hname.c_str(), key.c_str(), (round(n) + 1) * 100, -0.5, round(n) + 0.5);
380  clearHistDir();
381 
382  h->Fill(n);
383 
384  if (isInt)
385  m_dataFlowHistsI.insert({key, dynamic_cast<TH1I*>(h)});
386  else
387  m_dataFlowHistsF.insert({key, dynamic_cast<TH1F*>(h)});
388  }
389  else {
390  if (m_dataFlowDataI_max.find(key) != m_dataFlowDataI_max.end()) {
391  int max = m_dataFlowDataI_max.find(key)->second;
392  TH1I* h = m_dataFlowHistsI.find(key)->second;
393  h->SetBins(max + 1, -0.5, max + 0.5);
394  h->Fill(n);
395  }
396  else if (m_dataFlowDataF_max.find(key) != m_dataFlowDataF_max.end()) {
397  float max = m_dataFlowDataF_max.find(key)->second;
398  TH1F* h = m_dataFlowHistsF.find(key)->second;
399  h->SetBins((round(max) + 1) * 100, -0.5, round(max) + 0.5);
400  h->Fill(n);
401  }
402  }
403 
404  return StatusCode::SUCCESS;
405 }

◆ addTableBreak()

void FPGATrackSimDataFlowTool::addTableBreak ( unsigned const  n = 1)
private

Definition at line 471 of file FPGATrackSimDataFlowTool.cxx.

472 {
473  for (unsigned i = 0; i < n; i++) {
474  m_dataFlowTxt << "--------------" << std::endl;
475  m_dataFlowTeX << "\\hline" << std::endl;
476  }
477 }

◆ calculateDataFlow()

StatusCode FPGATrackSimDataFlowTool::calculateDataFlow ( FPGATrackSimDataFlowInfo info,
FPGATrackSimLogicalEventInputHeader const header_1st,
std::vector< FPGATrackSimCluster > const clusters_1st,
std::vector< FPGATrackSimRoad * > const roads_1st,
std::vector< FPGATrackSimTrack > const tracks_1st,
std::vector< FPGATrackSimRoad * > const roads_2nd,
std::vector< FPGATrackSimTrack > const tracks_2nd 
)

Definition at line 43 of file FPGATrackSimDataFlowTool.cxx.

47 {
48  info->nMappedHits_1st_layer.resize(m_nLayers_1st);
49  for (FPGATrackSimHit const & hit : header_1st->towers().at(0).hits()) {
50  info->nMappedHits_1st_layer[hit.getLayer()]++;
51  info->nMappedHits_1st_total++;
52  }
53 
54  info->nClusters_1st_layer.resize(m_nLayers_1st);
55  for (FPGATrackSimCluster const & cluster : clusters_1st) {
56  info->nClusters_1st_layer[cluster.getClusterEquiv().getLayer()]++;
57  info->nClusters_1st_total = clusters_1st.size();
58  }
59 
60  info->nRoads_1st_total = roads_1st.size();
61  for (FPGATrackSimRoad const * r : roads_1st) {
62  if (CxxUtils::count_ones(r->getHitLayers()) == m_nLayers_1st - 1) info->nRoads_1st_7hits++;
63  if (CxxUtils::count_ones(r->getHitLayers()) == m_nLayers_1st) info->nRoads_1st_8hits++;
64  }
65 
66  std::unordered_map<int, size_t> pattID_nTracks_1st;
67  std::unordered_map<int, size_t> pattID_nTracks_1st_passChi2;
68  std::unordered_map<int, size_t> pattID_nTracks_1st_afterOR;
69 
70  std::unordered_map<int, size_t> sectID_nTracks_1st;
71  std::unordered_map<int, size_t> sectID_nTracks_1st_passChi2;
72  std::unordered_map<int, size_t> sectID_nTracks_1st_afterOR;
73 
74  info->nTracks_1st_total = tracks_1st.size();
75  for (FPGATrackSimTrack const & t : tracks_1st) {
76  if (t.getChi2ndof() <= m_cut_chi2ndof) {
77  info->nTracks_1st_passChi2++;
78  pattID_nTracks_1st_passChi2[t.getPatternID()]++;
79  sectID_nTracks_1st_passChi2[t.getFirstSectorID()]++;
80  }
81  if (t.passedOR() == 1) {
82  info->nTracks_1st_afterOR++;
83  pattID_nTracks_1st_afterOR[t.getPatternID()]++;
84  sectID_nTracks_1st_afterOR[t.getFirstSectorID()]++;
85  }
86  pattID_nTracks_1st[t.getPatternID()]++;
87  sectID_nTracks_1st[t.getFirstSectorID()]++;
88  }
89  for (const auto& [ID, ntrack]: pattID_nTracks_1st) {
90  info->nTracks_1st_per_patt_total.push_back(ntrack);
91  }
92  for (const auto& [ID, ntrack]: pattID_nTracks_1st_passChi2) {
93  info->nTracks_1st_per_patt_passChi2.push_back(ntrack);
94  }
95  for (const auto& [ID, ntrack]: pattID_nTracks_1st_afterOR) {
96  info->nTracks_1st_per_patt_afterOR.push_back(ntrack);
97  }
98 
99  info->nConstants_1st_fitter = sectID_nTracks_1st.size();
100  info->nConstants_1st_passChi2 = sectID_nTracks_1st_passChi2.size();
101  info->nConstants_1st_afterOR = sectID_nTracks_1st_afterOR.size();
102 
103  if (m_runSecondStage) {
104  info->nRoads_2nd_total = roads_2nd.size();
105 
106  std::unordered_map<int, size_t> sectID_nTracks_2nd;
107  std::unordered_map<int, size_t> sectID_nTracks_2nd_passChi2;
108  std::unordered_map<int, size_t> sectID_nTracks_2nd_afterOR;
109 
110  info->nTracks_2nd_total = tracks_2nd.size();
111  for (FPGATrackSimTrack const & t : tracks_2nd) {
112  if (t.getChi2ndof() <= m_cut_chi2ndof) {
113  info->nTracks_2nd_passChi2++;
114  sectID_nTracks_2nd_passChi2[t.getSecondSectorID()]++;
115  }
116  if (t.passedOR() == 1) {
117  info->nTracks_2nd_afterOR++;
118  sectID_nTracks_2nd_afterOR[t.getSecondSectorID()]++;
119  }
120  sectID_nTracks_2nd[t.getSecondSectorID()]++;
121  }
122 
123  info->nConstants_2nd_fitter = sectID_nTracks_2nd.size();
124  info->nConstants_2nd_passChi2 = sectID_nTracks_2nd_passChi2.size();
125  info->nConstants_2nd_afterOR = sectID_nTracks_2nd_afterOR.size();
126  }
127 
128  for (FPGATrackSimTruthTrack const & truth_t : header_1st->optional().getTruthTracks()) {
129  if (m_evtSel->passCuts(truth_t)) info->nTruthTracks++;
130  }
131 
132  for (FPGATrackSimOfflineTrack const & offline_t : header_1st->optional().getOfflineTracks()) {
133  if (m_evtSel->passCuts(offline_t)) info->nOfflineTracks++;
134  }
135 
136  if (info->nOfflineTracks > 0) {
137  info->nTracks_1st_over_nOfflineTracks = (float)tracks_1st.size() / (float)info->nOfflineTracks;
138  if (m_runSecondStage) info->nTracks_2nd_over_nOfflineTracks = (float)tracks_2nd.size() / (float)info->nOfflineTracks;
139  }
140 
142 
143  return StatusCode::SUCCESS;
144 }

◆ clearHistDir()

void FPGATrackSimDataFlowTool::clearHistDir ( )
inlineprivate

Definition at line 58 of file FPGATrackSimDataFlowTool.h.

58 { m_dir = ""; }

◆ declareGaudiProperty() [1/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyArrayType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKeyArray>

Definition at line 170 of file AthCommonDataStore.h.

172  {
173  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
174  hndl.value(),
175  hndl.documentation());
176 
177  }

◆ declareGaudiProperty() [2/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158  {
159  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
160  hndl.value(),
161  hndl.documentation());
162 
163  }

◆ declareGaudiProperty() [3/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleBase>

Definition at line 184 of file AthCommonDataStore.h.

186  {
187  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
188  hndl.value(),
189  hndl.documentation());
190  }

◆ declareGaudiProperty() [4/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  t,
const SG::NotHandleType  
)
inlineprivateinherited

specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray>

Definition at line 199 of file AthCommonDataStore.h.

200  {
201  return PBASE::declareProperty(t);
202  }

◆ declareProperty() [1/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleBase hndl,
const std::string &  doc,
const SG::VarHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleBase. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 245 of file AthCommonDataStore.h.

249  {
250  this->declare(hndl.vhKey());
251  hndl.vhKey().setOwner(this);
252 
253  return PBASE::declareProperty(name,hndl,doc);
254  }

◆ declareProperty() [2/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKey hndl,
const std::string &  doc,
const SG::VarHandleKeyType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleKey. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 221 of file AthCommonDataStore.h.

225  {
226  this->declare(hndl);
227  hndl.setOwner(this);
228 
229  return PBASE::declareProperty(name,hndl,doc);
230  }

◆ declareProperty() [3/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKeyArray hndArr,
const std::string &  doc,
const SG::VarHandleKeyArrayType  
)
inlineinherited

Definition at line 259 of file AthCommonDataStore.h.

263  {
264 
265  // std::ostringstream ost;
266  // ost << Algorithm::name() << " VHKA declareProp: " << name
267  // << " size: " << hndArr.keys().size()
268  // << " mode: " << hndArr.mode()
269  // << " vhka size: " << m_vhka.size()
270  // << "\n";
271  // debug() << ost.str() << endmsg;
272 
273  hndArr.setOwner(this);
274  m_vhka.push_back(&hndArr);
275 
276  Gaudi::Details::PropertyBase* p = PBASE::declareProperty(name, hndArr, doc);
277  if (p != 0) {
278  p->declareUpdateHandler(&AthCommonDataStore<PBASE>::updateVHKA, this);
279  } else {
280  ATH_MSG_ERROR("unable to call declareProperty on VarHandleKeyArray "
281  << name);
282  }
283 
284  return p;
285 
286  }

◆ declareProperty() [4/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc,
const SG::NotHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This is the generic version, for types that do not derive from SG::VarHandleKey. It just forwards to the base class version of declareProperty.

Definition at line 333 of file AthCommonDataStore.h.

337  {
338  return PBASE::declareProperty(name, property, doc);
339  }

◆ declareProperty() [5/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc = "none" 
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This dispatches to either the generic declareProperty or the one for VarHandle/Key/KeyArray.

Definition at line 352 of file AthCommonDataStore.h.

355  {
356  typedef typename SG::HandleClassifier<T>::type htype;
357  return declareProperty (name, property, doc, htype());
358  }

◆ declareProperty() [6/6]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( Gaudi::Property< T > &  t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145  {
146  typedef typename SG::HandleClassifier<T>::type htype;
148  }

◆ detStore()

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

95 { return m_detStore; }

◆ evtStore() [1/2]

ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

85 { return m_evtStore; }

◆ evtStore() [2/2]

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( ) const
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 90 of file AthCommonDataStore.h.

90 { return m_evtStore; }

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase &  ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ finalize()

StatusCode FPGATrackSimDataFlowTool::finalize ( )
overridevirtual

Definition at line 325 of file FPGATrackSimDataFlowTool.cxx.

326 {
327  ATH_MSG_INFO("FPGATrackSimDataFlowTool::finalize()");
329  return StatusCode::SUCCESS;
330 }

◆ findAndReplaceAll()

void FPGATrackSimDataFlowTool::findAndReplaceAll ( std::string &  data,
std::string const toFind,
std::string const replaceStr 
) const
private

Definition at line 481 of file FPGATrackSimDataFlowTool.cxx.

482 {
483  size_t pos = data.find(toFind);
484  while (pos != std::string::npos) {
485  data.replace(pos, toFind.size(), replaceStr);
486  pos = data.find(toFind, pos + replaceStr.size());
487  }
488 }

◆ getDataFlowInfo()

StatusCode FPGATrackSimDataFlowTool::getDataFlowInfo ( FPGATrackSimDataFlowInfo const info)

Definition at line 148 of file FPGATrackSimDataFlowTool.cxx.

149 {
150  m_nEvents++;
151 
152  for (size_t i = 0; i < m_nLayers_1st; i++) {
153  ATH_CHECK(addDataFlow(info.nMappedHits_1st_layer[i], "nMappedHitsL" + std::to_string(i) + "_1st"));
154  }
155  ATH_CHECK(addDataFlow(info.nMappedHits_1st_total, "nMappedHits_1st per layer")); // We fill the total number here. It will be divided by the number of layers later.
156 
157  for (size_t i = 0; i < m_nLayers_1st; i++) {
158  ATH_CHECK(addDataFlow(info.nClusters_1st_layer[i], "nClustersL" + std::to_string(i) + "_1st"));
159  }
160  ATH_CHECK(addDataFlow(info.nClusters_1st_total, "nClusters_1st per layer")); // We fill the total number here. It will be divided by the number of layers later.
161 
162  ATH_CHECK(addDataFlow(info.nRoads_1st_total, "nRoads_1st(Total)"));
163  ATH_CHECK(addDataFlow(info.nRoads_1st_7hits, "nRoads_1st(7/8)"));
164  ATH_CHECK(addDataFlow(info.nRoads_1st_8hits, "nRoads_1st(8/8)"));
165 
166  ATH_CHECK(addDataFlow(info.nTracks_1st_total, "nTracks_1st(Total)"));
167  ATH_CHECK(addDataFlow(info.nTracks_1st_passChi2, "nTracks_1st(Chi2ndof<40)"));
168  ATH_CHECK(addDataFlow(info.nTracks_1st_afterOR, "nTracks_1st(passing OR)"));
169 
170  for (size_t n : info.nTracks_1st_per_patt_total) {
171  ATH_CHECK(addDataFlow(n, "nTracks_1st per patt(Total)"));
172  }
173  for (size_t n : info.nTracks_1st_per_patt_passChi2) {
174  ATH_CHECK(addDataFlow(n, "nTracks_1st per patt(Chi2ndof<40)"));
175  }
176  for (size_t n : info.nTracks_1st_per_patt_afterOR) {
177  ATH_CHECK(addDataFlow(n, "nTracks_1st per patt(passing OR)"));
178  }
179 
180  ATH_CHECK(addDataFlow(info.nConstants_1st_fitter, "nConstants_1st(Fitter)"));
181  ATH_CHECK(addDataFlow(info.nConstants_1st_passChi2, "nConstants_1st(Chi2ndof<40)"));
182  ATH_CHECK(addDataFlow(info.nConstants_1st_afterOR, "nConstants_1st(after OR)"));
183 
184  if (m_runSecondStage) {
185  ATH_CHECK(addDataFlow(info.nRoads_2nd_total, "nRoads_2nd(Total)"));
186 
187  ATH_CHECK(addDataFlow(info.nTracks_2nd_total, "nTracks_2nd(Total)"));
188  ATH_CHECK(addDataFlow(info.nTracks_2nd_passChi2, "nTracks_2nd(Chi2ndof<40)"));
189  ATH_CHECK(addDataFlow(info.nTracks_2nd_afterOR, "nTracks_2nd(passing OR)"));
190 
191  ATH_CHECK(addDataFlow(info.nConstants_2nd_extrapolate, "nConstants_2nd(Extrapolate)"));
192  ATH_CHECK(addDataFlow(info.nConstants_2nd_fitter, "nConstants_2nd(Fitter)"));
193  ATH_CHECK(addDataFlow(info.nConstants_2nd_passChi2, "nConstants_2nd(Chi2ndof<40)"));
194  ATH_CHECK(addDataFlow(info.nConstants_2nd_afterOR, "nConstants_2nd(after OR)"));
195  }
196 
197  ATH_CHECK(addDataFlow(info.nTruthTracks, "nTruthTracks"));
198  ATH_CHECK(addDataFlow(info.nOfflineTracks, "nOfflineTracks"));
199 
200  if (info.nOfflineTracks > 0) {
201  ATH_CHECK(addDataFlow(info.nTracks_1st_over_nOfflineTracks, "nTracks_1st(Total)/nOfflineTracks", false));
202  if (m_runSecondStage) {
203  ATH_CHECK(addDataFlow(info.nTracks_2nd_over_nOfflineTracks, "nTracks_2nd(Total)/nOfflineTracks", false));
204  }
205  }
206 
207  return StatusCode::SUCCESS;
208 }

◆ getHistDir()

std::string const& FPGATrackSimDataFlowTool::getHistDir ( )
inlineprivate

Definition at line 57 of file FPGATrackSimDataFlowTool.h.

57 { return m_dir; }

◆ initialize()

StatusCode FPGATrackSimDataFlowTool::initialize ( )
overridevirtual

Definition at line 25 of file FPGATrackSimDataFlowTool.cxx.

26 {
27  ATH_MSG_INFO("FPGATrackSimDataFlowTool::initialize()");
28 
29  ATH_CHECK(m_tHistSvc.retrieve());
30  ATH_CHECK(m_FPGATrackSimMapping.retrieve());
31  ATH_CHECK(m_evtSel.retrieve());
32 
33  m_nLayers_1st = m_FPGATrackSimMapping->PlaneMap_1st()->getNLogiLayers();
34 
37 
38  return StatusCode::SUCCESS;
39 }

◆ inputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< AlgTool > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ makeDataFlowTable()

StatusCode FPGATrackSimDataFlowTool::makeDataFlowTable ( )
private

Definition at line 212 of file FPGATrackSimDataFlowTool.cxx.

213 {
214  m_dataFlowTxt << std::left << std::setw(m_tableTypeWidth) << "Type"
215  << std::setw(m_tableDataWidth) << "Stage"
216  << std::setw(m_tableDataWidth) << "Mean"
217  << std::setw(m_tableDataWidth) << "RMS"
218  << std::setw(m_tableDataWidth) << "RMS95"
219  << std::setw(m_tableDataWidth) << "Min"
220  << std::setw(m_tableDataWidth) << "Max" << std::endl;
221 
222  m_dataFlowTeX << "\\documentclass[12pt]{article}" << std::endl;
223  m_dataFlowTeX << "\\begin{document}" << std::endl;
224  m_dataFlowTeX << "\\begin{table}" << std::endl;
225  m_dataFlowTeX << "\\makebox[\\linewidth]{" << std::endl;
226  m_dataFlowTeX << "\\begin{tabular}{|c|c|c|c|c|c|c|}" << std::endl;
227  m_dataFlowTeX << "\\hline" << std::endl;
228  m_dataFlowTeX << "Type & Stage & Mean & RMS & RMS95 & Min & Max \\\\" << std::endl;
229 
230  addTableBreak();
231 
232  for (size_t i = 0; i < m_nLayers_1st; i++) {
233  ATH_CHECK(printDataFlow("nMappedHitsL" + std::to_string(i) + "_1st"));
234  }
235  ATH_CHECK(printDataFlow("nMappedHits_1st per layer", m_nLayers_1st));
236 
237  addTableBreak();
238 
239  for (size_t i = 0; i < m_nLayers_1st; i++) {
240  ATH_CHECK(printDataFlow("nClustersL" + std::to_string(i) + "_1st"));
241  }
242  ATH_CHECK(printDataFlow("nClusters_1st per layer", m_nLayers_1st));
243 
244  addTableBreak();
245 
246  ATH_CHECK(printDataFlow("nRoads_1st(Total)"));
247  ATH_CHECK(printDataFlow("nRoads_1st(7/8)"));
248  ATH_CHECK(printDataFlow("nRoads_1st(8/8)"));
249 
250  addTableBreak();
251 
252  ATH_CHECK(printDataFlow("nTracks_1st(Total)"));
253  ATH_CHECK(printDataFlow("nTracks_1st(Chi2ndof<40)"));
254  ATH_CHECK(printDataFlow("nTracks_1st(passing OR)"));
255 
256  addTableBreak();
257 
258  ATH_CHECK(printDataFlow("nTracks_1st per patt(Total)"));
259  ATH_CHECK(printDataFlow("nTracks_1st per patt(Chi2ndof<40)"));
260  ATH_CHECK(printDataFlow("nTracks_1st per patt(passing OR)"));
261 
262  addTableBreak();
263 
264  ATH_CHECK(printDataFlow("nConstants_1st(Fitter)"));
265  ATH_CHECK(printDataFlow("nConstants_1st(Chi2ndof<40)"));
266  ATH_CHECK(printDataFlow("nConstants_1st(after OR)"));
267 
268  addTableBreak();
269 
270  if (m_runSecondStage) {
271  ATH_CHECK(printDataFlow("nRoads_2nd(Total)"));
272 
273  addTableBreak();
274 
275  ATH_CHECK(printDataFlow("nTracks_2nd(Total)"));
276  ATH_CHECK(printDataFlow("nTracks_2nd(Chi2ndof<40)"));
277  ATH_CHECK(printDataFlow("nTracks_2nd(passing OR)"));
278 
279  addTableBreak();
280 
281  ATH_CHECK(printDataFlow("nConstants_2nd(Extrapolate)"));
282  ATH_CHECK(printDataFlow("nConstants_2nd(Fitter)"));
283  ATH_CHECK(printDataFlow("nConstants_2nd(Chi2ndof<40)"));
284  ATH_CHECK(printDataFlow("nConstants_2nd(after OR)"));
285 
286  addTableBreak();
287  }
288 
289  ATH_CHECK(printDataFlow("nTruthTracks"));
290  ATH_CHECK(printDataFlow("nOfflineTracks"));
291  ATH_CHECK(printDataFlow("nTracks_1st(Total)/nOfflineTracks"));
292  if (m_runSecondStage) ATH_CHECK(printDataFlow("nTracks_2nd(Total)/nOfflineTracks"));
293 
294  std::string str_sample;
295  std::string str_PU;
296 
297  switch (m_evtSel->getSampleType()) {
298  case SampleType::singleElectrons : str_sample = " single electron"; break;
299  case SampleType::singleMuons : str_sample = " single muon"; break;
300  case SampleType::singlePions : str_sample = " single pion"; break;
301  default : str_sample = ""; break;
302  }
303 
304  str_PU = m_evtSel->checkPU() ? " with pile-up" : "";
305 
306  m_dataFlowTxt << "--------------" << std::endl;
307  m_dataFlowTxt << "Data flow for " << m_nEvents << str_sample << " events" << str_PU << ". "
308  << "(" << roundTo(100. * m_max_frac, m_nSigDigits) << "%" << " acceptance)" << std::endl;
309 
310  m_dataFlowTeX << "\\hline" << std::endl;
311  m_dataFlowTeX << "\\end{tabular}}" << std::endl;
312  m_dataFlowTeX << "\\caption{Data flow for " << m_nEvents << str_sample << " events" << str_PU << ". "
313  << "(" << roundTo(100. * m_max_frac, m_nSigDigits) << "\\%" << " acceptance)} " << std::endl;
314  m_dataFlowTeX << "\\end{table}" << std::endl;
315  m_dataFlowTeX << "\\end{document}" << std::endl;
316 
317  m_dataFlowTxt.close();
318  m_dataFlowTeX.close();
319 
320  return StatusCode::SUCCESS;
321 }

◆ msg() [1/2]

MsgStream& AthCommonMsg< AlgTool >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24  {
25  return this->msgStream();
26  }

◆ msg() [2/2]

MsgStream& AthCommonMsg< AlgTool >::msg ( const MSG::Level  lvl) const
inlineinherited

Definition at line 27 of file AthCommonMsg.h.

27  {
28  return this->msgStream(lvl);
29  }

◆ msgLvl()

bool AthCommonMsg< AlgTool >::msgLvl ( const MSG::Level  lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30  {
31  return this->msgLevel(lvl);
32  }

◆ outputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< AlgTool > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ printDataFlow()

StatusCode FPGATrackSimDataFlowTool::printDataFlow ( std::string const key,
int const  div = 1 
)
private

Definition at line 409 of file FPGATrackSimDataFlowTool.cxx.

410 {
411  bool isInt = false;
412  if (m_dataFlowHistsI.find(key) != m_dataFlowHistsI.end())
413  isInt = true;
414  else if (m_dataFlowHistsF.find(key) == m_dataFlowHistsF.end())
415  return StatusCode::SUCCESS;
416 
417  double min = isInt ? m_dataFlowDataI_min.find(key)->second : m_dataFlowDataF_min.find(key)->second;
418  double max = isInt ? m_dataFlowDataI_max.find(key)->second : m_dataFlowDataF_max.find(key)->second;
419 
420  TH1* h;
421  if (isInt)
422  h = m_dataFlowHistsI.find(key)->second;
423  else
424  h = m_dataFlowHistsF.find(key)->second;
425 
427 
428  std::string str_stage = "", str_key = key;
429  if (key.find("_1st") != std::string::npos) {
430  str_stage = "FIRST";
431  str_key.erase(key.find("_1st"), std::string("_1st").length());
432  }
433  else if (key.find("_2nd") != std::string::npos) {
434  str_stage = "SECOND";
435  str_key.erase(key.find("_2nd"), std::string("_2nd").length());
436  }
437  else {
438  str_stage = "UNKNOWN";
439  }
440 
441  double mean = h->GetMean() / div;
442  double rms = h->GetRMS() / div;
443  double rms95_n = rms95(h) / div;
444  min = min / div;
445  max = max / div;
446 
447  m_dataFlowTxt << std::left << std::setw(m_tableTypeWidth) << str_key
448  << std::setw(m_tableDataWidth) << str_stage
449  << std::setw(m_tableDataWidth) << roundTo(mean, m_nSigDigits)
450  << std::setw(m_tableDataWidth) << roundTo(rms, m_nSigDigits)
451  << std::setw(m_tableDataWidth) << roundTo(rms95_n, m_nSigDigits)
452  << std::setw(m_tableDataWidth) << roundTo(min, m_nSigDigits)
453  << std::setw(m_tableDataWidth) << roundTo(max, m_nSigDigits) << std::endl;
454 
455  // Replace all "<" by "$<$" in the key to make the type text for tex.
456  // If there are other characters in the future, we can make a vector to store all of them.
457  std::string key_tex = str_key;
458  findAndReplaceAll(key_tex, "<", "$<$");
459 
460  m_dataFlowTeX << key_tex << " & " << str_stage << " & " << roundTo(mean, m_nSigDigits)
461  << " & " << roundTo(rms, m_nSigDigits)
462  << " & " << roundTo(rms95(h), m_nSigDigits)
463  << " & " << roundTo(min, m_nSigDigits)
464  << " & " << roundTo(max, m_nSigDigits) << " \\\\" << std::endl;
465 
466  return StatusCode::SUCCESS;
467 }

◆ regHist()

StatusCode FPGATrackSimDataFlowTool::regHist ( std::string const dir,
TH1 h 
)
inlineprivate

Definition at line 59 of file FPGATrackSimDataFlowTool.h.

59 { return m_tHistSvc->regHist (dir + h->GetName(), h); }

◆ renounce()

std::enable_if_t<std::is_void_v<std::result_of_t<decltype(&T::renounce)(T)> > && !std::is_base_of_v<SG::VarHandleKeyArray, T> && std::is_base_of_v<Gaudi::DataHandle, T>, void> AthCommonDataStore< AthCommonMsg< AlgTool > >::renounce ( T &  h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381  {
382  h.renounce();
383  PBASE::renounce (h);
384  }

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::renounceArray ( SG::VarHandleKeyArray handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364  {
365  handlesArray.renounce();
366  }

◆ roundTo()

double FPGATrackSimDataFlowTool::roundTo ( double const  v,
int const  nSigDigits 
) const
private

Definition at line 507 of file FPGATrackSimDataFlowTool.cxx.

508 {
509  int sigDigit = v != 0 ? trunc(log10(fabs(v))) : 0;
510  if (nSigDigits >= 1) {
511  double factor = pow(10., nSigDigits - sigDigit - 1);
512  return round(v * factor) / factor;
513  }
514 
515  return v;
516 }

◆ setHistDir()

void FPGATrackSimDataFlowTool::setHistDir ( std::string const dir)
inlineprivate

Definition at line 56 of file FPGATrackSimDataFlowTool.h.

56 { m_dir = "/MONITOROUT" + dir; }

◆ setMaxAcceptance()

void FPGATrackSimDataFlowTool::setMaxAcceptance ( TH1 h,
double const  max_frac,
double &  max_value 
) const
private

Definition at line 492 of file FPGATrackSimDataFlowTool.cxx.

493 {
494  double total = h->Integral();
495  for (int i = 1; i <= h->GetNbinsX(); i++) {
496  double partial = h->Integral(1, i);
497  if (partial / total > max_frac) {
498  max_value = h->GetBinCenter(i);
499  h->GetXaxis()->SetRange(1, i);
500  break;
501  }
502  }
503 }

◆ sysInitialize()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysInitialize ( )
overridevirtualinherited

Perform system initialization for an algorithm.

We override this to declare all the elements of handle key arrays at the end of initialization. See comments on updateVHKA.

Reimplemented in DerivationFramework::CfAthAlgTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and asg::AsgMetadataTool.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::updateVHKA ( Gaudi::Details::PropertyBase &  )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308  {
309  // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310  // << " size: " << m_vhka.size() << endmsg;
311  for (auto &a : m_vhka) {
312  std::vector<SG::VarHandleKey*> keys = a->keys();
313  for (auto k : keys) {
314  k->setOwner(this);
315  }
316  }
317  }

Member Data Documentation

◆ m_cut_chi2ndof

Gaudi::Property<float> FPGATrackSimDataFlowTool::m_cut_chi2ndof {this, "Chi2ndofCut", 40., "cut on Chi2 of FPGATrackSimTrack"}
private

Definition at line 68 of file FPGATrackSimDataFlowTool.h.

◆ m_dataFlowDataF_max

std::unordered_map<std::string, float> FPGATrackSimDataFlowTool::m_dataFlowDataF_max
private

Definition at line 91 of file FPGATrackSimDataFlowTool.h.

◆ m_dataFlowDataF_min

std::unordered_map<std::string, float> FPGATrackSimDataFlowTool::m_dataFlowDataF_min
private

Definition at line 90 of file FPGATrackSimDataFlowTool.h.

◆ m_dataFlowDataI_max

std::unordered_map<std::string, int> FPGATrackSimDataFlowTool::m_dataFlowDataI_max
private

Definition at line 89 of file FPGATrackSimDataFlowTool.h.

◆ m_dataFlowDataI_min

std::unordered_map<std::string, int> FPGATrackSimDataFlowTool::m_dataFlowDataI_min
private

Definition at line 88 of file FPGATrackSimDataFlowTool.h.

◆ m_dataFlowHistsF

std::unordered_map<std::string, TH1F*> FPGATrackSimDataFlowTool::m_dataFlowHistsF
private

Definition at line 94 of file FPGATrackSimDataFlowTool.h.

◆ m_dataFlowHistsI

std::unordered_map<std::string, TH1I*> FPGATrackSimDataFlowTool::m_dataFlowHistsI
private

Definition at line 93 of file FPGATrackSimDataFlowTool.h.

◆ m_dataFlowTeX

std::ofstream FPGATrackSimDataFlowTool::m_dataFlowTeX
private

Definition at line 74 of file FPGATrackSimDataFlowTool.h.

◆ m_dataFlowTeXName

std::string const FPGATrackSimDataFlowTool::m_dataFlowTeXName = "./dataflow.tex"
private

Definition at line 72 of file FPGATrackSimDataFlowTool.h.

◆ m_dataFlowTxt

std::ofstream FPGATrackSimDataFlowTool::m_dataFlowTxt
private

Definition at line 73 of file FPGATrackSimDataFlowTool.h.

◆ m_dataFlowTxtName

std::string const FPGATrackSimDataFlowTool::m_dataFlowTxtName = "./dataflow.txt"
private

Definition at line 71 of file FPGATrackSimDataFlowTool.h.

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_dir

std::string FPGATrackSimDataFlowTool::m_dir
private

Definition at line 77 of file FPGATrackSimDataFlowTool.h.

◆ m_evtSel

ServiceHandle<IFPGATrackSimEventSelectionSvc> FPGATrackSimDataFlowTool::m_evtSel {this,"FPGATrackSimEventSelectionSvc","FPGATrackSimEventSelectionSvc"}
private

Definition at line 63 of file FPGATrackSimDataFlowTool.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_FPGATrackSimMapping

ServiceHandle<IFPGATrackSimMappingSvc> FPGATrackSimDataFlowTool::m_FPGATrackSimMapping {this,"FPGATrackSimMappingSvc","FPGATrackSimMappingSvc"}
private

Definition at line 62 of file FPGATrackSimDataFlowTool.h.

◆ m_max_frac

double const FPGATrackSimDataFlowTool::m_max_frac = 0.99
private

Definition at line 86 of file FPGATrackSimDataFlowTool.h.

◆ m_nEvents

size_t FPGATrackSimDataFlowTool::m_nEvents = 0
private

Definition at line 79 of file FPGATrackSimDataFlowTool.h.

◆ m_nLayers_1st

unsigned FPGATrackSimDataFlowTool::m_nLayers_1st = 0U
private

Definition at line 80 of file FPGATrackSimDataFlowTool.h.

◆ m_nSigDigits

unsigned const FPGATrackSimDataFlowTool::m_nSigDigits = 2
private

Definition at line 83 of file FPGATrackSimDataFlowTool.h.

◆ m_outputtag

Gaudi::Property<std::string> FPGATrackSimDataFlowTool::m_outputtag {this, "outputTag", "", "Extra string to use in output folder names - default none"}
private

Definition at line 67 of file FPGATrackSimDataFlowTool.h.

◆ m_runSecondStage

Gaudi::Property<bool> FPGATrackSimDataFlowTool::m_runSecondStage {this, "RunSecondStage", false, "flag to enable running the second stage fitting"}
private

Definition at line 66 of file FPGATrackSimDataFlowTool.h.

◆ m_tableDataWidth

unsigned const FPGATrackSimDataFlowTool::m_tableDataWidth = 9
private

Definition at line 85 of file FPGATrackSimDataFlowTool.h.

◆ m_tableTypeWidth

unsigned const FPGATrackSimDataFlowTool::m_tableTypeWidth = 32
private

Definition at line 84 of file FPGATrackSimDataFlowTool.h.

◆ m_tHistSvc

ServiceHandle<ITHistSvc> FPGATrackSimDataFlowTool::m_tHistSvc {this,"THistSvc","THistSvc"}
private

Definition at line 61 of file FPGATrackSimDataFlowTool.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< AlgTool > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files:
grepfile.info
info
Definition: grepfile.py:38
beamspotman.r
def r
Definition: beamspotman.py:676
data
char data[hepevt_bytes_allocation_ATLAS]
Definition: HepEvt.cxx:11
getMenu.algname
algname
Definition: getMenu.py:53
mean
void mean(std::vector< double > &bins, std::vector< double > &values, const std::vector< std::string > &files, const std::string &histname, const std::string &tplotname, const std::string &label="")
Definition: dependence.cxx:254
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
max
#define max(a, b)
Definition: cfImp.cxx:41
FPGATrackSimDataFlowTool::m_nLayers_1st
unsigned m_nLayers_1st
Definition: FPGATrackSimDataFlowTool.h:80
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
ID
std::vector< Identifier > ID
Definition: CalibHitIDCheck.h:24
FPGATrackSimCluster
Definition: FPGATrackSimCluster.h:25
FPGATrackSimDataFlowTool::m_FPGATrackSimMapping
ServiceHandle< IFPGATrackSimMappingSvc > m_FPGATrackSimMapping
Definition: FPGATrackSimDataFlowTool.h:62
FPGATrackSimTrack
Definition: FPGATrackSimTrack.h:16
TH1I
Definition: rootspy.cxx:332
dqt_zlumi_pandas.hname
string hname
Definition: dqt_zlumi_pandas.py:272
AthCommonDataStore::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
FPGATrackSimTruthTrack
Definition: FPGATrackSimTruthTrack.h:13
conifer::pow
constexpr int pow(int x)
Definition: conifer.h:20
FPGATrackSimDataFlowTool::makeDataFlowTable
StatusCode makeDataFlowTable()
Definition: FPGATrackSimDataFlowTool.cxx:212
MuonGM::round
float round(const float toRound, const unsigned int decimals)
Definition: Mdt.cxx:27
FPGATrackSimDataFlowTool::m_dataFlowDataI_max
std::unordered_map< std::string, int > m_dataFlowDataI_max
Definition: FPGATrackSimDataFlowTool.h:89
FPGATrackSimDataFlowTool::m_dataFlowHistsI
std::unordered_map< std::string, TH1I * > m_dataFlowHistsI
Definition: FPGATrackSimDataFlowTool.h:93
FPGATrackSimDataFlowTool::addTableBreak
void addTableBreak(unsigned const n=1)
Definition: FPGATrackSimDataFlowTool.cxx:471
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
SampleType::singleElectrons
@ singleElectrons
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
FPGATrackSimDataFlowTool::m_evtSel
ServiceHandle< IFPGATrackSimEventSelectionSvc > m_evtSel
Definition: FPGATrackSimDataFlowTool.h:63
FPGATrackSimDataFlowTool::m_tHistSvc
ServiceHandle< ITHistSvc > m_tHistSvc
Definition: FPGATrackSimDataFlowTool.h:61
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
FPGATrackSimHit
Definition: FPGATrackSimHit.h:38
FPGATrackSimDataFlowTool::m_dataFlowTeXName
std::string const m_dataFlowTeXName
Definition: FPGATrackSimDataFlowTool.h:72
FPGATrackSimDataFlowTool::m_tableDataWidth
unsigned const m_tableDataWidth
Definition: FPGATrackSimDataFlowTool.h:85
FPGATrackSimDataFlowTool::getHistDir
std::string const & getHistDir()
Definition: FPGATrackSimDataFlowTool.h:57
FPGATrackSimDataFlowTool::roundTo
double roundTo(double const v, int const nSigDigits) const
Definition: FPGATrackSimDataFlowTool.cxx:507
FPGATrackSimDataFlowTool::addDataFlow
StatusCode addDataFlow(float const n, std::string const &key, bool const isInt=true)
Definition: FPGATrackSimDataFlowTool.cxx:334
AthCommonDataStore
Definition: AthCommonDataStore.h:52
FPGATrackSimDataFlowTool::m_cut_chi2ndof
Gaudi::Property< float > m_cut_chi2ndof
Definition: FPGATrackSimDataFlowTool.h:68
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
lumiFormat.i
int i
Definition: lumiFormat.py:92
FPGATrackSimDataFlowTool::m_runSecondStage
Gaudi::Property< bool > m_runSecondStage
Definition: FPGATrackSimDataFlowTool.h:66
FPGATrackSimDataFlowTool::clearHistDir
void clearHistDir()
Definition: FPGATrackSimDataFlowTool.h:58
FPGATrackSimDataFlowTool::getDataFlowInfo
StatusCode getDataFlowInfo(FPGATrackSimDataFlowInfo const &info)
Definition: FPGATrackSimDataFlowTool.cxx:148
beamspotman.n
n
Definition: beamspotman.py:731
extractSporadic.h
list h
Definition: extractSporadic.py:97
FPGATrackSimDataFlowTool::setMaxAcceptance
void setMaxAcceptance(TH1 *h, double const max_frac, double &max_value) const
Definition: FPGATrackSimDataFlowTool.cxx:492
FPGATrackSimDataFlowTool::m_tableTypeWidth
unsigned const m_tableTypeWidth
Definition: FPGATrackSimDataFlowTool.h:84
FPGATrackSimDataFlowTool::m_dataFlowDataF_max
std::unordered_map< std::string, float > m_dataFlowDataF_max
Definition: FPGATrackSimDataFlowTool.h:91
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
FPGATrackSimDataFlowTool::regHist
StatusCode regHist(std::string const &dir, TH1 *h)
Definition: FPGATrackSimDataFlowTool.h:59
CxxUtils::count_ones
constexpr unsigned count_ones(unsigned x)
Count number of set bits.
Definition: bitscan.h:141
FPGATrackSimDataFlowTool::m_dataFlowHistsF
std::unordered_map< std::string, TH1F * > m_dataFlowHistsF
Definition: FPGATrackSimDataFlowTool.h:94
FPGATrackSimDataFlowTool::m_dir
std::string m_dir
Definition: FPGATrackSimDataFlowTool.h:77
FPGATrackSimOfflineTrack
Definition: FPGATrackSimOfflineTrack.h:12
AthAlgTool::AthAlgTool
AthAlgTool()
Default constructor:
beamspotman.dir
string dir
Definition: beamspotman.py:623
min
#define min(a, b)
Definition: cfImp.cxx:40
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
FPGATrackSimDataFlowTool::setHistDir
void setHistDir(std::string const &dir)
Definition: FPGATrackSimDataFlowTool.h:56
FPGATrackSimDataFlowTool::m_max_frac
double const m_max_frac
Definition: FPGATrackSimDataFlowTool.h:86
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
FPGATrackSimDataFlowTool::m_outputtag
Gaudi::Property< std::string > m_outputtag
Definition: FPGATrackSimDataFlowTool.h:67
ActsTrk::to_string
std::string to_string(const DetectorType &type)
Definition: GeometryDefs.h:34
FPGATrackSimDataFlowTool::printDataFlow
StatusCode printDataFlow(std::string const &key, int const div=1)
Definition: FPGATrackSimDataFlowTool.cxx:409
FPGATrackSimDataFlowTool::m_dataFlowTxtName
std::string const m_dataFlowTxtName
Definition: FPGATrackSimDataFlowTool.h:71
rms95
double rms95(TH1 const *h)
This function is used to calculate RMS95 value for 1D histograms.
Definition: FPGATrackSimFunctions.cxx:60
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
FPGATrackSimDataFlowTool::findAndReplaceAll
void findAndReplaceAll(std::string &data, std::string const &toFind, std::string const &replaceStr) const
Definition: FPGATrackSimDataFlowTool.cxx:481
python.PyAthena.v
v
Definition: PyAthena.py:157
FPGATrackSimDataFlowTool::m_dataFlowTxt
std::ofstream m_dataFlowTxt
Definition: FPGATrackSimDataFlowTool.h:73
a
TList * a
Definition: liststreamerinfos.cxx:10
h
TH1F
Definition: rootspy.cxx:320
FPGATrackSimDataFlowTool::m_dataFlowDataI_min
std::unordered_map< std::string, int > m_dataFlowDataI_min
Definition: FPGATrackSimDataFlowTool.h:88
TH1
Definition: rootspy.cxx:268
if
if(febId1==febId2)
Definition: LArRodBlockPhysicsV0.cxx:569
beamspotnt.rms
rms
Definition: bin/beamspotnt.py:1266
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:616
FPGATrackSimDataFlowTool::m_nSigDigits
unsigned const m_nSigDigits
Definition: FPGATrackSimDataFlowTool.h:83
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:790
python.TrigEgammaMonitorHelper.TH1F
def TH1F(name, title, nxbins, bins_par2, bins_par3=None, path='', **kwargs)
Definition: TrigEgammaMonitorHelper.py:24
python.CaloScaleNoiseConfig.default
default
Definition: CaloScaleNoiseConfig.py:79
FPGATrackSimDataFlowTool::m_nEvents
size_t m_nEvents
Definition: FPGATrackSimDataFlowTool.h:79
SampleType::singlePions
@ singlePions
FPGATrackSimDataFlowTool::m_dataFlowTeX
std::ofstream m_dataFlowTeX
Definition: FPGATrackSimDataFlowTool.h:74
SampleType::singleMuons
@ singleMuons
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
readCCLHist.float
float
Definition: readCCLHist.py:83
FPGATrackSimRoad
Definition: FPGATrackSimRoad.h:29
FPGATrackSimDataFlowTool::m_dataFlowDataF_min
std::unordered_map< std::string, float > m_dataFlowDataF_min
Definition: FPGATrackSimDataFlowTool.h:90
fitman.k
k
Definition: fitman.py:528
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37