ATLAS Offline Software
Loading...
Searching...
No Matches
MuonBackExtrapolator Namespace Reference

Functions

bool give_eta_phi_at_vertex (double, double, double, bool, bool, bool, bool, double &, double &, double &, double &, double, const double data_Barrel_Param[2][2][2], const double data_Barrel_Sigmas[2][2][2][2], const double data_Endcap_TriggerST_Param[4][12][2][2][2][2], const double data_Endcap_TriggerST_Sigmas[4][12][2][2][2][2], const double data_Endcap_InnerST_Param[4][12][2][2][2], const double data_Endcap_InnerST_PhiSigmas[4][12][2][2][2], const double data_Endcap_InnerST_EtaSigmas[2][2][2][2][2])
bool give_eta_phi_at_tuned_vertex (double, double, double, double, double, bool, bool, bool, bool, double &, double &, double &, double &, double, const double data_Barrel_Param[2][2][2], const double data_Barrel_Sigmas[2][2][2][2], const double data_Endcap_TriggerST_Param[4][12][2][2][2][2], const double data_Endcap_TriggerST_Sigmas[4][12][2][2][2][2], const double data_Endcap_InnerST_Param[4][12][2][2][2], const double data_Endcap_InnerST_PhiSigmas[4][12][2][2][2], const double data_Endcap_InnerST_EtaSigmas[2][2][2][2][2])
bool idTrack_in_loose_window (double, int, double, double, double, double, double, bool, bool, double, double, double data_Barrel_Param[2][2][2], double data_Barrel_Sigmas[2][2][2][2], double data_Endcap_TriggerST_Param[4][12][2][2][2][2], double data_Endcap_TriggerST_Sigmas[4][12][2][2][2][2], double data_Endcap_InnerST_Param[4][12][2][2][2], double data_Endcap_InnerST_PhiSigmas[4][12][2][2][2], double data_Endcap_InnerST_EtaSigmas[2][2][2][2][2])
bool idTrack_in_tight_window (double, int, double, double, double, double, double, double, double, bool, bool, double, double, double data_Barrel_Param[2][2][2], double data_Barrel_Sigmas[2][2][2][2], double data_Endcap_TriggerST_Param[4][12][2][2][2][2], double data_Endcap_TriggerST_Sigmas[4][12][2][2][2][2], double data_Endcap_InnerST_Param[4][12][2][2][2], double data_Endcap_InnerST_PhiSigmas[4][12][2][2][2], double data_Endcap_InnerST_EtaSigmas[2][2][2][2][2])
double retune_vtx (double, double, double)
double retune_pt (double, bool dataset=false)

Function Documentation

◆ give_eta_phi_at_tuned_vertex()

bool MuonBackExtrapolator::give_eta_phi_at_tuned_vertex ( double pt,
double zetaId,
double zetaMu,
double eta,
double phi,
bool barrel,
bool triggerST,
bool ,
bool dataset,
double & extEta,
double & sigmaEta,
double & extPhi,
double & sigmaPhi,
double PT,
const double data_Barrel_Param[2][2][2],
const double data_Barrel_Sigmas[2][2][2][2],
const double data_Endcap_TriggerST_Param[4][12][2][2][2][2],
const double data_Endcap_TriggerST_Sigmas[4][12][2][2][2][2],
const double data_Endcap_InnerST_Param[4][12][2][2][2],
const double data_Endcap_InnerST_PhiSigmas[4][12][2][2][2],
const double data_Endcap_InnerST_EtaSigmas[2][2][2][2][2] )

Definition at line 968 of file BackExtrapolator.cxx.

