diff --git a/README.md b/README.md index 318ec34d772..e4355c90077 100644 --- a/README.md +++ b/README.md @@ -29,34 +29,6 @@ This would create a project directory \ ("projrouter" in case of the ab 5) `make Work/Work.runs/synth_1` (runs synthesis, writes utilization & timing reports to current directory). 6) `make Work/Work.runs/impl_1` (runs implementation, writes utilization & timing reports to current directory). N.B. This step is optional, and not required for code validation. -## Track Quality Specific Instructions -In the TrackQuality directory first run: - - setupEnv.sh environment.yml Install - - -This will install a miniconda python environment under the Install dir within the TrackQuality dir (or manually install the packages listed in environment.yml if you have an existing conda install) - -Then run: - - source env.sh - -to setup the python environment - -To first download the testbench .dat files and the python saved model and then generate the track quality HLS from a python saved model format run: - - run_TQ_coniferconversion.sh - - -Once run this will generate the 2 HLS files for the track quality firmware (BDT.h and parameters.h) and a reference datafile that will be compared with the csim output. To run the track quality csim, synth etc.. : - - vivado_hls -f script_TQ.tcl - -Which generates the project folder trackquality - -Note on .dat testbench files: -These testbench files will be generated by the CMSSW emulation. Two files are created, one hls_feature.dat used by conifer to run its own predictions and one hls_hex.dat that contains full 96-bit tttrack_trackwords for the track quality HLS to predict on. This CMSSW emulation relies on changes to the TTTrack_trackword dataformat and as such is currently not part of the cms-L1TK CMSSW fork. A development version of CMSSW to generate the test files is found here: https://github.com/Chriisbrown/cmssw/tree/cbrown-TrackQualityMemfiles - ## Format of emData/ files. ### .dat files (test bench input/output data) diff --git a/TrackQuality/BDT.h b/TrackQuality/BDT.h deleted file mode 100644 index 74af6566b98..00000000000 --- a/TrackQuality/BDT.h +++ /dev/null @@ -1,145 +0,0 @@ -#ifndef BDT_H__ -#define BDT_H__ - -#include "ap_fixed.h" - -namespace BDT{ - -constexpr int pow2(int x){ - return x == 0 ? 1 : 2 * pow2(x - 1); -} - -constexpr int fn_nodes(int max_depth){ - return pow2(max_depth + 1) - 1; -} - -constexpr int fn_leaves(int max_depth){ - return pow2(max_depth); -} - -constexpr int fn_classes(int n_classes){ - // Number of trees given number of classes - return n_classes == 2 ? 1 : n_classes; -} - -template -struct Tree { -private: - static constexpr int n_nodes = fn_nodes(max_depth); - static constexpr int n_leaves = fn_leaves(max_depth); -public: - int feature[n_nodes]; - threshold_t threshold[n_nodes]; - score_t value[n_nodes]; - int children_left[n_nodes]; - int children_right[n_nodes]; - int parent[n_nodes]; - - score_t decision_function(input_t x) const{ - #pragma HLS pipeline II = 1 - #pragma HLS ARRAY_PARTITION variable=feature - #pragma HLS ARRAY_PARTITION variable=threshold - #pragma HLS ARRAY_PARTITION variable=value - #pragma HLS ARRAY_PARTITION variable=children_left - #pragma HLS ARRAY_PARTITION variable=children_right - #pragma HLS ARRAY_PARTITION variable=parent - // These resource pragmas prevent the array of trees from being partitioned - // They should be unnecessary anyway due to their own partitioning above - /*#pragma HLS RESOURCE variable=feature core=ROM_nP_LUTRAM - #pragma HLS RESOURCE variable=threshold core=ROM_nP_LUTRAM - #pragma HLS RESOURCE variable=value core=ROM_nP_LUTRAM - #pragma HLS RESOURCE variable=children_left core=ROM_nP_LUTRAM - #pragma HLS RESOURCE variable=children_right core=ROM_nP_LUTRAM - #pragma HLS RESOURCE variable=parent core=ROM_nP_LUTRAM*/ - - bool comparison[n_nodes]; - bool activation[n_nodes]; - bool activation_leaf[n_leaves]; - score_t value_leaf[n_leaves]; - - #pragma HLS ARRAY_PARTITION variable=comparison - #pragma HLS ARRAY_PARTITION variable=activation - #pragma HLS ARRAY_PARTITION variable=activation_leaf - #pragma HLS ARRAY_PARTITION variable=value_leaf - - // Execute all comparisons - Compare: for(int i = 0; i < n_nodes; i++){ - #pragma HLS unroll - // Only non-leaf nodes do comparisons - if(feature[i] != -2){ // -2 means is a leaf (at least for sklearn) - comparison[i] = x[feature[i]] <= threshold[i]; - }else{ - comparison[i] = true; - } - } - - // Determine node activity for all nodes - int iLeaf = 0; - Activate: for(int i = 0; i < n_nodes; i++){ - #pragma HLS unroll - // Root node is always active - if(i == 0){ - activation[i] = true; - }else{ - // If this node is the left child of its parent - if(i == children_left[parent[i]]){ - activation[i] = comparison[parent[i]] && activation[parent[i]]; - }else{ // Else it is the right child - activation[i] = !comparison[parent[i]] && activation[parent[i]]; - } - } - // Skim off the leaves - if(children_left[i] == -1){ // is a leaf - activation_leaf[iLeaf] = activation[i]; - value_leaf[iLeaf] = value[i]; - iLeaf++; - } - } - - score_t y = 0; - for(int i = 0; i < n_leaves; i++){ - if(activation_leaf[i]){ - return value_leaf[i]; - } - } - return y; - } -}; - -template -struct BDT{ - -public: - score_t normalisation; - score_t init_predict[fn_classes(n_classes)]; - Tree trees[n_trees][fn_classes(n_classes)]; - - void decision_function(input_t x, score_t score[fn_classes(n_classes)], score_t tree_scores[fn_classes(n_classes) * n_trees]) const{ - #pragma HLS ARRAY_PARTITION variable=trees dim=0 - for(int j = 0; j < fn_classes(n_classes); j++){ - score[j] = init_predict[j]; - } - Trees: - for(int i = 0; i < n_trees; i++){ - Classes: - for(int j = 0; j < fn_classes(n_classes); j++){ - score_t s = trees[i][j].decision_function(x); - score[j] += s; - tree_scores[i * fn_classes(n_classes) + j] = s; - } - } - for(int j = 0; j < fn_classes(n_classes); j++){ - score[j] *= normalisation; - } - } - -}; - -template -constexpr int Tree::n_nodes; - -template -constexpr int Tree::n_leaves; - -} -#endif diff --git a/TrackQuality/TrackQualityMemory.h b/TrackQuality/TrackQualityMemory.h deleted file mode 100644 index 38beaaa0f33..00000000000 --- a/TrackQuality/TrackQualityMemory.h +++ /dev/null @@ -1,229 +0,0 @@ -#ifndef TrackQuality_TrackQualityMemory_h -#define TrackQuality_TrackQualityMemory_h - -#include "ap_fixed.h" -#include "../TrackletAlgorithm/Constants.h" -#include "../TrackletAlgorithm/MemoryTemplate.h" - -// Temporary definition of TTTrack word pending changes to KF output format -// https://twiki.cern.ch/twiki/bin/viewauth/CMS/HybridDataFormat#Final_output_to_L1_trigger - -// Data object definition -class TTTrack -{ -public: - - enum BitWidths { - // Bit size for Track Memory fields - InvRSize = 15, - PhiSize = 12, - TanLSize = 16, - Z0Size = 12, - D0Size = 13, - Chi2rphiSize = 4, - Chi2rzSize = 4, - BendChi2Size = 3, - HitPatternSize = 7, - MVATQSize = 3, //Track Quality - MVAresSize = 6, //Reserved MVA bits - TkValidSize = 1, - - // Bit size for full Track Memory 96-bits - TrackSize = InvRSize + PhiSize + TanLSize + Z0Size - + D0Size + Chi2rphiSize + Chi2rzSize + BendChi2Size - + HitPatternSize + MVATQSize + MVAresSize + TkValidSize - }; - - enum BitLocations { - // The location of the least significant bit (LSB) - // and most significant bit (MSB) in the Track Memory word for different fields - InvRLSB = 0, - InvRMSB = InvRLSB + InvRSize - 1, - PhiLSB = InvRMSB + 1, - PhiMSB = PhiLSB + PhiSize - 1, - TanLLSB = PhiMSB + 1, - TanLMSB = TanLLSB + TanLSize - 1, - Z0LSB = TanLMSB + 1, - Z0MSB = Z0LSB + Z0Size - 1, - D0LSB = Z0MSB + 1, - D0MSB = D0LSB + D0Size - 1, - Chi2rphiLSB = D0MSB + 1, - Chi2rphiMSB = Chi2rphiLSB + Chi2rphiSize - 1, - Chi2rzLSB = Chi2rphiMSB + 1, - Chi2rzMSB = Chi2rzLSB + Chi2rzSize - 1, - BendChi2LSB = Chi2rzMSB + 1, - BendChi2MSB = BendChi2LSB + BendChi2Size - 1, - HitPatternLSB = BendChi2MSB + 1, - HitPatternMSB = HitPatternLSB + HitPatternSize - 1, - MVATQLSB = HitPatternMSB + 1, - MVATQMSB = MVATQLSB + MVATQSize - 1, - MVAresLSB = MVATQMSB + 1, - MVAresMSB = MVAresLSB + MVAresSize- 1, - TkValidLSB = MVAresMSB + 1, - TkValidMSB = TkValidLSB + TkValidSize - 1 - - }; - - // TODO update to output of KF, for now 96-bit track word pending correct parameter representations - typedef ap_int TTInvR; - typedef ap_int TTPhi; - typedef ap_int TTTanL; - typedef ap_int TTZ0; - typedef ap_int TTD0; - - typedef ap_uint TTChi2rphi; - typedef ap_uint TTChi2rz; - typedef ap_uint TTBendChi2; - typedef ap_uint TTHitPattern; - typedef ap_uint TTMVATQ; - typedef ap_uint TTMVAres; - typedef ap_uint TTTkValid; - - typedef ap_uint TrackData; - - // Constructors - TTTrack(const TrackData& newdata): - data_(newdata) - {} - - TTTrack(const TTInvR invr, const TTPhi phi, const TTTanL tanl, - const TTZ0 z0, const TTD0 d0, const TTChi2rphi chi2rphi, - const TTChi2rz chi2rz, const TTBendChi2 bendchi2, const TTHitPattern hitpattern, - const TTMVATQ mvatq, const TTMVAres mvares, const TTTkValid tkvalid): - - data_( (((((((((((invr,phi),tanl),z0),d0),chi2rphi),chi2rz),bendchi2),hitpattern),mvatq),mvares),tkvalid) ) - {} - - #ifndef __SYNTHESIS__ - TTTrack(const std::string& s){ - std::stringstream ss; - ss << std::hex << s; //convert 96-bit hex track word to 96-bit uint - ss >> data_; - } - #endif - - TTTrack(): - data_(0) - {} - - #ifndef __SYNTHESIS__ - TTTrack(const char* datastr, int base=16) - { - TrackData newdata(datastr, base); - data_ = newdata; - } - #endif - - // Getter - static constexpr int getWidth() {return TrackSize;} - - TrackData raw() const {return data_;} - - TTInvR getInvR() const { - return data_.range(InvRMSB,InvRLSB); - } - - TTPhi getPhi() const { - return data_.range(PhiMSB,PhiLSB); - } - - TTTanL getTanL() const { - return data_.range(TanLMSB,TanLLSB); - } - - TTZ0 getZ0() const { - return data_.range(Z0MSB,Z0LSB); - } - - TTD0 getD0() const { - return data_.range(D0MSB,D0LSB); - } - - TTChi2rphi getChi2rphi() const { - return data_.range(Chi2rphiMSB,Chi2rphiLSB); - } - - TTChi2rz getChi2rz() const { - return data_.range(Chi2rzMSB,Chi2rzLSB); - } - - TTBendChi2 getBendChi2() const { - return data_.range(BendChi2MSB,BendChi2LSB); - } - - TTHitPattern getHitPattern() const { - return data_.range(HitPatternMSB,HitPatternLSB); - } - - TTMVATQ getMVATQ() const { - return data_.range(MVATQMSB,MVATQLSB); - } - - TTMVAres getMVAres() const { - return data_.range(MVAresMSB,MVAresLSB); - } - - TTTkValid getTkValid() const { - return data_.range(TkValidMSB,TkValidLSB); - } - - // Setter - - void setInvR(TTInvR invr) const { - data_.range(InvRMSB,InvRLSB) = invr; - } - - void setPhi(TTPhi phi) const { - data_.range(PhiMSB,PhiLSB) = phi; - } - - void setTanL(TTTanL tanl) const { - data_.range(TanLMSB,TanLLSB) = tanl; - } - - void setZ0(TTZ0 z0) const { - data_.range(Z0MSB,Z0LSB) = z0; - } - - void setD0(TTD0 d0) const { - data_.range(D0MSB,D0LSB) = d0; - } - - void setChi2rphi(TTChi2rphi chi2rphi) const { - data_.range(Chi2rphiMSB,Chi2rphiLSB) = chi2rphi; - } - - void setChi2rz(TTChi2rz chi2rz) const { - data_.range(Chi2rzMSB,Chi2rzLSB) = chi2rz; - } - - void setBendChi2(TTBendChi2 bendchi2) const { - data_.range(BendChi2MSB,BendChi2LSB) = bendchi2; - } - - void setHitPattern(TTHitPattern hitpattern) const { - data_.range(HitPatternMSB,HitPatternLSB) = hitpattern; - } - - void setMVATQ(TTMVATQ mvatq) const { - data_.range(MVATQMSB,MVATQLSB) = mvatq; - } - - void setMVAres(TTMVAres mvares) const { - data_.range(MVAresMSB,MVAresLSB) = mvares; - } - - void setTkValid(TTTkValid tkvalid) const { - data_.range(TkValidMSB,TkValidLSB) = tkvalid; - } - -private: - - TrackData data_; - -}; - - - -#endif - diff --git a/TrackQuality/TrackQualityTop.cc b/TrackQuality/TrackQualityTop.cc deleted file mode 100644 index 59a137daa55..00000000000 --- a/TrackQuality/TrackQualityTop.cc +++ /dev/null @@ -1,15 +0,0 @@ -#include "BDT.h" -#include "parameters.h" -#include "TrackQualityTop.h" -#include "TrackQualityMemory.h" -#include "TracktoFeature.h" - -void TrackQualityTop(const TTTrack& Track,score_arr_t score,score_t tree_scores[BDT::fn_classes(n_classes) * n_trees]){ - input_arr_t x; - FeatureTransform(Track,x); - #pragma HLS array_partition variable=score - #pragma HLS array_partition variable=x - #pragma HLS pipeline - #pragma HLS unroll - bdt.decision_function(x, score, tree_scores); -} diff --git a/TrackQuality/TrackQualityTop.h b/TrackQuality/TrackQualityTop.h deleted file mode 100644 index c319eb03c3d..00000000000 --- a/TrackQuality/TrackQualityTop.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef TrackQuality_TrackQuality_H_ -#define TrackQuality_TrackQuality_H_ - -#include "BDT.h" -#include "parameters.h" -#include "TrackQualityMemory.h" - - -// Prototype of top level function for C-synthesis -void TrackQualityTop( - const TTTrack& Track, - score_arr_t score, - score_t tree_scores[BDT::fn_classes(n_classes) * n_trees]); -#endif diff --git a/TrackQuality/TracktoFeature.h b/TrackQuality/TracktoFeature.h deleted file mode 100644 index 199bb673049..00000000000 --- a/TrackQuality/TracktoFeature.h +++ /dev/null @@ -1,62 +0,0 @@ -#ifndef TrackQuality_TracktoFeature_H__ -#define TrackQuality_TracktoFeature_H__ - -#include "ap_fixed.h" -#include "BDT.h" -#include "parameters.h" -#include "TrackQualityMemory.h" - -void FeatureTransform(const TTTrack& Track, input_arr_t transformed_features) { - - //Proper track parameter representations tbc - //All track parameters are shown here through strictly only some are needed for this particular model - - auto InvR = Track.getInvR(); - auto Phi = Track.getPhi(); - auto TanL = Track.getTanL(); - auto Z0 = Track.getZ0(); - auto D0 = Track.getD0(); - auto Chi2rphi = Track.getChi2rphi(); - auto Chi2rz = Track.getChi2rz(); - auto BendChi2 = Track.getBendChi2(); - auto HitPattern = Track.getHitPattern(); - auto MVATQ = Track.getMVATQ(); - auto MVAres = Track.getMVAres(); - auto TkValid = Track.getTkValid(); - - ap_uint<3> NStub = 0; - ap_uint<3> tmp_trk_nlaymiss_interior = 0; - - //n_stub calculation - - for (int i = 6; i >= 0; i--) { - int k = HitPattern >> i; - if (k & 1) - NStub ++; - } - - //n_lay miss calculation TODO verify - //int lay_i = 0; - - //bool seq = false; - //int nbits = floor(log2(HitPattern)) + 1; //calc num of bits req for num - //for (int i = 0; i < nbits; i++) { - // lay_i = ((1 << i) & HitPattern) >> i; //0 or 1 in ith bit (right to left) - //if (lay_i && !seq) - // seq = true; //sequence starts when first 1 found - //if (!lay_i && seq) - // tmp_trk_nlaymiss_interior++; - //} - - //Shift features to be in line with expected size - transformed_features[0] = BendChi2*16; - transformed_features[1] = Chi2rphi*8; - transformed_features[2] = Chi2rz*8; - transformed_features[3] = NStub*16; - transformed_features[4] = InvR/256; - transformed_features[5] = TanL/512; - transformed_features[6] = Z0/32; -} - - -#endif diff --git a/TrackQuality/conifer_converter.py b/TrackQuality/conifer_converter.py deleted file mode 100644 index a763d53e661..00000000000 --- a/TrackQuality/conifer_converter.py +++ /dev/null @@ -1,54 +0,0 @@ -from conifer import conifer -import joblib -import numpy as np -import sys - -bdt_model = joblib.load(sys.argv[1]) -print("Model File Loaded") - -features = [] - -with open("hls_features.dat",'r') as rf: - for i, line in enumerate(rf): - if line.split()[0] == 'Event': #Event header - continue - else: - feature_list = line.split() - features.append(np.array([int(feature) for feature in feature_list])) #Create array for each track, add to list of arrays -print("List of Feature Arrays Created") - - -with open("../project/settings_hls.tcl") as sf: #Extract part and clock from setting script - for i, line in enumerate(sf): - if len(line.split()) > 0: - if line.split()[0] == 'set_part': - part = line.split()[1].strip("{}") - if line.split()[0] == 'create_clock': - period = (1000/int(line.split()[2].strip("MHz"))) #Convert to clock period in ns - - -simcfg = conifer.backends.vivadohls.auto_config() -simcfg['Precision'] = 'ap_fixed<13,6>' #This parameter controls the internal quantisation of the BDT -simcfg['OutputDir'] = "simdir/" -simcfg["XilinxPart"] = part -simcfg["ClockPeriod"] = period - -try: - simmodel = conifer.model(bdt_model.get_booster(), conifer.converters.xgboost, conifer.backends.vivadohls, simcfg) #Create Conifer model -except: - try: - simmodel = conifer.model(bdt_model, conifer.converters.sklearn, conifer.backends.vivadohls, simcfg) - except: - print("Invalid BDT savefile, either xgboost or sklearn is currently supported") - -simmodel.compile() -print("Simulation Model Compiled") - -predictions = simmodel.decision_function(features) -with open("conifer_predictions.dat",'w') as wf: - [wf.write(str(pidx) + "\n") for pidx in predictions] #Create new file with conifer predictions for each track - -print("Predictions Made") - - - \ No newline at end of file diff --git a/TrackQuality/environment.yml b/TrackQuality/environment.yml deleted file mode 100644 index 0c0079d6f5f..00000000000 --- a/TrackQuality/environment.yml +++ /dev/null @@ -1,8 +0,0 @@ -name: TQ -channels: - - conda-forge - - defaults -dependencies: - - numpy - - xgboost - - joblib \ No newline at end of file diff --git a/TrackQuality/parameters.h b/TrackQuality/parameters.h deleted file mode 100644 index 9846eff11c2..00000000000 --- a/TrackQuality/parameters.h +++ /dev/null @@ -1,1024 +0,0 @@ -#ifndef BDT_PARAMS_H__ -#define BDT_PARAMS_H__ - -#include "BDT.h" -#include "ap_fixed.h" - -static const int n_trees = 100; -static const int max_depth = 3; -static const int n_features = 7; -static const int n_classes = 2; -typedef ap_fixed<13,6> input_t; -typedef input_t input_arr_t[n_features]; -typedef ap_fixed<13,6> score_t; -typedef score_t score_arr_t[n_classes]; -typedef input_t threshold_t; - -static const BDT::BDT bdt = -{ // The struct - 1, // The normalisation - {0}, - { // The array of trees - { // trees[0] - { // [0] - {3,0,1,4,5,2,2,-2,-2,-2,-2,-2,-2,-2,-2}, - {72.0,56.0,76.0,37.3417969,49.3857422,68.0,60.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,-0.758114755,0.200134546,-1.16726196,-0.561773479,1.09898603,-0.750995934,0.147760391,-0.919633031}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[1] - { // [0] - {0,1,0,2,2,1,4,-2,-2,-2,-2,-2,-2,-2,-2}, - {56.0,68.0,72.0,68.0,52.0,60.0,39.4121094,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0.669148684,-0.699031174,0.149765387,-0.451765776,0.281113654,-0.444491982,-0.778364658,-0.563873291}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[2] - { // [0] - {3,5,1,2,2,1,0,-2,-2,-2,-2,-2,-2,-2,-2}, - {72.0,47.8681641,92.0,44.0,52.0,52.0,40.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,-0.203527316,-0.635220826,0.698502302,-0.394960612,0.570625484,0.26033935,-0.0476789922,-0.40559411}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[3] - { // [0] - {0,1,3,2,1,5,2,-2,-2,-2,-2,-2,-2,-2,-2}, - {40.0,84.0,88.0,60.0,100.0,46.421875,68.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0.364614666,-0.160500228,0.0821359903,-0.244677544,-0.405541897,0.0590339229,0.279202223,-0.302579731}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[4] - { // [0] - {2,1,3,2,5,4,1,-2,-2,-2,-2,-2,-2,-2,-2}, - {68.0,36.0,88.0,52.0,46.6806641,40.9550781,68.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0.496190965,0.146982253,-0.0670023188,0.249311671,-0.516845942,-0.291973114,0.587412119,-0.231423348}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[5] - { // [0] - {0,3,4,2,4,5,2,-2,-2,-2,-2,-2,-2,-2,-2}, - {88.0,88.0,40.8378906,44.0,37.6738281,36.296875,44.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0.0805725008,-0.176089823,0.312617064,0.0573942624,-0.625860751,-0.526721001,-0.0894758925,-0.441439807}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[6] - { // [0] - {6,3,6,6,6,1,3,-2,-2,-2,-2,-2,-2,-2,-2}, - {23.125,72.0,41.3125,20.75,19.53125,100.0,72.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,-0.678627551,-0.411922902,-0.516862333,-0.12106435,0.0839154869,-0.173195839,-0.578270078,-0.213891134}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[7] - { // [0] - {5,1,2,1,0,1,1,-2,-2,-2,-2,-2,-2,-2,-2}, - {51.6630859,44.0,60.0,20.0,24.0,92.0,76.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0.399187565,0.128510833,0.095256649,-0.0834683031,0.358787477,0.100311898,-0.207848445,0.0599966682}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[8] - { // [0] - {0,1,4,2,4,3,5,-2,-2,-2,-2,-2,-2,-2,-2}, - {88.0,108.0,42.1972656,76.0,32.6855469,88.0,46.3417969,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0.0352161862,-0.293664098,-0.704935193,-0.246990427,-0.406414092,0.0898024216,0.25110665,-0.462050736}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[9] - { // [0] - {4,1,6,3,2,6,3,-2,-2,-2,-2,-2,-2,-2,-2}, - {32.2011719,76.0,43.125,72.0,52.0,25.28125,88.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,-0.684419453,0.368693858,-0.849913836,-0.669156671,-0.155863196,0.0310090017,-0.448564738,0.0870929211}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[10] - { // [0] - {5,3,5,1,4,5,4,-2,-2,-2,-2,-2,-2,-2,-2}, - {36.1630859,88.0,38.5019531,84.0,36.8105469,36.8955078,34.5371094,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,-0.158543497,-0.309203476,0.247315079,-0.0243508071,0.0212420654,0.2757442,-0.158846676,0.0367744826}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[11] - { // [0] - {1,2,5,5,0,5,1,-2,-2,-2,-2,-2,-2,-2,-2}, - {28.0,60.0,41.6806641,38.609375,40.0,38.7792969,76.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0.316399157,0.12773101,0.169149145,-0.370654196,-0.0208572801,-0.0990572944,-0.075485982,0.0838804916}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[12] - { // [0] - {6,6,3,3,4,4,4,-2,-2,-2,-2,-2,-2,-2,-2}, - {38.34375,20.15625,72.0,72.0,33.6542969,42.5097656,40.8808594,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,-0.420497954,-0.041165784,-0.0689272732,0.0313762948,-0.23838751,0.122381926,0.0346309505,-0.144160271}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[13] - { // [0] - {0,0,4,4,4,2,2,-2,-2,-2,-2,-2,-2,-2,-2}, - {72.0,56.0,37.0917969,37.3574219,37.0253906,52.0,52.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0.04717087,-0.0467337295,-0.0830227137,0.262792408,-0.194944799,-0.3681297,0.110149309,-0.178536355}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[14] - { // [0] - {2,5,3,1,0,4,4,-2,-2,-2,-2,-2,-2,-2,-2}, - {28.0,36.546875,88.0,84.0,56.0,35.0761719,39.4472656,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,-0.0219215192,-0.22514382,0.0812170804,0.2605097,-0.135852695,-0.00197231886,0.0889637396,-0.0844020247}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[15] - { // [0] - {4,1,1,4,0,2,5,-2,-2,-2,-2,-2,-2,-2,-2}, - {32.1621094,76.0,108.0,32.0605469,72.0,84.0,35.0917969,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,-0.909806788,0.0326663889,-0.634162664,-0.413451105,0.0101452498,-0.266255617,-0.366811216,-0.0941940695}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[16] - { // [0] - {5,6,1,4,2,2,3,-2,-2,-2,-2,-2,-2,-2,-2}, - {51.984375,45.3125,36.0,42.8222656,76.0,60.0,72.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,-0.0112008983,0.148131996,-0.384884149,0.71805203,0.313890725,0.0466365777,-0.0143666249,0.154311463}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[17] - { // [0] - {0,0,5,3,6,4,5,-2,-2,-2,-2,-2,-2,-2,-2}, - {104.0,24.0,40.7255859,72.0,18.09375,41.9707031,46.7519531,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0.159900427,-0.00134792854,-0.33348155,-0.00344073214,-0.648149848,-0.37211147,-0.04858578,-0.670883298}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[18] - { // [0] - {0,4,2,1,6,5,4,-2,-2,-2,-2,-2,-2,-2,-2}, - {88.0,32.1230469,44.0,68.0,27.28125,47.8681641,40.6152344,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,-0.128147215,-0.517335951,-0.033718951,0.0116020953,0.0244898815,-0.269790798,-0.243916124,-0.0614363663}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[19] - { // [0] - {6,2,5,6,6,1,1,-2,-2,-2,-2,-2,-2,-2,-2}, - {35.6875,76.0,38.7167969,21.53125,20.8125,84.0,68.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,-0.112832427,0.0131908152,0.999537647,-0.124888204,0.0562705919,-0.0765547603,-0.15718025,-0.0345426574}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[20] - { // [0] - {1,4,1,3,2,4,4,-2,-2,-2,-2,-2,-2,-2,-2}, - {52.0,33.2363281,68.0,72.0,52.0,33.7441406,32.5722656,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0.159506723,0.475693643,0.0546468981,-0.124460369,0.287548602,-0.139370307,-0.211309075,0.00899878237}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[21] - { // [0] - {4,3,3,4,4,0,2,-2,-2,-2,-2,-2,-2,-2,-2}, - {42.9355469,72.0,72.0,35.7207031,39.0878906,56.0,68.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,-0.168255448,0.0411190465,0.0617836714,-0.0712204203,0.386255503,0.975660443,-0.295418203,0.525456369}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[22] - { // [0] - {1,5,4,3,5,4,4,-2,-2,-2,-2,-2,-2,-2,-2}, - {84.0,38.6806641,33.0371094,88.0,41.9755859,32.3496094,37.3457031,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0.0351967886,0.15067403,-0.137304768,0.0174106695,-0.429855585,-0.1383591,0.0419194214,-0.0517813005}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[23] - { // [0] - {5,2,4,4,0,5,3,-2,-2,-2,-2,-2,-2,-2,-2}, - {35.2255859,44.0,39.1035156,35.2988281,40.0,44.3232422,72.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,-0.0377211832,-0.167554855,0.063255541,-0.0922877863,0.0254979338,-0.0651533008,0.120194443,-0.0127225053}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[24] - { // [0] - {1,1,0,4,1,4,3,-2,-2,-2,-2,-2,-2,-2,-2}, - {108.0,76.0,40.0,33.0292969,84.0,36.8925781,88.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0.265191644,-0.0299917199,0.0687030554,-0.00316350092,0.0109298564,-0.213166505,-0.0743014887,-0.287796825}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[25] - { // [0] - {6,0,2,1,5,3,4,-2,-2,-2,-2,-2,-2,-2,-2}, - {44.5625,104.0,68.0,12.0,41.4130859,72.0,38.6738281,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0.135146081,-0.00168702961,-0.567445695,-0.174047604,-0.285675764,-0.0505633764,-0.12938796,0.717064261}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[26] - { // [0] - {6,3,2,5,5,5,1,-2,-2,-2,-2,-2,-2,-2,-2}, - {28.25,72.0,36.0,44.1005859,48.4394531,40.7519531,100.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,-0.0578377135,-0.166926846,0.0148675554,0.153544515,-0.0177278016,0.0790541172,-0.0118225776,0.038928654}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[27] - { // [0] - {1,2,5,5,2,0,0,-2,-2,-2,-2,-2,-2,-2,-2}, - {60.0,60.0,45.7255859,39.3857422,68.0,56.0,40.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0.0926766247,-0.0198074616,-0.292663276,0.0437399223,-0.0288467016,0.0500618927,0.0807415247,-0.0399330892}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[28] - { // [0] - {5,3,5,1,1,3,3,-2,-2,-2,-2,-2,-2,-2,-2}, - {32.9755859,72.0,44.1181641,44.0,44.0,72.0,72.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,-0.362181723,-0.0798626095,0.198776528,-0.033705432,0.0481837764,-0.00975614879,-0.0704624131,0.0260962714}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[29] - { // [0] - {5,2,2,1,3,2,3,-2,-2,-2,-2,-2,-2,-2,-2}, - {52.8945312,84.0,52.0,116.0,88.0,44.0,72.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,-0.00280643138,-0.224522963,-0.0020637284,-0.500989854,0.0554300733,-0.116383404,0.204831094,0.0284411702}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[30] - { // [0] - {6,2,3,1,4,2,1,-2,-2,-2,-2,-2,-2,-2,-2}, - {39.25,68.0,72.0,76.0,38.9550781,68.0,60.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,-0.0106181893,0.016790146,-0.128690809,0.0996475667,-0.117352836,0.155345634,0.148534611,-0.030019436}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[31] - { // [0] - {0,6,4,4,1,5,5,-2,-2,-2,-2,-2,-2,-2,-2}, - {72.0,19.1875,40.9355469,34.5878906,12.0,36.1904297,47.9658203,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0.371646583,-0.198780403,0.124305248,0.00496313674,-0.142240211,-0.0447046757,0.152760834,-0.101570316}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[32] - { // [0] - {5,2,3,1,0,2,0,-2,-2,-2,-2,-2,-2,-2,-2}, - {38.8681641,52.0,88.0,76.0,56.0,52.0,56.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0.0380685367,-0.049435962,0.100795083,-0.0517410152,-0.00266909716,-0.0805856586,0.0394832864,-0.0679342821}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[33] - { // [0] - {0,2,3,4,1,5,2,-2,-2,-2,-2,-2,-2,-2,-2}, - {56.0,52.0,72.0,40.9082031,68.0,47.8320312,52.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,-0.00353156449,-0.0653247982,-0.0986972079,0.0631360784,0.161201507,-0.0944352522,0.0265889782,-0.165754169}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[34] - { // [0] - {5,0,2,4,3,3,2,-2,-2,-2,-2,-2,-2,-2,-2}, - {49.6357422,88.0,52.0,39.0058594,88.0,72.0,60.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,-0.013510867,0.00734516187,-0.10488265,0.219242826,-0.0460360833,0.0640810505,0.176676735,0.0634332448}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[35] - { // [0] - {5,5,4,2,3,1,1,-2,-2,-2,-2,-2,-2,-2,-2}, - {45.796875,44.3417969,33.2636719,76.0,88.0,84.0,68.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0.00366926123,-0.150217816,-0.131856591,0.0498304442,0.0658576265,-0.259237409,-0.0438902527,0.0403995812}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[36] - { // [0] - {1,4,0,3,5,1,3,-2,-2,-2,-2,-2,-2,-2,-2}, - {60.0,39.1230469,56.0,72.0,38.2167969,68.0,72.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,-0.227426723,0.0881579518,0.0904914141,0.0234717913,-0.0994946957,-0.00653695455,0.0757703707,-0.0382297114}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[37] - { // [0] - {4,0,5,5,3,1,2,-2,-2,-2,-2,-2,-2,-2,-2}, - {37.3300781,40.0,40.4755859,38.7705078,72.0,84.0,44.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0.0854709446,0.00350318057,-0.084629111,0.0300263539,0.00194562541,-0.138561383,0.0463259257,-0.00447511533}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[38] - { // [0] - {5,2,5,4,3,0,1,-2,-2,-2,-2,-2,-2,-2,-2}, - {36.8144531,52.0,38.3857422,38.5527344,72.0,40.0,92.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,-0.00840916578,-0.0831027478,-0.0833066478,0.0650160387,0.00268177595,0.164491504,-0.0183070693,0.02872351}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[39] - { // [0] - {1,4,4,2,3,5,2,-2,-2,-2,-2,-2,-2,-2,-2}, - {108.0,36.1855469,36.6191406,68.0,72.0,38.5107422,52.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,-0.00554024847,-0.109233744,0.0285477042,-0.00229768874,-0.135999471,0.0222494248,-0.260253549,0.0389460325}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[40] - { // [0] - {0,5,5,5,1,4,5,-2,-2,-2,-2,-2,-2,-2,-2}, - {104.0,57.1806641,40.0917969,47.4931641,68.0,42.1035156,47.890625,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0.00223957747,-0.0171670616,0.332792342,0.00872048642,-0.598738074,-0.147914946,0.006423824,-0.5213691}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[41] - { // [0] - {4,5,5,1,3,3,5,-2,-2,-2,-2,-2,-2,-2,-2}, - {32.0957031,38.5917969,33.7880859,92.0,72.0,72.0,34.171875,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,-0.804828823,-0.24931848,0.291263103,-0.262878269,-0.0389201194,0.0490560196,-0.056203261,-0.00165891147}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[42] - { // [0] - {0,0,2,1,2,5,1,-2,-2,-2,-2,-2,-2,-2,-2}, - {72.0,56.0,68.0,28.0,52.0,46.7880859,84.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0.0584243573,-0.00472579012,0.0817701444,-0.0800196677,-0.0201071408,-0.108258583,0.0510166138,0.239298716}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[43] - { // [0] - {1,5,1,3,4,4,2,-2,-2,-2,-2,-2,-2,-2,-2}, - {36.0,51.2695312,44.0,72.0,35.8808594,35.6933594,76.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,-0.151335731,0.0318187475,0.53489387,0.131738618,0.233517021,0.033536572,-0.000473606313,0.0531536005}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[44] - { // [0] - {4,4,3,1,4,1,1,-2,-2,-2,-2,-2,-2,-2,-2}, - {42.8769531,32.2519531,72.0,92.0,32.5371094,92.0,76.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0.0320618525,-0.383642882,0.0623720512,-0.00369184813,0.281127065,-0.43556121,-0.284911066,-0.0234948006}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[45] - { // [0] - {6,3,5,1,1,5,3,-2,-2,-2,-2,-2,-2,-2,-2}, - {33.75,72.0,48.5107422,92.0,76.0,44.3144531,72.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0.0544609353,-0.0672565848,-0.0440880172,0.0194396079,-0.0062654051,-0.0481796563,-0.0448150486,0.0856956393}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[46] - { // [0] - {5,5,3,2,3,5,4,-2,-2,-2,-2,-2,-2,-2,-2}, - {47.8232422,45.9130859,88.0,84.0,72.0,48.9482422,37.6425781,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0.0019968159,-0.151674628,0.165663198,-0.00879957806,-0.144876778,-0.0137769328,-0.0265180226,0.131597295}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[47] - { // [0] - {6,6,1,4,3,5,5,-2,-2,-2,-2,-2,-2,-2,-2}, - {41.3125,39.75,92.0,36.4628906,72.0,50.4931641,40.8857422,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,-0.00842081476,0.0056375619,-0.0923111364,-0.0154641615,0.0640489385,0.262690067,0.114781015,-0.165594891}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[48] - { // [0] - {1,4,2,5,5,5,1,-2,-2,-2,-2,-2,-2,-2,-2}, - {36.0,39.7636719,52.0,49.5556641,39.3857422,46.6806641,76.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,-0.11582984,0.113990493,0.0507228449,-0.0412531383,0.0115270466,-0.0275210347,-0.0735175014,0.00902076066}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[49] - { // [0] - {5,4,5,3,1,3,4,-2,-2,-2,-2,-2,-2,-2,-2}, - {42.0205078,40.7910156,43.3955078,88.0,100.0,72.0,41.7714844,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0.0147251552,-0.0178463906,-0.0255745985,-0.358985007,0.183979109,-0.00242849113,-0.00267323363,0.0417915806}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[50] - { // [0] - {1,3,4,4,0,3,5,-2,-2,-2,-2,-2,-2,-2,-2}, - {68.0,88.0,41.4746094,40.6933594,72.0,88.0,38.4667969,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,-0.0630898923,0.0375375301,0.0604045875,0.418290555,0.00965431798,-0.0215689354,-0.174698219,-0.00234195171}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[51] - { // [0] - {6,5,6,2,2,2,4,-2,-2,-2,-2,-2,-2,-2,-2}, - {30.5,39.484375,45.78125,44.0,44.0,60.0,37.7207031,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,-0.026272282,0.0390149839,-0.00245691719,-0.0480106212,0.00486788061,0.0287510213,0.0685402155,-0.196808547}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[52] - { // [0] - {6,3,1,2,1,0,4,-2,-2,-2,-2,-2,-2,-2,-2}, - {22.9375,88.0,100.0,68.0,100.0,40.0,39.9902344,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,-0.0445858948,0.3149046,0.283278883,-0.118741609,-0.0184167586,0.011246278,0.0273530819,-0.204704612}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[53] - { // [0] - {4,0,1,2,1,3,5,-2,-2,-2,-2,-2,-2,-2,-2}, - {38.1738281,40.0,84.0,68.0,92.0,72.0,37.6455078,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0.0223314539,-0.101041488,-0.0666380972,-0.00489018951,0.0615716949,-0.00105358695,-0.317203015,0.0263729095}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[54] - { // [0] - {5,1,1,4,4,4,3,-2,-2,-2,-2,-2,-2,-2,-2}, - {38.8681641,92.0,92.0,34.5527344,35.2363281,32.8652344,72.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,-0.047896143,0.0460001081,0.0267516188,-0.171079174,0.169100448,-0.0279021598,-0.0599018782,0.0598210916}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[55] - { // [0] - {1,5,5,1,1,5,3,-2,-2,-2,-2,-2,-2,-2,-2}, - {108.0,48.5019531,47.234375,36.0,76.0,44.5644531,72.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,-0.0333272405,0.000621993968,-0.0265467856,0.0483076759,-0.0517740063,0.0884857401,0.0402028151,-0.254830003}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[56] - { // [0] - {5,2,3,4,3,6,1,-2,-2,-2,-2,-2,-2,-2,-2}, - {39.3056641,44.0,88.0,37.6660156,88.0,26.0,84.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0.014559757,-0.0350553468,0.0573891848,-0.026628932,-0.0772483051,-0.0086552389,0.0698276833,-0.0244226605}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[57] - { // [0] - {6,3,4,5,4,1,1,-2,-2,-2,-2,-2,-2,-2,-2}, - {26.375,72.0,34.1542969,52.1357422,38.1972656,60.0,84.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,-0.0575882755,0.153239384,0.0293593425,0.0994659588,0.124142826,-0.0366015732,-0.0163101014,0.0200163387}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[58] - { // [0] - {2,6,1,0,5,2,5,-2,-2,-2,-2,-2,-2,-2,-2}, - {44.0,37.75,68.0,40.0,52.0644531,68.0,39.8232422,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0.000205590171,0.0269799717,-0.0405547954,0.161983579,-0.0452182852,0.0854844451,0.0240613222,-0.0187699217}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[59] - { // [0] - {2,3,5,2,2,3,1,-2,-2,-2,-2,-2,-2,-2,-2}, - {68.0,88.0,42.8417969,52.0,60.0,72.0,76.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0.00706272433,-0.050278198,-0.00430025253,0.192878902,-0.147762731,-0.0255648941,0.215914667,-0.0211955607}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[60] - { // [0] - {4,1,5,5,6,6,4,-2,-2,-2,-2,-2,-2,-2,-2}, - {36.2871094,60.0,51.7695312,36.6894531,25.28125,22.15625,37.3339844,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,-0.13679947,0.178386301,0.0425309055,-0.0233154241,-0.0549571291,0.00976619124,0.118457802,-0.047828123}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[61] - { // [0] - {0,3,2,4,4,6,1,-2,-2,-2,-2,-2,-2,-2,-2}, - {72.0,88.0,44.0,32.7988281,32.5996094,34.84375,92.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,-0.0778767616,0.0121076908,0.154518574,-0.0110910311,-0.020798007,-0.104667239,-0.0133764744,0.0886363983}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[62] - { // [0] - {5,1,3,2,4,1,1,-2,-2,-2,-2,-2,-2,-2,-2}, - {35.796875,100.0,72.0,76.0,34.3496094,76.0,92.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0.0284426212,-0.156544492,0.054541219,-0.270281732,0.0629653633,-0.00592444371,-0.0347009115,0.0295115076}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[63] - { // [0] - {5,0,4,4,3,0,1,-2,-2,-2,-2,-2,-2,-2,-2}, - {41.0019531,40.0,40.0917969,38.8691406,72.0,40.0,92.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0.00245803827,-0.0511796027,-0.039744325,0.0397637077,0.0109625366,-0.0259067751,0.0469890051,-0.111388817}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[64] - { // [0] - {6,0,1,6,4,4,4,-2,-2,-2,-2,-2,-2,-2,-2}, - {27.09375,88.0,76.0,23.125,34.4316406,32.6386719,33.2871094,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0.022643555,-0.0239280518,0.267047048,-0.184595406,0.172885537,-0.0126209753,-0.0353164338,0.0118545974}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[65] - { // [0] - {4,1,3,4,3,0,2,-2,-2,-2,-2,-2,-2,-2,-2}, - {38.6777344,76.0,88.0,33.9785156,88.0,40.0,28.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0.0597595088,-0.0561089739,0.0176645126,-0.0347454511,-0.0330555029,0.0324405432,-0.107904673,0.0437551737}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[66] - { // [0] - {4,3,0,1,1,1,1,-2,-2,-2,-2,-2,-2,-2,-2}, - {32.4511719,72.0,40.0,52.0,92.0,100.0,100.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0.0615665056,-0.332348377,0.205386102,-0.246961132,-0.00138140016,0.04997674,0.00113468443,-0.0482694507}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[67] - { // [0] - {5,0,0,3,4,3,4,-2,-2,-2,-2,-2,-2,-2,-2}, - {39.2080078,24.0,88.0,72.0,34.4394531,88.0,38.7910156,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0.132035121,0.0060214987,-0.0275359694,0.00986897759,-0.0127448505,0.0098735448,0.229803562,-0.0375299193}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[68] - { // [0] - {2,5,3,5,1,1,0,-2,-2,-2,-2,-2,-2,-2,-2}, - {76.0,51.0820312,88.0,50.7607422,92.0,92.0,40.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,-0.00122515892,-0.0955112129,0.0359270535,-0.0516173095,0.0569265522,0.294350356,-0.263990253,0.0362082869}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[69] - { // [0] - {4,6,4,3,-2,4,3,-2,-2,-2,-2,-2,-2,-2,-2}, - {32.2714844,41.96875,42.7597656,88.0,0,42.0917969,72.0,0,0,0,0,0,0,-2.0,-2.0}, - {0,0,0,0,-0.877328753,0,0,-0.175079152,0.0211254116,-0.00146042928,-0.0271363985,0.0974971727,-0.0326903164,-0.877328753,-0.877328753}, - {1,3,5,7,13,9,11,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,14,10,12,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,5,5,6,6,4,4} - } - }, - { // trees[70] - { // [0] - {5,2,5,6,5,3,1,-2,-2,-2,-2,-2,-2,-2,-2}, - {32.5380859,52.0,35.796875,25.40625,32.1279297,72.0,44.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,-0.224252552,-0.0351931639,0.189131722,-0.0197050795,-0.0201302338,0.0319183916,0.0220571943,-0.00111974031}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[71] - { // [0] - {6,4,1,2,6,5,4,-2,-2,-2,-2,-2,-2,-2,-2}, - {17.0,35.8261719,108.0,44.0,16.703125,58.8583984,33.5214844,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,-0.172026396,0.230150267,-0.0937659815,-0.433249503,-0.0022816381,0.449429035,0.0419805758,-0.0521999076}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[72] - { // [0] - {4,2,3,1,3,1,2,-2,-2,-2,-2,-2,-2,-2,-2}, - {42.0917969,60.0,72.0,108.0,72.0,92.0,68.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0.00687959231,-0.0344009697,-0.0822124332,0.0305701196,0.0543446206,-0.179441497,-0.0615132451,0.212573066}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[73] - { // [0] - {6,0,4,6,4,3,3,-2,-2,-2,-2,-2,-2,-2,-2}, - {41.1875,104.0,34.8300781,40.875,35.4902344,72.0,88.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,-0.0013485417,-0.0726915598,0.400251657,-0.330599189,0.343380958,0.0501164608,-0.0018327398,0.116632491}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[74] - { // [0] - {5,5,4,0,4,1,5,-2,-2,-2,-2,-2,-2,-2,-2}, - {34.3681641,34.3505859,42.9472656,56.0,34.7050781,92.0,35.234375,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,-0.00123496866,-0.0533787124,-0.477991998,-0.167864785,-0.00290799025,0.00965377875,0.315944016,-0.117987148}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[75] - { // [0] - {5,5,6,5,3,5,4,-2,-2,-2,-2,-2,-2,-2,-2}, - {58.3144531,58.1621094,23.28125,58.0195312,72.0,58.4570312,39.8164062,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0.00160908396,-0.343539417,0.481369764,-0.221749157,-1.21141636,-0.260065913,-0.235861361,0.324065357}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[76] - { // [0] - {6,6,6,3,1,5,2,-2,-2,-2,-2,-2,-2,-2,-2}, - {42.53125,38.890625,43.0625,72.0,92.0,39.7792969,68.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0.00939815864,-0.00703056809,0.0466683246,-0.0223449916,-0.0301346648,-0.246461734,-0.0298281945,0.196677342}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[77] - { // [0] - {6,4,4,5,5,5,5,-2,-2,-2,-2,-2,-2,-2,-2}, - {44.03125,36.3378906,37.4042969,51.3408203,52.1894531,45.3095703,36.0917969,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,-0.00941868592,0.0687969774,0.0114216283,-0.0379493535,0.112743109,-0.24908112,-0.249601483,-0.0480267964}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[78] - { // [0] - {4,1,4,4,0,6,4,-2,-2,-2,-2,-2,-2,-2,-2}, - {32.1933594,76.0,32.2207031,32.1816406,56.0,34.1875,33.0058594,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,-0.202295586,0.46933791,0.36192748,0.925641,-0.369161874,0.0465293527,0.0256219078,-0.00183470699}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[79] - { // [0] - {4,-2,6,5,4,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2}, - {32.0371094,0,33.375,57.1357422,35.9550781,0,0,0,0,-2.0,-2.0,-2.0,-2.0,-2.0,-2.0}, - {0,-0.493605524,0,0,0,0.000477600959,0.117275357,0.0069957762,-0.0160636008,-0.493605524,-0.493605524,-0.493605524,-0.493605524,-0.493605524,-0.493605524}, - {1,9,3,5,7,-1,-1,-1,-1,11,13,-1,-1,-1,-1}, - {2,10,4,6,8,-1,-1,-1,-1,12,14,-1,-1,-1,-1}, - {-1,0,0,2,2,3,3,4,4,1,1,9,9,10,10} - } - }, - { // trees[80] - { // [0] - {6,1,1,4,5,6,4,-2,-2,-2,-2,-2,-2,-2,-2}, - {43.125,100.0,100.0,37.8847656,37.9667969,44.03125,34.5859375,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,-0.0129619138,0.00549505744,-0.0562900156,0.0311427116,0.150160268,0.0323770829,0.0629639849,-0.1862275}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[81] - { // [0] - {5,1,4,3,2,0,1,-2,-2,-2,-2,-2,-2,-2,-2}, - {35.1279297,52.0,36.0214844,72.0,68.0,40.0,92.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,-0.101618983,0.0209585652,0.0282904115,-0.0428969599,-0.0274184421,0.00848841015,-0.00203458569,0.0250719655}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[82] - { // [0] - {5,4,3,6,1,5,1,-2,-2,-2,-2,-2,-2,-2,-2}, - {39.0830078,38.6191406,88.0,23.34375,76.0,41.0019531,84.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0.133071288,0.0123411259,0.0254357271,-0.0926255286,-0.0516452231,-0.00351488474,0.0425742567,-0.0229243785}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[83] - { // [0] - {1,2,5,5,2,4,3,-2,-2,-2,-2,-2,-2,-2,-2}, - {76.0,60.0,43.5019531,42.9306641,68.0,38.2011719,72.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,-0.0125970002,0.0386840962,-0.182530686,0.0430832691,0.00315353693,0.042290654,-0.0538012944,0.0190799925}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[84] - { // [0] - {3,1,1,4,5,4,0,-2,-2,-2,-2,-2,-2,-2,-2}, - {88.0,84.0,84.0,34.9003906,43.2607422,34.4003906,40.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,-0.0796107054,-0.000261406647,0.0362269208,-0.014849755,0.196537822,-0.00965023786,-0.0130127883,-0.0955984145}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[85] - { // [0] - {2,4,5,3,1,5,2,-2,-2,-2,-2,-2,-2,-2,-2}, - {52.0,37.3378906,47.9033203,72.0,100.0,40.0644531,68.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0.0333798341,-0.00929397158,-0.00785832014,-0.0774548575,0.0263419747,-0.0310010165,0.122126758,-0.0466482118}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[86] - { // [0] - {2,5,6,4,4,5,-2,-2,-2,-2,-2,-2,-2,-2,-2}, - {92.0,42.4931641,38.015625,39.1230469,37.1660156,35.8242188,0,0,0,0,0,0,0,-2.0,-2.0}, - {0,0,0,0,0,0,0.451617271,-0.0116760163,0.00916190259,0.0294939056,-0.00419793045,-0.61673677,-0.285373062,0.451617271,0.451617271}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[87] - { // [0] - {6,3,6,4,4,4,1,-2,-2,-2,-2,-2,-2,-2,-2}, - {24.09375,72.0,24.75,37.3964844,36.8222656,38.9238281,100.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0.035694655,-0.116382629,-0.0479222983,0.0505685657,0.00220903452,0.104552686,-0.00367438304,0.0125674699}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[88] - { // [0] - {6,1,6,4,5,2,2,-2,-2,-2,-2,-2,-2,-2,-2}, - {20.09375,92.0,20.8125,36.6816406,40.8232422,76.0,60.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0.316514999,0.0451358892,0.196057826,-0.185613856,-0.0528445281,-0.402555496,-0.00209486438,0.0136645781}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[89] - { // [0] - {5,5,4,1,4,1,5,-2,-2,-2,-2,-2,-2,-2,-2}, - {42.5107422,42.1455078,32.7480469,28.0,38.7910156,100.0,44.1269531,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0.0448606163,-0.00441933703,-0.112575114,0.0123908445,-0.0352673419,-0.250757962,0.0384358913,0.00286700111}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[90] - { // [0] - {6,5,5,5,2,1,5,-2,-2,-2,-2,-2,-2,-2,-2}, - {20.5,50.4033203,34.8242188,45.7431641,60.0,76.0,34.8330078,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,-0.062606506,-0.206069842,0.310812056,-0.137815565,0.0080744233,-0.0276558995,0.409650326,0.00195971481}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[91] - { // [0] - {5,5,1,1,1,1,5,-2,-2,-2,-2,-2,-2,-2,-2}, - {55.8320312,55.3496094,100.0,108.0,100.0,84.0,56.4394531,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,-0.000747805519,0.0305688791,0.108965881,-0.216290608,-0.0677131563,0.0384519473,-0.0,-0.410540491}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[92] - { // [0] - {5,5,1,5,1,3,5,-2,-2,-2,-2,-2,-2,-2,-2}, - {46.6005859,45.4667969,76.0,44.5644531,100.0,72.0,48.8320312,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0.00115763373,-0.0459447578,0.0319914408,0.1689374,0.00194547744,-0.08711835,-0.0399247892,0.0215469748}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[93] - { // [0] - {6,1,5,5,2,6,4,-2,-2,-2,-2,-2,-2,-2,-2}, - {23.0625,100.0,57.7519531,48.9755859,52.0,24.625,37.3261719,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0.0329984874,0.129283324,-0.142790735,0.0595895462,-0.0261181183,0.000199697344,0.33068496,-0.0136190215}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[94] - { // [0] - {5,1,5,3,6,4,6,-2,-2,-2,-2,-2,-2,-2,-2}, - {36.4667969,52.0,36.5644531,72.0,31.75,42.1816406,17.71875,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,-0.0796044543,0.0147479847,0.000476585526,0.0298468173,-0.123561673,0.169666693,0.15141128,-0.00170577399}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[95] - { // [0] - {5,5,1,3,3,0,1,-2,-2,-2,-2,-2,-2,-2,-2}, - {50.4658203,50.3769531,44.0,72.0,72.0,56.0,68.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0.0108379126,-0.00125832565,-0.0120041901,0.283190966,0.0918342099,-0.185183197,-0.129505843,-0.00822998211}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[96] - { // [0] - {5,5,3,2,2,1,5,-2,-2,-2,-2,-2,-2,-2,-2}, - {58.2958984,45.171875,72.0,68.0,20.0,84.0,58.5283203,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,-0.000944785308,-0.0381812714,0.0719186813,0.00511467457,0.102013394,-0.354754835,-0.930207551,-0.119454049}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[97] - { // [0] - {2,5,5,5,4,3,5,-2,-2,-2,-2,-2,-2,-2,-2}, - {60.0,56.5195312,32.1806641,56.2333984,39.2011719,72.0,57.0996094,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,-0.00179855293,-0.150884092,0.143352672,-0.0331960395,-0.124263339,0.348135084,0.0180851761,-0.199496537}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[98] - { // [0] - {0,3,3,1,3,0,0,-2,-2,-2,-2,-2,-2,-2,-2}, - {40.0,72.0,72.0,76.0,88.0,56.0,56.0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0.061641451,-0.0186477229,-0.0310800616,0.0045569283,-0.0692590103,0.0304071121,0.0479261316,-0.0163862389}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - }, - { // trees[99] - { // [0] - {5,5,0,0,6,6,5,-2,-2,-2,-2,-2,-2,-2,-2}, - {54.1269531,54.0283203,88.0,72.0,25.84375,26.859375,56.4570312,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0.000925859262,-0.015619236,0.176892474,-0.248055056,0.0997440517,0.00894586742,0.481408,-0.147654518}, - {1,3,5,7,9,11,13,-1,-1,-1,-1,-1,-1,-1,-1}, - {2,4,6,8,10,12,14,-1,-1,-1,-1,-1,-1,-1,-1}, - {-1,0,0,1,1,2,2,3,3,4,4,5,5,6,6} - } - } - } -}; -#endif \ No newline at end of file diff --git a/TrackQuality/run_TQ_coniferconversion.sh b/TrackQuality/run_TQ_coniferconversion.sh deleted file mode 100755 index ba0cd085e8f..00000000000 --- a/TrackQuality/run_TQ_coniferconversion.sh +++ /dev/null @@ -1,67 +0,0 @@ -if [ -d "conifer" ] -then - echo "Conifer already present" -else - git clone https://github.com/thesps/conifer.git - cd conifer - pip install . - cd .. -fi - -python -c "import joblib" -RESULT=$? -if [ $RESULT -eq 1 ]; then - echo "Install python package Joblib to run" - exit 1 -fi - -python -c "import numpy" -RESULT=$? -if [ $RESULT -eq 1 ]; then - echo "Install python package Numpy to run" - exit 1 -fi - -python -c "import xgboost" -RESULT=$? -if [ $RESULT -eq 1 ]; then - echo "Install python package Xgboost to run" - exit 1 -fi - - -if [ -d "simdir" ] -then - rm -r simdir -fi - -if [ -d "hlsdir" ] -then - rm -r hlsdir -fi - -TrackQuality_url="https://cernbox.cern.ch/index.php/s/7Zo8KfaPZ7ySIt8/download" - -if [ -f "xgboost_model.pkl" ] -then - echo "Model Present" -else - echo "No Model Present" - wget -O TQ.tar.gz --quiet ${TrackQuality_url} - tar -xzf TQ.tar.gz - rm -f TQ.tar.gz - mv TQ/* . -fi - -python conifer_converter.py xgboost_model.pkl - -mv simdir/firmware/parameters.h . -mv simdir/firmware/BDT.h . - -rm -r simdir - -mv hls_features.dat TQ/ -mv hls_hex.dat TQ/ -mv conifer_predictions.dat TQ/ - - diff --git a/TrackQuality/setupEnv.sh b/TrackQuality/setupEnv.sh deleted file mode 100755 index 18675533db7..00000000000 --- a/TrackQuality/setupEnv.sh +++ /dev/null @@ -1,81 +0,0 @@ -#!/bin/bash - -SCRIPT_DIR=`dirname ${BASH_SOURCE[0]}` -echo "Script directory "$SCRIPT_DIR - -function run_setup() -{ - if [[ -z $2 ]] ; then - echo 'Usage:' - echo ' setupEnv.sh ' - return 1 - fi - - if [[ "$1" == *.yml ]] ; then - echo "Using enviroment file: "$1 - else - echo "Conda enviroment file ending with .yml required" - return 1 - fi - - ENV_FILE=$1 - INSTALL_DIR=$2 - - if [[ -f "$ENV_FILE" ]]; then - echo "Installing environment:" - echo "--------------------------------------------" - cat $ENV_FILE - echo "--------------------------------------------" - else - echo "File $ENV_FILE does not exists" - return 1 - fi - - if [ -d "$INSTALL_DIR" ]; then - echo "Error - directory "$INSTALL_DIR" exists!" - return 1 - fi - echo "Setting up central environment under "$INSTALL_DIR - - mkdir -p $INSTALL_DIR || return 1 - - INSTALL_ABSDIR=$(cd $INSTALL_DIR; pwd) - echo "Absolute path "$INSTALL_ABSDIR - echo "System: "$(uname -a) - - if [ $(uname) == "Darwin" ]; then - echo "Installing for MAC OS" - curl -sS https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh -o $INSTALL_ABSDIR/conda.sh || return 1 - elif [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then - echo "Installing for Linux" - curl -sS https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -o $INSTALL_ABSDIR/conda.sh || return 1 - fi - - bash $INSTALL_ABSDIR/conda.sh -b -s -p $INSTALL_ABSDIR/miniconda || return 1 - - CONDA_BIN=$INSTALL_ABSDIR/miniconda/bin - export PATH=$CONDA_BIN:$PATH - - export TMPDIR=$INSTALL_ABSDIR/tmp - export TMPPATH=$TMPDIR - export TEMP=$TMPDIR - mkdir $TMPDIR - - echo "Create environment" - unset PYTHONPATH - conda env create -f $ENV_FILE || return 1 - rm -rf $INSTALL_ABSDIR/tmp - - echo "Generate setup script" - echo "export PATH="$INSTALL_ABSDIR"/miniconda/bin:\$PATH" > $SCRIPT_DIR/env.sh - echo "source activate TQ" >> $SCRIPT_DIR/env.sh -} - -run_setup $1 $2 -if [ $? -eq 0 ] -then - echo "Successfully setup environment" -else - return 1 -fi -