File indexing completed on 2023-03-17 11:13:37
0001 #ifndef L1Trigger_TrackFindingTMTT_DigitalTrack_h
0002 #define L1Trigger_TrackFindingTMTT_DigitalTrack_h
0003
0004 #include "FWCore/Utilities/interface/Exception.h"
0005 #include <cmath>
0006 #include <string>
0007 #include <set>
0008
0009 namespace tmtt {
0010
0011 class Settings;
0012 class L1fittedTrack;
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022 class DigitalTrack {
0023 public:
0024
0025 DigitalTrack(const Settings* settings, const std::string& fitterName, const L1fittedTrack* fitTrk);
0026
0027
0028
0029
0030 int iDigi_oneOver2r() const { return iDigi_oneOver2r_; }
0031 int iDigi_d0() const { return iDigi_d0_; }
0032
0033 int iDigi_phi0rel() const { return iDigi_phi0rel_; }
0034 int iDigi_z0() const { return iDigi_z0_; }
0035 int iDigi_tanLambda() const { return iDigi_tanLambda_; }
0036 unsigned int iDigi_chisquaredRphi() const { return iDigi_chisquaredRphi_; }
0037 unsigned int iDigi_chisquaredRz() const { return iDigi_chisquaredRz_; }
0038
0039
0040 int iDigi_oneOver2r_bcon() const { return iDigi_oneOver2r_bcon_; }
0041 int iDigi_phi0rel_bcon() const { return iDigi_phi0rel_bcon_; }
0042 unsigned int iDigi_chisquaredRphi_bcon() const { return iDigi_chisquaredRphi_bcon_; }
0043
0044
0045 float qOverPt() const { return qOverPt_; }
0046 float oneOver2r() const { return oneOver2r_; }
0047 float d0() const { return d0_; }
0048 float phi0() const { return phi0_; }
0049 float phi0rel() const { return phi0rel_; }
0050 float z0() const { return z0_; }
0051 float tanLambda() const { return tanLambda_; }
0052 float chisquaredRphi() const { return chisquaredRphi_; }
0053 float chisquaredRz() const { return chisquaredRz_; }
0054
0055
0056 float qOverPt_bcon() const { return qOverPt_bcon_; }
0057 float oneOver2r_bcon() const { return oneOver2r_bcon_; }
0058 float phi0_bcon() const { return phi0_bcon_; }
0059 float phi0rel_bcon() const { return phi0rel_bcon_; }
0060 float chisquaredRphi_bcon() const { return chisquaredRphi_bcon_; }
0061
0062 unsigned int iPhiSec() const { return iPhiSec_; }
0063 unsigned int iEtaReg() const { return iEtaReg_; }
0064 int mBinhelix() const { return mBinhelix_; }
0065 int cBinhelix() const { return cBinhelix_; }
0066 unsigned int nlayers() const { return nlayers_; }
0067 int mBinHT() const { return mBin_; }
0068 int cBinHT() const { return cBin_; }
0069 bool accepted() const { return accepted_; }
0070 unsigned int hitPattern() const { return hitPattern_; }
0071
0072
0073
0074 float orig_qOverPt() const { return qOverPt_orig_; }
0075 float orig_oneOver2r() const { return oneOver2r_orig_; }
0076 float orig_d0() const { return d0_orig_; }
0077 float orig_phi0() const { return phi0_orig_; }
0078 float orig_phi0rel() const { return phi0rel_orig_; }
0079 float orig_z0() const { return z0_orig_; }
0080 float orig_tanLambda() const { return tanLambda_orig_; }
0081 float orig_chisquaredRphi() const { return chisquaredRphi_orig_; }
0082 float orig_chisquaredRz() const { return chisquaredRz_orig_; }
0083
0084 float tp_pt() const { return tp_pt_; }
0085 float tp_eta() const { return tp_eta_; }
0086 float tp_d0() const { return tp_d0_; }
0087 float tp_phi0() const { return tp_phi0_; }
0088 float tp_tanLambda() const { return tp_tanLambda_; }
0089 float tp_z0() const { return tp_z0_; }
0090 float tp_qoverpt() const { return tp_qoverpt_; }
0091 int tp_index() const { return tp_index_; }
0092 float tp_useForAlgEff() const { return tp_useForAlgEff_; }
0093 float tp_useForEff() const { return tp_useForEff_; }
0094 float tp_pdgId() const { return tp_pdgId_; }
0095
0096
0097 unsigned int iGetNonant(unsigned int iPhiSec) const { return floor(iPhiSec * numPhiNonants_ / numPhiSectors_); }
0098
0099 private:
0100
0101 void loadDigiCfg(const std::string& fitterName);
0102
0103
0104 void makeDigitalTrack();
0105
0106
0107 void checkInRange() const;
0108
0109
0110 void checkAccuracy() const;
0111
0112 private:
0113
0114 const Settings* settings_;
0115
0116
0117 unsigned int numPhiSectors_;
0118 unsigned int numPhiNonants_;
0119 double phiSectorWidth_;
0120 double phiNonantWidth_;
0121 double phiSectorCentre_;
0122 float chosenRofPhi_;
0123 unsigned int nbinsPt_;
0124 float invPtToDPhi_;
0125
0126
0127 bool skipTrackDigi_;
0128 unsigned int oneOver2rBits_;
0129 float oneOver2rRange_;
0130 unsigned int d0Bits_;
0131 float d0Range_;
0132 unsigned int phi0Bits_;
0133 float phi0Range_;
0134 unsigned int z0Bits_;
0135 float z0Range_;
0136 unsigned int tanLambdaBits_;
0137 float tanLambdaRange_;
0138 unsigned int chisquaredBits_;
0139 float chisquaredRange_;
0140
0141 double oneOver2rMult_;
0142 double d0Mult_;
0143 double phi0Mult_;
0144 double z0Mult_;
0145 double tanLambdaMult_;
0146 double chisquaredMult_;
0147
0148
0149
0150 std::string fitterName_;
0151 unsigned int nHelixParams_;
0152
0153
0154 unsigned int nlayers_;
0155 unsigned int iPhiSec_;
0156 unsigned int iEtaReg_;
0157 int mBin_;
0158 int cBin_;
0159 int mBinhelix_;
0160 int cBinhelix_;
0161 unsigned int hitPattern_;
0162 bool consistent_;
0163 bool consistentSect_;
0164 bool accepted_;
0165
0166
0167
0168 float qOverPt_orig_;
0169 float oneOver2r_orig_;
0170 float d0_orig_;
0171 float phi0_orig_;
0172 float phi0rel_orig_;
0173 float tanLambda_orig_;
0174 float z0_orig_;
0175 float chisquaredRphi_orig_;
0176 float chisquaredRz_orig_;
0177
0178 float qOverPt_bcon_orig_;
0179 float oneOver2r_bcon_orig_;
0180 float phi0_bcon_orig_;
0181 float phi0rel_bcon_orig_;
0182 float chisquaredRphi_bcon_orig_;
0183
0184
0185
0186 int iDigi_oneOver2r_;
0187 int iDigi_d0_;
0188 int iDigi_phi0rel_;
0189 int iDigi_z0_;
0190 int iDigi_tanLambda_;
0191 unsigned int iDigi_chisquaredRphi_;
0192 unsigned int iDigi_chisquaredRz_;
0193
0194 int iDigi_oneOver2r_bcon_;
0195 int iDigi_phi0rel_bcon_;
0196 unsigned int iDigi_chisquaredRphi_bcon_;
0197
0198
0199
0200 float qOverPt_;
0201 float oneOver2r_;
0202 float d0_;
0203 float phi0_;
0204 float phi0rel_;
0205 float z0_;
0206 float tanLambda_;
0207 float chisquaredRphi_;
0208 float chisquaredRz_;
0209
0210 float qOverPt_bcon_;
0211 float oneOver2r_bcon_;
0212 float phi0_bcon_;
0213 float phi0rel_bcon_;
0214 float chisquaredRphi_bcon_;
0215
0216
0217 float tp_qoverpt_;
0218 float tp_pt_;
0219 float tp_eta_;
0220 float tp_d0_;
0221 float tp_phi0_;
0222 float tp_tanLambda_;
0223 float tp_z0_;
0224 int tp_index_;
0225 bool tp_useForAlgEff_;
0226 bool tp_useForEff_;
0227 int tp_pdgId_;
0228 };
0229
0230 }
0231 #endif