979{
980
981 pt = retune_pt(pt, dataset);
982 if(PT==0.) PT = pt;
983 else PT = retune_pt(PT, dataset);
984
985 int side = (eta > 0.)? 0 : 1;
986 int sign = (pt > 0.)? 0 : 1;
987 int ptbi = (fabs(pt) >= 6.)? 0 : 1;
988
989 if (phi<0.) phi += 2.0*M_PI;
990
991
992 // BARREL
993 if (barrel) {
994 const double (*param)[2][2] = 0;
995 const double (*sigmas)[2][2][2] = 0;
996
997 param = data_Barrel_Param;
998 sigmas = data_Barrel_Sigmas;
999
1000 extEta = MuonBackExtrapolator::retune_vtx(zetaId,zetaMu,eta);
1001
1002 float deltaPhi = param[side][sign][0]*(1./fabs(pt)) + param[side][sign][1];
1003 extPhi = phi - deltaPhi;
1004 if(extPhi>M_PI) extPhi -= 2*M_PI;
1005
1006 sigmaEta = sigmas[side][sign][0][0]*(1./fabs(PT)) + sigmas[side][sign][0][1];
1007
1008 sigmaPhi = sigmas[side][sign][1][0]*(1./fabs(PT)) + sigmas[side][sign][1][1];
1009
1010 return true;
1011 }
1012
1013
1014 //ENDCAP
1015 int phib = 0;
1016
1017 float Phi = phi;
1018 float MODULE = (2.*M_PI)/8.;
1019 while(Phi>MODULE) Phi -= MODULE;
1020 float CELL = MODULE/12.;
1021 while(Phi>CELL) {Phi -= CELL; phib++;}
1022
1023
1024 eta = MuonBackExtrapolator::retune_vtx(zetaId,zetaMu,eta);
1025
1026 int etab1 = 0;
1027 if (fabs(eta) >= 1.2 && fabs(eta) < 1.5) {
1028 etab1 = 1;
1029 }
1030 if (fabs(eta) >= 1.5 && fabs(eta) < 2.0) {
1031 etab1 = 2;
1032 }
1033 if (fabs(eta) >= 2.0) {
1034 etab1 = 3;
1035 }
1036
1037
1038 int etab2 = 0;
1039 if (fabs(eta) >= 1.6) {
1040 etab2 = 1;
1041 }
1042
1043
1044 double deltaEta = 0.;
1045 double deltaPhi = 0.;
1046
1047
1048
1049 if(triggerST) {
1050
1051 const double (*param)[12][2][2][2][2] = 0;
1052 const double (*sigmas)[12][2][2][2][2] = 0;
1053
1054 param = data_Endcap_TriggerST_Param;
1055 sigmas = data_Endcap_TriggerST_Sigmas;
1056
1057 deltaEta = param[etab1][phib][side][sign][0][0]*(1./fabs(pt))+param[etab1][phib][side][sign][0][1];
1058 deltaPhi = param[etab1][phib][side][sign][1][0]*(1./fabs(pt))+param[etab1][phib][side][sign][1][1];
1059 sigmaEta = sigmas[etab1][phib][side][sign][0][0]*(1./fabs(PT)) + sigmas[etab1][phib][side][sign][0][1];
1060 sigmaPhi = sigmas[etab1][phib][side][sign][1][0]*(1./fabs(PT)) + sigmas[etab1][phib][side][sign][1][1];
1061
1062 } else {
1063
1064 const double (*param)[12][2][2][2] = 0;
1065 const double (*sigmaP)[12][2][2][2] = 0;
1066 const double (*sigmaE)[2][2][2][2] = 0;
1067
1068 param = data_Endcap_InnerST_Param;
1069 sigmaP = data_Endcap_InnerST_PhiSigmas;
1070 sigmaE = data_Endcap_InnerST_EtaSigmas;
1071
1072 deltaPhi = (param[ptbi*2+etab2][phib][side][sign][0]*(1./fabs(pt))+param[ptbi*2+etab2][phib][side][sign][1]);
1073 sigmaEta = sigmaE[ptbi][etab2][side][sign][0]*(1./fabs(PT)) + sigmaE[ptbi][etab2][side][sign][1];
1074 sigmaPhi = sigmaP[ptbi*2+etab2][phib][side][sign][0]*(1./fabs(PT)) + sigmaP[ptbi*2+etab2][phib][side][sign][1];
1075
1076 }
1077
1078
1079
1080 extEta = eta - deltaEta;
1081 extPhi = phi - deltaPhi;
1082
1083 if(extPhi> M_PI) extPhi -= 2.0*M_PI;
1084
1085 return true;
1086}
#define M_PI
Scalar eta() const
pseudorapidity method
Scalar deltaPhi(const MatrixBase< Derived > &vec) const
Scalar phi() const
phi method
CaloCell CELL
CALORIMETER INCLUDES.
@ Phi
Definition RPCdef.h:8
int sign(int a)
double retune_vtx(double, double, double)
double retune_pt(double, bool dataset=false)
double deltaEta(const I4Momentum &p1, const I4Momentum &p2)
Computes efficiently .
Definition P4Helpers.h:66

