File indexing completed on 2025-01-09 23:33:54
0001 #ifndef RecoMuon_SeedGenerator_MuonSeedCreator_H
0002 #define RecoMuon_SeedGenerator_MuonSeedCreator_H
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016 #include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h"
0017 #include "DataFormats/TrajectorySeed/interface/TrajectorySeed.h"
0018 #include "RecoMuon/TransientTrackingRecHit/interface/MuonTransientTrackingRecHit.h"
0019
0020 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0021
0022 #include <vector>
0023
0024 class RecHit;
0025 class Plane;
0026 class GeomDet;
0027 class MagneticField;
0028 class MuonTransientTrackingRecHit;
0029
0030 class MuonSeedCreator {
0031 public:
0032 typedef MuonTransientTrackingRecHit::MuonRecHitContainer SegmentContainer;
0033
0034
0035 explicit MuonSeedCreator(const edm::ParameterSet& pset);
0036
0037
0038 ~MuonSeedCreator();
0039
0040
0041
0042
0043 void setBField(const MagneticField* theField) { BField = theField; };
0044
0045
0046 TrajectorySeed createSeed(
0047 int type, const SegmentContainer& seg, const std::vector<int>& layers, int NShower, int NShowerSeg);
0048
0049 private:
0050
0051 void estimatePtCSC(const SegmentContainer& seg, const std::vector<int>& layers, double& pt, double& spt);
0052
0053
0054 void estimatePtOverlap(const SegmentContainer& seg, const std::vector<int>& layers, double& pt, double& spt);
0055
0056
0057 void estimatePtDT(const SegmentContainer& seg, const std::vector<int>& layers, double& pt, double& spt);
0058
0059
0060 void estimatePtSingle(const SegmentContainer& seg, const std::vector<int>& layers, double& pt, double& spt);
0061
0062
0063 void estimatePtShowering(int& NShowers, int& NShowerSeg, double& pt, double& spt);
0064
0065
0066 void weightedPt(const std::vector<double>& ptEstimate,
0067 const std::vector<double>& sptEstimate,
0068 double& ptAvg,
0069 double& sptAvg);
0070
0071
0072 std::vector<double> getPt(const std::vector<double>& vParameters, double eta, double dPhi);
0073
0074
0075 double scaledPhi(double dphi, double t1);
0076
0077
0078 float theMinMomentum;
0079 float theMaxMomentum;
0080 float defaultMomentum;
0081
0082
0083 double sysError;
0084
0085
0086 bool debug;
0087
0088
0089 const MagneticField* BField;
0090
0091
0092 std::vector<double> DT12;
0093 std::vector<double> DT13;
0094 std::vector<double> DT14;
0095 std::vector<double> DT23;
0096 std::vector<double> DT24;
0097 std::vector<double> DT34;
0098
0099 std::vector<double> CSC01;
0100 std::vector<double> CSC12;
0101 std::vector<double> CSC02;
0102 std::vector<double> CSC13;
0103 std::vector<double> CSC03;
0104 std::vector<double> CSC14;
0105 std::vector<double> CSC23;
0106 std::vector<double> CSC24;
0107 std::vector<double> CSC34;
0108
0109 std::vector<double> OL1213;
0110 std::vector<double> OL1222;
0111 std::vector<double> OL1232;
0112 std::vector<double> OL2213;
0113 std::vector<double> OL2222;
0114
0115 std::vector<double> SME11;
0116 std::vector<double> SME12;
0117 std::vector<double> SME13;
0118 std::vector<double> SME21;
0119 std::vector<double> SME22;
0120 std::vector<double> SME31;
0121 std::vector<double> SME32;
0122 std::vector<double> SME41;
0123
0124 std::vector<double> SMB10;
0125 std::vector<double> SMB11;
0126 std::vector<double> SMB12;
0127 std::vector<double> SMB20;
0128 std::vector<double> SMB21;
0129 std::vector<double> SMB22;
0130 std::vector<double> SMB30;
0131 std::vector<double> SMB31;
0132 std::vector<double> SMB32;
0133
0134
0135
0136 std::vector<double> CSC01_1;
0137 std::vector<double> CSC12_1;
0138 std::vector<double> CSC12_2;
0139 std::vector<double> CSC12_3;
0140 std::vector<double> CSC13_2;
0141 std::vector<double> CSC13_3;
0142 std::vector<double> CSC14_3;
0143 std::vector<double> CSC23_1;
0144 std::vector<double> CSC23_2;
0145 std::vector<double> CSC24_1;
0146 std::vector<double> CSC34_1;
0147
0148 std::vector<double> DT12_1;
0149 std::vector<double> DT12_2;
0150 std::vector<double> DT13_1;
0151 std::vector<double> DT13_2;
0152 std::vector<double> DT14_1;
0153 std::vector<double> DT14_2;
0154 std::vector<double> DT23_1;
0155 std::vector<double> DT23_2;
0156 std::vector<double> DT24_1;
0157 std::vector<double> DT24_2;
0158 std::vector<double> DT34_1;
0159 std::vector<double> DT34_2;
0160
0161 std::vector<double> OL_1213;
0162 std::vector<double> OL_1222;
0163 std::vector<double> OL_1232;
0164 std::vector<double> OL_2213;
0165 std::vector<double> OL_2222;
0166
0167 std::vector<double> SMB_10S;
0168 std::vector<double> SMB_11S;
0169 std::vector<double> SMB_12S;
0170 std::vector<double> SMB_20S;
0171 std::vector<double> SMB_21S;
0172 std::vector<double> SMB_22S;
0173 std::vector<double> SMB_30S;
0174 std::vector<double> SMB_31S;
0175 std::vector<double> SMB_32S;
0176
0177 std::vector<double> SME_11S;
0178 std::vector<double> SME_12S;
0179 std::vector<double> SME_13S;
0180 std::vector<double> SME_21S;
0181 std::vector<double> SME_22S;
0182 };
0183 #endif