Belle II Software  release-08-01-10
MeasurementCreator.h
1 /* Copyright 2008-2010, Technische Universitaet Muenchen,
2  Authors: Christian Hoeppner & Sebastian Neubert & Johannes Rauch
3 
4  This file is part of GENFIT.
5 
6  GENFIT is free software: you can redistribute it and/or modify
7  it under the terms of the GNU Lesser General Public License as published
8  by the Free Software Foundation, either version 3 of the License, or
9  (at your option) any later version.
10 
11  GENFIT is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU Lesser General Public License for more details.
15 
16  You should have received a copy of the GNU Lesser General Public License
17  along with GENFIT. If not, see <http://www.gnu.org/licenses/>.
18 */
29 #ifndef genfit_MeasurementOnPlaneCreator_h
30 #define genfit_MeasurementOnPlaneCreator_h
31 
32 #include "AbsMeasurement.h"
33 #include "HelixTrackModel.h"
34 
35 #include <TObject.h>
36 #include <TVector3.h>
37 
38 
39 namespace genfit {
40 
41 
42 enum eMeasurementType { Pixel = 0,
43  Spacepoint,
44  ProlateSpacepoint,
45  StripU,
46  StripV,
47  StripUV,
48  Wire,
49  WirePoint,
50  nMeasurementTypes
51  };
52 
53 
57 class MeasurementCreator : public TObject {
58 
59 
60  public:
61 
62  // Constructors/Destructors ---------
64 
65  ~MeasurementCreator() {delete trackModel_;}
66 
68  void setTrackModel(const HelixTrackModel* model) {delete trackModel_; trackModel_ = model;}
69  void setResolution(double resolution) {resolution_ = resolution;}
70  void setResolutionWire(double resolutionWire) {resolutionWire_ = resolutionWire;}
71  void setOutlierProb(double outlierProb) {outlierProb_ = outlierProb;}
72  void setOutlierRange(double outlierRange) {outlierRange_ = outlierRange;}
73  void setThetaDetPlane(double thetaDetPlane) {thetaDetPlane_ = thetaDetPlane;}
74  void setPhiDetPlane(double phiDetPlane) {phiDetPlane_ = phiDetPlane;}
75  void setWireDir(const TVector3 wireDir) {wireDir_ = wireDir; wireDir_.SetMag(1.);}
76  void setMinDrift(double minDrift) {minDrift_ = minDrift;}
77  void setMaxDrift(double maxDrift) {maxDrift_ = maxDrift;}
78  void setIdealLRResolution(bool idealLRResolution) {idealLRResolution_ = idealLRResolution;}
79  void setUseSkew(bool useSkew) {useSkew_ = useSkew;}
80  void setSkewAngle(double skewAngle) {skewAngle_ = skewAngle;}
81  void setNSuperLayer(int nSuperLayer) {nSuperLayer_ = nSuperLayer;}
82  void setDebug(bool debug) {debug_ = debug;}
83 
84 
85  std::vector<genfit::AbsMeasurement*> create(eMeasurementType, double tracklength, bool& outlier, int& lr);
86  std::vector<genfit::AbsMeasurement*> create(eMeasurementType type, double tracklength) {
87  bool dummy1;
88  int dummy2;
89  return create(type, tracklength, dummy1, dummy2);
90  }
91 
92  void reset();
93 
94  private:
95 
96  const HelixTrackModel* trackModel_; // ownership
97 
98  double resolution_; // cm; resolution of generated measurements
99  double resolutionWire_; // cm; resolution in wire direction of generated measurements (wire and prolate sp measurements)
100 
101  double outlierProb_;
102  double outlierRange_;
103 
104  // planarMeasurement specific
105  double thetaDetPlane_; // degree
106  double phiDetPlane_; // degree
107 
108  // WireMeasurement specific
109  int wireCounter_;
110  TVector3 wireDir_;
111  double minDrift_;
112  double maxDrift_;
113  bool idealLRResolution_; // resolve the l/r ambiguities of the wire measurements
114  bool useSkew_;
115  double skewAngle_;
116  int nSuperLayer_;
117 
118  // misc
119  int measurementCounter_;
120  bool debug_;
121 
122 
123  public:
124  ClassDef(MeasurementCreator,1)
125 
126 };
127 
128 } /* End of namespace genfit */
131 #endif // genfit_MeasurementOnPlaneCreator_h
Helix track model for testing purposes.
Create different measurement types along a HelixTrackModel for testing purposes.
void setTrackModel(const HelixTrackModel *model)
Takes ownership!
Defines for I/O streams used for error and debug printing.