CMS 3D CMS Logo

DegradeBend.h
Go to the documentation of this file.
1 #ifndef L1Trigger_TrackFindingTMTT_DegradeBend_h
2 #define L1Trigger_TrackFindingTMTT_DegradeBend_h
3 
5 
8 
9 #include <vector>
10 
11 class TrackerTopology;
12 
13 namespace tmtt {
14 
15  class DegradeBend {
16  /*
17  *-------------------------------------------------------------------------------------------------------------------
18  * Implements reduced bits to encode stub bend information: 3 bits for PS, 4 bits for 2S, since the Tracker
19  * doesn't have the bandwidth to output the unreduced data from the FE electronics.
20  *
21  * This obtains the stub window sizes from L1Trigger/TrackTrigger/python/TTStubAlgorithmRegister_cfi.py ,
22  * which must be loaded into the cfg file (with the same params used originally to make the stubs).
23  *
24  * The TMTT L1 tracking code can optionally tighten these windows further (cfg option "KillLowPtStubs").
25  * This gives slightly more granular encoding with Pt > 3 GeV.
26  *
27  * TMTT histograms "hisBendFEVsLayerOrRingPS" & "hisBendFEVsLayerOrRing2S" produced by the "Histos" class
28  * are useful for debugging. *-------------------------------------------------------------------------------------------------------------------
29  */
30 
31  public:
33 
34  DegradeBend(const TrackerTopology* trackerTopo, const StubFEWindows* sw, const StubAlgorithmOfficial* stubAlgo)
35  : theTrackerTopo_(trackerTopo), sw_(sw), stubAlgo_(stubAlgo) {}
36 
37  // Given the original bend, flag indicating if this is a PS or 2S module, & detector identifier,
38  // this return the degraded stub bend, a boolean indicatng if stub bend was outside the assumed window
39  // size programmed below, and an integer indicating how many values of the original bend
40  // were grouped together into this single value of the degraded bend.
41  //
42  // (Input argument windowFEnew specifies the stub window size that should be used for this stub instead
43  // of the window sizes specified in TTStubAlgorithmRegister_cfi.py , but it will ONLY replace the latter
44  // sizes if it windowFEnew is smaller. If you always want to use TTStubAlgorithmRegister_cfi.py, then
45  // std::set windowFEnew to a large number, such as 99999.).
46  void degrade(float bend,
47  bool psModule,
48  const DetId& stDetId,
49  float windowFEnew,
50  float& degradedBend,
51  unsigned int& numInGroup) const;
52 
53  private:
54  // Does the actual work of degrading the bend.
55  void work(float bend,
56  bool psModule,
57  const DetId& stDetId,
58  float windowFEnew,
59  float& degradedBend,
60  unsigned int& numInGroup,
61  unsigned int& windowHalfStrips) const;
62 
63  private:
65 
66  // Stub window sizes as encoded in L1Trigger/TrackTrigger/interface/TTStubAlgorithm_official.h
68 
69  // TTStub produce algo used to make stubs.
71  };
72 
73 } // namespace tmtt
74 #endif
Class for "official" algorithm to be used in TTStubBuilder.
const StubFEWindows * sw_
Definition: DegradeBend.h:67
DegradeBend(const TrackerTopology *trackerTopo, const StubFEWindows *sw, const StubAlgorithmOfficial *stubAlgo)
Definition: DegradeBend.h:34
const StubAlgorithmOfficial * stubAlgo_
Definition: DegradeBend.h:70
void degrade(float bend, bool psModule, const DetId &stDetId, float windowFEnew, float &degradedBend, unsigned int &numInGroup) const
Definition: DegradeBend.cc:24
const TrackerTopology * theTrackerTopo_
Definition: DegradeBend.h:64
Definition: DetId.h:17
=== This is the base class for the linearised chi-squared track fit algorithms.
Definition: Array2D.h:16
void work(float bend, bool psModule, const DetId &stDetId, float windowFEnew, float &degradedBend, unsigned int &numInGroup, unsigned int &windowHalfStrips) const
Definition: DegradeBend.cc:37
TTStubAlgorithm_official< Ref_Phase2TrackerDigi_ > StubAlgorithmOfficial
Definition: DegradeBend.h:32