Go to the documentation of this file.00001 #ifndef RecoMuon_SeedGenerator_MuonSeedCreator_H
00002 #define RecoMuon_SeedGenerator_MuonSeedCreator_H
00003
00016 #include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h"
00017 #include "DataFormats/TrajectorySeed/interface/TrajectorySeed.h"
00018 #include "RecoMuon/TransientTrackingRecHit/interface/MuonTransientTrackingRecHit.h"
00019
00020 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00021
00022 #include <vector>
00023
00024 class RecHit;
00025 class BoundPlane;
00026 class GeomDet;
00027 class MagneticField;
00028 class MuonTransientTrackingRecHit;
00029
00030 class MuonSeedCreator {
00031
00032 public:
00033
00034 typedef MuonTransientTrackingRecHit::MuonRecHitContainer SegmentContainer;
00035
00037 explicit MuonSeedCreator(const edm::ParameterSet& pset);
00038
00040 ~MuonSeedCreator();
00041
00042
00043
00045 void setBField( const MagneticField* theField ){ BField = theField; };
00046
00048 TrajectorySeed createSeed(int type, SegmentContainer seg, std::vector<int> layers, int NShower, int NShowerSeg );
00049
00050
00051
00052 private:
00053
00055 void estimatePtCSC(SegmentContainer seg, std::vector<int> layers, double& pt, double& spt);
00056
00058 void estimatePtOverlap(SegmentContainer seg, std::vector<int> layers, double& pt, double& spt);
00059
00061 void estimatePtDT(SegmentContainer seg, std::vector<int> layers, double& pt, double& spt);
00062
00064 void estimatePtSingle(SegmentContainer seg, std::vector<int> layers, double& pt, double& spt);
00065
00067 void estimatePtShowering(int& NShowers, int& NShowerSeg, double& pt, double& spt);
00068
00070 void weightedPt(std::vector<double> ptEstimate, std::vector<double> sptEstimate, double& ptAvg, double& sptAvg);
00071
00073 std::vector<double> getPt(std::vector<double> vParameters, double eta, double dPhi);
00074
00076 double scaledPhi(double dphi, double t1);
00077
00078
00079 float theMinMomentum;
00080 float theMaxMomentum;
00081 float defaultMomentum;
00082
00083
00084 double sysError;
00085
00086
00087 bool debug;
00088
00089
00090 const MagneticField* BField;
00091
00092
00093 std::vector<double> DT12;
00094 std::vector<double> DT13;
00095 std::vector<double> DT14;
00096 std::vector<double> DT23;
00097 std::vector<double> DT24;
00098 std::vector<double> DT34;
00099
00100 std::vector<double> CSC01;
00101 std::vector<double> CSC12;
00102 std::vector<double> CSC02;
00103 std::vector<double> CSC13;
00104 std::vector<double> CSC03;
00105 std::vector<double> CSC14;
00106 std::vector<double> CSC23;
00107 std::vector<double> CSC24;
00108 std::vector<double> CSC34;
00109
00110 std::vector<double> OL1213;
00111 std::vector<double> OL1222;
00112 std::vector<double> OL1232;
00113 std::vector<double> OL2213;
00114 std::vector<double> OL2222;
00115
00116 std::vector<double> SME11;
00117 std::vector<double> SME12;
00118 std::vector<double> SME13;
00119 std::vector<double> SME21;
00120 std::vector<double> SME22;
00121 std::vector<double> SME31;
00122 std::vector<double> SME32;
00123 std::vector<double> SME41;
00124
00125 std::vector<double> SMB10;
00126 std::vector<double> SMB11;
00127 std::vector<double> SMB12;
00128 std::vector<double> SMB20;
00129 std::vector<double> SMB21;
00130 std::vector<double> SMB22;
00131 std::vector<double> SMB30;
00132 std::vector<double> SMB31;
00133 std::vector<double> SMB32;
00134
00135
00136
00137 std::vector<double> CSC01_1;
00138 std::vector<double> CSC12_1;
00139 std::vector<double> CSC12_2;
00140 std::vector<double> CSC12_3;
00141 std::vector<double> CSC13_2;
00142 std::vector<double> CSC13_3;
00143 std::vector<double> CSC14_3;
00144 std::vector<double> CSC23_1;
00145 std::vector<double> CSC23_2;
00146 std::vector<double> CSC24_1;
00147 std::vector<double> CSC34_1;
00148
00149 std::vector<double> DT12_1;
00150 std::vector<double> DT12_2;
00151 std::vector<double> DT13_1;
00152 std::vector<double> DT13_2;
00153 std::vector<double> DT14_1;
00154 std::vector<double> DT14_2;
00155 std::vector<double> DT23_1;
00156 std::vector<double> DT23_2;
00157 std::vector<double> DT24_1;
00158 std::vector<double> DT24_2;
00159 std::vector<double> DT34_1;
00160 std::vector<double> DT34_2;
00161
00162 std::vector<double> OL_1213;
00163 std::vector<double> OL_1222;
00164 std::vector<double> OL_1232;
00165 std::vector<double> OL_2213;
00166 std::vector<double> OL_2222;
00167
00168 std::vector<double> SMB_10S;
00169 std::vector<double> SMB_11S;
00170 std::vector<double> SMB_12S;
00171 std::vector<double> SMB_20S;
00172 std::vector<double> SMB_21S;
00173 std::vector<double> SMB_22S;
00174 std::vector<double> SMB_30S;
00175 std::vector<double> SMB_31S;
00176 std::vector<double> SMB_32S;
00177
00178 std::vector<double> SME_11S;
00179 std::vector<double> SME_12S;
00180 std::vector<double> SME_13S;
00181 std::vector<double> SME_21S;
00182 std::vector<double> SME_22S;
00183
00184 };
00185 #endif