ATLAS Offline Software
FPGATrackSimSpacepointRoadFilterTool.h
Go to the documentation of this file.
1 // Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
2 
3 #ifndef FPGATrackSimSPACEPOINTROADFILTERTOOL_H
4 #define FPGATrackSimSPACEPOINTROADFILTERTOOL_H
5 
17 #include "GaudiKernel/ServiceHandle.h"
19 
29 
30 
31 #include "TH1.h"
32 #include "TFile.h"
33 
34 #include <string>
35 #include <vector>
36 #include <map>
37 #include <boost/dynamic_bitset_fwd.hpp>
38 
39 class FPGATrackSimSpacepointRoadFilterTool : public extends<AthAlgTool, IFPGATrackSimRoadFilterTool>
40 {
41  public:
42 
44  // AthAlgTool
45 
46  FPGATrackSimSpacepointRoadFilterTool(const std::string&, const std::string&, const IInterface*);
47 
48  virtual StatusCode initialize() override;
49  virtual StatusCode finalize() override;
50 
52  // FPGATrackSimRoadFilterToolI
53 
54  virtual StatusCode filterRoads(const std::vector<FPGATrackSimRoad*> & prefilter_roads, std::vector<FPGATrackSimRoad*> & postfilter_roads) override;
55 
56  private:
57 
59  // Handles
60  ServiceHandle<IFPGATrackSimMappingSvc> m_FPGATrackSimMapping {this, "FPGATrackSimMappingSvc", "FPGATrackSimMappingSvc"};
61  ServiceHandle<IFPGATrackSimBankSvc> m_FPGATrackSimBankSvc {this, "FPGATrackSimBankSvc", "FPGATrackSimBankSvc"};
62 
64  // Properties
65 
66  Gaudi::Property <unsigned> m_threshold {this, "threshold", 0, "Minimum number of hit layers to accept as a road (inclusive"};
67  Gaudi::Property <unsigned> m_minSpacePlusPixel {this, "minSpacePlusPixel", 0, "Minimum number of '2D' hits to accept as a road"};
68  Gaudi::Property <unsigned> m_minSpacePlusPixel2 {this, "minSpacePlusPixel2", 0, "Minimum number of '2D' hits to accept as a road for 2nd stage"};
69  Gaudi::Property <bool> m_filtering {this, "filtering", 0, "Filter out unpaired strip hits"};
70 
72  // Event Storage
73  std::vector<FPGATrackSimRoad> m_postfilter_roads;
74  std::vector<FPGATrackSimRoad> m_postfilter_roads_2nd;
76  // Convenience
77 
79  // Metadata and Monitoring
80 
85 
87  // Helpers
88 
89  bool splitRoad(FPGATrackSimRoad* initial_road);
90  unsigned setSector(FPGATrackSimRoad& road);
91  unsigned findUnique(std::vector<const FPGATrackSimHit*>& sp_in, std::vector<const FPGATrackSimHit*>& sp_out,
92  std::vector<const FPGATrackSimHit*>& unique_in, std::vector<const FPGATrackSimHit*>& unique_out,
93  std::vector<const FPGATrackSimHit*>& new_sp_in, std::vector<const FPGATrackSimHit*>& new_sp_out);
94 
95 };
96 
97 
98 #endif // FPGATrackSimSPACEPOINTROADFILTERTOOL_H
FPGATrackSimSpacepointRoadFilterTool::finalize
virtual StatusCode finalize() override
Definition: FPGATrackSimSpacepointRoadFilterTool.cxx:55
FPGATrackSimSpacepointRoadFilterTool::m_FPGATrackSimMapping
ServiceHandle< IFPGATrackSimMappingSvc > m_FPGATrackSimMapping
Definition: FPGATrackSimSpacepointRoadFilterTool.h:60
FPGATrackSimSpacepointRoadFilterTool::m_postfilter_roads_2nd
std::vector< FPGATrackSimRoad > m_postfilter_roads_2nd
Definition: FPGATrackSimSpacepointRoadFilterTool.h:74
TH1I
Definition: rootspy.cxx:332
FPGATrackSimSpacepointRoadFilterTool::findUnique
unsigned findUnique(std::vector< const FPGATrackSimHit * > &sp_in, std::vector< const FPGATrackSimHit * > &sp_out, std::vector< const FPGATrackSimHit * > &unique_in, std::vector< const FPGATrackSimHit * > &unique_out, std::vector< const FPGATrackSimHit * > &new_sp_in, std::vector< const FPGATrackSimHit * > &new_sp_out)
Definition: FPGATrackSimSpacepointRoadFilterTool.cxx:351
IFPGATrackSimMappingSvc.h
FPGATrackSimSpacepointRoadFilterTool::m_minSpacePlusPixel
Gaudi::Property< unsigned > m_minSpacePlusPixel
Definition: FPGATrackSimSpacepointRoadFilterTool.h:67
FPGATrackSimSpacepointRoadFilterTool
Definition: FPGATrackSimSpacepointRoadFilterTool.h:40
FPGATrackSimSpacepointRoadFilterTool::splitRoad
bool splitRoad(FPGATrackSimRoad *initial_road)
Definition: FPGATrackSimSpacepointRoadFilterTool.cxx:118
FPGATrackSimSpacepointRoadFilterTool::setSector
unsigned setSector(FPGATrackSimRoad &road)
Definition: FPGATrackSimSpacepointRoadFilterTool.cxx:312
FPGATrackSimConstants.h
FPGATrackSimVectors.h
Defines several vector wrappers for homogenous multi-dimensional vectors, declared as 1D arrays for l...
FPGATrackSimSpacepointRoadFilterTool::m_minSpacePlusPixel2
Gaudi::Property< unsigned > m_minSpacePlusPixel2
Definition: FPGATrackSimSpacepointRoadFilterTool.h:68
FPGATrackSimSpacepointRoadFilterTool::m_postfilter_roads
std::vector< FPGATrackSimRoad > m_postfilter_roads
Definition: FPGATrackSimSpacepointRoadFilterTool.h:73
FPGATrackSimSpacepointRoadFilterTool::m_filtering
Gaudi::Property< bool > m_filtering
Definition: FPGATrackSimSpacepointRoadFilterTool.h:69
FPGATrackSimSpacepointRoadFilterTool::m_badRoads
TH1I * m_badRoads
Definition: FPGATrackSimSpacepointRoadFilterTool.h:82
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
AthAlgTool.h
FPGATrackSimSpacepointRoadFilterTool::m_threshold
Gaudi::Property< unsigned > m_threshold
Definition: FPGATrackSimSpacepointRoadFilterTool.h:66
FPGATrackSimSpacepointRoadFilterTool::initialize
virtual StatusCode initialize() override
Definition: FPGATrackSimSpacepointRoadFilterTool.cxx:40
IFPGATrackSimRoadFilterTool.h
Interface declaration for road filter tools.
FPGATrackSimHit.h
: FPGATrackSim-specific class to represent an hit in the detector.
FPGATrackSimSpacepointRoadFilterTool::m_inputRoads
TH1I * m_inputRoads
Definition: FPGATrackSimSpacepointRoadFilterTool.h:81
FPGATrackSimSpacepointRoadFilterTool::m_inputRoads_2nd
TH1I * m_inputRoads_2nd
Definition: FPGATrackSimSpacepointRoadFilterTool.h:83
IFPGATrackSimBankSvc.h
FPGATrackSimSpacepointRoadFilterTool::m_badRoads_2nd
TH1I * m_badRoads_2nd
Definition: FPGATrackSimSpacepointRoadFilterTool.h:84
FPGATrackSimSpacepointRoadFilterTool::filterRoads
virtual StatusCode filterRoads(const std::vector< FPGATrackSimRoad * > &prefilter_roads, std::vector< FPGATrackSimRoad * > &postfilter_roads) override
Definition: FPGATrackSimSpacepointRoadFilterTool.cxx:65
FPGATrackSimRoad.h
Defines a class for roads.
FPGATrackSimTypes.h
FPGATrackSimTrackPars.h
Structs that store the 5 track parameters.
FPGATrackSimSpacepointRoadFilterTool::m_FPGATrackSimBankSvc
ServiceHandle< IFPGATrackSimBankSvc > m_FPGATrackSimBankSvc
Definition: FPGATrackSimSpacepointRoadFilterTool.h:61
FPGATrackSimRoad
Definition: FPGATrackSimRoad.h:29
FPGATrackSimSpacepointRoadFilterTool::FPGATrackSimSpacepointRoadFilterTool
FPGATrackSimSpacepointRoadFilterTool(const std::string &, const std::string &, const IInterface *)
Definition: FPGATrackSimSpacepointRoadFilterTool.cxx:33
ServiceHandle< IFPGATrackSimMappingSvc >