◆ give_eta_phi_at_vertex()

bool MuonBackExtrapolator::give_eta_phi_at_vertex ( double pt,
double eta,
double phi,
bool barrel,
bool triggerST,
bool ,
bool dataset,
double & extEta,
double & sigmaEta,
double & extPhi,
double & sigmaPhi,
double PT,
const double data_Barrel_Param[2][2][2],
const double data_Barrel_Sigmas[2][2][2][2],
const double data_Endcap_TriggerST_Param[4][12][2][2][2][2],
const double data_Endcap_TriggerST_Sigmas[4][12][2][2][2][2],
const double data_Endcap_InnerST_Param[4][12][2][2][2],
const double data_Endcap_InnerST_PhiSigmas[4][12][2][2][2],
const double data_Endcap_InnerST_EtaSigmas[2][2][2][2][2] )

Definition at line 846 of file BackExtrapolator.cxx.

857{
858
859 pt = retune_pt(pt, dataset);
860 if(PT==0.) PT = pt;
861 else PT = retune_pt(PT, dataset);
862
863 int side = (eta > 0.)? 0 : 1;
864 int sign = (pt > 0.)? 0 : 1;
865 int ptbi = (fabs(pt) >= 6.)? 0 : 1;
866
867 if (phi<0.) phi += 2.0*M_PI;
868
869
870
871 // BARREL
872 if (barrel) {
873 const double (*param)[2][2] = 0;
874 const double (*sigmas)[2][2][2] = 0;
875
876 param = data_Barrel_Param;
877 sigmas = data_Barrel_Sigmas;
878
879 extEta = eta;
880
881 float deltaPhi = param[side][sign][0]*(1./fabs(pt)) + param[side][sign][1];
882 extPhi = phi - deltaPhi;
883 if(extPhi>M_PI) extPhi -= 2*M_PI;
884
885 sigmaEta = sigmas[side][sign][0][0]*(1./fabs(PT)) + sigmas[side][sign][0][1];
886
887 sigmaPhi = sigmas[side][sign][1][0]*(1./fabs(PT)) + sigmas[side][sign][1][1];
888
889 return true;
890 }
891
892
893 //ENDCAP
894 int phib = 0;
895
896 float Phi = phi;
897 float MODULE = (2.*M_PI)/8.;
898 while(Phi>MODULE) Phi -= MODULE;
899 float CELL = MODULE/12.;
900 while(Phi>CELL) {Phi -= CELL; phib++;}
901
902
903 int etab1 = 0;
904 if (fabs(eta) >= 1.2 && fabs(eta) < 1.5) {
905 etab1 = 1;
906 }
907 if (fabs(eta) >= 1.5 && fabs(eta) < 2.0) {
908 etab1 = 2;
909 }
910 if (fabs(eta) >= 2.0) {
911 etab1 = 3;
912 }
913
914
915 int etab2 = 0;
916 if (fabs(eta) >= 1.6) {
917 etab2 = 1;
918 }
919
920
921 double deltaEta = 0.;
922 double deltaPhi = 0.;
923
924
925
926 if(triggerST) {
927
928 const double (*param)[12][2][2][2][2] = 0;
929 const double (*sigmas)[12][2][2][2][2] = 0;
930
931 param = data_Endcap_TriggerST_Param;
932 sigmas = data_Endcap_TriggerST_Sigmas;
933
934 deltaEta = param[etab1][phib][side][sign][0][0]*(1./fabs(pt))+param[etab1][phib][side][sign][0][1];
935 deltaPhi = param[etab1][phib][side][sign][1][0]*(1./fabs(pt))+param[etab1][phib][side][sign][1][1];
936 sigmaEta = sigmas[etab1][phib][side][sign][0][0]*(1./fabs(PT)) + sigmas[etab1][phib][side][sign][0][1];
937 sigmaPhi = sigmas[etab1][phib][side][sign][1][0]*(1./fabs(PT)) + sigmas[etab1][phib][side][sign][1][1];
938
939 } else {
940
941 const double (*param)[12][2][2][2] = 0;
942 const double (*sigmaP)[12][2][2][2] = 0;
943 const double (*sigmaE)[2][2][2][2] = 0;
944
945 param = data_Endcap_InnerST_Param;
946 sigmaP = data_Endcap_InnerST_PhiSigmas;
947 sigmaE = data_Endcap_InnerST_EtaSigmas;
948
949 deltaPhi = (param[ptbi*2+etab2][phib][side][sign][0]*(1./fabs(pt))+ param[ptbi*2+etab2][phib][side][sign][1]);
950 sigmaEta = sigmaE[ptbi][etab2][side][sign][0]*(1./fabs(PT)) + sigmaE[ptbi][etab2][side][sign][1];
951 sigmaPhi = sigmaP[ptbi*2+etab2][phib][side][sign][0]*(1./fabs(PT)) + sigmaP[ptbi*2+etab2][phib][side][sign][1];
952
953 }
954
955
956
957 extEta = eta - deltaEta;
958 extPhi = phi - deltaPhi;
959
960 if(extPhi> M_PI) extPhi -= 2.0*M_PI;
961
962 return true;
963}

