ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/cbrown/Development/Plotting/Modules/StudyModule.C
(Generate patch)

Comparing UserCode/cbrown/Development/Plotting/Modules/StudyModule.C (file contents):
Revision 1.5 by buchmann, Fri Mar 2 08:36:07 2012 UTC vs.
Revision 1.8 by buchmann, Mon Apr 16 17:22:33 2012 UTC

# Line 765 | Line 765 | void generator_study_plots() {
765  
766   //uncomment whichever one you want to see :-)
767    
768
769 GenLevelStudy::X_vs_generation_lm4();
768   /*
769 + GenLevelStudy::X_vs_generation_lm4();
770   GenLevelStudy::compare_sms_lm4();
771 < GenLevelStudy::MomentumFraction();
771 > */
772 >
773 > ///GenLevelStudy::MomentumFraction();
774 > ///GenLevelStudy::AngleLSPLSP();
775 > ///GenLevelStudy::DeltaLSPmomentum();
776 > ///GenLevelStudy::ZDecayIllustration();
777 > /*
778   GenLevelStudy::AngleMETsumLSP();
779   GenLevelStudy::RatioMETsumLSP();
775 GenLevelStudy::AngleLSPLSP();
780   GenLevelStudy::AngleLSPZ();
781   GenLevelStudy::WidthIllustration();
782 < GenLevelStudy::ZDecayIllustration();
783 < GenLevelStudy::DeltaLSPmomentum();
782 >
783 >
784   GenLevelStudy::pStarIllustration(0.5);
785 < GenLevelStudy::pStarIllustration(0.25);
786 < GenLevelStudy::pStarIllustration(0.75);
783 < GenLevelStudy::pStarDistributions();
785 > //GenLevelStudy::pStarIllustration(0.25);
786 > //GenLevelStudy::pStarIllustration(0.75);
787   GenLevelStudy::DrawJetBand();
788 < GenLevelStudy::DrawOnly100to150inJetBand();
788 > GenLevelStudy::DrawOnly100to150inJetBand();*/
789   GenLevelStudy::ImpactOfGluinoChi2MassDifference();
790 < */
790 >
791   }
792  
793  
# Line 964 | Line 967 | void compare_onpeak_offpeak_signal_distr
967    for(int i=0;i<signalsamples.collection.size();i++) compare_onpeak_offpeak_signal_distributions(mcjzb,datajzb,i);
968   }
969  
970 + bool load_adequate_npred_nobs(string code){
971 +
972 + if(code=="201540") {
973 +  Nobs[0]=1108.67;
974 +  Npred[0]=1106.69;
975 +  Nprederr[0]=275.424852964089;
976 +  Nobs[1]=291.679;
977 +  Npred[1]=288.979;
978 +  Nprederr[1]=74.0248355630055;
979 +  Nobs[2]=76.0776;
980 +  Npred[2]=76.8332;
981 +  Nprederr[2]=20.9768252604726;
982 +  Nobs[3]=22.4581;
983 +  Npred[3]=22.5385;
984 +  Nprederr[3]=7.46758781734772;
985 +  Nobs[4]=5.41088;
986 +  Npred[4]=9.51903;
987 +  Nprederr[4]=3.86595196996807;
988 +  return true;
989 + }
990 +
991 + if(code=="201040") {
992 +  Nobs[0]=1210.02;
993 +  Npred[0]=1228.62;
994 +  Nprederr[0]=305.642034977193;
995 +  Nobs[1]=324.008;
996 +  Npred[1]=323.042;
997 +  Nprederr[1]=82.6094009556418;
998 +  Nobs[2]=84.8866;
999 +  Npred[2]=86.4243;
1000 +  Nprederr[2]=23.4841694480367;
1001 +  Nobs[3]=25.4339;
1002 +  Npred[3]=25.6437;
1003 +  Nprederr[3]=8.32541119033168;
1004 +  Nobs[4]=6.24946;
1005 +  Npred[4]=9.97731;
1006 +  Nprederr[4]=4.07510841593202;
1007 +  return true;
1008 + }
1009 +
1010 + if(code=="151040") {
1011 +  Nobs[0]=1218.67;
1012 +  Npred[0]=1239.47;
1013 +  Nprederr[0]=308.268321394268;
1014 +  Nobs[1]=326.245;
1015 +  Npred[1]=325.731;
1016 +  Nprederr[1]=83.2795749634327;
1017 +  Nobs[2]=85.3292;
1018 +  Npred[2]=87.239;
1019 +  Nprederr[2]=23.6875859996856;
1020 +  Nobs[3]=25.4339;
1021 +  Npred[3]=25.9456;
1022 +  Nprederr[3]=8.40219371514963;
1023 +  Nobs[4]=6.24946;
1024 +  Npred[4]=9.97731;
1025 +  Nprederr[4]=4.07510841593202;
1026 +  return true;
1027 + }
1028 +
1029 + if(code=="151550") {
1030 +  Nobs[0]=1009.57;
1031 +  Npred[0]=1015.24;
1032 +  Nprederr[0]=252.027368634063;
1033 +  Nobs[1]=266.851;
1034 +  Npred[1]=264.99;
1035 +  Nprederr[1]=67.9766170833765;
1036 +  Nobs[2]=68.2042;
1037 +  Npred[2]=69.3185;
1038 +  Nprederr[2]=19.0998669414868;
1039 +  Nobs[3]=20.873;
1040 +  Npred[3]=20.1324;
1041 +  Nprederr[3]=6.85046567121535;
1042 +  Nobs[4]=4.67275;
1043 +  Npred[4]=8.42002;
1044 +  Nprederr[4]=3.55560434037591;
1045 +  return true;
1046 + }
1047 +
1048 + if(code=="151540") {
1049 +  Nobs[0]=1112.51;
1050 +  Npred[0]=1111.01;
1051 +  Nprederr[0]=276.447968514945;
1052 +  Nobs[1]=292.622;
1053 +  Npred[1]=290.731;
1054 +  Nprederr[1]=74.461488188526;
1055 +  Nobs[2]=76.1949;
1056 +  Npred[2]=77.1915;
1057 +  Nprederr[2]=21.0662269219811;
1058 +  Nobs[3]=22.4581;
1059 +  Npred[3]=22.8404;
1060 +  Nprederr[3]=7.54484166514447;
1061 +  Nobs[4]=5.41088;
1062 +  Npred[4]=9.51903;
1063 +  Nprederr[4]=3.86595196996807;
1064 +  return true;
1065 + }
1066 +
1067 + if(code=="151530") {
1068 +  Nobs[0]=1182.29;
1069 +  Npred[0]=1177.48;
1070 +  Nprederr[0]=293.397396547567;
1071 +  Nobs[1]=310.125;
1072 +  Npred[1]=308.279;
1073 +  Nprederr[1]=78.8363941324691;
1074 +  Nobs[2]=83.376;
1075 +  Npred[2]=80.804;
1076 +  Nprederr[2]=21.9686562734479;
1077 +  Nobs[3]=24.9171;
1078 +  Npred[3]=23.4465;
1079 +  Nprederr[3]=7.69983840500565;
1080 +  Nobs[4]=6.151;
1081 +  Npred[4]=9.7932;
1082 +  Nprederr[4]=3.94255080734542;
1083 +  return true;
1084 + }
1085 +
1086 + if(code=="101040") {
1087 +  Nobs[0]=1219.78;
1088 +  Npred[0]=1241.65;
1089 +  Nprederr[0]=308.795385452892;
1090 +  Nobs[1]=326.577;
1091 +  Npred[1]=327.172;
1092 +  Nprederr[1]=83.6388357552878;
1093 +  Nobs[2]=85.3292;
1094 +  Npred[2]=87.5409;
1095 +  Nprederr[2]=23.7629564995099;
1096 +  Nobs[3]=25.4339;
1097 +  Npred[3]=26.2475;
1098 +  Nprederr[3]=8.47896339395919;
1099 +  Nobs[4]=6.24946;
1100 +  Npred[4]=9.97731;
1101 +  Nprederr[4]=4.07510841593202;
1102 +  return true;
1103 + }
1104 +
1105 + if(code=="101030") {
1106 +  Nobs[0]=1335.36;
1107 +  Npred[0]=1342.37;
1108 +  Nprederr[0]=334.276222135228;
1109 +  Nobs[1]=355.554;
1110 +  Npred[1]=355.065;
1111 +  Nprederr[1]=90.5352675557984;
1112 +  Nobs[2]=94.9863;
1113 +  Npred[2]=93.7287;
1114 +  Nprederr[2]=25.3082516747483;
1115 +  Nobs[3]=28.3785;
1116 +  Npred[3]=28.3783;
1117 +  Nprederr[3]=9.02022017545026;
1118 +  Nobs[4]=6.98957;
1119 +  Npred[4]=10.8503;
1120 +  Nprederr[4]=4.31460183234792;
1121 +  return true;
1122 + }
1123 +
1124 + if(code=="101020") {
1125 +  Nobs[0]=1418.83;
1126 +  Npred[0]=1421.23;
1127 +  Nprederr[0]=353.214726699284;
1128 +  Nobs[1]=387.594;
1129 +  Npred[1]=380.483;
1130 +  Nprederr[1]=96.9195932538411;
1131 +  Nobs[2]=106.565;
1132 +  Npred[2]=99.4694;
1133 +  Nprederr[2]=26.7421279631969;
1134 +  Nobs[3]=32.9309;
1135 +  Npred[3]=31.6286;
1136 +  Nprederr[3]=9.84399940108186;
1137 +  Nobs[4]=9.25395;
1138 +  Npred[4]=12.5158;
1139 +  Nprederr[4]=4.76585512033255;
1140 +  return true;
1141 + }
1142 +
1143 + if(code=="202040") {
1144 +  Nobs[0]=960.506;
1145 +  Npred[0]=954.77;
1146 +  Nprederr[0]=238.5811858172;
1147 +  Nobs[1]=251.453;
1148 +  Npred[1]=250.838;
1149 +  Nprederr[1]=64.2967104354;
1150 +  Nobs[2]=64.4903;
1151 +  Npred[2]=66.6518;
1152 +  Nprederr[2]=18.4320150537;
1153 +  Nobs[3]=19.1953;
1154 +  Npred[3]=20.1075;
1155 +  Nprederr[3]=6.844063617;
1156 +  Nobs[4]=5.09139;
1157 +  Npred[4]=8.67175;
1158 +  Nprederr[4]=3.6271903178;
1159 +  return true;
1160 + }
1161 +
1162 + if(code=="onpeak") {
1163 +  Nobs[0]=387.268;
1164 +  Npred[0]=377.146;
1165 +  Nprederr[0]=55.4000603791;
1166 +  Nobs[1]=93.6071;
1167 +  Npred[1]=89.2911;
1168 +  Nprederr[1]=13.7946793213;
1169 +  Nobs[2]=22.4222;
1170 +  Npred[2]=22.2462;
1171 +  Nprederr[2]=4.252924039;
1172 +  Nobs[3]=7.49126;
1173 +  Npred[3]=6.98267;
1174 +  Nprederr[3]=1.913797227;
1175 +  Nobs[4]=1.80426;
1176 +  Npred[4]=3.00437;
1177 +  Nprederr[4]=1.2381643019;
1178 +  return true;
1179 + }
1180 +
1181 + if(code=="151550") {
1182 +  Nobs[0]=1009.57;
1183 +  Npred[0]=1015.24;
1184 +  Nprederr[0]=252.0273686341;
1185 +  Nobs[1]=266.851;
1186 +  Npred[1]=264.99;
1187 +  Nprederr[1]=67.9766170834;
1188 +  Nobs[2]=68.2042;
1189 +  Npred[2]=69.3185;
1190 +  Nprederr[2]=19.0998669415;
1191 +  Nobs[3]=20.873;
1192 +  Npred[3]=20.1324;
1193 +  Nprederr[3]=6.8504656712;
1194 +  Nobs[4]=4.67275;
1195 +  Npred[4]=8.42002;
1196 +  Nprederr[4]=3.5556043404;
1197 +  return true;
1198 + }
1199 +
1200 + if(code=="101040") {
1201 +  Nobs[0]=1108.67;
1202 +  Npred[0]=1106.69;
1203 +  Nprederr[0]=275.4248529641;
1204 +  Nobs[1]=291.679;
1205 +  Npred[1]=288.979;
1206 +  Nprederr[1]=74.024835563;
1207 +  Nobs[2]=76.0776;
1208 +  Npred[2]=76.8332;
1209 +  Nprederr[2]=20.9768252605;
1210 +  Nobs[3]=22.4581;
1211 +  Npred[3]=22.5385;
1212 +  Nprederr[3]=7.4675878173;
1213 +  Nobs[4]=5.41088;
1214 +  Npred[4]=9.51903;
1215 +  Nprederr[4]=3.86595197;
1216 +  return true;
1217 + }
1218 +
1219 + if(code=="151040") {
1220 +  Nobs[0]=1218.67;
1221 +  Npred[0]=1239.47;
1222 +  Nprederr[0]=308.2683213943;
1223 +  Nobs[1]=326.245;
1224 +  Npred[1]=325.731;
1225 +  Nprederr[1]=83.2795749634;
1226 +  Nobs[2]=85.3292;
1227 +  Npred[2]=87.239;
1228 +  Nprederr[2]=23.6875859997;
1229 +  Nobs[3]=25.4339;
1230 +  Npred[3]=25.9456;
1231 +  Nprederr[3]=8.4021937151;
1232 +  Nobs[4]=6.24946;
1233 +  Npred[4]=9.97731;
1234 +  Nprederr[4]=4.0751084159;
1235 +  return true;
1236 + }
1237 +
1238 + if(code=="201040") {
1239 +  Nobs[0]=1210.02;
1240 +  Npred[0]=1228.62;
1241 +  Nprederr[0]=305.6420349772;
1242 +  Nobs[1]=324.008;
1243 +  Npred[1]=323.042;
1244 +  Nprederr[1]=82.6094009556;
1245 +  Nobs[2]=84.8866;
1246 +  Npred[2]=86.4243;
1247 +  Nprederr[2]=23.484169448;
1248 +  Nobs[3]=25.4339;
1249 +  Npred[3]=25.6437;
1250 +  Nprederr[3]=8.3254111903;
1251 +  Nobs[4]=6.24946;
1252 +  Npred[4]=9.97731;
1253 +  Nprederr[4]=4.0751084159;
1254 +  return true;
1255 + }
1256 +
1257 + if(code=="151540") {
1258 +  Nobs[0]=1112.51;
1259 +  Npred[0]=1111.01;
1260 +  Nprederr[0]=276.4479685149;
1261 +  Nobs[1]=292.622;
1262 +  Npred[1]=290.731;
1263 +  Nprederr[1]=74.4614881885;
1264 +  Nobs[2]=76.1949;
1265 +  Npred[2]=77.1915;
1266 +  Nprederr[2]=21.066226922;
1267 +  Nobs[3]=22.4581;
1268 +  Npred[3]=22.8404;
1269 +  Nprederr[3]=7.5448416651;
1270 +  Nobs[4]=5.41088;
1271 +  Npred[4]=9.51903;
1272 +  Nprederr[4]=3.86595197;
1273 +  return true;
1274 + }
1275 +
1276 +
1277 + return false;
1278 + }
1279 +
1280 + vector<float> do_simulate_upper_limits(string mcjzb, string datajzb, float MCPeakError, vector<float> jzb_cut, string code) {
1281 +  vector<vector<float> > all_systematics;
1282 +  vector<float> bestUL;
1283 +  //we need to set the correct npred, nprederr, and nobs.
1284 +  bool loaded_info = load_adequate_npred_nobs(code);
1285 +  if(!loaded_info) {
1286 +    write_warning(__FUNCTION__,"obs/pred/prederr could not be loaded for this configuration.");
1287 +    cout << "Configuration " << code << " (pt1/pt2/mll) caused problems. will be skipped." << endl;
1288 +  } else {
1289 +    cout << "Loaded configuration for code " << code << " successfully, e.g. Npred[0] is " << Npred[0] << endl;
1290 +    bool doobserved=false;
1291 +    all_systematics=compute_systematics(mcjzb,MCPeakError,alwaysflip,datajzb,signalsamples,jzb_cut,requireZ);
1292 +    bestUL = compute_upper_limits_from_counting_experiment(all_systematics,jzb_cut,mcjzb,doobserved,alwaysflip);
1293 +    
1294 +  }
1295 +  return bestUL;
1296 + }  
1297 +
1298 + void decipherM0M12sample(string samplename, float &M0, float &M12) {
1299 +  int position = samplename.find("M0_");
1300 +  string interestingpart = samplename.substr(position+3,4);
1301 +  position = interestingpart.find("_");
1302 +  if(position>0&&position<5) interestingpart=interestingpart.substr(0,position);
1303 +  stringstream M0a;
1304 +  M0a << interestingpart;
1305 +  M0a>>M0;
1306 +  position = samplename.find("M12_");
1307 +  interestingpart = samplename.substr(position+4,4);
1308 +  position = interestingpart.find("_");
1309 +  if(position>0&&position<5) interestingpart=interestingpart.substr(0,position);
1310 +  stringstream M12a;
1311 +  M12a << interestingpart;
1312 +  M12a>>M12;
1313 + }
1314 +
1315 + vector<TGraph*> create_limit_graphs(vector<float> limits) {
1316 +  float x[limits.size()];
1317 +  float y[limits.size()];
1318 +  int nx=0;
1319 +  float x2[limits.size()];
1320 +  float y2[limits.size()];
1321 +  int nx2=0;
1322 +  for(int i=0;i<limits.size();i++) {
1323 +    string samplename=signalsamples.collection[i].samplename;
1324 +    float m0,m12;
1325 +    decipherM0M12sample(samplename,m0,m12);
1326 +    if(m12==300) {
1327 +      x[nx]=m0;
1328 +      y[nx]=limits[i];
1329 +      nx++;
1330 +    }
1331 +    if(m12==400) {
1332 +      x2[nx2]=m0;
1333 +      y2[nx2]=limits[i];
1334 +      nx2++;
1335 +    }
1336 +  }
1337 +  
1338 +  TGraph *gra = new TGraph(nx,x,y);
1339 +  TGraph *grb = new TGraph(nx2,x2,y2);
1340 +  vector<TGraph*> graphs;
1341 +  graphs.push_back(gra);
1342 +  graphs.push_back(grb);
1343 +  return graphs;
1344 + }
1345 +  
1346 +  
1347 +
1348 + void interpret_bestULs_for_cuts(vector<pair<vector<float>,string> > bestUL) {
1349 +  TCanvas *can = new TCanvas("can","can",1800,900);
1350 +  can->Divide(2,1);
1351 +  can->cd(1);
1352 +  TGraph *graphs[2][bestUL.size()];
1353 +  TLegend *leg = make_legend();
1354 +  for(int i=0;i<bestUL.size();i++) {
1355 +    vector<TGraph*> grs=create_limit_graphs(bestUL[i].first);
1356 +    graphs[0][i]=grs[0];
1357 +    graphs[1][i]=grs[1];
1358 +    graphs[0][i]->SetLineColor(GenLevelStudy::diversehistocolor(i));
1359 +    graphs[1][i]->SetLineColor(GenLevelStudy::diversehistocolor(i));
1360 +    graphs[0][i]->SetMarkerColor(GenLevelStudy::diversehistocolor(i));
1361 +    graphs[1][i]->SetMarkerColor(GenLevelStudy::diversehistocolor(i));
1362 +    leg->AddEntry(graphs[0][i],bestUL[i].second.c_str(),"lp");
1363 +  }
1364 +  
1365 +  
1366 +  for(int i=0;i<bestUL.size();i++) {
1367 +    graphs[0][i]->GetXaxis()->SetTitle("M_{0}");
1368 +    graphs[0][i]->GetYaxis()->SetTitle("Upper Limit (M_{1/2}=300)");
1369 +    graphs[0][i]->GetXaxis()->CenterTitle();
1370 +    graphs[0][i]->GetYaxis()->CenterTitle();
1371 +    
1372 +    graphs[1][i]->GetXaxis()->SetTitle("M_{0}");
1373 +    graphs[1][i]->GetYaxis()->SetTitle("Upper Limit (M_{1/2}=400)");
1374 +    graphs[1][i]->GetXaxis()->CenterTitle();
1375 +    graphs[1][i]->GetYaxis()->CenterTitle();
1376 +    
1377 +    can->cd(1);
1378 +    if(i==0) graphs[0][i]->Draw("ALP");
1379 +    else graphs[0][i]->Draw("LP");
1380 +    can->cd(2);
1381 +    if(i==0) graphs[1][i]->Draw("ALP");
1382 +    else graphs[1][i]->Draw("LP");
1383 +  }
1384 +  can->cd(1);
1385 +  leg->Draw();
1386 +  can->cd(2);
1387 +  leg->Draw();
1388 +  CompleteSave(can,"mSUGRAlimits");
1389 +  delete can;
1390 + }
1391 +
1392 + void do_simulate_upper_limits(string mcjzb, string datajzb, float MCPeakError, vector<float> jzb_cut) {
1393 +  
1394 +  cout << "Going to simulate upper limits (i.e. expected limits) USING MONTE CARLO!!!!" << endl;
1395 +  while(jzb_cut.size()>Nobs.size()||jzb_cut.size()>Npred.size()||jzb_cut.size()>Nprederr.size()) {
1396 +    Nobs.push_back(0);
1397 +    Npred.push_back(0);
1398 +    Nprederr.push_back(0);
1399 +  }
1400 +  
1401 +  vector<pair<vector<float>,string> > bestUL;
1402 +  
1403 +  bestUL.push_back(make_pair(do_simulate_upper_limits(mcjzb,datajzb,MCPeakError,jzb_cut,"201540"),"201540"));
1404 +  bestUL.push_back(make_pair(do_simulate_upper_limits(mcjzb,datajzb,MCPeakError,jzb_cut,"201040"),"201040"));/*
1405 +  bestUL.push_back(make_pair(do_simulate_upper_limits(mcjzb,datajzb,MCPeakError,jzb_cut,"151040"),"151040"));
1406 +  bestUL.push_back(make_pair(do_simulate_upper_limits(mcjzb,datajzb,MCPeakError,jzb_cut,"151550"),"151550"));
1407 +  bestUL.push_back(make_pair(do_simulate_upper_limits(mcjzb,datajzb,MCPeakError,jzb_cut,"151540"),"151540"));
1408 +  bestUL.push_back(make_pair(do_simulate_upper_limits(mcjzb,datajzb,MCPeakError,jzb_cut,"151530"),"151530"));
1409 +  bestUL.push_back(make_pair(do_simulate_upper_limits(mcjzb,datajzb,MCPeakError,jzb_cut,"101040"),"101040"));
1410 +  bestUL.push_back(make_pair(do_simulate_upper_limits(mcjzb,datajzb,MCPeakError,jzb_cut,"101030"),"101030"));
1411 +  bestUL.push_back(make_pair(do_simulate_upper_limits(mcjzb,datajzb,MCPeakError,jzb_cut,"101020"),"101020"));
1412 +  bestUL.push_back(make_pair(do_simulate_upper_limits(mcjzb,datajzb,MCPeakError,jzb_cut,"151540"),"151540"));
1413 +  bestUL.push_back(make_pair(do_simulate_upper_limits(mcjzb,datajzb,MCPeakError,jzb_cut,"151550"),"151550"));
1414 +  bestUL.push_back(make_pair(do_simulate_upper_limits(mcjzb,datajzb,MCPeakError,jzb_cut,"201040"),"201040"));
1415 +  bestUL.push_back(make_pair(do_simulate_upper_limits(mcjzb,datajzb,MCPeakError,jzb_cut,"151040"),"151040"));
1416 +  bestUL.push_back(make_pair(do_simulate_upper_limits(mcjzb,datajzb,MCPeakError,jzb_cut,"101040"),"101040"));
1417 +  bestUL.push_back(make_pair(do_simulate_upper_limits(mcjzb,datajzb,MCPeakError,jzb_cut,"onpeak"),"onpeak"));
1418 +  bestUL.push_back(make_pair(do_simulate_upper_limits(mcjzb,datajzb,MCPeakError,jzb_cut,"202040"),"202040"));
1419 + */
1420 + /*
1421 +  //-------------------
1422 +  write_warning(__FUNCTION__,"Just testing the components now ...");
1423 +  vector<float> limits;
1424 +  for(int i=0;i<signalsamples.collection.size();i++) limits.push_back(1/(0.01*(i+1)));
1425 +  vector<float> limits2;
1426 +  for(int i=0;i<signalsamples.collection.size();i++) limits2.push_back(1/(0.01*(2*i+2)));
1427 +  bestUL.push_back(make_pair(limits,"abcd"));
1428 +  bestUL.push_back(make_pair(limits2,"efgh"));
1429 +  
1430 +  //-------------------
1431 +  */
1432 +  
1433 +  
1434 +  interpret_bestULs_for_cuts(bestUL);
1435 + }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines