"MarlinReco"  1.16.0
SiliconTrackingCLIC.h
1 #ifndef SILICONTRACKINGCLIC_H
2 #define SILICONTRACKINGCLIC_H 1
3 
4 #include "marlin/Processor.h"
5 #include "lcio.h"
6 #include <string>
7 #include <vector>
8 #include <IMPL/TrackImpl.h>
9 #include "ClusterExtended.h"
10 #include "TrackExtended.h"
11 #include "TrackerHitExtended.h"
12 #include "HelixClass.h"
13 #include "../../BrahmsTracking/include/MarlinTrackFit.h"
14 
15 using namespace lcio ;
16 using namespace marlin ;
17 
18 
179 class SiliconTrackingCLIC : public Processor {
180 
181  public:
182 
183  virtual Processor* newProcessor() { return new SiliconTrackingCLIC ; }
184 
185 
187 
191  virtual void init() ;
192 
195  virtual void processRunHeader( LCRunHeader* run ) ;
196 
199  virtual void processEvent( LCEvent * evt ) ;
200 
201 
202  virtual void check( LCEvent * evt ) ;
203 
204 
207  virtual void end() ;
208 
209 
210  protected:
211 
212  int _nRun ;
213  int _nEvt ;
214 
215  int _nDivisionsInPhi;
216  int _nDivisionsInTheta;
217  int _nLayers;
218 
219  int _nLayersFTD;
220  int _nLayersVTX;
221  int _nLayersSIT;
222  int _nPhiFTDBase;
223  int _maxNumberOfFTDCombinations;
224  int _nPhiFTD;
225 
226  std::string _VTXHitCollection;
227  std::string _FTDHitCollection;
228  std::string _SITHitCollection;
229  std::string _siTrkCollection;
230  std::string _siTrkMCPCollection;
231 
232  std::vector<TrackerHitExtendedVec> _sectors;
233  std::vector<TrackerHitExtendedVec> _sectorsFTD;
234  //MB Added vectors for larger combination of Tracks
235  TrackExtendedVec _tracks12Hits;
236  TrackExtendedVec _tracks11Hits;
237  TrackExtendedVec _tracks10Hits;
238  TrackExtendedVec _tracks9Hits;
239  TrackExtendedVec _tracks8Hits;
240  TrackExtendedVec _tracks7Hits;
241  TrackExtendedVec _tracks6Hits;
242  TrackExtendedVec _tracks5Hits;
243  TrackExtendedVec _tracks4Hits;
244  TrackExtendedVec _tracks3Hits;
245 
246  int InitialiseVTX(LCEvent * evt);
247  int InitialiseFTD(LCEvent * evt);
248  void ProcessOneSector(int iSectorPhi, int iSectorTheta);
249  void CleanUp();
250  TrackExtended * TestTriplet(TrackerHitExtended * outerHit,
251  TrackerHitExtended * middleHit,
252  TrackerHitExtended * innerHit,
253  HelixClass & helix);
254  int BuildTrack(TrackerHitExtended * outerHit,
255  TrackerHitExtended * middleHit,
256  TrackerHitExtended * innerHit,
257  HelixClass & helix,
258  int innerlayer,
259  int iPhiLow, int iPhiUp,
260  int iTheta, int iThetaUp,
261  TrackExtended * trackAR);
262 
263  void Sorting( TrackExtendedVec & trackVec);
264  void CreateTrack(TrackExtended * trackAR );
265  void AttachRemainingVTXHitsSlow();
266  void AttachRemainingFTDHitsSlow();
267  void AttachRemainingVTXHitsFast();
268  void AttachRemainingFTDHitsFast();
269  void TrackingInFTD();
270  int BuildTrackFTD(TrackExtended * trackAR, int * nLR, int iS);
271  int AttachHitToTrack(TrackExtended * trackAR, TrackerHitExtended * hit);
272  void FinalRefit();
273 
274  float _bField;
275  float _chi2WRPhiTriplet;
276  float _chi2WRPhiQuartet;
277  float _chi2WRPhiSeptet;
278  float _chi2WZTriplet;
279  float _chi2WZQuartet;
280  float _chi2WZSeptet;
281  float _minDistCutAttach;
282  int _minimalLayerToAttach;
283 
284  double PI,TWOPI,PIOVER2;
285  double _dPhi;
286  double _dTheta;
287  double _dPhiFTD;
288 
289  int _debug;
290 
291  std::vector<float> _zLayerFTD;
292  std::vector<int> _Combinations;
293  std::vector<int> _CombinationsFTD;
294 
295  float _resolutionRPhiVTX;
296  float _resolutionZVTX;
297 
298  float _resolutionRPhiFTD;
299  float _resolutionZFTD;
300 
301  float _resolutionRPhiSIT;
302  float _resolutionZSIT;
303 
304  float _phiCutForMerging;
305  float _tanlambdaCutForMerging;
306  float _angleCutForMerging;
307 
308  int _print;
309  int _checkForDelta;
310  float _minDistToDelta;
311 
312  float _distRPhi;
313  float _distZ;
314  float _chi2FitCut;
315 
316  float _chi2PrefitCut;
317 
318  TrackExtendedVec _trackImplVec;
319 
320  float _cutOnD0, _cutOnZ0, _cutOnOmega, _cutOnPt;
321 
322  int _minimalHits;
323  int _attachFast;
324 
325  int _nTotalVTXHits,_nTotalFTDHits,_nTotalSITHits;
326  int _optFit,_simpleHelixFit;
327  int _useSIT;
328  int _finalRefit;
329  int _createMap;
330  int _useExtraPoint;
331  MarlinTrackFit _trackFit;
332 
333 
334 inline int min(int a,int b) {
335  if (a<b) return a;
336  return b;
337 }
338 
339 inline int max(int a,int b) {
340  if (a>b) return a;
341  return b;
342 }
343 
344 inline int abs(int x) {
345  if (x<0) return -x;
346  return x;
347 }
348 
349 
350 } ;
351 
352 #endif
353 
354 
355 
356 
Definition: MarlinTrackFit.h:26
=== Silicon Tracking Processor === Processor performing stand-alone pattern recognition in the vert...
Definition: SiliconTrackingCLIC.h:179