19#include "GaudiKernel/ISvcLocator.h"
20#include "GaudiKernel/Service.h"
27 const std::string& dirName,
29 const std::string&
chain,
50 this,
"Tracks/Multiplicities",
m_anaTag,
85 this,
"Tracks/Efficiencies",
m_anaTag,
"truth",
false );
98 this,
"Tracks/Efficiencies/Technical",
m_anaTag,
"truth",
true );
105 this,
"Tracks/Resolutions",
m_anaTag,
133 this,
"Tracks/HitsOnTracks",
m_anaTag,
139 this,
"Tracks/HitsOnTracks",
m_anaTag,
145 this,
"Tracks/Resolutions/HitsOnTracks",
m_anaTag,
149 this,
"Tracks/Resolutions/HitsOnTracks",
m_anaTag,
155 this,
"Tracks/FakeRates/HitsOnTracks",
m_anaTag,
160 this,
"Tracks/FakeRates/Unlinked/HitsOnTracks",
m_anaTag,
169 this,
"Tracks/Parameters",
m_anaTag );
172 this,
"Tracks/Efficiencies",
m_anaTag,
true );
180 this,
"Vertices/AllPrimary/Parameters",
m_anaTag,
184 this,
"Vertices/AllPrimary/Parameters",
m_anaTag,
190 this,
"Vertices/AllPrimary/Parameters",
m_anaTag,
194 this,
"Vertices/AllPrimary/Parameters",
m_anaTag,
202 return StatusCode::SUCCESS;
212 float actualMu = trkAnaColls.
eventInfo() ?
223 truthMu, actualMu, weight ) );
229 truthMu, actualMu, weight ) );
238 truthMu, actualMu, weight ) );
244 truthMu, actualMu, weight ) );
254 truthMu, actualMu, weight ) );
259 std::vector< size_t > refTrackCounts = trkAnaColls.
refTrackCounts();
266 testTrackCounts, refTrackCounts,
272 testTrackCounts, testVertexCounts,
273 truthMu, actualMu, weight ) );
278 refTrackCounts, refVertexCounts,
279 truthMu, actualMu, weight ) );
282 return StatusCode::SUCCESS;
289template<
typename PARTICLE,
typename VERTEX >
291 const std::vector< const PARTICLE* >& particles,
293 const std::vector< const VERTEX* >& vertices,
294 float truthMu,
float actualMu,
float weight )
297 for(
const PARTICLE* particle : particles ) {
313 *particle, isMatched, truthMu, actualMu, weight ) );
323 *particle, isMatched, truthMu, actualMu, weight ) );
326 bool isTechMatched = isMatched ?
331 *particle, isTechMatched, truthMu, actualMu, weight ) );
336 bool isTechMatched = isMatched ?
341 *particle, isTechMatched, truthMu, actualMu, weight ) );
382 bool doFakes =
m_trkAnaDefSvc->unlinkedAsFakes() ? true : not isUnlinked;
403 int nGoodVertices(0);
404 for(
const VERTEX* vertex : vertices ) {
413 std::vector< const PARTICLE* > vtxTracks{};
414 std::vector< float > vtxTrackWeights{};
416 *vertex, vtxTracks, vtxTrackWeights,
418 ATH_MSG_WARNING(
"Problem when retrieving vertex-assocciated tracks" );
419 if( not vtxTracks.empty() ) {
420 ATH_MSG_WARNING(
"Invalid associated track links found. Check your input format." );
435 return StatusCode::SUCCESS;
440 const std::vector< const xAOD::TrackParticle* >& particles,
441 const ITrackMatchingLookup& matches,
442 const std::vector< const xAOD::Vertex* >& vertices,
443 float truthMu,
float actualMu,
float weight );
447 const std::vector< const xAOD::TruthParticle* >& particles,
448 const ITrackMatchingLookup& matches,
449 const std::vector< const xAOD::TruthVertex* >& vertices,
450 float truthMu,
float actualMu,
float weight );
456template<
typename PARTICLE,
typename VERTEX >
458 const std::vector< const PARTICLE* >& particles,
460 const std::vector< const VERTEX* >& vertices,
461 float truthMu,
float actualMu,
float weight )
464 for(
const PARTICLE* particle : particles ) {
481 *particle, isMatched, truthMu, actualMu, weight ) );
490 *particle, isMatched, truthMu, actualMu, weight ) );
494 bool isTechMatched =
false;
499 isTechMatched =
true;
505 *particle, isTechMatched, truthMu, actualMu, weight ) );
511 bool isTechMatched = isMatched ?
514 *particle, isTechMatched, truthMu, actualMu, weight ) );
525 *particle, nMatched, truthMu, actualMu, weight ) );
541 int nGoodVertices(0);
542 for(
const VERTEX* vertex : vertices ) {
551 std::vector< const PARTICLE* > vtxTracks{};
552 std::vector< float > vtxTrackWeights{};
554 *vertex, vtxTracks, vtxTrackWeights,
556 ATH_MSG_WARNING(
"Problem when retrieving vertex-assocciated tracks" );
557 if( not vtxTracks.empty() ) {
558 ATH_MSG_WARNING(
"Invalid associated track links found. Check your input format." );
573 return StatusCode::SUCCESS;
578 const std::vector< const xAOD::TrackParticle* >& particles,
579 const ITrackMatchingLookup& matches,
580 const std::vector< const xAOD::Vertex* >& vertices,
581 float truthMu,
float actualMu,
float weight );
585 const std::vector< const xAOD::TruthParticle* >& particles,
586 const ITrackMatchingLookup& matches,
587 const std::vector< const xAOD::TruthVertex* >& vertices,
588 float truthMu,
float actualMu,
float weight );
595 const std::vector< const xAOD::TrackParticle* >& testTracks,
596 const std::vector< const xAOD::TrackParticle* >& refTracks,
597 const std::vector< const xAOD::TruthParticle* >& truths,
599 float truthMu,
float actualMu,
float weight )
604 bool isMatched(
false );
605 bool refMatched(
false );
611 if( not linkedTruth ) {
615 if( thisTruth == linkedTruth ) {
622 if ( not refMatched )
continue;
630 if( not linkedTruth ) {
634 if( thisTruth == linkedTruth ) {
643 *thisTruth, isMatched, truthMu, actualMu, weight ) );
650 *thisTruth, isMatched , truthMu, actualMu, weight ) );
656 return StatusCode::SUCCESS;
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_WARNING(x)
Interace for TrackMatchingLookup objects (templated)
Utility methods to access offline object decorations.
Class to hold for each event collections needed in the TrkAnalsis.
class to manage (book, fill) all the plots for the processed TrackAnalysis for tracking performance v...
Utility methods to access track/truth particles parmeters in a consitent way in this package.
virtual const std::vector< const xAOD::TruthParticle * > & getMatchedTestTruths(const xAOD::TrackParticle &r) const =0
vec Truth <- Track
virtual const xAOD::TrackParticle * getMatchedRefTrack(const xAOD::TrackParticle &t) const =0
get matched reference (1 to 1) Track -> Track
virtual const xAOD::TruthParticle * getMatchedRefTruth(const xAOD::TrackParticle &t) const =0
Track -> Truth.
virtual bool isRefMatched(const xAOD::TrackParticle &r) const =0
return true if reference is matched
virtual const std::vector< const xAOD::TrackParticle * > & getMatchedTestTracks(const xAOD::TrackParticle &r) const =0
get matched test vector (1 to 1+) vec Track <- Track
virtual bool isTestMatched(const xAOD::TrackParticle &t) const =0
return true if test is matched
StatusCode initialize()
initialize
PlotMgr(const std::string &dirName, const std::string &anaTag, PlotMgr *pParent=nullptr)
Constructor taking parent node and directory name for plots pParent = nullptr by default to book plot...
const std::vector< const xAOD::TruthVertex * > & refTruthVertexVec(Stage stage=FULL)
get REFERENCE vertex vectors
const std::vector< const xAOD::TruthParticle * > & testTruthVec(Stage stage=FULL)
get TEST track vectors
std::vector< size_t > refTrackCounts()
REFERENCE.
const xAOD::TruthPileupEventContainer * truthPileupEventContainer()
bool isNewRoI()
check if this is a new RoI
const std::vector< const xAOD::Vertex * > & refRecoVertexVec(Stage stage=FULL)
REFERENCE = Reco.
const std::vector< const xAOD::TruthParticle * > & truthPartVec(Stage stage=FULL)
get truth/offline/trigger track vector (TEST or REFERENCE)
ITrackMatchingLookup & matches()
get track matching information
std::vector< size_t > refVertexCounts()
REFERENCE.
const xAOD::EventInfo * eventInfo()
get event info
const std::vector< const xAOD::TruthVertex * > & testTruthVertexVec(Stage stage=FULL)
get TEST vertex vectors
const std::vector< const xAOD::TrackParticle * > & testTrackVec(Stage stage=FULL)
TEST = Track.
const std::vector< const xAOD::TruthParticle * > & refTruthVec(Stage stage=FULL)
get REFERENCE track vectors
const std::vector< const xAOD::Vertex * > & testRecoVertexVec(Stage stage=FULL)
TEST = Reco.
std::vector< size_t > testTrackCounts()
get counts vectors for TEST/REFERENCE track vectors at all stages
std::vector< size_t > testVertexCounts()
get counts vectors for TEST/REFERENCE vertex vectors at all stages
const std::vector< const xAOD::TrackParticle * > & refTrackVec(Stage stage=FULL)
TEST = Track.
std::unique_ptr< EfficiencyPlots > m_plots_eff_vsRef
std::unique_ptr< ResolutionPlots > m_plots_resolution
resolution plots
std::unique_ptr< FakeRatePlots > m_plots_fakeRate
fake rate plots (only when reference=truth)
std::unique_ptr< NtracksPlots > m_plots_nTracks_vsRef
SmartIF< ITrackAnalysisDefinitionSvc > m_trkAnaDefSvc
TrackAnalysis definition service to "hold" the histograms configurations/flags.
std::unique_ptr< EfficiencyPlots > m_plots_tech_eff_vsRef
std::unique_ptr< SummaryPlots > m_plots_summary
Plot categories summary plots.
std::unique_ptr< OfflineElectronPlots > m_plots_offEle
plots w.r.t. reference offline electron
const std::string & anaTag() const
return members
std::unique_ptr< VertexParametersPlots > m_plots_vtxParam_vsRef
plots w.r.t. reference vertices parameters
StatusCode fillPlotsTruth(const std::vector< const xAOD::TrackParticle * > &testTracks, const std::vector< const xAOD::TrackParticle * > &refTracks, const std::vector< const xAOD::TruthParticle * > &truths, const ITrackMatchingLookup &matches, float truthMu=0., float actualMu=0., float weight=1.0)
Fill efficiency plots w.r.t. truth (for EFTruthMatch only)
std::unique_ptr< EfficiencyPlots > m_plots_tech_eff_vsTruth
std::unique_ptr< EfficiencyPlots > m_plots_tech_eff_vsTest
StatusCode fill(TrackAnalysisCollections &trkAnaColls, float weight=1.0)
General fill method.
std::unique_ptr< FakeRatePlots > m_plots_missingTruth
StatusCode fillPlotsReference(const std::vector< const PARTICLE * > &particles, const ITrackMatchingLookup &matches, const std::vector< const VERTEX * > &vertices, float truthMu=0., float actualMu=0., float weight=1.0)
Fill all plots w.r.t.
std::unique_ptr< HitsOnTracksPlots > m_plots_hitsOnUnlinkedTrk
std::unique_ptr< HitsOnTracksPlots > m_plots_hitsOnTrk_vsRef
std::unique_ptr< VertexParametersPlots > m_plots_vtxParam_vsTest
plots w.r.t. test vertices parameters
std::unique_ptr< HitsOnTracksPlots > m_plots_hitsOnTrk_vsTest
const std::string & chain() const
std::unique_ptr< HitsOnTracksPlots > m_plots_hitsOnMatchedTrk
std::unique_ptr< VertexParametersPlots > m_plots_nVtxParam_vsRef
TrackAnalysisPlotsMgr(const std::string &dirName, const std::string &anaTag, const std::string &chain, PlotMgr *pParent=nullptr)
Constructor.
std::unique_ptr< HitsOnTracksPlots > m_plots_hitsOnMatchedTrk_vsRef
std::unique_ptr< TrackParametersPlots > m_plots_trkParam_vsRef
plots w.r.t. reference tracks parameters
std::unique_ptr< EfficiencyPlots > m_plots_eff_vsTruth
plots w.r.t. efficiency plots w.r.t. truth (for EFTruthMatch only)
StatusCode initialize()
initialize
std::unique_ptr< EfficiencyPlots > m_plots_eff_vsTest
std::unique_ptr< NtracksPlots > m_plots_nTracks_vsTest
std::unique_ptr< VertexParametersPlots > m_plots_nVtxParam_vsTest
std::unique_ptr< DuplicateRatePlots > m_plots_duplRate
duplicate rate plots
StatusCode fillPlotsTest(const std::vector< const PARTICLE * > &particles, const ITrackMatchingLookup &matches, const std::vector< const VERTEX * > &vertices, float truthMu=0., float actualMu=0., float weight=1.0)
Fill all plots w.r.t.
std::unique_ptr< TrackParametersPlots > m_plots_trkParam_vsTest
plots w.r.t. test tracks parameters
std::unique_ptr< OfflineElectronPlots > m_plots_eff_vsOffEle
std::unique_ptr< HitsOnTracksPlots > m_plots_hitsOnFakeTrk
float actualInteractionsPerCrossing() const
Average interactions per crossing for the current BCID - for in-time pile-up.
bool nHitsSelVec(const PARTICLE &p, const std::vector< unsigned int > &minHits, const std::vector< float > &etaBins)
float getTruthMatchProb(const xAOD::TrackParticle &track)
getTruthMatchProb
bool getVertexTracksAndWeights(const xAOD::Vertex &vtx, std::vector< const xAOD::TrackParticle * > &vtxTracks, std::vector< float > &vtxTrackWeights, const std::vector< const xAOD::TrackParticle * > &selTracks, bool useSelected)
getVertexTracksAndWeights
const xAOD::TruthParticle * getLinkedTruth(const xAOD::TrackParticle &track, const float truthProbCut)
getLinkedTruth
bool isUnlinkedTruth(const xAOD::TrackParticle &track)
isUnlinkedTruth
int vertexType(const V &v)
@ NoVtx
Dummy vertex. TrackParticle was not used in vertex fit.
TrackParticle_v1 TrackParticle
Reference the current persistent version:
TruthParticle_v1 TruthParticle
Typedef to implementation.