CMS 3D CMS Logo

PixelCPEGenericForBricked.h
Go to the documentation of this file.
1 #ifndef RecoLocalTracker_SiPixelRecHits_PixelCPEGenericForBricked_H
2 #define RecoLocalTracker_SiPixelRecHits_PixelCPEGenericForBricked_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 
34 
35 // The template header files
36 //#include "RecoLocalTracker/SiPixelRecHits/interface/SiPixelTemplateReco.h"
39 
40 #include <utility>
41 #include <vector>
42 
43 #if 0
44 
48 #endif
49 
50 class MagneticField;
52 public:
54  const MagneticField*,
55  const TrackerGeometry&,
56  const TrackerTopology&,
57  const SiPixelLorentzAngle*,
59  const SiPixelLorentzAngle*);
60 
62 
63 private:
64  LocalPoint localPosition(DetParam const& theDetParam, ClusterParam& theClusterParam) const override;
65  static void collect_edge_charges_bricked(ClusterParam& theClusterParam,
66  int& q_f_X,
67  int& q_l_X,
68  int& q_f_Y,
69  int& q_l_Y,
70  int& Q_f_b,
71  int& Q_l_b, //Bricked correction
72  int& lowest_is_bricked, //Bricked correction
73  int& highest_is_bricked, //Bricked correction
74  bool truncate);
75 };
76 
77 #endif
static void collect_edge_charges_bricked(ClusterParam &theClusterParam, int &q_f_X, int &q_l_X, int &q_f_Y, int &q_l_Y, int &Q_f_b, int &Q_l_b, int &lowest_is_bricked, int &highest_is_bricked, bool truncate)
PixelCPEGenericForBricked(edm::ParameterSet const &conf, const MagneticField *, const TrackerGeometry &, const TrackerTopology &, const SiPixelLorentzAngle *, const SiPixelGenErrorDBObject *, const SiPixelLorentzAngle *)
The constructor.
LocalPoint localPosition(DetParam const &theDetParam, ClusterParam &theClusterParam) const override