3#ifndef FPGATrackSimGenScanMonitoring_H
4#define FPGATrackSimGenScanMonitoring_H
20#include "GaudiKernel/ServiceHandle.h"
21#include "GaudiKernel/ITHistSvc.h"
62 void parseTruthInfo(std::vector<FPGATrackSimTruthTrack>
const * truthtracks,
bool isSingleParticle);
70 std::vector<const FPGATrackSimBinUtil::StoredHit *>>
72 void fillPairingHits(std::vector<const FPGATrackSimBinUtil::StoredHit *>
const *lastlyr,
73 std::vector<const FPGATrackSimBinUtil::StoredHit *>
const *lastlastlyr);
81 void fillBinningSummary(
const std::vector<std::shared_ptr<const FPGATrackSimHit>> &hits);
83 void fillBuildGroupsWithPairs(
const std::vector<FPGATrackSimGenScanTool::IntermediateState>& states,
unsigned allowed_misses);
89 bool passedPairFilter);
92 const std::vector<FPGATrackSimGenScanTool::HitPairSet> &pairsets,
102 Gaudi::Property<std::string>
m_dir{
this,
"dir", {
"/GENSCAN/"},
"String name of output directory"};
103 Gaudi::Property<double>
m_phiScale{
this,
"phiScale", {},
"Scale for Delta Phi variable"};
104 Gaudi::Property<double>
m_etaScale{
this,
"etaScale", {},
"Scale for Delta Eta variable"};
105 Gaudi::Property<double>
m_drScale{
this,
"drScale", {},
"Scale for radius differences"};
193 "",
"_same",
"_sequential",
"_sameend",
"_skip1",
"_skip2",
"_nm1"};
230 TGraph *
initGraph(
const std::string &name);
233 void addEvent(
const std::vector<std::shared_ptr<const FPGATrackSimHit>> &hits);
234 void addEvent(
const std::vector<FPGATrackSimBinUtil::StoredHit> &hits);
235 void addEvent(
const std::vector<const FPGATrackSimBinUtil::StoredHit *> &hits);
275 template <
typename HistType,
typename... HistDef>
278 ptr =
new HistType(histargs...);
279 ATH_MSG_DEBUG(
"Booking Hist: " << ptr->GetName() <<
" min=" << ptr->GetXaxis()->GetXmin() <<
" max=" << ptr->GetXaxis()->GetXmax());
281 return StatusCode::SUCCESS;
285 template <
typename HistType,
typename... HistDef>
286 StatusCode
makeAndRegHistVector(std::vector<HistType*>&
vec,
unsigned len,
const std::vector<std::string>* namevec,
const char* namebase,
const HistDef & ... histargs)
289 for (
unsigned i = 0; i < len; i++) {
291 std::string name = std::string(namebase);
293 name += std::to_string(i);
295 if (namevec->size()==len) {
296 name += (*namevec)[i];
298 return StatusCode::FAILURE;
305 return StatusCode::SUCCESS;
#define ATH_CHECK
Evaluate an expression and check for errors.
std::vector< size_t > vec
Binning Utilities for GenScanTool.
Binning Classes for GenScanTool.
: FPGATrackSim-specific class to represent an hit in the detector.
Structs that store the 5 track parameters.
char data[hepevt_bytes_allocation_ATLAS]
eventDispSet m_allHitsGraph
void fillBinLevelOutput(const FPGATrackSimBinUtil::IdxSet &idx, const FPGATrackSimBinnedHits::BinEntry &data)
unsigned pairpairCategory(const FPGATrackSimGenScanTool::HitPair &pair, const FPGATrackSimGenScanTool::HitPair &lastpair) const
std::vector< FPGATrackSimBinUtil::IdxSet > m_truthbin
void fillPairingHits(std::vector< const FPGATrackSimBinUtil::StoredHit * > const *lastlyr, std::vector< const FPGATrackSimBinUtil::StoredHit * > const *lastlastlyr)
std::vector< int > m_tree_phimod
StatusCode registerGraphs()
FPGATrackSimBinUtil::ParSet m_truthparset
TH1D * m_truthpars_hists[5]
StatusCode makeAndRegHist(HistType *&ptr, const HistDef &... histargs)
eventDispSet m_lostPairSetFilterGraph
std::vector< TH2D * > m_rZ_allhits
std::vector< TH1D * > m_etaResidual
std::vector< unsigned > m_hitsCntByLayer
FPGATrackSimGenScanMonitoring(const std::string &, const std::string &, const IInterface *)
std::vector< TH1D * > m_phiCurvatureMax
const FPGATrackSimBinnedHits * m_binnedhits
void parseTruthInfo(std::vector< FPGATrackSimTruthTrack > const *truthtracks, bool isSingleParticle)
void fillPairFilterCuts(const FPGATrackSimGenScanTool::HitPair &pair, double r_in, double r_out)
void fillHitsByLayer(const std::vector< std::vector< const FPGATrackSimBinUtil::StoredHit * > > &hitsByLayer)
std::vector< TH1D * > m_deltaPhiByLyr
const std::string dir() const
void fillBuildGroupsWithPairs(const std::vector< FPGATrackSimGenScanTool::IntermediateState > &states, unsigned allowed_misses)
void fillHitLevelInput(const FPGATrackSimHit *hit)
eventDispSet m_lostPairFilterGraph
std::vector< TH1D * > m_etaCurvature
std::vector< int > m_tree_layer
TH1D * m_phiInExtrapCurveLimit
std::vector< int > m_tree_side
std::vector< TH1D * > m_pairSetMatchPhi
Gaudi::Property< double > m_etaScale
void pairSetFilterCheck(const FPGATrackSimGenScanTool::HitPairSet &filteredpairs, const std::vector< FPGATrackSimGenScanTool::HitPairSet > &pairsets, unsigned threshold)
eventDispSet m_passPairFilterGraph
std::vector< TH1D * > m_phiInExtrapCurved
TH2D * m_hitsPerLayer_bin
TH1D * m_phiOutExtrapCurveLimit
std::vector< TH1D * > m_deltaDeltaPhi
std::vector< float > m_tree_r
void setBinPlotsActive(const FPGATrackSimBinUtil::IdxSet &idx)
std::vector< TH1D * > m_deltaEtaCurvature
std::vector< int > m_tree_detzone
virtual StatusCode initialize() override
std::vector< TH1D * > m_deltaDeltaEta
static const std::vector< std::string > m_twoPairClasses
std::vector< TH1D * > m_deltaEtaByLyr
FPGATrackSimTrackPars m_truthpars
std::vector< TH1D * > m_hitsPerStepBin
void resetDataFlowCounters()
StatusCode makeAndRegHistVector(std::vector< HistType * > &vec, unsigned len, const std::vector< std::string > *namevec, const char *namebase, const HistDef &... histargs)
std::vector< TH1D * > m_phiCurvature
std::vector< TH1D * > m_phiTrueBinShift
void fillBinningSummary(const std::vector< std::shared_ptr< const FPGATrackSimHit > > &hits)
std::vector< TH1D * > m_pairSetMatchEta
std::vector< FPGATrackSimTruthTrack > const * m_truthtracks
Gaudi::Property< double > m_phiScale
Gaudi::Property< std::string > m_dir
std::vector< int > m_tree_dettype
std::vector< int > m_tree_id
StatusCode regGraph(TGraph *g) const
std::vector< TH1D * > m_deltaPhiCurvature
std::vector< int > m_tree_hash
std::vector< TH1D * > m_phiOutExtrapCurved
std::vector< int > m_tree_etamod
std::vector< TH1D * > m_etaTrueBinShift
Gaudi::Property< double > m_drScale
std::vector< unsigned > m_tree_bin
std::vector< TH1D * > m_phiResidual
eventDispSet m_passPairSetFilterGraph
std::vector< float > m_tree_z
StatusCode registerHistograms(const FPGATrackSimBinnedHits *binnedhits)
void pairFilterCheck(const FPGATrackSimGenScanTool::HitPairSet &pairs, const FPGATrackSimGenScanTool::HitPairSet &filteredpairs, bool passedPairFilter)
ServiceHandle< ITHistSvc > m_tHistSvc
TTree * m_bin_module_tree
void allocateDataFlowCounters()
std::vector< TH1D * > m_etaCurvatureMax
void fillPairSetFilterCut(std::vector< TH1D * > &histset, double val, const FPGATrackSimGenScanTool::HitPair &pair, const FPGATrackSimGenScanTool::HitPair &lastpair, bool nminus1)
std::vector< TGraph * > m_rPhi
std::vector< TGraph * > m_xY
std::vector< TGraph * > m_rZ
std::vector< TGraph * > m_rEta
eventDispSet(std::string name, int maxevts)
void addEvent(const std::vector< std::shared_ptr< const FPGATrackSimHit > > &hits)
void AddPoint(TGraph *g, double x, double y)
TGraph * initGraph(const std::string &name)