17 fIsInitialized(kFALSE),
18 fVersionType(kNoTrkVar),
19 forestCorrection_eb(0),
20 forestCorrection_ee(0),
21 forestUncertainty_eb(0),
22 forestUncertainty_ee(0) {
41 assert(forestCorrection_eb);
57 double rho,
double nvertices,
61 std::cout <<
"Error: Electron Energy Regression has not been initialized yet. return 0. \n";
68 std::cout <<
"Electron : " << ele->
pt() <<
" " << ele->
eta() <<
" " << ele->
phi() <<
"\n";
259 fmax(ele->
fbrem(),-1.0),
306 fmax(ele->
fbrem(),-1.0),
323 std::cout <<
"Warning: Electron Regression Type " <<
fVersionType <<
" is not supported. Reverting to default electron momentum.\n";
332 double rho,
double nvertices,
336 std::cout <<
"Error: Electron Energy Regression has not been initialized yet. return 0. \n";
343 std::cout <<
"Electron : " << ele->
pt() <<
" " << ele->
eta() <<
" " << ele->
phi() <<
"\n";
534 fmax(ele->
fbrem(),-1.0),
581 fmax(ele->
fbrem(),-1.0),
598 std::cout <<
"Warning: Electron Regression Type " <<
fVersionType <<
" is not supported. Reverting to default electron momentum.\n";
632 double E2x5BottomSeed,
634 double E2x5RightSeed,
639 double PreShowerOverRaw,
644 printf(
"ElectronEnergyRegressionEvaluate instance not initialized !!!");
650 std::cout <<
"Error: Regression VersionType " <<
fVersionType <<
" is not supported to use function regressionValueNoTrkVar.\n";
656 float *
vals = (fabs(scEta) <= 1.479) ?
new float[38] :
new float[31];
657 if (fabs(scEta) <= 1.479) {
658 vals[0] = SCRawEnergy;
662 vals[4] = E5x5Seed/SCRawEnergy;
669 vals[11] = EtaSeed - scEta;
670 vals[12] = atan2(
sin(PhiSeed-scPhi),
cos(PhiSeed-scPhi));
671 vals[13] = ESeed/SCRawEnergy;
672 vals[14] = E3x3Seed/ESeed;
673 vals[15] = E5x5Seed/ESeed;
677 vals[19] = EMaxSeed/ESeed;
678 vals[20] = E2ndSeed/ESeed;
679 vals[21] = ETopSeed/ESeed;
680 vals[22] = EBottomSeed/ESeed;
681 vals[23] = ELeftSeed/ESeed;
682 vals[24] = ERightSeed/ESeed;
683 vals[25] = E2x5MaxSeed/ESeed;
684 vals[26] = E2x5TopSeed/ESeed;
685 vals[27] = E2x5BottomSeed/ESeed;
686 vals[28] = E2x5LeftSeed/ESeed;
687 vals[29] = E2x5RightSeed/ESeed;
690 vals[32] = ((int) IEtaSeed)%5;
691 vals[33] = ((int) IPhiSeed)%2;
692 vals[34] = (
abs(IEtaSeed)<=25)*(((
int)IEtaSeed)%25) + (
abs(IEtaSeed)>25)*(((
int) (IEtaSeed-25*
abs(IEtaSeed)/IEtaSeed))%20);
693 vals[35] = ((int) IPhiSeed)%20;
694 vals[36] = EtaCrySeed;
695 vals[37] = PhiCrySeed;
698 vals[0] = SCRawEnergy;
702 vals[4] = E5x5Seed/SCRawEnergy;
709 vals[11] = EtaSeed - scEta;
710 vals[12] = atan2(
sin(PhiSeed-scPhi),
cos(PhiSeed-scPhi));
711 vals[13] = ESeed/SCRawEnergy;
712 vals[14] = E3x3Seed/ESeed;
713 vals[15] = E5x5Seed/ESeed;
717 vals[19] = EMaxSeed/ESeed;
718 vals[20] = E2ndSeed/ESeed;
719 vals[21] = ETopSeed/ESeed;
720 vals[22] = EBottomSeed/ESeed;
721 vals[23] = ELeftSeed/ESeed;
722 vals[24] = ERightSeed/ESeed;
723 vals[25] = E2x5MaxSeed/ESeed;
724 vals[26] = E2x5TopSeed/ESeed;
725 vals[27] = E2x5BottomSeed/ESeed;
726 vals[28] = E2x5LeftSeed/ESeed;
727 vals[29] = E2x5RightSeed/ESeed;
728 vals[30] = PreShowerOverRaw;
732 double regressionResult = 0;
736 if (fabs(scEta) <= 1.479) {
748 if ( fabs(scEta) <= 1.479) {
750 for (
unsigned int v=0;
v < 38; ++
v)
std::cout << vals[
v] <<
", ";
755 for (
unsigned int v=0;
v < 31; ++
v)
std::cout << vals[
v] <<
", ";
758 std::cout <<
"BinIndex : " << BinIndex <<
"\n";
759 std::cout <<
"SCRawEnergy = " << SCRawEnergy <<
" : PreShowerOverRaw = " << PreShowerOverRaw << std::endl;
760 std::cout <<
"regression energy = " << regressionResult << std::endl;
766 return regressionResult;
796 double E2x5BottomSeed,
798 double E2x5RightSeed,
803 double PreShowerOverRaw,
808 printf(
"ElectronEnergyRegressionEvaluate instance not initialized !!!");
814 std::cout <<
"Error: Regression VersionType " <<
fVersionType <<
" is not supported to use function regressionValueNoTrkVar.\n";
819 float *
vals = (fabs(scEta) <= 1.479) ?
new float[38] :
new float[31];
820 if (fabs(scEta) <= 1.479) {
821 vals[0] = SCRawEnergy;
825 vals[4] = E5x5Seed/SCRawEnergy;
832 vals[11] = EtaSeed - scEta;
833 vals[12] = atan2(
sin(PhiSeed-scPhi),
cos(PhiSeed-scPhi));
834 vals[13] = ESeed/SCRawEnergy;
835 vals[14] = E3x3Seed/ESeed;
836 vals[15] = E5x5Seed/ESeed;
840 vals[19] = EMaxSeed/ESeed;
841 vals[20] = E2ndSeed/ESeed;
842 vals[21] = ETopSeed/ESeed;
843 vals[22] = EBottomSeed/ESeed;
844 vals[23] = ELeftSeed/ESeed;
845 vals[24] = ERightSeed/ESeed;
846 vals[25] = E2x5MaxSeed/ESeed;
847 vals[26] = E2x5TopSeed/ESeed;
848 vals[27] = E2x5BottomSeed/ESeed;
849 vals[28] = E2x5LeftSeed/ESeed;
850 vals[29] = E2x5RightSeed/ESeed;
853 vals[32] = ((int) IEtaSeed)%5;
854 vals[33] = ((int) IPhiSeed)%2;
855 vals[34] = (
abs(IEtaSeed)<=25)*(((
int)IEtaSeed)%25) + (
abs(IEtaSeed)>25)*(((
int) (IEtaSeed-25*
abs(IEtaSeed)/IEtaSeed))%20);
856 vals[35] = ((int) IPhiSeed)%20;
857 vals[36] = EtaCrySeed;
858 vals[37] = PhiCrySeed;
861 vals[0] = SCRawEnergy;
865 vals[4] = E5x5Seed/SCRawEnergy;
872 vals[11] = EtaSeed - scEta;
873 vals[12] = atan2(
sin(PhiSeed-scPhi),
cos(PhiSeed-scPhi));
874 vals[13] = ESeed/SCRawEnergy;
875 vals[14] = E3x3Seed/ESeed;
876 vals[15] = E5x5Seed/ESeed;
880 vals[19] = EMaxSeed/ESeed;
881 vals[20] = E2ndSeed/ESeed;
882 vals[21] = ETopSeed/ESeed;
883 vals[22] = EBottomSeed/ESeed;
884 vals[23] = ELeftSeed/ESeed;
885 vals[24] = ERightSeed/ESeed;
886 vals[25] = E2x5MaxSeed/ESeed;
887 vals[26] = E2x5TopSeed/ESeed;
888 vals[27] = E2x5BottomSeed/ESeed;
889 vals[28] = E2x5LeftSeed/ESeed;
890 vals[29] = E2x5RightSeed/ESeed;
891 vals[30] = PreShowerOverRaw;
895 double regressionResult = 0;
899 if (fabs(scEta) <= 1.479) {
911 if (fabs(scEta) <= 1.479) {
913 for (
unsigned int v=0;
v < 38; ++
v)
std::cout << vals[
v] <<
", ";
918 for (
unsigned int v=0;
v < 31; ++
v)
std::cout << vals[
v] <<
", ";
921 std::cout <<
"BinIndex : " << BinIndex <<
"\n";
922 std::cout <<
"SCRawEnergy = " << SCRawEnergy <<
" : PreShowerOverRaw = " << PreShowerOverRaw << std::endl;
923 std::cout <<
"regression energy uncertainty = " << regressionResult << std::endl;
929 return regressionResult;
962 double E2x5BottomSeed,
964 double E2x5RightSeed,
969 double PreShowerOverRaw,
975 printf(
"ElectronEnergyRegressionEvaluate instance not initialized !!!");
981 std::cout <<
"Error: Regression VersionType " <<
fVersionType <<
" is not supported to use function regressionValueNoTrkVar.\n";
986 float *
vals = (fabs(scEta) <= 1.479) ?
new float[39] :
new float[32];
987 if (fabs(scEta) <= 1.479) {
988 vals[0] = SCRawEnergy;
992 vals[4] = E5x5Seed/SCRawEnergy;
999 vals[11] = EtaSeed - scEta;
1000 vals[12] = atan2(
sin(PhiSeed-scPhi),
cos(PhiSeed-scPhi));
1001 vals[13] = ESeed/SCRawEnergy;
1002 vals[14] = E3x3Seed/ESeed;
1003 vals[15] = E5x5Seed/ESeed;
1007 vals[19] = EMaxSeed/ESeed;
1008 vals[20] = E2ndSeed/ESeed;
1009 vals[21] = ETopSeed/ESeed;
1010 vals[22] = EBottomSeed/ESeed;
1011 vals[23] = ELeftSeed/ESeed;
1012 vals[24] = ERightSeed/ESeed;
1013 vals[25] = E2x5MaxSeed/ESeed;
1014 vals[26] = E2x5TopSeed/ESeed;
1015 vals[27] = E2x5BottomSeed/ESeed;
1016 vals[28] = E2x5LeftSeed/ESeed;
1017 vals[29] = E2x5RightSeed/ESeed;
1018 vals[30] = IsEcalDriven;
1019 vals[31] = IEtaSeed;
1020 vals[32] = IPhiSeed;
1021 vals[33] = ((int) IEtaSeed)%5;
1022 vals[34] = ((int) IPhiSeed)%2;
1023 vals[35] = (
abs(IEtaSeed)<=25)*(((
int)IEtaSeed)%25) + (
abs(IEtaSeed)>25)*(((
int) (IEtaSeed-25*
abs(IEtaSeed)/IEtaSeed))%20);
1024 vals[36] = ((int) IPhiSeed)%20;
1025 vals[37] = EtaCrySeed;
1026 vals[38] = PhiCrySeed;
1029 vals[0] = SCRawEnergy;
1033 vals[4] = E5x5Seed/SCRawEnergy;
1036 vals[7] = NClusters;
1039 vals[10] = vertices;
1040 vals[11] = EtaSeed - scEta;
1041 vals[12] = atan2(
sin(PhiSeed-scPhi),
cos(PhiSeed-scPhi));
1042 vals[13] = ESeed/SCRawEnergy;
1043 vals[14] = E3x3Seed/ESeed;
1044 vals[15] = E5x5Seed/ESeed;
1048 vals[19] = EMaxSeed/ESeed;
1049 vals[20] = E2ndSeed/ESeed;
1050 vals[21] = ETopSeed/ESeed;
1051 vals[22] = EBottomSeed/ESeed;
1052 vals[23] = ELeftSeed/ESeed;
1053 vals[24] = ERightSeed/ESeed;
1054 vals[25] = E2x5MaxSeed/ESeed;
1055 vals[26] = E2x5TopSeed/ESeed;
1056 vals[27] = E2x5BottomSeed/ESeed;
1057 vals[28] = E2x5LeftSeed/ESeed;
1058 vals[29] = E2x5RightSeed/ESeed;
1059 vals[30] = IsEcalDriven;
1060 vals[31] = PreShowerOverRaw;
1064 double regressionResult = 0;
1065 Int_t BinIndex = -1;
1068 if (fabs(scEta) <= 1.479) {
1080 if ( fabs(scEta) <= 1.479) {
1082 for (
unsigned int v=0;
v < 39; ++
v)
std::cout << vals[
v] <<
", ";
1087 for (
unsigned int v=0;
v < 32; ++
v)
std::cout << vals[
v] <<
", ";
1090 std::cout <<
"BinIndex : " << BinIndex <<
"\n";
1091 std::cout <<
"SCRawEnergy = " << SCRawEnergy <<
" : PreShowerOverRaw = " << PreShowerOverRaw << std::endl;
1092 std::cout <<
"regression energy = " << regressionResult << std::endl;
1098 return regressionResult;
1128 double E2x5BottomSeed,
1129 double E2x5LeftSeed,
1130 double E2x5RightSeed,
1135 double PreShowerOverRaw,
1141 printf(
"ElectronEnergyRegressionEvaluate instance not initialized !!!");
1147 std::cout <<
"Error: Regression VersionType " <<
fVersionType <<
" is not supported to use function regressionValueNoTrkVar.\n";
1152 float *
vals = (fabs(scEta) <= 1.479) ?
new float[39] :
new float[32];
1153 if (fabs(scEta) <= 1.479) {
1154 vals[0] = SCRawEnergy;
1158 vals[4] = E5x5Seed/SCRawEnergy;
1161 vals[7] = NClusters;
1164 vals[10] = vertices;
1165 vals[11] = EtaSeed - scEta;
1166 vals[12] = atan2(
sin(PhiSeed-scPhi),
cos(PhiSeed-scPhi));
1167 vals[13] = ESeed/SCRawEnergy;
1168 vals[14] = E3x3Seed/ESeed;
1169 vals[15] = E5x5Seed/ESeed;
1173 vals[19] = EMaxSeed/ESeed;
1174 vals[20] = E2ndSeed/ESeed;
1175 vals[21] = ETopSeed/ESeed;
1176 vals[22] = EBottomSeed/ESeed;
1177 vals[23] = ELeftSeed/ESeed;
1178 vals[24] = ERightSeed/ESeed;
1179 vals[25] = E2x5MaxSeed/ESeed;
1180 vals[26] = E2x5TopSeed/ESeed;
1181 vals[27] = E2x5BottomSeed/ESeed;
1182 vals[28] = E2x5LeftSeed/ESeed;
1183 vals[29] = E2x5RightSeed/ESeed;
1184 vals[30] = IsEcalDriven;
1185 vals[31] = IEtaSeed;
1186 vals[32] = IPhiSeed;
1187 vals[33] = ((int) IEtaSeed)%5;
1188 vals[34] = ((int) IPhiSeed)%2;
1189 vals[35] = (
abs(IEtaSeed)<=25)*(((
int)IEtaSeed)%25) + (
abs(IEtaSeed)>25)*(((
int) (IEtaSeed-25*
abs(IEtaSeed)/IEtaSeed))%20);
1190 vals[36] = ((int) IPhiSeed)%20;
1191 vals[37] = EtaCrySeed;
1192 vals[38] = PhiCrySeed;
1195 vals[0] = SCRawEnergy;
1199 vals[4] = E5x5Seed/SCRawEnergy;
1202 vals[7] = NClusters;
1205 vals[10] = vertices;
1206 vals[11] = EtaSeed - scEta;
1207 vals[12] = atan2(
sin(PhiSeed-scPhi),
cos(PhiSeed-scPhi));
1208 vals[13] = ESeed/SCRawEnergy;
1209 vals[14] = E3x3Seed/ESeed;
1210 vals[15] = E5x5Seed/ESeed;
1214 vals[19] = EMaxSeed/ESeed;
1215 vals[20] = E2ndSeed/ESeed;
1216 vals[21] = ETopSeed/ESeed;
1217 vals[22] = EBottomSeed/ESeed;
1218 vals[23] = ELeftSeed/ESeed;
1219 vals[24] = ERightSeed/ESeed;
1220 vals[25] = E2x5MaxSeed/ESeed;
1221 vals[26] = E2x5TopSeed/ESeed;
1222 vals[27] = E2x5BottomSeed/ESeed;
1223 vals[28] = E2x5LeftSeed/ESeed;
1224 vals[29] = E2x5RightSeed/ESeed;
1225 vals[30] = IsEcalDriven;
1226 vals[31] = PreShowerOverRaw;
1230 double regressionResult = 0;
1231 Int_t BinIndex = -1;
1234 if (fabs(scEta) <= 1.479) {
1246 if (fabs(scEta) <= 1.479) {
1248 for (
unsigned int v=0;
v < 39; ++
v)
std::cout << vals[
v] <<
", ";
1253 for (
unsigned int v=0;
v < 32; ++
v)
std::cout << vals[
v] <<
", ";
1256 std::cout <<
"BinIndex : " << BinIndex <<
"\n";
1257 std::cout <<
"SCRawEnergy = " << SCRawEnergy <<
" : PreShowerOverRaw = " << PreShowerOverRaw << std::endl;
1258 std::cout <<
"regression energy uncertainty = " << regressionResult << std::endl;
1264 return regressionResult;
1299 double E2x5BottomSeed,
1300 double E2x5LeftSeed,
1301 double E2x5RightSeed,
1311 double PreShowerOverRaw,
1316 printf(
"ElectronEnergyRegressionEvaluate instance not initialized !!!");
1323 float *
vals = (fabs(scEta) <= 1.479) ?
new float[43] :
new float[36];
1324 if (fabs(scEta) <= 1.479) {
1325 vals[0] = SCRawEnergy;
1329 vals[4] = E5x5Seed/SCRawEnergy;
1332 vals[7] = NClusters;
1335 vals[10] = vertices;
1336 vals[11] = EtaSeed - scEta;
1337 vals[12] = atan2(
sin(PhiSeed-scPhi),
cos(PhiSeed-scPhi));
1338 vals[13] = ESeed/SCRawEnergy;
1339 vals[14] = E3x3Seed/ESeed;
1340 vals[15] = E5x5Seed/ESeed;
1344 vals[19] = EMaxSeed/ESeed;
1345 vals[20] = E2ndSeed/ESeed;
1346 vals[21] = ETopSeed/ESeed;
1347 vals[22] = EBottomSeed/ESeed;
1348 vals[23] = ELeftSeed/ESeed;
1349 vals[24] = ERightSeed/ESeed;
1350 vals[25] = E2x5MaxSeed/ESeed;
1351 vals[26] = E2x5TopSeed/ESeed;
1352 vals[27] = E2x5BottomSeed/ESeed;
1353 vals[28] = E2x5LeftSeed/ESeed;
1354 vals[29] = E2x5RightSeed/ESeed;
1356 vals[31] = GsfTrackPIn;
1360 vals[35] = IEtaSeed;
1361 vals[36] = IPhiSeed;
1362 vals[37] = ((int) IEtaSeed)%5;
1363 vals[38] = ((int) IPhiSeed)%2;
1364 vals[39] = (
abs(IEtaSeed)<=25)*(((
int)IEtaSeed)%25) + (
abs(IEtaSeed)>25)*(((
int) (IEtaSeed-25*
abs(IEtaSeed)/IEtaSeed))%20);
1365 vals[40] = ((int) IPhiSeed)%20;
1366 vals[41] = EtaCrySeed;
1367 vals[42] = PhiCrySeed;
1371 vals[0] = SCRawEnergy;
1375 vals[4] = E5x5Seed/SCRawEnergy;
1378 vals[7] = NClusters;
1381 vals[10] = vertices;
1382 vals[11] = EtaSeed - scEta;
1383 vals[12] = atan2(
sin(PhiSeed-scPhi),
cos(PhiSeed-scPhi));
1384 vals[13] = ESeed/SCRawEnergy;
1385 vals[14] = E3x3Seed/ESeed;
1386 vals[15] = E5x5Seed/ESeed;
1390 vals[19] = EMaxSeed/ESeed;
1391 vals[20] = E2ndSeed/ESeed;
1392 vals[21] = ETopSeed/ESeed;
1393 vals[22] = EBottomSeed/ESeed;
1394 vals[23] = ELeftSeed/ESeed;
1395 vals[24] = ERightSeed/ESeed;
1396 vals[25] = E2x5MaxSeed/ESeed;
1397 vals[26] = E2x5TopSeed/ESeed;
1398 vals[27] = E2x5BottomSeed/ESeed;
1399 vals[28] = E2x5LeftSeed/ESeed;
1400 vals[29] = E2x5RightSeed/ESeed;
1402 vals[31] = GsfTrackPIn;
1406 vals[35] = PreShowerOverRaw;
1410 double regressionResult = 0;
1420 if (scEta <= 1.479) {
1422 for (
unsigned int v=0;
v < 43; ++
v)
std::cout << vals[
v] <<
", ";
1427 for (
unsigned int v=0;
v < 36; ++
v)
std::cout << vals[
v] <<
", ";
1430 std::cout <<
"pt = " << pt <<
" : SCRawEnergy = " << SCRawEnergy <<
" : PreShowerOverRaw = " << PreShowerOverRaw << std::endl;
1431 std::cout <<
"regression energy = " << regressionResult << std::endl;
1436 return regressionResult;
1472 double E2x5BottomSeed,
1473 double E2x5LeftSeed,
1474 double E2x5RightSeed,
1484 double PreShowerOverRaw,
1489 printf(
"ElectronEnergyRegressionEvaluate instance not initialized !!!");
1496 float *
vals = (fabs(scEta) <= 1.479) ?
new float[43] :
new float[36];
1497 if (fabs(scEta) <= 1.479) {
1498 vals[0] = SCRawEnergy;
1502 vals[4] = E5x5Seed/SCRawEnergy;
1505 vals[7] = NClusters;
1508 vals[10] = vertices;
1509 vals[11] = EtaSeed - scEta;
1510 vals[12] = atan2(
sin(PhiSeed-scPhi),
cos(PhiSeed-scPhi));
1511 vals[13] = ESeed/SCRawEnergy;
1512 vals[14] = E3x3Seed/ESeed;
1513 vals[15] = E5x5Seed/ESeed;
1517 vals[19] = EMaxSeed/ESeed;
1518 vals[20] = E2ndSeed/ESeed;
1519 vals[21] = ETopSeed/ESeed;
1520 vals[22] = EBottomSeed/ESeed;
1521 vals[23] = ELeftSeed/ESeed;
1522 vals[24] = ERightSeed/ESeed;
1523 vals[25] = E2x5MaxSeed/ESeed;
1524 vals[26] = E2x5TopSeed/ESeed;
1525 vals[27] = E2x5BottomSeed/ESeed;
1526 vals[28] = E2x5LeftSeed/ESeed;
1527 vals[29] = E2x5RightSeed/ESeed;
1529 vals[31] = GsfTrackPIn;
1533 vals[35] = IEtaSeed;
1534 vals[36] = IPhiSeed;
1535 vals[37] = ((int) IEtaSeed)%5;
1536 vals[38] = ((int) IPhiSeed)%2;
1537 vals[39] = (
abs(IEtaSeed)<=25)*(((
int)IEtaSeed)%25) + (
abs(IEtaSeed)>25)*(((
int) (IEtaSeed-25*
abs(IEtaSeed)/IEtaSeed))%20);
1538 vals[40] = ((int) IPhiSeed)%20;
1539 vals[41] = EtaCrySeed;
1540 vals[42] = PhiCrySeed;
1544 vals[0] = SCRawEnergy;
1548 vals[4] = E5x5Seed/SCRawEnergy;
1551 vals[7] = NClusters;
1554 vals[10] = vertices;
1555 vals[11] = EtaSeed - scEta;
1556 vals[12] = atan2(
sin(PhiSeed-scPhi),
cos(PhiSeed-scPhi));
1557 vals[13] = ESeed/SCRawEnergy;
1558 vals[14] = E3x3Seed/ESeed;
1559 vals[15] = E5x5Seed/ESeed;
1563 vals[19] = EMaxSeed/ESeed;
1564 vals[20] = E2ndSeed/ESeed;
1565 vals[21] = ETopSeed/ESeed;
1566 vals[22] = EBottomSeed/ESeed;
1567 vals[23] = ELeftSeed/ESeed;
1568 vals[24] = ERightSeed/ESeed;
1569 vals[25] = E2x5MaxSeed/ESeed;
1570 vals[26] = E2x5TopSeed/ESeed;
1571 vals[27] = E2x5BottomSeed/ESeed;
1572 vals[28] = E2x5LeftSeed/ESeed;
1573 vals[29] = E2x5RightSeed/ESeed;
1575 vals[31] = GsfTrackPIn;
1579 vals[35] = PreShowerOverRaw;
1583 double regressionResult = 0;
1592 if (scEta <= 1.479) {
1594 for (
unsigned int v=0;
v < 43; ++
v)
std::cout << vals[
v] <<
", ";
1599 for (
unsigned int v=0;
v < 36; ++
v)
std::cout << vals[
v] <<
", ";
1602 std::cout <<
"pt = " << pt <<
" : SCRawEnergy = " << SCRawEnergy <<
" : PreShowerOverRaw = " << PreShowerOverRaw << std::endl;
1603 std::cout <<
"regression energy uncertainty = " << regressionResult << std::endl;
1609 return regressionResult;
1642 double E2x5BottomSeed,
1643 double E2x5LeftSeed,
1644 double E2x5RightSeed,
1649 double PreShowerOverRaw,
1655 double TrackMomentumError,
1656 double EcalEnergyError,
1662 printf(
"ElectronEnergyRegressionEvaluate instance not initialized !!!");
1669 float *
vals = (fabs(scEta) <= 1.479) ?
new float[46] :
new float[39];
1670 if (fabs(scEta) <= 1.479) {
1671 vals[0] = SCRawEnergy;
1675 vals[4] = E5x5Seed/SCRawEnergy;
1678 vals[7] = NClusters;
1681 vals[10] = vertices;
1682 vals[11] = EtaSeed - scEta;
1683 vals[12] = atan2(
sin(PhiSeed-scPhi),
cos(PhiSeed-scPhi));
1684 vals[13] = ESeed/SCRawEnergy;
1685 vals[14] = E3x3Seed/ESeed;
1686 vals[15] = E5x5Seed/ESeed;
1690 vals[19] = EMaxSeed/ESeed;
1691 vals[20] = E2ndSeed/ESeed;
1692 vals[21] = ETopSeed/ESeed;
1693 vals[22] = EBottomSeed/ESeed;
1694 vals[23] = ELeftSeed/ESeed;
1695 vals[24] = ERightSeed/ESeed;
1696 vals[25] = E2x5MaxSeed/ESeed;
1697 vals[26] = E2x5TopSeed/ESeed;
1698 vals[27] = E2x5BottomSeed/ESeed;
1699 vals[28] = E2x5LeftSeed/ESeed;
1700 vals[29] = E2x5RightSeed/ESeed;
1701 vals[30] = IsEcalDriven;
1702 vals[31] = GsfTrackPIn;
1706 vals[35] = TrackMomentumError/GsfTrackPIn;
1707 vals[36] = EcalEnergyError/SCRawEnergy;
1708 vals[37] = Classification;
1709 vals[38] = IEtaSeed;
1710 vals[39] = IPhiSeed;
1711 vals[40] = ((int) IEtaSeed)%5;
1712 vals[41] = ((int) IPhiSeed)%2;
1713 vals[42] = (
abs(IEtaSeed)<=25)*(((
int)IEtaSeed)%25) + (
abs(IEtaSeed)>25)*(((
int) (IEtaSeed-25*
abs(IEtaSeed)/IEtaSeed))%20);
1714 vals[43] = ((int) IPhiSeed)%20;
1715 vals[44] = EtaCrySeed;
1716 vals[45] = PhiCrySeed;
1720 vals[0] = SCRawEnergy;
1724 vals[4] = E5x5Seed/SCRawEnergy;
1727 vals[7] = NClusters;
1730 vals[10] = vertices;
1731 vals[11] = EtaSeed - scEta;
1732 vals[12] = atan2(
sin(PhiSeed-scPhi),
cos(PhiSeed-scPhi));
1733 vals[13] = ESeed/SCRawEnergy;
1734 vals[14] = E3x3Seed/ESeed;
1735 vals[15] = E5x5Seed/ESeed;
1739 vals[19] = EMaxSeed/ESeed;
1740 vals[20] = E2ndSeed/ESeed;
1741 vals[21] = ETopSeed/ESeed;
1742 vals[22] = EBottomSeed/ESeed;
1743 vals[23] = ELeftSeed/ESeed;
1744 vals[24] = ERightSeed/ESeed;
1745 vals[25] = E2x5MaxSeed/ESeed;
1746 vals[26] = E2x5TopSeed/ESeed;
1747 vals[27] = E2x5BottomSeed/ESeed;
1748 vals[28] = E2x5LeftSeed/ESeed;
1749 vals[29] = E2x5RightSeed/ESeed;
1750 vals[30] = IsEcalDriven;
1751 vals[31] = GsfTrackPIn;
1755 vals[35] = TrackMomentumError/GsfTrackPIn;
1756 vals[36] = EcalEnergyError/SCRawEnergy;
1757 vals[37] = Classification;
1758 vals[38] = PreShowerOverRaw;
1762 double regressionResult = 0;
1772 if (fabs(scEta) <= 1.479) {
1774 for (
unsigned int v=0;
v < 46; ++
v)
std::cout << vals[
v] <<
", ";
1779 for (
unsigned int v=0;
v < 39; ++
v)
std::cout << vals[
v] <<
", ";
1782 std::cout <<
"SCRawEnergy = " << SCRawEnergy <<
" : PreShowerOverRaw = " << PreShowerOverRaw << std::endl;
1783 std::cout <<
"regression energy = " << regressionResult << std::endl;
1788 return regressionResult;
1821 double E2x5BottomSeed,
1822 double E2x5LeftSeed,
1823 double E2x5RightSeed,
1828 double PreShowerOverRaw,
1834 double TrackMomentumError,
1835 double EcalEnergyError,
1841 printf(
"ElectronEnergyRegressionEvaluate instance not initialized !!!");
1848 float *
vals = (fabs(scEta) <= 1.479) ?
new float[46] :
new float[39];
1849 if (fabs(scEta) <= 1.479) {
1850 vals[0] = SCRawEnergy;
1854 vals[4] = E5x5Seed/SCRawEnergy;
1857 vals[7] = NClusters;
1860 vals[10] = vertices;
1861 vals[11] = EtaSeed - scEta;
1862 vals[12] = atan2(
sin(PhiSeed-scPhi),
cos(PhiSeed-scPhi));
1863 vals[13] = ESeed/SCRawEnergy;
1864 vals[14] = E3x3Seed/ESeed;
1865 vals[15] = E5x5Seed/ESeed;
1869 vals[19] = EMaxSeed/ESeed;
1870 vals[20] = E2ndSeed/ESeed;
1871 vals[21] = ETopSeed/ESeed;
1872 vals[22] = EBottomSeed/ESeed;
1873 vals[23] = ELeftSeed/ESeed;
1874 vals[24] = ERightSeed/ESeed;
1875 vals[25] = E2x5MaxSeed/ESeed;
1876 vals[26] = E2x5TopSeed/ESeed;
1877 vals[27] = E2x5BottomSeed/ESeed;
1878 vals[28] = E2x5LeftSeed/ESeed;
1879 vals[29] = E2x5RightSeed/ESeed;
1880 vals[30] = IsEcalDriven;
1881 vals[31] = GsfTrackPIn;
1885 vals[35] = TrackMomentumError/GsfTrackPIn;
1886 vals[36] = EcalEnergyError/SCRawEnergy;
1887 vals[37] = Classification;
1888 vals[38] = IEtaSeed;
1889 vals[39] = IPhiSeed;
1890 vals[40] = ((int) IEtaSeed)%5;
1891 vals[41] = ((int) IPhiSeed)%2;
1892 vals[42] = (
abs(IEtaSeed)<=25)*(((
int)IEtaSeed)%25) + (
abs(IEtaSeed)>25)*(((
int) (IEtaSeed-25*
abs(IEtaSeed)/IEtaSeed))%20);
1893 vals[43] = ((int) IPhiSeed)%20;
1894 vals[44] = EtaCrySeed;
1895 vals[45] = PhiCrySeed;
1899 vals[0] = SCRawEnergy;
1903 vals[4] = E5x5Seed/SCRawEnergy;
1906 vals[7] = NClusters;
1909 vals[10] = vertices;
1910 vals[11] = EtaSeed - scEta;
1911 vals[12] = atan2(
sin(PhiSeed-scPhi),
cos(PhiSeed-scPhi));
1912 vals[13] = ESeed/SCRawEnergy;
1913 vals[14] = E3x3Seed/ESeed;
1914 vals[15] = E5x5Seed/ESeed;
1918 vals[19] = EMaxSeed/ESeed;
1919 vals[20] = E2ndSeed/ESeed;
1920 vals[21] = ETopSeed/ESeed;
1921 vals[22] = EBottomSeed/ESeed;
1922 vals[23] = ELeftSeed/ESeed;
1923 vals[24] = ERightSeed/ESeed;
1924 vals[25] = E2x5MaxSeed/ESeed;
1925 vals[26] = E2x5TopSeed/ESeed;
1926 vals[27] = E2x5BottomSeed/ESeed;
1927 vals[28] = E2x5LeftSeed/ESeed;
1928 vals[29] = E2x5RightSeed/ESeed;
1929 vals[30] = IsEcalDriven;
1930 vals[31] = GsfTrackPIn;
1934 vals[35] = TrackMomentumError/GsfTrackPIn;
1935 vals[36] = EcalEnergyError/SCRawEnergy;
1936 vals[37] = Classification;
1937 vals[38] = PreShowerOverRaw;
1941 double regressionResult = 0;
1950 if (fabs(scEta) <= 1.479) {
1952 for (
unsigned int v=0;
v < 46; ++
v)
std::cout << vals[
v] <<
", ";
1957 for (
unsigned int v=0;
v < 39; ++
v)
std::cout << vals[
v] <<
", ";
1960 std::cout <<
" SCRawEnergy = " << SCRawEnergy <<
" : PreShowerOverRaw = " << PreShowerOverRaw << std::endl;
1961 std::cout <<
"regression energy uncertainty = " << regressionResult << std::endl;
1967 return regressionResult;
1979 printf(
"ElectronEnergyRegressionEvaluate instance not initialized !!!");
1987 assert(inputvars.size() == 42);
1989 double SCRawEnergy = inputvars[0];
1990 double scEta = inputvars[1];
1991 double scPhi = inputvars[2];
1992 double R9 = inputvars[3];
1993 double etawidth = inputvars[4];
1994 double phiwidth = inputvars[5];
1995 double NClusters = inputvars[6];
1996 double HoE = inputvars[7];
1997 double rho = inputvars[8];
1998 double vertices = inputvars[9];
1999 double EtaSeed = inputvars[10];
2000 double PhiSeed = inputvars[11];
2001 double ESeed = inputvars[12];
2002 double E3x3Seed = inputvars[13];
2003 double E5x5Seed = inputvars[14];
2004 double see = inputvars[15];
2005 double spp = inputvars[16];
2006 double sep = inputvars[17];
2007 double EMaxSeed = inputvars[18];
2008 double E2ndSeed = inputvars[19];
2009 double ETopSeed = inputvars[20];
2010 double EBottomSeed = inputvars[21];
2011 double ELeftSeed = inputvars[22];
2012 double ERightSeed = inputvars[23];
2013 double E2x5MaxSeed = inputvars[24];
2014 double E2x5TopSeed = inputvars[25];
2015 double E2x5BottomSeed = inputvars[26];
2016 double E2x5LeftSeed = inputvars[27];
2017 double E2x5RightSeed = inputvars[28];
2018 double IEtaSeed = inputvars[29];
2019 double IPhiSeed = inputvars[30];
2020 double EtaCrySeed = inputvars[31];
2021 double PhiCrySeed = inputvars[32];
2022 double PreShowerOverRaw = inputvars[33];
2023 int IsEcalDriven = inputvars[34];
2024 double GsfTrackPIn = inputvars[35];
2025 double fbrem = inputvars[36];
2026 double Charge = inputvars[37];
2027 double EoP = inputvars[38];
2028 double TrackMomentumError = inputvars[39];
2029 double EcalEnergyError = inputvars[40];
2030 int Classification = inputvars[41];
2032 float *
vals = (fabs(scEta) <= 1.479) ?
new float[46] :
new float[39];
2033 if (fabs(scEta) <= 1.479) {
2034 vals[0] = SCRawEnergy;
2038 vals[4] = E5x5Seed/SCRawEnergy;
2041 vals[7] = NClusters;
2044 vals[10] = vertices;
2045 vals[11] = EtaSeed - scEta;
2046 vals[12] = atan2(
sin(PhiSeed-scPhi),
cos(PhiSeed-scPhi));
2047 vals[13] = ESeed/SCRawEnergy;
2048 vals[14] = E3x3Seed/ESeed;
2049 vals[15] = E5x5Seed/ESeed;
2053 vals[19] = EMaxSeed/ESeed;
2054 vals[20] = E2ndSeed/ESeed;
2055 vals[21] = ETopSeed/ESeed;
2056 vals[22] = EBottomSeed/ESeed;
2057 vals[23] = ELeftSeed/ESeed;
2058 vals[24] = ERightSeed/ESeed;
2059 vals[25] = E2x5MaxSeed/ESeed;
2060 vals[26] = E2x5TopSeed/ESeed;
2061 vals[27] = E2x5BottomSeed/ESeed;
2062 vals[28] = E2x5LeftSeed/ESeed;
2063 vals[29] = E2x5RightSeed/ESeed;
2064 vals[30] = IsEcalDriven;
2065 vals[31] = GsfTrackPIn;
2069 vals[35] = TrackMomentumError/GsfTrackPIn;
2070 vals[36] = EcalEnergyError/SCRawEnergy;
2071 vals[37] = Classification;
2072 vals[38] = IEtaSeed;
2073 vals[39] = IPhiSeed;
2074 vals[40] = ((int) IEtaSeed)%5;
2075 vals[41] = ((int) IPhiSeed)%2;
2076 vals[42] = (
abs(IEtaSeed)<=25)*(((
int)IEtaSeed)%25) + (
abs(IEtaSeed)>25)*(((
int) (IEtaSeed-25*
abs(IEtaSeed)/IEtaSeed))%20);
2077 vals[43] = ((int) IPhiSeed)%20;
2078 vals[44] = EtaCrySeed;
2079 vals[45] = PhiCrySeed;
2083 vals[0] = SCRawEnergy;
2087 vals[4] = E5x5Seed/SCRawEnergy;
2090 vals[7] = NClusters;
2093 vals[10] = vertices;
2094 vals[11] = EtaSeed - scEta;
2095 vals[12] = atan2(
sin(PhiSeed-scPhi),
cos(PhiSeed-scPhi));
2096 vals[13] = ESeed/SCRawEnergy;
2097 vals[14] = E3x3Seed/ESeed;
2098 vals[15] = E5x5Seed/ESeed;
2102 vals[19] = EMaxSeed/ESeed;
2103 vals[20] = E2ndSeed/ESeed;
2104 vals[21] = ETopSeed/ESeed;
2105 vals[22] = EBottomSeed/ESeed;
2106 vals[23] = ELeftSeed/ESeed;
2107 vals[24] = ERightSeed/ESeed;
2108 vals[25] = E2x5MaxSeed/ESeed;
2109 vals[26] = E2x5TopSeed/ESeed;
2110 vals[27] = E2x5BottomSeed/ESeed;
2111 vals[28] = E2x5LeftSeed/ESeed;
2112 vals[29] = E2x5RightSeed/ESeed;
2113 vals[30] = IsEcalDriven;
2114 vals[31] = GsfTrackPIn;
2118 vals[35] = TrackMomentumError/GsfTrackPIn;
2119 vals[36] = EcalEnergyError/SCRawEnergy;
2120 vals[37] = Classification;
2121 vals[38] = PreShowerOverRaw;
2125 double regressionResult = 0;
2135 if (fabs(scEta) <= 1.479) {
2137 for (
unsigned int v=0;
v < 46; ++
v)
std::cout << vals[
v] <<
", ";
2142 for (
unsigned int v=0;
v < 39; ++
v)
std::cout << vals[
v] <<
", ";
2145 std::cout <<
"SCRawEnergy = " << SCRawEnergy <<
" : PreShowerOverRaw = " << PreShowerOverRaw << std::endl;
2146 std::cout <<
"regression energy = " << regressionResult << std::endl;
2151 return regressionResult;
2162 printf(
"ElectronEnergyRegressionEvaluate instance not initialized !!!");
2170 assert(inputvars.size() == 42);
2172 double SCRawEnergy = inputvars[0];
2173 double scEta = inputvars[1];
2174 double scPhi = inputvars[2];
2175 double R9 = inputvars[3];
2176 double etawidth = inputvars[4];
2177 double phiwidth = inputvars[5];
2178 double NClusters = inputvars[6];
2179 double HoE = inputvars[7];
2180 double rho = inputvars[8];
2181 double vertices = inputvars[9];
2182 double EtaSeed = inputvars[10];
2183 double PhiSeed = inputvars[11];
2184 double ESeed = inputvars[12];
2185 double E3x3Seed = inputvars[13];
2186 double E5x5Seed = inputvars[14];
2187 double see = inputvars[15];
2188 double spp = inputvars[16];
2189 double sep = inputvars[17];
2190 double EMaxSeed = inputvars[18];
2191 double E2ndSeed = inputvars[19];
2192 double ETopSeed = inputvars[20];
2193 double EBottomSeed = inputvars[21];
2194 double ELeftSeed = inputvars[22];
2195 double ERightSeed = inputvars[23];
2196 double E2x5MaxSeed = inputvars[24];
2197 double E2x5TopSeed = inputvars[25];
2198 double E2x5BottomSeed = inputvars[26];
2199 double E2x5LeftSeed = inputvars[27];
2200 double E2x5RightSeed = inputvars[28];
2201 double IEtaSeed = inputvars[29];
2202 double IPhiSeed = inputvars[30];
2203 double EtaCrySeed = inputvars[31];
2204 double PhiCrySeed = inputvars[32];
2205 double PreShowerOverRaw = inputvars[33];
2206 int IsEcalDriven = inputvars[34];
2207 double GsfTrackPIn = inputvars[35];
2208 double fbrem = inputvars[36];
2209 double Charge = inputvars[37];
2210 double EoP = inputvars[38];
2211 double TrackMomentumError = inputvars[39];
2212 double EcalEnergyError = inputvars[40];
2213 int Classification = inputvars[41];
2216 float *
vals = (fabs(scEta) <= 1.479) ?
new float[46] :
new float[39];
2217 if (fabs(scEta) <= 1.479) {
2218 vals[0] = SCRawEnergy;
2222 vals[4] = E5x5Seed/SCRawEnergy;
2225 vals[7] = NClusters;
2228 vals[10] = vertices;
2229 vals[11] = EtaSeed - scEta;
2230 vals[12] = atan2(
sin(PhiSeed-scPhi),
cos(PhiSeed-scPhi));
2231 vals[13] = ESeed/SCRawEnergy;
2232 vals[14] = E3x3Seed/ESeed;
2233 vals[15] = E5x5Seed/ESeed;
2237 vals[19] = EMaxSeed/ESeed;
2238 vals[20] = E2ndSeed/ESeed;
2239 vals[21] = ETopSeed/ESeed;
2240 vals[22] = EBottomSeed/ESeed;
2241 vals[23] = ELeftSeed/ESeed;
2242 vals[24] = ERightSeed/ESeed;
2243 vals[25] = E2x5MaxSeed/ESeed;
2244 vals[26] = E2x5TopSeed/ESeed;
2245 vals[27] = E2x5BottomSeed/ESeed;
2246 vals[28] = E2x5LeftSeed/ESeed;
2247 vals[29] = E2x5RightSeed/ESeed;
2248 vals[30] = IsEcalDriven;
2249 vals[31] = GsfTrackPIn;
2253 vals[35] = TrackMomentumError/GsfTrackPIn;
2254 vals[36] = EcalEnergyError/SCRawEnergy;
2255 vals[37] = Classification;
2256 vals[38] = IEtaSeed;
2257 vals[39] = IPhiSeed;
2258 vals[40] = ((int) IEtaSeed)%5;
2259 vals[41] = ((int) IPhiSeed)%2;
2260 vals[42] = (
abs(IEtaSeed)<=25)*(((
int)IEtaSeed)%25) + (
abs(IEtaSeed)>25)*(((
int) (IEtaSeed-25*
abs(IEtaSeed)/IEtaSeed))%20);
2261 vals[43] = ((int) IPhiSeed)%20;
2262 vals[44] = EtaCrySeed;
2263 vals[45] = PhiCrySeed;
2267 vals[0] = SCRawEnergy;
2271 vals[4] = E5x5Seed/SCRawEnergy;
2274 vals[7] = NClusters;
2277 vals[10] = vertices;
2278 vals[11] = EtaSeed - scEta;
2279 vals[12] = atan2(
sin(PhiSeed-scPhi),
cos(PhiSeed-scPhi));
2280 vals[13] = ESeed/SCRawEnergy;
2281 vals[14] = E3x3Seed/ESeed;
2282 vals[15] = E5x5Seed/ESeed;
2286 vals[19] = EMaxSeed/ESeed;
2287 vals[20] = E2ndSeed/ESeed;
2288 vals[21] = ETopSeed/ESeed;
2289 vals[22] = EBottomSeed/ESeed;
2290 vals[23] = ELeftSeed/ESeed;
2291 vals[24] = ERightSeed/ESeed;
2292 vals[25] = E2x5MaxSeed/ESeed;
2293 vals[26] = E2x5TopSeed/ESeed;
2294 vals[27] = E2x5BottomSeed/ESeed;
2295 vals[28] = E2x5LeftSeed/ESeed;
2296 vals[29] = E2x5RightSeed/ESeed;
2297 vals[30] = IsEcalDriven;
2298 vals[31] = GsfTrackPIn;
2302 vals[35] = TrackMomentumError/GsfTrackPIn;
2303 vals[36] = EcalEnergyError/SCRawEnergy;
2304 vals[37] = Classification;
2305 vals[38] = PreShowerOverRaw;
2309 double regressionResult = 0;
2318 if (fabs(scEta) <= 1.479) {
2320 for (
unsigned int v=0;
v < 46; ++
v)
std::cout << vals[
v] <<
", ";
2325 for (
unsigned int v=0;
v < 39; ++
v)
std::cout << vals[
v] <<
", ";
2328 std::cout <<
" SCRawEnergy = " << SCRawEnergy <<
" : PreShowerOverRaw = " << PreShowerOverRaw << std::endl;
2329 std::cout <<
"regression energy uncertainty = " << regressionResult << std::endl;
2335 return regressionResult;
2367 double E2x5BottomSeed,
2368 double E2x5LeftSeed,
2369 double E2x5RightSeed,
2374 double PreShowerOverRaw,
2380 double TrackMomentumError,
2381 double EcalEnergyError,
2387 double GsfTrackChiSqr,
2388 double KFTrackNLayers,
2389 double ElectronEnergyOverPout,
2394 printf(
"ElectronEnergyRegressionEvaluate instance not initialized !!!");
2401 float *
vals = (fabs(scEta) <= 1.479) ?
new float[53] :
new float[46];
2402 if (fabs(scEta) <= 1.479) {
2403 vals[0] = SCRawEnergy;
2407 vals[4] = E5x5Seed/SCRawEnergy;
2410 vals[7] = NClusters;
2413 vals[10] = vertices;
2414 vals[11] = EtaSeed - scEta;
2415 vals[12] = atan2(
sin(PhiSeed-scPhi),
cos(PhiSeed-scPhi));
2416 vals[13] = ESeed/SCRawEnergy;
2417 vals[14] = E3x3Seed/ESeed;
2418 vals[15] = E5x5Seed/ESeed;
2422 vals[19] = EMaxSeed/ESeed;
2423 vals[20] = E2ndSeed/ESeed;
2424 vals[21] = ETopSeed/ESeed;
2425 vals[22] = EBottomSeed/ESeed;
2426 vals[23] = ELeftSeed/ESeed;
2427 vals[24] = ERightSeed/ESeed;
2428 vals[25] = E2x5MaxSeed/ESeed;
2429 vals[26] = E2x5TopSeed/ESeed;
2430 vals[27] = E2x5BottomSeed/ESeed;
2431 vals[28] = E2x5LeftSeed/ESeed;
2432 vals[29] = E2x5RightSeed/ESeed;
2433 vals[30] = IsEcalDriven;
2434 vals[31] = GsfTrackPIn;
2438 vals[35] = TrackMomentumError/GsfTrackPIn;
2439 vals[36] = EcalEnergyError/SCRawEnergy;
2440 vals[37] = Classification;
2443 vals[40] = detaCalo;
2444 vals[41] = dphiCalo;
2445 vals[42] = GsfTrackChiSqr;
2446 vals[43] = KFTrackNLayers;
2447 vals[44] = ElectronEnergyOverPout;
2448 vals[45] = IEtaSeed;
2449 vals[46] = IPhiSeed;
2450 vals[47] = ((int) IEtaSeed)%5;
2451 vals[48] = ((int) IPhiSeed)%2;
2452 vals[49] = (
abs(IEtaSeed)<=25)*(((
int)IEtaSeed)%25) + (
abs(IEtaSeed)>25)*(((
int) (IEtaSeed-25*
abs(IEtaSeed)/IEtaSeed))%20);
2453 vals[50] = ((int) IPhiSeed)%20;
2454 vals[51] = EtaCrySeed;
2455 vals[52] = PhiCrySeed;
2459 vals[0] = SCRawEnergy;
2463 vals[4] = E5x5Seed/SCRawEnergy;
2466 vals[7] = NClusters;
2469 vals[10] = vertices;
2470 vals[11] = EtaSeed - scEta;
2471 vals[12] = atan2(
sin(PhiSeed-scPhi),
cos(PhiSeed-scPhi));
2472 vals[13] = ESeed/SCRawEnergy;
2473 vals[14] = E3x3Seed/ESeed;
2474 vals[15] = E5x5Seed/ESeed;
2478 vals[19] = EMaxSeed/ESeed;
2479 vals[20] = E2ndSeed/ESeed;
2480 vals[21] = ETopSeed/ESeed;
2481 vals[22] = EBottomSeed/ESeed;
2482 vals[23] = ELeftSeed/ESeed;
2483 vals[24] = ERightSeed/ESeed;
2484 vals[25] = E2x5MaxSeed/ESeed;
2485 vals[26] = E2x5TopSeed/ESeed;
2486 vals[27] = E2x5BottomSeed/ESeed;
2487 vals[28] = E2x5LeftSeed/ESeed;
2488 vals[29] = E2x5RightSeed/ESeed;
2489 vals[30] = IsEcalDriven;
2490 vals[31] = GsfTrackPIn;
2494 vals[35] = TrackMomentumError/GsfTrackPIn;
2495 vals[36] = EcalEnergyError/SCRawEnergy;
2496 vals[37] = Classification;
2499 vals[40] = detaCalo;
2500 vals[41] = dphiCalo;
2501 vals[42] = GsfTrackChiSqr;
2502 vals[43] = KFTrackNLayers;
2503 vals[44] = ElectronEnergyOverPout;
2504 vals[45] = PreShowerOverRaw;
2508 double regressionResult = 0;
2518 if (fabs(scEta) <= 1.479) {
2520 for (
unsigned int v=0;
v < 53; ++
v)
std::cout << vals[
v] <<
", ";
2525 for (
unsigned int v=0;
v < 46; ++
v)
std::cout << vals[
v] <<
", ";
2528 std::cout <<
"SCRawEnergy = " << SCRawEnergy <<
" : PreShowerOverRaw = " << PreShowerOverRaw << std::endl;
2529 std::cout <<
"regression energy = " << regressionResult << std::endl;
2534 return regressionResult;
2567 double E2x5BottomSeed,
2568 double E2x5LeftSeed,
2569 double E2x5RightSeed,
2574 double PreShowerOverRaw,
2580 double TrackMomentumError,
2581 double EcalEnergyError,
2587 double GsfTrackChiSqr,
2588 double KFTrackNLayers,
2589 double ElectronEnergyOverPout,
2594 printf(
"ElectronEnergyRegressionEvaluate instance not initialized !!!");
2601 float *
vals = (fabs(scEta) <= 1.479) ?
new float[53] :
new float[46];
2602 if (fabs(scEta) <= 1.479) {
2603 vals[0] = SCRawEnergy;
2607 vals[4] = E5x5Seed/SCRawEnergy;
2610 vals[7] = NClusters;
2613 vals[10] = vertices;
2614 vals[11] = EtaSeed - scEta;
2615 vals[12] = atan2(
sin(PhiSeed-scPhi),
cos(PhiSeed-scPhi));
2616 vals[13] = ESeed/SCRawEnergy;
2617 vals[14] = E3x3Seed/ESeed;
2618 vals[15] = E5x5Seed/ESeed;
2622 vals[19] = EMaxSeed/ESeed;
2623 vals[20] = E2ndSeed/ESeed;
2624 vals[21] = ETopSeed/ESeed;
2625 vals[22] = EBottomSeed/ESeed;
2626 vals[23] = ELeftSeed/ESeed;
2627 vals[24] = ERightSeed/ESeed;
2628 vals[25] = E2x5MaxSeed/ESeed;
2629 vals[26] = E2x5TopSeed/ESeed;
2630 vals[27] = E2x5BottomSeed/ESeed;
2631 vals[28] = E2x5LeftSeed/ESeed;
2632 vals[29] = E2x5RightSeed/ESeed;
2633 vals[30] = IsEcalDriven;
2634 vals[31] = GsfTrackPIn;
2638 vals[35] = TrackMomentumError/GsfTrackPIn;
2639 vals[36] = EcalEnergyError/SCRawEnergy;
2640 vals[37] = Classification;
2643 vals[40] = detaCalo;
2644 vals[41] = dphiCalo;
2645 vals[42] = GsfTrackChiSqr;
2646 vals[43] = KFTrackNLayers;
2647 vals[44] = ElectronEnergyOverPout;
2648 vals[45] = IEtaSeed;
2649 vals[46] = IPhiSeed;
2650 vals[47] = ((int) IEtaSeed)%5;
2651 vals[48] = ((int) IPhiSeed)%2;
2652 vals[49] = (
abs(IEtaSeed)<=25)*(((
int)IEtaSeed)%25) + (
abs(IEtaSeed)>25)*(((
int) (IEtaSeed-25*
abs(IEtaSeed)/IEtaSeed))%20);
2653 vals[50] = ((int) IPhiSeed)%20;
2654 vals[51] = EtaCrySeed;
2655 vals[52] = PhiCrySeed;
2659 vals[0] = SCRawEnergy;
2663 vals[4] = E5x5Seed/SCRawEnergy;
2666 vals[7] = NClusters;
2669 vals[10] = vertices;
2670 vals[11] = EtaSeed - scEta;
2671 vals[12] = atan2(
sin(PhiSeed-scPhi),
cos(PhiSeed-scPhi));
2672 vals[13] = ESeed/SCRawEnergy;
2673 vals[14] = E3x3Seed/ESeed;
2674 vals[15] = E5x5Seed/ESeed;
2678 vals[19] = EMaxSeed/ESeed;
2679 vals[20] = E2ndSeed/ESeed;
2680 vals[21] = ETopSeed/ESeed;
2681 vals[22] = EBottomSeed/ESeed;
2682 vals[23] = ELeftSeed/ESeed;
2683 vals[24] = ERightSeed/ESeed;
2684 vals[25] = E2x5MaxSeed/ESeed;
2685 vals[26] = E2x5TopSeed/ESeed;
2686 vals[27] = E2x5BottomSeed/ESeed;
2687 vals[28] = E2x5LeftSeed/ESeed;
2688 vals[29] = E2x5RightSeed/ESeed;
2689 vals[30] = IsEcalDriven;
2690 vals[31] = GsfTrackPIn;
2694 vals[35] = TrackMomentumError/GsfTrackPIn;
2695 vals[36] = EcalEnergyError/SCRawEnergy;
2696 vals[37] = Classification;
2699 vals[40] = detaCalo;
2700 vals[41] = dphiCalo;
2701 vals[42] = GsfTrackChiSqr;
2702 vals[43] = KFTrackNLayers;
2703 vals[44] = ElectronEnergyOverPout;
2704 vals[45] = PreShowerOverRaw;
2708 double regressionResult = 0;
2717 if (fabs(scEta) <= 1.479) {
2719 for (
unsigned int v=0;
v < 53; ++
v)
std::cout << vals[
v] <<
", ";
2724 for (
unsigned int v=0;
v < 46; ++
v)
std::cout << vals[
v] <<
", ";
2727 std::cout <<
"SCRawEnergy = " << SCRawEnergy <<
" : PreShowerOverRaw = " << PreShowerOverRaw << std::endl;
2728 std::cout <<
"regression energy uncertainty = " << regressionResult << std::endl;
2734 return regressionResult;
2745 printf(
"ElectronEnergyRegressionEvaluate instance not initialized !!!");
2753 assert(inputvars.size() == 49);
2755 double SCRawEnergy = inputvars[0];
2756 double scEta = inputvars[1];
2757 double scPhi = inputvars[2];
2758 double R9 = inputvars[3];
2759 double etawidth = inputvars[4];
2760 double phiwidth = inputvars[5];
2761 double NClusters = inputvars[6];
2762 double HoE = inputvars[7];
2763 double rho = inputvars[8];
2764 double vertices = inputvars[9];
2765 double EtaSeed = inputvars[10];
2766 double PhiSeed = inputvars[11];
2767 double ESeed = inputvars[12];
2768 double E3x3Seed = inputvars[13];
2769 double E5x5Seed = inputvars[14];
2770 double see = inputvars[15];
2771 double spp = inputvars[16];
2772 double sep = inputvars[17];
2773 double EMaxSeed = inputvars[18];
2774 double E2ndSeed = inputvars[19];
2775 double ETopSeed = inputvars[20];
2776 double EBottomSeed = inputvars[21];
2777 double ELeftSeed = inputvars[22];
2778 double ERightSeed = inputvars[23];
2779 double E2x5MaxSeed = inputvars[24];
2780 double E2x5TopSeed = inputvars[25];
2781 double E2x5BottomSeed = inputvars[26];
2782 double E2x5LeftSeed = inputvars[27];
2783 double E2x5RightSeed = inputvars[28];
2784 double IEtaSeed = inputvars[29];
2785 double IPhiSeed = inputvars[30];
2786 double EtaCrySeed = inputvars[31];
2787 double PhiCrySeed = inputvars[32];
2788 double PreShowerOverRaw = inputvars[33];
2789 int IsEcalDriven = inputvars[34];
2790 double GsfTrackPIn = inputvars[35];
2791 double fbrem = inputvars[36];
2792 double Charge = inputvars[37];
2793 double EoP = inputvars[38];
2794 double TrackMomentumError = inputvars[39];
2795 double EcalEnergyError = inputvars[40];
2796 int Classification = inputvars[41];
2797 double detaIn = inputvars[42];
2798 double dphiIn = inputvars[43];
2799 double detaCalo = inputvars[44];
2800 double dphiCalo = inputvars[45];
2801 double GsfTrackChiSqr = inputvars[46];
2802 double KFTrackNLayers = inputvars[47];
2803 double ElectronEnergyOverPout = inputvars[48];
2805 float *
vals = (fabs(scEta) <= 1.479) ?
new float[53] :
new float[46];
2806 if (fabs(scEta) <= 1.479) {
2807 vals[0] = SCRawEnergy;
2811 vals[4] = E5x5Seed/SCRawEnergy;
2814 vals[7] = NClusters;
2817 vals[10] = vertices;
2818 vals[11] = EtaSeed - scEta;
2819 vals[12] = atan2(
sin(PhiSeed-scPhi),
cos(PhiSeed-scPhi));
2820 vals[13] = ESeed/SCRawEnergy;
2821 vals[14] = E3x3Seed/ESeed;
2822 vals[15] = E5x5Seed/ESeed;
2826 vals[19] = EMaxSeed/ESeed;
2827 vals[20] = E2ndSeed/ESeed;
2828 vals[21] = ETopSeed/ESeed;
2829 vals[22] = EBottomSeed/ESeed;
2830 vals[23] = ELeftSeed/ESeed;
2831 vals[24] = ERightSeed/ESeed;
2832 vals[25] = E2x5MaxSeed/ESeed;
2833 vals[26] = E2x5TopSeed/ESeed;
2834 vals[27] = E2x5BottomSeed/ESeed;
2835 vals[28] = E2x5LeftSeed/ESeed;
2836 vals[29] = E2x5RightSeed/ESeed;
2837 vals[30] = IsEcalDriven;
2838 vals[31] = GsfTrackPIn;
2842 vals[35] = TrackMomentumError/GsfTrackPIn;
2843 vals[36] = EcalEnergyError/SCRawEnergy;
2844 vals[37] = Classification;
2847 vals[40] = detaCalo;
2848 vals[41] = dphiCalo;
2849 vals[42] = GsfTrackChiSqr;
2850 vals[43] = KFTrackNLayers;
2851 vals[44] = ElectronEnergyOverPout;
2852 vals[45] = IEtaSeed;
2853 vals[46] = IPhiSeed;
2854 vals[47] = ((int) IEtaSeed)%5;
2855 vals[48] = ((int) IPhiSeed)%2;
2856 vals[49] = (
abs(IEtaSeed)<=25)*(((
int)IEtaSeed)%25) + (
abs(IEtaSeed)>25)*(((
int) (IEtaSeed-25*
abs(IEtaSeed)/IEtaSeed))%20);
2857 vals[50] = ((int) IPhiSeed)%20;
2858 vals[51] = EtaCrySeed;
2859 vals[52] = PhiCrySeed;
2863 vals[0] = SCRawEnergy;
2867 vals[4] = E5x5Seed/SCRawEnergy;
2870 vals[7] = NClusters;
2873 vals[10] = vertices;
2874 vals[11] = EtaSeed - scEta;
2875 vals[12] = atan2(
sin(PhiSeed-scPhi),
cos(PhiSeed-scPhi));
2876 vals[13] = ESeed/SCRawEnergy;
2877 vals[14] = E3x3Seed/ESeed;
2878 vals[15] = E5x5Seed/ESeed;
2882 vals[19] = EMaxSeed/ESeed;
2883 vals[20] = E2ndSeed/ESeed;
2884 vals[21] = ETopSeed/ESeed;
2885 vals[22] = EBottomSeed/ESeed;
2886 vals[23] = ELeftSeed/ESeed;
2887 vals[24] = ERightSeed/ESeed;
2888 vals[25] = E2x5MaxSeed/ESeed;
2889 vals[26] = E2x5TopSeed/ESeed;
2890 vals[27] = E2x5BottomSeed/ESeed;
2891 vals[28] = E2x5LeftSeed/ESeed;
2892 vals[29] = E2x5RightSeed/ESeed;
2893 vals[30] = IsEcalDriven;
2894 vals[31] = GsfTrackPIn;
2898 vals[35] = TrackMomentumError/GsfTrackPIn;
2899 vals[36] = EcalEnergyError/SCRawEnergy;
2900 vals[37] = Classification;
2903 vals[40] = detaCalo;
2904 vals[41] = dphiCalo;
2905 vals[42] = GsfTrackChiSqr;
2906 vals[43] = KFTrackNLayers;
2907 vals[44] = ElectronEnergyOverPout;
2908 vals[45] = PreShowerOverRaw;
2912 double regressionResult = 0;
2922 if (fabs(scEta) <= 1.479) {
2924 for (
unsigned int v=0;
v < 53; ++
v)
std::cout << vals[
v] <<
", ";
2929 for (
unsigned int v=0;
v < 46; ++
v)
std::cout << vals[
v] <<
", ";
2932 std::cout <<
"SCRawEnergy = " << SCRawEnergy <<
" : PreShowerOverRaw = " << PreShowerOverRaw << std::endl;
2933 std::cout <<
"regression energy = " << regressionResult << std::endl;
2938 return regressionResult;
2949 printf(
"ElectronEnergyRegressionEvaluate instance not initialized !!!");
2957 assert(inputvars.size() == 49);
2959 double SCRawEnergy = inputvars[0];
2960 double scEta = inputvars[1];
2961 double scPhi = inputvars[2];
2962 double R9 = inputvars[3];
2963 double etawidth = inputvars[4];
2964 double phiwidth = inputvars[5];
2965 double NClusters = inputvars[6];
2966 double HoE = inputvars[7];
2967 double rho = inputvars[8];
2968 double vertices = inputvars[9];
2969 double EtaSeed = inputvars[10];
2970 double PhiSeed = inputvars[11];
2971 double ESeed = inputvars[12];
2972 double E3x3Seed = inputvars[13];
2973 double E5x5Seed = inputvars[14];
2974 double see = inputvars[15];
2975 double spp = inputvars[16];
2976 double sep = inputvars[17];
2977 double EMaxSeed = inputvars[18];
2978 double E2ndSeed = inputvars[19];
2979 double ETopSeed = inputvars[20];
2980 double EBottomSeed = inputvars[21];
2981 double ELeftSeed = inputvars[22];
2982 double ERightSeed = inputvars[23];
2983 double E2x5MaxSeed = inputvars[24];
2984 double E2x5TopSeed = inputvars[25];
2985 double E2x5BottomSeed = inputvars[26];
2986 double E2x5LeftSeed = inputvars[27];
2987 double E2x5RightSeed = inputvars[28];
2988 double IEtaSeed = inputvars[29];
2989 double IPhiSeed = inputvars[30];
2990 double EtaCrySeed = inputvars[31];
2991 double PhiCrySeed = inputvars[32];
2992 double PreShowerOverRaw = inputvars[33];
2993 int IsEcalDriven = inputvars[34];
2994 double GsfTrackPIn = inputvars[35];
2995 double fbrem = inputvars[36];
2996 double Charge = inputvars[37];
2997 double EoP = inputvars[38];
2998 double TrackMomentumError = inputvars[39];
2999 double EcalEnergyError = inputvars[40];
3000 int Classification = inputvars[41];
3001 double detaIn = inputvars[42];
3002 double dphiIn = inputvars[43];
3003 double detaCalo = inputvars[44];
3004 double dphiCalo = inputvars[45];
3005 double GsfTrackChiSqr = inputvars[46];
3006 double KFTrackNLayers = inputvars[47];
3007 double ElectronEnergyOverPout = inputvars[48];
3009 float *
vals = (fabs(scEta) <= 1.479) ?
new float[53] :
new float[46];
3010 if (fabs(scEta) <= 1.479) {
3011 vals[0] = SCRawEnergy;
3015 vals[4] = E5x5Seed/SCRawEnergy;
3018 vals[7] = NClusters;
3021 vals[10] = vertices;
3022 vals[11] = EtaSeed - scEta;
3023 vals[12] = atan2(
sin(PhiSeed-scPhi),
cos(PhiSeed-scPhi));
3024 vals[13] = ESeed/SCRawEnergy;
3025 vals[14] = E3x3Seed/ESeed;
3026 vals[15] = E5x5Seed/ESeed;
3030 vals[19] = EMaxSeed/ESeed;
3031 vals[20] = E2ndSeed/ESeed;
3032 vals[21] = ETopSeed/ESeed;
3033 vals[22] = EBottomSeed/ESeed;
3034 vals[23] = ELeftSeed/ESeed;
3035 vals[24] = ERightSeed/ESeed;
3036 vals[25] = E2x5MaxSeed/ESeed;
3037 vals[26] = E2x5TopSeed/ESeed;
3038 vals[27] = E2x5BottomSeed/ESeed;
3039 vals[28] = E2x5LeftSeed/ESeed;
3040 vals[29] = E2x5RightSeed/ESeed;
3041 vals[30] = IsEcalDriven;
3042 vals[31] = GsfTrackPIn;
3046 vals[35] = TrackMomentumError/GsfTrackPIn;
3047 vals[36] = EcalEnergyError/SCRawEnergy;
3048 vals[37] = Classification;
3051 vals[40] = detaCalo;
3052 vals[41] = dphiCalo;
3053 vals[42] = GsfTrackChiSqr;
3054 vals[43] = KFTrackNLayers;
3055 vals[44] = ElectronEnergyOverPout;
3056 vals[45] = IEtaSeed;
3057 vals[46] = IPhiSeed;
3058 vals[47] = ((int) IEtaSeed)%5;
3059 vals[48] = ((int) IPhiSeed)%2;
3060 vals[49] = (
abs(IEtaSeed)<=25)*(((
int)IEtaSeed)%25) + (
abs(IEtaSeed)>25)*(((
int) (IEtaSeed-25*
abs(IEtaSeed)/IEtaSeed))%20);
3061 vals[50] = ((int) IPhiSeed)%20;
3062 vals[51] = EtaCrySeed;
3063 vals[52] = PhiCrySeed;
3067 vals[0] = SCRawEnergy;
3071 vals[4] = E5x5Seed/SCRawEnergy;
3074 vals[7] = NClusters;
3077 vals[10] = vertices;
3078 vals[11] = EtaSeed - scEta;
3079 vals[12] = atan2(
sin(PhiSeed-scPhi),
cos(PhiSeed-scPhi));
3080 vals[13] = ESeed/SCRawEnergy;
3081 vals[14] = E3x3Seed/ESeed;
3082 vals[15] = E5x5Seed/ESeed;
3086 vals[19] = EMaxSeed/ESeed;
3087 vals[20] = E2ndSeed/ESeed;
3088 vals[21] = ETopSeed/ESeed;
3089 vals[22] = EBottomSeed/ESeed;
3090 vals[23] = ELeftSeed/ESeed;
3091 vals[24] = ERightSeed/ESeed;
3092 vals[25] = E2x5MaxSeed/ESeed;
3093 vals[26] = E2x5TopSeed/ESeed;
3094 vals[27] = E2x5BottomSeed/ESeed;
3095 vals[28] = E2x5LeftSeed/ESeed;
3096 vals[29] = E2x5RightSeed/ESeed;
3097 vals[30] = IsEcalDriven;
3098 vals[31] = GsfTrackPIn;
3102 vals[35] = TrackMomentumError/GsfTrackPIn;
3103 vals[36] = EcalEnergyError/SCRawEnergy;
3104 vals[37] = Classification;
3107 vals[40] = detaCalo;
3108 vals[41] = dphiCalo;
3109 vals[42] = GsfTrackChiSqr;
3110 vals[43] = KFTrackNLayers;
3111 vals[44] = ElectronEnergyOverPout;
3112 vals[45] = PreShowerOverRaw;
3116 double regressionResult = 0;
3125 if (fabs(scEta) <= 1.479) {
3127 for (
unsigned int v=0;
v < 53; ++
v)
std::cout << vals[
v] <<
", ";
3132 for (
unsigned int v=0;
v < 46; ++
v)
std::cout << vals[
v] <<
", ";
3135 std::cout <<
"SCRawEnergy = " << SCRawEnergy <<
" : PreShowerOverRaw = " << PreShowerOverRaw << std::endl;
3136 std::cout <<
"regression energy uncertainty = " << regressionResult << std::endl;
3142 return regressionResult;
3172 double E2x5BottomSeed,
3173 double E2x5LeftSeed,
3174 double E2x5RightSeed,
3179 double PreShowerOverRaw,
3180 double isEcalDriven,
3200 double NPshwClusters,
3217 printf(
"ElectronEnergyRegressionEvaluate instance not initialized !!!");
3223 std::cout <<
"Error: Regression VersionType " <<
fVersionType <<
" is not supported to use function regressionValueWithSubClusters.\n";
3230 float *
vals = (isEB) ?
new float[61] :
new float[65];
3234 vals[2] = isEcalDriven;
3238 vals[6] = SCRawEnergy;
3242 vals[10] = etawidth;
3243 vals[11] = phiwidth;
3244 vals[12] = NClusters;
3246 vals[14] = EtaSeed - scEta;
3247 vals[15] = atan2(
sin(PhiSeed-scPhi),
cos(PhiSeed-scPhi));
3248 vals[16] = ESeed/SCRawEnergy;
3249 vals[17] = E3x3Seed/ESeed;
3250 vals[18] = E5x5Seed/SCRawEnergy;
3251 vals[19] = E5x5Seed/ESeed;
3252 vals[20] = EMaxSeed/ESeed;
3253 vals[21] = E2ndSeed/ESeed;
3254 vals[22] = ETopSeed/ESeed;
3255 vals[23] = EBottomSeed/ESeed;
3256 vals[24] = ELeftSeed/ESeed;
3257 vals[25] = ERightSeed/ESeed;
3258 vals[26] = E2x5MaxSeed/ESeed;
3259 vals[27] = E2x5TopSeed/ESeed;
3260 vals[28] = E2x5BottomSeed/ESeed;
3261 vals[29] = E2x5LeftSeed/ESeed;
3262 vals[30] = E2x5RightSeed/ESeed;
3266 vals[34] = phiwidth/etawidth;
3267 vals[35] = (ELeftSeed+ERightSeed==0. ? 0. : (ELeftSeed-ERightSeed)/(ELeftSeed+ERightSeed));
3268 vals[36] = (ETopSeed+EBottomSeed==0. ? 0. : (ETopSeed-EBottomSeed)/(ETopSeed+EBottomSeed));
3269 vals[37] = ESubs/SCRawEnergy;
3270 vals[38] = ESub1/SCRawEnergy;
3271 vals[39] = (NClusters<=1 ? 999. : EtaSub1-EtaSeed);
3272 vals[40] = (NClusters<=1 ? 999. : atan2(
sin(PhiSub1-PhiSeed),
cos(PhiSub1-PhiSeed)));
3273 vals[41] = (NClusters<=1 ? 0. : EMaxSub1/ESub1);
3274 vals[42] = (NClusters<=1 ? 0. : E3x3Sub1/ESub1);
3275 vals[43] = ESub2/SCRawEnergy;
3276 vals[44] = (NClusters<=2 ? 999. : EtaSub2-EtaSeed);
3277 vals[45] = (NClusters<=2 ? 999. : atan2(
sin(PhiSub2-PhiSeed),
cos(PhiSub2-PhiSeed)));
3278 vals[46] = (NClusters<=2 ? 0. : EMaxSub2/ESub2);
3279 vals[47] = (NClusters<=2 ? 0. : E3x3Sub2/ESub2);
3280 vals[48] = ESub3/SCRawEnergy;
3281 vals[49] = (NClusters<=3 ? 999. : EtaSub3-EtaSeed);
3282 vals[50] = (NClusters<=3 ? 999. : atan2(
sin(PhiSub3-PhiSeed),
cos(PhiSub3-PhiSeed)));
3283 vals[51] = (NClusters<=3 ? 0. : EMaxSub3/ESub3);
3284 vals[52] = (NClusters<=3 ? 0. : E3x3Sub3/ESub3);
3285 vals[53] = IEtaSeed;
3286 vals[54] = ((int) IEtaSeed)%5;
3287 vals[55] = (
abs(IEtaSeed)<=25)*(((
int)IEtaSeed)%25) + (
abs(IEtaSeed)>25)*(((
int) (IEtaSeed-25*
abs(IEtaSeed)/IEtaSeed))%20);
3288 vals[56] = IPhiSeed;
3289 vals[57] = ((int) IPhiSeed)%2;
3290 vals[58] = ((int) IPhiSeed)%20;
3291 vals[59] = EtaCrySeed;
3292 vals[60] = PhiCrySeed;
3297 vals[2] = isEcalDriven;
3301 vals[6] = SCRawEnergy;
3305 vals[10] = etawidth;
3306 vals[11] = phiwidth;
3307 vals[12] = NClusters;
3309 vals[14] = EtaSeed - scEta;
3310 vals[15] = atan2(
sin(PhiSeed-scPhi),
cos(PhiSeed-scPhi));
3311 vals[16] = ESeed/SCRawEnergy;
3312 vals[17] = E3x3Seed/ESeed;
3313 vals[18] = E5x5Seed/SCRawEnergy;
3314 vals[19] = E5x5Seed/ESeed;
3315 vals[20] = EMaxSeed/ESeed;
3316 vals[21] = E2ndSeed/ESeed;
3317 vals[22] = ETopSeed/ESeed;
3318 vals[23] = EBottomSeed/ESeed;
3319 vals[24] = ELeftSeed/ESeed;
3320 vals[25] = ERightSeed/ESeed;
3321 vals[26] = E2x5MaxSeed/ESeed;
3322 vals[27] = E2x5TopSeed/ESeed;
3323 vals[28] = E2x5BottomSeed/ESeed;
3324 vals[29] = E2x5LeftSeed/ESeed;
3325 vals[30] = E2x5RightSeed/ESeed;
3329 vals[34] = phiwidth/etawidth;
3330 vals[35] = (ELeftSeed+ERightSeed==0. ? 0. : (ELeftSeed-ERightSeed)/(ELeftSeed+ERightSeed));
3331 vals[36] = (ETopSeed+EBottomSeed==0. ? 0. : (ETopSeed-EBottomSeed)/(ETopSeed+EBottomSeed));
3332 vals[37] = ESubs/SCRawEnergy;
3333 vals[38] = ESub1/SCRawEnergy;
3334 vals[39] = (NClusters<=1 ? 999. : EtaSub1-EtaSeed);
3335 vals[40] = (NClusters<=1 ? 999. : atan2(
sin(PhiSub1-PhiSeed),
cos(PhiSub1-PhiSeed)));
3336 vals[41] = (NClusters<=1 ? 0. : EMaxSub1/ESub1);
3337 vals[42] = (NClusters<=1 ? 0. : E3x3Sub1/ESub1);
3338 vals[43] = ESub2/SCRawEnergy;
3339 vals[44] = (NClusters<=2 ? 999. : EtaSub2-EtaSeed);
3340 vals[45] = (NClusters<=2 ? 999. : atan2(
sin(PhiSub2-PhiSeed),
cos(PhiSub2-PhiSeed)));
3341 vals[46] = (NClusters<=2 ? 0. : EMaxSub2/ESub2);
3342 vals[47] = (NClusters<=2 ? 0. : E3x3Sub2/ESub2);
3343 vals[48] = ESub3/SCRawEnergy;
3344 vals[49] = (NClusters<=3 ? 999. : EtaSub3-EtaSeed);
3345 vals[50] = (NClusters<=3 ? 999. : atan2(
sin(PhiSub3-PhiSeed),
cos(PhiSub3-PhiSeed)));
3346 vals[51] = (NClusters<=3 ? 0. : EMaxSub3/ESub3);
3347 vals[52] = (NClusters<=3 ? 0. : E3x3Sub3/ESub3);
3348 vals[53] = PreShowerOverRaw;
3349 vals[54] = NPshwClusters;
3350 vals[55] = EPshwSubs/SCRawEnergy;
3351 vals[56] = EPshwSub1/SCRawEnergy;
3352 vals[57] = (NPshwClusters==0 ? 999. : EtaPshwSub1-EtaSeed);
3353 vals[58] = (NPshwClusters==0 ? 999. : atan2(
sin(PhiPshwSub1-PhiSeed),
cos(PhiPshwSub1-PhiSeed)));
3354 vals[59] = EPshwSub2/SCRawEnergy;
3355 vals[60] = (NPshwClusters<=1 ? 999. : EtaPshwSub2-EtaSeed);
3356 vals[61] = (NPshwClusters<=1 ? 999. : atan2(
sin(PhiPshwSub2-PhiSeed),
cos(PhiPshwSub2-PhiSeed)));
3357 vals[62] = EPshwSub3/SCRawEnergy;
3358 vals[63] = (NPshwClusters<=2 ? 999. : EtaPshwSub3-EtaSeed);
3359 vals[64] = (NPshwClusters<=2 ? 999. : atan2(
sin(PhiPshwSub3-PhiSeed),
cos(PhiPshwSub3-PhiSeed)));
3364 double regressionResult = 0;
3365 Int_t BinIndex = -1;
3382 for (
unsigned int v=0;
v < 61; ++
v)
std::cout <<
v <<
"=" << vals[
v] <<
", ";
3387 for (
unsigned int v=0;
v < 65; ++
v)
std::cout <<
v <<
"=" << vals[
v] <<
", ";
3390 std::cout <<
"BinIndex : " << BinIndex <<
"\n";
3391 std::cout <<
"SCRawEnergy = " << SCRawEnergy <<
" : PreShowerOverRaw = " << PreShowerOverRaw << std::endl;
3392 std::cout <<
"regression energy = " << regressionResult << std::endl;
3398 return regressionResult;
3428 double E2x5BottomSeed,
3429 double E2x5LeftSeed,
3430 double E2x5RightSeed,
3435 double PreShowerOverRaw,
3436 double isEcalDriven,
3456 double NPshwClusters,
3472 printf(
"ElectronEnergyRegressionEvaluate instance not initialized !!!");
3478 std::cout <<
"Error: Regression VersionType " <<
fVersionType <<
" is not supported to use function regressionValueWithSubClusters.\n";
3483 float *
vals = (isEB) ?
new float[61] :
new float[65];
3487 vals[2] = isEcalDriven;
3491 vals[6] = SCRawEnergy;
3495 vals[10] = etawidth;
3496 vals[11] = phiwidth;
3497 vals[12] = NClusters;
3499 vals[14] = EtaSeed - scEta;
3500 vals[15] = atan2(
sin(PhiSeed-scPhi),
cos(PhiSeed-scPhi));
3501 vals[16] = ESeed/SCRawEnergy;
3502 vals[17] = E3x3Seed/ESeed;
3503 vals[18] = E5x5Seed/SCRawEnergy;
3504 vals[19] = E5x5Seed/ESeed;
3505 vals[20] = EMaxSeed/ESeed;
3506 vals[21] = E2ndSeed/ESeed;
3507 vals[22] = ETopSeed/ESeed;
3508 vals[23] = EBottomSeed/ESeed;
3509 vals[24] = ELeftSeed/ESeed;
3510 vals[25] = ERightSeed/ESeed;
3511 vals[26] = E2x5MaxSeed/ESeed;
3512 vals[27] = E2x5TopSeed/ESeed;
3513 vals[28] = E2x5BottomSeed/ESeed;
3514 vals[29] = E2x5LeftSeed/ESeed;
3515 vals[30] = E2x5RightSeed/ESeed;
3519 vals[34] = phiwidth/etawidth;
3520 vals[35] = (ELeftSeed+ERightSeed==0. ? 0. : (ELeftSeed-ERightSeed)/(ELeftSeed+ERightSeed));
3521 vals[36] = (ETopSeed+EBottomSeed==0. ? 0. : (ETopSeed-EBottomSeed)/(ETopSeed+EBottomSeed));
3522 vals[37] = ESubs/SCRawEnergy;
3523 vals[38] = ESub1/SCRawEnergy;
3524 vals[39] = (NClusters<=1 ? 999. : EtaSub1-EtaSeed);
3525 vals[40] = (NClusters<=1 ? 999. : atan2(
sin(PhiSub1-PhiSeed),
cos(PhiSub1-PhiSeed)));
3526 vals[41] = (NClusters<=1 ? 0. : EMaxSub1/ESub1);
3527 vals[42] = (NClusters<=1 ? 0. : E3x3Sub1/ESub1);
3528 vals[43] = ESub2/SCRawEnergy;
3529 vals[44] = (NClusters<=2 ? 999. : EtaSub2-EtaSeed);
3530 vals[45] = (NClusters<=2 ? 999. : atan2(
sin(PhiSub2-PhiSeed),
cos(PhiSub2-PhiSeed)));
3531 vals[46] = (NClusters<=2 ? 0. : EMaxSub2/ESub2);
3532 vals[47] = (NClusters<=2 ? 0. : E3x3Sub2/ESub2);
3533 vals[48] = ESub3/SCRawEnergy;
3534 vals[49] = (NClusters<=3 ? 999. : EtaSub3-EtaSeed);
3535 vals[50] = (NClusters<=3 ? 999. : atan2(
sin(PhiSub3-PhiSeed),
cos(PhiSub3-PhiSeed)));
3536 vals[51] = (NClusters<=3 ? 0. : EMaxSub3/ESub3);
3537 vals[52] = (NClusters<=3 ? 0. : E3x3Sub3/ESub3);
3538 vals[53] = IEtaSeed;
3539 vals[54] = ((int) IEtaSeed)%5;
3540 vals[55] = (
abs(IEtaSeed)<=25)*(((
int)IEtaSeed)%25) + (
abs(IEtaSeed)>25)*(((
int) (IEtaSeed-25*
abs(IEtaSeed)/IEtaSeed))%20);
3541 vals[56] = IPhiSeed;
3542 vals[57] = ((int) IPhiSeed)%2;
3543 vals[58] = ((int) IPhiSeed)%20;
3544 vals[59] = EtaCrySeed;
3545 vals[60] = PhiCrySeed;
3550 vals[2] = isEcalDriven;
3554 vals[6] = SCRawEnergy;
3558 vals[10] = etawidth;
3559 vals[11] = phiwidth;
3560 vals[12] = NClusters;
3562 vals[14] = EtaSeed - scEta;
3563 vals[15] = atan2(
sin(PhiSeed-scPhi),
cos(PhiSeed-scPhi));
3564 vals[16] = ESeed/SCRawEnergy;
3565 vals[17] = E3x3Seed/ESeed;
3566 vals[18] = E5x5Seed/SCRawEnergy;
3567 vals[19] = E5x5Seed/ESeed;
3568 vals[20] = EMaxSeed/ESeed;
3569 vals[21] = E2ndSeed/ESeed;
3570 vals[22] = ETopSeed/ESeed;
3571 vals[23] = EBottomSeed/ESeed;
3572 vals[24] = ELeftSeed/ESeed;
3573 vals[25] = ERightSeed/ESeed;
3574 vals[26] = E2x5MaxSeed/ESeed;
3575 vals[27] = E2x5TopSeed/ESeed;
3576 vals[28] = E2x5BottomSeed/ESeed;
3577 vals[29] = E2x5LeftSeed/ESeed;
3578 vals[30] = E2x5RightSeed/ESeed;
3582 vals[34] = phiwidth/etawidth;
3583 vals[35] = (ELeftSeed+ERightSeed==0. ? 0. : (ELeftSeed-ERightSeed)/(ELeftSeed+ERightSeed));
3584 vals[36] = (ETopSeed+EBottomSeed==0. ? 0. : (ETopSeed-EBottomSeed)/(ETopSeed+EBottomSeed));
3585 vals[37] = ESubs/SCRawEnergy;
3586 vals[38] = ESub1/SCRawEnergy;
3587 vals[39] = (NClusters<=1 ? 999. : EtaSub1-EtaSeed);
3588 vals[40] = (NClusters<=1 ? 999. : atan2(
sin(PhiSub1-PhiSeed),
cos(PhiSub1-PhiSeed)));
3589 vals[41] = (NClusters<=1 ? 0. : EMaxSub1/ESub1);
3590 vals[42] = (NClusters<=1 ? 0. : E3x3Sub1/ESub1);
3591 vals[43] = ESub2/SCRawEnergy;
3592 vals[44] = (NClusters<=2 ? 999. : EtaSub2-EtaSeed);
3593 vals[45] = (NClusters<=2 ? 999. : atan2(
sin(PhiSub2-PhiSeed),
cos(PhiSub2-PhiSeed)));
3594 vals[46] = (NClusters<=2 ? 0. : EMaxSub2/ESub2);
3595 vals[47] = (NClusters<=2 ? 0. : E3x3Sub2/ESub2);
3596 vals[48] = ESub3/SCRawEnergy;
3597 vals[49] = (NClusters<=3 ? 999. : EtaSub3-EtaSeed);
3598 vals[50] = (NClusters<=3 ? 999. : atan2(
sin(PhiSub3-PhiSeed),
cos(PhiSub3-PhiSeed)));
3599 vals[51] = (NClusters<=3 ? 0. : EMaxSub3/ESub3);
3600 vals[52] = (NClusters<=3 ? 0. : E3x3Sub3/ESub3);
3601 vals[53] = PreShowerOverRaw;
3602 vals[54] = NPshwClusters;
3603 vals[55] = EPshwSubs/SCRawEnergy;
3604 vals[56] = EPshwSub1/SCRawEnergy;
3605 vals[57] = (NPshwClusters<=0 ? 999. : EtaPshwSub1-EtaSeed);
3606 vals[58] = (NPshwClusters<=0 ? 999. : atan2(
sin(PhiPshwSub1-PhiSeed),
cos(PhiPshwSub1-PhiSeed)));
3607 vals[59] = EPshwSub2/SCRawEnergy;
3608 vals[60] = (NPshwClusters<=1 ? 999. : EtaPshwSub2-EtaSeed);
3609 vals[61] = (NPshwClusters<=1 ? 999. : atan2(
sin(PhiPshwSub2-PhiSeed),
cos(PhiPshwSub2-PhiSeed)));
3610 vals[62] = EPshwSub3/SCRawEnergy;
3611 vals[63] = (NPshwClusters<=2 ? 999. : EtaPshwSub3-EtaSeed);
3612 vals[64] = (NPshwClusters<=2 ? 999. : atan2(
sin(PhiPshwSub3-PhiSeed),
cos(PhiPshwSub3-PhiSeed)));
3617 double regressionResult = 0;
3618 Int_t BinIndex = -1;
3635 for (
unsigned int v=0;
v < 38; ++
v)
std::cout << vals[
v] <<
", ";
3640 for (
unsigned int v=0;
v < 31; ++
v)
std::cout << vals[
v] <<
", ";
3643 std::cout <<
"BinIndex : " << BinIndex <<
"\n";
3644 std::cout <<
"SCRawEnergy = " << SCRawEnergy <<
" : PreShowerOverRaw = " << PreShowerOverRaw << std::endl;
3645 std::cout <<
"regression energy uncertainty = " << regressionResult << std::endl;
3651 return regressionResult;
double GetResponse(const float *vector) const
virtual double p() const
magnitude of momentum vector
float trackMomentumError() const
bool isNonnull() const
Checks for non-null.
double regressionValueNoTrkVarV1(double SCRawEnergy, double scEta, double scPhi, double R9, double etawidth, double phiwidth, double NClusters, double HoE, double rho, double vertices, double EtaSeed, double PhiSeed, double ESeed, double E3x3Seed, double E5x5Seed, double see, double spp, double sep, double EMaxSeed, double E2ndSeed, double ETopSeed, double EBottomSeed, double ELeftSeed, double ERightSeed, double E2x5MaxSeed, double E2x5TopSeed, double E2x5BottomSeed, double E2x5LeftSeed, double E2x5RightSeed, double IEtaSeed, double IPhiSeed, double EtaCrySeed, double PhiCrySeed, double PreShowerOverRaw, int IsEcalDriven, bool printDebug=false)
float eESClusters() const
virtual float pt() const
transverse momentum
float eSuperClusterOverP() const
ElectronEnergyRegressionEvaluate::ElectronEnergyRegressionType fVersionType
float esClusterEnergy(unsigned i) const
float sigmaIetaIeta() const
virtual float phi() const
momentum azimuthal angle
float subClusterE3x3(unsigned i) const
math::XYZVectorF trackMomentumAtVtx() const
Sin< T >::type sin(const T &t)
GBRForest * forestUncertainty_eb
double calculateRegressionEnergy(const reco::GsfElectron *ele, SuperClusterHelper &mySCHelper, double rho, double nvertices, bool printDebug=false)
double regressionValueWithTrkVarV2(double SCRawEnergy, double scEta, double scPhi, double R9, double etawidth, double phiwidth, double NClusters, double HoE, double rho, double vertices, double EtaSeed, double PhiSeed, double ESeed, double E3x3Seed, double E5x5Seed, double see, double spp, double sep, double EMaxSeed, double E2ndSeed, double ETopSeed, double EBottomSeed, double ELeftSeed, double ERightSeed, double E2x5MaxSeed, double E2x5TopSeed, double E2x5BottomSeed, double E2x5LeftSeed, double E2x5RightSeed, double IEtaSeed, double IPhiSeed, double EtaCrySeed, double PhiCrySeed, double PreShowerOverRaw, int IsEcalDriven, double GsfTrackPIn, double fbrem, double Charge, double EoP, double TrackMomentumError, double EcalEnergyError, int Classification, double detaIn, double dphiIn, double detaCalo, double dphiCalo, double GsfTrackChiSqr, double KFTrackNLayers, double ElectronEnergyOverPout, bool printDebug=false)
double regressionValueWithTrkVar(double electronP, double SCRawEnergy, double scEta, double scPhi, double R9, double etawidth, double phiwidth, double NClusters, double HoE, double rho, double vertices, double EtaSeed, double PhiSeed, double ESeed, double E3x3Seed, double E5x5Seed, double see, double spp, double sep, double EMaxSeed, double E2ndSeed, double ETopSeed, double EBottomSeed, double ELeftSeed, double ERightSeed, double E2x5MaxSeed, double E2x5TopSeed, double E2x5BottomSeed, double E2x5LeftSeed, double E2x5RightSeed, double pt, double GsfTrackPIn, double fbrem, double Charge, double EoP, double IEtaSeed, double IPhiSeed, double EtaCrySeed, double PhiCrySeed, double PreShowerOverRaw, bool printDebug=false)
float eSubClusters() const
double regressionUncertaintyNoTrkVar(double SCRawEnergy, double scEta, double scPhi, double R9, double etawidth, double phiwidth, double NClusters, double HoE, double rho, double vertices, double EtaSeed, double PhiSeed, double ESeed, double E3x3Seed, double E5x5Seed, double see, double spp, double sep, double EMaxSeed, double E2ndSeed, double ETopSeed, double EBottomSeed, double ELeftSeed, double ERightSeed, double E2x5MaxSeed, double E2x5TopSeed, double E2x5BottomSeed, double E2x5LeftSeed, double E2x5RightSeed, double IEtaSeed, double IPhiSeed, double EtaCrySeed, double PhiCrySeed, double PreShowerOverRaw, bool printDebug=false)
GBRForest * forestCorrection_ee
double regressionValueWithSubClusters(double SCRawEnergy, double scEta, double scPhi, double R9, double etawidth, double phiwidth, double NClusters, double HoE, double rho, double vertices, double EtaSeed, double PhiSeed, double ESeed, double E3x3Seed, double E5x5Seed, double see, double spp, double sep, double EMaxSeed, double E2ndSeed, double ETopSeed, double EBottomSeed, double ELeftSeed, double ERightSeed, double E2x5MaxSeed, double E2x5TopSeed, double E2x5BottomSeed, double E2x5LeftSeed, double E2x5RightSeed, double IEtaSeed, double IPhiSeed, double EtaCrySeed, double PhiCrySeed, double PreShowerOverRaw, double isEcalDriven, double isEtaGap, double isPhiGap, double isDeeGap, double ESubs, double ESub1, double EtaSub1, double PhiSub1, double EMaxSub1, double E3x3Sub1, double ESub2, double EtaSub2, double PhiSub2, double EMaxSub2, double E3x3Sub2, double ESub3, double EtaSub3, double PhiSub3, double EMaxSub3, double E3x3Sub3, double NPshwClusters, double EPshwSubs, double EPshwSub1, double EtaPshwSub1, double PhiPshwSub1, double EPshwSub2, double EtaPshwSub2, double PhiPshwSub2, double EPshwSub3, double EtaPshwSub3, double PhiPshwSub3, bool isEB, bool printDebug=false)
TrackRef closestCtfTrackRef() const
double regressionUncertaintyNoTrkVarV1(double SCRawEnergy, double scEta, double scPhi, double R9, double etawidth, double phiwidth, double NClusters, double HoE, double rho, double vertices, double EtaSeed, double PhiSeed, double ESeed, double E3x3Seed, double E5x5Seed, double see, double spp, double sep, double EMaxSeed, double E2ndSeed, double ETopSeed, double EBottomSeed, double ELeftSeed, double ERightSeed, double E2x5MaxSeed, double E2x5TopSeed, double E2x5BottomSeed, double E2x5LeftSeed, double E2x5RightSeed, double IEtaSeed, double IPhiSeed, double EtaCrySeed, double PhiCrySeed, double PreShowerOverRaw, int IsEcalDriven, bool printDebug=false)
double regressionUncertaintyWithTrkVarV1(double SCRawEnergy, double scEta, double scPhi, double R9, double etawidth, double phiwidth, double NClusters, double HoE, double rho, double vertices, double EtaSeed, double PhiSeed, double ESeed, double E3x3Seed, double E5x5Seed, double see, double spp, double sep, double EMaxSeed, double E2ndSeed, double ETopSeed, double EBottomSeed, double ELeftSeed, double ERightSeed, double E2x5MaxSeed, double E2x5TopSeed, double E2x5BottomSeed, double E2x5LeftSeed, double E2x5RightSeed, double IEtaSeed, double IPhiSeed, double EtaCrySeed, double PhiCrySeed, double PreShowerOverRaw, int IsEcalDriven, double GsfTrackPIn, double fbrem, double Charge, double EoP, double TrackMomentumError, double EcalEnergyError, int Classification, bool printDebug=false)
float esClusterEta(unsigned i) const
float deltaEtaSuperClusterTrackAtVtx() const
float subClusterEnergy(unsigned i) const
~ElectronEnergyRegressionEvaluate()
float deltaPhiSeedClusterTrackAtCalo() const
double regressionValueNoTrkVar(double SCRawEnergy, double scEta, double scPhi, double R9, double etawidth, double phiwidth, double NClusters, double HoE, double rho, double vertices, double EtaSeed, double PhiSeed, double ESeed, double E3x3Seed, double E5x5Seed, double see, double spp, double sep, double EMaxSeed, double E2ndSeed, double ETopSeed, double EBottomSeed, double ELeftSeed, double ERightSeed, double E2x5MaxSeed, double E2x5TopSeed, double E2x5BottomSeed, double E2x5LeftSeed, double E2x5RightSeed, double IEtaSeed, double IPhiSeed, double EtaCrySeed, double PhiCrySeed, double PreShowerOverRaw, bool printDebug=false)
virtual float eta() const
momentum pseudorapidity
float deltaPhiSuperClusterTrackAtVtx() const
Cos< T >::type cos(const T &t)
float preshowerEnergyOverRaw() const
virtual int charge() const
electric charge
void initialize(std::string weightsFile, ElectronEnergyRegressionEvaluate::ElectronEnergyRegressionType type)
Abs< T >::type abs(const T &t)
GBRForest * forestCorrection_eb
float eEleClusterOverPout() const
ElectronEnergyRegressionEvaluate()
float hadronicOverEm() const
float subClusterEmax(unsigned i) const
ElectronEnergyRegressionType
float esClusterPhi(unsigned i) const
float subClusterPhi(unsigned i) const
Classification classification() const
double regressionUncertaintyWithTrkVar(double electronP, double SCRawEnergy, double scEta, double scPhi, double R9, double etawidth, double phiwidth, double NClusters, double HoE, double rho, double vertices, double EtaSeed, double PhiSeed, double ESeed, double E3x3Seed, double E5x5Seed, double see, double spp, double sep, double EMaxSeed, double E2ndSeed, double ETopSeed, double EBottomSeed, double ELeftSeed, double ERightSeed, double E2x5MaxSeed, double E2x5TopSeed, double E2x5BottomSeed, double E2x5LeftSeed, double E2x5RightSeed, double pt, double GsfTrackPIn, double fbrem, double Charge, double EoP, double IEtaSeed, double IPhiSeed, double EtaCrySeed, double PhiCrySeed, double PreShowerOverRaw, bool printDebug=false)
float correctedEcalEnergyError() const
double calculateRegressionEnergyUncertainty(const reco::GsfElectron *ele, SuperClusterHelper &mySCHelper, double rho, double nvertices, bool printDebug=false)
float deltaEtaSeedClusterTrackAtCalo() const
GBRForest * forestUncertainty_ee
float nPreshowerClusters() const
float clustersSize() const
float subClusterEta(unsigned i) const
double regressionUncertaintyWithSubClusters(double SCRawEnergy, double scEta, double scPhi, double R9, double etawidth, double phiwidth, double NClusters, double HoE, double rho, double vertices, double EtaSeed, double PhiSeed, double ESeed, double E3x3Seed, double E5x5Seed, double see, double spp, double sep, double EMaxSeed, double E2ndSeed, double ETopSeed, double EBottomSeed, double ELeftSeed, double ERightSeed, double E2x5MaxSeed, double E2x5TopSeed, double E2x5BottomSeed, double E2x5LeftSeed, double E2x5RightSeed, double IEtaSeed, double IPhiSeed, double EtaCrySeed, double PhiCrySeed, double PreShowerOverRaw, double isEcalDriven, double isEtaGap, double isPhiGap, double isDeeGap, double ESubs, double ESub1, double EtaSub1, double PhiSub1, double EMaxSub1, double E3x3Sub1, double ESub2, double EtaSub2, double PhiSub2, double EMaxSub2, double E3x3Sub2, double ESub3, double EtaSub3, double PhiSub3, double EMaxSub3, double E3x3Sub3, double NPshwClusters, double EPshwSubs, double EPshwSub1, double EtaPshwSub1, double PhiPshwSub1, double EPshwSub2, double EtaPshwSub2, double PhiPshwSub2, double EPshwSub3, double EtaPshwSub3, double PhiPshwSub3, bool isEB, bool printDebug=false)
double regressionValueWithTrkVarV1(double SCRawEnergy, double scEta, double scPhi, double R9, double etawidth, double phiwidth, double NClusters, double HoE, double rho, double vertices, double EtaSeed, double PhiSeed, double ESeed, double E3x3Seed, double E5x5Seed, double see, double spp, double sep, double EMaxSeed, double E2ndSeed, double ETopSeed, double EBottomSeed, double ELeftSeed, double ERightSeed, double E2x5MaxSeed, double E2x5TopSeed, double E2x5BottomSeed, double E2x5LeftSeed, double E2x5RightSeed, double IEtaSeed, double IPhiSeed, double EtaCrySeed, double PhiCrySeed, double PreShowerOverRaw, int IsEcalDriven, double GsfTrackPIn, double fbrem, double Charge, double EoP, double TrackMomentumError, double EcalEnergyError, int Classification, bool printDebug=false)
double regressionUncertaintyWithTrkVarV2(double SCRawEnergy, double scEta, double scPhi, double R9, double etawidth, double phiwidth, double NClusters, double HoE, double rho, double vertices, double EtaSeed, double PhiSeed, double ESeed, double E3x3Seed, double E5x5Seed, double see, double spp, double sep, double EMaxSeed, double E2ndSeed, double ETopSeed, double EBottomSeed, double ELeftSeed, double ERightSeed, double E2x5MaxSeed, double E2x5TopSeed, double E2x5BottomSeed, double E2x5LeftSeed, double E2x5RightSeed, double IEtaSeed, double IPhiSeed, double EtaCrySeed, double PhiCrySeed, double PreShowerOverRaw, int IsEcalDriven, double GsfTrackPIn, double fbrem, double Charge, double EoP, double TrackMomentumError, double EcalEnergyError, int Classification, double detaIn, double dphiIn, double detaCalo, double dphiCalo, double GsfTrackChiSqr, double KFTrackNLayers, double ElectronEnergyOverPout, bool printDebug=false)
virtual GsfTrackRef gsfTrack() const
reference to a GsfTrack
bool ecalDrivenSeed() const