Go to the documentation of this file.00001 #ifndef RecoLocalTracker_SiPixelRecHits_PixelCPEGeneric_H
00002 #define RecoLocalTracker_SiPixelRecHits_PixelCPEGeneric_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #include "RecoLocalTracker/SiPixelRecHits/interface/PixelCPEBase.h"
00034 #include "CalibTracker/SiPixelESProducers/interface/SiPixelCPEGenericDBErrorParametrization.h"
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046 #include "RecoLocalTracker/SiPixelRecHits/interface/SiPixelTemplateReco.h"
00047 #include "RecoLocalTracker/SiPixelRecHits/interface/SiPixelTemplate.h"
00048
00049
00050 #include <utility>
00051 #include <vector>
00052
00053
00054 #if 0
00055
00059 #endif
00060
00061 class MagneticField;
00062 class PixelCPEGeneric : public PixelCPEBase
00063 {
00064 public:
00065
00066 PixelCPEGeneric(edm::ParameterSet const& conf, const MagneticField *, const SiPixelLorentzAngle *, const SiPixelCPEGenericErrorParm *, const SiPixelTemplateDBObject *);
00067 ~PixelCPEGeneric() {;}
00068
00069 LocalPoint localPosition (const SiPixelCluster& cluster, const GeomDetUnit & det) const;
00070
00071
00072 LocalError localError (const SiPixelCluster& cl, const GeomDetUnit & det) const;
00073
00074 MeasurementPoint measurementPosition ( const SiPixelCluster&,
00075 const GeomDetUnit & det) const;
00076
00077
00078
00079
00080 private:
00081
00082
00083
00084 double
00085 generic_position_formula( int size,
00086 double Q_f,
00087 double Q_l,
00088 double upper_edge_first_pix,
00089 double lower_edge_last_pix,
00090 double half_lorentz_shift,
00091 double cot_angle,
00092 double pitch,
00093 bool first_is_big,
00094 bool last_is_big,
00095 double eff_charge_cut_low,
00096 double eff_charge_cut_high,
00097 double size_cut
00098 ) const;
00099
00100 void
00101 collect_edge_charges(const SiPixelCluster& cluster,
00102 float & Q_f_X,
00103 float & Q_l_X,
00104 float & Q_m_X,
00105 float & Q_f_Y,
00106 float & Q_l_Y,
00107 float & Q_m_Y
00108 ) const;
00109
00110
00111
00112 float err2X(bool&, int&) const;
00113 float err2Y(bool&, int&) const;
00114
00115
00116 double the_eff_charge_cut_lowX;
00117 double the_eff_charge_cut_lowY;
00118 double the_eff_charge_cut_highX;
00119 double the_eff_charge_cut_highY;
00120 double the_size_cutX;
00121 double the_size_cutY;
00122
00123 bool inflate_errors;
00124 bool inflate_all_errors_no_trk_angle;
00125
00126 bool UseErrorsFromTemplates_;
00127 bool DoCosmics_;
00128 bool LoadTemplatesFromDB_;
00129 bool TruncatePixelCharge_;
00130 bool IrradiationBiasCorrection_;
00131
00132 double EdgeClusterErrorX_;
00133 double EdgeClusterErrorY_;
00134
00135
00136 SiPixelCPEGenericDBErrorParametrization * genErrorsFromDB_;
00137
00138 mutable SiPixelTemplate templ_;
00139 mutable int templID_;
00140
00141
00142
00143
00144
00145 mutable float pixmx;
00146
00147
00148 mutable float sigmay;
00149 mutable float sigmax;
00150 mutable float sy1 ;
00151 mutable float sy2 ;
00152 mutable float sx1 ;
00153 mutable float sx2 ;
00154
00155
00156 mutable float deltay;
00157 mutable float deltax;
00158 mutable float dy1 ;
00159 mutable float dy2 ;
00160 mutable float dx1 ;
00161 mutable float dx2 ;
00162
00163
00164 protected:
00165
00166
00167 float xpos( const SiPixelCluster& ) const { return -999000.0; }
00168 float ypos( const SiPixelCluster& ) const { return -999000.0; }
00169
00170 };
00171
00172 #endif
00173
00174
00175
00176