15 : fIsInitialized(kFALSE),
16 fVersionType(kNoTrkVar),
17 forestCorrection_eb(nullptr),
18 forestCorrection_ee(nullptr),
19 forestUncertainty_eb(nullptr),
20 forestUncertainty_ee(nullptr) {}
50 std::cout <<
"Error: Electron Energy Regression has not been initialized yet. return 0. \n";
56 std::cout <<
"Electron : " << ele->
pt() <<
" " << ele->
eta() <<
" " << ele->
phi() <<
"\n";
238 fmax(ele->
fbrem(), -1.0),
283 fmax(ele->
fbrem(), -1.0),
300 <<
" is not supported. Reverting to default electron momentum.\n";
308 std::cout <<
"Error: Electron Energy Regression has not been initialized yet. return 0. \n";
314 std::cout <<
"Electron : " << ele->
pt() <<
" " << ele->
eta() <<
" " << ele->
phi() <<
"\n";
496 fmax(ele->
fbrem(), -1.0),
541 fmax(ele->
fbrem(), -1.0),
558 <<
" is not supported. Reverting to default electron momentum.\n";
590 double E2x5BottomSeed,
592 double E2x5RightSeed,
597 double PreShowerOverRaw,
601 printf(
"ElectronEnergyRegressionEvaluate instance not initialized !!!");
608 <<
" is not supported to use function regressionValueNoTrkVar.\n";
614 float *vals = (
std::abs(scEta) <= 1.479) ?
new float[38] :
new float[31];
616 vals[0] = SCRawEnergy;
620 vals[4] = E5x5Seed / SCRawEnergy;
627 vals[11] = EtaSeed - scEta;
628 vals[12] = atan2(
sin(PhiSeed - scPhi),
cos(PhiSeed - scPhi));
629 vals[13] = ESeed / SCRawEnergy;
630 vals[14] = E3x3Seed / ESeed;
631 vals[15] = E5x5Seed / ESeed;
635 vals[19] = EMaxSeed / ESeed;
636 vals[20] = E2ndSeed / ESeed;
637 vals[21] = ETopSeed / ESeed;
638 vals[22] = EBottomSeed / ESeed;
639 vals[23] = ELeftSeed / ESeed;
640 vals[24] = ERightSeed / ESeed;
641 vals[25] = E2x5MaxSeed / ESeed;
642 vals[26] = E2x5TopSeed / ESeed;
643 vals[27] = E2x5BottomSeed / ESeed;
644 vals[28] = E2x5LeftSeed / ESeed;
645 vals[29] = E2x5RightSeed / ESeed;
648 vals[32] = ((
int)IEtaSeed) % 5;
649 vals[33] = ((
int)IPhiSeed) % 2;
650 vals[34] = (
std::abs(IEtaSeed) <= 25) * (((
int)IEtaSeed) % 25) +
651 (
std::abs(IEtaSeed) > 25) * (((
int)(IEtaSeed - 25 *
std::abs(IEtaSeed) / IEtaSeed)) % 20);
652 vals[35] = ((
int)IPhiSeed) % 20;
653 vals[36] = EtaCrySeed;
654 vals[37] = PhiCrySeed;
656 vals[0] = SCRawEnergy;
660 vals[4] = E5x5Seed / SCRawEnergy;
667 vals[11] = EtaSeed - scEta;
668 vals[12] = atan2(
sin(PhiSeed - scPhi),
cos(PhiSeed - scPhi));
669 vals[13] = ESeed / SCRawEnergy;
670 vals[14] = E3x3Seed / ESeed;
671 vals[15] = E5x5Seed / ESeed;
675 vals[19] = EMaxSeed / ESeed;
676 vals[20] = E2ndSeed / ESeed;
677 vals[21] = ETopSeed / ESeed;
678 vals[22] = EBottomSeed / ESeed;
679 vals[23] = ELeftSeed / ESeed;
680 vals[24] = ERightSeed / ESeed;
681 vals[25] = E2x5MaxSeed / ESeed;
682 vals[26] = E2x5TopSeed / ESeed;
683 vals[27] = E2x5BottomSeed / ESeed;
684 vals[28] = E2x5LeftSeed / ESeed;
685 vals[29] = E2x5RightSeed / ESeed;
686 vals[30] = PreShowerOverRaw;
690 double regressionResult = 0;
707 for (
unsigned int v = 0;
v < 38; ++
v)
712 for (
unsigned int v = 0;
v < 31; ++
v)
716 std::cout <<
"BinIndex : " << BinIndex <<
"\n";
717 std::cout <<
"SCRawEnergy = " << SCRawEnergy <<
" : PreShowerOverRaw = " << PreShowerOverRaw << std::endl;
718 std::cout <<
"regression energy = " << regressionResult << std::endl;
723 return regressionResult;
752 double E2x5BottomSeed,
754 double E2x5RightSeed,
759 double PreShowerOverRaw,
763 printf(
"ElectronEnergyRegressionEvaluate instance not initialized !!!");
770 <<
" is not supported to use function regressionValueNoTrkVar.\n";
775 float *vals = (
std::abs(scEta) <= 1.479) ?
new float[38] :
new float[31];
777 vals[0] = SCRawEnergy;
781 vals[4] = E5x5Seed / SCRawEnergy;
788 vals[11] = EtaSeed - scEta;
789 vals[12] = atan2(
sin(PhiSeed - scPhi),
cos(PhiSeed - scPhi));
790 vals[13] = ESeed / SCRawEnergy;
791 vals[14] = E3x3Seed / ESeed;
792 vals[15] = E5x5Seed / ESeed;
796 vals[19] = EMaxSeed / ESeed;
797 vals[20] = E2ndSeed / ESeed;
798 vals[21] = ETopSeed / ESeed;
799 vals[22] = EBottomSeed / ESeed;
800 vals[23] = ELeftSeed / ESeed;
801 vals[24] = ERightSeed / ESeed;
802 vals[25] = E2x5MaxSeed / ESeed;
803 vals[26] = E2x5TopSeed / ESeed;
804 vals[27] = E2x5BottomSeed / ESeed;
805 vals[28] = E2x5LeftSeed / ESeed;
806 vals[29] = E2x5RightSeed / ESeed;
809 vals[32] = ((
int)IEtaSeed) % 5;
810 vals[33] = ((
int)IPhiSeed) % 2;
811 vals[34] = (
std::abs(IEtaSeed) <= 25) * (((
int)IEtaSeed) % 25) +
812 (
std::abs(IEtaSeed) > 25) * (((
int)(IEtaSeed - 25 *
std::abs(IEtaSeed) / IEtaSeed)) % 20);
813 vals[35] = ((
int)IPhiSeed) % 20;
814 vals[36] = EtaCrySeed;
815 vals[37] = PhiCrySeed;
817 vals[0] = SCRawEnergy;
821 vals[4] = E5x5Seed / SCRawEnergy;
828 vals[11] = EtaSeed - scEta;
829 vals[12] = atan2(
sin(PhiSeed - scPhi),
cos(PhiSeed - scPhi));
830 vals[13] = ESeed / SCRawEnergy;
831 vals[14] = E3x3Seed / ESeed;
832 vals[15] = E5x5Seed / ESeed;
836 vals[19] = EMaxSeed / ESeed;
837 vals[20] = E2ndSeed / ESeed;
838 vals[21] = ETopSeed / ESeed;
839 vals[22] = EBottomSeed / ESeed;
840 vals[23] = ELeftSeed / ESeed;
841 vals[24] = ERightSeed / ESeed;
842 vals[25] = E2x5MaxSeed / ESeed;
843 vals[26] = E2x5TopSeed / ESeed;
844 vals[27] = E2x5BottomSeed / ESeed;
845 vals[28] = E2x5LeftSeed / ESeed;
846 vals[29] = E2x5RightSeed / ESeed;
847 vals[30] = PreShowerOverRaw;
851 double regressionResult = 0;
868 for (
unsigned int v = 0;
v < 38; ++
v)
873 for (
unsigned int v = 0;
v < 31; ++
v)
877 std::cout <<
"BinIndex : " << BinIndex <<
"\n";
878 std::cout <<
"SCRawEnergy = " << SCRawEnergy <<
" : PreShowerOverRaw = " << PreShowerOverRaw << std::endl;
879 std::cout <<
"regression energy uncertainty = " << regressionResult << std::endl;
884 return regressionResult;
913 double E2x5BottomSeed,
915 double E2x5RightSeed,
920 double PreShowerOverRaw,
925 printf(
"ElectronEnergyRegressionEvaluate instance not initialized !!!");
932 <<
" is not supported to use function regressionValueNoTrkVar.\n";
937 float *vals = (
std::abs(scEta) <= 1.479) ?
new float[39] :
new float[32];
939 vals[0] = SCRawEnergy;
943 vals[4] = E5x5Seed / SCRawEnergy;
950 vals[11] = EtaSeed - scEta;
951 vals[12] = atan2(
sin(PhiSeed - scPhi),
cos(PhiSeed - scPhi));
952 vals[13] = ESeed / SCRawEnergy;
953 vals[14] = E3x3Seed / ESeed;
954 vals[15] = E5x5Seed / ESeed;
958 vals[19] = EMaxSeed / ESeed;
959 vals[20] = E2ndSeed / ESeed;
960 vals[21] = ETopSeed / ESeed;
961 vals[22] = EBottomSeed / ESeed;
962 vals[23] = ELeftSeed / ESeed;
963 vals[24] = ERightSeed / ESeed;
964 vals[25] = E2x5MaxSeed / ESeed;
965 vals[26] = E2x5TopSeed / ESeed;
966 vals[27] = E2x5BottomSeed / ESeed;
967 vals[28] = E2x5LeftSeed / ESeed;
968 vals[29] = E2x5RightSeed / ESeed;
969 vals[30] = IsEcalDriven;
972 vals[33] = ((
int)IEtaSeed) % 5;
973 vals[34] = ((
int)IPhiSeed) % 2;
974 vals[35] = (
std::abs(IEtaSeed) <= 25) * (((
int)IEtaSeed) % 25) +
975 (
std::abs(IEtaSeed) > 25) * (((
int)(IEtaSeed - 25 *
std::abs(IEtaSeed) / IEtaSeed)) % 20);
976 vals[36] = ((
int)IPhiSeed) % 20;
977 vals[37] = EtaCrySeed;
978 vals[38] = PhiCrySeed;
980 vals[0] = SCRawEnergy;
984 vals[4] = E5x5Seed / SCRawEnergy;
991 vals[11] = EtaSeed - scEta;
992 vals[12] = atan2(
sin(PhiSeed - scPhi),
cos(PhiSeed - scPhi));
993 vals[13] = ESeed / SCRawEnergy;
994 vals[14] = E3x3Seed / ESeed;
995 vals[15] = E5x5Seed / ESeed;
999 vals[19] = EMaxSeed / ESeed;
1000 vals[20] = E2ndSeed / ESeed;
1001 vals[21] = ETopSeed / ESeed;
1002 vals[22] = EBottomSeed / ESeed;
1003 vals[23] = ELeftSeed / ESeed;
1004 vals[24] = ERightSeed / ESeed;
1005 vals[25] = E2x5MaxSeed / ESeed;
1006 vals[26] = E2x5TopSeed / ESeed;
1007 vals[27] = E2x5BottomSeed / ESeed;
1008 vals[28] = E2x5LeftSeed / ESeed;
1009 vals[29] = E2x5RightSeed / ESeed;
1010 vals[30] = IsEcalDriven;
1011 vals[31] = PreShowerOverRaw;
1015 double regressionResult = 0;
1016 Int_t BinIndex = -1;
1032 for (
unsigned int v = 0;
v < 39; ++
v)
1037 for (
unsigned int v = 0;
v < 32; ++
v)
1041 std::cout <<
"BinIndex : " << BinIndex <<
"\n";
1042 std::cout <<
"SCRawEnergy = " << SCRawEnergy <<
" : PreShowerOverRaw = " << PreShowerOverRaw << std::endl;
1043 std::cout <<
"regression energy = " << regressionResult << std::endl;
1048 return regressionResult;
1077 double E2x5BottomSeed,
1078 double E2x5LeftSeed,
1079 double E2x5RightSeed,
1084 double PreShowerOverRaw,
1089 printf(
"ElectronEnergyRegressionEvaluate instance not initialized !!!");
1096 <<
" is not supported to use function regressionValueNoTrkVar.\n";
1101 float *vals = (
std::abs(scEta) <= 1.479) ?
new float[39] :
new float[32];
1103 vals[0] = SCRawEnergy;
1107 vals[4] = E5x5Seed / SCRawEnergy;
1110 vals[7] = NClusters;
1114 vals[11] = EtaSeed - scEta;
1115 vals[12] = atan2(
sin(PhiSeed - scPhi),
cos(PhiSeed - scPhi));
1116 vals[13] = ESeed / SCRawEnergy;
1117 vals[14] = E3x3Seed / ESeed;
1118 vals[15] = E5x5Seed / ESeed;
1122 vals[19] = EMaxSeed / ESeed;
1123 vals[20] = E2ndSeed / ESeed;
1124 vals[21] = ETopSeed / ESeed;
1125 vals[22] = EBottomSeed / ESeed;
1126 vals[23] = ELeftSeed / ESeed;
1127 vals[24] = ERightSeed / ESeed;
1128 vals[25] = E2x5MaxSeed / ESeed;
1129 vals[26] = E2x5TopSeed / ESeed;
1130 vals[27] = E2x5BottomSeed / ESeed;
1131 vals[28] = E2x5LeftSeed / ESeed;
1132 vals[29] = E2x5RightSeed / ESeed;
1133 vals[30] = IsEcalDriven;
1134 vals[31] = IEtaSeed;
1135 vals[32] = IPhiSeed;
1136 vals[33] = ((
int)IEtaSeed) % 5;
1137 vals[34] = ((
int)IPhiSeed) % 2;
1138 vals[35] = (
std::abs(IEtaSeed) <= 25) * (((
int)IEtaSeed) % 25) +
1139 (
std::abs(IEtaSeed) > 25) * (((
int)(IEtaSeed - 25 *
std::abs(IEtaSeed) / IEtaSeed)) % 20);
1140 vals[36] = ((
int)IPhiSeed) % 20;
1141 vals[37] = EtaCrySeed;
1142 vals[38] = PhiCrySeed;
1144 vals[0] = SCRawEnergy;
1148 vals[4] = E5x5Seed / SCRawEnergy;
1151 vals[7] = NClusters;
1155 vals[11] = EtaSeed - scEta;
1156 vals[12] = atan2(
sin(PhiSeed - scPhi),
cos(PhiSeed - scPhi));
1157 vals[13] = ESeed / SCRawEnergy;
1158 vals[14] = E3x3Seed / ESeed;
1159 vals[15] = E5x5Seed / ESeed;
1163 vals[19] = EMaxSeed / ESeed;
1164 vals[20] = E2ndSeed / ESeed;
1165 vals[21] = ETopSeed / ESeed;
1166 vals[22] = EBottomSeed / ESeed;
1167 vals[23] = ELeftSeed / ESeed;
1168 vals[24] = ERightSeed / ESeed;
1169 vals[25] = E2x5MaxSeed / ESeed;
1170 vals[26] = E2x5TopSeed / ESeed;
1171 vals[27] = E2x5BottomSeed / ESeed;
1172 vals[28] = E2x5LeftSeed / ESeed;
1173 vals[29] = E2x5RightSeed / ESeed;
1174 vals[30] = IsEcalDriven;
1175 vals[31] = PreShowerOverRaw;
1179 double regressionResult = 0;
1180 Int_t BinIndex = -1;
1196 for (
unsigned int v = 0;
v < 39; ++
v)
1201 for (
unsigned int v = 0;
v < 32; ++
v)
1205 std::cout <<
"BinIndex : " << BinIndex <<
"\n";
1206 std::cout <<
"SCRawEnergy = " << SCRawEnergy <<
" : PreShowerOverRaw = " << PreShowerOverRaw << std::endl;
1207 std::cout <<
"regression energy uncertainty = " << regressionResult << std::endl;
1212 return regressionResult;
1244 double E2x5BottomSeed,
1245 double E2x5LeftSeed,
1246 double E2x5RightSeed,
1256 double PreShowerOverRaw,
1260 printf(
"ElectronEnergyRegressionEvaluate instance not initialized !!!");
1267 float *vals = (
std::abs(scEta) <= 1.479) ?
new float[43] :
new float[36];
1269 vals[0] = SCRawEnergy;
1273 vals[4] = E5x5Seed / SCRawEnergy;
1276 vals[7] = NClusters;
1280 vals[11] = EtaSeed - scEta;
1281 vals[12] = atan2(
sin(PhiSeed - scPhi),
cos(PhiSeed - scPhi));
1282 vals[13] = ESeed / SCRawEnergy;
1283 vals[14] = E3x3Seed / ESeed;
1284 vals[15] = E5x5Seed / ESeed;
1288 vals[19] = EMaxSeed / ESeed;
1289 vals[20] = E2ndSeed / ESeed;
1290 vals[21] = ETopSeed / ESeed;
1291 vals[22] = EBottomSeed / ESeed;
1292 vals[23] = ELeftSeed / ESeed;
1293 vals[24] = ERightSeed / ESeed;
1294 vals[25] = E2x5MaxSeed / ESeed;
1295 vals[26] = E2x5TopSeed / ESeed;
1296 vals[27] = E2x5BottomSeed / ESeed;
1297 vals[28] = E2x5LeftSeed / ESeed;
1298 vals[29] = E2x5RightSeed / ESeed;
1300 vals[31] = GsfTrackPIn;
1304 vals[35] = IEtaSeed;
1305 vals[36] = IPhiSeed;
1306 vals[37] = ((
int)IEtaSeed) % 5;
1307 vals[38] = ((
int)IPhiSeed) % 2;
1308 vals[39] = (
std::abs(IEtaSeed) <= 25) * (((
int)IEtaSeed) % 25) +
1309 (
std::abs(IEtaSeed) > 25) * (((
int)(IEtaSeed - 25 *
std::abs(IEtaSeed) / IEtaSeed)) % 20);
1310 vals[40] = ((
int)IPhiSeed) % 20;
1311 vals[41] = EtaCrySeed;
1312 vals[42] = PhiCrySeed;
1316 vals[0] = SCRawEnergy;
1320 vals[4] = E5x5Seed / SCRawEnergy;
1323 vals[7] = NClusters;
1327 vals[11] = EtaSeed - scEta;
1328 vals[12] = atan2(
sin(PhiSeed - scPhi),
cos(PhiSeed - scPhi));
1329 vals[13] = ESeed / SCRawEnergy;
1330 vals[14] = E3x3Seed / ESeed;
1331 vals[15] = E5x5Seed / ESeed;
1335 vals[19] = EMaxSeed / ESeed;
1336 vals[20] = E2ndSeed / ESeed;
1337 vals[21] = ETopSeed / ESeed;
1338 vals[22] = EBottomSeed / ESeed;
1339 vals[23] = ELeftSeed / ESeed;
1340 vals[24] = ERightSeed / ESeed;
1341 vals[25] = E2x5MaxSeed / ESeed;
1342 vals[26] = E2x5TopSeed / ESeed;
1343 vals[27] = E2x5BottomSeed / ESeed;
1344 vals[28] = E2x5LeftSeed / ESeed;
1345 vals[29] = E2x5RightSeed / ESeed;
1347 vals[31] = GsfTrackPIn;
1351 vals[35] = PreShowerOverRaw;
1355 double regressionResult = 0;
1366 if (scEta <= 1.479) {
1368 for (
unsigned int v = 0;
v < 43; ++
v)
1373 for (
unsigned int v = 0;
v < 36; ++
v)
1377 std::cout <<
"pt = " <<
pt <<
" : SCRawEnergy = " << SCRawEnergy <<
" : PreShowerOverRaw = " << PreShowerOverRaw
1379 std::cout <<
"regression energy = " << regressionResult << std::endl;
1384 return regressionResult;
1416 double E2x5BottomSeed,
1417 double E2x5LeftSeed,
1418 double E2x5RightSeed,
1428 double PreShowerOverRaw,
1432 printf(
"ElectronEnergyRegressionEvaluate instance not initialized !!!");
1439 float *vals = (
std::abs(scEta) <= 1.479) ?
new float[43] :
new float[36];
1441 vals[0] = SCRawEnergy;
1445 vals[4] = E5x5Seed / SCRawEnergy;
1448 vals[7] = NClusters;
1452 vals[11] = EtaSeed - scEta;
1453 vals[12] = atan2(
sin(PhiSeed - scPhi),
cos(PhiSeed - scPhi));
1454 vals[13] = ESeed / SCRawEnergy;
1455 vals[14] = E3x3Seed / ESeed;
1456 vals[15] = E5x5Seed / ESeed;
1460 vals[19] = EMaxSeed / ESeed;
1461 vals[20] = E2ndSeed / ESeed;
1462 vals[21] = ETopSeed / ESeed;
1463 vals[22] = EBottomSeed / ESeed;
1464 vals[23] = ELeftSeed / ESeed;
1465 vals[24] = ERightSeed / ESeed;
1466 vals[25] = E2x5MaxSeed / ESeed;
1467 vals[26] = E2x5TopSeed / ESeed;
1468 vals[27] = E2x5BottomSeed / ESeed;
1469 vals[28] = E2x5LeftSeed / ESeed;
1470 vals[29] = E2x5RightSeed / ESeed;
1472 vals[31] = GsfTrackPIn;
1476 vals[35] = IEtaSeed;
1477 vals[36] = IPhiSeed;
1478 vals[37] = ((
int)IEtaSeed) % 5;
1479 vals[38] = ((
int)IPhiSeed) % 2;
1480 vals[39] = (
std::abs(IEtaSeed) <= 25) * (((
int)IEtaSeed) % 25) +
1481 (
std::abs(IEtaSeed) > 25) * (((
int)(IEtaSeed - 25 *
std::abs(IEtaSeed) / IEtaSeed)) % 20);
1482 vals[40] = ((
int)IPhiSeed) % 20;
1483 vals[41] = EtaCrySeed;
1484 vals[42] = PhiCrySeed;
1488 vals[0] = SCRawEnergy;
1492 vals[4] = E5x5Seed / SCRawEnergy;
1495 vals[7] = NClusters;
1499 vals[11] = EtaSeed - scEta;
1500 vals[12] = atan2(
sin(PhiSeed - scPhi),
cos(PhiSeed - scPhi));
1501 vals[13] = ESeed / SCRawEnergy;
1502 vals[14] = E3x3Seed / ESeed;
1503 vals[15] = E5x5Seed / ESeed;
1507 vals[19] = EMaxSeed / ESeed;
1508 vals[20] = E2ndSeed / ESeed;
1509 vals[21] = ETopSeed / ESeed;
1510 vals[22] = EBottomSeed / ESeed;
1511 vals[23] = ELeftSeed / ESeed;
1512 vals[24] = ERightSeed / ESeed;
1513 vals[25] = E2x5MaxSeed / ESeed;
1514 vals[26] = E2x5TopSeed / ESeed;
1515 vals[27] = E2x5BottomSeed / ESeed;
1516 vals[28] = E2x5LeftSeed / ESeed;
1517 vals[29] = E2x5RightSeed / ESeed;
1519 vals[31] = GsfTrackPIn;
1523 vals[35] = PreShowerOverRaw;
1527 double regressionResult = 0;
1538 if (scEta <= 1.479) {
1540 for (
unsigned int v = 0;
v < 43; ++
v)
1545 for (
unsigned int v = 0;
v < 36; ++
v)
1549 std::cout <<
"pt = " <<
pt <<
" : SCRawEnergy = " << SCRawEnergy <<
" : PreShowerOverRaw = " << PreShowerOverRaw
1551 std::cout <<
"regression energy uncertainty = " << regressionResult << std::endl;
1556 return regressionResult;
1585 double E2x5BottomSeed,
1586 double E2x5LeftSeed,
1587 double E2x5RightSeed,
1592 double PreShowerOverRaw,
1598 double TrackMomentumError,
1599 double EcalEnergyError,
1604 printf(
"ElectronEnergyRegressionEvaluate instance not initialized !!!");
1611 float *vals = (
std::abs(scEta) <= 1.479) ?
new float[46] :
new float[39];
1613 vals[0] = SCRawEnergy;
1617 vals[4] = E5x5Seed / SCRawEnergy;
1620 vals[7] = NClusters;
1624 vals[11] = EtaSeed - scEta;
1625 vals[12] = atan2(
sin(PhiSeed - scPhi),
cos(PhiSeed - scPhi));
1626 vals[13] = ESeed / SCRawEnergy;
1627 vals[14] = E3x3Seed / ESeed;
1628 vals[15] = E5x5Seed / ESeed;
1632 vals[19] = EMaxSeed / ESeed;
1633 vals[20] = E2ndSeed / ESeed;
1634 vals[21] = ETopSeed / ESeed;
1635 vals[22] = EBottomSeed / ESeed;
1636 vals[23] = ELeftSeed / ESeed;
1637 vals[24] = ERightSeed / ESeed;
1638 vals[25] = E2x5MaxSeed / ESeed;
1639 vals[26] = E2x5TopSeed / ESeed;
1640 vals[27] = E2x5BottomSeed / ESeed;
1641 vals[28] = E2x5LeftSeed / ESeed;
1642 vals[29] = E2x5RightSeed / ESeed;
1643 vals[30] = IsEcalDriven;
1644 vals[31] = GsfTrackPIn;
1648 vals[35] = TrackMomentumError / GsfTrackPIn;
1649 vals[36] = EcalEnergyError / SCRawEnergy;
1650 vals[37] = Classification;
1651 vals[38] = IEtaSeed;
1652 vals[39] = IPhiSeed;
1653 vals[40] = ((
int)IEtaSeed) % 5;
1654 vals[41] = ((
int)IPhiSeed) % 2;
1655 vals[42] = (
std::abs(IEtaSeed) <= 25) * (((
int)IEtaSeed) % 25) +
1656 (
std::abs(IEtaSeed) > 25) * (((
int)(IEtaSeed - 25 *
std::abs(IEtaSeed) / IEtaSeed)) % 20);
1657 vals[43] = ((
int)IPhiSeed) % 20;
1658 vals[44] = EtaCrySeed;
1659 vals[45] = PhiCrySeed;
1663 vals[0] = SCRawEnergy;
1667 vals[4] = E5x5Seed / SCRawEnergy;
1670 vals[7] = NClusters;
1674 vals[11] = EtaSeed - scEta;
1675 vals[12] = atan2(
sin(PhiSeed - scPhi),
cos(PhiSeed - scPhi));
1676 vals[13] = ESeed / SCRawEnergy;
1677 vals[14] = E3x3Seed / ESeed;
1678 vals[15] = E5x5Seed / ESeed;
1682 vals[19] = EMaxSeed / ESeed;
1683 vals[20] = E2ndSeed / ESeed;
1684 vals[21] = ETopSeed / ESeed;
1685 vals[22] = EBottomSeed / ESeed;
1686 vals[23] = ELeftSeed / ESeed;
1687 vals[24] = ERightSeed / ESeed;
1688 vals[25] = E2x5MaxSeed / ESeed;
1689 vals[26] = E2x5TopSeed / ESeed;
1690 vals[27] = E2x5BottomSeed / ESeed;
1691 vals[28] = E2x5LeftSeed / ESeed;
1692 vals[29] = E2x5RightSeed / ESeed;
1693 vals[30] = IsEcalDriven;
1694 vals[31] = GsfTrackPIn;
1698 vals[35] = TrackMomentumError / GsfTrackPIn;
1699 vals[36] = EcalEnergyError / SCRawEnergy;
1700 vals[37] = Classification;
1701 vals[38] = PreShowerOverRaw;
1705 double regressionResult = 0;
1718 for (
unsigned int v = 0;
v < 46; ++
v)
1723 for (
unsigned int v = 0;
v < 39; ++
v)
1727 std::cout <<
"SCRawEnergy = " << SCRawEnergy <<
" : PreShowerOverRaw = " << PreShowerOverRaw << std::endl;
1728 std::cout <<
"regression energy = " << regressionResult << std::endl;
1733 return regressionResult;
1762 double E2x5BottomSeed,
1763 double E2x5LeftSeed,
1764 double E2x5RightSeed,
1769 double PreShowerOverRaw,
1775 double TrackMomentumError,
1776 double EcalEnergyError,
1781 printf(
"ElectronEnergyRegressionEvaluate instance not initialized !!!");
1788 float *vals = (
std::abs(scEta) <= 1.479) ?
new float[46] :
new float[39];
1790 vals[0] = SCRawEnergy;
1794 vals[4] = E5x5Seed / SCRawEnergy;
1797 vals[7] = NClusters;
1801 vals[11] = EtaSeed - scEta;
1802 vals[12] = atan2(
sin(PhiSeed - scPhi),
cos(PhiSeed - scPhi));
1803 vals[13] = ESeed / SCRawEnergy;
1804 vals[14] = E3x3Seed / ESeed;
1805 vals[15] = E5x5Seed / ESeed;
1809 vals[19] = EMaxSeed / ESeed;
1810 vals[20] = E2ndSeed / ESeed;
1811 vals[21] = ETopSeed / ESeed;
1812 vals[22] = EBottomSeed / ESeed;
1813 vals[23] = ELeftSeed / ESeed;
1814 vals[24] = ERightSeed / ESeed;
1815 vals[25] = E2x5MaxSeed / ESeed;
1816 vals[26] = E2x5TopSeed / ESeed;
1817 vals[27] = E2x5BottomSeed / ESeed;
1818 vals[28] = E2x5LeftSeed / ESeed;
1819 vals[29] = E2x5RightSeed / ESeed;
1820 vals[30] = IsEcalDriven;
1821 vals[31] = GsfTrackPIn;
1825 vals[35] = TrackMomentumError / GsfTrackPIn;
1826 vals[36] = EcalEnergyError / SCRawEnergy;
1827 vals[37] = Classification;
1828 vals[38] = IEtaSeed;
1829 vals[39] = IPhiSeed;
1830 vals[40] = ((
int)IEtaSeed) % 5;
1831 vals[41] = ((
int)IPhiSeed) % 2;
1832 vals[42] = (
std::abs(IEtaSeed) <= 25) * (((
int)IEtaSeed) % 25) +
1833 (
std::abs(IEtaSeed) > 25) * (((
int)(IEtaSeed - 25 *
std::abs(IEtaSeed) / IEtaSeed)) % 20);
1834 vals[43] = ((
int)IPhiSeed) % 20;
1835 vals[44] = EtaCrySeed;
1836 vals[45] = PhiCrySeed;
1840 vals[0] = SCRawEnergy;
1844 vals[4] = E5x5Seed / SCRawEnergy;
1847 vals[7] = NClusters;
1851 vals[11] = EtaSeed - scEta;
1852 vals[12] = atan2(
sin(PhiSeed - scPhi),
cos(PhiSeed - scPhi));
1853 vals[13] = ESeed / SCRawEnergy;
1854 vals[14] = E3x3Seed / ESeed;
1855 vals[15] = E5x5Seed / ESeed;
1859 vals[19] = EMaxSeed / ESeed;
1860 vals[20] = E2ndSeed / ESeed;
1861 vals[21] = ETopSeed / ESeed;
1862 vals[22] = EBottomSeed / ESeed;
1863 vals[23] = ELeftSeed / ESeed;
1864 vals[24] = ERightSeed / ESeed;
1865 vals[25] = E2x5MaxSeed / ESeed;
1866 vals[26] = E2x5TopSeed / ESeed;
1867 vals[27] = E2x5BottomSeed / ESeed;
1868 vals[28] = E2x5LeftSeed / ESeed;
1869 vals[29] = E2x5RightSeed / ESeed;
1870 vals[30] = IsEcalDriven;
1871 vals[31] = GsfTrackPIn;
1875 vals[35] = TrackMomentumError / GsfTrackPIn;
1876 vals[36] = EcalEnergyError / SCRawEnergy;
1877 vals[37] = Classification;
1878 vals[38] = PreShowerOverRaw;
1882 double regressionResult = 0;
1895 for (
unsigned int v = 0;
v < 46; ++
v)
1900 for (
unsigned int v = 0;
v < 39; ++
v)
1904 std::cout <<
" SCRawEnergy = " << SCRawEnergy <<
" : PreShowerOverRaw = " << PreShowerOverRaw << std::endl;
1905 std::cout <<
"regression energy uncertainty = " << regressionResult << std::endl;
1910 return regressionResult;
1916 printf(
"ElectronEnergyRegressionEvaluate instance not initialized !!!");
1924 assert(inputvars.size() == 42);
1926 double SCRawEnergy = inputvars[0];
1927 double scEta = inputvars[1];
1928 double scPhi = inputvars[2];
1929 double R9 = inputvars[3];
1930 double etawidth = inputvars[4];
1931 double phiwidth = inputvars[5];
1932 double NClusters = inputvars[6];
1933 double HoE = inputvars[7];
1934 double rho = inputvars[8];
1936 double EtaSeed = inputvars[10];
1937 double PhiSeed = inputvars[11];
1938 double ESeed = inputvars[12];
1939 double E3x3Seed = inputvars[13];
1940 double E5x5Seed = inputvars[14];
1941 double see = inputvars[15];
1942 double spp = inputvars[16];
1943 double sep = inputvars[17];
1944 double EMaxSeed = inputvars[18];
1945 double E2ndSeed = inputvars[19];
1946 double ETopSeed = inputvars[20];
1947 double EBottomSeed = inputvars[21];
1948 double ELeftSeed = inputvars[22];
1949 double ERightSeed = inputvars[23];
1950 double E2x5MaxSeed = inputvars[24];
1951 double E2x5TopSeed = inputvars[25];
1952 double E2x5BottomSeed = inputvars[26];
1953 double E2x5LeftSeed = inputvars[27];
1954 double E2x5RightSeed = inputvars[28];
1955 double IEtaSeed = inputvars[29];
1956 double IPhiSeed = inputvars[30];
1957 double EtaCrySeed = inputvars[31];
1958 double PhiCrySeed = inputvars[32];
1959 double PreShowerOverRaw = inputvars[33];
1960 int IsEcalDriven = inputvars[34];
1961 double GsfTrackPIn = inputvars[35];
1962 double fbrem = inputvars[36];
1963 double Charge = inputvars[37];
1964 double EoP = inputvars[38];
1965 double TrackMomentumError = inputvars[39];
1966 double EcalEnergyError = inputvars[40];
1967 int Classification = inputvars[41];
1969 float *vals = (
std::abs(scEta) <= 1.479) ?
new float[46] :
new float[39];
1971 vals[0] = SCRawEnergy;
1975 vals[4] = E5x5Seed / SCRawEnergy;
1978 vals[7] = NClusters;
1982 vals[11] = EtaSeed - scEta;
1983 vals[12] = atan2(
sin(PhiSeed - scPhi),
cos(PhiSeed - scPhi));
1984 vals[13] = ESeed / SCRawEnergy;
1985 vals[14] = E3x3Seed / ESeed;
1986 vals[15] = E5x5Seed / ESeed;
1990 vals[19] = EMaxSeed / ESeed;
1991 vals[20] = E2ndSeed / ESeed;
1992 vals[21] = ETopSeed / ESeed;
1993 vals[22] = EBottomSeed / ESeed;
1994 vals[23] = ELeftSeed / ESeed;
1995 vals[24] = ERightSeed / ESeed;
1996 vals[25] = E2x5MaxSeed / ESeed;
1997 vals[26] = E2x5TopSeed / ESeed;
1998 vals[27] = E2x5BottomSeed / ESeed;
1999 vals[28] = E2x5LeftSeed / ESeed;
2000 vals[29] = E2x5RightSeed / ESeed;
2001 vals[30] = IsEcalDriven;
2002 vals[31] = GsfTrackPIn;
2006 vals[35] = TrackMomentumError / GsfTrackPIn;
2007 vals[36] = EcalEnergyError / SCRawEnergy;
2008 vals[37] = Classification;
2009 vals[38] = IEtaSeed;
2010 vals[39] = IPhiSeed;
2011 vals[40] = ((
int)IEtaSeed) % 5;
2012 vals[41] = ((
int)IPhiSeed) % 2;
2013 vals[42] = (
std::abs(IEtaSeed) <= 25) * (((
int)IEtaSeed) % 25) +
2014 (
std::abs(IEtaSeed) > 25) * (((
int)(IEtaSeed - 25 *
std::abs(IEtaSeed) / IEtaSeed)) % 20);
2015 vals[43] = ((
int)IPhiSeed) % 20;
2016 vals[44] = EtaCrySeed;
2017 vals[45] = PhiCrySeed;
2021 vals[0] = SCRawEnergy;
2025 vals[4] = E5x5Seed / SCRawEnergy;
2028 vals[7] = NClusters;
2032 vals[11] = EtaSeed - scEta;
2033 vals[12] = atan2(
sin(PhiSeed - scPhi),
cos(PhiSeed - scPhi));
2034 vals[13] = ESeed / SCRawEnergy;
2035 vals[14] = E3x3Seed / ESeed;
2036 vals[15] = E5x5Seed / ESeed;
2040 vals[19] = EMaxSeed / ESeed;
2041 vals[20] = E2ndSeed / ESeed;
2042 vals[21] = ETopSeed / ESeed;
2043 vals[22] = EBottomSeed / ESeed;
2044 vals[23] = ELeftSeed / ESeed;
2045 vals[24] = ERightSeed / ESeed;
2046 vals[25] = E2x5MaxSeed / ESeed;
2047 vals[26] = E2x5TopSeed / ESeed;
2048 vals[27] = E2x5BottomSeed / ESeed;
2049 vals[28] = E2x5LeftSeed / ESeed;
2050 vals[29] = E2x5RightSeed / ESeed;
2051 vals[30] = IsEcalDriven;
2052 vals[31] = GsfTrackPIn;
2056 vals[35] = TrackMomentumError / GsfTrackPIn;
2057 vals[36] = EcalEnergyError / SCRawEnergy;
2058 vals[37] = Classification;
2059 vals[38] = PreShowerOverRaw;
2063 double regressionResult = 0;
2076 for (
unsigned int v = 0;
v < 46; ++
v)
2081 for (
unsigned int v = 0;
v < 39; ++
v)
2085 std::cout <<
"SCRawEnergy = " << SCRawEnergy <<
" : PreShowerOverRaw = " << PreShowerOverRaw << std::endl;
2086 std::cout <<
"regression energy = " << regressionResult << std::endl;
2091 return regressionResult;
2098 printf(
"ElectronEnergyRegressionEvaluate instance not initialized !!!");
2106 assert(inputvars.size() == 42);
2108 double SCRawEnergy = inputvars[0];
2109 double scEta = inputvars[1];
2110 double scPhi = inputvars[2];
2111 double R9 = inputvars[3];
2112 double etawidth = inputvars[4];
2113 double phiwidth = inputvars[5];
2114 double NClusters = inputvars[6];
2115 double HoE = inputvars[7];
2116 double rho = inputvars[8];
2118 double EtaSeed = inputvars[10];
2119 double PhiSeed = inputvars[11];
2120 double ESeed = inputvars[12];
2121 double E3x3Seed = inputvars[13];
2122 double E5x5Seed = inputvars[14];
2123 double see = inputvars[15];
2124 double spp = inputvars[16];
2125 double sep = inputvars[17];
2126 double EMaxSeed = inputvars[18];
2127 double E2ndSeed = inputvars[19];
2128 double ETopSeed = inputvars[20];
2129 double EBottomSeed = inputvars[21];
2130 double ELeftSeed = inputvars[22];
2131 double ERightSeed = inputvars[23];
2132 double E2x5MaxSeed = inputvars[24];
2133 double E2x5TopSeed = inputvars[25];
2134 double E2x5BottomSeed = inputvars[26];
2135 double E2x5LeftSeed = inputvars[27];
2136 double E2x5RightSeed = inputvars[28];
2137 double IEtaSeed = inputvars[29];
2138 double IPhiSeed = inputvars[30];
2139 double EtaCrySeed = inputvars[31];
2140 double PhiCrySeed = inputvars[32];
2141 double PreShowerOverRaw = inputvars[33];
2142 int IsEcalDriven = inputvars[34];
2143 double GsfTrackPIn = inputvars[35];
2144 double fbrem = inputvars[36];
2145 double Charge = inputvars[37];
2146 double EoP = inputvars[38];
2147 double TrackMomentumError = inputvars[39];
2148 double EcalEnergyError = inputvars[40];
2149 int Classification = inputvars[41];
2151 float *vals = (
std::abs(scEta) <= 1.479) ?
new float[46] :
new float[39];
2153 vals[0] = SCRawEnergy;
2157 vals[4] = E5x5Seed / SCRawEnergy;
2160 vals[7] = NClusters;
2164 vals[11] = EtaSeed - scEta;
2165 vals[12] = atan2(
sin(PhiSeed - scPhi),
cos(PhiSeed - scPhi));
2166 vals[13] = ESeed / SCRawEnergy;
2167 vals[14] = E3x3Seed / ESeed;
2168 vals[15] = E5x5Seed / ESeed;
2172 vals[19] = EMaxSeed / ESeed;
2173 vals[20] = E2ndSeed / ESeed;
2174 vals[21] = ETopSeed / ESeed;
2175 vals[22] = EBottomSeed / ESeed;
2176 vals[23] = ELeftSeed / ESeed;
2177 vals[24] = ERightSeed / ESeed;
2178 vals[25] = E2x5MaxSeed / ESeed;
2179 vals[26] = E2x5TopSeed / ESeed;
2180 vals[27] = E2x5BottomSeed / ESeed;
2181 vals[28] = E2x5LeftSeed / ESeed;
2182 vals[29] = E2x5RightSeed / ESeed;
2183 vals[30] = IsEcalDriven;
2184 vals[31] = GsfTrackPIn;
2188 vals[35] = TrackMomentumError / GsfTrackPIn;
2189 vals[36] = EcalEnergyError / SCRawEnergy;
2190 vals[37] = Classification;
2191 vals[38] = IEtaSeed;
2192 vals[39] = IPhiSeed;
2193 vals[40] = ((
int)IEtaSeed) % 5;
2194 vals[41] = ((
int)IPhiSeed) % 2;
2195 vals[42] = (
std::abs(IEtaSeed) <= 25) * (((
int)IEtaSeed) % 25) +
2196 (
std::abs(IEtaSeed) > 25) * (((
int)(IEtaSeed - 25 *
std::abs(IEtaSeed) / IEtaSeed)) % 20);
2197 vals[43] = ((
int)IPhiSeed) % 20;
2198 vals[44] = EtaCrySeed;
2199 vals[45] = PhiCrySeed;
2203 vals[0] = SCRawEnergy;
2207 vals[4] = E5x5Seed / SCRawEnergy;
2210 vals[7] = NClusters;
2214 vals[11] = EtaSeed - scEta;
2215 vals[12] = atan2(
sin(PhiSeed - scPhi),
cos(PhiSeed - scPhi));
2216 vals[13] = ESeed / SCRawEnergy;
2217 vals[14] = E3x3Seed / ESeed;
2218 vals[15] = E5x5Seed / ESeed;
2222 vals[19] = EMaxSeed / ESeed;
2223 vals[20] = E2ndSeed / ESeed;
2224 vals[21] = ETopSeed / ESeed;
2225 vals[22] = EBottomSeed / ESeed;
2226 vals[23] = ELeftSeed / ESeed;
2227 vals[24] = ERightSeed / ESeed;
2228 vals[25] = E2x5MaxSeed / ESeed;
2229 vals[26] = E2x5TopSeed / ESeed;
2230 vals[27] = E2x5BottomSeed / ESeed;
2231 vals[28] = E2x5LeftSeed / ESeed;
2232 vals[29] = E2x5RightSeed / ESeed;
2233 vals[30] = IsEcalDriven;
2234 vals[31] = GsfTrackPIn;
2238 vals[35] = TrackMomentumError / GsfTrackPIn;
2239 vals[36] = EcalEnergyError / SCRawEnergy;
2240 vals[37] = Classification;
2241 vals[38] = PreShowerOverRaw;
2245 double regressionResult = 0;
2258 for (
unsigned int v = 0;
v < 46; ++
v)
2263 for (
unsigned int v = 0;
v < 39; ++
v)
2267 std::cout <<
" SCRawEnergy = " << SCRawEnergy <<
" : PreShowerOverRaw = " << PreShowerOverRaw << std::endl;
2268 std::cout <<
"regression energy uncertainty = " << regressionResult << std::endl;
2273 return regressionResult;
2302 double E2x5BottomSeed,
2303 double E2x5LeftSeed,
2304 double E2x5RightSeed,
2309 double PreShowerOverRaw,
2315 double TrackMomentumError,
2316 double EcalEnergyError,
2322 double GsfTrackChiSqr,
2323 double KFTrackNLayers,
2324 double ElectronEnergyOverPout,
2328 printf(
"ElectronEnergyRegressionEvaluate instance not initialized !!!");
2335 float *vals = (
std::abs(scEta) <= 1.479) ?
new float[53] :
new float[46];
2337 vals[0] = SCRawEnergy;
2341 vals[4] = E5x5Seed / SCRawEnergy;
2344 vals[7] = NClusters;
2348 vals[11] = EtaSeed - scEta;
2349 vals[12] = atan2(
sin(PhiSeed - scPhi),
cos(PhiSeed - scPhi));
2350 vals[13] = ESeed / SCRawEnergy;
2351 vals[14] = E3x3Seed / ESeed;
2352 vals[15] = E5x5Seed / ESeed;
2356 vals[19] = EMaxSeed / ESeed;
2357 vals[20] = E2ndSeed / ESeed;
2358 vals[21] = ETopSeed / ESeed;
2359 vals[22] = EBottomSeed / ESeed;
2360 vals[23] = ELeftSeed / ESeed;
2361 vals[24] = ERightSeed / ESeed;
2362 vals[25] = E2x5MaxSeed / ESeed;
2363 vals[26] = E2x5TopSeed / ESeed;
2364 vals[27] = E2x5BottomSeed / ESeed;
2365 vals[28] = E2x5LeftSeed / ESeed;
2366 vals[29] = E2x5RightSeed / ESeed;
2367 vals[30] = IsEcalDriven;
2368 vals[31] = GsfTrackPIn;
2372 vals[35] = TrackMomentumError / GsfTrackPIn;
2373 vals[36] = EcalEnergyError / SCRawEnergy;
2374 vals[37] = Classification;
2377 vals[40] = detaCalo;
2378 vals[41] = dphiCalo;
2379 vals[42] = GsfTrackChiSqr;
2380 vals[43] = KFTrackNLayers;
2381 vals[44] = ElectronEnergyOverPout;
2382 vals[45] = IEtaSeed;
2383 vals[46] = IPhiSeed;
2384 vals[47] = ((
int)IEtaSeed) % 5;
2385 vals[48] = ((
int)IPhiSeed) % 2;
2386 vals[49] = (
std::abs(IEtaSeed) <= 25) * (((
int)IEtaSeed) % 25) +
2387 (
std::abs(IEtaSeed) > 25) * (((
int)(IEtaSeed - 25 *
std::abs(IEtaSeed) / IEtaSeed)) % 20);
2388 vals[50] = ((
int)IPhiSeed) % 20;
2389 vals[51] = EtaCrySeed;
2390 vals[52] = PhiCrySeed;
2394 vals[0] = SCRawEnergy;
2398 vals[4] = E5x5Seed / SCRawEnergy;
2401 vals[7] = NClusters;
2405 vals[11] = EtaSeed - scEta;
2406 vals[12] = atan2(
sin(PhiSeed - scPhi),
cos(PhiSeed - scPhi));
2407 vals[13] = ESeed / SCRawEnergy;
2408 vals[14] = E3x3Seed / ESeed;
2409 vals[15] = E5x5Seed / ESeed;
2413 vals[19] = EMaxSeed / ESeed;
2414 vals[20] = E2ndSeed / ESeed;
2415 vals[21] = ETopSeed / ESeed;
2416 vals[22] = EBottomSeed / ESeed;
2417 vals[23] = ELeftSeed / ESeed;
2418 vals[24] = ERightSeed / ESeed;
2419 vals[25] = E2x5MaxSeed / ESeed;
2420 vals[26] = E2x5TopSeed / ESeed;
2421 vals[27] = E2x5BottomSeed / ESeed;
2422 vals[28] = E2x5LeftSeed / ESeed;
2423 vals[29] = E2x5RightSeed / ESeed;
2424 vals[30] = IsEcalDriven;
2425 vals[31] = GsfTrackPIn;
2429 vals[35] = TrackMomentumError / GsfTrackPIn;
2430 vals[36] = EcalEnergyError / SCRawEnergy;
2431 vals[37] = Classification;
2434 vals[40] = detaCalo;
2435 vals[41] = dphiCalo;
2436 vals[42] = GsfTrackChiSqr;
2437 vals[43] = KFTrackNLayers;
2438 vals[44] = ElectronEnergyOverPout;
2439 vals[45] = PreShowerOverRaw;
2443 double regressionResult = 0;
2456 for (
unsigned int v = 0;
v < 53; ++
v)
2461 for (
unsigned int v = 0;
v < 46; ++
v)
2465 std::cout <<
"SCRawEnergy = " << SCRawEnergy <<
" : PreShowerOverRaw = " << PreShowerOverRaw << std::endl;
2466 std::cout <<
"regression energy = " << regressionResult << std::endl;
2471 return regressionResult;
2500 double E2x5BottomSeed,
2501 double E2x5LeftSeed,
2502 double E2x5RightSeed,
2507 double PreShowerOverRaw,
2513 double TrackMomentumError,
2514 double EcalEnergyError,
2520 double GsfTrackChiSqr,
2521 double KFTrackNLayers,
2522 double ElectronEnergyOverPout,
2526 printf(
"ElectronEnergyRegressionEvaluate instance not initialized !!!");
2533 float *vals = (
std::abs(scEta) <= 1.479) ?
new float[53] :
new float[46];
2535 vals[0] = SCRawEnergy;
2539 vals[4] = E5x5Seed / SCRawEnergy;
2542 vals[7] = NClusters;
2546 vals[11] = EtaSeed - scEta;
2547 vals[12] = atan2(
sin(PhiSeed - scPhi),
cos(PhiSeed - scPhi));
2548 vals[13] = ESeed / SCRawEnergy;
2549 vals[14] = E3x3Seed / ESeed;
2550 vals[15] = E5x5Seed / ESeed;
2554 vals[19] = EMaxSeed / ESeed;
2555 vals[20] = E2ndSeed / ESeed;
2556 vals[21] = ETopSeed / ESeed;
2557 vals[22] = EBottomSeed / ESeed;
2558 vals[23] = ELeftSeed / ESeed;
2559 vals[24] = ERightSeed / ESeed;
2560 vals[25] = E2x5MaxSeed / ESeed;
2561 vals[26] = E2x5TopSeed / ESeed;
2562 vals[27] = E2x5BottomSeed / ESeed;
2563 vals[28] = E2x5LeftSeed / ESeed;
2564 vals[29] = E2x5RightSeed / ESeed;
2565 vals[30] = IsEcalDriven;
2566 vals[31] = GsfTrackPIn;
2570 vals[35] = TrackMomentumError / GsfTrackPIn;
2571 vals[36] = EcalEnergyError / SCRawEnergy;
2572 vals[37] = Classification;
2575 vals[40] = detaCalo;
2576 vals[41] = dphiCalo;
2577 vals[42] = GsfTrackChiSqr;
2578 vals[43] = KFTrackNLayers;
2579 vals[44] = ElectronEnergyOverPout;
2580 vals[45] = IEtaSeed;
2581 vals[46] = IPhiSeed;
2582 vals[47] = ((
int)IEtaSeed) % 5;
2583 vals[48] = ((
int)IPhiSeed) % 2;
2584 vals[49] = (
std::abs(IEtaSeed) <= 25) * (((
int)IEtaSeed) % 25) +
2585 (
std::abs(IEtaSeed) > 25) * (((
int)(IEtaSeed - 25 *
std::abs(IEtaSeed) / IEtaSeed)) % 20);
2586 vals[50] = ((
int)IPhiSeed) % 20;
2587 vals[51] = EtaCrySeed;
2588 vals[52] = PhiCrySeed;
2592 vals[0] = SCRawEnergy;
2596 vals[4] = E5x5Seed / SCRawEnergy;
2599 vals[7] = NClusters;
2603 vals[11] = EtaSeed - scEta;
2604 vals[12] = atan2(
sin(PhiSeed - scPhi),
cos(PhiSeed - scPhi));
2605 vals[13] = ESeed / SCRawEnergy;
2606 vals[14] = E3x3Seed / ESeed;
2607 vals[15] = E5x5Seed / ESeed;
2611 vals[19] = EMaxSeed / ESeed;
2612 vals[20] = E2ndSeed / ESeed;
2613 vals[21] = ETopSeed / ESeed;
2614 vals[22] = EBottomSeed / ESeed;
2615 vals[23] = ELeftSeed / ESeed;
2616 vals[24] = ERightSeed / ESeed;
2617 vals[25] = E2x5MaxSeed / ESeed;
2618 vals[26] = E2x5TopSeed / ESeed;
2619 vals[27] = E2x5BottomSeed / ESeed;
2620 vals[28] = E2x5LeftSeed / ESeed;
2621 vals[29] = E2x5RightSeed / ESeed;
2622 vals[30] = IsEcalDriven;
2623 vals[31] = GsfTrackPIn;
2627 vals[35] = TrackMomentumError / GsfTrackPIn;
2628 vals[36] = EcalEnergyError / SCRawEnergy;
2629 vals[37] = Classification;
2632 vals[40] = detaCalo;
2633 vals[41] = dphiCalo;
2634 vals[42] = GsfTrackChiSqr;
2635 vals[43] = KFTrackNLayers;
2636 vals[44] = ElectronEnergyOverPout;
2637 vals[45] = PreShowerOverRaw;
2641 double regressionResult = 0;
2654 for (
unsigned int v = 0;
v < 53; ++
v)
2659 for (
unsigned int v = 0;
v < 46; ++
v)
2663 std::cout <<
"SCRawEnergy = " << SCRawEnergy <<
" : PreShowerOverRaw = " << PreShowerOverRaw << std::endl;
2664 std::cout <<
"regression energy uncertainty = " << regressionResult << std::endl;
2669 return regressionResult;
2675 printf(
"ElectronEnergyRegressionEvaluate instance not initialized !!!");
2683 assert(inputvars.size() == 49);
2685 double SCRawEnergy = inputvars[0];
2686 double scEta = inputvars[1];
2687 double scPhi = inputvars[2];
2688 double R9 = inputvars[3];
2689 double etawidth = inputvars[4];
2690 double phiwidth = inputvars[5];
2691 double NClusters = inputvars[6];
2692 double HoE = inputvars[7];
2693 double rho = inputvars[8];
2695 double EtaSeed = inputvars[10];
2696 double PhiSeed = inputvars[11];
2697 double ESeed = inputvars[12];
2698 double E3x3Seed = inputvars[13];
2699 double E5x5Seed = inputvars[14];
2700 double see = inputvars[15];
2701 double spp = inputvars[16];
2702 double sep = inputvars[17];
2703 double EMaxSeed = inputvars[18];
2704 double E2ndSeed = inputvars[19];
2705 double ETopSeed = inputvars[20];
2706 double EBottomSeed = inputvars[21];
2707 double ELeftSeed = inputvars[22];
2708 double ERightSeed = inputvars[23];
2709 double E2x5MaxSeed = inputvars[24];
2710 double E2x5TopSeed = inputvars[25];
2711 double E2x5BottomSeed = inputvars[26];
2712 double E2x5LeftSeed = inputvars[27];
2713 double E2x5RightSeed = inputvars[28];
2714 double IEtaSeed = inputvars[29];
2715 double IPhiSeed = inputvars[30];
2716 double EtaCrySeed = inputvars[31];
2717 double PhiCrySeed = inputvars[32];
2718 double PreShowerOverRaw = inputvars[33];
2719 int IsEcalDriven = inputvars[34];
2720 double GsfTrackPIn = inputvars[35];
2721 double fbrem = inputvars[36];
2722 double Charge = inputvars[37];
2723 double EoP = inputvars[38];
2724 double TrackMomentumError = inputvars[39];
2725 double EcalEnergyError = inputvars[40];
2726 int Classification = inputvars[41];
2727 double detaIn = inputvars[42];
2728 double dphiIn = inputvars[43];
2729 double detaCalo = inputvars[44];
2730 double dphiCalo = inputvars[45];
2731 double GsfTrackChiSqr = inputvars[46];
2732 double KFTrackNLayers = inputvars[47];
2733 double ElectronEnergyOverPout = inputvars[48];
2735 float *vals = (
std::abs(scEta) <= 1.479) ?
new float[53] :
new float[46];
2737 vals[0] = SCRawEnergy;
2741 vals[4] = E5x5Seed / SCRawEnergy;
2744 vals[7] = NClusters;
2748 vals[11] = EtaSeed - scEta;
2749 vals[12] = atan2(
sin(PhiSeed - scPhi),
cos(PhiSeed - scPhi));
2750 vals[13] = ESeed / SCRawEnergy;
2751 vals[14] = E3x3Seed / ESeed;
2752 vals[15] = E5x5Seed / ESeed;
2756 vals[19] = EMaxSeed / ESeed;
2757 vals[20] = E2ndSeed / ESeed;
2758 vals[21] = ETopSeed / ESeed;
2759 vals[22] = EBottomSeed / ESeed;
2760 vals[23] = ELeftSeed / ESeed;
2761 vals[24] = ERightSeed / ESeed;
2762 vals[25] = E2x5MaxSeed / ESeed;
2763 vals[26] = E2x5TopSeed / ESeed;
2764 vals[27] = E2x5BottomSeed / ESeed;
2765 vals[28] = E2x5LeftSeed / ESeed;
2766 vals[29] = E2x5RightSeed / ESeed;
2767 vals[30] = IsEcalDriven;
2768 vals[31] = GsfTrackPIn;
2772 vals[35] = TrackMomentumError / GsfTrackPIn;
2773 vals[36] = EcalEnergyError / SCRawEnergy;
2774 vals[37] = Classification;
2777 vals[40] = detaCalo;
2778 vals[41] = dphiCalo;
2779 vals[42] = GsfTrackChiSqr;
2780 vals[43] = KFTrackNLayers;
2781 vals[44] = ElectronEnergyOverPout;
2782 vals[45] = IEtaSeed;
2783 vals[46] = IPhiSeed;
2784 vals[47] = ((
int)IEtaSeed) % 5;
2785 vals[48] = ((
int)IPhiSeed) % 2;
2786 vals[49] = (
std::abs(IEtaSeed) <= 25) * (((
int)IEtaSeed) % 25) +
2787 (
std::abs(IEtaSeed) > 25) * (((
int)(IEtaSeed - 25 *
std::abs(IEtaSeed) / IEtaSeed)) % 20);
2788 vals[50] = ((
int)IPhiSeed) % 20;
2789 vals[51] = EtaCrySeed;
2790 vals[52] = PhiCrySeed;
2794 vals[0] = SCRawEnergy;
2798 vals[4] = E5x5Seed / SCRawEnergy;
2801 vals[7] = NClusters;
2805 vals[11] = EtaSeed - scEta;
2806 vals[12] = atan2(
sin(PhiSeed - scPhi),
cos(PhiSeed - scPhi));
2807 vals[13] = ESeed / SCRawEnergy;
2808 vals[14] = E3x3Seed / ESeed;
2809 vals[15] = E5x5Seed / ESeed;
2813 vals[19] = EMaxSeed / ESeed;
2814 vals[20] = E2ndSeed / ESeed;
2815 vals[21] = ETopSeed / ESeed;
2816 vals[22] = EBottomSeed / ESeed;
2817 vals[23] = ELeftSeed / ESeed;
2818 vals[24] = ERightSeed / ESeed;
2819 vals[25] = E2x5MaxSeed / ESeed;
2820 vals[26] = E2x5TopSeed / ESeed;
2821 vals[27] = E2x5BottomSeed / ESeed;
2822 vals[28] = E2x5LeftSeed / ESeed;
2823 vals[29] = E2x5RightSeed / ESeed;
2824 vals[30] = IsEcalDriven;
2825 vals[31] = GsfTrackPIn;
2829 vals[35] = TrackMomentumError / GsfTrackPIn;
2830 vals[36] = EcalEnergyError / SCRawEnergy;
2831 vals[37] = Classification;
2834 vals[40] = detaCalo;
2835 vals[41] = dphiCalo;
2836 vals[42] = GsfTrackChiSqr;
2837 vals[43] = KFTrackNLayers;
2838 vals[44] = ElectronEnergyOverPout;
2839 vals[45] = PreShowerOverRaw;
2843 double regressionResult = 0;
2856 for (
unsigned int v = 0;
v < 53; ++
v)
2861 for (
unsigned int v = 0;
v < 46; ++
v)
2865 std::cout <<
"SCRawEnergy = " << SCRawEnergy <<
" : PreShowerOverRaw = " << PreShowerOverRaw << std::endl;
2866 std::cout <<
"regression energy = " << regressionResult << std::endl;
2871 return regressionResult;
2878 printf(
"ElectronEnergyRegressionEvaluate instance not initialized !!!");
2886 assert(inputvars.size() == 49);
2888 double SCRawEnergy = inputvars[0];
2889 double scEta = inputvars[1];
2890 double scPhi = inputvars[2];
2891 double R9 = inputvars[3];
2892 double etawidth = inputvars[4];
2893 double phiwidth = inputvars[5];
2894 double NClusters = inputvars[6];
2895 double HoE = inputvars[7];
2896 double rho = inputvars[8];
2898 double EtaSeed = inputvars[10];
2899 double PhiSeed = inputvars[11];
2900 double ESeed = inputvars[12];
2901 double E3x3Seed = inputvars[13];
2902 double E5x5Seed = inputvars[14];
2903 double see = inputvars[15];
2904 double spp = inputvars[16];
2905 double sep = inputvars[17];
2906 double EMaxSeed = inputvars[18];
2907 double E2ndSeed = inputvars[19];
2908 double ETopSeed = inputvars[20];
2909 double EBottomSeed = inputvars[21];
2910 double ELeftSeed = inputvars[22];
2911 double ERightSeed = inputvars[23];
2912 double E2x5MaxSeed = inputvars[24];
2913 double E2x5TopSeed = inputvars[25];
2914 double E2x5BottomSeed = inputvars[26];
2915 double E2x5LeftSeed = inputvars[27];
2916 double E2x5RightSeed = inputvars[28];
2917 double IEtaSeed = inputvars[29];
2918 double IPhiSeed = inputvars[30];
2919 double EtaCrySeed = inputvars[31];
2920 double PhiCrySeed = inputvars[32];
2921 double PreShowerOverRaw = inputvars[33];
2922 int IsEcalDriven = inputvars[34];
2923 double GsfTrackPIn = inputvars[35];
2924 double fbrem = inputvars[36];
2925 double Charge = inputvars[37];
2926 double EoP = inputvars[38];
2927 double TrackMomentumError = inputvars[39];
2928 double EcalEnergyError = inputvars[40];
2929 int Classification = inputvars[41];
2930 double detaIn = inputvars[42];
2931 double dphiIn = inputvars[43];
2932 double detaCalo = inputvars[44];
2933 double dphiCalo = inputvars[45];
2934 double GsfTrackChiSqr = inputvars[46];
2935 double KFTrackNLayers = inputvars[47];
2936 double ElectronEnergyOverPout = inputvars[48];
2938 float *vals = (
std::abs(scEta) <= 1.479) ?
new float[53] :
new float[46];
2940 vals[0] = SCRawEnergy;
2944 vals[4] = E5x5Seed / SCRawEnergy;
2947 vals[7] = NClusters;
2951 vals[11] = EtaSeed - scEta;
2952 vals[12] = atan2(
sin(PhiSeed - scPhi),
cos(PhiSeed - scPhi));
2953 vals[13] = ESeed / SCRawEnergy;
2954 vals[14] = E3x3Seed / ESeed;
2955 vals[15] = E5x5Seed / ESeed;
2959 vals[19] = EMaxSeed / ESeed;
2960 vals[20] = E2ndSeed / ESeed;
2961 vals[21] = ETopSeed / ESeed;
2962 vals[22] = EBottomSeed / ESeed;
2963 vals[23] = ELeftSeed / ESeed;
2964 vals[24] = ERightSeed / ESeed;
2965 vals[25] = E2x5MaxSeed / ESeed;
2966 vals[26] = E2x5TopSeed / ESeed;
2967 vals[27] = E2x5BottomSeed / ESeed;
2968 vals[28] = E2x5LeftSeed / ESeed;
2969 vals[29] = E2x5RightSeed / ESeed;
2970 vals[30] = IsEcalDriven;
2971 vals[31] = GsfTrackPIn;
2975 vals[35] = TrackMomentumError / GsfTrackPIn;
2976 vals[36] = EcalEnergyError / SCRawEnergy;
2977 vals[37] = Classification;
2980 vals[40] = detaCalo;
2981 vals[41] = dphiCalo;
2982 vals[42] = GsfTrackChiSqr;
2983 vals[43] = KFTrackNLayers;
2984 vals[44] = ElectronEnergyOverPout;
2985 vals[45] = IEtaSeed;
2986 vals[46] = IPhiSeed;
2987 vals[47] = ((
int)IEtaSeed) % 5;
2988 vals[48] = ((
int)IPhiSeed) % 2;
2989 vals[49] = (
std::abs(IEtaSeed) <= 25) * (((
int)IEtaSeed) % 25) +
2990 (
std::abs(IEtaSeed) > 25) * (((
int)(IEtaSeed - 25 *
std::abs(IEtaSeed) / IEtaSeed)) % 20);
2991 vals[50] = ((
int)IPhiSeed) % 20;
2992 vals[51] = EtaCrySeed;
2993 vals[52] = PhiCrySeed;
2997 vals[0] = SCRawEnergy;
3001 vals[4] = E5x5Seed / SCRawEnergy;
3004 vals[7] = NClusters;
3008 vals[11] = EtaSeed - scEta;
3009 vals[12] = atan2(
sin(PhiSeed - scPhi),
cos(PhiSeed - scPhi));
3010 vals[13] = ESeed / SCRawEnergy;
3011 vals[14] = E3x3Seed / ESeed;
3012 vals[15] = E5x5Seed / ESeed;
3016 vals[19] = EMaxSeed / ESeed;
3017 vals[20] = E2ndSeed / ESeed;
3018 vals[21] = ETopSeed / ESeed;
3019 vals[22] = EBottomSeed / ESeed;
3020 vals[23] = ELeftSeed / ESeed;
3021 vals[24] = ERightSeed / ESeed;
3022 vals[25] = E2x5MaxSeed / ESeed;
3023 vals[26] = E2x5TopSeed / ESeed;
3024 vals[27] = E2x5BottomSeed / ESeed;
3025 vals[28] = E2x5LeftSeed / ESeed;
3026 vals[29] = E2x5RightSeed / ESeed;
3027 vals[30] = IsEcalDriven;
3028 vals[31] = GsfTrackPIn;
3032 vals[35] = TrackMomentumError / GsfTrackPIn;
3033 vals[36] = EcalEnergyError / SCRawEnergy;
3034 vals[37] = Classification;
3037 vals[40] = detaCalo;
3038 vals[41] = dphiCalo;
3039 vals[42] = GsfTrackChiSqr;
3040 vals[43] = KFTrackNLayers;
3041 vals[44] = ElectronEnergyOverPout;
3042 vals[45] = PreShowerOverRaw;
3046 double regressionResult = 0;
3059 for (
unsigned int v = 0;
v < 53; ++
v)
3064 for (
unsigned int v = 0;
v < 46; ++
v)
3068 std::cout <<
"SCRawEnergy = " << SCRawEnergy <<
" : PreShowerOverRaw = " << PreShowerOverRaw << std::endl;
3069 std::cout <<
"regression energy uncertainty = " << regressionResult << std::endl;
3074 return regressionResult;
3103 double E2x5BottomSeed,
3104 double E2x5LeftSeed,
3105 double E2x5RightSeed,
3110 double PreShowerOverRaw,
3111 double isEcalDriven,
3131 double NPshwClusters,
3146 printf(
"ElectronEnergyRegressionEvaluate instance not initialized !!!");
3153 <<
" is not supported to use function regressionValueWithSubClusters.\n";
3158 float *vals = (isEB) ?
new float[61] :
new float[65];
3162 vals[2] = isEcalDriven;
3166 vals[6] = SCRawEnergy;
3170 vals[10] = etawidth;
3171 vals[11] = phiwidth;
3172 vals[12] = NClusters;
3174 vals[14] = EtaSeed - scEta;
3175 vals[15] = atan2(
sin(PhiSeed - scPhi),
cos(PhiSeed - scPhi));
3176 vals[16] = ESeed / SCRawEnergy;
3177 vals[17] = E3x3Seed / ESeed;
3178 vals[18] = E5x5Seed / SCRawEnergy;
3179 vals[19] = E5x5Seed / ESeed;
3180 vals[20] = EMaxSeed / ESeed;
3181 vals[21] = E2ndSeed / ESeed;
3182 vals[22] = ETopSeed / ESeed;
3183 vals[23] = EBottomSeed / ESeed;
3184 vals[24] = ELeftSeed / ESeed;
3185 vals[25] = ERightSeed / ESeed;
3186 vals[26] = E2x5MaxSeed / ESeed;
3187 vals[27] = E2x5TopSeed / ESeed;
3188 vals[28] = E2x5BottomSeed / ESeed;
3189 vals[29] = E2x5LeftSeed / ESeed;
3190 vals[30] = E2x5RightSeed / ESeed;
3194 vals[34] = phiwidth / etawidth;
3195 vals[35] = (ELeftSeed + ERightSeed == 0. ? 0. : (ELeftSeed - ERightSeed) / (ELeftSeed + ERightSeed));
3196 vals[36] = (ETopSeed + EBottomSeed == 0. ? 0. : (ETopSeed - EBottomSeed) / (ETopSeed + EBottomSeed));
3197 vals[37] = ESubs / SCRawEnergy;
3198 vals[38] = ESub1 / SCRawEnergy;
3199 vals[39] = (NClusters <= 1 ? 999. : EtaSub1 - EtaSeed);
3200 vals[40] = (NClusters <= 1 ? 999. : atan2(
sin(PhiSub1 - PhiSeed),
cos(PhiSub1 - PhiSeed)));
3201 vals[41] = (NClusters <= 1 ? 0. : EMaxSub1 / ESub1);
3202 vals[42] = (NClusters <= 1 ? 0. : E3x3Sub1 / ESub1);
3203 vals[43] = ESub2 / SCRawEnergy;
3204 vals[44] = (NClusters <= 2 ? 999. : EtaSub2 - EtaSeed);
3205 vals[45] = (NClusters <= 2 ? 999. : atan2(
sin(PhiSub2 - PhiSeed),
cos(PhiSub2 - PhiSeed)));
3206 vals[46] = (NClusters <= 2 ? 0. : EMaxSub2 / ESub2);
3207 vals[47] = (NClusters <= 2 ? 0. : E3x3Sub2 / ESub2);
3208 vals[48] = ESub3 / SCRawEnergy;
3209 vals[49] = (NClusters <= 3 ? 999. : EtaSub3 - EtaSeed);
3210 vals[50] = (NClusters <= 3 ? 999. : atan2(
sin(PhiSub3 - PhiSeed),
cos(PhiSub3 - PhiSeed)));
3211 vals[51] = (NClusters <= 3 ? 0. : EMaxSub3 / ESub3);
3212 vals[52] = (NClusters <= 3 ? 0. : E3x3Sub3 / ESub3);
3213 vals[53] = IEtaSeed;
3214 vals[54] = ((
int)IEtaSeed) % 5;
3215 vals[55] = (
std::abs(IEtaSeed) <= 25) * (((
int)IEtaSeed) % 25) +
3216 (
std::abs(IEtaSeed) > 25) * (((
int)(IEtaSeed - 25 *
std::abs(IEtaSeed) / IEtaSeed)) % 20);
3217 vals[56] = IPhiSeed;
3218 vals[57] = ((
int)IPhiSeed) % 2;
3219 vals[58] = ((
int)IPhiSeed) % 20;
3220 vals[59] = EtaCrySeed;
3221 vals[60] = PhiCrySeed;
3225 vals[2] = isEcalDriven;
3229 vals[6] = SCRawEnergy;
3233 vals[10] = etawidth;
3234 vals[11] = phiwidth;
3235 vals[12] = NClusters;
3237 vals[14] = EtaSeed - scEta;
3238 vals[15] = atan2(
sin(PhiSeed - scPhi),
cos(PhiSeed - scPhi));
3239 vals[16] = ESeed / SCRawEnergy;
3240 vals[17] = E3x3Seed / ESeed;
3241 vals[18] = E5x5Seed / SCRawEnergy;
3242 vals[19] = E5x5Seed / ESeed;
3243 vals[20] = EMaxSeed / ESeed;
3244 vals[21] = E2ndSeed / ESeed;
3245 vals[22] = ETopSeed / ESeed;
3246 vals[23] = EBottomSeed / ESeed;
3247 vals[24] = ELeftSeed / ESeed;
3248 vals[25] = ERightSeed / ESeed;
3249 vals[26] = E2x5MaxSeed / ESeed;
3250 vals[27] = E2x5TopSeed / ESeed;
3251 vals[28] = E2x5BottomSeed / ESeed;
3252 vals[29] = E2x5LeftSeed / ESeed;
3253 vals[30] = E2x5RightSeed / ESeed;
3257 vals[34] = phiwidth / etawidth;
3258 vals[35] = (ELeftSeed + ERightSeed == 0. ? 0. : (ELeftSeed - ERightSeed) / (ELeftSeed + ERightSeed));
3259 vals[36] = (ETopSeed + EBottomSeed == 0. ? 0. : (ETopSeed - EBottomSeed) / (ETopSeed + EBottomSeed));
3260 vals[37] = ESubs / SCRawEnergy;
3261 vals[38] = ESub1 / SCRawEnergy;
3262 vals[39] = (NClusters <= 1 ? 999. : EtaSub1 - EtaSeed);
3263 vals[40] = (NClusters <= 1 ? 999. : atan2(
sin(PhiSub1 - PhiSeed),
cos(PhiSub1 - PhiSeed)));
3264 vals[41] = (NClusters <= 1 ? 0. : EMaxSub1 / ESub1);
3265 vals[42] = (NClusters <= 1 ? 0. : E3x3Sub1 / ESub1);
3266 vals[43] = ESub2 / SCRawEnergy;
3267 vals[44] = (NClusters <= 2 ? 999. : EtaSub2 - EtaSeed);
3268 vals[45] = (NClusters <= 2 ? 999. : atan2(
sin(PhiSub2 - PhiSeed),
cos(PhiSub2 - PhiSeed)));
3269 vals[46] = (NClusters <= 2 ? 0. : EMaxSub2 / ESub2);
3270 vals[47] = (NClusters <= 2 ? 0. : E3x3Sub2 / ESub2);
3271 vals[48] = ESub3 / SCRawEnergy;
3272 vals[49] = (NClusters <= 3 ? 999. : EtaSub3 - EtaSeed);
3273 vals[50] = (NClusters <= 3 ? 999. : atan2(
sin(PhiSub3 - PhiSeed),
cos(PhiSub3 - PhiSeed)));
3274 vals[51] = (NClusters <= 3 ? 0. : EMaxSub3 / ESub3);
3275 vals[52] = (NClusters <= 3 ? 0. : E3x3Sub3 / ESub3);
3276 vals[53] = PreShowerOverRaw;
3277 vals[54] = NPshwClusters;
3278 vals[55] = EPshwSubs / SCRawEnergy;
3279 vals[56] = EPshwSub1 / SCRawEnergy;
3280 vals[57] = (NPshwClusters == 0 ? 999. : EtaPshwSub1 - EtaSeed);
3281 vals[58] = (NPshwClusters == 0 ? 999. : atan2(
sin(PhiPshwSub1 - PhiSeed),
cos(PhiPshwSub1 - PhiSeed)));
3282 vals[59] = EPshwSub2 / SCRawEnergy;
3283 vals[60] = (NPshwClusters <= 1 ? 999. : EtaPshwSub2 - EtaSeed);
3284 vals[61] = (NPshwClusters <= 1 ? 999. : atan2(
sin(PhiPshwSub2 - PhiSeed),
cos(PhiPshwSub2 - PhiSeed)));
3285 vals[62] = EPshwSub3 / SCRawEnergy;
3286 vals[63] = (NPshwClusters <= 2 ? 999. : EtaPshwSub3 - EtaSeed);
3287 vals[64] = (NPshwClusters <= 2 ? 999. : atan2(
sin(PhiPshwSub3 - PhiSeed),
cos(PhiPshwSub3 - PhiSeed)));
3291 double regressionResult = 0;
3292 Int_t BinIndex = -1;
3308 for (
unsigned int v = 0;
v < 61; ++
v)
3313 for (
unsigned int v = 0;
v < 65; ++
v)
3317 std::cout <<
"BinIndex : " << BinIndex <<
"\n";
3318 std::cout <<
"SCRawEnergy = " << SCRawEnergy <<
" : PreShowerOverRaw = " << PreShowerOverRaw << std::endl;
3319 std::cout <<
"regression energy = " << regressionResult << std::endl;
3324 return regressionResult;
3353 double E2x5BottomSeed,
3354 double E2x5LeftSeed,
3355 double E2x5RightSeed,
3360 double PreShowerOverRaw,
3361 double isEcalDriven,
3381 double NPshwClusters,
3396 printf(
"ElectronEnergyRegressionEvaluate instance not initialized !!!");
3403 <<
" is not supported to use function regressionValueWithSubClusters.\n";
3408 float *vals = (isEB) ?
new float[61] :
new float[65];
3412 vals[2] = isEcalDriven;
3416 vals[6] = SCRawEnergy;
3420 vals[10] = etawidth;
3421 vals[11] = phiwidth;
3422 vals[12] = NClusters;
3424 vals[14] = EtaSeed - scEta;
3425 vals[15] = atan2(
sin(PhiSeed - scPhi),
cos(PhiSeed - scPhi));
3426 vals[16] = ESeed / SCRawEnergy;
3427 vals[17] = E3x3Seed / ESeed;
3428 vals[18] = E5x5Seed / SCRawEnergy;
3429 vals[19] = E5x5Seed / ESeed;
3430 vals[20] = EMaxSeed / ESeed;
3431 vals[21] = E2ndSeed / ESeed;
3432 vals[22] = ETopSeed / ESeed;
3433 vals[23] = EBottomSeed / ESeed;
3434 vals[24] = ELeftSeed / ESeed;
3435 vals[25] = ERightSeed / ESeed;
3436 vals[26] = E2x5MaxSeed / ESeed;
3437 vals[27] = E2x5TopSeed / ESeed;
3438 vals[28] = E2x5BottomSeed / ESeed;
3439 vals[29] = E2x5LeftSeed / ESeed;
3440 vals[30] = E2x5RightSeed / ESeed;
3444 vals[34] = phiwidth / etawidth;
3445 vals[35] = (ELeftSeed + ERightSeed == 0. ? 0. : (ELeftSeed - ERightSeed) / (ELeftSeed + ERightSeed));
3446 vals[36] = (ETopSeed + EBottomSeed == 0. ? 0. : (ETopSeed - EBottomSeed) / (ETopSeed + EBottomSeed));
3447 vals[37] = ESubs / SCRawEnergy;
3448 vals[38] = ESub1 / SCRawEnergy;
3449 vals[39] = (NClusters <= 1 ? 999. : EtaSub1 - EtaSeed);
3450 vals[40] = (NClusters <= 1 ? 999. : atan2(
sin(PhiSub1 - PhiSeed),
cos(PhiSub1 - PhiSeed)));
3451 vals[41] = (NClusters <= 1 ? 0. : EMaxSub1 / ESub1);
3452 vals[42] = (NClusters <= 1 ? 0. : E3x3Sub1 / ESub1);
3453 vals[43] = ESub2 / SCRawEnergy;
3454 vals[44] = (NClusters <= 2 ? 999. : EtaSub2 - EtaSeed);
3455 vals[45] = (NClusters <= 2 ? 999. : atan2(
sin(PhiSub2 - PhiSeed),
cos(PhiSub2 - PhiSeed)));
3456 vals[46] = (NClusters <= 2 ? 0. : EMaxSub2 / ESub2);
3457 vals[47] = (NClusters <= 2 ? 0. : E3x3Sub2 / ESub2);
3458 vals[48] = ESub3 / SCRawEnergy;
3459 vals[49] = (NClusters <= 3 ? 999. : EtaSub3 - EtaSeed);
3460 vals[50] = (NClusters <= 3 ? 999. : atan2(
sin(PhiSub3 - PhiSeed),
cos(PhiSub3 - PhiSeed)));
3461 vals[51] = (NClusters <= 3 ? 0. : EMaxSub3 / ESub3);
3462 vals[52] = (NClusters <= 3 ? 0. : E3x3Sub3 / ESub3);
3463 vals[53] = IEtaSeed;
3464 vals[54] = ((
int)IEtaSeed) % 5;
3465 vals[55] = (
std::abs(IEtaSeed) <= 25) * (((
int)IEtaSeed) % 25) +
3466 (
std::abs(IEtaSeed) > 25) * (((
int)(IEtaSeed - 25 *
std::abs(IEtaSeed) / IEtaSeed)) % 20);
3467 vals[56] = IPhiSeed;
3468 vals[57] = ((
int)IPhiSeed) % 2;
3469 vals[58] = ((
int)IPhiSeed) % 20;
3470 vals[59] = EtaCrySeed;
3471 vals[60] = PhiCrySeed;
3475 vals[2] = isEcalDriven;
3479 vals[6] = SCRawEnergy;
3483 vals[10] = etawidth;
3484 vals[11] = phiwidth;
3485 vals[12] = NClusters;
3487 vals[14] = EtaSeed - scEta;
3488 vals[15] = atan2(
sin(PhiSeed - scPhi),
cos(PhiSeed - scPhi));
3489 vals[16] = ESeed / SCRawEnergy;
3490 vals[17] = E3x3Seed / ESeed;
3491 vals[18] = E5x5Seed / SCRawEnergy;
3492 vals[19] = E5x5Seed / ESeed;
3493 vals[20] = EMaxSeed / ESeed;
3494 vals[21] = E2ndSeed / ESeed;
3495 vals[22] = ETopSeed / ESeed;
3496 vals[23] = EBottomSeed / ESeed;
3497 vals[24] = ELeftSeed / ESeed;
3498 vals[25] = ERightSeed / ESeed;
3499 vals[26] = E2x5MaxSeed / ESeed;
3500 vals[27] = E2x5TopSeed / ESeed;
3501 vals[28] = E2x5BottomSeed / ESeed;
3502 vals[29] = E2x5LeftSeed / ESeed;
3503 vals[30] = E2x5RightSeed / ESeed;
3507 vals[34] = phiwidth / etawidth;
3508 vals[35] = (ELeftSeed + ERightSeed == 0. ? 0. : (ELeftSeed - ERightSeed) / (ELeftSeed + ERightSeed));
3509 vals[36] = (ETopSeed + EBottomSeed == 0. ? 0. : (ETopSeed - EBottomSeed) / (ETopSeed + EBottomSeed));
3510 vals[37] = ESubs / SCRawEnergy;
3511 vals[38] = ESub1 / SCRawEnergy;
3512 vals[39] = (NClusters <= 1 ? 999. : EtaSub1 - EtaSeed);
3513 vals[40] = (NClusters <= 1 ? 999. : atan2(
sin(PhiSub1 - PhiSeed),
cos(PhiSub1 - PhiSeed)));
3514 vals[41] = (NClusters <= 1 ? 0. : EMaxSub1 / ESub1);
3515 vals[42] = (NClusters <= 1 ? 0. : E3x3Sub1 / ESub1);
3516 vals[43] = ESub2 / SCRawEnergy;
3517 vals[44] = (NClusters <= 2 ? 999. : EtaSub2 - EtaSeed);
3518 vals[45] = (NClusters <= 2 ? 999. : atan2(
sin(PhiSub2 - PhiSeed),
cos(PhiSub2 - PhiSeed)));
3519 vals[46] = (NClusters <= 2 ? 0. : EMaxSub2 / ESub2);
3520 vals[47] = (NClusters <= 2 ? 0. : E3x3Sub2 / ESub2);
3521 vals[48] = ESub3 / SCRawEnergy;
3522 vals[49] = (NClusters <= 3 ? 999. : EtaSub3 - EtaSeed);
3523 vals[50] = (NClusters <= 3 ? 999. : atan2(
sin(PhiSub3 - PhiSeed),
cos(PhiSub3 - PhiSeed)));
3524 vals[51] = (NClusters <= 3 ? 0. : EMaxSub3 / ESub3);
3525 vals[52] = (NClusters <= 3 ? 0. : E3x3Sub3 / ESub3);
3526 vals[53] = PreShowerOverRaw;
3527 vals[54] = NPshwClusters;
3528 vals[55] = EPshwSubs / SCRawEnergy;
3529 vals[56] = EPshwSub1 / SCRawEnergy;
3530 vals[57] = (NPshwClusters <= 0 ? 999. : EtaPshwSub1 - EtaSeed);
3531 vals[58] = (NPshwClusters <= 0 ? 999. : atan2(
sin(PhiPshwSub1 - PhiSeed),
cos(PhiPshwSub1 - PhiSeed)));
3532 vals[59] = EPshwSub2 / SCRawEnergy;
3533 vals[60] = (NPshwClusters <= 1 ? 999. : EtaPshwSub2 - EtaSeed);
3534 vals[61] = (NPshwClusters <= 1 ? 999. : atan2(
sin(PhiPshwSub2 - PhiSeed),
cos(PhiPshwSub2 - PhiSeed)));
3535 vals[62] = EPshwSub3 / SCRawEnergy;
3536 vals[63] = (NPshwClusters <= 2 ? 999. : EtaPshwSub3 - EtaSeed);
3537 vals[64] = (NPshwClusters <= 2 ? 999. : atan2(
sin(PhiPshwSub3 - PhiSeed),
cos(PhiPshwSub3 - PhiSeed)));
3541 double regressionResult = 0;
3542 Int_t BinIndex = -1;
3558 for (
unsigned int v = 0;
v < 38; ++
v)
3563 for (
unsigned int v = 0;
v < 31; ++
v)
3567 std::cout <<
"BinIndex : " << BinIndex <<
"\n";
3568 std::cout <<
"SCRawEnergy = " << SCRawEnergy <<
" : PreShowerOverRaw = " << PreShowerOverRaw << std::endl;
3569 std::cout <<
"regression energy uncertainty = " << regressionResult << std::endl;
3574 return regressionResult;