Belle II Software  release-06-01-15
TrackSegmentFinder.h
1 /**************************************************************************
2  * basf2 (Belle II Analysis Software Framework) *
3  * Author: The Belle II Collaboration *
4  * *
5  * See git log for contributors and copyright holders. *
6  * This file is licensed under LGPL-3.0, see LICENSE.md. *
7  **************************************************************************/
8 
9 //-----------------------------------------------------------------------------
10 // Description : A class to find Track Segments
11 //-----------------------------------------------------------------------------
12 
13 #ifndef TRGCDCTrackSegmentFinder_FLAG_
14 #define TRGCDCTrackSegmentFinder_FLAG_
15 
16 #include <TFile.h>
17 #include <TTree.h>
18 #include <TClonesArray.h>
19 #include "trg/trg/Board.h"
20 #include "trg/trg/SignalVector.h"
21 #include "trg/trg/SignalBundle.h"
22 
23 #ifdef TRGCDC_SHORT_NAMES
24 #define TCTSFinder TRGCDCTrackSegmentFinder
25 #define TSFinder TRGCDCTrackSegmentFinder
26 #endif
27 
28 namespace Belle2 {
34  class TRGCDC;
35  class TRGCDCSegment;
36  class TRGCDCSegmentHit;
37  class TRGCDCMerger;
38 
41  : public TRGBoard,
42  public std::vector <const TRGCDCMerger*> {
43 
44  public:
46  enum boardType {
47  innerType = 0,
48  outerType = 1,
49  unknown = 999
50  };
51 
54  bool makeRootFile,
55  bool logicLUTFlag);
56 
59  const std::string& name,
61  const TRGClock& systemClock,
62  const TRGClock& dataClock,
63  const TRGClock& userClockInput,
64  const TRGClock& userClockOutput,
65  const std::vector<TRGCDCSegment*>& tsSL);
66 
69 
70 
72  void doit(std::vector<TRGCDCSegment* >& tss, const bool trackSegmentClockSimulation,
73  std::vector<TRGCDCSegmentHit* >& segmentHits, std::vector<TRGCDCSegmentHit* >* segmentHitsSL);
75  void terminate(void);
77  void saveTSInformation(std::vector<TRGCDCSegment* >& tss);
79  void saveTSFResults(std::vector<TRGCDCSegmentHit* >* segmentHitsSL);
81  void saveNNTSInformation(std::vector<TRGCDCSegment* >& tss);
82 
83 
85  const TRGCDC& _cdc;
87  double m_Trg_PI;
90 
92  std::string m_rootTSFFilename;
94  TFile* m_fileTSF;
95 
97  TTree* m_treeInputTSF = nullptr;
100  // Stores hitpattern information. 9 components
101  // [mc particle id, superlayer id, hitpattern, priorityLR, priorityPhi, secondPriorityRLR, secondPriorityRPhi, secondPriorityLLR, secondPriorityLPhi]
103  TClonesArray* m_hitPatternInformation = nullptr;
104 
106  TTree* m_treeOutputTSF = nullptr;
109  TClonesArray* m_particleEfficiency = nullptr;
111  TClonesArray* m_tsInformation = nullptr;
112 
114  TTree* m_treeNNTSF = nullptr;
116  TClonesArray* m_nnPatternInformation = nullptr;
117 
119  bool m_makeRootFile = false;
120 
121  public:
122 
124  static std::string version(void);
125 
126 // /// Make bit pattern for Inner-most Tracker
127 // static TRGState packerInnerTracker(const TRGState & input);
128 //
129 // /// Make bit pattern for Outer Tracker
130 // static TRGState packerOuterTracker(const TRGState & input);
131 //
132 // /// Make bit pattern for Inner-most EvtTime & Low Pt Tracker
133 // static TRGState packerInnerEvt(const TRGState & input);
134 //
135 // /// Make bit pattern for Outer EvtTime & Low Pt Tracker
136 // static TRGState packerOuterEvt(const TRGState & input);
137 
139  vector<TRGSignalVector*> findTSHit(TRGSignalVector* eachInput, int);
140 
142  TRGSignalVector* packerOuterTracker(vector<TRGSignalVector*>&,
143  vector<int>&,
144  const unsigned);
145 
147  TRGSignalVector* packerOuterEvt(vector<TRGSignalVector*>, vector<int>, int);
149  boardType type(void) const;
150 
152  TRGSignalBundle* outputE(void) {return _tosbE;};
154  TRGSignalBundle* outputT(void) {return _tosbT;};
155 
157  void push_back(const TRGCDCMerger*);
158 
160  void simulateBoard(void);
161 
163  void simulate(void);
164 
166  void simulate2(void);
167 
169  void hitMapInner(void);
170 
172  void hitMapOuter(void);
173 
175  void inputInner(const unsigned id,
176  const unsigned nTSF,
177  TRGSignalVector* s);
178 
180  void inputOuter(const unsigned id,
181  const unsigned nTSF,
182  TRGSignalVector* s);
183 
185  vector<TRGSignalVector*> simulateInner(const TRGSignalVector& in,
186  unsigned id);
187 
189  vector<TRGSignalVector*> simulateOuter(TRGSignalVector* in,
190  unsigned id);
191 
193  vector<TRGSignalVector*> simulateTSFOld(TRGSignalVector* in,
194  unsigned id);
195 
197  vector<TRGSignalVector*> simulateTSF(TRGSignalVector* in,
198  unsigned id);
199 
201  vector<TRGSignalVector*> simulateTSF2(TRGSignalVector* in,
202  unsigned id);
203 
205  TRGSignalVector* packerForTracker(vector<TRGSignalVector*>&,
206  vector<int>&,
207  const unsigned);
208 
210  TRGSignalVector* packerForETF(vector<TRGSignalVector*>&,
211  vector<int>&,
212  const unsigned);
214  double mkint(TRGState);
215 
217  vector<bool> mkbool(int, int);
218 
219  private:
220 
222  void simulateInner(void);
223 
225  void simulateOuter(void);
226 
228  void priorityTiming(unsigned tsfID,
229  const unsigned nTSF,
230  TRGSignalVector& s,
231  const TRGSignal& center,
232  const TRGSignal& right,
233  const TRGSignal& left) const;
234 
236  void fastestTimingInner(unsigned tsfID,
237  const unsigned nTSF,
238  TRGSignalVector& s) const;
239 
241  void fastestTimingOuter(unsigned tsfID,
242  const unsigned nTSF,
243  TRGSignalVector& s) const;
244 
246  static void addID(TRGSignalVector& s, unsigned id);
247 
248  private:
249 
252 
254  //TRGSignalBundle * _tisb;
255 
261  std::vector<TCSegment*> _tsSL;
262 
264  std::vector<TRGSignalVector*> _tsfIn;
265 
267  std::vector<TRGSignalVector*> _tsfOut;
268 
270  std::vector<TRGSignalVector*> _toBeDeleted;
271 
273  std::vector<TRGSignal* > _hitMap[5];
274 
276  std::vector<TRGSignal* > _priMap;
277 
279  std::vector<TRGSignal* > _fasMap;
280 
282  std::vector<TRGSignal* > _secMap;
283 
285  std::vector<TRGSignal* > _edg0Map;
286 
288  std::vector<TRGSignal* > _edg1Map;
289 
291  std::vector<TRGSignal* > _edg2Map;
292 
294  std::vector<TRGSignal* > _edg3Map;
295 
297  std::vector<TRGSignal* > _edg4Map;
298  };
299 
301 } // namespace Belle2
302 
303 #endif
A class to represent a trigger board.
Definition: Board.h:25
A class to represent a CDC merger board.
Definition: Merger.h:36
a class of TrackSegmentFinder in TRGCDC
TRGSignalBundle * _tosbE
Input signal bundle.
std::vector< TRGSignal * > _priMap
Internal data of the priority hit timing.
TClonesArray * m_hitPatternInformation
Stores hitpattern information.
std::vector< TRGSignal * > _edg4Map
Internal data of the edge timing information.
TRGSignalVector * packerOuterTracker(vector< TRGSignalVector * > &, vector< int > &, const unsigned)
Packing output for tracker.
vector< TRGSignalVector * > simulateTSF(TRGSignalVector *in, unsigned id)
Simulate TSF response (unified version, 2016/07/12)
std::vector< TRGSignal * > _edg0Map
Internal data of the edge timing information.
TRGSignalVector * packerForTracker(vector< TRGSignalVector * > &, vector< int > &, const unsigned)
Output packer for tracker.
TRGSignalBundle * outputE(void)
signal bundle of outputE
TTree * m_treeInputTSF
ROOT TTree for input.
TRGSignalBundle * _tosbT
Output signal bundle.
bool m_makeRootFile
make ROOT file or not
static std::string version(void)
return version
vector< TRGSignalVector * > simulateTSFOld(TRGSignalVector *in, unsigned id)
Simulate TSF response (unified version)
TRGSignalVector * packerOuterEvt(vector< TRGSignalVector * >, vector< int >, int)
Packing output for evtTime & Low pT.
TClonesArray * m_particleEfficiency
[Efficiency, Pt, # MC TS] Efficiency = -1 means that # MC TS is 0.
std::vector< TRGSignalVector * > _toBeDeleted
One time info. to be deleted in next event;.
TRGSignalVector * packerForETF(vector< TRGSignalVector * > &, vector< int > &, const unsigned)
Output packer for ETF.
std::string m_rootTSFFilename
ROOT file name string.
vector< TRGSignalVector * > findTSHit(TRGSignalVector *eachInput, int)
Use LUT for find TSHit.
TRGCDCTrackSegmentFinder(const TRGCDC &, const std::string &name, boardType type, const TRGClock &systemClock, const TRGClock &dataClock, const TRGClock &userClockInput, const TRGClock &userClockOutput, const std::vector< TRGCDCSegment * > &tsSL)
Constructor.
std::vector< TRGSignal * > _edg1Map
Internal data of the edge timing information.
TClonesArray * m_nnPatternInformation
[superlayer id, lrDriftTime, timeWire0, timeWire1, ..., ...]
vector< TRGSignalVector * > simulateTSF2(TRGSignalVector *in, unsigned id)
Simulate TSF response (unified version, state machine)
TTree * m_treeOutputTSF
ROOT TTree for output.
std::vector< TRGSignal * > _edg2Map
Internal data of the edge timing information.
TClonesArray * m_tsInformation
[SuperLayer Id, Wire Id, Priority Timing]
std::vector< TRGSignalVector * > _tsfOut
TSF response storeage.
std::vector< TRGSignal * > _hitMap[5]
Internal data of wire hit map.
TTree * m_treeNNTSF
ROOT Tree for NNTSF.
std::vector< TRGSignal * > _secMap
Internal data of the priority cell hit position flag.
std::vector< TCSegment * > _tsSL
list of TSF
std::vector< TRGSignalVector * > _tsfIn
TSF input storage.
void simulateBoard(void)
firmware simulation.
std::vector< TRGSignal * > _edg3Map
Internal data of the edge timing information.
TRGSignalBundle * outputT(void)
signal bundle of outputT
double mkint(TRGState)
tranformatoin into integer
vector< bool > mkbool(int, int)
tranformatoin into bool
vector< TRGSignalVector * > simulateOuter(TRGSignalVector *in, unsigned id)
Simulate TSF response for the inner.
bool m_logicLUTFlag
0 is Logic. 1 is LUT.
std::vector< TRGSignal * > _fasMap
Internal data of the fastest hit timing.
boardType
enum of boardType of TrackSegmentFinder
The instance of TRGCDC is a singleton.
Definition: TRGCDC.h:69
A class to represent a digitized signal. Unit is nano second.
Definition: Clock.h:38
A class to represent a bundle of SignalVectors.
Definition: SignalBundle.h:26
A class to represent a bundle of digitized signals.
Definition: SignalVector.h:26
A class to represent a digitized signal. Unit is nano second.
Definition: Signal.h:23
A class to represent a state of multi bits.
Definition: State.h:24
void fastestTimingOuter(unsigned tsfID, const unsigned nTSF, TRGSignalVector &s) const
Make TRGSignals for the fastest timing bits.
void simulateOuter(void)
Firmware simulation for the outers. yi.
void priorityTiming(unsigned tsfID, const unsigned nTSF, TRGSignalVector &s, const TRGSignal &center, const TRGSignal &right, const TRGSignal &left) const
Make TRGSignals for the priority timing bits.
void push_back(const TRGCDCMerger *)
push back the Mergers of this TSF
void inputOuter(const unsigned id, const unsigned nTSF, TRGSignalVector *s)
Creates input signals to TSF for the outer.
const std::string & name(void) const
returns name.
Definition: Board.h:109
TRGCDCTrackSegmentFinder(const TRGCDC &, bool makeRootFile, bool logicLUTFlag)
Constructor.
void simulateInner(void)
Firmware simulation for the outers. yi.
void saveTSFResults(std::vector< TRGCDCSegmentHit * > *segmentHitsSL)
save result of TSF
static void addID(TRGSignalVector &s, unsigned id)
Add TSF ID to timing signal vector for the output.
void saveTSInformation(std::vector< TRGCDCSegment * > &tss)
save the TS info
void hitMapOuter(void)
Creates the hit maps for the outer.
void simulate2(void)
Firmware simulation. Unified version of inner and outer : yi.
void doit(std::vector< TRGCDCSegment * > &tss, const bool trackSegmentClockSimulation, std::vector< TRGCDCSegmentHit * > &segmentHits, std::vector< TRGCDCSegmentHit * > *segmentHitsSL)
Member functions of doing TSF.
void inputInner(const unsigned id, const unsigned nTSF, TRGSignalVector *s)
Creates input signals to TSF for the inner.
void saveNNTSInformation(std::vector< TRGCDCSegment * > &tss)
Saves NNTS information. Only when ts is hit.
void simulate(void)
Firmware simulation. yi.
void hitMapInner(void)
Creates the hit maps for the inner.
boardType type(void) const
board type of TSF
void fastestTimingInner(unsigned tsfID, const unsigned nTSF, TRGSignalVector &s) const
Make TRGSignals for the fastest timing bits.
Abstract base class for different kinds of events.