CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
PixelCPEGeneric.h
Go to the documentation of this file.
1 #ifndef RecoLocalTracker_SiPixelRecHits_PixelCPEGeneric_H
2 #define RecoLocalTracker_SiPixelRecHits_PixelCPEGeneric_H
3 
4 // \class PixelCPEGeneric -- a generalized CPE reco for the idealized detector
5 //
6 // The basic idea of this class is to use generic formulae in order
7 // to achieve clean and minimal code. It should work for
8 // - both normal and big pixels
9 // - both barrel and forward
10 // - both "FromDetPosition" and "FromTrackAngles" (i.e. by the track fit)
11 //
12 // This is possible since, in its nature, the original "ORCA" algorithm by
13 // Danek and Susana is the same in both X and Y directions, provided that
14 // one correctly computes angles alpha_ and beta_ up front. Thus, all
15 // geometrical and special corrections are dropped, since the presumption
16 // is that alpha_ and beta_ are determined as best as possible. That means
17 // that they either come from the track, or, if they come from the
18 // position of the DetUnit, they include all geometrical information
19 // possible for this DetUnit:
20 // - for both the barrel and the forward, we use the cluster position
21 // instead of the center of the module/plaquette
22 // - for the forward, the tilt of the blades is included too
23 //
24 // In addtion, anything which is special for the computation of the lorentz
25 // angle is done in setTheDet() method. So the algorithm per se does not
26 // need to worry about it. This includes extra E*B term (a.k.a. "alpha2Order")
27 // and extra tilt in the forward.
28 //
29 // Thus, the formula for the computation of the hit position is very
30 // simple, and is described in Morris's note (IN ???) on the generalizaton
31 // of the pixel algorithm.
32 
35 
36 
37 // The template header files
40 
41 
42 #include <utility>
43 #include <vector>
44 
45 
46 #if 0
47 
51 #endif
52 
53 class MagneticField;
55 {
56  public:
57  // PixelCPEGeneric( const DetUnit& det );
60 
61 
62 
63 private:
64  LocalPoint localPosition (const SiPixelCluster& cluster) const;
65  LocalError localError (const SiPixelCluster& cl) const;
66 
67  //--------------------------------------------------------------------
68  // Methods.
69  //------------------------------------------------------------------
70  float
72  float Q_f,
73  float Q_l,
74  float upper_edge_first_pix,
75  float lower_edge_last_pix,
76  float half_lorentz_shift,
77  float cot_angle,
78  float pitch,
79  bool first_is_big,
80  bool last_is_big,
81  float eff_charge_cut_low,
82  float eff_charge_cut_high,
83  float size_cut
84  ) const;
85 
86  void
87  collect_edge_charges(const SiPixelCluster& cluster,
88  float & Q_f_X,
89  float & Q_l_X,
90  float & Q_f_Y,
91  float & Q_l_Y
92  ) const;
93 
94 
95  //--- Errors squared in x and y. &&& Need to be revisited.
96  float err2X(bool&, int&) const;
97  float err2Y(bool&, int&) const;
98 
99  //--- Cuts made externally settable
106 
109 
116 
119 
124 
125 
126  //--- DB Error Parametrization object
128 
130  mutable int templID_;
131 
132  // The truncation value pix_maximum is an angle-dependent cutoff on the
133  // individual pixel signals. It should be applied to all pixels in the
134  // cluster [signal_i = fminf(signal_i, pixmax)] before the column and row
135  // sums are made. Morris
136  mutable float pixmx;
137 
138  // These are errors predicted by PIXELAV
139  mutable float sigmay; // CPE Generic y-error for multi-pixel cluster
140  mutable float sigmax; // CPE Generic x-error for multi-pixel cluster
141  mutable float sy1 ; // CPE Generic y-error for single single-pixel
142  mutable float sy2 ; // CPE Generic y-error for single double-pixel cluster
143  mutable float sx1 ; // CPE Generic x-error for single single-pixel cluster
144  mutable float sx2 ; // CPE Generic x-error for single double-pixel cluster
145 
146  // These are irradiation bias corrections
147  mutable float deltay; // CPE Generic y-bias for multi-pixel cluster
148  mutable float deltax; // CPE Generic x-bias for multi-pixel cluster
149  mutable float dy1 ; // CPE Generic y-bias for single single-pixel cluster
150  mutable float dy2 ; // CPE Generic y-bias for single double-pixel cluster
151  mutable float dx1 ; // CPE Generic x-bias for single single-pixel cluster
152  mutable float dx2 ; // CPE Generic x-bias for single double-pixel cluster
153 
154 
155 
156 };
157 
158 #endif
159 
160 
161 
162 
std::vector< float > xerr_barrel_l1_
float the_eff_charge_cut_highY
SiPixelCPEGenericDBErrorParametrization * genErrorsFromDB_
std::vector< float > xerr_barrel_ln_
bool IrradiationBiasCorrection_
std::vector< float > yerr_endcap_
void collect_edge_charges(const SiPixelCluster &cluster, float &Q_f_X, float &Q_l_X, float &Q_f_Y, float &Q_l_Y) const
LocalPoint localPosition(const SiPixelCluster &cluster) const
float the_eff_charge_cut_lowX
LocalError localError(const SiPixelCluster &cl) const
float generic_position_formula(int size, float Q_f, float Q_l, float upper_edge_first_pix, float lower_edge_last_pix, float half_lorentz_shift, float cot_angle, float pitch, bool first_is_big, bool last_is_big, float eff_charge_cut_low, float eff_charge_cut_high, float size_cut) const
PixelCPEGeneric(edm::ParameterSet const &conf, const MagneticField *, const SiPixelLorentzAngle *, const SiPixelCPEGenericErrorParm *, const SiPixelTemplateDBObject *)
The constructor.
bool inflate_all_errors_no_trk_angle
std::vector< float > xerr_endcap_
SiPixelTemplate templ_
tuple conf
Definition: dbtoconf.py:185
float the_eff_charge_cut_lowY
std::vector< float > yerr_barrel_l1_
std::vector< float > yerr_barrel_ln_
Pixel cluster – collection of neighboring pixels above threshold.
float err2X(bool &, int &) const
tuple size
Write out results.
float err2Y(bool &, int &) const
float the_eff_charge_cut_highX