◆ idTrack_in_loose_window()

bool MuonBackExtrapolator::idTrack_in_loose_window ( double pt,
int address,
double radius,
double etaMu,
double phiMu,
double etaId,
double phiId,
bool aligned,
bool dataset,
double winPt,
double weight,
double data_Barrel_Param[2][2][2],
double data_Barrel_Sigmas[2][2][2][2],
double data_Endcap_TriggerST_Param[4][12][2][2][2][2],
double data_Endcap_TriggerST_Sigmas[4][12][2][2][2][2],
double data_Endcap_InnerST_Param[4][12][2][2][2],
double data_Endcap_InnerST_PhiSigmas[4][12][2][2][2],
double data_Endcap_InnerST_EtaSigmas[2][2][2][2][2] )

Definition at line 1090 of file BackExtrapolator.cxx.

1100{
1101 weight = fabs(weight);
1102 //if (weight>1.) weight = 1.;
1103
1104 if(fabs(winPt) > 40.) winPt = 40.;
1105 if(fabs(winPt) < 4. ) winPt = 4.;
1106
1107 double etaExtr = 0.;
1108 double sigmaEta = 0.;
1109 double phiExtr = 0.;
1110 double sigmaPhi = 0.;
1111
1112 if(!MuonBackExtrapolator::give_eta_phi_at_vertex( pt, etaMu, phiMu,
1113 (address!=-1), (radius <=10.), aligned, dataset,
1114 etaExtr, sigmaEta, phiExtr, sigmaPhi, winPt,
1115 data_Barrel_Param,
1116 data_Barrel_Sigmas,
1117 data_Endcap_TriggerST_Param,
1118 data_Endcap_TriggerST_Sigmas,
1119 data_Endcap_InnerST_Param,
1120 data_Endcap_InnerST_PhiSigmas,
1121 data_Endcap_InnerST_EtaSigmas))
1122 return false;
1123
1124 double deta = 100.;
1125 double dphi = 100.;
1126
1127 if ( etaId * etaExtr >= 0. ) deta = etaExtr - etaId;
1128 else deta = fabs(etaExtr)+ fabs(etaId);
1129
1130 if (phiExtr < 0.) phiExtr += 2.0*M_PI;
1131 if (phiId < 0.) phiId += 2.0*M_PI;
1132 dphi = fabs(phiExtr - phiId);
1133 if (dphi>M_PI) dphi = fabs(dphi-2.0*M_PI);
1134
1135
1136 double WinDeta = (radius<=10.)? 3.7*weight*sigmaEta : 3.0*weight*sigmaEta;
1137 double WinDphi = (radius<=10.)? 3.7*weight*sigmaPhi : 3.0*weight*sigmaPhi;
1138 if(radius>10.&&address==-1) WinDphi *= 2.5;
1139
1140
1141 if ( std::abs(deta) < WinDeta && std::abs(dphi) < WinDphi) return true;
1142
1143 return false;
1144}
bool give_eta_phi_at_vertex(double, double, double, bool, bool, bool, bool, double &, double &, double &, double &, double, const double data_Barrel_Param[2][2][2], const double data_Barrel_Sigmas[2][2][2][2], const double data_Endcap_TriggerST_Param[4][12][2][2][2][2], const double data_Endcap_TriggerST_Sigmas[4][12][2][2][2][2], const double data_Endcap_InnerST_Param[4][12][2][2][2], const double data_Endcap_InnerST_PhiSigmas[4][12][2][2][2], const double data_Endcap_InnerST_EtaSigmas[2][2][2][2][2])

