MarlinTrk  2.2.0
MarlinKalTest.h
1 #ifndef MarlinKalTest_h
2 #define MarlinKalTest_h
3 
4 #include "MarlinTrk/IMarlinTrkSystem.h"
5 
6 #ifdef MARLINTRK_DIAGNOSTICS_ON
7 #include "MarlinTrk/DiagnosticsController.h"
8 #endif
9 
10 #include "gear/GearMgr.h"
11 
12 //LCIO:
13 #include "lcio.h"
14 #include "UTIL/BitField64.h"
15 #include "UTIL/LCTOOLS.h"
16 #include <LCRTRelations.h>
17 
18 #include "streamlog/streamlog.h"
19 
20 #include "TObjArray.h"
21 #include "TVector3.h"
22 
23 #include <cmath>
24 #include <vector>
25 
26 
27 class TKalDetCradle ;
28 class TVKalDetector ;
29 class ILDVMeasLayer ;
30 class THelicalTrack ;
31 
32 class ILDCylinderMeasLayer;
33 
34 namespace EVENT{
35  class TrackerHit ;
36 }
37 
38 namespace MarlinTrk{
39 
43 
44  public:
45 
46  friend class MarlinKalTestTrack;
47 
48  // define some configuration constants
49  static const bool FitBackward = kIterBackward ;
50  static const bool FitForward = kIterForward ;
51  static const bool OrderOutgoing = true ;
52  static const bool OrderIncoming = false ;
53 
54 
56  MarlinKalTest( const gear::GearMgr& gearMgr) ;
57 
59  ~MarlinKalTest() ;
60 
62  void init() ;
63 
65  virtual std::string name() { return "KalTest" ; }
66 
69 
70 
71  protected:
72 
74  void includeMultipleScattering( bool on ) ;
75 
77  void includeEnergyLoss( bool on ) ;
78 
80  void storeActiveMeasurementModuleIDs(TVKalDetector* detector);
81 
83  void getSensitiveMeasurementModules( int detElementID, std::vector< const ILDVMeasLayer *>& measmodules) const;
84 
86  void getSensitiveMeasurementModulesForLayer( int layerID, std::vector<const ILDVMeasLayer *>& measmodules) const;
87 
88  // void init(bool MSOn, bool EnergyLossOn) ;
89  bool is_initialised ;
90 
91  //** find the measurment layer for a given hit
92  const ILDVMeasLayer* findMeasLayer( EVENT::TrackerHit * trkhit) const ;
93  //** find the measurment layer for a given det element ID and point in space
94  const ILDVMeasLayer* findMeasLayer( int detElementID, const TVector3& point) const ;
95 
96  // get the last layer crossed by the helix when extrapolating from the present position to the pca to point
97  const ILDVMeasLayer* getLastMeasLayer(THelicalTrack const& helix, TVector3 const& point) const ;
98 
99  const ILDCylinderMeasLayer* getIPLayer() const { return _ipLayer; }
100 
101  const ILDCylinderMeasLayer* _ipLayer ;
102 
103  const gear::GearMgr* _gearMgr ;
104 
105  TKalDetCradle* _det ; // the detector cradle
106 
107  std::multimap< int,const ILDVMeasLayer *> _active_measurement_modules;
108 
109  std::multimap< int,const ILDVMeasLayer *> _active_measurement_modules_by_layer;
110 
111 
112 #ifdef MARLINTRK_DIAGNOSTICS_ON
113 
114  private:
115  MarlinTrk::DiagnosticsController _diagnostics;
116 
117  public:
118 
121  virtual void * getDiagnositicsPointer() { return &_diagnostics ; }
122 
123 #endif
124 
125 
126  } ;
127 
128 } // end of namespace MarlinTrk
129 
130 #endif
Definition: MarlinKalTestTrack.h:39
Interface to KaltTest Kalman fitter - instantiates and holds the detector geometry.
Definition: MarlinKalTest.h:42
~MarlinKalTest()
d'tor
Definition: MarlinKalTest.cc:60
void includeEnergyLoss(bool on)
take energy loss into account during the fit
Definition: MarlinKalTest.cc:249
void init()
initialise track fitter system
Definition: MarlinKalTest.cc:70
void includeMultipleScattering(bool on)
take multiple scattering into account during the fit
Definition: MarlinKalTest.cc:238
Interface for generic tracks in MarlinTrk.
Definition: IMarlinTrack.h:28
void storeActiveMeasurementModuleIDs(TVKalDetector *detector)
Store active measurement module IDs for a given TVKalDetector needed for navigation.
Definition: MarlinKalTest.cc:322
void getSensitiveMeasurementModulesForLayer(int layerID, std::vector< const ILDVMeasLayer * > &measmodules) const
Store active measurement module IDs needed for navigation.
Definition: MarlinKalTest.cc:260
MarlinTrk::IMarlinTrack * createTrack()
instantiate its implementation of the IMarlinTrack
Definition: MarlinKalTest.cc:224
void getSensitiveMeasurementModules(int detElementID, std::vector< const ILDVMeasLayer * > &measmodules) const
Store active measurement module IDs needed for navigation.
Definition: MarlinKalTest.cc:299
Base class for tracking system implementations in MarlinTrk.
Definition: IMarlinTrkSystem.h:45
virtual std::string name()
the name of the implementation
Definition: MarlinKalTest.h:65
MarlinKalTest(const gear::GearMgr &gearMgr)
Default c'tor, initializes the geometry from GEAR.
Definition: MarlinKalTest.cc:42