Belle II Software  release-05-02-19
TrackSegmentFinder.h
1 //-----------------------------------------------------------------------------
2 // $Id$
3 //-----------------------------------------------------------------------------
4 // Filename : TrackSegmentFinder.h
5 // Section : TRG CDC
6 // Owner : Jaebak Kim
7 // Email : jbkim@hep.korea.ac.kr
8 //-----------------------------------------------------------------------------
9 // Description : A class to find Track Segments
10 //-----------------------------------------------------------------------------
11 // $Log$
12 //-----------------------------------------------------------------------------
13 
14 #ifndef TRGCDCTrackSegmentFinder_FLAG_
15 #define TRGCDCTrackSegmentFinder_FLAG_
16 
17 #include <TFile.h>
18 #include <TTree.h>
19 #include <TClonesArray.h>
20 #include "trg/trg/Board.h"
21 #include "trg/trg/SignalVector.h"
22 #include "trg/trg/SignalBundle.h"
23 
24 #ifdef TRGCDC_SHORT_NAMES
25 #define TCTSFinder TRGCDCTrackSegmentFinder
26 #define TSFinder TRGCDCTrackSegmentFinder
27 #endif
28 
29 namespace Belle2 {
35  class TRGCDC;
36  class TRGCDCSegment;
37  class TRGCDCSegmentHit;
38  class TRGCDCMerger;
39 
42  : public TRGBoard,
43  public std::vector <const TRGCDCMerger*> {
44 
45  public:
47  enum boardType {
48  innerType = 0,
49  outerType = 1,
50  unknown = 999
51  };
52 
55  bool makeRootFile,
56  bool logicLUTFlag);
57 
60  const std::string& name,
62  const TRGClock& systemClock,
63  const TRGClock& dataClock,
64  const TRGClock& userClockInput,
65  const TRGClock& userClockOutput,
66  std::vector<TRGCDCSegment*>& tsSL);
67 
70 
71 
73  void doit(std::vector<TRGCDCSegment* >& tss, const bool trackSegmentClockSimulation,
74  std::vector<TRGCDCSegmentHit* >& segmentHits, std::vector<TRGCDCSegmentHit* >* segmentHitsSL);
76  void terminate(void);
78  void saveTSInformation(std::vector<TRGCDCSegment* >& tss);
80  void saveTSFResults(std::vector<TRGCDCSegmentHit* >* segmentHitsSL);
82  void saveNNTSInformation(std::vector<TRGCDCSegment* >& tss);
83 
84 
86  const TRGCDC& _cdc;
88  double m_Trg_PI;
91 
93  std::string m_rootTSFFilename;
95  TFile* m_fileTSF;
96 
98  TTree* m_treeInputTSF = 0;
101  // Stores hitpattern information. 9 components
102  // [mc particle id, superlayer id, hitpattern, priorityLR, priorityPhi, secondPriorityRLR, secondPriorityRPhi, secondPriorityLLR, secondPriorityLPhi]
104  TClonesArray* m_hitPatternInformation = 0;
105 
107  TTree* m_treeOutputTSF = 0;
110  TClonesArray* m_particleEfficiency = 0;
112  TClonesArray* m_tsInformation = 0;
113 
115  TTree* m_treeNNTSF = 0;
117  TClonesArray* m_nnPatternInformation = 0;
118 
121 
122  public:
123 
125  static std::string version(void);
126 
127 // /// Make bit pattern for Inner-most Tracker
128 // static TRGState packerInnerTracker(const TRGState & input);
129 //
130 // /// Make bit pattern for Outer Tracker
131 // static TRGState packerOuterTracker(const TRGState & input);
132 //
133 // /// Make bit pattern for Inner-most EvtTime & Low Pt Tracker
134 // static TRGState packerInnerEvt(const TRGState & input);
135 //
136 // /// Make bit pattern for Outer EvtTime & Low Pt Tracker
137 // static TRGState packerOuterEvt(const TRGState & input);
138 
140  vector<TRGSignalVector*> findTSHit(TRGSignalVector* eachInput, int);
141 
143  TRGSignalVector* packerOuterTracker(vector<TRGSignalVector*>&,
144  vector<int>&,
145  const unsigned);
146 
148  TRGSignalVector* packerOuterEvt(vector<TRGSignalVector*>, vector<int>, int);
150  boardType type(void) const;
151 
153  TRGSignalBundle* outputE(void) {return _tosbE;};
155  TRGSignalBundle* outputT(void) {return _tosbT;};
156 
158  void push_back(const TRGCDCMerger*);
159 
161  void simulateBoard(void);
162 
164  void simulate(void);
165 
167  void simulate2(void);
168 
170  void hitMapInner(void);
171 
173  void hitMapOuter(void);
174 
176  void inputInner(const unsigned id,
177  const unsigned nTSF,
178  TRGSignalVector* s);
179 
181  void inputOuter(const unsigned id,
182  const unsigned nTSF,
183  TRGSignalVector* s);
184 
186  vector<TRGSignalVector*> simulateInner(TRGSignalVector& in,
187  unsigned id);
188 
190  vector<TRGSignalVector*> simulateOuter(TRGSignalVector* in,
191  unsigned id);
192 
194  vector<TRGSignalVector*> simulateTSFOld(TRGSignalVector* in,
195  unsigned id);
196 
198  vector<TRGSignalVector*> simulateTSF(TRGSignalVector* in,
199  unsigned id);
200 
202  vector<TRGSignalVector*> simulateTSF2(TRGSignalVector* in,
203  unsigned id);
204 
206  TRGSignalVector* packerForTracker(vector<TRGSignalVector*>&,
207  vector<int>&,
208  const unsigned);
209 
211  TRGSignalVector* packerForETF(vector<TRGSignalVector*>&,
212  vector<int>&,
213  const unsigned);
215  double mkint(TRGState);
216 
218  vector<bool> mkbool(int, int);
219 
220  private:
221 
223  void simulateInner(void);
224 
226  void simulateOuter(void);
227 
229  void priorityTiming(unsigned tsfID,
230  const unsigned nTSF,
231  TRGSignalVector& s,
232  const TRGSignal& center,
233  const TRGSignal& right,
234  const TRGSignal& left) const;
235 
237  void fastestTimingInner(unsigned tsfID,
238  const unsigned nTSF,
239  TRGSignalVector& s) const;
240 
242  void fastestTimingOuter(unsigned tsfID,
243  const unsigned nTSF,
244  TRGSignalVector& s) const;
245 
247  static void addID(TRGSignalVector& s, unsigned id);
248 
249  private:
250 
253 
255  //TRGSignalBundle * _tisb;
256 
262  std::vector<TCSegment*> _tsSL;
263 
265  std::vector<TRGSignalVector*> _tsfIn;
266 
268  std::vector<TRGSignalVector*> _tsfOut;
269 
271  std::vector<TRGSignalVector*> _toBeDeleted;
272 
274  std::vector<TRGSignal* > _hitMap[5];
275 
277  std::vector<TRGSignal* > _priMap;
278 
280  std::vector<TRGSignal* > _fasMap;
281 
283  std::vector<TRGSignal* > _secMap;
284 
286  std::vector<TRGSignal* > _edg0Map;
287 
289  std::vector<TRGSignal* > _edg1Map;
290 
292  std::vector<TRGSignal* > _edg2Map;
293 
295  std::vector<TRGSignal* > _edg3Map;
296 
298  std::vector<TRGSignal* > _edg4Map;
299  };
300 
302 } // namespace Belle2
303 
304 #endif
Belle2::TRGSignal
A class to represent a digitized signal. Unit is nano second.
Definition: Signal.h:28
Belle2::TRGCDCTrackSegmentFinder::TRGCDCTrackSegmentFinder
TRGCDCTrackSegmentFinder(const TRGCDC &, bool makeRootFile, bool logicLUTFlag)
Constructor.
Definition: TrackSegmentFinder.cc:49
Belle2::TRGCDCTrackSegmentFinder::_type
boardType _type
Unit type.
Definition: TrackSegmentFinder.h:252
Belle2::TRGCDCTrackSegmentFinder::inputOuter
void inputOuter(const unsigned id, const unsigned nTSF, TRGSignalVector *s)
Creates input signals to TSF for the outer.
Definition: TrackSegmentFinder.cc:2512
Belle2::TRGBoard
A class to represent a trigger board.
Definition: Board.h:30
Belle2::TRGCDCTrackSegmentFinder::fastestTimingOuter
void fastestTimingOuter(unsigned tsfID, const unsigned nTSF, TRGSignalVector &s) const
Make TRGSignals for the fastest timing bits.
Definition: TrackSegmentFinder.cc:1477
Belle2::TRGCDCTrackSegmentFinder::m_tsInformation
TClonesArray * m_tsInformation
[SuperLayer Id, Wire Id, Priority Timing]
Definition: TrackSegmentFinder.h:112
Belle2::TRGCDCTrackSegmentFinder::simulate
void simulate(void)
Firmware simulation. yi.
Definition: TrackSegmentFinder.cc:2142
Belle2::TRGCDCTrackSegmentFinder::_edg1Map
std::vector< TRGSignal * > _edg1Map
Internal data of the edge timing information.
Definition: TrackSegmentFinder.h:289
Belle2::TRGCDCTrackSegmentFinder::packerForTracker
TRGSignalVector * packerForTracker(vector< TRGSignalVector * > &, vector< int > &, const unsigned)
Output packer for tracker.
Belle2::TRGState
A class to represent a state of multi bits.
Definition: State.h:29
Belle2::TRGCDCTrackSegmentFinder::packerOuterTracker
TRGSignalVector * packerOuterTracker(vector< TRGSignalVector * > &, vector< int > &, const unsigned)
Packing output for tracker.
Belle2::TRGCDCTrackSegmentFinder::saveTSFResults
void saveTSFResults(std::vector< TRGCDCSegmentHit * > *segmentHitsSL)
save result of TSF
Definition: TrackSegmentFinder.cc:739
Belle2::TRGCDCTrackSegmentFinder::findTSHit
vector< TRGSignalVector * > findTSHit(TRGSignalVector *eachInput, int)
Use LUT for find TSHit.
Belle2::TRGCDCTrackSegmentFinder::saveTSInformation
void saveTSInformation(std::vector< TRGCDCSegment * > &tss)
save the TS info
Definition: TrackSegmentFinder.cc:600
Belle2::TRGCDCTrackSegmentFinder::_edg2Map
std::vector< TRGSignal * > _edg2Map
Internal data of the edge timing information.
Definition: TrackSegmentFinder.h:292
Belle2::TRGCDCTrackSegmentFinder::priorityTiming
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.
Definition: TrackSegmentFinder.cc:1362
Belle2::TRGCDCTrackSegmentFinder::packerOuterEvt
TRGSignalVector * packerOuterEvt(vector< TRGSignalVector * >, vector< int >, int)
Packing output for evtTime & Low pT.
Belle2::TRGCDCTrackSegmentFinder::boardType
boardType
enum of boardType of TrackSegmentFinder
Definition: TrackSegmentFinder.h:47
Belle2::TRGCDCMerger
A class to represent a CDC merger board.
Definition: Merger.h:35
Belle2::TRGSignalBundle
A class to represent a bundle of SignalVectors.
Definition: SignalBundle.h:31
Belle2::TRGBoard::name
const std::string & name(void) const
returns name.
Definition: Board.h:114
Belle2::TRGCDCTrackSegmentFinder::hitMapOuter
void hitMapOuter(void)
Creates the hit maps for the outer.
Definition: TrackSegmentFinder.cc:2376
Belle2::TRGCDCTrackSegmentFinder::m_logicLUTFlag
bool m_logicLUTFlag
0 is Logic. 1 is LUT.
Definition: TrackSegmentFinder.h:90
Belle2::TRGCDCTrackSegmentFinder::type
boardType type(void) const
board type of TSF
Definition: TrackSegmentFinder.cc:124
Belle2::TRGCDCTrackSegmentFinder::simulateTSFOld
vector< TRGSignalVector * > simulateTSFOld(TRGSignalVector *in, unsigned id)
Simulate TSF response (unified version)
Belle2::TRGCDCTrackSegmentFinder::_fasMap
std::vector< TRGSignal * > _fasMap
Internal data of the fastest hit timing.
Definition: TrackSegmentFinder.h:280
Belle2::TRGCDCTrackSegmentFinder::_secMap
std::vector< TRGSignal * > _secMap
Internal data of the priority cell hit position flag.
Definition: TrackSegmentFinder.h:283
Belle2::TRGCDCTrackSegmentFinder::m_makeRootFile
bool m_makeRootFile
make ROOT file or not
Definition: TrackSegmentFinder.h:120
Belle2::TRGCDCTrackSegmentFinder::_cdc
const TRGCDC & _cdc
Members.
Definition: TrackSegmentFinder.h:86
Belle2::TRGCDCTrackSegmentFinder::m_treeInputTSF
TTree * m_treeInputTSF
ROOT TTree for input.
Definition: TrackSegmentFinder.h:98
Belle2::TRGCDCTrackSegmentFinder::_tsfIn
std::vector< TRGSignalVector * > _tsfIn
TSF input storage.
Definition: TrackSegmentFinder.h:265
Belle2::TRGCDCTrackSegmentFinder::_toBeDeleted
std::vector< TRGSignalVector * > _toBeDeleted
One time info. to be deleted in next event;.
Definition: TrackSegmentFinder.h:271
Belle2::TRGCDCTrackSegmentFinder::m_hitPatternInformation
TClonesArray * m_hitPatternInformation
Stores hitpattern information.
Definition: TrackSegmentFinder.h:104
Belle2::TRGCDCTrackSegmentFinder::m_rootTSFFilename
std::string m_rootTSFFilename
ROOT file name string.
Definition: TrackSegmentFinder.h:93
Belle2::TRGCDCTrackSegmentFinder::outputT
TRGSignalBundle * outputT(void)
signal bundle of outputT
Definition: TrackSegmentFinder.h:155
Belle2::TRGCDCTrackSegmentFinder::mkint
double mkint(TRGState)
tranformatoin into integer
Belle2::TRGCDCTrackSegmentFinder::m_treeOutputTSF
TTree * m_treeOutputTSF
ROOT TTree for output.
Definition: TrackSegmentFinder.h:107
Belle2::TRGCDCTrackSegmentFinder
a class of TrackSegmentFinder in TRGCDC
Definition: TrackSegmentFinder.h:41
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::TRGCDCTrackSegmentFinder::addID
static void addID(TRGSignalVector &s, unsigned id)
Add TSF ID to timing signal vector for the output.
Definition: TrackSegmentFinder.cc:2125
Belle2::TRGCDCTrackSegmentFinder::_edg4Map
std::vector< TRGSignal * > _edg4Map
Internal data of the edge timing information.
Definition: TrackSegmentFinder.h:298
Belle2::TRGCDCTrackSegmentFinder::m_Trg_PI
double m_Trg_PI
PI.
Definition: TrackSegmentFinder.h:88
Belle2::TRGCDCTrackSegmentFinder::m_nnPatternInformation
TClonesArray * m_nnPatternInformation
[superlayer id, lrDriftTime, timeWire0, timeWire1, ..., ...]
Definition: TrackSegmentFinder.h:117
Belle2::TRGCDCTrackSegmentFinder::fastestTimingInner
void fastestTimingInner(unsigned tsfID, const unsigned nTSF, TRGSignalVector &s) const
Make TRGSignals for the fastest timing bits.
Definition: TrackSegmentFinder.cc:1863
Belle2::TRGCDCTrackSegmentFinder::inputInner
void inputInner(const unsigned id, const unsigned nTSF, TRGSignalVector *s)
Creates input signals to TSF for the inner.
Definition: TrackSegmentFinder.cc:2403
Belle2::TRGCDCTrackSegmentFinder::saveNNTSInformation
void saveNNTSInformation(std::vector< TRGCDCSegment * > &tss)
Saves NNTS information. Only when ts is hit.
Definition: TrackSegmentFinder.cc:906
Belle2::TRGCDCTrackSegmentFinder::simulateTSF2
vector< TRGSignalVector * > simulateTSF2(TRGSignalVector *in, unsigned id)
Simulate TSF response (unified version, state machine)
Belle2::TRGCDCTrackSegmentFinder::_tsfOut
std::vector< TRGSignalVector * > _tsfOut
TSF response storeage.
Definition: TrackSegmentFinder.h:268
Belle2::TRGCDCTrackSegmentFinder::m_particleEfficiency
TClonesArray * m_particleEfficiency
[Efficiency, Pt, # MC TS] Efficiency = -1 means that # MC TS is 0.
Definition: TrackSegmentFinder.h:110
Belle2::TRGCDCTrackSegmentFinder::_edg0Map
std::vector< TRGSignal * > _edg0Map
Internal data of the edge timing information.
Definition: TrackSegmentFinder.h:286
Belle2::TRGCDC
The instance of TRGCDC is a singleton.
Definition: TRGCDC.h:70
Belle2::TRGCDCTrackSegmentFinder::simulateBoard
void simulateBoard(void)
firmware simulation.
Definition: TrackSegmentFinder.cc:201
Belle2::TRGCDCTrackSegmentFinder::_priMap
std::vector< TRGSignal * > _priMap
Internal data of the priority hit timing.
Definition: TrackSegmentFinder.h:277
Belle2::TRGCDCTrackSegmentFinder::simulateInner
void simulateInner(void)
Firmware simulation for the outers. yi.
Definition: TrackSegmentFinder.cc:1629
Belle2::TRGCDCTrackSegmentFinder::simulate2
void simulate2(void)
Firmware simulation. Unified version of inner and outer : yi.
Definition: TrackSegmentFinder.cc:2180
Belle2::TRGCDCTrackSegmentFinder::_hitMap
std::vector< TRGSignal * > _hitMap[5]
Internal data of wire hit map.
Definition: TrackSegmentFinder.h:274
Belle2::TRGCDCTrackSegmentFinder::simulateOuter
void simulateOuter(void)
Firmware simulation for the outers. yi.
Definition: TrackSegmentFinder.cc:1061
Belle2::TRGCDCTrackSegmentFinder::push_back
void push_back(const TRGCDCMerger *)
push back the Mergers of this TSF
Definition: TrackSegmentFinder.cc:1054
Belle2::TRGCDCTrackSegmentFinder::_tosbT
TRGSignalBundle * _tosbT
Output signal bundle.
Definition: TrackSegmentFinder.h:260
Belle2::TRGCDCTrackSegmentFinder::packerForETF
TRGSignalVector * packerForETF(vector< TRGSignalVector * > &, vector< int > &, const unsigned)
Output packer for ETF.
Belle2::TRGCDCTrackSegmentFinder::terminate
void terminate(void)
terminate
Definition: TrackSegmentFinder.cc:128
Belle2::TRGCDCTrackSegmentFinder::_tsSL
std::vector< TCSegment * > _tsSL
list of TSF
Definition: TrackSegmentFinder.h:262
Belle2::TRGCDCTrackSegmentFinder::simulateTSF
vector< TRGSignalVector * > simulateTSF(TRGSignalVector *in, unsigned id)
Simulate TSF response (unified version, 2016/07/12)
Belle2::TRGCDCTrackSegmentFinder::m_treeNNTSF
TTree * m_treeNNTSF
ROOT Tree for NNTSF.
Definition: TrackSegmentFinder.h:115
Belle2::TRGCDCTrackSegmentFinder::_tosbE
TRGSignalBundle * _tosbE
Input signal bundle.
Definition: TrackSegmentFinder.h:258
Belle2::TRGCDCTrackSegmentFinder::outputE
TRGSignalBundle * outputE(void)
signal bundle of outputE
Definition: TrackSegmentFinder.h:153
Belle2::TRGCDCTrackSegmentFinder::hitMapInner
void hitMapInner(void)
Creates the hit maps for the inner.
Definition: TrackSegmentFinder.cc:2337
Belle2::TRGCDCTrackSegmentFinder::doit
void doit(std::vector< TRGCDCSegment * > &tss, const bool trackSegmentClockSimulation, std::vector< TRGCDCSegmentHit * > &segmentHits, std::vector< TRGCDCSegmentHit * > *segmentHitsSL)
Member functions of doing TSF.
Definition: TrackSegmentFinder.cc:136
Belle2::TRGClock
A class to represent a digitized signal. Unit is nano second.
Definition: Clock.h:43
Belle2::TRGSignalVector
A class to represent a bundle of digitized signals.
Definition: SignalVector.h:31
Belle2::TRGCDCTrackSegmentFinder::~TRGCDCTrackSegmentFinder
~TRGCDCTrackSegmentFinder()
Destructor.
Definition: TrackSegmentFinder.cc:111
Belle2::TRGCDCTrackSegmentFinder::version
static std::string version(void)
return version
Belle2::TRGCDCTrackSegmentFinder::m_fileTSF
TFile * m_fileTSF
ROOT file.
Definition: TrackSegmentFinder.h:95
Belle2::TRGCDCTrackSegmentFinder::_edg3Map
std::vector< TRGSignal * > _edg3Map
Internal data of the edge timing information.
Definition: TrackSegmentFinder.h:295
Belle2::TRGCDCTrackSegmentFinder::mkbool
vector< bool > mkbool(int, int)
tranformatoin into bool