ATLAS Offline Software
FPGATrackSimHitFilteringTool.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef FPGATrackSimHITFILTERINGTOOL_H
6 #define FPGATrackSimHITFILTERINGTOOL_H
7 
8 /*
9  * httHitFiltering
10  * ---------------
11  *
12  * Routines to filter hits/clusters, based on FPGATrackSim
13  *
14  */
15 
17 
21 
23 
24 #include "TRandom3.h"
25 #include <unordered_map>
26 
27 
29 
30 class FPGATrackSimHitFilteringTool : public extends<AthAlgTool, IFPGATrackSimHitFilteringTool> {
31  public:
32  FPGATrackSimHitFilteringTool(const std::string &, const std::string &, const IInterface *);
33 
34  virtual ~FPGATrackSimHitFilteringTool() = default;
35 
36  virtual StatusCode initialize() override;
37 
39  virtual StatusCode GetPairedStripPhysLayers(const FPGATrackSimPlaneMap*, std::vector<int> &) override;
41  std::vector<int>, std::vector<int>,
42  std::vector<FPGATrackSimCluster> &) override;
43 
44  private:
45  void FilterHits(std::vector<FPGATrackSimHit> &, std::vector<int> &, std::vector<int> &, std::vector<FPGATrackSimHit> &);
46 
47  bool check_hit_stub(const FPGATrackSimHit&, const FPGATrackSimHit&, float, float);
48  void fill_cut_values(const FPGATrackSimHit&, float &, float &);
49 
50  // configuration
51  Gaudi::Property<bool> m_doRandomRemoval {this, "doRandomRemoval", false, "remove hits/clusters at random"};
52  Gaudi::Property<float> m_rndPixelHitRmFrac {this, "pixelHitRmFrac", 0.0, "fraction of pixel hits to randomly remove"};
53  Gaudi::Property<float> m_rndStripHitRmFrac {this, "stripHitRmFrac", 0.0, "fraction of strip hits to randomly remove"};
54  Gaudi::Property<float> m_rndPixelClustRmFrac {this, "pixelClusRmFrac", 0.0, "fraction of pixel clusters to randomly remove"};
55  Gaudi::Property<float> m_rndStripClustRmFrac {this, "stripClusRmFrac", 0.0, "fraction of strip clusters to randomly remove"};
56  Gaudi::Property<bool> m_doStubs {this, "doStubs", false, "flag to enable dphi stub hit filtering"};
57  Gaudi::Property<std::string> m_stubCutsFile {this, "stubsCutsFile", "", "stubs cuts file"};
58  Gaudi::Property<float> m_barrelStubDphiCut {this, "barrelStubDphiCut", 0.0, "barrel stub dPhi cut. Overridden by stubCutsFile"};
59  Gaudi::Property<float> m_endcapStubDphiCut {this, "endcapStubDphiCut", 0.0, "endcap stub dPhi cut. Overridden by stubCutsFile"};
60  Gaudi::Property<bool> m_useNstrips {this, "useNstrips", false, "use nStrips instead of dPhi for stub filtering"};
61 
62 
63  TRandom3 m_random;
64  std::unordered_map<std::string, std::unordered_map<int, std::unordered_map<int, std::pair<float,float>>>> m_stubCutMap;
65 
66 };
67 
68 #endif // FPGATrackSimHITFILTERINGTOOL_H
FPGATrackSimHitFilteringTool::m_rndPixelClustRmFrac
Gaudi::Property< float > m_rndPixelClustRmFrac
Definition: FPGATrackSimHitFilteringTool.h:54
FPGATrackSimLogicalEventInputHeader
Definition: FPGATrackSimLogicalEventInputHeader.h:21
FPGATrackSimHitFilteringTool::DoHitFiltering
virtual StatusCode DoHitFiltering(FPGATrackSimLogicalEventInputHeader &, std::vector< int >, std::vector< int >, std::vector< FPGATrackSimCluster > &) override
Definition: FPGATrackSimHitFilteringTool.cxx:215
FPGATrackSimHitFilteringTool::m_doStubs
Gaudi::Property< bool > m_doStubs
Definition: FPGATrackSimHitFilteringTool.h:56
FPGATrackSimHitFilteringTool::m_rndStripClustRmFrac
Gaudi::Property< float > m_rndStripClustRmFrac
Definition: FPGATrackSimHitFilteringTool.h:55
FPGATrackSimHitFilteringTool::fill_cut_values
void fill_cut_values(const FPGATrackSimHit &, float &, float &)
Definition: FPGATrackSimHitFilteringTool.cxx:392
IFPGATrackSimMappingSvc
Definition: IFPGATrackSimMappingSvc.h:17
FPGATrackSimHitFilteringTool::m_stubCutMap
std::unordered_map< std::string, std::unordered_map< int, std::unordered_map< int, std::pair< float, float > > > > m_stubCutMap
Definition: FPGATrackSimHitFilteringTool.h:64
FPGATrackSimHitFilteringTool::m_random
TRandom3 m_random
Definition: FPGATrackSimHitFilteringTool.h:63
FPGATrackSimHit
Definition: FPGATrackSimHit.h:38
FPGATrackSimHitFilteringTool::FPGATrackSimHitFilteringTool
FPGATrackSimHitFilteringTool(const std::string &, const std::string &, const IInterface *)
Definition: FPGATrackSimHitFilteringTool.cxx:26
FPGATrackSimHitFilteringTool::m_doRandomRemoval
Gaudi::Property< bool > m_doRandomRemoval
Definition: FPGATrackSimHitFilteringTool.h:51
FPGATrackSimHitFilteringTool::m_rndPixelHitRmFrac
Gaudi::Property< float > m_rndPixelHitRmFrac
Definition: FPGATrackSimHitFilteringTool.h:52
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
AthAlgTool.h
FPGATrackSimHitFilteringTool::m_rndStripHitRmFrac
Gaudi::Property< float > m_rndStripHitRmFrac
Definition: FPGATrackSimHitFilteringTool.h:53
FPGATrackSimHitFilteringTool::check_hit_stub
bool check_hit_stub(const FPGATrackSimHit &, const FPGATrackSimHit &, float, float)
Definition: FPGATrackSimHitFilteringTool.cxx:439
FPGATrackSimPlaneMap
Definition: FPGATrackSimPlaneMap.h:62
FPGATrackSimHit.h
: FPGATrackSim-specific class to represent an hit in the detector.
FPGATrackSimHitFilteringTool
Definition: FPGATrackSimHitFilteringTool.h:30
FPGATrackSimHitFilteringTool::m_stubCutsFile
Gaudi::Property< std::string > m_stubCutsFile
Definition: FPGATrackSimHitFilteringTool.h:57
FPGATrackSimHitFilteringTool::~FPGATrackSimHitFilteringTool
virtual ~FPGATrackSimHitFilteringTool()=default
IFPGATrackSimHitFilteringTool.h
Declares an abstract class that implements an interface for hit/cluster filtering....
FPGATrackSimHitFilteringTool::GetPairedStripPhysLayers
virtual StatusCode GetPairedStripPhysLayers(const FPGATrackSimPlaneMap *, std::vector< int > &) override
Definition: FPGATrackSimHitFilteringTool.cxx:170
FPGATrackSimHitFilteringTool::initialize
virtual StatusCode initialize() override
Definition: FPGATrackSimHitFilteringTool.cxx:32
FPGATrackSimHitFilteringTool::m_useNstrips
Gaudi::Property< bool > m_useNstrips
Definition: FPGATrackSimHitFilteringTool.h:60
FPGATrackSimLogicalEventInputHeader.h
FPGATrackSimHitFilteringTool::m_endcapStubDphiCut
Gaudi::Property< float > m_endcapStubDphiCut
Definition: FPGATrackSimHitFilteringTool.h:59
FPGATrackSimCluster.h
FPGATrackSimHitFilteringTool::m_barrelStubDphiCut
Gaudi::Property< float > m_barrelStubDphiCut
Definition: FPGATrackSimHitFilteringTool.h:58
FPGATrackSimHitFilteringTool::DoRandomRemoval
virtual StatusCode DoRandomRemoval(FPGATrackSimLogicalEventInputHeader &, bool) override
Definition: FPGATrackSimHitFilteringTool.cxx:127
FPGATrackSimHitFilteringTool::FilterHits
void FilterHits(std::vector< FPGATrackSimHit > &, std::vector< int > &, std::vector< int > &, std::vector< FPGATrackSimHit > &)
Definition: FPGATrackSimHitFilteringTool.cxx:267