# Project CMSSW displayed by LXR

File indexing completed on 2024-04-06 12:26:23

```0001 #ifndef RecoLocalTracker_SiPixelRecHits_PixelCPEGeneric_H
0002 #define RecoLocalTracker_SiPixelRecHits_PixelCPEGeneric_H
0003
0004 // \class PixelCPEGeneric  -- a generalized CPE reco for the idealized detector
0005 //
0006 // The basic idea of this class is to use generic formulae in order
0007 // to achieve clean and minimal code.  It should work for
0008 // - both normal and big pixels
0009 // - both barrel and forward
0010 // - both "FromDetPosition" and "FromTrackAngles" (i.e. by the track fit)
0011 //
0012 // This is possible since, in its nature, the original "ORCA" algorithm by
0013 // Danek and Susana is the same in both X and Y directions, provided that
0014 // one correctly computes angles alpha_ and beta_ up front.  Thus, all
0015 // geometrical and special corrections are dropped, since the presumption
0016 // is that alpha_ and beta_ are determined as best as possible.  That means
0017 // that they either come from the track, or, if they come from the
0018 // position of the DetUnit, they include all geometrical information
0019 // possible for this DetUnit:
0020 // - for both the barrel and the forward, we use the cluster position
0021 //   instead of the center of the module/plaquette
0022 // - for the forward, the tilt of the blades is included too
0023 //
0024 // In addtion, anything which is special for the computation of the lorentz
0025 // angle is done in setTheDet() method.  So the algorithm per se does not
0026 // need to worry about it.  This includes extra E*B term (a.k.a. "alpha2Order")
0027 // and extra tilt in the forward.
0028 //
0029 // Thus, the formula for the computation of the hit position is very
0030 // simple, and is described in Morris's note (IN ???) on the generalizaton
0031 // of the pixel algorithm.
0032
0033 #include "RecoLocalTracker/SiPixelRecHits/interface/PixelCPEGenericBase.h"
0034
0035 // The template header files
0036 //#include "RecoLocalTracker/SiPixelRecHits/interface/SiPixelTemplateReco.h"
0037 #include "CondFormats/SiPixelTransient/interface/SiPixelTemplate.h"
0038 #include "CondFormats/SiPixelTransient/interface/SiPixelGenError.h"
0039
0040 #include <utility>
0041 #include <vector>
0042
0043 #if 0
0044 /** \class PixelCPEGeneric
0045  * Perform the position and error evaluation of pixel hits using
0046  * the Det angle to estimate the track impact angle
0047  */
0048 #endif
0049
0050 class MagneticField;
0051 class PixelCPEGeneric : public PixelCPEGenericBase {
0052 public:
0053   PixelCPEGeneric(edm::ParameterSet const &conf,
0054                   const MagneticField *,
0055                   const TrackerGeometry &,
0056                   const TrackerTopology &,
0057                   const SiPixelLorentzAngle *,
0058                   const SiPixelGenErrorDBObject *,
0059                   const SiPixelLorentzAngle *);
0060
0061   ~PixelCPEGeneric() override = default;
0062
0063   static void fillPSetDescription(edm::ParameterSetDescription &desc);
0064
0065 protected:
0066   LocalPoint localPosition(DetParam const &theDetParam, ClusterParam &theClusterParam) const override;
0067   LocalError localError(DetParam const &theDetParam, ClusterParam &theClusterParam) const override;
0068
0069   //--------------------------------------------------------------------
0070   //  Methods.
0071   //------------------------------------------------------------------
0072
0073   //--- Errors squared in x and y.  &&& Need to be revisited.
0074   float err2X(bool &, int &) const;
0075   float err2Y(bool &, int &) const;
0076
0077   //--- Cuts made externally settable
0078   float the_eff_charge_cut_lowX;
0079   float the_eff_charge_cut_lowY;
0080   float the_eff_charge_cut_highX;
0081   float the_eff_charge_cut_highY;
0082   float the_size_cutX;
0083   float the_size_cutY;
0084
0085   bool inflate_errors;
0086   bool inflate_all_errors_no_trk_angle;
0087
0088   bool DoCosmics_;