◆ idTrack_in_tight_window()

bool MuonBackExtrapolator::idTrack_in_tight_window ( double pt,
int address,
double radius,
double zetaId,
double zetaMu,
double etaMu,
double phiMu,
double etaId,
double phiId,
bool aligned,
bool dataset,
double winPt,
double weight,
double data_Barrel_Param[2][2][2],
double data_Barrel_Sigmas[2][2][2][2],
double data_Endcap_TriggerST_Param[4][12][2][2][2][2],
double data_Endcap_TriggerST_Sigmas[4][12][2][2][2][2],
double data_Endcap_InnerST_Param[4][12][2][2][2],
double data_Endcap_InnerST_PhiSigmas[4][12][2][2][2],
double data_Endcap_InnerST_EtaSigmas[2][2][2][2][2] )

Definition at line 1149 of file BackExtrapolator.cxx.

1159{
1160 weight = fabs(weight);
1161 //if (weight>1.) weight = 1.;
1162
1163 if(fabs(winPt) > 40.) winPt = 40.;
1164 if(fabs(winPt) < 4. ) winPt = 4.;
1165
1166 double etaLooseExtr = 0.;
1167 double sigmaLooseEta = 0.;
1168 double phiLooseExtr = 0.;
1169 double sigmaLoosePhi = 0.;
1170
1172 etaMu, phiMu, (address!=-1), (radius <=10.), aligned, dataset,
1173 etaLooseExtr, sigmaLooseEta, phiLooseExtr, sigmaLoosePhi, winPt,
1174 data_Barrel_Param,
1175 data_Barrel_Sigmas,
1176 data_Endcap_TriggerST_Param,
1177 data_Endcap_TriggerST_Sigmas,
1178 data_Endcap_InnerST_Param,
1179 data_Endcap_InnerST_PhiSigmas,
1180 data_Endcap_InnerST_EtaSigmas))
1181 return false;
1182
1183 double etaTightExtr = 0.;
1184 double sigmaTightEta = 0.;
1185 double phiTightExtr = 0.;
1186 double sigmaTightPhi = 0.;
1187
1189 etaMu, phiMu, (address!=-1), (radius <=10.), aligned, dataset,
1190 etaTightExtr, sigmaTightEta, phiTightExtr, sigmaTightPhi, 0.,
1191 data_Barrel_Param,
1192 data_Barrel_Sigmas,
1193 data_Endcap_TriggerST_Param,
1194 data_Endcap_TriggerST_Sigmas,
1195 data_Endcap_InnerST_Param,
1196 data_Endcap_InnerST_PhiSigmas,
1197 data_Endcap_InnerST_EtaSigmas))
1198 return false;
1199
1200
1201 //double detaLoose = 100.;
1202 //double dphiLoose = 100.;
1203 double detaTight = 100.;
1204 double dphiTight = 100.;
1205
1206
1207 //if ( etaId * etaLooseExtr >= 0. ) detaLoose = etaLooseExtr - etaId;
1208 //else detaLoose = fabs(etaLooseExtr)+ fabs(etaId);
1209
1210 if ( etaId * etaTightExtr >= 0. ) detaTight = etaTightExtr - etaId;
1211 else detaTight = fabs(etaTightExtr)+ fabs(etaId);
1212
1213
1214 if (phiLooseExtr < 0.) phiLooseExtr += 2.0*M_PI;
1215 if (phiTightExtr < 0.) phiTightExtr += 2.0*M_PI;
1216 if (phiId < 0.) phiId += 2.0*M_PI;
1217
1218 //dphiLoose = fabs(phiLooseExtr - phiId);
1219 //if (dphiLoose>M_PI) dphiLoose = fabs(dphiLoose-2.0*M_PI);
1220
1221 dphiTight = fabs(phiTightExtr - phiId);
1222 if (dphiTight>M_PI) dphiTight = fabs(dphiTight-2.0*M_PI);
1223
1224
1225// double WinDetaLoose = (radius<=10.)? 3.7*weight*sigmaLooseEta : 3.0*weight*sigmaLooseEta;
1226// double WinDphiLoose = (radius<=10.)? 3.7*weight*sigmaLoosePhi : 3.0*weight*sigmaLoosePhi;
1227
1228
1229 double WinDetaTight = (radius<=10.)? 3.7*weight*sigmaTightEta : 3.0*weight*sigmaTightEta;
1230 double WinDphiTight = (radius<=10.)? 3.7*weight*sigmaTightPhi : 3.0*weight*sigmaTightPhi;
1231
1232 if(radius>10.&&address==-1) {
1233 WinDphiTight *= 2.5;
1234// WinDphiLoose *= 2.5;
1235 }
1236
1237 if(address!=-1) {
1238 double mul = 1.;
1239 if(fabs(pt)>6.) mul = 1.+ (2./34.)*(fabs(pt)-6.);
1240
1241 if ( fabs(detaTight) < WinDetaTight*mul &&
1242 fabs(dphiTight) < WinDphiTight*mul) return true;
1243 } else {
1244 if (radius<=10.) {
1245 double mul = 1. + (3./34.)*(fabs(pt)-6.);
1246 if ( fabs(detaTight) < WinDetaTight*1.1 &&
1247 fabs(dphiTight) < WinDphiTight*mul) return true;
1248 } else {
1249 double mul = 1. + (1./34.)*(fabs(pt)-6.);
1250
1251 if ( fabs(detaTight) < WinDetaTight*1.2 &&
1252 fabs(dphiTight) < fabs(WinDphiTight)*mul) return true;
1253 }
1254 }
1255
1256 return false;
1257}
bool give_eta_phi_at_tuned_vertex(double, double, double, double, double, bool, bool, bool, bool, double &, double &, double &, double &, double, const double data_Barrel_Param[2][2][2], const double data_Barrel_Sigmas[2][2][2][2], const double data_Endcap_TriggerST_Param[4][12][2][2][2][2], const double data_Endcap_TriggerST_Sigmas[4][12][2][2][2][2], const double data_Endcap_InnerST_Param[4][12][2][2][2], const double data_Endcap_InnerST_PhiSigmas[4][12][2][2][2], const double data_Endcap_InnerST_EtaSigmas[2][2][2][2][2])

