File indexing completed on 2024-05-04 04:04:14
0001 #include "CondFormats/GBRForest/interface/GBRTree.h"
0002
0003 namespace {
0004
0005 struct MyTree : public GBRTree {
0006 MyTree() {
0007 fCutIndices.resize(1, 0);
0008 fCutVals.resize(1, 0);
0009 fLeftIndices.resize(1, 0);
0010 fRightIndices.resize(1, -1);
0011 fResponses.resize(2);
0012 fResponses[0] = 1;
0013 fResponses[1] = 2;
0014 }
0015
0016 double GetResponseNew(const float *vector) const {
0017 int index = 0;
0018 do {
0019 auto r = fRightIndices[index];
0020 auto l = fLeftIndices[index];
0021
0022
0023
0024
0025 unsigned int x = vector[fCutIndices[index]] > fCutVals[index] ? ~0 : 0;
0026 index = (x & r) | ((~x) & l);
0027 } while (index > 0);
0028 return fResponses[-index];
0029 }
0030
0031 double GetResponseOld(const float *vector) const {
0032 int index = 0;
0033 do {
0034 auto r = fRightIndices[index];
0035 auto l = fLeftIndices[index];
0036 index = (vector[fCutIndices[index]] > fCutVals[index]) ? r : l;
0037 } while (index > 0);
0038 return fResponses[-index];
0039 }
0040 };
0041
0042 }
0043
0044 #include <iostream>
0045
0046 int main() {
0047 MyTree aTree;
0048
0049 float val[1];
0050 double ret;
0051
0052 val[0] = -1;
0053 std::cout << "val " << val[0] << std::endl;
0054 ret = aTree.GetResponse(val);
0055 std::cout << "def " << ret << std::endl;
0056 ret = aTree.GetResponseOld(val);
0057 std::cout << "old " << ret << std::endl;
0058 ret = aTree.GetResponseOld(val);
0059 std::cout << "new " << ret << std::endl;
0060
0061 val[0] = 1;
0062 std::cout << "val " << val[0] << std::endl;
0063 ret = aTree.GetResponse(val);
0064 std::cout << "def " << ret << std::endl;
0065 ret = aTree.GetResponseOld(val);
0066 std::cout << "old " << ret << std::endl;
0067 ret = aTree.GetResponseOld(val);
0068 std::cout << "new " << ret << std::endl;
0069
0070 return 0;
0071 }