From 5b404f1d96e57d30755460c9415148a8c256e389 Mon Sep 17 00:00:00 2001 From: ehrlich-uva Date: Thu, 12 Mar 2026 22:49:01 -0500 Subject: [PATCH 01/54] set default ZS CRV data --- CRVReco/src/CrvCalibration_module.cc | 5 +- CRVReco/src/CrvDQMcollector_module.cc | 50 +------------------ CRVReco/src/CrvPedestalFinder_module.cc | 5 +- ...CrvDigisFromArtdaqFragmentsFEBII_module.cc | 5 +- 4 files changed, 12 insertions(+), 53 deletions(-) diff --git a/CRVReco/src/CrvCalibration_module.cc b/CRVReco/src/CrvCalibration_module.cc index a5fbb1888b..8f32618b87 100644 --- a/CRVReco/src/CrvCalibration_module.cc +++ b/CRVReco/src/CrvCalibration_module.cc @@ -40,6 +40,7 @@ namespace mu2e using Name=fhicl::Name; using Comment=fhicl::Comment; fhicl::Atom crvRecoPulsesModuleLabel{Name("crvRecoPulsesModuleLabel"), Comment("module label of the input CrvRecoPulses")}; + fhicl::Atom useNZS{Name("useNZS"), Comment("use NZS data"), false}; fhicl::Atom histBinsPulseArea{Name("histBinsPulseArea"), Comment("pulseArea histogram bins"), 300}; fhicl::Atom histBinsPulseHeight{Name("histBinsPulseHeight"), Comment("pulseHeight histogram bins"), 300}; fhicl::Atom histMaxPulseArea{Name("histMaxPulseArea"), Comment("end range of pulseArea histogram"), 3000.0}; @@ -69,6 +70,7 @@ namespace mu2e private: std::string _crvRecoPulsesModuleLabel; + bool _useNZS; int _histBinsPulseArea, _histBinsPulseHeight; double _histMaxPulseArea, _histMaxPulseHeight; double _fitRangeStart, _fitRangeEnd; @@ -92,6 +94,7 @@ namespace mu2e CrvCalibration::CrvCalibration(const Parameters& conf) : art::EDAnalyzer(conf), _crvRecoPulsesModuleLabel(conf().crvRecoPulsesModuleLabel()), + _useNZS(conf().useNZS()), _histBinsPulseArea(conf().histBinsPulseArea()), _histBinsPulseHeight(conf().histBinsPulseHeight()), _histMaxPulseArea(conf().histMaxPulseArea()), @@ -200,7 +203,7 @@ namespace mu2e void CrvCalibration::analyze(const art::Event& event) { art::Handle crvRecoPulseCollection; - if(!event.getByLabel(_crvRecoPulsesModuleLabel,"NZS",crvRecoPulseCollection)) return; + if(!event.getByLabel(_crvRecoPulsesModuleLabel,(_useNZS?"NZS":""),crvRecoPulseCollection)) return; //find pedestals and time offsets from first event //need to assume that this is only used for calibration runs where both values stay constant over the entire run diff --git a/CRVReco/src/CrvDQMcollector_module.cc b/CRVReco/src/CrvDQMcollector_module.cc index c6edfc8bad..f43e778b6b 100644 --- a/CRVReco/src/CrvDQMcollector_module.cc +++ b/CRVReco/src/CrvDQMcollector_module.cc @@ -172,7 +172,6 @@ namespace mu2e using Comment=fhicl::Comment; fhicl::Atom useDQMcollector{Name("useDQMcollector"), Comment("fill DQM values, histograms, ...")}; fhicl::Atom crvDigiModuleLabel{Name("crvDigiModuleLabel"), Comment("label of CrvDigi module")}; - fhicl::Atom crvDigiModuleLabelNZS{Name("crvDigiModuleLabelNZS"), Comment("label of CrvDigi NZS module")}; //fhicl::Atom crvRecoPulsesModuleLabel{Name("crvRecoPulsesModuleLabel"), Comment("label of CrvReco module")}; fhicl::Atom crvCoincidenceClusterFinderModuleLabel{Name("crvCoincidenceClusterFinderModuleLabel"), Comment("label of CoincidenceClusterFinder module")}; fhicl::Atom crvDaqErrorModuleLabel{Name("crvDaqErrorModuleLabel"), Comment("label of module that found the CRV-DAQ errors")}; @@ -189,9 +188,6 @@ namespace mu2e fhicl::Atom histDigisBins{Name("histDigisBins"), Comment("number of bins for digis per channel and event histograms"), 200}; fhicl::Atom histDigisStart{Name("histDigisStart"), Comment("range start for digis per channel and event histograms"), 0}; fhicl::Atom histDigisEnd{Name("histDigisEnd"), Comment("range end for digis per channel and event histograms"), 0.1}; - fhicl::Atom histDigisNZSBins{Name("histDigisNZSBins"), Comment("number of bins for NZS digis per channel and event histograms"), 200}; - fhicl::Atom histDigisNZSStart{Name("histDigisNZSStart"), Comment("range start for NZS digis per channel and event histograms"), 0}; - fhicl::Atom histDigisNZSEnd{Name("histDigisNZSEnd"), Comment("range end for NZS digis per channel and event histograms"), 0.1}; fhicl::Atom PEfitRangeStart{Name("PEfitRangeStart"), Comment("low end of the PE MPV fit range as fraction of peak"), 0.7}; fhicl::Atom PEfitRangeEnd{Name("PEfitRangeEnd"), Comment("high end of the PE MPV fit range as fraction of peak"), 2.0}; fhicl::Atom PEstart{Name("PEstart"), Comment("lowest PE for fit"), 15.0}; @@ -207,7 +203,6 @@ namespace mu2e private: bool _useDQMcollector; std::string _crvDigiModuleLabel; - std::string _crvDigiModuleLabelNZS; //std::string _crvRecoPulsesModuleLabel; std::string _crvCoincidenceClusterFinderModuleLabel; std::string _crvDaqErrorModuleLabel; @@ -224,9 +219,6 @@ namespace mu2e int _histDigisBins; double _histDigisStart; double _histDigisEnd; - int _histDigisNZSBins; - double _histDigisNZSStart; - double _histDigisNZSEnd; double _PEfitRangeStart; double _PEfitRangeEnd; double _PEstart; @@ -238,22 +230,19 @@ namespace mu2e std::pair _lastRunSubrun; std::vector _nCoincidences; //for each sector - std::vector _nDigis, _nDigisNZS; //for each channel - std::vector _nDigisROC, _nDigisROCNZS; //for each channel + std::vector _nDigis; //for each channel + std::vector _nDigisROC; //for each channel std::vector _histPEs; //for each channel std::vector _histPEsROC; //for each channel std::vector _notConnected; //for each channel std::vector _histDigisPerChannelAndEvent; - std::vector _histDigisPerChannelAndEventNZS; std::vector _histDigiRatesROC; - std::vector _histDigiRatesROCNZS; std::vector _histPEsMPV; std::vector _histPEsMPVROC; std::vector _histPedestals; std::vector _histCalibConstants; TH2F* _hist2DDigiRatesROC; - TH2F* _hist2DDigiRatesROCNZS; TH2F* _hist2DPEsMPVROC; TH1I* _histCoincidenceClusters; TTree* _treeMetaData; @@ -267,7 +256,6 @@ namespace mu2e art::EDAnalyzer(conf), _useDQMcollector(conf().useDQMcollector()), _crvDigiModuleLabel(conf().crvDigiModuleLabel()), - _crvDigiModuleLabelNZS(conf().crvDigiModuleLabelNZS()), //_crvRecoPulsesModuleLabel(conf().crvRecoPulsesModuleLabel()), _crvCoincidenceClusterFinderModuleLabel(conf().crvCoincidenceClusterFinderModuleLabel()), _crvDaqErrorModuleLabel(conf().crvDaqErrorModuleLabel()), @@ -283,9 +271,6 @@ namespace mu2e _histDigisBins(conf().histDigisBins()), _histDigisStart(conf().histDigisStart()), _histDigisEnd(conf().histDigisEnd()), - _histDigisNZSBins(conf().histDigisNZSBins()), - _histDigisNZSStart(conf().histDigisNZSStart()), - _histDigisNZSEnd(conf().histDigisNZSEnd()), _PEfitRangeStart(conf().PEfitRangeStart()), _PEfitRangeEnd(conf().PEfitRangeEnd()), _PEstart(conf().PEstart()), @@ -307,7 +292,6 @@ namespace mu2e int sectorNumber = CRS->getBar(barIndex).id().getShieldNumber(); _histDigisPerChannelAndEvent.at(sectorNumber)->Fill((float)(_nDigis.at(channel))/_totalEvents); - _histDigisPerChannelAndEventNZS.at(sectorNumber)->Fill((float)(_nDigisNZS.at(channel))/_totalEvents); float MPV=0; float FWHM=0; @@ -326,7 +310,6 @@ namespace mu2e size_t ROCchannel=(FEB-1)*CRVId::nChanPerFEB+FEBchannel; _histDigiRatesROC.at(ROC-1)->Fill(ROCchannel,(float)(_nDigisROC.at((ROC-1)*CRVId::nFEBPerROC*CRVId::nChanPerFEB+ROCchannel))/_totalEvents); - _histDigiRatesROCNZS.at(ROC-1)->Fill(ROCchannel,(float)(_nDigisROCNZS.at((ROC-1)*CRVId::nFEBPerROC*CRVId::nChanPerFEB+ROCchannel))/_totalEvents); float MPV=0; float FWHM=0; @@ -338,7 +321,6 @@ namespace mu2e size_t portIndex=(ROC-1)*CRVId::nFEBPerROC+FEB-1; _hist2DDigiRatesROC->Fill(FEBchannel,portIndex,(float)(_nDigisROC.at((ROC-1)*CRVId::nFEBPerROC*CRVId::nChanPerFEB+ROCchannel))/_totalEvents); - _hist2DDigiRatesROCNZS->Fill(FEBchannel,portIndex,(float)(_nDigisROCNZS.at((ROC-1)*CRVId::nFEBPerROC*CRVId::nChanPerFEB+ROCchannel))/_totalEvents); _hist2DPEsMPVROC->Fill(FEBchannel,portIndex,MPV); } } @@ -358,14 +340,10 @@ namespace mu2e _histPedestals.reserve(crvSectors.size()); _histCalibConstants.reserve(crvSectors.size()); _histDigisPerChannelAndEvent.reserve(crvSectors.size()); - _histDigisPerChannelAndEventNZS.reserve(crvSectors.size()); _histDigiRatesROC.reserve(CRVId::nROC); - _histDigiRatesROCNZS.reserve(CRVId::nROC); _nCoincidences.resize(crvSectors.size()); _nDigis.resize(crvCounters.size()*CRVId::nChanPerBar); - _nDigisNZS.resize(crvCounters.size()*CRVId::nChanPerBar); _nDigisROC.resize(CRVId::nROC*CRVId::nFEBPerROC*CRVId::nChanPerFEB); - _nDigisROCNZS.resize(CRVId::nROC*CRVId::nFEBPerROC*CRVId::nChanPerFEB); _histPEs.reserve(crvCounters.size()*CRVId::nChanPerBar); _histPEsROC.reserve(CRVId::nROC*CRVId::nFEBPerROC*CRVId::nChanPerFEB); _notConnected.resize(crvCounters.size()*CRVId::nChanPerBar); @@ -395,9 +373,6 @@ namespace mu2e _histDigisPerChannelAndEvent.emplace_back(tfs->make(Form("crvDigisPerChannelAndEvent_CRVsector%s",crvSectors.at(i).name("").c_str()), Form("crvDigisPerChannelAndEvent_CRVsector%s",crvSectors.at(i).name("").c_str()), _histDigisBins,_histDigisStart,_histDigisEnd)); - _histDigisPerChannelAndEventNZS.emplace_back(tfs->make(Form("crvDigisPerChannelAndEventNZS_CRVsector%s",crvSectors.at(i).name("").c_str()), - Form("crvDigisPerChannelAndEventNZS_CRVsector%s",crvSectors.at(i).name("").c_str()), - _histDigisNZSBins,_histDigisNZSStart,_histDigisNZSEnd)); } for(size_t ROC=1; ROC<=CRVId::nROC; ++ROC) { @@ -407,13 +382,9 @@ namespace mu2e _histDigiRatesROC.emplace_back(tfs->make(Form("crvDigiRates_ROC%zu",ROC), Form("crvDigiRates_ROC%zu",ROC), CRVId::nFEBPerROC*CRVId::nChanPerFEB,0,CRVId::nFEBPerROC*CRVId::nChanPerFEB)); - _histDigiRatesROCNZS.emplace_back(tfs->make(Form("crvDigiRatesNZS_ROC%zu",ROC), - Form("crvDigiRatesNZS_ROC%zu",ROC), - CRVId::nFEBPerROC*CRVId::nChanPerFEB,0,CRVId::nFEBPerROC*CRVId::nChanPerFEB)); } _hist2DPEsMPVROC=tfs->make("crvPEsMPV","crvPEsMPV:FEBchannel:FEB", CRVId::nChanPerFEB,0,CRVId::nChanPerFEB, CRVId::nROC*CRVId::nFEBPerROC,0,CRVId::nROC*CRVId::nFEBPerROC); _hist2DDigiRatesROC=tfs->make("crvDigiRates","crvDigiRates:FEBchannel:FEB", CRVId::nChanPerFEB,0,CRVId::nChanPerFEB, CRVId::nROC*CRVId::nFEBPerROC,0,CRVId::nROC*CRVId::nFEBPerROC); - _hist2DDigiRatesROCNZS=tfs->make("crvDigiRatesNZS","crvDigiRatesNZS:FEBchannel:FEB", CRVId::nChanPerFEB,0,CRVId::nChanPerFEB, CRVId::nROC*CRVId::nFEBPerROC,0,CRVId::nROC*CRVId::nFEBPerROC); _histCoincidenceClusters=tfs->make("crvCoincidencesClusters","crvCoincidenceClusters:sectorType",10,0,10); _treeMetaData=tfs->make("crvMetaData","crvMetaData"); @@ -433,13 +404,11 @@ namespace mu2e GeomHandle CRS; art::Handle crvDigiCollection; - art::Handle crvDigiCollectionNZS; //art::Handle crvRecoPulseCollection; art::Handle crvCoincidenceClusterCollection; art::Handle crvDaqErrorCollection; event.getByLabel(_crvDigiModuleLabel,"",crvDigiCollection); - event.getByLabel(_crvDigiModuleLabelNZS,"NZS",crvDigiCollectionNZS); //event.getByLabel(_crvRecoPulsesModuleLabel,"",crvRecoPulseCollection); event.getByLabel(_crvCoincidenceClusterFinderModuleLabel,"",crvCoincidenceClusterCollection); event.getByLabel(_crvDaqErrorModuleLabel,"",crvDaqErrorCollection); @@ -463,21 +432,6 @@ namespace mu2e ++_nDigisROC.at(channelOnline); } - for(size_t i=0; isize(); ++i) - { - const CrvDigi &digi = crvDigiCollectionNZS->at(i); - int barIndex = digi.GetScintillatorBarIndex().asUint(); - int SiPM = digi.GetSiPMNumber(); - size_t channel = barIndex*CRVId::nChanPerBar + SiPM; - ++_nDigisNZS.at(channel); - - int ROC=digi.GetROC(); - int ROCport=digi.GetFEB(); - int FEBchannel=digi.GetFEBchannel(); - size_t channelOnline = (ROC-1)*CRVId::nFEBPerROC*CRVId::nChanPerFEB + (ROCport-1)*CRVId::nChanPerFEB + FEBchannel; - ++_nDigisROCNZS.at(channelOnline); - } - static bool first=true; if(first) { diff --git a/CRVReco/src/CrvPedestalFinder_module.cc b/CRVReco/src/CrvPedestalFinder_module.cc index 6783f12ad3..1b6b06e3c2 100644 --- a/CRVReco/src/CrvPedestalFinder_module.cc +++ b/CRVReco/src/CrvPedestalFinder_module.cc @@ -39,6 +39,7 @@ namespace mu2e using Name=fhicl::Name; using Comment=fhicl::Comment; fhicl::Atom crvDigiModuleLabel{Name("crvDigiModuleLabel"), Comment("module label for CrvDigis")}; + fhicl::Atom useNZS{Name("useNZS"), Comment("use NZS data"), false}; fhicl::Atom firstSampleOnly{Name("firstSampleOnly"), Comment("only use first sample of a hit")}; fhicl::Atom histBins{Name("histBins"), Comment("pedestal histogram bins"), 201}; fhicl::Atom histMin{Name("histMin"), Comment("start range of pedestal histogram"), -50.5}; @@ -56,6 +57,7 @@ namespace mu2e private: std::string _crvDigiModuleLabel; + bool _useNZS; bool _firstSampleOnly; int _histBins; double _histMin, _histMax; @@ -72,6 +74,7 @@ namespace mu2e CrvPedestalFinder::CrvPedestalFinder(const Parameters& conf) : art::EDAnalyzer(conf), _crvDigiModuleLabel(conf().crvDigiModuleLabel()), + _useNZS(conf().useNZS()), _firstSampleOnly(conf().firstSampleOnly()), _histBins(conf().histBins()), _histMin(conf().histMin()), @@ -166,7 +169,7 @@ namespace mu2e void CrvPedestalFinder::analyze(const art::Event& event) { art::Handle crvDigiCollection; - if(!event.getByLabel(_crvDigiModuleLabel,"NZS",crvDigiCollection)) return; + if(!event.getByLabel(_crvDigiModuleLabel,(_useNZS?"NZS":""),crvDigiCollection)) return; //find time offsets from first event //need to assume that this is only used for calibration runs where the time offsets stay constant over the entire run diff --git a/DAQ/src/CrvDigisFromArtdaqFragmentsFEBII_module.cc b/DAQ/src/CrvDigisFromArtdaqFragmentsFEBII_module.cc index 520cd05557..8b4738d312 100644 --- a/DAQ/src/CrvDigisFromArtdaqFragmentsFEBII_module.cc +++ b/DAQ/src/CrvDigisFromArtdaqFragmentsFEBII_module.cc @@ -34,9 +34,8 @@ namespace mu2e struct Config { fhicl::Atom diagLevel{fhicl::Name("diagLevel"), fhicl::Comment("diagnostic Level")}; - //for currently wrongly encoded subevent headers - fhicl::Atom produceZS{fhicl::Name("produceZS"), fhicl::Comment("produce NZS digi collection"), true}; - fhicl::Atom produceNZS{fhicl::Name("produceNZS"), fhicl::Comment("produce NZS digi collection"), true}; + fhicl::Atom produceZS{fhicl::Name("produceZS"), fhicl::Comment("produce ZS digi collection"), true}; + fhicl::Atom produceNZS{fhicl::Name("produceNZS"), fhicl::Comment("produce NZS digi collection"), false}; }; explicit CrvDigisFromArtdaqFragmentsFEBII(const art::EDProducer::Table& config); From ee3796e6febd5e012f47577088d03b0f011a208f Mon Sep 17 00:00:00 2001 From: ehrlich-uva Date: Thu, 12 Mar 2026 23:12:23 -0500 Subject: [PATCH 02/54] updated CRV prologs --- CRVReco/fcl/prolog_v11.fcl | 1 - CRVReco/fcl/prolog_v12.fcl | 1 - 2 files changed, 2 deletions(-) diff --git a/CRVReco/fcl/prolog_v11.fcl b/CRVReco/fcl/prolog_v11.fcl index 6a45ace931..a543f2288c 100644 --- a/CRVReco/fcl/prolog_v11.fcl +++ b/CRVReco/fcl/prolog_v11.fcl @@ -20,7 +20,6 @@ BEGIN_PROLOG module_type : CrvDQMcollector useDQMcollector : true crvDigiModuleLabel : "CrvDigi" - crvDigiModuleLabelNZS : "CrvDigi" #crvRecoPulsesModuleLabel : "CrvRecoPulses" crvCoincidenceClusterFinderModuleLabel : "CrvCoincidenceClusterFinder" crvDaqErrorModuleLabel : "CrvDigi" diff --git a/CRVReco/fcl/prolog_v12.fcl b/CRVReco/fcl/prolog_v12.fcl index fd83b2f093..a668e2f20a 100644 --- a/CRVReco/fcl/prolog_v12.fcl +++ b/CRVReco/fcl/prolog_v12.fcl @@ -20,7 +20,6 @@ BEGIN_PROLOG module_type : CrvDQMcollector useDQMcollector : true crvDigiModuleLabel : "CrvDigi" - crvDigiModuleLabelNZS : "CrvDigi" #crvRecoPulsesModuleLabel : "CrvRecoPulses" crvCoincidenceClusterFinderModuleLabel : "CrvCoincidenceClusterFinder" crvDaqErrorModuleLabel : "CrvDigi" From d31a75fd5c56b27481bf01417761def85327a91d Mon Sep 17 00:00:00 2001 From: Namitha Chithirasreemadam Date: Fri, 13 Mar 2026 16:07:40 -0500 Subject: [PATCH 03/54] some dbscluster updates --- TrkHitReco/fcl/prolog.fcl | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/TrkHitReco/fcl/prolog.fcl b/TrkHitReco/fcl/prolog.fcl index 4b175156ec..623155c00d 100644 --- a/TrkHitReco/fcl/prolog.fcl +++ b/TrkHitReco/fcl/prolog.fcl @@ -8,15 +8,15 @@ TrkHitReco :{ # First, configure the clusters DBSClusterer : { - DBSminExpand : 2 - DeltaTime : 15 - DeltaZ : 800 + DBSminExpand : 1 + DeltaTime : 30 + DeltaZ : 200 DeltaXY : 50 MinClusterHits : 1 TestFlag : false BackgroundMask : [] SignalMask : ["TimeSelection", "EnergySelection", "RadiusSelection"] - KerasWeights : "" + KerasWeights : "Offline/TrkHitReco/data/TrainBkgDiag.dat" } TNTClusterer : { @@ -152,7 +152,7 @@ TrkHitReco : { # Background hit flagging FlagBkgHits : { module_type : FlagBkgHits - ComboHitCollection : "makeSTH" + ComboHitCollection : "makePH" ClusterAlgorithm : 3 TNTClustering : {@table::TrkHitReco.TNTClusterer} Chi2Clustering : {@table::TrkHitReco.Chi2Clusterer} @@ -162,7 +162,9 @@ TrkHitReco : { BackgroundMask : ["Background"] OutputLevel : "uniquepanel" SaveBkgClusters : true - KerasQuality : 0.5 + CountProtons : true + MinEdep : 0.003 + KerasQuality : 0.8 DebugLevel : 0 } } From 2c0da0b906172d9e802e9feb5fb65720f34208ca Mon Sep 17 00:00:00 2001 From: Namitha Chithirasreemadam Date: Fri, 13 Mar 2026 16:08:39 -0500 Subject: [PATCH 04/54] Update DBSClusterer.cc --- TrkHitReco/src/DBSClusterer.cc | 209 ++++++++++++++++++++++----------- 1 file changed, 139 insertions(+), 70 deletions(-) diff --git a/TrkHitReco/src/DBSClusterer.cc b/TrkHitReco/src/DBSClusterer.cc index b6ab681064..fca298449a 100644 --- a/TrkHitReco/src/DBSClusterer.cc +++ b/TrkHitReco/src/DBSClusterer.cc @@ -1,6 +1,7 @@ #include "Offline/TrkHitReco/inc/DBSClusterer.hh" #include "Offline/ConfigTools/inc/ConfigFileLookupPolicy.hh" +#include "TMath.h" #include #include #include @@ -19,12 +20,16 @@ namespace mu2e testflag_ (config.value().testflag()), kerasW_ (config.value().kerasWeights()), diag_ (config.value().diag()) - {} + { + } //--------------------------------------------------------------------------------------- void DBSClusterer::init() { //Add Classifier init here (see TNTClsuterer for example) + ConfigFileLookupPolicy configFile; + auto kerasWgtsFile = configFile(kerasW_); + sofiePtr_ = std::make_shared(kerasWgtsFile); } @@ -33,32 +38,34 @@ namespace mu2e { if (chcol.empty()) return; - std::vector idx; + std::vector idx; //list of combo hit IDs idx.reserve(chcol.size()); - for (size_t ich=0;ich inspect; - std::vector hitToCluster(idx.size(),unprocessedID); + //std::queue inspect; + std::vector inspect; + inspect.reserve(idx.size()); + std::vector hitToCluster(idx.size(),unprocessedID); //number of combohits used for clustering, cluster ID std::vector neighbors; - neighbors.reserve(32); - + neighbors.reserve(256); + clusters.reserve(std::max(16UL, idx.size()/10)); for (size_t i=0;i= DBSminExpand_){ + for (const auto& k : neighbors) { + if (hitToCluster[k] == unprocessedID || hitToCluster[k] == noiseID) + inspect.push_back(k); + } } } - - if (thisCluster.hits().size() < minClusterHits_) continue; - clusters.push_back(std::move(thisCluster)); - ++currentClusterID; - } - - /* - //Make noise hits into their own cluster if we need to - for (size_t i=0;i= minClusterHits_){ + clusters.push_back(std::move(thisCluster)); + ++currentClusterID; + } } - */ - //Calculate the cluster properties for (auto& cluster : clusters) calculateCluster(cluster, chcol); - if (diag_>1) dump(clusters); } @@ -115,37 +113,47 @@ namespace mu2e //--------------------------------------------------------------------------------------- // Find the neighbors of given a point - can use any suitable distance function - unsigned DBSClusterer::findNeighbors(unsigned ihit, const std::vector& idx, const ComboHitCollection& chcol, std::vector& neighbors) + int DBSClusterer::findNeighbors(unsigned ihit, const std::vector& idx, const ComboHitCollection& chcol, std::vector& neighbors) { - // Define number of neighbors as number of straw hits in the neighboring point. - // Commneted version is number of neighbor is 1 regardless of number of straw hits - - //unsigned nNeighbors(0); - unsigned nNeighbors(chcol[idx[ihit]].nStrawHits()-1); neighbors.clear(); - float time0 = chcol[idx[ihit]].correctedTime(); - float x0 = chcol[idx[ihit]].pos().x(); - float y0 = chcol[idx[ihit]].pos().y(); - float z0 = chcol[idx[ihit]].pos().z(); - - unsigned istart(ihit); + const auto& hit0 = chcol[idx[ihit]]; + float time0 = hit0.correctedTime(); + float x0 = hit0.pos().x(); + float y0 = hit0.pos().y(); + float z0 = hit0.pos().z(); + unsigned nNeighbors = hit0.nStrawHits()-1; + float minTime = time0 - deltaTime_; + auto it_start = std::lower_bound(idx.begin(), idx.end(), minTime, [&chcol](unsigned i, float val){ + return chcol[i].correctedTime() < val; + }); + size_t istart = std::distance(idx.begin(),it_start); + for (size_t j = istart; j < idx.size(); ++j){ + if (j == ihit) continue; + const auto& hitj = chcol[idx[j]]; + float dt = hitj.correctedTime() - time0; + if (dt > deltaTime_) break; + if (std::abs(hitj.pos().z() - z0) > deltaZ_) continue; + float dx = hitj.pos().x() - x0; + float dy = hitj.pos().y() - y0; + float distsq = (dx*dx) + (dy*dy); + if (distsq <= deltaXY2_){ + neighbors.emplace_back(j); + nNeighbors += hitj.nStrawHits(); + } + } + /*unsigned istart(ihit); while (istart>0 && time0 - chcol[idx[istart]].correctedTime() < deltaTime_) --istart; if (time0 - chcol[idx[istart]].correctedTime() > deltaTime_) ++istart; - for (size_t j=istart; j deltaTime_) break; - if (std::abs(chcol[idx[j]].pos().z()- z0) > deltaZ_) continue; - + if (chcol[idx[j]].correctedTime() - time0 > deltaTime_) break; // deltaTime = 15 + if (std::abs(chcol[idx[j]].pos().z()- z0) > deltaZ_) continue; //deltaZ = 800 float dist = (chcol[idx[j]].pos().x()-x0)*(chcol[idx[j]].pos().x()-x0) + (chcol[idx[j]].pos().y()-y0)*(chcol[idx[j]].pos().y()-y0); if (dist > deltaXY2_) continue; - neighbors.emplace_back(j); nNeighbors += chcol[idx[j]].nStrawHits(); - //++nNeighbors; - } - + }*/ return nNeighbors; } @@ -157,9 +165,6 @@ namespace mu2e float psep_x = hit.pos().x()-cluster.pos().x(); float psep_y = hit.pos().y()-cluster.pos().y(); return sqrt(psep_x*psep_x+psep_y*psep_y); - // alterntively, could use the chi2 distance - //return std::sqrt(cluster.points().dChi2(TwoDPoint(hit.pos(),hit.uDir(),hit.uVar(),hit.vVar()))) - // - std::sqrt(cluster.points().chisquared()); } @@ -168,50 +173,115 @@ namespace mu2e void DBSClusterer::calculateCluster(BkgCluster& cluster, const ComboHitCollection& chcol) { if (cluster.hits().empty()) {cluster.time(0.0f);cluster.pos(XYZVectorF(0.0f,0.0f,0.0f));return;} - if (cluster.hits().size()==1) { int idx = cluster.hits().at(0); cluster.time(chcol[idx].correctedTime()); + cluster.edep(chcol[idx].energyDep()); cluster.pos(XYZVectorF(chcol[idx].pos().x(),chcol[idx].pos().y(),chcol[idx].pos().z())); XYZVectorF hitpos(chcol[idx].pos().x(), chcol[idx].pos().y(), chcol[idx].pos().z()); cluster.addHitPosition(hitpos); return; } - - float sumWeight(0),crho(0),cphi(0),ctime(0), cz(0); + float sumWeight(0),crho(0),ctime(0), cz(0), cedep(0), cphi(0); for (auto& idx : cluster.hits()) { float weight = chcol[idx].nStrawHits(); float dt = chcol[idx].correctedTime(); float dr = sqrtf(chcol[idx].pos().perp2()); float dz = chcol[idx].pos().z(); + float edep = chcol[idx].energyDep(); XYZVectorF hitpos(chcol[idx].pos().x(), chcol[idx].pos().y(), chcol[idx].pos().z()); cluster.addHitPosition(hitpos); float dp = chcol[idx].phi(); - if (dp > M_PI) dp -= 2*M_PI; - if (dp < -M_PI) dp += 2*M_PI; - ctime += dt*weight; crho += dr*weight; cphi += dp*weight; cz += dz*weight; + cedep += edep*weight; sumWeight += weight; } - - crho /= sumWeight; cphi /= sumWeight; + crho /= sumWeight; ctime /= sumWeight; cz /= sumWeight; + cedep /= sumWeight; cluster.time(ctime); cluster.pos(XYZVectorF(crho*cos(cphi),crho*sin(cphi),cz)); + cluster.edep(cedep); } - //--------------------------------------------------------------------------------------- void DBSClusterer::classifyCluster(BkgCluster& cluster, const ComboHitCollection& chcol){ - //code logic to classify cluster with MVA + //code logic to classify cluster with MVA + // count hits and planes + std::array hitplanes{0}; + for (const auto& chit : cluster.hits()) { + const ComboHit& ch = chcol[chit]; + hitplanes[ch.strawId().plane()] += ch.nStrawHits(); + } - cluster.setKerasQ(-1.0); + unsigned npexp(0),np(0),nhits(0); + //std::vector hz; + //std::vector hphi; + //float phidiff(0.0); + int ipmin(0),ipmax(StrawId::_nplanes-1); + while (hitplanes[ipmin]==0 && ipmin0) --ipmax; + int fp(ipmin),lp(ipmin-1),pgap(0); + for (int ip = ipmin; ip <= ipmax; ++ip) { + npexp++; // should use TTracker to see if plane is physically present FIXME! + if (hitplanes[ip]> 0){ + ++np; + if(lp > 0 && ip - lp -1 > pgap)pgap = ip - lp -1; + if(ip > lp)lp = ip; + if(ip < fp)fp = ip; + lp = ip; + } + nhits += hitplanes[ip]; + } + if(nhits < 1 || np < 2) return; + // find averages + double sqrSumDeltaTime(0.),sqrSumDeltaX(0.), sqrSumDeltaY(0.), sqrSumDeltaPhi(0.); + float zmin = std::numeric_limits::max(); + float zmax = -std::numeric_limits::max(); + float phimin = std::numeric_limits::max(); + float phimax = -std::numeric_limits::max(); + float phiclust = cluster.pos().phi(); + if(phiclust > M_PI) phiclust -=2*M_PI; + if(phiclust < -M_PI) phiclust +=2*M_PI; + unsigned nchits = cluster.hits().size(); + for (const auto& chit : cluster.hits()) { + const auto& hit = chcol[chit]; + float hZ = hit.pos().Z(); + if (hZ < zmin) zmin = hZ; + if (hZ > zmax) zmax = hZ; + float dx = hit.pos().x() - cluster.pos().x(); + float dy = hit.pos().y() - cluster.pos().y(); + float dt = hit.time() - cluster.time(); + sqrSumDeltaX += dx*dx; + sqrSumDeltaY += dy*dy; + sqrSumDeltaTime += dt*dt; + float phihit = hit.phi(); + float dphi_rel = phihit- phiclust; + if(dphi_rel > M_PI) dphi_rel -= 2*M_PI; + if(dphi_rel < -M_PI) dphi_rel += 2*M_PI; + if(dphi_rel < phimin) phimin = dphi_rel; + if(dphi_rel > phimax) phimax = dphi_rel; + sqrSumDeltaPhi += dphi_rel*dphi_rel; + } + // fill mva input variables + std::array kerasvars; + kerasvars[0] = cluster.pos().Rho(); // cluster rho, cyl coor + kerasvars[1] = zmax - zmin; //zdiff; //fp;// first plane hit + kerasvars[2] = phimax - phimin; //phidiff; + kerasvars[3] = nhits; + kerasvars[4] = std::sqrt((sqrSumDeltaX+sqrSumDeltaY)/nchits); // RMS of cluster rho + kerasvars[5] = std::sqrt(sqrSumDeltaTime/nchits);// RMS of cluster time + kerasvars[6] = std::sqrt(sqrSumDeltaPhi/nchits);// RMS of cluster phi + std::vector kerasout = sofiePtr_->infer(kerasvars.data()); + cluster.setKerasQ(kerasout[0]); + if (diag_>0)std::cout << "kerasout = " << kerasout[0] << std::endl; + //cluster.setKerasQ(-1.0); } @@ -223,7 +293,6 @@ namespace mu2e { int iclu(0); for (auto& cluster: clusters) { - std::cout<<"Cluster "< Date: Fri, 13 Mar 2026 16:09:18 -0500 Subject: [PATCH 05/54] Update FlagBkgHits_module.cc --- TrkHitReco/src/FlagBkgHits_module.cc | 78 ++++++++++++++++++---------- 1 file changed, 51 insertions(+), 27 deletions(-) diff --git a/TrkHitReco/src/FlagBkgHits_module.cc b/TrkHitReco/src/FlagBkgHits_module.cc index 8a07ae2945..97340e924b 100644 --- a/TrkHitReco/src/FlagBkgHits_module.cc +++ b/TrkHitReco/src/FlagBkgHits_module.cc @@ -7,6 +7,7 @@ #include "fhiclcpp/types/Sequence.h" #include "fhiclcpp/types/OptionalTable.h" +#include "Offline/ConditionsService/inc/ConditionsHandle.hh" #include "Offline/ConfigTools/inc/ConfigFileLookupPolicy.hh" #include "Offline/MCDataProducts/inc/StrawDigiMC.hh" #include "Offline/DataProducts/inc/StrawIdMask.hh" @@ -39,6 +40,8 @@ namespace mu2e fhicl::Atom filterHits{ Name("FilterHits"), Comment("Produce filtered ComboHit collection") }; fhicl::Sequence backgroundMask{ Name("BackgroundMask"), Comment("Bkg hit selection mask") }; fhicl::Atom saveBkgClusters{ Name("SaveBkgClusters"), Comment("Save bkg clusters") }; + fhicl::Atom countProtons{ Name("CountProtons"), Comment("Count protons") }; + fhicl::Atom minEdep{ Name("MinEdep"), Comment("Min Edep") }; fhicl::Atom outputLevel{ Name("OutputLevel"), Comment("Level of the output ComboHitCollection") }; fhicl::OptionalTable TNTClustering{ Name("TNTClustering"), Comment("TNT Clusterer config") }; fhicl::OptionalTable Chi2Clustering{ Name("Chi2Clustering"), Comment("Chi2 Clusterer config") }; @@ -56,6 +59,8 @@ namespace mu2e const art::ProductToken chtoken_; bool filter_; bool savebkg_; + bool countprotons_; + float minedep_; StrawHitFlag bkgmsk_; StrawIdMask::Level level_; std::unique_ptr clusterer_; @@ -64,8 +69,9 @@ namespace mu2e float kerasQ_; int iev_; - void classifyCluster(BkgClusterCollection& bkgccol, StrawHitFlagCollection& chfcol, const ComboHitCollection& chcol) const; - int findClusterIdx( BkgClusterCollection& bkgccol, unsigned ich) const; + void classifyCluster(BkgClusterCollection& bkgccol, StrawHitFlagCollection& chfcol, const ComboHitCollection& chcol, std::vector hitToClusterMap) const; + void countProton(BkgClusterCollection& bkgccol, StrawHitFlagCollection& chfcol, const ComboHitCollection& chcol) const; + //int findClusterIdx( BkgClusterCollection& bkgccol, unsigned ich) const; }; @@ -75,6 +81,8 @@ namespace mu2e chtoken_{ consumes(config().comboHitCollection()) }, filter_( config().filterHits()), savebkg_( config().saveBkgClusters()), + countprotons_(config().countProtons()), + minedep_( config().minEdep()), bkgmsk_( config().backgroundMask()), debug_( config().debugLevel()), kerasQ_( config().kerasQuality()), @@ -142,9 +150,6 @@ namespace mu2e auto chH = event.getValidHandle(chtoken_); const ComboHitCollection& chcol = *chH.product(); unsigned nch = chcol.size(); - - // the primary output is either a deep copy of selected inputs or a flag collection on those - // intermediate results: keep these on the heap unless requested for diagnostics later BkgClusterCollection bkgccol; BkgClusterHitCollection bkghitcol; bkgccol.reserve(nch/2); @@ -152,21 +157,15 @@ namespace mu2e // find clusters, sort is needed for recovery algorithm. bkgccolFast has hits that are autmoatically marked as bkg. clusterer_->findClusters(bkgccol, chcol); - std::sort(bkgccol.begin(),bkgccol.end(),[](const BkgCluster& c1,const BkgCluster& c2) {return c1.time() < c2.time();}); // classify clusters StrawHitFlagCollection chfcol(nch); - classifyCluster(bkgccol, chfcol, chcol); + std::vector hitToClusterMap(nch, -1); + classifyCluster(bkgccol, chfcol, chcol, hitToClusterMap); - //produce BkgClusterHit info collection - if (savebkg_) { - for (size_t ich=0;ich < nch; ++ich) { - const ComboHit& ch = chcol[ich]; - //StrawHitFlag const& flagbkg = chfcol[ich]; - int icl = findClusterIdx(bkgccol,ich); - if (icl > -1) bkghitcol.emplace_back(BkgClusterHit(clusterer_->distance(bkgccol[icl],ch),ch.flag())); - else bkghitcol.emplace_back(BkgClusterHit(999.0,ch.flag())); - } + if(countprotons_){ + //Call the appropriate function to check if a cluster has enough hits with high edep such that it can be classified as background if its not done already + countProton(bkgccol, chfcol, chcol); } // produce output ComboHit collection, either filtered or not @@ -179,7 +178,6 @@ namespace mu2e chcol_out->reserve(nch); for(size_t ich=0;ich < nch; ++ich) { StrawHitFlag const& flag = chfcol[ich]; - //std::cout<<"Before Flag = "<push_back(chcol[ich]); @@ -212,8 +210,15 @@ namespace mu2e throw cet::exception("RECO")<< "FlagBkgHits: inconsistent ComboHit output" << std::endl; } } + //produce BkgClusterHit info collection + if (savebkg_) { + for (size_t ich=0;ich < nch; ++ich) { + int icl = hitToClusterMap[ich]; //findClusterIdx(bkgccol,ich); + if (icl > -1) bkghitcol.emplace_back(BkgClusterHit(clusterer_->distance(bkgccol[icl],chcol_out->at(ich)),chcol_out->at(ich).flag())); + else bkghitcol.emplace_back(BkgClusterHit(999.0,chcol_out->at(ich).flag())); + } + } event.put(std::move(chcol_out)); - //produce background collection if (savebkg_) { event.put(std::make_unique(bkghitcol)); @@ -226,29 +231,48 @@ namespace mu2e //------------------------------------------------------------------------------------------ - void FlagBkgHits::classifyCluster(BkgClusterCollection& bkgccol, StrawHitFlagCollection& chfcol, const ComboHitCollection& chcol) const - { - for (auto& cluster : bkgccol) { + void FlagBkgHits::classifyCluster(BkgClusterCollection& bkgccol, StrawHitFlagCollection& chfcol, const ComboHitCollection& chcol, std::vector hitToClusterMap) const + { for (size_t icl =0; icl < bkgccol.size(); ++icl) { + auto& cluster = bkgccol[icl]; clusterer_->classifyCluster(cluster,chcol); StrawHitFlag flag(StrawHitFlag::bkgclust); if (cluster.getKerasQ()> kerasQ_) { flag.merge(StrawHitFlag(StrawHitFlag::bkg)); cluster._flag.merge(BkgClusterFlag::bkg); } - - for (const auto& chit : cluster.hits()) + //if(cluster.hits().size() < 3 and cluster.getKerasQ() > kerasQ_) + // std::cout<<"Keras Quality = "< minedep_) + chfcol[hitIdx].merge(bkgFlag); + } + } } } //---------------------------------------------------------------------------------- - int FlagBkgHits::findClusterIdx(BkgClusterCollection& bkgccol, unsigned ich) const - { - for (size_t icl=0;icl < bkgccol.size(); ++icl) + /*int FlagBkgHits::findClusterIdx(BkgClusterCollection& bkgccol, unsigned ich) const + { for (size_t icl=0;icl < bkgccol.size(); ++icl) if (std::find(bkgccol[icl].hits().begin(),bkgccol[icl].hits().end(),ich) != bkgccol[icl].hits().end()) return icl; return -1; - } + }*/ } From dd1e653fce0712de0446c34331e96700ab01f38a Mon Sep 17 00:00:00 2001 From: Namitha Chithirasreemadam Date: Fri, 13 Mar 2026 16:18:41 -0500 Subject: [PATCH 06/54] Create TrainBkgDiag.dat --- TrkHitReco/data/TrainBkgDiag.dat | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 TrkHitReco/data/TrainBkgDiag.dat diff --git a/TrkHitReco/data/TrainBkgDiag.dat b/TrkHitReco/data/TrainBkgDiag.dat new file mode 100644 index 0000000000..03d7a0eb46 --- /dev/null +++ b/TrkHitReco/data/TrainBkgDiag.dat @@ -0,0 +1,16 @@ +tensor_dense3bias0 1 +1.1061151 +tensor_dense2bias0 16 +-1.35272253 -1.31999636 1.14140117 0.939562976 0.116985053 -0.88808018 -0.335062534 1.18198454 -1.20054877 1.10271263 -0.200722337 -0.416486353 0.527384698 0.791249275 -1.101843 0.100289196 +tensor_dense1bias0 16 +-0.00150133262 -1.57797992 0.115556158 -0.147979096 1.62330234 -0.124686286 2.69236898 1.23222017 0.737626374 -0.0981126577 -0.8841362 -1.37198114 -1.46882248 2.22938967 -1.18442774 -0.236208364 +tensor_dense1kernel0 256 +0.243159562 0.0714567602 -0.080216974 0.208055347 -0.25774911 0.198903292 0.243670076 -0.12711522 -0.166630089 0.0516824126 -0.380930424 0.0607391 0.0829271972 0.0469640195 -0.389178038 -0.356831521 0.306171149 -0.488602191 -0.132032409 -0.26209265 -0.454402864 -0.151838675 0.104748823 -0.0135065243 -0.282781512 0.272791654 -0.18864505 0.209084824 -0.131944358 -0.232045665 -0.268163294 -0.918595433 0.0385207832 0.247621447 -0.148686767 -0.0115563869 -0.315446407 -0.413907826 -0.378389418 -0.303340793 0.247657865 -0.416924238 -0.391373605 0.170925528 -0.199905843 0.39126274 -0.268277556 0.12755999 -0.205139905 -0.255357176 0.0768687278 -0.0449835025 0.106293865 -0.379708827 0.364605308 0.269318461 0.0412242636 -0.49566555 0.307767183 -0.297656 0.0118763559 0.163892865 -0.0767403021 0.120269202 0.170202225 -0.0235010535 0.280616105 0.160104915 -0.0561673716 -0.0702235624 0.343645692 0.266805023 -0.170594037 -0.380386114 -0.526082456 -0.290870517 0.0197053272 0.331639469 0.0391771831 -0.393676162 -0.251723677 0.181402907 -0.403666317 -0.410089821 0.131796718 -0.0241550636 -0.213556767 -0.21429202 -0.0624150485 -0.17529799 0.438971519 0.298992962 0.181828797 0.121058933 -0.245263502 0.00647335639 -0.0874612927 -0.222747937 0.129724845 0.119875856 -0.674068034 0.171946138 -0.195395917 -0.425393462 -1.05629539 0.274526447 -0.387159824 0.290864199 -0.0664694458 -0.479717344 0.0603267998 0.0308877248 -0.039799273 -0.245008498 0.179381609 0.00119154318 -1.13820219 -0.390471846 0.186197937 -0.378035307 0.0442107171 -0.188274816 0.087256074 -0.250126839 -0.129438102 -0.0705846027 -0.0137079479 -0.0078503415 -0.00436278759 0.20714809 -0.307882935 -0.0208568275 -0.106387295 0.173951149 0.068913281 -0.060652364 -0.73586148 0.269273967 0.14360401 -0.0212960672 -0.11930865 -0.334060699 -0.224627107 -0.351210356 -0.331471026 0.0747899339 0.0459100939 -0.376906276 -0.185223401 -0.270593822 -0.185129225 0.0487483256 0.139433578 0.0480346046 -0.194651291 0.018200852 0.0445303544 -2.78296828 0.301045507 -0.218054891 -0.331534147 -0.0671842098 0.0303247999 -0.336480886 -0.0152937658 -0.045100987 -0.262513995 -0.119998343 -0.108578257 -0.459228516 0.19291307 -0.0203023832 -0.256647617 -0.375826687 -0.32551378 -0.330898434 -0.399699986 0.539833128 -0.117308103 -0.0512819812 -0.415894508 0.17580606 -0.545492172 0.328175128 0.350368589 0.288497299 -0.0951490253 0.305034906 -0.0219154023 0.145368174 0.336695343 -0.107650235 -0.135102034 0.0148087982 -0.200455204 0.23156026 0.240544423 0.266493469 -0.141665936 -0.506044269 0.194804937 0.023247093 -0.200866833 0.287751794 0.553931773 0.0120684821 0.228633761 -0.237064838 0.209019393 -0.147713795 -0.0630288944 -0.172865778 0.317260742 0.380649716 0.432432383 -0.147642553 -0.123165935 -0.38904652 -0.274797916 -0.10262277 -0.342534006 -0.0632886887 -0.000141360681 -0.126621693 -0.382925093 -0.183614284 0.0915751681 -0.50557965 0.303455114 -0.0526407026 -0.0859406069 0.428580433 0.349972606 -0.230374426 -0.373038262 -0.351871818 0.751333952 -0.402319938 0.367592841 -0.782221317 0.183897182 -0.483849347 0.244804293 0.172708422 -0.362567723 -0.264123976 -0.356024206 0.210106999 -0.343621522 0.0416194238 -0.425654233 -1.31006324 0.0408483483 -0.0532523617 -0.0217035357 0.184973031 +tensor_densebias0 16 +0 1.20953941 0 2.50472116 1.03753054 -1.65072548 -2.55268812 0.0519317053 -2.47357988 -1.38108349 -1.19304907 -0.455643922 0.225448772 0.013242716 0.603880644 1.49160171 +tensor_dense3kernel0 16 +0.214371562 -0.187934428 0.055483669 0.135539606 0.179028928 0.15166083 -0.113397844 0.300260872 -0.262370825 0.260812789 -0.299958557 0.260300815 0.226120949 0.204630554 -0.325419873 -0.0792582929 +tensor_dense2kernel0 256 +0.0146386623 -0.196466148 -0.0904868618 -0.346048176 -0.0188658535 -0.00085863471 0.0213336647 0.178578511 0.399141014 0.273297548 0.0364105999 -0.0358523726 0.121860012 0.0658769906 0.0949836373 0.106977671 0.15885511 -0.743221879 0.327389956 -0.178672925 0.255849689 0.1426 -0.17089203 0.285215616 -0.143518403 0.0686523691 -0.044432424 -0.397049725 0.116338171 -0.141107053 0.241425857 -0.213015005 0.45407176 -0.216967672 -0.381388009 0.236287013 0.0562613569 0.356525928 -0.371352583 0.0649330094 -0.147047028 -0.201767236 -0.255323112 0.210963175 -0.338538617 -0.106974185 -0.0508271717 -0.784401 0.135242328 -0.279643357 -0.409877896 0.356040537 -0.302625209 0.133547902 0.0127500296 -0.227934599 -0.356407732 -0.231703624 0.0602846444 -0.276302457 0.136834279 0.40329811 0.14367187 0.265973181 -0.366716176 0.474055678 0.408907801 0.380414337 0.875630379 -0.473994642 -0.0176631454 -0.234412 0.276955724 0.419416726 0.357941657 -0.0160934683 -0.0430114642 0.455279022 -0.213722661 0.0118471114 -0.275849134 0.393676877 0.0475826934 0.15927425 0.0699533522 -0.246236861 0.319805831 -0.358050972 -0.411411077 0.0876989067 0.114524156 0.124515444 0.251176745 -0.0634872317 -0.132965669 -0.045910269 0.276942074 0.0757218227 -0.242524207 -0.305165023 0.210786119 0.41948089 -0.338331312 0.237734154 0.0265606064 0.035031829 -0.296538204 -0.173998177 0.0272080041 0.114761278 -0.172070354 0.257097304 -0.215944201 0.321822733 0.369096994 0.0660941899 0.216753349 -0.737044036 -0.131636307 0.00289905397 0.0668806359 -0.166455925 -0.582382321 -0.286722809 -0.207889289 -0.298587739 -0.275586486 -0.0661669821 0.0768368617 -0.283454359 0.255957931 0.245078385 0.54585582 -0.3687962 0.0982138813 -0.595997393 -0.142282233 0.396639377 0.213062271 0.464311928 -0.159848273 0.45265615 0.00961146131 -0.464902878 -0.36110568 0.245830789 -0.269800872 0.10150139 0.205717176 -0.233674452 -0.453053206 -0.242229834 -0.22839953 0.20421873 -0.263513923 0.0185365379 0.159069031 0.324421018 0.176302105 0.215170801 -0.119306147 -0.00398019562 0.240702987 0.28628397 -0.374449998 -0.214010254 -0.280457765 -0.0384275615 0.185873315 0.216834307 -0.456505448 -0.185313746 -0.703098774 0.127816081 0.371338785 -0.577786267 -0.144567102 0.355152488 -0.0231237151 -0.599500418 -0.264742404 0.31452477 -0.199754864 0.258855224 0.122016177 0.126505569 -0.283730924 -0.361450166 0.0562296845 -0.813034534 0.308810353 -0.0533967242 0.00486403145 -0.44221887 -0.283335716 -0.225692242 -0.284330249 -0.49316293 -0.394198656 0.327478588 -0.0721119642 -0.00273064943 -0.00591427227 -0.0110858828 -0.0449079759 -0.171635851 0.400992155 -0.215021566 0.534869671 0.12105415 -0.0271074381 -0.088426061 0.140797615 0.0207876824 0.125110626 -0.585522532 -0.0925570801 -0.225400746 -0.23501493 -0.0196844079 -0.176222518 0.222647324 0.362858057 -0.193222478 0.178513899 -0.122647852 0.117696367 -0.466098219 0.0317470729 0.273771286 -0.798804641 0.201146498 0.111225553 0.0469795801 0.14853178 -0.520217299 -0.162599221 -0.334704071 0.124276832 -0.656979322 0.127188921 0.198292911 0.180908635 -0.267182767 0.222215459 -1.05132115 -0.430675507 0.107435003 0.480796278 -0.314903378 -0.0546840727 -0.00173662929 0.0450897776 -0.377937555 -0.246138677 -0.161895141 +tensor_densekernel0 128 +-0.258800387 -0.052134905 -0.439573288 0.0679520518 0.0737527609 0.0640459135 0.0966889933 0.0763816684 -0.0716517493 -0.0445873588 -0.183179274 0.105212711 -0.294938564 -0.324238896 -0.0407643057 0.00596658513 -0.0710545778 0.267374098 -0.293940663 0.110193357 -0.0072996337 0.0953655839 0.0111348499 -0.691414416 0.14115566 0.447698712 0.179556176 -0.244231269 -1.06675291 -0.798760235 0.0949991643 -0.00866276305 0.447293639 1.85822582 -0.398199916 3.19369531 5.23558807 -3.86574149 -2.44201541 0.30169186 -3.75615191 2.1275034 -0.506950974 -2.08671808 -0.861361623 0.0268228631 4.00725174 -0.31640929 0.00695693493 0.605314314 0.321206093 1.53662753 0.808590174 -1.57848215 -1.72692013 0.755096197 -0.732610226 -0.852058411 0.0115101431 -1.87209547 0.0428152159 -0.461585194 0.392728984 0.0345170796 -0.170246124 0.0929367244 0.0961778164 -0.206449851 -0.443116784 0.416823477 -0.0757617205 0.108881615 -0.116592176 -0.116148643 0.282730609 -0.273708016 0.389273435 0.164110437 -1.26228213 0.536460221 0.454164624 -0.958742797 0.237351656 -0.519095242 -1.18891788 0.532503009 -0.850360274 -0.0398920737 0.268455595 -0.323100507 -0.121800996 0.0365591571 0.236760601 -0.155769631 1.01849365 -1.53708088 0.116594791 1.26981938 4.69684601e-05 4.41308212 7.02027369 -3.34244156 -4.93624306 1.12972867 -3.44403982 1.80356491 -0.273111999 -3.6920588 -0.329784453 0.121791005 4.39286661 0.736845553 -0.482009292 -0.949607849 -0.346067905 1.21724689 -0.308686763 -0.380800545 -0.905346394 0.639593303 -4.02839375 -5.08773613 -4.5325489 -0.0554563329 -0.525448442 0.274206102 1.42500854 0.481172502 From ea2d9aae1fdfd17be5709ccda7aafe13d3ce6c4e Mon Sep 17 00:00:00 2001 From: Namitha Chithirasreemadam Date: Fri, 13 Mar 2026 16:19:22 -0500 Subject: [PATCH 07/54] Update TrainBkgDiag.hxx --- TrkHitReco/inc/TrainBkgDiag.hxx | 210 ++++++++++++++++---------------- 1 file changed, 105 insertions(+), 105 deletions(-) diff --git a/TrkHitReco/inc/TrainBkgDiag.hxx b/TrkHitReco/inc/TrainBkgDiag.hxx index fbab209c59..1560427769 100644 --- a/TrkHitReco/inc/TrainBkgDiag.hxx +++ b/TrkHitReco/inc/TrainBkgDiag.hxx @@ -1,11 +1,11 @@ -//Code generated automatically by TMVA for Inference of Model file [TrainBkgDiag.h5] at [Thu Jan 18 16:48:55 2024] +//Code generated automatically by TMVA for Inference of Model file [TrainBkgDiag.h5] at [Mon Mar 9 22:45:42 2026] -#ifndef TMVA_SOFIE_TRAINBKGDIAG -#define TMVA_SOFIE_TRAINBKGDIAG +#ifndef ROOT_TMVA_SOFIE_TRAINBKGDIAG +#define ROOT_TMVA_SOFIE_TRAINBKGDIAG -#include -#include -#include +#include +#include +#include #include "TMVA/SOFIE_common.hxx" #include @@ -20,55 +20,55 @@ namespace BLAS{ struct Session { std::vector fTensor_dense3bias0 = std::vector(1); float * tensor_dense3bias0 = fTensor_dense3bias0.data(); -std::vector fTensor_dense3kernel0 = std::vector(18); -float * tensor_dense3kernel0 = fTensor_dense3kernel0.data(); -std::vector fTensor_dense2bias0 = std::vector(18); +std::vector fTensor_dense2bias0 = std::vector(16); float * tensor_dense2bias0 = fTensor_dense2bias0.data(); -std::vector fTensor_dense2kernel0 = std::vector(324); -float * tensor_dense2kernel0 = fTensor_dense2kernel0.data(); -std::vector fTensor_dense1bias0 = std::vector(18); +std::vector fTensor_dense1bias0 = std::vector(16); float * tensor_dense1bias0 = fTensor_dense1bias0.data(); -std::vector fTensor_dense1kernel0 = std::vector(324); +std::vector fTensor_dense1kernel0 = std::vector(256); float * tensor_dense1kernel0 = fTensor_dense1kernel0.data(); -std::vector fTensor_densebias0 = std::vector(18); +std::vector fTensor_densebias0 = std::vector(16); float * tensor_densebias0 = fTensor_densebias0.data(); -std::vector fTensor_densekernel0 = std::vector(162); +std::vector fTensor_dense3kernel0 = std::vector(16); +float * tensor_dense3kernel0 = fTensor_dense3kernel0.data(); +std::vector fTensor_dense2kernel0 = std::vector(256); +float * tensor_dense2kernel0 = fTensor_dense2kernel0.data(); +std::vector fTensor_densekernel0 = std::vector(128); float * tensor_densekernel0 = fTensor_densekernel0.data(); +std::vector fTensor_dense3Sigmoid0 = std::vector(1); +float * tensor_dense3Sigmoid0 = fTensor_dense3Sigmoid0.data(); std::vector fTensor_dense3Dense = std::vector(1); float * tensor_dense3Dense = fTensor_dense3Dense.data(); -std::vector fTensor_dense2Dense = std::vector(18); -float * tensor_dense2Dense = fTensor_dense2Dense.data(); +std::vector fTensor_denseDense = std::vector(16); +float * tensor_denseDense = fTensor_denseDense.data(); std::vector fTensor_dense3bias0bcast = std::vector(1); float * tensor_dense3bias0bcast = fTensor_dense3bias0bcast.data(); -std::vector fTensor_dense1Relu0 = std::vector(18); -float * tensor_dense1Relu0 = fTensor_dense1Relu0.data(); -std::vector fTensor_dense3Sigmoid0 = std::vector(1); -float * tensor_dense3Sigmoid0 = fTensor_dense3Sigmoid0.data(); -std::vector fTensor_dense2Relu0 = std::vector(18); -float * tensor_dense2Relu0 = fTensor_dense2Relu0.data(); -std::vector fTensor_dense1Dense = std::vector(18); +std::vector fTensor_dense2Dense = std::vector(16); +float * tensor_dense2Dense = fTensor_dense2Dense.data(); +std::vector fTensor_dense1Dense = std::vector(16); float * tensor_dense1Dense = fTensor_dense1Dense.data(); -std::vector fTensor_dense1bias0bcast = std::vector(18); -float * tensor_dense1bias0bcast = fTensor_dense1bias0bcast.data(); -std::vector fTensor_denseRelu0 = std::vector(18); +std::vector fTensor_denseRelu0 = std::vector(16); float * tensor_denseRelu0 = fTensor_denseRelu0.data(); -std::vector fTensor_denseDense = std::vector(18); -float * tensor_denseDense = fTensor_denseDense.data(); -std::vector fTensor_dense2bias0bcast = std::vector(18); -float * tensor_dense2bias0bcast = fTensor_dense2bias0bcast.data(); -std::vector fTensor_densebias0bcast = std::vector(18); +std::vector fTensor_dense1bias0bcast = std::vector(16); +float * tensor_dense1bias0bcast = fTensor_dense1bias0bcast.data(); +std::vector fTensor_densebias0bcast = std::vector(16); float * tensor_densebias0bcast = fTensor_densebias0bcast.data(); +std::vector fTensor_dense2bias0bcast = std::vector(16); +float * tensor_dense2bias0bcast = fTensor_dense2bias0bcast.data(); +std::vector fTensor_dense2Relu0 = std::vector(16); +float * tensor_dense2Relu0 = fTensor_dense2Relu0.data(); +std::vector fTensor_dense1Relu0 = std::vector(16); +float * tensor_dense1Relu0 = fTensor_dense1Relu0.data(); Session(std::string filename ="") { if (filename.empty()) filename = "TrainBkgDiag.dat"; std::ifstream f; f.open(filename); - if (!f.is_open()){ + if (!f.is_open()) { throw std::runtime_error("tmva-sofie failed to open file for input weights"); } std::string tensor_name; - int length; + size_t length; f >> tensor_name >> length; if (tensor_name != "tensor_dense3bias0" ) { std::string err_msg = "TMVA-SOFIE failed to read the correct tensor name; expected name is tensor_dense3bias0 , read " + tensor_name; @@ -78,99 +78,99 @@ Session(std::string filename ="") { std::string err_msg = "TMVA-SOFIE failed to read the correct tensor size; expected size is 1 , read " + std::to_string(length) ; throw std::runtime_error(err_msg); } - for (int i =0; i < length; ++i) - f >> tensor_dense3bias0[i]; + for (size_t i = 0; i < length; ++i) + f >> tensor_dense3bias0[i]; f >> tensor_name >> length; - if (tensor_name != "tensor_dense3kernel0" ) { - std::string err_msg = "TMVA-SOFIE failed to read the correct tensor name; expected name is tensor_dense3kernel0 , read " + tensor_name; + if (tensor_name != "tensor_dense2bias0" ) { + std::string err_msg = "TMVA-SOFIE failed to read the correct tensor name; expected name is tensor_dense2bias0 , read " + tensor_name; throw std::runtime_error(err_msg); } - if (length != 18) { - std::string err_msg = "TMVA-SOFIE failed to read the correct tensor size; expected size is 18 , read " + std::to_string(length) ; + if (length != 16) { + std::string err_msg = "TMVA-SOFIE failed to read the correct tensor size; expected size is 16 , read " + std::to_string(length) ; throw std::runtime_error(err_msg); } - for (int i =0; i < length; ++i) - f >> tensor_dense3kernel0[i]; + for (size_t i = 0; i < length; ++i) + f >> tensor_dense2bias0[i]; f >> tensor_name >> length; - if (tensor_name != "tensor_dense2bias0" ) { - std::string err_msg = "TMVA-SOFIE failed to read the correct tensor name; expected name is tensor_dense2bias0 , read " + tensor_name; + if (tensor_name != "tensor_dense1bias0" ) { + std::string err_msg = "TMVA-SOFIE failed to read the correct tensor name; expected name is tensor_dense1bias0 , read " + tensor_name; throw std::runtime_error(err_msg); } - if (length != 18) { - std::string err_msg = "TMVA-SOFIE failed to read the correct tensor size; expected size is 18 , read " + std::to_string(length) ; + if (length != 16) { + std::string err_msg = "TMVA-SOFIE failed to read the correct tensor size; expected size is 16 , read " + std::to_string(length) ; throw std::runtime_error(err_msg); } - for (int i =0; i < length; ++i) - f >> tensor_dense2bias0[i]; + for (size_t i = 0; i < length; ++i) + f >> tensor_dense1bias0[i]; f >> tensor_name >> length; - if (tensor_name != "tensor_dense2kernel0" ) { - std::string err_msg = "TMVA-SOFIE failed to read the correct tensor name; expected name is tensor_dense2kernel0 , read " + tensor_name; + if (tensor_name != "tensor_dense1kernel0" ) { + std::string err_msg = "TMVA-SOFIE failed to read the correct tensor name; expected name is tensor_dense1kernel0 , read " + tensor_name; throw std::runtime_error(err_msg); } - if (length != 324) { - std::string err_msg = "TMVA-SOFIE failed to read the correct tensor size; expected size is 324 , read " + std::to_string(length) ; + if (length != 256) { + std::string err_msg = "TMVA-SOFIE failed to read the correct tensor size; expected size is 256 , read " + std::to_string(length) ; throw std::runtime_error(err_msg); } - for (int i =0; i < length; ++i) - f >> tensor_dense2kernel0[i]; + for (size_t i = 0; i < length; ++i) + f >> tensor_dense1kernel0[i]; f >> tensor_name >> length; - if (tensor_name != "tensor_dense1bias0" ) { - std::string err_msg = "TMVA-SOFIE failed to read the correct tensor name; expected name is tensor_dense1bias0 , read " + tensor_name; + if (tensor_name != "tensor_densebias0" ) { + std::string err_msg = "TMVA-SOFIE failed to read the correct tensor name; expected name is tensor_densebias0 , read " + tensor_name; throw std::runtime_error(err_msg); } - if (length != 18) { - std::string err_msg = "TMVA-SOFIE failed to read the correct tensor size; expected size is 18 , read " + std::to_string(length) ; + if (length != 16) { + std::string err_msg = "TMVA-SOFIE failed to read the correct tensor size; expected size is 16 , read " + std::to_string(length) ; throw std::runtime_error(err_msg); } - for (int i =0; i < length; ++i) - f >> tensor_dense1bias0[i]; + for (size_t i = 0; i < length; ++i) + f >> tensor_densebias0[i]; f >> tensor_name >> length; - if (tensor_name != "tensor_dense1kernel0" ) { - std::string err_msg = "TMVA-SOFIE failed to read the correct tensor name; expected name is tensor_dense1kernel0 , read " + tensor_name; + if (tensor_name != "tensor_dense3kernel0" ) { + std::string err_msg = "TMVA-SOFIE failed to read the correct tensor name; expected name is tensor_dense3kernel0 , read " + tensor_name; throw std::runtime_error(err_msg); } - if (length != 324) { - std::string err_msg = "TMVA-SOFIE failed to read the correct tensor size; expected size is 324 , read " + std::to_string(length) ; + if (length != 16) { + std::string err_msg = "TMVA-SOFIE failed to read the correct tensor size; expected size is 16 , read " + std::to_string(length) ; throw std::runtime_error(err_msg); } - for (int i =0; i < length; ++i) - f >> tensor_dense1kernel0[i]; + for (size_t i = 0; i < length; ++i) + f >> tensor_dense3kernel0[i]; f >> tensor_name >> length; - if (tensor_name != "tensor_densebias0" ) { - std::string err_msg = "TMVA-SOFIE failed to read the correct tensor name; expected name is tensor_densebias0 , read " + tensor_name; + if (tensor_name != "tensor_dense2kernel0" ) { + std::string err_msg = "TMVA-SOFIE failed to read the correct tensor name; expected name is tensor_dense2kernel0 , read " + tensor_name; throw std::runtime_error(err_msg); } - if (length != 18) { - std::string err_msg = "TMVA-SOFIE failed to read the correct tensor size; expected size is 18 , read " + std::to_string(length) ; + if (length != 256) { + std::string err_msg = "TMVA-SOFIE failed to read the correct tensor size; expected size is 256 , read " + std::to_string(length) ; throw std::runtime_error(err_msg); } - for (int i =0; i < length; ++i) - f >> tensor_densebias0[i]; + for (size_t i = 0; i < length; ++i) + f >> tensor_dense2kernel0[i]; f >> tensor_name >> length; if (tensor_name != "tensor_densekernel0" ) { std::string err_msg = "TMVA-SOFIE failed to read the correct tensor name; expected name is tensor_densekernel0 , read " + tensor_name; throw std::runtime_error(err_msg); } - if (length != 162) { - std::string err_msg = "TMVA-SOFIE failed to read the correct tensor size; expected size is 162 , read " + std::to_string(length) ; + if (length != 128) { + std::string err_msg = "TMVA-SOFIE failed to read the correct tensor size; expected size is 128 , read " + std::to_string(length) ; throw std::runtime_error(err_msg); } - for (int i =0; i < length; ++i) - f >> tensor_densekernel0[i]; + for (size_t i = 0; i < length; ++i) + f >> tensor_densekernel0[i]; f.close(); { - float * data = TMVA::Experimental::SOFIE::UTILITY::UnidirectionalBroadcast(tensor_densebias0,{ 18 }, { 1 , 18 }); - std::copy(data, data + 18, tensor_densebias0bcast); + float * data = TMVA::Experimental::SOFIE::UTILITY::UnidirectionalBroadcast(tensor_densebias0,{ 16 }, { 1 , 16 }); + std::copy(data, data + 16, tensor_densebias0bcast); delete [] data; } { - float * data = TMVA::Experimental::SOFIE::UTILITY::UnidirectionalBroadcast(tensor_dense1bias0,{ 18 }, { 1 , 18 }); - std::copy(data, data + 18, tensor_dense1bias0bcast); + float * data = TMVA::Experimental::SOFIE::UTILITY::UnidirectionalBroadcast(tensor_dense1bias0,{ 16 }, { 1 , 16 }); + std::copy(data, data + 16, tensor_dense1bias0bcast); delete [] data; } { - float * data = TMVA::Experimental::SOFIE::UTILITY::UnidirectionalBroadcast(tensor_dense2bias0,{ 18 }, { 1 , 18 }); - std::copy(data, data + 18, tensor_dense2bias0bcast); + float * data = TMVA::Experimental::SOFIE::UTILITY::UnidirectionalBroadcast(tensor_dense2bias0,{ 16 }, { 1 , 16 }); + std::copy(data, data + 16, tensor_dense2bias0bcast); delete [] data; } { @@ -180,23 +180,23 @@ Session(std::string filename ="") { } } -std::vector infer(float* tensor_input3){ +std::vector infer(float* tensor_input1){ //--------- Gemm char op_0_transA = 'n'; char op_0_transB = 'n'; int op_0_m = 1; - int op_0_n = 18; - int op_0_k = 9; + int op_0_n = 16; + int op_0_k = 8; float op_0_alpha = 1; float op_0_beta = 1; - int op_0_lda = 9; - int op_0_ldb = 18; - std::copy(tensor_densebias0bcast, tensor_densebias0bcast + 18, tensor_denseDense); - BLAS::sgemm_(&op_0_transB, &op_0_transA, &op_0_n, &op_0_m, &op_0_k, &op_0_alpha, tensor_densekernel0, &op_0_ldb, tensor_input3, &op_0_lda, &op_0_beta, tensor_denseDense, &op_0_n); + int op_0_lda = 8; + int op_0_ldb = 16; + std::copy(tensor_densebias0bcast, tensor_densebias0bcast + 16, tensor_denseDense); + BLAS::sgemm_(&op_0_transB, &op_0_transA, &op_0_n, &op_0_m, &op_0_k, &op_0_alpha, tensor_densekernel0, &op_0_ldb, tensor_input1, &op_0_lda, &op_0_beta, tensor_denseDense, &op_0_n); //------ RELU - for (int id = 0; id < 18 ; id++){ + for (int id = 0; id < 16 ; id++){ tensor_denseRelu0[id] = ((tensor_denseDense[id] > 0 )? tensor_denseDense[id] : 0); } @@ -204,17 +204,17 @@ std::vector infer(float* tensor_input3){ char op_2_transA = 'n'; char op_2_transB = 'n'; int op_2_m = 1; - int op_2_n = 18; - int op_2_k = 18; + int op_2_n = 16; + int op_2_k = 16; float op_2_alpha = 1; float op_2_beta = 1; - int op_2_lda = 18; - int op_2_ldb = 18; - std::copy(tensor_dense1bias0bcast, tensor_dense1bias0bcast + 18, tensor_dense1Dense); + int op_2_lda = 16; + int op_2_ldb = 16; + std::copy(tensor_dense1bias0bcast, tensor_dense1bias0bcast + 16, tensor_dense1Dense); BLAS::sgemm_(&op_2_transB, &op_2_transA, &op_2_n, &op_2_m, &op_2_k, &op_2_alpha, tensor_dense1kernel0, &op_2_ldb, tensor_denseRelu0, &op_2_lda, &op_2_beta, tensor_dense1Dense, &op_2_n); //------ RELU - for (int id = 0; id < 18 ; id++){ + for (int id = 0; id < 16 ; id++){ tensor_dense1Relu0[id] = ((tensor_dense1Dense[id] > 0 )? tensor_dense1Dense[id] : 0); } @@ -222,17 +222,17 @@ std::vector infer(float* tensor_input3){ char op_4_transA = 'n'; char op_4_transB = 'n'; int op_4_m = 1; - int op_4_n = 18; - int op_4_k = 18; + int op_4_n = 16; + int op_4_k = 16; float op_4_alpha = 1; float op_4_beta = 1; - int op_4_lda = 18; - int op_4_ldb = 18; - std::copy(tensor_dense2bias0bcast, tensor_dense2bias0bcast + 18, tensor_dense2Dense); + int op_4_lda = 16; + int op_4_ldb = 16; + std::copy(tensor_dense2bias0bcast, tensor_dense2bias0bcast + 16, tensor_dense2Dense); BLAS::sgemm_(&op_4_transB, &op_4_transA, &op_4_n, &op_4_m, &op_4_k, &op_4_alpha, tensor_dense2kernel0, &op_4_ldb, tensor_dense1Relu0, &op_4_lda, &op_4_beta, tensor_dense2Dense, &op_4_n); //------ RELU - for (int id = 0; id < 18 ; id++){ + for (int id = 0; id < 16 ; id++){ tensor_dense2Relu0[id] = ((tensor_dense2Dense[id] > 0 )? tensor_dense2Dense[id] : 0); } @@ -241,10 +241,10 @@ std::vector infer(float* tensor_input3){ char op_6_transB = 'n'; int op_6_m = 1; int op_6_n = 1; - int op_6_k = 18; + int op_6_k = 16; float op_6_alpha = 1; float op_6_beta = 1; - int op_6_lda = 18; + int op_6_lda = 16; int op_6_ldb = 1; std::copy(tensor_dense3bias0bcast, tensor_dense3bias0bcast + 1, tensor_dense3Dense); BLAS::sgemm_(&op_6_transB, &op_6_transA, &op_6_n, &op_6_m, &op_6_k, &op_6_alpha, tensor_dense3kernel0, &op_6_ldb, tensor_dense2Relu0, &op_6_lda, &op_6_beta, tensor_dense3Dense, &op_6_n); @@ -257,4 +257,4 @@ std::vector infer(float* tensor_input3){ }; } //TMVA_SOFIE_TrainBkgDiag -#endif // TMVA_SOFIE_TRAINBKGDIAG +#endif // ROOT_TMVA_SOFIE_TRAINBKGDIAG From f71860e3628e466bf9efbb0bb1afc9c0039d6bde Mon Sep 17 00:00:00 2001 From: echenard Date: Fri, 13 Mar 2026 16:44:49 -0500 Subject: [PATCH 08/54] Fixed conflict --- CaloMC/fcl/prolog.fcl | 2 +- CaloMC/src/CaloShowerROMaker_module.cc | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CaloMC/fcl/prolog.fcl b/CaloMC/fcl/prolog.fcl index a84b0531d2..4cebf838ab 100644 --- a/CaloMC/fcl/prolog.fcl +++ b/CaloMC/fcl/prolog.fcl @@ -54,7 +54,7 @@ CaloMC : { @table::CaloMC digitizationStart : @local::HitMakerDigitizationStart digitizationEnd : @local::HitMakerDigitizationEnd digitizationBuffer : 10 - crystalNonUniformity : 1.05 + crystalNonUniformity : 0.05 readoutPEPerMeVCsI : @local::readoutPEPerMeVCsI readoutPEPerMeVLyso : @local::readoutPEPerMeVLyso LRUCorrection : true diff --git a/CaloMC/src/CaloShowerROMaker_module.cc b/CaloMC/src/CaloShowerROMaker_module.cc index 120afaddb6..9b2bbe9934 100644 --- a/CaloMC/src/CaloShowerROMaker_module.cc +++ b/CaloMC/src/CaloShowerROMaker_module.cc @@ -367,11 +367,11 @@ namespace mu2e { //---------------------------------------------------------------------------------------------------------------------------------- - // apply a correction of type Energy = ((1-s)*Z/HL+s)*energy where Z position along the crystal, HL is the crystal half-length - // and s is the intercept at Z=0 (i.e. non-uniformity factor, e.g. 5% -> s = 1.05) + // apply a correction of type Energy = (a*(Z/HL-1)+1)*energy where Z position along the crystal, HL is the crystal half-length + // and a is the level of non-uniformity (e.g. 5%) float CaloShowerROMaker::LRUCorrection(int crystalID, float normalizedPosZ, float edepInit) { - float factor = (1.0-crystalNonUniformity_)*normalizedPosZ + crystalNonUniformity_; + float factor = crystalNonUniformity_*(normalizedPosZ-1.0)+1.0; float edep = edepInit*factor; if (diagLevel_ > 2) std::cout<<"[CaloShowerROMaker::LRUCorrection] before / after LRU -> edep_corr = " From 3cae1969951b6c8dcacc082fff624eedbbf2a08c Mon Sep 17 00:00:00 2001 From: Namitha Chithirasreemadam Date: Sat, 14 Mar 2026 13:28:57 -0500 Subject: [PATCH 09/54] fixed the build errors --- RecoDataProducts/inc/BkgCluster.hh | 3 +++ TrkHitReco/inc/DBSClusterer.hh | 18 ++++++++++++++---- TrkHitReco/src/FlagBkgHits_module.cc | 2 -- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/RecoDataProducts/inc/BkgCluster.hh b/RecoDataProducts/inc/BkgCluster.hh index 63f6d31acc..e025880764 100644 --- a/RecoDataProducts/inc/BkgCluster.hh +++ b/RecoDataProducts/inc/BkgCluster.hh @@ -29,6 +29,7 @@ namespace mu2e auto & points() {return _cpoints; } auto const& points() const {return _cpoints; } auto const& time() const {return _time; } + auto const& edep() const {return _edep; } auto const& hits() const {return _hits; } auto const& hitposition() const {return _hitpositions; } auto & hitposition() {return _hitpositions; } @@ -36,6 +37,7 @@ namespace mu2e void pos(XYZVectorF const& pos) {_pos = pos;} void time(float time) {_time = time;} + void edep(float edep) {_edep = edep;} void clearHits() {_hits.clear();} void setKerasQ(float kerasQ) {_kerasQ = kerasQ;} void addHit(unsigned val) {_hits.emplace_back(val);} @@ -52,6 +54,7 @@ namespace mu2e TwoDPoint _point;//initial point CombineTwoDPoints _cpoints;//combined points float _time = 0.0;//cluster time + float _edep = 0.0;//cluster time std::vector _hits; std::vector _hitpositions; BkgClusterFlag _flag = BkgClusterFlag(BkgClusterFlag::update); diff --git a/TrkHitReco/inc/DBSClusterer.hh b/TrkHitReco/inc/DBSClusterer.hh index ce9e919ff8..e202b5758e 100644 --- a/TrkHitReco/inc/DBSClusterer.hh +++ b/TrkHitReco/inc/DBSClusterer.hh @@ -10,6 +10,15 @@ #include "fhiclcpp/types/Sequence.h" #include "Offline/RecoDataProducts/inc/StrawDigi.hh" #include "Offline/TrkHitReco/inc/BkgClusterer.hh" +#include "Offline/TrkHitReco/inc/TrainBkgDiag.hxx" + +#include + + +//Inference class +namespace TMVA_SOFIE_TrainBkgDiag { + class Session; +} namespace mu2e { @@ -22,7 +31,7 @@ namespace mu2e { { using Name = fhicl::Name; using Comment = fhicl::Comment; - fhicl::Atom DBSminN{ Name("DBSminExpand"), Comment("Min number neighbors for DBScan algo") }; + fhicl::Atom DBSminN{ Name("DBSminExpand"), Comment("Min number neighbors for DBScan algo") }; fhicl::Atom hitDeltaTime{ Name("DeltaTime"), Comment("Max time difference between hits") }; fhicl::Atom hitDeltaZ{ Name("DeltaZ"), Comment("Max Z difference between hits") }; fhicl::Atom hitDeltaXY{ Name("DeltaXY"), Comment("Max XY difference between hits") }; @@ -45,11 +54,12 @@ namespace mu2e { private: - unsigned findNeighbors (unsigned ihit, const std::vector& idx, const ComboHitCollection& chcol, std::vector& neighbors); + int findNeighbors (unsigned ihit, const std::vector& idx, const ComboHitCollection& chcol, std::vector& neighbors); void calculateCluster (BkgCluster& cluster, const ComboHitCollection& chcol); + void mergeClusters (std::vector& clusters, const ComboHitCollection& chcol); void dump (const std::vector& clusters); - unsigned DBSminExpand_; + int DBSminExpand_; float deltaTime_; float deltaZ_; float deltaXY2_; @@ -61,7 +71,7 @@ namespace mu2e { int diag_; //Need the correct Sophie description - //std::shared_ptr sofiePtr_; + std::shared_ptr sofiePtr_; }; } diff --git a/TrkHitReco/src/FlagBkgHits_module.cc b/TrkHitReco/src/FlagBkgHits_module.cc index 97340e924b..530e834503 100644 --- a/TrkHitReco/src/FlagBkgHits_module.cc +++ b/TrkHitReco/src/FlagBkgHits_module.cc @@ -240,8 +240,6 @@ namespace mu2e flag.merge(StrawHitFlag(StrawHitFlag::bkg)); cluster._flag.merge(BkgClusterFlag::bkg); } - //if(cluster.hits().size() < 3 and cluster.getKerasQ() > kerasQ_) - // std::cout<<"Keras Quality = "< Date: Mon, 16 Mar 2026 12:08:26 -0500 Subject: [PATCH 10/54] small changes to CRV prolog parameters --- CRVReco/fcl/prolog_v11.fcl | 8 +++++++- CRVReco/fcl/prolog_v12.fcl | 8 +++++++- CRVReco/src/CrvPedestalFinder_module.cc | 10 +++++----- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/CRVReco/fcl/prolog_v11.fcl b/CRVReco/fcl/prolog_v11.fcl index a543f2288c..624946fb03 100644 --- a/CRVReco/fcl/prolog_v11.fcl +++ b/CRVReco/fcl/prolog_v11.fcl @@ -4,7 +4,12 @@ BEGIN_PROLOG { module_type : CrvPedestalFinder crvDigiModuleLabel : "CrvDigi" - maxADCspread : 5 + useNZS : false + firstSampleOnly : true + histBins : 401 + histMin : 1799.5 + histMax : 2200.5 + maxADCspread : 5 #if firstSampleOnly: false tmpDBfileName : "pedestals.txt" } @@ -12,6 +17,7 @@ BEGIN_PROLOG { module_type : CrvCalibration crvRecoPulsesModuleLabel : "CrvRecoPulses" + useNZS : false tmpDBfileName : "calibration.txt" } diff --git a/CRVReco/fcl/prolog_v12.fcl b/CRVReco/fcl/prolog_v12.fcl index a668e2f20a..565aca65d6 100644 --- a/CRVReco/fcl/prolog_v12.fcl +++ b/CRVReco/fcl/prolog_v12.fcl @@ -4,7 +4,12 @@ BEGIN_PROLOG { module_type : CrvPedestalFinder crvDigiModuleLabel : "CrvDigi" - maxADCspread : 5 + useNZS : false + firstSampleOnly : true + histBins : 401 + histMin : 1799.5 + histMax : 2200.5 + maxADCspread : 5 #if firstSampleOnly: false tmpDBfileName : "pedestals.txt" } @@ -12,6 +17,7 @@ BEGIN_PROLOG { module_type : CrvCalibration crvRecoPulsesModuleLabel : "CrvRecoPulses" + useNZS : false tmpDBfileName : "calibration.txt" } diff --git a/CRVReco/src/CrvPedestalFinder_module.cc b/CRVReco/src/CrvPedestalFinder_module.cc index 1b6b06e3c2..c6804154a4 100644 --- a/CRVReco/src/CrvPedestalFinder_module.cc +++ b/CRVReco/src/CrvPedestalFinder_module.cc @@ -40,11 +40,11 @@ namespace mu2e using Comment=fhicl::Comment; fhicl::Atom crvDigiModuleLabel{Name("crvDigiModuleLabel"), Comment("module label for CrvDigis")}; fhicl::Atom useNZS{Name("useNZS"), Comment("use NZS data"), false}; - fhicl::Atom firstSampleOnly{Name("firstSampleOnly"), Comment("only use first sample of a hit")}; - fhicl::Atom histBins{Name("histBins"), Comment("pedestal histogram bins"), 201}; - fhicl::Atom histMin{Name("histMin"), Comment("start range of pedestal histogram"), -50.5}; - fhicl::Atom histMax{Name("histMax"), Comment("end range of pedestal histogram"), 150.5}; - fhicl::Atom maxADCspread{Name("maxADCspread"), Comment("maximum spread of ADC values within a waveform to be considered for the pedestal")}; + fhicl::Atom firstSampleOnly{Name("firstSampleOnly"), Comment("only use first sample of a hit"), true}; + fhicl::Atom histBins{Name("histBins"), Comment("pedestal histogram bins"), 401}; + fhicl::Atom histMin{Name("histMin"), Comment("start range of pedestal histogram"), 1799.5}; + fhicl::Atom histMax{Name("histMax"), Comment("end range of pedestal histogram"), 2200.5}; + fhicl::Atom maxADCspread{Name("maxADCspread"), Comment("maximum spread of ADC values within a waveform to be considered for the pedestal"), 5}; //if not firstSampleOnly fhicl::Atom tmpDBfileName{Name("tmpDBfileName"), Comment("name of the tmp. DB file name for the pedestals")}; }; From 5f66c3b60f8bb9ff52c3f3607812fa1fce70e54c Mon Sep 17 00:00:00 2001 From: Namitha Chithirasreemadam Date: Tue, 17 Mar 2026 11:09:52 -0500 Subject: [PATCH 11/54] bug fixes and clean up --- RecoDataProducts/inc/BkgCluster.hh | 2 +- TrkHitReco/data/TrainBkgDiag.dat | 30 +- TrkHitReco/inc/DBSClusterer.hh | 3 - TrkHitReco/inc/TrainBkgDiag.hxx | 114 +- TrkHitReco/inc/TrainBkgDiagBDT.hxx | 22562 +++++++++++++++++++++++++ TrkHitReco/src/DBSClusterer.cc | 63 +- TrkHitReco/src/FlagBkgHits_module.cc | 37 +- 7 files changed, 22655 insertions(+), 156 deletions(-) create mode 100644 TrkHitReco/inc/TrainBkgDiagBDT.hxx diff --git a/RecoDataProducts/inc/BkgCluster.hh b/RecoDataProducts/inc/BkgCluster.hh index e025880764..5c26a83435 100644 --- a/RecoDataProducts/inc/BkgCluster.hh +++ b/RecoDataProducts/inc/BkgCluster.hh @@ -54,7 +54,7 @@ namespace mu2e TwoDPoint _point;//initial point CombineTwoDPoints _cpoints;//combined points float _time = 0.0;//cluster time - float _edep = 0.0;//cluster time + float _edep = 0.0;//cluster edep std::vector _hits; std::vector _hitpositions; BkgClusterFlag _flag = BkgClusterFlag(BkgClusterFlag::update); diff --git a/TrkHitReco/data/TrainBkgDiag.dat b/TrkHitReco/data/TrainBkgDiag.dat index 03d7a0eb46..fadd8508fc 100644 --- a/TrkHitReco/data/TrainBkgDiag.dat +++ b/TrkHitReco/data/TrainBkgDiag.dat @@ -1,16 +1,16 @@ tensor_dense3bias0 1 -1.1061151 -tensor_dense2bias0 16 --1.35272253 -1.31999636 1.14140117 0.939562976 0.116985053 -0.88808018 -0.335062534 1.18198454 -1.20054877 1.10271263 -0.200722337 -0.416486353 0.527384698 0.791249275 -1.101843 0.100289196 -tensor_dense1bias0 16 --0.00150133262 -1.57797992 0.115556158 -0.147979096 1.62330234 -0.124686286 2.69236898 1.23222017 0.737626374 -0.0981126577 -0.8841362 -1.37198114 -1.46882248 2.22938967 -1.18442774 -0.236208364 -tensor_dense1kernel0 256 -0.243159562 0.0714567602 -0.080216974 0.208055347 -0.25774911 0.198903292 0.243670076 -0.12711522 -0.166630089 0.0516824126 -0.380930424 0.0607391 0.0829271972 0.0469640195 -0.389178038 -0.356831521 0.306171149 -0.488602191 -0.132032409 -0.26209265 -0.454402864 -0.151838675 0.104748823 -0.0135065243 -0.282781512 0.272791654 -0.18864505 0.209084824 -0.131944358 -0.232045665 -0.268163294 -0.918595433 0.0385207832 0.247621447 -0.148686767 -0.0115563869 -0.315446407 -0.413907826 -0.378389418 -0.303340793 0.247657865 -0.416924238 -0.391373605 0.170925528 -0.199905843 0.39126274 -0.268277556 0.12755999 -0.205139905 -0.255357176 0.0768687278 -0.0449835025 0.106293865 -0.379708827 0.364605308 0.269318461 0.0412242636 -0.49566555 0.307767183 -0.297656 0.0118763559 0.163892865 -0.0767403021 0.120269202 0.170202225 -0.0235010535 0.280616105 0.160104915 -0.0561673716 -0.0702235624 0.343645692 0.266805023 -0.170594037 -0.380386114 -0.526082456 -0.290870517 0.0197053272 0.331639469 0.0391771831 -0.393676162 -0.251723677 0.181402907 -0.403666317 -0.410089821 0.131796718 -0.0241550636 -0.213556767 -0.21429202 -0.0624150485 -0.17529799 0.438971519 0.298992962 0.181828797 0.121058933 -0.245263502 0.00647335639 -0.0874612927 -0.222747937 0.129724845 0.119875856 -0.674068034 0.171946138 -0.195395917 -0.425393462 -1.05629539 0.274526447 -0.387159824 0.290864199 -0.0664694458 -0.479717344 0.0603267998 0.0308877248 -0.039799273 -0.245008498 0.179381609 0.00119154318 -1.13820219 -0.390471846 0.186197937 -0.378035307 0.0442107171 -0.188274816 0.087256074 -0.250126839 -0.129438102 -0.0705846027 -0.0137079479 -0.0078503415 -0.00436278759 0.20714809 -0.307882935 -0.0208568275 -0.106387295 0.173951149 0.068913281 -0.060652364 -0.73586148 0.269273967 0.14360401 -0.0212960672 -0.11930865 -0.334060699 -0.224627107 -0.351210356 -0.331471026 0.0747899339 0.0459100939 -0.376906276 -0.185223401 -0.270593822 -0.185129225 0.0487483256 0.139433578 0.0480346046 -0.194651291 0.018200852 0.0445303544 -2.78296828 0.301045507 -0.218054891 -0.331534147 -0.0671842098 0.0303247999 -0.336480886 -0.0152937658 -0.045100987 -0.262513995 -0.119998343 -0.108578257 -0.459228516 0.19291307 -0.0203023832 -0.256647617 -0.375826687 -0.32551378 -0.330898434 -0.399699986 0.539833128 -0.117308103 -0.0512819812 -0.415894508 0.17580606 -0.545492172 0.328175128 0.350368589 0.288497299 -0.0951490253 0.305034906 -0.0219154023 0.145368174 0.336695343 -0.107650235 -0.135102034 0.0148087982 -0.200455204 0.23156026 0.240544423 0.266493469 -0.141665936 -0.506044269 0.194804937 0.023247093 -0.200866833 0.287751794 0.553931773 0.0120684821 0.228633761 -0.237064838 0.209019393 -0.147713795 -0.0630288944 -0.172865778 0.317260742 0.380649716 0.432432383 -0.147642553 -0.123165935 -0.38904652 -0.274797916 -0.10262277 -0.342534006 -0.0632886887 -0.000141360681 -0.126621693 -0.382925093 -0.183614284 0.0915751681 -0.50557965 0.303455114 -0.0526407026 -0.0859406069 0.428580433 0.349972606 -0.230374426 -0.373038262 -0.351871818 0.751333952 -0.402319938 0.367592841 -0.782221317 0.183897182 -0.483849347 0.244804293 0.172708422 -0.362567723 -0.264123976 -0.356024206 0.210106999 -0.343621522 0.0416194238 -0.425654233 -1.31006324 0.0408483483 -0.0532523617 -0.0217035357 0.184973031 -tensor_densebias0 16 -0 1.20953941 0 2.50472116 1.03753054 -1.65072548 -2.55268812 0.0519317053 -2.47357988 -1.38108349 -1.19304907 -0.455643922 0.225448772 0.013242716 0.603880644 1.49160171 -tensor_dense3kernel0 16 -0.214371562 -0.187934428 0.055483669 0.135539606 0.179028928 0.15166083 -0.113397844 0.300260872 -0.262370825 0.260812789 -0.299958557 0.260300815 0.226120949 0.204630554 -0.325419873 -0.0792582929 -tensor_dense2kernel0 256 -0.0146386623 -0.196466148 -0.0904868618 -0.346048176 -0.0188658535 -0.00085863471 0.0213336647 0.178578511 0.399141014 0.273297548 0.0364105999 -0.0358523726 0.121860012 0.0658769906 0.0949836373 0.106977671 0.15885511 -0.743221879 0.327389956 -0.178672925 0.255849689 0.1426 -0.17089203 0.285215616 -0.143518403 0.0686523691 -0.044432424 -0.397049725 0.116338171 -0.141107053 0.241425857 -0.213015005 0.45407176 -0.216967672 -0.381388009 0.236287013 0.0562613569 0.356525928 -0.371352583 0.0649330094 -0.147047028 -0.201767236 -0.255323112 0.210963175 -0.338538617 -0.106974185 -0.0508271717 -0.784401 0.135242328 -0.279643357 -0.409877896 0.356040537 -0.302625209 0.133547902 0.0127500296 -0.227934599 -0.356407732 -0.231703624 0.0602846444 -0.276302457 0.136834279 0.40329811 0.14367187 0.265973181 -0.366716176 0.474055678 0.408907801 0.380414337 0.875630379 -0.473994642 -0.0176631454 -0.234412 0.276955724 0.419416726 0.357941657 -0.0160934683 -0.0430114642 0.455279022 -0.213722661 0.0118471114 -0.275849134 0.393676877 0.0475826934 0.15927425 0.0699533522 -0.246236861 0.319805831 -0.358050972 -0.411411077 0.0876989067 0.114524156 0.124515444 0.251176745 -0.0634872317 -0.132965669 -0.045910269 0.276942074 0.0757218227 -0.242524207 -0.305165023 0.210786119 0.41948089 -0.338331312 0.237734154 0.0265606064 0.035031829 -0.296538204 -0.173998177 0.0272080041 0.114761278 -0.172070354 0.257097304 -0.215944201 0.321822733 0.369096994 0.0660941899 0.216753349 -0.737044036 -0.131636307 0.00289905397 0.0668806359 -0.166455925 -0.582382321 -0.286722809 -0.207889289 -0.298587739 -0.275586486 -0.0661669821 0.0768368617 -0.283454359 0.255957931 0.245078385 0.54585582 -0.3687962 0.0982138813 -0.595997393 -0.142282233 0.396639377 0.213062271 0.464311928 -0.159848273 0.45265615 0.00961146131 -0.464902878 -0.36110568 0.245830789 -0.269800872 0.10150139 0.205717176 -0.233674452 -0.453053206 -0.242229834 -0.22839953 0.20421873 -0.263513923 0.0185365379 0.159069031 0.324421018 0.176302105 0.215170801 -0.119306147 -0.00398019562 0.240702987 0.28628397 -0.374449998 -0.214010254 -0.280457765 -0.0384275615 0.185873315 0.216834307 -0.456505448 -0.185313746 -0.703098774 0.127816081 0.371338785 -0.577786267 -0.144567102 0.355152488 -0.0231237151 -0.599500418 -0.264742404 0.31452477 -0.199754864 0.258855224 0.122016177 0.126505569 -0.283730924 -0.361450166 0.0562296845 -0.813034534 0.308810353 -0.0533967242 0.00486403145 -0.44221887 -0.283335716 -0.225692242 -0.284330249 -0.49316293 -0.394198656 0.327478588 -0.0721119642 -0.00273064943 -0.00591427227 -0.0110858828 -0.0449079759 -0.171635851 0.400992155 -0.215021566 0.534869671 0.12105415 -0.0271074381 -0.088426061 0.140797615 0.0207876824 0.125110626 -0.585522532 -0.0925570801 -0.225400746 -0.23501493 -0.0196844079 -0.176222518 0.222647324 0.362858057 -0.193222478 0.178513899 -0.122647852 0.117696367 -0.466098219 0.0317470729 0.273771286 -0.798804641 0.201146498 0.111225553 0.0469795801 0.14853178 -0.520217299 -0.162599221 -0.334704071 0.124276832 -0.656979322 0.127188921 0.198292911 0.180908635 -0.267182767 0.222215459 -1.05132115 -0.430675507 0.107435003 0.480796278 -0.314903378 -0.0546840727 -0.00173662929 0.0450897776 -0.377937555 -0.246138677 -0.161895141 -tensor_densekernel0 128 --0.258800387 -0.052134905 -0.439573288 0.0679520518 0.0737527609 0.0640459135 0.0966889933 0.0763816684 -0.0716517493 -0.0445873588 -0.183179274 0.105212711 -0.294938564 -0.324238896 -0.0407643057 0.00596658513 -0.0710545778 0.267374098 -0.293940663 0.110193357 -0.0072996337 0.0953655839 0.0111348499 -0.691414416 0.14115566 0.447698712 0.179556176 -0.244231269 -1.06675291 -0.798760235 0.0949991643 -0.00866276305 0.447293639 1.85822582 -0.398199916 3.19369531 5.23558807 -3.86574149 -2.44201541 0.30169186 -3.75615191 2.1275034 -0.506950974 -2.08671808 -0.861361623 0.0268228631 4.00725174 -0.31640929 0.00695693493 0.605314314 0.321206093 1.53662753 0.808590174 -1.57848215 -1.72692013 0.755096197 -0.732610226 -0.852058411 0.0115101431 -1.87209547 0.0428152159 -0.461585194 0.392728984 0.0345170796 -0.170246124 0.0929367244 0.0961778164 -0.206449851 -0.443116784 0.416823477 -0.0757617205 0.108881615 -0.116592176 -0.116148643 0.282730609 -0.273708016 0.389273435 0.164110437 -1.26228213 0.536460221 0.454164624 -0.958742797 0.237351656 -0.519095242 -1.18891788 0.532503009 -0.850360274 -0.0398920737 0.268455595 -0.323100507 -0.121800996 0.0365591571 0.236760601 -0.155769631 1.01849365 -1.53708088 0.116594791 1.26981938 4.69684601e-05 4.41308212 7.02027369 -3.34244156 -4.93624306 1.12972867 -3.44403982 1.80356491 -0.273111999 -3.6920588 -0.329784453 0.121791005 4.39286661 0.736845553 -0.482009292 -0.949607849 -0.346067905 1.21724689 -0.308686763 -0.380800545 -0.905346394 0.639593303 -4.02839375 -5.08773613 -4.5325489 -0.0554563329 -0.525448442 0.274206102 1.42500854 0.481172502 +-1.28895354 +tensor_dense2bias0 14 +-3.35743475 2.0934031 -0.000589658448 1.69919705 -4.31947565 -0.0490804911 2.8079927 -0.522852302 -0.0332807861 -4.32420254 0.884224355 -0.699406922 -1.0047394 -3.0171032 +tensor_dense1bias0 14 +0 -0.188832551 -0.163584933 -1.00232947 -0.905697227 -0.300136536 -0.167638481 1.3310957 -0.216523737 -0.0580406226 -0.206224605 -7.3008709 2.0387888 -0.998655736 +tensor_dense1kernel0 196 +0.0905860662 -0.602195978 -0.464111447 0.330157012 0.307678431 -0.224398047 0.00807611179 -0.0409057699 0.128183976 -0.211729452 -0.135035887 -0.238139167 0.635307491 0.00753908372 -0.169685841 -0.0812718421 -0.313878387 -0.278395683 -0.140633568 -0.292479664 -0.126921788 0.00260822382 0.0642133206 -0.320332915 -0.412543088 0.2473986 -0.545820951 -1.23612428 0.094181478 0.17248483 0.203432947 -0.556903005 -0.142244071 -0.167375743 0.0462146215 0.0696483701 -0.093918182 0.216542467 -0.0629241467 -0.0373923704 -0.269663215 0.335430801 -0.388231099 -0.142180651 -0.0374009646 0.251526237 0.227335274 -0.326122075 -0.200199693 0.145457491 -0.32638368 -0.475208998 0.26536262 -0.0280450676 0.0523402281 -0.0749143288 -0.145154506 0.406297326 -0.333892763 -0.350018084 0.241812885 -0.398053825 0.287745178 0.325811982 0.0832242966 -0.106855839 -0.436659962 -0.4616521 -0.309737772 -0.330038786 -0.443226993 -0.295733035 -0.0876407027 0.157253683 0.00909578055 -0.00394976325 -0.211422339 -0.355674952 -0.249636665 0.120029151 -0.0147580942 -0.0217834841 0.431818604 -0.407131046 -0.310719043 0.24496302 0.40638572 0.208041385 0.256845355 -0.11132732 0.413614452 0.409258008 -0.313440561 0.330183268 -0.203718424 -0.386525273 0.453237355 -0.428274572 -0.373122841 0.274500221 -0.22524184 -0.316576391 -0.60057807 -0.3576563 0.180793703 -0.607732058 0.15003632 0.1225456 -0.128817081 -0.15957877 -0.053453669 -1.15640545 -0.320258319 -0.168508872 0.347813189 -0.208775699 -1.5481385 -1.46928835 -0.000285860646 -3.09100413 -0.41644749 -0.0461487323 -0.071967952 0.00764270499 0.273853958 0.206123531 0.0772712231 0.0196957998 -0.444208741 0.193666205 0.170562223 0.101737358 0.185645998 0.00970568974 -0.262683541 0.0428246297 -0.0957560167 -0.0605263524 0.522169292 -0.0455887951 0.378111839 0.230288327 -0.063642323 0.0505396128 0.240402341 -0.318515778 -0.240954265 0.24002099 -0.376531839 -0.205826759 0.187041819 0.0664066672 -0.234059349 -0.0697333217 -0.356401563 0.160576299 -0.172869951 -0.220462367 0.214998528 -0.0934303999 0.0257663447 -0.253319114 -0.0791493803 -0.318654269 -0.44518292 0.084793292 -0.933567584 -0.356132388 -0.307305515 -0.578900874 -0.27789706 0.341956288 0.0649100617 0.292780459 -0.114984654 0.139430344 -0.310869992 -0.111684047 -0.592999697 0.0952811316 0.225389391 -0.328213751 0.35436672 -0.00731804082 0.330407739 0.187742442 -0.814078212 0.299670875 -0.276133746 0.20191057 0.364524543 -0.0584633984 -0.149719149 0.0790228024 0.283512831 -0.0587382428 +tensor_densebias0 14 +-0.251677215 -7.8032527 -1.54961205 1.79507399 0 5.55115652 -0.0795489028 2.27403569 5.3232379 3.49772 0 -5.53190327 -3.2714901 -0.163836494 +tensor_dense3kernel0 14 +0.155153081 -0.183597431 -0.45035097 -0.223408058 3.30087185 -0.0367189609 -0.35294047 -0.0404517315 -0.0722281411 1.07540834 0.472538501 0.270629793 0.203523919 -0.176781803 +tensor_dense2kernel0 196 +0.123691201 0.0545867682 0.332349956 -0.322324276 -0.407843322 -0.0662699342 0.141700923 0.434936047 -0.0256010294 0.323884428 -0.430812001 -0.274406075 -0.231383726 -0.428762823 0.323736399 0.419924378 -0.156658858 0.174905255 0.125997141 0.164091691 -0.253856689 0.254219145 0.186647192 -0.102879338 -0.149299592 -0.0566360317 0.136277184 -0.0755381435 0.199114174 0.196324468 0.118606225 0.0328382477 0.0641852468 -0.124732986 -0.414365619 -0.45933187 0.327182114 -0.360406548 -0.192570746 0.150890887 -0.104858905 0.276908278 -0.14885205 0.109904826 -0.335567981 0.18795599 0.0697075501 -0.00321880565 -0.147890776 -0.700378299 0.187736511 0.0687181801 -0.801224351 0.585851789 0.351791412 0.160026282 0.108152896 -0.0938188955 -0.292101681 -1.53096139 -0.0220922362 -0.415685236 -0.154082686 -0.173432037 -1.05026424 -0.0214050934 -0.215229943 -0.406370759 0.0605941415 -0.0991459936 0.326675117 -0.230840206 -0.111269146 -1.0362848 -0.0456415042 -0.150149748 -0.514516115 -0.141821295 -0.524458528 -0.0460368991 0.539319515 -0.387565911 0.568232179 0.0871932879 0.0673543289 0.228332564 -0.227749139 -0.172408521 0.0526400357 -0.400253147 -0.111693367 -0.0530052111 -0.202670589 0.0602712147 -0.195662975 0.134144798 -0.056098666 -0.214038357 -0.329439282 -1.16123915 -0.381949276 -0.732183337 -0.0168615971 -0.045746129 -0.360388011 -0.0590661466 -0.414068311 -0.0368682146 0.0808830634 0.093789205 0.217793316 -0.37514621 -0.0791795924 0.237079874 -0.322080612 0.0779489204 0.286806017 -0.503559768 0.186540708 -0.409215063 -0.529698133 -0.213689834 0.0743907169 -0.232913196 -0.185101628 0.397660017 -0.150735855 -0.337135524 -0.417418599 -0.122846946 -0.210542127 0.393224418 0.192663193 -0.325373054 0.236530885 -0.292409658 0.154365718 -0.070704259 0.0739745945 0.013963283 0.30603227 -0.156710088 0.239123285 0.360412329 -0.283273786 -0.264659494 0.00922269188 -0.132681429 0.157442212 -0.316910088 0.351673126 -0.240900993 -0.16013822 0.290746808 0.442516387 0.0717800781 -0.173424289 0.137859195 0.276179641 -0.26601845 0.386972338 -0.0385678969 -0.053400863 0.401954859 -0.143155158 -0.526322842 -0.666272163 -0.251968712 -0.429590434 -0.715928912 -0.0510630906 -0.0680504218 0.00265996344 -0.356571704 0.0959999338 -0.475794643 -1.64049375 0.00699645979 0.48461175 -0.269019455 0.660984039 0.253828913 -0.135273248 -0.249618709 -0.310195029 0.0178012345 0.0875860751 -0.0232579019 -0.341026068 -0.0141169196 -0.159699515 0.29614839 -0.181557134 -0.382727236 -0.167888179 0.291541785 +tensor_densekernel0 98 +-0.278090328 0.167694762 -0.603389382 -0.072919786 -0.473416209 0.0257627629 -0.111016437 -0.158498958 0.06413652 0.0709488839 -0.238284409 -0.103018068 0.0940248519 -0.712482929 0.452788264 -0.132207453 0.374430895 -0.011697351 -0.377644747 -0.206044883 -0.29209581 -1.04475248 -0.510887921 -0.12953876 -0.443749458 0.389682233 0.220050603 0.238243982 -1.8711344 -14.3215275 -0.618982613 4.01241922 0.300326586 10.2444401 -0.489187956 2.12442446 -0.817398608 -0.603640139 -0.208331406 -12.8598404 9.94236469 -0.681795955 -0.335025132 -2.96114755 1.68887341 -0.812988997 0.108000517 3.11914444 -0.324950129 -0.580641806 1.60808384 1.60299921 -0.181748807 0.672590971 1.35443676 0.385930121 0.445829272 0.400550961 0.539326251 0.850941777 0.20272696 -0.0653304085 0.0422470458 0.580706239 -0.151057333 0.0946271792 -0.443867326 0.370835483 -0.797942162 0.273971349 -0.57654649 -0.222235814 0.718589485 0.759237349 0.231557608 0.205041274 0.0306068212 2.11715388 0.192103028 -1.81875575 -0.215855598 -0.560504973 0.182758257 0.523688197 -2.12068439 -21.0387268 0.419048011 1.13767731 -0.213471711 20.1733055 0.0617223978 1.61989152 9.03328991 12.151762 -0.204475194 -12.1932869 14.5967369 0.104337133 diff --git a/TrkHitReco/inc/DBSClusterer.hh b/TrkHitReco/inc/DBSClusterer.hh index e202b5758e..30e9a0120d 100644 --- a/TrkHitReco/inc/DBSClusterer.hh +++ b/TrkHitReco/inc/DBSClusterer.hh @@ -56,7 +56,6 @@ namespace mu2e { private: int findNeighbors (unsigned ihit, const std::vector& idx, const ComboHitCollection& chcol, std::vector& neighbors); void calculateCluster (BkgCluster& cluster, const ComboHitCollection& chcol); - void mergeClusters (std::vector& clusters, const ComboHitCollection& chcol); void dump (const std::vector& clusters); int DBSminExpand_; @@ -69,8 +68,6 @@ namespace mu2e { bool testflag_; std::string kerasW_; int diag_; - - //Need the correct Sophie description std::shared_ptr sofiePtr_; }; } diff --git a/TrkHitReco/inc/TrainBkgDiag.hxx b/TrkHitReco/inc/TrainBkgDiag.hxx index 1560427769..d719c82dd2 100644 --- a/TrkHitReco/inc/TrainBkgDiag.hxx +++ b/TrkHitReco/inc/TrainBkgDiag.hxx @@ -1,4 +1,4 @@ -//Code generated automatically by TMVA for Inference of Model file [TrainBkgDiag.h5] at [Mon Mar 9 22:45:42 2026] +//Code generated automatically by TMVA for Inference of Model file [TrainBkgDiag.h5] at [Tue Mar 17 04:45:36 2026] #ifndef ROOT_TMVA_SOFIE_TRAINBKGDIAG #define ROOT_TMVA_SOFIE_TRAINBKGDIAG @@ -20,43 +20,43 @@ namespace BLAS{ struct Session { std::vector fTensor_dense3bias0 = std::vector(1); float * tensor_dense3bias0 = fTensor_dense3bias0.data(); -std::vector fTensor_dense2bias0 = std::vector(16); +std::vector fTensor_dense2bias0 = std::vector(14); float * tensor_dense2bias0 = fTensor_dense2bias0.data(); -std::vector fTensor_dense1bias0 = std::vector(16); +std::vector fTensor_dense1bias0 = std::vector(14); float * tensor_dense1bias0 = fTensor_dense1bias0.data(); -std::vector fTensor_dense1kernel0 = std::vector(256); +std::vector fTensor_dense1kernel0 = std::vector(196); float * tensor_dense1kernel0 = fTensor_dense1kernel0.data(); -std::vector fTensor_densebias0 = std::vector(16); +std::vector fTensor_densebias0 = std::vector(14); float * tensor_densebias0 = fTensor_densebias0.data(); -std::vector fTensor_dense3kernel0 = std::vector(16); +std::vector fTensor_dense3kernel0 = std::vector(14); float * tensor_dense3kernel0 = fTensor_dense3kernel0.data(); -std::vector fTensor_dense2kernel0 = std::vector(256); +std::vector fTensor_dense2kernel0 = std::vector(196); float * tensor_dense2kernel0 = fTensor_dense2kernel0.data(); -std::vector fTensor_densekernel0 = std::vector(128); +std::vector fTensor_densekernel0 = std::vector(98); float * tensor_densekernel0 = fTensor_densekernel0.data(); std::vector fTensor_dense3Sigmoid0 = std::vector(1); float * tensor_dense3Sigmoid0 = fTensor_dense3Sigmoid0.data(); std::vector fTensor_dense3Dense = std::vector(1); float * tensor_dense3Dense = fTensor_dense3Dense.data(); -std::vector fTensor_denseDense = std::vector(16); +std::vector fTensor_denseDense = std::vector(14); float * tensor_denseDense = fTensor_denseDense.data(); std::vector fTensor_dense3bias0bcast = std::vector(1); float * tensor_dense3bias0bcast = fTensor_dense3bias0bcast.data(); -std::vector fTensor_dense2Dense = std::vector(16); +std::vector fTensor_dense2Dense = std::vector(14); float * tensor_dense2Dense = fTensor_dense2Dense.data(); -std::vector fTensor_dense1Dense = std::vector(16); +std::vector fTensor_dense1Dense = std::vector(14); float * tensor_dense1Dense = fTensor_dense1Dense.data(); -std::vector fTensor_denseRelu0 = std::vector(16); +std::vector fTensor_denseRelu0 = std::vector(14); float * tensor_denseRelu0 = fTensor_denseRelu0.data(); -std::vector fTensor_dense1bias0bcast = std::vector(16); +std::vector fTensor_dense1bias0bcast = std::vector(14); float * tensor_dense1bias0bcast = fTensor_dense1bias0bcast.data(); -std::vector fTensor_densebias0bcast = std::vector(16); +std::vector fTensor_densebias0bcast = std::vector(14); float * tensor_densebias0bcast = fTensor_densebias0bcast.data(); -std::vector fTensor_dense2bias0bcast = std::vector(16); +std::vector fTensor_dense2bias0bcast = std::vector(14); float * tensor_dense2bias0bcast = fTensor_dense2bias0bcast.data(); -std::vector fTensor_dense2Relu0 = std::vector(16); +std::vector fTensor_dense2Relu0 = std::vector(14); float * tensor_dense2Relu0 = fTensor_dense2Relu0.data(); -std::vector fTensor_dense1Relu0 = std::vector(16); +std::vector fTensor_dense1Relu0 = std::vector(14); float * tensor_dense1Relu0 = fTensor_dense1Relu0.data(); @@ -85,8 +85,8 @@ Session(std::string filename ="") { std::string err_msg = "TMVA-SOFIE failed to read the correct tensor name; expected name is tensor_dense2bias0 , read " + tensor_name; throw std::runtime_error(err_msg); } - if (length != 16) { - std::string err_msg = "TMVA-SOFIE failed to read the correct tensor size; expected size is 16 , read " + std::to_string(length) ; + if (length != 14) { + std::string err_msg = "TMVA-SOFIE failed to read the correct tensor size; expected size is 14 , read " + std::to_string(length) ; throw std::runtime_error(err_msg); } for (size_t i = 0; i < length; ++i) @@ -96,8 +96,8 @@ Session(std::string filename ="") { std::string err_msg = "TMVA-SOFIE failed to read the correct tensor name; expected name is tensor_dense1bias0 , read " + tensor_name; throw std::runtime_error(err_msg); } - if (length != 16) { - std::string err_msg = "TMVA-SOFIE failed to read the correct tensor size; expected size is 16 , read " + std::to_string(length) ; + if (length != 14) { + std::string err_msg = "TMVA-SOFIE failed to read the correct tensor size; expected size is 14 , read " + std::to_string(length) ; throw std::runtime_error(err_msg); } for (size_t i = 0; i < length; ++i) @@ -107,8 +107,8 @@ Session(std::string filename ="") { std::string err_msg = "TMVA-SOFIE failed to read the correct tensor name; expected name is tensor_dense1kernel0 , read " + tensor_name; throw std::runtime_error(err_msg); } - if (length != 256) { - std::string err_msg = "TMVA-SOFIE failed to read the correct tensor size; expected size is 256 , read " + std::to_string(length) ; + if (length != 196) { + std::string err_msg = "TMVA-SOFIE failed to read the correct tensor size; expected size is 196 , read " + std::to_string(length) ; throw std::runtime_error(err_msg); } for (size_t i = 0; i < length; ++i) @@ -118,8 +118,8 @@ Session(std::string filename ="") { std::string err_msg = "TMVA-SOFIE failed to read the correct tensor name; expected name is tensor_densebias0 , read " + tensor_name; throw std::runtime_error(err_msg); } - if (length != 16) { - std::string err_msg = "TMVA-SOFIE failed to read the correct tensor size; expected size is 16 , read " + std::to_string(length) ; + if (length != 14) { + std::string err_msg = "TMVA-SOFIE failed to read the correct tensor size; expected size is 14 , read " + std::to_string(length) ; throw std::runtime_error(err_msg); } for (size_t i = 0; i < length; ++i) @@ -129,8 +129,8 @@ Session(std::string filename ="") { std::string err_msg = "TMVA-SOFIE failed to read the correct tensor name; expected name is tensor_dense3kernel0 , read " + tensor_name; throw std::runtime_error(err_msg); } - if (length != 16) { - std::string err_msg = "TMVA-SOFIE failed to read the correct tensor size; expected size is 16 , read " + std::to_string(length) ; + if (length != 14) { + std::string err_msg = "TMVA-SOFIE failed to read the correct tensor size; expected size is 14 , read " + std::to_string(length) ; throw std::runtime_error(err_msg); } for (size_t i = 0; i < length; ++i) @@ -140,8 +140,8 @@ Session(std::string filename ="") { std::string err_msg = "TMVA-SOFIE failed to read the correct tensor name; expected name is tensor_dense2kernel0 , read " + tensor_name; throw std::runtime_error(err_msg); } - if (length != 256) { - std::string err_msg = "TMVA-SOFIE failed to read the correct tensor size; expected size is 256 , read " + std::to_string(length) ; + if (length != 196) { + std::string err_msg = "TMVA-SOFIE failed to read the correct tensor size; expected size is 196 , read " + std::to_string(length) ; throw std::runtime_error(err_msg); } for (size_t i = 0; i < length; ++i) @@ -151,26 +151,26 @@ Session(std::string filename ="") { std::string err_msg = "TMVA-SOFIE failed to read the correct tensor name; expected name is tensor_densekernel0 , read " + tensor_name; throw std::runtime_error(err_msg); } - if (length != 128) { - std::string err_msg = "TMVA-SOFIE failed to read the correct tensor size; expected size is 128 , read " + std::to_string(length) ; + if (length != 98) { + std::string err_msg = "TMVA-SOFIE failed to read the correct tensor size; expected size is 98 , read " + std::to_string(length) ; throw std::runtime_error(err_msg); } for (size_t i = 0; i < length; ++i) f >> tensor_densekernel0[i]; f.close(); { - float * data = TMVA::Experimental::SOFIE::UTILITY::UnidirectionalBroadcast(tensor_densebias0,{ 16 }, { 1 , 16 }); - std::copy(data, data + 16, tensor_densebias0bcast); + float * data = TMVA::Experimental::SOFIE::UTILITY::UnidirectionalBroadcast(tensor_densebias0,{ 14 }, { 1 , 14 }); + std::copy(data, data + 14, tensor_densebias0bcast); delete [] data; } { - float * data = TMVA::Experimental::SOFIE::UTILITY::UnidirectionalBroadcast(tensor_dense1bias0,{ 16 }, { 1 , 16 }); - std::copy(data, data + 16, tensor_dense1bias0bcast); + float * data = TMVA::Experimental::SOFIE::UTILITY::UnidirectionalBroadcast(tensor_dense1bias0,{ 14 }, { 1 , 14 }); + std::copy(data, data + 14, tensor_dense1bias0bcast); delete [] data; } { - float * data = TMVA::Experimental::SOFIE::UTILITY::UnidirectionalBroadcast(tensor_dense2bias0,{ 16 }, { 1 , 16 }); - std::copy(data, data + 16, tensor_dense2bias0bcast); + float * data = TMVA::Experimental::SOFIE::UTILITY::UnidirectionalBroadcast(tensor_dense2bias0,{ 14 }, { 1 , 14 }); + std::copy(data, data + 14, tensor_dense2bias0bcast); delete [] data; } { @@ -186,17 +186,17 @@ std::vector infer(float* tensor_input1){ char op_0_transA = 'n'; char op_0_transB = 'n'; int op_0_m = 1; - int op_0_n = 16; - int op_0_k = 8; + int op_0_n = 14; + int op_0_k = 7; float op_0_alpha = 1; float op_0_beta = 1; - int op_0_lda = 8; - int op_0_ldb = 16; - std::copy(tensor_densebias0bcast, tensor_densebias0bcast + 16, tensor_denseDense); + int op_0_lda = 7; + int op_0_ldb = 14; + std::copy(tensor_densebias0bcast, tensor_densebias0bcast + 14, tensor_denseDense); BLAS::sgemm_(&op_0_transB, &op_0_transA, &op_0_n, &op_0_m, &op_0_k, &op_0_alpha, tensor_densekernel0, &op_0_ldb, tensor_input1, &op_0_lda, &op_0_beta, tensor_denseDense, &op_0_n); //------ RELU - for (int id = 0; id < 16 ; id++){ + for (int id = 0; id < 14 ; id++){ tensor_denseRelu0[id] = ((tensor_denseDense[id] > 0 )? tensor_denseDense[id] : 0); } @@ -204,17 +204,17 @@ std::vector infer(float* tensor_input1){ char op_2_transA = 'n'; char op_2_transB = 'n'; int op_2_m = 1; - int op_2_n = 16; - int op_2_k = 16; + int op_2_n = 14; + int op_2_k = 14; float op_2_alpha = 1; float op_2_beta = 1; - int op_2_lda = 16; - int op_2_ldb = 16; - std::copy(tensor_dense1bias0bcast, tensor_dense1bias0bcast + 16, tensor_dense1Dense); + int op_2_lda = 14; + int op_2_ldb = 14; + std::copy(tensor_dense1bias0bcast, tensor_dense1bias0bcast + 14, tensor_dense1Dense); BLAS::sgemm_(&op_2_transB, &op_2_transA, &op_2_n, &op_2_m, &op_2_k, &op_2_alpha, tensor_dense1kernel0, &op_2_ldb, tensor_denseRelu0, &op_2_lda, &op_2_beta, tensor_dense1Dense, &op_2_n); //------ RELU - for (int id = 0; id < 16 ; id++){ + for (int id = 0; id < 14 ; id++){ tensor_dense1Relu0[id] = ((tensor_dense1Dense[id] > 0 )? tensor_dense1Dense[id] : 0); } @@ -222,17 +222,17 @@ std::vector infer(float* tensor_input1){ char op_4_transA = 'n'; char op_4_transB = 'n'; int op_4_m = 1; - int op_4_n = 16; - int op_4_k = 16; + int op_4_n = 14; + int op_4_k = 14; float op_4_alpha = 1; float op_4_beta = 1; - int op_4_lda = 16; - int op_4_ldb = 16; - std::copy(tensor_dense2bias0bcast, tensor_dense2bias0bcast + 16, tensor_dense2Dense); + int op_4_lda = 14; + int op_4_ldb = 14; + std::copy(tensor_dense2bias0bcast, tensor_dense2bias0bcast + 14, tensor_dense2Dense); BLAS::sgemm_(&op_4_transB, &op_4_transA, &op_4_n, &op_4_m, &op_4_k, &op_4_alpha, tensor_dense2kernel0, &op_4_ldb, tensor_dense1Relu0, &op_4_lda, &op_4_beta, tensor_dense2Dense, &op_4_n); //------ RELU - for (int id = 0; id < 16 ; id++){ + for (int id = 0; id < 14 ; id++){ tensor_dense2Relu0[id] = ((tensor_dense2Dense[id] > 0 )? tensor_dense2Dense[id] : 0); } @@ -241,10 +241,10 @@ std::vector infer(float* tensor_input1){ char op_6_transB = 'n'; int op_6_m = 1; int op_6_n = 1; - int op_6_k = 16; + int op_6_k = 14; float op_6_alpha = 1; float op_6_beta = 1; - int op_6_lda = 16; + int op_6_lda = 14; int op_6_ldb = 1; std::copy(tensor_dense3bias0bcast, tensor_dense3bias0bcast + 1, tensor_dense3Dense); BLAS::sgemm_(&op_6_transB, &op_6_transA, &op_6_n, &op_6_m, &op_6_k, &op_6_alpha, tensor_dense3kernel0, &op_6_ldb, tensor_dense2Relu0, &op_6_lda, &op_6_beta, tensor_dense3Dense, &op_6_n); diff --git a/TrkHitReco/inc/TrainBkgDiagBDT.hxx b/TrkHitReco/inc/TrainBkgDiagBDT.hxx new file mode 100644 index 0000000000..a5a5eff899 --- /dev/null +++ b/TrkHitReco/inc/TrainBkgDiagBDT.hxx @@ -0,0 +1,22562 @@ +#ifndef TRAINBKGDIAG_HXX +#define TRAINBKGDIAG_HXX + +/* * Standalone BDT Inference generated by m2cgen + */ + +namespace Mu2eML { + #include +#include +double sigmoid(double x) { + if (x < 0.0) { + double z = exp(x); + return z / (1.0 + z); + } + return 1.0 / (1.0 + exp(-x)); +} +double score(double * input) { + double var0; + if (input[1] < 96.294495) { + if (input[1] < 52.519287) { + if (input[0] < 409.8705) { + if (input[0] < 399.83472) { + var0 = 0.5739796; + } else { + if (input[4] < 14.698128) { + if (input[7] < 0.008550759) { + var0 = 0.15840723; + } else { + var0 = 0.495082; + } + } else { + if (input[6] < 0.03472593) { + var0 = -0.36410823; + } else { + var0 = 0.31320864; + } + } + } + } else { + if (input[0] < 609.04565) { + if (input[4] < 9.679946) { + if (input[3] < 6.0) { + var0 = -0.1212919; + } else { + var0 = 0.36200565; + } + } else { + if (input[3] < 6.0) { + var0 = -0.40702456; + } else { + var0 = -0.13299376; + } + } + } else { + if (input[0] < 631.8479) { + if (input[4] < 8.613837) { + var0 = 0.4093263; + } else { + var0 = 0.058798913; + } + } else { + if (input[0] < 647.514) { + var0 = 0.3893451; + } else { + var0 = 0.5180014; + } + } + } + } + } else { + if (input[0] < 647.514) { + if (input[0] < 615.92804) { + if (input[3] < 9.0) { + if (input[0] < 415.7414) { + var0 = 0.28047615; + } else { + var0 = -0.566803; + } + } else { + if (input[4] < 12.786485) { + var0 = 0.36051953; + } else { + var0 = -0.46027157; + } + } + } else { + if (input[3] < 11.0) { + if (input[1] < 55.399048) { + var0 = -0.31346208; + } else { + var0 = -0.494605; + } + } else { + if (input[2] < 0.10368276) { + var0 = 0.48624012; + } else { + var0 = -0.034797892; + } + } + } + } else { + if (input[0] < 670.5355) { + if (input[3] < 10.0) { + if (input[1] < 55.399048) { + var0 = -0.13656144; + } else { + var0 = -0.4054964; + } + } else { + if (input[5] < 21.164618) { + var0 = 0.43391067; + } else { + var0 = -0.13282871; + } + } + } else { + if (input[3] < 8.0) { + if (input[1] < 77.55432) { + var0 = -0.090880975; + } else { + var0 = -0.3141613; + } + } else { + if (input[1] < 78.21661) { + var0 = 0.44061485; + } else { + var0 = -0.19031934; + } + } + } + } + } + } else { + if (input[3] < 11.0) { + if (input[7] < 0.004288183) { + if (input[0] < 640.0981) { + if (input[0] < 437.31543) { + if (input[6] < 0.04715824) { + var0 = -0.34264153; + } else { + var0 = 0.25312343; + } + } else { + if (input[1] < 255.84222) { + var0 = -0.25092208; + } else { + var0 = -0.021982837; + } + } + } else { + if (input[0] < 662.8972) { + if (input[1] < 153.67346) { + var0 = 0.2940573; + } else { + var0 = 0.012932051; + } + } else { + if (input[1] < 289.02704) { + var0 = 0.2619668; + } else { + var0 = 0.44908363; + } + } + } + } else { + if (input[3] < 8.0) { + if (input[0] < 643.69525) { + if (input[0] < 444.15787) { + var0 = 0.32449108; + } else { + var0 = 0.018949285; + } + } else { + if (input[0] < 672.7553) { + var0 = 0.32652354; + } else { + var0 = 0.50369257; + } + } + } else { + if (input[7] < 0.008375866) { + if (input[4] < 38.459763) { + var0 = 0.30745634; + } else { + var0 = -0.27973735; + } + } else { + if (input[4] < 31.472792) { + var0 = 0.5010632; + } else { + var0 = 0.047983274; + } + } + } + } + } else { + if (input[7] < 0.0036698799) { + if (input[2] < 0.24309075) { + if (input[6] < 0.09237537) { + if (input[4] < 46.88934) { + var0 = 0.27885872; + } else { + var0 = -0.22800085; + } + } else { + if (input[3] < 16.0) { + var0 = 0.3606429; + } else { + var0 = 0.5762738; + } + } + } else { + if (input[0] < 471.70917) { + if (input[0] < 439.05417) { + var0 = 0.53856945; + } else { + var0 = 0.21777971; + } + } else { + if (input[4] < 51.153934) { + var0 = 0.16547482; + } else { + var0 = -0.39767256; + } + } + } + } else { + if (input[7] < 0.00513642) { + if (input[4] < 54.08032) { + if (input[3] < 16.0) { + var0 = 0.41079006; + } else { + var0 = 0.5433882; + } + } else { + if (input[3] < 30.0) { + var0 = -0.32058975; + } else { + var0 = 0.38242823; + } + } + } else { + if (input[3] < 14.0) { + if (input[4] < 37.62948) { + var0 = 0.5484211; + } else { + var0 = 0.16701388; + } + } else { + if (input[4] < 51.153934) { + var0 = 0.5912309; + } else { + var0 = 0.47744575; + } + } + } + } + } + } + double var1; + if (input[1] < 96.294495) { + if (input[1] < 52.519287) { + if (input[0] < 415.7414) { + if (input[0] < 403.76456) { + if (input[0] < 399.83472) { + if (input[6] < 0.062583044) { + var1 = 0.44420105; + } else { + var1 = 0.18551737; + } + } else { + if (input[3] < 6.0) { + var1 = 0.2623613; + } else { + var1 = 0.45950663; + } + } + } else { + if (input[4] < 21.927938) { + if (input[4] < 9.192085) { + var1 = 0.4541049; + } else { + var1 = 0.17730945; + } + } else { + if (input[5] < 18.949379) { + var1 = 0.28905395; + } else { + var1 = -0.3041917; + } + } + } + } else { + if (input[0] < 592.9258) { + if (input[4] < 5.1584697) { + if (input[5] < 17.986216) { + var1 = 0.36797982; + } else { + var1 = 0.07634347; + } + } else { + if (input[5] < 17.003792) { + var1 = 0.045417774; + } else { + var1 = -0.29752183; + } + } + } else { + if (input[0] < 630.6033) { + if (input[5] < 19.473267) { + var1 = 0.24971192; + } else { + var1 = -0.013609614; + } + } else { + if (input[0] < 647.514) { + var1 = 0.2822963; + } else { + var1 = 0.39157888; + } + } + } + } + } else { + if (input[0] < 629.365) { + if (input[3] < 10.0) { + if (input[0] < 579.40393) { + if (input[0] < 427.4725) { + var1 = 0.010370135; + } else { + var1 = -0.4396803; + } + } else { + if (input[1] < 53.298767) { + var1 = -0.282735; + } else { + var1 = -0.41037914; + } + } + } else { + if (input[2] < 0.07034141) { + if (input[5] < 23.824898) { + var1 = 0.38543284; + } else { + var1 = -0.15534267; + } + } else { + if (input[5] < 20.485325) { + var1 = -0.087964684; + } else { + var1 = -0.3817848; + } + } + } + } else { + if (input[0] < 668.3814) { + if (input[3] < 9.0) { + if (input[1] < 55.399048) { + var1 = -0.14964122; + } else { + var1 = -0.33805183; + } + } else { + if (input[4] < 23.34669) { + var1 = 0.47574446; + } else { + var1 = -0.1372876; + } + } + } else { + if (input[3] < 8.0) { + if (input[2] < 0.08450693) { + var1 = -0.07832943; + } else { + var1 = -0.2690299; + } + } else { + if (input[1] < 78.21661) { + var1 = 0.35319614; + } else { + var1 = -0.15327981; + } + } + } + } + } + } else { + if (input[3] < 10.0) { + if (input[7] < 0.0061051412) { + if (input[0] < 624.53723) { + if (input[0] < 440.8873) { + if (input[6] < 0.041540217) { + var1 = -0.24340566; + } else { + var1 = 0.18732752; + } + } else { + if (input[1] < 255.84222) { + var1 = -0.18256785; + } else { + var1 = 0.023306511; + } + } + } else { + if (input[0] < 658.2878) { + if (input[1] < 150.89111) { + var1 = 0.25817215; + } else { + var1 = -0.0036412643; + } + } else { + if (input[4] < 34.13175) { + var1 = 0.30225742; + } else { + var1 = 0.1316707; + } + } + } + } else { + if (input[1] < 255.84222) { + if (input[1] < 147.89758) { + if (input[3] < 7.0) { + var1 = 0.12837149; + } else { + var1 = 0.4178888; + } + } else { + if (input[0] < 646.2121) { + var1 = -0.007036889; + } else { + var1 = 0.26628998; + } + } + } else { + if (input[1] < 381.45337) { + if (input[5] < 20.750168) { + var1 = 0.42541185; + } else { + var1 = 0.29750893; + } + } else { + if (input[4] < 36.36606) { + var1 = 0.45941597; + } else { + var1 = -0.004462251; + } + } + } + } + } else { + if (input[7] < 0.0033036456) { + if (input[6] < 0.5004946) { + if (input[4] < 49.35926) { + if (input[3] < 13.0) { + var1 = 0.010645548; + } else { + var1 = 0.26446223; + } + } else { + if (input[3] < 23.0) { + var1 = -0.33923697; + } else { + var1 = 0.09932182; + } + } + } else { + if (input[3] < 22.0) { + if (input[2] < 0.18825138) { + var1 = 0.34778628; + } else { + var1 = 0.060296495; + } + } else { + if (input[2] < 0.300006) { + var1 = 0.4768464; + } else { + var1 = 0.32630646; + } + } + } + } else { + if (input[7] < 0.0049699554) { + if (input[4] < 54.08032) { + if (input[3] < 13.0) { + var1 = 0.22332211; + } else { + var1 = 0.378719; + } + } else { + if (input[3] < 21.0) { + var1 = -0.4359205; + } else { + var1 = 0.08509123; + } + } + } else { + if (input[3] < 12.0) { + if (input[4] < 34.540356) { + var1 = 0.39566925; + } else { + var1 = 0.05141637; + } + } else { + if (input[7] < 0.0064245304) { + var1 = 0.41907132; + } else { + var1 = 0.4569933; + } + } + } + } + } + } + double var2; + if (input[1] < 96.294495) { + if (input[1] < 52.519287) { + if (input[0] < 425.37012) { + if (input[4] < 17.239592) { + if (input[3] < 6.0) { + if (input[0] < 399.83472) { + var2 = 0.37581798; + } else { + var2 = 0.19729574; + } + } else { + if (input[2] < 0.008977376) { + var2 = 0.4140837; + } else { + var2 = 0.0049056085; + } + } + } else { + if (input[6] < 0.041540217) { + if (input[5] < 17.90769) { + var2 = 0.11978697; + } else { + var2 = -0.3450795; + } + } else { + if (input[4] < 24.423347) { + var2 = 0.31307814; + } else { + var2 = -0.13900556; + } + } + } + } else { + if (input[0] < 588.9621) { + if (input[3] < 7.0) { + if (input[4] < 13.053429) { + var2 = -0.10318263; + } else { + var2 = -0.2684223; + } + } else { + if (input[2] < 0.008977376) { + var2 = 0.48059854; + } else { + var2 = -0.17692554; + } + } + } else { + if (input[0] < 631.8479) { + if (input[4] < 13.317816) { + var2 = 0.1766314; + } else { + var2 = -0.042429496; + } + } else { + if (input[2] < 0.017481804) { + var2 = 0.30915973; + } else { + var2 = 0.114156894; + } + } + } + } + } else { + if (input[0] < 626.9239) { + if (input[3] < 8.0) { + if (input[2] < 0.06679523) { + if (input[0] < 431.5945) { + var2 = 0.3012848; + } else { + var2 = -0.34841886; + } + } else { + if (input[1] < 54.414856) { + var2 = -0.34131616; + } else { + var2 = -0.38402382; + } + } + } else { + if (input[4] < 21.405123) { + if (input[5] < 19.524868) { + var2 = 0.13238464; + } else { + var2 = -0.21678917; + } + } else { + if (input[3] < 12.0) { + var2 = -0.33850223; + } else { + var2 = 0.07158532; + } + } + } + } else { + if (input[0] < 675.009) { + if (input[3] < 11.0) { + if (input[1] < 55.399048) { + var2 = -0.10589461; + } else { + var2 = -0.2552641; + } + } else { + if (input[2] < 0.112553775) { + var2 = 0.4326715; + } else { + var2 = 0.0051788525; + } + } + } else { + if (input[5] < 18.437906) { + if (input[0] < 685.8291) { + var2 = 0.032379527; + } else { + var2 = 0.24467883; + } + } else { + if (input[1] < 78.480835) { + var2 = -0.018822443; + } else { + var2 = -0.21219136; + } + } + } + } + } + } else { + if (input[3] < 12.0) { + if (input[7] < 0.003726883) { + if (input[0] < 615.92804) { + if (input[0] < 418.34677) { + if (input[6] < 0.064966485) { + var2 = 0.006911916; + } else { + var2 = 0.33039495; + } + } else { + if (input[7] < 0.002544325) { + var2 = -0.20859733; + } else { + var2 = -0.10075294; + } + } + } else { + if (input[2] < 0.17603564) { + if (input[1] < 272.0462) { + var2 = 0.029668147; + } else { + var2 = 0.21624129; + } + } else { + if (input[1] < 460.6717) { + var2 = -0.2803981; + } else { + var2 = 0.26952133; + } + } + } + } else { + if (input[1] < 255.84222) { + if (input[7] < 0.01122595) { + if (input[3] < 7.0) { + var2 = -0.05488918; + } else { + var2 = 0.09715689; + } + } else { + if (input[3] < 7.0) { + var2 = 0.13371827; + } else { + var2 = 0.31651813; + } + } + } else { + if (input[7] < 0.0067613916) { + if (input[5] < 18.892052) { + var2 = 0.38788092; + } else { + var2 = 0.1592363; + } + } else { + if (input[1] < 376.36365) { + var2 = 0.2915667; + } else { + var2 = 0.37401822; + } + } + } + } + } else { + if (input[4] < 45.96011) { + if (input[7] < 0.004422581) { + if (input[3] < 15.0) { + if (input[4] < 39.41097) { + var2 = 0.29021442; + } else { + var2 = 0.05910119; + } + } else { + if (input[5] < 24.9099) { + var2 = 0.37534067; + } else { + var2 = 0.24420491; + } + } + } else { + if (input[3] < 16.0) { + if (input[4] < 34.82185) { + var2 = 0.36855355; + } else { + var2 = 0.23121081; + } + } else { + if (input[5] < 26.584965) { + var2 = 0.39800757; + } else { + var2 = 0.368251; + } + } + } + } else { + if (input[3] < 22.0) { + if (input[7] < 0.00022194226) { + if (input[2] < 0.27443242) { + var2 = 0.2930042; + } else { + var2 = -0.10641442; + } + } else { + if (input[4] < 54.08032) { + var2 = -0.0449347; + } else { + var2 = -0.31447566; + } + } + } else { + if (input[2] < 0.3723327) { + if (input[3] < 31.0) { + var2 = 0.24314342; + } else { + var2 = 0.40237078; + } + } else { + if (input[3] < 36.0) { + var2 = -0.2725906; + } else { + var2 = 0.2539957; + } + } + } + } + } + } + double var3; + if (input[1] < 96.294495) { + if (input[2] < 0.008977376) { + if (input[3] < 6.0) { + if (input[0] < 406.91656) { + if (input[0] < 399.83472) { + if (input[5] < 27.204857) { + var3 = 0.33670986; + } else { + var3 = 0.18860324; + } + } else { + if (input[5] < 20.352009) { + var3 = 0.36650148; + } else { + var3 = 0.07176247; + } + } + } else { + if (input[0] < 592.9258) { + if (input[4] < 3.4118037) { + var3 = 0.1854313; + } else { + var3 = -0.1888334; + } + } else { + if (input[0] < 635.4403) { + var3 = -0.0076091876; + } else { + var3 = 0.21823044; + } + } + } + } else { + if (input[1] < 54.414856) { + if (input[5] < 23.215124) { + if (input[3] < 7.0) { + var3 = 0.32124752; + } else { + var3 = 0.42088413; + } + } else { + if (input[4] < 16.083313) { + var3 = 0.20336524; + } else { + var3 = -0.076192975; + } + } + } else { + if (input[4] < 5.1584697) { + var3 = 0.14375629; + } else { + if (input[0] < 649.94415) { + var3 = -0.31798527; + } else { + var3 = -0.05167107; + } + } + } + } + } else { + if (input[0] < 622.0128) { + if (input[3] < 8.0) { + if (input[1] < 54.414856) { + if (input[0] < 550.7292) { + var3 = -0.31367952; + } else { + var3 = -0.22153427; + } + } else { + if (input[1] < 59.12854) { + var3 = -0.34877792; + } else { + var3 = -0.31623185; + } + } + } else { + if (input[1] < 77.55432) { + if (input[5] < 18.639524) { + var3 = 0.25690573; + } else { + var3 = -0.18698017; + } + } else { + if (input[0] < 454.6105) { + var3 = 0.31618577; + } else { + var3 = -0.31227413; + } + } + } + } else { + if (input[0] < 657.11444) { + if (input[2] < 0.07323933) { + if (input[3] < 9.0) { + var3 = -0.16865952; + } else { + var3 = 0.34776333; + } + } else { + if (input[1] < 77.55432) { + var3 = -0.2329794; + } else { + var3 = -0.3346637; + } + } + } else { + if (input[3] < 8.0) { + if (input[1] < 55.399048) { + var3 = 0.049308002; + } else { + var3 = -0.12850037; + } + } else { + if (input[1] < 77.55432) { + var3 = 0.41330504; + } else { + var3 = -0.05503421; + } + } + } + } + } + } else { + if (input[3] < 12.0) { + if (input[4] < 27.141476) { + if (input[3] < 7.0) { + if (input[0] < 605.7406) { + if (input[0] < 418.34677) { + var3 = 0.26532623; + } else { + var3 = -0.035553966; + } + } else { + if (input[1] < 150.89111) { + var3 = 0.2685559; + } else { + var3 = 0.11504838; + } + } + } else { + if (input[1] < 147.89758) { + if (input[6] < 0.04715824) { + var3 = 0.2987848; + } else { + var3 = 0.42224914; + } + } else { + if (input[3] < 9.0) { + var3 = 0.084588796; + } else { + var3 = 0.2722083; + } + } + } + } else { + if (input[0] < 658.2878) { + if (input[1] < 255.84222) { + if (input[1] < 147.89758) { + var3 = 0.013357962; + } else { + var3 = -0.1717157; + } + } else { + if (input[4] < 38.911335) { + var3 = 0.100643076; + } else { + var3 = -0.13375117; + } + } + } else { + if (input[1] < 255.84222) { + if (input[2] < 0.14738971) { + var3 = 0.13253845; + } else { + var3 = -0.1966184; + } + } else { + if (input[2] < 0.21310979) { + var3 = 0.28282008; + } else { + var3 = -0.35031053; + } + } + } + } + } else { + if (input[7] < 0.0041569136) { + if (input[2] < 0.27443242) { + if (input[3] < 17.0) { + if (input[4] < 42.829258) { + var3 = 0.20541076; + } else { + var3 = -0.06228376; + } + } else { + if (input[5] < 21.6294) { + var3 = 0.38919058; + } else { + var3 = 0.25216642; + } + } + } else { + if (input[0] < 485.39822) { + if (input[3] < 15.0) { + var3 = 0.085008964; + } else { + var3 = 0.3629604; + } + } else { + if (input[4] < 58.806583) { + var3 = 0.09476666; + } else { + var3 = -0.31547883; + } + } + } + } else { + if (input[7] < 0.005805585) { + if (input[4] < 49.35926) { + if (input[6] < 0.036230333) { + var3 = 0.10510117; + } else { + var3 = 0.29533738; + } + } else { + if (input[3] < 24.0) { + var3 = -0.38900295; + } else { + var3 = 0.1807513; + } + } + } else { + if (input[3] < 16.0) { + if (input[4] < 39.41097) { + var3 = 0.33237845; + } else { + var3 = -0.1737086; + } + } else { + if (input[6] < 0.059820402) { + var3 = 0.36482313; + } else { + var3 = 0.33763573; + } + } + } + } + } + } + double var4; + if (input[1] < 96.294495) { + if (input[1] < 52.519287) { + if (input[0] < 431.5945) { + if (input[4] < 14.698128) { + if (input[5] < 20.57342) { + if (input[6] < 0.0051328884) { + var4 = 0.24856745; + } else { + var4 = 0.3920412; + } + } else { + if (input[6] < 0.022136807) { + var4 = 0.165372; + } else { + var4 = 0.33399463; + } + } + } else { + if (input[6] < 0.035672467) { + if (input[5] < 16.555506) { + var4 = 0.23798619; + } else { + var4 = -0.28398877; + } + } else { + if (input[4] < 22.134548) { + var4 = 0.30093926; + } else { + var4 = 0.0009469486; + } + } + } + } else { + if (input[0] < 572.0283) { + if (input[5] < 17.90769) { + if (input[5] < 14.48199) { + var4 = 0.2520964; + } else { + var4 = 0.0025921718; + } + } else { + if (input[4] < 13.793873) { + var4 = -0.095126875; + } else { + var4 = -0.20818481; + } + } + } else { + if (input[0] < 625.711) { + if (input[4] < 8.613837) { + var4 = 0.17294854; + } else { + var4 = -0.03528382; + } + } else { + if (input[0] < 666.15076) { + var4 = 0.15081853; + } else { + var4 = 0.2999773; + } + } + } + } + } else { + if (input[0] < 615.92804) { + if (input[4] < 14.26258) { + if (input[3] < 7.0) { + if (input[4] < 6.3997884) { + var4 = -0.059609015; + } else { + var4 = -0.25240818; + } + } else { + if (input[5] < 18.437906) { + var4 = 0.22108808; + } else { + var4 = -0.115203775; + } + } + } else { + if (input[3] < 8.0) { + if (input[0] < 573.7609) { + var4 = -0.31128016; + } else { + var4 = -0.2708069; + } + } else { + if (input[4] < 25.82959) { + var4 = -0.11814686; + } else { + var4 = -0.2803764; + } + } + } + } else { + if (input[0] < 653.56573) { + if (input[3] < 9.0) { + if (input[1] < 55.399048) { + var4 = -0.071096525; + } else { + var4 = -0.21242705; + } + } else { + if (input[1] < 77.55432) { + var4 = 0.34997338; + } else { + var4 = -0.074446835; + } + } + } else { + if (input[5] < 21.282642) { + if (input[1] < 78.383545) { + var4 = 0.05198471; + } else { + var4 = -0.13520893; + } + } else { + if (input[0] < 680.3219) { + var4 = -0.16062467; + } else { + var4 = -0.0030852018; + } + } + } + } + } + } else { + if (input[3] < 13.0) { + if (input[7] < 0.007193277) { + if (input[0] < 667.30505) { + if (input[0] < 429.60077) { + if (input[3] < 7.0) { + var4 = 0.0469773; + } else { + var4 = 0.30648074; + } + } else { + if (input[4] < 38.23957) { + var4 = -0.019664988; + } else { + var4 = -0.1427575; + } + } + } else { + if (input[1] < 289.02704) { + if (input[2] < 0.112553775) { + var4 = 0.20449062; + } else { + var4 = -0.0039130673; + } + } else { + if (input[2] < 0.18675008) { + var4 = 0.2975944; + } else { + var4 = -0.061050404; + } + } + } + } else { + if (input[1] < 255.84222) { + if (input[4] < 21.723177) { + if (input[7] < 0.018963357) { + var4 = 0.07626941; + } else { + var4 = 0.2121733; + } + } else { + if (input[0] < 600.2424) { + var4 = -0.11999158; + } else { + var4 = 0.1055148; + } + } + } else { + if (input[5] < 20.880156) { + if (input[6] < 0.060177866) { + var4 = 0.32097572; + } else { + var4 = -0.028571123; + } + } else { + if (input[1] < 376.36365) { + var4 = 0.180455; + } else { + var4 = 0.29552168; + } + } + } + } + } else { + if (input[4] < 45.20362) { + if (input[7] < 0.0048943935) { + if (input[5] < 23.064898) { + if (input[3] < 16.0) { + var4 = 0.24240245; + } else { + var4 = 0.32154292; + } + } else { + if (input[6] < 0.04336643) { + var4 = -0.17028207; + } else { + var4 = 0.16175969; + } + } + } else { + if (input[3] < 17.0) { + if (input[4] < 35.71706) { + var4 = 0.3066491; + } else { + var4 = 0.14671345; + } + } else { + if (input[5] < 24.673338) { + var4 = 0.34201175; + } else { + var4 = 0.31642103; + } + } + } + } else { + if (input[3] < 27.0) { + if (input[7] < 0.00022194226) { + if (input[2] < 0.22287011) { + var4 = 0.28981873; + } else { + var4 = -0.006165528; + } + } else { + if (input[4] < 58.806583) { + var4 = 0.009483793; + } else { + var4 = -0.27900052; + } + } + } else { + if (input[2] < 0.3723327) { + if (input[3] < 31.0) { + var4 = 0.20934898; + } else { + var4 = 0.3319599; + } + } else { + if (input[0] < 586.0259) { + var4 = 0.24210046; + } else { + var4 = -0.14975837; + } + } + } + } + } + } + double var5; + if (input[3] < 9.0) { + if (input[1] < 96.294495) { + if (input[1] < 52.952087) { + if (input[3] < 6.0) { + if (input[4] < 7.9895897) { + if (input[0] < 451.8147) { + var5 = 0.2594754; + } else { + var5 = 0.010059318; + } + } else { + if (input[5] < 19.882984) { + var5 = -0.006142803; + } else { + var5 = -0.13853726; + } + } + } else { + if (input[2] < 0.008977376) { + if (input[5] < 22.832607) { + var5 = 0.27522913; + } else { + var5 = 0.07530433; + } + } else { + if (input[0] < 619.6026) { + var5 = -0.2164002; + } else { + var5 = 0.17443287; + } + } + } + } else { + if (input[0] < 615.92804) { + if (input[2] < 0.06494424) { + if (input[0] < 433.54276) { + var5 = 0.3914893; + } else { + var5 = -0.23385584; + } + } else { + if (input[1] < 54.414856) { + var5 = -0.222313; + } else { + var5 = -0.2890437; + } + } + } else { + if (input[2] < 0.07443881) { + if (input[3] < 7.0) { + var5 = -0.101719745; + } else { + var5 = 0.084399834; + } + } else { + if (input[1] < 77.55432) { + var5 = -0.13779084; + } else { + var5 = -0.26194736; + } + } + } + } + } else { + if (input[0] < 598.1789) { + if (input[0] < 455.97122) { + if (input[7] < 0.005177345) { + if (input[6] < 0.048940413) { + var5 = -0.19243221; + } else { + var5 = 0.09241978; + } + } else { + if (input[3] < 6.0) { + var5 = 0.06791069; + } else { + var5 = 0.21067424; + } + } + } else { + if (input[1] < 272.0462) { + if (input[4] < 16.582067) { + var5 = 0.024640463; + } else { + var5 = -0.11578628; + } + } else { + if (input[5] < 18.220026) { + var5 = 0.27968743; + } else { + var5 = 0.018035347; + } + } + } + } else { + if (input[5] < 19.831963) { + if (input[4] < 32.274986) { + if (input[4] < 16.909874) { + var5 = 0.3009187; + } else { + var5 = 0.18988004; + } + } else { + if (input[5] < 13.509364) { + var5 = 0.39916623; + } else { + var5 = 0.036566243; + } + } + } else { + if (input[1] < 150.89111) { + if (input[3] < 8.0) { + var5 = 0.1394383; + } else { + var5 = 0.3174048; + } + } else { + if (input[1] < 255.84222) { + var5 = -0.053451363; + } else { + var5 = 0.11842262; + } + } + } + } + } + } else { + if (input[7] < 0.005354749) { + if (input[4] < 38.23957) { + if (input[5] < 21.6294) { + if (input[1] < 81.0188) { + if (input[4] < 26.84426) { + var5 = 0.37148744; + } else { + var5 = -0.1090986; + } + } else { + if (input[1] < 149.04504) { + var5 = 0.4170559; + } else { + var5 = 0.22925365; + } + } + } else { + if (input[6] < 0.049783602) { + if (input[0] < 583.14703) { + var5 = -0.10988006; + } else { + var5 = 0.08554778; + } + } else { + if (input[1] < 148.60223) { + var5 = 0.3553092; + } else { + var5 = 0.16490772; + } + } + } + } else { + if (input[3] < 16.0) { + if (input[0] < 461.0655) { + if (input[6] < 0.08433238) { + var5 = -0.068396196; + } else { + var5 = 0.27476063; + } + } else { + if (input[5] < 19.188658) { + var5 = 0.116125405; + } else { + var5 = -0.12014901; + } + } + } else { + if (input[2] < 0.32127088) { + if (input[6] < 0.044667512) { + var5 = -0.37180737; + } else { + var5 = 0.19510545; + } + } else { + if (input[0] < 485.39822) { + var5 = 0.2911489; + } else { + var5 = -0.19803637; + } + } + } + } + } else { + if (input[3] < 14.0) { + if (input[4] < 23.075237) { + if (input[5] < 21.785055) { + if (input[4] < 15.897472) { + var5 = 0.34729832; + } else { + var5 = 0.29479; + } + } else { + if (input[0] < 454.6105) { + var5 = 0.3263851; + } else { + var5 = 0.19781403; + } + } + } else { + if (input[6] < 0.027742133) { + if (input[0] < 652.3909) { + var5 = -0.2542954; + } else { + var5 = 0.12896706; + } + } else { + if (input[4] < 34.26512) { + var5 = 0.20223959; + } else { + var5 = -0.022584856; + } + } + } + } else { + if (input[7] < 0.0074036974) { + if (input[4] < 47.95029) { + if (input[5] < 22.68546) { + var5 = 0.31404662; + } else { + var5 = 0.24943624; + } + } else { + if (input[3] < 25.0) { + var5 = -0.5779298; + } else { + var5 = 0.23285389; + } + } + } else { + if (input[5] < 33.48466) { + if (input[0] < 570.25055) { + var5 = 0.30642104; + } else { + var5 = 0.3297264; + } + } else { + if (input[2] < 0.300006) { + var5 = 0.23966265; + } else { + var5 = -0.17268527; + } + } + } + } + } + } + double var6; + if (input[1] < 272.0462) { + if (input[1] < 81.83862) { + if (input[1] < 54.414856) { + if (input[3] < 6.0) { + if (input[4] < 14.046501) { + if (input[0] < 447.375) { + var6 = 0.17204899; + } else { + var6 = -0.03443189; + } + } else { + if (input[0] < 557.74005) { + var6 = -0.15824066; + } else { + var6 = -0.056619834; + } + } + } else { + if (input[5] < 21.40085) { + if (input[3] < 7.0) { + var6 = 0.16362226; + } else { + var6 = 0.37616643; + } + } else { + if (input[4] < 10.959761) { + var6 = 0.18993263; + } else { + var6 = -0.041869774; + } + } + } + } else { + if (input[0] < 622.0128) { + if (input[1] < 59.12854) { + if (input[3] < 8.0) { + var6 = -0.27827194; + } else { + var6 = -0.1200404; + } + } else { + if (input[1] < 78.21661) { + var6 = -0.09793901; + } else { + var6 = -0.26317522; + } + } + } else { + if (input[1] < 56.73535) { + if (input[3] < 8.0) { + var6 = -0.18279098; + } else { + var6 = 0.20636816; + } + } else { + if (input[1] < 77.55432) { + var6 = 0.07611321; + } else { + var6 = -0.14790167; + } + } + } + } + } else { + if (input[1] < 147.89758) { + if (input[1] < 121.57103) { + if (input[3] < 7.0) { + if (input[0] < 573.7609) { + var6 = -0.14964253; + } else { + var6 = 0.055644825; + } + } else { + if (input[4] < 31.694513) { + var6 = 0.23797266; + } else { + var6 = 0.05534341; + } + } + } else { + if (input[3] < 9.0) { + if (input[3] < 6.0) { + var6 = 0.0773767; + } else { + var6 = 0.1802769; + } + } else { + if (input[6] < 0.05220808) { + var6 = 0.30137426; + } else { + var6 = 0.35950232; + } + } + } + } else { + if (input[5] < 19.783344) { + if (input[1] < 191.00214) { + if (input[0] < 581.3013) { + var6 = -0.09809481; + } else { + var6 = 0.0989347; + } + } else { + if (input[5] < 16.792095) { + var6 = 0.21461582; + } else { + var6 = 0.08677187; + } + } + } else { + if (input[0] < 668.3814) { + if (input[1] < 177.04877) { + var6 = -0.13919559; + } else { + var6 = -0.050769314; + } + } else { + if (input[4] < 30.692364) { + var6 = 0.17033058; + } else { + var6 = -0.027853027; + } + } + } + } + } + } else { + if (input[7] < 0.005489262) { + if (input[5] < 21.40085) { + if (input[5] < 17.493734) { + if (input[2] < 0.23503518) { + if (input[5] < 13.509364) { + var6 = 0.40216357; + } else { + var6 = 0.27204877; + } + } else { + if (input[1] < 465.96875) { + var6 = -0.23961093; + } else { + var6 = 0.2855509; + } + } + } else { + if (input[3] < 13.0) { + if (input[2] < 0.2476418) { + var6 = 0.113707595; + } else { + var6 = -0.20821983; + } + } else { + if (input[2] < 0.24309075) { + var6 = 0.25904232; + } else { + var6 = 0.099659465; + } + } + } + } else { + if (input[4] < 43.929493) { + if (input[1] < 460.6717) { + if (input[6] < 0.053143427) { + var6 = -0.031530418; + } else { + var6 = 0.090219066; + } + } else { + if (input[6] < 0.04355297) { + var6 = 0.016696157; + } else { + var6 = 0.21483849; + } + } + } else { + if (input[6] < 0.5004946) { + if (input[6] < 0.054671705) { + var6 = -0.38562247; + } else { + var6 = -0.09039822; + } + } else { + if (input[0] < 512.96185) { + var6 = 0.2892262; + } else { + var6 = 0.09203703; + } + } + } + } + } else { + if (input[1] < 421.82605) { + if (input[5] < 20.662508) { + if (input[3] < 10.0) { + if (input[6] < 0.059464313) { + var6 = 0.20134254; + } else { + var6 = -0.36217633; + } + } else { + if (input[4] < 41.197132) { + var6 = 0.29896957; + } else { + var6 = -0.029389983; + } + } + } else { + if (input[4] < 34.974888) { + if (input[3] < 12.0) { + var6 = 0.10228274; + } else { + var6 = 0.24907446; + } + } else { + if (input[3] < 17.0) { + var6 = -0.39167222; + } else { + var6 = 0.16864932; + } + } + } + } else { + if (input[5] < 23.947874) { + if (input[1] < 521.543) { + if (input[5] < 21.592127) { + var6 = 0.31095937; + } else { + var6 = 0.22091699; + } + } else { + if (input[4] < 46.88934) { + var6 = 0.31435093; + } else { + var6 = 0.20144199; + } + } + } else { + if (input[7] < 0.008375866) { + if (input[6] < 0.0413519) { + var6 = 0.07394248; + } else { + var6 = 0.25408235; + } + } else { + if (input[6] < 0.09936261) { + var6 = 0.28580487; + } else { + var6 = -0.076252826; + } + } + } + } + } + } + double var7; + if (input[1] < 432.44418) { + if (input[1] < 81.83862) { + if (input[2] < 0.033970356) { + if (input[0] < 435.46625) { + if (input[0] < 403.76456) { + if (input[0] < 399.83472) { + var7 = 0.28361258; + } else { + var7 = 0.16621111; + } + } else { + if (input[6] < 0.027742133) { + var7 = -0.012959738; + } else { + var7 = 0.16142155; + } + } + } else { + if (input[0] < 588.9621) { + if (input[4] < 5.1584697) { + var7 = 0.053607214; + } else { + var7 = -0.10465012; + } + } else { + if (input[4] < 6.3997884) { + var7 = 0.2138098; + } else { + var7 = 0.033866953; + } + } + } + } else { + if (input[0] < 602.4093) { + if (input[2] < 0.10014308) { + if (input[3] < 8.0) { + var7 = -0.20842719; + } else { + var7 = -0.051825013; + } + } else { + if (input[3] < 12.0) { + var7 = -0.26293185; + } else { + var7 = 0.10310472; + } + } + } else { + if (input[0] < 665.0621) { + if (input[1] < 78.21661) { + var7 = -0.071184434; + } else { + var7 = -0.18447497; + } + } else { + if (input[5] < 25.194532) { + var7 = 0.060802426; + } else { + var7 = -0.121479586; + } + } + } + } + } else { + if (input[4] < 29.561077) { + if (input[3] < 9.0) { + if (input[6] < 0.049576316) { + if (input[4] < 21.723177) { + var7 = 0.052622408; + } else { + var7 = -0.045598507; + } + } else { + if (input[4] < 25.647543) { + var7 = 0.2512787; + } else { + var7 = 0.09161566; + } + } + } else { + if (input[5] < 22.133734) { + if (input[1] < 148.36841) { + var7 = 0.32684872; + } else { + var7 = 0.22283432; + } + } else { + if (input[1] < 170.5625) { + var7 = 0.2670378; + } else { + var7 = 0.083376825; + } + } + } + } else { + if (input[3] < 14.0) { + if (input[0] < 654.6809) { + if (input[6] < 0.04373461) { + var7 = -0.17092204; + } else { + var7 = -0.04193461; + } + } else { + if (input[5] < 19.473267) { + var7 = 0.14254001; + } else { + var7 = 0.02352188; + } + } + } else { + if (input[4] < 41.570618) { + if (input[3] < 17.0) { + var7 = 0.15910703; + } else { + var7 = 0.2813953; + } + } else { + if (input[3] < 18.0) { + var7 = -0.039366826; + } else { + var7 = 0.19210438; + } + } + } + } + } + } else { + if (input[7] < 0.0048943935) { + if (input[2] < 0.28529787) { + if (input[6] < 0.113757454) { + if (input[4] < 51.153934) { + if (input[5] < 20.308914) { + var7 = 0.2706435; + } else { + var7 = 0.09655887; + } + } else { + if (input[4] < 58.806583) { + var7 = -0.072834596; + } else { + var7 = -0.33632648; + } + } + } else { + if (input[4] < 266.78564) { + if (input[3] < 23.0) { + var7 = 0.52885276; + } else { + var7 = 0.3428436; + } + } else { + if (input[2] < 0.18970776) { + var7 = 0.31265554; + } else { + var7 = 0.1626814; + } + } + } + } else { + if (input[4] < 58.806583) { + if (input[3] < 16.0) { + if (input[4] < 51.153934) { + var7 = 0.17658769; + } else { + var7 = -0.27850112; + } + } else { + if (input[1] < 869.74097) { + var7 = 0.3114972; + } else { + var7 = 0.06958815; + } + } + } else { + if (input[3] < 36.0) { + if (input[6] < 2.5102012) { + var7 = -0.2779934; + } else { + var7 = 0.13187635; + } + } else { + if (input[1] < 1184.6289) { + var7 = 0.43987393; + } else { + var7 = -0.009747811; + } + } + } + } + } else { + if (input[7] < 0.008053657) { + if (input[4] < 47.95029) { + if (input[6] < 0.0404656) { + if (input[0] < 651.1857) { + var7 = 0.05684725; + } else { + var7 = 0.2671491; + } + } else { + if (input[5] < 21.943466) { + var7 = 0.3025243; + } else { + var7 = 0.23486686; + } + } + } else { + if (input[3] < 28.0) { + if (input[0] < 566.57983) { + var7 = -0.012495867; + } else { + var7 = -0.42356172; + } + } else { + if (input[4] < 54.08032) { + var7 = 0.25382876; + } else { + var7 = 0.04537982; + } + } + } + } else { + if (input[0] < 575.62115) { + if (input[4] < 37.437794) { + if (input[2] < 0.06556158) { + var7 = 0.100588165; + } else { + var7 = 0.28080142; + } + } else { + if (input[3] < 18.0) { + var7 = -0.41246405; + } else { + var7 = 0.19091478; + } + } + } else { + if (input[3] < 15.0) { + if (input[6] < 0.049576316) { + var7 = 0.25891885; + } else { + var7 = -0.09726493; + } + } else { + var7 = 0.3140422; + } + } + } + } + } + double var8; + if (input[3] < 10.0) { + if (input[1] < 121.57103) { + if (input[4] < 17.07824) { + if (input[0] < 447.375) { + if (input[6] < 0.030572092) { + if (input[4] < 13.053429) { + var8 = 0.16197833; + } else { + var8 = -0.1004075; + } + } else { + if (input[6] < 0.03770539) { + var8 = 0.24891925; + } else { + var8 = 0.41232193; + } + } + } else { + if (input[0] < 572.0283) { + if (input[3] < 7.0) { + var8 = -0.09097968; + } else { + var8 = 0.08166401; + } + } else { + if (input[0] < 643.69525) { + var8 = 0.01307401; + } else { + var8 = 0.13677424; + } + } + } + } else { + if (input[0] < 597.1503) { + if (input[0] < 418.34677) { + if (input[0] < 403.76456) { + var8 = 0.25129417; + } else { + var8 = 0.029630948; + } + } else { + if (input[1] < 52.519287) { + var8 = -0.086565524; + } else { + var8 = -0.18056887; + } + } + } else { + if (input[1] < 96.294495) { + if (input[1] < 55.399048) { + var8 = 0.022411045; + } else { + var8 = -0.103094496; + } + } else { + if (input[1] < 117.759186) { + var8 = 0.20964675; + } else { + var8 = -0.021733705; + } + } + } + } + } else { + if (input[1] < 147.89758) { + if (input[0] < 470.5908) { + if (input[7] < 0.0031422004) { + if (input[6] < 0.056870647) { + var8 = -0.27594447; + } else { + var8 = 0.1632108; + } + } else { + if (input[6] < 0.038425803) { + var8 = 0.09660167; + } else { + var8 = 0.24098757; + } + } + } else { + if (input[0] < 579.40393) { + if (input[5] < 29.639475) { + var8 = 0.017138198; + } else { + var8 = 0.27061063; + } + } else { + if (input[1] < 137.21216) { + var8 = 0.35788333; + } else { + var8 = 0.13913304; + } + } + } + } else { + if (input[1] < 191.00214) { + if (input[0] < 578.47174) { + if (input[4] < 14.26258) { + var8 = 0.0058700973; + } else { + var8 = -0.13975568; + } + } else { + if (input[1] < 173.5393) { + var8 = 0.07586348; + } else { + var8 = -0.09020141; + } + } + } else { + if (input[4] < 32.274986) { + if (input[5] < 18.296543) { + var8 = 0.1643583; + } else { + var8 = 0.037659366; + } + } else { + if (input[5] < 17.493734) { + var8 = 0.13900158; + } else { + var8 = -0.06859755; + } + } + } + } + } + } else { + if (input[7] < 0.0061051412) { + if (input[4] < 41.570618) { + if (input[5] < 24.029337) { + if (input[6] < 0.036404286) { + if (input[4] < 30.913733) { + var8 = 0.13497676; + } else { + var8 = -0.1447582; + } + } else { + if (input[4] < 34.687817) { + var8 = 0.22243029; + } else { + var8 = 0.12092808; + } + } + } else { + if (input[6] < 0.067336254) { + if (input[6] < 0.04116301) { + var8 = -0.151158; + } else { + var8 = 0.040234648; + } + } else { + if (input[2] < 0.19782853) { + var8 = 0.33279657; + } else { + var8 = 0.21302767; + } + } + } + } else { + if (input[3] < 20.0) { + if (input[0] < 439.05417) { + if (input[4] < 41.953285) { + var8 = -0.1021772; + } else { + var8 = 0.28958628; + } + } else { + if (input[0] < 658.2878) { + var8 = -0.106298305; + } else { + var8 = 0.12552974; + } + } + } else { + if (input[4] < 54.08032) { + if (input[3] < 21.0) { + var8 = 0.1183697; + } else { + var8 = 0.26628157; + } + } else { + if (input[7] < 0.0013018863) { + var8 = 0.2251939; + } else { + var8 = -0.0855014; + } + } + } + } + } else { + if (input[3] < 16.0) { + if (input[7] < 0.010230709) { + if (input[5] < 21.553902) { + if (input[4] < 43.352867) { + var8 = 0.2210698; + } else { + var8 = -0.2017922; + } + } else { + if (input[6] < 0.035672467) { + var8 = -0.0038242673; + } else { + var8 = 0.14185502; + } + } + } else { + if (input[4] < 33.871582) { + if (input[4] < 29.561077) { + var8 = 0.2640284; + } else { + var8 = 0.07036957; + } + } else { + if (input[2] < 0.16581297) { + var8 = -0.41174862; + } else { + var8 = 0.072694086; + } + } + } + } else { + if (input[6] < 0.059820402) { + if (input[5] < 26.726051) { + if (input[0] < 569.34753) { + var8 = 0.27468383; + } else { + var8 = 0.3056379; + } + } else { + if (input[7] < 0.008053657) { + var8 = 0.08182413; + } else { + var8 = 0.24930403; + } + } + } else { + if (input[5] < 33.48466) { + if (input[5] < 24.194729) { + var8 = 0.25929603; + } else { + var8 = 0.16683128; + } + } else { + if (input[7] < 0.02218566) { + var8 = 0.13998091; + } else { + var8 = -0.48473248; + } + } + } + } + } + } + double var9; + if (input[1] < 460.6717) { + if (input[1] < 81.83862) { + if (input[1] < 55.072876) { + if (input[3] < 6.0) { + if (input[5] < 19.882984) { + if (input[1] < 52.519287) { + var9 = 0.079475746; + } else { + var9 = -0.088993095; + } + } else { + if (input[4] < 20.090502) { + var9 = -0.032892045; + } else { + var9 = -0.11262999; + } + } + } else { + if (input[5] < 19.73429) { + if (input[2] < 0.09952295) { + var9 = 0.22916438; + } else { + var9 = -0.14665316; + } + } else { + if (input[4] < 28.26695) { + var9 = 0.057551306; + } else { + var9 = -0.1548425; + } + } + } + } else { + if (input[0] < 597.1503) { + if (input[1] < 59.12854) { + if (input[6] < 0.026557412) { + var9 = -0.1819081; + } else { + var9 = -0.25367534; + } + } else { + if (input[1] < 78.21661) { + var9 = -0.013745191; + } else { + var9 = -0.20643368; + } + } + } else { + if (input[1] < 59.12854) { + if (input[3] < 7.0) { + var9 = -0.16596712; + } else { + var9 = 0.121342205; + } + } else { + if (input[1] < 77.55432) { + var9 = 0.17177328; + } else { + var9 = -0.100517385; + } + } + } + } + } else { + if (input[0] < 632.9928) { + if (input[0] < 409.8705) { + if (input[3] < 8.0) { + if (input[0] < 406.91656) { + var9 = 0.21847983; + } else { + var9 = 0.0687365; + } + } else { + if (input[7] < 0.04599524) { + var9 = 0.3204079; + } else { + var9 = 0.124208644; + } + } + } else { + if (input[4] < 35.11969) { + if (input[6] < 0.038226146) { + var9 = -0.040707663; + } else { + var9 = 0.050300702; + } + } else { + if (input[7] < 0.00022194226) { + var9 = 0.1486903; + } else { + var9 = -0.0958275; + } + } + } + } else { + if (input[0] < 673.89215) { + if (input[1] < 255.84222) { + if (input[1] < 173.5393) { + var9 = 0.10600217; + } else { + var9 = -0.039318945; + } + } else { + if (input[2] < 0.23503518) { + var9 = 0.12610602; + } else { + var9 = -0.25670567; + } + } + } else { + if (input[7] < 0.003613382) { + if (input[3] < 11.0) { + var9 = 0.020244038; + } else { + var9 = 0.25256616; + } + } else { + if (input[6] < 0.053393975) { + var9 = 0.21562919; + } else { + var9 = -0.1939646; + } + } + } + } + } + } else { + if (input[7] < 0.0048943935) { + if (input[5] < 22.283722) { + if (input[0] < 473.86905) { + if (input[6] < 0.048518233) { + var9 = 0.107168116; + } else { + var9 = 0.35362285; + } + } else { + if (input[5] < 18.505344) { + if (input[6] < 0.036230333) { + var9 = 0.08896622; + } else { + var9 = 0.28026286; + } + } else { + if (input[3] < 19.0) { + var9 = 0.04225669; + } else { + var9 = 0.21277055; + } + } + } + } else { + if (input[0] < 637.80457) { + if (input[6] < 0.057156924) { + if (input[4] < 38.23957) { + var9 = -0.02411816; + } else { + var9 = -0.41426453; + } + } else { + if (input[4] < 46.88934) { + var9 = 0.14227684; + } else { + var9 = -0.025340144; + } + } + } else { + if (input[2] < 0.24309075) { + if (input[7] < 0.003249709) { + var9 = 0.283528; + } else { + var9 = 0.16402732; + } + } else { + if (input[4] < 873.4576) { + var9 = -0.15936868; + } else { + var9 = 0.3494439; + } + } + } + } + } else { + if (input[7] < 0.008053657) { + if (input[4] < 45.20362) { + if (input[5] < 20.706615) { + if (input[4] < 21.303955) { + var9 = 0.025775792; + } else { + var9 = 0.28388542; + } + } else { + if (input[6] < 0.04025816) { + var9 = 0.06314184; + } else { + var9 = 0.2030987; + } + } + } else { + if (input[3] < 24.0) { + if (input[7] < 0.0050930274) { + var9 = 0.053541947; + } else { + var9 = -0.36921528; + } + } else { + if (input[4] < 54.08032) { + var9 = 0.20851105; + } else { + var9 = -0.027774913; + } + } + } + } else { + if (input[5] < 24.194729) { + if (input[6] < 0.022677388) { + if (input[4] < 20.551977) { + var9 = 0.21139014; + } else { + var9 = -0.17699842; + } + } else { + if (input[6] < 0.05809109) { + var9 = 0.29408136; + } else { + var9 = 0.23892085; + } + } + } else { + if (input[1] < 489.80347) { + if (input[7] < 0.008375866) { + var9 = -0.44762683; + } else { + var9 = 0.13537239; + } + } else { + if (input[2] < 0.2476418) { + var9 = 0.2464154; + } else { + var9 = 0.124946006; + } + } + } + } + } + } + double var10; + if (input[3] < 16.0) { + if (input[1] < 121.57103) { + if (input[4] < 19.969645) { + if (input[3] < 7.0) { + if (input[0] < 433.54276) { + if (input[6] < 0.022136807) { + var10 = 0.009552013; + } else { + var10 = 0.17272386; + } + } else { + if (input[0] < 557.74005) { + var10 = -0.069602214; + } else { + var10 = 0.017074106; + } + } + } else { + if (input[5] < 20.170586) { + if (input[6] < 0.028638396) { + var10 = 0.20895904; + } else { + var10 = 0.3760596; + } + } else { + if (input[0] < 455.97122) { + var10 = 0.27256006; + } else { + var10 = 0.017368162; + } + } + } + } else { + if (input[0] < 567.47864) { + if (input[3] < 8.0) { + if (input[5] < 32.309944) { + var10 = -0.14213084; + } else { + var10 = 0.23379275; + } + } else { + if (input[1] < 81.66284) { + var10 = -0.051792108; + } else { + var10 = 0.20124297; + } + } + } else { + if (input[2] < 0.11964327) { + if (input[0] < 652.3909) { + var10 = -0.041657317; + } else { + var10 = 0.064104974; + } + } else { + if (input[2] < 0.28529787) { + var10 = -0.19453557; + } else { + var10 = 0.13250987; + } + } + } + } + } else { + if (input[1] < 147.89758) { + if (input[3] < 8.0) { + if (input[4] < 26.937609) { + if (input[6] < 0.0413519) { + var10 = 0.06400635; + } else { + var10 = 0.21182288; + } + } else { + if (input[6] < 0.059464313) { + var10 = -0.09490723; + } else { + var10 = 0.10148816; + } + } + } else { + if (input[6] < 0.05493398) { + if (input[4] < 28.460495) { + var10 = 0.19589762; + } else { + var10 = -0.07973826; + } + } else { + if (input[4] < 43.929493) { + var10 = 0.28534678; + } else { + var10 = 0.046761133; + } + } + } + } else { + if (input[1] < 255.84222) { + if (input[5] < 21.6294) { + if (input[2] < 0.17129159) { + var10 = 0.028528938; + } else { + var10 = -0.14755014; + } + } else { + if (input[1] < 231.0669) { + var10 = -0.054728266; + } else { + var10 = -0.15581748; + } + } + } else { + if (input[4] < 36.538284) { + if (input[7] < 0.01122595) { + var10 = 0.06422133; + } else { + var10 = 0.19273053; + } + } else { + if (input[6] < 0.053143427) { + var10 = -0.17142159; + } else { + var10 = 0.0059284098; + } + } + } + } + } + } else { + if (input[4] < 46.88934) { + if (input[5] < 24.673338) { + if (input[3] < 18.0) { + if (input[4] < 41.197132) { + if (input[4] < 32.391514) { + var10 = 0.27049738; + } else { + var10 = 0.18484916; + } + } else { + if (input[7] < 0.0048139137) { + var10 = 0.06192209; + } else { + var10 = -0.59752876; + } + } + } else { + if (input[0] < 566.57983) { + if (input[3] < 70.0) { + var10 = 0.25153154; + } else { + var10 = 0.062294457; + } + } else { + if (input[7] < 0.006159995) { + var10 = 0.24293382; + } else { + var10 = 0.30145308; + } + } + } + } else { + if (input[4] < 39.41097) { + if (input[3] < 59.0) { + if (input[7] < 0.008213529) { + var10 = 0.15646231; + } else { + var10 = 0.2482715; + } + } else { + if (input[3] < 70.0) { + var10 = -0.23412678; + } else { + var10 = 0.121562; + } + } + } else { + if (input[3] < 22.0) { + if (input[7] < 0.004254316) { + var10 = 0.066723846; + } else { + var10 = -0.17771333; + } + } else { + if (input[0] < 581.3013) { + var10 = 0.053061213; + } else { + var10 = 0.23882313; + } + } + } + } + } else { + if (input[3] < 38.0) { + if (input[0] < 518.2562) { + if (input[6] < 0.07962002) { + if (input[5] < 23.865568) { + var10 = 0.19450854; + } else { + var10 = -0.31433317; + } + } else { + if (input[2] < 0.3723327) { + var10 = 0.2572482; + } else { + var10 = 0.053740572; + } + } + } else { + if (input[2] < 0.26561487) { + if (input[6] < 0.059820402) { + var10 = -0.26676226; + } else { + var10 = 0.073670246; + } + } else { + if (input[4] < 58.806583) { + var10 = 0.094285; + } else { + var10 = -0.26996118; + } + } + } + } else { + if (input[2] < 0.300006) { + var10 = 0.2993627; + } else { + if (input[1] < 1184.6289) { + if (input[2] < 0.32127088) { + var10 = 0.09921028; + } else { + var10 = 0.34822628; + } + } else { + if (input[3] < 53.0) { + var10 = -0.24903083; + } else { + var10 = 0.18098003; + } + } + } + } + } + } + double var11; + if (input[3] < 17.0) { + if (input[0] < 667.30505) { + if (input[4] < 10.558617) { + if (input[3] < 6.0) { + if (input[0] < 484.40204) { + if (input[6] < 0.012573133) { + var11 = 0.060921766; + } else { + var11 = 0.22628911; + } + } else { + if (input[4] < 5.1584697) { + var11 = 0.11332942; + } else { + var11 = -0.046110705; + } + } + } else { + if (input[6] < 0.007448412) { + if (input[4] < 6.3997884) { + var11 = 0.16104266; + } else { + var11 = -0.07780559; + } + } else { + if (input[5] < 20.215801) { + var11 = 0.3233079; + } else { + var11 = 0.16223013; + } + } + } + } else { + if (input[1] < 81.83862) { + if (input[1] < 54.414856) { + if (input[3] < 7.0) { + var11 = -0.023798954; + } else { + var11 = 0.21797867; + } + } else { + if (input[1] < 59.12854) { + var11 = -0.17278777; + } else { + var11 = -0.07949651; + } + } + } else { + if (input[6] < 0.032192327) { + if (input[0] < 580.3388) { + var11 = -0.0924099; + } else { + var11 = 0.028098125; + } + } else { + if (input[4] < 24.247833) { + var11 = 0.1122298; + } else { + var11 = -0.010576143; + } + } + } + } + } else { + if (input[1] < 289.02704) { + if (input[2] < 0.1089797) { + if (input[5] < 22.426456) { + if (input[3] < 8.0) { + var11 = 0.104413584; + } else { + var11 = 0.22523402; + } + } else { + if (input[0] < 676.2616) { + var11 = -0.025962153; + } else { + var11 = 0.08191842; + } + } + } else { + if (input[6] < 0.057156924) { + if (input[3] < 12.0) { + var11 = -0.021807466; + } else { + var11 = 0.22453293; + } + } else { + if (input[7] < 0.0023913998) { + var11 = -0.117959924; + } else { + var11 = -0.39097977; + } + } + } + } else { + if (input[2] < 0.1785326) { + if (input[4] < 29.050934) { + if (input[0] < 670.5355) { + var11 = 0.1473771; + } else { + var11 = 0.26261917; + } + } else { + if (input[1] < 489.80347) { + var11 = 0.14264956; + } else { + var11 = 0.2788512; + } + } + } else { + if (input[6] < 0.069410756) { + if (input[2] < 0.18970776) { + var11 = -0.10654522; + } else { + var11 = 0.30255806; + } + } else { + if (input[3] < 9.0) { + var11 = 0.13079819; + } else { + var11 = -0.27605283; + } + } + } + } + } + } else { + if (input[4] < 49.35926) { + if (input[5] < 22.351292) { + if (input[2] < 0.32127088) { + if (input[3] < 21.0) { + if (input[5] < 21.517841) { + var11 = 0.27155885; + } else { + var11 = 0.12820444; + } + } else { + if (input[4] < 47.95029) { + var11 = 0.29274467; + } else { + var11 = 0.13343202; + } + } + } else { + var11 = -0.015330957; + } + } else { + if (input[6] < 0.057765625) { + if (input[7] < 0.0075382576) { + if (input[0] < 612.42395) { + var11 = -0.025909325; + } else { + var11 = 0.23590702; + } + } else { + if (input[0] < 418.34677) { + var11 = -0.10590682; + } else { + var11 = 0.2606583; + } + } + } else { + if (input[6] < 0.07519955) { + if (input[5] < 33.48466) { + var11 = 0.11100172; + } else { + var11 = -0.29904586; + } + } else { + if (input[5] < 22.68546) { + var11 = -0.05447774; + } else { + var11 = 0.2220454; + } + } + } + } + } else { + if (input[3] < 31.0) { + if (input[0] < 531.8526) { + if (input[0] < 448.86835) { + if (input[6] < 0.113757454) { + var11 = 0.046352863; + } else { + var11 = 0.327322; + } + } else { + if (input[5] < 23.514431) { + var11 = 0.19350623; + } else { + var11 = -0.0248198; + } + } + } else { + if (input[2] < 0.22563094) { + if (input[6] < 0.07796111) { + var11 = -0.09090729; + } else { + var11 = 0.23447303; + } + } else { + if (input[5] < 27.379698) { + var11 = -0.18418671; + } else { + var11 = 0.2484317; + } + } + } + } else { + if (input[1] < 1047.1123) { + if (input[5] < 24.194729) { + if (input[5] < 23.947874) { + var11 = 0.25722456; + } else { + var11 = -0.21992636; + } + } else { + if (input[7] < 0.00022194226) { + var11 = 0.111226626; + } else { + var11 = 0.40557095; + } + } + } else { + if (input[3] < 51.0) { + if (input[2] < 0.25866318) { + var11 = 0.2261159; + } else { + var11 = -0.19819158; + } + } else { + if (input[0] < 504.12915) { + var11 = -0.12012974; + } else { + var11 = 0.29108712; + } + } + } + } + } + } + double var12; + if (input[3] < 8.0) { + if (input[4] < 15.897472) { + if (input[6] < 0.02455999) { + if (input[4] < 8.613837) { + if (input[6] < 0.008171307) { + if (input[4] < 5.1584697) { + var12 = 0.10694435; + } else { + var12 = -0.085289136; + } + } else { + if (input[5] < 19.417402) { + var12 = 0.26963; + } else { + var12 = 0.11357265; + } + } + } else { + if (input[6] < 0.013503123) { + if (input[0] < 634.2887) { + var12 = -0.11673459; + } else { + var12 = 0.054899137; + } + } else { + if (input[4] < 13.317816) { + var12 = 0.06873668; + } else { + var12 = -0.02932776; + } + } + } + } else { + if (input[0] < 471.70917) { + if (input[7] < 0.0070654633) { + if (input[0] < 429.60077) { + var12 = 0.24140334; + } else { + var12 = 0.632605; + } + } else { + if (input[7] < 0.011090135) { + var12 = 0.114293285; + } else { + var12 = 0.2292846; + } + } + } else { + if (input[7] < 0.012117223) { + if (input[3] < 6.0) { + var12 = -0.027846368; + } else { + var12 = 0.12202971; + } + } else { + if (input[7] < 0.05417835) { + var12 = 0.18538909; + } else { + var12 = -0.16913825; + } + } + } + } + } else { + if (input[0] < 562.22656) { + if (input[6] < 0.03395565) { + if (input[0] < 503.25986) { + if (input[4] < 18.55459) { + var12 = -0.09626044; + } else { + var12 = -0.21500672; + } + } else { + if (input[1] < 168.27454) { + var12 = -0.10660119; + } else { + var12 = -0.040009294; + } + } + } else { + if (input[4] < 23.436337) { + if (input[0] < 463.6092) { + var12 = 0.13802116; + } else { + var12 = 0.00979198; + } + } else { + if (input[6] < 0.055465702) { + var12 = -0.09897926; + } else { + var12 = -0.0038084898; + } + } + } + } else { + if (input[5] < 11.839297) { + if (input[1] < 120.8548) { + if (input[2] < 0.008977376) { + var12 = 0.40464926; + } else { + var12 = -0.009797276; + } + } else { + if (input[2] < 0.050450563) { + var12 = 0.05272049; + } else { + var12 = 0.351904; + } + } + } else { + if (input[5] < 29.853495) { + if (input[1] < 294.69617) { + var12 = -0.012509621; + } else { + var12 = 0.07932517; + } + } else { + if (input[1] < 227.01422) { + var12 = 0.09604878; + } else { + var12 = 0.25276437; + } + } + } + } + } + } else { + if (input[7] < 0.008892193) { + if (input[5] < 20.834808) { + if (input[4] < 34.13175) { + if (input[6] < 0.037336733) { + if (input[0] < 578.47174) { + var12 = -0.026353536; + } else { + var12 = 0.13621192; + } + } else { + if (input[6] < 0.054671705) { + var12 = 0.17078169; + } else { + var12 = 0.2915521; + } + } + } else { + if (input[3] < 14.0) { + if (input[6] < 0.054671705) { + var12 = -0.073567964; + } else { + var12 = 0.051944647; + } + } else { + if (input[3] < 19.0) { + var12 = 0.1122969; + } else { + var12 = 0.23593406; + } + } + } + } else { + if (input[6] < 0.036404286) { + if (input[0] < 590.9189) { + if (input[4] < 24.423347) { + var12 = -0.09889737; + } else { + var12 = -0.26516825; + } + } else { + if (input[0] < 671.5958) { + var12 = -0.046474848; + } else { + var12 = 0.17853987; + } + } + } else { + if (input[4] < 39.41097) { + if (input[6] < 0.064966485) { + var12 = 0.039283674; + } else { + var12 = 0.18662013; + } + } else { + if (input[3] < 21.0) { + var12 = -0.05932163; + } else { + var12 = 0.084695786; + } + } + } + } + } else { + if (input[3] < 11.0) { + if (input[4] < 15.7178545) { + if (input[5] < 27.29118) { + if (input[7] < 0.027495267) { + var12 = 0.211664; + } else { + var12 = 0.3092054; + } + } else { + if (input[0] < 468.29953) { + var12 = 0.28409252; + } else { + var12 = -0.16699201; + } + } + } else { + if (input[6] < 0.022136807) { + if (input[0] < 604.5986) { + var12 = -0.348502; + } else { + var12 = -0.043982457; + } + } else { + if (input[4] < 25.647543) { + var12 = 0.12749071; + } else { + var12 = -0.056598548; + } + } + } + } else { + if (input[6] < 0.05809109) { + if (input[5] < 26.059116) { + if (input[3] < 15.0) { + var12 = 0.21011616; + } else { + var12 = 0.27633077; + } + } else { + if (input[6] < 0.019131957) { + var12 = -0.42760858; + } else { + var12 = 0.16387582; + } + } + } else { + if (input[0] < 588.9621) { + if (input[4] < 34.13175) { + var12 = 0.21827711; + } else { + var12 = 0.014715832; + } + } else { + var12 = 0.2825553; + } + } + } + } + } + double var13; + if (input[1] < 460.6717) { + if (input[5] < 16.674982) { + if (input[3] < 7.0) { + if (input[2] < 0.008977376) { + if (input[5] < 11.839297) { + if (input[7] < 0.04599524) { + var13 = 0.43958357; + } else { + var13 = 0.1399571; + } + } else { + if (input[4] < 7.31554) { + var13 = 0.2515202; + } else { + var13 = 0.10408409; + } + } + } else { + if (input[1] < 59.12854) { + if (input[1] < 55.399048) { + var13 = -0.018944213; + } else { + var13 = -0.18694983; + } + } else { + if (input[5] < 10.757549) { + var13 = 0.2805666; + } else { + var13 = 0.031028617; + } + } + } + } else { + if (input[4] < 28.171436) { + if (input[7] < 0.0037865257) { + if (input[2] < 0.056358993) { + var13 = 0.0023341868; + } else { + var13 = 0.47340748; + } + } else { + if (input[1] < 78.383545) { + var13 = 0.35209176; + } else { + var13 = 0.16342914; + } + } + } else { + if (input[3] < 8.0) { + if (input[5] < 12.536739) { + var13 = 0.30884126; + } else { + var13 = -0.056089234; + } + } else { + if (input[2] < 0.22023034) { + var13 = 0.15516542; + } else { + var13 = -0.17182007; + } + } + } + } + } else { + if (input[5] < 32.309944) { + if (input[0] < 406.91656) { + if (input[3] < 6.0) { + if (input[6] < 0.05065899) { + var13 = 0.033114262; + } else { + var13 = 0.18491936; + } + } else { + if (input[0] < 394.5867) { + var13 = 0.33182597; + } else { + var13 = 0.18634824; + } + } + } else { + if (input[0] < 572.9116) { + if (input[1] < 121.57103) { + var13 = -0.06470079; + } else { + var13 = -0.016212856; + } + } else { + if (input[2] < 0.22023034) { + var13 = 0.012552452; + } else { + var13 = -0.18140723; + } + } + } + } else { + if (input[6] < 0.030154696) { + if (input[2] < 0.07323933) { + if (input[6] < 0.02907517) { + var13 = 0.08279063; + } else { + var13 = -0.2998605; + } + } else { + var13 = 0.38257286; + } + } else { + if (input[7] < 0.0019291723) { + if (input[5] < 33.48466) { + var13 = -0.22991005; + } else { + var13 = 0.20007694; + } + } else { + if (input[6] < 0.062145434) { + var13 = 0.22543265; + } else { + var13 = 0.41559178; + } + } + } + } + } + } else { + if (input[4] < 43.929493) { + if (input[5] < 23.947874) { + if (input[3] < 16.0) { + if (input[5] < 20.121521) { + if (input[4] < 30.37712) { + var13 = 0.29175213; + } else { + var13 = 0.1611357; + } + } else { + if (input[6] < 0.056870647) { + var13 = 0.060223896; + } else { + var13 = 0.19365053; + } + } + } else { + if (input[0] < 566.57983) { + if (input[3] < 70.0) { + var13 = 0.20701009; + } else { + var13 = -0.05956016; + } + } else { + if (input[3] < 21.0) { + var13 = 0.20323798; + } else { + var13 = 0.29259208; + } + } + } + } else { + if (input[4] < 32.741352) { + if (input[6] < 0.0404656) { + if (input[7] < 0.0126157) { + var13 = 0.012741808; + } else { + var13 = 0.25201002; + } + } else { + if (input[0] < 433.54276) { + var13 = 0.09560156; + } else { + var13 = 0.22277851; + } + } + } else { + if (input[2] < 0.14234614) { + if (input[0] < 598.1789) { + var13 = -0.49711126; + } else { + var13 = -0.0543097; + } + } else { + if (input[0] < 563.0628) { + var13 = -0.007375835; + } else { + var13 = 0.15853703; + } + } + } + } + } else { + if (input[7] < 0.0013018863) { + if (input[2] < 0.23503518) { + if (input[2] < 0.18970776) { + if (input[3] < 9.0) { + var13 = 0.09015992; + } else { + var13 = 0.29737714; + } + } else { + if (input[1] < 659.8392) { + var13 = -0.063683085; + } else { + var13 = 0.2739673; + } + } + } else { + if (input[3] < 35.0) { + if (input[0] < 505.92896) { + var13 = 0.10784708; + } else { + var13 = -0.22054613; + } + } else { + if (input[5] < 24.952822) { + var13 = 0.300908; + } else { + var13 = -0.018050969; + } + } + } + } else { + if (input[4] < 58.806583) { + if (input[6] < 0.05809109) { + if (input[0] < 662.8972) { + var13 = -0.33526736; + } else { + var13 = 0.21469226; + } + } else { + if (input[3] < 21.0) { + var13 = -0.0010532484; + } else { + var13 = 0.1537672; + } + } + } else { + if (input[3] < 38.0) { + if (input[0] < 457.22827) { + var13 = 0.1380618; + } else { + var13 = -0.23467623; + } + } else { + if (input[1] < 1047.1123) { + var13 = 0.3186094; + } else { + var13 = -0.06978144; + } + } + } + } + } + } + double var14; + if (input[3] < 15.0) { + if (input[4] < 19.969645) { + if (input[6] < 0.02797405) { + if (input[4] < 14.26258) { + if (input[3] < 7.0) { + if (input[6] < 0.019131957) { + var14 = 0.00081012794; + } else { + var14 = 0.097799525; + } + } else { + if (input[5] < 25.447344) { + var14 = 0.19227014; + } else { + var14 = 0.066498525; + } + } + } else { + if (input[0] < 549.0806) { + if (input[6] < 0.025324266) { + var14 = -0.13813648; + } else { + var14 = -0.036365815; + } + } else { + if (input[6] < 0.024027178) { + var14 = -0.0063236007; + } else { + var14 = 0.07260675; + } + } + } + } else { + if (input[3] < 7.0) { + if (input[4] < 18.137033) { + if (input[6] < 0.03472593) { + var14 = 0.094187506; + } else { + var14 = 0.21049723; + } + } else { + if (input[1] < 96.294495) { + var14 = -0.07117888; + } else { + var14 = 0.070386246; + } + } + } else { + if (input[6] < 0.033574995) { + if (input[5] < 23.747627) { + var14 = 0.19375372; + } else { + var14 = 0.054802295; + } + } else { + if (input[2] < 0.08508021) { + var14 = 0.34209836; + } else { + var14 = 0.2191924; + } + } + } + } + } else { + if (input[6] < 0.04355297) { + if (input[0] < 534.41846) { + if (input[4] < 24.50498) { + if (input[6] < 0.038964357) { + var14 = -0.11020311; + } else { + var14 = 0.017839642; + } + } else { + if (input[0] < 494.08887) { + var14 = -0.23293686; + } else { + var14 = -0.13173902; + } + } + } else { + if (input[0] < 622.0128) { + if (input[4] < 30.913733) { + var14 = -0.011636773; + } else { + var14 = -0.10772831; + } + } else { + if (input[0] < 681.8675) { + var14 = 0.017881883; + } else { + var14 = 0.10485872; + } + } + } + } else { + if (input[4] < 27.78304) { + if (input[1] < 121.57103) { + if (input[4] < 23.702576) { + var14 = 0.12552129; + } else { + var14 = -0.022582065; + } + } else { + if (input[2] < 0.12643456) { + var14 = 0.0917661; + } else { + var14 = 0.17757553; + } + } + } else { + if (input[1] < 96.294495) { + if (input[2] < 0.11770642) { + var14 = -0.044706535; + } else { + var14 = -0.1745169; + } + } else { + if (input[7] < 0.00022194226) { + var14 = 0.12568207; + } else { + var14 = -0.010738445; + } + } + } + } + } + } else { + if (input[4] < 39.41097) { + if (input[5] < 26.726051) { + if (input[4] < 30.161802) { + if (input[5] < 24.15352) { + var14 = 0.2740918; + } else { + if (input[6] < 0.044478152) { + var14 = 0.27633202; + } else { + var14 = 0.075577535; + } + } + } else { + if (input[3] < 17.0) { + if (input[7] < 0.0036698799) { + var14 = 0.25259703; + } else { + var14 = 0.022808619; + } + } else { + if (input[0] < 566.57983) { + var14 = 0.12131317; + } else { + var14 = 0.2545804; + } + } + } + } else { + if (input[4] < 34.687817) { + if (input[5] < 27.03375) { + if (input[7] < 0.008892193) { + var14 = -0.5182135; + } else { + var14 = 0.0559702; + } + } else { + if (input[3] < 16.0) { + var14 = -0.015805045; + } else { + var14 = 0.1945316; + } + } + } else { + if (input[7] < 0.02092963) { + if (input[2] < 0.17482603) { + var14 = -0.36694998; + } else { + var14 = 0.0383603; + } + } else { + var14 = -0.5217948; + } + } + } + } else { + if (input[0] < 469.4581) { + if (input[5] < 25.292236) { + if (input[0] < 457.22827) { + var14 = 0.29662725; + } else { + if (input[7] < 0.002235593) { + var14 = -0.08775495; + } else { + var14 = 0.20810767; + } + } + } else { + if (input[5] < 25.88462) { + if (input[2] < 0.32127088) { + var14 = -0.33078396; + } else { + var14 = 0.030503625; + } + } else { + if (input[5] < 28.108055) { + var14 = 0.28667852; + } else { + var14 = 0.12400959; + } + } + } + } else { + if (input[0] < 657.11444) { + if (input[6] < 0.046959374) { + if (input[1] < 519.01764) { + var14 = -0.10493039; + } else { + var14 = -0.59392935; + } + } else { + if (input[5] < 20.964203) { + var14 = 0.1342558; + } else { + var14 = -0.016536271; + } + } + } else { + if (input[2] < 0.23170115) { + if (input[5] < 22.724154) { + var14 = 0.2991804; + } else { + var14 = 0.15498844; + } + } else { + if (input[3] < 19.0) { + var14 = -0.3152446; + } else { + var14 = 0.08708547; + } + } + } + } + } + } + double var15; + if (input[3] < 9.0) { + if (input[5] < 30.39442) { + if (input[4] < 30.37712) { + if (input[2] < 0.14311361) { + if (input[3] < 6.0) { + if (input[1] < 255.84222) { + var15 = -0.029152177; + } else { + var15 = 0.08196725; + } + } else { + if (input[4] < 14.698128) { + var15 = 0.074502066; + } else { + var15 = 0.0014492751; + } + } + } else { + if (input[0] < 454.6105) { + if (input[7] < 0.003613382) { + var15 = 0.010283798; + } else { + var15 = 0.13194619; + } + } else { + if (input[7] < 0.006533345) { + var15 = 0.19486958; + } else { + var15 = 0.020996284; + } + } + } + } else { + if (input[7] < 0.0044915546) { + if (input[2] < 0.070949554) { + if (input[0] < 590.9189) { + var15 = 0.038958; + } else { + var15 = 0.18594596; + } + } else { + if (input[6] < 0.063917145) { + var15 = -0.070532605; + } else { + var15 = 0.0040343925; + } + } + } else { + if (input[4] < 36.870323) { + if (input[2] < 0.15956831) { + var15 = -0.18035208; + } else { + var15 = -0.0049420986; + } + } else { + if (input[0] < 652.3909) { + var15 = -0.30831435; + } else { + var15 = 0.02787993; + } + } + } + } + } else { + if (input[6] < 0.062583044) { + if (input[5] < 33.48466) { + if (input[6] < 0.021839056) { + if (input[1] < 266.53317) { + var15 = -0.049480557; + } else { + var15 = 0.16831923; + } + } else { + if (input[4] < 26.19804) { + var15 = 0.115093485; + } else { + var15 = 0.009128629; + } + } + } else { + if (input[2] < 0.1668272) { + if (input[6] < 0.009366361) { + var15 = -0.117322974; + } else { + var15 = 0.20173588; + } + } else { + var15 = -0.37982702; + } + } + } else { + if (input[7] < 0.0019291723) { + if (input[4] < 36.870323) { + if (input[1] < 118.15326) { + var15 = -0.07499937; + } else { + var15 = -0.4042804; + } + } else { + if (input[4] < 47.95029) { + var15 = 0.30991262; + } else { + var15 = -0.08639787; + } + } + } else { + if (input[1] < 114.94299) { + var15 = -0.061649397; + } else { + if (input[7] < 0.0049318275) { + var15 = 0.3402719; + } else { + var15 = 0.14215961; + } + } + } + } + } + } else { + if (input[4] < 33.613834) { + if (input[5] < 24.495958) { + if (input[3] < 14.0) { + if (input[7] < 0.0043542767) { + if (input[6] < 0.03933765) { + var15 = 0.083866; + } else { + var15 = 0.20792986; + } + } else { + if (input[4] < 23.075237) { + var15 = 0.16091868; + } else { + var15 = 0.012815636; + } + } + } else { + if (input[5] < 21.322844) { + if (input[3] < 72.0) { + var15 = 0.26266223; + } else { + var15 = 0.0035477069; + } + } else { + if (input[4] < 29.757948) { + var15 = 0.21866599; + } else { + var15 = 0.11928596; + } + } + } + } else { + if (input[6] < 0.042833522) { + if (input[7] < 0.008892193) { + if (input[0] < 661.7976) { + var15 = -0.12181715; + } else { + var15 = 0.16662872; + } + } else { + if (input[6] < 0.019774148) { + var15 = -0.07661946; + } else { + var15 = 0.1329123; + } + } + } else { + if (input[6] < 0.05877689) { + if (input[4] < 26.284737) { + var15 = 0.18229023; + } else { + var15 = 0.029899782; + } + } else { + if (input[4] < 32.62736) { + var15 = 0.23064904; + } else { + var15 = 0.061700366; + } + } + } + } + } else { + if (input[6] < 0.044108372) { + if (input[0] < 652.3909) { + if (input[7] < 0.0044564977) { + if (input[2] < 0.07207942) { + var15 = 0.038242616; + } else { + var15 = -0.23237607; + } + } else { + if (input[3] < 21.0) { + var15 = -0.5021245; + } else { + var15 = -0.008049271; + } + } + } else { + if (input[3] < 12.0) { + if (input[7] < 0.0032761313) { + var15 = 0.08029193; + } else { + var15 = -0.19724561; + } + } else { + if (input[2] < 0.13599229) { + var15 = 0.19570321; + } else { + var15 = -0.0048736115; + } + } + } + } else { + if (input[4] < 46.88934) { + if (input[6] < 0.0719236) { + if (input[0] < 587.9709) { + var15 = -0.052064944; + } else { + var15 = 0.086623; + } + } else { + if (input[1] < 147.89758) { + var15 = 0.29910907; + } else { + var15 = 0.11343097; + } + } + } else { + if (input[2] < 0.15654445) { + if (input[6] < 0.056304816) { + var15 = -0.12989624; + } else { + var15 = 0.20826985; + } + } else { + if (input[3] < 14.0) { + var15 = -0.13756143; + } else { + var15 = -0.0158715; + } + } + } + } + } + } + double var16; + if (input[3] < 21.0) { + if (input[5] < 15.711394) { + if (input[1] < 255.84222) { + if (input[5] < 11.839297) { + if (input[2] < 0.1772592) { + if (input[1] < 168.27454) { + var16 = 0.09328564; + } else { + var16 = 0.23977676; + } + } else { + var16 = 0.5827801; + } + } else { + if (input[3] < 6.0) { + if (input[1] < 52.519287) { + var16 = 0.13238233; + } else { + var16 = -0.038940363; + } + } else { + if (input[4] < 37.239246) { + var16 = 0.09074758; + } else { + var16 = -0.103805855; + } + } + } + } else { + if (input[2] < 0.21310979) { + if (input[5] < 13.509364) { + if (input[3] < 12.0) { + var16 = 0.30702898; + } else { + var16 = 0.0135326935; + } + } else { + if (input[2] < 0.14999247) { + var16 = 0.15204087; + } else { + var16 = 0.33251286; + } + } + } else { + if (input[7] < 0.0024834909) { + var16 = -0.31140256; + } else { + var16 = 0.24169566; + } + } + } + } else { + if (input[0] < 403.76456) { + if (input[3] < 8.0) { + if (input[0] < 394.5867) { + if (input[5] < 27.204857) { + var16 = 0.27007088; + } else { + var16 = 0.093932636; + } + } else { + if (input[7] < 0.0027116358) { + var16 = 0.22456782; + } else { + var16 = 0.06304034; + } + } + } else { + if (input[6] < 0.027279133) { + var16 = 0.07889339; + } else { + if (input[1] < 117.95654) { + var16 = 0.08532363; + } else { + var16 = 0.3138849; + } + } + } + } else { + if (input[0] < 673.89215) { + if (input[5] < 29.853495) { + if (input[4] < 36.36606) { + var16 = -0.005808132; + } else { + var16 = -0.044425048; + } + } else { + if (input[2] < 0.18825138) { + var16 = 0.045157664; + } else { + var16 = 0.20285419; + } + } + } else { + if (input[1] < 344.88092) { + if (input[7] < 0.009574198) { + var16 = 0.030596565; + } else { + var16 = 0.12749635; + } + } else { + if (input[2] < 0.1785326) { + var16 = 0.19913761; + } else { + var16 = -0.05425329; + } + } + } + } + } + } else { + if (input[4] < 54.08032) { + if (input[0] < 567.47864) { + if (input[5] < 22.351292) { + if (input[3] < 70.0) { + var16 = 0.27793932; + } else { + if (input[7] < 0.02092963) { + var16 = -0.44710106; + } else { + var16 = 0.1707807; + } + } + } else { + if (input[5] < 28.479513) { + if (input[1] < 808.4346) { + var16 = 0.17842542; + } else { + var16 = 0.030357715; + } + } else { + if (input[0] < 455.97122) { + var16 = 0.20624226; + } else { + var16 = -0.2328286; + } + } + } + } else { + if (input[4] < 42.829258) { + if (input[6] < 0.060177866) { + if (input[5] < 31.12926) { + var16 = 0.28542474; + } else { + var16 = 0.026572155; + } + } else { + if (input[6] < 0.060939953) { + var16 = -0.24415275; + } else { + var16 = 0.2228718; + } + } + } else { + if (input[6] < 0.053631432) { + if (input[0] < 630.6033) { + var16 = -0.42823306; + } else { + var16 = 0.16877554; + } + } else { + if (input[6] < 0.07021791) { + var16 = 0.10265569; + } else { + var16 = 0.260271; + } + } + } + } + } else { + if (input[5] < 26.379164) { + if (input[7] < 0.0013018863) { + if (input[2] < 0.25866318) { + if (input[0] < 478.12262) { + var16 = 0.04004851; + } else { + var16 = 0.2558355; + } + } else { + if (input[3] < 43.0) { + var16 = -0.16947873; + } else { + var16 = 0.20977433; + } + } + } else { + if (input[1] < 695.545) { + if (input[6] < 0.081781514) { + var16 = -0.1554164; + } else { + var16 = 0.25897533; + } + } else { + if (input[3] < 71.0) { + var16 = -0.21819617; + } else { + var16 = 0.16773784; + } + } + } + } else { + if (input[3] < 154.0) { + if (input[1] < 733.3856) { + if (input[1] < 489.80347) { + var16 = 0.08616188; + } else { + var16 = 0.45446905; + } + } else { + if (input[2] < 0.300006) { + var16 = 0.27700144; + } else { + var16 = 0.03903166; + } + } + } else { + var16 = -0.23718952; + } + } + } + } + double var17; + if (input[1] < 272.0462) { + if (input[4] < 9.192085) { + if (input[1] < 81.83862) { + if (input[5] < 19.783344) { + if (input[6] < 0.0051328884) { + if (input[7] < 0.1289853) { + var17 = -0.15454395; + } else { + var17 = 0.16124383; + } + } else { + if (input[4] < 7.31554) { + var17 = 0.22676516; + } else { + var17 = 0.07778694; + } + } + } else { + if (input[0] < 476.04532) { + if (input[6] < 0.015955688) { + var17 = 0.038114227; + } else { + var17 = 0.2691368; + } + } else { + if (input[0] < 644.92255) { + var17 = -0.07100994; + } else { + var17 = 0.13286829; + } + } + } + } else { + if (input[7] < 0.04087875) { + if (input[2] < 0.027733445) { + if (input[3] < 7.0) { + var17 = -0.07411127; + } else { + var17 = 0.1989513; + } + } else { + if (input[2] < 0.033970356) { + var17 = 0.12608902; + } else { + var17 = 0.26734316; + } + } + } else { + if (input[0] < 492.25522) { + if (input[7] < 0.065982014) { + var17 = 0.17429116; + } else { + var17 = 0.29315704; + } + } else { + if (input[0] < 531.8526) { + var17 = 0.017244408; + } else { + var17 = 0.20382892; + } + } + } + } + } else { + if (input[1] < 229.94263) { + if (input[3] < 8.0) { + if (input[1] < 191.00214) { + if (input[1] < 150.89111) { + var17 = -0.009740776; + } else { + var17 = -0.05906425; + } + } else { + if (input[1] < 193.68164) { + var17 = 0.25128067; + } else { + var17 = 0.013145145; + } + } + } else { + if (input[1] < 173.5393) { + if (input[1] < 171.9599) { + var17 = 0.0737371; + } else { + var17 = 0.28162315; + } + } else { + if (input[1] < 177.04877) { + var17 = -0.11650096; + } else { + var17 = 0.033384234; + } + } + } + } else { + if (input[4] < 24.85689) { + if (input[7] < 0.0060544414) { + if (input[0] < 605.7406) { + var17 = 0.059206884; + } else { + var17 = 0.20590885; + } + } else { + if (input[6] < 0.032192327) { + var17 = -0.056768354; + } else { + var17 = 0.06733489; + } + } + } else { + if (input[1] < 255.84222) { + if (input[4] < 31.472792) { + var17 = -0.06539785; + } else { + var17 = -0.16051933; + } + } else { + if (input[7] < 0.000020908421) { + var17 = 0.34374955; + } else { + var17 = -0.03460011; + } + } + } + } + } + } else { + if (input[1] < 322.41693) { + if (input[7] < 0.0029582323) { + if (input[3] < 11.0) { + if (input[0] < 495.01468) { + if (input[6] < 0.05200139) { + var17 = -0.18721166; + } else { + var17 = 0.044789; + } + } else { + if (input[6] < 0.03279909) { + var17 = 0.39973822; + } else { + var17 = 0.15451424; + } + } + } else { + if (input[4] < 54.08032) { + if (input[5] < 20.02947) { + var17 = 0.16766518; + } else { + var17 = 0.44232404; + } + } else { + if (input[2] < 0.23503518) { + var17 = 0.25117588; + } else { + var17 = -0.15687981; + } + } + } + } else { + if (input[3] < 9.0) { + if (input[4] < 29.757948) { + if (input[7] < 0.005393012) { + var17 = 0.1121355; + } else { + var17 = 0.0039254096; + } + } else { + if (input[6] < 0.05573149) { + var17 = -0.12923303; + } else { + var17 = 0.11038482; + } + } + } else { + if (input[7] < 0.004320392) { + if (input[4] < 32.506233) { + var17 = 0.27800488; + } else { + var17 = 0.12015037; + } + } else { + if (input[2] < 0.15562016) { + var17 = 0.09308886; + } else { + var17 = -0.14399113; + } + } + } + } + } else { + if (input[5] < 19.008966) { + if (input[7] < 0.0030629286) { + if (input[6] < 0.06301065) { + if (input[0] < 587.9709) { + var17 = -0.35009864; + } else { + var17 = 0.06877915; + } + } else { + if (input[2] < 0.22563094) { + var17 = 0.23418891; + } else { + var17 = -0.029380769; + } + } + } else { + if (input[5] < 13.509364) { + var17 = 0.32154867; + } else { + if (input[2] < 0.12856597) { + var17 = 0.11267977; + } else { + var17 = 0.20964764; + } + } + } + } else { + if (input[1] < 519.01764) { + if (input[4] < 28.556541) { + if (input[1] < 342.5133) { + var17 = -0.096425466; + } else { + var17 = 0.049339864; + } + } else { + if (input[6] < 0.04116301) { + var17 = -0.1970083; + } else { + var17 = -0.022072893; + } + } + } else { + if (input[4] < 39.41097) { + if (input[4] < 29.050934) { + var17 = 0.18886517; + } else { + var17 = 0.09642818; + } + } else { + if (input[3] < 31.0) { + var17 = -0.0012003295; + } else { + var17 = 0.12179404; + } + } + } + } + } + } + double var18; + if (input[1] < 81.83862) { + if (input[1] < 54.414856) { + if (input[5] < 22.832607) { + if (input[3] < 6.0) { + if (input[7] < 0.1289853) { + if (input[6] < 0.0031386863) { + var18 = -0.1812855; + } else { + var18 = 0.028150221; + } + } else { + if (input[4] < 13.793873) { + var18 = 0.13639401; + } else { + var18 = -0.22369036; + } + } + } else { + if (input[1] < 52.952087) { + if (input[2] < 0.017481804) { + var18 = 0.13697311; + } else { + var18 = -0.085259885; + } + } else { + if (input[0] < 507.74713) { + var18 = -0.10858988; + } else { + var18 = 0.38365772; + } + } + } + } else { + if (input[6] < 0.023223083) { + if (input[0] < 524.19574) { + if (input[4] < 10.558617) { + var18 = -0.002259693; + } else { + var18 = -0.18285897; + } + } else { + if (input[2] < 0.008977376) { + var18 = 0.03795919; + } else { + var18 = -0.11821548; + } + } + } else { + if (input[4] < 17.07824) { + if (input[0] < 494.08887) { + var18 = 0.18332903; + } else { + var18 = -0.017998884; + } + } else { + if (input[7] < 0.013334383) { + var18 = 0.00952497; + } else { + var18 = -0.20923673; + } + } + } + } + } else { + if (input[1] < 59.12854) { + if (input[3] < 7.0) { + if (input[6] < 0.038425803) { + if (input[4] < 24.596539) { + var18 = -0.13891499; + } else { + var18 = 0.009536952; + } + } else { + if (input[0] < 661.7976) { + var18 = -0.22482798; + } else { + var18 = 0.014948574; + } + } + } else { + if (input[5] < 20.077265) { + if (input[3] < 8.0) { + var18 = -0.028934099; + } else { + var18 = 0.23301321; + } + } else { + if (input[0] < 599.1849) { + var18 = -0.12062903; + } else { + var18 = 0.004893584; + } + } + } + } else { + if (input[1] < 77.55432) { + if (input[5] < 26.726051) { + if (input[1] < 75.70349) { + var18 = 0.24484812; + } else { + var18 = 0.10411442; + } + } else { + if (input[6] < 0.045053452) { + var18 = -0.013367215; + } else { + var18 = -0.24444236; + } + } + } else { + if (input[2] < 0.09447992) { + if (input[7] < 0.0027393189) { + var18 = 0.0909565; + } else { + var18 = -0.09514033; + } + } else { + if (input[0] < 454.6105) { + var18 = 0.16276805; + } else { + var18 = -0.18505374; + } + } + } + } + } + } else { + if (input[1] < 114.94299) { + if (input[1] < 96.294495) { + if (input[0] < 455.97122) { + if (input[0] < 423.21143) { + var18 = 0.3479767; + } else { + var18 = 0.84518045; + } + } else { + if (input[4] < 15.897472) { + if (input[5] < 20.52871) { + var18 = 0.52951854; + } else { + var18 = -0.042222384; + } + } else { + if (input[5] < 24.320927) { + var18 = -0.065350965; + } else { + var18 = -0.21941529; + } + } + } + } else { + if (input[3] < 6.0) { + if (input[5] < 21.6294) { + if (input[5] < 16.421429) { + var18 = 0.0141995605; + } else { + var18 = 0.3056775; + } + } else { + if (input[0] < 557.74005) { + var18 = 0.03822163; + } else { + var18 = 0.21103346; + } + } + } else { + if (input[0] < 453.18805) { + if (input[4] < 22.235271) { + var18 = 0.26641512; + } else { + var18 = -0.03921123; + } + } else { + if (input[6] < 0.03529753) { + var18 = 0.32260215; + } else { + var18 = 0.6060578; + } + } + } + } + } else { + if (input[7] < 0.027495267) { + if (input[6] < 0.030572092) { + if (input[0] < 581.3013) { + if (input[4] < 16.582067) { + var18 = 0.010951725; + } else { + var18 = -0.09235474; + } + } else { + if (input[7] < 0.0027116358) { + var18 = 0.18731195; + } else { + var18 = 0.00042517998; + } + } + } else { + if (input[4] < 25.647543) { + if (input[3] < 6.0) { + var18 = 0.011425389; + } else { + var18 = 0.08066763; + } + } else { + if (input[6] < 0.0529048) { + var18 = -0.025011593; + } else { + var18 = 0.019674873; + } + } + } + } else { + if (input[3] < 8.0) { + if (input[4] < 24.686386) { + if (input[4] < 6.3997884) { + var18 = 0.18327934; + } else { + var18 = 0.062382333; + } + } else { + if (input[6] < 0.05493398) { + var18 = -0.44341394; + } else { + var18 = -0.009591484; + } + } + } else { + if (input[5] < 33.48466) { + if (input[6] < 0.008788065) { + var18 = 0.10156888; + } else { + var18 = 0.27030873; + } + } else { + if (input[3] < 190.0) { + var18 = -0.23112936; + } else { + var18 = 0.04188931; + } + } + } + } + } + } + double var19; + if (input[0] < 563.9471) { + if (input[6] < 0.064966485) { + if (input[4] < 31.580933) { + if (input[6] < 0.04915336) { + if (input[4] < 21.8254) { + if (input[6] < 0.020986198) { + var19 = -0.040148374; + } else { + var19 = 0.03979741; + } + } else { + if (input[0] < 489.37897) { + var19 = -0.11904239; + } else { + var19 = -0.0273844; + } + } + } else { + if (input[3] < 7.0) { + if (input[4] < 25.82959) { + var19 = 0.1096077; + } else { + var19 = -0.016252885; + } + } else { + if (input[6] < 0.059464313) { + var19 = 0.08842674; + } else { + var19 = 0.21472295; + } + } + } + } else { + if (input[0] < 488.4354) { + if (input[7] < 0.004526879) { + if (input[0] < 440.8873) { + var19 = -0.3562229; + } else { + var19 = -0.18526049; + } + } else { + if (input[7] < 0.014372812) { + var19 = -0.41615376; + } else { + var19 = 0.18364178; + } + } + } else { + if (input[4] < 40.523262) { + if (input[6] < 0.05220808) { + var19 = -0.1458578; + } else { + var19 = -0.022427667; + } + } else { + if (input[1] < 202.09811) { + var19 = -0.16171864; + } else { + var19 = -0.34252235; + } + } + } + } + } else { + if (input[4] < 36.2053) { + if (input[1] < 79.678955) { + if (input[0] < 467.11356) { + if (input[1] < 55.648636) { + var19 = 0.22112277; + } else { + var19 = -0.1835829; + } + } else { + var19 = -0.28051338; + } + } else { + if (input[3] < 7.0) { + if (input[7] < 0.0022020095) { + var19 = -0.032232795; + } else { + var19 = 0.12916009; + } + } else { + if (input[5] < 33.48466) { + var19 = 0.18443225; + } else { + var19 = -0.31935066; + } + } + } + } else { + if (input[2] < 0.15756035) { + if (input[1] < 143.61688) { + if (input[0] < 427.4725) { + var19 = -0.2780115; + } else { + var19 = 0.034235463; + } + } else { + if (input[5] < 23.403553) { + var19 = 0.24559487; + } else { + var19 = 0.10397247; + } + } + } else { + if (input[4] < 44.533443) { + if (input[2] < 0.20118733) { + var19 = -0.0270027; + } else { + var19 = 0.07715836; + } + } else { + if (input[3] < 12.0) { + var19 = -0.122171216; + } else { + var19 = 0.03094434; + } + } + } + } + } + } else { + if (input[4] < 43.929493) { + if (input[3] < 11.0) { + if (input[5] < 17.30668) { + if (input[7] < 0.0019291723) { + if (input[5] < 17.003792) { + var19 = -0.14872232; + } else { + var19 = 0.12528454; + } + } else { + if (input[1] < 266.53317) { + var19 = 0.05286436; + } else { + var19 = 0.15059593; + } + } + } else { + if (input[7] < 0.004320392) { + if (input[6] < 0.01815154) { + var19 = 0.13757119; + } else { + var19 = 0.019734155; + } + } else { + if (input[0] < 677.4847) { + var19 = -0.011915163; + } else { + var19 = 0.091464624; + } + } + } + } else { + if (input[3] < 21.0) { + if (input[5] < 23.10101) { + if (input[4] < 28.366318) { + var19 = 0.18584973; + } else { + var19 = 0.09544667; + } + } else { + if (input[0] < 662.8972) { + var19 = -0.0066986815; + } else { + var19 = 0.13876268; + } + } + } else { + if (input[6] < 0.060177866) { + if (input[3] < 61.0) { + var19 = 0.28863788; + } else { + var19 = 0.1563169; + } + } else { + if (input[6] < 0.060939953) { + var19 = -0.23982003; + } else { + var19 = 0.12995958; + } + } + } + } + } else { + if (input[7] < 0.0035266217) { + if (input[2] < 0.088344395) { + if (input[1] < 58.7778) { + if (input[2] < 0.046456575) { + var19 = -0.24245098; + } else { + var19 = 0.06375839; + } + } else { + if (input[5] < 19.682528) { + var19 = 0.35146332; + } else { + var19 = 0.13173448; + } + } + } else { + if (input[4] < 51.153934) { + if (input[1] < 272.0462) { + var19 = -0.08740072; + } else { + var19 = 0.068280794; + } + } else { + if (input[6] < 2.5102012) { + var19 = -0.10490829; + } else { + var19 = 0.09699892; + } + } + } + } else { + if (input[3] < 19.0) { + if (input[5] < 27.572266) { + if (input[7] < 0.0038169443) { + var19 = -0.16326049; + } else { + var19 = -0.3467289; + } + } else { + if (input[1] < 637.6124) { + var19 = -0.11922235; + } else { + var19 = 0.28304565; + } + } + } else { + if (input[5] < 26.310371) { + if (input[0] < 654.6809) { + var19 = -0.15935317; + } else { + var19 = 0.14955802; + } + } else { + if (input[1] < 1013.4276) { + var19 = 0.29576048; + } else { + var19 = 0.05207686; + } + } + } + } + } + } + double var20; + if (input[1] < 121.57103) { + if (input[1] < 120.35962) { + if (input[1] < 118.724884) { + if (input[1] < 53.19751) { + if (input[6] < 0.0067773927) { + if (input[4] < 3.4118037) { + var20 = 0.081607565; + } else { + var20 = -0.08240058; + } + } else { + if (input[5] < 20.57342) { + var20 = 0.06318391; + } else { + var20 = 0.012098423; + } + } + } else { + if (input[1] < 59.12854) { + if (input[0] < 542.8911) { + var20 = -0.13984007; + } else { + var20 = -0.047853548; + } + } else { + if (input[1] < 78.21661) { + var20 = 0.06918719; + } else { + var20 = -0.025802625; + } + } + } + } else { + if (input[3] < 6.0) { + if (input[5] < 27.379698) { + if (input[0] < 561.316) { + var20 = -0.24284081; + } else { + var20 = 0.034370665; + } + } else { + if (input[7] < 0.005221153) { + var20 = -0.047790777; + } else { + var20 = 0.3209619; + } + } + } else { + if (input[6] < 0.02907517) { + if (input[0] < 568.40643) { + var20 = 0.034011804; + } else { + var20 = 0.2955521; + } + } else { + if (input[4] < 30.271399) { + var20 = 0.36801016; + } else { + var20 = 0.077210605; + } + } + } + } + } else { + if (input[3] < 6.0) { + if (input[5] < 27.204857) { + if (input[2] < 0.20299208) { + if (input[6] < 0.0031386863) { + var20 = 0.3476895; + } else { + var20 = -0.18831672; + } + } else { + var20 = 0.37951037; + } + } else { + if (input[0] < 515.6308) { + if (input[4] < 24.157349) { + var20 = 0.20862538; + } else { + var20 = 0.013161407; + } + } else { + if (input[5] < 30.39442) { + var20 = -0.20763978; + } else { + var20 = 0.12993; + } + } + } + } else { + if (input[5] < 20.352009) { + if (input[0] < 431.5945) { + if (input[1] < 120.8548) { + var20 = 0.22284906; + } else { + var20 = -0.024214225; + } + } else { + if (input[7] < 0.01816849) { + var20 = -0.24694918; + } else { + var20 = 0.14747892; + } + } + } else { + if (input[1] < 120.64625) { + if (input[0] < 420.89536) { + var20 = 0.21874572; + } else { + var20 = -0.17470117; + } + } else { + if (input[5] < 23.403553) { + var20 = 0.35014218; + } else { + var20 = 0.17788695; + } + } + } + } + } + } else { + if (input[1] < 137.21216) { + if (input[2] < 0.18529916) { + if (input[0] < 519.94336) { + if (input[2] < 0.1336906) { + if (input[4] < 23.164886) { + var20 = 0.24861954; + } else { + var20 = -0.024807464; + } + } else { + if (input[0] < 495.93704) { + var20 = 0.39987805; + } else { + var20 = -0.059770398; + } + } + } else { + if (input[5] < 29.251307) { + if (input[6] < 0.023223083) { + var20 = 0.204641; + } else { + var20 = 0.38068032; + } + } else { + if (input[0] < 590.9189) { + var20 = 0.1456463; + } else { + var20 = -0.13220267; + } + } + } + } else { + if (input[4] < 32.506233) { + var20 = -0.39440748; + } else { + if (input[7] < 0.0018817764) { + if (input[5] < 24.9099) { + var20 = 0.09206003; + } else { + var20 = -0.3793267; + } + } else { + if (input[7] < 0.004739477) { + var20 = 0.27140805; + } else { + var20 = -0.104382515; + } + } + } + } + } else { + if (input[1] < 150.89111) { + if (input[3] < 9.0) { + if (input[4] < 16.2539) { + if (input[2] < 0.06435102) { + var20 = 0.092706345; + } else { + var20 = 0.24612178; + } + } else { + if (input[5] < 26.726051) { + var20 = 0.0008100487; + } else { + var20 = 0.08482211; + } + } + } else { + if (input[0] < 590.9189) { + if (input[1] < 145.6225) { + var20 = 0.17052823; + } else { + var20 = -0.012943858; + } + } else { + if (input[7] < 0.0050532636) { + var20 = 0.3844506; + } else { + var20 = 0.17083503; + } + } + } + } else { + if (input[1] < 168.27454) { + if (input[0] < 584.10345) { + if (input[5] < 29.440952) { + var20 = -0.17498991; + } else { + var20 = -0.0057055773; + } + } else { + if (input[1] < 153.67346) { + var20 = 0.019274238; + } else { + var20 = -0.12003264; + } + } + } else { + if (input[1] < 170.5625) { + if (input[0] < 652.3909) { + var20 = 0.33775955; + } else { + var20 = 0.14308701; + } + } else { + if (input[5] < 22.283722) { + var20 = 0.024811568; + } else { + var20 = -0.012226484; + } + } + } + } + } + } + double var21; + if (input[5] < 14.734648) { + if (input[1] < 121.57103) { + if (input[2] < 0.06494424) { + if (input[1] < 78.480835) { + if (input[1] < 58.668335) { + if (input[2] < 0.008977376) { + var21 = 0.14810723; + } else { + var21 = -0.0062392424; + } + } else { + if (input[0] < 524.19574) { + var21 = -0.21983053; + } else { + var21 = 0.34418195; + } + } + } else { + if (input[7] < 0.006533345) { + if (input[5] < 13.509364) { + var21 = -0.30309266; + } else { + var21 = 0.06953089; + } + } else { + if (input[1] < 81.53082) { + var21 = -0.18972515; + } else { + var21 = 0.10855581; + } + } + } + } else { + if (input[0] < 455.97122) { + if (input[2] < 0.15468198) { + if (input[2] < 0.11836624) { + var21 = 0.02998288; + } else { + var21 = 0.4611208; + } + } else { + if (input[2] < 0.16581297) { + var21 = -0.38149056; + } else { + var21 = 0.21814498; + } + } + } else { + if (input[3] < 7.0) { + if (input[1] < 59.12854) { + var21 = -0.17136534; + } else { + var21 = -0.040230874; + } + } else { + if (input[0] < 540.31696) { + var21 = 0.35016268; + } else { + var21 = -0.025907371; + } + } + } + } + } else { + if (input[2] < 0.04891324) { + if (input[1] < 255.84222) { + if (input[5] < 10.757549) { + if (input[4] < 19.969645) { + var21 = 0.2713276; + } else { + var21 = -0.15176061; + } + } else { + if (input[4] < 16.909874) { + var21 = -0.03523674; + } else { + var21 = -0.22223753; + } + } + } else { + var21 = 0.2730832; + } + } else { + if (input[2] < 0.09952295) { + if (input[3] < 6.0) { + if (input[6] < 0.03770539) { + var21 = 0.045568787; + } else { + var21 = -0.25942716; + } + } else { + if (input[1] < 171.00562) { + var21 = 0.23094468; + } else { + var21 = 0.09987583; + } + } + } else { + if (input[4] < 26.19804) { + if (input[4] < 24.596539) { + var21 = 0.17447555; + } else { + var21 = 0.41239548; + } + } else { + if (input[5] < 11.839297) { + var21 = 0.24666278; + } else { + var21 = 0.096586816; + } + } + } + } + } + } else { + if (input[1] < 460.6717) { + if (input[4] < 41.197132) { + if (input[6] < 0.064966485) { + if (input[0] < 549.0806) { + if (input[4] < 32.506233) { + var21 = -0.009325147; + } else { + var21 = -0.10661085; + } + } else { + if (input[7] < 0.0043542767) { + var21 = 0.027058689; + } else { + var21 = -0.0031008073; + } + } + } else { + if (input[7] < 0.0042216145) { + if (input[1] < 81.66284) { + var21 = -0.16338529; + } else { + var21 = 0.08563193; + } + } else { + if (input[0] < 484.40204) { + var21 = 0.041157555; + } else { + var21 = -0.23821436; + } + } + } + } else { + if (input[7] < 0.0035266217) { + if (input[7] < 0.00022194226) { + if (input[0] < 519.08496) { + var21 = 0.12163585; + } else { + var21 = 0.012185954; + } + } else { + if (input[4] < 51.153934) { + var21 = -0.025871372; + } else { + var21 = -0.18674134; + } + } + } else { + if (input[3] < 18.0) { + if (input[1] < 148.36841) { + var21 = -0.06492654; + } else { + var21 = -0.25946936; + } + } else { + if (input[1] < 426.71954) { + var21 = 0.11291755; + } else { + var21 = -0.28108588; + } + } + } + } + } else { + if (input[4] < 32.146854) { + if (input[6] < 0.036404286) { + if (input[4] < 29.154097) { + if (input[0] < 577.4389) { + var21 = -0.00014381409; + } else { + var21 = 0.1515643; + } + } else { + if (input[7] < 0.0058516446) { + var21 = -0.017568024; + } else { + var21 = -0.46943176; + } + } + } else { + if (input[5] < 21.553902) { + if (input[4] < 30.913733) { + var21 = 0.28347158; + } else { + var21 = 0.1315185; + } + } else { + if (input[7] < 0.006881745) { + var21 = 0.17769256; + } else { + var21 = 0.06353293; + } + } + } + } else { + if (input[6] < 0.04355297) { + if (input[0] < 671.5958) { + if (input[5] < 28.908257) { + var21 = -0.26700157; + } else { + var21 = 0.27054808; + } + } else { + if (input[4] < 32.741352) { + var21 = 0.008889111; + } else { + var21 = 0.23754154; + } + } + } else { + if (input[0] < 637.80457) { + if (input[0] < 458.57184) { + var21 = 0.1612978; + } else { + var21 = -0.0025894595; + } + } else { + if (input[2] < 0.24309075) { + var21 = 0.15268838; + } else { + var21 = -0.026089093; + } + } + } + } + } + } + double var22; + if (input[1] < 255.84222) { + if (input[1] < 231.0669) { + if (input[4] < 34.974888) { + if (input[6] < 0.04064345) { + if (input[4] < 17.552475) { + if (input[6] < 0.02797405) { + var22 = 0.006433082; + } else { + var22 = 0.08976145; + } + } else { + if (input[0] < 518.2562) { + var22 = -0.07544756; + } else { + var22 = -0.0032797817; + } + } + } else { + if (input[4] < 23.436337) { + if (input[7] < 0.015328966) { + var22 = 0.10413666; + } else { + var22 = -0.07257227; + } + } else { + if (input[1] < 81.26416) { + var22 = -0.06749037; + } else { + var22 = 0.025415331; + } + } + } + } else { + if (input[6] < 0.018815022) { + if (input[1] < 227.01422) { + if (input[0] < 647.514) { + var22 = 0.47387728; + } else { + var22 = 0.05820012; + } + } else { + var22 = -0.17156908; + } + } else { + if (input[7] < 0.0042216145) { + if (input[4] < 266.78564) { + var22 = -0.034987994; + } else { + var22 = 0.046666; + } + } else { + if (input[2] < 0.20476818) { + var22 = -0.2033645; + } else { + var22 = -0.0058449553; + } + } + } + } + } else { + if (input[4] < 37.437794) { + if (input[6] < 0.030355815) { + if (input[4] < 21.723177) { + if (input[4] < 21.095676) { + var22 = -0.08328362; + } else { + var22 = 0.23125653; + } + } else { + if (input[5] < 30.1071) { + var22 = -0.23653127; + } else { + var22 = 0.13791358; + } + } + } else { + if (input[6] < 0.053631432) { + if (input[4] < 32.146854) { + var22 = -0.015755216; + } else { + var22 = -0.13818009; + } + } else { + if (input[7] < 0.004288183) { + var22 = 0.12016792; + } else { + var22 = -0.099513285; + } + } + } + } else { + if (input[5] < 26.310371) { + if (input[5] < 18.949379) { + if (input[4] < 45.96011) { + var22 = 0.09780602; + } else { + var22 = -0.23582761; + } + } else { + if (input[0] < 673.89215) { + var22 = -0.22062089; + } else { + var22 = -0.008452428; + } + } + } else { + if (input[4] < 58.806583) { + if (input[5] < 26.446224) { + var22 = 0.19573297; + } else { + var22 = -0.13158633; + } + } else { + if (input[0] < 503.25986) { + var22 = 0.05788632; + } else { + var22 = 0.467125; + } + } + } + } + } + } else { + if (input[1] < 322.41693) { + if (input[7] < 0.0033310084) { + if (input[1] < 311.82135) { + if (input[5] < 27.997742) { + if (input[4] < 28.853786) { + var22 = 0.32334453; + } else { + var22 = 0.077684686; + } + } else { + if (input[7] < 0.0031682758) { + var22 = -0.0275608; + } else { + var22 = -0.3416865; + } + } + } else { + if (input[3] < 12.0) { + if (input[4] < 54.08032) { + var22 = 0.18008922; + } else { + var22 = -0.044391382; + } + } else { + if (input[7] < 0.002904936) { + var22 = 0.43051574; + } else { + var22 = 0.23545498; + } + } + } + } else { + if (input[2] < 0.05844772) { + if (input[7] < 0.005221153) { + if (input[0] < 666.15076) { + var22 = 0.2842773; + } else { + var22 = -0.09254454; + } + } else { + if (input[5] < 24.626286) { + var22 = 0.10221558; + } else { + var22 = -0.03243422; + } + } + } else { + if (input[3] < 9.0) { + if (input[4] < 26.65764) { + var22 = 0.021524727; + } else { + var22 = -0.09270983; + } + } else { + if (input[5] < 24.069965) { + var22 = 0.10753133; + } else { + var22 = -0.0053570913; + } + } + } + } + } else { + if (input[0] < 662.8972) { + if (input[5] < 20.57342) { + if (input[2] < 0.12856597) { + if (input[4] < 28.171436) { + var22 = 0.09710027; + } else { + var22 = -0.10615975; + } + } else { + if (input[4] < 43.929493) { + var22 = 0.14159393; + } else { + var22 = -0.008252256; + } + } + } else { + if (input[1] < 342.5133) { + if (input[4] < 21.723177) { + var22 = 0.03211651; + } else { + var22 = -0.15709598; + } + } else { + if (input[5] < 27.997742) { + var22 = -0.016453769; + } else { + var22 = 0.06845277; + } + } + } + } else { + if (input[1] < 659.8392) { + if (input[7] < 0.0064245304) { + if (input[7] < 0.005309737) { + var22 = 0.09294379; + } else { + var22 = -0.06257283; + } + } else { + if (input[4] < 34.26512) { + var22 = 0.18668121; + } else { + var22 = -0.15679458; + } + } + } else { + if (input[2] < 0.24309075) { + if (input[2] < 0.085624695) { + var22 = -0.13854387; + } else { + var22 = 0.2669099; + } + } else { + if (input[5] < 20.880156) { + var22 = -0.23308061; + } else { + var22 = 0.1564611; + } + } + } + } + } + } + double var23; + if (input[3] < 10.0) { + if (input[5] < 32.309944) { + if (input[4] < 11.631724) { + if (input[6] < 0.009366361) { + if (input[4] < 6.3997884) { + if (input[1] < 75.89282) { + var23 = 0.020343214; + } else { + var23 = 0.15512376; + } + } else { + if (input[5] < 21.517841) { + var23 = -0.009663351; + } else { + var23 = -0.12117653; + } + } + } else { + if (input[6] < 0.0224242) { + if (input[7] < 0.037121538) { + var23 = 0.026507495; + } else { + var23 = 0.11115238; + } + } else { + if (input[0] < 442.55496) { + var23 = 0.15544085; + } else { + var23 = 0.29757544; + } + } + } + } else { + if (input[1] < 577.64667) { + if (input[4] < 39.150074) { + if (input[2] < 0.16156626) { + var23 = -0.009153352; + } else { + var23 = 0.048134293; + } + } else { + if (input[7] < 0.0030364501) { + var23 = -0.028865524; + } else { + var23 = -0.1438162; + } + } + } else { + if (input[2] < 0.23170115) { + if (input[6] < 0.022136807) { + var23 = 0.075917244; + } else { + var23 = 0.30032563; + } + } else { + if (input[3] < 9.0) { + var23 = -0.18284892; + } else { + var23 = 0.26242307; + } + } + } + } + } else { + if (input[1] < 317.39774) { + if (input[1] < 153.67346) { + if (input[3] < 7.0) { + if (input[1] < 115.84448) { + var23 = 0.066051245; + } else { + var23 = 0.16781798; + } + } else { + if (input[1] < 149.04504) { + var23 = -0.10807064; + } else { + var23 = 0.333523; + } + } + } else { + if (input[2] < 0.03618908) { + if (input[0] < 583.14703) { + var23 = -0.3063315; + } else { + var23 = -0.054186888; + } + } else { + if (input[1] < 154.10083) { + var23 = -0.2825097; + } else { + var23 = 0.08425408; + } + } + } + } else { + if (input[7] < 0.0018817764) { + var23 = -0.082726285; + } else { + if (input[6] < 0.046756607) { + if (input[6] < 0.043000326) { + var23 = 0.26198128; + } else { + var23 = -0.16934824; + } + } else { + var23 = 0.33362165; + } + } + } + } + } else { + if (input[4] < 32.62736) { + if (input[7] < 0.003613382) { + if (input[7] < 0.0031165932) { + if (input[1] < 79.2583) { + var23 = -0.014232716; + } else { + if (input[6] < 0.06800464) { + var23 = 0.40900066; + } else { + var23 = 0.07429329; + } + } + } else { + if (input[5] < 22.758417) { + if (input[0] < 514.7731) { + var23 = -0.20323087; + } else { + var23 = 0.17331018; + } + } else { + if (input[5] < 27.03375) { + var23 = 0.36380327; + } else { + var23 = -0.107113235; + } + } + } + } else { + if (input[4] < 22.134548) { + if (input[3] < 12.0) { + if (input[4] < 17.400011) { + var23 = 0.19953342; + } else { + var23 = 0.054519538; + } + } else { + if (input[2] < 0.14234614) { + var23 = 0.24827115; + } else { + var23 = -0.29214504; + } + } + } else { + if (input[6] < 0.036780566) { + if (input[0] < 666.15076) { + var23 = -0.06985929; + } else { + var23 = 0.17053798; + } + } else { + if (input[1] < 351.04474) { + var23 = 0.04423365; + } else { + var23 = 0.12185032; + } + } + } + } + } else { + if (input[6] < 0.04618777) { + if (input[0] < 652.3909) { + if (input[1] < 195.06812) { + if (input[7] < 0.0024513172) { + var23 = 0.2835556; + } else { + var23 = -0.039065607; + } + } else { + if (input[3] < 11.0) { + var23 = -0.06148324; + } else { + var23 = -0.20964196; + } + } + } else { + if (input[3] < 13.0) { + if (input[7] < 0.0031165932) { + var23 = 0.17956346; + } else { + var23 = -0.12792733; + } + } else { + if (input[6] < 0.034918007) { + var23 = -0.06472596; + } else { + var23 = 0.17698237; + } + } + } + } else { + if (input[0] < 444.15787) { + if (input[6] < 0.07796111) { + if (input[7] < 0.003726883) { + var23 = -0.111930706; + } else { + var23 = 0.14437154; + } + } else { + if (input[4] < 45.96011) { + var23 = 0.28609803; + } else { + var23 = 0.15309149; + } + } + } else { + if (input[0] < 630.6033) { + if (input[6] < 0.057156924) { + var23 = -0.087912336; + } else { + var23 = 0.014359909; + } + } else { + if (input[2] < 0.20118733) { + var23 = 0.09503236; + } else { + var23 = -0.013658556; + } + } + } + } + } + } + double var24; + if (input[0] < 549.8694) { + if (input[6] < 0.056870647) { + if (input[4] < 27.594154) { + if (input[6] < 0.04373461) { + if (input[4] < 21.510715) { + if (input[6] < 0.036230333) { + var24 = -0.009676572; + } else { + var24 = 0.078278415; + } + } else { + if (input[7] < 0.004189696) { + var24 = 0.005383744; + } else { + var24 = -0.0825324; + } + } + } else { + if (input[4] < 22.332907) { + if (input[7] < 0.009886153) { + var24 = 0.16607144; + } else { + var24 = 0.032185804; + } + } else { + if (input[1] < 191.00214) { + var24 = 0.01333087; + } else { + var24 = 0.11654554; + } + } + } + } else { + if (input[0] < 499.65594) { + if (input[4] < 29.959333) { + if (input[2] < 0.15095592) { + var24 = -0.14051722; + } else { + var24 = 0.08850673; + } + } else { + if (input[6] < 0.033188343) { + var24 = -0.020390574; + } else { + var24 = -0.23995928; + } + } + } else { + if (input[4] < 38.459763) { + if (input[6] < 0.023223083) { + var24 = 0.18139671; + } else { + var24 = -0.02751152; + } + } else { + if (input[5] < 29.639475) { + var24 = -0.2619969; + } else { + var24 = 0.107228205; + } + } + } + } + } else { + if (input[4] < 34.400455) { + if (input[0] < 437.31543) { + if (input[4] < 26.561974) { + if (input[2] < 0.13148224) { + var24 = 0.2457707; + } else { + var24 = 0.08296487; + } + } else { + if (input[6] < 0.06134235) { + var24 = -0.2494994; + } else { + var24 = 0.01517666; + } + } + } else { + if (input[1] < 81.53082) { + if (input[0] < 442.55496) { + var24 = 0.37913832; + } else { + var24 = -0.15213531; + } + } else { + if (input[7] < 0.006703865) { + var24 = 0.11613807; + } else { + var24 = -0.046836484; + } + } + } + } else { + if (input[6] < 0.067336254) { + if (input[0] < 487.4292) { + if (input[1] < 351.04474) { + var24 = -0.22929344; + } else { + var24 = -0.45619053; + } + } else { + if (input[4] < 37.816837) { + var24 = 0.027955951; + } else { + var24 = -0.15213147; + } + } + } else { + if (input[2] < 0.32127088) { + if (input[3] < 9.0) { + var24 = -0.012950288; + } else { + var24 = 0.050966058; + } + } else { + if (input[3] < 26.0) { + var24 = -0.17254622; + } else { + var24 = 0.05436511; + } + } + } + } + } + } else { + if (input[3] < 30.0) { + if (input[1] < 173.5393) { + if (input[1] < 96.294495) { + if (input[1] < 55.566917) { + if (input[0] < 681.8675) { + var24 = 0.029520508; + } else { + var24 = 0.19549409; + } + } else { + if (input[1] < 78.480835) { + var24 = -0.015106252; + } else { + var24 = -0.077062994; + } + } + } else { + if (input[1] < 117.295654) { + if (input[3] < 6.0) { + var24 = 0.0711033; + } else { + var24 = 0.3566483; + } + } else { + if (input[1] < 121.57103) { + var24 = -0.038632907; + } else { + var24 = 0.046009913; + } + } + } + } else { + if (input[1] < 191.00214) { + if (input[7] < 0.0043885936) { + if (input[2] < 0.030371785) { + var24 = 0.29166; + } else { + var24 = -0.027618693; + } + } else { + if (input[0] < 660.6031) { + var24 = -0.1377398; + } else { + var24 = 0.058909304; + } + } + } else { + if (input[1] < 194.03192) { + if (input[2] < 0.10834086) { + var24 = 0.07303526; + } else { + var24 = 0.25625357; + } + } else { + if (input[4] < 54.08032) { + var24 = 0.008208867; + } else { + var24 = -0.09225246; + } + } + } + } + } else { + if (input[2] < 0.2476418) { + if (input[3] < 61.0) { + var24 = 0.28132185; + } else { + if (input[3] < 65.0) { + var24 = -0.26672557; + } else { + if (input[5] < 25.552517) { + var24 = 0.2694877; + } else { + var24 = -0.14597622; + } + } + } + } else { + if (input[3] < 53.0) { + if (input[5] < 26.244675) { + if (input[6] < 2.0720093) { + var24 = -0.18934886; + } else { + var24 = 0.22576864; + } + } else { + if (input[1] < 1042.0798) { + var24 = 0.29842156; + } else { + var24 = 0.042971425; + } + } + } else { + if (input[2] < 0.25271404) { + var24 = -0.22058392; + } else { + if (input[5] < 21.671062) { + var24 = 0.057719257; + } else { + var24 = 0.25977945; + } + } + } + } + } + } + double var25; + if (input[5] < 10.757549) { + if (input[1] < 52.519287) { + if (input[3] < 6.0) { + if (input[4] < 16.582067) { + if (input[0] < 481.2571) { + var25 = -0.08968952; + } else { + if (input[0] < 598.1789) { + var25 = 0.32769096; + } else { + var25 = 0.090688854; + } + } + } else { + var25 = 0.393639; + } + } else { + var25 = 0.015191706; + } + } else { + if (input[1] < 53.51245) { + if (input[0] < 641.33264) { + var25 = -0.2669306; + } else { + var25 = 0.12204598; + } + } else { + if (input[6] < 0.033188343) { + if (input[7] < 0.0064791786) { + if (input[1] < 197.2326) { + var25 = -0.16292605; + } else { + var25 = 0.2523843; + } + } else { + if (input[2] < 0.05491352) { + var25 = 0.07120221; + } else { + var25 = 0.23174776; + } + } + } else { + if (input[0] < 581.3013) { + if (input[0] < 510.3262) { + var25 = 0.28563893; + } else { + var25 = -0.03592883; + } + } else { + if (input[2] < 0.12643456) { + var25 = 0.40760964; + } else { + var25 = 0.02120469; + } + } + } + } + } + } else { + if (input[1] < 121.57103) { + if (input[3] < 7.0) { + if (input[1] < 117.295654) { + if (input[1] < 115.84448) { + if (input[1] < 96.294495) { + var25 = -0.020416187; + } else { + var25 = 0.028057417; + } + } else { + if (input[3] < 6.0) { + var25 = 0.16308194; + } else { + var25 = 0.41434577; + } + } + } else { + if (input[4] < 25.190176) { + if (input[0] < 652.3909) { + var25 = -0.042072907; + } else { + var25 = 0.1487; + } + } else { + if (input[5] < 24.719372) { + var25 = -0.14789015; + } else { + var25 = -0.034515236; + } + } + } + } else { + if (input[1] < 79.678955) { + if (input[1] < 78.21661) { + if (input[2] < 0.1456947) { + var25 = 0.0819251; + } else { + var25 = -0.16585775; + } + } else { + if (input[1] < 79.2583) { + var25 = -0.16039819; + } else { + var25 = 0.045033928; + } + } + } else { + if (input[1] < 117.759186) { + if (input[5] < 21.44003) { + var25 = 0.22735596; + } else { + var25 = 0.087510094; + } + } else { + if (input[0] < 580.3388) { + var25 = -0.000111295994; + } else { + var25 = 0.23446412; + } + } + } + } + } else { + if (input[1] < 137.21216) { + if (input[2] < 0.18529916) { + if (input[3] < 7.0) { + if (input[0] < 509.51126) { + var25 = 0.11918419; + } else { + var25 = 0.24011317; + } + } else { + if (input[4] < 36.36606) { + var25 = 0.335414; + } else { + var25 = -0.14932731; + } + } + } else { + if (input[0] < 423.21143) { + if (input[4] < 34.400455) { + var25 = -0.4929091; + } else { + var25 = 0.037897434; + } + } else { + if (input[7] < 0.0018817764) { + var25 = -0.12536187; + } else { + var25 = 0.19531576; + } + } + } + } else { + if (input[1] < 150.89111) { + if (input[3] < 6.0) { + if (input[5] < 23.786865) { + var25 = -0.0500783; + } else { + var25 = 0.04113983; + } + } else { + if (input[1] < 139.97156) { + var25 = 0.10936339; + } else { + var25 = 0.030158022; + } + } + } else { + if (input[1] < 154.10083) { + if (input[1] < 153.67346) { + var25 = -0.07933695; + } else { + var25 = -0.21257623; + } + } else { + if (input[1] < 171.00562) { + var25 = 0.10152496; + } else { + var25 = 0.0011968873; + } + } + } + } + } + } + double var26; + if (input[5] < 21.47956) { + if (input[3] < 8.0) { + if (input[4] < 19.483055) { + if (input[6] < 0.025832716) { + if (input[4] < 13.317816) { + if (input[1] < 58.89917) { + var26 = 0.00812696; + } else { + var26 = 0.07340861; + } + } else { + if (input[0] < 514.7731) { + var26 = -0.12510335; + } else { + var26 = 0.016093247; + } + } + } else { + if (input[1] < 75.70349) { + if (input[2] < 0.0697726) { + var26 = 0.040165596; + } else { + var26 = -0.20281194; + } + } else { + if (input[1] < 78.21661) { + var26 = 0.32927758; + } else { + var26 = 0.09642091; + } + } + } + } else { + if (input[7] < 0.01071381) { + if (input[5] < 15.711394) { + if (input[1] < 121.57103) { + var26 = -0.004256339; + } else { + var26 = 0.06149501; + } + } else { + if (input[2] < 0.033970356) { + var26 = 0.038907405; + } else { + var26 = -0.018092556; + } + } + } else { + if (input[4] < 31.242579) { + if (input[0] < 504.12915) { + var26 = -0.1664929; + } else { + var26 = -0.026519826; + } + } else { + var26 = -0.4511113; + } + } + } + } else { + if (input[4] < 34.974888) { + if (input[7] < 0.0031941843) { + if (input[5] < 19.57885) { + if (input[5] < 19.524868) { + var26 = 0.11490026; + } else { + var26 = -0.30745745; + } + } else { + if (input[1] < 151.28687) { + var26 = 0.12335423; + } else { + var26 = 0.28836313; + } + } + } else { + if (input[4] < 26.754328) { + if (input[7] < 0.004320392) { + var26 = 0.27701834; + } else { + var26 = 0.06695121; + } + } else { + if (input[3] < 14.0) { + var26 = -0.0052244337; + } else { + var26 = 0.18925287; + } + } + } + } else { + if (input[7] < 0.00022194226) { + if (input[2] < 0.18258128) { + if (input[3] < 10.0) { + var26 = 0.104681596; + } else { + var26 = 0.25654826; + } + } else { + if (input[2] < 0.3723327) { + var26 = -0.08194451; + } else { + var26 = 0.27678165; + } + } + } else { + if (input[4] < 46.88934) { + if (input[6] < 0.054671705) { + var26 = -0.055739135; + } else { + var26 = 0.048918802; + } + } else { + if (input[3] < 17.0) { + var26 = -0.13913031; + } else { + var26 = 0.060397577; + } + } + } + } + } + } else { + if (input[5] < 29.853495) { + if (input[7] < 0.0058516446) { + if (input[6] < 0.01945806) { + if (input[7] < 0.0030890324) { + if (input[0] < 499.65594) { + var26 = -0.056497607; + } else { + var26 = 0.19817229; + } + } else { + if (input[0] < 659.5366) { + var26 = 0.056253932; + } else { + var26 = -0.13802746; + } + } + } else { + if (input[6] < 0.03715515) { + if (input[7] < 0.0027116358) { + var26 = 0.054885652; + } else { + var26 = -0.03935881; + } + } else { + if (input[4] < 29.050934) { + var26 = 0.037638362; + } else { + var26 = -0.0089697335; + } + } + } + } else { + if (input[4] < 23.075237) { + if (input[6] < 0.02455999) { + if (input[4] < 11.631724) { + var26 = 0.004526357; + } else { + var26 = -0.05184586; + } + } else { + if (input[7] < 0.009376955) { + var26 = -0.016957087; + } else { + var26 = 0.06643244; + } + } + } else { + if (input[0] < 638.9881) { + if (input[6] < 0.03238514) { + var26 = -0.19064082; + } else { + var26 = -0.06545853; + } + } else { + if (input[3] < 15.0) { + var26 = 0.007664408; + } else { + var26 = 0.23728286; + } + } + } + } + } else { + if (input[7] < 0.004320392) { + if (input[6] < 2.0720093) { + if (input[0] < 499.65594) { + if (input[5] < 30.39442) { + var26 = -0.06396921; + } else { + var26 = 0.07268909; + } + } else { + if (input[1] < 370.7329) { + var26 = 0.094350666; + } else { + var26 = 0.25884047; + } + } + } else { + if (input[0] < 493.16626) { + var26 = -0.38835427; + } else { + var26 = 0.039397817; + } + } + } else { + if (input[2] < 0.22023034) { + if (input[2] < 0.17482603) { + if (input[1] < 376.36365) { + var26 = 0.00012983779; + } else { + var26 = 0.15258576; + } + } else { + if (input[5] < 33.48466) { + var26 = 0.29886776; + } else { + var26 = -0.019533347; + } + } + } else { + if (input[4] < 38.23957) { + if (input[4] < 34.687817) { + var26 = -0.0815533; + } else { + var26 = -0.5076693; + } + } else { + if (input[3] < 119.0) { + var26 = 0.15979677; + } else { + var26 = -0.23996304; + } + } + } + } + } + } + double var27; + if (input[1] < 272.0462) { + if (input[4] < 30.802803) { + if (input[6] < 0.05493398) { + if (input[5] < 22.832607) { + if (input[3] < 7.0) { + if (input[4] < 19.483055) { + var27 = 0.015550149; + } else { + var27 = -0.01528949; + } + } else { + if (input[7] < 0.0024513172) { + var27 = 0.41615164; + } else { + var27 = 0.036639698; + } + } + } else { + if (input[6] < 0.012573133) { + if (input[4] < 6.3997884) { + var27 = 0.029816298; + } else { + var27 = -0.065631315; + } + } else { + if (input[4] < 9.192085) { + var27 = 0.101396725; + } else { + var27 = -0.0107697; + } + } + } + } else { + if (input[2] < 0.12643456) { + if (input[0] < 418.34677) { + if (input[7] < 0.0028253945) { + var27 = -0.08865926; + } else { + var27 = 0.17952845; + } + } else { + if (input[3] < 6.0) { + var27 = 0.16297561; + } else { + var27 = 0.4354964; + } + } + } else { + if (input[0] < 439.05417) { + if (input[7] < 0.003726883) { + var27 = -0.08185488; + } else { + var27 = 0.07002853; + } + } else { + if (input[5] < 26.726051) { + var27 = 0.055899594; + } else { + var27 = 0.19272922; + } + } + } + } + } else { + if (input[7] < 0.0066440776) { + if (input[6] < 0.015576805) { + if (input[1] < 202.09811) { + if (input[1] < 197.2326) { + var27 = 0.17454296; + } else { + var27 = 0.6627866; + } + } else { + if (input[6] < 0.013906491) { + var27 = -0.288322; + } else { + var27 = 0.121295646; + } + } + } else { + if (input[1] < 229.68715) { + if (input[1] < 168.27454) { + var27 = -0.031049524; + } else { + var27 = 0.0055736005; + } + } else { + if (input[6] < 0.044108372) { + var27 = -0.13932854; + } else { + var27 = -0.044296734; + } + } + } + } else { + if (input[4] < 31.472792) { + if (input[5] < 24.812592) { + if (input[1] < 168.27454) { + var27 = -0.044584177; + } else { + var27 = 0.3174016; + } + } else { + if (input[7] < 0.007977205) { + var27 = 0.12081231; + } else { + var27 = -0.41810673; + } + } + } else { + if (input[1] < 115.16882) { + if (input[4] < 32.506233) { + var27 = -0.16550148; + } else { + var27 = 0.11961809; + } + } else { + if (input[2] < 0.17482603) { + var27 = -0.30583742; + } else { + var27 = -0.08877713; + } + } + } + } + } + } else { + if (input[1] < 322.41693) { + if (input[7] < 0.003726883) { + if (input[3] < 13.0) { + if (input[0] < 665.0621) { + if (input[6] < 0.032588493) { + var27 = 0.2294028; + } else { + var27 = 0.07931528; + } + } else { + if (input[7] < 0.0028793188) { + var27 = 0.07370611; + } else { + var27 = -0.21474366; + } + } + } else { + if (input[5] < 20.52871) { + if (input[6] < 0.06442285) { + var27 = 0.27950385; + } else { + var27 = -0.1867909; + } + } else { + if (input[6] < 0.043191366) { + var27 = -0.023410022; + } else { + var27 = 0.35108387; + } + } + } + } else { + if (input[2] < 0.19611394) { + if (input[5] < 29.440952) { + if (input[5] < 23.10101) { + var27 = 0.052340664; + } else { + var27 = -0.018040849; + } + } else { + if (input[6] < 0.028205514) { + var27 = 0.007846712; + } else { + var27 = 0.21408315; + } + } + } else { + if (input[4] < 43.929493) { + if (input[2] < 0.20118733) { + var27 = -0.52799904; + } else { + var27 = -0.17469028; + } + } else { + if (input[1] < 294.69617) { + var27 = -0.10755652; + } else { + var27 = 0.35573313; + } + } + } + } + } else { + if (input[4] < 36.538284) { + if (input[2] < 0.1482594) { + if (input[0] < 573.7609) { + if (input[4] < 25.920425) { + var27 = 0.03491973; + } else { + var27 = -0.12083524; + } + } else { + if (input[6] < 0.041540217) { + var27 = 0.016222112; + } else { + var27 = 0.10166012; + } + } + } else { + if (input[0] < 564.8027) { + if (input[6] < 0.06800464) { + var27 = 0.04332429; + } else { + var27 = 0.18751705; + } + } else { + if (input[3] < 10.0) { + var27 = 0.28407452; + } else { + var27 = 0.13443236; + } + } + } + } else { + if (input[6] < 0.050438497) { + if (input[5] < 18.505344) { + if (input[6] < 0.036600526) { + var27 = 0.40636945; + } else { + var27 = 0.058974367; + } + } else { + if (input[0] < 653.56573) { + var27 = -0.18785544; + } else { + var27 = -0.013065315; + } + } + } else { + if (input[2] < 0.13599229) { + if (input[1] < 342.5133) { + var27 = -0.08854816; + } else { + var27 = 0.1590339; + } + } else { + if (input[3] < 9.0) { + var27 = -0.086747155; + } else { + var27 = -0.0010721445; + } + } + } + } + } + } + double var28; + if (input[0] < 685.8291) { + if (input[3] < 11.0) { + if (input[1] < 421.82605) { + if (input[4] < 25.82959) { + if (input[6] < 0.03452544) { + if (input[4] < 16.083313) { + var28 = 0.010627158; + } else { + var28 = -0.017551996; + } + } else { + if (input[7] < 0.024472637) { + var28 = 0.03223176; + } else { + var28 = -0.15914856; + } + } + } else { + if (input[7] < 0.0058516446) { + if (input[2] < 0.04118097) { + var28 = 0.10886262; + } else { + var28 = -0.01103801; + } + } else { + if (input[0] < 618.3243) { + var28 = -0.11264132; + } else { + var28 = 0.017493812; + } + } + } + } else { + if (input[3] < 7.0) { + if (input[6] < 0.053393975) { + if (input[5] < 22.987692) { + var28 = 0.23441653; + } else { + var28 = 0.045823615; + } + } else { + if (input[1] < 426.71954) { + var28 = 0.020570284; + } else { + var28 = 0.34664935; + } + } + } else { + if (input[1] < 580.8021) { + if (input[4] < 34.82185) { + var28 = 0.06695405; + } else { + var28 = -0.00569427; + } + } else { + if (input[2] < 0.061827302) { + var28 = -0.13266899; + } else { + var28 = 0.2301438; + } + } + } + } + } else { + if (input[4] < 28.949688) { + if (input[7] < 0.0055812276) { + if (input[6] < 0.021268906) { + var28 = -0.12489596; + } else { + if (input[4] < 28.853786) { + var28 = 0.24683213; + } else { + var28 = -0.01865617; + } + } + } else { + if (input[4] < 25.02411) { + if (input[5] < 29.853495) { + var28 = 0.11970637; + } else { + var28 = -0.29556715; + } + } else { + if (input[6] < 0.035672467) { + var28 = -0.19173603; + } else { + var28 = 0.07236691; + } + } + } + } else { + if (input[0] < 437.31543) { + if (input[5] < 25.396322) { + if (input[0] < 433.54276) { + var28 = 0.2845645; + } else { + var28 = 0.056169037; + } + } else { + if (input[7] < 0.0055812276) { + var28 = 0.15212147; + } else { + var28 = -0.1888795; + } + } + } else { + if (input[2] < 0.32127088) { + if (input[7] < 0.003554517) { + var28 = 0.03710915; + } else { + var28 = -0.016786255; + } + } else { + if (input[6] < 2.5102012) { + var28 = -0.1276233; + } else { + var28 = 0.15524821; + } + } + } + } + } + } else { + if (input[4] < 18.692837) { + if (input[6] < 0.021562107) { + if (input[5] < 27.379698) { + if (input[6] < 0.016361425) { + if (input[6] < 0.01517198) { + var28 = 0.24451284; + } else { + var28 = -0.07029262; + } + } else { + var28 = 0.3466925; + } + } else { + var28 = -0.21127182; + } + } else { + if (input[3] < 6.0) { + if (input[1] < 73.54457) { + var28 = 0.10319612; + } else { + var28 = -0.33141887; + } + } else { + if (input[2] < 0.05844772) { + var28 = 0.24508467; + } else { + var28 = 0.0225286; + } + } + } + } else { + if (input[6] < 0.015576805) { + if (input[2] < 0.030371785) { + if (input[3] < 6.0) { + if (input[6] < 0.011077133) { + var28 = 0.2962204; + } else { + var28 = -0.0075790384; + } + } else { + if (input[1] < 81.0188) { + var28 = -0.32402918; + } else { + var28 = 0.069005385; + } + } + } else { + if (input[7] < 0.0058516446) { + var28 = -0.5988386; + } else { + var28 = -0.006679825; + } + } + } else { + if (input[6] < 0.060939953) { + if (input[1] < 342.5133) { + if (input[1] < 269.17102) { + var28 = 0.07701923; + } else { + var28 = -0.2139095; + } + } else { + if (input[7] < 0.008720319) { + var28 = 0.21707912; + } else { + var28 = -0.012809078; + } + } + } else { + if (input[5] < 19.630774) { + var28 = 0.14683667; + } else { + if (input[5] < 22.647522) { + var28 = -0.35385054; + } else { + var28 = -0.028347634; + } + } + } + } + } + } + double var29; + if (input[3] < 23.0) { + if (input[4] < 42.378788) { + if (input[6] < 0.059464313) { + if (input[0] < 524.19574) { + if (input[4] < 29.050934) { + if (input[6] < 0.050438497) { + var29 = -0.012152876; + } else { + var29 = 0.055251848; + } + } else { + if (input[0] < 497.7732) { + var29 = -0.13945596; + } else { + var29 = -0.029592179; + } + } + } else { + if (input[7] < 0.0043542767) { + if (input[4] < 36.36606) { + var29 = 0.025316345; + } else { + var29 = -0.015895613; + } + } else { + if (input[4] < 22.806326) { + var29 = 0.008185026; + } else { + var29 = -0.018158875; + } + } + } + } else { + if (input[1] < 191.00214) { + if (input[1] < 147.89758) { + if (input[2] < 0.20118733) { + var29 = 0.02115018; + } else { + var29 = 0.19280297; + } + } else { + if (input[0] < 492.25522) { + var29 = -0.16291133; + } else { + var29 = -0.02945566; + } + } + } else { + if (input[1] < 193.68164) { + if (input[0] < 586.0259) { + var29 = 0.55507255; + } else { + var29 = 0.0781992; + } + } else { + if (input[7] < 0.003554517) { + var29 = 0.091786176; + } else { + var29 = 0.023309533; + } + } + } + } + } else { + if (input[7] < 0.00022194226) { + if (input[0] < 512.96185) { + if (input[1] < 149.04504) { + if (input[4] < 873.4576) { + var29 = -0.14039798; + } else { + var29 = 0.23311527; + } + } else { + if (input[2] < 0.28529787) { + var29 = 0.1454058; + } else { + var29 = -0.037768595; + } + } + } else { + if (input[2] < 0.18529916) { + if (input[5] < 25.60802) { + var29 = 0.05917162; + } else { + var29 = -0.06312214; + } + } else { + if (input[2] < 0.3723327) { + var29 = -0.21941121; + } else { + var29 = 0.12850817; + } + } + } + } else { + if (input[7] < 0.0047754645) { + if (input[4] < 51.153934) { + if (input[1] < 272.0462) { + var29 = -0.07103682; + } else { + var29 = 0.010864122; + } + } else { + if (input[3] < 14.0) { + var29 = -0.17941062; + } else { + var29 = -0.025112435; + } + } + } else { + if (input[2] < 0.28529787) { + if (input[4] < 43.929493) { + var29 = -0.10337099; + } else { + var29 = -0.37108088; + } + } else { + if (input[4] < 51.153934) { + var29 = 0.14176; + } else { + var29 = -0.16411103; + } + } + } + } + } + } else { + if (input[1] < 771.8581) { + if (input[0] < 591.9396) { + if (input[4] < 25.557682) { + var29 = 0.0036689357; + } else { + if (input[1] < 432.44418) { + if (input[4] < 54.08032) { + var29 = 0.18818644; + } else { + var29 = -0.030765405; + } + } else { + if (input[1] < 580.8021) { + var29 = 0.36285567; + } else { + var29 = 0.2097088; + } + } + } + } else { + if (input[2] < 0.21767628) { + if (input[4] < 47.95029) { + if (input[0] < 672.7553) { + var29 = 0.27721217; + } else { + var29 = 0.0009629917; + } + } else { + if (input[5] < 23.10101) { + var29 = 0.20076166; + } else { + var29 = -0.17749347; + } + } + } else { + if (input[4] < 51.153934) { + if (input[5] < 22.504189) { + var29 = 0.05977338; + } else { + var29 = -0.41732138; + } + } else { + if (input[3] < 26.0) { + var29 = -0.055520806; + } else { + var29 = 0.23349501; + } + } + } + } + } else { + if (input[5] < 24.069965) { + if (input[0] < 628.1736) { + if (input[0] < 602.4093) { + if (input[0] < 549.0806) { + var29 = 0.024868509; + } else { + var29 = 0.15756503; + } + } else { + if (input[7] < 0.006159995) { + var29 = -0.29129523; + } else { + var29 = 0.14797881; + } + } + } else { + if (input[4] < 49.35926) { + var29 = 0.2809746; + } else { + if (input[7] < 0.0023330299) { + var29 = 0.22609676; + } else { + var29 = -0.030532164; + } + } + } + } else { + if (input[3] < 24.0) { + if (input[4] < 37.62948) { + var29 = 0.1885611; + } else { + if (input[6] < 0.07519955) { + var29 = -0.5301356; + } else { + var29 = -0.16484801; + } + } + } else { + if (input[7] < 0.015328966) { + if (input[4] < 34.687817) { + var29 = 0.2255476; + } else { + var29 = -0.02067405; + } + } else { + if (input[0] < 575.62115) { + var29 = -0.20552307; + } else { + var29 = 0.17336714; + } + } + } + } + } + } + double var30; + if (input[3] < 16.0) { + if (input[1] < 808.4346) { + if (input[4] < 42.378788) { + if (input[6] < 0.07962002) { + if (input[6] < 0.041724283) { + if (input[4] < 23.075237) { + var30 = 0.0038499022; + } else { + var30 = -0.021136777; + } + } else { + if (input[4] < 34.26512) { + var30 = 0.021438412; + } else { + var30 = -0.016640613; + } + } + } else { + if (input[5] < 23.747627) { + if (input[3] < 8.0) { + var30 = -0.04944776; + } else { + var30 = 0.12504394; + } + } else { + if (input[0] < 420.89536) { + var30 = 0.010524266; + } else { + var30 = 0.19502339; + } + } + } + } else { + if (input[7] < 0.0035266217) { + if (input[7] < 0.00022194226) { + if (input[0] < 519.08496) { + var30 = 0.07338564; + } else { + var30 = -0.0037626652; + } + } else { + if (input[4] < 51.153934) { + var30 = -0.014802671; + } else { + var30 = -0.12671523; + } + } + } else { + if (input[1] < 148.36841) { + if (input[2] < 0.25866318) { + var30 = -0.06731587; + } else { + var30 = 0.3623707; + } + } else { + if (input[0] < 530.13635) { + var30 = -0.2406261; + } else { + var30 = -0.105266415; + } + } + } + } + } else { + if (input[6] < 0.064966485) { + if (input[4] < 38.911335) { + if (input[5] < 26.310371) { + var30 = 0.25485677; + } else { + if (input[6] < 0.050438497) { + var30 = -0.16323964; + } else { + var30 = 0.16238008; + } + } + } else { + if (input[5] < 24.626286) { + var30 = -0.34824082; + } else { + var30 = 0.026335156; + } + } + } else { + if (input[2] < 0.300006) { + if (input[7] < 0.0050104572) { + var30 = 0.37426755; + } else { + var30 = 0.055018917; + } + } else { + var30 = 0.005542815; + } + } + } + } else { + if (input[1] < 401.15515) { + if (input[3] < 17.0) { + if (input[4] < 31.362043) { + if (input[2] < 0.087249905) { + var30 = 0.0069872867; + } else { + var30 = 0.24441172; + } + } else { + if (input[6] < 0.059464313) { + if (input[2] < 0.13749409) { + var30 = 0.05097892; + } else { + var30 = -0.30162436; + } + } else { + if (input[2] < 0.20664251) { + var30 = 0.18861912; + } else { + var30 = -0.015347408; + } + } + } + } else { + if (input[7] < 0.0024513172) { + if (input[7] < 0.0014543242) { + if (input[2] < 0.26561487) { + var30 = 0.17756866; + } else { + var30 = -0.14224513; + } + } else { + if (input[5] < 24.952822) { + var30 = 0.23194899; + } else { + var30 = 0.52907217; + } + } + } else { + if (input[1] < 348.68933) { + if (input[4] < 37.62948) { + var30 = 0.1947604; + } else { + var30 = -0.058419526; + } + } else { + if (input[6] < 0.09237537) { + var30 = 0.25120142; + } else { + var30 = -0.08778014; + } + } + } + } + } else { + if (input[5] < 22.462898) { + if (input[4] < 44.533443) { + if (input[3] < 64.0) { + if (input[2] < 0.18675008) { + var30 = 0.114208736; + } else { + var30 = 0.2622775; + } + } else { + if (input[6] < 0.063917145) { + var30 = 0.113393344; + } else { + var30 = -0.3996823; + } + } + } else { + if (input[3] < 18.0) { + if (input[7] < 0.0030103251) { + var30 = 0.04774635; + } else { + var30 = -0.34159806; + } + } else { + if (input[0] < 600.2424) { + var30 = 0.16324897; + } else { + var30 = -0.014345161; + } + } + } + } else { + if (input[0] < 636.6657) { + if (input[6] < 0.050438497) { + if (input[6] < 0.049783602) { + var30 = -0.030691566; + } else { + var30 = -0.6889656; + } + } else { + if (input[4] < 39.41097) { + var30 = 0.067482814; + } else { + var30 = -0.020664714; + } + } + } else { + if (input[7] < 0.0059561525) { + if (input[5] < 22.910156) { + var30 = -0.24548787; + } else { + var30 = 0.06868269; + } + } else { + if (input[6] < 0.06301065) { + var30 = 0.2734897; + } else { + var30 = 0.018857412; + } + } + } + } + } + } + double var31; + if (input[0] < 549.8694) { + if (input[6] < 0.017102145) { + if (input[7] < 0.04087875) { + if (input[7] < 0.0064245304) { + if (input[1] < 151.58571) { + if (input[1] < 76.13782) { + var31 = 0.009031001; + } else { + var31 = -0.14250433; + } + } else { + if (input[4] < 20.551977) { + var31 = 0.2531051; + } else { + var31 = 0.026366211; + } + } + } else { + if (input[0] < 549.0806) { + if (input[4] < 9.192085) { + var31 = -0.029435875; + } else { + var31 = -0.10077071; + } + } else { + if (input[1] < 173.9191) { + var31 = 0.3954906; + } else { + var31 = -0.21392871; + } + } + } + } else { + if (input[1] < 96.294495) { + if (input[7] < 0.086682595) { + if (input[6] < 0.01517198) { + var31 = -0.1121055; + } else { + var31 = 0.19942574; + } + } else { + if (input[0] < 535.2388) { + var31 = 0.064895846; + } else { + var31 = -0.15175273; + } + } + } else { + if (input[5] < 25.194532) { + if (input[5] < 23.366688) { + var31 = 0.12456851; + } else { + var31 = -0.1256383; + } + } else { + if (input[0] < 497.7732) { + var31 = 0.23821586; + } else { + var31 = 0.0006346548; + } + } + } + } + } else { + if (input[4] < 14.698128) { + if (input[3] < 7.0) { + if (input[6] < 0.032588493) { + if (input[4] < 12.241358) { + var31 = 0.06895355; + } else { + var31 = -0.0007654638; + } + } else { + var31 = 0.3088448; + } + } else { + if (input[6] < 0.022136807) { + if (input[3] < 8.0) { + var31 = 0.15610541; + } else { + var31 = -0.041140378; + } + } else { + if (input[5] < 20.922693) { + var31 = 0.07359313; + } else { + var31 = 0.25295433; + } + } + } + } else { + if (input[1] < 168.27454) { + if (input[1] < 150.89111) { + if (input[3] < 9.0) { + var31 = -0.014912315; + } else { + var31 = 0.09120771; + } + } else { + if (input[5] < 28.341646) { + var31 = -0.1240659; + } else { + var31 = 0.0016934013; + } + } + } else { + if (input[1] < 173.5393) { + if (input[0] < 490.3461) { + var31 = -0.036108736; + } else { + var31 = 0.14114001; + } + } else { + if (input[1] < 177.04877) { + var31 = -0.07390196; + } else { + var31 = 0.006624578; + } + } + } + } + } + } else { + if (input[3] < 31.0) { + if (input[0] < 685.8291) { + if (input[1] < 173.7774) { + if (input[1] < 96.294495) { + if (input[1] < 54.414856) { + var31 = 0.026636811; + } else { + var31 = -0.025393637; + } + } else { + if (input[3] < 6.0) { + var31 = 0.0011947413; + } else { + var31 = 0.048814923; + } + } + } else { + if (input[1] < 191.00214) { + if (input[7] < 0.0019773336) { + var31 = 0.11642728; + } else { + var31 = -0.06402586; + } + } else { + if (input[1] < 193.68164) { + var31 = 0.1590646; + } else { + var31 = 0.0039576893; + } + } + } + } else { + if (input[4] < 18.692837) { + if (input[3] < 6.0) { + if (input[6] < 0.021562107) { + var31 = 0.12592226; + } else { + var31 = -0.13734204; + } + } else { + if (input[2] < 0.05979991) { + var31 = 0.28960425; + } else { + var31 = 0.020359531; + } + } + } else { + if (input[3] < 8.0) { + if (input[2] < 0.09893972) { + var31 = -0.024545684; + } else { + var31 = 0.13660212; + } + } else { + if (input[2] < 0.13749409) { + var31 = 0.18869962; + } else { + var31 = -0.121860385; + } + } + } + } + } else { + if (input[2] < 0.300006) { + if (input[5] < 24.719372) { + if (input[5] < 23.10101) { + if (input[5] < 18.639524) { + var31 = 0.007752279; + } else { + var31 = 0.2836841; + } + } else { + if (input[5] < 24.108562) { + var31 = 0.04265081; + } else { + var31 = 0.28210148; + } + } + } else { + if (input[7] < 0.020403687) { + if (input[5] < 25.660357) { + var31 = -0.074003726; + } else { + var31 = 0.25364164; + } + } else { + var31 = -0.29279172; + } + } + } else { + if (input[3] < 82.0) { + if (input[1] < 1047.1123) { + if (input[3] < 36.0) { + var31 = -0.03014806; + } else { + var31 = 0.27859882; + } + } else { + if (input[7] < 0.0060544414) { + var31 = -0.2398929; + } else { + var31 = 0.054473773; + } + } + } else { + var31 = 0.26802516; + } + } + } + } + double var32; + if (input[5] < 11.839297) { + if (input[1] < 227.01422) { + if (input[2] < 0.015113175) { + if (input[7] < 0.009777767) { + if (input[4] < 23.523321) { + if (input[4] < 16.582067) { + var32 = 0.10312684; + } else { + var32 = 0.43698326; + } + } else { + var32 = -0.09962591; + } + } else { + if (input[6] < 0.024027178) { + if (input[3] < 6.0) { + var32 = 0.20409198; + } else { + var32 = -0.11569251; + } + } else { + var32 = -0.25826058; + } + } + } else { + if (input[2] < 0.04207915) { + if (input[6] < 0.016742049) { + if (input[6] < 0.011578243) { + var32 = -0.17230426; + } else { + var32 = 0.05577596; + } + } else { + if (input[1] < 118.04906) { + var32 = -0.16511405; + } else { + var32 = -0.6092951; + } + } + } else { + if (input[6] < 0.067336254) { + if (input[6] < 0.063442506) { + var32 = 0.056658078; + } else { + var32 = -0.31974286; + } + } else { + if (input[6] < 0.08433238) { + var32 = 0.37677577; + } else { + var32 = -0.017968949; + } + } + } + } + } else { + if (input[0] < 465.9689) { + var32 = -0.048966657; + } else { + if (input[7] < 0.0064245304) { + var32 = 0.3352511; + } else { + if (input[7] < 0.007683049) { + var32 = -0.107148744; + } else { + var32 = 0.23345521; + } + } + } + } + } else { + if (input[5] < 32.309944) { + if (input[1] < 121.57103) { + if (input[1] < 117.295654) { + if (input[1] < 115.84448) { + if (input[2] < 0.10185647) { + var32 = 0.0002534048; + } else { + var32 = -0.05018915; + } + } else { + if (input[2] < 0.11012769) { + var32 = 0.1480416; + } else { + var32 = 0.3784611; + } + } + } else { + if (input[0] < 403.76456) { + if (input[4] < 10.959761) { + var32 = -0.06758902; + } else { + var32 = 0.18002814; + } + } else { + if (input[4] < 25.647543) { + var32 = -0.026577396; + } else { + var32 = -0.07905267; + } + } + } + } else { + if (input[1] < 137.21216) { + if (input[7] < 0.0033590836) { + if (input[6] < 0.056870647) { + var32 = -0.07150901; + } else { + var32 = 0.16231485; + } + } else { + if (input[0] < 474.9457) { + var32 = 0.10756013; + } else { + var32 = 0.23099102; + } + } + } else { + if (input[4] < 17.400011) { + if (input[2] < 0.06740692) { + var32 = 0.009735582; + } else { + var32 = 0.11471225; + } + } else { + if (input[0] < 437.31543) { + var32 = -0.061892986; + } else { + var32 = 0.0024488792; + } + } + } + } + } else { + if (input[4] < 639.08484) { + if (input[6] < 0.0719236) { + if (input[6] < 0.06867167) { + if (input[4] < 36.70546) { + var32 = 0.053877898; + } else { + var32 = 0.24079216; + } + } else { + if (input[4] < 39.656563) { + var32 = -0.07292737; + } else { + var32 = -0.42143187; + } + } + } else { + if (input[2] < 0.20299208) { + var32 = 0.3767279; + } else { + if (input[7] < 0.0019291723) { + var32 = -0.14860135; + } else { + var32 = 0.16468991; + } + } + } + } else { + var32 = -0.25213528; + } + } + } + double var33; + if (input[6] < 0.034337986) { + if (input[7] < 0.002235593) { + if (input[0] < 437.31543) { + var33 = 0.5788957; + } else { + if (input[1] < 148.60223) { + if (input[1] < 115.47824) { + if (input[2] < 0.068600416) { + var33 = 0.16037935; + } else { + var33 = -0.1155035; + } + } else { + if (input[6] < 0.021562107) { + var33 = -0.38383424; + } else { + var33 = -0.049741782; + } + } + } else { + if (input[4] < 33.613834) { + if (input[1] < 176.52954) { + var33 = 0.5012753; + } else { + var33 = 0.102043204; + } + } else { + if (input[6] < 0.028412107) { + var33 = 0.12615228; + } else { + var33 = -0.008880984; + } + } + } + } + } else { + if (input[4] < 25.190176) { + if (input[0] < 681.8675) { + if (input[6] < 0.019131957) { + if (input[2] < 0.043907166) { + var33 = -0.010153404; + } else { + var33 = -0.114196874; + } + } else { + if (input[4] < 14.046501) { + var33 = 0.06356651; + } else { + var33 = -0.0045966813; + } + } + } else { + if (input[1] < 171.54358) { + if (input[2] < 0.012471318) { + var33 = 0.29918757; + } else { + var33 = -0.0174341; + } + } else { + if (input[5] < 24.27795) { + var33 = 0.19825849; + } else { + var33 = -0.0074895285; + } + } + } + } else { + if (input[2] < 0.05491352) { + if (input[1] < 78.480835) { + if (input[4] < 28.26695) { + var33 = 0.037447114; + } else { + var33 = 0.33735216; + } + } else { + if (input[1] < 154.10083) { + var33 = -0.10907633; + } else { + var33 = 0.06332278; + } + } + } else { + if (input[7] < 0.0038463692) { + if (input[6] < 0.021268906) { + var33 = 0.19964918; + } else { + var33 = -0.032981582; + } + } else { + if (input[3] < 7.0) { + var33 = -0.022095457; + } else { + var33 = -0.13040712; + } + } + } + } + } + } else { + if (input[4] < 19.845797) { + if (input[1] < 120.8548) { + if (input[0] < 476.04532) { + if (input[2] < 0.09225285) { + if (input[7] < 0.011801806) { + var33 = 0.11544157; + } else { + var33 = -0.030124232; + } + } else { + if (input[7] < 0.009081948) { + var33 = -0.15299074; + } else { + var33 = 0.17306261; + } + } + } else { + if (input[7] < 0.013718606) { + if (input[7] < 0.009674528) { + var33 = -0.07186932; + } else { + var33 = 0.20656945; + } + } else { + if (input[2] < 0.085624695) { + var33 = -0.28135458; + } else { + var33 = 0.11325828; + } + } + } + } else { + if (input[6] < 0.038425803) { + if (input[3] < 6.0) { + if (input[0] < 500.55154) { + var33 = 0.054385714; + } else { + var33 = -0.20273073; + } + } else { + if (input[6] < 0.03472593) { + var33 = 0.34428877; + } else { + var33 = 0.11147041; + } + } + } else { + if (input[2] < 0.1030972) { + if (input[6] < 0.042284492) { + var33 = 0.20189324; + } else { + var33 = -0.09665735; + } + } else { + var33 = 0.29708177; + } + } + } + } else { + if (input[7] < 0.017428085) { + if (input[4] < 32.274986) { + if (input[6] < 0.059464313) { + if (input[0] < 465.9689) { + var33 = -0.03536438; + } else { + var33 = 0.019174151; + } + } else { + if (input[0] < 451.8147) { + var33 = 0.03056829; + } else { + var33 = 0.1491945; + } + } + } else { + if (input[6] < 0.047546193) { + if (input[0] < 563.9471) { + var33 = -0.16115475; + } else { + var33 = -0.019376863; + } + } else { + if (input[7] < 0.0035266217) { + var33 = 0.007936126; + } else { + var33 = -0.028926868; + } + } + } + } else { + if (input[1] < 176.75247) { + if (input[0] < 439.05417) { + if (input[4] < 22.037666) { + var33 = 0.24844947; + } else { + var33 = -0.16670728; + } + } else { + if (input[0] < 445.85364) { + var33 = -0.44898912; + } else { + var33 = -0.17738134; + } + } + } else { + if (input[6] < 0.048940413) { + if (input[4] < 26.754328) { + var33 = 0.24956457; + } else { + var33 = 0.013802467; + } + } else { + if (input[7] < 0.028802285) { + var33 = -0.17599715; + } else { + var33 = 0.15112543; + } + } + } + } + } + } + double var34; + if (input[0] < 612.42395) { + if (input[6] < 0.052442644) { + if (input[4] < 26.84426) { + if (input[6] < 0.028205514) { + if (input[4] < 11.631724) { + if (input[0] < 468.29953) { + var34 = 0.068224385; + } else { + var34 = -0.0147347925; + } + } else { + if (input[0] < 481.2571) { + var34 = -0.06312812; + } else { + var34 = -0.014463358; + } + } + } else { + if (input[7] < 0.002544325) { + if (input[7] < 0.0023330299) { + var34 = -0.053276725; + } else { + var34 = -0.27094573; + } + } else { + if (input[7] < 0.0040931404) { + var34 = 0.046055138; + } else { + var34 = 0.008288866; + } + } + } + } else { + if (input[0] < 524.19574) { + if (input[2] < 0.100723624) { + if (input[1] < 151.58571) { + var34 = -0.08195739; + } else { + var34 = 0.044696152; + } + } else { + if (input[2] < 0.18825138) { + var34 = -0.11639565; + } else { + var34 = -0.85616034; + } + } + } else { + if (input[7] < 0.0055812276) { + if (input[2] < 0.16156626) { + var34 = -0.00045042875; + } else { + var34 = -0.22883739; + } + } else { + if (input[1] < 345.222) { + var34 = -0.14801352; + } else { + var34 = 0.008234401; + } + } + } + } + } else { + if (input[4] < 34.13175) { + if (input[1] < 367.2591) { + if (input[0] < 437.31543) { + if (input[7] < 0.003726883) { + var34 = -0.07550457; + } else { + var34 = 0.056531634; + } + } else { + if (input[1] < 59.12854) { + var34 = -0.11571471; + } else { + var34 = 0.047459517; + } + } + } else { + if (input[3] < 59.0) { + if (input[0] < 472.82422) { + var34 = 0.05470092; + } else { + var34 = 0.19110629; + } + } else { + if (input[2] < 0.25271404) { + var34 = -0.54042095; + } else { + var34 = 0.15428035; + } + } + } + } else { + if (input[6] < 0.07396459) { + if (input[0] < 487.4292) { + if (input[6] < 0.06800464) { + var34 = -0.20935623; + } else { + var34 = -0.06523762; + } + } else { + if (input[4] < 41.953285) { + var34 = 0.012518992; + } else { + var34 = -0.08749558; + } + } + } else { + if (input[0] < 406.91656) { + if (input[5] < 17.826921) { + var34 = -0.11886461; + } else { + var34 = 0.2261269; + } + } else { + if (input[4] < 40.86154) { + var34 = 0.058337618; + } else { + var34 = 0.005135916; + } + } + } + } + } + } else { + if (input[2] < 0.017481804) { + if (input[6] < 0.030984042) { + if (input[1] < 227.6239) { + if (input[6] < 0.006028899) { + if (input[7] < 0.009276815) { + var34 = 0.0922657; + } else { + var34 = -0.021476664; + } + } else { + if (input[7] < 0.065982014) { + var34 = 0.1128883; + } else { + var34 = -0.14876702; + } + } + } else { + if (input[6] < 0.0067773927) { + if (input[0] < 673.89215) { + var34 = 0.3258408; + } else { + var34 = 0.043771435; + } + } else { + if (input[1] < 269.17102) { + var34 = -0.04716756; + } else { + var34 = 0.18408737; + } + } + } + } else { + if (input[5] < 24.407122) { + if (input[7] < 0.0029307685) { + if (input[6] < 0.037336733) { + var34 = 0.23125188; + } else { + var34 = -0.23184034; + } + } else { + if (input[4] < 24.247833) { + var34 = -0.43912104; + } else { + var34 = -0.0147544695; + } + } + } else { + if (input[6] < 0.035672467) { + var34 = 0.2790731; + } else { + var34 = 0.023048025; + } + } + } + } else { + if (input[6] < 0.012091974) { + if (input[2] < 0.030371785) { + if (input[7] < 0.0048549008) { + if (input[1] < 151.58571) { + var34 = -0.025464298; + } else { + var34 = 0.20617856; + } + } else { + if (input[1] < 56.30182) { + var34 = -0.21718009; + } else { + var34 = -0.03994429; + } + } + } else { + if (input[0] < 649.94415) { + if (input[4] < 21.405123) { + var34 = 0.20771982; + } else { + var34 = -0.41022488; + } + } else { + var34 = -0.5198521; + } + } + } else { + if (input[3] < 12.0) { + if (input[1] < 171.00562) { + if (input[5] < 24.407122) { + var34 = 0.041057907; + } else { + var34 = -0.025468074; + } + } else { + if (input[5] < 23.66799) { + var34 = -0.021090643; + } else { + var34 = 0.022732593; + } + } + } else { + if (input[1] < 347.76187) { + if (input[5] < 19.524868) { + var34 = 0.20154488; + } else { + var34 = 0.08541734; + } + } else { + if (input[6] < 0.08433238) { + var34 = 0.03019728; + } else { + var34 = -0.09138988; + } + } + } + } + } + } + double var35; + if (input[1] < 79.678955) { + if (input[1] < 78.480835) { + if (input[1] < 59.12854) { + if (input[1] < 54.414856) { + if (input[3] < 6.0) { + if (input[0] < 412.7322) { + var35 = -0.09098955; + } else { + var35 = 0.0015267833; + } + } else { + if (input[1] < 52.519287) { + var35 = 0.0142220035; + } else { + var35 = 0.18760805; + } + } + } else { + if (input[0] < 643.69525) { + if (input[6] < 0.026557412) { + var35 = -0.046158195; + } else { + var35 = -0.115954675; + } + } else { + if (input[7] < 0.008892193) { + var35 = 0.04088507; + } else { + var35 = -0.08880069; + } + } + } + } else { + if (input[0] < 671.5958) { + if (input[1] < 75.70349) { + if (input[5] < 20.02947) { + var35 = 0.27686486; + } else { + var35 = 0.07723416; + } + } else { + if (input[2] < 0.044810057) { + var35 = 0.11553094; + } else { + var35 = 0.018820563; + } + } + } else { + if (input[7] < 0.0050532636) { + if (input[5] < 26.244675) { + var35 = 0.074994534; + } else { + var35 = -0.27176893; + } + } else { + if (input[5] < 15.362015) { + var35 = 0.34137285; + } else { + var35 = -0.27450457; + } + } + } + } + } else { + if (input[0] < 573.7609) { + if (input[6] < 0.009366361) { + if (input[6] < 0.007448412) { + if (input[5] < 22.24381) { + var35 = -0.24822624; + } else { + var35 = 0.1392598; + } + } else { + if (input[1] < 78.76117) { + var35 = 0.018954776; + } else { + var35 = 0.46396023; + } + } + } else { + if (input[5] < 31.63552) { + if (input[5] < 24.108562) { + var35 = -0.1256664; + } else { + var35 = -0.22571208; + } + } else { + var35 = 0.22999023; + } + } + } else { + if (input[3] < 7.0) { + if (input[5] < 25.60802) { + if (input[3] < 6.0) { + var35 = 0.15471481; + } else { + var35 = -0.019252822; + } + } else { + if (input[0] < 635.4403) { + var35 = -0.037419353; + } else { + var35 = -0.23263697; + } + } + } else { + if (input[1] < 79.2583) { + if (input[3] < 10.0) { + var35 = -0.16460867; + } else { + var35 = 0.075290635; + } + } else { + if (input[0] < 642.4932) { + var35 = -0.014559417; + } else { + var35 = 0.49966294; + } + } + } + } + } + } else { + if (input[1] < 81.0188) { + if (input[5] < 23.136395) { + if (input[0] < 480.22372) { + var35 = 0.8911301; + } else { + if (input[4] < 29.862753) { + if (input[3] < 6.0) { + var35 = 0.0055033253; + } else { + var35 = 0.45165157; + } + } else { + if (input[4] < 31.472792) { + var35 = -0.22076938; + } else { + var35 = 0.2022343; + } + } + } + } else { + if (input[3] < 6.0) { + if (input[0] < 648.74475) { + if (input[4] < 21.723177) { + var35 = -0.013599672; + } else { + var35 = 0.14313428; + } + } else { + var35 = 0.4169213; + } + } else { + if (input[4] < 14.482901) { + var35 = 0.2129654; + } else { + var35 = -0.2548947; + } + } + } + } else { + if (input[7] < 0.018963357) { + if (input[6] < 0.02797405) { + if (input[7] < 0.005712156) { + if (input[2] < 0.05706811) { + var35 = 0.050255876; + } else { + var35 = -0.03851036; + } + } else { + if (input[4] < 17.855886) { + var35 = -0.0064623947; + } else { + var35 = -0.06545679; + } + } + } else { + if (input[4] < 29.050934) { + if (input[5] < 20.121521) { + var35 = 0.043954194; + } else { + var35 = 0.008881416; + } + } else { + if (input[7] < 0.005177345) { + var35 = 0.00069955207; + } else { + var35 = -0.053007532; + } + } + } + } else { + if (input[3] < 8.0) { + if (input[4] < 29.561077) { + if (input[6] < 0.012573133) { + var35 = -0.007994117; + } else { + var35 = 0.0449605; + } + } else { + var35 = -0.34570608; + } + } else { + if (input[4] < 16.582067) { + if (input[5] < 27.11507) { + var35 = 0.2046578; + } else { + var35 = 0.019739008; + } + } else { + if (input[6] < 0.02506348) { + var35 = -0.18067439; + } else { + var35 = 0.042880215; + } + } + } + } + } + } + double var36; + if (input[3] < 10.0) { + if (input[1] < 577.64667) { + if (input[0] < 394.5867) { + if (input[5] < 27.204857) { + if (input[2] < 0.18675008) { + if (input[1] < 194.25922) { + var36 = 0.24129857; + } else { + var36 = 0.02139511; + } + } else { + var36 = -0.11712677; + } + } else { + if (input[5] < 27.997742) { + var36 = -0.32423484; + } else { + if (input[4] < 16.744081) { + var36 = 0.2134182; + } else { + var36 = -0.0070745363; + } + } + } + } else { + if (input[0] < 445.85364) { + if (input[7] < 0.0045949644) { + if (input[6] < 0.06800464) { + var36 = -0.0709271; + } else { + var36 = -0.00614136; + } + } else { + if (input[6] < 0.044296063) { + var36 = -0.0150985; + } else { + var36 = 0.05471811; + } + } + } else { + if (input[5] < 26.65595) { + if (input[1] < 347.76187) { + var36 = -0.002371085; + } else { + var36 = -0.04396752; + } + } else { + if (input[6] < 0.04355297) { + var36 = -0.0009182018; + } else { + var36 = 0.04304631; + } + } + } + } + } else { + if (input[2] < 0.23170115) { + if (input[0] < 519.94336) { + if (input[0] < 498.7337) { + if (input[7] < 0.006589555) { + var36 = 0.26040047; + } else { + var36 = 0.007134224; + } + } else { + var36 = -0.071822; + } + } else { + var36 = 0.28441724; + } + } else { + if (input[5] < 23.327835) { + var36 = -0.14565872; + } else { + var36 = 0.14750136; + } + } + } + } else { + if (input[1] < 145.6225) { + if (input[3] < 12.0) { + if (input[2] < 0.080565214) { + if (input[6] < 0.024297172) { + if (input[4] < 17.996569) { + var36 = 0.21520726; + } else { + var36 = -0.15914175; + } + } else { + if (input[7] < 0.0034446886) { + var36 = 0.007364478; + } else { + var36 = 0.30246466; + } + } + } else { + if (input[1] < 118.15326) { + if (input[7] < 0.005489262) { + var36 = -0.013343155; + } else { + var36 = -0.42760584; + } + } else { + if (input[1] < 140.66498) { + var36 = 0.20111655; + } else { + var36 = 0.022541557; + } + } + } + } else { + if (input[2] < 0.16471554) { + if (input[2] < 0.057736874) { + var36 = 0.012094285; + } else { + var36 = 0.2960295; + } + } else { + if (input[6] < 0.067336254) { + if (input[0] < 444.15787) { + var36 = 0.2169095; + } else { + var36 = -0.4310039; + } + } else { + if (input[7] < 0.0017720697) { + var36 = -0.049704093; + } else { + var36 = 0.22999592; + } + } + } + } + } else { + if (input[0] < 664.0269) { + if (input[1] < 266.53317) { + if (input[1] < 229.68715) { + if (input[7] < 0.003473019) { + var36 = 0.055706773; + } else { + var36 = -0.02585309; + } + } else { + if (input[4] < 20.090502) { + var36 = 0.16942097; + } else { + var36 = -0.10940527; + } + } + } else { + if (input[1] < 347.76187) { + if (input[5] < 26.883776) { + var36 = 0.08557748; + } else { + var36 = -0.10454143; + } + } else { + if (input[5] < 18.296543) { + var36 = 0.1369156; + } else { + var36 = 0.0006573203; + } + } + } + } else { + if (input[3] < 18.0) { + if (input[2] < 0.21310979) { + if (input[4] < 47.95029) { + var36 = 0.058013447; + } else { + var36 = 0.25082073; + } + } else { + if (input[5] < 25.146212) { + var36 = -0.25403637; + } else { + var36 = 0.21554308; + } + } + } else { + if (input[2] < 0.27443242) { + if (input[5] < 19.57885) { + var36 = 0.038987037; + } else { + var36 = 0.26930693; + } + } else { + if (input[3] < 33.0) { + var36 = -0.16692585; + } else { + var36 = 0.09671939; + } + } + } + } + } + } + double var37; + if (input[1] < 177.04877) { + if (input[1] < 176.52954) { + if (input[0] < 549.8694) { + if (input[5] < 32.309944) { + if (input[1] < 173.5393) { + if (input[1] < 171.9599) { + var37 = -0.009867549; + } else { + var37 = 0.18527064; + } + } else { + if (input[0] < 479.1913) { + var37 = -0.18599336; + } else { + var37 = -0.025558153; + } + } + } else { + if (input[3] < 9.0) { + if (input[3] < 7.0) { + var37 = 0.08533986; + } else { + var37 = -0.102294415; + } + } else { + var37 = 0.3808167; + } + } + } else { + if (input[2] < 0.14482379) { + if (input[1] < 174.33795) { + if (input[1] < 173.9191) { + var37 = 0.011946161; + } else { + var37 = -0.06287618; + } + } else { + if (input[4] < 25.736258) { + var37 = -0.007308967; + } else { + var37 = 0.15248206; + } + } + } else { + if (input[6] < 0.081781514) { + if (input[1] < 168.27454) { + var37 = -0.13476591; + } else { + var37 = -0.05083217; + } + } else { + if (input[1] < 78.913574) { + var37 = -0.16332656; + } else { + var37 = 0.1577406; + } + } + } + } + } else { + if (input[7] < 0.0046657408) { + if (input[5] < 18.83366) { + if (input[4] < 33.871582) { + if (input[2] < 0.07207942) { + var37 = 0.027660847; + } else { + var37 = -0.39577556; + } + } else { + if (input[7] < 0.0033310084) { + var37 = -0.15670533; + } else { + var37 = 0.33767757; + } + } + } else { + if (input[2] < 0.09773064) { + if (input[4] < 32.274986) { + var37 = 0.027256008; + } else { + var37 = 0.33008102; + } + } else { + if (input[4] < 26.011915) { + var37 = 0.43593723; + } else { + var37 = -0.080078356; + } + } + } + } else { + if (input[0] < 669.4481) { + if (input[5] < 12.536739) { + var37 = 0.22841994; + } else { + if (input[6] < 0.024027178) { + var37 = -0.11998698; + } else { + var37 = -0.23730814; + } + } + } else { + if (input[3] < 7.0) { + if (input[5] < 19.882984) { + var37 = 0.009299023; + } else { + var37 = 0.28366542; + } + } else { + var37 = -0.1265051; + } + } + } + } + } else { + if (input[1] < 196.52942) { + if (input[6] < 0.04915336) { + if (input[0] < 536.0595) { + if (input[4] < 34.82185) { + if (input[5] < 23.66799) { + var37 = 0.13627693; + } else { + var37 = 0.023638817; + } + } else { + if (input[0] < 514.7731) { + var37 = 0.67861736; + } else { + var37 = 0.099534884; + } + } + } else { + if (input[4] < 28.652704) { + if (input[6] < 0.03770539) { + var37 = 0.015284961; + } else { + var37 = 0.2035133; + } + } else { + if (input[4] < 43.929493) { + var37 = -0.034913275; + } else { + var37 = 0.4232519; + } + } + } + } else { + if (input[7] < 0.004288183) { + if (input[2] < 0.16901255) { + if (input[3] < 8.0) { + var37 = 0.110724606; + } else { + var37 = 0.2866598; + } + } else { + if (input[7] < 0.0025715097) { + var37 = 0.116411954; + } else { + var37 = -0.06356207; + } + } + } else { + if (input[2] < 0.13074243) { + if (input[3] < 9.0) { + var37 = 0.26270732; + } else { + var37 = -0.22788042; + } + } else { + if (input[2] < 0.15468198) { + var37 = -0.22873564; + } else { + var37 = 0.01959287; + } + } + } + } + } else { + if (input[1] < 199.64316) { + if (input[3] < 7.0) { + if (input[1] < 196.73734) { + if (input[0] < 467.11356) { + var37 = -0.24036363; + } else { + var37 = 0.13016215; + } + } else { + if (input[0] < 655.90375) { + var37 = -0.016727742; + } else { + var37 = -0.19383077; + } + } + } else { + if (input[0] < 467.11356) { + if (input[0] < 462.35693) { + var37 = -0.008897179; + } else { + var37 = 0.52027565; + } + } else { + if (input[2] < 0.07553887) { + var37 = -0.013854793; + } else { + var37 = -0.10984645; + } + } + } + } else { + if (input[4] < 23.075237) { + if (input[7] < 0.0061051412) { + if (input[3] < 7.0) { + var37 = 0.05985766; + } else { + var37 = 0.21160525; + } + } else { + if (input[2] < 0.14396334) { + var37 = 0.023231836; + } else { + var37 = -0.43656072; + } + } + } else { + if (input[6] < 0.0404656) { + if (input[0] < 632.9928) { + var37 = -0.0561752; + } else { + var37 = 0.007027154; + } + } else { + if (input[4] < 31.804214) { + var37 = 0.04637547; + } else { + var37 = -0.00038855502; + } + } + } + } + } + } + double var38; + if (input[1] < 521.543) { + if (input[3] < 17.0) { + if (input[4] < 43.929493) { + if (input[6] < 0.067336254) { + if (input[4] < 27.690273) { + if (input[6] < 0.046756607) { + var38 = -0.00016188921; + } else { + var38 = 0.041282542; + } + } else { + if (input[0] < 462.35693) { + var38 = -0.07356497; + } else { + var38 = -0.0047734375; + } + } + } else { + if (input[4] < 35.71706) { + if (input[4] < 28.652704) { + var38 = -0.24177077; + } else { + var38 = 0.08425828; + } + } else { + if (input[1] < 118.29285) { + var38 = -0.13156337; + } else { + var38 = 0.01802318; + } + } + } + } else { + if (input[7] < 0.002904936) { + if (input[3] < 12.0) { + if (input[6] < 0.5004946) { + var38 = -0.06365434; + } else { + var38 = 0.0095027285; + } + } else { + if (input[4] < 58.806583) { + var38 = 0.06335787; + } else { + var38 = -0.057722796; + } + } + } else { + if (input[1] < 381.45337) { + if (input[4] < 47.95029) { + var38 = 0.00418149; + } else { + var38 = -0.16028088; + } + } else { + if (input[7] < 0.0030629286) { + var38 = -0.42222214; + } else { + var38 = -0.15703337; + } + } + } + } + } else { + if (input[2] < 0.22287011) { + if (input[1] < 342.5133) { + if (input[4] < 37.62948) { + if (input[6] < 0.04792555) { + var38 = 0.052972626; + } else { + var38 = 0.27096084; + } + } else { + if (input[5] < 21.322844) { + var38 = 0.123646066; + } else { + var38 = -0.2530284; + } + } + } else { + if (input[7] < 0.0048549008) { + if (input[5] < 26.954847) { + var38 = 0.28416213; + } else { + var38 = -0.15036012; + } + } else { + if (input[1] < 426.71954) { + var38 = 0.1710374; + } else { + var38 = -0.043565456; + } + } + } + } else { + if (input[1] < 401.15515) { + if (input[5] < 24.069965) { + if (input[3] < 19.0) { + var38 = -0.16465324; + } else { + var38 = 0.1965323; + } + } else { + if (input[1] < 173.5393) { + var38 = -0.033260643; + } else { + var38 = 0.34839725; + } + } + } else { + if (input[1] < 432.44418) { + if (input[5] < 21.47956) { + var38 = 0.014288559; + } else { + var38 = -0.2926169; + } + } else { + if (input[3] < 20.0) { + var38 = -0.07751854; + } else { + var38 = 0.16101795; + } + } + } + } + } + } else { + if (input[3] < 13.0) { + if (input[0] < 557.74005) { + if (input[6] < 0.067336254) { + if (input[4] < 29.561077) { + if (input[0] < 514.7731) { + var38 = 0.05978279; + } else { + var38 = 0.30322057; + } + } else { + if (input[6] < 0.047741752) { + var38 = -0.3494682; + } else { + var38 = -0.048658047; + } + } + } else { + if (input[5] < 25.660357) { + if (input[4] < 49.35926) { + var38 = 0.28214666; + } else { + var38 = 0.04442425; + } + } else { + if (input[5] < 27.572266) { + var38 = -0.13789673; + } else { + var38 = 0.09223871; + } + } + } + } else { + if (input[7] < 0.0032761313) { + if (input[5] < 20.834808) { + if (input[5] < 18.639524) { + var38 = 0.17570311; + } else { + var38 = -0.15121806; + } + } else { + if (input[1] < 659.8392) { + var38 = 0.36751932; + } else { + var38 = 0.025491087; + } + } + } else { + if (input[1] < 544.12463) { + if (input[4] < 38.911335) { + var38 = 0.07609605; + } else { + var38 = -0.19845884; + } + } else { + if (input[7] < 0.007828504) { + var38 = 0.19249834; + } else { + var38 = -0.10015432; + } + } + } + } + } else { + if (input[6] < 0.04715824) { + if (input[7] < 0.009777767) { + if (input[0] < 667.30505) { + if (input[2] < 0.1336906) { + var38 = -0.0898554; + } else { + var38 = -0.36915207; + } + } else { + if (input[2] < 0.10770404) { + var38 = 0.011033464; + } else { + var38 = 0.22928022; + } + } + } else { + if (input[0] < 536.0595) { + if (input[4] < 23.702576) { + var38 = 0.23008482; + } else { + var38 = -0.2894834; + } + } else { + if (input[4] < 22.429638) { + var38 = -0.024416486; + } else { + var38 = 0.22504376; + } + } + } + } else { + if (input[4] < 54.08032) { + if (input[6] < 0.07519955) { + if (input[0] < 529.26776) { + var38 = -0.04746972; + } else { + var38 = 0.045168284; + } + } else { + if (input[1] < 522.426) { + var38 = -0.22207241; + } else { + var38 = 0.13087404; + } + } + } else { + if (input[2] < 0.18970776) { + if (input[6] < 0.063917145) { + var38 = -0.14643914; + } else { + var38 = 0.23818983; + } + } else { + if (input[3] < 38.0) { + var38 = -0.085133046; + } else { + var38 = 0.061945993; + } + } + } + } + } + } + double var39; + if (input[3] < 23.0) { + if (input[2] < 0.27443242) { + if (input[7] < 0.004288183) { + if (input[0] < 437.31543) { + if (input[3] < 11.0) { + if (input[6] < 0.07519955) { + var39 = -0.06127861; + } else { + var39 = 0.01370607; + } + } else { + if (input[4] < 639.08484) { + var39 = 0.20775472; + } else { + var39 = -0.10641192; + } + } + } else { + if (input[6] < 0.04873136) { + if (input[2] < 0.10250798) { + var39 = 0.010954948; + } else { + var39 = -0.023274671; + } + } else { + if (input[4] < 32.62736) { + var39 = 0.060042307; + } else { + var39 = 0.0060656862; + } + } + } + } else { + if (input[4] < 25.920425) { + if (input[3] < 6.0) { + if (input[1] < 52.519287) { + var39 = 0.011963791; + } else { + var39 = -0.018874826; + } + } else { + if (input[6] < 0.021839056) { + var39 = -0.011424738; + } else { + var39 = 0.01978988; + } + } + } else { + if (input[0] < 612.42395) { + if (input[6] < 0.044478152) { + var39 = -0.07283731; + } else { + var39 = -0.026461106; + } + } else { + if (input[4] < 40.86154) { + var39 = 0.02746165; + } else { + var39 = -0.1006213; + } + } + } + } + } else { + if (input[4] < 47.95029) { + if (input[1] < 869.74097) { + if (input[0] < 516.5424) { + if (input[3] < 11.0) { + var39 = 0.040850647; + } else { + var39 = 0.26975277; + } + } else { + var39 = -0.3190375; + } + } else { + var39 = -0.391262; + } + } else { + if (input[4] < 1054.0984) { + if (input[4] < 58.806583) { + if (input[1] < 545.9964) { + var39 = -0.08297894; + } else { + var39 = 0.1268919; + } + } else { + if (input[0] < 429.60077) { + var39 = 0.14684533; + } else { + var39 = -0.21796702; + } + } + } else { + if (input[0] < 554.3122) { + if (input[1] < 171.34103) { + var39 = -0.06754973; + } else { + var39 = -0.28007892; + } + } else { + if (input[7] < 0.000020908421) { + var39 = -0.21581195; + } else { + var39 = 0.23553161; + } + } + } + } + } + } else { + if (input[1] < 637.6124) { + if (input[1] < 432.44418) { + if (input[2] < 0.22853947) { + var39 = 0.25608668; + } else { + if (input[0] < 499.65594) { + var39 = 0.1890259; + } else { + if (input[7] < 0.004189696) { + var39 = -0.02919293; + } else { + var39 = -0.3691847; + } + } + } + } else { + if (input[5] < 19.57885) { + if (input[2] < 0.2476418) { + var39 = 0.17326364; + } else { + var39 = -0.14043294; + } + } else { + if (input[7] < 0.003554517) { + if (input[7] < 0.002235593) { + var39 = 0.15269503; + } else { + var39 = 0.4932419; + } + } else { + if (input[4] < 47.95029) { + var39 = 0.26341873; + } else { + var39 = 0.00006557112; + } + } + } + } + } else { + if (input[0] < 660.6031) { + if (input[4] < 54.08032) { + if (input[0] < 541.9823) { + if (input[6] < 0.07962002) { + var39 = -0.04426291; + } else { + var39 = 0.22938289; + } + } else { + if (input[7] < 0.005262675) { + var39 = -0.08504908; + } else { + var39 = 0.13986465; + } + } + } else { + if (input[0] < 563.0628) { + if (input[7] < 0.0074697095) { + var39 = 0.095551945; + } else { + var39 = -0.40877157; + } + } else { + if (input[3] < 51.0) { + var39 = -0.18558711; + } else { + var39 = 0.20048603; + } + } + } + } else { + if (input[6] < 0.087597266) { + if (input[2] < 0.16901255) { + var39 = 0.0029171896; + } else { + var39 = 0.338414; + } + } else { + if (input[7] < 0.0024513172) { + var39 = 0.0870784; + } else { + var39 = -0.1765469; + } + } + } + } + } + double var40; + if (input[1] < 81.83862) { + if (input[1] < 78.480835) { + if (input[1] < 59.12854) { + if (input[1] < 55.822754) { + if (input[7] < 0.024472637) { + if (input[7] < 0.0046316604) { + var40 = -0.013512792; + } else { + var40 = 0.02906257; + } + } else { + if (input[4] < 7.31554) { + var40 = 0.011248482; + } else { + var40 = -0.078807086; + } + } + } else { + if (input[3] < 7.0) { + if (input[2] < 0.07385218) { + var40 = -0.048649725; + } else { + var40 = -0.15003929; + } + } else { + if (input[0] < 670.5355) { + var40 = 0.021610329; + } else { + var40 = 0.27884737; + } + } + } + } else { + if (input[0] < 661.7976) { + if (input[4] < 34.26512) { + if (input[6] < 0.054671705) { + var40 = 0.05233152; + } else { + var40 = 0.3415971; + } + } else { + if (input[2] < 0.06370363) { + var40 = 0.3023556; + } else { + var40 = -0.11902176; + } + } + } else { + if (input[7] < 0.0024834909) { + if (input[2] < 0.10250798) { + var40 = 0.30971593; + } else { + var40 = -0.03767104; + } + } else { + if (input[5] < 15.362015) { + var40 = 0.17111206; + } else { + var40 = -0.1041168; + } + } + } + } + } else { + if (input[0] < 648.74475) { + if (input[1] < 79.2583) { + if (input[6] < 0.011077133) { + if (input[4] < 14.26258) { + var40 = -0.046239734; + } else { + var40 = 0.22075158; + } + } else { + if (input[1] < 78.95645) { + var40 = -0.08550174; + } else { + var40 = -0.1750865; + } + } + } else { + if (input[0] < 454.6105) { + if (input[7] < 0.010345605) { + var40 = 0.5492329; + } else { + var40 = -0.13749455; + } + } else { + if (input[1] < 81.0188) { + var40 = 0.041160986; + } else { + var40 = -0.079279594; + } + } + } + } else { + if (input[3] < 6.0) { + if (input[1] < 78.68506) { + if (input[5] < 20.26371) { + var40 = -0.24745367; + } else { + var40 = 0.07608222; + } + } else { + if (input[2] < 0.09893972) { + var40 = 0.22352034; + } else { + var40 = -0.094661266; + } + } + } else { + if (input[1] < 81.26416) { + if (input[7] < 0.0030629286) { + var40 = 0.1681827; + } else { + var40 = -0.04218454; + } + } else { + if (input[5] < 19.73429) { + var40 = -0.012833663; + } else { + var40 = -0.25957578; + } + } + } + } + } + } else { + if (input[1] < 114.94299) { + if (input[0] < 439.05417) { + if (input[1] < 96.294495) { + var40 = 0.6098724; + } else { + if (input[3] < 7.0) { + if (input[5] < 25.292236) { + var40 = 0.08021159; + } else { + var40 = 0.29246956; + } + } else { + var40 = -0.064524144; + } + } + } else { + if (input[1] < 96.294495) { + if (input[2] < 0.023036957) { + var40 = 0.46981692; + } else { + if (input[0] < 652.3909) { + var40 = -0.074920416; + } else { + var40 = 0.16490093; + } + } + } else { + if (input[3] < 6.0) { + if (input[5] < 21.6294) { + var40 = 0.16829713; + } else { + var40 = 0.04096561; + } + } else { + if (input[0] < 453.18805) { + var40 = -0.05645215; + } else { + var40 = 0.29947424; + } + } + } + } + } else { + if (input[0] < 554.3122) { + if (input[7] < 0.034326788) { + if (input[6] < 0.010530164) { + if (input[5] < 18.437906) { + var40 = -0.20369224; + } else { + var40 = -0.067107394; + } + } else { + if (input[6] < 0.07962002) { + var40 = -0.007609842; + } else { + var40 = 0.0287715; + } + } + } else { + if (input[1] < 117.95654) { + if (input[1] < 117.87097) { + var40 = 0.03562645; + } else { + var40 = -0.34484795; + } + } else { + if (input[0] < 550.7292) { + var40 = 0.09309268; + } else { + var40 = -0.17721556; + } + } + } + } else { + if (input[1] < 117.759186) { + if (input[3] < 6.0) { + if (input[7] < 0.0036993276) { + var40 = -0.05656076; + } else { + var40 = 0.04787405; + } + } else { + if (input[7] < 0.005309737) { + var40 = 0.27980572; + } else { + var40 = 0.07861999; + } + } + } else { + if (input[2] < 0.017481804) { + if (input[1] < 143.43848) { + var40 = -0.052804857; + } else { + var40 = 0.12601344; + } + } else { + if (input[6] < 0.02455999) { + var40 = -0.016402237; + } else { + var40 = 0.010172079; + } + } + } + } + } + } + double var41; + if (input[5] < 15.1662445) { + if (input[0] < 654.6809) { + if (input[2] < 0.10423684) { + if (input[2] < 0.0899786) { + if (input[0] < 415.7414) { + if (input[1] < 115.47824) { + var41 = 0.30295295; + } else { + var41 = 0.109451614; + } + } else { + if (input[3] < 7.0) { + var41 = -0.008146586; + } else { + var41 = 0.08227343; + } + } + } else { + if (input[6] < 0.04246912) { + if (input[7] < 0.005221153) { + var41 = -0.19709177; + } else { + var41 = -0.014019781; + } + } else { + if (input[4] < 28.556541) { + var41 = 0.20770831; + } else { + var41 = -0.13571869; + } + } + } + } else { + if (input[0] < 646.2121) { + if (input[6] < 0.043191366) { + if (input[1] < 154.10083) { + var41 = -0.008934455; + } else { + var41 = 0.31184453; + } + } else { + if (input[7] < 0.0020210762) { + var41 = -0.055718653; + } else { + var41 = 0.07034549; + } + } + } else { + if (input[2] < 0.11378789) { + var41 = 0.11718702; + } else { + if (input[6] < 0.046959374) { + var41 = -0.49113452; + } else { + var41 = -0.14217637; + } + } + } + } + } else { + if (input[7] < 0.0023913998) { + if (input[4] < 38.23957) { + if (input[0] < 678.9018) { + if (input[7] < 0.0022020095) { + var41 = -0.23318554; + } else { + var41 = 0.11549503; + } + } else { + var41 = -0.4602189; + } + } else { + if (input[0] < 664.0269) { + if (input[0] < 659.5366) { + var41 = 0.035255063; + } else { + var41 = 0.30815154; + } + } else { + var41 = -0.12148865; + } + } + } else { + if (input[2] < 0.04302311) { + if (input[1] < 78.21661) { + if (input[0] < 657.11444) { + var41 = -0.1403638; + } else { + var41 = 0.23817527; + } + } else { + if (input[4] < 24.247833) { + var41 = -0.18148737; + } else { + var41 = 0.22261068; + } + } + } else { + if (input[7] < 0.0048943935) { + if (input[7] < 0.0046657408) { + var41 = 0.1430508; + } else { + var41 = -0.3358908; + } + } else { + if (input[1] < 56.05768) { + var41 = 0.02738538; + } else { + var41 = 0.24926248; + } + } + } + } + } + } else { + if (input[0] < 394.5867) { + if (input[3] < 6.0) { + if (input[4] < 21.510715) { + if (input[6] < 0.032588493) { + if (input[6] < 0.028638396) { + var41 = 0.14203312; + } else { + var41 = -0.22908409; + } + } else { + var41 = 0.25147015; + } + } else { + if (input[1] < 117.95654) { + if (input[5] < 22.426456) { + var41 = 0.04528475; + } else { + var41 = -0.39752737; + } + } else { + var41 = 0.116726935; + } + } + } else { + var41 = 0.28441635; + } + } else { + if (input[4] < 40.228992) { + if (input[3] < 14.0) { + if (input[6] < 0.064966485) { + if (input[2] < 0.19611394) { + var41 = -0.0018011722; + } else { + var41 = -0.15098882; + } + } else { + if (input[2] < 0.15373018) { + var41 = 0.26737517; + } else { + var41 = 0.026116459; + } + } + } else { + if (input[7] < 0.005393012) { + if (input[4] < 35.880825) { + var41 = 0.17086598; + } else { + var41 = 0.04830709; + } + } else { + if (input[6] < 0.06867167) { + var41 = 0.03186133; + } else { + var41 = -0.19031528; + } + } + } + } else { + if (input[6] < 0.063917145) { + if (input[0] < 592.9258) { + if (input[4] < 42.829258) { + var41 = -0.11219274; + } else { + var41 = -0.24529377; + } + } else { + if (input[0] < 605.7406) { + var41 = 0.120496504; + } else { + var41 = -0.00935959; + } + } + } else { + if (input[1] < 255.84222) { + if (input[2] < 0.1785326) { + var41 = 0.01039458; + } else { + var41 = -0.054486025; + } + } else { + if (input[2] < 0.20664251) { + var41 = 0.05151931; + } else { + var41 = -0.0056600505; + } + } + } + } + } + } + double var42; + if (input[5] < 10.757549) { + if (input[4] < 23.34669) { + if (input[4] < 19.483055) { + if (input[2] < 0.040234327) { + if (input[6] < 0.0067773927) { + if (input[4] < 6.3997884) { + var42 = 0.0015696167; + } else { + var42 = -0.14371628; + } + } else { + if (input[7] < 0.0076142265) { + var42 = -0.03875558; + } else { + var42 = 0.24979079; + } + } + } else { + if (input[0] < 641.33264) { + if (input[2] < 0.055639505) { + var42 = -0.26909643; + } else { + var42 = -0.02028142; + } + } else { + var42 = 0.18992572; + } + } + } else { + if (input[0] < 636.6657) { + if (input[2] < 0.0899786) { + if (input[4] < 22.806326) { + var42 = 0.43106112; + } else { + var42 = 0.11623975; + } + } else { + var42 = -0.015358824; + } + } else { + if (input[6] < 0.02455999) { + var42 = -0.35068536; + } else { + var42 = 0.27602717; + } + } + } + } else { + if (input[4] < 25.557682) { + if (input[3] < 6.0) { + if (input[0] < 498.7337) { + var42 = -0.08088531; + } else { + var42 = -0.35041755; + } + } else { + if (input[4] < 24.066366) { + var42 = 0.11826908; + } else { + var42 = -0.1708556; + } + } + } else { + if (input[7] < 0.0031941843) { + if (input[1] < 173.7774) { + if (input[0] < 581.3013) { + var42 = -0.21063171; + } else { + var42 = 0.10629557; + } + } else { + if (input[4] < 42.829258) { + var42 = 0.2895264; + } else { + var42 = -0.008349; + } + } + } else { + if (input[0] < 552.43494) { + if (input[2] < 0.11706096) { + var42 = 0.5657209; + } else { + var42 = 0.14440219; + } + } else { + if (input[0] < 613.5429) { + var42 = -0.0642651; + } else { + var42 = 0.27787054; + } + } + } + } + } + } else { + if (input[1] < 121.57103) { + if (input[1] < 120.35962) { + if (input[1] < 118.724884) { + if (input[2] < 0.1030972) { + if (input[6] < 0.04246912) { + var42 = -0.0047715083; + } else { + var42 = 0.06048333; + } + } else { + if (input[7] < 0.0044564977) { + var42 = -0.019074727; + } else { + var42 = -0.08052936; + } + } + } else { + if (input[3] < 6.0) { + if (input[6] < 0.05065899) { + var42 = -0.019316012; + } else { + var42 = -0.26709113; + } + } else { + if (input[5] < 29.639475) { + var42 = 0.21771619; + } else { + var42 = -0.11826705; + } + } + } + } else { + if (input[3] < 6.0) { + if (input[5] < 27.204857) { + if (input[0] < 468.29953) { + var42 = -0.04624968; + } else { + var42 = -0.13229862; + } + } else { + if (input[6] < 0.029934272) { + var42 = 0.17065148; + } else { + var42 = -0.007010041; + } + } + } else { + if (input[5] < 19.417402) { + if (input[5] < 18.220026) { + var42 = 0.0054687443; + } else { + var42 = -0.33373713; + } + } else { + if (input[4] < 36.538284) { + var42 = 0.099197544; + } else { + var42 = 0.453432; + } + } + } + } + } else { + if (input[1] < 150.89111) { + if (input[4] < 22.235271) { + if (input[6] < 0.009953386) { + if (input[5] < 25.60802) { + var42 = -0.12551494; + } else { + var42 = 0.10966889; + } + } else { + if (input[4] < 14.046501) { + var42 = 0.12264627; + } else { + var42 = 0.041846763; + } + } + } else { + if (input[6] < 0.04792555) { + if (input[0] < 553.4461) { + var42 = -0.08080865; + } else { + var42 = 0.040847577; + } + } else { + if (input[4] < 31.694513) { + var42 = 0.06742243; + } else { + var42 = -0.0058506853; + } + } + } + } else { + if (input[1] < 168.27454) { + if (input[2] < 0.015113175) { + if (input[0] < 535.2388) { + var42 = 0.03578988; + } else { + var42 = 0.28117338; + } + } else { + if (input[0] < 624.53723) { + var42 = -0.085467815; + } else { + var42 = -0.0033022931; + } + } + } else { + if (input[1] < 170.5625) { + if (input[5] < 27.470732) { + var42 = 0.18395951; + } else { + var42 = -0.039760366; + } + } else { + if (input[1] < 177.04877) { + var42 = -0.015339797; + } else { + var42 = 0.004729019; + } + } + } + } + } + } + double var43; + if (input[4] < 45.96011) { + if (input[6] < 0.087597266) { + if (input[0] < 522.50836) { + if (input[4] < 31.022459) { + if (input[6] < 0.056870647) { + if (input[4] < 25.11206) { + var43 = 0.0013054729; + } else { + var43 = -0.03014182; + } + } else { + if (input[1] < 1013.4276) { + var43 = 0.059060607; + } else { + var43 = -0.3974292; + } + } + } else { + if (input[6] < 0.062583044) { + if (input[2] < 0.087249905) { + var43 = 0.07790541; + } else { + var43 = -0.08576602; + } + } else { + if (input[0] < 480.22372) { + var43 = -0.02296618; + } else { + var43 = 0.035338905; + } + } + } + } else { + if (input[3] < 20.0) { + if (input[7] < 0.0058516446) { + if (input[6] < 0.044478152) { + var43 = 0.0020370835; + } else { + var43 = 0.02089806; + } + } else { + if (input[6] < 0.049576316) { + var43 = -0.0006148037; + } else { + var43 = -0.12876251; + } + } + } else { + if (input[3] < 59.0) { + if (input[4] < 36.538284) { + var43 = 0.2046613; + } else { + var43 = 0.061044294; + } + } else { + if (input[4] < 32.98443) { + var43 = -0.5290736; + } else { + var43 = 0.050423633; + } + } + } + } + } else { + if (input[3] < 6.0) { + if (input[0] < 418.34677) { + if (input[7] < 0.0019773336) { + var43 = -0.3093366; + } else { + var43 = 0.22055525; + } + } else { + if (input[4] < 43.352867) { + if (input[0] < 439.05417) { + var43 = 0.29527158; + } else { + var43 = -0.0024487865; + } + } else { + var43 = 0.5039336; + } + } + } else { + if (input[3] < 10.0) { + if (input[5] < 28.764593) { + if (input[7] < 0.0029851033) { + var43 = 0.027069632; + } else { + var43 = -0.20273997; + } + } else { + if (input[0] < 415.7414) { + var43 = 0.04963925; + } else { + var43 = 0.29611626; + } + } + } else { + if (input[4] < 44.533443) { + if (input[7] < 0.0020210762) { + var43 = 0.08970608; + } else { + var43 = 0.34502512; + } + } else { + if (input[2] < 0.26561487) { + var43 = -0.11920057; + } else { + var43 = 0.12675808; + } + } + } + } + } + } else { + if (input[6] < 0.062583044) { + if (input[0] < 629.365) { + if (input[1] < 322.41693) { + if (input[1] < 269.17102) { + if (input[2] < 0.17982149) { + var43 = -0.20890857; + } else { + var43 = 0.05779706; + } + } else { + if (input[1] < 292.086) { + var43 = 0.3435096; + } else { + var43 = -0.08727603; + } + } + } else { + if (input[3] < 18.0) { + var43 = -0.32801; + } else { + if (input[1] < 522.426) { + var43 = 0.18652505; + } else { + var43 = -0.22872277; + } + } + } + } else { + if (input[5] < 25.552517) { + if (input[5] < 22.79438) { + if (input[5] < 22.68546) { + var43 = 0.025602119; + } else { + var43 = 0.4064133; + } + } else { + if (input[0] < 667.30505) { + var43 = -0.27931163; + } else { + var43 = 0.16212967; + } + } + } else { + if (input[6] < 0.059464313) { + if (input[2] < 0.11012769) { + var43 = 0.27259395; + } else { + var43 = -0.10991289; + } + } else { + var43 = 0.4225508; + } + } + } + } else { + if (input[2] < 0.20299208) { + if (input[3] < 10.0) { + if (input[7] < 0.0021320276) { + if (input[5] < 23.026451) { + var43 = 0.035419717; + } else { + var43 = -0.045513976; + } + } else { + if (input[1] < 460.6717) { + var43 = -0.23462395; + } else { + var43 = 0.19424698; + } + } + } else { + if (input[5] < 25.396322) { + if (input[7] < 0.0038169443) { + var43 = 0.108971775; + } else { + var43 = -0.19276032; + } + } else { + if (input[5] < 28.613876) { + var43 = -0.10237283; + } else { + var43 = 0.30900934; + } + } + } + } else { + if (input[5] < 26.65595) { + if (input[1] < 460.6717) { + if (input[1] < 370.7329) { + var43 = -0.046554968; + } else { + var43 = -0.14460845; + } + } else { + if (input[7] < 0.00513642) { + var43 = 0.0074710813; + } else { + var43 = -0.17847602; + } + } + } else { + if (input[0] < 546.2918) { + if (input[6] < 0.08433238) { + var43 = -0.22131045; + } else { + var43 = 0.0076287384; + } + } else { + if (input[5] < 27.470732) { + var43 = 0.018121788; + } else { + var43 = 0.25317994; + } + } + } + } + } + } + double var44; + if (input[4] < 36.36606) { + if (input[1] < 367.2591) { + if (input[1] < 350.59753) { + if (input[7] < 0.004288183) { + if (input[3] < 8.0) { + if (input[0] < 433.54276) { + var44 = -0.046015702; + } else { + var44 = 0.00506449; + } + } else { + if (input[4] < 25.736258) { + var44 = 0.21835744; + } else { + var44 = 0.033351477; + } + } + } else { + if (input[4] < 31.694513) { + if (input[5] < 22.758417) { + var44 = 0.0059070443; + } else { + var44 = -0.00974352; + } + } else { + if (input[1] < 55.88684) { + var44 = 0.23856999; + } else { + var44 = -0.058157545; + } + } + } + } else { + if (input[5] < 27.11507) { + if (input[2] < 0.14738971) { + if (input[2] < 0.0899786) { + var44 = -0.09172246; + } else { + var44 = -0.27091864; + } + } else { + if (input[6] < 0.056870647) { + var44 = 0.1613751; + } else { + var44 = -0.17881843; + } + } + } else { + if (input[7] < 0.0045603756) { + if (input[0] < 543.7184) { + var44 = -0.2532299; + } else { + var44 = 0.09171197; + } + } else { + if (input[7] < 0.0050104572) { + var44 = 0.43784168; + } else { + var44 = 0.021053148; + } + } + } + } + } else { + if (input[5] < 19.682528) { + if (input[4] < 31.135723) { + if (input[2] < 0.09952295) { + if (input[2] < 0.09670508) { + var44 = 0.14171746; + } else { + var44 = -0.40128013; + } + } else { + if (input[7] < 0.0070044855) { + var44 = 0.3134988; + } else { + var44 = 0.10510239; + } + } + } else { + if (input[6] < 0.033574995) { + var44 = -0.3199009; + } else { + if (input[4] < 32.860813) { + var44 = -0.09686906; + } else { + var44 = 0.17390464; + } + } + } + } else { + if (input[6] < 0.056870647) { + if (input[0] < 451.8147) { + if (input[2] < 0.13830733) { + var44 = -0.03787013; + } else { + var44 = -0.40034002; + } + } else { + if (input[4] < 32.032806) { + var44 = 0.04391229; + } else { + var44 = -0.025946096; + } + } + } else { + if (input[4] < 35.880825) { + if (input[0] < 433.54276) { + var44 = -0.07578586; + } else { + var44 = 0.14260627; + } + } else { + if (input[5] < 28.908257) { + var44 = 0.0031518685; + } else { + var44 = -0.34662592; + } + } + } + } + } + } else { + if (input[7] < 0.003554517) { + if (input[1] < 118.15326) { + if (input[6] < 0.050889377) { + if (input[6] < 0.04189776) { + if (input[3] < 6.0) { + var44 = 0.2150194; + } else { + var44 = -0.21049151; + } + } else { + if (input[0] < 641.33264) { + var44 = 0.0056903725; + } else { + var44 = 0.56771666; + } + } + } else { + if (input[4] < 39.92287) { + if (input[0] < 512.96185) { + var44 = -0.04243058; + } else { + var44 = -0.22562848; + } + } else { + if (input[4] < 41.953285) { + var44 = 0.14315465; + } else { + var44 = -0.05689304; + } + } + } + } else { + if (input[6] < 0.050438497) { + if (input[6] < 0.038605858) { + if (input[7] < 0.0024834909) { + var44 = 0.08945107; + } else { + var44 = -0.04898399; + } + } else { + if (input[1] < 194.03192) { + var44 = 0.022427222; + } else { + var44 = -0.11773282; + } + } + } else { + if (input[3] < 8.0) { + if (input[6] < 0.05601607) { + var44 = 0.08814264; + } else { + var44 = -0.027365424; + } + } else { + if (input[4] < 40.228992) { + var44 = 0.049427956; + } else { + var44 = 0.0041981977; + } + } + } + } + } else { + if (input[6] < 0.0224242) { + if (input[2] < 0.021280646) { + var44 = -0.110838205; + } else { + if (input[4] < 38.022415) { + var44 = 0.5805021; + } else { + if (input[6] < 0.015955688) { + var44 = 0.3352341; + } else { + var44 = -0.0895201; + } + } + } + } else { + if (input[3] < 31.0) { + if (input[6] < 0.03604567) { + if (input[3] < 8.0) { + var44 = 0.05402466; + } else { + var44 = -0.28677037; + } + } else { + if (input[2] < 0.13599229) { + var44 = 0.08188679; + } else { + var44 = -0.058437612; + } + } + } else { + if (input[7] < 0.011495326) { + if (input[7] < 0.0040295073) { + var44 = -0.07332357; + } else { + var44 = 0.14958814; + } + } else { + if (input[5] < 22.536089) { + var44 = -0.27682745; + } else { + var44 = 0.02757972; + } + } + } + } + } + } + double var45; + if (input[5] < 29.853495) { + if (input[4] < 29.256954) { + if (input[6] < 0.035483748) { + if (input[2] < 0.07385218) { + if (input[1] < 255.84222) { + if (input[1] < 231.0669) { + var45 = -0.000687875; + } else { + var45 = -0.07792894; + } + } else { + if (input[7] < 0.0054437453) { + var45 = 0.117703445; + } else { + var45 = 0.022586914; + } + } + } else { + if (input[4] < 17.400011) { + if (input[2] < 0.07944977) { + var45 = -0.043809228; + } else { + var45 = 0.18922274; + } + } else { + if (input[6] < 0.030572092) { + var45 = -0.081612915; + } else { + var45 = -0.01833214; + } + } + } + } else { + if (input[4] < 20.551977) { + if (input[3] < 6.0) { + if (input[7] < 0.0061051412) { + var45 = -0.050442375; + } else { + var45 = 0.07551008; + } + } else { + if (input[6] < 0.04355297) { + var45 = 0.08574843; + } else { + var45 = 0.24674435; + } + } + } else { + if (input[7] < 0.009994577) { + if (input[0] < 505.92896) { + var45 = 0.00266932; + } else { + var45 = 0.027316289; + } + } else { + if (input[1] < 177.04877) { + var45 = -0.099789694; + } else { + var45 = 0.036782146; + } + } + } + } + } else { + if (input[6] < 0.04915336) { + if (input[2] < 0.080014125) { + if (input[0] < 569.34753) { + if (input[1] < 81.53082) { + var45 = 0.2982076; + } else { + var45 = 0.04841676; + } + } else { + if (input[7] < 0.0050930274) { + var45 = -0.02069888; + } else { + var45 = 0.13028155; + } + } + } else { + if (input[0] < 570.25055) { + if (input[7] < 0.0048943935) { + var45 = -0.0734621; + } else { + var45 = -0.23030151; + } + } else { + if (input[6] < 0.041724283) { + var45 = -0.048970934; + } else { + var45 = 0.0127451895; + } + } + } + } else { + if (input[7] < 0.0066440776) { + if (input[4] < 36.870323) { + if (input[1] < 176.52954) { + var45 = -0.0052339393; + } else { + var45 = 0.04597466; + } + } else { + if (input[7] < 0.0035266217) { + var45 = -0.002522908; + } else { + var45 = -0.03589781; + } + } + } else { + if (input[2] < 0.20118733) { + if (input[1] < 137.9049) { + var45 = 0.030745521; + } else { + var45 = -0.1413496; + } + } else { + if (input[0] < 588.9621) { + var45 = 0.0042693107; + } else { + var45 = 0.2247349; + } + } + } + } + } + } else { + if (input[0] < 423.21143) { + if (input[1] < 140.49933) { + if (input[6] < 0.05220808) { + if (input[7] < 0.009081948) { + if (input[3] < 6.0) { + var45 = 0.31794795; + } else { + var45 = -0.011240875; + } + } else { + if (input[0] < 403.76456) { + var45 = 0.17236745; + } else { + var45 = -0.15627395; + } + } + } else { + if (input[7] < 0.0025999527) { + if (input[4] < 32.62736) { + var45 = 0.29440457; + } else { + var45 = -0.1187581; + } + } else { + if (input[7] < 0.0056639556) { + var45 = -0.32542473; + } else { + var45 = 0.17992683; + } + } + } + } else { + if (input[2] < 0.14155722) { + if (input[5] < 32.309944) { + if (input[6] < 0.020986198) { + var45 = 0.15325245; + } else { + var45 = -0.46151492; + } + } else { + if (input[3] < 6.0) { + var45 = -0.19045861; + } else { + var45 = 0.19581567; + } + } + } else { + if (input[7] < 0.0019291723) { + if (input[6] < 0.09237537) { + var45 = -0.39742213; + } else { + var45 = 0.11752563; + } + } else { + if (input[5] < 33.48466) { + var45 = 0.25824755; + } else { + var45 = -0.24295428; + } + } + } + } + } else { + if (input[0] < 425.37012) { + if (input[7] < 0.009886153) { + if (input[5] < 33.48466) { + if (input[7] < 0.0026282698) { + var45 = 0.09753454; + } else { + var45 = 0.35819897; + } + } else { + var45 = 0.006993035; + } + } else { + var45 = 0.0025710056; + } + } else { + if (input[6] < 0.016742049) { + if (input[7] < 0.0021675183) { + var45 = 0.31151712; + } else { + if (input[4] < 5.1584697) { + var45 = 0.13031185; + } else { + var45 = -0.05232006; + } + } + } else { + if (input[2] < 0.04891324) { + if (input[7] < 0.0025152762) { + var45 = -0.20077771; + } else { + var45 = 0.121657014; + } + } else { + if (input[1] < 115.47824) { + var45 = -0.081859455; + } else { + var45 = 0.037641607; + } + } + } + } + } + } + double var46; + if (input[3] < 11.0) { + if (input[1] < 421.82605) { + if (input[1] < 350.59753) { + if (input[6] < 0.0051328884) { + if (input[0] < 649.94415) { + if (input[7] < 0.28903082) { + var46 = -0.060813453; + } else { + var46 = 0.03217241; + } + } else { + if (input[1] < 53.395752) { + var46 = 0.2328275; + } else { + var46 = 0.02809499; + } + } + } else { + if (input[4] < 6.3997884) { + if (input[0] < 564.8027) { + var46 = 0.04289663; + } else { + var46 = 0.16040114; + } + } else { + if (input[2] < 0.015113175) { + var46 = 0.014335816; + } else { + var46 = -0.0025499868; + } + } + } + } else { + if (input[5] < 26.244675) { + if (input[0] < 536.8894) { + if (input[3] < 8.0) { + var46 = -0.03580963; + } else { + var46 = -0.1746057; + } + } else { + if (input[7] < 0.008130896) { + var46 = -0.05188697; + } else { + var46 = 0.08493718; + } + } + } else { + if (input[0] < 574.6581) { + if (input[6] < 0.014341843) { + var46 = 0.33391696; + } else { + var46 = -0.017529627; + } + } else { + if (input[7] < 0.0015539197) { + var46 = -0.1822645; + } else { + var46 = 0.11139032; + } + } + } + } + } else { + if (input[7] < 0.0074036974) { + if (input[4] < 30.271399) { + if (input[3] < 8.0) { + if (input[2] < 0.09670508) { + var46 = 0.32364315; + } else { + var46 = 0.14180185; + } + } else { + if (input[0] < 445.85364) { + var46 = -0.22949773; + } else { + var46 = 0.096460484; + } + } + } else { + if (input[6] < 0.05438315) { + if (input[0] < 572.0283) { + var46 = -0.20484126; + } else { + var46 = 0.024268596; + } + } else { + if (input[0] < 524.96844) { + var46 = 0.026369605; + } else { + var46 = 0.13741353; + } + } + } + } else { + if (input[7] < 0.008130896) { + if (input[4] < 26.19804) { + if (input[2] < 0.054148555) { + var46 = -0.4264527; + } else { + var46 = 0.049029876; + } + } else { + if (input[6] < 0.038425803) { + var46 = -0.089032635; + } else { + var46 = -0.5962795; + } + } + } else { + if (input[7] < 0.011644137) { + if (input[6] < 0.029290315) { + var46 = -0.22990058; + } else { + var46 = 0.08847949; + } + } else { + if (input[2] < 0.05343145) { + var46 = -0.07608734; + } else { + var46 = 0.21143106; + } + } + } + } + } + } else { + if (input[4] < 32.62736) { + if (input[7] < 0.0055379313) { + if (input[4] < 28.853786) { + if (input[6] < 0.021268906) { + var46 = -0.11041704; + } else { + if (input[6] < 0.05601607) { + var46 = 0.22338842; + } else { + var46 = -0.081552655; + } + } + } else { + if (input[6] < 0.052663703) { + if (input[2] < 0.11136079) { + var46 = 0.14358841; + } else { + var46 = 0.008355319; + } + } else { + if (input[4] < 32.506233) { + var46 = 0.24969761; + } else { + var46 = -0.07699739; + } + } + } + } else { + if (input[7] < 0.005805585) { + if (input[4] < 31.022459) { + if (input[5] < 25.05034) { + var46 = 0.025424967; + } else { + var46 = -0.38323638; + } + } else { + if (input[2] < 0.14999247) { + var46 = -0.6036142; + } else { + var46 = 0.024259752; + } + } + } else { + if (input[2] < 0.061130285) { + if (input[4] < 13.793873) { + var46 = 0.26694793; + } else { + var46 = -0.24335556; + } + } else { + if (input[4] < 22.134548) { + var46 = 0.16978419; + } else { + var46 = 0.011590895; + } + } + } + } + } else { + if (input[0] < 425.37012) { + if (input[2] < 0.19611394) { + var46 = -0.14052635; + } else { + if (input[5] < 28.908257) { + if (input[1] < 147.89758) { + var46 = 0.114478506; + } else { + var46 = 0.30811626; + } + } else { + var46 = 0.016176825; + } + } + } else { + if (input[6] < 0.057156924) { + if (input[0] < 562.22656) { + if (input[0] < 484.40204) { + var46 = 0.08191027; + } else { + var46 = -0.17956391; + } + } else { + if (input[0] < 652.3909) { + var46 = -0.019628514; + } else { + var46 = 0.06556731; + } + } + } else { + if (input[4] < 54.08032) { + if (input[7] < 0.0021675183) { + var46 = 0.14434947; + } else { + var46 = 0.012288196; + } + } else { + if (input[2] < 0.22563094) { + var46 = 0.027997145; + } else { + var46 = -0.059335846; + } + } + } + } + } + } + double var47; + if (input[3] < 15.0) { + if (input[1] < 637.6124) { + if (input[4] < 42.829258) { + if (input[6] < 0.0719236) { + if (input[0] < 512.96185) { + if (input[4] < 36.538284) { + var47 = -0.0051311287; + } else { + var47 = -0.0938252; + } + } else { + if (input[1] < 59.12854) { + var47 = -0.011067053; + } else { + var47 = 0.005069746; + } + } + } else { + if (input[2] < 0.1772592) { + if (input[4] < 39.656563) { + var47 = 0.15623604; + } else { + var47 = 0.51011235; + } + } else { + if (input[1] < 115.326904) { + var47 = -0.16746548; + } else { + var47 = 0.032160778; + } + } + } + } else { + if (input[7] < 0.0021675183) { + if (input[1] < 421.82605) { + if (input[1] < 322.41693) { + var47 = 0.0032180122; + } else { + var47 = -0.06259884; + } + } else { + if (input[0] < 619.6026) { + var47 = 0.02606475; + } else { + var47 = 0.24518089; + } + } + } else { + if (input[4] < 51.153934) { + if (input[2] < 0.25866318) { + var47 = -0.05239119; + } else { + var47 = 0.11004353; + } + } else { + if (input[6] < 0.08433238) { + var47 = -0.07150122; + } else { + var47 = -0.22210422; + } + } + } + } + } else { + if (input[0] < 546.2918) { + if (input[0] < 536.8894) { + if (input[1] < 814.16046) { + if (input[6] < 0.07962002) { + var47 = -0.027993597; + } else { + var47 = 0.15481117; + } + } else { + var47 = 0.28885674; + } + } else { + if (input[7] < 0.0047754645) { + var47 = -0.4255798; + } else { + var47 = -0.053978447; + } + } + } else { + if (input[4] < 24.157349) { + if (input[2] < 0.06800866) { + var47 = 0.019054119; + } else { + var47 = -0.29239348; + } + } else { + if (input[7] < 0.005805585) { + if (input[7] < 0.005309737) { + var47 = 0.16269812; + } else { + var47 = -0.20932324; + } + } else { + if (input[0] < 676.2616) { + var47 = 0.29462618; + } else { + var47 = 0.0686289; + } + } + } + } + } + } else { + if (input[5] < 18.06236) { + if (input[5] < 17.003792) { + if (input[2] < 0.15855789) { + var47 = 0.23625849; + } else { + if (input[7] < 0.0038169443) { + var47 = 0.11098571; + } else { + var47 = -0.29324898; + } + } + } else { + if (input[1] < 175.14758) { + var47 = -0.07727867; + } else { + if (input[6] < 0.03715515) { + var47 = 0.08008023; + } else { + var47 = 0.33931082; + } + } + } + } else { + if (input[7] < 0.005393012) { + if (input[2] < 0.16058685) { + if (input[1] < 289.77673) { + if (input[7] < 0.003999575) { + var47 = 0.11243084; + } else { + var47 = -0.32985696; + } + } else { + if (input[5] < 21.671062) { + var47 = 0.041940402; + } else { + var47 = 0.2053549; + } + } + } else { + if (input[6] < 0.055190377) { + if (input[1] < 432.44418) { + var47 = -0.3010615; + } else { + var47 = 0.027881544; + } + } else { + if (input[4] < 40.228992) { + var47 = 0.15116358; + } else { + var47 = 0.019678144; + } + } + } + } else { + if (input[4] < 27.141476) { + if (input[2] < 0.14396334) { + if (input[3] < 17.0) { + var47 = 0.22513442; + } else { + var47 = 0.06343913; + } + } else { + if (input[2] < 0.15855789) { + var47 = -0.3198805; + } else { + var47 = 0.18568206; + } + } + } else { + if (input[3] < 23.0) { + if (input[4] < 39.92287) { + var47 = -0.048652787; + } else { + var47 = -0.23313764; + } + } else { + if (input[0] < 523.36316) { + var47 = -0.05383395; + } else { + var47 = 0.076095745; + } + } + } + } + } + } + double var48; + if (input[6] < 0.046560727) { + if (input[2] < 0.13074243) { + if (input[4] < 19.969645) { + if (input[6] < 0.024027178) { + if (input[7] < 0.0057593356) { + if (input[2] < 0.047311783) { + var48 = 0.13112636; + } else { + var48 = -0.07080068; + } + } else { + if (input[0] < 642.4932) { + var48 = -0.013826316; + } else { + var48 = 0.033115182; + } + } + } else { + if (input[4] < 13.557352) { + if (input[6] < 0.02506348) { + var48 = 0.22406836; + } else { + var48 = 0.07089038; + } + } else { + if (input[1] < 96.294495) { + var48 = -0.018596869; + } else { + var48 = 0.031555094; + } + } + } + } else { + if (input[0] < 478.12262) { + if (input[7] < 0.0048139137) { + if (input[7] < 0.0019291723) { + var48 = 0.24834718; + } else { + var48 = -0.021051016; + } + } else { + if (input[6] < 0.04336643) { + var48 = -0.106104665; + } else { + var48 = 0.025274897; + } + } + } else { + if (input[5] < 29.08108) { + if (input[6] < 0.04618777) { + var48 = -0.0033383984; + } else { + var48 = -0.08397267; + } + } else { + if (input[4] < 32.98443) { + var48 = 0.022444295; + } else { + var48 = 0.15461463; + } + } + } + } + } else { + if (input[5] < 18.505344) { + if (input[7] < 0.0038169443) { + if (input[4] < 33.229774) { + var48 = -0.30895418; + } else { + if (input[7] < 0.002768994) { + var48 = -0.1942045; + } else { + var48 = 0.2298701; + } + } + } else { + if (input[0] < 640.0981) { + if (input[5] < 17.90769) { + var48 = 0.3116363; + } else { + var48 = 0.09785953; + } + } else { + if (input[7] < 0.0044915546) { + var48 = 0.22757807; + } else { + var48 = -0.28695032; + } + } + } + } else { + if (input[1] < 344.88092) { + if (input[5] < 20.215801) { + if (input[1] < 266.53317) { + var48 = -0.6864071; + } else { + var48 = 0.04999494; + } + } else { + if (input[2] < 0.1407783) { + var48 = -0.0652916; + } else { + var48 = -0.29050416; + } + } + } else { + if (input[0] < 484.40204) { + if (input[3] < 15.0) { + var48 = -0.44731408; + } else { + var48 = 0.040210664; + } + } else { + if (input[4] < 29.657753) { + var48 = 0.116574116; + } else { + var48 = -0.07121806; + } + } + } + } + } + } else { + if (input[4] < 23.884483) { + if (input[7] < 0.01071381) { + if (input[2] < 0.10368276) { + if (input[5] < 14.48199) { + var48 = -0.23496577; + } else { + if (input[5] < 25.88462) { + var48 = 0.23756997; + } else { + var48 = 0.052985225; + } + } + } else { + if (input[2] < 0.11836624) { + if (input[0] < 435.46625) { + var48 = -0.089395426; + } else { + var48 = 0.08143341; + } + } else { + if (input[6] < 0.055465702) { + var48 = 0.1751314; + } else { + var48 = -0.19014038; + } + } + } + } else { + if (input[7] < 0.027495267) { + if (input[1] < 117.95654) { + if (input[6] < 0.04812313) { + var48 = -0.42926264; + } else { + var48 = -0.1180297; + } + } else { + if (input[6] < 0.04792555) { + var48 = 0.14885478; + } else { + var48 = -0.14260593; + } + } + } else { + if (input[0] < 412.7322) { + var48 = -0.019665292; + } else { + if (input[2] < 0.10770404) { + var48 = 0.3979732; + } else { + var48 = 0.016947366; + } + } + } + } + } else { + if (input[4] < 34.26512) { + if (input[3] < 8.0) { + if (input[0] < 437.31543) { + if (input[6] < 0.053393975) { + var48 = -0.1914827; + } else { + var48 = -0.006669749; + } + } else { + if (input[6] < 0.06867167) { + var48 = 0.006345932; + } else { + var48 = 0.13422644; + } + } + } else { + if (input[7] < 0.0021675183) { + var48 = 0.59690595; + } else { + if (input[2] < 0.107161045) { + var48 = 0.4555342; + } else { + var48 = 0.038138863; + } + } + } + } else { + if (input[1] < 272.0462) { + if (input[7] < 0.0031422004) { + if (input[5] < 26.310371) { + var48 = -0.0129258325; + } else { + var48 = 0.024383167; + } + } else { + if (input[2] < 0.12225413) { + var48 = 0.15562186; + } else { + var48 = -0.05927219; + } + } + } else { + if (input[1] < 322.41693) { + if (input[3] < 8.0) { + var48 = -0.017630761; + } else { + var48 = 0.097553656; + } + } else { + if (input[6] < 0.066093825) { + var48 = -0.02788348; + } else { + var48 = 0.013836238; + } + } + } + } + } + } + double var49; + if (input[5] < 19.73429) { + if (input[7] < 0.0021675183) { + if (input[4] < 37.055496) { + if (input[1] < 231.0669) { + if (input[3] < 10.0) { + if (input[1] < 117.759186) { + var49 = -0.049165707; + } else { + var49 = -0.16217846; + } + } else { + var49 = 0.2816502; + } + } else { + if (input[0] < 566.57983) { + var49 = 0.41447043; + } else { + if (input[0] < 631.8479) { + var49 = -0.16748464; + } else { + var49 = 0.17741837; + } + } + } + } else { + if (input[3] < 6.0) { + if (input[2] < 0.17982149) { + if (input[6] < 0.05843868) { + var49 = 0.2694687; + } else { + var49 = -0.030708933; + } + } else { + if (input[0] < 495.93704) { + var49 = 0.4641275; + } else { + var49 = -0.05159033; + } + } + } else { + if (input[2] < 0.16058685) { + if (input[6] < 0.053393975) { + var49 = -0.13091308; + } else { + var49 = 0.08580167; + } + } else { + if (input[1] < 404.05896) { + var49 = -0.08210458; + } else { + var49 = 0.13020073; + } + } + } + } + } else { + if (input[3] < 6.0) { + if (input[4] < 24.85689) { + if (input[7] < 0.005262675) { + if (input[0] < 588.9621) { + var49 = -0.017867101; + } else { + var49 = -0.128617; + } + } else { + if (input[7] < 0.1289853) { + var49 = -0.009874205; + } else { + var49 = 0.09427113; + } + } + } else { + if (input[1] < 78.95645) { + if (input[6] < 0.040101185) { + var49 = 0.18334311; + } else { + var49 = 0.023966; + } + } else { + if (input[7] < 0.003554517) { + var49 = -0.04427077; + } else { + var49 = 0.05755228; + } + } + } + } else { + if (input[4] < 16.909874) { + if (input[1] < 56.73535) { + if (input[7] < 0.014372812) { + var49 = 0.09108925; + } else { + var49 = -0.08248349; + } + } else { + if (input[0] < 589.95685) { + var49 = 0.060542673; + } else { + var49 = 0.1933917; + } + } + } else { + if (input[6] < 0.027508454) { + if (input[5] < 13.509364) { + var49 = 0.15300402; + } else { + var49 = -0.037917525; + } + } else { + if (input[0] < 406.91656) { + var49 = -0.23146518; + } else { + var49 = 0.02217232; + } + } + } + } + } + } else { + if (input[7] < 0.006881745) { + if (input[4] < 25.11206) { + if (input[1] < 199.64316) { + if (input[2] < 0.12925828) { + if (input[7] < 0.0029851033) { + var49 = -0.06483453; + } else { + var49 = 0.0039432803; + } + } else { + if (input[1] < 147.89758) { + var49 = 0.21527119; + } else { + var49 = -0.1468445; + } + } + } else { + if (input[7] < 0.0049318275) { + if (input[0] < 685.8291) { + var49 = 0.1377012; + } else { + var49 = -0.25226584; + } + } else { + if (input[4] < 21.723177) { + var49 = 0.11167624; + } else { + var49 = 0.000366085; + } + } + } + } else { + if (input[7] < 0.0027116358) { + if (input[6] < 0.0387992) { + if (input[6] < 0.03770539) { + var49 = 0.04907431; + } else { + var49 = 0.22795056; + } + } else { + if (input[4] < 34.974888) { + var49 = 0.024627084; + } else { + var49 = -0.007102276; + } + } + } else { + if (input[6] < 0.0404656) { + if (input[2] < 0.112553775) { + var49 = -0.023419166; + } else { + var49 = -0.12890261; + } + } else { + if (input[0] < 507.74713) { + var49 = -0.018031195; + } else { + var49 = 0.01007653; + } + } + } + } + } else { + if (input[4] < 15.897472) { + if (input[6] < 0.012573133) { + if (input[7] < 0.086682595) { + if (input[0] < 538.57745) { + var49 = -0.07351429; + } else { + var49 = -0.015821993; + } + } else { + if (input[0] < 427.4725) { + var49 = 0.18034278; + } else { + var49 = 0.008960392; + } + } + } else { + if (input[5] < 25.146212) { + if (input[3] < 7.0) { + var49 = 0.024397312; + } else { + var49 = 0.09586457; + } + } else { + if (input[5] < 25.243595) { + var49 = -0.17059086; + } else { + var49 = -0.007982807; + } + } + } + } else { + if (input[3] < 7.0) { + if (input[1] < 118.724884) { + if (input[2] < 0.07323933) { + var49 = -0.0011600866; + } else { + var49 = -0.09147512; + } + } else { + if (input[1] < 151.58571) { + var49 = 0.041247137; + } else { + var49 = -0.01430796; + } + } + } else { + if (input[6] < 0.024815487) { + if (input[7] < 0.0075382576) { + var49 = 0.051707596; + } else { + var49 = -0.1230717; + } + } else { + if (input[0] < 597.1503) { + var49 = -0.04053738; + } else { + var49 = 0.047362108; + } + } + } + } + } + } + double var50; + if (input[3] < 9.0) { + if (input[1] < 421.82605) { + if (input[4] < 29.357256) { + if (input[7] < 0.0019773336) { + if (input[0] < 490.3461) { + var50 = 0.536886; + } else { + var50 = 0.100361235; + } + } else { + if (input[6] < 0.042833522) { + if (input[0] < 681.8675) { + var50 = -0.0032035212; + } else { + var50 = 0.051222935; + } + } else { + if (input[4] < 20.996748) { + var50 = 0.11114697; + } else { + var50 = 0.01093425; + } + } + } + } else { + if (input[1] < 348.1612) { + if (input[1] < 154.10083) { + if (input[1] < 150.89111) { + var50 = -0.013820175; + } else { + var50 = -0.11390511; + } + } else { + if (input[1] < 173.7774) { + var50 = 0.051502522; + } else { + var50 = -0.006333016; + } + } + } else { + if (input[0] < 647.514) { + if (input[2] < 0.191365) { + var50 = -0.12886488; + } else { + var50 = 0.053104177; + } + } else { + if (input[2] < 0.1456947) { + var50 = 0.19156043; + } else { + var50 = -0.123662; + } + } + } + } + } else { + if (input[4] < 28.26695) { + if (input[7] < 0.0071264803) { + if (input[2] < 0.1030972) { + if (input[4] < 27.141476) { + var50 = 0.28775615; + } else { + var50 = 0.06084225; + } + } else { + if (input[6] < 0.036780566) { + var50 = -0.25725496; + } else { + var50 = 0.16200905; + } + } + } else { + if (input[4] < 20.551977) { + if (input[4] < 18.410671) { + var50 = 0.030914074; + } else { + var50 = 0.25377098; + } + } else { + if (input[6] < 0.019131957) { + var50 = -0.46969524; + } else { + var50 = -0.004563052; + } + } + } + } else { + if (input[4] < 28.556541) { + var50 = -0.35171777; + } else { + if (input[1] < 432.44418) { + if (input[6] < 0.0719236) { + var50 = -0.010179944; + } else { + var50 = 0.3417834; + } + } else { + if (input[2] < 0.1399374) { + var50 = -0.110313505; + } else { + var50 = 0.051505797; + } + } + } + } + } + } else { + if (input[4] < 16.909874) { + if (input[5] < 27.29118) { + if (input[1] < 78.87378) { + if (input[4] < 15.7178545) { + if (input[1] < 78.383545) { + var50 = 0.16350384; + } else { + var50 = -0.21735536; + } + } else { + var50 = -0.30348355; + } + } else { + if (input[6] < 0.017456274) { + if (input[4] < 12.786485) { + var50 = 0.20528327; + } else { + var50 = -0.048410065; + } + } else { + if (input[1] < 174.03363) { + var50 = 0.31154305; + } else { + var50 = 0.14412913; + } + } + } + } else { + if (input[7] < 0.026389621) { + if (input[4] < 14.482901) { + if (input[6] < 0.017102145) { + var50 = -0.07167522; + } else { + var50 = -0.63023204; + } + } else { + if (input[5] < 28.479513) { + var50 = 0.19545218; + } else { + var50 = -0.0545734; + } + } + } else { + var50 = 0.21517242; + } + } + } else { + if (input[6] < 0.030572092) { + if (input[5] < 19.188658) { + if (input[0] < 600.2424) { + if (input[0] < 542.8911) { + var50 = 0.16448574; + } else { + var50 = -0.2133917; + } + } else { + if (input[1] < 174.03363) { + var50 = 0.30109107; + } else { + var50 = 0.08185008; + } + } + } else { + if (input[7] < 0.012781371) { + if (input[4] < 18.55459) { + var50 = 0.15058178; + } else { + var50 = -0.07122525; + } + } else { + if (input[4] < 17.703966) { + var50 = -0.6188506; + } else { + var50 = -0.118768014; + } + } + } + } else { + if (input[2] < 0.09670508) { + if (input[7] < 0.006533345) { + if (input[4] < 24.423347) { + var50 = 0.24794261; + } else { + var50 = 0.07988894; + } + } else { + if (input[2] < 0.08450693) { + var50 = -0.15037894; + } else { + var50 = 0.050275262; + } + } + } else { + if (input[0] < 423.21143) { + if (input[2] < 0.19611394) { + var50 = 0.03528733; + } else { + var50 = 0.21919023; + } + } else { + if (input[6] < 0.0404656) { + var50 = -0.03139144; + } else { + var50 = 0.0093645295; + } + } + } + } + } + } + double var51; + if (input[4] < 10.13415) { + if (input[6] < 0.007448412) { + if (input[5] < 26.244675) { + if (input[1] < 195.06812) { + if (input[1] < 143.84497) { + if (input[1] < 137.9049) { + var51 = -0.032066926; + } else { + var51 = -0.2619605; + } + } else { + if (input[2] < 0.015113175) { + var51 = 0.24388902; + } else { + var51 = -0.22342817; + } + } + } else { + if (input[5] < 24.673338) { + if (input[1] < 230.15582) { + var51 = -0.5179986; + } else { + var51 = -0.09190056; + } + } else { + var51 = 0.17271279; + } + } + } else { + if (input[1] < 115.16882) { + if (input[6] < 0.0051328884) { + if (input[3] < 6.0) { + var51 = -0.10962267; + } else { + var51 = 0.155391; + } + } else { + if (input[1] < 52.519287) { + var51 = 0.21672207; + } else { + var51 = -0.21588369; + } + } + } else { + if (input[0] < 615.92804) { + if (input[0] < 482.33795) { + var51 = 0.1437189; + } else { + var51 = 0.35867417; + } + } else { + var51 = -0.22037429; + } + } + } + } else { + if (input[0] < 488.4354) { + if (input[7] < 0.065982014) { + if (input[5] < 23.403553) { + if (input[6] < 0.013054227) { + var51 = 0.0039375816; + } else { + var51 = 0.16270757; + } + } else { + if (input[1] < 148.36841) { + var51 = 0.025404882; + } else { + var51 = -0.17545764; + } + } + } else { + if (input[4] < 5.1584697) { + if (input[5] < 22.020842) { + var51 = -0.048651744; + } else { + var51 = 0.1841644; + } + } else { + if (input[5] < 30.710585) { + var51 = 0.26049566; + } else { + var51 = -0.16946049; + } + } + } + } else { + if (input[3] < 8.0) { + if (input[0] < 531.8526) { + if (input[5] < 27.11507) { + var51 = -0.02343878; + } else { + var51 = -0.23795626; + } + } else { + if (input[1] < 140.762) { + var51 = 0.0625446; + } else { + var51 = -0.040721178; + } + } + } else { + var51 = 0.28672034; + } + } + } + } else { + if (input[7] < 0.04599524) { + if (input[0] < 451.8147) { + if (input[5] < 14.734648) { + if (input[3] < 6.0) { + if (input[0] < 415.7414) { + var51 = 0.29247814; + } else { + var51 = -0.012732344; + } + } else { + if (input[0] < 427.4725) { + var51 = -0.011761367; + } else { + var51 = 0.3081139; + } + } + } else { + if (input[6] < 0.013503123) { + if (input[6] < 0.008788065) { + var51 = -0.016928766; + } else { + var51 = -0.15854707; + } + } else { + if (input[4] < 15.110416) { + var51 = 0.03909656; + } else { + var51 = -0.017531374; + } + } + } + } else { + if (input[2] < 0.019446373) { + if (input[3] < 6.0) { + if (input[4] < 28.460495) { + var51 = 0.0040998664; + } else { + var51 = 0.2245383; + } + } else { + if (input[6] < 0.006028899) { + var51 = -0.019015312; + } else { + var51 = 0.086592376; + } + } + } else { + if (input[6] < 0.01815154) { + if (input[2] < 0.043907166) { + var51 = -0.014213437; + } else { + var51 = -0.10923666; + } + } else { + if (input[2] < 0.04971838) { + var51 = 0.037253; + } else { + var51 = 0.0003002052; + } + } + } + } + } else { + if (input[6] < 0.020684186) { + if (input[4] < 20.090502) { + if (input[5] < 21.08316) { + if (input[2] < 0.04118097) { + var51 = -0.18752502; + } else { + var51 = 0.124040924; + } + } else { + if (input[0] < 425.37012) { + var51 = -0.32153344; + } else { + var51 = 0.05208739; + } + } + } else { + if (input[3] < 6.0) { + if (input[0] < 527.5794) { + var51 = 0.6379746; + } else { + var51 = 0.13536714; + } + } else { + var51 = -0.0029128133; + } + } + } else { + if (input[0] < 435.46625) { + if (input[6] < 0.02797405) { + if (input[4] < 11.949299) { + var51 = 0.083188154; + } else { + var51 = -0.23025033; + } + } else { + if (input[5] < 28.613876) { + var51 = 0.34869766; + } else { + var51 = -0.14170717; + } + } + } else { + if (input[1] < 207.02184) { + if (input[4] < 11.631724) { + var51 = 0.018686045; + } else { + var51 = -0.23317206; + } + } else { + if (input[5] < 24.626286) { + var51 = 0.21207948; + } else { + var51 = -0.11186213; + } + } + } + } + } + } + double var52; + if (input[1] < 81.83862) { + if (input[1] < 77.55432) { + if (input[3] < 8.0) { + if (input[1] < 59.12854) { + if (input[1] < 55.945312) { + if (input[0] < 412.7322) { + var52 = -0.06638757; + } else { + var52 = 0.0016908767; + } + } else { + if (input[0] < 531.8526) { + var52 = -0.15765496; + } else { + var52 = -0.039652232; + } + } + } else { + if (input[5] < 29.440952) { + if (input[1] < 75.70349) { + var52 = 0.07562148; + } else { + var52 = 0.015927192; + } + } else { + if (input[7] < 0.0035266217) { + var52 = 0.107559465; + } else { + var52 = -0.17748722; + } + } + } + } else { + if (input[5] < 17.108025) { + if (input[2] < 0.09169535) { + if (input[6] < 0.009366361) { + var52 = -0.03372878; + } else { + var52 = 0.38150316; + } + } else { + if (input[7] < 0.0041569136) { + var52 = 0.17458488; + } else { + var52 = -0.15750659; + } + } + } else { + if (input[1] < 57.1416) { + if (input[0] < 611.31836) { + var52 = 0.05958004; + } else { + var52 = -0.14309812; + } + } else { + if (input[5] < 27.776207) { + var52 = 0.1492411; + } else { + var52 = -0.281459; + } + } + } + } + } else { + if (input[2] < 0.08283448) { + if (input[4] < 22.71235) { + if (input[1] < 78.383545) { + if (input[6] < 0.033379562) { + var52 = 0.018179625; + } else { + var52 = 0.6791546; + } + } else { + if (input[0] < 584.10345) { + var52 = -0.08601265; + } else { + var52 = -0.008158052; + } + } + } else { + if (input[5] < 17.493734) { + if (input[4] < 23.34669) { + var52 = 0.68896884; + } else { + var52 = 0.14439829; + } + } else { + if (input[5] < 24.069965) { + var52 = -0.039934516; + } else { + var52 = 0.096065044; + } + } + } + } else { + if (input[1] < 79.2583) { + if (input[3] < 6.0) { + if (input[5] < 22.910156) { + var52 = 0.17554435; + } else { + var52 = -0.17301574; + } + } else { + if (input[4] < 873.4576) { + var52 = -0.15238124; + } else { + var52 = 0.1184419; + } + } + } else { + if (input[0] < 472.82422) { + if (input[3] < 6.0) { + var52 = -0.025188984; + } else { + var52 = 0.7218857; + } + } else { + if (input[4] < 24.93774) { + var52 = 0.13502002; + } else { + var52 = -0.1033235; + } + } + } + } + } + } else { + if (input[1] < 114.94299) { + if (input[0] < 439.05417) { + if (input[1] < 96.294495) { + if (input[4] < 26.84426) { + if (input[2] < 0.059152238) { + var52 = 0.38279948; + } else { + var52 = -0.050393376; + } + } else { + var52 = 0.65523595; + } + } else { + if (input[5] < 16.015747) { + var52 = 0.3129068; + } else { + if (input[5] < 20.922693) { + var52 = -0.07245536; + } else { + var52 = 0.16402851; + } + } + } + } else { + if (input[1] < 96.294495) { + if (input[2] < 0.05491352) { + if (input[7] < 0.005354749) { + var52 = -0.09234411; + } else { + var52 = 0.23317151; + } + } else { + if (input[5] < 20.02947) { + var52 = 0.061107934; + } else { + var52 = -0.13768744; + } + } + } else { + if (input[0] < 494.08887) { + if (input[6] < 0.03279909) { + var52 = -0.090559095; + } else { + var52 = 0.10911762; + } + } else { + if (input[3] < 6.0) { + var52 = 0.11312643; + } else { + var52 = 0.27766082; + } + } + } + } + } else { + if (input[7] < 0.027495267) { + if (input[5] < 13.509364) { + if (input[1] < 322.41693) { + if (input[7] < 0.011090135) { + var52 = 0.0228049; + } else { + var52 = 0.1739913; + } + } else { + if (input[7] < 0.0023913998) { + var52 = 0.039978836; + } else { + var52 = 0.2897628; + } + } + } else { + if (input[1] < 141.24573) { + if (input[5] < 27.11507) { + var52 = -0.016949767; + } else { + var52 = 0.02397496; + } + } else { + if (input[1] < 143.14807) { + var52 = 0.1450877; + } else { + var52 = 0.00037433146; + } + } + } + } else { + if (input[5] < 14.48199) { + if (input[1] < 120.35962) { + if (input[0] < 563.0628) { + var52 = 0.123577274; + } else { + var52 = -0.1888476; + } + } else { + if (input[5] < 11.839297) { + var52 = 0.09667195; + } else { + var52 = -0.42966312; + } + } + } else { + if (input[5] < 21.282642) { + if (input[6] < 0.021839056) { + var52 = 0.11059394; + } else { + var52 = -0.0435085; + } + } else { + if (input[5] < 21.746756) { + var52 = -0.16235133; + } else { + var52 = 0.032434363; + } + } + } + } + } + } + double var53; + if (input[4] < 51.153934) { + if (input[6] < 0.07962002) { + if (input[1] < 521.543) { + if (input[2] < 0.25271404) { + if (input[3] < 17.0) { + if (input[1] < 499.95114) { + var53 = -0.00060132577; + } else { + var53 = -0.11809138; + } + } else { + if (input[2] < 0.19285977) { + var53 = 0.13340412; + } else { + var53 = 0.015442035; + } + } + } else { + if (input[1] < 489.80347) { + if (input[1] < 344.88092) { + var53 = 0.048061736; + } else { + var53 = -0.33885694; + } + } else { + var53 = 0.085096315; + } + } + } else { + if (input[3] < 12.0) { + if (input[0] < 528.44965) { + if (input[0] < 464.80853) { + var53 = 0.19555967; + } else { + var53 = -0.08234424; + } + } else { + if (input[0] < 659.5366) { + var53 = 0.17274615; + } else { + var53 = -0.047631066; + } + } + } else { + if (input[6] < 0.046959374) { + if (input[1] < 545.9964) { + var53 = -0.23215227; + } else { + var53 = -0.007445563; + } + } else { + if (input[4] < 39.41097) { + var53 = 0.06480188; + } else { + var53 = -0.011401061; + } + } + } + } + } else { + if (input[1] < 614.36035) { + if (input[1] < 147.89758) { + if (input[1] < 140.49933) { + if (input[7] < 0.0015539197) { + var53 = -0.114291996; + } else { + var53 = 0.07028282; + } + } else { + if (input[4] < 47.95029) { + var53 = 0.17835121; + } else { + var53 = -0.14825074; + } + } + } else { + if (input[1] < 177.04877) { + if (input[0] < 497.7732) { + var53 = -0.17191033; + } else { + var53 = 0.02153656; + } + } else { + if (input[7] < 0.002095897) { + var53 = 0.10816628; + } else { + var53 = 0.004488708; + } + } + } + } else { + if (input[5] < 23.707842) { + if (input[7] < 0.006159995) { + if (input[4] < 46.88934) { + var53 = 0.2435274; + } else { + var53 = 0.02069189; + } + } else { + var53 = -0.20039207; + } + } else { + if (input[0] < 429.60077) { + var53 = -0.08687386; + } else { + if (input[7] < 0.0034164374) { + var53 = 0.35930493; + } else { + var53 = 0.16419606; + } + } + } + } + } + } else { + if (input[0] < 431.5945) { + if (input[2] < 0.070949554) { + if (input[1] < 117.295654) { + if (input[0] < 409.8705) { + var53 = -0.08024382; + } else { + var53 = -0.35228; + } + } else { + var53 = 0.04235248; + } + } else { + if (input[1] < 269.17102) { + if (input[5] < 24.861015) { + if (input[5] < 20.922693) { + var53 = 0.18664567; + } else { + var53 = 0.42237598; + } + } else { + if (input[1] < 149.04504) { + var53 = -0.14642929; + } else { + var53 = 0.26655516; + } + } + } else { + if (input[3] < 8.0) { + if (input[7] < 0.000007795067) { + var53 = 0.14067057; + } else { + var53 = -0.24308653; + } + } else { + if (input[6] < 0.5004946) { + var53 = -0.16702808; + } else { + var53 = 0.19603467; + } + } + } + } + } else { + if (input[6] < 2.0720093) { + if (input[5] < 27.470732) { + if (input[5] < 25.396322) { + if (input[0] < 465.9689) { + var53 = 0.1092675; + } else { + var53 = -0.04373846; + } + } else { + if (input[2] < 0.2476418) { + var53 = -0.18717408; + } else { + var53 = -0.05713131; + } + } + } else { + if (input[0] < 498.7337) { + if (input[0] < 454.6105) { + var53 = 0.1140459; + } else { + var53 = -0.23634396; + } + } else { + if (input[7] < 0.0014543242) { + var53 = -0.02751712; + } else { + var53 = 0.26024345; + } + } + } + } else { + if (input[0] < 442.55496) { + if (input[1] < 148.36841) { + var53 = 0.067702256; + } else { + if (input[2] < 0.1030972) { + var53 = -0.45582563; + } else { + var53 = -0.1257038; + } + } + } else { + if (input[0] < 509.51126) { + if (input[0] < 478.12262) { + var53 = 0.022104146; + } else { + var53 = 0.2078447; + } + } else { + if (input[0] < 541.16064) { + var53 = -0.11835373; + } else { + var53 = 0.019900497; + } + } + } + } + } + } + double var54; + if (input[1] < 272.0462) { + if (input[1] < 231.0669) { + if (input[1] < 224.4739) { + if (input[1] < 207.02184) { + if (input[1] < 177.04877) { + if (input[1] < 176.52954) { + var54 = -0.0005382405; + } else { + var54 = -0.06853527; + } + } else { + if (input[1] < 196.52942) { + var54 = 0.043651022; + } else { + var54 = -0.016126735; + } + } + } else { + if (input[2] < 0.05979991) { + if (input[3] < 7.0) { + var54 = -0.3955578; + } else { + var54 = -0.098116785; + } + } else { + if (input[3] < 7.0) { + var54 = -0.1211909; + } else { + var54 = 0.043434657; + } + } + } + } else { + if (input[1] < 227.01422) { + if (input[2] < 0.20476818) { + if (input[4] < 31.580933) { + var54 = 0.15576303; + } else { + var54 = -0.0021762294; + } + } else { + if (input[5] < 21.863554) { + var54 = 0.5803619; + } else { + var54 = 0.18695994; + } + } + } else { + if (input[4] < 23.164886) { + if (input[0] < 574.6581) { + var54 = 0.018878654; + } else { + var54 = 0.1605214; + } + } else { + if (input[6] < 0.030572092) { + var54 = -0.16689238; + } else { + var54 = -0.00943515; + } + } + } + } + } else { + if (input[1] < 235.31873) { + if (input[5] < 20.834808) { + if (input[0] < 541.9823) { + if (input[0] < 497.7732) { + var54 = -0.14325587; + } else { + var54 = 0.08861173; + } + } else { + if (input[3] < 12.0) { + var54 = -0.21732096; + } else { + var54 = 0.18481348; + } + } + } else { + if (input[6] < 0.06442285) { + if (input[3] < 10.0) { + var54 = -0.030091057; + } else { + var54 = -0.16761276; + } + } else { + if (input[2] < 0.22287011) { + var54 = 0.16032894; + } else { + var54 = -0.17760333; + } + } + } + } else { + if (input[4] < 19.845797) { + if (input[4] < 16.744081) { + if (input[5] < 24.407122) { + var54 = 0.111272626; + } else { + var54 = -0.13288598; + } + } else { + if (input[2] < 0.04302311) { + var54 = 0.30905217; + } else { + var54 = 0.0702684; + } + } + } else { + if (input[1] < 250.13928) { + if (input[0] < 501.43326) { + var54 = -0.18271479; + } else { + var54 = 0.085266925; + } + } else { + if (input[1] < 255.84222) { + var54 = -0.083317034; + } else { + var54 = -0.012202504; + } + } + } + } + } + } else { + if (input[1] < 317.39774) { + if (input[1] < 311.82135) { + if (input[3] < 8.0) { + if (input[2] < 0.087249905) { + if (input[7] < 0.0049318275) { + var54 = 0.12160865; + } else { + var54 = -0.04538215; + } + } else { + if (input[6] < 0.033574995) { + var54 = -0.3738334; + } else { + var54 = -0.06340424; + } + } + } else { + if (input[1] < 292.086) { + if (input[0] < 559.4778) { + var54 = 0.010289919; + } else { + var54 = 0.13256545; + } + } else { + if (input[2] < 0.095577836) { + var54 = 0.17432736; + } else { + var54 = -0.0464135; + } + } + } + } else { + if (input[2] < 0.17006421) { + if (input[3] < 7.0) { + if (input[6] < 0.057765625) { + var54 = 0.1703411; + } else { + var54 = -0.09539571; + } + } else { + if (input[2] < 0.12573218) { + var54 = 0.05538188; + } else { + var54 = -0.058600374; + } + } + } else { + if (input[6] < 0.05809109) { + var54 = -0.121410534; + } else { + if (input[0] < 598.1789) { + var54 = 0.22763456; + } else { + var54 = 0.08285412; + } + } + } + } + } else { + if (input[1] < 342.5133) { + if (input[1] < 325.458) { + if (input[5] < 23.947874) { + if (input[7] < 0.0022020095) { + var54 = -0.14065568; + } else { + var54 = 0.061104223; + } + } else { + if (input[7] < 0.012117223) { + var54 = -0.02493887; + } else { + var54 = -0.3033007; + } + } + } else { + if (input[5] < 23.366688) { + if (input[2] < 0.11836624) { + var54 = -0.10975804; + } else { + var54 = 0.05136801; + } + } else { + if (input[7] < 0.009276815) { + var54 = -0.23057534; + } else { + var54 = 0.21686806; + } + } + } + } else { + if (input[1] < 347.76187) { + if (input[3] < 11.0) { + if (input[0] < 617.12683) { + var54 = -0.0064574443; + } else { + var54 = 0.083868265; + } + } else { + if (input[5] < 20.706615) { + var54 = 0.2148492; + } else { + var54 = 0.077870466; + } + } + } else { + if (input[5] < 15.865071) { + if (input[7] < 0.0027962627) { + var54 = -0.05957026; + } else { + var54 = 0.19604278; + } + } else { + if (input[5] < 27.997742) { + var54 = -0.00733836; + } else { + var54 = 0.043138735; + } + } + } + } + } + } + double var55; + if (input[6] < 0.03715515) { + if (input[2] < 0.087249905) { + if (input[4] < 34.26512) { + if (input[3] < 10.0) { + if (input[6] < 0.034337986) { + if (input[2] < 0.07385218) { + var55 = -0.000075465985; + } else { + var55 = -0.028194694; + } + } else { + if (input[3] < 7.0) { + var55 = -0.0047130035; + } else { + var55 = 0.16735846; + } + } + } else { + if (input[7] < 0.004189696) { + if (input[4] < 30.056957) { + var55 = 0.4583337; + } else { + var55 = 0.011325922; + } + } else { + if (input[2] < 0.04563713) { + var55 = 0.15687506; + } else { + var55 = 0.013474517; + } + } + } + } else { + if (input[2] < 0.08508021) { + if (input[3] < 6.0) { + if (input[6] < 0.020986198) { + var55 = 0.3063501; + } else { + var55 = 0.028049964; + } + } else { + if (input[1] < 171.21246) { + var55 = -0.12916419; + } else { + var55 = 0.05439392; + } + } + } else { + if (input[7] < 0.002095897) { + var55 = -0.15403707; + } else { + if (input[6] < 0.028862298) { + var55 = -0.14905064; + } else { + var55 = 0.51388377; + } + } + } + } + } else { + if (input[4] < 18.276783) { + if (input[1] < 117.95654) { + if (input[6] < 0.036780566) { + var55 = 0.101599894; + } else { + var55 = -0.2679785; + } + } else { + if (input[1] < 140.66498) { + var55 = 0.3195928; + } else { + if (input[1] < 197.2326) { + var55 = -0.041135866; + } else { + var55 = 0.17362323; + } + } + } + } else { + if (input[0] < 508.57187) { + if (input[4] < 29.357256) { + if (input[1] < 138.08691) { + var55 = 0.042141315; + } else { + var55 = -0.17575184; + } + } else { + if (input[7] < 0.0033882342) { + var55 = -0.13680409; + } else { + var55 = 0.24983206; + } + } + } else { + if (input[3] < 7.0) { + if (input[2] < 0.089429066) { + var55 = -0.061473317; + } else { + var55 = 0.060626958; + } + } else { + if (input[3] < 9.0) { + var55 = -0.08579604; + } else { + var55 = -0.014219384; + } + } + } + } + } + } else { + if (input[4] < 20.996748) { + if (input[2] < 0.10368276) { + if (input[2] < 0.09225285) { + if (input[0] < 406.91656) { + if (input[0] < 394.5867) { + var55 = 0.20926364; + } else { + var55 = -0.22609594; + } + } else { + if (input[4] < 18.55459) { + var55 = 0.1646469; + } else { + var55 = 0.04552911; + } + } + } else { + if (input[7] < 0.008989412) { + if (input[7] < 0.0071264803) { + var55 = -0.0009582681; + } else { + var55 = -0.22755785; + } + } else { + if (input[1] < 115.84448) { + var55 = -0.14382853; + } else { + var55 = 0.13095245; + } + } + } + } else { + if (input[2] < 0.12500748) { + if (input[1] < 114.94299) { + var55 = -0.18857917; + } else { + if (input[6] < 0.04734587) { + var55 = 0.18219292; + } else { + var55 = 0.011840121; + } + } + } else { + if (input[1] < 231.0669) { + var55 = -0.28974867; + } else { + if (input[2] < 0.13520741) { + var55 = 0.18093789; + } else { + var55 = -0.1341812; + } + } + } + } + } else { + if (input[7] < 0.009994577) { + if (input[4] < 27.981726) { + if (input[6] < 0.051774185) { + if (input[0] < 465.9689) { + var55 = -0.03364079; + } else { + var55 = 0.019660054; + } + } else { + if (input[0] < 450.31787) { + var55 = 0.026075369; + } else { + var55 = 0.09621126; + } + } + } else { + if (input[0] < 497.7732) { + if (input[6] < 0.05877689) { + var55 = -0.07845287; + } else { + var55 = 0.0041813925; + } + } else { + if (input[1] < 121.57103) { + var55 = -0.027540857; + } else { + var55 = 0.006961866; + } + } + } + } else { + if (input[0] < 569.34753) { + if (input[6] < 0.050438497) { + if (input[4] < 28.460495) { + var55 = -0.08726996; + } else { + var55 = -0.3611505; + } + } else { + if (input[0] < 562.22656) { + var55 = -0.0041547795; + } else { + var55 = -0.413257; + } + } + } else { + if (input[4] < 23.609772) { + if (input[1] < 171.9599) { + var55 = -0.3014641; + } else { + var55 = 0.0049626944; + } + } else { + if (input[6] < 0.039715424) { + var55 = 0.23509906; + } else { + var55 = 0.03431683; + } + } + } + } + } + } + double var56; + if (input[4] < 39.150074) { + if (input[6] < 0.064966485) { + if (input[1] < 367.2591) { + if (input[1] < 350.59753) { + if (input[2] < 0.1772592) { + if (input[3] < 10.0) { + var56 = -0.0009506953; + } else { + var56 = 0.019851552; + } + } else { + if (input[7] < 0.002768994) { + var56 = 0.19479214; + } else { + var56 = -0.12308368; + } + } + } else { + if (input[0] < 625.711) { + if (input[0] < 610.1273) { + var56 = -0.06494021; + } else { + var56 = -0.28378513; + } + } else { + if (input[5] < 18.06236) { + var56 = -0.32505378; + } else { + var56 = 0.08633977; + } + } + } + } else { + if (input[0] < 465.9689) { + if (input[4] < 30.161802) { + if (input[2] < 0.16156626) { + var56 = -0.07962051; + } else { + var56 = 0.17017524; + } + } else { + if (input[2] < 0.112553775) { + var56 = 0.17389663; + } else { + var56 = -0.35631642; + } + } + } else { + if (input[4] < 34.687817) { + if (input[6] < 0.040101185) { + var56 = 0.00888413; + } else { + var56 = 0.08537979; + } + } else { + if (input[2] < 0.13911271) { + var56 = -0.14440717; + } else { + var56 = 0.008514022; + } + } + } + } + } else { + if (input[7] < 0.0020210762) { + if (input[1] < 196.52942) { + if (input[3] < 9.0) { + if (input[1] < 137.21216) { + var56 = -0.00919105; + } else { + var56 = -0.15066904; + } + } else { + if (input[6] < 0.071077615) { + var56 = 0.3798277; + } else { + var56 = -0.010134578; + } + } + } else { + if (input[3] < 6.0) { + if (input[6] < 0.0719236) { + var56 = -0.30123335; + } else { + var56 = 0.23084573; + } + } else { + if (input[2] < 0.21310979) { + var56 = 0.3279021; + } else { + var56 = -0.1435656; + } + } + } + } else { + if (input[1] < 147.89758) { + if (input[7] < 0.0020605393) { + if (input[0] < 457.22827) { + var56 = 0.21038875; + } else { + var56 = 0.61888266; + } + } else { + if (input[0] < 455.97122) { + var56 = 0.03781644; + } else { + var56 = 0.13452975; + } + } + } else { + if (input[1] < 174.1648) { + if (input[5] < 30.39442) { + var56 = -0.10040944; + } else { + var56 = 0.23871154; + } + } else { + if (input[7] < 0.0023011367) { + var56 = -0.07821562; + } else { + var56 = 0.041750636; + } + } + } + } + } + } else { + if (input[3] < 6.0) { + if (input[4] < 46.88934) { + if (input[0] < 508.57187) { + if (input[6] < 0.087597266) { + if (input[7] < 0.0015539197) { + var56 = 0.13555655; + } else { + var56 = -0.17413479; + } + } else { + if (input[2] < 0.23170115) { + var56 = 0.044357963; + } else { + var56 = 0.33099288; + } + } + } else { + if (input[5] < 25.88462) { + if (input[5] < 24.9099) { + var56 = 0.2313069; + } else { + var56 = 0.6314859; + } + } else { + if (input[2] < 0.13220453) { + var56 = -0.26513878; + } else { + var56 = 0.17600107; + } + } + } + } else { + if (input[5] < 18.220026) { + if (input[0] < 597.1503) { + if (input[2] < 0.098368645) { + var56 = 0.33849916; + } else { + var56 = 0.043030966; + } + } else { + if (input[5] < 14.199996) { + var56 = -0.2372338; + } else { + var56 = 0.019900516; + } + } + } else { + if (input[1] < 250.13928) { + if (input[5] < 22.283722) { + var56 = -0.18774195; + } else { + var56 = -0.012579184; + } + } else { + if (input[0] < 546.2918) { + var56 = 0.19093658; + } else { + var56 = -0.06883599; + } + } + } + } + } else { + if (input[3] < 34.0) { + if (input[7] < 0.009886153) { + if (input[6] < 0.066093825) { + if (input[0] < 594.0457) { + var56 = -0.10032577; + } else { + var56 = -0.00075978367; + } + } else { + if (input[3] < 8.0) { + var56 = -0.038233154; + } else { + var56 = 0.0029793982; + } + } + } else { + if (input[5] < 24.320927) { + var56 = -0.059160315; + } else { + var56 = -0.543167; + } + } + } else { + if (input[2] < 0.32127088) { + if (input[4] < 40.86154) { + if (input[7] < 0.013527424) { + var56 = -0.1889134; + } else { + var56 = 0.1701118; + } + } else { + if (input[7] < 0.0037865257) { + var56 = 0.09575502; + } else { + var56 = 0.24874264; + } + } + } else { + if (input[1] < 1217.6255) { + if (input[7] < 0.0020210762) { + var56 = -0.03700858; + } else { + var56 = 0.23729654; + } + } else { + if (input[6] < 0.07288235) { + var56 = -0.44613847; + } else { + var56 = -0.0688182; + } + } + } + } + } + } + double var57; + if (input[2] < 0.1785326) { + if (input[6] < 0.059464313) { + if (input[3] < 19.0) { + if (input[5] < 33.48466) { + if (input[4] < 25.647543) { + if (input[3] < 6.0) { + var57 = -0.006957592; + } else { + var57 = 0.01131418; + } + } else { + if (input[0] < 439.05417) { + var57 = -0.09564675; + } else { + var57 = -0.00476614; + } + } + } else { + if (input[1] < 139.97156) { + if (input[7] < 0.0037865257) { + var57 = -0.15206568; + } else { + var57 = 0.06636367; + } + } else { + if (input[1] < 143.43848) { + var57 = 0.29933697; + } else { + var57 = 0.07359289; + } + } + } + } else { + if (input[2] < 0.16260886) { + if (input[3] < 21.0) { + if (input[4] < 31.242579) { + var57 = 0.24393669; + } else { + var57 = -0.019022677; + } + } else { + if (input[4] < 24.066366) { + var57 = -0.046822023; + } else { + var57 = 0.263199; + } + } + } else { + if (input[6] < 0.046560727) { + if (input[0] < 577.4389) { + var57 = -0.602619; + } else { + var57 = 0.15482728; + } + } else { + if (input[4] < 35.420593) { + var57 = 0.19860098; + } else { + var57 = 0.0003150465; + } + } + } + } + } else { + if (input[3] < 7.0) { + if (input[0] < 648.74475) { + if (input[2] < 0.14234614) { + if (input[0] < 455.97122) { + var57 = -0.01506049; + } else { + var57 = 0.09289611; + } + } else { + if (input[7] < 0.0022020095) { + var57 = -0.06958421; + } else { + var57 = 0.018645158; + } + } + } else { + if (input[5] < 24.235641) { + if (input[0] < 672.7553) { + var57 = -0.39361012; + } else { + var57 = -0.027068404; + } + } else { + if (input[0] < 657.11444) { + var57 = -0.153288; + } else { + var57 = 0.17778574; + } + } + } + } else { + if (input[7] < 0.0042216145) { + if (input[0] < 423.21143) { + if (input[5] < 25.88462) { + var57 = 0.04728209; + } else { + var57 = -0.34072155; + } + } else { + if (input[4] < 31.694513) { + var57 = 0.14125018; + } else { + var57 = 0.051063996; + } + } + } else { + if (input[4] < 32.62736) { + if (input[0] < 454.6105) { + var57 = 0.004939084; + } else { + var57 = 0.19597155; + } + } else { + if (input[6] < 0.06134235) { + var57 = -0.008655317; + } else { + var57 = -0.18723194; + } + } + } + } + } + } else { + if (input[6] < 0.05843868) { + if (input[1] < 367.2591) { + if (input[4] < 32.741352) { + if (input[5] < 24.451618) { + var57 = 0.24263136; + } else { + var57 = -0.18743454; + } + } else { + if (input[0] < 501.43326) { + var57 = 0.05399028; + } else { + if (input[7] < 0.0030890324) { + var57 = -0.12291984; + } else { + var57 = -0.4691953; + } + } + } + } else { + if (input[4] < 39.656563) { + if (input[0] < 619.6026) { + if (input[2] < 0.17982149) { + var57 = -0.37890786; + } else { + var57 = 0.0063923155; + } + } else { + var57 = 0.288962; + } + } else { + if (input[0] < 613.5429) { + if (input[0] < 536.0595) { + var57 = 0.063882396; + } else { + var57 = -0.42557997; + } + } else { + if (input[6] < 0.05601607) { + var57 = -0.21392037; + } else { + var57 = 0.09463968; + } + } + } + } + } else { + if (input[7] < 0.000020908421) { + if (input[0] < 481.2571) { + if (input[2] < 0.28529787) { + if (input[3] < 10.0) { + var57 = 0.04529821; + } else { + var57 = 0.28151846; + } + } else { + if (input[6] < 2.5102012) { + var57 = 0.029623058; + } else { + var57 = -0.26409146; + } + } + } else { + if (input[3] < 22.0) { + if (input[0] < 578.47174) { + var57 = -0.12122632; + } else { + var57 = -0.3155718; + } + } else { + if (input[2] < 0.26561487) { + var57 = 0.22290263; + } else { + var57 = -0.03255359; + } + } + } + } else { + if (input[5] < 11.839297) { + var57 = 0.2958377; + } else { + if (input[4] < 1054.0984) { + if (input[4] < 29.256954) { + var57 = 0.18904744; + } else { + var57 = -0.006619727; + } + } else { + if (input[0] < 554.3122) { + var57 = -0.18632811; + } else { + var57 = 0.20895478; + } + } + } + } + } + } + double var58; + if (input[7] < 0.00733221) { + if (input[2] < 0.044810057) { + if (input[1] < 174.03363) { + if (input[7] < 0.007193277) { + if (input[1] < 173.5393) { + if (input[0] < 661.7976) { + var58 = 0.011661161; + } else { + var58 = -0.07441813; + } + } else { + if (input[7] < 0.0042216145) { + var58 = 0.016437208; + } else { + var58 = -0.21425167; + } + } + } else { + if (input[3] < 6.0) { + if (input[4] < 13.793873) { + var58 = -0.08167414; + } else { + var58 = 0.29919726; + } + } else { + if (input[0] < 526.7187) { + var58 = -0.23615389; + } else { + var58 = 0.05054667; + } + } + } + } else { + if (input[7] < 0.0064791786) { + if (input[7] < 0.0017720697) { + if (input[5] < 25.097332) { + var58 = -0.24653755; + } else { + var58 = 0.07564455; + } + } else { + if (input[1] < 202.09811) { + var58 = 0.14647964; + } else { + var58 = 0.055456612; + } + } + } else { + if (input[5] < 19.358892) { + if (input[4] < 18.961548) { + var58 = 0.053945806; + } else { + var58 = -0.4245018; + } + } else { + if (input[1] < 199.64316) { + var58 = -0.10085631; + } else { + var58 = 0.15156248; + } + } + } + } + } else { + if (input[6] < 0.01848785) { + if (input[5] < 25.88462) { + if (input[7] < 0.0037865257) { + if (input[3] < 6.0) { + var58 = 0.040840965; + } else { + var58 = -0.437137; + } + } else { + if (input[7] < 0.0041255937) { + var58 = 0.22527511; + } else { + var58 = -0.1763503; + } + } + } else { + if (input[7] < 0.0041255937) { + if (input[4] < 28.26695) { + var58 = -0.23801313; + } else { + var58 = -0.041071355; + } + } else { + if (input[2] < 0.051182747) { + var58 = 0.37690353; + } else { + var58 = -0.07134008; + } + } + } + } else { + if (input[4] < 16.2539) { + if (input[0] < 477.06348) { + var58 = 0.046711944; + } else { + var58 = 0.41184887; + } + } else { + if (input[0] < 437.31543) { + if (input[3] < 12.0) { + var58 = -0.025674894; + } else { + var58 = 0.1552701; + } + } else { + if (input[6] < 0.030154696) { + var58 = -0.010498276; + } else { + var58 = 0.0042309766; + } + } + } + } + } + } else { + if (input[5] < 22.210117) { + if (input[5] < 20.964203) { + if (input[4] < 38.68964) { + if (input[5] < 20.02947) { + if (input[0] < 433.54276) { + var58 = 0.09358779; + } else { + var58 = -0.00038702157; + } + } else { + if (input[3] < 16.0) { + var58 = -0.03036916; + } else { + var58 = -0.41885132; + } + } + } else { + if (input[0] < 512.96185) { + var58 = 0.02687818; + } else { + var58 = 0.44855133; + } + } + } else { + if (input[7] < 0.0075382576) { + if (input[1] < 196.73734) { + if (input[3] < 8.0) { + var58 = 0.13736364; + } else { + var58 = -0.18048938; + } + } else { + var58 = 0.33525538; + } + } else { + if (input[6] < 0.071077615) { + if (input[4] < 32.860813) { + var58 = 0.028725069; + } else { + var58 = -0.17857426; + } + } else { + var58 = 0.3062535; + } + } + } + } else { + if (input[7] < 0.008892193) { + if (input[1] < 572.2172) { + if (input[3] < 7.0) { + if (input[5] < 23.175718) { + var58 = -0.12389957; + } else { + var58 = -0.00059796846; + } + } else { + if (input[4] < 17.400011) { + var58 = 0.10152545; + } else { + var58 = -0.09932333; + } + } + } else { + if (input[6] < 0.04246912) { + if (input[7] < 0.008375866) { + var58 = 0.051694345; + } else { + var58 = -0.44939712; + } + } else { + if (input[6] < 0.05877689) { + var58 = 0.2537163; + } else { + var58 = 0.03694736; + } + } + } + } else { + if (input[6] < 0.020986198) { + if (input[2] < 0.04971838) { + if (input[4] < 17.855886) { + var58 = -0.02109587; + } else { + var58 = 0.05643545; + } + } else { + if (input[0] < 619.6026) { + var58 = -0.06458196; + } else { + var58 = -0.31984562; + } + } + } else { + if (input[7] < 0.05417835) { + if (input[2] < 0.04971838) { + var58 = 0.08860883; + } else { + var58 = 0.00035704635; + } + } else { + if (input[2] < 0.06679523) { + var58 = -0.24741888; + } else { + var58 = 0.14954735; + } + } + } + } + } + } + double var59; + if (input[4] < 47.95029) { + if (input[6] < 0.07962002) { + if (input[0] < 522.50836) { + if (input[4] < 42.829258) { + if (input[4] < 3.4118037) { + if (input[0] < 427.4725) { + var59 = 0.23046999; + } else { + var59 = 0.028767861; + } + } else { + if (input[7] < 0.004288183) { + var59 = 0.0051616104; + } else { + var59 = -0.009156127; + } + } + } else { + if (input[0] < 505.03424) { + if (input[0] < 464.80853) { + var59 = -0.00025173026; + } else { + var59 = -0.2712902; + } + } else { + if (input[2] < 0.23170115) { + var59 = -0.10307731; + } else { + var59 = 0.20361973; + } + } + } + } else { + if (input[1] < 670.473) { + if (input[3] < 21.0) { + if (input[2] < 0.25271404) { + var59 = 0.0022162178; + } else { + var59 = -0.21388116; + } + } else { + if (input[1] < 580.8021) { + var59 = 0.21031055; + } else { + var59 = 0.03363816; + } + } + } else { + if (input[7] < 0.0039070696) { + if (input[0] < 632.9928) { + var59 = 0.3682959; + } else { + var59 = -0.032929122; + } + } else { + if (input[3] < 13.0) { + var59 = 0.2303059; + } else { + var59 = 0.019239232; + } + } + } + } + } else { + if (input[5] < 25.146212) { + if (input[3] < 11.0) { + if (input[1] < 147.89758) { + if (input[2] < 0.20118733) { + var59 = -0.0930161; + } else { + var59 = 0.10322026; + } + } else { + if (input[7] < 0.002768994) { + var59 = -0.0240917; + } else { + var59 = -0.23660089; + } + } + } else { + if (input[5] < 19.066538) { + if (input[1] < 345.4552) { + var59 = 0.35948032; + } else { + var59 = 0.07349782; + } + } else { + if (input[1] < 311.82135) { + var59 = -0.057931103; + } else { + var59 = 0.15752232; + } + } + } + } else { + if (input[0] < 415.7414) { + if (input[1] < 140.85828) { + if (input[6] < 0.08433238) { + var59 = 0.048001073; + } else { + var59 = -0.46345004; + } + } else { + if (input[7] < 0.0019291723) { + var59 = -0.1739253; + } else { + var59 = 0.20878156; + } + } + } else { + if (input[4] < 40.86154) { + if (input[2] < 0.24309075) { + var59 = 0.24116863; + } else { + var59 = -0.09870764; + } + } else { + if (input[0] < 451.8147) { + var59 = -0.05575047; + } else { + var59 = 0.099485934; + } + } + } + } + } + } else { + if (input[2] < 0.19949937) { + if (input[2] < 0.17129159) { + if (input[5] < 23.10101) { + if (input[2] < 0.16901255) { + if (input[5] < 22.319084) { + var59 = 0.014208238; + } else { + var59 = 0.14406563; + } + } else { + if (input[5] < 22.098291) { + var59 = 0.09833055; + } else { + var59 = -0.4539296; + } + } + } else { + if (input[0] < 672.7553) { + if (input[0] < 591.9396) { + var59 = -0.017944718; + } else { + var59 = -0.17161791; + } + } else { + var59 = 0.27155423; + } + } + } else { + if (input[7] < 0.0023617237) { + if (input[2] < 0.1785326) { + if (input[6] < 0.057765625) { + var59 = -0.14295126; + } else { + var59 = 0.26315367; + } + } else { + if (input[1] < 235.31873) { + var59 = -0.06838426; + } else { + var59 = 0.11053721; + } + } + } else { + if (input[0] < 628.1736) { + if (input[5] < 19.57885) { + var59 = -0.007546327; + } else { + var59 = -0.25376755; + } + } else { + if (input[6] < 0.06800464) { + var59 = 0.19551967; + } else { + var59 = -0.13514596; + } + } + } + } + } else { + if (input[3] < 16.0) { + if (input[1] < 814.16046) { + if (input[7] < 0.0022020095) { + if (input[6] < 0.07962002) { + var59 = -0.11743393; + } else { + var59 = -0.023948677; + } + } else { + if (input[2] < 0.28529787) { + var59 = -0.07403936; + } else { + var59 = -0.22775914; + } + } + } else { + if (input[0] < 532.6803) { + var59 = 0.3384196; + } else { + var59 = -0.02272224; + } + } + } else { + if (input[1] < 344.88092) { + if (input[0] < 486.46512) { + if (input[1] < 147.89758) { + var59 = 0.17887583; + } else { + var59 = -0.14023209; + } + } else { + if (input[3] < 17.0) { + var59 = -0.06634262; + } else { + var59 = 0.38475832; + } + } + } else { + if (input[0] < 469.4581) { + if (input[5] < 28.108055) { + var59 = 0.19800052; + } else { + var59 = -0.112216994; + } + } else { + if (input[5] < 18.139484) { + var59 = 0.26270133; + } else { + var59 = -0.019992163; + } + } + } + } + } + } + double var60; + if (input[4] < 23.075237) { + if (input[6] < 0.049368083) { + if (input[3] < 6.0) { + if (input[2] < 0.10128081) { + if (input[0] < 423.21143) { + if (input[4] < 3.4118037) { + var60 = 0.20161402; + } else { + var60 = -0.06317397; + } + } else { + if (input[2] < 0.07034141) { + var60 = 0.00043536662; + } else { + var60 = -0.026084473; + } + } + } else { + if (input[6] < 0.042284492) { + if (input[1] < 317.39774) { + var60 = 0.29684678; + } else { + var60 = -0.2589822; + } + } else { + if (input[7] < 0.006589555) { + var60 = -0.028989239; + } else { + var60 = 0.12761697; + } + } + } + } else { + if (input[7] < 0.00513642) { + if (input[3] < 7.0) { + if (input[1] < 118.724884) { + var60 = -0.008131698; + } else { + var60 = 0.09081837; + } + } else { + if (input[4] < 22.134548) { + var60 = 0.22279334; + } else { + var60 = 0.1076928; + } + } + } else { + if (input[1] < 118.724884) { + if (input[1] < 117.759186) { + var60 = 0.0035830557; + } else { + var60 = -0.06744215; + } + } else { + if (input[1] < 139.97156) { + var60 = 0.1269952; + } else { + var60 = 0.00563506; + } + } + } + } + } else { + if (input[5] < 17.826921) { + if (input[2] < 0.104726076) { + var60 = 0.19689903; + } else { + if (input[1] < 118.04906) { + var60 = -0.42893848; + } else { + var60 = 0.033296816; + } + } + } else { + if (input[1] < 351.04474) { + if (input[7] < 0.0027393189) { + if (input[0] < 412.7322) { + var60 = 0.108781405; + } else { + var60 = 0.45362598; + } + } else { + if (input[7] < 0.0057593356) { + var60 = 0.069172956; + } else { + var60 = 0.24346973; + } + } + } else { + var60 = -0.1428434; + } + } + } + } else { + if (input[7] < 0.006533345) { + if (input[1] < 272.0462) { + if (input[1] < 196.52942) { + if (input[1] < 168.27454) { + if (input[1] < 150.89111) { + var60 = -0.000051760602; + } else { + var60 = -0.048857234; + } + } else { + if (input[1] < 171.00562) { + var60 = 0.0983573; + } else { + var60 = 0.005529295; + } + } + } else { + if (input[6] < 0.035672467) { + if (input[1] < 207.02184) { + var60 = 0.006008893; + } else { + var60 = -0.08735394; + } + } else { + if (input[1] < 196.92773) { + var60 = -0.09499909; + } else { + var60 = 0.0012332996; + } + } + } + } else { + if (input[2] < 0.04118097) { + if (input[0] < 619.6026) { + if (input[0] < 596.1116) { + var60 = 0.19818366; + } else { + var60 = -0.24696; + } + } else { + var60 = 0.3479209; + } + } else { + if (input[2] < 0.050450563) { + if (input[5] < 19.125778) { + var60 = 0.22960009; + } else { + var60 = -0.19208896; + } + } else { + if (input[2] < 0.089429066) { + var60 = 0.05385888; + } else { + var60 = 0.0026353595; + } + } + } + } + } else { + if (input[0] < 570.25055) { + if (input[6] < 0.044864837) { + if (input[0] < 465.9689) { + if (input[1] < 235.31873) { + var60 = -0.23951855; + } else { + var60 = -0.4945881; + } + } else { + if (input[3] < 7.0) { + var60 = 0.025941964; + } else { + var60 = -0.12839955; + } + } + } else { + if (input[4] < 29.154097) { + if (input[1] < 121.57103) { + var60 = -0.07415261; + } else { + var60 = 0.05359157; + } + } else { + if (input[6] < 0.05843868) { + var60 = -0.109614514; + } else { + var60 = -0.011636658; + } + } + } + } else { + if (input[5] < 24.673338) { + if (input[7] < 0.008631577) { + if (input[3] < 9.0) { + var60 = 0.08413817; + } else { + var60 = -0.0011824653; + } + } else { + if (input[1] < 1184.6289) { + var60 = -0.032760233; + } else { + var60 = 0.24764127; + } + } + } else { + if (input[5] < 24.812592) { + if (input[0] < 604.5986) { + var60 = -0.04903309; + } else { + var60 = -0.56691486; + } + } else { + if (input[7] < 0.008293989) { + var60 = -0.07665849; + } else { + var60 = 0.060034823; + } + } + } + } + } + } + double var61; + if (input[0] < 403.76456) { + if (input[4] < 28.652704) { + if (input[4] < 27.981726) { + if (input[6] < 0.01815154) { + if (input[7] < 0.017095413) { + var61 = 0.38680255; + } else { + if (input[7] < 0.065982014) { + var61 = -0.08103744; + } else { + var61 = 0.25844145; + } + } + } else { + if (input[1] < 147.89758) { + if (input[6] < 0.05877689) { + var61 = -0.0027282839; + } else { + var61 = 0.17854656; + } + } else { + if (input[5] < 27.11507) { + var61 = 0.0353249; + } else { + var61 = -0.40886113; + } + } + } + } else { + if (input[5] < 22.68546) { + var61 = -0.040897865; + } else { + var61 = -0.43736622; + } + } + } else { + if (input[5] < 18.06236) { + var61 = -0.19752158; + } else { + if (input[7] < 0.009081948) { + if (input[7] < 0.0029307685) { + if (input[7] < 0.0027116358) { + var61 = 0.191721; + } else { + var61 = -0.21646117; + } + } else { + if (input[6] < 0.07021791) { + var61 = 0.06871823; + } else { + var61 = 0.33013502; + } + } + } else { + var61 = -0.09387184; + } + } + } + } else { + if (input[4] < 35.11969) { + if (input[7] < 0.0018289244) { + if (input[5] < 19.301468) { + if (input[1] < 117.759186) { + if (input[4] < 33.613834) { + var61 = -0.10411559; + } else { + var61 = 0.20852627; + } + } else { + if (input[1] < 151.1117) { + var61 = -0.32664448; + } else { + var61 = 0.024964815; + } + } + } else { + if (input[1] < 143.43848) { + if (input[1] < 138.27072) { + var61 = 0.116096266; + } else { + var61 = -0.18642832; + } + } else { + if (input[1] < 199.64316) { + var61 = 0.33625114; + } else { + var61 = 0.0062427456; + } + } + } + } else { + if (input[1] < 367.2591) { + if (input[1] < 350.59753) { + if (input[6] < 0.046756607) { + var61 = -0.001763921; + } else { + var61 = 0.009660959; + } + } else { + if (input[4] < 34.687817) { + var61 = -0.045735966; + } else { + var61 = -0.3448063; + } + } + } else { + if (input[1] < 370.7329) { + if (input[7] < 0.012956531) { + var61 = 0.11831471; + } else { + var61 = -0.14846057; + } + } else { + if (input[4] < 21.723177) { + var61 = 0.09748429; + } else { + var61 = 0.0072233616; + } + } + } + } + } else { + if (input[0] < 480.22372) { + if (input[6] < 0.087597266) { + if (input[4] < 39.656563) { + if (input[2] < 0.20118733) { + var61 = -0.08383811; + } else { + var61 = 0.048263744; + } + } else { + if (input[2] < 0.2088641) { + var61 = -0.042115368; + } else { + var61 = -0.2164323; + } + } + } else { + if (input[0] < 476.04532) { + if (input[5] < 23.403553) { + var61 = 0.08862914; + } else { + var61 = -0.005705222; + } + } else { + if (input[0] < 479.1913) { + var61 = -0.19551663; + } else { + var61 = 0.006567487; + } + } + } + } else { + if (input[6] < 0.059464313) { + if (input[0] < 592.9258) { + if (input[6] < 0.033188343) { + var61 = 0.072237544; + } else { + var61 = -0.07593114; + } + } else { + if (input[0] < 599.1849) { + var61 = 0.109703444; + } else { + var61 = -0.003421008; + } + } + } else { + if (input[4] < 45.20362) { + if (input[2] < 0.14155722) { + var61 = 0.39130902; + } else { + var61 = 0.020941144; + } + } else { + if (input[5] < 30.710585) { + var61 = -0.012106865; + } else { + var61 = 0.14978327; + } + } + } + } + } + } + double var62; + if (input[1] < 79.678955) { + if (input[1] < 77.55432) { + if (input[1] < 76.44141) { + if (input[7] < 0.024472637) { + if (input[7] < 0.020403687) { + if (input[7] < 0.0046316604) { + var62 = -0.013471997; + } else { + var62 = 0.007751962; + } + } else { + if (input[5] < 22.462898) { + var62 = -0.019104954; + } else { + var62 = 0.16241476; + } + } + } else { + if (input[4] < 7.9895897) { + if (input[6] < 0.0067773927) { + var62 = -0.036812276; + } else { + var62 = 0.06272035; + } + } else { + if (input[6] < 0.009366361) { + var62 = -0.1329204; + } else { + var62 = -0.037889574; + } + } + } + } else { + if (input[4] < 25.02411) { + if (input[0] < 549.8694) { + if (input[2] < 0.07888465) { + var62 = -0.10297218; + } else { + var62 = 0.40387675; + } + } else { + if (input[2] < 0.080014125) { + var62 = 0.43771848; + } else { + var62 = -0.0914926; + } + } + } else { + if (input[5] < 15.711394) { + if (input[4] < 29.256954) { + var62 = -0.051910117; + } else { + var62 = 0.39795762; + } + } else { + if (input[0] < 673.89215) { + var62 = -0.11717718; + } else { + var62 = 0.22528256; + } + } + } + } + } else { + if (input[2] < 0.08340263) { + if (input[1] < 78.87378) { + if (input[3] < 6.0) { + if (input[7] < 0.0050104572) { + var62 = -0.1092003; + } else { + var62 = 0.2632397; + } + } else { + if (input[5] < 29.440952) { + var62 = -0.024653608; + } else { + var62 = 0.38215998; + } + } + } else { + if (input[4] < 14.482901) { + if (input[6] < 0.017456274) { + var62 = -0.0788535; + } else { + var62 = 0.2473345; + } + } else { + if (input[0] < 658.2878) { + var62 = -0.1507811; + } else { + var62 = 0.07836404; + } + } + } + } else { + if (input[3] < 6.0) { + if (input[0] < 546.2918) { + if (input[4] < 24.686386) { + var62 = 0.07872067; + } else { + var62 = -0.22759135; + } + } else { + if (input[5] < 23.514431) { + var62 = 0.30295083; + } else { + var62 = -0.21387623; + } + } + } else { + if (input[2] < 0.089429066) { + if (input[7] < 0.0024513172) { + var62 = -0.00989905; + } else { + var62 = -0.24215007; + } + } else { + if (input[2] < 0.13830733) { + var62 = -0.06514634; + } else { + var62 = -0.21948467; + } + } + } + } + } + } else { + if (input[1] < 117.295654) { + if (input[3] < 6.0) { + if (input[0] < 528.44965) { + if (input[1] < 115.47824) { + if (input[7] < 0.010345605) { + var62 = -0.00856177; + } else { + var62 = -0.077031285; + } + } else { + if (input[0] < 476.04532) { + var62 = -0.18386573; + } else { + var62 = 0.0021711574; + } + } + } else { + if (input[2] < 0.13220453) { + if (input[5] < 33.48466) { + var62 = 0.034142405; + } else { + var62 = -0.31262457; + } + } else { + if (input[4] < 35.71706) { + var62 = -0.04199385; + } else { + var62 = -0.2580354; + } + } + } + } else { + if (input[1] < 96.294495) { + if (input[0] < 454.6105) { + if (input[4] < 26.84426) { + var62 = 0.244401; + } else { + var62 = 0.60223997; + } + } else { + if (input[5] < 24.108562) { + var62 = 0.041383397; + } else { + var62 = -0.15132762; + } + } + } else { + if (input[3] < 7.0) { + if (input[6] < 0.04792555) { + var62 = 0.21848759; + } else { + var62 = 0.37876704; + } + } else { + if (input[7] < 0.0055812276) { + var62 = 0.17508635; + } else { + var62 = -0.054398343; + } + } + } + } + } else { + if (input[4] < 12.506829) { + if (input[6] < 0.022677388) { + if (input[0] < 435.46625) { + if (input[0] < 409.8705) { + var62 = -0.08803249; + } else { + var62 = 0.17119128; + } + } else { + if (input[5] < 22.871712) { + var62 = 0.036908053; + } else { + var62 = -0.021793377; + } + } + } else { + if (input[7] < 0.065982014) { + if (input[6] < 0.024297172) { + var62 = 0.10663754; + } else { + var62 = 0.257148; + } + } else { + var62 = -0.20365453; + } + } + } else { + if (input[1] < 141.24573) { + if (input[5] < 29.08108) { + if (input[1] < 139.97156) { + var62 = -0.008689757; + } else { + var62 = -0.05202953; + } + } else { + if (input[7] < 0.004288183) { + var62 = 0.09214795; + } else { + var62 = 0.0024334283; + } + } + } else { + if (input[1] < 147.89758) { + if (input[1] < 143.84497) { + var62 = 0.013694882; + } else { + var62 = 0.109882005; + } + } else { + if (input[4] < 12.786485) { + var62 = -0.14396876; + } else { + var62 = -0.0006513435; + } + } + } + } + } + } + double var63; + if (input[6] < 0.028205514) { + if (input[2] < 0.060454607) { + if (input[6] < 0.022677388) { + if (input[2] < 0.04971838) { + if (input[1] < 224.4739) { + if (input[1] < 202.09811) { + var63 = -0.0014923213; + } else { + var63 = -0.16035827; + } + } else { + if (input[2] < 0.04891324) { + var63 = 0.041511577; + } else { + var63 = -0.18607253; + } + } + } else { + if (input[6] < 0.020067545) { + if (input[4] < 15.318433) { + var63 = 0.08539418; + } else { + var63 = -0.16704538; + } + } else { + if (input[6] < 0.022136807) { + var63 = -0.03194858; + } else { + var63 = 0.0325746; + } + } + } + } else { + if (input[7] < 0.086682595) { + if (input[5] < 14.48199) { + if (input[1] < 78.383545) { + var63 = 0.24805492; + } else { + var63 = -0.020288408; + } + } else { + if (input[1] < 53.395752) { + var63 = -0.023112448; + } else { + var63 = 0.031271502; + } + } + } else { + if (input[1] < 137.21216) { + var63 = -0.29884002; + } else { + var63 = -0.017147522; + } + } + } + } else { + if (input[7] < 0.002235593) { + if (input[1] < 173.7774) { + if (input[3] < 6.0) { + if (input[4] < 33.99941) { + var63 = 0.38380295; + } else { + var63 = -0.058723476; + } + } else { + if (input[2] < 0.06679523) { + var63 = -0.30944893; + } else { + var63 = 0.051779795; + } + } + } else { + if (input[4] < 42.829258) { + if (input[4] < 34.687817) { + var63 = 0.06602002; + } else { + var63 = 0.41756663; + } + } else { + var63 = -0.021287564; + } + } + } else { + if (input[4] < 16.582067) { + if (input[7] < 0.0126157) { + if (input[0] < 562.22656) { + var63 = -0.084336385; + } else { + var63 = 0.16931722; + } + } else { + if (input[1] < 118.04906) { + var63 = -0.043254342; + } else { + var63 = 0.105109215; + } + } + } else { + if (input[1] < 53.395752) { + if (input[5] < 23.63265) { + var63 = 0.25750518; + } else { + var63 = -0.07959588; + } + } else { + if (input[0] < 596.1116) { + var63 = -0.07755081; + } else { + var63 = -0.019206952; + } + } + } + } + } + } else { + if (input[2] < 0.07778871) { + if (input[3] < 6.0) { + if (input[7] < 0.005262675) { + if (input[4] < 19.729412) { + if (input[7] < 0.004288183) { + var63 = -0.007952329; + } else { + var63 = -0.1840242; + } + } else { + if (input[5] < 24.029337) { + var63 = -0.03338135; + } else { + var63 = 0.027471215; + } + } + } else { + if (input[5] < 14.960444) { + if (input[0] < 442.55496) { + var63 = 0.25905818; + } else { + var63 = -0.22627814; + } + } else { + if (input[7] < 0.013135703) { + var63 = 0.050661713; + } else { + var63 = -0.03277894; + } + } + } + } else { + if (input[1] < 255.84222) { + if (input[0] < 541.9823) { + if (input[7] < 0.015875712) { + var63 = -0.013815294; + } else { + var63 = 0.13684304; + } + } else { + if (input[0] < 545.38477) { + var63 = 0.32318902; + } else { + var63 = 0.06290428; + } + } + } else { + if (input[5] < 26.584965) { + if (input[3] < 7.0) { + var63 = 0.30045745; + } else { + var63 = 0.103951596; + } + } else { + if (input[0] < 534.41846) { + var63 = 0.090678014; + } else { + var63 = -0.16006204; + } + } + } + } + } else { + if (input[6] < 0.031790443) { + if (input[7] < 0.01122595) { + if (input[0] < 685.8291) { + if (input[5] < 21.40085) { + var63 = -0.017630352; + } else { + var63 = -0.092146255; + } + } else { + if (input[2] < 0.08508021) { + var63 = 0.32591745; + } else { + var63 = 0.012712534; + } + } + } else { + if (input[0] < 622.0128) { + if (input[0] < 429.60077) { + var63 = -0.0919678; + } else { + var63 = 0.1977927; + } + } else { + if (input[2] < 0.088344395) { + var63 = -0.44555387; + } else { + var63 = 0.17657822; + } + } + } + } else { + if (input[7] < 0.017428085) { + if (input[4] < 15.7178545) { + if (input[7] < 0.014142963) { + var63 = 0.22478439; + } else { + var63 = -0.0770227; + } + } else { + if (input[1] < 56.49115) { + var63 = -0.03223674; + } else { + var63 = 0.0018217574; + } + } + } else { + if (input[4] < 17.552475) { + if (input[4] < 16.422623) { + var63 = -0.078916475; + } else { + var63 = 0.27849734; + } + } else { + if (input[2] < 0.087803364) { + var63 = -0.2072477; + } else { + var63 = -0.053660486; + } + } + } + } + } + } + double var64; + if (input[4] < 3.4118037) { + if (input[0] < 579.40393) { + if (input[0] < 519.94336) { + if (input[0] < 499.65594) { + if (input[0] < 451.8147) { + if (input[6] < 0.0017816098) { + var64 = -0.07078048; + } else { + var64 = 0.19006024; + } + } else { + if (input[0] < 471.70917) { + var64 = -0.19090553; + } else { + var64 = 0.00394083; + } + } + } else { + if (input[0] < 505.03424) { + var64 = 0.38008675; + } else { + if (input[0] < 507.74713) { + var64 = -0.22355042; + } else { + var64 = 0.20237067; + } + } + } + } else { + if (input[0] < 525.8405) { + if (input[5] < 19.932076) { + var64 = -0.49389264; + } else { + var64 = -0.09200591; + } + } else { + if (input[0] < 530.9707) { + if (input[0] < 527.5794) { + var64 = 0.04248708; + } else { + var64 = 0.31654674; + } + } else { + if (input[5] < 20.215801) { + var64 = 0.041110598; + } else { + var64 = -0.13735199; + } + } + } + } + } else { + if (input[5] < 27.29118) { + if (input[5] < 22.871712) { + if (input[5] < 21.553902) { + if (input[5] < 19.932076) { + var64 = 0.22202937; + } else { + var64 = 0.07112801; + } + } else { + if (input[5] < 21.785055) { + var64 = -0.3784283; + } else { + var64 = 0.069375366; + } + } + } else { + if (input[1] < 53.395752) { + var64 = 0.34681472; + } else { + var64 = 0.088633366; + } + } + } else { + var64 = -0.15728635; + } + } + } else { + if (input[6] < 0.013503123) { + if (input[2] < 0.030371785) { + if (input[3] < 9.0) { + if (input[0] < 444.15787) { + if (input[5] < 24.362743) { + var64 = -0.10590963; + } else { + var64 = 0.010995456; + } + } else { + if (input[5] < 27.997742) { + var64 = 0.0023287216; + } else { + var64 = -0.05114167; + } + } + } else { + if (input[0] < 544.61206) { + if (input[4] < 13.053429) { + var64 = 0.22275275; + } else { + var64 = -0.18993574; + } + } else { + if (input[5] < 17.986216) { + var64 = 0.029552922; + } else { + var64 = 0.3200149; + } + } + } + } else { + if (input[0] < 582.26196) { + if (input[5] < 18.437906) { + if (input[0] < 469.4581) { + var64 = 0.09052708; + } else { + var64 = -0.22489105; + } + } else { + if (input[1] < 229.68715) { + var64 = -0.011435296; + } else { + var64 = 0.17898706; + } + } + } else { + if (input[1] < 311.82135) { + if (input[2] < 0.0316215) { + var64 = -0.18784812; + } else { + var64 = -0.0340976; + } + } else { + if (input[7] < 0.008989412) { + var64 = -0.020182883; + } else { + var64 = -0.71976185; + } + } + } + } + } else { + if (input[4] < 9.192085) { + if (input[0] < 487.4292) { + if (input[7] < 0.026389621) { + if (input[5] < 24.952822) { + var64 = -0.12788798; + } else { + var64 = 0.18287677; + } + } else { + if (input[2] < 0.032770157) { + var64 = 0.09056791; + } else { + var64 = 0.27521017; + } + } + } else { + if (input[0] < 505.03424) { + if (input[1] < 117.295654) { + var64 = -0.3095373; + } else { + var64 = -0.008580688; + } + } else { + if (input[0] < 519.08496) { + var64 = 0.17474696; + } else { + var64 = -0.04287262; + } + } + } + } else { + if (input[2] < 0.033970356) { + if (input[3] < 7.0) { + if (input[0] < 649.94415) { + var64 = 0.0066622; + } else { + var64 = 0.119476; + } + } else { + if (input[1] < 118.29285) { + var64 = 0.08171298; + } else { + var64 = 0.26669976; + } + } + } else { + if (input[6] < 0.016361425) { + if (input[1] < 227.30066) { + var64 = -0.07806671; + } else { + var64 = 0.04416492; + } + } else { + if (input[2] < 0.04118097) { + var64 = 0.04987487; + } else { + var64 = -0.00031266254; + } + } + } + } + } + } + double var65; + if (input[2] < 0.32127088) { + if (input[3] < 15.0) { + if (input[1] < 637.6124) { + if (input[4] < 43.929493) { + if (input[6] < 0.07648402) { + if (input[4] < 31.022459) { + var65 = 0.0016738808; + } else { + var65 = -0.0069212443; + } + } else { + if (input[2] < 0.17982149) { + var65 = 0.4419799; + } else { + var65 = 0.027989151; + } + } + } else { + if (input[5] < 20.617947) { + if (input[5] < 19.882984) { + var65 = -0.009383805; + } else { + var65 = 0.104881845; + } + } else { + if (input[5] < 20.922693) { + var65 = -0.2020852; + } else { + var65 = -0.023340806; + } + } + } + } else { + if (input[5] < 26.65595) { + if (input[5] < 25.396322) { + if (input[5] < 24.719372) { + var65 = 0.03862087; + } else { + var65 = 0.3085836; + } + } else { + if (input[7] < 0.0046316604) { + var65 = 0.016647507; + } else { + var65 = -0.34778377; + } + } + } else { + if (input[7] < 0.0036698799) { + if (input[0] < 477.06348) { + var65 = -0.15947014; + } else { + var65 = 0.15001893; + } + } else { + if (input[3] < 14.0) { + var65 = 0.28288284; + } else { + var65 = 0.1261649; + } + } + } + } + } else { + if (input[7] < 0.0047754645) { + if (input[6] < 2.5102012) { + if (input[1] < 199.64316) { + if (input[0] < 532.6803) { + var65 = 0.1037426; + } else { + var65 = -0.26225227; + } + } else { + if (input[4] < 41.570618) { + var65 = 0.122177266; + } else { + var65 = 0.037054464; + } + } + } else { + if (input[4] < 1054.0984) { + var65 = -0.42238832; + } else { + if (input[3] < 18.0) { + var65 = -0.1983656; + } else { + var65 = 0.1429193; + } + } + } + } else { + if (input[5] < 19.831963) { + if (input[2] < 0.15654445) { + var65 = 0.2780812; + } else { + if (input[6] < 0.053631432) { + var65 = -0.4058983; + } else { + var65 = 0.2354541; + } + } + } else { + if (input[7] < 0.028802285) { + if (input[5] < 31.63552) { + var65 = -0.018951198; + } else { + var65 = -0.30228832; + } + } else { + var65 = 0.24846812; + } + } + } + } + } else { + if (input[6] < 2.5102012) { + if (input[4] < 67.75224) { + if (input[3] < 17.0) { + if (input[1] < 145.6225) { + var65 = 0.20444447; + } else { + if (input[5] < 23.215124) { + var65 = 0.033835743; + } else { + var65 = -0.31159562; + } + } + } else { + if (input[1] < 1047.1123) { + if (input[3] < 22.0) { + var65 = 0.062030893; + } else { + var65 = 0.3338688; + } + } else { + if (input[0] < 484.40204) { + var65 = 0.08004348; + } else { + var65 = -0.22197154; + } + } + } + } else { + if (input[3] < 65.0) { + if (input[3] < 29.0) { + if (input[0] < 453.18805) { + var65 = -0.018072374; + } else { + var65 = -0.29624593; + } + } else { + if (input[1] < 1184.6289) { + var65 = 0.08807733; + } else { + var65 = -0.23507158; + } + } + } else { + if (input[5] < 24.27795) { + var65 = 0.26012945; + } else { + var65 = 0.035891652; + } + } + } + } else { + if (input[0] < 451.8147) { + if (input[0] < 423.21143) { + var65 = 0.05741104; + } else { + var65 = -0.2543678; + } + } else { + if (input[0] < 512.96185) { + if (input[5] < 24.320927) { + var65 = 0.40503904; + } else { + var65 = 0.1202626; + } + } else { + if (input[0] < 554.3122) { + if (input[3] < 9.0) { + var65 = -0.25367948; + } else { + var65 = -0.020421889; + } + } else { + if (input[0] < 655.90375) { + var65 = 0.082943484; + } else { + var65 = 0.34865135; + } + } + } + } + } + } + double var66; + if (input[1] < 191.00214) { + if (input[1] < 173.5393) { + if (input[1] < 171.9599) { + if (input[3] < 14.0) { + if (input[1] < 171.00562) { + if (input[1] < 168.27454) { + var66 = -0.0021088324; + } else { + var66 = 0.07418068; + } + } else { + if (input[6] < 0.029516635) { + var66 = -0.07283786; + } else { + var66 = 0.0040976233; + } + } + } else { + if (input[7] < 0.003726883) { + if (input[7] < 0.0027962627) { + var66 = 0.15979266; + } else { + var66 = -0.23619623; + } + } else { + var66 = 0.2848209; + } + } + } else { + if (input[5] < 17.90769) { + if (input[5] < 14.48199) { + if (input[5] < 13.509364) { + var66 = 0.22644709; + } else { + var66 = -0.17047973; + } + } else { + if (input[4] < 15.7178545) { + var66 = 0.07010182; + } else { + var66 = 0.41409966; + } + } + } else { + if (input[4] < 34.82185) { + if (input[4] < 26.937609) { + var66 = 0.05327929; + } else { + var66 = 0.30013624; + } + } else { + if (input[4] < 35.880825) { + var66 = -0.35127032; + } else { + var66 = 0.005041189; + } + } + } + } + } else { + if (input[7] < 0.0034446886) { + if (input[5] < 21.40085) { + if (input[7] < 0.0032761313) { + if (input[2] < 0.1407783) { + var66 = -0.03278018; + } else { + var66 = -0.14347945; + } + } else { + if (input[5] < 20.617947) { + var66 = 0.2613393; + } else { + var66 = -0.2180201; + } + } + } else { + if (input[0] < 440.8873) { + if (input[0] < 429.60077) { + var66 = -0.03469416; + } else { + var66 = -0.35999948; + } + } else { + if (input[0] < 564.8027) { + var66 = 0.0903614; + } else { + var66 = 0.0033047998; + } + } + } + } else { + if (input[2] < 0.13074243) { + if (input[4] < 22.899303) { + if (input[2] < 0.088344395) { + var66 = -0.044982232; + } else { + var66 = -0.18359828; + } + } else { + if (input[0] < 523.36316) { + var66 = 0.082213484; + } else { + var66 = -0.017276745; + } + } + } else { + if (input[5] < 17.667837) { + if (input[5] < 16.674982) { + var66 = -0.081159055; + } else { + var66 = 0.3104631; + } + } else { + if (input[4] < 26.107292) { + var66 = -0.49150628; + } else { + var66 = -0.16231412; + } + } + } + } + } + } else { + if (input[1] < 193.68164) { + if (input[0] < 569.34753) { + if (input[2] < 0.23503518) { + if (input[4] < 26.011915) { + if (input[7] < 0.005712156) { + var66 = -0.0065472354; + } else { + var66 = 0.23244251; + } + } else { + if (input[5] < 23.786865) { + var66 = 0.41273022; + } else { + var66 = 0.17379378; + } + } + } else { + var66 = -0.23011757; + } + } else { + if (input[3] < 8.0) { + if (input[4] < 29.657753) { + if (input[7] < 0.0041255937) { + var66 = 0.26731533; + } else { + var66 = -0.016088774; + } + } else { + if (input[7] < 0.0030364501) { + var66 = -0.005704924; + } else { + var66 = -0.4236543; + } + } + } else { + if (input[7] < 0.008130896) { + if (input[7] < 0.0017720697) { + var66 = -0.06939081; + } else { + var66 = 0.27535325; + } + } else { + var66 = -0.1733881; + } + } + } + } else { + if (input[4] < 26.376) { + if (input[7] < 0.003937713) { + if (input[5] < 22.426456) { + if (input[0] < 565.6369) { + var66 = -0.09647676; + } else { + var66 = 0.1270356; + } + } else { + if (input[1] < 311.82135) { + var66 = 0.11056483; + } else { + var66 = 0.39120793; + } + } + } else { + if (input[6] < 0.041724283) { + if (input[0] < 672.7553) { + var66 = -0.00003869596; + } else { + var66 = 0.079296805; + } + } else { + if (input[5] < 23.366688) { + var66 = 0.1287482; + } else { + var66 = -0.011842569; + } + } + } + } else { + if (input[6] < 0.046756607) { + if (input[1] < 252.84729) { + if (input[5] < 11.839297) { + var66 = 0.2963162; + } else { + var66 = -0.039737906; + } + } else { + if (input[7] < 0.0049318275) { + var66 = 0.008741903; + } else { + var66 = -0.03612444; + } + } + } else { + if (input[0] < 507.74713) { + if (input[6] < 0.081781514) { + var66 = -0.0314299; + } else { + var66 = 0.035652056; + } + } else { + if (input[4] < 33.7453) { + var66 = 0.053079158; + } else { + var66 = 0.002024967; + } + } + } + } + } + } + double var67; + if (input[3] < 74.0) { + if (input[3] < 59.0) { + if (input[3] < 52.0) { + if (input[2] < 0.27443242) { + if (input[3] < 18.0) { + if (input[4] < 7.31554) { + var67 = 0.0189635; + } else { + var67 = -0.00041919883; + } + } else { + if (input[5] < 22.351292) { + var67 = 0.1047398; + } else { + var67 = 0.0084274355; + } + } + } else { + if (input[1] < 149.04504) { + if (input[7] < 0.0017720697) { + var67 = 0.0051289103; + } else { + var67 = 0.24538027; + } + } else { + if (input[3] < 26.0) { + var67 = -0.070028804; + } else { + var67 = 0.034475066; + } + } + } + } else { + if (input[5] < 24.27795) { + var67 = 0.29402286; + } else { + if (input[3] < 54.0) { + var67 = -0.1391423; + } else { + var67 = 0.21910702; + } + } + } + } else { + if (input[4] < 38.23957) { + if (input[6] < 0.052663703) { + var67 = -0.04003029; + } else { + if (input[6] < 0.060177866) { + if (input[2] < 0.23503518) { + var67 = -0.5899374; + } else { + var67 = -0.13071913; + } + } else { + if (input[3] < 68.0) { + var67 = 0.19142978; + } else { + var67 = -0.42943466; + } + } + } + } else { + if (input[2] < 0.32127088) { + if (input[2] < 0.23885596) { + var67 = 0.002859501; + } else { + var67 = 0.22004761; + } + } else { + if (input[0] < 532.6803) { + var67 = -0.27543673; + } else { + var67 = 0.06104931; + } + } + } + } + } else { + if (input[5] < 33.48466) { + if (input[1] < 2290.354) { + if (input[1] < 1917.9291) { + if (input[2] < 0.25271404) { + if (input[7] < 0.019397447) { + var67 = 0.16032268; + } else { + var67 = -0.31001306; + } + } else { + var67 = 0.274853; + } + } else { + if (input[2] < 0.32127088) { + if (input[3] < 86.0) { + var67 = 0.011724091; + } else { + var67 = 0.18632844; + } + } else { + if (input[7] < 0.012442105) { + var67 = 0.0738536; + } else { + var67 = -0.47825524; + } + } + } + } else { + if (input[3] < 89.0) { + var67 = 0.08926112; + } else { + var67 = 0.25922266; + } + } + } else { + if (input[7] < 0.028802285) { + var67 = -0.255138; + } else { + var67 = -0.028567372; + } + } + } + double var68; + if (input[5] < 10.757549) { + if (input[4] < 10.558617) { + if (input[6] < 0.0051328884) { + var68 = -0.010509796; + } else { + var68 = 0.25933167; + } + } else { + if (input[7] < 0.01615975) { + if (input[2] < 0.1089797) { + if (input[4] < 23.34669) { + if (input[4] < 19.483055) { + var68 = -0.018503435; + } else { + var68 = 0.20578901; + } + } else { + if (input[4] < 26.107292) { + var68 = -0.25113627; + } else { + var68 = 0.07886773; + } + } + } else { + if (input[1] < 78.64492) { + if (input[0] < 541.9823) { + var68 = 0.006469719; + } else { + var68 = -0.19590911; + } + } else { + if (input[2] < 0.12225413) { + var68 = 0.4892869; + } else { + var68 = 0.060197026; + } + } + } + } else { + if (input[4] < 13.053429) { + var68 = -0.31783292; + } else { + if (input[0] < 592.9258) { + var68 = 0.05523611; + } else { + var68 = -0.118716024; + } + } + } + } + } else { + if (input[1] < 79.2583) { + if (input[2] < 0.16901255) { + if (input[1] < 78.21661) { + if (input[4] < 25.28896) { + if (input[2] < 0.1030972) { + var68 = -0.0047067595; + } else { + var68 = -0.17102236; + } + } else { + if (input[6] < 0.01848785) { + var68 = 0.13853051; + } else { + var68 = 0.014122482; + } + } + } else { + if (input[2] < 0.14155722) { + if (input[3] < 6.0) { + var68 = 0.021291438; + } else { + var68 = -0.04836131; + } + } else { + if (input[5] < 25.194532) { + var68 = -0.26045382; + } else { + var68 = -0.0028986556; + } + } + } + } else { + if (input[2] < 0.20118733) { + if (input[5] < 27.572266) { + var68 = -0.2514069; + } else { + var68 = -0.014418073; + } + } else { + if (input[5] < 22.210117) { + if (input[5] < 18.505344) { + var68 = 0.032897294; + } else { + var68 = -0.18609959; + } + } else { + var68 = 0.08493858; + } + } + } + } else { + if (input[1] < 117.295654) { + if (input[3] < 6.0) { + if (input[0] < 528.44965) { + if (input[7] < 0.065982014) { + var68 = -0.03998142; + } else { + var68 = 0.19184653; + } + } else { + if (input[2] < 0.008977376) { + var68 = -0.20823282; + } else { + var68 = 0.022240626; + } + } + } else { + if (input[1] < 96.294495) { + if (input[0] < 447.375) { + var68 = 0.2887497; + } else { + var68 = -0.0004018809; + } + } else { + if (input[3] < 8.0) { + var68 = 0.16345415; + } else { + var68 = -0.065435395; + } + } + } + } else { + if (input[1] < 121.57103) { + if (input[3] < 6.0) { + if (input[1] < 118.724884) { + var68 = 0.09611152; + } else { + var68 = -0.050713997; + } + } else { + if (input[1] < 118.724884) { + var68 = -0.062533885; + } else { + var68 = 0.09343729; + } + } + } else { + if (input[1] < 137.21216) { + if (input[2] < 0.18529916) { + var68 = 0.12449745; + } else { + var68 = -0.06918435; + } + } else { + if (input[0] < 445.85364) { + var68 = -0.016311156; + } else { + var68 = 0.0022925474; + } + } + } + } + } + } + double var69; + if (input[4] < 29.050934) { + if (input[6] < 0.0529048) { + if (input[3] < 12.0) { + if (input[7] < 0.0040295073) { + if (input[3] < 8.0) { + if (input[1] < 141.24573) { + var69 = -0.010586538; + } else { + var69 = 0.025693234; + } + } else { + if (input[7] < 0.0036698799) { + var69 = 0.16489398; + } else { + var69 = 0.007665367; + } + } + } else { + if (input[4] < 21.723177) { + if (input[7] < 0.004320392) { + var69 = 0.103472345; + } else { + var69 = 0.001473681; + } + } else { + if (input[1] < 55.822754) { + var69 = 0.04462321; + } else { + var69 = -0.015542025; + } + } + } + } else { + if (input[7] < 0.0079014255) { + if (input[5] < 26.446224) { + if (input[5] < 22.283722) { + var69 = 0.03858668; + } else { + var69 = 0.22062373; + } + } else { + if (input[3] < 14.0) { + var69 = -0.20357691; + } else { + var69 = 0.1136489; + } + } + } else { + if (input[4] < 25.02411) { + if (input[2] < 0.061130285) { + var69 = -0.16979352; + } else { + var69 = 0.11673664; + } + } else { + if (input[5] < 23.327835) { + var69 = 0.074716754; + } else { + var69 = -0.26721674; + } + } + } + } + } else { + if (input[3] < 9.0) { + if (input[0] < 415.7414) { + if (input[6] < 0.056304816) { + if (input[4] < 26.469646) { + var69 = -0.25019243; + } else { + var69 = 0.13766403; + } + } else { + if (input[1] < 147.89758) { + var69 = 0.06354862; + } else { + var69 = -0.21383703; + } + } + } else { + if (input[4] < 23.794575) { + if (input[3] < 6.0) { + var69 = 0.39397335; + } else { + var69 = 0.11717645; + } + } else { + if (input[6] < 0.06442285) { + var69 = 0.030590402; + } else { + var69 = 0.217112; + } + } + } + } else { + if (input[7] < 0.0060030525) { + if (input[5] < 24.626286) { + if (input[6] < 0.056304816) { + var69 = 0.05427379; + } else { + var69 = 0.22972381; + } + } else { + if (input[5] < 25.447344) { + var69 = -0.45740277; + } else { + var69 = 0.049731914; + } + } + } else { + if (input[3] < 14.0) { + var69 = 0.3031324; + } else { + if (input[5] < 25.999264) { + var69 = 0.19838335; + } else { + var69 = -0.14276803; + } + } + } + } + } + } else { + if (input[0] < 406.91656) { + if (input[2] < 0.18115747) { + if (input[5] < 21.47956) { + if (input[5] < 20.121521) { + var69 = 0.10050667; + } else { + var69 = -0.20200036; + } + } else { + if (input[1] < 115.16882) { + var69 = 0.021686066; + } else { + if (input[6] < 0.064966485) { + var69 = 0.08348653; + } else { + var69 = 0.3208082; + } + } + } + } else { + if (input[4] < 31.694513) { + if (input[2] < 0.18675008) { + var69 = -0.52985126; + } else { + var69 = 0.07247174; + } + } else { + if (input[0] < 399.83472) { + if (input[3] < 7.0) { + var69 = -0.21898036; + } else { + var69 = 0.13441737; + } + } else { + if (input[5] < 26.65595) { + var69 = 0.26064932; + } else { + var69 = -0.05750776; + } + } + } + } + } else { + if (input[0] < 447.375) { + if (input[4] < 29.757948) { + if (input[0] < 420.89536) { + if (input[1] < 143.43848) { + var69 = 0.15765497; + } else { + var69 = -0.29621807; + } + } else { + if (input[0] < 437.31543) { + var69 = 0.2590212; + } else { + var69 = 0.008015374; + } + } + } else { + if (input[6] < 0.06800464) { + if (input[6] < 0.043191366) { + var69 = 0.1200084; + } else { + var69 = -0.13117486; + } + } else { + if (input[4] < 31.920088) { + var69 = 0.11357369; + } else { + var69 = -0.030990096; + } + } + } + } else { + if (input[2] < 0.076109886) { + if (input[3] < 13.0) { + if (input[1] < 202.09811) { + var69 = 0.039776165; + } else { + var69 = -0.03968232; + } + } else { + var69 = 0.40877783; + } + } else { + if (input[6] < 0.041724283) { + if (input[2] < 0.11706096) { + var69 = -0.018010361; + } else { + var69 = -0.099545814; + } + } else { + if (input[7] < 0.006589555) { + var69 = 0.0011987119; + } else { + var69 = -0.032983862; + } + } + } + } + } + } + double var70; + if (input[3] < 9.0) { + if (input[1] < 421.82605) { + if (input[4] < 25.647543) { + if (input[2] < 0.12643456) { + if (input[3] < 6.0) { + if (input[6] < 0.05220808) { + var70 = -0.005515517; + } else { + var70 = 0.10633834; + } + } else { + if (input[7] < 0.0040931404) { + var70 = 0.05270242; + } else { + var70 = 0.001674171; + } + } + } else { + if (input[5] < 21.044563) { + if (input[2] < 0.12925828) { + var70 = 0.18614903; + } else { + var70 = -0.15101121; + } + } else { + if (input[7] < 0.0038463692) { + var70 = -0.06662452; + } else { + var70 = 0.13556126; + } + } + } + } else { + if (input[5] < 25.88462) { + if (input[1] < 370.7329) { + if (input[5] < 21.47956) { + var70 = -0.0020669403; + } else { + var70 = -0.016412184; + } + } else { + if (input[7] < 0.0066440776) { + var70 = -0.09936605; + } else { + var70 = 0.2287257; + } + } + } else { + if (input[2] < 0.06556158) { + if (input[6] < 0.02348538) { + var70 = 0.015769836; + } else { + var70 = 0.14291249; + } + } else { + if (input[2] < 0.15468198) { + var70 = -0.011758566; + } else { + var70 = 0.03476615; + } + } + } + } + } else { + if (input[4] < 31.580933) { + if (input[7] < 0.004189696) { + if (input[0] < 445.85364) { + var70 = -0.06723916; + } else { + if (input[0] < 628.1736) { + var70 = 0.3267888; + } else { + var70 = 0.053727727; + } + } + } else { + if (input[4] < 26.84426) { + if (input[2] < 0.04207915) { + var70 = -0.13432007; + } else { + var70 = 0.120669074; + } + } else { + if (input[0] < 636.6657) { + var70 = -0.12237124; + } else { + var70 = 0.24147666; + } + } + } + } else { + if (input[6] < 0.05493398) { + if (input[7] < 0.0023011367) { + var70 = 0.15600164; + } else { + if (input[4] < 36.2053) { + var70 = -0.09255941; + } else { + var70 = -0.31976253; + } + } + } else { + if (input[6] < 0.060562886) { + if (input[1] < 460.6717) { + var70 = 0.10163665; + } else { + var70 = 0.32610947; + } + } else { + if (input[3] < 7.0) { + var70 = 0.21023296; + } else { + var70 = -0.022644013; + } + } + } + } + } + } else { + if (input[4] < 43.352867) { + if (input[7] < 0.0025999527) { + if (input[4] < 35.880825) { + if (input[1] < 151.1117) { + if (input[7] < 0.002544325) { + var70 = 0.15318967; + } else { + var70 = -0.23899879; + } + } else { + if (input[1] < 196.52942) { + var70 = 0.42625546; + } else { + var70 = 0.12379425; + } + } + } else { + if (input[0] < 505.92896) { + if (input[1] < 348.1612) { + var70 = -0.014726834; + } else { + var70 = -0.23670618; + } + } else { + if (input[7] < 0.0022685162) { + var70 = 0.16609381; + } else { + var70 = 0.03959856; + } + } + } + } else { + if (input[0] < 587.9709) { + if (input[6] < 0.063917145) { + if (input[4] < 35.880825) { + var70 = -0.007001025; + } else { + var70 = -0.06903145; + } + } else { + if (input[2] < 0.19949937) { + var70 = 0.08472176; + } else { + var70 = 0.00040645548; + } + } + } else { + if (input[4] < 16.582067) { + if (input[6] < 0.01848785) { + var70 = 0.043806188; + } else { + var70 = 0.2770887; + } + } else { + if (input[0] < 688.42847) { + var70 = 0.016061429; + } else { + var70 = 0.2044483; + } + } + } + } + } else { + if (input[6] < 0.06551247) { + if (input[0] < 610.1273) { + if (input[1] < 196.52942) { + if (input[3] < 11.0) { + var70 = -0.10358627; + } else { + var70 = 0.42625323; + } + } else { + if (input[0] < 539.3772) { + var70 = 0.020580262; + } else { + var70 = -0.1907938; + } + } + } else { + if (input[5] < 27.29118) { + if (input[2] < 0.18115747) { + var70 = 0.0042230906; + } else { + var70 = -0.101003505; + } + } else { + if (input[5] < 28.764593) { + var70 = 0.28057367; + } else { + var70 = -0.023790604; + } + } + } + } else { + if (input[4] < 51.153934) { + if (input[1] < 207.02184) { + if (input[1] < 145.6225) { + var70 = 0.09025678; + } else { + var70 = -0.09256223; + } + } else { + if (input[1] < 227.30066) { + var70 = 0.3734536; + } else { + var70 = 0.024046838; + } + } + } else { + if (input[5] < 27.470732) { + if (input[5] < 27.204857) { + var70 = -0.026773365; + } else { + var70 = -0.34101763; + } + } else { + if (input[1] < 659.8392) { + var70 = 0.1255885; + } else { + var70 = -0.058505625; + } + } + } + } + } + } + double var71; + if (input[3] < 23.0) { + if (input[1] < 1184.6289) { + if (input[4] < 39.150074) { + if (input[6] < 0.0719236) { + if (input[1] < 1042.0798) { + if (input[1] < 808.4346) { + var71 = 0.0002492391; + } else { + var71 = 0.12119435; + } + } else { + var71 = -0.3229409; + } + } else { + if (input[2] < 0.18115747) { + if (input[7] < 0.0023011367) { + var71 = 0.021471256; + } else { + var71 = 0.1662102; + } + } else { + if (input[5] < 30.710585) { + var71 = 0.027707597; + } else { + var71 = -0.1854923; + } + } + } + } else { + if (input[7] < 0.0039673825) { + if (input[1] < 255.84222) { + if (input[1] < 196.73734) { + var71 = -0.000046006702; + } else { + var71 = -0.055973988; + } + } else { + if (input[5] < 26.883776) { + var71 = 0.015807716; + } else { + var71 = -0.03438356; + } + } + } else { + if (input[7] < 0.004061319) { + if (input[3] < 19.0) { + var71 = -0.21676554; + } else { + var71 = 0.1621183; + } + } else { + if (input[0] < 675.009) { + var71 = -0.027416358; + } else { + var71 = -0.30826083; + } + } + } + } + } else { + var71 = 0.2539672; + } + } else { + if (input[1] < 637.6124) { + if (input[1] < 432.44418) { + if (input[2] < 0.22853947) { + var71 = 0.22948384; + } else { + if (input[0] < 505.03424) { + var71 = 0.13995913; + } else { + if (input[7] < 0.004189696) { + var71 = 0.008727245; + } else { + var71 = -0.32231247; + } + } + } + } else { + if (input[5] < 19.57885) { + var71 = -0.014015525; + } else { + if (input[0] < 610.1273) { + var71 = 0.32545614; + } else { + if (input[6] < 0.07288235) { + var71 = -0.053746723; + } else { + var71 = 0.26124504; + } + } + } + } + } else { + if (input[4] < 24.066366) { + var71 = -0.24927329; + } else { + if (input[4] < 28.949688) { + var71 = 0.24758843; + } else { + if (input[4] < 30.472694) { + if (input[2] < 0.21310979) { + var71 = -0.42412654; + } else { + var71 = 0.17048818; + } + } else { + if (input[2] < 0.21533608) { + var71 = 0.082535714; + } else { + var71 = -0.0039316462; + } + } + } + } + } + } + double var72; + if (input[1] < 191.00214) { + if (input[1] < 173.5393) { + if (input[1] < 171.9599) { + if (input[1] < 150.89111) { + if (input[1] < 149.04504) { + if (input[1] < 141.24573) { + var72 = -0.0027549847; + } else { + var72 = 0.01575086; + } + } else { + if (input[0] < 427.4725) { + var72 = -0.3249756; + } else { + var72 = 0.11916316; + } + } + } else { + if (input[2] < 0.1668272) { + if (input[1] < 168.27454) { + var72 = -0.028956488; + } else { + var72 = 0.013921087; + } + } else { + if (input[7] < 0.0016345347) { + var72 = 0.020348085; + } else { + var72 = -0.124636345; + } + } + } + } else { + if (input[5] < 23.590998) { + if (input[2] < 0.07034141) { + if (input[4] < 34.687817) { + var72 = 0.2964377; + } else { + var72 = -0.12833737; + } + } else { + if (input[6] < 0.032991488) { + var72 = -0.2060055; + } else { + var72 = 0.14237921; + } + } + } else { + if (input[3] < 9.0) { + if (input[0] < 604.5986) { + var72 = -0.0039321743; + } else { + var72 = -0.18787433; + } + } else { + if (input[4] < 40.228992) { + var72 = 0.2491745; + } else { + var72 = -0.22411059; + } + } + } + } + } else { + if (input[0] < 673.89215) { + if (input[7] < 0.0024834909) { + if (input[5] < 20.485325) { + if (input[2] < 0.16369247) { + var72 = -0.03579144; + } else { + var72 = -0.21191067; + } + } else { + if (input[0] < 471.70917) { + var72 = -0.13145293; + } else { + var72 = 0.081846505; + } + } + } else { + if (input[2] < 0.12500748) { + if (input[4] < 39.150074) { + var72 = -0.02390651; + } else { + var72 = 0.5804721; + } + } else { + if (input[4] < 28.26695) { + var72 = -0.22276741; + } else { + var72 = -0.056736764; + } + } + } + } else { + if (input[4] < 36.538284) { + if (input[5] < 18.220026) { + if (input[2] < 0.06740692) { + var72 = -0.17886646; + } else { + var72 = 0.14837687; + } + } else { + if (input[3] < 6.0) { + var72 = 0.23750311; + } else { + var72 = 0.06941476; + } + } + } else { + if (input[1] < 177.04877) { + if (input[0] < 681.8675) { + var72 = -0.4227362; + } else { + var72 = -0.14849906; + } + } else { + var72 = 0.1320169; + } + } + } + } + } else { + if (input[1] < 193.68164) { + if (input[0] < 569.34753) { + if (input[2] < 0.08112252) { + if (input[6] < 0.02455999) { + if (input[0] < 552.43494) { + var72 = 0.25302243; + } else { + var72 = -0.100434564; + } + } else { + if (input[5] < 19.524868) { + var72 = 0.20599672; + } else { + var72 = -0.27181557; + } + } + } else { + if (input[3] < 11.0) { + if (input[5] < 18.892052) { + var72 = 0.036458056; + } else { + var72 = 0.25257692; + } + } else { + var72 = -0.12836596; + } + } + } else { + if (input[3] < 8.0) { + if (input[4] < 29.657753) { + if (input[5] < 23.553886) { + var72 = -0.054618258; + } else { + var72 = 0.16550674; + } + } else { + if (input[7] < 0.0030364501) { + var72 = -0.0029775125; + } else { + var72 = -0.3009238; + } + } + } else { + if (input[5] < 27.885078) { + if (input[7] < 0.008130896) { + var72 = 0.21575685; + } else { + var72 = -0.07284538; + } + } else { + var72 = -0.2512865; + } + } + } + } else { + if (input[7] < 0.014142963) { + if (input[7] < 0.013135703) { + if (input[2] < 0.017481804) { + if (input[0] < 547.29865) { + var72 = -0.08333965; + } else { + var72 = 0.18847156; + } + } else { + if (input[3] < 52.0) { + var72 = 0.00063194166; + } else { + var72 = 0.14312199; + } + } + } else { + if (input[2] < 0.05343145) { + if (input[5] < 20.617947) { + var72 = -0.50381756; + } else { + var72 = -0.14515033; + } + } else { + if (input[0] < 479.1913) { + var72 = -0.21518266; + } else { + var72 = 0.01383592; + } + } + } + } else { + if (input[6] < 0.007448412) { + if (input[5] < 20.396229) { + if (input[4] < 12.506829) { + var72 = -0.017023327; + } else { + var72 = 0.30445084; + } + } else { + if (input[5] < 24.673338) { + var72 = -0.2818591; + } else { + var72 = 0.029854381; + } + } + } else { + if (input[3] < 6.0) { + if (input[7] < 0.04599524) { + var72 = 0.018053992; + } else { + var72 = -0.20243587; + } + } else { + if (input[1] < 229.68715) { + var72 = 0.11451822; + } else { + var72 = 0.029574307; + } + } + } + } + } + } + double var73; + if (input[6] < 0.027508454) { + if (input[2] < 0.05706811) { + if (input[1] < 255.84222) { + if (input[1] < 231.0669) { + if (input[1] < 229.94263) { + if (input[6] < 0.021839056) { + var73 = -0.004931383; + } else { + var73 = 0.015515856; + } + } else { + if (input[4] < 19.22159) { + var73 = 0.02433127; + } else { + var73 = 0.2528068; + } + } + } else { + if (input[0] < 659.5366) { + if (input[5] < 23.514431) { + var73 = -0.15558474; + } else { + var73 = 0.003920431; + } + } else { + if (input[6] < 0.021839056) { + var73 = 0.22996086; + } else { + var73 = -0.37658778; + } + } + } + } else { + if (input[5] < 16.900776) { + if (input[0] < 486.46512) { + if (input[0] < 469.4581) { + var73 = 0.045562863; + } else { + var73 = -0.1954308; + } + } else { + var73 = 0.30213314; + } + } else { + if (input[5] < 21.124035) { + if (input[7] < 0.015065861) { + var73 = -0.12514181; + } else { + var73 = 0.12626192; + } + } else { + if (input[7] < 0.015328966) { + var73 = 0.073622525; + } else { + var73 = -0.05898897; + } + } + } + } + } else { + if (input[6] < 0.024027178) { + if (input[2] < 0.07443881) { + if (input[4] < 36.2053) { + if (input[0] < 469.4581) { + var73 = 0.089669034; + } else { + var73 = -0.08355012; + } + } else { + if (input[2] < 0.061827302) { + var73 = -0.08527634; + } else { + var73 = 0.34514746; + } + } + } else { + if (input[4] < 24.596539) { + var73 = -0.6141875; + } else { + var73 = -0.15327527; + } + } + } else { + if (input[4] < 20.090502) { + if (input[0] < 573.7609) { + if (input[4] < 14.698128) { + var73 = 0.05569467; + } else { + var73 = -0.055713825; + } + } else { + if (input[7] < 0.005354749) { + var73 = 0.32976106; + } else { + var73 = 0.062230453; + } + } + } else { + if (input[4] < 20.777779) { + if (input[0] < 539.3772) { + var73 = 0.061785497; + } else { + var73 = -0.21194018; + } + } else { + if (input[2] < 0.06435102) { + var73 = 0.012793524; + } else { + var73 = -0.047825; + } + } + } + } + } + } else { + if (input[4] < 18.276783) { + if (input[5] < 25.499891) { + if (input[7] < 0.005805585) { + if (input[7] < 0.005489262) { + if (input[0] < 565.6369) { + var73 = 0.050171692; + } else { + var73 = -0.321923; + } + } else { + if (input[0] < 535.2388) { + var73 = -0.33197656; + } else { + var73 = 0.06875352; + } + } + } else { + if (input[1] < 199.64316) { + if (input[6] < 0.03452544) { + var73 = 0.041778654; + } else { + var73 = 0.12793837; + } + } else { + if (input[6] < 0.02797405) { + var73 = -0.15220648; + } else { + var73 = 0.17131679; + } + } + } + } else { + if (input[7] < 0.020403687) { + if (input[7] < 0.01816849) { + if (input[5] < 28.341646) { + var73 = -0.071611024; + } else { + var73 = 0.008898393; + } + } else { + if (input[5] < 26.954847) { + var73 = 0.09113151; + } else { + var73 = -0.47245425; + } + } + } else { + if (input[7] < 0.065982014) { + if (input[1] < 59.12854) { + var73 = 0.3008682; + } else { + var73 = 0.06517113; + } + } else { + if (input[0] < 445.85364) { + var73 = 0.05860192; + } else { + var73 = -0.22679126; + } + } + } + } + } else { + if (input[7] < 0.01615975) { + if (input[4] < 27.594154) { + if (input[2] < 0.1668272) { + if (input[2] < 0.12643456) { + var73 = 0.0049581765; + } else { + var73 = 0.03950998; + } + } else { + if (input[2] < 0.16901255) { + var73 = -0.57532454; + } else { + var73 = -0.06322879; + } + } + } else { + if (input[6] < 0.034918007) { + if (input[4] < 33.10718) { + var73 = -0.044343367; + } else { + var73 = 0.03077248; + } + } else { + if (input[6] < 0.03529753) { + var73 = 0.1150169; + } else { + var73 = -0.0016260439; + } + } + } + } else { + if (input[1] < 121.57103) { + if (input[0] < 439.05417) { + if (input[1] < 115.16882) { + var73 = -0.06294332; + } else { + var73 = 0.23062958; + } + } else { + if (input[5] < 16.900776) { + var73 = -0.36929545; + } else { + var73 = -0.11514962; + } + } + } else { + if (input[0] < 447.375) { + if (input[6] < 0.05065899) { + var73 = -0.3669156; + } else { + var73 = 0.0037070038; + } + } else { + if (input[0] < 536.0595) { + var73 = 0.064248905; + } else { + var73 = -0.06205689; + } + } + } + } + } + } + double var74; + if (input[4] < 11.313015) { + if (input[2] < 0.051182747) { + if (input[2] < 0.04971838) { + if (input[6] < 0.008171307) { + if (input[7] < 0.013334383) { + if (input[5] < 23.947874) { + var74 = 0.039054837; + } else { + var74 = 0.540986; + } + } else { + if (input[4] < 5.1584697) { + var74 = 0.016943408; + } else { + var74 = -0.042048577; + } + } + } else { + if (input[5] < 31.12926) { + if (input[4] < 7.31554) { + var74 = 0.068839885; + } else { + var74 = 0.016559003; + } + } else { + if (input[2] < 0.023036957) { + var74 = -0.22466387; + } else { + var74 = 0.04406996; + } + } + } + } else { + if (input[0] < 483.37265) { + if (input[1] < 176.52954) { + if (input[5] < 22.351292) { + var74 = -0.039655216; + } else { + var74 = -0.6401379; + } + } else { + var74 = 0.07244633; + } + } else { + if (input[4] < 10.558617) { + var74 = 0.31035727; + } else { + var74 = 0.02647569; + } + } + } + } else { + if (input[6] < 0.02506348) { + if (input[1] < 143.61688) { + if (input[0] < 412.7322) { + var74 = 0.0135003785; + } else { + if (input[1] < 115.16882) { + var74 = 0.07757806; + } else { + var74 = 0.3175095; + } + } + } else { + if (input[3] < 6.0) { + if (input[0] < 445.85364) { + var74 = -0.28923953; + } else { + var74 = 0.20638645; + } + } else { + if (input[6] < 0.020067545) { + var74 = -0.0019704956; + } else { + var74 = 0.24565817; + } + } + } + } else { + var74 = -0.17286932; + } + } + } else { + if (input[6] < 0.019131957) { + if (input[2] < 0.043907166) { + if (input[7] < 0.008989412) { + if (input[6] < 0.014341843) { + if (input[2] < 0.032770157) { + var74 = 0.008140891; + } else { + var74 = -0.15053278; + } + } else { + if (input[1] < 227.6239) { + var74 = 0.025346879; + } else { + var74 = 0.13625626; + } + } + } else { + if (input[2] < 0.008977376) { + if (input[0] < 481.2571) { + var74 = -0.084223665; + } else { + var74 = 0.06343804; + } + } else { + if (input[0] < 437.31543) { + var74 = 0.07847962; + } else { + var74 = -0.039484527; + } + } + } + } else { + if (input[2] < 0.056358993) { + if (input[1] < 149.04504) { + if (input[2] < 0.050450563) { + var74 = -0.1650043; + } else { + var74 = 0.2047697; + } + } else { + if (input[5] < 21.671062) { + var74 = 0.0664995; + } else { + var74 = -0.0740069; + } + } + } else { + if (input[4] < 26.19804) { + if (input[4] < 19.093088) { + var74 = -0.11590687; + } else { + var74 = -0.60481805; + } + } else { + var74 = -0.08556457; + } + } + } + } else { + if (input[7] < 0.04087875) { + if (input[4] < 13.793873) { + if (input[3] < 7.0) { + if (input[1] < 149.04504) { + var74 = 0.037257485; + } else { + var74 = -0.064198785; + } + } else { + if (input[4] < 13.053429) { + var74 = 0.03314573; + } else { + var74 = 0.24759564; + } + } + } else { + if (input[1] < 59.12854) { + if (input[1] < 55.916164) { + var74 = -0.003484973; + } else { + var74 = -0.054196283; + } + } else { + if (input[2] < 0.04971838) { + var74 = 0.057068434; + } else { + var74 = 0.00039853083; + } + } + } + } else { + if (input[0] < 450.31787) { + if (input[0] < 412.7322) { + var74 = -0.20786409; + } else { + if (input[1] < 141.80019) { + var74 = 0.22669934; + } else { + var74 = -0.120111115; + } + } + } else { + if (input[0] < 469.4581) { + if (input[3] < 6.0) { + var74 = -0.3796027; + } else { + var74 = -0.03913419; + } + } else { + if (input[0] < 528.44965) { + var74 = 0.02898039; + } else { + var74 = -0.15321955; + } + } + } + } + } + } + double var75; + if (input[0] < 548.1884) { + if (input[0] < 547.29865) { + if (input[6] < 0.07962002) { + if (input[4] < 44.533443) { + if (input[4] < 39.41097) { + if (input[6] < 0.056870647) { + var75 = -0.003854873; + } else { + var75 = 0.0103337895; + } + } else { + if (input[0] < 479.1913) { + var75 = -0.1751697; + } else { + var75 = -0.0127565; + } + } + } else { + if (input[7] < 0.0036993276) { + if (input[7] < 0.0021320276) { + var75 = -0.075657904; + } else { + var75 = -0.24280922; + } + } else { + if (input[6] < 0.06867167) { + var75 = 0.35349542; + } else { + var75 = -0.07257092; + } + } + } + } else { + if (input[1] < 118.724884) { + if (input[5] < 27.885078) { + if (input[2] < 0.008977376) { + var75 = 0.006245215; + } else { + var75 = -0.2044566; + } + } else { + if (input[1] < 79.678955) { + var75 = -0.22164638; + } else { + var75 = 0.28086746; + } + } + } else { + if (input[4] < 40.86154) { + if (input[1] < 347.76187) { + var75 = 0.055644456; + } else { + var75 = 0.2263639; + } + } else { + if (input[3] < 11.0) { + var75 = -0.0061416207; + } else { + var75 = 0.044809163; + } + } + } + } + } else { + if (input[1] < 143.84497) { + if (input[2] < 0.008977376) { + if (input[3] < 6.0) { + if (input[6] < 0.0067773927) { + var75 = 0.10891451; + } else { + var75 = -0.21033193; + } + } else { + var75 = 0.34184736; + } + } else { + if (input[1] < 138.58899) { + if (input[4] < 32.146854) { + var75 = -0.21664618; + } else { + var75 = 0.13920088; + } + } else { + if (input[5] < 26.120363) { + var75 = -0.48439825; + } else { + var75 = 0.04030787; + } + } + } + } else { + if (input[1] < 151.1117) { + if (input[2] < 0.076109886) { + var75 = 0.4287577; + } else { + var75 = -0.12572718; + } + } else { + if (input[7] < 0.0036409746) { + if (input[7] < 0.0023330299) { + var75 = -0.23835607; + } else { + var75 = 0.2003678; + } + } else { + if (input[5] < 28.479513) { + var75 = -0.13868621; + } else { + var75 = 0.34242275; + } + } + } + } + } + } else { + if (input[3] < 96.0) { + if (input[4] < 58.806583) { + if (input[1] < 342.5133) { + if (input[1] < 325.458) { + if (input[2] < 0.25271404) { + var75 = 0.0015331948; + } else { + var75 = 0.23940696; + } + } else { + if (input[4] < 26.19804) { + var75 = -0.27701923; + } else { + var75 = -0.027163; + } + } + } else { + if (input[5] < 23.136395) { + if (input[5] < 15.362015) { + var75 = 0.17065059; + } else { + var75 = -0.00819646; + } + } else { + if (input[7] < 0.002235593) { + var75 = 0.14456455; + } else { + var75 = 0.027995953; + } + } + } + } else { + if (input[1] < 170.5625) { + if (input[4] < 1054.0984) { + if (input[0] < 570.25055) { + var75 = -0.005831747; + } else { + var75 = 0.21254958; + } + } else { + if (input[5] < 21.6294) { + var75 = 0.07205009; + } else { + var75 = -0.15849124; + } + } + } else { + if (input[4] < 1054.0984) { + if (input[0] < 667.30505) { + var75 = -0.09831885; + } else { + var75 = 0.11986411; + } + } else { + if (input[1] < 693.0503) { + var75 = -0.010486716; + } else { + var75 = 0.24766673; + } + } + } + } + } else { + var75 = 0.24347375; + } + } + double var76; + if (input[0] < 437.31543) { + if (input[3] < 6.0) { + if (input[4] < 30.802803) { + if (input[5] < 19.125778) { + if (input[2] < 0.08112252) { + if (input[6] < 0.025324266) { + var76 = 0.0010531909; + } else { + var76 = 0.20655845; + } + } else { + if (input[2] < 0.087803364) { + var76 = -0.28689283; + } else { + var76 = 0.048111256; + } + } + } else { + if (input[2] < 0.1465702) { + if (input[5] < 19.417402) { + var76 = -0.34527612; + } else { + var76 = -0.03292272; + } + } else { + if (input[5] < 22.948763) { + var76 = 0.25964814; + } else { + var76 = 0.04164031; + } + } + } + } else { + if (input[2] < 0.19782853) { + if (input[0] < 406.91656) { + if (input[6] < 0.07796111) { + var76 = -0.18127742; + } else { + var76 = 0.1991802; + } + } else { + if (input[0] < 429.60077) { + var76 = -0.25639197; + } else { + var76 = -0.07926625; + } + } + } else { + if (input[7] < 0.002095897) { + if (input[1] < 138.27072) { + var76 = -0.34471098; + } else { + var76 = 0.080366924; + } + } else { + if (input[0] < 431.5945) { + var76 = 0.24957179; + } else { + var76 = -0.018968077; + } + } + } + } + } else { + if (input[6] < 0.027044792) { + if (input[6] < 0.011578243) { + if (input[5] < 28.764593) { + if (input[0] < 409.8705) { + var76 = 0.17676586; + } else { + var76 = -0.14140119; + } + } else { + if (input[0] < 409.8705) { + var76 = -0.02269048; + } else { + var76 = 0.23449898; + } + } + } else { + if (input[0] < 427.4725) { + if (input[1] < 151.28687) { + var76 = 0.041754987; + } else { + var76 = 0.23047689; + } + } else { + if (input[1] < 81.83862) { + var76 = -0.021627875; + } else { + var76 = 0.23298833; + } + } + } + } else { + if (input[5] < 24.194729) { + if (input[3] < 12.0) { + if (input[4] < 16.909874) { + var76 = 0.16770153; + } else { + var76 = 0.004313806; + } + } else { + if (input[6] < 0.044478152) { + var76 = -0.030108955; + } else { + var76 = 0.26818854; + } + } + } else { + if (input[1] < 118.724884) { + if (input[7] < 0.0055379313) { + var76 = -0.037038993; + } else { + var76 = -0.25351885; + } + } else { + if (input[1] < 137.21216) { + var76 = 0.18411392; + } else { + var76 = -0.03724428; + } + } + } + } + } + } else { + if (input[5] < 31.12926) { + if (input[5] < 30.710585) { + if (input[5] < 30.39442) { + if (input[3] < 74.0) { + if (input[3] < 59.0) { + var76 = 0.0002415652; + } else { + var76 = -0.12451097; + } + } else { + if (input[7] < 0.015328966) { + var76 = 0.21958864; + } else { + var76 = 0.040797986; + } + } + } else { + if (input[4] < 47.95029) { + if (input[6] < 0.012573133) { + var76 = -0.13600256; + } else { + var76 = 0.07344711; + } + } else { + var76 = -0.2661485; + } + } + } else { + if (input[0] < 447.375) { + if (input[4] < 31.804214) { + var76 = 0.40678582; + } else { + var76 = -0.18814433; + } + } else { + if (input[6] < 0.024027178) { + if (input[1] < 266.53317) { + var76 = -0.20238024; + } else { + var76 = 0.13781275; + } + } else { + if (input[1] < 153.67346) { + var76 = 0.07388457; + } else { + var76 = -0.09271371; + } + } + } + } + } else { + if (input[7] < 0.0019291723) { + if (input[3] < 10.0) { + if (input[0] < 523.36316) { + if (input[0] < 515.6308) { + var76 = -0.1123059; + } else { + var76 = 0.27809858; + } + } else { + if (input[5] < 31.63552) { + var76 = -0.33722472; + } else { + var76 = -0.10977282; + } + } + } else { + var76 = 0.18897846; + } + } else { + if (input[7] < 0.0029582323) { + if (input[7] < 0.0023011367) { + if (input[4] < 36.2053) { + var76 = -0.1076813; + } else { + var76 = 0.1836686; + } + } else { + if (input[1] < 145.6225) { + var76 = 0.27059147; + } else { + var76 = 0.06394808; + } + } + } else { + if (input[7] < 0.0031165932) { + if (input[1] < 149.04504) { + var76 = 0.012002817; + } else { + var76 = -0.33369142; + } + } else { + if (input[0] < 471.70917) { + var76 = 0.08185114; + } else { + var76 = 0.00916108; + } + } + } + } + } + } + double var77; + if (input[4] < 10.558617) { + if (input[7] < 0.014589799) { + if (input[7] < 0.014372812) { + if (input[7] < 0.012117223) { + var77 = 0.41094396; + } else { + if (input[0] < 470.5908) { + if (input[7] < 0.013921388) { + var77 = 0.090069965; + } else { + var77 = 0.42400694; + } + } else { + if (input[7] < 0.0126157) { + var77 = -0.26857296; + } else { + var77 = 0.040837005; + } + } + } + } else { + var77 = 0.473945; + } + } else { + if (input[5] < 21.282642) { + if (input[6] < 0.020684186) { + if (input[5] < 20.964203) { + if (input[5] < 20.396229) { + var77 = 0.02941548; + } else { + var77 = -0.06713133; + } + } else { + if (input[4] < 6.3997884) { + var77 = 0.29918388; + } else { + var77 = 0.07128278; + } + } + } else { + if (input[7] < 0.030342864) { + var77 = 0.33075142; + } else { + var77 = 0.0912368; + } + } + } else { + if (input[5] < 26.244675) { + if (input[6] < 0.01517198) { + if (input[4] < 9.192085) { + var77 = -0.02158485; + } else { + var77 = -0.123176545; + } + } else { + if (input[5] < 25.447344) { + var77 = 0.060890686; + } else { + var77 = -0.16833195; + } + } + } else { + if (input[2] < 0.044810057) { + if (input[5] < 26.584965) { + var77 = 0.16799234; + } else { + var77 = 0.026440319; + } + } else { + if (input[7] < 0.04599524) { + var77 = -0.2447897; + } else { + var77 = 0.20830145; + } + } + } + } + } + } else { + if (input[6] < 0.02455999) { + if (input[2] < 0.052720726) { + if (input[6] < 0.022677388) { + if (input[0] < 479.1913) { + if (input[5] < 22.948763) { + var77 = -0.09614343; + } else { + var77 = 0.0053064823; + } + } else { + if (input[0] < 480.22372) { + var77 = 0.17758428; + } else { + var77 = -0.00050026545; + } + } + } else { + if (input[0] < 451.8147) { + if (input[7] < 0.009886153) { + var77 = 0.062385976; + } else { + var77 = -0.22124717; + } + } else { + if (input[5] < 29.440952) { + var77 = 0.10830221; + } else { + var77 = -0.1488077; + } + } + } + } else { + if (input[7] < 0.005489262) { + if (input[5] < 24.069965) { + if (input[1] < 235.31873) { + var77 = -0.06383919; + } else { + var77 = 0.07945355; + } + } else { + if (input[4] < 22.037666) { + var77 = 0.35597444; + } else { + var77 = 0.04960827; + } + } + } else { + if (input[7] < 0.0056639556) { + if (input[0] < 551.71265) { + var77 = 0.08721278; + } else { + var77 = -0.28619635; + } + } else { + if (input[6] < 0.020067545) { + var77 = -0.14234096; + } else { + var77 = -0.040774547; + } + } + } + } + } else { + if (input[4] < 22.235271) { + if (input[3] < 12.0) { + if (input[6] < 0.04373461) { + if (input[6] < 0.02506348) { + var77 = 0.06560165; + } else { + var77 = 0.004271798; + } + } else { + if (input[6] < 0.049576316) { + var77 = 0.057045158; + } else { + var77 = 0.18328479; + } + } + } else { + if (input[2] < 0.1456947) { + if (input[7] < 0.017095413) { + var77 = 0.2872655; + } else { + var77 = 0.099584974; + } + } else { + var77 = -0.20388788; + } + } + } else { + if (input[0] < 489.37897) { + if (input[6] < 0.053882368) { + if (input[7] < 0.009173502) { + var77 = -0.024711266; + } else { + var77 = -0.11605886; + } + } else { + if (input[5] < 14.199996) { + var77 = 0.15977743; + } else { + var77 = 0.0009987224; + } + } + } else { + if (input[2] < 0.06556158) { + if (input[7] < 0.004189696) { + var77 = -0.0039690635; + } else { + var77 = 0.094191566; + } + } else { + if (input[6] < 0.029290315) { + var77 = -0.051791053; + } else { + var77 = 0.0022675951; + } + } + } + } + } + } + double var78; + if (input[1] < 56.37903) { + if (input[1] < 55.945312) { + if (input[5] < 24.451618) { + if (input[5] < 24.15352) { + if (input[7] < 0.0023617237) { + if (input[4] < 23.702576) { + var78 = 0.53063035; + } else { + var78 = 0.043370325; + } + } else { + if (input[2] < 0.13148224) { + var78 = -0.0008916893; + } else { + var78 = -0.18127412; + } + } + } else { + if (input[4] < 26.84426) { + if (input[4] < 25.379398) { + var78 = 0.12206224; + } else { + var78 = 0.5705012; + } + } else { + var78 = -0.28820318; + } + } + } else { + if (input[5] < 24.579962) { + if (input[6] < 0.015955688) { + if (input[6] < 0.009366361) { + var78 = -0.16503495; + } else { + var78 = 0.13050672; + } + } else { + if (input[0] < 665.0621) { + var78 = -0.26658395; + } else { + var78 = 0.11591955; + } + } + } else { + if (input[0] < 649.94415) { + if (input[7] < 0.004526879) { + var78 = -0.063256234; + } else { + var78 = -0.0010564221; + } + } else { + if (input[6] < 0.035672467) { + var78 = 0.14872389; + } else { + var78 = -0.15658942; + } + } + } + } + } else { + if (input[3] < 7.0) { + if (input[6] < 0.038226146) { + if (input[4] < 26.376) { + if (input[4] < 7.31554) { + var78 = 0.23798741; + } else { + var78 = -0.10117218; + } + } else { + if (input[5] < 24.579962) { + var78 = 0.02085873; + } else { + var78 = 0.55054677; + } + } + } else { + if (input[7] < 0.0021675183) { + if (input[6] < 0.050438497) { + var78 = 0.35900992; + } else { + var78 = -0.18575963; + } + } else { + if (input[5] < 26.184101) { + var78 = -0.27402806; + } else { + var78 = -0.05185255; + } + } + } + } else { + if (input[5] < 15.865071) { + var78 = -0.29585314; + } else { + if (input[0] < 643.69525) { + if (input[0] < 614.7769) { + var78 = 0.20697512; + } else { + var78 = -0.17737885; + } + } else { + if (input[4] < 11.313015) { + var78 = -0.106007494; + } else { + var78 = 0.5975688; + } + } + } + } + } + } else { + if (input[4] < 15.523021) { + if (input[3] < 6.0) { + if (input[0] < 668.3814) { + if (input[1] < 151.58571) { + if (input[5] < 19.188658) { + var78 = -0.04253558; + } else { + var78 = 0.02145964; + } + } else { + if (input[1] < 177.04877) { + var78 = -0.11837477; + } else { + var78 = -0.009685205; + } + } + } else { + if (input[0] < 675.009) { + if (input[1] < 171.34103) { + var78 = 0.34320253; + } else { + var78 = 0.01265218; + } + } else { + if (input[1] < 171.21246) { + var78 = -0.13859467; + } else { + var78 = 0.23147713; + } + } + } + } else { + if (input[5] < 22.058182) { + if (input[7] < 0.008989412) { + if (input[6] < 0.01517198) { + var78 = -0.065894544; + } else { + var78 = 0.32164705; + } + } else { + if (input[1] < 137.9049) { + var78 = 0.01841299; + } else { + var78 = 0.09262908; + } + } + } else { + if (input[7] < 0.01071381) { + if (input[6] < 0.02348538) { + var78 = 0.19696243; + } else { + var78 = -0.0647179; + } + } else { + if (input[5] < 22.647522) { + var78 = -0.111654386; + } else { + var78 = 0.0022194185; + } + } + } + } + } else { + if (input[6] < 0.017102145) { + if (input[2] < 0.04302311) { + if (input[7] < 0.005712156) { + if (input[0] < 688.42847) { + var78 = 0.02138468; + } else { + var78 = -0.36635727; + } + } else { + if (input[7] < 0.017428085) { + var78 = -0.047939193; + } else { + var78 = 0.09358785; + } + } + } else { + if (input[1] < 269.17102) { + if (input[4] < 21.095676) { + var78 = -0.3447172; + } else { + var78 = -0.07942968; + } + } else { + if (input[7] < 0.005393012) { + var78 = -0.1709559; + } else { + var78 = 0.19137628; + } + } + } + } else { + if (input[2] < 0.04563713) { + if (input[4] < 17.07824) { + if (input[5] < 25.60802) { + var78 = 0.22730346; + } else { + var78 = 0.007838662; + } + } else { + if (input[3] < 6.0) { + var78 = -0.009223551; + } else { + var78 = 0.07817297; + } + } + } else { + if (input[6] < 0.020067545) { + if (input[1] < 174.03363) { + var78 = -0.12321103; + } else { + var78 = -0.003142594; + } + } else { + if (input[1] < 75.70349) { + var78 = 0.03631702; + } else { + var78 = 0.00012566196; + } + } + } + } + } + } + double var79; + if (input[4] < 32.274986) { + if (input[2] < 0.15184617) { + if (input[7] < 0.0018817764) { + if (input[5] < 19.066538) { + var79 = -0.1607672; + } else { + if (input[4] < 32.146854) { + if (input[1] < 75.89282) { + var79 = 0.6115796; + } else { + var79 = 0.1427733; + } + } else { + var79 = -0.011816844; + } + } + } else { + if (input[7] < 0.0020210762) { + if (input[4] < 30.913733) { + if (input[0] < 538.57745) { + var79 = 0.19630127; + } else { + var79 = -0.15708978; + } + } else { + if (input[4] < 32.146854) { + var79 = -0.1527297; + } else { + var79 = 0.15938705; + } + } + } else { + if (input[3] < 10.0) { + if (input[1] < 572.2172) { + var79 = -0.0004906416; + } else { + var79 = 0.24760556; + } + } else { + if (input[7] < 0.0044564977) { + var79 = 0.09574626; + } else { + var79 = 0.002755232; + } + } + } + } + } else { + if (input[0] < 461.0655) { + if (input[3] < 32.0) { + if (input[0] < 459.87552) { + if (input[7] < 0.0025152762) { + var79 = -0.08656456; + } else { + var79 = 0.024258517; + } + } else { + if (input[5] < 25.552517) { + var79 = -0.28153557; + } else { + var79 = 0.062065806; + } + } + } else { + var79 = -0.47117; + } + } else { + if (input[7] < 0.0029307685) { + if (input[2] < 0.16791785) { + if (input[1] < 115.47824) { + var79 = -0.079199046; + } else { + var79 = 0.29401067; + } + } else { + if (input[0] < 473.86905) { + var79 = 0.23455468; + } else { + var79 = -0.23297957; + } + } + } else { + if (input[1] < 350.59753) { + if (input[0] < 480.22372) { + var79 = 0.09751021; + } else { + var79 = -0.037244566; + } + } else { + if (input[0] < 524.96844) { + var79 = 0.07300683; + } else { + var79 = 0.23985393; + } + } + } + } + } + } else { + if (input[3] < 6.0) { + if (input[0] < 437.31543) { + if (input[2] < 0.21767628) { + if (input[0] < 406.91656) { + if (input[1] < 138.08691) { + var79 = -0.02098409; + } else { + var79 = 0.23749606; + } + } else { + if (input[2] < 0.16058685) { + var79 = -0.031106442; + } else { + var79 = -0.2106931; + } + } + } else { + if (input[4] < 42.378788) { + if (input[1] < 137.21216) { + var79 = 0.07417587; + } else { + var79 = 0.2793448; + } + } else { + var79 = -0.05091199; + } + } + } else { + if (input[1] < 53.395752) { + if (input[2] < 0.09670508) { + if (input[4] < 1054.0984) { + var79 = 0.13655; + } else { + var79 = -0.1924222; + } + } else { + if (input[2] < 0.115754485) { + var79 = 0.7431384; + } else { + var79 = 0.20561731; + } + } + } else { + if (input[5] < 22.910156) { + if (input[4] < 35.567184) { + var79 = -0.058301542; + } else { + var79 = 0.044360057; + } + } else { + if (input[2] < 0.1344459) { + var79 = 0.11465883; + } else { + var79 = -0.007405764; + } + } + } + } + } else { + if (input[4] < 32.506233) { + if (input[0] < 652.3909) { + if (input[6] < 0.027279133) { + if (input[7] < 0.0043885936) { + var79 = -0.37360397; + } else { + var79 = -0.009963691; + } + } else { + if (input[2] < 0.077218056) { + var79 = 0.49552312; + } else { + var79 = -0.027469862; + } + } + } else { + if (input[2] < 0.10654664) { + if (input[1] < 197.2326) { + var79 = -0.1715243; + } else { + var79 = 0.18294568; + } + } else { + if (input[1] < 171.54358) { + var79 = -0.09392241; + } else { + var79 = -0.52150404; + } + } + } + } else { + if (input[0] < 423.21143) { + if (input[1] < 140.762) { + if (input[4] < 38.911335) { + var79 = 0.015384628; + } else { + var79 = -0.24880172; + } + } else { + if (input[6] < 0.06669885) { + var79 = 0.4802108; + } else { + var79 = 0.09832021; + } + } + } else { + if (input[0] < 692.23615) { + if (input[6] < 0.066093825) { + var79 = -0.0126773; + } else { + var79 = 0.0032575116; + } + } else { + if (input[5] < 21.282642) { + var79 = 0.031949922; + } else { + var79 = 0.30135232; + } + } + } + } + } + } + double var80; + if (input[4] < 47.95029) { + if (input[6] < 0.0719236) { + if (input[2] < 0.17603564) { + if (input[3] < 19.0) { + if (input[6] < 0.060562886) { + if (input[2] < 0.17482603) { + var80 = -0.00034884884; + } else { + var80 = 0.12035101; + } + } else { + if (input[1] < 177.04877) { + var80 = -0.0075485497; + } else { + var80 = 0.051932544; + } + } + } else { + if (input[0] < 565.6369) { + if (input[4] < 29.959333) { + var80 = 0.13547352; + } else { + var80 = -0.12686616; + } + } else { + if (input[5] < 25.828705) { + var80 = 0.16875874; + } else { + var80 = -0.036395006; + } + } + } + } else { + if (input[7] < 0.0014543242) { + if (input[0] < 579.40393) { + var80 = 0.011788283; + } else { + var80 = 0.47281888; + } + } else { + if (input[7] < 0.0033036456) { + if (input[6] < 0.057156924) { + var80 = -0.2708071; + } else { + var80 = -0.041035317; + } + } else { + if (input[6] < 0.0529048) { + var80 = -0.14002503; + } else { + var80 = 0.009530021; + } + } + } + } + } else { + if (input[2] < 0.16471554) { + var80 = 0.34811148; + } else { + if (input[0] < 462.35693) { + if (input[4] < 35.880825) { + if (input[7] < 0.0017065624) { + var80 = 0.26733822; + } else { + var80 = 0.028530395; + } + } else { + if (input[6] < 0.07962002) { + var80 = -0.14449067; + } else { + var80 = 0.015488614; + } + } + } else { + if (input[5] < 24.27795) { + if (input[1] < 370.7329) { + var80 = -0.009032103; + } else { + var80 = 0.08320425; + } + } else { + if (input[7] < 0.0045949644) { + var80 = 0.083517954; + } else { + var80 = -0.031521123; + } + } + } + } + } + } else { + if (input[2] < 0.19949937) { + if (input[2] < 0.1030972) { + if (input[0] < 486.46512) { + if (input[0] < 477.06348) { + if (input[5] < 16.421429) { + var80 = 0.25376278; + } else { + var80 = -0.09735284; + } + } else { + var80 = -0.44031817; + } + } else { + if (input[2] < 0.08171177) { + if (input[2] < 0.069179535) { + var80 = -0.0134352455; + } else { + var80 = 0.14944172; + } + } else { + if (input[5] < 25.243595) { + var80 = 0.003686233; + } else { + var80 = -0.32753876; + } + } + } + } else { + if (input[0] < 519.08496) { + if (input[2] < 0.123589754) { + if (input[6] < 2.5102012) { + var80 = 0.36301258; + } else { + var80 = -0.0030936943; + } + } else { + if (input[2] < 0.12999964) { + var80 = -0.25058866; + } else { + var80 = 0.07527778; + } + } + } else { + if (input[3] < 12.0) { + if (input[0] < 548.1884) { + var80 = -0.15249623; + } else { + var80 = -0.0070355246; + } + } else { + if (input[1] < 197.2326) { + var80 = 0.33584154; + } else { + var80 = 0.047879953; + } + } + } + } + } else { + if (input[2] < 0.20299208) { + if (input[7] < 0.0019291723) { + if (input[0] < 500.55154) { + var80 = -0.073697634; + } else { + if (input[1] < 314.6552) { + var80 = -0.1136828; + } else { + var80 = -0.37253672; + } + } + } else { + if (input[6] < 0.062583044) { + var80 = -0.3629928; + } else { + if (input[5] < 22.79438) { + var80 = -0.17631671; + } else { + var80 = 0.19706336; + } + } + } + } else { + if (input[7] < 0.0067613916) { + if (input[3] < 16.0) { + if (input[0] < 630.6033) { + var80 = -0.048375245; + } else { + var80 = 0.024395099; + } + } else { + if (input[1] < 695.545) { + var80 = 0.035268884; + } else { + var80 = -0.029962542; + } + } + } else { + if (input[1] < 1136.2549) { + var80 = -0.4196128; + } else { + if (input[0] < 493.16626) { + var80 = -0.40138784; + } else { + var80 = 0.23180835; + } + } + } + } + } + } + double var81; + if (input[0] < 529.26776) { + if (input[0] < 528.44965) { + if (input[6] < 1.2666034) { + if (input[4] < 36.870323) { + if (input[6] < 0.06800464) { + if (input[4] < 31.022459) { + var81 = 0.000023786642; + } else { + var81 = -0.02119488; + } + } else { + if (input[7] < 0.0017720697) { + var81 = 0.13759056; + } else { + var81 = 0.031969022; + } + } + } else { + if (input[0] < 523.36316) { + if (input[6] < 0.05220808) { + var81 = 0.09379464; + } else { + var81 = -0.017224101; + } + } else { + if (input[3] < 22.0) { + var81 = -0.12411695; + } else { + var81 = 0.14065853; + } + } + } + } else { + if (input[2] < 0.08340263) { + if (input[0] < 412.7322) { + var81 = -0.29984942; + } else { + if (input[0] < 518.2562) { + var81 = -0.044024825; + } else { + var81 = -0.27682146; + } + } + } else { + if (input[5] < 29.639475) { + if (input[2] < 0.112553775) { + var81 = 0.21993805; + } else { + var81 = 0.07436571; + } + } else { + if (input[2] < 0.11508131) { + var81 = 0.12416766; + } else { + var81 = -0.29626936; + } + } + } + } + } else { + if (input[5] < 26.954847) { + if (input[4] < 15.110416) { + if (input[6] < 0.015576805) { + if (input[3] < 6.0) { + var81 = 0.0058960677; + } else { + var81 = -0.36368456; + } + } else { + var81 = 0.3278007; + } + } else { + if (input[7] < 0.004288183) { + if (input[3] < 8.0) { + var81 = -0.17917903; + } else { + var81 = 0.11111334; + } + } else { + if (input[3] < 7.0) { + var81 = -0.08097866; + } else { + var81 = -0.30493924; + } + } + } + } else { + if (input[4] < 29.561077) { + if (input[2] < 0.071531236) { + if (input[7] < 0.007260421) { + var81 = 0.3765894; + } else { + var81 = -0.031878017; + } + } else { + if (input[7] < 0.0043542767) { + var81 = 0.034564488; + } else { + var81 = -0.26981652; + } + } + } else { + if (input[6] < 0.053631432) { + var81 = 0.6309413; + } else { + var81 = -0.051138557; + } + } + } + } + } else { + if (input[0] < 530.13635) { + if (input[4] < 41.197132) { + if (input[1] < 148.36841) { + if (input[4] < 23.436337) { + if (input[1] < 73.54457) { + var81 = -0.02505766; + } else { + var81 = 0.24479258; + } + } else { + if (input[1] < 137.21216) { + var81 = -0.059186194; + } else { + var81 = -0.34568927; + } + } + } else { + if (input[7] < 0.0030103251) { + if (input[2] < 0.12225413) { + var81 = 0.09699272; + } else { + var81 = 0.5769809; + } + } else { + if (input[5] < 23.175718) { + var81 = 0.2369303; + } else { + var81 = -0.025972296; + } + } + } + } else { + if (input[1] < 489.80347) { + if (input[1] < 289.02704) { + if (input[3] < 10.0) { + var81 = -0.19606115; + } else { + var81 = 0.22279415; + } + } else { + var81 = -0.42077518; + } + } else { + var81 = 0.17334257; + } + } + } else { + if (input[6] < 0.0031386863) { + if (input[4] < 26.284737) { + if (input[1] < 117.759186) { + if (input[0] < 539.3772) { + var81 = -0.22832833; + } else { + var81 = -0.04964869; + } + } else { + if (input[0] < 580.3388) { + var81 = 0.32260644; + } else { + var81 = 0.046230763; + } + } + } else { + var81 = -0.40490335; + } + } else { + if (input[4] < 11.949299) { + if (input[5] < 27.204857) { + if (input[7] < 0.014832433) { + var81 = 0.103191845; + } else { + var81 = 0.007225188; + } + } else { + if (input[4] < 3.4118037) { + var81 = -0.30293918; + } else { + var81 = 0.10960103; + } + } + } else { + if (input[6] < 0.02455999) { + if (input[2] < 0.05491352) { + var81 = -0.0013006802; + } else { + var81 = -0.040012904; + } + } else { + if (input[7] < 0.017095413) { + var81 = 0.0042484803; + } else { + var81 = -0.06546577; + } + } + } + } + } + } + double var82; + if (input[4] < 51.153934) { + if (input[2] < 0.22563094) { + if (input[2] < 0.21310979) { + if (input[1] < 1773.3423) { + if (input[1] < 926.1219) { + if (input[3] < 21.0) { + var82 = 0.0002211003; + } else { + var82 = 0.11114671; + } + } else { + if (input[0] < 461.0655) { + var82 = -0.5277883; + } else { + var82 = -0.03236633; + } + } + } else { + var82 = 0.22935446; + } + } else { + if (input[0] < 481.2571) { + if (input[1] < 141.05981) { + if (input[5] < 26.80431) { + var82 = 0.19877411; + } else { + var82 = -0.31884277; + } + } else { + if (input[7] < 0.0028793188) { + var82 = -0.26508653; + } else { + var82 = -0.060343277; + } + } + } else { + if (input[0] < 603.44226) { + if (input[1] < 229.68715) { + var82 = -0.09561549; + } else { + var82 = 0.0738962; + } + } else { + if (input[0] < 637.80457) { + var82 = -0.22196199; + } else { + var82 = 0.011758008; + } + } + } + } + } else { + if (input[0] < 507.74713) { + if (input[5] < 18.949379) { + if (input[3] < 9.0) { + if (input[1] < 266.53317) { + var82 = 0.10335616; + } else { + var82 = -0.22353214; + } + } else { + if (input[4] < 40.86154) { + var82 = 0.05075158; + } else { + var82 = 0.3065678; + } + } + } else { + if (input[4] < 34.13175) { + if (input[6] < 0.060177866) { + var82 = -0.0707722; + } else { + var82 = 0.22742389; + } + } else { + if (input[0] < 503.25986) { + var82 = -0.0057148924; + } else { + var82 = -0.1361027; + } + } + } + } else { + if (input[2] < 0.24309075) { + if (input[7] < 0.0017065624) { + if (input[5] < 20.215801) { + var82 = -0.069648854; + } else { + var82 = 0.46206692; + } + } else { + if (input[5] < 28.479513) { + var82 = 0.08146904; + } else { + var82 = -0.16380334; + } + } + } else { + if (input[1] < 252.84729) { + if (input[5] < 21.124035) { + var82 = -0.057964455; + } else { + var82 = -0.2847973; + } + } else { + if (input[6] < 0.07288235) { + var82 = -0.058482066; + } else { + var82 = 0.078338854; + } + } + } + } + } + } else { + if (input[0] < 431.5945) { + if (input[2] < 0.070949554) { + if (input[1] < 117.295654) { + var82 = -0.22305955; + } else { + var82 = 0.05810886; + } + } else { + if (input[1] < 269.17102) { + if (input[2] < 0.112553775) { + if (input[1] < 151.1117) { + var82 = 0.4852397; + } else { + var82 = 0.14538643; + } + } else { + if (input[1] < 150.89111) { + var82 = -0.0049922722; + } else { + var82 = 0.23872228; + } + } + } else { + if (input[2] < 0.19782853) { + if (input[2] < 0.16058685) { + var82 = 0.03146452; + } else { + var82 = -0.31298712; + } + } else { + if (input[2] < 0.32127088) { + var82 = 0.2640342; + } else { + var82 = -0.124367364; + } + } + } + } + } else { + if (input[7] < 0.00513642) { + if (input[3] < 22.0) { + if (input[7] < 0.0030890324) { + if (input[7] < 0.0028526676) { + var82 = -0.020805972; + } else { + var82 = 0.1451859; + } + } else { + if (input[6] < 0.06669885) { + var82 = 0.19800338; + } else { + var82 = -0.17195709; + } + } + } else { + if (input[1] < 695.545) { + if (input[1] < 521.543) { + var82 = 0.038659383; + } else { + var82 = 0.24482405; + } + } else { + if (input[6] < 0.064966485) { + var82 = -0.29862383; + } else { + var82 = 0.009470717; + } + } + } + } else { + if (input[3] < 28.0) { + var82 = -0.32618406; + } else { + if (input[0] < 493.16626) { + var82 = -0.34122893; + } else { + if (input[3] < 51.0) { + var82 = -0.07727573; + } else { + var82 = 0.22132917; + } + } + } + } + } + } + double var83; + if (input[1] < 121.57103) { + if (input[3] < 12.0) { + if (input[4] < 35.880825) { + if (input[4] < 33.48405) { + if (input[4] < 32.860813) { + if (input[1] < 120.35962) { + var83 = -0.001241904; + } else { + var83 = -0.035963666; + } + } else { + if (input[5] < 19.524868) { + var83 = -0.28415784; + } else { + var83 = -0.025404913; + } + } + } else { + if (input[2] < 0.11770642) { + if (input[5] < 24.579962) { + var83 = 0.08872835; + } else { + var83 = 0.40110424; + } + } else { + if (input[5] < 19.73429) { + var83 = -0.09609551; + } else { + var83 = 0.07604921; + } + } + } + } else { + if (input[7] < 0.0030364501) { + if (input[3] < 9.0) { + if (input[0] < 658.2878) { + var83 = -0.030221865; + } else { + var83 = 0.10790954; + } + } else { + if (input[1] < 117.295654) { + var83 = -0.23671052; + } else { + var83 = 0.14877161; + } + } + } else { + if (input[4] < 41.197132) { + if (input[7] < 0.0064245304) { + var83 = -0.23384161; + } else { + var83 = -0.006261093; + } + } else { + var83 = 0.12522067; + } + } + } + } else { + if (input[1] < 117.95654) { + if (input[5] < 19.473267) { + var83 = 0.32006636; + } else { + if (input[5] < 22.79438) { + if (input[2] < 0.112553775) { + var83 = 0.18421584; + } else { + var83 = -0.173729; + } + } else { + if (input[1] < 78.21661) { + var83 = 0.38239738; + } else { + var83 = 0.050505195; + } + } + } + } else { + var83 = -0.036955584; + } + } + } else { + if (input[1] < 138.27072) { + if (input[0] < 524.19574) { + if (input[0] < 498.7337) { + if (input[0] < 492.25522) { + if (input[7] < 0.0019773336) { + var83 = -0.13061719; + } else { + var83 = 0.027518542; + } + } else { + if (input[5] < 16.674982) { + var83 = -0.21420927; + } else { + var83 = 0.22215198; + } + } + } else { + if (input[6] < 0.05220808) { + if (input[7] < 0.0067613916) { + var83 = -0.26688516; + } else { + var83 = 0.037099928; + } + } else { + if (input[6] < 0.064966485) { + var83 = 0.23089918; + } else { + var83 = -0.15755573; + } + } + } + } else { + if (input[3] < 6.0) { + if (input[5] < 24.320927) { + if (input[7] < 0.0019291723) { + var83 = 0.35611457; + } else { + var83 = -0.06018174; + } + } else { + if (input[2] < 0.09952295) { + var83 = 0.17724542; + } else { + var83 = -0.08041275; + } + } + } else { + if (input[5] < 17.003792) { + if (input[0] < 537.7245) { + var83 = 0.0037689302; + } else { + var83 = 0.349204; + } + } else { + if (input[6] < 0.0387992) { + var83 = 0.036183316; + } else { + var83 = 0.16191877; + } + } + } + } + } else { + if (input[1] < 140.95532) { + if (input[5] < 26.80431) { + if (input[6] < 0.031193787) { + if (input[4] < 13.317816) { + var83 = 0.06250535; + } else { + var83 = -0.123598754; + } + } else { + if (input[7] < 0.0021675183) { + var83 = -0.11826864; + } else { + var83 = -0.001695098; + } + } + } else { + if (input[2] < 0.08340263) { + if (input[7] < 0.009376955) { + var83 = 0.1609269; + } else { + var83 = 0.004427244; + } + } else { + if (input[7] < 0.0041255937) { + var83 = 0.054379523; + } else { + var83 = -0.079439595; + } + } + } + } else { + if (input[1] < 147.89758) { + if (input[5] < 25.345476) { + if (input[1] < 143.84497) { + var83 = -0.033499382; + } else { + var83 = 0.092382245; + } + } else { + if (input[0] < 454.6105) { + var83 = 0.003698233; + } else { + var83 = 0.09999345; + } + } + } else { + if (input[0] < 497.7732) { + if (input[1] < 149.04504) { + var83 = -0.11357882; + } else { + var83 = -0.0062642284; + } + } else { + if (input[1] < 150.89111) { + var83 = 0.04326854; + } else { + var83 = 0.0011338859; + } + } + } + } + } + } + double var84; + if (input[4] < 25.647543) { + if (input[7] < 0.0025152762) { + if (input[5] < 19.358892) { + if (input[5] < 18.296543) { + if (input[4] < 24.85689) { + if (input[5] < 13.871245) { + var84 = 0.11335642; + } else { + var84 = -0.1541538; + } + } else { + if (input[5] < 15.865071) { + var84 = 0.2718366; + } else { + var84 = 0.024507957; + } + } + } else { + if (input[0] < 537.7245) { + var84 = 0.43931833; + } else { + var84 = -0.02127083; + } + } + } else { + if (input[6] < 0.0067773927) { + if (input[0] < 563.9471) { + var84 = -0.030533554; + } else { + var84 = 0.27592906; + } + } else { + if (input[0] < 623.2792) { + if (input[4] < 23.702576) { + var84 = -0.014873241; + } else { + var84 = -0.20326564; + } + } else { + var84 = 0.12051498; + } + } + } + } else { + if (input[6] < 0.042833522) { + if (input[3] < 8.0) { + if (input[2] < 0.113165736) { + if (input[2] < 0.095043175) { + var84 = -0.000048118938; + } else { + var84 = -0.03419309; + } + } else { + if (input[6] < 0.04246912) { + var84 = 0.18849343; + } else { + var84 = -0.1734986; + } + } + } else { + if (input[7] < 0.00513642) { + if (input[6] < 0.039893262) { + var84 = 0.14217772; + } else { + var84 = -0.06645435; + } + } else { + if (input[0] < 516.5424) { + var84 = -0.041536238; + } else { + var84 = 0.017580045; + } + } + } + } else { + if (input[0] < 566.57983) { + if (input[0] < 534.41846) { + if (input[7] < 0.012781371) { + var84 = 0.03421063; + } else { + var84 = -0.04514378; + } + } else { + if (input[4] < 25.466583) { + var84 = -0.15673277; + } else { + var84 = 0.20547883; + } + } + } else { + if (input[5] < 22.724154) { + if (input[7] < 0.0044915546) { + var84 = 0.59894514; + } else { + var84 = 0.1215269; + } + } else { + if (input[0] < 570.25055) { + var84 = 0.00788737; + } else { + var84 = 0.1469546; + } + } + } + } + } + } else { + if (input[6] < 0.006028899) { + if (input[4] < 26.561974) { + var84 = 0.2394215; + } else { + if (input[0] < 624.53723) { + if (input[6] < 0.0031386863) { + var84 = -0.009138238; + } else { + var84 = -0.35963032; + } + } else { + if (input[4] < 28.077848) { + if (input[5] < 20.922693) { + var84 = -0.4311739; + } else { + var84 = -0.05415193; + } + } else { + if (input[5] < 25.194532) { + var84 = 0.25270072; + } else { + var84 = -0.034297682; + } + } + } + } + } else { + if (input[2] < 0.015113175) { + if (input[6] < 0.066093825) { + if (input[5] < 19.066538) { + if (input[0] < 526.7187) { + var84 = 0.07047547; + } else { + var84 = -0.23297338; + } + } else { + if (input[3] < 6.0) { + var84 = 0.63423526; + } else { + var84 = 0.12871505; + } + } + } else { + if (input[0] < 451.8147) { + if (input[5] < 22.351292) { + var84 = -0.04870675; + } else { + var84 = -0.19801626; + } + } else { + if (input[4] < 1054.0984) { + var84 = 0.22926474; + } else { + var84 = -0.16052689; + } + } + } + } else { + if (input[2] < 0.02465272) { + if (input[1] < 171.00562) { + if (input[1] < 56.088257) { + var84 = 0.12325505; + } else { + var84 = -0.22017416; + } + } else { + if (input[0] < 549.0806) { + var84 = -0.23257159; + } else { + var84 = 0.15681799; + } + } + } else { + if (input[7] < 0.002768994) { + if (input[4] < 26.937609) { + var84 = 0.10884824; + } else { + var84 = 0.0036356584; + } + } else { + if (input[2] < 0.037257552) { + var84 = 0.07096387; + } else { + var84 = -0.006668178; + } + } + } + } + } + } + double var85; + if (input[1] < 174.33795) { + if (input[1] < 173.7774) { + if (input[1] < 171.54358) { + if (input[1] < 171.00562) { + if (input[1] < 168.27454) { + if (input[1] < 153.67346) { + var85 = -0.00046469737; + } else { + var85 = -0.0669425; + } + } else { + if (input[0] < 651.1857) { + var85 = 0.0741464; + } else { + var85 = -0.09467495; + } + } + } else { + if (input[4] < 15.318433) { + if (input[4] < 13.317816) { + var85 = -0.03982735; + } else { + var85 = -0.33487925; + } + } else { + if (input[0] < 569.34753) { + var85 = 0.02443198; + } else { + var85 = -0.064014606; + } + } + } + } else { + if (input[0] < 488.4354) { + if (input[6] < 0.0413519) { + if (input[5] < 24.029337) { + var85 = 0.28477493; + } else { + var85 = -0.18609884; + } + } else { + if (input[5] < 17.826921) { + var85 = 0.028114766; + } else { + var85 = -0.25542417; + } + } + } else { + if (input[4] < 28.556541) { + if (input[7] < 0.027495267) { + var85 = -0.00038482936; + } else { + var85 = 0.27554494; + } + } else { + if (input[4] < 32.391514) { + var85 = 0.2412465; + } else { + var85 = 0.034457847; + } + } + } + } + } else { + if (input[3] < 6.0) { + if (input[4] < 21.8254) { + if (input[7] < 0.01615975) { + if (input[7] < 0.006371418) { + var85 = -0.3314619; + } else { + var85 = -0.14030178; + } + } else { + if (input[2] < 0.030371785) { + var85 = 0.36561754; + } else { + var85 = -0.12141258; + } + } + } else { + if (input[7] < 0.0029851033) { + if (input[4] < 30.584093) { + var85 = -0.244251; + } else { + var85 = 0.14159474; + } + } else { + if (input[1] < 174.1648) { + var85 = 0.112593435; + } else { + var85 = 0.37533787; + } + } + } + } else { + if (input[6] < 0.02506348) { + if (input[7] < 0.014832433) { + if (input[0] < 567.47864) { + var85 = 0.18587473; + } else { + var85 = -0.018199507; + } + } else { + if (input[5] < 24.495958) { + var85 = -0.045408536; + } else { + var85 = -0.42995897; + } + } + } else { + if (input[7] < 0.012117223) { + if (input[6] < 0.03138759) { + var85 = -0.15382987; + } else { + var85 = -0.057811048; + } + } else { + if (input[7] < 0.015065861) { + var85 = 0.35321587; + } else { + var85 = -0.04000726; + } + } + } + } + } + } else { + if (input[1] < 175.14758) { + if (input[3] < 7.0) { + if (input[0] < 648.74475) { + if (input[0] < 492.25522) { + if (input[2] < 0.085624695) { + var85 = 0.35513029; + } else { + var85 = -0.14685147; + } + } else { + if (input[4] < 25.28896) { + var85 = -0.21941878; + } else { + var85 = -0.057123948; + } + } + } else { + if (input[5] < 21.362978) { + if (input[4] < 23.884483) { + var85 = 0.2369085; + } else { + var85 = -0.25723088; + } + } else { + if (input[4] < 18.961548) { + var85 = -0.18010889; + } else { + var85 = 0.3028966; + } + } + } + } else { + if (input[2] < 0.10423684) { + if (input[6] < 0.016361425) { + if (input[5] < 22.758417) { + var85 = 0.16688684; + } else { + var85 = -0.34366605; + } + } else { + if (input[0] < 677.4847) { + var85 = 0.27742672; + } else { + var85 = -0.008372313; + } + } + } else { + if (input[4] < 43.352867) { + if (input[7] < 0.0025715097) { + var85 = -0.20161833; + } else { + var85 = 0.05665889; + } + } else { + if (input[5] < 21.44003) { + var85 = 0.06782242; + } else { + var85 = 0.5608564; + } + } + } + } + } else { + if (input[0] < 692.23615) { + if (input[1] < 176.75247) { + if (input[4] < 25.736258) { + if (input[1] < 176.52954) { + var85 = -0.007905893; + } else { + var85 = -0.17172955; + } + } else { + if (input[6] < 0.043922033) { + var85 = 0.09491208; + } else { + var85 = -0.058697198; + } + } + } else { + if (input[7] < 0.014142963) { + if (input[4] < 13.317816) { + var85 = -0.13204184; + } else { + var85 = 0.0014290791; + } + } else { + if (input[5] < 18.574848) { + var85 = 0.10734584; + } else { + var85 = 0.01919464; + } + } + } + } else { + if (input[7] < 0.0046657408) { + if (input[2] < 0.11964327) { + if (input[5] < 20.52871) { + var85 = 0.13186139; + } else { + var85 = -0.16414475; + } + } else { + var85 = 0.3043002; + } + } else { + if (input[5] < 15.711394) { + var85 = -0.08717108; + } else { + if (input[1] < 381.45337) { + var85 = 0.27456647; + } else { + var85 = 0.013700531; + } + } + } + } + } + } + double var86; + if (input[4] < 3.4118037) { + if (input[0] < 579.40393) { + if (input[3] < 6.0) { + if (input[0] < 557.74005) { + if (input[6] < 0.0017816098) { + if (input[5] < 17.21217) { + var86 = 0.22309946; + } else { + var86 = -0.067090064; + } + } else { + if (input[0] < 427.4725) { + var86 = 0.2607698; + } else { + var86 = 0.0773246; + } + } + } else { + if (input[0] < 563.9471) { + var86 = -0.32299215; + } else { + if (input[6] < 0.0017816098) { + var86 = 0.13179539; + } else { + var86 = -0.1409906; + } + } + } + } else { + if (input[5] < 19.831963) { + if (input[0] < 479.1913) { + var86 = -0.12491114; + } else { + var86 = -0.5206858; + } + } else { + if (input[3] < 7.0) { + if (input[0] < 495.01468) { + var86 = -0.042927645; + } else { + var86 = 0.19761106; + } + } else { + var86 = -0.23958458; + } + } + } + } else { + if (input[5] < 27.29118) { + if (input[5] < 22.871712) { + if (input[5] < 21.553902) { + if (input[5] < 20.439903) { + var86 = 0.07619694; + } else { + var86 = 0.24715441; + } + } else { + if (input[5] < 21.785055) { + var86 = -0.277349; + } else { + var86 = 0.06332371; + } + } + } else { + if (input[0] < 647.514) { + var86 = 0.3140201; + } else { + var86 = 0.08335723; + } + } + } else { + if (input[5] < 28.225248) { + var86 = -0.18848537; + } else { + var86 = 0.06669582; + } + } + } + } else { + if (input[1] < 59.12854) { + if (input[7] < 0.0023617237) { + if (input[0] < 530.9707) { + if (input[5] < 22.020842) { + if (input[4] < 31.022459) { + var86 = 0.15289392; + } else { + var86 = -0.058827784; + } + } else { + if (input[5] < 29.853495) { + var86 = -0.14767249; + } else { + var86 = 0.23369212; + } + } + } else { + if (input[0] < 673.89215) { + if (input[5] < 22.210117) { + var86 = 0.027538983; + } else { + var86 = 0.186441; + } + } else { + if (input[5] < 20.794724) { + var86 = 0.08241996; + } else { + var86 = -0.36462355; + } + } + } + } else { + if (input[7] < 0.0024834909) { + if (input[2] < 0.08340263) { + if (input[4] < 23.25789) { + var86 = -0.0056996904; + } else { + var86 = -0.28449515; + } + } else { + if (input[5] < 20.750168) { + var86 = 0.17743488; + } else { + var86 = -0.19711505; + } + } + } else { + if (input[2] < 0.10014308) { + if (input[4] < 24.686386) { + var86 = -0.009072068; + } else { + var86 = 0.038331714; + } + } else { + if (input[1] < 55.566917) { + var86 = -0.0072192373; + } else { + var86 = -0.14180285; + } + } + } + } + } else { + if (input[4] < 24.50498) { + if (input[7] < 0.004254316) { + if (input[3] < 7.0) { + if (input[0] < 692.23615) { + var86 = 0.025940428; + } else { + var86 = -0.45933732; + } + } else { + if (input[2] < 0.09282713) { + var86 = 0.282679; + } else { + var86 = 0.036842957; + } + } + } else { + if (input[0] < 692.23615) { + if (input[2] < 0.11964327) { + var86 = 0.0017284896; + } else { + var86 = 0.050059102; + } + } else { + if (input[5] < 19.358892) { + var86 = -0.02261941; + } else { + var86 = 0.21771844; + } + } + } + } else { + if (input[6] < 0.014341843) { + if (input[5] < 16.148563) { + if (input[0] < 550.7292) { + var86 = -0.18740809; + } else { + var86 = 0.24761544; + } + } else { + if (input[1] < 151.58571) { + var86 = -0.16814637; + } else { + var86 = -0.026108215; + } + } + } else { + if (input[2] < 0.033970356) { + if (input[4] < 27.324759) { + var86 = 0.52746624; + } else { + var86 = 0.08311454; + } + } else { + if (input[1] < 76.01593) { + var86 = 0.056839798; + } else { + var86 = -0.002701214; + } + } + } + } + } + } + double var87; + if (input[6] < 0.054671705) { + if (input[2] < 0.1399374) { + if (input[3] < 14.0) { + if (input[1] < 733.3856) { + if (input[1] < 670.473) { + if (input[2] < 0.10250798) { + var87 = 0.001213974; + } else { + var87 = -0.0067814104; + } + } else { + if (input[0] < 524.19574) { + var87 = -0.14379382; + } else { + var87 = 0.27096772; + } + } + } else { + var87 = -0.28345457; + } + } else { + if (input[0] < 535.2388) { + if (input[7] < 0.009173502) { + if (input[1] < 196.52942) { + var87 = 0.01219979; + } else { + var87 = 0.35587752; + } + } else { + if (input[4] < 22.990046) { + var87 = 0.19606334; + } else { + var87 = -0.21129604; + } + } + } else { + if (input[0] < 638.9881) { + if (input[6] < 0.045989174) { + var87 = -0.055148244; + } else { + var87 = 0.21208756; + } + } else { + if (input[4] < 36.70546) { + var87 = 0.18359815; + } else { + var87 = -0.055625968; + } + } + } + } + } else { + if (input[0] < 613.5429) { + if (input[4] < 33.99941) { + if (input[6] < 0.044864837) { + if (input[5] < 24.812592) { + var87 = -0.36040562; + } else { + var87 = 0.007036318; + } + } else { + if (input[0] < 519.94336) { + var87 = -0.03981133; + } else { + var87 = 0.028609633; + } + } + } else { + if (input[3] < 14.0) { + if (input[0] < 611.31836) { + var87 = -0.11317775; + } else { + var87 = -0.39650336; + } + } else { + if (input[0] < 584.10345) { + var87 = 0.103609204; + } else { + var87 = -0.10982039; + } + } + } + } else { + if (input[5] < 29.440952) { + if (input[1] < 227.6239) { + if (input[1] < 196.52942) { + var87 = 0.046874605; + } else { + var87 = -0.22988181; + } + } else { + if (input[4] < 34.82185) { + var87 = 0.16345336; + } else { + var87 = 0.020385731; + } + } + } else { + if (input[5] < 29.853495) { + var87 = -0.48494154; + } else { + if (input[6] < 0.049576316) { + var87 = 0.09176852; + } else { + var87 = -0.28947562; + } + } + } + } + } + } else { + if (input[6] < 0.05573149) { + if (input[0] < 462.35693) { + if (input[3] < 6.0) { + if (input[7] < 0.004189696) { + if (input[4] < 26.561974) { + var87 = 0.16153198; + } else { + var87 = -0.24998002; + } + } else { + if (input[4] < 23.884483) { + var87 = -0.053192433; + } else { + var87 = -0.494632; + } + } + } else { + if (input[2] < 0.12643456) { + if (input[6] < 0.05493398) { + var87 = 0.0054803044; + } else { + var87 = 0.2945843; + } + } else { + if (input[2] < 0.13911271) { + var87 = -0.17059815; + } else { + var87 = 0.1076436; + } + } + } + } else { + if (input[0] < 478.12262) { + if (input[1] < 118.04906) { + if (input[7] < 0.0033882342) { + var87 = 0.8049079; + } else { + var87 = 0.054205336; + } + } else { + if (input[1] < 197.2326) { + var87 = -0.000743057; + } else { + var87 = 0.36491305; + } + } + } else { + if (input[7] < 0.0038169443) { + if (input[7] < 0.0030629286) { + var87 = 0.05131099; + } else { + var87 = 0.17948276; + } + } else { + if (input[7] < 0.0047754645) { + var87 = -0.095654465; + } else { + var87 = 0.04471992; + } + } + } + } + } else { + if (input[4] < 31.804214) { + if (input[0] < 531.8526) { + if (input[1] < 143.61688) { + if (input[2] < 0.1336906) { + var87 = 0.1281375; + } else { + var87 = 0.03766806; + } + } else { + if (input[2] < 0.1344459) { + var87 = -0.1933285; + } else { + var87 = 0.009850403; + } + } + } else { + if (input[2] < 0.14311361) { + if (input[5] < 20.215801) { + var87 = -0.08271117; + } else { + var87 = -0.34099433; + } + } else { + if (input[7] < 0.0030890324) { + var87 = 0.10553294; + } else { + var87 = -0.20525621; + } + } + } + } else { + if (input[3] < 8.0) { + if (input[2] < 0.12643456) { + if (input[7] < 0.000007795067) { + var87 = -0.010054734; + } else { + var87 = 0.31397426; + } + } else { + if (input[2] < 0.1399374) { + var87 = -0.096519984; + } else { + var87 = -0.014380611; + } + } + } else { + if (input[6] < 0.05601607) { + if (input[3] < 11.0) { + var87 = -0.30473807; + } else { + var87 = 0.024693789; + } + } else { + if (input[2] < 0.15468198) { + var87 = 0.06078252; + } else { + var87 = 0.0031821402; + } + } + } + } + } + } + double var88; + if (input[6] < 0.03715515) { + if (input[2] < 0.098368645) { + if (input[3] < 12.0) { + if (input[4] < 34.26512) { + if (input[7] < 0.0048549008) { + if (input[1] < 289.02704) { + var88 = -0.017228598; + } else { + var88 = 0.046018187; + } + } else { + if (input[7] < 0.0050930274) { + var88 = 0.04908065; + } else { + var88 = -0.0007997094; + } + } + } else { + if (input[2] < 0.019446373) { + if (input[5] < 23.026451) { + var88 = -0.40142766; + } else { + var88 = -0.028914005; + } + } else { + if (input[0] < 660.6031) { + var88 = 0.056423254; + } else { + var88 = -0.08937368; + } + } + } + } else { + if (input[0] < 501.43326) { + if (input[4] < 19.354155) { + var88 = 0.034910813; + } else { + var88 = 0.37383592; + } + } else { + if (input[2] < 0.07835859) { + if (input[7] < 0.008892193) { + var88 = 0.26012313; + } else { + var88 = -0.052771248; + } + } else { + if (input[4] < 23.075237) { + var88 = 0.25715312; + } else { + var88 = -0.06894527; + } + } + } + } + } else { + if (input[1] < 78.60242) { + if (input[0] < 587.03827) { + var88 = 0.52713287; + } else { + if (input[1] < 76.13782) { + var88 = 0.1664624; + } else { + var88 = -0.09663724; + } + } + } else { + if (input[1] < 199.2757) { + if (input[5] < 15.865071) { + if (input[4] < 25.920425) { + var88 = -0.035870954; + } else { + var88 = 0.2878754; + } + } else { + if (input[5] < 19.358892) { + var88 = -0.34096953; + } else { + var88 = -0.115861; + } + } + } else { + if (input[5] < 28.225248) { + if (input[2] < 0.10014308) { + var88 = -0.15006153; + } else { + var88 = -0.02074114; + } + } else { + if (input[5] < 28.613876) { + var88 = 0.43150046; + } else { + var88 = 0.05009861; + } + } + } + } + } + } else { + if (input[4] < 20.996748) { + if (input[6] < 0.038605858) { + if (input[0] < 468.29953) { + if (input[7] < 0.008720319) { + if (input[1] < 137.21216) { + var88 = -0.028255388; + } else { + var88 = -0.25801143; + } + } else { + if (input[4] < 18.55459) { + var88 = 0.16884622; + } else { + var88 = -0.18660638; + } + } + } else { + if (input[1] < 194.25922) { + if (input[1] < 79.2583) { + var88 = 0.21885116; + } else { + var88 = -0.04074518; + } + } else { + if (input[0] < 481.2571) { + var88 = -0.0054003773; + } else { + var88 = 0.33016032; + } + } + } + } else { + if (input[4] < 17.552475) { + if (input[6] < 0.042284492) { + if (input[0] < 429.60077) { + var88 = 0.32319236; + } else { + var88 = 0.02216079; + } + } else { + var88 = -0.104548536; + } + } else { + if (input[0] < 518.2562) { + if (input[0] < 490.3461) { + var88 = 0.056453858; + } else { + var88 = -0.07813782; + } + } else { + if (input[7] < 0.005309737) { + var88 = 0.488477; + } else { + var88 = 0.065051645; + } + } + } + } + } else { + if (input[0] < 437.31543) { + if (input[6] < 0.040101185) { + if (input[7] < 0.0037865257) { + if (input[5] < 25.999264) { + var88 = 0.546916; + } else { + var88 = -0.021719392; + } + } else { + if (input[1] < 229.68715) { + var88 = -0.108017534; + } else { + var88 = 0.30433244; + } + } + } else { + if (input[6] < 0.049576316) { + if (input[1] < 115.84448) { + var88 = -0.19040892; + } else { + var88 = -0.03547328; + } + } else { + if (input[4] < 21.8254) { + var88 = 0.24619; + } else { + var88 = -0.013567912; + } + } + } + } else { + if (input[6] < 0.037520245) { + if (input[0] < 527.5794) { + if (input[2] < 0.082273126) { + var88 = 0.2298152; + } else { + var88 = -0.15082632; + } + } else { + if (input[0] < 628.1736) { + var88 = 0.04805851; + } else { + var88 = 0.17725876; + } + } + } else { + if (input[1] < 121.57103) { + if (input[1] < 117.759186) { + var88 = 0.0022414995; + } else { + var88 = -0.039624855; + } + } else { + if (input[1] < 137.9049) { + var88 = 0.07270918; + } else { + var88 = 0.0031252997; + } + } + } + } + } + } + double var89; + if (input[4] < 43.929493) { + if (input[6] < 0.07519955) { + if (input[0] < 423.21143) { + if (input[4] < 31.920088) { + if (input[6] < 0.07021791) { + if (input[2] < 0.1772592) { + var89 = -0.010607643; + } else { + var89 = -0.20866005; + } + } else { + if (input[0] < 420.89536) { + var89 = 0.17767107; + } else { + var89 = -0.15025856; + } + } + } else { + if (input[4] < 33.10718) { + if (input[5] < 21.362978) { + var89 = -0.011900977; + } else { + var89 = -0.3564781; + } + } else { + if (input[3] < 8.0) { + var89 = -0.08350132; + } else { + var89 = 0.35215592; + } + } + } + } else { + if (input[0] < 425.37012) { + if (input[5] < 25.942757) { + if (input[5] < 25.60802) { + var89 = 0.030879548; + } else { + var89 = -0.3250026; + } + } else { + if (input[5] < 26.65595) { + var89 = 0.35267025; + } else { + var89 = 0.05598735; + } + } + } else { + if (input[6] < 0.041724283) { + if (input[2] < 0.11193323) { + var89 = -0.0010291359; + } else { + var89 = -0.04094383; + } + } else { + if (input[2] < 0.10128081) { + var89 = 0.055216487; + } else { + var89 = 0.0013719809; + } + } + } + } + } else { + if (input[7] < 0.0027962627) { + if (input[7] < 0.0023330299) { + if (input[7] < 0.0022020095) { + if (input[1] < 117.87097) { + var89 = -0.08778952; + } else { + var89 = 0.066484734; + } + } else { + if (input[4] < 34.974888) { + var89 = 0.15463547; + } else { + var89 = -0.182946; + } + } + } else { + if (input[0] < 506.8112) { + if (input[0] < 494.08887) { + var89 = 0.12477607; + } else { + var89 = -0.27982935; + } + } else { + var89 = 0.45472565; + } + } + } else { + if (input[1] < 381.45337) { + if (input[3] < 12.0) { + if (input[7] < 0.0028526676) { + var89 = -0.25999692; + } else { + var89 = 0.00041613833; + } + } else { + if (input[4] < 38.459763) { + var89 = 0.07493716; + } else { + var89 = -0.3341088; + } + } + } else { + if (input[2] < 0.22023034) { + if (input[7] < 0.0034446886) { + var89 = -0.38986456; + } else { + var89 = 0.0850414; + } + } else { + if (input[3] < 18.0) { + var89 = 0.20365581; + } else { + var89 = -0.01627143; + } + } + } + } + } + } else { + if (input[7] < 0.0047754645) { + if (input[1] < 148.60223) { + if (input[6] < 0.087597266) { + if (input[0] < 606.81464) { + if (input[5] < 16.792095) { + var89 = -0.053001884; + } else { + var89 = -0.32513678; + } + } else { + if (input[1] < 81.83862) { + var89 = -0.13483438; + } else { + var89 = 0.20062411; + } + } + } else { + if (input[7] < 0.0018289244) { + if (input[7] < 0.0014543242) { + var89 = -0.00961164; + } else { + var89 = -0.25198993; + } + } else { + if (input[0] < 418.34677) { + var89 = -0.19330889; + } else { + var89 = 0.18536574; + } + } + } + } else { + if (input[1] < 196.73734) { + if (input[5] < 23.026451) { + if (input[1] < 177.04877) { + var89 = 0.04373223; + } else { + var89 = 0.17553368; + } + } else { + if (input[5] < 23.947874) { + var89 = -0.21372649; + } else { + var89 = 0.022359353; + } + } + } else { + if (input[5] < 30.710585) { + if (input[5] < 28.908257) { + var89 = -0.008285546; + } else { + var89 = -0.10522911; + } + } else { + if (input[6] < 0.06669885) { + var89 = -0.069511965; + } else { + var89 = 0.20217475; + } + } + } + } + } else { + if (input[2] < 0.22023034) { + if (input[5] < 27.670492) { + if (input[3] < 24.0) { + if (input[5] < 20.617947) { + var89 = 0.0297372; + } else { + var89 = -0.45688298; + } + } else { + if (input[7] < 0.0054437453) { + var89 = 0.14956032; + } else { + var89 = -0.20791602; + } + } + } else { + var89 = 0.06833861; + } + } else { + if (input[2] < 0.22853947) { + if (input[6] < 0.07288235) { + var89 = 0.36151716; + } else { + var89 = -0.022716587; + } + } else { + if (input[1] < 659.8392) { + if (input[1] < 344.88092) { + var89 = 0.08974477; + } else { + var89 = -0.3020404; + } + } else { + if (input[4] < 51.153934) { + var89 = 0.13430095; + } else { + var89 = -0.13566507; + } + } + } + } + } + } + double var90; + if (input[1] < 81.83862) { + if (input[5] < 25.999264) { + if (input[3] < 12.0) { + if (input[2] < 0.16901255) { + if (input[5] < 25.7722) { + if (input[2] < 0.052720726) { + var90 = 0.004717452; + } else { + var90 = -0.0110362815; + } + } else { + if (input[7] < 0.002544325) { + var90 = -0.20699602; + } else { + var90 = 0.088833556; + } + } + } else { + if (input[2] < 0.28529787) { + if (input[0] < 473.86905) { + var90 = -0.024626018; + } else { + var90 = -0.2674594; + } + } else { + var90 = 0.034789145; + } + } + } else { + if (input[6] < 0.041007258) { + if (input[2] < 0.09282713) { + var90 = 0.1544882; + } else { + var90 = -0.11128534; + } + } else { + if (input[1] < 79.007324) { + if (input[4] < 38.68964) { + var90 = 0.33311167; + } else { + var90 = 0.085273854; + } + } else { + var90 = 0.05902942; + } + } + } + } else { + if (input[5] < 26.446224) { + if (input[4] < 25.02411) { + if (input[4] < 7.9895897) { + if (input[5] < 26.244675) { + var90 = -0.17205177; + } else { + var90 = 0.27608708; + } + } else { + if (input[7] < 0.003554517) { + var90 = 0.047619198; + } else { + var90 = -0.17066094; + } + } + } else { + if (input[4] < 25.379398) { + var90 = 0.48091975; + } else { + if (input[1] < 78.76117) { + var90 = 0.06580829; + } else { + var90 = -0.23035711; + } + } + } + } else { + if (input[5] < 26.726051) { + if (input[7] < 0.010113142) { + if (input[7] < 0.0046657408) { + var90 = 0.07573573; + } else { + var90 = -0.120207205; + } + } else { + if (input[2] < 0.032770157) { + var90 = 0.100229025; + } else { + var90 = 0.55150944; + } + } + } else { + if (input[7] < 0.0015539197) { + if (input[1] < 76.01593) { + var90 = -0.3108106; + } else { + var90 = -0.016448788; + } + } else { + if (input[0] < 677.4847) { + var90 = -0.022770002; + } else { + var90 = 0.16478123; + } + } + } + } + } + } else { + if (input[1] < 114.94299) { + if (input[0] < 675.009) { + if (input[5] < 20.617947) { + if (input[5] < 19.473267) { + if (input[7] < 0.005177345) { + var90 = -0.028705887; + } else { + var90 = 0.1180362; + } + } else { + if (input[5] < 20.215801) { + var90 = 0.38947958; + } else { + var90 = 0.1106116; + } + } + } else { + if (input[0] < 468.29953) { + if (input[2] < 0.06435102) { + var90 = 0.2649214; + } else { + var90 = 0.019444734; + } + } else { + if (input[0] < 485.39822) { + var90 = -0.17474675; + } else { + var90 = 0.021871075; + } + } + } + } else { + var90 = -0.26572117; + } + } else { + if (input[4] < 22.235271) { + if (input[0] < 677.4847) { + if (input[7] < 0.005805585) { + if (input[1] < 348.1612) { + var90 = 0.029961983; + } else { + var90 = 0.39431426; + } + } else { + if (input[2] < 0.100723624) { + var90 = -0.0021485656; + } else { + var90 = 0.05872705; + } + } + } else { + if (input[3] < 11.0) { + if (input[2] < 0.023036957) { + var90 = -0.058125976; + } else { + var90 = 0.15203135; + } + } else { + var90 = -0.285426; + } + } + } else { + if (input[1] < 154.10083) { + if (input[6] < 0.019774148) { + if (input[4] < 26.376) { + var90 = -0.03898572; + } else { + var90 = -0.1929159; + } + } else { + if (input[1] < 153.67346) { + var90 = -0.0053187683; + } else { + var90 = -0.10130769; + } + } + } else { + if (input[5] < 12.536739) { + if (input[4] < 24.157349) { + var90 = 0.3306803; + } else { + var90 = 0.07390418; + } + } else { + if (input[4] < 22.429638) { + var90 = -0.06714284; + } else { + var90 = 0.0016463628; + } + } + } + } + } + } + double var91; + if (input[1] < 2290.354) { + if (input[4] < 47.95029) { + if (input[6] < 0.0719236) { + if (input[2] < 0.14738971) { + if (input[6] < 0.064966485) { + if (input[6] < 0.051321846) { + var91 = -0.0007380142; + } else { + var91 = 0.017104162; + } + } else { + if (input[0] < 437.31543) { + var91 = -0.035949714; + } else { + var91 = 0.69588566; + } + } + } else { + if (input[1] < 199.64316) { + if (input[0] < 533.52014) { + var91 = -0.007106399; + } else { + var91 = -0.052589025; + } + } else { + if (input[0] < 560.42096) { + var91 = -0.017362004; + } else { + var91 = 0.024235899; + } + } + } + } else { + if (input[2] < 0.16471554) { + if (input[0] < 465.9689) { + var91 = 0.32789415; + } else { + var91 = 0.095607586; + } + } else { + if (input[7] < 0.012781371) { + if (input[7] < 0.007757587) { + var91 = 0.016614746; + } else { + var91 = 0.13553524; + } + } else { + if (input[3] < 62.0) { + var91 = -0.30443758; + } else { + var91 = 0.09607027; + } + } + } + } + } else { + if (input[6] < 0.062145434) { + if (input[0] < 653.56573) { + if (input[7] < 0.004288183) { + if (input[1] < 522.426) { + var91 = -0.099851035; + } else { + var91 = -0.30278862; + } + } else { + var91 = 0.19684345; + } + } else { + if (input[3] < 10.0) { + var91 = -0.22884654; + } else { + if (input[1] < 522.426) { + var91 = 0.33171842; + } else { + var91 = 0.03699922; + } + } + } + } else { + if (input[6] < 0.067336254) { + if (input[0] < 655.90375) { + if (input[1] < 499.95114) { + var91 = 0.090200365; + } else { + var91 = -0.22600064; + } + } else { + if (input[3] < 16.0) { + var91 = 0.4207718; + } else { + var91 = 0.09619077; + } + } + } else { + if (input[1] < 465.96875) { + if (input[6] < 0.07021791) { + var91 = -0.16634715; + } else { + var91 = -0.015003142; + } + } else { + if (input[1] < 489.80347) { + var91 = 0.122215; + } else { + var91 = 0.0035324367; + } + } + } + } + } + } else { + if (input[5] < 33.48466) { + if (input[0] < 473.86905) { + var91 = -0.120100126; + } else { + if (input[0] < 562.22656) { + var91 = 0.2611159; + } else { + if (input[0] < 580.3388) { + var91 = -0.15703636; + } else { + var91 = 0.16519877; + } + } + } + } else { + var91 = -0.12494756; + } + } + double var92; + if (input[4] < 39.41097) { + if (input[6] < 0.056870647) { + if (input[2] < 0.13520741) { + if (input[3] < 10.0) { + if (input[6] < 0.05658276) { + if (input[2] < 0.1336906) { + var92 = -0.001089389; + } else { + var92 = 0.055209767; + } + } else { + if (input[3] < 7.0) { + var92 = -0.1730192; + } else { + var92 = 0.23557557; + } + } + } else { + if (input[7] < 0.0029307685) { + if (input[1] < 174.33795) { + var92 = 0.07537887; + } else { + var92 = 0.28193; + } + } else { + if (input[4] < 27.324759) { + var92 = 0.038940098; + } else { + var92 = -0.004870598; + } + } + } + } else { + if (input[6] < 0.04618777) { + if (input[5] < 19.831963) { + if (input[0] < 660.6031) { + var92 = 0.21638036; + } else { + var92 = -0.19483142; + } + } else { + if (input[7] < 0.0040295073) { + var92 = -0.25086433; + } else { + var92 = -0.06484561; + } + } + } else { + if (input[0] < 591.9396) { + if (input[4] < 33.99941) { + var92 = -0.0037506274; + } else { + var92 = -0.06920141; + } + } else { + if (input[1] < 322.41693) { + var92 = -0.0011643084; + } else { + var92 = 0.07318947; + } + } + } + } + } else { + if (input[3] < 8.0) { + if (input[0] < 587.03827) { + if (input[6] < 0.05746576) { + if (input[2] < 0.1329875) { + var92 = -0.10781022; + } else { + var92 = 0.122004844; + } + } else { + if (input[5] < 32.309944) { + var92 = -0.0023916357; + } else { + var92 = 0.12394992; + } + } + } else { + if (input[2] < 0.15956831) { + if (input[2] < 0.13599229) { + var92 = 0.18155044; + } else { + var92 = -0.20790188; + } + } else { + if (input[3] < 6.0) { + var92 = 0.22146587; + } else { + var92 = -0.038210988; + } + } + } + } else { + if (input[2] < 0.15373018) { + if (input[7] < 0.004422581) { + if (input[0] < 450.31787) { + var92 = -0.047350388; + } else { + var92 = 0.19147024; + } + } else { + if (input[4] < 28.366318) { + var92 = 0.26369143; + } else { + var92 = -0.10821494; + } + } + } else { + if (input[1] < 197.2326) { + if (input[6] < 0.06800464) { + var92 = -0.07030523; + } else { + var92 = 0.064904645; + } + } else { + if (input[0] < 550.7292) { + var92 = 0.015187512; + } else { + var92 = 0.10559668; + } + } + } + } + } + } else { + if (input[5] < 19.125778) { + if (input[7] < 0.0056199925) { + if (input[5] < 18.892052) { + if (input[7] < 0.0041569136) { + if (input[6] < 0.036600526) { + var92 = 0.23143375; + } else { + var92 = 0.0073575294; + } + } else { + if (input[2] < 0.18970776) { + var92 = -0.30694872; + } else { + var92 = 0.010648451; + } + } + } else { + if (input[7] < 0.002095897) { + if (input[0] < 591.9396) { + var92 = 0.18238145; + } else { + var92 = -0.11735777; + } + } else { + if (input[0] < 591.9396) { + var92 = 0.010138348; + } else { + var92 = 0.3862872; + } + } + } + } else { + if (input[1] < 232.72089) { + var92 = 0.44677067; + } else { + var92 = 0.072941095; + } + } + } else { + if (input[7] < 0.0019773336) { + if (input[4] < 40.228992) { + if (input[3] < 8.0) { + if (input[0] < 542.8911) { + var92 = 0.17898136; + } else { + var92 = -0.023028634; + } + } else { + if (input[0] < 508.57187) { + var92 = -0.018220183; + } else { + var92 = 0.46458104; + } + } + } else { + if (input[6] < 0.046756607) { + if (input[1] < 171.21246) { + var92 = -0.35519254; + } else { + var92 = -0.07546118; + } + } else { + if (input[5] < 19.882984) { + var92 = -0.08851494; + } else { + var92 = 0.011478441; + } + } + } + } else { + if (input[6] < 0.039893262) { + if (input[1] < 176.75247) { + if (input[2] < 0.06494424) { + var92 = 0.08772754; + } else { + var92 = 0.5184707; + } + } else { + if (input[2] < 0.10770404) { + var92 = -0.061544154; + } else { + var92 = 0.22541822; + } + } + } else { + if (input[1] < 272.0462) { + if (input[6] < 0.09936261) { + var92 = -0.06034384; + } else { + var92 = 0.17929633; + } + } else { + if (input[1] < 289.02704) { + var92 = 0.1994526; + } else { + var92 = -0.011756292; + } + } + } + } + } + } + double var93; + if (input[2] < 0.019446373) { + if (input[3] < 7.0) { + if (input[0] < 423.21143) { + if (input[5] < 20.485325) { + if (input[6] < 0.04792555) { + if (input[0] < 406.91656) { + var93 = 0.23903947; + } else { + var93 = -0.043631352; + } + } else { + if (input[4] < 25.379398) { + var93 = 0.3560161; + } else { + var93 = 0.050991777; + } + } + } else { + if (input[5] < 23.252285) { + if (input[7] < 0.065982014) { + var93 = -0.19482973; + } else { + var93 = 0.14287668; + } + } else { + if (input[5] < 23.989378) { + var93 = 0.14584614; + } else { + var93 = -0.0738031; + } + } + } + } else { + if (input[0] < 486.46512) { + if (input[0] < 483.37265) { + if (input[3] < 6.0) { + var93 = 0.04306985; + } else { + var93 = -0.01948809; + } + } else { + if (input[7] < 0.015328966) { + var93 = 0.3159663; + } else { + var93 = -0.08925603; + } + } + } else { + if (input[6] < 0.031588726) { + if (input[4] < 17.239592) { + var93 = -0.0045616818; + } else { + var93 = 0.029174246; + } + } else { + if (input[4] < 24.686386) { + var93 = -0.10198789; + } else { + var93 = 0.052390754; + } + } + } + } + } else { + if (input[0] < 451.8147) { + var93 = 0.25500366; + } else { + if (input[0] < 472.82422) { + if (input[0] < 467.11356) { + if (input[4] < 13.317816) { + var93 = 0.1784952; + } else { + var93 = -0.20921008; + } + } else { + var93 = -0.5486046; + } + } else { + if (input[6] < 0.012091974) { + if (input[0] < 589.95685) { + var93 = -0.04166706; + } else { + var93 = 0.11491496; + } + } else { + if (input[5] < 20.02947) { + var93 = 0.069990925; + } else { + var93 = 0.29926434; + } + } + } + } + } + } else { + if (input[1] < 52.952087) { + if (input[7] < 0.008550759) { + if (input[5] < 26.954847) { + if (input[5] < 25.292236) { + if (input[5] < 23.707842) { + var93 = 0.026659865; + } else { + var93 = -0.15924944; + } + } else { + if (input[0] < 541.16064) { + var93 = 0.46490955; + } else { + var93 = -0.0070524053; + } + } + } else { + if (input[6] < 0.029934272) { + var93 = -0.31207043; + } else { + if (input[0] < 637.80457) { + var93 = -0.09840505; + } else { + var93 = 0.23213725; + } + } + } + } else { + if (input[5] < 21.47956) { + if (input[0] < 516.5424) { + if (input[5] < 18.892052) { + var93 = -0.4061208; + } else { + var93 = 0.0189763; + } + } else { + if (input[2] < 0.06248641) { + var93 = 0.14953555; + } else { + var93 = -0.2209886; + } + } + } else { + if (input[5] < 27.670492) { + if (input[6] < 0.009366361) { + var93 = -0.096842885; + } else { + var93 = -0.36815447; + } + } else { + if (input[0] < 537.7245) { + var93 = 0.13366528; + } else { + var93 = -0.14766996; + } + } + } + } + } else { + if (input[6] < 0.008788065) { + if (input[1] < 78.546326) { + if (input[0] < 574.6581) { + if (input[0] < 550.7292) { + var93 = -0.21872346; + } else { + var93 = 0.17067797; + } + } else { + if (input[7] < 0.006703865) { + var93 = -0.103082374; + } else { + var93 = -0.37294766; + } + } + } else { + if (input[1] < 78.799194) { + var93 = 0.5648323; + } else { + if (input[1] < 118.29285) { + var93 = 0.11254025; + } else { + var93 = -0.096443884; + } + } + } + } else { + if (input[7] < 0.037121538) { + if (input[0] < 497.7732) { + if (input[1] < 53.51245) { + var93 = -0.12823997; + } else { + var93 = -0.004640621; + } + } else { + if (input[4] < 7.9895897) { + var93 = -0.16637444; + } else { + var93 = 0.0016579455; + } + } + } else { + if (input[1] < 53.680603) { + if (input[2] < 0.02465272) { + var93 = -0.12735999; + } else { + var93 = 0.3944017; + } + } else { + if (input[1] < 117.95654) { + var93 = -0.046386614; + } else { + var93 = 0.056297485; + } + } + } + } + } + } + double var94; + if (input[6] < 0.027508454) { + if (input[2] < 0.060454607) { + if (input[7] < 0.0019291723) { + if (input[0] < 469.4581) { + var94 = 0.26878878; + } else { + if (input[3] < 7.0) { + if (input[0] < 600.2424) { + var94 = -0.269223; + } else { + var94 = -0.0147406915; + } + } else { + if (input[0] < 601.28894) { + var94 = 0.26683354; + } else { + var94 = -0.12412647; + } + } + } + } else { + if (input[7] < 0.0026572135) { + if (input[5] < 14.48199) { + if (input[6] < 0.019774148) { + var94 = 0.012556176; + } else { + var94 = 0.58044595; + } + } else { + if (input[5] < 16.555506) { + var94 = -0.2595056; + } else { + var94 = 0.050235458; + } + } + } else { + if (input[4] < 35.880825) { + if (input[7] < 0.0028526676) { + var94 = -0.082867846; + } else { + var94 = -0.0005573984; + } + } else { + if (input[6] < 0.0224242) { + var94 = 0.20978113; + } else { + var94 = -0.36310664; + } + } + } + } + } else { + if (input[0] < 676.2616) { + if (input[1] < 486.04437) { + if (input[5] < 29.853495) { + if (input[0] < 578.47174) { + var94 = -0.047225036; + } else { + var94 = 0.0015649783; + } + } else { + if (input[3] < 8.0) { + var94 = 0.13156146; + } else { + var94 = -0.20603453; + } + } + } else { + if (input[2] < 0.08396298) { + if (input[2] < 0.06370363) { + var94 = 0.058326058; + } else { + var94 = 0.27829453; + } + } else { + if (input[3] < 16.0) { + var94 = -0.16545497; + } else { + var94 = 0.11268028; + } + } + } + } else { + if (input[1] < 289.02704) { + if (input[1] < 174.1648) { + if (input[1] < 81.0188) { + var94 = -0.23114511; + } else { + var94 = 0.101152256; + } + } else { + if (input[0] < 680.3219) { + var94 = -0.6883102; + } else { + var94 = -0.117695056; + } + } + } else { + if (input[6] < 0.02348538) { + var94 = -0.24693434; + } else { + if (input[5] < 24.320927) { + var94 = 0.24602963; + } else { + var94 = 0.015761448; + } + } + } + } + } + } else { + if (input[4] < 15.897472) { + if (input[5] < 26.954847) { + if (input[5] < 26.65595) { + if (input[5] < 25.942757) { + if (input[7] < 0.012781371) { + var94 = 0.054019507; + } else { + var94 = 0.14271419; + } + } else { + if (input[7] < 0.007757587) { + var94 = 0.23369469; + } else { + var94 = -0.16729432; + } + } + } else { + if (input[0] < 464.80853) { + var94 = 0.35133332; + } else { + var94 = 0.06543421; + } + } + } else { + if (input[7] < 0.02092963) { + if (input[7] < 0.013718606) { + if (input[7] < 0.012781371) { + var94 = -0.08679936; + } else { + var94 = 0.25653496; + } + } else { + if (input[5] < 29.251307) { + var94 = -0.40882197; + } else { + var94 = -0.11314546; + } + } + } else { + if (input[0] < 415.7414) { + var94 = -0.09910055; + } else { + if (input[6] < 0.028205514) { + var94 = 0.030331306; + } else { + var94 = 0.29536662; + } + } + } + } + } else { + if (input[2] < 0.07207942) { + if (input[1] < 115.84448) { + if (input[7] < 0.0049699554) { + if (input[1] < 81.66284) { + var94 = -0.02127853; + } else { + var94 = -0.15477914; + } + } else { + if (input[4] < 19.22159) { + var94 = -0.029568223; + } else { + var94 = 0.07100651; + } + } + } else { + if (input[5] < 11.839297) { + if (input[7] < 0.0044915546) { + var94 = -0.046902213; + } else { + var94 = -0.36647388; + } + } else { + if (input[1] < 117.295654) { + var94 = 0.3015382; + } else { + var94 = 0.039402712; + } + } + } + } else { + if (input[6] < 0.031588726) { + if (input[0] < 678.9018) { + if (input[0] < 669.4481) { + var94 = -0.028930034; + } else { + var94 = -0.15006642; + } + } else { + if (input[4] < 30.913733) { + var94 = 0.15809971; + } else { + var94 = -0.17897888; + } + } + } else { + if (input[0] < 657.11444) { + if (input[6] < 0.03715515) { + var94 = -0.010334415; + } else { + var94 = 0.0016327765; + } + } else { + if (input[4] < 28.556541) { + var94 = 0.07053114; + } else { + var94 = 0.0033918766; + } + } + } + } + } + } + double var95; + if (input[4] < 36.870323) { + if (input[6] < 0.064966485) { + if (input[6] < 0.063442506) { + if (input[6] < 0.06301065) { + if (input[1] < 367.2591) { + if (input[2] < 0.1772592) { + var95 = -0.00029088598; + } else { + var95 = -0.10018439; + } + } else { + if (input[7] < 0.005221153) { + var95 = 0.04192914; + } else { + var95 = -0.005447412; + } + } + } else { + if (input[2] < 0.16581297) { + if (input[5] < 23.553886) { + var95 = -0.1591081; + } else { + var95 = 0.10508491; + } + } else { + if (input[3] < 9.0) { + var95 = 0.3668959; + } else { + var95 = -0.014906318; + } + } + } + } else { + if (input[5] < 15.548489) { + if (input[2] < 0.16901255) { + var95 = 0.45934853; + } else { + var95 = -0.07842251; + } + } else { + if (input[5] < 25.828705) { + if (input[5] < 24.320927) { + var95 = -0.04542352; + } else { + var95 = -0.23987944; + } + } else { + if (input[6] < 0.063917145) { + var95 = -0.10086262; + } else { + var95 = 0.09706425; + } + } + } + } + } else { + if (input[1] < 272.0462) { + if (input[1] < 147.89758) { + if (input[0] < 455.97122) { + if (input[7] < 0.0027116358) { + var95 = -0.05996486; + } else { + var95 = 0.056037072; + } + } else { + if (input[1] < 140.85828) { + var95 = 0.033455893; + } else { + var95 = 0.23655675; + } + } + } else { + if (input[7] < 0.0023913998) { + if (input[7] < 0.0020605393) { + var95 = -0.04337442; + } else { + var95 = 0.14069591; + } + } else { + if (input[1] < 149.04504) { + var95 = -0.37998262; + } else { + var95 = -0.031536; + } + } + } + } else { + if (input[5] < 22.60932) { + if (input[0] < 415.7414) { + var95 = -0.12921034; + } else { + if (input[1] < 347.76187) { + var95 = 0.3288574; + } else { + var95 = 0.13256179; + } + } + } else { + if (input[5] < 22.871712) { + var95 = -0.3297293; + } else { + if (input[0] < 469.4581) { + var95 = 0.0010177677; + } else { + var95 = 0.14768024; + } + } + } + } + } + } else { + if (input[3] < 6.0) { + if (input[6] < 0.06134235) { + if (input[1] < 174.33795) { + if (input[0] < 648.74475) { + if (input[0] < 586.0259) { + var95 = -0.105719365; + } else { + var95 = 0.20103557; + } + } else { + if (input[1] < 141.80019) { + var95 = 0.01179498; + } else { + var95 = -0.360845; + } + } + } else { + if (input[1] < 199.2757) { + if (input[2] < 0.06800866) { + var95 = -0.21911988; + } else { + var95 = 0.48542768; + } + } else { + if (input[1] < 294.69617) { + var95 = 0.029419068; + } else { + var95 = 0.29314417; + } + } + } + } else { + if (input[0] < 623.2792) { + if (input[2] < 0.2088641) { + if (input[1] < 350.59753) { + var95 = 0.00927925; + } else { + var95 = -0.28686583; + } + } else { + if (input[4] < 39.150074) { + var95 = 0.3137236; + } else { + var95 = 0.059071932; + } + } + } else { + if (input[2] < 0.076109886) { + if (input[2] < 0.040234327) { + var95 = -0.28807607; + } else { + var95 = 0.11867937; + } + } else { + if (input[6] < 0.06442285) { + var95 = 0.028690578; + } else { + var95 = -0.403902; + } + } + } + } + } else { + if (input[7] < 0.003554517) { + if (input[7] < 0.0033310084) { + if (input[6] < 0.044478152) { + if (input[6] < 0.0387992) { + var95 = 0.0015631773; + } else { + var95 = -0.15456538; + } + } else { + if (input[6] < 0.045053452) { + var95 = 0.45196748; + } else { + var95 = -0.0036727262; + } + } + } else { + if (input[3] < 17.0) { + if (input[5] < 26.883776) { + var95 = 0.05053576; + } else { + var95 = -0.12719224; + } + } else { + if (input[7] < 0.0035266217) { + var95 = 0.25379607; + } else { + var95 = -0.01665973; + } + } + } + } else { + if (input[2] < 0.13599229) { + if (input[2] < 0.1336906) { + if (input[5] < 19.682528) { + var95 = -0.15510641; + } else { + var95 = 0.05978261; + } + } else { + var95 = 0.32809258; + } + } else { + if (input[2] < 0.17006421) { + if (input[3] < 16.0) { + var95 = -0.11217772; + } else { + var95 = 0.033681337; + } + } else { + if (input[1] < 432.44418) { + var95 = -0.047947384; + } else { + var95 = 0.0068211597; + } + } + } + } + } + } + double var96; + if (input[4] < 19.969645) { + if (input[6] < 0.033574995) { + if (input[2] < 0.095043175) { + if (input[4] < 19.22159) { + if (input[4] < 19.093088) { + if (input[4] < 18.961548) { + var96 = -0.0018001358; + } else { + var96 = 0.064425446; + } + } else { + if (input[0] < 646.2121) { + var96 = -0.123586185; + } else { + var96 = 0.16697642; + } + } + } else { + if (input[6] < 0.014341843) { + if (input[7] < 0.003877645) { + var96 = 0.5333495; + } else { + var96 = 0.10474758; + } + } else { + if (input[2] < 0.03826639) { + var96 = -0.08635856; + } else { + var96 = 0.031895284; + } + } + } + } else { + if (input[7] < 0.011644137) { + var96 = -0.60618275; + } else { + if (input[7] < 0.017095413) { + var96 = 0.20291023; + } else { + var96 = -0.114330396; + } + } + } + } else { + if (input[3] < 8.0) { + if (input[4] < 15.110416) { + if (input[0] < 418.34677) { + var96 = 0.28548223; + } else { + var96 = 0.07066263; + } + } else { + if (input[7] < 0.027495267) { + if (input[0] < 445.85364) { + var96 = -0.011426713; + } else { + var96 = 0.04950936; + } + } else { + if (input[2] < 0.09052771) { + var96 = -0.24584083; + } else { + var96 = 0.20677362; + } + } + } + } else { + if (input[2] < 0.10250798) { + if (input[5] < 17.90769) { + var96 = -0.085860796; + } else { + if (input[1] < 229.68715) { + var96 = 0.27151984; + } else { + var96 = 0.07385676; + } + } + } else { + if (input[2] < 0.10423684) { + var96 = -0.5743012; + } else { + if (input[2] < 0.11136079) { + var96 = 0.2345015; + } else { + var96 = -0.08669591; + } + } + } + } + } + } else { + if (input[7] < 0.032107387) { + if (input[6] < 0.014341843) { + if (input[2] < 0.033970356) { + if (input[4] < 21.095676) { + if (input[0] < 537.7245) { + var96 = 0.021817029; + } else { + var96 = -0.1473876; + } + } else { + if (input[0] < 664.0269) { + var96 = 0.015744172; + } else { + var96 = -0.11550699; + } + } + } else { + if (input[0] < 644.92255) { + if (input[0] < 561.316) { + var96 = -0.09252417; + } else { + var96 = -0.32412606; + } + } else { + if (input[5] < 24.451618) { + var96 = 0.18326743; + } else { + var96 = -0.1840132; + } + } + } + } else { + if (input[6] < 0.015576805) { + if (input[5] < 22.573715) { + if (input[4] < 25.466583) { + var96 = -0.17856607; + } else { + var96 = 0.111162156; + } + } else { + if (input[1] < 173.9191) { + var96 = 0.31346008; + } else { + var96 = 0.05056151; + } + } + } else { + if (input[7] < 0.017428085) { + if (input[7] < 0.009574198) { + var96 = -0.0014704623; + } else { + var96 = 0.019241083; + } + } else { + if (input[5] < 21.6294) { + var96 = -0.11818913; + } else { + var96 = -0.008877133; + } + } + } + } + } else { + if (input[5] < 19.125778) { + if (input[4] < 25.647543) { + if (input[0] < 564.8027) { + var96 = 0.51581687; + } else { + if (input[3] < 6.0) { + var96 = -0.091798864; + } else { + var96 = 0.20529638; + } + } + } else { + var96 = -0.06499319; + } + } else { + if (input[1] < 171.54358) { + if (input[6] < 0.026795352) { + if (input[6] < 0.013054227) { + var96 = -0.09550257; + } else { + var96 = 0.1984415; + } + } else { + if (input[6] < 0.046560727) { + var96 = -0.20843221; + } else { + var96 = 0.0445538; + } + } + } else { + if (input[2] < 0.3723327) { + if (input[7] < 0.037121538) { + var96 = 0.078614965; + } else { + var96 = 0.2849888; + } + } else { + var96 = -0.06752213; + } + } + } + } + } + double var97; + if (input[7] < 0.000003799362) { + if (input[3] < 7.0) { + if (input[0] < 623.2792) { + if (input[0] < 570.25055) { + if (input[6] < 2.5102012) { + if (input[1] < 143.61688) { + var97 = -0.2656622; + } else { + var97 = -0.042285077; + } + } else { + if (input[5] < 24.069965) { + var97 = 0.12956662; + } else { + var97 = -0.09442302; + } + } + } else { + if (input[2] < 0.04563713) { + if (input[0] < 591.9396) { + var97 = -0.041741744; + } else { + var97 = -0.17965603; + } + } else { + if (input[5] < 17.57988) { + var97 = 0.039867952; + } else { + var97 = 0.27416316; + } + } + } + } else { + if (input[2] < 0.076109886) { + if (input[5] < 24.15352) { + if (input[5] < 20.834808) { + var97 = 0.07351042; + } else { + var97 = -0.31559995; + } + } else { + if (input[1] < 115.326904) { + var97 = 0.042040918; + } else { + var97 = 0.24403884; + } + } + } else { + if (input[1] < 193.68164) { + if (input[5] < 19.301468) { + var97 = -0.41939783; + } else { + var97 = -0.16711897; + } + } else { + var97 = -0.043148335; + } + } + } + } else { + if (input[5] < 27.03375) { + if (input[1] < 96.294495) { + if (input[0] < 647.514) { + if (input[1] < 77.55432) { + var97 = 0.004567934; + } else { + var97 = -0.19868024; + } + } else { + var97 = 0.23932669; + } + } else { + if (input[2] < 0.16260886) { + if (input[1] < 194.03192) { + var97 = 0.37673247; + } else { + var97 = 0.08706665; + } + } else { + var97 = -0.114341155; + } + } + } else { + var97 = -0.17206134; + } + } + } else { + if (input[7] < 0.000020908421) { + if (input[0] < 578.47174) { + if (input[0] < 569.34753) { + if (input[0] < 431.5945) { + if (input[1] < 150.89111) { + var97 = -0.037861045; + } else { + var97 = 0.15458566; + } + } else { + if (input[1] < 115.16882) { + var97 = -0.26035947; + } else { + var97 = 0.004208072; + } + } + } else { + if (input[6] < 2.5102012) { + if (input[2] < 0.21767628) { + var97 = 0.4479623; + } else { + var97 = 0.06082348; + } + } else { + var97 = -0.07043992; + } + } + } else { + if (input[0] < 667.30505) { + if (input[5] < 28.613876) { + if (input[4] < 1054.0984) { + var97 = -0.25369984; + } else { + var97 = -0.10638075; + } + } else { + var97 = 0.14436752; + } + } else { + if (input[6] < 1.2666034) { + var97 = 0.27659342; + } else { + if (input[3] < 10.0) { + var97 = -0.2635747; + } else { + var97 = 0.16864254; + } + } + } + } + } else { + if (input[4] < 873.4576) { + if (input[2] < 0.32127088) { + if (input[6] < 0.113757454) { + if (input[4] < 58.806583) { + var97 = 0.00023529575; + } else { + var97 = -0.07131096; + } + } else { + if (input[3] < 14.0) { + var97 = -0.0049700453; + } else { + var97 = 0.19886696; + } + } + } else { + if (input[4] < 67.75224) { + if (input[3] < 17.0) { + var97 = -0.08927706; + } else { + var97 = 0.065751754; + } + } else { + if (input[3] < 38.0) { + var97 = -0.21858992; + } else { + var97 = -0.0028410028; + } + } + } + } else { + if (input[5] < 24.626286) { + if (input[2] < 0.300006) { + var97 = -0.12706517; + } else { + if (input[5] < 18.949379) { + var97 = -0.09797414; + } else { + var97 = 0.24148461; + } + } + } else { + if (input[5] < 26.059116) { + if (input[3] < 7.0) { + var97 = -0.05752931; + } else { + var97 = -0.2859255; + } + } else { + if (input[1] < 577.64667) { + var97 = 0.25439933; + } else { + var97 = -0.21164308; + } + } + } + } + } + } + double var98; + if (input[5] < 22.351292) { + if (input[3] < 19.0) { + if (input[1] < 347.76187) { + if (input[1] < 346.66638) { + if (input[3] < 17.0) { + if (input[5] < 18.949379) { + var98 = -0.0024268902; + } else { + var98 = 0.006427586; + } + } else { + if (input[0] < 530.13635) { + var98 = 0.043792784; + } else { + var98 = -0.25357145; + } + } + } else { + if (input[7] < 0.0024513172) { + var98 = 0.61511075; + } else { + if (input[3] < 6.0) { + var98 = -0.18124509; + } else { + var98 = 0.13508765; + } + } + } + } else { + if (input[5] < 20.077265) { + if (input[0] < 549.8694) { + if (input[7] < 0.0070044855) { + var98 = 0.13891569; + } else { + var98 = -0.14922687; + } + } else { + if (input[2] < 0.18675008) { + var98 = -0.042564332; + } else { + var98 = 0.09317386; + } + } + } else { + if (input[1] < 347.97607) { + if (input[0] < 567.47864) { + var98 = -0.03637767; + } else { + var98 = -0.32935014; + } + } else { + if (input[4] < 22.235271) { + var98 = 0.0706038; + } else { + var98 = -0.04455369; + } + } + } + } + } else { + if (input[5] < 21.8264) { + if (input[0] < 612.42395) { + if (input[1] < 1184.6289) { + if (input[7] < 0.0022020095) { + var98 = -0.07079888; + } else { + var98 = 0.18519548; + } + } else { + if (input[0] < 512.06805) { + var98 = 0.19461735; + } else { + var98 = -0.18404838; + } + } + } else { + if (input[1] < 325.458) { + var98 = 0.2366768; + } else { + if (input[0] < 653.56573) { + var98 = -0.19983499; + } else { + var98 = 0.039932158; + } + } + } + } else { + if (input[5] < 22.098291) { + if (input[3] < 20.0) { + var98 = -0.0015027275; + } else { + var98 = 0.31200135; + } + } else { + if (input[5] < 22.210117) { + if (input[5] < 22.173851) { + var98 = 0.08735202; + } else { + var98 = -0.13998534; + } + } else { + if (input[0] < 605.7406) { + var98 = 0.2506639; + } else { + var98 = -0.006417539; + } + } + } + } + } + } else { + if (input[5] < 23.907497) { + if (input[3] < 9.0) { + if (input[2] < 0.1785326) { + if (input[2] < 0.15095592) { + if (input[7] < 0.005262675) { + var98 = -0.031139176; + } else { + var98 = -0.002040718; + } + } else { + if (input[4] < 35.880825) { + var98 = -0.00452999; + } else { + var98 = 0.11877361; + } + } + } else { + if (input[5] < 23.252285) { + if (input[1] < 138.08691) { + var98 = 0.25364897; + } else { + var98 = -0.054258253; + } + } else { + if (input[6] < 0.069410756) { + var98 = -0.36241817; + } else { + var98 = -0.145004; + } + } + } + } else { + if (input[5] < 22.536089) { + if (input[7] < 0.0033310084) { + if (input[2] < 0.15468198) { + var98 = 0.23443164; + } else { + var98 = 0.0018630335; + } + } else { + if (input[7] < 0.007193277) { + var98 = -0.07193108; + } else { + var98 = -0.26448688; + } + } + } else { + if (input[4] < 33.871582) { + if (input[7] < 0.0037578957) { + var98 = 0.18164471; + } else { + var98 = 0.026907893; + } + } else { + if (input[0] < 502.38867) { + var98 = 0.09353052; + } else { + var98 = -0.018931389; + } + } + } + } + } else { + if (input[5] < 24.451618) { + if (input[0] < 615.92804) { + if (input[0] < 613.5429) { + if (input[7] < 0.005712156) { + var98 = 0.02475759; + } else { + var98 = -0.017353931; + } + } else { + if (input[5] < 24.235641) { + var98 = -0.04449751; + } else { + var98 = -0.4117124; + } + } + } else { + if (input[0] < 620.777) { + if (input[1] < 171.00562) { + var98 = 0.4553746; + } else { + var98 = 0.07147512; + } + } else { + if (input[7] < 0.000003799362) { + var98 = -0.2941458; + } else { + var98 = 0.06704928; + } + } + } + } else { + if (input[5] < 24.538595) { + if (input[3] < 11.0) { + if (input[0] < 563.0628) { + var98 = -0.021343661; + } else { + var98 = -0.16739714; + } + } else { + if (input[2] < 0.23885596) { + var98 = 0.048979804; + } else { + var98 = 0.37946188; + } + } + } else { + if (input[0] < 651.1857) { + if (input[4] < 24.331453) { + var98 = 0.005444887; + } else { + var98 = -0.0078024366; + } + } else { + if (input[1] < 171.21246) { + var98 = -0.032936048; + } else { + var98 = 0.051770084; + } + } + } + } + } + } + double var99; + if (input[7] < 0.0037865257) { + if (input[3] < 8.0) { + if (input[0] < 634.2887) { + if (input[0] < 632.9928) { + if (input[1] < 143.84497) { + if (input[1] < 143.61688) { + var99 = -0.0057054455; + } else { + var99 = -0.15427671; + } + } else { + if (input[5] < 26.379164) { + var99 = 0.021731809; + } else { + var99 = -0.026336126; + } + } + } else { + if (input[6] < 0.0413519) { + if (input[7] < 0.0022685162) { + var99 = -0.05546972; + } else { + var99 = 0.2719604; + } + } else { + if (input[7] < 0.0026282698) { + var99 = 0.10013322; + } else { + var99 = -0.28874898; + } + } + } + } else { + if (input[0] < 649.94415) { + if (input[2] < 0.05706811) { + if (input[3] < 6.0) { + var99 = 0.12206871; + } else { + var99 = -0.09181206; + } + } else { + if (input[1] < 173.5393) { + var99 = -0.04673974; + } else { + var99 = -0.12630203; + } + } + } else { + if (input[4] < 23.523321) { + if (input[0] < 677.4847) { + var99 = 0.2910698; + } else { + var99 = -0.058789056; + } + } else { + if (input[6] < 0.028638396) { + var99 = -0.06813077; + } else { + var99 = 0.011731453; + } + } + } + } + } else { + if (input[4] < 29.657753) { + if (input[0] < 514.7731) { + if (input[6] < 0.05412499) { + if (input[1] < 140.95532) { + var99 = 0.04613586; + } else { + var99 = -0.20234543; + } + } else { + if (input[1] < 120.64625) { + var99 = -0.08085628; + } else { + var99 = 0.2022182; + } + } + } else { + if (input[0] < 530.13635) { + if (input[1] < 78.60242) { + var99 = -0.18413892; + } else { + var99 = 0.49589634; + } + } else { + if (input[5] < 17.742842) { + var99 = 0.31873986; + } else { + var99 = 0.08513192; + } + } + } + } else { + if (input[4] < 35.71706) { + if (input[1] < 367.2591) { + if (input[7] < 0.0022020095) { + var99 = 0.17128654; + } else { + var99 = 0.007830845; + } + } else { + if (input[4] < 32.032806) { + var99 = -0.17429945; + } else { + var99 = 0.18984948; + } + } + } else { + if (input[6] < 0.05746576) { + if (input[2] < 0.16058685) { + var99 = -0.015454407; + } else { + var99 = -0.11294771; + } + } else { + if (input[2] < 0.20476818) { + var99 = 0.024489118; + } else { + var99 = -0.009822149; + } + } + } + } + } + } else { + if (input[0] < 572.9116) { + if (input[3] < 7.0) { + if (input[5] < 24.952822) { + if (input[5] < 24.362743) { + if (input[5] < 24.27795) { + var99 = -0.0047393795; + } else { + var99 = 0.14304416; + } + } else { + if (input[6] < 0.0031386863) { + var99 = 0.24027428; + } else { + var99 = -0.06059457; + } + } + } else { + if (input[4] < 18.692837) { + if (input[0] < 487.4292) { + var99 = 0.016413497; + } else { + var99 = -0.036053557; + } + } else { + if (input[4] < 34.82185) { + var99 = 0.033662472; + } else { + var99 = 0.20703654; + } + } + } + } else { + if (input[0] < 555.14606) { + if (input[4] < 17.400011) { + if (input[7] < 0.01122595) { + var99 = 0.12786947; + } else { + var99 = 0.0018907362; + } + } else { + if (input[6] < 0.046959374) { + var99 = -0.03352008; + } else { + var99 = 0.0074020512; + } + } + } else { + if (input[7] < 0.007757587) { + if (input[1] < 154.10083) { + var99 = -0.12185065; + } else { + var99 = -0.0116570005; + } + } else { + if (input[7] < 0.01196178) { + var99 = -0.17540857; + } else { + var99 = 0.0038687594; + } + } + } + } + } else { + if (input[7] < 0.0041569136) { + if (input[5] < 21.982788) { + if (input[5] < 20.706615) { + if (input[4] < 24.686386) { + var99 = 0.057983566; + } else { + var99 = -0.05726354; + } + } else { + if (input[0] < 595.0893) { + var99 = -0.099902794; + } else { + var99 = 0.13686803; + } + } + } else { + if (input[0] < 575.62115) { + if (input[4] < 25.379398) { + var99 = -0.07881704; + } else { + var99 = 0.26216108; + } + } else { + if (input[6] < 0.022947546) { + var99 = 0.010709189; + } else { + var99 = -0.08224428; + } + } + } + } else { + if (input[6] < 0.03472593) { + if (input[7] < 0.006262521) { + if (input[7] < 0.004320392) { + var99 = 0.04324277; + } else { + var99 = -0.022901148; + } + } else { + if (input[6] < 0.024815487) { + var99 = 0.0030109563; + } else { + var99 = 0.03124071; + } + } + } else { + if (input[2] < 0.105960846) { + if (input[0] < 576.4887) { + var99 = 0.21068656; + } else { + var99 = 0.05508832; + } + } else { + if (input[1] < 202.09811) { + var99 = -0.045104988; + } else { + var99 = 0.027278272; + } + } + } + } + } + } + double var100; + var100 = sigmoid(var0 + var1 + var2 + var3 + var4 + var5 + var6 + var7 + var8 + var9 + var10 + var11 + var12 + var13 + var14 + var15 + var16 + var17 + var18 + var19 + var20 + var21 + var22 + var23 + var24 + var25 + var26 + var27 + var28 + var29 + var30 + var31 + var32 + var33 + var34 + var35 + var36 + var37 + var38 + var39 + var40 + var41 + var42 + var43 + var44 + var45 + var46 + var47 + var48 + var49 + var50 + var51 + var52 + var53 + var54 + var55 + var56 + var57 + var58 + var59 + var60 + var61 + var62 + var63 + var64 + var65 + var66 + var67 + var68 + var69 + var70 + var71 + var72 + var73 + var74 + var75 + var76 + var77 + var78 + var79 + var80 + var81 + var82 + var83 + var84 + var85 + var86 + var87 + var88 + var89 + var90 + var91 + var92 + var93 + var94 + var95 + var96 + var97 + var98 + var99); + //memcpy(output, (double[]){1.0 - var100, var100}, 2 * sizeof(double)); + return var100; +} + +} + +#endif diff --git a/TrkHitReco/src/DBSClusterer.cc b/TrkHitReco/src/DBSClusterer.cc index fca298449a..e59e8b7ca4 100644 --- a/TrkHitReco/src/DBSClusterer.cc +++ b/TrkHitReco/src/DBSClusterer.cc @@ -1,7 +1,6 @@ #include "Offline/TrkHitReco/inc/DBSClusterer.hh" #include "Offline/ConfigTools/inc/ConfigFileLookupPolicy.hh" -#include "TMath.h" #include #include #include @@ -61,7 +60,6 @@ namespace mu2e clusters.reserve(std::max(16UL, idx.size()/10)); for (size_t i=0;i1) dump(clusters); } - - //--------------------------------------------------------------------------------------- // Find the neighbors of given a point - can use any suitable distance function int DBSClusterer::findNeighbors(unsigned ihit, const std::vector& idx, const ComboHitCollection& chcol, std::vector& neighbors) @@ -141,19 +137,6 @@ namespace mu2e nNeighbors += hitj.nStrawHits(); } } - /*unsigned istart(ihit); - while (istart>0 && time0 - chcol[idx[istart]].correctedTime() < deltaTime_) --istart; - if (time0 - chcol[idx[istart]].correctedTime() > deltaTime_) ++istart; - for (size_t j=istart; j deltaTime_) break; // deltaTime = 15 - if (std::abs(chcol[idx[j]].pos().z()- z0) > deltaZ_) continue; //deltaZ = 800 - float dist = (chcol[idx[j]].pos().x()-x0)*(chcol[idx[j]].pos().x()-x0) + - (chcol[idx[j]].pos().y()-y0)*(chcol[idx[j]].pos().y()-y0); - if (dist > deltaXY2_) continue; - neighbors.emplace_back(j); - nNeighbors += chcol[idx[j]].nStrawHits(); - }*/ return nNeighbors; } @@ -168,7 +151,6 @@ namespace mu2e } - //--------------------------------------------------------------------------------------- void DBSClusterer::calculateCluster(BkgCluster& cluster, const ComboHitCollection& chcol) { @@ -209,39 +191,15 @@ namespace mu2e cluster.edep(cedep); } + //--------------------------------------------------------------------------------------- void DBSClusterer::classifyCluster(BkgCluster& cluster, const ComboHitCollection& chcol){ //code logic to classify cluster with MVA - // count hits and planes - std::array hitplanes{0}; - for (const auto& chit : cluster.hits()) { - const ComboHit& ch = chcol[chit]; - hitplanes[ch.strawId().plane()] += ch.nStrawHits(); - } - - unsigned npexp(0),np(0),nhits(0); - //std::vector hz; - //std::vector hphi; - //float phidiff(0.0); - int ipmin(0),ipmax(StrawId::_nplanes-1); - while (hitplanes[ipmin]==0 && ipmin0) --ipmax; - int fp(ipmin),lp(ipmin-1),pgap(0); - for (int ip = ipmin; ip <= ipmax; ++ip) { - npexp++; // should use TTracker to see if plane is physically present FIXME! - if (hitplanes[ip]> 0){ - ++np; - if(lp > 0 && ip - lp -1 > pgap)pgap = ip - lp -1; - if(ip > lp)lp = ip; - if(ip < fp)fp = ip; - lp = ip; - } - nhits += hitplanes[ip]; - } - if(nhits < 1 || np < 2) return; + if(cluster.hits().size() < 3) return; // find averages double sqrSumDeltaTime(0.),sqrSumDeltaX(0.), sqrSumDeltaY(0.), sqrSumDeltaPhi(0.); + unsigned nhits(0); float zmin = std::numeric_limits::max(); float zmax = -std::numeric_limits::max(); float phimin = std::numeric_limits::max(); @@ -252,6 +210,7 @@ namespace mu2e unsigned nchits = cluster.hits().size(); for (const auto& chit : cluster.hits()) { const auto& hit = chcol[chit]; + nhits += hit.nStrawHits(); float hZ = hit.pos().Z(); if (hZ < zmin) zmin = hZ; if (hZ > zmax) zmax = hZ; @@ -272,22 +231,16 @@ namespace mu2e // fill mva input variables std::array kerasvars; kerasvars[0] = cluster.pos().Rho(); // cluster rho, cyl coor - kerasvars[1] = zmax - zmin; //zdiff; //fp;// first plane hit - kerasvars[2] = phimax - phimin; //phidiff; + kerasvars[1] = zmax - zmin; // zdiff + kerasvars[2] = phimax - phimin; // phidiff; kerasvars[3] = nhits; kerasvars[4] = std::sqrt((sqrSumDeltaX+sqrSumDeltaY)/nchits); // RMS of cluster rho - kerasvars[5] = std::sqrt(sqrSumDeltaTime/nchits);// RMS of cluster time - kerasvars[6] = std::sqrt(sqrSumDeltaPhi/nchits);// RMS of cluster phi + kerasvars[5] = std::sqrt(sqrSumDeltaTime/nchits); // RMS of cluster time + kerasvars[6] = std::sqrt(sqrSumDeltaPhi/nchits); // RMS of cluster phi std::vector kerasout = sofiePtr_->infer(kerasvars.data()); cluster.setKerasQ(kerasout[0]); - if (diag_>0)std::cout << "kerasout = " << kerasout[0] << std::endl; - //cluster.setKerasQ(-1.0); } - - - - //------------------------------------------------------------------------------------------- void DBSClusterer::dump(const std::vector& clusters) { diff --git a/TrkHitReco/src/FlagBkgHits_module.cc b/TrkHitReco/src/FlagBkgHits_module.cc index 530e834503..14495b84b6 100644 --- a/TrkHitReco/src/FlagBkgHits_module.cc +++ b/TrkHitReco/src/FlagBkgHits_module.cc @@ -7,7 +7,7 @@ #include "fhiclcpp/types/Sequence.h" #include "fhiclcpp/types/OptionalTable.h" -#include "Offline/ConditionsService/inc/ConditionsHandle.hh" +//#include "Offline/ConditionsService/inc/ConditionsHandle.hh" #include "Offline/ConfigTools/inc/ConfigFileLookupPolicy.hh" #include "Offline/MCDataProducts/inc/StrawDigiMC.hh" #include "Offline/DataProducts/inc/StrawIdMask.hh" @@ -69,9 +69,8 @@ namespace mu2e float kerasQ_; int iev_; - void classifyCluster(BkgClusterCollection& bkgccol, StrawHitFlagCollection& chfcol, const ComboHitCollection& chcol, std::vector hitToClusterMap) const; + void classifyCluster(BkgClusterCollection& bkgccol, StrawHitFlagCollection& chfcol, const ComboHitCollection& chcol, std::vector& hitToClusterMap) const; void countProton(BkgClusterCollection& bkgccol, StrawHitFlagCollection& chfcol, const ComboHitCollection& chcol) const; - //int findClusterIdx( BkgClusterCollection& bkgccol, unsigned ich) const; }; @@ -155,20 +154,14 @@ namespace mu2e bkgccol.reserve(nch/2); if (savebkg_) bkghitcol.reserve(nch); - // find clusters, sort is needed for recovery algorithm. bkgccolFast has hits that are autmoatically marked as bkg. clusterer_->findClusters(bkgccol, chcol); - // classify clusters StrawHitFlagCollection chfcol(nch); std::vector hitToClusterMap(nch, -1); classifyCluster(bkgccol, chfcol, chcol, hitToClusterMap); - if(countprotons_){ - //Call the appropriate function to check if a cluster has enough hits with high edep such that it can be classified as background if its not done already + if(countprotons_) countProton(bkgccol, chfcol, chcol); - } - - // produce output ComboHit collection, either filtered or not auto chcol_out = std::make_unique(); if(chfcol.size()>0){ @@ -213,9 +206,13 @@ namespace mu2e //produce BkgClusterHit info collection if (savebkg_) { for (size_t ich=0;ich < nch; ++ich) { - int icl = hitToClusterMap[ich]; //findClusterIdx(bkgccol,ich); - if (icl > -1) bkghitcol.emplace_back(BkgClusterHit(clusterer_->distance(bkgccol[icl],chcol_out->at(ich)),chcol_out->at(ich).flag())); - else bkghitcol.emplace_back(BkgClusterHit(999.0,chcol_out->at(ich).flag())); + int icl = hitToClusterMap[ich]; + if (icl > -1) { + float dist = clusterer_->distance(bkgccol[icl], chcol[ich]); + bkghitcol.emplace_back(BkgClusterHit(dist, chcol[ich].flag())); + } + else + bkghitcol.emplace_back(BkgClusterHit(999.0,chcol[ich].flag())); } } event.put(std::move(chcol_out)); @@ -231,7 +228,7 @@ namespace mu2e //------------------------------------------------------------------------------------------ - void FlagBkgHits::classifyCluster(BkgClusterCollection& bkgccol, StrawHitFlagCollection& chfcol, const ComboHitCollection& chcol, std::vector hitToClusterMap) const + void FlagBkgHits::classifyCluster(BkgClusterCollection& bkgccol, StrawHitFlagCollection& chfcol, const ComboHitCollection& chcol, std::vector& hitToClusterMap) const { for (size_t icl =0; icl < bkgccol.size(); ++icl) { auto& cluster = bkgccol[icl]; clusterer_->classifyCluster(cluster,chcol); @@ -251,11 +248,9 @@ namespace mu2e void FlagBkgHits::countProton(BkgClusterCollection& bkgccol, StrawHitFlagCollection& chfcol, const ComboHitCollection& chcol) const { for (size_t icl=0; icl < bkgccol.size(); ++icl) { auto& cluster = bkgccol[icl]; - // Check if this cluster is already flagged as background (e.g., by Keras) bool isAlreadyBkg = cluster._flag.hasAllProperties(BkgClusterFlag::bkg); - // We only care about clusters not already marked as background if (!isAlreadyBkg) { - StrawHitFlag bkgFlag(StrawHitFlag::bkg); + StrawHitFlag bkgFlag(StrawHitFlag::energysel); for (const auto& hitIdx : cluster.hits()) { if (chcol[hitIdx].energyDep() > minedep_) chfcol[hitIdx].merge(bkgFlag); @@ -264,14 +259,6 @@ namespace mu2e } } - - //---------------------------------------------------------------------------------- - /*int FlagBkgHits::findClusterIdx(BkgClusterCollection& bkgccol, unsigned ich) const - { for (size_t icl=0;icl < bkgccol.size(); ++icl) - if (std::find(bkgccol[icl].hits().begin(),bkgccol[icl].hits().end(),ich) != bkgccol[icl].hits().end()) return icl; - return -1; - }*/ - } DEFINE_ART_MODULE(mu2e::FlagBkgHits) From 3282b56fe67b5242c7fbdc695b69ac1d56f0a296 Mon Sep 17 00:00:00 2001 From: Namitha Chithirasreemadam Date: Tue, 17 Mar 2026 11:13:50 -0500 Subject: [PATCH 12/54] Update FlagBkgHits_module.cc --- TrkHitReco/src/FlagBkgHits_module.cc | 1 - 1 file changed, 1 deletion(-) diff --git a/TrkHitReco/src/FlagBkgHits_module.cc b/TrkHitReco/src/FlagBkgHits_module.cc index 14495b84b6..1e1db9e0c3 100644 --- a/TrkHitReco/src/FlagBkgHits_module.cc +++ b/TrkHitReco/src/FlagBkgHits_module.cc @@ -7,7 +7,6 @@ #include "fhiclcpp/types/Sequence.h" #include "fhiclcpp/types/OptionalTable.h" -//#include "Offline/ConditionsService/inc/ConditionsHandle.hh" #include "Offline/ConfigTools/inc/ConfigFileLookupPolicy.hh" #include "Offline/MCDataProducts/inc/StrawDigiMC.hh" #include "Offline/DataProducts/inc/StrawIdMask.hh" From 69b52bdf2ab2beab3cd4d3303686d8f86d5cae3f Mon Sep 17 00:00:00 2001 From: Ray Culbertson Date: Tue, 17 Mar 2026 16:39:48 -0500 Subject: [PATCH 13/54] remove run accessors --- ProditionsService/inc/ProditionsHandle.hh | 6 ------ TrackerMC/src/StrawDigisFromStrawGasSteps_module.cc | 3 ++- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/ProditionsService/inc/ProditionsHandle.hh b/ProditionsService/inc/ProditionsHandle.hh index 2d125fa220..09d9981384 100644 --- a/ProditionsService/inc/ProditionsHandle.hh +++ b/ProditionsService/inc/ProditionsHandle.hh @@ -32,12 +32,6 @@ class ProditionsHandle { } ~ProditionsHandle() {} - ENTITY const& get(art::RunID const& rid) { - return get(art::EventID(rid.run(), 0, 0)); - } - ENTITY const& get(art::SubRunID const& sid) { - return get(art::EventID(sid, 0)); - } cptr_t getPtr(art::EventID const& eid) { get(eid); return ptr; diff --git a/TrackerMC/src/StrawDigisFromStrawGasSteps_module.cc b/TrackerMC/src/StrawDigisFromStrawGasSteps_module.cc index 67b012e73e..78c9f85276 100644 --- a/TrackerMC/src/StrawDigisFromStrawGasSteps_module.cc +++ b/TrackerMC/src/StrawDigisFromStrawGasSteps_module.cc @@ -447,7 +447,8 @@ namespace mu2e { const Tracker& tracker = *GeomHandle(); _rstraw = tracker.strawProperties()._strawInnerRadius; if ( _printLevel > 0 ) { - auto const& strawphys = _strawphys_h.get(run.id()); + // nominal subrun for debugging, calls in produce() give formal result + auto const& strawphys = _strawphys_h.get(art::EventID(run.run(),0,0)); strawphys.print(cout); } } From a92643737a2f846336dd81559c4dd818b2d939d7 Mon Sep 17 00:00:00 2001 From: Namitha Chithirasreemadam Date: Tue, 17 Mar 2026 21:18:42 -0500 Subject: [PATCH 14/54] bug fixes and count protons --- CalPatRec/src/DeltaFinder_module.cc | 1 + TrkHitReco/fcl/prolog.fcl | 2 ++ TrkHitReco/inc/DBSClusterer.hh | 1 - TrkHitReco/src/DBSClusterer.cc | 16 ++---------- TrkHitReco/src/FlagBkgHits_module.cc | 38 ++++++++++++++++++++++------ 5 files changed, 35 insertions(+), 23 deletions(-) diff --git a/CalPatRec/src/DeltaFinder_module.cc b/CalPatRec/src/DeltaFinder_module.cc index b2371914bc..83866870c6 100644 --- a/CalPatRec/src/DeltaFinder_module.cc +++ b/CalPatRec/src/DeltaFinder_module.cc @@ -422,6 +422,7 @@ namespace mu2e { //----------------------------------------------------------------------------- // 'ppii' - proton counting-based proxy to the stopped muon rate //----------------------------------------------------------------------------- + if(np15 > 0) std::cout<<"Number of proton candidates = "< ppii(new IntensityInfoTimeCluster(np15)); //----------------------------------------------------------------------------- // in the end of event processing fill diagnostic histograms diff --git a/TrkHitReco/fcl/prolog.fcl b/TrkHitReco/fcl/prolog.fcl index 623155c00d..13f443f7f1 100644 --- a/TrkHitReco/fcl/prolog.fcl +++ b/TrkHitReco/fcl/prolog.fcl @@ -164,6 +164,8 @@ TrkHitReco : { SaveBkgClusters : true CountProtons : true MinEdep : 0.003 + MinHits : 5 + MinFrac : 0.5 KerasQuality : 0.8 DebugLevel : 0 } diff --git a/TrkHitReco/inc/DBSClusterer.hh b/TrkHitReco/inc/DBSClusterer.hh index 30e9a0120d..2ae5217491 100644 --- a/TrkHitReco/inc/DBSClusterer.hh +++ b/TrkHitReco/inc/DBSClusterer.hh @@ -56,7 +56,6 @@ namespace mu2e { private: int findNeighbors (unsigned ihit, const std::vector& idx, const ComboHitCollection& chcol, std::vector& neighbors); void calculateCluster (BkgCluster& cluster, const ComboHitCollection& chcol); - void dump (const std::vector& clusters); int DBSminExpand_; float deltaTime_; diff --git a/TrkHitReco/src/DBSClusterer.cc b/TrkHitReco/src/DBSClusterer.cc index e59e8b7ca4..8f5cda48db 100644 --- a/TrkHitReco/src/DBSClusterer.cc +++ b/TrkHitReco/src/DBSClusterer.cc @@ -51,7 +51,6 @@ namespace mu2e const unsigned noiseID(chcol.size()+1u); const unsigned unprocessedID(chcol.size()+2u); unsigned currentClusterID(0); - //std::queue inspect; std::vector inspect; inspect.reserve(idx.size()); std::vector hitToCluster(idx.size(),unprocessedID); //number of combohits used for clustering, cluster ID @@ -104,7 +103,6 @@ namespace mu2e } //Calculate the cluster properties for (auto& cluster : clusters) calculateCluster(cluster, chcol); - if (diag_>1) dump(clusters); } //--------------------------------------------------------------------------------------- @@ -117,7 +115,8 @@ namespace mu2e float x0 = hit0.pos().x(); float y0 = hit0.pos().y(); float z0 = hit0.pos().z(); - unsigned nNeighbors = hit0.nStrawHits()-1; + int nNeighbors = 0; + if (hit0.nStrawhits > 0) nNeighbors = hit0.nStrawHits() - 1; float minTime = time0 - deltaTime_; auto it_start = std::lower_bound(idx.begin(), idx.end(), minTime, [&chcol](unsigned i, float val){ return chcol[i].correctedTime() < val; @@ -241,15 +240,4 @@ namespace mu2e cluster.setKerasQ(kerasout[0]); } - //------------------------------------------------------------------------------------------- - void DBSClusterer::dump(const std::vector& clusters) - { - int iclu(0); - for (auto& cluster: clusters) { - for (auto& hit : cluster.hits()) std::cout< saveBkgClusters{ Name("SaveBkgClusters"), Comment("Save bkg clusters") }; fhicl::Atom countProtons{ Name("CountProtons"), Comment("Count protons") }; fhicl::Atom minEdep{ Name("MinEdep"), Comment("Min Edep") }; + fhicl::Atom minHits{ Name("MinHits"), Comment("Min hits in a proton candidate cluster") }; + fhicl::Atom minFrac{ Name("MinFrac"), Comment("Min Frac") }; fhicl::Atom outputLevel{ Name("OutputLevel"), Comment("Level of the output ComboHitCollection") }; fhicl::OptionalTable TNTClustering{ Name("TNTClustering"), Comment("TNT Clusterer config") }; fhicl::OptionalTable Chi2Clustering{ Name("Chi2Clustering"), Comment("Chi2 Clusterer config") }; @@ -60,6 +63,8 @@ namespace mu2e bool savebkg_; bool countprotons_; float minedep_; + int minhits_; + float minfrac_; StrawHitFlag bkgmsk_; StrawIdMask::Level level_; std::unique_ptr clusterer_; @@ -69,7 +74,7 @@ namespace mu2e int iev_; void classifyCluster(BkgClusterCollection& bkgccol, StrawHitFlagCollection& chfcol, const ComboHitCollection& chcol, std::vector& hitToClusterMap) const; - void countProton(BkgClusterCollection& bkgccol, StrawHitFlagCollection& chfcol, const ComboHitCollection& chcol) const; + int countProton(BkgClusterCollection& bkgccol, StrawHitFlagCollection& chfcol, const ComboHitCollection& chcol) const; }; @@ -81,6 +86,8 @@ namespace mu2e savebkg_( config().saveBkgClusters()), countprotons_(config().countProtons()), minedep_( config().minEdep()), + minhits_( config().minHits()), + minfrac_( config().minFrac()), bkgmsk_( config().backgroundMask()), debug_( config().debugLevel()), kerasQ_( config().kerasQuality()), @@ -88,6 +95,8 @@ namespace mu2e { ConfigFileLookupPolicy configFile; produces(); + if(countprotons_) + produces(); if (savebkg_) { @@ -159,9 +168,6 @@ namespace mu2e std::vector hitToClusterMap(nch, -1); classifyCluster(bkgccol, chfcol, chcol, hitToClusterMap); - if(countprotons_) - countProton(bkgccol, chfcol, chcol); - auto chcol_out = std::make_unique(); if(chfcol.size()>0){ // same parent as the original collection @@ -215,6 +221,11 @@ namespace mu2e } } event.put(std::move(chcol_out)); + if(countprotons_){ + int nprotons = countProton(bkgccol, chfcol, chcol); + std::unique_ptr ppii(new IntensityInfoTimeCluster(nprotons)); + event.put(std::move(ppii)); + } //produce background collection if (savebkg_) { event.put(std::make_unique(bkghitcol)); @@ -228,7 +239,8 @@ namespace mu2e //------------------------------------------------------------------------------------------ void FlagBkgHits::classifyCluster(BkgClusterCollection& bkgccol, StrawHitFlagCollection& chfcol, const ComboHitCollection& chcol, std::vector& hitToClusterMap) const - { for (size_t icl =0; icl < bkgccol.size(); ++icl) { + { + for (size_t icl =0; icl < bkgccol.size(); ++icl) { auto& cluster = bkgccol[icl]; clusterer_->classifyCluster(cluster,chcol); StrawHitFlag flag(StrawHitFlag::bkgclust); @@ -244,18 +256,28 @@ namespace mu2e } //------------------------------------------------------------------------------------------ - void FlagBkgHits::countProton(BkgClusterCollection& bkgccol, StrawHitFlagCollection& chfcol, const ComboHitCollection& chcol) const - { for (size_t icl=0; icl < bkgccol.size(); ++icl) { + int FlagBkgHits::countProton(BkgClusterCollection& bkgccol, StrawHitFlagCollection& chfcol, const ComboHitCollection& chcol) const + { + int npc(0); + for (size_t icl=0; icl < bkgccol.size(); ++icl) { auto& cluster = bkgccol[icl]; bool isAlreadyBkg = cluster._flag.hasAllProperties(BkgClusterFlag::bkg); if (!isAlreadyBkg) { + int nhighedep(0); + int nhits = cluster.hits().size(); StrawHitFlag bkgFlag(StrawHitFlag::energysel); for (const auto& hitIdx : cluster.hits()) { - if (chcol[hitIdx].energyDep() > minedep_) + if (chcol[hitIdx].energyDep() > minedep_){ chfcol[hitIdx].merge(bkgFlag); + nhighedep++; + } } + //Placeholder logic, may change in the future + if(nhits > minhits_ and (float)nhighedep/nhits > minfrac_) + npc++; } } + return npc; } } From 6870390af45cb2ce9f7dcae0975e4e1e42dd4614 Mon Sep 17 00:00:00 2001 From: Namitha Chithirasreemadam Date: Tue, 17 Mar 2026 21:24:09 -0500 Subject: [PATCH 15/54] just removed a print out --- CalPatRec/src/DeltaFinder_module.cc | 1 - 1 file changed, 1 deletion(-) diff --git a/CalPatRec/src/DeltaFinder_module.cc b/CalPatRec/src/DeltaFinder_module.cc index 83866870c6..b2371914bc 100644 --- a/CalPatRec/src/DeltaFinder_module.cc +++ b/CalPatRec/src/DeltaFinder_module.cc @@ -422,7 +422,6 @@ namespace mu2e { //----------------------------------------------------------------------------- // 'ppii' - proton counting-based proxy to the stopped muon rate //----------------------------------------------------------------------------- - if(np15 > 0) std::cout<<"Number of proton candidates = "< ppii(new IntensityInfoTimeCluster(np15)); //----------------------------------------------------------------------------- // in the end of event processing fill diagnostic histograms From 5fac7a68937038bc102b8343805a0487d1b0899e Mon Sep 17 00:00:00 2001 From: Namitha Chithirasreemadam Date: Tue, 17 Mar 2026 21:35:38 -0500 Subject: [PATCH 16/54] Update DBSClusterer.cc --- TrkHitReco/src/DBSClusterer.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TrkHitReco/src/DBSClusterer.cc b/TrkHitReco/src/DBSClusterer.cc index 8f5cda48db..6a68f219b4 100644 --- a/TrkHitReco/src/DBSClusterer.cc +++ b/TrkHitReco/src/DBSClusterer.cc @@ -113,7 +113,7 @@ namespace mu2e const auto& hit0 = chcol[idx[ihit]]; float time0 = hit0.correctedTime(); float x0 = hit0.pos().x(); - float y0 = hit0.pos().y(); + float y0 = hit0.pos().y(); float z0 = hit0.pos().z(); int nNeighbors = 0; if (hit0.nStrawhits > 0) nNeighbors = hit0.nStrawHits() - 1; From b4e4d74df6327dad48d9341de3694611cdd86c71 Mon Sep 17 00:00:00 2001 From: Namitha Chithirasreemadam Date: Tue, 17 Mar 2026 21:58:53 -0500 Subject: [PATCH 17/54] just adding some comments --- TrkHitReco/src/DBSClusterer.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/TrkHitReco/src/DBSClusterer.cc b/TrkHitReco/src/DBSClusterer.cc index 6a68f219b4..65a1304abb 100644 --- a/TrkHitReco/src/DBSClusterer.cc +++ b/TrkHitReco/src/DBSClusterer.cc @@ -116,7 +116,8 @@ namespace mu2e float y0 = hit0.pos().y(); float z0 = hit0.pos().z(); int nNeighbors = 0; - if (hit0.nStrawhits > 0) nNeighbors = hit0.nStrawHits() - 1; + if (hit0.nStrawHits() > 0) nNeighbors = hit0.nStrawHits() - 1; + // Requirement: idx MUST be sorted by chcol[i].correctedTime() for this binary search to work float minTime = time0 - deltaTime_; auto it_start = std::lower_bound(idx.begin(), idx.end(), minTime, [&chcol](unsigned i, float val){ return chcol[i].correctedTime() < val; @@ -127,6 +128,8 @@ namespace mu2e const auto& hitj = chcol[idx[j]]; float dt = hitj.correctedTime() - time0; if (dt > deltaTime_) break; + // Time is already constrained by the lower_bound (backward) and the break (forward) + // Now check Spatial constraints if (std::abs(hitj.pos().z() - z0) > deltaZ_) continue; float dx = hitj.pos().x() - x0; float dy = hitj.pos().y() - y0; From 22c023adbb7b02263e9e8322bd5c61a41a965a2c Mon Sep 17 00:00:00 2001 From: Namitha Chithirasreemadam Date: Tue, 17 Mar 2026 23:14:41 -0500 Subject: [PATCH 18/54] cleaned up FlgBkgHits --- TrkHitReco/inc/TrainBkgDiagBDT.hxx | 22562 ------------------------- TrkHitReco/src/FlagBkgHits_module.cc | 79 +- 2 files changed, 29 insertions(+), 22612 deletions(-) delete mode 100644 TrkHitReco/inc/TrainBkgDiagBDT.hxx diff --git a/TrkHitReco/inc/TrainBkgDiagBDT.hxx b/TrkHitReco/inc/TrainBkgDiagBDT.hxx deleted file mode 100644 index a5a5eff899..0000000000 --- a/TrkHitReco/inc/TrainBkgDiagBDT.hxx +++ /dev/null @@ -1,22562 +0,0 @@ -#ifndef TRAINBKGDIAG_HXX -#define TRAINBKGDIAG_HXX - -/* * Standalone BDT Inference generated by m2cgen - */ - -namespace Mu2eML { - #include -#include -double sigmoid(double x) { - if (x < 0.0) { - double z = exp(x); - return z / (1.0 + z); - } - return 1.0 / (1.0 + exp(-x)); -} -double score(double * input) { - double var0; - if (input[1] < 96.294495) { - if (input[1] < 52.519287) { - if (input[0] < 409.8705) { - if (input[0] < 399.83472) { - var0 = 0.5739796; - } else { - if (input[4] < 14.698128) { - if (input[7] < 0.008550759) { - var0 = 0.15840723; - } else { - var0 = 0.495082; - } - } else { - if (input[6] < 0.03472593) { - var0 = -0.36410823; - } else { - var0 = 0.31320864; - } - } - } - } else { - if (input[0] < 609.04565) { - if (input[4] < 9.679946) { - if (input[3] < 6.0) { - var0 = -0.1212919; - } else { - var0 = 0.36200565; - } - } else { - if (input[3] < 6.0) { - var0 = -0.40702456; - } else { - var0 = -0.13299376; - } - } - } else { - if (input[0] < 631.8479) { - if (input[4] < 8.613837) { - var0 = 0.4093263; - } else { - var0 = 0.058798913; - } - } else { - if (input[0] < 647.514) { - var0 = 0.3893451; - } else { - var0 = 0.5180014; - } - } - } - } - } else { - if (input[0] < 647.514) { - if (input[0] < 615.92804) { - if (input[3] < 9.0) { - if (input[0] < 415.7414) { - var0 = 0.28047615; - } else { - var0 = -0.566803; - } - } else { - if (input[4] < 12.786485) { - var0 = 0.36051953; - } else { - var0 = -0.46027157; - } - } - } else { - if (input[3] < 11.0) { - if (input[1] < 55.399048) { - var0 = -0.31346208; - } else { - var0 = -0.494605; - } - } else { - if (input[2] < 0.10368276) { - var0 = 0.48624012; - } else { - var0 = -0.034797892; - } - } - } - } else { - if (input[0] < 670.5355) { - if (input[3] < 10.0) { - if (input[1] < 55.399048) { - var0 = -0.13656144; - } else { - var0 = -0.4054964; - } - } else { - if (input[5] < 21.164618) { - var0 = 0.43391067; - } else { - var0 = -0.13282871; - } - } - } else { - if (input[3] < 8.0) { - if (input[1] < 77.55432) { - var0 = -0.090880975; - } else { - var0 = -0.3141613; - } - } else { - if (input[1] < 78.21661) { - var0 = 0.44061485; - } else { - var0 = -0.19031934; - } - } - } - } - } - } else { - if (input[3] < 11.0) { - if (input[7] < 0.004288183) { - if (input[0] < 640.0981) { - if (input[0] < 437.31543) { - if (input[6] < 0.04715824) { - var0 = -0.34264153; - } else { - var0 = 0.25312343; - } - } else { - if (input[1] < 255.84222) { - var0 = -0.25092208; - } else { - var0 = -0.021982837; - } - } - } else { - if (input[0] < 662.8972) { - if (input[1] < 153.67346) { - var0 = 0.2940573; - } else { - var0 = 0.012932051; - } - } else { - if (input[1] < 289.02704) { - var0 = 0.2619668; - } else { - var0 = 0.44908363; - } - } - } - } else { - if (input[3] < 8.0) { - if (input[0] < 643.69525) { - if (input[0] < 444.15787) { - var0 = 0.32449108; - } else { - var0 = 0.018949285; - } - } else { - if (input[0] < 672.7553) { - var0 = 0.32652354; - } else { - var0 = 0.50369257; - } - } - } else { - if (input[7] < 0.008375866) { - if (input[4] < 38.459763) { - var0 = 0.30745634; - } else { - var0 = -0.27973735; - } - } else { - if (input[4] < 31.472792) { - var0 = 0.5010632; - } else { - var0 = 0.047983274; - } - } - } - } - } else { - if (input[7] < 0.0036698799) { - if (input[2] < 0.24309075) { - if (input[6] < 0.09237537) { - if (input[4] < 46.88934) { - var0 = 0.27885872; - } else { - var0 = -0.22800085; - } - } else { - if (input[3] < 16.0) { - var0 = 0.3606429; - } else { - var0 = 0.5762738; - } - } - } else { - if (input[0] < 471.70917) { - if (input[0] < 439.05417) { - var0 = 0.53856945; - } else { - var0 = 0.21777971; - } - } else { - if (input[4] < 51.153934) { - var0 = 0.16547482; - } else { - var0 = -0.39767256; - } - } - } - } else { - if (input[7] < 0.00513642) { - if (input[4] < 54.08032) { - if (input[3] < 16.0) { - var0 = 0.41079006; - } else { - var0 = 0.5433882; - } - } else { - if (input[3] < 30.0) { - var0 = -0.32058975; - } else { - var0 = 0.38242823; - } - } - } else { - if (input[3] < 14.0) { - if (input[4] < 37.62948) { - var0 = 0.5484211; - } else { - var0 = 0.16701388; - } - } else { - if (input[4] < 51.153934) { - var0 = 0.5912309; - } else { - var0 = 0.47744575; - } - } - } - } - } - } - double var1; - if (input[1] < 96.294495) { - if (input[1] < 52.519287) { - if (input[0] < 415.7414) { - if (input[0] < 403.76456) { - if (input[0] < 399.83472) { - if (input[6] < 0.062583044) { - var1 = 0.44420105; - } else { - var1 = 0.18551737; - } - } else { - if (input[3] < 6.0) { - var1 = 0.2623613; - } else { - var1 = 0.45950663; - } - } - } else { - if (input[4] < 21.927938) { - if (input[4] < 9.192085) { - var1 = 0.4541049; - } else { - var1 = 0.17730945; - } - } else { - if (input[5] < 18.949379) { - var1 = 0.28905395; - } else { - var1 = -0.3041917; - } - } - } - } else { - if (input[0] < 592.9258) { - if (input[4] < 5.1584697) { - if (input[5] < 17.986216) { - var1 = 0.36797982; - } else { - var1 = 0.07634347; - } - } else { - if (input[5] < 17.003792) { - var1 = 0.045417774; - } else { - var1 = -0.29752183; - } - } - } else { - if (input[0] < 630.6033) { - if (input[5] < 19.473267) { - var1 = 0.24971192; - } else { - var1 = -0.013609614; - } - } else { - if (input[0] < 647.514) { - var1 = 0.2822963; - } else { - var1 = 0.39157888; - } - } - } - } - } else { - if (input[0] < 629.365) { - if (input[3] < 10.0) { - if (input[0] < 579.40393) { - if (input[0] < 427.4725) { - var1 = 0.010370135; - } else { - var1 = -0.4396803; - } - } else { - if (input[1] < 53.298767) { - var1 = -0.282735; - } else { - var1 = -0.41037914; - } - } - } else { - if (input[2] < 0.07034141) { - if (input[5] < 23.824898) { - var1 = 0.38543284; - } else { - var1 = -0.15534267; - } - } else { - if (input[5] < 20.485325) { - var1 = -0.087964684; - } else { - var1 = -0.3817848; - } - } - } - } else { - if (input[0] < 668.3814) { - if (input[3] < 9.0) { - if (input[1] < 55.399048) { - var1 = -0.14964122; - } else { - var1 = -0.33805183; - } - } else { - if (input[4] < 23.34669) { - var1 = 0.47574446; - } else { - var1 = -0.1372876; - } - } - } else { - if (input[3] < 8.0) { - if (input[2] < 0.08450693) { - var1 = -0.07832943; - } else { - var1 = -0.2690299; - } - } else { - if (input[1] < 78.21661) { - var1 = 0.35319614; - } else { - var1 = -0.15327981; - } - } - } - } - } - } else { - if (input[3] < 10.0) { - if (input[7] < 0.0061051412) { - if (input[0] < 624.53723) { - if (input[0] < 440.8873) { - if (input[6] < 0.041540217) { - var1 = -0.24340566; - } else { - var1 = 0.18732752; - } - } else { - if (input[1] < 255.84222) { - var1 = -0.18256785; - } else { - var1 = 0.023306511; - } - } - } else { - if (input[0] < 658.2878) { - if (input[1] < 150.89111) { - var1 = 0.25817215; - } else { - var1 = -0.0036412643; - } - } else { - if (input[4] < 34.13175) { - var1 = 0.30225742; - } else { - var1 = 0.1316707; - } - } - } - } else { - if (input[1] < 255.84222) { - if (input[1] < 147.89758) { - if (input[3] < 7.0) { - var1 = 0.12837149; - } else { - var1 = 0.4178888; - } - } else { - if (input[0] < 646.2121) { - var1 = -0.007036889; - } else { - var1 = 0.26628998; - } - } - } else { - if (input[1] < 381.45337) { - if (input[5] < 20.750168) { - var1 = 0.42541185; - } else { - var1 = 0.29750893; - } - } else { - if (input[4] < 36.36606) { - var1 = 0.45941597; - } else { - var1 = -0.004462251; - } - } - } - } - } else { - if (input[7] < 0.0033036456) { - if (input[6] < 0.5004946) { - if (input[4] < 49.35926) { - if (input[3] < 13.0) { - var1 = 0.010645548; - } else { - var1 = 0.26446223; - } - } else { - if (input[3] < 23.0) { - var1 = -0.33923697; - } else { - var1 = 0.09932182; - } - } - } else { - if (input[3] < 22.0) { - if (input[2] < 0.18825138) { - var1 = 0.34778628; - } else { - var1 = 0.060296495; - } - } else { - if (input[2] < 0.300006) { - var1 = 0.4768464; - } else { - var1 = 0.32630646; - } - } - } - } else { - if (input[7] < 0.0049699554) { - if (input[4] < 54.08032) { - if (input[3] < 13.0) { - var1 = 0.22332211; - } else { - var1 = 0.378719; - } - } else { - if (input[3] < 21.0) { - var1 = -0.4359205; - } else { - var1 = 0.08509123; - } - } - } else { - if (input[3] < 12.0) { - if (input[4] < 34.540356) { - var1 = 0.39566925; - } else { - var1 = 0.05141637; - } - } else { - if (input[7] < 0.0064245304) { - var1 = 0.41907132; - } else { - var1 = 0.4569933; - } - } - } - } - } - } - double var2; - if (input[1] < 96.294495) { - if (input[1] < 52.519287) { - if (input[0] < 425.37012) { - if (input[4] < 17.239592) { - if (input[3] < 6.0) { - if (input[0] < 399.83472) { - var2 = 0.37581798; - } else { - var2 = 0.19729574; - } - } else { - if (input[2] < 0.008977376) { - var2 = 0.4140837; - } else { - var2 = 0.0049056085; - } - } - } else { - if (input[6] < 0.041540217) { - if (input[5] < 17.90769) { - var2 = 0.11978697; - } else { - var2 = -0.3450795; - } - } else { - if (input[4] < 24.423347) { - var2 = 0.31307814; - } else { - var2 = -0.13900556; - } - } - } - } else { - if (input[0] < 588.9621) { - if (input[3] < 7.0) { - if (input[4] < 13.053429) { - var2 = -0.10318263; - } else { - var2 = -0.2684223; - } - } else { - if (input[2] < 0.008977376) { - var2 = 0.48059854; - } else { - var2 = -0.17692554; - } - } - } else { - if (input[0] < 631.8479) { - if (input[4] < 13.317816) { - var2 = 0.1766314; - } else { - var2 = -0.042429496; - } - } else { - if (input[2] < 0.017481804) { - var2 = 0.30915973; - } else { - var2 = 0.114156894; - } - } - } - } - } else { - if (input[0] < 626.9239) { - if (input[3] < 8.0) { - if (input[2] < 0.06679523) { - if (input[0] < 431.5945) { - var2 = 0.3012848; - } else { - var2 = -0.34841886; - } - } else { - if (input[1] < 54.414856) { - var2 = -0.34131616; - } else { - var2 = -0.38402382; - } - } - } else { - if (input[4] < 21.405123) { - if (input[5] < 19.524868) { - var2 = 0.13238464; - } else { - var2 = -0.21678917; - } - } else { - if (input[3] < 12.0) { - var2 = -0.33850223; - } else { - var2 = 0.07158532; - } - } - } - } else { - if (input[0] < 675.009) { - if (input[3] < 11.0) { - if (input[1] < 55.399048) { - var2 = -0.10589461; - } else { - var2 = -0.2552641; - } - } else { - if (input[2] < 0.112553775) { - var2 = 0.4326715; - } else { - var2 = 0.0051788525; - } - } - } else { - if (input[5] < 18.437906) { - if (input[0] < 685.8291) { - var2 = 0.032379527; - } else { - var2 = 0.24467883; - } - } else { - if (input[1] < 78.480835) { - var2 = -0.018822443; - } else { - var2 = -0.21219136; - } - } - } - } - } - } else { - if (input[3] < 12.0) { - if (input[7] < 0.003726883) { - if (input[0] < 615.92804) { - if (input[0] < 418.34677) { - if (input[6] < 0.064966485) { - var2 = 0.006911916; - } else { - var2 = 0.33039495; - } - } else { - if (input[7] < 0.002544325) { - var2 = -0.20859733; - } else { - var2 = -0.10075294; - } - } - } else { - if (input[2] < 0.17603564) { - if (input[1] < 272.0462) { - var2 = 0.029668147; - } else { - var2 = 0.21624129; - } - } else { - if (input[1] < 460.6717) { - var2 = -0.2803981; - } else { - var2 = 0.26952133; - } - } - } - } else { - if (input[1] < 255.84222) { - if (input[7] < 0.01122595) { - if (input[3] < 7.0) { - var2 = -0.05488918; - } else { - var2 = 0.09715689; - } - } else { - if (input[3] < 7.0) { - var2 = 0.13371827; - } else { - var2 = 0.31651813; - } - } - } else { - if (input[7] < 0.0067613916) { - if (input[5] < 18.892052) { - var2 = 0.38788092; - } else { - var2 = 0.1592363; - } - } else { - if (input[1] < 376.36365) { - var2 = 0.2915667; - } else { - var2 = 0.37401822; - } - } - } - } - } else { - if (input[4] < 45.96011) { - if (input[7] < 0.004422581) { - if (input[3] < 15.0) { - if (input[4] < 39.41097) { - var2 = 0.29021442; - } else { - var2 = 0.05910119; - } - } else { - if (input[5] < 24.9099) { - var2 = 0.37534067; - } else { - var2 = 0.24420491; - } - } - } else { - if (input[3] < 16.0) { - if (input[4] < 34.82185) { - var2 = 0.36855355; - } else { - var2 = 0.23121081; - } - } else { - if (input[5] < 26.584965) { - var2 = 0.39800757; - } else { - var2 = 0.368251; - } - } - } - } else { - if (input[3] < 22.0) { - if (input[7] < 0.00022194226) { - if (input[2] < 0.27443242) { - var2 = 0.2930042; - } else { - var2 = -0.10641442; - } - } else { - if (input[4] < 54.08032) { - var2 = -0.0449347; - } else { - var2 = -0.31447566; - } - } - } else { - if (input[2] < 0.3723327) { - if (input[3] < 31.0) { - var2 = 0.24314342; - } else { - var2 = 0.40237078; - } - } else { - if (input[3] < 36.0) { - var2 = -0.2725906; - } else { - var2 = 0.2539957; - } - } - } - } - } - } - double var3; - if (input[1] < 96.294495) { - if (input[2] < 0.008977376) { - if (input[3] < 6.0) { - if (input[0] < 406.91656) { - if (input[0] < 399.83472) { - if (input[5] < 27.204857) { - var3 = 0.33670986; - } else { - var3 = 0.18860324; - } - } else { - if (input[5] < 20.352009) { - var3 = 0.36650148; - } else { - var3 = 0.07176247; - } - } - } else { - if (input[0] < 592.9258) { - if (input[4] < 3.4118037) { - var3 = 0.1854313; - } else { - var3 = -0.1888334; - } - } else { - if (input[0] < 635.4403) { - var3 = -0.0076091876; - } else { - var3 = 0.21823044; - } - } - } - } else { - if (input[1] < 54.414856) { - if (input[5] < 23.215124) { - if (input[3] < 7.0) { - var3 = 0.32124752; - } else { - var3 = 0.42088413; - } - } else { - if (input[4] < 16.083313) { - var3 = 0.20336524; - } else { - var3 = -0.076192975; - } - } - } else { - if (input[4] < 5.1584697) { - var3 = 0.14375629; - } else { - if (input[0] < 649.94415) { - var3 = -0.31798527; - } else { - var3 = -0.05167107; - } - } - } - } - } else { - if (input[0] < 622.0128) { - if (input[3] < 8.0) { - if (input[1] < 54.414856) { - if (input[0] < 550.7292) { - var3 = -0.31367952; - } else { - var3 = -0.22153427; - } - } else { - if (input[1] < 59.12854) { - var3 = -0.34877792; - } else { - var3 = -0.31623185; - } - } - } else { - if (input[1] < 77.55432) { - if (input[5] < 18.639524) { - var3 = 0.25690573; - } else { - var3 = -0.18698017; - } - } else { - if (input[0] < 454.6105) { - var3 = 0.31618577; - } else { - var3 = -0.31227413; - } - } - } - } else { - if (input[0] < 657.11444) { - if (input[2] < 0.07323933) { - if (input[3] < 9.0) { - var3 = -0.16865952; - } else { - var3 = 0.34776333; - } - } else { - if (input[1] < 77.55432) { - var3 = -0.2329794; - } else { - var3 = -0.3346637; - } - } - } else { - if (input[3] < 8.0) { - if (input[1] < 55.399048) { - var3 = 0.049308002; - } else { - var3 = -0.12850037; - } - } else { - if (input[1] < 77.55432) { - var3 = 0.41330504; - } else { - var3 = -0.05503421; - } - } - } - } - } - } else { - if (input[3] < 12.0) { - if (input[4] < 27.141476) { - if (input[3] < 7.0) { - if (input[0] < 605.7406) { - if (input[0] < 418.34677) { - var3 = 0.26532623; - } else { - var3 = -0.035553966; - } - } else { - if (input[1] < 150.89111) { - var3 = 0.2685559; - } else { - var3 = 0.11504838; - } - } - } else { - if (input[1] < 147.89758) { - if (input[6] < 0.04715824) { - var3 = 0.2987848; - } else { - var3 = 0.42224914; - } - } else { - if (input[3] < 9.0) { - var3 = 0.084588796; - } else { - var3 = 0.2722083; - } - } - } - } else { - if (input[0] < 658.2878) { - if (input[1] < 255.84222) { - if (input[1] < 147.89758) { - var3 = 0.013357962; - } else { - var3 = -0.1717157; - } - } else { - if (input[4] < 38.911335) { - var3 = 0.100643076; - } else { - var3 = -0.13375117; - } - } - } else { - if (input[1] < 255.84222) { - if (input[2] < 0.14738971) { - var3 = 0.13253845; - } else { - var3 = -0.1966184; - } - } else { - if (input[2] < 0.21310979) { - var3 = 0.28282008; - } else { - var3 = -0.35031053; - } - } - } - } - } else { - if (input[7] < 0.0041569136) { - if (input[2] < 0.27443242) { - if (input[3] < 17.0) { - if (input[4] < 42.829258) { - var3 = 0.20541076; - } else { - var3 = -0.06228376; - } - } else { - if (input[5] < 21.6294) { - var3 = 0.38919058; - } else { - var3 = 0.25216642; - } - } - } else { - if (input[0] < 485.39822) { - if (input[3] < 15.0) { - var3 = 0.085008964; - } else { - var3 = 0.3629604; - } - } else { - if (input[4] < 58.806583) { - var3 = 0.09476666; - } else { - var3 = -0.31547883; - } - } - } - } else { - if (input[7] < 0.005805585) { - if (input[4] < 49.35926) { - if (input[6] < 0.036230333) { - var3 = 0.10510117; - } else { - var3 = 0.29533738; - } - } else { - if (input[3] < 24.0) { - var3 = -0.38900295; - } else { - var3 = 0.1807513; - } - } - } else { - if (input[3] < 16.0) { - if (input[4] < 39.41097) { - var3 = 0.33237845; - } else { - var3 = -0.1737086; - } - } else { - if (input[6] < 0.059820402) { - var3 = 0.36482313; - } else { - var3 = 0.33763573; - } - } - } - } - } - } - double var4; - if (input[1] < 96.294495) { - if (input[1] < 52.519287) { - if (input[0] < 431.5945) { - if (input[4] < 14.698128) { - if (input[5] < 20.57342) { - if (input[6] < 0.0051328884) { - var4 = 0.24856745; - } else { - var4 = 0.3920412; - } - } else { - if (input[6] < 0.022136807) { - var4 = 0.165372; - } else { - var4 = 0.33399463; - } - } - } else { - if (input[6] < 0.035672467) { - if (input[5] < 16.555506) { - var4 = 0.23798619; - } else { - var4 = -0.28398877; - } - } else { - if (input[4] < 22.134548) { - var4 = 0.30093926; - } else { - var4 = 0.0009469486; - } - } - } - } else { - if (input[0] < 572.0283) { - if (input[5] < 17.90769) { - if (input[5] < 14.48199) { - var4 = 0.2520964; - } else { - var4 = 0.0025921718; - } - } else { - if (input[4] < 13.793873) { - var4 = -0.095126875; - } else { - var4 = -0.20818481; - } - } - } else { - if (input[0] < 625.711) { - if (input[4] < 8.613837) { - var4 = 0.17294854; - } else { - var4 = -0.03528382; - } - } else { - if (input[0] < 666.15076) { - var4 = 0.15081853; - } else { - var4 = 0.2999773; - } - } - } - } - } else { - if (input[0] < 615.92804) { - if (input[4] < 14.26258) { - if (input[3] < 7.0) { - if (input[4] < 6.3997884) { - var4 = -0.059609015; - } else { - var4 = -0.25240818; - } - } else { - if (input[5] < 18.437906) { - var4 = 0.22108808; - } else { - var4 = -0.115203775; - } - } - } else { - if (input[3] < 8.0) { - if (input[0] < 573.7609) { - var4 = -0.31128016; - } else { - var4 = -0.2708069; - } - } else { - if (input[4] < 25.82959) { - var4 = -0.11814686; - } else { - var4 = -0.2803764; - } - } - } - } else { - if (input[0] < 653.56573) { - if (input[3] < 9.0) { - if (input[1] < 55.399048) { - var4 = -0.071096525; - } else { - var4 = -0.21242705; - } - } else { - if (input[1] < 77.55432) { - var4 = 0.34997338; - } else { - var4 = -0.074446835; - } - } - } else { - if (input[5] < 21.282642) { - if (input[1] < 78.383545) { - var4 = 0.05198471; - } else { - var4 = -0.13520893; - } - } else { - if (input[0] < 680.3219) { - var4 = -0.16062467; - } else { - var4 = -0.0030852018; - } - } - } - } - } - } else { - if (input[3] < 13.0) { - if (input[7] < 0.007193277) { - if (input[0] < 667.30505) { - if (input[0] < 429.60077) { - if (input[3] < 7.0) { - var4 = 0.0469773; - } else { - var4 = 0.30648074; - } - } else { - if (input[4] < 38.23957) { - var4 = -0.019664988; - } else { - var4 = -0.1427575; - } - } - } else { - if (input[1] < 289.02704) { - if (input[2] < 0.112553775) { - var4 = 0.20449062; - } else { - var4 = -0.0039130673; - } - } else { - if (input[2] < 0.18675008) { - var4 = 0.2975944; - } else { - var4 = -0.061050404; - } - } - } - } else { - if (input[1] < 255.84222) { - if (input[4] < 21.723177) { - if (input[7] < 0.018963357) { - var4 = 0.07626941; - } else { - var4 = 0.2121733; - } - } else { - if (input[0] < 600.2424) { - var4 = -0.11999158; - } else { - var4 = 0.1055148; - } - } - } else { - if (input[5] < 20.880156) { - if (input[6] < 0.060177866) { - var4 = 0.32097572; - } else { - var4 = -0.028571123; - } - } else { - if (input[1] < 376.36365) { - var4 = 0.180455; - } else { - var4 = 0.29552168; - } - } - } - } - } else { - if (input[4] < 45.20362) { - if (input[7] < 0.0048943935) { - if (input[5] < 23.064898) { - if (input[3] < 16.0) { - var4 = 0.24240245; - } else { - var4 = 0.32154292; - } - } else { - if (input[6] < 0.04336643) { - var4 = -0.17028207; - } else { - var4 = 0.16175969; - } - } - } else { - if (input[3] < 17.0) { - if (input[4] < 35.71706) { - var4 = 0.3066491; - } else { - var4 = 0.14671345; - } - } else { - if (input[5] < 24.673338) { - var4 = 0.34201175; - } else { - var4 = 0.31642103; - } - } - } - } else { - if (input[3] < 27.0) { - if (input[7] < 0.00022194226) { - if (input[2] < 0.22287011) { - var4 = 0.28981873; - } else { - var4 = -0.006165528; - } - } else { - if (input[4] < 58.806583) { - var4 = 0.009483793; - } else { - var4 = -0.27900052; - } - } - } else { - if (input[2] < 0.3723327) { - if (input[3] < 31.0) { - var4 = 0.20934898; - } else { - var4 = 0.3319599; - } - } else { - if (input[0] < 586.0259) { - var4 = 0.24210046; - } else { - var4 = -0.14975837; - } - } - } - } - } - } - double var5; - if (input[3] < 9.0) { - if (input[1] < 96.294495) { - if (input[1] < 52.952087) { - if (input[3] < 6.0) { - if (input[4] < 7.9895897) { - if (input[0] < 451.8147) { - var5 = 0.2594754; - } else { - var5 = 0.010059318; - } - } else { - if (input[5] < 19.882984) { - var5 = -0.006142803; - } else { - var5 = -0.13853726; - } - } - } else { - if (input[2] < 0.008977376) { - if (input[5] < 22.832607) { - var5 = 0.27522913; - } else { - var5 = 0.07530433; - } - } else { - if (input[0] < 619.6026) { - var5 = -0.2164002; - } else { - var5 = 0.17443287; - } - } - } - } else { - if (input[0] < 615.92804) { - if (input[2] < 0.06494424) { - if (input[0] < 433.54276) { - var5 = 0.3914893; - } else { - var5 = -0.23385584; - } - } else { - if (input[1] < 54.414856) { - var5 = -0.222313; - } else { - var5 = -0.2890437; - } - } - } else { - if (input[2] < 0.07443881) { - if (input[3] < 7.0) { - var5 = -0.101719745; - } else { - var5 = 0.084399834; - } - } else { - if (input[1] < 77.55432) { - var5 = -0.13779084; - } else { - var5 = -0.26194736; - } - } - } - } - } else { - if (input[0] < 598.1789) { - if (input[0] < 455.97122) { - if (input[7] < 0.005177345) { - if (input[6] < 0.048940413) { - var5 = -0.19243221; - } else { - var5 = 0.09241978; - } - } else { - if (input[3] < 6.0) { - var5 = 0.06791069; - } else { - var5 = 0.21067424; - } - } - } else { - if (input[1] < 272.0462) { - if (input[4] < 16.582067) { - var5 = 0.024640463; - } else { - var5 = -0.11578628; - } - } else { - if (input[5] < 18.220026) { - var5 = 0.27968743; - } else { - var5 = 0.018035347; - } - } - } - } else { - if (input[5] < 19.831963) { - if (input[4] < 32.274986) { - if (input[4] < 16.909874) { - var5 = 0.3009187; - } else { - var5 = 0.18988004; - } - } else { - if (input[5] < 13.509364) { - var5 = 0.39916623; - } else { - var5 = 0.036566243; - } - } - } else { - if (input[1] < 150.89111) { - if (input[3] < 8.0) { - var5 = 0.1394383; - } else { - var5 = 0.3174048; - } - } else { - if (input[1] < 255.84222) { - var5 = -0.053451363; - } else { - var5 = 0.11842262; - } - } - } - } - } - } else { - if (input[7] < 0.005354749) { - if (input[4] < 38.23957) { - if (input[5] < 21.6294) { - if (input[1] < 81.0188) { - if (input[4] < 26.84426) { - var5 = 0.37148744; - } else { - var5 = -0.1090986; - } - } else { - if (input[1] < 149.04504) { - var5 = 0.4170559; - } else { - var5 = 0.22925365; - } - } - } else { - if (input[6] < 0.049783602) { - if (input[0] < 583.14703) { - var5 = -0.10988006; - } else { - var5 = 0.08554778; - } - } else { - if (input[1] < 148.60223) { - var5 = 0.3553092; - } else { - var5 = 0.16490772; - } - } - } - } else { - if (input[3] < 16.0) { - if (input[0] < 461.0655) { - if (input[6] < 0.08433238) { - var5 = -0.068396196; - } else { - var5 = 0.27476063; - } - } else { - if (input[5] < 19.188658) { - var5 = 0.116125405; - } else { - var5 = -0.12014901; - } - } - } else { - if (input[2] < 0.32127088) { - if (input[6] < 0.044667512) { - var5 = -0.37180737; - } else { - var5 = 0.19510545; - } - } else { - if (input[0] < 485.39822) { - var5 = 0.2911489; - } else { - var5 = -0.19803637; - } - } - } - } - } else { - if (input[3] < 14.0) { - if (input[4] < 23.075237) { - if (input[5] < 21.785055) { - if (input[4] < 15.897472) { - var5 = 0.34729832; - } else { - var5 = 0.29479; - } - } else { - if (input[0] < 454.6105) { - var5 = 0.3263851; - } else { - var5 = 0.19781403; - } - } - } else { - if (input[6] < 0.027742133) { - if (input[0] < 652.3909) { - var5 = -0.2542954; - } else { - var5 = 0.12896706; - } - } else { - if (input[4] < 34.26512) { - var5 = 0.20223959; - } else { - var5 = -0.022584856; - } - } - } - } else { - if (input[7] < 0.0074036974) { - if (input[4] < 47.95029) { - if (input[5] < 22.68546) { - var5 = 0.31404662; - } else { - var5 = 0.24943624; - } - } else { - if (input[3] < 25.0) { - var5 = -0.5779298; - } else { - var5 = 0.23285389; - } - } - } else { - if (input[5] < 33.48466) { - if (input[0] < 570.25055) { - var5 = 0.30642104; - } else { - var5 = 0.3297264; - } - } else { - if (input[2] < 0.300006) { - var5 = 0.23966265; - } else { - var5 = -0.17268527; - } - } - } - } - } - } - double var6; - if (input[1] < 272.0462) { - if (input[1] < 81.83862) { - if (input[1] < 54.414856) { - if (input[3] < 6.0) { - if (input[4] < 14.046501) { - if (input[0] < 447.375) { - var6 = 0.17204899; - } else { - var6 = -0.03443189; - } - } else { - if (input[0] < 557.74005) { - var6 = -0.15824066; - } else { - var6 = -0.056619834; - } - } - } else { - if (input[5] < 21.40085) { - if (input[3] < 7.0) { - var6 = 0.16362226; - } else { - var6 = 0.37616643; - } - } else { - if (input[4] < 10.959761) { - var6 = 0.18993263; - } else { - var6 = -0.041869774; - } - } - } - } else { - if (input[0] < 622.0128) { - if (input[1] < 59.12854) { - if (input[3] < 8.0) { - var6 = -0.27827194; - } else { - var6 = -0.1200404; - } - } else { - if (input[1] < 78.21661) { - var6 = -0.09793901; - } else { - var6 = -0.26317522; - } - } - } else { - if (input[1] < 56.73535) { - if (input[3] < 8.0) { - var6 = -0.18279098; - } else { - var6 = 0.20636816; - } - } else { - if (input[1] < 77.55432) { - var6 = 0.07611321; - } else { - var6 = -0.14790167; - } - } - } - } - } else { - if (input[1] < 147.89758) { - if (input[1] < 121.57103) { - if (input[3] < 7.0) { - if (input[0] < 573.7609) { - var6 = -0.14964253; - } else { - var6 = 0.055644825; - } - } else { - if (input[4] < 31.694513) { - var6 = 0.23797266; - } else { - var6 = 0.05534341; - } - } - } else { - if (input[3] < 9.0) { - if (input[3] < 6.0) { - var6 = 0.0773767; - } else { - var6 = 0.1802769; - } - } else { - if (input[6] < 0.05220808) { - var6 = 0.30137426; - } else { - var6 = 0.35950232; - } - } - } - } else { - if (input[5] < 19.783344) { - if (input[1] < 191.00214) { - if (input[0] < 581.3013) { - var6 = -0.09809481; - } else { - var6 = 0.0989347; - } - } else { - if (input[5] < 16.792095) { - var6 = 0.21461582; - } else { - var6 = 0.08677187; - } - } - } else { - if (input[0] < 668.3814) { - if (input[1] < 177.04877) { - var6 = -0.13919559; - } else { - var6 = -0.050769314; - } - } else { - if (input[4] < 30.692364) { - var6 = 0.17033058; - } else { - var6 = -0.027853027; - } - } - } - } - } - } else { - if (input[7] < 0.005489262) { - if (input[5] < 21.40085) { - if (input[5] < 17.493734) { - if (input[2] < 0.23503518) { - if (input[5] < 13.509364) { - var6 = 0.40216357; - } else { - var6 = 0.27204877; - } - } else { - if (input[1] < 465.96875) { - var6 = -0.23961093; - } else { - var6 = 0.2855509; - } - } - } else { - if (input[3] < 13.0) { - if (input[2] < 0.2476418) { - var6 = 0.113707595; - } else { - var6 = -0.20821983; - } - } else { - if (input[2] < 0.24309075) { - var6 = 0.25904232; - } else { - var6 = 0.099659465; - } - } - } - } else { - if (input[4] < 43.929493) { - if (input[1] < 460.6717) { - if (input[6] < 0.053143427) { - var6 = -0.031530418; - } else { - var6 = 0.090219066; - } - } else { - if (input[6] < 0.04355297) { - var6 = 0.016696157; - } else { - var6 = 0.21483849; - } - } - } else { - if (input[6] < 0.5004946) { - if (input[6] < 0.054671705) { - var6 = -0.38562247; - } else { - var6 = -0.09039822; - } - } else { - if (input[0] < 512.96185) { - var6 = 0.2892262; - } else { - var6 = 0.09203703; - } - } - } - } - } else { - if (input[1] < 421.82605) { - if (input[5] < 20.662508) { - if (input[3] < 10.0) { - if (input[6] < 0.059464313) { - var6 = 0.20134254; - } else { - var6 = -0.36217633; - } - } else { - if (input[4] < 41.197132) { - var6 = 0.29896957; - } else { - var6 = -0.029389983; - } - } - } else { - if (input[4] < 34.974888) { - if (input[3] < 12.0) { - var6 = 0.10228274; - } else { - var6 = 0.24907446; - } - } else { - if (input[3] < 17.0) { - var6 = -0.39167222; - } else { - var6 = 0.16864932; - } - } - } - } else { - if (input[5] < 23.947874) { - if (input[1] < 521.543) { - if (input[5] < 21.592127) { - var6 = 0.31095937; - } else { - var6 = 0.22091699; - } - } else { - if (input[4] < 46.88934) { - var6 = 0.31435093; - } else { - var6 = 0.20144199; - } - } - } else { - if (input[7] < 0.008375866) { - if (input[6] < 0.0413519) { - var6 = 0.07394248; - } else { - var6 = 0.25408235; - } - } else { - if (input[6] < 0.09936261) { - var6 = 0.28580487; - } else { - var6 = -0.076252826; - } - } - } - } - } - } - double var7; - if (input[1] < 432.44418) { - if (input[1] < 81.83862) { - if (input[2] < 0.033970356) { - if (input[0] < 435.46625) { - if (input[0] < 403.76456) { - if (input[0] < 399.83472) { - var7 = 0.28361258; - } else { - var7 = 0.16621111; - } - } else { - if (input[6] < 0.027742133) { - var7 = -0.012959738; - } else { - var7 = 0.16142155; - } - } - } else { - if (input[0] < 588.9621) { - if (input[4] < 5.1584697) { - var7 = 0.053607214; - } else { - var7 = -0.10465012; - } - } else { - if (input[4] < 6.3997884) { - var7 = 0.2138098; - } else { - var7 = 0.033866953; - } - } - } - } else { - if (input[0] < 602.4093) { - if (input[2] < 0.10014308) { - if (input[3] < 8.0) { - var7 = -0.20842719; - } else { - var7 = -0.051825013; - } - } else { - if (input[3] < 12.0) { - var7 = -0.26293185; - } else { - var7 = 0.10310472; - } - } - } else { - if (input[0] < 665.0621) { - if (input[1] < 78.21661) { - var7 = -0.071184434; - } else { - var7 = -0.18447497; - } - } else { - if (input[5] < 25.194532) { - var7 = 0.060802426; - } else { - var7 = -0.121479586; - } - } - } - } - } else { - if (input[4] < 29.561077) { - if (input[3] < 9.0) { - if (input[6] < 0.049576316) { - if (input[4] < 21.723177) { - var7 = 0.052622408; - } else { - var7 = -0.045598507; - } - } else { - if (input[4] < 25.647543) { - var7 = 0.2512787; - } else { - var7 = 0.09161566; - } - } - } else { - if (input[5] < 22.133734) { - if (input[1] < 148.36841) { - var7 = 0.32684872; - } else { - var7 = 0.22283432; - } - } else { - if (input[1] < 170.5625) { - var7 = 0.2670378; - } else { - var7 = 0.083376825; - } - } - } - } else { - if (input[3] < 14.0) { - if (input[0] < 654.6809) { - if (input[6] < 0.04373461) { - var7 = -0.17092204; - } else { - var7 = -0.04193461; - } - } else { - if (input[5] < 19.473267) { - var7 = 0.14254001; - } else { - var7 = 0.02352188; - } - } - } else { - if (input[4] < 41.570618) { - if (input[3] < 17.0) { - var7 = 0.15910703; - } else { - var7 = 0.2813953; - } - } else { - if (input[3] < 18.0) { - var7 = -0.039366826; - } else { - var7 = 0.19210438; - } - } - } - } - } - } else { - if (input[7] < 0.0048943935) { - if (input[2] < 0.28529787) { - if (input[6] < 0.113757454) { - if (input[4] < 51.153934) { - if (input[5] < 20.308914) { - var7 = 0.2706435; - } else { - var7 = 0.09655887; - } - } else { - if (input[4] < 58.806583) { - var7 = -0.072834596; - } else { - var7 = -0.33632648; - } - } - } else { - if (input[4] < 266.78564) { - if (input[3] < 23.0) { - var7 = 0.52885276; - } else { - var7 = 0.3428436; - } - } else { - if (input[2] < 0.18970776) { - var7 = 0.31265554; - } else { - var7 = 0.1626814; - } - } - } - } else { - if (input[4] < 58.806583) { - if (input[3] < 16.0) { - if (input[4] < 51.153934) { - var7 = 0.17658769; - } else { - var7 = -0.27850112; - } - } else { - if (input[1] < 869.74097) { - var7 = 0.3114972; - } else { - var7 = 0.06958815; - } - } - } else { - if (input[3] < 36.0) { - if (input[6] < 2.5102012) { - var7 = -0.2779934; - } else { - var7 = 0.13187635; - } - } else { - if (input[1] < 1184.6289) { - var7 = 0.43987393; - } else { - var7 = -0.009747811; - } - } - } - } - } else { - if (input[7] < 0.008053657) { - if (input[4] < 47.95029) { - if (input[6] < 0.0404656) { - if (input[0] < 651.1857) { - var7 = 0.05684725; - } else { - var7 = 0.2671491; - } - } else { - if (input[5] < 21.943466) { - var7 = 0.3025243; - } else { - var7 = 0.23486686; - } - } - } else { - if (input[3] < 28.0) { - if (input[0] < 566.57983) { - var7 = -0.012495867; - } else { - var7 = -0.42356172; - } - } else { - if (input[4] < 54.08032) { - var7 = 0.25382876; - } else { - var7 = 0.04537982; - } - } - } - } else { - if (input[0] < 575.62115) { - if (input[4] < 37.437794) { - if (input[2] < 0.06556158) { - var7 = 0.100588165; - } else { - var7 = 0.28080142; - } - } else { - if (input[3] < 18.0) { - var7 = -0.41246405; - } else { - var7 = 0.19091478; - } - } - } else { - if (input[3] < 15.0) { - if (input[6] < 0.049576316) { - var7 = 0.25891885; - } else { - var7 = -0.09726493; - } - } else { - var7 = 0.3140422; - } - } - } - } - } - double var8; - if (input[3] < 10.0) { - if (input[1] < 121.57103) { - if (input[4] < 17.07824) { - if (input[0] < 447.375) { - if (input[6] < 0.030572092) { - if (input[4] < 13.053429) { - var8 = 0.16197833; - } else { - var8 = -0.1004075; - } - } else { - if (input[6] < 0.03770539) { - var8 = 0.24891925; - } else { - var8 = 0.41232193; - } - } - } else { - if (input[0] < 572.0283) { - if (input[3] < 7.0) { - var8 = -0.09097968; - } else { - var8 = 0.08166401; - } - } else { - if (input[0] < 643.69525) { - var8 = 0.01307401; - } else { - var8 = 0.13677424; - } - } - } - } else { - if (input[0] < 597.1503) { - if (input[0] < 418.34677) { - if (input[0] < 403.76456) { - var8 = 0.25129417; - } else { - var8 = 0.029630948; - } - } else { - if (input[1] < 52.519287) { - var8 = -0.086565524; - } else { - var8 = -0.18056887; - } - } - } else { - if (input[1] < 96.294495) { - if (input[1] < 55.399048) { - var8 = 0.022411045; - } else { - var8 = -0.103094496; - } - } else { - if (input[1] < 117.759186) { - var8 = 0.20964675; - } else { - var8 = -0.021733705; - } - } - } - } - } else { - if (input[1] < 147.89758) { - if (input[0] < 470.5908) { - if (input[7] < 0.0031422004) { - if (input[6] < 0.056870647) { - var8 = -0.27594447; - } else { - var8 = 0.1632108; - } - } else { - if (input[6] < 0.038425803) { - var8 = 0.09660167; - } else { - var8 = 0.24098757; - } - } - } else { - if (input[0] < 579.40393) { - if (input[5] < 29.639475) { - var8 = 0.017138198; - } else { - var8 = 0.27061063; - } - } else { - if (input[1] < 137.21216) { - var8 = 0.35788333; - } else { - var8 = 0.13913304; - } - } - } - } else { - if (input[1] < 191.00214) { - if (input[0] < 578.47174) { - if (input[4] < 14.26258) { - var8 = 0.0058700973; - } else { - var8 = -0.13975568; - } - } else { - if (input[1] < 173.5393) { - var8 = 0.07586348; - } else { - var8 = -0.09020141; - } - } - } else { - if (input[4] < 32.274986) { - if (input[5] < 18.296543) { - var8 = 0.1643583; - } else { - var8 = 0.037659366; - } - } else { - if (input[5] < 17.493734) { - var8 = 0.13900158; - } else { - var8 = -0.06859755; - } - } - } - } - } - } else { - if (input[7] < 0.0061051412) { - if (input[4] < 41.570618) { - if (input[5] < 24.029337) { - if (input[6] < 0.036404286) { - if (input[4] < 30.913733) { - var8 = 0.13497676; - } else { - var8 = -0.1447582; - } - } else { - if (input[4] < 34.687817) { - var8 = 0.22243029; - } else { - var8 = 0.12092808; - } - } - } else { - if (input[6] < 0.067336254) { - if (input[6] < 0.04116301) { - var8 = -0.151158; - } else { - var8 = 0.040234648; - } - } else { - if (input[2] < 0.19782853) { - var8 = 0.33279657; - } else { - var8 = 0.21302767; - } - } - } - } else { - if (input[3] < 20.0) { - if (input[0] < 439.05417) { - if (input[4] < 41.953285) { - var8 = -0.1021772; - } else { - var8 = 0.28958628; - } - } else { - if (input[0] < 658.2878) { - var8 = -0.106298305; - } else { - var8 = 0.12552974; - } - } - } else { - if (input[4] < 54.08032) { - if (input[3] < 21.0) { - var8 = 0.1183697; - } else { - var8 = 0.26628157; - } - } else { - if (input[7] < 0.0013018863) { - var8 = 0.2251939; - } else { - var8 = -0.0855014; - } - } - } - } - } else { - if (input[3] < 16.0) { - if (input[7] < 0.010230709) { - if (input[5] < 21.553902) { - if (input[4] < 43.352867) { - var8 = 0.2210698; - } else { - var8 = -0.2017922; - } - } else { - if (input[6] < 0.035672467) { - var8 = -0.0038242673; - } else { - var8 = 0.14185502; - } - } - } else { - if (input[4] < 33.871582) { - if (input[4] < 29.561077) { - var8 = 0.2640284; - } else { - var8 = 0.07036957; - } - } else { - if (input[2] < 0.16581297) { - var8 = -0.41174862; - } else { - var8 = 0.072694086; - } - } - } - } else { - if (input[6] < 0.059820402) { - if (input[5] < 26.726051) { - if (input[0] < 569.34753) { - var8 = 0.27468383; - } else { - var8 = 0.3056379; - } - } else { - if (input[7] < 0.008053657) { - var8 = 0.08182413; - } else { - var8 = 0.24930403; - } - } - } else { - if (input[5] < 33.48466) { - if (input[5] < 24.194729) { - var8 = 0.25929603; - } else { - var8 = 0.16683128; - } - } else { - if (input[7] < 0.02218566) { - var8 = 0.13998091; - } else { - var8 = -0.48473248; - } - } - } - } - } - } - double var9; - if (input[1] < 460.6717) { - if (input[1] < 81.83862) { - if (input[1] < 55.072876) { - if (input[3] < 6.0) { - if (input[5] < 19.882984) { - if (input[1] < 52.519287) { - var9 = 0.079475746; - } else { - var9 = -0.088993095; - } - } else { - if (input[4] < 20.090502) { - var9 = -0.032892045; - } else { - var9 = -0.11262999; - } - } - } else { - if (input[5] < 19.73429) { - if (input[2] < 0.09952295) { - var9 = 0.22916438; - } else { - var9 = -0.14665316; - } - } else { - if (input[4] < 28.26695) { - var9 = 0.057551306; - } else { - var9 = -0.1548425; - } - } - } - } else { - if (input[0] < 597.1503) { - if (input[1] < 59.12854) { - if (input[6] < 0.026557412) { - var9 = -0.1819081; - } else { - var9 = -0.25367534; - } - } else { - if (input[1] < 78.21661) { - var9 = -0.013745191; - } else { - var9 = -0.20643368; - } - } - } else { - if (input[1] < 59.12854) { - if (input[3] < 7.0) { - var9 = -0.16596712; - } else { - var9 = 0.121342205; - } - } else { - if (input[1] < 77.55432) { - var9 = 0.17177328; - } else { - var9 = -0.100517385; - } - } - } - } - } else { - if (input[0] < 632.9928) { - if (input[0] < 409.8705) { - if (input[3] < 8.0) { - if (input[0] < 406.91656) { - var9 = 0.21847983; - } else { - var9 = 0.0687365; - } - } else { - if (input[7] < 0.04599524) { - var9 = 0.3204079; - } else { - var9 = 0.124208644; - } - } - } else { - if (input[4] < 35.11969) { - if (input[6] < 0.038226146) { - var9 = -0.040707663; - } else { - var9 = 0.050300702; - } - } else { - if (input[7] < 0.00022194226) { - var9 = 0.1486903; - } else { - var9 = -0.0958275; - } - } - } - } else { - if (input[0] < 673.89215) { - if (input[1] < 255.84222) { - if (input[1] < 173.5393) { - var9 = 0.10600217; - } else { - var9 = -0.039318945; - } - } else { - if (input[2] < 0.23503518) { - var9 = 0.12610602; - } else { - var9 = -0.25670567; - } - } - } else { - if (input[7] < 0.003613382) { - if (input[3] < 11.0) { - var9 = 0.020244038; - } else { - var9 = 0.25256616; - } - } else { - if (input[6] < 0.053393975) { - var9 = 0.21562919; - } else { - var9 = -0.1939646; - } - } - } - } - } - } else { - if (input[7] < 0.0048943935) { - if (input[5] < 22.283722) { - if (input[0] < 473.86905) { - if (input[6] < 0.048518233) { - var9 = 0.107168116; - } else { - var9 = 0.35362285; - } - } else { - if (input[5] < 18.505344) { - if (input[6] < 0.036230333) { - var9 = 0.08896622; - } else { - var9 = 0.28026286; - } - } else { - if (input[3] < 19.0) { - var9 = 0.04225669; - } else { - var9 = 0.21277055; - } - } - } - } else { - if (input[0] < 637.80457) { - if (input[6] < 0.057156924) { - if (input[4] < 38.23957) { - var9 = -0.02411816; - } else { - var9 = -0.41426453; - } - } else { - if (input[4] < 46.88934) { - var9 = 0.14227684; - } else { - var9 = -0.025340144; - } - } - } else { - if (input[2] < 0.24309075) { - if (input[7] < 0.003249709) { - var9 = 0.283528; - } else { - var9 = 0.16402732; - } - } else { - if (input[4] < 873.4576) { - var9 = -0.15936868; - } else { - var9 = 0.3494439; - } - } - } - } - } else { - if (input[7] < 0.008053657) { - if (input[4] < 45.20362) { - if (input[5] < 20.706615) { - if (input[4] < 21.303955) { - var9 = 0.025775792; - } else { - var9 = 0.28388542; - } - } else { - if (input[6] < 0.04025816) { - var9 = 0.06314184; - } else { - var9 = 0.2030987; - } - } - } else { - if (input[3] < 24.0) { - if (input[7] < 0.0050930274) { - var9 = 0.053541947; - } else { - var9 = -0.36921528; - } - } else { - if (input[4] < 54.08032) { - var9 = 0.20851105; - } else { - var9 = -0.027774913; - } - } - } - } else { - if (input[5] < 24.194729) { - if (input[6] < 0.022677388) { - if (input[4] < 20.551977) { - var9 = 0.21139014; - } else { - var9 = -0.17699842; - } - } else { - if (input[6] < 0.05809109) { - var9 = 0.29408136; - } else { - var9 = 0.23892085; - } - } - } else { - if (input[1] < 489.80347) { - if (input[7] < 0.008375866) { - var9 = -0.44762683; - } else { - var9 = 0.13537239; - } - } else { - if (input[2] < 0.2476418) { - var9 = 0.2464154; - } else { - var9 = 0.124946006; - } - } - } - } - } - } - double var10; - if (input[3] < 16.0) { - if (input[1] < 121.57103) { - if (input[4] < 19.969645) { - if (input[3] < 7.0) { - if (input[0] < 433.54276) { - if (input[6] < 0.022136807) { - var10 = 0.009552013; - } else { - var10 = 0.17272386; - } - } else { - if (input[0] < 557.74005) { - var10 = -0.069602214; - } else { - var10 = 0.017074106; - } - } - } else { - if (input[5] < 20.170586) { - if (input[6] < 0.028638396) { - var10 = 0.20895904; - } else { - var10 = 0.3760596; - } - } else { - if (input[0] < 455.97122) { - var10 = 0.27256006; - } else { - var10 = 0.017368162; - } - } - } - } else { - if (input[0] < 567.47864) { - if (input[3] < 8.0) { - if (input[5] < 32.309944) { - var10 = -0.14213084; - } else { - var10 = 0.23379275; - } - } else { - if (input[1] < 81.66284) { - var10 = -0.051792108; - } else { - var10 = 0.20124297; - } - } - } else { - if (input[2] < 0.11964327) { - if (input[0] < 652.3909) { - var10 = -0.041657317; - } else { - var10 = 0.064104974; - } - } else { - if (input[2] < 0.28529787) { - var10 = -0.19453557; - } else { - var10 = 0.13250987; - } - } - } - } - } else { - if (input[1] < 147.89758) { - if (input[3] < 8.0) { - if (input[4] < 26.937609) { - if (input[6] < 0.0413519) { - var10 = 0.06400635; - } else { - var10 = 0.21182288; - } - } else { - if (input[6] < 0.059464313) { - var10 = -0.09490723; - } else { - var10 = 0.10148816; - } - } - } else { - if (input[6] < 0.05493398) { - if (input[4] < 28.460495) { - var10 = 0.19589762; - } else { - var10 = -0.07973826; - } - } else { - if (input[4] < 43.929493) { - var10 = 0.28534678; - } else { - var10 = 0.046761133; - } - } - } - } else { - if (input[1] < 255.84222) { - if (input[5] < 21.6294) { - if (input[2] < 0.17129159) { - var10 = 0.028528938; - } else { - var10 = -0.14755014; - } - } else { - if (input[1] < 231.0669) { - var10 = -0.054728266; - } else { - var10 = -0.15581748; - } - } - } else { - if (input[4] < 36.538284) { - if (input[7] < 0.01122595) { - var10 = 0.06422133; - } else { - var10 = 0.19273053; - } - } else { - if (input[6] < 0.053143427) { - var10 = -0.17142159; - } else { - var10 = 0.0059284098; - } - } - } - } - } - } else { - if (input[4] < 46.88934) { - if (input[5] < 24.673338) { - if (input[3] < 18.0) { - if (input[4] < 41.197132) { - if (input[4] < 32.391514) { - var10 = 0.27049738; - } else { - var10 = 0.18484916; - } - } else { - if (input[7] < 0.0048139137) { - var10 = 0.06192209; - } else { - var10 = -0.59752876; - } - } - } else { - if (input[0] < 566.57983) { - if (input[3] < 70.0) { - var10 = 0.25153154; - } else { - var10 = 0.062294457; - } - } else { - if (input[7] < 0.006159995) { - var10 = 0.24293382; - } else { - var10 = 0.30145308; - } - } - } - } else { - if (input[4] < 39.41097) { - if (input[3] < 59.0) { - if (input[7] < 0.008213529) { - var10 = 0.15646231; - } else { - var10 = 0.2482715; - } - } else { - if (input[3] < 70.0) { - var10 = -0.23412678; - } else { - var10 = 0.121562; - } - } - } else { - if (input[3] < 22.0) { - if (input[7] < 0.004254316) { - var10 = 0.066723846; - } else { - var10 = -0.17771333; - } - } else { - if (input[0] < 581.3013) { - var10 = 0.053061213; - } else { - var10 = 0.23882313; - } - } - } - } - } else { - if (input[3] < 38.0) { - if (input[0] < 518.2562) { - if (input[6] < 0.07962002) { - if (input[5] < 23.865568) { - var10 = 0.19450854; - } else { - var10 = -0.31433317; - } - } else { - if (input[2] < 0.3723327) { - var10 = 0.2572482; - } else { - var10 = 0.053740572; - } - } - } else { - if (input[2] < 0.26561487) { - if (input[6] < 0.059820402) { - var10 = -0.26676226; - } else { - var10 = 0.073670246; - } - } else { - if (input[4] < 58.806583) { - var10 = 0.094285; - } else { - var10 = -0.26996118; - } - } - } - } else { - if (input[2] < 0.300006) { - var10 = 0.2993627; - } else { - if (input[1] < 1184.6289) { - if (input[2] < 0.32127088) { - var10 = 0.09921028; - } else { - var10 = 0.34822628; - } - } else { - if (input[3] < 53.0) { - var10 = -0.24903083; - } else { - var10 = 0.18098003; - } - } - } - } - } - } - double var11; - if (input[3] < 17.0) { - if (input[0] < 667.30505) { - if (input[4] < 10.558617) { - if (input[3] < 6.0) { - if (input[0] < 484.40204) { - if (input[6] < 0.012573133) { - var11 = 0.060921766; - } else { - var11 = 0.22628911; - } - } else { - if (input[4] < 5.1584697) { - var11 = 0.11332942; - } else { - var11 = -0.046110705; - } - } - } else { - if (input[6] < 0.007448412) { - if (input[4] < 6.3997884) { - var11 = 0.16104266; - } else { - var11 = -0.07780559; - } - } else { - if (input[5] < 20.215801) { - var11 = 0.3233079; - } else { - var11 = 0.16223013; - } - } - } - } else { - if (input[1] < 81.83862) { - if (input[1] < 54.414856) { - if (input[3] < 7.0) { - var11 = -0.023798954; - } else { - var11 = 0.21797867; - } - } else { - if (input[1] < 59.12854) { - var11 = -0.17278777; - } else { - var11 = -0.07949651; - } - } - } else { - if (input[6] < 0.032192327) { - if (input[0] < 580.3388) { - var11 = -0.0924099; - } else { - var11 = 0.028098125; - } - } else { - if (input[4] < 24.247833) { - var11 = 0.1122298; - } else { - var11 = -0.010576143; - } - } - } - } - } else { - if (input[1] < 289.02704) { - if (input[2] < 0.1089797) { - if (input[5] < 22.426456) { - if (input[3] < 8.0) { - var11 = 0.104413584; - } else { - var11 = 0.22523402; - } - } else { - if (input[0] < 676.2616) { - var11 = -0.025962153; - } else { - var11 = 0.08191842; - } - } - } else { - if (input[6] < 0.057156924) { - if (input[3] < 12.0) { - var11 = -0.021807466; - } else { - var11 = 0.22453293; - } - } else { - if (input[7] < 0.0023913998) { - var11 = -0.117959924; - } else { - var11 = -0.39097977; - } - } - } - } else { - if (input[2] < 0.1785326) { - if (input[4] < 29.050934) { - if (input[0] < 670.5355) { - var11 = 0.1473771; - } else { - var11 = 0.26261917; - } - } else { - if (input[1] < 489.80347) { - var11 = 0.14264956; - } else { - var11 = 0.2788512; - } - } - } else { - if (input[6] < 0.069410756) { - if (input[2] < 0.18970776) { - var11 = -0.10654522; - } else { - var11 = 0.30255806; - } - } else { - if (input[3] < 9.0) { - var11 = 0.13079819; - } else { - var11 = -0.27605283; - } - } - } - } - } - } else { - if (input[4] < 49.35926) { - if (input[5] < 22.351292) { - if (input[2] < 0.32127088) { - if (input[3] < 21.0) { - if (input[5] < 21.517841) { - var11 = 0.27155885; - } else { - var11 = 0.12820444; - } - } else { - if (input[4] < 47.95029) { - var11 = 0.29274467; - } else { - var11 = 0.13343202; - } - } - } else { - var11 = -0.015330957; - } - } else { - if (input[6] < 0.057765625) { - if (input[7] < 0.0075382576) { - if (input[0] < 612.42395) { - var11 = -0.025909325; - } else { - var11 = 0.23590702; - } - } else { - if (input[0] < 418.34677) { - var11 = -0.10590682; - } else { - var11 = 0.2606583; - } - } - } else { - if (input[6] < 0.07519955) { - if (input[5] < 33.48466) { - var11 = 0.11100172; - } else { - var11 = -0.29904586; - } - } else { - if (input[5] < 22.68546) { - var11 = -0.05447774; - } else { - var11 = 0.2220454; - } - } - } - } - } else { - if (input[3] < 31.0) { - if (input[0] < 531.8526) { - if (input[0] < 448.86835) { - if (input[6] < 0.113757454) { - var11 = 0.046352863; - } else { - var11 = 0.327322; - } - } else { - if (input[5] < 23.514431) { - var11 = 0.19350623; - } else { - var11 = -0.0248198; - } - } - } else { - if (input[2] < 0.22563094) { - if (input[6] < 0.07796111) { - var11 = -0.09090729; - } else { - var11 = 0.23447303; - } - } else { - if (input[5] < 27.379698) { - var11 = -0.18418671; - } else { - var11 = 0.2484317; - } - } - } - } else { - if (input[1] < 1047.1123) { - if (input[5] < 24.194729) { - if (input[5] < 23.947874) { - var11 = 0.25722456; - } else { - var11 = -0.21992636; - } - } else { - if (input[7] < 0.00022194226) { - var11 = 0.111226626; - } else { - var11 = 0.40557095; - } - } - } else { - if (input[3] < 51.0) { - if (input[2] < 0.25866318) { - var11 = 0.2261159; - } else { - var11 = -0.19819158; - } - } else { - if (input[0] < 504.12915) { - var11 = -0.12012974; - } else { - var11 = 0.29108712; - } - } - } - } - } - } - double var12; - if (input[3] < 8.0) { - if (input[4] < 15.897472) { - if (input[6] < 0.02455999) { - if (input[4] < 8.613837) { - if (input[6] < 0.008171307) { - if (input[4] < 5.1584697) { - var12 = 0.10694435; - } else { - var12 = -0.085289136; - } - } else { - if (input[5] < 19.417402) { - var12 = 0.26963; - } else { - var12 = 0.11357265; - } - } - } else { - if (input[6] < 0.013503123) { - if (input[0] < 634.2887) { - var12 = -0.11673459; - } else { - var12 = 0.054899137; - } - } else { - if (input[4] < 13.317816) { - var12 = 0.06873668; - } else { - var12 = -0.02932776; - } - } - } - } else { - if (input[0] < 471.70917) { - if (input[7] < 0.0070654633) { - if (input[0] < 429.60077) { - var12 = 0.24140334; - } else { - var12 = 0.632605; - } - } else { - if (input[7] < 0.011090135) { - var12 = 0.114293285; - } else { - var12 = 0.2292846; - } - } - } else { - if (input[7] < 0.012117223) { - if (input[3] < 6.0) { - var12 = -0.027846368; - } else { - var12 = 0.12202971; - } - } else { - if (input[7] < 0.05417835) { - var12 = 0.18538909; - } else { - var12 = -0.16913825; - } - } - } - } - } else { - if (input[0] < 562.22656) { - if (input[6] < 0.03395565) { - if (input[0] < 503.25986) { - if (input[4] < 18.55459) { - var12 = -0.09626044; - } else { - var12 = -0.21500672; - } - } else { - if (input[1] < 168.27454) { - var12 = -0.10660119; - } else { - var12 = -0.040009294; - } - } - } else { - if (input[4] < 23.436337) { - if (input[0] < 463.6092) { - var12 = 0.13802116; - } else { - var12 = 0.00979198; - } - } else { - if (input[6] < 0.055465702) { - var12 = -0.09897926; - } else { - var12 = -0.0038084898; - } - } - } - } else { - if (input[5] < 11.839297) { - if (input[1] < 120.8548) { - if (input[2] < 0.008977376) { - var12 = 0.40464926; - } else { - var12 = -0.009797276; - } - } else { - if (input[2] < 0.050450563) { - var12 = 0.05272049; - } else { - var12 = 0.351904; - } - } - } else { - if (input[5] < 29.853495) { - if (input[1] < 294.69617) { - var12 = -0.012509621; - } else { - var12 = 0.07932517; - } - } else { - if (input[1] < 227.01422) { - var12 = 0.09604878; - } else { - var12 = 0.25276437; - } - } - } - } - } - } else { - if (input[7] < 0.008892193) { - if (input[5] < 20.834808) { - if (input[4] < 34.13175) { - if (input[6] < 0.037336733) { - if (input[0] < 578.47174) { - var12 = -0.026353536; - } else { - var12 = 0.13621192; - } - } else { - if (input[6] < 0.054671705) { - var12 = 0.17078169; - } else { - var12 = 0.2915521; - } - } - } else { - if (input[3] < 14.0) { - if (input[6] < 0.054671705) { - var12 = -0.073567964; - } else { - var12 = 0.051944647; - } - } else { - if (input[3] < 19.0) { - var12 = 0.1122969; - } else { - var12 = 0.23593406; - } - } - } - } else { - if (input[6] < 0.036404286) { - if (input[0] < 590.9189) { - if (input[4] < 24.423347) { - var12 = -0.09889737; - } else { - var12 = -0.26516825; - } - } else { - if (input[0] < 671.5958) { - var12 = -0.046474848; - } else { - var12 = 0.17853987; - } - } - } else { - if (input[4] < 39.41097) { - if (input[6] < 0.064966485) { - var12 = 0.039283674; - } else { - var12 = 0.18662013; - } - } else { - if (input[3] < 21.0) { - var12 = -0.05932163; - } else { - var12 = 0.084695786; - } - } - } - } - } else { - if (input[3] < 11.0) { - if (input[4] < 15.7178545) { - if (input[5] < 27.29118) { - if (input[7] < 0.027495267) { - var12 = 0.211664; - } else { - var12 = 0.3092054; - } - } else { - if (input[0] < 468.29953) { - var12 = 0.28409252; - } else { - var12 = -0.16699201; - } - } - } else { - if (input[6] < 0.022136807) { - if (input[0] < 604.5986) { - var12 = -0.348502; - } else { - var12 = -0.043982457; - } - } else { - if (input[4] < 25.647543) { - var12 = 0.12749071; - } else { - var12 = -0.056598548; - } - } - } - } else { - if (input[6] < 0.05809109) { - if (input[5] < 26.059116) { - if (input[3] < 15.0) { - var12 = 0.21011616; - } else { - var12 = 0.27633077; - } - } else { - if (input[6] < 0.019131957) { - var12 = -0.42760858; - } else { - var12 = 0.16387582; - } - } - } else { - if (input[0] < 588.9621) { - if (input[4] < 34.13175) { - var12 = 0.21827711; - } else { - var12 = 0.014715832; - } - } else { - var12 = 0.2825553; - } - } - } - } - } - double var13; - if (input[1] < 460.6717) { - if (input[5] < 16.674982) { - if (input[3] < 7.0) { - if (input[2] < 0.008977376) { - if (input[5] < 11.839297) { - if (input[7] < 0.04599524) { - var13 = 0.43958357; - } else { - var13 = 0.1399571; - } - } else { - if (input[4] < 7.31554) { - var13 = 0.2515202; - } else { - var13 = 0.10408409; - } - } - } else { - if (input[1] < 59.12854) { - if (input[1] < 55.399048) { - var13 = -0.018944213; - } else { - var13 = -0.18694983; - } - } else { - if (input[5] < 10.757549) { - var13 = 0.2805666; - } else { - var13 = 0.031028617; - } - } - } - } else { - if (input[4] < 28.171436) { - if (input[7] < 0.0037865257) { - if (input[2] < 0.056358993) { - var13 = 0.0023341868; - } else { - var13 = 0.47340748; - } - } else { - if (input[1] < 78.383545) { - var13 = 0.35209176; - } else { - var13 = 0.16342914; - } - } - } else { - if (input[3] < 8.0) { - if (input[5] < 12.536739) { - var13 = 0.30884126; - } else { - var13 = -0.056089234; - } - } else { - if (input[2] < 0.22023034) { - var13 = 0.15516542; - } else { - var13 = -0.17182007; - } - } - } - } - } else { - if (input[5] < 32.309944) { - if (input[0] < 406.91656) { - if (input[3] < 6.0) { - if (input[6] < 0.05065899) { - var13 = 0.033114262; - } else { - var13 = 0.18491936; - } - } else { - if (input[0] < 394.5867) { - var13 = 0.33182597; - } else { - var13 = 0.18634824; - } - } - } else { - if (input[0] < 572.9116) { - if (input[1] < 121.57103) { - var13 = -0.06470079; - } else { - var13 = -0.016212856; - } - } else { - if (input[2] < 0.22023034) { - var13 = 0.012552452; - } else { - var13 = -0.18140723; - } - } - } - } else { - if (input[6] < 0.030154696) { - if (input[2] < 0.07323933) { - if (input[6] < 0.02907517) { - var13 = 0.08279063; - } else { - var13 = -0.2998605; - } - } else { - var13 = 0.38257286; - } - } else { - if (input[7] < 0.0019291723) { - if (input[5] < 33.48466) { - var13 = -0.22991005; - } else { - var13 = 0.20007694; - } - } else { - if (input[6] < 0.062145434) { - var13 = 0.22543265; - } else { - var13 = 0.41559178; - } - } - } - } - } - } else { - if (input[4] < 43.929493) { - if (input[5] < 23.947874) { - if (input[3] < 16.0) { - if (input[5] < 20.121521) { - if (input[4] < 30.37712) { - var13 = 0.29175213; - } else { - var13 = 0.1611357; - } - } else { - if (input[6] < 0.056870647) { - var13 = 0.060223896; - } else { - var13 = 0.19365053; - } - } - } else { - if (input[0] < 566.57983) { - if (input[3] < 70.0) { - var13 = 0.20701009; - } else { - var13 = -0.05956016; - } - } else { - if (input[3] < 21.0) { - var13 = 0.20323798; - } else { - var13 = 0.29259208; - } - } - } - } else { - if (input[4] < 32.741352) { - if (input[6] < 0.0404656) { - if (input[7] < 0.0126157) { - var13 = 0.012741808; - } else { - var13 = 0.25201002; - } - } else { - if (input[0] < 433.54276) { - var13 = 0.09560156; - } else { - var13 = 0.22277851; - } - } - } else { - if (input[2] < 0.14234614) { - if (input[0] < 598.1789) { - var13 = -0.49711126; - } else { - var13 = -0.0543097; - } - } else { - if (input[0] < 563.0628) { - var13 = -0.007375835; - } else { - var13 = 0.15853703; - } - } - } - } - } else { - if (input[7] < 0.0013018863) { - if (input[2] < 0.23503518) { - if (input[2] < 0.18970776) { - if (input[3] < 9.0) { - var13 = 0.09015992; - } else { - var13 = 0.29737714; - } - } else { - if (input[1] < 659.8392) { - var13 = -0.063683085; - } else { - var13 = 0.2739673; - } - } - } else { - if (input[3] < 35.0) { - if (input[0] < 505.92896) { - var13 = 0.10784708; - } else { - var13 = -0.22054613; - } - } else { - if (input[5] < 24.952822) { - var13 = 0.300908; - } else { - var13 = -0.018050969; - } - } - } - } else { - if (input[4] < 58.806583) { - if (input[6] < 0.05809109) { - if (input[0] < 662.8972) { - var13 = -0.33526736; - } else { - var13 = 0.21469226; - } - } else { - if (input[3] < 21.0) { - var13 = -0.0010532484; - } else { - var13 = 0.1537672; - } - } - } else { - if (input[3] < 38.0) { - if (input[0] < 457.22827) { - var13 = 0.1380618; - } else { - var13 = -0.23467623; - } - } else { - if (input[1] < 1047.1123) { - var13 = 0.3186094; - } else { - var13 = -0.06978144; - } - } - } - } - } - } - double var14; - if (input[3] < 15.0) { - if (input[4] < 19.969645) { - if (input[6] < 0.02797405) { - if (input[4] < 14.26258) { - if (input[3] < 7.0) { - if (input[6] < 0.019131957) { - var14 = 0.00081012794; - } else { - var14 = 0.097799525; - } - } else { - if (input[5] < 25.447344) { - var14 = 0.19227014; - } else { - var14 = 0.066498525; - } - } - } else { - if (input[0] < 549.0806) { - if (input[6] < 0.025324266) { - var14 = -0.13813648; - } else { - var14 = -0.036365815; - } - } else { - if (input[6] < 0.024027178) { - var14 = -0.0063236007; - } else { - var14 = 0.07260675; - } - } - } - } else { - if (input[3] < 7.0) { - if (input[4] < 18.137033) { - if (input[6] < 0.03472593) { - var14 = 0.094187506; - } else { - var14 = 0.21049723; - } - } else { - if (input[1] < 96.294495) { - var14 = -0.07117888; - } else { - var14 = 0.070386246; - } - } - } else { - if (input[6] < 0.033574995) { - if (input[5] < 23.747627) { - var14 = 0.19375372; - } else { - var14 = 0.054802295; - } - } else { - if (input[2] < 0.08508021) { - var14 = 0.34209836; - } else { - var14 = 0.2191924; - } - } - } - } - } else { - if (input[6] < 0.04355297) { - if (input[0] < 534.41846) { - if (input[4] < 24.50498) { - if (input[6] < 0.038964357) { - var14 = -0.11020311; - } else { - var14 = 0.017839642; - } - } else { - if (input[0] < 494.08887) { - var14 = -0.23293686; - } else { - var14 = -0.13173902; - } - } - } else { - if (input[0] < 622.0128) { - if (input[4] < 30.913733) { - var14 = -0.011636773; - } else { - var14 = -0.10772831; - } - } else { - if (input[0] < 681.8675) { - var14 = 0.017881883; - } else { - var14 = 0.10485872; - } - } - } - } else { - if (input[4] < 27.78304) { - if (input[1] < 121.57103) { - if (input[4] < 23.702576) { - var14 = 0.12552129; - } else { - var14 = -0.022582065; - } - } else { - if (input[2] < 0.12643456) { - var14 = 0.0917661; - } else { - var14 = 0.17757553; - } - } - } else { - if (input[1] < 96.294495) { - if (input[2] < 0.11770642) { - var14 = -0.044706535; - } else { - var14 = -0.1745169; - } - } else { - if (input[7] < 0.00022194226) { - var14 = 0.12568207; - } else { - var14 = -0.010738445; - } - } - } - } - } - } else { - if (input[4] < 39.41097) { - if (input[5] < 26.726051) { - if (input[4] < 30.161802) { - if (input[5] < 24.15352) { - var14 = 0.2740918; - } else { - if (input[6] < 0.044478152) { - var14 = 0.27633202; - } else { - var14 = 0.075577535; - } - } - } else { - if (input[3] < 17.0) { - if (input[7] < 0.0036698799) { - var14 = 0.25259703; - } else { - var14 = 0.022808619; - } - } else { - if (input[0] < 566.57983) { - var14 = 0.12131317; - } else { - var14 = 0.2545804; - } - } - } - } else { - if (input[4] < 34.687817) { - if (input[5] < 27.03375) { - if (input[7] < 0.008892193) { - var14 = -0.5182135; - } else { - var14 = 0.0559702; - } - } else { - if (input[3] < 16.0) { - var14 = -0.015805045; - } else { - var14 = 0.1945316; - } - } - } else { - if (input[7] < 0.02092963) { - if (input[2] < 0.17482603) { - var14 = -0.36694998; - } else { - var14 = 0.0383603; - } - } else { - var14 = -0.5217948; - } - } - } - } else { - if (input[0] < 469.4581) { - if (input[5] < 25.292236) { - if (input[0] < 457.22827) { - var14 = 0.29662725; - } else { - if (input[7] < 0.002235593) { - var14 = -0.08775495; - } else { - var14 = 0.20810767; - } - } - } else { - if (input[5] < 25.88462) { - if (input[2] < 0.32127088) { - var14 = -0.33078396; - } else { - var14 = 0.030503625; - } - } else { - if (input[5] < 28.108055) { - var14 = 0.28667852; - } else { - var14 = 0.12400959; - } - } - } - } else { - if (input[0] < 657.11444) { - if (input[6] < 0.046959374) { - if (input[1] < 519.01764) { - var14 = -0.10493039; - } else { - var14 = -0.59392935; - } - } else { - if (input[5] < 20.964203) { - var14 = 0.1342558; - } else { - var14 = -0.016536271; - } - } - } else { - if (input[2] < 0.23170115) { - if (input[5] < 22.724154) { - var14 = 0.2991804; - } else { - var14 = 0.15498844; - } - } else { - if (input[3] < 19.0) { - var14 = -0.3152446; - } else { - var14 = 0.08708547; - } - } - } - } - } - } - double var15; - if (input[3] < 9.0) { - if (input[5] < 30.39442) { - if (input[4] < 30.37712) { - if (input[2] < 0.14311361) { - if (input[3] < 6.0) { - if (input[1] < 255.84222) { - var15 = -0.029152177; - } else { - var15 = 0.08196725; - } - } else { - if (input[4] < 14.698128) { - var15 = 0.074502066; - } else { - var15 = 0.0014492751; - } - } - } else { - if (input[0] < 454.6105) { - if (input[7] < 0.003613382) { - var15 = 0.010283798; - } else { - var15 = 0.13194619; - } - } else { - if (input[7] < 0.006533345) { - var15 = 0.19486958; - } else { - var15 = 0.020996284; - } - } - } - } else { - if (input[7] < 0.0044915546) { - if (input[2] < 0.070949554) { - if (input[0] < 590.9189) { - var15 = 0.038958; - } else { - var15 = 0.18594596; - } - } else { - if (input[6] < 0.063917145) { - var15 = -0.070532605; - } else { - var15 = 0.0040343925; - } - } - } else { - if (input[4] < 36.870323) { - if (input[2] < 0.15956831) { - var15 = -0.18035208; - } else { - var15 = -0.0049420986; - } - } else { - if (input[0] < 652.3909) { - var15 = -0.30831435; - } else { - var15 = 0.02787993; - } - } - } - } - } else { - if (input[6] < 0.062583044) { - if (input[5] < 33.48466) { - if (input[6] < 0.021839056) { - if (input[1] < 266.53317) { - var15 = -0.049480557; - } else { - var15 = 0.16831923; - } - } else { - if (input[4] < 26.19804) { - var15 = 0.115093485; - } else { - var15 = 0.009128629; - } - } - } else { - if (input[2] < 0.1668272) { - if (input[6] < 0.009366361) { - var15 = -0.117322974; - } else { - var15 = 0.20173588; - } - } else { - var15 = -0.37982702; - } - } - } else { - if (input[7] < 0.0019291723) { - if (input[4] < 36.870323) { - if (input[1] < 118.15326) { - var15 = -0.07499937; - } else { - var15 = -0.4042804; - } - } else { - if (input[4] < 47.95029) { - var15 = 0.30991262; - } else { - var15 = -0.08639787; - } - } - } else { - if (input[1] < 114.94299) { - var15 = -0.061649397; - } else { - if (input[7] < 0.0049318275) { - var15 = 0.3402719; - } else { - var15 = 0.14215961; - } - } - } - } - } - } else { - if (input[4] < 33.613834) { - if (input[5] < 24.495958) { - if (input[3] < 14.0) { - if (input[7] < 0.0043542767) { - if (input[6] < 0.03933765) { - var15 = 0.083866; - } else { - var15 = 0.20792986; - } - } else { - if (input[4] < 23.075237) { - var15 = 0.16091868; - } else { - var15 = 0.012815636; - } - } - } else { - if (input[5] < 21.322844) { - if (input[3] < 72.0) { - var15 = 0.26266223; - } else { - var15 = 0.0035477069; - } - } else { - if (input[4] < 29.757948) { - var15 = 0.21866599; - } else { - var15 = 0.11928596; - } - } - } - } else { - if (input[6] < 0.042833522) { - if (input[7] < 0.008892193) { - if (input[0] < 661.7976) { - var15 = -0.12181715; - } else { - var15 = 0.16662872; - } - } else { - if (input[6] < 0.019774148) { - var15 = -0.07661946; - } else { - var15 = 0.1329123; - } - } - } else { - if (input[6] < 0.05877689) { - if (input[4] < 26.284737) { - var15 = 0.18229023; - } else { - var15 = 0.029899782; - } - } else { - if (input[4] < 32.62736) { - var15 = 0.23064904; - } else { - var15 = 0.061700366; - } - } - } - } - } else { - if (input[6] < 0.044108372) { - if (input[0] < 652.3909) { - if (input[7] < 0.0044564977) { - if (input[2] < 0.07207942) { - var15 = 0.038242616; - } else { - var15 = -0.23237607; - } - } else { - if (input[3] < 21.0) { - var15 = -0.5021245; - } else { - var15 = -0.008049271; - } - } - } else { - if (input[3] < 12.0) { - if (input[7] < 0.0032761313) { - var15 = 0.08029193; - } else { - var15 = -0.19724561; - } - } else { - if (input[2] < 0.13599229) { - var15 = 0.19570321; - } else { - var15 = -0.0048736115; - } - } - } - } else { - if (input[4] < 46.88934) { - if (input[6] < 0.0719236) { - if (input[0] < 587.9709) { - var15 = -0.052064944; - } else { - var15 = 0.086623; - } - } else { - if (input[1] < 147.89758) { - var15 = 0.29910907; - } else { - var15 = 0.11343097; - } - } - } else { - if (input[2] < 0.15654445) { - if (input[6] < 0.056304816) { - var15 = -0.12989624; - } else { - var15 = 0.20826985; - } - } else { - if (input[3] < 14.0) { - var15 = -0.13756143; - } else { - var15 = -0.0158715; - } - } - } - } - } - } - double var16; - if (input[3] < 21.0) { - if (input[5] < 15.711394) { - if (input[1] < 255.84222) { - if (input[5] < 11.839297) { - if (input[2] < 0.1772592) { - if (input[1] < 168.27454) { - var16 = 0.09328564; - } else { - var16 = 0.23977676; - } - } else { - var16 = 0.5827801; - } - } else { - if (input[3] < 6.0) { - if (input[1] < 52.519287) { - var16 = 0.13238233; - } else { - var16 = -0.038940363; - } - } else { - if (input[4] < 37.239246) { - var16 = 0.09074758; - } else { - var16 = -0.103805855; - } - } - } - } else { - if (input[2] < 0.21310979) { - if (input[5] < 13.509364) { - if (input[3] < 12.0) { - var16 = 0.30702898; - } else { - var16 = 0.0135326935; - } - } else { - if (input[2] < 0.14999247) { - var16 = 0.15204087; - } else { - var16 = 0.33251286; - } - } - } else { - if (input[7] < 0.0024834909) { - var16 = -0.31140256; - } else { - var16 = 0.24169566; - } - } - } - } else { - if (input[0] < 403.76456) { - if (input[3] < 8.0) { - if (input[0] < 394.5867) { - if (input[5] < 27.204857) { - var16 = 0.27007088; - } else { - var16 = 0.093932636; - } - } else { - if (input[7] < 0.0027116358) { - var16 = 0.22456782; - } else { - var16 = 0.06304034; - } - } - } else { - if (input[6] < 0.027279133) { - var16 = 0.07889339; - } else { - if (input[1] < 117.95654) { - var16 = 0.08532363; - } else { - var16 = 0.3138849; - } - } - } - } else { - if (input[0] < 673.89215) { - if (input[5] < 29.853495) { - if (input[4] < 36.36606) { - var16 = -0.005808132; - } else { - var16 = -0.044425048; - } - } else { - if (input[2] < 0.18825138) { - var16 = 0.045157664; - } else { - var16 = 0.20285419; - } - } - } else { - if (input[1] < 344.88092) { - if (input[7] < 0.009574198) { - var16 = 0.030596565; - } else { - var16 = 0.12749635; - } - } else { - if (input[2] < 0.1785326) { - var16 = 0.19913761; - } else { - var16 = -0.05425329; - } - } - } - } - } - } else { - if (input[4] < 54.08032) { - if (input[0] < 567.47864) { - if (input[5] < 22.351292) { - if (input[3] < 70.0) { - var16 = 0.27793932; - } else { - if (input[7] < 0.02092963) { - var16 = -0.44710106; - } else { - var16 = 0.1707807; - } - } - } else { - if (input[5] < 28.479513) { - if (input[1] < 808.4346) { - var16 = 0.17842542; - } else { - var16 = 0.030357715; - } - } else { - if (input[0] < 455.97122) { - var16 = 0.20624226; - } else { - var16 = -0.2328286; - } - } - } - } else { - if (input[4] < 42.829258) { - if (input[6] < 0.060177866) { - if (input[5] < 31.12926) { - var16 = 0.28542474; - } else { - var16 = 0.026572155; - } - } else { - if (input[6] < 0.060939953) { - var16 = -0.24415275; - } else { - var16 = 0.2228718; - } - } - } else { - if (input[6] < 0.053631432) { - if (input[0] < 630.6033) { - var16 = -0.42823306; - } else { - var16 = 0.16877554; - } - } else { - if (input[6] < 0.07021791) { - var16 = 0.10265569; - } else { - var16 = 0.260271; - } - } - } - } - } else { - if (input[5] < 26.379164) { - if (input[7] < 0.0013018863) { - if (input[2] < 0.25866318) { - if (input[0] < 478.12262) { - var16 = 0.04004851; - } else { - var16 = 0.2558355; - } - } else { - if (input[3] < 43.0) { - var16 = -0.16947873; - } else { - var16 = 0.20977433; - } - } - } else { - if (input[1] < 695.545) { - if (input[6] < 0.081781514) { - var16 = -0.1554164; - } else { - var16 = 0.25897533; - } - } else { - if (input[3] < 71.0) { - var16 = -0.21819617; - } else { - var16 = 0.16773784; - } - } - } - } else { - if (input[3] < 154.0) { - if (input[1] < 733.3856) { - if (input[1] < 489.80347) { - var16 = 0.08616188; - } else { - var16 = 0.45446905; - } - } else { - if (input[2] < 0.300006) { - var16 = 0.27700144; - } else { - var16 = 0.03903166; - } - } - } else { - var16 = -0.23718952; - } - } - } - } - double var17; - if (input[1] < 272.0462) { - if (input[4] < 9.192085) { - if (input[1] < 81.83862) { - if (input[5] < 19.783344) { - if (input[6] < 0.0051328884) { - if (input[7] < 0.1289853) { - var17 = -0.15454395; - } else { - var17 = 0.16124383; - } - } else { - if (input[4] < 7.31554) { - var17 = 0.22676516; - } else { - var17 = 0.07778694; - } - } - } else { - if (input[0] < 476.04532) { - if (input[6] < 0.015955688) { - var17 = 0.038114227; - } else { - var17 = 0.2691368; - } - } else { - if (input[0] < 644.92255) { - var17 = -0.07100994; - } else { - var17 = 0.13286829; - } - } - } - } else { - if (input[7] < 0.04087875) { - if (input[2] < 0.027733445) { - if (input[3] < 7.0) { - var17 = -0.07411127; - } else { - var17 = 0.1989513; - } - } else { - if (input[2] < 0.033970356) { - var17 = 0.12608902; - } else { - var17 = 0.26734316; - } - } - } else { - if (input[0] < 492.25522) { - if (input[7] < 0.065982014) { - var17 = 0.17429116; - } else { - var17 = 0.29315704; - } - } else { - if (input[0] < 531.8526) { - var17 = 0.017244408; - } else { - var17 = 0.20382892; - } - } - } - } - } else { - if (input[1] < 229.94263) { - if (input[3] < 8.0) { - if (input[1] < 191.00214) { - if (input[1] < 150.89111) { - var17 = -0.009740776; - } else { - var17 = -0.05906425; - } - } else { - if (input[1] < 193.68164) { - var17 = 0.25128067; - } else { - var17 = 0.013145145; - } - } - } else { - if (input[1] < 173.5393) { - if (input[1] < 171.9599) { - var17 = 0.0737371; - } else { - var17 = 0.28162315; - } - } else { - if (input[1] < 177.04877) { - var17 = -0.11650096; - } else { - var17 = 0.033384234; - } - } - } - } else { - if (input[4] < 24.85689) { - if (input[7] < 0.0060544414) { - if (input[0] < 605.7406) { - var17 = 0.059206884; - } else { - var17 = 0.20590885; - } - } else { - if (input[6] < 0.032192327) { - var17 = -0.056768354; - } else { - var17 = 0.06733489; - } - } - } else { - if (input[1] < 255.84222) { - if (input[4] < 31.472792) { - var17 = -0.06539785; - } else { - var17 = -0.16051933; - } - } else { - if (input[7] < 0.000020908421) { - var17 = 0.34374955; - } else { - var17 = -0.03460011; - } - } - } - } - } - } else { - if (input[1] < 322.41693) { - if (input[7] < 0.0029582323) { - if (input[3] < 11.0) { - if (input[0] < 495.01468) { - if (input[6] < 0.05200139) { - var17 = -0.18721166; - } else { - var17 = 0.044789; - } - } else { - if (input[6] < 0.03279909) { - var17 = 0.39973822; - } else { - var17 = 0.15451424; - } - } - } else { - if (input[4] < 54.08032) { - if (input[5] < 20.02947) { - var17 = 0.16766518; - } else { - var17 = 0.44232404; - } - } else { - if (input[2] < 0.23503518) { - var17 = 0.25117588; - } else { - var17 = -0.15687981; - } - } - } - } else { - if (input[3] < 9.0) { - if (input[4] < 29.757948) { - if (input[7] < 0.005393012) { - var17 = 0.1121355; - } else { - var17 = 0.0039254096; - } - } else { - if (input[6] < 0.05573149) { - var17 = -0.12923303; - } else { - var17 = 0.11038482; - } - } - } else { - if (input[7] < 0.004320392) { - if (input[4] < 32.506233) { - var17 = 0.27800488; - } else { - var17 = 0.12015037; - } - } else { - if (input[2] < 0.15562016) { - var17 = 0.09308886; - } else { - var17 = -0.14399113; - } - } - } - } - } else { - if (input[5] < 19.008966) { - if (input[7] < 0.0030629286) { - if (input[6] < 0.06301065) { - if (input[0] < 587.9709) { - var17 = -0.35009864; - } else { - var17 = 0.06877915; - } - } else { - if (input[2] < 0.22563094) { - var17 = 0.23418891; - } else { - var17 = -0.029380769; - } - } - } else { - if (input[5] < 13.509364) { - var17 = 0.32154867; - } else { - if (input[2] < 0.12856597) { - var17 = 0.11267977; - } else { - var17 = 0.20964764; - } - } - } - } else { - if (input[1] < 519.01764) { - if (input[4] < 28.556541) { - if (input[1] < 342.5133) { - var17 = -0.096425466; - } else { - var17 = 0.049339864; - } - } else { - if (input[6] < 0.04116301) { - var17 = -0.1970083; - } else { - var17 = -0.022072893; - } - } - } else { - if (input[4] < 39.41097) { - if (input[4] < 29.050934) { - var17 = 0.18886517; - } else { - var17 = 0.09642818; - } - } else { - if (input[3] < 31.0) { - var17 = -0.0012003295; - } else { - var17 = 0.12179404; - } - } - } - } - } - } - double var18; - if (input[1] < 81.83862) { - if (input[1] < 54.414856) { - if (input[5] < 22.832607) { - if (input[3] < 6.0) { - if (input[7] < 0.1289853) { - if (input[6] < 0.0031386863) { - var18 = -0.1812855; - } else { - var18 = 0.028150221; - } - } else { - if (input[4] < 13.793873) { - var18 = 0.13639401; - } else { - var18 = -0.22369036; - } - } - } else { - if (input[1] < 52.952087) { - if (input[2] < 0.017481804) { - var18 = 0.13697311; - } else { - var18 = -0.085259885; - } - } else { - if (input[0] < 507.74713) { - var18 = -0.10858988; - } else { - var18 = 0.38365772; - } - } - } - } else { - if (input[6] < 0.023223083) { - if (input[0] < 524.19574) { - if (input[4] < 10.558617) { - var18 = -0.002259693; - } else { - var18 = -0.18285897; - } - } else { - if (input[2] < 0.008977376) { - var18 = 0.03795919; - } else { - var18 = -0.11821548; - } - } - } else { - if (input[4] < 17.07824) { - if (input[0] < 494.08887) { - var18 = 0.18332903; - } else { - var18 = -0.017998884; - } - } else { - if (input[7] < 0.013334383) { - var18 = 0.00952497; - } else { - var18 = -0.20923673; - } - } - } - } - } else { - if (input[1] < 59.12854) { - if (input[3] < 7.0) { - if (input[6] < 0.038425803) { - if (input[4] < 24.596539) { - var18 = -0.13891499; - } else { - var18 = 0.009536952; - } - } else { - if (input[0] < 661.7976) { - var18 = -0.22482798; - } else { - var18 = 0.014948574; - } - } - } else { - if (input[5] < 20.077265) { - if (input[3] < 8.0) { - var18 = -0.028934099; - } else { - var18 = 0.23301321; - } - } else { - if (input[0] < 599.1849) { - var18 = -0.12062903; - } else { - var18 = 0.004893584; - } - } - } - } else { - if (input[1] < 77.55432) { - if (input[5] < 26.726051) { - if (input[1] < 75.70349) { - var18 = 0.24484812; - } else { - var18 = 0.10411442; - } - } else { - if (input[6] < 0.045053452) { - var18 = -0.013367215; - } else { - var18 = -0.24444236; - } - } - } else { - if (input[2] < 0.09447992) { - if (input[7] < 0.0027393189) { - var18 = 0.0909565; - } else { - var18 = -0.09514033; - } - } else { - if (input[0] < 454.6105) { - var18 = 0.16276805; - } else { - var18 = -0.18505374; - } - } - } - } - } - } else { - if (input[1] < 114.94299) { - if (input[1] < 96.294495) { - if (input[0] < 455.97122) { - if (input[0] < 423.21143) { - var18 = 0.3479767; - } else { - var18 = 0.84518045; - } - } else { - if (input[4] < 15.897472) { - if (input[5] < 20.52871) { - var18 = 0.52951854; - } else { - var18 = -0.042222384; - } - } else { - if (input[5] < 24.320927) { - var18 = -0.065350965; - } else { - var18 = -0.21941529; - } - } - } - } else { - if (input[3] < 6.0) { - if (input[5] < 21.6294) { - if (input[5] < 16.421429) { - var18 = 0.0141995605; - } else { - var18 = 0.3056775; - } - } else { - if (input[0] < 557.74005) { - var18 = 0.03822163; - } else { - var18 = 0.21103346; - } - } - } else { - if (input[0] < 453.18805) { - if (input[4] < 22.235271) { - var18 = 0.26641512; - } else { - var18 = -0.03921123; - } - } else { - if (input[6] < 0.03529753) { - var18 = 0.32260215; - } else { - var18 = 0.6060578; - } - } - } - } - } else { - if (input[7] < 0.027495267) { - if (input[6] < 0.030572092) { - if (input[0] < 581.3013) { - if (input[4] < 16.582067) { - var18 = 0.010951725; - } else { - var18 = -0.09235474; - } - } else { - if (input[7] < 0.0027116358) { - var18 = 0.18731195; - } else { - var18 = 0.00042517998; - } - } - } else { - if (input[4] < 25.647543) { - if (input[3] < 6.0) { - var18 = 0.011425389; - } else { - var18 = 0.08066763; - } - } else { - if (input[6] < 0.0529048) { - var18 = -0.025011593; - } else { - var18 = 0.019674873; - } - } - } - } else { - if (input[3] < 8.0) { - if (input[4] < 24.686386) { - if (input[4] < 6.3997884) { - var18 = 0.18327934; - } else { - var18 = 0.062382333; - } - } else { - if (input[6] < 0.05493398) { - var18 = -0.44341394; - } else { - var18 = -0.009591484; - } - } - } else { - if (input[5] < 33.48466) { - if (input[6] < 0.008788065) { - var18 = 0.10156888; - } else { - var18 = 0.27030873; - } - } else { - if (input[3] < 190.0) { - var18 = -0.23112936; - } else { - var18 = 0.04188931; - } - } - } - } - } - } - double var19; - if (input[0] < 563.9471) { - if (input[6] < 0.064966485) { - if (input[4] < 31.580933) { - if (input[6] < 0.04915336) { - if (input[4] < 21.8254) { - if (input[6] < 0.020986198) { - var19 = -0.040148374; - } else { - var19 = 0.03979741; - } - } else { - if (input[0] < 489.37897) { - var19 = -0.11904239; - } else { - var19 = -0.0273844; - } - } - } else { - if (input[3] < 7.0) { - if (input[4] < 25.82959) { - var19 = 0.1096077; - } else { - var19 = -0.016252885; - } - } else { - if (input[6] < 0.059464313) { - var19 = 0.08842674; - } else { - var19 = 0.21472295; - } - } - } - } else { - if (input[0] < 488.4354) { - if (input[7] < 0.004526879) { - if (input[0] < 440.8873) { - var19 = -0.3562229; - } else { - var19 = -0.18526049; - } - } else { - if (input[7] < 0.014372812) { - var19 = -0.41615376; - } else { - var19 = 0.18364178; - } - } - } else { - if (input[4] < 40.523262) { - if (input[6] < 0.05220808) { - var19 = -0.1458578; - } else { - var19 = -0.022427667; - } - } else { - if (input[1] < 202.09811) { - var19 = -0.16171864; - } else { - var19 = -0.34252235; - } - } - } - } - } else { - if (input[4] < 36.2053) { - if (input[1] < 79.678955) { - if (input[0] < 467.11356) { - if (input[1] < 55.648636) { - var19 = 0.22112277; - } else { - var19 = -0.1835829; - } - } else { - var19 = -0.28051338; - } - } else { - if (input[3] < 7.0) { - if (input[7] < 0.0022020095) { - var19 = -0.032232795; - } else { - var19 = 0.12916009; - } - } else { - if (input[5] < 33.48466) { - var19 = 0.18443225; - } else { - var19 = -0.31935066; - } - } - } - } else { - if (input[2] < 0.15756035) { - if (input[1] < 143.61688) { - if (input[0] < 427.4725) { - var19 = -0.2780115; - } else { - var19 = 0.034235463; - } - } else { - if (input[5] < 23.403553) { - var19 = 0.24559487; - } else { - var19 = 0.10397247; - } - } - } else { - if (input[4] < 44.533443) { - if (input[2] < 0.20118733) { - var19 = -0.0270027; - } else { - var19 = 0.07715836; - } - } else { - if (input[3] < 12.0) { - var19 = -0.122171216; - } else { - var19 = 0.03094434; - } - } - } - } - } - } else { - if (input[4] < 43.929493) { - if (input[3] < 11.0) { - if (input[5] < 17.30668) { - if (input[7] < 0.0019291723) { - if (input[5] < 17.003792) { - var19 = -0.14872232; - } else { - var19 = 0.12528454; - } - } else { - if (input[1] < 266.53317) { - var19 = 0.05286436; - } else { - var19 = 0.15059593; - } - } - } else { - if (input[7] < 0.004320392) { - if (input[6] < 0.01815154) { - var19 = 0.13757119; - } else { - var19 = 0.019734155; - } - } else { - if (input[0] < 677.4847) { - var19 = -0.011915163; - } else { - var19 = 0.091464624; - } - } - } - } else { - if (input[3] < 21.0) { - if (input[5] < 23.10101) { - if (input[4] < 28.366318) { - var19 = 0.18584973; - } else { - var19 = 0.09544667; - } - } else { - if (input[0] < 662.8972) { - var19 = -0.0066986815; - } else { - var19 = 0.13876268; - } - } - } else { - if (input[6] < 0.060177866) { - if (input[3] < 61.0) { - var19 = 0.28863788; - } else { - var19 = 0.1563169; - } - } else { - if (input[6] < 0.060939953) { - var19 = -0.23982003; - } else { - var19 = 0.12995958; - } - } - } - } - } else { - if (input[7] < 0.0035266217) { - if (input[2] < 0.088344395) { - if (input[1] < 58.7778) { - if (input[2] < 0.046456575) { - var19 = -0.24245098; - } else { - var19 = 0.06375839; - } - } else { - if (input[5] < 19.682528) { - var19 = 0.35146332; - } else { - var19 = 0.13173448; - } - } - } else { - if (input[4] < 51.153934) { - if (input[1] < 272.0462) { - var19 = -0.08740072; - } else { - var19 = 0.068280794; - } - } else { - if (input[6] < 2.5102012) { - var19 = -0.10490829; - } else { - var19 = 0.09699892; - } - } - } - } else { - if (input[3] < 19.0) { - if (input[5] < 27.572266) { - if (input[7] < 0.0038169443) { - var19 = -0.16326049; - } else { - var19 = -0.3467289; - } - } else { - if (input[1] < 637.6124) { - var19 = -0.11922235; - } else { - var19 = 0.28304565; - } - } - } else { - if (input[5] < 26.310371) { - if (input[0] < 654.6809) { - var19 = -0.15935317; - } else { - var19 = 0.14955802; - } - } else { - if (input[1] < 1013.4276) { - var19 = 0.29576048; - } else { - var19 = 0.05207686; - } - } - } - } - } - } - double var20; - if (input[1] < 121.57103) { - if (input[1] < 120.35962) { - if (input[1] < 118.724884) { - if (input[1] < 53.19751) { - if (input[6] < 0.0067773927) { - if (input[4] < 3.4118037) { - var20 = 0.081607565; - } else { - var20 = -0.08240058; - } - } else { - if (input[5] < 20.57342) { - var20 = 0.06318391; - } else { - var20 = 0.012098423; - } - } - } else { - if (input[1] < 59.12854) { - if (input[0] < 542.8911) { - var20 = -0.13984007; - } else { - var20 = -0.047853548; - } - } else { - if (input[1] < 78.21661) { - var20 = 0.06918719; - } else { - var20 = -0.025802625; - } - } - } - } else { - if (input[3] < 6.0) { - if (input[5] < 27.379698) { - if (input[0] < 561.316) { - var20 = -0.24284081; - } else { - var20 = 0.034370665; - } - } else { - if (input[7] < 0.005221153) { - var20 = -0.047790777; - } else { - var20 = 0.3209619; - } - } - } else { - if (input[6] < 0.02907517) { - if (input[0] < 568.40643) { - var20 = 0.034011804; - } else { - var20 = 0.2955521; - } - } else { - if (input[4] < 30.271399) { - var20 = 0.36801016; - } else { - var20 = 0.077210605; - } - } - } - } - } else { - if (input[3] < 6.0) { - if (input[5] < 27.204857) { - if (input[2] < 0.20299208) { - if (input[6] < 0.0031386863) { - var20 = 0.3476895; - } else { - var20 = -0.18831672; - } - } else { - var20 = 0.37951037; - } - } else { - if (input[0] < 515.6308) { - if (input[4] < 24.157349) { - var20 = 0.20862538; - } else { - var20 = 0.013161407; - } - } else { - if (input[5] < 30.39442) { - var20 = -0.20763978; - } else { - var20 = 0.12993; - } - } - } - } else { - if (input[5] < 20.352009) { - if (input[0] < 431.5945) { - if (input[1] < 120.8548) { - var20 = 0.22284906; - } else { - var20 = -0.024214225; - } - } else { - if (input[7] < 0.01816849) { - var20 = -0.24694918; - } else { - var20 = 0.14747892; - } - } - } else { - if (input[1] < 120.64625) { - if (input[0] < 420.89536) { - var20 = 0.21874572; - } else { - var20 = -0.17470117; - } - } else { - if (input[5] < 23.403553) { - var20 = 0.35014218; - } else { - var20 = 0.17788695; - } - } - } - } - } - } else { - if (input[1] < 137.21216) { - if (input[2] < 0.18529916) { - if (input[0] < 519.94336) { - if (input[2] < 0.1336906) { - if (input[4] < 23.164886) { - var20 = 0.24861954; - } else { - var20 = -0.024807464; - } - } else { - if (input[0] < 495.93704) { - var20 = 0.39987805; - } else { - var20 = -0.059770398; - } - } - } else { - if (input[5] < 29.251307) { - if (input[6] < 0.023223083) { - var20 = 0.204641; - } else { - var20 = 0.38068032; - } - } else { - if (input[0] < 590.9189) { - var20 = 0.1456463; - } else { - var20 = -0.13220267; - } - } - } - } else { - if (input[4] < 32.506233) { - var20 = -0.39440748; - } else { - if (input[7] < 0.0018817764) { - if (input[5] < 24.9099) { - var20 = 0.09206003; - } else { - var20 = -0.3793267; - } - } else { - if (input[7] < 0.004739477) { - var20 = 0.27140805; - } else { - var20 = -0.104382515; - } - } - } - } - } else { - if (input[1] < 150.89111) { - if (input[3] < 9.0) { - if (input[4] < 16.2539) { - if (input[2] < 0.06435102) { - var20 = 0.092706345; - } else { - var20 = 0.24612178; - } - } else { - if (input[5] < 26.726051) { - var20 = 0.0008100487; - } else { - var20 = 0.08482211; - } - } - } else { - if (input[0] < 590.9189) { - if (input[1] < 145.6225) { - var20 = 0.17052823; - } else { - var20 = -0.012943858; - } - } else { - if (input[7] < 0.0050532636) { - var20 = 0.3844506; - } else { - var20 = 0.17083503; - } - } - } - } else { - if (input[1] < 168.27454) { - if (input[0] < 584.10345) { - if (input[5] < 29.440952) { - var20 = -0.17498991; - } else { - var20 = -0.0057055773; - } - } else { - if (input[1] < 153.67346) { - var20 = 0.019274238; - } else { - var20 = -0.12003264; - } - } - } else { - if (input[1] < 170.5625) { - if (input[0] < 652.3909) { - var20 = 0.33775955; - } else { - var20 = 0.14308701; - } - } else { - if (input[5] < 22.283722) { - var20 = 0.024811568; - } else { - var20 = -0.012226484; - } - } - } - } - } - } - double var21; - if (input[5] < 14.734648) { - if (input[1] < 121.57103) { - if (input[2] < 0.06494424) { - if (input[1] < 78.480835) { - if (input[1] < 58.668335) { - if (input[2] < 0.008977376) { - var21 = 0.14810723; - } else { - var21 = -0.0062392424; - } - } else { - if (input[0] < 524.19574) { - var21 = -0.21983053; - } else { - var21 = 0.34418195; - } - } - } else { - if (input[7] < 0.006533345) { - if (input[5] < 13.509364) { - var21 = -0.30309266; - } else { - var21 = 0.06953089; - } - } else { - if (input[1] < 81.53082) { - var21 = -0.18972515; - } else { - var21 = 0.10855581; - } - } - } - } else { - if (input[0] < 455.97122) { - if (input[2] < 0.15468198) { - if (input[2] < 0.11836624) { - var21 = 0.02998288; - } else { - var21 = 0.4611208; - } - } else { - if (input[2] < 0.16581297) { - var21 = -0.38149056; - } else { - var21 = 0.21814498; - } - } - } else { - if (input[3] < 7.0) { - if (input[1] < 59.12854) { - var21 = -0.17136534; - } else { - var21 = -0.040230874; - } - } else { - if (input[0] < 540.31696) { - var21 = 0.35016268; - } else { - var21 = -0.025907371; - } - } - } - } - } else { - if (input[2] < 0.04891324) { - if (input[1] < 255.84222) { - if (input[5] < 10.757549) { - if (input[4] < 19.969645) { - var21 = 0.2713276; - } else { - var21 = -0.15176061; - } - } else { - if (input[4] < 16.909874) { - var21 = -0.03523674; - } else { - var21 = -0.22223753; - } - } - } else { - var21 = 0.2730832; - } - } else { - if (input[2] < 0.09952295) { - if (input[3] < 6.0) { - if (input[6] < 0.03770539) { - var21 = 0.045568787; - } else { - var21 = -0.25942716; - } - } else { - if (input[1] < 171.00562) { - var21 = 0.23094468; - } else { - var21 = 0.09987583; - } - } - } else { - if (input[4] < 26.19804) { - if (input[4] < 24.596539) { - var21 = 0.17447555; - } else { - var21 = 0.41239548; - } - } else { - if (input[5] < 11.839297) { - var21 = 0.24666278; - } else { - var21 = 0.096586816; - } - } - } - } - } - } else { - if (input[1] < 460.6717) { - if (input[4] < 41.197132) { - if (input[6] < 0.064966485) { - if (input[0] < 549.0806) { - if (input[4] < 32.506233) { - var21 = -0.009325147; - } else { - var21 = -0.10661085; - } - } else { - if (input[7] < 0.0043542767) { - var21 = 0.027058689; - } else { - var21 = -0.0031008073; - } - } - } else { - if (input[7] < 0.0042216145) { - if (input[1] < 81.66284) { - var21 = -0.16338529; - } else { - var21 = 0.08563193; - } - } else { - if (input[0] < 484.40204) { - var21 = 0.041157555; - } else { - var21 = -0.23821436; - } - } - } - } else { - if (input[7] < 0.0035266217) { - if (input[7] < 0.00022194226) { - if (input[0] < 519.08496) { - var21 = 0.12163585; - } else { - var21 = 0.012185954; - } - } else { - if (input[4] < 51.153934) { - var21 = -0.025871372; - } else { - var21 = -0.18674134; - } - } - } else { - if (input[3] < 18.0) { - if (input[1] < 148.36841) { - var21 = -0.06492654; - } else { - var21 = -0.25946936; - } - } else { - if (input[1] < 426.71954) { - var21 = 0.11291755; - } else { - var21 = -0.28108588; - } - } - } - } - } else { - if (input[4] < 32.146854) { - if (input[6] < 0.036404286) { - if (input[4] < 29.154097) { - if (input[0] < 577.4389) { - var21 = -0.00014381409; - } else { - var21 = 0.1515643; - } - } else { - if (input[7] < 0.0058516446) { - var21 = -0.017568024; - } else { - var21 = -0.46943176; - } - } - } else { - if (input[5] < 21.553902) { - if (input[4] < 30.913733) { - var21 = 0.28347158; - } else { - var21 = 0.1315185; - } - } else { - if (input[7] < 0.006881745) { - var21 = 0.17769256; - } else { - var21 = 0.06353293; - } - } - } - } else { - if (input[6] < 0.04355297) { - if (input[0] < 671.5958) { - if (input[5] < 28.908257) { - var21 = -0.26700157; - } else { - var21 = 0.27054808; - } - } else { - if (input[4] < 32.741352) { - var21 = 0.008889111; - } else { - var21 = 0.23754154; - } - } - } else { - if (input[0] < 637.80457) { - if (input[0] < 458.57184) { - var21 = 0.1612978; - } else { - var21 = -0.0025894595; - } - } else { - if (input[2] < 0.24309075) { - var21 = 0.15268838; - } else { - var21 = -0.026089093; - } - } - } - } - } - } - double var22; - if (input[1] < 255.84222) { - if (input[1] < 231.0669) { - if (input[4] < 34.974888) { - if (input[6] < 0.04064345) { - if (input[4] < 17.552475) { - if (input[6] < 0.02797405) { - var22 = 0.006433082; - } else { - var22 = 0.08976145; - } - } else { - if (input[0] < 518.2562) { - var22 = -0.07544756; - } else { - var22 = -0.0032797817; - } - } - } else { - if (input[4] < 23.436337) { - if (input[7] < 0.015328966) { - var22 = 0.10413666; - } else { - var22 = -0.07257227; - } - } else { - if (input[1] < 81.26416) { - var22 = -0.06749037; - } else { - var22 = 0.025415331; - } - } - } - } else { - if (input[6] < 0.018815022) { - if (input[1] < 227.01422) { - if (input[0] < 647.514) { - var22 = 0.47387728; - } else { - var22 = 0.05820012; - } - } else { - var22 = -0.17156908; - } - } else { - if (input[7] < 0.0042216145) { - if (input[4] < 266.78564) { - var22 = -0.034987994; - } else { - var22 = 0.046666; - } - } else { - if (input[2] < 0.20476818) { - var22 = -0.2033645; - } else { - var22 = -0.0058449553; - } - } - } - } - } else { - if (input[4] < 37.437794) { - if (input[6] < 0.030355815) { - if (input[4] < 21.723177) { - if (input[4] < 21.095676) { - var22 = -0.08328362; - } else { - var22 = 0.23125653; - } - } else { - if (input[5] < 30.1071) { - var22 = -0.23653127; - } else { - var22 = 0.13791358; - } - } - } else { - if (input[6] < 0.053631432) { - if (input[4] < 32.146854) { - var22 = -0.015755216; - } else { - var22 = -0.13818009; - } - } else { - if (input[7] < 0.004288183) { - var22 = 0.12016792; - } else { - var22 = -0.099513285; - } - } - } - } else { - if (input[5] < 26.310371) { - if (input[5] < 18.949379) { - if (input[4] < 45.96011) { - var22 = 0.09780602; - } else { - var22 = -0.23582761; - } - } else { - if (input[0] < 673.89215) { - var22 = -0.22062089; - } else { - var22 = -0.008452428; - } - } - } else { - if (input[4] < 58.806583) { - if (input[5] < 26.446224) { - var22 = 0.19573297; - } else { - var22 = -0.13158633; - } - } else { - if (input[0] < 503.25986) { - var22 = 0.05788632; - } else { - var22 = 0.467125; - } - } - } - } - } - } else { - if (input[1] < 322.41693) { - if (input[7] < 0.0033310084) { - if (input[1] < 311.82135) { - if (input[5] < 27.997742) { - if (input[4] < 28.853786) { - var22 = 0.32334453; - } else { - var22 = 0.077684686; - } - } else { - if (input[7] < 0.0031682758) { - var22 = -0.0275608; - } else { - var22 = -0.3416865; - } - } - } else { - if (input[3] < 12.0) { - if (input[4] < 54.08032) { - var22 = 0.18008922; - } else { - var22 = -0.044391382; - } - } else { - if (input[7] < 0.002904936) { - var22 = 0.43051574; - } else { - var22 = 0.23545498; - } - } - } - } else { - if (input[2] < 0.05844772) { - if (input[7] < 0.005221153) { - if (input[0] < 666.15076) { - var22 = 0.2842773; - } else { - var22 = -0.09254454; - } - } else { - if (input[5] < 24.626286) { - var22 = 0.10221558; - } else { - var22 = -0.03243422; - } - } - } else { - if (input[3] < 9.0) { - if (input[4] < 26.65764) { - var22 = 0.021524727; - } else { - var22 = -0.09270983; - } - } else { - if (input[5] < 24.069965) { - var22 = 0.10753133; - } else { - var22 = -0.0053570913; - } - } - } - } - } else { - if (input[0] < 662.8972) { - if (input[5] < 20.57342) { - if (input[2] < 0.12856597) { - if (input[4] < 28.171436) { - var22 = 0.09710027; - } else { - var22 = -0.10615975; - } - } else { - if (input[4] < 43.929493) { - var22 = 0.14159393; - } else { - var22 = -0.008252256; - } - } - } else { - if (input[1] < 342.5133) { - if (input[4] < 21.723177) { - var22 = 0.03211651; - } else { - var22 = -0.15709598; - } - } else { - if (input[5] < 27.997742) { - var22 = -0.016453769; - } else { - var22 = 0.06845277; - } - } - } - } else { - if (input[1] < 659.8392) { - if (input[7] < 0.0064245304) { - if (input[7] < 0.005309737) { - var22 = 0.09294379; - } else { - var22 = -0.06257283; - } - } else { - if (input[4] < 34.26512) { - var22 = 0.18668121; - } else { - var22 = -0.15679458; - } - } - } else { - if (input[2] < 0.24309075) { - if (input[2] < 0.085624695) { - var22 = -0.13854387; - } else { - var22 = 0.2669099; - } - } else { - if (input[5] < 20.880156) { - var22 = -0.23308061; - } else { - var22 = 0.1564611; - } - } - } - } - } - } - double var23; - if (input[3] < 10.0) { - if (input[5] < 32.309944) { - if (input[4] < 11.631724) { - if (input[6] < 0.009366361) { - if (input[4] < 6.3997884) { - if (input[1] < 75.89282) { - var23 = 0.020343214; - } else { - var23 = 0.15512376; - } - } else { - if (input[5] < 21.517841) { - var23 = -0.009663351; - } else { - var23 = -0.12117653; - } - } - } else { - if (input[6] < 0.0224242) { - if (input[7] < 0.037121538) { - var23 = 0.026507495; - } else { - var23 = 0.11115238; - } - } else { - if (input[0] < 442.55496) { - var23 = 0.15544085; - } else { - var23 = 0.29757544; - } - } - } - } else { - if (input[1] < 577.64667) { - if (input[4] < 39.150074) { - if (input[2] < 0.16156626) { - var23 = -0.009153352; - } else { - var23 = 0.048134293; - } - } else { - if (input[7] < 0.0030364501) { - var23 = -0.028865524; - } else { - var23 = -0.1438162; - } - } - } else { - if (input[2] < 0.23170115) { - if (input[6] < 0.022136807) { - var23 = 0.075917244; - } else { - var23 = 0.30032563; - } - } else { - if (input[3] < 9.0) { - var23 = -0.18284892; - } else { - var23 = 0.26242307; - } - } - } - } - } else { - if (input[1] < 317.39774) { - if (input[1] < 153.67346) { - if (input[3] < 7.0) { - if (input[1] < 115.84448) { - var23 = 0.066051245; - } else { - var23 = 0.16781798; - } - } else { - if (input[1] < 149.04504) { - var23 = -0.10807064; - } else { - var23 = 0.333523; - } - } - } else { - if (input[2] < 0.03618908) { - if (input[0] < 583.14703) { - var23 = -0.3063315; - } else { - var23 = -0.054186888; - } - } else { - if (input[1] < 154.10083) { - var23 = -0.2825097; - } else { - var23 = 0.08425408; - } - } - } - } else { - if (input[7] < 0.0018817764) { - var23 = -0.082726285; - } else { - if (input[6] < 0.046756607) { - if (input[6] < 0.043000326) { - var23 = 0.26198128; - } else { - var23 = -0.16934824; - } - } else { - var23 = 0.33362165; - } - } - } - } - } else { - if (input[4] < 32.62736) { - if (input[7] < 0.003613382) { - if (input[7] < 0.0031165932) { - if (input[1] < 79.2583) { - var23 = -0.014232716; - } else { - if (input[6] < 0.06800464) { - var23 = 0.40900066; - } else { - var23 = 0.07429329; - } - } - } else { - if (input[5] < 22.758417) { - if (input[0] < 514.7731) { - var23 = -0.20323087; - } else { - var23 = 0.17331018; - } - } else { - if (input[5] < 27.03375) { - var23 = 0.36380327; - } else { - var23 = -0.107113235; - } - } - } - } else { - if (input[4] < 22.134548) { - if (input[3] < 12.0) { - if (input[4] < 17.400011) { - var23 = 0.19953342; - } else { - var23 = 0.054519538; - } - } else { - if (input[2] < 0.14234614) { - var23 = 0.24827115; - } else { - var23 = -0.29214504; - } - } - } else { - if (input[6] < 0.036780566) { - if (input[0] < 666.15076) { - var23 = -0.06985929; - } else { - var23 = 0.17053798; - } - } else { - if (input[1] < 351.04474) { - var23 = 0.04423365; - } else { - var23 = 0.12185032; - } - } - } - } - } else { - if (input[6] < 0.04618777) { - if (input[0] < 652.3909) { - if (input[1] < 195.06812) { - if (input[7] < 0.0024513172) { - var23 = 0.2835556; - } else { - var23 = -0.039065607; - } - } else { - if (input[3] < 11.0) { - var23 = -0.06148324; - } else { - var23 = -0.20964196; - } - } - } else { - if (input[3] < 13.0) { - if (input[7] < 0.0031165932) { - var23 = 0.17956346; - } else { - var23 = -0.12792733; - } - } else { - if (input[6] < 0.034918007) { - var23 = -0.06472596; - } else { - var23 = 0.17698237; - } - } - } - } else { - if (input[0] < 444.15787) { - if (input[6] < 0.07796111) { - if (input[7] < 0.003726883) { - var23 = -0.111930706; - } else { - var23 = 0.14437154; - } - } else { - if (input[4] < 45.96011) { - var23 = 0.28609803; - } else { - var23 = 0.15309149; - } - } - } else { - if (input[0] < 630.6033) { - if (input[6] < 0.057156924) { - var23 = -0.087912336; - } else { - var23 = 0.014359909; - } - } else { - if (input[2] < 0.20118733) { - var23 = 0.09503236; - } else { - var23 = -0.013658556; - } - } - } - } - } - } - double var24; - if (input[0] < 549.8694) { - if (input[6] < 0.056870647) { - if (input[4] < 27.594154) { - if (input[6] < 0.04373461) { - if (input[4] < 21.510715) { - if (input[6] < 0.036230333) { - var24 = -0.009676572; - } else { - var24 = 0.078278415; - } - } else { - if (input[7] < 0.004189696) { - var24 = 0.005383744; - } else { - var24 = -0.0825324; - } - } - } else { - if (input[4] < 22.332907) { - if (input[7] < 0.009886153) { - var24 = 0.16607144; - } else { - var24 = 0.032185804; - } - } else { - if (input[1] < 191.00214) { - var24 = 0.01333087; - } else { - var24 = 0.11654554; - } - } - } - } else { - if (input[0] < 499.65594) { - if (input[4] < 29.959333) { - if (input[2] < 0.15095592) { - var24 = -0.14051722; - } else { - var24 = 0.08850673; - } - } else { - if (input[6] < 0.033188343) { - var24 = -0.020390574; - } else { - var24 = -0.23995928; - } - } - } else { - if (input[4] < 38.459763) { - if (input[6] < 0.023223083) { - var24 = 0.18139671; - } else { - var24 = -0.02751152; - } - } else { - if (input[5] < 29.639475) { - var24 = -0.2619969; - } else { - var24 = 0.107228205; - } - } - } - } - } else { - if (input[4] < 34.400455) { - if (input[0] < 437.31543) { - if (input[4] < 26.561974) { - if (input[2] < 0.13148224) { - var24 = 0.2457707; - } else { - var24 = 0.08296487; - } - } else { - if (input[6] < 0.06134235) { - var24 = -0.2494994; - } else { - var24 = 0.01517666; - } - } - } else { - if (input[1] < 81.53082) { - if (input[0] < 442.55496) { - var24 = 0.37913832; - } else { - var24 = -0.15213531; - } - } else { - if (input[7] < 0.006703865) { - var24 = 0.11613807; - } else { - var24 = -0.046836484; - } - } - } - } else { - if (input[6] < 0.067336254) { - if (input[0] < 487.4292) { - if (input[1] < 351.04474) { - var24 = -0.22929344; - } else { - var24 = -0.45619053; - } - } else { - if (input[4] < 37.816837) { - var24 = 0.027955951; - } else { - var24 = -0.15213147; - } - } - } else { - if (input[2] < 0.32127088) { - if (input[3] < 9.0) { - var24 = -0.012950288; - } else { - var24 = 0.050966058; - } - } else { - if (input[3] < 26.0) { - var24 = -0.17254622; - } else { - var24 = 0.05436511; - } - } - } - } - } - } else { - if (input[3] < 30.0) { - if (input[1] < 173.5393) { - if (input[1] < 96.294495) { - if (input[1] < 55.566917) { - if (input[0] < 681.8675) { - var24 = 0.029520508; - } else { - var24 = 0.19549409; - } - } else { - if (input[1] < 78.480835) { - var24 = -0.015106252; - } else { - var24 = -0.077062994; - } - } - } else { - if (input[1] < 117.295654) { - if (input[3] < 6.0) { - var24 = 0.0711033; - } else { - var24 = 0.3566483; - } - } else { - if (input[1] < 121.57103) { - var24 = -0.038632907; - } else { - var24 = 0.046009913; - } - } - } - } else { - if (input[1] < 191.00214) { - if (input[7] < 0.0043885936) { - if (input[2] < 0.030371785) { - var24 = 0.29166; - } else { - var24 = -0.027618693; - } - } else { - if (input[0] < 660.6031) { - var24 = -0.1377398; - } else { - var24 = 0.058909304; - } - } - } else { - if (input[1] < 194.03192) { - if (input[2] < 0.10834086) { - var24 = 0.07303526; - } else { - var24 = 0.25625357; - } - } else { - if (input[4] < 54.08032) { - var24 = 0.008208867; - } else { - var24 = -0.09225246; - } - } - } - } - } else { - if (input[2] < 0.2476418) { - if (input[3] < 61.0) { - var24 = 0.28132185; - } else { - if (input[3] < 65.0) { - var24 = -0.26672557; - } else { - if (input[5] < 25.552517) { - var24 = 0.2694877; - } else { - var24 = -0.14597622; - } - } - } - } else { - if (input[3] < 53.0) { - if (input[5] < 26.244675) { - if (input[6] < 2.0720093) { - var24 = -0.18934886; - } else { - var24 = 0.22576864; - } - } else { - if (input[1] < 1042.0798) { - var24 = 0.29842156; - } else { - var24 = 0.042971425; - } - } - } else { - if (input[2] < 0.25271404) { - var24 = -0.22058392; - } else { - if (input[5] < 21.671062) { - var24 = 0.057719257; - } else { - var24 = 0.25977945; - } - } - } - } - } - } - double var25; - if (input[5] < 10.757549) { - if (input[1] < 52.519287) { - if (input[3] < 6.0) { - if (input[4] < 16.582067) { - if (input[0] < 481.2571) { - var25 = -0.08968952; - } else { - if (input[0] < 598.1789) { - var25 = 0.32769096; - } else { - var25 = 0.090688854; - } - } - } else { - var25 = 0.393639; - } - } else { - var25 = 0.015191706; - } - } else { - if (input[1] < 53.51245) { - if (input[0] < 641.33264) { - var25 = -0.2669306; - } else { - var25 = 0.12204598; - } - } else { - if (input[6] < 0.033188343) { - if (input[7] < 0.0064791786) { - if (input[1] < 197.2326) { - var25 = -0.16292605; - } else { - var25 = 0.2523843; - } - } else { - if (input[2] < 0.05491352) { - var25 = 0.07120221; - } else { - var25 = 0.23174776; - } - } - } else { - if (input[0] < 581.3013) { - if (input[0] < 510.3262) { - var25 = 0.28563893; - } else { - var25 = -0.03592883; - } - } else { - if (input[2] < 0.12643456) { - var25 = 0.40760964; - } else { - var25 = 0.02120469; - } - } - } - } - } - } else { - if (input[1] < 121.57103) { - if (input[3] < 7.0) { - if (input[1] < 117.295654) { - if (input[1] < 115.84448) { - if (input[1] < 96.294495) { - var25 = -0.020416187; - } else { - var25 = 0.028057417; - } - } else { - if (input[3] < 6.0) { - var25 = 0.16308194; - } else { - var25 = 0.41434577; - } - } - } else { - if (input[4] < 25.190176) { - if (input[0] < 652.3909) { - var25 = -0.042072907; - } else { - var25 = 0.1487; - } - } else { - if (input[5] < 24.719372) { - var25 = -0.14789015; - } else { - var25 = -0.034515236; - } - } - } - } else { - if (input[1] < 79.678955) { - if (input[1] < 78.21661) { - if (input[2] < 0.1456947) { - var25 = 0.0819251; - } else { - var25 = -0.16585775; - } - } else { - if (input[1] < 79.2583) { - var25 = -0.16039819; - } else { - var25 = 0.045033928; - } - } - } else { - if (input[1] < 117.759186) { - if (input[5] < 21.44003) { - var25 = 0.22735596; - } else { - var25 = 0.087510094; - } - } else { - if (input[0] < 580.3388) { - var25 = -0.000111295994; - } else { - var25 = 0.23446412; - } - } - } - } - } else { - if (input[1] < 137.21216) { - if (input[2] < 0.18529916) { - if (input[3] < 7.0) { - if (input[0] < 509.51126) { - var25 = 0.11918419; - } else { - var25 = 0.24011317; - } - } else { - if (input[4] < 36.36606) { - var25 = 0.335414; - } else { - var25 = -0.14932731; - } - } - } else { - if (input[0] < 423.21143) { - if (input[4] < 34.400455) { - var25 = -0.4929091; - } else { - var25 = 0.037897434; - } - } else { - if (input[7] < 0.0018817764) { - var25 = -0.12536187; - } else { - var25 = 0.19531576; - } - } - } - } else { - if (input[1] < 150.89111) { - if (input[3] < 6.0) { - if (input[5] < 23.786865) { - var25 = -0.0500783; - } else { - var25 = 0.04113983; - } - } else { - if (input[1] < 139.97156) { - var25 = 0.10936339; - } else { - var25 = 0.030158022; - } - } - } else { - if (input[1] < 154.10083) { - if (input[1] < 153.67346) { - var25 = -0.07933695; - } else { - var25 = -0.21257623; - } - } else { - if (input[1] < 171.00562) { - var25 = 0.10152496; - } else { - var25 = 0.0011968873; - } - } - } - } - } - } - double var26; - if (input[5] < 21.47956) { - if (input[3] < 8.0) { - if (input[4] < 19.483055) { - if (input[6] < 0.025832716) { - if (input[4] < 13.317816) { - if (input[1] < 58.89917) { - var26 = 0.00812696; - } else { - var26 = 0.07340861; - } - } else { - if (input[0] < 514.7731) { - var26 = -0.12510335; - } else { - var26 = 0.016093247; - } - } - } else { - if (input[1] < 75.70349) { - if (input[2] < 0.0697726) { - var26 = 0.040165596; - } else { - var26 = -0.20281194; - } - } else { - if (input[1] < 78.21661) { - var26 = 0.32927758; - } else { - var26 = 0.09642091; - } - } - } - } else { - if (input[7] < 0.01071381) { - if (input[5] < 15.711394) { - if (input[1] < 121.57103) { - var26 = -0.004256339; - } else { - var26 = 0.06149501; - } - } else { - if (input[2] < 0.033970356) { - var26 = 0.038907405; - } else { - var26 = -0.018092556; - } - } - } else { - if (input[4] < 31.242579) { - if (input[0] < 504.12915) { - var26 = -0.1664929; - } else { - var26 = -0.026519826; - } - } else { - var26 = -0.4511113; - } - } - } - } else { - if (input[4] < 34.974888) { - if (input[7] < 0.0031941843) { - if (input[5] < 19.57885) { - if (input[5] < 19.524868) { - var26 = 0.11490026; - } else { - var26 = -0.30745745; - } - } else { - if (input[1] < 151.28687) { - var26 = 0.12335423; - } else { - var26 = 0.28836313; - } - } - } else { - if (input[4] < 26.754328) { - if (input[7] < 0.004320392) { - var26 = 0.27701834; - } else { - var26 = 0.06695121; - } - } else { - if (input[3] < 14.0) { - var26 = -0.0052244337; - } else { - var26 = 0.18925287; - } - } - } - } else { - if (input[7] < 0.00022194226) { - if (input[2] < 0.18258128) { - if (input[3] < 10.0) { - var26 = 0.104681596; - } else { - var26 = 0.25654826; - } - } else { - if (input[2] < 0.3723327) { - var26 = -0.08194451; - } else { - var26 = 0.27678165; - } - } - } else { - if (input[4] < 46.88934) { - if (input[6] < 0.054671705) { - var26 = -0.055739135; - } else { - var26 = 0.048918802; - } - } else { - if (input[3] < 17.0) { - var26 = -0.13913031; - } else { - var26 = 0.060397577; - } - } - } - } - } - } else { - if (input[5] < 29.853495) { - if (input[7] < 0.0058516446) { - if (input[6] < 0.01945806) { - if (input[7] < 0.0030890324) { - if (input[0] < 499.65594) { - var26 = -0.056497607; - } else { - var26 = 0.19817229; - } - } else { - if (input[0] < 659.5366) { - var26 = 0.056253932; - } else { - var26 = -0.13802746; - } - } - } else { - if (input[6] < 0.03715515) { - if (input[7] < 0.0027116358) { - var26 = 0.054885652; - } else { - var26 = -0.03935881; - } - } else { - if (input[4] < 29.050934) { - var26 = 0.037638362; - } else { - var26 = -0.0089697335; - } - } - } - } else { - if (input[4] < 23.075237) { - if (input[6] < 0.02455999) { - if (input[4] < 11.631724) { - var26 = 0.004526357; - } else { - var26 = -0.05184586; - } - } else { - if (input[7] < 0.009376955) { - var26 = -0.016957087; - } else { - var26 = 0.06643244; - } - } - } else { - if (input[0] < 638.9881) { - if (input[6] < 0.03238514) { - var26 = -0.19064082; - } else { - var26 = -0.06545853; - } - } else { - if (input[3] < 15.0) { - var26 = 0.007664408; - } else { - var26 = 0.23728286; - } - } - } - } - } else { - if (input[7] < 0.004320392) { - if (input[6] < 2.0720093) { - if (input[0] < 499.65594) { - if (input[5] < 30.39442) { - var26 = -0.06396921; - } else { - var26 = 0.07268909; - } - } else { - if (input[1] < 370.7329) { - var26 = 0.094350666; - } else { - var26 = 0.25884047; - } - } - } else { - if (input[0] < 493.16626) { - var26 = -0.38835427; - } else { - var26 = 0.039397817; - } - } - } else { - if (input[2] < 0.22023034) { - if (input[2] < 0.17482603) { - if (input[1] < 376.36365) { - var26 = 0.00012983779; - } else { - var26 = 0.15258576; - } - } else { - if (input[5] < 33.48466) { - var26 = 0.29886776; - } else { - var26 = -0.019533347; - } - } - } else { - if (input[4] < 38.23957) { - if (input[4] < 34.687817) { - var26 = -0.0815533; - } else { - var26 = -0.5076693; - } - } else { - if (input[3] < 119.0) { - var26 = 0.15979677; - } else { - var26 = -0.23996304; - } - } - } - } - } - } - double var27; - if (input[1] < 272.0462) { - if (input[4] < 30.802803) { - if (input[6] < 0.05493398) { - if (input[5] < 22.832607) { - if (input[3] < 7.0) { - if (input[4] < 19.483055) { - var27 = 0.015550149; - } else { - var27 = -0.01528949; - } - } else { - if (input[7] < 0.0024513172) { - var27 = 0.41615164; - } else { - var27 = 0.036639698; - } - } - } else { - if (input[6] < 0.012573133) { - if (input[4] < 6.3997884) { - var27 = 0.029816298; - } else { - var27 = -0.065631315; - } - } else { - if (input[4] < 9.192085) { - var27 = 0.101396725; - } else { - var27 = -0.0107697; - } - } - } - } else { - if (input[2] < 0.12643456) { - if (input[0] < 418.34677) { - if (input[7] < 0.0028253945) { - var27 = -0.08865926; - } else { - var27 = 0.17952845; - } - } else { - if (input[3] < 6.0) { - var27 = 0.16297561; - } else { - var27 = 0.4354964; - } - } - } else { - if (input[0] < 439.05417) { - if (input[7] < 0.003726883) { - var27 = -0.08185488; - } else { - var27 = 0.07002853; - } - } else { - if (input[5] < 26.726051) { - var27 = 0.055899594; - } else { - var27 = 0.19272922; - } - } - } - } - } else { - if (input[7] < 0.0066440776) { - if (input[6] < 0.015576805) { - if (input[1] < 202.09811) { - if (input[1] < 197.2326) { - var27 = 0.17454296; - } else { - var27 = 0.6627866; - } - } else { - if (input[6] < 0.013906491) { - var27 = -0.288322; - } else { - var27 = 0.121295646; - } - } - } else { - if (input[1] < 229.68715) { - if (input[1] < 168.27454) { - var27 = -0.031049524; - } else { - var27 = 0.0055736005; - } - } else { - if (input[6] < 0.044108372) { - var27 = -0.13932854; - } else { - var27 = -0.044296734; - } - } - } - } else { - if (input[4] < 31.472792) { - if (input[5] < 24.812592) { - if (input[1] < 168.27454) { - var27 = -0.044584177; - } else { - var27 = 0.3174016; - } - } else { - if (input[7] < 0.007977205) { - var27 = 0.12081231; - } else { - var27 = -0.41810673; - } - } - } else { - if (input[1] < 115.16882) { - if (input[4] < 32.506233) { - var27 = -0.16550148; - } else { - var27 = 0.11961809; - } - } else { - if (input[2] < 0.17482603) { - var27 = -0.30583742; - } else { - var27 = -0.08877713; - } - } - } - } - } - } else { - if (input[1] < 322.41693) { - if (input[7] < 0.003726883) { - if (input[3] < 13.0) { - if (input[0] < 665.0621) { - if (input[6] < 0.032588493) { - var27 = 0.2294028; - } else { - var27 = 0.07931528; - } - } else { - if (input[7] < 0.0028793188) { - var27 = 0.07370611; - } else { - var27 = -0.21474366; - } - } - } else { - if (input[5] < 20.52871) { - if (input[6] < 0.06442285) { - var27 = 0.27950385; - } else { - var27 = -0.1867909; - } - } else { - if (input[6] < 0.043191366) { - var27 = -0.023410022; - } else { - var27 = 0.35108387; - } - } - } - } else { - if (input[2] < 0.19611394) { - if (input[5] < 29.440952) { - if (input[5] < 23.10101) { - var27 = 0.052340664; - } else { - var27 = -0.018040849; - } - } else { - if (input[6] < 0.028205514) { - var27 = 0.007846712; - } else { - var27 = 0.21408315; - } - } - } else { - if (input[4] < 43.929493) { - if (input[2] < 0.20118733) { - var27 = -0.52799904; - } else { - var27 = -0.17469028; - } - } else { - if (input[1] < 294.69617) { - var27 = -0.10755652; - } else { - var27 = 0.35573313; - } - } - } - } - } else { - if (input[4] < 36.538284) { - if (input[2] < 0.1482594) { - if (input[0] < 573.7609) { - if (input[4] < 25.920425) { - var27 = 0.03491973; - } else { - var27 = -0.12083524; - } - } else { - if (input[6] < 0.041540217) { - var27 = 0.016222112; - } else { - var27 = 0.10166012; - } - } - } else { - if (input[0] < 564.8027) { - if (input[6] < 0.06800464) { - var27 = 0.04332429; - } else { - var27 = 0.18751705; - } - } else { - if (input[3] < 10.0) { - var27 = 0.28407452; - } else { - var27 = 0.13443236; - } - } - } - } else { - if (input[6] < 0.050438497) { - if (input[5] < 18.505344) { - if (input[6] < 0.036600526) { - var27 = 0.40636945; - } else { - var27 = 0.058974367; - } - } else { - if (input[0] < 653.56573) { - var27 = -0.18785544; - } else { - var27 = -0.013065315; - } - } - } else { - if (input[2] < 0.13599229) { - if (input[1] < 342.5133) { - var27 = -0.08854816; - } else { - var27 = 0.1590339; - } - } else { - if (input[3] < 9.0) { - var27 = -0.086747155; - } else { - var27 = -0.0010721445; - } - } - } - } - } - } - double var28; - if (input[0] < 685.8291) { - if (input[3] < 11.0) { - if (input[1] < 421.82605) { - if (input[4] < 25.82959) { - if (input[6] < 0.03452544) { - if (input[4] < 16.083313) { - var28 = 0.010627158; - } else { - var28 = -0.017551996; - } - } else { - if (input[7] < 0.024472637) { - var28 = 0.03223176; - } else { - var28 = -0.15914856; - } - } - } else { - if (input[7] < 0.0058516446) { - if (input[2] < 0.04118097) { - var28 = 0.10886262; - } else { - var28 = -0.01103801; - } - } else { - if (input[0] < 618.3243) { - var28 = -0.11264132; - } else { - var28 = 0.017493812; - } - } - } - } else { - if (input[3] < 7.0) { - if (input[6] < 0.053393975) { - if (input[5] < 22.987692) { - var28 = 0.23441653; - } else { - var28 = 0.045823615; - } - } else { - if (input[1] < 426.71954) { - var28 = 0.020570284; - } else { - var28 = 0.34664935; - } - } - } else { - if (input[1] < 580.8021) { - if (input[4] < 34.82185) { - var28 = 0.06695405; - } else { - var28 = -0.00569427; - } - } else { - if (input[2] < 0.061827302) { - var28 = -0.13266899; - } else { - var28 = 0.2301438; - } - } - } - } - } else { - if (input[4] < 28.949688) { - if (input[7] < 0.0055812276) { - if (input[6] < 0.021268906) { - var28 = -0.12489596; - } else { - if (input[4] < 28.853786) { - var28 = 0.24683213; - } else { - var28 = -0.01865617; - } - } - } else { - if (input[4] < 25.02411) { - if (input[5] < 29.853495) { - var28 = 0.11970637; - } else { - var28 = -0.29556715; - } - } else { - if (input[6] < 0.035672467) { - var28 = -0.19173603; - } else { - var28 = 0.07236691; - } - } - } - } else { - if (input[0] < 437.31543) { - if (input[5] < 25.396322) { - if (input[0] < 433.54276) { - var28 = 0.2845645; - } else { - var28 = 0.056169037; - } - } else { - if (input[7] < 0.0055812276) { - var28 = 0.15212147; - } else { - var28 = -0.1888795; - } - } - } else { - if (input[2] < 0.32127088) { - if (input[7] < 0.003554517) { - var28 = 0.03710915; - } else { - var28 = -0.016786255; - } - } else { - if (input[6] < 2.5102012) { - var28 = -0.1276233; - } else { - var28 = 0.15524821; - } - } - } - } - } - } else { - if (input[4] < 18.692837) { - if (input[6] < 0.021562107) { - if (input[5] < 27.379698) { - if (input[6] < 0.016361425) { - if (input[6] < 0.01517198) { - var28 = 0.24451284; - } else { - var28 = -0.07029262; - } - } else { - var28 = 0.3466925; - } - } else { - var28 = -0.21127182; - } - } else { - if (input[3] < 6.0) { - if (input[1] < 73.54457) { - var28 = 0.10319612; - } else { - var28 = -0.33141887; - } - } else { - if (input[2] < 0.05844772) { - var28 = 0.24508467; - } else { - var28 = 0.0225286; - } - } - } - } else { - if (input[6] < 0.015576805) { - if (input[2] < 0.030371785) { - if (input[3] < 6.0) { - if (input[6] < 0.011077133) { - var28 = 0.2962204; - } else { - var28 = -0.0075790384; - } - } else { - if (input[1] < 81.0188) { - var28 = -0.32402918; - } else { - var28 = 0.069005385; - } - } - } else { - if (input[7] < 0.0058516446) { - var28 = -0.5988386; - } else { - var28 = -0.006679825; - } - } - } else { - if (input[6] < 0.060939953) { - if (input[1] < 342.5133) { - if (input[1] < 269.17102) { - var28 = 0.07701923; - } else { - var28 = -0.2139095; - } - } else { - if (input[7] < 0.008720319) { - var28 = 0.21707912; - } else { - var28 = -0.012809078; - } - } - } else { - if (input[5] < 19.630774) { - var28 = 0.14683667; - } else { - if (input[5] < 22.647522) { - var28 = -0.35385054; - } else { - var28 = -0.028347634; - } - } - } - } - } - } - double var29; - if (input[3] < 23.0) { - if (input[4] < 42.378788) { - if (input[6] < 0.059464313) { - if (input[0] < 524.19574) { - if (input[4] < 29.050934) { - if (input[6] < 0.050438497) { - var29 = -0.012152876; - } else { - var29 = 0.055251848; - } - } else { - if (input[0] < 497.7732) { - var29 = -0.13945596; - } else { - var29 = -0.029592179; - } - } - } else { - if (input[7] < 0.0043542767) { - if (input[4] < 36.36606) { - var29 = 0.025316345; - } else { - var29 = -0.015895613; - } - } else { - if (input[4] < 22.806326) { - var29 = 0.008185026; - } else { - var29 = -0.018158875; - } - } - } - } else { - if (input[1] < 191.00214) { - if (input[1] < 147.89758) { - if (input[2] < 0.20118733) { - var29 = 0.02115018; - } else { - var29 = 0.19280297; - } - } else { - if (input[0] < 492.25522) { - var29 = -0.16291133; - } else { - var29 = -0.02945566; - } - } - } else { - if (input[1] < 193.68164) { - if (input[0] < 586.0259) { - var29 = 0.55507255; - } else { - var29 = 0.0781992; - } - } else { - if (input[7] < 0.003554517) { - var29 = 0.091786176; - } else { - var29 = 0.023309533; - } - } - } - } - } else { - if (input[7] < 0.00022194226) { - if (input[0] < 512.96185) { - if (input[1] < 149.04504) { - if (input[4] < 873.4576) { - var29 = -0.14039798; - } else { - var29 = 0.23311527; - } - } else { - if (input[2] < 0.28529787) { - var29 = 0.1454058; - } else { - var29 = -0.037768595; - } - } - } else { - if (input[2] < 0.18529916) { - if (input[5] < 25.60802) { - var29 = 0.05917162; - } else { - var29 = -0.06312214; - } - } else { - if (input[2] < 0.3723327) { - var29 = -0.21941121; - } else { - var29 = 0.12850817; - } - } - } - } else { - if (input[7] < 0.0047754645) { - if (input[4] < 51.153934) { - if (input[1] < 272.0462) { - var29 = -0.07103682; - } else { - var29 = 0.010864122; - } - } else { - if (input[3] < 14.0) { - var29 = -0.17941062; - } else { - var29 = -0.025112435; - } - } - } else { - if (input[2] < 0.28529787) { - if (input[4] < 43.929493) { - var29 = -0.10337099; - } else { - var29 = -0.37108088; - } - } else { - if (input[4] < 51.153934) { - var29 = 0.14176; - } else { - var29 = -0.16411103; - } - } - } - } - } - } else { - if (input[1] < 771.8581) { - if (input[0] < 591.9396) { - if (input[4] < 25.557682) { - var29 = 0.0036689357; - } else { - if (input[1] < 432.44418) { - if (input[4] < 54.08032) { - var29 = 0.18818644; - } else { - var29 = -0.030765405; - } - } else { - if (input[1] < 580.8021) { - var29 = 0.36285567; - } else { - var29 = 0.2097088; - } - } - } - } else { - if (input[2] < 0.21767628) { - if (input[4] < 47.95029) { - if (input[0] < 672.7553) { - var29 = 0.27721217; - } else { - var29 = 0.0009629917; - } - } else { - if (input[5] < 23.10101) { - var29 = 0.20076166; - } else { - var29 = -0.17749347; - } - } - } else { - if (input[4] < 51.153934) { - if (input[5] < 22.504189) { - var29 = 0.05977338; - } else { - var29 = -0.41732138; - } - } else { - if (input[3] < 26.0) { - var29 = -0.055520806; - } else { - var29 = 0.23349501; - } - } - } - } - } else { - if (input[5] < 24.069965) { - if (input[0] < 628.1736) { - if (input[0] < 602.4093) { - if (input[0] < 549.0806) { - var29 = 0.024868509; - } else { - var29 = 0.15756503; - } - } else { - if (input[7] < 0.006159995) { - var29 = -0.29129523; - } else { - var29 = 0.14797881; - } - } - } else { - if (input[4] < 49.35926) { - var29 = 0.2809746; - } else { - if (input[7] < 0.0023330299) { - var29 = 0.22609676; - } else { - var29 = -0.030532164; - } - } - } - } else { - if (input[3] < 24.0) { - if (input[4] < 37.62948) { - var29 = 0.1885611; - } else { - if (input[6] < 0.07519955) { - var29 = -0.5301356; - } else { - var29 = -0.16484801; - } - } - } else { - if (input[7] < 0.015328966) { - if (input[4] < 34.687817) { - var29 = 0.2255476; - } else { - var29 = -0.02067405; - } - } else { - if (input[0] < 575.62115) { - var29 = -0.20552307; - } else { - var29 = 0.17336714; - } - } - } - } - } - } - double var30; - if (input[3] < 16.0) { - if (input[1] < 808.4346) { - if (input[4] < 42.378788) { - if (input[6] < 0.07962002) { - if (input[6] < 0.041724283) { - if (input[4] < 23.075237) { - var30 = 0.0038499022; - } else { - var30 = -0.021136777; - } - } else { - if (input[4] < 34.26512) { - var30 = 0.021438412; - } else { - var30 = -0.016640613; - } - } - } else { - if (input[5] < 23.747627) { - if (input[3] < 8.0) { - var30 = -0.04944776; - } else { - var30 = 0.12504394; - } - } else { - if (input[0] < 420.89536) { - var30 = 0.010524266; - } else { - var30 = 0.19502339; - } - } - } - } else { - if (input[7] < 0.0035266217) { - if (input[7] < 0.00022194226) { - if (input[0] < 519.08496) { - var30 = 0.07338564; - } else { - var30 = -0.0037626652; - } - } else { - if (input[4] < 51.153934) { - var30 = -0.014802671; - } else { - var30 = -0.12671523; - } - } - } else { - if (input[1] < 148.36841) { - if (input[2] < 0.25866318) { - var30 = -0.06731587; - } else { - var30 = 0.3623707; - } - } else { - if (input[0] < 530.13635) { - var30 = -0.2406261; - } else { - var30 = -0.105266415; - } - } - } - } - } else { - if (input[6] < 0.064966485) { - if (input[4] < 38.911335) { - if (input[5] < 26.310371) { - var30 = 0.25485677; - } else { - if (input[6] < 0.050438497) { - var30 = -0.16323964; - } else { - var30 = 0.16238008; - } - } - } else { - if (input[5] < 24.626286) { - var30 = -0.34824082; - } else { - var30 = 0.026335156; - } - } - } else { - if (input[2] < 0.300006) { - if (input[7] < 0.0050104572) { - var30 = 0.37426755; - } else { - var30 = 0.055018917; - } - } else { - var30 = 0.005542815; - } - } - } - } else { - if (input[1] < 401.15515) { - if (input[3] < 17.0) { - if (input[4] < 31.362043) { - if (input[2] < 0.087249905) { - var30 = 0.0069872867; - } else { - var30 = 0.24441172; - } - } else { - if (input[6] < 0.059464313) { - if (input[2] < 0.13749409) { - var30 = 0.05097892; - } else { - var30 = -0.30162436; - } - } else { - if (input[2] < 0.20664251) { - var30 = 0.18861912; - } else { - var30 = -0.015347408; - } - } - } - } else { - if (input[7] < 0.0024513172) { - if (input[7] < 0.0014543242) { - if (input[2] < 0.26561487) { - var30 = 0.17756866; - } else { - var30 = -0.14224513; - } - } else { - if (input[5] < 24.952822) { - var30 = 0.23194899; - } else { - var30 = 0.52907217; - } - } - } else { - if (input[1] < 348.68933) { - if (input[4] < 37.62948) { - var30 = 0.1947604; - } else { - var30 = -0.058419526; - } - } else { - if (input[6] < 0.09237537) { - var30 = 0.25120142; - } else { - var30 = -0.08778014; - } - } - } - } - } else { - if (input[5] < 22.462898) { - if (input[4] < 44.533443) { - if (input[3] < 64.0) { - if (input[2] < 0.18675008) { - var30 = 0.114208736; - } else { - var30 = 0.2622775; - } - } else { - if (input[6] < 0.063917145) { - var30 = 0.113393344; - } else { - var30 = -0.3996823; - } - } - } else { - if (input[3] < 18.0) { - if (input[7] < 0.0030103251) { - var30 = 0.04774635; - } else { - var30 = -0.34159806; - } - } else { - if (input[0] < 600.2424) { - var30 = 0.16324897; - } else { - var30 = -0.014345161; - } - } - } - } else { - if (input[0] < 636.6657) { - if (input[6] < 0.050438497) { - if (input[6] < 0.049783602) { - var30 = -0.030691566; - } else { - var30 = -0.6889656; - } - } else { - if (input[4] < 39.41097) { - var30 = 0.067482814; - } else { - var30 = -0.020664714; - } - } - } else { - if (input[7] < 0.0059561525) { - if (input[5] < 22.910156) { - var30 = -0.24548787; - } else { - var30 = 0.06868269; - } - } else { - if (input[6] < 0.06301065) { - var30 = 0.2734897; - } else { - var30 = 0.018857412; - } - } - } - } - } - } - double var31; - if (input[0] < 549.8694) { - if (input[6] < 0.017102145) { - if (input[7] < 0.04087875) { - if (input[7] < 0.0064245304) { - if (input[1] < 151.58571) { - if (input[1] < 76.13782) { - var31 = 0.009031001; - } else { - var31 = -0.14250433; - } - } else { - if (input[4] < 20.551977) { - var31 = 0.2531051; - } else { - var31 = 0.026366211; - } - } - } else { - if (input[0] < 549.0806) { - if (input[4] < 9.192085) { - var31 = -0.029435875; - } else { - var31 = -0.10077071; - } - } else { - if (input[1] < 173.9191) { - var31 = 0.3954906; - } else { - var31 = -0.21392871; - } - } - } - } else { - if (input[1] < 96.294495) { - if (input[7] < 0.086682595) { - if (input[6] < 0.01517198) { - var31 = -0.1121055; - } else { - var31 = 0.19942574; - } - } else { - if (input[0] < 535.2388) { - var31 = 0.064895846; - } else { - var31 = -0.15175273; - } - } - } else { - if (input[5] < 25.194532) { - if (input[5] < 23.366688) { - var31 = 0.12456851; - } else { - var31 = -0.1256383; - } - } else { - if (input[0] < 497.7732) { - var31 = 0.23821586; - } else { - var31 = 0.0006346548; - } - } - } - } - } else { - if (input[4] < 14.698128) { - if (input[3] < 7.0) { - if (input[6] < 0.032588493) { - if (input[4] < 12.241358) { - var31 = 0.06895355; - } else { - var31 = -0.0007654638; - } - } else { - var31 = 0.3088448; - } - } else { - if (input[6] < 0.022136807) { - if (input[3] < 8.0) { - var31 = 0.15610541; - } else { - var31 = -0.041140378; - } - } else { - if (input[5] < 20.922693) { - var31 = 0.07359313; - } else { - var31 = 0.25295433; - } - } - } - } else { - if (input[1] < 168.27454) { - if (input[1] < 150.89111) { - if (input[3] < 9.0) { - var31 = -0.014912315; - } else { - var31 = 0.09120771; - } - } else { - if (input[5] < 28.341646) { - var31 = -0.1240659; - } else { - var31 = 0.0016934013; - } - } - } else { - if (input[1] < 173.5393) { - if (input[0] < 490.3461) { - var31 = -0.036108736; - } else { - var31 = 0.14114001; - } - } else { - if (input[1] < 177.04877) { - var31 = -0.07390196; - } else { - var31 = 0.006624578; - } - } - } - } - } - } else { - if (input[3] < 31.0) { - if (input[0] < 685.8291) { - if (input[1] < 173.7774) { - if (input[1] < 96.294495) { - if (input[1] < 54.414856) { - var31 = 0.026636811; - } else { - var31 = -0.025393637; - } - } else { - if (input[3] < 6.0) { - var31 = 0.0011947413; - } else { - var31 = 0.048814923; - } - } - } else { - if (input[1] < 191.00214) { - if (input[7] < 0.0019773336) { - var31 = 0.11642728; - } else { - var31 = -0.06402586; - } - } else { - if (input[1] < 193.68164) { - var31 = 0.1590646; - } else { - var31 = 0.0039576893; - } - } - } - } else { - if (input[4] < 18.692837) { - if (input[3] < 6.0) { - if (input[6] < 0.021562107) { - var31 = 0.12592226; - } else { - var31 = -0.13734204; - } - } else { - if (input[2] < 0.05979991) { - var31 = 0.28960425; - } else { - var31 = 0.020359531; - } - } - } else { - if (input[3] < 8.0) { - if (input[2] < 0.09893972) { - var31 = -0.024545684; - } else { - var31 = 0.13660212; - } - } else { - if (input[2] < 0.13749409) { - var31 = 0.18869962; - } else { - var31 = -0.121860385; - } - } - } - } - } else { - if (input[2] < 0.300006) { - if (input[5] < 24.719372) { - if (input[5] < 23.10101) { - if (input[5] < 18.639524) { - var31 = 0.007752279; - } else { - var31 = 0.2836841; - } - } else { - if (input[5] < 24.108562) { - var31 = 0.04265081; - } else { - var31 = 0.28210148; - } - } - } else { - if (input[7] < 0.020403687) { - if (input[5] < 25.660357) { - var31 = -0.074003726; - } else { - var31 = 0.25364164; - } - } else { - var31 = -0.29279172; - } - } - } else { - if (input[3] < 82.0) { - if (input[1] < 1047.1123) { - if (input[3] < 36.0) { - var31 = -0.03014806; - } else { - var31 = 0.27859882; - } - } else { - if (input[7] < 0.0060544414) { - var31 = -0.2398929; - } else { - var31 = 0.054473773; - } - } - } else { - var31 = 0.26802516; - } - } - } - } - double var32; - if (input[5] < 11.839297) { - if (input[1] < 227.01422) { - if (input[2] < 0.015113175) { - if (input[7] < 0.009777767) { - if (input[4] < 23.523321) { - if (input[4] < 16.582067) { - var32 = 0.10312684; - } else { - var32 = 0.43698326; - } - } else { - var32 = -0.09962591; - } - } else { - if (input[6] < 0.024027178) { - if (input[3] < 6.0) { - var32 = 0.20409198; - } else { - var32 = -0.11569251; - } - } else { - var32 = -0.25826058; - } - } - } else { - if (input[2] < 0.04207915) { - if (input[6] < 0.016742049) { - if (input[6] < 0.011578243) { - var32 = -0.17230426; - } else { - var32 = 0.05577596; - } - } else { - if (input[1] < 118.04906) { - var32 = -0.16511405; - } else { - var32 = -0.6092951; - } - } - } else { - if (input[6] < 0.067336254) { - if (input[6] < 0.063442506) { - var32 = 0.056658078; - } else { - var32 = -0.31974286; - } - } else { - if (input[6] < 0.08433238) { - var32 = 0.37677577; - } else { - var32 = -0.017968949; - } - } - } - } - } else { - if (input[0] < 465.9689) { - var32 = -0.048966657; - } else { - if (input[7] < 0.0064245304) { - var32 = 0.3352511; - } else { - if (input[7] < 0.007683049) { - var32 = -0.107148744; - } else { - var32 = 0.23345521; - } - } - } - } - } else { - if (input[5] < 32.309944) { - if (input[1] < 121.57103) { - if (input[1] < 117.295654) { - if (input[1] < 115.84448) { - if (input[2] < 0.10185647) { - var32 = 0.0002534048; - } else { - var32 = -0.05018915; - } - } else { - if (input[2] < 0.11012769) { - var32 = 0.1480416; - } else { - var32 = 0.3784611; - } - } - } else { - if (input[0] < 403.76456) { - if (input[4] < 10.959761) { - var32 = -0.06758902; - } else { - var32 = 0.18002814; - } - } else { - if (input[4] < 25.647543) { - var32 = -0.026577396; - } else { - var32 = -0.07905267; - } - } - } - } else { - if (input[1] < 137.21216) { - if (input[7] < 0.0033590836) { - if (input[6] < 0.056870647) { - var32 = -0.07150901; - } else { - var32 = 0.16231485; - } - } else { - if (input[0] < 474.9457) { - var32 = 0.10756013; - } else { - var32 = 0.23099102; - } - } - } else { - if (input[4] < 17.400011) { - if (input[2] < 0.06740692) { - var32 = 0.009735582; - } else { - var32 = 0.11471225; - } - } else { - if (input[0] < 437.31543) { - var32 = -0.061892986; - } else { - var32 = 0.0024488792; - } - } - } - } - } else { - if (input[4] < 639.08484) { - if (input[6] < 0.0719236) { - if (input[6] < 0.06867167) { - if (input[4] < 36.70546) { - var32 = 0.053877898; - } else { - var32 = 0.24079216; - } - } else { - if (input[4] < 39.656563) { - var32 = -0.07292737; - } else { - var32 = -0.42143187; - } - } - } else { - if (input[2] < 0.20299208) { - var32 = 0.3767279; - } else { - if (input[7] < 0.0019291723) { - var32 = -0.14860135; - } else { - var32 = 0.16468991; - } - } - } - } else { - var32 = -0.25213528; - } - } - } - double var33; - if (input[6] < 0.034337986) { - if (input[7] < 0.002235593) { - if (input[0] < 437.31543) { - var33 = 0.5788957; - } else { - if (input[1] < 148.60223) { - if (input[1] < 115.47824) { - if (input[2] < 0.068600416) { - var33 = 0.16037935; - } else { - var33 = -0.1155035; - } - } else { - if (input[6] < 0.021562107) { - var33 = -0.38383424; - } else { - var33 = -0.049741782; - } - } - } else { - if (input[4] < 33.613834) { - if (input[1] < 176.52954) { - var33 = 0.5012753; - } else { - var33 = 0.102043204; - } - } else { - if (input[6] < 0.028412107) { - var33 = 0.12615228; - } else { - var33 = -0.008880984; - } - } - } - } - } else { - if (input[4] < 25.190176) { - if (input[0] < 681.8675) { - if (input[6] < 0.019131957) { - if (input[2] < 0.043907166) { - var33 = -0.010153404; - } else { - var33 = -0.114196874; - } - } else { - if (input[4] < 14.046501) { - var33 = 0.06356651; - } else { - var33 = -0.0045966813; - } - } - } else { - if (input[1] < 171.54358) { - if (input[2] < 0.012471318) { - var33 = 0.29918757; - } else { - var33 = -0.0174341; - } - } else { - if (input[5] < 24.27795) { - var33 = 0.19825849; - } else { - var33 = -0.0074895285; - } - } - } - } else { - if (input[2] < 0.05491352) { - if (input[1] < 78.480835) { - if (input[4] < 28.26695) { - var33 = 0.037447114; - } else { - var33 = 0.33735216; - } - } else { - if (input[1] < 154.10083) { - var33 = -0.10907633; - } else { - var33 = 0.06332278; - } - } - } else { - if (input[7] < 0.0038463692) { - if (input[6] < 0.021268906) { - var33 = 0.19964918; - } else { - var33 = -0.032981582; - } - } else { - if (input[3] < 7.0) { - var33 = -0.022095457; - } else { - var33 = -0.13040712; - } - } - } - } - } - } else { - if (input[4] < 19.845797) { - if (input[1] < 120.8548) { - if (input[0] < 476.04532) { - if (input[2] < 0.09225285) { - if (input[7] < 0.011801806) { - var33 = 0.11544157; - } else { - var33 = -0.030124232; - } - } else { - if (input[7] < 0.009081948) { - var33 = -0.15299074; - } else { - var33 = 0.17306261; - } - } - } else { - if (input[7] < 0.013718606) { - if (input[7] < 0.009674528) { - var33 = -0.07186932; - } else { - var33 = 0.20656945; - } - } else { - if (input[2] < 0.085624695) { - var33 = -0.28135458; - } else { - var33 = 0.11325828; - } - } - } - } else { - if (input[6] < 0.038425803) { - if (input[3] < 6.0) { - if (input[0] < 500.55154) { - var33 = 0.054385714; - } else { - var33 = -0.20273073; - } - } else { - if (input[6] < 0.03472593) { - var33 = 0.34428877; - } else { - var33 = 0.11147041; - } - } - } else { - if (input[2] < 0.1030972) { - if (input[6] < 0.042284492) { - var33 = 0.20189324; - } else { - var33 = -0.09665735; - } - } else { - var33 = 0.29708177; - } - } - } - } else { - if (input[7] < 0.017428085) { - if (input[4] < 32.274986) { - if (input[6] < 0.059464313) { - if (input[0] < 465.9689) { - var33 = -0.03536438; - } else { - var33 = 0.019174151; - } - } else { - if (input[0] < 451.8147) { - var33 = 0.03056829; - } else { - var33 = 0.1491945; - } - } - } else { - if (input[6] < 0.047546193) { - if (input[0] < 563.9471) { - var33 = -0.16115475; - } else { - var33 = -0.019376863; - } - } else { - if (input[7] < 0.0035266217) { - var33 = 0.007936126; - } else { - var33 = -0.028926868; - } - } - } - } else { - if (input[1] < 176.75247) { - if (input[0] < 439.05417) { - if (input[4] < 22.037666) { - var33 = 0.24844947; - } else { - var33 = -0.16670728; - } - } else { - if (input[0] < 445.85364) { - var33 = -0.44898912; - } else { - var33 = -0.17738134; - } - } - } else { - if (input[6] < 0.048940413) { - if (input[4] < 26.754328) { - var33 = 0.24956457; - } else { - var33 = 0.013802467; - } - } else { - if (input[7] < 0.028802285) { - var33 = -0.17599715; - } else { - var33 = 0.15112543; - } - } - } - } - } - } - double var34; - if (input[0] < 612.42395) { - if (input[6] < 0.052442644) { - if (input[4] < 26.84426) { - if (input[6] < 0.028205514) { - if (input[4] < 11.631724) { - if (input[0] < 468.29953) { - var34 = 0.068224385; - } else { - var34 = -0.0147347925; - } - } else { - if (input[0] < 481.2571) { - var34 = -0.06312812; - } else { - var34 = -0.014463358; - } - } - } else { - if (input[7] < 0.002544325) { - if (input[7] < 0.0023330299) { - var34 = -0.053276725; - } else { - var34 = -0.27094573; - } - } else { - if (input[7] < 0.0040931404) { - var34 = 0.046055138; - } else { - var34 = 0.008288866; - } - } - } - } else { - if (input[0] < 524.19574) { - if (input[2] < 0.100723624) { - if (input[1] < 151.58571) { - var34 = -0.08195739; - } else { - var34 = 0.044696152; - } - } else { - if (input[2] < 0.18825138) { - var34 = -0.11639565; - } else { - var34 = -0.85616034; - } - } - } else { - if (input[7] < 0.0055812276) { - if (input[2] < 0.16156626) { - var34 = -0.00045042875; - } else { - var34 = -0.22883739; - } - } else { - if (input[1] < 345.222) { - var34 = -0.14801352; - } else { - var34 = 0.008234401; - } - } - } - } - } else { - if (input[4] < 34.13175) { - if (input[1] < 367.2591) { - if (input[0] < 437.31543) { - if (input[7] < 0.003726883) { - var34 = -0.07550457; - } else { - var34 = 0.056531634; - } - } else { - if (input[1] < 59.12854) { - var34 = -0.11571471; - } else { - var34 = 0.047459517; - } - } - } else { - if (input[3] < 59.0) { - if (input[0] < 472.82422) { - var34 = 0.05470092; - } else { - var34 = 0.19110629; - } - } else { - if (input[2] < 0.25271404) { - var34 = -0.54042095; - } else { - var34 = 0.15428035; - } - } - } - } else { - if (input[6] < 0.07396459) { - if (input[0] < 487.4292) { - if (input[6] < 0.06800464) { - var34 = -0.20935623; - } else { - var34 = -0.06523762; - } - } else { - if (input[4] < 41.953285) { - var34 = 0.012518992; - } else { - var34 = -0.08749558; - } - } - } else { - if (input[0] < 406.91656) { - if (input[5] < 17.826921) { - var34 = -0.11886461; - } else { - var34 = 0.2261269; - } - } else { - if (input[4] < 40.86154) { - var34 = 0.058337618; - } else { - var34 = 0.005135916; - } - } - } - } - } - } else { - if (input[2] < 0.017481804) { - if (input[6] < 0.030984042) { - if (input[1] < 227.6239) { - if (input[6] < 0.006028899) { - if (input[7] < 0.009276815) { - var34 = 0.0922657; - } else { - var34 = -0.021476664; - } - } else { - if (input[7] < 0.065982014) { - var34 = 0.1128883; - } else { - var34 = -0.14876702; - } - } - } else { - if (input[6] < 0.0067773927) { - if (input[0] < 673.89215) { - var34 = 0.3258408; - } else { - var34 = 0.043771435; - } - } else { - if (input[1] < 269.17102) { - var34 = -0.04716756; - } else { - var34 = 0.18408737; - } - } - } - } else { - if (input[5] < 24.407122) { - if (input[7] < 0.0029307685) { - if (input[6] < 0.037336733) { - var34 = 0.23125188; - } else { - var34 = -0.23184034; - } - } else { - if (input[4] < 24.247833) { - var34 = -0.43912104; - } else { - var34 = -0.0147544695; - } - } - } else { - if (input[6] < 0.035672467) { - var34 = 0.2790731; - } else { - var34 = 0.023048025; - } - } - } - } else { - if (input[6] < 0.012091974) { - if (input[2] < 0.030371785) { - if (input[7] < 0.0048549008) { - if (input[1] < 151.58571) { - var34 = -0.025464298; - } else { - var34 = 0.20617856; - } - } else { - if (input[1] < 56.30182) { - var34 = -0.21718009; - } else { - var34 = -0.03994429; - } - } - } else { - if (input[0] < 649.94415) { - if (input[4] < 21.405123) { - var34 = 0.20771982; - } else { - var34 = -0.41022488; - } - } else { - var34 = -0.5198521; - } - } - } else { - if (input[3] < 12.0) { - if (input[1] < 171.00562) { - if (input[5] < 24.407122) { - var34 = 0.041057907; - } else { - var34 = -0.025468074; - } - } else { - if (input[5] < 23.66799) { - var34 = -0.021090643; - } else { - var34 = 0.022732593; - } - } - } else { - if (input[1] < 347.76187) { - if (input[5] < 19.524868) { - var34 = 0.20154488; - } else { - var34 = 0.08541734; - } - } else { - if (input[6] < 0.08433238) { - var34 = 0.03019728; - } else { - var34 = -0.09138988; - } - } - } - } - } - } - double var35; - if (input[1] < 79.678955) { - if (input[1] < 78.480835) { - if (input[1] < 59.12854) { - if (input[1] < 54.414856) { - if (input[3] < 6.0) { - if (input[0] < 412.7322) { - var35 = -0.09098955; - } else { - var35 = 0.0015267833; - } - } else { - if (input[1] < 52.519287) { - var35 = 0.0142220035; - } else { - var35 = 0.18760805; - } - } - } else { - if (input[0] < 643.69525) { - if (input[6] < 0.026557412) { - var35 = -0.046158195; - } else { - var35 = -0.115954675; - } - } else { - if (input[7] < 0.008892193) { - var35 = 0.04088507; - } else { - var35 = -0.08880069; - } - } - } - } else { - if (input[0] < 671.5958) { - if (input[1] < 75.70349) { - if (input[5] < 20.02947) { - var35 = 0.27686486; - } else { - var35 = 0.07723416; - } - } else { - if (input[2] < 0.044810057) { - var35 = 0.11553094; - } else { - var35 = 0.018820563; - } - } - } else { - if (input[7] < 0.0050532636) { - if (input[5] < 26.244675) { - var35 = 0.074994534; - } else { - var35 = -0.27176893; - } - } else { - if (input[5] < 15.362015) { - var35 = 0.34137285; - } else { - var35 = -0.27450457; - } - } - } - } - } else { - if (input[0] < 573.7609) { - if (input[6] < 0.009366361) { - if (input[6] < 0.007448412) { - if (input[5] < 22.24381) { - var35 = -0.24822624; - } else { - var35 = 0.1392598; - } - } else { - if (input[1] < 78.76117) { - var35 = 0.018954776; - } else { - var35 = 0.46396023; - } - } - } else { - if (input[5] < 31.63552) { - if (input[5] < 24.108562) { - var35 = -0.1256664; - } else { - var35 = -0.22571208; - } - } else { - var35 = 0.22999023; - } - } - } else { - if (input[3] < 7.0) { - if (input[5] < 25.60802) { - if (input[3] < 6.0) { - var35 = 0.15471481; - } else { - var35 = -0.019252822; - } - } else { - if (input[0] < 635.4403) { - var35 = -0.037419353; - } else { - var35 = -0.23263697; - } - } - } else { - if (input[1] < 79.2583) { - if (input[3] < 10.0) { - var35 = -0.16460867; - } else { - var35 = 0.075290635; - } - } else { - if (input[0] < 642.4932) { - var35 = -0.014559417; - } else { - var35 = 0.49966294; - } - } - } - } - } - } else { - if (input[1] < 81.0188) { - if (input[5] < 23.136395) { - if (input[0] < 480.22372) { - var35 = 0.8911301; - } else { - if (input[4] < 29.862753) { - if (input[3] < 6.0) { - var35 = 0.0055033253; - } else { - var35 = 0.45165157; - } - } else { - if (input[4] < 31.472792) { - var35 = -0.22076938; - } else { - var35 = 0.2022343; - } - } - } - } else { - if (input[3] < 6.0) { - if (input[0] < 648.74475) { - if (input[4] < 21.723177) { - var35 = -0.013599672; - } else { - var35 = 0.14313428; - } - } else { - var35 = 0.4169213; - } - } else { - if (input[4] < 14.482901) { - var35 = 0.2129654; - } else { - var35 = -0.2548947; - } - } - } - } else { - if (input[7] < 0.018963357) { - if (input[6] < 0.02797405) { - if (input[7] < 0.005712156) { - if (input[2] < 0.05706811) { - var35 = 0.050255876; - } else { - var35 = -0.03851036; - } - } else { - if (input[4] < 17.855886) { - var35 = -0.0064623947; - } else { - var35 = -0.06545679; - } - } - } else { - if (input[4] < 29.050934) { - if (input[5] < 20.121521) { - var35 = 0.043954194; - } else { - var35 = 0.008881416; - } - } else { - if (input[7] < 0.005177345) { - var35 = 0.00069955207; - } else { - var35 = -0.053007532; - } - } - } - } else { - if (input[3] < 8.0) { - if (input[4] < 29.561077) { - if (input[6] < 0.012573133) { - var35 = -0.007994117; - } else { - var35 = 0.0449605; - } - } else { - var35 = -0.34570608; - } - } else { - if (input[4] < 16.582067) { - if (input[5] < 27.11507) { - var35 = 0.2046578; - } else { - var35 = 0.019739008; - } - } else { - if (input[6] < 0.02506348) { - var35 = -0.18067439; - } else { - var35 = 0.042880215; - } - } - } - } - } - } - double var36; - if (input[3] < 10.0) { - if (input[1] < 577.64667) { - if (input[0] < 394.5867) { - if (input[5] < 27.204857) { - if (input[2] < 0.18675008) { - if (input[1] < 194.25922) { - var36 = 0.24129857; - } else { - var36 = 0.02139511; - } - } else { - var36 = -0.11712677; - } - } else { - if (input[5] < 27.997742) { - var36 = -0.32423484; - } else { - if (input[4] < 16.744081) { - var36 = 0.2134182; - } else { - var36 = -0.0070745363; - } - } - } - } else { - if (input[0] < 445.85364) { - if (input[7] < 0.0045949644) { - if (input[6] < 0.06800464) { - var36 = -0.0709271; - } else { - var36 = -0.00614136; - } - } else { - if (input[6] < 0.044296063) { - var36 = -0.0150985; - } else { - var36 = 0.05471811; - } - } - } else { - if (input[5] < 26.65595) { - if (input[1] < 347.76187) { - var36 = -0.002371085; - } else { - var36 = -0.04396752; - } - } else { - if (input[6] < 0.04355297) { - var36 = -0.0009182018; - } else { - var36 = 0.04304631; - } - } - } - } - } else { - if (input[2] < 0.23170115) { - if (input[0] < 519.94336) { - if (input[0] < 498.7337) { - if (input[7] < 0.006589555) { - var36 = 0.26040047; - } else { - var36 = 0.007134224; - } - } else { - var36 = -0.071822; - } - } else { - var36 = 0.28441724; - } - } else { - if (input[5] < 23.327835) { - var36 = -0.14565872; - } else { - var36 = 0.14750136; - } - } - } - } else { - if (input[1] < 145.6225) { - if (input[3] < 12.0) { - if (input[2] < 0.080565214) { - if (input[6] < 0.024297172) { - if (input[4] < 17.996569) { - var36 = 0.21520726; - } else { - var36 = -0.15914175; - } - } else { - if (input[7] < 0.0034446886) { - var36 = 0.007364478; - } else { - var36 = 0.30246466; - } - } - } else { - if (input[1] < 118.15326) { - if (input[7] < 0.005489262) { - var36 = -0.013343155; - } else { - var36 = -0.42760584; - } - } else { - if (input[1] < 140.66498) { - var36 = 0.20111655; - } else { - var36 = 0.022541557; - } - } - } - } else { - if (input[2] < 0.16471554) { - if (input[2] < 0.057736874) { - var36 = 0.012094285; - } else { - var36 = 0.2960295; - } - } else { - if (input[6] < 0.067336254) { - if (input[0] < 444.15787) { - var36 = 0.2169095; - } else { - var36 = -0.4310039; - } - } else { - if (input[7] < 0.0017720697) { - var36 = -0.049704093; - } else { - var36 = 0.22999592; - } - } - } - } - } else { - if (input[0] < 664.0269) { - if (input[1] < 266.53317) { - if (input[1] < 229.68715) { - if (input[7] < 0.003473019) { - var36 = 0.055706773; - } else { - var36 = -0.02585309; - } - } else { - if (input[4] < 20.090502) { - var36 = 0.16942097; - } else { - var36 = -0.10940527; - } - } - } else { - if (input[1] < 347.76187) { - if (input[5] < 26.883776) { - var36 = 0.08557748; - } else { - var36 = -0.10454143; - } - } else { - if (input[5] < 18.296543) { - var36 = 0.1369156; - } else { - var36 = 0.0006573203; - } - } - } - } else { - if (input[3] < 18.0) { - if (input[2] < 0.21310979) { - if (input[4] < 47.95029) { - var36 = 0.058013447; - } else { - var36 = 0.25082073; - } - } else { - if (input[5] < 25.146212) { - var36 = -0.25403637; - } else { - var36 = 0.21554308; - } - } - } else { - if (input[2] < 0.27443242) { - if (input[5] < 19.57885) { - var36 = 0.038987037; - } else { - var36 = 0.26930693; - } - } else { - if (input[3] < 33.0) { - var36 = -0.16692585; - } else { - var36 = 0.09671939; - } - } - } - } - } - } - double var37; - if (input[1] < 177.04877) { - if (input[1] < 176.52954) { - if (input[0] < 549.8694) { - if (input[5] < 32.309944) { - if (input[1] < 173.5393) { - if (input[1] < 171.9599) { - var37 = -0.009867549; - } else { - var37 = 0.18527064; - } - } else { - if (input[0] < 479.1913) { - var37 = -0.18599336; - } else { - var37 = -0.025558153; - } - } - } else { - if (input[3] < 9.0) { - if (input[3] < 7.0) { - var37 = 0.08533986; - } else { - var37 = -0.102294415; - } - } else { - var37 = 0.3808167; - } - } - } else { - if (input[2] < 0.14482379) { - if (input[1] < 174.33795) { - if (input[1] < 173.9191) { - var37 = 0.011946161; - } else { - var37 = -0.06287618; - } - } else { - if (input[4] < 25.736258) { - var37 = -0.007308967; - } else { - var37 = 0.15248206; - } - } - } else { - if (input[6] < 0.081781514) { - if (input[1] < 168.27454) { - var37 = -0.13476591; - } else { - var37 = -0.05083217; - } - } else { - if (input[1] < 78.913574) { - var37 = -0.16332656; - } else { - var37 = 0.1577406; - } - } - } - } - } else { - if (input[7] < 0.0046657408) { - if (input[5] < 18.83366) { - if (input[4] < 33.871582) { - if (input[2] < 0.07207942) { - var37 = 0.027660847; - } else { - var37 = -0.39577556; - } - } else { - if (input[7] < 0.0033310084) { - var37 = -0.15670533; - } else { - var37 = 0.33767757; - } - } - } else { - if (input[2] < 0.09773064) { - if (input[4] < 32.274986) { - var37 = 0.027256008; - } else { - var37 = 0.33008102; - } - } else { - if (input[4] < 26.011915) { - var37 = 0.43593723; - } else { - var37 = -0.080078356; - } - } - } - } else { - if (input[0] < 669.4481) { - if (input[5] < 12.536739) { - var37 = 0.22841994; - } else { - if (input[6] < 0.024027178) { - var37 = -0.11998698; - } else { - var37 = -0.23730814; - } - } - } else { - if (input[3] < 7.0) { - if (input[5] < 19.882984) { - var37 = 0.009299023; - } else { - var37 = 0.28366542; - } - } else { - var37 = -0.1265051; - } - } - } - } - } else { - if (input[1] < 196.52942) { - if (input[6] < 0.04915336) { - if (input[0] < 536.0595) { - if (input[4] < 34.82185) { - if (input[5] < 23.66799) { - var37 = 0.13627693; - } else { - var37 = 0.023638817; - } - } else { - if (input[0] < 514.7731) { - var37 = 0.67861736; - } else { - var37 = 0.099534884; - } - } - } else { - if (input[4] < 28.652704) { - if (input[6] < 0.03770539) { - var37 = 0.015284961; - } else { - var37 = 0.2035133; - } - } else { - if (input[4] < 43.929493) { - var37 = -0.034913275; - } else { - var37 = 0.4232519; - } - } - } - } else { - if (input[7] < 0.004288183) { - if (input[2] < 0.16901255) { - if (input[3] < 8.0) { - var37 = 0.110724606; - } else { - var37 = 0.2866598; - } - } else { - if (input[7] < 0.0025715097) { - var37 = 0.116411954; - } else { - var37 = -0.06356207; - } - } - } else { - if (input[2] < 0.13074243) { - if (input[3] < 9.0) { - var37 = 0.26270732; - } else { - var37 = -0.22788042; - } - } else { - if (input[2] < 0.15468198) { - var37 = -0.22873564; - } else { - var37 = 0.01959287; - } - } - } - } - } else { - if (input[1] < 199.64316) { - if (input[3] < 7.0) { - if (input[1] < 196.73734) { - if (input[0] < 467.11356) { - var37 = -0.24036363; - } else { - var37 = 0.13016215; - } - } else { - if (input[0] < 655.90375) { - var37 = -0.016727742; - } else { - var37 = -0.19383077; - } - } - } else { - if (input[0] < 467.11356) { - if (input[0] < 462.35693) { - var37 = -0.008897179; - } else { - var37 = 0.52027565; - } - } else { - if (input[2] < 0.07553887) { - var37 = -0.013854793; - } else { - var37 = -0.10984645; - } - } - } - } else { - if (input[4] < 23.075237) { - if (input[7] < 0.0061051412) { - if (input[3] < 7.0) { - var37 = 0.05985766; - } else { - var37 = 0.21160525; - } - } else { - if (input[2] < 0.14396334) { - var37 = 0.023231836; - } else { - var37 = -0.43656072; - } - } - } else { - if (input[6] < 0.0404656) { - if (input[0] < 632.9928) { - var37 = -0.0561752; - } else { - var37 = 0.007027154; - } - } else { - if (input[4] < 31.804214) { - var37 = 0.04637547; - } else { - var37 = -0.00038855502; - } - } - } - } - } - } - double var38; - if (input[1] < 521.543) { - if (input[3] < 17.0) { - if (input[4] < 43.929493) { - if (input[6] < 0.067336254) { - if (input[4] < 27.690273) { - if (input[6] < 0.046756607) { - var38 = -0.00016188921; - } else { - var38 = 0.041282542; - } - } else { - if (input[0] < 462.35693) { - var38 = -0.07356497; - } else { - var38 = -0.0047734375; - } - } - } else { - if (input[4] < 35.71706) { - if (input[4] < 28.652704) { - var38 = -0.24177077; - } else { - var38 = 0.08425828; - } - } else { - if (input[1] < 118.29285) { - var38 = -0.13156337; - } else { - var38 = 0.01802318; - } - } - } - } else { - if (input[7] < 0.002904936) { - if (input[3] < 12.0) { - if (input[6] < 0.5004946) { - var38 = -0.06365434; - } else { - var38 = 0.0095027285; - } - } else { - if (input[4] < 58.806583) { - var38 = 0.06335787; - } else { - var38 = -0.057722796; - } - } - } else { - if (input[1] < 381.45337) { - if (input[4] < 47.95029) { - var38 = 0.00418149; - } else { - var38 = -0.16028088; - } - } else { - if (input[7] < 0.0030629286) { - var38 = -0.42222214; - } else { - var38 = -0.15703337; - } - } - } - } - } else { - if (input[2] < 0.22287011) { - if (input[1] < 342.5133) { - if (input[4] < 37.62948) { - if (input[6] < 0.04792555) { - var38 = 0.052972626; - } else { - var38 = 0.27096084; - } - } else { - if (input[5] < 21.322844) { - var38 = 0.123646066; - } else { - var38 = -0.2530284; - } - } - } else { - if (input[7] < 0.0048549008) { - if (input[5] < 26.954847) { - var38 = 0.28416213; - } else { - var38 = -0.15036012; - } - } else { - if (input[1] < 426.71954) { - var38 = 0.1710374; - } else { - var38 = -0.043565456; - } - } - } - } else { - if (input[1] < 401.15515) { - if (input[5] < 24.069965) { - if (input[3] < 19.0) { - var38 = -0.16465324; - } else { - var38 = 0.1965323; - } - } else { - if (input[1] < 173.5393) { - var38 = -0.033260643; - } else { - var38 = 0.34839725; - } - } - } else { - if (input[1] < 432.44418) { - if (input[5] < 21.47956) { - var38 = 0.014288559; - } else { - var38 = -0.2926169; - } - } else { - if (input[3] < 20.0) { - var38 = -0.07751854; - } else { - var38 = 0.16101795; - } - } - } - } - } - } else { - if (input[3] < 13.0) { - if (input[0] < 557.74005) { - if (input[6] < 0.067336254) { - if (input[4] < 29.561077) { - if (input[0] < 514.7731) { - var38 = 0.05978279; - } else { - var38 = 0.30322057; - } - } else { - if (input[6] < 0.047741752) { - var38 = -0.3494682; - } else { - var38 = -0.048658047; - } - } - } else { - if (input[5] < 25.660357) { - if (input[4] < 49.35926) { - var38 = 0.28214666; - } else { - var38 = 0.04442425; - } - } else { - if (input[5] < 27.572266) { - var38 = -0.13789673; - } else { - var38 = 0.09223871; - } - } - } - } else { - if (input[7] < 0.0032761313) { - if (input[5] < 20.834808) { - if (input[5] < 18.639524) { - var38 = 0.17570311; - } else { - var38 = -0.15121806; - } - } else { - if (input[1] < 659.8392) { - var38 = 0.36751932; - } else { - var38 = 0.025491087; - } - } - } else { - if (input[1] < 544.12463) { - if (input[4] < 38.911335) { - var38 = 0.07609605; - } else { - var38 = -0.19845884; - } - } else { - if (input[7] < 0.007828504) { - var38 = 0.19249834; - } else { - var38 = -0.10015432; - } - } - } - } - } else { - if (input[6] < 0.04715824) { - if (input[7] < 0.009777767) { - if (input[0] < 667.30505) { - if (input[2] < 0.1336906) { - var38 = -0.0898554; - } else { - var38 = -0.36915207; - } - } else { - if (input[2] < 0.10770404) { - var38 = 0.011033464; - } else { - var38 = 0.22928022; - } - } - } else { - if (input[0] < 536.0595) { - if (input[4] < 23.702576) { - var38 = 0.23008482; - } else { - var38 = -0.2894834; - } - } else { - if (input[4] < 22.429638) { - var38 = -0.024416486; - } else { - var38 = 0.22504376; - } - } - } - } else { - if (input[4] < 54.08032) { - if (input[6] < 0.07519955) { - if (input[0] < 529.26776) { - var38 = -0.04746972; - } else { - var38 = 0.045168284; - } - } else { - if (input[1] < 522.426) { - var38 = -0.22207241; - } else { - var38 = 0.13087404; - } - } - } else { - if (input[2] < 0.18970776) { - if (input[6] < 0.063917145) { - var38 = -0.14643914; - } else { - var38 = 0.23818983; - } - } else { - if (input[3] < 38.0) { - var38 = -0.085133046; - } else { - var38 = 0.061945993; - } - } - } - } - } - } - double var39; - if (input[3] < 23.0) { - if (input[2] < 0.27443242) { - if (input[7] < 0.004288183) { - if (input[0] < 437.31543) { - if (input[3] < 11.0) { - if (input[6] < 0.07519955) { - var39 = -0.06127861; - } else { - var39 = 0.01370607; - } - } else { - if (input[4] < 639.08484) { - var39 = 0.20775472; - } else { - var39 = -0.10641192; - } - } - } else { - if (input[6] < 0.04873136) { - if (input[2] < 0.10250798) { - var39 = 0.010954948; - } else { - var39 = -0.023274671; - } - } else { - if (input[4] < 32.62736) { - var39 = 0.060042307; - } else { - var39 = 0.0060656862; - } - } - } - } else { - if (input[4] < 25.920425) { - if (input[3] < 6.0) { - if (input[1] < 52.519287) { - var39 = 0.011963791; - } else { - var39 = -0.018874826; - } - } else { - if (input[6] < 0.021839056) { - var39 = -0.011424738; - } else { - var39 = 0.01978988; - } - } - } else { - if (input[0] < 612.42395) { - if (input[6] < 0.044478152) { - var39 = -0.07283731; - } else { - var39 = -0.026461106; - } - } else { - if (input[4] < 40.86154) { - var39 = 0.02746165; - } else { - var39 = -0.1006213; - } - } - } - } - } else { - if (input[4] < 47.95029) { - if (input[1] < 869.74097) { - if (input[0] < 516.5424) { - if (input[3] < 11.0) { - var39 = 0.040850647; - } else { - var39 = 0.26975277; - } - } else { - var39 = -0.3190375; - } - } else { - var39 = -0.391262; - } - } else { - if (input[4] < 1054.0984) { - if (input[4] < 58.806583) { - if (input[1] < 545.9964) { - var39 = -0.08297894; - } else { - var39 = 0.1268919; - } - } else { - if (input[0] < 429.60077) { - var39 = 0.14684533; - } else { - var39 = -0.21796702; - } - } - } else { - if (input[0] < 554.3122) { - if (input[1] < 171.34103) { - var39 = -0.06754973; - } else { - var39 = -0.28007892; - } - } else { - if (input[7] < 0.000020908421) { - var39 = -0.21581195; - } else { - var39 = 0.23553161; - } - } - } - } - } - } else { - if (input[1] < 637.6124) { - if (input[1] < 432.44418) { - if (input[2] < 0.22853947) { - var39 = 0.25608668; - } else { - if (input[0] < 499.65594) { - var39 = 0.1890259; - } else { - if (input[7] < 0.004189696) { - var39 = -0.02919293; - } else { - var39 = -0.3691847; - } - } - } - } else { - if (input[5] < 19.57885) { - if (input[2] < 0.2476418) { - var39 = 0.17326364; - } else { - var39 = -0.14043294; - } - } else { - if (input[7] < 0.003554517) { - if (input[7] < 0.002235593) { - var39 = 0.15269503; - } else { - var39 = 0.4932419; - } - } else { - if (input[4] < 47.95029) { - var39 = 0.26341873; - } else { - var39 = 0.00006557112; - } - } - } - } - } else { - if (input[0] < 660.6031) { - if (input[4] < 54.08032) { - if (input[0] < 541.9823) { - if (input[6] < 0.07962002) { - var39 = -0.04426291; - } else { - var39 = 0.22938289; - } - } else { - if (input[7] < 0.005262675) { - var39 = -0.08504908; - } else { - var39 = 0.13986465; - } - } - } else { - if (input[0] < 563.0628) { - if (input[7] < 0.0074697095) { - var39 = 0.095551945; - } else { - var39 = -0.40877157; - } - } else { - if (input[3] < 51.0) { - var39 = -0.18558711; - } else { - var39 = 0.20048603; - } - } - } - } else { - if (input[6] < 0.087597266) { - if (input[2] < 0.16901255) { - var39 = 0.0029171896; - } else { - var39 = 0.338414; - } - } else { - if (input[7] < 0.0024513172) { - var39 = 0.0870784; - } else { - var39 = -0.1765469; - } - } - } - } - } - double var40; - if (input[1] < 81.83862) { - if (input[1] < 78.480835) { - if (input[1] < 59.12854) { - if (input[1] < 55.822754) { - if (input[7] < 0.024472637) { - if (input[7] < 0.0046316604) { - var40 = -0.013512792; - } else { - var40 = 0.02906257; - } - } else { - if (input[4] < 7.31554) { - var40 = 0.011248482; - } else { - var40 = -0.078807086; - } - } - } else { - if (input[3] < 7.0) { - if (input[2] < 0.07385218) { - var40 = -0.048649725; - } else { - var40 = -0.15003929; - } - } else { - if (input[0] < 670.5355) { - var40 = 0.021610329; - } else { - var40 = 0.27884737; - } - } - } - } else { - if (input[0] < 661.7976) { - if (input[4] < 34.26512) { - if (input[6] < 0.054671705) { - var40 = 0.05233152; - } else { - var40 = 0.3415971; - } - } else { - if (input[2] < 0.06370363) { - var40 = 0.3023556; - } else { - var40 = -0.11902176; - } - } - } else { - if (input[7] < 0.0024834909) { - if (input[2] < 0.10250798) { - var40 = 0.30971593; - } else { - var40 = -0.03767104; - } - } else { - if (input[5] < 15.362015) { - var40 = 0.17111206; - } else { - var40 = -0.1041168; - } - } - } - } - } else { - if (input[0] < 648.74475) { - if (input[1] < 79.2583) { - if (input[6] < 0.011077133) { - if (input[4] < 14.26258) { - var40 = -0.046239734; - } else { - var40 = 0.22075158; - } - } else { - if (input[1] < 78.95645) { - var40 = -0.08550174; - } else { - var40 = -0.1750865; - } - } - } else { - if (input[0] < 454.6105) { - if (input[7] < 0.010345605) { - var40 = 0.5492329; - } else { - var40 = -0.13749455; - } - } else { - if (input[1] < 81.0188) { - var40 = 0.041160986; - } else { - var40 = -0.079279594; - } - } - } - } else { - if (input[3] < 6.0) { - if (input[1] < 78.68506) { - if (input[5] < 20.26371) { - var40 = -0.24745367; - } else { - var40 = 0.07608222; - } - } else { - if (input[2] < 0.09893972) { - var40 = 0.22352034; - } else { - var40 = -0.094661266; - } - } - } else { - if (input[1] < 81.26416) { - if (input[7] < 0.0030629286) { - var40 = 0.1681827; - } else { - var40 = -0.04218454; - } - } else { - if (input[5] < 19.73429) { - var40 = -0.012833663; - } else { - var40 = -0.25957578; - } - } - } - } - } - } else { - if (input[1] < 114.94299) { - if (input[0] < 439.05417) { - if (input[1] < 96.294495) { - var40 = 0.6098724; - } else { - if (input[3] < 7.0) { - if (input[5] < 25.292236) { - var40 = 0.08021159; - } else { - var40 = 0.29246956; - } - } else { - var40 = -0.064524144; - } - } - } else { - if (input[1] < 96.294495) { - if (input[2] < 0.023036957) { - var40 = 0.46981692; - } else { - if (input[0] < 652.3909) { - var40 = -0.074920416; - } else { - var40 = 0.16490093; - } - } - } else { - if (input[3] < 6.0) { - if (input[5] < 21.6294) { - var40 = 0.16829713; - } else { - var40 = 0.04096561; - } - } else { - if (input[0] < 453.18805) { - var40 = -0.05645215; - } else { - var40 = 0.29947424; - } - } - } - } - } else { - if (input[0] < 554.3122) { - if (input[7] < 0.034326788) { - if (input[6] < 0.010530164) { - if (input[5] < 18.437906) { - var40 = -0.20369224; - } else { - var40 = -0.067107394; - } - } else { - if (input[6] < 0.07962002) { - var40 = -0.007609842; - } else { - var40 = 0.0287715; - } - } - } else { - if (input[1] < 117.95654) { - if (input[1] < 117.87097) { - var40 = 0.03562645; - } else { - var40 = -0.34484795; - } - } else { - if (input[0] < 550.7292) { - var40 = 0.09309268; - } else { - var40 = -0.17721556; - } - } - } - } else { - if (input[1] < 117.759186) { - if (input[3] < 6.0) { - if (input[7] < 0.0036993276) { - var40 = -0.05656076; - } else { - var40 = 0.04787405; - } - } else { - if (input[7] < 0.005309737) { - var40 = 0.27980572; - } else { - var40 = 0.07861999; - } - } - } else { - if (input[2] < 0.017481804) { - if (input[1] < 143.43848) { - var40 = -0.052804857; - } else { - var40 = 0.12601344; - } - } else { - if (input[6] < 0.02455999) { - var40 = -0.016402237; - } else { - var40 = 0.010172079; - } - } - } - } - } - } - double var41; - if (input[5] < 15.1662445) { - if (input[0] < 654.6809) { - if (input[2] < 0.10423684) { - if (input[2] < 0.0899786) { - if (input[0] < 415.7414) { - if (input[1] < 115.47824) { - var41 = 0.30295295; - } else { - var41 = 0.109451614; - } - } else { - if (input[3] < 7.0) { - var41 = -0.008146586; - } else { - var41 = 0.08227343; - } - } - } else { - if (input[6] < 0.04246912) { - if (input[7] < 0.005221153) { - var41 = -0.19709177; - } else { - var41 = -0.014019781; - } - } else { - if (input[4] < 28.556541) { - var41 = 0.20770831; - } else { - var41 = -0.13571869; - } - } - } - } else { - if (input[0] < 646.2121) { - if (input[6] < 0.043191366) { - if (input[1] < 154.10083) { - var41 = -0.008934455; - } else { - var41 = 0.31184453; - } - } else { - if (input[7] < 0.0020210762) { - var41 = -0.055718653; - } else { - var41 = 0.07034549; - } - } - } else { - if (input[2] < 0.11378789) { - var41 = 0.11718702; - } else { - if (input[6] < 0.046959374) { - var41 = -0.49113452; - } else { - var41 = -0.14217637; - } - } - } - } - } else { - if (input[7] < 0.0023913998) { - if (input[4] < 38.23957) { - if (input[0] < 678.9018) { - if (input[7] < 0.0022020095) { - var41 = -0.23318554; - } else { - var41 = 0.11549503; - } - } else { - var41 = -0.4602189; - } - } else { - if (input[0] < 664.0269) { - if (input[0] < 659.5366) { - var41 = 0.035255063; - } else { - var41 = 0.30815154; - } - } else { - var41 = -0.12148865; - } - } - } else { - if (input[2] < 0.04302311) { - if (input[1] < 78.21661) { - if (input[0] < 657.11444) { - var41 = -0.1403638; - } else { - var41 = 0.23817527; - } - } else { - if (input[4] < 24.247833) { - var41 = -0.18148737; - } else { - var41 = 0.22261068; - } - } - } else { - if (input[7] < 0.0048943935) { - if (input[7] < 0.0046657408) { - var41 = 0.1430508; - } else { - var41 = -0.3358908; - } - } else { - if (input[1] < 56.05768) { - var41 = 0.02738538; - } else { - var41 = 0.24926248; - } - } - } - } - } - } else { - if (input[0] < 394.5867) { - if (input[3] < 6.0) { - if (input[4] < 21.510715) { - if (input[6] < 0.032588493) { - if (input[6] < 0.028638396) { - var41 = 0.14203312; - } else { - var41 = -0.22908409; - } - } else { - var41 = 0.25147015; - } - } else { - if (input[1] < 117.95654) { - if (input[5] < 22.426456) { - var41 = 0.04528475; - } else { - var41 = -0.39752737; - } - } else { - var41 = 0.116726935; - } - } - } else { - var41 = 0.28441635; - } - } else { - if (input[4] < 40.228992) { - if (input[3] < 14.0) { - if (input[6] < 0.064966485) { - if (input[2] < 0.19611394) { - var41 = -0.0018011722; - } else { - var41 = -0.15098882; - } - } else { - if (input[2] < 0.15373018) { - var41 = 0.26737517; - } else { - var41 = 0.026116459; - } - } - } else { - if (input[7] < 0.005393012) { - if (input[4] < 35.880825) { - var41 = 0.17086598; - } else { - var41 = 0.04830709; - } - } else { - if (input[6] < 0.06867167) { - var41 = 0.03186133; - } else { - var41 = -0.19031528; - } - } - } - } else { - if (input[6] < 0.063917145) { - if (input[0] < 592.9258) { - if (input[4] < 42.829258) { - var41 = -0.11219274; - } else { - var41 = -0.24529377; - } - } else { - if (input[0] < 605.7406) { - var41 = 0.120496504; - } else { - var41 = -0.00935959; - } - } - } else { - if (input[1] < 255.84222) { - if (input[2] < 0.1785326) { - var41 = 0.01039458; - } else { - var41 = -0.054486025; - } - } else { - if (input[2] < 0.20664251) { - var41 = 0.05151931; - } else { - var41 = -0.0056600505; - } - } - } - } - } - } - double var42; - if (input[5] < 10.757549) { - if (input[4] < 23.34669) { - if (input[4] < 19.483055) { - if (input[2] < 0.040234327) { - if (input[6] < 0.0067773927) { - if (input[4] < 6.3997884) { - var42 = 0.0015696167; - } else { - var42 = -0.14371628; - } - } else { - if (input[7] < 0.0076142265) { - var42 = -0.03875558; - } else { - var42 = 0.24979079; - } - } - } else { - if (input[0] < 641.33264) { - if (input[2] < 0.055639505) { - var42 = -0.26909643; - } else { - var42 = -0.02028142; - } - } else { - var42 = 0.18992572; - } - } - } else { - if (input[0] < 636.6657) { - if (input[2] < 0.0899786) { - if (input[4] < 22.806326) { - var42 = 0.43106112; - } else { - var42 = 0.11623975; - } - } else { - var42 = -0.015358824; - } - } else { - if (input[6] < 0.02455999) { - var42 = -0.35068536; - } else { - var42 = 0.27602717; - } - } - } - } else { - if (input[4] < 25.557682) { - if (input[3] < 6.0) { - if (input[0] < 498.7337) { - var42 = -0.08088531; - } else { - var42 = -0.35041755; - } - } else { - if (input[4] < 24.066366) { - var42 = 0.11826908; - } else { - var42 = -0.1708556; - } - } - } else { - if (input[7] < 0.0031941843) { - if (input[1] < 173.7774) { - if (input[0] < 581.3013) { - var42 = -0.21063171; - } else { - var42 = 0.10629557; - } - } else { - if (input[4] < 42.829258) { - var42 = 0.2895264; - } else { - var42 = -0.008349; - } - } - } else { - if (input[0] < 552.43494) { - if (input[2] < 0.11706096) { - var42 = 0.5657209; - } else { - var42 = 0.14440219; - } - } else { - if (input[0] < 613.5429) { - var42 = -0.0642651; - } else { - var42 = 0.27787054; - } - } - } - } - } - } else { - if (input[1] < 121.57103) { - if (input[1] < 120.35962) { - if (input[1] < 118.724884) { - if (input[2] < 0.1030972) { - if (input[6] < 0.04246912) { - var42 = -0.0047715083; - } else { - var42 = 0.06048333; - } - } else { - if (input[7] < 0.0044564977) { - var42 = -0.019074727; - } else { - var42 = -0.08052936; - } - } - } else { - if (input[3] < 6.0) { - if (input[6] < 0.05065899) { - var42 = -0.019316012; - } else { - var42 = -0.26709113; - } - } else { - if (input[5] < 29.639475) { - var42 = 0.21771619; - } else { - var42 = -0.11826705; - } - } - } - } else { - if (input[3] < 6.0) { - if (input[5] < 27.204857) { - if (input[0] < 468.29953) { - var42 = -0.04624968; - } else { - var42 = -0.13229862; - } - } else { - if (input[6] < 0.029934272) { - var42 = 0.17065148; - } else { - var42 = -0.007010041; - } - } - } else { - if (input[5] < 19.417402) { - if (input[5] < 18.220026) { - var42 = 0.0054687443; - } else { - var42 = -0.33373713; - } - } else { - if (input[4] < 36.538284) { - var42 = 0.099197544; - } else { - var42 = 0.453432; - } - } - } - } - } else { - if (input[1] < 150.89111) { - if (input[4] < 22.235271) { - if (input[6] < 0.009953386) { - if (input[5] < 25.60802) { - var42 = -0.12551494; - } else { - var42 = 0.10966889; - } - } else { - if (input[4] < 14.046501) { - var42 = 0.12264627; - } else { - var42 = 0.041846763; - } - } - } else { - if (input[6] < 0.04792555) { - if (input[0] < 553.4461) { - var42 = -0.08080865; - } else { - var42 = 0.040847577; - } - } else { - if (input[4] < 31.694513) { - var42 = 0.06742243; - } else { - var42 = -0.0058506853; - } - } - } - } else { - if (input[1] < 168.27454) { - if (input[2] < 0.015113175) { - if (input[0] < 535.2388) { - var42 = 0.03578988; - } else { - var42 = 0.28117338; - } - } else { - if (input[0] < 624.53723) { - var42 = -0.085467815; - } else { - var42 = -0.0033022931; - } - } - } else { - if (input[1] < 170.5625) { - if (input[5] < 27.470732) { - var42 = 0.18395951; - } else { - var42 = -0.039760366; - } - } else { - if (input[1] < 177.04877) { - var42 = -0.015339797; - } else { - var42 = 0.004729019; - } - } - } - } - } - } - double var43; - if (input[4] < 45.96011) { - if (input[6] < 0.087597266) { - if (input[0] < 522.50836) { - if (input[4] < 31.022459) { - if (input[6] < 0.056870647) { - if (input[4] < 25.11206) { - var43 = 0.0013054729; - } else { - var43 = -0.03014182; - } - } else { - if (input[1] < 1013.4276) { - var43 = 0.059060607; - } else { - var43 = -0.3974292; - } - } - } else { - if (input[6] < 0.062583044) { - if (input[2] < 0.087249905) { - var43 = 0.07790541; - } else { - var43 = -0.08576602; - } - } else { - if (input[0] < 480.22372) { - var43 = -0.02296618; - } else { - var43 = 0.035338905; - } - } - } - } else { - if (input[3] < 20.0) { - if (input[7] < 0.0058516446) { - if (input[6] < 0.044478152) { - var43 = 0.0020370835; - } else { - var43 = 0.02089806; - } - } else { - if (input[6] < 0.049576316) { - var43 = -0.0006148037; - } else { - var43 = -0.12876251; - } - } - } else { - if (input[3] < 59.0) { - if (input[4] < 36.538284) { - var43 = 0.2046613; - } else { - var43 = 0.061044294; - } - } else { - if (input[4] < 32.98443) { - var43 = -0.5290736; - } else { - var43 = 0.050423633; - } - } - } - } - } else { - if (input[3] < 6.0) { - if (input[0] < 418.34677) { - if (input[7] < 0.0019773336) { - var43 = -0.3093366; - } else { - var43 = 0.22055525; - } - } else { - if (input[4] < 43.352867) { - if (input[0] < 439.05417) { - var43 = 0.29527158; - } else { - var43 = -0.0024487865; - } - } else { - var43 = 0.5039336; - } - } - } else { - if (input[3] < 10.0) { - if (input[5] < 28.764593) { - if (input[7] < 0.0029851033) { - var43 = 0.027069632; - } else { - var43 = -0.20273997; - } - } else { - if (input[0] < 415.7414) { - var43 = 0.04963925; - } else { - var43 = 0.29611626; - } - } - } else { - if (input[4] < 44.533443) { - if (input[7] < 0.0020210762) { - var43 = 0.08970608; - } else { - var43 = 0.34502512; - } - } else { - if (input[2] < 0.26561487) { - var43 = -0.11920057; - } else { - var43 = 0.12675808; - } - } - } - } - } - } else { - if (input[6] < 0.062583044) { - if (input[0] < 629.365) { - if (input[1] < 322.41693) { - if (input[1] < 269.17102) { - if (input[2] < 0.17982149) { - var43 = -0.20890857; - } else { - var43 = 0.05779706; - } - } else { - if (input[1] < 292.086) { - var43 = 0.3435096; - } else { - var43 = -0.08727603; - } - } - } else { - if (input[3] < 18.0) { - var43 = -0.32801; - } else { - if (input[1] < 522.426) { - var43 = 0.18652505; - } else { - var43 = -0.22872277; - } - } - } - } else { - if (input[5] < 25.552517) { - if (input[5] < 22.79438) { - if (input[5] < 22.68546) { - var43 = 0.025602119; - } else { - var43 = 0.4064133; - } - } else { - if (input[0] < 667.30505) { - var43 = -0.27931163; - } else { - var43 = 0.16212967; - } - } - } else { - if (input[6] < 0.059464313) { - if (input[2] < 0.11012769) { - var43 = 0.27259395; - } else { - var43 = -0.10991289; - } - } else { - var43 = 0.4225508; - } - } - } - } else { - if (input[2] < 0.20299208) { - if (input[3] < 10.0) { - if (input[7] < 0.0021320276) { - if (input[5] < 23.026451) { - var43 = 0.035419717; - } else { - var43 = -0.045513976; - } - } else { - if (input[1] < 460.6717) { - var43 = -0.23462395; - } else { - var43 = 0.19424698; - } - } - } else { - if (input[5] < 25.396322) { - if (input[7] < 0.0038169443) { - var43 = 0.108971775; - } else { - var43 = -0.19276032; - } - } else { - if (input[5] < 28.613876) { - var43 = -0.10237283; - } else { - var43 = 0.30900934; - } - } - } - } else { - if (input[5] < 26.65595) { - if (input[1] < 460.6717) { - if (input[1] < 370.7329) { - var43 = -0.046554968; - } else { - var43 = -0.14460845; - } - } else { - if (input[7] < 0.00513642) { - var43 = 0.0074710813; - } else { - var43 = -0.17847602; - } - } - } else { - if (input[0] < 546.2918) { - if (input[6] < 0.08433238) { - var43 = -0.22131045; - } else { - var43 = 0.0076287384; - } - } else { - if (input[5] < 27.470732) { - var43 = 0.018121788; - } else { - var43 = 0.25317994; - } - } - } - } - } - } - double var44; - if (input[4] < 36.36606) { - if (input[1] < 367.2591) { - if (input[1] < 350.59753) { - if (input[7] < 0.004288183) { - if (input[3] < 8.0) { - if (input[0] < 433.54276) { - var44 = -0.046015702; - } else { - var44 = 0.00506449; - } - } else { - if (input[4] < 25.736258) { - var44 = 0.21835744; - } else { - var44 = 0.033351477; - } - } - } else { - if (input[4] < 31.694513) { - if (input[5] < 22.758417) { - var44 = 0.0059070443; - } else { - var44 = -0.00974352; - } - } else { - if (input[1] < 55.88684) { - var44 = 0.23856999; - } else { - var44 = -0.058157545; - } - } - } - } else { - if (input[5] < 27.11507) { - if (input[2] < 0.14738971) { - if (input[2] < 0.0899786) { - var44 = -0.09172246; - } else { - var44 = -0.27091864; - } - } else { - if (input[6] < 0.056870647) { - var44 = 0.1613751; - } else { - var44 = -0.17881843; - } - } - } else { - if (input[7] < 0.0045603756) { - if (input[0] < 543.7184) { - var44 = -0.2532299; - } else { - var44 = 0.09171197; - } - } else { - if (input[7] < 0.0050104572) { - var44 = 0.43784168; - } else { - var44 = 0.021053148; - } - } - } - } - } else { - if (input[5] < 19.682528) { - if (input[4] < 31.135723) { - if (input[2] < 0.09952295) { - if (input[2] < 0.09670508) { - var44 = 0.14171746; - } else { - var44 = -0.40128013; - } - } else { - if (input[7] < 0.0070044855) { - var44 = 0.3134988; - } else { - var44 = 0.10510239; - } - } - } else { - if (input[6] < 0.033574995) { - var44 = -0.3199009; - } else { - if (input[4] < 32.860813) { - var44 = -0.09686906; - } else { - var44 = 0.17390464; - } - } - } - } else { - if (input[6] < 0.056870647) { - if (input[0] < 451.8147) { - if (input[2] < 0.13830733) { - var44 = -0.03787013; - } else { - var44 = -0.40034002; - } - } else { - if (input[4] < 32.032806) { - var44 = 0.04391229; - } else { - var44 = -0.025946096; - } - } - } else { - if (input[4] < 35.880825) { - if (input[0] < 433.54276) { - var44 = -0.07578586; - } else { - var44 = 0.14260627; - } - } else { - if (input[5] < 28.908257) { - var44 = 0.0031518685; - } else { - var44 = -0.34662592; - } - } - } - } - } - } else { - if (input[7] < 0.003554517) { - if (input[1] < 118.15326) { - if (input[6] < 0.050889377) { - if (input[6] < 0.04189776) { - if (input[3] < 6.0) { - var44 = 0.2150194; - } else { - var44 = -0.21049151; - } - } else { - if (input[0] < 641.33264) { - var44 = 0.0056903725; - } else { - var44 = 0.56771666; - } - } - } else { - if (input[4] < 39.92287) { - if (input[0] < 512.96185) { - var44 = -0.04243058; - } else { - var44 = -0.22562848; - } - } else { - if (input[4] < 41.953285) { - var44 = 0.14315465; - } else { - var44 = -0.05689304; - } - } - } - } else { - if (input[6] < 0.050438497) { - if (input[6] < 0.038605858) { - if (input[7] < 0.0024834909) { - var44 = 0.08945107; - } else { - var44 = -0.04898399; - } - } else { - if (input[1] < 194.03192) { - var44 = 0.022427222; - } else { - var44 = -0.11773282; - } - } - } else { - if (input[3] < 8.0) { - if (input[6] < 0.05601607) { - var44 = 0.08814264; - } else { - var44 = -0.027365424; - } - } else { - if (input[4] < 40.228992) { - var44 = 0.049427956; - } else { - var44 = 0.0041981977; - } - } - } - } - } else { - if (input[6] < 0.0224242) { - if (input[2] < 0.021280646) { - var44 = -0.110838205; - } else { - if (input[4] < 38.022415) { - var44 = 0.5805021; - } else { - if (input[6] < 0.015955688) { - var44 = 0.3352341; - } else { - var44 = -0.0895201; - } - } - } - } else { - if (input[3] < 31.0) { - if (input[6] < 0.03604567) { - if (input[3] < 8.0) { - var44 = 0.05402466; - } else { - var44 = -0.28677037; - } - } else { - if (input[2] < 0.13599229) { - var44 = 0.08188679; - } else { - var44 = -0.058437612; - } - } - } else { - if (input[7] < 0.011495326) { - if (input[7] < 0.0040295073) { - var44 = -0.07332357; - } else { - var44 = 0.14958814; - } - } else { - if (input[5] < 22.536089) { - var44 = -0.27682745; - } else { - var44 = 0.02757972; - } - } - } - } - } - } - double var45; - if (input[5] < 29.853495) { - if (input[4] < 29.256954) { - if (input[6] < 0.035483748) { - if (input[2] < 0.07385218) { - if (input[1] < 255.84222) { - if (input[1] < 231.0669) { - var45 = -0.000687875; - } else { - var45 = -0.07792894; - } - } else { - if (input[7] < 0.0054437453) { - var45 = 0.117703445; - } else { - var45 = 0.022586914; - } - } - } else { - if (input[4] < 17.400011) { - if (input[2] < 0.07944977) { - var45 = -0.043809228; - } else { - var45 = 0.18922274; - } - } else { - if (input[6] < 0.030572092) { - var45 = -0.081612915; - } else { - var45 = -0.01833214; - } - } - } - } else { - if (input[4] < 20.551977) { - if (input[3] < 6.0) { - if (input[7] < 0.0061051412) { - var45 = -0.050442375; - } else { - var45 = 0.07551008; - } - } else { - if (input[6] < 0.04355297) { - var45 = 0.08574843; - } else { - var45 = 0.24674435; - } - } - } else { - if (input[7] < 0.009994577) { - if (input[0] < 505.92896) { - var45 = 0.00266932; - } else { - var45 = 0.027316289; - } - } else { - if (input[1] < 177.04877) { - var45 = -0.099789694; - } else { - var45 = 0.036782146; - } - } - } - } - } else { - if (input[6] < 0.04915336) { - if (input[2] < 0.080014125) { - if (input[0] < 569.34753) { - if (input[1] < 81.53082) { - var45 = 0.2982076; - } else { - var45 = 0.04841676; - } - } else { - if (input[7] < 0.0050930274) { - var45 = -0.02069888; - } else { - var45 = 0.13028155; - } - } - } else { - if (input[0] < 570.25055) { - if (input[7] < 0.0048943935) { - var45 = -0.0734621; - } else { - var45 = -0.23030151; - } - } else { - if (input[6] < 0.041724283) { - var45 = -0.048970934; - } else { - var45 = 0.0127451895; - } - } - } - } else { - if (input[7] < 0.0066440776) { - if (input[4] < 36.870323) { - if (input[1] < 176.52954) { - var45 = -0.0052339393; - } else { - var45 = 0.04597466; - } - } else { - if (input[7] < 0.0035266217) { - var45 = -0.002522908; - } else { - var45 = -0.03589781; - } - } - } else { - if (input[2] < 0.20118733) { - if (input[1] < 137.9049) { - var45 = 0.030745521; - } else { - var45 = -0.1413496; - } - } else { - if (input[0] < 588.9621) { - var45 = 0.0042693107; - } else { - var45 = 0.2247349; - } - } - } - } - } - } else { - if (input[0] < 423.21143) { - if (input[1] < 140.49933) { - if (input[6] < 0.05220808) { - if (input[7] < 0.009081948) { - if (input[3] < 6.0) { - var45 = 0.31794795; - } else { - var45 = -0.011240875; - } - } else { - if (input[0] < 403.76456) { - var45 = 0.17236745; - } else { - var45 = -0.15627395; - } - } - } else { - if (input[7] < 0.0025999527) { - if (input[4] < 32.62736) { - var45 = 0.29440457; - } else { - var45 = -0.1187581; - } - } else { - if (input[7] < 0.0056639556) { - var45 = -0.32542473; - } else { - var45 = 0.17992683; - } - } - } - } else { - if (input[2] < 0.14155722) { - if (input[5] < 32.309944) { - if (input[6] < 0.020986198) { - var45 = 0.15325245; - } else { - var45 = -0.46151492; - } - } else { - if (input[3] < 6.0) { - var45 = -0.19045861; - } else { - var45 = 0.19581567; - } - } - } else { - if (input[7] < 0.0019291723) { - if (input[6] < 0.09237537) { - var45 = -0.39742213; - } else { - var45 = 0.11752563; - } - } else { - if (input[5] < 33.48466) { - var45 = 0.25824755; - } else { - var45 = -0.24295428; - } - } - } - } - } else { - if (input[0] < 425.37012) { - if (input[7] < 0.009886153) { - if (input[5] < 33.48466) { - if (input[7] < 0.0026282698) { - var45 = 0.09753454; - } else { - var45 = 0.35819897; - } - } else { - var45 = 0.006993035; - } - } else { - var45 = 0.0025710056; - } - } else { - if (input[6] < 0.016742049) { - if (input[7] < 0.0021675183) { - var45 = 0.31151712; - } else { - if (input[4] < 5.1584697) { - var45 = 0.13031185; - } else { - var45 = -0.05232006; - } - } - } else { - if (input[2] < 0.04891324) { - if (input[7] < 0.0025152762) { - var45 = -0.20077771; - } else { - var45 = 0.121657014; - } - } else { - if (input[1] < 115.47824) { - var45 = -0.081859455; - } else { - var45 = 0.037641607; - } - } - } - } - } - } - double var46; - if (input[3] < 11.0) { - if (input[1] < 421.82605) { - if (input[1] < 350.59753) { - if (input[6] < 0.0051328884) { - if (input[0] < 649.94415) { - if (input[7] < 0.28903082) { - var46 = -0.060813453; - } else { - var46 = 0.03217241; - } - } else { - if (input[1] < 53.395752) { - var46 = 0.2328275; - } else { - var46 = 0.02809499; - } - } - } else { - if (input[4] < 6.3997884) { - if (input[0] < 564.8027) { - var46 = 0.04289663; - } else { - var46 = 0.16040114; - } - } else { - if (input[2] < 0.015113175) { - var46 = 0.014335816; - } else { - var46 = -0.0025499868; - } - } - } - } else { - if (input[5] < 26.244675) { - if (input[0] < 536.8894) { - if (input[3] < 8.0) { - var46 = -0.03580963; - } else { - var46 = -0.1746057; - } - } else { - if (input[7] < 0.008130896) { - var46 = -0.05188697; - } else { - var46 = 0.08493718; - } - } - } else { - if (input[0] < 574.6581) { - if (input[6] < 0.014341843) { - var46 = 0.33391696; - } else { - var46 = -0.017529627; - } - } else { - if (input[7] < 0.0015539197) { - var46 = -0.1822645; - } else { - var46 = 0.11139032; - } - } - } - } - } else { - if (input[7] < 0.0074036974) { - if (input[4] < 30.271399) { - if (input[3] < 8.0) { - if (input[2] < 0.09670508) { - var46 = 0.32364315; - } else { - var46 = 0.14180185; - } - } else { - if (input[0] < 445.85364) { - var46 = -0.22949773; - } else { - var46 = 0.096460484; - } - } - } else { - if (input[6] < 0.05438315) { - if (input[0] < 572.0283) { - var46 = -0.20484126; - } else { - var46 = 0.024268596; - } - } else { - if (input[0] < 524.96844) { - var46 = 0.026369605; - } else { - var46 = 0.13741353; - } - } - } - } else { - if (input[7] < 0.008130896) { - if (input[4] < 26.19804) { - if (input[2] < 0.054148555) { - var46 = -0.4264527; - } else { - var46 = 0.049029876; - } - } else { - if (input[6] < 0.038425803) { - var46 = -0.089032635; - } else { - var46 = -0.5962795; - } - } - } else { - if (input[7] < 0.011644137) { - if (input[6] < 0.029290315) { - var46 = -0.22990058; - } else { - var46 = 0.08847949; - } - } else { - if (input[2] < 0.05343145) { - var46 = -0.07608734; - } else { - var46 = 0.21143106; - } - } - } - } - } - } else { - if (input[4] < 32.62736) { - if (input[7] < 0.0055379313) { - if (input[4] < 28.853786) { - if (input[6] < 0.021268906) { - var46 = -0.11041704; - } else { - if (input[6] < 0.05601607) { - var46 = 0.22338842; - } else { - var46 = -0.081552655; - } - } - } else { - if (input[6] < 0.052663703) { - if (input[2] < 0.11136079) { - var46 = 0.14358841; - } else { - var46 = 0.008355319; - } - } else { - if (input[4] < 32.506233) { - var46 = 0.24969761; - } else { - var46 = -0.07699739; - } - } - } - } else { - if (input[7] < 0.005805585) { - if (input[4] < 31.022459) { - if (input[5] < 25.05034) { - var46 = 0.025424967; - } else { - var46 = -0.38323638; - } - } else { - if (input[2] < 0.14999247) { - var46 = -0.6036142; - } else { - var46 = 0.024259752; - } - } - } else { - if (input[2] < 0.061130285) { - if (input[4] < 13.793873) { - var46 = 0.26694793; - } else { - var46 = -0.24335556; - } - } else { - if (input[4] < 22.134548) { - var46 = 0.16978419; - } else { - var46 = 0.011590895; - } - } - } - } - } else { - if (input[0] < 425.37012) { - if (input[2] < 0.19611394) { - var46 = -0.14052635; - } else { - if (input[5] < 28.908257) { - if (input[1] < 147.89758) { - var46 = 0.114478506; - } else { - var46 = 0.30811626; - } - } else { - var46 = 0.016176825; - } - } - } else { - if (input[6] < 0.057156924) { - if (input[0] < 562.22656) { - if (input[0] < 484.40204) { - var46 = 0.08191027; - } else { - var46 = -0.17956391; - } - } else { - if (input[0] < 652.3909) { - var46 = -0.019628514; - } else { - var46 = 0.06556731; - } - } - } else { - if (input[4] < 54.08032) { - if (input[7] < 0.0021675183) { - var46 = 0.14434947; - } else { - var46 = 0.012288196; - } - } else { - if (input[2] < 0.22563094) { - var46 = 0.027997145; - } else { - var46 = -0.059335846; - } - } - } - } - } - } - double var47; - if (input[3] < 15.0) { - if (input[1] < 637.6124) { - if (input[4] < 42.829258) { - if (input[6] < 0.0719236) { - if (input[0] < 512.96185) { - if (input[4] < 36.538284) { - var47 = -0.0051311287; - } else { - var47 = -0.0938252; - } - } else { - if (input[1] < 59.12854) { - var47 = -0.011067053; - } else { - var47 = 0.005069746; - } - } - } else { - if (input[2] < 0.1772592) { - if (input[4] < 39.656563) { - var47 = 0.15623604; - } else { - var47 = 0.51011235; - } - } else { - if (input[1] < 115.326904) { - var47 = -0.16746548; - } else { - var47 = 0.032160778; - } - } - } - } else { - if (input[7] < 0.0021675183) { - if (input[1] < 421.82605) { - if (input[1] < 322.41693) { - var47 = 0.0032180122; - } else { - var47 = -0.06259884; - } - } else { - if (input[0] < 619.6026) { - var47 = 0.02606475; - } else { - var47 = 0.24518089; - } - } - } else { - if (input[4] < 51.153934) { - if (input[2] < 0.25866318) { - var47 = -0.05239119; - } else { - var47 = 0.11004353; - } - } else { - if (input[6] < 0.08433238) { - var47 = -0.07150122; - } else { - var47 = -0.22210422; - } - } - } - } - } else { - if (input[0] < 546.2918) { - if (input[0] < 536.8894) { - if (input[1] < 814.16046) { - if (input[6] < 0.07962002) { - var47 = -0.027993597; - } else { - var47 = 0.15481117; - } - } else { - var47 = 0.28885674; - } - } else { - if (input[7] < 0.0047754645) { - var47 = -0.4255798; - } else { - var47 = -0.053978447; - } - } - } else { - if (input[4] < 24.157349) { - if (input[2] < 0.06800866) { - var47 = 0.019054119; - } else { - var47 = -0.29239348; - } - } else { - if (input[7] < 0.005805585) { - if (input[7] < 0.005309737) { - var47 = 0.16269812; - } else { - var47 = -0.20932324; - } - } else { - if (input[0] < 676.2616) { - var47 = 0.29462618; - } else { - var47 = 0.0686289; - } - } - } - } - } - } else { - if (input[5] < 18.06236) { - if (input[5] < 17.003792) { - if (input[2] < 0.15855789) { - var47 = 0.23625849; - } else { - if (input[7] < 0.0038169443) { - var47 = 0.11098571; - } else { - var47 = -0.29324898; - } - } - } else { - if (input[1] < 175.14758) { - var47 = -0.07727867; - } else { - if (input[6] < 0.03715515) { - var47 = 0.08008023; - } else { - var47 = 0.33931082; - } - } - } - } else { - if (input[7] < 0.005393012) { - if (input[2] < 0.16058685) { - if (input[1] < 289.77673) { - if (input[7] < 0.003999575) { - var47 = 0.11243084; - } else { - var47 = -0.32985696; - } - } else { - if (input[5] < 21.671062) { - var47 = 0.041940402; - } else { - var47 = 0.2053549; - } - } - } else { - if (input[6] < 0.055190377) { - if (input[1] < 432.44418) { - var47 = -0.3010615; - } else { - var47 = 0.027881544; - } - } else { - if (input[4] < 40.228992) { - var47 = 0.15116358; - } else { - var47 = 0.019678144; - } - } - } - } else { - if (input[4] < 27.141476) { - if (input[2] < 0.14396334) { - if (input[3] < 17.0) { - var47 = 0.22513442; - } else { - var47 = 0.06343913; - } - } else { - if (input[2] < 0.15855789) { - var47 = -0.3198805; - } else { - var47 = 0.18568206; - } - } - } else { - if (input[3] < 23.0) { - if (input[4] < 39.92287) { - var47 = -0.048652787; - } else { - var47 = -0.23313764; - } - } else { - if (input[0] < 523.36316) { - var47 = -0.05383395; - } else { - var47 = 0.076095745; - } - } - } - } - } - } - double var48; - if (input[6] < 0.046560727) { - if (input[2] < 0.13074243) { - if (input[4] < 19.969645) { - if (input[6] < 0.024027178) { - if (input[7] < 0.0057593356) { - if (input[2] < 0.047311783) { - var48 = 0.13112636; - } else { - var48 = -0.07080068; - } - } else { - if (input[0] < 642.4932) { - var48 = -0.013826316; - } else { - var48 = 0.033115182; - } - } - } else { - if (input[4] < 13.557352) { - if (input[6] < 0.02506348) { - var48 = 0.22406836; - } else { - var48 = 0.07089038; - } - } else { - if (input[1] < 96.294495) { - var48 = -0.018596869; - } else { - var48 = 0.031555094; - } - } - } - } else { - if (input[0] < 478.12262) { - if (input[7] < 0.0048139137) { - if (input[7] < 0.0019291723) { - var48 = 0.24834718; - } else { - var48 = -0.021051016; - } - } else { - if (input[6] < 0.04336643) { - var48 = -0.106104665; - } else { - var48 = 0.025274897; - } - } - } else { - if (input[5] < 29.08108) { - if (input[6] < 0.04618777) { - var48 = -0.0033383984; - } else { - var48 = -0.08397267; - } - } else { - if (input[4] < 32.98443) { - var48 = 0.022444295; - } else { - var48 = 0.15461463; - } - } - } - } - } else { - if (input[5] < 18.505344) { - if (input[7] < 0.0038169443) { - if (input[4] < 33.229774) { - var48 = -0.30895418; - } else { - if (input[7] < 0.002768994) { - var48 = -0.1942045; - } else { - var48 = 0.2298701; - } - } - } else { - if (input[0] < 640.0981) { - if (input[5] < 17.90769) { - var48 = 0.3116363; - } else { - var48 = 0.09785953; - } - } else { - if (input[7] < 0.0044915546) { - var48 = 0.22757807; - } else { - var48 = -0.28695032; - } - } - } - } else { - if (input[1] < 344.88092) { - if (input[5] < 20.215801) { - if (input[1] < 266.53317) { - var48 = -0.6864071; - } else { - var48 = 0.04999494; - } - } else { - if (input[2] < 0.1407783) { - var48 = -0.0652916; - } else { - var48 = -0.29050416; - } - } - } else { - if (input[0] < 484.40204) { - if (input[3] < 15.0) { - var48 = -0.44731408; - } else { - var48 = 0.040210664; - } - } else { - if (input[4] < 29.657753) { - var48 = 0.116574116; - } else { - var48 = -0.07121806; - } - } - } - } - } - } else { - if (input[4] < 23.884483) { - if (input[7] < 0.01071381) { - if (input[2] < 0.10368276) { - if (input[5] < 14.48199) { - var48 = -0.23496577; - } else { - if (input[5] < 25.88462) { - var48 = 0.23756997; - } else { - var48 = 0.052985225; - } - } - } else { - if (input[2] < 0.11836624) { - if (input[0] < 435.46625) { - var48 = -0.089395426; - } else { - var48 = 0.08143341; - } - } else { - if (input[6] < 0.055465702) { - var48 = 0.1751314; - } else { - var48 = -0.19014038; - } - } - } - } else { - if (input[7] < 0.027495267) { - if (input[1] < 117.95654) { - if (input[6] < 0.04812313) { - var48 = -0.42926264; - } else { - var48 = -0.1180297; - } - } else { - if (input[6] < 0.04792555) { - var48 = 0.14885478; - } else { - var48 = -0.14260593; - } - } - } else { - if (input[0] < 412.7322) { - var48 = -0.019665292; - } else { - if (input[2] < 0.10770404) { - var48 = 0.3979732; - } else { - var48 = 0.016947366; - } - } - } - } - } else { - if (input[4] < 34.26512) { - if (input[3] < 8.0) { - if (input[0] < 437.31543) { - if (input[6] < 0.053393975) { - var48 = -0.1914827; - } else { - var48 = -0.006669749; - } - } else { - if (input[6] < 0.06867167) { - var48 = 0.006345932; - } else { - var48 = 0.13422644; - } - } - } else { - if (input[7] < 0.0021675183) { - var48 = 0.59690595; - } else { - if (input[2] < 0.107161045) { - var48 = 0.4555342; - } else { - var48 = 0.038138863; - } - } - } - } else { - if (input[1] < 272.0462) { - if (input[7] < 0.0031422004) { - if (input[5] < 26.310371) { - var48 = -0.0129258325; - } else { - var48 = 0.024383167; - } - } else { - if (input[2] < 0.12225413) { - var48 = 0.15562186; - } else { - var48 = -0.05927219; - } - } - } else { - if (input[1] < 322.41693) { - if (input[3] < 8.0) { - var48 = -0.017630761; - } else { - var48 = 0.097553656; - } - } else { - if (input[6] < 0.066093825) { - var48 = -0.02788348; - } else { - var48 = 0.013836238; - } - } - } - } - } - } - double var49; - if (input[5] < 19.73429) { - if (input[7] < 0.0021675183) { - if (input[4] < 37.055496) { - if (input[1] < 231.0669) { - if (input[3] < 10.0) { - if (input[1] < 117.759186) { - var49 = -0.049165707; - } else { - var49 = -0.16217846; - } - } else { - var49 = 0.2816502; - } - } else { - if (input[0] < 566.57983) { - var49 = 0.41447043; - } else { - if (input[0] < 631.8479) { - var49 = -0.16748464; - } else { - var49 = 0.17741837; - } - } - } - } else { - if (input[3] < 6.0) { - if (input[2] < 0.17982149) { - if (input[6] < 0.05843868) { - var49 = 0.2694687; - } else { - var49 = -0.030708933; - } - } else { - if (input[0] < 495.93704) { - var49 = 0.4641275; - } else { - var49 = -0.05159033; - } - } - } else { - if (input[2] < 0.16058685) { - if (input[6] < 0.053393975) { - var49 = -0.13091308; - } else { - var49 = 0.08580167; - } - } else { - if (input[1] < 404.05896) { - var49 = -0.08210458; - } else { - var49 = 0.13020073; - } - } - } - } - } else { - if (input[3] < 6.0) { - if (input[4] < 24.85689) { - if (input[7] < 0.005262675) { - if (input[0] < 588.9621) { - var49 = -0.017867101; - } else { - var49 = -0.128617; - } - } else { - if (input[7] < 0.1289853) { - var49 = -0.009874205; - } else { - var49 = 0.09427113; - } - } - } else { - if (input[1] < 78.95645) { - if (input[6] < 0.040101185) { - var49 = 0.18334311; - } else { - var49 = 0.023966; - } - } else { - if (input[7] < 0.003554517) { - var49 = -0.04427077; - } else { - var49 = 0.05755228; - } - } - } - } else { - if (input[4] < 16.909874) { - if (input[1] < 56.73535) { - if (input[7] < 0.014372812) { - var49 = 0.09108925; - } else { - var49 = -0.08248349; - } - } else { - if (input[0] < 589.95685) { - var49 = 0.060542673; - } else { - var49 = 0.1933917; - } - } - } else { - if (input[6] < 0.027508454) { - if (input[5] < 13.509364) { - var49 = 0.15300402; - } else { - var49 = -0.037917525; - } - } else { - if (input[0] < 406.91656) { - var49 = -0.23146518; - } else { - var49 = 0.02217232; - } - } - } - } - } - } else { - if (input[7] < 0.006881745) { - if (input[4] < 25.11206) { - if (input[1] < 199.64316) { - if (input[2] < 0.12925828) { - if (input[7] < 0.0029851033) { - var49 = -0.06483453; - } else { - var49 = 0.0039432803; - } - } else { - if (input[1] < 147.89758) { - var49 = 0.21527119; - } else { - var49 = -0.1468445; - } - } - } else { - if (input[7] < 0.0049318275) { - if (input[0] < 685.8291) { - var49 = 0.1377012; - } else { - var49 = -0.25226584; - } - } else { - if (input[4] < 21.723177) { - var49 = 0.11167624; - } else { - var49 = 0.000366085; - } - } - } - } else { - if (input[7] < 0.0027116358) { - if (input[6] < 0.0387992) { - if (input[6] < 0.03770539) { - var49 = 0.04907431; - } else { - var49 = 0.22795056; - } - } else { - if (input[4] < 34.974888) { - var49 = 0.024627084; - } else { - var49 = -0.007102276; - } - } - } else { - if (input[6] < 0.0404656) { - if (input[2] < 0.112553775) { - var49 = -0.023419166; - } else { - var49 = -0.12890261; - } - } else { - if (input[0] < 507.74713) { - var49 = -0.018031195; - } else { - var49 = 0.01007653; - } - } - } - } - } else { - if (input[4] < 15.897472) { - if (input[6] < 0.012573133) { - if (input[7] < 0.086682595) { - if (input[0] < 538.57745) { - var49 = -0.07351429; - } else { - var49 = -0.015821993; - } - } else { - if (input[0] < 427.4725) { - var49 = 0.18034278; - } else { - var49 = 0.008960392; - } - } - } else { - if (input[5] < 25.146212) { - if (input[3] < 7.0) { - var49 = 0.024397312; - } else { - var49 = 0.09586457; - } - } else { - if (input[5] < 25.243595) { - var49 = -0.17059086; - } else { - var49 = -0.007982807; - } - } - } - } else { - if (input[3] < 7.0) { - if (input[1] < 118.724884) { - if (input[2] < 0.07323933) { - var49 = -0.0011600866; - } else { - var49 = -0.09147512; - } - } else { - if (input[1] < 151.58571) { - var49 = 0.041247137; - } else { - var49 = -0.01430796; - } - } - } else { - if (input[6] < 0.024815487) { - if (input[7] < 0.0075382576) { - var49 = 0.051707596; - } else { - var49 = -0.1230717; - } - } else { - if (input[0] < 597.1503) { - var49 = -0.04053738; - } else { - var49 = 0.047362108; - } - } - } - } - } - } - double var50; - if (input[3] < 9.0) { - if (input[1] < 421.82605) { - if (input[4] < 29.357256) { - if (input[7] < 0.0019773336) { - if (input[0] < 490.3461) { - var50 = 0.536886; - } else { - var50 = 0.100361235; - } - } else { - if (input[6] < 0.042833522) { - if (input[0] < 681.8675) { - var50 = -0.0032035212; - } else { - var50 = 0.051222935; - } - } else { - if (input[4] < 20.996748) { - var50 = 0.11114697; - } else { - var50 = 0.01093425; - } - } - } - } else { - if (input[1] < 348.1612) { - if (input[1] < 154.10083) { - if (input[1] < 150.89111) { - var50 = -0.013820175; - } else { - var50 = -0.11390511; - } - } else { - if (input[1] < 173.7774) { - var50 = 0.051502522; - } else { - var50 = -0.006333016; - } - } - } else { - if (input[0] < 647.514) { - if (input[2] < 0.191365) { - var50 = -0.12886488; - } else { - var50 = 0.053104177; - } - } else { - if (input[2] < 0.1456947) { - var50 = 0.19156043; - } else { - var50 = -0.123662; - } - } - } - } - } else { - if (input[4] < 28.26695) { - if (input[7] < 0.0071264803) { - if (input[2] < 0.1030972) { - if (input[4] < 27.141476) { - var50 = 0.28775615; - } else { - var50 = 0.06084225; - } - } else { - if (input[6] < 0.036780566) { - var50 = -0.25725496; - } else { - var50 = 0.16200905; - } - } - } else { - if (input[4] < 20.551977) { - if (input[4] < 18.410671) { - var50 = 0.030914074; - } else { - var50 = 0.25377098; - } - } else { - if (input[6] < 0.019131957) { - var50 = -0.46969524; - } else { - var50 = -0.004563052; - } - } - } - } else { - if (input[4] < 28.556541) { - var50 = -0.35171777; - } else { - if (input[1] < 432.44418) { - if (input[6] < 0.0719236) { - var50 = -0.010179944; - } else { - var50 = 0.3417834; - } - } else { - if (input[2] < 0.1399374) { - var50 = -0.110313505; - } else { - var50 = 0.051505797; - } - } - } - } - } - } else { - if (input[4] < 16.909874) { - if (input[5] < 27.29118) { - if (input[1] < 78.87378) { - if (input[4] < 15.7178545) { - if (input[1] < 78.383545) { - var50 = 0.16350384; - } else { - var50 = -0.21735536; - } - } else { - var50 = -0.30348355; - } - } else { - if (input[6] < 0.017456274) { - if (input[4] < 12.786485) { - var50 = 0.20528327; - } else { - var50 = -0.048410065; - } - } else { - if (input[1] < 174.03363) { - var50 = 0.31154305; - } else { - var50 = 0.14412913; - } - } - } - } else { - if (input[7] < 0.026389621) { - if (input[4] < 14.482901) { - if (input[6] < 0.017102145) { - var50 = -0.07167522; - } else { - var50 = -0.63023204; - } - } else { - if (input[5] < 28.479513) { - var50 = 0.19545218; - } else { - var50 = -0.0545734; - } - } - } else { - var50 = 0.21517242; - } - } - } else { - if (input[6] < 0.030572092) { - if (input[5] < 19.188658) { - if (input[0] < 600.2424) { - if (input[0] < 542.8911) { - var50 = 0.16448574; - } else { - var50 = -0.2133917; - } - } else { - if (input[1] < 174.03363) { - var50 = 0.30109107; - } else { - var50 = 0.08185008; - } - } - } else { - if (input[7] < 0.012781371) { - if (input[4] < 18.55459) { - var50 = 0.15058178; - } else { - var50 = -0.07122525; - } - } else { - if (input[4] < 17.703966) { - var50 = -0.6188506; - } else { - var50 = -0.118768014; - } - } - } - } else { - if (input[2] < 0.09670508) { - if (input[7] < 0.006533345) { - if (input[4] < 24.423347) { - var50 = 0.24794261; - } else { - var50 = 0.07988894; - } - } else { - if (input[2] < 0.08450693) { - var50 = -0.15037894; - } else { - var50 = 0.050275262; - } - } - } else { - if (input[0] < 423.21143) { - if (input[2] < 0.19611394) { - var50 = 0.03528733; - } else { - var50 = 0.21919023; - } - } else { - if (input[6] < 0.0404656) { - var50 = -0.03139144; - } else { - var50 = 0.0093645295; - } - } - } - } - } - } - double var51; - if (input[4] < 10.13415) { - if (input[6] < 0.007448412) { - if (input[5] < 26.244675) { - if (input[1] < 195.06812) { - if (input[1] < 143.84497) { - if (input[1] < 137.9049) { - var51 = -0.032066926; - } else { - var51 = -0.2619605; - } - } else { - if (input[2] < 0.015113175) { - var51 = 0.24388902; - } else { - var51 = -0.22342817; - } - } - } else { - if (input[5] < 24.673338) { - if (input[1] < 230.15582) { - var51 = -0.5179986; - } else { - var51 = -0.09190056; - } - } else { - var51 = 0.17271279; - } - } - } else { - if (input[1] < 115.16882) { - if (input[6] < 0.0051328884) { - if (input[3] < 6.0) { - var51 = -0.10962267; - } else { - var51 = 0.155391; - } - } else { - if (input[1] < 52.519287) { - var51 = 0.21672207; - } else { - var51 = -0.21588369; - } - } - } else { - if (input[0] < 615.92804) { - if (input[0] < 482.33795) { - var51 = 0.1437189; - } else { - var51 = 0.35867417; - } - } else { - var51 = -0.22037429; - } - } - } - } else { - if (input[0] < 488.4354) { - if (input[7] < 0.065982014) { - if (input[5] < 23.403553) { - if (input[6] < 0.013054227) { - var51 = 0.0039375816; - } else { - var51 = 0.16270757; - } - } else { - if (input[1] < 148.36841) { - var51 = 0.025404882; - } else { - var51 = -0.17545764; - } - } - } else { - if (input[4] < 5.1584697) { - if (input[5] < 22.020842) { - var51 = -0.048651744; - } else { - var51 = 0.1841644; - } - } else { - if (input[5] < 30.710585) { - var51 = 0.26049566; - } else { - var51 = -0.16946049; - } - } - } - } else { - if (input[3] < 8.0) { - if (input[0] < 531.8526) { - if (input[5] < 27.11507) { - var51 = -0.02343878; - } else { - var51 = -0.23795626; - } - } else { - if (input[1] < 140.762) { - var51 = 0.0625446; - } else { - var51 = -0.040721178; - } - } - } else { - var51 = 0.28672034; - } - } - } - } else { - if (input[7] < 0.04599524) { - if (input[0] < 451.8147) { - if (input[5] < 14.734648) { - if (input[3] < 6.0) { - if (input[0] < 415.7414) { - var51 = 0.29247814; - } else { - var51 = -0.012732344; - } - } else { - if (input[0] < 427.4725) { - var51 = -0.011761367; - } else { - var51 = 0.3081139; - } - } - } else { - if (input[6] < 0.013503123) { - if (input[6] < 0.008788065) { - var51 = -0.016928766; - } else { - var51 = -0.15854707; - } - } else { - if (input[4] < 15.110416) { - var51 = 0.03909656; - } else { - var51 = -0.017531374; - } - } - } - } else { - if (input[2] < 0.019446373) { - if (input[3] < 6.0) { - if (input[4] < 28.460495) { - var51 = 0.0040998664; - } else { - var51 = 0.2245383; - } - } else { - if (input[6] < 0.006028899) { - var51 = -0.019015312; - } else { - var51 = 0.086592376; - } - } - } else { - if (input[6] < 0.01815154) { - if (input[2] < 0.043907166) { - var51 = -0.014213437; - } else { - var51 = -0.10923666; - } - } else { - if (input[2] < 0.04971838) { - var51 = 0.037253; - } else { - var51 = 0.0003002052; - } - } - } - } - } else { - if (input[6] < 0.020684186) { - if (input[4] < 20.090502) { - if (input[5] < 21.08316) { - if (input[2] < 0.04118097) { - var51 = -0.18752502; - } else { - var51 = 0.124040924; - } - } else { - if (input[0] < 425.37012) { - var51 = -0.32153344; - } else { - var51 = 0.05208739; - } - } - } else { - if (input[3] < 6.0) { - if (input[0] < 527.5794) { - var51 = 0.6379746; - } else { - var51 = 0.13536714; - } - } else { - var51 = -0.0029128133; - } - } - } else { - if (input[0] < 435.46625) { - if (input[6] < 0.02797405) { - if (input[4] < 11.949299) { - var51 = 0.083188154; - } else { - var51 = -0.23025033; - } - } else { - if (input[5] < 28.613876) { - var51 = 0.34869766; - } else { - var51 = -0.14170717; - } - } - } else { - if (input[1] < 207.02184) { - if (input[4] < 11.631724) { - var51 = 0.018686045; - } else { - var51 = -0.23317206; - } - } else { - if (input[5] < 24.626286) { - var51 = 0.21207948; - } else { - var51 = -0.11186213; - } - } - } - } - } - } - double var52; - if (input[1] < 81.83862) { - if (input[1] < 77.55432) { - if (input[3] < 8.0) { - if (input[1] < 59.12854) { - if (input[1] < 55.945312) { - if (input[0] < 412.7322) { - var52 = -0.06638757; - } else { - var52 = 0.0016908767; - } - } else { - if (input[0] < 531.8526) { - var52 = -0.15765496; - } else { - var52 = -0.039652232; - } - } - } else { - if (input[5] < 29.440952) { - if (input[1] < 75.70349) { - var52 = 0.07562148; - } else { - var52 = 0.015927192; - } - } else { - if (input[7] < 0.0035266217) { - var52 = 0.107559465; - } else { - var52 = -0.17748722; - } - } - } - } else { - if (input[5] < 17.108025) { - if (input[2] < 0.09169535) { - if (input[6] < 0.009366361) { - var52 = -0.03372878; - } else { - var52 = 0.38150316; - } - } else { - if (input[7] < 0.0041569136) { - var52 = 0.17458488; - } else { - var52 = -0.15750659; - } - } - } else { - if (input[1] < 57.1416) { - if (input[0] < 611.31836) { - var52 = 0.05958004; - } else { - var52 = -0.14309812; - } - } else { - if (input[5] < 27.776207) { - var52 = 0.1492411; - } else { - var52 = -0.281459; - } - } - } - } - } else { - if (input[2] < 0.08283448) { - if (input[4] < 22.71235) { - if (input[1] < 78.383545) { - if (input[6] < 0.033379562) { - var52 = 0.018179625; - } else { - var52 = 0.6791546; - } - } else { - if (input[0] < 584.10345) { - var52 = -0.08601265; - } else { - var52 = -0.008158052; - } - } - } else { - if (input[5] < 17.493734) { - if (input[4] < 23.34669) { - var52 = 0.68896884; - } else { - var52 = 0.14439829; - } - } else { - if (input[5] < 24.069965) { - var52 = -0.039934516; - } else { - var52 = 0.096065044; - } - } - } - } else { - if (input[1] < 79.2583) { - if (input[3] < 6.0) { - if (input[5] < 22.910156) { - var52 = 0.17554435; - } else { - var52 = -0.17301574; - } - } else { - if (input[4] < 873.4576) { - var52 = -0.15238124; - } else { - var52 = 0.1184419; - } - } - } else { - if (input[0] < 472.82422) { - if (input[3] < 6.0) { - var52 = -0.025188984; - } else { - var52 = 0.7218857; - } - } else { - if (input[4] < 24.93774) { - var52 = 0.13502002; - } else { - var52 = -0.1033235; - } - } - } - } - } - } else { - if (input[1] < 114.94299) { - if (input[0] < 439.05417) { - if (input[1] < 96.294495) { - if (input[4] < 26.84426) { - if (input[2] < 0.059152238) { - var52 = 0.38279948; - } else { - var52 = -0.050393376; - } - } else { - var52 = 0.65523595; - } - } else { - if (input[5] < 16.015747) { - var52 = 0.3129068; - } else { - if (input[5] < 20.922693) { - var52 = -0.07245536; - } else { - var52 = 0.16402851; - } - } - } - } else { - if (input[1] < 96.294495) { - if (input[2] < 0.05491352) { - if (input[7] < 0.005354749) { - var52 = -0.09234411; - } else { - var52 = 0.23317151; - } - } else { - if (input[5] < 20.02947) { - var52 = 0.061107934; - } else { - var52 = -0.13768744; - } - } - } else { - if (input[0] < 494.08887) { - if (input[6] < 0.03279909) { - var52 = -0.090559095; - } else { - var52 = 0.10911762; - } - } else { - if (input[3] < 6.0) { - var52 = 0.11312643; - } else { - var52 = 0.27766082; - } - } - } - } - } else { - if (input[7] < 0.027495267) { - if (input[5] < 13.509364) { - if (input[1] < 322.41693) { - if (input[7] < 0.011090135) { - var52 = 0.0228049; - } else { - var52 = 0.1739913; - } - } else { - if (input[7] < 0.0023913998) { - var52 = 0.039978836; - } else { - var52 = 0.2897628; - } - } - } else { - if (input[1] < 141.24573) { - if (input[5] < 27.11507) { - var52 = -0.016949767; - } else { - var52 = 0.02397496; - } - } else { - if (input[1] < 143.14807) { - var52 = 0.1450877; - } else { - var52 = 0.00037433146; - } - } - } - } else { - if (input[5] < 14.48199) { - if (input[1] < 120.35962) { - if (input[0] < 563.0628) { - var52 = 0.123577274; - } else { - var52 = -0.1888476; - } - } else { - if (input[5] < 11.839297) { - var52 = 0.09667195; - } else { - var52 = -0.42966312; - } - } - } else { - if (input[5] < 21.282642) { - if (input[6] < 0.021839056) { - var52 = 0.11059394; - } else { - var52 = -0.0435085; - } - } else { - if (input[5] < 21.746756) { - var52 = -0.16235133; - } else { - var52 = 0.032434363; - } - } - } - } - } - } - double var53; - if (input[4] < 51.153934) { - if (input[6] < 0.07962002) { - if (input[1] < 521.543) { - if (input[2] < 0.25271404) { - if (input[3] < 17.0) { - if (input[1] < 499.95114) { - var53 = -0.00060132577; - } else { - var53 = -0.11809138; - } - } else { - if (input[2] < 0.19285977) { - var53 = 0.13340412; - } else { - var53 = 0.015442035; - } - } - } else { - if (input[1] < 489.80347) { - if (input[1] < 344.88092) { - var53 = 0.048061736; - } else { - var53 = -0.33885694; - } - } else { - var53 = 0.085096315; - } - } - } else { - if (input[3] < 12.0) { - if (input[0] < 528.44965) { - if (input[0] < 464.80853) { - var53 = 0.19555967; - } else { - var53 = -0.08234424; - } - } else { - if (input[0] < 659.5366) { - var53 = 0.17274615; - } else { - var53 = -0.047631066; - } - } - } else { - if (input[6] < 0.046959374) { - if (input[1] < 545.9964) { - var53 = -0.23215227; - } else { - var53 = -0.007445563; - } - } else { - if (input[4] < 39.41097) { - var53 = 0.06480188; - } else { - var53 = -0.011401061; - } - } - } - } - } else { - if (input[1] < 614.36035) { - if (input[1] < 147.89758) { - if (input[1] < 140.49933) { - if (input[7] < 0.0015539197) { - var53 = -0.114291996; - } else { - var53 = 0.07028282; - } - } else { - if (input[4] < 47.95029) { - var53 = 0.17835121; - } else { - var53 = -0.14825074; - } - } - } else { - if (input[1] < 177.04877) { - if (input[0] < 497.7732) { - var53 = -0.17191033; - } else { - var53 = 0.02153656; - } - } else { - if (input[7] < 0.002095897) { - var53 = 0.10816628; - } else { - var53 = 0.004488708; - } - } - } - } else { - if (input[5] < 23.707842) { - if (input[7] < 0.006159995) { - if (input[4] < 46.88934) { - var53 = 0.2435274; - } else { - var53 = 0.02069189; - } - } else { - var53 = -0.20039207; - } - } else { - if (input[0] < 429.60077) { - var53 = -0.08687386; - } else { - if (input[7] < 0.0034164374) { - var53 = 0.35930493; - } else { - var53 = 0.16419606; - } - } - } - } - } - } else { - if (input[0] < 431.5945) { - if (input[2] < 0.070949554) { - if (input[1] < 117.295654) { - if (input[0] < 409.8705) { - var53 = -0.08024382; - } else { - var53 = -0.35228; - } - } else { - var53 = 0.04235248; - } - } else { - if (input[1] < 269.17102) { - if (input[5] < 24.861015) { - if (input[5] < 20.922693) { - var53 = 0.18664567; - } else { - var53 = 0.42237598; - } - } else { - if (input[1] < 149.04504) { - var53 = -0.14642929; - } else { - var53 = 0.26655516; - } - } - } else { - if (input[3] < 8.0) { - if (input[7] < 0.000007795067) { - var53 = 0.14067057; - } else { - var53 = -0.24308653; - } - } else { - if (input[6] < 0.5004946) { - var53 = -0.16702808; - } else { - var53 = 0.19603467; - } - } - } - } - } else { - if (input[6] < 2.0720093) { - if (input[5] < 27.470732) { - if (input[5] < 25.396322) { - if (input[0] < 465.9689) { - var53 = 0.1092675; - } else { - var53 = -0.04373846; - } - } else { - if (input[2] < 0.2476418) { - var53 = -0.18717408; - } else { - var53 = -0.05713131; - } - } - } else { - if (input[0] < 498.7337) { - if (input[0] < 454.6105) { - var53 = 0.1140459; - } else { - var53 = -0.23634396; - } - } else { - if (input[7] < 0.0014543242) { - var53 = -0.02751712; - } else { - var53 = 0.26024345; - } - } - } - } else { - if (input[0] < 442.55496) { - if (input[1] < 148.36841) { - var53 = 0.067702256; - } else { - if (input[2] < 0.1030972) { - var53 = -0.45582563; - } else { - var53 = -0.1257038; - } - } - } else { - if (input[0] < 509.51126) { - if (input[0] < 478.12262) { - var53 = 0.022104146; - } else { - var53 = 0.2078447; - } - } else { - if (input[0] < 541.16064) { - var53 = -0.11835373; - } else { - var53 = 0.019900497; - } - } - } - } - } - } - double var54; - if (input[1] < 272.0462) { - if (input[1] < 231.0669) { - if (input[1] < 224.4739) { - if (input[1] < 207.02184) { - if (input[1] < 177.04877) { - if (input[1] < 176.52954) { - var54 = -0.0005382405; - } else { - var54 = -0.06853527; - } - } else { - if (input[1] < 196.52942) { - var54 = 0.043651022; - } else { - var54 = -0.016126735; - } - } - } else { - if (input[2] < 0.05979991) { - if (input[3] < 7.0) { - var54 = -0.3955578; - } else { - var54 = -0.098116785; - } - } else { - if (input[3] < 7.0) { - var54 = -0.1211909; - } else { - var54 = 0.043434657; - } - } - } - } else { - if (input[1] < 227.01422) { - if (input[2] < 0.20476818) { - if (input[4] < 31.580933) { - var54 = 0.15576303; - } else { - var54 = -0.0021762294; - } - } else { - if (input[5] < 21.863554) { - var54 = 0.5803619; - } else { - var54 = 0.18695994; - } - } - } else { - if (input[4] < 23.164886) { - if (input[0] < 574.6581) { - var54 = 0.018878654; - } else { - var54 = 0.1605214; - } - } else { - if (input[6] < 0.030572092) { - var54 = -0.16689238; - } else { - var54 = -0.00943515; - } - } - } - } - } else { - if (input[1] < 235.31873) { - if (input[5] < 20.834808) { - if (input[0] < 541.9823) { - if (input[0] < 497.7732) { - var54 = -0.14325587; - } else { - var54 = 0.08861173; - } - } else { - if (input[3] < 12.0) { - var54 = -0.21732096; - } else { - var54 = 0.18481348; - } - } - } else { - if (input[6] < 0.06442285) { - if (input[3] < 10.0) { - var54 = -0.030091057; - } else { - var54 = -0.16761276; - } - } else { - if (input[2] < 0.22287011) { - var54 = 0.16032894; - } else { - var54 = -0.17760333; - } - } - } - } else { - if (input[4] < 19.845797) { - if (input[4] < 16.744081) { - if (input[5] < 24.407122) { - var54 = 0.111272626; - } else { - var54 = -0.13288598; - } - } else { - if (input[2] < 0.04302311) { - var54 = 0.30905217; - } else { - var54 = 0.0702684; - } - } - } else { - if (input[1] < 250.13928) { - if (input[0] < 501.43326) { - var54 = -0.18271479; - } else { - var54 = 0.085266925; - } - } else { - if (input[1] < 255.84222) { - var54 = -0.083317034; - } else { - var54 = -0.012202504; - } - } - } - } - } - } else { - if (input[1] < 317.39774) { - if (input[1] < 311.82135) { - if (input[3] < 8.0) { - if (input[2] < 0.087249905) { - if (input[7] < 0.0049318275) { - var54 = 0.12160865; - } else { - var54 = -0.04538215; - } - } else { - if (input[6] < 0.033574995) { - var54 = -0.3738334; - } else { - var54 = -0.06340424; - } - } - } else { - if (input[1] < 292.086) { - if (input[0] < 559.4778) { - var54 = 0.010289919; - } else { - var54 = 0.13256545; - } - } else { - if (input[2] < 0.095577836) { - var54 = 0.17432736; - } else { - var54 = -0.0464135; - } - } - } - } else { - if (input[2] < 0.17006421) { - if (input[3] < 7.0) { - if (input[6] < 0.057765625) { - var54 = 0.1703411; - } else { - var54 = -0.09539571; - } - } else { - if (input[2] < 0.12573218) { - var54 = 0.05538188; - } else { - var54 = -0.058600374; - } - } - } else { - if (input[6] < 0.05809109) { - var54 = -0.121410534; - } else { - if (input[0] < 598.1789) { - var54 = 0.22763456; - } else { - var54 = 0.08285412; - } - } - } - } - } else { - if (input[1] < 342.5133) { - if (input[1] < 325.458) { - if (input[5] < 23.947874) { - if (input[7] < 0.0022020095) { - var54 = -0.14065568; - } else { - var54 = 0.061104223; - } - } else { - if (input[7] < 0.012117223) { - var54 = -0.02493887; - } else { - var54 = -0.3033007; - } - } - } else { - if (input[5] < 23.366688) { - if (input[2] < 0.11836624) { - var54 = -0.10975804; - } else { - var54 = 0.05136801; - } - } else { - if (input[7] < 0.009276815) { - var54 = -0.23057534; - } else { - var54 = 0.21686806; - } - } - } - } else { - if (input[1] < 347.76187) { - if (input[3] < 11.0) { - if (input[0] < 617.12683) { - var54 = -0.0064574443; - } else { - var54 = 0.083868265; - } - } else { - if (input[5] < 20.706615) { - var54 = 0.2148492; - } else { - var54 = 0.077870466; - } - } - } else { - if (input[5] < 15.865071) { - if (input[7] < 0.0027962627) { - var54 = -0.05957026; - } else { - var54 = 0.19604278; - } - } else { - if (input[5] < 27.997742) { - var54 = -0.00733836; - } else { - var54 = 0.043138735; - } - } - } - } - } - } - double var55; - if (input[6] < 0.03715515) { - if (input[2] < 0.087249905) { - if (input[4] < 34.26512) { - if (input[3] < 10.0) { - if (input[6] < 0.034337986) { - if (input[2] < 0.07385218) { - var55 = -0.000075465985; - } else { - var55 = -0.028194694; - } - } else { - if (input[3] < 7.0) { - var55 = -0.0047130035; - } else { - var55 = 0.16735846; - } - } - } else { - if (input[7] < 0.004189696) { - if (input[4] < 30.056957) { - var55 = 0.4583337; - } else { - var55 = 0.011325922; - } - } else { - if (input[2] < 0.04563713) { - var55 = 0.15687506; - } else { - var55 = 0.013474517; - } - } - } - } else { - if (input[2] < 0.08508021) { - if (input[3] < 6.0) { - if (input[6] < 0.020986198) { - var55 = 0.3063501; - } else { - var55 = 0.028049964; - } - } else { - if (input[1] < 171.21246) { - var55 = -0.12916419; - } else { - var55 = 0.05439392; - } - } - } else { - if (input[7] < 0.002095897) { - var55 = -0.15403707; - } else { - if (input[6] < 0.028862298) { - var55 = -0.14905064; - } else { - var55 = 0.51388377; - } - } - } - } - } else { - if (input[4] < 18.276783) { - if (input[1] < 117.95654) { - if (input[6] < 0.036780566) { - var55 = 0.101599894; - } else { - var55 = -0.2679785; - } - } else { - if (input[1] < 140.66498) { - var55 = 0.3195928; - } else { - if (input[1] < 197.2326) { - var55 = -0.041135866; - } else { - var55 = 0.17362323; - } - } - } - } else { - if (input[0] < 508.57187) { - if (input[4] < 29.357256) { - if (input[1] < 138.08691) { - var55 = 0.042141315; - } else { - var55 = -0.17575184; - } - } else { - if (input[7] < 0.0033882342) { - var55 = -0.13680409; - } else { - var55 = 0.24983206; - } - } - } else { - if (input[3] < 7.0) { - if (input[2] < 0.089429066) { - var55 = -0.061473317; - } else { - var55 = 0.060626958; - } - } else { - if (input[3] < 9.0) { - var55 = -0.08579604; - } else { - var55 = -0.014219384; - } - } - } - } - } - } else { - if (input[4] < 20.996748) { - if (input[2] < 0.10368276) { - if (input[2] < 0.09225285) { - if (input[0] < 406.91656) { - if (input[0] < 394.5867) { - var55 = 0.20926364; - } else { - var55 = -0.22609594; - } - } else { - if (input[4] < 18.55459) { - var55 = 0.1646469; - } else { - var55 = 0.04552911; - } - } - } else { - if (input[7] < 0.008989412) { - if (input[7] < 0.0071264803) { - var55 = -0.0009582681; - } else { - var55 = -0.22755785; - } - } else { - if (input[1] < 115.84448) { - var55 = -0.14382853; - } else { - var55 = 0.13095245; - } - } - } - } else { - if (input[2] < 0.12500748) { - if (input[1] < 114.94299) { - var55 = -0.18857917; - } else { - if (input[6] < 0.04734587) { - var55 = 0.18219292; - } else { - var55 = 0.011840121; - } - } - } else { - if (input[1] < 231.0669) { - var55 = -0.28974867; - } else { - if (input[2] < 0.13520741) { - var55 = 0.18093789; - } else { - var55 = -0.1341812; - } - } - } - } - } else { - if (input[7] < 0.009994577) { - if (input[4] < 27.981726) { - if (input[6] < 0.051774185) { - if (input[0] < 465.9689) { - var55 = -0.03364079; - } else { - var55 = 0.019660054; - } - } else { - if (input[0] < 450.31787) { - var55 = 0.026075369; - } else { - var55 = 0.09621126; - } - } - } else { - if (input[0] < 497.7732) { - if (input[6] < 0.05877689) { - var55 = -0.07845287; - } else { - var55 = 0.0041813925; - } - } else { - if (input[1] < 121.57103) { - var55 = -0.027540857; - } else { - var55 = 0.006961866; - } - } - } - } else { - if (input[0] < 569.34753) { - if (input[6] < 0.050438497) { - if (input[4] < 28.460495) { - var55 = -0.08726996; - } else { - var55 = -0.3611505; - } - } else { - if (input[0] < 562.22656) { - var55 = -0.0041547795; - } else { - var55 = -0.413257; - } - } - } else { - if (input[4] < 23.609772) { - if (input[1] < 171.9599) { - var55 = -0.3014641; - } else { - var55 = 0.0049626944; - } - } else { - if (input[6] < 0.039715424) { - var55 = 0.23509906; - } else { - var55 = 0.03431683; - } - } - } - } - } - } - double var56; - if (input[4] < 39.150074) { - if (input[6] < 0.064966485) { - if (input[1] < 367.2591) { - if (input[1] < 350.59753) { - if (input[2] < 0.1772592) { - if (input[3] < 10.0) { - var56 = -0.0009506953; - } else { - var56 = 0.019851552; - } - } else { - if (input[7] < 0.002768994) { - var56 = 0.19479214; - } else { - var56 = -0.12308368; - } - } - } else { - if (input[0] < 625.711) { - if (input[0] < 610.1273) { - var56 = -0.06494021; - } else { - var56 = -0.28378513; - } - } else { - if (input[5] < 18.06236) { - var56 = -0.32505378; - } else { - var56 = 0.08633977; - } - } - } - } else { - if (input[0] < 465.9689) { - if (input[4] < 30.161802) { - if (input[2] < 0.16156626) { - var56 = -0.07962051; - } else { - var56 = 0.17017524; - } - } else { - if (input[2] < 0.112553775) { - var56 = 0.17389663; - } else { - var56 = -0.35631642; - } - } - } else { - if (input[4] < 34.687817) { - if (input[6] < 0.040101185) { - var56 = 0.00888413; - } else { - var56 = 0.08537979; - } - } else { - if (input[2] < 0.13911271) { - var56 = -0.14440717; - } else { - var56 = 0.008514022; - } - } - } - } - } else { - if (input[7] < 0.0020210762) { - if (input[1] < 196.52942) { - if (input[3] < 9.0) { - if (input[1] < 137.21216) { - var56 = -0.00919105; - } else { - var56 = -0.15066904; - } - } else { - if (input[6] < 0.071077615) { - var56 = 0.3798277; - } else { - var56 = -0.010134578; - } - } - } else { - if (input[3] < 6.0) { - if (input[6] < 0.0719236) { - var56 = -0.30123335; - } else { - var56 = 0.23084573; - } - } else { - if (input[2] < 0.21310979) { - var56 = 0.3279021; - } else { - var56 = -0.1435656; - } - } - } - } else { - if (input[1] < 147.89758) { - if (input[7] < 0.0020605393) { - if (input[0] < 457.22827) { - var56 = 0.21038875; - } else { - var56 = 0.61888266; - } - } else { - if (input[0] < 455.97122) { - var56 = 0.03781644; - } else { - var56 = 0.13452975; - } - } - } else { - if (input[1] < 174.1648) { - if (input[5] < 30.39442) { - var56 = -0.10040944; - } else { - var56 = 0.23871154; - } - } else { - if (input[7] < 0.0023011367) { - var56 = -0.07821562; - } else { - var56 = 0.041750636; - } - } - } - } - } - } else { - if (input[3] < 6.0) { - if (input[4] < 46.88934) { - if (input[0] < 508.57187) { - if (input[6] < 0.087597266) { - if (input[7] < 0.0015539197) { - var56 = 0.13555655; - } else { - var56 = -0.17413479; - } - } else { - if (input[2] < 0.23170115) { - var56 = 0.044357963; - } else { - var56 = 0.33099288; - } - } - } else { - if (input[5] < 25.88462) { - if (input[5] < 24.9099) { - var56 = 0.2313069; - } else { - var56 = 0.6314859; - } - } else { - if (input[2] < 0.13220453) { - var56 = -0.26513878; - } else { - var56 = 0.17600107; - } - } - } - } else { - if (input[5] < 18.220026) { - if (input[0] < 597.1503) { - if (input[2] < 0.098368645) { - var56 = 0.33849916; - } else { - var56 = 0.043030966; - } - } else { - if (input[5] < 14.199996) { - var56 = -0.2372338; - } else { - var56 = 0.019900516; - } - } - } else { - if (input[1] < 250.13928) { - if (input[5] < 22.283722) { - var56 = -0.18774195; - } else { - var56 = -0.012579184; - } - } else { - if (input[0] < 546.2918) { - var56 = 0.19093658; - } else { - var56 = -0.06883599; - } - } - } - } - } else { - if (input[3] < 34.0) { - if (input[7] < 0.009886153) { - if (input[6] < 0.066093825) { - if (input[0] < 594.0457) { - var56 = -0.10032577; - } else { - var56 = -0.00075978367; - } - } else { - if (input[3] < 8.0) { - var56 = -0.038233154; - } else { - var56 = 0.0029793982; - } - } - } else { - if (input[5] < 24.320927) { - var56 = -0.059160315; - } else { - var56 = -0.543167; - } - } - } else { - if (input[2] < 0.32127088) { - if (input[4] < 40.86154) { - if (input[7] < 0.013527424) { - var56 = -0.1889134; - } else { - var56 = 0.1701118; - } - } else { - if (input[7] < 0.0037865257) { - var56 = 0.09575502; - } else { - var56 = 0.24874264; - } - } - } else { - if (input[1] < 1217.6255) { - if (input[7] < 0.0020210762) { - var56 = -0.03700858; - } else { - var56 = 0.23729654; - } - } else { - if (input[6] < 0.07288235) { - var56 = -0.44613847; - } else { - var56 = -0.0688182; - } - } - } - } - } - } - double var57; - if (input[2] < 0.1785326) { - if (input[6] < 0.059464313) { - if (input[3] < 19.0) { - if (input[5] < 33.48466) { - if (input[4] < 25.647543) { - if (input[3] < 6.0) { - var57 = -0.006957592; - } else { - var57 = 0.01131418; - } - } else { - if (input[0] < 439.05417) { - var57 = -0.09564675; - } else { - var57 = -0.00476614; - } - } - } else { - if (input[1] < 139.97156) { - if (input[7] < 0.0037865257) { - var57 = -0.15206568; - } else { - var57 = 0.06636367; - } - } else { - if (input[1] < 143.43848) { - var57 = 0.29933697; - } else { - var57 = 0.07359289; - } - } - } - } else { - if (input[2] < 0.16260886) { - if (input[3] < 21.0) { - if (input[4] < 31.242579) { - var57 = 0.24393669; - } else { - var57 = -0.019022677; - } - } else { - if (input[4] < 24.066366) { - var57 = -0.046822023; - } else { - var57 = 0.263199; - } - } - } else { - if (input[6] < 0.046560727) { - if (input[0] < 577.4389) { - var57 = -0.602619; - } else { - var57 = 0.15482728; - } - } else { - if (input[4] < 35.420593) { - var57 = 0.19860098; - } else { - var57 = 0.0003150465; - } - } - } - } - } else { - if (input[3] < 7.0) { - if (input[0] < 648.74475) { - if (input[2] < 0.14234614) { - if (input[0] < 455.97122) { - var57 = -0.01506049; - } else { - var57 = 0.09289611; - } - } else { - if (input[7] < 0.0022020095) { - var57 = -0.06958421; - } else { - var57 = 0.018645158; - } - } - } else { - if (input[5] < 24.235641) { - if (input[0] < 672.7553) { - var57 = -0.39361012; - } else { - var57 = -0.027068404; - } - } else { - if (input[0] < 657.11444) { - var57 = -0.153288; - } else { - var57 = 0.17778574; - } - } - } - } else { - if (input[7] < 0.0042216145) { - if (input[0] < 423.21143) { - if (input[5] < 25.88462) { - var57 = 0.04728209; - } else { - var57 = -0.34072155; - } - } else { - if (input[4] < 31.694513) { - var57 = 0.14125018; - } else { - var57 = 0.051063996; - } - } - } else { - if (input[4] < 32.62736) { - if (input[0] < 454.6105) { - var57 = 0.004939084; - } else { - var57 = 0.19597155; - } - } else { - if (input[6] < 0.06134235) { - var57 = -0.008655317; - } else { - var57 = -0.18723194; - } - } - } - } - } - } else { - if (input[6] < 0.05843868) { - if (input[1] < 367.2591) { - if (input[4] < 32.741352) { - if (input[5] < 24.451618) { - var57 = 0.24263136; - } else { - var57 = -0.18743454; - } - } else { - if (input[0] < 501.43326) { - var57 = 0.05399028; - } else { - if (input[7] < 0.0030890324) { - var57 = -0.12291984; - } else { - var57 = -0.4691953; - } - } - } - } else { - if (input[4] < 39.656563) { - if (input[0] < 619.6026) { - if (input[2] < 0.17982149) { - var57 = -0.37890786; - } else { - var57 = 0.0063923155; - } - } else { - var57 = 0.288962; - } - } else { - if (input[0] < 613.5429) { - if (input[0] < 536.0595) { - var57 = 0.063882396; - } else { - var57 = -0.42557997; - } - } else { - if (input[6] < 0.05601607) { - var57 = -0.21392037; - } else { - var57 = 0.09463968; - } - } - } - } - } else { - if (input[7] < 0.000020908421) { - if (input[0] < 481.2571) { - if (input[2] < 0.28529787) { - if (input[3] < 10.0) { - var57 = 0.04529821; - } else { - var57 = 0.28151846; - } - } else { - if (input[6] < 2.5102012) { - var57 = 0.029623058; - } else { - var57 = -0.26409146; - } - } - } else { - if (input[3] < 22.0) { - if (input[0] < 578.47174) { - var57 = -0.12122632; - } else { - var57 = -0.3155718; - } - } else { - if (input[2] < 0.26561487) { - var57 = 0.22290263; - } else { - var57 = -0.03255359; - } - } - } - } else { - if (input[5] < 11.839297) { - var57 = 0.2958377; - } else { - if (input[4] < 1054.0984) { - if (input[4] < 29.256954) { - var57 = 0.18904744; - } else { - var57 = -0.006619727; - } - } else { - if (input[0] < 554.3122) { - var57 = -0.18632811; - } else { - var57 = 0.20895478; - } - } - } - } - } - } - double var58; - if (input[7] < 0.00733221) { - if (input[2] < 0.044810057) { - if (input[1] < 174.03363) { - if (input[7] < 0.007193277) { - if (input[1] < 173.5393) { - if (input[0] < 661.7976) { - var58 = 0.011661161; - } else { - var58 = -0.07441813; - } - } else { - if (input[7] < 0.0042216145) { - var58 = 0.016437208; - } else { - var58 = -0.21425167; - } - } - } else { - if (input[3] < 6.0) { - if (input[4] < 13.793873) { - var58 = -0.08167414; - } else { - var58 = 0.29919726; - } - } else { - if (input[0] < 526.7187) { - var58 = -0.23615389; - } else { - var58 = 0.05054667; - } - } - } - } else { - if (input[7] < 0.0064791786) { - if (input[7] < 0.0017720697) { - if (input[5] < 25.097332) { - var58 = -0.24653755; - } else { - var58 = 0.07564455; - } - } else { - if (input[1] < 202.09811) { - var58 = 0.14647964; - } else { - var58 = 0.055456612; - } - } - } else { - if (input[5] < 19.358892) { - if (input[4] < 18.961548) { - var58 = 0.053945806; - } else { - var58 = -0.4245018; - } - } else { - if (input[1] < 199.64316) { - var58 = -0.10085631; - } else { - var58 = 0.15156248; - } - } - } - } - } else { - if (input[6] < 0.01848785) { - if (input[5] < 25.88462) { - if (input[7] < 0.0037865257) { - if (input[3] < 6.0) { - var58 = 0.040840965; - } else { - var58 = -0.437137; - } - } else { - if (input[7] < 0.0041255937) { - var58 = 0.22527511; - } else { - var58 = -0.1763503; - } - } - } else { - if (input[7] < 0.0041255937) { - if (input[4] < 28.26695) { - var58 = -0.23801313; - } else { - var58 = -0.041071355; - } - } else { - if (input[2] < 0.051182747) { - var58 = 0.37690353; - } else { - var58 = -0.07134008; - } - } - } - } else { - if (input[4] < 16.2539) { - if (input[0] < 477.06348) { - var58 = 0.046711944; - } else { - var58 = 0.41184887; - } - } else { - if (input[0] < 437.31543) { - if (input[3] < 12.0) { - var58 = -0.025674894; - } else { - var58 = 0.1552701; - } - } else { - if (input[6] < 0.030154696) { - var58 = -0.010498276; - } else { - var58 = 0.0042309766; - } - } - } - } - } - } else { - if (input[5] < 22.210117) { - if (input[5] < 20.964203) { - if (input[4] < 38.68964) { - if (input[5] < 20.02947) { - if (input[0] < 433.54276) { - var58 = 0.09358779; - } else { - var58 = -0.00038702157; - } - } else { - if (input[3] < 16.0) { - var58 = -0.03036916; - } else { - var58 = -0.41885132; - } - } - } else { - if (input[0] < 512.96185) { - var58 = 0.02687818; - } else { - var58 = 0.44855133; - } - } - } else { - if (input[7] < 0.0075382576) { - if (input[1] < 196.73734) { - if (input[3] < 8.0) { - var58 = 0.13736364; - } else { - var58 = -0.18048938; - } - } else { - var58 = 0.33525538; - } - } else { - if (input[6] < 0.071077615) { - if (input[4] < 32.860813) { - var58 = 0.028725069; - } else { - var58 = -0.17857426; - } - } else { - var58 = 0.3062535; - } - } - } - } else { - if (input[7] < 0.008892193) { - if (input[1] < 572.2172) { - if (input[3] < 7.0) { - if (input[5] < 23.175718) { - var58 = -0.12389957; - } else { - var58 = -0.00059796846; - } - } else { - if (input[4] < 17.400011) { - var58 = 0.10152545; - } else { - var58 = -0.09932333; - } - } - } else { - if (input[6] < 0.04246912) { - if (input[7] < 0.008375866) { - var58 = 0.051694345; - } else { - var58 = -0.44939712; - } - } else { - if (input[6] < 0.05877689) { - var58 = 0.2537163; - } else { - var58 = 0.03694736; - } - } - } - } else { - if (input[6] < 0.020986198) { - if (input[2] < 0.04971838) { - if (input[4] < 17.855886) { - var58 = -0.02109587; - } else { - var58 = 0.05643545; - } - } else { - if (input[0] < 619.6026) { - var58 = -0.06458196; - } else { - var58 = -0.31984562; - } - } - } else { - if (input[7] < 0.05417835) { - if (input[2] < 0.04971838) { - var58 = 0.08860883; - } else { - var58 = 0.00035704635; - } - } else { - if (input[2] < 0.06679523) { - var58 = -0.24741888; - } else { - var58 = 0.14954735; - } - } - } - } - } - } - double var59; - if (input[4] < 47.95029) { - if (input[6] < 0.07962002) { - if (input[0] < 522.50836) { - if (input[4] < 42.829258) { - if (input[4] < 3.4118037) { - if (input[0] < 427.4725) { - var59 = 0.23046999; - } else { - var59 = 0.028767861; - } - } else { - if (input[7] < 0.004288183) { - var59 = 0.0051616104; - } else { - var59 = -0.009156127; - } - } - } else { - if (input[0] < 505.03424) { - if (input[0] < 464.80853) { - var59 = -0.00025173026; - } else { - var59 = -0.2712902; - } - } else { - if (input[2] < 0.23170115) { - var59 = -0.10307731; - } else { - var59 = 0.20361973; - } - } - } - } else { - if (input[1] < 670.473) { - if (input[3] < 21.0) { - if (input[2] < 0.25271404) { - var59 = 0.0022162178; - } else { - var59 = -0.21388116; - } - } else { - if (input[1] < 580.8021) { - var59 = 0.21031055; - } else { - var59 = 0.03363816; - } - } - } else { - if (input[7] < 0.0039070696) { - if (input[0] < 632.9928) { - var59 = 0.3682959; - } else { - var59 = -0.032929122; - } - } else { - if (input[3] < 13.0) { - var59 = 0.2303059; - } else { - var59 = 0.019239232; - } - } - } - } - } else { - if (input[5] < 25.146212) { - if (input[3] < 11.0) { - if (input[1] < 147.89758) { - if (input[2] < 0.20118733) { - var59 = -0.0930161; - } else { - var59 = 0.10322026; - } - } else { - if (input[7] < 0.002768994) { - var59 = -0.0240917; - } else { - var59 = -0.23660089; - } - } - } else { - if (input[5] < 19.066538) { - if (input[1] < 345.4552) { - var59 = 0.35948032; - } else { - var59 = 0.07349782; - } - } else { - if (input[1] < 311.82135) { - var59 = -0.057931103; - } else { - var59 = 0.15752232; - } - } - } - } else { - if (input[0] < 415.7414) { - if (input[1] < 140.85828) { - if (input[6] < 0.08433238) { - var59 = 0.048001073; - } else { - var59 = -0.46345004; - } - } else { - if (input[7] < 0.0019291723) { - var59 = -0.1739253; - } else { - var59 = 0.20878156; - } - } - } else { - if (input[4] < 40.86154) { - if (input[2] < 0.24309075) { - var59 = 0.24116863; - } else { - var59 = -0.09870764; - } - } else { - if (input[0] < 451.8147) { - var59 = -0.05575047; - } else { - var59 = 0.099485934; - } - } - } - } - } - } else { - if (input[2] < 0.19949937) { - if (input[2] < 0.17129159) { - if (input[5] < 23.10101) { - if (input[2] < 0.16901255) { - if (input[5] < 22.319084) { - var59 = 0.014208238; - } else { - var59 = 0.14406563; - } - } else { - if (input[5] < 22.098291) { - var59 = 0.09833055; - } else { - var59 = -0.4539296; - } - } - } else { - if (input[0] < 672.7553) { - if (input[0] < 591.9396) { - var59 = -0.017944718; - } else { - var59 = -0.17161791; - } - } else { - var59 = 0.27155423; - } - } - } else { - if (input[7] < 0.0023617237) { - if (input[2] < 0.1785326) { - if (input[6] < 0.057765625) { - var59 = -0.14295126; - } else { - var59 = 0.26315367; - } - } else { - if (input[1] < 235.31873) { - var59 = -0.06838426; - } else { - var59 = 0.11053721; - } - } - } else { - if (input[0] < 628.1736) { - if (input[5] < 19.57885) { - var59 = -0.007546327; - } else { - var59 = -0.25376755; - } - } else { - if (input[6] < 0.06800464) { - var59 = 0.19551967; - } else { - var59 = -0.13514596; - } - } - } - } - } else { - if (input[3] < 16.0) { - if (input[1] < 814.16046) { - if (input[7] < 0.0022020095) { - if (input[6] < 0.07962002) { - var59 = -0.11743393; - } else { - var59 = -0.023948677; - } - } else { - if (input[2] < 0.28529787) { - var59 = -0.07403936; - } else { - var59 = -0.22775914; - } - } - } else { - if (input[0] < 532.6803) { - var59 = 0.3384196; - } else { - var59 = -0.02272224; - } - } - } else { - if (input[1] < 344.88092) { - if (input[0] < 486.46512) { - if (input[1] < 147.89758) { - var59 = 0.17887583; - } else { - var59 = -0.14023209; - } - } else { - if (input[3] < 17.0) { - var59 = -0.06634262; - } else { - var59 = 0.38475832; - } - } - } else { - if (input[0] < 469.4581) { - if (input[5] < 28.108055) { - var59 = 0.19800052; - } else { - var59 = -0.112216994; - } - } else { - if (input[5] < 18.139484) { - var59 = 0.26270133; - } else { - var59 = -0.019992163; - } - } - } - } - } - } - double var60; - if (input[4] < 23.075237) { - if (input[6] < 0.049368083) { - if (input[3] < 6.0) { - if (input[2] < 0.10128081) { - if (input[0] < 423.21143) { - if (input[4] < 3.4118037) { - var60 = 0.20161402; - } else { - var60 = -0.06317397; - } - } else { - if (input[2] < 0.07034141) { - var60 = 0.00043536662; - } else { - var60 = -0.026084473; - } - } - } else { - if (input[6] < 0.042284492) { - if (input[1] < 317.39774) { - var60 = 0.29684678; - } else { - var60 = -0.2589822; - } - } else { - if (input[7] < 0.006589555) { - var60 = -0.028989239; - } else { - var60 = 0.12761697; - } - } - } - } else { - if (input[7] < 0.00513642) { - if (input[3] < 7.0) { - if (input[1] < 118.724884) { - var60 = -0.008131698; - } else { - var60 = 0.09081837; - } - } else { - if (input[4] < 22.134548) { - var60 = 0.22279334; - } else { - var60 = 0.1076928; - } - } - } else { - if (input[1] < 118.724884) { - if (input[1] < 117.759186) { - var60 = 0.0035830557; - } else { - var60 = -0.06744215; - } - } else { - if (input[1] < 139.97156) { - var60 = 0.1269952; - } else { - var60 = 0.00563506; - } - } - } - } - } else { - if (input[5] < 17.826921) { - if (input[2] < 0.104726076) { - var60 = 0.19689903; - } else { - if (input[1] < 118.04906) { - var60 = -0.42893848; - } else { - var60 = 0.033296816; - } - } - } else { - if (input[1] < 351.04474) { - if (input[7] < 0.0027393189) { - if (input[0] < 412.7322) { - var60 = 0.108781405; - } else { - var60 = 0.45362598; - } - } else { - if (input[7] < 0.0057593356) { - var60 = 0.069172956; - } else { - var60 = 0.24346973; - } - } - } else { - var60 = -0.1428434; - } - } - } - } else { - if (input[7] < 0.006533345) { - if (input[1] < 272.0462) { - if (input[1] < 196.52942) { - if (input[1] < 168.27454) { - if (input[1] < 150.89111) { - var60 = -0.000051760602; - } else { - var60 = -0.048857234; - } - } else { - if (input[1] < 171.00562) { - var60 = 0.0983573; - } else { - var60 = 0.005529295; - } - } - } else { - if (input[6] < 0.035672467) { - if (input[1] < 207.02184) { - var60 = 0.006008893; - } else { - var60 = -0.08735394; - } - } else { - if (input[1] < 196.92773) { - var60 = -0.09499909; - } else { - var60 = 0.0012332996; - } - } - } - } else { - if (input[2] < 0.04118097) { - if (input[0] < 619.6026) { - if (input[0] < 596.1116) { - var60 = 0.19818366; - } else { - var60 = -0.24696; - } - } else { - var60 = 0.3479209; - } - } else { - if (input[2] < 0.050450563) { - if (input[5] < 19.125778) { - var60 = 0.22960009; - } else { - var60 = -0.19208896; - } - } else { - if (input[2] < 0.089429066) { - var60 = 0.05385888; - } else { - var60 = 0.0026353595; - } - } - } - } - } else { - if (input[0] < 570.25055) { - if (input[6] < 0.044864837) { - if (input[0] < 465.9689) { - if (input[1] < 235.31873) { - var60 = -0.23951855; - } else { - var60 = -0.4945881; - } - } else { - if (input[3] < 7.0) { - var60 = 0.025941964; - } else { - var60 = -0.12839955; - } - } - } else { - if (input[4] < 29.154097) { - if (input[1] < 121.57103) { - var60 = -0.07415261; - } else { - var60 = 0.05359157; - } - } else { - if (input[6] < 0.05843868) { - var60 = -0.109614514; - } else { - var60 = -0.011636658; - } - } - } - } else { - if (input[5] < 24.673338) { - if (input[7] < 0.008631577) { - if (input[3] < 9.0) { - var60 = 0.08413817; - } else { - var60 = -0.0011824653; - } - } else { - if (input[1] < 1184.6289) { - var60 = -0.032760233; - } else { - var60 = 0.24764127; - } - } - } else { - if (input[5] < 24.812592) { - if (input[0] < 604.5986) { - var60 = -0.04903309; - } else { - var60 = -0.56691486; - } - } else { - if (input[7] < 0.008293989) { - var60 = -0.07665849; - } else { - var60 = 0.060034823; - } - } - } - } - } - } - double var61; - if (input[0] < 403.76456) { - if (input[4] < 28.652704) { - if (input[4] < 27.981726) { - if (input[6] < 0.01815154) { - if (input[7] < 0.017095413) { - var61 = 0.38680255; - } else { - if (input[7] < 0.065982014) { - var61 = -0.08103744; - } else { - var61 = 0.25844145; - } - } - } else { - if (input[1] < 147.89758) { - if (input[6] < 0.05877689) { - var61 = -0.0027282839; - } else { - var61 = 0.17854656; - } - } else { - if (input[5] < 27.11507) { - var61 = 0.0353249; - } else { - var61 = -0.40886113; - } - } - } - } else { - if (input[5] < 22.68546) { - var61 = -0.040897865; - } else { - var61 = -0.43736622; - } - } - } else { - if (input[5] < 18.06236) { - var61 = -0.19752158; - } else { - if (input[7] < 0.009081948) { - if (input[7] < 0.0029307685) { - if (input[7] < 0.0027116358) { - var61 = 0.191721; - } else { - var61 = -0.21646117; - } - } else { - if (input[6] < 0.07021791) { - var61 = 0.06871823; - } else { - var61 = 0.33013502; - } - } - } else { - var61 = -0.09387184; - } - } - } - } else { - if (input[4] < 35.11969) { - if (input[7] < 0.0018289244) { - if (input[5] < 19.301468) { - if (input[1] < 117.759186) { - if (input[4] < 33.613834) { - var61 = -0.10411559; - } else { - var61 = 0.20852627; - } - } else { - if (input[1] < 151.1117) { - var61 = -0.32664448; - } else { - var61 = 0.024964815; - } - } - } else { - if (input[1] < 143.43848) { - if (input[1] < 138.27072) { - var61 = 0.116096266; - } else { - var61 = -0.18642832; - } - } else { - if (input[1] < 199.64316) { - var61 = 0.33625114; - } else { - var61 = 0.0062427456; - } - } - } - } else { - if (input[1] < 367.2591) { - if (input[1] < 350.59753) { - if (input[6] < 0.046756607) { - var61 = -0.001763921; - } else { - var61 = 0.009660959; - } - } else { - if (input[4] < 34.687817) { - var61 = -0.045735966; - } else { - var61 = -0.3448063; - } - } - } else { - if (input[1] < 370.7329) { - if (input[7] < 0.012956531) { - var61 = 0.11831471; - } else { - var61 = -0.14846057; - } - } else { - if (input[4] < 21.723177) { - var61 = 0.09748429; - } else { - var61 = 0.0072233616; - } - } - } - } - } else { - if (input[0] < 480.22372) { - if (input[6] < 0.087597266) { - if (input[4] < 39.656563) { - if (input[2] < 0.20118733) { - var61 = -0.08383811; - } else { - var61 = 0.048263744; - } - } else { - if (input[2] < 0.2088641) { - var61 = -0.042115368; - } else { - var61 = -0.2164323; - } - } - } else { - if (input[0] < 476.04532) { - if (input[5] < 23.403553) { - var61 = 0.08862914; - } else { - var61 = -0.005705222; - } - } else { - if (input[0] < 479.1913) { - var61 = -0.19551663; - } else { - var61 = 0.006567487; - } - } - } - } else { - if (input[6] < 0.059464313) { - if (input[0] < 592.9258) { - if (input[6] < 0.033188343) { - var61 = 0.072237544; - } else { - var61 = -0.07593114; - } - } else { - if (input[0] < 599.1849) { - var61 = 0.109703444; - } else { - var61 = -0.003421008; - } - } - } else { - if (input[4] < 45.20362) { - if (input[2] < 0.14155722) { - var61 = 0.39130902; - } else { - var61 = 0.020941144; - } - } else { - if (input[5] < 30.710585) { - var61 = -0.012106865; - } else { - var61 = 0.14978327; - } - } - } - } - } - } - double var62; - if (input[1] < 79.678955) { - if (input[1] < 77.55432) { - if (input[1] < 76.44141) { - if (input[7] < 0.024472637) { - if (input[7] < 0.020403687) { - if (input[7] < 0.0046316604) { - var62 = -0.013471997; - } else { - var62 = 0.007751962; - } - } else { - if (input[5] < 22.462898) { - var62 = -0.019104954; - } else { - var62 = 0.16241476; - } - } - } else { - if (input[4] < 7.9895897) { - if (input[6] < 0.0067773927) { - var62 = -0.036812276; - } else { - var62 = 0.06272035; - } - } else { - if (input[6] < 0.009366361) { - var62 = -0.1329204; - } else { - var62 = -0.037889574; - } - } - } - } else { - if (input[4] < 25.02411) { - if (input[0] < 549.8694) { - if (input[2] < 0.07888465) { - var62 = -0.10297218; - } else { - var62 = 0.40387675; - } - } else { - if (input[2] < 0.080014125) { - var62 = 0.43771848; - } else { - var62 = -0.0914926; - } - } - } else { - if (input[5] < 15.711394) { - if (input[4] < 29.256954) { - var62 = -0.051910117; - } else { - var62 = 0.39795762; - } - } else { - if (input[0] < 673.89215) { - var62 = -0.11717718; - } else { - var62 = 0.22528256; - } - } - } - } - } else { - if (input[2] < 0.08340263) { - if (input[1] < 78.87378) { - if (input[3] < 6.0) { - if (input[7] < 0.0050104572) { - var62 = -0.1092003; - } else { - var62 = 0.2632397; - } - } else { - if (input[5] < 29.440952) { - var62 = -0.024653608; - } else { - var62 = 0.38215998; - } - } - } else { - if (input[4] < 14.482901) { - if (input[6] < 0.017456274) { - var62 = -0.0788535; - } else { - var62 = 0.2473345; - } - } else { - if (input[0] < 658.2878) { - var62 = -0.1507811; - } else { - var62 = 0.07836404; - } - } - } - } else { - if (input[3] < 6.0) { - if (input[0] < 546.2918) { - if (input[4] < 24.686386) { - var62 = 0.07872067; - } else { - var62 = -0.22759135; - } - } else { - if (input[5] < 23.514431) { - var62 = 0.30295083; - } else { - var62 = -0.21387623; - } - } - } else { - if (input[2] < 0.089429066) { - if (input[7] < 0.0024513172) { - var62 = -0.00989905; - } else { - var62 = -0.24215007; - } - } else { - if (input[2] < 0.13830733) { - var62 = -0.06514634; - } else { - var62 = -0.21948467; - } - } - } - } - } - } else { - if (input[1] < 117.295654) { - if (input[3] < 6.0) { - if (input[0] < 528.44965) { - if (input[1] < 115.47824) { - if (input[7] < 0.010345605) { - var62 = -0.00856177; - } else { - var62 = -0.077031285; - } - } else { - if (input[0] < 476.04532) { - var62 = -0.18386573; - } else { - var62 = 0.0021711574; - } - } - } else { - if (input[2] < 0.13220453) { - if (input[5] < 33.48466) { - var62 = 0.034142405; - } else { - var62 = -0.31262457; - } - } else { - if (input[4] < 35.71706) { - var62 = -0.04199385; - } else { - var62 = -0.2580354; - } - } - } - } else { - if (input[1] < 96.294495) { - if (input[0] < 454.6105) { - if (input[4] < 26.84426) { - var62 = 0.244401; - } else { - var62 = 0.60223997; - } - } else { - if (input[5] < 24.108562) { - var62 = 0.041383397; - } else { - var62 = -0.15132762; - } - } - } else { - if (input[3] < 7.0) { - if (input[6] < 0.04792555) { - var62 = 0.21848759; - } else { - var62 = 0.37876704; - } - } else { - if (input[7] < 0.0055812276) { - var62 = 0.17508635; - } else { - var62 = -0.054398343; - } - } - } - } - } else { - if (input[4] < 12.506829) { - if (input[6] < 0.022677388) { - if (input[0] < 435.46625) { - if (input[0] < 409.8705) { - var62 = -0.08803249; - } else { - var62 = 0.17119128; - } - } else { - if (input[5] < 22.871712) { - var62 = 0.036908053; - } else { - var62 = -0.021793377; - } - } - } else { - if (input[7] < 0.065982014) { - if (input[6] < 0.024297172) { - var62 = 0.10663754; - } else { - var62 = 0.257148; - } - } else { - var62 = -0.20365453; - } - } - } else { - if (input[1] < 141.24573) { - if (input[5] < 29.08108) { - if (input[1] < 139.97156) { - var62 = -0.008689757; - } else { - var62 = -0.05202953; - } - } else { - if (input[7] < 0.004288183) { - var62 = 0.09214795; - } else { - var62 = 0.0024334283; - } - } - } else { - if (input[1] < 147.89758) { - if (input[1] < 143.84497) { - var62 = 0.013694882; - } else { - var62 = 0.109882005; - } - } else { - if (input[4] < 12.786485) { - var62 = -0.14396876; - } else { - var62 = -0.0006513435; - } - } - } - } - } - } - double var63; - if (input[6] < 0.028205514) { - if (input[2] < 0.060454607) { - if (input[6] < 0.022677388) { - if (input[2] < 0.04971838) { - if (input[1] < 224.4739) { - if (input[1] < 202.09811) { - var63 = -0.0014923213; - } else { - var63 = -0.16035827; - } - } else { - if (input[2] < 0.04891324) { - var63 = 0.041511577; - } else { - var63 = -0.18607253; - } - } - } else { - if (input[6] < 0.020067545) { - if (input[4] < 15.318433) { - var63 = 0.08539418; - } else { - var63 = -0.16704538; - } - } else { - if (input[6] < 0.022136807) { - var63 = -0.03194858; - } else { - var63 = 0.0325746; - } - } - } - } else { - if (input[7] < 0.086682595) { - if (input[5] < 14.48199) { - if (input[1] < 78.383545) { - var63 = 0.24805492; - } else { - var63 = -0.020288408; - } - } else { - if (input[1] < 53.395752) { - var63 = -0.023112448; - } else { - var63 = 0.031271502; - } - } - } else { - if (input[1] < 137.21216) { - var63 = -0.29884002; - } else { - var63 = -0.017147522; - } - } - } - } else { - if (input[7] < 0.002235593) { - if (input[1] < 173.7774) { - if (input[3] < 6.0) { - if (input[4] < 33.99941) { - var63 = 0.38380295; - } else { - var63 = -0.058723476; - } - } else { - if (input[2] < 0.06679523) { - var63 = -0.30944893; - } else { - var63 = 0.051779795; - } - } - } else { - if (input[4] < 42.829258) { - if (input[4] < 34.687817) { - var63 = 0.06602002; - } else { - var63 = 0.41756663; - } - } else { - var63 = -0.021287564; - } - } - } else { - if (input[4] < 16.582067) { - if (input[7] < 0.0126157) { - if (input[0] < 562.22656) { - var63 = -0.084336385; - } else { - var63 = 0.16931722; - } - } else { - if (input[1] < 118.04906) { - var63 = -0.043254342; - } else { - var63 = 0.105109215; - } - } - } else { - if (input[1] < 53.395752) { - if (input[5] < 23.63265) { - var63 = 0.25750518; - } else { - var63 = -0.07959588; - } - } else { - if (input[0] < 596.1116) { - var63 = -0.07755081; - } else { - var63 = -0.019206952; - } - } - } - } - } - } else { - if (input[2] < 0.07778871) { - if (input[3] < 6.0) { - if (input[7] < 0.005262675) { - if (input[4] < 19.729412) { - if (input[7] < 0.004288183) { - var63 = -0.007952329; - } else { - var63 = -0.1840242; - } - } else { - if (input[5] < 24.029337) { - var63 = -0.03338135; - } else { - var63 = 0.027471215; - } - } - } else { - if (input[5] < 14.960444) { - if (input[0] < 442.55496) { - var63 = 0.25905818; - } else { - var63 = -0.22627814; - } - } else { - if (input[7] < 0.013135703) { - var63 = 0.050661713; - } else { - var63 = -0.03277894; - } - } - } - } else { - if (input[1] < 255.84222) { - if (input[0] < 541.9823) { - if (input[7] < 0.015875712) { - var63 = -0.013815294; - } else { - var63 = 0.13684304; - } - } else { - if (input[0] < 545.38477) { - var63 = 0.32318902; - } else { - var63 = 0.06290428; - } - } - } else { - if (input[5] < 26.584965) { - if (input[3] < 7.0) { - var63 = 0.30045745; - } else { - var63 = 0.103951596; - } - } else { - if (input[0] < 534.41846) { - var63 = 0.090678014; - } else { - var63 = -0.16006204; - } - } - } - } - } else { - if (input[6] < 0.031790443) { - if (input[7] < 0.01122595) { - if (input[0] < 685.8291) { - if (input[5] < 21.40085) { - var63 = -0.017630352; - } else { - var63 = -0.092146255; - } - } else { - if (input[2] < 0.08508021) { - var63 = 0.32591745; - } else { - var63 = 0.012712534; - } - } - } else { - if (input[0] < 622.0128) { - if (input[0] < 429.60077) { - var63 = -0.0919678; - } else { - var63 = 0.1977927; - } - } else { - if (input[2] < 0.088344395) { - var63 = -0.44555387; - } else { - var63 = 0.17657822; - } - } - } - } else { - if (input[7] < 0.017428085) { - if (input[4] < 15.7178545) { - if (input[7] < 0.014142963) { - var63 = 0.22478439; - } else { - var63 = -0.0770227; - } - } else { - if (input[1] < 56.49115) { - var63 = -0.03223674; - } else { - var63 = 0.0018217574; - } - } - } else { - if (input[4] < 17.552475) { - if (input[4] < 16.422623) { - var63 = -0.078916475; - } else { - var63 = 0.27849734; - } - } else { - if (input[2] < 0.087803364) { - var63 = -0.2072477; - } else { - var63 = -0.053660486; - } - } - } - } - } - } - double var64; - if (input[4] < 3.4118037) { - if (input[0] < 579.40393) { - if (input[0] < 519.94336) { - if (input[0] < 499.65594) { - if (input[0] < 451.8147) { - if (input[6] < 0.0017816098) { - var64 = -0.07078048; - } else { - var64 = 0.19006024; - } - } else { - if (input[0] < 471.70917) { - var64 = -0.19090553; - } else { - var64 = 0.00394083; - } - } - } else { - if (input[0] < 505.03424) { - var64 = 0.38008675; - } else { - if (input[0] < 507.74713) { - var64 = -0.22355042; - } else { - var64 = 0.20237067; - } - } - } - } else { - if (input[0] < 525.8405) { - if (input[5] < 19.932076) { - var64 = -0.49389264; - } else { - var64 = -0.09200591; - } - } else { - if (input[0] < 530.9707) { - if (input[0] < 527.5794) { - var64 = 0.04248708; - } else { - var64 = 0.31654674; - } - } else { - if (input[5] < 20.215801) { - var64 = 0.041110598; - } else { - var64 = -0.13735199; - } - } - } - } - } else { - if (input[5] < 27.29118) { - if (input[5] < 22.871712) { - if (input[5] < 21.553902) { - if (input[5] < 19.932076) { - var64 = 0.22202937; - } else { - var64 = 0.07112801; - } - } else { - if (input[5] < 21.785055) { - var64 = -0.3784283; - } else { - var64 = 0.069375366; - } - } - } else { - if (input[1] < 53.395752) { - var64 = 0.34681472; - } else { - var64 = 0.088633366; - } - } - } else { - var64 = -0.15728635; - } - } - } else { - if (input[6] < 0.013503123) { - if (input[2] < 0.030371785) { - if (input[3] < 9.0) { - if (input[0] < 444.15787) { - if (input[5] < 24.362743) { - var64 = -0.10590963; - } else { - var64 = 0.010995456; - } - } else { - if (input[5] < 27.997742) { - var64 = 0.0023287216; - } else { - var64 = -0.05114167; - } - } - } else { - if (input[0] < 544.61206) { - if (input[4] < 13.053429) { - var64 = 0.22275275; - } else { - var64 = -0.18993574; - } - } else { - if (input[5] < 17.986216) { - var64 = 0.029552922; - } else { - var64 = 0.3200149; - } - } - } - } else { - if (input[0] < 582.26196) { - if (input[5] < 18.437906) { - if (input[0] < 469.4581) { - var64 = 0.09052708; - } else { - var64 = -0.22489105; - } - } else { - if (input[1] < 229.68715) { - var64 = -0.011435296; - } else { - var64 = 0.17898706; - } - } - } else { - if (input[1] < 311.82135) { - if (input[2] < 0.0316215) { - var64 = -0.18784812; - } else { - var64 = -0.0340976; - } - } else { - if (input[7] < 0.008989412) { - var64 = -0.020182883; - } else { - var64 = -0.71976185; - } - } - } - } - } else { - if (input[4] < 9.192085) { - if (input[0] < 487.4292) { - if (input[7] < 0.026389621) { - if (input[5] < 24.952822) { - var64 = -0.12788798; - } else { - var64 = 0.18287677; - } - } else { - if (input[2] < 0.032770157) { - var64 = 0.09056791; - } else { - var64 = 0.27521017; - } - } - } else { - if (input[0] < 505.03424) { - if (input[1] < 117.295654) { - var64 = -0.3095373; - } else { - var64 = -0.008580688; - } - } else { - if (input[0] < 519.08496) { - var64 = 0.17474696; - } else { - var64 = -0.04287262; - } - } - } - } else { - if (input[2] < 0.033970356) { - if (input[3] < 7.0) { - if (input[0] < 649.94415) { - var64 = 0.0066622; - } else { - var64 = 0.119476; - } - } else { - if (input[1] < 118.29285) { - var64 = 0.08171298; - } else { - var64 = 0.26669976; - } - } - } else { - if (input[6] < 0.016361425) { - if (input[1] < 227.30066) { - var64 = -0.07806671; - } else { - var64 = 0.04416492; - } - } else { - if (input[2] < 0.04118097) { - var64 = 0.04987487; - } else { - var64 = -0.00031266254; - } - } - } - } - } - } - double var65; - if (input[2] < 0.32127088) { - if (input[3] < 15.0) { - if (input[1] < 637.6124) { - if (input[4] < 43.929493) { - if (input[6] < 0.07648402) { - if (input[4] < 31.022459) { - var65 = 0.0016738808; - } else { - var65 = -0.0069212443; - } - } else { - if (input[2] < 0.17982149) { - var65 = 0.4419799; - } else { - var65 = 0.027989151; - } - } - } else { - if (input[5] < 20.617947) { - if (input[5] < 19.882984) { - var65 = -0.009383805; - } else { - var65 = 0.104881845; - } - } else { - if (input[5] < 20.922693) { - var65 = -0.2020852; - } else { - var65 = -0.023340806; - } - } - } - } else { - if (input[5] < 26.65595) { - if (input[5] < 25.396322) { - if (input[5] < 24.719372) { - var65 = 0.03862087; - } else { - var65 = 0.3085836; - } - } else { - if (input[7] < 0.0046316604) { - var65 = 0.016647507; - } else { - var65 = -0.34778377; - } - } - } else { - if (input[7] < 0.0036698799) { - if (input[0] < 477.06348) { - var65 = -0.15947014; - } else { - var65 = 0.15001893; - } - } else { - if (input[3] < 14.0) { - var65 = 0.28288284; - } else { - var65 = 0.1261649; - } - } - } - } - } else { - if (input[7] < 0.0047754645) { - if (input[6] < 2.5102012) { - if (input[1] < 199.64316) { - if (input[0] < 532.6803) { - var65 = 0.1037426; - } else { - var65 = -0.26225227; - } - } else { - if (input[4] < 41.570618) { - var65 = 0.122177266; - } else { - var65 = 0.037054464; - } - } - } else { - if (input[4] < 1054.0984) { - var65 = -0.42238832; - } else { - if (input[3] < 18.0) { - var65 = -0.1983656; - } else { - var65 = 0.1429193; - } - } - } - } else { - if (input[5] < 19.831963) { - if (input[2] < 0.15654445) { - var65 = 0.2780812; - } else { - if (input[6] < 0.053631432) { - var65 = -0.4058983; - } else { - var65 = 0.2354541; - } - } - } else { - if (input[7] < 0.028802285) { - if (input[5] < 31.63552) { - var65 = -0.018951198; - } else { - var65 = -0.30228832; - } - } else { - var65 = 0.24846812; - } - } - } - } - } else { - if (input[6] < 2.5102012) { - if (input[4] < 67.75224) { - if (input[3] < 17.0) { - if (input[1] < 145.6225) { - var65 = 0.20444447; - } else { - if (input[5] < 23.215124) { - var65 = 0.033835743; - } else { - var65 = -0.31159562; - } - } - } else { - if (input[1] < 1047.1123) { - if (input[3] < 22.0) { - var65 = 0.062030893; - } else { - var65 = 0.3338688; - } - } else { - if (input[0] < 484.40204) { - var65 = 0.08004348; - } else { - var65 = -0.22197154; - } - } - } - } else { - if (input[3] < 65.0) { - if (input[3] < 29.0) { - if (input[0] < 453.18805) { - var65 = -0.018072374; - } else { - var65 = -0.29624593; - } - } else { - if (input[1] < 1184.6289) { - var65 = 0.08807733; - } else { - var65 = -0.23507158; - } - } - } else { - if (input[5] < 24.27795) { - var65 = 0.26012945; - } else { - var65 = 0.035891652; - } - } - } - } else { - if (input[0] < 451.8147) { - if (input[0] < 423.21143) { - var65 = 0.05741104; - } else { - var65 = -0.2543678; - } - } else { - if (input[0] < 512.96185) { - if (input[5] < 24.320927) { - var65 = 0.40503904; - } else { - var65 = 0.1202626; - } - } else { - if (input[0] < 554.3122) { - if (input[3] < 9.0) { - var65 = -0.25367948; - } else { - var65 = -0.020421889; - } - } else { - if (input[0] < 655.90375) { - var65 = 0.082943484; - } else { - var65 = 0.34865135; - } - } - } - } - } - } - double var66; - if (input[1] < 191.00214) { - if (input[1] < 173.5393) { - if (input[1] < 171.9599) { - if (input[3] < 14.0) { - if (input[1] < 171.00562) { - if (input[1] < 168.27454) { - var66 = -0.0021088324; - } else { - var66 = 0.07418068; - } - } else { - if (input[6] < 0.029516635) { - var66 = -0.07283786; - } else { - var66 = 0.0040976233; - } - } - } else { - if (input[7] < 0.003726883) { - if (input[7] < 0.0027962627) { - var66 = 0.15979266; - } else { - var66 = -0.23619623; - } - } else { - var66 = 0.2848209; - } - } - } else { - if (input[5] < 17.90769) { - if (input[5] < 14.48199) { - if (input[5] < 13.509364) { - var66 = 0.22644709; - } else { - var66 = -0.17047973; - } - } else { - if (input[4] < 15.7178545) { - var66 = 0.07010182; - } else { - var66 = 0.41409966; - } - } - } else { - if (input[4] < 34.82185) { - if (input[4] < 26.937609) { - var66 = 0.05327929; - } else { - var66 = 0.30013624; - } - } else { - if (input[4] < 35.880825) { - var66 = -0.35127032; - } else { - var66 = 0.005041189; - } - } - } - } - } else { - if (input[7] < 0.0034446886) { - if (input[5] < 21.40085) { - if (input[7] < 0.0032761313) { - if (input[2] < 0.1407783) { - var66 = -0.03278018; - } else { - var66 = -0.14347945; - } - } else { - if (input[5] < 20.617947) { - var66 = 0.2613393; - } else { - var66 = -0.2180201; - } - } - } else { - if (input[0] < 440.8873) { - if (input[0] < 429.60077) { - var66 = -0.03469416; - } else { - var66 = -0.35999948; - } - } else { - if (input[0] < 564.8027) { - var66 = 0.0903614; - } else { - var66 = 0.0033047998; - } - } - } - } else { - if (input[2] < 0.13074243) { - if (input[4] < 22.899303) { - if (input[2] < 0.088344395) { - var66 = -0.044982232; - } else { - var66 = -0.18359828; - } - } else { - if (input[0] < 523.36316) { - var66 = 0.082213484; - } else { - var66 = -0.017276745; - } - } - } else { - if (input[5] < 17.667837) { - if (input[5] < 16.674982) { - var66 = -0.081159055; - } else { - var66 = 0.3104631; - } - } else { - if (input[4] < 26.107292) { - var66 = -0.49150628; - } else { - var66 = -0.16231412; - } - } - } - } - } - } else { - if (input[1] < 193.68164) { - if (input[0] < 569.34753) { - if (input[2] < 0.23503518) { - if (input[4] < 26.011915) { - if (input[7] < 0.005712156) { - var66 = -0.0065472354; - } else { - var66 = 0.23244251; - } - } else { - if (input[5] < 23.786865) { - var66 = 0.41273022; - } else { - var66 = 0.17379378; - } - } - } else { - var66 = -0.23011757; - } - } else { - if (input[3] < 8.0) { - if (input[4] < 29.657753) { - if (input[7] < 0.0041255937) { - var66 = 0.26731533; - } else { - var66 = -0.016088774; - } - } else { - if (input[7] < 0.0030364501) { - var66 = -0.005704924; - } else { - var66 = -0.4236543; - } - } - } else { - if (input[7] < 0.008130896) { - if (input[7] < 0.0017720697) { - var66 = -0.06939081; - } else { - var66 = 0.27535325; - } - } else { - var66 = -0.1733881; - } - } - } - } else { - if (input[4] < 26.376) { - if (input[7] < 0.003937713) { - if (input[5] < 22.426456) { - if (input[0] < 565.6369) { - var66 = -0.09647676; - } else { - var66 = 0.1270356; - } - } else { - if (input[1] < 311.82135) { - var66 = 0.11056483; - } else { - var66 = 0.39120793; - } - } - } else { - if (input[6] < 0.041724283) { - if (input[0] < 672.7553) { - var66 = -0.00003869596; - } else { - var66 = 0.079296805; - } - } else { - if (input[5] < 23.366688) { - var66 = 0.1287482; - } else { - var66 = -0.011842569; - } - } - } - } else { - if (input[6] < 0.046756607) { - if (input[1] < 252.84729) { - if (input[5] < 11.839297) { - var66 = 0.2963162; - } else { - var66 = -0.039737906; - } - } else { - if (input[7] < 0.0049318275) { - var66 = 0.008741903; - } else { - var66 = -0.03612444; - } - } - } else { - if (input[0] < 507.74713) { - if (input[6] < 0.081781514) { - var66 = -0.0314299; - } else { - var66 = 0.035652056; - } - } else { - if (input[4] < 33.7453) { - var66 = 0.053079158; - } else { - var66 = 0.002024967; - } - } - } - } - } - } - double var67; - if (input[3] < 74.0) { - if (input[3] < 59.0) { - if (input[3] < 52.0) { - if (input[2] < 0.27443242) { - if (input[3] < 18.0) { - if (input[4] < 7.31554) { - var67 = 0.0189635; - } else { - var67 = -0.00041919883; - } - } else { - if (input[5] < 22.351292) { - var67 = 0.1047398; - } else { - var67 = 0.0084274355; - } - } - } else { - if (input[1] < 149.04504) { - if (input[7] < 0.0017720697) { - var67 = 0.0051289103; - } else { - var67 = 0.24538027; - } - } else { - if (input[3] < 26.0) { - var67 = -0.070028804; - } else { - var67 = 0.034475066; - } - } - } - } else { - if (input[5] < 24.27795) { - var67 = 0.29402286; - } else { - if (input[3] < 54.0) { - var67 = -0.1391423; - } else { - var67 = 0.21910702; - } - } - } - } else { - if (input[4] < 38.23957) { - if (input[6] < 0.052663703) { - var67 = -0.04003029; - } else { - if (input[6] < 0.060177866) { - if (input[2] < 0.23503518) { - var67 = -0.5899374; - } else { - var67 = -0.13071913; - } - } else { - if (input[3] < 68.0) { - var67 = 0.19142978; - } else { - var67 = -0.42943466; - } - } - } - } else { - if (input[2] < 0.32127088) { - if (input[2] < 0.23885596) { - var67 = 0.002859501; - } else { - var67 = 0.22004761; - } - } else { - if (input[0] < 532.6803) { - var67 = -0.27543673; - } else { - var67 = 0.06104931; - } - } - } - } - } else { - if (input[5] < 33.48466) { - if (input[1] < 2290.354) { - if (input[1] < 1917.9291) { - if (input[2] < 0.25271404) { - if (input[7] < 0.019397447) { - var67 = 0.16032268; - } else { - var67 = -0.31001306; - } - } else { - var67 = 0.274853; - } - } else { - if (input[2] < 0.32127088) { - if (input[3] < 86.0) { - var67 = 0.011724091; - } else { - var67 = 0.18632844; - } - } else { - if (input[7] < 0.012442105) { - var67 = 0.0738536; - } else { - var67 = -0.47825524; - } - } - } - } else { - if (input[3] < 89.0) { - var67 = 0.08926112; - } else { - var67 = 0.25922266; - } - } - } else { - if (input[7] < 0.028802285) { - var67 = -0.255138; - } else { - var67 = -0.028567372; - } - } - } - double var68; - if (input[5] < 10.757549) { - if (input[4] < 10.558617) { - if (input[6] < 0.0051328884) { - var68 = -0.010509796; - } else { - var68 = 0.25933167; - } - } else { - if (input[7] < 0.01615975) { - if (input[2] < 0.1089797) { - if (input[4] < 23.34669) { - if (input[4] < 19.483055) { - var68 = -0.018503435; - } else { - var68 = 0.20578901; - } - } else { - if (input[4] < 26.107292) { - var68 = -0.25113627; - } else { - var68 = 0.07886773; - } - } - } else { - if (input[1] < 78.64492) { - if (input[0] < 541.9823) { - var68 = 0.006469719; - } else { - var68 = -0.19590911; - } - } else { - if (input[2] < 0.12225413) { - var68 = 0.4892869; - } else { - var68 = 0.060197026; - } - } - } - } else { - if (input[4] < 13.053429) { - var68 = -0.31783292; - } else { - if (input[0] < 592.9258) { - var68 = 0.05523611; - } else { - var68 = -0.118716024; - } - } - } - } - } else { - if (input[1] < 79.2583) { - if (input[2] < 0.16901255) { - if (input[1] < 78.21661) { - if (input[4] < 25.28896) { - if (input[2] < 0.1030972) { - var68 = -0.0047067595; - } else { - var68 = -0.17102236; - } - } else { - if (input[6] < 0.01848785) { - var68 = 0.13853051; - } else { - var68 = 0.014122482; - } - } - } else { - if (input[2] < 0.14155722) { - if (input[3] < 6.0) { - var68 = 0.021291438; - } else { - var68 = -0.04836131; - } - } else { - if (input[5] < 25.194532) { - var68 = -0.26045382; - } else { - var68 = -0.0028986556; - } - } - } - } else { - if (input[2] < 0.20118733) { - if (input[5] < 27.572266) { - var68 = -0.2514069; - } else { - var68 = -0.014418073; - } - } else { - if (input[5] < 22.210117) { - if (input[5] < 18.505344) { - var68 = 0.032897294; - } else { - var68 = -0.18609959; - } - } else { - var68 = 0.08493858; - } - } - } - } else { - if (input[1] < 117.295654) { - if (input[3] < 6.0) { - if (input[0] < 528.44965) { - if (input[7] < 0.065982014) { - var68 = -0.03998142; - } else { - var68 = 0.19184653; - } - } else { - if (input[2] < 0.008977376) { - var68 = -0.20823282; - } else { - var68 = 0.022240626; - } - } - } else { - if (input[1] < 96.294495) { - if (input[0] < 447.375) { - var68 = 0.2887497; - } else { - var68 = -0.0004018809; - } - } else { - if (input[3] < 8.0) { - var68 = 0.16345415; - } else { - var68 = -0.065435395; - } - } - } - } else { - if (input[1] < 121.57103) { - if (input[3] < 6.0) { - if (input[1] < 118.724884) { - var68 = 0.09611152; - } else { - var68 = -0.050713997; - } - } else { - if (input[1] < 118.724884) { - var68 = -0.062533885; - } else { - var68 = 0.09343729; - } - } - } else { - if (input[1] < 137.21216) { - if (input[2] < 0.18529916) { - var68 = 0.12449745; - } else { - var68 = -0.06918435; - } - } else { - if (input[0] < 445.85364) { - var68 = -0.016311156; - } else { - var68 = 0.0022925474; - } - } - } - } - } - } - double var69; - if (input[4] < 29.050934) { - if (input[6] < 0.0529048) { - if (input[3] < 12.0) { - if (input[7] < 0.0040295073) { - if (input[3] < 8.0) { - if (input[1] < 141.24573) { - var69 = -0.010586538; - } else { - var69 = 0.025693234; - } - } else { - if (input[7] < 0.0036698799) { - var69 = 0.16489398; - } else { - var69 = 0.007665367; - } - } - } else { - if (input[4] < 21.723177) { - if (input[7] < 0.004320392) { - var69 = 0.103472345; - } else { - var69 = 0.001473681; - } - } else { - if (input[1] < 55.822754) { - var69 = 0.04462321; - } else { - var69 = -0.015542025; - } - } - } - } else { - if (input[7] < 0.0079014255) { - if (input[5] < 26.446224) { - if (input[5] < 22.283722) { - var69 = 0.03858668; - } else { - var69 = 0.22062373; - } - } else { - if (input[3] < 14.0) { - var69 = -0.20357691; - } else { - var69 = 0.1136489; - } - } - } else { - if (input[4] < 25.02411) { - if (input[2] < 0.061130285) { - var69 = -0.16979352; - } else { - var69 = 0.11673664; - } - } else { - if (input[5] < 23.327835) { - var69 = 0.074716754; - } else { - var69 = -0.26721674; - } - } - } - } - } else { - if (input[3] < 9.0) { - if (input[0] < 415.7414) { - if (input[6] < 0.056304816) { - if (input[4] < 26.469646) { - var69 = -0.25019243; - } else { - var69 = 0.13766403; - } - } else { - if (input[1] < 147.89758) { - var69 = 0.06354862; - } else { - var69 = -0.21383703; - } - } - } else { - if (input[4] < 23.794575) { - if (input[3] < 6.0) { - var69 = 0.39397335; - } else { - var69 = 0.11717645; - } - } else { - if (input[6] < 0.06442285) { - var69 = 0.030590402; - } else { - var69 = 0.217112; - } - } - } - } else { - if (input[7] < 0.0060030525) { - if (input[5] < 24.626286) { - if (input[6] < 0.056304816) { - var69 = 0.05427379; - } else { - var69 = 0.22972381; - } - } else { - if (input[5] < 25.447344) { - var69 = -0.45740277; - } else { - var69 = 0.049731914; - } - } - } else { - if (input[3] < 14.0) { - var69 = 0.3031324; - } else { - if (input[5] < 25.999264) { - var69 = 0.19838335; - } else { - var69 = -0.14276803; - } - } - } - } - } - } else { - if (input[0] < 406.91656) { - if (input[2] < 0.18115747) { - if (input[5] < 21.47956) { - if (input[5] < 20.121521) { - var69 = 0.10050667; - } else { - var69 = -0.20200036; - } - } else { - if (input[1] < 115.16882) { - var69 = 0.021686066; - } else { - if (input[6] < 0.064966485) { - var69 = 0.08348653; - } else { - var69 = 0.3208082; - } - } - } - } else { - if (input[4] < 31.694513) { - if (input[2] < 0.18675008) { - var69 = -0.52985126; - } else { - var69 = 0.07247174; - } - } else { - if (input[0] < 399.83472) { - if (input[3] < 7.0) { - var69 = -0.21898036; - } else { - var69 = 0.13441737; - } - } else { - if (input[5] < 26.65595) { - var69 = 0.26064932; - } else { - var69 = -0.05750776; - } - } - } - } - } else { - if (input[0] < 447.375) { - if (input[4] < 29.757948) { - if (input[0] < 420.89536) { - if (input[1] < 143.43848) { - var69 = 0.15765497; - } else { - var69 = -0.29621807; - } - } else { - if (input[0] < 437.31543) { - var69 = 0.2590212; - } else { - var69 = 0.008015374; - } - } - } else { - if (input[6] < 0.06800464) { - if (input[6] < 0.043191366) { - var69 = 0.1200084; - } else { - var69 = -0.13117486; - } - } else { - if (input[4] < 31.920088) { - var69 = 0.11357369; - } else { - var69 = -0.030990096; - } - } - } - } else { - if (input[2] < 0.076109886) { - if (input[3] < 13.0) { - if (input[1] < 202.09811) { - var69 = 0.039776165; - } else { - var69 = -0.03968232; - } - } else { - var69 = 0.40877783; - } - } else { - if (input[6] < 0.041724283) { - if (input[2] < 0.11706096) { - var69 = -0.018010361; - } else { - var69 = -0.099545814; - } - } else { - if (input[7] < 0.006589555) { - var69 = 0.0011987119; - } else { - var69 = -0.032983862; - } - } - } - } - } - } - double var70; - if (input[3] < 9.0) { - if (input[1] < 421.82605) { - if (input[4] < 25.647543) { - if (input[2] < 0.12643456) { - if (input[3] < 6.0) { - if (input[6] < 0.05220808) { - var70 = -0.005515517; - } else { - var70 = 0.10633834; - } - } else { - if (input[7] < 0.0040931404) { - var70 = 0.05270242; - } else { - var70 = 0.001674171; - } - } - } else { - if (input[5] < 21.044563) { - if (input[2] < 0.12925828) { - var70 = 0.18614903; - } else { - var70 = -0.15101121; - } - } else { - if (input[7] < 0.0038463692) { - var70 = -0.06662452; - } else { - var70 = 0.13556126; - } - } - } - } else { - if (input[5] < 25.88462) { - if (input[1] < 370.7329) { - if (input[5] < 21.47956) { - var70 = -0.0020669403; - } else { - var70 = -0.016412184; - } - } else { - if (input[7] < 0.0066440776) { - var70 = -0.09936605; - } else { - var70 = 0.2287257; - } - } - } else { - if (input[2] < 0.06556158) { - if (input[6] < 0.02348538) { - var70 = 0.015769836; - } else { - var70 = 0.14291249; - } - } else { - if (input[2] < 0.15468198) { - var70 = -0.011758566; - } else { - var70 = 0.03476615; - } - } - } - } - } else { - if (input[4] < 31.580933) { - if (input[7] < 0.004189696) { - if (input[0] < 445.85364) { - var70 = -0.06723916; - } else { - if (input[0] < 628.1736) { - var70 = 0.3267888; - } else { - var70 = 0.053727727; - } - } - } else { - if (input[4] < 26.84426) { - if (input[2] < 0.04207915) { - var70 = -0.13432007; - } else { - var70 = 0.120669074; - } - } else { - if (input[0] < 636.6657) { - var70 = -0.12237124; - } else { - var70 = 0.24147666; - } - } - } - } else { - if (input[6] < 0.05493398) { - if (input[7] < 0.0023011367) { - var70 = 0.15600164; - } else { - if (input[4] < 36.2053) { - var70 = -0.09255941; - } else { - var70 = -0.31976253; - } - } - } else { - if (input[6] < 0.060562886) { - if (input[1] < 460.6717) { - var70 = 0.10163665; - } else { - var70 = 0.32610947; - } - } else { - if (input[3] < 7.0) { - var70 = 0.21023296; - } else { - var70 = -0.022644013; - } - } - } - } - } - } else { - if (input[4] < 43.352867) { - if (input[7] < 0.0025999527) { - if (input[4] < 35.880825) { - if (input[1] < 151.1117) { - if (input[7] < 0.002544325) { - var70 = 0.15318967; - } else { - var70 = -0.23899879; - } - } else { - if (input[1] < 196.52942) { - var70 = 0.42625546; - } else { - var70 = 0.12379425; - } - } - } else { - if (input[0] < 505.92896) { - if (input[1] < 348.1612) { - var70 = -0.014726834; - } else { - var70 = -0.23670618; - } - } else { - if (input[7] < 0.0022685162) { - var70 = 0.16609381; - } else { - var70 = 0.03959856; - } - } - } - } else { - if (input[0] < 587.9709) { - if (input[6] < 0.063917145) { - if (input[4] < 35.880825) { - var70 = -0.007001025; - } else { - var70 = -0.06903145; - } - } else { - if (input[2] < 0.19949937) { - var70 = 0.08472176; - } else { - var70 = 0.00040645548; - } - } - } else { - if (input[4] < 16.582067) { - if (input[6] < 0.01848785) { - var70 = 0.043806188; - } else { - var70 = 0.2770887; - } - } else { - if (input[0] < 688.42847) { - var70 = 0.016061429; - } else { - var70 = 0.2044483; - } - } - } - } - } else { - if (input[6] < 0.06551247) { - if (input[0] < 610.1273) { - if (input[1] < 196.52942) { - if (input[3] < 11.0) { - var70 = -0.10358627; - } else { - var70 = 0.42625323; - } - } else { - if (input[0] < 539.3772) { - var70 = 0.020580262; - } else { - var70 = -0.1907938; - } - } - } else { - if (input[5] < 27.29118) { - if (input[2] < 0.18115747) { - var70 = 0.0042230906; - } else { - var70 = -0.101003505; - } - } else { - if (input[5] < 28.764593) { - var70 = 0.28057367; - } else { - var70 = -0.023790604; - } - } - } - } else { - if (input[4] < 51.153934) { - if (input[1] < 207.02184) { - if (input[1] < 145.6225) { - var70 = 0.09025678; - } else { - var70 = -0.09256223; - } - } else { - if (input[1] < 227.30066) { - var70 = 0.3734536; - } else { - var70 = 0.024046838; - } - } - } else { - if (input[5] < 27.470732) { - if (input[5] < 27.204857) { - var70 = -0.026773365; - } else { - var70 = -0.34101763; - } - } else { - if (input[1] < 659.8392) { - var70 = 0.1255885; - } else { - var70 = -0.058505625; - } - } - } - } - } - } - double var71; - if (input[3] < 23.0) { - if (input[1] < 1184.6289) { - if (input[4] < 39.150074) { - if (input[6] < 0.0719236) { - if (input[1] < 1042.0798) { - if (input[1] < 808.4346) { - var71 = 0.0002492391; - } else { - var71 = 0.12119435; - } - } else { - var71 = -0.3229409; - } - } else { - if (input[2] < 0.18115747) { - if (input[7] < 0.0023011367) { - var71 = 0.021471256; - } else { - var71 = 0.1662102; - } - } else { - if (input[5] < 30.710585) { - var71 = 0.027707597; - } else { - var71 = -0.1854923; - } - } - } - } else { - if (input[7] < 0.0039673825) { - if (input[1] < 255.84222) { - if (input[1] < 196.73734) { - var71 = -0.000046006702; - } else { - var71 = -0.055973988; - } - } else { - if (input[5] < 26.883776) { - var71 = 0.015807716; - } else { - var71 = -0.03438356; - } - } - } else { - if (input[7] < 0.004061319) { - if (input[3] < 19.0) { - var71 = -0.21676554; - } else { - var71 = 0.1621183; - } - } else { - if (input[0] < 675.009) { - var71 = -0.027416358; - } else { - var71 = -0.30826083; - } - } - } - } - } else { - var71 = 0.2539672; - } - } else { - if (input[1] < 637.6124) { - if (input[1] < 432.44418) { - if (input[2] < 0.22853947) { - var71 = 0.22948384; - } else { - if (input[0] < 505.03424) { - var71 = 0.13995913; - } else { - if (input[7] < 0.004189696) { - var71 = 0.008727245; - } else { - var71 = -0.32231247; - } - } - } - } else { - if (input[5] < 19.57885) { - var71 = -0.014015525; - } else { - if (input[0] < 610.1273) { - var71 = 0.32545614; - } else { - if (input[6] < 0.07288235) { - var71 = -0.053746723; - } else { - var71 = 0.26124504; - } - } - } - } - } else { - if (input[4] < 24.066366) { - var71 = -0.24927329; - } else { - if (input[4] < 28.949688) { - var71 = 0.24758843; - } else { - if (input[4] < 30.472694) { - if (input[2] < 0.21310979) { - var71 = -0.42412654; - } else { - var71 = 0.17048818; - } - } else { - if (input[2] < 0.21533608) { - var71 = 0.082535714; - } else { - var71 = -0.0039316462; - } - } - } - } - } - } - double var72; - if (input[1] < 191.00214) { - if (input[1] < 173.5393) { - if (input[1] < 171.9599) { - if (input[1] < 150.89111) { - if (input[1] < 149.04504) { - if (input[1] < 141.24573) { - var72 = -0.0027549847; - } else { - var72 = 0.01575086; - } - } else { - if (input[0] < 427.4725) { - var72 = -0.3249756; - } else { - var72 = 0.11916316; - } - } - } else { - if (input[2] < 0.1668272) { - if (input[1] < 168.27454) { - var72 = -0.028956488; - } else { - var72 = 0.013921087; - } - } else { - if (input[7] < 0.0016345347) { - var72 = 0.020348085; - } else { - var72 = -0.124636345; - } - } - } - } else { - if (input[5] < 23.590998) { - if (input[2] < 0.07034141) { - if (input[4] < 34.687817) { - var72 = 0.2964377; - } else { - var72 = -0.12833737; - } - } else { - if (input[6] < 0.032991488) { - var72 = -0.2060055; - } else { - var72 = 0.14237921; - } - } - } else { - if (input[3] < 9.0) { - if (input[0] < 604.5986) { - var72 = -0.0039321743; - } else { - var72 = -0.18787433; - } - } else { - if (input[4] < 40.228992) { - var72 = 0.2491745; - } else { - var72 = -0.22411059; - } - } - } - } - } else { - if (input[0] < 673.89215) { - if (input[7] < 0.0024834909) { - if (input[5] < 20.485325) { - if (input[2] < 0.16369247) { - var72 = -0.03579144; - } else { - var72 = -0.21191067; - } - } else { - if (input[0] < 471.70917) { - var72 = -0.13145293; - } else { - var72 = 0.081846505; - } - } - } else { - if (input[2] < 0.12500748) { - if (input[4] < 39.150074) { - var72 = -0.02390651; - } else { - var72 = 0.5804721; - } - } else { - if (input[4] < 28.26695) { - var72 = -0.22276741; - } else { - var72 = -0.056736764; - } - } - } - } else { - if (input[4] < 36.538284) { - if (input[5] < 18.220026) { - if (input[2] < 0.06740692) { - var72 = -0.17886646; - } else { - var72 = 0.14837687; - } - } else { - if (input[3] < 6.0) { - var72 = 0.23750311; - } else { - var72 = 0.06941476; - } - } - } else { - if (input[1] < 177.04877) { - if (input[0] < 681.8675) { - var72 = -0.4227362; - } else { - var72 = -0.14849906; - } - } else { - var72 = 0.1320169; - } - } - } - } - } else { - if (input[1] < 193.68164) { - if (input[0] < 569.34753) { - if (input[2] < 0.08112252) { - if (input[6] < 0.02455999) { - if (input[0] < 552.43494) { - var72 = 0.25302243; - } else { - var72 = -0.100434564; - } - } else { - if (input[5] < 19.524868) { - var72 = 0.20599672; - } else { - var72 = -0.27181557; - } - } - } else { - if (input[3] < 11.0) { - if (input[5] < 18.892052) { - var72 = 0.036458056; - } else { - var72 = 0.25257692; - } - } else { - var72 = -0.12836596; - } - } - } else { - if (input[3] < 8.0) { - if (input[4] < 29.657753) { - if (input[5] < 23.553886) { - var72 = -0.054618258; - } else { - var72 = 0.16550674; - } - } else { - if (input[7] < 0.0030364501) { - var72 = -0.0029775125; - } else { - var72 = -0.3009238; - } - } - } else { - if (input[5] < 27.885078) { - if (input[7] < 0.008130896) { - var72 = 0.21575685; - } else { - var72 = -0.07284538; - } - } else { - var72 = -0.2512865; - } - } - } - } else { - if (input[7] < 0.014142963) { - if (input[7] < 0.013135703) { - if (input[2] < 0.017481804) { - if (input[0] < 547.29865) { - var72 = -0.08333965; - } else { - var72 = 0.18847156; - } - } else { - if (input[3] < 52.0) { - var72 = 0.00063194166; - } else { - var72 = 0.14312199; - } - } - } else { - if (input[2] < 0.05343145) { - if (input[5] < 20.617947) { - var72 = -0.50381756; - } else { - var72 = -0.14515033; - } - } else { - if (input[0] < 479.1913) { - var72 = -0.21518266; - } else { - var72 = 0.01383592; - } - } - } - } else { - if (input[6] < 0.007448412) { - if (input[5] < 20.396229) { - if (input[4] < 12.506829) { - var72 = -0.017023327; - } else { - var72 = 0.30445084; - } - } else { - if (input[5] < 24.673338) { - var72 = -0.2818591; - } else { - var72 = 0.029854381; - } - } - } else { - if (input[3] < 6.0) { - if (input[7] < 0.04599524) { - var72 = 0.018053992; - } else { - var72 = -0.20243587; - } - } else { - if (input[1] < 229.68715) { - var72 = 0.11451822; - } else { - var72 = 0.029574307; - } - } - } - } - } - } - double var73; - if (input[6] < 0.027508454) { - if (input[2] < 0.05706811) { - if (input[1] < 255.84222) { - if (input[1] < 231.0669) { - if (input[1] < 229.94263) { - if (input[6] < 0.021839056) { - var73 = -0.004931383; - } else { - var73 = 0.015515856; - } - } else { - if (input[4] < 19.22159) { - var73 = 0.02433127; - } else { - var73 = 0.2528068; - } - } - } else { - if (input[0] < 659.5366) { - if (input[5] < 23.514431) { - var73 = -0.15558474; - } else { - var73 = 0.003920431; - } - } else { - if (input[6] < 0.021839056) { - var73 = 0.22996086; - } else { - var73 = -0.37658778; - } - } - } - } else { - if (input[5] < 16.900776) { - if (input[0] < 486.46512) { - if (input[0] < 469.4581) { - var73 = 0.045562863; - } else { - var73 = -0.1954308; - } - } else { - var73 = 0.30213314; - } - } else { - if (input[5] < 21.124035) { - if (input[7] < 0.015065861) { - var73 = -0.12514181; - } else { - var73 = 0.12626192; - } - } else { - if (input[7] < 0.015328966) { - var73 = 0.073622525; - } else { - var73 = -0.05898897; - } - } - } - } - } else { - if (input[6] < 0.024027178) { - if (input[2] < 0.07443881) { - if (input[4] < 36.2053) { - if (input[0] < 469.4581) { - var73 = 0.089669034; - } else { - var73 = -0.08355012; - } - } else { - if (input[2] < 0.061827302) { - var73 = -0.08527634; - } else { - var73 = 0.34514746; - } - } - } else { - if (input[4] < 24.596539) { - var73 = -0.6141875; - } else { - var73 = -0.15327527; - } - } - } else { - if (input[4] < 20.090502) { - if (input[0] < 573.7609) { - if (input[4] < 14.698128) { - var73 = 0.05569467; - } else { - var73 = -0.055713825; - } - } else { - if (input[7] < 0.005354749) { - var73 = 0.32976106; - } else { - var73 = 0.062230453; - } - } - } else { - if (input[4] < 20.777779) { - if (input[0] < 539.3772) { - var73 = 0.061785497; - } else { - var73 = -0.21194018; - } - } else { - if (input[2] < 0.06435102) { - var73 = 0.012793524; - } else { - var73 = -0.047825; - } - } - } - } - } - } else { - if (input[4] < 18.276783) { - if (input[5] < 25.499891) { - if (input[7] < 0.005805585) { - if (input[7] < 0.005489262) { - if (input[0] < 565.6369) { - var73 = 0.050171692; - } else { - var73 = -0.321923; - } - } else { - if (input[0] < 535.2388) { - var73 = -0.33197656; - } else { - var73 = 0.06875352; - } - } - } else { - if (input[1] < 199.64316) { - if (input[6] < 0.03452544) { - var73 = 0.041778654; - } else { - var73 = 0.12793837; - } - } else { - if (input[6] < 0.02797405) { - var73 = -0.15220648; - } else { - var73 = 0.17131679; - } - } - } - } else { - if (input[7] < 0.020403687) { - if (input[7] < 0.01816849) { - if (input[5] < 28.341646) { - var73 = -0.071611024; - } else { - var73 = 0.008898393; - } - } else { - if (input[5] < 26.954847) { - var73 = 0.09113151; - } else { - var73 = -0.47245425; - } - } - } else { - if (input[7] < 0.065982014) { - if (input[1] < 59.12854) { - var73 = 0.3008682; - } else { - var73 = 0.06517113; - } - } else { - if (input[0] < 445.85364) { - var73 = 0.05860192; - } else { - var73 = -0.22679126; - } - } - } - } - } else { - if (input[7] < 0.01615975) { - if (input[4] < 27.594154) { - if (input[2] < 0.1668272) { - if (input[2] < 0.12643456) { - var73 = 0.0049581765; - } else { - var73 = 0.03950998; - } - } else { - if (input[2] < 0.16901255) { - var73 = -0.57532454; - } else { - var73 = -0.06322879; - } - } - } else { - if (input[6] < 0.034918007) { - if (input[4] < 33.10718) { - var73 = -0.044343367; - } else { - var73 = 0.03077248; - } - } else { - if (input[6] < 0.03529753) { - var73 = 0.1150169; - } else { - var73 = -0.0016260439; - } - } - } - } else { - if (input[1] < 121.57103) { - if (input[0] < 439.05417) { - if (input[1] < 115.16882) { - var73 = -0.06294332; - } else { - var73 = 0.23062958; - } - } else { - if (input[5] < 16.900776) { - var73 = -0.36929545; - } else { - var73 = -0.11514962; - } - } - } else { - if (input[0] < 447.375) { - if (input[6] < 0.05065899) { - var73 = -0.3669156; - } else { - var73 = 0.0037070038; - } - } else { - if (input[0] < 536.0595) { - var73 = 0.064248905; - } else { - var73 = -0.06205689; - } - } - } - } - } - } - double var74; - if (input[4] < 11.313015) { - if (input[2] < 0.051182747) { - if (input[2] < 0.04971838) { - if (input[6] < 0.008171307) { - if (input[7] < 0.013334383) { - if (input[5] < 23.947874) { - var74 = 0.039054837; - } else { - var74 = 0.540986; - } - } else { - if (input[4] < 5.1584697) { - var74 = 0.016943408; - } else { - var74 = -0.042048577; - } - } - } else { - if (input[5] < 31.12926) { - if (input[4] < 7.31554) { - var74 = 0.068839885; - } else { - var74 = 0.016559003; - } - } else { - if (input[2] < 0.023036957) { - var74 = -0.22466387; - } else { - var74 = 0.04406996; - } - } - } - } else { - if (input[0] < 483.37265) { - if (input[1] < 176.52954) { - if (input[5] < 22.351292) { - var74 = -0.039655216; - } else { - var74 = -0.6401379; - } - } else { - var74 = 0.07244633; - } - } else { - if (input[4] < 10.558617) { - var74 = 0.31035727; - } else { - var74 = 0.02647569; - } - } - } - } else { - if (input[6] < 0.02506348) { - if (input[1] < 143.61688) { - if (input[0] < 412.7322) { - var74 = 0.0135003785; - } else { - if (input[1] < 115.16882) { - var74 = 0.07757806; - } else { - var74 = 0.3175095; - } - } - } else { - if (input[3] < 6.0) { - if (input[0] < 445.85364) { - var74 = -0.28923953; - } else { - var74 = 0.20638645; - } - } else { - if (input[6] < 0.020067545) { - var74 = -0.0019704956; - } else { - var74 = 0.24565817; - } - } - } - } else { - var74 = -0.17286932; - } - } - } else { - if (input[6] < 0.019131957) { - if (input[2] < 0.043907166) { - if (input[7] < 0.008989412) { - if (input[6] < 0.014341843) { - if (input[2] < 0.032770157) { - var74 = 0.008140891; - } else { - var74 = -0.15053278; - } - } else { - if (input[1] < 227.6239) { - var74 = 0.025346879; - } else { - var74 = 0.13625626; - } - } - } else { - if (input[2] < 0.008977376) { - if (input[0] < 481.2571) { - var74 = -0.084223665; - } else { - var74 = 0.06343804; - } - } else { - if (input[0] < 437.31543) { - var74 = 0.07847962; - } else { - var74 = -0.039484527; - } - } - } - } else { - if (input[2] < 0.056358993) { - if (input[1] < 149.04504) { - if (input[2] < 0.050450563) { - var74 = -0.1650043; - } else { - var74 = 0.2047697; - } - } else { - if (input[5] < 21.671062) { - var74 = 0.0664995; - } else { - var74 = -0.0740069; - } - } - } else { - if (input[4] < 26.19804) { - if (input[4] < 19.093088) { - var74 = -0.11590687; - } else { - var74 = -0.60481805; - } - } else { - var74 = -0.08556457; - } - } - } - } else { - if (input[7] < 0.04087875) { - if (input[4] < 13.793873) { - if (input[3] < 7.0) { - if (input[1] < 149.04504) { - var74 = 0.037257485; - } else { - var74 = -0.064198785; - } - } else { - if (input[4] < 13.053429) { - var74 = 0.03314573; - } else { - var74 = 0.24759564; - } - } - } else { - if (input[1] < 59.12854) { - if (input[1] < 55.916164) { - var74 = -0.003484973; - } else { - var74 = -0.054196283; - } - } else { - if (input[2] < 0.04971838) { - var74 = 0.057068434; - } else { - var74 = 0.00039853083; - } - } - } - } else { - if (input[0] < 450.31787) { - if (input[0] < 412.7322) { - var74 = -0.20786409; - } else { - if (input[1] < 141.80019) { - var74 = 0.22669934; - } else { - var74 = -0.120111115; - } - } - } else { - if (input[0] < 469.4581) { - if (input[3] < 6.0) { - var74 = -0.3796027; - } else { - var74 = -0.03913419; - } - } else { - if (input[0] < 528.44965) { - var74 = 0.02898039; - } else { - var74 = -0.15321955; - } - } - } - } - } - } - double var75; - if (input[0] < 548.1884) { - if (input[0] < 547.29865) { - if (input[6] < 0.07962002) { - if (input[4] < 44.533443) { - if (input[4] < 39.41097) { - if (input[6] < 0.056870647) { - var75 = -0.003854873; - } else { - var75 = 0.0103337895; - } - } else { - if (input[0] < 479.1913) { - var75 = -0.1751697; - } else { - var75 = -0.0127565; - } - } - } else { - if (input[7] < 0.0036993276) { - if (input[7] < 0.0021320276) { - var75 = -0.075657904; - } else { - var75 = -0.24280922; - } - } else { - if (input[6] < 0.06867167) { - var75 = 0.35349542; - } else { - var75 = -0.07257092; - } - } - } - } else { - if (input[1] < 118.724884) { - if (input[5] < 27.885078) { - if (input[2] < 0.008977376) { - var75 = 0.006245215; - } else { - var75 = -0.2044566; - } - } else { - if (input[1] < 79.678955) { - var75 = -0.22164638; - } else { - var75 = 0.28086746; - } - } - } else { - if (input[4] < 40.86154) { - if (input[1] < 347.76187) { - var75 = 0.055644456; - } else { - var75 = 0.2263639; - } - } else { - if (input[3] < 11.0) { - var75 = -0.0061416207; - } else { - var75 = 0.044809163; - } - } - } - } - } else { - if (input[1] < 143.84497) { - if (input[2] < 0.008977376) { - if (input[3] < 6.0) { - if (input[6] < 0.0067773927) { - var75 = 0.10891451; - } else { - var75 = -0.21033193; - } - } else { - var75 = 0.34184736; - } - } else { - if (input[1] < 138.58899) { - if (input[4] < 32.146854) { - var75 = -0.21664618; - } else { - var75 = 0.13920088; - } - } else { - if (input[5] < 26.120363) { - var75 = -0.48439825; - } else { - var75 = 0.04030787; - } - } - } - } else { - if (input[1] < 151.1117) { - if (input[2] < 0.076109886) { - var75 = 0.4287577; - } else { - var75 = -0.12572718; - } - } else { - if (input[7] < 0.0036409746) { - if (input[7] < 0.0023330299) { - var75 = -0.23835607; - } else { - var75 = 0.2003678; - } - } else { - if (input[5] < 28.479513) { - var75 = -0.13868621; - } else { - var75 = 0.34242275; - } - } - } - } - } - } else { - if (input[3] < 96.0) { - if (input[4] < 58.806583) { - if (input[1] < 342.5133) { - if (input[1] < 325.458) { - if (input[2] < 0.25271404) { - var75 = 0.0015331948; - } else { - var75 = 0.23940696; - } - } else { - if (input[4] < 26.19804) { - var75 = -0.27701923; - } else { - var75 = -0.027163; - } - } - } else { - if (input[5] < 23.136395) { - if (input[5] < 15.362015) { - var75 = 0.17065059; - } else { - var75 = -0.00819646; - } - } else { - if (input[7] < 0.002235593) { - var75 = 0.14456455; - } else { - var75 = 0.027995953; - } - } - } - } else { - if (input[1] < 170.5625) { - if (input[4] < 1054.0984) { - if (input[0] < 570.25055) { - var75 = -0.005831747; - } else { - var75 = 0.21254958; - } - } else { - if (input[5] < 21.6294) { - var75 = 0.07205009; - } else { - var75 = -0.15849124; - } - } - } else { - if (input[4] < 1054.0984) { - if (input[0] < 667.30505) { - var75 = -0.09831885; - } else { - var75 = 0.11986411; - } - } else { - if (input[1] < 693.0503) { - var75 = -0.010486716; - } else { - var75 = 0.24766673; - } - } - } - } - } else { - var75 = 0.24347375; - } - } - double var76; - if (input[0] < 437.31543) { - if (input[3] < 6.0) { - if (input[4] < 30.802803) { - if (input[5] < 19.125778) { - if (input[2] < 0.08112252) { - if (input[6] < 0.025324266) { - var76 = 0.0010531909; - } else { - var76 = 0.20655845; - } - } else { - if (input[2] < 0.087803364) { - var76 = -0.28689283; - } else { - var76 = 0.048111256; - } - } - } else { - if (input[2] < 0.1465702) { - if (input[5] < 19.417402) { - var76 = -0.34527612; - } else { - var76 = -0.03292272; - } - } else { - if (input[5] < 22.948763) { - var76 = 0.25964814; - } else { - var76 = 0.04164031; - } - } - } - } else { - if (input[2] < 0.19782853) { - if (input[0] < 406.91656) { - if (input[6] < 0.07796111) { - var76 = -0.18127742; - } else { - var76 = 0.1991802; - } - } else { - if (input[0] < 429.60077) { - var76 = -0.25639197; - } else { - var76 = -0.07926625; - } - } - } else { - if (input[7] < 0.002095897) { - if (input[1] < 138.27072) { - var76 = -0.34471098; - } else { - var76 = 0.080366924; - } - } else { - if (input[0] < 431.5945) { - var76 = 0.24957179; - } else { - var76 = -0.018968077; - } - } - } - } - } else { - if (input[6] < 0.027044792) { - if (input[6] < 0.011578243) { - if (input[5] < 28.764593) { - if (input[0] < 409.8705) { - var76 = 0.17676586; - } else { - var76 = -0.14140119; - } - } else { - if (input[0] < 409.8705) { - var76 = -0.02269048; - } else { - var76 = 0.23449898; - } - } - } else { - if (input[0] < 427.4725) { - if (input[1] < 151.28687) { - var76 = 0.041754987; - } else { - var76 = 0.23047689; - } - } else { - if (input[1] < 81.83862) { - var76 = -0.021627875; - } else { - var76 = 0.23298833; - } - } - } - } else { - if (input[5] < 24.194729) { - if (input[3] < 12.0) { - if (input[4] < 16.909874) { - var76 = 0.16770153; - } else { - var76 = 0.004313806; - } - } else { - if (input[6] < 0.044478152) { - var76 = -0.030108955; - } else { - var76 = 0.26818854; - } - } - } else { - if (input[1] < 118.724884) { - if (input[7] < 0.0055379313) { - var76 = -0.037038993; - } else { - var76 = -0.25351885; - } - } else { - if (input[1] < 137.21216) { - var76 = 0.18411392; - } else { - var76 = -0.03724428; - } - } - } - } - } - } else { - if (input[5] < 31.12926) { - if (input[5] < 30.710585) { - if (input[5] < 30.39442) { - if (input[3] < 74.0) { - if (input[3] < 59.0) { - var76 = 0.0002415652; - } else { - var76 = -0.12451097; - } - } else { - if (input[7] < 0.015328966) { - var76 = 0.21958864; - } else { - var76 = 0.040797986; - } - } - } else { - if (input[4] < 47.95029) { - if (input[6] < 0.012573133) { - var76 = -0.13600256; - } else { - var76 = 0.07344711; - } - } else { - var76 = -0.2661485; - } - } - } else { - if (input[0] < 447.375) { - if (input[4] < 31.804214) { - var76 = 0.40678582; - } else { - var76 = -0.18814433; - } - } else { - if (input[6] < 0.024027178) { - if (input[1] < 266.53317) { - var76 = -0.20238024; - } else { - var76 = 0.13781275; - } - } else { - if (input[1] < 153.67346) { - var76 = 0.07388457; - } else { - var76 = -0.09271371; - } - } - } - } - } else { - if (input[7] < 0.0019291723) { - if (input[3] < 10.0) { - if (input[0] < 523.36316) { - if (input[0] < 515.6308) { - var76 = -0.1123059; - } else { - var76 = 0.27809858; - } - } else { - if (input[5] < 31.63552) { - var76 = -0.33722472; - } else { - var76 = -0.10977282; - } - } - } else { - var76 = 0.18897846; - } - } else { - if (input[7] < 0.0029582323) { - if (input[7] < 0.0023011367) { - if (input[4] < 36.2053) { - var76 = -0.1076813; - } else { - var76 = 0.1836686; - } - } else { - if (input[1] < 145.6225) { - var76 = 0.27059147; - } else { - var76 = 0.06394808; - } - } - } else { - if (input[7] < 0.0031165932) { - if (input[1] < 149.04504) { - var76 = 0.012002817; - } else { - var76 = -0.33369142; - } - } else { - if (input[0] < 471.70917) { - var76 = 0.08185114; - } else { - var76 = 0.00916108; - } - } - } - } - } - } - double var77; - if (input[4] < 10.558617) { - if (input[7] < 0.014589799) { - if (input[7] < 0.014372812) { - if (input[7] < 0.012117223) { - var77 = 0.41094396; - } else { - if (input[0] < 470.5908) { - if (input[7] < 0.013921388) { - var77 = 0.090069965; - } else { - var77 = 0.42400694; - } - } else { - if (input[7] < 0.0126157) { - var77 = -0.26857296; - } else { - var77 = 0.040837005; - } - } - } - } else { - var77 = 0.473945; - } - } else { - if (input[5] < 21.282642) { - if (input[6] < 0.020684186) { - if (input[5] < 20.964203) { - if (input[5] < 20.396229) { - var77 = 0.02941548; - } else { - var77 = -0.06713133; - } - } else { - if (input[4] < 6.3997884) { - var77 = 0.29918388; - } else { - var77 = 0.07128278; - } - } - } else { - if (input[7] < 0.030342864) { - var77 = 0.33075142; - } else { - var77 = 0.0912368; - } - } - } else { - if (input[5] < 26.244675) { - if (input[6] < 0.01517198) { - if (input[4] < 9.192085) { - var77 = -0.02158485; - } else { - var77 = -0.123176545; - } - } else { - if (input[5] < 25.447344) { - var77 = 0.060890686; - } else { - var77 = -0.16833195; - } - } - } else { - if (input[2] < 0.044810057) { - if (input[5] < 26.584965) { - var77 = 0.16799234; - } else { - var77 = 0.026440319; - } - } else { - if (input[7] < 0.04599524) { - var77 = -0.2447897; - } else { - var77 = 0.20830145; - } - } - } - } - } - } else { - if (input[6] < 0.02455999) { - if (input[2] < 0.052720726) { - if (input[6] < 0.022677388) { - if (input[0] < 479.1913) { - if (input[5] < 22.948763) { - var77 = -0.09614343; - } else { - var77 = 0.0053064823; - } - } else { - if (input[0] < 480.22372) { - var77 = 0.17758428; - } else { - var77 = -0.00050026545; - } - } - } else { - if (input[0] < 451.8147) { - if (input[7] < 0.009886153) { - var77 = 0.062385976; - } else { - var77 = -0.22124717; - } - } else { - if (input[5] < 29.440952) { - var77 = 0.10830221; - } else { - var77 = -0.1488077; - } - } - } - } else { - if (input[7] < 0.005489262) { - if (input[5] < 24.069965) { - if (input[1] < 235.31873) { - var77 = -0.06383919; - } else { - var77 = 0.07945355; - } - } else { - if (input[4] < 22.037666) { - var77 = 0.35597444; - } else { - var77 = 0.04960827; - } - } - } else { - if (input[7] < 0.0056639556) { - if (input[0] < 551.71265) { - var77 = 0.08721278; - } else { - var77 = -0.28619635; - } - } else { - if (input[6] < 0.020067545) { - var77 = -0.14234096; - } else { - var77 = -0.040774547; - } - } - } - } - } else { - if (input[4] < 22.235271) { - if (input[3] < 12.0) { - if (input[6] < 0.04373461) { - if (input[6] < 0.02506348) { - var77 = 0.06560165; - } else { - var77 = 0.004271798; - } - } else { - if (input[6] < 0.049576316) { - var77 = 0.057045158; - } else { - var77 = 0.18328479; - } - } - } else { - if (input[2] < 0.1456947) { - if (input[7] < 0.017095413) { - var77 = 0.2872655; - } else { - var77 = 0.099584974; - } - } else { - var77 = -0.20388788; - } - } - } else { - if (input[0] < 489.37897) { - if (input[6] < 0.053882368) { - if (input[7] < 0.009173502) { - var77 = -0.024711266; - } else { - var77 = -0.11605886; - } - } else { - if (input[5] < 14.199996) { - var77 = 0.15977743; - } else { - var77 = 0.0009987224; - } - } - } else { - if (input[2] < 0.06556158) { - if (input[7] < 0.004189696) { - var77 = -0.0039690635; - } else { - var77 = 0.094191566; - } - } else { - if (input[6] < 0.029290315) { - var77 = -0.051791053; - } else { - var77 = 0.0022675951; - } - } - } - } - } - } - double var78; - if (input[1] < 56.37903) { - if (input[1] < 55.945312) { - if (input[5] < 24.451618) { - if (input[5] < 24.15352) { - if (input[7] < 0.0023617237) { - if (input[4] < 23.702576) { - var78 = 0.53063035; - } else { - var78 = 0.043370325; - } - } else { - if (input[2] < 0.13148224) { - var78 = -0.0008916893; - } else { - var78 = -0.18127412; - } - } - } else { - if (input[4] < 26.84426) { - if (input[4] < 25.379398) { - var78 = 0.12206224; - } else { - var78 = 0.5705012; - } - } else { - var78 = -0.28820318; - } - } - } else { - if (input[5] < 24.579962) { - if (input[6] < 0.015955688) { - if (input[6] < 0.009366361) { - var78 = -0.16503495; - } else { - var78 = 0.13050672; - } - } else { - if (input[0] < 665.0621) { - var78 = -0.26658395; - } else { - var78 = 0.11591955; - } - } - } else { - if (input[0] < 649.94415) { - if (input[7] < 0.004526879) { - var78 = -0.063256234; - } else { - var78 = -0.0010564221; - } - } else { - if (input[6] < 0.035672467) { - var78 = 0.14872389; - } else { - var78 = -0.15658942; - } - } - } - } - } else { - if (input[3] < 7.0) { - if (input[6] < 0.038226146) { - if (input[4] < 26.376) { - if (input[4] < 7.31554) { - var78 = 0.23798741; - } else { - var78 = -0.10117218; - } - } else { - if (input[5] < 24.579962) { - var78 = 0.02085873; - } else { - var78 = 0.55054677; - } - } - } else { - if (input[7] < 0.0021675183) { - if (input[6] < 0.050438497) { - var78 = 0.35900992; - } else { - var78 = -0.18575963; - } - } else { - if (input[5] < 26.184101) { - var78 = -0.27402806; - } else { - var78 = -0.05185255; - } - } - } - } else { - if (input[5] < 15.865071) { - var78 = -0.29585314; - } else { - if (input[0] < 643.69525) { - if (input[0] < 614.7769) { - var78 = 0.20697512; - } else { - var78 = -0.17737885; - } - } else { - if (input[4] < 11.313015) { - var78 = -0.106007494; - } else { - var78 = 0.5975688; - } - } - } - } - } - } else { - if (input[4] < 15.523021) { - if (input[3] < 6.0) { - if (input[0] < 668.3814) { - if (input[1] < 151.58571) { - if (input[5] < 19.188658) { - var78 = -0.04253558; - } else { - var78 = 0.02145964; - } - } else { - if (input[1] < 177.04877) { - var78 = -0.11837477; - } else { - var78 = -0.009685205; - } - } - } else { - if (input[0] < 675.009) { - if (input[1] < 171.34103) { - var78 = 0.34320253; - } else { - var78 = 0.01265218; - } - } else { - if (input[1] < 171.21246) { - var78 = -0.13859467; - } else { - var78 = 0.23147713; - } - } - } - } else { - if (input[5] < 22.058182) { - if (input[7] < 0.008989412) { - if (input[6] < 0.01517198) { - var78 = -0.065894544; - } else { - var78 = 0.32164705; - } - } else { - if (input[1] < 137.9049) { - var78 = 0.01841299; - } else { - var78 = 0.09262908; - } - } - } else { - if (input[7] < 0.01071381) { - if (input[6] < 0.02348538) { - var78 = 0.19696243; - } else { - var78 = -0.0647179; - } - } else { - if (input[5] < 22.647522) { - var78 = -0.111654386; - } else { - var78 = 0.0022194185; - } - } - } - } - } else { - if (input[6] < 0.017102145) { - if (input[2] < 0.04302311) { - if (input[7] < 0.005712156) { - if (input[0] < 688.42847) { - var78 = 0.02138468; - } else { - var78 = -0.36635727; - } - } else { - if (input[7] < 0.017428085) { - var78 = -0.047939193; - } else { - var78 = 0.09358785; - } - } - } else { - if (input[1] < 269.17102) { - if (input[4] < 21.095676) { - var78 = -0.3447172; - } else { - var78 = -0.07942968; - } - } else { - if (input[7] < 0.005393012) { - var78 = -0.1709559; - } else { - var78 = 0.19137628; - } - } - } - } else { - if (input[2] < 0.04563713) { - if (input[4] < 17.07824) { - if (input[5] < 25.60802) { - var78 = 0.22730346; - } else { - var78 = 0.007838662; - } - } else { - if (input[3] < 6.0) { - var78 = -0.009223551; - } else { - var78 = 0.07817297; - } - } - } else { - if (input[6] < 0.020067545) { - if (input[1] < 174.03363) { - var78 = -0.12321103; - } else { - var78 = -0.003142594; - } - } else { - if (input[1] < 75.70349) { - var78 = 0.03631702; - } else { - var78 = 0.00012566196; - } - } - } - } - } - } - double var79; - if (input[4] < 32.274986) { - if (input[2] < 0.15184617) { - if (input[7] < 0.0018817764) { - if (input[5] < 19.066538) { - var79 = -0.1607672; - } else { - if (input[4] < 32.146854) { - if (input[1] < 75.89282) { - var79 = 0.6115796; - } else { - var79 = 0.1427733; - } - } else { - var79 = -0.011816844; - } - } - } else { - if (input[7] < 0.0020210762) { - if (input[4] < 30.913733) { - if (input[0] < 538.57745) { - var79 = 0.19630127; - } else { - var79 = -0.15708978; - } - } else { - if (input[4] < 32.146854) { - var79 = -0.1527297; - } else { - var79 = 0.15938705; - } - } - } else { - if (input[3] < 10.0) { - if (input[1] < 572.2172) { - var79 = -0.0004906416; - } else { - var79 = 0.24760556; - } - } else { - if (input[7] < 0.0044564977) { - var79 = 0.09574626; - } else { - var79 = 0.002755232; - } - } - } - } - } else { - if (input[0] < 461.0655) { - if (input[3] < 32.0) { - if (input[0] < 459.87552) { - if (input[7] < 0.0025152762) { - var79 = -0.08656456; - } else { - var79 = 0.024258517; - } - } else { - if (input[5] < 25.552517) { - var79 = -0.28153557; - } else { - var79 = 0.062065806; - } - } - } else { - var79 = -0.47117; - } - } else { - if (input[7] < 0.0029307685) { - if (input[2] < 0.16791785) { - if (input[1] < 115.47824) { - var79 = -0.079199046; - } else { - var79 = 0.29401067; - } - } else { - if (input[0] < 473.86905) { - var79 = 0.23455468; - } else { - var79 = -0.23297957; - } - } - } else { - if (input[1] < 350.59753) { - if (input[0] < 480.22372) { - var79 = 0.09751021; - } else { - var79 = -0.037244566; - } - } else { - if (input[0] < 524.96844) { - var79 = 0.07300683; - } else { - var79 = 0.23985393; - } - } - } - } - } - } else { - if (input[3] < 6.0) { - if (input[0] < 437.31543) { - if (input[2] < 0.21767628) { - if (input[0] < 406.91656) { - if (input[1] < 138.08691) { - var79 = -0.02098409; - } else { - var79 = 0.23749606; - } - } else { - if (input[2] < 0.16058685) { - var79 = -0.031106442; - } else { - var79 = -0.2106931; - } - } - } else { - if (input[4] < 42.378788) { - if (input[1] < 137.21216) { - var79 = 0.07417587; - } else { - var79 = 0.2793448; - } - } else { - var79 = -0.05091199; - } - } - } else { - if (input[1] < 53.395752) { - if (input[2] < 0.09670508) { - if (input[4] < 1054.0984) { - var79 = 0.13655; - } else { - var79 = -0.1924222; - } - } else { - if (input[2] < 0.115754485) { - var79 = 0.7431384; - } else { - var79 = 0.20561731; - } - } - } else { - if (input[5] < 22.910156) { - if (input[4] < 35.567184) { - var79 = -0.058301542; - } else { - var79 = 0.044360057; - } - } else { - if (input[2] < 0.1344459) { - var79 = 0.11465883; - } else { - var79 = -0.007405764; - } - } - } - } - } else { - if (input[4] < 32.506233) { - if (input[0] < 652.3909) { - if (input[6] < 0.027279133) { - if (input[7] < 0.0043885936) { - var79 = -0.37360397; - } else { - var79 = -0.009963691; - } - } else { - if (input[2] < 0.077218056) { - var79 = 0.49552312; - } else { - var79 = -0.027469862; - } - } - } else { - if (input[2] < 0.10654664) { - if (input[1] < 197.2326) { - var79 = -0.1715243; - } else { - var79 = 0.18294568; - } - } else { - if (input[1] < 171.54358) { - var79 = -0.09392241; - } else { - var79 = -0.52150404; - } - } - } - } else { - if (input[0] < 423.21143) { - if (input[1] < 140.762) { - if (input[4] < 38.911335) { - var79 = 0.015384628; - } else { - var79 = -0.24880172; - } - } else { - if (input[6] < 0.06669885) { - var79 = 0.4802108; - } else { - var79 = 0.09832021; - } - } - } else { - if (input[0] < 692.23615) { - if (input[6] < 0.066093825) { - var79 = -0.0126773; - } else { - var79 = 0.0032575116; - } - } else { - if (input[5] < 21.282642) { - var79 = 0.031949922; - } else { - var79 = 0.30135232; - } - } - } - } - } - } - double var80; - if (input[4] < 47.95029) { - if (input[6] < 0.0719236) { - if (input[2] < 0.17603564) { - if (input[3] < 19.0) { - if (input[6] < 0.060562886) { - if (input[2] < 0.17482603) { - var80 = -0.00034884884; - } else { - var80 = 0.12035101; - } - } else { - if (input[1] < 177.04877) { - var80 = -0.0075485497; - } else { - var80 = 0.051932544; - } - } - } else { - if (input[0] < 565.6369) { - if (input[4] < 29.959333) { - var80 = 0.13547352; - } else { - var80 = -0.12686616; - } - } else { - if (input[5] < 25.828705) { - var80 = 0.16875874; - } else { - var80 = -0.036395006; - } - } - } - } else { - if (input[7] < 0.0014543242) { - if (input[0] < 579.40393) { - var80 = 0.011788283; - } else { - var80 = 0.47281888; - } - } else { - if (input[7] < 0.0033036456) { - if (input[6] < 0.057156924) { - var80 = -0.2708071; - } else { - var80 = -0.041035317; - } - } else { - if (input[6] < 0.0529048) { - var80 = -0.14002503; - } else { - var80 = 0.009530021; - } - } - } - } - } else { - if (input[2] < 0.16471554) { - var80 = 0.34811148; - } else { - if (input[0] < 462.35693) { - if (input[4] < 35.880825) { - if (input[7] < 0.0017065624) { - var80 = 0.26733822; - } else { - var80 = 0.028530395; - } - } else { - if (input[6] < 0.07962002) { - var80 = -0.14449067; - } else { - var80 = 0.015488614; - } - } - } else { - if (input[5] < 24.27795) { - if (input[1] < 370.7329) { - var80 = -0.009032103; - } else { - var80 = 0.08320425; - } - } else { - if (input[7] < 0.0045949644) { - var80 = 0.083517954; - } else { - var80 = -0.031521123; - } - } - } - } - } - } else { - if (input[2] < 0.19949937) { - if (input[2] < 0.1030972) { - if (input[0] < 486.46512) { - if (input[0] < 477.06348) { - if (input[5] < 16.421429) { - var80 = 0.25376278; - } else { - var80 = -0.09735284; - } - } else { - var80 = -0.44031817; - } - } else { - if (input[2] < 0.08171177) { - if (input[2] < 0.069179535) { - var80 = -0.0134352455; - } else { - var80 = 0.14944172; - } - } else { - if (input[5] < 25.243595) { - var80 = 0.003686233; - } else { - var80 = -0.32753876; - } - } - } - } else { - if (input[0] < 519.08496) { - if (input[2] < 0.123589754) { - if (input[6] < 2.5102012) { - var80 = 0.36301258; - } else { - var80 = -0.0030936943; - } - } else { - if (input[2] < 0.12999964) { - var80 = -0.25058866; - } else { - var80 = 0.07527778; - } - } - } else { - if (input[3] < 12.0) { - if (input[0] < 548.1884) { - var80 = -0.15249623; - } else { - var80 = -0.0070355246; - } - } else { - if (input[1] < 197.2326) { - var80 = 0.33584154; - } else { - var80 = 0.047879953; - } - } - } - } - } else { - if (input[2] < 0.20299208) { - if (input[7] < 0.0019291723) { - if (input[0] < 500.55154) { - var80 = -0.073697634; - } else { - if (input[1] < 314.6552) { - var80 = -0.1136828; - } else { - var80 = -0.37253672; - } - } - } else { - if (input[6] < 0.062583044) { - var80 = -0.3629928; - } else { - if (input[5] < 22.79438) { - var80 = -0.17631671; - } else { - var80 = 0.19706336; - } - } - } - } else { - if (input[7] < 0.0067613916) { - if (input[3] < 16.0) { - if (input[0] < 630.6033) { - var80 = -0.048375245; - } else { - var80 = 0.024395099; - } - } else { - if (input[1] < 695.545) { - var80 = 0.035268884; - } else { - var80 = -0.029962542; - } - } - } else { - if (input[1] < 1136.2549) { - var80 = -0.4196128; - } else { - if (input[0] < 493.16626) { - var80 = -0.40138784; - } else { - var80 = 0.23180835; - } - } - } - } - } - } - double var81; - if (input[0] < 529.26776) { - if (input[0] < 528.44965) { - if (input[6] < 1.2666034) { - if (input[4] < 36.870323) { - if (input[6] < 0.06800464) { - if (input[4] < 31.022459) { - var81 = 0.000023786642; - } else { - var81 = -0.02119488; - } - } else { - if (input[7] < 0.0017720697) { - var81 = 0.13759056; - } else { - var81 = 0.031969022; - } - } - } else { - if (input[0] < 523.36316) { - if (input[6] < 0.05220808) { - var81 = 0.09379464; - } else { - var81 = -0.017224101; - } - } else { - if (input[3] < 22.0) { - var81 = -0.12411695; - } else { - var81 = 0.14065853; - } - } - } - } else { - if (input[2] < 0.08340263) { - if (input[0] < 412.7322) { - var81 = -0.29984942; - } else { - if (input[0] < 518.2562) { - var81 = -0.044024825; - } else { - var81 = -0.27682146; - } - } - } else { - if (input[5] < 29.639475) { - if (input[2] < 0.112553775) { - var81 = 0.21993805; - } else { - var81 = 0.07436571; - } - } else { - if (input[2] < 0.11508131) { - var81 = 0.12416766; - } else { - var81 = -0.29626936; - } - } - } - } - } else { - if (input[5] < 26.954847) { - if (input[4] < 15.110416) { - if (input[6] < 0.015576805) { - if (input[3] < 6.0) { - var81 = 0.0058960677; - } else { - var81 = -0.36368456; - } - } else { - var81 = 0.3278007; - } - } else { - if (input[7] < 0.004288183) { - if (input[3] < 8.0) { - var81 = -0.17917903; - } else { - var81 = 0.11111334; - } - } else { - if (input[3] < 7.0) { - var81 = -0.08097866; - } else { - var81 = -0.30493924; - } - } - } - } else { - if (input[4] < 29.561077) { - if (input[2] < 0.071531236) { - if (input[7] < 0.007260421) { - var81 = 0.3765894; - } else { - var81 = -0.031878017; - } - } else { - if (input[7] < 0.0043542767) { - var81 = 0.034564488; - } else { - var81 = -0.26981652; - } - } - } else { - if (input[6] < 0.053631432) { - var81 = 0.6309413; - } else { - var81 = -0.051138557; - } - } - } - } - } else { - if (input[0] < 530.13635) { - if (input[4] < 41.197132) { - if (input[1] < 148.36841) { - if (input[4] < 23.436337) { - if (input[1] < 73.54457) { - var81 = -0.02505766; - } else { - var81 = 0.24479258; - } - } else { - if (input[1] < 137.21216) { - var81 = -0.059186194; - } else { - var81 = -0.34568927; - } - } - } else { - if (input[7] < 0.0030103251) { - if (input[2] < 0.12225413) { - var81 = 0.09699272; - } else { - var81 = 0.5769809; - } - } else { - if (input[5] < 23.175718) { - var81 = 0.2369303; - } else { - var81 = -0.025972296; - } - } - } - } else { - if (input[1] < 489.80347) { - if (input[1] < 289.02704) { - if (input[3] < 10.0) { - var81 = -0.19606115; - } else { - var81 = 0.22279415; - } - } else { - var81 = -0.42077518; - } - } else { - var81 = 0.17334257; - } - } - } else { - if (input[6] < 0.0031386863) { - if (input[4] < 26.284737) { - if (input[1] < 117.759186) { - if (input[0] < 539.3772) { - var81 = -0.22832833; - } else { - var81 = -0.04964869; - } - } else { - if (input[0] < 580.3388) { - var81 = 0.32260644; - } else { - var81 = 0.046230763; - } - } - } else { - var81 = -0.40490335; - } - } else { - if (input[4] < 11.949299) { - if (input[5] < 27.204857) { - if (input[7] < 0.014832433) { - var81 = 0.103191845; - } else { - var81 = 0.007225188; - } - } else { - if (input[4] < 3.4118037) { - var81 = -0.30293918; - } else { - var81 = 0.10960103; - } - } - } else { - if (input[6] < 0.02455999) { - if (input[2] < 0.05491352) { - var81 = -0.0013006802; - } else { - var81 = -0.040012904; - } - } else { - if (input[7] < 0.017095413) { - var81 = 0.0042484803; - } else { - var81 = -0.06546577; - } - } - } - } - } - } - double var82; - if (input[4] < 51.153934) { - if (input[2] < 0.22563094) { - if (input[2] < 0.21310979) { - if (input[1] < 1773.3423) { - if (input[1] < 926.1219) { - if (input[3] < 21.0) { - var82 = 0.0002211003; - } else { - var82 = 0.11114671; - } - } else { - if (input[0] < 461.0655) { - var82 = -0.5277883; - } else { - var82 = -0.03236633; - } - } - } else { - var82 = 0.22935446; - } - } else { - if (input[0] < 481.2571) { - if (input[1] < 141.05981) { - if (input[5] < 26.80431) { - var82 = 0.19877411; - } else { - var82 = -0.31884277; - } - } else { - if (input[7] < 0.0028793188) { - var82 = -0.26508653; - } else { - var82 = -0.060343277; - } - } - } else { - if (input[0] < 603.44226) { - if (input[1] < 229.68715) { - var82 = -0.09561549; - } else { - var82 = 0.0738962; - } - } else { - if (input[0] < 637.80457) { - var82 = -0.22196199; - } else { - var82 = 0.011758008; - } - } - } - } - } else { - if (input[0] < 507.74713) { - if (input[5] < 18.949379) { - if (input[3] < 9.0) { - if (input[1] < 266.53317) { - var82 = 0.10335616; - } else { - var82 = -0.22353214; - } - } else { - if (input[4] < 40.86154) { - var82 = 0.05075158; - } else { - var82 = 0.3065678; - } - } - } else { - if (input[4] < 34.13175) { - if (input[6] < 0.060177866) { - var82 = -0.0707722; - } else { - var82 = 0.22742389; - } - } else { - if (input[0] < 503.25986) { - var82 = -0.0057148924; - } else { - var82 = -0.1361027; - } - } - } - } else { - if (input[2] < 0.24309075) { - if (input[7] < 0.0017065624) { - if (input[5] < 20.215801) { - var82 = -0.069648854; - } else { - var82 = 0.46206692; - } - } else { - if (input[5] < 28.479513) { - var82 = 0.08146904; - } else { - var82 = -0.16380334; - } - } - } else { - if (input[1] < 252.84729) { - if (input[5] < 21.124035) { - var82 = -0.057964455; - } else { - var82 = -0.2847973; - } - } else { - if (input[6] < 0.07288235) { - var82 = -0.058482066; - } else { - var82 = 0.078338854; - } - } - } - } - } - } else { - if (input[0] < 431.5945) { - if (input[2] < 0.070949554) { - if (input[1] < 117.295654) { - var82 = -0.22305955; - } else { - var82 = 0.05810886; - } - } else { - if (input[1] < 269.17102) { - if (input[2] < 0.112553775) { - if (input[1] < 151.1117) { - var82 = 0.4852397; - } else { - var82 = 0.14538643; - } - } else { - if (input[1] < 150.89111) { - var82 = -0.0049922722; - } else { - var82 = 0.23872228; - } - } - } else { - if (input[2] < 0.19782853) { - if (input[2] < 0.16058685) { - var82 = 0.03146452; - } else { - var82 = -0.31298712; - } - } else { - if (input[2] < 0.32127088) { - var82 = 0.2640342; - } else { - var82 = -0.124367364; - } - } - } - } - } else { - if (input[7] < 0.00513642) { - if (input[3] < 22.0) { - if (input[7] < 0.0030890324) { - if (input[7] < 0.0028526676) { - var82 = -0.020805972; - } else { - var82 = 0.1451859; - } - } else { - if (input[6] < 0.06669885) { - var82 = 0.19800338; - } else { - var82 = -0.17195709; - } - } - } else { - if (input[1] < 695.545) { - if (input[1] < 521.543) { - var82 = 0.038659383; - } else { - var82 = 0.24482405; - } - } else { - if (input[6] < 0.064966485) { - var82 = -0.29862383; - } else { - var82 = 0.009470717; - } - } - } - } else { - if (input[3] < 28.0) { - var82 = -0.32618406; - } else { - if (input[0] < 493.16626) { - var82 = -0.34122893; - } else { - if (input[3] < 51.0) { - var82 = -0.07727573; - } else { - var82 = 0.22132917; - } - } - } - } - } - } - double var83; - if (input[1] < 121.57103) { - if (input[3] < 12.0) { - if (input[4] < 35.880825) { - if (input[4] < 33.48405) { - if (input[4] < 32.860813) { - if (input[1] < 120.35962) { - var83 = -0.001241904; - } else { - var83 = -0.035963666; - } - } else { - if (input[5] < 19.524868) { - var83 = -0.28415784; - } else { - var83 = -0.025404913; - } - } - } else { - if (input[2] < 0.11770642) { - if (input[5] < 24.579962) { - var83 = 0.08872835; - } else { - var83 = 0.40110424; - } - } else { - if (input[5] < 19.73429) { - var83 = -0.09609551; - } else { - var83 = 0.07604921; - } - } - } - } else { - if (input[7] < 0.0030364501) { - if (input[3] < 9.0) { - if (input[0] < 658.2878) { - var83 = -0.030221865; - } else { - var83 = 0.10790954; - } - } else { - if (input[1] < 117.295654) { - var83 = -0.23671052; - } else { - var83 = 0.14877161; - } - } - } else { - if (input[4] < 41.197132) { - if (input[7] < 0.0064245304) { - var83 = -0.23384161; - } else { - var83 = -0.006261093; - } - } else { - var83 = 0.12522067; - } - } - } - } else { - if (input[1] < 117.95654) { - if (input[5] < 19.473267) { - var83 = 0.32006636; - } else { - if (input[5] < 22.79438) { - if (input[2] < 0.112553775) { - var83 = 0.18421584; - } else { - var83 = -0.173729; - } - } else { - if (input[1] < 78.21661) { - var83 = 0.38239738; - } else { - var83 = 0.050505195; - } - } - } - } else { - var83 = -0.036955584; - } - } - } else { - if (input[1] < 138.27072) { - if (input[0] < 524.19574) { - if (input[0] < 498.7337) { - if (input[0] < 492.25522) { - if (input[7] < 0.0019773336) { - var83 = -0.13061719; - } else { - var83 = 0.027518542; - } - } else { - if (input[5] < 16.674982) { - var83 = -0.21420927; - } else { - var83 = 0.22215198; - } - } - } else { - if (input[6] < 0.05220808) { - if (input[7] < 0.0067613916) { - var83 = -0.26688516; - } else { - var83 = 0.037099928; - } - } else { - if (input[6] < 0.064966485) { - var83 = 0.23089918; - } else { - var83 = -0.15755573; - } - } - } - } else { - if (input[3] < 6.0) { - if (input[5] < 24.320927) { - if (input[7] < 0.0019291723) { - var83 = 0.35611457; - } else { - var83 = -0.06018174; - } - } else { - if (input[2] < 0.09952295) { - var83 = 0.17724542; - } else { - var83 = -0.08041275; - } - } - } else { - if (input[5] < 17.003792) { - if (input[0] < 537.7245) { - var83 = 0.0037689302; - } else { - var83 = 0.349204; - } - } else { - if (input[6] < 0.0387992) { - var83 = 0.036183316; - } else { - var83 = 0.16191877; - } - } - } - } - } else { - if (input[1] < 140.95532) { - if (input[5] < 26.80431) { - if (input[6] < 0.031193787) { - if (input[4] < 13.317816) { - var83 = 0.06250535; - } else { - var83 = -0.123598754; - } - } else { - if (input[7] < 0.0021675183) { - var83 = -0.11826864; - } else { - var83 = -0.001695098; - } - } - } else { - if (input[2] < 0.08340263) { - if (input[7] < 0.009376955) { - var83 = 0.1609269; - } else { - var83 = 0.004427244; - } - } else { - if (input[7] < 0.0041255937) { - var83 = 0.054379523; - } else { - var83 = -0.079439595; - } - } - } - } else { - if (input[1] < 147.89758) { - if (input[5] < 25.345476) { - if (input[1] < 143.84497) { - var83 = -0.033499382; - } else { - var83 = 0.092382245; - } - } else { - if (input[0] < 454.6105) { - var83 = 0.003698233; - } else { - var83 = 0.09999345; - } - } - } else { - if (input[0] < 497.7732) { - if (input[1] < 149.04504) { - var83 = -0.11357882; - } else { - var83 = -0.0062642284; - } - } else { - if (input[1] < 150.89111) { - var83 = 0.04326854; - } else { - var83 = 0.0011338859; - } - } - } - } - } - } - double var84; - if (input[4] < 25.647543) { - if (input[7] < 0.0025152762) { - if (input[5] < 19.358892) { - if (input[5] < 18.296543) { - if (input[4] < 24.85689) { - if (input[5] < 13.871245) { - var84 = 0.11335642; - } else { - var84 = -0.1541538; - } - } else { - if (input[5] < 15.865071) { - var84 = 0.2718366; - } else { - var84 = 0.024507957; - } - } - } else { - if (input[0] < 537.7245) { - var84 = 0.43931833; - } else { - var84 = -0.02127083; - } - } - } else { - if (input[6] < 0.0067773927) { - if (input[0] < 563.9471) { - var84 = -0.030533554; - } else { - var84 = 0.27592906; - } - } else { - if (input[0] < 623.2792) { - if (input[4] < 23.702576) { - var84 = -0.014873241; - } else { - var84 = -0.20326564; - } - } else { - var84 = 0.12051498; - } - } - } - } else { - if (input[6] < 0.042833522) { - if (input[3] < 8.0) { - if (input[2] < 0.113165736) { - if (input[2] < 0.095043175) { - var84 = -0.000048118938; - } else { - var84 = -0.03419309; - } - } else { - if (input[6] < 0.04246912) { - var84 = 0.18849343; - } else { - var84 = -0.1734986; - } - } - } else { - if (input[7] < 0.00513642) { - if (input[6] < 0.039893262) { - var84 = 0.14217772; - } else { - var84 = -0.06645435; - } - } else { - if (input[0] < 516.5424) { - var84 = -0.041536238; - } else { - var84 = 0.017580045; - } - } - } - } else { - if (input[0] < 566.57983) { - if (input[0] < 534.41846) { - if (input[7] < 0.012781371) { - var84 = 0.03421063; - } else { - var84 = -0.04514378; - } - } else { - if (input[4] < 25.466583) { - var84 = -0.15673277; - } else { - var84 = 0.20547883; - } - } - } else { - if (input[5] < 22.724154) { - if (input[7] < 0.0044915546) { - var84 = 0.59894514; - } else { - var84 = 0.1215269; - } - } else { - if (input[0] < 570.25055) { - var84 = 0.00788737; - } else { - var84 = 0.1469546; - } - } - } - } - } - } else { - if (input[6] < 0.006028899) { - if (input[4] < 26.561974) { - var84 = 0.2394215; - } else { - if (input[0] < 624.53723) { - if (input[6] < 0.0031386863) { - var84 = -0.009138238; - } else { - var84 = -0.35963032; - } - } else { - if (input[4] < 28.077848) { - if (input[5] < 20.922693) { - var84 = -0.4311739; - } else { - var84 = -0.05415193; - } - } else { - if (input[5] < 25.194532) { - var84 = 0.25270072; - } else { - var84 = -0.034297682; - } - } - } - } - } else { - if (input[2] < 0.015113175) { - if (input[6] < 0.066093825) { - if (input[5] < 19.066538) { - if (input[0] < 526.7187) { - var84 = 0.07047547; - } else { - var84 = -0.23297338; - } - } else { - if (input[3] < 6.0) { - var84 = 0.63423526; - } else { - var84 = 0.12871505; - } - } - } else { - if (input[0] < 451.8147) { - if (input[5] < 22.351292) { - var84 = -0.04870675; - } else { - var84 = -0.19801626; - } - } else { - if (input[4] < 1054.0984) { - var84 = 0.22926474; - } else { - var84 = -0.16052689; - } - } - } - } else { - if (input[2] < 0.02465272) { - if (input[1] < 171.00562) { - if (input[1] < 56.088257) { - var84 = 0.12325505; - } else { - var84 = -0.22017416; - } - } else { - if (input[0] < 549.0806) { - var84 = -0.23257159; - } else { - var84 = 0.15681799; - } - } - } else { - if (input[7] < 0.002768994) { - if (input[4] < 26.937609) { - var84 = 0.10884824; - } else { - var84 = 0.0036356584; - } - } else { - if (input[2] < 0.037257552) { - var84 = 0.07096387; - } else { - var84 = -0.006668178; - } - } - } - } - } - } - double var85; - if (input[1] < 174.33795) { - if (input[1] < 173.7774) { - if (input[1] < 171.54358) { - if (input[1] < 171.00562) { - if (input[1] < 168.27454) { - if (input[1] < 153.67346) { - var85 = -0.00046469737; - } else { - var85 = -0.0669425; - } - } else { - if (input[0] < 651.1857) { - var85 = 0.0741464; - } else { - var85 = -0.09467495; - } - } - } else { - if (input[4] < 15.318433) { - if (input[4] < 13.317816) { - var85 = -0.03982735; - } else { - var85 = -0.33487925; - } - } else { - if (input[0] < 569.34753) { - var85 = 0.02443198; - } else { - var85 = -0.064014606; - } - } - } - } else { - if (input[0] < 488.4354) { - if (input[6] < 0.0413519) { - if (input[5] < 24.029337) { - var85 = 0.28477493; - } else { - var85 = -0.18609884; - } - } else { - if (input[5] < 17.826921) { - var85 = 0.028114766; - } else { - var85 = -0.25542417; - } - } - } else { - if (input[4] < 28.556541) { - if (input[7] < 0.027495267) { - var85 = -0.00038482936; - } else { - var85 = 0.27554494; - } - } else { - if (input[4] < 32.391514) { - var85 = 0.2412465; - } else { - var85 = 0.034457847; - } - } - } - } - } else { - if (input[3] < 6.0) { - if (input[4] < 21.8254) { - if (input[7] < 0.01615975) { - if (input[7] < 0.006371418) { - var85 = -0.3314619; - } else { - var85 = -0.14030178; - } - } else { - if (input[2] < 0.030371785) { - var85 = 0.36561754; - } else { - var85 = -0.12141258; - } - } - } else { - if (input[7] < 0.0029851033) { - if (input[4] < 30.584093) { - var85 = -0.244251; - } else { - var85 = 0.14159474; - } - } else { - if (input[1] < 174.1648) { - var85 = 0.112593435; - } else { - var85 = 0.37533787; - } - } - } - } else { - if (input[6] < 0.02506348) { - if (input[7] < 0.014832433) { - if (input[0] < 567.47864) { - var85 = 0.18587473; - } else { - var85 = -0.018199507; - } - } else { - if (input[5] < 24.495958) { - var85 = -0.045408536; - } else { - var85 = -0.42995897; - } - } - } else { - if (input[7] < 0.012117223) { - if (input[6] < 0.03138759) { - var85 = -0.15382987; - } else { - var85 = -0.057811048; - } - } else { - if (input[7] < 0.015065861) { - var85 = 0.35321587; - } else { - var85 = -0.04000726; - } - } - } - } - } - } else { - if (input[1] < 175.14758) { - if (input[3] < 7.0) { - if (input[0] < 648.74475) { - if (input[0] < 492.25522) { - if (input[2] < 0.085624695) { - var85 = 0.35513029; - } else { - var85 = -0.14685147; - } - } else { - if (input[4] < 25.28896) { - var85 = -0.21941878; - } else { - var85 = -0.057123948; - } - } - } else { - if (input[5] < 21.362978) { - if (input[4] < 23.884483) { - var85 = 0.2369085; - } else { - var85 = -0.25723088; - } - } else { - if (input[4] < 18.961548) { - var85 = -0.18010889; - } else { - var85 = 0.3028966; - } - } - } - } else { - if (input[2] < 0.10423684) { - if (input[6] < 0.016361425) { - if (input[5] < 22.758417) { - var85 = 0.16688684; - } else { - var85 = -0.34366605; - } - } else { - if (input[0] < 677.4847) { - var85 = 0.27742672; - } else { - var85 = -0.008372313; - } - } - } else { - if (input[4] < 43.352867) { - if (input[7] < 0.0025715097) { - var85 = -0.20161833; - } else { - var85 = 0.05665889; - } - } else { - if (input[5] < 21.44003) { - var85 = 0.06782242; - } else { - var85 = 0.5608564; - } - } - } - } - } else { - if (input[0] < 692.23615) { - if (input[1] < 176.75247) { - if (input[4] < 25.736258) { - if (input[1] < 176.52954) { - var85 = -0.007905893; - } else { - var85 = -0.17172955; - } - } else { - if (input[6] < 0.043922033) { - var85 = 0.09491208; - } else { - var85 = -0.058697198; - } - } - } else { - if (input[7] < 0.014142963) { - if (input[4] < 13.317816) { - var85 = -0.13204184; - } else { - var85 = 0.0014290791; - } - } else { - if (input[5] < 18.574848) { - var85 = 0.10734584; - } else { - var85 = 0.01919464; - } - } - } - } else { - if (input[7] < 0.0046657408) { - if (input[2] < 0.11964327) { - if (input[5] < 20.52871) { - var85 = 0.13186139; - } else { - var85 = -0.16414475; - } - } else { - var85 = 0.3043002; - } - } else { - if (input[5] < 15.711394) { - var85 = -0.08717108; - } else { - if (input[1] < 381.45337) { - var85 = 0.27456647; - } else { - var85 = 0.013700531; - } - } - } - } - } - } - double var86; - if (input[4] < 3.4118037) { - if (input[0] < 579.40393) { - if (input[3] < 6.0) { - if (input[0] < 557.74005) { - if (input[6] < 0.0017816098) { - if (input[5] < 17.21217) { - var86 = 0.22309946; - } else { - var86 = -0.067090064; - } - } else { - if (input[0] < 427.4725) { - var86 = 0.2607698; - } else { - var86 = 0.0773246; - } - } - } else { - if (input[0] < 563.9471) { - var86 = -0.32299215; - } else { - if (input[6] < 0.0017816098) { - var86 = 0.13179539; - } else { - var86 = -0.1409906; - } - } - } - } else { - if (input[5] < 19.831963) { - if (input[0] < 479.1913) { - var86 = -0.12491114; - } else { - var86 = -0.5206858; - } - } else { - if (input[3] < 7.0) { - if (input[0] < 495.01468) { - var86 = -0.042927645; - } else { - var86 = 0.19761106; - } - } else { - var86 = -0.23958458; - } - } - } - } else { - if (input[5] < 27.29118) { - if (input[5] < 22.871712) { - if (input[5] < 21.553902) { - if (input[5] < 20.439903) { - var86 = 0.07619694; - } else { - var86 = 0.24715441; - } - } else { - if (input[5] < 21.785055) { - var86 = -0.277349; - } else { - var86 = 0.06332371; - } - } - } else { - if (input[0] < 647.514) { - var86 = 0.3140201; - } else { - var86 = 0.08335723; - } - } - } else { - if (input[5] < 28.225248) { - var86 = -0.18848537; - } else { - var86 = 0.06669582; - } - } - } - } else { - if (input[1] < 59.12854) { - if (input[7] < 0.0023617237) { - if (input[0] < 530.9707) { - if (input[5] < 22.020842) { - if (input[4] < 31.022459) { - var86 = 0.15289392; - } else { - var86 = -0.058827784; - } - } else { - if (input[5] < 29.853495) { - var86 = -0.14767249; - } else { - var86 = 0.23369212; - } - } - } else { - if (input[0] < 673.89215) { - if (input[5] < 22.210117) { - var86 = 0.027538983; - } else { - var86 = 0.186441; - } - } else { - if (input[5] < 20.794724) { - var86 = 0.08241996; - } else { - var86 = -0.36462355; - } - } - } - } else { - if (input[7] < 0.0024834909) { - if (input[2] < 0.08340263) { - if (input[4] < 23.25789) { - var86 = -0.0056996904; - } else { - var86 = -0.28449515; - } - } else { - if (input[5] < 20.750168) { - var86 = 0.17743488; - } else { - var86 = -0.19711505; - } - } - } else { - if (input[2] < 0.10014308) { - if (input[4] < 24.686386) { - var86 = -0.009072068; - } else { - var86 = 0.038331714; - } - } else { - if (input[1] < 55.566917) { - var86 = -0.0072192373; - } else { - var86 = -0.14180285; - } - } - } - } - } else { - if (input[4] < 24.50498) { - if (input[7] < 0.004254316) { - if (input[3] < 7.0) { - if (input[0] < 692.23615) { - var86 = 0.025940428; - } else { - var86 = -0.45933732; - } - } else { - if (input[2] < 0.09282713) { - var86 = 0.282679; - } else { - var86 = 0.036842957; - } - } - } else { - if (input[0] < 692.23615) { - if (input[2] < 0.11964327) { - var86 = 0.0017284896; - } else { - var86 = 0.050059102; - } - } else { - if (input[5] < 19.358892) { - var86 = -0.02261941; - } else { - var86 = 0.21771844; - } - } - } - } else { - if (input[6] < 0.014341843) { - if (input[5] < 16.148563) { - if (input[0] < 550.7292) { - var86 = -0.18740809; - } else { - var86 = 0.24761544; - } - } else { - if (input[1] < 151.58571) { - var86 = -0.16814637; - } else { - var86 = -0.026108215; - } - } - } else { - if (input[2] < 0.033970356) { - if (input[4] < 27.324759) { - var86 = 0.52746624; - } else { - var86 = 0.08311454; - } - } else { - if (input[1] < 76.01593) { - var86 = 0.056839798; - } else { - var86 = -0.002701214; - } - } - } - } - } - } - double var87; - if (input[6] < 0.054671705) { - if (input[2] < 0.1399374) { - if (input[3] < 14.0) { - if (input[1] < 733.3856) { - if (input[1] < 670.473) { - if (input[2] < 0.10250798) { - var87 = 0.001213974; - } else { - var87 = -0.0067814104; - } - } else { - if (input[0] < 524.19574) { - var87 = -0.14379382; - } else { - var87 = 0.27096772; - } - } - } else { - var87 = -0.28345457; - } - } else { - if (input[0] < 535.2388) { - if (input[7] < 0.009173502) { - if (input[1] < 196.52942) { - var87 = 0.01219979; - } else { - var87 = 0.35587752; - } - } else { - if (input[4] < 22.990046) { - var87 = 0.19606334; - } else { - var87 = -0.21129604; - } - } - } else { - if (input[0] < 638.9881) { - if (input[6] < 0.045989174) { - var87 = -0.055148244; - } else { - var87 = 0.21208756; - } - } else { - if (input[4] < 36.70546) { - var87 = 0.18359815; - } else { - var87 = -0.055625968; - } - } - } - } - } else { - if (input[0] < 613.5429) { - if (input[4] < 33.99941) { - if (input[6] < 0.044864837) { - if (input[5] < 24.812592) { - var87 = -0.36040562; - } else { - var87 = 0.007036318; - } - } else { - if (input[0] < 519.94336) { - var87 = -0.03981133; - } else { - var87 = 0.028609633; - } - } - } else { - if (input[3] < 14.0) { - if (input[0] < 611.31836) { - var87 = -0.11317775; - } else { - var87 = -0.39650336; - } - } else { - if (input[0] < 584.10345) { - var87 = 0.103609204; - } else { - var87 = -0.10982039; - } - } - } - } else { - if (input[5] < 29.440952) { - if (input[1] < 227.6239) { - if (input[1] < 196.52942) { - var87 = 0.046874605; - } else { - var87 = -0.22988181; - } - } else { - if (input[4] < 34.82185) { - var87 = 0.16345336; - } else { - var87 = 0.020385731; - } - } - } else { - if (input[5] < 29.853495) { - var87 = -0.48494154; - } else { - if (input[6] < 0.049576316) { - var87 = 0.09176852; - } else { - var87 = -0.28947562; - } - } - } - } - } - } else { - if (input[6] < 0.05573149) { - if (input[0] < 462.35693) { - if (input[3] < 6.0) { - if (input[7] < 0.004189696) { - if (input[4] < 26.561974) { - var87 = 0.16153198; - } else { - var87 = -0.24998002; - } - } else { - if (input[4] < 23.884483) { - var87 = -0.053192433; - } else { - var87 = -0.494632; - } - } - } else { - if (input[2] < 0.12643456) { - if (input[6] < 0.05493398) { - var87 = 0.0054803044; - } else { - var87 = 0.2945843; - } - } else { - if (input[2] < 0.13911271) { - var87 = -0.17059815; - } else { - var87 = 0.1076436; - } - } - } - } else { - if (input[0] < 478.12262) { - if (input[1] < 118.04906) { - if (input[7] < 0.0033882342) { - var87 = 0.8049079; - } else { - var87 = 0.054205336; - } - } else { - if (input[1] < 197.2326) { - var87 = -0.000743057; - } else { - var87 = 0.36491305; - } - } - } else { - if (input[7] < 0.0038169443) { - if (input[7] < 0.0030629286) { - var87 = 0.05131099; - } else { - var87 = 0.17948276; - } - } else { - if (input[7] < 0.0047754645) { - var87 = -0.095654465; - } else { - var87 = 0.04471992; - } - } - } - } - } else { - if (input[4] < 31.804214) { - if (input[0] < 531.8526) { - if (input[1] < 143.61688) { - if (input[2] < 0.1336906) { - var87 = 0.1281375; - } else { - var87 = 0.03766806; - } - } else { - if (input[2] < 0.1344459) { - var87 = -0.1933285; - } else { - var87 = 0.009850403; - } - } - } else { - if (input[2] < 0.14311361) { - if (input[5] < 20.215801) { - var87 = -0.08271117; - } else { - var87 = -0.34099433; - } - } else { - if (input[7] < 0.0030890324) { - var87 = 0.10553294; - } else { - var87 = -0.20525621; - } - } - } - } else { - if (input[3] < 8.0) { - if (input[2] < 0.12643456) { - if (input[7] < 0.000007795067) { - var87 = -0.010054734; - } else { - var87 = 0.31397426; - } - } else { - if (input[2] < 0.1399374) { - var87 = -0.096519984; - } else { - var87 = -0.014380611; - } - } - } else { - if (input[6] < 0.05601607) { - if (input[3] < 11.0) { - var87 = -0.30473807; - } else { - var87 = 0.024693789; - } - } else { - if (input[2] < 0.15468198) { - var87 = 0.06078252; - } else { - var87 = 0.0031821402; - } - } - } - } - } - } - double var88; - if (input[6] < 0.03715515) { - if (input[2] < 0.098368645) { - if (input[3] < 12.0) { - if (input[4] < 34.26512) { - if (input[7] < 0.0048549008) { - if (input[1] < 289.02704) { - var88 = -0.017228598; - } else { - var88 = 0.046018187; - } - } else { - if (input[7] < 0.0050930274) { - var88 = 0.04908065; - } else { - var88 = -0.0007997094; - } - } - } else { - if (input[2] < 0.019446373) { - if (input[5] < 23.026451) { - var88 = -0.40142766; - } else { - var88 = -0.028914005; - } - } else { - if (input[0] < 660.6031) { - var88 = 0.056423254; - } else { - var88 = -0.08937368; - } - } - } - } else { - if (input[0] < 501.43326) { - if (input[4] < 19.354155) { - var88 = 0.034910813; - } else { - var88 = 0.37383592; - } - } else { - if (input[2] < 0.07835859) { - if (input[7] < 0.008892193) { - var88 = 0.26012313; - } else { - var88 = -0.052771248; - } - } else { - if (input[4] < 23.075237) { - var88 = 0.25715312; - } else { - var88 = -0.06894527; - } - } - } - } - } else { - if (input[1] < 78.60242) { - if (input[0] < 587.03827) { - var88 = 0.52713287; - } else { - if (input[1] < 76.13782) { - var88 = 0.1664624; - } else { - var88 = -0.09663724; - } - } - } else { - if (input[1] < 199.2757) { - if (input[5] < 15.865071) { - if (input[4] < 25.920425) { - var88 = -0.035870954; - } else { - var88 = 0.2878754; - } - } else { - if (input[5] < 19.358892) { - var88 = -0.34096953; - } else { - var88 = -0.115861; - } - } - } else { - if (input[5] < 28.225248) { - if (input[2] < 0.10014308) { - var88 = -0.15006153; - } else { - var88 = -0.02074114; - } - } else { - if (input[5] < 28.613876) { - var88 = 0.43150046; - } else { - var88 = 0.05009861; - } - } - } - } - } - } else { - if (input[4] < 20.996748) { - if (input[6] < 0.038605858) { - if (input[0] < 468.29953) { - if (input[7] < 0.008720319) { - if (input[1] < 137.21216) { - var88 = -0.028255388; - } else { - var88 = -0.25801143; - } - } else { - if (input[4] < 18.55459) { - var88 = 0.16884622; - } else { - var88 = -0.18660638; - } - } - } else { - if (input[1] < 194.25922) { - if (input[1] < 79.2583) { - var88 = 0.21885116; - } else { - var88 = -0.04074518; - } - } else { - if (input[0] < 481.2571) { - var88 = -0.0054003773; - } else { - var88 = 0.33016032; - } - } - } - } else { - if (input[4] < 17.552475) { - if (input[6] < 0.042284492) { - if (input[0] < 429.60077) { - var88 = 0.32319236; - } else { - var88 = 0.02216079; - } - } else { - var88 = -0.104548536; - } - } else { - if (input[0] < 518.2562) { - if (input[0] < 490.3461) { - var88 = 0.056453858; - } else { - var88 = -0.07813782; - } - } else { - if (input[7] < 0.005309737) { - var88 = 0.488477; - } else { - var88 = 0.065051645; - } - } - } - } - } else { - if (input[0] < 437.31543) { - if (input[6] < 0.040101185) { - if (input[7] < 0.0037865257) { - if (input[5] < 25.999264) { - var88 = 0.546916; - } else { - var88 = -0.021719392; - } - } else { - if (input[1] < 229.68715) { - var88 = -0.108017534; - } else { - var88 = 0.30433244; - } - } - } else { - if (input[6] < 0.049576316) { - if (input[1] < 115.84448) { - var88 = -0.19040892; - } else { - var88 = -0.03547328; - } - } else { - if (input[4] < 21.8254) { - var88 = 0.24619; - } else { - var88 = -0.013567912; - } - } - } - } else { - if (input[6] < 0.037520245) { - if (input[0] < 527.5794) { - if (input[2] < 0.082273126) { - var88 = 0.2298152; - } else { - var88 = -0.15082632; - } - } else { - if (input[0] < 628.1736) { - var88 = 0.04805851; - } else { - var88 = 0.17725876; - } - } - } else { - if (input[1] < 121.57103) { - if (input[1] < 117.759186) { - var88 = 0.0022414995; - } else { - var88 = -0.039624855; - } - } else { - if (input[1] < 137.9049) { - var88 = 0.07270918; - } else { - var88 = 0.0031252997; - } - } - } - } - } - } - double var89; - if (input[4] < 43.929493) { - if (input[6] < 0.07519955) { - if (input[0] < 423.21143) { - if (input[4] < 31.920088) { - if (input[6] < 0.07021791) { - if (input[2] < 0.1772592) { - var89 = -0.010607643; - } else { - var89 = -0.20866005; - } - } else { - if (input[0] < 420.89536) { - var89 = 0.17767107; - } else { - var89 = -0.15025856; - } - } - } else { - if (input[4] < 33.10718) { - if (input[5] < 21.362978) { - var89 = -0.011900977; - } else { - var89 = -0.3564781; - } - } else { - if (input[3] < 8.0) { - var89 = -0.08350132; - } else { - var89 = 0.35215592; - } - } - } - } else { - if (input[0] < 425.37012) { - if (input[5] < 25.942757) { - if (input[5] < 25.60802) { - var89 = 0.030879548; - } else { - var89 = -0.3250026; - } - } else { - if (input[5] < 26.65595) { - var89 = 0.35267025; - } else { - var89 = 0.05598735; - } - } - } else { - if (input[6] < 0.041724283) { - if (input[2] < 0.11193323) { - var89 = -0.0010291359; - } else { - var89 = -0.04094383; - } - } else { - if (input[2] < 0.10128081) { - var89 = 0.055216487; - } else { - var89 = 0.0013719809; - } - } - } - } - } else { - if (input[7] < 0.0027962627) { - if (input[7] < 0.0023330299) { - if (input[7] < 0.0022020095) { - if (input[1] < 117.87097) { - var89 = -0.08778952; - } else { - var89 = 0.066484734; - } - } else { - if (input[4] < 34.974888) { - var89 = 0.15463547; - } else { - var89 = -0.182946; - } - } - } else { - if (input[0] < 506.8112) { - if (input[0] < 494.08887) { - var89 = 0.12477607; - } else { - var89 = -0.27982935; - } - } else { - var89 = 0.45472565; - } - } - } else { - if (input[1] < 381.45337) { - if (input[3] < 12.0) { - if (input[7] < 0.0028526676) { - var89 = -0.25999692; - } else { - var89 = 0.00041613833; - } - } else { - if (input[4] < 38.459763) { - var89 = 0.07493716; - } else { - var89 = -0.3341088; - } - } - } else { - if (input[2] < 0.22023034) { - if (input[7] < 0.0034446886) { - var89 = -0.38986456; - } else { - var89 = 0.0850414; - } - } else { - if (input[3] < 18.0) { - var89 = 0.20365581; - } else { - var89 = -0.01627143; - } - } - } - } - } - } else { - if (input[7] < 0.0047754645) { - if (input[1] < 148.60223) { - if (input[6] < 0.087597266) { - if (input[0] < 606.81464) { - if (input[5] < 16.792095) { - var89 = -0.053001884; - } else { - var89 = -0.32513678; - } - } else { - if (input[1] < 81.83862) { - var89 = -0.13483438; - } else { - var89 = 0.20062411; - } - } - } else { - if (input[7] < 0.0018289244) { - if (input[7] < 0.0014543242) { - var89 = -0.00961164; - } else { - var89 = -0.25198993; - } - } else { - if (input[0] < 418.34677) { - var89 = -0.19330889; - } else { - var89 = 0.18536574; - } - } - } - } else { - if (input[1] < 196.73734) { - if (input[5] < 23.026451) { - if (input[1] < 177.04877) { - var89 = 0.04373223; - } else { - var89 = 0.17553368; - } - } else { - if (input[5] < 23.947874) { - var89 = -0.21372649; - } else { - var89 = 0.022359353; - } - } - } else { - if (input[5] < 30.710585) { - if (input[5] < 28.908257) { - var89 = -0.008285546; - } else { - var89 = -0.10522911; - } - } else { - if (input[6] < 0.06669885) { - var89 = -0.069511965; - } else { - var89 = 0.20217475; - } - } - } - } - } else { - if (input[2] < 0.22023034) { - if (input[5] < 27.670492) { - if (input[3] < 24.0) { - if (input[5] < 20.617947) { - var89 = 0.0297372; - } else { - var89 = -0.45688298; - } - } else { - if (input[7] < 0.0054437453) { - var89 = 0.14956032; - } else { - var89 = -0.20791602; - } - } - } else { - var89 = 0.06833861; - } - } else { - if (input[2] < 0.22853947) { - if (input[6] < 0.07288235) { - var89 = 0.36151716; - } else { - var89 = -0.022716587; - } - } else { - if (input[1] < 659.8392) { - if (input[1] < 344.88092) { - var89 = 0.08974477; - } else { - var89 = -0.3020404; - } - } else { - if (input[4] < 51.153934) { - var89 = 0.13430095; - } else { - var89 = -0.13566507; - } - } - } - } - } - } - double var90; - if (input[1] < 81.83862) { - if (input[5] < 25.999264) { - if (input[3] < 12.0) { - if (input[2] < 0.16901255) { - if (input[5] < 25.7722) { - if (input[2] < 0.052720726) { - var90 = 0.004717452; - } else { - var90 = -0.0110362815; - } - } else { - if (input[7] < 0.002544325) { - var90 = -0.20699602; - } else { - var90 = 0.088833556; - } - } - } else { - if (input[2] < 0.28529787) { - if (input[0] < 473.86905) { - var90 = -0.024626018; - } else { - var90 = -0.2674594; - } - } else { - var90 = 0.034789145; - } - } - } else { - if (input[6] < 0.041007258) { - if (input[2] < 0.09282713) { - var90 = 0.1544882; - } else { - var90 = -0.11128534; - } - } else { - if (input[1] < 79.007324) { - if (input[4] < 38.68964) { - var90 = 0.33311167; - } else { - var90 = 0.085273854; - } - } else { - var90 = 0.05902942; - } - } - } - } else { - if (input[5] < 26.446224) { - if (input[4] < 25.02411) { - if (input[4] < 7.9895897) { - if (input[5] < 26.244675) { - var90 = -0.17205177; - } else { - var90 = 0.27608708; - } - } else { - if (input[7] < 0.003554517) { - var90 = 0.047619198; - } else { - var90 = -0.17066094; - } - } - } else { - if (input[4] < 25.379398) { - var90 = 0.48091975; - } else { - if (input[1] < 78.76117) { - var90 = 0.06580829; - } else { - var90 = -0.23035711; - } - } - } - } else { - if (input[5] < 26.726051) { - if (input[7] < 0.010113142) { - if (input[7] < 0.0046657408) { - var90 = 0.07573573; - } else { - var90 = -0.120207205; - } - } else { - if (input[2] < 0.032770157) { - var90 = 0.100229025; - } else { - var90 = 0.55150944; - } - } - } else { - if (input[7] < 0.0015539197) { - if (input[1] < 76.01593) { - var90 = -0.3108106; - } else { - var90 = -0.016448788; - } - } else { - if (input[0] < 677.4847) { - var90 = -0.022770002; - } else { - var90 = 0.16478123; - } - } - } - } - } - } else { - if (input[1] < 114.94299) { - if (input[0] < 675.009) { - if (input[5] < 20.617947) { - if (input[5] < 19.473267) { - if (input[7] < 0.005177345) { - var90 = -0.028705887; - } else { - var90 = 0.1180362; - } - } else { - if (input[5] < 20.215801) { - var90 = 0.38947958; - } else { - var90 = 0.1106116; - } - } - } else { - if (input[0] < 468.29953) { - if (input[2] < 0.06435102) { - var90 = 0.2649214; - } else { - var90 = 0.019444734; - } - } else { - if (input[0] < 485.39822) { - var90 = -0.17474675; - } else { - var90 = 0.021871075; - } - } - } - } else { - var90 = -0.26572117; - } - } else { - if (input[4] < 22.235271) { - if (input[0] < 677.4847) { - if (input[7] < 0.005805585) { - if (input[1] < 348.1612) { - var90 = 0.029961983; - } else { - var90 = 0.39431426; - } - } else { - if (input[2] < 0.100723624) { - var90 = -0.0021485656; - } else { - var90 = 0.05872705; - } - } - } else { - if (input[3] < 11.0) { - if (input[2] < 0.023036957) { - var90 = -0.058125976; - } else { - var90 = 0.15203135; - } - } else { - var90 = -0.285426; - } - } - } else { - if (input[1] < 154.10083) { - if (input[6] < 0.019774148) { - if (input[4] < 26.376) { - var90 = -0.03898572; - } else { - var90 = -0.1929159; - } - } else { - if (input[1] < 153.67346) { - var90 = -0.0053187683; - } else { - var90 = -0.10130769; - } - } - } else { - if (input[5] < 12.536739) { - if (input[4] < 24.157349) { - var90 = 0.3306803; - } else { - var90 = 0.07390418; - } - } else { - if (input[4] < 22.429638) { - var90 = -0.06714284; - } else { - var90 = 0.0016463628; - } - } - } - } - } - } - double var91; - if (input[1] < 2290.354) { - if (input[4] < 47.95029) { - if (input[6] < 0.0719236) { - if (input[2] < 0.14738971) { - if (input[6] < 0.064966485) { - if (input[6] < 0.051321846) { - var91 = -0.0007380142; - } else { - var91 = 0.017104162; - } - } else { - if (input[0] < 437.31543) { - var91 = -0.035949714; - } else { - var91 = 0.69588566; - } - } - } else { - if (input[1] < 199.64316) { - if (input[0] < 533.52014) { - var91 = -0.007106399; - } else { - var91 = -0.052589025; - } - } else { - if (input[0] < 560.42096) { - var91 = -0.017362004; - } else { - var91 = 0.024235899; - } - } - } - } else { - if (input[2] < 0.16471554) { - if (input[0] < 465.9689) { - var91 = 0.32789415; - } else { - var91 = 0.095607586; - } - } else { - if (input[7] < 0.012781371) { - if (input[7] < 0.007757587) { - var91 = 0.016614746; - } else { - var91 = 0.13553524; - } - } else { - if (input[3] < 62.0) { - var91 = -0.30443758; - } else { - var91 = 0.09607027; - } - } - } - } - } else { - if (input[6] < 0.062145434) { - if (input[0] < 653.56573) { - if (input[7] < 0.004288183) { - if (input[1] < 522.426) { - var91 = -0.099851035; - } else { - var91 = -0.30278862; - } - } else { - var91 = 0.19684345; - } - } else { - if (input[3] < 10.0) { - var91 = -0.22884654; - } else { - if (input[1] < 522.426) { - var91 = 0.33171842; - } else { - var91 = 0.03699922; - } - } - } - } else { - if (input[6] < 0.067336254) { - if (input[0] < 655.90375) { - if (input[1] < 499.95114) { - var91 = 0.090200365; - } else { - var91 = -0.22600064; - } - } else { - if (input[3] < 16.0) { - var91 = 0.4207718; - } else { - var91 = 0.09619077; - } - } - } else { - if (input[1] < 465.96875) { - if (input[6] < 0.07021791) { - var91 = -0.16634715; - } else { - var91 = -0.015003142; - } - } else { - if (input[1] < 489.80347) { - var91 = 0.122215; - } else { - var91 = 0.0035324367; - } - } - } - } - } - } else { - if (input[5] < 33.48466) { - if (input[0] < 473.86905) { - var91 = -0.120100126; - } else { - if (input[0] < 562.22656) { - var91 = 0.2611159; - } else { - if (input[0] < 580.3388) { - var91 = -0.15703636; - } else { - var91 = 0.16519877; - } - } - } - } else { - var91 = -0.12494756; - } - } - double var92; - if (input[4] < 39.41097) { - if (input[6] < 0.056870647) { - if (input[2] < 0.13520741) { - if (input[3] < 10.0) { - if (input[6] < 0.05658276) { - if (input[2] < 0.1336906) { - var92 = -0.001089389; - } else { - var92 = 0.055209767; - } - } else { - if (input[3] < 7.0) { - var92 = -0.1730192; - } else { - var92 = 0.23557557; - } - } - } else { - if (input[7] < 0.0029307685) { - if (input[1] < 174.33795) { - var92 = 0.07537887; - } else { - var92 = 0.28193; - } - } else { - if (input[4] < 27.324759) { - var92 = 0.038940098; - } else { - var92 = -0.004870598; - } - } - } - } else { - if (input[6] < 0.04618777) { - if (input[5] < 19.831963) { - if (input[0] < 660.6031) { - var92 = 0.21638036; - } else { - var92 = -0.19483142; - } - } else { - if (input[7] < 0.0040295073) { - var92 = -0.25086433; - } else { - var92 = -0.06484561; - } - } - } else { - if (input[0] < 591.9396) { - if (input[4] < 33.99941) { - var92 = -0.0037506274; - } else { - var92 = -0.06920141; - } - } else { - if (input[1] < 322.41693) { - var92 = -0.0011643084; - } else { - var92 = 0.07318947; - } - } - } - } - } else { - if (input[3] < 8.0) { - if (input[0] < 587.03827) { - if (input[6] < 0.05746576) { - if (input[2] < 0.1329875) { - var92 = -0.10781022; - } else { - var92 = 0.122004844; - } - } else { - if (input[5] < 32.309944) { - var92 = -0.0023916357; - } else { - var92 = 0.12394992; - } - } - } else { - if (input[2] < 0.15956831) { - if (input[2] < 0.13599229) { - var92 = 0.18155044; - } else { - var92 = -0.20790188; - } - } else { - if (input[3] < 6.0) { - var92 = 0.22146587; - } else { - var92 = -0.038210988; - } - } - } - } else { - if (input[2] < 0.15373018) { - if (input[7] < 0.004422581) { - if (input[0] < 450.31787) { - var92 = -0.047350388; - } else { - var92 = 0.19147024; - } - } else { - if (input[4] < 28.366318) { - var92 = 0.26369143; - } else { - var92 = -0.10821494; - } - } - } else { - if (input[1] < 197.2326) { - if (input[6] < 0.06800464) { - var92 = -0.07030523; - } else { - var92 = 0.064904645; - } - } else { - if (input[0] < 550.7292) { - var92 = 0.015187512; - } else { - var92 = 0.10559668; - } - } - } - } - } - } else { - if (input[5] < 19.125778) { - if (input[7] < 0.0056199925) { - if (input[5] < 18.892052) { - if (input[7] < 0.0041569136) { - if (input[6] < 0.036600526) { - var92 = 0.23143375; - } else { - var92 = 0.0073575294; - } - } else { - if (input[2] < 0.18970776) { - var92 = -0.30694872; - } else { - var92 = 0.010648451; - } - } - } else { - if (input[7] < 0.002095897) { - if (input[0] < 591.9396) { - var92 = 0.18238145; - } else { - var92 = -0.11735777; - } - } else { - if (input[0] < 591.9396) { - var92 = 0.010138348; - } else { - var92 = 0.3862872; - } - } - } - } else { - if (input[1] < 232.72089) { - var92 = 0.44677067; - } else { - var92 = 0.072941095; - } - } - } else { - if (input[7] < 0.0019773336) { - if (input[4] < 40.228992) { - if (input[3] < 8.0) { - if (input[0] < 542.8911) { - var92 = 0.17898136; - } else { - var92 = -0.023028634; - } - } else { - if (input[0] < 508.57187) { - var92 = -0.018220183; - } else { - var92 = 0.46458104; - } - } - } else { - if (input[6] < 0.046756607) { - if (input[1] < 171.21246) { - var92 = -0.35519254; - } else { - var92 = -0.07546118; - } - } else { - if (input[5] < 19.882984) { - var92 = -0.08851494; - } else { - var92 = 0.011478441; - } - } - } - } else { - if (input[6] < 0.039893262) { - if (input[1] < 176.75247) { - if (input[2] < 0.06494424) { - var92 = 0.08772754; - } else { - var92 = 0.5184707; - } - } else { - if (input[2] < 0.10770404) { - var92 = -0.061544154; - } else { - var92 = 0.22541822; - } - } - } else { - if (input[1] < 272.0462) { - if (input[6] < 0.09936261) { - var92 = -0.06034384; - } else { - var92 = 0.17929633; - } - } else { - if (input[1] < 289.02704) { - var92 = 0.1994526; - } else { - var92 = -0.011756292; - } - } - } - } - } - } - double var93; - if (input[2] < 0.019446373) { - if (input[3] < 7.0) { - if (input[0] < 423.21143) { - if (input[5] < 20.485325) { - if (input[6] < 0.04792555) { - if (input[0] < 406.91656) { - var93 = 0.23903947; - } else { - var93 = -0.043631352; - } - } else { - if (input[4] < 25.379398) { - var93 = 0.3560161; - } else { - var93 = 0.050991777; - } - } - } else { - if (input[5] < 23.252285) { - if (input[7] < 0.065982014) { - var93 = -0.19482973; - } else { - var93 = 0.14287668; - } - } else { - if (input[5] < 23.989378) { - var93 = 0.14584614; - } else { - var93 = -0.0738031; - } - } - } - } else { - if (input[0] < 486.46512) { - if (input[0] < 483.37265) { - if (input[3] < 6.0) { - var93 = 0.04306985; - } else { - var93 = -0.01948809; - } - } else { - if (input[7] < 0.015328966) { - var93 = 0.3159663; - } else { - var93 = -0.08925603; - } - } - } else { - if (input[6] < 0.031588726) { - if (input[4] < 17.239592) { - var93 = -0.0045616818; - } else { - var93 = 0.029174246; - } - } else { - if (input[4] < 24.686386) { - var93 = -0.10198789; - } else { - var93 = 0.052390754; - } - } - } - } - } else { - if (input[0] < 451.8147) { - var93 = 0.25500366; - } else { - if (input[0] < 472.82422) { - if (input[0] < 467.11356) { - if (input[4] < 13.317816) { - var93 = 0.1784952; - } else { - var93 = -0.20921008; - } - } else { - var93 = -0.5486046; - } - } else { - if (input[6] < 0.012091974) { - if (input[0] < 589.95685) { - var93 = -0.04166706; - } else { - var93 = 0.11491496; - } - } else { - if (input[5] < 20.02947) { - var93 = 0.069990925; - } else { - var93 = 0.29926434; - } - } - } - } - } - } else { - if (input[1] < 52.952087) { - if (input[7] < 0.008550759) { - if (input[5] < 26.954847) { - if (input[5] < 25.292236) { - if (input[5] < 23.707842) { - var93 = 0.026659865; - } else { - var93 = -0.15924944; - } - } else { - if (input[0] < 541.16064) { - var93 = 0.46490955; - } else { - var93 = -0.0070524053; - } - } - } else { - if (input[6] < 0.029934272) { - var93 = -0.31207043; - } else { - if (input[0] < 637.80457) { - var93 = -0.09840505; - } else { - var93 = 0.23213725; - } - } - } - } else { - if (input[5] < 21.47956) { - if (input[0] < 516.5424) { - if (input[5] < 18.892052) { - var93 = -0.4061208; - } else { - var93 = 0.0189763; - } - } else { - if (input[2] < 0.06248641) { - var93 = 0.14953555; - } else { - var93 = -0.2209886; - } - } - } else { - if (input[5] < 27.670492) { - if (input[6] < 0.009366361) { - var93 = -0.096842885; - } else { - var93 = -0.36815447; - } - } else { - if (input[0] < 537.7245) { - var93 = 0.13366528; - } else { - var93 = -0.14766996; - } - } - } - } - } else { - if (input[6] < 0.008788065) { - if (input[1] < 78.546326) { - if (input[0] < 574.6581) { - if (input[0] < 550.7292) { - var93 = -0.21872346; - } else { - var93 = 0.17067797; - } - } else { - if (input[7] < 0.006703865) { - var93 = -0.103082374; - } else { - var93 = -0.37294766; - } - } - } else { - if (input[1] < 78.799194) { - var93 = 0.5648323; - } else { - if (input[1] < 118.29285) { - var93 = 0.11254025; - } else { - var93 = -0.096443884; - } - } - } - } else { - if (input[7] < 0.037121538) { - if (input[0] < 497.7732) { - if (input[1] < 53.51245) { - var93 = -0.12823997; - } else { - var93 = -0.004640621; - } - } else { - if (input[4] < 7.9895897) { - var93 = -0.16637444; - } else { - var93 = 0.0016579455; - } - } - } else { - if (input[1] < 53.680603) { - if (input[2] < 0.02465272) { - var93 = -0.12735999; - } else { - var93 = 0.3944017; - } - } else { - if (input[1] < 117.95654) { - var93 = -0.046386614; - } else { - var93 = 0.056297485; - } - } - } - } - } - } - double var94; - if (input[6] < 0.027508454) { - if (input[2] < 0.060454607) { - if (input[7] < 0.0019291723) { - if (input[0] < 469.4581) { - var94 = 0.26878878; - } else { - if (input[3] < 7.0) { - if (input[0] < 600.2424) { - var94 = -0.269223; - } else { - var94 = -0.0147406915; - } - } else { - if (input[0] < 601.28894) { - var94 = 0.26683354; - } else { - var94 = -0.12412647; - } - } - } - } else { - if (input[7] < 0.0026572135) { - if (input[5] < 14.48199) { - if (input[6] < 0.019774148) { - var94 = 0.012556176; - } else { - var94 = 0.58044595; - } - } else { - if (input[5] < 16.555506) { - var94 = -0.2595056; - } else { - var94 = 0.050235458; - } - } - } else { - if (input[4] < 35.880825) { - if (input[7] < 0.0028526676) { - var94 = -0.082867846; - } else { - var94 = -0.0005573984; - } - } else { - if (input[6] < 0.0224242) { - var94 = 0.20978113; - } else { - var94 = -0.36310664; - } - } - } - } - } else { - if (input[0] < 676.2616) { - if (input[1] < 486.04437) { - if (input[5] < 29.853495) { - if (input[0] < 578.47174) { - var94 = -0.047225036; - } else { - var94 = 0.0015649783; - } - } else { - if (input[3] < 8.0) { - var94 = 0.13156146; - } else { - var94 = -0.20603453; - } - } - } else { - if (input[2] < 0.08396298) { - if (input[2] < 0.06370363) { - var94 = 0.058326058; - } else { - var94 = 0.27829453; - } - } else { - if (input[3] < 16.0) { - var94 = -0.16545497; - } else { - var94 = 0.11268028; - } - } - } - } else { - if (input[1] < 289.02704) { - if (input[1] < 174.1648) { - if (input[1] < 81.0188) { - var94 = -0.23114511; - } else { - var94 = 0.101152256; - } - } else { - if (input[0] < 680.3219) { - var94 = -0.6883102; - } else { - var94 = -0.117695056; - } - } - } else { - if (input[6] < 0.02348538) { - var94 = -0.24693434; - } else { - if (input[5] < 24.320927) { - var94 = 0.24602963; - } else { - var94 = 0.015761448; - } - } - } - } - } - } else { - if (input[4] < 15.897472) { - if (input[5] < 26.954847) { - if (input[5] < 26.65595) { - if (input[5] < 25.942757) { - if (input[7] < 0.012781371) { - var94 = 0.054019507; - } else { - var94 = 0.14271419; - } - } else { - if (input[7] < 0.007757587) { - var94 = 0.23369469; - } else { - var94 = -0.16729432; - } - } - } else { - if (input[0] < 464.80853) { - var94 = 0.35133332; - } else { - var94 = 0.06543421; - } - } - } else { - if (input[7] < 0.02092963) { - if (input[7] < 0.013718606) { - if (input[7] < 0.012781371) { - var94 = -0.08679936; - } else { - var94 = 0.25653496; - } - } else { - if (input[5] < 29.251307) { - var94 = -0.40882197; - } else { - var94 = -0.11314546; - } - } - } else { - if (input[0] < 415.7414) { - var94 = -0.09910055; - } else { - if (input[6] < 0.028205514) { - var94 = 0.030331306; - } else { - var94 = 0.29536662; - } - } - } - } - } else { - if (input[2] < 0.07207942) { - if (input[1] < 115.84448) { - if (input[7] < 0.0049699554) { - if (input[1] < 81.66284) { - var94 = -0.02127853; - } else { - var94 = -0.15477914; - } - } else { - if (input[4] < 19.22159) { - var94 = -0.029568223; - } else { - var94 = 0.07100651; - } - } - } else { - if (input[5] < 11.839297) { - if (input[7] < 0.0044915546) { - var94 = -0.046902213; - } else { - var94 = -0.36647388; - } - } else { - if (input[1] < 117.295654) { - var94 = 0.3015382; - } else { - var94 = 0.039402712; - } - } - } - } else { - if (input[6] < 0.031588726) { - if (input[0] < 678.9018) { - if (input[0] < 669.4481) { - var94 = -0.028930034; - } else { - var94 = -0.15006642; - } - } else { - if (input[4] < 30.913733) { - var94 = 0.15809971; - } else { - var94 = -0.17897888; - } - } - } else { - if (input[0] < 657.11444) { - if (input[6] < 0.03715515) { - var94 = -0.010334415; - } else { - var94 = 0.0016327765; - } - } else { - if (input[4] < 28.556541) { - var94 = 0.07053114; - } else { - var94 = 0.0033918766; - } - } - } - } - } - } - double var95; - if (input[4] < 36.870323) { - if (input[6] < 0.064966485) { - if (input[6] < 0.063442506) { - if (input[6] < 0.06301065) { - if (input[1] < 367.2591) { - if (input[2] < 0.1772592) { - var95 = -0.00029088598; - } else { - var95 = -0.10018439; - } - } else { - if (input[7] < 0.005221153) { - var95 = 0.04192914; - } else { - var95 = -0.005447412; - } - } - } else { - if (input[2] < 0.16581297) { - if (input[5] < 23.553886) { - var95 = -0.1591081; - } else { - var95 = 0.10508491; - } - } else { - if (input[3] < 9.0) { - var95 = 0.3668959; - } else { - var95 = -0.014906318; - } - } - } - } else { - if (input[5] < 15.548489) { - if (input[2] < 0.16901255) { - var95 = 0.45934853; - } else { - var95 = -0.07842251; - } - } else { - if (input[5] < 25.828705) { - if (input[5] < 24.320927) { - var95 = -0.04542352; - } else { - var95 = -0.23987944; - } - } else { - if (input[6] < 0.063917145) { - var95 = -0.10086262; - } else { - var95 = 0.09706425; - } - } - } - } - } else { - if (input[1] < 272.0462) { - if (input[1] < 147.89758) { - if (input[0] < 455.97122) { - if (input[7] < 0.0027116358) { - var95 = -0.05996486; - } else { - var95 = 0.056037072; - } - } else { - if (input[1] < 140.85828) { - var95 = 0.033455893; - } else { - var95 = 0.23655675; - } - } - } else { - if (input[7] < 0.0023913998) { - if (input[7] < 0.0020605393) { - var95 = -0.04337442; - } else { - var95 = 0.14069591; - } - } else { - if (input[1] < 149.04504) { - var95 = -0.37998262; - } else { - var95 = -0.031536; - } - } - } - } else { - if (input[5] < 22.60932) { - if (input[0] < 415.7414) { - var95 = -0.12921034; - } else { - if (input[1] < 347.76187) { - var95 = 0.3288574; - } else { - var95 = 0.13256179; - } - } - } else { - if (input[5] < 22.871712) { - var95 = -0.3297293; - } else { - if (input[0] < 469.4581) { - var95 = 0.0010177677; - } else { - var95 = 0.14768024; - } - } - } - } - } - } else { - if (input[3] < 6.0) { - if (input[6] < 0.06134235) { - if (input[1] < 174.33795) { - if (input[0] < 648.74475) { - if (input[0] < 586.0259) { - var95 = -0.105719365; - } else { - var95 = 0.20103557; - } - } else { - if (input[1] < 141.80019) { - var95 = 0.01179498; - } else { - var95 = -0.360845; - } - } - } else { - if (input[1] < 199.2757) { - if (input[2] < 0.06800866) { - var95 = -0.21911988; - } else { - var95 = 0.48542768; - } - } else { - if (input[1] < 294.69617) { - var95 = 0.029419068; - } else { - var95 = 0.29314417; - } - } - } - } else { - if (input[0] < 623.2792) { - if (input[2] < 0.2088641) { - if (input[1] < 350.59753) { - var95 = 0.00927925; - } else { - var95 = -0.28686583; - } - } else { - if (input[4] < 39.150074) { - var95 = 0.3137236; - } else { - var95 = 0.059071932; - } - } - } else { - if (input[2] < 0.076109886) { - if (input[2] < 0.040234327) { - var95 = -0.28807607; - } else { - var95 = 0.11867937; - } - } else { - if (input[6] < 0.06442285) { - var95 = 0.028690578; - } else { - var95 = -0.403902; - } - } - } - } - } else { - if (input[7] < 0.003554517) { - if (input[7] < 0.0033310084) { - if (input[6] < 0.044478152) { - if (input[6] < 0.0387992) { - var95 = 0.0015631773; - } else { - var95 = -0.15456538; - } - } else { - if (input[6] < 0.045053452) { - var95 = 0.45196748; - } else { - var95 = -0.0036727262; - } - } - } else { - if (input[3] < 17.0) { - if (input[5] < 26.883776) { - var95 = 0.05053576; - } else { - var95 = -0.12719224; - } - } else { - if (input[7] < 0.0035266217) { - var95 = 0.25379607; - } else { - var95 = -0.01665973; - } - } - } - } else { - if (input[2] < 0.13599229) { - if (input[2] < 0.1336906) { - if (input[5] < 19.682528) { - var95 = -0.15510641; - } else { - var95 = 0.05978261; - } - } else { - var95 = 0.32809258; - } - } else { - if (input[2] < 0.17006421) { - if (input[3] < 16.0) { - var95 = -0.11217772; - } else { - var95 = 0.033681337; - } - } else { - if (input[1] < 432.44418) { - var95 = -0.047947384; - } else { - var95 = 0.0068211597; - } - } - } - } - } - } - double var96; - if (input[4] < 19.969645) { - if (input[6] < 0.033574995) { - if (input[2] < 0.095043175) { - if (input[4] < 19.22159) { - if (input[4] < 19.093088) { - if (input[4] < 18.961548) { - var96 = -0.0018001358; - } else { - var96 = 0.064425446; - } - } else { - if (input[0] < 646.2121) { - var96 = -0.123586185; - } else { - var96 = 0.16697642; - } - } - } else { - if (input[6] < 0.014341843) { - if (input[7] < 0.003877645) { - var96 = 0.5333495; - } else { - var96 = 0.10474758; - } - } else { - if (input[2] < 0.03826639) { - var96 = -0.08635856; - } else { - var96 = 0.031895284; - } - } - } - } else { - if (input[7] < 0.011644137) { - var96 = -0.60618275; - } else { - if (input[7] < 0.017095413) { - var96 = 0.20291023; - } else { - var96 = -0.114330396; - } - } - } - } else { - if (input[3] < 8.0) { - if (input[4] < 15.110416) { - if (input[0] < 418.34677) { - var96 = 0.28548223; - } else { - var96 = 0.07066263; - } - } else { - if (input[7] < 0.027495267) { - if (input[0] < 445.85364) { - var96 = -0.011426713; - } else { - var96 = 0.04950936; - } - } else { - if (input[2] < 0.09052771) { - var96 = -0.24584083; - } else { - var96 = 0.20677362; - } - } - } - } else { - if (input[2] < 0.10250798) { - if (input[5] < 17.90769) { - var96 = -0.085860796; - } else { - if (input[1] < 229.68715) { - var96 = 0.27151984; - } else { - var96 = 0.07385676; - } - } - } else { - if (input[2] < 0.10423684) { - var96 = -0.5743012; - } else { - if (input[2] < 0.11136079) { - var96 = 0.2345015; - } else { - var96 = -0.08669591; - } - } - } - } - } - } else { - if (input[7] < 0.032107387) { - if (input[6] < 0.014341843) { - if (input[2] < 0.033970356) { - if (input[4] < 21.095676) { - if (input[0] < 537.7245) { - var96 = 0.021817029; - } else { - var96 = -0.1473876; - } - } else { - if (input[0] < 664.0269) { - var96 = 0.015744172; - } else { - var96 = -0.11550699; - } - } - } else { - if (input[0] < 644.92255) { - if (input[0] < 561.316) { - var96 = -0.09252417; - } else { - var96 = -0.32412606; - } - } else { - if (input[5] < 24.451618) { - var96 = 0.18326743; - } else { - var96 = -0.1840132; - } - } - } - } else { - if (input[6] < 0.015576805) { - if (input[5] < 22.573715) { - if (input[4] < 25.466583) { - var96 = -0.17856607; - } else { - var96 = 0.111162156; - } - } else { - if (input[1] < 173.9191) { - var96 = 0.31346008; - } else { - var96 = 0.05056151; - } - } - } else { - if (input[7] < 0.017428085) { - if (input[7] < 0.009574198) { - var96 = -0.0014704623; - } else { - var96 = 0.019241083; - } - } else { - if (input[5] < 21.6294) { - var96 = -0.11818913; - } else { - var96 = -0.008877133; - } - } - } - } - } else { - if (input[5] < 19.125778) { - if (input[4] < 25.647543) { - if (input[0] < 564.8027) { - var96 = 0.51581687; - } else { - if (input[3] < 6.0) { - var96 = -0.091798864; - } else { - var96 = 0.20529638; - } - } - } else { - var96 = -0.06499319; - } - } else { - if (input[1] < 171.54358) { - if (input[6] < 0.026795352) { - if (input[6] < 0.013054227) { - var96 = -0.09550257; - } else { - var96 = 0.1984415; - } - } else { - if (input[6] < 0.046560727) { - var96 = -0.20843221; - } else { - var96 = 0.0445538; - } - } - } else { - if (input[2] < 0.3723327) { - if (input[7] < 0.037121538) { - var96 = 0.078614965; - } else { - var96 = 0.2849888; - } - } else { - var96 = -0.06752213; - } - } - } - } - } - double var97; - if (input[7] < 0.000003799362) { - if (input[3] < 7.0) { - if (input[0] < 623.2792) { - if (input[0] < 570.25055) { - if (input[6] < 2.5102012) { - if (input[1] < 143.61688) { - var97 = -0.2656622; - } else { - var97 = -0.042285077; - } - } else { - if (input[5] < 24.069965) { - var97 = 0.12956662; - } else { - var97 = -0.09442302; - } - } - } else { - if (input[2] < 0.04563713) { - if (input[0] < 591.9396) { - var97 = -0.041741744; - } else { - var97 = -0.17965603; - } - } else { - if (input[5] < 17.57988) { - var97 = 0.039867952; - } else { - var97 = 0.27416316; - } - } - } - } else { - if (input[2] < 0.076109886) { - if (input[5] < 24.15352) { - if (input[5] < 20.834808) { - var97 = 0.07351042; - } else { - var97 = -0.31559995; - } - } else { - if (input[1] < 115.326904) { - var97 = 0.042040918; - } else { - var97 = 0.24403884; - } - } - } else { - if (input[1] < 193.68164) { - if (input[5] < 19.301468) { - var97 = -0.41939783; - } else { - var97 = -0.16711897; - } - } else { - var97 = -0.043148335; - } - } - } - } else { - if (input[5] < 27.03375) { - if (input[1] < 96.294495) { - if (input[0] < 647.514) { - if (input[1] < 77.55432) { - var97 = 0.004567934; - } else { - var97 = -0.19868024; - } - } else { - var97 = 0.23932669; - } - } else { - if (input[2] < 0.16260886) { - if (input[1] < 194.03192) { - var97 = 0.37673247; - } else { - var97 = 0.08706665; - } - } else { - var97 = -0.114341155; - } - } - } else { - var97 = -0.17206134; - } - } - } else { - if (input[7] < 0.000020908421) { - if (input[0] < 578.47174) { - if (input[0] < 569.34753) { - if (input[0] < 431.5945) { - if (input[1] < 150.89111) { - var97 = -0.037861045; - } else { - var97 = 0.15458566; - } - } else { - if (input[1] < 115.16882) { - var97 = -0.26035947; - } else { - var97 = 0.004208072; - } - } - } else { - if (input[6] < 2.5102012) { - if (input[2] < 0.21767628) { - var97 = 0.4479623; - } else { - var97 = 0.06082348; - } - } else { - var97 = -0.07043992; - } - } - } else { - if (input[0] < 667.30505) { - if (input[5] < 28.613876) { - if (input[4] < 1054.0984) { - var97 = -0.25369984; - } else { - var97 = -0.10638075; - } - } else { - var97 = 0.14436752; - } - } else { - if (input[6] < 1.2666034) { - var97 = 0.27659342; - } else { - if (input[3] < 10.0) { - var97 = -0.2635747; - } else { - var97 = 0.16864254; - } - } - } - } - } else { - if (input[4] < 873.4576) { - if (input[2] < 0.32127088) { - if (input[6] < 0.113757454) { - if (input[4] < 58.806583) { - var97 = 0.00023529575; - } else { - var97 = -0.07131096; - } - } else { - if (input[3] < 14.0) { - var97 = -0.0049700453; - } else { - var97 = 0.19886696; - } - } - } else { - if (input[4] < 67.75224) { - if (input[3] < 17.0) { - var97 = -0.08927706; - } else { - var97 = 0.065751754; - } - } else { - if (input[3] < 38.0) { - var97 = -0.21858992; - } else { - var97 = -0.0028410028; - } - } - } - } else { - if (input[5] < 24.626286) { - if (input[2] < 0.300006) { - var97 = -0.12706517; - } else { - if (input[5] < 18.949379) { - var97 = -0.09797414; - } else { - var97 = 0.24148461; - } - } - } else { - if (input[5] < 26.059116) { - if (input[3] < 7.0) { - var97 = -0.05752931; - } else { - var97 = -0.2859255; - } - } else { - if (input[1] < 577.64667) { - var97 = 0.25439933; - } else { - var97 = -0.21164308; - } - } - } - } - } - } - double var98; - if (input[5] < 22.351292) { - if (input[3] < 19.0) { - if (input[1] < 347.76187) { - if (input[1] < 346.66638) { - if (input[3] < 17.0) { - if (input[5] < 18.949379) { - var98 = -0.0024268902; - } else { - var98 = 0.006427586; - } - } else { - if (input[0] < 530.13635) { - var98 = 0.043792784; - } else { - var98 = -0.25357145; - } - } - } else { - if (input[7] < 0.0024513172) { - var98 = 0.61511075; - } else { - if (input[3] < 6.0) { - var98 = -0.18124509; - } else { - var98 = 0.13508765; - } - } - } - } else { - if (input[5] < 20.077265) { - if (input[0] < 549.8694) { - if (input[7] < 0.0070044855) { - var98 = 0.13891569; - } else { - var98 = -0.14922687; - } - } else { - if (input[2] < 0.18675008) { - var98 = -0.042564332; - } else { - var98 = 0.09317386; - } - } - } else { - if (input[1] < 347.97607) { - if (input[0] < 567.47864) { - var98 = -0.03637767; - } else { - var98 = -0.32935014; - } - } else { - if (input[4] < 22.235271) { - var98 = 0.0706038; - } else { - var98 = -0.04455369; - } - } - } - } - } else { - if (input[5] < 21.8264) { - if (input[0] < 612.42395) { - if (input[1] < 1184.6289) { - if (input[7] < 0.0022020095) { - var98 = -0.07079888; - } else { - var98 = 0.18519548; - } - } else { - if (input[0] < 512.06805) { - var98 = 0.19461735; - } else { - var98 = -0.18404838; - } - } - } else { - if (input[1] < 325.458) { - var98 = 0.2366768; - } else { - if (input[0] < 653.56573) { - var98 = -0.19983499; - } else { - var98 = 0.039932158; - } - } - } - } else { - if (input[5] < 22.098291) { - if (input[3] < 20.0) { - var98 = -0.0015027275; - } else { - var98 = 0.31200135; - } - } else { - if (input[5] < 22.210117) { - if (input[5] < 22.173851) { - var98 = 0.08735202; - } else { - var98 = -0.13998534; - } - } else { - if (input[0] < 605.7406) { - var98 = 0.2506639; - } else { - var98 = -0.006417539; - } - } - } - } - } - } else { - if (input[5] < 23.907497) { - if (input[3] < 9.0) { - if (input[2] < 0.1785326) { - if (input[2] < 0.15095592) { - if (input[7] < 0.005262675) { - var98 = -0.031139176; - } else { - var98 = -0.002040718; - } - } else { - if (input[4] < 35.880825) { - var98 = -0.00452999; - } else { - var98 = 0.11877361; - } - } - } else { - if (input[5] < 23.252285) { - if (input[1] < 138.08691) { - var98 = 0.25364897; - } else { - var98 = -0.054258253; - } - } else { - if (input[6] < 0.069410756) { - var98 = -0.36241817; - } else { - var98 = -0.145004; - } - } - } - } else { - if (input[5] < 22.536089) { - if (input[7] < 0.0033310084) { - if (input[2] < 0.15468198) { - var98 = 0.23443164; - } else { - var98 = 0.0018630335; - } - } else { - if (input[7] < 0.007193277) { - var98 = -0.07193108; - } else { - var98 = -0.26448688; - } - } - } else { - if (input[4] < 33.871582) { - if (input[7] < 0.0037578957) { - var98 = 0.18164471; - } else { - var98 = 0.026907893; - } - } else { - if (input[0] < 502.38867) { - var98 = 0.09353052; - } else { - var98 = -0.018931389; - } - } - } - } - } else { - if (input[5] < 24.451618) { - if (input[0] < 615.92804) { - if (input[0] < 613.5429) { - if (input[7] < 0.005712156) { - var98 = 0.02475759; - } else { - var98 = -0.017353931; - } - } else { - if (input[5] < 24.235641) { - var98 = -0.04449751; - } else { - var98 = -0.4117124; - } - } - } else { - if (input[0] < 620.777) { - if (input[1] < 171.00562) { - var98 = 0.4553746; - } else { - var98 = 0.07147512; - } - } else { - if (input[7] < 0.000003799362) { - var98 = -0.2941458; - } else { - var98 = 0.06704928; - } - } - } - } else { - if (input[5] < 24.538595) { - if (input[3] < 11.0) { - if (input[0] < 563.0628) { - var98 = -0.021343661; - } else { - var98 = -0.16739714; - } - } else { - if (input[2] < 0.23885596) { - var98 = 0.048979804; - } else { - var98 = 0.37946188; - } - } - } else { - if (input[0] < 651.1857) { - if (input[4] < 24.331453) { - var98 = 0.005444887; - } else { - var98 = -0.0078024366; - } - } else { - if (input[1] < 171.21246) { - var98 = -0.032936048; - } else { - var98 = 0.051770084; - } - } - } - } - } - } - double var99; - if (input[7] < 0.0037865257) { - if (input[3] < 8.0) { - if (input[0] < 634.2887) { - if (input[0] < 632.9928) { - if (input[1] < 143.84497) { - if (input[1] < 143.61688) { - var99 = -0.0057054455; - } else { - var99 = -0.15427671; - } - } else { - if (input[5] < 26.379164) { - var99 = 0.021731809; - } else { - var99 = -0.026336126; - } - } - } else { - if (input[6] < 0.0413519) { - if (input[7] < 0.0022685162) { - var99 = -0.05546972; - } else { - var99 = 0.2719604; - } - } else { - if (input[7] < 0.0026282698) { - var99 = 0.10013322; - } else { - var99 = -0.28874898; - } - } - } - } else { - if (input[0] < 649.94415) { - if (input[2] < 0.05706811) { - if (input[3] < 6.0) { - var99 = 0.12206871; - } else { - var99 = -0.09181206; - } - } else { - if (input[1] < 173.5393) { - var99 = -0.04673974; - } else { - var99 = -0.12630203; - } - } - } else { - if (input[4] < 23.523321) { - if (input[0] < 677.4847) { - var99 = 0.2910698; - } else { - var99 = -0.058789056; - } - } else { - if (input[6] < 0.028638396) { - var99 = -0.06813077; - } else { - var99 = 0.011731453; - } - } - } - } - } else { - if (input[4] < 29.657753) { - if (input[0] < 514.7731) { - if (input[6] < 0.05412499) { - if (input[1] < 140.95532) { - var99 = 0.04613586; - } else { - var99 = -0.20234543; - } - } else { - if (input[1] < 120.64625) { - var99 = -0.08085628; - } else { - var99 = 0.2022182; - } - } - } else { - if (input[0] < 530.13635) { - if (input[1] < 78.60242) { - var99 = -0.18413892; - } else { - var99 = 0.49589634; - } - } else { - if (input[5] < 17.742842) { - var99 = 0.31873986; - } else { - var99 = 0.08513192; - } - } - } - } else { - if (input[4] < 35.71706) { - if (input[1] < 367.2591) { - if (input[7] < 0.0022020095) { - var99 = 0.17128654; - } else { - var99 = 0.007830845; - } - } else { - if (input[4] < 32.032806) { - var99 = -0.17429945; - } else { - var99 = 0.18984948; - } - } - } else { - if (input[6] < 0.05746576) { - if (input[2] < 0.16058685) { - var99 = -0.015454407; - } else { - var99 = -0.11294771; - } - } else { - if (input[2] < 0.20476818) { - var99 = 0.024489118; - } else { - var99 = -0.009822149; - } - } - } - } - } - } else { - if (input[0] < 572.9116) { - if (input[3] < 7.0) { - if (input[5] < 24.952822) { - if (input[5] < 24.362743) { - if (input[5] < 24.27795) { - var99 = -0.0047393795; - } else { - var99 = 0.14304416; - } - } else { - if (input[6] < 0.0031386863) { - var99 = 0.24027428; - } else { - var99 = -0.06059457; - } - } - } else { - if (input[4] < 18.692837) { - if (input[0] < 487.4292) { - var99 = 0.016413497; - } else { - var99 = -0.036053557; - } - } else { - if (input[4] < 34.82185) { - var99 = 0.033662472; - } else { - var99 = 0.20703654; - } - } - } - } else { - if (input[0] < 555.14606) { - if (input[4] < 17.400011) { - if (input[7] < 0.01122595) { - var99 = 0.12786947; - } else { - var99 = 0.0018907362; - } - } else { - if (input[6] < 0.046959374) { - var99 = -0.03352008; - } else { - var99 = 0.0074020512; - } - } - } else { - if (input[7] < 0.007757587) { - if (input[1] < 154.10083) { - var99 = -0.12185065; - } else { - var99 = -0.0116570005; - } - } else { - if (input[7] < 0.01196178) { - var99 = -0.17540857; - } else { - var99 = 0.0038687594; - } - } - } - } - } else { - if (input[7] < 0.0041569136) { - if (input[5] < 21.982788) { - if (input[5] < 20.706615) { - if (input[4] < 24.686386) { - var99 = 0.057983566; - } else { - var99 = -0.05726354; - } - } else { - if (input[0] < 595.0893) { - var99 = -0.099902794; - } else { - var99 = 0.13686803; - } - } - } else { - if (input[0] < 575.62115) { - if (input[4] < 25.379398) { - var99 = -0.07881704; - } else { - var99 = 0.26216108; - } - } else { - if (input[6] < 0.022947546) { - var99 = 0.010709189; - } else { - var99 = -0.08224428; - } - } - } - } else { - if (input[6] < 0.03472593) { - if (input[7] < 0.006262521) { - if (input[7] < 0.004320392) { - var99 = 0.04324277; - } else { - var99 = -0.022901148; - } - } else { - if (input[6] < 0.024815487) { - var99 = 0.0030109563; - } else { - var99 = 0.03124071; - } - } - } else { - if (input[2] < 0.105960846) { - if (input[0] < 576.4887) { - var99 = 0.21068656; - } else { - var99 = 0.05508832; - } - } else { - if (input[1] < 202.09811) { - var99 = -0.045104988; - } else { - var99 = 0.027278272; - } - } - } - } - } - } - double var100; - var100 = sigmoid(var0 + var1 + var2 + var3 + var4 + var5 + var6 + var7 + var8 + var9 + var10 + var11 + var12 + var13 + var14 + var15 + var16 + var17 + var18 + var19 + var20 + var21 + var22 + var23 + var24 + var25 + var26 + var27 + var28 + var29 + var30 + var31 + var32 + var33 + var34 + var35 + var36 + var37 + var38 + var39 + var40 + var41 + var42 + var43 + var44 + var45 + var46 + var47 + var48 + var49 + var50 + var51 + var52 + var53 + var54 + var55 + var56 + var57 + var58 + var59 + var60 + var61 + var62 + var63 + var64 + var65 + var66 + var67 + var68 + var69 + var70 + var71 + var72 + var73 + var74 + var75 + var76 + var77 + var78 + var79 + var80 + var81 + var82 + var83 + var84 + var85 + var86 + var87 + var88 + var89 + var90 + var91 + var92 + var93 + var94 + var95 + var96 + var97 + var98 + var99); - //memcpy(output, (double[]){1.0 - var100, var100}, 2 * sizeof(double)); - return var100; -} - -} - -#endif diff --git a/TrkHitReco/src/FlagBkgHits_module.cc b/TrkHitReco/src/FlagBkgHits_module.cc index c80f235c49..5e40c2f1f9 100644 --- a/TrkHitReco/src/FlagBkgHits_module.cc +++ b/TrkHitReco/src/FlagBkgHits_module.cc @@ -71,9 +71,8 @@ namespace mu2e float cperr2_; int const debug_; float kerasQ_; - int iev_; - void classifyCluster(BkgClusterCollection& bkgccol, StrawHitFlagCollection& chfcol, const ComboHitCollection& chcol, std::vector& hitToClusterMap) const; + void classifyCluster(BkgClusterCollection& bkgccol, BkgClusterHitCollection& bkghitcol, StrawHitFlagCollection& chfcol, const ComboHitCollection& chcol) const; int countProton(BkgClusterCollection& bkgccol, StrawHitFlagCollection& chfcol, const ComboHitCollection& chcol) const; }; @@ -90,8 +89,7 @@ namespace mu2e minfrac_( config().minFrac()), bkgmsk_( config().backgroundMask()), debug_( config().debugLevel()), - kerasQ_( config().kerasQuality()), - iev_(0) + kerasQ_( config().kerasQuality()) { ConfigFileLookupPolicy configFile; produces(); @@ -157,88 +155,65 @@ namespace mu2e auto chH = event.getValidHandle(chtoken_); const ComboHitCollection& chcol = *chH.product(); unsigned nch = chcol.size(); - BkgClusterCollection bkgccol; - BkgClusterHitCollection bkghitcol; - bkgccol.reserve(nch/2); - if (savebkg_) bkghitcol.reserve(nch); + auto bkgccol = std::make_unique(); + auto bkghitcol = std::make_unique(); + bkgccol->reserve(nch/2); + bkghitcol->assign(nch, BkgClusterHit(999.0, StrawHitFlag())); //Pre-fill with defaults + //bkghitcol.reserve(nch); - clusterer_->findClusters(bkgccol, chcol); + clusterer_->findClusters(*bkgccol, chcol); StrawHitFlagCollection chfcol(nch); - std::vector hitToClusterMap(nch, -1); - classifyCluster(bkgccol, chfcol, chcol, hitToClusterMap); + classifyCluster(*bkgccol, *bkghitcol, chfcol, chcol); auto chcol_out = std::make_unique(); - if(chfcol.size()>0){ - // same parent as the original collection + if(!chfcol.empty()){ if(level_ == chcol.level()){ chcol_out->setSameParent(chcol); chcol_out->reserve(nch); - for(size_t ich=0;ich < nch; ++ich) { + for(size_t ich=0; ich < nch; ++ich) { StrawHitFlag const& flag = chfcol[ich]; - if (! filter_ || !flag.hasAnyProperty(bkgmsk_)) { - // write out hits + if (!filter_ || !flag.hasAnyProperty(bkgmsk_)) { chcol_out->push_back(chcol[ich]); chcol_out->back()._flag.merge(flag); } } - } else { - // go down to the specified level + } + else { + // Sub-level logic remains same but uses reserve/push_back effectively auto pptr = chcol.parent(level_); auto const& chcol_p = *pptr; chcol_out->setSameParent(chcol_p); ComboHitCollection::SHIV shiv; - chcol_out->reserve(chcol_p.size()*2); - for(size_t ich=0;ich < nch; ++ich) { - shiv.clear(); + chcol_out->reserve(chcol_p.size()); + for(size_t ich=0; ich < nch; ++ich) { StrawHitFlag const& flag = chfcol[ich]; - if (! filter_ || !flag.hasAnyProperty(bkgmsk_)) { - // write out hits - if(&chcol_p == chcol.fillStrawHitIndices(ich,shiv,level_)){ + if (!filter_ || !flag.hasAnyProperty(bkgmsk_)) { + if(&chcol_p == chcol.fillStrawHitIndices(ich, shiv, level_)){ for(auto ishi : shiv ){ chcol_out->push_back(chcol_p[ishi]); chcol_out->back()._flag.merge(flag); } - } else { - throw cet::exception("RECO")<< "FlagBkgHits: inconsistent ComboHits" << std::endl; } } } - if((! filter_) && chcol_out->size() != chcol_p.size()) - throw cet::exception("RECO")<< "FlagBkgHits: inconsistent ComboHit output" << std::endl; - } - } - //produce BkgClusterHit info collection - if (savebkg_) { - for (size_t ich=0;ich < nch; ++ich) { - int icl = hitToClusterMap[ich]; - if (icl > -1) { - float dist = clusterer_->distance(bkgccol[icl], chcol[ich]); - bkghitcol.emplace_back(BkgClusterHit(dist, chcol[ich].flag())); - } - else - bkghitcol.emplace_back(BkgClusterHit(999.0,chcol[ich].flag())); } } event.put(std::move(chcol_out)); if(countprotons_){ - int nprotons = countProton(bkgccol, chfcol, chcol); - std::unique_ptr ppii(new IntensityInfoTimeCluster(nprotons)); - event.put(std::move(ppii)); + int nprotons = countProton(*bkgccol, chfcol, chcol); + event.put(std::make_unique(nprotons)); } //produce background collection if (savebkg_) { - event.put(std::make_unique(bkghitcol)); - event.put(std::make_unique(bkgccol)); + event.put(std::move(bkghitcol)); + event.put(std::move(bkgccol)); } - - ++iev_; - return; } //------------------------------------------------------------------------------------------ - void FlagBkgHits::classifyCluster(BkgClusterCollection& bkgccol, StrawHitFlagCollection& chfcol, const ComboHitCollection& chcol, std::vector& hitToClusterMap) const + void FlagBkgHits::classifyCluster(BkgClusterCollection& bkgccol, BkgClusterHitCollection& bkghitcol, StrawHitFlagCollection& chfcol, const ComboHitCollection& chcol) const { for (size_t icl =0; icl < bkgccol.size(); ++icl) { auto& cluster = bkgccol[icl]; @@ -250,7 +225,11 @@ namespace mu2e } for (const auto& chit : cluster.hits()){ chfcol[chit].merge(flag); - hitToClusterMap[chit] = icl; + //hitToClusterMap[chit] = icl; + if(savebkg_){ + float dist = clusterer_->distance(cluster, chcol[chit]); + bkghitcol[chit] = BkgClusterHit(dist, chcol[chit].flag()); + } } } } From 98c3b17953ff0d04a1feae164816d3fabea01d37 Mon Sep 17 00:00:00 2001 From: ehrlich-uva Date: Thu, 19 Mar 2026 01:08:35 -0500 Subject: [PATCH 19/54] Changed algorithm that pairs hits of both readout sides at CRV counters --- CRVReco/fcl/epilog_extracted_v03.fcl | 6 - CRVReco/fcl/epilog_run1a_v01.fcl | 4 - CRVReco/fcl/prolog_v11.fcl | 58 +--- CRVReco/fcl/prolog_v12.fcl | 54 +-- CRVReco/src/CrvCoincidenceFinder_module.cc | 313 +++++++----------- RecoDataProducts/inc/CrvCoincidence.hh | 39 --- RecoDataProducts/inc/CrvCoincidenceCluster.hh | 17 +- RecoDataProducts/src/classes.h | 1 - RecoDataProducts/src/classes_def.xml | 5 - 9 files changed, 132 insertions(+), 365 deletions(-) delete mode 100644 RecoDataProducts/inc/CrvCoincidence.hh diff --git a/CRVReco/fcl/epilog_extracted_v03.fcl b/CRVReco/fcl/epilog_extracted_v03.fcl index a848919499..82a030772a 100644 --- a/CRVReco/fcl/epilog_extracted_v03.fcl +++ b/CRVReco/fcl/epilog_extracted_v03.fcl @@ -5,8 +5,6 @@ physics.producers.CrvCoincidenceClusterFinder.sectorConfig : PEthreshold : 10 //PEs maxTimeDifferenceAdjacentPulses : 10 //ns maxTimeDifference : 20 //ns - minOverlapTimeAdjacentPulses : 30 //ns - minOverlapTime : 30 //ns minSlope :-6 maxSlope : 6 //width direction over thickness direction maxSlopeDifference : 3 @@ -19,8 +17,6 @@ physics.producers.CrvCoincidenceClusterFinder.sectorConfig : PEthreshold : 10 maxTimeDifferenceAdjacentPulses : 10 maxTimeDifference : 20 - minOverlapTimeAdjacentPulses : 30 - minOverlapTime : 30 minSlope :-6 maxSlope : 6 maxSlopeDifference : 3 @@ -33,8 +29,6 @@ physics.producers.CrvCoincidenceClusterFinder.sectorConfig : PEthreshold : 10 maxTimeDifferenceAdjacentPulses : 10 maxTimeDifference : 20 - minOverlapTimeAdjacentPulses : 30 - minOverlapTime : 30 minSlope :-6 maxSlope : 6 maxSlopeDifference : 3 diff --git a/CRVReco/fcl/epilog_run1a_v01.fcl b/CRVReco/fcl/epilog_run1a_v01.fcl index be3257ff89..a63dc85d70 100644 --- a/CRVReco/fcl/epilog_run1a_v01.fcl +++ b/CRVReco/fcl/epilog_run1a_v01.fcl @@ -5,8 +5,6 @@ physics.producers.CrvCoincidenceClusterFinder.sectorConfig : PEthreshold : 8 maxTimeDifferenceAdjacentPulses : 20 maxTimeDifference : 20 - minOverlapTimeAdjacentPulses : 30 - minOverlapTime : 30 minSlope :-6 maxSlope : 6 maxSlopeDifference : 3 @@ -19,8 +17,6 @@ physics.producers.CrvCoincidenceClusterFinder.sectorConfig : PEthreshold : 8 maxTimeDifferenceAdjacentPulses : 20 maxTimeDifference : 20 - minOverlapTimeAdjacentPulses : 30 - minOverlapTime : 30 minSlope :-6 maxSlope : 6 maxSlopeDifference : 3 diff --git a/CRVReco/fcl/prolog_v11.fcl b/CRVReco/fcl/prolog_v11.fcl index 624946fb03..4d481d6f5f 100644 --- a/CRVReco/fcl/prolog_v11.fcl +++ b/CRVReco/fcl/prolog_v11.fcl @@ -77,10 +77,7 @@ BEGIN_PROLOG module_type : CrvCoincidenceFinder verboseLevel : 0 crvRecoPulsesModuleLabel : "CrvRecoPulses" - #cluster settings - clusterMaxTimeDifference : 60 //ns //use looser cut for cluster time values - clusterMinOverlapTime : 10 //ns //when pulse overlap is used //to allow hits from SiPMs of opposite - //counter ends to be included + #sector-specific coincidence settings sectorConfig : [ @@ -89,8 +86,6 @@ BEGIN_PROLOG PEthreshold : 12 //PEs maxTimeDifferenceAdjacentPulses : 10 //ns maxTimeDifference : 10 //ns - minOverlapTimeAdjacentPulses : 40 //40ns (=at least 4 ADC samples) //higher threshold for this sector - minOverlapTime : 30 //30ns (=at least 3 ADC samples) minSlope :-2 maxSlope : 5 //width direction over thickness direction maxSlopeDifference : 3 @@ -103,8 +98,6 @@ BEGIN_PROLOG PEthreshold : 8 maxTimeDifferenceAdjacentPulses : 10 maxTimeDifference : 10 - minOverlapTimeAdjacentPulses : 30 - minOverlapTime : 30 minSlope :-6 maxSlope : 6 maxSlopeDifference : 3 @@ -117,8 +110,6 @@ BEGIN_PROLOG PEthreshold : 8 maxTimeDifferenceAdjacentPulses : 10 maxTimeDifference : 10 - minOverlapTimeAdjacentPulses : 30 - minOverlapTime : 30 minSlope :-6 maxSlope : 6 maxSlopeDifference : 3 @@ -131,8 +122,6 @@ BEGIN_PROLOG PEthreshold : 8 maxTimeDifferenceAdjacentPulses : 10 maxTimeDifference : 10 - minOverlapTimeAdjacentPulses : 30 - minOverlapTime : 30 minSlope :-6 maxSlope : 6 maxSlopeDifference : 3 @@ -145,8 +134,6 @@ BEGIN_PROLOG PEthreshold : 8 maxTimeDifferenceAdjacentPulses : 10 maxTimeDifference : 10 - minOverlapTimeAdjacentPulses : 30 - minOverlapTime : 30 minSlope :-6 maxSlope : 6 maxSlopeDifference : 3 @@ -159,8 +146,6 @@ BEGIN_PROLOG PEthreshold : 8 maxTimeDifferenceAdjacentPulses : 10 maxTimeDifference : 10 - minOverlapTimeAdjacentPulses : 30 - minOverlapTime : 30 minSlope :-6 maxSlope : 6 maxSlopeDifference : 3 @@ -173,8 +158,6 @@ BEGIN_PROLOG PEthreshold : 12 //higher threshold maxTimeDifferenceAdjacentPulses : 10 maxTimeDifference : 10 - minOverlapTimeAdjacentPulses : 40 //higher threshold - minOverlapTime : 30 minSlope :-5 maxSlope : 3 maxSlopeDifference : 3 @@ -187,8 +170,6 @@ BEGIN_PROLOG PEthreshold : 8 maxTimeDifferenceAdjacentPulses : 10 maxTimeDifference : 10 - minOverlapTimeAdjacentPulses : 30 - minOverlapTime : 30 minSlope :-6 maxSlope : 6 maxSlopeDifference : 3 @@ -201,8 +182,6 @@ BEGIN_PROLOG PEthreshold : 8 maxTimeDifferenceAdjacentPulses : 10 maxTimeDifference : 10 - minOverlapTimeAdjacentPulses : 30 - minOverlapTime : 30 minSlope :-6 maxSlope : 6 maxSlopeDifference : 3 @@ -215,8 +194,6 @@ BEGIN_PROLOG PEthreshold : 15 maxTimeDifferenceAdjacentPulses : 10 maxTimeDifference : 20 //because of single-ended readout - minOverlapTimeAdjacentPulses : 30 - minOverlapTime : 30 minSlope :-5 maxSlope : 2 maxSlopeDifference : 3 @@ -229,8 +206,6 @@ BEGIN_PROLOG PEthreshold : 15 maxTimeDifferenceAdjacentPulses : 10 maxTimeDifference : 20 //because of single-ended readout - minOverlapTimeAdjacentPulses : 30 - minOverlapTime : 30 minSlope :-5 maxSlope : 2 maxSlopeDifference : 3 @@ -243,8 +218,6 @@ BEGIN_PROLOG PEthreshold : 8 maxTimeDifferenceAdjacentPulses : 20 //to increase veto efficiency maxTimeDifference : 20 //to increase veto efficiency - minOverlapTimeAdjacentPulses : 30 - minOverlapTime : 30 minSlope :-4 maxSlope : 3 maxSlopeDifference : 3 @@ -257,8 +230,6 @@ BEGIN_PROLOG PEthreshold : 8 maxTimeDifferenceAdjacentPulses : 20 //to increase veto efficiency maxTimeDifference : 20 //to increase veto efficiency - minOverlapTimeAdjacentPulses : 30 - minOverlapTime : 30 minSlope :-6 maxSlope : 6 maxSlopeDifference : 3 @@ -271,8 +242,6 @@ BEGIN_PROLOG PEthreshold : 8 maxTimeDifferenceAdjacentPulses : 20 //to increase veto efficiency maxTimeDifference : 20 //to increase veto efficiency - minOverlapTimeAdjacentPulses : 30 - minOverlapTime : 30 minSlope :-6 maxSlope : 6 maxSlopeDifference : 3 @@ -285,8 +254,6 @@ BEGIN_PROLOG PEthreshold : 20 maxTimeDifferenceAdjacentPulses : 10 maxTimeDifference : 20 //because of single-ended readout - minOverlapTimeAdjacentPulses : 40 //higher threshold - minOverlapTime : 30 minSlope : 0 maxSlope : 3 maxSlopeDifference : 3 @@ -299,8 +266,6 @@ BEGIN_PROLOG PEthreshold : 20 maxTimeDifferenceAdjacentPulses : 10 maxTimeDifference : 20 //because of single-ended readout - minOverlapTimeAdjacentPulses : 40 //higher threshold - minOverlapTime : 30 minSlope : 0 maxSlope : 3 maxSlopeDifference : 3 @@ -313,8 +278,6 @@ BEGIN_PROLOG PEthreshold : 8 maxTimeDifferenceAdjacentPulses : 10 maxTimeDifference : 30 //because of single-ended readout - minOverlapTimeAdjacentPulses : 40 //higher threshold - minOverlapTime : 30 minSlope : -2 maxSlope : 0.01 //so that all slopes of 0 are included even if they appear as e.g. 1.0e-15 maxSlopeDifference : 3 @@ -327,8 +290,6 @@ BEGIN_PROLOG PEthreshold : 8 maxTimeDifferenceAdjacentPulses : 10 maxTimeDifference : 20 - minOverlapTimeAdjacentPulses : 30 - minOverlapTime : 30 minSlope :-6 maxSlope : 6 maxSlopeDifference : 3 @@ -341,8 +302,6 @@ BEGIN_PROLOG PEthreshold : 8 maxTimeDifferenceAdjacentPulses : 10 maxTimeDifference : 20 - minOverlapTimeAdjacentPulses : 30 - minOverlapTime : 30 minSlope :-6 maxSlope : 6 maxSlopeDifference : 3 @@ -355,8 +314,6 @@ BEGIN_PROLOG PEthreshold : 8 maxTimeDifferenceAdjacentPulses : 10 maxTimeDifference : 20 - minOverlapTimeAdjacentPulses : 30 - minOverlapTime : 30 minSlope :-6 maxSlope : 6 maxSlopeDifference : 3 @@ -369,8 +326,6 @@ BEGIN_PROLOG PEthreshold : 8 maxTimeDifferenceAdjacentPulses : 10 maxTimeDifference : 20 - minOverlapTimeAdjacentPulses : 30 - minOverlapTime : 30 minSlope :-6 maxSlope : 6 maxSlopeDifference : 3 @@ -383,8 +338,6 @@ BEGIN_PROLOG PEthreshold : 8 maxTimeDifferenceAdjacentPulses : 10 maxTimeDifference : 10 - minOverlapTimeAdjacentPulses : 30 - minOverlapTime : 30 minSlope :-6 maxSlope : 6 maxSlopeDifference : 3 @@ -397,8 +350,6 @@ BEGIN_PROLOG PEthreshold : 8 maxTimeDifferenceAdjacentPulses : 10 maxTimeDifference : 10 - minOverlapTimeAdjacentPulses : 30 - minOverlapTime : 30 minSlope :-6 maxSlope : 6 maxSlopeDifference : 3 @@ -411,8 +362,6 @@ BEGIN_PROLOG PEthreshold : 8 maxTimeDifferenceAdjacentPulses : 10 maxTimeDifference : 10 - minOverlapTimeAdjacentPulses : 30 - minOverlapTime : 30 minSlope :-6 maxSlope : 6 maxSlopeDifference : 3 @@ -425,8 +374,6 @@ BEGIN_PROLOG PEthreshold : 8 maxTimeDifferenceAdjacentPulses : 10 maxTimeDifference : 10 - minOverlapTimeAdjacentPulses : 30 - minOverlapTime : 30 minSlope :-6 maxSlope : 6 maxSlopeDifference : 3 @@ -436,9 +383,6 @@ BEGIN_PROLOG } ] #other settings - usePulseOverlaps : false //automatically uses noFitReco option - useNoFitReco : false - usePEsPulseHeight : false //using the PEs that were calculated using the pulse height instead of pulse area bigClusterThreshold : 50000 //disables it fiberSignalSpeed : 140 //140 mm/ns //FIXME: The correct value should be 175 mm/ns. timeOffset : 34.5 //34.5 ns diff --git a/CRVReco/fcl/prolog_v12.fcl b/CRVReco/fcl/prolog_v12.fcl index 565aca65d6..3e2b2f5f6e 100644 --- a/CRVReco/fcl/prolog_v12.fcl +++ b/CRVReco/fcl/prolog_v12.fcl @@ -77,10 +77,7 @@ BEGIN_PROLOG module_type : CrvCoincidenceFinder verboseLevel : 0 crvRecoPulsesModuleLabel : "CrvRecoPulses" - #cluster settings - clusterMaxTimeDifference : 60 //ns //use looser cut for cluster time values - clusterMinOverlapTime : 10 //ns //when pulse overlap is used //to allow hits from SiPMs of opposite - //counter ends to be included + #sector-specific coincidence settings sectorConfig : [ @@ -89,8 +86,6 @@ BEGIN_PROLOG PEthreshold : 12 //PEs maxTimeDifferenceAdjacentPulses : 10 //ns maxTimeDifference : 10 //ns - minOverlapTimeAdjacentPulses : 40 //40ns (=at least 4 ADC samples) //higher threshold for this sector - minOverlapTime : 30 //30ns (=at least 3 ADC samples) minSlope :-2 maxSlope : 5 //width direction over thickness direction maxSlopeDifference : 3 @@ -103,8 +98,6 @@ BEGIN_PROLOG PEthreshold : 8 maxTimeDifferenceAdjacentPulses : 10 maxTimeDifference : 10 - minOverlapTimeAdjacentPulses : 30 - minOverlapTime : 30 minSlope :-6 maxSlope : 6 maxSlopeDifference : 3 @@ -117,8 +110,6 @@ BEGIN_PROLOG PEthreshold : 8 maxTimeDifferenceAdjacentPulses : 10 maxTimeDifference : 10 - minOverlapTimeAdjacentPulses : 30 - minOverlapTime : 30 minSlope :-6 maxSlope : 6 maxSlopeDifference : 3 @@ -131,8 +122,6 @@ BEGIN_PROLOG PEthreshold : 8 maxTimeDifferenceAdjacentPulses : 10 maxTimeDifference : 10 - minOverlapTimeAdjacentPulses : 30 - minOverlapTime : 30 minSlope :-6 maxSlope : 6 maxSlopeDifference : 3 @@ -145,8 +134,6 @@ BEGIN_PROLOG PEthreshold : 8 maxTimeDifferenceAdjacentPulses : 10 maxTimeDifference : 10 - minOverlapTimeAdjacentPulses : 30 - minOverlapTime : 30 minSlope :-6 maxSlope : 6 maxSlopeDifference : 3 @@ -159,8 +146,6 @@ BEGIN_PROLOG PEthreshold : 8 maxTimeDifferenceAdjacentPulses : 10 maxTimeDifference : 10 - minOverlapTimeAdjacentPulses : 30 - minOverlapTime : 30 minSlope :-6 maxSlope : 6 maxSlopeDifference : 3 @@ -173,8 +158,6 @@ BEGIN_PROLOG PEthreshold : 12 //higher threshold maxTimeDifferenceAdjacentPulses : 10 maxTimeDifference : 10 - minOverlapTimeAdjacentPulses : 40 //higher threshold - minOverlapTime : 30 minSlope :-5 maxSlope : 3 maxSlopeDifference : 3 @@ -187,8 +170,6 @@ BEGIN_PROLOG PEthreshold : 8 maxTimeDifferenceAdjacentPulses : 10 maxTimeDifference : 10 - minOverlapTimeAdjacentPulses : 30 - minOverlapTime : 30 minSlope :-6 maxSlope : 6 maxSlopeDifference : 3 @@ -201,8 +182,6 @@ BEGIN_PROLOG PEthreshold : 8 maxTimeDifferenceAdjacentPulses : 10 maxTimeDifference : 10 - minOverlapTimeAdjacentPulses : 30 - minOverlapTime : 30 minSlope :-6 maxSlope : 6 maxSlopeDifference : 3 @@ -215,8 +194,6 @@ BEGIN_PROLOG PEthreshold : 15 maxTimeDifferenceAdjacentPulses : 10 maxTimeDifference : 20 //because of single-ended readout - minOverlapTimeAdjacentPulses : 30 - minOverlapTime : 30 minSlope :-5 maxSlope : 2 maxSlopeDifference : 3 @@ -229,8 +206,6 @@ BEGIN_PROLOG PEthreshold : 15 maxTimeDifferenceAdjacentPulses : 10 maxTimeDifference : 20 //because of single-ended readout - minOverlapTimeAdjacentPulses : 30 - minOverlapTime : 30 minSlope :-5 maxSlope : 2 maxSlopeDifference : 3 @@ -243,8 +218,6 @@ BEGIN_PROLOG PEthreshold : 8 maxTimeDifferenceAdjacentPulses : 20 //to increase veto efficiency maxTimeDifference : 20 //to increase veto efficiency - minOverlapTimeAdjacentPulses : 30 - minOverlapTime : 30 minSlope :-4 maxSlope : 3 maxSlopeDifference : 3 @@ -257,8 +230,6 @@ BEGIN_PROLOG PEthreshold : 8 maxTimeDifferenceAdjacentPulses : 20 //to increase veto efficiency maxTimeDifference : 20 //to increase veto efficiency - minOverlapTimeAdjacentPulses : 30 - minOverlapTime : 30 minSlope :-6 maxSlope : 6 maxSlopeDifference : 3 @@ -271,8 +242,6 @@ BEGIN_PROLOG PEthreshold : 8 maxTimeDifferenceAdjacentPulses : 20 //to increase veto efficiency maxTimeDifference : 20 //to increase veto efficiency - minOverlapTimeAdjacentPulses : 30 - minOverlapTime : 30 minSlope :-6 maxSlope : 6 maxSlopeDifference : 3 @@ -285,8 +254,6 @@ BEGIN_PROLOG PEthreshold : 20 maxTimeDifferenceAdjacentPulses : 10 maxTimeDifference : 20 //because of single-ended readout - minOverlapTimeAdjacentPulses : 40 //higher threshold - minOverlapTime : 30 minSlope : 0 maxSlope : 3 maxSlopeDifference : 3 @@ -299,8 +266,6 @@ BEGIN_PROLOG PEthreshold : 20 maxTimeDifferenceAdjacentPulses : 10 maxTimeDifference : 20 //because of single-ended readout - minOverlapTimeAdjacentPulses : 40 //higher threshold - minOverlapTime : 30 minSlope : 0 maxSlope : 3 maxSlopeDifference : 3 @@ -313,8 +278,6 @@ BEGIN_PROLOG PEthreshold : 8 maxTimeDifferenceAdjacentPulses : 10 maxTimeDifference : 30 //because of single-ended readout - minOverlapTimeAdjacentPulses : 40 //higher threshold - minOverlapTime : 30 minSlope : -2 maxSlope : 0.01 //so that all slopes of 0 are included even if they appear as e.g. 1.0e-14 maxSlopeDifference : 3 @@ -327,8 +290,6 @@ BEGIN_PROLOG PEthreshold : 8 maxTimeDifferenceAdjacentPulses : 10 maxTimeDifference : 20 - minOverlapTimeAdjacentPulses : 30 - minOverlapTime : 30 minSlope :-6 maxSlope : 6 maxSlopeDifference : 3 @@ -341,8 +302,6 @@ BEGIN_PROLOG PEthreshold : 8 maxTimeDifferenceAdjacentPulses : 10 maxTimeDifference : 20 - minOverlapTimeAdjacentPulses : 30 - minOverlapTime : 30 minSlope :-6 maxSlope : 6 maxSlopeDifference : 3 @@ -355,8 +314,6 @@ BEGIN_PROLOG PEthreshold : 8 maxTimeDifferenceAdjacentPulses : 10 maxTimeDifference : 20 - minOverlapTimeAdjacentPulses : 30 - minOverlapTime : 30 minSlope :-6 maxSlope : 6 maxSlopeDifference : 3 @@ -369,8 +326,6 @@ BEGIN_PROLOG PEthreshold : 8 maxTimeDifferenceAdjacentPulses : 10 maxTimeDifference : 20 - minOverlapTimeAdjacentPulses : 30 - minOverlapTime : 30 minSlope :-6 maxSlope : 6 maxSlopeDifference : 3 @@ -383,8 +338,6 @@ BEGIN_PROLOG PEthreshold : 8 maxTimeDifferenceAdjacentPulses : 10 maxTimeDifference : 10 - minOverlapTimeAdjacentPulses : 30 - minOverlapTime : 30 minSlope :-6 maxSlope : 6 maxSlopeDifference : 3 @@ -397,8 +350,6 @@ BEGIN_PROLOG PEthreshold : 8 maxTimeDifferenceAdjacentPulses : 10 maxTimeDifference : 10 - minOverlapTimeAdjacentPulses : 30 - minOverlapTime : 30 minSlope :-6 maxSlope : 6 maxSlopeDifference : 3 @@ -408,9 +359,6 @@ BEGIN_PROLOG } ] #other settings - usePulseOverlaps : false //automatically uses noFitReco option - useNoFitReco : false - usePEsPulseHeight : false //using the PEs that were calculated using the pulse height instead of pulse area bigClusterThreshold : 50000 //disables it fiberSignalSpeed : 140 //140 mm/ns //FIXME: The correct value should be 175 mm/ns. timeOffset : 34.5 //34.5 ns diff --git a/CRVReco/src/CrvCoincidenceFinder_module.cc b/CRVReco/src/CrvCoincidenceFinder_module.cc index d65d3cb1b2..66a96afaf0 100644 --- a/CRVReco/src/CrvCoincidenceFinder_module.cc +++ b/CRVReco/src/CrvCoincidenceFinder_module.cc @@ -39,8 +39,6 @@ namespace mu2e fhicl::Atom PEthreshold{Name("PEthreshold"), Comment("PE threshold required for a coincidence")}; fhicl::Atom maxTimeDifferenceAdjacentPulses{Name("maxTimeDifferenceAdjacentPulses"), Comment("maximum time difference of pulses of adjacent channels considered for coincidences")}; fhicl::Atom maxTimeDifference{Name("maxTimeDifference"), Comment("maximum time difference of a coincidence hit combination")}; - fhicl::Atom minOverlapTimeAdjacentPulses{Name("minOverlapTimeAdjacentPulses"), Comment("minimum overlap time between pulses of adjacent channels to be considered for coincidences")}; - fhicl::Atom minOverlapTime{Name("minOverlapTime"), Comment("minimum overlap time between pulses of a coincidence hit combination")}; fhicl::Atom minSlope{Name("minSlope"), Comment("minimum slope allowed for a coincidence")}; fhicl::Atom maxSlope{Name("maxSlope"), Comment("maximum slope allowed for a coincidence")}; fhicl::Atom maxSlopeDifference{Name("maxSlopeDifference"), Comment("maximum slope difference between layers allowed for a coincidence")}; @@ -54,16 +52,9 @@ namespace mu2e using Comment=fhicl::Comment; fhicl::Atom verboseLevel{Name("verboseLevel"), Comment("verbose level")}; fhicl::Atom crvRecoPulsesModuleLabel{Name("crvRecoPulsesModuleLabel"), Comment("module label of the input CrvRecoPulses")}; - //cluster settings - fhicl::Atom clusterMaxTimeDifference{Name("clusterMaxTimeDifference"), Comment("maximum time difference between hits to be considered for a hit cluster (when overlap option is not used)")}; - fhicl::Atom clusterMinOverlapTime{Name("clusterMinOverlapTime"), Comment("minimum overlap time between hits to be considered for a hit cluster (when overlap option is used)")}; //sector-specific coincidence settings fhicl::Sequence > sectorConfig{Name("sectorConfig"), Comment("sector-specific settings")}; - //coincidence settings for overlap option - fhicl::Atom usePulseOverlaps{Name("usePulseOverlaps"), Comment("use pulse overlaps instead of peak times to determine coincidences")}; //other settings - fhicl::Atom useNoFitReco{Name("useNoFitReco"), Comment("use pulse reco results not based on a Gumbel fit")}; - fhicl::Atom usePEsPulseHeight{Name("usePEsPulseHeight"), Comment("use PEs determined by pulse height instead of pulse area")}; fhicl::Atom bigClusterThreshold{Name("bigClusterThreshold"), Comment("no coincidence check for clusters with a number of hits above this threshold")}; fhicl::Atom fiberSignalSpeed{Name("fiberSignalSpeed"), Comment("effective speed of signals inside the CRV fibers in mm/ns")}; fhicl::Atom timeOffset{Name("timeOffset"), Comment("additional time delay caused by electronics response and physical processes in ns")}; @@ -82,16 +73,8 @@ namespace mu2e int _verboseLevel; std::string _crvRecoPulsesModuleLabel; - double _initialClusterMaxTimeDifference; - double _initialClusterMinOverlapTime; - double _clusterMaxTimeDifference; - double _clusterMinOverlapTime; - std::vector _sectorConfig; - bool _usePulseOverlaps; - bool _useNoFitReco; - bool _usePEsPulseHeight; size_t _bigClusterThreshold; double _fiberSignalSpeed; double _timeOffset; @@ -114,8 +97,6 @@ namespace mu2e int PEthreshold; double maxTimeDifferenceAdjacentPulses; double maxTimeDifference; - double minOverlapTimeAdjacentPulses; - double minOverlapTime; double minSlope, maxSlope, maxSlopeDifference; int coincidenceLayers; double minClusterPEs; @@ -128,7 +109,7 @@ namespace mu2e art::Ptr _crvRecoPulse; CLHEP::Hep3Vector _pos; double _x, _y; - double _time, _timePulseStart, _timePulseEnd; + double _time; double _PEs; int _crvSector; int _layer; @@ -137,8 +118,6 @@ namespace mu2e int _PEthreshold; double _maxTimeDifferenceAdjacentPulses; double _maxTimeDifference; - double _minOverlapTimeAdjacentPulses; - double _minOverlapTime; double _minSlope, _maxSlope, _maxSlopeDifference; int _coincidenceLayers; double _minClusterPEs; @@ -149,16 +128,12 @@ namespace mu2e //(used for the final clustering process) CrvHit(const art::Ptr crvRecoPulse, const CLHEP::Hep3Vector &pos, - double x, double y, double time, double timePulseStart, double timePulseEnd, - double PEs, int crvSector, int layer, int counter, int SiPM, int PEthreshold, + double x, double y, double time, double PEs, int crvSector, int layer, int counter, int SiPM, int PEthreshold, double maxTimeDifferenceAdjacentPulses, double maxTimeDifference, - double minOverlapTimeAdjacentPulses, double minOverlapTime, double minSlope, double maxSlope, double maxSlopeDifference, int coincidenceLayers, double minClusterPEs, double maxDistance) : _crvRecoPulse(crvRecoPulse), _pos(pos), - _x(x), _y(y), _time(time), _timePulseStart(timePulseStart), _timePulseEnd(timePulseEnd), - _PEs(PEs), _crvSector(crvSector), _layer(layer), _counter(counter), _SiPM(SiPM), _PEthreshold(PEthreshold), + _x(x), _y(y), _time(time), _PEs(PEs), _crvSector(crvSector), _layer(layer), _counter(counter), _SiPM(SiPM), _PEthreshold(PEthreshold), _maxTimeDifferenceAdjacentPulses(maxTimeDifferenceAdjacentPulses), _maxTimeDifference(maxTimeDifference), - _minOverlapTimeAdjacentPulses(minOverlapTimeAdjacentPulses), _minOverlapTime(minOverlapTime), _minSlope(minSlope), _maxSlope(maxSlope), _maxSlopeDifference(maxSlopeDifference), _coincidenceLayers(coincidenceLayers), _minClusterPEs(minClusterPEs), _maxDistance(maxDistance) {} }; @@ -167,8 +142,7 @@ namespace mu2e std::unique_ptr &crvCoincidenceClusterCollection, const art::Handle &crvRecoPulseCollection); void filterHits(const std::vector &hits, std::list &hitsFiltered); - void findClusters(std::list &hits, std::vector > &clusters, - double clusterMaxTimeDifference, double clusterMinOverlapTime); + void findClusters(std::list &hits, std::vector > &clusters, double clusterMaxTimeDifference); void checkCoincidence(const std::vector &hits, std::list &coincidenceHits); bool checkCombination(std::vector::const_iterator layerIterators[], int n); @@ -178,12 +152,7 @@ namespace mu2e art::EDProducer(conf), _verboseLevel(conf().verboseLevel()), _crvRecoPulsesModuleLabel(conf().crvRecoPulsesModuleLabel()), - _clusterMaxTimeDifference(conf().clusterMaxTimeDifference()), - _clusterMinOverlapTime(conf().clusterMinOverlapTime()), _sectorConfig(conf().sectorConfig()), - _usePulseOverlaps(conf().usePulseOverlaps()), - _useNoFitReco(conf().useNoFitReco()), - _usePEsPulseHeight(conf().usePEsPulseHeight()), _bigClusterThreshold(conf().bigClusterThreshold()), _fiberSignalSpeed(conf().fiberSignalSpeed()), _timeOffset(conf().timeOffset()), @@ -192,14 +161,6 @@ namespace mu2e _totalEventsCoincidence(0) { produces(); - //get initial cluster time parameters from coincidence parameters - //initial clustering is done to keep the number of hit combinations down that need to be checked for coincidences - _initialClusterMaxTimeDifference=std::max_element(_sectorConfig.begin(), _sectorConfig.end(), - [](const SectorConfig &a, const SectorConfig &b) - {return a.maxTimeDifference() < b.maxTimeDifference();})->maxTimeDifference(); - _initialClusterMinOverlapTime=std::min_element(_sectorConfig.begin(), _sectorConfig.end(), - [](const SectorConfig &a, const SectorConfig &b) - {return a.minOverlapTime() < b.minOverlapTime();})->minOverlapTime(); } void CrvCoincidenceFinder::beginJob() @@ -255,8 +216,6 @@ namespace mu2e s.PEthreshold = sectorConfigIter->PEthreshold(); s.maxTimeDifferenceAdjacentPulses = sectorConfigIter->maxTimeDifferenceAdjacentPulses(); s.maxTimeDifference = sectorConfigIter->maxTimeDifference(); - s.minOverlapTimeAdjacentPulses = sectorConfigIter->minOverlapTimeAdjacentPulses(); - s.minOverlapTime = sectorConfigIter->minOverlapTime(); s.minSlope = sectorConfigIter->minSlope(); s.maxSlope = sectorConfigIter->maxSlope(); s.maxSlopeDifference = sectorConfigIter->maxSlopeDifference(); @@ -288,8 +247,6 @@ namespace mu2e { const art::Ptr crvRecoPulse(crvRecoPulseCollection, recoPulseIndex); - if(_usePulseOverlaps && crvRecoPulse->GetRecoPulseFlags().test(CrvRecoPulseFlagEnums::duplicateNoFitPulse)) continue; - //get information about the counter const CRSScintillatorBarIndex &crvBarIndex = crvRecoPulse->GetScintillatorBarIndex(); int sectorNumber, moduleNumber, layerNumber, barNumber; @@ -311,16 +268,9 @@ namespace mu2e double y=crvCounterPos[sector.thicknessDirection]; //get the reco pulses information - int SiPM = crvRecoPulse->GetSiPMNumber(); - + int SiPM=crvRecoPulse->GetSiPMNumber(); double time=crvRecoPulse->GetPulseTime(); - double timePulseStart=crvRecoPulse->GetPulseStart(); - double timePulseEnd=crvRecoPulse->GetPulseEnd(); float PEs =crvRecoPulse->GetPEs(); - if(_usePEsPulseHeight) PEs=crvRecoPulse->GetPEsPulseHeight(); - if(_useNoFitReco) PEs=crvRecoPulse->GetPEsNoFit(); - if(_useNoFitReco) time=crvRecoPulse->GetPulseTimeNoFit(); - if(_usePulseOverlaps) PEs=crvRecoPulse->GetPEsNoFit(); //compensate for dead or ignored channels size_t currentChannel = crvBarIndex.asUint()*CRVId::nChanPerBar + SiPM; @@ -335,10 +285,9 @@ namespace mu2e //don't split counter sides for the purpose of finding clusters sectorTypeMap[sector.sectorType].emplace_back(crvRecoPulse, crvCounterPos, - x, y, time, timePulseStart, timePulseEnd, PEs, sectorNumber, + x, y, time, PEs, sectorNumber, layerNumber, counterNumber, SiPM, sector.PEthreshold, sector.maxTimeDifferenceAdjacentPulses, sector.maxTimeDifference, - sector.minOverlapTimeAdjacentPulses, sector.minOverlapTime, sector.minSlope, sector.maxSlope, sector.maxSlopeDifference, sector.coincidenceLayers, sector.minClusterPEs,sector.initialClusterMaxDistance); } @@ -354,10 +303,19 @@ namespace mu2e std::list hitsFiltered; filterHits(hitsUnfiltered, hitsFiltered); + //find maximum coincidence time difference between hits for this sector type + //used to keep hits together in a cluster that could potentially form coincidences + float initialClusterMaxTimeDifference=0; + for(auto const §orMapEntry : _sectorMap) + { + if(sectorMapEntry.second.sectorType==crvSectorType && sectorMapEntry.second.maxTimeDifference>initialClusterMaxTimeDifference) + initialClusterMaxTimeDifference=sectorMapEntry.second.maxTimeDifference; + } + //distribute the hits into clusters //initial clustering is done to keep the number of hit combinations down that need to be checked for coincidences std::vector > clusters; - findClusters(hitsFiltered, clusters, _initialClusterMaxTimeDifference, _initialClusterMinOverlapTime); + findClusters(hitsFiltered, clusters, initialClusterMaxTimeDifference); //all hits belonging to a coincidence group are collected in a new list std::list coincidenceHits; @@ -379,9 +337,28 @@ namespace mu2e checkCoincidence(cluster1,coincidenceHits); }//loop over all cluster in sector type + //find maximum counter halflength of this sector + float maxHalfLength=0; + bool readoutSide0=false; + bool readoutSide1=false; + for(auto const §orMapEntry : _sectorMap) + { + if(sectorMapEntry.second.sectorType==crvSectorType) + { + if(sectorMapEntry.second.counterHalfLength>maxHalfLength) maxHalfLength=sectorMapEntry.second.counterHalfLength; + if(sectorMapEntry.second.sipmsAtSide0) readoutSide0=true; + if(sectorMapEntry.second.sipmsAtSide1) readoutSide1=true; + } + } + //maximum time difference between hit of opposite ends for this sector type + //based on the max coincidence time difference for this sector (already used above) and the signal travel time through the max counter length + //used to keep hits at opposite ends in one cluster (but only, if there are two readout sides) + float finalClusterMaxTimeDifference=initialClusterMaxTimeDifference; + if(readoutSide0 && readoutSide1) finalClusterMaxTimeDifference+=2.0*maxHalfLength/_fiberSignalSpeed; + //create new clusters based only on coincidence hits std::vector > coincidenceClusters; - findClusters(coincidenceHits, coincidenceClusters, _clusterMaxTimeDifference, _clusterMinOverlapTime); + findClusters(coincidenceHits, coincidenceClusters, finalClusterMaxTimeDifference); clusterProperties(crvSectorType, coincidenceClusters, crvCoincidenceClusterCollection, crvRecoPulseCollection); }//loop over all sector types @@ -411,11 +388,6 @@ namespace mu2e std::vector > crvRecoPulses; double startTime=cluster.front()._time; double endTime=cluster.front()._time; - if(_usePulseOverlaps) - { - startTime=cluster.front()._timePulseStart; - endTime=cluster.front()._timePulseEnd; - } double PEs=0; CLHEP::Hep3Vector avgCounterPos; //PE-weighted average position std::set layerSet; @@ -428,16 +400,6 @@ namespace mu2e for(auto hit=cluster.begin(); hit!=cluster.end(); ++hit) { crvRecoPulses.push_back(hit->_crvRecoPulse); - if(_usePulseOverlaps) - { - //duplicate nofit pulses are removed in the usePulseOverlap option, but should be included in the list of reco pulses - for(size_t recoPulseIndex=hit->_crvRecoPulse.key()+1; recoPulseIndexsize(); ++recoPulseIndex) - { - const art::Ptr crvRecoPulse(crvRecoPulseCollection, recoPulseIndex); - if(!crvRecoPulse->GetRecoPulseFlags().test(CrvRecoPulseFlagEnums::duplicateNoFitPulse)) break; - crvRecoPulses.push_back(crvRecoPulse); - } - } PEs+=hit->_PEs; avgCounterPos+=hit->_pos*hit->_PEs; @@ -446,17 +408,9 @@ namespace mu2e sumY +=hit->_PEs*hit->_y; sumYY+=hit->_PEs*hit->_y*hit->_y; sumXY+=hit->_PEs*hit->_x*hit->_y; - if(_usePulseOverlaps) - { - if(startTime>hit->_timePulseStart) startTime=hit->_timePulseStart; - if(endTime_timePulseEnd) endTime=hit->_timePulseEnd; - } - else - { - if(startTime>hit->_time) startTime=hit->_time; - if(endTime_time) endTime=hit->_time; - } + if(startTime>hit->_time) startTime=hit->_time; + if(endTime_time) endTime=hit->_time; if(minClusterPEs>hit->_minClusterPEs) minClusterPEs=hit->_minClusterPEs; //collect hits of individual counters @@ -478,105 +432,113 @@ namespace mu2e std::array sideHits{0,0}; std::array sidePEs{0,0}; std::array sideTimes{0,0}; //this value becomes meaningless, if a coincidence cluster spans more than one sector - //with different counter lengths. (not a problem for extrated position) - double avgHalfLength{0}; //needed, if only one readout side is available, and the center of the counter is used - double avgHitTime{0}; - CLHEP::Hep3Vector avgHitPos; + //with different counter lengths. (not a problem for extracted position) + double avgHalfLength{0};//needed, if only one readout side is available, and the center of the counter is used + double avgHitTime{0}; //if no counters with hits at both sides are found, the time is calculated from the side times + //assuming the hit occured at the center of the counters. in this case, this value becomes meaningless, + //if a coincidence cluster spans more than one sector with different counter lengths. + CLHEP::Hep3Vector avgHitPos; //if no counters with hits at both sides are found, the longitudinal coordinate is taken + //from the PE-weighted average counter center double PEbothSides{0}; //number of PEs for counters with readouts on both sides (needed to PE-weight the counter hits) //calculate average times and positions for each counter separately + //and use the loop to fill the "side" variables for(auto recoTimeIter=recoTimes.begin(); recoTimeIter!=recoTimes.end(); ++recoTimeIter) { int crvSector=recoTimeIter->second.at(0)->_crvSector; + double halfLength=_sectorMap.at(crvSector).counterHalfLength; CLHEP::Hep3Vector counterPos=recoTimeIter->second.at(0)->_pos; - //separate hits for each SiPM - std::map::const_iterator> sipmHits; + //separate hits into both sides + //and fill the "side" variables for the entire coincidence cluster and for this counter + std::array sidePEsCounter{0,0}; + std::array sideTimesCounter{0,0}; + std::array hitsPerSiPM{0,0,0,0}; + bool moreThanOneHitPerSiPM{false}; const std::vector::const_iterator> &counterHits=recoTimeIter->second; for(auto counterHit=counterHits.begin(); counterHit!=counterHits.end(); ++counterHit) { - auto sipmHit = sipmHits.find((*counterHit)->_SiPM); - if(sipmHit==sipmHits.end()) sipmHits.emplace((*counterHit)->_SiPM,*counterHit); - else - { - //if more than one hit per SiPM, use the hit with the highest PE - if(sipmHit->second->_PEs<(*counterHit)->_PEs) sipmHit->second=*counterHit; - } + int SiPM=(*counterHit)->_SiPM; + int side=SiPM%CRVId::nSidesPerBar; + sideHits[side]++; + sidePEs[side]+=(*counterHit)->_PEs; + sideTimes[side]+=(*counterHit)->_time * (*counterHit)->_PEs; //will be used for PE-weighted pulse time average + avgHalfLength+=halfLength * (*counterHit)->_PEs; //will be used for PE-weighted half length + + sidePEsCounter[side]+=(*counterHit)->_PEs; + sideTimesCounter[side]+=(*counterHit)->_time * (*counterHit)->_PEs; //will be used for PE-weighted pulse time average + hitsPerSiPM[SiPM]++; + if(hitsPerSiPM[SiPM]>1) moreThanOneHitPerSiPM=true; } //calculate average side times for this counter - std::array sideHitsCounter{0,0}; - std::array sidePEsCounter{0,0}; - std::array sideTimesCounter{0,0}; - for(auto sipmHit=sipmHits.begin(); sipmHit!=sipmHits.end(); ++sipmHit) - { - int side=sipmHit->first%CRVId::nSidesPerBar; - //use fit values and not the no-fit option - sideHitsCounter[side]++; - sidePEsCounter[side]+=sipmHit->second->_crvRecoPulse->GetPEs(); - sideTimesCounter[side]+=sipmHit->second->_crvRecoPulse->GetPulseTime()*sipmHit->second->_crvRecoPulse->GetPEs(); //PE-weighted pulse time average - } int validSides=0; for(size_t side=0; side0) {sideTimesCounter[side]/=sidePEsCounter[side]; ++validSides;} else sideTimesCounter[side]=0.0; + if(sidePEsCounter[side]>0) {sideTimesCounter[side]/=sidePEsCounter[side]; ++validSides;} + else sideTimesCounter[side]=0.0; } - //calculate some global numbers - for(size_t side=0; side0) sideTimes[side]/=sidePEs[side]; else sideTimes[side]=0.0; } + //calculate average hit times and hit position + //based on all counters that have hits on both ends + //(if possible) bool twoReadoutSides=false; if(PEbothSides>0) { + //there were counters with hits on both sides. + //only these hits are used to calculate the longitudinal position of the coincidence cluster. twoReadoutSides=true; avgHitPos/=PEbothSides; avgHitTime/=PEbothSides; } else { - //hits only at one readout side. - //longitudinal position of hit cannot be calculated. - //use the average counter position instead, i.e. use the center of the counter as longitudinal position (avgCounterPos) - //and adjust the hit time + //there were no counters with hits at both sides. + //longitudinal position of the coincidence cluster cannot be calculated. + //use the center of the counter as longitudinal position (avgCounterPos) + //there can still be hits on both sides, but they didn't occur at the same counter avgHitPos=avgCounterPos; - if(sidePEs[0]>0) + avgHalfLength/=(sidePEs[0]+sidePEs[1]); + if(sidePEs[0]>0 && sidePEs[1]>0) + { + avgHitTime=0.5*(sideTimes[0]+sideTimes[1])-avgHalfLength/_fiberSignalSpeed; + } + else if(sidePEs[0]>0) { - avgHalfLength/=sidePEs[0]; avgHitTime=sideTimes[0]-avgHalfLength/_fiberSignalSpeed; } else if(sidePEs[1]>0) { - avgHalfLength/=sidePEs[1]; avgHitTime=sideTimes[1]-avgHalfLength/_fiberSignalSpeed; } } @@ -598,12 +560,9 @@ namespace mu2e int layer=iterHit->_layer; int counter=iterHit->_counter; //counter number in one layer counted from the beginning of the counter type double time=iterHit->_time; - double timePulseStart=iterHit->_timePulseStart; - double timePulseEnd=iterHit->_timePulseEnd; int PEthreshold=iterHit->_PEthreshold; double maxTimeDifferenceAdjacentPulses=iterHit->_maxTimeDifferenceAdjacentPulses; - double minOverlapTimeAdjacentPulses=iterHit->_minOverlapTimeAdjacentPulses; //check other SiPM and the SiPMs at the adjacent counters double PEs_thisCounter=0; @@ -616,15 +575,7 @@ namespace mu2e if(iterHitAdjacent->_layer!=layer) continue; //use hits within a certain time window only - if(!_usePulseOverlaps) - { - if(fabs(iterHitAdjacent->_time-time)>maxTimeDifferenceAdjacentPulses) continue; - } - else - { - double overlapTime=std::min(iterHitAdjacent->_timePulseEnd,timePulseEnd)-std::max(iterHitAdjacent->_timePulseStart,timePulseStart); - if(overlapTime_time-time)>maxTimeDifferenceAdjacentPulses) continue; //collect all PEs of this and the adjacent counters int counterDiff=iterHitAdjacent->_counter-counter; @@ -646,7 +597,7 @@ namespace mu2e void CrvCoincidenceFinder::findClusters(std::list &hits, std::vector > &clusters, - double clusterMaxTimeDifference, double clusterMinOverlapTime) + double clusterMaxTimeDifference) { while(!hits.empty()) //run through clustering processes until all hits are distributed into clusters { @@ -675,32 +626,15 @@ namespace mu2e for(auto clusterIter=cluster.begin(); clusterIter!=cluster.end(); ++clusterIter) { double maxDistance = std::max(hitsIter->_maxDistance,clusterIter->_maxDistance); - if(_usePulseOverlaps) + if((std::fabs(hitsIter->_x-clusterIter->_x)<=maxDistance) && + (std::fabs(hitsIter->_time-clusterIter->_time)_x-clusterIter->_x)<=maxDistance) && - (hitsIter->_timePulseEnd-clusterIter->_timePulseStart>clusterMinOverlapTime) && - (clusterIter->_timePulseEnd-hitsIter->_timePulseStart>clusterMinOverlapTime)) - { - //this hit satisfied the conditions - //move it from list of hits to the current cluster - cluster.push_back(*hitsIter); - hitsIter=hits.erase(hitsIter); - erasedHit=true; - break; //no need for more comparisons with other hits in current cluster, go to the next hit in list of hits - } - } - else - { - if((std::fabs(hitsIter->_x-clusterIter->_x)<=maxDistance) && - (std::fabs(hitsIter->_time-clusterIter->_time)::const_iterator L; - if(!_usePulseOverlaps) - { - double maxTimeDifference = (*std::max_element(layerIterators,layerIterators+n, - [](L &a, L &b){return a->_maxTimeDifference < b->_maxTimeDifference;}))->_maxTimeDifference; - double timeMax = (*std::max_element(layerIterators,layerIterators+n, - [](L &a, L &b){return a->_time < b->_time;}))->_time; - double timeMin = (*std::min_element(layerIterators,layerIterators+n, - [](L &a, L &b){return a->_time < b->_time;}))->_time; - if(timeMax-timeMin>maxTimeDifference) return false; //hits don't fall within the time window - } - else - { - double minOverlapTime = (*std::min_element(layerIterators,layerIterators+n, - [](L &a, L &b){return a->_minOverlapTime < b->_minOverlapTime;}))->_minOverlapTime; - double timeMaxPulseStart = (*std::max_element(layerIterators,layerIterators+n, - [](L &a, L &b){return a->_timePulseStart < b->_timePulseStart;}))->_timePulseStart; - double timeMinPulseEnd = (*std::min_element(layerIterators,layerIterators+n, - [](L &a, L &b){return a->_timePulseEnd < b->_timePulseEnd;}))->_timePulseEnd; - if(timeMinPulseEnd-timeMaxPulseStart_maxTimeDifference < b->_maxTimeDifference;}))->_maxTimeDifference; + double timeMax = (*std::max_element(layerIterators,layerIterators+n, + [](L &a, L &b){return a->_time < b->_time;}))->_time; + double timeMin = (*std::min_element(layerIterators,layerIterators+n, + [](L &a, L &b){return a->_time < b->_time;}))->_time; + if(timeMax-timeMin>maxTimeDifference) return false; //hits don't fall within the time window double minSlope = (*std::min_element(layerIterators,layerIterators+n, [](L &a, L &b){return a->_minSlope < b->_minSlope;}))->_minSlope; diff --git a/RecoDataProducts/inc/CrvCoincidence.hh b/RecoDataProducts/inc/CrvCoincidence.hh deleted file mode 100644 index 73f4e8116a..0000000000 --- a/RecoDataProducts/inc/CrvCoincidence.hh +++ /dev/null @@ -1,39 +0,0 @@ -#ifndef RecoDataProducts_CrvCoincidence_hh -#define RecoDataProducts_CrvCoincidence_hh -// -// -// Contact person Ralf Ehrlich -// - -#include "Offline/RecoDataProducts/inc/CrvRecoPulse.hh" -#include "canvas/Persistency/Common/Ptr.h" -#include - -namespace mu2e -{ - class CrvCoincidence - { - public: - - CrvCoincidence() {} - - CrvCoincidence(const std::vector > &crvRecoPulses, int crvSectorType, - const std::vector &slopes, const std::vector &layers) : - _crvRecoPulses(crvRecoPulses), _crvSectorType(crvSectorType), _slopes(slopes), _layers(layers) {} - - const std::vector > &GetCrvRecoPulses() const {return _crvRecoPulses;} - int GetCrvSectorType() const {return _crvSectorType;} - const std::vector &GetSlopes() const {return _slopes;} - const std::vector &GetLayers() const {return _layers;} - - private: - - std::vector > _crvRecoPulses; - int _crvSectorType; - std::vector _slopes; //width direction of counter / thickness direction of counter //slope=0 means straight through the module - std::vector _layers; - }; - typedef std::vector CrvCoincidenceCollection; -} - -#endif /* RecoDataProducts_CrvCoincidence_hh */ diff --git a/RecoDataProducts/inc/CrvCoincidenceCluster.hh b/RecoDataProducts/inc/CrvCoincidenceCluster.hh index 88aa2d57c7..45bbe32ea7 100644 --- a/RecoDataProducts/inc/CrvCoincidenceCluster.hh +++ b/RecoDataProducts/inc/CrvCoincidenceCluster.hh @@ -61,10 +61,19 @@ namespace mu2e std::array _sideHits{0}; //number of hits on both readout sides of the modules of this cluster std::array _sidePEs{0}; //number of PEs on both readout sides std::array _sideTimes{0}; //average pulse times on both readout sides //entries are only valid, if the corresponding entries in sidePEs > 0; - bool _twoReadoutSides{false}; //indicates, if the average hit time and hit position are based on both readout sides - //if not, the center of counters is used for the longitudinal position - double _avgHitTime{0}; //average hit time (based on the times of both readout sides, if available) - CLHEP::Hep3Vector _avgHitPos; //average hit position (based on the times of both readout sides, if available) + //this value becomes meaningless, if a coincidence cluster spans more than one sector + //with different counter lengths. (not a problem for extracted position) + bool _twoReadoutSides{false}; //indicates, if avgHitTime and avgHitPos are based on counters with hits on both readout sides + //if not, the PE-weighted average counter center is used for the longitudinal coordinate + double _avgHitTime{0};//average hit time based on counters with hits on both readout sides, if available. + //the average hit time/pos is found by using the time difference between both sides and the fiber signal speed. + //if no counters with hits at both sides are found, the time is calculated from the side times + //assuming the hit occured at the center of the counters. in this case, this value becomes meaningless, + //if a coincidence cluster spans more than one sector with different counter lengths. + CLHEP::Hep3Vector _avgHitPos; //average hit position based on counters with hits on both readout sides, if available. + //the average hit time/pos is found by using the time difference between both sides and the fiber signal speed. + //if no counters with hits at both sides are found, the longitudinal coordinate is taken + //from the PE-weighted average counter center }; typedef std::vector CrvCoincidenceClusterCollection; } diff --git a/RecoDataProducts/src/classes.h b/RecoDataProducts/src/classes.h index d27524d284..e01765512f 100644 --- a/RecoDataProducts/src/classes.h +++ b/RecoDataProducts/src/classes.h @@ -66,7 +66,6 @@ #include "Offline/RecoDataProducts/inc/CrvDAQerror.hh" #include "Offline/RecoDataProducts/inc/CrvRecoPulse.hh" #include "Offline/RecoDataProducts/inc/CrvRecoPulseFlags.hh" -#include "Offline/RecoDataProducts/inc/CrvCoincidence.hh" #include "Offline/RecoDataProducts/inc/CrvCoincidenceCluster.hh" #include "Offline/RecoDataProducts/inc/CrvStatus.hh" #include "Offline/DataProducts/inc/CRSScintillatorBarIndex.hh" diff --git a/RecoDataProducts/src/classes_def.xml b/RecoDataProducts/src/classes_def.xml index fcb68257a5..ebd3316fc9 100644 --- a/RecoDataProducts/src/classes_def.xml +++ b/RecoDataProducts/src/classes_def.xml @@ -316,11 +316,6 @@ - - - - - From 71c6150fb6596d93237b1a15ea70e591089eb08b Mon Sep 17 00:00:00 2001 From: Namitha Chithirasreemadam Date: Thu, 19 Mar 2026 11:28:51 -0500 Subject: [PATCH 20/54] some code improvements --- TrkHitReco/inc/DBSClusterer.hh | 1 - TrkHitReco/src/DBSClusterer.cc | 56 ++++++++++++++++++---------- TrkHitReco/src/FlagBkgHits_module.cc | 14 ++++--- 3 files changed, 44 insertions(+), 27 deletions(-) diff --git a/TrkHitReco/inc/DBSClusterer.hh b/TrkHitReco/inc/DBSClusterer.hh index 2ae5217491..c6071451ec 100644 --- a/TrkHitReco/inc/DBSClusterer.hh +++ b/TrkHitReco/inc/DBSClusterer.hh @@ -10,7 +10,6 @@ #include "fhiclcpp/types/Sequence.h" #include "Offline/RecoDataProducts/inc/StrawDigi.hh" #include "Offline/TrkHitReco/inc/BkgClusterer.hh" -#include "Offline/TrkHitReco/inc/TrainBkgDiag.hxx" #include diff --git a/TrkHitReco/src/DBSClusterer.cc b/TrkHitReco/src/DBSClusterer.cc index 65a1304abb..7e23ef8b89 100644 --- a/TrkHitReco/src/DBSClusterer.cc +++ b/TrkHitReco/src/DBSClusterer.cc @@ -1,5 +1,6 @@ #include "Offline/TrkHitReco/inc/DBSClusterer.hh" #include "Offline/ConfigTools/inc/ConfigFileLookupPolicy.hh" +#include "Offline/TrkHitReco/inc/TrainBkgDiag.hxx" #include #include @@ -25,7 +26,7 @@ namespace mu2e //--------------------------------------------------------------------------------------- void DBSClusterer::init() { - //Add Classifier init here (see TNTClsuterer for example) + // Add Classifier init here (see TNTClsuterer for example) ConfigFileLookupPolicy configFile; auto kerasWgtsFile = configFile(kerasW_); sofiePtr_ = std::make_shared(kerasWgtsFile); @@ -37,13 +38,13 @@ namespace mu2e { if (chcol.empty()) return; - std::vector idx; //list of combo hit IDs + std::vector idx; // list of combo hit IDs idx.reserve(chcol.size()); for (size_t ich=0;ich inspect; inspect.reserve(idx.size()); - std::vector hitToCluster(idx.size(),unprocessedID); //number of combohits used for clustering, cluster ID + std::vector hitToCluster(idx.size(),unprocessedID); // number of combohits used for clustering, cluster ID std::vector neighbors; neighbors.reserve(256); clusters.reserve(std::max(16UL, idx.size()/10)); for (size_t i=0;i 0) nNeighbors = hit0.nStrawHits() - 1; - // Requirement: idx MUST be sorted by chcol[i].correctedTime() for this binary search to work float minTime = time0 - deltaTime_; + // Use binary search to find the first hit index where correctedTime >= minTime + // Note: idx MUST be sorted by chcol[i].correctedTime() for this binary search to work auto it_start = std::lower_bound(idx.begin(), idx.end(), minTime, [&chcol](unsigned i, float val){ return chcol[i].correctedTime() < val; }); @@ -144,7 +146,7 @@ namespace mu2e //--------------------------------------------------------------------------------------- - // this is only used for diagnosis at this point + // This is only used for diagnosis at this point float DBSClusterer::distance(const BkgCluster& cluster, const ComboHit& hit) const { float psep_x = hit.pos().x()-cluster.pos().x(); @@ -167,18 +169,26 @@ namespace mu2e return; } float sumWeight(0),crho(0),ctime(0), cz(0), cedep(0), cphi(0); + float phi_ref = chcol[cluster.hits().at(0)].phi(); for (auto& idx : cluster.hits()) { float weight = chcol[idx].nStrawHits(); float dt = chcol[idx].correctedTime(); float dr = sqrtf(chcol[idx].pos().perp2()); float dz = chcol[idx].pos().z(); float edep = chcol[idx].energyDep(); - XYZVectorF hitpos(chcol[idx].pos().x(), chcol[idx].pos().y(), chcol[idx].pos().z()); + + XYZVectorF hitpos = chcol[idx].pos(); cluster.addHitPosition(hitpos); - float dp = chcol[idx].phi(); + + float dp = hitpos.phi(); + float dphi = dp - phi_ref; + if (dphi > M_PI) dphi -= 2*M_PI; + if (dphi < M_PI) dphi += 2*M_PI; + float correctedPhi = phi_ref + dphi; + ctime += dt*weight; crho += dr*weight; - cphi += dp*weight; + cphi += correctedPhi*weight; cz += dz*weight; cedep += edep*weight; sumWeight += weight; @@ -188,6 +198,10 @@ namespace mu2e ctime /= sumWeight; cz /= sumWeight; cedep /= sumWeight; + + if (cphi > M_PI) cphi -= 2*M_PI; + if (cphi < M_PI) cphi += 2*M_PI; + cluster.time(ctime); cluster.pos(XYZVectorF(crho*cos(cphi),crho*sin(cphi),cz)); cluster.edep(cedep); @@ -197,7 +211,9 @@ namespace mu2e //--------------------------------------------------------------------------------------- void DBSClusterer::classifyCluster(BkgCluster& cluster, const ComboHitCollection& chcol){ - //code logic to classify cluster with MVA + // Code logic to classify cluster with MVA + // Clusters with less than 3 combo hits have a default keras quality of 0.0 + // and they are not flagged as background clusters if(cluster.hits().size() < 3) return; // find averages double sqrSumDeltaTime(0.),sqrSumDeltaX(0.), sqrSumDeltaY(0.), sqrSumDeltaPhi(0.); @@ -218,7 +234,7 @@ namespace mu2e if (hZ > zmax) zmax = hZ; float dx = hit.pos().x() - cluster.pos().x(); float dy = hit.pos().y() - cluster.pos().y(); - float dt = hit.time() - cluster.time(); + float dt = hit.correctedTime() - cluster.time(); sqrSumDeltaX += dx*dx; sqrSumDeltaY += dy*dy; sqrSumDeltaTime += dt*dt; @@ -230,13 +246,13 @@ namespace mu2e if(dphi_rel > phimax) phimax = dphi_rel; sqrSumDeltaPhi += dphi_rel*dphi_rel; } - // fill mva input variables + // Fill mva input variables std::array kerasvars; - kerasvars[0] = cluster.pos().Rho(); // cluster rho, cyl coor - kerasvars[1] = zmax - zmin; // zdiff - kerasvars[2] = phimax - phimin; // phidiff; - kerasvars[3] = nhits; - kerasvars[4] = std::sqrt((sqrSumDeltaX+sqrSumDeltaY)/nchits); // RMS of cluster rho + kerasvars[0] = cluster.pos().Rho(); // cluster rho, cyl coor + kerasvars[1] = zmax - zmin; // zdiff + kerasvars[2] = phimax - phimin; // phidiff; + kerasvars[3] = nhits; + kerasvars[4] = std::sqrt((sqrSumDeltaX+sqrSumDeltaY)/nchits); // RMS of cluster rho kerasvars[5] = std::sqrt(sqrSumDeltaTime/nchits); // RMS of cluster time kerasvars[6] = std::sqrt(sqrSumDeltaPhi/nchits); // RMS of cluster phi std::vector kerasout = sofiePtr_->infer(kerasvars.data()); diff --git a/TrkHitReco/src/FlagBkgHits_module.cc b/TrkHitReco/src/FlagBkgHits_module.cc index 5e40c2f1f9..c469445999 100644 --- a/TrkHitReco/src/FlagBkgHits_module.cc +++ b/TrkHitReco/src/FlagBkgHits_module.cc @@ -158,8 +158,7 @@ namespace mu2e auto bkgccol = std::make_unique(); auto bkghitcol = std::make_unique(); bkgccol->reserve(nch/2); - bkghitcol->assign(nch, BkgClusterHit(999.0, StrawHitFlag())); //Pre-fill with defaults - //bkghitcol.reserve(nch); + bkghitcol->assign(nch, BkgClusterHit(999.0, StrawHitFlag())); // Pre-fill with defaults clusterer_->findClusters(*bkgccol, chcol); @@ -187,6 +186,7 @@ namespace mu2e ComboHitCollection::SHIV shiv; chcol_out->reserve(chcol_p.size()); for(size_t ich=0; ich < nch; ++ich) { + shiv.clear(); StrawHitFlag const& flag = chfcol[ich]; if (!filter_ || !flag.hasAnyProperty(bkgmsk_)) { if(&chcol_p == chcol.fillStrawHitIndices(ich, shiv, level_)){ @@ -204,7 +204,7 @@ namespace mu2e int nprotons = countProton(*bkgccol, chfcol, chcol); event.put(std::make_unique(nprotons)); } - //produce background collection + // Produce background collection if (savebkg_) { event.put(std::move(bkghitcol)); event.put(std::move(bkgccol)); @@ -225,7 +225,6 @@ namespace mu2e } for (const auto& chit : cluster.hits()){ chfcol[chit].merge(flag); - //hitToClusterMap[chit] = icl; if(savebkg_){ float dist = clusterer_->distance(cluster, chcol[chit]); bkghitcol[chit] = BkgClusterHit(dist, chcol[chit].flag()); @@ -235,6 +234,9 @@ namespace mu2e } //------------------------------------------------------------------------------------------ + // If a hit is not flagged as background and the hit edep > 3 keV it is flagged with energysel + // as this could be a potential proton hit. The proton clusters are counted so as to have an + // alternative method for normalization. Same logic followed by DeltaFinder as well. int FlagBkgHits::countProton(BkgClusterCollection& bkgccol, StrawHitFlagCollection& chfcol, const ComboHitCollection& chcol) const { int npc(0); @@ -251,8 +253,8 @@ namespace mu2e nhighedep++; } } - //Placeholder logic, may change in the future - if(nhits > minhits_ and (float)nhighedep/nhits > minfrac_) + // Placeholder logic, may change in the future + if(nhits > minhits_ && (float)nhighedep/nhits > minfrac_) npc++; } } From c540d3c72f0e8bef5b124e24a536bddce579f13f Mon Sep 17 00:00:00 2001 From: Namitha Chithirasreemadam Date: Thu, 19 Mar 2026 12:12:22 -0500 Subject: [PATCH 21/54] bug fixes and code improvements --- TrkHitReco/inc/DBSClusterer.hh | 6 +++--- TrkHitReco/src/DBSClusterer.cc | 29 +++++++++++++++++----------- TrkHitReco/src/FlagBkgHits_module.cc | 15 +++++++++----- 3 files changed, 31 insertions(+), 19 deletions(-) diff --git a/TrkHitReco/inc/DBSClusterer.hh b/TrkHitReco/inc/DBSClusterer.hh index c6071451ec..2f7c0bf02b 100644 --- a/TrkHitReco/inc/DBSClusterer.hh +++ b/TrkHitReco/inc/DBSClusterer.hh @@ -30,7 +30,7 @@ namespace mu2e { { using Name = fhicl::Name; using Comment = fhicl::Comment; - fhicl::Atom DBSminN{ Name("DBSminExpand"), Comment("Min number neighbors for DBScan algo") }; + fhicl::Atom DBSminN{ Name("DBSminExpand"), Comment("Min number neighbors for DBScan algo") }; fhicl::Atom hitDeltaTime{ Name("DeltaTime"), Comment("Max time difference between hits") }; fhicl::Atom hitDeltaZ{ Name("DeltaZ"), Comment("Max Z difference between hits") }; fhicl::Atom hitDeltaXY{ Name("DeltaXY"), Comment("Max XY difference between hits") }; @@ -53,10 +53,10 @@ namespace mu2e { private: - int findNeighbors (unsigned ihit, const std::vector& idx, const ComboHitCollection& chcol, std::vector& neighbors); + unsigned findNeighbors (unsigned ihit, const std::vector& idx, const ComboHitCollection& chcol, std::vector& neighbors); void calculateCluster (BkgCluster& cluster, const ComboHitCollection& chcol); - int DBSminExpand_; + unsigned DBSminExpand_; float deltaTime_; float deltaZ_; float deltaXY2_; diff --git a/TrkHitReco/src/DBSClusterer.cc b/TrkHitReco/src/DBSClusterer.cc index 7e23ef8b89..5c1fc63231 100644 --- a/TrkHitReco/src/DBSClusterer.cc +++ b/TrkHitReco/src/DBSClusterer.cc @@ -5,6 +5,7 @@ #include #include #include +#include namespace mu2e @@ -26,7 +27,7 @@ namespace mu2e //--------------------------------------------------------------------------------------- void DBSClusterer::init() { - // Add Classifier init here (see TNTClsuterer for example) + // Add Classifier init here (see TNTClusterer for example) ConfigFileLookupPolicy configFile; auto kerasWgtsFile = configFile(kerasW_); sofiePtr_ = std::make_shared(kerasWgtsFile); @@ -52,6 +53,8 @@ namespace mu2e const unsigned noiseID(chcol.size()+1u); const unsigned unprocessedID(chcol.size()+2u); unsigned currentClusterID(0); + // Using a vector as a stack (DFS) instead of a queue (BFS) for + // better cache locality and to avoid frequent heap allocations std::vector inspect; inspect.reserve(idx.size()); std::vector hitToCluster(idx.size(),unprocessedID); // number of combohits used for clustering, cluster ID @@ -63,7 +66,7 @@ namespace mu2e if ( hitToCluster[i] != unprocessedID) continue; // If the neighborhood is too sparse, assign it to noise - int nNeighbors = findNeighbors(i, idx, chcol, neighbors); + unsigned nNeighbors = findNeighbors(i, idx, chcol, neighbors); if (nNeighbors < DBSminExpand_) { hitToCluster[i] = noiseID; continue; @@ -108,7 +111,7 @@ namespace mu2e //--------------------------------------------------------------------------------------- // Find the neighbors of given a point - can use any suitable distance function - int DBSClusterer::findNeighbors(unsigned ihit, const std::vector& idx, const ComboHitCollection& chcol, std::vector& neighbors) + unsigned DBSClusterer::findNeighbors(unsigned ihit, const std::vector& idx, const ComboHitCollection& chcol, std::vector& neighbors) { neighbors.clear(); const auto& hit0 = chcol[idx[ihit]]; @@ -116,11 +119,12 @@ namespace mu2e float x0 = hit0.pos().x(); float y0 = hit0.pos().y(); float z0 = hit0.pos().z(); - int nNeighbors = 0; + unsigned nNeighbors = 0; if (hit0.nStrawHits() > 0) nNeighbors = hit0.nStrawHits() - 1; float minTime = time0 - deltaTime_; - // Use binary search to find the first hit index where correctedTime >= minTime - // Note: idx MUST be sorted by chcol[i].correctedTime() for this binary search to work + // Use binary search for O(log N) entry into the time-sorted index vector. + // idx[i] contains the hit inde; chcol[idx[i]] is sorted by correctedTime. + // The comparator matches this sort order (element-to-value comparison). auto it_start = std::lower_bound(idx.begin(), idx.end(), minTime, [&chcol](unsigned i, float val){ return chcol[i].correctedTime() < val; }); @@ -182,8 +186,8 @@ namespace mu2e float dp = hitpos.phi(); float dphi = dp - phi_ref; - if (dphi > M_PI) dphi -= 2*M_PI; - if (dphi < M_PI) dphi += 2*M_PI; + if (dphi > M_PI) dphi -= 2*M_PI; + if (dphi < -M_PI) dphi += 2*M_PI; float correctedPhi = phi_ref + dphi; ctime += dt*weight; @@ -199,8 +203,8 @@ namespace mu2e cz /= sumWeight; cedep /= sumWeight; - if (cphi > M_PI) cphi -= 2*M_PI; - if (cphi < M_PI) cphi += 2*M_PI; + if (cphi > M_PI) cphi -= 2*M_PI; + if (cphi < -M_PI) cphi += 2*M_PI; cluster.time(ctime); cluster.pos(XYZVectorF(crho*cos(cphi),crho*sin(cphi),cz)); @@ -214,7 +218,10 @@ namespace mu2e // Code logic to classify cluster with MVA // Clusters with less than 3 combo hits have a default keras quality of 0.0 // and they are not flagged as background clusters - if(cluster.hits().size() < 3) return; + if(cluster.hits().size() < 3) { + cluster.setKerasQ(0.0); + return; + } // find averages double sqrSumDeltaTime(0.),sqrSumDeltaX(0.), sqrSumDeltaY(0.), sqrSumDeltaPhi(0.); unsigned nhits(0); diff --git a/TrkHitReco/src/FlagBkgHits_module.cc b/TrkHitReco/src/FlagBkgHits_module.cc index c469445999..a38c0bdc46 100644 --- a/TrkHitReco/src/FlagBkgHits_module.cc +++ b/TrkHitReco/src/FlagBkgHits_module.cc @@ -93,8 +93,7 @@ namespace mu2e { ConfigFileLookupPolicy configFile; produces(); - if(countprotons_) - produces(); + produces(); if (savebkg_) { @@ -158,7 +157,8 @@ namespace mu2e auto bkgccol = std::make_unique(); auto bkghitcol = std::make_unique(); bkgccol->reserve(nch/2); - bkghitcol->assign(nch, BkgClusterHit(999.0, StrawHitFlag())); // Pre-fill with defaults + if (savebkg_) + bkghitcol->assign(nch, BkgClusterHit(999.0, StrawHitFlag())); // Pre-fill with defaults clusterer_->findClusters(*bkgccol, chcol); @@ -195,15 +195,20 @@ namespace mu2e chcol_out->back()._flag.merge(flag); } } + else + throw cet::exception("RECO")<< "FlagBkgHits: inconsistent ComboHits" << std::endl; } } + if((! filter_) && chcol_out->size() != chcol_p.size()) + throw cet::exception("RECO")<< "FlagBkgHits: inconsistent ComboHit output" << std::endl; } } event.put(std::move(chcol_out)); + int nprotons = 0; if(countprotons_){ - int nprotons = countProton(*bkgccol, chfcol, chcol); - event.put(std::make_unique(nprotons)); + nprotons = countProton(*bkgccol, chfcol, chcol); } + event.put(std::make_unique(nprotons)); // Produce background collection if (savebkg_) { event.put(std::move(bkghitcol)); From da65313a87b66e8d96f4a81c31d9bb35fa5f6bb6 Mon Sep 17 00:00:00 2001 From: Namitha Chithirasreemadam Date: Thu, 19 Mar 2026 12:55:35 -0500 Subject: [PATCH 22/54] code improvements --- TrkHitReco/src/DBSClusterer.cc | 37 +++++++++++++++------------- TrkHitReco/src/FlagBkgHits_module.cc | 14 ++++++----- 2 files changed, 28 insertions(+), 23 deletions(-) diff --git a/TrkHitReco/src/DBSClusterer.cc b/TrkHitReco/src/DBSClusterer.cc index 5c1fc63231..5987552cc3 100644 --- a/TrkHitReco/src/DBSClusterer.cc +++ b/TrkHitReco/src/DBSClusterer.cc @@ -4,7 +4,6 @@ #include #include -#include #include @@ -53,20 +52,24 @@ namespace mu2e const unsigned noiseID(chcol.size()+1u); const unsigned unprocessedID(chcol.size()+2u); unsigned currentClusterID(0); - // Using a vector as a stack (DFS) instead of a queue (BFS) for - // better cache locality and to avoid frequent heap allocations + // Using DFS(stack) instead of BFS(queue) + // For DBSCAN, cluster membership of core points is invariant, + // but traversal order may affect assignment of border points + // in rare ambiguous cases. This change was validated to not + // impact physics performance while improving cache locality. std::vector inspect; inspect.reserve(idx.size()); std::vector hitToCluster(idx.size(),unprocessedID); // number of combohits used for clustering, cluster ID std::vector neighbors; neighbors.reserve(256); clusters.reserve(std::max(16UL, idx.size()/10)); + unsigned nNeighbors = 0; for (size_t i=0;i 0) nNeighbors = hit0.nStrawHits() - 1; float minTime = time0 - deltaTime_; // Use binary search for O(log N) entry into the time-sorted index vector. - // idx[i] contains the hit inde; chcol[idx[i]] is sorted by correctedTime. - // The comparator matches this sort order (element-to-value comparison). - auto it_start = std::lower_bound(idx.begin(), idx.end(), minTime, [&chcol](unsigned i, float val){ - return chcol[i].correctedTime() < val; + // idx[i] contains the hit index; chcol[idx[i]] is sorted by correctedTime. + auto it_start = std::partition_point(idx.begin(), idx.end(), [&chcol, minTime](unsigned i){ + return chcol[i].correctedTime() < minTime; }); size_t istart = std::distance(idx.begin(),it_start); for (size_t j = istart; j < idx.size(); ++j){ @@ -134,7 +136,7 @@ namespace mu2e const auto& hitj = chcol[idx[j]]; float dt = hitj.correctedTime() - time0; if (dt > deltaTime_) break; - // Time is already constrained by the lower_bound (backward) and the break (forward) + // Time is constrained by partition_point (backward) and the break (forward) // Now check Spatial constraints if (std::abs(hitj.pos().z() - z0) > deltaZ_) continue; float dx = hitj.pos().x() - x0; @@ -174,14 +176,14 @@ namespace mu2e } float sumWeight(0),crho(0),ctime(0), cz(0), cedep(0), cphi(0); float phi_ref = chcol[cluster.hits().at(0)].phi(); - for (auto& idx : cluster.hits()) { - float weight = chcol[idx].nStrawHits(); - float dt = chcol[idx].correctedTime(); - float dr = sqrtf(chcol[idx].pos().perp2()); - float dz = chcol[idx].pos().z(); - float edep = chcol[idx].energyDep(); + for (auto& hitIdx : cluster.hits()) { + float weight = chcol[hitIdx].nStrawHits(); + float dt = chcol[hitIdx].correctedTime(); + float dr = sqrtf(chcol[hitIdx].pos().perp2()); + float dz = chcol[hitIdx].pos().z(); + float edep = chcol[hitIdx].energyDep(); - XYZVectorF hitpos = chcol[idx].pos(); + XYZVectorF hitpos = chcol[hitIdx].pos(); cluster.addHitPosition(hitpos); float dp = hitpos.phi(); @@ -201,7 +203,7 @@ namespace mu2e crho /= sumWeight; ctime /= sumWeight; cz /= sumWeight; - cedep /= sumWeight; + cedep /= sumWeight; //Weighted average energy deposition of a cluster if (cphi > M_PI) cphi -= 2*M_PI; if (cphi < -M_PI) cphi += 2*M_PI; @@ -232,6 +234,7 @@ namespace mu2e float phiclust = cluster.pos().phi(); if(phiclust > M_PI) phiclust -=2*M_PI; if(phiclust < -M_PI) phiclust +=2*M_PI; + // Safe: Clusters with < 3 hits are returned earlier unsigned nchits = cluster.hits().size(); for (const auto& chit : cluster.hits()) { const auto& hit = chcol[chit]; diff --git a/TrkHitReco/src/FlagBkgHits_module.cc b/TrkHitReco/src/FlagBkgHits_module.cc index a38c0bdc46..be87fb089f 100644 --- a/TrkHitReco/src/FlagBkgHits_module.cc +++ b/TrkHitReco/src/FlagBkgHits_module.cc @@ -35,7 +35,7 @@ namespace mu2e using Comment = fhicl::Comment; fhicl::Atom comboHitCollection{ Name("ComboHitCollection"), Comment("ComboHit collection name") }; - fhicl::Atom clusterPositionError{ Name("ClusterPositionError"), Comment("Cluster poisiton error") }; + fhicl::Atom clusterPositionError{ Name("ClusterPositionError"), Comment("Cluster position error") }; fhicl::Atom clusterAlgorithm{ Name("ClusterAlgorithm"), Comment("Clusterer algorithm") }; fhicl::Atom filterHits{ Name("FilterHits"), Comment("Produce filtered ComboHit collection") }; fhicl::Sequence backgroundMask{ Name("BackgroundMask"), Comment("Bkg hit selection mask") }; @@ -165,6 +165,13 @@ namespace mu2e StrawHitFlagCollection chfcol(nch); classifyCluster(*bkgccol, *bkghitcol, chfcol, chcol); + int nprotons = 0; + if(countprotons_){ + nprotons = countProton(*bkgccol, chfcol, chcol); + } + // When counprotons_ is false, nprotons = 0 indicates counting disabled + event.put(std::make_unique(nprotons)); + auto chcol_out = std::make_unique(); if(!chfcol.empty()){ if(level_ == chcol.level()){ @@ -204,11 +211,6 @@ namespace mu2e } } event.put(std::move(chcol_out)); - int nprotons = 0; - if(countprotons_){ - nprotons = countProton(*bkgccol, chfcol, chcol); - } - event.put(std::make_unique(nprotons)); // Produce background collection if (savebkg_) { event.put(std::move(bkghitcol)); From fc3ca3f2cfc7d43227abb0a1a41a417f1ba2148a Mon Sep 17 00:00:00 2001 From: ehrlich-uva Date: Thu, 19 Mar 2026 14:14:59 -0500 Subject: [PATCH 23/54] more updates to the CRV cluster algorithm --- CRVReco/src/CrvCoincidenceFinder_module.cc | 71 ++++++++++++---------- 1 file changed, 38 insertions(+), 33 deletions(-) diff --git a/CRVReco/src/CrvCoincidenceFinder_module.cc b/CRVReco/src/CrvCoincidenceFinder_module.cc index 66a96afaf0..f98bbc235b 100644 --- a/CRVReco/src/CrvCoincidenceFinder_module.cc +++ b/CRVReco/src/CrvCoincidenceFinder_module.cc @@ -141,8 +141,9 @@ namespace mu2e void clusterProperties(int crvSectorType, const std::vector > &clusters, std::unique_ptr &crvCoincidenceClusterCollection, const art::Handle &crvRecoPulseCollection); - void filterHits(const std::vector &hits, std::list &hitsFiltered); - void findClusters(std::list &hits, std::vector > &clusters, double clusterMaxTimeDifference); + void filterHits(const std::vector &hits, std::list &hitsFiltered, unsigned int readoutSide); + void findClusters(std::list &hits, std::vector > &clusters, double clusterMaxTimeDifference, + bool combineOppositeSides=false, double timeDifferenceOppositeSides=0); void checkCoincidence(const std::vector &hits, std::list &coincidenceHits); bool checkCombination(std::vector::const_iterator layerIterators[], int n); @@ -300,44 +301,38 @@ namespace mu2e const std::vector &hitsUnfiltered = sectorTypeMapIter->second; //filter hits, i.e. remove all hits below PE threshold - std::list hitsFiltered; - filterHits(hitsUnfiltered, hitsFiltered); + //separate into both readout sides + std::list hitsFiltered0; + std::list hitsFiltered1; + filterHits(hitsUnfiltered, hitsFiltered0, 0); + filterHits(hitsUnfiltered, hitsFiltered1, 1); //find maximum coincidence time difference between hits for this sector type //used to keep hits together in a cluster that could potentially form coincidences - float initialClusterMaxTimeDifference=0; + float clusterMaxTimeDifference=0; for(auto const §orMapEntry : _sectorMap) { - if(sectorMapEntry.second.sectorType==crvSectorType && sectorMapEntry.second.maxTimeDifference>initialClusterMaxTimeDifference) - initialClusterMaxTimeDifference=sectorMapEntry.second.maxTimeDifference; + if(sectorMapEntry.second.sectorType==crvSectorType && sectorMapEntry.second.maxTimeDifference>clusterMaxTimeDifference) + clusterMaxTimeDifference=sectorMapEntry.second.maxTimeDifference; } //distribute the hits into clusters //initial clustering is done to keep the number of hit combinations down that need to be checked for coincidences - std::vector > clusters; - findClusters(hitsFiltered, clusters, initialClusterMaxTimeDifference); + std::vector > clusters0; + std::vector > clusters1; + findClusters(hitsFiltered0, clusters0, clusterMaxTimeDifference); + findClusters(hitsFiltered1, clusters1, clusterMaxTimeDifference); //all hits belonging to a coincidence group are collected in a new list std::list coincidenceHits; - //loop through all clusters - for(size_t iCluster=0; iCluster &cluster=clusters[iCluster]; - std::vector cluster0; //cluster for SiPMs at negative end - std::vector cluster1; //cluster for SiPMs at positive end - for(auto hit=cluster.begin(); hit!=cluster.end(); ++hit) - { - if(hit->_SiPM%CRVId::nSidesPerBar==0) cluster0.push_back(*hit); else cluster1.push_back(*hit); - } - - //check whether this hit cluster has coincidences - //(separately for both readout sides) - checkCoincidence(cluster0,coincidenceHits); - checkCoincidence(cluster1,coincidenceHits); - }//loop over all cluster in sector type + //loop through all clusters and check whether they have coincidence groups + //add each hit of all coincidence groups to a list of coincidence hits + for(size_t iCluster=0; iCluster > coincidenceClusters; - findClusters(coincidenceHits, coincidenceClusters, finalClusterMaxTimeDifference); + findClusters(coincidenceHits, coincidenceClusters, clusterMaxTimeDifference, combineOppositeSides, timeDifferenceOppositeSides); clusterProperties(crvSectorType, coincidenceClusters, crvCoincidenceClusterCollection, crvRecoPulseCollection); }//loop over all sector types @@ -552,11 +548,14 @@ namespace mu2e //remove hits below the threshold - void CrvCoincidenceFinder::filterHits(const std::vector &hits, std::list &hitsFiltered) + void CrvCoincidenceFinder::filterHits(const std::vector &hits, std::list &hitsFiltered, unsigned int readoutSide) { std::vector::const_iterator iterHit; for(iterHit=hits.begin(); iterHit!=hits.end(); ++iterHit) { + int SiPM=iterHit->_SiPM; + if(SiPM%CRVId::nSidesPerBar!=readoutSide) continue; //not the readout side we are looking for + int layer=iterHit->_layer; int counter=iterHit->_counter; //counter number in one layer counted from the beginning of the counter type double time=iterHit->_time; @@ -597,7 +596,7 @@ namespace mu2e void CrvCoincidenceFinder::findClusters(std::list &hits, std::vector > &clusters, - double clusterMaxTimeDifference) + double clusterMaxTimeDifference, bool combineOppositeSides, double timeDifferenceOppositeSides) { while(!hits.empty()) //run through clustering processes until all hits are distributed into clusters { @@ -626,8 +625,14 @@ namespace mu2e for(auto clusterIter=cluster.begin(); clusterIter!=cluster.end(); ++clusterIter) { double maxDistance = std::max(hitsIter->_maxDistance,clusterIter->_maxDistance); + double maxTimeDifference = clusterMaxTimeDifference; + if(combineOppositeSides) + { + if((hitsIter->_SiPM%CRVId::nSidesPerBar)!=(clusterIter->_SiPM%CRVId::nSidesPerBar)) //both hits are at opposite sides --> use additional time difference + maxTimeDifference+=timeDifferenceOppositeSides; + } if((std::fabs(hitsIter->_x-clusterIter->_x)<=maxDistance) && - (std::fabs(hitsIter->_time-clusterIter->_time)_time-clusterIter->_time) Date: Thu, 19 Mar 2026 15:01:33 -0500 Subject: [PATCH 24/54] Typo fix --- TrkHitReco/src/FlagBkgHits_module.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TrkHitReco/src/FlagBkgHits_module.cc b/TrkHitReco/src/FlagBkgHits_module.cc index be87fb089f..bad2c029a1 100644 --- a/TrkHitReco/src/FlagBkgHits_module.cc +++ b/TrkHitReco/src/FlagBkgHits_module.cc @@ -169,7 +169,7 @@ namespace mu2e if(countprotons_){ nprotons = countProton(*bkgccol, chfcol, chcol); } - // When counprotons_ is false, nprotons = 0 indicates counting disabled + // When countprotons_ is false, nprotons = 0 indicates counting disabled event.put(std::make_unique(nprotons)); auto chcol_out = std::make_unique(); From 5a84cea62c5ba84523c3adcd33f9a6d18552f71e Mon Sep 17 00:00:00 2001 From: Namitha Chithirasreemadam Date: Thu, 19 Mar 2026 15:12:42 -0500 Subject: [PATCH 25/54] changed to range loop --- TrkHitReco/src/FlagBkgHits_module.cc | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/TrkHitReco/src/FlagBkgHits_module.cc b/TrkHitReco/src/FlagBkgHits_module.cc index bad2c029a1..089bc684e9 100644 --- a/TrkHitReco/src/FlagBkgHits_module.cc +++ b/TrkHitReco/src/FlagBkgHits_module.cc @@ -222,8 +222,7 @@ namespace mu2e //------------------------------------------------------------------------------------------ void FlagBkgHits::classifyCluster(BkgClusterCollection& bkgccol, BkgClusterHitCollection& bkghitcol, StrawHitFlagCollection& chfcol, const ComboHitCollection& chcol) const { - for (size_t icl =0; icl < bkgccol.size(); ++icl) { - auto& cluster = bkgccol[icl]; + for (auto& cluster : bkgccol) { clusterer_->classifyCluster(cluster,chcol); StrawHitFlag flag(StrawHitFlag::bkgclust); if (cluster.getKerasQ()> kerasQ_) { @@ -247,8 +246,7 @@ namespace mu2e int FlagBkgHits::countProton(BkgClusterCollection& bkgccol, StrawHitFlagCollection& chfcol, const ComboHitCollection& chcol) const { int npc(0); - for (size_t icl=0; icl < bkgccol.size(); ++icl) { - auto& cluster = bkgccol[icl]; + for (auto& cluster : bkgccol) { bool isAlreadyBkg = cluster._flag.hasAllProperties(BkgClusterFlag::bkg); if (!isAlreadyBkg) { int nhighedep(0); From b164295b9227e771f98eb119150166dec01cb3c2 Mon Sep 17 00:00:00 2001 From: ehrlich-uva Date: Fri, 20 Mar 2026 00:23:16 -0500 Subject: [PATCH 26/54] more changes to the CRV coincidence cluster algorithm --- CRVReco/src/CrvCoincidenceFinder_module.cc | 175 +++++++----------- RecoDataProducts/inc/CrvCoincidenceCluster.hh | 23 +-- 2 files changed, 84 insertions(+), 114 deletions(-) diff --git a/CRVReco/src/CrvCoincidenceFinder_module.cc b/CRVReco/src/CrvCoincidenceFinder_module.cc index f98bbc235b..66bd2736d6 100644 --- a/CRVReco/src/CrvCoincidenceFinder_module.cc +++ b/CRVReco/src/CrvCoincidenceFinder_module.cc @@ -385,20 +385,19 @@ namespace mu2e double startTime=cluster.front()._time; double endTime=cluster.front()._time; double PEs=0; - CLHEP::Hep3Vector avgCounterPos; //PE-weighted average position + CLHEP::Hep3Vector avgHitPos; //PE-weighted average position std::set layerSet; double sumX =0; double sumY =0; double sumYY=0; double sumXY=0; double minClusterPEs=cluster.front()._minClusterPEs; //find the minimum of all minClusterPEs of the cluster hits - std::map::const_iterator> > recoTimes; //collect hits of each counter for(auto hit=cluster.begin(); hit!=cluster.end(); ++hit) { crvRecoPulses.push_back(hit->_crvRecoPulse); PEs+=hit->_PEs; - avgCounterPos+=hit->_pos*hit->_PEs; + avgHitPos+=hit->_pos*hit->_PEs; layerSet.insert(hit->_layer); sumX +=hit->_PEs*hit->_x; sumY +=hit->_PEs*hit->_y; @@ -408,137 +407,107 @@ namespace mu2e if(startTime>hit->_time) startTime=hit->_time; if(endTime_time) endTime=hit->_time; if(minClusterPEs>hit->_minClusterPEs) minClusterPEs=hit->_minClusterPEs; - - //collect hits of individual counters - recoTimes[hit->_crvRecoPulse->GetScintillatorBarIndex().asInt()].push_back(hit); } //loop over hits of the cluster assert(PEs>0); assert(layerSet.size()>1); //average counter position (PE weighted), slope, layers - avgCounterPos/=PEs; + avgHitPos/=PEs; double slope=(PEs*sumXY-sumX*sumY)/(PEs*sumYY-sumY*sumY); std::vector layers(layerSet.begin(), layerSet.end()); //don't store clusters that are below the minimum number of PEs for this sector (or sectors, if the cluster involves multiple sectors) if(PEs sideHits{0,0}; std::array sidePEs{0,0}; std::array sideTimes{0,0}; //this value becomes meaningless, if a coincidence cluster spans more than one sector //with different counter lengths. (not a problem for extracted position) - double avgHalfLength{0};//needed, if only one readout side is available, and the center of the counter is used - double avgHitTime{0}; //if no counters with hits at both sides are found, the time is calculated from the side times - //assuming the hit occured at the center of the counters. in this case, this value becomes meaningless, - //if a coincidence cluster spans more than one sector with different counter lengths. - CLHEP::Hep3Vector avgHitPos; //if no counters with hits at both sides are found, the longitudinal coordinate is taken - //from the PE-weighted average counter center - double PEbothSides{0}; //number of PEs for counters with readouts on both sides (needed to PE-weight the counter hits) - - //calculate average times and positions for each counter separately - //and use the loop to fill the "side" variables - for(auto recoTimeIter=recoTimes.begin(); recoTimeIter!=recoTimes.end(); ++recoTimeIter) + //separate hits by their readout side and longitudinal coordinate + //(due to the possibility of having sector types with different counter half lengths) + std::array, CRVId::nSidesPerBar> hitPEs; + std::array, CRVId::nSidesPerBar> hitTimes; + int lengthDirection=_sectorMap.at(cluster.begin()->_crvSector).lengthDirection; //same for all counters of this cluster + for(auto hit=cluster.begin(); hit!=cluster.end(); ++hit) { - int crvSector=recoTimeIter->second.at(0)->_crvSector; + if(hit->_PEs<=0.0) continue; //avoid dealing with hits that have no PEs + + int crvSector=hit->_crvSector; double halfLength=_sectorMap.at(crvSector).counterHalfLength; - CLHEP::Hep3Vector counterPos=recoTimeIter->second.at(0)->_pos; - - //separate hits into both sides - //and fill the "side" variables for the entire coincidence cluster and for this counter - std::array sidePEsCounter{0,0}; - std::array sideTimesCounter{0,0}; - std::array hitsPerSiPM{0,0,0,0}; - bool moreThanOneHitPerSiPM{false}; - const std::vector::const_iterator> &counterHits=recoTimeIter->second; - for(auto counterHit=counterHits.begin(); counterHit!=counterHits.end(); ++counterHit) - { - int SiPM=(*counterHit)->_SiPM; - int side=SiPM%CRVId::nSidesPerBar; - sideHits[side]++; - sidePEs[side]+=(*counterHit)->_PEs; - sideTimes[side]+=(*counterHit)->_time * (*counterHit)->_PEs; //will be used for PE-weighted pulse time average - avgHalfLength+=halfLength * (*counterHit)->_PEs; //will be used for PE-weighted half length - - sidePEsCounter[side]+=(*counterHit)->_PEs; - sideTimesCounter[side]+=(*counterHit)->_time * (*counterHit)->_PEs; //will be used for PE-weighted pulse time average - hitsPerSiPM[SiPM]++; - if(hitsPerSiPM[SiPM]>1) moreThanOneHitPerSiPM=true; - } + CLHEP::Hep3Vector counterPos=hit->_pos; + double longitudinalPos=counterPos[lengthDirection]; - //calculate average side times for this counter - int validSides=0; - for(size_t side=0; side0) {sideTimesCounter[side]/=sidePEsCounter[side]; ++validSides;} - else sideTimesCounter[side]=0.0; - } + int side=hit->_SiPM%CRVId::nSidesPerBar; + if(side==0) longitudinalPos-=halfLength; + else longitudinalPos+=halfLength; - //calculate hit times and hit positions for this counter - //can calculate the longitudinal position only, - //if there are hits on both readout sides, and if no SiPM was hit more than once - if(validSides==CRVId::nSidesPerBar && !moreThanOneHitPerSiPM) - { - double timeDifference=sideTimesCounter[0]-sideTimesCounter[1]; - double distanceFromCounterCenter=0.5*timeDifference*_fiberSignalSpeed; - if(distanceFromCounterCenter_PEs; + hitTimes[side][longitudinalPos]+=hit->_time*hit->_PEs; //PE-weighted times - //calculate average side times for the entire coincidence cluster - for(size_t side=0; side0) sideTimes[side]/=sidePEs[side]; else sideTimes[side]=0.0; + sideHits[side]++; + sidePEs[side]+=hit->_PEs; + sideTimes[side]+=hit->_time*hit->_PEs; //PE-weighted times } - //calculate average hit times and hit position - //based on all counters that have hits on both ends - //(if possible) + if(sidePEs[0]>0) sideTimes[0]/=sidePEs[0]; //find avg PE-weighted time by dividing by total PEs + if(sidePEs[1]>0) sideTimes[1]/=sidePEs[1]; + bool twoReadoutSides=false; - if(PEbothSides>0) - { - //there were counters with hits on both sides. - //only these hits are used to calculate the longitudinal position of the coincidence cluster. - twoReadoutSides=true; - avgHitPos/=PEbothSides; - avgHitTime/=PEbothSides; - } - else + double avgHitTime=0.0; + if(!hitTimes[0].empty() && !hitTimes[1].empty()) //both readout sides have hits { - //there were no counters with hits at both sides. - //longitudinal position of the coincidence cluster cannot be calculated. - //use the center of the counter as longitudinal position (avgCounterPos) - //there can still be hits on both sides, but they didn't occur at the same counter - avgHitPos=avgCounterPos; - avgHalfLength/=(sidePEs[0]+sidePEs[1]); - if(sidePEs[0]>0 && sidePEs[1]>0) + //find the longitudinal positions farthest away from each other + //because we don't know where the track hit the counter (hit origin) + //if we have more than one position at a readout side, the situation is actually overconstraint + //(we ignore the other positions - perhaps set a flag in these cases) + double hitTime0=hitTimes[0].begin()->second/hitPEs[0].begin()->second; //find avg PE-weighted time by diving by total PEs + double hitTime1=hitTimes[1].rbegin()->second/hitPEs[1].rbegin()->second; + double hitPos0=hitTimes[0].begin()->first; + double hitPos1=hitTimes[1].rbegin()->first; + + double hitPosOrigin=0.5*(_fiberSignalSpeed*(hitTime0-hitTime1)+(hitPos0+hitPos1)); + if(hitPosOrigin>hitPos0 && hitPosOrigin0) + else //hits at both readout don't seem to be correlated (and would result in a hit origin outside the counter) { - avgHitTime=sideTimes[0]-avgHalfLength/_fiberSignalSpeed; + //assume the hit origin is at the center (since no other information is available) + hitPosOrigin=avgHitPos[lengthDirection]; + //calculate the time of the hit orign from both sides + double avgHitTime0=hitTime0-(hitPosOrigin-hitPos0)/_fiberSignalSpeed; + double avgHitTime1=hitTime1-(hitPos1-hitPosOrigin)/_fiberSignalSpeed; + //and take the average. that's the best we can do + //(other than breaking this cluster apart. we may do this later.) + avgHitTime=0.5*(avgHitTime0+avgHitTime1); } - else if(sidePEs[1]>0) + } + else //only one readout side has hits + { + //assume the hit origin is at the center (since no other information is available) + double hitPosOrigin=avgHitPos[lengthDirection]; + if(!hitTimes[0].empty()) { - avgHitTime=sideTimes[1]-avgHalfLength/_fiberSignalSpeed; + double hitTime0=hitTimes[0].begin()->second/hitPEs[0].begin()->second; //find avg PE-weighted time by diving by total PEs + double hitPos0=hitTimes[0].begin()->first; + avgHitTime=hitTime0-(hitPosOrigin-hitPos0)/_fiberSignalSpeed; + } + if(!hitTimes[1].empty()) + { + double hitTime1=hitTimes[1].rbegin()->second/hitPEs[1].rbegin()->second; //find avg PE-weighted time by diving by total PEs + double hitPos1=hitTimes[1].rbegin()->first; + avgHitTime=hitTime1-(hitPos1-hitPosOrigin)/_fiberSignalSpeed; } } - avgHitTime-=_timeOffset; //remove additional time due to electronics response and processes such as scintillation/WLS decay times + + //remove additional time due to electronics response and processes such as scintillation/WLS decay times + avgHitTime-=_timeOffset; //we could use a non-const parameter by taking the pulse widths of this cluster into consideration //insert the cluster information into the vector of the crv coincidence clusters crvCoincidenceClusterCollection->emplace_back(crvSectorType, startTime, endTime, PEs, crvRecoPulses, slope, layers, diff --git a/RecoDataProducts/inc/CrvCoincidenceCluster.hh b/RecoDataProducts/inc/CrvCoincidenceCluster.hh index 45bbe32ea7..f8f672a20a 100644 --- a/RecoDataProducts/inc/CrvCoincidenceCluster.hh +++ b/RecoDataProducts/inc/CrvCoincidenceCluster.hh @@ -63,17 +63,18 @@ namespace mu2e std::array _sideTimes{0}; //average pulse times on both readout sides //entries are only valid, if the corresponding entries in sidePEs > 0; //this value becomes meaningless, if a coincidence cluster spans more than one sector //with different counter lengths. (not a problem for extracted position) - bool _twoReadoutSides{false}; //indicates, if avgHitTime and avgHitPos are based on counters with hits on both readout sides - //if not, the PE-weighted average counter center is used for the longitudinal coordinate - double _avgHitTime{0};//average hit time based on counters with hits on both readout sides, if available. - //the average hit time/pos is found by using the time difference between both sides and the fiber signal speed. - //if no counters with hits at both sides are found, the time is calculated from the side times - //assuming the hit occured at the center of the counters. in this case, this value becomes meaningless, - //if a coincidence cluster spans more than one sector with different counter lengths. - CLHEP::Hep3Vector _avgHitPos; //average hit position based on counters with hits on both readout sides, if available. - //the average hit time/pos is found by using the time difference between both sides and the fiber signal speed. - //if no counters with hits at both sides are found, the longitudinal coordinate is taken - //from the PE-weighted average counter center + bool _twoReadoutSides{false}; //indicates, if avgHitTime and avgHitPos are based on hits at both readout sides + //if not, the PE-weighted average counter center is used for + //the longitudinal coordinate of avgHitPos and the avgHitTime + double _avgHitTime{0};//time when the sector was hit based on hits at both readout sides, if available. + //it is found by using the time difference between both sides and the fiber signal speed. + //if there aren't hits at both sides, the time is calculated from the hits of only one side + //under the assumption that the sector was hit at the PE-weighted average center of the counters. + //an additional average time due to electronics response and + //processes such as scintillation/WLS decay times is subtracted. + CLHEP::Hep3Vector _avgHitPos; //position where the center was hit based on hits at both readout sides, if available. + //it is found by using the time difference between both sides and the fiber signal speed. + //if there aren't hits at both sides, the PE-weighted average center of the counters is used. }; typedef std::vector CrvCoincidenceClusterCollection; } From 23843471aa3b58bbceb8571a5f79ce2ad6b8b4c3 Mon Sep 17 00:00:00 2001 From: ehrlich-uva Date: Fri, 20 Mar 2026 16:56:58 -0500 Subject: [PATCH 27/54] more changes to the CRV coincidence finder --- CRVReco/src/CrvCoincidenceFinder_module.cc | 76 ++++++++++++---------- 1 file changed, 40 insertions(+), 36 deletions(-) diff --git a/CRVReco/src/CrvCoincidenceFinder_module.cc b/CRVReco/src/CrvCoincidenceFinder_module.cc index 66bd2736d6..f2475cb100 100644 --- a/CRVReco/src/CrvCoincidenceFinder_module.cc +++ b/CRVReco/src/CrvCoincidenceFinder_module.cc @@ -104,6 +104,15 @@ namespace mu2e }; std::map _sectorMap; + struct sectorTypeProperties + { + double maxTimeDifference{0}; + double maxHalfLength{0}; + bool sipmsAtSide0{false}; + bool sipmsAtSide1{false}; + }; + std::map _sectorTypeMap; + struct CrvHit { art::Ptr _crvRecoPulse; @@ -225,6 +234,11 @@ namespace mu2e s.initialClusterMaxDistance = sectorConfigIter->initialClusterMaxDistance(); _sectorMap[i]=s; + + if(_sectorTypeMap[s.sectorType].maxTimeDifferenceclusterMaxTimeDifference) - clusterMaxTimeDifference=sectorMapEntry.second.maxTimeDifference; - } + float clusterMaxTimeDifference=_sectorTypeMap.at(crvSectorType).maxTimeDifference; //distribute the hits into clusters //initial clustering is done to keep the number of hit combinations down that need to be checked for coincidences std::vector > clusters0; std::vector > clusters1; + findClusters(hitsFiltered0, clusters0, clusterMaxTimeDifference); findClusters(hitsFiltered1, clusters1, clusterMaxTimeDifference); @@ -331,20 +341,11 @@ namespace mu2e for(size_t iCluster=0; iClustermaxHalfLength) maxHalfLength=sectorMapEntry.second.counterHalfLength; - if(sectorMapEntry.second.sipmsAtSide0) readoutSide0=true; - if(sectorMapEntry.second.sipmsAtSide1) readoutSide1=true; - } - } + //maximum counter halflength and readout sides of this sector type + float maxHalfLength=_sectorTypeMap.at(crvSectorType).maxHalfLength; + bool readoutSide0=_sectorTypeMap.at(crvSectorType).sipmsAtSide0; + bool readoutSide1=_sectorTypeMap.at(crvSectorType).sipmsAtSide1; + //maximum time difference between hits of opposite ends for this sector type //based on the signal travel time through the max counter length //used to keep hits at opposite ends in one cluster (but only, if there are two readout sides) @@ -427,17 +428,19 @@ namespace mu2e //with different counter lengths. (not a problem for extracted position) //separate hits by their readout side and longitudinal coordinate //(due to the possibility of having sector types with different counter half lengths) - std::array, CRVId::nSidesPerBar> hitPEs; - std::array, CRVId::nSidesPerBar> hitTimes; + //coordinates are in um to be able to use int instead of float + //(which may cause problems when used as a key in a map) + std::array, CRVId::nSidesPerBar> hitPEs; + std::array, CRVId::nSidesPerBar> hitTimes; int lengthDirection=_sectorMap.at(cluster.begin()->_crvSector).lengthDirection; //same for all counters of this cluster for(auto hit=cluster.begin(); hit!=cluster.end(); ++hit) { if(hit->_PEs<=0.0) continue; //avoid dealing with hits that have no PEs int crvSector=hit->_crvSector; - double halfLength=_sectorMap.at(crvSector).counterHalfLength; + int halfLength=static_cast(std::round(_sectorMap.at(crvSector).counterHalfLength*1000.0)); //convert to um CLHEP::Hep3Vector counterPos=hit->_pos; - double longitudinalPos=counterPos[lengthDirection]; + int longitudinalPos=static_cast(std::round(counterPos[lengthDirection]*1000.0)); //convert to um int side=hit->_SiPM%CRVId::nSidesPerBar; if(side==0) longitudinalPos-=halfLength; @@ -457,14 +460,15 @@ namespace mu2e double avgHitTime=0.0; if(!hitTimes[0].empty() && !hitTimes[1].empty()) //both readout sides have hits { - //find the longitudinal positions farthest away from each other + //find the longitudinal positions farthest away from each other, //because we don't know where the track hit the counter (hit origin) - //if we have more than one position at a readout side, the situation is actually overconstraint - //(we ignore the other positions - perhaps set a flag in these cases) - double hitTime0=hitTimes[0].begin()->second/hitPEs[0].begin()->second; //find avg PE-weighted time by diving by total PEs + //if we have more than one position at a readout side, the situation is overconstrained. + //in the current solution, we ignore the other positions. + //perhaps we could set a flag in these cases and/or use the other positions as a consistency check + double hitTime0=hitTimes[0].begin()->second/hitPEs[0].begin()->second; //find avg PE-weighted time by dividing by total PEs double hitTime1=hitTimes[1].rbegin()->second/hitPEs[1].rbegin()->second; - double hitPos0=hitTimes[0].begin()->first; - double hitPos1=hitTimes[1].rbegin()->first; + double hitPos0=hitTimes[0].begin()->first/1000.0; //convert back to mm + double hitPos1=hitTimes[1].rbegin()->first/1000.0; //convert back to mm double hitPosOrigin=0.5*(_fiberSignalSpeed*(hitTime0-hitTime1)+(hitPos0+hitPos1)); if(hitPosOrigin>hitPos0 && hitPosOriginsecond/hitPEs[0].begin()->second; //find avg PE-weighted time by diving by total PEs - double hitPos0=hitTimes[0].begin()->first; + double hitTime0=hitTimes[0].begin()->second/hitPEs[0].begin()->second; //find avg PE-weighted time by dividing by total PEs + double hitPos0=hitTimes[0].begin()->first/1000.0; //convert back to mm avgHitTime=hitTime0-(hitPosOrigin-hitPos0)/_fiberSignalSpeed; } if(!hitTimes[1].empty()) { - double hitTime1=hitTimes[1].rbegin()->second/hitPEs[1].rbegin()->second; //find avg PE-weighted time by diving by total PEs - double hitPos1=hitTimes[1].rbegin()->first; + double hitTime1=hitTimes[1].rbegin()->second/hitPEs[1].rbegin()->second; //find avg PE-weighted time by dividing by total PEs + double hitPos1=hitTimes[1].rbegin()->first/1000.0; //convert back to mm avgHitTime=hitTime1-(hitPos1-hitPosOrigin)/_fiberSignalSpeed; } } From 3036366e6a32d231381e0b65da40b1ab5a870ad0 Mon Sep 17 00:00:00 2001 From: ehrlich-uva Date: Fri, 20 Mar 2026 17:09:55 -0500 Subject: [PATCH 28/54] even more changes to the CRV coincidence finder --- CRVReco/src/CrvCoincidenceFinder_module.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CRVReco/src/CrvCoincidenceFinder_module.cc b/CRVReco/src/CrvCoincidenceFinder_module.cc index f2475cb100..5d55869f0a 100644 --- a/CRVReco/src/CrvCoincidenceFinder_module.cc +++ b/CRVReco/src/CrvCoincidenceFinder_module.cc @@ -543,6 +543,9 @@ namespace mu2e std::vector::const_iterator iterHitAdjacent; for(iterHitAdjacent=hits.begin(); iterHitAdjacent!=hits.end(); ++iterHitAdjacent) { + //use hits of the same readout side only + if(iterHitAdjacent->_SiPM%CRVId::nSidesPerBar!=readoutSide) continue; + //use hits of the same layer only if(iterHitAdjacent->_layer!=layer) continue; From b6db42296a8cb7014fb4545a0115448945e4fa31 Mon Sep 17 00:00:00 2001 From: Ray Culbertson Date: Sat, 21 Mar 2026 17:47:27 -0500 Subject: [PATCH 29/54] final removal of ConditionsService --- CMakeLists.txt | 1 - ConditionsService/CMakeLists.txt | 25 ---- ConditionsService/data/conditions_01.txt | 1 - ConditionsService/inc/ConditionsHandle.hh | 50 ------- ConditionsService/inc/ConditionsService.hh | 124 ------------------ ConditionsService/src/ConditionsService.cc | 88 ------------- .../src/ConditionsService_service.cc | 8 -- ConditionsService/src/SConscript | 56 -------- Mu2eInterfaces/inc/ConditionsEntity.hh | 6 +- 9 files changed, 3 insertions(+), 356 deletions(-) delete mode 100644 ConditionsService/CMakeLists.txt delete mode 100644 ConditionsService/data/conditions_01.txt delete mode 100644 ConditionsService/inc/ConditionsHandle.hh delete mode 100644 ConditionsService/inc/ConditionsService.hh delete mode 100644 ConditionsService/src/ConditionsService.cc delete mode 100644 ConditionsService/src/ConditionsService_service.cc delete mode 100644 ConditionsService/src/SConscript diff --git a/CMakeLists.txt b/CMakeLists.txt index e47b76d8be..51b6dc0764 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -136,7 +136,6 @@ add_subdirectory(CalPatRec) add_subdirectory(CommonMC) add_subdirectory(CommonReco) add_subdirectory(Compression) -add_subdirectory(ConditionsService) add_subdirectory(ConfigTools) add_subdirectory(CosmicRayShieldGeom) add_subdirectory(CosmicReco) diff --git a/ConditionsService/CMakeLists.txt b/ConditionsService/CMakeLists.txt deleted file mode 100644 index 06392478cf..0000000000 --- a/ConditionsService/CMakeLists.txt +++ /dev/null @@ -1,25 +0,0 @@ -cet_make_library( - SOURCE - src/ConditionsService.cc - LIBRARIES PUBLIC - - Offline::ConfigTools - Offline::Mu2eInterfaces - Offline::GeometryService - art::Framework_Services_Registry -) - -cet_build_plugin(ConditionsService art::service - REG_SOURCE src/ConditionsService_service.cc - LIBRARIES REG - Offline::ConditionsService - -) - - -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/data/conditions_01.txt ${CURRENT_BINARY_DIR} data/conditions_01.txt ) - -install(DIRECTORY data DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/Offline/ConditionsService) - -install_source(SUBDIRS src) -install_headers(USE_PROJECT_NAME SUBDIRS inc) diff --git a/ConditionsService/data/conditions_01.txt b/ConditionsService/data/conditions_01.txt deleted file mode 100644 index 11dd90c583..0000000000 --- a/ConditionsService/data/conditions_01.txt +++ /dev/null @@ -1 +0,0 @@ -//THIS IS A DEPRECATED FILE, DO NOT EDIT AND REMOVE ITS USE FROM YOUR SCRIPTS diff --git a/ConditionsService/inc/ConditionsHandle.hh b/ConditionsService/inc/ConditionsHandle.hh deleted file mode 100644 index 247adceab0..0000000000 --- a/ConditionsService/inc/ConditionsHandle.hh +++ /dev/null @@ -1,50 +0,0 @@ -#ifndef ConditionsService_ConditionsHandle_hh -#define ConditionsService_ConditionsHandle_hh - -// -// A safe pointer to a ConditionsEntity. -// -// -// Original author Rob Kutschke -// - -#include - -#include "Offline/ConditionsService/inc/ConditionsService.hh" - -namespace mu2e { - template - class ConditionsHandle - { - public: - ConditionsHandle( std::string const& key, - std::string const& version="current") - { - art::ServiceHandle sg; - _entity = sg->getElement(key,version); - } - ~ConditionsHandle() { } - - ENTITY const * operator->() const { return _entity;} - ENTITY const & operator*() const { return *_entity;} - ENTITY const * operator->() { return _entity;} - ENTITY const & operator*() { return *_entity;} - - ConditionsHandle() : _entity(0) {} - ConditionsHandle(const ConditionsHandle& other ) : _entity(other._entity) {} - ConditionsHandle& operator=(const ConditionsHandle& other) { - if(this != &other){ - _entity = other._entity; - } - return *this; - } - - private: - // unnecessary - ENTITY* operator&(); - - ENTITY* _entity; - }; -} - -#endif /* ConditionsService_ConditionsHandle_hh */ diff --git a/ConditionsService/inc/ConditionsService.hh b/ConditionsService/inc/ConditionsService.hh deleted file mode 100644 index 826c803456..0000000000 --- a/ConditionsService/inc/ConditionsService.hh +++ /dev/null @@ -1,124 +0,0 @@ -#ifndef ConditionsService_ConditionsService_hh -#define ConditionsService_ConditionsService_hh - -// -// Primitive conditions data service. -// It does not yet do validty checking. -// -// -// Original author Rob Kutschke -// -// -// Notes -// 1) There are two types of accessors. -// a) ones that just forward to the config file, for those types of entities. -// b) The method that we want to move to eventually. -// CalibHandle handle; -// conditionsService->get( key, handle, version) -// -// C++ include files -#include - -// Framework include files -#include "fhiclcpp/ParameterSet.h" -#include "art/Framework/Services/Registry/ActivityRegistry.h" -#include "art/Framework/Services/Registry/ServiceHandle.h" -#include "art/Framework/Services/Registry/ServiceDeclarationMacros.h" -#include "cetlib_except/exception.h" - -// Mu2e include files. -#include "Offline/ConfigTools/inc/SimpleConfig.hh" -#include "Offline/Mu2eInterfaces/inc/ConditionsEntity.hh" - -// Other external include files. -#include "boost/shared_ptr.hpp" - -namespace mu2e { - - class ConditionsService { - - public: - ConditionsService(const fhicl::ParameterSet&, art::ActivityRegistry&); - ~ConditionsService(); - - void preBeginRun(art::Run const &); - void postEndJob(); - - // Not sure if we really want this. It might be abused more than used? - SimpleConfig const& config() const { return _config;} - - private: - fhicl::ParameterSet _pset; - - // The name of the input file. Later will be a db key or similar. - std::string _conditionsFile; - - // Control the behaviour of messages from the SimpleConfig object holding - // the geometry parameters. - bool _allowReplacement; - bool _messageOnReplacement; - bool _messageOnDefault; - int _configStatsVerbosity; - - // Print final config file after all replacements. - bool _printConfig; - - // FIXME: should be initialized in beginRun, not c'tor. - // For how the conditions data is held in the file managed by - // this config object. It can later evolve to a database. - SimpleConfig _config; - - // Perform any consistency checks. - void checkConsistency(); - - typedef boost::shared_ptr ConditionsEntityPtr; - typedef std::map ConditionsMap; - - template friend class ConditionsHandle; - - // For now the key and version arguments are ignored. - template - ENTITY* getElement( std::string const& , std::string const& ) - { - if(_run_count==0) - throw cet::exception("GEOM") - << "Cannot get _entities from an unconfigured conditions service.\n" - << "You've attempted to a get an element before the first run\n"; - - // to use this generic way requires a map of names (typeid?) to - // abstract elements. - // find the conditions entity element requested - std::string name = typeid(ENTITY).name(); - ConditionsMap::iterator it(_entities.find(name)); - if(it==_entities.end()) - throw cet::exception("GEOM") - << "Failed to retrieve conditions entity of type " << name << "\n"; - - // this must succeed or there is something terribly wrong - ENTITY* d = dynamic_cast(it->second.get()); - - if(d==0) - throw cet::exception("GEOM") - << "Failed to convert found conditions entity " << name - << " to its correct type. There is a serious problem.\n"; - - return d; - } - - - ConditionsMap _entities; - int _run_count; - - // This is not copyable or assignable - private and unimplemented. - ConditionsService const& operator=(ConditionsService const& rhs); - ConditionsService(ConditionsService const& rhs); - - // Don't need to expose definition of private template in header - template void addEntity(std::unique_ptr d); - - }; - -} - -DECLARE_ART_SERVICE(mu2e::ConditionsService, SHARED) -#endif /* ConditionsService_ConditionsService_hh */ diff --git a/ConditionsService/src/ConditionsService.cc b/ConditionsService/src/ConditionsService.cc deleted file mode 100644 index 5b43cdb288..0000000000 --- a/ConditionsService/src/ConditionsService.cc +++ /dev/null @@ -1,88 +0,0 @@ -// -// Primitive conditions data service. -// It does not yet do validty checking. -// -// Original author Rob Kutschke -// - -// C++ include files -#include -#include - -// Framework include files -#include "messagefacility/MessageLogger/MessageLogger.h" -#include "art/Framework/Services/Registry/ServiceDefinitionMacros.h" - -// Mu2e include files -#include "Offline/ConditionsService/inc/ConditionsService.hh" -#include "Offline/GeometryService/inc/GeometryService.hh" - - -using namespace std; - -namespace mu2e { - - ConditionsService::ConditionsService(fhicl::ParameterSet const& pset, - art::ActivityRegistry&iRegistry) : - _pset(pset), - _conditionsFile( pset.get("conditionsfile","conditions.txt")), - _allowReplacement( pset.get ("allowReplacement", true)), - _messageOnReplacement( pset.get ("messageOnReplacement", false)), - _messageOnDefault( pset.get ("messageOnDefault", false)), - _configStatsVerbosity( pset.get ("configStatsVerbosity", 0)), - _printConfig( pset.get ("printConfig", false)), - - // FIXME: should be initialized in beginRun, not c'tor. - _config(_conditionsFile, _allowReplacement, _messageOnReplacement, _messageOnDefault), - _entities(), - _run_count() - { - - // by creating this handle here, we make sure that geometry service is - // created before any conditions service access, and its callbacks are called first - art::ServiceHandle g; - - _config.printOpen(std::cout, "Conditions"); - iRegistry.sPreBeginRun.watch(this, &ConditionsService::preBeginRun); - iRegistry.sPostEndJob.watch (this, &ConditionsService::postEndJob ); - } - - ConditionsService::~ConditionsService(){ - } - - // This template can be defined here because this is a private method which is only - // used by the code below in the same file. - template - void ConditionsService::addEntity(std::unique_ptr d) - { - if(_entities.find(typeid(ENTITY).name())!=_entities.end()) - throw cet::exception("GEOM") << "failed to install conditions entity with type name " - << typeid(ENTITY).name() << "\n"; - - ConditionsEntityPtr ptr(d.release()); - _entities[typeid(ENTITY).name()] = ptr; - } - - void - ConditionsService::preBeginRun(art::Run const &) { - - if(++_run_count > 1) { - mf::LogPrint("CONDITIONS") << "This test version does not change geometry on run boundaries."; - return; - } - - if ( _printConfig ){ _config.print(cout, "Conditions: "); } - - checkConsistency(); - } - - // Check that the configuration is self consistent. - void ConditionsService::checkConsistency(){ - } - - // Called after all modules have completed their end of job. - void ConditionsService::postEndJob(){ - _config.printAllSummaries ( cout, _configStatsVerbosity, "Conditions: " ); - } - -} // end namespace mu2e diff --git a/ConditionsService/src/ConditionsService_service.cc b/ConditionsService/src/ConditionsService_service.cc deleted file mode 100644 index f92b8c4050..0000000000 --- a/ConditionsService/src/ConditionsService_service.cc +++ /dev/null @@ -1,8 +0,0 @@ -// -// ConditionsService pulgin -// - -#include "art/Framework/Services/Registry/ServiceDefinitionMacros.h" -#include "Offline/ConditionsService/inc/ConditionsService.hh" - -DEFINE_ART_SERVICE(mu2e::ConditionsService) diff --git a/ConditionsService/src/SConscript b/ConditionsService/src/SConscript deleted file mode 100644 index bd948985ae..0000000000 --- a/ConditionsService/src/SConscript +++ /dev/null @@ -1,56 +0,0 @@ -#!/usr/bin/env python -# -# Original author Rob Kutschke. -# - -import os.path -Import('env') - - -Import('mu2e_helper') - -helper=mu2e_helper(env) - -mainlib = helper.make_mainlib ( [ 'mu2e_RecoDataProducts', - 'mu2e_TrackerGeom', - 'mu2e_ConfigTools', - 'mu2e_DataProducts', - 'mu2e_GlobalConstantsService', - 'art_Framework_Core', - 'art_Framework_Services_Registry', - 'art_Utilities', - 'MF_MessageLogger', - 'fhiclcpp', - 'fhiclcpp_types', - 'tbb', - 'canvas', - 'cetlib', - 'cetlib_except', - 'CLHEP', - 'boost_filesystem' - ] ) - -helper.make_plugins( [ mainlib, - 'mu2e_TrackerConditions', - 'mu2e_ConfigTools', - 'art_Framework_Principal', - 'art_Persistency_Provenance', - 'art_Framework_Services_Registry', - 'art_root_io_tfile_support', - 'art_Utilities', - 'canvas', - 'MF_MessageLogger', - 'fhiclcpp', - 'fhiclcpp_types', - 'tbb', - 'canvas', - 'cetlib', - 'cetlib_except', - 'boost_filesystem', - ] ) - - -# This tells emacs to view this file in python mode. -# Local Variables: -# mode:python -# End: diff --git a/Mu2eInterfaces/inc/ConditionsEntity.hh b/Mu2eInterfaces/inc/ConditionsEntity.hh index 759fe4fcd5..281a585374 100644 --- a/Mu2eInterfaces/inc/ConditionsEntity.hh +++ b/Mu2eInterfaces/inc/ConditionsEntity.hh @@ -1,5 +1,5 @@ -#ifndef ConditionsService_ConditionsEntity_hh -#define ConditionsService_ConditionsEntity_hh +#ifndef Mu2eInterfaces_ConditionsEntity_hh +#define Mu2eInterfaces_ConditionsEntity_hh // // A base class for objects held by the conditions data system. // @@ -20,4 +20,4 @@ namespace mu2e }; } -#endif /* ConditionsService_ConditionsEntity_hh */ +#endif /* Mu2eInterfaces_ConditionsEntity_hh */ From 07ede66ca00d2b7c88445b285b89ab247cbb8d2b Mon Sep 17 00:00:00 2001 From: ehrlich-uva Date: Sun, 22 Mar 2026 14:30:56 -0500 Subject: [PATCH 30/54] minor changes in Crv coincidence finder --- CRVReco/src/CrvCoincidenceFinder_module.cc | 21 +++++---- .../CrvCoincidenceClusterMatchMC_module.cc | 2 +- RecoDataProducts/inc/CrvCoincidenceCluster.hh | 47 +++++++++++++------ 3 files changed, 44 insertions(+), 26 deletions(-) diff --git a/CRVReco/src/CrvCoincidenceFinder_module.cc b/CRVReco/src/CrvCoincidenceFinder_module.cc index 5d55869f0a..01692bf1cd 100644 --- a/CRVReco/src/CrvCoincidenceFinder_module.cc +++ b/CRVReco/src/CrvCoincidenceFinder_module.cc @@ -323,7 +323,7 @@ namespace mu2e //maximum coincidence time difference between hits for this sector type //used to keep hits together in a cluster that could potentially form coincidences - float clusterMaxTimeDifference=_sectorTypeMap.at(crvSectorType).maxTimeDifference; + double clusterMaxTimeDifference=_sectorTypeMap.at(crvSectorType).maxTimeDifference; //distribute the hits into clusters //initial clustering is done to keep the number of hit combinations down that need to be checked for coincidences @@ -351,7 +351,7 @@ namespace mu2e //used to keep hits at opposite ends in one cluster (but only, if there are two readout sides) bool combineOppositeSides=false; if(readoutSide0 && readoutSide1) combineOppositeSides=true; - float timeDifferenceOppositeSides = 2.0*maxHalfLength/_fiberSignalSpeed; + double timeDifferenceOppositeSides = 2.0*maxHalfLength/_fiberSignalSpeed; //create new clusters based only on coincidence hits std::vector > coincidenceClusters; @@ -430,7 +430,7 @@ namespace mu2e //(due to the possibility of having sector types with different counter half lengths) //coordinates are in um to be able to use int instead of float //(which may cause problems when used as a key in a map) - std::array, CRVId::nSidesPerBar> hitPEs; + std::array, CRVId::nSidesPerBar> hitPEs; std::array, CRVId::nSidesPerBar> hitTimes; int lengthDirection=_sectorMap.at(cluster.begin()->_crvSector).lengthDirection; //same for all counters of this cluster for(auto hit=cluster.begin(); hit!=cluster.end(); ++hit) @@ -456,7 +456,8 @@ namespace mu2e if(sidePEs[0]>0) sideTimes[0]/=sidePEs[0]; //find avg PE-weighted time by dividing by total PEs if(sidePEs[1]>0) sideTimes[1]/=sidePEs[1]; - bool twoReadoutSides=false; + bool correlatedReadoutSides=false; + bool multipleReadoutPositionsPerSide=(hitTimes[0].size()>1 || hitTimes[1].size()>1); double avgHitTime=0.0; if(!hitTimes[0].empty() && !hitTimes[1].empty()) //both readout sides have hits { @@ -464,16 +465,15 @@ namespace mu2e //because we don't know where the track hit the counter (hit origin) //if we have more than one position at a readout side, the situation is overconstrained. //in the current solution, we ignore the other positions. - //perhaps we could set a flag in these cases and/or use the other positions as a consistency check double hitTime0=hitTimes[0].begin()->second/hitPEs[0].begin()->second; //find avg PE-weighted time by dividing by total PEs double hitTime1=hitTimes[1].rbegin()->second/hitPEs[1].rbegin()->second; double hitPos0=hitTimes[0].begin()->first/1000.0; //convert back to mm double hitPos1=hitTimes[1].rbegin()->first/1000.0; //convert back to mm double hitPosOrigin=0.5*(_fiberSignalSpeed*(hitTime0-hitTime1)+(hitPos0+hitPos1)); - if(hitPosOrigin>hitPos0 && hitPosOriginhitPos0 && hitPosOriginemplace_back(crvSectorType, startTime, endTime, PEs, crvRecoPulses, slope, layers, - sideHits, sidePEs, sideTimes, twoReadoutSides, avgHitTime, avgHitPos); + sideHits, sidePEs, sideTimes, avgHitTime, avgHitPos, + correlatedReadoutSides, multipleReadoutPositionsPerSide); } //loop through all clusters } //end cluster properies - //remove hits below the threshold + //remove hits below the threshold and separate into both readout sides void CrvCoincidenceFinder::filterHits(const std::vector &hits, std::list &hitsFiltered, unsigned int readoutSide) { std::vector::const_iterator iterHit; diff --git a/CRVResponse/src/CrvCoincidenceClusterMatchMC_module.cc b/CRVResponse/src/CrvCoincidenceClusterMatchMC_module.cc index f02e030a8b..ee5b2cde7b 100644 --- a/CRVResponse/src/CrvCoincidenceClusterMatchMC_module.cc +++ b/CRVResponse/src/CrvCoincidenceClusterMatchMC_module.cc @@ -174,7 +174,7 @@ namespace mu2e if(_doNtuples) { _ntuple->Fill(event.run(),event.subRun(),event.event(), - iter->HasTwoReadoutSides(),iter->GetCrvSectorType(),iter->GetAvgHitPos().x(),iter->GetAvgHitPos().y(),iter->GetAvgHitPos().z(), + iter->HasCorrelatedReadoutSides(),iter->GetCrvSectorType(),iter->GetAvgHitPos().x(),iter->GetAvgHitPos().y(),iter->GetAvgHitPos().z(), avgHitPos.x(),avgHitPos.y(),avgHitPos.z(), iter->GetAvgHitTime()-avgHitTime,(iter->GetAvgHitPos()-avgHitPos).mag(), visibleEnergyDeposited,iter->GetSidePEs()[0]+iter->GetSidePEs()[1]); diff --git a/RecoDataProducts/inc/CrvCoincidenceCluster.hh b/RecoDataProducts/inc/CrvCoincidenceCluster.hh index f8f672a20a..06bf6b1af3 100644 --- a/RecoDataProducts/inc/CrvCoincidenceCluster.hh +++ b/RecoDataProducts/inc/CrvCoincidenceCluster.hh @@ -24,11 +24,13 @@ namespace mu2e CrvCoincidenceCluster(int crvSectorType, double startTime, double endTime, float PEs, const std::vector > &crvRecoPulses, float slope, const std::vector &layers, const std::array &sideHits, const std::array &sidePEs, - const std::array &sideTimes, bool twoReadoutSides, double avgHitTime, const CLHEP::Hep3Vector &avgHitPos) : + const std::array &sideTimes, double avgHitTime, const CLHEP::Hep3Vector &avgHitPos, + bool correlatedReadoutSides, bool multipleReadoutPositionsPerSide) : _crvSectorType(crvSectorType), _startTime(startTime), _endTime(endTime), _PEs(PEs), _crvRecoPulses(crvRecoPulses), _slope(slope), _layers(layers), _sideHits(sideHits), _sidePEs(sidePEs), _sideTimes(sideTimes), - _twoReadoutSides(twoReadoutSides), _avgHitTime(avgHitTime), _avgHitPos(avgHitPos) {} + _avgHitTime(avgHitTime), _avgHitPos(avgHitPos), + _correlatedReadoutSides(correlatedReadoutSides), _multipleReadoutPositionsPerSide(multipleReadoutPositionsPerSide) {} int GetCrvSectorType() const {return _crvSectorType;} double GetStartTime() const {return _startTime;} @@ -41,10 +43,12 @@ namespace mu2e const std::array &GetSideHits() const {return _sideHits;} const std::array &GetSidePEs() const {return _sidePEs;} const std::array &GetSideTimes() const {return _sideTimes;} - bool HasTwoReadoutSides() const {return _twoReadoutSides;} double GetAvgHitTime() const {return _avgHitTime;} const CLHEP::Hep3Vector &GetAvgHitPos() const {return _avgHitPos;} + bool HasCorrelatedReadoutSides() const {return _correlatedReadoutSides;} + bool HasMultipleReadoutPositionsPerSide() const {return _multipleReadoutPositionsPerSide;} + // allow setting the Ptrs for reco compression void SetCrvRecoPulses(std::vector > const& pulses) { _crvRecoPulses = pulses; } @@ -60,21 +64,34 @@ namespace mu2e std::array _sideHits{0}; //number of hits on both readout sides of the modules of this cluster std::array _sidePEs{0}; //number of PEs on both readout sides - std::array _sideTimes{0}; //average pulse times on both readout sides //entries are only valid, if the corresponding entries in sidePEs > 0; + std::array _sideTimes{0}; //average pulse times on both readout sides + //entries are only valid, if the corresponding entries in sidePEs > 0; //this value becomes meaningless, if a coincidence cluster spans more than one sector //with different counter lengths. (not a problem for extracted position) - bool _twoReadoutSides{false}; //indicates, if avgHitTime and avgHitPos are based on hits at both readout sides - //if not, the PE-weighted average counter center is used for - //the longitudinal coordinate of avgHitPos and the avgHitTime - double _avgHitTime{0};//time when the sector was hit based on hits at both readout sides, if available. - //it is found by using the time difference between both sides and the fiber signal speed. - //if there aren't hits at both sides, the time is calculated from the hits of only one side - //under the assumption that the sector was hit at the PE-weighted average center of the counters. - //an additional average time due to electronics response and + double _avgHitTime{0};//-for correlated hits at both readout sides: + //likely time when the particle hit the counter at the avgHitPos + //based on time difference between both sides and the fiber signal speed. + //-otherwise: + //likely time when the particle hit the counter under the assumption that the + //particle hit the counter at the avgHitPos (PE-weighted average center of all + //involved counters) and based on the signal travel time to the avgHitPos. if + //hits on both sides: use the average + //-an additional average time due to electronics response and //processes such as scintillation/WLS decay times is subtracted. - CLHEP::Hep3Vector _avgHitPos; //position where the center was hit based on hits at both readout sides, if available. - //it is found by using the time difference between both sides and the fiber signal speed. - //if there aren't hits at both sides, the PE-weighted average center of the counters is used. + CLHEP::Hep3Vector _avgHitPos; //-for correlated hits at both readout sides (see below): + //likely position where the particle hit the counter + //based on time difference between both sides and the fiber signal speed. + //-otherwise: + //PE-weighted average center of all involved counters. + bool _correlatedReadoutSides{false}; //indicates that the hits at both readout sides seem to be correlated, i.e. they could have been + //caused by the same particle (based on the time difference, signal speed, and distance) + //avgHitTime and avgHitPos are calculated under this assumption + bool _multipleReadoutPositionsPerSide{false}; //the readout sides of the hits were not all at the same position, e.g. if multiple sectors with + //different counter lengths were involved. the hits at the longitudinal positions farthest away + //from each other are used to calculate avgHitPos and avgHitTime, because we don't know where the + //track hit the counter (hit origin). if there is more than one position at a readout side, + //the situation is overconstrained. in the current solution, the other hits are ignored for the + //calculation of the avgHitPos and avgHitTime. }; typedef std::vector CrvCoincidenceClusterCollection; } From c43ffb1160b85c4658a661ad547c3cb37c6c481d Mon Sep 17 00:00:00 2001 From: ehrlich-uva Date: Wed, 25 Mar 2026 00:46:27 -0500 Subject: [PATCH 31/54] more changes to CRV coincidence cluster finder --- CRVReco/fcl/prolog_v11.fcl | 1 + CRVReco/fcl/prolog_v12.fcl | 1 + CRVReco/src/CrvCoincidenceFinder_module.cc | 142 +++++++++++------- .../CrvCoincidenceClusterMatchMC_module.cc | 2 +- .../inc/CRSScintillatorShield.hh | 5 + RecoDataProducts/inc/CrvCoincidenceCluster.hh | 26 +--- 6 files changed, 100 insertions(+), 77 deletions(-) diff --git a/CRVReco/fcl/prolog_v11.fcl b/CRVReco/fcl/prolog_v11.fcl index 4d481d6f5f..8b00469e7d 100644 --- a/CRVReco/fcl/prolog_v11.fcl +++ b/CRVReco/fcl/prolog_v11.fcl @@ -385,6 +385,7 @@ BEGIN_PROLOG #other settings bigClusterThreshold : 50000 //disables it fiberSignalSpeed : 140 //140 mm/ns //FIXME: The correct value should be 175 mm/ns. + maxTimeInterval : 20 //20 ns maximum time interval of hits on one side to be considered for calculation of hit time/pos timeOffset : 34.5 //34.5 ns compensateChannelStatus : [0,1,2] //not connected channels (bit 0), ignored channels in reco (bit 1), channels that have no data (bit 2) //are compensated by the other channel on the same counter side diff --git a/CRVReco/fcl/prolog_v12.fcl b/CRVReco/fcl/prolog_v12.fcl index 3e2b2f5f6e..5480e9d02c 100644 --- a/CRVReco/fcl/prolog_v12.fcl +++ b/CRVReco/fcl/prolog_v12.fcl @@ -361,6 +361,7 @@ BEGIN_PROLOG #other settings bigClusterThreshold : 50000 //disables it fiberSignalSpeed : 140 //140 mm/ns //FIXME: The correct value should be 175 mm/ns. + maxTimeInterval : 20 //20 ns maximum time interval of hits on one side to be considered for calculation of hit time/pos timeOffset : 34.5 //34.5 ns compensateChannelStatus : [0,1,2] //not connected channels (bit 0), ignored channels in reco (bit 1), channels that have no data (bit 2) //are compensated by the other channel on the same counter side diff --git a/CRVReco/src/CrvCoincidenceFinder_module.cc b/CRVReco/src/CrvCoincidenceFinder_module.cc index 01692bf1cd..65a4f126c1 100644 --- a/CRVReco/src/CrvCoincidenceFinder_module.cc +++ b/CRVReco/src/CrvCoincidenceFinder_module.cc @@ -57,6 +57,7 @@ namespace mu2e //other settings fhicl::Atom bigClusterThreshold{Name("bigClusterThreshold"), Comment("no coincidence check for clusters with a number of hits above this threshold")}; fhicl::Atom fiberSignalSpeed{Name("fiberSignalSpeed"), Comment("effective speed of signals inside the CRV fibers in mm/ns")}; + fhicl::Atom maxTimeInterval{Name("maxTimeInterval"), Comment("maximum time interval of hits on one readout side considered for hit position calculation")}; fhicl::Atom timeOffset{Name("timeOffset"), Comment("additional time delay caused by electronics response and physical processes in ns")}; fhicl::Sequence compensateChannelStatus{Name("compensateChannelStatus"), Comment("compensate missinge pulses for channels with the following channel statuses")}; }; @@ -77,6 +78,7 @@ namespace mu2e size_t _bigClusterThreshold; double _fiberSignalSpeed; + double _maxTimeInterval; double _timeOffset; mu2e::ProditionsHandle _sipmStatus; @@ -94,6 +96,7 @@ namespace mu2e bool sipmsAtSide1; int widthDirection, thicknessDirection, lengthDirection; double counterHalfLength; + double posSide0, posSide1; int PEthreshold; double maxTimeDifferenceAdjacentPulses; double maxTimeDifference; @@ -106,10 +109,12 @@ namespace mu2e struct sectorTypeProperties { - double maxTimeDifference{0}; - double maxHalfLength{0}; - bool sipmsAtSide0{false}; - bool sipmsAtSide1{false}; + double maxTimeDifference; + double maxHalfLength; + double posSide0; + double posSide1; + bool sipmsAtSide0; + bool sipmsAtSide1; }; std::map _sectorTypeMap; @@ -165,6 +170,7 @@ namespace mu2e _sectorConfig(conf().sectorConfig()), _bigClusterThreshold(conf().bigClusterThreshold()), _fiberSignalSpeed(conf().fiberSignalSpeed()), + _maxTimeInterval(conf().maxTimeInterval()), _timeOffset(conf().timeOffset()), _compensateChannelStatus(conf().compensateChannelStatus()), _totalEvents(0), @@ -192,6 +198,7 @@ namespace mu2e //-from the fcl parameters GeomHandle CRS; const std::vector §ors = CRS->getCRSScintillatorShields(); + std::map > sectorTypes; for(size_t i=0; i::iterator sectorConfigIter=std::find_if(_sectorConfig.begin(), _sectorConfig.end(), [sectorName](const SectorConfig &s){return s.CRVSector()==sectorName;}); @@ -234,11 +244,28 @@ namespace mu2e s.initialClusterMaxDistance = sectorConfigIter->initialClusterMaxDistance(); _sectorMap[i]=s; + sectorTypes[s.sectorType].push_back(s); + } - if(_sectorTypeMap[s.sectorType].maxTimeDifferenceposSide0; + _sectorTypeMap[sectorType].posSide1=std::max_element(sectorVector.begin(),sectorVector.end(), + [](const sectorCoincidenceProperties &a, const sectorCoincidenceProperties &b) + {return a.posSide1posSide1; + + _sectorTypeMap[sectorType].maxHalfLength=(_sectorTypeMap[sectorType].posSide1-_sectorTypeMap[sectorType].posSide0)/2.0; + + _sectorTypeMap[sectorType].maxTimeDifference=std::max_element(sectorVector.begin(),sectorVector.end(), + [](const sectorCoincidenceProperties &a, const sectorCoincidenceProperties &b) + {return a.maxTimeDifferencemaxTimeDifference; + + _sectorTypeMap[sectorType].sipmsAtSide0=std::any_of(sectorVector.begin(),sectorVector.end(), + [](const sectorCoincidenceProperties &a){return a.sipmsAtSide0;}); + _sectorTypeMap[sectorType].sipmsAtSide1=std::any_of(sectorVector.begin(),sectorVector.end(), + [](const sectorCoincidenceProperties &a){return a.sipmsAtSide1;}); } } @@ -287,6 +314,20 @@ namespace mu2e double time=crvRecoPulse->GetPulseTime(); float PEs =crvRecoPulse->GetPEs(); + //adjust pulse time to move it to longitudinal position that is farthest outside (at the same SiPM side) + //this is done to be able to compare hits that happen at two adjacent sectors with different counter lengths + int side=SiPM%CRVId::nSidesPerBar; + if(side==0) + { + double posDiff=sector.posSide0-_sectorTypeMap[sector.sectorType].posSide0; //will always be >=0 + time+=posDiff/_fiberSignalSpeed; + } + else if(side==1) + { + double posDiff=_sectorTypeMap[sector.sectorType].posSide1-sector.posSide1; //will always be >=0 + time+=posDiff/_fiberSignalSpeed; + } + //compensate for dead or ignored channels size_t currentChannel = crvBarIndex.asUint()*CRVId::nChanPerBar + SiPM; size_t testChannel = currentChannel + (SiPM-2<0 ? 2 : -2); //the other channel at the same side of the counter @@ -424,69 +465,56 @@ namespace mu2e //some values we want to store for the cluster std::array sideHits{0,0}; std::array sidePEs{0,0}; - std::array sideTimes{0,0}; //this value becomes meaningless, if a coincidence cluster spans more than one sector - //with different counter lengths. (not a problem for extracted position) - //separate hits by their readout side and longitudinal coordinate - //(due to the possibility of having sector types with different counter half lengths) - //coordinates are in um to be able to use int instead of float - //(which may cause problems when used as a key in a map) - std::array, CRVId::nSidesPerBar> hitPEs; - std::array, CRVId::nSidesPerBar> hitTimes; + std::array sideTimes{0,0}; + std::array sideTimesMin{0,0}; + std::array sideTimesMax{0,0}; int lengthDirection=_sectorMap.at(cluster.begin()->_crvSector).lengthDirection; //same for all counters of this cluster for(auto hit=cluster.begin(); hit!=cluster.end(); ++hit) { if(hit->_PEs<=0.0) continue; //avoid dealing with hits that have no PEs - int crvSector=hit->_crvSector; - int halfLength=static_cast(std::round(_sectorMap.at(crvSector).counterHalfLength*1000.0)); //convert to um - CLHEP::Hep3Vector counterPos=hit->_pos; - int longitudinalPos=static_cast(std::round(counterPos[lengthDirection]*1000.0)); //convert to um - int side=hit->_SiPM%CRVId::nSidesPerBar; - if(side==0) longitudinalPos-=halfLength; - else longitudinalPos+=halfLength; - - hitPEs[side][longitudinalPos]+=hit->_PEs; - hitTimes[side][longitudinalPos]+=hit->_time*hit->_PEs; //PE-weighted times sideHits[side]++; sidePEs[side]+=hit->_PEs; sideTimes[side]+=hit->_time*hit->_PEs; //PE-weighted times + if(sideHits[side]==1) {sideTimesMin[side]=hit->_time; sideTimesMax[side]=hit->_time;} + if(sideTimesMin[side]>hit->_time) sideTimesMin[side]=hit->_time; + if(sideTimesMax[side]_time) sideTimesMax[side]=hit->_time; } if(sidePEs[0]>0) sideTimes[0]/=sidePEs[0]; //find avg PE-weighted time by dividing by total PEs if(sidePEs[1]>0) sideTimes[1]/=sidePEs[1]; - bool correlatedReadoutSides=false; - bool multipleReadoutPositionsPerSide=(hitTimes[0].size()>1 || hitTimes[1].size()>1); + bool hitPosAndTimeCalculated=false; double avgHitTime=0.0; - if(!hitTimes[0].empty() && !hitTimes[1].empty()) //both readout sides have hits + if(sideHits[0]>0 && sideHits[1]>0) //both readout sides have hits { - //find the longitudinal positions farthest away from each other, - //because we don't know where the track hit the counter (hit origin) - //if we have more than one position at a readout side, the situation is overconstrained. - //in the current solution, we ignore the other positions. - double hitTime0=hitTimes[0].begin()->second/hitPEs[0].begin()->second; //find avg PE-weighted time by dividing by total PEs - double hitTime1=hitTimes[1].rbegin()->second/hitPEs[1].rbegin()->second; - double hitPos0=hitTimes[0].begin()->first/1000.0; //convert back to mm - double hitPos1=hitTimes[1].rbegin()->first/1000.0; //convert back to mm - - double hitPosOrigin=0.5*(_fiberSignalSpeed*(hitTime0-hitTime1)+(hitPos0+hitPos1)); - if(hitPosOrigin>hitPos0 && hitPosOriginposSide0 && posOrigin0) { - double hitTime0=hitTimes[0].begin()->second/hitPEs[0].begin()->second; //find avg PE-weighted time by dividing by total PEs - double hitPos0=hitTimes[0].begin()->first/1000.0; //convert back to mm - avgHitTime=hitTime0-(hitPosOrigin-hitPos0)/_fiberSignalSpeed; + double posSide0=_sectorTypeMap[crvSectorType].posSide0; + avgHitTime=sideTimes[0]-(posOrigin-posSide0)/_fiberSignalSpeed; } - if(!hitTimes[1].empty()) + else if(sideHits[1]>0) { - double hitTime1=hitTimes[1].rbegin()->second/hitPEs[1].rbegin()->second; //find avg PE-weighted time by dividing by total PEs - double hitPos1=hitTimes[1].rbegin()->first/1000.0; //convert back to mm - avgHitTime=hitTime1-(hitPos1-hitPosOrigin)/_fiberSignalSpeed; + double posSide1=_sectorTypeMap[crvSectorType].posSide1; + avgHitTime=sideTimes[1]-(posSide1-posOrigin)/_fiberSignalSpeed; } } @@ -516,7 +542,7 @@ namespace mu2e //insert the cluster information into the vector of the crv coincidence clusters crvCoincidenceClusterCollection->emplace_back(crvSectorType, startTime, endTime, PEs, crvRecoPulses, slope, layers, sideHits, sidePEs, sideTimes, avgHitTime, avgHitPos, - correlatedReadoutSides, multipleReadoutPositionsPerSide); + hitPosAndTimeCalculated); } //loop through all clusters } //end cluster properies diff --git a/CRVResponse/src/CrvCoincidenceClusterMatchMC_module.cc b/CRVResponse/src/CrvCoincidenceClusterMatchMC_module.cc index ee5b2cde7b..d2e6d3bde7 100644 --- a/CRVResponse/src/CrvCoincidenceClusterMatchMC_module.cc +++ b/CRVResponse/src/CrvCoincidenceClusterMatchMC_module.cc @@ -174,7 +174,7 @@ namespace mu2e if(_doNtuples) { _ntuple->Fill(event.run(),event.subRun(),event.event(), - iter->HasCorrelatedReadoutSides(),iter->GetCrvSectorType(),iter->GetAvgHitPos().x(),iter->GetAvgHitPos().y(),iter->GetAvgHitPos().z(), + iter->HitPosAndTimeCalculated(),iter->GetCrvSectorType(),iter->GetAvgHitPos().x(),iter->GetAvgHitPos().y(),iter->GetAvgHitPos().z(), avgHitPos.x(),avgHitPos.y(),avgHitPos.z(), iter->GetAvgHitTime()-avgHitTime,(iter->GetAvgHitPos()-avgHitPos).mag(), visibleEnergyDeposited,iter->GetSidePEs()[0]+iter->GetSidePEs()[1]); diff --git a/CosmicRayShieldGeom/inc/CRSScintillatorShield.hh b/CosmicRayShieldGeom/inc/CRSScintillatorShield.hh index 98263e5842..156b3c6256 100644 --- a/CosmicRayShieldGeom/inc/CRSScintillatorShield.hh +++ b/CosmicRayShieldGeom/inc/CRSScintillatorShield.hh @@ -73,6 +73,11 @@ namespace mu2e return *_barDetails; } + const CRSScintillatorBar& getFirstBar() const + { + return getModule(0).getLayer(0).getBar(0); + } + const std::string &getAbsorberMaterialName() const { return _absorberMaterialName; diff --git a/RecoDataProducts/inc/CrvCoincidenceCluster.hh b/RecoDataProducts/inc/CrvCoincidenceCluster.hh index 06bf6b1af3..7a2b0d807b 100644 --- a/RecoDataProducts/inc/CrvCoincidenceCluster.hh +++ b/RecoDataProducts/inc/CrvCoincidenceCluster.hh @@ -25,12 +25,12 @@ namespace mu2e const std::vector > &crvRecoPulses, float slope, const std::vector &layers, const std::array &sideHits, const std::array &sidePEs, const std::array &sideTimes, double avgHitTime, const CLHEP::Hep3Vector &avgHitPos, - bool correlatedReadoutSides, bool multipleReadoutPositionsPerSide) : + bool hitPosAndTimeCalculated) : _crvSectorType(crvSectorType), _startTime(startTime), _endTime(endTime), _PEs(PEs), _crvRecoPulses(crvRecoPulses), _slope(slope), _layers(layers), _sideHits(sideHits), _sidePEs(sidePEs), _sideTimes(sideTimes), _avgHitTime(avgHitTime), _avgHitPos(avgHitPos), - _correlatedReadoutSides(correlatedReadoutSides), _multipleReadoutPositionsPerSide(multipleReadoutPositionsPerSide) {} + _hitPosAndTimeCalculated(hitPosAndTimeCalculated) {} int GetCrvSectorType() const {return _crvSectorType;} double GetStartTime() const {return _startTime;} @@ -46,8 +46,7 @@ namespace mu2e double GetAvgHitTime() const {return _avgHitTime;} const CLHEP::Hep3Vector &GetAvgHitPos() const {return _avgHitPos;} - bool HasCorrelatedReadoutSides() const {return _correlatedReadoutSides;} - bool HasMultipleReadoutPositionsPerSide() const {return _multipleReadoutPositionsPerSide;} + bool HitPosAndTimeCalculated() const {return _hitPosAndTimeCalculated;} // allow setting the Ptrs for reco compression void SetCrvRecoPulses(std::vector > const& pulses) { _crvRecoPulses = pulses; } @@ -66,32 +65,23 @@ namespace mu2e std::array _sidePEs{0}; //number of PEs on both readout sides std::array _sideTimes{0}; //average pulse times on both readout sides //entries are only valid, if the corresponding entries in sidePEs > 0; - //this value becomes meaningless, if a coincidence cluster spans more than one sector - //with different counter lengths. (not a problem for extracted position) - double _avgHitTime{0};//-for correlated hits at both readout sides: + double _avgHitTime{0};//-hitPosAndTimeCalculated true (correlated hits at both readout sides): //likely time when the particle hit the counter at the avgHitPos //based on time difference between both sides and the fiber signal speed. //-otherwise: //likely time when the particle hit the counter under the assumption that the //particle hit the counter at the avgHitPos (PE-weighted average center of all - //involved counters) and based on the signal travel time to the avgHitPos. if - //hits on both sides: use the average + //involved counters) and based on the signal travel time from the SiPM to + //the avgHitPos. if hits on both sides: use the average //-an additional average time due to electronics response and //processes such as scintillation/WLS decay times is subtracted. - CLHEP::Hep3Vector _avgHitPos; //-for correlated hits at both readout sides (see below): + CLHEP::Hep3Vector _avgHitPos; //-hitPosAndTimeCalculated true (correlated hits at both readout sides): //likely position where the particle hit the counter //based on time difference between both sides and the fiber signal speed. //-otherwise: //PE-weighted average center of all involved counters. - bool _correlatedReadoutSides{false}; //indicates that the hits at both readout sides seem to be correlated, i.e. they could have been + bool _hitPosAndTimeCalculated{false}; //indicates that the hits at both readout sides seem to be correlated, i.e. they could have been //caused by the same particle (based on the time difference, signal speed, and distance) - //avgHitTime and avgHitPos are calculated under this assumption - bool _multipleReadoutPositionsPerSide{false}; //the readout sides of the hits were not all at the same position, e.g. if multiple sectors with - //different counter lengths were involved. the hits at the longitudinal positions farthest away - //from each other are used to calculate avgHitPos and avgHitTime, because we don't know where the - //track hit the counter (hit origin). if there is more than one position at a readout side, - //the situation is overconstrained. in the current solution, the other hits are ignored for the - //calculation of the avgHitPos and avgHitTime. }; typedef std::vector CrvCoincidenceClusterCollection; } From d919815d0a112ca696bda769a0d2cc4c2338dfca Mon Sep 17 00:00:00 2001 From: ehrlich-uva Date: Wed, 25 Mar 2026 18:46:30 -0500 Subject: [PATCH 32/54] changed the name of two variables --- CRVReco/src/CrvCoincidenceFinder_module.cc | 30 +++++++++++----------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/CRVReco/src/CrvCoincidenceFinder_module.cc b/CRVReco/src/CrvCoincidenceFinder_module.cc index 65a4f126c1..3d11c00a12 100644 --- a/CRVReco/src/CrvCoincidenceFinder_module.cc +++ b/CRVReco/src/CrvCoincidenceFinder_module.cc @@ -111,8 +111,8 @@ namespace mu2e { double maxTimeDifference; double maxHalfLength; - double posSide0; - double posSide1; + double maxPosSide0; + double maxPosSide1; bool sipmsAtSide0; bool sipmsAtSide1; }; @@ -249,14 +249,14 @@ namespace mu2e for(const auto& [sectorType,sectorVector] : sectorTypes) { - _sectorTypeMap[sectorType].posSide0=std::min_element(sectorVector.begin(),sectorVector.end(), - [](const sectorCoincidenceProperties &a, const sectorCoincidenceProperties &b) - {return a.posSide0posSide0; - _sectorTypeMap[sectorType].posSide1=std::max_element(sectorVector.begin(),sectorVector.end(), - [](const sectorCoincidenceProperties &a, const sectorCoincidenceProperties &b) - {return a.posSide1posSide1; + _sectorTypeMap[sectorType].maxPosSide0=std::min_element(sectorVector.begin(),sectorVector.end(), + [](const sectorCoincidenceProperties &a, const sectorCoincidenceProperties &b) + {return a.posSide0posSide0; + _sectorTypeMap[sectorType].maxPosSide1=std::max_element(sectorVector.begin(),sectorVector.end(), + [](const sectorCoincidenceProperties &a, const sectorCoincidenceProperties &b) + {return a.posSide1posSide1; - _sectorTypeMap[sectorType].maxHalfLength=(_sectorTypeMap[sectorType].posSide1-_sectorTypeMap[sectorType].posSide0)/2.0; + _sectorTypeMap[sectorType].maxHalfLength=(_sectorTypeMap[sectorType].maxPosSide1-_sectorTypeMap[sectorType].maxPosSide0)/2.0; _sectorTypeMap[sectorType].maxTimeDifference=std::max_element(sectorVector.begin(),sectorVector.end(), [](const sectorCoincidenceProperties &a, const sectorCoincidenceProperties &b) @@ -319,12 +319,12 @@ namespace mu2e int side=SiPM%CRVId::nSidesPerBar; if(side==0) { - double posDiff=sector.posSide0-_sectorTypeMap[sector.sectorType].posSide0; //will always be >=0 + double posDiff=sector.posSide0-_sectorTypeMap[sector.sectorType].maxPosSide0; //will always be >=0 time+=posDiff/_fiberSignalSpeed; } else if(side==1) { - double posDiff=_sectorTypeMap[sector.sectorType].posSide1-sector.posSide1; //will always be >=0 + double posDiff=_sectorTypeMap[sector.sectorType].maxPosSide1-sector.posSide1; //will always be >=0 time+=posDiff/_fiberSignalSpeed; } @@ -489,8 +489,8 @@ namespace mu2e double avgHitTime=0.0; if(sideHits[0]>0 && sideHits[1]>0) //both readout sides have hits { - double posSide0=_sectorTypeMap[crvSectorType].posSide0; - double posSide1=_sectorTypeMap[crvSectorType].posSide1; + double posSide0=_sectorTypeMap[crvSectorType].maxPosSide0; + double posSide1=_sectorTypeMap[crvSectorType].maxPosSide1; double posOrigin=0.5*(_fiberSignalSpeed*(sideTimes[0]-sideTimes[1])+(posSide0+posSide1)); @@ -526,12 +526,12 @@ namespace mu2e double posOrigin=avgHitPos[lengthDirection]; if(sideHits[0]>0) { - double posSide0=_sectorTypeMap[crvSectorType].posSide0; + double posSide0=_sectorTypeMap[crvSectorType].maxPosSide0; avgHitTime=sideTimes[0]-(posOrigin-posSide0)/_fiberSignalSpeed; } else if(sideHits[1]>0) { - double posSide1=_sectorTypeMap[crvSectorType].posSide1; + double posSide1=_sectorTypeMap[crvSectorType].maxPosSide1; avgHitTime=sideTimes[1]-(posSide1-posOrigin)/_fiberSignalSpeed; } } From 340161125c3e68617b8fc359a377ad1e3f721397 Mon Sep 17 00:00:00 2001 From: ehrlich-uva Date: Wed, 25 Mar 2026 23:16:53 -0500 Subject: [PATCH 33/54] minor changes in CRV coincidence cluster finder --- CRVReco/src/CrvCoincidenceFinder_module.cc | 26 +++++++++++----------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/CRVReco/src/CrvCoincidenceFinder_module.cc b/CRVReco/src/CrvCoincidenceFinder_module.cc index 3d11c00a12..4144b798d9 100644 --- a/CRVReco/src/CrvCoincidenceFinder_module.cc +++ b/CRVReco/src/CrvCoincidenceFinder_module.cc @@ -55,11 +55,11 @@ namespace mu2e //sector-specific coincidence settings fhicl::Sequence > sectorConfig{Name("sectorConfig"), Comment("sector-specific settings")}; //other settings - fhicl::Atom bigClusterThreshold{Name("bigClusterThreshold"), Comment("no coincidence check for clusters with a number of hits above this threshold")}; + fhicl::Atom bigClusterThreshold{Name("bigClusterThreshold"), Comment("no coincidence check for clusters with a number of hits above this threshold")}; fhicl::Atom fiberSignalSpeed{Name("fiberSignalSpeed"), Comment("effective speed of signals inside the CRV fibers in mm/ns")}; fhicl::Atom maxTimeInterval{Name("maxTimeInterval"), Comment("maximum time interval of hits on one readout side considered for hit position calculation")}; fhicl::Atom timeOffset{Name("timeOffset"), Comment("additional time delay caused by electronics response and physical processes in ns")}; - fhicl::Sequence compensateChannelStatus{Name("compensateChannelStatus"), Comment("compensate missinge pulses for channels with the following channel statuses")}; + fhicl::Sequence compensateChannelStatus{Name("compensateChannelStatus"), Comment("compensate missing pulses for channels with the following channel statuses")}; }; typedef art::EDProducer::Table Parameters; @@ -137,7 +137,7 @@ namespace mu2e double _minClusterPEs; mutable double _maxDistance; //initially set to initialClusterMaxDistance, which is just an estimate //used for the initial clustering process (to keep the number of - //hit combinations down that need to be checked for coincidendes). + //hit combinations down that need to be checked for coincidences). //_maxDistance is updated when the coindidences are checked //(used for the final clustering process) @@ -284,7 +284,7 @@ namespace mu2e //loop through all reco pulses //distribute them into the crv sector types - std::map > sectorTypeMap; + std::map > hitMap; for(size_t recoPulseIndex=0; recoPulseIndexsize(); ++recoPulseIndex) { const art::Ptr crvRecoPulse(crvRecoPulseCollection, recoPulseIndex); @@ -330,7 +330,7 @@ namespace mu2e //compensate for dead or ignored channels size_t currentChannel = crvBarIndex.asUint()*CRVId::nChanPerBar + SiPM; - size_t testChannel = currentChannel + (SiPM-2<0 ? 2 : -2); //the other channel at the same side of the counter + size_t testChannel = currentChannel + (SiPM<2 ? 2 : -2); //the other channel at the same side of the counter std::bitset<16> status(sipmStatus.status(testChannel)); bool compensate=false; for(size_t iChannelStatus=0; iChannelStatus<_compensateChannelStatus.size(); ++iChannelStatus) @@ -339,8 +339,8 @@ namespace mu2e } if(compensate) PEs *= 2.0; //double the PE value of this channel to compensate for the dead or ignored neighbor channel - //don't split counter sides for the purpose of finding clusters - sectorTypeMap[sector.sectorType].emplace_back(crvRecoPulse, crvCounterPos, + //separate hits by sector types + hitMap[sector.sectorType].emplace_back(crvRecoPulse, crvCounterPos, x, y, time, PEs, sectorNumber, layerNumber, counterNumber, SiPM, sector.PEthreshold, sector.maxTimeDifferenceAdjacentPulses, sector.maxTimeDifference, @@ -349,11 +349,11 @@ namespace mu2e } //loop through all crv sectors types - std::map >::const_iterator sectorTypeMapIter; - for(sectorTypeMapIter=sectorTypeMap.begin(); sectorTypeMapIter!=sectorTypeMap.end(); ++sectorTypeMapIter) + std::map >::const_iterator hitMapIter; + for(hitMapIter=hitMap.begin(); hitMapIter!=hitMap.end(); ++hitMapIter) { - int crvSectorType = sectorTypeMapIter->first; - const std::vector &hitsUnfiltered = sectorTypeMapIter->second; + int crvSectorType = hitMapIter->first; + const std::vector &hitsUnfiltered = hitMapIter->second; //filter hits, i.e. remove all hits below PE threshold //separate into both readout sides @@ -451,8 +451,8 @@ namespace mu2e if(minClusterPEs>hit->_minClusterPEs) minClusterPEs=hit->_minClusterPEs; } //loop over hits of the cluster - assert(PEs>0); - assert(layerSet.size()>1); + if(PEs<=0) throw cet::exception("CRVCoincidenceClusterFinder") << "Found a cluster with zero or less PEs." << std::endl; + if(layerSet.size()<=1) throw cet::exception("CRVCoincidenceClusterFinder") << "Found a cluster with zero or one layers." << std::endl; //average counter position (PE weighted), slope, layers avgHitPos/=PEs; From de3ca7d2e3915433727288cb5c907682ebbdca02 Mon Sep 17 00:00:00 2001 From: michaelmackenzie Date: Thu, 26 Mar 2026 14:04:11 -0500 Subject: [PATCH 34/54] Add initial calo digi to fragment module and a validation module --- DAQ/CMakeLists.txt | 18 + .../CaloDigiCollectionsComparator_module.cc | 185 ++++++++ DAQ/src/CaloDigisToFragments_module.cc | 402 ++++++++++++++++++ 3 files changed, 605 insertions(+) create mode 100644 DAQ/src/CaloDigiCollectionsComparator_module.cc create mode 100644 DAQ/src/CaloDigisToFragments_module.cc diff --git a/DAQ/CMakeLists.txt b/DAQ/CMakeLists.txt index 4a27ec701c..bce279e464 100644 --- a/DAQ/CMakeLists.txt +++ b/DAQ/CMakeLists.txt @@ -53,6 +53,24 @@ cet_build_plugin(CaloDigisFromDTCEvents art::module artdaq-core-mu2e::Data_dict ) + cet_build_plugin(CaloDigisToFragments art::module + REG_SOURCE src/CaloDigisToFragments_module.cc + LIBRARIES REG + Offline::DAQ + Offline::CaloConditions + Offline::DataProducts + Offline::ProditionsService + Offline::RecoDataProducts + artdaq-core-mu2e::Data + artdaq-core-mu2e::Data_dict + ) + + cet_build_plugin(CaloDigiCollectionsComparator art::module + REG_SOURCE src/CaloDigiCollectionsComparator_module.cc + LIBRARIES REG + Offline::RecoDataProducts + ) + cet_build_plugin(DummyLumiInfoProducer art::module REG_SOURCE src/DummyLumiInfoProducer_module.cc LIBRARIES REG diff --git a/DAQ/src/CaloDigiCollectionsComparator_module.cc b/DAQ/src/CaloDigiCollectionsComparator_module.cc new file mode 100644 index 0000000000..cbaf38cdfb --- /dev/null +++ b/DAQ/src/CaloDigiCollectionsComparator_module.cc @@ -0,0 +1,185 @@ +// ====================================================================== +// +// CaloDigiCollectionsComparator_module: Compare two CaloDigiCollections +// +// ====================================================================== + +#include "art/Framework/Core/EDAnalyzer.h" +#include "art/Framework/Core/ModuleMacros.h" +#include "art/Framework/Principal/Event.h" +#include "cetlib_except/exception.h" +#include "fhiclcpp/ParameterSet.h" + +#include "Offline/RecoDataProducts/inc/CaloDigi.hh" + +#include +#include +#include +#include +#include +#include + +namespace mu2e { + +class CaloDigiCollectionsComparator : public art::EDAnalyzer { +public: + struct Config { + fhicl::Atom referenceTag{fhicl::Name("referenceTag"), + fhicl::Comment("Reference CaloDigiCollection")}; + fhicl::Atom candidateTag{fhicl::Name("candidateTag"), + fhicl::Comment("Candidate CaloDigiCollection")}; + fhicl::Atom failOnMismatch{fhicl::Name("failOnMismatch"), + fhicl::Comment("Throw if any mismatch is found"), + true}; + fhicl::Atom diagLevel{fhicl::Name("diagLevel"), + fhicl::Comment("Diagnostic verbosity"), + 0}; + fhicl::Atom maxMismatchesToPrint{fhicl::Name("maxMismatchesToPrint"), + fhicl::Comment("Maximum mismatch entries to print"), + 10}; + }; + + using Parameters = art::EDAnalyzer::Table; + + explicit CaloDigiCollectionsComparator(Parameters const& config); + + void analyze(art::Event const& event) override; + void endJob() override; + +private: + struct FlatDigi { + int sipmID; + int t0; + int peakpos; + std::vector waveform; + + bool operator<(FlatDigi const& other) const { + return std::tie(sipmID, t0, peakpos, waveform) < + std::tie(other.sipmID, other.t0, other.peakpos, other.waveform); + } + + bool operator==(FlatDigi const& other) const { + return sipmID == other.sipmID && t0 == other.t0 && peakpos == other.peakpos && + waveform == other.waveform; + } + }; + + static std::vector normalize(mu2e::CaloDigiCollection const& digis); + static std::string describe(FlatDigi const& digi); + + art::InputTag referenceTag_; + art::InputTag candidateTag_; + bool failOnMismatch_; + int diagLevel_; + size_t maxMismatchesToPrint_; + + size_t totalEvents_{0}; + size_t matchingEvents_{0}; + size_t mismatchedEvents_{0}; +}; + +CaloDigiCollectionsComparator::CaloDigiCollectionsComparator(Parameters const& config) + : art::EDAnalyzer{config} + , referenceTag_(config().referenceTag()) + , candidateTag_(config().candidateTag()) + , failOnMismatch_(config().failOnMismatch()) + , diagLevel_(config().diagLevel()) + , maxMismatchesToPrint_(config().maxMismatchesToPrint()) {} + +std::vector +CaloDigiCollectionsComparator::normalize(mu2e::CaloDigiCollection const& digis) { + std::vector out; + out.reserve(digis.size()); + for (auto const& digi : digis) { + out.push_back(FlatDigi{digi.SiPMID(), digi.t0(), digi.peakpos(), digi.waveform()}); + } + // Sort so comparison is robust against ordering differences between producers. + std::sort(out.begin(), out.end()); + return out; +} + +std::string CaloDigiCollectionsComparator::describe(FlatDigi const& digi) { + std::ostringstream os; + os << "SiPMID=" << digi.sipmID << ", t0=" << digi.t0 << ", peakpos=" << digi.peakpos + << ", waveformSize=" << digi.waveform.size(); + if (!digi.waveform.empty()) { + os << ", waveform={"; + for (size_t i = 0; i < digi.waveform.size(); ++i) { + if (i != 0) { + os << ","; + } + os << digi.waveform[i]; + } + os << "}"; + } + return os.str(); +} + +void CaloDigiCollectionsComparator::analyze(art::Event const& event) { + ++totalEvents_; + + auto const& referenceHandle = event.getValidHandle(referenceTag_); + auto const& candidateHandle = event.getValidHandle(candidateTag_); + + auto reference = normalize(*referenceHandle); + auto candidate = normalize(*candidateHandle); + + std::vector mismatches; + if (reference.size() != candidate.size()) { + std::ostringstream os; + os << "Collection sizes differ: reference=" << reference.size() + << ", candidate=" << candidate.size(); + mismatches.push_back(os.str()); + } + + size_t compareCount = std::min(reference.size(), candidate.size()); + for (size_t i = 0; i < compareCount && mismatches.size() < maxMismatchesToPrint_; ++i) { + if (!(reference[i] == candidate[i])) { + std::ostringstream os; + os << "Digi mismatch at sorted index " << i << "\n" + << " reference: " << describe(reference[i]) << "\n" + << " candidate: " << describe(candidate[i]); + mismatches.push_back(os.str()); + } + } + + if (mismatches.empty()) { + ++matchingEvents_; + if (diagLevel_ > 1) { + std::cout << "[CaloDigiCollectionsComparator] Event " << event.id() + << " collections are equivalent (" << reference.size() << " digis)" << std::endl; + } + return; + } + + ++mismatchedEvents_; + + std::ostringstream summary; + summary << "[CaloDigiCollectionsComparator] Event " << event.id() << " mismatch between " + << referenceTag_ << " and " << candidateTag_ << "\n"; + for (auto const& mismatch : mismatches) { + summary << mismatch << "\n"; + } + + if (diagLevel_ > 0 || failOnMismatch_) { + // Keep human-readable details even when failOnMismatch is false. + std::cout << summary.str(); + } + + if (failOnMismatch_) { + throw cet::exception("CALODIGI_COMPARE") << summary.str(); + } +} + +void CaloDigiCollectionsComparator::endJob() { + if (diagLevel_ > 0) { + std::cout << "\n ----- [CaloDigiCollectionsComparator] Summary ----- " << std::endl; + std::cout << "Total events: " << totalEvents_ << std::endl; + std::cout << "Matching events: " << matchingEvents_ << std::endl; + std::cout << "Mismatched events: " << mismatchedEvents_ << std::endl; + } +} + +} // namespace mu2e + +DEFINE_ART_MODULE(mu2e::CaloDigiCollectionsComparator) diff --git a/DAQ/src/CaloDigisToFragments_module.cc b/DAQ/src/CaloDigisToFragments_module.cc new file mode 100644 index 0000000000..6d541b22fd --- /dev/null +++ b/DAQ/src/CaloDigisToFragments_module.cc @@ -0,0 +1,402 @@ +// ====================================================================== +// +// CaloDigisToFragments_module: Create DTCEVT artdaq::Fragment collection +// from CaloDigiCollection +// +// ====================================================================== + +#include "art/Framework/Core/EDProducer.h" +#include "art/Framework/Principal/Event.h" +#include "art/Framework/Principal/Handle.h" +#include "fhiclcpp/ParameterSet.h" + +#include "artdaq-core-mu2e/Overlays/Decoders/CalorimeterDataDecoder.hh" +#include "artdaq-core-mu2e/Overlays/DTC_Packets/DTC_Event.h" +#include "artdaq-core-mu2e/Overlays/DTC_Packets/DTC_DataHeaderPacket.h" +#include "artdaq-core-mu2e/Overlays/DTC_Packets/DTC_EventHeader.h" +#include "artdaq-core-mu2e/Overlays/DTC_Packets/DTC_SubEventHeader.h" +#include "artdaq-core-mu2e/Overlays/DTCEventFragment.hh" +#include "artdaq-core-mu2e/Overlays/FragmentType.hh" +#include + +#include "Offline/CaloConditions/inc/CaloDAQMap.hh" +#include "Offline/DataProducts/inc/CaloConst.hh" +#include "Offline/DataProducts/inc/CaloRawSiPMId.hh" +#include "Offline/DataProducts/inc/CaloSiPMId.hh" +#include "Offline/ProditionsService/inc/ProditionsHandle.hh" +#include "Offline/RecoDataProducts/inc/CaloDigi.hh" + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace { +struct CaloBlockData { + uint8_t dtcID{0}; + uint8_t linkID{0}; + uint16_t transferByteCount{0}; + uint16_t packetCount{0}; + std::vector hits; + std::vector> waveforms; +}; + +constexpr uint8_t kFormatVersion = 1; +constexpr uint8_t kCaloRocsPerDtc = 6; +constexpr size_t kDtcEventHeaderBytes = 24; +constexpr size_t kDtcSubEventHeaderBytes = 48; + +void writeBits(std::array& words, size_t startBit, size_t bitLength, uint32_t value) { + // The decoder reads bits in a swapped-word layout, so we write into that same mapping. + for (size_t relBit = 0; relBit < bitLength; ++relBit) { + size_t bitIndex = startBit + relBit; + size_t wordIndex = (bitIndex / 16) ^ 0x1; + size_t bitOffset = 15 - (bitIndex % 16); + uint16_t bit = (value >> (bitLength - relBit - 1)) & 0x1; + if (bit != 0) { + words[wordIndex] |= static_cast(1u << bitOffset); + } + } +} + +std::array encodeHitHeader(mu2e::CalorimeterDataDecoder::CalorimeterHitDataPacket const& hit) { + std::array words{}; + writeBits(words, 0, 12, hit.Reserved1); + writeBits(words, 12, 8, hit.BoardID); + writeBits(words, 20, 3, hit.DetectorID); + writeBits(words, 23, 5, hit.ChannelID); + writeBits(words, 28, 16, hit.Time); + writeBits(words, 44, 16, hit.InPayloadEventWindowTag); + writeBits(words, 60, 12, hit.Baseline); + writeBits(words, 72, 10, hit.IndexOfMaxDigitizerSample); + writeBits(words, 82, 4, hit.ErrorFlags); + writeBits(words, 86, 10, hit.NumberOfSamples); + return words; +} + +std::vector encodeWaveform(std::vector const& waveform) { + if (waveform.empty()) { + return {}; + } + + size_t sampleGroups = (waveform.size() + 3) / 4; + size_t logicalWordCount = sampleGroups * 3; + if (logicalWordCount % 2 != 0) { + logicalWordCount++; + } + + std::vector logicalWords(logicalWordCount, 0); + for (size_t i = 0; i < waveform.size(); i += 4) { + uint16_t s0 = waveform[i] & 0x0FFF; + uint16_t s1 = (i + 1 < waveform.size()) ? (waveform[i + 1] & 0x0FFF) : 0; + uint16_t s2 = (i + 2 < waveform.size()) ? (waveform[i + 2] & 0x0FFF) : 0; + uint16_t s3 = (i + 3 < waveform.size()) ? (waveform[i + 3] & 0x0FFF) : 0; + + size_t base = (i / 4) * 3; + logicalWords[base] = static_cast((s0 << 4) | (s1 >> 8)); + logicalWords[base + 1] = static_cast((s1 << 8) | (s2 >> 4)); + logicalWords[base + 2] = static_cast((s2 << 12) | s3); + } + + // Hardware/decoder expects each 16-bit word pair swapped. + std::vector rawWords(logicalWords.size(), 0); + for (size_t i = 0; i < logicalWords.size(); ++i) { + rawWords[i ^ 0x1] = logicalWords[i]; + } + + // Each hit occupies 12-byte chunks: 12-byte header + packed 12-bit samples + chunk padding. + size_t hitBytes = static_cast(12 * std::ceil((12.0 + 1.5 * waveform.size()) / 12.0)); + size_t waveformBytes = hitBytes - 12; + std::vector rawBytes(waveformBytes, 0xFF); + std::memcpy(rawBytes.data(), rawWords.data(), std::min(rawBytes.size(), rawWords.size() * sizeof(uint16_t))); + return rawBytes; +} +} // namespace + +namespace art { +class CaloDigisToFragments; +} + +class art::CaloDigisToFragments : public EDProducer { +public: + struct Config { + fhicl::Atom diagLevel{fhicl::Name("diagLevel"), fhicl::Comment("diagnostic level"), 0}; + fhicl::Atom useOfflineID{fhicl::Name("useOfflineID"), + fhicl::Comment("Input CaloDigis use offline SiPM IDs"), + true}; + fhicl::Atom caloDigiTag{fhicl::Name("caloDigiTag"), + fhicl::Comment("Input CaloDigiCollection")}; + }; + + explicit CaloDigisToFragments(const art::EDProducer::Table& config); + virtual ~CaloDigisToFragments() {} + + virtual void produce(Event&); + virtual void endJob(); + +private: + mu2e::ProditionsHandle calodaqconds_h_; + + int diagLevel_; + bool useOfflineID_; + art::InputTag caloDigiTag_; + + long int total_events_; + long int total_digis_; + + static size_t waveformMaximumIndex(const std::vector& waveform); + + static void putBlockInEvent(DTCLib::DTC_Event& currentEvent, uint8_t dtcID, + DTCLib::DTC_DataBlock const& thisBlock); + + void buildDtcEventFromDigis(art::Event const& event, mu2e::CaloDigiCollection const& caloDigis, + DTCLib::DTC_Event& dtcEvent); +}; + +art::CaloDigisToFragments::CaloDigisToFragments(const art::EDProducer::Table& config) + : art::EDProducer{config} + , diagLevel_(config().diagLevel()) + , useOfflineID_(config().useOfflineID()) + , caloDigiTag_(config().caloDigiTag()) { + produces(); + total_events_ = 0; + total_digis_ = 0; +} + +size_t art::CaloDigisToFragments::waveformMaximumIndex(const std::vector& waveform) { + if (waveform.empty()) { + return 0; + } + return std::distance(waveform.begin(), std::max_element(waveform.begin(), waveform.end())); +} + +void art::CaloDigisToFragments::putBlockInEvent(DTCLib::DTC_Event& currentEvent, uint8_t dtcID, + DTCLib::DTC_DataBlock const& thisBlock) { + auto subEvt = currentEvent.GetSubEventByDTCID(dtcID, DTCLib::DTC_Subsystem_Calorimeter); + if (subEvt == nullptr) { + DTCLib::DTC_SubEvent newSubEvt; + newSubEvt.SetEventWindowTag(currentEvent.GetEventWindowTag()); + newSubEvt.SetSourceDTC(dtcID, DTCLib::DTC_Subsystem_Calorimeter); + newSubEvt.AddDataBlock(thisBlock); + currentEvent.AddSubEvent(newSubEvt); + } else { + subEvt->AddDataBlock(thisBlock); + } +} + +void art::CaloDigisToFragments::buildDtcEventFromDigis(art::Event const& event, + mu2e::CaloDigiCollection const& caloDigis, + DTCLib::DTC_Event& dtcEvent) { + auto const& calodaqconds = calodaqconds_h_.get(event.id()); + + std::map> byDtcAndLink; + for (auto const& digi : caloDigis) { + mu2e::CaloRawSiPMId rawId; + uint16_t detectorID = 0; + + if (useOfflineID_) { + mu2e::CaloSiPMId offId(static_cast(digi.SiPMID())); + rawId = calodaqconds.rawId(offId); + detectorID = offId.detType(); + } else { + rawId = mu2e::CaloRawSiPMId(static_cast(digi.SiPMID())); + } + + if (!rawId.isValid()) { + continue; + } + + auto const diracID = rawId.dirac(); + auto const dtcID = static_cast(diracID / kCaloRocsPerDtc); + auto const linkID = static_cast(diracID % kCaloRocsPerDtc); + auto const channelID = rawId.ROCchannel(); + auto& block = byDtcAndLink[dtcID][linkID]; + block.dtcID = dtcID; + block.linkID = linkID; + + auto& hit = block.hits.emplace_back(); + hit.Reserved1 = 0xAAA; + hit.BoardID = diracID; + hit.DetectorID = detectorID; + hit.ChannelID = channelID; + hit.Time = static_cast(digi.t0()); + hit.InPayloadEventWindowTag = 0; + hit.Baseline = 0; + hit.ErrorFlags = 0; + + std::vector waveform; + waveform.reserve(digi.waveform().size()); + for (auto const sample : digi.waveform()) { + waveform.push_back(static_cast(sample)); + } + + hit.NumberOfSamples = waveform.size(); + hit.IndexOfMaxDigitizerSample = + waveform.empty() ? 0 : std::min(digi.peakpos(), waveform.size() - 1); + block.waveforms.emplace_back(std::move(waveform)); + } + + for (auto& [dtcID, linkMap] : byDtcAndLink) { + for (uint8_t linkID = 0; linkID < kCaloRocsPerDtc; ++linkID) { + auto& block = linkMap[linkID]; + block.dtcID = dtcID; + block.linkID = linkID; + + if (block.hits.empty()) { + block.transferByteCount = 16; + block.packetCount = 0; + } else { + block.transferByteCount = 16; + for (auto const& wf : block.waveforms) { + block.transferByteCount += + static_cast(12 * std::ceil((12.0 + 1.5 * wf.size()) / 12.0)); + } + + while (block.transferByteCount % 16 != 0) { + block.transferByteCount++; + } + block.packetCount = (block.transferByteCount - 16) / 16; + } + + DTCLib::DTC_DataBlock thisBlock(block.transferByteCount); + if (thisBlock.blockPointer == nullptr) { + continue; + } + std::fill(thisBlock.allocBytes->begin(), thisBlock.allocBytes->end(), 0xFF); + + auto const ts = DTCLib::DTC_EventWindowTag(static_cast(event.event())); + DTCLib::DTC_DataHeaderPacket hdr(static_cast(block.linkID), + block.packetCount, + 0, + block.dtcID, + DTCLib::DTC_Subsystem_Calorimeter, + kFormatVersion, + ts, + 0); + auto hdrPkt = hdr.ConvertToDataPacket(); + hdrPkt.SetByte(5, static_cast(((block.packetCount & 0x0700) >> 8) | + (DTCLib::DTC_Subsystem_Calorimeter << 5))); + + size_t pos = 0; + std::memcpy(thisBlock.allocBytes->data() + pos, hdrPkt.GetData(), 16); + pos += 16; + + if (!block.hits.empty()) { + for (size_t i = 0; i < block.hits.size(); ++i) { + auto rawHeader = encodeHitHeader(block.hits[i]); + std::memcpy(thisBlock.allocBytes->data() + pos, rawHeader.data(), 12); + pos += 12; + + auto rawWaveform = encodeWaveform(block.waveforms[i]); + if (!rawWaveform.empty()) { + std::memcpy(thisBlock.allocBytes->data() + pos, rawWaveform.data(), rawWaveform.size()); + pos += rawWaveform.size(); + } + } + } + + putBlockInEvent(dtcEvent, block.dtcID, thisBlock); + } + } +} + +void art::CaloDigisToFragments::produce(Event& event) { + total_events_++; + + std::unique_ptr fragments(new artdaq::Fragments()); + auto caloDigiHandle = event.getHandle(caloDigiTag_); + + if (!caloDigiHandle.isValid()) { + if (diagLevel_ > 0) { + std::cout << "[CaloDigisToFragments::produce] No valid CaloDigiCollection found!" << std::endl; + } + event.put(std::move(fragments)); + return; + } + + auto const& caloDigis = *caloDigiHandle; + total_digis_ += caloDigis.size(); + + DTCLib::DTC_Event dtcEvent; + dtcEvent.SetEventWindowTag(DTCLib::DTC_EventWindowTag(static_cast(event.event()))); + buildDtcEventFromDigis(event, caloDigis, dtcEvent); + + auto const eventBytes = dtcEvent.GetEventByteCount(); + if (eventBytes > 0 && dtcEvent.GetSubEventCount() > 0) { + // Build the exact in-memory layout consumed by DTCEventFragment::SetupEvent. + std::vector packed; + packed.reserve(eventBytes); + + auto const* evHdr = dtcEvent.GetHeader(); + packed.insert(packed.end(), reinterpret_cast(evHdr), + reinterpret_cast(evHdr) + kDtcEventHeaderBytes); + + for (auto const& subEvt : dtcEvent.GetSubEvents()) { + auto const* subHdr = subEvt.GetHeader(); + packed.insert(packed.end(), reinterpret_cast(subHdr), + reinterpret_cast(subHdr) + kDtcSubEventHeaderBytes); + + for (auto const& block : subEvt.GetDataBlocks()) { + auto const* blk = reinterpret_cast(block.GetRawBufferPointer()); + packed.insert(packed.end(), blk, blk + block.byteSize); + } + } + + if (packed.size() != eventBytes && diagLevel_ > 0) { + std::cout << "[CaloDigisToFragments::produce] WARNING: packed size " << packed.size() + << " differs from header event size " << eventBytes << std::endl; + } + + auto fragPtr = artdaq::Fragment::FragmentBytes(packed.size()); + fragPtr->setUserType(mu2e::FragmentType::DTCEVT); + fragPtr->setSequenceID(static_cast(event.event())); + fragPtr->setFragmentID(0); + fragPtr->setTimestamp(static_cast(event.event())); + if (!packed.empty()) { + std::memcpy(fragPtr->dataBeginBytes(), packed.data(), packed.size()); + } + + if (diagLevel_ > 0) { + mu2e::DTCEventFragment testFragment(*fragPtr); + auto testSubevents = + testFragment.getSubsystemData(DTCLib::DTC_Subsystem::DTC_Subsystem_Calorimeter); + size_t decodedHits = 0; + for (auto const& se : testSubevents) { + mu2e::CalorimeterDataDecoder decoder(se); + for (size_t i = 0; i < decoder.block_count(); ++i) { + auto hitVec = decoder.GetCalorimeterHitData(i); + if (hitVec != nullptr) { + decodedHits += hitVec->size(); + } + } + } + std::cout << "[CaloDigisToFragments::produce] Validation: " << testSubevents.size() + << " CALO subevent(s), " << decodedHits << " decodable hit(s) in output" + << std::endl; + } + + fragments->emplace_back(std::move(*fragPtr)); + } + + if (diagLevel_ > 0) { + std::cout << "[CaloDigisToFragments::produce] Run " << event.run() << ", subrun " + << event.subRun() << ", event " << event.event() << " has " << caloDigis.size() + << " CaloDigis and created " << fragments->size() << " DTCEVT fragment(s)" << std::endl; + } + + event.put(std::move(fragments)); +} + +void art::CaloDigisToFragments::endJob() { + if (diagLevel_ > 0) { + std::cout << "\n ----- [CaloDigisToFragments] Summary ----- " << std::endl; + std::cout << "Total events: " << total_events_ << std::endl; + std::cout << "Total CaloDigis processed: " << total_digis_ << std::endl; + } +} + +DEFINE_ART_MODULE(art::CaloDigisToFragments) From 09da825dd1d71235995f042b10f25e93513092d0 Mon Sep 17 00:00:00 2001 From: michaelmackenzie Date: Thu, 26 Mar 2026 14:16:38 -0500 Subject: [PATCH 35/54] Apply comment resolutions --- DAQ/CMakeLists.txt | 16 ++--- .../CaloDigiCollectionsComparator_module.cc | 46 ++++++++++--- DAQ/src/CaloDigisToFragments_module.cc | 69 +++++++++++-------- 3 files changed, 83 insertions(+), 48 deletions(-) diff --git a/DAQ/CMakeLists.txt b/DAQ/CMakeLists.txt index bce279e464..34e12cc21a 100644 --- a/DAQ/CMakeLists.txt +++ b/DAQ/CMakeLists.txt @@ -53,9 +53,9 @@ cet_build_plugin(CaloDigisFromDTCEvents art::module artdaq-core-mu2e::Data_dict ) - cet_build_plugin(CaloDigisToFragments art::module - REG_SOURCE src/CaloDigisToFragments_module.cc - LIBRARIES REG +cet_build_plugin(CaloDigisToFragments art::module + REG_SOURCE src/CaloDigisToFragments_module.cc + LIBRARIES REG Offline::DAQ Offline::CaloConditions Offline::DataProducts @@ -63,13 +63,13 @@ cet_build_plugin(CaloDigisFromDTCEvents art::module Offline::RecoDataProducts artdaq-core-mu2e::Data artdaq-core-mu2e::Data_dict - ) +) - cet_build_plugin(CaloDigiCollectionsComparator art::module - REG_SOURCE src/CaloDigiCollectionsComparator_module.cc - LIBRARIES REG +cet_build_plugin(CaloDigiCollectionsComparator art::module + REG_SOURCE src/CaloDigiCollectionsComparator_module.cc + LIBRARIES REG Offline::RecoDataProducts - ) +) cet_build_plugin(DummyLumiInfoProducer art::module REG_SOURCE src/DummyLumiInfoProducer_module.cc diff --git a/DAQ/src/CaloDigiCollectionsComparator_module.cc b/DAQ/src/CaloDigiCollectionsComparator_module.cc index cbaf38cdfb..f3f1597fcc 100644 --- a/DAQ/src/CaloDigiCollectionsComparator_module.cc +++ b/DAQ/src/CaloDigiCollectionsComparator_module.cc @@ -37,6 +37,10 @@ class CaloDigiCollectionsComparator : public art::EDAnalyzer { fhicl::Atom maxMismatchesToPrint{fhicl::Name("maxMismatchesToPrint"), fhicl::Comment("Maximum mismatch entries to print"), 10}; + fhicl::Atom maxWaveformSamplesToPrint{ + fhicl::Name("maxWaveformSamplesToPrint"), + fhicl::Comment("Maximum waveform samples to print in mismatch diagnostics"), + 64}; }; using Parameters = art::EDAnalyzer::Table; @@ -65,13 +69,14 @@ class CaloDigiCollectionsComparator : public art::EDAnalyzer { }; static std::vector normalize(mu2e::CaloDigiCollection const& digis); - static std::string describe(FlatDigi const& digi); + static std::string describe(FlatDigi const& digi, size_t maxWaveformSamplesToPrint); art::InputTag referenceTag_; art::InputTag candidateTag_; bool failOnMismatch_; int diagLevel_; size_t maxMismatchesToPrint_; + size_t maxWaveformSamplesToPrint_; size_t totalEvents_{0}; size_t matchingEvents_{0}; @@ -84,7 +89,8 @@ CaloDigiCollectionsComparator::CaloDigiCollectionsComparator(Parameters const& c , candidateTag_(config().candidateTag()) , failOnMismatch_(config().failOnMismatch()) , diagLevel_(config().diagLevel()) - , maxMismatchesToPrint_(config().maxMismatchesToPrint()) {} + , maxMismatchesToPrint_(config().maxMismatchesToPrint()) + , maxWaveformSamplesToPrint_(config().maxWaveformSamplesToPrint()) {} std::vector CaloDigiCollectionsComparator::normalize(mu2e::CaloDigiCollection const& digis) { @@ -98,17 +104,37 @@ CaloDigiCollectionsComparator::normalize(mu2e::CaloDigiCollection const& digis) return out; } -std::string CaloDigiCollectionsComparator::describe(FlatDigi const& digi) { +std::string CaloDigiCollectionsComparator::describe(FlatDigi const& digi, + size_t maxWaveformSamplesToPrint) { std::ostringstream os; os << "SiPMID=" << digi.sipmID << ", t0=" << digi.t0 << ", peakpos=" << digi.peakpos << ", waveformSize=" << digi.waveform.size(); if (!digi.waveform.empty()) { os << ", waveform={"; - for (size_t i = 0; i < digi.waveform.size(); ++i) { - if (i != 0) { - os << ","; + size_t const n = digi.waveform.size(); + if (n <= maxWaveformSamplesToPrint) { + for (size_t i = 0; i < n; ++i) { + if (i != 0) { + os << ","; + } + os << digi.waveform[i]; + } + } else { + size_t const head = maxWaveformSamplesToPrint / 2; + size_t const tail = maxWaveformSamplesToPrint - head; + for (size_t i = 0; i < head; ++i) { + if (i != 0) { + os << ","; + } + os << digi.waveform[i]; + } + os << ",...,"; + for (size_t i = n - tail; i < n; ++i) { + if (i != n - tail) { + os << ","; + } + os << digi.waveform[i]; } - os << digi.waveform[i]; } os << "}"; } @@ -137,8 +163,8 @@ void CaloDigiCollectionsComparator::analyze(art::Event const& event) { if (!(reference[i] == candidate[i])) { std::ostringstream os; os << "Digi mismatch at sorted index " << i << "\n" - << " reference: " << describe(reference[i]) << "\n" - << " candidate: " << describe(candidate[i]); + << " reference: " << describe(reference[i], maxWaveformSamplesToPrint_) << "\n" + << " candidate: " << describe(candidate[i], maxWaveformSamplesToPrint_); mismatches.push_back(os.str()); } } @@ -182,4 +208,4 @@ void CaloDigiCollectionsComparator::endJob() { } // namespace mu2e -DEFINE_ART_MODULE(mu2e::CaloDigiCollectionsComparator) +DEFINE_ART_MODULE(mu2e::CaloDigiCollectionsComparator) \ No newline at end of file diff --git a/DAQ/src/CaloDigisToFragments_module.cc b/DAQ/src/CaloDigisToFragments_module.cc index 6d541b22fd..d5b83a9249 100644 --- a/DAQ/src/CaloDigisToFragments_module.cc +++ b/DAQ/src/CaloDigisToFragments_module.cc @@ -28,6 +28,7 @@ #include #include +#include #include #include #include @@ -49,6 +50,10 @@ constexpr uint8_t kFormatVersion = 1; constexpr uint8_t kCaloRocsPerDtc = 6; constexpr size_t kDtcEventHeaderBytes = 24; constexpr size_t kDtcSubEventHeaderBytes = 48; +static_assert(sizeof(DTCLib::DTC_EventHeader) == kDtcEventHeaderBytes, + "Unexpected DTC_EventHeader size"); +static_assert(sizeof(DTCLib::DTC_SubEventHeader) == kDtcSubEventHeaderBytes, + "Unexpected DTC_SubEventHeader size"); void writeBits(std::array& words, size_t startBit, size_t bitLength, uint32_t value) { // The decoder reads bits in a swapped-word layout, so we write into that same mapping. @@ -129,7 +134,8 @@ class art::CaloDigisToFragments : public EDProducer { fhicl::Comment("Input CaloDigis use offline SiPM IDs"), true}; fhicl::Atom caloDigiTag{fhicl::Name("caloDigiTag"), - fhicl::Comment("Input CaloDigiCollection")}; + fhicl::Comment("Input CaloDigiCollection"), + art::InputTag("CaloDigisFromDTCEvents")}; }; explicit CaloDigisToFragments(const art::EDProducer::Table& config); @@ -346,40 +352,43 @@ void art::CaloDigisToFragments::produce(Event& event) { } } - if (packed.size() != eventBytes && diagLevel_ > 0) { - std::cout << "[CaloDigisToFragments::produce] WARNING: packed size " << packed.size() - << " differs from header event size " << eventBytes << std::endl; - } - - auto fragPtr = artdaq::Fragment::FragmentBytes(packed.size()); - fragPtr->setUserType(mu2e::FragmentType::DTCEVT); - fragPtr->setSequenceID(static_cast(event.event())); - fragPtr->setFragmentID(0); - fragPtr->setTimestamp(static_cast(event.event())); - if (!packed.empty()) { - std::memcpy(fragPtr->dataBeginBytes(), packed.data(), packed.size()); - } + if (packed.size() != eventBytes) { + if (diagLevel_ > 0) { + std::cout << "[CaloDigisToFragments::produce] WARNING: packed size " << packed.size() + << " differs from header event size " << eventBytes + << " - skipping fragment" << std::endl; + } + } else { + auto fragPtr = artdaq::Fragment::FragmentBytes(packed.size()); + fragPtr->setUserType(mu2e::FragmentType::DTCEVT); + fragPtr->setSequenceID(static_cast(event.event())); + fragPtr->setFragmentID(0); + fragPtr->setTimestamp(static_cast(event.event())); + if (!packed.empty()) { + std::memcpy(fragPtr->dataBeginBytes(), packed.data(), packed.size()); + } - if (diagLevel_ > 0) { - mu2e::DTCEventFragment testFragment(*fragPtr); - auto testSubevents = - testFragment.getSubsystemData(DTCLib::DTC_Subsystem::DTC_Subsystem_Calorimeter); - size_t decodedHits = 0; - for (auto const& se : testSubevents) { - mu2e::CalorimeterDataDecoder decoder(se); - for (size_t i = 0; i < decoder.block_count(); ++i) { - auto hitVec = decoder.GetCalorimeterHitData(i); - if (hitVec != nullptr) { - decodedHits += hitVec->size(); + if (diagLevel_ > 0) { + mu2e::DTCEventFragment testFragment(*fragPtr); + auto testSubevents = + testFragment.getSubsystemData(DTCLib::DTC_Subsystem::DTC_Subsystem_Calorimeter); + size_t decodedHits = 0; + for (auto const& se : testSubevents) { + mu2e::CalorimeterDataDecoder decoder(se); + for (size_t i = 0; i < decoder.block_count(); ++i) { + auto hitVec = decoder.GetCalorimeterHitData(i); + if (hitVec != nullptr) { + decodedHits += hitVec->size(); + } } } + std::cout << "[CaloDigisToFragments::produce] Validation: " << testSubevents.size() + << " CALO subevent(s), " << decodedHits << " decodable hit(s) in output" + << std::endl; } - std::cout << "[CaloDigisToFragments::produce] Validation: " << testSubevents.size() - << " CALO subevent(s), " << decodedHits << " decodable hit(s) in output" - << std::endl; - } - fragments->emplace_back(std::move(*fragPtr)); + fragments->emplace_back(std::move(*fragPtr)); + } } if (diagLevel_ > 0) { From c885d4cc4faf9815f6fd371e318ddba61fce857d Mon Sep 17 00:00:00 2001 From: michaelmackenzie Date: Thu, 26 Mar 2026 14:16:43 -0500 Subject: [PATCH 36/54] Apply comment resolutions --- DAQ/src/CaloDigiCollectionsComparator_module.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DAQ/src/CaloDigiCollectionsComparator_module.cc b/DAQ/src/CaloDigiCollectionsComparator_module.cc index f3f1597fcc..d27ed185f5 100644 --- a/DAQ/src/CaloDigiCollectionsComparator_module.cc +++ b/DAQ/src/CaloDigiCollectionsComparator_module.cc @@ -208,4 +208,4 @@ void CaloDigiCollectionsComparator::endJob() { } // namespace mu2e -DEFINE_ART_MODULE(mu2e::CaloDigiCollectionsComparator) \ No newline at end of file +DEFINE_ART_MODULE(mu2e::CaloDigiCollectionsComparator) From 35fc99fd8b6c8bf338a91c92ebd03afaa57cb650 Mon Sep 17 00:00:00 2001 From: michaelmackenzie Date: Thu, 26 Mar 2026 14:42:49 -0500 Subject: [PATCH 37/54] Allow predicted size to disagree as it does not affect decoding --- DAQ/src/CaloDigisToFragments_module.cc | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/DAQ/src/CaloDigisToFragments_module.cc b/DAQ/src/CaloDigisToFragments_module.cc index d5b83a9249..1d5053d946 100644 --- a/DAQ/src/CaloDigisToFragments_module.cc +++ b/DAQ/src/CaloDigisToFragments_module.cc @@ -133,6 +133,10 @@ class art::CaloDigisToFragments : public EDProducer { fhicl::Atom useOfflineID{fhicl::Name("useOfflineID"), fhicl::Comment("Input CaloDigis use offline SiPM IDs"), true}; + fhicl::Atom skipFragmentOnSizeMismatch{ + fhicl::Name("skipFragmentOnSizeMismatch"), + fhicl::Comment("Skip emitting fragment when packed bytes and event header size differ"), + false}; fhicl::Atom caloDigiTag{fhicl::Name("caloDigiTag"), fhicl::Comment("Input CaloDigiCollection"), art::InputTag("CaloDigisFromDTCEvents")}; @@ -149,6 +153,7 @@ class art::CaloDigisToFragments : public EDProducer { int diagLevel_; bool useOfflineID_; + bool skipFragmentOnSizeMismatch_; art::InputTag caloDigiTag_; long int total_events_; @@ -167,6 +172,7 @@ art::CaloDigisToFragments::CaloDigisToFragments(const art::EDProducer::Table(); total_events_ = 0; @@ -352,13 +358,25 @@ void art::CaloDigisToFragments::produce(Event& event) { } } - if (packed.size() != eventBytes) { + bool sizeMismatch = packed.size() != eventBytes; + if (sizeMismatch) { + if (skipFragmentOnSizeMismatch_) { + if (diagLevel_ > 0) { + std::cout << "[CaloDigisToFragments::produce] WARNING: packed size " << packed.size() + << " differs from header event size " << eventBytes + << " - skipping fragment" << std::endl; + } + event.put(std::move(fragments)); + return; + } if (diagLevel_ > 0) { std::cout << "[CaloDigisToFragments::produce] WARNING: packed size " << packed.size() << " differs from header event size " << eventBytes - << " - skipping fragment" << std::endl; + << " - emitting fragment" << std::endl; } - } else { + } + + { auto fragPtr = artdaq::Fragment::FragmentBytes(packed.size()); fragPtr->setUserType(mu2e::FragmentType::DTCEVT); fragPtr->setSequenceID(static_cast(event.event())); From f7edd995455f80d22b20e5e8d8ec75af14699e8d Mon Sep 17 00:00:00 2001 From: ehrlich-uva Date: Fri, 27 Mar 2026 15:54:53 -0500 Subject: [PATCH 38/54] updated event display to add calo digis --- .../fcl/EventDisplayExtractedReal.fcl | 8 +++++ ...l => EventDisplayExtractedRealCrvOnly.fcl} | 0 EventDisplay/src/ContentSelector.cc | 7 ++++- EventDisplay/src/ContentSelector.h | 2 ++ EventDisplay/src/DataInterface.cc | 31 +++++++++++++++++++ 5 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 EventDisplay/fcl/EventDisplayExtractedReal.fcl rename EventDisplay/fcl/{EventDisplayExtractedCrvOnly.fcl => EventDisplayExtractedRealCrvOnly.fcl} (100%) diff --git a/EventDisplay/fcl/EventDisplayExtractedReal.fcl b/EventDisplay/fcl/EventDisplayExtractedReal.fcl new file mode 100644 index 0000000000..bc8181c0a7 --- /dev/null +++ b/EventDisplay/fcl/EventDisplayExtractedReal.fcl @@ -0,0 +1,8 @@ +#include "Offline/EventDisplay/fcl/EventDisplayBase.fcl" + +physics.analyzers.eventdisplay.extracted : true +services.GeometryService.inputFile : "Offline/Mu2eG4/geom/geom_common_extracted.txt" +services.ProditionsService.crvCalib.useDb : true +services.ProditionsService.crvStatus.useDb : true +#comment out this line, if displaying simulated events +services.DbService.textFile : ["Offline/CRVConditions/data/status_extracted_20260221.txt","Offline/CRVConditions/data/calib_extracted_20260221.txt"] diff --git a/EventDisplay/fcl/EventDisplayExtractedCrvOnly.fcl b/EventDisplay/fcl/EventDisplayExtractedRealCrvOnly.fcl similarity index 100% rename from EventDisplay/fcl/EventDisplayExtractedCrvOnly.fcl rename to EventDisplay/fcl/EventDisplayExtractedRealCrvOnly.fcl diff --git a/EventDisplay/src/ContentSelector.cc b/EventDisplay/src/ContentSelector.cc index be3ecdbd11..e5607c5bab 100644 --- a/EventDisplay/src/ContentSelector.cc +++ b/EventDisplay/src/ContentSelector.cc @@ -101,6 +101,7 @@ void ContentSelector::setAvailableCollections(const art::Event& event) newEntries.clear(); newEntries.push_back(nothingSelected); createNewEntries(_caloStepPointMCVector, event, "StepPointMC", newEntries, 1); + createNewEntries(_caloDigiVector, event, "CaloDigi", newEntries, 2); createNewEntries(_caloHitVector, event, "CaloHit", newEntries, 3); if(newEntries!=_caloHitEntries) @@ -288,6 +289,9 @@ const CollectionType* ContentSelector::getSelectedCaloHitCollection() const case 1 : if(typeid(CollectionType)!=typeid(mu2e::StepPointMCCollection)) return(nullptr); if(index>=static_cast(_caloStepPointMCVector.size())) return(nullptr); return(reinterpret_cast(_caloStepPointMCVector[index].product())); + case 2 : if(typeid(CollectionType)!=typeid(mu2e::CaloDigiCollection)) return(nullptr); + if(index>=static_cast(_caloDigiVector.size())) return(nullptr); + return(reinterpret_cast(_caloDigiVector[index].product())); case 3 : if(typeid(CollectionType)!=typeid(mu2e::CaloHitCollection)) return(nullptr); if(index>=static_cast(_caloHitVector.size())) return(nullptr); return(reinterpret_cast(_caloHitVector[index].product())); @@ -295,7 +299,8 @@ const CollectionType* ContentSelector::getSelectedCaloHitCollection() const return(nullptr); } template const mu2e::StepPointMCCollection* ContentSelector::getSelectedCaloHitCollection() const; -template const mu2e::CaloHitCollection* ContentSelector::getSelectedCaloHitCollection() const; +template const mu2e::CaloDigiCollection* ContentSelector::getSelectedCaloHitCollection() const; +template const mu2e::CaloHitCollection* ContentSelector::getSelectedCaloHitCollection() const; template diff --git a/EventDisplay/src/ContentSelector.h b/EventDisplay/src/ContentSelector.h index 5d17eb71bc..d1cd77ee6c 100644 --- a/EventDisplay/src/ContentSelector.h +++ b/EventDisplay/src/ContentSelector.h @@ -8,6 +8,7 @@ #ifndef EventDisplay_src_ContentSelector_h #define EventDisplay_src_ContentSelector_h +#include "Offline/RecoDataProducts/inc/CaloDigi.hh" #include "Offline/RecoDataProducts/inc/CaloHit.hh" #include "Offline/RecoDataProducts/inc/CrvRecoPulse.hh" #include "Offline/RecoDataProducts/inc/CrvDigi.hh" @@ -43,6 +44,7 @@ class ContentSelector std::vector > _strawHitVector; std::vector > _strawHitFlagVector; std::vector > _strawHitPositionVector; + std::vector > _caloDigiVector; std::vector > _caloHitVector; std::vector > _crvRecoPulseVector; std::vector > _crvDigisVector; diff --git a/EventDisplay/src/DataInterface.cc b/EventDisplay/src/DataInterface.cc index 581c33e157..d2cd468664 100644 --- a/EventDisplay/src/DataInterface.cc +++ b/EventDisplay/src/DataInterface.cc @@ -8,6 +8,7 @@ using namespace std; #include "Offline/CalorimeterGeom/inc/Calorimeter.hh" #include "Offline/CosmicRayShieldGeom/inc/CosmicRayShield.hh" #include "Offline/CRVConditions/inc/CRVDigitizationPeriod.hh" +#include "Offline/DataProducts/inc/CaloSiPMId.hh" #include "Offline/DataProducts/inc/CRVId.hh" #include "Offline/DetectorSolenoidGeom/inc/DetectorSolenoid.hh" #include "Offline/EventDisplay/src/Cube.h" @@ -33,6 +34,7 @@ using namespace std; #include "Offline/ConfigTools/inc/SimpleConfig.hh" #include "Offline/RecoDataProducts/inc/KalSeed.hh" #include "Offline/RecoDataProducts/inc/CrvDigi.hh" +#include "Offline/RecoDataProducts/inc/CaloDigi.hh" #include "Offline/RecoDataProducts/inc/CaloHit.hh" #include "Offline/RecoDataProducts/inc/StrawHit.hh" #include "Offline/RecoDataProducts/inc/StrawHitFlag.hh" @@ -976,6 +978,35 @@ void DataInterface::fillEvent(boost::shared_ptr const &contentS } } + const mu2e::CaloDigiCollection *calodigis=contentSelector->getSelectedCaloHitCollection(); + if(calodigis!=nullptr) + { + _numberCrystalHits=calodigis->size(); + std::vector::const_iterator iter; + for(iter=calodigis->begin(); iter!=calodigis->end(); iter++) + { + const mu2e::CaloDigi& calodigi = *iter; + size_t crystalid = mu2e::CaloSiPMId(calodigi.SiPMID()).crystal().id(); + double time = calodigi.t0(); + std::map >::iterator crystal=_crystals.find(crystalid); + if(crystal!=_crystals.end() && !std::isnan(time)) + { + double previousStartTime=crystal->second->getStartTime(); + if(std::isnan(previousStartTime)) + { + findBoundaryT(_hitsTimeMinmax, time); //is it Ok to exclude all following hits from the time window? + crystal->second->setStartTime(time); + crystal->second->getComponentInfo()->setText(2,Form("hit time(s): %gns",time/CLHEP::ns)); + _crystalhits.push_back(crystal->second); + } + else + { + crystal->second->getComponentInfo()->expandLine(2,Form("%gns",time/CLHEP::ns)); + } + } + } + } + const mu2e::CaloHitCollection *calohits=contentSelector->getSelectedCaloHitCollection(); if(calohits!=nullptr) { From 3707cd17b7cdbe458181ec5299eb7614875fd75a Mon Sep 17 00:00:00 2001 From: michaelmackenzie Date: Mon, 30 Mar 2026 16:13:17 -0500 Subject: [PATCH 39/54] Remove legacy option --- DAQ/src/CaloDigisToFragments_module.cc | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/DAQ/src/CaloDigisToFragments_module.cc b/DAQ/src/CaloDigisToFragments_module.cc index 1d5053d946..cfc246a3e9 100644 --- a/DAQ/src/CaloDigisToFragments_module.cc +++ b/DAQ/src/CaloDigisToFragments_module.cc @@ -130,9 +130,6 @@ class art::CaloDigisToFragments : public EDProducer { public: struct Config { fhicl::Atom diagLevel{fhicl::Name("diagLevel"), fhicl::Comment("diagnostic level"), 0}; - fhicl::Atom useOfflineID{fhicl::Name("useOfflineID"), - fhicl::Comment("Input CaloDigis use offline SiPM IDs"), - true}; fhicl::Atom skipFragmentOnSizeMismatch{ fhicl::Name("skipFragmentOnSizeMismatch"), fhicl::Comment("Skip emitting fragment when packed bytes and event header size differ"), @@ -152,7 +149,6 @@ class art::CaloDigisToFragments : public EDProducer { mu2e::ProditionsHandle calodaqconds_h_; int diagLevel_; - bool useOfflineID_; bool skipFragmentOnSizeMismatch_; art::InputTag caloDigiTag_; @@ -171,7 +167,6 @@ class art::CaloDigisToFragments : public EDProducer { art::CaloDigisToFragments::CaloDigisToFragments(const art::EDProducer::Table& config) : art::EDProducer{config} , diagLevel_(config().diagLevel()) - , useOfflineID_(config().useOfflineID()) , skipFragmentOnSizeMismatch_(config().skipFragmentOnSizeMismatch()) , caloDigiTag_(config().caloDigiTag()) { produces(); @@ -207,16 +202,9 @@ void art::CaloDigisToFragments::buildDtcEventFromDigis(art::Event const& event, std::map> byDtcAndLink; for (auto const& digi : caloDigis) { - mu2e::CaloRawSiPMId rawId; - uint16_t detectorID = 0; - - if (useOfflineID_) { - mu2e::CaloSiPMId offId(static_cast(digi.SiPMID())); - rawId = calodaqconds.rawId(offId); - detectorID = offId.detType(); - } else { - rawId = mu2e::CaloRawSiPMId(static_cast(digi.SiPMID())); - } + mu2e::CaloSiPMId offId(static_cast(digi.SiPMID())); + const mu2e::CaloRawSiPMId rawId = calodaqconds.rawId(offId); + const uint16_t detectorID = offId.detType(); if (!rawId.isValid()) { continue; From d6e3ecbb77859c29d810102fff1b56f5552420aa Mon Sep 17 00:00:00 2001 From: michaelmackenzie Date: Mon, 30 Mar 2026 16:18:13 -0500 Subject: [PATCH 40/54] Throw error on invalid ID --- DAQ/src/CaloDigisToFragments_module.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/DAQ/src/CaloDigisToFragments_module.cc b/DAQ/src/CaloDigisToFragments_module.cc index cfc246a3e9..aa15f89af6 100644 --- a/DAQ/src/CaloDigisToFragments_module.cc +++ b/DAQ/src/CaloDigisToFragments_module.cc @@ -9,6 +9,7 @@ #include "art/Framework/Principal/Event.h" #include "art/Framework/Principal/Handle.h" #include "fhiclcpp/ParameterSet.h" +#include "cetlib_except/exception.h" #include "artdaq-core-mu2e/Overlays/Decoders/CalorimeterDataDecoder.hh" #include "artdaq-core-mu2e/Overlays/DTC_Packets/DTC_Event.h" @@ -207,7 +208,7 @@ void art::CaloDigisToFragments::buildDtcEventFromDigis(art::Event const& event, const uint16_t detectorID = offId.detType(); if (!rawId.isValid()) { - continue; + throw cet::exception("RECO") << "Raw ID for SIPM " << offId << " detector " << detectorID << " invalid"; } auto const diracID = rawId.dirac(); From 7d53ab02faa7bd564c9af6f9605f8efea4982b19 Mon Sep 17 00:00:00 2001 From: michaelmackenzie Date: Mon, 30 Mar 2026 13:24:55 -0500 Subject: [PATCH 41/54] Initial version --- .../StrawDigiCollectionsComparator_module.cc | 292 +++++++++++ DAQ/src/StrawDigisToFragments_module.cc | 470 ++++++++++++++++++ 2 files changed, 762 insertions(+) create mode 100644 DAQ/src/StrawDigiCollectionsComparator_module.cc create mode 100644 DAQ/src/StrawDigisToFragments_module.cc diff --git a/DAQ/src/StrawDigiCollectionsComparator_module.cc b/DAQ/src/StrawDigiCollectionsComparator_module.cc new file mode 100644 index 0000000000..847b2f1f16 --- /dev/null +++ b/DAQ/src/StrawDigiCollectionsComparator_module.cc @@ -0,0 +1,292 @@ +// ====================================================================== +// +// StrawDigiCollectionsComparator_module: Compare two StrawDigi collections +// (and optionally their associated StrawDigiADCWaveform collections) +// +// ====================================================================== + +#include "art/Framework/Core/EDAnalyzer.h" +#include "art/Framework/Core/ModuleMacros.h" +#include "art/Framework/Principal/Event.h" +#include "cetlib_except/exception.h" +#include "fhiclcpp/ParameterSet.h" + +#include "Offline/RecoDataProducts/inc/StrawDigi.hh" +#include "Offline/DataProducts/inc/StrawEnd.hh" + +#include +#include +#include +#include +#include +#include + +namespace mu2e { + +class StrawDigiCollectionsComparator : public art::EDAnalyzer { +public: + struct Config { + fhicl::Atom referenceDigiTag{fhicl::Name("referenceDigiTag"), + fhicl::Comment("Reference StrawDigiCollection")}; + fhicl::Atom candidateDigiTag{fhicl::Name("candidateDigiTag"), + fhicl::Comment("Candidate StrawDigiCollection")}; + fhicl::Atom compareWaveforms{fhicl::Name("compareWaveforms"), + fhicl::Comment("Compare StrawDigiADCWaveformCollection"), + true}; + fhicl::Atom referenceWaveformTag{ + fhicl::Name("referenceWaveformTag"), + fhicl::Comment("Reference StrawDigiADCWaveformCollection"), + art::InputTag("makeSD")}; + fhicl::Atom candidateWaveformTag{ + fhicl::Name("candidateWaveformTag"), + fhicl::Comment("Candidate StrawDigiADCWaveformCollection"), + art::InputTag("makeSD")}; + fhicl::Atom failOnMismatch{fhicl::Name("failOnMismatch"), + fhicl::Comment("Throw if any mismatch is found"), + true}; + fhicl::Atom diagLevel{fhicl::Name("diagLevel"), + fhicl::Comment("Diagnostic verbosity"), + 0}; + fhicl::Atom maxMismatchesToPrint{fhicl::Name("maxMismatchesToPrint"), + fhicl::Comment("Maximum mismatch entries to print"), + 10}; + fhicl::Atom maxWaveformSamplesToPrint{ + fhicl::Name("maxWaveformSamplesToPrint"), + fhicl::Comment("Maximum waveform samples to print in mismatch diagnostics"), + 64}; + fhicl::Atom normalizeWaveformsTo10Bit{ + fhicl::Name("normalizeWaveformsTo10Bit"), + fhicl::Comment("Apply 10-bit normalization (sample & 0x3FF) to both reference and candidate waveforms"), + false}; + }; + + using Parameters = art::EDAnalyzer::Table; + + explicit StrawDigiCollectionsComparator(Parameters const& config); + + void analyze(art::Event const& event) override; + void endJob() override; + +private: + struct FlatDigi { + uint16_t strawID; + uint32_t tdc0; + uint32_t tdc1; + uint32_t tot0; + uint32_t tot1; + uint32_t pmp; + std::vector waveform; + + bool operator<(FlatDigi const& other) const { + return std::tie(strawID, tdc0, tdc1, tot0, tot1, pmp, waveform) < + std::tie(other.strawID, other.tdc0, other.tdc1, other.tot0, other.tot1, other.pmp, + other.waveform); + } + + bool operator==(FlatDigi const& other) const { + return strawID == other.strawID && tdc0 == other.tdc0 && tdc1 == other.tdc1 && + tot0 == other.tot0 && tot1 == other.tot1 && pmp == other.pmp && + waveform == other.waveform; + } + }; + + static std::vector normalize(mu2e::StrawDigiCollection const& digis, + mu2e::StrawDigiADCWaveformCollection const* waveforms, + bool compareWaveforms, + bool normalizeWaveformsTo10Bit); + static std::string describe(FlatDigi const& digi, size_t maxWaveformSamplesToPrint); + + art::InputTag referenceDigiTag_; + art::InputTag candidateDigiTag_; + bool compareWaveforms_; + art::InputTag referenceWaveformTag_; + art::InputTag candidateWaveformTag_; + bool failOnMismatch_; + int diagLevel_; + size_t maxMismatchesToPrint_; + size_t maxWaveformSamplesToPrint_; + bool normalizeWaveformsTo10Bit_; + + size_t totalEvents_{0}; + size_t matchingEvents_{0}; + size_t mismatchedEvents_{0}; +}; + +StrawDigiCollectionsComparator::StrawDigiCollectionsComparator(Parameters const& config) + : art::EDAnalyzer{config} + , referenceDigiTag_(config().referenceDigiTag()) + , candidateDigiTag_(config().candidateDigiTag()) + , compareWaveforms_(config().compareWaveforms()) + , referenceWaveformTag_(config().referenceWaveformTag()) + , candidateWaveformTag_(config().candidateWaveformTag()) + , failOnMismatch_(config().failOnMismatch()) + , diagLevel_(config().diagLevel()) + , maxMismatchesToPrint_(config().maxMismatchesToPrint()) + , maxWaveformSamplesToPrint_(config().maxWaveformSamplesToPrint()) + , normalizeWaveformsTo10Bit_(config().normalizeWaveformsTo10Bit()) {} + +std::vector StrawDigiCollectionsComparator::normalize( + mu2e::StrawDigiCollection const& digis, mu2e::StrawDigiADCWaveformCollection const* waveforms, + bool compareWaveforms, bool normalizeWaveformsTo10Bit) { + if (compareWaveforms && waveforms != nullptr && waveforms->size() != digis.size()) { + throw cet::exception("STRAWDIGI_COMPARE") + << "StrawDigi and StrawDigiADCWaveform collection sizes differ: digis=" << digis.size() + << ", waveforms=" << waveforms->size(); + } + + std::vector out; + out.reserve(digis.size()); + + for (size_t i = 0; i < digis.size(); ++i) { + auto const& digi = digis[i]; + std::vector waveform; + + if (compareWaveforms && waveforms != nullptr) { + auto const& samples = waveforms->at(i).samples(); + waveform.reserve(samples.size()); + if (normalizeWaveformsTo10Bit) { + for (auto const sample : samples) { + waveform.push_back(static_cast(sample & 0x3FF)); + } + } else { + waveform.assign(samples.begin(), samples.end()); + } + } + + out.push_back(FlatDigi{static_cast(digi.strawId().asUint16()), + static_cast(digi.TDC(mu2e::StrawEnd::cal)), + static_cast(digi.TDC(mu2e::StrawEnd::hv)), + static_cast(digi.TOT(mu2e::StrawEnd::cal)), + static_cast(digi.TOT(mu2e::StrawEnd::hv)), + static_cast(digi.PMP()), + std::move(waveform)}); + } + + // Sort so comparison is robust against ordering differences between producers. + std::sort(out.begin(), out.end()); + return out; +} + +std::string StrawDigiCollectionsComparator::describe(FlatDigi const& digi, + size_t maxWaveformSamplesToPrint) { + std::ostringstream os; + os << "strawID=" << digi.strawID << ", tdc0=" << digi.tdc0 << ", tdc1=" << digi.tdc1 + << ", tot0=" << digi.tot0 << ", tot1=" << digi.tot1 << ", pmp=" << digi.pmp + << ", waveformSize=" << digi.waveform.size(); + + if (!digi.waveform.empty()) { + os << ", waveform={"; + size_t const n = digi.waveform.size(); + if (n <= maxWaveformSamplesToPrint) { + for (size_t i = 0; i < n; ++i) { + if (i != 0) { + os << ","; + } + os << digi.waveform[i]; + } + } else { + size_t const head = maxWaveformSamplesToPrint / 2; + size_t const tail = maxWaveformSamplesToPrint - head; + for (size_t i = 0; i < head; ++i) { + if (i != 0) { + os << ","; + } + os << digi.waveform[i]; + } + os << ",...,"; + for (size_t i = n - tail; i < n; ++i) { + if (i != n - tail) { + os << ","; + } + os << digi.waveform[i]; + } + } + os << "}"; + } + + return os.str(); +} + +void StrawDigiCollectionsComparator::analyze(art::Event const& event) { + ++totalEvents_; + + auto const& referenceDigis = event.getValidHandle(referenceDigiTag_); + auto const& candidateDigis = event.getValidHandle(candidateDigiTag_); + + mu2e::StrawDigiADCWaveformCollection const* referenceWaveforms = nullptr; + mu2e::StrawDigiADCWaveformCollection const* candidateWaveforms = nullptr; + if (compareWaveforms_) { + referenceWaveforms = + event.getValidHandle(referenceWaveformTag_).product(); + candidateWaveforms = + event.getValidHandle(candidateWaveformTag_).product(); + } + + auto reference = normalize(*referenceDigis, + referenceWaveforms, + compareWaveforms_, + normalizeWaveformsTo10Bit_); + auto candidate = normalize(*candidateDigis, + candidateWaveforms, + compareWaveforms_, + normalizeWaveformsTo10Bit_); + + std::vector mismatches; + if (reference.size() != candidate.size()) { + std::ostringstream os; + os << "Collection sizes differ: reference=" << reference.size() + << ", candidate=" << candidate.size(); + mismatches.push_back(os.str()); + } + + size_t compareCount = std::min(reference.size(), candidate.size()); + for (size_t i = 0; i < compareCount && mismatches.size() < maxMismatchesToPrint_; ++i) { + if (!(reference[i] == candidate[i])) { + std::ostringstream os; + os << "Digi mismatch at sorted index " << i << "\n" + << " reference: " << describe(reference[i], maxWaveformSamplesToPrint_) << "\n" + << " candidate: " << describe(candidate[i], maxWaveformSamplesToPrint_); + mismatches.push_back(os.str()); + } + } + + if (mismatches.empty()) { + ++matchingEvents_; + if (diagLevel_ > 1) { + std::cout << "[StrawDigiCollectionsComparator] Event " << event.id() + << " collections are equivalent (" << reference.size() << " digis)" << std::endl; + } + return; + } + + ++mismatchedEvents_; + + std::ostringstream summary; + summary << "[StrawDigiCollectionsComparator] Event " << event.id() << " mismatch between " + << referenceDigiTag_ << " and " << candidateDigiTag_ << "\n"; + for (auto const& mismatch : mismatches) { + summary << mismatch << "\n"; + } + + if (diagLevel_ > 0 || failOnMismatch_) { + // Keep human-readable details even when failOnMismatch is false. + std::cout << summary.str(); + } + + if (failOnMismatch_) { + throw cet::exception("STRAWDIGI_COMPARE") << summary.str(); + } +} + +void StrawDigiCollectionsComparator::endJob() { + if (diagLevel_ > 0) { + std::cout << "\n ----- [StrawDigiCollectionsComparator] Summary ----- " << std::endl; + std::cout << "Total events: " << totalEvents_ << std::endl; + std::cout << "Matching events: " << matchingEvents_ << std::endl; + std::cout << "Mismatched events: " << mismatchedEvents_ << std::endl; + } +} + +} // namespace mu2e + +DEFINE_ART_MODULE(mu2e::StrawDigiCollectionsComparator) diff --git a/DAQ/src/StrawDigisToFragments_module.cc b/DAQ/src/StrawDigisToFragments_module.cc new file mode 100644 index 0000000000..69bfac9524 --- /dev/null +++ b/DAQ/src/StrawDigisToFragments_module.cc @@ -0,0 +1,470 @@ +// ====================================================================== +// +// StrawDigisToFragments_module: Create DTCEVT artdaq::Fragment collection +// from StrawDigiCollection (+ StrawDigiADCWaveformCollection) +// +// ====================================================================== + +#include "art/Framework/Core/EDProducer.h" +#include "art/Framework/Principal/Event.h" +#include "art/Framework/Principal/Handle.h" +#include "fhiclcpp/ParameterSet.h" + +#include "artdaq-core-mu2e/Overlays/Decoders/TrackerDataDecoder.hh" +#include "artdaq-core-mu2e/Overlays/DTC_Packets/DTC_Event.h" +#include "artdaq-core-mu2e/Overlays/DTC_Packets/DTC_DataHeaderPacket.h" +#include "artdaq-core-mu2e/Overlays/DTC_Packets/DTC_EventHeader.h" +#include "artdaq-core-mu2e/Overlays/DTC_Packets/DTC_SubEventHeader.h" +#include "artdaq-core-mu2e/Overlays/FragmentType.hh" +#include + +#include "Offline/ProditionsService/inc/ProditionsHandle.hh" +#include "Offline/RecoDataProducts/inc/StrawDigi.hh" +#include "Offline/DataProducts/inc/StrawId.hh" +#include "Offline/TrackerConditions/inc/TrackerPanelMap.hh" +#include "Offline/DataProducts/inc/StrawEnd.hh" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace { +using TrackerDataPacket = mu2e::TrackerDataDecoder::TrackerDataPacket; +using TrackerADCPacket = mu2e::TrackerDataDecoder::TrackerADCPacket; + +struct TrackerHitPayload { + TrackerDataPacket mainPacket; + std::vector adcPackets; +}; + +struct TrackerBlockData { + uint8_t dtcID{0}; + uint8_t linkID{0}; + uint16_t transferByteCount{0}; + uint16_t packetCount{0}; + std::vector hits; +}; + +constexpr uint8_t kFormatVersion = 1; +constexpr uint8_t kTrackerRocsPerDtc = 6; +constexpr size_t kDtcEventHeaderBytes = 24; +constexpr size_t kDtcSubEventHeaderBytes = 48; +static_assert(sizeof(DTCLib::DTC_EventHeader) == kDtcEventHeaderBytes, + "Unexpected DTC_EventHeader size"); +static_assert(sizeof(DTCLib::DTC_SubEventHeader) == kDtcSubEventHeaderBytes, + "Unexpected DTC_SubEventHeader size"); +static_assert(sizeof(TrackerDataPacket) == 16, "Unexpected TrackerDataPacket size"); +static_assert(sizeof(TrackerADCPacket) == 16, "Unexpected TrackerADCPacket size"); + +size_t waveformPacketCount(mu2e::StrawDigiADCWaveform const& waveform) { + auto const& samples = waveform.samples(); + if (samples.size() < 3) { + return 0; + } + // Match ArtBinaryPacketsFromDigis behavior: one tracker header packet carries + // the first 3 ADC samples, then 12 samples per TrackerADCPacket. + return static_cast((samples.size() - 3) / 12); +} + +TrackerHitPayload encodeTrackerHit(mu2e::StrawDigi const& digi, + mu2e::StrawDigiADCWaveform const& waveform, + uint16_t eventWindowCounter, + uint16_t strawIndexWord) { + TrackerHitPayload payload; + payload.mainPacket.StrawIndex = strawIndexWord; + payload.mainPacket.SetTDC0(digi.TDC(mu2e::StrawEnd::cal)); + payload.mainPacket.SetTDC1(digi.TDC(mu2e::StrawEnd::hv)); + payload.mainPacket.TOT0 = digi.TOT(mu2e::StrawEnd::cal); + payload.mainPacket.TOT1 = digi.TOT(mu2e::StrawEnd::hv); + payload.mainPacket.EWMCounter = eventWindowCounter & 0xF; + payload.mainPacket.PMP = digi.PMP(); + payload.mainPacket.ErrorFlags = 0; + payload.mainPacket.unused1 = 0; + + auto const& samples = waveform.samples(); + for (size_t i = 0; i < 3; ++i) { + payload.mainPacket.SetWaveform(i, (i < samples.size() ? samples[i] : 0)); + } + + size_t const numADCPackets = waveformPacketCount(waveform); + payload.mainPacket.NumADCPackets = numADCPackets; + payload.adcPackets.reserve(numADCPackets); + for (size_t i = 0; i < numADCPackets; ++i) { + TrackerADCPacket packet; + for (size_t j = 0; j < 12; ++j) { + size_t const sampleIndex = 3 + i * 12 + j; + packet.SetWaveform(j, (sampleIndex < samples.size() ? samples[sampleIndex] : 0)); + } + payload.adcPackets.push_back(packet); + } + + return payload; +} + +} // namespace + +namespace art { +class StrawDigisToFragments; +} + +class art::StrawDigisToFragments : public EDProducer { +public: + struct Config { + fhicl::Atom diagLevel{fhicl::Name("diagLevel"), fhicl::Comment("diagnostic level"), 0}; + fhicl::Atom skipFragmentOnSizeMismatch{ + fhicl::Name("skipFragmentOnSizeMismatch"), + fhicl::Comment("Skip emitting fragment when packed bytes and event header size differ"), + false}; + fhicl::Atom fallbackToOfflineWhenMapMissing{ + fhicl::Name("fallbackToOfflineWhenMapMissing"), + fhicl::Comment("When TrackerPanelMap lookup fails, use offline plane/panel as DTC/link"), + true}; + fhicl::Atom forceOfflineAddressing{ + fhicl::Name("forceOfflineAddressing"), + fhicl::Comment("Ignore TrackerPanelMap and encode dtc/link/strawindex directly from offline StrawId"), + false}; + fhicl::Atom strawDigiTag{fhicl::Name("strawDigiTag"), + fhicl::Comment("Input StrawDigiCollection"), + art::InputTag("makeSD")}; + fhicl::Atom strawDigiADCTag{fhicl::Name("strawDigiADCTag"), + fhicl::Comment("Input StrawDigiADCWaveformCollection"), + art::InputTag("makeSD")}; + }; + + explicit StrawDigisToFragments(const art::EDProducer::Table& config); + virtual ~StrawDigisToFragments() {} + + virtual void produce(Event&); + virtual void endJob(); + +private: + int diagLevel_; + bool skipFragmentOnSizeMismatch_; + bool fallbackToOfflineWhenMapMissing_; + bool forceOfflineAddressing_; + art::InputTag strawDigiTag_; + art::InputTag strawDigiADCTag_; + + mu2e::ProditionsHandle trackerPanelMap_h_; + + long int total_events_; + long int total_digis_; + + static void putBlockInEvent(DTCLib::DTC_Event& currentEvent, uint8_t dtcID, + DTCLib::DTC_DataBlock const& thisBlock); + + void buildDtcEventFromDigis(art::Event const& event, + mu2e::StrawDigiCollection const& strawDigis, + mu2e::StrawDigiADCWaveformCollection const& strawADCs, + DTCLib::DTC_Event& dtcEvent); +}; + +art::StrawDigisToFragments::StrawDigisToFragments(const art::EDProducer::Table& config) + : art::EDProducer{config} + , diagLevel_(config().diagLevel()) + , skipFragmentOnSizeMismatch_(config().skipFragmentOnSizeMismatch()) + , fallbackToOfflineWhenMapMissing_(config().fallbackToOfflineWhenMapMissing()) + , forceOfflineAddressing_(config().forceOfflineAddressing()) + , strawDigiTag_(config().strawDigiTag()) + , strawDigiADCTag_(config().strawDigiADCTag()) { + produces(); + total_events_ = 0; + total_digis_ = 0; +} + +void art::StrawDigisToFragments::putBlockInEvent(DTCLib::DTC_Event& currentEvent, uint8_t dtcID, + DTCLib::DTC_DataBlock const& thisBlock) { + auto subEvt = currentEvent.GetSubEventByDTCID(dtcID, DTCLib::DTC_Subsystem_Tracker); + if (subEvt == nullptr) { + DTCLib::DTC_SubEvent newSubEvt; + newSubEvt.SetEventWindowTag(currentEvent.GetEventWindowTag()); + newSubEvt.SetSourceDTC(dtcID, DTCLib::DTC_Subsystem_Tracker); + newSubEvt.AddDataBlock(thisBlock); + currentEvent.AddSubEvent(newSubEvt); + } else { + subEvt->AddDataBlock(thisBlock); + } +} + +void art::StrawDigisToFragments::buildDtcEventFromDigis( + art::Event const& event, mu2e::StrawDigiCollection const& strawDigis, + mu2e::StrawDigiADCWaveformCollection const& strawADCs, DTCLib::DTC_Event& dtcEvent) { + auto const& trackerPanelMap = trackerPanelMap_h_.get(event.id()); + std::map> byDtcAndLink; + + size_t const nHits = std::min(strawDigis.size(), strawADCs.size()); + if (strawDigis.size() != strawADCs.size() && diagLevel_ > 0) { + std::cout << "[StrawDigisToFragments::buildDtcEventFromDigis] WARNING: StrawDigi count " + << strawDigis.size() << " differs from StrawDigiADCWaveform count " + << strawADCs.size() << "; using first " << nHits << " entries" << std::endl; + } + + for (size_t i = 0; i < nHits; ++i) { + auto const& digi = strawDigis[i]; + auto const& waveform = strawADCs[i]; + + auto const plane = digi.strawId().getPlane(); + auto const panel = digi.strawId().getPanel(); + + if (panel >= kTrackerRocsPerDtc) { + if (diagLevel_ > 0) { + std::cout << "[StrawDigisToFragments::buildDtcEventFromDigis] WARNING: panel " << panel + << " outside expected ROC link range [0," << static_cast(kTrackerRocsPerDtc) + << ") - skipping digi" << std::endl; + } + continue; + } + + auto const* tpm = forceOfflineAddressing_ ? nullptr : trackerPanelMap.panel_map_by_offline_ind(plane, panel); + + uint8_t dtcID = 0; + uint8_t linkID = 0; + uint16_t strawIndexWord = 0; + + if (forceOfflineAddressing_) { + dtcID = static_cast(plane); + linkID = static_cast(panel); + strawIndexWord = digi.strawId().asUint16(); + } else if (tpm != nullptr) { + dtcID = static_cast(tpm->dtc()); + linkID = static_cast(tpm->link()); + auto const straw = static_cast(digi.strawId().straw() & mu2e::StrawId::_strawmsk); + auto const mnidWord = static_cast(tpm->mnid() << mu2e::StrawId::_panelsft); + strawIndexWord = static_cast(mnidWord | straw); + } else { + if (!fallbackToOfflineWhenMapMissing_) { + if (diagLevel_ > 0) { + std::cout << "[StrawDigisToFragments::buildDtcEventFromDigis] WARNING: no TrackerPanelMap" + << " entry for offline plane=" << plane << " panel=" << panel + << " - skipping digi" << std::endl; + } + continue; + } + dtcID = static_cast(plane); + linkID = static_cast(panel); + strawIndexWord = digi.strawId().asUint16(); + if (diagLevel_ > 1) { + std::cout << "[StrawDigisToFragments::buildDtcEventFromDigis] INFO: no TrackerPanelMap" + << " entry for offline plane=" << plane << " panel=" << panel + << " - using offline fallback DTC/link" << std::endl; + } + } + + if (linkID >= kTrackerRocsPerDtc) { + if (diagLevel_ > 0) { + std::cout << "[StrawDigisToFragments::buildDtcEventFromDigis] WARNING: mapped link " + << static_cast(linkID) << " outside expected ROC link range [0," + << static_cast(kTrackerRocsPerDtc) << ") for plane=" << plane + << " panel=" << panel << " dtc=" << static_cast(dtcID) + << " - skipping digi" << std::endl; + } + continue; + } + + auto& block = byDtcAndLink[dtcID][linkID]; + block.dtcID = dtcID; + block.linkID = linkID; + + uint16_t const ewmCounter = static_cast(event.event() & 0xF); + + block.hits.emplace_back(encodeTrackerHit(digi, waveform, ewmCounter, strawIndexWord)); + } + + for (auto& [dtcID, linkMap] : byDtcAndLink) { + // Emit a block for each link that has data + for (auto& [linkID, block] : linkMap) { + block.dtcID = dtcID; + block.linkID = linkID; + + // Calculate packet and byte counts based on actual hits + // Empty blocks should not be emitted; only emit if we have data + if (block.hits.empty()) { + continue; + } + + // Calculate total packets: 1 header + hits + ADCs + uint16_t numPackets = 1; // header packet + for (auto const& hit : block.hits) { + numPackets += 1; // main packet per hit + numPackets += static_cast(hit.adcPackets.size()); // ADC packets per hit + } + + block.packetCount = numPackets; + block.transferByteCount = static_cast(numPackets * 16); + + if (diagLevel_ > 1) { + std::cout << "[buildDtcEventFromDigis] DTC " << static_cast(dtcID) + << " Link " << static_cast(linkID) + << " hits: " << block.hits.size() + << " numPackets: " << numPackets + << " transferByteCount: " << block.transferByteCount << std::endl; + } + + DTCLib::DTC_DataBlock thisBlock(block.transferByteCount); + if (thisBlock.blockPointer == nullptr) { + if (diagLevel_ > 0) { + std::cout << "[buildDtcEventFromDigis] Failed to allocate DTC_DataBlock with size " + << block.transferByteCount << std::endl; + } + continue; + } + std::fill(thisBlock.allocBytes->begin(), thisBlock.allocBytes->end(), 0xFF); + + auto const ts = DTCLib::DTC_EventWindowTag(static_cast(event.event())); + DTCLib::DTC_DataHeaderPacket hdr(static_cast(block.linkID), + block.packetCount, + 0, + block.dtcID, + DTCLib::DTC_Subsystem_Tracker, + kFormatVersion, + ts, + 0); + auto hdrPkt = hdr.ConvertToDataPacket(); + + size_t pos = 0; + std::memcpy(thisBlock.allocBytes->data() + pos, hdrPkt.GetData(), 16); + pos += 16; + + for (auto const& hit : block.hits) { + std::memcpy(thisBlock.allocBytes->data() + pos, &hit.mainPacket, sizeof(TrackerDataPacket)); + pos += sizeof(TrackerDataPacket); + + if (!hit.adcPackets.empty()) { + size_t const adcBytes = hit.adcPackets.size() * sizeof(TrackerADCPacket); + std::memcpy(thisBlock.allocBytes->data() + pos, hit.adcPackets.data(), adcBytes); + pos += adcBytes; + } + } + + if (diagLevel_ > 1) { + std::cout << " After filling: pos = " << pos << ", transferByteCount = " << block.transferByteCount << std::endl; + } + + putBlockInEvent(dtcEvent, block.dtcID, thisBlock); + } + } +} + +void art::StrawDigisToFragments::produce(Event& event) { + total_events_++; + + std::unique_ptr fragments(new artdaq::Fragments()); + auto strawDigiHandle = event.getHandle(strawDigiTag_); + auto strawADCsHandle = event.getHandle(strawDigiADCTag_); + + if (!strawDigiHandle.isValid() || !strawADCsHandle.isValid()) { + if (diagLevel_ > 0) { + std::cout << "[StrawDigisToFragments::produce] Missing input collections: StrawDigi valid=" + << strawDigiHandle.isValid() << ", StrawDigiADCWaveform valid=" + << strawADCsHandle.isValid() << std::endl; + } + event.put(std::move(fragments)); + return; + } + + auto const& strawDigis = *strawDigiHandle; + auto const& strawADCs = *strawADCsHandle; + total_digis_ += strawDigis.size(); + + DTCLib::DTC_Event dtcEvent; + dtcEvent.SetEventWindowTag(DTCLib::DTC_EventWindowTag(static_cast(event.event()))); + buildDtcEventFromDigis(event, strawDigis, strawADCs, dtcEvent); + + auto const eventBytes = dtcEvent.GetEventByteCount(); + if (diagLevel_ > 1) { + std::cout << "[StrawDigisToFragments::produce] eventBytes from DTC_Event: " << eventBytes + << ", subEventCount: " << dtcEvent.GetSubEventCount() << std::endl; + for (size_t i = 0; i < dtcEvent.GetSubEvents().size(); ++i) { + auto const& subEvt = dtcEvent.GetSubEvents()[i]; + std::cout << " SubEvent " << i << " blockCount: " << subEvt.GetDataBlocks().size() << std::endl; + for (size_t j = 0; j < subEvt.GetDataBlocks().size(); ++j) { + auto const& block = subEvt.GetDataBlocks()[j]; + std::cout << " Block " << j << " byteSize: " << block.byteSize << std::endl; + } + } + } + + if (dtcEvent.GetSubEventCount() > 0) { + // Emit one fragment per tracker subevent (per DTC). The downstream decoder + // processes a single subevent per artdaq fragment payload. + for (size_t seIdx = 0; seIdx < dtcEvent.GetSubEvents().size(); ++seIdx) { + auto const& subEvt = dtcEvent.GetSubEvents()[seIdx]; + + size_t calcEventBytes = kDtcEventHeaderBytes + kDtcSubEventHeaderBytes; + for (auto const& block : subEvt.GetDataBlocks()) { + calcEventBytes += block.byteSize; + } + + std::vector packed; + packed.reserve(calcEventBytes); + + auto const* evHdr = dtcEvent.GetHeader(); + packed.insert(packed.end(), reinterpret_cast(evHdr), + reinterpret_cast(evHdr) + kDtcEventHeaderBytes); + + auto const* subHdr = subEvt.GetHeader(); + packed.insert(packed.end(), reinterpret_cast(subHdr), + reinterpret_cast(subHdr) + kDtcSubEventHeaderBytes); + + for (auto const& block : subEvt.GetDataBlocks()) { + auto const* blk = reinterpret_cast(block.GetRawBufferPointer()); + packed.insert(packed.end(), blk, blk + block.byteSize); + } + + if (diagLevel_ > 1 && packed.size() != calcEventBytes) { + std::cout << "[StrawDigisToFragments::produce] WARNING: subevent " << seIdx + << " packed size " << packed.size() + << " differs from recalculated " << calcEventBytes << std::endl; + } + + auto fragPtr = artdaq::Fragment::FragmentBytes(packed.size()); + fragPtr->setUserType(mu2e::FragmentType::DTCEVT); + fragPtr->setSequenceID(static_cast(event.event())); + fragPtr->setFragmentID(static_cast(seIdx)); + fragPtr->setTimestamp(static_cast(event.event())); + if (!packed.empty()) { + std::memcpy(fragPtr->dataBeginBytes(), packed.data(), packed.size()); + } + + fragments->emplace_back(std::move(*fragPtr)); + } + + if (diagLevel_ > 0 && eventBytes != 0) { + size_t aggregatePacked = 0; + for (auto const& subEvt : dtcEvent.GetSubEvents()) { + aggregatePacked += kDtcEventHeaderBytes + kDtcSubEventHeaderBytes; + for (auto const& block : subEvt.GetDataBlocks()) aggregatePacked += block.byteSize; + } + if (aggregatePacked != eventBytes * dtcEvent.GetSubEventCount()) { + std::cout << "[StrawDigisToFragments::produce] INFO: GetEventByteCount()=" << eventBytes + << " is unreliable for multi-subevent packing; emitted " + << fragments->size() << " per-subevent fragment(s)" << std::endl; + } + } + } + + if (diagLevel_ > 0) { + std::cout << "[StrawDigisToFragments::produce] Run " << event.run() << ", subrun " + << event.subRun() << ", event " << event.event() << " has " << strawDigis.size() + << " StrawDigis and created " << fragments->size() << " DTCEVT fragment(s)" + << std::endl; + } + + event.put(std::move(fragments)); +} + +void art::StrawDigisToFragments::endJob() { + if (diagLevel_ > 0) { + std::cout << "\n ----- [StrawDigisToFragments] Summary ----- " << std::endl; + std::cout << "Total events: " << total_events_ << std::endl; + std::cout << "Total StrawDigis processed: " << total_digis_ << std::endl; + } +} + +DEFINE_ART_MODULE(art::StrawDigisToFragments) From 9649ba9cd164cfaff78628829006dfa9a75ea0ef Mon Sep 17 00:00:00 2001 From: michaelmackenzie Date: Mon, 30 Mar 2026 16:12:25 -0500 Subject: [PATCH 42/54] Allow for Offline straw IDs for digi -> fragment -> digi tests --- .../StrawDigisFromArtdaqFragments_module.cc | 46 ++++++++++++---- DAQ/src/StrawDigisToFragments_module.cc | 53 +++++++++++++++---- 2 files changed, 77 insertions(+), 22 deletions(-) diff --git a/DAQ/src/StrawDigisFromArtdaqFragments_module.cc b/DAQ/src/StrawDigisFromArtdaqFragments_module.cc index 32629ee139..3699183118 100644 --- a/DAQ/src/StrawDigisFromArtdaqFragments_module.cc +++ b/DAQ/src/StrawDigisFromArtdaqFragments_module.cc @@ -72,6 +72,14 @@ class mu2e::StrawDigisFromArtdaqFragments : public art::EDProducer { fhicl::Atom saveWaveforms {fhicl::Name("saveWaveforms" ), fhicl::Comment("save StrawDigiADCWaveforms, default:true" )}; fhicl::Atom missingDTCHeaders{fhicl::Name("missingDTCHeaders"), fhicl::Comment("true for runs <= 107246, default:false" )}; fhicl::Atom keyOnMnid {fhicl::Name("keyOnMnid" ), fhicl::Comment("true if need to key on MnID, default:false")}; + fhicl::Atom allowOfflineFallbackWhenPanelMapMissing{ + fhicl::Name("allowOfflineFallbackWhenPanelMapMissing"), + fhicl::Comment("If TrackerPanelMap lookup fails, decode using offline StrawId(dtc,link,straw)"), + false}; + fhicl::Atom forceOfflineAddressing{ + fhicl::Name("forceOfflineAddressing"), + fhicl::Comment("Ignore TrackerPanelMap/mnid and decode StrawId directly as (dtc,link,straw)"), + false}; // individual tuple specifying a minnesota label, e.g. MN123, // with geographic plane/panel numbers, i.e. from DocDB-#888 @@ -145,6 +153,8 @@ class mu2e::StrawDigisFromArtdaqFragments : public art::EDProducer { bool saveWaveforms_; bool missingDTCHeaders_; bool keyOnMnid_; + bool allowOfflineFallbackWhenPanelMapMissing_; + bool forceOfflineAddressing_; // the rest int nADCPackets_{-1}; // N(ADC packets per hit) int nSamples_ {-1}; // N(ADC samples per hit) @@ -175,6 +185,8 @@ mu2e::StrawDigisFromArtdaqFragments::StrawDigisFromArtdaqFragments(const art::ED saveWaveforms_ (config().saveWaveforms()), missingDTCHeaders_(config().missingDTCHeaders()), keyOnMnid_ (config().keyOnMnid()), + allowOfflineFallbackWhenPanelMapMissing_(config().allowOfflineFallbackWhenPanelMapMissing()), + forceOfflineAddressing_(config().forceOfflineAddressing()), event_ (nullptr) { produces(); @@ -387,17 +399,21 @@ void mu2e::StrawDigisFromArtdaqFragments::produce(art::Event& event) { nhits = rdh->packetCount/(nADCPackets_+1); const TrkPanelMap::Row* tpm(nullptr); - if (not keyOnMnid_) { + if (!forceOfflineAddressing_ && not keyOnMnid_) { tpm = _trackerPanelMap->panel_map_by_online_ind(dtc_id,link_id); if (tpm == nullptr) { + if (!allowOfflineFallbackWhenPanelMapMissing_) { //----------------------------------------------------------------------------- // either DTC ID or link ID are corrupted. Haven't seen that so far, switch to the next ROC anyway //----------------------------------------------------------------------------- - print_(std::format("ERROR: either dtc_id:{} or link_id:{} is corrupted, skip ROC data", + print_(std::format("ERROR: either dtc_id:{} or link_id:{} is corrupted, skip ROC data", + dtc_id,link_id)); + + roc_data += (nhits*np_per_hit_+1)*packet_size; + continue; + } + print_(std::format("WARNING: no panel map for dtc_id:{} link_id:{}, using offline fallback", dtc_id,link_id)); - - roc_data += (nhits*np_per_hit_+1)*packet_size; - continue; } } @@ -430,18 +446,21 @@ void mu2e::StrawDigisFromArtdaqFragments::produce(art::Event& event) { uint16_t mnid = channel >> mu2e::StrawId::_panelsft; - if (keyOnMnid_) { + if (!forceOfflineAddressing_ && keyOnMnid_) { tpm = _trackerPanelMap->panel_map_by_mnid(mnid); if (tpm == nullptr) { + if (!allowOfflineFallbackWhenPanelMapMissing_) { //----------------------------------------------------------------------------- // bad mnid. Likely, corrupted data block. For now, skip the hit data and proceed with the next hit //----------------------------------------------------------------------------- - print_(std::format("ERROR: corrupted mnid:{}, skip hit data",mnid)); - continue; + print_(std::format("ERROR: corrupted mnid:{}, skip hit data",mnid)); + continue; + } + print_(std::format("WARNING: no panel map for mnid:{}, using offline fallback",mnid)); } } // in principle, could this could become an 'else if' - if (tpm->mnid() != mnid) { + if (!forceOfflineAddressing_ && tpm != nullptr && tpm->mnid() != mnid) { print_(std::format("ERROR: mnid:{:3d} tpm->mnid():{:3d} hit chid:{:04x} inconsistent with the dtc_id:{:2d} and link_id:{}", mnid,tpm->mnid(),hit_data->StrawIndex, dtc_id, link_id)); //----------------------------------------------------------------------------- @@ -482,7 +501,9 @@ void mu2e::StrawDigisFromArtdaqFragments::produce(art::Event& event) { //----------------------------------------------------------------------------- // convert channel_id into a strawID //----------------------------------------------------------------------------- - mu2e::StrawId sid(tpm->uniquePlane(),tpm->panel(),chid); + mu2e::StrawId sid = (forceOfflineAddressing_ || tpm == nullptr) + ? mu2e::StrawId(dtc_id, link_id, chid) + : mu2e::StrawId(tpm->uniquePlane(), tpm->panel(), chid); mu2e::TrkTypes::TDCValues tdc = {hit_data->TDC0(), hit_data->TDC1()}; mu2e::TrkTypes::TOTValues tot = {hit_data->TOT0 , hit_data->TOT1 }; @@ -494,9 +515,12 @@ void mu2e::StrawDigisFromArtdaqFragments::produce(art::Event& event) { header_printed = 1; } + auto const planeForPrint = (tpm != nullptr) ? tpm->uniquePlane() : dtc_id; + auto const panelForPrint = (tpm != nullptr) ? tpm->panel() : link_id; + int ind = straw_digis->size(); std::cout << std::format("{:5} 0x{:04x} 0x{:04x} MN{:03d} {:3} {:3} 0x:{:04x} {:9} {:9} {:2} {:2} {:5}\n", - ind,offset,hit_data->StrawIndex,mnid,tpm->uniquePlane(),tpm->panel(),sid.straw(),hit_data->TDC0(), + ind,offset,hit_data->StrawIndex,mnid,planeForPrint,panelForPrint,sid.straw(),hit_data->TDC0(), hit_data->TDC1(),tot[0],tot[1],pmp); } diff --git a/DAQ/src/StrawDigisToFragments_module.cc b/DAQ/src/StrawDigisToFragments_module.cc index 69bfac9524..a2c97cc259 100644 --- a/DAQ/src/StrawDigisToFragments_module.cc +++ b/DAQ/src/StrawDigisToFragments_module.cc @@ -62,6 +62,27 @@ static_assert(sizeof(DTCLib::DTC_SubEventHeader) == kDtcSubEventHeaderBytes, static_assert(sizeof(TrackerDataPacket) == 16, "Unexpected TrackerDataPacket size"); static_assert(sizeof(TrackerADCPacket) == 16, "Unexpected TrackerADCPacket size"); +void printTrackerPanelMap(mu2e::TrackerPanelMap const& panelMap) { + size_t nrows = 0; + std::cout << "[StrawDigisToFragments] TrackerPanelMap entries (online->offline):" << std::endl; + for (uint32_t dtc = 0; dtc < mu2e::TrackerPanelMap::kMaxPlanes; ++dtc) { + for (uint32_t link = 0; link < mu2e::StrawId::_npanels; ++link) { + auto const* row = panelMap.panel_map_by_online_ind(dtc, link); + if (row == nullptr) { + continue; + } + ++nrows; + std::cout << " DTC=" << row->dtc() << " link=" << row->link() + << " -> plane=" << row->uniquePlane() + << " panel=" << row->panel() + << " mnid=" << row->mnid() + << " ppid=" << row->ppid() + << " zface=" << row->zface() << std::endl; + } + } + std::cout << "[StrawDigisToFragments] TrackerPanelMap rows printed: " << nrows << std::endl; +} + size_t waveformPacketCount(mu2e::StrawDigiADCWaveform const& waveform) { auto const& samples = waveform.samples(); if (samples.size() < 3) { @@ -150,6 +171,7 @@ class art::StrawDigisToFragments : public EDProducer { bool forceOfflineAddressing_; art::InputTag strawDigiTag_; art::InputTag strawDigiADCTag_; + bool printedTrackerPanelMap_; mu2e::ProditionsHandle trackerPanelMap_h_; @@ -172,7 +194,8 @@ art::StrawDigisToFragments::StrawDigisToFragments(const art::EDProducer::Table(); total_events_ = 0; total_digis_ = 0; @@ -196,6 +219,10 @@ void art::StrawDigisToFragments::buildDtcEventFromDigis( art::Event const& event, mu2e::StrawDigiCollection const& strawDigis, mu2e::StrawDigiADCWaveformCollection const& strawADCs, DTCLib::DTC_Event& dtcEvent) { auto const& trackerPanelMap = trackerPanelMap_h_.get(event.id()); + if (diagLevel_ > 1 && !printedTrackerPanelMap_) { + printTrackerPanelMap(trackerPanelMap); + printedTrackerPanelMap_ = true; + } std::map> byDtcAndLink; size_t const nHits = std::min(strawDigis.size(), strawADCs.size()); @@ -277,26 +304,24 @@ void art::StrawDigisToFragments::buildDtcEventFromDigis( } for (auto& [dtcID, linkMap] : byDtcAndLink) { - // Emit a block for each link that has data - for (auto& [linkID, block] : linkMap) { + // Emit all tracker ROC links in order so decoders expecting contiguous + // ROC indices (0..5) can parse mixed-subdetector streams robustly. + for (uint8_t linkID = 0; linkID < kTrackerRocsPerDtc; ++linkID) { + auto& block = linkMap[linkID]; block.dtcID = dtcID; block.linkID = linkID; // Calculate packet and byte counts based on actual hits - // Empty blocks should not be emitted; only emit if we have data - if (block.hits.empty()) { - continue; - } - - // Calculate total packets: 1 header + hits + ADCs - uint16_t numPackets = 1; // header packet + // packetCount in DTC_DataHeaderPacket excludes the 16-byte data header + // packet itself; it counts only hit payload packets. + uint16_t numPackets = 0; for (auto const& hit : block.hits) { numPackets += 1; // main packet per hit numPackets += static_cast(hit.adcPackets.size()); // ADC packets per hit } block.packetCount = numPackets; - block.transferByteCount = static_cast(numPackets * 16); + block.transferByteCount = static_cast((numPackets + 1) * 16); if (diagLevel_ > 1) { std::cout << "[buildDtcEventFromDigis] DTC " << static_cast(dtcID) @@ -417,6 +442,12 @@ void art::StrawDigisToFragments::produce(Event& event) { packed.insert(packed.end(), blk, blk + block.byteSize); } + // Each output fragment carries exactly one subevent payload. Patch the + // copied event header so generic DTC decoders see consistent metadata. + auto* packedEventHdr = reinterpret_cast(packed.data()); + packedEventHdr->inclusive_event_byte_count = static_cast(calcEventBytes); + packedEventHdr->num_dtcs = 1; + if (diagLevel_ > 1 && packed.size() != calcEventBytes) { std::cout << "[StrawDigisToFragments::produce] WARNING: subevent " << seIdx << " packed size " << packed.size() From ee52ca154c42718de7a992822977b1fc3209d4fb Mon Sep 17 00:00:00 2001 From: michaelmackenzie Date: Mon, 30 Mar 2026 16:32:25 -0500 Subject: [PATCH 43/54] Update cmake --- DAQ/CMakeLists.txt | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/DAQ/CMakeLists.txt b/DAQ/CMakeLists.txt index 4a27ec701c..3dca2a8018 100644 --- a/DAQ/CMakeLists.txt +++ b/DAQ/CMakeLists.txt @@ -126,6 +126,23 @@ cet_build_plugin(StrawDigisFromArtdaqFragments art::module ROOT::Gui ) +cet_build_plugin(StrawDigisToFragments art::module + REG_SOURCE src/StrawDigisToFragments_module.cc + LIBRARIES REG + Offline::DAQ + Offline::TrackerConditions + Offline::DataProducts + Offline::ProditionsService + Offline::RecoDataProducts + artdaq-core-mu2e::Data + artdaq-core-mu2e::Data_dict +) + +cet_build_plugin(StrawDigiCollectionsComparator art::module + REG_SOURCE src/StrawDigiCollectionsComparator_module.cc + LIBRARIES REG + Offline::RecoDataProducts +) cet_build_plugin(StrawHitFilter art::module REG_SOURCE src/StrawHitFilter_module.cc LIBRARIES REG From 771e5c49c7f4ac75391b05cbf1bed04cea530081 Mon Sep 17 00:00:00 2001 From: ehrlich-uva Date: Tue, 31 Mar 2026 21:32:03 -0500 Subject: [PATCH 44/54] small update to CRV coincidence clustering process --- CRVReco/src/CrvCoincidenceFinder_module.cc | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/CRVReco/src/CrvCoincidenceFinder_module.cc b/CRVReco/src/CrvCoincidenceFinder_module.cc index 4144b798d9..e7095d7973 100644 --- a/CRVReco/src/CrvCoincidenceFinder_module.cc +++ b/CRVReco/src/CrvCoincidenceFinder_module.cc @@ -665,6 +665,7 @@ namespace mu2e std::vector::const_iterator iterHit; for(iterHit=hits.begin(); iterHit!=hits.end(); ++iterHit) { + iterHit->_maxDistance=0; //reset max distance. will be re-calculated here based on actual distances. int layer=iterHit->_layer; hitsLayers[layer].push_back(*iterHit); } @@ -850,10 +851,8 @@ namespace mu2e for(int i=0; i0) { double distance=layerIterators[i]->_x-layerIterators[i-1]->_x; From 64acef920c0ca7ff8d1a62b8a769d7a55ec0b15e Mon Sep 17 00:00:00 2001 From: ehrlich-uva Date: Tue, 31 Mar 2026 22:08:09 -0500 Subject: [PATCH 45/54] small change in CRV coincidence cluster --- CRVReco/fcl/epilog_extracted_v03.fcl | 3 +++ CRVReco/fcl/epilog_run1a_v01.fcl | 2 ++ CRVReco/fcl/prolog_v11.fcl | 25 ++++++++++++++++++++++ CRVReco/fcl/prolog_v12.fcl | 23 ++++++++++++++++++++ CRVReco/src/CrvCoincidenceFinder_module.cc | 8 +++++-- 5 files changed, 59 insertions(+), 2 deletions(-) diff --git a/CRVReco/fcl/epilog_extracted_v03.fcl b/CRVReco/fcl/epilog_extracted_v03.fcl index 82a030772a..ae72bfd56f 100644 --- a/CRVReco/fcl/epilog_extracted_v03.fcl +++ b/CRVReco/fcl/epilog_extracted_v03.fcl @@ -11,6 +11,7 @@ physics.producers.CrvCoincidenceClusterFinder.sectorConfig : coincidenceLayers : 2 minClusterPEs : 0 initialClusterMaxDistance : 250 + finalClusterMaxDistance : 0 }, { CRVSector : "T1" @@ -23,6 +24,7 @@ physics.producers.CrvCoincidenceClusterFinder.sectorConfig : coincidenceLayers : 2 minClusterPEs : 0 initialClusterMaxDistance : 250 + finalClusterMaxDistance : 0 }, { CRVSector : "T2" @@ -35,5 +37,6 @@ physics.producers.CrvCoincidenceClusterFinder.sectorConfig : coincidenceLayers : 2 minClusterPEs : 0 initialClusterMaxDistance : 250 + finalClusterMaxDistance : 0 } ] diff --git a/CRVReco/fcl/epilog_run1a_v01.fcl b/CRVReco/fcl/epilog_run1a_v01.fcl index a63dc85d70..d8101ecec8 100644 --- a/CRVReco/fcl/epilog_run1a_v01.fcl +++ b/CRVReco/fcl/epilog_run1a_v01.fcl @@ -11,6 +11,7 @@ physics.producers.CrvCoincidenceClusterFinder.sectorConfig : coincidenceLayers : 3 minClusterPEs : 0 initialClusterMaxDistance : 250 + finalClusterMaxDistance : 0 }, { CRVSector : "T2" @@ -23,5 +24,6 @@ physics.producers.CrvCoincidenceClusterFinder.sectorConfig : coincidenceLayers : 3 minClusterPEs : 0 initialClusterMaxDistance : 250 + finalClusterMaxDistance : 0 } ] diff --git a/CRVReco/fcl/prolog_v11.fcl b/CRVReco/fcl/prolog_v11.fcl index 8b00469e7d..a25d00a1cb 100644 --- a/CRVReco/fcl/prolog_v11.fcl +++ b/CRVReco/fcl/prolog_v11.fcl @@ -92,6 +92,7 @@ BEGIN_PROLOG coincidenceLayers : 3 minClusterPEs : 200 //200 PEs //higher threshold for this sector initialClusterMaxDistance : 250 //mm + finalClusterMaxDistance : 0 //mm }, { CRVSector : "R2" @@ -104,6 +105,7 @@ BEGIN_PROLOG coincidenceLayers : 3 minClusterPEs : 0 //0 PEs (=no cut on total PEs of a coincidence cluster) initialClusterMaxDistance : 250 + finalClusterMaxDistance : 0 }, { CRVSector : "R3" @@ -116,6 +118,7 @@ BEGIN_PROLOG coincidenceLayers : 3 minClusterPEs : 0 initialClusterMaxDistance : 250 + finalClusterMaxDistance : 0 }, { CRVSector : "R4" @@ -128,6 +131,7 @@ BEGIN_PROLOG coincidenceLayers : 3 minClusterPEs : 0 initialClusterMaxDistance : 250 + finalClusterMaxDistance : 0 }, { CRVSector : "R5" @@ -140,6 +144,7 @@ BEGIN_PROLOG coincidenceLayers : 3 minClusterPEs : 0 initialClusterMaxDistance : 250 + finalClusterMaxDistance : 0 }, { CRVSector : "R6" @@ -152,6 +157,7 @@ BEGIN_PROLOG coincidenceLayers : 3 minClusterPEs : 0 initialClusterMaxDistance : 250 + finalClusterMaxDistance : 0 }, { CRVSector : "L1" @@ -164,6 +170,7 @@ BEGIN_PROLOG coincidenceLayers : 3 minClusterPEs : 100 //higher threshold initialClusterMaxDistance : 250 + finalClusterMaxDistance : 0 }, { CRVSector : "L2" @@ -176,6 +183,7 @@ BEGIN_PROLOG coincidenceLayers : 3 minClusterPEs : 0 initialClusterMaxDistance : 250 + finalClusterMaxDistance : 0 }, { CRVSector : "L3" @@ -188,6 +196,7 @@ BEGIN_PROLOG coincidenceLayers : 3 minClusterPEs : 0 initialClusterMaxDistance : 250 + finalClusterMaxDistance : 0 }, { CRVSector : "T1" @@ -200,6 +209,7 @@ BEGIN_PROLOG coincidenceLayers : 4 //to suppress high rate minClusterPEs : 60 //higher threshold initialClusterMaxDistance : 250 + finalClusterMaxDistance : 0 }, { CRVSector : "T2" @@ -212,6 +222,7 @@ BEGIN_PROLOG coincidenceLayers : 3 minClusterPEs : 60 //higher threshold initialClusterMaxDistance : 250 + finalClusterMaxDistance : 0 }, { CRVSector : "T3" @@ -224,6 +235,7 @@ BEGIN_PROLOG coincidenceLayers : 3 minClusterPEs : 0 initialClusterMaxDistance : 250 + finalClusterMaxDistance : 0 }, { CRVSector : "T4" @@ -236,6 +248,7 @@ BEGIN_PROLOG coincidenceLayers : 3 minClusterPEs : 0 initialClusterMaxDistance : 250 + finalClusterMaxDistance : 0 }, { CRVSector : "T5" @@ -248,6 +261,7 @@ BEGIN_PROLOG coincidenceLayers : 3 minClusterPEs : 0 initialClusterMaxDistance : 250 + finalClusterMaxDistance : 0 }, { CRVSector : "E1" @@ -260,6 +274,7 @@ BEGIN_PROLOG coincidenceLayers : 4 //to suppress high rate minClusterPEs : 200 //higher threshold initialClusterMaxDistance : 100 + finalClusterMaxDistance : 0 }, { CRVSector : "E2" @@ -272,6 +287,7 @@ BEGIN_PROLOG coincidenceLayers : 4 //to suppress high rate minClusterPEs : 200 //higher threshold initialClusterMaxDistance : 100 + finalClusterMaxDistance : 0 }, { CRVSector : "U" @@ -284,6 +300,7 @@ BEGIN_PROLOG coincidenceLayers : 4 //to suppress high rate minClusterPEs : 60 //higher threshold initialClusterMaxDistance : 100 + finalClusterMaxDistance : 0 }, { CRVSector : "D1" @@ -296,6 +313,7 @@ BEGIN_PROLOG coincidenceLayers : 4 //to suppress high rate minClusterPEs : 0 initialClusterMaxDistance : 150 + finalClusterMaxDistance : 0 }, { CRVSector : "D2" @@ -308,6 +326,7 @@ BEGIN_PROLOG coincidenceLayers : 4 //to suppress high rate minClusterPEs : 0 initialClusterMaxDistance : 150 + finalClusterMaxDistance : 0 }, { CRVSector : "D3" @@ -320,6 +339,7 @@ BEGIN_PROLOG coincidenceLayers : 4 //to suppress high rate minClusterPEs : 0 initialClusterMaxDistance : 150 + finalClusterMaxDistance : 0 }, { CRVSector : "D4" @@ -332,6 +352,7 @@ BEGIN_PROLOG coincidenceLayers : 4 //to suppress high rate minClusterPEs : 0 initialClusterMaxDistance : 150 + finalClusterMaxDistance : 0 }, { CRVSector : "C1" @@ -344,6 +365,7 @@ BEGIN_PROLOG coincidenceLayers : 3 minClusterPEs : 0 initialClusterMaxDistance : 150 + finalClusterMaxDistance : 0 }, { CRVSector : "C2" @@ -356,6 +378,7 @@ BEGIN_PROLOG coincidenceLayers : 3 minClusterPEs : 0 initialClusterMaxDistance : 150 + finalClusterMaxDistance : 0 }, { CRVSector : "C3" @@ -368,6 +391,7 @@ BEGIN_PROLOG coincidenceLayers : 3 minClusterPEs : 0 initialClusterMaxDistance : 150 + finalClusterMaxDistance : 0 }, { CRVSector : "C4" @@ -380,6 +404,7 @@ BEGIN_PROLOG coincidenceLayers : 3 minClusterPEs : 0 initialClusterMaxDistance : 150 + finalClusterMaxDistance : 0 } ] #other settings diff --git a/CRVReco/fcl/prolog_v12.fcl b/CRVReco/fcl/prolog_v12.fcl index 5480e9d02c..0511406a90 100644 --- a/CRVReco/fcl/prolog_v12.fcl +++ b/CRVReco/fcl/prolog_v12.fcl @@ -92,6 +92,7 @@ BEGIN_PROLOG coincidenceLayers : 3 minClusterPEs : 200 //200 PEs //higher threshold for this sector initialClusterMaxDistance : 250 //mm + finalClusterMaxDistance : 0 //mm }, { CRVSector : "R2" @@ -104,6 +105,7 @@ BEGIN_PROLOG coincidenceLayers : 3 minClusterPEs : 0 //0 PEs (=no cut on total PEs of a coincidence cluster) initialClusterMaxDistance : 250 + finalClusterMaxDistance : 0 }, { CRVSector : "R3" @@ -116,6 +118,7 @@ BEGIN_PROLOG coincidenceLayers : 3 minClusterPEs : 0 initialClusterMaxDistance : 250 + finalClusterMaxDistance : 0 }, { CRVSector : "R4" @@ -128,6 +131,7 @@ BEGIN_PROLOG coincidenceLayers : 3 minClusterPEs : 0 initialClusterMaxDistance : 250 + finalClusterMaxDistance : 0 }, { CRVSector : "R5" @@ -140,6 +144,7 @@ BEGIN_PROLOG coincidenceLayers : 3 minClusterPEs : 0 initialClusterMaxDistance : 250 + finalClusterMaxDistance : 0 }, { CRVSector : "R6" @@ -152,6 +157,7 @@ BEGIN_PROLOG coincidenceLayers : 3 minClusterPEs : 0 initialClusterMaxDistance : 250 + finalClusterMaxDistance : 0 }, { CRVSector : "L1" @@ -164,6 +170,7 @@ BEGIN_PROLOG coincidenceLayers : 3 minClusterPEs : 100 //higher threshold initialClusterMaxDistance : 250 + finalClusterMaxDistance : 0 }, { CRVSector : "L2" @@ -176,6 +183,7 @@ BEGIN_PROLOG coincidenceLayers : 3 minClusterPEs : 0 initialClusterMaxDistance : 250 + finalClusterMaxDistance : 0 }, { CRVSector : "L3" @@ -188,6 +196,7 @@ BEGIN_PROLOG coincidenceLayers : 3 minClusterPEs : 0 initialClusterMaxDistance : 250 + finalClusterMaxDistance : 0 }, { CRVSector : "T1" @@ -200,6 +209,7 @@ BEGIN_PROLOG coincidenceLayers : 4 //to suppress high rate minClusterPEs : 60 initialClusterMaxDistance : 250 + finalClusterMaxDistance : 0 }, { CRVSector : "T2" @@ -212,6 +222,7 @@ BEGIN_PROLOG coincidenceLayers : 3 minClusterPEs : 60 initialClusterMaxDistance : 250 + finalClusterMaxDistance : 0 }, { CRVSector : "T3" @@ -224,6 +235,7 @@ BEGIN_PROLOG coincidenceLayers : 3 minClusterPEs : 0 initialClusterMaxDistance : 250 + finalClusterMaxDistance : 0 }, { CRVSector : "T4" @@ -236,6 +248,7 @@ BEGIN_PROLOG coincidenceLayers : 3 minClusterPEs : 0 initialClusterMaxDistance : 250 + finalClusterMaxDistance : 0 }, { CRVSector : "T5" @@ -248,6 +261,7 @@ BEGIN_PROLOG coincidenceLayers : 3 minClusterPEs : 0 initialClusterMaxDistance : 250 + finalClusterMaxDistance : 0 }, { CRVSector : "E1" @@ -260,6 +274,7 @@ BEGIN_PROLOG coincidenceLayers : 4 //to suppress high rate minClusterPEs : 200 //higher threshold initialClusterMaxDistance : 100 + finalClusterMaxDistance : 0 }, { CRVSector : "E2" @@ -272,6 +287,7 @@ BEGIN_PROLOG coincidenceLayers : 4 //to suppress high rate minClusterPEs : 200 //higher threshold initialClusterMaxDistance : 100 + finalClusterMaxDistance : 0 }, { CRVSector : "U" @@ -284,6 +300,7 @@ BEGIN_PROLOG coincidenceLayers : 4 //to suppress high rate minClusterPEs : 60 //higher threshold initialClusterMaxDistance : 100 + finalClusterMaxDistance : 0 }, { CRVSector : "D1" @@ -296,6 +313,7 @@ BEGIN_PROLOG coincidenceLayers : 4 //to suppress high rate minClusterPEs : 0 initialClusterMaxDistance : 150 + finalClusterMaxDistance : 0 }, { CRVSector : "D2" @@ -308,6 +326,7 @@ BEGIN_PROLOG coincidenceLayers : 4 //to suppress high rate minClusterPEs : 0 initialClusterMaxDistance : 150 + finalClusterMaxDistance : 0 }, { CRVSector : "D3" @@ -320,6 +339,7 @@ BEGIN_PROLOG coincidenceLayers : 4 //to suppress high rate minClusterPEs : 0 initialClusterMaxDistance : 150 + finalClusterMaxDistance : 0 }, { CRVSector : "D4" @@ -332,6 +352,7 @@ BEGIN_PROLOG coincidenceLayers : 4 //to suppress high rate minClusterPEs : 0 initialClusterMaxDistance : 150 + finalClusterMaxDistance : 0 }, { CRVSector : "C1" @@ -344,6 +365,7 @@ BEGIN_PROLOG coincidenceLayers : 3 minClusterPEs : 0 initialClusterMaxDistance : 150 + finalClusterMaxDistance : 0 }, { CRVSector : "C2" @@ -356,6 +378,7 @@ BEGIN_PROLOG coincidenceLayers : 3 minClusterPEs : 0 initialClusterMaxDistance : 150 + finalClusterMaxDistance : 0 } ] #other settings diff --git a/CRVReco/src/CrvCoincidenceFinder_module.cc b/CRVReco/src/CrvCoincidenceFinder_module.cc index e7095d7973..00b78dfe66 100644 --- a/CRVReco/src/CrvCoincidenceFinder_module.cc +++ b/CRVReco/src/CrvCoincidenceFinder_module.cc @@ -45,6 +45,7 @@ namespace mu2e fhicl::Atom coincidenceLayers{Name("coincidenceLayers"), Comment("number of layers required for a coincidence")}; fhicl::Atom minClusterPEs{Name("minClusterPEs"), Comment("minimum number of PEs in a cluster required for storage")}; fhicl::Atom initialClusterMaxDistance{Name("initialClusterMaxDistance"), Comment("maximum distances between hits to be considered for a hit cluster at initial clustering process")}; + fhicl::Atom finalClusterMaxDistance{Name("finalClusterMaxDistance"), Comment("maximum distances between hits to be considered for a hit cluster at final clustering process. will be adjusted to larger values depending on the actual distances between coincidence hits.")}; }; struct Config { @@ -104,6 +105,7 @@ namespace mu2e int coincidenceLayers; double minClusterPEs; double initialClusterMaxDistance; + double finalClusterMaxDistance; }; std::map _sectorMap; @@ -242,6 +244,7 @@ namespace mu2e s.coincidenceLayers = sectorConfigIter->coincidenceLayers(); s.minClusterPEs = sectorConfigIter->minClusterPEs(); s.initialClusterMaxDistance = sectorConfigIter->initialClusterMaxDistance(); + s.finalClusterMaxDistance = sectorConfigIter->finalClusterMaxDistance(); _sectorMap[i]=s; sectorTypes[s.sectorType].push_back(s); @@ -665,7 +668,8 @@ namespace mu2e std::vector::const_iterator iterHit; for(iterHit=hits.begin(); iterHit!=hits.end(); ++iterHit) { - iterHit->_maxDistance=0; //reset max distance. will be re-calculated here based on actual distances. + iterHit->_maxDistance=_sectorMap.at(iterHit->_crvSector).finalClusterMaxDistance; //set new max distance for final cluster. can be 0. + //will be adjusted to larger values depending on the actual distances between coincidence hits. int layer=iterHit->_layer; hitsLayers[layer].push_back(*iterHit); } @@ -850,7 +854,7 @@ namespace mu2e std::sort(layerIterators,layerIterators+n,[](L &a, L &b){return a->_x < b->_x;}); for(int i=0; i0) From 79dc1f8376e34d35311f58a757a6ade32a12bc97 Mon Sep 17 00:00:00 2001 From: michaelmackenzie Date: Wed, 1 Apr 2026 10:35:14 -0500 Subject: [PATCH 46/54] Handle cases where sim has > 10 bit PMP values --- .../StrawDigiCollectionsComparator_module.cc | 35 +++++++++++++------ 1 file changed, 24 insertions(+), 11 deletions(-) diff --git a/DAQ/src/StrawDigiCollectionsComparator_module.cc b/DAQ/src/StrawDigiCollectionsComparator_module.cc index 847b2f1f16..c9bdbd1b87 100644 --- a/DAQ/src/StrawDigiCollectionsComparator_module.cc +++ b/DAQ/src/StrawDigiCollectionsComparator_module.cc @@ -58,6 +58,10 @@ class StrawDigiCollectionsComparator : public art::EDAnalyzer { fhicl::Name("normalizeWaveformsTo10Bit"), fhicl::Comment("Apply 10-bit normalization (sample & 0x3FF) to both reference and candidate waveforms"), false}; + fhicl::Atom normalizePmpTo10Bit{ + fhicl::Name("normalizePmpTo10Bit"), + fhicl::Comment("Apply 10-bit normalization (PMP & 0x3FF) to both reference and candidate digis"), + false}; }; using Parameters = art::EDAnalyzer::Table; @@ -93,7 +97,8 @@ class StrawDigiCollectionsComparator : public art::EDAnalyzer { static std::vector normalize(mu2e::StrawDigiCollection const& digis, mu2e::StrawDigiADCWaveformCollection const* waveforms, bool compareWaveforms, - bool normalizeWaveformsTo10Bit); + bool normalizeWaveformsTo10Bit, + bool normalizePmpTo10Bit); static std::string describe(FlatDigi const& digi, size_t maxWaveformSamplesToPrint); art::InputTag referenceDigiTag_; @@ -106,6 +111,7 @@ class StrawDigiCollectionsComparator : public art::EDAnalyzer { size_t maxMismatchesToPrint_; size_t maxWaveformSamplesToPrint_; bool normalizeWaveformsTo10Bit_; + bool normalizePmpTo10Bit_; size_t totalEvents_{0}; size_t matchingEvents_{0}; @@ -123,11 +129,12 @@ StrawDigiCollectionsComparator::StrawDigiCollectionsComparator(Parameters const& , diagLevel_(config().diagLevel()) , maxMismatchesToPrint_(config().maxMismatchesToPrint()) , maxWaveformSamplesToPrint_(config().maxWaveformSamplesToPrint()) - , normalizeWaveformsTo10Bit_(config().normalizeWaveformsTo10Bit()) {} + , normalizeWaveformsTo10Bit_(config().normalizeWaveformsTo10Bit()) + , normalizePmpTo10Bit_(config().normalizePmpTo10Bit()) {} std::vector StrawDigiCollectionsComparator::normalize( mu2e::StrawDigiCollection const& digis, mu2e::StrawDigiADCWaveformCollection const* waveforms, - bool compareWaveforms, bool normalizeWaveformsTo10Bit) { + bool compareWaveforms, bool normalizeWaveformsTo10Bit, bool normalizePmpTo10Bit) { if (compareWaveforms && waveforms != nullptr && waveforms->size() != digis.size()) { throw cet::exception("STRAWDIGI_COMPARE") << "StrawDigi and StrawDigiADCWaveform collection sizes differ: digis=" << digis.size() @@ -153,13 +160,17 @@ std::vector StrawDigiCollectionsCompar } } + auto const normalizedPmp = normalizePmpTo10Bit + ? static_cast(digi.PMP() & 0x3FF) + : static_cast(digi.PMP()); + out.push_back(FlatDigi{static_cast(digi.strawId().asUint16()), - static_cast(digi.TDC(mu2e::StrawEnd::cal)), - static_cast(digi.TDC(mu2e::StrawEnd::hv)), - static_cast(digi.TOT(mu2e::StrawEnd::cal)), - static_cast(digi.TOT(mu2e::StrawEnd::hv)), - static_cast(digi.PMP()), - std::move(waveform)}); + static_cast(digi.TDC(mu2e::StrawEnd::cal)), + static_cast(digi.TDC(mu2e::StrawEnd::hv)), + static_cast(digi.TOT(mu2e::StrawEnd::cal)), + static_cast(digi.TOT(mu2e::StrawEnd::hv)), + normalizedPmp, + std::move(waveform)}); } // Sort so comparison is robust against ordering differences between producers. @@ -225,11 +236,13 @@ void StrawDigiCollectionsComparator::analyze(art::Event const& event) { auto reference = normalize(*referenceDigis, referenceWaveforms, compareWaveforms_, - normalizeWaveformsTo10Bit_); + normalizeWaveformsTo10Bit_, + normalizePmpTo10Bit_); auto candidate = normalize(*candidateDigis, candidateWaveforms, compareWaveforms_, - normalizeWaveformsTo10Bit_); + normalizeWaveformsTo10Bit_, + normalizePmpTo10Bit_); std::vector mismatches; if (reference.size() != candidate.size()) { From 951b00a6809f506a90ce9fc14ee12a8af9a15ea4 Mon Sep 17 00:00:00 2001 From: michaelmackenzie Date: Wed, 1 Apr 2026 11:09:10 -0500 Subject: [PATCH 47/54] Change to mu2e namespace --- DAQ/src/StrawDigisToFragments_module.cc | 42 +++++++++++++------------ 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/DAQ/src/StrawDigisToFragments_module.cc b/DAQ/src/StrawDigisToFragments_module.cc index a2c97cc259..2977435f61 100644 --- a/DAQ/src/StrawDigisToFragments_module.cc +++ b/DAQ/src/StrawDigisToFragments_module.cc @@ -130,38 +130,40 @@ TrackerHitPayload encodeTrackerHit(mu2e::StrawDigi const& digi, } // namespace -namespace art { +namespace mu2e { class StrawDigisToFragments; } -class art::StrawDigisToFragments : public EDProducer { +class mu2e::StrawDigisToFragments : public art::EDProducer { public: struct Config { - fhicl::Atom diagLevel{fhicl::Name("diagLevel"), fhicl::Comment("diagnostic level"), 0}; + using Name = fhicl::Name; + using Comment = fhicl::Comment; + fhicl::Atom diagLevel{Name("diagLevel"), Comment("diagnostic level"), 0}; fhicl::Atom skipFragmentOnSizeMismatch{ - fhicl::Name("skipFragmentOnSizeMismatch"), - fhicl::Comment("Skip emitting fragment when packed bytes and event header size differ"), + Name("skipFragmentOnSizeMismatch"), + Comment("Skip emitting fragment when packed bytes and event header size differ"), false}; fhicl::Atom fallbackToOfflineWhenMapMissing{ - fhicl::Name("fallbackToOfflineWhenMapMissing"), - fhicl::Comment("When TrackerPanelMap lookup fails, use offline plane/panel as DTC/link"), + Name("fallbackToOfflineWhenMapMissing"), + Comment("When TrackerPanelMap lookup fails, use offline plane/panel as DTC/link"), true}; fhicl::Atom forceOfflineAddressing{ - fhicl::Name("forceOfflineAddressing"), - fhicl::Comment("Ignore TrackerPanelMap and encode dtc/link/strawindex directly from offline StrawId"), + Name("forceOfflineAddressing"), + Comment("Ignore TrackerPanelMap and encode dtc/link/strawindex directly from offline StrawId"), false}; - fhicl::Atom strawDigiTag{fhicl::Name("strawDigiTag"), - fhicl::Comment("Input StrawDigiCollection"), + fhicl::Atom strawDigiTag{Name("strawDigiTag"), + Comment("Input StrawDigiCollection"), art::InputTag("makeSD")}; - fhicl::Atom strawDigiADCTag{fhicl::Name("strawDigiADCTag"), - fhicl::Comment("Input StrawDigiADCWaveformCollection"), + fhicl::Atom strawDigiADCTag{Name("strawDigiADCTag"), + Comment("Input StrawDigiADCWaveformCollection"), art::InputTag("makeSD")}; }; explicit StrawDigisToFragments(const art::EDProducer::Table& config); virtual ~StrawDigisToFragments() {} - virtual void produce(Event&); + virtual void produce(art::Event&); virtual void endJob(); private: @@ -187,7 +189,7 @@ class art::StrawDigisToFragments : public EDProducer { DTCLib::DTC_Event& dtcEvent); }; -art::StrawDigisToFragments::StrawDigisToFragments(const art::EDProducer::Table& config) +mu2e::StrawDigisToFragments::StrawDigisToFragments(const art::EDProducer::Table& config) : art::EDProducer{config} , diagLevel_(config().diagLevel()) , skipFragmentOnSizeMismatch_(config().skipFragmentOnSizeMismatch()) @@ -201,7 +203,7 @@ art::StrawDigisToFragments::StrawDigisToFragments(const art::EDProducer::Table fragments(new artdaq::Fragments()); @@ -490,7 +492,7 @@ void art::StrawDigisToFragments::produce(Event& event) { event.put(std::move(fragments)); } -void art::StrawDigisToFragments::endJob() { +void mu2e::StrawDigisToFragments::endJob() { if (diagLevel_ > 0) { std::cout << "\n ----- [StrawDigisToFragments] Summary ----- " << std::endl; std::cout << "Total events: " << total_events_ << std::endl; @@ -498,4 +500,4 @@ void art::StrawDigisToFragments::endJob() { } } -DEFINE_ART_MODULE(art::StrawDigisToFragments) +DEFINE_ART_MODULE(mu2e::StrawDigisToFragments) From f13a2bcb73a89c919e8d59eecb1906dc5ff1ecf7 Mon Sep 17 00:00:00 2001 From: michaelmackenzie Date: Wed, 1 Apr 2026 11:16:54 -0500 Subject: [PATCH 48/54] Initialize data to 0 --- DAQ/src/StrawDigisToFragments_module.cc | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/DAQ/src/StrawDigisToFragments_module.cc b/DAQ/src/StrawDigisToFragments_module.cc index 2977435f61..30ca955586 100644 --- a/DAQ/src/StrawDigisToFragments_module.cc +++ b/DAQ/src/StrawDigisToFragments_module.cc @@ -41,6 +41,24 @@ using TrackerADCPacket = mu2e::TrackerDataDecoder::TrackerADCPacket; struct TrackerHitPayload { TrackerDataPacket mainPacket; std::vector adcPackets; + TrackerHitPayload() { + mainPacket.StrawIndex = 0; + mainPacket.TDC0A = 0; + mainPacket.TDC0B = 0; + mainPacket.TOT0 = 0; + mainPacket.EWMCounter = 0; + mainPacket.TDC1A = 0; + mainPacket.TDC1B = 0; + mainPacket.TOT1 = 0; + mainPacket.ErrorFlags = 0; + mainPacket.NumADCPackets = 0; + mainPacket.PMP = 0; + mainPacket.ADC00 = 0; + mainPacket.ADC01A = 0; + mainPacket.ADC01B = 0; + mainPacket.ADC02 = 0; + mainPacket.unused1 = 0; + } }; struct TrackerBlockData { From 7e410414e4451226d4ec1def24ef4f3328e1acbf Mon Sep 17 00:00:00 2001 From: michaelmackenzie Date: Wed, 1 Apr 2026 11:24:29 -0500 Subject: [PATCH 49/54] Fix spacing, cmake, and remove dead code --- DAQ/CMakeLists.txt | 1 + DAQ/src/StrawDigisToFragments_module.cc | 12 +++--------- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/DAQ/CMakeLists.txt b/DAQ/CMakeLists.txt index 3dca2a8018..80ab299dd7 100644 --- a/DAQ/CMakeLists.txt +++ b/DAQ/CMakeLists.txt @@ -142,6 +142,7 @@ cet_build_plugin(StrawDigiCollectionsComparator art::module REG_SOURCE src/StrawDigiCollectionsComparator_module.cc LIBRARIES REG Offline::RecoDataProducts + Offline::DataProducts ) cet_build_plugin(StrawHitFilter art::module REG_SOURCE src/StrawHitFilter_module.cc diff --git a/DAQ/src/StrawDigisToFragments_module.cc b/DAQ/src/StrawDigisToFragments_module.cc index 30ca955586..e3da066e71 100644 --- a/DAQ/src/StrawDigisToFragments_module.cc +++ b/DAQ/src/StrawDigisToFragments_module.cc @@ -158,10 +158,6 @@ class mu2e::StrawDigisToFragments : public art::EDProducer { using Name = fhicl::Name; using Comment = fhicl::Comment; fhicl::Atom diagLevel{Name("diagLevel"), Comment("diagnostic level"), 0}; - fhicl::Atom skipFragmentOnSizeMismatch{ - Name("skipFragmentOnSizeMismatch"), - Comment("Skip emitting fragment when packed bytes and event header size differ"), - false}; fhicl::Atom fallbackToOfflineWhenMapMissing{ Name("fallbackToOfflineWhenMapMissing"), Comment("When TrackerPanelMap lookup fails, use offline plane/panel as DTC/link"), @@ -186,7 +182,6 @@ class mu2e::StrawDigisToFragments : public art::EDProducer { private: int diagLevel_; - bool skipFragmentOnSizeMismatch_; bool fallbackToOfflineWhenMapMissing_; bool forceOfflineAddressing_; art::InputTag strawDigiTag_; @@ -210,12 +205,11 @@ class mu2e::StrawDigisToFragments : public art::EDProducer { mu2e::StrawDigisToFragments::StrawDigisToFragments(const art::EDProducer::Table& config) : art::EDProducer{config} , diagLevel_(config().diagLevel()) - , skipFragmentOnSizeMismatch_(config().skipFragmentOnSizeMismatch()) - , fallbackToOfflineWhenMapMissing_(config().fallbackToOfflineWhenMapMissing()) + , fallbackToOfflineWhenMapMissing_(config().fallbackToOfflineWhenMapMissing()) , forceOfflineAddressing_(config().forceOfflineAddressing()) , strawDigiTag_(config().strawDigiTag()) - , strawDigiADCTag_(config().strawDigiADCTag()) - , printedTrackerPanelMap_(false) { + , strawDigiADCTag_(config().strawDigiADCTag()) + , printedTrackerPanelMap_(false) { produces(); total_events_ = 0; total_digis_ = 0; From b260d4d929a5107c1f68cd786be8ed5b298319bc Mon Sep 17 00:00:00 2001 From: michaelmackenzie Date: Wed, 1 Apr 2026 11:27:03 -0500 Subject: [PATCH 50/54] Change to make_unique --- DAQ/src/StrawDigisToFragments_module.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DAQ/src/StrawDigisToFragments_module.cc b/DAQ/src/StrawDigisToFragments_module.cc index e3da066e71..ca321b3de8 100644 --- a/DAQ/src/StrawDigisToFragments_module.cc +++ b/DAQ/src/StrawDigisToFragments_module.cc @@ -393,7 +393,7 @@ void mu2e::StrawDigisToFragments::buildDtcEventFromDigis( void mu2e::StrawDigisToFragments::produce(art::Event& event) { total_events_++; - std::unique_ptr fragments(new artdaq::Fragments()); + std::unique_ptr fragments = std::make_unique(); auto strawDigiHandle = event.getHandle(strawDigiTag_); auto strawADCsHandle = event.getHandle(strawDigiADCTag_); From 40abec90d84205f0ff02983bd432966f401bb49f Mon Sep 17 00:00:00 2001 From: michaelmackenzie Date: Wed, 1 Apr 2026 11:30:01 -0500 Subject: [PATCH 51/54] Fix spacing --- DAQ/src/StrawDigisFromArtdaqFragments_module.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/DAQ/src/StrawDigisFromArtdaqFragments_module.cc b/DAQ/src/StrawDigisFromArtdaqFragments_module.cc index 3699183118..2875272915 100644 --- a/DAQ/src/StrawDigisFromArtdaqFragments_module.cc +++ b/DAQ/src/StrawDigisFromArtdaqFragments_module.cc @@ -501,9 +501,9 @@ void mu2e::StrawDigisFromArtdaqFragments::produce(art::Event& event) { //----------------------------------------------------------------------------- // convert channel_id into a strawID //----------------------------------------------------------------------------- - mu2e::StrawId sid = (forceOfflineAddressing_ || tpm == nullptr) - ? mu2e::StrawId(dtc_id, link_id, chid) - : mu2e::StrawId(tpm->uniquePlane(), tpm->panel(), chid); + mu2e::StrawId sid = (forceOfflineAddressing_ || tpm == nullptr) + ? mu2e::StrawId(dtc_id, link_id, chid) + : mu2e::StrawId(tpm->uniquePlane(), tpm->panel(), chid); mu2e::TrkTypes::TDCValues tdc = {hit_data->TDC0(), hit_data->TDC1()}; mu2e::TrkTypes::TOTValues tot = {hit_data->TOT0 , hit_data->TOT1 }; From 2879f05dff2083e0ebe2fed8b42392381a214c21 Mon Sep 17 00:00:00 2001 From: ehrlich-uva Date: Wed, 1 Apr 2026 12:08:37 -0500 Subject: [PATCH 52/54] removed a mutable and some consts in CRV coincidence cluster finder --- CRVReco/src/CrvCoincidenceFinder_module.cc | 66 +++++++++++----------- 1 file changed, 34 insertions(+), 32 deletions(-) diff --git a/CRVReco/src/CrvCoincidenceFinder_module.cc b/CRVReco/src/CrvCoincidenceFinder_module.cc index 00b78dfe66..8fb517f33a 100644 --- a/CRVReco/src/CrvCoincidenceFinder_module.cc +++ b/CRVReco/src/CrvCoincidenceFinder_module.cc @@ -45,7 +45,7 @@ namespace mu2e fhicl::Atom coincidenceLayers{Name("coincidenceLayers"), Comment("number of layers required for a coincidence")}; fhicl::Atom minClusterPEs{Name("minClusterPEs"), Comment("minimum number of PEs in a cluster required for storage")}; fhicl::Atom initialClusterMaxDistance{Name("initialClusterMaxDistance"), Comment("maximum distances between hits to be considered for a hit cluster at initial clustering process")}; - fhicl::Atom finalClusterMaxDistance{Name("finalClusterMaxDistance"), Comment("maximum distances between hits to be considered for a hit cluster at final clustering process. will be adjusted to larger values depending on the actual distances between coincidence hits.")}; + fhicl::Atom finalClusterMaxDistance{Name("finalClusterMaxDistance"), Comment("floor value of the maximum distances between hits to be considered for a hit cluster at final clustering process. maximum distance will be adjusted to larger values depending on the actual distances between coincidence hits.")}; //can be 0. }; struct Config { @@ -137,11 +137,10 @@ namespace mu2e double _minSlope, _maxSlope, _maxSlopeDifference; int _coincidenceLayers; double _minClusterPEs; - mutable double _maxDistance; //initially set to initialClusterMaxDistance, which is just an estimate - //used for the initial clustering process (to keep the number of - //hit combinations down that need to be checked for coincidences). - //_maxDistance is updated when the coindidences are checked - //(used for the final clustering process) + double _maxDistance; //initially set to initialClusterMaxDistance, which is just an estimate used for the initial clustering process + //(to reduce the number of hit combinations that need to be checked for coincidences). + //_maxDistance is updated when the coincidences are checked based on the actual distances between coincidence hits + //with a floor value of finalClusterMaxDistance. These updated _maxDistance values are used for the final clustering process. CrvHit(const art::Ptr crvRecoPulse, const CLHEP::Hep3Vector &pos, double x, double y, double time, double PEs, int crvSector, int layer, int counter, int SiPM, int PEthreshold, @@ -161,7 +160,7 @@ namespace mu2e void findClusters(std::list &hits, std::vector > &clusters, double clusterMaxTimeDifference, bool combineOppositeSides=false, double timeDifferenceOppositeSides=0); void checkCoincidence(const std::vector &hits, std::list &coincidenceHits); - bool checkCombination(std::vector::const_iterator layerIterators[], int n); + bool checkCombination(std::vector::iterator layerIterators[], int n); }; @@ -668,10 +667,13 @@ namespace mu2e std::vector::const_iterator iterHit; for(iterHit=hits.begin(); iterHit!=hits.end(); ++iterHit) { - iterHit->_maxDistance=_sectorMap.at(iterHit->_crvSector).finalClusterMaxDistance; //set new max distance for final cluster. can be 0. - //will be adjusted to larger values depending on the actual distances between coincidence hits. int layer=iterHit->_layer; + int sector=iterHit->_crvSector; + double finalClusterMaxDistance=_sectorMap.at(sector).finalClusterMaxDistance; + hitsLayers[layer].push_back(*iterHit); + hitsLayers[layer].back()._maxDistance=finalClusterMaxDistance; //set new max distance for final cluster. this is the floor value and can be 0. + //will be adjusted to larger values depending on the actual distances between coincidence hits. } //we want to collect all hits belonging to coincidence groups, @@ -705,15 +707,15 @@ namespace mu2e //find coincidences using 2/4 coincidence requirement if(minCoincidenceLayers==2) { - std::vector::const_iterator layerIterators[2]; + std::vector::iterator layerIterators[2]; for(int layer1=0; layer1<4; ++layer1) for(int layer2=layer1+1; layer2<4; ++layer2) { - const std::vector &layer1Hits=hitsLayers[layer1]; - const std::vector &layer2Hits=hitsLayers[layer2]; - std::vector::const_iterator layer1Iter; - std::vector::const_iterator layer2Iter; + std::vector &layer1Hits=hitsLayers[layer1]; + std::vector &layer2Hits=hitsLayers[layer2]; + std::vector::iterator layer1Iter; + std::vector::iterator layer2Iter; //it will loop only, if both layers have hits //loops will exit, if all three hits require a 3/4 or 4/4 coincidence @@ -738,18 +740,18 @@ namespace mu2e //find coincidences using 3/4 coincidence requirement if(minCoincidenceLayers<=3 && maxCoincidenceLayers>=3) { - std::vector::const_iterator layerIterators[3]; + std::vector::iterator layerIterators[3]; for(int layer1=0; layer1<4; ++layer1) for(int layer2=layer1+1; layer2<4; ++layer2) for(int layer3=layer2+1; layer3<4; ++layer3) { - const std::vector &layer1Hits=hitsLayers[layer1]; - const std::vector &layer2Hits=hitsLayers[layer2]; - const std::vector &layer3Hits=hitsLayers[layer3]; - std::vector::const_iterator layer1Iter; - std::vector::const_iterator layer2Iter; - std::vector::const_iterator layer3Iter; + std::vector &layer1Hits=hitsLayers[layer1]; + std::vector &layer2Hits=hitsLayers[layer2]; + std::vector &layer3Hits=hitsLayers[layer3]; + std::vector::iterator layer1Iter; + std::vector::iterator layer2Iter; + std::vector::iterator layer3Iter; //it will loop only, if all 3 layers have hits //loops will exit, if all three hits require a 4/4 coincidence @@ -777,16 +779,16 @@ namespace mu2e //find coincidences using 4/4 coincidence requirement if(maxCoincidenceLayers==4) { - std::vector::const_iterator layerIterators[4]; + std::vector::iterator layerIterators[4]; - const std::vector &layer0Hits=hitsLayers[0]; - const std::vector &layer1Hits=hitsLayers[1]; - const std::vector &layer2Hits=hitsLayers[2]; - const std::vector &layer3Hits=hitsLayers[3]; - std::vector::const_iterator layer0Iter; - std::vector::const_iterator layer1Iter; - std::vector::const_iterator layer2Iter; - std::vector::const_iterator layer3Iter; + std::vector &layer0Hits=hitsLayers[0]; + std::vector &layer1Hits=hitsLayers[1]; + std::vector &layer2Hits=hitsLayers[2]; + std::vector &layer3Hits=hitsLayers[3]; + std::vector::iterator layer0Iter; + std::vector::iterator layer1Iter; + std::vector::iterator layer2Iter; + std::vector::iterator layer3Iter; //it will loop only, if all 4 layers have hits for(layer0Iter=layer0Hits.begin(); layer0Iter!=layer0Hits.end(); ++layer0Iter) @@ -814,9 +816,9 @@ namespace mu2e } //end check coincidence - bool CrvCoincidenceFinder::checkCombination(std::vector::const_iterator layerIterators[], int n) + bool CrvCoincidenceFinder::checkCombination(std::vector::iterator layerIterators[], int n) { - typedef const std::vector::const_iterator L; + typedef const std::vector::iterator L; double maxTimeDifference = (*std::max_element(layerIterators,layerIterators+n, [](L &a, L &b){return a->_maxTimeDifference < b->_maxTimeDifference;}))->_maxTimeDifference; From ea0c0e63ff596f2f67a67466a8b634208df97f95 Mon Sep 17 00:00:00 2001 From: ehrlich-uva Date: Wed, 1 Apr 2026 12:20:04 -0500 Subject: [PATCH 53/54] changed some comments --- CRVReco/src/CrvCoincidenceFinder_module.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CRVReco/src/CrvCoincidenceFinder_module.cc b/CRVReco/src/CrvCoincidenceFinder_module.cc index 8fb517f33a..2428811a8f 100644 --- a/CRVReco/src/CrvCoincidenceFinder_module.cc +++ b/CRVReco/src/CrvCoincidenceFinder_module.cc @@ -45,7 +45,7 @@ namespace mu2e fhicl::Atom coincidenceLayers{Name("coincidenceLayers"), Comment("number of layers required for a coincidence")}; fhicl::Atom minClusterPEs{Name("minClusterPEs"), Comment("minimum number of PEs in a cluster required for storage")}; fhicl::Atom initialClusterMaxDistance{Name("initialClusterMaxDistance"), Comment("maximum distances between hits to be considered for a hit cluster at initial clustering process")}; - fhicl::Atom finalClusterMaxDistance{Name("finalClusterMaxDistance"), Comment("floor value of the maximum distances between hits to be considered for a hit cluster at final clustering process. maximum distance will be adjusted to larger values depending on the actual distances between coincidence hits.")}; //can be 0. + fhicl::Atom finalClusterMaxDistance{Name("finalClusterMaxDistance"), Comment("min value of the maximum distances between hits to be considered for a hit cluster at final clustering process. maximum distance will be adjusted to larger values depending on the actual distances between coincidence hits.")}; //can be 0. }; struct Config { @@ -140,7 +140,7 @@ namespace mu2e double _maxDistance; //initially set to initialClusterMaxDistance, which is just an estimate used for the initial clustering process //(to reduce the number of hit combinations that need to be checked for coincidences). //_maxDistance is updated when the coincidences are checked based on the actual distances between coincidence hits - //with a floor value of finalClusterMaxDistance. These updated _maxDistance values are used for the final clustering process. + //with a min value of finalClusterMaxDistance. These updated _maxDistance values are used for the final clustering process. CrvHit(const art::Ptr crvRecoPulse, const CLHEP::Hep3Vector &pos, double x, double y, double time, double PEs, int crvSector, int layer, int counter, int SiPM, int PEthreshold, @@ -672,7 +672,7 @@ namespace mu2e double finalClusterMaxDistance=_sectorMap.at(sector).finalClusterMaxDistance; hitsLayers[layer].push_back(*iterHit); - hitsLayers[layer].back()._maxDistance=finalClusterMaxDistance; //set new max distance for final cluster. this is the floor value and can be 0. + hitsLayers[layer].back()._maxDistance=finalClusterMaxDistance; //set new max distance for final cluster. this is the min value and can be 0. //will be adjusted to larger values depending on the actual distances between coincidence hits. } From b789b5a676343e02dbc8700665ae185515a6f1e5 Mon Sep 17 00:00:00 2001 From: michaelmackenzie Date: Wed, 1 Apr 2026 15:41:42 -0500 Subject: [PATCH 54/54] Change to mu2e namespace --- DAQ/src/CaloDigisToFragments_module.cc | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/DAQ/src/CaloDigisToFragments_module.cc b/DAQ/src/CaloDigisToFragments_module.cc index aa15f89af6..041429e05b 100644 --- a/DAQ/src/CaloDigisToFragments_module.cc +++ b/DAQ/src/CaloDigisToFragments_module.cc @@ -123,11 +123,11 @@ std::vector encodeWaveform(std::vector const& waveform) { } } // namespace -namespace art { +namespace mu2e { class CaloDigisToFragments; } -class art::CaloDigisToFragments : public EDProducer { +class mu2e::CaloDigisToFragments : public art::EDProducer { public: struct Config { fhicl::Atom diagLevel{fhicl::Name("diagLevel"), fhicl::Comment("diagnostic level"), 0}; @@ -143,7 +143,7 @@ class art::CaloDigisToFragments : public EDProducer { explicit CaloDigisToFragments(const art::EDProducer::Table& config); virtual ~CaloDigisToFragments() {} - virtual void produce(Event&); + virtual void produce(art::Event& e); virtual void endJob(); private: @@ -165,7 +165,7 @@ class art::CaloDigisToFragments : public EDProducer { DTCLib::DTC_Event& dtcEvent); }; -art::CaloDigisToFragments::CaloDigisToFragments(const art::EDProducer::Table& config) +mu2e::CaloDigisToFragments::CaloDigisToFragments(const art::EDProducer::Table& config) : art::EDProducer{config} , diagLevel_(config().diagLevel()) , skipFragmentOnSizeMismatch_(config().skipFragmentOnSizeMismatch()) @@ -175,14 +175,14 @@ art::CaloDigisToFragments::CaloDigisToFragments(const art::EDProducer::Table& waveform) { +size_t mu2e::CaloDigisToFragments::waveformMaximumIndex(const std::vector& waveform) { if (waveform.empty()) { return 0; } return std::distance(waveform.begin(), std::max_element(waveform.begin(), waveform.end())); } -void art::CaloDigisToFragments::putBlockInEvent(DTCLib::DTC_Event& currentEvent, uint8_t dtcID, +void mu2e::CaloDigisToFragments::putBlockInEvent(DTCLib::DTC_Event& currentEvent, uint8_t dtcID, DTCLib::DTC_DataBlock const& thisBlock) { auto subEvt = currentEvent.GetSubEventByDTCID(dtcID, DTCLib::DTC_Subsystem_Calorimeter); if (subEvt == nullptr) { @@ -196,7 +196,7 @@ void art::CaloDigisToFragments::putBlockInEvent(DTCLib::DTC_Event& currentEvent, } } -void art::CaloDigisToFragments::buildDtcEventFromDigis(art::Event const& event, +void mu2e::CaloDigisToFragments::buildDtcEventFromDigis(art::Event const& event, mu2e::CaloDigiCollection const& caloDigis, DTCLib::DTC_Event& dtcEvent) { auto const& calodaqconds = calodaqconds_h_.get(event.id()); @@ -305,7 +305,7 @@ void art::CaloDigisToFragments::buildDtcEventFromDigis(art::Event const& event, } } -void art::CaloDigisToFragments::produce(Event& event) { +void mu2e::CaloDigisToFragments::produce(art::Event& event) { total_events_++; std::unique_ptr fragments(new artdaq::Fragments()); @@ -407,7 +407,7 @@ void art::CaloDigisToFragments::produce(Event& event) { event.put(std::move(fragments)); } -void art::CaloDigisToFragments::endJob() { +void mu2e::CaloDigisToFragments::endJob() { if (diagLevel_ > 0) { std::cout << "\n ----- [CaloDigisToFragments] Summary ----- " << std::endl; std::cout << "Total events: " << total_events_ << std::endl; @@ -415,4 +415,4 @@ void art::CaloDigisToFragments::endJob() { } } -DEFINE_ART_MODULE(art::CaloDigisToFragments) +DEFINE_ART_MODULE(mu2e::CaloDigisToFragments)