◆ retune_pt()

double MuonBackExtrapolator::retune_pt ( double pt,
bool dataset = false )

Definition at line 1274 of file BackExtrapolator.cxx.

1275{
1276 double tuned_pt = pt;
1277
1278 if(pt < 0.)
1279 {
1280 if(pt <= -40.) tuned_pt = -40.;
1281 if(pt >= -4. ) tuned_pt = -4.;
1282 }
1283 else
1284 {
1285 if(pt >= 40.) tuned_pt = 40.;
1286 if(pt <= 4. ) tuned_pt = 4.;
1287 }
1288
1289 return tuned_pt;
1290}

◆ retune_vtx()

double MuonBackExtrapolator::retune_vtx ( double IdZeta,
double MuonZeta,
double eta )

Definition at line 1261 of file BackExtrapolator.cxx.

1262{
1263 if (MuonZeta==0.) return eta;
1264 if(fabs(MuonZeta)<2000.) IdZeta/=10.;
1265 double theta = atan(exp(-fabs(eta)))*2.;
1266 double radius = tan(theta)*fabs(MuonZeta);
1267 double zeta = MuonZeta - IdZeta;
1268 double signZ = zeta/fabs(zeta);
1269 theta = atan2(radius,fabs(zeta));
1270 return (-log(tan(theta/2.)))*signZ;
1271}
Scalar theta() const
theta method