diff --git a/Inputs/DetectorConfiguration/MUGASTAtLISE.detector b/Inputs/DetectorConfiguration/MUGASTAtLISE.detector new file mode 100644 index 0000000000000000000000000000000000000000..8c512d71f88a7599d372a17cedaa329a01d23423 --- /dev/null +++ b/Inputs/DetectorConfiguration/MUGASTAtLISE.detector @@ -0,0 +1,210 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% EXOGAM setup with one clover +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Exogam clover +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Target + Thickness= 18 micrometer + Radius= 30 mm + Material= CD2 + Angle= 0 deg + X= 0 mm + Y= 0 mm + Z= 0 mm + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Exogam +% X= 0 mm +% Y= 0 mm +% Z= -1400 mm +% ThetaX= 180 deg +% ThetaY= 0 deg +% ThetaZ= 0 deg +% +% Exogam +% X= 0 mm +% Y= 0 mm +% Z= 1400 mm +% ThetaX= 0 deg +% ThetaY= 0 deg +% ThetaZ= 0 deg +% + +Exogam + R= 140 mm + Theta= 90 deg + Phi= 0 deg + +Exogam + R= 140 mm + Theta= 90 deg + Phi= 45 deg + +Exogam + R= 140 mm + Theta= 90 deg + Phi= 90 deg + +Exogam + R= 140 mm + Theta= 90 deg + Phi= 135 deg + +Exogam + R= 140 mm + Theta= 90 deg + Phi= 180 deg + +Exogam + R= 140 mm + Theta= 90 deg + Phi= 225 deg + +Exogam + R= 140 mm + Theta= 90 deg + Phi= 270 deg + +Exogam + R= 140 mm + Theta= 90 deg + Phi= 315 deg + +%%%%%%%%%%% 45 degrees exogam +Exogam + R= 140 mm + Theta= 135 deg + Phi= 0 deg + +Exogam + R= 140 mm + Theta= 135 deg + Phi= 90 deg + +Exogam + R= 140 mm + Theta= 135 deg + Phi= 180 deg + +Exogam + R= 140 mm + Theta= 135 deg + Phi= 270 deg + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%% Telescope 1 %%%%%%% +M2Telescope + X1_Y1= -13.17 -105.07 299.38 mm + X1_Y128= -25.15 -12.87 328.18 mm + X128_Y1= -103.63 -105.68 263.74 mm + X128_Y128= -115.61 -13.56 292.51 mm + SI= 1 + SILI= 0 + CSI= 1 + VIS= all +%%%%%%% Telescope 2 %%%%%%% +M2Telescope + X1_Y1= -114.9 10.05 292.57 mm + X1_Y128= -24.52 9.80 328.49 mm + X128_Y1= -103.13 102.14 263.58 mm + X128_Y128= -12.74 101.90 299.51 mm + SI= 1 + SILI= 0 + CSI= 1 + VIS= all + +%%%%%%% Telescope 3 %%%%%%% +M2Telescope + X1_Y1= 12.94 101.57 300.03 mm + X1_Y128= 24.43 9.53 329.29 mm + X128_Y1= 103.23 101.34 263.86 mm + X128_Y128= 114.74 9.30 293.11 mm + SI= 1 + SILI= 0 + CSI= 1 + VIS= all + + +%%%%%%% Telescope 4 %%%%%%% +M2Telescope + X1_Y1= 114.62 -13.35 292.81 mm + X1_Y128= 24.30 -13.44 328.89 mm + X128_Y1= 103.32 -105.63 264.21 mm + X128_Y128= 13.00 -105.74 300.28 mm + SI= 1 + SILI= 0 + CSI= 1 + VIS= all + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Mugast Trapezoid + DetectorNumber= 7 + X128_Y1= 44.063 102.884 -30.345 mm + X1_Y1= -47.423 102.884 -30.345 mm + X1_Y128= -14.275 35.783 -110.312 mm + X128_Y128= 10.915 35.783 -110.312 mm + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Mugast Trapezoid + DetectorNumber= 3 + X128_Y1= 111.464 -10.14 -30.345 mm + X1_Y1= 83.193 76.895 -30.345 mm + X1_Y128= 29.62 24.634 -110.312 mm + X128_Y128= 37.405 0.677 -110.312 mm +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Mugast Trapezoid + DetectorNumber= 1 + X128_Y1= 24.825 -109.134 -30.345 mm + X1_Y1= 98.84 -55.36 -30.345 mm + X1_Y128= 32.582 -20.558 -110.312 mm + X128_Y128= 12.202 -35.365 -110.312 mm +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Mugast Trapezoid + DetectorNumber= 5 + X128_Y1= -96.121 -57.335 -30.345 mm + X1_Y1= -22.107 -111.109 -30.345 mm + X1_Y128= -9.484 -37.34 -110.312 mm + X128_Y128= -29.863 -22.533 -110.312 mm +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Mugast Trapezoid + DetectorNumber= 4 + X128_Y1= -84.232 73.70 -30.345 mm + X1_Y1= -112.503 -13.31 -30.345 mm + X1_Y128= -38.443 -2.519 -110.312 mm + X128_Y128= -30.659 21.438 -110.312 mm + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +ZDD + R= 3505 mm + Theta= 0 deg +%ZDD DC +% Z= 1005.0 mm +% Thickness= 20 mm +% Gas= iC4H10 +% Pressure= 0.012 bar +% Temperature= 294 kelvin +% ZDD DC +% Z= 1030.0 mm +% Thickness= 20 mm +% Gas= iC4H10 +% Pressure= 0.012 bar +% Temperature= 294 kelvin +ZDD IC + NDet= 10 + ZofFirst= 1300. mm + Thickness= 20. mm + Gas= iC4H10 + Pressure= 0.3 bar + Temperature= 294 kelvin +ZDD Plastic + NDet= 5 + Material= EJ200 + Width= 220. mm + Length= 44. mm + Thickness= 20. mm + PosOfCentral= 0. 0. 1926.1 mm + diff --git a/Inputs/EventGenerator/neutron.source b/Inputs/EventGenerator/neutron.source index 9d673567edd2b32697e20d1b43ce36315b8afa2f..b69093c2f297b72eb9915026764133e72a5c8109 100755 --- a/Inputs/EventGenerator/neutron.source +++ b/Inputs/EventGenerator/neutron.source @@ -14,7 +14,7 @@ Isotropic % EnergyDistributionHist= hPFNS_jeff3.3.root PFNS_jeff_0 %EnergyDistribution= 0.38*sqrt(x)*exp(-x/0.847212) HalfOpenAngleMin= 0 - HalfOpenAngleMax= 180 + HalfOpenAngleMax= 30 x0= 0 y0= 0 z0= 0 mm diff --git a/NPData b/NPData index 5bc1c2ffec53a2e5fbf6f3b03c287c39f032323b..02d20d632631fe00a3bf1b83958c9b59048aed36 160000 --- a/NPData +++ b/NPData @@ -1 +1 @@ -Subproject commit 5bc1c2ffec53a2e5fbf6f3b03c287c39f032323b +Subproject commit 02d20d632631fe00a3bf1b83958c9b59048aed36 diff --git a/NPLib/Core/NPDetectorFactory.cxx b/NPLib/Core/NPDetectorFactory.cxx index 221fd2acc4ae4c0f9d9902e50fb1f3149f7330f0..ff92dec213b079d16cf88b1aebf3dc6f19fab8e0 100644 --- a/NPLib/Core/NPDetectorFactory.cxx +++ b/NPLib/Core/NPDetectorFactory.cxx @@ -112,13 +112,12 @@ NPL::VTreeReader* NPL::DetectorFactory::ConstructReader(std::string Token) { return m_ConstructReader[Token](); } else if (m_TokenLib.find(Token) != m_TokenLib.end()) { - std::cout << "In Token" << std::endl; + std::cout << "In Token : " << Token << std::endl; // Add absolute path to library name std::string path = getenv("NPTOOL"); - std::cout << "path : " << path << std::endl; std::string libName = path + "/NPLib/lib/" + m_TokenLib[Token]; dlopen(libName.c_str(), RTLD_NOW | RTLD_GLOBAL); - std::cout << "testtest " << libName.c_str() << std::endl; + std::cout << " Associated library : " << libName.c_str() << std::endl; char* LibError = dlerror(); if (m_ConstructReader.find(Token) != m_ConstructReader.end()) return m_ConstructReader[Token](); diff --git a/NPLib/Core/NPDetectorManager.cxx b/NPLib/Core/NPDetectorManager.cxx index 90b13fee1b5c268088e442ec5761d4a237042912..3d43157a2b4b20754b62d905ce2e0b031b1e7908 100644 --- a/NPLib/Core/NPDetectorManager.cxx +++ b/NPLib/Core/NPDetectorManager.cxx @@ -62,9 +62,13 @@ NPL::DetectorManager::DetectorManager(){ m_InitializeRootInputRawPtr = &NPL::VDetector::InitializeRootInputRaw; m_InitializeRootOutputPtr = &NPL::VDetector::InitializeRootOutput; m_InitializeRootHistogramsCalibPtr = &NPL::VDetector::InitializeRootHistogramsCalib; + m_InitializeRootHistogramsEfficiencyPtr = &NPL::VDetector::InitializeRootHistogramsEfficiency; m_FillHistogramsCalibPtr = &NPL::VDetector::FillHistogramsCalib; + m_FillHistogramsEfficiencyPtr = &NPL::VDetector::FillHistogramsEfficiency; m_WriteHistogramsCalibPtr = &NPL::VDetector::WriteHistogramsCalib; + m_WriteHistogramsEfficiencyPtr = &NPL::VDetector::WriteHistogramsEfficiency; m_DoCalibrationPtr = &NPL::VDetector::DoCalibration; + m_EfficiencyPtr = &NPL::VDetector::Efficiency; m_TestCalibrationPtr = &NPL::VDetector::TestCalibration; m_FillSpectra = NULL; m_CheckSpectra = NULL; @@ -163,6 +167,56 @@ void NPL::DetectorManager::ReadDoCalibrationFile(std::string Path) { // The calibration Manager got all the parameter added, so it can load them from the calibration file CalibrationManager::getInstance()->LoadParameterFromFile(); } + +void NPL::DetectorManager::ReadEfficiencyFile(std::string Path) { + NPL::InputParser parser(Path); + std::set<std::string> check; + std::vector<std::string> token = parser.GetAllBlocksToken(); + NPL::DetectorFactory* theFactory = NPL::DetectorFactory::getInstance(); + + std::string runToReadfileName = NPOptionManager::getInstance()->GetRunToReadFile(); + RootInput::getInstance(runToReadfileName); + if(NPOptionManager::getInstance()->GetCalibrationFile().compare("defaultCalibration.txt")!=0){ + std::cout << "-C option used, looking for Calibration parameters " <<NPOptionManager::getInstance()->GetCalibrationFile() << std::endl; + CalibrationManager::getInstance(NPOptionManager::getInstance()->GetCalibrationFile()); + } + else + std::cout << "-C option not used, no Calibration parameters loaded" << std::endl; + + + //////////////////////////////////////////// + /////////// Search for Detectors /////////// + //////////////////////////////////////////// + // Get the list of main token + + std::cout << "IN EFFICIENCY " << token.size() << std::endl; + // Look for detectors among them + for(unsigned int i = 0 ; i < token.size() ; i++){ + VDetector* detector = theFactory->Construct(token[i]); + VTreeReader* Reader = theFactory->ConstructReader(token[i]); + if(detector!=NULL && check.find(token[i])==check.end()){ + if(NPOptionManager::getInstance()->GetVerboseLevel()){ + std::cout << "/////////////////////////////////////////" << std::endl; + std::cout << "//// Adding Detector for Efficiency " << token[i] << std::endl; + } + detector->ReadEfficiency(parser); + if(NPOptionManager::getInstance()->GetVerboseLevel()) + std::cout << "/////////////////////////////////////////" << std::endl; + + // Add array to the VDetector Vector + std::cout << "IN EFFICIENCY " << token[i] << " " << detector << std::endl; + AddDetector(token[i], detector); + AddDetectorReader(token[i], Reader); + check.insert(token[i]); + } + else if(detector!=NULL){ + delete detector; + delete Reader; + } + } + // The calibration Manager got all the parameter added, so it can load them from the calibration file + CalibrationManager::getInstance()->LoadParameterFromFile(); +} /////////////////////////////////////////////////////////////////////////////// // Read stream at ConfigFile and pick-up Token declaration of Detector void NPL::DetectorManager::ReadConfigurationFile(std::string Path) { @@ -420,6 +474,14 @@ void NPL::DetectorManager::InitializeRootHistogramsCalib(){ } } +void NPL::DetectorManager::InitializeRootHistogramsEfficiency(){ + std::map<std::string,VDetector*>::iterator it; + + for (it = m_Detector.begin(); it != m_Detector.end(); ++it){ + (it->second->*m_InitializeRootHistogramsEfficiencyPtr)(); + } +} + /////////////////////////////////////////////////////////////////////////////// void NPL::DetectorManager::FillHistogramsCalib(){ std::map<std::string,VDetector*>::iterator it; @@ -433,6 +495,14 @@ void NPL::DetectorManager::FillHistogramsCalib(){ } } +void NPL::DetectorManager::FillHistogramsEfficiency(){ + std::map<std::string,VDetector*>::iterator it; + + for (it = m_Detector.begin(); it != m_Detector.end(); ++it){ + (it->second->*m_FillHistogramsEfficiencyPtr)(); + } +} + void NPL::DetectorManager::WriteHistogramsCalib(){ std::map<std::string,VDetector*>::iterator it; @@ -446,6 +516,15 @@ void NPL::DetectorManager::WriteHistogramsCalib(){ } } +void NPL::DetectorManager::WriteHistogramsEfficiency(){ + std::map<std::string,VDetector*>::iterator it; + + for (it = m_Detector.begin(); it != m_Detector.end(); ++it){ + //std::cout << "Test Write Histograms" << std::endl; + (it->second->*m_WriteHistogramsEfficiencyPtr)(); + } +} + void NPL::DetectorManager::DoCalibration(){ std::map<std::string,VDetector*>::iterator it; @@ -458,6 +537,14 @@ void NPL::DetectorManager::DoCalibration(){ } } +void NPL::DetectorManager::Efficiency(){ + std::map<std::string,VDetector*>::iterator it; + + for (it = m_Detector.begin(); it != m_Detector.end(); ++it){ + (it->second->*m_EfficiencyPtr)(); + } +} + void NPL::DetectorManager::TestCalibration(){ std::map<std::string,VDetector*>::iterator it; diff --git a/NPLib/Core/NPDetectorManager.h b/NPLib/Core/NPDetectorManager.h index 358faec2467d571105c65c6c2b44b3e538ea4f7a..46203fe4419f122821f2cccc328b0f17e1ff6d7b 100644 --- a/NPLib/Core/NPDetectorManager.h +++ b/NPLib/Core/NPDetectorManager.h @@ -55,13 +55,18 @@ namespace NPL{ public: void ReadConfigurationFile(std::string Path); void ReadDoCalibrationFile(std::string Path); + void ReadEfficiencyFile(std::string Path); void BuildPhysicalEvent(); void InitializeRootInput(); void InitializeRootOutput(); void InitializeRootHistogramsCalib(); + void InitializeRootHistogramsEfficiency(); void FillHistogramsCalib(); + void FillHistogramsEfficiency(); void WriteHistogramsCalib(); + void WriteHistogramsEfficiency(); void DoCalibration(); + void Efficiency(); void TestCalibration(); void SetTreeReader(TTreeReader* TreeReader); void AddDetector(std::string,VDetector*); @@ -105,9 +110,13 @@ namespace NPL{ VDetector_FuncPtr m_InitializeRootInputRawPtr; VDetector_FuncPtr m_InitializeRootOutputPtr; VDetector_FuncPtr m_InitializeRootHistogramsCalibPtr; + VDetector_FuncPtr m_InitializeRootHistogramsEfficiencyPtr; VDetector_FuncPtr m_FillHistogramsCalibPtr; + VDetector_FuncPtr m_FillHistogramsEfficiencyPtr; VDetector_FuncPtr m_WriteHistogramsCalibPtr; + VDetector_FuncPtr m_WriteHistogramsEfficiencyPtr; VDetector_FuncPtr m_DoCalibrationPtr; + VDetector_FuncPtr m_EfficiencyPtr; VDetector_FuncPtr m_TestCalibrationPtr; VDetector_SetReader m_SetTreeReaderPtr; VDetector_FuncPtr m_FillSpectra; diff --git a/NPLib/Core/NPOptionManager.cxx b/NPLib/Core/NPOptionManager.cxx index 2c22cd4853e95279521f14d8ea79497b1374a0a6..9069a8d5c3c32b0559c0d7a17c0b63d4d27f9f7b 100644 --- a/NPLib/Core/NPOptionManager.cxx +++ b/NPLib/Core/NPOptionManager.cxx @@ -69,6 +69,9 @@ void NPOptionManager::ReadProjectConfigFile(){ if(blocks[i]->HasToken("CalibrationOutput")) m_CalibrationOutputPath = blocks[i]->GetString("CalibrationOutput"); + if(blocks[i]->HasToken("EfficiencyOutput")) + m_EfficiencyOutputPath = blocks[i]->GetString("EfficiencyOutput"); + if(blocks[i]->HasToken("EnergyLoss")) m_EnergyLossPath = blocks[i]->GetString("EnergyLoss"); @@ -86,10 +89,12 @@ void NPOptionManager::ReadProjectConfigFile(){ m_AnalysisOutputPath=Path+"/Outputs/Analysis/"; m_SimulationOutputPath=Path+"/Outputs/Simulation/"; m_CalibrationOutputPath=Path+"/Outputs/Calibration/"; + m_EfficiencyOutputPath=Path+"/Outputs/Efficiency/"; m_EnergyLossPath=Path+"/Inputs/EnergyLoss/"; std::cout << "AnalysisOutput= " << m_AnalysisOutputPath << std::endl; std::cout << "SimulationOutput= " << m_SimulationOutputPath << std::endl; std::cout << "CalibrationOutput= " << m_CalibrationOutputPath << std::endl; + std::cout << "EfficiencyOutput= " << m_EfficiencyOutputPath << std::endl; std::cout << "EnergyLoss= " << m_EnergyLossPath << std::endl; } } @@ -107,6 +112,7 @@ void NPOptionManager::ReadTheInputArgument(int argc, char** argv){ fDefaultRunToReadFileName = "defaultRunToTreat.txt"; fDefaultCalibrationFileName = "defaultCalibration.txt"; fDefaultDoCalibrationFileName = "defaultDoCalibration.txt"; + fDefaultEfficiencyFileName = "defaultEfficiency.txt"; fDefaultG4MacroPath = "defaultG4MacroPath.txt"; // Assigned values fReactionFileName = fDefaultReactionFileName; @@ -115,6 +121,7 @@ void NPOptionManager::ReadTheInputArgument(int argc, char** argv){ fOutputTreeName = fDefaultOutputTreeName; fRunToReadFileName = fDefaultRunToReadFileName; fCalibrationFileName = fDefaultCalibrationFileName; + fEfficiencyFileName = fDefaultEfficiencyFileName; fG4MacroPath = fDefaultG4MacroPath; fIsSplit = false; fLastSimFile = false; @@ -232,6 +239,8 @@ void NPOptionManager::ReadTheInputArgument(int argc, char** argv){ else if (argument == "-DC" && argc >= i + 1) fDoCalibrationFileName = argv[++i] ; + else if (argument == "-EF" && argc >= i + 1) fEfficiencyFileName = argv[++i] ; + else if (argument == "-TC") fTestCalibration = true; else{ @@ -365,6 +374,36 @@ void NPOptionManager::CheckDoCalibrationConfiguration(){ // close ConfigFile ConfigFile.close(); +} + +void NPOptionManager::CheckEfficiencyConfiguration(){ + bool checkFile = true; + + // NPTool path + std::string GlobalPath = getenv("NPTOOL"); + std::string StandardPath = GlobalPath + "/Inputs/EfficiencyConfiguration/" + fDoCalibrationFileName; + + // ifstream to configfile + std::ifstream ConfigFile; + + // test if config file is in local path + ConfigFile.open(fEfficiencyFileName.c_str()); + if (!ConfigFile.is_open()) { + ConfigFile.open(StandardPath.c_str()); + if (!ConfigFile.is_open()) { // if not, assign standard path + checkFile = false; + } + else { + fEfficiencyFileName = StandardPath; + } + } + if (!checkFile && fEfficiencyFileName != fDefaultEfficiencyFileName) { // if file does not exist + SendErrorAndExit("EfficiencyConfiguration"); + } + + // close ConfigFile + ConfigFile.close(); + } //////////////////////////////////////////////////////////////////////////////// void NPOptionManager::CheckDetectorConfiguration(){ @@ -431,6 +470,9 @@ bool NPOptionManager::IsDefault(const char* type) const{ else if (stype == "DoCalibration") { if (fDoCalibrationFileName == fDefaultDoCalibrationFileName) result = true; } + else if (stype == "Efficiency") { + if (fEfficiencyFileName == fDefaultEfficiencyFileName) result = true; + } else if (stype == "RunToTreat") { if (fRunToReadFileName == fDefaultRunToReadFileName) result = true; } diff --git a/NPLib/Core/NPOptionManager.h b/NPLib/Core/NPOptionManager.h index c830508425153d14ca67538ba67ac72f529ec6bc..a6260c285412272045b44a2119ab65f2cfbd26e5 100644 --- a/NPLib/Core/NPOptionManager.h +++ b/NPLib/Core/NPOptionManager.h @@ -74,6 +74,7 @@ class NPOptionManager{ void CheckEventGenerator(); void CheckDetectorConfiguration(); void CheckDoCalibrationConfiguration(); + void CheckEfficiencyConfiguration(); void CheckG4Macro(); void CreateRunToTreatFile(std::string file, std::string tree ); public: @@ -87,6 +88,8 @@ class NPOptionManager{ std::string GetDefaultDetectorFile() {return fDefaultDetectorFileName;} std::string GetDefaultRunToReadFile() {return fDefaultRunToReadFileName;} std::string GetDefaultCalibrationFile() {return fDefaultCalibrationFileName;} + std::string GetDefaultDoCalibrationFile(){return fDefaultDoCalibrationFileName;} + std::string GetDefaultEfficiencyFile() {return fDefaultEfficiencyFileName;} std::string GetDefaultOutputFile() {return fDefaultOutputFileName;} std::string GetDefaultG4MacroPath() {return fDefaultG4MacroPath;} @@ -96,6 +99,7 @@ class NPOptionManager{ std::string GetRunToReadFile() {return fRunToReadFileName;} std::string GetCalibrationFile() {return fCalibrationFileName;} std::string GetDoCalibrationFile() {return fDoCalibrationFileName;} + std::string GetEfficiencyFile() {return fEfficiencyFileName;} std::string GetOutputFile() {return fOutputFileName;} std::string GetOutputTreeName() {return fOutputTreeName;} std::string GetG4MacroPath() {return fG4MacroPath;} @@ -110,6 +114,7 @@ class NPOptionManager{ bool IsAnalysis() {return fIsAnalysis;}; bool IsSimulation() {return fIsSimulation;} bool IsCalibration() {return fIsCalibration;} + bool IsEfficiency() {return fIsEfficiency;} bool IsReader() {return fReader;} bool IsSplit() {return fIsSplit;} bool IsTestCalibration() {return fTestCalibration;} @@ -126,21 +131,25 @@ class NPOptionManager{ std::string GetAnalysisOutputPath(){return m_AnalysisOutputPath;}; std::string GetSimulationOutputPath(){return m_SimulationOutputPath;}; std::string GetCalibrationOutputPath(){return m_CalibrationOutputPath;}; + std::string GetEfficiencyOutputPath(){return m_EfficiencyOutputPath;}; std::string GetEnergyLossPath(){return m_EnergyLossPath;}; std::string GetCutsPath(){return m_CutsPath;}; // Setters void SetReactionFile(const std::string& name) {fReactionFileName = name;CheckEventGenerator();} void SetDetectorFile(const std::string& name) {fDetectorFileName = name;CheckDetectorConfiguration();} void SetDoCalibrationFile(const std::string& name) {fDoCalibrationFileName = name;CheckDoCalibrationConfiguration();} + void SetEfficiencyFile(const std::string& name) {fEfficiencyFileName = name;CheckEfficiencyConfiguration();} void SetRunToReadFile(const std::string& name) {fRunToReadFileName = name;} void SetVerboseLevel(int VerboseLevel) {fVerboseLevel = VerboseLevel;} void SetIsAnalysis(bool val=true){fIsAnalysis=val;}; void SetIsSimulation(bool val=true){fIsSimulation=val;} void SetIsCalibration(bool val=true){fIsCalibration=val;} + void SetIsEfficiency(bool val=true){fIsEfficiency=val;} void SetReader(bool reader=false){fReader=reader;} public: // user definition bool HasDefinition(std::string def) {return(fDefinition.find(def)!=fDefinition.end());} + int GetNumberDefinition(){return fDefinition.size();} private: // default values @@ -148,6 +157,7 @@ class NPOptionManager{ std::string fDefaultDetectorFileName; std::string fDefaultRunToReadFileName; std::string fDefaultCalibrationFileName; + std::string fDefaultEfficiencyFileName; std::string fDefaultDoCalibrationFileName; std::string fDefaultOutputFileName; std::string fDefaultOutputTreeName; @@ -159,6 +169,7 @@ class NPOptionManager{ std::string fRunToReadFileName; std::string fCalibrationFileName; std::string fDoCalibrationFileName; + std::string fEfficiencyFileName; std::string fOutputFileName; std::string fOutputTreeName; bool fIsSplit; // One tree per detector @@ -175,6 +186,7 @@ class NPOptionManager{ bool fIsAnalysis; bool fIsSimulation; bool fIsCalibration; + bool fIsEfficiency; bool fReader; bool fTestCalibration; int fVerboseLevel; // 0 for not talk, 1 for talking @@ -191,6 +203,7 @@ class NPOptionManager{ std::string m_AnalysisOutputPath;// output path of analysed tree std::string m_SimulationOutputPath;// output path of simulated tree std::string m_CalibrationOutputPath;// output path of calibration histograms + std::string m_EfficiencyOutputPath;// output path of efficiency histograms std::string m_EnergyLossPath;// input/output path of energy loss table std::string m_CutsPath;// CutsPath diff --git a/NPLib/Core/NPVDetector.h b/NPLib/Core/NPVDetector.h index 4d59f1c8c145b8928523247c054c9502f987fbb0..633e877d3435b9ae6b63b9fc5df80049d7dfea82 100644 --- a/NPLib/Core/NPVDetector.h +++ b/NPLib/Core/NPVDetector.h @@ -53,6 +53,9 @@ namespace NPL { // Read stream at DoCalibration to pick-up which parameters to calibrate (Position,...) using Token virtual void ReadDoCalibration(NPL::InputParser){}; + + // Read stream at DoCalibration to pick-up which parameters to calibrate (Position,...) using Token + virtual void ReadEfficiency(NPL::InputParser){}; // Add Parameter to the CalibrationManger virtual void AddParameterToCalibrationManager(){}; @@ -71,14 +74,25 @@ namespace NPL { // Create folders and histograms for calibration virtual void InitializeRootHistogramsCalib(){}; + // Create folders and histograms for calibration + virtual void InitializeRootHistogramsEfficiency(){}; + // Fill histograms for calibration virtual void FillHistogramsCalib(){}; + // Fill histograms for calibration + virtual void FillHistogramsEfficiency(){}; + // Write histograms for calibration virtual void WriteHistogramsCalib(){}; + // Write histograms for calibration + virtual void WriteHistogramsEfficiency(){}; + virtual void DoCalibration(){}; + + virtual void Efficiency(){}; // This method is called at each event read from the Input Tree. Aime is to build treat Raw dat in order to extract // physical parameter. diff --git a/NPLib/Core/RootHistogramsCalib.cxx b/NPLib/Core/RootHistogramsCalib.cxx index 7298d9f52f548dfdc1d4928a22b16d2bfbd68c57..771c593402f9479e29a08adda6c9a209253c6426 100644 --- a/NPLib/Core/RootHistogramsCalib.cxx +++ b/NPLib/Core/RootHistogramsCalib.cxx @@ -65,6 +65,8 @@ RootHistogramsCalib::RootHistogramsCalib(std::string fileNameBase){ // Setup the base name if(calibration) pBaseName = NPOptionManager::getInstance()->GetCalibrationOutputPath(); + else if(NPOptionManager::getInstance()->IsEfficiency()) + pBaseName = NPOptionManager::getInstance()->GetEfficiencyOutputPath(); else pBaseName="./"; diff --git a/NPLib/Core/RootHistogramsCalib.h b/NPLib/Core/RootHistogramsCalib.h index fa6dccbc12671e3a702f50b2b619672ed2f92889..12819ba8eefd91df9ba18520070c6daa14e369e4 100644 --- a/NPLib/Core/RootHistogramsCalib.h +++ b/NPLib/Core/RootHistogramsCalib.h @@ -37,6 +37,7 @@ #include "TFile.h" #include "TTree.h" #include "TList.h" +#include "TCanvas.h" #include <string> class RootHistogramsCalib{ @@ -78,6 +79,7 @@ public: std::map<TString,std::map<TString,TGraphErrors*>>* GetTGraphMap(){return TGraphMap;}; std::map<TString,std::map<TString,TCutG*>>* GetTCutGMap(){return TCutGMap;}; std::map<TString,std::map<TString,TFile*>>* GetTFileMap(){return TFileMap;}; + std::map<TString,std::map<TString,TCanvas*>>* GetTCanvasMap(){return TCanvasMap;}; void Fill(); private: @@ -90,6 +92,7 @@ private: std::map<TString,std::map<TString,TGraphErrors*>>* TGraphMap = new std::map<TString,std::map<TString,TGraphErrors*>>; std::map<TString,std::map<TString,TCutG*>>* TCutGMap = new std::map<TString,std::map<TString,TCutG*>>; std::map<TString,std::map<TString,TFile*>>* TFileMap = new std::map<TString,std::map<TString,TFile*>>; + std::map<TString,std::map<TString,TCanvas*>>* TCanvasMap = new std::map<TString,std::map<TString,TCanvas*>>; }; #endif // ROOTHISTOCALIB_HH diff --git a/NPLib/Detectors/Epic/TEpicData.cxx b/NPLib/Detectors/Epic/TEpicData.cxx index a97f178a8d6710fa5d903680b451dc9f7e31ffd1..d754eb4fa5af4b0c7847458b1598a56bc49fded4 100644 --- a/NPLib/Detectors/Epic/TEpicData.cxx +++ b/NPLib/Detectors/Epic/TEpicData.cxx @@ -50,10 +50,8 @@ void TEpicData::Dump() const { cout << "MultAnodes = : " << mysize << endl; for (size_t i = 0 ; i < mysize ; i++){ - cout << "AnodeNbr: " << GetAnodeNbr(i) - << " Q1: " << GetQ1(i) - << " Q2: " << GetQ2(i) - << " Qmax: " << GetQmax(i) - << " Time: " << GetTime(i) << endl; + cout << "==================================" << endl; + cout << "TRACKID #" << GetTrackID(i) << ": Particle |" << GetParticleName(i) << "|" + << " Q1: " << GetQ1(i) << " Time: " << GetTime(i) << endl; } } diff --git a/NPLib/Detectors/Epic/TEpicData.h b/NPLib/Detectors/Epic/TEpicData.h index ab3bc580d7871fa56c24a99322e1544573a6807c..c51028fc434bea1d93a27dd0fe680c99de6efbd6 100644 --- a/NPLib/Detectors/Epic/TEpicData.h +++ b/NPLib/Detectors/Epic/TEpicData.h @@ -29,42 +29,41 @@ using namespace std; // ROOT #include "TObject.h" +class ElectronsStep{ + + private: + int num_electrons; + double t_creation; + + public: + ElectronsStep(int n, double t) : num_electrons(n), t_creation(t){ } + + ClassDef(ElectronsStep, 1) // ROOT macro for dictionary +}; + class TEpicData : public TObject { public: + // per TrackID + struct EpicAnodeData { - UShort_t AnodeNbr; - Double_t Q1; - Double_t Q2; - Double_t Qmax; - Double_t Time; - Double_t Time_HF; - Double_t ToF; - Bool_t isFakeFission; - // vector of {Zstep, DEstep, DTstep} - std::vector<string> ParticleName; - std::vector<int> ParentID; - std::vector<int> TrackID; - std::vector<Double_t> PosZ; - std::vector<Double_t> DE; - std::vector<Double_t> DT; // DT=Ti-T0, with T0=Tfission or Talpha - - // Getters - UShort_t GetAnodeNbr() const { return AnodeNbr; } - Double_t GetQ1() const { return Q1; } - Double_t GetQ2() const { return Q2; } - Double_t GetQmax() const { return Qmax; } - Double_t GetTime() const { return Time; } - Double_t GetTimeHF() const { return Time_HF; } - Double_t GetToF() const { return ToF; } - Bool_t IsFakeFission() const { return isFakeFission; } - const std::vector<string>& GetParticleName() const { return ParticleName; } - const std::vector<int>& GetParentID() const { return ParentID; } - const std::vector<int>& GetTrackID() const { return TrackID; } - const std::vector<Double_t>& GetPosZ() const { return PosZ; } - const std::vector<Double_t>& GetDE() const { return DE; } - const std::vector<Double_t>& GetDT() const { return DT; } + int TrackID; + string ParticleName; + UShort_t AnodeNbr; + Double_t Q1; + Double_t Time; + vector<int> n_electrons_step; + vector<double> t_creation_step; + + // Getters + int GetTrackID() const { return TrackID; } + string GetParticleName() const { return ParticleName; } + UShort_t GetAnodeNbr() const { return AnodeNbr; } + Double_t GetQ1() const { return Q1; } + Double_t GetTime() const { return Time; } + const vector<int>& GetNumElectronsPerStep() const { return n_electrons_step; } + const vector<double>& GetTimeCreationElectronsPerStep() const { return t_creation_step; } }; ////////////////////////////////////////////////////////////// @@ -95,30 +94,23 @@ class TEpicData : public TObject { // add //! to avoid ROOT creating dictionnary for the methods public: ////////////////////// SETTERS //////////////////////// - void Set(const UShort_t& n, const Double_t& q1, const Double_t& q2, const Double_t& qmax, - const Double_t& t, const Double_t& thf, const Double_t& tof, const Bool_t& fake, - const std::vector<string>& name, const std::vector<int>& pid, const std::vector<int>& tid, - const std::vector<double>& z, const std::vector<double>& de, const std::vector<double>& dt) { - fEpic_Data.push_back({n, q1, q2, qmax, t, thf, tof, fake, name, pid, tid, z, de, dt}); + void Set(const int& tid, const string& name, const UShort_t& n, const Double_t& q1, const Double_t& t, + const vector<int> num, const vector<double> t_creation) { + fEpic_Data.push_back({tid, name, n, q1, t, num, t_creation}); } const EpicAnodeData& operator[](const unsigned int& i) const {return fEpic_Data[i];} //////////////////////// GETTERS //////////////////////// - inline UShort_t GetMultiplicity() const {return fEpic_Data.size();} - UShort_t GetAnodeNbr(const unsigned short& i) const { return fEpic_Data[i].AnodeNbr; } - Double_t GetQ1(const unsigned int& i) const { return fEpic_Data[i].Q1; } - Double_t GetQ2(const unsigned int& i) const { return fEpic_Data[i].Q2; } - Double_t GetQmax(const unsigned int& i) const { return fEpic_Data[i].Qmax; } - Double_t GetTime(const unsigned int& i) const { return fEpic_Data[i].Time; } - Double_t GetTimeHF(const unsigned int& i) const { return fEpic_Data[i].Time_HF; } - Double_t GetToF(const unsigned int& i) const { return fEpic_Data[i].ToF; } - Bool_t GetFakeFissionStatus(const unsigned int& i) const { return fEpic_Data[i].isFakeFission; } - const std::vector<string>& GetParticleName(const unsigned int& i) const { return fEpic_Data[i].ParticleName; } - const std::vector<int>& GetParentID(const unsigned int& i) const { return fEpic_Data[i].ParentID; } - const std::vector<int>& GetTrackID(const unsigned int& i) const { return fEpic_Data[i].TrackID; } - const std::vector<Double_t>& GetPosZ(const unsigned int& i) const { return fEpic_Data[i].PosZ; } - const std::vector<Double_t>& GetDE(const unsigned int& i) const { return fEpic_Data[i].DE; } - const std::vector<Double_t>& GetDT(const unsigned int& i) const { return fEpic_Data[i].DT; } + inline UShort_t GetMultiplicity() const {return fEpic_Data.size();} // num of particles in the sensitive volume + int GetTrackID(const unsigned int& i) const { return fEpic_Data[i].TrackID; } // trackID of the particle + string GetParticleName(const unsigned int& i) const { return fEpic_Data[i].ParticleName; } // particle name + UShort_t GetAnodeNbr(const unsigned short& i) const { return fEpic_Data[i].AnodeNbr; } // sensitive volume + Double_t GetQ1(const unsigned int& i) const { return fEpic_Data[i].Q1; } // Q1 on all the sensitive volume + Double_t GetTime(const unsigned int& i) const { return fEpic_Data[i].Time; } // absolute time from the first particle emission + inline UShort_t GetNumberOfSteps(const unsigned int&i) const { return fEpic_Data[i].t_creation_step.size(); } // num fix-dz-length steps of the particle + const vector<int>& GetNumElectronsPerStep(const unsigned int& i)const { return fEpic_Data[i].n_electrons_step; } // num of e- created per step + const vector<double>& GetTimeCreationElectronsPerStep(const unsigned int& i)const { return fEpic_Data[i].t_creation_step; } // absolute time of e- creation + ////////////////////////////////////////////////////////////// // Required for ROOT dictionnary ClassDef(TEpicData,1) // EpicData structure diff --git a/NPLib/Detectors/Epic/TEpicData.rootmap b/NPLib/Detectors/Epic/TEpicData.rootmap deleted file mode 100644 index a4616a909a3713417de63f9af1395f688bb5e125..0000000000000000000000000000000000000000 --- a/NPLib/Detectors/Epic/TEpicData.rootmap +++ /dev/null @@ -1,4 +0,0 @@ -[ libNPEpic.so ] -# List of selected classes -class TEpicData -header TEpicData.h diff --git a/NPLib/Detectors/Epic/TEpicPhysics.cxx b/NPLib/Detectors/Epic/TEpicPhysics.cxx index 1d09de7058ca75b6f0bbadecb3637c0ea5535687..db0806165c3cb239ab891d772f3347ba4ed52828 100644 --- a/NPLib/Detectors/Epic/TEpicPhysics.cxx +++ b/NPLib/Detectors/Epic/TEpicPhysics.cxx @@ -88,13 +88,8 @@ void TEpicPhysics::BuildPhysicalEvent() { int A = m_EventData->GetAnodeNbr(e); AnodeNumber.push_back(m_PreTreatedData->GetAnodeNbr(e)); Q1.push_back(m_PreTreatedData->GetQ1(e)); - Q2.push_back(m_PreTreatedData->GetQ2(e)); - Qmax.push_back(m_PreTreatedData->GetQmax(e)); Time.push_back(m_PreTreatedData->GetTime(e)); - isFakeFission.push_back(m_PreTreatedData->GetFakeFissionStatus(e)); - Time_HF.push_back(m_PreTreatedData->GetTimeHF(e)); - ToF.push_back(m_PreTreatedData->GetToF(e)); } } @@ -118,22 +113,11 @@ void TEpicPhysics::PreTreat() { double TimeOffset = 0; TimeOffset = Cal->GetValue("Epic/ANODE"+NPL::itoa(AnodeNumber)+"_TIMEOFFSET",0); double Time = m_EventData->GetTime(i); - double TimeHF = m_EventData->GetTimeHF(i); - double tof = Time - TimeHF - TimeOffset; - if(tof < 0){ - tof += Cal->GetValue("Epic/PULSE_TIMEOFFSET",0) ; - } - m_PreTreatedData->Set(AnodeNumber, Q1, - m_EventData->GetQ2(i), - m_EventData->GetQmax(i), - Time, TimeHF, tof, - m_EventData->GetFakeFissionStatus(i), + m_PreTreatedData->Set(m_EventData->GetTrackID(i), m_EventData->GetParticleName(i), - m_EventData->GetParentID(i), - m_EventData->GetTrackID(i), - m_EventData->GetPosZ(i), - m_EventData->GetDE(i), - m_EventData->GetDT(i)); + AnodeNumber, Q1, Time, + m_EventData->GetNumElectronsPerStep(i), + m_EventData->GetTimeCreationElectronsPerStep(i)); } } @@ -209,12 +193,7 @@ void TEpicPhysics::ReadAnalysisConfig() { void TEpicPhysics::Clear() { AnodeNumber.clear(); Q1.clear(); - Q2.clear(); - Qmax.clear(); Time.clear(); - Time_HF.clear(); - ToF.clear(); - isFakeFission.clear(); DT_FC.clear(); } diff --git a/NPLib/Detectors/Epic/TEpicPhysics.h b/NPLib/Detectors/Epic/TEpicPhysics.h index 6223dc2942ddcf45182de5446c0a9d94157a1043..8733238496be6f7ba2ecf7d4b07beb6b650a1c46 100644 --- a/NPLib/Detectors/Epic/TEpicPhysics.h +++ b/NPLib/Detectors/Epic/TEpicPhysics.h @@ -64,12 +64,7 @@ class TEpicPhysics : public TObject, public NPL::VDetector { public: vector<int> AnodeNumber; vector<double> Q1; - vector<double> Q2; - vector<double> Qmax; vector<double> Time; - vector<bool> isFakeFission; - vector<double> Time_HF; - vector<double> ToF; vector<double> DT_FC; /// A usefull method to bundle all operation to add a detector diff --git a/NPLib/Detectors/Exogam/CMakeLists.txt b/NPLib/Detectors/Exogam/CMakeLists.txt index d2b9eec2edd75dbfda811b24010eae6efd570074..6c9459d8ef0a40e770020916418b507053fd84d3 100644 --- a/NPLib/Detectors/Exogam/CMakeLists.txt +++ b/NPLib/Detectors/Exogam/CMakeLists.txt @@ -2,11 +2,11 @@ add_custom_command(OUTPUT TExogamPhysicsDict.cxx COMMAND ${CMAKE_BINARY_DIR}/scr add_custom_command(OUTPUT TExogamDataDict.cxx COMMAND ${CMAKE_BINARY_DIR}/scripts/build_dict.sh TExogamData.h TExogamDataDict.cxx TExogamData.rootmap libNPExogam.dylib DEPENDS TExogamData.h) add_custom_command(OUTPUT TExogamCalDataDict.cxx COMMAND ${CMAKE_BINARY_DIR}/scripts/build_dict.sh TExogamCalData.h TExogamCalDataDict.cxx TExogamCalData.rootmap libNPExogam.dylib DEPENDS TExogamCalData.h) add_custom_command(OUTPUT TExogamPhysicsReaderDict.cxx COMMAND ${CMAKE_BINARY_DIR}/scripts/build_dict.sh TExogamPhysicsReader.h TExogamPhysicsReaderDict.cxx TExogamPhysicsReader.rootmap libNPExogam.dylib DEPENDS TExogamPhysicsReader.h) -add_library(NPExogam SHARED TExogamCalData.cxx TExogamData.cxx TExogamPhysics.cxx TExogamPhysicsReader.cxx TExogamCalDataDict.cxx TExogamDataDict.cxx TExogamPhysicsDict.cxx TExogamPhysicsReaderDict.cxx TExogamSpectra.cxx) +add_library(NPExogam SHARED TExogamCalData.cxx TExogamData.cxx TExogamPhysics.cxx TExogamPhysicsReader.cxx TExogamGeo.cxx TExogamCalDataDict.cxx TExogamDataDict.cxx TExogamPhysicsDict.cxx TExogamPhysicsReaderDict.cxx TExogamSpectra.cxx) if(CUBIX) target_link_libraries(NPExogam ${ROOT_LIBRARIES} ${CUBIX_LIBRARIES} -lTreePlayer -lSpectrum NPCore NPPhysics) else() target_link_libraries(NPExogam ${ROOT_LIBRARIES} -lTreePlayer -lSpectrum NPCore NPPhysics) endif() -install(FILES Geometry_Clover_Exogam.h TExogamCalData.h TExogamData.h TExogamPhysics.h TExogamSpectra.h TExogamPhysicsReader.h DESTINATION ${CMAKE_INCLUDE_OUTPUT_DIRECTORY}) +install(FILES Geometry_Clover_Exogam.h TExogamCalData.h TExogamData.h TExogamPhysics.h TExogamSpectra.h TExogamPhysicsReader.h TExogamGeo.h DESTINATION ${CMAKE_INCLUDE_OUTPUT_DIRECTORY}) diff --git a/NPLib/Detectors/Exogam/CoherentGe.xcom b/NPLib/Detectors/Exogam/CoherentGe.xcom new file mode 100644 index 0000000000000000000000000000000000000000..6617daf970e482c6dde10727cd69e60b4f3fac2d --- /dev/null +++ b/NPLib/Detectors/Exogam/CoherentGe.xcom @@ -0,0 +1,17 @@ +1.000E-01 5.045E-01 +1.500E-01 2.250E-01 +2.000E-01 1.521E-01 +3.000E-01 1.067E-01 +4.000E-01 8.960E-02 +5.000E-01 7.974E-02 +6.000E-01 7.287E-02 +8.000E-01 6.332E-02 +1.000E+00 5.667E-02 +1.022E+00 5.605E-02 +1.250E+00 5.062E-02 +1.500E+00 4.630E-02 +2.000E+00 4.071E-02 +2.044E+00 4.034E-02 +3.000E+00 3.518E-02 +4.000E+00 3.271E-02 +5.000E+00 3.156E-02 \ No newline at end of file diff --git a/NPLib/Detectors/Exogam/Geometry_Clover_Exogam.h b/NPLib/Detectors/Exogam/Geometry_Clover_Exogam.h index b47d8e44adbfd51b18f571b69eec22b902071780..e118cf6d7a864b600c1496069642b22e893748b7 100644 --- a/NPLib/Detectors/Exogam/Geometry_Clover_Exogam.h +++ b/NPLib/Detectors/Exogam/Geometry_Clover_Exogam.h @@ -120,7 +120,7 @@ struct Clover_struc { #define TARGET_POSITION_X 0. // mm #define TARGET_POSITION_Y 0. // mm // #define TARGET_POSITION_Z 0. // mm -#define InteractionDepth 20. // mm +// #define InteractionDepth 20. // mm inline struct Clover_struc Ask_For_Angles(int flange, double InterDepth, double Position, double TargetZ){ // Position in mm @@ -165,6 +165,7 @@ TVector3 v3(0,0,1); //Clover position flange12.SetTheta(90.0*TMath::Pi()/180.0); flange12.SetPhi(0.0*TMath::Pi()/180.0); + // flange12.SetMag(Result.D_CloveFlange_Targ_Map[flange]+InterDepth); flange12.SetMag(Result.D_CloveFlange_Targ_Map[flange]); @@ -196,85 +197,105 @@ float EXOGAM_Segment_Pos1,EXOGAM_Segment_Pos2 ; //Crystal A flange12Crist[0].SetY(flange12.Y()+(EXOGAM_Crystal_Center)); flange12Crist[0].SetZ(flange12.Z()-(EXOGAM_Crystal_Center)); + // flange12Crist[0].SetX(Result.D_CloveFlange_Targ_Map[flange]+InterDepth); flange12Crist[0].SetX(Result.D_CloveFlange_Targ_Map[flange]); //segment1 flange12CristSeg[0][0].SetY(flange12.Y()+(EXOGAM_Segment_Pos1)); //gd flange12CristSeg[0][0].SetZ(flange12.Z()-(EXOGAM_Segment_Pos1)); //gd + // flange12CristSeg[0][0].SetX(Result.D_CloveFlange_Targ_Map[flange]+InterDepth); flange12CristSeg[0][0].SetX(Result.D_CloveFlange_Targ_Map[flange]); //segment2 flange12CristSeg[0][1].SetY(flange12.Y()+(EXOGAM_Segment_Pos2)); flange12CristSeg[0][1].SetZ(flange12.Z()-(EXOGAM_Segment_Pos1)); + // flange12CristSeg[0][1].SetX(Result.D_CloveFlange_Targ_Map[flange]+InterDepth); flange12CristSeg[0][1].SetX(Result.D_CloveFlange_Targ_Map[flange]); //segment3 flange12CristSeg[0][2].SetY(flange12.Y()+(EXOGAM_Segment_Pos2)); flange12CristSeg[0][2].SetZ(flange12.Z()-(EXOGAM_Segment_Pos2)); + // flange12CristSeg[0][2].SetX(Result.D_CloveFlange_Targ_Map[flange]+InterDepth); flange12CristSeg[0][2].SetX(Result.D_CloveFlange_Targ_Map[flange]); //segment4 flange12CristSeg[0][3].SetY(flange12.Y()+(EXOGAM_Segment_Pos1)); flange12CristSeg[0][3].SetZ(flange12.Z()-(EXOGAM_Segment_Pos2)); + // flange12CristSeg[0][3].SetX(Result.D_CloveFlange_Targ_Map[flange]+InterDepth); flange12CristSeg[0][3].SetX(Result.D_CloveFlange_Targ_Map[flange]); //Crystal B flange12Crist[1].SetY(flange12.Y()-(EXOGAM_Crystal_Center)); flange12Crist[1].SetZ(flange12.Z()-(EXOGAM_Crystal_Center)); + // flange12Crist[1].SetX(Result.D_CloveFlange_Targ_Map[flange]+InterDepth); flange12Crist[1].SetX(Result.D_CloveFlange_Targ_Map[flange]); //segment1 flange12CristSeg[1][0].SetY(flange12.Y()-(EXOGAM_Segment_Pos1)); flange12CristSeg[1][0].SetZ(flange12.Z()-(EXOGAM_Segment_Pos1)); + // flange12CristSeg[1][0].SetX(Result.D_CloveFlange_Targ_Map[flange]+InterDepth); flange12CristSeg[1][0].SetX(Result.D_CloveFlange_Targ_Map[flange]); //segment2 flange12CristSeg[1][1].SetY(flange12.Y()-(EXOGAM_Segment_Pos1)); flange12CristSeg[1][1].SetZ(flange12.Z()-(EXOGAM_Segment_Pos2)); + // flange12CristSeg[1][1].SetX(Result.D_CloveFlange_Targ_Map[flange]+InterDepth); flange12CristSeg[1][1].SetX(Result.D_CloveFlange_Targ_Map[flange]); //segment3 flange12CristSeg[1][2].SetY(flange12.Y()-(EXOGAM_Segment_Pos2)); flange12CristSeg[1][2].SetZ(flange12.Z()-(EXOGAM_Segment_Pos2)); + // flange12CristSeg[1][2].SetX(Result.D_CloveFlange_Targ_Map[flange]+InterDepth); flange12CristSeg[1][2].SetX(Result.D_CloveFlange_Targ_Map[flange]); //segment4 flange12CristSeg[1][3].SetY(flange12.Y()-(EXOGAM_Segment_Pos2)); flange12CristSeg[1][3].SetZ(flange12.Z()-(EXOGAM_Segment_Pos1)); + // flange12CristSeg[1][3].SetX(Result.D_CloveFlange_Targ_Map[flange]+InterDepth); flange12CristSeg[1][3].SetX(Result.D_CloveFlange_Targ_Map[flange]); //Crystal C flange12Crist[2].SetY(flange12.Y()-(EXOGAM_Crystal_Center)); flange12Crist[2].SetZ(flange12.Z()+(EXOGAM_Crystal_Center)); + // flange12Crist[2].SetX(Result.D_CloveFlange_Targ_Map[flange]+InterDepth); flange12Crist[2].SetX(Result.D_CloveFlange_Targ_Map[flange]); //segment1 flange12CristSeg[2][0].SetY(flange12.Y()-(EXOGAM_Segment_Pos1)); flange12CristSeg[2][0].SetZ(flange12.Z()+(EXOGAM_Segment_Pos1)); + // flange12CristSeg[2][0].SetX(Result.D_CloveFlange_Targ_Map[flange]+InterDepth); flange12CristSeg[2][0].SetX(Result.D_CloveFlange_Targ_Map[flange]); //segment2 flange12CristSeg[2][1].SetY(flange12.Y()-(EXOGAM_Segment_Pos2)); flange12CristSeg[2][1].SetZ(flange12.Z()+(EXOGAM_Segment_Pos1)); + // flange12CristSeg[2][1].SetX(Result.D_CloveFlange_Targ_Map[flange]+InterDepth); flange12CristSeg[2][1].SetX(Result.D_CloveFlange_Targ_Map[flange]); //segment3 flange12CristSeg[2][2].SetY(flange12.Y()-(EXOGAM_Segment_Pos2)); flange12CristSeg[2][2].SetZ(flange12.Z()+(EXOGAM_Segment_Pos2)); + // flange12CristSeg[2][2].SetX(Result.D_CloveFlange_Targ_Map[flange]+InterDepth); flange12CristSeg[2][2].SetX(Result.D_CloveFlange_Targ_Map[flange]); //segment4 flange12CristSeg[2][3].SetY(flange12.Y()-(EXOGAM_Segment_Pos1)); flange12CristSeg[2][3].SetZ(flange12.Z()+(EXOGAM_Segment_Pos2)); + // flange12CristSeg[2][3].SetX(Result.D_CloveFlange_Targ_Map[flange]+InterDepth); flange12CristSeg[2][3].SetX(Result.D_CloveFlange_Targ_Map[flange]); //Crystal D flange12Crist[3].SetY(flange12.Y()+(EXOGAM_Crystal_Center)); flange12Crist[3].SetZ(flange12.Z()+(EXOGAM_Crystal_Center)); + // flange12Crist[3].SetX(Result.D_CloveFlange_Targ_Map[flange]+InterDepth); flange12Crist[3].SetX(Result.D_CloveFlange_Targ_Map[flange]); //segment1 flange12CristSeg[3][0].SetY(flange12.Y()+(EXOGAM_Segment_Pos1)); flange12CristSeg[3][0].SetZ(flange12.Z()+(EXOGAM_Segment_Pos1)); + // flange12CristSeg[3][0].SetX(Result.D_CloveFlange_Targ_Map[flange]+InterDepth); flange12CristSeg[3][0].SetX(Result.D_CloveFlange_Targ_Map[flange]); //segment2 flange12CristSeg[3][1].SetY(flange12.Y()+(EXOGAM_Segment_Pos1)); flange12CristSeg[3][1].SetZ(flange12.Z()+(EXOGAM_Segment_Pos2)); + // flange12CristSeg[3][1].SetX(Result.D_CloveFlange_Targ_Map[flange]+InterDepth); flange12CristSeg[3][1].SetX(Result.D_CloveFlange_Targ_Map[flange]); //segment3 flange12CristSeg[3][2].SetY(flange12.Y()+(EXOGAM_Segment_Pos2)); flange12CristSeg[3][2].SetZ(flange12.Z()+(EXOGAM_Segment_Pos2)); + // flange12CristSeg[3][2].SetX(Result.D_CloveFlange_Targ_Map[flange]+InterDepth); flange12CristSeg[3][2].SetX(Result.D_CloveFlange_Targ_Map[flange]); //segment4 flange12CristSeg[3][3].SetY(flange12.Y()+(EXOGAM_Segment_Pos2)); flange12CristSeg[3][3].SetZ(flange12.Z()+(EXOGAM_Segment_Pos1)); + // flange12CristSeg[3][3].SetX(Result.D_CloveFlange_Targ_Map[flange]+InterDepth); flange12CristSeg[3][3].SetX(Result.D_CloveFlange_Targ_Map[flange]); if (flange >=1 && flange <=17){ diff --git a/NPLib/Detectors/Exogam/TExogamGeo.cxx b/NPLib/Detectors/Exogam/TExogamGeo.cxx new file mode 100644 index 0000000000000000000000000000000000000000..e743a6b2b4016c7304b90c141eff2b5eef1e83b3 --- /dev/null +++ b/NPLib/Detectors/Exogam/TExogamGeo.cxx @@ -0,0 +1,311 @@ +#include "TExogamGeo.h" +#include <string> + + +const double PI = 3.14159265358979323846; +// Position of flanges assuming target always in (0,0,0). TargetZ to check consistence with HitPosition +// Target X and Y are not important (if we are sure that the beam hits the target), only (X,Y) position of the beam matters. +TExogamGeo::TExogamGeo(std::map<unsigned int, double> Distances_) +: Distances(Distances_), HitPosition(Vector3D()), Beam(Vector3D()), Recoil(Vector3D()), +FlangeNumber(-1), CrystalNumber(-1), OuterNumber(-1), EGamma(-1.) +{ + ReadPhotonCS(); +} + +double TExogamGeo::p_function(const double alpha, Vector3D& SegmentPos,const Vector3D& TargetPos, Vector3D& UnitVector) { + Vector3D GammaDir = SegmentPos - TargetPos; + // GammaDir.print(); + return cos(alpha)*(GammaDir.norm()); +} +// Définir la fonction f(theta) + +double TExogamGeo::equation(const double alpha, Vector3D& SegmentPos,Vector3D& TargetPos, Vector3D& UnitVector) { + double p_f = p_function(alpha,SegmentPos,TargetPos,UnitVector); + // std::cout << p_f - (SegmentPos - TargetPos).scalarp(UnitVector) << std::endl; + return p_f - (SegmentPos - TargetPos).scalarp(UnitVector); +} + +// Définir la dérivée approximative de la fonction f(theta) par rapport à theta (différence finie) +double TExogamGeo::equation_derivative(const double alpha, Vector3D& SegmentPos, Vector3D& TargetPos, Vector3D& UnitVector) { + double h = 1e-6; // Petite valeur pour l'approximation numérique de la dérivée + return (equation(alpha+h,SegmentPos,TargetPos, UnitVector) - equation(alpha,SegmentPos,TargetPos, UnitVector)) / h; +} + +Vector3D TExogamGeo::newton_raphson(double initial_guess, + Vector3D& TargetPos, double tolerance = 1e-6, int max_iterations = 100) { + double alpha = initial_guess; + Vector3D unit(0.,1.,0.); + setflange(&unit); + // std::cout << "new NewtonRaphson" << std::endl; + for (int i = 0; i < max_iterations; ++i) { + Vector3D outerpos = getouterpos(alpha,InteractionDepth); + Vector3D SegmentPos(outerpos.X(), Distances[FlangeNumber] + std::cos(alpha) * InteractionDepth, outerpos.Z()); + setcrystal(&SegmentPos); + setflange(&SegmentPos); + + + double f_alpha = equation(alpha,SegmentPos,TargetPos,unit); + double f_prime_alpha = equation_derivative(alpha,SegmentPos,TargetPos,unit); + + // Mise à jour de theta + double alpha_new = alpha - f_alpha / f_prime_alpha; + + // Si la différence est inférieure à la tolérance, on considère la solution trouvée + if (std::fabs(alpha_new - alpha) < tolerance) { + + return SegmentPos - TargetPos; + } + // std::cout << alpha << " " << alpha_new << std::endl; + alpha = alpha_new; + } + + std::cerr << "Newton-Raphson n'a pas convergé après " << max_iterations << " itérations.\n"; + Vector3D fail; + return fail; // Retourne la dernière valeur trouvée si la convergence n'est pas atteinte +} +void TExogamGeo::SetGammaInteractionPoint(const short& FlangeNumber_,const short& CrystalNumber_, + const short& OuterNumber_,const short& EGamma_){ + FlangeNumber = FlangeNumber_; + CrystalNumber = CrystalNumber_; + OuterNumber = OuterNumber_; + EGamma = EGamma_; + InteractionDepth =interaction_depth(EGamma_); +} + +double TExogamGeo::interaction_depth(double Energy){ + auto b = Map_PhotonCS.lower_bound(Energy); + auto a = prev(b); + if(b == Map_PhotonCS.begin()){ + a = b; + b++; + } + else if(b == Map_PhotonCS.end()){ + b--; + a = prev(b); + } + double coeff = (Energy - a->first)/(b->first - a->first); + + double PhotonCrossSection = a->second + coeff*(b->second - a->second); // mm2/g + // std::cout << "Interaction Depth :" << 1./(GeDensity*PhotonCrossSection) << std::endl; + return 1./(GeDensity*PhotonCrossSection); +} +void TExogamGeo::ReadPhotonCS(){ + // path to photon cross section + std::string CSFilename = "../../Inputs/PhotonCrossSection/CoherentGe.xcom"; + // std::string CSFilename = "./CoherentGe.xcom"; + std::string LineBuffer; + + std::ifstream CSFile; + CSFile.open(CSFilename.c_str()); + + if (!CSFile.is_open()) { + std::cout << " No CS file found " + << CSFilename << std::endl; + return; + } + while(CSFile.good()){ + double gammaE, CrossSection; + getline(CSFile, LineBuffer); + std::istringstream ss(LineBuffer); + ss >> gammaE >> CrossSection; // E in MeV, converted to keV, CrossSection in cm2/g + CrossSection *= 100.; + Map_PhotonCS[gammaE] = CrossSection; + } +} + +Vector3D TExogamGeo::getouterpos(const double alpha, const double InteractionDepth){ + double a,b,c,f; + double l = std::cos(alpha)*InteractionDepth; // length normal to the crystal + switch(OuterNumber){ + case 0: + if(l >=30.){ + a = 0.; + b = -39.; + c = 0.; + f = -39.; + } + else{ + a = -0.273; + b = -30.81; + c = -0.273; + f = -30.81; + } + break; + case 1: + if(l >=30.){ + a = 0.; + b = -12.25; + c = 0.; + f = -39.; + } + else{ + a = -0.066; + b = -10.27; + c = -0.273; + f = -30.81; + } + break; + case 2: + if(l >=30.){ + a = 0.; + b = -12.25; + c = 0.; + f = -12.25; + } + else{ + a = -0.066; + b = -10.27; + c = -0.066; + f = -10.27; + } + break; + case 3: + if(l >=30.){ + a = 0.; + b = -39.; + c = 0.; + f = -12.25; + } + else{ + a = -0.273; + b = -30.81; + c = -0.066; + f = -10.27; + } + break; + } + return Vector3D(a*std::cos(alpha)*InteractionDepth + b, 0., c*std::cos(alpha)*InteractionDepth + f); +} + +void TExogamGeo::setcrystal(Vector3D* SegmentPos){ + return (*SegmentPos).rotateAroundY(-CrystalNumber*PI/2); // Crystal A= 0, Crystal B= 1 etc. +} + +void TExogamGeo::setflange(Vector3D* SegmentPos){ + switch (FlangeNumber){ + case 1: + (*SegmentPos).rotateVector(PI/4,0.); + break; + case 2: + (*SegmentPos).rotateVector(-PI/2,-PI/4); + break; + case 3: + (*SegmentPos).rotateVector(-PI/2,PI/4); + break; + case 4: + (*SegmentPos).rotateVector(-PI/4,0.); + break; + case 5: + (*SegmentPos).rotateVector(-3*PI/4,0.); + break; + case 6: + // (*SegmentPos).rotateVector(-PI/2,-PI/2); + (*SegmentPos).rotateVector(-PI/2,PI/2); + break; + case 7: + // (*SegmentPos).rotateVector(-3*PI/4,-PI/2); + (*SegmentPos).rotateVector(-3*PI/4,PI/2); + break; + case 8: + (*SegmentPos).rotateVector(-PI,0.); + break; + case 9: + // (*SegmentPos).rotateVector(-3*PI/4,PI/2); + (*SegmentPos).rotateVector(-3*PI/4,-PI/2); + break; + case 10: + // (*SegmentPos).rotateVector(-PI/2,PI/2); + (*SegmentPos).rotateVector(-PI/2,-PI/2); + break; + case 11: + // (*SegmentPos).rotateVector(-PI/4,PI/2); + (*SegmentPos).rotateVector(-PI/4,-PI/2); + break; + case 12: // Reference flange + break; + case 13: + // (*SegmentPos).rotateVector(-PI/4,-PI/2); + (*SegmentPos).rotateVector(-PI/4,PI/2); + break; + case 14: + (*SegmentPos).rotateVector(3*PI/4,0.); + break; + case 15: + (*SegmentPos).rotateVector(-PI/2,-3*PI/4); + break; + case 16: + (*SegmentPos).rotateVector(-PI/2,3*PI/4); + break; + case 17: + (*SegmentPos).rotateVector(-PI/2,0.); // Beam in + break; + case 18: + (*SegmentPos).rotateVector(PI/2,0.); // Beam out + break; + + + } +} + +void TExogamGeo::ResetGamma(){ + GammaDir.clear(); + Beam.clear(); + HitPosition.clear(); + Recoil.clear(); + FlangeNumber=-1; + CrystalNumber=-1; + OuterNumber=-1; + EGamma=0.; + InteractionDepth=0.; +} + +int main() { + // Paramètres de l'équation + double xt,yt,zt; + xt = 0.; + yt = 0.; + zt = 0.; + Vector3D TargetPos(xt,yt,zt); + std::map<unsigned int,double> ExoRadius; + ExoRadius[1] = 147.0; + ExoRadius[2] = 147.0; + ExoRadius[3] = 147.0; + ExoRadius[4] = 147.0; + ExoRadius[5] = 147.0; + ExoRadius[6] = 147.0; + ExoRadius[7] = 147.0; + ExoRadius[8] = 147.0; + ExoRadius[9] = 147.0; + ExoRadius[10] = 147.0; + ExoRadius[11] = 147.0; + ExoRadius[12] = 147.0; + ExoRadius[13] = 147.0; + ExoRadius[14] = 147.0; + ExoRadius[15] = 147.0; + ExoRadius[16] = 147.0; + ExoRadius[17] = 147.0; + ExoRadius[18] = 147.0; + TExogamGeo ExoGeo(ExoRadius); + int FlangeNumber = 12; + int CrystalNumber = 0; + int OuterNumber = 1; + double EGamma = 1.0; + ExoGeo.SetGammaInteractionPoint(FlangeNumber,CrystalNumber,OuterNumber,EGamma); + + Vector3D Recoil(0.,0.,1.); + + // Valeur initiale de alpha en radians + double initial_guess = 1.5; + + // Résoudre l'équation + Vector3D Vector_solution = ExoGeo.newton_raphson(initial_guess, TargetPos); + + // Afficher la solution en radians et en degrés + // std::cout << "Solution en radians: " << Vector_solution.angle(Recoil) << std::endl; + // std::cout << "Solution en degrés: " << Vector_solution.angle(Recoil)* 180.0 / M_PI << std::endl; + // std::cout << "Angle par rapport à X: " << Vector_solution.angle(Vector3D(1.,0.,0.))* 180.0 / M_PI << std::endl; + // std::cout << "Angle par rapport à Y: " << Vector_solution.angle(Vector3D(0.,1.,0.))* 180.0 / M_PI << std::endl; + // std::cout << "Angle par rapport à Z: " << Vector_solution.angle(Vector3D(0.,0.,1.))* 180.0 / M_PI << std::endl; + + return 0; +} \ No newline at end of file diff --git a/NPLib/Detectors/Exogam/TExogamGeo.h b/NPLib/Detectors/Exogam/TExogamGeo.h new file mode 100644 index 0000000000000000000000000000000000000000..87910364fb785f365dae8f66f3fb3fcd05a3a991 --- /dev/null +++ b/NPLib/Detectors/Exogam/TExogamGeo.h @@ -0,0 +1,157 @@ +#ifndef TEXOGAMGEO_H +#define TEXOGAMGEO_H + +#include <vector> +#include <map> +#include <cmath> +#include <iostream> +#include <fstream> +#include <sstream> +#include <stdlib.h> + +class Vector3D { +public: + + Vector3D() : x(0.), y(0.), z(0.) {} + Vector3D(double x_, double y_, double z_) : x(x_), y(y_), z(z_) {} + ~Vector3D(){} + + void setXYZ(double x_, double y_, double z_) { + x = x_; y = y_; z = z_; + } + + double norm() const { + return std::sqrt(x * x + y * y + z * z); + } + + double scalarp(const Vector3D& other) const { + return x * other.x + y * other.y + z * other.z; + } + + Vector3D vectorp(const Vector3D& other) const { + return Vector3D( + y * other.z - z * other.y, + z * other.x - x * other.z, + x * other.y - y * other.x + ); + } + + void rotateAroundZ(double theta) { + double x_ = x * cos(theta) - y * sin(theta); + y = x * sin(theta) + y * cos(theta); + x = x_; + } + void rotateAroundY(double phi) { + double x_ = x * cos(phi) + z * sin(phi); + z = -x * sin(phi) + z * cos(phi); + x = x_; + } + + void rotateAroundX(double theta) { + double y_ = y * cos(theta) - z * sin(theta); + z = y * sin(theta) + z * cos(theta); + y = y_; + } + + void rotateVector(double theta, double phi) { + rotateAroundX(theta); + rotateAroundY(phi); + } + + double angle(const Vector3D& other) const { + double ScalarProduct = this->scalarp(other); + double NormsProduct = this->norm() * other.norm(); + return std::acos(ScalarProduct / NormsProduct); + } + + Vector3D operator+(const Vector3D& other) const { + return Vector3D(x + other.x, y + other.y, z + other.z); + } + + // Surcharge de l'opérateur de soustraction (-) + Vector3D operator-(const Vector3D& other) const { + return Vector3D(x - other.x, y - other.y, z - other.z); + } + + void print(){ + std::cout << "Vector coordinates: (" << x << ", " << y << ", " << z << ")" << std::endl; + } + + double X(){return x;} + double Y(){return y;} + double Z(){return z;} + + void clear(){x=0;y=0;z=0;} + + bool isnull(){return x==0 && y == 0 && z==0;} + //double theta() const { + // auto ZVector = Vector3D(0,0,1); + // return angle(ZVector); + //} + + //double phi() const{ + // auto XVector = Vector3D(1,0,0); + // auto ProjVector = Vector3D(x,y,0); + // return ProjVector.angle(XVector); + //} + + private: + double x, y, z; +}; + +class TExogamGeo{ + + public: + TExogamGeo(std::map<unsigned int, double> Distances_); + ~TExogamGeo(){}; + + void SetBeam(const Vector3D& Beam_,const Vector3D& HitPosition_){Beam=Beam_; HitPosition=HitPosition_;}; + void SetRecoil(const Vector3D& Recoil_){Recoil=Recoil_;}; + void SetGammaInteractionPoint(const short& FlangeNumber_,const short& CrystalNumber_, + const short& OuterNumber_,const short& EGamma_); // Which outer + Energy gamma of the addbacked gamma-ray for better inter depth reconstruction + double GetGammaAngle(); // Returns angle between the recoil and the gamma interaction point + double GetDopplerE(); // Get Doppler Corrected E + void ResetGamma(); // Resets Beam/HitPos/ + + + Vector3D newton_raphson(double initial_guess, + Vector3D& TargetPos, double tolerance, int max_iterations); + double interaction_depth(const double Energy); + + private: + double p_function(const double alpha, Vector3D& SegmentPos, const Vector3D& TargetPos, Vector3D& UnitVector); + double equation(double alpha, Vector3D& SegmentPos, Vector3D& TargetPos, Vector3D& UnitVector); + double equation_derivative(const double alpha, Vector3D& SegmentPos, Vector3D& TargetPos, Vector3D& UnitVector); + void setcrystal(Vector3D* SegmentPos); + void setflange(Vector3D* SegmentPos); + Vector3D getouterpos(const double angle_alpha, const double InteractionDepth); + void ReadPhotonCS(); + + Vector3D GammaDir; + + Vector3D Beam; + Vector3D HitPosition; + Vector3D Recoil; + short FlangeNumber; + short CrystalNumber; + short OuterNumber; + double EGamma; + double InteractionDepth; + std::map<unsigned int, double> Distances; + + double GeDensity = 0.005323; // g/mm3 + std::map<double, double> Map_PhotonCS; + + + + + + + + + + + + +}; +#endif \ No newline at end of file diff --git a/NPLib/Detectors/Exogam/TExogamPhysics.cxx b/NPLib/Detectors/Exogam/TExogamPhysics.cxx index f2961ebb6e5ff1f488c89aa2fa539d621d210d78..b8063da24395c0cc7eafa6dc9a2b35599bb2e48c 100644 --- a/NPLib/Detectors/Exogam/TExogamPhysics.cxx +++ b/NPLib/Detectors/Exogam/TExogamPhysics.cxx @@ -54,7 +54,6 @@ ClassImp(TExogamPhysics) m_ExoTDC_HighThreshold = 1e6; m_ExoTDC_LowThreshold = 0; m_EXO_OuterUp_RAW_Threshold = 60000; - DataIsCal = false; } @@ -208,18 +207,18 @@ void TExogamPhysics::BuildPhysicalEvent() { int MaxOuterId = GetMaxOuter(Id_Max); Outer_AB.push_back(GetMaxOuter(Id_Max)); - if(MaxOuterId > -1){ - Exogam_struc = Ask_For_Angles(flange_nbr, ComputeMeanFreePath(E_AddBack),147,0.0); //147 default value of Emmanuel's code - double Theta_seg = Exogam_struc.Theta_Crystal_Seg[crystal_nbr][MaxOuterId]; - double Phi_seg = Exogam_struc.Phi_Crystal_Seg[crystal_nbr][MaxOuterId]; - - Theta.push_back(Theta_seg); - Phi.push_back(Phi_seg); - } - else{ - Theta.push_back(-1000); - Phi.push_back(-1000); - } + //if(MaxOuterId > -1){ + // Exogam_struc = Ask_For_Angles(flange_nbr, ComputeMeanFreePath(E_AddBack),147,0.0); //147 default value of Emmanuel's code + // double Theta_seg = Exogam_struc.Theta_Crystal_Seg[crystal_nbr][MaxOuterId]; + // double Phi_seg = Exogam_struc.Phi_Crystal_Seg[crystal_nbr][MaxOuterId]; + + // Theta.push_back(Theta_seg); + // Phi.push_back(Phi_seg); + //} + //else{ + // Theta.push_back(-1000); + // Phi.push_back(-1000); + //} } } @@ -257,15 +256,6 @@ int TExogamPhysics::GetMaxOuter(unsigned int EventId){ } return OuterId; } - -/////////////////////////////////////////////////////////////////////////// -double TExogamPhysics::GetDoppler(double Energy, unsigned int Flange, unsigned int Crystal, unsigned int Outer){ - Exogam_struc = Ask_For_Angles(Flange, ComputeMeanFreePath(Energy),147.0,0.0); // same - double Theta_seg = Exogam_struc.Theta_Crystal_Seg[Crystal][Outer]; - double Phi_seg = Exogam_struc.Phi_Crystal_Seg[Crystal][Outer]; - return Doppler_Correction(Theta_seg,Phi_seg,0,0,Beta,Energy); -} - /////////////////////////////////////////////////////////////////////////// double TExogamPhysics::ComputeMeanFreePath(double Energy){ auto b = Map_PhotonCS.lower_bound(Energy); @@ -281,6 +271,7 @@ double TExogamPhysics::ComputeMeanFreePath(double Energy){ double coeff = (Energy - a->first)/(b->first - a->first); double PhotonCrossSection = a->second + coeff*(b->second - a->second); // mm2/g + // std::cout << 1./(GeDensity*PhotonCrossSection) << std::endl; return 1./(GeDensity*PhotonCrossSection); } @@ -288,44 +279,13 @@ double TExogamPhysics::ComputeMeanFreePath(double Energy){ // } -/////////////////////////////////////////////////////////////////////////// -double TExogamPhysics::DopplerCorrection(double E, double Theta) { - double Pi = 3.141592654; - TString filename = "configs/beta.txt"; - ifstream file; - // cout << filename << endl; - file.open(filename); - if (!file) - cout << filename << " was not opened" << endl; - - double E_corr = 0; - double beta = 0.; - file >> beta; - double gamma = 1. / sqrt(1 - beta * beta); - - E_corr = gamma * E * (1. - beta * cos(Theta * Pi / 180.)); - - return (E_corr); -} - -/////////////////////////////////////////////////////////////////////////// // Routine of doppler correction /////////////////////////////////////////////////////////////////////////// -double TExogamPhysics::CorrectionDoppler(double theta_gamma, double phi_gamma, double theta_part, double phi_part, double beta_part, double E){ //rad, v/c - double Ecorr,cosinusPSI; - - cosinusPSI =TMath::Sin(theta_part)*TMath::Cos(phi_part)*TMath::Sin(theta_gamma)*TMath::Cos(phi_gamma)+ - TMath::Sin(theta_part)*TMath::Sin(phi_part)*TMath::Sin(theta_gamma)*TMath::Sin(phi_gamma)+ - TMath::Cos(theta_part)*TMath::Cos(theta_gamma); - - Ecorr = E*(1.-beta_part*cosinusPSI)/sqrt(1.-beta_part*beta_part); - - return Ecorr; +double TExogamPhysics::DopplerCorrection(double theta, double beta, double E){ //rad, v/c + return E*(1.-beta*std::cos(theta))/sqrt(1.-beta*beta); } - /////////////////////////////////////////////////////////////////////////// void TExogamPhysics::Clear() { - // Exogam_struc = {}; E.clear(); EHG.clear(); @@ -356,32 +316,45 @@ void TExogamPhysics::ReadConfiguration(NPL::InputParser parser) { vector<NPL::InputBlock*> blocks = parser.GetAllBlocksWithToken("Exogam"); if (NPOptionManager::getInstance()->GetVerboseLevel()) cout << "//// " << blocks.size() << " Exogam clover found " << endl; + + vector<string> ExoFlange = {"Flange","Radius"}; for(unsigned int i=0; i<blocks.size(); i++){ - if(NPOptionManager::getInstance()->GetVerboseLevel()) - cout << endl << "//// EXOGAM Clover " << i+1 << endl; - - m_NumberOfClovers++; - int flange = blocks[i]->GetInt("FLANGE"); - m_flange.push_back(flange); - m_pos_segment[0][0].push_back(blocks[i]->GetTVector3("POS_CRYSTALA_SEG1","mm")); - m_pos_segment[0][1].push_back(blocks[i]->GetTVector3("POS_CRYSTALA_SEG2","mm")); - m_pos_segment[0][2].push_back(blocks[i]->GetTVector3("POS_CRYSTALA_SEG3","mm")); - m_pos_segment[0][3].push_back(blocks[i]->GetTVector3("POS_CRYSTALA_SEG4","mm")); - m_pos_segment[1][0].push_back(blocks[i]->GetTVector3("POS_CRYSTALB_SEG1","mm")); - m_pos_segment[1][1].push_back(blocks[i]->GetTVector3("POS_CRYSTALB_SEG2","mm")); - m_pos_segment[1][2].push_back(blocks[i]->GetTVector3("POS_CRYSTALB_SEG3","mm")); - m_pos_segment[1][3].push_back(blocks[i]->GetTVector3("POS_CRYSTALB_SEG4","mm")); - m_pos_segment[2][0].push_back(blocks[i]->GetTVector3("POS_CRYSTALC_SEG1","mm")); - m_pos_segment[2][1].push_back(blocks[i]->GetTVector3("POS_CRYSTALC_SEG2","mm")); - m_pos_segment[2][2].push_back(blocks[i]->GetTVector3("POS_CRYSTALC_SEG3","mm")); - m_pos_segment[2][3].push_back(blocks[i]->GetTVector3("POS_CRYSTALC_SEG4","mm")); - m_pos_segment[3][0].push_back(blocks[i]->GetTVector3("POS_CRYSTALD_SEG1","mm")); - m_pos_segment[3][1].push_back(blocks[i]->GetTVector3("POS_CRYSTALD_SEG2","mm")); - m_pos_segment[3][2].push_back(blocks[i]->GetTVector3("POS_CRYSTALD_SEG3","mm")); - m_pos_segment[3][3].push_back(blocks[i]->GetTVector3("POS_CRYSTALD_SEG4","mm")); - - MapFlangeToCloverNumber[flange] = m_NumberOfClovers; + if (blocks[i]->HasTokenList(ExoFlange)) { + if(NPOptionManager::getInstance()->GetVerboseLevel()) + std::cout << std::endl << "//// EXOGAM Clover in radial geometry " << i+1 << endl; + m_NumberOfClovers++; + unsigned short flange = blocks[i]->GetInt("Flange"); + double radius = blocks[i]->GetDouble("Radius","mm"); + std::cout << std::endl << "//// EXOGAM Clover in radial geometry " << i+1 << endl; + MapFlangeRadius[flange] = radius; + } + else{ + if(NPOptionManager::getInstance()->GetVerboseLevel()) + cout << endl << "//// EXOGAM Clover " << i+1 << endl; + + m_NumberOfClovers++; + int flange = blocks[i]->GetInt("FLANGE"); + m_flange.push_back(flange); + m_pos_segment[0][0].push_back(blocks[i]->GetTVector3("POS_CRYSTALA_SEG1","mm")); + m_pos_segment[0][1].push_back(blocks[i]->GetTVector3("POS_CRYSTALA_SEG2","mm")); + m_pos_segment[0][2].push_back(blocks[i]->GetTVector3("POS_CRYSTALA_SEG3","mm")); + m_pos_segment[0][3].push_back(blocks[i]->GetTVector3("POS_CRYSTALA_SEG4","mm")); + m_pos_segment[1][0].push_back(blocks[i]->GetTVector3("POS_CRYSTALB_SEG1","mm")); + m_pos_segment[1][1].push_back(blocks[i]->GetTVector3("POS_CRYSTALB_SEG2","mm")); + m_pos_segment[1][2].push_back(blocks[i]->GetTVector3("POS_CRYSTALB_SEG3","mm")); + m_pos_segment[1][3].push_back(blocks[i]->GetTVector3("POS_CRYSTALB_SEG4","mm")); + m_pos_segment[2][0].push_back(blocks[i]->GetTVector3("POS_CRYSTALC_SEG1","mm")); + m_pos_segment[2][1].push_back(blocks[i]->GetTVector3("POS_CRYSTALC_SEG2","mm")); + m_pos_segment[2][2].push_back(blocks[i]->GetTVector3("POS_CRYSTALC_SEG3","mm")); + m_pos_segment[2][3].push_back(blocks[i]->GetTVector3("POS_CRYSTALC_SEG4","mm")); + m_pos_segment[3][0].push_back(blocks[i]->GetTVector3("POS_CRYSTALD_SEG1","mm")); + m_pos_segment[3][1].push_back(blocks[i]->GetTVector3("POS_CRYSTALD_SEG2","mm")); + m_pos_segment[3][2].push_back(blocks[i]->GetTVector3("POS_CRYSTALD_SEG3","mm")); + m_pos_segment[3][3].push_back(blocks[i]->GetTVector3("POS_CRYSTALD_SEG4","mm")); + + MapFlangeToCloverNumber[flange] = m_NumberOfClovers; + } } ReadAnalysisConfig(); @@ -395,24 +368,6 @@ void TExogamPhysics::ReadAnalysisConfig() { // path to photon cross section string CSFilename = string(getenv("NPTOOL")) + "/Inputs/PhotonCrossSection/CoherentGe.xcom"; string LineBuffer; - - ifstream CSFile; - CSFile.open(CSFilename.c_str()); - - if (!CSFile.is_open()) { - cout << " No CS file found " - << CSFilename << endl; - return; - } - while(CSFile.good()){ - double gammaE, CrossSection; - getline(CSFile, LineBuffer); - istringstream ss(LineBuffer); - ss >> gammaE >> CrossSection; // E in MeV, converted to keV, CrossSection in cm2/g - gammaE *= 1000.; // Convertion to keV - CrossSection *= 100.; - Map_PhotonCS[gammaE] = CrossSection; - } // path to file string FileName = "./configs/ConfigExogam.dat"; @@ -491,6 +446,8 @@ void TExogamPhysics::ReadAnalysisConfig() { } } } + if(MapFlangeRadius.size() > 0) + ExogamGeo = new TExogamGeo(MapFlangeRadius); } void TExogamPhysics::InitSpectra() { } @@ -577,7 +534,7 @@ void TExogamPhysics::AddClover(int Board, int Flange, int Channel0, int Channel1 // Add Parameter to the CalibrationManger ////////////////////////////////////////////////////////////////////////// void TExogamPhysics::AddParameterToCalibrationManager() { - + std::cout << "OUI VOILA" << std::endl; CalibrationManager* Cal = CalibrationManager::getInstance(); for (auto it = MapCrystalFlangeCLover.begin(); it != MapCrystalFlangeCLover.end(); it++) @@ -816,7 +773,7 @@ void TExogamPhysics::DoCalibration() { } std::string make_folder = "mkdir " + Path + OutputName; - MakeInitialCalibFolder(make_folder); + MakeFolder(make_folder); ofstream* calib_file = new ofstream; ofstream* dispersion_file = new ofstream; @@ -861,7 +818,7 @@ void TExogamPhysics::DoCalibration() { } ///////////////////////////////////////////////////////////////////// -void TExogamPhysics::MakeInitialCalibFolder(std::string make_folder) { +void TExogamPhysics::MakeFolder(std::string make_folder) { int sys = system(make_folder.c_str()); } @@ -987,77 +944,94 @@ void TExogamPhysics::DefineCalibrationSource(std::string source) { Source_E.push_back(0.121782); Source_Sig.push_back(0.0001); Source_branching_ratio.push_back(28.58); + Source_branching_ratio_err.push_back(0.16); Source_isotope.push_back("$^{152}$Eu"); Source_E.push_back(0.344279); Source_Sig.push_back(0.0001); - Source_branching_ratio.push_back(26.5); + Source_branching_ratio.push_back(26.59); + Source_branching_ratio_err.push_back(0.20); Source_isotope.push_back("$^{152}$Eu"); Source_E.push_back(1.40801); Source_Sig.push_back(0.0001); - Source_branching_ratio.push_back(21.0); + Source_branching_ratio.push_back(20.87); + Source_branching_ratio_err.push_back(0.09); Source_isotope.push_back("$^{152}$Eu"); Source_E.push_back(0.964079); Source_Sig.push_back(0.0001); - Source_branching_ratio.push_back(14.6); + Source_branching_ratio.push_back(14.51); + Source_branching_ratio_err.push_back(0.07); - Source_isotope.push_back("$^{152}$Eu"); - Source_E.push_back(1.11207); - Source_Sig.push_back(0.0001); - Source_branching_ratio.push_back(13.64); + // FIXME Fit does not work properly for this peak (no idea why) + // Source_isotope.push_back("$^{152}$Eu"); + // Source_E.push_back(1.11207); + // Source_Sig.push_back(0.0001); + // Source_branching_ratio.push_back(13.67); + // Source_branching_ratio_err.push_back(0.08); Source_isotope.push_back("$^{152}$Eu"); Source_E.push_back(0.778904); Source_Sig.push_back(0.0001); - Source_branching_ratio.push_back(12.94); + Source_branching_ratio.push_back(12.93); + Source_branching_ratio_err.push_back(0.08); Source_isotope.push_back("$^{152}$Eu"); Source_E.push_back(1.08587); Source_Sig.push_back(0.0001); - Source_branching_ratio.push_back(10.21); + Source_branching_ratio.push_back(10.11); + Source_branching_ratio_err.push_back(0.05); Source_isotope.push_back("$^{152}$Eu"); Source_E.push_back(0.244698); Source_Sig.push_back(0.0001); Source_branching_ratio.push_back(7.58); + Source_branching_ratio_err.push_back(0.04); Source_isotope.push_back("$^{152}$Eu"); Source_E.push_back(0.867378); Source_Sig.push_back(0.0001); - Source_branching_ratio.push_back(4.25); + Source_branching_ratio.push_back(4.23); + Source_branching_ratio_err.push_back(0.03); Source_isotope.push_back("$^{152}$Eu"); Source_E.push_back(0.443965); Source_Sig.push_back(0.0001); - Source_branching_ratio.push_back(2.82); + Source_branching_ratio.push_back(2.827); + Source_branching_ratio_err.push_back(0.014); Source_isotope.push_back("$^{152}$Eu"); Source_E.push_back(0.411116); Source_Sig.push_back(0.0001); - Source_branching_ratio.push_back(2.23); + Source_branching_ratio.push_back(2.237); + Source_branching_ratio_err.push_back(0.013); Source_isotope.push_back("$^{152}$Eu"); Source_E.push_back(1.08974); Source_Sig.push_back(0.0001); - Source_branching_ratio.push_back(1.73); + Source_branching_ratio.push_back(1.734); + Source_branching_ratio_err.push_back(0.011); - Source_isotope.push_back("$^{152}$Eu"); - Source_E.push_back(1.29914); - Source_Sig.push_back(0.0001); - Source_branching_ratio.push_back(1.62); + // FIXME Fit does not work properly for this peak (no idea why) + // Source_isotope.push_back("$^{152}$Eu"); + // Source_E.push_back(1.29914); + // Source_Sig.push_back(0.0001); + // Source_branching_ratio.push_back(1.633); + // Source_branching_ratio_err.push_back(0.011); Source_isotope.push_back("$^{152}$Eu"); Source_E.push_back(1.21295); Source_Sig.push_back(0.0001); - Source_branching_ratio.push_back(1.42); + Source_branching_ratio.push_back(1.415); + Source_branching_ratio_err.push_back(0.008); } else{ std::cout << "Please enter a valid source for gamma ray calibration\nCurrently supported sources are 60Co and 152Eu\n"; exit(1); } + std::cout << "///////////////////////////////// " << Source_E.size() << " " << Source_branching_ratio.size() << std::endl; } @@ -1149,6 +1123,62 @@ void TExogamPhysics::WriteHistogramsCalib() { RootHistogramsCalib::getInstance()->GetFile()->Close(); } +///////////////////////////////////////////////////////////////////// +void TExogamPhysics::WriteHistogramsEfficiency() { + std::cout << "Writing Exogam Efficiency\n"; + auto File = RootHistogramsCalib::getInstance()->GetFile(); + auto TH1Map = RootHistogramsCalib::getInstance()->GetTH1Map(); + auto TGraphMap = RootHistogramsCalib::getInstance()->GetTGraphMap(); + auto TCanvasMap = RootHistogramsCalib::getInstance()->GetTCanvasMap(); + + std::string Path = NPOptionManager::getInstance()->GetEfficiencyOutputPath(); + std::string OutputName = NPOptionManager::getInstance()->GetOutputFile(); + + map<int, bool>::iterator it; + std::string hnameEXOE; + + if (!File->GetDirectory("Exogam")) + File->mkdir("Exogam"); + File->cd("Exogam"); + + for (it = DoEfficiency.begin(); it != DoEfficiency.end(); it++) { + if (it->second) { + + if (!gDirectory->GetDirectory(Form("EXO_Cr%d", it->first))) + gDirectory->mkdir(Form("EXO_Cr%d", it->first)); + gDirectory->cd(Form("EXO_Cr%d", it->first)); + + hnameEXOE = Form("EXO_E%d", it->first); + (*TH1Map)["Exogam"][hnameEXOE]->Write(); + (*TCanvasMap)["Exogam"][hnameEXOE]->SaveAs((Path+OutputName+"/"+ hnameEXOE+".png").c_str()); + hnameEXOE = Form("EXO_TS%d", it->first); + (*TH1Map)["Exogam"][hnameEXOE]->Write(); + hnameEXOE = Form("EXO_Eff%d", it->first); + (*TGraphMap)["Exogam"][hnameEXOE]->Write(); + (*TCanvasMap)["Exogam"][hnameEXOE]->SaveAs((Path+OutputName+"/"+ hnameEXOE+".png").c_str()); + //if((*TGraphMap)["Exogam"][Form("Calib_Graph_EXO_E%d",it->first)]!= nullptr) + // (*TGraphMap)["Exogam"][Form("Calib_Graph_EXO_E%d",it->first)]->Write(); + //if((*TGraphMap)["Exogam"][Form("Residue_Graph_EXO_E%d",it->first)]!= nullptr) + // (*TGraphMap)["Exogam"][Form("Residue_Graph_EXO_E%d",it->first)]->Write(); + } + File->cd("Exogam"); + } + hnameEXOE = "EXO_E_all"; + (*TH1Map)["Exogam"][hnameEXOE]->Write(); + (*TCanvasMap)["Exogam"][hnameEXOE]->SaveAs((Path+OutputName+"/"+ hnameEXOE+".png").c_str()); + hnameEXOE = "EXO_TS_all"; + (*TH1Map)["Exogam"][hnameEXOE]->Write(); + hnameEXOE = "EXO_Eff_all"; + (*TGraphMap)["Exogam"][hnameEXOE]->Write(); + (*TCanvasMap)["Exogam"][hnameEXOE]->SaveAs((Path+OutputName+"/"+ hnameEXOE+".png").c_str()); + for(auto PeakE: Source_E) + (*TGraphMap)["Exogam"]["Exo_Eff_crystal "+NPL::itoa(int(PeakE*1000.))+" keV"]->Write(); + + + + RootHistogramsCalib::getInstance()->GetFile()->Close(); +} + ///////////////////////////////////////////////////////////////////// void TExogamPhysics::WriteHistogramsE() { auto File = RootHistogramsCalib::getInstance()->GetFile(); @@ -1219,6 +1249,737 @@ void TExogamPhysics::WriteHistogramsE() { } } } + +void TExogamPhysics::InitializeRootHistogramsEfficiency() { + DefineCalibrationSource(Source_name); + + std::cout << "Initialize Exogam Efficiency Histograms" << std::endl; + map<int, bool>::iterator it; + auto TH1Map = RootHistogramsCalib::getInstance()->GetTH1Map(); + auto TGraphMap = RootHistogramsCalib::getInstance()->GetTGraphMap(); + + // unsigned long long FirstTS = FindFirstExoTS(); + // unsigned long long LastTS = FindLastExoTS(); + // std::cout << "Les TS: " << FirstTS << " " << LastTS << std::endl; + //FIXME First TS and Last TS work byut idk how to handle runs with bad TS indexin//FIXME First TS and Last TS work byut idk how to handle runs with bad TS indexingg + for (it = DoEfficiency.begin(); it != DoEfficiency.end(); it++) { + if (it->second) { + TString hnameEXOE = Form("EXO_E%d", it->first); + TString htitleEXOE = Form("EXO_E%d", it->first); + (*TH1Map)["Exogam"][hnameEXOE] = new TH1F(hnameEXOE, htitleEXOE, 5000, 0, 5000); + hnameEXOE = Form("EXO_TS%d", it->first); + htitleEXOE = Form("EXO_TS%d", it->first); + (*TH1Map)["Exogam"][hnameEXOE] = new TH1F(hnameEXOE, htitleEXOE,10000,0,pow(2,48)); + } + } + (*TH1Map)["Exogam"]["EXO_E_all"] = new TH1F("EXO_E_all", "EXO_E_all", 5000, 0, 5000); + (*TH1Map)["Exogam"]["EXO_TS_all"] = new TH1F("EXO_TS_all", "EXO_TS_all", 10000,0,pow(2,48)); + for(auto PeakE: Source_E){ + (*TGraphMap)["Exogam"]["Exo_Eff_crystal "+NPL::itoa(int(PeakE*1000.))+" keV"] = new TGraphErrors; + std::cout << "Exo_Eff_crystal "+NPL::itoa(int(PeakE*1000.))+" keV" << std::endl; + (*TGraphMap)["Exogam"]["Exo_Eff_crystal "+NPL::itoa(int(PeakE*1000.))+" keV"]->SetName(("EfficiencyByCrystal"+NPL::itoa(int(PeakE*1000.))+"keV").c_str()); + (*TGraphMap)["Exogam"]["Exo_Eff_crystal "+NPL::itoa(int(PeakE*1000.))+" keV"]->SetTitle(("Efficiency By Crystal "+NPL::itoa(int(PeakE*1000.))+" keV").c_str()); + } +} + + +unsigned long long TExogamPhysics::FindFirstExoTS(){ + TTreeReader* TreeReader = RootInput::getInstance()->GetTreeReader(); + unsigned long long FirstTSValue = 0; + bool FirstTSFound = false; + TreeReader->Restart(); + while(TreeReader->Next() && !FirstTSFound){ + ClaimReaderData(); + for(auto TSvalue: m_EventData->fExo_TS){ + if(TSvalue > 0){ + FirstTSValue = TSvalue; + FirstTSFound = true; + } + } + } + TreeReader->Restart(); + return FirstTSValue; +} + +unsigned long long TExogamPhysics::FindLastExoTS(){ + TTreeReader* TreeReader = RootInput::getInstance()->GetTreeReader(); + unsigned long long LastTSValue = 0; + bool LastTSFound = false; + TreeReader->Restart(); + for(unsigned long long i = TreeReader->GetTree()->GetEntries() - 1; i >= 0 && !LastTSFound; i--){ + TreeReader->SetEntry(i); + ClaimReaderData(); + for(auto TSvalue: m_EventData->fExo_TS){ + if(TSvalue > 0){ + LastTSValue = TSvalue; + std::cout << LastTSValue << " " << m_EventData->fExo_Crystal[0] << " " << m_EventData->fExo_Crystal.size() << " " << i << std::endl; + LastTSFound = true; + } + } + } + TreeReader->Restart(); + return LastTSValue; +} + +void TExogamPhysics::Efficiency() { + std::cout << "Evaluate Efficiency Exogam" << std::endl; + + map<int, bool>::iterator it; + + std::string Path = NPOptionManager::getInstance()->GetEfficiencyOutputPath(); + std::string OutputName = NPOptionManager::getInstance()->GetOutputFile(); + if (OutputName.size() > 5) { + if (OutputName.substr(OutputName.size() - 5, OutputName.size()) == ".root") { + OutputName = OutputName.substr(0, OutputName.size() - 5); + } + } + std::string make_folder = "mkdir " + Path + OutputName; + + MakeFolder(make_folder); + + ofstream* efficiency_file = new ofstream; + if(!DoEfficiency.empty()){ + CreateEfficiencyFile(efficiency_file); + } + for (it = DoEfficiency.begin(); it != DoEfficiency.end(); it++) { + if (it->second) { + EvaluateEfficiency_F(NPL::itoa((int)it->first), efficiency_file, Source_activity); + } + } + EvaluateEfficiency_F("_all", efficiency_file, Source_activity); + efficiency_file->close(); +} + +void TExogamPhysics::CreateEfficiencyFile(ofstream* efficiency_file) { + std::string Path = NPOptionManager::getInstance()->GetEfficiencyOutputPath(); + std::string OutputName = NPOptionManager::getInstance()->GetOutputFile(); + if (OutputName.size() > 5) { + if (OutputName.substr(OutputName.size() - 5, OutputName.size()) == ".root") { + OutputName = OutputName.substr(0, OutputName.size() - 5); + } + } + TString Filename = "Efficiency_EXOGAM"; + (*efficiency_file).open(((string)(Path + OutputName + Filename + ".ef")).c_str()); +} + +void TExogamPhysics::ReadEfficiency(NPL::InputParser parser) { + vector<NPL::InputBlock*> blocks = parser.GetAllBlocksWithToken("Exogam"); + + vector<string> eff = {"FirstCr","LastCr","Source","SourceActivity","minmax","Time"}; + + for (unsigned int i = 0; i < blocks.size(); i++) { + if (blocks[i]->HasTokenList(eff)) { + if (NPOptionManager::getInstance()->GetVerboseLevel()) + cout << endl << "//// Exogam Efficiency" << endl; + unsigned int FirstCr = blocks[i]->GetInt("FirstCr"); + unsigned int LastCr = blocks[i]->GetInt("LastCr"); + Source_name = blocks[i]->GetString("Source"); + Source_activity = blocks[i]->GetInt("SourceActivity"); + minmax = blocks[i]->GetInt("minmax"); + Time = blocks[i]->GetInt("Time"); + for(unsigned int k = FirstCr; k <= LastCr; k++){ + DoEfficiency[k] = true; + } + } + else { + cout << "ERROR: Missing token for Exogam Efficiency blocks, check your " + "input " + "file" + << endl; + exit(1); + } + } +} + +void TExogamPhysics::FillHistogramsEfficiency() { + Clear(); + if (NPOptionManager::getInstance()->IsReader()) + m_EventData = &(**r_ReaderEventData); + + auto TH1Map = RootHistogramsCalib::getInstance()->GetTH1Map(); + TString hname; + + std::map<unsigned int,std::vector<unsigned int>> HitsID; + + for(unsigned int i = 0; i < m_EventData->GetExoMult(); i++){ + // Doing flange and crystal matching + if (m_EventData->GetExoE(i) > m_EXO_E_RAW_Threshold){ + E.push_back(fEXO_E(m_EventData, i)); + flange_nbr = MapCrystalFlangeCLover[m_EventData->GetExoCrystal(i)].first; + crystal_nbr = MapCrystalFlangeCLover[m_EventData->GetExoCrystal(i)].second; + Flange.push_back(flange_nbr); + Crystal.push_back(crystal_nbr); + TS.push_back(m_EventData->GetExoTS(i)); + HitsID[flange_nbr].push_back(i); + } + } + for(auto it = HitsID.begin(); it != HitsID.end(); it++){ + double E_AddBack = 0; + double E_Max = 0; + unsigned int Id_Max = 0; + for(auto itvec = (*it).second.begin(); itvec !=(*it).second.end(); itvec++){ + double E_Crystal = fEXO_E(m_EventData, *itvec); + // std::cout << E_Crystal << " " << m_EventData->GetExoE(*itvec) << std::endl; + E_AddBack+= E_Crystal; + if(E_Max < E_Crystal){ + E_Max = E_Crystal; + Id_Max = *itvec; + + } + } + hname = Form("EXO_E%d", m_EventData->GetExoCrystal(Id_Max)); + (*TH1Map)["Exogam"][hname]->Fill(1000.*E_AddBack); + hname = Form("EXO_TS%d",m_EventData->GetExoCrystal(Id_Max)); + (*TH1Map)["Exogam"][hname]->Fill(m_EventData->GetExoTS(Id_Max)); + (*TH1Map)["Exogam"]["EXO_E_all"]->Fill(1000.*E_AddBack); + (*TH1Map)["Exogam"]["EXO_TS_all"]->Fill(m_EventData->GetExoTS(Id_Max)); + // if(m_EventData->GetExoTS(Id_Max) > 15657103568298) + // std::cout << E_AddBack << " " << m_EventData->GetExoTS(Id_Max) << " " <<m_EventData->GetExoCrystal(Id_Max) << std::endl; + } +} + +void TExogamPhysics::EvaluateEfficiency_F(std::string DetectorID, ofstream* efficiency_file, double Source_activity) { + auto TH1Map = RootHistogramsCalib::getInstance()->GetTH1Map(); + auto TCanvasMap = RootHistogramsCalib::getInstance()->GetTCanvasMap(); + auto TGraphMap = RootHistogramsCalib::getInstance()->GetTGraphMap(); + + + TString hname = "EXO_E"+DetectorID; + + auto c1 = new TCanvas("c1","c1",800,600); + c1->SetName("Peaks Fitted "+hname); + c1->SetTitle("Peaks Fitted "+hname); + FindPeaks((*TH1Map)["Exogam"][hname]); + (*TH1Map)["Exogam"][hname]->Draw(); + (*TH1Map)["Exogam"][hname]->GetXaxis()->SetRangeUser(0.,*std::max_element(Source_E.begin(),Source_E.end())*1.1*1000); + c1->Modified(); + c1->Update(); + (*TCanvasMap)["Exogam"][hname] = c1; + std::vector<std::pair<double, double>> EfficiencyPoints; + std::vector<std::pair<double, double>> EfficiencyPointsErr; + + + // Get number of counts for each energy + for(int j = 0; j < Energies.size(); j++){ + FitResult= nullptr; + double Area[2]; + FitFunction((*TH1Map)["Exogam"][hname],j,Area); + std::cout << "TEST HUGO " << Area[0] << " " << Area[1] << std::endl; + double FWHM = fFitFunction->GetParameter(6); + double FWHMerr = fFitFunction->GetParError(6); + double mean = fFitFunction->GetParameter(5); + double meanerr = fFitFunction->GetParError(5); + EfficiencyPoints.push_back(std::make_pair(mean,Area[0])); + EfficiencyPointsErr.push_back(std::make_pair(meanerr,Area[1])); + } + // Get TS difference + hname = "EXO_TS"+DetectorID; + // double TimeDifference = ((*TH1Map)["Exogam"][hname]->GetXaxis()->GetXmax() - (*TH1Map)["Exogam"][hname]->GetXaxis()->GetXmin())/(pow(10,8)); + double TimeDifference = Time; + + + auto g = new TGraphErrors; + std:: cout << efficiency_file << " " << (*efficiency_file).is_open() << std::endl; + hname = "Detector "+DetectorID; + std:: cout << hname << " "; + g->SetName("EfficiencyResults "+hname); + g->SetTitle("Efficiency Results "+hname); + (*efficiency_file) << hname << " "; + for(unsigned int i = 0; i < EfficiencyPoints.size(); i++){ + + double Efficiency = EfficiencyPoints[i].second/(Source_activity*Source_branching_ratio[SourceID[i]]/100.*TimeDifference); + g->SetPoint(i,EfficiencyPoints[i].first, Efficiency); + double EfficiencyErr = Efficiency*sqrt(pow(1e-8/TimeDifference,2) + pow(Source_branching_ratio_err[SourceID[i]]/Source_branching_ratio[SourceID[i]],2) + pow(EfficiencyPointsErr[i].second/EfficiencyPoints[i].second,2)); + g->SetPointError(i,EfficiencyPointsErr[i].first, EfficiencyErr); + if(DetectorID.compare("_all")!=0) + { + auto crystalgraph = (*TGraphMap)["Exogam"]["Exo_Eff_crystal "+NPL::itoa(int(Source_E[SourceID[i]]*1000.))+" keV"]; + std::cout << "Exo_Eff_crystal "+NPL::itoa(int(Source_E[SourceID[i]]*1000.))+" keV" << std::endl; + unsigned int N = crystalgraph->GetN(); + crystalgraph->SetPoint(N, std::atoi(DetectorID.c_str()), Efficiency); + crystalgraph->SetPointError(N, 0., EfficiencyErr); + } + (*efficiency_file) << scientific << setprecision(6) << setw(14) << EfficiencyPoints[i].first << " " + << EfficiencyPointsErr[i].first << " " << Efficiency << " " << EfficiencyErr; + } + (*efficiency_file) << "\n"; + hname = "EXO_Eff"+DetectorID; + (*TGraphMap)["Exogam"][hname] = g; + + auto c2 = new TCanvas("c2","c2",800,600); + c2->SetName("EfficiencyResults "+hname); + c2->SetTitle("Efficiency Results "+hname); + (*TGraphMap)["Exogam"][hname]->Draw("ap"); + // gDirectory->Add((*TGraphMap)["Exogam"][hname]); + c2->Modified(); + c2->Update(); + (*TCanvasMap)["Exogam"][hname] = c2; + + //if(FitResults.size() > 1) + //{ + // (*TGraphMap)["Exogam"][Form("Calib_Graph_%s",hnameEXOE.c_str())] = (TGraphErrors*)(CubixEnergyCal->fCalibGraph->Clone()); + // (*TGraphMap)["Exogam"][Form("Calib_Graph_%s",hnameEXOE.c_str())]->GetYaxis()->SetTitle("Energy (MeV)"); + // (*TGraphMap)["Exogam"][Form("Calib_Graph_%s",hnameEXOE.c_str())]->SetTitle(Form("Calibration_Graph_%s",hnameEXOE.c_str())); + + // (*TGraphMap)["Exogam"][Form("Residue_Graph_%s",hnameEXOE.c_str())] = (TGraphErrors*)(CubixEnergyCal->fResidueGraph->Clone()); + // (*TGraphMap)["Exogam"][Form("Residue_Graph_%s",hnameEXOE.c_str())]->GetXaxis()->SetTitle("Energy (MeV)"); + // (*TGraphMap)["Exogam"][Form("Residue_Graph_%s",hnameEXOE.c_str())]->GetYaxis()->SetTitle("Residue (MeV)"); + // (*TGraphMap)["Exogam"][Form("Residue_Graph_%s",hnameEXOE.c_str())]->SetTitle(Form("Residue_Graph_%s",hnameEXOE.c_str())); + //} + +} + +int TExogamPhysics::FindMatchingEnergy(double Energy){ + for(unsigned int i = 0; i < Source_E.size(); i++){ + if(abs(Source_E[i]*1000 - Energy) < minmax) + return i; + } + return -1; +} + +void TExogamPhysics::FindPeaks(TH1* Hist){ + Energies.clear(); + MinMax.clear(); + SourceID.clear(); + TSpectrum *tspec = new TSpectrum; + tspec->Search(Hist,sigma,"goff",threshold); + + int NPeaks = tspec->GetNPeaks(); + + for(int i=0 ; i<NPeaks ; i++) { + double Energy = tspec->GetPositionX()[i]; + double Value = tspec->GetPositionY()[i]; + double MaxGlob = Hist->GetMaximum(); + // Next line finds is a peak in the source is recognized + std::cout << "Energy 1 " << Energy << std::endl; + int SourceIndex = FindMatchingEnergy(Energy); + std::cout << Energy << " " << SourceIndex << std::endl; + if(SourceIndex > -1){ + Energies.push_back(Energy); + MinMax.push_back(std::make_pair(Energy-minmax,Energy+minmax)); + SourceID.push_back(SourceIndex); + } + } + + Hist->GetYaxis()->SetRangeUser(0,Hist->GetMaximum()*1.1); + + std::vector<int> Indexes(Energies.size()); + for(unsigned int i = 0; i < Indexes.size();i++){ + Indexes[i] = i; + } + + std::sort(Indexes.begin(), Indexes.end(), [this](int i1, int i2) { + return this->Energies[i1] < this->Energies[i2];}); + std::vector<double> Energies_sorted(Energies.size()); + std::vector<int> SourceID_sorted(SourceID.size()); + std::vector<std::pair<double,double>> MinMax_sorted(MinMax.size()); + + for(unsigned int i = 0; i < Indexes.size();i++){ + Energies_sorted[i] = Energies[Indexes[i]]; + SourceID_sorted[i] = SourceID[Indexes[i]]; + MinMax_sorted[i] = MinMax[Indexes[i]]; + } + + Energies = Energies_sorted; + SourceID = SourceID_sorted; + MinMax = MinMax_sorted; + + for(auto v: Indexes) + std::cout << v << std::endl; + + for(auto v: Energies) + std::cout << v << std::endl; + for(auto v: MinMax) + std::cout << v.first << " " << v.second << std::endl; + std::cout << std::endl; +} + +void TExogamPhysics::InitFitParameters(){ + Minimizer = "Minuit2"; + Algorithm = "Migrad"; + Tolerance = 0.1; + PrintLevel = 0; + + + // Fit Parameters + ROOT::Math::MinimizerOptions::SetDefaultMinimizer(Minimizer.c_str(),Algorithm.c_str()); + ROOT::Math::MinimizerOptions::SetDefaultTolerance(Tolerance); + ROOT::Math::MinimizerOptions::SetDefaultPrintLevel(PrintLevel); + DefFWHM = 2; + DefFWHM_min = 1; + DefFWHM_max = 5; + + UseLT = false; + LeftTailVal = 5; + LeftTailValMin = 2; + LeftTailValMax = 10; + + UseRT = false; + RightTailVal = 2; + RightTailValMin = 0.1; + RightTailValMax = 5; + + UseStep = false; + StepVal = 0.01; + StepValMin = -1.; + StepValMax = 1.; + + BackgroundType = "exp"; +} + +void TExogamPhysics::FitFunction(TH1* Hist, int PeakID, double* Area){ + // Somehow a copy of cubix fit function, but removing all the parts of the interface + + InitFitParameters(); + + if(Energies.size() != MinMax.size()) + { + std::cout << "Error: Energies and MinMax should have the same size !" << std::endl; + return; + } + // Int_t NPars = 4+6*Energies.size(); + int NPars = 10; + + delete fFitFunction; + fFitFunction = new TF1("MyFit", this, &TExogamPhysics::DoubleTailedStepedGaussian, MinMax[PeakID].first, MinMax[PeakID].second, NPars, "TExogamPhysicsFit", "DoubleTailedStepedGaussian"); + + // Changing parameter 0 so that its the peakID (nb of peaks always 1) + fFitFunction->SetParName(0, "PeakID"); + fFitFunction->SetParName(1, "BkgConst"); + fFitFunction->SetParName(2, "BkgSlope"); + fFitFunction->SetParName(3, "BkgExp"); + + fFitFunction->SetParName(4+0, Form("Height")); + fFitFunction->SetParName(4+1, Form("Position")); + fFitFunction->SetParName(4+2, Form("FWHM")); + fFitFunction->SetParName(4+3, Form("LeftTail")); + fFitFunction->SetParName(4+4, Form("RightTail")); + fFitFunction->SetParName(4+5, Form("AmplitudeStep")); + + fFitFunction->SetNpx(1000); + fFitFunction->SetLineColor(kRed); + + fFitFunction->FixParameter(0, PeakID); // 1 peak + + //Double_t x,y; + //x = fPad->GetUxmin(); + //y = fPad->GetUxmax(); + + //Calc Bckd + fFitFunction->SetParameter(1, Hist->GetBinContent(Hist->FindBin(MinMax[PeakID].first))); + fFitFunction->SetParLimits(1, 0.,Hist->GetMaximum()); + + fFitFunction->SetParameter(2, 0); + fFitFunction->SetParLimits(2, -50., 50.); + fFitFunction->SetParameter(3, 0.); + fFitFunction->SetParLimits(3, -50., 50.); + + if(BackgroundType == "pol1") + fFitFunction->FixParameter(3,0); + else if(BackgroundType == "exp") + fFitFunction->FixParameter(2,0); + + //Height + fFitFunction->SetParameter(4+0, Hist->GetBinContent(Hist->FindBin(Energies[PeakID])) - (Hist->GetBinContent(Hist->FindBin(MinMax[PeakID].first))+Hist->GetBinContent(Hist->FindBin(MinMax[PeakID].first)))*0.5 ); + fFitFunction->SetParLimits(4+0, fFitFunction->GetParameters()[4+0]*0.5, fFitFunction->GetParameters()[4+0]*1.5); + + //Position + fFitFunction->SetParameter(4+1, Energies[PeakID]); + // fFitFunction->SetParLimits(4+1, Energies[PeakID]-DefFWHM, Energies[PeakID]+DefFWHM); + fFitFunction->SetParLimits(4+1, MinMax[PeakID].first, MinMax[PeakID].second); + // In case there is a need to fix mean pos (not needed her) + //fFitFunction->FixParameter(4+i*6+1,fEnergies[i]); + + //FWHM + fFitFunction->SetParameter(4+2, DefFWHM); + fFitFunction->SetParLimits(4+2, DefFWHM_min, DefFWHM_max); + // In case there is a need to fix FWHM (not needed her) + //fFitFunction->FixParameter(4+i*6+2,DefFWHM); + + //LeftTail + fFitFunction->SetParameter(4+3, LeftTailVal); + fFitFunction->SetParLimits(4+3, LeftTailValMin, LeftTailValMax); + if(!UseLT) + fFitFunction->FixParameter(4+3,-5); + // In case there is a need to fix LT (not needed her) + //fFitFunction->FixParameter(4+3,LeftTailVal); + + //RightTail + fFitFunction->SetParameter(4+4, RightTailVal); + fFitFunction->SetParLimits(4+4, RightTailValMin, RightTailValMax); + if(!UseRT) + fFitFunction->FixParameter(4+4,5); + // In case there is a need to fix RT (not needed her) + // fFitFunction->FixParameter(4+4,RightTailVal); + + //AmplitudeStep + fFitFunction->SetParameter(4+5, StepVal); + fFitFunction->SetParLimits(4+5, StepValMin, StepValMax); + if(!UseStep) + fFitFunction->FixParameter(4+5,0); + + // Hist->GetXaxis()->SetRangeUser(x,y); + + TString FitOpt = "QR0S"; + if(PrintLevel>0) FitOpt +="V"; + FitOpt += FitOptions; + FitResult = Hist->Fit(fFitFunction,FitOpt.Data()); + //auto fout = new TFile("./ssd/testbetamin.root","RECREATE"); + //Hist->Write(); + //exit(1); + + // Not necessary for the moment, might as well comment it + //if(fPlayer->fFixAmpli->GetState() == kButtonDown) { + + // //Extract Background + // delete fBackFunction; + // fBackFunction = new TF1("Background", this, &CXFit::StepedBackground, fBackgd[0], fBackgd[1], NPars, "CXFit", "StepedBackground"); + // fBackFunction->SetParameters(fFitFunction->GetParameters()); + + // for(auto i=0U ; i<fEnergies.size() ; i++) { + // Double_t Ampli = fHistogram->GetBinContent(fHistogram->FindBin(fEnergies[i]))- fBackFunction->Eval(fEnergies[i]); + // fFitFunction->FixParameter(4+i*6+0,Ampli); + // } + + // r = fHistogram->Fit(fFitFunction,FitOpt.Data()); + //} + + if(FitResult.Get() == nullptr) + { + std::cout << "Fit result empty, exitting" << std::endl; + return; + } + + //Extract Background + delete fBackFunction; + fBackFunction = new TF1("Background", this, &TExogamPhysics::StepedBackground, MinMax[PeakID].first, MinMax[PeakID].second, NPars, "TExogamPhysicsFit", "StepedBackground"); + fBackFunction->SetParameters(fFitFunction->GetParameters()); + fBackFunction->SetNpx(1000); + + fBackFunction->SetLineColor(kBlue); + fBackFunction->DrawCopy("same"); + + //Extract Residue + fHistogram = Hist; + delete fResidue; + fResidue = new TF1("Residue", this, &TExogamPhysics::Residue, MinMax[PeakID].first, MinMax[PeakID].second, NPars, "TExogamPhysicsFit", "Residue"); + fResidue->SetParameters(fFitFunction->GetParameters()); + fResidue->SetNpx(1000); + + fResidue->SetLineWidth(1); + fResidue->SetLineColor(kBlack); + fResidue->DrawCopy("same"); + + ostringstream text; + + text << "Fit results :"; + text << "Status: "; + if(FitResult->Status()==0) + text << " Successeful" << endl; + else + text << " Failed" << endl; + std::cout<<text.str(); + text.str(""); + + text << "Chi2 = "<< FitResult->Chi2(); + text << "Ndf = "<< FitResult->Ndf(); + text << "P val = "<< FitResult->Prob(); + std::cout<<text.str()<<endl; + + // fListOfPeaks->Clear(); + + text<<"Peak :"; + std::cout<<text.str()<<endl; + + TF1 *peak = new TF1("Peak", this, &TExogamPhysics::PeakFunction, MinMax[PeakID].first, MinMax[PeakID].second, NPars, "TExogamPhysicsFit", "PeakFunction"); + peak->SetParameters(fFitFunction->GetParameters()); + peak->SetParErrors(fFitFunction->GetParErrors()); + peak->SetParameter(1,1);//with backgroud + peak->SetParameter(0,PeakID); + peak->SetNpx(1000); + + peak->SetLineColor(kGreen); + peak->SetLineStyle(kDashed); + peak->DrawCopy("same"); + + + Area[0] = (peak->Integral(MinMax[PeakID].first,MinMax[PeakID].second,1e-6)-fBackFunction->Integral(MinMax[PeakID].first,MinMax[PeakID].second,1e-6))/fHistogram->GetBinWidth(1); + Area[1] = 2*sqrt(Area[0]); + Double_t Mean = peak->GetParameter(4+1); + Double_t MeanErr = peak->GetParError(4+1); + Double_t FWHM = peak->GetParameter(4+2); + Double_t FWHMErr = peak->GetParError(4+2); +// Double_t LeftT = TMath::Abs(peak->GetParameter(4+i*6+3)); +// Double_t LeftTErr = peak->GetParError(4+i*6+3); +// Double_t Right = peak->GetParameter(4+i*6+4); +// Double_t RightErr = peak->GetParError(4+i*6+4); + + peak->SetParameter(1,0);//without backgroud + Double_t Max = peak->GetParameter(4+0); + Double_t MaxErr = peak->GetParError(4+0); + + Double_t FWHM_L = peak->GetX(Max/2,MinMax[PeakID].first,Mean,1e-6); + Double_t FWHM_L_err = peak->GetX((Max-MaxErr)/2,MinMax[PeakID].first,Mean,1e-6); + + Double_t F01_L = Mean-peak->GetX(Max/10.,MinMax[PeakID].first,Mean,1e-6); + Double_t F01_R = peak->GetX(Max/10.,Mean,MinMax[PeakID].second,1e-6)-Mean; + + Double_t FWHM_R = peak->GetX(Max/2,Mean,MinMax[PeakID].second,1e-6); + Double_t FWHM_R_err = peak->GetX((Max-MaxErr)/2,Mean,MinMax[PeakID].second,1e-6); + + + Double_t LeftTailParam = F01_L/(FWHM*0.5); + Double_t RightTailParam = F01_R/(FWHM*0.5); + std::cout<<F01_L<<" "<<FWHM<<" "<<endl; + Double_t FWHM_Real = FWHM_R-FWHM_L; + Double_t FWHM_Real_err = (FWHM_R_err-FWHM_L_err)-FWHM_Real; + peak->SetParameter(1,1);//with backgroud + + text<<left<<setw(11)<<"Mean"<<": "<<setprecision(7)<<setw(10)<<Mean<<" ("<<setprecision(7)<<setw(10)<<MeanErr<<")"; + std::cout<<text.str()<<endl; + text.str(""); + + text<<left<<setw(11)<<"Amplitude"<<": "<<setprecision(7)<<setw(10)<<Max<<" ("<<setprecision(7)<<setw(10)<<MaxErr<<")"; + std::cout<<text.str()<<endl; + text.str(""); + + text<<left<<setw(11)<<"FWHM (gaus)"<<": "<<setprecision(7)<<setw(10)<<FWHM<<" ("<<setprecision(7)<<setw(10)<<FWHMErr<<")"; + std::cout<<text.str()<<endl; + text.str(""); + + text<<left<<setw(11)<<"FWHM (real)"<<": "<<setprecision(7)<<setw(10)<<FWHM_Real<<" ("<<setprecision(7)<<setw(10)<<FWHM_Real_err<<")"; + std::cout<<text.str()<<endl; + text.str(""); + + text<<left<<setw(11)<<"L Tail"<<": "<<setprecision(7)<<setw(10)<<LeftTailParam; + std::cout<<text.str()<<endl; + text.str(""); + + text<<left<<setw(11)<<"R Tail"<<": "<<setprecision(7)<<setw(10)<<RightTailParam; + std::cout<<text.str()<<endl; + text.str(""); + + text<<left<<setw(11)<<"Area"<<": "<<setprecision(7)<<setw(10)<<Area[0]<<" ("<<setprecision(7)<<setw(10)<<Area[1]<<")"; + std::cout<<text.str()<<endl; + text.str(""); + + fFitFunction->DrawCopy("same"); + +} + +double TExogamPhysics::DoubleTailedStepedGaussian(Double_t*xx,Double_t*pp) +{ + Double_t x = xx[0]; + + int PeakID = (int)pp[0]; //Number of subpeaks in the peak range + + Double_t f_tot = 0.; + + Int_t Npar = 6; + + Double_t Back_const = pp[1]; + Double_t Back_slope = pp[2]; + Double_t Back_Exp = pp[3]; + + f_tot += (Back_const + (x-MinMax[PeakID].first)*Back_slope)*exp((x-MinMax[PeakID].first)*Back_Exp); + Double_t Ampli = pp[4+0]; + Double_t Mean = pp[4+1]; + Double_t Sigma = pp[4+2]*1./sqrt(8.*log(2.)); + Double_t Lambda = pp[4+3]; + Double_t Rho = pp[4+4]; + Double_t S = pp[4+5]; + + // std::cout << Back_const << " " << Back_slope << " " << Back_Exp << " " << Ampli << std::endl; + + + Double_t U = (x-Mean)/Sigma; + Double_t f_g = Ampli*TMath::Exp(-U*U*0.5); + Double_t f_lambda = Ampli*TMath::Exp(-0.5*Lambda*(2.*U-Lambda)); + Double_t f_rho = Ampli*TMath::Exp(-0.5*Rho*(2.*U-Rho)); + Double_t f_S = Ampli*S*1./((1+TMath::Exp(U))*(1+TMath::Exp(U))); + + if(U<Lambda) f_tot += f_lambda; + else if(U>Rho) f_tot += f_rho; + else f_tot += f_g; + + f_tot += f_S; + + return f_tot; +} + +double TExogamPhysics::StepedBackground(Double_t*xx,Double_t*pp) +{ + Double_t x = xx[0]; + + Double_t f_tot = 0.; + + int PeakID = (int)pp[0]; //Number of subpeaks in the peak range + + Double_t Back_const = pp[1]; + Double_t Back_slope = pp[2]; + Double_t Back_Exp = pp[3]; + + Int_t Npar = 6; + + f_tot += (Back_const + (x-MinMax[PeakID].first)*Back_slope)*exp((x-MinMax[PeakID].first)*Back_Exp); + + Double_t Ampli = pp[4+0]; + Double_t Mean = pp[4+1]; + Double_t Sigma = pp[4+2]*1./sqrt(8.*log(2.)); + Double_t S = pp[4+5]; + + f_tot += Ampli*S*1./((1+TMath::Exp((x-Mean)/Sigma))*(1+TMath::Exp((x-Mean)/Sigma))); + + return f_tot; +} + +double TExogamPhysics::Residue(Double_t*xx,Double_t*/*pp*/) +{ + Double_t x = xx[0]; + + return fFitFunction->Eval(fHistogram->GetBinCenter(fHistogram->FindBin(x))) - fHistogram->GetBinContent(fHistogram->FindBin(x)); +} + +double TExogamPhysics::PeakFunction(Double_t*xx,Double_t*pp) +{ + Double_t x = xx[0]; + + + Double_t f_tot = 0.; + + Int_t Npar = 6; + + Bool_t WithBackground = true; + if(pp[1]==0) + WithBackground = false; + + Double_t BackGround = fBackFunction->Eval(x); + + if(WithBackground) + f_tot += BackGround; + + Double_t Ampli = pp[4+0]; + Double_t Mean = pp[4+1]; + Double_t Sigma = pp[4+2]*1./sqrt(8.*log(2.)); + Double_t Lambda = pp[4+3]; + Double_t Rho = pp[4+4]; + Double_t S = 0; + + Double_t U = (x-Mean)/Sigma; + Double_t f_g = Ampli*TMath::Exp(-U*U*0.5); + Double_t f_lambda = Ampli*TMath::Exp(-0.5*Lambda*(2.*U-Lambda)); + Double_t f_rho = Ampli*TMath::Exp(-0.5*Rho*(2.*U-Rho)); + Double_t f_S = Ampli*S*1./((1+TMath::Exp(U))*(1+TMath::Exp(U))); + + if(U<Lambda) f_tot += f_lambda; + else if(U>Rho) f_tot += f_rho; + else f_tot += f_g; + + f_tot += f_S; + + return f_tot; +} + /////////////////////////////////////////////////////////////////////////// namespace EXOGAM_LOCAL { // tranform an integer to a string diff --git a/NPLib/Detectors/Exogam/TExogamPhysics.h b/NPLib/Detectors/Exogam/TExogamPhysics.h index 4c72dda7117f3051b56e3045b0d836c101cd9db8..fbd315a1967d1dc074d2c52db0a908df95a766fc 100644 --- a/NPLib/Detectors/Exogam/TExogamPhysics.h +++ b/NPLib/Detectors/Exogam/TExogamPhysics.h @@ -32,6 +32,7 @@ #include "NPVDetector.h" #include "NPVTreeReader.h" #include "Geometry_Clover_Exogam.h" +#include "TExogamGeo.h" #include "TExogamData.h" #include "TExogamCalData.h" #include "TExogamSpectra.h" @@ -44,6 +45,9 @@ #include "TVector2.h" #include "TVector3.h" #include "TObject.h" +#include "Math/MinimizerOptions.h" +#include "TFitResultPtr.h" +#include "TFitResult.h" //#include "TH1.h" //Cubix #if CUBIX @@ -175,10 +179,7 @@ class TExogamPhysics : public TObject, public NPL::VDetector, public TExogamPhys // NB: This method can eventually be the same as BuildPhysicalEvent. void BuildSimplePhysicalEvent() ; //! - double DopplerCorrection(double Energy, double Theta); //! - - /// Routine for doppler correction - double CorrectionDoppler(double theta_gamma, double phi_gamma, double theta_part, double phi_part, double beta_part, double E); //! + double DopplerCorrection(double theta, double beta, double E); //! bool TDCMatch(unsigned int event); //! @@ -222,7 +223,7 @@ class TExogamPhysics : public TObject, public NPL::VDetector, public TExogamPhys void DoCalibrationOuter_F(unsigned int Detector_Nbr, unsigned int Outer_Nbr, ofstream* calib_file, ofstream* dispersion_file){}; //! - void MakeInitialCalibFolder(std::string make_folder); //! + void MakeFolder(std::string make_folder); //! void MakeECalibFolders(std::string make_folder); //! @@ -238,13 +239,39 @@ class TExogamPhysics : public TObject, public NPL::VDetector, public TExogamPhys void CreateCalibrationOuterFiles(ofstream* calib_file,ofstream* dispersion_file); //! - void ReadDoCalibration(NPL::InputParser parser); //! void WriteHistogramsCalib(); //! + void WriteHistogramsEfficiency(); //! + void WriteHistogramsE(); //! + + void InitializeRootHistogramsEfficiency(); //! + + void Efficiency(); + + void FitFunction(TH1* Histogram, int PeakId, double* Area); + + void InitFitParameters(); + + void EvaluateEfficiency_F(std::string DetectorID, ofstream* efficiency_file, double Source_activity); //! + + void ReadEfficiency(NPL::InputParser parser); //! + + void CreateEfficiencyFile(ofstream* efficiency_file); //! + + unsigned long long FindFirstExoTS(); //! + + unsigned long long FindLastExoTS(); //! + + void FillHistogramsEfficiency(); //! + + void FindPeaks(TH1* Hist);//! + + int FindMatchingEnergy(double Energy);//! + // Setting TS Reference void SetRefTS(std::string TSRef_Name, unsigned long long TSRef);//! @@ -310,6 +337,8 @@ class TExogamPhysics : public TObject, public NPL::VDetector, public TExogamPhys vector<int> m_flange;//! map<unsigned int, int> MapFlangeToCloverNumber;//! Clover_struc Exogam_struc;//! + TExogamGeo* ExogamGeo;//! + std::map<unsigned int, double> MapFlangeRadius;//! std::map<unsigned int,std::pair<unsigned int,unsigned int>> MapCrystalFlangeCLover;//! Map key is raw crystal nbr, pair associated is flange nbr and crystal nbr in the flange @@ -331,12 +360,67 @@ class TExogamPhysics : public TObject, public NPL::VDetector, public TExogamPhys std::vector<double> Source_E; //! std::vector<double> Source_Sig; //! std::vector<double> Source_branching_ratio; //! + std::vector<double> Source_branching_ratio_err; //! std::string Source_name;//! + double Source_activity;//! + double Time;//! unsigned int FitPolOrder;//! #if CUBIX CXRecalEnergy* CubixEnergyCal = new CXRecalEnergy();//! #endif + + // Efficiency variables + map<int, bool> DoEfficiency; //! + std::vector<double> Energies;//! + std::vector<int> SourceID;//! + std::vector<std::pair<double, double>> MinMax;//! + double sigma;//! + double threshold;//! + int peaks_nb;//! + double minmax;//! + + private: + // Fit parameters + std::string Minimizer;//! + std::string Algorithm;//! + double Tolerance;//! + int PrintLevel;//! + std::string FitOptions;//! + + Double_t DefFWHM;//! + Double_t DefFWHM_min;//! + Double_t DefFWHM_max;//! + + Double_t LeftTailVal;//! + Double_t LeftTailValMin;//! + Double_t LeftTailValMax;//! + + Double_t RightTailVal;//! + Double_t RightTailValMin;//! + Double_t RightTailValMax;//! + + Double_t StepVal;//! + Double_t StepValMin;//! + Double_t StepValMax;//! + + bool UseLT;//! + bool UseRT;//! + bool UseStep;//! + + TF1 *fFitFunction = nullptr;//! + TF1 *fBackFunction = nullptr;//! + TF1 *fResidue = nullptr;//! + TH1 *fHistogram = nullptr;//! + + double DoubleTailedStepedGaussian(Double_t*xx,Double_t*pp);//! + double StepedBackground(Double_t*xx,Double_t*pp);//! + double PeakFunction(Double_t*xx,Double_t*pp);//! + double Residue(Double_t*xx,Double_t*pp);//! + + std::string BackgroundType;//! + + TFitResultPtr FitResult= nullptr;//! private: // Spectra Class TExogamSpectra* m_Spectra;//! diff --git a/NPLib/Detectors/Exogam/testExo b/NPLib/Detectors/Exogam/testExo new file mode 100755 index 0000000000000000000000000000000000000000..85b33c0ebf7d3988b6ecbee56e87c9a4bfe7215c Binary files /dev/null and b/NPLib/Detectors/Exogam/testExo differ diff --git a/NPLib/Detectors/Minos/TMinosPhysics.cxx b/NPLib/Detectors/Minos/TMinosPhysics.cxx index 04ccd7800a1aceb1e21662b9586040bf2f712bbd..630bdbb67c6f00941d7f0ad5e0a419f228f2842b 100644 --- a/NPLib/Detectors/Minos/TMinosPhysics.cxx +++ b/NPLib/Detectors/Minos/TMinosPhysics.cxx @@ -68,7 +68,7 @@ void TMinosPhysics::BuildPhysicalEvent() { Tracks_P0.push_back(clusters[i].GetP0()); Tracks_Dir.push_back(clusters[i].GetDir()); } - + if (sizeC == 2) { static TVector3 Vertex, delta; Delta_Vertex = MinimumDistanceTwoLines(Tracks_P0[0], Tracks_P0[0] + Tracks_Dir[0], Tracks_P0[1], @@ -90,9 +90,11 @@ void TMinosPhysics::PreTreat() { static string cal_v, cal_o; sizePad = m_EventData->GetPadMult(); + if (sizePad > 20) { for (unsigned int i = 0; i < sizePad; i++) { vector<unsigned short>* Charge = m_EventData->GetChargePtr(i); + if (Charge->size() > 40) { vector<unsigned short>* Time = m_EventData->GetTimePtr(i); m_utility.Calibrate(Time, Charge, i, T, Q); @@ -209,11 +211,11 @@ void TMinosPhysics::Clear() { Tracks_Dir.clear(); // Vertex information - X_Vertex = -1000; - Y_Vertex = -1000; - Z_Vertex = -1000; - Theta_12 = -1000; - Delta_Vertex = -1000; + X_Vertex = -10000; + Y_Vertex = -10000; + Z_Vertex = -10000; + Theta_12 = -10000; + Delta_Vertex = -10000; } /////////////////////////////////////////////////////////////////////////// @@ -235,6 +237,7 @@ void TMinosPhysics::ReadConfiguration(NPL::InputParser parser) { m_utility.SetParameters(m_TimeBin, m_ShapingTime, m_Baseline, m_Sampling); m_Position = blocks[i]->GetTVector3("Position", "mm"); m_ZRotation = blocks[i]->GetDouble("ZRotation", "deg"); + m_TargetLength = blocks[i]->GetDouble("TargetLength","mm"); string xmlpath = blocks[i]->GetString("XML"); NPL::XmlParser xml; xml.LoadFile(xmlpath); diff --git a/NPLib/Detectors/Minos/TMinosPhysics.h b/NPLib/Detectors/Minos/TMinosPhysics.h index f9ce20ac5fb8f8261674c2cb3f9d6f89a8b55741..6c230a6723541ad8513b7815ba222c1cc0855189 100644 --- a/NPLib/Detectors/Minos/TMinosPhysics.h +++ b/NPLib/Detectors/Minos/TMinosPhysics.h @@ -84,7 +84,7 @@ class TMinosPhysics : public TObject, public NPL::VDetector { unsigned int m_Sampling;//! TVector3 m_Position;//! double m_ZRotation;//! - + double m_TargetLength;//! NPL::MinosUtility m_utility;//! // an utility to fit the pad signal NPL::LinearRansac3D m_ransac;//! // a linear ransac to build the 3D tracks @@ -157,6 +157,8 @@ class TMinosPhysics : public TObject, public NPL::VDetector { vector<double> GetPad_Y() {return Y_Pad;} //! vector<double> GetPad_Z() {return Z_Pad;} //! vector<double> GetPad_T() {return T_Pad;} //! + + TVector3 GetVertex() {return TVector3(X_Vertex, Y_Vertex, Z_Vertex);}//! double GetVertexX() {return X_Vertex;} //! double GetVertexY() {return Y_Vertex;} //! double GetVertexZ() {return Z_Vertex;} //! @@ -164,11 +166,15 @@ class TMinosPhysics : public TObject, public NPL::VDetector { double GetDeltaVertex() {return Delta_Vertex;} //! double GetTheta12() {return Theta_12;} //! - int GetNbrOfTracks(){return Tracks_P0.size();} + int GetNbrOfTracks(){return Tracks_P0.size();}//! TVector3 GetTracksP0(unsigned int i){return Tracks_P0[i];}//! TVector3 GetTracksDir(unsigned int i){return Tracks_Dir[i];}//! double Angle(unsigned int i, unsigned j){return Tracks_Dir[i].Angle(Tracks_Dir[j]);}; + + TVector3 GetMinosPosition() {return m_Position;}//! + double GetTargetLength() {return m_TargetLength;}//! + // Static constructor to be passed to the Detector Factory public: static NPL::VDetector* Construct(); diff --git a/NPLib/Detectors/Nebula/TNebulaData.h b/NPLib/Detectors/Nebula/TNebulaData.h index 54eaea6e3fd846bca0b4665c72960171d294e31d..70dd23e5dd50c72bca97611e4a17697e15a4c317 100644 --- a/NPLib/Detectors/Nebula/TNebulaData.h +++ b/NPLib/Detectors/Nebula/TNebulaData.h @@ -51,7 +51,6 @@ class TNebulaData : public TObject { // Time vector<UShort_t> fNebula_Td_ID; vector<Double_t> fNebula_Td_Time; - ////////////////////////////////////////////////////////////// // Constructor and destructor diff --git a/NPLib/Detectors/Nebula/TNebulaPhysics.cxx b/NPLib/Detectors/Nebula/TNebulaPhysics.cxx index 6a9202c7a4136d8c325bf277e154d9e73e9e9deb..88999657a592b147b8fcda25b84398b127d1f71a 100644 --- a/NPLib/Detectors/Nebula/TNebulaPhysics.cxx +++ b/NPLib/Detectors/Nebula/TNebulaPhysics.cxx @@ -36,21 +36,27 @@ using namespace std; #include "NPDetectorFactory.h" #include "NPOptionManager.h" #include "NPSystemOfUnits.h" + // ROOT #include "TChain.h" -ClassImp(TNebulaPhysics) +//To get light speed +#include "NPPhysicalConstants.h" +ClassImp(TNebulaPhysics) /////////////////////////////////////////////////////////////////////////// TNebulaPhysics::TNebulaPhysics() : m_EventData(new TNebulaData), m_EventPhysics(this), m_Spectra(0), - m_Q_RAW_Threshold(0), // adc channels - m_Q_Threshold(7), // normal bars in MeV + m_Q_RAW_Threshold(1), // adc channels + m_Q_Threshold(6), // normal bars in MeV m_V_Threshold(1), // veto bars in MeV - m_NumberOfBars(0) { + m_NumberOfBars(0) +{ + m_Material_Index = 1.58; + m_Signal_Effective_Velocity = (299792458/m_Material_Index)*NPUNITS::m/NPUNITS::s; } /////////////////////////////////////////////////////////////////////////// @@ -63,9 +69,11 @@ void TNebulaPhysics::ReadXML(NPL::XmlParser xml){ unsigned int id = b[i]->AsInt("ID"); // position - PositionX[id] = b[i]->AsDouble("PosX"); - PositionY[id] = b[i]->AsDouble("PosY"); + PositionX[id] = b[i]->AsDouble("PosX"); + PositionY[id] = b[i]->AsDouble("PosY"); PositionZ[id] = b[i]->AsDouble("PosZ"); + SubLayer[id] = b[i]->AsInt("SubLayer"); + std::string tree_name = RootInput::getInstance()->GetChain()->GetName(); if(tree_name!="SimulatedTree"){ // linear cal @@ -88,7 +96,9 @@ void TNebulaPhysics::ReadXML(NPL::XmlParser xml){ // DT position cal DTa[id] = b[i]->AsDouble("DTCal");//! DTb[id] = b[i]->AsDouble("DTOff");//! + } + else{ // linear cal aQu[id] =1; @@ -101,18 +111,19 @@ void TNebulaPhysics::ReadXML(NPL::XmlParser xml){ bTd[id] =0; // T average offset - avgT0[id]= 0; + //avgT0[id]= 0; + avgT0[id]= -4.743; // slew correction T= tcal +slwT/sqrt(Qcal) slwTu[id] = 0; slwTd[id] = 0; // DT position cal - DTa[id] = 1;//! + // DTa[id] = 1;//! DTb[id] = 0;//! - - + DTa[id] = 0.5*m_Signal_Effective_Velocity;//! } + } cout << " -> " << m_NumberOfBars << " bars found" << endl;; @@ -129,17 +140,25 @@ void TNebulaPhysics::BuildSimplePhysicalEvent() { void TNebulaPhysics::BuildPhysicalEvent() { // apply thresholds and calibration + // instantiate CalibrationManager static CalibrationManager* Cal = CalibrationManager::getInstance(); static double rawQup,calQup,rawQdown,calQdown,rawTup,calTup,rawTdown,calTdown,calQ,calT,Y; static unsigned int ID; + + + static double neutron_mass = 939.57; // MeV/c^2 + static double c_light = 299792458; //m.s-1 + // All vector size static unsigned int QUsize, QDsize, TUsize, TDsize ; QUsize = m_EventData->GetChargeUpMult(); QDsize = m_EventData->GetChargeDownMult(); TUsize = m_EventData->GetTimeUpMult(); TDsize = m_EventData->GetTimeDownMult(); + static double threshold; + // loop on Qup for (unsigned int qup = 0; qup < QUsize ; qup++) { rawQup = m_EventData->GetChargeUp(qup); @@ -208,14 +227,16 @@ void TNebulaPhysics::BuildPhysicalEvent() { DetectorNumber.push_back(ID); Charge.push_back(calQ); TOF.push_back(calT); - PosY.push_back(Y+PositionY[ID]); + PosY.push_back(Y+PositionY[ID]); PosX.push_back(PositionX[ID]); - PosZ.push_back(PositionZ[ID]); + PosZ.push_back(PositionZ[ID] + m_offset[0][2]); // [0]-> only one Nebula detector [2]-> z position - if(ID<121) - IsVeto.push_back(0); - else + if(SubLayer[ID]!=0){ + IsVeto.push_back(0); + } + else{ IsVeto.push_back(1); + } } } diff --git a/NPLib/Detectors/Nebula/TNebulaPhysics.h b/NPLib/Detectors/Nebula/TNebulaPhysics.h index 5e1499b8ee42b0a6d6e6bfcecedf0aa364efbd6d..ea13da12312862c44b196db1ee716ef720ed66b5 100644 --- a/NPLib/Detectors/Nebula/TNebulaPhysics.h +++ b/NPLib/Detectors/Nebula/TNebulaPhysics.h @@ -74,7 +74,22 @@ class TNebulaPhysics : public TObject, public NPL::VDetector { public: TVector3 GetPos(const unsigned int& i) const{ return TVector3(PosX[i],PosY[i],PosZ[i]); - } + }; + + double GetCharge(const unsigned int& i) const{ + return Charge[i]; + }; + int GetChargeMult() const{ + return Charge.size(); + }; + + double GetDetectorNumber(const unsigned int& i) const{ + return DetectorNumber[i]; + }; + + int GetDetectorNumberMult() const{ + return DetectorNumber.size(); + }; // Return true if one veto fired bool HasVeto(){ @@ -193,6 +208,10 @@ class TNebulaPhysics : public TObject, public NPL::VDetector { double m_Q_Threshold; //! double m_V_Threshold; //! + //effective velocity of signal inside bar + double m_Material_Index; //! + double m_Signal_Effective_Velocity; //! + public: void SetQThreshold(double t) {m_Q_Threshold=t;}; void SetVThreshold(double t) {m_V_Threshold=t;}; @@ -200,6 +219,9 @@ class TNebulaPhysics : public TObject, public NPL::VDetector { private: int m_NumberOfBars; //! + private: + std::map<unsigned int , unsigned int> SubLayer;//! + private: // offset and inversion std::map<unsigned int, TVector3> m_offset;//! std::map<unsigned int, bool> m_invertX;//! diff --git a/NPLib/Detectors/NeuLAND/CMakeLists.txt b/NPLib/Detectors/NeuLAND/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..1898430d9bfeae35030990dd5aa1e6066743ac99 --- /dev/null +++ b/NPLib/Detectors/NeuLAND/CMakeLists.txt @@ -0,0 +1,6 @@ +add_custom_command(OUTPUT TNeuLANDPhysicsDict.cxx COMMAND ${CMAKE_BINARY_DIR}/scripts/build_dict.sh TNeuLANDPhysics.h TNeuLANDPhysicsDict.cxx TNeuLANDPhysics.rootmap libNPNeuLAND.dylib DEPENDS TNeuLANDPhysics.h) +add_custom_command(OUTPUT TNeuLANDDataDict.cxx COMMAND ${CMAKE_BINARY_DIR}/scripts/build_dict.sh TNeuLANDData.h TNeuLANDDataDict.cxx TNeuLANDData.rootmap libNPNeuLAND.dylib DEPENDS TNeuLANDData.h) +add_library(NPNeuLAND SHARED TNeuLANDSpectra.cxx TNeuLANDData.cxx TNeuLANDPhysics.cxx TNeuLANDDataDict.cxx TNeuLANDPhysicsDict.cxx ) +target_link_libraries(NPNeuLAND ${ROOT_LIBRARIES} NPCore) +install(FILES TNeuLANDData.h TNeuLANDPhysics.h TNeuLANDSpectra.h DESTINATION ${CMAKE_INCLUDE_OUTPUT_DIRECTORY}) + diff --git a/NPLib/Detectors/NeuLAND/TNeuLANDData.cxx b/NPLib/Detectors/NeuLAND/TNeuLANDData.cxx new file mode 100644 index 0000000000000000000000000000000000000000..5dbaec95834bef96f8e575f7ee2bb4f06c6f91f7 --- /dev/null +++ b/NPLib/Detectors/NeuLAND/TNeuLANDData.cxx @@ -0,0 +1,92 @@ +/***************************************************************************** + * Copyright (C) 2009-2019 this file is part of the NPTool Project * + * * + * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * + * For the list of contributors see $NPTOOL/Licence/Contributors * + *****************************************************************************/ + +/***************************************************************************** + * Original Author: Adrien Matta contact address: matta@lpccaen.in2p3.fr * + * * + * Creation Date : December 2019 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: * + * This class hold NeuLAND Raw data * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ + +#include "TNeuLANDData.h" + +#include <iostream> +#include <fstream> +#include <sstream> +#include <string> +using namespace std; + +ClassImp(TNeuLANDData) + + +////////////////////////////////////////////////////////////////////// +TNeuLANDData::TNeuLANDData() { +} + + + +////////////////////////////////////////////////////////////////////// +TNeuLANDData::~TNeuLANDData() { +} + + + +////////////////////////////////////////////////////////////////////// +void TNeuLANDData::Clear() { + // UP // + // Charge + fNeuLAND_Qu_ID.clear(); + fNeuLAND_Qu_Charge.clear(); + + // Time + fNeuLAND_Tu_ID.clear(); + fNeuLAND_Tu_Time.clear(); + + // DOWN // + // Charge + fNeuLAND_Qd_ID.clear(); + fNeuLAND_Qd_Charge.clear(); + + // Time + fNeuLAND_Td_ID.clear(); + fNeuLAND_Td_Time.clear(); +} + + + +////////////////////////////////////////////////////////////////////// +void TNeuLANDData::Dump() const { + // This method is very useful for debuging and worth the dev. + cout << "XXXXXXXXXXXXXXXXXXXXXXXX New Event [TNeuLANDData::Dump()] XXXXXXXXXXXXXXXXX" << endl; + /* + // Energy + size_t mysize = fNeuLAND_E_DetectorNbr.size(); + cout << "NeuLAND_E_Mult: " << mysize << endl; + + for (size_t i = 0 ; i < mysize ; i++){ + cout << "DetNbr: " << fNeuLAND_E_DetectorNbr[i] + << " Energy: " << fNeuLAND_Energy[i]; + } + + // Time + mysize = fNeuLAND_T_DetectorNbr.size(); + cout << "NeuLAND_T_Mult: " << mysize << endl; + + for (size_t i = 0 ; i < mysize ; i++){ + cout << "DetNbr: " << fNeuLAND_T_DetectorNbr[i] + << " Time: " << fNeuLAND_Time[i]; + } + */ +} diff --git a/NPLib/Detectors/NeuLAND/TNeuLANDData.h b/NPLib/Detectors/NeuLAND/TNeuLANDData.h new file mode 100644 index 0000000000000000000000000000000000000000..4f6f274c11244a584644af1a6e1ff40ada9981be --- /dev/null +++ b/NPLib/Detectors/NeuLAND/TNeuLANDData.h @@ -0,0 +1,147 @@ +#ifndef __NeuLANDDATA__ +#define __NeuLANDDATA__ +/***************************************************************************** + * Copyright (C) 2009-2019 this file is part of the NPTool Project * + * * + * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * + * For the list of contributors see $NPTOOL/Licence/Contributors * + *****************************************************************************/ + +/***************************************************************************** + * Original Author: Adrien Matta contact address: matta@lpccaen.in2p3.fr * + * * + * Creation Date : December 2019 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: * + * This class hold NeuLAND Raw data * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ + +// STL +#include <vector> +using namespace std; + +// ROOT +#include "TObject.h" + +class TNeuLANDData : public TObject { + ////////////////////////////////////////////////////////////// + // data members are hold into vectors in order + // to allow multiplicity treatment + private: + // UP // + // Charge + vector<UShort_t> fNeuLAND_Qu_ID; + vector<Double_t> fNeuLAND_Qu_Charge; + + // Time + vector<UShort_t> fNeuLAND_Tu_ID; + vector<Double_t> fNeuLAND_Tu_Time; + + // DOWN // + // Charge + vector<UShort_t> fNeuLAND_Qd_ID; + vector<Double_t> fNeuLAND_Qd_Charge; + + // Time + vector<UShort_t> fNeuLAND_Td_ID; + vector<Double_t> fNeuLAND_Td_Time; + + + ////////////////////////////////////////////////////////////// + // Constructor and destructor + public: + TNeuLANDData(); + ~TNeuLANDData(); + + + ////////////////////////////////////////////////////////////// + // Inherited from TObject and overriden to avoid warnings + public: + void Clear(); + void Clear(const Option_t*) {}; + void Dump() const; + + + ////////////////////////////////////////////////////////////// + // Getters and Setters + // Prefer inline declaration to avoid unnecessary called of + // frequently used methods + // add //! to avoid ROOT creating dictionnary for the methods + public: + ////////////////////// SETTERS //////////////////////// + // UP // + // Charge + inline void SetChargeUp(const Double_t& ID, const Double_t& Charge){ + fNeuLAND_Qu_ID.push_back(ID); + fNeuLAND_Qu_Charge.push_back(Charge); + };//! + + // Time + inline void SetTimeUp(const Double_t& ID, const Double_t& Time){ + fNeuLAND_Tu_ID.push_back(ID); + fNeuLAND_Tu_Time.push_back(Time); + };//! + + // DOWN // + // Charge + inline void SetChargeDown(const Double_t& ID, const Double_t& Charge){ + fNeuLAND_Qd_ID.push_back(ID); + fNeuLAND_Qd_Charge.push_back(Charge); + };//! + + // Time + inline void SetTimeDown(const Double_t& ID, const Double_t& Time){ + fNeuLAND_Td_ID.push_back(ID); + fNeuLAND_Td_Time.push_back(Time); + };//! + + ////////////////////// GETTERS //////////////////////// + // MULT // + // Charge + inline unsigned int GetChargeUpMult() const + {return fNeuLAND_Qu_ID.size();}; + // Time + inline unsigned int GetTimeUpMult() const + {return fNeuLAND_Tu_ID.size();}; + // Charge + inline unsigned int GetChargeDownMult() const + {return fNeuLAND_Qd_ID.size();}; + // Time + inline unsigned int GetTimeDownMult() const + {return fNeuLAND_Td_ID.size();}; + + // Value // + // Charge + inline UShort_t GetChargeUpID(unsigned int& i) const + {return fNeuLAND_Qu_ID[i];}; + inline double GetChargeUp(unsigned int& i) const + {return fNeuLAND_Qu_Charge[i];}; + // Time + inline UShort_t GetTimeUpID(unsigned int& i) const + {return fNeuLAND_Tu_ID[i];}; + inline double GetTimeUp(unsigned int& i) const + {return fNeuLAND_Tu_Time[i];}; + // Charge + inline UShort_t GetChargeDownID(unsigned int& i) const + {return fNeuLAND_Qd_ID[i];}; + inline double GetChargeDown(unsigned int& i) const + {return fNeuLAND_Qd_Charge[i];}; + // Time + inline UShort_t GetTimeDownID(unsigned int& i) const + {return fNeuLAND_Td_ID[i];}; + inline double GetTimeDown(unsigned int& i) const + {return fNeuLAND_Td_Time[i];}; + + + ////////////////////////////////////////////////////////////// + // Required for ROOT dictionnary + ClassDef(TNeuLANDData,1) // NeuLANDData structure +}; + +#endif diff --git a/NPLib/Detectors/NeuLAND/TNeuLANDPhysics.cxx b/NPLib/Detectors/NeuLAND/TNeuLANDPhysics.cxx new file mode 100644 index 0000000000000000000000000000000000000000..baf075286cb986c0a15fc729c99cc0e6ac606919 --- /dev/null +++ b/NPLib/Detectors/NeuLAND/TNeuLANDPhysics.cxx @@ -0,0 +1,415 @@ +/***************************************************************************** + * Copyright (C) 2009-2019 this file is part of the NPTool Project * + * * + * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * + * For the list of contributors see $NPTOOL/Licence/Contributors * + *****************************************************************************/ + +/***************************************************************************** + * Original Author: Audrey ANNE contact address: anne@lpccaen.in2p3.fr * + * * + * Creation Date : November 2023 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: * + * This class hold NeuLAND Treated data * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ + +#include "TNeuLANDPhysics.h" + +// STL +#include <sstream> +#include <iostream> +#include <cmath> +#include <stdlib.h> +#include <limits> +using namespace std; + +// NPL +#include "RootInput.h" +#include "RootOutput.h" +#include "NPDetectorFactory.h" +#include "NPOptionManager.h" +#include "NPSystemOfUnits.h" +// ROOT +#include "TChain.h" + +ClassImp(TNeuLANDPhysics) + + + /////////////////////////////////////////////////////////////////////////// +TNeuLANDPhysics::TNeuLANDPhysics() + : m_EventData(new TNeuLANDData), + m_EventPhysics(this), + m_Spectra(0), + m_Q_RAW_Threshold(0), // adc channels + m_Q_Threshold(7), // normal bars in MeV + m_V_Threshold(1), // veto bars in MeV + m_NumberOfBars(0) + { + m_Material_Index = 1.58; + m_Signal_Effective_Velocity = (3.0e8/m_Material_Index)*NPUNITS::m/NPUNITS::s; + } + +/////////////////////////////////////////////////////////////////////////// +/// A usefull method to bundle all operation to add a detector +void TNeuLANDPhysics::ReadXML(NPL::XmlParser xml){ + std::vector<NPL::XML::block*> b = xml.GetAllBlocksWithName("NEULAND"); + + for(unsigned int i = 0 ; i < b.size() ; i++){ + m_NumberOfBars++; + unsigned int id = b[i]->AsInt("ID"); + + // position + PositionX[id] = b[i]->AsDouble("xpos"); + PositionY[id] = b[i]->AsDouble("ypos"); + PositionZ[id] = b[i]->AsDouble("zpos"); + + // bar direction + DirectionBar[id] = b[i]->AsString("direction"); + + std::string tree_name = RootInput::getInstance()->GetChain()->GetName(); + + if(tree_name!="SimulatedTree"){ + // linear cal + aQu[id] = b[i]->AsDouble("QUCal"); + bQu[id] = b[i]->AsDouble("QUPed"); + aQd[id] = b[i]->AsDouble("QDCal"); + bQd[id] = b[i]->AsDouble("QDPed"); + aTu[id] = b[i]->AsDouble("TUCal"); + bTu[id] = b[i]->AsDouble("TUOff"); + aTd[id] = b[i]->AsDouble("TDCal"); + bTd[id] = b[i]->AsDouble("TDOff"); + + // T average offset + avgT0[id] = b[i]->AsDouble("TAveOff"); + + // slew correction T= tcal +slwT/sqrt(Qcal) + slwTu[id] = b[i]->AsDouble("TUSlw"); + slwTd[id] = b[i]->AsDouble("TDSlw"); + + // DT position cal + DTa[id] = b[i]->AsDouble("DTCal");//! + DTb[id] = b[i]->AsDouble("DTOff");//! + } + else{ + // linear cal + aQu[id] =1; + bQu[id] =0; + aQd[id] =1; + bQd[id] =0; + aTu[id] =1; + bTu[id] =0; + aTd[id] =1; + bTd[id] =0; + + // T average offset + //avgT0[id]= 0.0; + avgT0[id]= -6.5833; + + // slew correction T= tcal +slwT/sqrt(Qcal) + slwTu[id] = 0; + slwTd[id] = 0; + + // DT position cal + // DTa[id] = 1;//! + DTb[id] = 0;//! + + DTa[id] = 0.5*m_Signal_Effective_Velocity;//! + //DTa[id] = 94.87;//! + + + } + + } + cout << " -> " << m_NumberOfBars << " bars found" << endl; +} + +/////////////////////////////////////////////////////////////////////////// +void TNeuLANDPhysics::BuildSimplePhysicalEvent() { + BuildPhysicalEvent(); +} + + + +/////////////////////////////////////////////////////////////////////////// +void TNeuLANDPhysics::BuildPhysicalEvent() { + // apply thresholds and calibration + + // instantiate CalibrationManager + static CalibrationManager* Cal = CalibrationManager::getInstance(); + static double rawQup,calQup,rawQdown,calQdown,rawTup,calTup,rawTdown,calTdown,calQ,calT,X,Y; + static unsigned int ID; + + static double neutron_mass = 939.57; // MeV/c^2 + static double c_light = 299792458; //m.s-1 + + // All vector size + static unsigned int QUsize, QDsize, TUsize, TDsize ; + QUsize = m_EventData->GetChargeUpMult(); + QDsize = m_EventData->GetChargeDownMult(); + TUsize = m_EventData->GetTimeUpMult(); + TDsize = m_EventData->GetTimeDownMult(); + static double threshold; + // loop on Qup + for (unsigned int qup = 0; qup < QUsize ; qup++) { + rawQup = m_EventData->GetChargeUp(qup); + rawTup=-1; + rawQdown=-1; + rawTdown=-1; + if (rawQup > m_Q_RAW_Threshold) { + ID = m_EventData->GetChargeUpID(qup); + if(ID<401) + threshold=m_Q_Threshold; + else + threshold=m_V_Threshold; + + // look for associated Charge down + for(unsigned int qdown = 0 ; qdown < QDsize ; qdown++){ + if(m_EventData->GetChargeDownID(qdown)==ID){ + rawQdown=m_EventData->GetChargeDown(qdown); + if(rawQdown > m_Q_RAW_Threshold) + { + // Look for the associate time + for(unsigned int tdown = 0 ; tdown < TDsize; tdown++) + { + if(m_EventData->GetTimeDownID(qdown)==ID) + { + rawTdown=m_EventData->GetTimeDown(qdown); + break; + } + }// TDown + }//if raw threshold down + break; + } //if match ID + + }// Qdwown + + if(rawTdown>0){ // Tdown is found, means Qdown as well + // look for Tup + for(unsigned int tup = 0 ; tup < TUsize ; tup++){ + if(m_EventData->GetTimeUpID(tup)==ID){ + rawTup = m_EventData->GetTimeUp(tup); + break; + } + } + } + // Got everything, do the math + if(rawTup>0){ + // cal Q Up and Down + calQup=aQu[ID]*(rawQup-bQu[ID]); + calQdown=aQd[ID]*(rawQdown-bQd[ID]); + + // average value of Up and Down + calQ=sqrt(calQup*calQdown); + + // cal T Up + calTup=aTu[ID]*rawTup+bTu[ID]; + // slew correction + calTup -= slwTu[ID]/sqrt(rawQup-bQu[ID]); + + // cal T Down + calTdown=aTd[ID]*rawTdown+bTd[ID]; + // slew correction + calTdown -= slwTd[ID]/sqrt(rawQdown-bQd[ID]); + + if(calQ>threshold){ + calT= (calTdown+calTup)*0.5+avgT0[ID]+Cal->GetPedestal("NEULAND_T_ID"+NPL::itoa(ID)); + + if(DirectionBar[ID]=='H') + { + X = (calTdown-calTup)*DTa[ID]+DTb[ID]+Cal->GetPedestal("NEULAND_X_ID"+NPL::itoa(ID)); + Y = 0.0; + } + + if(DirectionBar[ID]=='V') + { + X = 0.0; + Y=(calTdown-calTup)*DTa[ID]+DTb[ID]+Cal->GetPedestal("NEULAND_Y_ID"+NPL::itoa(ID)); + } + + DetectorNumber.push_back(ID); + Charge.push_back(calQ); + TOF.push_back(calT); + PosY.push_back(Y+PositionY[ID]); + PosX.push_back(X+PositionX[ID]); + PosZ.push_back(PositionZ[ID] + m_offset[0][2]); // [0]-> only one Nebula detector [2]-> z position + + if(ID<401) + { + IsVeto.push_back(0); + } + else + IsVeto.push_back(1); + + X = 0.0; + Y = 0.0; + + } + } + + }// if raw threshold up + } // Qup +} + +/////////////////////////////////////////////////////////////////////////// +void TNeuLANDPhysics::PreTreat() { + +} + + + +/////////////////////////////////////////////////////////////////////////// +void TNeuLANDPhysics::ReadAnalysisConfig() { +} + +/////////////////////////////////////////////////////////////////////////// +void TNeuLANDPhysics::Clear() { + DetectorNumber.clear(); + Charge.clear(); + TOF.clear(); + PosY.clear(); + PosX.clear(); + PosZ.clear(); + IsVeto.clear(); +} + +/////////////////////////////////////////////////////////////////////////// +void TNeuLANDPhysics::ReadConfiguration(NPL::InputParser parser) { + vector<NPL::InputBlock*> blocks = parser.GetAllBlocksWithToken("NEULAND"); + if(NPOptionManager::getInstance()->GetVerboseLevel()) + cout << "//// " << blocks.size() << " detector(s) found " << endl; + + vector<string> token= {"XML","Offset","InvertX","InvertY"}; + + for(unsigned int i = 0 ; i < blocks.size() ; i++){ + if(blocks[i]->HasTokenList(token)){ + cout << endl << "//// NeuLAND (" << i+1 << ")" << endl; + unsigned int det = std::atoi(blocks[i]->GetMainValue().c_str()); + string xmlpath = blocks[i]->GetString("XML"); + NPL::XmlParser xml; + xml.LoadFile(xmlpath); + ReadXML(xml); + TVector3 offset = blocks[i]->GetTVector3("Offset","mm"); + bool invertX = blocks[i]->GetInt("InvertX"); + bool invertY = blocks[i]->GetInt("InvertY"); + m_offset[det] = offset; + m_invertX[det] = invertX; + m_invertY[det] = invertY; + } + } +} + +/////////////////////////////////////////////////////////////////////////// +void TNeuLANDPhysics::InitSpectra() { + m_Spectra = new TNeuLANDSpectra(m_NumberOfBars); +} + + + +/////////////////////////////////////////////////////////////////////////// +void TNeuLANDPhysics::FillSpectra() { + m_Spectra -> FillRawSpectra(m_EventData); + m_Spectra -> FillPhysicsSpectra(m_EventPhysics); +} + + + +/////////////////////////////////////////////////////////////////////////// +void TNeuLANDPhysics::CheckSpectra() { + m_Spectra->CheckSpectra(); +} + + + +/////////////////////////////////////////////////////////////////////////// +void TNeuLANDPhysics::ClearSpectra() { +} + + + +/////////////////////////////////////////////////////////////////////////// +map< string , TH1*> TNeuLANDPhysics::GetSpectra() { + if(m_Spectra) + return m_Spectra->GetMapHisto(); + else{ + map< string , TH1*> empty; + return empty; + } +} + +/////////////////////////////////////////////////////////////////////////// +void TNeuLANDPhysics::WriteSpectra() { + m_Spectra->WriteSpectra(); +} + + + +/////////////////////////////////////////////////////////////////////////// +void TNeuLANDPhysics::AddParameterToCalibrationManager() { + CalibrationManager* Cal = CalibrationManager::getInstance(); + + vector<double> standardO={0}; + for (int i = 0; i < m_NumberOfBars; ++i) { + Cal->AddParameter("NEULAND_T_ID"+ NPL::itoa(i+1),standardO); + Cal->AddParameter("NEULAND_X_ID"+ NPL::itoa(i+1),standardO); + Cal->AddParameter("NEULAND_Y_ID"+ NPL::itoa(i+1),standardO); + } +} + + + +/////////////////////////////////////////////////////////////////////////// +void TNeuLANDPhysics::InitializeRootInputRaw() { + TChain* inputChain = RootInput::getInstance()->GetChain(); + inputChain->SetBranchStatus("NeuLAND", true ); + inputChain->SetBranchAddress("NeuLAND", &m_EventData ); +} + + + +/////////////////////////////////////////////////////////////////////////// +void TNeuLANDPhysics::InitializeRootInputPhysics() { + TChain* inputChain = RootInput::getInstance()->GetChain(); + inputChain->SetBranchAddress("NeuLAND", &m_EventPhysics); +} + + + +/////////////////////////////////////////////////////////////////////////// +void TNeuLANDPhysics::InitializeRootOutput() { + TTree* outputTree = RootOutput::getInstance()->GetTree("NeuLAND"); + outputTree->Branch("NeuLAND", "TNeuLANDPhysics", &m_EventPhysics); +} + + + +//////////////////////////////////////////////////////////////////////////////// +// Construct Method to be pass to the DetectorFactory // +//////////////////////////////////////////////////////////////////////////////// +NPL::VDetector* TNeuLANDPhysics::Construct() { + return (NPL::VDetector*) new TNeuLANDPhysics(); +} + + + +//////////////////////////////////////////////////////////////////////////////// +// Registering the construct method to the factory // +//////////////////////////////////////////////////////////////////////////////// +extern "C"{ + class proxy_NeuLAND{ + public: + proxy_NeuLAND(){ + NPL::DetectorFactory::getInstance()->AddToken("NEULAND","NeuLAND"); + NPL::DetectorFactory::getInstance()->AddDetector("NEULAND",TNeuLANDPhysics::Construct); + } + }; + + proxy_NeuLAND p_NeuLAND; +} + diff --git a/NPLib/Detectors/NeuLAND/TNeuLANDPhysics.h b/NPLib/Detectors/NeuLAND/TNeuLANDPhysics.h new file mode 100644 index 0000000000000000000000000000000000000000..eded36d184f9e36e57d7cb2985c7239f87d9a07e --- /dev/null +++ b/NPLib/Detectors/NeuLAND/TNeuLANDPhysics.h @@ -0,0 +1,257 @@ +#ifndef TNeuLANDPHYSICS_H +#define TNeuLANDPHYSICS_H +/***************************************************************************** + * Copyright (C) 2009-2019 this file is part of the NPTool Project * + * * + * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * + * For the list of contributors see $NPTOOL/Licence/Contributors * + *****************************************************************************/ + +/***************************************************************************** + * Original Author: Audrey ANNE contact address: anne@lpccaen.in2p3.fr * + * * + * Creation Date : November 2023 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: * + * This class hold NeuLAND Treated data * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ + +// C++ headers +#include <vector> +#include <map> +#include <string> +using namespace std; + +// ROOT headers +#include "TObject.h" +#include "TH1.h" +#include "TVector3.h" +// NPTool headers +#include "TNeuLANDData.h" +#include "TNeuLANDSpectra.h" +#include "NPCalibrationManager.h" +#include "NPVDetector.h" +#include "NPInputParser.h" +#include "NPXmlParser.h" +// forward declaration +class TNeuLANDSpectra; + + + +class TNeuLANDPhysics : public TObject, public NPL::VDetector { + ////////////////////////////////////////////////////////////// + // constructor and destructor + public: + TNeuLANDPhysics(); + ~TNeuLANDPhysics() {}; + + + ////////////////////////////////////////////////////////////// + // Inherited from TObject and overriden to avoid warnings + public: + void Clear(); + void Clear(const Option_t*) {}; + + + ////////////////////////////////////////////////////////////// + // data obtained after BuildPhysicalEvent() and stored in + // output ROOT file + public: + vector<int> DetectorNumber; + vector<double> Charge; + vector<double> TOF; + vector<double> PosY; + vector<double> PosX; + vector<double> PosZ; + vector<bool> IsVeto; + + public: + TVector3 GetPos(const unsigned int& i) const{ + return TVector3(PosX[i],PosY[i],PosZ[i]); + } + + // Return true if one veto fired + bool HasVeto(){ + unsigned int size = IsVeto.size(); + for(unsigned int i = 0 ; i < size ; i++){ + if(IsVeto[i]) + return true; + } + return false; + }; + + /////////// Get index of fastest neutron + int GetFirstHit(){ + unsigned int size = TOF.size(); + unsigned int index=0; + + if(!size) + return -1; + + double tof = TOF[0]; + for(unsigned int i = 1 ; i < size ; i++){ + if(tof<TOF[i]){ + tof=TOF[i]; + index=i; + } + } + return index; + }; + + public: + /// A usefull method to bundle all operation to add a detector + void ReadXML(NPL::XmlParser); + + ////////////////////////////////////////////////////////////// + // methods inherited from the VDetector ABC class + public: + // read stream from ConfigFile to pick-up detector parameters + void ReadConfiguration(NPL::InputParser); + + // add parameters to the CalibrationManger + void AddParameterToCalibrationManager(); + + // method called event by event, aiming at extracting the + // physical information from detector + void BuildPhysicalEvent(); + + // same as BuildPhysicalEvent() method but with a simpler + // treatment + void BuildSimplePhysicalEvent(); + + // same as above but for online analysis + void BuildOnlinePhysicalEvent() {BuildPhysicalEvent();}; + + // activate raw data object and branches from input TChain + // in this method mother branches (Detector) AND daughter leaves + // (fDetector_parameter) have to be activated + void InitializeRootInputRaw(); + + // activate physics data object and branches from input TChain + // in this method mother branches (Detector) AND daughter leaves + // (fDetector_parameter) have to be activated + void InitializeRootInputPhysics(); + + // create branches of output ROOT file + void InitializeRootOutput(); + + // clear the raw and physical data objects event by event + void ClearEventPhysics() {Clear();} + void ClearEventData() {m_EventData->Clear();} + + // methods related to the TNeuLANDSpectra class + // instantiate the TNeuLANDSpectra class and + // declare list of histograms + void InitSpectra(); + + // fill the spectra + void FillSpectra(); + + // used for Online mainly, sanity check for histograms and + // change their color if issues are found, for example + void CheckSpectra(); + + // used for Online only, clear all the spectra + void ClearSpectra(); + + // write spectra to ROOT output file + void WriteSpectra(); + + + ////////////////////////////////////////////////////////////// + // specific methods to NeuLAND array + public: + // remove bad channels, calibrate the data and apply thresholds + void PreTreat(); + + // read the user configuration file. If no file is found, load standard one + void ReadAnalysisConfig(); + + // give and external TNeuLANDData object to TNeuLANDPhysics. + // needed for online analysis for example + void SetRawDataPointer(TNeuLANDData* rawDataPointer) {m_EventData = rawDataPointer;} + + // objects are not written in the TTree + private: + TNeuLANDData* m_EventData; //! + TNeuLANDPhysics* m_EventPhysics; //! + + // getters for raw and pre-treated data object + public: + TNeuLANDData* GetRawData() const {return m_EventData;} + + // parameters used in the analysis + private: + // thresholds + double m_Q_RAW_Threshold; //! + double m_Q_Threshold; //! + double m_V_Threshold; //! + + //effective velocity of signal inside bar + double m_Material_Index; //! + double m_Signal_Effective_Velocity; //! + + public: + void SetQThreshold(double t) {m_Q_Threshold=t;}; + void SetVThreshold(double t) {m_V_Threshold=t;}; + // number of detectors + private: + int m_NumberOfBars; //! + + private: // offset and inversion + std::map<unsigned int, TVector3> m_offset;//! + std::map<unsigned int, bool> m_invertX;//! + std::map<unsigned int, bool> m_invertY;//! + + private: // xml calibration + // position + std::map<unsigned int , double > PositionX;//! + std::map<unsigned int , double > PositionY;//! + std::map<unsigned int , double > PositionZ;//! + + //Horizontal or Vertical + std::map<unsigned int, string> DirectionBar;//! + + // linear cal + std::map<unsigned int , double > aQu;//! + std::map<unsigned int , double > bQu;//! + std::map<unsigned int , double > aQd;//! + std::map<unsigned int , double > bQd;//! + std::map<unsigned int , double > aTu;//! + std::map<unsigned int , double > bTu;//! + std::map<unsigned int , double > aTd;//! + std::map<unsigned int , double > bTd;//! + + // T average offset + std::map<unsigned int , double > avgT0;//! + + // slew correction T= tcal +slwT/sqrt(Qcal) + std::map<unsigned int , double > slwTu;//! + std::map<unsigned int , double > slwTd;//! + + // DT position cal + std::map<unsigned int , double > DTa;//! + std::map<unsigned int , double > DTb;//! + + + // spectra class + private: + TNeuLANDSpectra* m_Spectra; // ! + + // spectra getter + public: + map<string, TH1*> GetSpectra(); + + // Static constructor to be passed to the Detector Factory + public: + static NPL::VDetector* Construct(); + + ClassDef(TNeuLANDPhysics,1) // NeuLANDPhysics structure +}; +#endif diff --git a/NPLib/Detectors/NeuLAND/TNeuLANDSpectra.cxx b/NPLib/Detectors/NeuLAND/TNeuLANDSpectra.cxx new file mode 100644 index 0000000000000000000000000000000000000000..2e3591a140990eeed2aad3fb01459c09b09e8b93 --- /dev/null +++ b/NPLib/Detectors/NeuLAND/TNeuLANDSpectra.cxx @@ -0,0 +1,174 @@ +/***************************************************************************** + * Copyright (C) 2009-2019 this file is part of the NPTool Project * + * * + * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * + * For the list of contributors see $NPTOOL/Licence/Contributors * + *****************************************************************************/ + +/***************************************************************************** + * Original Author: Adrien Matta contact address: matta@lpccaen.in2p3.fr * + * * + * Creation Date : December 2019 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: * + * This class hold NeuLAND Spectra * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ + +// class header +#include "TNeuLANDSpectra.h" + +// STL +#include <iostream> +#include <string> +using namespace std; + +// NPTool header +#include "NPOptionManager.h" + + + +//////////////////////////////////////////////////////////////////////////////// +TNeuLANDSpectra::TNeuLANDSpectra() + : fNumberOfDetectors(0) { + SetName("NeuLAND"); +} + + + +//////////////////////////////////////////////////////////////////////////////// +TNeuLANDSpectra::TNeuLANDSpectra(unsigned int NumberOfDetectors) { + if(NPOptionManager::getInstance()->GetVerboseLevel()>0) + cout << "************************************************" << endl + << "TNeuLANDSpectra : Initalizing control spectra for " + << NumberOfDetectors << " Detectors" << endl + << "************************************************" << endl ; + SetName("NeuLAND"); + fNumberOfDetectors = NumberOfDetectors; + + InitRawSpectra(); + InitPreTreatedSpectra(); + InitPhysicsSpectra(); +} + + + +//////////////////////////////////////////////////////////////////////////////// +TNeuLANDSpectra::~TNeuLANDSpectra() { +} + + + +//////////////////////////////////////////////////////////////////////////////// +void TNeuLANDSpectra::InitRawSpectra() { + static string name; + for (unsigned int i = 0; i < fNumberOfDetectors; i++) { // loop on number of detectors + // Energy + name = "NeuLAND"+NPL::itoa(i+1)+"_ENERGY_RAW"; + AddHisto1D(name, name, 4096, 0, 16384, "NeuLAND/RAW"); + // Time + name = "NeuLAND"+NPL::itoa(i+1)+"_TIME_RAW"; + AddHisto1D(name, name, 4096, 0, 16384, "NeuLAND/RAW"); + } // end loop on number of detectors +} + + + +//////////////////////////////////////////////////////////////////////////////// +void TNeuLANDSpectra::InitPreTreatedSpectra() { + static string name; + for (unsigned int i = 0; i < fNumberOfDetectors; i++) { // loop on number of detectors + // Energy + name = "NeuLAND"+NPL::itoa(i+1)+"_ENERGY_CAL"; + AddHisto1D(name, name, 500, 0, 25, "NeuLAND/CAL"); + // Time + name = "NeuLAND"+NPL::itoa(i+1)+"_TIME_CAL"; + AddHisto1D(name, name, 500, 0, 25, "NeuLAND/CAL"); + + + } // end loop on number of detectors +} + + + +//////////////////////////////////////////////////////////////////////////////// +void TNeuLANDSpectra::InitPhysicsSpectra() { + static string name; + // Kinematic Plot + name = "NeuLAND_ENERGY_TIME"; + AddHisto2D(name, name, 500, 0, 500, 500, 0, 50, "NeuLAND/PHY"); +} + + + +//////////////////////////////////////////////////////////////////////////////// +void TNeuLANDSpectra::FillRawSpectra(TNeuLANDData* RawData) { +/* static string name; + static string family; + + // Energy + unsigned int sizeE = RawData->GetMultEnergy(); + for (unsigned int i = 0; i < sizeE; i++) { + name = "NeuLAND"+NPL::itoa(RawData->GetE_DetectorNbr(i))+"_ENERGY_RAW"; + family = "NeuLAND/RAW"; + + FillSpectra(family,name,RawData->Get_Energy(i)); + } + + // Time + unsigned int sizeT = RawData->GetMultTime(); + for (unsigned int i = 0; i < sizeT; i++) { + name = "NeuLAND"+NPL::itoa(RawData->GetT_DetectorNbr(i))+"_TIME_RAW"; + family = "NeuLAND/RAW"; + + FillSpectra(family,name,RawData->Get_Time(i)); + }*/ +} + + + +//////////////////////////////////////////////////////////////////////////////// +void TNeuLANDSpectra::FillPreTreatedSpectra(TNeuLANDData* PreTreatedData) { +/* static string name; + static string family; + + // Energy + unsigned int sizeE = PreTreatedData->GetMultEnergy(); + for (unsigned int i = 0; i < sizeE; i++) { + name = "NeuLAND"+NPL::itoa(PreTreatedData->GetE_DetectorNbr(i))+"_ENERGY_CAL"; + family = "NeuLAND/CAL"; + + FillSpectra(family,name,PreTreatedData->Get_Energy(i)); + } + + // Time + unsigned int sizeT = PreTreatedData->GetMultTime(); + for (unsigned int i = 0; i < sizeT; i++) { + name = "NeuLAND"+NPL::itoa(PreTreatedData->GetT_DetectorNbr(i))+"_TIME_CAL"; + family = "NeuLAND/CAL"; + + FillSpectra(family,name,PreTreatedData->Get_Time(i)); + }*/ +} + + + +//////////////////////////////////////////////////////////////////////////////// +void TNeuLANDSpectra::FillPhysicsSpectra(TNeuLANDPhysics* Physics) { +/* static string name; + static string family; + family= "NeuLAND/PHY"; + + // Energy vs time + unsigned int sizeE = Physics->Energy.size(); + for(unsigned int i = 0 ; i < sizeE ; i++){ + name = "NeuLAND_ENERGY_TIME"; + FillSpectra(family,name,Physics->Energy[i],Physics->Time[i]); + }*/ +} + diff --git a/NPLib/Detectors/NeuLAND/TNeuLANDSpectra.h b/NPLib/Detectors/NeuLAND/TNeuLANDSpectra.h new file mode 100644 index 0000000000000000000000000000000000000000..343a01404aca10249cb13a637b38497cb8dd8b5f --- /dev/null +++ b/NPLib/Detectors/NeuLAND/TNeuLANDSpectra.h @@ -0,0 +1,62 @@ +#ifndef TNeuLANDSPECTRA_H +#define TNeuLANDSPECTRA_H +/***************************************************************************** + * Copyright (C) 2009-2019 this file is part of the NPTool Project * + * * + * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * + * For the list of contributors see $NPTOOL/Licence/Contributors * + *****************************************************************************/ + +/***************************************************************************** + * Original Author: Adrien Matta contact address: matta@lpccaen.in2p3.fr * + * * + * Creation Date : December 2019 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: * + * This class hold NeuLAND Spectra * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ + +// NPLib headers +#include "NPVSpectra.h" +#include "TNeuLANDData.h" +#include "TNeuLANDPhysics.h" + +// Forward Declaration +class TNeuLANDPhysics; + + +class TNeuLANDSpectra : public VSpectra { + ////////////////////////////////////////////////////////////// + // constructor and destructor + public: + TNeuLANDSpectra(); + TNeuLANDSpectra(unsigned int NumberOfDetectors); + ~TNeuLANDSpectra(); + + ////////////////////////////////////////////////////////////// + // Initialization methods + private: + void InitRawSpectra(); + void InitPreTreatedSpectra(); + void InitPhysicsSpectra(); + + ////////////////////////////////////////////////////////////// + // Filling methods + public: + void FillRawSpectra(TNeuLANDData*); + void FillPreTreatedSpectra(TNeuLANDData*); + void FillPhysicsSpectra(TNeuLANDPhysics*); + + ////////////////////////////////////////////////////////////// + // Detector parameters + private: + unsigned int fNumberOfDetectors; +}; + +#endif diff --git a/NPLib/Detectors/PISTA/CMakeLists.txt b/NPLib/Detectors/PISTA/CMakeLists.txt index 41848764389a46d338eae0aa8d60b5e782d863c2..b0b2938ab4cecab4d566f682e9c56311ac2999f0 100644 --- a/NPLib/Detectors/PISTA/CMakeLists.txt +++ b/NPLib/Detectors/PISTA/CMakeLists.txt @@ -21,5 +21,6 @@ add_library(NPPISTA SHARED TPISTASpectra.cxx TPISTAData.cxx TPISTAPhysics.cxx target_link_libraries(NPPISTA ${ROOT_LIBRARIES} NPCore) -install(FILES TPISTAData.h TPISTAPhysics.h TPISTASpectra.h TFPMWData.h TFPMWPhysics.h TICData.h TICPhysics.h TVamosReconstruction.h TTimeData.h DESTINATION ${CMAKE_INCLUDE_OUTPUT_DIRECTORY}) +install(FILES TPISTAData.h TPISTAPhysics.h TPISTASpectra.h TFPMWData.h TFPMWPhysics.h TICData.h TICPhysics.h + TVamosReconstruction.h TTimeData.h TProfileEvaluator.h DESTINATION ${CMAKE_INCLUDE_OUTPUT_DIRECTORY}) diff --git a/NPLib/Detectors/PISTA/TICPhysics.cxx b/NPLib/Detectors/PISTA/TICPhysics.cxx index c905cf16a25a1716af8a7b21396c65017eebfacb..6d4152c9f89a59e9428e9dc0c80324d15f8fbb8f 100644 --- a/NPLib/Detectors/PISTA/TICPhysics.cxx +++ b/NPLib/Detectors/PISTA/TICPhysics.cxx @@ -9,10 +9,10 @@ * Original Author: P. Morfouace contact address: pierre.morfouace@cea.fr * * * * Creation Date : October 2023 * - * Last update : * + * Last update : 22/01/24 * *---------------------------------------------------------------------------* * Decription: * - * This class hold IC Treated data * + * This class hold IC Treated data * * * *---------------------------------------------------------------------------* * Comment: * @@ -38,6 +38,7 @@ using namespace std; // ROOT #include "TChain.h" +#include "TKey.h" ClassImp(TICPhysics); @@ -47,7 +48,6 @@ TICPhysics::TICPhysics() m_PreTreatedData(new TICData), m_EventPhysics(this), m_FPMW_Section(-1), - m_number_of_splines(34), m_Eres_Threshold(3000), m_Z_SPLINE_CORRECTION(false), m_NumberOfDetectors(0){ @@ -94,11 +94,29 @@ void TICPhysics::BuildPhysicalEvent() { double GainInit = Cal->GetValue("IC/INIT_SEG"+NPL::itoa(segment)+"_ALIGN",0); fIC_raw[i] = m_PreTreatedData->GetIC_Charge(i); + fIC[i] = gain*m_PreTreatedData->GetIC_Charge(i); + + if(i < 4){ + fIC_PID[i] = 0.5* m_PreTreatedData->GetIC_Charge(i); + } + else if(i >= 6 && m_Data_Year==2024){ + fIC_PID[i] = 2*m_PreTreatedData->GetIC_Charge(i); + } + else if((i==4 || i==5) && m_Data_Year==2024){ + fIC_PID[i] = m_PreTreatedData->GetIC_Charge(i); + } + else if(i >= 4 && m_Data_Year==2023){ + fIC_PID[i] = m_PreTreatedData->GetIC_Charge(i); + } + fIC_Init[i] = GainInit * m_PreTreatedData->GetIC_Charge(i); fIC_TS.push_back(m_PreTreatedData->GetIC_TS(i)); } + if(m_Y_SPLINE_CORRECTION && m_XY0_SPLINE_CORRECTION){ + ApplyXYCorrections(); + } if (fIC_Init[1]>0 && fIC_Init[5]>0) { EtotInit = 0 ; @@ -121,10 +139,27 @@ void TICPhysics::BuildPhysicalEvent() { EtotInit = -100 ; } - if(fIC[1]>0 && fIC[5]>0){ - DE = 0.5*(fIC_raw[0] + fIC_raw[1] + fIC_raw[2] + fIC_raw[3]) + fIC_raw[4]; - Eres = fIC_raw[5] + fIC_raw[6] + fIC_raw[7] + fIC_raw[8] + fIC_raw[9]; + DE = fIC_PID[0] + fIC_PID[1] + fIC_PID[2] + fIC_PID[3] + fIC_PID[4]; + //DE = 0.5*(fIC_raw[0] + fIC_raw[1] + fIC_raw[2] + fIC_raw[3]) + fIC_raw[4]; + Eres = fIC_PID[5] + fIC_PID[6] + fIC_PID[7] + fIC_PID[8] + fIC_PID[9]; + + if (m_DE_SPLINE_CORRECTION && m_Y_SPLINE_CORRECTION){ + if (m_TimeData->GetMWPC13Mult() ==1 && fIC_TS.size()>=8 ){ //only mult 1 event + UShort_t FPMW_Section = m_FPMW_Section; + double TempY; + + //Data year sensitive loading + if (m_Data_Year == 2024){ + TempY = 10* (fIC_TS.at(0) - m_TimeData->GetTS_MWPC13(0)) - ((m_TimeData->GetTime_MWPC13(0)+m_TimeData->GetToff_DT13(FPMW_Section))) ; + } + else if (m_Data_Year == 2023){ + TempY = m_Y ; + } + DE = DE * m_DEspline.at(0)->Eval(0) / m_DEspline.at(0)->Eval(TempY) ; + } // end if mult 1 + } // end DE correction + if(fIC[1]>0 && fIC[5]>0){ double scalor = Cal->GetValue("IC/ETOT_SCALING_SEC"+NPL::itoa(m_FPMW_Section),0); for(int i=0; i<10; i++){ @@ -170,10 +205,36 @@ void TICPhysics::PreTreat() { double charge = m_EventData->GetIC_Charge(i); long TS = m_EventData->GetIC_TS(i); + m_PreTreatedData->SetIC_Charge(charge); m_PreTreatedData->SetIC_Section(segment); m_PreTreatedData->SetIC_TS(TS); } + + // Find the highest section with a charge + unsigned int secHighCharge = 0 ; + double chargeHighest = 0 ; + if (mysize > 1){ + for (unsigned int i = (mysize-1) ; i >= 0 ; i--){ + chargeHighest = m_EventData->GetIC_Charge(i); + secHighCharge = i ; + break; + } // end if charge + } // end inverse loop + + if ((chargeHighest > 0) && (secHighCharge!=0)){ + // loop through all section until we get to the highest + // if one of them is empty we clear + for (unsigned int j = 0 ; j<secHighCharge ; j++ ){ + double charge = m_EventData->GetIC_Charge(j); + if (charge <= 0) { + ClearPreTreatedData(); + break; + } // end loop + } // end cond on charge + + + } } @@ -232,18 +293,47 @@ void TICPhysics::ReadAnalysisConfig() { m_Data_Year = atof(DataBuffer.c_str()); cout << whatToDo << " " << m_Data_Year << endl; } - - else if(whatToDo=="NUMBER_OF_SPLINES"){ + else if (whatToDo=="LOAD_Y_SPLINE") { AnalysisConfigFile >> DataBuffer; - m_number_of_splines = atoi(DataBuffer.c_str()); - cout << whatToDo << " " << m_number_of_splines << endl; + m_Y_SPLINE_PATH = DataBuffer; + cout << "*** Loading Y spline ***" << endl; + m_Y_SPLINE_CORRECTION = LoadSpline(m_Yspline,m_number_Y_spline,m_Y_SPLINE_PATH); + } + else if (whatToDo=="LOAD_XY0_PROFILE") { + AnalysisConfigFile >> DataBuffer; + m_XY0_PROFILE_PATH = DataBuffer; + cout << "*** Loading XY0 profile ***" << endl; + TString PathTemp = m_XY0_PROFILE_PATH; + TFile* ifile = new TFile(PathTemp,"read"); + if(ifile->IsOpen() && !ifile->IsZombie()){ + m_XY0_SPLINE_CORRECTION = true; + m_IC0_Profile.LoadProfile(PathTemp,"ICOneZeroProfile"); + } + else { + m_XY0_SPLINE_CORRECTION = false ; + } + ifile->Close(); + } + else if (whatToDo=="LOAD_DE_SPLINE") { + AnalysisConfigFile >> DataBuffer; + m_DE_SPLINE_PATH = DataBuffer; + cout << "*** Loading DE spline ***" << endl; + m_DE_SPLINE_CORRECTION = LoadSpline(m_DEspline,m_number_DE_spline,m_DE_SPLINE_PATH); } else if (whatToDo=="LOAD_Z_SPLINE"){ AnalysisConfigFile >> DataBuffer; m_Z_SPLINE_PATH = DataBuffer; cout << "*** Loading Z spline ***" << endl; - LoadZSpline(); + m_Z_SPLINE_CORRECTION = LoadSpline(m_Zspline,m_number_zspline,m_Z_SPLINE_PATH); } + + else if (whatToDo=="LOAD_Z_SPLINE_EVAL"){ + AnalysisConfigFile >> DataBuffer; + m_Z_SPLINE_EVAL_PATH = DataBuffer; + cout << "*** Loading Z spline eval position***" << endl; + m_Z_SPLINE_EVAL = LoadVector(m_Z_spline_eval,m_Z_SPLINE_EVAL_PATH); + } + else { ReadingStatus = false; } @@ -253,35 +343,93 @@ void TICPhysics::ReadAnalysisConfig() { /////////////////////////////////////////////////////////////////////////// -void TICPhysics::LoadZSpline(){ - TString filename = m_Z_SPLINE_PATH; +bool TICPhysics::LoadSpline(vector<TSpline3*> &iSpline, int &NSpline , string Path){ + TString filename = Path; TFile* ifile = new TFile(filename,"read"); + if(ifile->IsOpen() && !ifile->IsZombie()){ + + // Get number of spline + TIter next(ifile->GetListOfKeys()); + TKey* key; + NSpline = 0 ; - if(ifile->IsOpen()){ - m_Z_SPLINE_CORRECTION = true; - for(int i=0; i<m_number_of_splines; i++){ - m_Zspline[i] = (TSpline3*) ifile->FindObjectAny(Form("fspline_%d",i+1)); - cout << "*** " << m_Zspline[i]->GetName() << " is loaded!" << endl; + while ((key=(TKey*)next())){ + if (std::string(key->GetClassName()) == "TSpline3"){ + NSpline ++; + } + } + cout << "This file contains " << NSpline << " splines " << endl; + // Load Spline + for(int i=0; i<NSpline; i++){ + iSpline.at(i) = (TSpline3*) ifile->FindObjectAny(Form("fspline_%d",i+1)); + iSpline.at(i)->SetName(Form("fspline_%s_%d",Path.c_str(),i+1)); + cout << iSpline.at(i)->GetName() << " is loaded!" << endl; } + ifile->Close(); + return true; } - else + else{ cout << "File " << filename << " not found!" << endl; - ifile->Close(); + ifile->Close(); + return false; + } +} + +/////////////////////////////////////////////////////////////////////////// +template <typename T> bool TICPhysics::LoadVector(vector<T> &vec, const string &Path){ + + std::ifstream file(Path); + if (!file.is_open()) { + return false; // File couldn't be opened + } + + T value; + vec.clear(); + std::string line; + while (std::getline(file, line)) { + std::istringstream iss(line); + while (iss >> value) { + vec.push_back(value); + } + } + file.close(); + return !vec.empty(); } + /////////////////////////////////////////////////////////////////////////// double TICPhysics::ApplyZSpline(){ double DEcorr; - double FF_DEcorr0[m_number_of_splines]; - for(int i=0; i<m_number_of_splines; i++){ - FF_DEcorr0[i] = m_Zspline[i]->Eval(8500); - } + double FF_DEcorr0[m_number_zspline]; + if (m_Z_SPLINE_EVAL == true){ + for(int i=0; i<m_number_zspline; i++){ + if (i < m_Z_spline_eval.size()){ + FF_DEcorr0[i] = m_Zspline[i]->Eval(m_Z_spline_eval[i]); + } + else if( m_Data_Year == 2024 ){ + FF_DEcorr0[i] = m_Zspline[i]->Eval(12000); + } + else if( m_Data_Year == 2023 ){ + FF_DEcorr0[i] = m_Zspline[i]->Eval(8500); + } + } // end loop spline + } // end cond spline eval + else if (m_Data_Year == 2023){ + for(int i=0; i<m_number_zspline; i++){ + FF_DEcorr0[i] = m_Zspline[i]->Eval(8500); + } + } + else if (m_Data_Year == 2024){ + for(int i=0; i<m_number_zspline; i++){ + FF_DEcorr0[i] = m_Zspline[i]->Eval(12000); + } + } double DEspline0; double Eval_DEspline; int index=0; - for(int i=0; i<m_number_of_splines; i++){ + for(int i=0; i<m_number_zspline; i++){ Eval_DEspline = m_Zspline[i]->Eval(Eres); if(DE<Eval_DEspline) break; index = i; @@ -290,7 +438,7 @@ double TICPhysics::ApplyZSpline(){ Eval_DEspline = m_Zspline[index]->Eval(Eres); DEspline0 = FF_DEcorr0[index]; double dmin, dsup; - if(index<(m_number_of_splines-1) && DE>m_Zspline[0]->Eval(Eres)){ + if(index<(m_number_zspline-1) && DE>m_Zspline[0]->Eval(Eres)){ dmin = DE - m_Zspline[index]->Eval(Eres); dsup = m_Zspline[index+1]->Eval(Eres) - DE; @@ -299,7 +447,7 @@ double TICPhysics::ApplyZSpline(){ DEcorr = DEspline0 * DE / Eval_DEspline; } - else if(index==m_number_of_splines-1){ + else if(index==m_number_zspline-1){ Eval_DEspline = m_Zspline[index]->Eval(Eres); DEspline0 = FF_DEcorr0[index]; @@ -308,6 +456,66 @@ double TICPhysics::ApplyZSpline(){ return DEcorr; } +/////////////////////////////////////////////////////////////////////////// +void TICPhysics::ApplyXYCorrections(){ + vector<double> ICcorr_Y(11), ICcorr_X(11); + double FF_DriftTime ; + if (m_TimeData->GetMWPC13Mult() ==1 && fIC_TS.size()>=8){ //only mult 1 event + UShort_t FPMW_Section = m_FPMW_Section; + + // ***************************Different def of correction depending on year********************************** + if (m_Data_Year == 2024){ + FF_DriftTime = 10* (fIC_TS.at(0) - m_TimeData->GetTS_MWPC13(0)) - ((m_TimeData->GetTime_MWPC13(0)+m_TimeData->GetToff_DT13(FPMW_Section))) ; + } + else if (m_Data_Year == 2023){ + FF_DriftTime = m_Y; + } + else { + return ; + } + + //************************** Correction of section 1 to 4 *************************************************** + for (int seg = 2; seg < fIC_TS.size() ; seg++) { // loop on multiplicity of event + + if (m_Yspline.at(seg-2)==0){ + ICcorr_Y.at(seg) = fIC_PID[seg]; + } + + else { + ICcorr_Y.at(seg) = fIC_PID[seg] * m_Yspline.at(seg-2)->Eval(0)/ m_Yspline.at(seg-2)->Eval(FF_DriftTime); + if (!(ICcorr_Y.at(seg)==ICcorr_Y.at(seg))) ICcorr_Y.at(seg) = 0; + } //end if non empty + if (seg == 0) break; + }//endloop seg + + + //************************** Correction of section 0 *************************************************** + + Double_t PolX = 1.37622; + + Double_t ICRatio = fIC_PID[1]/fIC_PID[0]; + Double_t ICRatioCorr = ICRatio * PolX / m_IC0_Profile.Evaluate(m_X,FF_DriftTime,false); + Double_t ICcorr_Y0 = fIC_PID[0] / PolX * m_IC0_Profile.Evaluate(m_X,FF_DriftTime,false); + + if ( ICRatioCorr<1.4 || ICRatioCorr >1.5){ + ICRatioCorr = ICRatio * PolX / m_IC0_Profile.Evaluate(m_X,FF_DriftTime,false); + ICcorr_Y0 = fIC_PID[0] / PolX * m_IC0_Profile.Evaluate(m_X,FF_DriftTime,false); + if (ICRatioCorr >100) { + ICcorr_Y0 = fIC_PID[0]; + } + } + + + //************************** Overwrite ICRAW *************************************************** + //Overwrite ic_raw + for (int i = 1 ; i<fIC_TS.size() ;i++){ + if (ICcorr_Y.at(i) != 0 ){ + fIC_PID[i] = ICcorr_Y.at(i); + } + } + fIC_PID[0] = ICcorr_Y0; + } +} /////////////////////////////////////////////////////////////////////////// void TICPhysics::Clear() { @@ -320,6 +528,7 @@ void TICPhysics::Clear() { fIC[i] = 0; fIC_raw[i] = 0; fIC_Init[i] = 0; + fIC_PID[i] = 0; } fIC_TS.clear(); diff --git a/NPLib/Detectors/PISTA/TICPhysics.h b/NPLib/Detectors/PISTA/TICPhysics.h index c02c89ab1ccfbd4a6c7ef8fee2935fb7f8f7405b..122b4a148bf55bb646bea04f4ac1caf84c8370cd 100644 --- a/NPLib/Detectors/PISTA/TICPhysics.h +++ b/NPLib/Detectors/PISTA/TICPhysics.h @@ -34,8 +34,11 @@ using namespace std; #include "TH1.h" #include "TVector3.h" #include "TSpline.h" +#include "TFile.h" // NPTool headers #include "TICData.h" +#include "TTimeData.h" +#include "TProfileEvaluator.h" #include "NPCalibrationManager.h" #include "NPVDetector.h" #include "NPInputParser.h" @@ -71,6 +74,7 @@ class TICPhysics : public TObject, public NPL::VDetector { double fIC[11]; double fIC_raw[11]; + double fIC_PID[11]; double fIC_Init[11];//! private: @@ -132,10 +136,23 @@ class TICPhysics : public TObject, public NPL::VDetector { // needed for online analysis for example void SetRawDataPointer(TICData* rawDataPointer) {m_EventData = rawDataPointer;} + // Setter and getter for section of the FPMW. void SetFPMWSection(int section) {m_FPMW_Section = section;} int GetFPMWSection() {return m_FPMW_Section;} - void LoadZSpline(); + + //Setter and Getter for TTimeData used for drift time calculation and XY + void SetTTimeData(TTimeData *newTime) {m_TimeData = newTime;} + TTimeData* GetTTimeData() {return m_TimeData;} + + void SetX(double PosX) {m_X = PosX;} + double GetX() {return m_X;} + void SetY(double PosY) {m_Y = PosY;} + double GetY() {return m_Y;} + + bool LoadSpline(vector<TSpline3*> &iSpline, int &NSpline, string Path); + template <typename T> bool LoadVector(vector<T> &vec, const string &Path); double ApplyZSpline(); + void ApplyXYCorrections(); // objects are not written in the TTree private: @@ -152,14 +169,39 @@ class TICPhysics : public TObject, public NPL::VDetector { private: int m_NumberOfDetectors; //! int m_FPMW_Section; //! - int m_number_of_splines; //! + int m_number_zspline; //! string m_Z_SPLINE_PATH; //! - bool m_Z_SPLINE_CORRECTION; //! - TSpline3* m_Zspline[50]; //! + string m_Z_SPLINE_EVAL_PATH; //! + bool m_Z_SPLINE_CORRECTION = false; //! + bool m_Z_SPLINE_EVAL = false; //! + vector<TSpline3*> m_Zspline = vector<TSpline3*>(50); //! + vector<Double_t> m_Z_spline_eval ; //! double m_Eres_Threshold; //! - //Year of acquisition + //Time temporary variable + TTimeData* m_TimeData; //! + //Correction in XY of IC + string m_Y_SPLINE_PATH; //! + string m_XY0_PROFILE_PATH; //! + string m_DE_SPLINE_PATH; //! + + bool m_Y_SPLINE_CORRECTION = false; //! + bool m_DE_SPLINE_CORRECTION = false; //! + bool m_XY0_SPLINE_CORRECTION = false; //! + + int m_number_Y_spline; //! + int m_number_XY0_spline; //! + int m_number_DE_spline; //! + + double m_X; //! + double m_Y; //! + // Be careful this array contains only the correction from IC1 to 4 + vector<TSpline3*> m_Yspline = vector<TSpline3*>(11); //! + vector<TSpline3*> m_DEspline = vector<TSpline3*>(11); //! + // The following contains correction for IC0 + ProfileEvaluator m_IC0_Profile;//! private: + //Year of acquisition double m_Data_Year; //! // Static constructor to be passed to the Detector Factory public: diff --git a/Projects/AlPhaPha/2024/macro/chio/XYCalibration/ProfileEvaluator.h b/NPLib/Detectors/PISTA/TProfileEvaluator.h similarity index 74% rename from Projects/AlPhaPha/2024/macro/chio/XYCalibration/ProfileEvaluator.h rename to NPLib/Detectors/PISTA/TProfileEvaluator.h index 0994ba971a8eb0dc2bb445420355b322baf2af80..1cfb4d4dfaf002e303526ded14fb0e917b658758 100644 --- a/Projects/AlPhaPha/2024/macro/chio/XYCalibration/ProfileEvaluator.h +++ b/NPLib/Detectors/PISTA/TProfileEvaluator.h @@ -1,6 +1,26 @@ #ifndef PROFILE_EVAL #define PROFILE_EVAL - +/***************************************************************************** + * Copyright (C) 2009-2025 this file is part of the NPTool Project * + * * + * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * + * For the list of contributors see $NPTOOL/Licence/Contributors * + *****************************************************************************/ + +/***************************************************************************** + * Original Author: T.Efremov contact address: theodore.efremov@cea.fr * + * * + * Creation Date : 22/01/24 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: * + * Evaluator for 2D Profile * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ #include <TFile.h> #include <TProfile2D.h> #include <iostream> diff --git a/NPLib/Detectors/PISTA/TTimeData.cxx b/NPLib/Detectors/PISTA/TTimeData.cxx index cb8713f660e51856e867ed046a518bcc9d047484..b3dab37f54621e72a2069e2ada357bd6f07c3aab 100644 --- a/NPLib/Detectors/PISTA/TTimeData.cxx +++ b/NPLib/Detectors/PISTA/TTimeData.cxx @@ -54,6 +54,9 @@ void TTimeData::Clear() { fTime_MWPC23.clear(); fTime_MWPC24.clear(); + fToff_DT13.clear(); + fToff_DT14.clear(); + fSection_MWPC3.clear(); fSection_MWPC4.clear(); diff --git a/NPLib/Detectors/PISTA/TTimeData.h b/NPLib/Detectors/PISTA/TTimeData.h index d56982141903c3cad350f77b0d3193f5f893f3dd..5a6dad3c73408a5fca8bda46e541014a0b6b1f5e 100644 --- a/NPLib/Detectors/PISTA/TTimeData.h +++ b/NPLib/Detectors/PISTA/TTimeData.h @@ -44,6 +44,9 @@ class TTimeData : public TObject { vector<float> fTime_MWPC23; vector<float> fTime_MWPC24; + vector<double> fToff_DT13; + vector<double> fToff_DT14; + vector<short> fSection_MWPC3; vector<short> fSection_MWPC4; @@ -82,6 +85,9 @@ class TTimeData : public TObject { inline void SetTime_MWPC23(float time ){fTime_MWPC23.push_back(time);};//! inline void SetTime_MWPC24(float time ){fTime_MWPC24.push_back(time);};//! + inline void SetToff_DT13(double offset ){fToff_DT13.push_back(offset);};//! + inline void SetToff_DT14(double offset ){fToff_DT14.push_back(offset);};//! + inline void SetSection_MWPC3(short section ){fSection_MWPC3.push_back(section);};//! inline void SetSection_MWPC4(short section ){fSection_MWPC4.push_back(section);};//! @@ -107,6 +113,11 @@ class TTimeData : public TObject { inline float GetTime_MWPC24(const unsigned int &i) const {return fTime_MWPC24.at(i) ;}//! + inline double GetToff_DT13(const unsigned int &i) const + {return fToff_DT13.at(i) ;}//! + inline double GetToff_DT14(const unsigned int &i) const + {return fToff_DT14.at(i) ;}//! + inline short GetSection_MWPC3(const unsigned int &i) const {return fSection_MWPC3.at(i) ;}//! inline short GetSection_MWPC4(const unsigned int &i) const @@ -123,7 +134,7 @@ class TTimeData : public TObject { ////////////////////////////////////////////////////////////// // Required for ROOT dictionnary - ClassDef(TTimeData,2) // TimeData structure + ClassDef(TTimeData,3) // TimeData structure }; #endif diff --git a/NPLib/Detectors/Samurai/SamuraiFieldMap.cxx b/NPLib/Detectors/Samurai/SamuraiFieldMap.cxx index 7c7e102f40c228e25c4702da54a8270f17c88076..25f7305456ada541067b790755949448856c70dd 100644 --- a/NPLib/Detectors/Samurai/SamuraiFieldMap.cxx +++ b/NPLib/Detectors/Samurai/SamuraiFieldMap.cxx @@ -51,8 +51,7 @@ double SamuraiFieldMap::Delta(const double* parameter){ //pos =Propagate(parameter[0],m_FitPosFDC0,m_FitDirFDC0,false); pos =Propagate(parameter[0],m_FitPosFDC0,m_FitDirFDC0,true); // Move the fdc2 pos from lab frame to fdc2 frame - pos.back().RotateY(-m_fdc2angle+m_angle); - + pos.back().RotateY(-m_fdc2angle+m_angle); //double d = (pos.back().X()-m_FitPosFDC2.X())*(pos.back().X()-m_FitPosFDC2.X()); // return d; diff = pos.back()-m_FitPosFDC2; @@ -141,6 +140,7 @@ std::vector< TVector3 > SamuraiFieldMap::Propagate(double Brho, TVector3 pos, TV dir=dir.Unit(); static double r; r = sqrt(pos.X()*pos.X()+pos.Z()*pos.Z()); + // number of step taken static unsigned int count; count = 0; @@ -159,7 +159,6 @@ std::vector< TVector3 > SamuraiFieldMap::Propagate(double Brho, TVector3 pos, TV } } else {// failure - //cout << "Fail" << endl; return track; } @@ -180,7 +179,8 @@ std::vector< TVector3 > SamuraiFieldMap::Propagate(double Brho, TVector3 pos, TV func(N, pos+xk1*(m_StepTime/2.), imp+pk1*(m_StepTime/2.) , xk2, pk2); func(N, pos+xk2*(m_StepTime/2.), imp+pk2*(m_StepTime/2.) , xk3, pk3); func(N, pos+xk3*m_StepTime , imp+pk3*m_StepTime , xk4, pk4); - pos +=(xk1+2*xk2+2*xk3+xk4)*(m_StepTime/6.); + pos +=(xk1+2*xk2+2*xk3+xk4)*(m_StepTime/6.); + imp +=(pk1+2*pk2+2*pk3+pk4)*(m_StepTime/6.); if(store){ pos.RotateY(-m_angle); diff --git a/NPLib/Detectors/Samurai/TSamuraiBDCData.cxx b/NPLib/Detectors/Samurai/TSamuraiBDCData.cxx index 862fdde7635fbf08bdda51f0670f0ca0d8cb1ac4..7e338083cf817192e58acc4899923114a409b4a2 100644 --- a/NPLib/Detectors/Samurai/TSamuraiBDCData.cxx +++ b/NPLib/Detectors/Samurai/TSamuraiBDCData.cxx @@ -20,6 +20,7 @@ void TSamuraiBDCData::Clear(){ fBDC_WireNbr.clear(); fBDC_Time.clear(); fBDC_Edge.clear(); + } //////////////////////////////////////////////////////////////////////////////// diff --git a/NPLib/Detectors/Samurai/TSamuraiBDCData.h b/NPLib/Detectors/Samurai/TSamuraiBDCData.h index 50e87d81d3b3fdaeea34c9263216b09a58577a61..36eef2ea3ed3b241397636dd6fe927235488a556 100644 --- a/NPLib/Detectors/Samurai/TSamuraiBDCData.h +++ b/NPLib/Detectors/Samurai/TSamuraiBDCData.h @@ -31,7 +31,7 @@ class TSamuraiBDCData: public TObject{ int const GetWireNbr(const unsigned int& i){return fBDC_WireNbr[i];}; double const GetTime(const unsigned int& i){return fBDC_Time[i];}; int const GetEdge(const unsigned int& i){return fBDC_Edge[i];}; - + ClassDef(TSamuraiBDCData,1); }; diff --git a/NPLib/Detectors/Samurai/TSamuraiBDCPhysics.cxx b/NPLib/Detectors/Samurai/TSamuraiBDCPhysics.cxx index 93871fe64c681818377404fa69dc3207e13c8781..6420a38843e1529849dcf1700b015ce9424cd4ac 100644 --- a/NPLib/Detectors/Samurai/TSamuraiBDCPhysics.cxx +++ b/NPLib/Detectors/Samurai/TSamuraiBDCPhysics.cxx @@ -63,9 +63,32 @@ TVector3 TSamuraiBDCPhysics::GetPos(unsigned int det){ } } return res; +} +/////////////////////////////////////////////////////////////////////////// +int TSamuraiBDCPhysics::GetPileUpDet(unsigned int det){ + int res = -10000; + unsigned int size = PosX.size(); + for(unsigned int i = 0 ; i < size ; i++){ + if(Detector[i]==det){ + res = PileUp[i]; + } + } + return res; +} +/////////////////////////////////////////////////////////////////////////// +TVector3 TSamuraiBDCPhysics::GetDir(unsigned int det){ + TVector3 res(-10000,-10000,-10000); + unsigned int size = PosX.size(); + for(unsigned int i = 0 ; i < size ; i++){ + if(Detector[i]==det){ + res = Dir[i]; + } + } + return res; } + /////////////////////////////////////////////////////////////////////////// void TSamuraiBDCPhysics::BuildSimplePhysicalEvent(){ BuildPhysicalEvent(); @@ -73,6 +96,11 @@ void TSamuraiBDCPhysics::BuildSimplePhysicalEvent(){ /////////////////////////////////////////////////////////////////////////// void TSamuraiBDCPhysics::BuildPhysicalEvent(){ + m_simulation = 0; + std::string tree_name = RootInput::getInstance()->GetChain()->GetName(); + if(tree_name=="SimulatedTree"){m_simulation =1;} + else m_simulation = 0; + PreTreat(); static unsigned int det,layer,wire,size; @@ -103,7 +131,7 @@ void TSamuraiBDCPhysics::BuildPhysicalEvent(){ devY.push_back(0); Dir.push_back(TVector3()); PileUp.push_back(0); - + Mult[det]=0; X.clear();Z.clear();R.clear(); // Build the necessary X,Z,R vector @@ -114,15 +142,18 @@ void TSamuraiBDCPhysics::BuildPhysicalEvent(){ X[Wire_Angle[idx]].push_back(Wire_X[idx]); Z[Wire_Angle[idx]].push_back(Wire_Z[idx]); R[Wire_Angle[idx]].push_back(dl); - } - } + Wire_PosX[det].push_back(Wire_X[idx]); + Wire_PosZ[det].push_back(Wire_Z[idx]); + Wire_PosAngle[det].push_back(Wire_Angle[idx]); + Wire_PosR[det].push_back(dl); + } + } // end of for loop to build detectors // Reconstruct the vector for each of the plane of each of the detector VX0.clear();VX100.clear(),D.clear(); - uid=0; for(auto it = X.begin();it!=X.end();++it){ -#if __cplusplus > 199711L && NPMULTITHREADING +#if __cplusplus > 199711L && NPMULTITHREADING m_reconstruction.AddPlan(uid++,X[it->first],Z[it->first],R[it->first]); #else D[it->first]=m_reconstruction.BuildTrack2D(X[it->first],Z[it->first],R[it->first],X0,X100,a,b); @@ -138,7 +169,8 @@ void TSamuraiBDCPhysics::BuildPhysicalEvent(){ // Loop over the results for(auto it = X.begin();it!=X.end();++it){ #if __cplusplus > 199711L && NPMULTITHREADING - D[it->first]=m_reconstruction.GetResults(uid++,X0,X100,a,b); + D[it->first]=m_reconstruction.GetResults(uid++,X0,X100,a,b); + Track_D[det].push_back(D[it->first]); #endif // for Debug, write a file of // { std::ofstream f("distance.txt", std::ios::app); @@ -146,10 +178,15 @@ void TSamuraiBDCPhysics::BuildPhysicalEvent(){ // f.close(); // } - // very large "a" means track perpendicular to the chamber, what happen when there is pile up - if(abs(a)>5000) - PileUp[count]++; -//cout << a << " " << b << endl; + + if(abs(a)>5000){ + PileUp[count]++; + } + + Track_a[det].push_back(a); + Track_b[det].push_back(b); + Mult[det]+=X[it->first].size(); + // Position at z=0 TVector3 P(X0,0,0); P.RotateZ(it->first); @@ -190,8 +227,19 @@ void TSamuraiBDCPhysics::BuildPhysicalEvent(){ } } } + // Build the Reference position by averaging all possible pair size = C.size(); + + // for(unsigned int i = 0 ; i < size ; i++)// to get rid of inf value + // { + // if(!std::isnormal(C[i].X()) || !std::isnormal(C[i].Y())) + // { + // size = 0; + // continue; + // } + // } + if(size){ norm=0;PosX100=0;PosY100=0; for(unsigned int i = 0 ; i < size ; i++){ @@ -224,17 +272,20 @@ void TSamuraiBDCPhysics::BuildPhysicalEvent(){ // the Z axis PhiY[count]=(PosY100-PosY[count])/100.; Dir[count]=TVector3(PosX100-PosX[count],PosY100-PosY[count],100).Unit(); - if(m_invertX[det]) - PosX[count]*=-1; - if(m_invertY[det]) - PosY[count]*=-1; - + if(!m_simulation) + { + if(m_invertX[det]) + PosX[count]*=-1; + if(m_invertY[det]) + PosY[count]*=-1; + } + PosX[count]+=m_offset[det].X(); PosY[count]+=m_offset[det].Y(); PosZ[count]=m_offset[det].Z(); - } - } + } + } // end loop over X map values if(PosX[count]==0&&PosY[count]==0){ PosX.erase(PosX.begin()+count); PosY.erase(PosY.begin()+count); @@ -247,11 +298,14 @@ void TSamuraiBDCPhysics::BuildPhysicalEvent(){ count++; }// detector loop + return; } /////////////////////////////////////////////////////////////////////////// void TSamuraiBDCPhysics::PreTreat(){ + ClearPreTreatedData(); + static CalibrationManager* Cal = CalibrationManager::getInstance(); static string channel; @@ -283,15 +337,34 @@ void TSamuraiBDCPhysics::PreTreat(){ } // a valid wire must have an edge if(etime && time && etime-time>ToTThreshold_L && etime-time<ToTThreshold_H){ - channel="SamuraiBDC"+NPL::itoa(det)+"/L" + NPL::itoa(layer); + Layer.push_back(layer); + Wire.push_back(wire); + Time.push_back(time); + ToT.push_back(etime-time); + + channel="SamuraiBDC"+NPL::itoa(det)+"/L" + NPL::itoa(layer); SamuraiDCIndex idx(det,layer,wire); - if(!m_invertD[det]) - m_DCHit[det].push_back(DCHit(det,layer,wire,time,etime-time,Cal->ApplySigmoid(channel,etime))); - else - m_DCHit[det].push_back(DCHit(det,layer,wire,time,etime-time,2.5-Cal->ApplySigmoid(channel,etime))); - } + + if(m_simulation) + { + m_DCHit[det].push_back(DCHit(det,layer,wire,time,etime-time,m_EventData->GetTime(i))); + DriftLength.push_back(m_EventData->GetTime(i)); + } + else + { + if(!m_invertD[det]){ + m_DCHit[det].push_back(DCHit(det,layer,wire,time,etime-time,Cal->ApplySigmoid(channel,etime))); + DriftLength.push_back(Cal->ApplySigmoid(channel,etime)); + } + else{ + m_DCHit[det].push_back(DCHit(det,layer,wire,time,etime-time,2.5-Cal->ApplySigmoid(channel,etime))); + DriftLength.push_back(2.5-Cal->ApplySigmoid(channel,etime)); + } + } + + }//if etime && time etc } - } + }// loop on multiplicity return; } /////////////////////////////////////////////////////////////////////////// @@ -308,6 +381,21 @@ void TSamuraiBDCPhysics::Clear(){ Dir.clear(); PileUp.clear(); Detector.clear(); + + DriftLength.clear(); + Layer.clear(); + Wire.clear(); + Time.clear(); + ToT.clear(); + + Track_a.clear(); + Track_b.clear(); + Track_D.clear(); + Wire_PosX.clear(); + Wire_PosZ.clear(); + Wire_PosAngle.clear(); + Wire_PosR.clear(); + Mult.clear(); } /////////////////////////////////////////////////////////////////////////// diff --git a/NPLib/Detectors/Samurai/TSamuraiBDCPhysics.h b/NPLib/Detectors/Samurai/TSamuraiBDCPhysics.h index 9fae5422e4c3c4b3692f92a3dd499524c6764095..1dda5c1437ae21d0b4e2dd4347c4d16c2d002e3e 100644 --- a/NPLib/Detectors/Samurai/TSamuraiBDCPhysics.h +++ b/NPLib/Detectors/Samurai/TSamuraiBDCPhysics.h @@ -81,10 +81,26 @@ class TSamuraiBDCPhysics : public TObject, public NPL::VDetector{ void Clear(const Option_t*) {}; public: + // Provide Physical Multiplicity + std::vector<double> DriftLength; + std::vector<int> Layer; + std::vector<int> Wire; + std::vector<double> Time; + std::vector<double> ToT; + // map of [bdc number]=vector of hit std::map<unsigned int, std::vector<DCHit>> m_DCHit;//! - + // Varibles from track reconstruction + std::map<unsigned int, int > Mult; + std::map<unsigned int, std::vector<double>> Track_a; + std::map<unsigned int, std::vector<double>> Track_b; + std::map<unsigned int, std::vector<double>> Track_D; + std::map<unsigned int, std::vector<double>> Wire_PosX; + std::map<unsigned int, std::vector<double>> Wire_PosZ; + std::map<unsigned int, std::vector<double>> Wire_PosR; + std::map<unsigned int, std::vector<double>> Wire_PosAngle; + // Computed variable std::vector<double> PosX; std::vector<double> PosY; @@ -103,6 +119,7 @@ class TSamuraiBDCPhysics : public TObject, public NPL::VDetector{ std::map<unsigned int, bool> m_invertY;//! std::map<unsigned int, bool> m_invertD;//! + bool m_simulation;//! public: // Projected position at given Z plan @@ -190,13 +207,19 @@ class TSamuraiBDCPhysics : public TObject, public NPL::VDetector{ TSamuraiBDCData* GetPreTreatedData() const {return m_PreTreatedData;} TVector3 GetPos(unsigned int det); + TVector3 GetOffset(unsigned int det) {return m_offset[det];} ; + TVector3 GetDir(unsigned int det); double GetPosX(unsigned int i) {return PosX[i];} double GetPosY(unsigned int i) {return PosY[i];} + double GetPosZ(unsigned int i) {return PosZ[i];} double GetThetaX(unsigned int i){return ThetaX[i];} double GetPhiY(unsigned int i) {return PhiY[i];} double GetDevX(unsigned int i) {return devX[i];} double GetDevY(unsigned int i) {return devY[i];} int GetPileUp(unsigned int i){return PileUp[i];} + int GetPileUpDet(unsigned int det); + int GetMult(){return PosX.size();}; + int GetMultDet(unsigned int det) {return Mult[det];} private: // Root Input and Output tree classes TSamuraiBDCData* m_EventData;//! diff --git a/NPLib/Detectors/Samurai/TSamuraiFDC0Data.cxx b/NPLib/Detectors/Samurai/TSamuraiFDC0Data.cxx index 5b88ee852e6517eb60b31657dddbb45cf38a5d88..6c62a1c43ed6b7a89df0fde016ad055e725e3257 100644 --- a/NPLib/Detectors/Samurai/TSamuraiFDC0Data.cxx +++ b/NPLib/Detectors/Samurai/TSamuraiFDC0Data.cxx @@ -1,7 +1,8 @@ #include "TSamuraiFDC0Data.h" +#include "RootInput.h" #include <iostream> -TSamuraiFDC0Data::TSamuraiFDC0Data(){}; +TSamuraiFDC0Data::TSamuraiFDC0Data(){} TSamuraiFDC0Data::~TSamuraiFDC0Data(){}; //////////////////////////////////////////////////////////////////////////////// diff --git a/NPLib/Detectors/Samurai/TSamuraiFDC0Physics.cxx b/NPLib/Detectors/Samurai/TSamuraiFDC0Physics.cxx index aab3338139373b2a085e53eab58b888b238e8f3e..0fd7d09dd9755bd1c836fdcdcad6706da9f50a6a 100644 --- a/NPLib/Detectors/Samurai/TSamuraiFDC0Physics.cxx +++ b/NPLib/Detectors/Samurai/TSamuraiFDC0Physics.cxx @@ -9,7 +9,7 @@ * Original Author: Adrien MATTA contact address: matta@lpccaen.in2p3.fr * * * * Creation Date : October 2020 * - * Last update : * + * Last update : * // *---------------------------------------------------------------------------* * Decription: * * This class hold SamuraiFDC0 treated data * @@ -49,10 +49,11 @@ ClassImp(TSamuraiFDC0Physics) // ToTThreshold_H = 180; ToTThreshold_L = 0; ToTThreshold_H = 10000; - DriftLowThreshold=0.1 ; DriftUpThreshold=2.4; PowerThreshold=15; + Layer_Plan1[0]=0;Layer_Plan1[1]=1;Layer_Plan1[2]=4;Layer_Plan1[3]=5; + Layer_Plan2[0]=2;Layer_Plan1[1]=3;Layer_Plan1[2]=6;Layer_Plan1[3]=7; } /////////////////////////////////////////////////////////////////////////// @@ -62,16 +63,31 @@ void TSamuraiFDC0Physics::BuildSimplePhysicalEvent(){ /////////////////////////////////////////////////////////////////////////// void TSamuraiFDC0Physics::BuildPhysicalEvent(){ + + m_simulation = 0; + std::string tree_name = RootInput::getInstance()->GetChain()->GetName(); + if(tree_name=="SimulatedTree"){m_simulation =1;} + else m_simulation = 0; + PreTreat(); + // RemoveNoise(); // Map[plane angle, vector of spatial information] static map<double, vector<double> > X ; static map<double, vector<double> > Z ; - static map<double, vector<double> > R ; + static map<double, vector<double> > R ; + static map<int, vector<int> > WireInLayers; + + static map<int, int > WireInP1; + static map<int, int > WireInP2; + + WireInLayers.clear(); WireInP1.clear(); WireInP2.clear(); + static int det,layer,wire; X.clear();Z.clear();R.clear(); unsigned int size = Detector.size(); + for(unsigned int i = 0 ; i < size ; i++){ if(DriftLength[i] > DriftLowThreshold && DriftLength[i] < DriftUpThreshold){ det = Detector[i]; @@ -80,9 +96,35 @@ void TSamuraiFDC0Physics::BuildPhysicalEvent(){ SamuraiDCIndex idx(det,layer,wire); X[Wire_Angle[idx]].push_back(Wire_X[idx]); Z[Wire_Angle[idx]].push_back(Wire_Z[idx]); - R[Wire_Angle[idx]].push_back(DriftLength[i]); + R[Wire_Angle[idx]].push_back(DriftLength[i]); + WireInLayers[layer].push_back(1); + + Wire_PosX.push_back(Wire_X[idx]); + Wire_PosZ.push_back(Wire_Z[idx]); + Wire_PosAngle.push_back(Wire_Angle[idx]); + Wire_PosR.push_back(DriftLength[i]); + } + } + + int MultP1 =0; + int MultP2 =0; + int n = sizeof( Layer_Plan1) / sizeof(Layer_Plan1[0]); + + for(auto it = WireInLayers.begin();it!=WireInLayers.end();++it){ + bool exists = std::find(Layer_Plan1,Layer_Plan1 + n, it->first) != Layer_Plan1 + n; + + if(exists) { + WireInP1[it->first]= (it->second).size(); + if((it->second).size()>1) MultP1++; + } + else { + WireInP2[it->first]= (it->second).size(); + if((it->second).size()>1) MultP2++; } } + + if( MultP1>=2) MultInPlan++; + if( MultP2>=2) MultInPlan++; // Reconstruct the vector for each of the plane of each of the detector static double X0,X100,a,b; // store the BuildTrack2D results @@ -108,6 +150,7 @@ void TSamuraiFDC0Physics::BuildPhysicalEvent(){ for(auto it = X.begin();it!=X.end();++it){ #if __cplusplus > 199711L && NPMULTITHREADING D[it->first]=m_reconstruction.GetResults(uid++,X0,X100,a,b); + Track_D.push_back(D[it->first]); #endif /* // for Debug, write a file of @@ -116,10 +159,14 @@ void TSamuraiFDC0Physics::BuildPhysicalEvent(){ f.close(); } */ - // very large a means track perpendicular to the chamber, what happen when there is pile up - if(abs(a)>5000) + + if(abs(a)>5000){ PileUp++; + } + Track_a.push_back(a); + Track_b.push_back(b); + Mult+=X[it->first].size(); // Position at z=0 TVector3 P(X0,0,0); @@ -165,19 +212,30 @@ void TSamuraiFDC0Physics::BuildPhysicalEvent(){ } } } - + // Build the Reference position by averaging all possible pair size = C.size(); + + // for(unsigned int i = 0 ; i < size ; i++)// to get rid of inf value + // { + // if(!std::isnormal(C[i].X()) || !std::isnormal(C[i].Y())) + // { + // size = 0; + // continue; + // } + // } + static double PosX100,PosY100,norm; if(size){ PosX=0; PosY=0; + PosZ=0; PosX100=0; PosY100=0; norm=0; for(unsigned int i = 0 ; i < size ; i++){ PosX+= C[i].X()*W[i]; - PosY+= C[i].Y()*W[i]; + PosY+= C[i].Y()*W[i]; PosX100+= C100[i].X()*W[i]; PosY100+= C100[i].Y()*W[i]; norm+=W[i]; @@ -185,9 +243,10 @@ void TSamuraiFDC0Physics::BuildPhysicalEvent(){ MultMean=size; // Mean position at Z=0 + PosX=PosX/norm; PosY=PosY/norm; - + // Mean position at Z=100 PosX100=PosX100/norm; PosY100=PosY100/norm; @@ -200,16 +259,20 @@ void TSamuraiFDC0Physics::BuildPhysicalEvent(){ } devX=sqrt(devX/((size-1)*norm)); devY=sqrt(devY/((size-1)*norm)); - - if(m_invertX){ - PosX*=-1; - PosX100*=-1; - } - - if(m_invertY){ - PosY*=-1; - PosY100*=-1; - } + + if(!m_simulation) + { + if(m_invertX){ + PosX*=-1; + PosX100*=-1; + } + + if(m_invertY){ + PosY*=-1; + PosY100*=-1; + } + } + // Compute ThetaX, angle between the Direction vector projection in XZ with // the Z axis ThetaX=atan((PosX100-PosX)/100.); @@ -219,15 +282,22 @@ void TSamuraiFDC0Physics::BuildPhysicalEvent(){ PhiY=atan((PosY100-PosY)/100.); //PhiY=(PosY100-PosY)/100.; Dir=TVector3(PosX100-PosX,PosY100-PosY,100).Unit(); + PosX+=m_offset.X(); PosY+=m_offset.Y(); + PosZ+=m_offset.Z(); + OffsetX = m_offset.X(); + OffsetY = m_offset.Y(); + OffsetZ = m_offset.Z(); + } return; } /////////////////////////////////////////////////////////////////////////// void TSamuraiFDC0Physics::PreTreat(){ + static CalibrationManager* Cal = CalibrationManager::getInstance(); static string channel; // one map per detector @@ -269,14 +339,21 @@ void TSamuraiFDC0Physics::PreTreat(){ Time.push_back(time); ToT.push_back(etime-time); channel="SamuraiFDC0/L" + NPL::itoa(layer); - if(!m_invertD) - DriftLength.push_back(Cal->ApplySigmoid(channel,etime)); - else - DriftLength.push_back(2.5-Cal->ApplySigmoid(channel,etime)); - } - } - } + if(m_simulation) + { + DriftLength.push_back(m_EventData->GetTime(i)); + } + else + { + if(!m_invertD) + DriftLength.push_back(Cal->ApplySigmoid(channel,etime)); + else + DriftLength.push_back(2.5-Cal->ApplySigmoid(channel,etime)); + } + }//if etime && time etc + } + }//loop on multiplicity return; } /////////////////////////////////////////////////////////////////////////// @@ -319,12 +396,29 @@ void TSamuraiFDC0Physics::RemoveNoise(){ } return; } +//////////////////////////////////////////////////////////////////////////////// +TVector3 TSamuraiFDC0Physics::ProjectedPosition(double Z){ + TVector3 pos(-10000,-10000,-10000); + if(PosX!=-10000){ + pos = TVector3(PosX,PosY,0)+(Z/Dir.Z())*Dir; + } + return pos; +} +//////////////////////////////////////////////////////////////////////////////// +double TSamuraiFDC0Physics::ProjectedPositionX(double Z){ + return ProjectedPosition(Z).X(); +} +//////////////////////////////////////////////////////////////////////////////// +double TSamuraiFDC0Physics::ProjectedPositionY(double Z){ + return ProjectedPosition(Z).Y(); +} + /////////////////////////////////////////////////////////////////////////// void TSamuraiFDC0Physics::Clear(){ MultMean=0; PileUp=0; Mult=0; - PosX=PosY=-10000; + PosX=PosY=PosZ=-10000; ThetaX=PhiY=-10000; devX=devY=-10000; DriftLength.clear(); @@ -336,6 +430,19 @@ void TSamuraiFDC0Physics::Clear(){ ParticleDirection.clear(); MiddlePosition.clear(); Matched.clear(); + + OffsetX = -10000; + OffsetY = -10000; + OffsetZ = -10000; + Track_a.clear(); + Track_b.clear(); + Track_D.clear(); + Wire_PosX.clear(); + Wire_PosZ.clear(); + Wire_PosR.clear(); + Wire_PosAngle.clear(); + + MultInPlan = 0; } /////////////////////////////////////////////////////////////////////////// diff --git a/NPLib/Detectors/Samurai/TSamuraiFDC0Physics.h b/NPLib/Detectors/Samurai/TSamuraiFDC0Physics.h index a013d8bbb92555f1a25b7e7175d7d25e1bef51d1..c0c1c1fb3b5f216250695cf849aad447983d62fb 100644 --- a/NPLib/Detectors/Samurai/TSamuraiFDC0Physics.h +++ b/NPLib/Detectors/Samurai/TSamuraiFDC0Physics.h @@ -66,12 +66,25 @@ class TSamuraiFDC0Physics : public TObject, public NPL::VDetector{ std::vector<double> Time; std::vector<double> ToT; std::vector<bool> Matched; + + // Variables from track reconstruction + std::vector<double> Track_a; + std::vector<double> Track_b; + std::vector <double> Track_D; + std::vector<double> Wire_PosX; + std::vector<double> Wire_PosZ; + std::vector<double> Wire_PosR; + std::vector<double> Wire_PosAngle; + + int MultInPlan; + // Computed variable std::vector<TVector3> ParticleDirection; std::vector<TVector3> MiddlePosition; double PosX; double PosY; + double PosZ; double ThetaX; double PhiY; double devX,devY; @@ -80,13 +93,17 @@ class TSamuraiFDC0Physics : public TObject, public NPL::VDetector{ int MultMean; int PileUp; + double OffsetX; + double OffsetY; + double OffsetZ; + private: // offset and inversion TVector3 m_offset;//! bool m_invertX;//! bool m_invertY;//! bool m_invertD;//! - - + bool m_simulation;//! + private: // Charateristic of the DC void AddDC(std::string name, NPL::XmlParser&);//! take the XML file and fill in Wire_X and Layer_Angle std::map<SamuraiDCIndex,double> Wire_X;//! X position of the wires @@ -99,7 +116,11 @@ class TSamuraiFDC0Physics : public TObject, public NPL::VDetector{ // since the calibration is a sigmoid there quite a few event at the edge double DriftLowThreshold;//! Minimum Drift length to keep the hit double DriftUpThreshold;//! Maximum Drift length to keep the hit - double PowerThreshold;//! Maximum P2 minimisation value to keep the track + double PowerThreshold;//! Maximum P2 minimisation value to keep the track + + int Layer_Plan1[4]; + int Layer_Plan2[4]; + void RemoveNoise(); // Construct the 2D track and ref position at Z=0 and Z=100 based on X,Z and Radius provided @@ -165,14 +186,19 @@ class TSamuraiFDC0Physics : public TObject, public NPL::VDetector{ // Retrieve raw and pre-treated data TSamuraiFDC0Data* GetRawData() const {return m_EventData;} - TVector3 GetPos(){return TVector3(PosX,PosY,m_offset.Z());} + TVector3 GetPos(){return TVector3(PosX,PosY,PosZ);} + TVector3 GetOffset(){return m_offset;} + bool GetInvertX(){return m_invertX;}; + bool GetInvertY(){return m_invertY;}; double GetPosX(){return PosX;} double GetPosY(){return PosY;} + double GetPosZ(){return PosZ;} double GetThetaX(){return ThetaX;} double GetPhiY(){return PhiY;} double GetDevX(){return devX;} double GetDevY(){return devY;} int GetPileUp(){return PileUp;} + int GetMult(){return Mult;} private: // Root Input and Output tree classes TSamuraiFDC0Data* m_EventData;//! @@ -181,8 +207,9 @@ class TSamuraiFDC0Physics : public TObject, public NPL::VDetector{ public: // Projected position at given Z plan - TVector3 ProjectedPosition(double Z){return TVector3(0,0,0);/*FIXME*/}; - + TVector3 ProjectedPosition(double Z); + double ProjectedPositionX(double Z); + double ProjectedPositionY(double Z); private: // Spectra Class // TSamuraiFDC0Spectra* m_Spectra; // ! diff --git a/NPLib/Detectors/Samurai/TSamuraiFDC2Physics.cxx b/NPLib/Detectors/Samurai/TSamuraiFDC2Physics.cxx index 9cd4e25e963ed4c71419e714cfe6f08f7dc58583..060c17a10093e350ab5d2f20595a74f99145ccda 100644 --- a/NPLib/Detectors/Samurai/TSamuraiFDC2Physics.cxx +++ b/NPLib/Detectors/Samurai/TSamuraiFDC2Physics.cxx @@ -62,6 +62,12 @@ void TSamuraiFDC2Physics::BuildSimplePhysicalEvent(){ /////////////////////////////////////////////////////////////////////////// void TSamuraiFDC2Physics::BuildPhysicalEvent(){ + + m_simulation = 0; + std::string tree_name = RootInput::getInstance()->GetChain()->GetName(); + if(tree_name=="SimulatedTree"){m_simulation =1;} + else m_simulation = 0; + PreTreat(); // RemoveNoise(); @@ -81,7 +87,12 @@ void TSamuraiFDC2Physics::BuildPhysicalEvent(){ SamuraiDCIndex idx(det,layer,wire); X[Wire_Angle[idx]].push_back(Wire_X[idx]); Z[Wire_Angle[idx]].push_back(Wire_Z[idx]); - R[Wire_Angle[idx]].push_back(DriftLength[i]); + R[Wire_Angle[idx]].push_back(DriftLength[i]); + + Wire_PosX.push_back(Wire_X[idx]); + Wire_PosZ.push_back(Wire_Z[idx]); + Wire_PosAngle.push_back(Wire_Angle[idx]); + Wire_PosR.push_back(DriftLength[i]); } } @@ -110,8 +121,8 @@ void TSamuraiFDC2Physics::BuildPhysicalEvent(){ for(auto it = X.begin();it!=X.end();++it){ #if __cplusplus > 199711L && NPMULTITHREADING - - D[it->first]=m_reconstruction.GetResults(uid++,X0,X100,a,b); + D[it->first]=m_reconstruction.GetResults(uid++,X0,X100,a,b); + Track_D.push_back(D[it->first]); #endif /* // for Debug, write a file of @@ -120,10 +131,13 @@ void TSamuraiFDC2Physics::BuildPhysicalEvent(){ f.close(); } */ - // very large a means track perpendicular to the chamber, what happen when there is pile up + if(abs(a)>5000) PileUp++; + Track_a.push_back(a); + Track_b.push_back(b); + Mult+=X[it->first].size(); // Position at z=0 TVector3 P(X0,0,0); @@ -205,17 +219,21 @@ void TSamuraiFDC2Physics::BuildPhysicalEvent(){ devX=sqrt(devX/((size-1)*norm)); devY=sqrt(devY/((size-1)*norm)); - - if(m_invertX){ - PosX*=-1; - PosX100*=-1; - } - - if(m_invertY){ - PosY*=-1; - PosY100*=-1; - } - + + if(!m_simulation) + { + if(m_invertX){ + PosX*=-1; + PosX100*=-1; + } + }//end if simulation + + if(m_invertY) + { + PosY*=-1; + PosY100*=-1; + } + // Compute ThetaX, angle between the Direction vector projection in XZ with // the Z axis //ThetaX=atan((PosX100-PosX)/100.); @@ -225,13 +243,13 @@ void TSamuraiFDC2Physics::BuildPhysicalEvent(){ //PhiY=atan((PosY100-PosY)/100.); PhiY=(PosY100-PosY)/100.; Dir=TVector3(PosX100-PosX,PosY100-PosY,100).Unit(); + PosX+=m_offset.X(); PosY+=m_offset.Y(); + PosZ = m_offset.Z(); + } -/* if(PosX==-10000) - cout << " bad " << Detector.size()<< " " << size << endl; - else - cout << " okay" << Detector.size()<< " " << size << endl;*/ + return; } /////////////////////////////////////////////////////////////////////////// @@ -269,21 +287,28 @@ void TSamuraiFDC2Physics::PreTreat(){ if(etime && time && etime-time>ToTThreshold_L && etime-time<ToTThreshold_H){ if(!(wire==93 && layer ==7)){// remove noisy wire Detector.push_back(det); - Layer.push_back(layer); - Wire.push_back(wire); - Time.push_back(time); - ToT.push_back(etime-time); - channel="SamuraiFDC2/L" + NPL::itoa(layer); - // rescalling is needed because calib are bad. - // to be fixed - if(!m_invertD) - DriftLength.push_back(Cal->ApplySigmoid(channel,etime)); - else - DriftLength.push_back(10-Cal->ApplySigmoid(channel,etime)); - } - } + Layer.push_back(layer); + Wire.push_back(wire); + Time.push_back(time); + ToT.push_back(etime-time); + channel="SamuraiFDC2/L" + NPL::itoa(layer); + // rescalling is needed because calib are bad. + // to be fixed + if(m_simulation) + { + DriftLength.push_back(m_EventData->GetTime(i)); + } + else + { + if(!m_invertD) + DriftLength.push_back(Cal->ApplySigmoid(channel,etime)); + else + DriftLength.push_back(10-Cal->ApplySigmoid(channel,etime)); + } + }// "filter" for noisy wires + }//if etime && time etc } - } + }//loop on multiplicity return; } /////////////////////////////////////////////////////////////////////////// @@ -349,7 +374,7 @@ void TSamuraiFDC2Physics::Clear(){ MultMean=0; PileUp=0; Mult=0; - PosX=PosY=-10000; + PosX=PosY=PosZ=-10000; ThetaX=PhiY=-10000; devX=devY=-10000; DriftLength.clear(); @@ -361,6 +386,14 @@ void TSamuraiFDC2Physics::Clear(){ ParticleDirection.clear(); MiddlePosition.clear(); Matched.clear(); + + Track_a.clear(); + Track_b.clear(); + Track_D.clear(); + Wire_PosX.clear(); + Wire_PosZ.clear(); + Wire_PosR.clear(); + Wire_PosAngle.clear(); } /////////////////////////////////////////////////////////////////////////// @@ -399,7 +432,8 @@ void TSamuraiFDC2Physics::ReadConfiguration(NPL::InputParser parser){ GetOffset().Print(); PosX=1; - cout << m_invertY << endl; + //cout << m_invertY << endl; + } /////////////////////////////////////////////////////////////////////////// @@ -421,9 +455,9 @@ void TSamuraiFDC2Physics::AddDC(string name, NPL::XmlParser& xml){ else if(sDir=="Y") T=90*deg; else if(sDir=="U") - T=-30*deg; - else if(sDir=="V") T=+30*deg; + else if(sDir=="V") + T=-30*deg; else{ cout << "ERROR: Unknown layer orientation for Samurai FDC2"<< endl; exit(1); diff --git a/NPLib/Detectors/Samurai/TSamuraiFDC2Physics.h b/NPLib/Detectors/Samurai/TSamuraiFDC2Physics.h index 3e370bccd2757b5534ceb71200ef8344a60e2f20..e5ad76c7f034e0f849db173b2fcc5f1df086e16f 100644 --- a/NPLib/Detectors/Samurai/TSamuraiFDC2Physics.h +++ b/NPLib/Detectors/Samurai/TSamuraiFDC2Physics.h @@ -46,8 +46,6 @@ // Forward declaration //class TSamuraiFDC2Spectra; - - class TSamuraiFDC2Physics : public TObject, public NPL::VDetector{ public: TSamuraiFDC2Physics(); @@ -66,12 +64,23 @@ class TSamuraiFDC2Physics : public TObject, public NPL::VDetector{ std::vector<double> Time; std::vector<double> ToT; std::vector<bool> Matched; + + // Variables from track reconstruction + std::vector<double> Track_a; + std::vector<double> Track_b; + std::vector <double> Track_D; + std::vector<double> Wire_PosX; + std::vector<double> Wire_PosZ; + std::vector<double> Wire_PosR; + std::vector<double> Wire_PosAngle; + // Computed variable std::vector<TVector3> ParticleDirection; std::vector<TVector3> MiddlePosition; double PosX; double PosY; + double PosZ; double ThetaX; double PhiY; double devX,devY; @@ -79,12 +88,13 @@ class TSamuraiFDC2Physics : public TObject, public NPL::VDetector{ int Mult; int MultMean; int PileUp; - + private: // offset and inversion TVector3 m_offset;//! bool m_invertX;//! bool m_invertY;//! bool m_invertD;//! + bool m_simulation;//! public: // Projected position at given Z plan @@ -180,10 +190,13 @@ class TSamuraiFDC2Physics : public TObject, public NPL::VDetector{ bool GetInvertY(){return m_invertY;}; double GetPosX(){return PosX;} double GetPosY(){return PosY;} + double GetPosZ(){return PosZ;} double GetThetaX(){return ThetaX;} double GetDevX(){return devX;} double GetDevY(){return devY;} int GetPileUp(){return PileUp;} + TVector3 GetDir(){return Dir;} + int GetMult(){return Mult;} private: // Root Input and Output tree classes TSamuraiFDC2Data* m_EventData;//! diff --git a/NPLib/Detectors/Samurai/TSamuraiHodoscopePhysics.h b/NPLib/Detectors/Samurai/TSamuraiHodoscopePhysics.h index bacf5ceaff354383ef7500b2414577ec71a3eac7..d7f50d7bcf8c11b6c432d05bbb24403cf708f34d 100644 --- a/NPLib/Detectors/Samurai/TSamuraiHodoscopePhysics.h +++ b/NPLib/Detectors/Samurai/TSamuraiHodoscopePhysics.h @@ -161,6 +161,7 @@ class TSamuraiHodoscopePhysics : public TObject, public NPL::VDetector { vector <double> GetCharge() {return Charge;} vector <double> GetTime() {return Time;} vector<int> GetID() {return ID;} + int GetMult() {return Charge.size();}; // give and external TSamuraiHodoscopeData object to TSamuraiHodoscopePhysics. // needed for online analysis for example diff --git a/NPLib/Detectors/Strasse/TStrassePhysics.cxx b/NPLib/Detectors/Strasse/TStrassePhysics.cxx index fa2f77d9459bf0bd9ee1791c434492a1afa7f393..8670e02390331e50656b141ef9e91f0df8919eae 100644 --- a/NPLib/Detectors/Strasse/TStrassePhysics.cxx +++ b/NPLib/Detectors/Strasse/TStrassePhysics.cxx @@ -16,136 +16,142 @@ * * *---------------------------------------------------------------------------* * Comment: * - * * + * * * * *****************************************************************************/ #include "TStrassePhysics.h" // STL -#include <sstream> -#include <iostream> #include <cmath> -#include <stdlib.h> +#include <iostream> #include <limits> +#include <sstream> +#include <stdlib.h> using namespace std; // NPL -#include "RootInput.h" -#include "RootOutput.h" -#include "Math/Transform3D.h" #include "Math/RotationZYX.h" +#include "Math/Transform3D.h" #include "NPDetectorFactory.h" #include "NPOptionManager.h" #include "NPSystemOfUnits.h" +#include "RootInput.h" +#include "RootOutput.h" using namespace NPUNITS; // ROOT #include "TChain.h" ClassImp(TStrassePhysics) - /////////////////////////////////////////////////////////////////////////// - TStrassePhysics::TStrassePhysics(){ - EventMultiplicity = 0; - m_EventData = new TStrasseData; - m_PreTreatedData = new TStrasseData; - m_EventPhysics = this; - m_Spectra = NULL; - m_E_RAW_Threshold = 0; // adc channels - m_E_Threshold = 0; // MeV - m_NumberOfInnerDetectors = 0; - m_NumberOfOuterDetectors = 0; - m_MaximumStripMultiplicityAllowed = 10; - m_StripEnergyMatching = 0.100; - - //////////////////// - // Inner Detector // - //////////////////// - // Wafer parameter - Inner_Wafer_Length=100*mm; - Inner_Wafer_Width=50*mm; - Inner_Wafer_Thickness=300*micrometer; - Inner_Wafer_AlThickness=0.4*micrometer; - Inner_Wafer_PADExternal=1*cm; - Inner_Wafer_PADInternal=1*mm; - Inner_Wafer_GuardRing=0.5*mm; - - // PCB parameter - Inner_PCB_PortWidth=1*cm; - Inner_PCB_StarboardWidth=2*mm; - Inner_PCB_BevelAngle= 60*deg; - Inner_PCB_UpstreamWidth=1*cm; - Inner_PCB_DownstreamWidth=2*mm; - Inner_PCB_MidWidth=1*mm; - Inner_PCB_Thickness=3*mm; - Inner_PCB_Ledge = 1*mm ; - Inner_PCB_Step = 2*mm ; - Inner_Wafer_TransverseStrips= 128; - Inner_Wafer_LongitudinalStrips= 128; - - //////////////////// - // Outer Detector // - //////////////////// - // Wafer parameter - Outer_Wafer_Length=150*mm; - Outer_Wafer_Width=75*mm; - Outer_Wafer_Thickness=300*micrometer; - Outer_Wafer_AlThickness=0.4*micrometer; - Outer_Wafer_PADExternal=1*cm; - Outer_Wafer_PADInternal=1*mm; - Outer_Wafer_GuardRing=0.5*mm; - - // PCB parameter - Outer_PCB_PortWidth=1*cm; - Outer_PCB_StarboardWidth=2*mm; - Outer_PCB_BevelAngle= 60*deg; - Outer_PCB_UpstreamWidth=1*cm; - Outer_PCB_DownstreamWidth=2*mm; - Outer_PCB_MidWidth=1*mm; - Outer_PCB_Thickness=3*mm; - Outer_PCB_Ledge = 1*mm ; - Outer_PCB_Step = 2*mm ; - Outer_Wafer_TransverseStrips= 128; - Outer_Wafer_LongitudinalStrips= 128; - - - } + /////////////////////////////////////////////////////////////////////////// + TStrassePhysics::TStrassePhysics() { + EventMultiplicity = 0; + m_EventData = new TStrasseData; + m_PreTreatedData = new TStrasseData; + m_EventPhysics = this; + m_Spectra = NULL; + m_E_RAW_Threshold = 0; // adc channels + m_E_Threshold = 0; // MeV + m_NumberOfInnerDetectors = 0; + m_NumberOfOuterDetectors = 0; + m_MaximumStripMultiplicityAllowed = 10; + m_StripEnergyMatching = 0.100; + + //////////////////// + // Inner Detector // + //////////////////// + // Wafer parameter + Inner_Wafer_Length = 100 * mm; + Inner_Wafer_Width = 50 * mm; + Inner_Wafer_Thickness = 300 * micrometer; + Inner_Wafer_AlThickness = 0.4 * micrometer; + Inner_Wafer_PADExternal = 1 * cm; + Inner_Wafer_PADInternal = 1 * mm; + Inner_Wafer_GuardRing = 0.5 * mm; + + // PCB parameter + Inner_PCB_PortWidth = 1 * cm; + Inner_PCB_StarboardWidth = 2 * mm; + Inner_PCB_BevelAngle = 60 * deg; + Inner_PCB_UpstreamWidth = 1 * cm; + Inner_PCB_DownstreamWidth = 2 * mm; + Inner_PCB_MidWidth = 1 * mm; + Inner_PCB_Thickness = 3 * mm; + Inner_PCB_Ledge = 1 * mm; + Inner_PCB_Step = 2 * mm; + Inner_Wafer_TransverseStrips = 128; + Inner_Wafer_LongitudinalStrips = 128; + + //////////////////// + // Outer Detector // + //////////////////// + // Wafer parameter + Outer_Wafer_Length = 150 * mm; + Outer_Wafer_Width = 75 * mm; + Outer_Wafer_Thickness = 300 * micrometer; + Outer_Wafer_AlThickness = 0.4 * micrometer; + Outer_Wafer_PADExternal = 1 * cm; + Outer_Wafer_PADInternal = 1 * mm; + Outer_Wafer_GuardRing = 0.5 * mm; + + // PCB parameter + Outer_PCB_PortWidth = 1 * cm; + Outer_PCB_StarboardWidth = 2 * mm; + Outer_PCB_BevelAngle = 60 * deg; + Outer_PCB_UpstreamWidth = 1 * cm; + Outer_PCB_DownstreamWidth = 2 * mm; + Outer_PCB_MidWidth = 1 * mm; + Outer_PCB_Thickness = 3 * mm; + Outer_PCB_Ledge = 1 * mm; + Outer_PCB_Step = 2 * mm; + Outer_Wafer_TransverseStrips = 128; + Outer_Wafer_LongitudinalStrips = 128; + + /////////////////////// + // Target Parameters // + /////////////////////// + Target_R = 15 * mm; + Target_L = 150 * mm; + Target_Mat = "LH2"; + Target_Cell_Mat = "Mylar"; + Target_Cell_Thickness = 0.15; + Target_Pos = TVector3(0, 0, 0); +} /////////////////////////////////////////////////////////////////////////// -void TStrassePhysics::AddInnerDetector(double R, double Z, double Phi, double Shift, TVector3 Ref){ +void TStrassePhysics::AddInnerDetector(double R, double Z, double Phi, double Shift, TVector3 Ref) { m_NumberOfInnerDetectors++; - double ActiveWidth = Inner_Wafer_Width-2.*Inner_Wafer_GuardRing; - double ActiveLength = Inner_Wafer_Length-Inner_Wafer_PADExternal-Inner_Wafer_PADInternal-2*Inner_Wafer_GuardRing; - double LongitudinalPitch = ActiveWidth/Inner_Wafer_LongitudinalStrips; - double TransversePitch = ActiveLength/Inner_Wafer_TransverseStrips; -//cout << ActiveWidth << " " << ActiveLength << " " << LongitudinalPitch << " " << TransversePitch << endl; + double ActiveWidth = Inner_Wafer_Width - 2. * Inner_Wafer_GuardRing; + double ActiveLength = + Inner_Wafer_Length - Inner_Wafer_PADExternal - Inner_Wafer_PADInternal - 2 * Inner_Wafer_GuardRing; + double LongitudinalPitch = ActiveWidth / Inner_Wafer_LongitudinalStrips; + double TransversePitch = ActiveLength / Inner_Wafer_TransverseStrips; + // cout << ActiveWidth << " " << ActiveLength << " " << LongitudinalPitch << " " << TransversePitch << endl; // Vector C position of detector face center - double Recess = (Inner_PCB_Thickness-Inner_PCB_Step-Inner_Wafer_Thickness); - TVector3 C(Shift,R+Recess,Z);// center of the whole detector, including PCB + double Recess = (Inner_PCB_Thickness - Inner_PCB_Step - Inner_Wafer_Thickness); + TVector3 C(Shift, R + Recess, Z); // center of the whole detector, including PCB C.RotateZ(-Phi); // Vector W normal to detector face (pointing to the back) - TVector3 W(0,1,0); + TVector3 W(0, 1, 0); W.RotateZ(-Phi); - // Vector U on detector face (parallel to Z axis/longitudinal strips) - TVector3 U = TVector3(0,0,1); + // Vector U on detector face (parallel to Z axis/longitudinal strips) + TVector3 U = TVector3(0, 0, 1); // Vector V on detector face (parallel to transverse strips) TVector3 V = W.Cross(U); // Adding position for downstream silicon: // Moving to corner of the silicon - TVector3 P_1_1 = C - +U*0.5*(Inner_PCB_UpstreamWidth-Inner_PCB_DownstreamWidth) // In between wafer - -U*0.5*Inner_PCB_MidWidth // Internal wafer edge - -U*Inner_Wafer_Length // External wafer edge - +U*(Inner_Wafer_GuardRing+Inner_Wafer_PADExternal) // External active wafer edge - +U*0.5*TransversePitch // middle of strip - -V*0.5*(Inner_PCB_StarboardWidth-Inner_PCB_PortWidth) - -V*0.5*Inner_Wafer_Width - +V*Inner_Wafer_GuardRing - +V*0.5*LongitudinalPitch; // middle of strip - + TVector3 P_1_1 = C + U * 0.5 * (Inner_PCB_UpstreamWidth - Inner_PCB_DownstreamWidth) // In between wafer + - U * 0.5 * Inner_PCB_MidWidth // Internal wafer edge + - U * Inner_Wafer_Length // External wafer edge + + U * (Inner_Wafer_GuardRing + Inner_Wafer_PADExternal) // External active wafer edge + + U * 0.5 * TransversePitch // middle of strip + - V * 0.5 * (Inner_PCB_StarboardWidth - Inner_PCB_PortWidth) - V * 0.5 * Inner_Wafer_Width + + V * Inner_Wafer_GuardRing + V * 0.5 * LongitudinalPitch; // middle of strip + vector<double> lineX; vector<double> lineY; vector<double> lineZ; @@ -155,16 +161,16 @@ void TStrassePhysics::AddInnerDetector(double R, double Z, double Phi, double Sh vector<vector<double>> OneDetectorStripPositionZ; TVector3 P; - for(int i=0; i<Inner_Wafer_TransverseStrips; i++){ + for (int i = 0; i < Inner_Wafer_TransverseStrips; i++) { lineX.clear(); lineY.clear(); lineZ.clear(); - for(int j=0; j<Inner_Wafer_LongitudinalStrips; j++){ - P = P_1_1 + Ref + i*U*TransversePitch + j*V*LongitudinalPitch; + for (int j = 0; j < Inner_Wafer_LongitudinalStrips; j++) { + P = P_1_1 + Ref + i * U * TransversePitch + j * V * LongitudinalPitch; lineX.push_back(P.X()); lineY.push_back(P.Y()); lineZ.push_back(P.Z()); - } + } OneDetectorStripPositionX.push_back(lineX); OneDetectorStripPositionY.push_back(lineY); @@ -177,72 +183,65 @@ void TStrassePhysics::AddInnerDetector(double R, double Z, double Phi, double Sh // Adding position for upstream silicon: // Moving to corner of the silicon - P_1_1 = C - +U*0.5*(Inner_PCB_UpstreamWidth-Inner_PCB_DownstreamWidth) // In between wafer - +U*0.5*Inner_PCB_MidWidth // Internal wafer edge - +U*(Inner_Wafer_GuardRing+Inner_Wafer_PADInternal) // Internal active wafer edge - +U*0.5*TransversePitch// middle of strip - -V*0.5*(Inner_PCB_StarboardWidth-Inner_PCB_PortWidth) - -V*0.5*Inner_Wafer_Width - +V*Inner_Wafer_GuardRing - +V*0.5*LongitudinalPitch; // middle of strip - - for(int i=0; i<Inner_Wafer_TransverseStrips; i++){ + P_1_1 = C + U * 0.5 * (Inner_PCB_UpstreamWidth - Inner_PCB_DownstreamWidth) // In between wafer + + U * 0.5 * Inner_PCB_MidWidth // Internal wafer edge + + U * (Inner_Wafer_GuardRing + Inner_Wafer_PADInternal) // Internal active wafer edge + + U * 0.5 * TransversePitch // middle of strip + - V * 0.5 * (Inner_PCB_StarboardWidth - Inner_PCB_PortWidth) - V * 0.5 * Inner_Wafer_Width + + V * Inner_Wafer_GuardRing + V * 0.5 * LongitudinalPitch; // middle of strip + + for (int i = 0; i < Inner_Wafer_TransverseStrips; i++) { lineX.clear(); lineY.clear(); lineZ.clear(); - for(int j=0; j<Inner_Wafer_LongitudinalStrips; j++){ - P = P_1_1 + Ref + i*U*TransversePitch + j*V*LongitudinalPitch; + for (int j = 0; j < Inner_Wafer_LongitudinalStrips; j++) { + P = P_1_1 + Ref + i * U * TransversePitch + j * V * LongitudinalPitch; lineX.push_back(P.X()); lineY.push_back(P.Y()); lineZ.push_back(P.Z()); - } - m_InnerStripPositionX[m_NumberOfInnerDetectors-1].push_back(lineX); - m_InnerStripPositionY[m_NumberOfInnerDetectors-1].push_back(lineY); - m_InnerStripPositionZ[m_NumberOfInnerDetectors-1].push_back(lineZ); - + m_InnerStripPositionX[m_NumberOfInnerDetectors - 1].push_back(lineX); + m_InnerStripPositionY[m_NumberOfInnerDetectors - 1].push_back(lineY); + m_InnerStripPositionZ[m_NumberOfInnerDetectors - 1].push_back(lineZ); } } /////////////////////////////////////////////////////////////////////////// -void TStrassePhysics::AddOuterDetector(double R, double Z, double Phi, double Shift, TVector3 Ref){ +void TStrassePhysics::AddOuterDetector(double R, double Z, double Phi, double Shift, TVector3 Ref) { m_NumberOfOuterDetectors++; - double ActiveWidth = Outer_Wafer_Width-2.*Outer_Wafer_GuardRing; - double ActiveLength = Outer_Wafer_Length-Outer_Wafer_PADExternal-Outer_Wafer_PADInternal-2*Outer_Wafer_GuardRing; - double LongitudinalPitch = ActiveWidth/Outer_Wafer_LongitudinalStrips; - double TransversePitch = ActiveLength/Outer_Wafer_TransverseStrips; -//cout << ActiveWidth << " " << ActiveLength << " " << LongitudinalPitch << " " << TransversePitch << endl; + double ActiveWidth = Outer_Wafer_Width - 2. * Outer_Wafer_GuardRing; + double ActiveLength = + Outer_Wafer_Length - Outer_Wafer_PADExternal - Outer_Wafer_PADInternal - 2 * Outer_Wafer_GuardRing; + double LongitudinalPitch = ActiveWidth / Outer_Wafer_LongitudinalStrips; + double TransversePitch = ActiveLength / Outer_Wafer_TransverseStrips; + // cout << ActiveWidth << " " << ActiveLength << " " << LongitudinalPitch << " " << TransversePitch << endl; // Vector C position of detector face center - double Recess = (Inner_PCB_Thickness-Inner_PCB_Step-Inner_Wafer_Thickness); - TVector3 C(Shift,R+Recess,Z);// center of the whole detector, including PCB + double Recess = (Inner_PCB_Thickness - Inner_PCB_Step - Inner_Wafer_Thickness); + TVector3 C(Shift, R + Recess, Z); // center of the whole detector, including PCB C.RotateZ(-Phi); // Vector W normal to detector face (pointing to the back) - TVector3 W(0,1,0); + TVector3 W(0, 1, 0); W.RotateZ(-Phi); - // Vector U on detector face (parallel to Z axis/longitudinal strips) - TVector3 U = TVector3(0,0,1); + // Vector U on detector face (parallel to Z axis/longitudinal strips) + TVector3 U = TVector3(0, 0, 1); // Vector V on detector face (parallel to transverse strips) TVector3 V = W.Cross(U); // Adding position for downstream silicon: // Moving to corner of the silicon - TVector3 P_1_1 = C - +U*0.5*(Outer_PCB_UpstreamWidth-Outer_PCB_DownstreamWidth) // In between wafer - -U*0.5*Outer_PCB_MidWidth // Internal wafer edge - -U*Outer_Wafer_Length // External wafer edge - +U*(Outer_Wafer_GuardRing+Outer_Wafer_PADExternal) // External active wafer edge - +U*0.5*TransversePitch // middle of strip - -V*0.5*(Outer_PCB_StarboardWidth-Outer_PCB_PortWidth) - -V*0.5*Outer_Wafer_Width - +V*Outer_Wafer_GuardRing - +V*0.5*LongitudinalPitch; // middle of strip - + TVector3 P_1_1 = C + U * 0.5 * (Outer_PCB_UpstreamWidth - Outer_PCB_DownstreamWidth) // In between wafer + - U * 0.5 * Outer_PCB_MidWidth // Internal wafer edge + - U * Outer_Wafer_Length // External wafer edge + + U * (Outer_Wafer_GuardRing + Outer_Wafer_PADExternal) // External active wafer edge + + U * 0.5 * TransversePitch // middle of strip + - V * 0.5 * (Outer_PCB_StarboardWidth - Outer_PCB_PortWidth) - V * 0.5 * Outer_Wafer_Width + + V * Outer_Wafer_GuardRing + V * 0.5 * LongitudinalPitch; // middle of strip + vector<double> lineX; vector<double> lineY; vector<double> lineZ; @@ -252,16 +251,16 @@ void TStrassePhysics::AddOuterDetector(double R, double Z, double Phi, double Sh vector<vector<double>> OneDetectorStripPositionZ; TVector3 P; - for(int i=0; i<Outer_Wafer_TransverseStrips; i++){ + for (int i = 0; i < Outer_Wafer_TransverseStrips; i++) { lineX.clear(); lineY.clear(); lineZ.clear(); - for(int j=0; j<Outer_Wafer_LongitudinalStrips; j++){ - P = P_1_1 + Ref + i*U*TransversePitch + j*V*LongitudinalPitch; + for (int j = 0; j < Outer_Wafer_LongitudinalStrips; j++) { + P = P_1_1 + Ref + i * U * TransversePitch + j * V * LongitudinalPitch; lineX.push_back(P.X()); lineY.push_back(P.Y()); lineZ.push_back(P.Z()); - } + } OneDetectorStripPositionX.push_back(lineX); OneDetectorStripPositionY.push_back(lineY); @@ -274,59 +273,51 @@ void TStrassePhysics::AddOuterDetector(double R, double Z, double Phi, double Sh // Adding position for upstream silicon: // Moving to corner of the silicon - P_1_1 = C - +U*0.5*(Outer_PCB_UpstreamWidth-Outer_PCB_DownstreamWidth) // In between wafer - +U*0.5*Outer_PCB_MidWidth // Internal wafer edge - +U*(Outer_Wafer_GuardRing+Outer_Wafer_PADInternal) // Internal active wafer edge - +U*0.5*TransversePitch// middle of strip - -V*0.5*(Outer_PCB_StarboardWidth-Outer_PCB_PortWidth) - -V*0.5*Outer_Wafer_Width - +V*Outer_Wafer_GuardRing - +V*0.5*LongitudinalPitch; // middle of strip - - for(int i=0; i<Outer_Wafer_TransverseStrips; i++){ + P_1_1 = C + U * 0.5 * (Outer_PCB_UpstreamWidth - Outer_PCB_DownstreamWidth) // In between wafer + + U * 0.5 * Outer_PCB_MidWidth // Internal wafer edge + + U * (Outer_Wafer_GuardRing + Outer_Wafer_PADInternal) // Internal active wafer edge + + U * 0.5 * TransversePitch // middle of strip + - V * 0.5 * (Outer_PCB_StarboardWidth - Outer_PCB_PortWidth) - V * 0.5 * Outer_Wafer_Width + + V * Outer_Wafer_GuardRing + V * 0.5 * LongitudinalPitch; // middle of strip + + for (int i = 0; i < Outer_Wafer_TransverseStrips; i++) { lineX.clear(); lineY.clear(); lineZ.clear(); - for(int j=0; j<Outer_Wafer_LongitudinalStrips; j++){ - P = P_1_1 + Ref + i*U*TransversePitch + j*V*LongitudinalPitch; + for (int j = 0; j < Outer_Wafer_LongitudinalStrips; j++) { + P = P_1_1 + Ref + i * U * TransversePitch + j * V * LongitudinalPitch; lineX.push_back(P.X()); lineY.push_back(P.Y()); lineZ.push_back(P.Z()); - } - m_OuterStripPositionX[m_NumberOfOuterDetectors-1].push_back(lineX); - m_OuterStripPositionY[m_NumberOfOuterDetectors-1].push_back(lineY); - m_OuterStripPositionZ[m_NumberOfOuterDetectors-1].push_back(lineZ); - + m_OuterStripPositionX[m_NumberOfOuterDetectors - 1].push_back(lineX); + m_OuterStripPositionY[m_NumberOfOuterDetectors - 1].push_back(lineY); + m_OuterStripPositionZ[m_NumberOfOuterDetectors - 1].push_back(lineZ); } } - /////////////////////////////////////////////////////////////////////////// -TVector3 TStrassePhysics::GetInnerPositionOfInteraction(const int i){ - TVector3 Position = TVector3( - GetInnerStripPositionX(DetectorNumber[i], InnerStripT[i], InnerStripL[i]), - GetInnerStripPositionY(DetectorNumber[i], InnerStripT[i], InnerStripL[i]), - GetInnerStripPositionZ(DetectorNumber[i], InnerStripT[i], InnerStripL[i])); +TVector3 TStrassePhysics::GetInnerPositionOfInteraction(const int i) { + TVector3 Position = TVector3(GetInnerStripPositionX(DetectorNumber[i], InnerStripT[i], InnerStripL[i]), + GetInnerStripPositionY(DetectorNumber[i], InnerStripT[i], InnerStripL[i]), + GetInnerStripPositionZ(DetectorNumber[i], InnerStripT[i], InnerStripL[i])); return Position; } /////////////////////////////////////////////////////////////////////////// -TVector3 TStrassePhysics::GetOuterPositionOfInteraction(const int i){ +TVector3 TStrassePhysics::GetOuterPositionOfInteraction(const int i) { TVector3 Position = TVector3(GetOuterStripPositionX(DetectorNumber[i], OuterStripT[i], OuterStripL[i]), - GetOuterStripPositionY(DetectorNumber[i], OuterStripT[i], OuterStripL[i]), - GetOuterStripPositionZ(DetectorNumber[i], OuterStripT[i], OuterStripL[i])); + GetOuterStripPositionY(DetectorNumber[i], OuterStripT[i], OuterStripL[i]), + GetOuterStripPositionZ(DetectorNumber[i], OuterStripT[i], OuterStripL[i])); return Position; } - /////////////////////////////////////////////////////////////////////////// -TVector3 TStrassePhysics::GetDetectorNormal(const int i){ +TVector3 TStrassePhysics::GetDetectorNormal(const int i) { // TVector3 U = TVector3(GetStripPositionX(DetectorNumber[i],128,1), // GetStripPositionY(DetectorNumber[i],128,1), // GetStripPositionZ(DetectorNumber[i],128,1)) @@ -346,98 +337,92 @@ TVector3 TStrassePhysics::GetDetectorNormal(const int i){ // TVector3 Normal = U.Cross(V); // // return (Normal.Unit()); - return TVector3(0,0,0); + return TVector3(0, 0, 0); } /////////////////////////////////////////////////////////////////////////// -void TStrassePhysics::BuildSimplePhysicalEvent() { - BuildPhysicalEvent(); -} - - +void TStrassePhysics::BuildSimplePhysicalEvent() { BuildPhysicalEvent(); } /////////////////////////////////////////////////////////////////////////// void TStrassePhysics::BuildPhysicalEvent() { // apply thresholds and calibration PreTreat(); - - if(1 /*CheckEvent() == 1*/){ - vector<TVector2> inner = MatchInner(); - vector<TVector2> outer = MatchOuter(); - - for(unsigned int i=0; i<inner.size(); i++){ - int N = m_PreTreatedData->GetInner_TE_DetectorNbr(inner[i].X()); - int innerT = m_PreTreatedData->GetInner_TE_StripNbr(inner[i].X()); - int innerL = m_PreTreatedData->GetInner_LE_StripNbr(inner[i].Y()); - - double innerTE = m_PreTreatedData->GetInner_TE_Energy(inner[i].X()); - double innerLE = m_PreTreatedData->GetInner_LE_Energy(inner[i].X()); - // look for outer - double outerTE = 0; - double outerLE = 0; - int outerT=0; - int outerL=0; - for(unsigned int j=0; j<outer.size(); j++){ - if(m_PreTreatedData->GetInner_TE_DetectorNbr(outer[j].X())==N){ - outerTE = m_PreTreatedData->GetOuter_TE_Energy(outer[j].X()); - outerLE = m_PreTreatedData->GetOuter_LE_Energy(outer[j].X()); - outerT = m_PreTreatedData->GetOuter_TE_StripNbr(outer[j].X()); - outerL = m_PreTreatedData->GetOuter_LE_StripNbr(outer[j].Y()); - } - } - if(outerTE){ - EventMultiplicity++; - DetectorNumber.push_back(N); - InnerStripT.push_back(innerT); - InnerStripL.push_back(innerL); - InnerTE.push_back(innerTE); - InnerLE.push_back(innerLE); - InnerPosX.push_back(GetInnerPositionOfInteraction(EventMultiplicity-1).x()); - InnerPosY.push_back(GetInnerPositionOfInteraction(EventMultiplicity-1).y()); - InnerPosZ.push_back(GetInnerPositionOfInteraction(EventMultiplicity-1).z()); - - OuterStripT.push_back(outerT); - OuterStripL.push_back(outerL); - OuterTE.push_back(outerTE); - OuterLE.push_back(outerLE); - OuterPosX.push_back(GetOuterPositionOfInteraction(EventMultiplicity-1).x()); - OuterPosY.push_back(GetOuterPositionOfInteraction(EventMultiplicity-1).y()); - OuterPosZ.push_back(GetOuterPositionOfInteraction(EventMultiplicity-1).z()); + if (1 /*CheckEvent() == 1*/) { + vector<TVector2> inner = MatchInner(); + vector<TVector2> outer = MatchOuter(); + + for (unsigned int i = 0; i < inner.size(); i++) { + int N = m_PreTreatedData->GetInner_TE_DetectorNbr(inner[i].X()); + int innerT = m_PreTreatedData->GetInner_TE_StripNbr(inner[i].X()); + int innerL = m_PreTreatedData->GetInner_LE_StripNbr(inner[i].Y()); + + double innerTE = m_PreTreatedData->GetInner_TE_Energy(inner[i].X()); + double innerLE = m_PreTreatedData->GetInner_LE_Energy(inner[i].X()); + // look for outer + double outerTE = 0; + double outerLE = 0; + int outerT = 0; + int outerL = 0; + for (unsigned int j = 0; j < outer.size(); j++) { + if (m_PreTreatedData->GetInner_TE_DetectorNbr(outer[j].X()) == N) { + outerTE = m_PreTreatedData->GetOuter_TE_Energy(outer[j].X()); + outerLE = m_PreTreatedData->GetOuter_LE_Energy(outer[j].X()); + outerT = m_PreTreatedData->GetOuter_TE_StripNbr(outer[j].X()); + outerL = m_PreTreatedData->GetOuter_LE_StripNbr(outer[j].Y()); } + } + if (outerTE) { + EventMultiplicity++; + DetectorNumber.push_back(N); + InnerStripT.push_back(innerT); + InnerStripL.push_back(innerL); + InnerTE.push_back(innerTE); + InnerLE.push_back(innerLE); + InnerPosX.push_back(GetInnerPositionOfInteraction(EventMultiplicity - 1).x()); + InnerPosY.push_back(GetInnerPositionOfInteraction(EventMultiplicity - 1).y()); + InnerPosZ.push_back(GetInnerPositionOfInteraction(EventMultiplicity - 1).z()); + + OuterStripT.push_back(outerT); + OuterStripL.push_back(outerL); + OuterTE.push_back(outerTE); + OuterLE.push_back(outerLE); + OuterPosX.push_back(GetOuterPositionOfInteraction(EventMultiplicity - 1).x()); + OuterPosY.push_back(GetOuterPositionOfInteraction(EventMultiplicity - 1).y()); + OuterPosZ.push_back(GetOuterPositionOfInteraction(EventMultiplicity - 1).z()); } } - + } } /////////////////////////////////////////////////////////////////////////// -vector<TVector2> TStrassePhysics::MatchInner(){ +vector<TVector2> TStrassePhysics::MatchInner() { vector<TVector2> ArrayOfGoodCouple; static unsigned int m_TEMult, m_LEMult; m_TEMult = m_PreTreatedData->GetInnerMultTEnergy(); m_LEMult = m_PreTreatedData->GetInnerMultLEnergy(); - if(m_TEMult>m_MaximumStripMultiplicityAllowed || m_LEMult>m_MaximumStripMultiplicityAllowed){ + if (m_TEMult > m_MaximumStripMultiplicityAllowed || m_LEMult > m_MaximumStripMultiplicityAllowed) { return ArrayOfGoodCouple; } - for(unsigned int i=0; i<m_TEMult; i++){ - for(unsigned int j=0; j<m_LEMult; j++){ + for (unsigned int i = 0; i < m_TEMult; i++) { + for (unsigned int j = 0; j < m_LEMult; j++) { // Declaration of variable for clarity int XDetNbr = m_PreTreatedData->GetInner_TE_DetectorNbr(i); int YDetNbr = m_PreTreatedData->GetInner_LE_DetectorNbr(j); // if same detector check energy - if(XDetNbr == YDetNbr){ + if (XDetNbr == YDetNbr) { // Declaration of variable for clarity double TE = m_PreTreatedData->GetInner_TE_Energy(i); double LE = m_PreTreatedData->GetInner_LE_Energy(j); // look if energy matches - if(abs(TE-LE)/2.<m_StripEnergyMatching){ - ArrayOfGoodCouple.push_back(TVector2(i,j)); + if (abs(TE - LE) / 2. < m_StripEnergyMatching) { + ArrayOfGoodCouple.push_back(TVector2(i, j)); } } } @@ -446,33 +431,33 @@ vector<TVector2> TStrassePhysics::MatchInner(){ return ArrayOfGoodCouple; } /////////////////////////////////////////////////////////////////////////// -vector<TVector2> TStrassePhysics::MatchOuter(){ +vector<TVector2> TStrassePhysics::MatchOuter() { vector<TVector2> ArrayOfGoodCouple; static unsigned int m_TEMult, m_LEMult; m_TEMult = m_PreTreatedData->GetOuterMultTEnergy(); m_LEMult = m_PreTreatedData->GetOuterMultLEnergy(); - if(m_TEMult>m_MaximumStripMultiplicityAllowed || m_LEMult>m_MaximumStripMultiplicityAllowed){ + if (m_TEMult > m_MaximumStripMultiplicityAllowed || m_LEMult > m_MaximumStripMultiplicityAllowed) { return ArrayOfGoodCouple; } - for(unsigned int i=0; i<m_TEMult; i++){ - for(unsigned int j=0; j<m_LEMult; j++){ + for (unsigned int i = 0; i < m_TEMult; i++) { + for (unsigned int j = 0; j < m_LEMult; j++) { // Declaration of variable for clarity int XDetNbr = m_PreTreatedData->GetOuter_TE_DetectorNbr(i); int YDetNbr = m_PreTreatedData->GetOuter_LE_DetectorNbr(j); // if same detector check energy - if(XDetNbr == YDetNbr){ + if (XDetNbr == YDetNbr) { // Declaration of variable for clarity double TE = m_PreTreatedData->GetOuter_TE_Energy(i); double LE = m_PreTreatedData->GetOuter_LE_Energy(j); // look if energy matches - if(abs(TE-LE)/2.<m_StripEnergyMatching){ - ArrayOfGoodCouple.push_back(TVector2(i,j)); + if (abs(TE - LE) / 2. < m_StripEnergyMatching) { + ArrayOfGoodCouple.push_back(TVector2(i, j)); } } } @@ -481,18 +466,16 @@ vector<TVector2> TStrassePhysics::MatchOuter(){ return ArrayOfGoodCouple; } - /////////////////////////////////////////////////////////////////////////// -int TStrassePhysics::CheckEvent(){ +int TStrassePhysics::CheckEvent() { // Check the size of the different elements - if(m_PreTreatedData->GetInnerMultTEnergy() == m_PreTreatedData->GetInnerMultLEnergy() ) + if (m_PreTreatedData->GetInnerMultTEnergy() == m_PreTreatedData->GetInnerMultLEnergy()) return 1; else return -1; } - /////////////////////////////////////////////////////////////////////////// void TStrassePhysics::PreTreat() { // This method typically applies thresholds and calibrations @@ -507,22 +490,26 @@ void TStrassePhysics::PreTreat() { ////// // First Stage Energy unsigned int sizeFront = m_EventData->GetInnerMultTEnergy(); - for (UShort_t i = 0; i < sizeFront ; ++i) { + for (UShort_t i = 0; i < sizeFront; ++i) { if (m_EventData->GetInner_TE_Energy(i) > m_E_RAW_Threshold) { Double_t Energy = m_EventData->GetInner_TE_Energy(i); - //Double_t Energy = Cal->ApplyCalibration("Strasse/ENERGY"+NPL::itoa(m_EventData->GetInner_TE_DetectorNbr(i)),m_EventData->GetInner_TE_Energy(i)); + // Double_t Energy = + // Cal->ApplyCalibration("Strasse/ENERGY"+NPL::itoa(m_EventData->GetInner_TE_DetectorNbr(i)),m_EventData->GetInner_TE_Energy(i)); if (Energy > m_E_Threshold) { - m_PreTreatedData->SetInnerTE(m_EventData->GetInner_TE_DetectorNbr(i), m_EventData->GetInner_TE_StripNbr(i), Energy); + m_PreTreatedData->SetInnerTE(m_EventData->GetInner_TE_DetectorNbr(i), m_EventData->GetInner_TE_StripNbr(i), + Energy); } } } unsigned int sizeBack = m_EventData->GetInnerMultLEnergy(); - for (UShort_t i = 0; i < sizeBack ; ++i) { + for (UShort_t i = 0; i < sizeBack; ++i) { if (m_EventData->GetInner_LE_Energy(i) > m_E_RAW_Threshold) { Double_t Energy = m_EventData->GetInner_LE_Energy(i); - //Double_t Energy = Cal->ApplyCalibration("Strasse/ENERGY"+NPL::itoa(m_EventData->GetInner_LE_DetectorNbr(i)),m_EventData->GetInner_LE_Energy(i)); + // Double_t Energy = + // Cal->ApplyCalibration("Strasse/ENERGY"+NPL::itoa(m_EventData->GetInner_LE_DetectorNbr(i)),m_EventData->GetInner_LE_Energy(i)); if (Energy > m_E_Threshold) { - m_PreTreatedData->SetInnerLE(m_EventData->GetInner_LE_DetectorNbr(i), m_EventData->GetInner_LE_StripNbr(i), Energy); + m_PreTreatedData->SetInnerLE(m_EventData->GetInner_LE_DetectorNbr(i), m_EventData->GetInner_LE_StripNbr(i), + Energy); } } } @@ -530,30 +517,31 @@ void TStrassePhysics::PreTreat() { ////// // Second Stage Energy sizeFront = m_EventData->GetOuterMultTEnergy(); - for (UShort_t i = 0; i < sizeFront ; ++i) { + for (UShort_t i = 0; i < sizeFront; ++i) { if (m_EventData->GetOuter_TE_Energy(i) > m_E_RAW_Threshold) { Double_t Energy = m_EventData->GetOuter_TE_Energy(i); - //Double_t Energy = Cal->ApplyCalibration("Strasse/ENERGY"+NPL::itoa(m_EventData->GetOuter_TE_DetectorNbr(i)),m_EventData->GetOuter_TE_Energy(i)); + // Double_t Energy = + // Cal->ApplyCalibration("Strasse/ENERGY"+NPL::itoa(m_EventData->GetOuter_TE_DetectorNbr(i)),m_EventData->GetOuter_TE_Energy(i)); if (Energy > m_E_Threshold) { - m_PreTreatedData->SetOuterTE(m_EventData->GetOuter_TE_DetectorNbr(i), m_EventData->GetOuter_TE_StripNbr(i), Energy); + m_PreTreatedData->SetOuterTE(m_EventData->GetOuter_TE_DetectorNbr(i), m_EventData->GetOuter_TE_StripNbr(i), + Energy); } } } sizeBack = m_EventData->GetOuterMultLEnergy(); - for (UShort_t i = 0; i < sizeBack ; ++i) { + for (UShort_t i = 0; i < sizeBack; ++i) { if (m_EventData->GetOuter_LE_Energy(i) > m_E_RAW_Threshold) { Double_t Energy = m_EventData->GetOuter_LE_Energy(i); - //Double_t Energy = Cal->ApplyCalibration("Strasse/ENERGY"+NPL::itoa(m_EventData->GetOuter_LE_DetectorNbr(i)),m_EventData->GetOuter_LE_Energy(i)); + // Double_t Energy = + // Cal->ApplyCalibration("Strasse/ENERGY"+NPL::itoa(m_EventData->GetOuter_LE_DetectorNbr(i)),m_EventData->GetOuter_LE_Energy(i)); if (Energy > m_E_Threshold) { - m_PreTreatedData->SetOuterLE(m_EventData->GetOuter_LE_DetectorNbr(i), m_EventData->GetOuter_LE_StripNbr(i), Energy); + m_PreTreatedData->SetOuterLE(m_EventData->GetOuter_LE_DetectorNbr(i), m_EventData->GetOuter_LE_StripNbr(i), + Energy); } } } - } - - /////////////////////////////////////////////////////////////////////////// void TStrassePhysics::ReadAnalysisConfig() { bool ReadingStatus = false; @@ -577,39 +565,39 @@ void TStrassePhysics::ReadAnalysisConfig() { asciiConfig->Append(FileName.c_str()); asciiConfig->AppendLine(""); // read analysis config file - string LineBuffer,DataBuffer,whatToDo; + string LineBuffer, DataBuffer, whatToDo; while (!AnalysisConfigFile.eof()) { // Pick-up next line getline(AnalysisConfigFile, LineBuffer); // search for "header" string name = "ConfigStrasse"; - if (LineBuffer.compare(0, name.length(), name) == 0) + if (LineBuffer.compare(0, name.length(), name) == 0) ReadingStatus = true; // loop on tokens and data - while (ReadingStatus ) { - whatToDo=""; + while (ReadingStatus) { + whatToDo = ""; AnalysisConfigFile >> whatToDo; // Search for comment symbol (%) if (whatToDo.compare(0, 1, "%") == 0) { - AnalysisConfigFile.ignore(numeric_limits<streamsize>::max(), '\n' ); + AnalysisConfigFile.ignore(numeric_limits<streamsize>::max(), '\n'); } - else if (whatToDo=="E_RAW_THRESHOLD") { + else if (whatToDo == "E_RAW_THRESHOLD") { AnalysisConfigFile >> DataBuffer; m_E_RAW_Threshold = atof(DataBuffer.c_str()); cout << whatToDo << " " << m_E_RAW_Threshold << endl; } - else if (whatToDo=="E_THRESHOLD") { + else if (whatToDo == "E_THRESHOLD") { AnalysisConfigFile >> DataBuffer; m_E_Threshold = atof(DataBuffer.c_str()); cout << whatToDo << " " << m_E_Threshold << endl; } - else if (whatToDo=="E_FRONTBACK_MATCHING") { + else if (whatToDo == "E_FRONTBACK_MATCHING") { AnalysisConfigFile >> DataBuffer; m_StripEnergyMatching = atof(DataBuffer.c_str()); cout << whatToDo << " " << m_StripEnergyMatching << endl; @@ -622,8 +610,6 @@ void TStrassePhysics::ReadAnalysisConfig() { } } - - /////////////////////////////////////////////////////////////////////////// void TStrassePhysics::Clear() { EventMultiplicity = 0; @@ -645,159 +631,179 @@ void TStrassePhysics::Clear() { OuterPosX.clear(); OuterPosY.clear(); OuterPosZ.clear(); - } - - /////////////////////////////////////////////////////////////////////////// void TStrassePhysics::ReadConfiguration(NPL::InputParser parser) { // Info block - vector<NPL::InputBlock*> blocks_info = parser.GetAllBlocksWithTokenAndValue("Strasse","Info"); - if(NPOptionManager::getInstance()->GetVerboseLevel()) - cout << "//// " << blocks_info.size() << " info block founds " << endl; + vector<NPL::InputBlock*> blocks_info = parser.GetAllBlocksWithTokenAndValue("Strasse", "Info"); + if (NPOptionManager::getInstance()->GetVerboseLevel()) + cout << "//// " << blocks_info.size() << " info block founds " << endl; - if(blocks_info.size()>1){ - cout << "ERROR: can only accepte one info block, " << blocks_info.size() << " info block founds." << endl; - exit(1); + if (blocks_info.size() > 1) { + cout << "ERROR: can only accepte one info block, " << blocks_info.size() << " info block founds." << endl; + exit(1); } vector<string> info = { - "Inner_Wafer_Length", - "Inner_Wafer_Width", - "Inner_Wafer_Thickness", - "Inner_Wafer_AlThickness", - "Inner_Wafer_PADExternal", - "Inner_Wafer_PADInternal", - "Inner_Wafer_GuardRing", - "Inner_PCB_PortWidth", - "Inner_PCB_StarboardWidth", - "Inner_PCB_BevelAngle", - "Inner_PCB_UpstreamWidth", - "Inner_PCB_DownstreamWidth", - "Inner_PCB_MidWidth", - "Inner_PCB_Thickness", - "Inner_PCB_Ledge", - "Inner_PCB_Step", - "Inner_Wafer_TransverseStrips", - "Inner_Wafer_LongitudinalStrips", - "Outer_Wafer_Length", - "Outer_Wafer_Width", - "Outer_Wafer_Thickness", - "Outer_Wafer_AlThickness", - "Outer_Wafer_PADExternal", - "Outer_Wafer_PADInternal", - "Outer_Wafer_GuardRing", - "Outer_PCB_PortWidth", - "Outer_PCB_StarboardWidth", - "Outer_PCB_BevelAngle", - "Outer_PCB_UpstreamWidth", - "Outer_PCB_DownstreamWidth", - "Outer_PCB_MidWidth", - "Outer_PCB_Thickness", - "Outer_PCB_Ledge", - "Outer_PCB_Step", - "Outer_Wafer_TransverseStrips", - "Outer_Wafer_LongitudinalStrips", + "Inner_Wafer_Length", + "Inner_Wafer_Width", + "Inner_Wafer_Thickness", + "Inner_Wafer_AlThickness", + "Inner_Wafer_PADExternal", + "Inner_Wafer_PADInternal", + "Inner_Wafer_GuardRing", + "Inner_PCB_PortWidth", + "Inner_PCB_StarboardWidth", + "Inner_PCB_BevelAngle", + "Inner_PCB_UpstreamWidth", + "Inner_PCB_DownstreamWidth", + "Inner_PCB_MidWidth", + "Inner_PCB_Thickness", + "Inner_PCB_Ledge", + "Inner_PCB_Step", + "Inner_Wafer_TransverseStrips", + "Inner_Wafer_LongitudinalStrips", + "Outer_Wafer_Length", + "Outer_Wafer_Width", + "Outer_Wafer_Thickness", + "Outer_Wafer_AlThickness", + "Outer_Wafer_PADExternal", + "Outer_Wafer_PADInternal", + "Outer_Wafer_GuardRing", + "Outer_PCB_PortWidth", + "Outer_PCB_StarboardWidth", + "Outer_PCB_BevelAngle", + "Outer_PCB_UpstreamWidth", + "Outer_PCB_DownstreamWidth", + "Outer_PCB_MidWidth", + "Outer_PCB_Thickness", + "Outer_PCB_Ledge", + "Outer_PCB_Step", + "Outer_Wafer_TransverseStrips", + "Outer_Wafer_LongitudinalStrips", }; - if(blocks_info[0]->HasTokenList(info)){ - cout << endl << "//// Strasse info block" << endl; - Inner_Wafer_Length = blocks_info[0]->GetDouble("Inner_Wafer_Length","mm"); - Inner_Wafer_Width = blocks_info[0]->GetDouble("Inner_Wafer_Width","mm"); - Inner_Wafer_Thickness = blocks_info[0]->GetDouble("Inner_Wafer_Thickness","micrometer"); - Inner_Wafer_AlThickness = blocks_info[0]->GetDouble("Inner_Wafer_AlThickness","micrometer"); - Inner_Wafer_PADExternal = blocks_info[0]->GetDouble("Inner_Wafer_PADExternal","mm"); - Inner_Wafer_PADInternal = blocks_info[0]->GetDouble("Inner_Wafer_PADInternal","mm"); - Inner_Wafer_GuardRing = blocks_info[0]->GetDouble("Inner_Wafer_GuardRing","mm"); - Inner_Wafer_TransverseStrips = blocks_info[0]->GetInt("Inner_Wafer_TransverseStrips"); - Inner_Wafer_LongitudinalStrips = blocks_info[0]->GetInt("Inner_Wafer_LongitudinalStrips"); - Inner_PCB_PortWidth = blocks_info[0]->GetDouble("Inner_PCB_PortWidth","mm"); - Inner_PCB_StarboardWidth = blocks_info[0]->GetDouble("Inner_PCB_StarboardWidth","mm"); - Inner_PCB_BevelAngle = blocks_info[0]->GetDouble("Inner_PCB_BevelAngle","mm"); - Inner_PCB_UpstreamWidth = blocks_info[0]->GetDouble("Inner_PCB_UpstreamWidth","mm"); - Inner_PCB_DownstreamWidth = blocks_info[0]->GetDouble("Inner_PCB_DownstreamWidth","mm"); - Inner_PCB_MidWidth = blocks_info[0]->GetDouble("Inner_PCB_MidWidth","mm"); - Inner_PCB_Thickness = blocks_info[0]->GetDouble("Inner_PCB_Thickness","mm"); - Inner_PCB_Ledge = blocks_info[0]->GetDouble("Inner_PCB_Ledge","mm"); - Inner_PCB_Step = blocks_info[0]->GetDouble("Inner_PCB_Step","mm"); - Outer_Wafer_Length = blocks_info[0]->GetDouble("Outer_Wafer_Length","mm"); - Outer_Wafer_Width = blocks_info[0]->GetDouble("Outer_Wafer_Width","mm"); - Outer_Wafer_Thickness = blocks_info[0]->GetDouble("Outer_Wafer_Thickness","mm"); - Outer_Wafer_AlThickness = blocks_info[0]->GetDouble("Outer_Wafer_AlThickness","micrometer"); - Outer_Wafer_PADExternal = blocks_info[0]->GetDouble("Outer_Wafer_PADExternal","mm"); - Outer_Wafer_PADInternal = blocks_info[0]->GetDouble("Outer_Wafer_PADInternal","mm"); - Outer_Wafer_GuardRing = blocks_info[0]->GetDouble("Outer_Wafer_GuardRing","mm"); - Outer_Wafer_TransverseStrips = blocks_info[0]->GetInt("Outer_Wafer_TransverseStrips"); - Outer_Wafer_LongitudinalStrips = blocks_info[0]->GetInt("Outer_Wafer_LongitudinalStrips"); - Outer_PCB_PortWidth = blocks_info[0]->GetDouble("Outer_PCB_PortWidth","mm"); - Outer_PCB_StarboardWidth = blocks_info[0]->GetDouble("Outer_PCB_StarboardWidth","mm"); - Outer_PCB_BevelAngle = blocks_info[0]->GetDouble("Outer_PCB_BevelAngle","deg"); - Outer_PCB_UpstreamWidth = blocks_info[0]->GetDouble("Outer_PCB_UpstreamWidth","mm"); - Outer_PCB_DownstreamWidth = blocks_info[0]->GetDouble("Outer_PCB_DownstreamWidth","mm"); - Outer_PCB_MidWidth = blocks_info[0]->GetDouble("Outer_PCB_MidWidth","mm"); - Outer_PCB_Thickness = blocks_info[0]->GetDouble("Outer_PCB_Thickness","mm"); - Outer_PCB_Ledge = blocks_info[0]->GetDouble("Outer_PCB_Ledge","mm"); - Outer_PCB_Step = blocks_info[0]->GetDouble("Outer_PCB_Step","mm"); + if (blocks_info[0]->HasTokenList(info)) { + cout << endl << "//// Strasse info block" << endl; + Inner_Wafer_Length = blocks_info[0]->GetDouble("Inner_Wafer_Length", "mm"); + Inner_Wafer_Width = blocks_info[0]->GetDouble("Inner_Wafer_Width", "mm"); + Inner_Wafer_Thickness = blocks_info[0]->GetDouble("Inner_Wafer_Thickness", "micrometer"); + Inner_Wafer_AlThickness = blocks_info[0]->GetDouble("Inner_Wafer_AlThickness", "micrometer"); + Inner_Wafer_PADExternal = blocks_info[0]->GetDouble("Inner_Wafer_PADExternal", "mm"); + Inner_Wafer_PADInternal = blocks_info[0]->GetDouble("Inner_Wafer_PADInternal", "mm"); + Inner_Wafer_GuardRing = blocks_info[0]->GetDouble("Inner_Wafer_GuardRing", "mm"); + Inner_Wafer_TransverseStrips = blocks_info[0]->GetInt("Inner_Wafer_TransverseStrips"); + Inner_Wafer_LongitudinalStrips = blocks_info[0]->GetInt("Inner_Wafer_LongitudinalStrips"); + Inner_PCB_PortWidth = blocks_info[0]->GetDouble("Inner_PCB_PortWidth", "mm"); + Inner_PCB_StarboardWidth = blocks_info[0]->GetDouble("Inner_PCB_StarboardWidth", "mm"); + Inner_PCB_BevelAngle = blocks_info[0]->GetDouble("Inner_PCB_BevelAngle", "mm"); + Inner_PCB_UpstreamWidth = blocks_info[0]->GetDouble("Inner_PCB_UpstreamWidth", "mm"); + Inner_PCB_DownstreamWidth = blocks_info[0]->GetDouble("Inner_PCB_DownstreamWidth", "mm"); + Inner_PCB_MidWidth = blocks_info[0]->GetDouble("Inner_PCB_MidWidth", "mm"); + Inner_PCB_Thickness = blocks_info[0]->GetDouble("Inner_PCB_Thickness", "mm"); + Inner_PCB_Ledge = blocks_info[0]->GetDouble("Inner_PCB_Ledge", "mm"); + Inner_PCB_Step = blocks_info[0]->GetDouble("Inner_PCB_Step", "mm"); + Outer_Wafer_Length = blocks_info[0]->GetDouble("Outer_Wafer_Length", "mm"); + Outer_Wafer_Width = blocks_info[0]->GetDouble("Outer_Wafer_Width", "mm"); + Outer_Wafer_Thickness = blocks_info[0]->GetDouble("Outer_Wafer_Thickness", "mm"); + Outer_Wafer_AlThickness = blocks_info[0]->GetDouble("Outer_Wafer_AlThickness", "micrometer"); + Outer_Wafer_PADExternal = blocks_info[0]->GetDouble("Outer_Wafer_PADExternal", "mm"); + Outer_Wafer_PADInternal = blocks_info[0]->GetDouble("Outer_Wafer_PADInternal", "mm"); + Outer_Wafer_GuardRing = blocks_info[0]->GetDouble("Outer_Wafer_GuardRing", "mm"); + Outer_Wafer_TransverseStrips = blocks_info[0]->GetInt("Outer_Wafer_TransverseStrips"); + Outer_Wafer_LongitudinalStrips = blocks_info[0]->GetInt("Outer_Wafer_LongitudinalStrips"); + Outer_PCB_PortWidth = blocks_info[0]->GetDouble("Outer_PCB_PortWidth", "mm"); + Outer_PCB_StarboardWidth = blocks_info[0]->GetDouble("Outer_PCB_StarboardWidth", "mm"); + Outer_PCB_BevelAngle = blocks_info[0]->GetDouble("Outer_PCB_BevelAngle", "deg"); + Outer_PCB_UpstreamWidth = blocks_info[0]->GetDouble("Outer_PCB_UpstreamWidth", "mm"); + Outer_PCB_DownstreamWidth = blocks_info[0]->GetDouble("Outer_PCB_DownstreamWidth", "mm"); + Outer_PCB_MidWidth = blocks_info[0]->GetDouble("Outer_PCB_MidWidth", "mm"); + Outer_PCB_Thickness = blocks_info[0]->GetDouble("Outer_PCB_Thickness", "mm"); + Outer_PCB_Ledge = blocks_info[0]->GetDouble("Outer_PCB_Ledge", "mm"); + Outer_PCB_Step = blocks_info[0]->GetDouble("Outer_PCB_Step", "mm"); } - else{ + else { cout << "ERROR: check your input file formatting " << endl; exit(1); } - // Inner Barrel - vector<NPL::InputBlock*> blocks_inner = parser.GetAllBlocksWithTokenAndValue("Strasse","Inner"); - if(NPOptionManager::getInstance()->GetVerboseLevel()) - cout << "//// " << blocks_inner.size() << " inner detectors found " << endl; - - vector<string> coord = {"Radius","Z","Phi","Shift"}; - - for(unsigned int i = 0 ; i < blocks_inner.size() ; i++){ - if(blocks_inner[i]->HasTokenList(coord)){ - if(NPOptionManager::getInstance()->GetVerboseLevel()) - cout << endl << "//// Strasse inner detector" << i+1 << endl; - - double R = blocks_inner[i]->GetDouble("Radius","mm"); - double Z= blocks_inner[i]->GetDouble("Z","mm"); - double Phi = blocks_inner[i]->GetDouble("Phi","deg"); - double Shift = blocks_inner[i]->GetDouble("Shift","mm"); - TVector3 Ref = blocks_inner[i]->GetTVector3("Ref","mm"); - AddInnerDetector(R,Z,Phi,Shift,Ref); + vector<NPL::InputBlock*> blocks_inner = parser.GetAllBlocksWithTokenAndValue("Strasse", "Inner"); + if (NPOptionManager::getInstance()->GetVerboseLevel()) + cout << "//// " << blocks_inner.size() << " inner detectors found " << endl; + + vector<string> coord = {"Radius", "Z", "Phi", "Shift"}; + + for (unsigned int i = 0; i < blocks_inner.size(); i++) { + if (blocks_inner[i]->HasTokenList(coord)) { + if (NPOptionManager::getInstance()->GetVerboseLevel()) + cout << endl << "//// Strasse inner detector" << i + 1 << endl; + + double R = blocks_inner[i]->GetDouble("Radius", "mm"); + double Z = blocks_inner[i]->GetDouble("Z", "mm"); + double Phi = blocks_inner[i]->GetDouble("Phi", "deg"); + double Shift = blocks_inner[i]->GetDouble("Shift", "mm"); + TVector3 Ref = blocks_inner[i]->GetTVector3("Ref", "mm"); + AddInnerDetector(R, Z, Phi, Shift, Ref); } - else{ - cout << "ERROR: check your input file formatting on " << i+1 << " inner block " <<endl; + else { + cout << "ERROR: check your input file formatting on " << i + 1 << " inner block " << endl; exit(1); } } // Outer barrel - vector<NPL::InputBlock*> blocks_outer = parser.GetAllBlocksWithTokenAndValue("Strasse","Outer"); - if(NPOptionManager::getInstance()->GetVerboseLevel()) - cout << "//// " << blocks_outer.size() << " outer detectors found " << endl; - - for(unsigned int i = 0 ; i < blocks_outer.size() ; i++){ - if(blocks_outer[i]->HasTokenList(coord)){ - if(NPOptionManager::getInstance()->GetVerboseLevel()) - cout << endl << "//// Strasse outer detector" << i+1 << endl; - - double R = blocks_outer[i]->GetDouble("Radius","mm"); - double Z= blocks_outer[i]->GetDouble("Z","mm"); - double Phi = blocks_outer[i]->GetDouble("Phi","deg"); - double Shift = blocks_outer[i]->GetDouble("Shift","mm"); - TVector3 Ref = blocks_outer[i]->GetTVector3("Ref","mm"); - AddOuterDetector(R,Z,Phi,Shift,Ref); + vector<NPL::InputBlock*> blocks_outer = parser.GetAllBlocksWithTokenAndValue("Strasse", "Outer"); + if (NPOptionManager::getInstance()->GetVerboseLevel()) + cout << "//// " << blocks_outer.size() << " outer detectors found " << endl; + + for (unsigned int i = 0; i < blocks_outer.size(); i++) { + if (blocks_outer[i]->HasTokenList(coord)) { + if (NPOptionManager::getInstance()->GetVerboseLevel()) + cout << endl << "//// Strasse outer detector" << i + 1 << endl; + + double R = blocks_outer[i]->GetDouble("Radius", "mm"); + double Z = blocks_outer[i]->GetDouble("Z", "mm"); + double Phi = blocks_outer[i]->GetDouble("Phi", "deg"); + double Shift = blocks_outer[i]->GetDouble("Shift", "mm"); + TVector3 Ref = blocks_outer[i]->GetTVector3("Ref", "mm"); + AddOuterDetector(R, Z, Phi, Shift, Ref); } - else{ + else { - cout << "ERROR: check your input file formatting on " << i+1 << " outer block " <<endl; + cout << "ERROR: check your input file formatting on " << i + 1 << " outer block " << endl; exit(1); } } - ReadAnalysisConfig(); + // Target Info (Specific to STRASSE) + vector<string> tar = {"Radius", "Length", "TargetMaterial", "CellMaterial", "CellThickness", "Pos"}; + vector<NPL::InputBlock*> blocks_target = parser.GetAllBlocksWithTokenAndValue("Strasse", "Target"); + if (NPOptionManager::getInstance()->GetVerboseLevel()) + cout << "//// " << blocks_outer.size() << " STRASSE Target found " << endl; + + for (unsigned int i = 0; i < blocks_target.size(); i++) { + if (blocks_target[i]->HasTokenList(tar)) { + if (NPOptionManager::getInstance()->GetVerboseLevel()) + cout << endl << "//// Strasse TARGET" << i + 1 << endl; + + Target_R = blocks_target[i]->GetDouble("Radius", "mm"); + Target_L = blocks_target[i]->GetDouble("Length", "mm"); + Target_Mat = blocks_target[i]->GetString("TargetMaterial"); + Target_Cell_Mat = blocks_target[i]->GetString("CellMaterial"); + Target_Cell_Thickness = blocks_target[i]->GetDouble("CellThickness", "mm"); + Target_Pos = blocks_target[i]->GetTVector3("Pos", "mm"); + } + else { + + cout << "ERROR: check your input file formatting on " << i + 1 << " outer block " << endl; + exit(1); + } + } + ReadAnalysisConfig(); } /////////////////////////////////////////////////////////////////////////// @@ -805,47 +811,33 @@ void TStrassePhysics::InitSpectra() { // m_Spectra = new TStrasseSpectra(m_NumberOfInnerDetectors); } - - /////////////////////////////////////////////////////////////////////////// void TStrassePhysics::FillSpectra() { - m_Spectra -> FillRawSpectra(m_EventData); - m_Spectra -> FillPreTreatedSpectra(m_PreTreatedData); - m_Spectra -> FillPhysicsSpectra(m_EventPhysics); + m_Spectra->FillRawSpectra(m_EventData); + m_Spectra->FillPreTreatedSpectra(m_PreTreatedData); + m_Spectra->FillPhysicsSpectra(m_EventPhysics); } - - /////////////////////////////////////////////////////////////////////////// -void TStrassePhysics::CheckSpectra() { - m_Spectra->CheckSpectra(); -} - - +void TStrassePhysics::CheckSpectra() { m_Spectra->CheckSpectra(); } /////////////////////////////////////////////////////////////////////////// void TStrassePhysics::ClearSpectra() { // To be done } - - /////////////////////////////////////////////////////////////////////////// -map< string , TH1*> TStrassePhysics::GetSpectra() { - if(m_Spectra) +map<string, TH1*> TStrassePhysics::GetSpectra() { + if (m_Spectra) return m_Spectra->GetMapHisto(); - else{ - map< string , TH1*> empty; + else { + map<string, TH1*> empty; return empty; } } /////////////////////////////////////////////////////////////////////////// -void TStrassePhysics::WriteSpectra() { - m_Spectra->WriteSpectra(); -} - - +void TStrassePhysics::WriteSpectra() { m_Spectra->WriteSpectra(); } /////////////////////////////////////////////////////////////////////////// void TStrassePhysics::AddParameterToCalibrationManager() { @@ -859,54 +851,42 @@ void TStrassePhysics::AddParameterToCalibrationManager() { */ } - - /////////////////////////////////////////////////////////////////////////// void TStrassePhysics::InitializeRootInputRaw() { TChain* inputChain = RootInput::getInstance()->GetChain(); - inputChain->SetBranchStatus("Strasse", true ); - inputChain->SetBranchAddress("Strasse", &m_EventData ); + inputChain->SetBranchStatus("Strasse", true); + inputChain->SetBranchAddress("Strasse", &m_EventData); } - - /////////////////////////////////////////////////////////////////////////// void TStrassePhysics::InitializeRootInputPhysics() { TChain* inputChain = RootInput::getInstance()->GetChain(); inputChain->SetBranchAddress("Strasse", &m_EventPhysics); } - - /////////////////////////////////////////////////////////////////////////// void TStrassePhysics::InitializeRootOutput() { TTree* outputTree = RootOutput::getInstance()->GetTree(); outputTree->Branch("Strasse", "TStrassePhysics", &m_EventPhysics); } - - //////////////////////////////////////////////////////////////////////////////// // Construct Method to be pass to the DetectorFactory // //////////////////////////////////////////////////////////////////////////////// -NPL::VDetector* TStrassePhysics::Construct() { - return (NPL::VDetector*) new TStrassePhysics(); -} - - +NPL::VDetector* TStrassePhysics::Construct() { return (NPL::VDetector*)new TStrassePhysics(); } //////////////////////////////////////////////////////////////////////////////// // Registering the construct method to the factory // //////////////////////////////////////////////////////////////////////////////// -extern "C"{ - class proxy_Strasse{ - public: - proxy_Strasse(){ - NPL::DetectorFactory::getInstance()->AddToken("Strasse","Strasse"); - NPL::DetectorFactory::getInstance()->AddDetector("Strasse",TStrassePhysics::Construct); - } - }; +extern "C" { +class proxy_Strasse { + public: + proxy_Strasse() { + NPL::DetectorFactory::getInstance()->AddToken("Strasse", "Strasse"); + NPL::DetectorFactory::getInstance()->AddDetector("Strasse", TStrassePhysics::Construct); + } +}; - proxy_Strasse p_Strasse; +proxy_Strasse p_Strasse; } diff --git a/NPLib/Detectors/Strasse/TStrassePhysics.h b/NPLib/Detectors/Strasse/TStrassePhysics.h index c220b7bda3a52147cd4264c1da58e971f5cc3b3d..227078dd56f71327e7c36ead59927a5f78cbcaa7 100644 --- a/NPLib/Detectors/Strasse/TStrassePhysics.h +++ b/NPLib/Detectors/Strasse/TStrassePhysics.h @@ -18,234 +18,234 @@ * * *---------------------------------------------------------------------------* * Comment: * - * * + * * * * *****************************************************************************/ -// C++ headers -#include <vector> +// C++ headers #include <map> #include <string> +#include <vector> using namespace std; // ROOT headers -#include "TObject.h" #include "TH1.h" +#include "TObject.h" #include "TVector3.h" // NPTool headers -#include "TStrasseData.h" -#include "TStrasseSpectra.h" #include "NPCalibrationManager.h" -#include "NPVDetector.h" #include "NPInputParser.h" +#include "NPVDetector.h" +#include "TStrasseData.h" +#include "TStrasseSpectra.h" // forward declaration class TStrasseSpectra; - - class TStrassePhysics : public TObject, public NPL::VDetector { ////////////////////////////////////////////////////////////// // constructor and destructor - public: - TStrassePhysics(); - ~TStrassePhysics() {}; - + public: + TStrassePhysics(); + ~TStrassePhysics(){}; ////////////////////////////////////////////////////////////// // Inherited from TObject and overriden to avoid warnings - public: - void Clear(); - void Clear(const Option_t*) {}; + public: + void Clear(); + void Clear(const Option_t*){}; - public: - vector<TVector2> MatchInner(); - vector<TVector2> MatchOuter(); - int CheckEvent(); + public: + vector<TVector2> MatchInner(); + vector<TVector2> MatchOuter(); + int CheckEvent(); ////////////////////////////////////////////////////////////// // data obtained after BuildPhysicalEvent() and stored in // output ROOT file - public: - Int_t EventMultiplicity; - vector<int> DetectorNumber; - vector<int> InnerStripT; - vector<int> InnerStripL; - vector<double> InnerTE; - vector<double> InnerLE; - vector<int> OuterStripT; - vector<int> OuterStripL; - vector<double> OuterTE; - vector<double> OuterLE; - - vector<double> InnerPosX; - vector<double> InnerPosY; - vector<double> InnerPosZ; - vector<double> OuterPosX; - vector<double> OuterPosY; - vector<double> OuterPosZ; - + public: + Int_t EventMultiplicity; + vector<int> DetectorNumber; + vector<int> InnerStripT; + vector<int> InnerStripL; + vector<double> InnerTE; + vector<double> InnerLE; + vector<int> OuterStripT; + vector<int> OuterStripL; + vector<double> OuterTE; + vector<double> OuterLE; + + vector<double> InnerPosX; + vector<double> InnerPosY; + vector<double> InnerPosZ; + vector<double> OuterPosX; + vector<double> OuterPosY; + vector<double> OuterPosZ; + ////////////////////////////////////////////////////////////// // methods inherited from the VDetector ABC class - public: - // read stream from ConfigFile to pick-up detector parameters - void ReadConfiguration(NPL::InputParser); + public: + // read stream from ConfigFile to pick-up detector parameters + void ReadConfiguration(NPL::InputParser); - /// A usefull method to bundle all operation to add a detector - void AddInnerDetector(double R, double Z, double Phi,double Shift,TVector3 Ref); - void AddOuterDetector(double R, double Z, double Phi,double Shift,TVector3 Ref); - - // add parameters to the CalibrationManger - void AddParameterToCalibrationManager(); + /// A usefull method to bundle all operation to add a detector + void AddInnerDetector(double R, double Z, double Phi, double Shift, TVector3 Ref); + void AddOuterDetector(double R, double Z, double Phi, double Shift, TVector3 Ref); - // method called event by event, aiming at extracting the - // physical information from detector - void BuildPhysicalEvent(); + // add parameters to the CalibrationManger + void AddParameterToCalibrationManager(); - // same as BuildPhysicalEvent() method but with a simpler - // treatment - void BuildSimplePhysicalEvent(); + // method called event by event, aiming at extracting the + // physical information from detector + void BuildPhysicalEvent(); - // same as above but for online analysis - void BuildOnlinePhysicalEvent() {BuildPhysicalEvent();}; + // same as BuildPhysicalEvent() method but with a simpler + // treatment + void BuildSimplePhysicalEvent(); - // activate raw data object and branches from input TChain - // in this method mother branches (Detector) AND daughter leaves - // (fDetector_parameter) have to be activated - void InitializeRootInputRaw(); + // same as above but for online analysis + void BuildOnlinePhysicalEvent() { BuildPhysicalEvent(); }; - // activate physics data object and branches from input TChain - // in this method mother branches (Detector) AND daughter leaves - // (fDetector_parameter) have to be activated - void InitializeRootInputPhysics(); + // activate raw data object and branches from input TChain + // in this method mother branches (Detector) AND daughter leaves + // (fDetector_parameter) have to be activated + void InitializeRootInputRaw(); - // create branches of output ROOT file - void InitializeRootOutput(); + // activate physics data object and branches from input TChain + // in this method mother branches (Detector) AND daughter leaves + // (fDetector_parameter) have to be activated + void InitializeRootInputPhysics(); - // clear the raw and physical data objects event by event - void ClearEventPhysics() {Clear();} - void ClearEventData() {m_EventData->Clear();} + // create branches of output ROOT file + void InitializeRootOutput(); - // methods related to the TStrasseSpectra class - // instantiate the TStrasseSpectra class and - // declare list of histograms - void InitSpectra(); + // clear the raw and physical data objects event by event + void ClearEventPhysics() { Clear(); } + void ClearEventData() { m_EventData->Clear(); } - // fill the spectra - void FillSpectra(); + // methods related to the TStrasseSpectra class + // instantiate the TStrasseSpectra class and + // declare list of histograms + void InitSpectra(); - // used for Online mainly, sanity check for histograms and - // change their color if issues are found, for example - void CheckSpectra(); + // fill the spectra + void FillSpectra(); - // used for Online only, clear all the spectra - void ClearSpectra(); + // used for Online mainly, sanity check for histograms and + // change their color if issues are found, for example + void CheckSpectra(); - // write spectra to ROOT output file - void WriteSpectra(); + // used for Online only, clear all the spectra + void ClearSpectra(); + // write spectra to ROOT output file + void WriteSpectra(); ////////////////////////////////////////////////////////////// // specific methods to Strasse array - public: - // remove bad channels, calibrate the data and apply thresholds - void PreTreat(); - - // clear the pre-treated object - void ClearPreTreatedData() {m_PreTreatedData->Clear();} - - // read the user configuration file. If no file is found, load standard one - void ReadAnalysisConfig(); - - // give and external TStrasseData object to TStrassePhysics. - // needed for online analysis for example - void SetRawDataPointer(TStrasseData* rawDataPointer) {m_EventData = rawDataPointer;} - - double GetNumberOfInnerDetector() const {return m_NumberOfInnerDetectors;} - double GetNumberOfOuterDetector() const {return m_NumberOfOuterDetectors;} - int GetEventMultiplicity() const {return EventMultiplicity;} - int GetDetNbrSize() const {return DetectorNumber.size();} - TVector3 GetInnerPos(const int i) const {return TVector3(InnerPosX[i],InnerPosY[i],InnerPosZ[i]);} - TVector3 GetOuterPos(const int i) const {return TVector3(OuterPosX[i],OuterPosY[i],OuterPosZ[i]);} - - double GetInnerStripPositionX(const int N, const int X, const int Y){ - return m_InnerStripPositionX[N-1][X-1][Y-1]; - }; - double GetInnerStripPositionY(const int N, const int X, const int Y){ - return m_InnerStripPositionY[N-1][X-1][Y-1]; - }; - double GetInnerStripPositionZ(const int N, const int X, const int Y){ - return m_InnerStripPositionZ[N-1][X-1][Y-1]; - }; - - double GetOuterStripPositionX(const int N, const int X, const int Y){ - return m_OuterStripPositionX[N-1][X-1][Y-1]; - }; - double GetOuterStripPositionY(const int N, const int X, const int Y){ - return m_OuterStripPositionY[N-1][X-1][Y-1]; - }; - double GetOuterStripPositionZ(const int N, const int X, const int Y){ - return m_OuterStripPositionZ[N-1][X-1][Y-1]; - }; - - TVector3 GetInnerPositionOfInteraction(const int i); - TVector3 GetOuterPositionOfInteraction(const int i); - - TVector3 GetDetectorNormal(const int i); - + public: + // remove bad channels, calibrate the data and apply thresholds + void PreTreat(); + + // clear the pre-treated object + void ClearPreTreatedData() { m_PreTreatedData->Clear(); } + + // read the user configuration file. If no file is found, load standard one + void ReadAnalysisConfig(); + + // give and external TStrasseData object to TStrassePhysics. + // needed for online analysis for example + void SetRawDataPointer(TStrasseData* rawDataPointer) { m_EventData = rawDataPointer; } + + double GetNumberOfInnerDetector() const { return m_NumberOfInnerDetectors; } + double GetNumberOfOuterDetector() const { return m_NumberOfOuterDetectors; } + int GetEventMultiplicity() const { return EventMultiplicity; } + int GetDetNbrSize() const { return DetectorNumber.size(); } + TVector3 GetInnerPos(const int i) const { return TVector3(InnerPosX[i], InnerPosY[i], InnerPosZ[i]); } + TVector3 GetOuterPos(const int i) const { return TVector3(OuterPosX[i], OuterPosY[i], OuterPosZ[i]); } + + double GetInnerStripPositionX(const int N, const int X, const int Y) { + return m_InnerStripPositionX[N - 1][X - 1][Y - 1]; + }; + double GetInnerStripPositionY(const int N, const int X, const int Y) { + return m_InnerStripPositionY[N - 1][X - 1][Y - 1]; + }; + double GetInnerStripPositionZ(const int N, const int X, const int Y) { + return m_InnerStripPositionZ[N - 1][X - 1][Y - 1]; + }; + + double GetOuterStripPositionX(const int N, const int X, const int Y) { + return m_OuterStripPositionX[N - 1][X - 1][Y - 1]; + }; + double GetOuterStripPositionY(const int N, const int X, const int Y) { + return m_OuterStripPositionY[N - 1][X - 1][Y - 1]; + }; + double GetOuterStripPositionZ(const int N, const int X, const int Y) { + return m_OuterStripPositionZ[N - 1][X - 1][Y - 1]; + }; + + TVector3 GetInnerPositionOfInteraction(const int i); + TVector3 GetOuterPositionOfInteraction(const int i); + TVector3 GetDetectorNormal(const int i); + + string GetTargetMaterial(const int i) const { return Target_Mat; } + string GetTargetCellMaterial(const int i) const { return Target_Cell_Mat; } + double GetTargetCellThickness(const int i) const { return Target_Cell_Thickness; } + double GetTargetLength(const int i) const { return Target_L; } + double GetTargetRadius(const int i) const { return Target_R; } + TVector3 GetTargetPosition(const int i) const { return Target_Pos; } + // objects are not written in the TTree - private: - TStrasseData* m_EventData; //! - TStrasseData* m_PreTreatedData; //! - TStrassePhysics* m_EventPhysics; //! + private: + TStrasseData* m_EventData; //! + TStrasseData* m_PreTreatedData; //! + TStrassePhysics* m_EventPhysics; //! - // getters for raw and pre-treated data object - public: - TStrasseData* GetRawData() const {return m_EventData;} - TStrasseData* GetPreTreatedData() const {return m_PreTreatedData;} + // getters for raw and pre-treated data object + public: + TStrasseData* GetRawData() const { return m_EventData; } + TStrasseData* GetPreTreatedData() const { return m_PreTreatedData; } // parameters used in the analysis - private: - int m_NumberOfInnerDetectors; //! - int m_NumberOfOuterDetectors; //! - - vector<vector<vector<double>>> m_InnerStripPositionX; //! - vector<vector<vector<double>>> m_InnerStripPositionY; //! - vector<vector<vector<double>>> m_InnerStripPositionZ; //! + private: + int m_NumberOfInnerDetectors; //! + int m_NumberOfOuterDetectors; //! - vector<vector<vector<double>>> m_OuterStripPositionX; //! - vector<vector<vector<double>>> m_OuterStripPositionY; //! - vector<vector<vector<double>>> m_OuterStripPositionZ; //! + vector<vector<vector<double>>> m_InnerStripPositionX; //! + vector<vector<vector<double>>> m_InnerStripPositionY; //! + vector<vector<vector<double>>> m_InnerStripPositionZ; //! + vector<vector<vector<double>>> m_OuterStripPositionX; //! + vector<vector<vector<double>>> m_OuterStripPositionY; //! + vector<vector<vector<double>>> m_OuterStripPositionZ; //! - // thresholds - double m_E_RAW_Threshold; //! - double m_E_Threshold; //! + // thresholds + double m_E_RAW_Threshold; //! + double m_E_Threshold; //! private: - unsigned int m_MaximumStripMultiplicityAllowed;// - double m_StripEnergyMatching;// - + unsigned int m_MaximumStripMultiplicityAllowed; // + double m_StripEnergyMatching; // - // spectra class - private: - TStrasseSpectra* m_Spectra; // ! + // spectra class + private: + TStrasseSpectra* m_Spectra; // ! - // spectra getter - public: - map<string, TH1*> GetSpectra(); + // spectra getter + public: + map<string, TH1*> GetSpectra(); // Static constructor to be passed to the Detector Factory - public: - static NPL::VDetector* Construct(); + public: + static NPL::VDetector* Construct(); - ClassDef(TStrassePhysics,1) // StrassePhysics structure - - private: // geometry - //////////////////// - // Inner Detector // - //////////////////// - // Wafer parameter - double Inner_Wafer_Length; + ClassDef(TStrassePhysics, 1) // StrassePhysics structure + + private : // geometry + //////////////////// + // Inner Detector // + //////////////////// + // Wafer parameter + double Inner_Wafer_Length; double Inner_Wafer_Width; double Inner_Wafer_Thickness; double Inner_Wafer_AlThickness; @@ -291,6 +291,14 @@ class TStrassePhysics : public TObject, public NPL::VDetector { double Outer_Wafer_TransverseStrips; double Outer_Wafer_LongitudinalStrips; - + /////////////////////// + // Target Parameters // + /////////////////////// + double Target_R; + double Target_L; + string Target_Mat; + string Target_Cell_Mat; + double Target_Cell_Thickness; + TVector3 Target_Pos; }; #endif diff --git a/NPLib/Detectors/Vendeta/TVendetaPhysics.cxx b/NPLib/Detectors/Vendeta/TVendetaPhysics.cxx index 94ce084b7d9a76edb64c4af33fb5bb49fa442316..6fc473fb922de0ad593ee5e0e3cad3ba164e4ebf 100644 --- a/NPLib/Detectors/Vendeta/TVendetaPhysics.cxx +++ b/NPLib/Detectors/Vendeta/TVendetaPhysics.cxx @@ -104,6 +104,7 @@ void TVendetaPhysics::BuildPhysicalEvent() { LG_Q2.push_back(m_PreTreatedData->GetLGQ2(e)); LG_Time.push_back(m_PreTreatedData->GetLGTime(e)); LG_Qmax.push_back(m_PreTreatedData->GetLGQmax(e)); + LG_isSat.push_back(m_PreTreatedData->GetLGIsSat(e)); } @@ -113,6 +114,7 @@ void TVendetaPhysics::BuildPhysicalEvent() { HG_Q2.push_back(m_PreTreatedData->GetHGQ2(e)); HG_Time.push_back(m_PreTreatedData->GetHGTime(e)); HG_Qmax.push_back(m_PreTreatedData->GetHGQmax(e)); + HG_isSat.push_back(m_PreTreatedData->GetHGIsSat(e)); } m_AnodeNumber=-1; @@ -146,6 +148,7 @@ void TVendetaPhysics::PreTreat() { m_PreTreatedData->SetLGQ2(m_EventData->GetLGQ2(i)); m_PreTreatedData->SetLGTime(Time); m_PreTreatedData->SetLGQmax(Qmax); + m_PreTreatedData->SetLGIsSat(m_EventData->GetLGIsSat(i)); } // HG pretreat @@ -165,6 +168,7 @@ void TVendetaPhysics::PreTreat() { m_PreTreatedData->SetHGQ2(m_EventData->GetHGQ2(i)); m_PreTreatedData->SetHGTime(Time); m_PreTreatedData->SetHGQmax(Qmax); + m_PreTreatedData->SetHGIsSat(m_EventData->GetHGIsSat(i)); } } @@ -242,12 +246,14 @@ void TVendetaPhysics::Clear() { LG_Q2.clear(); LG_Time.clear(); LG_Qmax.clear(); - + LG_isSat.clear(); + HG_DetectorNumber.clear(); HG_Q1.clear(); HG_Q2.clear(); HG_Time.clear(); HG_Qmax.clear(); + HG_isSat.clear(); } diff --git a/NPLib/Detectors/Vendeta/TVendetaPhysics.h b/NPLib/Detectors/Vendeta/TVendetaPhysics.h index f7b2d0b64497ecea73a9b78438dc537a0b5f342e..de165c8e475cb632dd8846c55def1b45d4289baa 100644 --- a/NPLib/Detectors/Vendeta/TVendetaPhysics.h +++ b/NPLib/Detectors/Vendeta/TVendetaPhysics.h @@ -67,12 +67,14 @@ class TVendetaPhysics : public TObject, public NPL::VDetector { vector<double> LG_Q2; vector<double> LG_Time; vector<double> LG_Qmax; + vector<int> LG_isSat; vector<int> HG_DetectorNumber; vector<double> HG_Q1; vector<double> HG_Q2; vector<double> HG_Time; vector<double> HG_Qmax; + vector<int> HG_isSat; /// A usefull method to bundle all operation to add a detector diff --git a/NPLib/Neutron/NPCrossTalk.cxx b/NPLib/Neutron/NPCrossTalk.cxx old mode 100644 new mode 100755 index f6911a3f833c2bc41d13a29e8601777aa6689916..ac1518447ea65216a40c3fd7b45ac7ad5f055abd --- a/NPLib/Neutron/NPCrossTalk.cxx +++ b/NPLib/Neutron/NPCrossTalk.cxx @@ -39,7 +39,7 @@ CrossTalk::~CrossTalk(){ } //////////////////////////////////////////////////////////////////////////////// -void CrossTalk::AddHitVector(const vector<double>& X, const vector<double>& Y, const vector<double>& Z, const vector<double>& Q, const vector<double>& dX, const vector<double>& dY, const vector<double>& dZ, const vector<double> &T){ +void CrossTalk::AddHitVector(const vector<double>& X, const vector<double>& Y, const vector<double>& Z, const vector<double>& Q, const vector<double>& dX, const vector<double>& dY, const vector<double>& dZ, const vector<double> &T, const vector<int> &ID){ HitX = &X; @@ -52,13 +52,13 @@ void CrossTalk::AddHitVector(const vector<double>& X, const vector<double>& Y, c HitT = &T; HitQ = &Q; + HitID = &ID; sizeHit = X.size(); } - #if __cplusplus > 201103L bool cmp(pair<int,double> & a, pair<int,double>&b){ - return a.second < b.second; + return a.second < b.second; } #else bool cmp(pair<int,double>a, pair<int,double>b){ @@ -73,7 +73,7 @@ vector<int> CrossTalk::ComputeCrossTalk(const double& Causality, const double& D static double x2,y2,z2,dx2,dy2,dz2,t2; static double Dist, HyperSphere, Beta1; - //Attribute a new index based on the time arrive from the first to the last hit + //Attribute a new index based on the time of arrival from the first to the last hit //Using vector of pairs (ID,Time) static vector<pair<int, double>> pair_SortedID; pair_SortedID.clear(); @@ -133,30 +133,7 @@ vector<int> CrossTalk::ComputeCrossTalk(const double& Causality, const double& D static unsigned int count, count2; count=1,count2=9; m_HeadClust.clear(), m_QtotClust.clear(); - Clusters_3D->Clear(); - /* Clusters_3D->SetTitle("Hit Clusters in NEBULA & NeuLAND"); */ - /* Clusters_3D->SetFillColor(29); */ - /* Clusters_3D->SetMarkerSize(10); */ - /* Clusters_3D->SetMarkerStyle(20); */ - /* Clusters_3D->SetLineWidth(2); */ - - Clusters_3D->SetPoint(1,10000,-2500,0); - Clusters_3D->SetPoint(2,10000,-2500,2000); - Clusters_3D->SetPoint(3,10000,2500,0); - Clusters_3D->SetPoint(4,10000,2500,2000); - Clusters_3D->SetPoint(5,12500,-2500,0); - Clusters_3D->SetPoint(6,12500,-2500,2000); - Clusters_3D->SetPoint(7,12500,2500,0); - Clusters_3D->SetPoint(8,12500,2500,2000); - Clusters_3D->SetPointError(1,0,0,0); - Clusters_3D->SetPointError(2,0,0,0); - Clusters_3D->SetPointError(3,0,0,0); - Clusters_3D->SetPointError(4,0,0,0); - Clusters_3D->SetPointError(5,0,0,0); - Clusters_3D->SetPointError(6,0,0,0); - Clusters_3D->SetPointError(7,0,0,0); - Clusters_3D->SetPointError(8,0,0,0); - + for(auto itr = mapOfClust.begin(); itr != mapOfClust.end(); itr++){ mapOfHead[count] = itr->second[0]; m_HeadClust.push_back(itr->second[0]); @@ -166,9 +143,6 @@ vector<int> CrossTalk::ComputeCrossTalk(const double& Causality, const double& D Qtot = 0; for(int j =0; j < itr->second.size();j++){ Qtot += (*HitQ)[itr->second[j]]; - /* XY_Clusters->Set(count2, (*HitX)[itr->second[j]], (*HitY)[itr->second[j]]); */ - /* XZ_Clusters->Set(count2, (*HitX)[itr->second[j]], (*HitZ)[itr->second[j]]); */ - /* YZ_Clusters->Set(count2, (*HitZ)[itr->second[j]], (*HitY)[itr->second[j]]); */ /* cout << (*HitX)[itr->second[j]] << " " << (*HitdX)[itr->second[j]] << " " << (*HitdY)[itr->second[j]]<< ""<< (*HitdZ)[itr->second[j]]<< endl; */ Clusters_3D->SetPoint(count2, (*HitZ)[itr->second[j]], (*HitX)[itr->second[j]], (*HitY)[itr->second[j]]); Clusters_3D->SetPointError(count2, (*HitdZ)[itr->second[j]], (*HitdX)[itr->second[j]], (*HitdY)[itr->second[j]]); @@ -178,12 +152,7 @@ vector<int> CrossTalk::ComputeCrossTalk(const double& Causality, const double& D mapOfQtot[count] = Qtot; count++; } - - /* Clusters_3D->Draw("err"); */ - /* Clusters_2D.push_back(XY_Clusters); */ - /* Clusters_2D.push_back(XZ_Clusters); */ - /* Clusters_2D.push_back(YZ_Clusters); */ - + double v_n, Dmax, Qclust1, beta1, beta12; static vector<double> CrossTalk; CrossTalk.clear(); @@ -199,48 +168,199 @@ vector<int> CrossTalk::ComputeCrossTalk(const double& Causality, const double& D Dist = sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1) + (z2-z1)*(z2-z1)); Dmax = (t2-t1)*v_n; beta12 = Dist/(t2-t1)/C_light; - /* if(beta1/beta12 > Causality){ */ - if( ( (*HitdX)[mapOfHead[i]] == 120. && Qclust1 < 96.9*beta1/beta12 - 70.5 )||( (*HitdX)[mapOfHead[i]] == 50. && Qclust1 < 150*beta1/beta12 - 130 ) ){ + if(beta1/beta12 > Causality){ + /* if( ( (*HitdX)[mapOfHead[i]] == 120. && Qclust1 < 96.9*beta1/beta12 - 70.5 )||( (*HitdX)[mapOfHead[i]] == 50. && Qclust1 < 150*beta1/beta12 - 130 ) ){ */ CrossTalk.push_back(j); } + } } + + //elimate potential CrossTalk in mapOfHead + static unsigned int sizeCT; + sizeCT = CrossTalk.size(); + for(unsigned int i = 0; i < sizeCT; i++ ){ + mapOfHead.erase(CrossTalk[i]); + mapOfQtot.erase(CrossTalk[i]); + } + + //return vector of real neutrons IDs + m_Neutrons.clear(); + m_QtotNeut.clear(); + for(auto itr = mapOfHead.begin(); itr != mapOfHead.end(); itr++){ + m_Neutrons.push_back(itr->second); + } + for(auto itr = mapOfQtot.begin(); itr != mapOfQtot.end(); itr++){ + m_QtotNeut.push_back(itr->second); + } + return m_Neutrons; } - //elimate potential CrossTalk in mapOfHead - static unsigned int sizeCT; - sizeCT = CrossTalk.size(); - for(unsigned int i = 0; i < sizeCT; i++ ){ - mapOfHead.erase(CrossTalk[i]); - mapOfQtot.erase(CrossTalk[i]); + ///////////////////////////////////////////////////// + ////////// KONDO CT ///////////////////////////////// + ///////////////////////////////////////////////////// + vector<int> CrossTalk::ComputeCrossTalk_Kondo(const double& Causality, const double& DistMin, const int& Option, TCutG* TCut1, TCutG* TCut2){ + + const double C_light = 299.792458; + static double x1,y1,z1,dx1,dy1,dz1,t1,q1,id1; + static double x2,y2,z2,dx2,dy2,dz2,t2,q2,id2; + static double Dt, Dist, HyperSphere, Beta1; + + //Attribute a new index based on the time arrive from the first to the last hit + //Using vector of pairs (ID,Time) + static vector<pair<int, double>> pair_SortedID; + pair_SortedID.clear(); + for(int i = 0; i < sizeHit; i++){ + pair_SortedID.emplace_back(i, (*HitT)[i]); + } + //Sort pair vector (ID,Time) in Time + sort(pair_SortedID.begin(), pair_SortedID.end(), cmp); + + m_SortedID.clear(); + //Put new ID sorted in a vector + for(int i = 0; i < sizeHit; i++){ + m_SortedID.push_back(pair_SortedID[i].first); + } + + // A different Cluster number (starting at 1) is assigned to each hit + static vector<int> ID_ClustHit; + ID_ClustHit.clear(); + for(int i =0 ; i < sizeHit; i++){ + ID_ClustHit.push_back(i+1); + } + + //Test each Dist(n-n) to find clusters + //When 2 neutrons are part of a the same cluster, change their ID_ClustHit for the lowest + //Create a map to hold the Hit_ID for each cluster + mapOfClust.clear(); + + /////////////////////////////////////// + /// HyperSphere cleaning (same wall) + ////////////////////////////////////// + + for(int j = 0; j < sizeHit-1; j++){ + if(ID_ClustHit[j]==-1) continue; + x1 = (*HitX)[m_SortedID[j]], y1 = (*HitY)[m_SortedID[j]], z1 = (*HitZ)[m_SortedID[j]]; + dx1 = (*HitdX)[m_SortedID[j]], dy1 = (*HitdY)[m_SortedID[j]]; + dz1 = (*HitdZ)[m_SortedID[j]]; + t1 = (*HitT)[m_SortedID[j]]; + id1=(*HitID)[m_SortedID[j]]; + Beta1 = sqrt(x1*x1 + y1*y1 + z1*z1)/t1/C_light; + for(int jj = j+1; jj < sizeHit ; jj++){ + if(ID_ClustHit[jj]==-1) continue; + x2 = (*HitX)[m_SortedID[jj]], y2 = (*HitY)[m_SortedID[jj]], z2 = (*HitZ)[m_SortedID[jj]], t2 = (*HitT)[m_SortedID[jj]], dx2 = (*HitdX)[m_SortedID[jj]]; + Dist = sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1) + (z2-z1)*(z2-z1)); + Dt = t2-t1; + id2=(*HitID)[m_SortedID[jj]]; + double b12 = Dist/Dt/C_light; + if(id1 <= 400 && id2 <= 400){ + //Neuland same wall + double HypeSph1 = sqrt(((Dt-0.2591)/1.165)*((Dt-0.2591)/1.165) + ((Dist-70.8)/105)*((Dist-70.8)/105)); + if(HypeSph1 < 1){ + ID_ClustHit[jj]=-1; + } + } + else if( ((id1>400 && id1<=460)&&(id2>400&&id2<=460)) || (id1>460&&id2>460) ){ + // Nebula same wall + double HypeSph2 = sqrt(((Dt-0.6528)/1.608)*((Dt-0.6528)/1.608) + ((Dist-158.8)/151.5)*((Dist-158.8)/151.5)); + if(HypeSph2 < 1){ + ID_ClustHit[jj]=-1; + } + } + } + } + + ///////////////////////////////////////// + ///// Cleaning Gammas + /////////////////////////////////////////// + + for(int j = 0; j < sizeHit-1; j++){ + if(ID_ClustHit[j]==-1) continue; + x1 = (*HitX)[m_SortedID[j]], y1 = (*HitY)[m_SortedID[j]], z1 = (*HitZ)[m_SortedID[j]]; + dx1 = (*HitdX)[m_SortedID[j]], dy1 = (*HitdY)[m_SortedID[j]]; + dz1 = (*HitdZ)[m_SortedID[j]]; + t1 = (*HitT)[m_SortedID[j]]; + id1= (*HitID)[m_SortedID[j]]; + Beta1 = sqrt(x1*x1 + y1*y1 + z1*z1)/t1/C_light; + for(int jj = j+1; jj < sizeHit ; jj++){ + if(ID_ClustHit[jj]==-1) continue; + x2 = (*HitX)[m_SortedID[jj]], y2 = (*HitY)[m_SortedID[jj]], z2 = (*HitZ)[m_SortedID[jj]], t2 = (*HitT)[m_SortedID[jj]], dx2 = (*HitdX)[m_SortedID[jj]]; + Dist = sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1) + (z2-z1)*(z2-z1)); + Dt = t2-t1; + id2=(*HitID)[m_SortedID[jj]]; + double b12 = Dist/Dt/C_light; + double q2 = (*HitQ)[m_SortedID[jj]]; + if(id1 <= 400 && id2 <= 400){ + //Neuland same wall + if( ( abs(1/b12 -1) < 3*0.24 && q2 < 15 ) || 1/b12 > 1 ){ + ID_ClustHit[jj] = -1; + } + } + else if( ((id1>400 && id1<=460)&&(id2>400&&id2<=460)) || (id1>460&&id2>460) ){ + // Nebula same wall + if(( abs((1/b12)-1) < 3*0.49 && q2<15 ) || 1/b12 > 1 ){ + ID_ClustHit[jj]=-1; + } + } + else{ + // Different Wall a + if(Beta1/b12 > 1 || (abs(1/b12 - 1) < 3*0.17 && q2 < 15)) + ID_ClustHit[jj]=-1; + } + } + } + + for(unsigned int i = 0; i < sizeHit; i++){ + if(ID_ClustHit[i]!=-1) + mapOfClust[ID_ClustHit[i]].push_back(m_SortedID[i]); + } + + //Put first hit in time of each cluster in a new map mapOfHead and remake + //the numbering of clusters (1,2,3...) + static map< unsigned int, unsigned int > mapOfHead; + static map< unsigned int, double > mapOfQtot; + /* static map< unsigned int, unsigned int > mapOfClust; */ + static unsigned int NbrOfClust; + mapOfHead.clear(), mapOfQtot.clear(); + NbrOfClust = mapOfClust.size(); + + static unsigned int count, count2; + count=1; m_HeadClust.clear(); + for(auto itr = mapOfClust.begin(); itr != mapOfClust.end(); itr++){ + mapOfHead[count] = itr->second[0]; + mapOfQtot[count] = 0; + m_HeadClust.push_back(itr->second[0]); + count++; + } + //return vector of real neutrons IDs + m_Neutrons.clear(); + m_QtotNeut.clear(); + m_QtotClust.clear(); + for(auto itr = mapOfHead.begin(); itr != mapOfHead.end(); itr++){ + m_Neutrons.push_back(itr->second); + m_HeadClust.push_back(itr->second); + } + for(auto itr = mapOfQtot.begin(); itr != mapOfQtot.end(); itr++){ + m_QtotNeut.push_back(itr->second); + m_QtotClust.push_back(itr->second); + } + return m_Neutrons; } - //return vector of real neutrons IDs - m_Neutrons.clear(); - m_QtotNeut.clear(); - for(auto itr = mapOfHead.begin(); itr != mapOfHead.end(); itr++){ - m_Neutrons.push_back(itr->second); + vector<int> CrossTalk::GetSortedHits(){ + return m_SortedID; } - for(auto itr = mapOfQtot.begin(); itr != mapOfQtot.end(); itr++){ - m_QtotNeut.push_back(itr->second); + vector<TGraph> CrossTalk::GetClusters(){ + return Clusters_2D; + } + TGraph2DErrors *CrossTalk::Get3DClusters(){ + return Clusters_3D; + } + vector<int> CrossTalk::GetHeadClust(){ + return m_HeadClust; + } + vector<double> CrossTalk::GetQtotClust(){ + return m_QtotClust; + } + vector<double> CrossTalk::GetQtotNeut(){ + return m_QtotNeut; } - return m_Neutrons; -} - -vector<int> CrossTalk::GetSortedHits(){ - return m_SortedID; -} -vector<TGraph> CrossTalk::GetClusters(){ - return Clusters_2D; -} -TGraph2DErrors *CrossTalk::Get3DClusters(){ - return Clusters_3D; -} -vector<int> CrossTalk::GetHeadClust(){ - return m_HeadClust; -} -vector<double> CrossTalk::GetQtotClust(){ - return m_QtotClust; -} -vector<double> CrossTalk::GetQtotNeut(){ - return m_QtotNeut; -} diff --git a/NPLib/Neutron/NPCrossTalk.h b/NPLib/Neutron/NPCrossTalk.h old mode 100644 new mode 100755 index d79164694b7841463c348becd5c7cd7ad7fca2af..60b9253ed9671bb3b95e0bdfebe1f0e6c6acadd2 --- a/NPLib/Neutron/NPCrossTalk.h +++ b/NPLib/Neutron/NPCrossTalk.h @@ -37,9 +37,10 @@ namespace NPL{ public: - void AddHitVector(const std::vector<double>& X, const std::vector<double>& Y,const std::vector<double>& Z, const std::vector<double>& Q, const std::vector<double>& dX, const std::vector<double>& dY, const std::vector<double>& dZ, const std::vector<double>& T); + void AddHitVector(const std::vector<double>& X, const std::vector<double>& Y,const std::vector<double>& Z, const std::vector<double>& Q, const std::vector<double>& dX, const std::vector<double>& dY, const std::vector<double>& dZ, const std::vector<double>& T, const std::vector<int>& ID); std::vector<int> ComputeCrossTalk(const double& Causality, const double& DistMin, const int& Option, TCutG*TCut1, TCutG* TCut2 ); + std::vector<int> ComputeCrossTalk_Kondo(const double& Causality, const double& DistMin, const int& Option, TCutG*TCut1, TCutG* TCut2 ); std::vector<int> GetSortedHits(); std::vector<TGraph> GetClusters(); TGraph2DErrors *Get3DClusters(); @@ -57,6 +58,7 @@ namespace NPL{ const std::vector<double>* HitdZ; const std::vector<double>* HitT; const std::vector<double>* HitQ; + const std::vector<int>* HitID; std::vector<int> m_SortedID; std::map<unsigned int, std::vector<unsigned int>> mapOfClust; diff --git a/NPLib/Physics/CMakeLists.txt b/NPLib/Physics/CMakeLists.txt index ea903e3e326d08baed8dbc56d61dafe0e6ff42b4..d7063c226604c5e3a52035dd0bff7ac7ba179bbb 100644 --- a/NPLib/Physics/CMakeLists.txt +++ b/NPLib/Physics/CMakeLists.txt @@ -28,7 +28,8 @@ add_custom_command(OUTPUT TFissionConditionsDict.cxx COMMAND ${CMAKE_BINARY_DIR} add_custom_command(OUTPUT NPTimeStampDict.cxx COMMAND ${CMAKE_BINARY_DIR}/scripts/build_dict.sh NPTimeStamp.h NPTimeStampDict.cxx NPTimeStamp.rootmap libNPPhysics.so NPTimeStampLinkDef.h DEPENDS NPTimeStamp.h NPTimeStampLinkDef.h) -add_library(NPPhysics SHARED GEF.cxx NPInelasticBreakup.cxx NPInelasticBreakupDict.cxx NPFissionDecay.cxx NPDecay.cxx NPBeam.cxx NPEnergyLoss.cxx NPFunction.cxx NPParticle.cxx NPReaction.cxx NPTimeStamp.cxx NPPhaseSpace.cxx NPQFS.cxx NPParticleDict.cxx NPReactionDict.cxx NPTimeStampDict.cxx NPPhaseSpaceDict.cxx NPQFSDict.cxx NPEnergyLossDict.cxx ) +add_library(NPPhysics SHARED GEF.cxx NPInelasticBreakup.cxx NPInelasticBreakupDict.cxx NPFissionDecay.cxx NPDecay.cxx NPBeam.cxx NPEnergyLoss.cxx NPFunction.cxx NPParticle.cxx NPReaction.cxx NPTimeStamp.cxx NPPhaseSpace.cxx NPQFS.cxx NPParticleDict.cxx NPReactionDict.cxx NPTimeStampDict.cxx NPPhaseSpaceDict.cxx NPQFSDict.cxx NPEnergyLossDict.cxx NPBreitWigner.cxx) + target_link_libraries(NPPhysics ${ROOT_LIBRARIES} Physics NPCore) add_library(NPInitialConditions SHARED TInitialConditions.cxx TInitialConditionsDict.cxx ) @@ -44,7 +45,9 @@ add_library(NPReactionConditions SHARED TReactionConditions.cxx TReactionConditi target_link_libraries(NPReactionConditions ${ROOT_LIBRARIES} ) add_library(NPFissionConditions SHARED TFissionConditions.cxx TFissionConditionsDict.cxx) -target_link_libraries(NPFissionConditions ${ROOT_LIBRARIES} ) +target_link_libraries(NPFissionConditions ${ROOT_LIBRARIES} ) + +install(FILES GEF.h NPInelasticBreakup.h NPFissionDecay.h NPDecay.h NPBeam.h NPEnergyLoss.h NPFunction.h NPParticle.h NPNucleus.h NPReaction.h NPPhaseSpace.h NPQFS.h NPTimeStamp.h TInitialConditions.h TTrackInfo.h TInteractionCoordinates.h TReactionConditions.h TFissionConditions.h NPBreitWigner.h DESTINATION ${CMAKE_INCLUDE_OUTPUT_DIRECTORY}) +install(FILES GEF.h NPInelasticBreakup.h NPFissionDecay.h NPDecay.h NPBeam.h NPEnergyLoss.h NPFunction.h NPParticle.h NPNucleus.h NPReaction.h NPPhaseSpace.h NPQFS.h NPTimeStamp.h TInitialConditions.h TTrackInfo.h TInteractionCoordinates.h TReactionConditions.h TFissionConditions.h NPBreitWigner.h DESTINATION ${CMAKE_INCLUDE_OUTPUT_DIRECTORY}) -install(FILES GEF.h NPInelasticBreakup.h NPFissionDecay.h NPDecay.h NPBeam.h NPEnergyLoss.h NPFunction.h NPParticle.h NPNucleus.h NPReaction.h NPPhaseSpace.h NPQFS.h NPTimeStamp.h TInitialConditions.h TTrackInfo.h TInteractionCoordinates.h TReactionConditions.h TFissionConditions.h DESTINATION ${CMAKE_INCLUDE_OUTPUT_DIRECTORY}) diff --git a/NPLib/Physics/NPBeam.cxx b/NPLib/Physics/NPBeam.cxx index ff5f5d840cc2b1b1870fd63bf717d5ccf57ca3e2..0de5b6fbd3dc2e57bd7b95b98ebb963eb883089b 100644 --- a/NPLib/Physics/NPBeam.cxx +++ b/NPLib/Physics/NPBeam.cxx @@ -244,7 +244,6 @@ void Beam::GenerateRandomEvent(double& E, double& X, double& Y, double& Z, doubl //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Beam::Print() const { - } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/NPLib/Physics/NPBreitWigner.cxx b/NPLib/Physics/NPBreitWigner.cxx new file mode 100644 index 0000000000000000000000000000000000000000..53d280cfa72e57cb8dd45eaddd0483c08090c927 --- /dev/null +++ b/NPLib/Physics/NPBreitWigner.cxx @@ -0,0 +1,269 @@ +#if __cplusplus > 201703L +/***************************************************************************** + * Copyright (C) 2009-2016 this file is part of the NPTool Project * + * * + * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * + * For the list of contributors see $NPTOOL/Licence/Contributors * + *****************************************************************************/ + +/***************************************************************************** + * * + * Original Author : Audrey ANNE contact address: anne@lpccaen.in2p3.fr * + * * + * Creation Date : February 2024 * + *---------------------------------------------------------------------------* + * Decription: * + * * + * * + * * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ + +// STL +#include <iostream> +#include <fstream> +#include <cstdlib> +#include <sstream> +#include <cmath> +#include <vector> + +// NPL header +#include "NPBreitWigner.h" +#include "NPFunction.h" +#include "NPOptionManager.h" + +// ROOT Header +#include "TDirectory.h" +#include "TCanvas.h" + +// Use CLHEP System of unit and Physical Constant +#include "NPGlobalSystemOfUnits.h" +#include "NPPhysicalConstants.h" + +#ifdef NP_SYSTEM_OF_UNITS_H +using namespace NPUNITS; +#endif + +#include "TAxis.h" + +using namespace NPL; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +BreitWigner::BreitWigner():hc(hbarc/fermi), uma(amu_c2){ + + fR0 = 1.4; // Value in Breit Wigner models + fNeutron = Particle("n"); + + fShiftZero = 0; + fWidthCst = 0; + + // Breit Wigner parameters + fX0 = 1.0; + fW0 = 1.0; + fell = 0; + fA = 1; + fn = 1; + fparam0 = 1.0; + + // Calculated values + fmu = 1.0; + fR = 1.0; + frho_0 = 1.0; + fP0 = 1.0; + fSF0 = 1.0; + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +BreitWigner::~BreitWigner(){ +} + + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void BreitWigner::ReadConfigurationFile(string Path){ + NPL::InputParser parser(Path); + ReadConfigurationFile(parser); +} + +void BreitWigner::ReadConfigurationFile(NPL::InputParser parser){ + vector<NPL::InputBlock*> blocks = parser.GetAllBlocksWithToken("BreitWigner"); + if(blocks.size()>0 && NPOptionManager::getInstance()->GetVerboseLevel()) + cout << endl << "\033[1;35m//// Breit Wigner energy distribution " << endl; + + vector<string> token = {"Energy0","Width0", "l", "Heavy","Light", "NeutronNumber","MultiplicateurAmplitude", "ShiftZero", "WidthCst"}; + for(unsigned int i = 0 ; i < blocks.size() ; i++){ + if(blocks[i]->HasTokenList(token)){ + + fX0 = blocks[i]->GetDouble("Energy0","MeV"); + fW0 = blocks[i]->GetDouble("Width0","MeV"); + if(fW0<=0) fW0 = 1e-4 ; + fell = blocks[i]->GetInt("l"); + fHeavy = Particle(blocks[i]->GetString("Heavy")); + fLight = Particle(blocks[i]->GetString("Light")); + fn = blocks[i]->GetInt("NeutronNumber"); + fparam0 = blocks[i]->GetDouble("MultiplicateurAmplitude","MeV"); + fShiftZero = blocks[i]->GetInt("ShiftZero"); + fWidthCst = blocks[i]->GetInt("WidthCst"); + + } + + else{ + cout << "ERROR: check your input file formatting in Breit Wigner block(s) " << endl; + exit(1); + } + + fA = fLight.GetA(); + fmu = (uma*fA*fn)/(fA+fn); + fR = fR0*(TMath::Power(fA,(1.0/3.0)) + TMath::Power(fn,(1.0/3.0))); + frho_0 = Calculate_Rho_Var(fX0); + fP0 = Penetration_Factor(frho_0); + fSF0 = Shift_Factor(frho_0); + + fQ = fLight.Mass() + fn*fNeutron.Mass() - fHeavy.Mass(); + cout << "Q de reaction = " << fQ << endl; + + + }//end reading token in input file +}//end ReadConfigurationFile + + +double BreitWigner::Eval(const double & x_) const { + + if(x_<0) return 0.; + + double rho_x, W, dX; + rho_x = Calculate_Rho_Var(x_); + W = Width(rho_x); + dX = Shift(rho_x); + + return fparam0*(W*fW0/4.0)/(TMath::Power(fX0+dX-x_,2.0) + TMath::Power(W/2.0, 2.0)); +} + +double BreitWigner::Eval_For_TF1(const double * x_, const double * /* params_ */) const +{ + return this->Eval(*x_); +} + + +TF1 * BreitWigner::Make_TF1() const +{ + return new TF1("BW_TF1", this,&BreitWigner::Eval_For_TF1, 0.0, 10.0, 0); +} + +TH1D * BreitWigner::Make_TH1() const +{ + TF1 *func = new TF1("BW_TF1", this, &BreitWigner::Eval_For_TF1, 0.0, 10.0, 0); + TH1D *Hist = dynamic_cast<TH1D*>(func->GetHistogram()); + + TAxis *AxisX = Hist->GetXaxis(); + AxisX->Set( AxisX->GetNbins(), fQ + (AxisX->GetXmin()), fQ + (AxisX->GetXmax()) ); + + return Hist; +} + +double BreitWigner::Calculate_Rho_Var( double E) const { + return sqrt(2.0*fmu*E)*fR/hc; +} + + +double BreitWigner::Width(double rho_x) const { + return fW0*Width_Ratio(rho_x); +} + +double BreitWigner::Shift(double rho_x) const { + return fW0*Shift_Ratio(rho_x); +} + + +double BreitWigner::Width_Ratio(double rho_x) const { + + if(fell>=0 and !fWidthCst){ + double fP = Penetration_Factor(rho_x); + return fP/fP0; + } + else return 1.0; +} + +double BreitWigner::Shift_Ratio(double rho_x) const { + if(fell>=0 and !fShiftZero){ + return (fSF0 - Shift_Factor(rho_x))/(2.0*fP0); + } + else return 0.0; +} + +double BreitWigner::Shift_Factor(double rho) const { + if(rho==0) rho = 1e-36; //to avoid singularities + + double J = std::cyl_bessel_j(fell+0.5, rho); + double Jm = std::cyl_bessel_j(fell-0.5, rho); + double Y = std::cyl_neumann(fell+0.5, rho); + double Ym = std::cyl_neumann(fell-0.5, rho); + + double sum2 = J*J + Y*Y ; + + return -(sum2*fell-(J*Jm+Y*Ym)*rho)/sum2; +} + + +double BreitWigner::Penetration_Factor(double rho) const { + if(rho==0) rho = 1e-36; // to avoid singularities + + Double_t J = std::cyl_bessel_j(fell+0.5,rho); + Double_t Y = std::cyl_neumann(fell+0.5,rho); + + return (2./TMath::Pi())/(TMath::Power(J,2)+TMath::Power(Y,2)); // in principle we must differiente rho / k but R is the same +} + + + +void BreitWigner::Dump() const { + //print +} + + + +//--------------- /!\ For test only /!\----------------- // +/* +TF1 * BreitWigner::Make_TF1(const char * name_) const +{ + return new TF1(name_, this, &BreitWigner::Eval_For_TF1, 0.0, 10.0, 0); +} +*/ + + +void BreitWigner::Save_TF1() const { + + TF1 *BWFunc = new TF1("BWFunc", this, &BreitWigner::Eval_For_TF1, 0.0, 10.0, 0); + + TFile myfile("../../Projects/S034_audrey/output/BreitWigner/testBW.root","RECREATE"); + + BWFunc->Write(); + myfile.Close(); + delete BWFunc; +} + + + +void BreitWigner::Save_Histo() const { + + TF1 *fonc = new TF1("fonc", this, &BreitWigner::Eval_For_TF1, 0.0, 10.0, 0); + + TFile myfile("../../Projects/S034_audrey/output/BreitWigner/testHist.root","RECREATE"); + + TH1 *hist = fonc->GetHistogram(); + + TAxis *a = hist->GetXaxis(); + a->Set( a->GetNbins(), fQ + (a->GetXmin()), fQ + (a->GetXmax()) ); + + hist->Write(); + myfile.Close(); + delete fonc; +} + +#endif diff --git a/NPLib/Physics/NPBreitWigner.h b/NPLib/Physics/NPBreitWigner.h new file mode 100644 index 0000000000000000000000000000000000000000..83437be8463aa54d921c8afb9c85b2337d39f3ed --- /dev/null +++ b/NPLib/Physics/NPBreitWigner.h @@ -0,0 +1,125 @@ +#ifndef NPBreitWigner_h +#define NPBreitWigner_h +#if __cplusplus > 201703L +/***************************************************************************** + * Copyright (C) 2009-2016 this file is part of the NPTool Project * + * * + * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * + * For the list of contributors see $NPTOOL/Licence/Contributors * + *****************************************************************************/ + +/***************************************************************************** + * * + * Original Author : Audrey ANNE contact address: anne@lpccaen.in2p3.fr * + * * + * Creation Date : February 2024 * + *---------------------------------------------------------------------------* + * Decription: * + * * + * * + * * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ +// C++ header +#include <string> + +// ROOT header +#include "TH1.h" +#include "TF1.h" +#include "TMath.h" +#include <cmath> +#include "TRandom.h" + +// NPL header +#include "NPInputParser.h" +#include "NPParticle.h" + +class TF1; + +using namespace std; + +namespace NPL{ + + class BreitWigner{ + + public: // Constructors and Destructors + BreitWigner(); + ~BreitWigner(); + + + public: //Read Method + void ReadConfigurationFile(string Path); + void ReadConfigurationFile(NPL::InputParser); + + + private: + //Physical Constants + const double hc; + const double uma; + + bool fShiftZero; // = 0 -> Shift ; = 1 -> no Shift + bool fWidthCst; // = 0 -> constant Width ; = 1 -> Width + + double fR0; + + double fX0; + double fW0; + int fell; // l + int fA; // Fragment's A number + int fn; // Neutrons number + double fparam0; + + Particle fHeavy; // Heavy in BreitWigner (example : He8 -> He4 + 4n, Heavy is He8). + Particle fLight; // Light in BreitWigner (example : He8 -> He4 + 4n, Light is He4). + Particle fNeutron; + + //Calculated values + double frho_0; + double fP0; + double fSF0; + double fmu; // + double fR; + + double fQ; + + + public: + + void SetA(int A){fA = A;} + int GetA()const{return fA;} + + void SetL(int l){fell = l;} + int GetL()const{return fell;} + + double Calculate_Rho_Var(double E) const; + double Width(double rho_X) const; + double Shift(double rho_X) const; + double Width_Ratio(double rho_X) const; + double Shift_Ratio(double rho_x) const; + double Shift_Factor(double rho) const; + double Penetration_Factor(double rho) const; + + + double Eval(const double & x_) const; + double Eval_For_TF1(const double * x_, const double * /* params_ */) const; + + + TF1 * Make_TF1() const; + TH1D * Make_TH1() const; + + //TF1 * Make_TF1(const char * name_) const; + + //only for test -> TF1 and TH1 put in .root file + void Save_Histo() const ; + void Save_TF1() const ; + + void Dump() const; + }; +} + +#endif //c++17 +#endif //ndef diff --git a/NPLib/Physics/NPInelasticBreakUp.cxx b/NPLib/Physics/NPInelasticBreakUp.cxx deleted file mode 100644 index baad4d998e7da4d03e4da542e1774809cbf2ffbe..0000000000000000000000000000000000000000 --- a/NPLib/Physics/NPInelasticBreakUp.cxx +++ /dev/null @@ -1,659 +0,0 @@ -/***************************************************************************** - * Copyright (C) 2009-2016 this file is part of the NPTool Project * - * * - * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * - * For the list of contributors see $NPTOOL/Licence/Contributors * - *****************************************************************************/ - -/***************************************************************************** - * * - * Original Author : Adrien MAtta contact: matta@lpccaen.in2p3.fr * - * * - * Creation Date : April 2024 * - *---------------------------------------------------------------------------* - * Decription: * - * * - * * - *---------------------------------------------------------------------------* - * Comment: * - * * - * * - *****************************************************************************/ -#include <cmath> -#include <cstdlib> -#include <fstream> -#include <iostream> -#include <sstream> -#include <string> -#include <vector> - -#include "NPCore.h" -#include "NPFunction.h" -#include "NPInelasticBreakup.h" -#include "NPOptionManager.h" - -// Use CLHEP System of unit and Physical Constant -#include "NPGlobalSystemOfUnits.h" -#include "NPPhysicalConstants.h" -#ifdef NP_SYSTEM_OF_UNITS_H -using namespace NPUNITS; -#endif - -// ROOT -#include "TF1.h" - -ClassImp(InelasticBreakup) - - //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... - InelasticBreakup::InelasticBreakup() { - //------------- Default Constructor ------------- - - // - fBeamEnergy = 0; - fThetaCM = 0; - fExcitation1 = 0; - fExcitation3 = 0; - fExcitation4 = 0; - fQValue = 0; - fVerboseLevel = NPOptionManager::getInstance()->GetVerboseLevel(); - initializePrecomputeVariable(); - - fCrossSectionHist = NULL; - fExcitationEnergyHist = NULL; - fDoubleDifferentialCrossSectionHist = NULL; - - fshoot3 = true; - fshoot4 = true; - fUseExInGeant4 = true; - - fLabCrossSection = false; // flag if the provided cross-section is in the lab or not -} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -// This constructor aim to provide a fast way to instantiate a reaction without input file -// The string should be of the form "A(b,c)D@E" with E the ernegy of the beam in MeV -InelasticBreakup::InelasticBreakup(string reaction) { - // Instantiate the parameter to default - // Analyse the reaction and extract revelant information - string A, b, c, D, E; - unsigned int i = 0; - for (; i < reaction.length(); i++) { - if (reaction.compare(i, 1, "(") != 0) - A.push_back(reaction[i]); - else - break; - } - - i++; - for (; i < reaction.length(); i++) { - if (reaction.compare(i, 1, ",") != 0) - b.push_back(reaction[i]); - else - break; - } - - i++; - for (; i < reaction.length(); i++) { - if (reaction.compare(i, 1, ")") != 0) - c.push_back(reaction[i]); - else - break; - } - - i++; - for (; i < reaction.length(); i++) { - if (reaction.compare(i, 1, "@") != 0) - D.push_back(reaction[i]); - else - break; - } - - i++; - for (; i < reaction.length(); i++) { - E.push_back(reaction[i]); - } - - fParticle1 = Beam(A); - fParticle2 = Particle(b); - fParticle3 = Particle(c); - fParticle4 = Particle(D); - fBeamEnergy = atof(E.c_str()); - fThetaCM = 0; - fExcitation1 = 0; - fExcitation3 = 0; - fExcitation4 = 0; - fQValue = 0; - fVerboseLevel = NPOptionManager::getInstance()->GetVerboseLevel(); - initializePrecomputeVariable(); - - // do that to avoid warning from multiple Hist with same name... int offset = 0; - int offset = 0; - while (gDirectory->FindObjectAny(Form("EnergyHist_%i", offset)) != 0) - ++offset; - - fCrossSectionHist = new TH1F(Form("EnergyHist_%i", offset), "InelasticBreakup_CS", 1, 0, 180); - fDoubleDifferentialCrossSectionHist = NULL; - - fshoot3 = true; - fshoot4 = true; - - fLabCrossSection = false; - - initializePrecomputeVariable(); -} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -InelasticBreakup::~InelasticBreakup() {} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -bool InelasticBreakup::CheckKinematic() { - double theta = fThetaCM; - /*if (m1 > m2){ - theta = M_PI - fThetaCM; - fThetaCM = M_PI - fThetaCM; - }*/ - fEnergyImpulsionCM_3 = TLorentzVector(pCM_3 * sin(theta), 0, pCM_3 * cos(theta), ECM_3); - fEnergyImpulsionCM_4 = fTotalEnergyImpulsionCM - fEnergyImpulsionCM_3; - - fEnergyImpulsionLab_3 = fEnergyImpulsionCM_3; - fEnergyImpulsionLab_3.Boost(0, 0, fBetaCM); - fEnergyImpulsionLab_4 = fEnergyImpulsionCM_4; - fEnergyImpulsionLab_4.Boost(0, 0, fBetaCM); - - if (fabs(fTotalEnergyImpulsionLab.E() - (fEnergyImpulsionLab_3.E() + fEnergyImpulsionLab_4.E())) > 1e-6) { - cout << "Problem with energy conservation" << endl; - return false; - } - else { - // cout << "Kinematic OK" << endl; - return true; - } -} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -double InelasticBreakup::ShootRandomThetaCM() { - double theta; // CM - if (fDoubleDifferentialCrossSectionHist) { - // Take a slice in energy - TAxis* Y = fDoubleDifferentialCrossSectionHist->GetYaxis(); - int binY; - - // Those test are there for the tail event of the energy distribution - // In case the energy is outside the range of the 2D histo we take the - // closest available CS - if (Y->FindBin(fBeamEnergy) > Y->GetLast()) - binY = Y->GetLast() - 1; - - else if (Y->FindBin(fBeamEnergy) < Y->GetFirst()) - binY = Y->GetFirst() + 1; - - else - binY = Y->FindBin(fBeamEnergy); - - TH1D* Proj = fDoubleDifferentialCrossSectionHist->ProjectionX("proj", binY, binY); - SetThetaCM(theta = Proj->GetRandom() * deg); - } - else if (fLabCrossSection && fCrossSectionHist) { - double thetalab = -1; - double energylab = -1; - while (energylab < 0) { - thetalab = fCrossSectionHist->GetRandom() * deg; // shoot in lab - energylab = EnergyLabFromThetaLab(thetalab); // get corresponding energy - } - theta = EnergyLabToThetaCM(energylab, thetalab); // transform to theta CM - SetThetaCM(theta); - } - else if (fCrossSectionHist) { - // When root perform a Spline interpolation to shoot random number out of - // the distribution, it can over shoot and output a number larger that 180 - // this lead to an additional signal at 0-4 deg Lab, especially when using a - // flat distribution. - // This fix it. - theta = 181; - if (theta / deg > 180) - theta = fCrossSectionHist->GetRandom(); - // cout << " Shooting Random ThetaCM " << theta << endl; - SetThetaCM(theta * deg); - } - else { - NPL::SendErrorAndExit("NPL::InelasticBreakup", "No cross section provided, add relevant token to input file."); - } - - return theta; -} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -void InelasticBreakup::ShootRandomExcitationEnergy() { - if (fExcitationEnergyHist) { - SetExcitation4(fExcitationEnergyHist->GetRandom()); - } -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -void InelasticBreakup::KineRelativistic(double& ThetaLab3, double& KineticEnergyLab3, double& ThetaLab4, - double& KineticEnergyLab4) { - // 2-body relativistic kinematics: direct + inverse - // EnergieLab3,4 : lab energy in MeV of the 2 ejectiles - // ThetaLab3,4 : angles in rad - // case of inverse kinematics - - double theta = fThetaCM; - if (m1 > m2) { - theta = M_PI - fThetaCM; - // fThetaCM = M_PI - fThetaCM; - } - fEnergyImpulsionCM_3 = TLorentzVector(pCM_3 * sin(theta), 0, pCM_3 * cos(theta), ECM_3); - fEnergyImpulsionCM_4 = fTotalEnergyImpulsionCM - fEnergyImpulsionCM_3; - - fEnergyImpulsionLab_3 = fEnergyImpulsionCM_3; - fEnergyImpulsionLab_3.Boost(0, 0, fBetaCM); - fEnergyImpulsionLab_4 = fEnergyImpulsionCM_4; - fEnergyImpulsionLab_4.Boost(0, 0, fBetaCM); - - // Angle in the lab frame - ThetaLab3 = fEnergyImpulsionLab_3.Angle(fEnergyImpulsionLab_1.Vect()); - if (ThetaLab3 < 0) - ThetaLab3 += M_PI; - - ThetaLab4 = fEnergyImpulsionLab_4.Angle(fEnergyImpulsionLab_1.Vect()); - if (fabs(ThetaLab3) < 1e-6) - ThetaLab3 = 0; - ThetaLab4 = fabs(ThetaLab4); - if (fabs(ThetaLab4) < 1e-6) - ThetaLab4 = 0; - - // Kinetic Energy in the lab frame - KineticEnergyLab3 = fEnergyImpulsionLab_3.E() - m3; - KineticEnergyLab4 = fEnergyImpulsionLab_4.E() - m4; - - // test for total energy conversion - if (fabs(fTotalEnergyImpulsionLab.E() - (fEnergyImpulsionLab_3.E() + fEnergyImpulsionLab_4.E())) > 1e-6) - cout << "Problem for energy conservation" << endl; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -double InelasticBreakup::ReconstructRelativistic(double EnergyLab, double ThetaLab, double PhiLab) { - // EnergyLab in MeV - // ThetaLab in rad - double E3 = m3 + EnergyLab; - double p_Lab_3 = sqrt(E3 * E3 - m3 * m3); - fEnergyImpulsionLab_3 = - TLorentzVector(p_Lab_3 * sin(ThetaLab) * cos(PhiLab), p_Lab_3 * sin(PhiLab), p_Lab_3 * cos(ThetaLab), E3); - fEnergyImpulsionLab_4 = fTotalEnergyImpulsionLab - fEnergyImpulsionLab_3; - - double Eex = fEnergyImpulsionLab_4.Mag() - fParticle4.Mass(); - - return Eex; -} - -TLorentzVector InelasticBreakup::LorentzAfterInelasticBreakup(double EnergyLab, double ThetaLab, double PhiLab) { - double E3 = m3 + EnergyLab; - double p_Lab_3 = sqrt(E3 * E3 - m3 * m3); - fEnergyImpulsionLab_3 = - TLorentzVector(p_Lab_3 * sin(ThetaLab) * cos(PhiLab), p_Lab_3 * sin(PhiLab), p_Lab_3 * cos(ThetaLab), E3); - fEnergyImpulsionLab_4 = fTotalEnergyImpulsionLab - fEnergyImpulsionLab_3; - return fEnergyImpulsionLab_4; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -// Return ThetaCM -double InelasticBreakup::EnergyLabToThetaCM(double EnergyLab, double ThetaLab) { - double E3 = m3 + EnergyLab; - double p_Lab_3 = sqrt(E3 * E3 - m3 * m3); - - fEnergyImpulsionLab_3 = TLorentzVector(p_Lab_3 * sin(ThetaLab), 0, p_Lab_3 * cos(ThetaLab), E3); - fEnergyImpulsionCM_3 = fEnergyImpulsionLab_3; - fEnergyImpulsionCM_3.Boost(0, 0, -fBetaCM); - - double ThetaCM = M_PI - fEnergyImpulsionCM_1.Angle(fEnergyImpulsionCM_3.Vect()); - - return (ThetaCM); -} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -// Return EnergyLab -double InelasticBreakup::EnergyLabFromThetaLab(double ThetaLab) { - // ThetaLab in rad - - // IMPORTANT NOTICE: This function is not suitable for reaction A(c,d)B - // where M(c) < M(d), i.e. (p,d) or (d,3He) since in this case the same - // angle observed in the lab corresponds to two different energies. - // - // If this situation is encountered here: - // 1- the final energy will be determined randomly with a 50%-50% - // split for either energies. - // 2- Any angle outside of the allowed range (in this case) will return -1. - // 3- The user lab distribution will be used between angles {0,max} and the - // spatial distribution of the high energy and low energy branch - // will be the same. - // 4- Practically, in an experiment using a downstream spectrometer - // only one of the energy branches is considered. - // - // !! If both of the branches are needed the user SHOULD use the center-of-mass distribution. - - // - // This calculation uses the formalism from J.B Marion and F.C Young - // (Book: Nucler InelasticBreakup Analysis, Graphs and Tables) - - // Treat Exeptions - if (fBeamEnergy == 0) - return m4 * fQValue / (m3 + m4); - - double A, B, C, D, ThetaLabMax = 181 * deg; - double Q = fQValue; - double T1 = fBeamEnergy; - double TT = fBeamEnergy + Q; - double sign = +1; - - A = m1 * m4 * (T1 / TT) / (m1 + m2) / (m3 + m4); - B = m1 * m3 * (T1 / TT) / (m1 + m2) / (m3 + m4); - C = m2 * m3 * (1 + (m1 * Q) / (m2 * TT)) / (m1 + m2) / (m3 + m4); - D = m2 * m4 * (1 + (m1 * Q) / (m2 * TT)) / (m1 + m2) / (m3 + m4); - - if (fabs(A + B + C + D - 1) > 1e-6 or fabs(A * C - B * D) > 1e-6) { - cout << " InelasticBreakup balance is wrong in NPInelasticBreakup object." << endl; - exit(-1); - } - - if (B > D) { - ThetaLabMax = asin(sqrt(D / B)); - if (gRandom->Rndm() < 0.5) - sign = -1; - } - if (ThetaLab > ThetaLabMax) - return -1; - - double cosine = cos(ThetaLab); - double sine2 = pow(sin(ThetaLab), 2); - double factor = sqrt(D / B - sine2); - double EnergyLab = TT * B * pow(cosine + sign * factor, 2); - - // cout << " Angle/energy: " << ThetaLab/deg << " " << EnergyLab << endl ; - // cin.get(); - - return EnergyLab; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -void InelasticBreakup::Print() const { - // Print informations concerning the reaction - - cout << "InelasticBreakup : " << fParticle2.GetName() << "(" << fParticle1.GetName() << "," << fParticle3.GetName() - << ")" << fParticle4.GetName() << " @ " << fBeamEnergy << " MeV" << endl; - - cout << "Exc Particle 1 = " << fExcitation1 << " MeV" << endl; - cout << "Exc Particle 3 = " << fExcitation3 << " MeV" << endl; - cout << "Exc Particle 4 = " << fExcitation4 << " MeV" << endl; - cout << "Qgg = " << fQValue << " MeV" << endl; -} - -///////////////////////////////////////////////////////////////////////////////////////////////////////// -void InelasticBreakup::ReadConfigurationFile(string Path) { - ifstream InelasticBreakupFile; - string GlobalPath = getenv("NPTOOL"); - string StandardPath = GlobalPath + "/Inputs/EventGenerator/" + Path; - InelasticBreakupFile.open(Path.c_str()); - if (!InelasticBreakupFile.is_open()) { - InelasticBreakupFile.open(StandardPath.c_str()); - if (InelasticBreakupFile.is_open()) { - Path = StandardPath; - } - else { - cout << "InelasticBreakup File " << Path << " not found" << endl; - exit(1); - } - } - NPL::InputParser parser(Path); - ReadConfigurationFile(parser); -} -//////////////////////////////////////////////////////////////////////////////// -Particle InelasticBreakup::GetParticle(string name, NPL::InputParser parser) { - vector<NPL::InputBlock*> blocks = parser.GetAllBlocksWithTokenAndValue("DefineParticle", name); - unsigned int size = blocks.size(); - if (size == 0) - return NPL::Particle(name); - else if (size == 1) { - cout << " -- User defined nucleus " << name << " -- " << endl; - vector<string> token = {"SubPart", "BindingEnergy"}; - if (blocks[0]->HasTokenList(token)) { - NPL::Particle N(name, blocks[0]->GetVectorString("SubPart"), blocks[0]->GetDouble("BindingEnergy", "MeV")); - if (blocks[0]->HasToken("ExcitationEnergy")) - N.SetExcitationEnergy(blocks[0]->GetDouble("ExcitationEnergy", "MeV")); - if (blocks[0]->HasToken("SpinParity")) - N.SetSpinParity(blocks[0]->GetString("SpinParity").c_str()); - if (blocks[0]->HasToken("Spin")) - N.SetSpin(blocks[0]->GetDouble("Spin", "")); - if (blocks[0]->HasToken("Parity")) - N.SetParity(blocks[0]->GetString("Parity").c_str()); - if (blocks[0]->HasToken("LifeTime")) - N.SetLifeTime(blocks[0]->GetDouble("LifeTime", "s")); - - cout << " -- -- -- -- -- -- -- -- -- -- --" << endl; - return N; - } - } - else { - NPL::SendErrorAndExit("NPL::InelasticBreakup", "Too many nuclei define with the same name"); - } - - return (NPL::Particle()); -} - -////////////////////////////////////////////////////////////////////////////////////////////////////////// -void InelasticBreakup::ReadConfigurationFile(NPL::InputParser parser) { - - vector<NPL::InputBlock*> blocks = parser.GetAllBlocksWithToken("TwoBodyInelasticBreakup"); - if (blocks.size() > 0 && NPOptionManager::getInstance()->GetVerboseLevel()) - cout << endl << "\033[1;35m//// Two body reaction found " << endl; - - vector<string> token1 = {"Beam", "Target", "Light", "Heavy"}; - vector<string> token2 = {"Beam", "Target", "Particle3", "Particle4"}; - double CSHalfOpenAngleMin = 0 * deg; - double CSHalfOpenAngleMax = 180 * deg; - for (unsigned int i = 0; i < blocks.size(); i++) { - if (blocks[i]->HasTokenList(token1)) { - int v = NPOptionManager::getInstance()->GetVerboseLevel(); - NPOptionManager::getInstance()->SetVerboseLevel(0); - fParticle1.ReadConfigurationFile(parser); - NPOptionManager::getInstance()->SetVerboseLevel(v); - - fBeamEnergy = fParticle1.GetEnergy(); - fParticle2 = GetParticle(blocks[i]->GetString("Target"), parser); - fParticle3 = GetParticle(blocks[i]->GetString("Light"), parser); - fParticle4 = GetParticle(blocks[i]->GetString("Heavy"), parser); - } - else if (blocks[i]->HasTokenList(token2)) { - fParticle1.SetVerboseLevel(0); - fParticle1.ReadConfigurationFile(parser); - fBeamEnergy = fParticle1.GetEnergy(); - - fParticle2 = GetParticle(blocks[i]->GetString("Target"), parser); - fParticle3 = GetParticle(blocks[i]->GetString("Particle3"), parser); - fParticle4 = GetParticle(blocks[i]->GetString("Particle4"), parser); - } - else { - cout << "ERROR: check your input file formatting \033[0m" << endl; - exit(1); - } - - if (blocks[i]->HasToken("ExcitationEnergyBeam")) { - fExcitation1 = blocks[i]->GetDouble("ExcitationEnergyBeam", "MeV"); - } - else if (blocks[i]->HasToken("ExcitationEnergy1")) { - fExcitation1 = blocks[i]->GetDouble("ExcitationEnergy1", "MeV"); - } - - if (blocks[i]->HasToken("ExcitationEnergyLight")) - fExcitation3 = blocks[i]->GetDouble("ExcitationEnergyLight", "MeV"); - else if (blocks[i]->HasToken("ExcitationEnergy3")) - fExcitation3 = blocks[i]->GetDouble("ExcitationEnergy3", "MeV"); - - if (blocks[i]->HasToken("ExcitationEnergyHeavy")) - fExcitation4 = blocks[i]->GetDouble("ExcitationEnergyHeavy", "MeV"); - else if (blocks[i]->HasToken("ExcitationEnergy4")) - fExcitation4 = blocks[i]->GetDouble("ExcitationEnergy4", "MeV"); - - if (blocks[i]->HasToken("ExcitationEnergyDistribution")) { - vector<string> file = blocks[i]->GetVectorString("ExcitationEnergyDistribution"); - fExcitationEnergyHist = Read1DProfile(file[0], file[1]); - fExcitation4 = 0; - } - - if (blocks[i]->HasToken("CrossSectionPath")) { - vector<string> file = blocks[i]->GetVectorString("CrossSectionPath"); - TH1F* CStemp = Read1DProfile(file[0], file[1]); - - // multiply CStemp by sin(theta) - TF1* fsin = new TF1("sin", Form("1/(sin(x*%f/180.))", M_PI), 0, 180); - CStemp->Divide(fsin, 1); - SetCrossSectionHist(CStemp); - delete fsin; - } - - if (blocks[i]->HasToken("LabCrossSectionPath")) { - fLabCrossSection = true; - - vector<string> file = blocks[i]->GetVectorString("LabCrossSectionPath"); - TH1F* CStemp = Read1DProfile(file[0], file[1]); - - // multiply CStemp by sin(theta) - TF1* fsin = new TF1("sin", Form("1/(sin(x*%f/180.))", M_PI), 0, 180); - CStemp->Divide(fsin, 1); - SetCrossSectionHist(CStemp); - delete fsin; - } - - if (blocks[i]->HasToken("DoubleDifferentialCrossSectionPath")) { - vector<string> file = blocks[i]->GetVectorString("DoubleDifferentialCrossSectionPath"); - TH2F* CStemp = Read2DProfile(file[0], file[1]); - - // multiply CStemp by sin(theta) - // X axis is theta CM - // Y axis is beam energy - // Division affect only X axis - TF1* fsin = new TF1("sin", Form("1/(sin(x*%f/180.))", M_PI), 0, 180); - CStemp->Divide(fsin, 1); - - SetDoubleDifferentialCrossSectionHist(CStemp); - delete fsin; - } - - if (blocks[i]->HasToken("HalfOpenAngleMin")) { - CSHalfOpenAngleMin = blocks[i]->GetDouble("HalfOpenAngleMin", "deg"); - } - if (blocks[i]->HasToken("HalfOpenAngleMax")) { - CSHalfOpenAngleMax = blocks[i]->GetDouble("HalfOpenAngleMax", "deg"); - } - if (blocks[i]->HasToken("Shoot3")) { - fshoot3 = blocks[i]->GetInt("Shoot3"); - } - if (blocks[i]->HasToken("Shoot4")) { - fshoot4 = blocks[i]->GetInt("Shoot4"); - } - if (blocks[i]->HasToken("ShootHeavy")) { - fshoot4 = blocks[i]->GetInt("ShootHeavy"); - } - if (blocks[i]->HasToken("ShootLight")) { - fshoot3 = blocks[i]->GetInt("ShootLight"); - } - if (blocks[i]->HasToken("UseExInGeant4")) { - // This option will not change the Ex of the produced ion in G4 Tracking - // This is to be set to true when using a Ex distribution without decay - // Otherwise the Ion Table size grew four ech event slowing down the - // simulation - fUseExInGeant4 = blocks[i]->GetInt("UseExInGeant4"); - } - } - SetCSAngle(CSHalfOpenAngleMin / deg, CSHalfOpenAngleMax / deg); - initializePrecomputeVariable(); - cout << "\033[0m"; -} - -//////////////////////////////////////////////////////////////////////////////////////////// -void InelasticBreakup::initializePrecomputeVariable() { - - if (fBeamEnergy < 0) - fBeamEnergy = 0; - - if (fExcitation1 >= 0) - fParticle1.SetExcitationEnergy(fExcitation1); // Write over the beam excitation energy - - // fParticle1.GetExcitationEnergy() is a copy of fExcitation1 - m1 = fParticle1.Mass() + fParticle1.GetExcitationEnergy(); // in case of isomeric state, - m2 = fParticle2.Mass(); // Target - m3 = fParticle3.Mass() + fExcitation3; - m4 = fParticle4.Mass() + fExcitation4; - fQValue = m1 + m2 - m3 - m4; - - s = m1 * m1 + m2 * m2 + 2 * m2 * (fBeamEnergy + m1); - fTotalEnergyImpulsionCM = TLorentzVector(0, 0, 0, sqrt(s)); - fEcm = sqrt(s) - m1 - m2; - - ECM_1 = (s + m1 * m1 - m2 * m2) / (2 * sqrt(s)); - ECM_2 = (s + m2 * m2 - m1 * m1) / (2 * sqrt(s)); - ECM_3 = (s + m3 * m3 - m4 * m4) / (2 * sqrt(s)); - ECM_4 = (s + m4 * m4 - m3 * m3) / (2 * sqrt(s)); - - pCM_1 = sqrt(ECM_1 * ECM_1 - m1 * m1); - pCM_2 = sqrt(ECM_2 * ECM_2 - m2 * m2); - pCM_3 = sqrt(ECM_3 * ECM_3 - m3 * m3); - pCM_4 = sqrt(ECM_4 * ECM_4 - m4 * m4); - - fImpulsionLab_1 = TVector3(0, 0, sqrt(fBeamEnergy * fBeamEnergy + 2 * fBeamEnergy * m1)); - fImpulsionLab_2 = TVector3(0, 0, 0); - - fEnergyImpulsionLab_1 = TLorentzVector(fImpulsionLab_1, m1 + fBeamEnergy); - fEnergyImpulsionLab_2 = TLorentzVector(fImpulsionLab_2, m2); - - fTotalEnergyImpulsionLab = fEnergyImpulsionLab_1 + fEnergyImpulsionLab_2; - - fBetaCM = fTotalEnergyImpulsionLab.Beta(); - - fEnergyImpulsionCM_1 = fEnergyImpulsionLab_1; - fEnergyImpulsionCM_1.Boost(0, 0, -fBetaCM); - - fEnergyImpulsionCM_2 = fEnergyImpulsionLab_2; - fEnergyImpulsionCM_2.Boost(0, 0, -fBetaCM); -} - -//////////////////////////////////////////////////////////////////////////////////////////// -void InelasticBreakup::SetParticle3(double EnergyLab, double ThetaLab) { - double p3 = sqrt(pow(EnergyLab, 2) + 2 * m3 * EnergyLab); - - fEnergyImpulsionLab_3 = TLorentzVector(p3 * sin(ThetaLab), 0, p3 * cos(ThetaLab), EnergyLab + m3); - fEnergyImpulsionLab_4 = fTotalEnergyImpulsionLab - fEnergyImpulsionLab_3; - - fParticle3.SetEnergyImpulsion(fEnergyImpulsionLab_3); - fParticle4.SetEnergyImpulsion(fEnergyImpulsionLab_4); - - fThetaCM = EnergyLabToThetaCM(EnergyLab, ThetaLab); - fExcitation4 = ReconstructRelativistic(EnergyLab, ThetaLab); -} - -//////////////////////////////////////////////////////////////////////////////////////////// -Double_t InelasticBreakup::GetTotalCrossSection() const { - Double_t stot = fCrossSectionHist->Integral("width"); // take bin width into account (in deg!) - stot *= M_PI / 180; // correct so that bin width is in rad - stot *= 2 * M_PI; // integration over phi - - return stot; -} - -//////////////////////////////////////////////////////////////////////////////////////////// -void InelasticBreakup::SetCSAngle(double CSHalfOpenAngleMin, double CSHalfOpenAngleMax) { - if (fCrossSectionHist) { - for (int i = 0; i < fCrossSectionHist->GetNbinsX(); i++) { - if (fCrossSectionHist->GetBinCenter(i) > CSHalfOpenAngleMax || - fCrossSectionHist->GetBinCenter(i) < CSHalfOpenAngleMin) { - fCrossSectionHist->SetBinContent(i, 0); - } - } - } -} - -/////////////////////////////////////////////////////////////////////////////// -// Check whenever the reaction is allowed at the given energy -bool InelasticBreakup::IsAllowed(double Energy) { - double AvailableEnergy = Energy + fParticle1.Mass() + fParticle2.Mass(); - double RequiredEnergy = fParticle3.Mass() + fParticle4.Mass(); - - if (AvailableEnergy > RequiredEnergy) - return true; - else - return false; -} diff --git a/NPLib/Physics/NPInelasticBreakUp.h b/NPLib/Physics/NPInelasticBreakUp.h deleted file mode 100644 index 1a3dd89014ec1af30f75948cb3d4c93d80759fd5..0000000000000000000000000000000000000000 --- a/NPLib/Physics/NPInelasticBreakUp.h +++ /dev/null @@ -1,265 +0,0 @@ -#ifndef NPInelasticBreakUp_h -#define NPInelasticBreakUp_h -/***************************************************************************** - * Copyright (C) 2009-2016 this file is part of the NPTool Project * - * * - * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * - * For the list of contributors see $NPTOOL/Licence/Contributors * - *****************************************************************************/ - -/***************************************************************************** - * * - * Original Author : Adrien MAtta contact: matta@lpccaen.in2p3.fr * - * * - * Creation Date : April 2024 * - *---------------------------------------------------------------------------* - * Decription: * - * * - * * - *---------------------------------------------------------------------------* - * Comment: * - * * - * * - *****************************************************************************/ -// C++ header -#include <string> - -// NPL -#include "NPBeam.h" -#include "NPInputParser.h" -#include "NPParticle.h" -using namespace NPL; - -// ROOT header -#include "NPReaction.h" -#include "TCanvas.h" -#include "TGraph.h" -#include "TH1F.h" -#include "TLorentzRotation.h" -#include "TLorentzVector.h" -#include "TRandom.h" -#include "TVector3.h" - -using namespace std; - -namespace NPL { - - class InelasticBreakup { - - public: // Constructors and Destructors - InelasticBreakup(); - ~InelasticBreakup(); - - public: // Various Method - Particle GetParticle(string name, NPL::InputParser parser); - void ReadConfigurationFile(string Path); - void ReadConfigurationFile(NPL::InputParser); - - private: - TRandom* RandGen; - - private: - int fVerboseLevel; - - private: // use for Monte Carlo simulation - bool fshoot3; - bool fshoot4; - bool fshoot5; - bool fUseExInGeant4; - bool fLabCrossSection; - - private: - Beam fParticle1; // Beam - Particle fParticle2; // Target - Particle fParticle3; // Light ejectile - Particle fParticle4; // Heavy ejectile - double fQValue; // Q-value in MeV - double fEcm; // Ecm in MeV - double fBeamEnergy; // Beam energy in MeV - double fThetaCM; // Center-of-mass angle in radian - double fExcitation1; // Excitation energy in MeV of the beam, useful for isomers - double fExcitation3; // Excitation energy in MeV - double fExcitation4; // Excitation energy in MeV - TH1F* fCrossSectionHist; // Differential cross section in CM frame - TH2F* fDoubleDifferentialCrossSectionHist; // Diff. CS CM frame vs Beam E - TH1F* fExcitationEnergyHist; // Distribution of Excitation energy - public: - // Getters and Setters - void SetBeamEnergy(const double& eBeam) { - fBeamEnergy = eBeam; - initializePrecomputeVariable(); - } - void SetEcm(const double& Ecm) { - fEcm = Ecm; - s = pow(Ecm + m1 + m2, 2); - fBeamEnergy = (s - m1 * m1 - m2 * m2) / (2 * m2) - m1; - initializePrecomputeVariable(); - } - void SetThetaCM(const double& angle) { - fThetaCM = angle; - initializePrecomputeVariable(); - } - void SetExcitation1(const double& exci) { - fExcitation1 = exci; - initializePrecomputeVariable(); - } - void SetExcitation3(const double& exci) { - fExcitation3 = exci; - initializePrecomputeVariable(); - } - void SetExcitation4(const double& exci) { - fExcitation4 = exci; - initializePrecomputeVariable(); - } - // For retro compatibility - void SetExcitationBeam(const double& exci) { - fExcitation1 = exci; - initializePrecomputeVariable(); - } - void SetExcitationLight(const double& exci) { - fExcitation3 = exci; - initializePrecomputeVariable(); - } - void SetExcitationHeavy(const double& exci) { - fExcitation4 = exci; - initializePrecomputeVariable(); - } - void SetVerboseLevel(const int& verbose) { fVerboseLevel = verbose; } - void SetCrossSectionHist(TH1F* CrossSectionHist) { - delete fCrossSectionHist; - fCrossSectionHist = CrossSectionHist; - } - - void SetDoubleDifferentialCrossSectionHist(TH2F* CrossSectionHist) { - fDoubleDifferentialCrossSectionHist = CrossSectionHist; - } - double GetBeamEnergy() const { return fBeamEnergy; } - double GetThetaCM() const { return fThetaCM; } - double GetExcitation1() const { return fExcitation1; } - double GetExcitation3() const { return fExcitation3; } - double GetExcitation4() const { return fExcitation4; } - double GetQValue() const { return fQValue; } - double GetEcm() const { return fEcm; } - Particle* GetParticle1() { return &fParticle1; } - Particle* GetParticle2() { return &fParticle2; } - Particle* GetParticle3() { return &fParticle3; } - Particle* GetParticle4() { return &fParticle4; } - Particle* GetNucleus1() { return GetParticle1(); } - Particle* GetNucleus2() { return GetParticle2(); } - Particle* GetNucleus3() { return GetParticle3(); } - Particle* GetNucleus4() { return GetParticle4(); } - - TH1F* GetCrossSectionHist() const { return fCrossSectionHist; } - int GetVerboseLevel() const { return fVerboseLevel; } - bool GetShoot3() const { return fshoot3; } - bool GetShoot4() const { return fshoot4; } - bool GetUseExInGeant4() const { return fUseExInGeant4; } - - public: - // Modify the CS histo so cross section shoot is within ]HalfOpenAngleMin,HalfOpenAngleMax[ - void SetCSAngle(double CSHalfOpenAngleMin, double CSHalfOpenAngleMax); - - private: // intern precompute variable - void initializePrecomputeVariable(); - double m1; - double m2; - double m3; - double m4; - double m5; - - // Lorents Vector - TLorentzVector fEnergyImpulsionLab_1; - TLorentzVector fEnergyImpulsionLab_2; - TLorentzVector fEnergyImpulsionLab_3; - TLorentzVector fEnergyImpulsionLab_4; - TLorentzVector fTotalEnergyImpulsionLab; - - TLorentzVector fEnergyImpulsionCM_1; - TLorentzVector fEnergyImpulsionCM_2; - TLorentzVector fEnergyImpulsionCM_3; - TLorentzVector fEnergyImpulsionCM_4; - TLorentzVector fTotalEnergyImpulsionCM; - - // Impulsion Vector3 - TVector3 fImpulsionLab_1; - TVector3 fImpulsionLab_2; - TVector3 fImpulsionLab_3; - TVector3 fImpulsionLab_4; - - TVector3 fImpulsionCM_1; - TVector3 fImpulsionCM_2; - TVector3 fImpulsionCM_3; - TVector3 fImpulsionCM_4; - - // CM Energy composante & CM impulsion norme - Double_t ECM_1; - Double_t ECM_2; - Double_t ECM_3; - Double_t ECM_4; - Double_t pCM_1; - Double_t pCM_2; - Double_t pCM_3; - Double_t pCM_4; - - // Mandelstam variable - Double_t s; - - // Center of Mass Kinematic - Double_t fBetaCM; - - public: - TLorentzVector GetEnergyImpulsionLab_1() const { return fEnergyImpulsionLab_1; } - TLorentzVector GetEnergyImpulsionLab_2() const { return fEnergyImpulsionLab_2; } - TLorentzVector GetEnergyImpulsionLab_3() const { return fEnergyImpulsionLab_3; } - TLorentzVector GetEnergyImpulsionLab_4() const { return fEnergyImpulsionLab_4; } - - public: // Kinematics - // Check that the reaction is alowed - bool CheckKinematic(); - bool IsLabCrossSection() { return fLabCrossSection; }; - - // Use fCrossSectionHist to shoot a Random ThetaCM and set fThetaCM to this value - double ShootRandomThetaCM(); - - // Use fExcitationEnergyHist to shoot a Random Excitation energy and set fExcitation4 to this value - void ShootRandomExcitationEnergy(); - - // Compute ThetaLab and EnergyLab for product of reaction - void KineRelativistic(double& ThetaLab3, double& KineticEnergyLab3, double& ThetaLab4, double& KineticEnergyLab4); - - // Return Excitation Energy - double ReconstructRelativistic(double EnergyLab, double ThetaLab, double PhiLab = 0); - - // Return Lorentz Vector of Heavy Recoil after reaction - TLorentzVector LorentzAfterInelasticBreakup(double EnergyLab, double ThetaLab, double PhiLab = 0); - - // Return ThetaCM - // EnergyLab: energy measured in the laboratory frame - // ExcitationEnergy: excitation energy previously calculated. - double EnergyLabToThetaCM(double EnergyLab, double ThetaLab); - // Return theoretical EnergyLab, useful for a random distribution in the lab frame - // ThetaLab: angle measured in the laboratory frame - // This uses the fExcitation4 and fQValue both set previously - double EnergyLabFromThetaLab(double ThetaLab); - - // Check whenever the reaction is allowed at the given energy - bool IsAllowed(double Energy); - - void SetParticle3(double EnergyLab, double ThetaLab); - - double GetP_CM_1() { return pCM_1; } - double GetP_CM_2() { return pCM_2; } - double GetP_CM_3() { return pCM_3; } - double GetP_CM_4() { return pCM_4; } - double GetE_CM_1() { return ECM_1; } - double GetE_CM_2() { return ECM_2; } - double GetE_CM_3() { return ECM_3; } - double GetE_CM_4() { return ECM_4; } - - // Print private paremeter - void Print() const; - - ClassDef(InelasticBreakup, 0) - }; -} // namespace NPL -#endif diff --git a/NPLib/Physics/NPQFS.cxx b/NPLib/Physics/NPQFS.cxx index 17710ab3d2cdf51d5d2e96e7c5ed66809324a08a..06295d4f90c677f4e15683a89f9b53dea6e69f36 100644 --- a/NPLib/Physics/NPQFS.cxx +++ b/NPLib/Physics/NPQFS.cxx @@ -58,13 +58,14 @@ using namespace NPUNITS; // ROOT #include"TF1.h" +#include "TMath.h" ClassImp(QFS) //////////////////////////////////////////////////////////////////////////////// QFS::QFS(){ - + //------------- Default Constructor ------------- fVerboseLevel = NPOptionManager::getInstance()->GetVerboseLevel(); fBeamEnergy = 0; @@ -92,12 +93,14 @@ QFS::QFS(){ fPerpMomentumHist = NULL; fParMomentumHist = NULL; fDeexcitation = false; + } //////////////////////////////////////////////////////////////////////////////// QFS::~QFS(){ + } ///////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -121,7 +124,7 @@ void QFS::ReadConfigurationFile(string Path){ //////////////////////////////////////////////////////////////////////////////// void QFS::ReadConfigurationFile(NPL::InputParser parser){ - + cout << " In QFS ReadConfiguration " << endl; vector<NPL::InputBlock*> blocks = parser.GetAllBlocksWithToken("QFSReaction"); if(blocks.size()>0 && NPOptionManager::getInstance()->GetVerboseLevel()) diff --git a/NPLib/Physics/NPQFS.h b/NPLib/Physics/NPQFS.h index 5637d14714c4d1af87b228a9d25093b750d96ebe..089b4b4e3fc551450b8e851815c3136597598e1d 100644 --- a/NPLib/Physics/NPQFS.h +++ b/NPLib/Physics/NPQFS.h @@ -45,6 +45,8 @@ #include "NPParticle.h" #include "NPBeam.h" #include "NPInputParser.h" + + using namespace NPL; // ROOT header @@ -62,10 +64,11 @@ namespace NPL{ class QFS{ public: // Constructors and Destructors - QFS(); + QFS(); ~QFS(); private: + int fVerboseLevel; Beam fParticleA; // Beam (A) Particle fParticleT; // Target (T) diff --git a/NPLib/Physics/NPReaction.cxx b/NPLib/Physics/NPReaction.cxx index 70f0206a18977458ea78d3ab9b19720b27a215f4..f2e70c3ce38ca13e1965958aa1b15449a1f9c26e 100644 --- a/NPLib/Physics/NPReaction.cxx +++ b/NPLib/Physics/NPReaction.cxx @@ -245,12 +245,6 @@ double Reaction::ShootRandomThetaCM() { return theta; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -void Reaction::ShootRandomExcitationEnergy() { - if (fExcitationEnergyHist) { - SetExcitation4(fExcitationEnergyHist->GetRandom()); - } -} //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Reaction::KineRelativistic(double& ThetaLab3, double& KineticEnergyLab3, double& ThetaLab4, @@ -473,6 +467,7 @@ void Reaction::ReadConfigurationFile(NPL::InputParser parser) { double CSHalfOpenAngleMin = 0 * deg; double CSHalfOpenAngleMax = 180 * deg; for (unsigned int i = 0; i < blocks.size(); i++) { + if (blocks[i]->HasTokenList(token1)) { int v = NPOptionManager::getInstance()->GetVerboseLevel(); NPOptionManager::getInstance()->SetVerboseLevel(0); @@ -483,7 +478,8 @@ void Reaction::ReadConfigurationFile(NPL::InputParser parser) { fParticle2 = GetParticle(blocks[i]->GetString("Target"), parser); fParticle3 = GetParticle(blocks[i]->GetString("Light"), parser); fParticle4 = GetParticle(blocks[i]->GetString("Heavy"), parser); - } + }// if token1 + else if (blocks[i]->HasTokenList(token2)) { fParticle1.SetVerboseLevel(0); fParticle1.ReadConfigurationFile(parser); @@ -492,7 +488,8 @@ void Reaction::ReadConfigurationFile(NPL::InputParser parser) { fParticle2 = GetParticle(blocks[i]->GetString("Target"), parser); fParticle3 = GetParticle(blocks[i]->GetString("Particle3"), parser); fParticle4 = GetParticle(blocks[i]->GetString("Particle4"), parser); - } + }//if token2 + else { cout << "ERROR: check your input file formatting \033[0m" << endl; exit(1); @@ -585,12 +582,38 @@ void Reaction::ReadConfigurationFile(NPL::InputParser parser) { // simulation fUseExInGeant4 = blocks[i]->GetInt("UseExInGeant4"); } + + }//end for loop TwoBodyReaction + + + vector<NPL::InputBlock*> blocksBW = parser.GetAllBlocksWithToken("BreitWigner"); + if (blocksBW.size() > 0 && NPOptionManager::getInstance()->GetVerboseLevel()) { + + #if __cplusplus > 201703L + fBreitWigner.ReadConfigurationFile(parser); + fExcitationEnergyHist = fBreitWigner.Make_TH1(); + fExcitation4 = 0; + #else + cout << "You need at least C++17 to use the BreitWigner distribution" << endl; + #endif } + + SetCSAngle(CSHalfOpenAngleMin / deg, CSHalfOpenAngleMax / deg); initializePrecomputeVariable(); cout << "\033[0m"; + +}//end ReadConfigurationFile + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void Reaction::ShootRandomExcitationEnergy() { + if (fExcitationEnergyHist) { + SetExcitation4(fExcitationEnergyHist->GetRandom()); + } } + //////////////////////////////////////////////////////////////////////////////////////////// void Reaction::initializePrecomputeVariable() { diff --git a/NPLib/Physics/NPReaction.h b/NPLib/Physics/NPReaction.h index fa43b2c6a3046a13d08c9d3554deaa5953965ce3..f216fd81abbf8d0bb549e8bff93cd7b58bbf61cd 100644 --- a/NPLib/Physics/NPReaction.h +++ b/NPLib/Physics/NPReaction.h @@ -36,6 +36,10 @@ #include "NPInputParser.h" #include "NPParticle.h" +#if __cplusplus > 201703L +#include "NPBreitWigner.h" +#endif + using namespace NPL; // ROOT header @@ -99,7 +103,13 @@ namespace NPL { double fExcitation4; // Excitation energy in MeV TH1D* fCrossSectionHist; // Differential cross section in CM frame TH2F* fDoubleDifferentialCrossSectionHist; // Diff. CS CM frame vs Beam E + TH1D* fExcitationEnergyHist; // Distribution of Excitation energy + + #if __cplusplus > 201703L + BreitWigner fBreitWigner; // Breit Wigner energy distribution + #endif + public: // Getters and Setters void SetBeamEnergy(const double& eBeam) { diff --git a/NPLib/Physics/TReactionConditions.cxx b/NPLib/Physics/TReactionConditions.cxx index f4882241d3a74dc507eeebbe8ba27d3594ff1905..c47c51d3c0de1651de0444cc7b1b7edae9a71a24 100644 --- a/NPLib/Physics/TReactionConditions.cxx +++ b/NPLib/Physics/TReactionConditions.cxx @@ -87,7 +87,7 @@ void TReactionConditions::Dump() const{ << fRC_Internal_Momentum.X() << " ; " << fRC_Internal_Momentum.Y() << " ; " << fRC_Internal_Momentum.Z() << ")" << endl; - + TVector3 *emitted= new TVector3(); // emmitted particle unsigned int size = fRC_Particle_Name.size(); diff --git a/NPLib/Physics/TReactionConditions.h b/NPLib/Physics/TReactionConditions.h index ade0078b866ab31e50e5d22d1626030c07a4bba8..9b0ead8c724347ce7355fa901516daf206da99b7 100644 --- a/NPLib/Physics/TReactionConditions.h +++ b/NPLib/Physics/TReactionConditions.h @@ -58,6 +58,7 @@ private: double fRC_Vertex_Position_X; double fRC_Vertex_Position_Y; double fRC_Vertex_Position_Z; + //Center of mass angle for the reaction double fRC_ThetaCM; @@ -100,7 +101,7 @@ public: void SetExcitationEnergy4 (const double& Ex) {fRC_ExcitationEnergy4=Ex;};//! void SetThetaCM (const double & ThetaCM) {fRC_ThetaCM = ThetaCM;}//! void SetInternalMomentum (const TVector3& IntMom) {fRC_Internal_Momentum = IntMom;}//! - + // emmitted particles void SetParticleName (const string & Particle_Name) {fRC_Particle_Name.push_back(Particle_Name);}//! void SetTheta (const double & Angle) {fRC_Theta.push_back(Angle);}//! @@ -135,7 +136,7 @@ public: double GetExcitation4 () const {return fRC_ExcitationEnergy4 ;}//! double GetThetaCM () const {return fRC_ThetaCM;}//! TVector3 GetInternalMomentum () const {return fRC_Internal_Momentum;}//! - + // emmitted particles int GetParticleMultiplicity() const {return fRC_Kinetic_Energy.size();}//! string GetParticleName (const int &i) const {return fRC_Particle_Name[i];}//! diff --git a/NPLib/TrackReconstruction/NPDCReconstructionMT.cxx b/NPLib/TrackReconstruction/NPDCReconstructionMT.cxx index cca5634728e8015af0a8f9b6ecc6d1cf98310e10..7786a657541c14434c10ddd20dc6022e964186f9 100644 --- a/NPLib/TrackReconstruction/NPDCReconstructionMT.cxx +++ b/NPLib/TrackReconstruction/NPDCReconstructionMT.cxx @@ -30,6 +30,8 @@ using namespace std; using namespace NPL; + + //////////////////////////////////////////////////////////////////////////////// DCReconstructionMT::DCReconstructionMT(unsigned int number_thread) { ROOT::EnableThreadSafety(); @@ -70,10 +72,15 @@ void DCReconstructionMT::AddPlan(unsigned int ID, const vector<double>& X, const } } - fitX[free_thread] = &X; - fitZ[free_thread] = &Z; + // fitX[free_thread] = &X; + // fitZ[free_thread] = &Z; + + fitX[free_thread] = &Z; + fitZ[free_thread] = &X; + fitR[free_thread] = &R; m_uid[free_thread] = ID; + // assume all X,Z,R of same size sizeX[free_thread] = X.size(); m_Ready[free_thread] = true; @@ -142,6 +149,7 @@ double DCReconstructionMT::SumD(const double* parameter) { double P = 0; double a = parameter[0]; double b = parameter[1]; + double ab = a * b; double a2 = a * a; unsigned int id = parameter[2]; @@ -158,6 +166,7 @@ double DCReconstructionMT::SumD(const double* parameter) { x = (a * d - ab + c) / (1 + a2); z = a * x + b; p = (x - c) * (x - c) + (z - d) * (z - d) - r * r; + // numerical trick to have a smooth derivative instead of using abs P += sqrt(p * p + 0.1); } @@ -214,6 +223,7 @@ void DCReconstructionMT::StartThread(unsigned int id) { double ai, bi; unsigned int uid; const double* xs; + // create the functor // each threads needs its own or the minisation is not thread safe ROOT::Math::Functor* func = new ROOT::Math::Functor(this, &NPL::DCReconstructionMT::SumD, 3); @@ -233,9 +243,10 @@ void DCReconstructionMT::StartThread(unsigned int id) { // Define the starting point of the fit: a straight line passing through the // the first and last wire // z = ax+b -> x=(z-b)/a - ai = ((*fitZ[id])[sizeX[id] - 1] - (*fitZ[id])[0]) / - ((*fitX[id])[sizeX[id] - 1] - (*fitX[id])[0] + (*fitR[id])[sizeX[id] - 1] - (*fitR[id])[0]); - bi = (*fitZ[id])[0] - ai * ((*fitX[id])[0] + (*fitR[id])[0]); + // if(id == 0) cout << endl; + ai = ((*fitZ[id])[sizeX[id] - 1] - (*fitZ[id])[0]) / + ((*fitX[id])[sizeX[id] - 1] - (*fitX[id])[0] + (*fitR[id])[sizeX[id] - 1] - (*fitR[id])[0]); + bi = (*fitZ[id])[0] - ai * ((*fitX[id])[0] + (*fitR[id])[0]); if (std::isinf(ai)) { // then there is no two point in different layer m_a[uid] = -10000; @@ -244,11 +255,12 @@ void DCReconstructionMT::StartThread(unsigned int id) { m_X100[uid] = -10000; m_minimum[uid] = 10000; } - + else { + mini->Clear(); mini->SetVariable(0, "a", ai, 1); - mini->SetVariable(1, "b", bi, 1); + mini->SetVariable(1, "b", bi, 1); mini->SetFixedVariable(2, "id", id); // Perform minimisation mini->Minimize(); @@ -256,10 +268,15 @@ void DCReconstructionMT::StartThread(unsigned int id) { // access set of parameter that produce the minimum xs = mini->X(); uid = m_uid[id]; - m_a[uid] = xs[0]; - m_b[uid] = xs[1]; + // m_a[uid] = xs[0]; + // m_b[uid] = xs[1]; + + m_a[uid] = 1.0/xs[0]; + m_b[uid] = -(1.0/xs[0]) * xs[1]; m_X0[uid] = -m_b[uid] / m_a[uid]; m_X100[uid] = (100 - m_b[uid]) / m_a[uid]; + m_a[uid] = xs[0]; + m_b[uid] = xs[1]; m_minimum[uid] = mini->MinValue(); } // notify main thread job is done diff --git a/NPLib/TrackReconstruction/NPDCReconstructionMT.h b/NPLib/TrackReconstruction/NPDCReconstructionMT.h index 29af99a16a000f355c2a2a44c9bac339af3d6311..342a3ae8b029bfa63ca849ec533f0f05da948f0f 100644 --- a/NPLib/TrackReconstruction/NPDCReconstructionMT.h +++ b/NPLib/TrackReconstruction/NPDCReconstructionMT.h @@ -70,7 +70,7 @@ namespace NPL{ // Function used by the minimizer in BuildTrack2D double SumD(const double* parameter ); - + // For debugging/optimisation // Scan Sumd versus parameter a or b (tovary =0 for a, 1 for b) // return a TGraph for display diff --git a/NPLib/Utility/CMakeLists.txt b/NPLib/Utility/CMakeLists.txt index 1c57054b063ea73dc6b1319d75a3999cf1e5fd13..5f3a62684526dc0972b60eba64445213a31c9dc6 100644 --- a/NPLib/Utility/CMakeLists.txt +++ b/NPLib/Utility/CMakeLists.txt @@ -8,8 +8,10 @@ add_executable(nponline nponline.cxx) target_link_libraries(nponline ${ROOT_LIBRARIES} NPCore NPOnline) add_executable(npcalibration npcalibration.cxx) target_link_libraries(npcalibration ${ROOT_LIBRARIES} -lThread -lGraf -lTreePlayer -lHist -lMatrix NPCore) +add_executable(npefficiency npefficiency.cxx) +target_link_libraries(npefficiency ${ROOT_LIBRARIES} -lThread -lGraf -lTreePlayer -lHist -lMatrix NPCore) add_executable(npspectra_test npspectra_test.cxx) target_link_libraries(npspectra_test ${ROOT_LIBRARIES} NPCore NPOnline) -install(PROGRAMS nptool-installer npanalysis nponline npreader npcalibration DESTINATION ${CMAKE_BINARY_OUTPUT_DIRECTORY}) +install(PROGRAMS nptool-installer npanalysis nponline npreader npcalibration npefficiency DESTINATION ${CMAKE_BINARY_OUTPUT_DIRECTORY}) install(SCRIPT ${CMAKE_BINARY_DIR}/scripts/post_install.cmake ${DETLIST}) diff --git a/NPLib/Utility/npefficiency b/NPLib/Utility/npefficiency new file mode 100755 index 0000000000000000000000000000000000000000..bdc88b3b038fcba07c6a74b6913940cce4af603f Binary files /dev/null and b/NPLib/Utility/npefficiency differ diff --git a/NPLib/Utility/npefficiency.cxx b/NPLib/Utility/npefficiency.cxx new file mode 100644 index 0000000000000000000000000000000000000000..fc9fe5c96b8c3ee6e8fceee9eab7c8d21bcecd89 --- /dev/null +++ b/NPLib/Utility/npefficiency.cxx @@ -0,0 +1,185 @@ +// NPL +#include"NPDetectorManager.h" +#include"NPOptionManager.h" +#include"NPVAnalysis.h" +#include"NPAnalysisFactory.h" +#include"RootInput.h" +#include"RootHistogramsCalib.h" + +// STL +#include<iostream> +#include<stdio.h> +#include<dlfcn.h> +#include<stdlib.h> +#include<unistd.h> +#include<sys/time.h> + +// Root +#include"TTreeReader.h" +#include"TKey.h" +#include"TEnv.h" +#include"TROOT.h" +void ProgressDisplay(clock_t&,clock_t&,unsigned long&, unsigned long&, unsigned long&, double&, unsigned long&, int&, int&); +void ProgressDisplay(struct timeval& begin, struct timeval& end, unsigned long& treated,unsigned long& inter,unsigned long& total,double& mean_rate,unsigned long& displayed, int& current_tree, int& total_tree); +//////////////////////////////////////////////////////////////////////////////// +int main(int argc , char** argv){ + // command line parsing + NPOptionManager* myOptionManager = NPOptionManager::getInstance(argc,argv); + std::string efficiencyfileName = myOptionManager->GetEfficiencyFile(); + std::string OutputfileName = myOptionManager->GetOutputFile(); + + myOptionManager->SetReader(true); + myOptionManager->SetIsEfficiency(true); + std::string inputfilename = myOptionManager->GetRunToReadFile(); + + if (myOptionManager->IsDefault("Efficiency")) { + std::cout << "Please use a valid Efficiency File" << std::endl; + return 0; + } + + // get input files from NPOptionManager + + + // Instantiate the detector using a file + NPL::DetectorManager* myDetector = new NPL::DetectorManager(); + RootHistogramsCalib::getInstance(OutputfileName); + + myDetector->ReadConfigurationFile(myOptionManager->GetDetectorFile()); + myDetector->ReadEfficiencyFile(efficiencyfileName); + myDetector->InitializeRootInput(); + TTreeReader* inputTreeReader = RootInput::getInstance()->GetTreeReader(); + myDetector->SetTreeReader(inputTreeReader); + + + std::cout << std::endl << "///////// Starting Efficiency ///////// "<< std::endl; + TChain* Chain = RootInput:: getInstance()->GetChain(); + myOptionManager->GetNumberOfEntryToAnalyse(); + + unsigned long first_entry = myOptionManager->GetFirstEntryToAnalyse(); // defaults to zero + unsigned long nentries = Chain->GetEntries(); + if(nentries> myOptionManager->GetNumberOfEntryToAnalyse() && myOptionManager->GetNumberOfEntryToAnalyse()>0) + nentries = myOptionManager->GetNumberOfEntryToAnalyse() ; + if(nentries + first_entry > Chain->GetEntries()) {nentries = first_entry+Chain->GetEntries();} + + + TString ChainName = Chain->GetName(); + std::cout << " Number of Event to be treated : " << nentries << " on chain " << ChainName << std::endl; + + unsigned long inter = 0; + unsigned long treated = 0; + double mean_rate =0; + unsigned long displayed=0; + clock_t end; + clock_t begin = clock(); + struct timeval tv_end; + struct timeval tv_begin; gettimeofday(&tv_begin,NULL); + unsigned long new_nentries = 0 ; + int current_tree = 0 ; + int total_tree = Chain->GetNtrees(); + int entry_max = NPOptionManager::getInstance()->GetNumberOfEntryToAnalyse(); + + myDetector->InitializeRootHistogramsEfficiency(); + while(inputTreeReader->Next()){ + myDetector->FillHistogramsEfficiency(); + current_tree = Chain->GetTreeNumber()+1; + ProgressDisplay(tv_begin,tv_end,treated,inter,nentries,mean_rate,displayed,current_tree,total_tree); + if(entry_max >= 0 && treated> entry_max) + break; + } + myDetector->Efficiency(); + myDetector->WriteHistogramsEfficiency(); + +#if __cplusplus > 199711L && NPMULTITHREADING + myDetector->StopThread(); +#endif + + current_tree = Chain->GetTreeNumber()+1; + //ProgressDisplay(begin,end,treated,inter,nentries,mean_rate,displayed,current_tree,total_tree); + + ProgressDisplay(tv_begin,tv_end,treated,inter,nentries,mean_rate,displayed,current_tree,total_tree); + + RootInput::Destroy(); + RootOutput::Destroy(); + RootHistogramsCalib::Destroy(); + return 0; +} +//////////////////////////////////////////////////////////////////////////////// +void ProgressDisplay(struct timeval& begin, struct timeval& end, unsigned long& treated,unsigned long& inter,unsigned long& total,double& mean_rate,unsigned long& displayed, int& current_tree, int& total_tree){ + gettimeofday(&end,NULL); + long double elapsed= end.tv_sec-begin.tv_sec+(end.tv_usec-begin.tv_usec)*1e-6; + if(elapsed>1||treated>=total ){ + displayed++; + double event_rate = inter/elapsed; + mean_rate += (event_rate-mean_rate)/(displayed); + double percent = 100*treated/total; + double remain = (total-treated)/mean_rate; + + char* timer; + double check; + int minutes = remain/60.; + int seconds = remain -60*minutes; + if(remain>60) + check=asprintf(&timer,"%dmin%ds",minutes,seconds); + else + check=asprintf(&timer,"%ds",(int)(remain)); + + static char star[10]; + if(displayed%2==0 || treated==total) + sprintf(star,"*******"); + else + sprintf(star,"-------"); + + if(treated!=total) + printf("\r \033[1;31m %s Progress: \033[1;36m%.1f%% \033[1;31m| Rate: %.1fk evt/s | Remain: %s | Tree: %d/%d %s \033[0m ", star,percent,mean_rate/1000.,timer, current_tree,total_tree,star); + + else{ + printf("\r \033[1;32m %s Progress: %.1f%% | Rate: %.1fk evt/s | Remain: %s | Tree: %d/%d %s \033[0m ", star,percent,mean_rate/1000.,timer, current_tree, total_tree,star); + } + fflush(stdout); + inter=0; + gettimeofday(&begin,NULL); + } + + treated++; + inter++; +} +//////////////////////////////////////////////////////////////////////////////// +void ProgressDisplay(clock_t& begin, clock_t& end, unsigned long& treated,unsigned long& inter,unsigned long& total,double& mean_rate,unsigned long& displayed, int& current_tree, int& total_tree){ + end = clock(); + if((end-begin)>CLOCKS_PER_SEC||treated>=total ){ + displayed++; + long double elapsed =(long double) (end-begin)/CLOCKS_PER_SEC; + double event_rate = inter/elapsed; + mean_rate += (event_rate-mean_rate)/(displayed); + double percent = 100*treated/total; + double remain = (total-treated)/mean_rate; + + char* timer; + double check; + int minutes = remain/60.; + int seconds = remain -60*minutes; + if(remain>60) + check=asprintf(&timer,"%dmin%ds",minutes,seconds); + else + check=asprintf(&timer,"%ds",(int)(remain)); + + static char star[10]; + if(displayed%2==0 || treated==total) + sprintf(star,"*******"); + else + sprintf(star,"-------"); + + if(treated!=total) + printf("\r \033[1;31m %s Progress: \033[1;36m%.1f%% \033[1;31m| Rate: %.1fk evt/s | Remain: %s | Tree: %d/%d %s \033[0m ", star,percent,mean_rate/1000.,timer, current_tree,total_tree,star); + + else{ + printf("\r \033[1;32m %s Progress: %.1f%% | Rate: %.1fk evt/s | Remain: %s | Tree: %d/%d %s \033[0m ", star,percent,mean_rate/1000.,timer, current_tree, total_tree,star); + } + fflush(stdout); + inter=0; + begin = clock() ; + } + + treated++; + inter++; +} diff --git a/NPSimulation/Core/MaterialManager.cc b/NPSimulation/Core/MaterialManager.cc index 14f7be2d8c66e9a6af8bf053075d526da8c3f27e..4aaef449e499a4ad9d35fac89d7fa65ed8948d61 100644 --- a/NPSimulation/Core/MaterialManager.cc +++ b/NPSimulation/Core/MaterialManager.cc @@ -165,7 +165,7 @@ G4Material* MaterialManager::GetMaterialFromLibrary(string Name, double density) else if (Name == "Mylar") { if (!density) density = 1.397 * g / cm3; - G4Material* material = new G4Material("NPS_" + Name, density, 3); + G4Material* material = new G4Material("NPS_" + Name, density, 3); material->AddElement(GetElementFromLibrary("H"), 8); material->AddElement(GetElementFromLibrary("C"), 10); material->AddElement(GetElementFromLibrary("O"), 4); @@ -1285,7 +1285,7 @@ G4Material* MaterialManager::GetGasFromLibrary(string Name, double Pressure, dou string newName = oss.str(); map<string, G4Material*>::iterator it; it = m_Material.find(Name); - + double density = 0; G4double Vm = 0.08206 * Temperature * atmosphere / (Pressure * kelvin); @@ -1378,6 +1378,18 @@ G4Material* MaterialManager::GetGasFromLibrary(string Name, double Pressure, dou return material; } + if (Name == "CH4_60_He_40") // Gas mix of CH4 60% and He 40% at 20C° and 1 atm + { + density = ((0.6 * (12.0107 + 4 * 1.00794) + (0.4 * 1.00794))/Vm ) *mg/cm3; + G4Material* material = new G4Material("NPS_" + newName, density, 2, kStateGas, Temperature, Pressure); + + material->AddMaterial(GetGasFromLibrary("CH4", Pressure, Temperature), 0.6); + material->AddMaterial(GetGasFromLibrary("He", Pressure, Temperature), 0.4); + m_Material[newName] = material; + return material; + } + + else { exit(1); } diff --git a/NPSimulation/Core/Particle.cc b/NPSimulation/Core/Particle.cc index 1915b4f32336d908986f398f3debbc5056260875..f14ceca58ad4605a6c5d130ca4052fdaf8d4d720 100644 --- a/NPSimulation/Core/Particle.cc +++ b/NPSimulation/Core/Particle.cc @@ -44,6 +44,17 @@ Particle::Particle(G4ParticleDefinition* particle,double ThetaCM,double T,G4Thre m_Position = Position; m_ShootStatus = ShootStatus; } +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +Particle::Particle(G4ParticleDefinition* particle,double ThetaCM,double T,G4ThreeVector Direction, G4ThreeVector Position,double Delay,bool ShootStatus){ + m_ParticleDefinition = particle; + m_ThetaCM = ThetaCM; + m_T = T; + m_Direction = Direction; + m_Position = Position; + m_TimeDelay = Delay; + m_ShootStatus = ShootStatus; +} + //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4ParticleDefinition* Particle::GetParticleDefinition(){ @@ -60,6 +71,11 @@ double Particle::GetParticleKineticEnergy(){ return m_T; } +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +double Particle::GetParticleTimeDelay(){ + return m_TimeDelay; +} + //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4ThreeVector Particle::GetParticleMomentumDirection(){ return m_Direction; @@ -90,6 +106,11 @@ void Particle::SetParticleKineticEnergy(double T){ m_T = T ; } +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void Particle::SetParticleTimeDelay(double delay){ + m_TimeDelay = delay ; +} + //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Particle::SetParticleMomentumDirection(G4ThreeVector Direction){ m_Direction = Direction; diff --git a/NPSimulation/Core/Particle.hh b/NPSimulation/Core/Particle.hh index f7e46bbc2bc2369bcaa246bfbf5ed939f853ab43..ac01bfe0dd4e6dd85301a749abf30e39d564fb6c 100644 --- a/NPSimulation/Core/Particle.hh +++ b/NPSimulation/Core/Particle.hh @@ -37,6 +37,8 @@ namespace NPS{ ~Particle(); // Constructor to be used Particle(G4ParticleDefinition* particle,double ThetaCM,double T,G4ThreeVector Direction, G4ThreeVector Position,bool ShootStatus=true); + // Constructor to be used for EventGeneratorAlphaDecay + Particle(G4ParticleDefinition* particle,double ThetaCM,double T,G4ThreeVector Direction, G4ThreeVector Position,double Delay,bool ShootStatus=true); private: // Private Member G4ParticleDefinition* m_ParticleDefinition; @@ -44,6 +46,7 @@ namespace NPS{ double m_T ; G4ThreeVector m_Direction; G4ThreeVector m_Position; + double m_TimeDelay; bool m_ShootStatus; public: // Setter and Getter @@ -51,6 +54,7 @@ namespace NPS{ G4ParticleDefinition* GetParticleDefinition(); double GetParticleThetaCM(); double GetParticleKineticEnergy(); + double GetParticleTimeDelay(); G4ThreeVector GetParticleMomentumDirection(); G4ThreeVector GetParticlePosition(); bool GetShootStatus(); @@ -58,6 +62,7 @@ namespace NPS{ void SetParticleDefinition(G4ParticleDefinition*); void SetParticleThetaCM(double); void SetParticleKineticEnergy(double); + void SetParticleTimeDelay(double); void SetParticlePosition(G4ThreeVector); void SetParticleMomentumDirection(G4ThreeVector); void SetShootStatus(bool); diff --git a/NPSimulation/Core/ParticleStack.cc b/NPSimulation/Core/ParticleStack.cc index d71dc8767705f86b1a87dd5666ede2287623b858..50ae210bddc9c25fe515c9288edfead9091a26ff 100644 --- a/NPSimulation/Core/ParticleStack.cc +++ b/NPSimulation/Core/ParticleStack.cc @@ -113,7 +113,7 @@ void ParticleStack::AddBeamParticleToStack(NPS::Particle& particle){ m_InitialConditions-> SetIncidentParticleName (particle.GetParticleDefinition()->GetParticleName()); //m_InitialConditions-> SetIncidentInitialKineticEnergy (particle. GetParticleThetaCM()); m_InitialConditions-> SetIncidentInitialKineticEnergy (particle. GetParticleKineticEnergy()); - + G4ThreeVector U(1,0,0); G4ThreeVector V(0,1,0); @@ -273,6 +273,7 @@ void ParticleStack::ShootAllParticle(G4Event* anEvent){ m_particleGun->SetParticleEnergy(m_ParticleStack[i].GetParticleKineticEnergy()); m_particleGun->SetParticleMomentumDirection(m_ParticleStack[i].GetParticleMomentumDirection()); m_particleGun->SetParticlePosition(m_ParticleStack[i].GetParticlePosition()); + if(m_ParticleStack[i].GetParticleTimeDelay()) m_particleGun->SetParticleTime(m_ParticleStack[i].GetParticleTimeDelay()); m_particleGun->GeneratePrimaryVertex(anEvent); //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... m_InitialConditions-> SetParticleName ( m_ParticleStack[i].GetParticleDefinition()->GetParticleName()) ; diff --git a/NPSimulation/Core/PrimaryGeneratorAction.cc b/NPSimulation/Core/PrimaryGeneratorAction.cc index c061ec19943462ef39d7df6ff7f6b0df0d180045..e8f9fee632c59d403231171bdf0dd73ac0711e9b 100644 --- a/NPSimulation/Core/PrimaryGeneratorAction.cc +++ b/NPSimulation/Core/PrimaryGeneratorAction.cc @@ -42,6 +42,7 @@ // Event Generator Class #include "EventGeneratorIsotropic.hh" #include "EventGeneratorGEFReader.hh" +#include "EventGeneratorAlphaDecay.hh" #include "EventGeneratorCosmic.hh" #include "EventGeneratorMultipleParticle.hh" #include "EventGeneratorBeam.hh" @@ -99,6 +100,14 @@ void PrimaryGeneratorAction::ReadEventGeneratorFile(string Path){ m_EventGenerator.push_back(myEventGenerator); } blocks.clear(); + blocks = parser.GetAllBlocksWithToken("AlphaDecay"); + if (blocks.size()>0) { + NPS::VEventGenerator* myEventGenerator = new EventGeneratorAlphaDecay(); + myEventGenerator->ReadConfiguration(parser); + myEventGenerator->InitializeRootOutput(); + m_EventGenerator.push_back(myEventGenerator); + } + blocks.clear(); blocks = parser.GetAllBlocksWithToken("MultipleParticle"); if (blocks.size()>0) { NPS::VEventGenerator* myEventGenerator = new EventGeneratorMultipleParticle(); diff --git a/NPSimulation/Detectors/Epic/Epic.cc b/NPSimulation/Detectors/Epic/Epic.cc index 6501596fcc62ae09110cf211d2326d06816f5088..32f903c86743526b3ab302a42d538c39f6f37d19 100644 --- a/NPSimulation/Detectors/Epic/Epic.cc +++ b/NPSimulation/Detectors/Epic/Epic.cc @@ -360,6 +360,8 @@ G4AssemblyVolume* Epic::BuildEpic(){ double posZ_first_cathode = posZ_anode - 0.5*thickness_A*mm - m_Distance_AK*mm - 0.5*m_Thickness_K*mm; // build the stack of cathodes / actinide samples / anodes to do build sensitive gas + //double step_length_limit = m_Distance_AK*mm / 100.; + //G4UserLimits * user_limits = new G4UserLimits(step_length_limit*mm, 33.*mm, 1.*us, 0, 0); G4UserLimits * user_limits = new G4UserLimits(25.*um, 33.*mm, 1.*us, 0, 0); for(int i=0; i<m_nA; i++){ @@ -535,60 +537,132 @@ void Epic::ReadSensitive(const G4Event* ){ // GaseousDetector scorer GaseousDetectorScorers::PS_GaseousDetector* Scorer= (GaseousDetectorScorers::PS_GaseousDetector*) m_EpicScorer->GetPrimitive(0); + int previous_trackID = -1; unsigned int size = Scorer->GetMult(); for(unsigned int i = 0 ; i < size ; i++){ vector<unsigned int> level = Scorer->GetLevel(i); + //double Time = RandGauss::shoot(Scorer->GetTime(i),Epic_NS::ResoTime); //double Energy = RandGauss::shoot(Scorer->GetEnergy(i),Epic_NS::ResoEnergy); - double Energy = Scorer->GetEnergy(i); // Attention Energy of all particles (FF, alpha, e-, ...) + //double Energy = Scorer->GetEnergy(i); // Attention Energy of all particles (FF, alpha, e-, ...) vector<string> step_name = Scorer->GetParticleName(i); - vector<int> step_parentid = Scorer->GetParentID(i); - vector<int> step_trackid = Scorer->GetTrackID(i); + vector<int> step_trackID = Scorer->GetTrackID(i); vector<double> step_posZ = Scorer->GetStepPosZ(i); vector<double> step_DE = Scorer->GetEnergyLossPerStep(i); vector<double> step_time = Scorer->GetStepTime(i); - double influence = 0 ; - if(Energy>Epic_NS::EnergyThreshold){ - double Time = RandGauss::shoot(Scorer->GetTime(i),Epic_NS::ResoTime); - int Anode = level[0]; - - double thickness_A = 2*Epic_NS::Cu_Thickness*mm + Epic_NS::Kapton_Thickness*mm; - double posZ_anode = (1-m_nA)*(m_Distance_AK*mm + m_Thickness_K*mm) - std::trunc(0.5*m_nA)*(m_InterDistance_KK*mm + thickness_A); - posZ_anode += m_mapping_A[Anode] * (2. * (m_Distance_AK*mm + m_Thickness_K*mm) + m_InterDistance_KK*mm + thickness_A) ; - vector<string> name; - vector<int> parentid; - vector<int> trackid; - vector<double> z; - vector<double> de; - vector<double> dt; - - for(int j=0; j<step_name.size(); j++){ - //cout << "step #" << j << " , particle name = " << step_name.at(j) << " , z = " << step_posZ.at(j) << " , dE = " << step_DE.at(j) << " , t = " << step_time.at(j) << endl; - if(step_name.at(j)=="e-" || step_name.at(j)=="anti_nu_e") { - continue; - } - else{ // FF or alpha - //cout << "[FF or alpha]step #" << j << " , particle name = " << step_name.at(j) << " , z = " << step_posZ.at(j) << " , dE = " << step_DE.at(j) << " , t = " << step_time.at(j) << endl; - influence += step_DE.at(j) * TMath::Abs(step_posZ.at(j) - posZ_anode); - name.push_back(step_name.at(j)); - parentid.push_back(step_parentid.at(j)); - trackid.push_back(step_trackid.at(j)); - z.push_back(step_posZ.at(j)); - de.push_back(step_DE.at(j)); - dt.push_back(step_time.at(j) - Scorer->GetTime(i)); // dt = time from the first step in SensitiveVolume + int Anode = level[0]; + double thickness_A = 2*Epic_NS::Cu_Thickness*mm + Epic_NS::Kapton_Thickness*mm; + double posZ_anode = (1-m_nA)*(m_Distance_AK*mm + m_Thickness_K*mm) - std::trunc(0.5*m_nA)*(m_InterDistance_KK*mm + thickness_A); + posZ_anode += m_mapping_A[Anode] * (2. * (m_Distance_AK*mm + m_Thickness_K*mm) + m_InterDistance_KK*mm + thickness_A) ; + + // === Epic Data + int trackID = -1; + string name_pertrackID = ""; + double influence_pertrackID = 0; + double time_pertrackID = -1; + vector<double> dz; + vector<double> de; + vector<double> dt; + bool end_of_new_trackID = false ; + for(int j=0; j<step_name.size(); j++){ + + if(step_trackID.at(j) != previous_trackID){ + if(previous_trackID != -1) end_of_new_trackID = true; + else { + trackID = step_trackID.at(j); + name_pertrackID = step_name.at(j); + time_pertrackID = step_time.at(j); } + previous_trackID = step_trackID.at(j) ; } - m_Event->Set(m_mapping_A[Anode], // set anode number - influence / m_Distance_AK*mm, // set Q1 FF or alpha only - Energy, // set Q2 - Energy, // set Qmax - Time, // set Time - 0., // set TimeHF - 0., // set ToF - 0, // status FakeFission - name,parentid,trackid,z, de, dt); - } - } + + if(end_of_new_trackID == true || j==step_name.size()-1) { + if(name_pertrackID!="e-" && name_pertrackID!="anti_nu_e" && name_pertrackID!="gamma"){ + int num_bins = (int)(std::ceil( (m_Distance_AK-dz.at(dz.size()-1)) / (25.*um) )) ; + vector<double> rebinned_de(num_bins, 0.0); + vector<double> rebinned_dt(num_bins, 0.0); + vector<double> rebinned_mult(num_bins, 0.0); + vector<int> mult_electrons_per_step(num_bins, 0.0); + double bin_Limits[num_bins+1]; + for(int bin=0; bin<=num_bins; bin++) bin_Limits[bin] = m_Distance_AK*mm - bin * (25.*um); + + // first G4Step is always included in the first fix_length user bin + rebinned_de[0] += de[0]; + rebinned_dt[0] += dt.at(0); + rebinned_mult[0] += 1.; + + // loop over the G4Steps and assign the values to the fix-dz-length user bins + int bin_current = 0; + for(int step=1; step<dz.size()-1; step++){ + double dzmax = 0.5*(dz[step-1] + dz[step]); + double dzmin = 0.5*(dz[step+1] + dz[step]); + for(int bin=bin_current; bin<num_bins; bin++){ + bin_current = bin; + if(bin_Limits[bin] >= dzmax && dzmax > bin_Limits[bin+1] && bin_Limits[bin] > dzmin && dzmin >= bin_Limits[bin+1]){ + rebinned_de[bin] += de[step]; + rebinned_dt[bin] += dt[step]; + rebinned_mult[bin] += 1.; + break; + } + else if(bin<num_bins-1 && bin_Limits[bin] >= dzmax && dzmax > bin_Limits[bin+1] && bin_Limits[bin+1] > dzmin && dzmin >= bin_Limits[bin+2]){ + double weight = (dzmax-bin_Limits[bin+1])/(dzmax-dzmin); + rebinned_de[bin] += weight * de[step]; rebinned_de[bin+1] += (1.-weight) * de[step]; + rebinned_dt[bin] += weight * dt[step]; rebinned_dt[bin+1] += (1.-weight) * dt[step]; + rebinned_mult[bin] += weight ; rebinned_mult[bin+1] += 1. - weight ; + break; + } + } + } + + // last G4Step is always included in the last fix_length user bin + rebinned_de[num_bins-1] += de[dz.size()-1]; + rebinned_dt[num_bins-1] += dt[dz.size()-1]; + rebinned_mult[num_bins-1] += 1.; + + // fill vectors to be set in TEpicData structure + for(int i=0; i<num_bins; i++){ + if(rebinned_mult[i]>0) rebinned_dt[i] = rebinned_dt[i] / rebinned_mult[i] ; + mult_electrons_per_step[i] = ceil(rebinned_de[i]/45.);//// FIXME : replace 45. by the ionisation energy read in the configuration file + } + + m_Event->Set(trackID, + name_pertrackID, + m_mapping_A[Anode], // set anode number + influence_pertrackID, // set Q1 FF or alpha only + time_pertrackID, // set Time + mult_electrons_per_step, + rebinned_dt); + rebinned_de.clear(); + rebinned_mult.clear(); + mult_electrons_per_step.clear(); + rebinned_dt.clear(); + }// end of if !e- !anti_nu_e !gamma + trackID = step_trackID.at(j); + name_pertrackID = step_name.at(j); + influence_pertrackID = 0; + time_pertrackID = step_time.at(j); + dz.clear(); + de.clear(); + dt.clear(); + end_of_new_trackID = false; + } + double dz_anode = TMath::Abs(step_posZ.at(j) - posZ_anode) - 0.5*thickness_A ; // need to remove half thickness of Anode + influence_pertrackID += (step_DE.at(j) * dz_anode) / m_Distance_AK*mm; + dz.push_back(dz_anode); + de.push_back(step_DE.at(j)/eV); + dt.push_back(step_time.at(j)); + }// end of loop over j + }// end of loop over i + + //// FIXME : fill another event class FasterData with only the vectors sorted in time + //// FIXME : fill the FasterData + ///if(m_Event->GetMultiplicity()>0){ + /// // fill clean-up data to FasterData sorted by time and not by position + /// vector<double> dt_allTracks; + /// vector<double> dz_allTracks; + /// vector<double> de_allTracks; + ///} + } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/NPSimulation/Detectors/Minos/Minos.cc b/NPSimulation/Detectors/Minos/Minos.cc index ea4ac5d1c96bd5973945fde1e96236420a995aa3..fa7a020685483da841692bed2d64fad155628835 100644 --- a/NPSimulation/Detectors/Minos/Minos.cc +++ b/NPSimulation/Detectors/Minos/Minos.cc @@ -107,14 +107,15 @@ Minos::Minos() { m_ReactionRegion = NULL; // RGB Color + Transparency - m_VisTarget = new G4VisAttributes(G4Colour(0.6, 1., 1., .4)); - m_VissimpleBox = new G4VisAttributes(G4Colour(0, 1, 0, .6)); - m_VisTPC = new G4VisAttributes(G4Colour(1., 0.5, 0.6, 0.3)); - m_VisRohacell = new G4VisAttributes(G4Colour(1., 1., 1., .8)); - m_VisKapton = new G4VisAttributes(G4Colour(1., 1., 0.6, 0.4)); - m_VisTargetCell = new G4VisAttributes(G4Colour(0, 0, 1, .4)); + + m_VisTarget = new G4VisAttributes(G4Colour(0.6, 1., 1., 1.0)); + m_VissimpleBox = new G4VisAttributes(G4Colour(0, 1, 0, 0.6)); + m_VisTPC = new G4VisAttributes(G4Colour(1., 0.5, 0.6, 0.6)); + m_VisRohacell = new G4VisAttributes(G4Colour(1., 1., 1., 0.6)); + m_VisKapton = new G4VisAttributes(G4Colour(1., 1., 0.6, 0.6)); + m_VisTargetCell = new G4VisAttributes(G4Colour(0, 0, 1, 0.6)); m_VisTargetCell->SetForceSolid(true); - m_VisOuterKapton = new G4VisAttributes(G4Colour(1., 1., 0.6, 0.8)); + m_VisOuterKapton = new G4VisAttributes(G4Colour(1., 1., 0.6, 0.6)); Raw_Signal = new TH1F("raw_Signal", "raw_Signal", 512, 0, 512); Elec_Signal = new TH1F("Elec_Signal", "Elec_Signal", 512, 0, 512); @@ -374,9 +375,10 @@ void Minos::ConstructDetector(G4LogicalVolume* world) { double MinosX = Det_pos.x(); double MinosY = Det_pos.y(); double MinosZ = Det_pos.z() + m_TargetLength[i] / 2.; - + new G4PVPlacement(0, // its name - G4ThreeVector(0, 0, +ChamberLength / 2), + G4ThreeVector(MinosX, MinosY, Det_pos.z() +ChamberLength / 2), + //G4ThreeVector(0, 0, +ChamberLength / 2), /* G4ThreeVector(wX,wY, wZ + ChamberLength - m_TargetLength[i]-WindowThickness*2. - 5*mm ), // Z positioning putting TPC beginn and Target beginning w/ difference of 5mm */ BuildTPC(), // its logical volume diff --git a/NPSimulation/Detectors/Nebula/Nebula.cc b/NPSimulation/Detectors/Nebula/Nebula.cc index 40911278cba849c28fba93bfe112baadb8ced87e..e60d15eb0e865b7bce1ccbca8b070d80d5a04932 100644 --- a/NPSimulation/Detectors/Nebula/Nebula.cc +++ b/NPSimulation/Detectors/Nebula/Nebula.cc @@ -90,11 +90,10 @@ Nebula::Nebula(){ m_Module = 0; m_Veto = 0; - // RGB Color + Transparency m_VisModule = new G4VisAttributes(G4Colour(0.263, 0.682, 0.639, 1)); //m_VisModule = new G4VisAttributes(G4Colour(0.145, 0.384, 0.596, 1)); - m_VisVeto = new G4VisAttributes(G4Colour(0.4, 0.4, 0.4, 0.2)); + m_VisVeto = new G4VisAttributes(G4Colour(0.4, 0.4, 0.4, 0.8)); m_VisPMT = new G4VisAttributes(G4Colour(0.1, 0.1, 0.1, 1)); m_VisFrame = new G4VisAttributes(G4Colour(0, 0.3, 1, 0.5)); @@ -170,7 +169,7 @@ void Nebula::ReadConfiguration(NPL::InputParser parser){ } else if(blocks[i]->HasTokenList(xml)){ if(NPOptionManager::getInstance()->GetVerboseLevel()) - cout << endl << "//// Nebula XML file" << i+1 << endl; + cout << endl << "//// Nebula XML file " << i+1 << endl; std::string xml_file = blocks[i]->GetString("XML"); G4ThreeVector Offset = NPS::ConvertVector(blocks[i]->GetTVector3("Offset","mm")); bool InvertX = blocks[i]->GetInt("InvertX"); @@ -321,15 +320,15 @@ void Nebula::ReadSensitive(const G4Event* ){ Light_tmp = PlasticScorer_Module->GetLight(i); Energy = RandGauss::shoot(Energy_tmp, Energy_tmp*Nebula_NS::ResoEnergy); Light = RandGauss::shoot(Light_tmp, Light_tmp*Nebula_NS::ResoLight); - + if(Light>Nebula_NS::LightThreshold){ int DetectorNbr = level[0]; - double Position = RandGauss::shoot(PlasticScorer_Module->GetPosition(i),Nebula_NS::ResoPosition); - + double Position = RandGauss::shoot(PlasticScorer_Module->GetPositionY(i),Nebula_NS::ResoPosition); + m_Event->SetChargeUp(DetectorNbr,Light*exp(-(Nebula_NS::ModuleHeight/2-Position)/Nebula_NS::Attenuation)); m_Event->SetChargeDown(DetectorNbr,Light*exp(-(Nebula_NS::ModuleHeight/2+Position)/Nebula_NS::Attenuation)); - - // Take TOF and Position and compute Tup and Tdown + + // Take Time and Y Position and compute Tup and Tdown double Time = RandGauss::shoot(PlasticScorer_Module->GetTime(i),Nebula_NS::ResoTime); Time_up = (Nebula_NS::ModuleHeight/2-Position)/(c_light/Nebula_NS::MaterialIndex) + Time; @@ -341,24 +340,22 @@ void Nebula::ReadSensitive(const G4Event* ){ } //cout << endl; - - ///////////////////////////////// VETO SCORER ////////////////////////////////// - unsigned int VetoHits_size = PlasticScorer_Veto->GetMult(); + unsigned int VetoHits_size = PlasticScorer_Veto->GetMult(); for(unsigned int i = 0 ; i < VetoHits_size ; i++){ vector<unsigned int> level = PlasticScorer_Veto->GetLevel(i); Energy_tmp = PlasticScorer_Veto->GetEnergy(i); Light_tmp = PlasticScorer_Veto->GetLight(i); Energy = RandGauss::shoot(Energy_tmp, Energy_tmp*Nebula_NS::ResoEnergy); Light = RandGauss::shoot(Light_tmp, Light_tmp*Nebula_NS::ResoLight); - + if(Light>Nebula_NS::LightThreshold){ double Time = RandGauss::shoot(PlasticScorer_Veto->GetTime(i),Nebula_NS::ResoTime); //cout << "Time is " << Time << endl; - double Position = RandGauss::shoot(PlasticScorer_Veto->GetPosition(i),Nebula_NS::ResoPosition); + double Position = RandGauss::shoot(PlasticScorer_Veto->GetPositionY(i),Nebula_NS::ResoPosition); //cout << "Position is " << Position << endl; int DetectorNbr = level[0] + m_TotalModule; - //cout << "Veto ID: " << DetectorNbr << endl; + // cout << "Veto ID: " << DetectorNbr << endl; m_Event->SetChargeUp(DetectorNbr,Light*exp(-(Nebula_NS::VetoHeight/2-Position)/Nebula_NS::Attenuation)); m_Event->SetChargeDown(DetectorNbr,Light*exp(-(Nebula_NS::VetoHeight/2+Position)/Nebula_NS::Attenuation)); @@ -370,6 +367,7 @@ void Nebula::ReadSensitive(const G4Event* ){ Time_down = (Nebula_NS::VetoHeight/2+Position)/(c_light/Nebula_NS::MaterialIndex) + Time; //cout << "Time_down is " << Time_down << endl; m_Event->SetTimeDown(DetectorNbr,Time_down); + } } diff --git a/NPSimulation/Detectors/NeuLAND/CMakeLists.txt b/NPSimulation/Detectors/NeuLAND/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..b0931a90d4c1a27f6cc0a0955c9b9e82dea608c8 --- /dev/null +++ b/NPSimulation/Detectors/NeuLAND/CMakeLists.txt @@ -0,0 +1,2 @@ +add_library(NPSNeuLAND SHARED NeuLAND.cc) +target_link_libraries(NPSNeuLAND NPSCore ${ROOT_LIBRARIES} ${Geant4_LIBRARIES} ${NPLib_LIBRARIES} -lNPNeuLAND) diff --git a/NPSimulation/Detectors/NeuLAND/NeuLAND.cc b/NPSimulation/Detectors/NeuLAND/NeuLAND.cc new file mode 100644 index 0000000000000000000000000000000000000000..43aff6c7d0b8d7fbdd511bdc2665fbe45f1d6abd --- /dev/null +++ b/NPSimulation/Detectors/NeuLAND/NeuLAND.cc @@ -0,0 +1,493 @@ +/***************************************************************************** + * Copyright (C) 2009-2019 this file is part of the NPTool Project * + * * + * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * + * For the list of contributors see $NPTOOL/Licence/Contributors * + *****************************************************************************/ + +/***************************************************************************** + * Original Author: Adrien Matta contact address: matta@lpccaen.in2p3.fr * + * * + * Creation Date : December 2019 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: * + * This class describe NeuLAND simulation * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + *****************************************************************************/ + +// C++ headers +#include <sstream> +#include <cmath> +#include <limits> +//G4 Geometry object +#include "G4Tubs.hh" +#include "G4Box.hh" + +//G4 sensitive +#include "G4SDManager.hh" +#include "G4MultiFunctionalDetector.hh" + +//G4 various object +#include "G4Material.hh" +#include "G4MaterialPropertiesTable.hh" +#include "G4Transform3D.hh" +#include "G4PVPlacement.hh" +#include "G4VisAttributes.hh" +#include "G4Colour.hh" + +// NPTool header +#include "NeuLAND.hh" +#include "PlasticBar.hh" +#include "InteractionScorers.hh" +#include "ProcessScorers.hh" +#include "RootOutput.h" +#include "MaterialManager.hh" +#include "NPSDetectorFactory.hh" +#include "NPOptionManager.h" +#include "NPSHitsMap.hh" +// CLHEP header +#include "CLHEP/Random/RandGauss.h" + +using namespace std; +using namespace CLHEP; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +namespace NeuLAND_NS{ + // Energy and time Resolution + const double LightThreshold = 0.1*MeV; + const double ResoTime = 0.75/2.355*ns; //0.75 + const double ResoEnergy = 0.1/2.355*MeV; + const double ResoLight = 0.1/2.355*MeV; + const double ResoPosition = 1.0*um; //1.0 + const double ModuleWidth = 50*mm ; + const double ModuleLength = 50*mm ; + const double ModuleHeight = 2500*mm ; + const double InterModule = 1*mm ; + const double VetoWidth = 320*mm ; + const double VetoLength = 10*mm ; + const double VetoHeight = 1900*mm ; + const double InterVeto = 1*mm ; + const int VetoPerWall = 12; + const int VetoPerExpand = 6; + const double WallToVeto = 10*cm; + const double MaterialIndex = 1.58; + const double Attenuation = 6680*mm; + + const string Material = "BC400"; +} +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +// NeuLAND Specific Method +NeuLAND::NeuLAND(){ + m_Event = new TNeuLANDData() ; + m_ModuleScorer = 0; + m_VetoScorer = 0; + m_Module = 0; + m_Veto = 0; + + + // RGB Color + Transparency + m_VisModule = new G4VisAttributes(G4Colour(0.263, 0.682, 0.639, 0.3)); + //m_VisModule = new G4VisAttributes(G4Colour(0.145, 0.384, 0.596, 1)); + m_VisVeto = new G4VisAttributes(G4Colour(0.4, 0.4, 0.4, 0.8)); + m_VisPMT = new G4VisAttributes(G4Colour(0.1, 0.1, 0.1, 1)); + m_VisFrame = new G4VisAttributes(G4Colour(0, 0.3, 1, 0.5)); + +} + +NeuLAND::~NeuLAND(){ +} +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void NeuLAND::AddWall(G4ThreeVector Pos, int NbrModule, bool Veto, bool Frame){ + // Convert the Pos value to R theta Phi as Spherical coordinate is easier in G4 + m_Pos.push_back(Pos); + m_NbrModule.push_back(NbrModule); + m_HasVeto.push_back(Veto); + m_HasFrame.push_back(Frame); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +G4LogicalVolume* NeuLAND::BuildModule(){ + if(!m_Module){ + G4Box* box = new G4Box("NeuLAND_Module",NeuLAND_NS::ModuleWidth*0.5, + NeuLAND_NS::ModuleHeight*0.5,NeuLAND_NS::ModuleLength*0.5); + + G4Material* DetectorMaterial = MaterialManager::getInstance()->GetMaterialFromLibrary(NeuLAND_NS::Material); + m_Module = new G4LogicalVolume(box,DetectorMaterial,"logic_NeuLAND_Module",0,0,0); + m_Module->SetVisAttributes(m_VisModule); + m_Module->SetSensitiveDetector(m_ModuleScorer); + } + return m_Module; +} +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +G4LogicalVolume* NeuLAND::BuildVeto(){ + if(!m_Veto){ + G4Box* box = new G4Box("NeuLAND_Veto",NeuLAND_NS::VetoWidth*0.5, + NeuLAND_NS::VetoHeight*0.5,NeuLAND_NS::VetoLength*0.5); + + G4Material* DetectorMaterial = MaterialManager::getInstance()->GetMaterialFromLibrary(NeuLAND_NS::Material); + + m_Veto = new G4LogicalVolume(box,DetectorMaterial,"logic_NeuLAND_Veto",0,0,0); + m_Veto->SetVisAttributes(m_VisVeto); + m_Veto->SetSensitiveDetector(m_VetoScorer); + } + return m_Veto; +} + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +// Virtual Method of NPS::VDetector class + +// Read stream at Configfile to pick-up parameters of detector (Position,...) +// Called in DetectorConstruction::ReadDetectorConfiguration Method +void NeuLAND::ReadConfiguration(NPL::InputParser parser){ + vector<NPL::InputBlock*> blocks = parser.GetAllBlocksWithToken("NEULAND"); + if(NPOptionManager::getInstance()->GetVerboseLevel()) + cout << "//// " << blocks.size() << " detectors found " << endl; + + // define an entire wall + vector<string> wall = {"Pos","NumberOfModule","Veto","Frame"}; + + // use an experiment xml file to position bars individually + vector<string> xml= {"XML","Offset","InvertX","InvertY"}; + + for(unsigned int i = 0 ; i < blocks.size() ; i++){ + if(blocks[i]->HasTokenList(wall)){ + if(NPOptionManager::getInstance()->GetVerboseLevel()) + cout << endl << "//// NeuLAND " << i+1 << endl; + + G4ThreeVector Pos = NPS::ConvertVector(blocks[i]->GetTVector3("Pos","mm")); + int NbrModule = blocks[i]->GetInt("NumberOfModule"); + bool Veto = blocks[i]->GetInt("Veto"); + bool Frame= blocks[i]->GetInt("Frame"); + AddWall(Pos,NbrModule,Veto,Frame); + } + else if(blocks[i]->HasTokenList(xml)){ + if(NPOptionManager::getInstance()->GetVerboseLevel()) + cout << endl << "//// NeuLAND XML file " << i+1 << endl; + std::string xml_file = blocks[i]->GetString("XML"); + G4ThreeVector Offset = NPS::ConvertVector(blocks[i]->GetTVector3("Offset","mm")); + bool InvertX = blocks[i]->GetInt("InvertX"); + bool InvertY = blocks[i]->GetInt("InvertY"); + ReadXML(xml_file,Offset,InvertX,InvertY); + } + else{ + cout << "ERROR: check your input file formatting " << endl; + exit(1); + } + } + std::for_each(m_NbrModule.begin(), m_NbrModule.end(), [&] (int n) { + m_TotalModule += n; + }); +} + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void NeuLAND::ReadXML(std::string xml_file,G4ThreeVector offset, bool InvertX,bool InvertY){ + NPL::XmlParser xml; + xml.LoadFile(xml_file); + std::vector<NPL::XML::block*> b = xml.GetAllBlocksWithName("NEULAND"); + int NumberOfBars=0; + for(unsigned int i = 0 ; i < b.size() ; i++){ + NumberOfBars++; + unsigned int id = b[i]->AsInt("ID"); + + // position + auto PositionX = b[i]->AsDouble("xpos"); + //cout << "//// " << PositionX << " position en x " << endl; + auto PositionY = b[i]->AsDouble("ypos"); + //cout << "//// " << PositionY << " position en y " << endl; + auto PositionZ = b[i]->AsDouble("zpos"); + //cout << "//// " << PositionZ << " position en z " << endl; + //cout <<"============================" << endl; + + // SubLayer 0 is used for Veto + auto SubLayer = b[i]->AsInt("SubLayer"); + // Name "NoUseX" is used to silence bars + auto nousestr = b[i]->AsString("NAME"); + + auto DirectionBar = b[i]->AsString("direction"); + //cout << "direction des barres -> " << DirectionBar << endl; + // cout << "id = " << id << endl; + + // Remove unused bar + if(nousestr.find("NoUse")==std::string::npos && PositionX!=PositionZ){ + if(InvertX) + PositionX*=-1; + if(InvertY) + PositionY*=-1; + m_PositionBar[id]= G4ThreeVector(PositionX,PositionY,PositionZ)+offset; + + // Direction bar + if(DirectionBar.find("V")==std::string::npos) + {m_IsHorizontal[id] = true; + // cout << DirectionBar << endl; + } + else m_IsHorizontal[id] = false; + + // cout << " m_IsHorizontal[id] = " << m_IsHorizontal[id] << endl; + + if(SubLayer) + m_IsVetoBar[id]= false; + else + m_IsVetoBar[id]= true; + } + + } //end of for + cout << " -> " << NumberOfBars << " bars found" << endl; + + +} //end of ReadXML + +// Construct detector and inialise sensitive part. +// Called After DetectorConstruction::AddDetector Method +void NeuLAND::ConstructDetector(G4LogicalVolume* world){ + + // Start with XML case + G4RotationMatrix* Rot = new G4RotationMatrix(); + + for(auto pos : m_PositionBar){ + + //cout << "m_IsHorizontal " << m_IsHorizontal[pos.first] << endl; + + if(m_IsHorizontal[pos.first]) + { + Rot->rotateZ(90.*deg); + } + + + + if(!m_IsVetoBar[pos.first]){ + new G4PVPlacement(G4Transform3D(*Rot,pos.second), + BuildModule(), + "NeuLANDModule",world,false,pos.first); + } + else{ + new G4PVPlacement(G4Transform3D(*Rot,pos.second), + BuildVeto(), + "NeuLANDModule",world,false,pos.first); //"NeuLANDVeto" + } + + Rot->set(0,0,0); + } + + + //Not XML + unsigned int nbrM = 1 ; + unsigned int nbrV = 1 ; + + for (unsigned short i = 0 ; i < m_Pos.size() ; i++) { + for (unsigned short m = 0 ; m < m_NbrModule[i] ; m++) { + double offset = (NeuLAND_NS::ModuleWidth+NeuLAND_NS::InterModule)*(-m_NbrModule[i]*0.5+m)+NeuLAND_NS::ModuleWidth*0.5; + G4ThreeVector Offset(offset,0,0); + new G4PVPlacement(G4Transform3D(*Rot,m_Pos[i]+Offset), + BuildModule(), + "NeuLANDModule",world,false,nbrM++); + } + + if(m_HasVeto[i]){ + if(m_NbrModule[i] > 15){ + for (unsigned short m = 0 ; m < NeuLAND_NS::VetoPerWall ; m++) { + double offset = (NeuLAND_NS::VetoWidth+NeuLAND_NS::InterVeto)*(-NeuLAND_NS::VetoPerWall*0.5+m)+NeuLAND_NS::VetoWidth*0.5; + G4ThreeVector Offset(offset,0,-NeuLAND_NS::WallToVeto); + new G4PVPlacement(G4Transform3D(*Rot,m_Pos[i]+Offset), + BuildVeto(), + "NeuLANDVeto",world,false,nbrV++); + } + } + else{ + for (unsigned short m = 0 ; m < NeuLAND_NS::VetoPerExpand ; m++) { + double offset = (NeuLAND_NS::VetoWidth+NeuLAND_NS::InterVeto)*(-NeuLAND_NS::VetoPerExpand*0.5+m)+NeuLAND_NS::VetoWidth*0.5; + G4ThreeVector Offset(offset,0,-NeuLAND_NS::WallToVeto); + new G4PVPlacement(G4Transform3D(*Rot,m_Pos[i]+Offset), + BuildVeto(), + "NeuLANDVeto",world,false,nbrV++); + } + } + } + } +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +// Add Detector branch to the EventTree. +// Called After DetectorConstruction::AddDetector Method +void NeuLAND::InitializeRootOutput(){ + RootOutput *pAnalysis = RootOutput::getInstance(); + TTree *pTree = pAnalysis->GetTree(); + if(!pTree->FindBranch("NeuLAND")){ + pTree->Branch("NeuLAND", "TNeuLANDData",&m_Event) ; + } + pTree->SetBranchAddress("NeuLAND", &m_Event) ; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +// Read sensitive part and fill the Root tree. +// Called at in the EventAction::EndOfEventAvtion +void NeuLAND::ReadSensitive(const G4Event* ){ + m_Event->Clear(); + + /////////// + // PlasticBar scorer + PlasticBar::PS_PlasticBar* PlasticScorer_Module = (PlasticBar::PS_PlasticBar*) m_ModuleScorer->GetPrimitive(0); + PlasticBar::PS_PlasticBar* PlasticScorer_Veto = (PlasticBar::PS_PlasticBar*) m_VetoScorer->GetPrimitive(0); + // Should we put a ProcessScorer here to get the info if the particle is first neutron and give it to NeuLANDData ? + + double Time_up, Time_down; + double Energy_tmp, Light_tmp; + + //////////// TRIAL TO GET THE OPTICAL INDEX FROM MATERIAL PROPERTIES ///////////// + //Trying to get Optical Index from Material directly + //const G4Material* aMaterial = MaterialManager::getInstance()->GetMaterialFromLibrary(NeuLAND_NS::Material); + //G4MaterialPropertiesTable* aMaterialPropertiesTable = aMaterial->GetMaterialPropertiesTable(); + //if(!aMaterialPropertiesTable->PropertyExists("RINDEX")){ + // MaterialIndex = !aMaterialPropertiesTable->GetConstProperty("RINDEX"); + //} + //else{ + // MaterialIndex = 0; + //} + //cout << MaterialManager::getInstance()->GetMaterialFromLibrary(NeuLAND_NS::Material)->GetMaterialPropertiesTable()->GetMaterialPropertyNames()[0] << endl; + ////////////////////////////////////////////////////////////////////////////////// + + ///////////////////////////////// MODULE SCORER ////////////////////////////////// + unsigned int ModuleHits_size = PlasticScorer_Module->GetMult(); + for(unsigned int i = 0 ; i < ModuleHits_size ; i++){ + vector<unsigned int> level = PlasticScorer_Module->GetLevel(i); + Energy_tmp = PlasticScorer_Module->GetEnergy(i); + Light_tmp = PlasticScorer_Module->GetLight(i); + Energy = RandGauss::shoot(Energy_tmp, Energy_tmp*NeuLAND_NS::ResoEnergy); + Light = RandGauss::shoot(Light_tmp, Light_tmp*NeuLAND_NS::ResoLight); + + if(Light>NeuLAND_NS::LightThreshold){ + int DetectorNbr = level[0]; + double PositionY = RandGauss::shoot(PlasticScorer_Module->GetPositionY(i),NeuLAND_NS::ResoPosition); + double PositionX = RandGauss::shoot(PlasticScorer_Module->GetPositionX(i),NeuLAND_NS::ResoPosition); + + + double Position; + + if((1<=DetectorNbr and DetectorNbr <=50) or (101<=DetectorNbr and DetectorNbr<=150) or (201<=DetectorNbr and DetectorNbr<=250) or (301<=DetectorNbr and DetectorNbr<=350) ) + { + Position = PositionX; + } + + else + { + Position = PositionY; + } + + //cout << "--------------" << endl; + m_Event->SetChargeUp(DetectorNbr,Light*exp(-(NeuLAND_NS::ModuleHeight/2-Position)/NeuLAND_NS::Attenuation)); + m_Event->SetChargeDown(DetectorNbr,Light*exp(-(NeuLAND_NS::ModuleHeight/2+Position)/NeuLAND_NS::Attenuation)); + + // Take Time and Position and compute Tup and Tdown + double Time = RandGauss::shoot(PlasticScorer_Module->GetTime(i),NeuLAND_NS::ResoTime); + + Time_up = (NeuLAND_NS::ModuleHeight/2-Position)/(c_light/NeuLAND_NS::MaterialIndex) + Time; + m_Event->SetTimeUp(DetectorNbr,Time_up); + + Time_down = (NeuLAND_NS::ModuleHeight/2+Position)/(c_light/NeuLAND_NS::MaterialIndex) + Time; + m_Event->SetTimeDown(DetectorNbr,Time_down); + } + } + + ///////////////////////////////// VETO SCORER ////////////////////////////////// + unsigned int VetoHits_size = PlasticScorer_Veto->GetMult(); + for(unsigned int i = 0 ; i < VetoHits_size ; i++){ + vector<unsigned int> level = PlasticScorer_Veto->GetLevel(i); + Energy_tmp = PlasticScorer_Veto->GetEnergy(i); + Light_tmp = PlasticScorer_Veto->GetLight(i); + Energy = RandGauss::shoot(Energy_tmp, Energy_tmp*NeuLAND_NS::ResoEnergy); + Light = RandGauss::shoot(Light_tmp, Light_tmp*NeuLAND_NS::ResoLight); + + if(Light>NeuLAND_NS::LightThreshold){ + double Time = RandGauss::shoot(PlasticScorer_Veto->GetTime(i),NeuLAND_NS::ResoTime); + //cout << "Time is " << Time << endl; + double Position = RandGauss::shoot(PlasticScorer_Veto->GetPositionY(i),NeuLAND_NS::ResoPosition); + //cout << "Position is " << Position << endl; + int DetectorNbr = level[0] + m_TotalModule; + //cout << "Veto ID: " << DetectorNbr << endl; + + m_Event->SetChargeUp(DetectorNbr,Light*exp(-(NeuLAND_NS::VetoHeight/2-Position)/NeuLAND_NS::Attenuation)); + m_Event->SetChargeDown(DetectorNbr,Light*exp(-(NeuLAND_NS::VetoHeight/2+Position)/NeuLAND_NS::Attenuation)); + + Time_up = (NeuLAND_NS::VetoHeight/2-Position)/(c_light/NeuLAND_NS::MaterialIndex) + Time; + //cout << "Time_up is " << Time_up << endl; + m_Event->SetTimeUp(DetectorNbr,Time_up); + + Time_down = (NeuLAND_NS::VetoHeight/2+Position)/(c_light/NeuLAND_NS::MaterialIndex) + Time; + //cout << "Time_down is " << Time_down << endl; + m_Event->SetTimeDown(DetectorNbr,Time_down); + } + } + + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//////////////////////////////////////////////////////////////// +void NeuLAND::InitializeScorers() { + // This check is necessary in case the geometry is reloaded + bool already_exist = false; + m_ModuleScorer = CheckScorer("NeuLANDModuleScorer",already_exist) ; + m_VetoScorer = CheckScorer("NeuLANDVetoScorer",already_exist) ; + + if(already_exist) + return ; + + // Otherwise the scorer is initialise + // Module + vector<int> level; level.push_back(0); + G4VPrimitiveScorer* ModulePlasticBar= new PlasticBar::PS_PlasticBar("ModulePlasticBar",level, 0); + G4VPrimitiveScorer* ModuleInteraction= new InteractionScorers::PS_Interactions("ModuleInteraction",ms_InterCoord, 0); + G4VPrimitiveScorer* ModuleProcess= new ProcessScorers::PS_Process("ModuleProcess", 0); + //and register it to the multifunctionnal detector + m_ModuleScorer->RegisterPrimitive(ModulePlasticBar); + m_ModuleScorer->RegisterPrimitive(ModuleInteraction); + m_ModuleScorer->RegisterPrimitive(ModuleProcess); + G4SDManager::GetSDMpointer()->AddNewDetector(m_ModuleScorer) ; + + // Veto + G4VPrimitiveScorer* VetoPlasticBar= new PlasticBar::PS_PlasticBar("VetoPlasticBar",level, 0); + G4VPrimitiveScorer* VetoInteraction= new InteractionScorers::PS_Interactions("VetoInteraction",ms_InterCoord, 0); + G4VPrimitiveScorer* VetoProcess= new ProcessScorers::PS_Process("ModuleProcess", 0); + //and register it to the multifunctionnal detector + m_VetoScorer->RegisterPrimitive(VetoPlasticBar); + m_VetoScorer->RegisterPrimitive(VetoInteraction); + m_VetoScorer->RegisterPrimitive(VetoProcess); + G4SDManager::GetSDMpointer()->AddNewDetector(m_VetoScorer) ; + + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//////////////////////////////////////////////////////////////////////////////// +// Construct Method to be pass to the DetectorFactory // +//////////////////////////////////////////////////////////////////////////////// +NPS::VDetector* NeuLAND::Construct(){ + return (NPS::VDetector*) new NeuLAND(); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//////////////////////////////////////////////////////////////////////////////// +// Registering the construct method to the factory // +//////////////////////////////////////////////////////////////////////////////// +extern"C" { + class proxy_nps_NeuLAND{ + public: + proxy_nps_NeuLAND(){ + NPS::DetectorFactory::getInstance()->AddToken("NEULAND","NEULAND"); + NPS::DetectorFactory::getInstance()->AddDetector("NEULAND",NeuLAND::Construct); + } + }; + + proxy_nps_NeuLAND p_nps_NeuLAND; +} diff --git a/NPSimulation/Detectors/NeuLAND/NeuLAND.hh b/NPSimulation/Detectors/NeuLAND/NeuLAND.hh new file mode 100644 index 0000000000000000000000000000000000000000..5b7a20ce73bf0e6024b38e10de7f3cce2e6c9511 --- /dev/null +++ b/NPSimulation/Detectors/NeuLAND/NeuLAND.hh @@ -0,0 +1,124 @@ +#ifndef NeuLAND_h +#define NeuLAND_h 1 +/***************************************************************************** + * Copyright (C) 2009-2019 this file is part of the NPTool Project * + * * + * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * + * For the list of contributors see $NPTOOL/Licence/Contributors * + *****************************************************************************/ + +/***************************************************************************** + * Original Author: Adrien Matta contact address: matta@lpccaen.in2p3.fr * + * * + * Creation Date : December 2019 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: * + * This class describe NeuLAND simulation * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + *****************************************************************************/ + +// C++ header +#include <string> +#include <vector> +#include <map> +using namespace std; + +// G4 headers +#include "G4ThreeVector.hh" +#include "G4RotationMatrix.hh" +#include "G4LogicalVolume.hh" +#include "G4MultiFunctionalDetector.hh" + +// NPTool header +#include "NPSVDetector.hh" +#include "TNeuLANDData.h" +#include "NPInputParser.h" +#include "NPXmlParser.h" + +class NeuLAND : public NPS::VDetector{ + //////////////////////////////////////////////////// + /////// Default Constructor and Destructor ///////// + //////////////////////////////////////////////////// + public: + NeuLAND() ; + virtual ~NeuLAND() ; + + //////////////////////////////////////////////////// + //////// Specific Function of this Class /////////// + //////////////////////////////////////////////////// + public: + // Cartesian + void AddWall(G4ThreeVector POS, int NbrModule,bool veto,bool frame); + void ReadXML(std::string xml_file,G4ThreeVector offset, bool InvertX,bool InvertY); + + G4LogicalVolume* BuildModule(); + G4LogicalVolume* BuildVeto(); + + private: + std::map<unsigned int , G4ThreeVector> m_PositionBar; + std::map<unsigned int , bool> m_IsVetoBar; + std::map<unsigned int , bool> m_IsHorizontal; + G4LogicalVolume* m_Module; + G4LogicalVolume* m_Veto; + double Energy; + double Light; + + //////////////////////////////////////////////////// + ////// Inherite from NPS::VDetector class ///////// + //////////////////////////////////////////////////// + public: + // Read stream at Configfile to pick-up parameters of detector (Position,...) + // Called in DetecorConstruction::ReadDetextorConfiguration Method + void ReadConfiguration(NPL::InputParser) ; + + // Construct detector and inialise sensitive part. + // Called After DetecorConstruction::AddDetector Method + void ConstructDetector(G4LogicalVolume* world) ; + + // Add Detector branch to the EventTree. + // Called After DetectorConstruction::AddDetector Method + void InitializeRootOutput() ; + + // Read sensitive part and fill the Root tree. + // Called at in the EventAction::EndOfEventAvtion + void ReadSensitive(const G4Event* event) ; + + public: // Scorer + // Initialize all Scorer used by the MUST2Array + void InitializeScorers() ; + + // Associated Scorer + G4MultiFunctionalDetector* m_ModuleScorer ; + G4MultiFunctionalDetector* m_VetoScorer ; + //////////////////////////////////////////////////// + ///////////Event class to store Data//////////////// + //////////////////////////////////////////////////// + private: + TNeuLANDData* m_Event ; + + //////////////////////////////////////////////////// + ///////////////Private intern Data////////////////// + //////////////////////////////////////////////////// + private: // Geometry + // Detector Coordinate + vector<G4ThreeVector> m_Pos; + vector<int> m_NbrModule; + int m_TotalModule = 0; + vector<bool> m_HasVeto; + vector<bool> m_HasFrame; + + // Visualisation Attribute + G4VisAttributes* m_VisModule; + G4VisAttributes* m_VisVeto; + G4VisAttributes* m_VisPMT; + G4VisAttributes* m_VisFrame; + + // Needed for dynamic loading of the library + public: + static NPS::VDetector* Construct(); +}; +#endif diff --git a/NPSimulation/Detectors/Samurai/CMakeLists.txt b/NPSimulation/Detectors/Samurai/CMakeLists.txt index c77d1a47210d739baf592595c3fd6c6187abcf33..0723c223478e13cc1751493c1ffea4b11eb1d510 100644 --- a/NPSimulation/Detectors/Samurai/CMakeLists.txt +++ b/NPSimulation/Detectors/Samurai/CMakeLists.txt @@ -1,2 +1,2 @@ -add_library(NPSSamurai SHARED Samurai.cc SamuraiFieldPropagation.cc SamuraiFDC2.cc SamuraiFDC1.cc) +add_library(NPSSamurai SHARED Samurai.cc SamuraiFieldPropagation.cc SamuraiFDC2.cc SamuraiFDC1.cc SamuraiFDC0.cc SamuraiBDC.cc) target_link_libraries(NPSSamurai NPSCore ${ROOT_LIBRARIES} ${Geant4_LIBRARIES} ${NPLib_LIBRARIES} -lNPSamurai) diff --git a/NPSimulation/Detectors/Samurai/Samurai.cc b/NPSimulation/Detectors/Samurai/Samurai.cc index 92da9b578022c6d2181756c6c7612959ce89451f..8353824cde6b10545018335e26a0c610c3497ce5 100644 --- a/NPSimulation/Detectors/Samurai/Samurai.cc +++ b/NPSimulation/Detectors/Samurai/Samurai.cc @@ -68,7 +68,7 @@ namespace Samurai_NS{ //Main outer box const double Magnet_Width = 6700*mm; //(x) const double Magnet_Height = 4640*mm;//(y) - const double Magnet_Depth = 6000*mm;//(z) + const double Magnet_Depth = 4950*mm;//(z) //If depth is larger, it overlaps on FDC2 const double Magnet_Depth_eps = 0.2*mm; //(delta-z) const string Magnet_Material = "G4_Galactic"; //G4_Galactic @@ -113,11 +113,17 @@ namespace Samurai_NS{ Samurai::Samurai(){ //Visualization attributes - m_VisMagnet = new G4VisAttributes(G4Colour(0,0,1,0.5)); - m_VisYokes = new G4VisAttributes(G4Colour(0,1,0,0.5)); - m_VisRYokes = new G4VisAttributes(G4Colour(1,0,0,0.5)); - m_VisPropvol = new G4VisAttributes(G4Colour(0,1,1,0.5)); + m_VisMagnet = new G4VisAttributes(G4Colour(0,0,1,0.2)); + m_VisYokes = new G4VisAttributes(G4Colour(0,1,0,0.2)); + m_VisRYokes = new G4VisAttributes(G4Colour(1,0,0,0.2)); + m_VisPropvol = new G4VisAttributes(G4Colour(0,1,1,0.2)); + + // m_VisMagnet = new G4VisAttributes(G4Colour(0,0,1,0.0)); + // m_VisYokes = new G4VisAttributes(G4Colour(0,1,0,0.0)); + // m_VisRYokes = new G4VisAttributes(G4Colour(1,0,0,0.0)); + // m_VisPropvol = new G4VisAttributes(G4Colour(0,1,1,0.0)); + //Logical volumes m_Magnet = NULL; m_Yoke = NULL; @@ -213,6 +219,7 @@ G4LogicalVolume* Samurai::BuildMagnet(){ m_Magnet->SetVisAttributes(m_VisMagnet); m_Magnet->SetSensitiveDetector(m_SamuraiScorer); cout << "ATTACHING SCORER\n"; + } return m_Magnet; } @@ -231,6 +238,7 @@ G4LogicalVolume* Samurai::BuildYoke(){ //Logical Volume m_Yoke = new G4LogicalVolume(yoke, YokeMaterial, "logic_Samurai_yoke",0,0,0); m_Yoke->SetVisAttributes(m_VisYokes); + } return m_Yoke; } @@ -405,7 +413,7 @@ void Samurai::SetPropagationRegion(){ if(!m_PropagationRegion){ m_PropagationRegion= new G4Region("NPSamuraiFieldPropagation"); m_PropagationRegion -> AddRootLogicalVolume(BuildPropvol()); - m_PropagationRegion->SetUserLimits(new G4UserLimits(m_StepSize)); + m_PropagationRegion->SetUserLimits(new G4UserLimits(m_StepSize)); } G4FastSimulationManager* mng = m_PropagationRegion->GetFastSimulationManager(); diff --git a/NPSimulation/Detectors/Samurai/SamuraiBDC.cc b/NPSimulation/Detectors/Samurai/SamuraiBDC.cc new file mode 100644 index 0000000000000000000000000000000000000000..4288a4cc5332bc8412c77d78c1b00eb0d3a48fbf --- /dev/null +++ b/NPSimulation/Detectors/Samurai/SamuraiBDC.cc @@ -0,0 +1,455 @@ +/***************************************************************************** + * Copyright (C) 2009-2021 this file is part of the NPTool Project * + * * + * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * + * For the list of contributors see $NPTOOL/Licence/Contributors * + *****************************************************************************/ + +/***************************************************************************** + * Original Author: Audrey ANNE contact address: anne@lpccaen.in2p3.fr * + * * + * Creation Date : * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: * + * This class describe Samurai BDCs simulation * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + *****************************************************************************/ + +// C++ headers +#include <sstream> +#include <cmath> + +//G4 Geometry object +#include "G4Box.hh" +#include "G4Tubs.hh" + +//G4 sensitive +#include "G4SDManager.hh" +#include "G4MultiFunctionalDetector.hh" + +//G4 various object +#include "G4Material.hh" +#include "G4Transform3D.hh" +#include "G4PVPlacement.hh" +#include "G4VisAttributes.hh" +#include "G4Colour.hh" +#include "G4RegionStore.hh" + +// NPTool header +#include "SamuraiBDC.hh" +#include "RootOutput.h" +#include "MaterialManager.hh" +#include "NPSDetectorFactory.hh" +#include "NPOptionManager.h" +#include "NPSHitsMap.hh" +// CLHEP header +#include "CLHEP/Random/RandGauss.h" + +#include "WireScorers.hh" + +#include "G4TwoVector.hh" +#include "G4ExtrudedSolid.hh" + +using namespace std; +using namespace CLHEP; + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +namespace SamuraiBDC_NS{ + // Samurai magnet construction paramethers + + //Main outer box + const double BDC_Width = 94*mm; //(x) + const double BDC_Height = 94*mm;//(y) + const double BDC_Depth = 90*mm;//(z) + const string BDC_Gas = "CH4_60_He_40"; + + const double BDC_Temperature = 298.15; // K + const double BDC_Pressure = 1.0; //atm + + //Detector Number + const short int BDC_DetectorNumber = 1; + + //Wires + const double Wire_Length = 80*mm; + const double Wire_Diameter = 4.8*mm; + const string Wire_Gas = "CH4_60_He_40"; + const double Wire_Temperature = 298.15; // K + const double Wire_Pressure = 1.0; //atm + const int Number_Of_Layer = 8; // from 0 to 7 in the xml file + const int Number_Of_Wire_By_Layer = 16; // from 0 to 15 in the xml file + const double Drift_Speed = 1.33e-4;//------> FIX ME!!! not important (yet) + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +// Samurai Specific Method +SamuraiBDC::SamuraiBDC(){ + + //Visualization attributes + m_VisBDC = new G4VisAttributes(G4Colour(1,1,0,0.5)); + //Logical volumes + m_BDC1 = NULL; + m_BDC2 = NULL; + + //Wire + m_VisWire = new G4VisAttributes(G4Colour(1.0,0,0.0,1.0)); + //Logical volumes + m_Wire = NULL; + //Scorer + m_WireScorerBDC = NULL; + + //Data event + m_Event = new TSamuraiBDCData; + + //Hexagon + m_Hexagon = NULL; + +} + +SamuraiBDC::~SamuraiBDC(){ +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void SamuraiBDC::AddDetector(G4ThreeVector Mag_Pos, G4ThreeVector Offset, unsigned int det){ + + m_position[det] = Mag_Pos + Offset; + + return; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4LogicalVolume* SamuraiBDC::BuildBDC1(){ + if(!m_BDC1){ + //Shape - G4Box + G4Box* box = new G4Box("BDC_Box",SamuraiBDC_NS::BDC_Width*0.5, + SamuraiBDC_NS::BDC_Height*0.5,SamuraiBDC_NS::BDC_Depth*0.5); + + //Material - Gas + G4Material* Gas = MaterialManager::getInstance()->GetGasFromLibrary(SamuraiBDC_NS::BDC_Gas, SamuraiBDC_NS::BDC_Pressure,SamuraiBDC_NS::BDC_Temperature); + + //Logical Volume + m_BDC1 = new G4LogicalVolume(box, Gas, "logic_SamuraiBDC_box",0,0,0); + m_BDC1->SetVisAttributes(m_VisBDC); + } + return m_BDC1; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4LogicalVolume* SamuraiBDC::BuildBDC2(){ + if(!m_BDC2){ + //Shape - G4Box + G4Box* box = new G4Box("BDC_Box",SamuraiBDC_NS::BDC_Width*0.5, + SamuraiBDC_NS::BDC_Height*0.5,SamuraiBDC_NS::BDC_Depth*0.5); + + //Material - Gas + G4Material* Gas = MaterialManager::getInstance()->GetGasFromLibrary(SamuraiBDC_NS::BDC_Gas, SamuraiBDC_NS::BDC_Pressure,SamuraiBDC_NS::BDC_Temperature); + + //Logical Volume + m_BDC2 = new G4LogicalVolume(box, Gas, "logic_SamuraiBDC_box",0,0,0); + m_BDC2->SetVisAttributes(m_VisBDC); + } + return m_BDC2; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +G4LogicalVolume* SamuraiBDC::BuildWire(){ +if(!m_Wire){ + //Shape - G4Tubs + G4Tubs* solidWire = new G4Tubs("BDC_Wire", 0.0, SamuraiBDC_NS::Wire_Diameter*0.5,SamuraiBDC_NS::Wire_Length*0.5, 0., 360.); + + //Material - Gas + G4Material* GasWire = MaterialManager::getInstance()->GetGasFromLibrary(SamuraiBDC_NS::Wire_Gas, SamuraiBDC_NS::Wire_Pressure,SamuraiBDC_NS::Wire_Temperature); + + //Logical Volume + m_Wire = new G4LogicalVolume(solidWire, GasWire, "logic_SamuraiWire_tub",0,0,0); + m_Wire->SetVisAttributes(m_VisWire); + m_Wire->SetSensitiveDetector(m_WireScorerBDC); + + } + return m_Wire; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +G4LogicalVolume* SamuraiBDC::BuildHexagon(){ +if(!m_Hexagon){ + //Shape + + const G4int nsect = 6; + std::vector<G4TwoVector> polygon(nsect); + G4double ang = twopi/nsect; + + G4double dz = SamuraiBDC_NS::Wire_Length*0.5; + G4double rmax = SamuraiBDC_NS::Wire_Diameter*0.5; + + for (G4int i = 0; i < nsect; ++i) + { + G4double phi = i*ang; + G4double cosphi = std::cos(phi); + G4double sinphi = std::sin(phi); + polygon[i].set(rmax*cosphi, rmax*sinphi); + } + + G4TwoVector offsetA(0,0), offsetB(0,0); + G4double scaleA = 1, scaleB = 1; + G4VSolid* solidHexagon = new G4ExtrudedSolid("Extruded", polygon, dz, offsetA, scaleA, offsetB, scaleB); + + + + //Material - Gas + G4Material* GasWire = MaterialManager::getInstance()->GetGasFromLibrary(SamuraiBDC_NS::Wire_Gas, SamuraiBDC_NS::Wire_Pressure,SamuraiBDC_NS::Wire_Temperature); + + //Logical Volume + m_Hexagon = new G4LogicalVolume(solidHexagon, GasWire, "logic_SamuraiWire_tub",0,0,0); + m_Hexagon->SetVisAttributes(m_VisWire); + m_Hexagon->SetSensitiveDetector(m_WireScorerBDC); + + } + return m_Hexagon; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +// Virtual Method of NPS::VDetector class +// Read stream at Configfile to pick-up parameters of detector (Position,...) +// (Called in DetecorConstruction::ReadDetectorConfiguration Method) +void SamuraiBDC::ReadConfiguration(NPL::InputParser parser){ + + vector<NPL::InputBlock*> blocks = parser.GetAllBlocksWithToken("SAMURAIBDC"); + if(NPOptionManager::getInstance()->GetVerboseLevel()) + cout << "//// " << blocks.size() << " BDC detector(s) found " << endl; + + vector<string> xml = {"XML","Offset", "InvertX","InvertY","InvertD"}; + + G4ThreeVector Mag_Pos; + G4ThreeVector Offset; + + for(unsigned int i = 0 ; i < blocks.size() ; i++){ + if(blocks[i]->HasTokenList(xml)) + { + cout << endl << "//// Samurai BDC (" << i+1 << ")" << endl; + unsigned int det = std::atoi(blocks[i]->GetMainValue().c_str());//1 or 2 + string xml_file = blocks[i]->GetString("XML"); + Offset = NPS::ConvertVector(blocks[i]->GetTVector3("Offset", "mm")); + bool invert_x = blocks[i]->GetInt("InvertX"); + bool invert_y = blocks[i]->GetInt("InvertY"); + bool invert_d = blocks[i]->GetInt("InvertD"); + m_offset[det] = Offset; + m_invertX[det] = invert_x; + m_invertY[det] = invert_y; + m_invertD[det] = invert_d; + ReadXML(xml_file,Offset,invert_y,invert_y,det); + AddDetector(Mag_Pos, Offset, det); + } + + else{ + cout << "ERROR: check your XML input file for BDC detector" << endl; + exit(1); + }//end exception + + } + +}//end read configuration + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//////////////////// nouveau /////////////////// +void SamuraiBDC::ReadXML(std::string xml_file,G4ThreeVector offset, bool InvertX,bool InvertY,unsigned int det){ + NPL::XmlParser xml; + xml.LoadFile(xml_file); + + std::string name = "SAMURAIBDC"+NPL::itoa(det); + std::vector<NPL::XML::block*> b = xml.GetAllBlocksWithName(name); + + int NumberOfWires=0; + for(unsigned int i = 0 ; i < b.size() ; i++){ + NumberOfWires++; + + // Wire ID in general + auto ID = b[i]->AsInt("ID"); + + // Layer Number + auto LayerNbr = b[i]->AsInt("layer"); + + // Wire direction + auto DirectionWire = b[i]->AsString("anodedir"); + //Wire id in the layer + auto WireNbr = b[i]->AsInt("wireid"); + + //Wire x or y position + auto PositionXY = b[i]->AsDouble("wirepos"); + auto PositionZ = b[i]->AsDouble("wirez"); + + if(det==1) + { + // position wire and direction wire for BDC1 + if(DirectionWire.find("Y")==std::string::npos){ // if not horizontal + m_PositionWire1[ID] = G4ThreeVector(PositionXY,0.0,PositionZ); + m_IsHorizontal1[ID] = false; + } + else { + m_PositionWire1[ID] = G4ThreeVector(0.0,PositionXY,PositionZ); + m_IsHorizontal1[ID] = true; + } + + m_LayerNbr1[ID] = LayerNbr; + m_WireNbr1[ID] = WireNbr; + }//end det==1 + + else if(det==2) + { + // position wire and direction wire for BDC2 + if(DirectionWire.find("Y")==std::string::npos){ // if not horizontal + m_PositionWire2[ID] = G4ThreeVector(PositionXY,0.0,PositionZ); + m_IsHorizontal2[ID] = false; + } + else { + m_PositionWire2[ID] = G4ThreeVector(0.0,PositionXY,PositionZ); + m_IsHorizontal2[ID] = true; + } + + m_LayerNbr2[ID] = LayerNbr; + m_WireNbr2[ID] = WireNbr; + + }//end det==2 + + } //end of for loop + cout << " -> " << NumberOfWires << " wires found for BDC" <<det << endl; + +}//end of ReadXML + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +// Construct detector and inialise sensitive part. +// (Called After DetectorConstruction::AddDetector Method) +void SamuraiBDC::ConstructDetector(G4LogicalVolume* world){ + + G4RotationMatrix* Rot = new G4RotationMatrix(); + + new G4PVPlacement(0, m_position[1], + BuildBDC1(), "SAMURAIBDC1" , world, false, 1); + + new G4PVPlacement(0, m_position[2], + BuildBDC2(), "SAMURAIBDC2" , world, false, 2); + + for(auto pos1 : m_PositionWire1){ + if(m_IsHorizontal1[pos1.first]) + { + Rot->rotateY(90.*deg); + } + else { + Rot->rotateX(90.*deg); + } + + new G4PVPlacement(G4Transform3D(*Rot,pos1.second), + BuildWire(), + "WireModule", m_BDC1,false,pos1.first); + Rot->set(0,0,0); + }// end for loop on wires BDC1 + + for(auto pos2 : m_PositionWire2){ + if(m_IsHorizontal2[pos2.first]) + { + Rot->rotateY(90.*deg); + } + else Rot->rotateX(90.*deg); + + new G4PVPlacement(G4Transform3D(*Rot,pos2.second), + BuildWire(), + "WireModule", m_BDC2 ,false,pos2.first); + Rot->set(0,0,0); + }// end for loop on wires BDC2 + + return; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +// Add Detector branch to the EventTree. +// Called After DetecorConstruction::AddDetector Method +void SamuraiBDC::InitializeRootOutput(){ + RootOutput *pAnalysis = RootOutput::getInstance(); + TTree *pTree = pAnalysis->GetTree(); + if(!pTree->FindBranch("SamuraiBDC")){ + pTree->Branch("SamuraiBDC", "TSamuraiBDCData", &m_Event) ; + } + pTree->SetBranchAddress("SamuraiBDC", &m_Event); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +// Read sensitive part and fill the Root tree. +// (Called at in the EventAction::EndOfEventAvtion) + +void SamuraiBDC::ReadSensitive(const G4Event* event){ + + m_Event->Clear(); + //Interaction Scorer + WireScorers::PS_Wire* WireScorerBDC= (WireScorers::PS_Wire*) m_WireScorerBDC->GetPrimitive(0); + + unsigned int sizeWire =WireScorerBDC->GetMult(); + for(unsigned int i = 0 ; i < sizeWire ; i++) + { + int layer = WireScorerBDC->GetLayerNumber(i); + int wireNbr = WireScorerBDC->GetWireNumber(i); + double time = WireScorerBDC->GetTime(i); + int edge = WireScorerBDC->GetEdge(i); + double DriftLength = WireScorerBDC->GetDriftLength(i); + int DetectorNumber = WireScorerBDC->GetDetectorNumber(i); + m_Event->SetData(DetectorNumber, layer, wireNbr, DriftLength, edge); + } + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void SamuraiBDC::InitializeScorers() { + // This check is necessary in case the geometry is reloaded + bool already_exist = false; + m_WireScorerBDC = CheckScorer("WireScorerBDC",already_exist) ; + + if(already_exist) + return; + + // Otherwise the scorer is initialised + vector<int> level; level.push_back(0); + + //Wire + G4VPrimitiveScorer* InteractionWireBDC= new WireScorers::PS_Wire("WS_BDC",level, SamuraiBDC_NS::Number_Of_Layer,SamuraiBDC_NS::Number_Of_Wire_By_Layer,SamuraiBDC_NS::Drift_Speed, m_WireAngle1) ; + m_WireScorerBDC->RegisterPrimitive(InteractionWireBDC); + G4SDManager::GetSDMpointer()->AddNewDetector(m_WireScorerBDC) ; + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//////////////////////////////////////////////////////////////////////////////// +// Construct Method to be pass to the DetectorFactory // +//////////////////////////////////////////////////////////////////////////////// + +NPS::VDetector* SamuraiBDC::Construct(){ + return (NPS::VDetector*) new SamuraiBDC(); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//////////////////////////////////////////////////////////////////////////////// +// Registering the construct method to the factory // +//////////////////////////////////////////////////////////////////////////////// +extern"C" { + class proxy_nps_samuraiBDC{ + public: + proxy_nps_samuraiBDC(){ + NPS::DetectorFactory::getInstance()->AddToken("SAMURAIBDC","SAMURAIBDC"); + NPS::DetectorFactory::getInstance()->AddDetector("SAMURAIBDC",SamuraiBDC::Construct); + } + }; + + proxy_nps_samuraiBDC p_nps_samuraiBDC; +} + + diff --git a/NPSimulation/Detectors/Samurai/SamuraiBDC.hh b/NPSimulation/Detectors/Samurai/SamuraiBDC.hh new file mode 100644 index 0000000000000000000000000000000000000000..7cf02368f64e629edf49bbd8064ece4bb4e309da --- /dev/null +++ b/NPSimulation/Detectors/Samurai/SamuraiBDC.hh @@ -0,0 +1,151 @@ +#ifndef Samurai_h +#define Samurai_h 1 +/***************************************************************************** + * Copyright (C) 2009-2021 this file is part of the NPTool Project * + * * + * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * + * For the list of contributors see $NPTOOL/Licence/Contributors * + *****************************************************************************/ + +/***************************************************************************** + * Original Author: Audrey ANNE contact address: anne@lpccaen.in2p3.fr * + * * + * Creation Date : * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: * + * This class describe Samurai BDCs simulation * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + *****************************************************************************/ + +// C++ header +#include <string> +#include <vector> +#include <stdlib.h> +using namespace std; + +// G4 headers +#include "G4ThreeVector.hh" +#include "G4RotationMatrix.hh" +#include "G4LogicalVolume.hh" +#include "G4MultiFunctionalDetector.hh" +#include "G4VSolid.hh" + +// NPTool header +#include "NPSVDetector.hh" +#include "NPInputParser.h" +#include "NPXmlParser.h" +#include "NPCore.h" +#include "TSamuraiBDCData.h" + +class SamuraiBDC : public NPS::VDetector{ + //////////////////////////////////////////////////// + /////// Default Constructor and Destructor ///////// + //////////////////////////////////////////////////// + public: + SamuraiBDC() ; + virtual ~SamuraiBDC() ; + + //////////////////////////////////////////////////// + /////// Specific Function of this Class /////////// + //////////////////////////////////////////////////// + public: + + // Cartezian BDC + void AddDetector(G4ThreeVector Mag_Pos, G4ThreeVector Offset, unsigned int det); + void ReadXML(std::string xml_file,G4ThreeVector offset, bool InvertX,bool InvertY, unsigned int det); + + G4LogicalVolume* BuildBDC1(); + G4LogicalVolume* BuildBDC2(); + G4LogicalVolume* BuildWire(); + G4LogicalVolume* BuildHexagon(); + + private: + + //Logical Volume + + //BDC1 + std::map<unsigned int , G4ThreeVector> m_PositionWire1; + std::map<unsigned int , int> m_LayerNbr1; + std::map<unsigned int , int> m_WireNbr1; + std::map<unsigned int , bool> m_IsHorizontal1; + std::map<unsigned int , double> m_WireAngle1; + + //BDC2 + std::map<unsigned int , G4ThreeVector> m_PositionWire2; + std::map<unsigned int , int> m_LayerNbr2; + std::map<unsigned int , int> m_WireNbr2; + std::map<unsigned int , bool> m_IsHorizontal2; + std::map<unsigned int , double> m_WireAngle2; + + G4LogicalVolume* m_BDC1; + G4LogicalVolume* m_BDC2; + G4LogicalVolume* m_Wire; + + G4LogicalVolume* m_Hexagon; + + //////////////////////////////////////////////////// + ////// Inherite from NPS::VDetector class ///////// + //////////////////////////////////////////////////// + public: + // Read stream at Configfile to pick-up parameters of detector (Position,...) + // Called in DetecorConstruction::ReadDetectorConfiguration Method + void ReadConfiguration(NPL::InputParser) ; + + // Construct detector and initialise sensitive part. + // (Called After DetecorConstruction::AddDetector Method) + void ConstructDetector(G4LogicalVolume* world) ; + + // Add Detector branch to the EventTree. + // (Called After DetecorConstruction::AddDetector Method) + void InitializeRootOutput() ; + + // Read sensitive part and fill the Root tree. + // (Called at in the EventAction::EndOfEventAction) + void ReadSensitive(const G4Event* event) ; + + public: + // Scorer + // Initialize the scorer(s) used by the BDC detector + void InitializeScorers() ; + + // Associated Scorer + G4MultiFunctionalDetector* m_WireScorerBDC ; + + //////////////////////////////////////////////////// + ///////////Event class to store Data//////////////// + //////////////////////////////////////////////////// + private: + TSamuraiBDCData* m_Event; + //////////////////////////////////////////////////// + + //////////////////////////////////////////////////// + ///////////////Private intern Data////////////////// + //////////////////////////////////////////////////// + private: + //Detector coordinates + std::map<unsigned int, G4ThreeVector> m_position;//! + std::map<unsigned int, G4ThreeVector> m_offset;//! + std::map<unsigned int, bool> m_invertX;//! + std::map<unsigned int, bool> m_invertY;//! + std::map<unsigned int, bool> m_invertD;//! + + // Visualisation Attributes + G4VisAttributes* m_VisBDC; + G4VisAttributes* m_VisWire; + + // Needed for dynamic loading of the library + public: + static NPS::VDetector* Construct(); +}; +#endif + + + + + + + diff --git a/NPSimulation/Detectors/Samurai/SamuraiFDC0.cc b/NPSimulation/Detectors/Samurai/SamuraiFDC0.cc new file mode 100644 index 0000000000000000000000000000000000000000..a2bb64c33f8be5b0a04ca9a5a93db79e8af2b5c2 --- /dev/null +++ b/NPSimulation/Detectors/Samurai/SamuraiFDC0.cc @@ -0,0 +1,390 @@ +/***************************************************************************** + * Copyright (C) 2009-2021 this file is part of the NPTool Project * + * * + * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * + * For the list of contributors see $NPTOOL/Licence/Contributors * + *****************************************************************************/ + +/***************************************************************************** + * Original Author: Audrey Anne contact address: anne@lpccaen.in2p3.fr * + * * + * Creation Date : january 2024 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: * + * This class describe SamuraiFDC0 simulation * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + *****************************************************************************/ + +// C++ headers +#include <sstream> +#include <cmath> +//G4 Geometry object +#include "G4Box.hh" +#include "G4Tubs.hh" + +//G4 sensitive +#include "G4SDManager.hh" +#include "G4MultiFunctionalDetector.hh" + +//G4 various object +#include "G4Material.hh" +#include "G4Transform3D.hh" +#include "G4PVPlacement.hh" +#include "G4VisAttributes.hh" +#include "G4Colour.hh" +#include "G4RegionStore.hh" + +// NPTool header +#include "SamuraiFDC0.hh" +#include "InteractionScorers.hh" +#include "RootOutput.h" +#include "MaterialManager.hh" +#include "NPSDetectorFactory.hh" +#include "NPOptionManager.h" +#include "NPSHitsMap.hh" +// CLHEP header +#include "CLHEP/Random/RandGauss.h" + +#include "WireScorers.hh" + +#include "G4TwoVector.hh" +#include "G4ExtrudedSolid.hh" + +using namespace std; +using namespace CLHEP; + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +namespace SamuraiFDC0_NS{ + + //Main outer box + // const double FDC0_Width = 160*mm; //(x) + // const double FDC0_Height = 160*mm;//(y) + // const double FDC0_Depth = 160*mm;//(z) + + const double FDC0_Width = 170*mm; //(x) + const double FDC0_Height = 170*mm;//(y) + const double FDC0_Depth = 170*mm;//(z) + + const string FDC0_Gas = "CH4_60_He_40"; + const double FDC0_Temperature = 298.15; // K + const double FDC0_Pressure = 1.0; //atm + + //Detector Number + const short int FDC0_DetectorNumber = 0; + + //Wires + const double Wire_Length = 150*mm; + const double Wire_Diameter = 5*mm; + const string Wire_Gas = "CH4_60_He_40"; + const double Wire_Temperature = 298.15; // K + const double Wire_Pressure = 1.0; //atm + + const int Number_Of_Layer = 8; // from 0 to 7 in the xml file + const int Number_Of_Wire_By_Layer = 32; // from 0 to 31 in the xml file + const double Drift_Speed = 1.33e-4; //------> FIX ME!!! not important (yet) + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +// Samurai Specific Method +SamuraiFDC0::SamuraiFDC0(){ + + //Visualization attributes + + //Main box + m_VisFDC0 = new G4VisAttributes(G4Colour(0.0,1.0,0,0.1)); + //Logical volumes + m_FDC0 = NULL; + + //Wire + m_VisWire = new G4VisAttributes(G4Colour(1.0,0,0.0,1.0)); + //Logical volumes + m_Wire = NULL; + //Scorer + m_WireScorerFDC0 = NULL; + + //Data event + m_Event = new TSamuraiFDC0Data; + + //Hexagon + m_Hexagon = NULL; +} + +SamuraiFDC0::~SamuraiFDC0(){ +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void SamuraiFDC0::AddDetector(G4ThreeVector Mag_Pos, G4ThreeVector Offset){ + + m_Pos = Mag_Pos + Offset; + + return; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +G4LogicalVolume* SamuraiFDC0::BuildFDC0(){ + if(!m_FDC0){ + //Shape - G4Box + G4Box* box = new G4Box("FDC0_Box",SamuraiFDC0_NS::FDC0_Width*0.5, + SamuraiFDC0_NS::FDC0_Height*0.5,SamuraiFDC0_NS::FDC0_Depth*0.5); + + //Material - Gas + G4Material* Gas = MaterialManager::getInstance()->GetGasFromLibrary(SamuraiFDC0_NS::FDC0_Gas, SamuraiFDC0_NS::FDC0_Pressure,SamuraiFDC0_NS::FDC0_Temperature); + + //Logical Volume + m_FDC0 = new G4LogicalVolume(box, Gas , "logic_SamuraiFDC0_box",0,0,0); + m_FDC0->SetVisAttributes(m_VisFDC0); + } + return m_FDC0; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +G4LogicalVolume* SamuraiFDC0::BuildWire(){ +if(!m_Wire){ + //Shape - G4Tubs + G4Tubs* solidWire = new G4Tubs("FDC0_Wire", 0.0, SamuraiFDC0_NS::Wire_Diameter*0.5,SamuraiFDC0_NS::Wire_Length*0.5, 0., 360.); + + //Material - Gas + G4Material* GasWire = MaterialManager::getInstance()->GetGasFromLibrary(SamuraiFDC0_NS::Wire_Gas, SamuraiFDC0_NS::Wire_Pressure,SamuraiFDC0_NS::Wire_Temperature); + //Logical Volume + m_Wire = new G4LogicalVolume(solidWire, GasWire, "logic_SamuraiWire_tub",0,0,0); + m_Wire->SetVisAttributes(m_VisWire); + m_Wire->SetSensitiveDetector(m_WireScorerFDC0); + + } + return m_Wire; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +G4LogicalVolume* SamuraiFDC0::BuildHexagon(){ +if(!m_Hexagon){ + //Shape + + const G4int nsect = 6; + std::vector<G4TwoVector> polygon(nsect); + G4double ang = twopi/nsect; + + G4double dz = SamuraiFDC0_NS::Wire_Length*0.5; + G4double rmax = SamuraiFDC0_NS::Wire_Diameter*0.5; + + for (G4int i = 0; i < nsect; ++i) + { + G4double phi = i*ang; + G4double cosphi = std::cos(phi); + G4double sinphi = std::sin(phi); + polygon[i].set(rmax*cosphi, rmax*sinphi); + } + + G4TwoVector offsetA(0,0), offsetB(0,0); + G4double scaleA = 1, scaleB = 1; + G4VSolid* solidHexagon = new G4ExtrudedSolid("Extruded", polygon, dz, offsetA, scaleA, offsetB, scaleB); + + + + //Material - Gas + G4Material* GasWire = MaterialManager::getInstance()->GetGasFromLibrary(SamuraiFDC0_NS::Wire_Gas, SamuraiFDC0_NS::Wire_Pressure,SamuraiFDC0_NS::Wire_Temperature); + + //Logical Volume + m_Hexagon = new G4LogicalVolume(solidHexagon, GasWire, "logic_SamuraiWire_tub",0,0,0); + m_Hexagon->SetVisAttributes(m_VisWire); + m_Hexagon->SetSensitiveDetector(m_WireScorerFDC0); + + } + return m_Hexagon; +} + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +// Virtual Method of NPS::VDetector class +// Read stream at Configfile to pick-up parameters of detector (Position,...) +// (Called in DetecorConstruction::ReadDetectorConfiguration Method) +void SamuraiFDC0::ReadConfiguration(NPL::InputParser parser){ + + vector<NPL::InputBlock*> blocks2 = parser.GetAllBlocksWithToken("SAMURAIFDC0"); + + if(blocks2.size()==1){ + if(NPOptionManager::getInstance()->GetVerboseLevel()) { + cout << "/////// Samurai FDC0 found ///////" << endl; + } + + vector<string> xml = {"XML","Offset", "InvertX","InvertY","InvertD"}; + + G4ThreeVector Mag_Pos; + G4ThreeVector Offset; + + if(blocks2[0]->HasTokenList(xml)){ + if(NPOptionManager::getInstance()->GetVerboseLevel()) + cout << endl << "//// FDC0 XML file " << endl; + string xml_file = blocks2[0]->GetString("XML"); + Offset = NPS::ConvertVector(blocks2[0]->GetTVector3("Offset", "mm")); + bool invert_x = blocks2[0]->GetInt("InvertX"); + bool invert_y = blocks2[0]->GetInt("InvertY"); + bool invert_z = blocks2[0]->GetInt("InvertD"); + ReadXML(xml_file,Offset,invert_x,invert_y); + } + + AddDetector(Mag_Pos, Offset); + + } + else{ + cout << "ERROR for FDC0: check your input file " << endl; + exit(1); + } + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//////////////////// nouveau /////////////////// +void SamuraiFDC0::ReadXML(std::string xml_file,G4ThreeVector offset, bool InvertX,bool InvertY){ + NPL::XmlParser xml; + xml.LoadFile(xml_file); + + std::vector<NPL::XML::block*> b = xml.GetAllBlocksWithName("SAMURAIFDC0"); + int NumberOfWires=0; + for(unsigned int i = 0 ; i < b.size() ; i++){ + NumberOfWires++; + + // Wire ID in general + auto ID = b[i]->AsInt("ID"); + + // Layer Number + auto LayerNbr = b[i]->AsInt("layer"); + + // Wire direction + auto DirectionWire = b[i]->AsString("anodedir"); + //Wire id in the layer + auto WireNbr = b[i]->AsInt("wireid"); + + //Wire x or y position + auto PositionXY = b[i]->AsDouble("wirepos"); + auto PositionZ = b[i]->AsDouble("wirez"); + + // position wire and direction wire + if(DirectionWire.find("Y")==std::string::npos){ // if not horizontal + m_PositionWire[ID] = G4ThreeVector(PositionXY,0.0,PositionZ); + m_IsHorizontal[ID] = false; + } + else { // if horizontal + m_PositionWire[ID] = G4ThreeVector(0.0,PositionXY,PositionZ); + m_IsHorizontal[ID] = true; + } + + m_LayerNbr[ID] = LayerNbr; + m_WireNbr[ID] = WireNbr; + + } //end of for loop + cout << " -> " << NumberOfWires << " wires found for FDC0" << endl; + +}//end of ReadXML + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +// Construct detector and inialise sensitive part. +// (Called After DetectorConstruction::AddDetector Method) +void SamuraiFDC0::ConstructDetector(G4LogicalVolume* world){ + + G4RotationMatrix* Rot = new G4RotationMatrix(); + + new G4PVPlacement(0, m_Pos, + BuildFDC0(), "SamuraiFDC0", world, false, 0); + + for(auto pos : m_PositionWire){ //loop on FDC0 wires + + if(m_IsHorizontal[pos.first]){ + Rot->rotateY(90.*deg); + + + } + else Rot->rotateX(90.*deg); + + new G4PVPlacement(G4Transform3D(*Rot,pos.second),BuildWire(), + "WireModule",m_FDC0,false,pos.first); + Rot->set(0,0,0); + }// end for loop on wires + + return; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +// Add Detector branch to the EventTree. +// Called After DetecorConstruction::AddDetector Method +void SamuraiFDC0::InitializeRootOutput(){ + RootOutput *pAnalysis = RootOutput::getInstance(); + TTree *pTree = pAnalysis->GetTree(); + + if(!pTree->FindBranch("SamuraiFDC0")){ + pTree->Branch("SamuraiFDC0", "TSamuraiFDC0Data", &m_Event) ; + } + pTree->SetBranchAddress("SamuraiFDC0", &m_Event); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +// Read sensitive part and fill the Root tree. +// (Called at in the EventAction::EndOfEventAvtion) +void SamuraiFDC0::ReadSensitive(const G4Event* event){ + + m_Event->Clear(); + + WireScorers::PS_Wire* WireScorerFDC0= (WireScorers::PS_Wire*) m_WireScorerFDC0->GetPrimitive(0); + + unsigned int sizeWire =WireScorerFDC0->GetMult(); + for(unsigned int i = 0 ; i < sizeWire ; i++) + { + int layer = WireScorerFDC0->GetLayerNumber(i); + int wireNbr = WireScorerFDC0->GetWireNumber(i); + double time = WireScorerFDC0->GetTime(i); + int edge = WireScorerFDC0->GetEdge(i); + double DriftLength = WireScorerFDC0->GetDriftLength(i); + + m_Event->SetData(SamuraiFDC0_NS::FDC0_DetectorNumber, layer, + wireNbr, DriftLength, edge);// driftlength instead of time + } + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void SamuraiFDC0::InitializeScorers() { + // This check is necessary in case the geometry is reloaded + bool already_exist = false; + m_WireScorerFDC0 = CheckScorer("WireScorerFDC0",already_exist); + if(already_exist) + return; + + // Otherwise the scorer is initialised + vector<int> level; level.push_back(0); + //Wire + G4VPrimitiveScorer* InteractionWire= new WireScorers::PS_Wire("WS_FDC0",level, SamuraiFDC0_NS::Number_Of_Layer,SamuraiFDC0_NS::Number_Of_Wire_By_Layer,SamuraiFDC0_NS::Drift_Speed, m_WireAngle) ; + m_WireScorerFDC0->RegisterPrimitive(InteractionWire); + G4SDManager::GetSDMpointer()->AddNewDetector(m_WireScorerFDC0) ; + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//////////////////////////////////////////////////////////////////////////////// +// Construct Method to be pass to the DetectorFactory // +//////////////////////////////////////////////////////////////////////////////// +NPS::VDetector* SamuraiFDC0::Construct(){ + return (NPS::VDetector*) new SamuraiFDC0(); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//////////////////////////////////////////////////////////////////////////////// +// Registering the construct method to the factory // +//////////////////////////////////////////////////////////////////////////////// +extern"C" { + class proxy_nps_samuraiFDC0{ + public: + proxy_nps_samuraiFDC0(){ + NPS::DetectorFactory::getInstance()->AddToken("SAMURAIFDC0","SAMURAIFDC0"); + NPS::DetectorFactory::getInstance()->AddDetector("SAMURAIFDC0",SamuraiFDC0::Construct); + } + }; + + proxy_nps_samuraiFDC0 p_nps_samuraiFDC0; +} + + diff --git a/NPSimulation/Detectors/Samurai/SamuraiFDC0.hh b/NPSimulation/Detectors/Samurai/SamuraiFDC0.hh new file mode 100644 index 0000000000000000000000000000000000000000..249954b77bfaf0d6e211aab2dfac8a17a8a8ffd4 --- /dev/null +++ b/NPSimulation/Detectors/Samurai/SamuraiFDC0.hh @@ -0,0 +1,134 @@ +#ifndef Samurai_h +#define Samurai_h 1 +/***************************************************************************** + * Copyright (C) 2009-2021 this file is part of the NPTool Project * + * * + * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * + * For the list of contributors see $NPTOOL/Licence/Contributors * + *****************************************************************************/ + +/***************************************************************************** + * Original Author: Audrey Anne contact address: anne@lpccaen.in2p3.fr * + * * + * Creation Date : january 2024 * + * Last update : june 2024 * + *---------------------------------------------------------------------------* + * Decription: * + * This class describe SamuraiFDC0 simulation * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + *****************************************************************************/ + +// C++ header +#include <string> +#include <vector> +using namespace std; + +// G4 headers +#include "G4ThreeVector.hh" +#include "G4RotationMatrix.hh" +#include "G4LogicalVolume.hh" +#include "G4MultiFunctionalDetector.hh" +#include "G4VSolid.hh" + +// NPTool header +#include "NPSVDetector.hh" +#include "NPInputParser.h" +#include "NPXmlParser.h" + +#include "TSamuraiFDC0Data.h" + +class SamuraiFDC0 : public NPS::VDetector{ + //////////////////////////////////////////////////// + /////// Default Constructor and Destructor ///////// + //////////////////////////////////////////////////// + public: + SamuraiFDC0() ; + virtual ~SamuraiFDC0() ; + + //////////////////////////////////////////////////// + /////// Specific Function of this Class /////////// + //////////////////////////////////////////////////// + public: + + // Cartezian FDC0 + void AddDetector(G4ThreeVector Mag_Pos, G4ThreeVector Offset); + void ReadXML(std::string xml_file,G4ThreeVector offset, bool InvertX,bool InvertY); + + G4LogicalVolume* BuildFDC0(); + G4LogicalVolume* BuildWire(); + G4LogicalVolume* BuildHexagon(); + + private: + + //Logical Volume + std::map<unsigned int , G4ThreeVector> m_PositionWire; + std::map<unsigned int , int> m_LayerNbr; + std::map<unsigned int , int> m_WireNbr; + std::map<unsigned int , double> m_WireAngle; + std::map<unsigned int , bool> m_IsHorizontal; + + G4LogicalVolume* m_FDC0; + G4LogicalVolume* m_Wire; + G4LogicalVolume* m_Hexagon; + + //////////////////////////////////////////////////// + ////// Inherite from NPS::VDetector class ///////// + //////////////////////////////////////////////////// + public: + // Read stream at Configfile to pick-up parameters of detector (Position,...) + // Called in DetecorConstruction::ReadDetectorConfiguration Method + void ReadConfiguration(NPL::InputParser) ; + + // Construct detector and initialise sensitive part. + // (Called After DetecorConstruction::AddDetector Method) + void ConstructDetector(G4LogicalVolume* world) ; + + // Add Detector branch to the EventTree. + // (Called After DetecorConstruction::AddDetector Method) + void InitializeRootOutput() ; + + // Read sensitive part and fill the Root tree. + // (Called at in the EventAction::EndOfEventAction) + void ReadSensitive(const G4Event* event) ; + + public: + // Scorer + // Initialize the scorer(s) used by the FDC0 detector + void InitializeScorers() ; + + // Associated Scorer + G4MultiFunctionalDetector* m_WireScorerFDC0; + + //////////////////////////////////////////////////// + ///////////Event class to store Data//////////////// + //////////////////////////////////////////////////// + private: + + TSamuraiFDC0Data* m_Event; + + //////////////////////////////////////////////////// + ///////////////Private intern Data////////////////// + //////////////////////////////////////////////////// + private: + //Detector coordinates + G4ThreeVector m_Pos; + + // Visualisation Attributes + G4VisAttributes* m_VisFDC0; + G4VisAttributes* m_VisWire; + + // Needed for dynamic loading of the library + public: + static NPS::VDetector* Construct(); +}; +#endif + + + + + + + diff --git a/NPSimulation/Detectors/Samurai/SamuraiFDC2.cc b/NPSimulation/Detectors/Samurai/SamuraiFDC2.cc index e403e631735fbbcd135259176de575dc2a8fa28d..122a9eab125f9ef56d29f161c1bf5a1951ac54c0 100644 --- a/NPSimulation/Detectors/Samurai/SamuraiFDC2.cc +++ b/NPSimulation/Detectors/Samurai/SamuraiFDC2.cc @@ -6,13 +6,13 @@ *****************************************************************************/ /***************************************************************************** - * Original Author: Omar Nasr contact address: omar.h.nasr@outlook.com * + * Original Author: Audrey ANNE contact address: anne@lpccaen.in2p3.fr * * * - * Creation Date : septembre 2021 * - * Last update : septembre 2021 * + * Creation Date : * + * Last update : august 2024 * *---------------------------------------------------------------------------* * Decription: * - * This class describe Samurai simulation * + * This class describe SamuraiFDC2 simulation * * * *---------------------------------------------------------------------------* * Comment: * @@ -37,9 +37,12 @@ #include "G4Colour.hh" #include "G4RegionStore.hh" +#include "G4Tubs.hh" +#include "G4SubtractionSolid.hh" +#include "G4IntersectionSolid.hh" + // NPTool header #include "SamuraiFDC2.hh" -//#include "CalorimeterScorers.hh" #include "InteractionScorers.hh" #include "RootOutput.h" #include "MaterialManager.hh" @@ -49,6 +52,8 @@ // CLHEP header #include "CLHEP/Random/RandGauss.h" +#include "WireScorers.hh" + using namespace std; using namespace CLHEP; @@ -58,14 +63,29 @@ namespace SamuraiFDC2_NS{ // Samurai magnet construction paramethers //Main outer box - const double FDC2_Width = 2616*mm; //(x) - const double FDC2_Height = 1156*mm;//(y) - const double FDC2_Depth = 876*mm;//(z) - const string FDC2_Material = "G4_Galactic"; + const double FDC2_Width = 2296*mm; //(x) + const double FDC2_Height = 836*mm;//(y) + const double FDC2_Depth = 650*mm;//(z) + const string FDC2_Material_Void = "G4_Galactic"; + + const string FDC2_Gas = "CH4_60_He_40"; + const double FDC2_Temperature = 298.15; // K + const double FDC2_Pressure = 1.0; //atm //Detector Number const short int FDC2_DetectorNumber = 2; + //Wires + const double Wire_length = 3000*mm; + const double Wire_diameter = 19.99*mm; + const string Wire_Gas = "CH4_60_He_40"; + const double Wire_Temperature = 298.15; // K + const double Wire_Pressure = 1.0; //atm + + const int Number_Of_Layer = 14; // from 0 to 13 in the xml file + const int Number_Of_Wire_By_Layer = 112; // from 0 to 111 in the xml file + const double Drift_Speed = 1.33e-4; //------> FIX ME!!! not important (yet) + } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -74,14 +94,20 @@ namespace SamuraiFDC2_NS{ SamuraiFDC2::SamuraiFDC2(){ //Visualization attributes - m_VisFDC2 = new G4VisAttributes(G4Colour(1,0,1,0.5)); + m_VisFDC2 = new G4VisAttributes(G4Colour(1,0,1,0.3)); //Logical volumes m_FDC2 = NULL; + + //Wire + m_VisWire = new G4VisAttributes(G4Colour(1.0,0,0.0,0.7)); + //Logical volumes + m_Wire = NULL; //Scorer - m_FDC2Scorer = NULL; - //Ideal Data event - m_Event = new TSamuraiIdealData; + m_WireScorerFDC2 = NULL; + //Data event + m_Event = new TSamuraiFDC2Data; + } SamuraiFDC2::~SamuraiFDC2(){ @@ -94,7 +120,7 @@ void SamuraiFDC2::AddDetector(G4ThreeVector Mag_Pos, double Mag_Angle, G4ThreeVe Offset.rotateY(-(m_Angle)); m_Pos = Mag_Pos + Offset; - + return; } @@ -105,19 +131,41 @@ G4LogicalVolume* SamuraiFDC2::BuildFDC2(){ //Shape - G4Box G4Box* box = new G4Box("FDC2_Box",SamuraiFDC2_NS::FDC2_Width*0.5, SamuraiFDC2_NS::FDC2_Height*0.5,SamuraiFDC2_NS::FDC2_Depth*0.5); - - //Material - vacuum - G4Material* VacuumMaterial = MaterialManager::getInstance() - ->GetMaterialFromLibrary(SamuraiFDC2_NS::FDC2_Material); + + //Material + G4Material* Gas = MaterialManager::getInstance()->GetGasFromLibrary(SamuraiFDC2_NS::FDC2_Gas,SamuraiFDC2_NS::FDC2_Pressure, SamuraiFDC2_NS::FDC2_Temperature); //Logical Volume - m_FDC2 = new G4LogicalVolume(box, VacuumMaterial, "logic_SamuraiFDC2_box",0,0,0); + m_FDC2 = new G4LogicalVolume(box, Gas, "logic_SamuraiFDC2_box",0,0,0); m_FDC2->SetVisAttributes(m_VisFDC2); - m_FDC2->SetSensitiveDetector(m_FDC2Scorer); } return m_FDC2; } + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +G4LogicalVolume* SamuraiFDC2::BuildWire(){ +if(!m_Wire){ + + //Shape - G4Tubs + G4Tubs* solidWire = new G4Tubs("FDC2_Wire", 0.0, SamuraiFDC2_NS::Wire_diameter*0.5,SamuraiFDC2_NS::Wire_length*0.5, 0., 360.); + + + //material + G4Material* GasWire = MaterialManager::getInstance()->GetGasFromLibrary(SamuraiFDC2_NS::Wire_Gas, SamuraiFDC2_NS::Wire_Pressure,SamuraiFDC2_NS::Wire_Temperature); + + + //Logical Volume + m_Wire = new G4LogicalVolume(solidWire, GasWire, "logic_SamuraiWire_tub",0,0,0); + m_Wire->SetVisAttributes(m_VisWire); + m_Wire->SetSensitiveDetector(m_WireScorerFDC2); + + } + return m_Wire; +} + + //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // Virtual Method of NPS::VDetector class @@ -129,21 +177,25 @@ void SamuraiFDC2::ReadConfiguration(NPL::InputParser parser){ vector<NPL::InputBlock*> blocks = parser.GetAllBlocksWithToken("Samurai"); vector<NPL::InputBlock*> blocks2 = parser.GetAllBlocksWithToken("SAMURAIFDC2"); + G4ThreeVector Mag_Pos; + double Mag_Angle; + G4ThreeVector Offset; + double Off_Angle; + if(blocks.size()==1 && blocks2.size()==1){ if(NPOptionManager::getInstance()->GetVerboseLevel()) { - cout << "/////// Samurai FDC2 found ///////" << endl; + cout << "/////// Samurai FDC2 found with Samurai Magnet ///////" << endl; } vector<string> cart = {"POS","ANGLE"}; vector<string> sphe = {"R","Theta","Phi","ANGLE"}; - - G4ThreeVector Mag_Pos; - double Mag_Angle; - + vector<string> xml = {"XML","Offset", "InvertX","InvertY","InvertD"}; + if(blocks[0]->HasTokenList(cart)){ Mag_Pos = NPS::ConvertVector(blocks[0]->GetTVector3("POS", "cm")); Mag_Angle = blocks[0]->GetDouble("ANGLE","deg"); } - else if(blocks[0]->HasTokenList(sphe)){ + + if(blocks[0]->HasTokenList(sphe)){ double R = blocks[0]->GetDouble("R","mm"); double Theta = blocks[0]->GetDouble("Theta","deg"); double Phi = blocks[0]->GetDouble("Phi","deg"); @@ -152,38 +204,177 @@ void SamuraiFDC2::ReadConfiguration(NPL::InputParser parser){ Mag_Pos.setPhi(Phi); Mag_Angle = blocks[0]->GetDouble("ANGLE","deg"); } - - G4ThreeVector Offset = NPS::ConvertVector(blocks2[0]->GetTVector3("Offset", "mm")); - double Off_Angle = blocks2[0]->GetDouble("OffAngle","deg"); - //string xml = blocks2[0]->GetString("XML"); - //bool invert_x = blocks2[0]->GetBool("InvertX"); - //bool invert_y = blocks2[0]->GetBool("InvertY"); - //bool invert_z = blocks2[0]->GetBool("InvertD"); - + if(blocks2[0]->HasTokenList(xml)){ + if(NPOptionManager::getInstance()->GetVerboseLevel()) + cout << endl << "//// FDC2 XML file " << endl; + string xml_file = blocks2[0]->GetString("XML"); + Offset = NPS::ConvertVector(blocks2[0]->GetTVector3("Offset", "mm")); + Off_Angle = blocks2[0]->GetDouble("OffAngle","deg"); + bool invert_x = blocks2[0]->GetInt("InvertX"); + bool invert_y = blocks2[0]->GetInt("InvertY"); + bool invert_z = blocks2[0]->GetInt("InvertD"); + ReadXML(xml_file,Offset,invert_x,invert_y); + } + AddDetector(Mag_Pos, Mag_Angle, Offset, Off_Angle); - } + }// SamuraiFDC2 and SamuraiMagnet + + else if(blocks.size()==0 && blocks2.size()==1) + { + if(NPOptionManager::getInstance()->GetVerboseLevel()) + { + cout << "/////// Samurai FDC2 ///////" << endl; + } + + vector<string> xml = {"XML","Offset", "InvertX","InvertY","InvertD"}; + if(blocks2[0]->HasTokenList(xml)){//--------------> nouveau + if(NPOptionManager::getInstance()->GetVerboseLevel()) + cout << endl << "//// FDC2 XML file " << endl;//--------------> nouveau + string xml_file = blocks2[0]->GetString("XML");//--------------> nouveau + Offset = NPS::ConvertVector(blocks2[0]->GetTVector3("Offset", "mm"));//-----------> nouveau + Off_Angle = blocks2[0]->GetDouble("OffAngle","deg");//-----------> nouveau + bool invert_x = blocks2[0]->GetInt("InvertX");//--------------> nouveau + bool invert_y = blocks2[0]->GetInt("InvertY");//--------------> nouveau + bool invert_z = blocks2[0]->GetInt("InvertD");//--------------> nouveau + ReadXML(xml_file,Offset,invert_x,invert_y);//--------------> nouveau + } + + m_Pos = Mag_Pos + Offset; + + }//SamuraiFDC2 + + else{ cout << "ERROR: there should be only one Samurai magnet, check your input file" << endl; exit(1); } - } + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void SamuraiFDC2::ReadXML(std::string xml_file,G4ThreeVector offset, bool InvertX,bool InvertY){ + NPL::XmlParser xml; + xml.LoadFile(xml_file); + + std::vector<NPL::XML::block*> b = xml.GetAllBlocksWithName("SAMURAIFDC2"); + int NumberOfWires=0; + for(unsigned int i = 0 ; i < b.size() ; i++){ + NumberOfWires++; + + // Wire ID in general + auto WireId = b[i]->AsInt("ID"); + + // Layer Number + auto LayerNbr = b[i]->AsInt("layer"); + + // Wire direction + auto DirectionWire = b[i]->AsString("anodedir"); + //Wire id in the layer + auto WireNbr = b[i]->AsInt("wireid"); + + //Wire x or y position + auto PositionX = b[i]->AsDouble("wirepos"); + auto PositionZ = b[i]->AsDouble("wirez"); + + // position wire and direction wire + // X , U or V + m_PositionWire[WireId] = G4ThreeVector(PositionX,0.0,PositionZ); + m_IsHorizontal[WireId] = false; + + m_WireAngle[WireId] = 0.0*deg; + + if(DirectionWire.find("X")!=std::string::npos){ //X + m_WireAngle[WireId] = 0.0*deg; + } + + else if(DirectionWire.find("U")!=std::string::npos){ //U + m_WireAngle[WireId] = -30.0*deg; + } + + else if (DirectionWire.find("V")!=std::string::npos){ //V + m_WireAngle[WireId] = 30.0*deg; + } + + m_LayerNbr[WireId] = LayerNbr; + m_WireNbr[WireId] = WireNbr; + + } //end of for loop + cout << " -> " << NumberOfWires << " wires found" << endl; + +}//end of ReadXML + + //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // Construct detector and inialise sensitive part. // (Called After DetectorConstruction::AddDetector Method) void SamuraiFDC2::ConstructDetector(G4LogicalVolume* world){ + // Box G4RotationMatrix* Rot = new G4RotationMatrix(); - Rot->rotateY(m_Angle); + Rot->rotateY(m_Angle);//rotation in volume's reference frame new G4PVPlacement(Rot, m_Pos, BuildFDC2(), "SamuraiFDC2", world, false, 0); + // Wires + G4RotationMatrix* RotWire = new G4RotationMatrix();// wire's rotation at the end + RotWire->set(0,0,0); + + G4RotationMatrix* BoxRot = new G4RotationMatrix(); + BoxRot->set(0,0,0); + + + //material + G4Material* GasWire = MaterialManager::getInstance()->GetGasFromLibrary(SamuraiFDC2_NS::Wire_Gas, SamuraiFDC2_NS::Wire_Pressure,SamuraiFDC2_NS::Wire_Temperature); + + + for(auto pos : m_PositionWire){ //loop on wires + + RotWire->rotateX(-90.*deg); + RotWire->rotateZ(m_WireAngle[pos.first]); + + G4ThreeVector position = pos.second; + double X = position[0]; + double Y = position[1]; + double Z = position[2]; + + double newX, newY; + newX = X*cos(-m_WireAngle[pos.first])+Y*sin(-m_WireAngle[pos.first]); + newY = -X*sin(-m_WireAngle[pos.first]) + Y*cos(-m_WireAngle[pos.first]); + + m_PositionWire[pos.first] = G4ThreeVector(newX, newY, Z); + G4ThreeVector positionWire(newX, newY, Z); + + + ////////////////////////////////////////////////////// + G4Box* box = new G4Box("FDC2_Box",SamuraiFDC2_NS::FDC2_Width*0.5, + SamuraiFDC2_NS::FDC2_Depth*0.5,SamuraiFDC2_NS::FDC2_Height*0.5); + G4Tubs* solidWire = new G4Tubs("FDC2_Wire", 0.0, SamuraiFDC2_NS::Wire_diameter*0.5,SamuraiFDC2_NS::Wire_length*0.5, 0., 360.); + + BoxRot->rotateY(m_WireAngle[pos.first]); + + G4ThreeVector BoxPosition(-X,0, 0); + G4Transform3D TransformBox(*BoxRot, BoxPosition); + + G4VSolid* Intersection = new G4IntersectionSolid("FDC2_Wire", solidWire, box, TransformBox); + m_Wire = new G4LogicalVolume(Intersection, GasWire, "logic_SamuraiWire_tub",0,0,0); + m_Wire->SetVisAttributes(m_VisWire); + m_Wire->SetSensitiveDetector(m_WireScorerFDC2); + + // intersection + new G4PVPlacement(G4Transform3D(*RotWire, positionWire), + m_Wire, + "WireModule",m_FDC2,false,pos.first); + + RotWire->set(0,0,0); + BoxRot->set(0,0,0); + + }// end for loop on wires + return; } @@ -194,10 +385,10 @@ void SamuraiFDC2::ConstructDetector(G4LogicalVolume* world){ void SamuraiFDC2::InitializeRootOutput(){ RootOutput *pAnalysis = RootOutput::getInstance(); TTree *pTree = pAnalysis->GetTree(); - if(!pTree->FindBranch("IdealDataFDC2")){ - pTree->Branch("IdealDataFDC2", "TSamuraiIdealData", &m_Event) ; + if(!pTree->FindBranch("SamuraiFDC2")){ + pTree->Branch("SamuraiFDC2", "TSamuraiFDC2Data", &m_Event) ; } - pTree->SetBranchAddress("IdealDataFDC2", &m_Event); + pTree->SetBranchAddress("SamuraiFDC2", &m_Event); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -208,25 +399,21 @@ void SamuraiFDC2::InitializeRootOutput(){ void SamuraiFDC2::ReadSensitive(const G4Event* event){ m_Event->Clear(); - //Interaction Scorer - InteractionScorers::PS_Interactions* Scorer= (InteractionScorers::PS_Interactions*) m_FDC2Scorer->GetPrimitive(0); - - unsigned int size = Scorer->GetMult(); - for(unsigned int i = 0 ; i < size ; i++){ - //vector<unsigned int> level = Scorer->GetLevel(i); - //double Energy = RandGauss::shoot(Scorer->GetEnergy(i),SamuraiFDC2_NS::ResoEnergy); - //double Energy = Scorer->GetEnergy(i); - - double energy = Scorer->GetEnergy(i); - double brho = Scorer->GetBrho(i); - double posx = Scorer->GetPositionX(i); - double posy = Scorer->GetPositionY(i); - double posz = Scorer->GetPositionZ(i); - double mom_mag = brho*Scorer->GetCharge(i); - double theta = Scorer->GetTheta(i); - double phi = Scorer->GetPhi(i); - m_Event->SetData(SamuraiFDC2_NS::FDC2_DetectorNumber, energy, posx, posy, posz, mom_mag, theta, phi, brho); - } + + WireScorers::PS_Wire* WireScorerFDC2= (WireScorers::PS_Wire*) m_WireScorerFDC2->GetPrimitive(0); + + unsigned int sizeWire =WireScorerFDC2->GetMult(); + for(unsigned int i = 0 ; i < sizeWire ; i++) + { + int layer = WireScorerFDC2->GetLayerNumber(i); + int wireNbr = WireScorerFDC2->GetWireNumber(i); + double time = WireScorerFDC2->GetTime(i); + int edge = WireScorerFDC2->GetEdge(i); + double DriftLength = WireScorerFDC2->GetDriftLength(i); + + m_Event->SetData(SamuraiFDC2_NS::FDC2_DetectorNumber, layer, + wireNbr, DriftLength, edge); + } } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -234,17 +421,17 @@ void SamuraiFDC2::ReadSensitive(const G4Event* event){ void SamuraiFDC2::InitializeScorers() { // This check is necessary in case the geometry is reloaded bool already_exist = false; - m_FDC2Scorer = CheckScorer("FDC2Scorer",already_exist) ; + m_WireScorerFDC2 = CheckScorer("WireScorerFDC2",already_exist); if(already_exist) return ; // Otherwise the scorer is initialised vector<int> level; level.push_back(0); - //Interaction - G4VPrimitiveScorer* Interaction= new InteractionScorers::PS_Interactions("Interaction",ms_InterCoord, 0) ; - m_FDC2Scorer->RegisterPrimitive(Interaction); - G4SDManager::GetSDMpointer()->AddNewDetector(m_FDC2Scorer) ; + //Wire + G4VPrimitiveScorer* InteractionWire= new WireScorers::PS_Wire("WS_FDC2",level, SamuraiFDC2_NS::Number_Of_Layer,SamuraiFDC2_NS::Number_Of_Wire_By_Layer,SamuraiFDC2_NS::Drift_Speed, m_WireAngle) ; + m_WireScorerFDC2->RegisterPrimitive(InteractionWire); + G4SDManager::GetSDMpointer()->AddNewDetector(m_WireScorerFDC2) ; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/NPSimulation/Detectors/Samurai/SamuraiFDC2.hh b/NPSimulation/Detectors/Samurai/SamuraiFDC2.hh index 1dc277fc1347124b30879263f3a70a0e16cee23f..c8cbf458b2c2eba81d81a876f4aa551fad54e6d9 100644 --- a/NPSimulation/Detectors/Samurai/SamuraiFDC2.hh +++ b/NPSimulation/Detectors/Samurai/SamuraiFDC2.hh @@ -8,13 +8,13 @@ *****************************************************************************/ /***************************************************************************** - * Original Author: Omar Nasr contact address: omar.h.nasr@outlook.com * +* Original Author: Audrey ANNE contact address: anne@lpccaen.in2p3.fr * * * - * Creation Date : septembre 2021 * - * Last update : septembre 2021 * + * Creation Date : * + * Last update : august 2024 * *---------------------------------------------------------------------------* * Decription: * - * This class describe Samurai simulation * + * This class describe SamuraiFDC2 simulation * * * *---------------------------------------------------------------------------* * Comment: * @@ -37,9 +37,10 @@ using namespace std; // NPTool header #include "NPSVDetector.hh" #include "NPInputParser.h" +#include "NPXmlParser.h" + +#include "TSamuraiFDC2Data.h" -//#include "SamuraiFieldPropagation.hh" -#include "TSamuraiIdealData.h" class SamuraiFDC2 : public NPS::VDetector{ @@ -57,16 +58,22 @@ class SamuraiFDC2 : public NPS::VDetector{ // Cartezian FDC2 void AddDetector(G4ThreeVector Mag_Pos, double Mag_Angle, G4ThreeVector Offset, double Off_Angle); + void ReadXML(std::string xml_file,G4ThreeVector offset, bool InvertX,bool InvertY); G4LogicalVolume* BuildFDC2(); + G4LogicalVolume* BuildWire(); + private: //Logical Volume - G4LogicalVolume* m_FDC2; - - // Visualisation Attributes - G4VisAttributes* m_VisFDC2; + std::map<unsigned int , G4ThreeVector> m_PositionWire; + std::map<unsigned int , int> m_LayerNbr; + std::map<unsigned int , int> m_WireNbr; + std::map<unsigned int , double> m_WireAngle; + std::map<unsigned int , bool> m_IsHorizontal; + G4LogicalVolume* m_FDC2; + G4LogicalVolume* m_Wire; //////////////////////////////////////////////////// ////// Inherite from NPS::VDetector class ///////// @@ -95,15 +102,16 @@ class SamuraiFDC2 : public NPS::VDetector{ // Associated Scorer - G4MultiFunctionalDetector* m_FDC2Scorer ; + G4MultiFunctionalDetector* m_WireScorerFDC2 ; + //////////////////////////////////////////////////// ///////////Event class to store Data//////////////// //////////////////////////////////////////////////// private: - //TSamuraiFDC2Data* m_Event; + TSamuraiFDC2Data* m_Event; ////////////////////////////////////////////////////////////////// - TSamuraiIdealData* m_Event; + //TSamuraiIdealData* m_Event; //////////////////////////////////////////////////// ///////////////Private intern Data////////////////// @@ -113,7 +121,11 @@ class SamuraiFDC2 : public NPS::VDetector{ G4ThreeVector m_Pos; // Angle of Rotation double m_Angle; + + // Visualisation Attributes + G4VisAttributes* m_VisFDC2; + G4VisAttributes* m_VisWire; // Needed for dynamic loading of the library public: diff --git a/NPSimulation/Detectors/Samurai/SamuraiFieldPropagation.cc b/NPSimulation/Detectors/Samurai/SamuraiFieldPropagation.cc index 6571c9964ad050c1bd9581f853b43f20b0abd8ef..37e6b193dcab840bda74aabae85f9697128c6edc 100644 --- a/NPSimulation/Detectors/Samurai/SamuraiFieldPropagation.cc +++ b/NPSimulation/Detectors/Samurai/SamuraiFieldPropagation.cc @@ -38,6 +38,7 @@ #include "G4UserLimits.hh" #include "G4SystemOfUnits.hh" #include "G4PhysicalConstants.hh" +#include "G4RunManager.hh" //nptool libraries #include "NPFunction.h" #include "NPInputParser.h" @@ -136,11 +137,18 @@ void NPS::SamuraiFieldPropagation::ReadConfiguration() { //////////////////////////////////////////////////////////////////////////////// G4bool NPS::SamuraiFieldPropagation::IsApplicable(const G4ParticleDefinition& particleType) { if (particleType.GetPDGCharge() == 0) return false; + + else if (particleType.GetParticleName() == "e-" or particleType.GetParticleName() == "e+" ) + { + return false; + } + return true; } //////////////////////////////////////////////////////////////////////////////// G4bool NPS::SamuraiFieldPropagation::ModelTrigger(const G4FastTrack& fastTrack) { + return true; } @@ -286,7 +294,7 @@ void NPS::SamuraiFieldPropagation::RungeKuttaPropagation (const G4FastTrack& fas double speed = PrimaryTrack->GetVelocity(); double charge = PrimaryTrack->GetParticleDefinition()->GetPDGCharge() / coulomb; double ConF_p = 1 / (joule * c_light / (m/s)) ; // MeV/c to kg*m/s (SI units) - + //Initially inside is false -> calculate trajectory if (!inside){ count = 2;//skip first two positions as they are the same as the current position @@ -298,14 +306,14 @@ void NPS::SamuraiFieldPropagation::RungeKuttaPropagation (const G4FastTrack& fas trajectory.clear(); trajectory = m_Map->Propagate(Brho, pos, dir); - + inside = true; } G4ThreeVector newPosition (trajectory[count].x(), trajectory[count].y(), trajectory[count].z()); //benchmark //G4ThreeVector newDir = (newPosition - localPosition).unit(); - //G4ThreeVector newMomentum = newDir * localMomentum.mag(); + //G4ThreeVector newMomentum = newDir * localMomentum.mag(); //Check if newPosition is not inside if (solid->Inside(newPosition) != kInside){ @@ -320,13 +328,18 @@ void NPS::SamuraiFieldPropagation::RungeKuttaPropagation (const G4FastTrack& fas //if(single_particle) PrintData(m_StepSize, newPosition, newMomentum, outRKsp); //else PrintData(m_StepSize, newPosition, newMomentum, outRK); //counter++; + } - + //benchmark G4ThreeVector newDir = (newPosition - localPosition).unit(); G4ThreeVector newMomentum = newDir * localMomentum.mag(); - - + + if(abs(newPosition[0]-localPosition[0])>10.0 or abs(newPosition[1]-localPosition[1])>10.0 or abs(newPosition[2]-localPosition[2])>10.0) + { + G4RunManager::GetRunManager()->AbortEvent(); + } + double time = PrimaryTrack->GetGlobalTime()+(newPosition - localPosition).mag()/speed; fastStep.ProposePrimaryTrackFinalPosition( newPosition ); diff --git a/NPSimulation/Detectors/Samurai/SamuraiFieldPropagation.hh b/NPSimulation/Detectors/Samurai/SamuraiFieldPropagation.hh index 8cfc6c13a0c8bf7b50a1ab4e2860cf43f51e0d52..d959ffd17083d1f147cb72666ab6b4b92f247da2 100644 --- a/NPSimulation/Detectors/Samurai/SamuraiFieldPropagation.hh +++ b/NPSimulation/Detectors/Samurai/SamuraiFieldPropagation.hh @@ -82,8 +82,7 @@ namespace NPS{ // out << setprecision(17) << pos.x() << "\t" << pos.y() << "\t" << pos.z() << "\t"; // out << setprecision(17) << mom.x() << "\t" << mom.y() << "\t" << mom.z() << "\t"; // out << setprecision(17) << mom.getR() << "\t" << mom.getPhi() << "\t" << mom.getTheta() << endl; - //} - + //} bool m_Initialized; //field map initialized double m_StepSize; //propagation step size diff --git a/NPSimulation/Detectors/Vamos/ChargeStateDistribution.cc b/NPSimulation/Detectors/Vamos/ChargeStateDistribution.cc new file mode 100644 index 0000000000000000000000000000000000000000..f9625aaf2165ae4e5366c86e3c2e0e8aa567c45e --- /dev/null +++ b/NPSimulation/Detectors/Vamos/ChargeStateDistribution.cc @@ -0,0 +1,163 @@ +/***************************************************************************** + * Copyright (C) 2009-2016 this file is part of the NPTool Project * + * * + * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * + * For the list of contributors see $NPTOOL/Licence/Contributors * + *****************************************************************************/ + +/***************************************************************************** + * Original Author: Elia Pilotto, Omar Nasr * + * contact address: pilottoelia@gmail.com, omar.nasr@etu.unicaen.fr * + * * + * Creation Date : September 2021 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: * + * Use to kill the beam track and replace it with the reaction product * + * * + * * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + *****************************************************************************/ + +//C++ libraries +#include <iostream> +#include <string> +#include <iomanip> +#include <cmath> +#include <Randomize.hh> +#include <fstream> +//G4 libraries +#include "G4Electron.hh" +#include "G4Gamma.hh" +#include "G4IonTable.hh" +#include "G4EmCalculator.hh" +#include "G4VPhysicalVolume.hh" +#include "G4IonTable.hh" +#include "G4UserLimits.hh" +#include "G4SystemOfUnits.hh" +#include "G4PhysicalConstants.hh" +//nptool libraries +#include "NPFunction.h" +#include "NPInputParser.h" +#include "NPOptionManager.h" +#include "NPSFunction.hh" +//other +#include "ChargeStateDistribution.hh" +#include "RootOutput.h" +#include "TLorentzVector.h" + +using namespace std; + +//////////////////////////////////////////////////////////////////////////////// +NPS::ChargeStateDistribution::ChargeStateDistribution(G4String modelName, G4Region* envelope) + : G4VFastSimulationModel(modelName, envelope) { + + m_StepSize = 5*mm; +} + +//////////////////////////////////////////////////////////////////////////////// +NPS::ChargeStateDistribution::ChargeStateDistribution(G4String modelName) + : G4VFastSimulationModel(modelName) {} + +//////////////////////////////////////////////////////////////////////////////// +NPS::ChargeStateDistribution::~ChargeStateDistribution() {} + +//////////////////////////////////////////////////////////////////////////////// +G4bool NPS::ChargeStateDistribution::IsApplicable(const G4ParticleDefinition& particleType) { + if (particleType.GetPDGCharge() < 10) return false; + else return true; +} + +//////////////////////////////////////////////////////////////////////////////// +G4bool NPS::ChargeStateDistribution::ModelTrigger(const G4FastTrack& fastTrack) { + + cout << "////////////////// MODEL TRIGGER ///////////////////" << endl; + const G4Track* PrimaryTrack = fastTrack.GetPrimaryTrack(); + + G4ThreeVector V = PrimaryTrack->GetMomentum().unit(); + G4ThreeVector P = fastTrack.GetPrimaryTrackLocalPosition(); + G4VSolid* solid = fastTrack.GetPrimaryTrack()->GetVolume()->GetLogicalVolume()->GetSolid(); + double to_exit = solid->DistanceToOut(P, V); + double to_entrance = solid->DistanceToOut(P, -V); + bool is_first = (to_entrance == 0); + bool is_end = (to_exit == 0); + + if (is_first && m_shoot) { + m_shoot = false; + } + + if (is_first) { + m_shoot = true; + } + + cout << "m_StepSize= " << m_StepSize << endl; + cout << "to_entrance= " << to_entrance << endl; + cout << "to_exit= " << to_exit << endl; + cout << "is_first= " << is_first << endl; + cout << "m_shoot= " << m_shoot << endl; + + cout << "Model trigger Q = " << PrimaryTrack->GetDynamicParticle()->GetCharge() << endl; + return m_shoot; +} + +//////////////////////////////////////////////////////////////////////////////// +void NPS::ChargeStateDistribution::DoIt(const G4FastTrack& fastTrack, G4FastStep& fastStep) { + + m_shoot = false; + cout << "////////////////// DO IT ///////////////////" << endl; + G4ThreeVector localPosition = fastTrack.GetPrimaryTrackLocalPosition(); + G4ThreeVector localDirection = fastTrack.GetPrimaryTrackLocalDirection(); + const G4Track* track = fastTrack.GetPrimaryTrack(); + + G4double time = track->GetGlobalTime(); + G4ThreeVector pdirection = track->GetMomentum().unit(); + G4ThreeVector Momentum = track->GetMomentum(); + G4ThreeVector worldPosition = track->GetPosition(); + G4double originalKineticEnergy = track->GetKineticEnergy(); + + G4int Z = track->GetParticleDefinition()->GetAtomicNumber(); + G4int A = track->GetParticleDefinition()->GetAtomicMass(); + G4double Q = track->GetDynamicParticle()->GetCharge(); + + //G4DynamicParticle* dynamicParticle = const_cast<G4DynamicParticle*>(fastTrack.GetPrimaryTrack()->GetDynamicParticle()); + //dynamicParticle->SetCharge(Q + 5); // Modify the particle's charge + + //G4double newQ = track->GetDynamicParticle()->GetCharge(); + + //const G4DynamicParticle* dynamicParticle = fastTrack.GetPrimaryTrack()->GetDynamicParticle(); + //G4ParticleDefinition* particleDef = const_cast<G4ParticleDefinition*>(dynamicParticle->GetDefinition()); + + /* + fastStep.SetPrimaryTrackFinalKineticEnergy(originalKineticEnergy); + fastStep.ProposePrimaryTrackFinalMomentumDirection(localDirection,true); + fastStep.SetPrimaryTrackFinalPosition(localPosition+G4ThreeVector(0,0,1),true); + fastStep.ProposePrimaryTrackFinalTime(time); + fastStep.SetTotalEnergyDeposited(0); + fastStep.ProposePrimaryTrackPathLength(m_StepSize); + */ + + // Set the end of the step conditions + fastStep.SetPrimaryTrackFinalKineticEnergyAndDirection(0, localDirection); + fastStep.SetPrimaryTrackFinalPosition(localPosition+G4ThreeVector(0,0,1),true); + fastStep.SetTotalEnergyDeposited(0); + fastStep.SetPrimaryTrackFinalTime(time); // FIXME + fastStep.KillPrimaryTrack(); + fastStep.SetPrimaryTrackPathLength(0.0); + + G4int newCharge = Q+5; + static G4IonTable* IonTable = G4ParticleTable::GetParticleTable()->GetIonTable(); + G4ParticleDefinition* particleDef; + particleDef = IonTable->GetIon(Z,A); + + G4DynamicParticle dynamicParticle(particleDef,Momentum.unit(),originalKineticEnergy); + fastStep.CreateSecondaryTrack(dynamicParticle,localPosition+G4ThreeVector(0,0,2),time); + + cout << Q << " " << dynamicParticle.GetCharge() << endl; + + return; +} + + diff --git a/NPSimulation/Detectors/Vamos/ChargeStateDistribution.hh b/NPSimulation/Detectors/Vamos/ChargeStateDistribution.hh new file mode 100644 index 0000000000000000000000000000000000000000..e10e2f659e408663fcae93ba26237a15ca178ada --- /dev/null +++ b/NPSimulation/Detectors/Vamos/ChargeStateDistribution.hh @@ -0,0 +1,67 @@ +/***************************************************************************** + * Copyright (C) 2009-2016 this file is part of the NPTool Project * + * * + * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * + * For the list of contributors see $NPTOOL/Licence/Contributors * + *****************************************************************************/ + +/***************************************************************************** + * Original Author: Pierre Morfouace * + * contact address: pierre.morfouace@cea.fr * + * * + * Creation Date : January 2023 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: Based On SamuraiFieldPropagation * + * Use to kill the beam track and replace it with the reaction product * + * * + * * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + *****************************************************************************/ + +#ifndef ChargeStateDistribution_h +#define ChargeStateDistribution_h + +#include "G4VFastSimulationModel.hh" +#include "G4Abla.hh" +#include "G4AblaInterface.hh" +#include "G4Fragment.hh" +#include "G4VPhysicalVolume.hh" +#include "G4Region.hh" + +#include "GladFieldMap.h" + +#include <string> +#include <vector> +#include <fstream> +#include <iomanip> + +namespace NPS{ + + class ChargeStateDistribution : public G4VFastSimulationModel{ + public: + ChargeStateDistribution (G4String, G4Region*); + ChargeStateDistribution (G4String); + ~ChargeStateDistribution (); + + public: + G4bool IsApplicable(const G4ParticleDefinition&); + G4bool ModelTrigger(const G4FastTrack &); + void DoIt(const G4FastTrack&, G4FastStep&); + + void RungeKuttaPropagation (const G4FastTrack& fastTrack, G4FastStep& fastStep); + + public: + void SetStepSize(double step){m_StepSize=step;}; + + private: + double m_StepSize; + bool m_shoot; + }; +} + + +#endif diff --git a/NPSimulation/Detectors/Vamos/Vamos.cc b/NPSimulation/Detectors/Vamos/Vamos.cc index 3c3855ab008769f65e103dca3e82267eed6bca8f..582eb93d19f42834628a871f6154e1ff70d8492c 100644 --- a/NPSimulation/Detectors/Vamos/Vamos.cc +++ b/NPSimulation/Detectors/Vamos/Vamos.cc @@ -38,6 +38,9 @@ #include "G4Transform3D.hh" #include "G4UnionSolid.hh" #include "G4VisAttributes.hh" +#include "G4RegionStore.hh" +#include "G4FastSimulationManager.hh" +#include "G4UserLimits.hh" // NPTool header #include "CalorimeterScorers.hh" @@ -49,6 +52,7 @@ #include "NPSHitsMap.hh" #include "RootOutput.h" #include "Vamos.hh" +#include "ChargeStateDistribution.hh" // CLHEP header #include "CLHEP/Random/RandGauss.h" @@ -108,8 +112,8 @@ namespace Vamos_NS { const G4double TMW2_Thickness = 5 * mm; // FPMW - const G4double FPMW1_Width = 200 * mm; - const G4double FPMW1_Length = 400 * mm; + const G4double FPMW1_Width = 70 * mm; + const G4double FPMW1_Length = 95 * mm; const G4double FPMW1_Thickness = 5 * mm; @@ -139,7 +143,8 @@ Vamos::Vamos() { m_DC4 = 0; m_DC1 = 0; m_DC2 = 0; - + m_ChargeStateRegion = 0; + m_StepSize = 5*mm; ICcounter = 0; // RGB Color + Transparency @@ -315,7 +320,7 @@ G4AssemblyVolume* Vamos::BuildTMW1() { G4LogicalVolume* mylar_volume = new G4LogicalVolume(box_mylar, MylarMaterial, "logic_Vamos_mylar1", 0, 0, 0); mylar_volume->SetVisAttributes(m_VisMylar); - gas_volume->SetSensitiveDetector(m_InterScorer); + //gas_volume->SetSensitiveDetector(m_InterScorer); G4ThreeVector pos_gas = G4ThreeVector(0,0,0); m_TMW1->AddPlacedVolume(gas_volume, pos_gas, 0); @@ -355,6 +360,23 @@ G4AssemblyVolume* Vamos::BuildTMW2() { pos_mylar = G4ThreeVector(0,0,0.5*TMW2_Thickness + 0.5*Mylar_Thickness); m_TMW2->AddPlacedVolume(mylar_volume, pos_mylar, 0); + + /*m_ChargeStateRegion = G4RegionStore::GetInstance()->FindOrCreateRegion("ChargeStateProcess"); + m_ChargeStateRegion->AddRootLogicalVolume(gas_volume); + m_ChargeStateRegion->SetUserLimits(new G4UserLimits(m_StepSize)); + G4FastSimulationManager* mng = m_ChargeStateRegion->GetFastSimulationManager(); + + unsigned int size = m_ChargeStateModel.size(); + for(unsigned int i=0; i<size; i++) + mng->RemoveFastSimulationModel(m_ChargeStateModel[i]); + + m_ChargeStateModel.clear(); + G4VFastSimulationModel* fsm; + fsm = new NPS::ChargeStateDistribution("ChargeStateDistribution",m_ChargeStateRegion); + //((NPS::ChargeStateDistribution*) fsm)->SetStepSize(m_StepSize); + m_ChargeStateModel.push_back(fsm);*/ + + } return m_TMW2; } @@ -368,23 +390,41 @@ G4AssemblyVolume* Vamos::BuildFPMW1() { G4Material* DetectorMaterial = MaterialManager::getInstance()->GetGasFromLibrary(m_Gas_FPMW1, m_Pressure_FPMW1, 295 * kelvin); G4Material* MylarMaterial = MaterialManager::getInstance()->GetMaterialFromLibrary("Mylar"); - - G4LogicalVolume* gas_volume = new G4LogicalVolume(box, DetectorMaterial, "logic_Vamos_FPMW1", 0, 0, 0); - gas_volume->SetVisAttributes(m_VisGasC4H10); - + G4Material* Vaccuum = MaterialManager::getInstance()->GetMaterialFromLibrary("Vaccuum"); + + G4LogicalVolume* gas_volume_FPMW1 = new G4LogicalVolume(box, Vaccuum, "logic_Vamos_FPMW1", 0, 0, 0); + gas_volume_FPMW1->SetVisAttributes(m_VisGasC4H10); + gas_volume_FPMW1->SetSensitiveDetector(m_InterScorer); + G4LogicalVolume* mylar_volume = new G4LogicalVolume(box_mylar, MylarMaterial, "logic_Vamos_mylar3", 0, 0, 0); mylar_volume->SetVisAttributes(m_VisMylar); - gas_volume->SetSensitiveDetector(m_InterScorer); G4ThreeVector pos_gas = G4ThreeVector(0,0,0); - m_FPMW1->AddPlacedVolume(gas_volume, pos_gas, 0); + m_FPMW1->AddPlacedVolume(gas_volume_FPMW1, pos_gas, 0); + + //G4ThreeVector pos_mylar = G4ThreeVector(0,0,-0.5*FPMW1_Thickness - 0.5*Mylar_Thickness); + //m_FPMW1->AddPlacedVolume(mylar_volume, pos_mylar, 0); + + //pos_mylar = G4ThreeVector(0,0,0.5*FPMW1_Thickness + 0.5*Mylar_Thickness); + //m_FPMW1->AddPlacedVolume(mylar_volume, pos_mylar, 0); + + + /*m_ChargeStateRegion = G4RegionStore::GetInstance()->FindOrCreateRegion("ChargeStateProcess"); + m_ChargeStateRegion->AddRootLogicalVolume(gas_volume_FPMW1); + m_ChargeStateRegion->SetUserLimits(new G4UserLimits(m_StepSize)); + G4FastSimulationManager* mng = m_ChargeStateRegion->GetFastSimulationManager(); + + unsigned int size = m_ChargeStateModel.size(); + for(unsigned int i=0; i<size; i++) + mng->RemoveFastSimulationModel(m_ChargeStateModel[i]); - /*G4ThreeVector pos_mylar = G4ThreeVector(0,0,-0.5*FPMW1_Thickness - 0.5*Mylar_Thickness); - m_FPMW1->AddPlacedVolume(mylar_volume, pos_mylar, 0); + m_ChargeStateModel.clear(); + G4VFastSimulationModel* fsm; + fsm = new NPS::ChargeStateDistribution("ChargeStateDistribution",m_ChargeStateRegion); + ((NPS::ChargeStateDistribution*) fsm)->SetStepSize(m_StepSize); + m_ChargeStateModel.push_back(fsm);*/ - pos_mylar = G4ThreeVector(0,0,0.5*FPMW1_Thickness + 0.5*Mylar_Thickness); - m_FPMW1->AddPlacedVolume(mylar_volume, pos_mylar, 0);*/ } return m_FPMW1; } diff --git a/NPSimulation/Detectors/Vamos/Vamos.hh b/NPSimulation/Detectors/Vamos/Vamos.hh index d191da9c253895280a4d215931e0715ac11124ed..bed3a01b94549e5b4df5a46571c15d2acde8e373 100644 --- a/NPSimulation/Detectors/Vamos/Vamos.hh +++ b/NPSimulation/Detectors/Vamos/Vamos.hh @@ -33,6 +33,7 @@ using namespace std; #include "G4AssemblyVolume.hh" #include "G4MultiFunctionalDetector.hh" #include "G4UnionSolid.hh" +#include "G4VFastSimulationModel.hh" // NPTool header #include "NPSVDetector.hh" @@ -135,6 +136,12 @@ class Vamos : public NPS::VDetector{ private: TVamosData* m_Event ; + private: + G4Region* m_ChargeStateRegion; + vector<G4VFastSimulationModel*> m_ChargeStateModel; + + int m_StepSize; + //////////////////////////////////////////////////// ///////////////Private intern Data////////////////// //////////////////////////////////////////////////// diff --git a/NPSimulation/EventGenerator/CMakeLists.txt b/NPSimulation/EventGenerator/CMakeLists.txt index 5d5f47b34a146c2b066964e8ffd826aba667b033..f9e5c7d86595561c182d537439b2b46c1ee49c71 100644 --- a/NPSimulation/EventGenerator/CMakeLists.txt +++ b/NPSimulation/EventGenerator/CMakeLists.txt @@ -1,2 +1,2 @@ -add_library(NPSEventGenerator OBJECT EventGeneratorBeam.cc EventGeneratorMultipleParticle.cc EventGeneratorCosmic.cc EventGeneratorIsotropic.cc EventGeneratorGEFReader.cc VEventGenerator.cc) +add_library(NPSEventGenerator OBJECT EventGeneratorBeam.cc EventGeneratorMultipleParticle.cc EventGeneratorCosmic.cc EventGeneratorIsotropic.cc EventGeneratorGEFReader.cc EventGeneratorAlphaDecay.cc VEventGenerator.cc) #target_link_libraries(NPSEventGenerator ${ROOT_LIBRARIES} ${Geant4_LIBRARIES} ${NPLib_LIBRARIES} -lNPInitialConditions -lNPInteractionCoordinates ) diff --git a/NPSimulation/EventGenerator/EventGeneratorAlphaDecay.cc b/NPSimulation/EventGenerator/EventGeneratorAlphaDecay.cc new file mode 100644 index 0000000000000000000000000000000000000000..5bf1247c8b90d28c845d11ad7694bde15ad02b11 --- /dev/null +++ b/NPSimulation/EventGenerator/EventGeneratorAlphaDecay.cc @@ -0,0 +1,188 @@ +/***************************************************************************** + * Copyright (C) 2009-2016 this file is part of the NPTool Project * + * * + * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * + * For the list of contributors see $NPTOOL/Licence/Contributors * + *****************************************************************************/ + +/***************************************************************************** + * Original Author: Adrien MATTA contact address: matta@lpccaen.in2p3.fr * + * * + * Creation Date : January 2009 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: * + * This event Generator is used to simulated AlphaDecay ion Source * + * Very usefull to figure out Geometric Efficacity of experimental Set-Up * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ +// C++ +#include<limits> + +// G4 headers +#include "G4ParticleTable.hh" +#include "G4IonTable.hh" +// G4 headers including CLHEP headers +// for generating random numbers +#include "Randomize.hh" + +// NPS headers +#include "EventGeneratorAlphaDecay.hh" + +// NPL headers +#include "RootOutput.h" +#include "NPNucleus.h" +#include "NPOptionManager.h" +#include "NPFunction.h" +using namespace CLHEP; + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +EventGeneratorAlphaDecay::EventGeneratorAlphaDecay(){ + // NPTool path + string GlobalPath = getenv("NPTOOL"); + string StandardPath = GlobalPath + "/Inputs/EventGenerator/"; + + m_EnergyLow = 0 ; + m_EnergyHigh = 0 ; + m_x0 = 0 ; + m_y0 = 0 ; + m_z0 = 0 ; + m_SigmaX = 0 ; + m_SigmaY = 0 ; + m_SigmaZ = 0 ; + m_particle = NULL; + m_ExcitationEnergy = 0 ; + m_direction = 'z' ; + m_SourceProfile = "Gauss" ; + m_ActivityBq = 1. ; + m_TimeWindow = 50.e-9 ; + + m_ParticleStack = ParticleStack::getInstance(); + +} + + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +EventGeneratorAlphaDecay::~EventGeneratorAlphaDecay(){ +} + + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void EventGeneratorAlphaDecay::ReadConfiguration(NPL::InputParser parser){ + + vector<NPL::InputBlock*> blocks = parser.GetAllBlocksWithToken("AlphaDecay"); + if(NPOptionManager::getInstance()->GetVerboseLevel()) + cout << endl << "\033[1;35m//// AlphaDecay reaction found " << endl; + + vector<string> token = {"EnergyLow","EnergyHigh","HalfOpenAngleMin","HalfOpenAngleMax","x0","y0","z0","ActivityBq"}; + cout << "block.size() = " << blocks.size() << endl; + for(unsigned int i = 0 ; i < blocks.size() ; i++){ + cout << "[" << i << "]" << endl; + if(blocks[i]->HasTokenList(token)){ + + m_EnergyLow = blocks[i]->GetDouble("EnergyLow","MeV"); + m_EnergyHigh = blocks[i]->GetDouble("EnergyHigh","MeV"); + m_HalfOpenAngleMin = blocks[i]->GetDouble("HalfOpenAngleMin","deg"); + m_HalfOpenAngleMax = blocks[i]->GetDouble("HalfOpenAngleMax","deg"); + m_x0 = blocks[i]->GetDouble("x0","mm"); + m_y0 = blocks[i]->GetDouble("y0","mm"); + m_z0 = blocks[i]->GetDouble("z0","mm"); + m_SourceProfile = blocks[i]->GetString("SourceProfile"); + m_SigmaX = blocks[i]->GetDouble("SigmaX","mm"); + m_SigmaY = blocks[i]->GetDouble("SigmaY","mm"); + m_SigmaZ = blocks[i]->GetDouble("SigmaZ","mm"); + m_direction = blocks[i]->GetString("Direction"); + m_ExcitationEnergy = blocks[i]->GetDouble("ExcitationEnergy","MeV"); + m_ActivityBq = blocks[i]->GetDouble("ActivityBq","Bq"); + m_TimeWindow = blocks[i]->GetDouble("TimeWindow","s"); + cout << "m_parameters done " << endl; + } + else{ + cout << "ERROR: check your input file formatting \033[0m" << endl; + exit(1); + } + } +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void EventGeneratorAlphaDecay::GenerateEvent(G4Event* evt){ + + double alpha_t = 0.; + double step_t = 1.e-2 / m_ActivityBq; // step size in [s] to have a maximum proba of 1.e-2 + int step_n = ((int)(m_TimeWindow / step_t) == 0) ? 1 : (int)(m_TimeWindow / step_t); + bool DecayOn = true; + + for(int i=0; i<step_n; i++){ + + m_particle=NULL; + if(m_particle==NULL){ + m_particle = G4ParticleTable::GetParticleTable()->GetIonTable()->GetIon(2, 4,m_ExcitationEnergy); + if(i>0){ + alpha_t = i*step_t; + DecayOn = !(RandFlat::shoot() >= 1.e-2); + } + } + if(!DecayOn) continue; + + G4double cos_theta_min = cos(m_HalfOpenAngleMin); + G4double cos_theta_max = cos(m_HalfOpenAngleMax); + G4double cos_theta = cos_theta_min + (cos_theta_max - cos_theta_min) * RandFlat::shoot(); + G4double theta = acos(cos_theta) ; + G4double phi = RandFlat::shoot() * 2 * pi ; + G4double particle_energy = m_EnergyLow + RandFlat::shoot() * (m_EnergyHigh - m_EnergyLow) ; + + G4double x0, y0, z0; + G4double momentum_x, momentum_y, momentum_z; + + if(m_SourceProfile=="Flat"){ + double rand_r = m_SigmaX*sqrt(RandFlat::shoot()); + double rand_theta = RandFlat::shoot() * 2. * pi; + x0 = m_x0 + rand_r * cos(rand_theta); + y0 = m_y0 + rand_r * sin(rand_theta); + z0 = RandFlat::shoot(m_z0*mm-m_SigmaZ*mm, m_z0*mm+m_SigmaZ*mm); + } + else{ // by default gaussian source profile is considered + x0 = RandGauss::shoot(m_x0,m_SigmaX); + y0 = RandGauss::shoot(m_y0,m_SigmaY); + z0 = RandGauss::shoot(m_z0,m_SigmaZ); + } + if(m_direction == 'z') + { + // Direction of particle, energy and laboratory angle + momentum_x = sin(theta) * cos(phi) ; + momentum_y = sin(theta) * sin(phi) ; + momentum_z = cos(theta) ; + + } + else if(m_direction == 'y') + { + // Direction of particle, energy and laboratory angle + momentum_z = sin(theta) * cos(phi) ; + momentum_x = sin(theta) * sin(phi) ; + momentum_y = cos(theta) ; + } + else // = 'x' + { + // Direction of particle, energy and laboratory angle + momentum_y = sin(theta) * cos(phi) ; + momentum_z = sin(theta) * sin(phi) ; + momentum_x = cos(theta) ; + } + //cout << "add an alpha particle to stack with global time = " << alpha_t << " s ==> " << alpha_t*1.e9 << " ns" << endl; + NPS::Particle particle(m_particle, theta, particle_energy, G4ThreeVector(momentum_x, momentum_y, momentum_z), G4ThreeVector(x0, y0, z0),alpha_t*1.e9,true); + m_ParticleStack->AddParticleToStack(particle); + } + +} + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void EventGeneratorAlphaDecay::InitializeRootOutput(){ + +} diff --git a/NPSimulation/EventGenerator/EventGeneratorAlphaDecay.hh b/NPSimulation/EventGenerator/EventGeneratorAlphaDecay.hh new file mode 100644 index 0000000000000000000000000000000000000000..6addfbc1b5333a39849ff2447220d6f153558926 --- /dev/null +++ b/NPSimulation/EventGenerator/EventGeneratorAlphaDecay.hh @@ -0,0 +1,74 @@ +#ifndef EventGeneratorAlphaDecay_h +#define EventGeneratorAlphaDecay_h +/***************************************************************************** + * Copyright (C) 2009-2016 this file is part of the NPTool Project * + * * + * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * + * For the list of contributors see $NPTOOL/Licence/Contributors * + *****************************************************************************/ + +/***************************************************************************** + * Original Author: Adrien MATTA contact address: matta@lpccaen.in2p3.fr * + * * + * Creation Date : January 2009 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: * + * This event Generator is used to simulated AlphaDecay ion Source * + * Very usefull to figure out Geometric Efficacity of experimental Set-Up * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ +// C++ header +#include <string> +#include <cmath> +using namespace std; + +using namespace CLHEP; + +// G4 headers +#include "G4Event.hh" + +// NPS headers +#include "VEventGenerator.hh" +#include "ParticleStack.hh" +#include "NPInputParser.h" + +// ROOT headers +#include "TString.h" +#include "TF1.h" +#include "TH1.h" + +class EventGeneratorAlphaDecay : public NPS::VEventGenerator{ +public: // Constructor and destructor + EventGeneratorAlphaDecay() ; + virtual ~EventGeneratorAlphaDecay(); + +public: // Inherit from VEventGenerator Class + void ReadConfiguration(NPL::InputParser) ; + void GenerateEvent(G4Event*) ; + void InitializeRootOutput() ; + +private: // Source parameter from input file + G4double m_EnergyLow ; // Lower limit of energy range + G4double m_EnergyHigh ; // Upper limit of energy range + G4double m_HalfOpenAngleMin ; // Min Half open angle of the source + G4double m_HalfOpenAngleMax ; // Max Half open angle of the source + G4double m_x0 ; // Vertex Position X + G4double m_y0 ; // Vertex Position Y + G4double m_z0 ; // Vertex Position Z + G4double m_SigmaX ; // if m_SourceProfile==Flat, m_SigmaX=radius + G4double m_SigmaY ; // if m_SourceProfile==Flat, m_SigmaY=0 + G4double m_SigmaZ ; + TString m_direction ; + TString m_SourceProfile ; // either "Gauss" (by default) or "Flat" on disk with radius of m_SigmaX + G4ParticleDefinition* m_particle ; // Kind of particle to shoot isotropically + G4double m_ExcitationEnergy ; // Excitation energy of the emitted particle + G4double m_ActivityBq ; // if m_DecayLaw = "on" gives here the Activity in Bq of the sample + G4double m_TimeWindow ; // DAQ time window during we see the alpha pile-up + + ParticleStack* m_ParticleStack ; +}; +#endif diff --git a/NPSimulation/EventGenerator/EventGeneratorBeam.cc b/NPSimulation/EventGenerator/EventGeneratorBeam.cc index a8684d28b867724853c9f0616783b3dd56515e42..c8c0387d30ac258bdfbe00298329d4fcafe79b8d 100644 --- a/NPSimulation/EventGenerator/EventGeneratorBeam.cc +++ b/NPSimulation/EventGenerator/EventGeneratorBeam.cc @@ -99,7 +99,7 @@ void EventGeneratorBeam::GenerateEvent(G4Event* anEvent){ m_Beam->GenerateRandomEvent(InitialBeamEnergy, x0, y0, z0, Beam_thetaX, Beam_phiY); double Xdir = tan(Beam_thetaX); //tan(thetax)= px/pz double Ydir = tan(Beam_phiY); //tan(phiy)= py/pz - double Zdir = 1; // fix pz=1 arbitrarily + double Zdir = 1.0; // fix pz=1 arbitrarily G4ThreeVector BeamDir(Xdir,Ydir,Zdir); BeamDir = BeamDir.unit(); G4ThreeVector BeamPos(x0,y0,z0); @@ -112,7 +112,7 @@ void EventGeneratorBeam::GenerateEvent(G4Event* anEvent){ InitialBeamEnergy, BeamDir.unit(), BeamPos, - 1); + true); m_ParticleStack->AddBeamParticleToStack(BeamParticle); diff --git a/NPSimulation/EventGenerator/EventGeneratorIsotropic.cc b/NPSimulation/EventGenerator/EventGeneratorIsotropic.cc index ff9013b94257a40b84e3c5a08b56c29c6cd442cd..844db198245255b0e3c056341fbc03ce927b4b4b 100644 --- a/NPSimulation/EventGenerator/EventGeneratorIsotropic.cc +++ b/NPSimulation/EventGenerator/EventGeneratorIsotropic.cc @@ -69,9 +69,6 @@ EventGeneratorIsotropic::SourceParameters::SourceParameters(){ m_particle = NULL; m_direction = 'z' ; m_SourceProfile = "Gauss" ; - m_DecayLaw = "off"; - m_ActivityBq = 1. ; - m_TimeWindow = 1.e-9 ; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -94,6 +91,10 @@ void EventGeneratorIsotropic::ReadConfiguration(NPL::InputParser parser){ if(blocks[i]->HasToken("EnergyDistributionHist")){ vector<string> file = blocks[i]->GetVectorString("EnergyDistributionHist"); m_EnergyDistributionHist = NPL::Read1DProfile(file[0],file[1]); + + for(int j=0;j<m_EnergyDistributionHist->GetNbinsX();j++) + if(m_EnergyDistributionHist->GetBinCenter(j+1) < it->m_EnergyLow || m_EnergyDistributionHist->GetBinCenter(j+1) > it->m_EnergyHigh) + m_EnergyDistributionHist->SetBinContent(j+1,0); } if(blocks[i]->HasToken("Direction")) it->m_direction=blocks[i]->GetString("Direction"); @@ -131,12 +132,6 @@ void EventGeneratorIsotropic::ReadConfiguration(NPL::InputParser parser){ it->m_SigmaZ=blocks[i]->GetDouble("SigmaZ","mm"); if(blocks[i]->HasToken("Multiplicity")) it->m_Multiplicity=blocks[i]->GetVectorInt("Multiplicity"); - if(blocks[i]->HasToken("DecayLaw")) - it->m_DecayLaw=blocks[i]->GetString("DecayLaw"); - if(blocks[i]->HasToken("ActivityBq")) - it->m_ActivityBq=blocks[i]->GetDouble("ActivityBq","Bq"); - if(blocks[i]->HasToken("TimeWindow")) - it->m_TimeWindow=blocks[i]->GetDouble("TimeWindow","s"); } else{ cout << "ERROR: check your input file formatting \033[0m" << endl; @@ -165,13 +160,7 @@ void EventGeneratorIsotropic::ReadConfiguration(NPL::InputParser parser){ void EventGeneratorIsotropic::GenerateEvent(G4Event*){ for(auto& par : m_Parameters) { - double delta_t = 0.; - bool DecayOn = true; for(unsigned int p=0; p<par.m_particleName.size(); p++){ - double step_t = 1.e-2 / par.m_ActivityBq; // [s] - if(par.m_DecayLaw=="on"){ - par.m_Multiplicity[p] = ((int)(par.m_TimeWindow / step_t) == 0) ? 1 : (int)(50.e-9 / step_t); - } for(int i=0; i<par.m_Multiplicity[p]; i++){ par.m_particle=NULL; if(par.m_particle==NULL){ @@ -185,13 +174,8 @@ void EventGeneratorIsotropic::GenerateEvent(G4Event*){ NPL::Nucleus* N = new NPL::Nucleus(par.m_particleName[p]); par.m_particle = G4ParticleTable::GetParticleTable()->GetIonTable()->GetIon(N->GetZ(), N->GetA(),par.m_ExcitationEnergy[p]); delete N; - if(par.m_DecayLaw == "on" && i>0){ - delta_t = i*step_t; - DecayOn = !(par.m_DecayLaw == "on" && RandFlat::shoot() > 1.e-2); - } } } - if(!DecayOn) continue; G4double cos_theta_min = cos(par.m_HalfOpenAngleMin); G4double cos_theta_max = cos(par.m_HalfOpenAngleMax); G4double cos_theta = cos_theta_min + (cos_theta_max - cos_theta_min) * RandFlat::shoot(); @@ -249,7 +233,6 @@ void EventGeneratorIsotropic::GenerateEvent(G4Event*){ momentum_x = cos(theta) ; } - NPS::Particle particle(par.m_particle, theta, particle_energy, G4ThreeVector(momentum_x, momentum_y, momentum_z), G4ThreeVector(x0, y0, z0)); m_ParticleStack->AddParticleToStack(particle); } diff --git a/NPSimulation/EventGenerator/EventGeneratorIsotropic.hh b/NPSimulation/EventGenerator/EventGeneratorIsotropic.hh index 2e0cab718bac2e88d7f7baf6bbdb10e9046b89fd..d1161a3f25687e21b806c70ca655136dc31b1b09 100644 --- a/NPSimulation/EventGenerator/EventGeneratorIsotropic.hh +++ b/NPSimulation/EventGenerator/EventGeneratorIsotropic.hh @@ -72,9 +72,6 @@ private: // Source parameter from input file vector<G4double> m_ExcitationEnergy ; // Excitation energy of the emitted particle vector<string> m_particleName ; vector<G4int> m_Multiplicity ; - TString m_DecayLaw ; // [on]: mult follows the decay law controlled by T1/2 [off]: fix mult - G4double m_ActivityBq ; // if m_DecayLaw = "on" gives here the Activity in Bq of the sample - G4double m_TimeWindow ; // DAQ time window during we see the alpha pile-up }; vector<SourceParameters> m_Parameters ; ParticleStack* m_ParticleStack ; diff --git a/NPSimulation/Process/BeamReaction.cc b/NPSimulation/Process/BeamReaction.cc index 6d395b9b2512306972f72e1449750de9fdea76a0..43b6d68407079c08420b1938e7c2b4b5165cc010 100644 --- a/NPSimulation/Process/BeamReaction.cc +++ b/NPSimulation/Process/BeamReaction.cc @@ -242,7 +242,7 @@ G4bool NPS::BeamReaction::ModelTrigger(const G4FastTrack& fastTrack) { //////////////////////////////////////////////////////////////////////////////// void NPS::BeamReaction::DoIt(const G4FastTrack& fastTrack, G4FastStep& fastStep) { - // std::cout << "DOIT" << std::endl; + //std::cout << "DO IT" << std::endl; m_shoot = false; m_length = abs(m_length); // Get the track info @@ -309,8 +309,9 @@ void NPS::BeamReaction::DoIt(const G4FastTrack& fastTrack, G4FastStep& fastStep) // Use to clean up the IonTable in case of the Ex changing at every event G4ParticleDefinition* HeavyName; - if (m_Reaction.GetUseExInGeant4()) + if (m_Reaction.GetUseExInGeant4()){ HeavyName = IonTable->GetIon(HeavyZ, HeavyA, m_Reaction.GetExcitation4() * MeV); + } else HeavyName = IonTable->GetIon(HeavyZ, HeavyA); @@ -683,26 +684,20 @@ void NPS::BeamReaction::DoIt(const G4FastTrack& fastTrack, G4FastStep& fastStep) // Momentum in beam and world frame for light particle 1 G4ThreeVector momentum_kine1_beam(sin(Theta1) * cos(Phi1), sin(Theta1) * sin(Phi1), cos(Theta1)); G4ThreeVector momentum_kine1_world = momentum_kine1_beam; - // momentum_kine1_world.rotate(Beam_theta, uy); // rotation of Beam_theta around Y axis - // momentum_kine1_world.rotate(Beam_phi, uz); // rotation of Beam_phi around Z axis + momentum_kine1_world.rotate(Beam_theta, uy); // rotation of Beam_theta around Y axis + momentum_kine1_world.rotate(Beam_phi, uz); // rotation of Beam_phi around Z axis // Momentum in beam and world frame for light particle 2 G4ThreeVector momentum_kine2_beam(sin(Theta2) * cos(Phi2), sin(Theta2) * sin(Phi2), cos(Theta2)); G4ThreeVector momentum_kine2_world = momentum_kine2_beam; - // momentum_kine2_world.rotate(Beam_theta, uy); // rotation of Beam_theta on Y axis - // momentum_kine2_world.rotate(Beam_phi, uz); // rotation of Beam_phi on Z axis + momentum_kine2_world.rotate(Beam_theta, uy); // rotation of Beam_theta on Y axis + momentum_kine2_world.rotate(Beam_phi, uz); // rotation of Beam_phi on Z axis // Momentum in beam and world frame for heavy residual - // - // G4ThreeVector momentum_kineB_beam(sin(ThetaB) * cos(PhiB + pi), - // sin(ThetaB) * sin(PhiB + pi), cos(ThetaB)); - // G4ThreeVector momentum_kineB_world = momentum_kineB_beam; - // momentum_kineB_world.rotate(Beam_theta, uy); // rotation of Beam_theta on Y axis - // momentum_kineB_world.rotate(Beam_phi, uz); // rotation of Beam_phi on Z axis - + // Old: G4ThreeVector momentum_kineB_beam(sin(ThetaB) * cos(PhiB + pi), + // Old: sin(ThetaB) * sin(PhiB + pi), cos(ThetaB)); TLorentzVector* P_A = m_QFS.GetEnergyImpulsionLab_A(); TLorentzVector* P_B = m_QFS.GetEnergyImpulsionLab_B(); - G4ThreeVector momentum_kineB_beam(P_B->Px(), P_B->Py(), P_B->Pz()); momentum_kineB_beam = momentum_kineB_beam.unit(); TKEB = P_B->Energy() - m_QFS.GetParticleB()->Mass(); diff --git a/NPSimulation/Process/CMakeLists.txt b/NPSimulation/Process/CMakeLists.txt index ae5e920aef0871e32bb2dd5e0bbb6553c3c33ad1..040566ef9469818336f847bf0e57352352326508 100644 --- a/NPSimulation/Process/CMakeLists.txt +++ b/NPSimulation/Process/CMakeLists.txt @@ -1,6 +1,8 @@ if(Geant4_VERSION_MAJOR GREATER 10) message("Compiling without IonIonElastic") + add_library(NPSProcess OBJECT ThreeBody.cc FissionDecay.cc Decay.cc BeamReaction.cc FastDriftElectron.cc PhysicsList.cc G4DriftElectron.cc G4IonizationWithDE.cc G4DriftElectronPhysics.cc G4DEAbsorption.cc G4DEAmplification.cc G4DETransport.cc menate_R.cc NeutronHPphysics.cc NeutronHPMessenger.cc) + add_definitions(-DGEANT4_11) add_definitions(-DUSE_NEUTRONHP) else() diff --git a/NPSimulation/Scorers/CMakeLists.txt b/NPSimulation/Scorers/CMakeLists.txt index e53c4bb72b44ad28598f3bc7a5fbf647f2c2d4ba..be3835155e1f39b926aa552e3a34d32002b6cded 100644 --- a/NPSimulation/Scorers/CMakeLists.txt +++ b/NPSimulation/Scorers/CMakeLists.txt @@ -1,2 +1,2 @@ -add_library(NPSScorers SHARED CylinderTPCScorers.cc DriftChamberScorers.cc NPSHitsMap.hh CalorimeterScorers.cc InteractionScorers.cc DSSDScorers.cc SiliconScorers.cc PhotoDiodeScorers.cc ObsoleteGeneralScorers.cc DriftElectronScorers.cc TPCScorers.cc MDMScorer.cc NeutronDetectorScorers.cc ProcessScorers.cc PlasticBar.cc GeScorers.cc GaseousDetectorScorers.cc) +add_library(NPSScorers SHARED CylinderTPCScorers.cc DriftChamberScorers.cc NPSHitsMap.hh CalorimeterScorers.cc InteractionScorers.cc DSSDScorers.cc SiliconScorers.cc PhotoDiodeScorers.cc ObsoleteGeneralScorers.cc DriftElectronScorers.cc TPCScorers.cc MDMScorer.cc NeutronDetectorScorers.cc ProcessScorers.cc PlasticBar.cc GeScorers.cc GaseousDetectorScorers.cc WireScorers.cc) target_link_libraries(NPSScorers ${ROOT_LIBRARIES} ${Geant4_LIBRARIES} ${NPLib_LIBRARIES} -lNPInitialConditions -lNPInteractionCoordinates) diff --git a/NPSimulation/Scorers/GaseousDetectorScorers.cc b/NPSimulation/Scorers/GaseousDetectorScorers.cc index 7cf09f69db15a66fac08b3e0ccf54bccd7368e7b..13e899cbeecbe7bc751ef066d55970e034674cc3 100644 --- a/NPSimulation/Scorers/GaseousDetectorScorers.cc +++ b/NPSimulation/Scorers/GaseousDetectorScorers.cc @@ -48,10 +48,10 @@ vector<GaseousDetectorData>::iterator GaseousDetectorDataVector::find(const unsigned int& index) { for (vector<GaseousDetectorData>::iterator it = m_Data.begin(); it != m_Data.end(); it++) { - if ((*it).GetIndex() == index) - return it; + if ((*it).GetIndex() == index) // comparison of the current index with the argument index + return it; // return immediatly the iterator } - return m_Data.end(); + return m_Data.end(); // return m_Data.end() if index is not found } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -73,46 +73,45 @@ G4bool PS_GaseousDetector::ProcessHits(G4Step* aStep, G4TouchableHistory*) { // Contain Particle Id, Energy, Time and as many copy number as nested volume unsigned int mysize = m_NestingLevel.size(); string particlename = aStep->GetTrack()->GetParticleDefinition()->GetParticleName(); - int parentID = aStep->GetTrack()->GetParentID(); - int trackID = aStep->GetTrack()->GetTrackID(); - double step_posZ = aStep->GetPreStepPoint()->GetPosition().z(); - - t_Energy = aStep->GetTotalEnergyDeposit(); - t_Time = aStep->GetPreStepPoint()->GetGlobalTime(); // DeltaT [ns] since the begining of the simulated event up to the begining of the step + //if (particlename != "alpha") return TRUE; + int trackID = aStep->GetTrack()->GetTrackID(); + double step_posZ = aStep->GetPostStepPoint()->GetPosition().z(); // z coordinate at the end of the step. + t_Energy = aStep->GetTotalEnergyDeposit(); + t_Time = 0.5*(aStep->GetPreStepPoint()->GetGlobalTime()+aStep->GetPostStepPoint()->GetGlobalTime()); // DeltaT [ns] since the begining of the simulated event up to the begining of the step t_ParticleName.push_back(particlename); - t_ParentID.push_back(parentID); t_TrackID.push_back(trackID); t_StepPosZ.push_back(step_posZ); t_EnergyLossPerStep.push_back(t_Energy); t_StepTime.push_back(t_Time); t_Level.clear(); - for (unsigned int i = 0; i < mysize; i++) { t_Level.push_back( aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber( m_NestingLevel[i])); } + + // Check if the particle has interact before, if yes, add up the energies and update the track vector<GaseousDetectorData>::iterator it; it = m_Data.find(GaseousDetectorData::CalculateIndex(t_Level)); if (it != m_Data.end()) { - // update the m_Data vector at each step + // update the m_Data vector at each step corresponding at the same sensitive volume it->Add(t_Energy); it->SetParticleName(particlename); - it->SetParentID(parentID); it->SetTrackID(trackID); it->SetStepPosZ(step_posZ); it->SetEnergyLossPerStep(t_Energy); it->SetStepTime(t_Time); } else { - // first step: initialize a new m_Data vector + // first step: initialize a new m_Data vector<GaseousDetectorData> // t_Time [ns] is the time at first step - m_Data.Set(t_Energy, t_Time, t_Level, t_ParticleName, t_ParentID, t_TrackID, t_StepPosZ, t_EnergyLossPerStep, t_StepTime); + m_Data.Set(t_Energy, t_Time, t_Level, t_ParticleName, t_TrackID, t_StepPosZ, t_EnergyLossPerStep, t_StepTime); } + return TRUE; } @@ -127,7 +126,6 @@ void PS_GaseousDetector::clear() { m_Data.clear(); t_Level.clear(); t_ParticleName.clear(); - t_ParentID.clear(); t_TrackID.clear(); t_StepPosZ.clear(); t_EnergyLossPerStep.clear(); diff --git a/NPSimulation/Scorers/GaseousDetectorScorers.hh b/NPSimulation/Scorers/GaseousDetectorScorers.hh index 21e813707155b596c74e8d615fefe508f19fd9ce..f403a4d9289c3abdac6e7d73c7396eb60b9862ca 100644 --- a/NPSimulation/Scorers/GaseousDetectorScorers.hh +++ b/NPSimulation/Scorers/GaseousDetectorScorers.hh @@ -39,7 +39,6 @@ namespace GaseousDetectorScorers { const double& Time, const vector<unsigned int>& Nesting, const vector<string>& name, - const vector<int>& pID, const vector<int>& tID, const vector<double>& posZ, const vector<double>& DE, @@ -49,7 +48,6 @@ namespace GaseousDetectorScorers { m_Energy=Energy; m_Time=Time; m_ParticleName=name; - m_ParentID=pID; m_TrackID=tID; m_StepPosZ=posZ; m_EnergyLossPerStep=DE; @@ -63,7 +61,6 @@ namespace GaseousDetectorScorers { double m_Energy; double m_Time; vector<string> m_ParticleName; - vector<int> m_ParentID; vector<int> m_TrackID; vector<double> m_StepPosZ; vector<double> m_EnergyLossPerStep; @@ -78,7 +75,6 @@ namespace GaseousDetectorScorers { inline double GetEnergy() const {return m_Energy;} inline double GetTime() const {return m_Time;} inline vector<string> GetParticleName() const {return m_ParticleName;} - inline vector<int> GetParentID() const {return m_ParentID;} inline vector<int> GetTrackID() const {return m_TrackID;} inline vector<double> GetStepPosZ() const {return m_StepPosZ;} inline vector<double> GetEnergyLossPerStep() const {return m_EnergyLossPerStep;} @@ -91,7 +87,6 @@ namespace GaseousDetectorScorers { void Add(const double& DE) {m_Energy+=DE;}; // add specific information at each step inline void SetParticleName(const string& name){m_ParticleName.push_back(name);} - inline void SetParentID(const int& id){m_ParentID.push_back(id);} inline void SetTrackID(const int& id){m_TrackID.push_back(id);} inline void SetStepPosZ(const double& z){m_StepPosZ.push_back(z);} inline void SetEnergyLossPerStep(const double& DE){m_EnergyLossPerStep.push_back(DE);} @@ -120,12 +115,11 @@ namespace GaseousDetectorScorers { const double& Time, const vector<unsigned int>& Nesting, const vector<string>& name, - const vector<int>& pID, const vector<int>& tID, const vector<double>& z, const vector<double>& DE, const vector<double>& t) { - m_Data.push_back(GaseousDetectorData(Energy,Time,Nesting,name,pID,tID,z,DE,t)); + m_Data.push_back(GaseousDetectorData(Energy,Time,Nesting,name,tID,z,DE,t)); }; const GaseousDetectorData* operator[](const unsigned int& i) const {return &m_Data[i];}; }; @@ -161,7 +155,6 @@ namespace GaseousDetectorScorers { double t_Time; // time at first step // all these vectors are used to accumulate info at each step vector<string> t_ParticleName; - vector<int> t_ParentID; vector<int> t_TrackID; vector<double> t_StepPosZ; vector<double> t_EnergyLossPerStep; @@ -173,7 +166,6 @@ namespace GaseousDetectorScorers { inline double GetEnergy(const unsigned int& i) {return m_Data[i]->GetEnergy();}; inline double GetTime(const unsigned int& i) {return m_Data[i]->GetTime();}; inline vector<string> GetParticleName(const unsigned int& i) const {return m_Data[i]->GetParticleName();} - inline vector<int> GetParentID(const unsigned int& i) const {return m_Data[i]->GetParentID();} inline vector<int> GetTrackID(const unsigned int& i) const {return m_Data[i]->GetTrackID();} inline vector<double> GetStepPosZ(const unsigned int& i) const {return m_Data[i]->GetStepPosZ();} inline vector<double> GetEnergyLossPerStep(const unsigned int& i) const {return m_Data[i]->GetEnergyLossPerStep();} diff --git a/NPSimulation/Scorers/InteractionScorers.cc b/NPSimulation/Scorers/InteractionScorers.cc index 6eddde1bb66ac72ea75bb23d2b68d1717606148a..30dedbb04bd92bbb1b368efaa7bc82dbe496be08 100644 --- a/NPSimulation/Scorers/InteractionScorers.cc +++ b/NPSimulation/Scorers/InteractionScorers.cc @@ -53,19 +53,25 @@ G4bool PS_Interactions::ProcessHits(G4Step* aStep, G4TouchableHistory*){ t_Mass = aStep->GetTrack()->GetDynamicParticle()->GetMass(); t_Charge = aStep->GetTrack()->GetDynamicParticle()->GetCharge(); double KineticEnergy = aStep->GetTrack()->GetDynamicParticle()->GetKineticEnergy(); + if (t_Charge > 0) { t_Brho = sqrt(KineticEnergy * KineticEnergy + 2 * KineticEnergy * t_Mass) / (c_light * t_Charge); + } + + else { + t_Brho = NAN; + } // add it to check the theta of momentum // MOMENT = aStep->GetPreStepPoint()->GetMomentumDirection(); vector<InteractionData>::iterator it; it = m_DataVector.find(t_Index); - if(it!=m_DataVector.end()) + if(it!=m_DataVector.end()){ it->Add(t_Energy); + } else { m_DataVector.Set(t_Index,t_Energy,t_Time,t_Position.x(),t_Position.y(),t_Position.z(), /*MOMENT*/ t_Position.theta(),t_Position.phi(), t_ParticleName, t_A, t_Z, t_Mass, t_Charge, t_Brho); - } return TRUE; diff --git a/NPSimulation/Scorers/PlasticBar.cc b/NPSimulation/Scorers/PlasticBar.cc index 1ea8e9ad5aff2a936240a92efb354976e35cbb6a..f545d937900d51852c0fc67fe2fb73fab565f480 100644 --- a/NPSimulation/Scorers/PlasticBar.cc +++ b/NPSimulation/Scorers/PlasticBar.cc @@ -97,7 +97,8 @@ PS_PlasticBar::PS_PlasticBar(G4String name, vector<G4int> NestingLevel, G4int de m_NestingLevel = NestingLevel; auto tree = RootOutput::getInstance()->GetTree(); tree->Branch("PlasticBar_Time", &t_Time); - tree->Branch("PlasticBar_Position", &t_Position); + tree->Branch("PlasticBar_PositionX", &t_PositionX); + tree->Branch("PlasticBar_PositionY", &t_PositionY); tree->Branch("PlasticBar_TotalEnergy_by_Z", &t_TotalEnergy_by_Z); tree->Branch("PlasticBar_TotalLight_by_Z", &t_TotalLight_by_Z); t_TotalEnergy_by_Z = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; @@ -127,7 +128,8 @@ G4bool PS_PlasticBar::ProcessHits(G4Step* aStep, G4TouchableHistory*) { if (particlename != "neutron" && Z < 7) { t_Energy = aStep->GetTotalEnergyDeposit(); t_Time = aStep->GetPostStepPoint()->GetGlobalTime(); - t_Position = aStep->GetPostStepPoint()->GetPosition()[1]; + t_PositionX = aStep->GetPostStepPoint()->GetPosition()[0]; + t_PositionY = aStep->GetPostStepPoint()->GetPosition()[1]; t_Level.clear(); for (unsigned int i = 0; i < mysize; i++) { @@ -140,7 +142,8 @@ G4bool PS_PlasticBar::ProcessHits(G4Step* aStep, G4TouchableHistory*) { it = m_Data.find(PlasticBarData::CalculateIndex(t_Level)); if (it == m_Data.end()) { - m_Data.Set(0.0, 0.0, t_Position, t_Time, t_Level); + m_Data.Set(0.0, 0.0, t_PositionY, t_Time, t_Level, t_PositionX); + AddEntry(); // Adds null entry to t_Energy_by_ChargeNumber auto lastEnergyEntry = t_Energy_by_ChargeNumber.end() - 1; // iterator (*lastEnergyEntry)[Z] += t_Energy; @@ -163,7 +166,7 @@ G4bool PS_PlasticBar::ProcessHits(G4Step* aStep, G4TouchableHistory*) { // now, if the next interaction is a Transportation, and there is an energy deposition, it means that we are // observing the last step. To avoid having all the positions on the exit of the bar, lets consider the // PreStepPosition instead. - } + } //end "if process transportation" return TRUE; } diff --git a/NPSimulation/Scorers/PlasticBar.hh b/NPSimulation/Scorers/PlasticBar.hh index 691743be1066079af7f324eb75351d3c24e1ac71..d931fd3f5330b8de17bfe6824c0fb4b5d21fb63d 100644 --- a/NPSimulation/Scorers/PlasticBar.hh +++ b/NPSimulation/Scorers/PlasticBar.hh @@ -36,14 +36,16 @@ namespace PlasticBar { // Hold One hit info class PlasticBarData { - public: - PlasticBarData(const double& Energy, const double& Light, const double& Position, const double& Time, - const std::vector<unsigned int>& Nesting) { + public: + PlasticBarData(const double& Energy, const double& Light, const double& PositionY, const double& Time, + const std::vector<unsigned int>& Nesting, const double& PositionX) + { m_Index = CalculateIndex(Nesting); m_Level = Nesting; m_Energy = Energy; m_Light = Light; - m_Position = Position; + m_PositionX = PositionX; + m_PositionY = PositionY; m_Time = Time; }; ~PlasticBarData(){}; @@ -53,7 +55,8 @@ namespace PlasticBar { std::vector<unsigned int> m_Level; double m_Energy; double m_Light; - double m_Position; + double m_PositionX; + double m_PositionY; double m_Time; public: @@ -64,7 +67,8 @@ namespace PlasticBar { inline std::vector<unsigned int> GetLevel() const { return m_Level; }; inline double GetEnergy() const { return m_Energy; }; inline double GetLight() const { return m_Light; }; - inline double GetPosition() const { return m_Position; }; + inline double GetPositionX() const {return m_PositionX; }; + inline double GetPositionY() const { return m_PositionY; }; inline double GetTime() const { return m_Time; }; public: @@ -89,10 +93,11 @@ namespace PlasticBar { inline unsigned int size() { return m_Data.size(); }; PlasticBarData* operator[](const unsigned int& i) { return &m_Data[i]; }; - inline void Set(const double& Energy, const double& Light, const double& Position, const double& Time, - const std::vector<unsigned int>& Nesting) { - m_Data.push_back(PlasticBarData(Energy, Light, Position, Time, Nesting)); + inline void Set(const double& Energy, const double& Light, const double& PositionY, const double& Time, + const std::vector<unsigned int>& Nesting, const double& PositionX) { + m_Data.push_back(PlasticBarData(Energy, Light, PositionY, Time, Nesting, PositionX)); }; + }; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -137,7 +142,8 @@ namespace PlasticBar { private: double t_Energy; double t_Light; - double t_Position; + double t_PositionX; + double t_PositionY; double t_Time; std::vector<unsigned int> t_Level; @@ -158,9 +164,11 @@ namespace PlasticBar { inline unsigned int GetMult() { return m_Data.size(); }; inline double GetEnergy(const unsigned int& i) { return m_Data[i]->GetEnergy(); }; inline double GetLight(const unsigned int& i) { return m_Data[i]->GetLight(); }; - inline double GetPosition(const unsigned int& i) { return m_Data[i]->GetPosition(); }; + inline double GetPositionX(const unsigned int& i) { return m_Data[i]->GetPositionX(); }; + inline double GetPositionY(const unsigned int& i) { return m_Data[i]->GetPositionY(); }; inline double GetTime(const unsigned int& i) { return m_Data[i]->GetTime(); }; inline std::vector<unsigned int> GetLevel(const unsigned int& i) { return m_Data[i]->GetLevel(); }; + }; } // namespace PlasticBar diff --git a/NPSimulation/Scorers/WireScorers.cc b/NPSimulation/Scorers/WireScorers.cc new file mode 100644 index 0000000000000000000000000000000000000000..bd0cf5a3d82836b93d717c15cf298840b748b7d5 --- /dev/null +++ b/NPSimulation/Scorers/WireScorers.cc @@ -0,0 +1,183 @@ +/***************************************************************************** + * Copyright (C) 2009-2016 this file is part of the NPTool Project * + * * + * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * + * For the list of contributors see $NPTOOL/Licence/Contributors * + *****************************************************************************/ + +/***************************************************************************** + * Original Author: Audrey ANNE contact address: anne@lpccaen.in2p3.fr * + * * + * Creation Date : July 2024 * + * Last update : January 2025 * + *---------------------------------------------------------------------------* + * Decription: * + * Scorer for wires in gas detector * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ +#include "WireScorers.hh" +#include "G4SteppingManager.hh" +#include "G4UnitsTable.hh" +#include "RootOutput.h" +#include "TMath.h" + +#include "TVector3.h" +using namespace WireScorers; +using namespace std; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +unsigned int WireData::CalculateIndex(const vector<unsigned int>& level) { + + unsigned int size = level.size(); + unsigned int result = 0; + unsigned int multiplier = 1; + for (unsigned int i = 0; i < size; i++) { + result += level[i] * multiplier; + multiplier *= 1000; + } + return result; +} + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +vector<WireData>::iterator WireDataVector::find(const unsigned int& index) { + for (vector<WireData>::iterator it = m_Data.begin(); it != m_Data.end(); it++) { + if ((*it).GetIndex() == index) + return it; + } + return m_Data.end(); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +PS_Wire::PS_Wire(G4String name, vector<G4int> NestingLevel, G4int TotalNumberLayer, G4int NumberWireByLayer, G4double DriftSpeed,std::map<unsigned int , double> map_WireAngle, G4int depth) : G4VPrimitiveScorer(name, depth) { + m_NestingLevel = NestingLevel; + m_TotalNumberLayer = TotalNumberLayer; + m_NumberWireByLayer = NumberWireByLayer; + m_DriftSpeed = DriftSpeed; + m_WireAngle = map_WireAngle; + + auto tree = RootOutput::getInstance()->GetTree(); + // tree->Branch("Layer_Number", &t_LayerNumber); + // tree->Branch("Wire_Number", &t_WireNumber); + // tree->Branch("Wire_Time", &t_Time); + // tree->Branch("Edge", &t_Edge); + + G4String PosInWireX = name + "_PosInWireX"; + G4String PosInWireY = name + "_PosInWireY"; + G4String PosInWireZ = name + "_PosInWireZ"; + + tree->Branch(PosInWireX, &t_PosInWireX); + tree->Branch(PosInWireY, &t_PosInWireY); + tree->Branch(PosInWireZ, &t_PosInWireZ); + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +PS_Wire::~PS_Wire() {} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +G4bool PS_Wire::ProcessHits(G4Step* aStep, G4TouchableHistory*) { + + // Contain information as many copy number as nested volume + unsigned int mysize = m_NestingLevel.size(); + + G4String particlename = aStep->GetTrack()->GetParticleDefinition()->GetParticleName(); + + //Solid information + static G4VSolid* solid; + solid = aStep->GetTrack()->GetTouchable()->GetSolid(); + + G4ThreeVector WirePosition = aStep->GetTrack()->GetTouchable()->GetTranslation(); //wire's center position + //cout << solid->GetName() << " WirePos X = " << WirePosition[0] << " WirePos Y = " << WirePosition[1] << " WirePos Z = " << WirePosition[2] << endl; + const G4RotationMatrix* WireRotation = aStep->GetTrack()->GetTouchable()->GetRotation(); + + // we only keep information about charged particles + if (particlename != "neutron") { + + //Detector number and Wire copy number + t_DetectorNumber = aStep->GetTrack()->GetTouchable()->GetCopyNumber(1); //Wires are contained in a box + int CopyNbr; + CopyNbr = aStep->GetTrack()->GetTouchable()->GetCopyNumber(0); + t_WireNumber = (CopyNbr-1)%m_NumberWireByLayer; //-1 because copynbr is the ID contained in the xml file and ID begins at 1. + t_LayerNumber = (floor((CopyNbr-1)/m_NumberWireByLayer)); + + //cout << "solid name = " << solid->GetName() << " particle name = " << particlename << " Copy number = " << CopyNbr << " layer number = " << t_LayerNumber << " wire number = " << t_WireNumber << endl; + + t_Level.clear(); + + G4ThreeVector PrePosWire = aStep->GetPreStepPoint()->GetPosition(); //lab position when particle enters the cylinder + G4ThreeVector PostPosWire = aStep->GetPostStepPoint()->GetPosition(); //lab position when particle exists the cylinder + + G4ThreeVector InOutDir = PostPosWire - PrePosWire; //particle's direction vector + G4ThreeVector PointC = PrePosWire + 0.5*InOutDir; //closest point to the cylinder center on the particle's path + + //cout << " presposwire = " << PrePosWire << " postposwire = " << PostPosWire << " PointC = "<< PointC << endl; + + t_PosInWireX.push_back(PointC[0]); //leading egde + t_PosInWireX.push_back(-10000); // trailing edge + + t_PosInWireY.push_back(PointC[1]); + t_PosInWireY.push_back(-10000); + + t_PosInWireZ.push_back(PointC[2]); + t_PosInWireZ.push_back(-10000); + + G4ThreeVector DirectionWireZ; // wire direction vector z' in the lab x,y,z vectors basis + DirectionWireZ = WireRotation->rowZ(); + + G4ThreeVector PointA = WirePosition; // first point on the symmetry axis of the cylinder + G4ThreeVector PointB = WirePosition + DirectionWireZ; // second point on the symmetry axis of the cylinder + + //cout << " CenterPointWire = " << PointA << " CenterPointWire + shift = " << PointB << endl; + + G4ThreeVector AB = PointB - PointA; + G4ThreeVector AC = PointC - PointA; + + G4ThreeVector CrossABAC = AB.cross(AC); + G4double MagCrossABAC = CrossABAC.mag(); + G4double MagAB = AB.mag(); + + G4double CD = MagCrossABAC/MagAB; // DriftLength + t_DrifLength = CD; + + + t_Time = (t_DrifLength/m) / (m_DriftSpeed*299792458);///!!!NEEDS TO BE FIXED BEFORE USE!!!/// + + for (unsigned int i = 0; i < mysize; i++) { + t_Level.push_back(aStep->GetPostStepPoint()->GetTouchableHandle()->GetCopyNumber(m_NestingLevel[i])); + } + + m_Data.Set(t_Time*1e9 , t_Level, t_LayerNumber, t_WireNumber,1, t_DrifLength, t_DetectorNumber); // leading egde + m_Data.Set((t_Time+(t_Time/10))*1e9 , t_Level, t_LayerNumber, t_WireNumber,0, t_DrifLength+(t_DrifLength*100), t_DetectorNumber);// trailing edge + + } + + return TRUE; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void PS_Wire::Initialize(G4HCofThisEvent*) { clear();} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void PS_Wire::EndOfEvent(G4HCofThisEvent*) {} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void PS_Wire::clear() { + m_Data.clear(); + t_Level.clear(); + + t_PosInWireX.clear(); + t_PosInWireY.clear(); + t_PosInWireZ.clear(); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void PS_Wire::DrawAll() {} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void PS_Wire::PrintAll() {} +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/NPSimulation/Scorers/WireScorers.hh b/NPSimulation/Scorers/WireScorers.hh new file mode 100644 index 0000000000000000000000000000000000000000..63cf4aba3a804a177e347e5bce103089038f4146 --- /dev/null +++ b/NPSimulation/Scorers/WireScorers.hh @@ -0,0 +1,170 @@ +#ifndef WireScorer_h +#define WireScorer_h 1 +/***************************************************************************** + * Copyright (C) 2009-2016 this file is part of the NPTool Project * + * * + * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * + * For the list of contributors see $NPTOOL/Licence/Contributors * + *****************************************************************************/ + +/***************************************************************************** + * Original Author: Audrey ANNE contact address: anne@lpccaen.in2p3.fr * + * * + * Creation Date : July 2024 * + * Last update : January 2025 * + *---------------------------------------------------------------------------* + * Decription: * + * * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + *****************************************************************************/ +#include "G4VPrimitiveScorer.hh" +#include "NPSHitsMap.hh" +// #include "NPSecondaries.hh" + +#include <array> +#include <map> +using namespace CLHEP; + +namespace WireScorers { + + + ///////////////////////////////////////////////////////////////////// + //////////////////////// class WireData //////////////////////// + ///////////////////////////////////////////////////////////////////// + // Hold One hit info + class WireData { + public: + WireData(const double& Time, const std::vector<unsigned int>& Nesting, const unsigned int& LayerNumber, const unsigned int& WireNumber, const unsigned int& Edge, const double& DriftLength, const int& DetectorNumber) + { + m_Index = CalculateIndex(Nesting); + m_Level = Nesting; + m_Time = Time; + m_LayerNumber = LayerNumber; + m_WireNumber = WireNumber; + m_Edge = Edge; + m_DriftLength = DriftLength; + m_DetectorNumber = DetectorNumber; + }; + ~WireData(){}; + + private: + unsigned int m_Index; + std::vector<unsigned int> m_Level; + double m_PositionX; + double m_Time; + unsigned int m_LayerNumber; + unsigned int m_WireNumber; + unsigned int m_Edge; + double m_DriftLength; + int m_DetectorNumber; + + public: + static unsigned int CalculateIndex(const std::vector<unsigned int>& Nesting); + + public: + inline unsigned int GetIndex() const { return m_Index; }; + inline std::vector<unsigned int> GetLevel() const { return m_Level; }; + inline double GetTime() const { return m_Time; }; + inline unsigned int GetLayerNumber() const { return m_LayerNumber; }; + inline unsigned int GetWireNumber() const { return m_WireNumber; }; + inline unsigned int GetEdge() const { return m_Edge; }; + inline double GetDriftLength() const { return m_DriftLength; }; + inline unsigned int GetDetectorNumber() const {return m_DetectorNumber; }; + + }; + + ///////////////////////////////////////////////////////////////////// + //////////////////////// class WireDataVector//////////////////////// + ///////////////////////////////////////////////////////////////////// + + // Manage a vector of Wire hit + class WireDataVector { + public: + WireDataVector(){}; + ~WireDataVector(){}; + + private: + std::vector<WireData> m_Data; + + public: + std::vector<WireData>::iterator find(const unsigned int& index); + inline void clear() { m_Data.clear(); }; + inline std::vector<WireData>::iterator end() { return m_Data.end(); }; + inline std::vector<WireData>::iterator begin() { return m_Data.begin(); }; + inline unsigned int size() { return m_Data.size(); }; + WireData* operator[](const unsigned int& i) { return &m_Data[i]; }; + + inline void Set(const double& Time,const std::vector<unsigned int>& Nesting, const unsigned int& LayerNumber, const unsigned int& WireNumber, const unsigned int& Edge, const double& DriftLength, const unsigned int& DetectorNumber) { + m_Data.push_back(WireData(Time, Nesting, LayerNumber, WireNumber, Edge, DriftLength, DetectorNumber)); + }; + + }; + + ////////////////////////////////////////////////////// + //////////////// class PS_Wire /////////////////////// + ////////////////////////////////////////////////////// + + //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + class PS_Wire : public G4VPrimitiveScorer { + + public: // with description + PS_Wire(G4String name, std::vector<G4int> NestingLevel, G4int TotalNumberLayer, G4int NumberWireByLayer, G4double DriftSpeed, std::map<unsigned int , double> map_WireAngle, G4int depth = 0 ); + ~PS_Wire(); + + protected: // with description + G4bool ProcessHits(G4Step*, G4TouchableHistory*); + + public: + void Initialize(G4HCofThisEvent*); + void EndOfEvent(G4HCofThisEvent*); + void clear(); + void DrawAll(); + void PrintAll(); + + private: + // How much level of volume nesting should be considered + // Give the list of the nesting level at which the copy number should be return. + // 0 is the lowest level possible (the actual volume copy number in which the interaction happen) + std::vector<G4int> m_NestingLevel; + G4int m_TotalNumberLayer; + G4int m_NumberWireByLayer; + G4double m_DriftSpeed; + std::map<unsigned int , double> m_WireAngle; + + private: + WireDataVector m_Data; + + private: + double t_Time; + std::vector<unsigned int> t_Level; + unsigned int t_LayerNumber; + unsigned int t_WireNumber; + unsigned int t_Edge; + double t_DrifLength; + unsigned int t_DetectorNumber; + + std::vector<double> t_PosInWireX; + std::vector<double> t_PosInWireY; + std::vector<double> t_PosInWireZ; + + public: + inline unsigned int GetMult() { return m_Data.size(); }; + inline double GetTime(const unsigned int& i) { return m_Data[i]->GetTime(); }; + inline std::vector<unsigned int> GetLevel(const unsigned int& i) { return m_Data[i]->GetLevel(); }; + + inline unsigned int GetLayerNumber (const unsigned int& i) {return m_Data[i]->GetLayerNumber(); }; + inline unsigned int GetWireNumber(const unsigned int& i) { return m_Data[i]->GetWireNumber(); }; + inline unsigned int GetEdge(const unsigned int& i) { return m_Data[i]->GetEdge(); }; + + inline double GetDriftLength(const unsigned int& i ) {return m_Data[i]->GetDriftLength();}; + + inline double GetDetectorNumber(const unsigned int& i) {return m_Data[i]->GetDetectorNumber();}; + }; + + +} // namespace Wire + +#endif diff --git a/NPSimulation/ressources/macro/vis.mac.in b/NPSimulation/ressources/macro/vis.mac.in index 37862e2d495fd8df5eafd398434b5a766e42f802..1063d15b76a34b2e998b34586a2e6fa5b5dd3f4c 100644 --- a/NPSimulation/ressources/macro/vis.mac.in +++ b/NPSimulation/ressources/macro/vis.mac.in @@ -52,10 +52,6 @@ /vis/modeling/trajectories/DrawByParentID/Decay4/setLineColourRGBA 1 1 1 1 - - -/vis/modeling/trajectories/select DrawByParentID - # To superimpose all of the events from a given run: /vis/scene/endOfEventAction accumulate 10 diff --git a/Projects/AlPhaPha/2024/Analysis.cxx b/Projects/AlPhaPha/2024/Analysis.cxx index a27c146286e260235b19e09ce647ea3654b3d146..e4442435bfaf5e12f9b227c48cdade4b8b027cfb 100644 --- a/Projects/AlPhaPha/2024/Analysis.cxx +++ b/Projects/AlPhaPha/2024/Analysis.cxx @@ -466,8 +466,32 @@ void Analysis::VamosAnalysis(){ UShort_t FPMWPat = MTOF_FP0_T0VN[0]; //20 section FPMW_Section = FPMWPat; + + //Toff + vector<double> Toff13 , Toff14, Toff23, Toff24; + const char* Path13 = "./Calibration/VAMOS/FPMW/Toff/Toff13.txt"; + const char* Path14 = "./Calibration/VAMOS/FPMW/Toff/Toff14.txt"; + const char* Path23 = "./Calibration/VAMOS/FPMW/Toff/Toff23.txt"; + const char* Path24 = "./Calibration/VAMOS/FPMW/Toff/Toff24.txt"; + + Toff13 = TxtToVector(Path13); + Toff14 = TxtToVector(Path14); + Toff23 = TxtToVector(Path23); + Toff24 = TxtToVector(Path24); + + for (int i = 0 ; i<Toff13.size() ; i++){ + Time->SetToff_DT13(Toff13.at(i)); + Time->SetToff_DT14(Toff14.at(i)); + } + FF_IC_Y = FPMW->Yf + (1442.6+6774.4-7600)*tan(FPMW->Phif); + FF_IC_X = FPMW->Xf + (1442.6+6774.4-7600)*tan(FPMW->Thetaf); + IC->SetFPMWSection(FPMW_Section); + IC->SetTTimeData(Time); + IC->SetX(FF_IC_X); + IC->SetY(FF_IC_Y); IC->BuildSimplePhysicalEvent(); + double Theta = -1000; @@ -484,29 +508,19 @@ void Analysis::VamosAnalysis(){ FF_Y3 = FPMW->PositionY[2]; //FF_IC_Y = FPMW->Yf + (1442.6+6774.4-7600)*tan(FPMW->Phif/1000); - FF_IC_Y = FPMW->Yf + (1442.6+6774.4-7600)*tan(FPMW->Phif); - FF_IC_X = FPMW->Xf + (1442.6+6774.4-7600)*tan(FPMW->Thetaf); + //FF_IC_Y = FPMW->Yf + (1442.6+6774.4-7600)*tan(FPMW->Phif); + //FF_IC_X = FPMW->Xf + (1442.6+6774.4-7600)*tan(FPMW->Thetaf); // T13 // double path1 = FPMW->GetDetectorPositionZ(0)/10./cos(FPMW->Theta_in)/cos(FPMW->Phi_in); double path2 = (FPMW->GetDetectorPositionZ(2)-7600)/10./cos(FPMW->Thetaf); - //Toff - vector<double> Toff13 , Toff14, Toff23, Toff24; - const char* Path13 = "macro/mwpc/Toff/output/Toff13.txt"; - const char* Path14 = "macro/mwpc/Toff/output/Toff14.txt"; - const char* Path23 = "macro/mwpc/Toff/output/Toff23.txt"; - const char* Path24 = "macro/mwpc/Toff/output/Toff24.txt"; - Toff13 = TxtToVector(Path13); - Toff14 = TxtToVector(Path14); - Toff23 = TxtToVector(Path23); - Toff24 = TxtToVector(Path24); double Toff[20] = {0, 588.0, 588.5, 587.95, 588.04, 587.72, 587.92, 587.9, 587.9, 588.66, 588.80, 588.67, 588.64, 588.75, 588.47, 588.65, 588.65, 588.67, 589.05, 590.3}; // To know time of electron drift in a section of the chio for (int seg = 0 ; seg < IC->fIC_TS.size() ; seg++){ - FF_DriftTime.push_back(10* (IC->fIC_TS.at(seg) - Time->GetTS_MWPC13(0)) - ((Time->GetTime_MWPC13(0)+Toff13.at(FPMW_Section)))); + FF_DriftTime.push_back(10* (IC->fIC_TS.at(seg) - Time->GetTS_MWPC13(0)) - ((Time->GetTime_MWPC13(0)+Toff13.at(FPMW_Section)))); } @@ -549,7 +563,7 @@ vector<double> Analysis::TxtToVector(const char *Path){ } file.close(); } else { - std::cerr << "Error opening file.\n"; + std::cerr << "Error opening ToffTXT file.\n"; } return values; diff --git a/Projects/AlPhaPha/2024/Calibration.txt b/Projects/AlPhaPha/2024/Calibration.txt index ed13a8ecf5de0f545d26e1efd99cb3e3044893bb..9482014240fd7134e66aae9e8ea8e6d3b9e951ae 100644 --- a/Projects/AlPhaPha/2024/Calibration.txt +++ b/Projects/AlPhaPha/2024/Calibration.txt @@ -18,6 +18,7 @@ CalibrationFilePath ./Calibration/Energy/PISTA_BACK_DE.cal ./Calibration/Energy/PISTA_BACK_E_min.cal + ./Calibration/VAMOS/CHIO/Chio_Z_Calibration.cal ./Calibration/VAMOS/CHIO/Chio_E_sec5.cal ./Calibration/VAMOS/CHIO/Chio_E_sec6.cal ./Calibration/VAMOS/CHIO/Chio_E_sec7.cal diff --git a/Projects/AlPhaPha/2024/Calibration/VAMOS/CHIO/Chio_Z_Calibration.cal b/Projects/AlPhaPha/2024/Calibration/VAMOS/CHIO/Chio_Z_Calibration.cal new file mode 100644 index 0000000000000000000000000000000000000000..f1d13b42c659affc1bdab08fa570a5d1e3ea1279 --- /dev/null +++ b/Projects/AlPhaPha/2024/Calibration/VAMOS/CHIO/Chio_Z_Calibration.cal @@ -0,0 +1 @@ +IC_Z_CALIBRATION -31.5137 0.0166442 -1.88596e-06 1.17654e-10 -3.47639e-15 3.91394e-20 \ No newline at end of file diff --git a/Projects/AlPhaPha/2024/Calibration/VAMOS/CHIO/ICXY_Profile.root b/Projects/AlPhaPha/2024/Calibration/VAMOS/CHIO/ICXY_Profile.root new file mode 100644 index 0000000000000000000000000000000000000000..2cf84134e67c590f140be48ec1c2ddb014511ea9 Binary files /dev/null and b/Projects/AlPhaPha/2024/Calibration/VAMOS/CHIO/ICXY_Profile.root differ diff --git a/Projects/AlPhaPha/2024/Calibration/VAMOS/CHIO/Spline_DE.root b/Projects/AlPhaPha/2024/Calibration/VAMOS/CHIO/Spline_DE.root new file mode 100644 index 0000000000000000000000000000000000000000..3f836c86b60107e6db3d76b928c0e74a6dc64b99 Binary files /dev/null and b/Projects/AlPhaPha/2024/Calibration/VAMOS/CHIO/Spline_DE.root differ diff --git a/Projects/AlPhaPha/2024/Calibration/VAMOS/CHIO/Spline_Y.root b/Projects/AlPhaPha/2024/Calibration/VAMOS/CHIO/Spline_Y.root new file mode 100644 index 0000000000000000000000000000000000000000..7f15947d1e488acb0ed5e365f6adaf3d8e246c11 Binary files /dev/null and b/Projects/AlPhaPha/2024/Calibration/VAMOS/CHIO/Spline_Y.root differ diff --git a/Projects/AlPhaPha/2024/Calibration/VAMOS/CHIO/Z_spline.root b/Projects/AlPhaPha/2024/Calibration/VAMOS/CHIO/Z_spline.root index be9c0fc9e1c2366a155c94a7ea1fb9a10bf62fe0..a989c00e1c78053f13fe9d07c4a6a75bb43506c3 100644 Binary files a/Projects/AlPhaPha/2024/Calibration/VAMOS/CHIO/Z_spline.root and b/Projects/AlPhaPha/2024/Calibration/VAMOS/CHIO/Z_spline.root differ diff --git a/Projects/AlPhaPha/2024/Calibration/VAMOS/FPMW/Linearisation.txt b/Projects/AlPhaPha/2024/Calibration/VAMOS/FPMW/Linearisation.txt new file mode 100644 index 0000000000000000000000000000000000000000..172c1f69ce422ccf47d39f2e2bd4ae9963e7496e --- /dev/null +++ b/Projects/AlPhaPha/2024/Calibration/VAMOS/FPMW/Linearisation.txt @@ -0,0 +1,10195 @@ +Vector 1: +Det 1: + Bin 0: -90 -89.9 -89.8 -89.7 -89.6 -89.5 -89.4 -89.3 -89.2 -89.1 -89 + Bin 1: -89 -88.9 -88.8 -88.7 -88.6 -88.5 -88.4 -88.3 -88.2 -88.1 -88 + Bin 2: -88 -87.9 -87.8 -87.7 -87.6 -87.5 -87.4 -87.3 -87.2 -87.1 -87 + Bin 3: -87 -86.9 -86.8 -86.7 -86.6 -86.5 -86.4 -86.3 -86.2 -86.1 -86 + Bin 4: -86 -85.9 -85.8 -85.7 -85.6 -85.5 -85.4 -85.3 -85.2 -85.1 -85 + Bin 5: -85 -84.9 -84.8 -84.7 -84.6 -84.5 -84.4 -84.3 -84.2 -84.1 -84 + Bin 6: -84 -83.9 -83.8 -83.7 -83.6 -83.5 -83.4 -83.3 -83.2 -83.1 -83 + Bin 7: -83 -82.9 -82.8 -82.7 -82.6 -82.5 -82.4 -82.3 -82.2 -82.1 -82 + Bin 8: -82 -81.9 -81.8 -81.7 -81.6 -81.5 -81.4 -81.3 -81.2 -81.1 -81 + Bin 9: -81 -80.9 -80.8 -80.7 -80.6 -80.5 -80.4 -80.3 -80.2 -80.1 -80 + Bin 10: -80 -79.9 -79.8 -79.7 -79.6 -79.5 -79.4 -79.3 -79.2 -79.1 -79 + Bin 11: -79 -78.9 -78.8 -78.7 -78.6 -78.5 -78.4 -78.3 -78.2 -78.1 -78 + Bin 12: -78 -77.9 -77.8 -77.7 -77.6 -77.5 -77.4 -77.3 -77.2 -77.1 -77 + Bin 13: -77 -76.9 -76.8 -76.7 -76.6 -76.5 -76.4 -76.3 -76.2 -76.1 -76 + Bin 14: -76 -75.9 -75.8 -75.7 -75.6 -75.5 -75.4 -75.3 -75.2 -75.1 -75 + Bin 15: -75 -74.9 -74.8 -74.7 -74.6 -74.5 -74.4 -74.3 -74.2 -74.1 -74 + Bin 16: -74 -73.9 -73.8 -73.7 -73.6 -73.5 -73.4 -73.3 -73.2 -73.1 -73 + Bin 17: -73 -72.9 -72.8 -72.7 -72.6 -72.5 -72.4 -72.3 -72.2 -72.1 -72 + Bin 18: -72 -71.9 -71.8 -71.7 -71.6 -71.5 -71.4 -71.3 -71.2 -71.1 -71 + Bin 19: -71 -70.9 -70.8 -70.7 -70.6 -70.5 -70.4 -70.3 -70.2 -70.1 -70 + Bin 20: -70 -69.9 -69.8 -69.7 -69.6 -69.5 -69.4 -69.3 -69.2 -69.1 -69 + Bin 21: -69 -68.9 -68.8 -68.7 -68.6 -68.5 -68.4 -68.3 -68.2 -68.1 -68 + Bin 22: -68 -67.9 -67.8 -67.7 -67.6 -67.5 -67.4 -67.3 -67.2 -67.1 -67 + Bin 23: -67 -66.9 -66.8 -66.7 -66.6 -66.5 -66.4 -66.3 -66.2 -66.1 -66 + Bin 24: -66 -65.9 -65.8 -65.7 -65.6 -65.5 -65.4 -65.3 -65.2 -65.1 -65 + Bin 25: -65 -64.9 -64.8 -64.7 -64.6 -64.5 -64.4 -64.3 -64.2 -64.1 -64 + Bin 26: -64 -63.9 -63.8 -63.7 -63.6 -63.5 -63.4 -63.3 -63.2 -63.1 -63 + Bin 27: -63 -62.9 -62.8 -62.7 -62.6 -62.5 -62.4 -62.3 -62.2 -62.1 -62 + Bin 28: -62 -61.9 -61.8 -61.7 -61.6 -61.5 -61.4 -61.3 -61.2 -61.1 -61 + Bin 29: -61 -60.9 -60.8 -60.7 -60.6 -60.5 -60.4 -60.3 -60.2 -60.1 -60 + Bin 30: -60 -59.9 -59.8 -59.7 -59.6 -59.5 -59.4 -59.3 -59.2 -59.1 -59 + Bin 31: -59 -58.9 -58.8 -58.7 -58.6 -58.5 -58.4 -58.3 -58.2 -58.1 -58 + Bin 32: -58 -57.9 -57.8 -57.7 -57.6 -57.5 -57.4 -57.3 -57.2 -57.1 -57 + Bin 33: -57 -56.9 -56.8 -56.7 -56.6 -56.5 -56.4 -56.3 -56.2 -56.1 -56 + Bin 34: -56 -55.9 -55.8 -55.7 -55.6 -55.5 -55.4 -55.3 -55.2 -55.1 -55 + Bin 35: -55 -54.9 -54.8 -54.7 -54.6 -54.5 -54.4 -54.3 -54.2 -54.1 -54 + Bin 36: -54 -53.9 -53.8 -53.7 -53.6 -53.5 -53.4 -53.3 -53.2 -53.1 -53 + Bin 37: -53 -52.9 -52.8 -52.7 -52.6 -52.5 -52.4 -52.3 -52.2 -52.1 -52 + Bin 38: -52 -51.9 -51.8 -51.7 -51.6 -51.5 -51.4 -51.3 -51.2 -51.1 -51 + Bin 39: -51 -50.9 -50.8 -50.7 -50.6 -50.5 -50.4 -50.3 -50.2 -50.1 -50 + Bin 40: -50 -49.9 -49.8 -49.7 -49.6 -49.5 -49.4 -49.3 -49.2 -49.1 -49 + Bin 41: -49 -48.9 -48.8 -48.7 -48.6 -48.5 -48.4 -48.3 -48.2 -48.1 -48 + Bin 42: -48 -47.9 -47.8 -47.7 -47.6 -47.5 -47.4 -47.3 -47.2 -47.1 -47 + Bin 43: -47 -46.9 -46.8 -46.7 -46.6 -46.5 -46.4 -46.3 -46.2 -46.1 -46 + Bin 44: -46 -45.9 -45.8 -45.7 -45.6 -45.5 -45.4 -45.3 -45.2 -45.1 -45 + Bin 45: -45 -44.9 -44.8 -44.7 -44.6 -44.5 -44.4 -44.3 -44.2 -44.1 -44 + Bin 46: -44 -43.9 -43.8 -43.7 -43.6 -43.5 -43.4 -43.3 -43.2 -43.1 -43 + Bin 47: -43 -42.9 -42.8 -42.7 -42.6 -42.5 -42.4 -42.3 -42.2 -42.1 -42 + Bin 48: -42 -41.9 -41.8 -41.7 -41.6 -41.5 -41.4 -41.3 -41.2 -41.1 -41 + Bin 49: -41 -40.9 -40.8 -40.7 -40.6 -40.5 -40.4 -40.3 -40.2 -40.1 -40 + Bin 50: -40 -39.9 -39.8 -39.7 -39.6 -39.5 -39.4 -39.3 -39.2 -39.1 -39 + Bin 51: -39 -38.9 -38.8 -38.7 -38.6 -38.5 -38.4 -38.3 -38.2 -38.1 -38 + Bin 52: -38 -37.9 -37.8 -37.7 -37.6 -37.5 -37.4 -37.3 -37.2 -37.1 -37 + Bin 53: -37 -36.9 -36.8 -36.7 -36.6 -36.5 -36.4 -36.3 -36.2 -36.1 -36 + Bin 54: -36 -35.9 -35.8 -35.7 -35.6 -35.5 -35.4 -35.3 -35.2 -35.1 -35 + Bin 55: -35 -34.9 -34.8 -34.7 -34.6 -34.5 -34.4 -34.3 -34.2 -34.1 -34 + Bin 56: -34 -33.9 -33.8 -33.7 -33.6 -33.5 -33.4 -33.3 -33.2 -33.1 -33 + Bin 57: -33 -32.9 -32.8 -32.7 -32.6 -32.5 -32.4 -32.3 -32.2 -32.1 -32 + Bin 58: -32 -31.9 -31.8 -31.7 -31.6 -31.5 -31.4 -31.3 -31.2 -31.1 -31 + Bin 59: -31 -30.9 -30.8 -30.7 -30.6 -30.5 -30.4 -30.3 -30.2 -30.1 -30 + Bin 60: -30 -29.9 -29.8 -29.7 -29.6 -29.5 -29.4 -29.3 -29.2 -29.1 -29 + Bin 61: -29 -28.9 -28.8 -28.7 -28.6 -28.5 -28.4 -28.3 -28.2 -28.1 -28 + Bin 62: -28 -27.9 -27.8 -27.7 -27.6 -27.5 -27.4 -27.3 -27.2 -27.1 -27 + Bin 63: -27 -26.9 -26.8 -26.7 -26.6 -26.5 -26.4 -26.3 -26.2 -26.1 -26 + Bin 64: -26 -25.9 -25.8 -25.7 -25.6 -25.5 -25.4 -25.3 -25.2 -25.1 -25 + Bin 65: -25 -24.9 -24.8 -24.7 -24.6 -24.5 -24.4 -24.3 -24.2 -24.1 -24 + Bin 66: -24 -23.9 -23.8 -23.7 -23.6 -23.5 -23.4 -23.3 -23.2 -23.1 -23 + Bin 67: -23 -22.9 -22.8 -22.7 -22.6 -22.5 -22.4 -22.3 -22.2 -22.1 -22 + Bin 68: -22 -21.9 -21.8 -21.7 -21.6 -21.5 -21.4 -21.3 -21.2 -21.1 -21 + Bin 69: -21 -20.9 -20.8 -20.7 -20.6 -20.5 -20.4 -20.3 -20.2 -20.1 -20 + Bin 70: -20 -19.9 -19.8 -19.7 -19.6 -19.5 -19.4 -19.3 -19.2 -19.1 -19 + Bin 71: -19 -18.9 -18.8 -18.7 -18.6 -18.5 -18.4 -18.3 -18.2 -18.1 -18 + Bin 72: -18 -17.9 -17.8 -17.7 -17.6 -17.5 -17.4 -17.3 -17.2 -17.1 -17 + Bin 73: -17 -16.9 -16.8 -16.7 -16.6 -16.5 -16.4 -16.3 -16.2 -16.1 -16 + Bin 74: -16 -15.9 -15.8 -15.7 -15.6 -15.5 -15.4 -15.3 -15.2 -15.1 -15 + Bin 75: -15 -14.9 -14.8 -14.7 -14.6 -14.5 -14.4 -14.3 -14.2 -14.1 -14 + Bin 76: -14 -13.9 -13.8 -13.7 -13.6 -13.5 -13.4 -13.3 -13.2 -13.1 -13 + Bin 77: -13 -12.9 -12.8 -12.7 -12.6 -12.5 -12.4 -12.3 -12.2 -12.1 -12 + Bin 78: -12 -11.9 -11.8 -11.7 -11.6 -11.5 -11.4 -11.3 -11.2 -11.1 -11 + Bin 79: -11 -10.9 -10.8 -10.7 -10.6 -10.5 -10.4 -10.3 -10.2 -10.1 -10 + Bin 80: -10 -9.9 -9.8 -9.7 -9.6 -9.5 -9.4 -9.3 -9.2 -9.1 -9 + Bin 81: -9 -8.9 -8.8 -8.7 -8.6 -8.5 -8.4 -8.3 -8.2 -8.1 -8 + Bin 82: -8 -7.9 -7.8 -7.7 -7.6 -7.5 -7.4 -7.3 -7.2 -7.1 -7 + Bin 83: -7 -6.9 -6.8 -6.7 -6.6 -6.5 -6.4 -6.3 -6.2 -6.1 -6 + Bin 84: -6 -5.9 -5.8 -5.7 -5.6 -5.5 -5.4 -5.3 -5.2 -5.1 -5 + Bin 85: -5 -4.9 -4.8 -4.7 -4.6 -4.5 -4.4 -4.3 -4.2 -4.1 -4 + Bin 86: -4 -3.9 -3.8 -3.7 -3.6 -3.5 -3.4 -3.3 -3.2 -3.1 -3 + Bin 87: -3 -2.9 -2.8 -2.7 -2.6 -2.5 -2.4 -2.3 -2.2 -2.1 -2 + Bin 88: -2 -1.9 -1.8 -1.7 -1.6 -1.5 -1.4 -1.3 -1.2 -1.1 -1 + Bin 89: -1 -0.9 -0.8 -0.7 -0.6 -0.5 -0.4 -0.3 -0.2 -0.1 0 + Bin 90: 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 + Bin 91: 1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2 + Bin 92: 2 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3 + Bin 93: 3 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4 + Bin 94: 4 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5 + Bin 95: 5 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6 + Bin 96: 6 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7 + Bin 97: 7 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8 + Bin 98: 8 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9 + Bin 99: 9 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 10 + Bin 100: 10 10.1 10.2 10.3 10.4 10.5 10.6 10.7 10.8 10.9 11 + Bin 101: 11 11.1 11.2 11.3 11.4 11.5 11.6 11.7 11.8 11.9 12 + Bin 102: 12 12.1 12.2 12.3 12.4 12.5 12.6 12.7 12.8 12.9 13 + Bin 103: 13 13.1 13.2 13.3 13.4 13.5 13.6 13.7 13.8 13.9 14 + Bin 104: 14 14.1 14.2 14.3 14.4 14.5 14.6 14.7 14.8 14.9 15 + Bin 105: 15 15.1 15.2 15.3 15.4 15.5 15.6 15.7 15.8 15.9 16 + Bin 106: 16 16.1 16.2 16.3 16.4 16.5 16.6 16.7 16.8 16.9 17 + Bin 107: 17 17.1 17.2 17.3 17.4 17.5 17.6 17.7 17.8 17.9 18 + Bin 108: 18 18.1 18.2 18.3 18.4 18.5 18.6 18.7 18.8 18.9 19 + Bin 109: 19 19.1 19.2 19.3 19.4 19.5 19.6 19.7 19.8 19.9 20 + Bin 110: 20 20.1 20.2 20.3 20.4 20.5 20.6 20.7 20.8 20.9 21 + Bin 111: 21 21.1 21.2 21.3 21.4 21.5 21.6 21.7 21.8 21.9 22 + Bin 112: 22 22.1 22.2 22.3 22.4 22.5 22.6 22.7 22.8 22.9 23 + Bin 113: 23 23.1 23.2 23.3 23.4 23.5 23.6 23.7 23.8 23.9 24 + Bin 114: 24 24.1 24.2 24.3 24.4 24.5 24.6 24.7 24.8 24.9 25 + Bin 115: 25 25.1 25.2 25.3 25.4 25.5 25.6 25.7 25.8 25.9 26 + Bin 116: 26 26.1 26.2 26.3 26.4 26.5 26.6 26.7 26.8 26.9 27 + Bin 117: 27 27.1 27.2 27.3 27.4 27.5 27.6 27.7 27.8 27.9 28 + Bin 118: 28 28.1 28.2 28.3 28.4 28.5 28.6 28.7 28.8 28.9 29 + Bin 119: 29 29.1 29.2 29.3 29.4 29.5 29.6 29.7 29.8 29.9 30 + Bin 120: 30 30.1 30.2 30.3 30.4 30.5 30.6 30.7 30.8 30.9 31 + Bin 121: 31 31.1 31.2 31.3 31.4 31.5 31.6 31.7 31.8 31.9 32 + Bin 122: 32 32.1 32.2 32.3 32.4 32.5 32.6 32.7 32.8 32.9 33 + Bin 123: 33 33.1 33.2 33.3 33.4 33.5 33.6 33.7 33.8 33.9 34 + Bin 124: 34 34.1 34.2 34.3 34.4 34.5 34.6 34.7 34.8 34.9 35 + Bin 125: 35 35.1 35.2 35.3 35.4 35.5 35.6 35.7 35.8 35.9 36 + Bin 126: 36 36.1 36.2 36.3 36.4 36.5 36.6 36.7 36.8 36.9 37 + Bin 127: 37 37.1 37.2 37.3 37.4 37.5 37.6 37.7 37.8 37.9 38 + Bin 128: 38 38.1 38.2 38.3 38.4 38.5 38.6 38.7 38.8 38.9 39 + Bin 129: 39 39.1 39.2 39.3 39.4 39.5 39.6 39.7 39.8 39.9 40 + Bin 130: 40 40.1 40.2 40.3 40.4 40.5 40.6 40.7 40.8 40.9 41 + Bin 131: 41 41.1 41.2 41.3 41.4 41.5 41.6 41.7 41.8 41.9 42 + Bin 132: 42 42.1 42.2 42.3 42.4 42.5 42.6 42.7 42.8 42.9 43 + Bin 133: 43 43.1 43.2 43.3 43.4 43.5 43.6 43.7 43.8 43.9 44 + Bin 134: 44 44.1 44.2 44.3 44.4 44.5 44.6 44.7 44.8 44.9 45 + Bin 135: 45 45.1 45.2 45.3 45.4 45.5 45.6 45.7 45.8 45.9 46 + Bin 136: 46 46.1 46.2 46.3 46.4 46.5 46.6 46.7 46.8 46.9 47 + Bin 137: 47 47.1 47.2 47.3 47.4 47.5 47.6 47.7 47.8 47.9 48 + Bin 138: 48 48.1 48.2 48.3 48.4 48.5 48.6 48.7 48.8 48.9 49 + Bin 139: 49 49.1 49.2 49.3 49.4 49.5 49.6 49.7 49.8 49.9 50 + Bin 140: 50 50.1 50.2 50.3 50.4 50.5 50.6 50.7 50.8 50.9 51 + Bin 141: 51 51.1 51.2 51.3 51.4 51.5 51.6 51.7 51.8 51.9 52 + Bin 142: 52 52.1 52.2 52.3 52.4 52.5 52.6 52.7 52.8 52.9 53 + Bin 143: 53 53.1 53.2 53.3 53.4 53.5 53.6 53.7 53.8 53.9 54 + Bin 144: 54 54.1 54.2 54.3 54.4 54.5 54.6 54.7 54.8 54.9 55 + Bin 145: 55 55.1 55.2 55.3 55.4 55.5 55.6 55.7 55.8 55.9 56 + Bin 146: 56 56.1 56.2 56.3 56.4 56.5 56.6 56.7 56.8 56.9 57 + Bin 147: 57 57.1 57.2 57.3 57.4 57.5 57.6 57.7 57.8 57.9 58 + Bin 148: 58 58.1 58.2 58.3 58.4 58.5 58.6 58.7 58.8 58.9 59 + Bin 149: 59 59.1 59.2 59.3 59.4 59.5 59.6 59.7 59.8 59.9 60 + Bin 150: 60 60.1 60.2 60.3 60.4 60.5 60.6 60.7 60.8 60.9 61 + Bin 151: 61 61.1 61.2 61.3 61.4 61.5 61.6 61.7 61.8 61.9 62 + Bin 152: 62 62.1 62.2 62.3 62.4 62.5 62.6 62.7 62.8 62.9 63 + Bin 153: 63 63.1 63.2 63.3 63.4 63.5 63.6 63.7 63.8 63.9 64 + Bin 154: 64 64.1 64.2 64.3 64.4 64.5 64.6 64.7 64.8 64.9 65 + Bin 155: 65 65.1 65.2 65.3 65.4 65.5 65.6 65.7 65.8 65.9 66 + Bin 156: 66 66.1 66.2 66.3 66.4 66.5 66.6 66.7 66.8 66.9 67 + Bin 157: 67 67.1 67.2 67.3 67.4 67.5 67.6 67.7 67.8 67.9 68 + Bin 158: 68 68.1 68.2 68.3 68.4 68.5 68.6 68.7 68.8 68.9 69 + Bin 159: 69 69.1 69.2 69.3 69.4 69.5 69.6 69.7 69.8 69.9 70 + Bin 160: 70 70.1 70.2 70.3 70.4 70.5 70.6 70.7 70.8 70.9 71 + Bin 161: 71 71.1 71.2 71.3 71.4 71.5 71.6 71.7 71.8 71.9 72 + Bin 162: 72 72.1 72.2 72.3 72.4 72.5 72.6 72.7 72.8 72.9 73 + Bin 163: 73 73.1 73.2 73.3 73.4 73.5 73.6 73.7 73.8 73.9 74 + Bin 164: 74 74.1 74.2 74.3 74.4 74.5 74.6 74.7 74.8 74.9 75 + Bin 165: 75 75.1 75.2 75.3 75.4 75.5 75.6 75.7 75.8 75.9 76 + Bin 166: 76 76.1 76.2 76.3 76.4 76.5 76.6 76.7 76.8 76.9 77 + Bin 167: 77 77.1 77.2 77.3 77.4 77.5 77.6 77.7 77.8 77.9 78 + Bin 168: 78 78.1 78.2 78.3 78.4 78.5 78.6 78.7 78.8 78.9 79 + Bin 169: 79 79.1 79.2 79.3 79.4 79.5 79.6 79.7 79.8 79.9 80 + Bin 170: 80 80.1 80.2 80.3 80.4 80.5 80.6 80.7 80.8 80.9 81 + Bin 171: 81 81.1 81.2 81.3 81.4 81.5 81.6 81.7 81.8 81.9 82 + Bin 172: 82 82.1 82.2 82.3 82.4 82.5 82.6 82.7 82.8 82.9 83 + Bin 173: 83 83.1 83.2 83.3 83.4 83.5 83.6 83.7 83.8 83.9 84 + Bin 174: 84 84.1 84.2 84.3 84.4 84.5 84.6 84.7 84.8 84.9 85 + Bin 175: 85 85.1 85.2 85.3 85.4 85.5 85.6 85.7 85.8 85.9 86 + Bin 176: 86 86.1 86.2 86.3 86.4 86.5 86.6 86.7 86.8 86.9 87 + Bin 177: 87 87.1 87.2 87.3 87.4 87.5 87.6 87.7 87.8 87.9 88 + Bin 178: 88 88.1 88.2 88.3 88.4 88.5 88.6 88.7 88.8 88.9 89 + Bin 179: 89 89.1 89.2 89.3 89.4 89.5 89.6 89.7 89.8 89.9 90 + +Det 2: + Bin 0: -90 -89.9 -89.8 -89.7 -89.6 -89.5 -89.4 -89.3 -89.2 -89.1 -89 + Bin 1: -89 -88.9 -88.8 -88.7 -88.6 -88.5 -88.4 -88.3 -88.2 -88.1 -88 + Bin 2: -88 -87.9 -87.8 -87.7 -87.6 -87.5 -87.4 -87.3 -87.2 -87.1 -87 + Bin 3: -87 -86.9 -86.8 -86.7 -86.6 -86.5 -86.4 -86.3 -86.2 -86.1 -86 + Bin 4: -86 -85.9 -85.8 -85.7 -85.6 -85.5 -85.4 -85.3 -85.2 -85.1 -85 + Bin 5: -85 -84.9 -84.8 -84.7 -84.6 -84.5 -84.4 -84.3 -84.2 -84.1 -84 + Bin 6: -84 -83.9 -83.8 -83.7 -83.6 -83.5 -83.4 -83.3 -83.2 -83.1 -83 + Bin 7: -83 -82.9 -82.8 -82.7 -82.6 -82.5 -82.4 -82.3 -82.2 -82.1 -82 + Bin 8: -82 -81.9 -81.8 -81.7 -81.6 -81.5 -81.4 -81.3 -81.2 -81.1 -81 + Bin 9: -81 -80.9 -80.8 -80.7 -80.6 -80.5 -80.4 -80.3 -80.2 -80.1 -80 + Bin 10: -80 -79.9 -79.8 -79.7 -79.6 -79.5 -79.4 -79.3 -79.2 -79.1 -79 + Bin 11: -79 -78.9 -78.8 -78.7 -78.6 -78.5 -78.4 -78.3 -78.2 -78.1 -78 + Bin 12: -78 -77.9 -77.8 -77.7 -77.6 -77.5 -77.4 -77.3 -77.2 -77.1 -77 + Bin 13: -77 -76.9 -76.8 -76.7 -76.6 -76.5 -76.4 -76.3 -76.2 -76.1 -76 + Bin 14: -76 -75.9 -75.8 -75.7 -75.6 -75.5 -75.4 -75.3 -75.2 -75.1 -75 + Bin 15: -75 -74.9 -74.8 -74.7 -74.6 -74.5 -74.4 -74.3 -74.2 -74.1 -74 + Bin 16: -74 -73.9 -73.8 -73.7 -73.6 -73.5 -73.4 -73.3 -73.2 -73.1 -73 + Bin 17: -73 -72.9 -72.8 -72.7 -72.6 -72.5 -72.4 -72.3 -72.2 -72.1 -72 + Bin 18: -72 -71.9 -71.8 -71.7 -71.6 -71.5 -71.4 -71.3 -71.2 -71.1 -71 + Bin 19: -71 -70.9 -70.8 -70.7 -70.6 -70.5 -70.4 -70.3 -70.2 -70.1 -70 + Bin 20: -70 -69.9 -69.8 -69.7 -69.6 -69.5 -69.4 -69.3 -69.2 -69.1 -69 + Bin 21: -69 -68.9 -68.8 -68.7 -68.6 -68.5 -68.4 -68.3 -68.2 -68.1 -68 + Bin 22: -68 -67.9 -67.8 -67.7 -67.6 -67.5 -67.4 -67.3 -67.2 -67.1 -67 + Bin 23: -67 -66.9 -66.8 -66.7 -66.6 -66.5 -66.4 -66.3 -66.2 -66.1 -66 + Bin 24: -66 -65.9 -65.8 -65.7 -65.6 -65.5 -65.4 -65.3 -65.2 -65.1 -65 + Bin 25: -65 -64.9 -64.8 -64.7 -64.6 -64.5 -64.4 -64.3 -64.2 -64.1 -64 + Bin 26: -64 -63.9 -63.8 -63.7 -63.6 -63.5 -63.4 -63.3 -63.2 -63.1 -63 + Bin 27: -63 -62.9 -62.8 -62.7 -62.6 -62.5 -62.4 -62.3 -62.2 -62.1 -62 + Bin 28: -62 -61.9 -61.8 -61.7 -61.6 -61.5 -61.4 -61.3 -61.2 -61.1 -61 + Bin 29: -61 -60.9 -60.8 -60.7 -60.6 -60.5 -60.4 -60.3 -60.2 -60.1 -60 + Bin 30: -60 -59.9 -59.8 -59.7 -59.6 -59.5 -59.4 -59.3 -59.2 -59.1 -59 + Bin 31: -59 -58.9 -58.8 -58.7 -58.6 -58.5 -58.4 -58.3 -58.2 -58.1 -58 + Bin 32: -58 -57.9 -57.8 -57.7 -57.6 -57.5 -57.4 -57.3 -57.2 -57.1 -57 + Bin 33: -57 -56.9 -56.8 -56.7 -56.6 -56.5 -56.4 -56.3 -56.2 -56.1 -56 + Bin 34: -56 -55.9 -55.8 -55.7 -55.6 -55.5 -55.4 -55.3 -55.2 -55.1 -55 + Bin 35: -55 -54.9 -54.8 -54.7 -54.6 -54.5 -54.4 -54.3 -54.2 -54.1 -54 + Bin 36: -54 -53.9 -53.8 -53.7 -53.6 -53.5 -53.4 -53.3 -53.2 -53.1 -53 + Bin 37: -53 -52.9 -52.8 -52.7 -52.6 -52.5 -52.4 -52.3 -52.2 -52.1 -52 + Bin 38: -52 -51.9 -51.8 -51.7 -51.6 -51.5 -51.4 -51.3 -51.2 -51.1 -51 + Bin 39: -51 -50.9 -50.8 -50.7 -50.6 -50.5 -50.4 -50.3 -50.2 -50.1 -50 + Bin 40: -50 -49.9 -49.8 -49.7 -49.6 -49.5 -49.4 -49.3 -49.2 -49.1 -49 + Bin 41: -49 -48.9 -48.8 -48.7 -48.6 -48.5 -48.4 -48.3 -48.2 -48.1 -48 + Bin 42: -48 -47.9 -47.8 -47.7 -47.6 -47.5 -47.4 -47.3 -47.2 -47.1 -47 + Bin 43: -47 -46.9 -46.8 -46.7 -46.6 -46.5 -46.4 -46.3 -46.2 -46.1 -46 + Bin 44: -46 -45.9 -45.8 -45.7 -45.6 -45.5 -45.4 -45.3 -45.2 -45.1 -45 + Bin 45: -45 -44.9 -44.8 -44.7 -44.6 -44.5 -44.4 -44.3 -44.2 -44.1 -44 + Bin 46: -44 -43.9 -43.8 -43.7 -43.6 -43.5 -43.4 -43.3 -43.2 -43.1 -43 + Bin 47: -43 -42.9 -42.8 -42.7 -42.6 -42.5 -42.4 -42.3 -42.2 -42.1 -42 + Bin 48: -42 -41.9 -41.8 -41.7 -41.6 -41.5 -41.4 -41.3 -41.2 -41.1 -41 + Bin 49: -41 -40.9 -40.8 -40.7 -40.6 -40.5 -40.4 -40.3 -40.2 -40.1 -40 + Bin 50: -40 -39.9 -39.8 -39.7 -39.6 -39.5 -39.4 -39.3 -39.2 -39.1 -39 + Bin 51: -39 -38.9 -38.8 -38.7 -38.6 -38.5 -38.4 -38.3 -38.2 -38.1 -38 + Bin 52: -38 -37.9 -37.8 -37.7 -37.6 -37.5 -37.4 -37.3 -37.2 -37.1 -37 + Bin 53: -37 -36.9 -36.8 -36.7 -36.6 -36.5 -36.4 -36.3 -36.2 -36.1 -36 + Bin 54: -36 -35.9 -35.8 -35.7 -35.6 -35.5 -35.4 -35.3 -35.2 -35.1 -35 + Bin 55: -35 -34.9 -34.8 -34.7 -34.6 -34.5 -34.4 -34.3 -34.2 -34.1 -34 + Bin 56: -34 -33.9 -33.8 -33.7 -33.6 -33.5 -33.4 -33.3 -33.2 -33.1 -33 + Bin 57: -33 -32.9 -32.8 -32.7 -32.6 -32.5 -32.4 -32.3 -32.2 -32.1 -32 + Bin 58: -32 -31.9 -31.8 -31.7 -31.6 -31.5 -31.4 -31.3 -31.2 -31.1 -31 + Bin 59: -31 -30.9 -30.8 -30.7 -30.6 -30.5 -30.4 -30.3 -30.2 -30.1 -30 + Bin 60: -30 -29.9 -29.8 -29.7 -29.6 -29.5 -29.4 -29.3 -29.2 -29.1 -29 + Bin 61: -29 -28.9 -28.8 -28.7 -28.6 -28.5 -28.4 -28.3 -28.2 -28.1 -28 + Bin 62: -28 -27.9 -27.8 -27.7 -27.6 -27.5 -27.4 -27.3 -27.2 -27.1 -27 + Bin 63: -27 -26.9 -26.8 -26.7 -26.6 -26.5 -26.4 -26.3 -26.2 -26.1 -26 + Bin 64: -26 -25.9 -25.8 -25.7 -25.6 -25.5 -25.4 -25.3 -25.2 -25.1 -25 + Bin 65: -25 -24.9 -24.8 -24.7 -24.6 -24.5 -24.4 -24.3 -24.2 -24.1 -24 + Bin 66: -24 -23.9 -23.8 -23.7 -23.6 -23.5 -23.4 -23.3 -23.2 -23.1 -23 + Bin 67: -23 -22.9 -22.8 -22.7 -22.6 -22.5 -22.4 -22.3 -22.2 -22.1 -22 + Bin 68: -22 -21.9 -21.8 -21.7 -21.6 -21.5 -21.4 -21.3 -21.2 -21.1 -21 + Bin 69: -21 -20.9 -20.8 -20.7 -20.6 -20.5 -20.4 -20.3 -20.2 -20.1 -20 + Bin 70: -20 -19.9 -19.8 -19.7 -19.6 -19.5 -19.4 -19.3 -19.2 -19.1 -19 + Bin 71: -19 -18.9 -18.8 -18.7 -18.6 -18.5 -18.4 -18.3 -18.2 -18.1 -18 + Bin 72: -18 -17.9 -17.8 -17.7 -17.6 -17.5 -17.4 -17.3 -17.2 -17.1 -17 + Bin 73: -17 -16.9 -16.8 -16.7 -16.6 -16.5 -16.4 -16.3 -16.2 -16.1 -16 + Bin 74: -16 -15.9 -15.8 -15.7 -15.6 -15.5 -15.4 -15.3 -15.2 -15.1 -15 + Bin 75: -15 -14.9 -14.8 -14.7 -14.6 -14.5 -14.4 -14.3 -14.2 -14.1 -14 + Bin 76: -14 -13.9 -13.8 -13.7 -13.6 -13.5 -13.4 -13.3 -13.2 -13.1 -13 + Bin 77: -13 -12.9 -12.8 -12.7 -12.6 -12.5 -12.4 -12.3 -12.2 -12.1 -12 + Bin 78: -12 -11.9 -11.8 -11.7 -11.6 -11.5 -11.4 -11.3 -11.2 -11.1 -11 + Bin 79: -11 -10.9 -10.8 -10.7 -10.6 -10.5 -10.4 -10.3 -10.2 -10.1 -10 + Bin 80: -10 -9.9 -9.8 -9.7 -9.6 -9.5 -9.4 -9.3 -9.2 -9.1 -9 + Bin 81: -9 -8.9 -8.8 -8.7 -8.6 -8.5 -8.4 -8.3 -8.2 -8.1 -8 + Bin 82: -8 -7.9 -7.8 -7.7 -7.6 -7.5 -7.4 -7.3 -7.2 -7.1 -7 + Bin 83: -7 -6.9 -6.8 -6.7 -6.6 -6.5 -6.4 -6.3 -6.2 -6.1 -6 + Bin 84: -6 -5.9 -5.8 -5.7 -5.6 -5.5 -5.4 -5.3 -5.2 -5.1 -5 + Bin 85: -5 -4.9 -4.8 -4.7 -4.6 -4.5 -4.4 -4.3 -4.2 -4.1 -4 + Bin 86: -4 -3.9 -3.8 -3.7 -3.6 -3.5 -3.4 -3.3 -3.2 -3.1 -3 + Bin 87: -3 -2.9 -2.8 -2.7 -2.6 -2.5 -2.4 -2.3 -2.2 -2.1 -2 + Bin 88: -2 -1.9 -1.8 -1.7 -1.6 -1.5 -1.4 -1.3 -1.2 -1.1 -1 + Bin 89: -1 -0.9 -0.8 -0.7 -0.6 -0.5 -0.4 -0.3 -0.2 -0.1 0 + Bin 90: 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 + Bin 91: 1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2 + Bin 92: 2 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3 + Bin 93: 3 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4 + Bin 94: 4 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5 + Bin 95: 5 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6 + Bin 96: 6 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7 + Bin 97: 7 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8 + Bin 98: 8 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9 + Bin 99: 9 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 10 + Bin 100: 10 10.1 10.2 10.3 10.4 10.5 10.6 10.7 10.8 10.9 11 + Bin 101: 11 11.1 11.2 11.3 11.4 11.5 11.6 11.7 11.8 11.9 12 + Bin 102: 12 12.1 12.2 12.3 12.4 12.5 12.6 12.7 12.8 12.9 13 + Bin 103: 13 13.1 13.2 13.3 13.4 13.5 13.6 13.7 13.8 13.9 14 + Bin 104: 14 14.1 14.2 14.3 14.4 14.5 14.6 14.7 14.8 14.9 15 + Bin 105: 15 15.1 15.2 15.3 15.4 15.5 15.6 15.7 15.8 15.9 16 + Bin 106: 16 16.1 16.2 16.3 16.4 16.5 16.6 16.7 16.8 16.9 17 + Bin 107: 17 17.1 17.2 17.3 17.4 17.5 17.6 17.7 17.8 17.9 18 + Bin 108: 18 18.1 18.2 18.3 18.4 18.5 18.6 18.7 18.8 18.9 19 + Bin 109: 19 19.1 19.2 19.3 19.4 19.5 19.6 19.7 19.8 19.9 20 + Bin 110: 20 20.1 20.2 20.3 20.4 20.5 20.6 20.7 20.8 20.9 21 + Bin 111: 21 21.1 21.2 21.3 21.4 21.5 21.6 21.7 21.8 21.9 22 + Bin 112: 22 22.1 22.2 22.3 22.4 22.5 22.6 22.7 22.8 22.9 23 + Bin 113: 23 23.1 23.2 23.3 23.4 23.5 23.6 23.7 23.8 23.9 24 + Bin 114: 24 24.1 24.2 24.3 24.4 24.5 24.6 24.7 24.8 24.9 25 + Bin 115: 25 25.1 25.2 25.3 25.4 25.5 25.6 25.7 25.8 25.9 26 + Bin 116: 26 26.1 26.2 26.3 26.4 26.5 26.6 26.7 26.8 26.9 27 + Bin 117: 27 27.1 27.2 27.3 27.4 27.5 27.6 27.7 27.8 27.9 28 + Bin 118: 28 28.1 28.2 28.3 28.4 28.5 28.6 28.7 28.8 28.9 29 + Bin 119: 29 29.1 29.2 29.3 29.4 29.5 29.6 29.7 29.8 29.9 30 + Bin 120: 30 30.1 30.2 30.3 30.4 30.5 30.6 30.7 30.8 30.9 31 + Bin 121: 31 31.1 31.2 31.3 31.4 31.5 31.6 31.7 31.8 31.9 32 + Bin 122: 32 32.1 32.2 32.3 32.4 32.5 32.6 32.7 32.8 32.9 33 + Bin 123: 33 33.1 33.2 33.3 33.4 33.5 33.6 33.7 33.8 33.9 34 + Bin 124: 34 34.1 34.2 34.3 34.4 34.5 34.6 34.7 34.8 34.9 35 + Bin 125: 35 35.1 35.2 35.3 35.4 35.5 35.6 35.7 35.8 35.9 36 + Bin 126: 36 36.1 36.2 36.3 36.4 36.5 36.6 36.7 36.8 36.9 37 + Bin 127: 37 37.1 37.2 37.3 37.4 37.5 37.6 37.7 37.8 37.9 38 + Bin 128: 38 38.1 38.2 38.3 38.4 38.5 38.6 38.7 38.8 38.9 39 + Bin 129: 39 39.1 39.2 39.3 39.4 39.5 39.6 39.7 39.8 39.9 40 + Bin 130: 40 40.1 40.2 40.3 40.4 40.5 40.6 40.7 40.8 40.9 41 + Bin 131: 41 41.1 41.2 41.3 41.4 41.5 41.6 41.7 41.8 41.9 42 + Bin 132: 42 42.1 42.2 42.3 42.4 42.5 42.6 42.7 42.8 42.9 43 + Bin 133: 43 43.1 43.2 43.3 43.4 43.5 43.6 43.7 43.8 43.9 44 + Bin 134: 44 44.1 44.2 44.3 44.4 44.5 44.6 44.7 44.8 44.9 45 + Bin 135: 45 45.1 45.2 45.3 45.4 45.5 45.6 45.7 45.8 45.9 46 + Bin 136: 46 46.1 46.2 46.3 46.4 46.5 46.6 46.7 46.8 46.9 47 + Bin 137: 47 47.1 47.2 47.3 47.4 47.5 47.6 47.7 47.8 47.9 48 + Bin 138: 48 48.1 48.2 48.3 48.4 48.5 48.6 48.7 48.8 48.9 49 + Bin 139: 49 49.1 49.2 49.3 49.4 49.5 49.6 49.7 49.8 49.9 50 + Bin 140: 50 50.1 50.2 50.3 50.4 50.5 50.6 50.7 50.8 50.9 51 + Bin 141: 51 51.1 51.2 51.3 51.4 51.5 51.6 51.7 51.8 51.9 52 + Bin 142: 52 52.1 52.2 52.3 52.4 52.5 52.6 52.7 52.8 52.9 53 + Bin 143: 53 53.1 53.2 53.3 53.4 53.5 53.6 53.7 53.8 53.9 54 + Bin 144: 54 54.1 54.2 54.3 54.4 54.5 54.6 54.7 54.8 54.9 55 + Bin 145: 55 55.1 55.2 55.3 55.4 55.5 55.6 55.7 55.8 55.9 56 + Bin 146: 56 56.1 56.2 56.3 56.4 56.5 56.6 56.7 56.8 56.9 57 + Bin 147: 57 57.1 57.2 57.3 57.4 57.5 57.6 57.7 57.8 57.9 58 + Bin 148: 58 58.1 58.2 58.3 58.4 58.5 58.6 58.7 58.8 58.9 59 + Bin 149: 59 59.1 59.2 59.3 59.4 59.5 59.6 59.7 59.8 59.9 60 + Bin 150: 60 60.1 60.2 60.3 60.4 60.5 60.6 60.7 60.8 60.9 61 + Bin 151: 61 61.1 61.2 61.3 61.4 61.5 61.6 61.7 61.8 61.9 62 + Bin 152: 62 62.1 62.2 62.3 62.4 62.5 62.6 62.7 62.8 62.9 63 + Bin 153: 63 63.1 63.2 63.3 63.4 63.5 63.6 63.7 63.8 63.9 64 + Bin 154: 64 64.1 64.2 64.3 64.4 64.5 64.6 64.7 64.8 64.9 65 + Bin 155: 65 65.1 65.2 65.3 65.4 65.5 65.6 65.7 65.8 65.9 66 + Bin 156: 66 66.1 66.2 66.3 66.4 66.5 66.6 66.7 66.8 66.9 67 + Bin 157: 67 67.1 67.2 67.3 67.4 67.5 67.6 67.7 67.8 67.9 68 + Bin 158: 68 68.1 68.2 68.3 68.4 68.5 68.6 68.7 68.8 68.9 69 + Bin 159: 69 69.1 69.2 69.3 69.4 69.5 69.6 69.7 69.8 69.9 70 + Bin 160: 70 70.1 70.2 70.3 70.4 70.5 70.6 70.7 70.8 70.9 71 + Bin 161: 71 71.1 71.2 71.3 71.4 71.5 71.6 71.7 71.8 71.9 72 + Bin 162: 72 72.1 72.2 72.3 72.4 72.5 72.6 72.7 72.8 72.9 73 + Bin 163: 73 73.1 73.2 73.3 73.4 73.5 73.6 73.7 73.8 73.9 74 + Bin 164: 74 74.1 74.2 74.3 74.4 74.5 74.6 74.7 74.8 74.9 75 + Bin 165: 75 75.1 75.2 75.3 75.4 75.5 75.6 75.7 75.8 75.9 76 + Bin 166: 76 76.1 76.2 76.3 76.4 76.5 76.6 76.7 76.8 76.9 77 + Bin 167: 77 77.1 77.2 77.3 77.4 77.5 77.6 77.7 77.8 77.9 78 + Bin 168: 78 78.1 78.2 78.3 78.4 78.5 78.6 78.7 78.8 78.9 79 + Bin 169: 79 79.1 79.2 79.3 79.4 79.5 79.6 79.7 79.8 79.9 80 + Bin 170: 80 80.1 80.2 80.3 80.4 80.5 80.6 80.7 80.8 80.9 81 + Bin 171: 81 81.1 81.2 81.3 81.4 81.5 81.6 81.7 81.8 81.9 82 + Bin 172: 82 82.1 82.2 82.3 82.4 82.5 82.6 82.7 82.8 82.9 83 + Bin 173: 83 83.1 83.2 83.3 83.4 83.5 83.6 83.7 83.8 83.9 84 + Bin 174: 84 84.1 84.2 84.3 84.4 84.5 84.6 84.7 84.8 84.9 85 + Bin 175: 85 85.1 85.2 85.3 85.4 85.5 85.6 85.7 85.8 85.9 86 + Bin 176: 86 86.1 86.2 86.3 86.4 86.5 86.6 86.7 86.8 86.9 87 + Bin 177: 87 87.1 87.2 87.3 87.4 87.5 87.6 87.7 87.8 87.9 88 + Bin 178: 88 88.1 88.2 88.3 88.4 88.5 88.6 88.7 88.8 88.9 89 + Bin 179: 89 89.1 89.2 89.3 89.4 89.5 89.6 89.7 89.8 89.9 90 + +Det 3: + Bin 0: -90 -89.9 -89.8 -89.7 -89.6 -89.5 -89.4 -89.3 -89.2 -89.1 -89 + Bin 1: -89 -88.9 -88.8 -88.7 -88.6 -88.5 -88.4 -88.3 -88.2 -88.1 -88 + Bin 2: -88 -87.9 -87.8 -87.7 -87.6 -87.5 -87.4 -87.3 -87.2 -87.1 -87 + Bin 3: -87 -86.9 -86.8 -86.7 -86.6 -86.5 -86.4 -86.3 -86.2 -86.1 -86 + Bin 4: -86 -85.9 -85.8 -85.7 -85.6 -85.5 -85.4 -85.3 -85.2 -85.1 -85 + Bin 5: -85 -84.9 -84.8 -84.7 -84.6 -84.5 -84.4 -84.3 -84.2 -84.1 -84 + Bin 6: -84 -83.9 -83.8 -83.7 -83.6 -83.5 -83.4 -83.3 -83.2 -83.1 -83 + Bin 7: -83 -82.9 -82.8 -82.7 -82.6 -82.5 -82.4 -82.3 -82.2 -82.1 -82 + Bin 8: -82 -81.9 -81.8 -81.7 -81.6 -81.5 -81.4 -81.3 -81.2 -81.1 -81 + Bin 9: -81 -80.9 -80.8 -80.7 -80.6 -80.5 -80.4 -80.3 -80.2 -80.1 -80 + Bin 10: -80 -79.9 -79.8 -79.7 -79.6 -79.5 -79.4 -79.3 -79.2 -79.1 -79 + Bin 11: -79 -78.9 -78.8 -78.7 -78.6 -78.5 -78.4 -78.3 -78.2 -78.1 -78 + Bin 12: -78 -77.9 -77.8 -77.7 -77.6 -77.5 -77.4 -77.3 -77.2 -77.1 -77 + Bin 13: -77 -76.9 -76.8 -76.7 -76.6 -76.5 -76.4 -76.3 -76.2 -76.1 -76 + Bin 14: -76 -75.9 -75.8 -75.7 -75.6 -75.5 -75.4 -75.3 -75.2 -75.1 -75 + Bin 15: -75 -74.9 -74.8 -74.7 -74.6 -74.5 -74.4 -74.3 -74.2 -74.1 -74 + Bin 16: -74 -73.9 -73.8 -73.7 -73.6 -73.5 -73.4 -73.3 -73.2 -73.1 -73 + Bin 17: -73 -72.9 -72.8 -72.7 -72.6 -72.5 -72.4 -72.3 -72.2 -72.1 -72 + Bin 18: -72 -71.9 -71.8 -71.7 -71.6 -71.5 -71.4 -71.3 -71.2 -71.1 -71 + Bin 19: -71 -70.9 -70.8 -70.7 -70.6 -70.5 -70.4 -70.3 -70.2 -70.1 -70 + Bin 20: -70 -69.9 -69.8 -69.7 -69.6 -69.5 -69.4 -69.3 -69.2 -69.1 -69 + Bin 21: -69 -68.9 -68.8 -68.7 -68.6 -68.5 -68.4 -68.3 -68.2 -68.1 -68 + Bin 22: -68 -67.9 -67.8 -67.7 -67.6 -67.5 -67.4 -67.3 -67.2 -67.1 -67 + Bin 23: -67 -66.9 -66.8 -66.7 -66.6 -66.5 -66.4 -66.3 -66.2 -66.1 -66 + Bin 24: -66 -65.9 -65.8 -65.7 -65.6 -65.5 -65.4 -65.3 -65.2 -65.1 -65 + Bin 25: -65 -64.9 -64.8 -64.7 -64.6 -64.5 -64.4 -64.3 -64.2 -64.1 -64 + Bin 26: -64 -63.9 -63.8 -63.7 -63.6 -63.5 -63.4 -63.3 -63.2 -63.1 -63 + Bin 27: -63 -62.9 -62.8 -62.7 -62.6 -62.5 -62.4 -62.3 -62.2 -62.1 -62 + Bin 28: -62 -61.9 -61.8 -61.7 -61.6 -61.5 -61.4 -61.3 -61.2 -61.1 -61 + Bin 29: -61 -60.9 -60.8 -60.7 -60.6 -60.5 -60.4 -60.3 -60.2 -60.1 -60 + Bin 30: -60 -59.9 -59.8 -59.7 -59.6 -59.5 -59.4 -59.3 -59.2 -59.1 -59 + Bin 31: -59 -58.9 -58.8 -58.7 -58.6 -58.5 -58.4 -58.3 -58.2 -58.1 -58 + Bin 32: -58 -57.9 -57.8 -57.7 -57.6 -57.5 -57.4 -57.3 -57.2 -57.1 -57 + Bin 33: -57 -56.9 -56.8 -56.7 -56.6 -56.5 -56.4 -56.3 -56.2 -56.1 -56 + Bin 34: -56 -55.9 -55.8 -55.7 -55.6 -55.5 -55.4 -55.3 -55.2 -55.1 -55 + Bin 35: -55 -54.9 -54.8 -54.7 -54.6 -54.5 -54.4 -54.3 -54.2 -54.1 -54 + Bin 36: -54 -53.9 -53.8 -53.7 -53.6 -53.5 -53.4 -53.3 -53.2 -53.1 -53 + Bin 37: -53 -52.9 -52.8 -52.7 -52.6 -52.5 -52.4 -52.3 -52.2 -52.1 -52 + Bin 38: -52 -51.9 -51.8 -51.7 -51.6 -51.5 -51.4 -51.3 -51.2 -51.1 -51 + Bin 39: -51 -50.9 -50.8 -50.7 -50.6 -50.5 -50.4 -50.3 -50.2 -50.1 -50 + Bin 40: -50 -49.9 -49.8 -49.7 -49.6 -49.5 -49.4 -49.3 -49.2 -49.1 -49 + Bin 41: -49 -48.9 -48.8 -48.7 -48.6 -48.5 -48.4 -48.3 -48.2 -48.1 -48 + Bin 42: -48 -47.9 -47.8 -47.7 -47.6 -47.5 -47.4 -47.3 -47.2 -47.1 -47 + Bin 43: -47 -46.9 -46.8 -46.7 -46.6 -46.5 -46.4 -46.3 -46.2 -46.1 -46 + Bin 44: -46 -45.9 -45.8 -45.7 -45.6 -45.5 -45.4 -45.3 -45.2 -45.1 -45 + Bin 45: -45 -44.9 -44.8 -44.7 -44.6 -44.5 -44.4 -44.3 -44.2 -44.1 -44 + Bin 46: -44 -43.9 -43.8 -43.7 -43.6 -43.5 -43.4 -43.3 -43.2 -43.1 -43 + Bin 47: -43 -42.9 -42.8 -42.7 -42.6 -42.5 -42.4 -42.3 -42.2 -42.1 -42 + Bin 48: -42 -41.9 -41.8 -41.7 -41.6 -41.5 -41.4 -41.3 -41.2 -41.1 -41 + Bin 49: -41 -40.9 -40.8 -40.7 -40.6 -40.5 -40.4 -40.3 -40.2 -40.1 -40 + Bin 50: -40 -39.9 -39.8 -39.7 -39.6 -39.5 -39.4 -39.3 -39.2 -39.1 -39 + Bin 51: -39 -38.9 -38.8 -38.7 -38.6 -38.5 -38.4 -38.3 -38.2 -38.1 -38 + Bin 52: -38 -37.9 -37.8 -37.7 -37.6 -37.5 -37.4 -37.3 -37.2 -37.1 -37 + Bin 53: -37 -36.9 -36.8 -36.7 -36.6 -36.5 -36.4 -36.3 -36.2 -36.1 -36 + Bin 54: -36 -35.9 -35.8 -35.7 -35.6 -35.5 -35.4 -35.3 -35.2 -35.1 -35 + Bin 55: -35 -34.9 -34.8 -34.7 -34.6 -34.5 -34.4 -34.3 -34.2 -34.1 -34 + Bin 56: -34 -33.9 -33.8 -33.7 -33.6 -33.5 -33.4 -33.3 -33.2 -33.1 -33 + Bin 57: -33 -32.9 -32.8 -32.7 -32.6 -32.5 -32.4 -32.3 -32.2 -32.1 -32 + Bin 58: -32 -31.9 -31.8 -31.7 -31.6 -31.5 -31.4 -31.3 -31.2 -31.1 -31 + Bin 59: -31 -30.9 -30.8 -30.7 -30.6 -30.5 -30.4 -30.3 -30.2 -30.1 -30 + Bin 60: -30 -29.9 -29.8 -29.7 -29.6 -29.5 -29.4 -29.3 -29.2 -29.1 -29 + Bin 61: -29 -28.9 -28.8 -28.7 -28.6 -28.5 -28.4 -28.3 -28.2 -28.1 -28 + Bin 62: -28 -27.9 -27.8 -27.7 -27.6 -27.5 -27.4 -27.3 -27.2 -27.1 -27 + Bin 63: -27 -26.9 -26.8 -26.7 -26.6 -26.5 -26.4 -26.3 -26.2 -26.1 -26 + Bin 64: -26 -25.9 -25.8 -25.7 -25.6 -25.5 -25.4 -25.3 -25.2 -25.1 -25 + Bin 65: -25 -24.9 -24.8 -24.7 -24.6 -24.5 -24.4 -24.3 -24.2 -24.1 -24 + Bin 66: -24 -23.9 -23.8 -23.7 -23.6 -23.5 -23.4 -23.3 -23.2 -23.1 -23 + Bin 67: -23 -22.9 -22.8 -22.7 -22.6 -22.5 -22.4 -22.3 -22.2 -22.1 -22 + Bin 68: -22 -21.9 -21.8 -21.7 -21.6 -21.5 -21.4 -21.3 -21.2 -21.1 -21 + Bin 69: -21 -20.9 -20.8 -20.7 -20.6 -20.5 -20.4 -20.3 -20.2 -20.1 -20 + Bin 70: -20 -19.9 -19.8 -19.7 -19.6 -19.5 -19.4 -19.3 -19.2 -19.1 -19 + Bin 71: -19 -18.9 -18.8 -18.7 -18.6 -18.5 -18.4 -18.3 -18.2 -18.1 -18 + Bin 72: -18 -17.9 -17.8 -17.7 -17.6 -17.5 -17.4 -17.3 -17.2 -17.1 -17 + Bin 73: -17 -16.9 -16.8 -16.7 -16.6 -16.5 -16.4 -16.3 -16.2 -16.1 -16 + Bin 74: -16 -15.9 -15.8 -15.7 -15.6 -15.5 -15.4 -15.3 -15.2 -15.1 -15 + Bin 75: -15 -14.9 -14.8 -14.7 -14.6 -14.5 -14.4 -14.3 -14.2 -14.1 -14 + Bin 76: -14 -13.9 -13.8 -13.7 -13.6 -13.5 -13.4 -13.3 -13.2 -13.1 -13 + Bin 77: -13 -12.9 -12.8 -12.7 -12.6 -12.5 -12.4 -12.3 -12.2 -12.1 -12 + Bin 78: -12 -11.9 -11.8 -11.7 -11.6 -11.5 -11.4 -11.3 -11.2 -11.1 -11 + Bin 79: -11 -10.9 -10.8 -10.7 -10.6 -10.5 -10.4 -10.3 -10.2 -10.1 -10 + Bin 80: -10 -9.9 -9.8 -9.7 -9.6 -9.5 -9.4 -9.3 -9.2 -9.1 -9 + Bin 81: -9 -8.9 -8.8 -8.7 -8.6 -8.5 -8.4 -8.3 -8.2 -8.1 -8 + Bin 82: -8 -7.9 -7.8 -7.7 -7.6 -7.5 -7.4 -7.3 -7.2 -7.1 -7 + Bin 83: -7 -6.9 -6.8 -6.7 -6.6 -6.5 -6.4 -6.3 -6.2 -6.1 -6 + Bin 84: -6 -5.9 -5.8 -5.7 -5.6 -5.5 -5.4 -5.3 -5.2 -5.1 -5 + Bin 85: -5 -4.9 -4.8 -4.7 -4.6 -4.5 -4.4 -4.3 -4.2 -4.1 -4 + Bin 86: -4 -3.9 -3.8 -3.7 -3.6 -3.5 -3.4 -3.3 -3.2 -3.1 -3 + Bin 87: -3 -2.9 -2.8 -2.7 -2.6 -2.5 -2.4 -2.3 -2.2 -2.1 -2 + Bin 88: -2 -1.9 -1.8 -1.7 -1.6 -1.5 -1.4 -1.3 -1.2 -1.1 -1 + Bin 89: -1 -0.9 -0.8 -0.7 -0.6 -0.5 -0.4 -0.3 -0.2 -0.1 0 + Bin 90: 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 + Bin 91: 1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2 + Bin 92: 2 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3 + Bin 93: 3 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4 + Bin 94: 4 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5 + Bin 95: 5 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6 + Bin 96: 6 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7 + Bin 97: 7 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8 + Bin 98: 8 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9 + Bin 99: 9 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 10 + Bin 100: 10 10.1 10.2 10.3 10.4 10.5 10.6 10.7 10.8 10.9 11 + Bin 101: 11 11.1 11.2 11.3 11.4 11.5 11.6 11.7 11.8 11.9 12 + Bin 102: 12 12.1 12.2 12.3 12.4 12.5 12.6 12.7 12.8 12.9 13 + Bin 103: 13 13.1 13.2 13.3 13.4 13.5 13.6 13.7 13.8 13.9 14 + Bin 104: 14 14.1 14.2 14.3 14.4 14.5 14.6 14.7 14.8 14.9 15 + Bin 105: 15 15.1 15.2 15.3 15.4 15.5 15.6 15.7 15.8 15.9 16 + Bin 106: 16 16.1 16.2 16.3 16.4 16.5 16.6 16.7 16.8 16.9 17 + Bin 107: 17 17.1 17.2 17.3 17.4 17.5 17.6 17.7 17.8 17.9 18 + Bin 108: 18 18.1 18.2 18.3 18.4 18.5 18.6 18.7 18.8 18.9 19 + Bin 109: 19 19.1 19.2 19.3 19.4 19.5 19.6 19.7 19.8 19.9 20 + Bin 110: 20 20.1 20.2 20.3 20.4 20.5 20.6 20.7 20.8 20.9 21 + Bin 111: 21 21.1 21.2 21.3 21.4 21.5 21.6 21.7 21.8 21.9 22 + Bin 112: 22 22.1 22.2 22.3 22.4 22.5 22.6 22.7 22.8 22.9 23 + Bin 113: 23 23.1 23.2 23.3 23.4 23.5 23.6 23.7 23.8 23.9 24 + Bin 114: 24 24.1 24.2 24.3 24.4 24.5 24.6 24.7 24.8 24.9 25 + Bin 115: 25 25.1 25.2 25.3 25.4 25.5 25.6 25.7 25.8 25.9 26 + Bin 116: 26 26.1 26.2 26.3 26.4 26.5 26.6 26.7 26.8 26.9 27 + Bin 117: 27 27.1 27.2 27.3 27.4 27.5 27.6 27.7 27.8 27.9 28 + Bin 118: 28 28.1 28.2 28.3 28.4 28.5 28.6 28.7 28.8 28.9 29 + Bin 119: 29 29.1 29.2 29.3 29.4 29.5 29.6 29.7 29.8 29.9 30 + Bin 120: 30 30.1 30.2 30.3 30.4 30.5 30.6 30.7 30.8 30.9 31 + Bin 121: 31 31.1 31.2 31.3 31.4 31.5 31.6 31.7 31.8 31.9 32 + Bin 122: 32 32.1 32.2 32.3 32.4 32.5 32.6 32.7 32.8 32.9 33 + Bin 123: 33 33.1 33.2 33.3 33.4 33.5 33.6 33.7 33.8 33.9 34 + Bin 124: 34 34.1 34.2 34.3 34.4 34.5 34.6 34.7 34.8 34.9 35 + Bin 125: 35 35.1 35.2 35.3 35.4 35.5 35.6 35.7 35.8 35.9 36 + Bin 126: 36 36.1 36.2 36.3 36.4 36.5 36.6 36.7 36.8 36.9 37 + Bin 127: 37 37.1 37.2 37.3 37.4 37.5 37.6 37.7 37.8 37.9 38 + Bin 128: 38 38.1 38.2 38.3 38.4 38.5 38.6 38.7 38.8 38.9 39 + Bin 129: 39 39.1 39.2 39.3 39.4 39.5 39.6 39.7 39.8 39.9 40 + Bin 130: 40 40.1 40.2 40.3 40.4 40.5 40.6 40.7 40.8 40.9 41 + Bin 131: 41 41.1 41.2 41.3 41.4 41.5 41.6 41.7 41.8 41.9 42 + Bin 132: 42 42.1 42.2 42.3 42.4 42.5 42.6 42.7 42.8 42.9 43 + Bin 133: 43 43.1 43.2 43.3 43.4 43.5 43.6 43.7 43.8 43.9 44 + Bin 134: 44 44.1 44.2 44.3 44.4 44.5 44.6 44.7 44.8 44.9 45 + Bin 135: 45 45.1 45.2 45.3 45.4 45.5 45.6 45.7 45.8 45.9 46 + Bin 136: 46 46.1 46.2 46.3 46.4 46.5 46.6 46.7 46.8 46.9 47 + Bin 137: 47 47.1 47.2 47.3 47.4 47.5 47.6 47.7 47.8 47.9 48 + Bin 138: 48 48.1 48.2 48.3 48.4 48.5 48.6 48.7 48.8 48.9 49 + Bin 139: 49 49.1 49.2 49.3 49.4 49.5 49.6 49.7 49.8 49.9 50 + Bin 140: 50 50.1 50.2 50.3 50.4 50.5 50.6 50.7 50.8 50.9 51 + Bin 141: 51 51.1 51.2 51.3 51.4 51.5 51.6 51.7 51.8 51.9 52 + Bin 142: 52 52.1 52.2 52.3 52.4 52.5 52.6 52.7 52.8 52.9 53 + Bin 143: 53 53.1 53.2 53.3 53.4 53.5 53.6 53.7 53.8 53.9 54 + Bin 144: 54 54.1 54.2 54.3 54.4 54.5 54.6 54.7 54.8 54.9 55 + Bin 145: 55 55.1 55.2 55.3 55.4 55.5 55.6 55.7 55.8 55.9 56 + Bin 146: 56 56.1 56.2 56.3 56.4 56.5 56.6 56.7 56.8 56.9 57 + Bin 147: 57 57.1 57.2 57.3 57.4 57.5 57.6 57.7 57.8 57.9 58 + Bin 148: 58 58.1 58.2 58.3 58.4 58.5 58.6 58.7 58.8 58.9 59 + Bin 149: 59 59.1 59.2 59.3 59.4 59.5 59.6 59.7 59.8 59.9 60 + Bin 150: 60 60.1 60.2 60.3 60.4 60.5 60.6 60.7 60.8 60.9 61 + Bin 151: 61 61.1 61.2 61.3 61.4 61.5 61.6 61.7 61.8 61.9 62 + Bin 152: 62 62.1 62.2 62.3 62.4 62.5 62.6 62.7 62.8 62.9 63 + Bin 153: 63 63.1 63.2 63.3 63.4 63.5 63.6 63.7 63.8 63.9 64 + Bin 154: 64 64.1 64.2 64.3 64.4 64.5 64.6 64.7 64.8 64.9 65 + Bin 155: 65 65.1 65.2 65.3 65.4 65.5 65.6 65.7 65.8 65.9 66 + Bin 156: 66 66.1 66.2 66.3 66.4 66.5 66.6 66.7 66.8 66.9 67 + Bin 157: 67 67.1 67.2 67.3 67.4 67.5 67.6 67.7 67.8 67.9 68 + Bin 158: 68 68.1 68.2 68.3 68.4 68.5 68.6 68.7 68.8 68.9 69 + Bin 159: 69 69.1 69.2 69.3 69.4 69.5 69.6 69.7 69.8 69.9 70 + Bin 160: 70 70.1 70.2 70.3 70.4 70.5 70.6 70.7 70.8 70.9 71 + Bin 161: 71 71.1 71.2 71.3 71.4 71.5 71.6 71.7 71.8 71.9 72 + Bin 162: 72 72.1 72.2 72.3 72.4 72.5 72.6 72.7 72.8 72.9 73 + Bin 163: 73 73.1 73.2 73.3 73.4 73.5 73.6 73.7 73.8 73.9 74 + Bin 164: 74 74.1 74.2 74.3 74.4 74.5 74.6 74.7 74.8 74.9 75 + Bin 165: 75 75.1 75.2 75.3 75.4 75.5 75.6 75.7 75.8 75.9 76 + Bin 166: 76 76.1 76.2 76.3 76.4 76.5 76.6 76.7 76.8 76.9 77 + Bin 167: 77 77.1 77.2 77.3 77.4 77.5 77.6 77.7 77.8 77.9 78 + Bin 168: 78 78.1 78.2 78.3 78.4 78.5 78.6 78.7 78.8 78.9 79 + Bin 169: 79 79.1 79.2 79.3 79.4 79.5 79.6 79.7 79.8 79.9 80 + Bin 170: 80 80.1 80.2 80.3 80.4 80.5 80.6 80.7 80.8 80.9 81 + Bin 171: 81 81.1 81.2 81.3 81.4 81.5 81.6 81.7 81.8 81.9 82 + Bin 172: 82 82.1 82.2 82.3 82.4 82.5 82.6 82.7 82.8 82.9 83 + Bin 173: 83 83.1 83.2 83.3 83.4 83.5 83.6 83.7 83.8 83.9 84 + Bin 174: 84 84.1 84.2 84.3 84.4 84.5 84.6 84.7 84.8 84.9 85 + Bin 175: 85 85.1 85.2 85.3 85.4 85.5 85.6 85.7 85.8 85.9 86 + Bin 176: 86 86.1 86.2 86.3 86.4 86.5 86.6 86.7 86.8 86.9 87 + Bin 177: 87 87.1 87.2 87.3 87.4 87.5 87.6 87.7 87.8 87.9 88 + Bin 178: 88 88.1 88.2 88.3 88.4 88.5 88.6 88.7 88.8 88.9 89 + Bin 179: 89 89.1 89.2 89.3 89.4 89.5 89.6 89.7 89.8 89.9 90 + +Det 4: + Bin 0: -90 -89.9 -89.8 -89.7 -89.6 -89.5 -89.4 -89.3 -89.2 -89.1 -89 + Bin 1: -89 -88.9 -88.8 -88.7 -88.6 -88.5 -88.4 -88.3 -88.2 -88.1 -88 + Bin 2: -88 -87.9 -87.8 -87.7 -87.6 -87.5 -87.4 -87.3 -87.2 -87.1 -87 + Bin 3: -87 -86.9 -86.8 -86.7 -86.6 -86.5 -86.4 -86.3 -86.2 -86.1 -86 + Bin 4: -86 -85.9 -85.8 -85.7 -85.6 -85.5 -85.4 -85.3 -85.2 -85.1 -85 + Bin 5: -85 -84.9 -84.8 -84.7 -84.6 -84.5 -84.4 -84.3 -84.2 -84.1 -84 + Bin 6: -84 -83.9 -83.8 -83.7 -83.6 -83.5 -83.4 -83.3 -83.2 -83.1 -83 + Bin 7: -83 -82.9 -82.8 -82.7 -82.6 -82.5 -82.4 -82.3 -82.2 -82.1 -82 + Bin 8: -82 -81.9 -81.8 -81.7 -81.6 -81.5 -81.4 -81.3 -81.2 -81.1 -81 + Bin 9: -81 -80.9 -80.8 -80.7 -80.6 -80.5 -80.4 -80.3 -80.2 -80.1 -80 + Bin 10: -80 -79.9 -79.8 -79.7 -79.6 -79.5 -79.4 -79.3 -79.2 -79.1 -79 + Bin 11: -79 -78.9 -78.8 -78.7 -78.6 -78.5 -78.4 -78.3 -78.2 -78.1 -78 + Bin 12: -78 -77.9 -77.8 -77.7 -77.6 -77.5 -77.4 -77.3 -77.2 -77.1 -77 + Bin 13: -77 -76.9 -76.8 -76.7 -76.6 -76.5 -76.4 -76.3 -76.2 -76.1 -76 + Bin 14: -76 -75.9 -75.8 -75.7 -75.6 -75.5 -75.4 -75.3 -75.2 -75.1 -75 + Bin 15: -75 -74.9 -74.8 -74.7 -74.6 -74.5 -74.4 -74.3 -74.2 -74.1 -74 + Bin 16: -74 -73.9 -73.8 -73.7 -73.6 -73.5 -73.4 -73.3 -73.2 -73.1 -73 + Bin 17: -73 -72.9 -72.8 -72.7 -72.6 -72.5 -72.4 -72.3 -72.2 -72.1 -72 + Bin 18: -72 -71.9 -71.8 -71.7 -71.6 -71.5 -71.4 -71.3 -71.2 -71.1 -71 + Bin 19: -71 -70.9 -70.8 -70.7 -70.6 -70.5 -70.4 -70.3 -70.2 -70.1 -70 + Bin 20: -70 -69.9 -69.8 -69.7 -69.6 -69.5 -69.4 -69.3 -69.2 -69.1 -69 + Bin 21: -69 -68.9 -68.8 -68.7 -68.6 -68.5 -68.4 -68.3 -68.2 -68.1 -68 + Bin 22: -68 -67.9 -67.8 -67.7 -67.6 -67.5 -67.4 -67.3 -67.2 -67.1 -67 + Bin 23: -67 -66.9 -66.8 -66.7 -66.6 -66.5 -66.4 -66.3 -66.2 -66.1 -66 + Bin 24: -66 -65.9 -65.8 -65.7 -65.6 -65.5 -65.4 -65.3 -65.2 -65.1 -65 + Bin 25: -65 -64.9 -64.8 -64.7 -64.6 -64.5 -64.4 -64.3 -64.2 -64.1 -64 + Bin 26: -64 -63.9 -63.8 -63.7 -63.6 -63.5 -63.4 -63.3 -63.2 -63.1 -63 + Bin 27: -63 -62.9 -62.8 -62.7 -62.6 -62.5 -62.4 -62.3 -62.2 -62.1 -62 + Bin 28: -62 -61.9 -61.8 -61.7 -61.6 -61.5 -61.4 -61.3 -61.2 -61.1 -61 + Bin 29: -61 -60.9 -60.8 -60.7 -60.6 -60.5 -60.4 -60.3 -60.2 -60.1 -60 + Bin 30: -60 -59.9 -59.8 -59.7 -59.6 -59.5 -59.4 -59.3 -59.2 -59.1 -59 + Bin 31: -59 -58.9 -58.8 -58.7 -58.6 -58.5 -58.4 -58.3 -58.2 -58.1 -58 + Bin 32: -58 -57.9 -57.8 -57.7 -57.6 -57.5 -57.4 -57.3 -57.2 -57.1 -57 + Bin 33: -57 -56.9 -56.8 -56.7 -56.6 -56.5 -56.4 -56.3 -56.2 -56.1 -56 + Bin 34: -56 -55.9 -55.8 -55.7 -55.6 -55.5 -55.4 -55.3 -55.2 -55.1 -55 + Bin 35: -55 -54.9 -54.8 -54.7 -54.6 -54.5 -54.4 -54.3 -54.2 -54.1 -54 + Bin 36: -54 -53.9 -53.8 -53.7 -53.6 -53.5 -53.4 -53.3 -53.2 -53.1 -53 + Bin 37: -53 -52.9 -52.8 -52.7 -52.6 -52.5 -52.4 -52.3 -52.2 -52.1 -52 + Bin 38: -52 -51.9 -51.8 -51.7 -51.6 -51.5 -51.4 -51.3 -51.2 -51.1 -51 + Bin 39: -51 -50.9 -50.8 -50.7 -50.6 -50.5 -50.4 -50.3 -50.2 -50.1 -50 + Bin 40: -50 -49.9 -49.8 -49.7 -49.6 -49.5 -49.4 -49.3 -49.2 -49.1 -49 + Bin 41: -49 -48.9 -48.8 -48.7 -48.6 -48.5 -48.4 -48.3 -48.2 -48.1 -48 + Bin 42: -48 -47.9 -47.8 -47.7 -47.6 -47.5 -47.4 -47.3 -47.2 -47.1 -47 + Bin 43: -47 -46.9 -46.8 -46.7 -46.6 -46.5 -46.4 -46.3 -46.2 -46.1 -46 + Bin 44: -46 -45.9 -45.8 -45.7 -45.6 -45.5 -45.4 -45.3 -45.2 -45.1 -45 + Bin 45: -45 -44.9 -44.8 -44.7 -44.6 -44.5 -44.4 -44.3 -44.2 -44.1 -44 + Bin 46: -44 -43.9 -43.8 -43.7 -43.6 -43.5 -43.4 -43.3 -43.2 -43.1 -43 + Bin 47: -43 -42.9 -42.8 -42.7 -42.6 -42.5 -42.4 -42.3 -42.2 -42.1 -42 + Bin 48: -42 -41.9 -41.8 -41.7 -41.6 -41.5 -41.4 -41.3 -41.2 -41.1 -41 + Bin 49: -41 -40.9 -40.8 -40.7 -40.6 -40.5 -40.4 -40.3 -40.2 -40.1 -40 + Bin 50: -40 -39.9 -39.8 -39.7 -39.6 -39.5 -39.4 -39.3 -39.2 -39.1 -39 + Bin 51: -39 -38.9 -38.8 -38.7 -38.6 -38.5 -38.4 -38.3 -38.2 -38.1 -38 + Bin 52: -38 -37.9 -37.8 -37.7 -37.6 -37.5 -37.4 -37.3 -37.2 -37.1 -37 + Bin 53: -37 -36.9 -36.8 -36.7 -36.6 -36.5 -36.4 -36.3 -36.2 -36.1 -36 + Bin 54: -36 -35.9 -35.8 -35.7 -35.6 -35.5 -35.4 -35.3 -35.2 -35.1 -35 + Bin 55: -35 -34.9 -34.8 -34.7 -34.6 -34.5 -34.4 -34.3 -34.2 -34.1 -34 + Bin 56: -34 -33.9 -33.8 -33.7 -33.6 -33.5 -33.4 -33.3 -33.2 -33.1 -33 + Bin 57: -33 -32.9 -32.8 -32.7 -32.6 -32.5 -32.4 -32.3 -32.2 -32.1 -32 + Bin 58: -32 -31.9 -31.8 -31.7 -31.6 -31.5 -31.4 -31.3 -31.2 -31.1 -31 + Bin 59: -31 -30.9 -30.8 -30.7 -30.6 -30.5 -30.4 -30.3 -30.2 -30.1 -30 + Bin 60: -30 -29.9 -29.8 -29.7 -29.6 -29.5 -29.4 -29.3 -29.2 -29.1 -29 + Bin 61: -29 -28.9 -28.8 -28.7 -28.6 -28.5 -28.4 -28.3 -28.2 -28.1 -28 + Bin 62: -28 -27.9 -27.8 -27.7 -27.6 -27.5 -27.4 -27.3 -27.2 -27.1 -27 + Bin 63: -27 -26.9 -26.8 -26.7 -26.6 -26.5 -26.4 -26.3 -26.2 -26.1 -26 + Bin 64: -26 -25.9 -25.8 -25.7 -25.6 -25.5 -25.4 -25.3 -25.2 -25.1 -25 + Bin 65: -25 -24.9 -24.8 -24.7 -24.6 -24.5 -24.4 -24.3 -24.2 -24.1 -24 + Bin 66: -24 -23.9 -23.8 -23.7 -23.6 -23.5 -23.4 -23.3 -23.2 -23.1 -23 + Bin 67: -23 -22.9 -22.8 -22.7 -22.6 -22.5 -22.4 -22.3 -22.2 -22.1 -22 + Bin 68: -22 -21.9 -21.8 -21.7 -21.6 -21.5 -21.4 -21.3 -21.2 -21.1 -21 + Bin 69: -21 -20.9 -20.8 -20.7 -20.6 -20.5 -20.4 -20.3 -20.2 -20.1 -20 + Bin 70: -20 -19.9 -19.8 -19.7 -19.6 -19.5 -19.4 -19.3 -19.2 -19.1 -19 + Bin 71: -19 -18.9 -18.8 -18.7 -18.6 -18.5 -18.4 -18.3 -18.2 -18.1 -18 + Bin 72: -18 -17.9 -17.8 -17.7 -17.6 -17.5 -17.4 -17.3 -17.2 -17.1 -17 + Bin 73: -17 -16.9 -16.8 -16.7 -16.6 -16.5 -16.4 -16.3 -16.2 -16.1 -16 + Bin 74: -16 -15.9 -15.8 -15.7 -15.6 -15.5 -15.4 -15.3 -15.2 -15.1 -15 + Bin 75: -15 -14.9 -14.8 -14.7 -14.6 -14.5 -14.4 -14.3 -14.2 -14.1 -14 + Bin 76: -14 -13.9 -13.8 -13.7 -13.6 -13.5 -13.4 -13.3 -13.2 -13.1 -13 + Bin 77: -13 -12.9 -12.8 -12.7 -12.6 -12.5 -12.4 -12.3 -12.2 -12.1 -12 + Bin 78: -12 -11.9 -11.8 -11.7 -11.6 -11.5 -11.4 -11.3 -11.2 -11.1 -11 + Bin 79: -11 -10.9 -10.8 -10.7 -10.6 -10.5 -10.4 -10.3 -10.2 -10.1 -10 + Bin 80: -10 -9.9 -9.8 -9.7 -9.6 -9.5 -9.4 -9.3 -9.2 -9.1 -9 + Bin 81: -9 -8.9 -8.8 -8.7 -8.6 -8.5 -8.4 -8.3 -8.2 -8.1 -8 + Bin 82: -8 -7.9 -7.8 -7.7 -7.6 -7.5 -7.4 -7.3 -7.2 -7.1 -7 + Bin 83: -7 -6.9 -6.8 -6.7 -6.6 -6.5 -6.4 -6.3 -6.2 -6.1 -6 + Bin 84: -6 -5.9 -5.8 -5.7 -5.6 -5.5 -5.4 -5.3 -5.2 -5.1 -5 + Bin 85: -5 -4.9 -4.8 -4.7 -4.6 -4.5 -4.4 -4.3 -4.2 -4.1 -4 + Bin 86: -4 -3.9 -3.8 -3.7 -3.6 -3.5 -3.4 -3.3 -3.2 -3.1 -3 + Bin 87: -3 -2.9 -2.8 -2.7 -2.6 -2.5 -2.4 -2.3 -2.2 -2.1 -2 + Bin 88: -2 -1.9 -1.8 -1.7 -1.6 -1.5 -1.4 -1.3 -1.2 -1.1 -1 + Bin 89: -1 -0.9 -0.8 -0.7 -0.6 -0.5 -0.4 -0.3 -0.2 -0.1 0 + Bin 90: 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 + Bin 91: 1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2 + Bin 92: 2 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3 + Bin 93: 3 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4 + Bin 94: 4 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5 + Bin 95: 5 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6 + Bin 96: 6 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7 + Bin 97: 7 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8 + Bin 98: 8 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9 + Bin 99: 9 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 10 + Bin 100: 10 10.1 10.2 10.3 10.4 10.5 10.6 10.7 10.8 10.9 11 + Bin 101: 11 11.1 11.2 11.3 11.4 11.5 11.6 11.7 11.8 11.9 12 + Bin 102: 12 12.1 12.2 12.3 12.4 12.5 12.6 12.7 12.8 12.9 13 + Bin 103: 13 13.1 13.2 13.3 13.4 13.5 13.6 13.7 13.8 13.9 14 + Bin 104: 14 14.1 14.2 14.3 14.4 14.5 14.6 14.7 14.8 14.9 15 + Bin 105: 15 15.1 15.2 15.3 15.4 15.5 15.6 15.7 15.8 15.9 16 + Bin 106: 16 16.1 16.2 16.3 16.4 16.5 16.6 16.7 16.8 16.9 17 + Bin 107: 17 17.1 17.2 17.3 17.4 17.5 17.6 17.7 17.8 17.9 18 + Bin 108: 18 18.1 18.2 18.3 18.4 18.5 18.6 18.7 18.8 18.9 19 + Bin 109: 19 19.1 19.2 19.3 19.4 19.5 19.6 19.7 19.8 19.9 20 + Bin 110: 20 20.1 20.2 20.3 20.4 20.5 20.6 20.7 20.8 20.9 21 + Bin 111: 21 21.1 21.2 21.3 21.4 21.5 21.6 21.7 21.8 21.9 22 + Bin 112: 22 22.1 22.2 22.3 22.4 22.5 22.6 22.7 22.8 22.9 23 + Bin 113: 23 23.1 23.2 23.3 23.4 23.5 23.6 23.7 23.8 23.9 24 + Bin 114: 24 24.1 24.2 24.3 24.4 24.5 24.6 24.7 24.8 24.9 25 + Bin 115: 25 25.1 25.2 25.3 25.4 25.5 25.6 25.7 25.8 25.9 26 + Bin 116: 26 26.1 26.2 26.3 26.4 26.5 26.6 26.7 26.8 26.9 27 + Bin 117: 27 27.1 27.2 27.3 27.4 27.5 27.6 27.7 27.8 27.9 28 + Bin 118: 28 28.1 28.2 28.3 28.4 28.5 28.6 28.7 28.8 28.9 29 + Bin 119: 29 29.1 29.2 29.3 29.4 29.5 29.6 29.7 29.8 29.9 30 + Bin 120: 30 30.1 30.2 30.3 30.4 30.5 30.6 30.7 30.8 30.9 31 + Bin 121: 31 31.1 31.2 31.3 31.4 31.5 31.6 31.7 31.8 31.9 32 + Bin 122: 32 32.1 32.2 32.3 32.4 32.5 32.6 32.7 32.8 32.9 33 + Bin 123: 33 33.1 33.2 33.3 33.4 33.5 33.6 33.7 33.8 33.9 34 + Bin 124: 34 34.1 34.2 34.3 34.4 34.5 34.6 34.7 34.8 34.9 35 + Bin 125: 35 35.1 35.2 35.3 35.4 35.5 35.6 35.7 35.8 35.9 36 + Bin 126: 36 36.1 36.2 36.3 36.4 36.5 36.6 36.7 36.8 36.9 37 + Bin 127: 37 37.1 37.2 37.3 37.4 37.5 37.6 37.7 37.8 37.9 38 + Bin 128: 38 38.1 38.2 38.3 38.4 38.5 38.6 38.7 38.8 38.9 39 + Bin 129: 39 39.1 39.2 39.3 39.4 39.5 39.6 39.7 39.8 39.9 40 + Bin 130: 40 40.1 40.2 40.3 40.4 40.5 40.6 40.7 40.8 40.9 41 + Bin 131: 41 41.1 41.2 41.3 41.4 41.5 41.6 41.7 41.8 41.9 42 + Bin 132: 42 42.1 42.2 42.3 42.4 42.5 42.6 42.7 42.8 42.9 43 + Bin 133: 43 43.1 43.2 43.3 43.4 43.5 43.6 43.7 43.8 43.9 44 + Bin 134: 44 44.1 44.2 44.3 44.4 44.5 44.6 44.7 44.8 44.9 45 + Bin 135: 45 45.1 45.2 45.3 45.4 45.5 45.6 45.7 45.8 45.9 46 + Bin 136: 46 46.1 46.2 46.3 46.4 46.5 46.6 46.7 46.8 46.9 47 + Bin 137: 47 47.1 47.2 47.3 47.4 47.5 47.6 47.7 47.8 47.9 48 + Bin 138: 48 48.1 48.2 48.3 48.4 48.5 48.6 48.7 48.8 48.9 49 + Bin 139: 49 49.1 49.2 49.3 49.4 49.5 49.6 49.7 49.8 49.9 50 + Bin 140: 50 50.1 50.2 50.3 50.4 50.5 50.6 50.7 50.8 50.9 51 + Bin 141: 51 51.1 51.2 51.3 51.4 51.5 51.6 51.7 51.8 51.9 52 + Bin 142: 52 52.1 52.2 52.3 52.4 52.5 52.6 52.7 52.8 52.9 53 + Bin 143: 53 53.1 53.2 53.3 53.4 53.5 53.6 53.7 53.8 53.9 54 + Bin 144: 54 54.1 54.2 54.3 54.4 54.5 54.6 54.7 54.8 54.9 55 + Bin 145: 55 55.1 55.2 55.3 55.4 55.5 55.6 55.7 55.8 55.9 56 + Bin 146: 56 56.1 56.2 56.3 56.4 56.5 56.6 56.7 56.8 56.9 57 + Bin 147: 57 57.1 57.2 57.3 57.4 57.5 57.6 57.7 57.8 57.9 58 + Bin 148: 58 58.1 58.2 58.3 58.4 58.5 58.6 58.7 58.8 58.9 59 + Bin 149: 59 59.1 59.2 59.3 59.4 59.5 59.6 59.7 59.8 59.9 60 + Bin 150: 60 60.1 60.2 60.3 60.4 60.5 60.6 60.7 60.8 60.9 61 + Bin 151: 61 61.1 61.2 61.3 61.4 61.5 61.6 61.7 61.8 61.9 62 + Bin 152: 62 62.1 62.2 62.3 62.4 62.5 62.6 62.7 62.8 62.9 63 + Bin 153: 63 63.1 63.2 63.3 63.4 63.5 63.6 63.7 63.8 63.9 64 + Bin 154: 64 64.1 64.2 64.3 64.4 64.5 64.6 64.7 64.8 64.9 65 + Bin 155: 65 65.1 65.2 65.3 65.4 65.5 65.6 65.7 65.8 65.9 66 + Bin 156: 66 66.1 66.2 66.3 66.4 66.5 66.6 66.7 66.8 66.9 67 + Bin 157: 67 67.1 67.2 67.3 67.4 67.5 67.6 67.7 67.8 67.9 68 + Bin 158: 68 68.1 68.2 68.3 68.4 68.5 68.6 68.7 68.8 68.9 69 + Bin 159: 69 69.1 69.2 69.3 69.4 69.5 69.6 69.7 69.8 69.9 70 + Bin 160: 70 70.1 70.2 70.3 70.4 70.5 70.6 70.7 70.8 70.9 71 + Bin 161: 71 71.1 71.2 71.3 71.4 71.5 71.6 71.7 71.8 71.9 72 + Bin 162: 72 72.1 72.2 72.3 72.4 72.5 72.6 72.7 72.8 72.9 73 + Bin 163: 73 73.1 73.2 73.3 73.4 73.5 73.6 73.7 73.8 73.9 74 + Bin 164: 74 74.1 74.2 74.3 74.4 74.5 74.6 74.7 74.8 74.9 75 + Bin 165: 75 75.1 75.2 75.3 75.4 75.5 75.6 75.7 75.8 75.9 76 + Bin 166: 76 76.1 76.2 76.3 76.4 76.5 76.6 76.7 76.8 76.9 77 + Bin 167: 77 77.1 77.2 77.3 77.4 77.5 77.6 77.7 77.8 77.9 78 + Bin 168: 78 78.1 78.2 78.3 78.4 78.5 78.6 78.7 78.8 78.9 79 + Bin 169: 79 79.1 79.2 79.3 79.4 79.5 79.6 79.7 79.8 79.9 80 + Bin 170: 80 80.1 80.2 80.3 80.4 80.5 80.6 80.7 80.8 80.9 81 + Bin 171: 81 81.1 81.2 81.3 81.4 81.5 81.6 81.7 81.8 81.9 82 + Bin 172: 82 82.1 82.2 82.3 82.4 82.5 82.6 82.7 82.8 82.9 83 + Bin 173: 83 83.1 83.2 83.3 83.4 83.5 83.6 83.7 83.8 83.9 84 + Bin 174: 84 84.1 84.2 84.3 84.4 84.5 84.6 84.7 84.8 84.9 85 + Bin 175: 85 85.1 85.2 85.3 85.4 85.5 85.6 85.7 85.8 85.9 86 + Bin 176: 86 86.1 86.2 86.3 86.4 86.5 86.6 86.7 86.8 86.9 87 + Bin 177: 87 87.1 87.2 87.3 87.4 87.5 87.6 87.7 87.8 87.9 88 + Bin 178: 88 88.1 88.2 88.3 88.4 88.5 88.6 88.7 88.8 88.9 89 + Bin 179: 89 89.1 89.2 89.3 89.4 89.5 89.6 89.7 89.8 89.9 90 + +Det 5: + Bin 0: -1000 -999.9 -999.8 -999.7 -999.6 -999.5 -999.4 -999.3 -999.2 -999.1 -999 + Bin 1: -999 -998.9 -998.8 -998.7 -998.6 -998.5 -998.4 -998.3 -998.2 -998.1 -998 + Bin 2: -998 -997.9 -997.8 -997.7 -997.6 -997.5 -997.4 -997.3 -997.2 -997.1 -997 + Bin 3: -997 -996.9 -996.8 -996.7 -996.6 -996.5 -996.4 -996.3 -996.2 -996.1 -996 + Bin 4: -996 -995.9 -995.8 -995.7 -995.6 -995.5 -995.4 -995.3 -995.2 -995.1 -995 + Bin 5: -995 -994.9 -994.8 -994.7 -994.6 -994.5 -994.4 -994.3 -994.2 -994.1 -994 + Bin 6: -994 -993.9 -993.8 -993.7 -993.6 -993.5 -993.4 -993.3 -993.2 -993.1 -993 + Bin 7: -993 -992.9 -992.8 -992.7 -992.6 -992.5 -992.4 -992.3 -992.2 -992.1 -992 + Bin 8: -992 -991.9 -991.8 -991.7 -991.6 -991.5 -991.4 -991.3 -991.2 -991.1 -991 + Bin 9: -991 -990.9 -990.8 -990.7 -990.6 -990.5 -990.4 -990.3 -990.2 -990.1 -990 + Bin 10: -990 -989.9 -989.8 -989.7 -989.6 -989.5 -989.4 -989.3 -989.2 -989.1 -989 + Bin 11: -989 -988.9 -988.8 -988.7 -988.6 -988.5 -988.4 -988.3 -988.2 -988.1 -988 + Bin 12: -988 -987.9 -987.8 -987.7 -987.6 -987.5 -987.4 -987.3 -987.2 -987.1 -987 + Bin 13: -987 -986.9 -986.8 -986.7 -986.6 -986.5 -986.4 -986.3 -986.2 -986.1 -986 + Bin 14: -986 -985.9 -985.8 -985.7 -985.6 -985.5 -985.4 -985.3 -985.2 -985.1 -985 + Bin 15: -985 -984.9 -984.8 -984.7 -984.6 -984.5 -984.4 -984.3 -984.2 -984.1 -984 + Bin 16: -984 -983.9 -983.8 -983.7 -983.6 -983.5 -983.4 -983.3 -983.2 -983.1 -983 + Bin 17: -983 -982.9 -982.8 -982.7 -982.6 -982.5 -982.4 -982.3 -982.2 -982.1 -982 + Bin 18: -982 -981.9 -981.8 -981.7 -981.6 -981.5 -981.4 -981.3 -981.2 -981.1 -981 + Bin 19: -981 -980.9 -980.8 -980.7 -980.6 -980.5 -980.4 -980.3 -980.2 -980.1 -980 + Bin 20: -980 -979.9 -979.8 -979.7 -979.6 -979.5 -979.4 -979.3 -979.2 -979.1 -979 + Bin 21: -979 -978.9 -978.8 -978.7 -978.6 -978.5 -978.4 -978.3 -978.2 -978.1 -978 + Bin 22: -978 -977.9 -977.8 -977.7 -977.6 -977.5 -977.4 -977.3 -977.2 -977.1 -977 + Bin 23: -977 -976.9 -976.8 -976.7 -976.6 -976.5 -976.4 -976.3 -976.2 -976.1 -976 + Bin 24: -976 -975.9 -975.8 -975.7 -975.6 -975.5 -975.4 -975.3 -975.2 -975.1 -975 + Bin 25: -975 -974.9 -974.8 -974.7 -974.6 -974.5 -974.4 -974.3 -974.2 -974.1 -974 + Bin 26: -974 -973.9 -973.8 -973.7 -973.6 -973.5 -973.4 -973.3 -973.2 -973.1 -973 + Bin 27: -973 -972.9 -972.8 -972.7 -972.6 -972.5 -972.4 -972.3 -972.2 -972.1 -972 + Bin 28: -972 -971.9 -971.8 -971.7 -971.6 -971.5 -971.4 -971.3 -971.2 -971.1 -971 + Bin 29: -971 -970.9 -970.8 -970.7 -970.6 -970.5 -970.4 -970.3 -970.2 -970.1 -970 + Bin 30: -970 -969.9 -969.8 -969.7 -969.6 -969.5 -969.4 -969.3 -969.2 -969.1 -969 + Bin 31: -969 -968.9 -968.8 -968.7 -968.6 -968.5 -968.4 -968.3 -968.2 -968.1 -968 + Bin 32: -968 -967.9 -967.8 -967.7 -967.6 -967.5 -967.4 -967.3 -967.2 -967.1 -967 + Bin 33: -967 -966.9 -966.8 -966.7 -966.6 -966.5 -966.4 -966.3 -966.2 -966.1 -966 + Bin 34: -966 -965.9 -965.8 -965.7 -965.6 -965.5 -965.4 -965.3 -965.2 -965.1 -965 + Bin 35: -965 -964.9 -964.8 -964.7 -964.6 -964.5 -964.4 -964.3 -964.2 -964.1 -964 + Bin 36: -964 -963.9 -963.8 -963.7 -963.6 -963.5 -963.4 -963.3 -963.2 -963.1 -963 + Bin 37: -963 -962.9 -962.8 -962.7 -962.6 -962.5 -962.4 -962.3 -962.2 -962.1 -962 + Bin 38: -962 -961.9 -961.8 -961.7 -961.6 -961.5 -961.4 -961.3 -961.2 -961.1 -961 + Bin 39: -961 -960.9 -960.8 -960.7 -960.6 -960.5 -960.4 -960.3 -960.2 -960.1 -960 + Bin 40: -960 -959.9 -959.8 -959.7 -959.6 -959.5 -959.4 -959.3 -959.2 -959.1 -959 + Bin 41: -959 -958.9 -958.8 -958.7 -958.6 -958.5 -958.4 -958.3 -958.2 -958.1 -958 + Bin 42: -958 -957.9 -957.8 -957.7 -957.6 -957.5 -957.4 -957.3 -957.2 -957.1 -957 + Bin 43: -957 -956.9 -956.8 -956.7 -956.6 -956.5 -956.4 -956.3 -956.2 -956.1 -956 + Bin 44: -956 -955.9 -955.8 -955.7 -955.6 -955.5 -955.4 -955.3 -955.2 -955.1 -955 + Bin 45: -955 -954.9 -954.8 -954.7 -954.6 -954.5 -954.4 -954.3 -954.2 -954.1 -954 + Bin 46: -954 -953.9 -953.8 -953.7 -953.6 -953.5 -953.4 -953.3 -953.2 -953.1 -953 + Bin 47: -953 -952.9 -952.8 -952.7 -952.6 -952.5 -952.4 -952.3 -952.2 -952.1 -952 + Bin 48: -952 -951.9 -951.8 -951.7 -951.6 -951.5 -951.4 -951.3 -951.2 -951.1 -951 + Bin 49: -951 -950.9 -950.8 -950.7 -950.6 -950.5 -950.4 -950.3 -950.2 -950.1 -950 + Bin 50: -950 -949.9 -949.8 -949.7 -949.6 -949.5 -949.4 -949.3 -949.2 -949.1 -949 + Bin 51: -949 -948.9 -948.8 -948.7 -948.6 -948.5 -948.4 -948.3 -948.2 -948.1 -948 + Bin 52: -948 -947.9 -947.8 -947.7 -947.6 -947.5 -947.4 -947.3 -947.2 -947.1 -947 + Bin 53: -947 -946.9 -946.8 -946.7 -946.6 -946.5 -946.4 -946.3 -946.2 -946.1 -946 + Bin 54: -946 -945.9 -945.8 -945.7 -945.6 -945.5 -945.4 -945.3 -945.2 -945.1 -945 + Bin 55: -945 -944.9 -944.8 -944.7 -944.6 -944.5 -944.4 -944.3 -944.2 -944.1 -944 + Bin 56: -944 -943.9 -943.8 -943.7 -943.6 -943.5 -943.4 -943.3 -943.2 -943.1 -943 + Bin 57: -943 -942.9 -942.8 -942.7 -942.6 -942.5 -942.4 -942.3 -942.2 -942.1 -942 + Bin 58: -942 -941.9 -941.8 -941.7 -941.6 -941.5 -941.4 -941.3 -941.2 -941.1 -941 + Bin 59: -941 -940.9 -940.8 -940.7 -940.6 -940.5 -940.4 -940.3 -940.2 -940.1 -940 + Bin 60: -940 -939.9 -939.8 -939.7 -939.6 -939.5 -939.4 -939.3 -939.2 -939.1 -939 + Bin 61: -939 -938.9 -938.8 -938.7 -938.6 -938.5 -938.4 -938.3 -938.2 -938.1 -938 + Bin 62: -938 -937.9 -937.8 -937.7 -937.6 -937.5 -937.4 -937.3 -937.2 -937.1 -937 + Bin 63: -937 -936.9 -936.8 -936.7 -936.6 -936.5 -936.4 -936.3 -936.2 -936.1 -936 + Bin 64: -936 -935.9 -935.8 -935.7 -935.6 -935.5 -935.4 -935.3 -935.2 -935.1 -935 + Bin 65: -935 -934.9 -934.8 -934.7 -934.6 -934.5 -934.4 -934.3 -934.2 -934.1 -934 + Bin 66: -934 -933.9 -933.8 -933.7 -933.6 -933.5 -933.4 -933.3 -933.2 -933.1 -933 + Bin 67: -933 -932.9 -932.8 -932.7 -932.6 -932.5 -932.4 -932.3 -932.2 -932.1 -932 + Bin 68: -932 -931.9 -931.8 -931.7 -931.6 -931.5 -931.4 -931.3 -931.2 -931.1 -931 + Bin 69: -931 -930.9 -930.8 -930.7 -930.6 -930.5 -930.4 -930.3 -930.2 -930.1 -930 + Bin 70: -930 -929.9 -929.8 -929.7 -929.6 -929.5 -929.4 -929.3 -929.2 -929.1 -929 + Bin 71: -929 -928.9 -928.8 -928.7 -928.6 -928.5 -928.4 -928.3 -928.2 -928.1 -928 + Bin 72: -928 -927.9 -927.8 -927.7 -927.6 -927.5 -927.4 -927.3 -927.2 -927.1 -927 + Bin 73: -927 -926.9 -926.8 -926.7 -926.6 -926.5 -926.4 -926.3 -926.2 -926.1 -926 + Bin 74: -926 -925.9 -925.8 -925.7 -925.6 -925.5 -925.4 -925.3 -925.2 -925.1 -925 + Bin 75: -925 -924.9 -924.8 -924.7 -924.6 -924.5 -924.4 -924.3 -924.2 -924.1 -924 + Bin 76: -924 -923.9 -923.8 -923.7 -923.6 -923.5 -923.4 -923.3 -923.2 -923.1 -923 + Bin 77: -923 -922.9 -922.8 -922.7 -922.6 -922.5 -922.4 -922.3 -922.2 -922.1 -922 + Bin 78: -922 -921.9 -921.8 -921.7 -921.6 -921.5 -921.4 -921.3 -921.2 -921.1 -921 + Bin 79: -921 -920.9 -920.8 -920.7 -920.6 -920.5 -920.4 -920.3 -920.2 -920.1 -920 + Bin 80: -920 -919.9 -919.8 -919.7 -919.6 -919.5 -919.4 -919.3 -919.2 -919.1 -919 + Bin 81: -919 -918.9 -918.8 -918.7 -918.6 -918.5 -918.4 -918.3 -918.2 -918.1 -918 + Bin 82: -918 -917.9 -917.8 -917.7 -917.6 -917.5 -917.4 -917.3 -917.2 -917.1 -917 + Bin 83: -917 -916.9 -916.8 -916.7 -916.6 -916.5 -916.4 -916.3 -916.2 -916.1 -916 + Bin 84: -916 -915.9 -915.8 -915.7 -915.6 -915.5 -915.4 -915.3 -915.2 -915.1 -915 + Bin 85: -915 -914.9 -914.8 -914.7 -914.6 -914.5 -914.4 -914.3 -914.2 -914.1 -914 + Bin 86: -914 -913.9 -913.8 -913.7 -913.6 -913.5 -913.4 -913.3 -913.2 -913.1 -913 + Bin 87: -913 -912.9 -912.8 -912.7 -912.6 -912.5 -912.4 -912.3 -912.2 -912.1 -912 + Bin 88: -912 -911.9 -911.8 -911.7 -911.6 -911.5 -911.4 -911.3 -911.2 -911.1 -911 + Bin 89: -911 -910.9 -910.8 -910.7 -910.6 -910.5 -910.4 -910.3 -910.2 -910.1 -910 + Bin 90: -910 -909.9 -909.8 -909.7 -909.6 -909.5 -909.4 -909.3 -909.2 -909.1 -909 + Bin 91: -909 -908.9 -908.8 -908.7 -908.6 -908.5 -908.4 -908.3 -908.2 -908.1 -908 + Bin 92: -908 -907.9 -907.8 -907.7 -907.6 -907.5 -907.4 -907.3 -907.2 -907.1 -907 + Bin 93: -907 -906.9 -906.8 -906.7 -906.6 -906.5 -906.4 -906.3 -906.2 -906.1 -906 + Bin 94: -906 -905.9 -905.8 -905.7 -905.6 -905.5 -905.4 -905.3 -905.2 -905.1 -905 + Bin 95: -905 -904.9 -904.8 -904.7 -904.6 -904.5 -904.4 -904.3 -904.2 -904.1 -904 + Bin 96: -904 -903.9 -903.8 -903.7 -903.6 -903.5 -903.4 -903.3 -903.2 -903.1 -903 + Bin 97: -903 -902.9 -902.8 -902.7 -902.6 -902.5 -902.4 -902.3 -902.2 -902.1 -902 + Bin 98: -902 -901.9 -901.8 -901.7 -901.6 -901.5 -901.4 -901.3 -901.2 -901.1 -901 + Bin 99: -901 -900.9 -900.8 -900.7 -900.6 -900.5 -900.4 -900.3 -900.2 -900.1 -900 + Bin 100: -900 -899.9 -899.8 -899.7 -899.6 -899.5 -899.4 -899.3 -899.2 -899.1 -899 + Bin 101: -899 -898.9 -898.8 -898.7 -898.6 -898.5 -898.4 -898.3 -898.2 -898.1 -898 + Bin 102: -898 -897.9 -897.8 -897.7 -897.6 -897.5 -897.4 -897.3 -897.2 -897.1 -897 + Bin 103: -897 -896.9 -896.8 -896.7 -896.6 -896.5 -896.4 -896.3 -896.2 -896.1 -896 + Bin 104: -896 -895.9 -895.8 -895.7 -895.6 -895.5 -895.4 -895.3 -895.2 -895.1 -895 + Bin 105: -895 -894.9 -894.8 -894.7 -894.6 -894.5 -894.4 -894.3 -894.2 -894.1 -894 + Bin 106: -894 -893.9 -893.8 -893.7 -893.6 -893.5 -893.4 -893.3 -893.2 -893.1 -893 + Bin 107: -893 -892.9 -892.8 -892.7 -892.6 -892.5 -892.4 -892.3 -892.2 -892.1 -892 + Bin 108: -892 -891.9 -891.8 -891.7 -891.6 -891.5 -891.4 -891.3 -891.2 -891.1 -891 + Bin 109: -891 -890.9 -890.8 -890.7 -890.6 -890.5 -890.4 -890.3 -890.2 -890.1 -890 + Bin 110: -890 -889.9 -889.8 -889.7 -889.6 -889.5 -889.4 -889.3 -889.2 -889.1 -889 + Bin 111: -889 -888.9 -888.8 -888.7 -888.6 -888.5 -888.4 -888.3 -888.2 -888.1 -888 + Bin 112: -888 -887.9 -887.8 -887.7 -887.6 -887.5 -887.4 -887.3 -887.2 -887.1 -887 + Bin 113: -887 -886.9 -886.8 -886.7 -886.6 -886.5 -886.4 -886.3 -886.2 -886.1 -886 + Bin 114: -886 -885.9 -885.8 -885.7 -885.6 -885.5 -885.4 -885.3 -885.2 -885.1 -885 + Bin 115: -885 -884.9 -884.8 -884.7 -884.6 -884.5 -884.4 -884.3 -884.2 -884.1 -884 + Bin 116: -884 -883.9 -883.8 -883.7 -883.6 -883.5 -883.4 -883.3 -883.2 -883.1 -883 + Bin 117: -883 -882.9 -882.8 -882.7 -882.6 -882.5 -882.4 -882.3 -882.2 -882.1 -882 + Bin 118: -882 -881.9 -881.8 -881.7 -881.6 -881.5 -881.4 -881.3 -881.2 -881.1 -881 + Bin 119: -881 -880.9 -880.8 -880.7 -880.6 -880.5 -880.4 -880.3 -880.2 -880.1 -880 + Bin 120: -880 -879.9 -879.8 -879.7 -879.6 -879.5 -879.4 -879.3 -879.2 -879.1 -879 + Bin 121: -879 -878.9 -878.8 -878.7 -878.6 -878.5 -878.4 -878.3 -878.2 -878.1 -878 + Bin 122: -878 -877.9 -877.8 -877.7 -877.6 -877.5 -877.4 -877.3 -877.2 -877.1 -877 + Bin 123: -877 -876.9 -876.8 -876.7 -876.6 -876.5 -876.4 -876.3 -876.2 -876.1 -876 + Bin 124: -876 -875.9 -875.8 -875.7 -875.6 -875.5 -875.4 -875.3 -875.2 -875.1 -875 + Bin 125: -875 -874.9 -874.8 -874.7 -874.6 -874.5 -874.4 -874.3 -874.2 -874.1 -874 + Bin 126: -874 -873.9 -873.8 -873.7 -873.6 -873.5 -873.4 -873.3 -873.2 -873.1 -873 + Bin 127: -873 -872.9 -872.8 -872.7 -872.6 -872.5 -872.4 -872.3 -872.2 -872.1 -872 + Bin 128: -872 -871.9 -871.8 -871.7 -871.6 -871.5 -871.4 -871.3 -871.2 -871.1 -871 + Bin 129: -871 -870.9 -870.8 -870.7 -870.6 -870.5 -870.4 -870.3 -870.2 -870.1 -870 + Bin 130: -870 -869.9 -869.8 -869.7 -869.6 -869.5 -869.4 -869.3 -869.2 -869.1 -869 + Bin 131: -869 -868.9 -868.8 -868.7 -868.6 -868.5 -868.4 -868.3 -868.2 -868.1 -868 + Bin 132: -868 -867.9 -867.8 -867.7 -867.6 -867.5 -867.4 -867.3 -867.2 -867.1 -867 + Bin 133: -867 -866.9 -866.8 -866.7 -866.6 -866.5 -866.4 -866.3 -866.2 -866.1 -866 + Bin 134: -866 -865.9 -865.8 -865.7 -865.6 -865.5 -865.4 -865.3 -865.2 -865.1 -865 + Bin 135: -865 -864.9 -864.8 -864.7 -864.6 -864.5 -864.4 -864.3 -864.2 -864.1 -864 + Bin 136: -864 -863.9 -863.8 -863.7 -863.6 -863.5 -863.4 -863.3 -863.2 -863.1 -863 + Bin 137: -863 -862.9 -862.8 -862.7 -862.6 -862.5 -862.4 -862.3 -862.2 -862.1 -862 + Bin 138: -862 -861.9 -861.8 -861.7 -861.6 -861.5 -861.4 -861.3 -861.2 -861.1 -861 + Bin 139: -861 -860.9 -860.8 -860.7 -860.6 -860.5 -860.4 -860.3 -860.2 -860.1 -860 + Bin 140: -860 -859.9 -859.8 -859.7 -859.6 -859.5 -859.4 -859.3 -859.2 -859.1 -859 + Bin 141: -859 -858.9 -858.8 -858.7 -858.6 -858.5 -858.4 -858.3 -858.2 -858.1 -858 + Bin 142: -858 -857.9 -857.8 -857.7 -857.6 -857.5 -857.4 -857.3 -857.2 -857.1 -857 + Bin 143: -857 -856.9 -856.8 -856.7 -856.6 -856.5 -856.4 -856.3 -856.2 -856.1 -856 + Bin 144: -856 -855.9 -855.8 -855.7 -855.6 -855.5 -855.4 -855.3 -855.2 -855.1 -855 + Bin 145: -855 -854.9 -854.8 -854.7 -854.6 -854.5 -854.4 -854.3 -854.2 -854.1 -854 + Bin 146: -854 -853.9 -853.8 -853.7 -853.6 -853.5 -853.4 -853.3 -853.2 -853.1 -853 + Bin 147: -853 -852.9 -852.8 -852.7 -852.6 -852.5 -852.4 -852.3 -852.2 -852.1 -852 + Bin 148: -852 -851.9 -851.8 -851.7 -851.6 -851.5 -851.4 -851.3 -851.2 -851.1 -851 + Bin 149: -851 -850.9 -850.8 -850.7 -850.6 -850.5 -850.4 -850.3 -850.2 -850.1 -850 + Bin 150: -850 -849.9 -849.8 -849.7 -849.6 -849.5 -849.4 -849.3 -849.2 -849.1 -849 + Bin 151: -849 -848.9 -848.8 -848.7 -848.6 -848.5 -848.4 -848.3 -848.2 -848.1 -848 + Bin 152: -848 -847.9 -847.8 -847.7 -847.6 -847.5 -847.4 -847.3 -847.2 -847.1 -847 + Bin 153: -847 -846.9 -846.8 -846.7 -846.6 -846.5 -846.4 -846.3 -846.2 -846.1 -846 + Bin 154: -846 -845.9 -845.8 -845.7 -845.6 -845.5 -845.4 -845.3 -845.2 -845.1 -845 + Bin 155: -845 -844.9 -844.8 -844.7 -844.6 -844.5 -844.4 -844.3 -844.2 -844.1 -844 + Bin 156: -844 -843.9 -843.8 -843.7 -843.6 -843.5 -843.4 -843.3 -843.2 -843.1 -843 + Bin 157: -843 -842.9 -842.8 -842.7 -842.6 -842.5 -842.4 -842.3 -842.2 -842.1 -842 + Bin 158: -842 -841.9 -841.8 -841.7 -841.6 -841.5 -841.4 -841.3 -841.2 -841.1 -841 + Bin 159: -841 -840.9 -840.8 -840.7 -840.6 -840.5 -840.4 -840.3 -840.2 -840.1 -840 + Bin 160: -840 -839.9 -839.8 -839.7 -839.6 -839.5 -839.4 -839.3 -839.2 -839.1 -839 + Bin 161: -839 -838.9 -838.8 -838.7 -838.6 -838.5 -838.4 -838.3 -838.2 -838.1 -838 + Bin 162: -838 -837.9 -837.8 -837.7 -837.6 -837.5 -837.4 -837.3 -837.2 -837.1 -837 + Bin 163: -837 -836.9 -836.8 -836.7 -836.6 -836.5 -836.4 -836.3 -836.2 -836.1 -836 + Bin 164: -836 -835.9 -835.8 -835.7 -835.6 -835.5 -835.4 -835.3 -835.2 -835.1 -835 + Bin 165: -835 -834.9 -834.8 -834.7 -834.6 -834.5 -834.4 -834.3 -834.2 -834.1 -834 + Bin 166: -834 -833.9 -833.8 -833.7 -833.6 -833.5 -833.4 -833.3 -833.2 -833.1 -833 + Bin 167: -833 -832.9 -832.8 -832.7 -832.6 -832.5 -832.4 -832.3 -832.2 -832.1 -832 + Bin 168: -832 -831.9 -831.8 -831.7 -831.6 -831.5 -831.4 -831.3 -831.2 -831.1 -831 + Bin 169: -831 -830.9 -830.8 -830.7 -830.6 -830.5 -830.4 -830.3 -830.2 -830.1 -830 + Bin 170: -830 -829.9 -829.8 -829.7 -829.6 -829.5 -829.4 -829.3 -829.2 -829.1 -829 + Bin 171: -829 -828.9 -828.8 -828.7 -828.6 -828.5 -828.4 -828.3 -828.2 -828.1 -828 + Bin 172: -828 -827.9 -827.8 -827.7 -827.6 -827.5 -827.4 -827.3 -827.2 -827.1 -827 + Bin 173: -827 -826.9 -826.8 -826.7 -826.6 -826.5 -826.4 -826.3 -826.2 -826.1 -826 + Bin 174: -826 -825.9 -825.8 -825.7 -825.6 -825.5 -825.4 -825.3 -825.2 -825.1 -825 + Bin 175: -825 -824.9 -824.8 -824.7 -824.6 -824.5 -824.4 -824.3 -824.2 -824.1 -824 + Bin 176: -824 -823.9 -823.8 -823.7 -823.6 -823.5 -823.4 -823.3 -823.2 -823.1 -823 + Bin 177: -823 -822.9 -822.8 -822.7 -822.6 -822.5 -822.4 -822.3 -822.2 -822.1 -822 + Bin 178: -822 -821.9 -821.8 -821.7 -821.6 -821.5 -821.4 -821.3 -821.2 -821.1 -821 + Bin 179: -821 -820.9 -820.8 -820.7 -820.6 -820.5 -820.4 -820.3 -820.2 -820.1 -820 + Bin 180: -820 -819.9 -819.8 -819.7 -819.6 -819.5 -819.4 -819.3 -819.2 -819.1 -819 + Bin 181: -819 -818.9 -818.8 -818.7 -818.6 -818.5 -818.4 -818.3 -818.2 -818.1 -818 + Bin 182: -818 -817.9 -817.8 -817.7 -817.6 -817.5 -817.4 -817.3 -817.2 -817.1 -817 + Bin 183: -817 -816.9 -816.8 -816.7 -816.6 -816.5 -816.4 -816.3 -816.2 -816.1 -816 + Bin 184: -816 -815.9 -815.8 -815.7 -815.6 -815.5 -815.4 -815.3 -815.2 -815.1 -815 + Bin 185: -815 -814.9 -814.8 -814.7 -814.6 -814.5 -814.4 -814.3 -814.2 -814.1 -814 + Bin 186: -814 -813.9 -813.8 -813.7 -813.6 -813.5 -813.4 -813.3 -813.2 -813.1 -813 + Bin 187: -813 -812.9 -812.8 -812.7 -812.6 -812.5 -812.4 -812.3 -812.2 -812.1 -812 + Bin 188: -812 -811.9 -811.8 -811.7 -811.6 -811.5 -811.4 -811.3 -811.2 -811.1 -811 + Bin 189: -811 -810.9 -810.8 -810.7 -810.6 -810.5 -810.4 -810.3 -810.2 -810.1 -810 + Bin 190: -810 -809.9 -809.8 -809.7 -809.6 -809.5 -809.4 -809.3 -809.2 -809.1 -809 + Bin 191: -809 -808.9 -808.8 -808.7 -808.6 -808.5 -808.4 -808.3 -808.2 -808.1 -808 + Bin 192: -808 -807.9 -807.8 -807.7 -807.6 -807.5 -807.4 -807.3 -807.2 -807.1 -807 + Bin 193: -807 -806.9 -806.8 -806.7 -806.6 -806.5 -806.4 -806.3 -806.2 -806.1 -806 + Bin 194: -806 -805.9 -805.8 -805.7 -805.6 -805.5 -805.4 -805.3 -805.2 -805.1 -805 + Bin 195: -805 -804.9 -804.8 -804.7 -804.6 -804.5 -804.4 -804.3 -804.2 -804.1 -804 + Bin 196: -804 -803.9 -803.8 -803.7 -803.6 -803.5 -803.4 -803.3 -803.2 -803.1 -803 + Bin 197: -803 -802.9 -802.8 -802.7 -802.6 -802.5 -802.4 -802.3 -802.2 -802.1 -802 + Bin 198: -802 -801.9 -801.8 -801.7 -801.6 -801.5 -801.4 -801.3 -801.2 -801.1 -801 + Bin 199: -801 -800.9 -800.8 -800.7 -800.6 -800.5 -800.4 -800.3 -800.2 -800.1 -800 + Bin 200: -800 -799.9 -799.8 -799.7 -799.6 -799.5 -799.4 -799.3 -799.2 -799.1 -799 + Bin 201: -799 -798.9 -798.8 -798.7 -798.6 -798.5 -798.4 -798.3 -798.2 -798.1 -798 + Bin 202: -798 -797.9 -797.8 -797.7 -797.6 -797.5 -797.4 -797.3 -797.2 -797.1 -797 + Bin 203: -797 -796.9 -796.8 -796.7 -796.6 -796.5 -796.4 -796.3 -796.2 -796.1 -796 + Bin 204: -796 -795.9 -795.8 -795.7 -795.6 -795.5 -795.4 -795.3 -795.2 -795.1 -795 + Bin 205: -795 -794.9 -794.8 -794.7 -794.6 -794.5 -794.4 -794.3 -794.2 -794.1 -794 + Bin 206: -794 -793.9 -793.8 -793.7 -793.6 -793.5 -793.4 -793.3 -793.2 -793.1 -793 + Bin 207: -793 -792.9 -792.8 -792.7 -792.6 -792.5 -792.4 -792.3 -792.2 -792.1 -792 + Bin 208: -792 -791.9 -791.8 -791.7 -791.6 -791.5 -791.4 -791.3 -791.2 -791.1 -791 + Bin 209: -791 -790.9 -790.8 -790.7 -790.6 -790.5 -790.4 -790.3 -790.2 -790.1 -790 + Bin 210: -790 -789.9 -789.8 -789.7 -789.6 -789.5 -789.4 -789.3 -789.2 -789.1 -789 + Bin 211: -789 -788.9 -788.8 -788.7 -788.6 -788.5 -788.4 -788.3 -788.2 -788.1 -788 + Bin 212: -788 -787.9 -787.8 -787.7 -787.6 -787.5 -787.4 -787.3 -787.2 -787.1 -787 + Bin 213: -787 -786.9 -786.8 -786.7 -786.6 -786.5 -786.4 -786.3 -786.2 -786.1 -786 + Bin 214: -786 -785.9 -785.8 -785.7 -785.6 -785.5 -785.4 -785.3 -785.2 -785.1 -785 + Bin 215: -785 -784.9 -784.8 -784.7 -784.6 -784.5 -784.4 -784.3 -784.2 -784.1 -784 + Bin 216: -784 -783.9 -783.8 -783.7 -783.6 -783.5 -783.4 -783.3 -783.2 -783.1 -783 + Bin 217: -783 -782.9 -782.8 -782.7 -782.6 -782.5 -782.4 -782.3 -782.2 -782.1 -782 + Bin 218: -782 -781.9 -781.8 -781.7 -781.6 -781.5 -781.4 -781.3 -781.2 -781.1 -781 + Bin 219: -781 -780.9 -780.8 -780.7 -780.6 -780.5 -780.4 -780.3 -780.2 -780.1 -780 + Bin 220: -780 -779.9 -779.8 -779.7 -779.6 -779.5 -779.4 -779.3 -779.2 -779.1 -779 + Bin 221: -779 -778.9 -778.8 -778.7 -778.6 -778.5 -778.4 -778.3 -778.2 -778.1 -778 + Bin 222: -778 -777.9 -777.8 -777.7 -777.6 -777.5 -777.4 -777.3 -777.2 -777.1 -777 + Bin 223: -777 -776.9 -776.8 -776.7 -776.6 -776.5 -776.4 -776.3 -776.2 -776.1 -776 + Bin 224: -776 -775.9 -775.8 -775.7 -775.6 -775.5 -775.4 -775.3 -775.2 -775.1 -775 + Bin 225: -775 -774.9 -774.8 -774.7 -774.6 -774.5 -774.4 -774.3 -774.2 -774.1 -774 + Bin 226: -774 -773.9 -773.8 -773.7 -773.6 -773.5 -773.4 -773.3 -773.2 -773.1 -773 + Bin 227: -773 -772.9 -772.8 -772.7 -772.6 -772.5 -772.4 -772.3 -772.2 -772.1 -772 + Bin 228: -772 -771.9 -771.8 -771.7 -771.6 -771.5 -771.4 -771.3 -771.2 -771.1 -771 + Bin 229: -771 -770.9 -770.8 -770.7 -770.6 -770.5 -770.4 -770.3 -770.2 -770.1 -770 + Bin 230: -770 -769.9 -769.8 -769.7 -769.6 -769.5 -769.4 -769.3 -769.2 -769.1 -769 + Bin 231: -769 -768.9 -768.8 -768.7 -768.6 -768.5 -768.4 -768.3 -768.2 -768.1 -768 + Bin 232: -768 -767.9 -767.8 -767.7 -767.6 -767.5 -767.4 -767.3 -767.2 -767.1 -767 + Bin 233: -767 -766.9 -766.8 -766.7 -766.6 -766.5 -766.4 -766.3 -766.2 -766.1 -766 + Bin 234: -766 -765.9 -765.8 -765.7 -765.6 -765.5 -765.4 -765.3 -765.2 -765.1 -765 + Bin 235: -765 -764.9 -764.8 -764.7 -764.6 -764.5 -764.4 -764.3 -764.2 -764.1 -764 + Bin 236: -764 -763.9 -763.8 -763.7 -763.6 -763.5 -763.4 -763.3 -763.2 -763.1 -763 + Bin 237: -763 -762.9 -762.8 -762.7 -762.6 -762.5 -762.4 -762.3 -762.2 -762.1 -762 + Bin 238: -762 -761.9 -761.8 -761.7 -761.6 -761.5 -761.4 -761.3 -761.2 -761.1 -761 + Bin 239: -761 -760.9 -760.8 -760.7 -760.6 -760.5 -760.4 -760.3 -760.2 -760.1 -760 + Bin 240: -760 -759.9 -759.8 -759.7 -759.6 -759.5 -759.4 -759.3 -759.2 -759.1 -759 + Bin 241: -759 -758.9 -758.8 -758.7 -758.6 -758.5 -758.4 -758.3 -758.2 -758.1 -758 + Bin 242: -758 -757.9 -757.8 -757.7 -757.6 -757.5 -757.4 -757.3 -757.2 -757.1 -757 + Bin 243: -757 -756.9 -756.8 -756.7 -756.6 -756.5 -756.4 -756.3 -756.2 -756.1 -756 + Bin 244: -756 -755.9 -755.8 -755.7 -755.6 -755.5 -755.4 -755.3 -755.2 -755.1 -755 + Bin 245: -755 -754.9 -754.8 -754.7 -754.6 -754.5 -754.4 -754.3 -754.2 -754.1 -754 + Bin 246: -754 -753.9 -753.8 -753.7 -753.6 -753.5 -753.4 -753.3 -753.2 -753.1 -753 + Bin 247: -753 -752.9 -752.8 -752.7 -752.6 -752.5 -752.4 -752.3 -752.2 -752.1 -752 + Bin 248: -752 -751.9 -751.8 -751.7 -751.6 -751.5 -751.4 -751.3 -751.2 -751.1 -751 + Bin 249: -751 -750.9 -750.8 -750.7 -750.6 -750.5 -750.4 -750.3 -750.2 -750.1 -750 + Bin 250: -750 -749.9 -749.8 -749.7 -749.6 -749.5 -749.4 -749.3 -749.2 -749.1 -749 + Bin 251: -749 -748.9 -748.8 -748.7 -748.6 -748.5 -748.4 -748.3 -748.2 -748.1 -748 + Bin 252: -748 -747.9 -747.8 -747.7 -747.6 -747.5 -747.4 -747.3 -747.2 -747.1 -747 + Bin 253: -747 -746.9 -746.8 -746.7 -746.6 -746.5 -746.4 -746.3 -746.2 -746.1 -746 + Bin 254: -746 -745.9 -745.8 -745.7 -745.6 -745.5 -745.4 -745.3 -745.2 -745.1 -745 + Bin 255: -745 -744.9 -744.8 -744.7 -744.6 -744.5 -744.4 -744.3 -744.2 -744.1 -744 + Bin 256: -744 -743.9 -743.8 -743.7 -743.6 -743.5 -743.4 -743.3 -743.2 -743.1 -743 + Bin 257: -743 -742.9 -742.8 -742.7 -742.6 -742.5 -742.4 -742.3 -742.2 -742.1 -742 + Bin 258: -742 -741.9 -741.8 -741.7 -741.6 -741.5 -741.4 -741.3 -741.2 -741.1 -741 + Bin 259: -741 -740.9 -740.8 -740.7 -740.6 -740.5 -740.4 -740.3 -740.2 -740.1 -740 + Bin 260: -740 -739.9 -739.8 -739.7 -739.6 -739.5 -739.4 -739.3 -739.2 -739.1 -739 + Bin 261: -739 -738.9 -738.8 -738.7 -738.6 -738.5 -738.4 -738.3 -738.2 -738.1 -738 + Bin 262: -738 -737.9 -737.8 -737.7 -737.6 -737.5 -737.4 -737.3 -737.2 -737.1 -737 + Bin 263: -737 -736.9 -736.8 -736.7 -736.6 -736.5 -736.4 -736.3 -736.2 -736.1 -736 + Bin 264: -736 -735.9 -735.8 -735.7 -735.6 -735.5 -735.4 -735.3 -735.2 -735.1 -735 + Bin 265: -735 -734.9 -734.8 -734.7 -734.6 -734.5 -734.4 -734.3 -734.2 -734.1 -734 + Bin 266: -734 -733.9 -733.8 -733.7 -733.6 -733.5 -733.4 -733.3 -733.2 -733.1 -733 + Bin 267: -733 -732.9 -732.8 -732.7 -732.6 -732.5 -732.4 -732.3 -732.2 -732.1 -732 + Bin 268: -732 -731.9 -731.8 -731.7 -731.6 -731.5 -731.4 -731.3 -731.2 -731.1 -731 + Bin 269: -731 -730.9 -730.8 -730.7 -730.6 -730.5 -730.4 -730.3 -730.2 -730.1 -730 + Bin 270: -730 -729.9 -729.8 -729.7 -729.6 -729.5 -729.4 -729.3 -729.2 -729.1 -729 + Bin 271: -729 -728.9 -728.8 -728.7 -728.6 -728.5 -728.4 -728.3 -728.2 -728.1 -728 + Bin 272: -728 -727.9 -727.8 -727.7 -727.6 -727.5 -727.4 -727.3 -727.2 -727.1 -727 + Bin 273: -727 -726.9 -726.8 -726.7 -726.6 -726.5 -726.4 -726.3 -726.2 -726.1 -726 + Bin 274: -726 -725.9 -725.8 -725.7 -725.6 -725.5 -725.4 -725.3 -725.2 -725.1 -725 + Bin 275: -725 -724.9 -724.8 -724.7 -724.6 -724.5 -724.4 -724.3 -724.2 -724.1 -724 + Bin 276: -724 -723.9 -723.8 -723.7 -723.6 -723.5 -723.4 -723.3 -723.2 -723.1 -723 + Bin 277: -723 -722.9 -722.8 -722.7 -722.6 -722.5 -722.4 -722.3 -722.2 -722.1 -722 + Bin 278: -722 -721.9 -721.8 -721.7 -721.6 -721.5 -721.4 -721.3 -721.2 -721.1 -721 + Bin 279: -721 -720.9 -720.8 -720.7 -720.6 -720.5 -720.4 -720.3 -720.2 -720.1 -720 + Bin 280: -720 -719.9 -719.8 -719.7 -719.6 -719.5 -719.4 -719.3 -719.2 -719.1 -719 + Bin 281: -719 -718.9 -718.8 -718.7 -718.6 -718.5 -718.4 -718.3 -718.2 -718.1 -718 + Bin 282: -718 -717.9 -717.8 -717.7 -717.6 -717.5 -717.4 -717.3 -717.2 -717.1 -717 + Bin 283: -717 -716.9 -716.8 -716.7 -716.6 -716.5 -716.4 -716.3 -716.2 -716.1 -716 + Bin 284: -716 -715.9 -715.8 -715.7 -715.6 -715.5 -715.4 -715.3 -715.2 -715.1 -715 + Bin 285: -715 -714.9 -714.8 -714.7 -714.6 -714.5 -714.4 -714.3 -714.2 -714.1 -714 + Bin 286: -714 -713.9 -713.8 -713.7 -713.6 -713.5 -713.4 -713.3 -713.2 -713.1 -713 + Bin 287: -713 -712.9 -712.8 -712.7 -712.6 -712.5 -712.4 -712.3 -712.2 -712.1 -712 + Bin 288: -712 -711.9 -711.8 -711.7 -711.6 -711.5 -711.4 -711.3 -711.2 -711.1 -711 + Bin 289: -711 -710.9 -710.8 -710.7 -710.6 -710.5 -710.4 -710.3 -710.2 -710.1 -710 + Bin 290: -710 -709.9 -709.8 -709.7 -709.6 -709.5 -709.4 -709.3 -709.2 -709.1 -709 + Bin 291: -709 -708.9 -708.8 -708.7 -708.6 -708.5 -708.4 -708.3 -708.2 -708.1 -708 + Bin 292: -708 -707.9 -707.8 -707.7 -707.6 -707.5 -707.4 -707.3 -707.2 -707.1 -707 + Bin 293: -707 -706.9 -706.8 -706.7 -706.6 -706.5 -706.4 -706.3 -706.2 -706.1 -706 + Bin 294: -706 -705.9 -705.8 -705.7 -705.6 -705.5 -705.4 -705.3 -705.2 -705.1 -705 + Bin 295: -705 -704.9 -704.8 -704.7 -704.6 -704.5 -704.4 -704.3 -704.2 -704.1 -704 + Bin 296: -704 -703.9 -703.8 -703.7 -703.6 -703.5 -703.4 -703.3 -703.2 -703.1 -703 + Bin 297: -703 -702.9 -702.8 -702.7 -702.6 -702.5 -702.4 -702.3 -702.2 -702.1 -702 + Bin 298: -702 -701.9 -701.8 -701.7 -701.6 -701.5 -701.4 -701.3 -701.2 -701.1 -701 + Bin 299: -701 -700.9 -700.8 -700.7 -700.6 -700.5 -700.4 -700.3 -700.2 -700.1 -700 + Bin 300: -700 -699.9 -699.8 -699.7 -699.6 -699.5 -699.4 -699.3 -699.2 -699.1 -699 + Bin 301: -699 -698.9 -698.8 -698.7 -698.6 -698.5 -698.4 -698.3 -698.2 -698.1 -698 + Bin 302: -698 -697.9 -697.8 -697.7 -697.6 -697.5 -697.4 -697.3 -697.2 -697.1 -697 + Bin 303: -697 -696.9 -696.8 -696.7 -696.6 -696.5 -696.4 -696.3 -696.2 -696.1 -696 + Bin 304: -696 -695.9 -695.8 -695.7 -695.6 -695.5 -695.4 -695.3 -695.2 -695.1 -695 + Bin 305: -695 -694.9 -694.8 -694.7 -694.6 -694.5 -694.4 -694.3 -694.2 -694.1 -694 + Bin 306: -694 -693.9 -693.8 -693.7 -693.6 -693.5 -693.4 -693.3 -693.2 -693.1 -693 + Bin 307: -693 -692.9 -692.8 -692.7 -692.6 -692.5 -692.4 -692.3 -692.2 -692.1 -692 + Bin 308: -692 -691.9 -691.8 -691.7 -691.6 -691.5 -691.4 -691.3 -691.2 -691.1 -691 + Bin 309: -691 -690.9 -690.8 -690.7 -690.6 -690.5 -690.4 -690.3 -690.2 -690.1 -690 + Bin 310: -690 -689.9 -689.8 -689.7 -689.6 -689.5 -689.4 -689.3 -689.2 -689.1 -689 + Bin 311: -689 -688.9 -688.8 -688.7 -688.6 -688.5 -688.4 -688.3 -688.2 -688.1 -688 + Bin 312: -688 -687.9 -687.8 -687.7 -687.6 -687.5 -687.4 -687.3 -687.2 -687.1 -687 + Bin 313: -687 -686.9 -686.8 -686.7 -686.6 -686.5 -686.4 -686.3 -686.2 -686.1 -686 + Bin 314: -686 -685.9 -685.8 -685.7 -685.6 -685.5 -685.4 -685.3 -685.2 -685.1 -685 + Bin 315: -685 -684.9 -684.8 -684.7 -684.6 -684.5 -684.4 -684.3 -684.2 -684.1 -684 + Bin 316: -684 -683.9 -683.8 -683.7 -683.6 -683.5 -683.4 -683.3 -683.2 -683.1 -683 + Bin 317: -683 -682.9 -682.8 -682.7 -682.6 -682.5 -682.4 -682.3 -682.2 -682.1 -682 + Bin 318: -682 -681.9 -681.8 -681.7 -681.6 -681.5 -681.4 -681.3 -681.2 -681.1 -681 + Bin 319: -681 -680.9 -680.8 -680.7 -680.6 -680.5 -680.4 -680.3 -680.2 -680.1 -680 + Bin 320: -680 -679.9 -679.8 -679.7 -679.6 -679.5 -679.4 -679.3 -679.2 -679.1 -679 + Bin 321: -679 -678.9 -678.8 -678.7 -678.6 -678.5 -678.4 -678.3 -678.2 -678.1 -678 + Bin 322: -678 -677.9 -677.8 -677.7 -677.6 -677.5 -677.4 -677.3 -677.2 -677.1 -677 + Bin 323: -677 -676.9 -676.8 -676.7 -676.6 -676.5 -676.4 -676.3 -676.2 -676.1 -676 + Bin 324: -676 -675.9 -675.8 -675.7 -675.6 -675.5 -675.4 -675.3 -675.2 -675.1 -675 + Bin 325: -675 -674.9 -674.8 -674.7 -674.6 -674.5 -674.4 -674.3 -674.2 -674.1 -674 + Bin 326: -674 -673.9 -673.8 -673.7 -673.6 -673.5 -673.4 -673.3 -673.2 -673.1 -673 + Bin 327: -673 -672.9 -672.8 -672.7 -672.6 -672.5 -672.4 -672.3 -672.2 -672.1 -672 + Bin 328: -672 -671.9 -671.8 -671.7 -671.6 -671.5 -671.4 -671.3 -671.2 -671.1 -671 + Bin 329: -671 -670.9 -670.8 -670.7 -670.6 -670.5 -670.4 -670.3 -670.2 -670.1 -670 + Bin 330: -670 -669.9 -669.8 -669.7 -669.6 -669.5 -669.4 -669.3 -669.2 -669.1 -669 + Bin 331: -669 -668.9 -668.8 -668.7 -668.6 -668.5 -668.4 -668.3 -668.2 -668.1 -668 + Bin 332: -668 -667.9 -667.8 -667.7 -667.6 -667.5 -667.4 -667.3 -667.2 -667.1 -667 + Bin 333: -667 -666.9 -666.8 -666.7 -666.6 -666.5 -666.4 -666.3 -666.2 -666.1 -666 + Bin 334: -666 -665.9 -665.8 -665.7 -665.6 -665.5 -665.4 -665.3 -665.2 -665.1 -665 + Bin 335: -665 -664.9 -664.8 -664.7 -664.6 -664.5 -664.4 -664.3 -664.2 -664.1 -664 + Bin 336: -664 -663.9 -663.8 -663.7 -663.6 -663.5 -663.4 -663.3 -663.2 -663.1 -663 + Bin 337: -663 -662.9 -662.8 -662.7 -662.6 -662.5 -662.4 -662.3 -662.2 -662.1 -662 + Bin 338: -662 -661.9 -661.8 -661.7 -661.6 -661.5 -661.4 -661.3 -661.2 -661.1 -661 + Bin 339: -661 -660.9 -660.8 -660.7 -660.6 -660.5 -660.4 -660.3 -660.2 -660.1 -660 + Bin 340: -660 -659.9 -659.8 -659.7 -659.6 -659.5 -659.4 -659.3 -659.2 -659.1 -659 + Bin 341: -659 -658.9 -658.8 -658.7 -658.6 -658.5 -658.4 -658.3 -658.2 -658.1 -658 + Bin 342: -658 -657.9 -657.8 -657.7 -657.6 -657.5 -657.4 -657.3 -657.2 -657.1 -657 + Bin 343: -657 -656.9 -656.8 -656.7 -656.6 -656.5 -656.4 -656.3 -656.2 -656.1 -656 + Bin 344: -656 -655.9 -655.8 -655.7 -655.6 -655.5 -655.4 -655.3 -655.2 -655.1 -655 + Bin 345: -655 -654.9 -654.8 -654.7 -654.6 -654.5 -654.4 -654.3 -654.2 -654.1 -654 + Bin 346: -654 -653.9 -653.8 -653.7 -653.6 -653.5 -653.4 -653.3 -653.2 -653.1 -653 + Bin 347: -653 -652.9 -652.8 -652.7 -652.6 -652.5 -652.4 -652.3 -652.2 -652.1 -652 + Bin 348: -652 -651.9 -651.8 -651.7 -651.6 -651.5 -651.4 -651.3 -651.2 -651.1 -651 + Bin 349: -651 -650.9 -650.8 -650.7 -650.6 -650.5 -650.4 -650.3 -650.2 -650.1 -650 + Bin 350: -650 -649.9 -649.8 -649.7 -649.6 -649.5 -649.4 -649.3 -649.2 -649.1 -649 + Bin 351: -649 -648.9 -648.8 -648.7 -648.6 -648.5 -648.4 -648.3 -648.2 -648.1 -648 + Bin 352: -648 -647.9 -647.8 -647.7 -647.6 -647.5 -647.4 -647.3 -647.2 -647.1 -647 + Bin 353: -647 -646.9 -646.8 -646.7 -646.6 -646.5 -646.4 -646.3 -646.2 -646.1 -646 + Bin 354: -646 -645.9 -645.8 -645.7 -645.6 -645.5 -645.4 -645.3 -645.2 -645.1 -645 + Bin 355: -645 -644.9 -644.8 -644.7 -644.6 -644.5 -644.4 -644.3 -644.2 -644.1 -644 + Bin 356: -644 -643.9 -643.8 -643.7 -643.6 -643.5 -643.4 -643.3 -643.2 -643.1 -643 + Bin 357: -643 -642.9 -642.8 -642.7 -642.6 -642.5 -642.4 -642.3 -642.2 -642.1 -642 + Bin 358: -642 -641.9 -641.8 -641.7 -641.6 -641.5 -641.4 -641.3 -641.2 -641.1 -641 + Bin 359: -641 -640.9 -640.8 -640.7 -640.6 -640.5 -640.4 -640.3 -640.2 -640.1 -640 + Bin 360: -640 -639.9 -639.8 -639.7 -639.6 -639.5 -639.4 -639.3 -639.2 -639.1 -639 + Bin 361: -639 -638.9 -638.8 -638.7 -638.6 -638.5 -638.4 -638.3 -638.2 -638.1 -638 + Bin 362: -638 -637.9 -637.8 -637.7 -637.6 -637.5 -637.4 -637.3 -637.2 -637.1 -637 + Bin 363: -637 -636.9 -636.8 -636.7 -636.6 -636.5 -636.4 -636.3 -636.2 -636.1 -636 + Bin 364: -636 -635.9 -635.8 -635.7 -635.6 -635.5 -635.4 -635.3 -635.2 -635.1 -635 + Bin 365: -635 -634.9 -634.8 -634.7 -634.6 -634.5 -634.4 -634.3 -634.2 -634.1 -634 + Bin 366: -634 -633.9 -633.8 -633.7 -633.6 -633.5 -633.4 -633.3 -633.2 -633.1 -633 + Bin 367: -633 -632.9 -632.8 -632.7 -632.6 -632.5 -632.4 -632.3 -632.2 -632.1 -632 + Bin 368: -632 -631.9 -631.8 -631.7 -631.6 -631.5 -631.4 -631.3 -631.2 -631.1 -631 + Bin 369: -631 -630.9 -630.8 -630.7 -630.6 -630.5 -630.4 -630.3 -630.2 -630.1 -630 + Bin 370: -630 -629.9 -629.8 -629.7 -629.6 -629.5 -629.4 -629.3 -629.2 -629.1 -629 + Bin 371: -629 -628.9 -628.8 -628.7 -628.6 -628.5 -628.4 -628.3 -628.2 -628.1 -628 + Bin 372: -628 -627.9 -627.8 -627.7 -627.6 -627.5 -627.4 -627.3 -627.2 -627.1 -627 + Bin 373: -627 -626.9 -626.8 -626.7 -626.6 -626.5 -626.4 -626.3 -626.2 -626.1 -626 + Bin 374: -626 -625.9 -625.8 -625.7 -625.6 -625.5 -625.4 -625.3 -625.2 -625.1 -625 + Bin 375: -625 -624.9 -624.8 -624.7 -624.6 -624.5 -624.4 -624.3 -624.2 -624.1 -624 + Bin 376: -624 -623.9 -623.8 -623.7 -623.6 -623.5 -623.4 -623.3 -623.2 -623.1 -623 + Bin 377: -623 -622.9 -622.8 -622.7 -622.6 -622.5 -622.4 -622.3 -622.2 -622.1 -622 + Bin 378: -622 -621.9 -621.8 -621.7 -621.6 -621.5 -621.4 -621.3 -621.2 -621.1 -621 + Bin 379: -621 -620.9 -620.8 -620.7 -620.6 -620.5 -620.4 -620.3 -620.2 -620.1 -620 + Bin 380: -620 -619.9 -619.8 -619.7 -619.6 -619.5 -619.4 -619.3 -619.2 -619.1 -619 + Bin 381: -619 -618.9 -618.8 -618.7 -618.6 -618.5 -618.4 -618.3 -618.2 -618.1 -618 + Bin 382: -618 -617.9 -617.8 -617.7 -617.6 -617.5 -617.4 -617.3 -617.2 -617.1 -617 + Bin 383: -617 -616.9 -616.8 -616.7 -616.6 -616.5 -616.4 -616.3 -616.2 -616.1 -616 + Bin 384: -616 -615.9 -615.8 -615.7 -615.6 -615.5 -615.4 -615.3 -615.2 -615.1 -615 + Bin 385: -615 -614.9 -614.8 -614.7 -614.6 -614.5 -614.4 -614.3 -614.2 -614.1 -614 + Bin 386: -614 -613.9 -613.8 -613.7 -613.6 -613.5 -613.4 -613.3 -613.2 -613.1 -613 + Bin 387: -613 -612.9 -612.8 -612.7 -612.6 -612.5 -612.4 -612.3 -612.2 -612.1 -612 + Bin 388: -612 -611.9 -611.8 -611.7 -611.6 -611.5 -611.4 -611.3 -611.2 -611.1 -611 + Bin 389: -611 -610.9 -610.8 -610.7 -610.6 -610.5 -610.4 -610.3 -610.2 -610.1 -610 + Bin 390: -610 -609.9 -609.8 -609.7 -609.6 -609.5 -609.4 -609.3 -609.2 -609.1 -609 + Bin 391: -609 -608.9 -608.8 -608.7 -608.6 -608.5 -608.4 -608.3 -608.2 -608.1 -608 + Bin 392: -608 -607.9 -607.8 -607.7 -607.6 -607.5 -607.4 -607.3 -607.2 -607.1 -607 + Bin 393: -607 -606.9 -606.8 -606.7 -606.6 -606.5 -606.4 -606.3 -606.2 -606.1 -606 + Bin 394: -606 -605.9 -605.8 -605.7 -605.6 -605.5 -605.4 -605.3 -605.2 -605.1 -605 + Bin 395: -605 -604.9 -604.8 -604.7 -604.6 -604.5 -604.4 -604.3 -604.2 -604.1 -604 + Bin 396: -604 -603.9 -603.8 -603.7 -603.6 -603.5 -603.4 -603.3 -603.2 -603.1 -603 + Bin 397: -603 -602.9 -602.8 -602.7 -602.6 -602.5 -602.4 -602.3 -602.2 -602.1 -602 + Bin 398: -602 -601.9 -601.8 -601.7 -601.6 -601.5 -601.4 -601.3 -601.2 -601.1 -601 + Bin 399: -601 -600.9 -600.8 -600.7 -600.6 -600.5 -600.4 -600.3 -600.2 -600.1 -600 + Bin 400: -600 -599.9 -599.8 -599.7 -599.6 -599.5 -599.4 -599.3 -599.2 -599.1 -599 + Bin 401: -599 -598.9 -598.8 -598.7 -598.6 -598.5 -598.4 -598.3 -598.2 -598.1 -598 + Bin 402: -598 -597.9 -597.8 -597.7 -597.6 -597.5 -597.4 -597.3 -597.2 -597.1 -597 + Bin 403: -597 -596.9 -596.8 -596.7 -596.6 -596.5 -596.4 -596.3 -596.2 -596.1 -596 + Bin 404: -596 -595.9 -595.8 -595.7 -595.6 -595.5 -595.4 -595.3 -595.2 -595.1 -595 + Bin 405: -595 -594.9 -594.8 -594.7 -594.6 -594.5 -594.4 -594.3 -594.2 -594.1 -594 + Bin 406: -594 -593.9 -593.8 -593.7 -593.6 -593.5 -593.4 -593.3 -593.2 -593.1 -593 + Bin 407: -593 -592.9 -592.8 -592.7 -592.6 -592.5 -592.4 -592.3 -592.2 -592.1 -592 + Bin 408: -592 -591.9 -591.8 -591.7 -591.6 -591.5 -591.4 -591.3 -591.2 -591.1 -591 + Bin 409: -591 -590.9 -590.8 -590.7 -590.6 -590.5 -590.4 -590.3 -590.2 -590.1 -590 + Bin 410: -590 -589.9 -589.8 -589.7 -589.6 -589.5 -589.4 -589.3 -589.2 -589.1 -589 + Bin 411: -589 -588.9 -588.8 -588.7 -588.6 -588.5 -588.4 -588.3 -588.2 -588.1 -588 + Bin 412: -588 -587.9 -587.8 -587.7 -587.6 -587.5 -587.4 -587.3 -587.2 -587.1 -587 + Bin 413: -587 -586.9 -586.8 -586.7 -586.6 -586.5 -586.4 -586.3 -586.2 -586.1 -586 + Bin 414: -586 -585.9 -585.8 -585.7 -585.6 -585.5 -585.4 -585.3 -585.2 -585.1 -585 + Bin 415: -585 -584.9 -584.8 -584.7 -584.6 -584.5 -584.4 -584.3 -584.2 -584.1 -584 + Bin 416: -584 -583.9 -583.8 -583.7 -583.6 -583.5 -583.4 -583.3 -583.2 -583.1 -583 + Bin 417: -583 -582.9 -582.8 -582.7 -582.6 -582.5 -582.4 -582.3 -582.2 -582.1 -582 + Bin 418: -582 -581.9 -581.8 -581.7 -581.6 -581.5 -581.4 -581.3 -581.2 -581.1 -581 + Bin 419: -581 -580.9 -580.8 -580.7 -580.6 -580.5 -580.4 -580.3 -580.2 -580.1 -580 + Bin 420: -580 -579.9 -579.8 -579.7 -579.6 -579.5 -579.4 -579.3 -579.2 -579.1 -579 + Bin 421: -579 -578.9 -578.8 -578.7 -578.6 -578.5 -578.4 -578.3 -578.2 -578.1 -578 + Bin 422: -578 -577.9 -577.8 -577.7 -577.6 -577.5 -577.4 -577.3 -577.2 -577.1 -577 + Bin 423: -577 -576.9 -576.8 -576.7 -576.6 -576.5 -576.4 -576.3 -576.2 -576.1 -576 + Bin 424: -576 -575.9 -575.8 -575.7 -575.6 -575.5 -575.4 -575.3 -575.2 -575.1 -575 + Bin 425: -575 -574.9 -574.8 -574.7 -574.6 -574.5 -574.4 -574.3 -574.2 -574.1 -574 + Bin 426: -574 -573.9 -573.8 -573.7 -573.6 -573.5 -573.4 -573.3 -573.2 -573.1 -573 + Bin 427: -573 -572.9 -572.8 -572.7 -572.6 -572.5 -572.4 -572.3 -572.2 -572.1 -572 + Bin 428: -572 -571.9 -571.8 -571.7 -571.6 -571.5 -571.4 -571.3 -571.2 -571.1 -571 + Bin 429: -571 -570.9 -570.8 -570.7 -570.6 -570.5 -570.4 -570.3 -570.2 -570.1 -570 + Bin 430: -570 -569.9 -569.8 -569.7 -569.6 -569.5 -569.4 -569.3 -569.2 -569.1 -569 + Bin 431: -569 -568.9 -568.8 -568.7 -568.6 -568.5 -568.4 -568.3 -568.2 -568.1 -568 + Bin 432: -568 -567.9 -567.8 -567.7 -567.6 -567.5 -567.4 -567.3 -567.2 -567.1 -567 + Bin 433: -567 -566.9 -566.8 -566.7 -566.6 -566.5 -566.4 -566.3 -566.2 -566.1 -566 + Bin 434: -566 -565.9 -565.8 -565.7 -565.6 -565.5 -565.4 -565.3 -565.2 -565.1 -565 + Bin 435: -565 -564.9 -564.8 -564.7 -564.6 -564.5 -564.4 -564.3 -564.2 -564.1 -564 + Bin 436: -564 -563.9 -563.8 -563.7 -563.6 -563.5 -563.4 -563.3 -563.2 -563.1 -563 + Bin 437: -563 -562.9 -562.8 -562.7 -562.6 -562.5 -562.4 -562.3 -562.2 -562.1 -562 + Bin 438: -562 -561.9 -561.8 -561.7 -561.6 -561.5 -561.4 -561.3 -561.2 -561.1 -561 + Bin 439: -561 -560.9 -560.8 -560.7 -560.6 -560.5 -560.4 -560.3 -560.2 -560.1 -560 + Bin 440: -560 -559.9 -559.8 -559.7 -559.6 -559.5 -559.4 -559.3 -559.2 -559.1 -559 + Bin 441: -559 -558.9 -558.8 -558.7 -558.6 -558.5 -558.4 -558.3 -558.2 -558.1 -558 + Bin 442: -558 -557.9 -557.8 -557.7 -557.6 -557.5 -557.4 -557.3 -557.2 -557.1 -557 + Bin 443: -557 -556.9 -556.8 -556.7 -556.6 -556.5 -556.4 -556.3 -556.2 -556.1 -556 + Bin 444: -556 -555.9 -555.8 -555.7 -555.6 -555.5 -555.4 -555.3 -555.2 -555.1 -555 + Bin 445: -555 -554.9 -554.8 -554.7 -554.6 -554.5 -554.4 -554.3 -554.2 -554.1 -554 + Bin 446: -554 -553.9 -553.8 -553.7 -553.6 -553.5 -553.4 -553.3 -553.2 -553.1 -553 + Bin 447: -553 -552.9 -552.8 -552.7 -552.6 -552.5 -552.4 -552.3 -552.2 -552.1 -552 + Bin 448: -552 -551.9 -551.8 -551.7 -551.6 -551.5 -551.4 -551.3 -551.2 -551.1 -551 + Bin 449: -551 -550.9 -550.8 -550.7 -550.6 -550.5 -550.4 -550.3 -550.2 -550.1 -550 + Bin 450: -550 -549.9 -549.8 -549.7 -549.6 -549.5 -549.4 -549.3 -549.2 -549.1 -549 + Bin 451: -549 -548.9 -548.8 -548.7 -548.6 -548.5 -548.4 -548.3 -548.2 -548.1 -548 + Bin 452: -548 -547.9 -547.8 -547.7 -547.6 -547.5 -547.4 -547.3 -547.2 -547.1 -547 + Bin 453: -547 -546.9 -546.8 -546.7 -546.6 -546.5 -546.4 -546.3 -546.2 -546.1 -546 + Bin 454: -546 -545.9 -545.8 -545.7 -545.6 -545.5 -545.4 -545.3 -545.2 -545.1 -545 + Bin 455: -545 -544.9 -544.8 -544.7 -544.6 -544.5 -544.4 -544.3 -544.2 -544.1 -544 + Bin 456: -544 -543.9 -543.8 -543.7 -543.6 -543.5 -543.4 -543.3 -543.2 -543.1 -543 + Bin 457: -543 -542.9 -542.8 -542.7 -542.6 -542.5 -542.4 -542.3 -542.2 -542.1 -542 + Bin 458: -542 -541.9 -541.8 -541.7 -541.6 -541.5 -541.4 -541.3 -541.2 -541.1 -541 + Bin 459: -541 -540.9 -540.8 -540.7 -540.6 -540.5 -540.4 -540.3 -540.2 -540.1 -540 + Bin 460: -540 -539.9 -539.8 -539.7 -539.6 -539.5 -539.4 -539.3 -539.2 -539.1 -539 + Bin 461: -539 -538.9 -538.8 -538.7 -538.6 -538.5 -538.4 -538.3 -538.2 -538.1 -538 + Bin 462: -538 -537.9 -537.8 -537.7 -537.6 -537.5 -537.4 -537.3 -537.2 -537.1 -537 + Bin 463: -537 -536.9 -536.8 -536.7 -536.6 -536.5 -536.4 -536.3 -536.2 -536.1 -536 + Bin 464: -536 -535.9 -535.8 -535.7 -535.6 -535.5 -535.4 -535.3 -535.2 -535.1 -535 + Bin 465: -535 -534.9 -534.8 -534.7 -534.6 -534.5 -534.4 -534.3 -534.2 -534.1 -534 + Bin 466: -534 -533.9 -533.8 -533.7 -533.6 -533.5 -533.4 -533.3 -533.2 -533.1 -533 + Bin 467: -533 -532.9 -532.8 -532.7 -532.6 -532.5 -532.4 -532.3 -532.2 -532.1 -532 + Bin 468: -532 -531.9 -531.8 -531.7 -531.6 -531.5 -531.4 -531.3 -531.2 -531.1 -531 + Bin 469: -531 -530.9 -530.8 -530.7 -530.6 -530.5 -530.4 -530.3 -530.2 -530.1 -530 + Bin 470: -530 -529.9 -529.8 -529.7 -529.6 -529.5 -529.4 -529.3 -529.2 -529.1 -529 + Bin 471: -529 -528.9 -528.8 -528.7 -528.6 -528.5 -528.4 -528.3 -528.2 -528.1 -528 + Bin 472: -528 -527.9 -527.8 -527.7 -527.6 -527.5 -527.4 -527.3 -527.2 -527.1 -527 + Bin 473: -527 -526.9 -526.8 -526.7 -526.6 -526.5 -526.4 -526.3 -526.2 -526.1 -526 + Bin 474: -526 -525.9 -525.8 -525.7 -525.6 -525.5 -525.4 -525.3 -525.2 -525.1 -525 + Bin 475: -525 -524.9 -524.8 -524.7 -524.6 -524.5 -524.4 -524.3 -524.2 -524.1 -524 + Bin 476: -524 -523.9 -523.8 -523.7 -523.6 -523.5 -523.4 -523.3 -523.2 -523.1 -523 + Bin 477: -523 -522.9 -522.8 -522.7 -522.6 -522.5 -522.4 -522.3 -522.2 -522.1 -522 + Bin 478: -522 -521.9 -521.8 -521.7 -521.6 -521.5 -521.4 -521.3 -521.2 -521.1 -521 + Bin 479: -521 -520.9 -520.8 -520.7 -520.6 -520.5 -520.4 -520.3 -520.2 -520.1 -520 + Bin 480: -520 -519.9 -519.8 -519.7 -519.6 -519.5 -519.4 -519.3 -519.2 -519.1 -519 + Bin 481: -519 -518.9 -518.8 -518.7 -518.6 -518.5 -518.4 -518.3 -518.2 -518.1 -518 + Bin 482: -518 -517.9 -517.8 -517.7 -517.6 -517.5 -517.4 -517.3 -517.2 -517.1 -517 + Bin 483: -517 -516.9 -516.8 -516.7 -516.6 -516.5 -516.4 -516.3 -516.2 -516.1 -516 + Bin 484: -516 -515.9 -515.8 -515.7 -515.6 -515.5 -515.4 -515.3 -515.2 -515.1 -515 + Bin 485: -515 -514.9 -514.8 -514.7 -514.6 -514.5 -514.4 -514.3 -514.2 -514.1 -514 + Bin 486: -514 -513.9 -513.8 -513.7 -513.6 -513.5 -513.4 -513.3 -513.2 -513.1 -513 + Bin 487: -513 -512.9 -512.8 -512.7 -512.6 -512.5 -512.4 -512.3 -512.2 -512.1 -512 + Bin 488: -512 -511.9 -511.8 -511.7 -511.6 -511.5 -511.4 -511.3 -511.2 -511.1 -511 + Bin 489: -511 -510.9 -510.8 -510.7 -510.6 -510.5 -510.4 -510.3 -510.2 -510.1 -510 + Bin 490: -510 -509.9 -509.8 -509.7 -509.6 -509.5 -509.4 -509.3 -509.2 -509.1 -509 + Bin 491: -509 -508.9 -508.8 -508.7 -508.6 -508.5 -508.4 -508.3 -508.2 -508.1 -508 + Bin 492: -508 -507.9 -507.8 -507.7 -507.6 -507.5 -507.4 -507.3 -507.2 -507.1 -507 + Bin 493: -507 -506.9 -506.8 -506.7 -506.6 -506.5 -506.4 -506.3 -506.2 -506.1 -506 + Bin 494: -506 -505.9 -505.8 -505.7 -505.6 -505.5 -505.4 -505.3 -505.2 -505.1 -505 + Bin 495: -505 -504.9 -504.8 -504.7 -504.6 -504.5 -504.4 -504.3 -504.2 -504.1 -504 + Bin 496: -504 -503.9 -503.8 -503.7 -503.6 -503.5 -503.4 -503.3 -503.2 -503.1 -503 + Bin 497: -503 -502.9 -502.8 -502.7 -502.6 -502.5 -502.4 -502.3 -502.2 -502.1 -502 + Bin 498: -502 -501.9 -501.8 -501.7 -501.6 -501.5 -501.4 -501.3 -501.2 -501.1 -501 + Bin 499: -501 -500.9 -500.8 -500.7 -500.6 -500.5 -500.4 -500.3 -500.2 -500.1 -500 + Bin 500: -500 -499.9 -499.8 -499.7 -499.6 -499.5 -499.4 -499.3 -499.2 -499.1 -499 + Bin 501: -499 -498.9 -498.8 -498.7 -498.6 -498.5 -498.4 -498.3 -498.2 -498.1 -498 + Bin 502: -498 -497.9 -497.8 -497.7 -497.6 -497.5 -497.4 -497.3 -497.2 -497.1 -497 + Bin 503: -497 -496.9 -496.8 -496.7 -496.6 -496.5 -496.4 -496.3 -496.2 -496.1 -496 + Bin 504: -496 -495.9 -495.8 -495.7 -495.6 -495.5 -495.4 -495.3 -495.2 -495.1 -495 + Bin 505: -495 -494.9 -494.8 -494.7 -494.6 -494.5 -494.4 -494.3 -494.2 -494.1 -494 + Bin 506: -494 -493.9 -493.8 -493.7 -493.6 -493.5 -493.4 -493.3 -493.2 -493.1 -493 + Bin 507: -493 -492.9 -492.8 -492.7 -492.6 -492.5 -492.4 -492.3 -492.2 -492.1 -492 + Bin 508: -492 -491.9 -491.8 -491.7 -491.6 -491.5 -491.4 -491.3 -491.2 -491.1 -491 + Bin 509: -491 -490.9 -490.8 -490.7 -490.6 -490.5 -490.4 -490.3 -490.2 -490.1 -490 + Bin 510: -490 -489.9 -489.8 -489.7 -489.6 -489.5 -489.4 -489.3 -489.2 -489.1 -489 + Bin 511: -489 -488.9 -488.8 -488.7 -488.6 -488.5 -488.4 -488.3 -488.2 -488.1 -488 + Bin 512: -488 -487.9 -487.8 -487.7 -487.6 -487.5 -487.4 -487.3 -487.2 -487.1 -487 + Bin 513: -487 -486.9 -486.8 -486.7 -486.6 -486.5 -486.4 -486.3 -486.2 -486.1 -486 + Bin 514: -486 -485.9 -485.8 -485.7 -485.6 -485.5 -485.4 -485.3 -485.2 -485.1 -485 + Bin 515: -485 -484.9 -484.8 -484.7 -484.6 -484.5 -484.4 -484.3 -484.2 -484.1 -484 + Bin 516: -484 -483.9 -483.8 -483.7 -483.6 -483.5 -483.4 -483.3 -483.2 -483.1 -483 + Bin 517: -483 -482.9 -482.8 -482.7 -482.6 -482.5 -482.4 -482.3 -482.2 -482.1 -482 + Bin 518: -482 -481.9 -481.8 -481.7 -481.6 -481.5 -481.4 -481.3 -481.2 -481.1 -481 + Bin 519: -481 -480.9 -480.8 -480.7 -480.6 -480.5 -480.4 -480.3 -480.2 -480.1 -480 + Bin 520: -480 -479.9 -479.8 -479.7 -479.6 -479.5 -479.4 -479.3 -479.2 -479.1 -479 + Bin 521: -479 -478.9 -478.8 -478.7 -478.6 -478.5 -478.4 -478.3 -478.2 -478.1 -478 + Bin 522: -478 -477.9 -477.8 -477.7 -477.6 -477.5 -477.4 -477.3 -477.2 -477.1 -477 + Bin 523: -477 -476.9 -476.8 -476.7 -476.6 -476.5 -476.4 -476.3 -476.2 -476.1 -476 + Bin 524: -476 -475.9 -475.8 -475.7 -475.6 -475.5 -475.4 -475.3 -475.2 -475.1 -475 + Bin 525: -475 -474.9 -474.8 -474.7 -474.6 -474.5 -474.4 -474.3 -474.2 -474.1 -474 + Bin 526: -474 -473.9 -473.8 -473.7 -473.6 -473.5 -473.4 -473.3 -473.2 -473.1 -473 + Bin 527: -473 -472.9 -472.8 -472.7 -472.6 -472.5 -472.4 -472.3 -472.2 -472.1 -472 + Bin 528: -472 -471.9 -471.8 -471.7 -471.6 -471.5 -471.4 -471.3 -471.2 -471.1 -471 + Bin 529: -471 -470.9 -470.8 -470.7 -470.6 -470.5 -470.4 -470.3 -470.2 -470.1 -470 + Bin 530: -470 -469.9 -469.8 -469.7 -469.6 -469.5 -469.4 -469.3 -469.2 -469.1 -469 + Bin 531: -469 -468.9 -468.8 -468.7 -468.6 -468.5 -468.4 -468.3 -468.2 -468.1 -468 + Bin 532: -468 -467.9 -467.8 -467.7 -467.6 -467.5 -467.4 -467.3 -467.2 -467.1 -467 + Bin 533: -467 -466.9 -466.8 -466.7 -466.6 -466.5 -466.4 -466.3 -466.2 -466.1 -466 + Bin 534: -466 -465.9 -465.8 -465.7 -465.6 -465.5 -465.4 -465.3 -465.2 -465.1 -465 + Bin 535: -465 -464.9 -464.8 -464.7 -464.6 -464.5 -464.4 -464.3 -464.2 -464.1 -464 + Bin 536: -464 -463.9 -463.8 -463.7 -463.6 -463.5 -463.4 -463.3 -463.2 -463.1 -463 + Bin 537: -463 -462.9 -462.8 -462.7 -462.6 -462.5 -462.4 -462.3 -462.2 -462.1 -462 + Bin 538: -462 -461.9 -461.8 -461.7 -461.6 -461.5 -461.4 -461.3 -461.2 -461.1 -461 + Bin 539: -461 -460.9 -460.8 -460.7 -460.6 -460.5 -460.4 -460.3 -460.2 -460.1 -460 + Bin 540: -460 -459.9 -459.8 -459.7 -459.6 -459.5 -459.4 -459.3 -459.2 -459.1 -459 + Bin 541: -459 -458.9 -458.8 -458.7 -458.6 -458.5 -458.4 -458.3 -458.2 -458.1 -458 + Bin 542: -458 -457.9 -457.8 -457.7 -457.6 -457.5 -457.4 -457.3 -457.2 -457.1 -457 + Bin 543: -457 -456.9 -456.8 -456.7 -456.6 -456.5 -456.4 -456.3 -456.2 -456.1 -456 + Bin 544: -456 -455.9 -455.8 -455.7 -455.6 -455.5 -455.4 -455.3 -455.2 -455.1 -455 + Bin 545: -455 -454.9 -454.8 -454.7 -454.6 -454.5 -454.4 -454.3 -454.2 -454.1 -454 + Bin 546: -454 -453.9 -453.8 -453.7 -453.6 -453.5 -453.4 -453.3 -453.2 -453.1 -453 + Bin 547: -453 -452.9 -452.8 -452.7 -452.6 -452.5 -452.4 -452.3 -452.2 -452.1 -452 + Bin 548: -452 -451.9 -451.8 -451.7 -451.6 -451.5 -451.4 -451.3 -451.2 -451.1 -451 + Bin 549: -451 -450.9 -450.8 -450.7 -450.6 -450.5 -450.4 -450.3 -450.2 -450.1 -450 + Bin 550: -450 -449.9 -449.8 -449.7 -449.6 -449.5 -449.4 -449.3 -449.2 -449.1 -449 + Bin 551: -449 -448.9 -448.8 -448.7 -448.6 -448.5 -448.4 -448.3 -448.2 -448.1 -448 + Bin 552: -448 -447.9 -447.8 -447.7 -447.6 -447.5 -447.4 -447.3 -447.2 -447.1 -447 + Bin 553: -447 -446.9 -446.8 -446.7 -446.6 -446.5 -446.4 -446.3 -446.2 -446.1 -446 + Bin 554: -446 -445.9 -445.8 -445.7 -445.6 -445.5 -445.4 -445.3 -445.2 -445.1 -445 + Bin 555: -445 -444.9 -444.8 -444.7 -444.6 -444.5 -444.4 -444.3 -444.2 -444.1 -444 + Bin 556: -444 -443.9 -443.8 -443.7 -443.6 -443.5 -443.4 -443.3 -443.2 -443.1 -443 + Bin 557: -443 -442.9 -442.8 -442.7 -442.6 -442.5 -442.4 -442.3 -442.2 -442.1 -442 + Bin 558: -442 -441.9 -441.8 -441.7 -441.6 -441.5 -441.4 -441.3 -441.2 -441.1 -441 + Bin 559: -441 -440.9 -440.8 -440.7 -440.6 -440.5 -440.4 -440.3 -440.2 -440.1 -440 + Bin 560: -440 -439.9 -439.8 -439.7 -439.6 -439.5 -439.4 -439.3 -439.2 -439.1 -439 + Bin 561: -439 -438.9 -438.8 -438.7 -438.6 -438.5 -438.4 -438.3 -438.2 -438.1 -438 + Bin 562: -438 -437.9 -437.8 -437.7 -437.6 -437.5 -437.4 -437.3 -437.2 -437.1 -437 + Bin 563: -437 -436.9 -436.8 -436.7 -436.6 -436.5 -436.4 -436.3 -436.2 -436.1 -436 + Bin 564: -436 -435.9 -435.8 -435.7 -435.6 -435.5 -435.4 -435.3 -435.2 -435.1 -435 + Bin 565: -435 -434.9 -434.8 -434.7 -434.6 -434.5 -434.4 -434.3 -434.2 -434.1 -434 + Bin 566: -434 -433.9 -433.8 -433.7 -433.6 -433.5 -433.4 -433.3 -433.2 -433.1 -433 + Bin 567: -433 -432.9 -432.8 -432.7 -432.6 -432.5 -432.4 -432.3 -432.2 -432.1 -432 + Bin 568: -432 -431.9 -431.8 -431.7 -431.6 -431.5 -431.4 -431.3 -431.2 -431.1 -431 + Bin 569: -431 -430.9 -430.8 -430.7 -430.6 -430.5 -430.4 -430.3 -430.2 -430.1 -430 + Bin 570: -430 -429.9 -429.8 -429.7 -429.6 -429.5 -429.4 -429.3 -429.2 -429.1 -429 + Bin 571: -429 -428.9 -428.8 -428.7 -428.6 -428.5 -428.4 -428.3 -428.2 -428.1 -428 + Bin 572: -428 -427.9 -427.8 -427.7 -427.6 -427.5 -427.4 -427.3 -427.2 -427.1 -427 + Bin 573: -427 -426.9 -426.8 -426.7 -426.6 -426.5 -426.4 -426.3 -426.2 -426.1 -426 + Bin 574: -426 -425.9 -425.8 -425.7 -425.6 -425.5 -425.4 -425.3 -425.2 -425.1 -425 + Bin 575: -425 -424.9 -424.8 -424.7 -424.6 -424.5 -424.4 -424.3 -424.2 -424.1 -424 + Bin 576: -424 -423.9 -423.8 -423.7 -423.6 -423.5 -423.4 -423.3 -423.2 -423.1 -423 + Bin 577: -423 -422.9 -422.8 -422.7 -422.6 -422.5 -422.4 -422.3 -422.2 -422.1 -422 + Bin 578: -422 -421.9 -421.8 -421.7 -421.6 -421.5 -421.4 -421.3 -421.2 -421.1 -421 + Bin 579: -421 -420.9 -420.8 -420.7 -420.6 -420.5 -420.4 -420.3 -420.2 -420.1 -420 + Bin 580: -420 -419.9 -419.8 -419.7 -419.6 -419.5 -419.4 -419.3 -419.2 -419.1 -419 + Bin 581: -419 -418.9 -418.8 -418.7 -418.6 -418.5 -418.4 -418.3 -418.2 -418.1 -418 + Bin 582: -418 -417.9 -417.8 -417.7 -417.6 -417.5 -417.4 -417.3 -417.2 -417.1 -417 + Bin 583: -417 -416.9 -416.8 -416.7 -416.6 -416.5 -416.4 -416.3 -416.2 -416.1 -416 + Bin 584: -416 -415.9 -415.8 -415.7 -415.6 -415.5 -415.4 -415.3 -415.2 -415.1 -415 + Bin 585: -415 -414.9 -414.8 -414.7 -414.6 -414.5 -414.4 -414.3 -414.2 -414.1 -414 + Bin 586: -414 -413.9 -413.8 -413.7 -413.6 -413.5 -413.4 -413.3 -413.2 -413.1 -413 + Bin 587: -413 -412.9 -412.8 -412.7 -412.6 -412.5 -412.4 -412.3 -412.2 -412.1 -412 + Bin 588: -412 -411.9 -411.8 -411.7 -411.6 -411.5 -411.4 -411.3 -411.2 -411.1 -411 + Bin 589: -411 -410.9 -410.8 -410.7 -410.6 -410.5 -410.4 -410.3 -410.2 -410.1 -410 + Bin 590: -410 -409.9 -409.8 -409.7 -409.6 -409.5 -409.4 -409.3 -409.2 -409.1 -409 + Bin 591: -409 -408.9 -408.8 -408.7 -408.6 -408.5 -408.4 -408.3 -408.2 -408.1 -408 + Bin 592: -408 -407.9 -407.8 -407.7 -407.6 -407.5 -407.4 -407.3 -407.2 -407.1 -407 + Bin 593: -407 -406.9 -406.8 -406.7 -406.6 -406.5 -406.4 -406.3 -406.2 -406.1 -406 + Bin 594: -406 -405.9 -405.8 -405.7 -405.6 -405.5 -405.4 -405.3 -405.2 -405.1 -405 + Bin 595: -405 -404.9 -404.8 -404.7 -404.6 -404.5 -404.4 -404.3 -404.2 -404.1 -404 + Bin 596: -404 -403.9 -403.8 -403.7 -403.6 -403.5 -403.4 -403.3 -403.2 -403.1 -403 + Bin 597: -403 -402.9 -402.8 -402.7 -402.6 -402.5 -402.4 -402.3 -402.2 -402.1 -402 + Bin 598: -402 -401.9 -401.8 -401.7 -401.6 -401.5 -401.4 -401.3 -401.2 -401.1 -401 + Bin 599: -401 -400.9 -400.8 -400.7 -400.6 -400.5 -400.4 -400.3 -400.2 -400.1 -400 + Bin 600: -400 -399.9 -399.8 -399.7 -399.6 -399.5 -399.4 -399.3 -399.2 -399.1 -399 + Bin 601: -399 -398.9 -398.8 -398.7 -398.6 -398.5 -398.4 -398.3 -398.2 -398.1 -398 + Bin 602: -398 -397.9 -397.8 -397.7 -397.6 -397.5 -397.4 -397.3 -397.2 -397.1 -397 + Bin 603: -397 -396.9 -396.8 -396.7 -396.6 -396.5 -396.4 -396.3 -396.2 -396.1 -396 + Bin 604: -396 -395.9 -395.8 -395.7 -395.6 -395.5 -395.4 -395.3 -395.2 -395.1 -395 + Bin 605: -395 -394.9 -394.8 -394.7 -394.6 -394.5 -394.4 -394.3 -394.2 -394.1 -394 + Bin 606: -394 -393.9 -393.8 -393.7 -393.6 -393.5 -393.4 -393.3 -393.2 -393.1 -393 + Bin 607: -393 -392.9 -392.8 -392.7 -392.6 -392.5 -392.4 -392.3 -392.2 -392.1 -392 + Bin 608: -392 -391.9 -391.8 -391.7 -391.6 -391.5 -391.4 -391.3 -391.2 -391.1 -391 + Bin 609: -391 -390.9 -390.8 -390.7 -390.6 -390.5 -390.4 -390.3 -390.2 -390.1 -390 + Bin 610: -390 -389.9 -389.8 -389.7 -389.6 -389.5 -389.4 -389.3 -389.2 -389.1 -389 + Bin 611: -389 -388.9 -388.8 -388.7 -388.6 -388.5 -388.4 -388.3 -388.2 -388.1 -388 + Bin 612: -388 -387.9 -387.8 -387.7 -387.6 -387.5 -387.4 -387.3 -387.2 -387.1 -387 + Bin 613: -387 -386.9 -386.8 -386.7 -386.6 -386.5 -386.4 -386.3 -386.2 -386.1 -386 + Bin 614: -386 -385.9 -385.8 -385.7 -385.6 -385.5 -385.4 -385.3 -385.2 -385.1 -385 + Bin 615: -385 -384.9 -384.8 -384.7 -384.6 -384.5 -384.4 -384.3 -384.2 -384.1 -384 + Bin 616: -384 -383.9 -383.8 -383.7 -383.6 -383.5 -383.4 -383.3 -383.2 -383.1 -383 + Bin 617: -383 -382.9 -382.8 -382.7 -382.6 -382.5 -382.4 -382.3 -382.2 -382.1 -382 + Bin 618: -382 -381.9 -381.8 -381.7 -381.6 -381.5 -381.4 -381.3 -381.2 -381.1 -381 + Bin 619: -381 -380.9 -380.8 -380.7 -380.6 -380.5 -380.4 -380.3 -380.2 -380.1 -380 + Bin 620: -380 -379.9 -379.8 -379.7 -379.6 -379.5 -379.4 -379.3 -379.2 -379.1 -379 + Bin 621: -379 -378.9 -378.8 -378.7 -378.6 -378.5 -378.4 -378.3 -378.2 -378.1 -378 + Bin 622: -378 -377.9 -377.8 -377.7 -377.6 -377.5 -377.4 -377.3 -377.2 -377.1 -377 + Bin 623: -377 -376.9 -376.8 -376.7 -376.6 -376.5 -376.4 -376.3 -376.2 -376.1 -376 + Bin 624: -376 -375.9 -375.8 -375.7 -375.6 -375.5 -375.4 -375.3 -375.2 -375.1 -375 + Bin 625: -375 -374.9 -374.8 -374.7 -374.6 -374.5 -374.4 -374.3 -374.2 -374.1 -374 + Bin 626: -374 -373.9 -373.8 -373.7 -373.6 -373.5 -373.4 -373.3 -373.2 -373.1 -373 + Bin 627: -373 -372.9 -372.8 -372.7 -372.6 -372.5 -372.4 -372.3 -372.2 -372.1 -372 + Bin 628: -372 -371.9 -371.8 -371.7 -371.6 -371.5 -371.4 -371.3 -371.2 -371.1 -371 + Bin 629: -371 -370.9 -370.8 -370.7 -370.6 -370.5 -370.4 -370.3 -370.2 -370.1 -370 + Bin 630: -370 -369.9 -369.8 -369.7 -369.6 -369.5 -369.4 -369.3 -369.2 -369.1 -369 + Bin 631: -369 -368.9 -368.8 -368.7 -368.6 -368.5 -368.4 -368.3 -368.2 -368.1 -368 + Bin 632: -368 -367.9 -367.8 -367.7 -367.6 -367.5 -367.4 -367.3 -367.2 -367.1 -367 + Bin 633: -367 -366.9 -366.8 -366.7 -366.6 -366.5 -366.4 -366.3 -366.2 -366.1 -366 + Bin 634: -366 -365.9 -365.8 -365.7 -365.6 -365.5 -365.4 -365.3 -365.2 -365.1 -365 + Bin 635: -365 -364.9 -364.8 -364.7 -364.6 -364.5 -364.4 -364.3 -364.2 -364.1 -364 + Bin 636: -364 -363.9 -363.8 -363.7 -363.6 -363.5 -363.4 -363.3 -363.2 -363.1 -363 + Bin 637: -363 -362.9 -362.8 -362.7 -362.6 -362.5 -362.4 -362.3 -362.2 -362.1 -362 + Bin 638: -362 -361.9 -361.8 -361.7 -361.6 -361.5 -361.4 -361.3 -361.2 -361.1 -361 + Bin 639: -361 -360.9 -360.8 -360.7 -360.6 -360.5 -360.4 -360.3 -360.2 -360.1 -360 + Bin 640: -360 -359.9 -359.8 -359.7 -359.6 -359.5 -359.4 -359.3 -359.2 -359.1 -359 + Bin 641: -359 -358.9 -358.8 -358.7 -358.6 -358.5 -358.4 -358.3 -358.2 -358.1 -358 + Bin 642: -358 -357.9 -357.8 -357.7 -357.6 -357.5 -357.4 -357.3 -357.2 -357.1 -357 + Bin 643: -357 -356.9 -356.8 -356.7 -356.6 -356.5 -356.4 -356.3 -356.2 -356.1 -356 + Bin 644: -356 -355.9 -355.8 -355.7 -355.6 -355.5 -355.4 -355.3 -355.2 -355.1 -355 + Bin 645: -355 -354.9 -354.8 -354.7 -354.6 -354.5 -354.4 -354.3 -354.2 -354.1 -354 + Bin 646: -354 -353.9 -353.8 -353.7 -353.6 -353.5 -353.4 -353.3 -353.2 -353.1 -353 + Bin 647: -353 -352.9 -352.8 -352.7 -352.6 -352.5 -352.4 -352.3 -352.2 -352.1 -352 + Bin 648: -352 -351.9 -351.8 -351.7 -351.6 -351.5 -351.4 -351.3 -351.2 -351.1 -351 + Bin 649: -351 -350.9 -350.8 -350.7 -350.6 -350.5 -350.4 -350.3 -350.2 -350.1 -350 + Bin 650: -350 -349.9 -349.8 -349.7 -349.6 -349.5 -349.4 -349.3 -349.2 -349.1 -349 + Bin 651: -349 -348.9 -348.8 -348.7 -348.6 -348.5 -348.4 -348.3 -348.2 -348.1 -348 + Bin 652: -348 -347.9 -347.8 -347.7 -347.6 -347.5 -347.4 -347.3 -347.2 -347.1 -347 + Bin 653: -347 -346.9 -346.8 -346.7 -346.6 -346.5 -346.4 -346.3 -346.2 -346.1 -346 + Bin 654: -346 -345.9 -345.8 -345.7 -345.6 -345.5 -345.4 -345.3 -345.2 -345.1 -345 + Bin 655: -345 -344.9 -344.8 -344.7 -344.6 -344.5 -344.4 -344.3 -344.2 -344.1 -344 + Bin 656: -344 -343.9 -343.8 -343.7 -343.6 -343.5 -343.4 -343.3 -343.2 -343.1 -343 + Bin 657: -343 -342.9 -342.8 -342.7 -342.6 -342.5 -342.4 -342.3 -342.2 -342.1 -342 + Bin 658: -342 -341.9 -341.8 -341.7 -341.6 -341.5 -341.4 -341.3 -341.2 -341.1 -341 + Bin 659: -341 -340.9 -340.8 -340.7 -340.6 -340.5 -340.4 -340.3 -340.2 -340.1 -340 + Bin 660: -340 -339.9 -339.8 -339.7 -339.6 -339.5 -339.4 -339.3 -339.2 -339.1 -339 + Bin 661: -339 -338.9 -338.8 -338.7 -338.6 -338.5 -338.4 -338.3 -338.2 -338.1 -338 + Bin 662: -338 -337.9 -337.8 -337.7 -337.6 -337.5 -337.4 -337.3 -337.2 -337.1 -337 + Bin 663: -337 -336.9 -336.8 -336.7 -336.6 -336.5 -336.4 -336.3 -336.2 -336.1 -336 + Bin 664: -336 -335.9 -335.8 -335.7 -335.6 -335.5 -335.4 -335.3 -335.2 -335.1 -335 + Bin 665: -335 -334.9 -334.8 -334.7 -334.6 -334.5 -334.4 -334.3 -334.2 -334.1 -334 + Bin 666: -334 -333.9 -333.8 -333.7 -333.6 -333.5 -333.4 -333.3 -333.2 -333.1 -333 + Bin 667: -333 -332.9 -332.8 -332.7 -332.6 -332.5 -332.4 -332.3 -332.2 -332.1 -332 + Bin 668: -332 -331.9 -331.8 -331.7 -331.6 -331.5 -331.4 -331.3 -331.2 -331.1 -331 + Bin 669: -331 -330.9 -330.8 -330.7 -330.6 -330.5 -330.4 -330.3 -330.2 -330.1 -330 + Bin 670: -330 -329.9 -329.8 -329.7 -329.6 -329.5 -329.4 -329.3 -329.2 -329.1 -329 + Bin 671: -329 -328.9 -328.8 -328.7 -328.6 -328.5 -328.4 -328.3 -328.2 -328.1 -328 + Bin 672: -328 -327.9 -327.8 -327.7 -327.6 -327.5 -327.4 -327.3 -327.2 -327.1 -327 + Bin 673: -327 -326.9 -326.8 -326.7 -326.6 -326.5 -326.4 -326.3 -326.2 -326.1 -326 + Bin 674: -326 -325.9 -325.8 -325.7 -325.6 -325.5 -325.4 -325.3 -325.2 -325.1 -325 + Bin 675: -325 -324.9 -324.8 -324.7 -324.6 -324.5 -324.4 -324.3 -324.2 -324.1 -324 + Bin 676: -324 -323.9 -323.8 -323.7 -323.6 -323.5 -323.4 -323.3 -323.2 -323.1 -323 + Bin 677: -323 -322.9 -322.8 -322.7 -322.6 -322.5 -322.4 -322.3 -322.2 -322.1 -322 + Bin 678: -322 -321.9 -321.8 -321.7 -321.6 -321.5 -321.4 -321.3 -321.2 -321.1 -321 + Bin 679: -321 -320.9 -320.8 -320.7 -320.6 -320.5 -320.4 -320.3 -320.2 -320.1 -320 + Bin 680: -320 -319.9 -319.8 -319.7 -319.6 -319.5 -319.4 -319.3 -319.2 -319.1 -319 + Bin 681: -319 -318.9 -318.8 -318.7 -318.6 -318.5 -318.4 -318.3 -318.2 -318.1 -318 + Bin 682: -318 -317.9 -317.8 -317.7 -317.6 -317.5 -317.4 -317.3 -317.2 -317.1 -317 + Bin 683: -317 -316.9 -316.8 -316.7 -316.6 -316.5 -316.4 -316.3 -316.2 -316.1 -316 + Bin 684: -316 -315.9 -315.8 -315.7 -315.6 -315.5 -315.4 -315.3 -315.2 -315.1 -315 + Bin 685: -315 -314.9 -314.8 -314.7 -314.6 -314.5 -314.4 -314.3 -314.2 -314.1 -314 + Bin 686: -314 -313.9 -313.8 -313.7 -313.6 -313.5 -313.4 -313.3 -313.2 -313.1 -313 + Bin 687: -313 -312.9 -312.8 -312.7 -312.6 -312.5 -312.4 -312.3 -312.2 -312.1 -312 + Bin 688: -312 -311.9 -311.8 -311.7 -311.6 -311.5 -311.4 -311.3 -311.2 -311.1 -311 + Bin 689: -311 -310.9 -310.8 -310.7 -310.6 -310.5 -310.4 -310.3 -310.2 -310.1 -310 + Bin 690: -310 -309.9 -309.8 -309.7 -309.6 -309.5 -309.4 -309.3 -309.2 -309.1 -309 + Bin 691: -309 -308.9 -308.8 -308.7 -308.6 -308.5 -308.4 -308.3 -308.2 -308.1 -308 + Bin 692: -308 -307.9 -307.8 -307.7 -307.6 -307.5 -307.4 -307.3 -307.2 -307.1 -307 + Bin 693: -307 -306.9 -306.8 -306.7 -306.6 -306.5 -306.4 -306.3 -306.2 -306.1 -306 + Bin 694: -306 -305.9 -305.8 -305.7 -305.6 -305.5 -305.4 -305.3 -305.2 -305.1 -305 + Bin 695: -305 -304.9 -304.8 -304.7 -304.6 -304.5 -304.4 -304.3 -304.2 -304.1 -304 + Bin 696: -304 -303.9 -303.8 -303.7 -303.6 -303.5 -303.4 -303.3 -303.2 -303.1 -303 + Bin 697: -303 -302.9 -302.8 -302.7 -302.6 -302.5 -302.4 -302.3 -302.2 -302.1 -302 + Bin 698: -302 -301.9 -301.8 -301.7 -301.6 -301.5 -301.4 -301.3 -301.2 -301.1 -301 + Bin 699: -301 -300.9 -300.8 -300.7 -300.6 -300.5 -300.4 -300.3 -300.2 -300.1 -300 + Bin 700: -300 -299.9 -299.8 -299.7 -299.6 -299.5 -299.4 -299.3 -299.2 -299.1 -299 + Bin 701: -299 -298.9 -298.8 -298.7 -298.6 -298.5 -298.4 -298.3 -298.2 -298.1 -298 + Bin 702: -298 -297.9 -297.8 -297.7 -297.6 -297.5 -297.4 -297.3 -297.2 -297.1 -297 + Bin 703: -297 -296.9 -296.8 -296.7 -296.6 -296.5 -296.4 -296.3 -296.2 -296.1 -296 + Bin 704: -296 -295.9 -295.8 -295.7 -295.6 -295.5 -295.4 -295.3 -295.2 -295.1 -295 + Bin 705: -295 -294.9 -294.8 -294.7 -294.6 -294.5 -294.4 -294.3 -294.2 -294.1 -294 + Bin 706: -294 -293.9 -293.8 -293.7 -293.6 -293.5 -293.4 -293.3 -293.2 -293.1 -293 + Bin 707: -293 -292.9 -292.8 -292.7 -292.6 -292.5 -292.4 -292.3 -292.2 -292.1 -292 + Bin 708: -292 -291.9 -291.8 -291.7 -291.6 -291.5 -291.4 -291.3 -291.2 -291.1 -291 + Bin 709: -291 -290.9 -290.8 -290.7 -290.6 -290.5 -290.4 -290.3 -290.2 -290.1 -290 + Bin 710: -290 -289.9 -289.8 -289.7 -289.6 -289.5 -289.4 -289.3 -289.2 -289.1 -289 + Bin 711: -289 -288.9 -288.8 -288.7 -288.6 -288.5 -288.4 -288.3 -288.2 -288.1 -288 + Bin 712: -288 -287.9 -287.8 -287.7 -287.6 -287.5 -287.4 -287.3 -287.2 -287.1 -287 + Bin 713: -287 -286.9 -286.8 -286.7 -286.6 -286.5 -286.4 -286.3 -286.2 -286.1 -286 + Bin 714: -286 -285.9 -285.8 -285.7 -285.6 -285.5 -285.4 -285.3 -285.2 -285.1 -285 + Bin 715: -285 -284.9 -284.8 -284.7 -284.6 -284.5 -284.4 -284.3 -284.2 -284.1 -284 + Bin 716: -284 -283.9 -283.8 -283.7 -283.6 -283.5 -283.4 -283.3 -283.2 -283.1 -283 + Bin 717: -283 -282.9 -282.8 -282.7 -282.6 -282.5 -282.4 -282.3 -282.2 -282.1 -282 + Bin 718: -282 -281.9 -281.8 -281.7 -281.6 -281.5 -281.4 -281.3 -281.2 -281.1 -281 + Bin 719: -281 -280.9 -280.8 -280.7 -280.6 -280.5 -280.4 -280.3 -280.2 -280.1 -280 + Bin 720: -280 -279.9 -279.8 -279.7 -279.6 -279.5 -279.4 -279.3 -279.2 -279.1 -279 + Bin 721: -279 -278.9 -278.8 -278.7 -278.6 -278.5 -278.4 -278.3 -278.2 -278.1 -278 + Bin 722: -278 -277.9 -277.8 -277.7 -277.6 -277.5 -277.4 -277.3 -277.2 -277.1 -277 + Bin 723: -277 -276.9 -276.8 -276.7 -276.6 -276.5 -276.4 -276.3 -276.2 -276.1 -276 + Bin 724: -276 -275.9 -275.8 -275.7 -275.6 -275.5 -275.4 -275.3 -275.2 -275.1 -275 + Bin 725: -275 -274.9 -274.8 -274.7 -274.6 -274.5 -274.4 -274.3 -274.2 -274.1 -274 + Bin 726: -274 -273.9 -273.8 -273.7 -273.6 -273.5 -273.4 -273.3 -273.2 -273.1 -273 + Bin 727: -273 -272.9 -272.8 -272.7 -272.6 -272.5 -272.4 -272.3 -272.2 -272.1 -272 + Bin 728: -272 -271.9 -271.8 -271.7 -271.6 -271.5 -271.4 -271.3 -271.2 -271.1 -271 + Bin 729: -271 -270.9 -270.8 -270.7 -270.6 -270.5 -270.4 -270.3 -270.2 -270.1 -270 + Bin 730: -270 -269.9 -269.8 -269.7 -269.6 -269.5 -269.4 -269.3 -269.2 -269.1 -269 + Bin 731: -269 -268.9 -268.8 -268.7 -268.6 -268.5 -268.4 -268.3 -268.2 -268.1 -268 + Bin 732: -268 -267.9 -267.8 -267.7 -267.6 -267.5 -267.4 -267.3 -267.2 -267.1 -267 + Bin 733: -267 -266.9 -266.8 -266.7 -266.6 -266.5 -266.4 -266.3 -266.2 -266.1 -266 + Bin 734: -266 -265.9 -265.8 -265.7 -265.6 -265.5 -265.4 -265.3 -265.2 -265.1 -265 + Bin 735: -265 -264.9 -264.8 -264.7 -264.6 -264.5 -264.4 -264.3 -264.2 -264.1 -264 + Bin 736: -264 -263.9 -263.8 -263.7 -263.6 -263.5 -263.4 -263.3 -263.2 -263.1 -263 + Bin 737: -263 -262.9 -262.8 -262.7 -262.6 -262.5 -262.4 -262.3 -262.2 -262.1 -262 + Bin 738: -262 -261.9 -261.8 -261.7 -261.6 -261.5 -261.4 -261.3 -261.2 -261.1 -261 + Bin 739: -261 -260.9 -260.8 -260.7 -260.6 -260.5 -260.4 -260.3 -260.2 -260.1 -260 + Bin 740: -260 -259.9 -259.8 -259.7 -259.6 -259.5 -259.4 -259.3 -259.2 -259.1 -259 + Bin 741: -259 -258.9 -258.8 -258.7 -258.6 -258.5 -258.4 -258.3 -258.2 -258.1 -258 + Bin 742: -258 -257.9 -257.8 -257.7 -257.6 -257.5 -257.4 -257.3 -257.2 -257.1 -257 + Bin 743: -257 -256.9 -256.8 -256.7 -256.6 -256.5 -256.4 -256.3 -256.2 -256.1 -256 + Bin 744: -256 -255.9 -255.8 -255.7 -255.6 -255.5 -255.4 -255.3 -255.2 -255.1 -255 + Bin 745: -255 -254.9 -254.8 -254.7 -254.6 -254.5 -254.4 -254.3 -254.2 -254.1 -254 + Bin 746: -254 -253.9 -253.8 -253.7 -253.6 -253.5 -253.4 -253.3 -253.2 -253.1 -253 + Bin 747: -253 -252.9 -252.8 -252.7 -252.6 -252.5 -252.4 -252.3 -252.2 -252.1 -252 + Bin 748: -252 -251.9 -251.8 -251.7 -251.6 -251.5 -251.4 -251.3 -251.2 -251.1 -251 + Bin 749: -251 -250.9 -250.8 -250.7 -250.6 -250.5 -250.4 -250.3 -250.2 -250.1 -250 + Bin 750: -250 -249.9 -249.8 -249.7 -249.6 -249.5 -249.4 -249.3 -249.2 -249.1 -249 + Bin 751: -249 -248.9 -248.8 -248.7 -248.6 -248.5 -248.4 -248.3 -248.2 -248.1 -248 + Bin 752: -248 -247.9 -247.8 -247.7 -247.6 -247.5 -247.4 -247.3 -247.2 -247.1 -247 + Bin 753: -247 -246.9 -246.8 -246.7 -246.6 -246.5 -246.4 -246.3 -246.2 -246.1 -246 + Bin 754: -246 -245.9 -245.8 -245.7 -245.6 -245.5 -245.4 -245.3 -245.2 -245.1 -245 + Bin 755: -245 -244.9 -244.8 -244.7 -244.6 -244.5 -244.4 -244.3 -244.2 -244.1 -244 + Bin 756: -244 -243.9 -243.8 -243.7 -243.6 -243.5 -243.4 -243.3 -243.2 -243.1 -243 + Bin 757: -243 -242.9 -242.8 -242.7 -242.6 -242.5 -242.4 -242.3 -242.2 -242.1 -242 + Bin 758: -242 -241.9 -241.8 -241.7 -241.6 -241.5 -241.4 -241.3 -241.2 -241.1 -241 + Bin 759: -241 -240.9 -240.8 -240.7 -240.6 -240.5 -240.4 -240.3 -240.2 -240.1 -240 + Bin 760: -240 -239.9 -239.8 -239.7 -239.6 -239.5 -239.4 -239.3 -239.2 -239.1 -239 + Bin 761: -239 -238.9 -238.8 -238.7 -238.6 -238.5 -238.4 -238.3 -238.2 -238.1 -238 + Bin 762: -238 -237.9 -237.8 -237.7 -237.6 -237.5 -237.4 -237.3 -237.2 -237.1 -237 + Bin 763: -237 -236.9 -236.8 -236.7 -236.6 -236.5 -236.4 -236.3 -236.2 -236.1 -236 + Bin 764: -236 -235.9 -235.8 -235.7 -235.6 -235.5 -235.4 -235.3 -235.2 -235.1 -235 + Bin 765: -235 -234.9 -234.8 -234.7 -234.6 -234.5 -234.4 -234.3 -234.2 -234.1 -234 + Bin 766: -234 -233.9 -233.8 -233.7 -233.6 -233.5 -233.4 -233.3 -233.2 -233.1 -233 + Bin 767: -233 -232.9 -232.8 -232.7 -232.6 -232.5 -232.4 -232.3 -232.2 -232.1 -232 + Bin 768: -232 -231.9 -231.8 -231.7 -231.6 -231.5 -231.4 -231.3 -231.2 -231.1 -231 + Bin 769: -231 -230.9 -230.8 -230.7 -230.6 -230.5 -230.4 -230.3 -230.2 -230.1 -230 + Bin 770: -230 -229.9 -229.8 -229.7 -229.6 -229.5 -229.4 -229.3 -229.2 -229.1 -229 + Bin 771: -229 -228.9 -228.8 -228.7 -228.6 -228.5 -228.4 -228.3 -228.2 -228.1 -228 + Bin 772: -228 -227.9 -227.8 -227.7 -227.6 -227.5 -227.4 -227.3 -227.2 -227.1 -227 + Bin 773: -227 -226.9 -226.8 -226.7 -226.6 -226.5 -226.4 -226.3 -226.2 -226.1 -226 + Bin 774: -226 -225.9 -225.8 -225.7 -225.6 -225.5 -225.4 -225.3 -225.2 -225.1 -225 + Bin 775: -225 -224.9 -224.8 -224.7 -224.6 -224.5 -224.4 -224.3 -224.2 -224.1 -224 + Bin 776: -224 -223.9 -223.8 -223.7 -223.6 -223.5 -223.4 -223.3 -223.2 -223.1 -223 + Bin 777: -223 -222.9 -222.8 -222.7 -222.6 -222.5 -222.4 -222.3 -222.2 -222.1 -222 + Bin 778: -222 -221.9 -221.8 -221.7 -221.6 -221.5 -221.4 -221.3 -221.2 -221.1 -221 + Bin 779: -221 -220.9 -220.8 -220.7 -220.6 -220.5 -220.4 -220.3 -220.2 -220.1 -220 + Bin 780: -220 -219.9 -219.8 -219.7 -219.6 -219.5 -219.4 -219.3 -219.2 -219.1 -219 + Bin 781: -219 -218.9 -218.8 -218.7 -218.6 -218.5 -218.4 -218.3 -218.2 -218.1 -218 + Bin 782: -218 -217.9 -217.8 -217.7 -217.6 -217.5 -217.4 -217.3 -217.2 -217.1 -217 + Bin 783: -217 -216.9 -216.8 -216.7 -216.6 -216.5 -216.4 -216.3 -216.2 -216.1 -216 + Bin 784: -216 -215.9 -215.8 -215.7 -215.6 -215.5 -215.4 -215.3 -215.2 -215.1 -215 + Bin 785: -215 -214.9 -214.8 -214.7 -214.6 -214.5 -214.4 -214.3 -214.2 -214.1 -214 + Bin 786: -214 -213.9 -213.8 -213.7 -213.6 -213.5 -213.4 -213.3 -213.2 -213.1 -213 + Bin 787: -213 -212.9 -212.8 -212.7 -212.6 -212.5 -212.4 -212.3 -212.2 -212.1 -212 + Bin 788: -212 -211.9 -211.8 -211.7 -211.6 -211.5 -211.4 -211.3 -211.2 -211.1 -211 + Bin 789: -211 -210.9 -210.8 -210.7 -210.6 -210.5 -210.4 -210.3 -210.2 -210.1 -210 + Bin 790: -210 -209.9 -209.8 -209.7 -209.6 -209.5 -209.4 -209.3 -209.2 -209.1 -209 + Bin 791: -209 -208.9 -208.8 -208.7 -208.6 -208.5 -208.4 -208.3 -208.2 -208.1 -208 + Bin 792: -208 -207.9 -207.8 -207.7 -207.6 -207.5 -207.4 -207.3 -207.2 -207.1 -207 + Bin 793: -207 -206.9 -206.8 -206.7 -206.6 -206.5 -206.4 -206.3 -206.2 -206.1 -206 + Bin 794: -206 -205.9 -205.8 -205.7 -205.6 -205.5 -205.4 -205.3 -205.2 -205.1 -205 + Bin 795: -205 -204.9 -204.8 -204.7 -204.6 -204.5 -204.4 -204.3 -204.2 -204.1 -204 + Bin 796: -204 -203.9 -203.8 -203.7 -203.6 -203.5 -203.4 -203.3 -203.2 -203.1 -203 + Bin 797: -203 -202.9 -202.8 -202.7 -202.6 -202.5 -202.4 -202.3 -202.2 -202.1 -202 + Bin 798: -202 -201.9 -201.8 -201.7 -201.6 -201.5 -201.4 -201.3 -201.2 -201.1 -201 + Bin 799: -201 -200.9 -200.8 -200.7 -200.6 -200.5 -200.4 -200.3 -200.2 -200.1 -200 + Bin 800: -200 -199.9 -199.8 -199.7 -199.6 -199.5 -199.4 -199.3 -199.2 -199.1 -199 + Bin 801: -199 -198.9 -198.8 -198.7 -198.6 -198.5 -198.4 -198.3 -198.2 -198.1 -198 + Bin 802: -198 -197.9 -197.8 -197.7 -197.6 -197.5 -197.4 -197.3 -197.2 -197.1 -197 + Bin 803: -197 -196.9 -196.8 -196.7 -196.6 -196.5 -196.4 -196.3 -196.2 -196.1 -196 + Bin 804: -196 -195.9 -195.8 -195.7 -195.6 -195.5 -195.4 -195.3 -195.2 -195.1 -195 + Bin 805: -195 -194.9 -194.8 -194.7 -194.6 -194.5 -194.4 -194.3 -194.2 -194.1 -194 + Bin 806: -194 -193.9 -193.8 -193.7 -193.6 -193.5 -193.4 -193.3 -193.2 -193.1 -193 + Bin 807: -193 -192.9 -192.8 -192.7 -192.6 -192.5 -192.4 -192.3 -192.2 -192.1 -192 + Bin 808: -192 -191.9 -191.8 -191.7 -191.6 -191.5 -191.4 -191.3 -191.2 -191.1 -191 + Bin 809: -191 -190.9 -190.8 -190.7 -190.6 -190.5 -190.4 -190.3 -190.2 -190.1 -190 + Bin 810: -190 -189.9 -189.8 -189.7 -189.6 -189.5 -189.4 -189.3 -189.2 -189.1 -189 + Bin 811: -189 -188.9 -188.8 -188.7 -188.6 -188.5 -188.4 -188.3 -188.2 -188.1 -188 + Bin 812: -188 -187.9 -187.8 -187.7 -187.6 -187.5 -187.4 -187.3 -187.2 -187.1 -187 + Bin 813: -187 -186.9 -186.8 -186.7 -186.6 -186.5 -186.4 -186.3 -186.2 -186.1 -186 + Bin 814: -186 -185.9 -185.8 -185.7 -185.6 -185.5 -185.4 -185.3 -185.2 -185.1 -185 + Bin 815: -185 -184.9 -184.8 -184.7 -184.6 -184.5 -184.4 -184.3 -184.2 -184.1 -184 + Bin 816: -184 -183.9 -183.8 -183.7 -183.6 -183.5 -183.4 -183.3 -183.2 -183.1 -183 + Bin 817: -183 -182.9 -182.8 -182.7 -182.6 -182.5 -182.4 -182.3 -182.2 -182.1 -182 + Bin 818: -182 -181.9 -181.8 -181.7 -181.6 -181.5 -181.4 -181.3 -181.2 -181.1 -181 + Bin 819: -181 -180.9 -180.8 -180.7 -180.6 -180.5 -180.4 -180.3 -180.2 -180.1 -180 + Bin 820: -180 -179.9 -179.8 -179.7 -179.6 -179.5 -179.4 -179.3 -179.2 -179.1 -179 + Bin 821: -179 -178.9 -178.8 -178.7 -178.6 -178.5 -178.4 -178.3 -178.2 -178.1 -178 + Bin 822: -178 -177.9 -177.8 -177.7 -177.6 -177.5 -177.4 -177.3 -177.2 -177.1 -177 + Bin 823: -177 -176.9 -176.8 -176.7 -176.6 -176.5 -176.4 -176.3 -176.2 -176.1 -176 + Bin 824: -176 -175.9 -175.8 -175.7 -175.6 -175.5 -175.4 -175.3 -175.2 -175.1 -175 + Bin 825: -175 -174.9 -174.8 -174.7 -174.6 -174.5 -174.4 -174.3 -174.2 -174.1 -174 + Bin 826: -174 -173.9 -173.8 -173.7 -173.6 -173.5 -173.4 -173.3 -173.2 -173.1 -173 + Bin 827: -173 -172.9 -172.8 -172.7 -172.6 -172.5 -172.4 -172.3 -172.2 -172.1 -172 + Bin 828: -172 -171.9 -171.8 -171.7 -171.6 -171.5 -171.4 -171.3 -171.2 -171.1 -171 + Bin 829: -171 -170.9 -170.8 -170.7 -170.6 -170.5 -170.4 -170.3 -170.2 -170.1 -170 + Bin 830: -170 -169.9 -169.8 -169.7 -169.6 -169.5 -169.4 -169.3 -169.2 -169.1 -169 + Bin 831: -169 -168.9 -168.8 -168.7 -168.6 -168.5 -168.4 -168.3 -168.2 -168.1 -168 + Bin 832: -168 -167.9 -167.8 -167.7 -167.6 -167.5 -167.4 -167.3 -167.2 -167.1 -167 + Bin 833: -167 -166.9 -166.8 -166.7 -166.6 -166.5 -166.4 -166.3 -166.2 -166.1 -166 + Bin 834: -166 -165.9 -165.8 -165.7 -165.6 -165.5 -165.4 -165.3 -165.2 -165.1 -165 + Bin 835: -165 -164.9 -164.8 -164.7 -164.6 -164.5 -164.4 -164.3 -164.2 -164.1 -164 + Bin 836: -164 -163.9 -163.8 -163.7 -163.6 -163.5 -163.4 -163.3 -163.2 -163.1 -163 + Bin 837: -163 -162.9 -162.8 -162.7 -162.6 -162.5 -162.4 -162.3 -162.2 -162.1 -162 + Bin 838: -162 -161.9 -161.8 -161.7 -161.6 -161.5 -161.4 -161.3 -161.2 -161.1 -161 + Bin 839: -161 -160.9 -160.8 -160.7 -160.6 -160.5 -160.4 -160.3 -160.2 -160.1 -160 + Bin 840: -160 -159.9 -159.8 -159.7 -159.6 -159.5 -159.4 -159.3 -159.2 -159.1 -159 + Bin 841: -159 -158.9 -158.8 -158.7 -158.6 -158.5 -158.4 -158.3 -158.2 -158.1 -158 + Bin 842: -158 -157.9 -157.8 -157.7 -157.6 -157.5 -157.4 -157.3 -157.2 -157.1 -157 + Bin 843: -157 -156.9 -156.8 -156.7 -156.6 -156.5 -156.4 -156.3 -156.2 -156.1 -156 + Bin 844: -156 -155.9 -155.8 -155.7 -155.6 -155.5 -155.4 -155.3 -155.2 -155.1 -155 + Bin 845: -155 -154.9 -154.8 -154.7 -154.6 -154.5 -154.4 -154.3 -154.2 -154.1 -154 + Bin 846: -154 -153.9 -153.8 -153.7 -153.6 -153.5 -153.4 -153.3 -153.2 -153.1 -153 + Bin 847: -153 -152.9 -152.8 -152.7 -152.6 -152.5 -152.4 -152.3 -152.2 -152.1 -152 + Bin 848: -152 -151.9 -151.8 -151.7 -151.6 -151.5 -151.4 -151.3 -151.2 -151.1 -151 + Bin 849: -151 -150.9 -150.8 -150.7 -150.6 -150.5 -150.4 -150.3 -150.2 -150.1 -150 + Bin 850: -150 -149.9 -149.8 -149.7 -149.6 -149.5 -149.4 -149.3 -149.2 -149.1 -149 + Bin 851: -149 -148.9 -148.8 -148.7 -148.6 -148.5 -148.4 -148.3 -148.2 -148.1 -148 + Bin 852: -148 -147.9 -147.8 -147.7 -147.6 -147.5 -147.4 -147.3 -147.2 -147.1 -147 + Bin 853: -147 -146.9 -146.8 -146.7 -146.6 -146.5 -146.4 -146.3 -146.2 -146.1 -146 + Bin 854: -146 -145.9 -145.8 -145.7 -145.6 -145.5 -145.4 -145.3 -145.2 -145.1 -145 + Bin 855: -145 -144.9 -144.8 -144.7 -144.6 -144.5 -144.4 -144.3 -144.2 -144.1 -144 + Bin 856: -144 -143.9 -143.8 -143.7 -143.6 -143.5 -143.4 -143.3 -143.2 -143.1 -143 + Bin 857: -143 -142.9 -142.8 -142.7 -142.6 -142.5 -142.4 -142.3 -142.2 -142.1 -142 + Bin 858: -142 -141.9 -141.8 -141.7 -141.6 -141.5 -141.4 -141.3 -141.2 -141.1 -141 + Bin 859: -141 -140.9 -140.8 -140.7 -140.6 -140.5 -140.4 -140.3 -140.2 -140.1 -140 + Bin 860: -140 -139.9 -139.8 -139.7 -139.6 -139.5 -139.4 -139.3 -139.2 -139.1 -139 + Bin 861: -139 -138.9 -138.8 -138.7 -138.6 -138.5 -138.4 -138.3 -138.2 -138.1 -138 + Bin 862: -138 -137.9 -137.8 -137.7 -137.6 -137.5 -137.4 -137.3 -137.2 -137.1 -137 + Bin 863: -137 -136.9 -136.8 -136.7 -136.6 -136.5 -136.4 -136.3 -136.2 -136.1 -136 + Bin 864: -136 -135.9 -135.8 -135.7 -135.6 -135.5 -135.4 -135.3 -135.2 -135.1 -135 + Bin 865: -135 -134.9 -134.8 -134.7 -134.6 -134.5 -134.4 -134.3 -134.2 -134.1 -134 + Bin 866: -134 -133.9 -133.8 -133.7 -133.6 -133.5 -133.4 -133.3 -133.2 -133.1 -133 + Bin 867: -133 -132.9 -132.8 -132.7 -132.6 -132.5 -132.4 -132.3 -132.2 -132.1 -132 + Bin 868: -132 -131.9 -131.8 -131.7 -131.6 -131.5 -131.4 -131.3 -131.2 -131.1 -131 + Bin 869: -131 -130.9 -130.8 -130.7 -130.6 -130.5 -130.4 -130.3 -130.2 -130.1 -130 + Bin 870: -130 -129.9 -129.8 -129.7 -129.6 -129.5 -129.4 -129.3 -129.2 -129.1 -129 + Bin 871: -129 -128.9 -128.8 -128.7 -128.6 -128.5 -128.4 -128.3 -128.2 -128.1 -128 + Bin 872: -128 -127.9 -127.8 -127.7 -127.6 -127.5 -127.4 -127.3 -127.2 -127.1 -127 + Bin 873: -127 -126.9 -126.8 -126.7 -126.6 -126.5 -126.4 -126.3 -126.2 -126.1 -126 + Bin 874: -126 -125.9 -125.8 -125.7 -125.6 -125.5 -125.4 -125.3 -125.2 -125.1 -125 + Bin 875: -125 -124.9 -124.8 -124.7 -124.6 -124.5 -124.4 -124.3 -124.2 -124.1 -124 + Bin 876: -124 -123.9 -123.8 -123.7 -123.6 -123.5 -123.4 -123.3 -123.2 -123.1 -123 + Bin 877: -123 -122.9 -122.8 -122.7 -122.6 -122.5 -122.4 -122.3 -122.2 -122.1 -122 + Bin 878: -122 -121.9 -121.8 -121.7 -121.6 -121.5 -121.4 -121.3 -121.2 -121.1 -121 + Bin 879: -121 -120.9 -120.8 -120.7 -120.6 -120.5 -120.4 -120.3 -120.2 -120.1 -120 + Bin 880: -120 -119.9 -119.8 -119.7 -119.6 -119.5 -119.4 -119.3 -119.2 -119.1 -119 + Bin 881: -119 -118.9 -118.8 -118.7 -118.6 -118.5 -118.4 -118.3 -118.2 -118.1 -118 + Bin 882: -118 -117.9 -117.8 -117.7 -117.6 -117.5 -117.4 -117.3 -117.2 -117.1 -117 + Bin 883: -117 -116.9 -116.8 -116.7 -116.6 -116.5 -116.4 -116.3 -116.2 -116.1 -116 + Bin 884: -116 -115.9 -115.8 -115.7 -115.6 -115.5 -115.4 -115.3 -115.2 -115.1 -115 + Bin 885: -115 -114.9 -114.8 -114.7 -114.6 -114.5 -114.4 -114.3 -114.2 -114.1 -114 + Bin 886: -114 -113.9 -113.8 -113.7 -113.6 -113.5 -113.4 -113.3 -113.2 -113.1 -113 + Bin 887: -113 -112.9 -112.8 -112.7 -112.6 -112.5 -112.4 -112.3 -112.2 -112.1 -112 + Bin 888: -112 -111.9 -111.8 -111.7 -111.6 -111.5 -111.4 -111.3 -111.2 -111.1 -111 + Bin 889: -111 -110.9 -110.8 -110.7 -110.6 -110.5 -110.4 -110.3 -110.2 -110.1 -110 + Bin 890: -110 -109.9 -109.8 -109.7 -109.6 -109.5 -109.4 -109.3 -109.2 -109.1 -109 + Bin 891: -109 -108.9 -108.8 -108.7 -108.6 -108.5 -108.4 -108.3 -108.2 -108.1 -108 + Bin 892: -108 -107.9 -107.8 -107.7 -107.6 -107.5 -107.4 -107.3 -107.2 -107.1 -107 + Bin 893: -107 -106.9 -106.8 -106.7 -106.6 -106.5 -106.4 -106.3 -106.2 -106.1 -106 + Bin 894: -106 -105.9 -105.8 -105.7 -105.6 -105.5 -105.4 -105.3 -105.2 -105.1 -105 + Bin 895: -105 -104.9 -104.8 -104.7 -104.6 -104.5 -104.4 -104.3 -104.2 -104.1 -104 + Bin 896: -104 -103.9 -103.8 -103.7 -103.6 -103.5 -103.4 -103.3 -103.2 -103.1 -103 + Bin 897: -103 -102.9 -102.8 -102.7 -102.6 -102.5 -102.4 -102.3 -102.2 -102.1 -102 + Bin 898: -102 -101.9 -101.8 -101.7 -101.6 -101.5 -101.4 -101.3 -101.2 -101.1 -101 + Bin 899: -101 -100.9 -100.8 -100.7 -100.6 -100.5 -100.4 -100.3 -100.2 -100.1 -100 + Bin 900: -100 -99.9 -99.8 -99.7 -99.6 -99.5 -99.4 -99.3 -99.2 -99.1 -99 + Bin 901: -99 -98.9 -98.8 -98.7 -98.6 -98.5 -98.4 -98.3 -98.2 -98.1 -98 + Bin 902: -98 -97.9 -97.8 -97.7 -97.6 -97.5 -97.4 -97.3 -97.2 -97.1 -97 + Bin 903: -97 -96.9 -96.8 -96.7 -96.6 -96.5 -96.4 -96.3 -96.2 -96.1 -96 + Bin 904: -96 -95.9 -95.8 -95.7 -95.6 -95.5 -95.4 -95.3 -95.2 -95.1 -95 + Bin 905: -95 -94.9 -94.8 -94.7 -94.6 -94.5 -94.4 -94.3 -94.2 -94.1 -94 + Bin 906: -94 -93.9 -93.8 -93.7 -93.6 -93.5 -93.4 -93.3 -93.2 -93.1 -93 + Bin 907: -93 -92.9 -92.8 -92.7 -92.6 -92.5 -92.4 -92.3 -92.2 -92.1 -92 + Bin 908: -92 -91.9 -91.8 -91.7 -91.6 -91.5 -91.4 -91.3 -91.2 -91.1 -91 + Bin 909: -91 -90.9 -90.8 -90.7 -90.6 -90.5 -90.4 -90.3 -90.2 -90.1 -90 + Bin 910: -90 -89.9 -89.8 -89.7 -89.6 -89.5 -89.4 -89.3 -89.2 -89.1 -89 + Bin 911: -89 -88.9 -88.8 -88.7 -88.6 -88.5 -88.4 -88.3 -88.2 -88.1 -88 + Bin 912: -88 -87.9 -87.8 -87.7 -87.6 -87.5 -87.4 -87.3 -87.2 -87.1 -87 + Bin 913: -87 -86.9 -86.8 -86.7 -86.6 -86.5 -86.4 -86.3 -86.2 -86.1 -86 + Bin 914: -86 -85.9 -85.8 -85.7 -85.6 -85.5 -85.4 -85.3 -85.2 -85.1 -85 + Bin 915: -85 -84.9 -84.8 -84.7 -84.6 -84.5 -84.4 -84.3 -84.2 -84.1 -84 + Bin 916: -84 -83.9 -83.8 -83.7 -83.6 -83.5 -83.4 -83.3 -83.2 -83.1 -83 + Bin 917: -83 -82.9 -82.8 -82.7 -82.6 -82.5 -82.4 -82.3 -82.2 -82.1 -82 + Bin 918: -82 -81.9 -81.8 -81.7 -81.6 -81.5 -81.4 -81.3 -81.2 -81.1 -81 + Bin 919: -81 -80.9 -80.8 -80.7 -80.6 -80.5 -80.4 -80.3 -80.2 -80.1 -80 + Bin 920: -80 -79.9 -79.8 -79.7 -79.6 -79.5 -79.4 -79.3 -79.2 -79.1 -79 + Bin 921: -79 -78.9 -78.8 -78.7 -78.6 -78.5 -78.4 -78.3 -78.2 -78.1 -78 + Bin 922: -78 -77.9 -77.8 -77.7 -77.6 -77.5 -77.4 -77.3 -77.2 -77.1 -77 + Bin 923: -77 -76.9 -76.8 -76.7 -76.6 -76.5 -76.4 -76.3 -76.2 -76.1 -76 + Bin 924: -76 -75.9 -75.8 -75.7 -75.6 -75.5 -75.4 -75.3 -75.2 -75.1 -75 + Bin 925: -75 -74.9 -74.8 -74.7 -74.6 -74.5 -74.4 -74.3 -74.2 -74.1 -74 + Bin 926: -74 -73.9 -73.8 -73.7 -73.6 -73.5 -73.4 -73.3 -73.2 -73.1 -73 + Bin 927: -73 -72.9 -72.8 -72.7 -72.6 -72.5 -72.4 -72.3 -72.2 -72.1 -72 + Bin 928: -72 -71.9 -71.8 -71.7 -71.6 -71.5 -71.4 -71.3 -71.2 -71.1 -71 + Bin 929: -71 -70.9 -70.8 -70.7 -70.6 -70.5 -70.4 -70.3 -70.2 -70.1 -70 + Bin 930: -70 -69.9 -69.8 -69.7 -69.6 -69.5 -69.4 -69.3 -69.2 -69.1 -69 + Bin 931: -69 -68.9 -68.8 -68.7 -68.6 -68.5 -68.4 -68.3 -68.2 -68.1 -68 + Bin 932: -68 -67.9 -67.8 -67.7 -67.6 -67.5 -67.4 -67.3 -67.2 -67.1 -67 + Bin 933: -67 -66.9 -66.8 -66.7 -66.6 -66.5 -66.4 -66.3 -66.2 -66.1 -66 + Bin 934: -66 -65.9 -65.8 -65.7 -65.6 -65.5 -65.4 -65.3 -65.2 -65.1 -65 + Bin 935: -65 -64.9 -64.8 -64.7 -64.6 -64.5 -64.4 -64.3 -64.2 -64.1 -64 + Bin 936: -64 -63.9 -63.8 -63.7 -63.6 -63.5 -63.4 -63.3 -63.2 -63.1 -63 + Bin 937: -63 -62.9 -62.8 -62.7 -62.6 -62.5 -62.4 -62.3 -62.2 -62.1 -62 + Bin 938: -62 -61.9 -61.8 -61.7 -61.6 -61.5 -61.4 -61.3 -61.2 -61.1 -61 + Bin 939: -61 -60.9 -60.8 -60.7 -60.6 -60.5 -60.4 -60.3 -60.2 -60.1 -60 + Bin 940: -60 -59.9 -59.8 -59.7 -59.6 -59.5 -59.4 -59.3 -59.2 -59.1 -59 + Bin 941: -59 -58.9 -58.8 -58.7 -58.6 -58.5 -58.4 -58.3 -58.2 -58.1 -58 + Bin 942: -58 -57.9 -57.8 -57.7 -57.6 -57.5 -57.4 -57.3 -57.2 -57.1 -57 + Bin 943: -57 -56.9 -56.8 -56.7 -56.6 -56.5 -56.4 -56.3 -56.2 -56.1 -56 + Bin 944: -56 -55.9 -55.8 -55.7 -55.6 -55.5 -55.4 -55.3 -55.2 -55.1 -55 + Bin 945: -55 -54.9 -54.8 -54.7 -54.6 -54.5 -54.4 -54.3 -54.2 -54.1 -54 + Bin 946: -54 -53.9 -53.8 -53.7 -53.6 -53.5 -53.4 -53.3 -53.2 -53.1 -53 + Bin 947: -53 -52.9 -52.8 -52.7 -52.6 -52.5 -52.4 -52.3 -52.2 -52.1 -52 + Bin 948: -52 -51.9 -51.8 -51.7 -51.6 -51.5 -51.4 -51.3 -51.2 -51.1 -51 + Bin 949: -51 -50.9 -50.8 -50.7 -50.6 -50.5 -50.4 -50.3 -50.2 -50.1 -50 + Bin 950: -50 -49.9 -49.8 -49.7 -49.6 -49.5 -49.4 -49.3 -49.2 -49.1 -49 + Bin 951: -49 -48.9 -48.8 -48.7 -48.6 -48.5 -48.4 -48.3 -48.2 -48.1 -48 + Bin 952: -48 -47.9 -47.8 -47.7 -47.6 -47.5 -47.4 -47.3 -47.2 -47.1 -47 + Bin 953: -47 -46.9 -46.8 -46.7 -46.6 -46.5 -46.4 -46.3 -46.2 -46.1 -46 + Bin 954: -46 -45.9 -45.8 -45.7 -45.6 -45.5 -45.4 -45.3 -45.2 -45.1 -45 + Bin 955: -45 -44.9 -44.8 -44.7 -44.6 -44.5 -44.4 -44.3 -44.2 -44.1 -44 + Bin 956: -44 -43.9 -43.8 -43.7 -43.6 -43.5 -43.4 -43.3 -43.2 -43.1 -43 + Bin 957: -43 -42.9 -42.8 -42.7 -42.6 -42.5 -42.4 -42.3 -42.2 -42.1 -42 + Bin 958: -42 -41.9 -41.8 -41.7 -41.6 -41.5 -41.4 -41.3 -41.2 -41.1 -41 + Bin 959: -41 -40.9 -40.8 -40.7 -40.6 -40.5 -40.4 -40.3 -40.2 -40.1 -40 + Bin 960: -40 -39.9 -39.8 -39.7 -39.6 -39.5 -39.4 -39.3 -39.2 -39.1 -39 + Bin 961: -39 -38.9 -38.8 -38.7 -38.6 -38.5 -38.4 -38.3 -38.2 -38.1 -38 + Bin 962: -38 -37.9 -37.8 -37.7 -37.6 -37.5 -37.4 -37.3 -37.2 -37.1 -37 + Bin 963: -37 -36.9 -36.8 -36.7 -36.6 -36.5 -36.4 -36.3 -36.2 -36.1 -36 + Bin 964: -36 -35.9 -35.8 -35.7 -35.6 -35.5 -35.4 -35.3 -35.2 -35.1 -35 + Bin 965: -35 -34.9 -34.8 -34.7 -34.6 -34.5 -34.4 -34.3 -34.2 -34.1 -34 + Bin 966: -34 -33.9 -33.8 -33.7 -33.6 -33.5 -33.4 -33.3 -33.2 -33.1 -33 + Bin 967: -33 -32.9 -32.8 -32.7 -32.6 -32.5 -32.4 -32.3 -32.2 -32.1 -32 + Bin 968: -32 -31.9 -31.8 -31.7 -31.6 -31.5 -31.4 -31.3 -31.2 -31.1 -31 + Bin 969: -31 -30.9 -30.8 -30.7 -30.6 -30.5 -30.4 -30.3 -30.2 -30.1 -30 + Bin 970: -30 -29.9 -29.8 -29.7 -29.6 -29.5 -29.4 -29.3 -29.2 -29.1 -29 + Bin 971: -29 -28.9 -28.8 -28.7 -28.6 -28.5 -28.4 -28.3 -28.2 -28.1 -28 + Bin 972: -28 -27.9 -27.8 -27.7 -27.6 -27.5 -27.4 -27.3 -27.2 -27.1 -27 + Bin 973: -27 -26.9 -26.8 -26.7 -26.6 -26.5 -26.4 -26.3 -26.2 -26.1 -26 + Bin 974: -26 -25.9 -25.8 -25.7 -25.6 -25.5 -25.4 -25.3 -25.2 -25.1 -25 + Bin 975: -25 -24.9 -24.8 -24.7 -24.6 -24.5 -24.4 -24.3 -24.2 -24.1 -24 + Bin 976: -24 -23.9 -23.8 -23.7 -23.6 -23.5 -23.4 -23.3 -23.2 -23.1 -23 + Bin 977: -23 -22.9 -22.8 -22.7 -22.6 -22.5 -22.4 -22.3 -22.2 -22.1 -22 + Bin 978: -22 -21.9 -21.8 -21.7 -21.6 -21.5 -21.4 -21.3 -21.2 -21.1 -21 + Bin 979: -21 -20.9 -20.8 -20.7 -20.6 -20.5 -20.4 -20.3 -20.2 -20.1 -20 + Bin 980: -20 -19.9 -19.8 -19.7 -19.6 -19.5 -19.4 -19.3 -19.2 -19.1 -19 + Bin 981: -19 -18.9 -18.8 -18.7 -18.6 -18.5 -18.4 -18.3 -18.2 -18.1 -18 + Bin 982: -18 -17.9 -17.8 -17.7 -17.6 -17.5 -17.4 -17.3 -17.2 -17.1 -17 + Bin 983: -17 -16.9 -16.8 -16.7 -16.6 -16.5 -16.4 -16.3 -16.2 -16.1 -16 + Bin 984: -16 -15.9 -15.8 -15.7 -15.6 -15.5 -15.4 -15.3 -15.2 -15.1 -15 + Bin 985: -15 -14.9 -14.8 -14.7 -14.6 -14.5 -14.4 -14.3 -14.2 -14.1 -14 + Bin 986: -14 -13.9 -13.8 -13.7 -13.6 -13.5 -13.4 -13.3 -13.2 -13.1 -13 + Bin 987: -13 -12.9 -12.8 -12.7 -12.6 -12.5 -12.4 -12.3 -12.2 -12.1 -12 + Bin 988: -12 -11.9 -11.8 -11.7 -11.6 -11.5 -11.4 -11.3 -11.2 -11.1 -11 + Bin 989: -11 -10.9 -10.8 -10.7 -10.6 -10.5 -10.4 -10.3 -10.2 -10.1 -10 + Bin 990: -10 -9.9 -9.8 -9.7 -9.6 -9.5 -9.4 -9.3 -9.2 -9.1 -9 + Bin 991: -9 -8.9 -8.8 -8.7 -8.6 -8.5 -8.4 -8.3 -8.2 -8.1 -8 + Bin 992: -8 -7.9 -7.8 -7.7 -7.6 -7.5 -7.4 -7.3 -7.2 -7.1 -7 + Bin 993: -7 -6.9 -6.8 -6.7 -6.6 -6.5 -6.4 -6.3 -6.2 -6.1 -6 + Bin 994: -6 -5.9 -5.8 -5.7 -5.6 -5.5 -5.4 -5.3 -5.2 -5.1 -5 + Bin 995: -5 -4.9 -4.8 -4.7 -4.6 -4.5 -4.4 -4.3 -4.2 -4.1 -4 + Bin 996: -4 -3.9 -3.8 -3.7 -3.6 -3.5 -3.4 -3.3 -3.2 -3.1 -3 + Bin 997: -3 -2.9 -2.8 -2.7 -2.6 -2.5 -2.4 -2.3 -2.2 -2.1 -2 + Bin 998: -2 -1.9 -1.8 -1.7 -1.6 -1.5 -1.4 -1.3 -1.2 -1.1 -1 + Bin 999: -1 -0.9 -0.8 -0.7 -0.6 -0.5 -0.4 -0.3 -0.2 -0.1 0 + Bin 1000: 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 + Bin 1001: 1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2 + Bin 1002: 2 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3 + Bin 1003: 3 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4 + Bin 1004: 4 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5 + Bin 1005: 5 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6 + Bin 1006: 6 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7 + Bin 1007: 7 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8 + Bin 1008: 8 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9 + Bin 1009: 9 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 10 + Bin 1010: 10 10.1 10.2 10.3 10.4 10.5 10.6 10.7 10.8 10.9 11 + Bin 1011: 11 11.1 11.2 11.3 11.4 11.5 11.6 11.7 11.8 11.9 12 + Bin 1012: 12 12.1 12.2 12.3 12.4 12.5 12.6 12.7 12.8 12.9 13 + Bin 1013: 13 13.1 13.2 13.3 13.4 13.5 13.6 13.7 13.8 13.9 14 + Bin 1014: 14 14.1 14.2 14.3 14.4 14.5 14.6 14.7 14.8 14.9 15 + Bin 1015: 15 15.1 15.2 15.3 15.4 15.5 15.6 15.7 15.8 15.9 16 + Bin 1016: 16 16.1 16.2 16.3 16.4 16.5 16.6 16.7 16.8 16.9 17 + Bin 1017: 17 17.1 17.2 17.3 17.4 17.5 17.6 17.7 17.8 17.9 18 + Bin 1018: 18 18.1 18.2 18.3 18.4 18.5 18.6 18.7 18.8 18.9 19 + Bin 1019: 19 19.1 19.2 19.3 19.4 19.5 19.6 19.7 19.8 19.9 20 + Bin 1020: 20 20.1 20.2 20.3 20.4 20.5 20.6 20.7 20.8 20.9 21 + Bin 1021: 21 21.1 21.2 21.3 21.4 21.5 21.6 21.7 21.8 21.9 22 + Bin 1022: 22 22.1 22.2 22.3 22.4 22.5 22.6 22.7 22.8 22.9 23 + Bin 1023: 23 23.1 23.2 23.3 23.4 23.5 23.6 23.7 23.8 23.9 24 + Bin 1024: 24 24.1 24.2 24.3 24.4 24.5 24.6 24.7 24.8 24.9 25 + Bin 1025: 25 25.1 25.2 25.3 25.4 25.5 25.6 25.7 25.8 25.9 26 + Bin 1026: 26 26.1 26.2 26.3 26.4 26.5 26.6 26.7 26.8 26.9 27 + Bin 1027: 27 27.1 27.2 27.3 27.4 27.5 27.6 27.7 27.8 27.9 28 + Bin 1028: 28 28.1 28.2 28.3 28.4 28.5 28.6 28.7 28.8 28.9 29 + Bin 1029: 29 29.1 29.2 29.3 29.4 29.5 29.6 29.7 29.8 29.9 30 + Bin 1030: 30 30.1 30.2 30.3 30.4 30.5 30.6 30.7 30.8 30.9 31 + Bin 1031: 31 31.1 31.2 31.3 31.4 31.5 31.6 31.7 31.8 31.9 32 + Bin 1032: 32 32.1 32.2 32.3 32.4 32.5 32.6 32.7 32.8 32.9 33 + Bin 1033: 33 33.1 33.2 33.3 33.4 33.5 33.6 33.7 33.8 33.9 34 + Bin 1034: 34 34.1 34.2 34.3 34.4 34.5 34.6 34.7 34.8 34.9 35 + Bin 1035: 35 35.1 35.2 35.3 35.4 35.5 35.6 35.7 35.8 35.9 36 + Bin 1036: 36 36.1 36.2 36.3 36.4 36.5 36.6 36.7 36.8 36.9 37 + Bin 1037: 37 37.1 37.2 37.3 37.4 37.5 37.6 37.7 37.8 37.9 38 + Bin 1038: 38 38.1 38.2 38.3 38.4 38.5 38.6 38.7 38.8 38.9 39 + Bin 1039: 39 39.1 39.2 39.3 39.4 39.5 39.6 39.7 39.8 39.9 40 + Bin 1040: 40 40.1 40.2 40.3 40.4 40.5 40.6 40.7 40.8 40.9 41 + Bin 1041: 41 41.1 41.2 41.3 41.4 41.5 41.6 41.7 41.8 41.9 42 + Bin 1042: 42 42.1 42.2 42.3 42.4 42.5 42.6 42.7 42.8 42.9 43 + Bin 1043: 43 43.1 43.2 43.3 43.4 43.5 43.6 43.7 43.8 43.9 44 + Bin 1044: 44 44.1 44.2 44.3 44.4 44.5 44.6 44.7 44.8 44.9 45 + Bin 1045: 45 45.1 45.2 45.3 45.4 45.5 45.6 45.7 45.8 45.9 46 + Bin 1046: 46 46.1 46.2 46.3 46.4 46.5 46.6 46.7 46.8 46.9 47 + Bin 1047: 47 47.1 47.2 47.3 47.4 47.5 47.6 47.7 47.8 47.9 48 + Bin 1048: 48 48.1 48.2 48.3 48.4 48.5 48.6 48.7 48.8 48.9 49 + Bin 1049: 49 49.1 49.2 49.3 49.4 49.5 49.6 49.7 49.8 49.9 50 + Bin 1050: 50 50.1 50.2 50.3 50.4 50.5 50.6 50.7 50.8 50.9 51 + Bin 1051: 51 51.1 51.2 51.3 51.4 51.5 51.6 51.7 51.8 51.9 52 + Bin 1052: 52 52.1 52.2 52.3 52.4 52.5 52.6 52.7 52.8 52.9 53 + Bin 1053: 53 53.1 53.2 53.3 53.4 53.5 53.6 53.7 53.8 53.9 54 + Bin 1054: 54 54.1 54.2 54.3 54.4 54.5 54.6 54.7 54.8 54.9 55 + Bin 1055: 55 55.1 55.2 55.3 55.4 55.5 55.6 55.7 55.8 55.9 56 + Bin 1056: 56 56.1 56.2 56.3 56.4 56.5 56.6 56.7 56.8 56.9 57 + Bin 1057: 57 57.1 57.2 57.3 57.4 57.5 57.6 57.7 57.8 57.9 58 + Bin 1058: 58 58.1 58.2 58.3 58.4 58.5 58.6 58.7 58.8 58.9 59 + Bin 1059: 59 59.1 59.2 59.3 59.4 59.5 59.6 59.7 59.8 59.9 60 + Bin 1060: 60 60.1 60.2 60.3 60.4 60.5 60.6 60.7 60.8 60.9 61 + Bin 1061: 61 61.1 61.2 61.3 61.4 61.5 61.6 61.7 61.8 61.9 62 + Bin 1062: 62 62.1 62.2 62.3 62.4 62.5 62.6 62.7 62.8 62.9 63 + Bin 1063: 63 63.1 63.2 63.3 63.4 63.5 63.6 63.7 63.8 63.9 64 + Bin 1064: 64 64.1 64.2 64.3 64.4 64.5 64.6 64.7 64.8 64.9 65 + Bin 1065: 65 65.1 65.2 65.3 65.4 65.5 65.6 65.7 65.8 65.9 66 + Bin 1066: 66 66.1 66.2 66.3 66.4 66.5 66.6 66.7 66.8 66.9 67 + Bin 1067: 67 67.1 67.2 67.3 67.4 67.5 67.6 67.7 67.8 67.9 68 + Bin 1068: 68 68.1 68.2 68.3 68.4 68.5 68.6 68.7 68.8 68.9 69 + Bin 1069: 69 69.1 69.2 69.3 69.4 69.5 69.6 69.7 69.8 69.9 70 + Bin 1070: 70 70.1 70.2 70.3 70.4 70.5 70.6 70.7 70.8 70.9 71 + Bin 1071: 71 71.1 71.2 71.3 71.4 71.5 71.6 71.7 71.8 71.9 72 + Bin 1072: 72 72.1 72.2 72.3 72.4 72.5 72.6 72.7 72.8 72.9 73 + Bin 1073: 73 73.1 73.2 73.3 73.4 73.5 73.6 73.7 73.8 73.9 74 + Bin 1074: 74 74.1 74.2 74.3 74.4 74.5 74.6 74.7 74.8 74.9 75 + Bin 1075: 75 75.1 75.2 75.3 75.4 75.5 75.6 75.7 75.8 75.9 76 + Bin 1076: 76 76.1 76.2 76.3 76.4 76.5 76.6 76.7 76.8 76.9 77 + Bin 1077: 77 77.1 77.2 77.3 77.4 77.5 77.6 77.7 77.8 77.9 78 + Bin 1078: 78 78.1 78.2 78.3 78.4 78.5 78.6 78.7 78.8 78.9 79 + Bin 1079: 79 79.1 79.2 79.3 79.4 79.5 79.6 79.7 79.8 79.9 80 + Bin 1080: 80 80.1 80.2 80.3 80.4 80.5 80.6 80.7 80.8 80.9 81 + Bin 1081: 81 81.1 81.2 81.3 81.4 81.5 81.6 81.7 81.8 81.9 82 + Bin 1082: 82 82.1 82.2 82.3 82.4 82.5 82.6 82.7 82.8 82.9 83 + Bin 1083: 83 83.1 83.2 83.3 83.4 83.5 83.6 83.7 83.8 83.9 84 + Bin 1084: 84 84.1 84.2 84.3 84.4 84.5 84.6 84.7 84.8 84.9 85 + Bin 1085: 85 85.1 85.2 85.3 85.4 85.5 85.6 85.7 85.8 85.9 86 + Bin 1086: 86 86.1 86.2 86.3 86.4 86.5 86.6 86.7 86.8 86.9 87 + Bin 1087: 87 87.1 87.2 87.3 87.4 87.5 87.6 87.7 87.8 87.9 88 + Bin 1088: 88 88.1 88.2 88.3 88.4 88.5 88.6 88.7 88.8 88.9 89 + Bin 1089: 89 89.1 89.2 89.3 89.4 89.5 89.6 89.7 89.8 89.9 90 + Bin 1090: 90 90.1 90.2 90.3 90.4 90.5 90.6 90.7 90.8 90.9 91 + Bin 1091: 91 91.1 91.2 91.3 91.4 91.5 91.6 91.7 91.8 91.9 92 + Bin 1092: 92 92.1 92.2 92.3 92.4 92.5 92.6 92.7 92.8 92.9 93 + Bin 1093: 93 93.1 93.2 93.3 93.4 93.5 93.6 93.7 93.8 93.9 94 + Bin 1094: 94 94.1 94.2 94.3 94.4 94.5 94.6 94.7 94.8 94.9 95 + Bin 1095: 95 95.1 95.2 95.3 95.4 95.5 95.6 95.7 95.8 95.9 96 + Bin 1096: 96 96.1 96.2 96.3 96.4 96.5 96.6 96.7 96.8 96.9 97 + Bin 1097: 97 97.1 97.2 97.3 97.4 97.5 97.6 97.7 97.8 97.9 98 + Bin 1098: 98 98.1 98.2 98.3 98.4 98.5 98.6 98.7 98.8 98.9 99 + Bin 1099: 99 99.1 99.2 99.3 99.4 99.5 99.6 99.7 99.8 99.9 100 + Bin 1100: 100 100.1 100.2 100.3 100.4 100.5 100.6 100.7 100.8 100.9 101 + Bin 1101: 101 101.1 101.2 101.3 101.4 101.5 101.6 101.7 101.8 101.9 102 + Bin 1102: 102 102.1 102.2 102.3 102.4 102.5 102.6 102.7 102.8 102.9 103 + Bin 1103: 103 103.1 103.2 103.3 103.4 103.5 103.6 103.7 103.8 103.9 104 + Bin 1104: 104 104.1 104.2 104.3 104.4 104.5 104.6 104.7 104.8 104.9 105 + Bin 1105: 105 105.1 105.2 105.3 105.4 105.5 105.6 105.7 105.8 105.9 106 + Bin 1106: 106 106.1 106.2 106.3 106.4 106.5 106.6 106.7 106.8 106.9 107 + Bin 1107: 107 107.1 107.2 107.3 107.4 107.5 107.6 107.7 107.8 107.9 108 + Bin 1108: 108 108.1 108.2 108.3 108.4 108.5 108.6 108.7 108.8 108.9 109 + Bin 1109: 109 109.1 109.2 109.3 109.4 109.5 109.6 109.7 109.8 109.9 110 + Bin 1110: 110 110.1 110.2 110.3 110.4 110.5 110.6 110.7 110.8 110.9 111 + Bin 1111: 111 111.1 111.2 111.3 111.4 111.5 111.6 111.7 111.8 111.9 112 + Bin 1112: 112 112.1 112.2 112.3 112.4 112.5 112.6 112.7 112.8 112.9 113 + Bin 1113: 113 113.1 113.2 113.3 113.4 113.5 113.6 113.7 113.8 113.9 114 + Bin 1114: 114 114.1 114.2 114.3 114.4 114.5 114.6 114.7 114.8 114.9 115 + Bin 1115: 115 115.1 115.2 115.3 115.4 115.5 115.6 115.7 115.8 115.9 116 + Bin 1116: 116 116.1 116.2 116.3 116.4 116.5 116.6 116.7 116.8 116.9 117 + Bin 1117: 117 117.1 117.2 117.3 117.4 117.5 117.6 117.7 117.8 117.9 118 + Bin 1118: 118 118.1 118.2 118.3 118.4 118.5 118.6 118.7 118.8 118.9 119 + Bin 1119: 119 119.1 119.2 119.3 119.4 119.5 119.6 119.7 119.8 119.9 120 + Bin 1120: 120 120.1 120.2 120.3 120.4 120.5 120.6 120.7 120.8 120.9 121 + Bin 1121: 121 121.1 121.2 121.3 121.4 121.5 121.6 121.7 121.8 121.9 122 + Bin 1122: 122 122.1 122.2 122.3 122.4 122.5 122.6 122.7 122.8 122.9 123 + Bin 1123: 123 123.1 123.2 123.3 123.4 123.5 123.6 123.7 123.8 123.9 124 + Bin 1124: 124 124.1 124.2 124.3 124.4 124.5 124.6 124.7 124.8 124.9 125 + Bin 1125: 125 125.1 125.2 125.3 125.4 125.5 125.6 125.7 125.8 125.9 126 + Bin 1126: 126 126.1 126.2 126.3 126.4 126.5 126.6 126.7 126.8 126.9 127 + Bin 1127: 127 127.1 127.2 127.3 127.4 127.5 127.6 127.7 127.8 127.9 128 + Bin 1128: 128 128.1 128.2 128.3 128.4 128.5 128.6 128.7 128.8 128.9 129 + Bin 1129: 129 129.1 129.2 129.3 129.4 129.5 129.6 129.7 129.8 129.9 130 + Bin 1130: 130 130.1 130.2 130.3 130.4 130.5 130.6 130.7 130.8 130.9 131 + Bin 1131: 131 131.1 131.2 131.3 131.4 131.5 131.6 131.7 131.8 131.9 132 + Bin 1132: 132 132.1 132.2 132.3 132.4 132.5 132.6 132.7 132.8 132.9 133 + Bin 1133: 133 133.1 133.2 133.3 133.4 133.5 133.6 133.7 133.8 133.9 134 + Bin 1134: 134 134.1 134.2 134.3 134.4 134.5 134.6 134.7 134.8 134.9 135 + Bin 1135: 135 135.1 135.2 135.3 135.4 135.5 135.6 135.7 135.8 135.9 136 + Bin 1136: 136 136.1 136.2 136.3 136.4 136.5 136.6 136.7 136.8 136.9 137 + Bin 1137: 137 137.1 137.2 137.3 137.4 137.5 137.6 137.7 137.8 137.9 138 + Bin 1138: 138 138.1 138.2 138.3 138.4 138.5 138.6 138.7 138.8 138.9 139 + Bin 1139: 139 139.1 139.2 139.3 139.4 139.5 139.6 139.7 139.8 139.9 140 + Bin 1140: 140 140.1 140.2 140.3 140.4 140.5 140.6 140.7 140.8 140.9 141 + Bin 1141: 141 141.1 141.2 141.3 141.4 141.5 141.6 141.7 141.8 141.9 142 + Bin 1142: 142 142.1 142.2 142.3 142.4 142.5 142.6 142.7 142.8 142.9 143 + Bin 1143: 143 143.1 143.2 143.3 143.4 143.5 143.6 143.7 143.8 143.9 144 + Bin 1144: 144 144.1 144.2 144.3 144.4 144.5 144.6 144.7 144.8 144.9 145 + Bin 1145: 145 145.1 145.2 145.3 145.4 145.5 145.6 145.7 145.8 145.9 146 + Bin 1146: 146 146.1 146.2 146.3 146.4 146.5 146.6 146.7 146.8 146.9 147 + Bin 1147: 147 147.1 147.2 147.3 147.4 147.5 147.6 147.7 147.8 147.9 148 + Bin 1148: 148 148.1 148.2 148.3 148.4 148.5 148.6 148.7 148.8 148.9 149 + Bin 1149: 149 149.1 149.2 149.3 149.4 149.5 149.6 149.7 149.8 149.9 150 + Bin 1150: 150 150.1 150.2 150.3 150.4 150.5 150.6 150.7 150.8 150.9 151 + Bin 1151: 151 151.1 151.2 151.3 151.4 151.5 151.6 151.7 151.8 151.9 152 + Bin 1152: 152 152.1 152.2 152.3 152.4 152.5 152.6 152.7 152.8 152.9 153 + Bin 1153: 153 153.1 153.2 153.3 153.4 153.5 153.6 153.7 153.8 153.9 154 + Bin 1154: 154 154.1 154.2 154.3 154.4 154.5 154.6 154.7 154.8 154.9 155 + Bin 1155: 155 155.1 155.2 155.3 155.4 155.5 155.6 155.7 155.8 155.9 156 + Bin 1156: 156 156.1 156.2 156.3 156.4 156.5 156.6 156.7 156.8 156.9 157 + Bin 1157: 157 157.1 157.2 157.3 157.4 157.5 157.6 157.7 157.8 157.9 158 + Bin 1158: 158 158.1 158.2 158.3 158.4 158.5 158.6 158.7 158.8 158.9 159 + Bin 1159: 159 159.1 159.2 159.3 159.4 159.5 159.6 159.7 159.8 159.9 160 + Bin 1160: 160 160.1 160.2 160.3 160.4 160.5 160.6 160.7 160.8 160.9 161 + Bin 1161: 161 161.1 161.2 161.3 161.4 161.5 161.6 161.7 161.8 161.9 162 + Bin 1162: 162 162.1 162.2 162.3 162.4 162.5 162.6 162.7 162.8 162.9 163 + Bin 1163: 163 163.1 163.2 163.3 163.4 163.5 163.6 163.7 163.8 163.9 164 + Bin 1164: 164 164.1 164.2 164.3 164.4 164.5 164.6 164.7 164.8 164.9 165 + Bin 1165: 165 165.1 165.2 165.3 165.4 165.5 165.6 165.7 165.8 165.9 166 + Bin 1166: 166 166.1 166.2 166.3 166.4 166.5 166.6 166.7 166.8 166.9 167 + Bin 1167: 167 167.1 167.2 167.3 167.4 167.5 167.6 167.7 167.8 167.9 168 + Bin 1168: 168 168.1 168.2 168.3 168.4 168.5 168.6 168.7 168.8 168.9 169 + Bin 1169: 169 169.1 169.2 169.3 169.4 169.5 169.6 169.7 169.8 169.9 170 + Bin 1170: 170 170.1 170.2 170.3 170.4 170.5 170.6 170.7 170.8 170.9 171 + Bin 1171: 171 171.1 171.2 171.3 171.4 171.5 171.6 171.7 171.8 171.9 172 + Bin 1172: 172 172.1 172.2 172.3 172.4 172.5 172.6 172.7 172.8 172.9 173 + Bin 1173: 173 173.1 173.2 173.3 173.4 173.5 173.6 173.7 173.8 173.9 174 + Bin 1174: 174 174.1 174.2 174.3 174.4 174.5 174.6 174.7 174.8 174.9 175 + Bin 1175: 175 175.1 175.2 175.3 175.4 175.5 175.6 175.7 175.8 175.9 176 + Bin 1176: 176 176.1 176.2 176.3 176.4 176.5 176.6 176.7 176.8 176.9 177 + Bin 1177: 177 177.1 177.2 177.3 177.4 177.5 177.6 177.7 177.8 177.9 178 + Bin 1178: 178 178.1 178.2 178.3 178.4 178.5 178.6 178.7 178.8 178.9 179 + Bin 1179: 179 179.1 179.2 179.3 179.4 179.5 179.6 179.7 179.8 179.9 180 + Bin 1180: 180 180.1 180.2 180.3 180.4 180.5 180.6 180.7 180.8 180.9 181 + Bin 1181: 181 181.1 181.2 181.3 181.4 181.5 181.6 181.7 181.8 181.9 182 + Bin 1182: 182 182.1 182.2 182.3 182.4 182.5 182.6 182.7 182.8 182.9 183 + Bin 1183: 183 183.1 183.2 183.3 183.4 183.5 183.6 183.7 183.8 183.9 184 + Bin 1184: 184 184.1 184.2 184.3 184.4 184.5 184.6 184.7 184.8 184.9 185 + Bin 1185: 185 185.1 185.2 185.3 185.4 185.5 185.6 185.7 185.8 185.9 186 + Bin 1186: 186 186.1 186.2 186.3 186.4 186.5 186.6 186.7 186.8 186.9 187 + Bin 1187: 187 187.1 187.2 187.3 187.4 187.5 187.6 187.7 187.8 187.9 188 + Bin 1188: 188 188.1 188.2 188.3 188.4 188.5 188.6 188.7 188.8 188.9 189 + Bin 1189: 189 189.1 189.2 189.3 189.4 189.5 189.6 189.7 189.8 189.9 190 + Bin 1190: 190 190.1 190.2 190.3 190.4 190.5 190.6 190.7 190.8 190.9 191 + Bin 1191: 191 191.1 191.2 191.3 191.4 191.5 191.6 191.7 191.8 191.9 192 + Bin 1192: 192 192.1 192.2 192.3 192.4 192.5 192.6 192.7 192.8 192.9 193 + Bin 1193: 193 193.1 193.2 193.3 193.4 193.5 193.6 193.7 193.8 193.9 194 + Bin 1194: 194 194.1 194.2 194.3 194.4 194.5 194.6 194.7 194.8 194.9 195 + Bin 1195: 195 195.1 195.2 195.3 195.4 195.5 195.6 195.7 195.8 195.9 196 + Bin 1196: 196 196.1 196.2 196.3 196.4 196.5 196.6 196.7 196.8 196.9 197 + Bin 1197: 197 197.1 197.2 197.3 197.4 197.5 197.6 197.7 197.8 197.9 198 + Bin 1198: 198 198.1 198.2 198.3 198.4 198.5 198.6 198.7 198.8 198.9 199 + Bin 1199: 199 199.1 199.2 199.3 199.4 199.5 199.6 199.7 199.8 199.9 200 + Bin 1200: 200 200.1 200.2 200.3 200.4 200.5 200.6 200.7 200.8 200.9 201 + Bin 1201: 201 201.1 201.2 201.3 201.4 201.5 201.6 201.7 201.8 201.9 202 + Bin 1202: 202 202.1 202.2 202.3 202.4 202.5 202.6 202.7 202.8 202.9 203 + Bin 1203: 203 203.1 203.2 203.3 203.4 203.5 203.6 203.7 203.8 203.9 204 + Bin 1204: 204 204.1 204.2 204.3 204.4 204.5 204.6 204.7 204.8 204.9 205 + Bin 1205: 205 205.1 205.2 205.3 205.4 205.5 205.6 205.7 205.8 205.9 206 + Bin 1206: 206 206.1 206.2 206.3 206.4 206.5 206.6 206.7 206.8 206.9 207 + Bin 1207: 207 207.1 207.2 207.3 207.4 207.5 207.6 207.7 207.8 207.9 208 + Bin 1208: 208 208.1 208.2 208.3 208.4 208.5 208.6 208.7 208.8 208.9 209 + Bin 1209: 209 209.1 209.2 209.3 209.4 209.5 209.6 209.7 209.8 209.9 210 + Bin 1210: 210 210.1 210.2 210.3 210.4 210.5 210.6 210.7 210.8 210.9 211 + Bin 1211: 211 211.1 211.2 211.3 211.4 211.5 211.6 211.7 211.8 211.9 212 + Bin 1212: 212 212.1 212.2 212.3 212.4 212.5 212.6 212.7 212.8 212.9 213 + Bin 1213: 213 213.1 213.2 213.3 213.4 213.5 213.6 213.7 213.8 213.9 214 + Bin 1214: 214 214.1 214.2 214.3 214.4 214.5 214.6 214.7 214.8 214.9 215 + Bin 1215: 215 215.1 215.2 215.3 215.4 215.5 215.6 215.7 215.8 215.9 216 + Bin 1216: 216 216.1 216.2 216.3 216.4 216.5 216.6 216.7 216.8 216.9 217 + Bin 1217: 217 217.1 217.2 217.3 217.4 217.5 217.6 217.7 217.8 217.9 218 + Bin 1218: 218 218.1 218.2 218.3 218.4 218.5 218.6 218.7 218.8 218.9 219 + Bin 1219: 219 219.1 219.2 219.3 219.4 219.5 219.6 219.7 219.8 219.9 220 + Bin 1220: 220 220.1 220.2 220.3 220.4 220.5 220.6 220.7 220.8 220.9 221 + Bin 1221: 221 221.1 221.2 221.3 221.4 221.5 221.6 221.7 221.8 221.9 222 + Bin 1222: 222 222.1 222.2 222.3 222.4 222.5 222.6 222.7 222.8 222.9 223 + Bin 1223: 223 223.1 223.2 223.3 223.4 223.5 223.6 223.7 223.8 223.9 224 + Bin 1224: 224 224.1 224.2 224.3 224.4 224.5 224.6 224.7 224.8 224.9 225 + Bin 1225: 225 225.1 225.2 225.3 225.4 225.5 225.6 225.7 225.8 225.9 226 + Bin 1226: 226 226.1 226.2 226.3 226.4 226.5 226.6 226.7 226.8 226.9 227 + Bin 1227: 227 227.1 227.2 227.3 227.4 227.5 227.6 227.7 227.8 227.9 228 + Bin 1228: 228 228.1 228.2 228.3 228.4 228.5 228.6 228.7 228.8 228.9 229 + Bin 1229: 229 229.1 229.2 229.3 229.4 229.5 229.6 229.7 229.8 229.9 230 + Bin 1230: 230 230.1 230.2 230.3 230.4 230.5 230.6 230.7 230.8 230.9 231 + Bin 1231: 231 231.1 231.2 231.3 231.4 231.5 231.6 231.7 231.8 231.9 232 + Bin 1232: 232 232.1 232.2 232.3 232.4 232.5 232.6 232.7 232.8 232.9 233 + Bin 1233: 233 233.1 233.2 233.3 233.4 233.5 233.6 233.7 233.8 233.9 234 + Bin 1234: 234 234.1 234.2 234.3 234.4 234.5 234.6 234.7 234.8 234.9 235 + Bin 1235: 235 235.1 235.2 235.3 235.4 235.5 235.6 235.7 235.8 235.9 236 + Bin 1236: 236 236.1 236.2 236.3 236.4 236.5 236.6 236.7 236.8 236.9 237 + Bin 1237: 237 237.1 237.2 237.3 237.4 237.5 237.6 237.7 237.8 237.9 238 + Bin 1238: 238 238.1 238.2 238.3 238.4 238.5 238.6 238.7 238.8 238.9 239 + Bin 1239: 239 239.1 239.2 239.3 239.4 239.5 239.6 239.7 239.8 239.9 240 + Bin 1240: 240 240.1 240.2 240.3 240.4 240.5 240.6 240.7 240.8 240.9 241 + Bin 1241: 241 241.1 241.2 241.3 241.4 241.5 241.6 241.7 241.8 241.9 242 + Bin 1242: 242 242.1 242.2 242.3 242.4 242.5 242.6 242.7 242.8 242.9 243 + Bin 1243: 243 243.1 243.2 243.3 243.4 243.5 243.6 243.7 243.8 243.9 244 + Bin 1244: 244 244.1 244.2 244.3 244.4 244.5 244.6 244.7 244.8 244.9 245 + Bin 1245: 245 245.1 245.2 245.3 245.4 245.5 245.6 245.7 245.8 245.9 246 + Bin 1246: 246 246.1 246.2 246.3 246.4 246.5 246.6 246.7 246.8 246.9 247 + Bin 1247: 247 247.1 247.2 247.3 247.4 247.5 247.6 247.7 247.8 247.9 248 + Bin 1248: 248 248.1 248.2 248.3 248.4 248.5 248.6 248.7 248.8 248.9 249 + Bin 1249: 249 249.1 249.2 249.3 249.4 249.5 249.6 249.7 249.8 249.9 250 + Bin 1250: 250 250.1 250.2 250.3 250.4 250.5 250.6 250.7 250.8 250.9 251 + Bin 1251: 251 251.1 251.2 251.3 251.4 251.5 251.6 251.7 251.8 251.9 252 + Bin 1252: 252 252.1 252.2 252.3 252.4 252.5 252.6 252.7 252.8 252.9 253 + Bin 1253: 253 253.1 253.2 253.3 253.4 253.5 253.6 253.7 253.8 253.9 254 + Bin 1254: 254 254.1 254.2 254.3 254.4 254.5 254.6 254.7 254.8 254.9 255 + Bin 1255: 255 255.1 255.2 255.3 255.4 255.5 255.6 255.7 255.8 255.9 256 + Bin 1256: 256 256.1 256.2 256.3 256.4 256.5 256.6 256.7 256.8 256.9 257 + Bin 1257: 257 257.1 257.2 257.3 257.4 257.5 257.6 257.7 257.8 257.9 258 + Bin 1258: 258 258.1 258.2 258.3 258.4 258.5 258.6 258.7 258.8 258.9 259 + Bin 1259: 259 259.1 259.2 259.3 259.4 259.5 259.6 259.7 259.8 259.9 260 + Bin 1260: 260 260.1 260.2 260.3 260.4 260.5 260.6 260.7 260.8 260.9 261 + Bin 1261: 261 261.1 261.2 261.3 261.4 261.5 261.6 261.7 261.8 261.9 262 + Bin 1262: 262 262.1 262.2 262.3 262.4 262.5 262.6 262.7 262.8 262.9 263 + Bin 1263: 263 263.1 263.2 263.3 263.4 263.5 263.6 263.7 263.8 263.9 264 + Bin 1264: 264 264.1 264.2 264.3 264.4 264.5 264.6 264.7 264.8 264.9 265 + Bin 1265: 265 265.1 265.2 265.3 265.4 265.5 265.6 265.7 265.8 265.9 266 + Bin 1266: 266 266.1 266.2 266.3 266.4 266.5 266.6 266.7 266.8 266.9 267 + Bin 1267: 267 267.1 267.2 267.3 267.4 267.5 267.6 267.7 267.8 267.9 268 + Bin 1268: 268 268.1 268.2 268.3 268.4 268.5 268.6 268.7 268.8 268.9 269 + Bin 1269: 269 269.1 269.2 269.3 269.4 269.5 269.6 269.7 269.8 269.9 270 + Bin 1270: 270 270.1 270.2 270.3 270.4 270.5 270.6 270.7 270.8 270.9 271 + Bin 1271: 271 271.1 271.2 271.3 271.4 271.5 271.6 271.7 271.8 271.9 272 + Bin 1272: 272 272.1 272.2 272.3 272.4 272.5 272.6 272.7 272.8 272.9 273 + Bin 1273: 273 273.1 273.2 273.3 273.4 273.5 273.6 273.7 273.8 273.9 274 + Bin 1274: 274 274.1 274.2 274.3 274.4 274.5 274.6 274.7 274.8 274.9 275 + Bin 1275: 275 275.1 275.2 275.3 275.4 275.5 275.6 275.7 275.8 275.9 276 + Bin 1276: 276 276.1 276.2 276.3 276.4 276.5 276.6 276.7 276.8 276.9 277 + Bin 1277: 277 277.1 277.2 277.3 277.4 277.5 277.6 277.7 277.8 277.9 278 + Bin 1278: 278 278.1 278.2 278.3 278.4 278.5 278.6 278.7 278.8 278.9 279 + Bin 1279: 279 279.1 279.2 279.3 279.4 279.5 279.6 279.7 279.8 279.9 280 + Bin 1280: 280 280.1 280.2 280.3 280.4 280.5 280.6 280.7 280.8 280.9 281 + Bin 1281: 281 281.1 281.2 281.3 281.4 281.5 281.6 281.7 281.8 281.9 282 + Bin 1282: 282 282.1 282.2 282.3 282.4 282.5 282.6 282.7 282.8 282.9 283 + Bin 1283: 283 283.1 283.2 283.3 283.4 283.5 283.6 283.7 283.8 283.9 284 + Bin 1284: 284 284.1 284.2 284.3 284.4 284.5 284.6 284.7 284.8 284.9 285 + Bin 1285: 285 285.1 285.2 285.3 285.4 285.5 285.6 285.7 285.8 285.9 286 + Bin 1286: 286 286.1 286.2 286.3 286.4 286.5 286.6 286.7 286.8 286.9 287 + Bin 1287: 287 287.1 287.2 287.3 287.4 287.5 287.6 287.7 287.8 287.9 288 + Bin 1288: 288 288.1 288.2 288.3 288.4 288.5 288.6 288.7 288.8 288.9 289 + Bin 1289: 289 289.1 289.2 289.3 289.4 289.5 289.6 289.7 289.8 289.9 290 + Bin 1290: 290 290.1 290.2 290.3 290.4 290.5 290.6 290.7 290.8 290.9 291 + Bin 1291: 291 291.1 291.2 291.3 291.4 291.5 291.6 291.7 291.8 291.9 292 + Bin 1292: 292 292.1 292.2 292.3 292.4 292.5 292.6 292.7 292.8 292.9 293 + Bin 1293: 293 293.1 293.2 293.3 293.4 293.5 293.6 293.7 293.8 293.9 294 + Bin 1294: 294 294.1 294.2 294.3 294.4 294.5 294.6 294.7 294.8 294.9 295 + Bin 1295: 295 295.1 295.2 295.3 295.4 295.5 295.6 295.7 295.8 295.9 296 + Bin 1296: 296 296.1 296.2 296.3 296.4 296.5 296.6 296.7 296.8 296.9 297 + Bin 1297: 297 297.1 297.2 297.3 297.4 297.5 297.6 297.7 297.8 297.9 298 + Bin 1298: 298 298.1 298.2 298.3 298.4 298.5 298.6 298.7 298.8 298.9 299 + Bin 1299: 299 299.1 299.2 299.3 299.4 299.5 299.6 299.7 299.8 299.9 300 + Bin 1300: 300 300.1 300.2 300.3 300.4 300.5 300.6 300.7 300.8 300.9 301 + Bin 1301: 301 301.1 301.2 301.3 301.4 301.5 301.6 301.7 301.8 301.9 302 + Bin 1302: 302 302.1 302.2 302.3 302.4 302.5 302.6 302.7 302.8 302.9 303 + Bin 1303: 303 303.1 303.2 303.3 303.4 303.5 303.6 303.7 303.8 303.9 304 + Bin 1304: 304 304.1 304.2 304.3 304.4 304.5 304.6 304.7 304.8 304.9 305 + Bin 1305: 305 305.1 305.2 305.3 305.4 305.5 305.6 305.7 305.8 305.9 306 + Bin 1306: 306 306.1 306.2 306.3 306.4 306.5 306.6 306.7 306.8 306.9 307 + Bin 1307: 307 307.1 307.2 307.3 307.4 307.5 307.6 307.7 307.8 307.9 308 + Bin 1308: 308 308.1 308.2 308.3 308.4 308.5 308.6 308.7 308.8 308.9 309 + Bin 1309: 309 309.1 309.2 309.3 309.4 309.5 309.6 309.7 309.8 309.9 310 + Bin 1310: 310 310.1 310.2 310.3 310.4 310.5 310.6 310.7 310.8 310.9 311 + Bin 1311: 311 311.1 311.2 311.3 311.4 311.5 311.6 311.7 311.8 311.9 312 + Bin 1312: 312 312.1 312.2 312.3 312.4 312.5 312.6 312.7 312.8 312.9 313 + Bin 1313: 313 313.1 313.2 313.3 313.4 313.5 313.6 313.7 313.8 313.9 314 + Bin 1314: 314 314.1 314.2 314.3 314.4 314.5 314.6 314.7 314.8 314.9 315 + Bin 1315: 315 315.1 315.2 315.3 315.4 315.5 315.6 315.7 315.8 315.9 316 + Bin 1316: 316 316.1 316.2 316.3 316.4 316.5 316.6 316.7 316.8 316.9 317 + Bin 1317: 317 317.1 317.2 317.3 317.4 317.5 317.6 317.7 317.8 317.9 318 + Bin 1318: 318 318.1 318.2 318.3 318.4 318.5 318.6 318.7 318.8 318.9 319 + Bin 1319: 319 319.1 319.2 319.3 319.4 319.5 319.6 319.7 319.8 319.9 320 + Bin 1320: 320 320.1 320.2 320.3 320.4 320.5 320.6 320.7 320.8 320.9 321 + Bin 1321: 321 321.1 321.2 321.3 321.4 321.5 321.6 321.7 321.8 321.9 322 + Bin 1322: 322 322.1 322.2 322.3 322.4 322.5 322.6 322.7 322.8 322.9 323 + Bin 1323: 323 323.1 323.2 323.3 323.4 323.5 323.6 323.7 323.8 323.9 324 + Bin 1324: 324 324.1 324.2 324.3 324.4 324.5 324.6 324.7 324.8 324.9 325 + Bin 1325: 325 325.1 325.2 325.3 325.4 325.5 325.6 325.7 325.8 325.9 326 + Bin 1326: 326 326.1 326.2 326.3 326.4 326.5 326.6 326.7 326.8 326.9 327 + Bin 1327: 327 327.1 327.2 327.3 327.4 327.5 327.6 327.7 327.8 327.9 328 + Bin 1328: 328 328.1 328.2 328.3 328.4 328.5 328.6 328.7 328.8 328.9 329 + Bin 1329: 329 329.1 329.2 329.3 329.4 329.5 329.6 329.7 329.8 329.9 330 + Bin 1330: 330 330.1 330.2 330.3 330.4 330.5 330.6 330.7 330.8 330.9 331 + Bin 1331: 331 331.1 331.2 331.3 331.4 331.5 331.6 331.7 331.8 331.9 332 + Bin 1332: 332 332.1 332.2 332.3 332.4 332.5 332.6 332.7 332.8 332.9 333 + Bin 1333: 333 333.1 333.2 333.3 333.4 333.5 333.6 333.7 333.8 333.9 334 + Bin 1334: 334 334.1 334.2 334.3 334.4 334.5 334.6 334.7 334.8 334.9 335 + Bin 1335: 335 335.1 335.2 335.3 335.4 335.5 335.6 335.7 335.8 335.9 336 + Bin 1336: 336 336.1 336.2 336.3 336.4 336.5 336.6 336.7 336.8 336.9 337 + Bin 1337: 337 337.1 337.2 337.3 337.4 337.5 337.6 337.7 337.8 337.9 338 + Bin 1338: 338 338.1 338.2 338.3 338.4 338.5 338.6 338.7 338.8 338.9 339 + Bin 1339: 339 339.1 339.2 339.3 339.4 339.5 339.6 339.7 339.8 339.9 340 + Bin 1340: 340 340.1 340.2 340.3 340.4 340.5 340.6 340.7 340.8 340.9 341 + Bin 1341: 341 341.1 341.2 341.3 341.4 341.5 341.6 341.7 341.8 341.9 342 + Bin 1342: 342 342.1 342.2 342.3 342.4 342.5 342.6 342.7 342.8 342.9 343 + Bin 1343: 343 343.1 343.2 343.3 343.4 343.5 343.6 343.7 343.8 343.9 344 + Bin 1344: 344 344.1 344.2 344.3 344.4 344.5 344.6 344.7 344.8 344.9 345 + Bin 1345: 345 345.1 345.2 345.3 345.4 345.5 345.6 345.7 345.8 345.9 346 + Bin 1346: 346 346.1 346.2 346.3 346.4 346.5 346.6 346.7 346.8 346.9 347 + Bin 1347: 347 347.1 347.2 347.3 347.4 347.5 347.6 347.7 347.8 347.9 348 + Bin 1348: 348 348.1 348.2 348.3 348.4 348.5 348.6 348.7 348.8 348.9 349 + Bin 1349: 349 349.1 349.2 349.3 349.4 349.5 349.6 349.7 349.8 349.9 350 + Bin 1350: 350 350.1 350.2 350.3 350.4 350.5 350.6 350.7 350.8 350.9 351 + Bin 1351: 351 351.1 351.2 351.3 351.4 351.5 351.6 351.7 351.8 351.9 352 + Bin 1352: 352 352.1 352.2 352.3 352.4 352.5 352.6 352.7 352.8 352.9 353 + Bin 1353: 353 353.1 353.2 353.3 353.4 353.5 353.6 353.7 353.8 353.9 354 + Bin 1354: 354 354.1 354.2 354.3 354.4 354.5 354.6 354.7 354.8 354.9 355 + Bin 1355: 355 355.1 355.2 355.3 355.4 355.5 355.6 355.7 355.8 355.9 356 + Bin 1356: 356 356.1 356.2 356.3 356.4 356.5 356.6 356.7 356.8 356.9 357 + Bin 1357: 357 357.1 357.2 357.3 357.4 357.5 357.6 357.7 357.8 357.9 358 + Bin 1358: 358 358.1 358.2 358.3 358.4 358.5 358.6 358.7 358.8 358.9 359 + Bin 1359: 359 359.1 359.2 359.3 359.4 359.5 359.6 359.7 359.8 359.9 360 + Bin 1360: 360 360.1 360.2 360.3 360.4 360.5 360.6 360.7 360.8 360.9 361 + Bin 1361: 361 361.1 361.2 361.3 361.4 361.5 361.6 361.7 361.8 361.9 362 + Bin 1362: 362 362.1 362.2 362.3 362.4 362.5 362.6 362.7 362.8 362.9 363 + Bin 1363: 363 363.1 363.2 363.3 363.4 363.5 363.6 363.7 363.8 363.9 364 + Bin 1364: 364 364.1 364.2 364.3 364.4 364.5 364.6 364.7 364.8 364.9 365 + Bin 1365: 365 365.1 365.2 365.3 365.4 365.5 365.6 365.7 365.8 365.9 366 + Bin 1366: 366 366.1 366.2 366.3 366.4 366.5 366.6 366.7 366.8 366.9 367 + Bin 1367: 367 367.1 367.2 367.3 367.4 367.5 367.6 367.7 367.8 367.9 368 + Bin 1368: 368 368.1 368.2 368.3 368.4 368.5 368.6 368.7 368.8 368.9 369 + Bin 1369: 369 369.1 369.2 369.3 369.4 369.5 369.6 369.7 369.8 369.9 370 + Bin 1370: 370 370.1 370.2 370.3 370.4 370.5 370.6 370.7 370.8 370.9 371 + Bin 1371: 371 371.1 371.2 371.3 371.4 371.5 371.6 371.7 371.8 371.9 372 + Bin 1372: 372 372.1 372.2 372.3 372.4 372.5 372.6 372.7 372.8 372.9 373 + Bin 1373: 373 373.1 373.2 373.3 373.4 373.5 373.6 373.7 373.8 373.9 374 + Bin 1374: 374 374.1 374.2 374.3 374.4 374.5 374.6 374.7 374.8 374.9 375 + Bin 1375: 375 375.1 375.2 375.3 375.4 375.5 375.6 375.7 375.8 375.9 376 + Bin 1376: 376 376.1 376.2 376.3 376.4 376.5 376.6 376.7 376.8 376.9 377 + Bin 1377: 377 377.1 377.2 377.3 377.4 377.5 377.6 377.7 377.8 377.9 378 + Bin 1378: 378 378.1 378.2 378.3 378.4 378.5 378.6 378.7 378.8 378.9 379 + Bin 1379: 379 379.1 379.2 379.3 379.4 379.5 379.6 379.7 379.8 379.9 380 + Bin 1380: 380 380.1 380.2 380.3 380.4 380.5 380.6 380.7 380.8 380.9 381 + Bin 1381: 381 381.1 381.2 381.3 381.4 381.5 381.6 381.7 381.8 381.9 382 + Bin 1382: 382 382.1 382.2 382.3 382.4 382.5 382.6 382.7 382.8 382.9 383 + Bin 1383: 383 383.1 383.2 383.3 383.4 383.5 383.6 383.7 383.8 383.9 384 + Bin 1384: 384 384.1 384.2 384.3 384.4 384.5 384.6 384.7 384.8 384.9 385 + Bin 1385: 385 385.1 385.2 385.3 385.4 385.5 385.6 385.7 385.8 385.9 386 + Bin 1386: 386 386.1 386.2 386.3 386.4 386.5 386.6 386.7 386.8 386.9 387 + Bin 1387: 387 387.1 387.2 387.3 387.4 387.5 387.6 387.7 387.8 387.9 388 + Bin 1388: 388 388.1 388.2 388.3 388.4 388.5 388.6 388.7 388.8 388.9 389 + Bin 1389: 389 389.1 389.2 389.3 389.4 389.5 389.6 389.7 389.8 389.9 390 + Bin 1390: 390 390.1 390.2 390.3 390.4 390.5 390.6 390.7 390.8 390.9 391 + Bin 1391: 391 391.1 391.2 391.3 391.4 391.5 391.6 391.7 391.8 391.9 392 + Bin 1392: 392 392.1 392.2 392.3 392.4 392.5 392.6 392.7 392.8 392.9 393 + Bin 1393: 393 393.1 393.2 393.3 393.4 393.5 393.6 393.7 393.8 393.9 394 + Bin 1394: 394 394.1 394.2 394.3 394.4 394.5 394.6 394.7 394.8 394.9 395 + Bin 1395: 395 395.1 395.2 395.3 395.4 395.5 395.6 395.7 395.8 395.9 396 + Bin 1396: 396 396.1 396.2 396.3 396.4 396.5 396.6 396.7 396.8 396.9 397 + Bin 1397: 397 397.1 397.2 397.3 397.4 397.5 397.6 397.7 397.8 397.9 398 + Bin 1398: 398 398.1 398.2 398.3 398.4 398.5 398.6 398.7 398.8 398.9 399 + Bin 1399: 399 399.1 399.2 399.3 399.4 399.5 399.6 399.7 399.8 399.9 400 + Bin 1400: 400 400.1 400.2 400.3 400.4 400.5 400.6 400.7 400.8 400.9 401 + Bin 1401: 401 401.1 401.2 401.3 401.4 401.5 401.6 401.7 401.8 401.9 402 + Bin 1402: 402 402.1 402.2 402.3 402.4 402.5 402.6 402.7 402.8 402.9 403 + Bin 1403: 403 403.1 403.2 403.3 403.4 403.5 403.6 403.7 403.8 403.9 404 + Bin 1404: 404 404.1 404.2 404.3 404.4 404.5 404.6 404.7 404.8 404.9 405 + Bin 1405: 405 405.1 405.2 405.3 405.4 405.5 405.6 405.7 405.8 405.9 406 + Bin 1406: 406 406.1 406.2 406.3 406.4 406.5 406.6 406.7 406.8 406.9 407 + Bin 1407: 407 407.1 407.2 407.3 407.4 407.5 407.6 407.7 407.8 407.9 408 + Bin 1408: 408 408.1 408.2 408.3 408.4 408.5 408.6 408.7 408.8 408.9 409 + Bin 1409: 409 409.1 409.2 409.3 409.4 409.5 409.6 409.7 409.8 409.9 410 + Bin 1410: 410 410.1 410.2 410.3 410.4 410.5 410.6 410.7 410.8 410.9 411 + Bin 1411: 411 411.1 411.2 411.3 411.4 411.5 411.6 411.7 411.8 411.9 412 + Bin 1412: 412 412.1 412.2 412.3 412.4 412.5 412.6 412.7 412.8 412.9 413 + Bin 1413: 413 413.1 413.2 413.3 413.4 413.5 413.6 413.7 413.8 413.9 414 + Bin 1414: 414 414.1 414.2 414.3 414.4 414.5 414.6 414.7 414.8 414.9 415 + Bin 1415: 415 415.1 415.2 415.3 415.4 415.5 415.6 415.7 415.8 415.9 416 + Bin 1416: 416 416.1 416.2 416.3 416.4 416.5 416.6 416.7 416.8 416.9 417 + Bin 1417: 417 417.1 417.2 417.3 417.4 417.5 417.6 417.7 417.8 417.9 418 + Bin 1418: 418 418.1 418.2 418.3 418.4 418.5 418.6 418.7 418.8 418.9 419 + Bin 1419: 419 419.1 419.2 419.3 419.4 419.5 419.6 419.7 419.8 419.9 420 + Bin 1420: 420 420.1 420.2 420.3 420.4 420.5 420.6 420.7 420.8 420.9 421 + Bin 1421: 421 421.1 421.2 421.3 421.4 421.5 421.6 421.7 421.8 421.9 422 + Bin 1422: 422 422.1 422.2 422.3 422.4 422.5 422.6 422.7 422.8 422.9 423 + Bin 1423: 423 423.1 423.2 423.3 423.4 423.5 423.6 423.7 423.8 423.9 424 + Bin 1424: 424 424.1 424.2 424.3 424.4 424.5 424.6 424.7 424.8 424.9 425 + Bin 1425: 425 425.1 425.2 425.3 425.4 425.5 425.6 425.7 425.8 425.9 426 + Bin 1426: 426 426.1 426.2 426.3 426.4 426.5 426.6 426.7 426.8 426.9 427 + Bin 1427: 427 427.1 427.2 427.3 427.4 427.5 427.6 427.7 427.8 427.9 428 + Bin 1428: 428 428.1 428.2 428.3 428.4 428.5 428.6 428.7 428.8 428.9 429 + Bin 1429: 429 429.1 429.2 429.3 429.4 429.5 429.6 429.7 429.8 429.9 430 + Bin 1430: 430 430.1 430.2 430.3 430.4 430.5 430.6 430.7 430.8 430.9 431 + Bin 1431: 431 431.1 431.2 431.3 431.4 431.5 431.6 431.7 431.8 431.9 432 + Bin 1432: 432 432.1 432.2 432.3 432.4 432.5 432.6 432.7 432.8 432.9 433 + Bin 1433: 433 433.1 433.2 433.3 433.4 433.5 433.6 433.7 433.8 433.9 434 + Bin 1434: 434 434.1 434.2 434.3 434.4 434.5 434.6 434.7 434.8 434.9 435 + Bin 1435: 435 435.1 435.2 435.3 435.4 435.5 435.6 435.7 435.8 435.9 436 + Bin 1436: 436 436.1 436.2 436.3 436.4 436.5 436.6 436.7 436.8 436.9 437 + Bin 1437: 437 437.1 437.2 437.3 437.4 437.5 437.6 437.7 437.8 437.9 438 + Bin 1438: 438 438.1 438.2 438.3 438.4 438.5 438.6 438.7 438.8 438.9 439 + Bin 1439: 439 439.1 439.2 439.3 439.4 439.5 439.6 439.7 439.8 439.9 440 + Bin 1440: 440 440.1 440.2 440.3 440.4 440.5 440.6 440.7 440.8 440.9 441 + Bin 1441: 441 441.1 441.2 441.3 441.4 441.5 441.6 441.7 441.8 441.9 442 + Bin 1442: 442 442.1 442.2 442.3 442.4 442.5 442.6 442.7 442.8 442.9 443 + Bin 1443: 443 443.1 443.2 443.3 443.4 443.5 443.6 443.7 443.8 443.9 444 + Bin 1444: 444 444.1 444.2 444.3 444.4 444.5 444.6 444.7 444.8 444.9 445 + Bin 1445: 445 445.1 445.2 445.3 445.4 445.5 445.6 445.7 445.8 445.9 446 + Bin 1446: 446 446.1 446.2 446.3 446.4 446.5 446.6 446.7 446.8 446.9 447 + Bin 1447: 447 447.1 447.2 447.3 447.4 447.5 447.6 447.7 447.8 447.9 448 + Bin 1448: 448 448.1 448.2 448.3 448.4 448.5 448.6 448.7 448.8 448.9 449 + Bin 1449: 449 449.1 449.2 449.3 449.4 449.5 449.6 449.7 449.8 449.9 450 + Bin 1450: 450 450.1 450.2 450.3 450.4 450.5 450.6 450.7 450.8 450.9 451 + Bin 1451: 451 451.1 451.2 451.3 451.4 451.5 451.6 451.7 451.8 451.9 452 + Bin 1452: 452 452.1 452.2 452.3 452.4 452.5 452.6 452.7 452.8 452.9 453 + Bin 1453: 453 453.1 453.2 453.3 453.4 453.5 453.6 453.7 453.8 453.9 454 + Bin 1454: 454 454.1 454.2 454.3 454.4 454.5 454.6 454.7 454.8 454.9 455 + Bin 1455: 455 455.1 455.2 455.3 455.4 455.5 455.6 455.7 455.8 455.9 456 + Bin 1456: 456 456.1 456.2 456.3 456.4 456.5 456.6 456.7 456.8 456.9 457 + Bin 1457: 457 457.1 457.2 457.3 457.4 457.5 457.6 457.7 457.8 457.9 458 + Bin 1458: 458 458.1 458.2 458.3 458.4 458.5 458.6 458.7 458.8 458.9 459 + Bin 1459: 459 459.1 459.2 459.3 459.4 459.5 459.6 459.7 459.8 459.9 460 + Bin 1460: 460 460.1 460.2 460.3 460.4 460.5 460.6 460.7 460.8 460.9 461 + Bin 1461: 461 461.1 461.2 461.3 461.4 461.5 461.6 461.7 461.8 461.9 462 + Bin 1462: 462 462.1 462.2 462.3 462.4 462.5 462.6 462.7 462.8 462.9 463 + Bin 1463: 463 463.1 463.2 463.3 463.4 463.5 463.6 463.7 463.8 463.9 464 + Bin 1464: 464 464.1 464.2 464.3 464.4 464.5 464.6 464.7 464.8 464.9 465 + Bin 1465: 465 465.1 465.2 465.3 465.4 465.5 465.6 465.7 465.8 465.9 466 + Bin 1466: 466 466.1 466.2 466.3 466.4 466.5 466.6 466.7 466.8 466.9 467 + Bin 1467: 467 467.1 467.2 467.3 467.4 467.5 467.6 467.7 467.8 467.9 468 + Bin 1468: 468 468.1 468.2 468.3 468.4 468.5 468.6 468.7 468.8 468.9 469 + Bin 1469: 469 469.1 469.2 469.3 469.4 469.5 469.6 469.7 469.8 469.9 470 + Bin 1470: 470 470.1 470.2 470.3 470.4 470.5 470.6 470.7 470.8 470.9 471 + Bin 1471: 471 471.1 471.2 471.3 471.4 471.5 471.6 471.7 471.8 471.9 472 + Bin 1472: 472 472.1 472.2 472.3 472.4 472.5 472.6 472.7 472.8 472.9 473 + Bin 1473: 473 473.1 473.2 473.3 473.4 473.5 473.6 473.7 473.8 473.9 474 + Bin 1474: 474 474.1 474.2 474.3 474.4 474.5 474.6 474.7 474.8 474.9 475 + Bin 1475: 475 475.1 475.2 475.3 475.4 475.5 475.6 475.7 475.8 475.9 476 + Bin 1476: 476 476.1 476.2 476.3 476.4 476.5 476.6 476.7 476.8 476.9 477 + Bin 1477: 477 477.1 477.2 477.3 477.4 477.5 477.6 477.7 477.8 477.9 478 + Bin 1478: 478 478.1 478.2 478.3 478.4 478.5 478.6 478.7 478.8 478.9 479 + Bin 1479: 479 479.1 479.2 479.3 479.4 479.5 479.6 479.7 479.8 479.9 480 + Bin 1480: 480 480.1 480.2 480.3 480.4 480.5 480.6 480.7 480.8 480.9 481 + Bin 1481: 481 481.1 481.2 481.3 481.4 481.5 481.6 481.7 481.8 481.9 482 + Bin 1482: 482 482.1 482.2 482.3 482.4 482.5 482.6 482.7 482.8 482.9 483 + Bin 1483: 483 483.1 483.2 483.3 483.4 483.5 483.6 483.7 483.8 483.9 484 + Bin 1484: 484 484.1 484.2 484.3 484.4 484.5 484.6 484.7 484.8 484.9 485 + Bin 1485: 485 485.1 485.2 485.3 485.4 485.5 485.6 485.7 485.8 485.9 486 + Bin 1486: 486 486.1 486.2 486.3 486.4 486.5 486.6 486.7 486.8 486.9 487 + Bin 1487: 487 487.1 487.2 487.3 487.4 487.5 487.6 487.7 487.8 487.9 488 + Bin 1488: 488 488.1 488.2 488.3 488.4 488.5 488.6 488.7 488.8 488.9 489 + Bin 1489: 489 489.1 489.2 489.3 489.4 489.5 489.6 489.7 489.8 489.9 490 + Bin 1490: 490 490.1 490.2 490.3 490.4 490.5 490.6 490.7 490.8 490.9 491 + Bin 1491: 491 491.1 491.2 491.3 491.4 491.5 491.6 491.7 491.8 491.9 492 + Bin 1492: 492 492.1 492.2 492.3 492.4 492.5 492.6 492.7 492.8 492.9 493 + Bin 1493: 493 493.1 493.2 493.3 493.4 493.5 493.6 493.7 493.8 493.9 494 + Bin 1494: 494 494.1 494.2 494.3 494.4 494.5 494.6 494.7 494.8 494.9 495 + Bin 1495: 495 495.1 495.2 495.3 495.4 495.5 495.6 495.7 495.8 495.9 496 + Bin 1496: 496 496.1 496.2 496.3 496.4 496.5 496.6 496.7 496.8 496.9 497 + Bin 1497: 497 497.1 497.2 497.3 497.4 497.5 497.6 497.7 497.8 497.9 498 + Bin 1498: 498 498.1 498.2 498.3 498.4 498.5 498.6 498.7 498.8 498.9 499 + Bin 1499: 499 499.1 499.2 499.3 499.4 499.5 499.6 499.7 499.8 499.9 500 + Bin 1500: 500 500.1 500.2 500.3 500.4 500.5 500.6 500.7 500.8 500.9 501 + Bin 1501: 501 501.1 501.2 501.3 501.4 501.5 501.6 501.7 501.8 501.9 502 + Bin 1502: 502 502.1 502.2 502.3 502.4 502.5 502.6 502.7 502.8 502.9 503 + Bin 1503: 503 503.1 503.2 503.3 503.4 503.5 503.6 503.7 503.8 503.9 504 + Bin 1504: 504 504.1 504.2 504.3 504.4 504.5 504.6 504.7 504.8 504.9 505 + Bin 1505: 505 505.1 505.2 505.3 505.4 505.5 505.6 505.7 505.8 505.9 506 + Bin 1506: 506 506.1 506.2 506.3 506.4 506.5 506.6 506.7 506.8 506.9 507 + Bin 1507: 507 507.1 507.2 507.3 507.4 507.5 507.6 507.7 507.8 507.9 508 + Bin 1508: 508 508.1 508.2 508.3 508.4 508.5 508.6 508.7 508.8 508.9 509 + Bin 1509: 509 509.1 509.2 509.3 509.4 509.5 509.6 509.7 509.8 509.9 510 + Bin 1510: 510 510.1 510.2 510.3 510.4 510.5 510.6 510.7 510.8 510.9 511 + Bin 1511: 511 511.1 511.2 511.3 511.4 511.5 511.6 511.7 511.8 511.9 512 + Bin 1512: 512 512.1 512.2 512.3 512.4 512.5 512.6 512.7 512.8 512.9 513 + Bin 1513: 513 513.1 513.2 513.3 513.4 513.5 513.6 513.7 513.8 513.9 514 + Bin 1514: 514 514.1 514.2 514.3 514.4 514.5 514.6 514.7 514.8 514.9 515 + Bin 1515: 515 515.1 515.2 515.3 515.4 515.5 515.6 515.7 515.8 515.9 516 + Bin 1516: 516 516.1 516.2 516.3 516.4 516.5 516.6 516.7 516.8 516.9 517 + Bin 1517: 517 517.1 517.2 517.3 517.4 517.5 517.6 517.7 517.8 517.9 518 + Bin 1518: 518 518.1 518.2 518.3 518.4 518.5 518.6 518.7 518.8 518.9 519 + Bin 1519: 519 519.1 519.2 519.3 519.4 519.5 519.6 519.7 519.8 519.9 520 + Bin 1520: 520 520.1 520.2 520.3 520.4 520.5 520.6 520.7 520.8 520.9 521 + Bin 1521: 521 521.1 521.2 521.3 521.4 521.5 521.6 521.7 521.8 521.9 522 + Bin 1522: 522 522.1 522.2 522.3 522.4 522.5 522.6 522.7 522.8 522.9 523 + Bin 1523: 523 523.1 523.2 523.3 523.4 523.5 523.6 523.7 523.8 523.9 524 + Bin 1524: 524 524.1 524.2 524.3 524.4 524.5 524.6 524.7 524.8 524.9 525 + Bin 1525: 525 525.1 525.2 525.3 525.4 525.5 525.6 525.7 525.8 525.9 526 + Bin 1526: 526 526.1 526.2 526.3 526.4 526.5 526.6 526.7 526.8 526.9 527 + Bin 1527: 527 527.1 527.2 527.3 527.4 527.5 527.6 527.7 527.8 527.9 528 + Bin 1528: 528 528.1 528.2 528.3 528.4 528.5 528.6 528.7 528.8 528.9 529 + Bin 1529: 529 529.1 529.2 529.3 529.4 529.5 529.6 529.7 529.8 529.9 530 + Bin 1530: 530 530.1 530.2 530.3 530.4 530.5 530.6 530.7 530.8 530.9 531 + Bin 1531: 531 531.1 531.2 531.3 531.4 531.5 531.6 531.7 531.8 531.9 532 + Bin 1532: 532 532.1 532.2 532.3 532.4 532.5 532.6 532.7 532.8 532.9 533 + Bin 1533: 533 533.1 533.2 533.3 533.4 533.5 533.6 533.7 533.8 533.9 534 + Bin 1534: 534 534.1 534.2 534.3 534.4 534.5 534.6 534.7 534.8 534.9 535 + Bin 1535: 535 535.1 535.2 535.3 535.4 535.5 535.6 535.7 535.8 535.9 536 + Bin 1536: 536 536.1 536.2 536.3 536.4 536.5 536.6 536.7 536.8 536.9 537 + Bin 1537: 537 537.1 537.2 537.3 537.4 537.5 537.6 537.7 537.8 537.9 538 + Bin 1538: 538 538.1 538.2 538.3 538.4 538.5 538.6 538.7 538.8 538.9 539 + Bin 1539: 539 539.1 539.2 539.3 539.4 539.5 539.6 539.7 539.8 539.9 540 + Bin 1540: 540 540.1 540.2 540.3 540.4 540.5 540.6 540.7 540.8 540.9 541 + Bin 1541: 541 541.1 541.2 541.3 541.4 541.5 541.6 541.7 541.8 541.9 542 + Bin 1542: 542 542.1 542.2 542.3 542.4 542.5 542.6 542.7 542.8 542.9 543 + Bin 1543: 543 543.1 543.2 543.3 543.4 543.5 543.6 543.7 543.8 543.9 544 + Bin 1544: 544 544.1 544.2 544.3 544.4 544.5 544.6 544.7 544.8 544.9 545 + Bin 1545: 545 545.1 545.2 545.3 545.4 545.5 545.6 545.7 545.8 545.9 546 + Bin 1546: 546 546.1 546.2 546.3 546.4 546.5 546.6 546.7 546.8 546.9 547 + Bin 1547: 547 547.1 547.2 547.3 547.4 547.5 547.6 547.7 547.8 547.9 548 + Bin 1548: 548 548.1 548.2 548.3 548.4 548.5 548.6 548.7 548.8 548.9 549 + Bin 1549: 549 549.1 549.2 549.3 549.4 549.5 549.6 549.7 549.8 549.9 550 + Bin 1550: 550 550.1 550.2 550.3 550.4 550.5 550.6 550.7 550.8 550.9 551 + Bin 1551: 551 551.1 551.2 551.3 551.4 551.5 551.6 551.7 551.8 551.9 552 + Bin 1552: 552 552.1 552.2 552.3 552.4 552.5 552.6 552.7 552.8 552.9 553 + Bin 1553: 553 553.1 553.2 553.3 553.4 553.5 553.6 553.7 553.8 553.9 554 + Bin 1554: 554 554.1 554.2 554.3 554.4 554.5 554.6 554.7 554.8 554.9 555 + Bin 1555: 555 555.1 555.2 555.3 555.4 555.5 555.6 555.7 555.8 555.9 556 + Bin 1556: 556 556.1 556.2 556.3 556.4 556.5 556.6 556.7 556.8 556.9 557 + Bin 1557: 557 557.1 557.2 557.3 557.4 557.5 557.6 557.7 557.8 557.9 558 + Bin 1558: 558 558.1 558.2 558.3 558.4 558.5 558.6 558.7 558.8 558.9 559 + Bin 1559: 559 559.1 559.2 559.3 559.4 559.5 559.6 559.7 559.8 559.9 560 + Bin 1560: 560 560.1 560.2 560.3 560.4 560.5 560.6 560.7 560.8 560.9 561 + Bin 1561: 561 561.1 561.2 561.3 561.4 561.5 561.6 561.7 561.8 561.9 562 + Bin 1562: 562 562.1 562.2 562.3 562.4 562.5 562.6 562.7 562.8 562.9 563 + Bin 1563: 563 563.1 563.2 563.3 563.4 563.5 563.6 563.7 563.8 563.9 564 + Bin 1564: 564 564.1 564.2 564.3 564.4 564.5 564.6 564.7 564.8 564.9 565 + Bin 1565: 565 565.1 565.2 565.3 565.4 565.5 565.6 565.7 565.8 565.9 566 + Bin 1566: 566 566.1 566.2 566.3 566.4 566.5 566.6 566.7 566.8 566.9 567 + Bin 1567: 567 567.1 567.2 567.3 567.4 567.5 567.6 567.7 567.8 567.9 568 + Bin 1568: 568 568.1 568.2 568.3 568.4 568.5 568.6 568.7 568.8 568.9 569 + Bin 1569: 569 569.1 569.2 569.3 569.4 569.5 569.6 569.7 569.8 569.9 570 + Bin 1570: 570 570.1 570.2 570.3 570.4 570.5 570.6 570.7 570.8 570.9 571 + Bin 1571: 571 571.1 571.2 571.3 571.4 571.5 571.6 571.7 571.8 571.9 572 + Bin 1572: 572 572.1 572.2 572.3 572.4 572.5 572.6 572.7 572.8 572.9 573 + Bin 1573: 573 573.1 573.2 573.3 573.4 573.5 573.6 573.7 573.8 573.9 574 + Bin 1574: 574 574.1 574.2 574.3 574.4 574.5 574.6 574.7 574.8 574.9 575 + Bin 1575: 575 575.1 575.2 575.3 575.4 575.5 575.6 575.7 575.8 575.9 576 + Bin 1576: 576 576.1 576.2 576.3 576.4 576.5 576.6 576.7 576.8 576.9 577 + Bin 1577: 577 577.1 577.2 577.3 577.4 577.5 577.6 577.7 577.8 577.9 578 + Bin 1578: 578 578.1 578.2 578.3 578.4 578.5 578.6 578.7 578.8 578.9 579 + Bin 1579: 579 579.1 579.2 579.3 579.4 579.5 579.6 579.7 579.8 579.9 580 + Bin 1580: 580 580.1 580.2 580.3 580.4 580.5 580.6 580.7 580.8 580.9 581 + Bin 1581: 581 581.1 581.2 581.3 581.4 581.5 581.6 581.7 581.8 581.9 582 + Bin 1582: 582 582.1 582.2 582.3 582.4 582.5 582.6 582.7 582.8 582.9 583 + Bin 1583: 583 583.1 583.2 583.3 583.4 583.5 583.6 583.7 583.8 583.9 584 + Bin 1584: 584 584.1 584.2 584.3 584.4 584.5 584.6 584.7 584.8 584.9 585 + Bin 1585: 585 585.1 585.2 585.3 585.4 585.5 585.6 585.7 585.8 585.9 586 + Bin 1586: 586 586.1 586.2 586.3 586.4 586.5 586.6 586.7 586.8 586.9 587 + Bin 1587: 587 587.1 587.2 587.3 587.4 587.5 587.6 587.7 587.8 587.9 588 + Bin 1588: 588 588.1 588.2 588.3 588.4 588.5 588.6 588.7 588.8 588.9 589 + Bin 1589: 589 589.1 589.2 589.3 589.4 589.5 589.6 589.7 589.8 589.9 590 + Bin 1590: 590 590.1 590.2 590.3 590.4 590.5 590.6 590.7 590.8 590.9 591 + Bin 1591: 591 591.1 591.2 591.3 591.4 591.5 591.6 591.7 591.8 591.9 592 + Bin 1592: 592 592.1 592.2 592.3 592.4 592.5 592.6 592.7 592.8 592.9 593 + Bin 1593: 593 593.1 593.2 593.3 593.4 593.5 593.6 593.7 593.8 593.9 594 + Bin 1594: 594 594.1 594.2 594.3 594.4 594.5 594.6 594.7 594.8 594.9 595 + Bin 1595: 595 595.1 595.2 595.3 595.4 595.5 595.6 595.7 595.8 595.9 596 + Bin 1596: 596 596.1 596.2 596.3 596.4 596.5 596.6 596.7 596.8 596.9 597 + Bin 1597: 597 597.1 597.2 597.3 597.4 597.5 597.6 597.7 597.8 597.9 598 + Bin 1598: 598 598.1 598.2 598.3 598.4 598.5 598.6 598.7 598.8 598.9 599 + Bin 1599: 599 599.1 599.2 599.3 599.4 599.5 599.6 599.7 599.8 599.9 600 + Bin 1600: 600 600.1 600.2 600.3 600.4 600.5 600.6 600.7 600.8 600.9 601 + Bin 1601: 601 601.1 601.2 601.3 601.4 601.5 601.6 601.7 601.8 601.9 602 + Bin 1602: 602 602.1 602.2 602.3 602.4 602.5 602.6 602.7 602.8 602.9 603 + Bin 1603: 603 603.1 603.2 603.3 603.4 603.5 603.6 603.7 603.8 603.9 604 + Bin 1604: 604 604.1 604.2 604.3 604.4 604.5 604.6 604.7 604.8 604.9 605 + Bin 1605: 605 605.1 605.2 605.3 605.4 605.5 605.6 605.7 605.8 605.9 606 + Bin 1606: 606 606.1 606.2 606.3 606.4 606.5 606.6 606.7 606.8 606.9 607 + Bin 1607: 607 607.1 607.2 607.3 607.4 607.5 607.6 607.7 607.8 607.9 608 + Bin 1608: 608 608.1 608.2 608.3 608.4 608.5 608.6 608.7 608.8 608.9 609 + Bin 1609: 609 609.1 609.2 609.3 609.4 609.5 609.6 609.7 609.8 609.9 610 + Bin 1610: 610 610.1 610.2 610.3 610.4 610.5 610.6 610.7 610.8 610.9 611 + Bin 1611: 611 611.1 611.2 611.3 611.4 611.5 611.6 611.7 611.8 611.9 612 + Bin 1612: 612 612.1 612.2 612.3 612.4 612.5 612.6 612.7 612.8 612.9 613 + Bin 1613: 613 613.1 613.2 613.3 613.4 613.5 613.6 613.7 613.8 613.9 614 + Bin 1614: 614 614.1 614.2 614.3 614.4 614.5 614.6 614.7 614.8 614.9 615 + Bin 1615: 615 615.1 615.2 615.3 615.4 615.5 615.6 615.7 615.8 615.9 616 + Bin 1616: 616 616.1 616.2 616.3 616.4 616.5 616.6 616.7 616.8 616.9 617 + Bin 1617: 617 617.1 617.2 617.3 617.4 617.5 617.6 617.7 617.8 617.9 618 + Bin 1618: 618 618.1 618.2 618.3 618.4 618.5 618.6 618.7 618.8 618.9 619 + Bin 1619: 619 619.1 619.2 619.3 619.4 619.5 619.6 619.7 619.8 619.9 620 + Bin 1620: 620 620.1 620.2 620.3 620.4 620.5 620.6 620.7 620.8 620.9 621 + Bin 1621: 621 621.1 621.2 621.3 621.4 621.5 621.6 621.7 621.8 621.9 622 + Bin 1622: 622 622.1 622.2 622.3 622.4 622.5 622.6 622.7 622.8 622.9 623 + Bin 1623: 623 623.1 623.2 623.3 623.4 623.5 623.6 623.7 623.8 623.9 624 + Bin 1624: 624 624.1 624.2 624.3 624.4 624.5 624.6 624.7 624.8 624.9 625 + Bin 1625: 625 625.1 625.2 625.3 625.4 625.5 625.6 625.7 625.8 625.9 626 + Bin 1626: 626 626.1 626.2 626.3 626.4 626.5 626.6 626.7 626.8 626.9 627 + Bin 1627: 627 627.1 627.2 627.3 627.4 627.5 627.6 627.7 627.8 627.9 628 + Bin 1628: 628 628.1 628.2 628.3 628.4 628.5 628.6 628.7 628.8 628.9 629 + Bin 1629: 629 629.1 629.2 629.3 629.4 629.5 629.6 629.7 629.8 629.9 630 + Bin 1630: 630 630.1 630.2 630.3 630.4 630.5 630.6 630.7 630.8 630.9 631 + Bin 1631: 631 631.1 631.2 631.3 631.4 631.5 631.6 631.7 631.8 631.9 632 + Bin 1632: 632 632.1 632.2 632.3 632.4 632.5 632.6 632.7 632.8 632.9 633 + Bin 1633: 633 633.1 633.2 633.3 633.4 633.5 633.6 633.7 633.8 633.9 634 + Bin 1634: 634 634.1 634.2 634.3 634.4 634.5 634.6 634.7 634.8 634.9 635 + Bin 1635: 635 635.1 635.2 635.3 635.4 635.5 635.6 635.7 635.8 635.9 636 + Bin 1636: 636 636.1 636.2 636.3 636.4 636.5 636.6 636.7 636.8 636.9 637 + Bin 1637: 637 637.1 637.2 637.3 637.4 637.5 637.6 637.7 637.8 637.9 638 + Bin 1638: 638 638.1 638.2 638.3 638.4 638.5 638.6 638.7 638.8 638.9 639 + Bin 1639: 639 639.1 639.2 639.3 639.4 639.5 639.6 639.7 639.8 639.9 640 + Bin 1640: 640 640.1 640.2 640.3 640.4 640.5 640.6 640.7 640.8 640.9 641 + Bin 1641: 641 641.1 641.2 641.3 641.4 641.5 641.6 641.7 641.8 641.9 642 + Bin 1642: 642 642.1 642.2 642.3 642.4 642.5 642.6 642.7 642.8 642.9 643 + Bin 1643: 643 643.1 643.2 643.3 643.4 643.5 643.6 643.7 643.8 643.9 644 + Bin 1644: 644 644.1 644.2 644.3 644.4 644.5 644.6 644.7 644.8 644.9 645 + Bin 1645: 645 645.1 645.2 645.3 645.4 645.5 645.6 645.7 645.8 645.9 646 + Bin 1646: 646 646.1 646.2 646.3 646.4 646.5 646.6 646.7 646.8 646.9 647 + Bin 1647: 647 647.1 647.2 647.3 647.4 647.5 647.6 647.7 647.8 647.9 648 + Bin 1648: 648 648.1 648.2 648.3 648.4 648.5 648.6 648.7 648.8 648.9 649 + Bin 1649: 649 649.1 649.2 649.3 649.4 649.5 649.6 649.7 649.8 649.9 650 + Bin 1650: 650 650.1 650.2 650.3 650.4 650.5 650.6 650.7 650.8 650.9 651 + Bin 1651: 651 651.1 651.2 651.3 651.4 651.5 651.6 651.7 651.8 651.9 652 + Bin 1652: 652 652.1 652.2 652.3 652.4 652.5 652.6 652.7 652.8 652.9 653 + Bin 1653: 653 653.1 653.2 653.3 653.4 653.5 653.6 653.7 653.8 653.9 654 + Bin 1654: 654 654.1 654.2 654.3 654.4 654.5 654.6 654.7 654.8 654.9 655 + Bin 1655: 655 655.1 655.2 655.3 655.4 655.5 655.6 655.7 655.8 655.9 656 + Bin 1656: 656 656.1 656.2 656.3 656.4 656.5 656.6 656.7 656.8 656.9 657 + Bin 1657: 657 657.1 657.2 657.3 657.4 657.5 657.6 657.7 657.8 657.9 658 + Bin 1658: 658 658.1 658.2 658.3 658.4 658.5 658.6 658.7 658.8 658.9 659 + Bin 1659: 659 659.1 659.2 659.3 659.4 659.5 659.6 659.7 659.8 659.9 660 + Bin 1660: 660 660.1 660.2 660.3 660.4 660.5 660.6 660.7 660.8 660.9 661 + Bin 1661: 661 661.1 661.2 661.3 661.4 661.5 661.6 661.7 661.8 661.9 662 + Bin 1662: 662 662.1 662.2 662.3 662.4 662.5 662.6 662.7 662.8 662.9 663 + Bin 1663: 663 663.1 663.2 663.3 663.4 663.5 663.6 663.7 663.8 663.9 664 + Bin 1664: 664 664.1 664.2 664.3 664.4 664.5 664.6 664.7 664.8 664.9 665 + Bin 1665: 665 665.1 665.2 665.3 665.4 665.5 665.6 665.7 665.8 665.9 666 + Bin 1666: 666 666.1 666.2 666.3 666.4 666.5 666.6 666.7 666.8 666.9 667 + Bin 1667: 667 667.1 667.2 667.3 667.4 667.5 667.6 667.7 667.8 667.9 668 + Bin 1668: 668 668.1 668.2 668.3 668.4 668.5 668.6 668.7 668.8 668.9 669 + Bin 1669: 669 669.1 669.2 669.3 669.4 669.5 669.6 669.7 669.8 669.9 670 + Bin 1670: 670 670.1 670.2 670.3 670.4 670.5 670.6 670.7 670.8 670.9 671 + Bin 1671: 671 671.1 671.2 671.3 671.4 671.5 671.6 671.7 671.8 671.9 672 + Bin 1672: 672 672.1 672.2 672.3 672.4 672.5 672.6 672.7 672.8 672.9 673 + Bin 1673: 673 673.1 673.2 673.3 673.4 673.5 673.6 673.7 673.8 673.9 674 + Bin 1674: 674 674.1 674.2 674.3 674.4 674.5 674.6 674.7 674.8 674.9 675 + Bin 1675: 675 675.1 675.2 675.3 675.4 675.5 675.6 675.7 675.8 675.9 676 + Bin 1676: 676 676.1 676.2 676.3 676.4 676.5 676.6 676.7 676.8 676.9 677 + Bin 1677: 677 677.1 677.2 677.3 677.4 677.5 677.6 677.7 677.8 677.9 678 + Bin 1678: 678 678.1 678.2 678.3 678.4 678.5 678.6 678.7 678.8 678.9 679 + Bin 1679: 679 679.1 679.2 679.3 679.4 679.5 679.6 679.7 679.8 679.9 680 + Bin 1680: 680 680.1 680.2 680.3 680.4 680.5 680.6 680.7 680.8 680.9 681 + Bin 1681: 681 681.1 681.2 681.3 681.4 681.5 681.6 681.7 681.8 681.9 682 + Bin 1682: 682 682.1 682.2 682.3 682.4 682.5 682.6 682.7 682.8 682.9 683 + Bin 1683: 683 683.1 683.2 683.3 683.4 683.5 683.6 683.7 683.8 683.9 684 + Bin 1684: 684 684.1 684.2 684.3 684.4 684.5 684.6 684.7 684.8 684.9 685 + Bin 1685: 685 685.1 685.2 685.3 685.4 685.5 685.6 685.7 685.8 685.9 686 + Bin 1686: 686 686.1 686.2 686.3 686.4 686.5 686.6 686.7 686.8 686.9 687 + Bin 1687: 687 687.1 687.2 687.3 687.4 687.5 687.6 687.7 687.8 687.9 688 + Bin 1688: 688 688.1 688.2 688.3 688.4 688.5 688.6 688.7 688.8 688.9 689 + Bin 1689: 689 689.1 689.2 689.3 689.4 689.5 689.6 689.7 689.8 689.9 690 + Bin 1690: 690 690.1 690.2 690.3 690.4 690.5 690.6 690.7 690.8 690.9 691 + Bin 1691: 691 691.1 691.2 691.3 691.4 691.5 691.6 691.7 691.8 691.9 692 + Bin 1692: 692 692.1 692.2 692.3 692.4 692.5 692.6 692.7 692.8 692.9 693 + Bin 1693: 693 693.1 693.2 693.3 693.4 693.5 693.6 693.7 693.8 693.9 694 + Bin 1694: 694 694.1 694.2 694.3 694.4 694.5 694.6 694.7 694.8 694.9 695 + Bin 1695: 695 695.1 695.2 695.3 695.4 695.5 695.6 695.7 695.8 695.9 696 + Bin 1696: 696 696.1 696.2 696.3 696.4 696.5 696.6 696.7 696.8 696.9 697 + Bin 1697: 697 697.1 697.2 697.3 697.4 697.5 697.6 697.7 697.8 697.9 698 + Bin 1698: 698 698.1 698.2 698.3 698.4 698.5 698.6 698.7 698.8 698.9 699 + Bin 1699: 699 699.1 699.2 699.3 699.4 699.5 699.6 699.7 699.8 699.9 700 + Bin 1700: 700 700.1 700.2 700.3 700.4 700.5 700.6 700.7 700.8 700.9 701 + Bin 1701: 701 701.1 701.2 701.3 701.4 701.5 701.6 701.7 701.8 701.9 702 + Bin 1702: 702 702.1 702.2 702.3 702.4 702.5 702.6 702.7 702.8 702.9 703 + Bin 1703: 703 703.1 703.2 703.3 703.4 703.5 703.6 703.7 703.8 703.9 704 + Bin 1704: 704 704.1 704.2 704.3 704.4 704.5 704.6 704.7 704.8 704.9 705 + Bin 1705: 705 705.1 705.2 705.3 705.4 705.5 705.6 705.7 705.8 705.9 706 + Bin 1706: 706 706.1 706.2 706.3 706.4 706.5 706.6 706.7 706.8 706.9 707 + Bin 1707: 707 707.1 707.2 707.3 707.4 707.5 707.6 707.7 707.8 707.9 708 + Bin 1708: 708 708.1 708.2 708.3 708.4 708.5 708.6 708.7 708.8 708.9 709 + Bin 1709: 709 709.1 709.2 709.3 709.4 709.5 709.6 709.7 709.8 709.9 710 + Bin 1710: 710 710.1 710.2 710.3 710.4 710.5 710.6 710.7 710.8 710.9 711 + Bin 1711: 711 711.1 711.2 711.3 711.4 711.5 711.6 711.7 711.8 711.9 712 + Bin 1712: 712 712.1 712.2 712.3 712.4 712.5 712.6 712.7 712.8 712.9 713 + Bin 1713: 713 713.1 713.2 713.3 713.4 713.5 713.6 713.7 713.8 713.9 714 + Bin 1714: 714 714.1 714.2 714.3 714.4 714.5 714.6 714.7 714.8 714.9 715 + Bin 1715: 715 715.1 715.2 715.3 715.4 715.5 715.6 715.7 715.8 715.9 716 + Bin 1716: 716 716.1 716.2 716.3 716.4 716.5 716.6 716.7 716.8 716.9 717 + Bin 1717: 717 717.1 717.2 717.3 717.4 717.5 717.6 717.7 717.8 717.9 718 + Bin 1718: 718 718.1 718.2 718.3 718.4 718.5 718.6 718.7 718.8 718.9 719 + Bin 1719: 719 719.1 719.2 719.3 719.4 719.5 719.6 719.7 719.8 719.9 720 + Bin 1720: 720 720.1 720.2 720.3 720.4 720.5 720.6 720.7 720.8 720.9 721 + Bin 1721: 721 721.1 721.2 721.3 721.4 721.5 721.6 721.7 721.8 721.9 722 + Bin 1722: 722 722.1 722.2 722.3 722.4 722.5 722.6 722.7 722.8 722.9 723 + Bin 1723: 723 723.1 723.2 723.3 723.4 723.5 723.6 723.7 723.8 723.9 724 + Bin 1724: 724 724.1 724.2 724.3 724.4 724.5 724.6 724.7 724.8 724.9 725 + Bin 1725: 725 725.1 725.2 725.3 725.4 725.5 725.6 725.7 725.8 725.9 726 + Bin 1726: 726 726.1 726.2 726.3 726.4 726.5 726.6 726.7 726.8 726.9 727 + Bin 1727: 727 727.1 727.2 727.3 727.4 727.5 727.6 727.7 727.8 727.9 728 + Bin 1728: 728 728.1 728.2 728.3 728.4 728.5 728.6 728.7 728.8 728.9 729 + Bin 1729: 729 729.1 729.2 729.3 729.4 729.5 729.6 729.7 729.8 729.9 730 + Bin 1730: 730 730.1 730.2 730.3 730.4 730.5 730.6 730.7 730.8 730.9 731 + Bin 1731: 731 731.1 731.2 731.3 731.4 731.5 731.6 731.7 731.8 731.9 732 + Bin 1732: 732 732.1 732.2 732.3 732.4 732.5 732.6 732.7 732.8 732.9 733 + Bin 1733: 733 733.1 733.2 733.3 733.4 733.5 733.6 733.7 733.8 733.9 734 + Bin 1734: 734 734.1 734.2 734.3 734.4 734.5 734.6 734.7 734.8 734.9 735 + Bin 1735: 735 735.1 735.2 735.3 735.4 735.5 735.6 735.7 735.8 735.9 736 + Bin 1736: 736 736.1 736.2 736.3 736.4 736.5 736.6 736.7 736.8 736.9 737 + Bin 1737: 737 737.1 737.2 737.3 737.4 737.5 737.6 737.7 737.8 737.9 738 + Bin 1738: 738 738.1 738.2 738.3 738.4 738.5 738.6 738.7 738.8 738.9 739 + Bin 1739: 739 739.1 739.2 739.3 739.4 739.5 739.6 739.7 739.8 739.9 740 + Bin 1740: 740 740.1 740.2 740.3 740.4 740.5 740.6 740.7 740.8 740.9 741 + Bin 1741: 741 741.1 741.2 741.3 741.4 741.5 741.6 741.7 741.8 741.9 742 + Bin 1742: 742 742.1 742.2 742.3 742.4 742.5 742.6 742.7 742.8 742.9 743 + Bin 1743: 743 743.1 743.2 743.3 743.4 743.5 743.6 743.7 743.8 743.9 744 + Bin 1744: 744 744.1 744.2 744.3 744.4 744.5 744.6 744.7 744.8 744.9 745 + Bin 1745: 745 745.1 745.2 745.3 745.4 745.5 745.6 745.7 745.8 745.9 746 + Bin 1746: 746 746.1 746.2 746.3 746.4 746.5 746.6 746.7 746.8 746.9 747 + Bin 1747: 747 747.1 747.2 747.3 747.4 747.5 747.6 747.7 747.8 747.9 748 + Bin 1748: 748 748.1 748.2 748.3 748.4 748.5 748.6 748.7 748.8 748.9 749 + Bin 1749: 749 749.1 749.2 749.3 749.4 749.5 749.6 749.7 749.8 749.9 750 + Bin 1750: 750 750.1 750.2 750.3 750.4 750.5 750.6 750.7 750.8 750.9 751 + Bin 1751: 751 751.1 751.2 751.3 751.4 751.5 751.6 751.7 751.8 751.9 752 + Bin 1752: 752 752.1 752.2 752.3 752.4 752.5 752.6 752.7 752.8 752.9 753 + Bin 1753: 753 753.1 753.2 753.3 753.4 753.5 753.6 753.7 753.8 753.9 754 + Bin 1754: 754 754.1 754.2 754.3 754.4 754.5 754.6 754.7 754.8 754.9 755 + Bin 1755: 755 755.1 755.2 755.3 755.4 755.5 755.6 755.7 755.8 755.9 756 + Bin 1756: 756 756.1 756.2 756.3 756.4 756.5 756.6 756.7 756.8 756.9 757 + Bin 1757: 757 757.1 757.2 757.3 757.4 757.5 757.6 757.7 757.8 757.9 758 + Bin 1758: 758 758.1 758.2 758.3 758.4 758.5 758.6 758.7 758.8 758.9 759 + Bin 1759: 759 759.1 759.2 759.3 759.4 759.5 759.6 759.7 759.8 759.9 760 + Bin 1760: 760 760.1 760.2 760.3 760.4 760.5 760.6 760.7 760.8 760.9 761 + Bin 1761: 761 761.1 761.2 761.3 761.4 761.5 761.6 761.7 761.8 761.9 762 + Bin 1762: 762 762.1 762.2 762.3 762.4 762.5 762.6 762.7 762.8 762.9 763 + Bin 1763: 763 763.1 763.2 763.3 763.4 763.5 763.6 763.7 763.8 763.9 764 + Bin 1764: 764 764.1 764.2 764.3 764.4 764.5 764.6 764.7 764.8 764.9 765 + Bin 1765: 765 765.1 765.2 765.3 765.4 765.5 765.6 765.7 765.8 765.9 766 + Bin 1766: 766 766.1 766.2 766.3 766.4 766.5 766.6 766.7 766.8 766.9 767 + Bin 1767: 767 767.1 767.2 767.3 767.4 767.5 767.6 767.7 767.8 767.9 768 + Bin 1768: 768 768.1 768.2 768.3 768.4 768.5 768.6 768.7 768.8 768.9 769 + Bin 1769: 769 769.1 769.2 769.3 769.4 769.5 769.6 769.7 769.8 769.9 770 + Bin 1770: 770 770.1 770.2 770.3 770.4 770.5 770.6 770.7 770.8 770.9 771 + Bin 1771: 771 771.1 771.2 771.3 771.4 771.5 771.6 771.7 771.8 771.9 772 + Bin 1772: 772 772.1 772.2 772.3 772.4 772.5 772.6 772.7 772.8 772.9 773 + Bin 1773: 773 773.1 773.2 773.3 773.4 773.5 773.6 773.7 773.8 773.9 774 + Bin 1774: 774 774.1 774.2 774.3 774.4 774.5 774.6 774.7 774.8 774.9 775 + Bin 1775: 775 775.1 775.2 775.3 775.4 775.5 775.6 775.7 775.8 775.9 776 + Bin 1776: 776 776.1 776.2 776.3 776.4 776.5 776.6 776.7 776.8 776.9 777 + Bin 1777: 777 777.1 777.2 777.3 777.4 777.5 777.6 777.7 777.8 777.9 778 + Bin 1778: 778 778.1 778.2 778.3 778.4 778.5 778.6 778.7 778.8 778.9 779 + Bin 1779: 779 779.1 779.2 779.3 779.4 779.5 779.6 779.7 779.8 779.9 780 + Bin 1780: 780 780.1 780.2 780.3 780.4 780.5 780.6 780.7 780.8 780.9 781 + Bin 1781: 781 781.1 781.2 781.3 781.4 781.5 781.6 781.7 781.8 781.9 782 + Bin 1782: 782 782.1 782.2 782.3 782.4 782.5 782.6 782.7 782.8 782.9 783 + Bin 1783: 783 783.1 783.2 783.3 783.4 783.5 783.6 783.7 783.8 783.9 784 + Bin 1784: 784 784.1 784.2 784.3 784.4 784.5 784.6 784.7 784.8 784.9 785 + Bin 1785: 785 785.1 785.2 785.3 785.4 785.5 785.6 785.7 785.8 785.9 786 + Bin 1786: 786 786.1 786.2 786.3 786.4 786.5 786.6 786.7 786.8 786.9 787 + Bin 1787: 787 787.1 787.2 787.3 787.4 787.5 787.6 787.7 787.8 787.9 788 + Bin 1788: 788 788.1 788.2 788.3 788.4 788.5 788.6 788.7 788.8 788.9 789 + Bin 1789: 789 789.1 789.2 789.3 789.4 789.5 789.6 789.7 789.8 789.9 790 + Bin 1790: 790 790.1 790.2 790.3 790.4 790.5 790.6 790.7 790.8 790.9 791 + Bin 1791: 791 791.1 791.2 791.3 791.4 791.5 791.6 791.7 791.8 791.9 792 + Bin 1792: 792 792.1 792.2 792.3 792.4 792.5 792.6 792.7 792.8 792.9 793 + Bin 1793: 793 793.1 793.2 793.3 793.4 793.5 793.6 793.7 793.8 793.9 794 + Bin 1794: 794 794.1 794.2 794.3 794.4 794.5 794.6 794.7 794.8 794.9 795 + Bin 1795: 795 795.1 795.2 795.3 795.4 795.5 795.6 795.7 795.8 795.9 796 + Bin 1796: 796 796.1 796.2 796.3 796.4 796.5 796.6 796.7 796.8 796.9 797 + Bin 1797: 797 797.1 797.2 797.3 797.4 797.5 797.6 797.7 797.8 797.9 798 + Bin 1798: 798 798.1 798.2 798.3 798.4 798.5 798.6 798.7 798.8 798.9 799 + Bin 1799: 799 799.1 799.2 799.3 799.4 799.5 799.6 799.7 799.8 799.9 800 + Bin 1800: 800 800.1 800.2 800.3 800.4 800.5 800.6 800.7 800.8 800.9 801 + Bin 1801: 801 801.1 801.2 801.3 801.4 801.5 801.6 801.7 801.8 801.9 802 + Bin 1802: 802 802.1 802.2 802.3 802.4 802.5 802.6 802.7 802.8 802.9 803 + Bin 1803: 803 803.1 803.2 803.3 803.4 803.5 803.6 803.7 803.8 803.9 804 + Bin 1804: 804 804.1 804.2 804.3 804.4 804.5 804.6 804.7 804.8 804.9 805 + Bin 1805: 805 805.1 805.2 805.3 805.4 805.5 805.6 805.7 805.8 805.9 806 + Bin 1806: 806 806.1 806.2 806.3 806.4 806.5 806.6 806.7 806.8 806.9 807 + Bin 1807: 807 807.1 807.2 807.3 807.4 807.5 807.6 807.7 807.8 807.9 808 + Bin 1808: 808 808.1 808.2 808.3 808.4 808.5 808.6 808.7 808.8 808.9 809 + Bin 1809: 809 809.1 809.2 809.3 809.4 809.5 809.6 809.7 809.8 809.9 810 + Bin 1810: 810 810.1 810.2 810.3 810.4 810.5 810.6 810.7 810.8 810.9 811 + Bin 1811: 811 811.1 811.2 811.3 811.4 811.5 811.6 811.7 811.8 811.9 812 + Bin 1812: 812 812.1 812.2 812.3 812.4 812.5 812.6 812.7 812.8 812.9 813 + Bin 1813: 813 813.1 813.2 813.3 813.4 813.5 813.6 813.7 813.8 813.9 814 + Bin 1814: 814 814.1 814.2 814.3 814.4 814.5 814.6 814.7 814.8 814.9 815 + Bin 1815: 815 815.1 815.2 815.3 815.4 815.5 815.6 815.7 815.8 815.9 816 + Bin 1816: 816 816.1 816.2 816.3 816.4 816.5 816.6 816.7 816.8 816.9 817 + Bin 1817: 817 817.1 817.2 817.3 817.4 817.5 817.6 817.7 817.8 817.9 818 + Bin 1818: 818 818.1 818.2 818.3 818.4 818.5 818.6 818.7 818.8 818.9 819 + Bin 1819: 819 819.1 819.2 819.3 819.4 819.5 819.6 819.7 819.8 819.9 820 + Bin 1820: 820 820.1 820.2 820.3 820.4 820.5 820.6 820.7 820.8 820.9 821 + Bin 1821: 821 821.1 821.2 821.3 821.4 821.5 821.6 821.7 821.8 821.9 822 + Bin 1822: 822 822.1 822.2 822.3 822.4 822.5 822.6 822.7 822.8 822.9 823 + Bin 1823: 823 823.1 823.2 823.3 823.4 823.5 823.6 823.7 823.8 823.9 824 + Bin 1824: 824 824.1 824.2 824.3 824.4 824.5 824.6 824.7 824.8 824.9 825 + Bin 1825: 825 825.1 825.2 825.3 825.4 825.5 825.6 825.7 825.8 825.9 826 + Bin 1826: 826 826.1 826.2 826.3 826.4 826.5 826.6 826.7 826.8 826.9 827 + Bin 1827: 827 827.1 827.2 827.3 827.4 827.5 827.6 827.7 827.8 827.9 828 + Bin 1828: 828 828.1 828.2 828.3 828.4 828.5 828.6 828.7 828.8 828.9 829 + Bin 1829: 829 829.1 829.2 829.3 829.4 829.5 829.6 829.7 829.8 829.9 830 + Bin 1830: 830 830.1 830.2 830.3 830.4 830.5 830.6 830.7 830.8 830.9 831 + Bin 1831: 831 831.1 831.2 831.3 831.4 831.5 831.6 831.7 831.8 831.9 832 + Bin 1832: 832 832.1 832.2 832.3 832.4 832.5 832.6 832.7 832.8 832.9 833 + Bin 1833: 833 833.1 833.2 833.3 833.4 833.5 833.6 833.7 833.8 833.9 834 + Bin 1834: 834 834.1 834.2 834.3 834.4 834.5 834.6 834.7 834.8 834.9 835 + Bin 1835: 835 835.1 835.2 835.3 835.4 835.5 835.6 835.7 835.8 835.9 836 + Bin 1836: 836 836.1 836.2 836.3 836.4 836.5 836.6 836.7 836.8 836.9 837 + Bin 1837: 837 837.1 837.2 837.3 837.4 837.5 837.6 837.7 837.8 837.9 838 + Bin 1838: 838 838.1 838.2 838.3 838.4 838.5 838.6 838.7 838.8 838.9 839 + Bin 1839: 839 839.1 839.2 839.3 839.4 839.5 839.6 839.7 839.8 839.9 840 + Bin 1840: 840 840.1 840.2 840.3 840.4 840.5 840.6 840.7 840.8 840.9 841 + Bin 1841: 841 841.1 841.2 841.3 841.4 841.5 841.6 841.7 841.8 841.9 842 + Bin 1842: 842 842.1 842.2 842.3 842.4 842.5 842.6 842.7 842.8 842.9 843 + Bin 1843: 843 843.1 843.2 843.3 843.4 843.5 843.6 843.7 843.8 843.9 844 + Bin 1844: 844 844.1 844.2 844.3 844.4 844.5 844.6 844.7 844.8 844.9 845 + Bin 1845: 845 845.1 845.2 845.3 845.4 845.5 845.6 845.7 845.8 845.9 846 + Bin 1846: 846 846.1 846.2 846.3 846.4 846.5 846.6 846.7 846.8 846.9 847 + Bin 1847: 847 847.1 847.2 847.3 847.4 847.5 847.6 847.7 847.8 847.9 848 + Bin 1848: 848 848.1 848.2 848.3 848.4 848.5 848.6 848.7 848.8 848.9 849 + Bin 1849: 849 849.1 849.2 849.3 849.4 849.5 849.6 849.7 849.8 849.9 850 + Bin 1850: 850 850.1 850.2 850.3 850.4 850.5 850.6 850.7 850.8 850.9 851 + Bin 1851: 851 851.1 851.2 851.3 851.4 851.5 851.6 851.7 851.8 851.9 852 + Bin 1852: 852 852.1 852.2 852.3 852.4 852.5 852.6 852.7 852.8 852.9 853 + Bin 1853: 853 853.1 853.2 853.3 853.4 853.5 853.6 853.7 853.8 853.9 854 + Bin 1854: 854 854.1 854.2 854.3 854.4 854.5 854.6 854.7 854.8 854.9 855 + Bin 1855: 855 855.1 855.2 855.3 855.4 855.5 855.6 855.7 855.8 855.9 856 + Bin 1856: 856 856.1 856.2 856.3 856.4 856.5 856.6 856.7 856.8 856.9 857 + Bin 1857: 857 857.1 857.2 857.3 857.4 857.5 857.6 857.7 857.8 857.9 858 + Bin 1858: 858 858.1 858.2 858.3 858.4 858.5 858.6 858.7 858.8 858.9 859 + Bin 1859: 859 859.1 859.2 859.3 859.4 859.5 859.6 859.7 859.8 859.9 860 + Bin 1860: 860 860.1 860.2 860.3 860.4 860.5 860.6 860.7 860.8 860.9 861 + Bin 1861: 861 861.1 861.2 861.3 861.4 861.5 861.6 861.7 861.8 861.9 862 + Bin 1862: 862 862.1 862.2 862.3 862.4 862.5 862.6 862.7 862.8 862.9 863 + Bin 1863: 863 863.1 863.2 863.3 863.4 863.5 863.6 863.7 863.8 863.9 864 + Bin 1864: 864 864.1 864.2 864.3 864.4 864.5 864.6 864.7 864.8 864.9 865 + Bin 1865: 865 865.1 865.2 865.3 865.4 865.5 865.6 865.7 865.8 865.9 866 + Bin 1866: 866 866.1 866.2 866.3 866.4 866.5 866.6 866.7 866.8 866.9 867 + Bin 1867: 867 867.1 867.2 867.3 867.4 867.5 867.6 867.7 867.8 867.9 868 + Bin 1868: 868 868.1 868.2 868.3 868.4 868.5 868.6 868.7 868.8 868.9 869 + Bin 1869: 869 869.1 869.2 869.3 869.4 869.5 869.6 869.7 869.8 869.9 870 + Bin 1870: 870 870.1 870.2 870.3 870.4 870.5 870.6 870.7 870.8 870.9 871 + Bin 1871: 871 871.1 871.2 871.3 871.4 871.5 871.6 871.7 871.8 871.9 872 + Bin 1872: 872 872.1 872.2 872.3 872.4 872.5 872.6 872.7 872.8 872.9 873 + Bin 1873: 873 873.1 873.2 873.3 873.4 873.5 873.6 873.7 873.8 873.9 874 + Bin 1874: 874 874.1 874.2 874.3 874.4 874.5 874.6 874.7 874.8 874.9 875 + Bin 1875: 875 875.1 875.2 875.3 875.4 875.5 875.6 875.7 875.8 875.9 876 + Bin 1876: 876 876.1 876.2 876.3 876.4 876.5 876.6 876.7 876.8 876.9 877 + Bin 1877: 877 877.1 877.2 877.3 877.4 877.5 877.6 877.7 877.8 877.9 878 + Bin 1878: 878 878.1 878.2 878.3 878.4 878.5 878.6 878.7 878.8 878.9 879 + Bin 1879: 879 879.1 879.2 879.3 879.4 879.5 879.6 879.7 879.8 879.9 880 + Bin 1880: 880 880.1 880.2 880.3 880.4 880.5 880.6 880.7 880.8 880.9 881 + Bin 1881: 881 881.1 881.2 881.3 881.4 881.5 881.6 881.7 881.8 881.9 882 + Bin 1882: 882 882.1 882.2 882.3 882.4 882.5 882.6 882.7 882.8 882.9 883 + Bin 1883: 883 883.1 883.2 883.3 883.4 883.5 883.6 883.7 883.8 883.9 884 + Bin 1884: 884 884.1 884.2 884.3 884.4 884.5 884.6 884.7 884.8 884.9 885 + Bin 1885: 885 885.1 885.2 885.3 885.4 885.5 885.6 885.7 885.8 885.9 886 + Bin 1886: 886 886.1 886.2 886.3 886.4 886.5 886.6 886.7 886.8 886.9 887 + Bin 1887: 887 887.1 887.2 887.3 887.4 887.5 887.6 887.7 887.8 887.9 888 + Bin 1888: 888 888.1 888.2 888.3 888.4 888.5 888.6 888.7 888.8 888.9 889 + Bin 1889: 889 889.1 889.2 889.3 889.4 889.5 889.6 889.7 889.8 889.9 890 + Bin 1890: 890 890.1 890.2 890.3 890.4 890.5 890.6 890.7 890.8 890.9 891 + Bin 1891: 891 891.1 891.2 891.3 891.4 891.5 891.6 891.7 891.8 891.9 892 + Bin 1892: 892 892.1 892.2 892.3 892.4 892.5 892.6 892.7 892.8 892.9 893 + Bin 1893: 893 893.1 893.2 893.3 893.4 893.5 893.6 893.7 893.8 893.9 894 + Bin 1894: 894 894.1 894.2 894.3 894.4 894.5 894.6 894.7 894.8 894.9 895 + Bin 1895: 895 895.1 895.2 895.3 895.4 895.5 895.6 895.7 895.8 895.9 896 + Bin 1896: 896 896.1 896.2 896.3 896.4 896.5 896.6 896.7 896.8 896.9 897 + Bin 1897: 897 897.1 897.2 897.3 897.4 897.5 897.6 897.7 897.8 897.9 898 + Bin 1898: 898 898.1 898.2 898.3 898.4 898.5 898.6 898.7 898.8 898.9 899 + Bin 1899: 899 899.1 899.2 899.3 899.4 899.5 899.6 899.7 899.8 899.9 900 + Bin 1900: 900 900.1 900.2 900.3 900.4 900.5 900.6 900.7 900.8 900.9 901 + Bin 1901: 901 901.1 901.2 901.3 901.4 901.5 901.6 901.7 901.8 901.9 902 + Bin 1902: 902 902.1 902.2 902.3 902.4 902.5 902.6 902.7 902.8 902.9 903 + Bin 1903: 903 903.1 903.2 903.3 903.4 903.5 903.6 903.7 903.8 903.9 904 + Bin 1904: 904 904.1 904.2 904.3 904.4 904.5 904.6 904.7 904.8 904.9 905 + Bin 1905: 905 905.1 905.2 905.3 905.4 905.5 905.6 905.7 905.8 905.9 906 + Bin 1906: 906 906.1 906.2 906.3 906.4 906.5 906.6 906.7 906.8 906.9 907 + Bin 1907: 907 907.1 907.2 907.3 907.4 907.5 907.6 907.7 907.8 907.9 908 + Bin 1908: 908 908.1 908.2 908.3 908.4 908.5 908.6 908.7 908.8 908.9 909 + Bin 1909: 909 909.1 909.2 909.3 909.4 909.5 909.6 909.7 909.8 909.9 910 + Bin 1910: 910 910.1 910.2 910.3 910.4 910.5 910.6 910.7 910.8 910.9 911 + Bin 1911: 911 911.1 911.2 911.3 911.4 911.5 911.6 911.7 911.8 911.9 912 + Bin 1912: 912 912.1 912.2 912.3 912.4 912.5 912.6 912.7 912.8 912.9 913 + Bin 1913: 913 913.1 913.2 913.3 913.4 913.5 913.6 913.7 913.8 913.9 914 + Bin 1914: 914 914.1 914.2 914.3 914.4 914.5 914.6 914.7 914.8 914.9 915 + Bin 1915: 915 915.1 915.2 915.3 915.4 915.5 915.6 915.7 915.8 915.9 916 + Bin 1916: 916 916.1 916.2 916.3 916.4 916.5 916.6 916.7 916.8 916.9 917 + Bin 1917: 917 917.1 917.2 917.3 917.4 917.5 917.6 917.7 917.8 917.9 918 + Bin 1918: 918 918.1 918.2 918.3 918.4 918.5 918.6 918.7 918.8 918.9 919 + Bin 1919: 919 919.1 919.2 919.3 919.4 919.5 919.6 919.7 919.8 919.9 920 + Bin 1920: 920 920.1 920.2 920.3 920.4 920.5 920.6 920.7 920.8 920.9 921 + Bin 1921: 921 921.1 921.2 921.3 921.4 921.5 921.6 921.7 921.8 921.9 922 + Bin 1922: 922 922.1 922.2 922.3 922.4 922.5 922.6 922.7 922.8 922.9 923 + Bin 1923: 923 923.1 923.2 923.3 923.4 923.5 923.6 923.7 923.8 923.9 924 + Bin 1924: 924 924.1 924.2 924.3 924.4 924.5 924.6 924.7 924.8 924.9 925 + Bin 1925: 925 925.1 925.2 925.3 925.4 925.5 925.6 925.7 925.8 925.9 926 + Bin 1926: 926 926.1 926.2 926.3 926.4 926.5 926.6 926.7 926.8 926.9 927 + Bin 1927: 927 927.1 927.2 927.3 927.4 927.5 927.6 927.7 927.8 927.9 928 + Bin 1928: 928 928.1 928.2 928.3 928.4 928.5 928.6 928.7 928.8 928.9 929 + Bin 1929: 929 929.1 929.2 929.3 929.4 929.5 929.6 929.7 929.8 929.9 930 + Bin 1930: 930 930.1 930.2 930.3 930.4 930.5 930.6 930.7 930.8 930.9 931 + Bin 1931: 931 931.1 931.2 931.3 931.4 931.5 931.6 931.7 931.8 931.9 932 + Bin 1932: 932 932.1 932.2 932.3 932.4 932.5 932.6 932.7 932.8 932.9 933 + Bin 1933: 933 933.1 933.2 933.3 933.4 933.5 933.6 933.7 933.8 933.9 934 + Bin 1934: 934 934.1 934.2 934.3 934.4 934.5 934.6 934.7 934.8 934.9 935 + Bin 1935: 935 935.1 935.2 935.3 935.4 935.5 935.6 935.7 935.8 935.9 936 + Bin 1936: 936 936.1 936.2 936.3 936.4 936.5 936.6 936.7 936.8 936.9 937 + Bin 1937: 937 937.1 937.2 937.3 937.4 937.5 937.6 937.7 937.8 937.9 938 + Bin 1938: 938 938.1 938.2 938.3 938.4 938.5 938.6 938.7 938.8 938.9 939 + Bin 1939: 939 939.1 939.2 939.3 939.4 939.5 939.6 939.7 939.8 939.9 940 + Bin 1940: 940 940.1 940.2 940.3 940.4 940.5 940.6 940.7 940.8 940.9 941 + Bin 1941: 941 941.1 941.2 941.3 941.4 941.5 941.6 941.7 941.8 941.9 942 + Bin 1942: 942 942.1 942.2 942.3 942.4 942.5 942.6 942.7 942.8 942.9 943 + Bin 1943: 943 943.1 943.2 943.3 943.4 943.5 943.6 943.7 943.8 943.9 944 + Bin 1944: 944 944.1 944.2 944.3 944.4 944.5 944.6 944.7 944.8 944.9 945 + Bin 1945: 945 945.1 945.2 945.3 945.4 945.5 945.6 945.7 945.8 945.9 946 + Bin 1946: 946 946.1 946.2 946.3 946.4 946.5 946.6 946.7 946.8 946.9 947 + Bin 1947: 947 947.1 947.2 947.3 947.4 947.5 947.6 947.7 947.8 947.9 948 + Bin 1948: 948 948.1 948.2 948.3 948.4 948.5 948.6 948.7 948.8 948.9 949 + Bin 1949: 949 949.1 949.2 949.3 949.4 949.5 949.6 949.7 949.8 949.9 950 + Bin 1950: 950 950.1 950.2 950.3 950.4 950.5 950.6 950.7 950.8 950.9 951 + Bin 1951: 951 951.1 951.2 951.3 951.4 951.5 951.6 951.7 951.8 951.9 952 + Bin 1952: 952 952.1 952.2 952.3 952.4 952.5 952.6 952.7 952.8 952.9 953 + Bin 1953: 953 953.1 953.2 953.3 953.4 953.5 953.6 953.7 953.8 953.9 954 + Bin 1954: 954 954.1 954.2 954.3 954.4 954.5 954.6 954.7 954.8 954.9 955 + Bin 1955: 955 955.1 955.2 955.3 955.4 955.5 955.6 955.7 955.8 955.9 956 + Bin 1956: 956 956.1 956.2 956.3 956.4 956.5 956.6 956.7 956.8 956.9 957 + Bin 1957: 957 957.1 957.2 957.3 957.4 957.5 957.6 957.7 957.8 957.9 958 + Bin 1958: 958 958.1 958.2 958.3 958.4 958.5 958.6 958.7 958.8 958.9 959 + Bin 1959: 959 959.1 959.2 959.3 959.4 959.5 959.6 959.7 959.8 959.9 960 + Bin 1960: 960 960.1 960.2 960.3 960.4 960.5 960.6 960.7 960.8 960.9 961 + Bin 1961: 961 961.1 961.2 961.3 961.4 961.5 961.6 961.7 961.8 961.9 962 + Bin 1962: 962 962.1 962.2 962.3 962.4 962.5 962.6 962.7 962.8 962.9 963 + Bin 1963: 963 963.1 963.2 963.3 963.4 963.5 963.6 963.7 963.8 963.9 964 + Bin 1964: 964 964.1 964.2 964.3 964.4 964.5 964.6 964.7 964.8 964.9 965 + Bin 1965: 965 965.1 965.2 965.3 965.4 965.5 965.6 965.7 965.8 965.9 966 + Bin 1966: 966 966.1 966.2 966.3 966.4 966.5 966.6 966.7 966.8 966.9 967 + Bin 1967: 967 967.1 967.2 967.3 967.4 967.5 967.6 967.7 967.8 967.9 968 + Bin 1968: 968 968.1 968.2 968.3 968.4 968.5 968.6 968.7 968.8 968.9 969 + Bin 1969: 969 969.1 969.2 969.3 969.4 969.5 969.6 969.7 969.8 969.9 970 + Bin 1970: 970 970.1 970.2 970.3 970.4 970.5 970.6 970.7 970.8 970.9 971 + Bin 1971: 971 971.1 971.2 971.3 971.4 971.5 971.6 971.7 971.8 971.9 972 + Bin 1972: 972 972.1 972.2 972.3 972.4 972.5 972.6 972.7 972.8 972.9 973 + Bin 1973: 973 973.1 973.2 973.3 973.4 973.5 973.6 973.7 973.8 973.9 974 + Bin 1974: 974 974.1 974.2 974.3 974.4 974.5 974.6 974.7 974.8 974.9 975 + Bin 1975: 975 975.1 975.2 975.3 975.4 975.5 975.6 975.7 975.8 975.9 976 + Bin 1976: 976 976.1 976.2 976.3 976.4 976.5 976.6 976.7 976.8 976.9 977 + Bin 1977: 977 977.1 977.2 977.3 977.4 977.5 977.6 977.7 977.8 977.9 978 + Bin 1978: 978 978.1 978.2 978.3 978.4 978.5 978.6 978.7 978.8 978.9 979 + Bin 1979: 979 979.1 979.2 979.3 979.4 979.5 979.6 979.7 979.8 979.9 980 + Bin 1980: 980 980.1 980.2 980.3 980.4 980.5 980.6 980.7 980.8 980.9 981 + Bin 1981: 981 981.1 981.2 981.3 981.4 981.5 981.6 981.7 981.8 981.9 982 + Bin 1982: 982 982.1 982.2 982.3 982.4 982.5 982.6 982.7 982.8 982.9 983 + Bin 1983: 983 983.1 983.2 983.3 983.4 983.5 983.6 983.7 983.8 983.9 984 + Bin 1984: 984 984.1 984.2 984.3 984.4 984.5 984.6 984.7 984.8 984.9 985 + Bin 1985: 985 985.1 985.2 985.3 985.4 985.5 985.6 985.7 985.8 985.9 986 + Bin 1986: 986 986.1 986.2 986.3 986.4 986.5 986.6 986.7 986.8 986.9 987 + Bin 1987: 987 987.1 987.2 987.3 987.4 987.5 987.6 987.7 987.8 987.9 988 + Bin 1988: 988 988.1 988.2 988.3 988.4 988.5 988.6 988.7 988.8 988.9 989 + Bin 1989: 989 989.1 989.2 989.3 989.4 989.5 989.6 989.7 989.8 989.9 990 + Bin 1990: 990 990.1 990.2 990.3 990.4 990.5 990.6 990.7 990.8 990.9 991 + Bin 1991: 991 991.1 991.2 991.3 991.4 991.5 991.6 991.7 991.8 991.9 992 + Bin 1992: 992 992.1 992.2 992.3 992.4 992.5 992.6 992.7 992.8 992.9 993 + Bin 1993: 993 993.1 993.2 993.3 993.4 993.5 993.6 993.7 993.8 993.9 994 + Bin 1994: 994 994.1 994.2 994.3 994.4 994.5 994.6 994.7 994.8 994.9 995 + Bin 1995: 995 995.1 995.2 995.3 995.4 995.5 995.6 995.7 995.8 995.9 996 + Bin 1996: 996 996.1 996.2 996.3 996.4 996.5 996.6 996.7 996.8 996.9 997 + Bin 1997: 997 997.1 997.2 997.3 997.4 997.5 997.6 997.7 997.8 997.9 998 + Bin 1998: 998 998.1 998.2 998.3 998.4 998.5 998.6 998.7 998.8 998.9 999 + Bin 1999: 999 999.1 999.2 999.3 999.4 999.5 999.6 999.7 999.8 999.9 1000 + +Det 6: + Bin 0: -90 -89.9 -89.8 -89.7 -89.6 -89.5 -89.4 -89.3 -89.2 -89.1 -89 + Bin 1: -89 -88.9 -88.8 -88.7 -88.6 -88.5 -88.4 -88.3 -88.2 -88.1 -88 + Bin 2: -88 -87.9 -87.8 -87.7 -87.6 -87.5 -87.4 -87.3 -87.2 -87.1 -87 + Bin 3: -87 -86.9 -86.8 -86.7 -86.6 -86.5 -86.4 -86.3 -86.2 -86.1 -86 + Bin 4: -86 -85.9 -85.8 -85.7 -85.6 -85.5 -85.4 -85.3 -85.2 -85.1 -85 + Bin 5: -85 -84.9 -84.8 -84.7 -84.6 -84.5 -84.4 -84.3 -84.2 -84.1 -84 + Bin 6: -84 -83.9 -83.8 -83.7 -83.6 -83.5 -83.4 -83.3 -83.2 -83.1 -83 + Bin 7: -83 -82.9 -82.8 -82.7 -82.6 -82.5 -82.4 -82.3 -82.2 -82.1 -82 + Bin 8: -82 -81.9 -81.8 -81.7 -81.6 -81.5 -81.4 -81.3 -81.2 -81.1 -81 + Bin 9: -81 -80.9 -80.8 -80.7 -80.6 -80.5 -80.4 -80.3 -80.2 -80.1 -80 + Bin 10: -80 -79.9 -79.8 -79.7 -79.6 -79.5 -79.4 -79.3 -79.2 -79.1 -79 + Bin 11: -79 -78.9 -78.8 -78.7 -78.6 -78.5 -78.4 -78.3 -78.2 -78.1 -78 + Bin 12: -78 -77.9 -77.8 -77.7 -77.6 -77.5 -77.4 -77.3 -77.2 -77.1 -77 + Bin 13: -77 -76.9 -76.8 -76.7 -76.6 -76.5 -76.4 -76.3 -76.2 -76.1 -76 + Bin 14: -76 -75.9 -75.8 -75.7 -75.6 -75.5 -75.4 -75.3 -75.2 -75.1 -75 + Bin 15: -75 -74.9 -74.8 -74.7 -74.6 -74.5 -74.4 -74.3 -74.2 -74.1 -74 + Bin 16: -74 -73.9 -73.8 -73.7 -73.6 -73.5 -73.4 -73.3 -73.2 -73.1 -73 + Bin 17: -73 -72.9 -72.8 -72.7 -72.6 -72.5 -72.4 -72.3 -72.2 -72.1 -72 + Bin 18: -72 -71.9 -71.8 -71.7 -71.6 -71.5 -71.4 -71.3 -71.2 -71.1 -71 + Bin 19: -71 -70.9 -70.8 -70.7 -70.6 -70.5 -70.4 -70.3 -70.2 -70.1 -70 + Bin 20: -70 -69.9 -69.8 -69.7 -69.6 -69.5 -69.4 -69.3 -69.2 -69.1 -69 + Bin 21: -69 -68.9 -68.8 -68.7 -68.6 -68.5 -68.4 -68.3 -68.2 -68.1 -68 + Bin 22: -68 -67.9 -67.8 -67.7 -67.6 -67.5 -67.4 -67.3 -67.2 -67.1 -67 + Bin 23: -67 -66.9 -66.8 -66.7 -66.6 -66.5 -66.4 -66.3 -66.2 -66.1 -66 + Bin 24: -66 -65.9 -65.8 -65.7 -65.6 -65.5 -65.4 -65.3 -65.2 -65.1 -65 + Bin 25: -65 -64.9 -64.8 -64.7 -64.6 -64.5 -64.4 -64.3 -64.2 -64.1 -64 + Bin 26: -64 -63.9 -63.8 -63.7 -63.6 -63.5 -63.4 -63.3 -63.2 -63.1 -63 + Bin 27: -63 -62.9 -62.8 -62.7 -62.6 -62.5 -62.4 -62.3 -62.2 -62.1 -62 + Bin 28: -62 -61.9 -61.8 -61.7 -61.6 -61.5 -61.4 -61.3 -61.2 -61.1 -61 + Bin 29: -61 -60.9 -60.8 -60.7 -60.6 -60.5 -60.4 -60.3 -60.2 -60.1 -60 + Bin 30: -60 -59.9 -59.8 -59.7 -59.6 -59.5 -59.4 -59.3 -59.2 -59.1 -59 + Bin 31: -59 -58.9 -58.8 -58.7 -58.6 -58.5 -58.4 -58.3 -58.2 -58.1 -58 + Bin 32: -58 -57.9 -57.8 -57.7 -57.6 -57.5 -57.4 -57.3 -57.2 -57.1 -57 + Bin 33: -57 -56.9 -56.8 -56.7 -56.6 -56.5 -56.4 -56.3 -56.2 -56.1 -56 + Bin 34: -56 -55.9 -55.8 -55.7 -55.6 -55.5 -55.4 -55.3 -55.2 -55.1 -55 + Bin 35: -55 -54.9 -54.8 -54.7 -54.6 -54.5 -54.4 -54.3 -54.2 -54.1 -54 + Bin 36: -54 -53.9 -53.8 -53.7 -53.6 -53.5 -53.4 -53.3 -53.2 -53.1 -53 + Bin 37: -53 -52.9 -52.8 -52.7 -52.6 -52.5 -52.4 -52.3 -52.2 -52.1 -52 + Bin 38: -52 -51.9 -51.8 -51.7 -51.6 -51.5 -51.4 -51.3 -51.2 -51.1 -51 + Bin 39: -51 -50.9 -50.8 -50.7 -50.6 -50.5 -50.4 -50.3 -50.2 -50.1 -50 + Bin 40: -50 -49.9 -49.8 -49.7 -49.6 -49.5 -49.4 -49.3 -49.2 -49.1 -49 + Bin 41: -49 -48.9 -48.8 -48.7 -48.6 -48.5 -48.4 -48.3 -48.2 -48.1 -48 + Bin 42: -48 -47.9 -47.8 -47.7 -47.6 -47.5 -47.4 -47.3 -47.2 -47.1 -47 + Bin 43: -47 -46.9 -46.8 -46.7 -46.6 -46.5 -46.4 -46.3 -46.2 -46.1 -46 + Bin 44: -46 -45.9 -45.8 -45.7 -45.6 -45.5 -45.4 -45.3 -45.2 -45.1 -45 + Bin 45: -45 -44.9 -44.8 -44.7 -44.6 -44.5 -44.4 -44.3 -44.2 -44.1 -44 + Bin 46: -44 -43.9 -43.8 -43.7 -43.6 -43.5 -43.4 -43.3 -43.2 -43.1 -43 + Bin 47: -43 -42.9 -42.8 -42.7 -42.6 -42.5 -42.4 -42.3 -42.2 -42.1 -42 + Bin 48: -42 -41.9 -41.8 -41.7 -41.6 -41.5 -41.4 -41.3 -41.2 -41.1 -41 + Bin 49: -41 -40.9 -40.8 -40.7 -40.6 -40.5 -40.4 -40.3 -40.2 -40.1 -40 + Bin 50: -40 -39.9 -39.8 -39.7 -39.6 -39.5 -39.4 -39.3 -39.2 -39.1 -39 + Bin 51: -39 -38.9 -38.8 -38.7 -38.6 -38.5 -38.4 -38.3 -38.2 -38.1 -38 + Bin 52: -38 -37.9 -37.8 -37.7 -37.6 -37.5 -37.4 -37.3 -37.2 -37.1 -37 + Bin 53: -37 -36.9 -36.8 -36.7 -36.6 -36.5 -36.4 -36.3 -36.2 -36.1 -36 + Bin 54: -36 -35.9 -35.8 -35.7 -35.6 -35.5 -35.4 -35.3 -35.2 -35.1 -35 + Bin 55: -35 -34.9 -34.8 -34.7 -34.6 -34.5 -34.4 -34.3 -34.2 -34.1 -34 + Bin 56: -34 -33.9 -33.8 -33.7 -33.6 -33.5 -33.4 -33.3 -33.2 -33.1 -33 + Bin 57: -33 -32.9 -32.8 -32.7 -32.6 -32.5 -32.4 -32.3 -32.2 -32.1 -32 + Bin 58: -32 -31.9 -31.8 -31.7 -31.6 -31.5 -31.4 -31.3 -31.2 -31.1 -31 + Bin 59: -31 -30.9 -30.8 -30.7 -30.6 -30.5 -30.4 -30.3 -30.2 -30.1 -30 + Bin 60: -30 -29.9 -29.8 -29.7 -29.6 -29.5 -29.4 -29.3 -29.2 -29.1 -29 + Bin 61: -29 -28.9 -28.8 -28.7 -28.6 -28.5 -28.4 -28.3 -28.2 -28.1 -28 + Bin 62: -28 -27.9 -27.8 -27.7 -27.6 -27.5 -27.4 -27.3 -27.2 -27.1 -27 + Bin 63: -27 -26.9 -26.8 -26.7 -26.6 -26.5 -26.4 -26.3 -26.2 -26.1 -26 + Bin 64: -26 -25.9 -25.8 -25.7 -25.6 -25.5 -25.4 -25.3 -25.2 -25.1 -25 + Bin 65: -25 -24.9 -24.8 -24.7 -24.6 -24.5 -24.4 -24.3 -24.2 -24.1 -24 + Bin 66: -24 -23.9 -23.8 -23.7 -23.6 -23.5 -23.4 -23.3 -23.2 -23.1 -23 + Bin 67: -23 -22.9 -22.8 -22.7 -22.6 -22.5 -22.4 -22.3 -22.2 -22.1 -22 + Bin 68: -22 -21.9 -21.8 -21.7 -21.6 -21.5 -21.4 -21.3 -21.2 -21.1 -21 + Bin 69: -21 -20.9 -20.8 -20.7 -20.6 -20.5 -20.4 -20.3 -20.2 -20.1 -20 + Bin 70: -20 -19.9 -19.8 -19.7 -19.6 -19.5 -19.4 -19.3 -19.2 -19.1 -19 + Bin 71: -19 -18.9 -18.8 -18.7 -18.6 -18.5 -18.4 -18.3 -18.2 -18.1 -18 + Bin 72: -18 -17.9 -17.8 -17.7 -17.6 -17.5 -17.4 -17.3 -17.2 -17.1 -17 + Bin 73: -17 -16.9 -16.8 -16.7 -16.6 -16.5 -16.4 -16.3 -16.2 -16.1 -16 + Bin 74: -16 -15.9 -15.8 -15.7 -15.6 -15.5 -15.4 -15.3 -15.2 -15.1 -15 + Bin 75: -15 -14.9 -14.8 -14.7 -14.6 -14.5 -14.4 -14.3 -14.2 -14.1 -14 + Bin 76: -14 -13.9 -13.8 -13.7 -13.6 -13.5 -13.4 -13.3 -13.2 -13.1 -13 + Bin 77: -13 -12.9 -12.8 -12.7 -12.6 -12.5 -12.4 -12.3 -12.2 -12.1 -12 + Bin 78: -12 -11.9 -11.8 -11.7 -11.6 -11.5 -11.4 -11.3 -11.2 -11.1 -11 + Bin 79: -11 -10.9 -10.8 -10.7 -10.6 -10.5 -10.4 -10.3 -10.2 -10.1 -10 + Bin 80: -10 -9.9 -9.8 -9.7 -9.6 -9.5 -9.4 -9.3 -9.2 -9.1 -9 + Bin 81: -9 -8.9 -8.8 -8.7 -8.6 -8.5 -8.4 -8.3 -8.2 -8.1 -8 + Bin 82: -8 -7.9 -7.8 -7.7 -7.6 -7.5 -7.4 -7.3 -7.2 -7.1 -7 + Bin 83: -7 -6.9 -6.8 -6.7 -6.6 -6.5 -6.4 -6.3 -6.2 -6.1 -6 + Bin 84: -6 -5.9 -5.8 -5.7 -5.6 -5.5 -5.4 -5.3 -5.2 -5.1 -5 + Bin 85: -5 -4.9 -4.8 -4.7 -4.6 -4.5 -4.4 -4.3 -4.2 -4.1 -4 + Bin 86: -4 -3.9 -3.8 -3.7 -3.6 -3.5 -3.4 -3.3 -3.2 -3.1 -3 + Bin 87: -3 -2.9 -2.8 -2.7 -2.6 -2.5 -2.4 -2.3 -2.2 -2.1 -2 + Bin 88: -2 -1.9 -1.8 -1.7 -1.6 -1.5 -1.4 -1.3 -1.2 -1.1 -1 + Bin 89: -1 -0.9 -0.8 -0.7 -0.6 -0.5 -0.4 -0.3 -0.2 -0.1 0 + Bin 90: 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 + Bin 91: 1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2 + Bin 92: 2 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3 + Bin 93: 3 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4 + Bin 94: 4 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5 + Bin 95: 5 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6 + Bin 96: 6 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7 + Bin 97: 7 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8 + Bin 98: 8 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9 + Bin 99: 9 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 10 + Bin 100: 10 10.1 10.2 10.3 10.4 10.5 10.6 10.7 10.8 10.9 11 + Bin 101: 11 11.1 11.2 11.3 11.4 11.5 11.6 11.7 11.8 11.9 12 + Bin 102: 12 12.1 12.2 12.3 12.4 12.5 12.6 12.7 12.8 12.9 13 + Bin 103: 13 13.1 13.2 13.3 13.4 13.5 13.6 13.7 13.8 13.9 14 + Bin 104: 14 14.1 14.2 14.3 14.4 14.5 14.6 14.7 14.8 14.9 15 + Bin 105: 15 15.1 15.2 15.3 15.4 15.5 15.6 15.7 15.8 15.9 16 + Bin 106: 16 16.1 16.2 16.3 16.4 16.5 16.6 16.7 16.8 16.9 17 + Bin 107: 17 17.1 17.2 17.3 17.4 17.5 17.6 17.7 17.8 17.9 18 + Bin 108: 18 18.1 18.2 18.3 18.4 18.5 18.6 18.7 18.8 18.9 19 + Bin 109: 19 19.1 19.2 19.3 19.4 19.5 19.6 19.7 19.8 19.9 20 + Bin 110: 20 20.1 20.2 20.3 20.4 20.5 20.6 20.7 20.8 20.9 21 + Bin 111: 21 21.1 21.2 21.3 21.4 21.5 21.6 21.7 21.8 21.9 22 + Bin 112: 22 22.1 22.2 22.3 22.4 22.5 22.6 22.7 22.8 22.9 23 + Bin 113: 23 23.1 23.2 23.3 23.4 23.5 23.6 23.7 23.8 23.9 24 + Bin 114: 24 24.1 24.2 24.3 24.4 24.5 24.6 24.7 24.8 24.9 25 + Bin 115: 25 25.1 25.2 25.3 25.4 25.5 25.6 25.7 25.8 25.9 26 + Bin 116: 26 26.1 26.2 26.3 26.4 26.5 26.6 26.7 26.8 26.9 27 + Bin 117: 27 27.1 27.2 27.3 27.4 27.5 27.6 27.7 27.8 27.9 28 + Bin 118: 28 28.1 28.2 28.3 28.4 28.5 28.6 28.7 28.8 28.9 29 + Bin 119: 29 29.1 29.2 29.3 29.4 29.5 29.6 29.7 29.8 29.9 30 + Bin 120: 30 30.1 30.2 30.3 30.4 30.5 30.6 30.7 30.8 30.9 31 + Bin 121: 31 31.1 31.2 31.3 31.4 31.5 31.6 31.7 31.8 31.9 32 + Bin 122: 32 32.1 32.2 32.3 32.4 32.5 32.6 32.7 32.8 32.9 33 + Bin 123: 33 33.1 33.2 33.3 33.4 33.5 33.6 33.7 33.8 33.9 34 + Bin 124: 34 34.1 34.2 34.3 34.4 34.5 34.6 34.7 34.8 34.9 35 + Bin 125: 35 35.1 35.2 35.3 35.4 35.5 35.6 35.7 35.8 35.9 36 + Bin 126: 36 36.1 36.2 36.3 36.4 36.5 36.6 36.7 36.8 36.9 37 + Bin 127: 37 37.1 37.2 37.3 37.4 37.5 37.6 37.7 37.8 37.9 38 + Bin 128: 38 38.1 38.2 38.3 38.4 38.5 38.6 38.7 38.8 38.9 39 + Bin 129: 39 39.1 39.2 39.3 39.4 39.5 39.6 39.7 39.8 39.9 40 + Bin 130: 40 40.1 40.2 40.3 40.4 40.5 40.6 40.7 40.8 40.9 41 + Bin 131: 41 41.1 41.2 41.3 41.4 41.5 41.6 41.7 41.8 41.9 42 + Bin 132: 42 42.1 42.2 42.3 42.4 42.5 42.6 42.7 42.8 42.9 43 + Bin 133: 43 43.1 43.2 43.3 43.4 43.5 43.6 43.7 43.8 43.9 44 + Bin 134: 44 44.1 44.2 44.3 44.4 44.5 44.6 44.7 44.8 44.9 45 + Bin 135: 45 45.1 45.2 45.3 45.4 45.5 45.6 45.7 45.8 45.9 46 + Bin 136: 46 46.1 46.2 46.3 46.4 46.5 46.6 46.7 46.8 46.9 47 + Bin 137: 47 47.1 47.2 47.3 47.4 47.5 47.6 47.7 47.8 47.9 48 + Bin 138: 48 48.1 48.2 48.3 48.4 48.5 48.6 48.7 48.8 48.9 49 + Bin 139: 49 49.1 49.2 49.3 49.4 49.5 49.6 49.7 49.8 49.9 50 + Bin 140: 50 50.1 50.2 50.3 50.4 50.5 50.6 50.7 50.8 50.9 51 + Bin 141: 51 51.1 51.2 51.3 51.4 51.5 51.6 51.7 51.8 51.9 52 + Bin 142: 52 52.1 52.2 52.3 52.4 52.5 52.6 52.7 52.8 52.9 53 + Bin 143: 53 53.1 53.2 53.3 53.4 53.5 53.6 53.7 53.8 53.9 54 + Bin 144: 54 54.1 54.2 54.3 54.4 54.5 54.6 54.7 54.8 54.9 55 + Bin 145: 55 55.1 55.2 55.3 55.4 55.5 55.6 55.7 55.8 55.9 56 + Bin 146: 56 56.1 56.2 56.3 56.4 56.5 56.6 56.7 56.8 56.9 57 + Bin 147: 57 57.1 57.2 57.3 57.4 57.5 57.6 57.7 57.8 57.9 58 + Bin 148: 58 58.1 58.2 58.3 58.4 58.5 58.6 58.7 58.8 58.9 59 + Bin 149: 59 59.1 59.2 59.3 59.4 59.5 59.6 59.7 59.8 59.9 60 + Bin 150: 60 60.1 60.2 60.3 60.4 60.5 60.6 60.7 60.8 60.9 61 + Bin 151: 61 61.1 61.2 61.3 61.4 61.5 61.6 61.7 61.8 61.9 62 + Bin 152: 62 62.1 62.2 62.3 62.4 62.5 62.6 62.7 62.8 62.9 63 + Bin 153: 63 63.1 63.2 63.3 63.4 63.5 63.6 63.7 63.8 63.9 64 + Bin 154: 64 64.1 64.2 64.3 64.4 64.5 64.6 64.7 64.8 64.9 65 + Bin 155: 65 65.1 65.2 65.3 65.4 65.5 65.6 65.7 65.8 65.9 66 + Bin 156: 66 66.1 66.2 66.3 66.4 66.5 66.6 66.7 66.8 66.9 67 + Bin 157: 67 67.1 67.2 67.3 67.4 67.5 67.6 67.7 67.8 67.9 68 + Bin 158: 68 68.1 68.2 68.3 68.4 68.5 68.6 68.7 68.8 68.9 69 + Bin 159: 69 69.1 69.2 69.3 69.4 69.5 69.6 69.7 69.8 69.9 70 + Bin 160: 70 70.1 70.2 70.3 70.4 70.5 70.6 70.7 70.8 70.9 71 + Bin 161: 71 71.1 71.2 71.3 71.4 71.5 71.6 71.7 71.8 71.9 72 + Bin 162: 72 72.1 72.2 72.3 72.4 72.5 72.6 72.7 72.8 72.9 73 + Bin 163: 73 73.1 73.2 73.3 73.4 73.5 73.6 73.7 73.8 73.9 74 + Bin 164: 74 74.1 74.2 74.3 74.4 74.5 74.6 74.7 74.8 74.9 75 + Bin 165: 75 75.1 75.2 75.3 75.4 75.5 75.6 75.7 75.8 75.9 76 + Bin 166: 76 76.1 76.2 76.3 76.4 76.5 76.6 76.7 76.8 76.9 77 + Bin 167: 77 77.1 77.2 77.3 77.4 77.5 77.6 77.7 77.8 77.9 78 + Bin 168: 78 78.1 78.2 78.3 78.4 78.5 78.6 78.7 78.8 78.9 79 + Bin 169: 79 79.1 79.2 79.3 79.4 79.5 79.6 79.7 79.8 79.9 80 + Bin 170: 80 80.1 80.2 80.3 80.4 80.5 80.6 80.7 80.8 80.9 81 + Bin 171: 81 81.1 81.2 81.3 81.4 81.5 81.6 81.7 81.8 81.9 82 + Bin 172: 82 82.1 82.2 82.3 82.4 82.5 82.6 82.7 82.8 82.9 83 + Bin 173: 83 83.1 83.2 83.3 83.4 83.5 83.6 83.7 83.8 83.9 84 + Bin 174: 84 84.1 84.2 84.3 84.4 84.5 84.6 84.7 84.8 84.9 85 + Bin 175: 85 85.1 85.2 85.3 85.4 85.5 85.6 85.7 85.8 85.9 86 + Bin 176: 86 86.1 86.2 86.3 86.4 86.5 86.6 86.7 86.8 86.9 87 + Bin 177: 87 87.1 87.2 87.3 87.4 87.5 87.6 87.7 87.8 87.9 88 + Bin 178: 88 88.1 88.2 88.3 88.4 88.5 88.6 88.7 88.8 88.9 89 + Bin 179: 89 89.1 89.2 89.3 89.4 89.5 89.6 89.7 89.8 89.9 90 + +Det 7: + Bin 0: -1000 -999.9 -999.8 -999.7 -999.6 -999.5 -999.4 -999.3 -999.2 -999.1 -999 + Bin 1: -999 -998.9 -998.8 -998.7 -998.6 -998.5 -998.4 -998.3 -998.2 -998.1 -998 + Bin 2: -998 -997.9 -997.8 -997.7 -997.6 -997.5 -997.4 -997.3 -997.2 -997.1 -997 + Bin 3: -997 -996.9 -996.8 -996.7 -996.6 -996.5 -996.4 -996.3 -996.2 -996.1 -996 + Bin 4: -996 -995.9 -995.8 -995.7 -995.6 -995.5 -995.4 -995.3 -995.2 -995.1 -995 + Bin 5: -995 -994.9 -994.8 -994.7 -994.6 -994.5 -994.4 -994.3 -994.2 -994.1 -994 + Bin 6: -994 -993.9 -993.8 -993.7 -993.6 -993.5 -993.4 -993.3 -993.2 -993.1 -993 + Bin 7: -993 -992.9 -992.8 -992.7 -992.6 -992.5 -992.4 -992.3 -992.2 -992.1 -992 + Bin 8: -992 -991.9 -991.8 -991.7 -991.6 -991.5 -991.4 -991.3 -991.2 -991.1 -991 + Bin 9: -991 -990.9 -990.8 -990.7 -990.6 -990.5 -990.4 -990.3 -990.2 -990.1 -990 + Bin 10: -990 -989.9 -989.8 -989.7 -989.6 -989.5 -989.4 -989.3 -989.2 -989.1 -989 + Bin 11: -989 -988.9 -988.8 -988.7 -988.6 -988.5 -988.4 -988.3 -988.2 -988.1 -988 + Bin 12: -988 -987.9 -987.8 -987.7 -987.6 -987.5 -987.4 -987.3 -987.2 -987.1 -987 + Bin 13: -987 -986.9 -986.8 -986.7 -986.6 -986.5 -986.4 -986.3 -986.2 -986.1 -986 + Bin 14: -986 -985.9 -985.8 -985.7 -985.6 -985.5 -985.4 -985.3 -985.2 -985.1 -985 + Bin 15: -985 -984.9 -984.8 -984.7 -984.6 -984.5 -984.4 -984.3 -984.2 -984.1 -984 + Bin 16: -984 -983.9 -983.8 -983.7 -983.6 -983.5 -983.4 -983.3 -983.2 -983.1 -983 + Bin 17: -983 -982.9 -982.8 -982.7 -982.6 -982.5 -982.4 -982.3 -982.2 -982.1 -982 + Bin 18: -982 -981.9 -981.8 -981.7 -981.6 -981.5 -981.4 -981.3 -981.2 -981.1 -981 + Bin 19: -981 -980.9 -980.8 -980.7 -980.6 -980.5 -980.4 -980.3 -980.2 -980.1 -980 + Bin 20: -980 -979.9 -979.8 -979.7 -979.6 -979.5 -979.4 -979.3 -979.2 -979.1 -979 + Bin 21: -979 -978.9 -978.8 -978.7 -978.6 -978.5 -978.4 -978.3 -978.2 -978.1 -978 + Bin 22: -978 -977.9 -977.8 -977.7 -977.6 -977.5 -977.4 -977.3 -977.2 -977.1 -977 + Bin 23: -977 -976.9 -976.8 -976.7 -976.6 -976.5 -976.4 -976.3 -976.2 -976.1 -976 + Bin 24: -976 -975.9 -975.8 -975.7 -975.6 -975.5 -975.4 -975.3 -975.2 -975.1 -975 + Bin 25: -975 -974.9 -974.8 -974.7 -974.6 -974.5 -974.4 -974.3 -974.2 -974.1 -974 + Bin 26: -974 -973.9 -973.8 -973.7 -973.6 -973.5 -973.4 -973.3 -973.2 -973.1 -973 + Bin 27: -973 -972.9 -972.8 -972.7 -972.6 -972.5 -972.4 -972.3 -972.2 -972.1 -972 + Bin 28: -972 -971.9 -971.8 -971.7 -971.6 -971.5 -971.4 -971.3 -971.2 -971.1 -971 + Bin 29: -971 -970.9 -970.8 -970.7 -970.6 -970.5 -970.4 -970.3 -970.2 -970.1 -970 + Bin 30: -970 -969.9 -969.8 -969.7 -969.6 -969.5 -969.4 -969.3 -969.2 -969.1 -969 + Bin 31: -969 -968.9 -968.8 -968.7 -968.6 -968.5 -968.4 -968.3 -968.2 -968.1 -968 + Bin 32: -968 -967.9 -967.8 -967.7 -967.6 -967.5 -967.4 -967.3 -967.2 -967.1 -967 + Bin 33: -967 -966.9 -966.8 -966.7 -966.6 -966.5 -966.4 -966.3 -966.2 -966.1 -966 + Bin 34: -966 -965.9 -965.8 -965.7 -965.6 -965.5 -965.4 -965.3 -965.2 -965.1 -965 + Bin 35: -965 -964.9 -964.8 -964.7 -964.6 -964.5 -964.4 -964.3 -964.2 -964.1 -964 + Bin 36: -964 -963.9 -963.8 -963.7 -963.6 -963.5 -963.4 -963.3 -963.2 -963.1 -963 + Bin 37: -963 -962.9 -962.8 -962.7 -962.6 -962.5 -962.4 -962.3 -962.2 -962.1 -962 + Bin 38: -962 -961.9 -961.8 -961.7 -961.6 -961.5 -961.4 -961.3 -961.2 -961.1 -961 + Bin 39: -961 -960.9 -960.8 -960.7 -960.6 -960.5 -960.4 -960.3 -960.2 -960.1 -960 + Bin 40: -960 -959.9 -959.8 -959.7 -959.6 -959.5 -959.4 -959.3 -959.2 -959.1 -959 + Bin 41: -959 -958.9 -958.8 -958.7 -958.6 -958.5 -958.4 -958.3 -958.2 -958.1 -958 + Bin 42: -958 -957.9 -957.8 -957.7 -957.6 -957.5 -957.4 -957.3 -957.2 -957.1 -957 + Bin 43: -957 -956.9 -956.8 -956.7 -956.6 -956.5 -956.4 -956.3 -956.2 -956.1 -956 + Bin 44: -956 -955.9 -955.8 -955.7 -955.6 -955.5 -955.4 -955.3 -955.2 -955.1 -955 + Bin 45: -955 -954.9 -954.8 -954.7 -954.6 -954.5 -954.4 -954.3 -954.2 -954.1 -954 + Bin 46: -954 -953.9 -953.8 -953.7 -953.6 -953.5 -953.4 -953.3 -953.2 -953.1 -953 + Bin 47: -953 -952.9 -952.8 -952.7 -952.6 -952.5 -952.4 -952.3 -952.2 -952.1 -952 + Bin 48: -952 -951.9 -951.8 -951.7 -951.6 -951.5 -951.4 -951.3 -951.2 -951.1 -951 + Bin 49: -951 -950.9 -950.8 -950.7 -950.6 -950.5 -950.4 -950.3 -950.2 -950.1 -950 + Bin 50: -950 -949.9 -949.8 -949.7 -949.6 -949.5 -949.4 -949.3 -949.2 -949.1 -949 + Bin 51: -949 -948.9 -948.8 -948.7 -948.6 -948.5 -948.4 -948.3 -948.2 -948.1 -948 + Bin 52: -948 -947.9 -947.8 -947.7 -947.6 -947.5 -947.4 -947.3 -947.2 -947.1 -947 + Bin 53: -947 -946.9 -946.8 -946.7 -946.6 -946.5 -946.4 -946.3 -946.2 -946.1 -946 + Bin 54: -946 -945.9 -945.8 -945.7 -945.6 -945.5 -945.4 -945.3 -945.2 -945.1 -945 + Bin 55: -945 -944.9 -944.8 -944.7 -944.6 -944.5 -944.4 -944.3 -944.2 -944.1 -944 + Bin 56: -944 -943.9 -943.8 -943.7 -943.6 -943.5 -943.4 -943.3 -943.2 -943.1 -943 + Bin 57: -943 -942.9 -942.8 -942.7 -942.6 -942.5 -942.4 -942.3 -942.2 -942.1 -942 + Bin 58: -942 -941.9 -941.8 -941.7 -941.6 -941.5 -941.4 -941.3 -941.2 -941.1 -941 + Bin 59: -941 -940.9 -940.8 -940.7 -940.6 -940.5 -940.4 -940.3 -940.2 -940.1 -940 + Bin 60: -940 -939.9 -939.8 -939.7 -939.6 -939.5 -939.4 -939.3 -939.2 -939.1 -939 + Bin 61: -939 -938.9 -938.8 -938.7 -938.6 -938.5 -938.4 -938.3 -938.2 -938.1 -938 + Bin 62: -938 -937.9 -937.8 -937.7 -937.6 -937.5 -937.4 -937.3 -937.2 -937.1 -937 + Bin 63: -937 -936.9 -936.8 -936.7 -936.6 -936.5 -936.4 -936.3 -936.2 -936.1 -936 + Bin 64: -936 -935.9 -935.8 -935.7 -935.6 -935.5 -935.4 -935.3 -935.2 -935.1 -935 + Bin 65: -935 -934.9 -934.8 -934.7 -934.6 -934.5 -934.4 -934.3 -934.2 -934.1 -934 + Bin 66: -934 -933.9 -933.8 -933.7 -933.6 -933.5 -933.4 -933.3 -933.2 -933.1 -933 + Bin 67: -933 -932.9 -932.8 -932.7 -932.6 -932.5 -932.4 -932.3 -932.2 -932.1 -932 + Bin 68: -932 -931.9 -931.8 -931.7 -931.6 -931.5 -931.4 -931.3 -931.2 -931.1 -931 + Bin 69: -931 -930.9 -930.8 -930.7 -930.6 -930.5 -930.4 -930.3 -930.2 -930.1 -930 + Bin 70: -930 -929.9 -929.8 -929.7 -929.6 -929.5 -929.4 -929.3 -929.2 -929.1 -929 + Bin 71: -929 -928.9 -928.8 -928.7 -928.6 -928.5 -928.4 -928.3 -928.2 -928.1 -928 + Bin 72: -928 -927.9 -927.8 -927.7 -927.6 -927.5 -927.4 -927.3 -927.2 -927.1 -927 + Bin 73: -927 -926.9 -926.8 -926.7 -926.6 -926.5 -926.4 -926.3 -926.2 -926.1 -926 + Bin 74: -926 -925.9 -925.8 -925.7 -925.6 -925.5 -925.4 -925.3 -925.2 -925.1 -925 + Bin 75: -925 -924.9 -924.8 -924.7 -924.6 -924.5 -924.4 -924.3 -924.2 -924.1 -924 + Bin 76: -924 -923.9 -923.8 -923.7 -923.6 -923.5 -923.4 -923.3 -923.2 -923.1 -923 + Bin 77: -923 -922.9 -922.8 -922.7 -922.6 -922.5 -922.4 -922.3 -922.2 -922.1 -922 + Bin 78: -922 -921.9 -921.8 -921.7 -921.6 -921.5 -921.4 -921.3 -921.2 -921.1 -921 + Bin 79: -921 -920.9 -920.8 -920.7 -920.6 -920.5 -920.4 -920.3 -920.2 -920.1 -920 + Bin 80: -920 -919.9 -919.8 -919.7 -919.6 -919.5 -919.4 -919.3 -919.2 -919.1 -919 + Bin 81: -919 -918.9 -918.8 -918.7 -918.6 -918.5 -918.4 -918.3 -918.2 -918.1 -918 + Bin 82: -918 -917.9 -917.8 -917.7 -917.6 -917.5 -917.4 -917.3 -917.2 -917.1 -917 + Bin 83: -917 -916.9 -916.8 -916.7 -916.6 -916.5 -916.4 -916.3 -916.2 -916.1 -916 + Bin 84: -916 -915.9 -915.8 -915.7 -915.6 -915.5 -915.4 -915.3 -915.2 -915.1 -915 + Bin 85: -915 -914.9 -914.8 -914.7 -914.6 -914.5 -914.4 -914.3 -914.2 -914.1 -914 + Bin 86: -914 -913.9 -913.8 -913.7 -913.6 -913.5 -913.4 -913.3 -913.2 -913.1 -913 + Bin 87: -913 -912.9 -912.8 -912.7 -912.6 -912.5 -912.4 -912.3 -912.2 -912.1 -912 + Bin 88: -912 -911.9 -911.8 -911.7 -911.6 -911.5 -911.4 -911.3 -911.2 -911.1 -911 + Bin 89: -911 -910.9 -910.8 -910.7 -910.6 -910.5 -910.4 -910.3 -910.2 -910.1 -910 + Bin 90: -910 -909.9 -909.8 -909.7 -909.6 -909.5 -909.4 -909.3 -909.2 -909.1 -909 + Bin 91: -909 -908.9 -908.8 -908.7 -908.6 -908.5 -908.4 -908.3 -908.2 -908.1 -908 + Bin 92: -908 -907.9 -907.8 -907.7 -907.6 -907.5 -907.4 -907.3 -907.2 -907.1 -907 + Bin 93: -907 -906.9 -906.8 -906.7 -906.6 -906.5 -906.4 -906.3 -906.2 -906.1 -906 + Bin 94: -906 -905.9 -905.8 -905.7 -905.6 -905.5 -905.4 -905.3 -905.2 -905.1 -905 + Bin 95: -905 -904.9 -904.8 -904.7 -904.6 -904.5 -904.4 -904.3 -904.2 -904.1 -904 + Bin 96: -904 -903.9 -903.8 -903.7 -903.6 -903.5 -903.4 -903.3 -903.2 -903.1 -903 + Bin 97: -903 -902.9 -902.8 -902.7 -902.6 -902.5 -902.4 -902.3 -902.2 -902.1 -902 + Bin 98: -902 -901.9 -901.8 -901.7 -901.6 -901.5 -901.4 -901.3 -901.2 -901.1 -901 + Bin 99: -901 -900.9 -900.8 -900.7 -900.6 -900.5 -900.4 -900.3 -900.2 -900.1 -900 + Bin 100: -900 -899.9 -899.8 -899.7 -899.6 -899.5 -899.4 -899.3 -899.2 -899.1 -899 + Bin 101: -899 -898.9 -898.8 -898.7 -898.6 -898.5 -898.4 -898.3 -898.2 -898.1 -898 + Bin 102: -898 -897.9 -897.8 -897.7 -897.6 -897.5 -897.4 -897.3 -897.2 -897.1 -897 + Bin 103: -897 -896.9 -896.8 -896.7 -896.6 -896.5 -896.4 -896.3 -896.2 -896.1 -896 + Bin 104: -896 -895.9 -895.8 -895.7 -895.6 -895.5 -895.4 -895.3 -895.2 -895.1 -895 + Bin 105: -895 -894.9 -894.8 -894.7 -894.6 -894.5 -894.4 -894.3 -894.2 -894.1 -894 + Bin 106: -894 -893.9 -893.8 -893.7 -893.6 -893.5 -893.4 -893.3 -893.2 -893.1 -893 + Bin 107: -893 -892.9 -892.8 -892.7 -892.6 -892.5 -892.4 -892.3 -892.2 -892.1 -892 + Bin 108: -892 -891.9 -891.8 -891.7 -891.6 -891.5 -891.4 -891.3 -891.2 -891.1 -891 + Bin 109: -891 -890.9 -890.8 -890.7 -890.6 -890.5 -890.4 -890.3 -890.2 -890.1 -890 + Bin 110: -890 -889.9 -889.8 -889.7 -889.6 -889.5 -889.4 -889.3 -889.2 -889.1 -889 + Bin 111: -889 -888.9 -888.8 -888.7 -888.6 -888.5 -888.4 -888.3 -888.2 -888.1 -888 + Bin 112: -888 -887.9 -887.8 -887.7 -887.6 -887.5 -887.4 -887.3 -887.2 -887.1 -887 + Bin 113: -887 -886.9 -886.8 -886.7 -886.6 -886.5 -886.4 -886.3 -886.2 -886.1 -886 + Bin 114: -886 -885.9 -885.8 -885.7 -885.6 -885.5 -885.4 -885.3 -885.2 -885.1 -885 + Bin 115: -885 -884.9 -884.8 -884.7 -884.6 -884.5 -884.4 -884.3 -884.2 -884.1 -884 + Bin 116: -884 -883.9 -883.8 -883.7 -883.6 -883.5 -883.4 -883.3 -883.2 -883.1 -883 + Bin 117: -883 -882.9 -882.8 -882.7 -882.6 -882.5 -882.4 -882.3 -882.2 -882.1 -882 + Bin 118: -882 -881.9 -881.8 -881.7 -881.6 -881.5 -881.4 -881.3 -881.2 -881.1 -881 + Bin 119: -881 -880.9 -880.8 -880.7 -880.6 -880.5 -880.4 -880.3 -880.2 -880.1 -880 + Bin 120: -880 -879.9 -879.8 -879.7 -879.6 -879.5 -879.4 -879.3 -879.2 -879.1 -879 + Bin 121: -879 -878.9 -878.8 -878.7 -878.6 -878.5 -878.4 -878.3 -878.2 -878.1 -878 + Bin 122: -878 -877.9 -877.8 -877.7 -877.6 -877.5 -877.4 -877.3 -877.2 -877.1 -877 + Bin 123: -877 -876.9 -876.8 -876.7 -876.6 -876.5 -876.4 -876.3 -876.2 -876.1 -876 + Bin 124: -876 -875.9 -875.8 -875.7 -875.6 -875.5 -875.4 -875.3 -875.2 -875.1 -875 + Bin 125: -875 -874.9 -874.8 -874.7 -874.6 -874.5 -874.4 -874.3 -874.2 -874.1 -874 + Bin 126: -874 -873.9 -873.8 -873.7 -873.6 -873.5 -873.4 -873.3 -873.2 -873.1 -873 + Bin 127: -873 -872.9 -872.8 -872.7 -872.6 -872.5 -872.4 -872.3 -872.2 -872.1 -872 + Bin 128: -872 -871.9 -871.8 -871.7 -871.6 -871.5 -871.4 -871.3 -871.2 -871.1 -871 + Bin 129: -871 -870.9 -870.8 -870.7 -870.6 -870.5 -870.4 -870.3 -870.2 -870.1 -870 + Bin 130: -870 -869.9 -869.8 -869.7 -869.6 -869.5 -869.4 -869.3 -869.2 -869.1 -869 + Bin 131: -869 -868.9 -868.8 -868.7 -868.6 -868.5 -868.4 -868.3 -868.2 -868.1 -868 + Bin 132: -868 -867.9 -867.8 -867.7 -867.6 -867.5 -867.4 -867.3 -867.2 -867.1 -867 + Bin 133: -867 -866.9 -866.8 -866.7 -866.6 -866.5 -866.4 -866.3 -866.2 -866.1 -866 + Bin 134: -866 -865.9 -865.8 -865.7 -865.6 -865.5 -865.4 -865.3 -865.2 -865.1 -865 + Bin 135: -865 -864.9 -864.8 -864.7 -864.6 -864.5 -864.4 -864.3 -864.2 -864.1 -864 + Bin 136: -864 -863.9 -863.8 -863.7 -863.6 -863.5 -863.4 -863.3 -863.2 -863.1 -863 + Bin 137: -863 -862.9 -862.8 -862.7 -862.6 -862.5 -862.4 -862.3 -862.2 -862.1 -862 + Bin 138: -862 -861.9 -861.8 -861.7 -861.6 -861.5 -861.4 -861.3 -861.2 -861.1 -861 + Bin 139: -861 -860.9 -860.8 -860.7 -860.6 -860.5 -860.4 -860.3 -860.2 -860.1 -860 + Bin 140: -860 -859.9 -859.8 -859.7 -859.6 -859.5 -859.4 -859.3 -859.2 -859.1 -859 + Bin 141: -859 -858.9 -858.8 -858.7 -858.6 -858.5 -858.4 -858.3 -858.2 -858.1 -858 + Bin 142: -858 -857.9 -857.8 -857.7 -857.6 -857.5 -857.4 -857.3 -857.2 -857.1 -857 + Bin 143: -857 -856.9 -856.8 -856.7 -856.6 -856.5 -856.4 -856.3 -856.2 -856.1 -856 + Bin 144: -856 -855.9 -855.8 -855.7 -855.6 -855.5 -855.4 -855.3 -855.2 -855.1 -855 + Bin 145: -855 -854.9 -854.8 -854.7 -854.6 -854.5 -854.4 -854.3 -854.2 -854.1 -854 + Bin 146: -854 -853.9 -853.8 -853.7 -853.6 -853.5 -853.4 -853.3 -853.2 -853.1 -853 + Bin 147: -853 -852.9 -852.8 -852.7 -852.6 -852.5 -852.4 -852.3 -852.2 -852.1 -852 + Bin 148: -852 -851.9 -851.8 -851.7 -851.6 -851.5 -851.4 -851.3 -851.2 -851.1 -851 + Bin 149: -851 -850.9 -850.8 -850.7 -850.6 -850.5 -850.4 -850.3 -850.2 -850.1 -850 + Bin 150: -850 -849.9 -849.8 -849.7 -849.6 -849.5 -849.4 -849.3 -849.2 -849.1 -849 + Bin 151: -849 -848.9 -848.8 -848.7 -848.6 -848.5 -848.4 -848.3 -848.2 -848.1 -848 + Bin 152: -848 -847.9 -847.8 -847.7 -847.6 -847.5 -847.4 -847.3 -847.2 -847.1 -847 + Bin 153: -847 -846.9 -846.8 -846.7 -846.6 -846.5 -846.4 -846.3 -846.2 -846.1 -846 + Bin 154: -846 -845.9 -845.8 -845.7 -845.6 -845.5 -845.4 -845.3 -845.2 -845.1 -845 + Bin 155: -845 -844.9 -844.8 -844.7 -844.6 -844.5 -844.4 -844.3 -844.2 -844.1 -844 + Bin 156: -844 -843.9 -843.8 -843.7 -843.6 -843.5 -843.4 -843.3 -843.2 -843.1 -843 + Bin 157: -843 -842.9 -842.8 -842.7 -842.6 -842.5 -842.4 -842.3 -842.2 -842.1 -842 + Bin 158: -842 -841.9 -841.8 -841.7 -841.6 -841.5 -841.4 -841.3 -841.2 -841.1 -841 + Bin 159: -841 -840.9 -840.8 -840.7 -840.6 -840.5 -840.4 -840.3 -840.2 -840.1 -840 + Bin 160: -840 -839.9 -839.8 -839.7 -839.6 -839.5 -839.4 -839.3 -839.2 -839.1 -839 + Bin 161: -839 -838.9 -838.8 -838.7 -838.6 -838.5 -838.4 -838.3 -838.2 -838.1 -838 + Bin 162: -838 -837.9 -837.8 -837.7 -837.6 -837.5 -837.4 -837.3 -837.2 -837.1 -837 + Bin 163: -837 -836.9 -836.8 -836.7 -836.6 -836.5 -836.4 -836.3 -836.2 -836.1 -836 + Bin 164: -836 -835.9 -835.8 -835.7 -835.6 -835.5 -835.4 -835.3 -835.2 -835.1 -835 + Bin 165: -835 -834.9 -834.8 -834.7 -834.6 -834.5 -834.4 -834.3 -834.2 -834.1 -834 + Bin 166: -834 -833.9 -833.8 -833.7 -833.6 -833.5 -833.4 -833.3 -833.2 -833.1 -833 + Bin 167: -833 -832.9 -832.8 -832.7 -832.6 -832.5 -832.4 -832.3 -832.2 -832.1 -832 + Bin 168: -832 -831.9 -831.8 -831.7 -831.6 -831.5 -831.4 -831.3 -831.2 -831.1 -831 + Bin 169: -831 -830.9 -830.8 -830.7 -830.6 -830.5 -830.4 -830.3 -830.2 -830.1 -830 + Bin 170: -830 -829.9 -829.8 -829.7 -829.6 -829.5 -829.4 -829.3 -829.2 -829.1 -829 + Bin 171: -829 -828.9 -828.8 -828.7 -828.6 -828.5 -828.4 -828.3 -828.2 -828.1 -828 + Bin 172: -828 -827.9 -827.8 -827.7 -827.6 -827.5 -827.4 -827.3 -827.2 -827.1 -827 + Bin 173: -827 -826.9 -826.8 -826.7 -826.6 -826.5 -826.4 -826.3 -826.2 -826.1 -826 + Bin 174: -826 -825.9 -825.8 -825.7 -825.6 -825.5 -825.4 -825.3 -825.2 -825.1 -825 + Bin 175: -825 -824.9 -824.8 -824.7 -824.6 -824.5 -824.4 -824.3 -824.2 -824.1 -824 + Bin 176: -824 -823.9 -823.8 -823.7 -823.6 -823.5 -823.4 -823.3 -823.2 -823.1 -823 + Bin 177: -823 -822.9 -822.8 -822.7 -822.6 -822.5 -822.4 -822.3 -822.2 -822.1 -822 + Bin 178: -822 -821.9 -821.8 -821.7 -821.6 -821.5 -821.4 -821.3 -821.2 -821.1 -821 + Bin 179: -821 -820.9 -820.8 -820.7 -820.6 -820.5 -820.4 -820.3 -820.2 -820.1 -820 + Bin 180: -820 -819.9 -819.8 -819.7 -819.6 -819.5 -819.4 -819.3 -819.2 -819.1 -819 + Bin 181: -819 -818.9 -818.8 -818.7 -818.6 -818.5 -818.4 -818.3 -818.2 -818.1 -818 + Bin 182: -818 -817.9 -817.8 -817.7 -817.6 -817.5 -817.4 -817.3 -817.2 -817.1 -817 + Bin 183: -817 -816.9 -816.8 -816.7 -816.6 -816.5 -816.4 -816.3 -816.2 -816.1 -816 + Bin 184: -816 -815.9 -815.8 -815.7 -815.6 -815.5 -815.4 -815.3 -815.2 -815.1 -815 + Bin 185: -815 -814.9 -814.8 -814.7 -814.6 -814.5 -814.4 -814.3 -814.2 -814.1 -814 + Bin 186: -814 -813.9 -813.8 -813.7 -813.6 -813.5 -813.4 -813.3 -813.2 -813.1 -813 + Bin 187: -813 -812.9 -812.8 -812.7 -812.6 -812.5 -812.4 -812.3 -812.2 -812.1 -812 + Bin 188: -812 -811.9 -811.8 -811.7 -811.6 -811.5 -811.4 -811.3 -811.2 -811.1 -811 + Bin 189: -811 -810.9 -810.8 -810.7 -810.6 -810.5 -810.4 -810.3 -810.2 -810.1 -810 + Bin 190: -810 -809.9 -809.8 -809.7 -809.6 -809.5 -809.4 -809.3 -809.2 -809.1 -809 + Bin 191: -809 -808.9 -808.8 -808.7 -808.6 -808.5 -808.4 -808.3 -808.2 -808.1 -808 + Bin 192: -808 -807.9 -807.8 -807.7 -807.6 -807.5 -807.4 -807.3 -807.2 -807.1 -807 + Bin 193: -807 -806.9 -806.8 -806.7 -806.6 -806.5 -806.4 -806.3 -806.2 -806.1 -806 + Bin 194: -806 -805.9 -805.8 -805.7 -805.6 -805.5 -805.4 -805.3 -805.2 -805.1 -805 + Bin 195: -805 -804.9 -804.8 -804.7 -804.6 -804.5 -804.4 -804.3 -804.2 -804.1 -804 + Bin 196: -804 -803.9 -803.8 -803.7 -803.6 -803.5 -803.4 -803.3 -803.2 -803.1 -803 + Bin 197: -803 -802.9 -802.8 -802.7 -802.6 -802.5 -802.4 -802.3 -802.2 -802.1 -802 + Bin 198: -802 -801.9 -801.8 -801.7 -801.6 -801.5 -801.4 -801.3 -801.2 -801.1 -801 + Bin 199: -801 -800.9 -800.8 -800.7 -800.6 -800.5 -800.4 -800.3 -800.2 -800.1 -800 + Bin 200: -800 -799.9 -799.8 -799.7 -799.6 -799.5 -799.4 -799.3 -799.2 -799.1 -799 + Bin 201: -799 -798.9 -798.8 -798.7 -798.6 -798.5 -798.4 -798.3 -798.2 -798.1 -798 + Bin 202: -798 -797.9 -797.8 -797.7 -797.6 -797.5 -797.4 -797.3 -797.2 -797.1 -797 + Bin 203: -797 -796.9 -796.8 -796.7 -796.6 -796.5 -796.4 -796.3 -796.2 -796.1 -796 + Bin 204: -796 -795.9 -795.8 -795.7 -795.6 -795.5 -795.4 -795.3 -795.2 -795.1 -795 + Bin 205: -795 -794.9 -794.8 -794.7 -794.6 -794.5 -794.4 -794.3 -794.2 -794.1 -794 + Bin 206: -794 -793.9 -793.8 -793.7 -793.6 -793.5 -793.4 -793.3 -793.2 -793.1 -793 + Bin 207: -793 -792.9 -792.8 -792.7 -792.6 -792.5 -792.4 -792.3 -792.2 -792.1 -792 + Bin 208: -792 -791.9 -791.8 -791.7 -791.6 -791.5 -791.4 -791.3 -791.2 -791.1 -791 + Bin 209: -791 -790.9 -790.8 -790.7 -790.6 -790.5 -790.4 -790.3 -790.2 -790.1 -790 + Bin 210: -790 -789.9 -789.8 -789.7 -789.6 -789.5 -789.4 -789.3 -789.2 -789.1 -789 + Bin 211: -789 -788.9 -788.8 -788.7 -788.6 -788.5 -788.4 -788.3 -788.2 -788.1 -788 + Bin 212: -788 -787.9 -787.8 -787.7 -787.6 -787.5 -787.4 -787.3 -787.2 -787.1 -787 + Bin 213: -787 -786.9 -786.8 -786.7 -786.6 -786.5 -786.4 -786.3 -786.2 -786.1 -786 + Bin 214: -786 -785.9 -785.8 -785.7 -785.6 -785.5 -785.4 -785.3 -785.2 -785.1 -785 + Bin 215: -785 -784.9 -784.8 -784.7 -784.6 -784.5 -784.4 -784.3 -784.2 -784.1 -784 + Bin 216: -784 -783.9 -783.8 -783.7 -783.6 -783.5 -783.4 -783.3 -783.2 -783.1 -783 + Bin 217: -783 -782.9 -782.8 -782.7 -782.6 -782.5 -782.4 -782.3 -782.2 -782.1 -782 + Bin 218: -782 -781.9 -781.8 -781.7 -781.6 -781.5 -781.4 -781.3 -781.2 -781.1 -781 + Bin 219: -781 -780.9 -780.8 -780.7 -780.6 -780.5 -780.4 -780.3 -780.2 -780.1 -780 + Bin 220: -780 -779.9 -779.8 -779.7 -779.6 -779.5 -779.4 -779.3 -779.2 -779.1 -779 + Bin 221: -779 -778.9 -778.8 -778.7 -778.6 -778.5 -778.4 -778.3 -778.2 -778.1 -778 + Bin 222: -778 -777.9 -777.8 -777.7 -777.6 -777.5 -777.4 -777.3 -777.2 -777.1 -777 + Bin 223: -777 -776.9 -776.8 -776.7 -776.6 -776.5 -776.4 -776.3 -776.2 -776.1 -776 + Bin 224: -776 -775.9 -775.8 -775.7 -775.6 -775.5 -775.4 -775.3 -775.2 -775.1 -775 + Bin 225: -775 -774.9 -774.8 -774.7 -774.6 -774.5 -774.4 -774.3 -774.2 -774.1 -774 + Bin 226: -774 -773.9 -773.8 -773.7 -773.6 -773.5 -773.4 -773.3 -773.2 -773.1 -773 + Bin 227: -773 -772.9 -772.8 -772.7 -772.6 -772.5 -772.4 -772.3 -772.2 -772.1 -772 + Bin 228: -772 -771.9 -771.8 -771.7 -771.6 -771.5 -771.4 -771.3 -771.2 -771.1 -771 + Bin 229: -771 -770.9 -770.8 -770.7 -770.6 -770.5 -770.4 -770.3 -770.2 -770.1 -770 + Bin 230: -770 -769.9 -769.8 -769.7 -769.6 -769.5 -769.4 -769.3 -769.2 -769.1 -769 + Bin 231: -769 -768.9 -768.8 -768.7 -768.6 -768.5 -768.4 -768.3 -768.2 -768.1 -768 + Bin 232: -768 -767.9 -767.8 -767.7 -767.6 -767.5 -767.4 -767.3 -767.2 -767.1 -767 + Bin 233: -767 -766.9 -766.8 -766.7 -766.6 -766.5 -766.4 -766.3 -766.2 -766.1 -766 + Bin 234: -766 -765.9 -765.8 -765.7 -765.6 -765.5 -765.4 -765.3 -765.2 -765.1 -765 + Bin 235: -765 -764.9 -764.8 -764.7 -764.6 -764.5 -764.4 -764.3 -764.2 -764.1 -764 + Bin 236: -764 -763.9 -763.8 -763.7 -763.6 -763.5 -763.4 -763.3 -763.2 -763.1 -763 + Bin 237: -763 -762.9 -762.8 -762.7 -762.6 -762.5 -762.4 -762.3 -762.2 -762.1 -762 + Bin 238: -762 -761.9 -761.8 -761.7 -761.6 -761.5 -761.4 -761.3 -761.2 -761.1 -761 + Bin 239: -761 -760.9 -760.8 -760.7 -760.6 -760.5 -760.4 -760.3 -760.2 -760.1 -760 + Bin 240: -760 -759.9 -759.8 -759.7 -759.6 -759.5 -759.4 -759.3 -759.2 -759.1 -759 + Bin 241: -759 -758.9 -758.8 -758.7 -758.6 -758.5 -758.4 -758.3 -758.2 -758.1 -758 + Bin 242: -758 -757.9 -757.8 -757.7 -757.6 -757.5 -757.4 -757.3 -757.2 -757.1 -757 + Bin 243: -757 -756.9 -756.8 -756.7 -756.6 -756.5 -756.4 -756.3 -756.2 -756.1 -756 + Bin 244: -756 -755.9 -755.8 -755.7 -755.6 -755.5 -755.4 -755.3 -755.2 -755.1 -755 + Bin 245: -755 -754.9 -754.8 -754.7 -754.6 -754.5 -754.4 -754.3 -754.2 -754.1 -754 + Bin 246: -754 -753.9 -753.8 -753.7 -753.6 -753.5 -753.4 -753.3 -753.2 -753.1 -753 + Bin 247: -753 -752.9 -752.8 -752.7 -752.6 -752.5 -752.4 -752.3 -752.2 -752.1 -752 + Bin 248: -752 -751.9 -751.8 -751.7 -751.6 -751.5 -751.4 -751.3 -751.2 -751.1 -751 + Bin 249: -751 -750.9 -750.8 -750.7 -750.6 -750.5 -750.4 -750.3 -750.2 -750.1 -750 + Bin 250: -750 -749.9 -749.8 -749.7 -749.6 -749.5 -749.4 -749.3 -749.2 -749.1 -749 + Bin 251: -749 -748.9 -748.8 -748.7 -748.6 -748.5 -748.4 -748.3 -748.2 -748.1 -748 + Bin 252: -748 -747.9 -747.8 -747.7 -747.6 -747.5 -747.4 -747.3 -747.2 -747.1 -747 + Bin 253: -747 -746.9 -746.8 -746.7 -746.6 -746.5 -746.4 -746.3 -746.2 -746.1 -746 + Bin 254: -746 -745.9 -745.8 -745.7 -745.6 -745.5 -745.4 -745.3 -745.2 -745.1 -745 + Bin 255: -745 -744.9 -744.8 -744.7 -744.6 -744.5 -744.4 -744.3 -744.2 -744.1 -744 + Bin 256: -744 -743.9 -743.8 -743.7 -743.6 -743.5 -743.4 -743.3 -743.2 -743.1 -743 + Bin 257: -743 -742.9 -742.8 -742.7 -742.6 -742.5 -742.4 -742.3 -742.2 -742.1 -742 + Bin 258: -742 -741.9 -741.8 -741.7 -741.6 -741.5 -741.4 -741.3 -741.2 -741.1 -741 + Bin 259: -741 -740.9 -740.8 -740.7 -740.6 -740.5 -740.4 -740.3 -740.2 -740.1 -740 + Bin 260: -740 -739.9 -739.8 -739.7 -739.6 -739.5 -739.4 -739.3 -739.2 -739.1 -739 + Bin 261: -739 -738.9 -738.8 -738.7 -738.6 -738.5 -738.4 -738.3 -738.2 -738.1 -738 + Bin 262: -738 -737.9 -737.8 -737.7 -737.6 -737.5 -737.4 -737.3 -737.2 -737.1 -737 + Bin 263: -737 -736.9 -736.8 -736.7 -736.6 -736.5 -736.4 -736.3 -736.2 -736.1 -736 + Bin 264: -736 -735.9 -735.8 -735.7 -735.6 -735.5 -735.4 -735.3 -735.2 -735.1 -735 + Bin 265: -735 -734.9 -734.8 -734.7 -734.6 -734.5 -734.4 -734.3 -734.2 -734.1 -734 + Bin 266: -734 -733.9 -733.8 -733.7 -733.6 -733.5 -733.4 -733.3 -733.2 -733.1 -733 + Bin 267: -733 -732.9 -732.8 -732.7 -732.6 -732.5 -732.4 -732.3 -732.2 -732.1 -732 + Bin 268: -732 -731.9 -731.8 -731.7 -731.6 -731.5 -731.4 -731.3 -731.2 -731.1 -731 + Bin 269: -731 -730.9 -730.8 -730.7 -730.6 -730.5 -730.4 -730.3 -730.2 -730.1 -730 + Bin 270: -730 -729.9 -729.8 -729.7 -729.6 -729.5 -729.4 -729.3 -729.2 -729.1 -729 + Bin 271: -729 -728.9 -728.8 -728.7 -728.6 -728.5 -728.4 -728.3 -728.2 -728.1 -728 + Bin 272: -728 -727.9 -727.8 -727.7 -727.6 -727.5 -727.4 -727.3 -727.2 -727.1 -727 + Bin 273: -727 -726.9 -726.8 -726.7 -726.6 -726.5 -726.4 -726.3 -726.2 -726.1 -726 + Bin 274: -726 -725.9 -725.8 -725.7 -725.6 -725.5 -725.4 -725.3 -725.2 -725.1 -725 + Bin 275: -725 -724.9 -724.8 -724.7 -724.6 -724.5 -724.4 -724.3 -724.2 -724.1 -724 + Bin 276: -724 -723.9 -723.8 -723.7 -723.6 -723.5 -723.4 -723.3 -723.2 -723.1 -723 + Bin 277: -723 -722.9 -722.8 -722.7 -722.6 -722.5 -722.4 -722.3 -722.2 -722.1 -722 + Bin 278: -722 -721.9 -721.8 -721.7 -721.6 -721.5 -721.4 -721.3 -721.2 -721.1 -721 + Bin 279: -721 -720.9 -720.8 -720.7 -720.6 -720.5 -720.4 -720.3 -720.2 -720.1 -720 + Bin 280: -720 -719.9 -719.8 -719.7 -719.6 -719.5 -719.4 -719.3 -719.2 -719.1 -719 + Bin 281: -719 -718.9 -718.8 -718.7 -718.6 -718.5 -718.4 -718.3 -718.2 -718.1 -718 + Bin 282: -718 -717.9 -717.8 -717.7 -717.6 -717.5 -717.4 -717.3 -717.2 -717.1 -717 + Bin 283: -717 -716.9 -716.8 -716.7 -716.6 -716.5 -716.4 -716.3 -716.2 -716.1 -716 + Bin 284: -716 -715.9 -715.8 -715.7 -715.6 -715.5 -715.4 -715.3 -715.2 -715.1 -715 + Bin 285: -715 -714.9 -714.8 -714.7 -714.6 -714.5 -714.4 -714.3 -714.2 -714.1 -714 + Bin 286: -714 -713.9 -713.8 -713.7 -713.6 -713.5 -713.4 -713.3 -713.2 -713.1 -713 + Bin 287: -713 -712.9 -712.8 -712.7 -712.6 -712.5 -712.4 -712.3 -712.2 -712.1 -712 + Bin 288: -712 -711.9 -711.8 -711.7 -711.6 -711.5 -711.4 -711.3 -711.2 -711.1 -711 + Bin 289: -711 -710.9 -710.8 -710.7 -710.6 -710.5 -710.4 -710.3 -710.2 -710.1 -710 + Bin 290: -710 -709.9 -709.8 -709.7 -709.6 -709.5 -709.4 -709.3 -709.2 -709.1 -709 + Bin 291: -709 -708.9 -708.8 -708.7 -708.6 -708.5 -708.4 -708.3 -708.2 -708.1 -708 + Bin 292: -708 -707.9 -707.8 -707.7 -707.6 -707.5 -707.4 -707.3 -707.2 -707.1 -707 + Bin 293: -707 -706.9 -706.8 -706.7 -706.6 -706.5 -706.4 -706.3 -706.2 -706.1 -706 + Bin 294: -706 -705.9 -705.8 -705.7 -705.6 -705.5 -705.4 -705.3 -705.2 -705.1 -705 + Bin 295: -705 -704.9 -704.8 -704.7 -704.6 -704.5 -704.4 -704.3 -704.2 -704.1 -704 + Bin 296: -704 -703.9 -703.8 -703.7 -703.6 -703.5 -703.4 -703.3 -703.2 -703.1 -703 + Bin 297: -703 -702.9 -702.8 -702.7 -702.6 -702.5 -702.4 -702.3 -702.2 -702.1 -702 + Bin 298: -702 -701.9 -701.8 -701.7 -701.6 -701.5 -701.4 -701.3 -701.2 -701.1 -701 + Bin 299: -701 -700.9 -700.8 -700.7 -700.6 -700.5 -700.4 -700.3 -700.2 -700.1 -700 + Bin 300: -700 -699.9 -699.8 -699.7 -699.6 -699.5 -699.4 -699.3 -699.2 -699.1 -699 + Bin 301: -699 -698.9 -698.8 -698.7 -698.6 -698.5 -698.4 -698.3 -698.2 -698.1 -698 + Bin 302: -698 -697.9 -697.8 -697.7 -697.6 -697.5 -697.4 -697.3 -697.2 -697.1 -697 + Bin 303: -697 -696.9 -696.8 -696.7 -696.6 -696.5 -696.4 -696.3 -696.2 -696.1 -696 + Bin 304: -696 -695.9 -695.8 -695.7 -695.6 -695.5 -695.4 -695.3 -695.2 -695.1 -695 + Bin 305: -695 -694.9 -694.8 -694.7 -694.6 -694.5 -694.4 -694.3 -694.2 -694.1 -694 + Bin 306: -694 -693.9 -693.8 -693.7 -693.6 -693.5 -693.4 -693.3 -693.2 -693.1 -693 + Bin 307: -693 -692.9 -692.8 -692.7 -692.6 -692.5 -692.4 -692.3 -692.2 -692.1 -692 + Bin 308: -692 -691.9 -691.8 -691.7 -691.6 -691.5 -691.4 -691.3 -691.2 -691.1 -691 + Bin 309: -691 -690.9 -690.8 -690.7 -690.6 -690.5 -690.4 -690.3 -690.2 -690.1 -690 + Bin 310: -690 -689.9 -689.8 -689.7 -689.6 -689.5 -689.4 -689.3 -689.2 -689.1 -689 + Bin 311: -689 -688.9 -688.8 -688.7 -688.6 -688.5 -688.4 -688.3 -688.2 -688.1 -688 + Bin 312: -688 -687.9 -687.8 -687.7 -687.6 -687.5 -687.4 -687.3 -687.2 -687.1 -687 + Bin 313: -687 -686.9 -686.8 -686.7 -686.6 -686.5 -686.4 -686.3 -686.2 -686.1 -686 + Bin 314: -686 -685.9 -685.8 -685.7 -685.6 -685.5 -685.4 -685.3 -685.2 -685.1 -685 + Bin 315: -685 -684.9 -684.8 -684.7 -684.6 -684.5 -684.4 -684.3 -684.2 -684.1 -684 + Bin 316: -684 -683.9 -683.8 -683.7 -683.6 -683.5 -683.4 -683.3 -683.2 -683.1 -683 + Bin 317: -683 -682.9 -682.8 -682.7 -682.6 -682.5 -682.4 -682.3 -682.2 -682.1 -682 + Bin 318: -682 -681.9 -681.8 -681.7 -681.6 -681.5 -681.4 -681.3 -681.2 -681.1 -681 + Bin 319: -681 -680.9 -680.8 -680.7 -680.6 -680.5 -680.4 -680.3 -680.2 -680.1 -680 + Bin 320: -680 -679.9 -679.8 -679.7 -679.6 -679.5 -679.4 -679.3 -679.2 -679.1 -679 + Bin 321: -679 -678.9 -678.8 -678.7 -678.6 -678.5 -678.4 -678.3 -678.2 -678.1 -678 + Bin 322: -678 -677.9 -677.8 -677.7 -677.6 -677.5 -677.4 -677.3 -677.2 -677.1 -677 + Bin 323: -677 -676.9 -676.8 -676.7 -676.6 -676.5 -676.4 -676.3 -676.2 -676.1 -676 + Bin 324: -676 -675.9 -675.8 -675.7 -675.6 -675.5 -675.4 -675.3 -675.2 -675.1 -675 + Bin 325: -675 -674.9 -674.8 -674.7 -674.6 -674.5 -674.4 -674.3 -674.2 -674.1 -674 + Bin 326: -674 -673.9 -673.8 -673.7 -673.6 -673.5 -673.4 -673.3 -673.2 -673.1 -673 + Bin 327: -673 -672.9 -672.8 -672.7 -672.6 -672.5 -672.4 -672.3 -672.2 -672.1 -672 + Bin 328: -672 -671.9 -671.8 -671.7 -671.6 -671.5 -671.4 -671.3 -671.2 -671.1 -671 + Bin 329: -671 -670.9 -670.8 -670.7 -670.6 -670.5 -670.4 -670.3 -670.2 -670.1 -670 + Bin 330: -670 -669.9 -669.8 -669.7 -669.6 -669.5 -669.4 -669.3 -669.2 -669.1 -669 + Bin 331: -669 -668.9 -668.8 -668.7 -668.6 -668.5 -668.4 -668.3 -668.2 -668.1 -668 + Bin 332: -668 -667.9 -667.8 -667.7 -667.6 -667.5 -667.4 -667.3 -667.2 -667.1 -667 + Bin 333: -667 -666.9 -666.8 -666.7 -666.6 -666.5 -666.4 -666.3 -666.2 -666.1 -666 + Bin 334: -666 -665.9 -665.8 -665.7 -665.6 -665.5 -665.4 -665.3 -665.2 -665.1 -665 + Bin 335: -665 -664.9 -664.8 -664.7 -664.6 -664.5 -664.4 -664.3 -664.2 -664.1 -664 + Bin 336: -664 -663.9 -663.8 -663.7 -663.6 -663.5 -663.4 -663.3 -663.2 -663.1 -663 + Bin 337: -663 -662.9 -662.8 -662.7 -662.6 -662.5 -662.4 -662.3 -662.2 -662.1 -662 + Bin 338: -662 -661.9 -661.8 -661.7 -661.6 -661.5 -661.4 -661.3 -661.2 -661.1 -661 + Bin 339: -661 -660.9 -660.8 -660.7 -660.6 -660.5 -660.4 -660.3 -660.2 -660.1 -660 + Bin 340: -660 -659.9 -659.8 -659.7 -659.6 -659.5 -659.4 -659.3 -659.2 -659.1 -659 + Bin 341: -659 -658.9 -658.8 -658.7 -658.6 -658.5 -658.4 -658.3 -658.2 -658.1 -658 + Bin 342: -658 -657.9 -657.8 -657.7 -657.6 -657.5 -657.4 -657.3 -657.2 -657.1 -657 + Bin 343: -657 -656.9 -656.8 -656.7 -656.6 -656.5 -656.4 -656.3 -656.2 -656.1 -656 + Bin 344: -656 -655.9 -655.8 -655.7 -655.6 -655.5 -655.4 -655.3 -655.2 -655.1 -655 + Bin 345: -655 -654.9 -654.8 -654.7 -654.6 -654.5 -654.4 -654.3 -654.2 -654.1 -654 + Bin 346: -654 -653.9 -653.8 -653.7 -653.6 -653.5 -653.4 -653.3 -653.2 -653.1 -653 + Bin 347: -653 -652.9 -652.8 -652.7 -652.6 -652.5 -652.4 -652.3 -652.2 -652.1 -652 + Bin 348: -652 -651.9 -651.8 -651.7 -651.6 -651.5 -651.4 -651.3 -651.2 -651.1 -651 + Bin 349: -651 -650.9 -650.8 -650.7 -650.6 -650.5 -650.4 -650.3 -650.2 -650.1 -650 + Bin 350: -650 -649.9 -649.8 -649.7 -649.6 -649.5 -649.4 -649.3 -649.2 -649.1 -649 + Bin 351: -649 -648.9 -648.8 -648.7 -648.6 -648.5 -648.4 -648.3 -648.2 -648.1 -648 + Bin 352: -648 -647.9 -647.8 -647.7 -647.6 -647.5 -647.4 -647.3 -647.2 -647.1 -647 + Bin 353: -647 -646.9 -646.8 -646.7 -646.6 -646.5 -646.4 -646.3 -646.2 -646.1 -646 + Bin 354: -646 -645.9 -645.8 -645.7 -645.6 -645.5 -645.4 -645.3 -645.2 -645.1 -645 + Bin 355: -645 -644.9 -644.8 -644.7 -644.6 -644.5 -644.4 -644.3 -644.2 -644.1 -644 + Bin 356: -644 -643.9 -643.8 -643.7 -643.6 -643.5 -643.4 -643.3 -643.2 -643.1 -643 + Bin 357: -643 -642.9 -642.8 -642.7 -642.6 -642.5 -642.4 -642.3 -642.2 -642.1 -642 + Bin 358: -642 -641.9 -641.8 -641.7 -641.6 -641.5 -641.4 -641.3 -641.2 -641.1 -641 + Bin 359: -641 -640.9 -640.8 -640.7 -640.6 -640.5 -640.4 -640.3 -640.2 -640.1 -640 + Bin 360: -640 -639.9 -639.8 -639.7 -639.6 -639.5 -639.4 -639.3 -639.2 -639.1 -639 + Bin 361: -639 -638.9 -638.8 -638.7 -638.6 -638.5 -638.4 -638.3 -638.2 -638.1 -638 + Bin 362: -638 -637.9 -637.8 -637.7 -637.6 -637.5 -637.4 -637.3 -637.2 -637.1 -637 + Bin 363: -637 -636.9 -636.8 -636.7 -636.6 -636.5 -636.4 -636.3 -636.2 -636.1 -636 + Bin 364: -636 -635.9 -635.8 -635.7 -635.6 -635.5 -635.4 -635.3 -635.2 -635.1 -635 + Bin 365: -635 -634.9 -634.8 -634.7 -634.6 -634.5 -634.4 -634.3 -634.2 -634.1 -634 + Bin 366: -634 -633.9 -633.8 -633.7 -633.6 -633.5 -633.4 -633.3 -633.2 -633.1 -633 + Bin 367: -633 -632.9 -632.8 -632.7 -632.6 -632.5 -632.4 -632.3 -632.2 -632.1 -632 + Bin 368: -632 -631.9 -631.8 -631.7 -631.6 -631.5 -631.4 -631.3 -631.2 -631.1 -631 + Bin 369: -631 -630.9 -630.8 -630.7 -630.6 -630.5 -630.4 -630.3 -630.2 -630.1 -630 + Bin 370: -630 -629.9 -629.8 -629.7 -629.6 -629.5 -629.4 -629.3 -629.2 -629.1 -629 + Bin 371: -629 -628.9 -628.8 -628.7 -628.6 -628.5 -628.4 -628.3 -628.2 -628.1 -628 + Bin 372: -628 -627.9 -627.8 -627.7 -627.6 -627.5 -627.4 -627.3 -627.2 -627.1 -627 + Bin 373: -627 -626.9 -626.8 -626.7 -626.6 -626.5 -626.4 -626.3 -626.2 -626.1 -626 + Bin 374: -626 -625.9 -625.8 -625.7 -625.6 -625.5 -625.4 -625.3 -625.2 -625.1 -625 + Bin 375: -625 -624.9 -624.8 -624.7 -624.6 -624.5 -624.4 -624.3 -624.2 -624.1 -624 + Bin 376: -624 -623.9 -623.8 -623.7 -623.6 -623.5 -623.4 -623.3 -623.2 -623.1 -623 + Bin 377: -623 -622.9 -622.8 -622.7 -622.6 -622.5 -622.4 -622.3 -622.2 -622.1 -622 + Bin 378: -622 -621.9 -621.8 -621.7 -621.6 -621.5 -621.4 -621.3 -621.2 -621.1 -621 + Bin 379: -621 -620.9 -620.8 -620.7 -620.6 -620.5 -620.4 -620.3 -620.2 -620.1 -620 + Bin 380: -620 -619.9 -619.8 -619.7 -619.6 -619.5 -619.4 -619.3 -619.2 -619.1 -619 + Bin 381: -619 -618.9 -618.8 -618.7 -618.6 -618.5 -618.4 -618.3 -618.2 -618.1 -618 + Bin 382: -618 -617.9 -617.8 -617.7 -617.6 -617.5 -617.4 -617.3 -617.2 -617.1 -617 + Bin 383: -617 -616.9 -616.8 -616.7 -616.6 -616.5 -616.4 -616.3 -616.2 -616.1 -616 + Bin 384: -616 -615.9 -615.8 -615.7 -615.6 -615.5 -615.4 -615.3 -615.2 -615.1 -615 + Bin 385: -615 -614.9 -614.8 -614.7 -614.6 -614.5 -614.4 -614.3 -614.2 -614.1 -614 + Bin 386: -614 -613.9 -613.8 -613.7 -613.6 -613.5 -613.4 -613.3 -613.2 -613.1 -613 + Bin 387: -613 -612.9 -612.8 -612.7 -612.6 -612.5 -612.4 -612.3 -612.2 -612.1 -612 + Bin 388: -612 -611.9 -611.8 -611.7 -611.6 -611.5 -611.4 -611.3 -611.2 -611.1 -611 + Bin 389: -611 -610.9 -610.8 -610.7 -610.6 -610.5 -610.4 -610.3 -610.2 -610.1 -610 + Bin 390: -610 -609.9 -609.8 -609.7 -609.6 -609.5 -609.4 -609.3 -609.2 -609.1 -609 + Bin 391: -609 -608.9 -608.8 -608.7 -608.6 -608.5 -608.4 -608.3 -608.2 -608.1 -608 + Bin 392: -608 -607.9 -607.8 -607.7 -607.6 -607.5 -607.4 -607.3 -607.2 -607.1 -607 + Bin 393: -607 -606.9 -606.8 -606.7 -606.6 -606.5 -606.4 -606.3 -606.2 -606.1 -606 + Bin 394: -606 -605.9 -605.8 -605.7 -605.6 -605.5 -605.4 -605.3 -605.2 -605.1 -605 + Bin 395: -605 -604.9 -604.8 -604.7 -604.6 -604.5 -604.4 -604.3 -604.2 -604.1 -604 + Bin 396: -604 -603.9 -603.8 -603.7 -603.6 -603.5 -603.4 -603.3 -603.2 -603.1 -603 + Bin 397: -603 -602.9 -602.8 -602.7 -602.6 -602.5 -602.4 -602.3 -602.2 -602.1 -602 + Bin 398: -602 -601.9 -601.8 -601.7 -601.6 -601.5 -601.4 -601.3 -601.2 -601.1 -601 + Bin 399: -601 -600.9 -600.8 -600.7 -600.6 -600.5 -600.4 -600.3 -600.2 -600.1 -600 + Bin 400: -600 -599.9 -599.8 -599.7 -599.6 -599.5 -599.4 -599.3 -599.2 -599.1 -599 + Bin 401: -599 -598.9 -598.8 -598.7 -598.6 -598.5 -598.4 -598.3 -598.2 -598.1 -598 + Bin 402: -598 -597.9 -597.8 -597.7 -597.6 -597.5 -597.4 -597.3 -597.2 -597.1 -597 + Bin 403: -597 -596.9 -596.8 -596.7 -596.6 -596.5 -596.4 -596.3 -596.2 -596.1 -596 + Bin 404: -596 -595.9 -595.8 -595.7 -595.6 -595.5 -595.4 -595.3 -595.2 -595.1 -595 + Bin 405: -595 -594.9 -594.8 -594.7 -594.6 -594.5 -594.4 -594.3 -594.2 -594.1 -594 + Bin 406: -594 -593.9 -593.8 -593.7 -593.6 -593.5 -593.4 -593.3 -593.2 -593.1 -593 + Bin 407: -593 -592.9 -592.8 -592.7 -592.6 -592.5 -592.4 -592.3 -592.2 -592.1 -592 + Bin 408: -592 -591.9 -591.8 -591.7 -591.6 -591.5 -591.4 -591.3 -591.2 -591.1 -591 + Bin 409: -591 -590.9 -590.8 -590.7 -590.6 -590.5 -590.4 -590.3 -590.2 -590.1 -590 + Bin 410: -590 -589.9 -589.8 -589.7 -589.6 -589.5 -589.4 -589.3 -589.2 -589.1 -589 + Bin 411: -589 -588.9 -588.8 -588.7 -588.6 -588.5 -588.4 -588.3 -588.2 -588.1 -588 + Bin 412: -588 -587.9 -587.8 -587.7 -587.6 -587.5 -587.4 -587.3 -587.2 -587.1 -587 + Bin 413: -587 -586.9 -586.8 -586.7 -586.6 -586.5 -586.4 -586.3 -586.2 -586.1 -586 + Bin 414: -586 -585.9 -585.8 -585.7 -585.6 -585.5 -585.4 -585.3 -585.2 -585.1 -585 + Bin 415: -585 -584.9 -584.8 -584.7 -584.6 -584.5 -584.4 -584.3 -584.2 -584.1 -584 + Bin 416: -584 -583.9 -583.8 -583.7 -583.6 -583.5 -583.4 -583.3 -583.2 -583.1 -583 + Bin 417: -583 -582.9 -582.8 -582.7 -582.6 -582.5 -582.4 -582.3 -582.2 -582.1 -582 + Bin 418: -582 -581.9 -581.8 -581.7 -581.6 -581.5 -581.4 -581.3 -581.2 -581.1 -581 + Bin 419: -581 -580.9 -580.8 -580.7 -580.6 -580.5 -580.4 -580.3 -580.2 -580.1 -580 + Bin 420: -580 -579.9 -579.8 -579.7 -579.6 -579.5 -579.4 -579.3 -579.2 -579.1 -579 + Bin 421: -579 -578.9 -578.8 -578.7 -578.6 -578.5 -578.4 -578.3 -578.2 -578.1 -578 + Bin 422: -578 -577.9 -577.8 -577.7 -577.6 -577.5 -577.4 -577.3 -577.2 -577.1 -577 + Bin 423: -577 -576.9 -576.8 -576.7 -576.6 -576.5 -576.4 -576.3 -576.2 -576.1 -576 + Bin 424: -576 -575.9 -575.8 -575.7 -575.6 -575.5 -575.4 -575.3 -575.2 -575.1 -575 + Bin 425: -575 -574.9 -574.8 -574.7 -574.6 -574.5 -574.4 -574.3 -574.2 -574.1 -574 + Bin 426: -574 -573.9 -573.8 -573.7 -573.6 -573.5 -573.4 -573.3 -573.2 -573.1 -573 + Bin 427: -573 -572.9 -572.8 -572.7 -572.6 -572.5 -572.4 -572.3 -572.2 -572.1 -572 + Bin 428: -572 -571.9 -571.8 -571.7 -571.6 -571.5 -571.4 -571.3 -571.2 -571.1 -571 + Bin 429: -571 -570.9 -570.8 -570.7 -570.6 -570.5 -570.4 -570.3 -570.2 -570.1 -570 + Bin 430: -570 -569.9 -569.8 -569.7 -569.6 -569.5 -569.4 -569.3 -569.2 -569.1 -569 + Bin 431: -569 -568.9 -568.8 -568.7 -568.6 -568.5 -568.4 -568.3 -568.2 -568.1 -568 + Bin 432: -568 -567.9 -567.8 -567.7 -567.6 -567.5 -567.4 -567.3 -567.2 -567.1 -567 + Bin 433: -567 -566.9 -566.8 -566.7 -566.6 -566.5 -566.4 -566.3 -566.2 -566.1 -566 + Bin 434: -566 -565.9 -565.8 -565.7 -565.6 -565.5 -565.4 -565.3 -565.2 -565.1 -565 + Bin 435: -565 -564.9 -564.8 -564.7 -564.6 -564.5 -564.4 -564.3 -564.2 -564.1 -564 + Bin 436: -564 -563.9 -563.8 -563.7 -563.6 -563.5 -563.4 -563.3 -563.2 -563.1 -563 + Bin 437: -563 -562.9 -562.8 -562.7 -562.6 -562.5 -562.4 -562.3 -562.2 -562.1 -562 + Bin 438: -562 -561.9 -561.8 -561.7 -561.6 -561.5 -561.4 -561.3 -561.2 -561.1 -561 + Bin 439: -561 -560.9 -560.8 -560.7 -560.6 -560.5 -560.4 -560.3 -560.2 -560.1 -560 + Bin 440: -560 -559.9 -559.8 -559.7 -559.6 -559.5 -559.4 -559.3 -559.2 -559.1 -559 + Bin 441: -559 -558.9 -558.8 -558.7 -558.6 -558.5 -558.4 -558.3 -558.2 -558.1 -558 + Bin 442: -558 -557.9 -557.8 -557.7 -557.6 -557.5 -557.4 -557.3 -557.2 -557.1 -557 + Bin 443: -557 -556.9 -556.8 -556.7 -556.6 -556.5 -556.4 -556.3 -556.2 -556.1 -556 + Bin 444: -556 -555.9 -555.8 -555.7 -555.6 -555.5 -555.4 -555.3 -555.2 -555.1 -555 + Bin 445: -555 -554.9 -554.8 -554.7 -554.6 -554.5 -554.4 -554.3 -554.2 -554.1 -554 + Bin 446: -554 -553.9 -553.8 -553.7 -553.6 -553.5 -553.4 -553.3 -553.2 -553.1 -553 + Bin 447: -553 -552.9 -552.8 -552.7 -552.6 -552.5 -552.4 -552.3 -552.2 -552.1 -552 + Bin 448: -552 -551.9 -551.8 -551.7 -551.6 -551.5 -551.4 -551.3 -551.2 -551.1 -551 + Bin 449: -551 -550.9 -550.8 -550.7 -550.6 -550.5 -550.4 -550.3 -550.2 -550.1 -550 + Bin 450: -550 -549.9 -549.8 -549.7 -549.6 -549.5 -549.4 -549.3 -549.2 -549.1 -549 + Bin 451: -549 -548.9 -548.8 -548.7 -548.6 -548.5 -548.4 -548.3 -548.2 -548.1 -548 + Bin 452: -548 -547.9 -547.8 -547.7 -547.6 -547.5 -547.4 -547.3 -547.2 -547.1 -547 + Bin 453: -547 -546.9 -546.8 -546.7 -546.6 -546.5 -546.4 -546.3 -546.2 -546.1 -546 + Bin 454: -546 -545.9 -545.8 -545.7 -545.6 -545.5 -545.4 -545.3 -545.2 -545.1 -545 + Bin 455: -545 -544.9 -544.8 -544.7 -544.6 -544.5 -544.4 -544.3 -544.2 -544.1 -544 + Bin 456: -544 -543.9 -543.8 -543.7 -543.6 -543.5 -543.4 -543.3 -543.2 -543.1 -543 + Bin 457: -543 -542.9 -542.8 -542.7 -542.6 -542.5 -542.4 -542.3 -542.2 -542.1 -542 + Bin 458: -542 -541.9 -541.8 -541.7 -541.6 -541.5 -541.4 -541.3 -541.2 -541.1 -541 + Bin 459: -541 -540.9 -540.8 -540.7 -540.6 -540.5 -540.4 -540.3 -540.2 -540.1 -540 + Bin 460: -540 -539.9 -539.8 -539.7 -539.6 -539.5 -539.4 -539.3 -539.2 -539.1 -539 + Bin 461: -539 -538.9 -538.8 -538.7 -538.6 -538.5 -538.4 -538.3 -538.2 -538.1 -538 + Bin 462: -538 -537.9 -537.8 -537.7 -537.6 -537.5 -537.4 -537.3 -537.2 -537.1 -537 + Bin 463: -537 -536.9 -536.8 -536.7 -536.6 -536.5 -536.4 -536.3 -536.2 -536.1 -536 + Bin 464: -536 -535.9 -535.8 -535.7 -535.6 -535.5 -535.4 -535.3 -535.2 -535.1 -535 + Bin 465: -535 -534.9 -534.8 -534.7 -534.6 -534.5 -534.4 -534.3 -534.2 -534.1 -534 + Bin 466: -534 -533.9 -533.8 -533.7 -533.6 -533.5 -533.4 -533.3 -533.2 -533.1 -533 + Bin 467: -533 -532.9 -532.8 -532.7 -532.6 -532.5 -532.4 -532.3 -532.2 -532.1 -532 + Bin 468: -532 -531.9 -531.8 -531.7 -531.6 -531.5 -531.4 -531.3 -531.2 -531.1 -531 + Bin 469: -531 -530.9 -530.8 -530.7 -530.6 -530.5 -530.4 -530.3 -530.2 -530.1 -530 + Bin 470: -530 -529.9 -529.8 -529.7 -529.6 -529.5 -529.4 -529.3 -529.2 -529.1 -529 + Bin 471: -529 -528.9 -528.8 -528.7 -528.6 -528.5 -528.4 -528.3 -528.2 -528.1 -528 + Bin 472: -528 -527.9 -527.8 -527.7 -527.6 -527.5 -527.4 -527.3 -527.2 -527.1 -527 + Bin 473: -527 -526.9 -526.8 -526.7 -526.6 -526.5 -526.4 -526.3 -526.2 -526.1 -526 + Bin 474: -526 -525.9 -525.8 -525.7 -525.6 -525.5 -525.4 -525.3 -525.2 -525.1 -525 + Bin 475: -525 -524.9 -524.8 -524.7 -524.6 -524.5 -524.4 -524.3 -524.2 -524.1 -524 + Bin 476: -524 -523.9 -523.8 -523.7 -523.6 -523.5 -523.4 -523.3 -523.2 -523.1 -523 + Bin 477: -523 -522.9 -522.8 -522.7 -522.6 -522.5 -522.4 -522.3 -522.2 -522.1 -522 + Bin 478: -522 -521.9 -521.8 -521.7 -521.6 -521.5 -521.4 -521.3 -521.2 -521.1 -521 + Bin 479: -521 -520.9 -520.8 -520.7 -520.6 -520.5 -520.4 -520.3 -520.2 -520.1 -520 + Bin 480: -520 -519.9 -519.8 -519.7 -519.6 -519.5 -519.4 -519.3 -519.2 -519.1 -519 + Bin 481: -519 -518.9 -518.8 -518.7 -518.6 -518.5 -518.4 -518.3 -518.2 -518.1 -518 + Bin 482: -518 -517.9 -517.8 -517.7 -517.6 -517.5 -517.4 -517.3 -517.2 -517.1 -517 + Bin 483: -517 -516.9 -516.8 -516.7 -516.6 -516.5 -516.4 -516.3 -516.2 -516.1 -516 + Bin 484: -516 -515.9 -515.8 -515.7 -515.6 -515.5 -515.4 -515.3 -515.2 -515.1 -515 + Bin 485: -515 -514.9 -514.8 -514.7 -514.6 -514.5 -514.4 -514.3 -514.2 -514.1 -514 + Bin 486: -514 -513.9 -513.8 -513.7 -513.6 -513.5 -513.4 -513.3 -513.2 -513.1 -513 + Bin 487: -513 -512.9 -512.8 -512.7 -512.6 -512.5 -512.4 -512.3 -512.2 -512.1 -512 + Bin 488: -512 -511.9 -511.8 -511.7 -511.6 -511.5 -511.4 -511.3 -511.2 -511.1 -511 + Bin 489: -511 -510.9 -510.8 -510.7 -510.6 -510.5 -510.4 -510.3 -510.2 -510.1 -510 + Bin 490: -510 -509.9 -509.8 -509.7 -509.6 -509.5 -509.4 -509.3 -509.2 -509.1 -509 + Bin 491: -509 -508.9 -508.8 -508.7 -508.6 -508.5 -508.4 -508.3 -508.2 -508.1 -508 + Bin 492: -508 -507.9 -507.8 -507.7 -507.6 -507.5 -507.4 -507.3 -507.2 -507.1 -507 + Bin 493: -507 -506.9 -506.8 -506.7 -506.6 -506.5 -506.4 -506.3 -506.2 -506.1 -506 + Bin 494: -506 -505.9 -505.8 -505.7 -505.6 -505.5 -505.4 -505.3 -505.2 -505.1 -505 + Bin 495: -505 -504.9 -504.8 -504.7 -504.6 -504.5 -504.4 -504.3 -504.2 -504.1 -504 + Bin 496: -504 -503.9 -503.8 -503.7 -503.6 -503.5 -503.4 -503.3 -503.2 -503.1 -503 + Bin 497: -503 -502.9 -502.8 -502.7 -502.6 -502.5 -502.4 -502.3 -502.2 -502.1 -502 + Bin 498: -502 -501.9 -501.8 -501.7 -501.6 -501.5 -501.4 -501.3 -501.2 -501.1 -501 + Bin 499: -501 -500.9 -500.8 -500.7 -500.6 -500.5 -500.4 -500.3 -500.2 -500.1 -500 + Bin 500: -500 -499.9 -499.8 -499.7 -499.6 -499.5 -499.4 -499.3 -499.2 -499.1 -499 + Bin 501: -499 -498.9 -498.8 -498.7 -498.6 -498.5 -498.4 -498.3 -498.2 -498.1 -498 + Bin 502: -498 -497.9 -497.8 -497.7 -497.6 -497.5 -497.4 -497.3 -497.2 -497.1 -497 + Bin 503: -497 -496.9 -496.8 -496.7 -496.6 -496.5 -496.4 -496.3 -496.2 -496.1 -496 + Bin 504: -496 -495.9 -495.8 -495.7 -495.6 -495.5 -495.4 -495.3 -495.2 -495.1 -495 + Bin 505: -495 -494.9 -494.8 -494.7 -494.6 -494.5 -494.4 -494.3 -494.2 -494.1 -494 + Bin 506: -494 -493.9 -493.8 -493.7 -493.6 -493.5 -493.4 -493.3 -493.2 -493.1 -493 + Bin 507: -493 -492.9 -492.8 -492.7 -492.6 -492.5 -492.4 -492.3 -492.2 -492.1 -492 + Bin 508: -492 -491.9 -491.8 -491.7 -491.6 -491.5 -491.4 -491.3 -491.2 -491.1 -491 + Bin 509: -491 -490.9 -490.8 -490.7 -490.6 -490.5 -490.4 -490.3 -490.2 -490.1 -490 + Bin 510: -490 -489.9 -489.8 -489.7 -489.6 -489.5 -489.4 -489.3 -489.2 -489.1 -489 + Bin 511: -489 -488.9 -488.8 -488.7 -488.6 -488.5 -488.4 -488.3 -488.2 -488.1 -488 + Bin 512: -488 -487.9 -487.8 -487.7 -487.6 -487.5 -487.4 -487.3 -487.2 -487.1 -487 + Bin 513: -487 -486.9 -486.8 -486.7 -486.6 -486.5 -486.4 -486.3 -486.2 -486.1 -486 + Bin 514: -486 -485.9 -485.8 -485.7 -485.6 -485.5 -485.4 -485.3 -485.2 -485.1 -485 + Bin 515: -485 -484.9 -484.8 -484.7 -484.6 -484.5 -484.4 -484.3 -484.2 -484.1 -484 + Bin 516: -484 -483.9 -483.8 -483.7 -483.6 -483.5 -483.4 -483.3 -483.2 -483.1 -483 + Bin 517: -483 -482.9 -482.8 -482.7 -482.6 -482.5 -482.4 -482.3 -482.2 -482.1 -482 + Bin 518: -482 -481.9 -481.8 -481.7 -481.6 -481.5 -481.4 -481.3 -481.2 -481.1 -481 + Bin 519: -481 -480.9 -480.8 -480.7 -480.6 -480.5 -480.4 -480.3 -480.2 -480.1 -480 + Bin 520: -480 -479.9 -479.8 -479.7 -479.6 -479.5 -479.4 -479.3 -479.2 -479.1 -479 + Bin 521: -479 -478.9 -478.8 -478.7 -478.6 -478.5 -478.4 -478.3 -478.2 -478.1 -478 + Bin 522: -478 -477.9 -477.8 -477.7 -477.6 -477.5 -477.4 -477.3 -477.2 -477.1 -477 + Bin 523: -477 -476.9 -476.8 -476.7 -476.6 -476.5 -476.4 -476.3 -476.2 -476.1 -476 + Bin 524: -476 -475.9 -475.8 -475.7 -475.6 -475.5 -475.4 -475.3 -475.2 -475.1 -475 + Bin 525: -475 -474.9 -474.8 -474.7 -474.6 -474.5 -474.4 -474.3 -474.2 -474.1 -474 + Bin 526: -474 -473.9 -473.8 -473.7 -473.6 -473.5 -473.4 -473.3 -473.2 -473.1 -473 + Bin 527: -473 -472.9 -472.8 -472.7 -472.6 -472.5 -472.4 -472.3 -472.2 -472.1 -472 + Bin 528: -472 -471.9 -471.8 -471.7 -471.6 -471.5 -471.4 -471.3 -471.2 -471.1 -471 + Bin 529: -471 -470.9 -470.8 -470.7 -470.6 -470.5 -470.4 -470.3 -470.2 -470.1 -470 + Bin 530: -470 -469.9 -469.8 -469.7 -469.6 -469.5 -469.4 -469.3 -469.2 -469.1 -469 + Bin 531: -469 -468.9 -468.8 -468.7 -468.6 -468.5 -468.4 -468.3 -468.2 -468.1 -468 + Bin 532: -468 -467.9 -467.8 -467.7 -467.6 -467.5 -467.4 -467.3 -467.2 -467.1 -467 + Bin 533: -467 -466.9 -466.8 -466.7 -466.6 -466.5 -466.4 -466.3 -466.2 -466.1 -466 + Bin 534: -466 -465.9 -465.8 -465.7 -465.6 -465.5 -465.4 -465.3 -465.2 -465.1 -465 + Bin 535: -465 -464.9 -464.8 -464.7 -464.6 -464.5 -464.4 -464.3 -464.2 -464.1 -464 + Bin 536: -464 -463.9 -463.8 -463.7 -463.6 -463.5 -463.4 -463.3 -463.2 -463.1 -463 + Bin 537: -463 -462.9 -462.8 -462.7 -462.6 -462.5 -462.4 -462.3 -462.2 -462.1 -462 + Bin 538: -462 -461.9 -461.8 -461.7 -461.6 -461.5 -461.4 -461.3 -461.2 -461.1 -461 + Bin 539: -461 -460.9 -460.8 -460.7 -460.6 -460.5 -460.4 -460.3 -460.2 -460.1 -460 + Bin 540: -460 -459.9 -459.8 -459.7 -459.6 -459.5 -459.4 -459.3 -459.2 -459.1 -459 + Bin 541: -459 -458.9 -458.8 -458.7 -458.6 -458.5 -458.4 -458.3 -458.2 -458.1 -458 + Bin 542: -458 -457.9 -457.8 -457.7 -457.6 -457.5 -457.4 -457.3 -457.2 -457.1 -457 + Bin 543: -457 -456.9 -456.8 -456.7 -456.6 -456.5 -456.4 -456.3 -456.2 -456.1 -456 + Bin 544: -456 -455.9 -455.8 -455.7 -455.6 -455.5 -455.4 -455.3 -455.2 -455.1 -455 + Bin 545: -455 -454.9 -454.8 -454.7 -454.6 -454.5 -454.4 -454.3 -454.2 -454.1 -454 + Bin 546: -454 -453.9 -453.8 -453.7 -453.6 -453.5 -453.4 -453.3 -453.2 -453.1 -453 + Bin 547: -453 -452.9 -452.8 -452.7 -452.6 -452.5 -452.4 -452.3 -452.2 -452.1 -452 + Bin 548: -452 -451.9 -451.8 -451.7 -451.6 -451.5 -451.4 -451.3 -451.2 -451.1 -451 + Bin 549: -451 -450.9 -450.8 -450.7 -450.6 -450.5 -450.4 -450.3 -450.2 -450.1 -450 + Bin 550: -450 -449.9 -449.8 -449.7 -449.6 -449.5 -449.4 -449.3 -449.2 -449.1 -449 + Bin 551: -449 -448.9 -448.8 -448.7 -448.6 -448.5 -448.4 -448.3 -448.2 -448.1 -448 + Bin 552: -448 -447.9 -447.8 -447.7 -447.6 -447.5 -447.4 -447.3 -447.2 -447.1 -447 + Bin 553: -447 -446.9 -446.8 -446.7 -446.6 -446.5 -446.4 -446.3 -446.2 -446.1 -446 + Bin 554: -446 -445.9 -445.8 -445.7 -445.6 -445.5 -445.4 -445.3 -445.2 -445.1 -445 + Bin 555: -445 -444.9 -444.8 -444.7 -444.6 -444.5 -444.4 -444.3 -444.2 -444.1 -444 + Bin 556: -444 -443.9 -443.8 -443.7 -443.6 -443.5 -443.4 -443.3 -443.2 -443.1 -443 + Bin 557: -443 -442.9 -442.8 -442.7 -442.6 -442.5 -442.4 -442.3 -442.2 -442.1 -442 + Bin 558: -442 -441.9 -441.8 -441.7 -441.6 -441.5 -441.4 -441.3 -441.2 -441.1 -441 + Bin 559: -441 -440.9 -440.8 -440.7 -440.6 -440.5 -440.4 -440.3 -440.2 -440.1 -440 + Bin 560: -440 -439.9 -439.8 -439.7 -439.6 -439.5 -439.4 -439.3 -439.2 -439.1 -439 + Bin 561: -439 -438.9 -438.8 -438.7 -438.6 -438.5 -438.4 -438.3 -438.2 -438.1 -438 + Bin 562: -438 -437.9 -437.8 -437.7 -437.6 -437.5 -437.4 -437.3 -437.2 -437.1 -437 + Bin 563: -437 -436.9 -436.8 -436.7 -436.6 -436.5 -436.4 -436.3 -436.2 -436.1 -436 + Bin 564: -436 -435.9 -435.8 -435.7 -435.6 -435.5 -435.4 -435.3 -435.2 -435.1 -435 + Bin 565: -435 -434.9 -434.8 -434.7 -434.6 -434.5 -434.4 -434.3 -434.2 -434.1 -434 + Bin 566: -434 -433.9 -433.8 -433.7 -433.6 -433.5 -433.4 -433.3 -433.2 -433.1 -433 + Bin 567: -433 -432.9 -432.8 -432.7 -432.6 -432.5 -432.4 -432.3 -432.2 -432.1 -432 + Bin 568: -432 -431.9 -431.8 -431.7 -431.6 -431.5 -431.4 -431.3 -431.2 -431.1 -431 + Bin 569: -431 -430.9 -430.8 -430.7 -430.6 -430.5 -430.4 -430.3 -430.2 -430.1 -430 + Bin 570: -430 -429.9 -429.8 -429.7 -429.6 -429.5 -429.4 -429.3 -429.2 -429.1 -429 + Bin 571: -429 -428.9 -428.8 -428.7 -428.6 -428.5 -428.4 -428.3 -428.2 -428.1 -428 + Bin 572: -428 -427.9 -427.8 -427.7 -427.6 -427.5 -427.4 -427.3 -427.2 -427.1 -427 + Bin 573: -427 -426.9 -426.8 -426.7 -426.6 -426.5 -426.4 -426.3 -426.2 -426.1 -426 + Bin 574: -426 -425.9 -425.8 -425.7 -425.6 -425.5 -425.4 -425.3 -425.2 -425.1 -425 + Bin 575: -425 -424.9 -424.8 -424.7 -424.6 -424.5 -424.4 -424.3 -424.2 -424.1 -424 + Bin 576: -424 -423.9 -423.8 -423.7 -423.6 -423.5 -423.4 -423.3 -423.2 -423.1 -423 + Bin 577: -423 -422.9 -422.8 -422.7 -422.6 -422.5 -422.4 -422.3 -422.2 -422.1 -422 + Bin 578: -422 -421.9 -421.8 -421.7 -421.6 -421.5 -421.4 -421.3 -421.2 -421.1 -421 + Bin 579: -421 -420.9 -420.8 -420.7 -420.6 -420.5 -420.4 -420.3 -420.2 -420.1 -420 + Bin 580: -420 -419.9 -419.8 -419.7 -419.6 -419.5 -419.4 -419.3 -419.2 -419.1 -419 + Bin 581: -419 -418.9 -418.8 -418.7 -418.6 -418.5 -418.4 -418.3 -418.2 -418.1 -418 + Bin 582: -418 -417.9 -417.8 -417.7 -417.6 -417.5 -417.4 -417.3 -417.2 -417.1 -417 + Bin 583: -417 -416.9 -416.8 -416.7 -416.6 -416.5 -416.4 -416.3 -416.2 -416.1 -416 + Bin 584: -416 -415.9 -415.8 -415.7 -415.6 -415.5 -415.4 -415.3 -415.2 -415.1 -415 + Bin 585: -415 -414.9 -414.8 -414.7 -414.6 -414.5 -414.4 -414.3 -414.2 -414.1 -414 + Bin 586: -414 -413.9 -413.8 -413.7 -413.6 -413.5 -413.4 -413.3 -413.2 -413.1 -413 + Bin 587: -413 -412.9 -412.8 -412.7 -412.6 -412.5 -412.4 -412.3 -412.2 -412.1 -412 + Bin 588: -412 -411.9 -411.8 -411.7 -411.6 -411.5 -411.4 -411.3 -411.2 -411.1 -411 + Bin 589: -411 -410.9 -410.8 -410.7 -410.6 -410.5 -410.4 -410.3 -410.2 -410.1 -410 + Bin 590: -410 -409.9 -409.8 -409.7 -409.6 -409.5 -409.4 -409.3 -409.2 -409.1 -409 + Bin 591: -409 -408.9 -408.8 -408.7 -408.6 -408.5 -408.4 -408.3 -408.2 -408.1 -408 + Bin 592: -408 -407.9 -407.8 -407.7 -407.6 -407.5 -407.4 -407.3 -407.2 -407.1 -407 + Bin 593: -407 -406.9 -406.8 -406.7 -406.6 -406.5 -406.4 -406.3 -406.2 -406.1 -406 + Bin 594: -406 -405.9 -405.8 -405.7 -405.6 -405.5 -405.4 -405.3 -405.2 -405.1 -405 + Bin 595: -405 -404.9 -404.8 -404.7 -404.6 -404.5 -404.4 -404.3 -404.2 -404.1 -404 + Bin 596: -404 -403.9 -403.8 -403.7 -403.6 -403.5 -403.4 -403.3 -403.2 -403.1 -403 + Bin 597: -403 -402.9 -402.8 -402.7 -402.6 -402.5 -402.4 -402.3 -402.2 -402.1 -402 + Bin 598: -402 -401.9 -401.8 -401.7 -401.6 -401.5 -401.4 -401.3 -401.2 -401.1 -401 + Bin 599: -401 -400.9 -400.8 -400.7 -400.6 -400.5 -400.4 -400.3 -400.2 -400.1 -400 + Bin 600: -400 -399.9 -399.8 -399.7 -399.6 -399.5 -399.4 -399.3 -399.2 -399.1 -399 + Bin 601: -399 -398.9 -398.8 -398.7 -398.6 -398.5 -398.4 -398.3 -398.2 -398.1 -398 + Bin 602: -398 -397.9 -397.8 -397.7 -397.6 -397.5 -397.4 -397.3 -397.2 -397.1 -397 + Bin 603: -397 -396.9 -396.8 -396.7 -396.6 -396.5 -396.4 -396.3 -396.2 -396.1 -396 + Bin 604: -396 -395.9 -395.8 -395.7 -395.6 -395.5 -395.4 -395.3 -395.2 -395.1 -395 + Bin 605: -395 -394.9 -394.8 -394.7 -394.6 -394.5 -394.4 -394.3 -394.2 -394.1 -394 + Bin 606: -394 -393.9 -393.8 -393.7 -393.6 -393.5 -393.4 -393.3 -393.2 -393.1 -393 + Bin 607: -393 -392.9 -392.8 -392.7 -392.6 -392.5 -392.4 -392.3 -392.2 -392.1 -392 + Bin 608: -392 -391.9 -391.8 -391.7 -391.6 -391.5 -391.4 -391.3 -391.2 -391.1 -391 + Bin 609: -391 -390.9 -390.8 -390.7 -390.6 -390.5 -390.4 -390.3 -390.2 -390.1 -390 + Bin 610: -390 -389.9 -389.8 -389.7 -389.6 -389.5 -389.4 -389.3 -389.2 -389.1 -389 + Bin 611: -389 -388.9 -388.8 -388.7 -388.6 -388.5 -388.4 -388.3 -388.2 -388.1 -388 + Bin 612: -388 -387.9 -387.8 -387.7 -387.6 -387.5 -387.4 -387.3 -387.2 -387.1 -387 + Bin 613: -387 -386.9 -386.8 -386.7 -386.6 -386.5 -386.4 -386.3 -386.2 -386.1 -386 + Bin 614: -386 -385.9 -385.8 -385.7 -385.6 -385.5 -385.4 -385.3 -385.2 -385.1 -385 + Bin 615: -385 -384.9 -384.8 -384.7 -384.6 -384.5 -384.4 -384.3 -384.2 -384.1 -384 + Bin 616: -384 -383.9 -383.8 -383.7 -383.6 -383.5 -383.4 -383.3 -383.2 -383.1 -383 + Bin 617: -383 -382.9 -382.8 -382.7 -382.6 -382.5 -382.4 -382.3 -382.2 -382.1 -382 + Bin 618: -382 -381.9 -381.8 -381.7 -381.6 -381.5 -381.4 -381.3 -381.2 -381.1 -381 + Bin 619: -381 -380.9 -380.8 -380.7 -380.6 -380.5 -380.4 -380.3 -380.2 -380.1 -380 + Bin 620: -380 -379.9 -379.8 -379.7 -379.6 -379.5 -379.4 -379.3 -379.2 -379.1 -379 + Bin 621: -379 -378.9 -378.8 -378.7 -378.6 -378.5 -378.4 -378.3 -378.2 -378.1 -378 + Bin 622: -378 -377.9 -377.8 -377.7 -377.6 -377.5 -377.4 -377.3 -377.2 -377.1 -377 + Bin 623: -377 -376.9 -376.8 -376.7 -376.6 -376.5 -376.4 -376.3 -376.2 -376.1 -376 + Bin 624: -376 -375.9 -375.8 -375.7 -375.6 -375.5 -375.4 -375.3 -375.2 -375.1 -375 + Bin 625: -375 -374.9 -374.8 -374.7 -374.6 -374.5 -374.4 -374.3 -374.2 -374.1 -374 + Bin 626: -374 -373.9 -373.8 -373.7 -373.6 -373.5 -373.4 -373.3 -373.2 -373.1 -373 + Bin 627: -373 -372.9 -372.8 -372.7 -372.6 -372.5 -372.4 -372.3 -372.2 -372.1 -372 + Bin 628: -372 -371.9 -371.8 -371.7 -371.6 -371.5 -371.4 -371.3 -371.2 -371.1 -371 + Bin 629: -371 -370.9 -370.8 -370.7 -370.6 -370.5 -370.4 -370.3 -370.2 -370.1 -370 + Bin 630: -370 -369.9 -369.8 -369.7 -369.6 -369.5 -369.4 -369.3 -369.2 -369.1 -369 + Bin 631: -369 -368.9 -368.8 -368.7 -368.6 -368.5 -368.4 -368.3 -368.2 -368.1 -368 + Bin 632: -368 -367.9 -367.8 -367.7 -367.6 -367.5 -367.4 -367.3 -367.2 -367.1 -367 + Bin 633: -367 -366.9 -366.8 -366.7 -366.6 -366.5 -366.4 -366.3 -366.2 -366.1 -366 + Bin 634: -366 -365.9 -365.8 -365.7 -365.6 -365.5 -365.4 -365.3 -365.2 -365.1 -365 + Bin 635: -365 -364.9 -364.8 -364.7 -364.6 -364.5 -364.4 -364.3 -364.2 -364.1 -364 + Bin 636: -364 -363.9 -363.8 -363.7 -363.6 -363.5 -363.4 -363.3 -363.2 -363.1 -363 + Bin 637: -363 -362.9 -362.8 -362.7 -362.6 -362.5 -362.4 -362.3 -362.2 -362.1 -362 + Bin 638: -362 -361.9 -361.8 -361.7 -361.6 -361.5 -361.4 -361.3 -361.2 -361.1 -361 + Bin 639: -361 -360.9 -360.8 -360.7 -360.6 -360.5 -360.4 -360.3 -360.2 -360.1 -360 + Bin 640: -360 -359.9 -359.8 -359.7 -359.6 -359.5 -359.4 -359.3 -359.2 -359.1 -359 + Bin 641: -359 -358.9 -358.8 -358.7 -358.6 -358.5 -358.4 -358.3 -358.2 -358.1 -358 + Bin 642: -358 -357.9 -357.8 -357.7 -357.6 -357.5 -357.4 -357.3 -357.2 -357.1 -357 + Bin 643: -357 -356.9 -356.8 -356.7 -356.6 -356.5 -356.4 -356.3 -356.2 -356.1 -356 + Bin 644: -356 -355.9 -355.8 -355.7 -355.6 -355.5 -355.4 -355.3 -355.2 -355.1 -355 + Bin 645: -355 -354.9 -354.8 -354.7 -354.6 -354.5 -354.4 -354.3 -354.2 -354.1 -354 + Bin 646: -354 -353.9 -353.8 -353.7 -353.6 -353.5 -353.4 -353.3 -353.2 -353.1 -353 + Bin 647: -353 -352.9 -352.8 -352.7 -352.6 -352.5 -352.4 -352.3 -352.2 -352.1 -352 + Bin 648: -352 -351.9 -351.8 -351.7 -351.6 -351.5 -351.4 -351.3 -351.2 -351.1 -351 + Bin 649: -351 -350.9 -350.8 -350.7 -350.6 -350.5 -350.4 -350.3 -350.2 -350.1 -350 + Bin 650: -350 -349.9 -349.8 -349.7 -349.6 -349.5 -349.4 -349.3 -349.2 -349.1 -349 + Bin 651: -349 -348.9 -348.8 -348.7 -348.6 -348.5 -348.4 -348.3 -348.2 -348.1 -348 + Bin 652: -348 -347.9 -347.8 -347.7 -347.6 -347.5 -347.4 -347.3 -347.2 -347.1 -347 + Bin 653: -347 -346.9 -346.8 -346.7 -346.6 -346.5 -346.4 -346.3 -346.2 -346.1 -346 + Bin 654: -346 -345.9 -345.8 -345.7 -345.6 -345.5 -345.4 -345.3 -345.2 -345.1 -345 + Bin 655: -345 -344.9 -344.8 -344.7 -344.6 -344.5 -344.4 -344.3 -344.2 -344.1 -344 + Bin 656: -344 -343.9 -343.8 -343.7 -343.6 -343.5 -343.4 -343.3 -343.2 -343.1 -343 + Bin 657: -343 -342.9 -342.8 -342.7 -342.6 -342.5 -342.4 -342.3 -342.2 -342.1 -342 + Bin 658: -342 -341.9 -341.8 -341.7 -341.6 -341.5 -341.4 -341.3 -341.2 -341.1 -341 + Bin 659: -341 -340.9 -340.8 -340.7 -340.6 -340.5 -340.4 -340.3 -340.2 -340.1 -340 + Bin 660: -340 -339.9 -339.8 -339.7 -339.6 -339.5 -339.4 -339.3 -339.2 -339.1 -339 + Bin 661: -339 -338.9 -338.8 -338.7 -338.6 -338.5 -338.4 -338.3 -338.2 -338.1 -338 + Bin 662: -338 -337.9 -337.8 -337.7 -337.6 -337.5 -337.4 -337.3 -337.2 -337.1 -337 + Bin 663: -337 -336.9 -336.8 -336.7 -336.6 -336.5 -336.4 -336.3 -336.2 -336.1 -336 + Bin 664: -336 -335.9 -335.8 -335.7 -335.6 -335.5 -335.4 -335.3 -335.2 -335.1 -335 + Bin 665: -335 -334.9 -334.8 -334.7 -334.6 -334.5 -334.4 -334.3 -334.2 -334.1 -334 + Bin 666: -334 -333.9 -333.8 -333.7 -333.6 -333.5 -333.4 -333.3 -333.2 -333.1 -333 + Bin 667: -333 -332.9 -332.8 -332.7 -332.6 -332.5 -332.4 -332.3 -332.2 -332.1 -332 + Bin 668: -332 -331.9 -331.8 -331.7 -331.6 -331.5 -331.4 -331.3 -331.2 -331.1 -331 + Bin 669: -331 -330.9 -330.8 -330.7 -330.6 -330.5 -330.4 -330.3 -330.2 -330.1 -330 + Bin 670: -330 -329.9 -329.8 -329.7 -329.6 -329.5 -329.4 -329.3 -329.2 -329.1 -329 + Bin 671: -329 -328.9 -328.8 -328.7 -328.6 -328.5 -328.4 -328.3 -328.2 -328.1 -328 + Bin 672: -328 -327.9 -327.8 -327.7 -327.6 -327.5 -327.4 -327.3 -327.2 -327.1 -327 + Bin 673: -327 -326.9 -326.8 -326.7 -326.6 -326.5 -326.4 -326.3 -326.2 -326.1 -326 + Bin 674: -326 -325.9 -325.8 -325.7 -325.6 -325.5 -325.4 -325.3 -325.2 -325.1 -325 + Bin 675: -325 -324.9 -324.8 -324.7 -324.6 -324.5 -324.4 -324.3 -324.2 -324.1 -324 + Bin 676: -324 -323.9 -323.8 -323.7 -323.6 -323.5 -323.4 -323.3 -323.2 -323.1 -323 + Bin 677: -323 -322.9 -322.8 -322.7 -322.6 -322.5 -322.4 -322.3 -322.2 -322.1 -322 + Bin 678: -322 -321.9 -321.8 -321.7 -321.6 -321.5 -321.4 -321.3 -321.2 -321.1 -321 + Bin 679: -321 -320.9 -320.8 -320.7 -320.6 -320.5 -320.4 -320.3 -320.2 -320.1 -320 + Bin 680: -320 -319.9 -319.8 -319.7 -319.6 -319.5 -319.4 -319.3 -319.2 -319.1 -319 + Bin 681: -319 -318.9 -318.8 -318.7 -318.6 -318.5 -318.4 -318.3 -318.2 -318.1 -318 + Bin 682: -318 -317.9 -317.8 -317.7 -317.6 -317.5 -317.4 -317.3 -317.2 -317.1 -317 + Bin 683: -317 -316.9 -316.8 -316.7 -316.6 -316.5 -316.4 -316.3 -316.2 -316.1 -316 + Bin 684: -316 -315.9 -315.8 -315.7 -315.6 -315.5 -315.4 -315.3 -315.2 -315.1 -315 + Bin 685: -315 -314.9 -314.8 -314.7 -314.6 -314.5 -314.4 -314.3 -314.2 -314.1 -314 + Bin 686: -314 -313.9 -313.8 -313.7 -313.6 -313.5 -313.4 -313.3 -313.2 -313.1 -313 + Bin 687: -313 -312.9 -312.8 -312.7 -312.6 -312.5 -312.4 -312.3 -312.2 -312.1 -312 + Bin 688: -312 -311.9 -311.8 -311.7 -311.6 -311.5 -311.4 -311.3 -311.2 -311.1 -311 + Bin 689: -311 -310.9 -310.8 -310.7 -310.6 -310.5 -310.4 -310.3 -310.2 -310.1 -310 + Bin 690: -310 -309.9 -309.8 -309.7 -309.6 -309.5 -309.4 -309.3 -309.2 -309.1 -309 + Bin 691: -309 -308.9 -308.8 -308.7 -308.6 -308.5 -308.4 -308.3 -308.2 -308.1 -308 + Bin 692: -308 -307.9 -307.8 -307.7 -307.6 -307.5 -307.4 -307.3 -307.2 -307.1 -307 + Bin 693: -307 -306.9 -306.8 -306.7 -306.6 -306.5 -306.4 -306.3 -306.2 -306.1 -306 + Bin 694: -306 -305.9 -305.8 -305.7 -305.6 -305.5 -305.4 -305.3 -305.2 -305.1 -305 + Bin 695: -305 -304.9 -304.8 -304.7 -304.6 -304.5 -304.4 -304.3 -304.2 -304.1 -304 + Bin 696: -304 -303.9 -303.8 -303.7 -303.6 -303.5 -303.4 -303.3 -303.2 -303.1 -303 + Bin 697: -303 -302.9 -302.8 -302.7 -302.6 -302.5 -302.4 -302.3 -302.2 -302.1 -302 + Bin 698: -302 -301.9 -301.8 -301.7 -301.6 -301.5 -301.4 -301.3 -301.2 -301.1 -301 + Bin 699: -301 -300.9 -300.8 -300.7 -300.6 -300.5 -300.4 -300.3 -300.2 -300.1 -300 + Bin 700: -300 -299.9 -299.8 -299.7 -299.6 -299.5 -299.4 -299.3 -299.2 -299.1 -299 + Bin 701: -299 -298.9 -298.8 -298.7 -298.6 -298.5 -298.4 -298.3 -298.2 -298.1 -298 + Bin 702: -298 -297.9 -297.8 -297.7 -297.6 -297.5 -297.4 -297.3 -297.2 -297.1 -297 + Bin 703: -297 -296.9 -296.8 -296.7 -296.6 -296.5 -296.4 -296.3 -296.2 -296.1 -296 + Bin 704: -296 -295.9 -295.8 -295.7 -295.6 -295.5 -295.4 -295.3 -295.2 -295.1 -295 + Bin 705: -295 -294.9 -294.8 -294.7 -294.6 -294.5 -294.4 -294.3 -294.2 -294.1 -294 + Bin 706: -294 -293.9 -293.8 -293.7 -293.6 -293.5 -293.4 -293.3 -293.2 -293.1 -293 + Bin 707: -293 -292.9 -292.8 -292.7 -292.6 -292.5 -292.4 -292.3 -292.2 -292.1 -292 + Bin 708: -292 -291.9 -291.8 -291.7 -291.6 -291.5 -291.4 -291.3 -291.2 -291.1 -291 + Bin 709: -291 -290.9 -290.8 -290.7 -290.6 -290.5 -290.4 -290.3 -290.2 -290.1 -290 + Bin 710: -290 -289.9 -289.8 -289.7 -289.6 -289.5 -289.4 -289.3 -289.2 -289.1 -289 + Bin 711: -289 -288.9 -288.8 -288.7 -288.6 -288.5 -288.4 -288.3 -288.2 -288.1 -288 + Bin 712: -288 -287.9 -287.8 -287.7 -287.6 -287.5 -287.4 -287.3 -287.2 -287.1 -287 + Bin 713: -287 -286.9 -286.8 -286.7 -286.6 -286.5 -286.4 -286.3 -286.2 -286.1 -286 + Bin 714: -286 -285.9 -285.8 -285.7 -285.6 -285.5 -285.4 -285.3 -285.2 -285.1 -285 + Bin 715: -285 -284.9 -284.8 -284.7 -284.6 -284.5 -284.4 -284.3 -284.2 -284.1 -284 + Bin 716: -284 -283.9 -283.8 -283.7 -283.6 -283.5 -283.4 -283.3 -283.2 -283.1 -283 + Bin 717: -283 -282.9 -282.8 -282.7 -282.6 -282.5 -282.4 -282.3 -282.2 -282.1 -282 + Bin 718: -282 -281.9 -281.8 -281.7 -281.6 -281.5 -281.4 -281.3 -281.2 -281.1 -281 + Bin 719: -281 -280.9 -280.8 -280.7 -280.6 -280.5 -280.4 -280.3 -280.2 -280.1 -280 + Bin 720: -280 -279.9 -279.8 -279.7 -279.6 -279.5 -279.4 -279.3 -279.2 -279.1 -279 + Bin 721: -279 -278.9 -278.8 -278.7 -278.6 -278.5 -278.4 -278.3 -278.2 -278.1 -278 + Bin 722: -278 -277.9 -277.8 -277.7 -277.6 -277.5 -277.4 -277.3 -277.2 -277.1 -277 + Bin 723: -277 -276.9 -276.8 -276.7 -276.6 -276.5 -276.4 -276.3 -276.2 -276.1 -276 + Bin 724: -276 -275.9 -275.8 -275.7 -275.6 -275.5 -275.4 -275.3 -275.2 -275.1 -275 + Bin 725: -275 -274.9 -274.8 -274.7 -274.6 -274.5 -274.4 -274.3 -274.2 -274.1 -274 + Bin 726: -274 -273.9 -273.8 -273.7 -273.6 -273.5 -273.4 -273.3 -273.2 -273.1 -273 + Bin 727: -273 -272.9 -272.8 -272.7 -272.6 -272.5 -272.4 -272.3 -272.2 -272.1 -272 + Bin 728: -272 -271.9 -271.8 -271.7 -271.6 -271.5 -271.4 -271.3 -271.2 -271.1 -271 + Bin 729: -271 -270.9 -270.8 -270.7 -270.6 -270.5 -270.4 -270.3 -270.2 -270.1 -270 + Bin 730: -270 -269.9 -269.8 -269.7 -269.6 -269.5 -269.4 -269.3 -269.2 -269.1 -269 + Bin 731: -269 -268.9 -268.8 -268.7 -268.6 -268.5 -268.4 -268.3 -268.2 -268.1 -268 + Bin 732: -268 -267.9 -267.8 -267.7 -267.6 -267.5 -267.4 -267.3 -267.2 -267.1 -267 + Bin 733: -267 -266.9 -266.8 -266.7 -266.6 -266.5 -266.4 -266.3 -266.2 -266.1 -266 + Bin 734: -266 -265.9 -265.8 -265.7 -265.6 -265.5 -265.4 -265.3 -265.2 -265.1 -265 + Bin 735: -265 -264.9 -264.8 -264.7 -264.6 -264.5 -264.4 -264.3 -264.2 -264.1 -264 + Bin 736: -264 -263.9 -263.8 -263.7 -263.6 -263.5 -263.4 -263.3 -263.2 -263.1 -263 + Bin 737: -263 -262.9 -262.8 -262.7 -262.6 -262.5 -262.4 -262.3 -262.2 -262.1 -262 + Bin 738: -262 -261.9 -261.8 -261.7 -261.6 -261.5 -261.4 -261.3 -261.2 -261.1 -261 + Bin 739: -261 -260.9 -260.8 -260.7 -260.6 -260.5 -260.4 -260.3 -260.2 -260.1 -260 + Bin 740: -260 -259.9 -259.8 -259.7 -259.6 -259.5 -259.4 -259.3 -259.2 -259.1 -259 + Bin 741: -259 -258.9 -258.8 -258.7 -258.6 -258.5 -258.4 -258.3 -258.2 -258.1 -258 + Bin 742: -258 -257.9 -257.8 -257.7 -257.6 -257.5 -257.4 -257.3 -257.2 -257.1 -257 + Bin 743: -257 -256.9 -256.8 -256.7 -256.6 -256.5 -256.4 -256.3 -256.2 -256.1 -256 + Bin 744: -256 -255.9 -255.8 -255.7 -255.6 -255.5 -255.4 -255.3 -255.2 -255.1 -255 + Bin 745: -255 -254.9 -254.8 -254.7 -254.6 -254.5 -254.4 -254.3 -254.2 -254.1 -254 + Bin 746: -254 -253.9 -253.8 -253.7 -253.6 -253.5 -253.4 -253.3 -253.2 -253.1 -253 + Bin 747: -253 -252.9 -252.8 -252.7 -252.6 -252.5 -252.4 -252.3 -252.2 -252.1 -252 + Bin 748: -252 -251.9 -251.8 -251.7 -251.6 -251.5 -251.4 -251.3 -251.2 -251.1 -251 + Bin 749: -251 -250.9 -250.8 -250.7 -250.6 -250.5 -250.4 -250.3 -250.2 -250.1 -250 + Bin 750: -250 -249.9 -249.8 -249.7 -249.6 -249.5 -249.4 -249.3 -249.2 -249.1 -249 + Bin 751: -249 -248.9 -248.8 -248.7 -248.6 -248.5 -248.4 -248.3 -248.2 -248.1 -248 + Bin 752: -248 -247.9 -247.8 -247.7 -247.6 -247.5 -247.4 -247.3 -247.2 -247.1 -247 + Bin 753: -247 -246.9 -246.8 -246.7 -246.6 -246.5 -246.4 -246.3 -246.2 -246.1 -246 + Bin 754: -246 -245.9 -245.8 -245.7 -245.6 -245.5 -245.4 -245.3 -245.2 -245.1 -245 + Bin 755: -245 -244.9 -244.8 -244.7 -244.6 -244.5 -244.4 -244.3 -244.2 -244.1 -244 + Bin 756: -244 -243.9 -243.8 -243.7 -243.6 -243.5 -243.4 -243.3 -243.2 -243.1 -243 + Bin 757: -243 -242.9 -242.8 -242.7 -242.6 -242.5 -242.4 -242.3 -242.2 -242.1 -242 + Bin 758: -242 -241.9 -241.8 -241.7 -241.6 -241.5 -241.4 -241.3 -241.2 -241.1 -241 + Bin 759: -241 -240.9 -240.8 -240.7 -240.6 -240.5 -240.4 -240.3 -240.2 -240.1 -240 + Bin 760: -240 -239.9 -239.8 -239.7 -239.6 -239.5 -239.4 -239.3 -239.2 -239.1 -239 + Bin 761: -239 -238.9 -238.8 -238.7 -238.6 -238.5 -238.4 -238.3 -238.2 -238.1 -238 + Bin 762: -238 -237.9 -237.8 -237.7 -237.6 -237.5 -237.4 -237.3 -237.2 -237.1 -237 + Bin 763: -237 -236.9 -236.8 -236.7 -236.6 -236.5 -236.4 -236.3 -236.2 -236.1 -236 + Bin 764: -236 -235.9 -235.8 -235.7 -235.6 -235.5 -235.4 -235.3 -235.2 -235.1 -235 + Bin 765: -235 -234.9 -234.8 -234.7 -234.6 -234.5 -234.4 -234.3 -234.2 -234.1 -234 + Bin 766: -234 -233.9 -233.8 -233.7 -233.6 -233.5 -233.4 -233.3 -233.2 -233.1 -233 + Bin 767: -233 -232.9 -232.8 -232.7 -232.6 -232.5 -232.4 -232.3 -232.2 -232.1 -232 + Bin 768: -232 -231.9 -231.8 -231.7 -231.6 -231.5 -231.4 -231.3 -231.2 -231.1 -231 + Bin 769: -231 -230.9 -230.8 -230.7 -230.6 -230.5 -230.4 -230.3 -230.2 -230.1 -230 + Bin 770: -230 -229.9 -229.8 -229.7 -229.6 -229.5 -229.4 -229.3 -229.2 -229.1 -229 + Bin 771: -229 -228.9 -228.8 -228.7 -228.6 -228.5 -228.4 -228.3 -228.2 -228.1 -228 + Bin 772: -228 -227.9 -227.8 -227.7 -227.6 -227.5 -227.4 -227.3 -227.2 -227.1 -227 + Bin 773: -227 -226.9 -226.8 -226.7 -226.6 -226.5 -226.4 -226.3 -226.2 -226.1 -226 + Bin 774: -226 -225.9 -225.8 -225.7 -225.6 -225.5 -225.4 -225.3 -225.2 -225.1 -225 + Bin 775: -225 -224.9 -224.8 -224.7 -224.6 -224.5 -224.4 -224.3 -224.2 -224.1 -224 + Bin 776: -224 -223.9 -223.8 -223.7 -223.6 -223.5 -223.4 -223.3 -223.2 -223.1 -223 + Bin 777: -223 -222.9 -222.8 -222.7 -222.6 -222.5 -222.4 -222.3 -222.2 -222.1 -222 + Bin 778: -222 -221.9 -221.8 -221.7 -221.6 -221.5 -221.4 -221.3 -221.2 -221.1 -221 + Bin 779: -221 -220.9 -220.8 -220.7 -220.6 -220.5 -220.4 -220.3 -220.2 -220.1 -220 + Bin 780: -220 -219.9 -219.8 -219.7 -219.6 -219.5 -219.4 -219.3 -219.2 -219.1 -219 + Bin 781: -219 -218.9 -218.8 -218.7 -218.6 -218.5 -218.4 -218.3 -218.2 -218.1 -218 + Bin 782: -218 -217.9 -217.8 -217.7 -217.6 -217.5 -217.4 -217.3 -217.2 -217.1 -217 + Bin 783: -217 -216.9 -216.8 -216.7 -216.6 -216.5 -216.4 -216.3 -216.2 -216.1 -216 + Bin 784: -216 -215.9 -215.8 -215.7 -215.6 -215.5 -215.4 -215.3 -215.2 -215.1 -215 + Bin 785: -215 -214.9 -214.8 -214.7 -214.6 -214.5 -214.4 -214.3 -214.2 -214.1 -214 + Bin 786: -214 -213.9 -213.8 -213.7 -213.6 -213.5 -213.4 -213.3 -213.2 -213.1 -213 + Bin 787: -213 -212.9 -212.8 -212.7 -212.6 -212.5 -212.4 -212.3 -212.2 -212.1 -212 + Bin 788: -212 -211.9 -211.8 -211.7 -211.6 -211.5 -211.4 -211.3 -211.2 -211.1 -211 + Bin 789: -211 -210.9 -210.8 -210.7 -210.6 -210.5 -210.4 -210.3 -210.2 -210.1 -210 + Bin 790: -210 -209.9 -209.8 -209.7 -209.6 -209.5 -209.4 -209.3 -209.2 -209.1 -209 + Bin 791: -209 -208.9 -208.8 -208.7 -208.6 -208.5 -208.4 -208.3 -208.2 -208.1 -208 + Bin 792: -208 -207.9 -207.8 -207.7 -207.6 -207.5 -207.4 -207.3 -207.2 -207.1 -207 + Bin 793: -207 -206.9 -206.8 -206.7 -206.6 -206.5 -206.4 -206.3 -206.2 -206.1 -206 + Bin 794: -206 -205.9 -205.8 -205.7 -205.6 -205.5 -205.4 -205.3 -205.2 -205.1 -205 + Bin 795: -205 -204.9 -204.8 -204.7 -204.6 -204.5 -204.4 -204.3 -204.2 -204.1 -204 + Bin 796: -204 -203.9 -203.8 -203.7 -203.6 -203.5 -203.4 -203.3 -203.2 -203.1 -203 + Bin 797: -203 -202.9 -202.8 -202.7 -202.6 -202.5 -202.4 -202.3 -202.2 -202.1 -202 + Bin 798: -202 -201.9 -201.8 -201.7 -201.6 -201.5 -201.4 -201.3 -201.2 -201.1 -201 + Bin 799: -201 -200.9 -200.8 -200.7 -200.6 -200.5 -200.4 -200.3 -200.2 -200.1 -200 + Bin 800: -200 -199.9 -199.8 -199.7 -199.6 -199.5 -199.4 -199.3 -199.2 -199.1 -199 + Bin 801: -199 -198.9 -198.8 -198.7 -198.6 -198.5 -198.4 -198.3 -198.2 -198.1 -198 + Bin 802: -198 -197.9 -197.8 -197.7 -197.6 -197.5 -197.4 -197.3 -197.2 -197.1 -197 + Bin 803: -197 -196.9 -196.8 -196.7 -196.6 -196.5 -196.4 -196.3 -196.2 -196.1 -196 + Bin 804: -196 -195.9 -195.8 -195.7 -195.6 -195.5 -195.4 -195.3 -195.2 -195.1 -195 + Bin 805: -195 -194.9 -194.8 -194.7 -194.6 -194.5 -194.4 -194.3 -194.2 -194.1 -194 + Bin 806: -194 -193.9 -193.8 -193.7 -193.6 -193.5 -193.4 -193.3 -193.2 -193.1 -193 + Bin 807: -193 -192.9 -192.8 -192.7 -192.6 -192.5 -192.4 -192.3 -192.2 -192.1 -192 + Bin 808: -192 -191.9 -191.8 -191.7 -191.6 -191.5 -191.4 -191.3 -191.2 -191.1 -191 + Bin 809: -191 -190.9 -190.8 -190.7 -190.6 -190.5 -190.4 -190.3 -190.2 -190.1 -190 + Bin 810: -190 -189.9 -189.8 -189.7 -189.6 -189.5 -189.4 -189.3 -189.2 -189.1 -189 + Bin 811: -189 -188.9 -188.8 -188.7 -188.6 -188.5 -188.4 -188.3 -188.2 -188.1 -188 + Bin 812: -188 -187.9 -187.8 -187.7 -187.6 -187.5 -187.4 -187.3 -187.2 -187.1 -187 + Bin 813: -187 -186.9 -186.8 -186.7 -186.6 -186.5 -186.4 -186.3 -186.2 -186.1 -186 + Bin 814: -186 -185.9 -185.8 -185.7 -185.6 -185.5 -185.4 -185.3 -185.2 -185.1 -185 + Bin 815: -185 -184.9 -184.8 -184.7 -184.6 -184.5 -184.4 -184.3 -184.2 -184.1 -184 + Bin 816: -184 -183.9 -183.8 -183.7 -183.6 -183.5 -183.4 -183.3 -183.2 -183.1 -183 + Bin 817: -183 -182.9 -182.8 -182.7 -182.6 -182.5 -182.4 -182.3 -182.2 -182.1 -182 + Bin 818: -182 -181.9 -181.8 -181.7 -181.6 -181.5 -181.4 -181.3 -181.2 -181.1 -181 + Bin 819: -181 -180.9 -180.8 -180.7 -180.6 -180.5 -180.4 -180.3 -180.2 -180.1 -180 + Bin 820: -180 -179.9 -179.8 -179.7 -179.6 -179.5 -179.4 -179.3 -179.2 -179.1 -179 + Bin 821: -179 -178.9 -178.8 -178.7 -178.6 -178.5 -178.4 -178.3 -178.2 -178.1 -178 + Bin 822: -178 -177.9 -177.8 -177.7 -177.6 -177.5 -177.4 -177.3 -177.2 -177.1 -177 + Bin 823: -177 -176.9 -176.8 -176.7 -176.6 -176.5 -176.4 -176.3 -176.2 -176.1 -176 + Bin 824: -176 -175.9 -175.8 -175.7 -175.6 -175.5 -175.4 -175.3 -175.2 -175.1 -175 + Bin 825: -175 -174.9 -174.8 -174.7 -174.6 -174.5 -174.4 -174.3 -174.2 -174.1 -174 + Bin 826: -174 -173.9 -173.8 -173.7 -173.6 -173.5 -173.4 -173.3 -173.2 -173.1 -173 + Bin 827: -173 -172.9 -172.8 -172.7 -172.6 -172.5 -172.4 -172.3 -172.2 -172.1 -172 + Bin 828: -172 -171.9 -171.8 -171.7 -171.6 -171.5 -171.4 -171.3 -171.2 -171.1 -171 + Bin 829: -171 -170.9 -170.8 -170.7 -170.6 -170.5 -170.4 -170.3 -170.2 -170.1 -170 + Bin 830: -170 -169.9 -169.8 -169.7 -169.6 -169.5 -169.4 -169.3 -169.2 -169.1 -169 + Bin 831: -169 -168.9 -168.8 -168.7 -168.6 -168.5 -168.4 -168.3 -168.2 -168.1 -168 + Bin 832: -168 -167.9 -167.8 -167.7 -167.6 -167.5 -167.4 -167.3 -167.2 -167.1 -167 + Bin 833: -167 -166.9 -166.8 -166.7 -166.6 -166.5 -166.4 -166.3 -166.2 -166.1 -166 + Bin 834: -166 -165.9 -165.8 -165.7 -165.6 -165.5 -165.4 -165.3 -165.2 -165.1 -165 + Bin 835: -165 -164.9 -164.8 -164.7 -164.6 -164.5 -164.4 -164.3 -164.2 -164.1 -164 + Bin 836: -164 -163.9 -163.8 -163.7 -163.6 -163.5 -163.4 -163.3 -163.2 -163.1 -163 + Bin 837: -163 -162.9 -162.8 -162.7 -162.6 -162.5 -162.4 -162.3 -162.2 -162.1 -162 + Bin 838: -162 -161.9 -161.8 -161.7 -161.6 -161.5 -161.4 -161.3 -161.2 -161.1 -161 + Bin 839: -161 -160.9 -160.8 -160.7 -160.6 -160.5 -160.4 -160.3 -160.2 -160.1 -160 + Bin 840: -160 -159.9 -159.8 -159.7 -159.6 -159.5 -159.4 -159.3 -159.2 -159.1 -159 + Bin 841: -159 -158.9 -158.8 -158.7 -158.6 -158.5 -158.4 -158.3 -158.2 -158.1 -158 + Bin 842: -158 -157.9 -157.8 -157.7 -157.6 -157.5 -157.4 -157.3 -157.2 -157.1 -157 + Bin 843: -157 -156.9 -156.8 -156.7 -156.6 -156.5 -156.4 -156.3 -156.2 -156.1 -156 + Bin 844: -156 -155.9 -155.8 -155.7 -155.6 -155.5 -155.4 -155.3 -155.2 -155.1 -155 + Bin 845: -155 -154.9 -154.8 -154.7 -154.6 -154.5 -154.4 -154.3 -154.2 -154.1 -154 + Bin 846: -154 -153.9 -153.8 -153.7 -153.6 -153.5 -153.4 -153.3 -153.2 -153.1 -153 + Bin 847: -153 -152.9 -152.8 -152.7 -152.6 -152.5 -152.4 -152.3 -152.2 -152.1 -152 + Bin 848: -152 -151.9 -151.8 -151.7 -151.6 -151.5 -151.4 -151.3 -151.2 -151.1 -151 + Bin 849: -151 -150.9 -150.8 -150.7 -150.6 -150.5 -150.4 -150.3 -150.2 -150.1 -150 + Bin 850: -150 -149.9 -149.8 -149.7 -149.6 -149.5 -149.4 -149.3 -149.2 -149.1 -149 + Bin 851: -149 -148.9 -148.8 -148.7 -148.6 -148.5 -148.4 -148.3 -148.2 -148.1 -148 + Bin 852: -148 -147.9 -147.8 -147.7 -147.6 -147.5 -147.4 -147.3 -147.2 -147.1 -147 + Bin 853: -147 -146.9 -146.8 -146.7 -146.6 -146.5 -146.4 -146.3 -146.2 -146.1 -146 + Bin 854: -146 -145.9 -145.8 -145.7 -145.6 -145.5 -145.4 -145.3 -145.2 -145.1 -145 + Bin 855: -145 -144.9 -144.8 -144.7 -144.6 -144.5 -144.4 -144.3 -144.2 -144.1 -144 + Bin 856: -144 -143.9 -143.8 -143.7 -143.6 -143.5 -143.4 -143.3 -143.2 -143.1 -143 + Bin 857: -143 -142.9 -142.8 -142.7 -142.6 -142.5 -142.4 -142.3 -142.2 -142.1 -142 + Bin 858: -142 -141.9 -141.8 -141.7 -141.6 -141.5 -141.4 -141.3 -141.2 -141.1 -141 + Bin 859: -141 -140.9 -140.8 -140.7 -140.6 -140.5 -140.4 -140.3 -140.2 -140.1 -140 + Bin 860: -140 -139.9 -139.8 -139.7 -139.6 -139.5 -139.4 -139.3 -139.2 -139.1 -139 + Bin 861: -139 -138.9 -138.8 -138.7 -138.6 -138.5 -138.4 -138.3 -138.2 -138.1 -138 + Bin 862: -138 -137.9 -137.8 -137.7 -137.6 -137.5 -137.4 -137.3 -137.2 -137.1 -137 + Bin 863: -137 -136.9 -136.8 -136.7 -136.6 -136.5 -136.4 -136.3 -136.2 -136.1 -136 + Bin 864: -136 -135.9 -135.8 -135.7 -135.6 -135.5 -135.4 -135.3 -135.2 -135.1 -135 + Bin 865: -135 -134.9 -134.8 -134.7 -134.6 -134.5 -134.4 -134.3 -134.2 -134.1 -134 + Bin 866: -134 -133.9 -133.8 -133.7 -133.6 -133.5 -133.4 -133.3 -133.2 -133.1 -133 + Bin 867: -133 -132.9 -132.8 -132.7 -132.6 -132.5 -132.4 -132.3 -132.2 -132.1 -132 + Bin 868: -132 -131.9 -131.8 -131.7 -131.6 -131.5 -131.4 -131.3 -131.2 -131.1 -131 + Bin 869: -131 -130.9 -130.8 -130.7 -130.6 -130.5 -130.4 -130.3 -130.2 -130.1 -130 + Bin 870: -130 -129.9 -129.8 -129.7 -129.6 -129.5 -129.4 -129.3 -129.2 -129.1 -129 + Bin 871: -129 -128.9 -128.8 -128.7 -128.6 -128.5 -128.4 -128.3 -128.2 -128.1 -128 + Bin 872: -128 -127.9 -127.8 -127.7 -127.6 -127.5 -127.4 -127.3 -127.2 -127.1 -127 + Bin 873: -127 -126.9 -126.8 -126.7 -126.6 -126.5 -126.4 -126.3 -126.2 -126.1 -126 + Bin 874: -126 -125.9 -125.8 -125.7 -125.6 -125.5 -125.4 -125.3 -125.2 -125.1 -125 + Bin 875: -125 -124.9 -124.8 -124.7 -124.6 -124.5 -124.4 -124.3 -124.2 -124.1 -124 + Bin 876: -124 -123.9 -123.8 -123.7 -123.6 -123.5 -123.4 -123.3 -123.2 -123.1 -123 + Bin 877: -123 -122.9 -122.8 -122.7 -122.6 -122.5 -122.4 -122.3 -122.2 -122.1 -122 + Bin 878: -122 -121.9 -121.8 -121.7 -121.6 -121.5 -121.4 -121.3 -121.2 -121.1 -121 + Bin 879: -121 -120.9 -120.8 -120.7 -120.6 -120.5 -120.4 -120.3 -120.2 -120.1 -120 + Bin 880: -120 -119.9 -119.8 -119.7 -119.6 -119.5 -119.4 -119.3 -119.2 -119.1 -119 + Bin 881: -119 -118.9 -118.8 -118.7 -118.6 -118.5 -118.4 -118.3 -118.2 -118.1 -118 + Bin 882: -118 -117.9 -117.8 -117.7 -117.6 -117.5 -117.4 -117.3 -117.2 -117.1 -117 + Bin 883: -117 -116.9 -116.8 -116.7 -116.6 -116.5 -116.4 -116.3 -116.2 -116.1 -116 + Bin 884: -116 -115.9 -115.8 -115.7 -115.6 -115.5 -115.4 -115.3 -115.2 -115.1 -115 + Bin 885: -115 -114.9 -114.8 -114.7 -114.6 -114.5 -114.4 -114.3 -114.2 -114.1 -114 + Bin 886: -114 -113.9 -113.8 -113.7 -113.6 -113.5 -113.4 -113.3 -113.2 -113.1 -113 + Bin 887: -113 -112.9 -112.8 -112.7 -112.6 -112.5 -112.4 -112.3 -112.2 -112.1 -112 + Bin 888: -112 -111.9 -111.8 -111.7 -111.6 -111.5 -111.4 -111.3 -111.2 -111.1 -111 + Bin 889: -111 -110.9 -110.8 -110.7 -110.6 -110.5 -110.4 -110.3 -110.2 -110.1 -110 + Bin 890: -110 -109.9 -109.8 -109.7 -109.6 -109.5 -109.4 -109.3 -109.2 -109.1 -109 + Bin 891: -109 -108.9 -108.8 -108.7 -108.6 -108.5 -108.4 -108.3 -108.2 -108.1 -108 + Bin 892: -108 -107.9 -107.8 -107.7 -107.6 -107.5 -107.4 -107.3 -107.2 -107.1 -107 + Bin 893: -107 -106.9 -106.8 -106.7 -106.6 -106.5 -106.4 -106.3 -106.2 -106.1 -106 + Bin 894: -106 -105.9 -105.8 -105.7 -105.6 -105.5 -105.4 -105.3 -105.2 -105.1 -105 + Bin 895: -105 -104.9 -104.8 -104.7 -104.6 -104.5 -104.4 -104.3 -104.2 -104.1 -104 + Bin 896: -104 -103.9 -103.8 -103.7 -103.6 -103.5 -103.4 -103.3 -103.2 -103.1 -103 + Bin 897: -103 -102.9 -102.8 -102.7 -102.6 -102.5 -102.4 -102.3 -102.2 -102.1 -102 + Bin 898: -102 -101.9 -101.8 -101.7 -101.6 -101.5 -101.4 -101.3 -101.2 -101.1 -101 + Bin 899: -101 -100.9 -100.8 -100.7 -100.6 -100.5 -100.4 -100.3 -100.2 -100.1 -100 + Bin 900: -100 -99.9 -99.8 -99.7 -99.6 -99.5 -99.4 -99.3 -99.2 -99.1 -99 + Bin 901: -99 -98.9 -98.8 -98.7 -98.6 -98.5 -98.4 -98.3 -98.2 -98.1 -98 + Bin 902: -98 -97.9 -97.8 -97.7 -97.6 -97.5 -97.4 -97.3 -97.2 -97.1 -97 + Bin 903: -97 -96.9 -96.8 -96.7 -96.6 -96.5 -96.4 -96.3 -96.2 -96.1 -96 + Bin 904: -96 -95.9 -95.8 -95.7 -95.6 -95.5 -95.4 -95.3 -95.2 -95.1 -95 + Bin 905: -95 -94.9 -94.8 -94.7 -94.6 -94.5 -94.4 -94.3 -94.2 -94.1 -94 + Bin 906: -94 -93.9 -93.8 -93.7 -93.6 -93.5 -93.4 -93.3 -93.2 -93.1 -93 + Bin 907: -93 -92.9 -92.8 -92.7 -92.6 -92.5 -92.4 -92.3 -92.2 -92.1 -92 + Bin 908: -92 -91.9 -91.8 -91.7 -91.6 -91.5 -91.4 -91.3 -91.2 -91.1 -91 + Bin 909: -91 -90.9 -90.8 -90.7 -90.6 -90.5 -90.4 -90.3 -90.2 -90.1 -90 + Bin 910: -90 -89.9 -89.8 -89.7 -89.6 -89.5 -89.4 -89.3 -89.2 -89.1 -89 + Bin 911: -89 -88.9 -88.8 -88.7 -88.6 -88.5 -88.4 -88.3 -88.2 -88.1 -88 + Bin 912: -88 -87.9 -87.8 -87.7 -87.6 -87.5 -87.4 -87.3 -87.2 -87.1 -87 + Bin 913: -87 -86.9 -86.8 -86.7 -86.6 -86.5 -86.4 -86.3 -86.2 -86.1 -86 + Bin 914: -86 -85.9 -85.8 -85.7 -85.6 -85.5 -85.4 -85.3 -85.2 -85.1 -85 + Bin 915: -85 -84.9 -84.8 -84.7 -84.6 -84.5 -84.4 -84.3 -84.2 -84.1 -84 + Bin 916: -84 -83.9 -83.8 -83.7 -83.6 -83.5 -83.4 -83.3 -83.2 -83.1 -83 + Bin 917: -83 -82.9 -82.8 -82.7 -82.6 -82.5 -82.4 -82.3 -82.2 -82.1 -82 + Bin 918: -82 -81.9 -81.8 -81.7 -81.6 -81.5 -81.4 -81.3 -81.2 -81.1 -81 + Bin 919: -81 -80.9 -80.8 -80.7 -80.6 -80.5 -80.4 -80.3 -80.2 -80.1 -80 + Bin 920: -80 -79.9 -79.8 -79.7 -79.6 -79.5 -79.4 -79.3 -79.2 -79.1 -79 + Bin 921: -79 -78.9 -78.8 -78.7 -78.6 -78.5 -78.4 -78.3 -78.2 -78.1 -78 + Bin 922: -78 -77.9 -77.8 -77.7 -77.6 -77.5 -77.4 -77.3 -77.2 -77.1 -77 + Bin 923: -77 -76.9 -76.8 -76.7 -76.6 -76.5 -76.4 -76.3 -76.2 -76.1 -76 + Bin 924: -76 -75.9 -75.8 -75.7 -75.6 -75.5 -75.4 -75.3 -75.2 -75.1 -75 + Bin 925: -75 -74.9 -74.8 -74.7 -74.6 -74.5 -74.4 -74.3 -74.2 -74.1 -74 + Bin 926: -74 -73.9 -73.8 -73.7 -73.6 -73.5 -73.4 -73.3 -73.2 -73.1 -73 + Bin 927: -73 -72.9 -72.8 -72.7 -72.6 -72.5 -72.4 -72.3 -72.2 -72.1 -72 + Bin 928: -72 -71.9 -71.8 -71.7 -71.6 -71.5 -71.4 -71.3 -71.2 -71.1 -71 + Bin 929: -71 -70.9 -70.8 -70.7 -70.6 -70.5 -70.4 -70.3 -70.2 -70.1 -70 + Bin 930: -70 -69.9 -69.8 -69.7 -69.6 -69.5 -69.4 -69.3 -69.2 -69.1 -69 + Bin 931: -69 -68.9 -68.8 -68.7 -68.6 -68.5 -68.4 -68.3 -68.2 -68.1 -68 + Bin 932: -68 -67.9 -67.8 -67.7 -67.6 -67.5 -67.4 -67.3 -67.2 -67.1 -67 + Bin 933: -67 -66.9 -66.8 -66.7 -66.6 -66.5 -66.4 -66.3 -66.2 -66.1 -66 + Bin 934: -66 -65.9 -65.8 -65.7 -65.6 -65.5 -65.4 -65.3 -65.2 -65.1 -65 + Bin 935: -65 -64.9 -64.8 -64.7 -64.6 -64.5 -64.4 -64.3 -64.2 -64.1 -64 + Bin 936: -64 -63.9 -63.8 -63.7 -63.6 -63.5 -63.4 -63.3 -63.2 -63.1 -63 + Bin 937: -63 -62.9 -62.8 -62.7 -62.6 -62.5 -62.4 -62.3 -62.2 -62.1 -62 + Bin 938: -62 -61.9 -61.8 -61.7 -61.6 -61.5 -61.4 -61.3 -61.2 -61.1 -61 + Bin 939: -61 -60.9 -60.8 -60.7 -60.6 -60.5 -60.4 -60.3 -60.2 -60.1 -60 + Bin 940: -60 -59.9 -59.8 -59.7 -59.6 -59.5 -59.4 -59.3 -59.2 -59.1 -59 + Bin 941: -59 -58.9 -58.8 -58.7 -58.6 -58.5 -58.4 -58.3 -58.2 -58.1 -58 + Bin 942: -58 -57.9 -57.8 -57.7 -57.6 -57.5 -57.4 -57.3 -57.2 -57.1 -57 + Bin 943: -57 -56.9 -56.8 -56.7 -56.6 -56.5 -56.4 -56.3 -56.2 -56.1 -56 + Bin 944: -56 -55.9 -55.8 -55.7 -55.6 -55.5 -55.4 -55.3 -55.2 -55.1 -55 + Bin 945: -55 -54.9 -54.8 -54.7 -54.6 -54.5 -54.4 -54.3 -54.2 -54.1 -54 + Bin 946: -54 -53.9 -53.8 -53.7 -53.6 -53.5 -53.4 -53.3 -53.2 -53.1 -53 + Bin 947: -53 -52.9 -52.8 -52.7 -52.6 -52.5 -52.4 -52.3 -52.2 -52.1 -52 + Bin 948: -52 -51.9 -51.8 -51.7 -51.6 -51.5 -51.4 -51.3 -51.2 -51.1 -51 + Bin 949: -51 -50.9 -50.8 -50.7 -50.6 -50.5 -50.4 -50.3 -50.2 -50.1 -50 + Bin 950: -50 -49.9 -49.8 -49.7 -49.6 -49.5 -49.4 -49.3 -49.2 -49.1 -49 + Bin 951: -49 -48.9 -48.8 -48.7 -48.6 -48.5 -48.4 -48.3 -48.2 -48.1 -48 + Bin 952: -48 -47.9 -47.8 -47.7 -47.6 -47.5 -47.4 -47.3 -47.2 -47.1 -47 + Bin 953: -47 -46.9 -46.8 -46.7 -46.6 -46.5 -46.4 -46.3 -46.2 -46.1 -46 + Bin 954: -46 -45.9 -45.8 -45.7 -45.6 -45.5 -45.4 -45.3 -45.2 -45.1 -45 + Bin 955: -45 -44.9 -44.8 -44.7 -44.6 -44.5 -44.4 -44.3 -44.2 -44.1 -44 + Bin 956: -44 -43.9 -43.8 -43.7 -43.6 -43.5 -43.4 -43.3 -43.2 -43.1 -43 + Bin 957: -43 -42.9 -42.8 -42.7 -42.6 -42.5 -42.4 -42.3 -42.2 -42.1 -42 + Bin 958: -42 -41.9 -41.8 -41.7 -41.6 -41.5 -41.4 -41.3 -41.2 -41.1 -41 + Bin 959: -41 -40.9 -40.8 -40.7 -40.6 -40.5 -40.4 -40.3 -40.2 -40.1 -40 + Bin 960: -40 -39.9 -39.8 -39.7 -39.6 -39.5 -39.4 -39.3 -39.2 -39.1 -39 + Bin 961: -39 -38.9 -38.8 -38.7 -38.6 -38.5 -38.4 -38.3 -38.2 -38.1 -38 + Bin 962: -38 -37.9 -37.8 -37.7 -37.6 -37.5 -37.4 -37.3 -37.2 -37.1 -37 + Bin 963: -37 -36.9 -36.8 -36.7 -36.6 -36.5 -36.4 -36.3 -36.2 -36.1 -36 + Bin 964: -36 -35.9 -35.8 -35.7 -35.6 -35.5 -35.4 -35.3 -35.2 -35.1 -35 + Bin 965: -35 -34.9 -34.8 -34.7 -34.6 -34.5 -34.4 -34.3 -34.2 -34.1 -34 + Bin 966: -34 -33.9 -33.8 -33.7 -33.6 -33.5 -33.4 -33.3 -33.2 -33.1 -33 + Bin 967: -33 -32.9 -32.8 -32.7 -32.6 -32.5 -32.4 -32.3 -32.2 -32.1 -32 + Bin 968: -32 -31.9 -31.8 -31.7 -31.6 -31.5 -31.4 -31.3 -31.2 -31.1 -31 + Bin 969: -31 -30.9 -30.8 -30.7 -30.6 -30.5 -30.4 -30.3 -30.2 -30.1 -30 + Bin 970: -30 -29.9 -29.8 -29.7 -29.6 -29.5 -29.4 -29.3 -29.2 -29.1 -29 + Bin 971: -29 -28.9 -28.8 -28.7 -28.6 -28.5 -28.4 -28.3 -28.2 -28.1 -28 + Bin 972: -28 -27.9 -27.8 -27.7 -27.6 -27.5 -27.4 -27.3 -27.2 -27.1 -27 + Bin 973: -27 -26.9 -26.8 -26.7 -26.6 -26.5 -26.4 -26.3 -26.2 -26.1 -26 + Bin 974: -26 -25.9 -25.8 -25.7 -25.6 -25.5 -25.4 -25.3 -25.2 -25.1 -25 + Bin 975: -25 -24.9 -24.8 -24.7 -24.6 -24.5 -24.4 -24.3 -24.2 -24.1 -24 + Bin 976: -24 -23.9 -23.8 -23.7 -23.6 -23.5 -23.4 -23.3 -23.2 -23.1 -23 + Bin 977: -23 -22.9 -22.8 -22.7 -22.6 -22.5 -22.4 -22.3 -22.2 -22.1 -22 + Bin 978: -22 -21.9 -21.8 -21.7 -21.6 -21.5 -21.4 -21.3 -21.2 -21.1 -21 + Bin 979: -21 -20.9 -20.8 -20.7 -20.6 -20.5 -20.4 -20.3 -20.2 -20.1 -20 + Bin 980: -20 -19.9 -19.8 -19.7 -19.6 -19.5 -19.4 -19.3 -19.2 -19.1 -19 + Bin 981: -19 -18.9 -18.8 -18.7 -18.6 -18.5 -18.4 -18.3 -18.2 -18.1 -18 + Bin 982: -18 -17.9 -17.8 -17.7 -17.6 -17.5 -17.4 -17.3 -17.2 -17.1 -17 + Bin 983: -17 -16.9 -16.8 -16.7 -16.6 -16.5 -16.4 -16.3 -16.2 -16.1 -16 + Bin 984: -16 -15.9 -15.8 -15.7 -15.6 -15.5 -15.4 -15.3 -15.2 -15.1 -15 + Bin 985: -15 -14.9 -14.8 -14.7 -14.6 -14.5 -14.4 -14.3 -14.2 -14.1 -14 + Bin 986: -14 -13.9 -13.8 -13.7 -13.6 -13.5 -13.4 -13.3 -13.2 -13.1 -13 + Bin 987: -13 -12.9 -12.8 -12.7 -12.6 -12.5 -12.4 -12.3 -12.2 -12.1 -12 + Bin 988: -12 -11.9 -11.8 -11.7 -11.6 -11.5 -11.4 -11.3 -11.2 -11.1 -11 + Bin 989: -11 -10.9 -10.8 -10.7 -10.6 -10.5 -10.4 -10.3 -10.2 -10.1 -10 + Bin 990: -10 -9.9 -9.8 -9.7 -9.6 -9.5 -9.4 -9.3 -9.2 -9.1 -9 + Bin 991: -9 -8.9 -8.8 -8.7 -8.6 -8.5 -8.4 -8.3 -8.2 -8.1 -8 + Bin 992: -8 -7.9 -7.8 -7.7 -7.6 -7.5 -7.4 -7.3 -7.2 -7.1 -7 + Bin 993: -7 -6.9 -6.8 -6.7 -6.6 -6.5 -6.4 -6.3 -6.2 -6.1 -6 + Bin 994: -6 -5.9 -5.8 -5.7 -5.6 -5.5 -5.4 -5.3 -5.2 -5.1 -5 + Bin 995: -5 -4.9 -4.8 -4.7 -4.6 -4.5 -4.4 -4.3 -4.2 -4.1 -4 + Bin 996: -4 -3.9 -3.8 -3.7 -3.6 -3.5 -3.4 -3.3 -3.2 -3.1 -3 + Bin 997: -3 -2.9 -2.8 -2.7 -2.6 -2.5 -2.4 -2.3 -2.2 -2.1 -2 + Bin 998: -2 -1.9 -1.8 -1.7 -1.6 -1.5 -1.4 -1.3 -1.2 -1.1 -1 + Bin 999: -1 -0.9 -0.8 -0.7 -0.6 -0.5 -0.4 -0.3 -0.2 -0.1 0 + Bin 1000: 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 + Bin 1001: 1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2 + Bin 1002: 2 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3 + Bin 1003: 3 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4 + Bin 1004: 4 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5 + Bin 1005: 5 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6 + Bin 1006: 6 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7 + Bin 1007: 7 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8 + Bin 1008: 8 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9 + Bin 1009: 9 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 10 + Bin 1010: 10 10.1 10.2 10.3 10.4 10.5 10.6 10.7 10.8 10.9 11 + Bin 1011: 11 11.1 11.2 11.3 11.4 11.5 11.6 11.7 11.8 11.9 12 + Bin 1012: 12 12.1 12.2 12.3 12.4 12.5 12.6 12.7 12.8 12.9 13 + Bin 1013: 13 13.1 13.2 13.3 13.4 13.5 13.6 13.7 13.8 13.9 14 + Bin 1014: 14 14.1 14.2 14.3 14.4 14.5 14.6 14.7 14.8 14.9 15 + Bin 1015: 15 15.1 15.2 15.3 15.4 15.5 15.6 15.7 15.8 15.9 16 + Bin 1016: 16 16.1 16.2 16.3 16.4 16.5 16.6 16.7 16.8 16.9 17 + Bin 1017: 17 17.1 17.2 17.3 17.4 17.5 17.6 17.7 17.8 17.9 18 + Bin 1018: 18 18.1 18.2 18.3 18.4 18.5 18.6 18.7 18.8 18.9 19 + Bin 1019: 19 19.1 19.2 19.3 19.4 19.5 19.6 19.7 19.8 19.9 20 + Bin 1020: 20 20.1 20.2 20.3 20.4 20.5 20.6 20.7 20.8 20.9 21 + Bin 1021: 21 21.1 21.2 21.3 21.4 21.5 21.6 21.7 21.8 21.9 22 + Bin 1022: 22 22.1 22.2 22.3 22.4 22.5 22.6 22.7 22.8 22.9 23 + Bin 1023: 23 23.1 23.2 23.3 23.4 23.5 23.6 23.7 23.8 23.9 24 + Bin 1024: 24 24.1 24.2 24.3 24.4 24.5 24.6 24.7 24.8 24.9 25 + Bin 1025: 25 25.1 25.2 25.3 25.4 25.5 25.6 25.7 25.8 25.9 26 + Bin 1026: 26 26.1 26.2 26.3 26.4 26.5 26.6 26.7 26.8 26.9 27 + Bin 1027: 27 27.1 27.2 27.3 27.4 27.5 27.6 27.7 27.8 27.9 28 + Bin 1028: 28 28.1 28.2 28.3 28.4 28.5 28.6 28.7 28.8 28.9 29 + Bin 1029: 29 29.1 29.2 29.3 29.4 29.5 29.6 29.7 29.8 29.9 30 + Bin 1030: 30 30.1 30.2 30.3 30.4 30.5 30.6 30.7 30.8 30.9 31 + Bin 1031: 31 31.1 31.2 31.3 31.4 31.5 31.6 31.7 31.8 31.9 32 + Bin 1032: 32 32.1 32.2 32.3 32.4 32.5 32.6 32.7 32.8 32.9 33 + Bin 1033: 33 33.1 33.2 33.3 33.4 33.5 33.6 33.7 33.8 33.9 34 + Bin 1034: 34 34.1 34.2 34.3 34.4 34.5 34.6 34.7 34.8 34.9 35 + Bin 1035: 35 35.1 35.2 35.3 35.4 35.5 35.6 35.7 35.8 35.9 36 + Bin 1036: 36 36.1 36.2 36.3 36.4 36.5 36.6 36.7 36.8 36.9 37 + Bin 1037: 37 37.1 37.2 37.3 37.4 37.5 37.6 37.7 37.8 37.9 38 + Bin 1038: 38 38.1 38.2 38.3 38.4 38.5 38.6 38.7 38.8 38.9 39 + Bin 1039: 39 39.1 39.2 39.3 39.4 39.5 39.6 39.7 39.8 39.9 40 + Bin 1040: 40 40.1 40.2 40.3 40.4 40.5 40.6 40.7 40.8 40.9 41 + Bin 1041: 41 41.1 41.2 41.3 41.4 41.5 41.6 41.7 41.8 41.9 42 + Bin 1042: 42 42.1 42.2 42.3 42.4 42.5 42.6 42.7 42.8 42.9 43 + Bin 1043: 43 43.1 43.2 43.3 43.4 43.5 43.6 43.7 43.8 43.9 44 + Bin 1044: 44 44.1 44.2 44.3 44.4 44.5 44.6 44.7 44.8 44.9 45 + Bin 1045: 45 45.1 45.2 45.3 45.4 45.5 45.6 45.7 45.8 45.9 46 + Bin 1046: 46 46.1 46.2 46.3 46.4 46.5 46.6 46.7 46.8 46.9 47 + Bin 1047: 47 47.1 47.2 47.3 47.4 47.5 47.6 47.7 47.8 47.9 48 + Bin 1048: 48 48.1 48.2 48.3 48.4 48.5 48.6 48.7 48.8 48.9 49 + Bin 1049: 49 49.1 49.2 49.3 49.4 49.5 49.6 49.7 49.8 49.9 50 + Bin 1050: 50 50.1 50.2 50.3 50.4 50.5 50.6 50.7 50.8 50.9 51 + Bin 1051: 51 51.1 51.2 51.3 51.4 51.5 51.6 51.7 51.8 51.9 52 + Bin 1052: 52 52.1 52.2 52.3 52.4 52.5 52.6 52.7 52.8 52.9 53 + Bin 1053: 53 53.1 53.2 53.3 53.4 53.5 53.6 53.7 53.8 53.9 54 + Bin 1054: 54 54.1 54.2 54.3 54.4 54.5 54.6 54.7 54.8 54.9 55 + Bin 1055: 55 55.1 55.2 55.3 55.4 55.5 55.6 55.7 55.8 55.9 56 + Bin 1056: 56 56.1 56.2 56.3 56.4 56.5 56.6 56.7 56.8 56.9 57 + Bin 1057: 57 57.1 57.2 57.3 57.4 57.5 57.6 57.7 57.8 57.9 58 + Bin 1058: 58 58.1 58.2 58.3 58.4 58.5 58.6 58.7 58.8 58.9 59 + Bin 1059: 59 59.1 59.2 59.3 59.4 59.5 59.6 59.7 59.8 59.9 60 + Bin 1060: 60 60.1 60.2 60.3 60.4 60.5 60.6 60.7 60.8 60.9 61 + Bin 1061: 61 61.1 61.2 61.3 61.4 61.5 61.6 61.7 61.8 61.9 62 + Bin 1062: 62 62.1 62.2 62.3 62.4 62.5 62.6 62.7 62.8 62.9 63 + Bin 1063: 63 63.1 63.2 63.3 63.4 63.5 63.6 63.7 63.8 63.9 64 + Bin 1064: 64 64.1 64.2 64.3 64.4 64.5 64.6 64.7 64.8 64.9 65 + Bin 1065: 65 65.1 65.2 65.3 65.4 65.5 65.6 65.7 65.8 65.9 66 + Bin 1066: 66 66.1 66.2 66.3 66.4 66.5 66.6 66.7 66.8 66.9 67 + Bin 1067: 67 67.1 67.2 67.3 67.4 67.5 67.6 67.7 67.8 67.9 68 + Bin 1068: 68 68.1 68.2 68.3 68.4 68.5 68.6 68.7 68.8 68.9 69 + Bin 1069: 69 69.1 69.2 69.3 69.4 69.5 69.6 69.7 69.8 69.9 70 + Bin 1070: 70 70.1 70.2 70.3 70.4 70.5 70.6 70.7 70.8 70.9 71 + Bin 1071: 71 71.1 71.2 71.3 71.4 71.5 71.6 71.7 71.8 71.9 72 + Bin 1072: 72 72.1 72.2 72.3 72.4 72.5 72.6 72.7 72.8 72.9 73 + Bin 1073: 73 73.1 73.2 73.3 73.4 73.5 73.6 73.7 73.8 73.9 74 + Bin 1074: 74 74.1 74.2 74.3 74.4 74.5 74.6 74.7 74.8 74.9 75 + Bin 1075: 75 75.1 75.2 75.3 75.4 75.5 75.6 75.7 75.8 75.9 76 + Bin 1076: 76 76.1 76.2 76.3 76.4 76.5 76.6 76.7 76.8 76.9 77 + Bin 1077: 77 77.1 77.2 77.3 77.4 77.5 77.6 77.7 77.8 77.9 78 + Bin 1078: 78 78.1 78.2 78.3 78.4 78.5 78.6 78.7 78.8 78.9 79 + Bin 1079: 79 79.1 79.2 79.3 79.4 79.5 79.6 79.7 79.8 79.9 80 + Bin 1080: 80 80.1 80.2 80.3 80.4 80.5 80.6 80.7 80.8 80.9 81 + Bin 1081: 81 81.1 81.2 81.3 81.4 81.5 81.6 81.7 81.8 81.9 82 + Bin 1082: 82 82.1 82.2 82.3 82.4 82.5 82.6 82.7 82.8 82.9 83 + Bin 1083: 83 83.1 83.2 83.3 83.4 83.5 83.6 83.7 83.8 83.9 84 + Bin 1084: 84 84.1 84.2 84.3 84.4 84.5 84.6 84.7 84.8 84.9 85 + Bin 1085: 85 85.1 85.2 85.3 85.4 85.5 85.6 85.7 85.8 85.9 86 + Bin 1086: 86 86.1 86.2 86.3 86.4 86.5 86.6 86.7 86.8 86.9 87 + Bin 1087: 87 87.1 87.2 87.3 87.4 87.5 87.6 87.7 87.8 87.9 88 + Bin 1088: 88 88.1 88.2 88.3 88.4 88.5 88.6 88.7 88.8 88.9 89 + Bin 1089: 89 89.1 89.2 89.3 89.4 89.5 89.6 89.7 89.8 89.9 90 + Bin 1090: 90 90.1 90.2 90.3 90.4 90.5 90.6 90.7 90.8 90.9 91 + Bin 1091: 91 91.1 91.2 91.3 91.4 91.5 91.6 91.7 91.8 91.9 92 + Bin 1092: 92 92.1 92.2 92.3 92.4 92.5 92.6 92.7 92.8 92.9 93 + Bin 1093: 93 93.1 93.2 93.3 93.4 93.5 93.6 93.7 93.8 93.9 94 + Bin 1094: 94 94.1 94.2 94.3 94.4 94.5 94.6 94.7 94.8 94.9 95 + Bin 1095: 95 95.1 95.2 95.3 95.4 95.5 95.6 95.7 95.8 95.9 96 + Bin 1096: 96 96.1 96.2 96.3 96.4 96.5 96.6 96.7 96.8 96.9 97 + Bin 1097: 97 97.1 97.2 97.3 97.4 97.5 97.6 97.7 97.8 97.9 98 + Bin 1098: 98 98.1 98.2 98.3 98.4 98.5 98.6 98.7 98.8 98.9 99 + Bin 1099: 99 99.1 99.2 99.3 99.4 99.5 99.6 99.7 99.8 99.9 100 + Bin 1100: 100 100.1 100.2 100.3 100.4 100.5 100.6 100.7 100.8 100.9 101 + Bin 1101: 101 101.1 101.2 101.3 101.4 101.5 101.6 101.7 101.8 101.9 102 + Bin 1102: 102 102.1 102.2 102.3 102.4 102.5 102.6 102.7 102.8 102.9 103 + Bin 1103: 103 103.1 103.2 103.3 103.4 103.5 103.6 103.7 103.8 103.9 104 + Bin 1104: 104 104.1 104.2 104.3 104.4 104.5 104.6 104.7 104.8 104.9 105 + Bin 1105: 105 105.1 105.2 105.3 105.4 105.5 105.6 105.7 105.8 105.9 106 + Bin 1106: 106 106.1 106.2 106.3 106.4 106.5 106.6 106.7 106.8 106.9 107 + Bin 1107: 107 107.1 107.2 107.3 107.4 107.5 107.6 107.7 107.8 107.9 108 + Bin 1108: 108 108.1 108.2 108.3 108.4 108.5 108.6 108.7 108.8 108.9 109 + Bin 1109: 109 109.1 109.2 109.3 109.4 109.5 109.6 109.7 109.8 109.9 110 + Bin 1110: 110 110.1 110.2 110.3 110.4 110.5 110.6 110.7 110.8 110.9 111 + Bin 1111: 111 111.1 111.2 111.3 111.4 111.5 111.6 111.7 111.8 111.9 112 + Bin 1112: 112 112.1 112.2 112.3 112.4 112.5 112.6 112.7 112.8 112.9 113 + Bin 1113: 113 113.1 113.2 113.3 113.4 113.5 113.6 113.7 113.8 113.9 114 + Bin 1114: 114 114.1 114.2 114.3 114.4 114.5 114.6 114.7 114.8 114.9 115 + Bin 1115: 115 115.1 115.2 115.3 115.4 115.5 115.6 115.7 115.8 115.9 116 + Bin 1116: 116 116.1 116.2 116.3 116.4 116.5 116.6 116.7 116.8 116.9 117 + Bin 1117: 117 117.1 117.2 117.3 117.4 117.5 117.6 117.7 117.8 117.9 118 + Bin 1118: 118 118.1 118.2 118.3 118.4 118.5 118.6 118.7 118.8 118.9 119 + Bin 1119: 119 119.1 119.2 119.3 119.4 119.5 119.6 119.7 119.8 119.9 120 + Bin 1120: 120 120.1 120.2 120.3 120.4 120.5 120.6 120.7 120.8 120.9 121 + Bin 1121: 121 121.1 121.2 121.3 121.4 121.5 121.6 121.7 121.8 121.9 122 + Bin 1122: 122 122.1 122.2 122.3 122.4 122.5 122.6 122.7 122.8 122.9 123 + Bin 1123: 123 123.1 123.2 123.3 123.4 123.5 123.6 123.7 123.8 123.9 124 + Bin 1124: 124 124.1 124.2 124.3 124.4 124.5 124.6 124.7 124.8 124.9 125 + Bin 1125: 125 125.1 125.2 125.3 125.4 125.5 125.6 125.7 125.8 125.9 126 + Bin 1126: 126 126.1 126.2 126.3 126.4 126.5 126.6 126.7 126.8 126.9 127 + Bin 1127: 127 127.1 127.2 127.3 127.4 127.5 127.6 127.7 127.8 127.9 128 + Bin 1128: 128 128.1 128.2 128.3 128.4 128.5 128.6 128.7 128.8 128.9 129 + Bin 1129: 129 129.1 129.2 129.3 129.4 129.5 129.6 129.7 129.8 129.9 130 + Bin 1130: 130 130.1 130.2 130.3 130.4 130.5 130.6 130.7 130.8 130.9 131 + Bin 1131: 131 131.1 131.2 131.3 131.4 131.5 131.6 131.7 131.8 131.9 132 + Bin 1132: 132 132.1 132.2 132.3 132.4 132.5 132.6 132.7 132.8 132.9 133 + Bin 1133: 133 133.1 133.2 133.3 133.4 133.5 133.6 133.7 133.8 133.9 134 + Bin 1134: 134 134.1 134.2 134.3 134.4 134.5 134.6 134.7 134.8 134.9 135 + Bin 1135: 135 135.1 135.2 135.3 135.4 135.5 135.6 135.7 135.8 135.9 136 + Bin 1136: 136 136.1 136.2 136.3 136.4 136.5 136.6 136.7 136.8 136.9 137 + Bin 1137: 137 137.1 137.2 137.3 137.4 137.5 137.6 137.7 137.8 137.9 138 + Bin 1138: 138 138.1 138.2 138.3 138.4 138.5 138.6 138.7 138.8 138.9 139 + Bin 1139: 139 139.1 139.2 139.3 139.4 139.5 139.6 139.7 139.8 139.9 140 + Bin 1140: 140 140.1 140.2 140.3 140.4 140.5 140.6 140.7 140.8 140.9 141 + Bin 1141: 141 141.1 141.2 141.3 141.4 141.5 141.6 141.7 141.8 141.9 142 + Bin 1142: 142 142.1 142.2 142.3 142.4 142.5 142.6 142.7 142.8 142.9 143 + Bin 1143: 143 143.1 143.2 143.3 143.4 143.5 143.6 143.7 143.8 143.9 144 + Bin 1144: 144 144.1 144.2 144.3 144.4 144.5 144.6 144.7 144.8 144.9 145 + Bin 1145: 145 145.1 145.2 145.3 145.4 145.5 145.6 145.7 145.8 145.9 146 + Bin 1146: 146 146.1 146.2 146.3 146.4 146.5 146.6 146.7 146.8 146.9 147 + Bin 1147: 147 147.1 147.2 147.3 147.4 147.5 147.6 147.7 147.8 147.9 148 + Bin 1148: 148 148.1 148.2 148.3 148.4 148.5 148.6 148.7 148.8 148.9 149 + Bin 1149: 149 149.1 149.2 149.3 149.4 149.5 149.6 149.7 149.8 149.9 150 + Bin 1150: 150 150.1 150.2 150.3 150.4 150.5 150.6 150.7 150.8 150.9 151 + Bin 1151: 151 151.1 151.2 151.3 151.4 151.5 151.6 151.7 151.8 151.9 152 + Bin 1152: 152 152.1 152.2 152.3 152.4 152.5 152.6 152.7 152.8 152.9 153 + Bin 1153: 153 153.1 153.2 153.3 153.4 153.5 153.6 153.7 153.8 153.9 154 + Bin 1154: 154 154.1 154.2 154.3 154.4 154.5 154.6 154.7 154.8 154.9 155 + Bin 1155: 155 155.1 155.2 155.3 155.4 155.5 155.6 155.7 155.8 155.9 156 + Bin 1156: 156 156.1 156.2 156.3 156.4 156.5 156.6 156.7 156.8 156.9 157 + Bin 1157: 157 157.1 157.2 157.3 157.4 157.5 157.6 157.7 157.8 157.9 158 + Bin 1158: 158 158.1 158.2 158.3 158.4 158.5 158.6 158.7 158.8 158.9 159 + Bin 1159: 159 159.1 159.2 159.3 159.4 159.5 159.6 159.7 159.8 159.9 160 + Bin 1160: 160 160.1 160.2 160.3 160.4 160.5 160.6 160.7 160.8 160.9 161 + Bin 1161: 161 161.1 161.2 161.3 161.4 161.5 161.6 161.7 161.8 161.9 162 + Bin 1162: 162 162.1 162.2 162.3 162.4 162.5 162.6 162.7 162.8 162.9 163 + Bin 1163: 163 163.1 163.2 163.3 163.4 163.5 163.6 163.7 163.8 163.9 164 + Bin 1164: 164 164.1 164.2 164.3 164.4 164.5 164.6 164.7 164.8 164.9 165 + Bin 1165: 165 165.1 165.2 165.3 165.4 165.5 165.6 165.7 165.8 165.9 166 + Bin 1166: 166 166.1 166.2 166.3 166.4 166.5 166.6 166.7 166.8 166.9 167 + Bin 1167: 167 167.1 167.2 167.3 167.4 167.5 167.6 167.7 167.8 167.9 168 + Bin 1168: 168 168.1 168.2 168.3 168.4 168.5 168.6 168.7 168.8 168.9 169 + Bin 1169: 169 169.1 169.2 169.3 169.4 169.5 169.6 169.7 169.8 169.9 170 + Bin 1170: 170 170.1 170.2 170.3 170.4 170.5 170.6 170.7 170.8 170.9 171 + Bin 1171: 171 171.1 171.2 171.3 171.4 171.5 171.6 171.7 171.8 171.9 172 + Bin 1172: 172 172.1 172.2 172.3 172.4 172.5 172.6 172.7 172.8 172.9 173 + Bin 1173: 173 173.1 173.2 173.3 173.4 173.5 173.6 173.7 173.8 173.9 174 + Bin 1174: 174 174.1 174.2 174.3 174.4 174.5 174.6 174.7 174.8 174.9 175 + Bin 1175: 175 175.1 175.2 175.3 175.4 175.5 175.6 175.7 175.8 175.9 176 + Bin 1176: 176 176.1 176.2 176.3 176.4 176.5 176.6 176.7 176.8 176.9 177 + Bin 1177: 177 177.1 177.2 177.3 177.4 177.5 177.6 177.7 177.8 177.9 178 + Bin 1178: 178 178.1 178.2 178.3 178.4 178.5 178.6 178.7 178.8 178.9 179 + Bin 1179: 179 179.1 179.2 179.3 179.4 179.5 179.6 179.7 179.8 179.9 180 + Bin 1180: 180 180.1 180.2 180.3 180.4 180.5 180.6 180.7 180.8 180.9 181 + Bin 1181: 181 181.1 181.2 181.3 181.4 181.5 181.6 181.7 181.8 181.9 182 + Bin 1182: 182 182.1 182.2 182.3 182.4 182.5 182.6 182.7 182.8 182.9 183 + Bin 1183: 183 183.1 183.2 183.3 183.4 183.5 183.6 183.7 183.8 183.9 184 + Bin 1184: 184 184.1 184.2 184.3 184.4 184.5 184.6 184.7 184.8 184.9 185 + Bin 1185: 185 185.1 185.2 185.3 185.4 185.5 185.6 185.7 185.8 185.9 186 + Bin 1186: 186 186.1 186.2 186.3 186.4 186.5 186.6 186.7 186.8 186.9 187 + Bin 1187: 187 187.1 187.2 187.3 187.4 187.5 187.6 187.7 187.8 187.9 188 + Bin 1188: 188 188.1 188.2 188.3 188.4 188.5 188.6 188.7 188.8 188.9 189 + Bin 1189: 189 189.1 189.2 189.3 189.4 189.5 189.6 189.7 189.8 189.9 190 + Bin 1190: 190 190.1 190.2 190.3 190.4 190.5 190.6 190.7 190.8 190.9 191 + Bin 1191: 191 191.1 191.2 191.3 191.4 191.5 191.6 191.7 191.8 191.9 192 + Bin 1192: 192 192.1 192.2 192.3 192.4 192.5 192.6 192.7 192.8 192.9 193 + Bin 1193: 193 193.1 193.2 193.3 193.4 193.5 193.6 193.7 193.8 193.9 194 + Bin 1194: 194 194.1 194.2 194.3 194.4 194.5 194.6 194.7 194.8 194.9 195 + Bin 1195: 195 195.1 195.2 195.3 195.4 195.5 195.6 195.7 195.8 195.9 196 + Bin 1196: 196 196.1 196.2 196.3 196.4 196.5 196.6 196.7 196.8 196.9 197 + Bin 1197: 197 197.1 197.2 197.3 197.4 197.5 197.6 197.7 197.8 197.9 198 + Bin 1198: 198 198.1 198.2 198.3 198.4 198.5 198.6 198.7 198.8 198.9 199 + Bin 1199: 199 199.1 199.2 199.3 199.4 199.5 199.6 199.7 199.8 199.9 200 + Bin 1200: 200 200.1 200.2 200.3 200.4 200.5 200.6 200.7 200.8 200.9 201 + Bin 1201: 201 201.1 201.2 201.3 201.4 201.5 201.6 201.7 201.8 201.9 202 + Bin 1202: 202 202.1 202.2 202.3 202.4 202.5 202.6 202.7 202.8 202.9 203 + Bin 1203: 203 203.1 203.2 203.3 203.4 203.5 203.6 203.7 203.8 203.9 204 + Bin 1204: 204 204.1 204.2 204.3 204.4 204.5 204.6 204.7 204.8 204.9 205 + Bin 1205: 205 205.1 205.2 205.3 205.4 205.5 205.6 205.7 205.8 205.9 206 + Bin 1206: 206 206.1 206.2 206.3 206.4 206.5 206.6 206.7 206.8 206.9 207 + Bin 1207: 207 207.1 207.2 207.3 207.4 207.5 207.6 207.7 207.8 207.9 208 + Bin 1208: 208 208.1 208.2 208.3 208.4 208.5 208.6 208.7 208.8 208.9 209 + Bin 1209: 209 209.1 209.2 209.3 209.4 209.5 209.6 209.7 209.8 209.9 210 + Bin 1210: 210 210.1 210.2 210.3 210.4 210.5 210.6 210.7 210.8 210.9 211 + Bin 1211: 211 211.1 211.2 211.3 211.4 211.5 211.6 211.7 211.8 211.9 212 + Bin 1212: 212 212.1 212.2 212.3 212.4 212.5 212.6 212.7 212.8 212.9 213 + Bin 1213: 213 213.1 213.2 213.3 213.4 213.5 213.6 213.7 213.8 213.9 214 + Bin 1214: 214 214.1 214.2 214.3 214.4 214.5 214.6 214.7 214.8 214.9 215 + Bin 1215: 215 215.1 215.2 215.3 215.4 215.5 215.6 215.7 215.8 215.9 216 + Bin 1216: 216 216.1 216.2 216.3 216.4 216.5 216.6 216.7 216.8 216.9 217 + Bin 1217: 217 217.1 217.2 217.3 217.4 217.5 217.6 217.7 217.8 217.9 218 + Bin 1218: 218 218.1 218.2 218.3 218.4 218.5 218.6 218.7 218.8 218.9 219 + Bin 1219: 219 219.1 219.2 219.3 219.4 219.5 219.6 219.7 219.8 219.9 220 + Bin 1220: 220 220.1 220.2 220.3 220.4 220.5 220.6 220.7 220.8 220.9 221 + Bin 1221: 221 221.1 221.2 221.3 221.4 221.5 221.6 221.7 221.8 221.9 222 + Bin 1222: 222 222.1 222.2 222.3 222.4 222.5 222.6 222.7 222.8 222.9 223 + Bin 1223: 223 223.1 223.2 223.3 223.4 223.5 223.6 223.7 223.8 223.9 224 + Bin 1224: 224 224.1 224.2 224.3 224.4 224.5 224.6 224.7 224.8 224.9 225 + Bin 1225: 225 225.1 225.2 225.3 225.4 225.5 225.6 225.7 225.8 225.9 226 + Bin 1226: 226 226.1 226.2 226.3 226.4 226.5 226.6 226.7 226.8 226.9 227 + Bin 1227: 227 227.1 227.2 227.3 227.4 227.5 227.6 227.7 227.8 227.9 228 + Bin 1228: 228 228.1 228.2 228.3 228.4 228.5 228.6 228.7 228.8 228.9 229 + Bin 1229: 229 229.1 229.2 229.3 229.4 229.5 229.6 229.7 229.8 229.9 230 + Bin 1230: 230 230.1 230.2 230.3 230.4 230.5 230.6 230.7 230.8 230.9 231 + Bin 1231: 231 231.1 231.2 231.3 231.4 231.5 231.6 231.7 231.8 231.9 232 + Bin 1232: 232 232.1 232.2 232.3 232.4 232.5 232.6 232.7 232.8 232.9 233 + Bin 1233: 233 233.1 233.2 233.3 233.4 233.5 233.6 233.7 233.8 233.9 234 + Bin 1234: 234 234.1 234.2 234.3 234.4 234.5 234.6 234.7 234.8 234.9 235 + Bin 1235: 235 235.1 235.2 235.3 235.4 235.5 235.6 235.7 235.8 235.9 236 + Bin 1236: 236 236.1 236.2 236.3 236.4 236.5 236.6 236.7 236.8 236.9 237 + Bin 1237: 237 237.1 237.2 237.3 237.4 237.5 237.6 237.7 237.8 237.9 238 + Bin 1238: 238 238.1 238.2 238.3 238.4 238.5 238.6 238.7 238.8 238.9 239 + Bin 1239: 239 239.1 239.2 239.3 239.4 239.5 239.6 239.7 239.8 239.9 240 + Bin 1240: 240 240.1 240.2 240.3 240.4 240.5 240.6 240.7 240.8 240.9 241 + Bin 1241: 241 241.1 241.2 241.3 241.4 241.5 241.6 241.7 241.8 241.9 242 + Bin 1242: 242 242.1 242.2 242.3 242.4 242.5 242.6 242.7 242.8 242.9 243 + Bin 1243: 243 243.1 243.2 243.3 243.4 243.5 243.6 243.7 243.8 243.9 244 + Bin 1244: 244 244.1 244.2 244.3 244.4 244.5 244.6 244.7 244.8 244.9 245 + Bin 1245: 245 245.1 245.2 245.3 245.4 245.5 245.6 245.7 245.8 245.9 246 + Bin 1246: 246 246.1 246.2 246.3 246.4 246.5 246.6 246.7 246.8 246.9 247 + Bin 1247: 247 247.1 247.2 247.3 247.4 247.5 247.6 247.7 247.8 247.9 248 + Bin 1248: 248 248.1 248.2 248.3 248.4 248.5 248.6 248.7 248.8 248.9 249 + Bin 1249: 249 249.1 249.2 249.3 249.4 249.5 249.6 249.7 249.8 249.9 250 + Bin 1250: 250 250.1 250.2 250.3 250.4 250.5 250.6 250.7 250.8 250.9 251 + Bin 1251: 251 251.1 251.2 251.3 251.4 251.5 251.6 251.7 251.8 251.9 252 + Bin 1252: 252 252.1 252.2 252.3 252.4 252.5 252.6 252.7 252.8 252.9 253 + Bin 1253: 253 253.1 253.2 253.3 253.4 253.5 253.6 253.7 253.8 253.9 254 + Bin 1254: 254 254.1 254.2 254.3 254.4 254.5 254.6 254.7 254.8 254.9 255 + Bin 1255: 255 255.1 255.2 255.3 255.4 255.5 255.6 255.7 255.8 255.9 256 + Bin 1256: 256 256.1 256.2 256.3 256.4 256.5 256.6 256.7 256.8 256.9 257 + Bin 1257: 257 257.1 257.2 257.3 257.4 257.5 257.6 257.7 257.8 257.9 258 + Bin 1258: 258 258.1 258.2 258.3 258.4 258.5 258.6 258.7 258.8 258.9 259 + Bin 1259: 259 259.1 259.2 259.3 259.4 259.5 259.6 259.7 259.8 259.9 260 + Bin 1260: 260 260.1 260.2 260.3 260.4 260.5 260.6 260.7 260.8 260.9 261 + Bin 1261: 261 261.1 261.2 261.3 261.4 261.5 261.6 261.7 261.8 261.9 262 + Bin 1262: 262 262.1 262.2 262.3 262.4 262.5 262.6 262.7 262.8 262.9 263 + Bin 1263: 263 263.1 263.2 263.3 263.4 263.5 263.6 263.7 263.8 263.9 264 + Bin 1264: 264 264.1 264.2 264.3 264.4 264.5 264.6 264.7 264.8 264.9 265 + Bin 1265: 265 265.1 265.2 265.3 265.4 265.5 265.6 265.7 265.8 265.9 266 + Bin 1266: 266 266.1 266.2 266.3 266.4 266.5 266.6 266.7 266.8 266.9 267 + Bin 1267: 267 267.1 267.2 267.3 267.4 267.5 267.6 267.7 267.8 267.9 268 + Bin 1268: 268 268.1 268.2 268.3 268.4 268.5 268.6 268.7 268.8 268.9 269 + Bin 1269: 269 269.1 269.2 269.3 269.4 269.5 269.6 269.7 269.8 269.9 270 + Bin 1270: 270 270.1 270.2 270.3 270.4 270.5 270.6 270.7 270.8 270.9 271 + Bin 1271: 271 271.1 271.2 271.3 271.4 271.5 271.6 271.7 271.8 271.9 272 + Bin 1272: 272 272.1 272.2 272.3 272.4 272.5 272.6 272.7 272.8 272.9 273 + Bin 1273: 273 273.1 273.2 273.3 273.4 273.5 273.6 273.7 273.8 273.9 274 + Bin 1274: 274 274.1 274.2 274.3 274.4 274.5 274.6 274.7 274.8 274.9 275 + Bin 1275: 275 275.1 275.2 275.3 275.4 275.5 275.6 275.7 275.8 275.9 276 + Bin 1276: 276 276.1 276.2 276.3 276.4 276.5 276.6 276.7 276.8 276.9 277 + Bin 1277: 277 277.1 277.2 277.3 277.4 277.5 277.6 277.7 277.8 277.9 278 + Bin 1278: 278 278.1 278.2 278.3 278.4 278.5 278.6 278.7 278.8 278.9 279 + Bin 1279: 279 279.1 279.2 279.3 279.4 279.5 279.6 279.7 279.8 279.9 280 + Bin 1280: 280 280.1 280.2 280.3 280.4 280.5 280.6 280.7 280.8 280.9 281 + Bin 1281: 281 281.1 281.2 281.3 281.4 281.5 281.6 281.7 281.8 281.9 282 + Bin 1282: 282 282.1 282.2 282.3 282.4 282.5 282.6 282.7 282.8 282.9 283 + Bin 1283: 283 283.1 283.2 283.3 283.4 283.5 283.6 283.7 283.8 283.9 284 + Bin 1284: 284 284.1 284.2 284.3 284.4 284.5 284.6 284.7 284.8 284.9 285 + Bin 1285: 285 285.1 285.2 285.3 285.4 285.5 285.6 285.7 285.8 285.9 286 + Bin 1286: 286 286.1 286.2 286.3 286.4 286.5 286.6 286.7 286.8 286.9 287 + Bin 1287: 287 287.1 287.2 287.3 287.4 287.5 287.6 287.7 287.8 287.9 288 + Bin 1288: 288 288.1 288.2 288.3 288.4 288.5 288.6 288.7 288.8 288.9 289 + Bin 1289: 289 289.1 289.2 289.3 289.4 289.5 289.6 289.7 289.8 289.9 290 + Bin 1290: 290 290.1 290.2 290.3 290.4 290.5 290.6 290.7 290.8 290.9 291 + Bin 1291: 291 291.1 291.2 291.3 291.4 291.5 291.6 291.7 291.8 291.9 292 + Bin 1292: 292 292.1 292.2 292.3 292.4 292.5 292.6 292.7 292.8 292.9 293 + Bin 1293: 293 293.1 293.2 293.3 293.4 293.5 293.6 293.7 293.8 293.9 294 + Bin 1294: 294 294.1 294.2 294.3 294.4 294.5 294.6 294.7 294.8 294.9 295 + Bin 1295: 295 295.1 295.2 295.3 295.4 295.5 295.6 295.7 295.8 295.9 296 + Bin 1296: 296 296.1 296.2 296.3 296.4 296.5 296.6 296.7 296.8 296.9 297 + Bin 1297: 297 297.1 297.2 297.3 297.4 297.5 297.6 297.7 297.8 297.9 298 + Bin 1298: 298 298.1 298.2 298.3 298.4 298.5 298.6 298.7 298.8 298.9 299 + Bin 1299: 299 299.1 299.2 299.3 299.4 299.5 299.6 299.7 299.8 299.9 300 + Bin 1300: 300 300.1 300.2 300.3 300.4 300.5 300.6 300.7 300.8 300.9 301 + Bin 1301: 301 301.1 301.2 301.3 301.4 301.5 301.6 301.7 301.8 301.9 302 + Bin 1302: 302 302.1 302.2 302.3 302.4 302.5 302.6 302.7 302.8 302.9 303 + Bin 1303: 303 303.1 303.2 303.3 303.4 303.5 303.6 303.7 303.8 303.9 304 + Bin 1304: 304 304.1 304.2 304.3 304.4 304.5 304.6 304.7 304.8 304.9 305 + Bin 1305: 305 305.1 305.2 305.3 305.4 305.5 305.6 305.7 305.8 305.9 306 + Bin 1306: 306 306.1 306.2 306.3 306.4 306.5 306.6 306.7 306.8 306.9 307 + Bin 1307: 307 307.1 307.2 307.3 307.4 307.5 307.6 307.7 307.8 307.9 308 + Bin 1308: 308 308.1 308.2 308.3 308.4 308.5 308.6 308.7 308.8 308.9 309 + Bin 1309: 309 309.1 309.2 309.3 309.4 309.5 309.6 309.7 309.8 309.9 310 + Bin 1310: 310 310.1 310.2 310.3 310.4 310.5 310.6 310.7 310.8 310.9 311 + Bin 1311: 311 311.1 311.2 311.3 311.4 311.5 311.6 311.7 311.8 311.9 312 + Bin 1312: 312 312.1 312.2 312.3 312.4 312.5 312.6 312.7 312.8 312.9 313 + Bin 1313: 313 313.1 313.2 313.3 313.4 313.5 313.6 313.7 313.8 313.9 314 + Bin 1314: 314 314.1 314.2 314.3 314.4 314.5 314.6 314.7 314.8 314.9 315 + Bin 1315: 315 315.1 315.2 315.3 315.4 315.5 315.6 315.7 315.8 315.9 316 + Bin 1316: 316 316.1 316.2 316.3 316.4 316.5 316.6 316.7 316.8 316.9 317 + Bin 1317: 317 317.1 317.2 317.3 317.4 317.5 317.6 317.7 317.8 317.9 318 + Bin 1318: 318 318.1 318.2 318.3 318.4 318.5 318.6 318.7 318.8 318.9 319 + Bin 1319: 319 319.1 319.2 319.3 319.4 319.5 319.6 319.7 319.8 319.9 320 + Bin 1320: 320 320.1 320.2 320.3 320.4 320.5 320.6 320.7 320.8 320.9 321 + Bin 1321: 321 321.1 321.2 321.3 321.4 321.5 321.6 321.7 321.8 321.9 322 + Bin 1322: 322 322.1 322.2 322.3 322.4 322.5 322.6 322.7 322.8 322.9 323 + Bin 1323: 323 323.1 323.2 323.3 323.4 323.5 323.6 323.7 323.8 323.9 324 + Bin 1324: 324 324.1 324.2 324.3 324.4 324.5 324.6 324.7 324.8 324.9 325 + Bin 1325: 325 325.1 325.2 325.3 325.4 325.5 325.6 325.7 325.8 325.9 326 + Bin 1326: 326 326.1 326.2 326.3 326.4 326.5 326.6 326.7 326.8 326.9 327 + Bin 1327: 327 327.1 327.2 327.3 327.4 327.5 327.6 327.7 327.8 327.9 328 + Bin 1328: 328 328.1 328.2 328.3 328.4 328.5 328.6 328.7 328.8 328.9 329 + Bin 1329: 329 329.1 329.2 329.3 329.4 329.5 329.6 329.7 329.8 329.9 330 + Bin 1330: 330 330.1 330.2 330.3 330.4 330.5 330.6 330.7 330.8 330.9 331 + Bin 1331: 331 331.1 331.2 331.3 331.4 331.5 331.6 331.7 331.8 331.9 332 + Bin 1332: 332 332.1 332.2 332.3 332.4 332.5 332.6 332.7 332.8 332.9 333 + Bin 1333: 333 333.1 333.2 333.3 333.4 333.5 333.6 333.7 333.8 333.9 334 + Bin 1334: 334 334.1 334.2 334.3 334.4 334.5 334.6 334.7 334.8 334.9 335 + Bin 1335: 335 335.1 335.2 335.3 335.4 335.5 335.6 335.7 335.8 335.9 336 + Bin 1336: 336 336.1 336.2 336.3 336.4 336.5 336.6 336.7 336.8 336.9 337 + Bin 1337: 337 337.1 337.2 337.3 337.4 337.5 337.6 337.7 337.8 337.9 338 + Bin 1338: 338 338.1 338.2 338.3 338.4 338.5 338.6 338.7 338.8 338.9 339 + Bin 1339: 339 339.1 339.2 339.3 339.4 339.5 339.6 339.7 339.8 339.9 340 + Bin 1340: 340 340.1 340.2 340.3 340.4 340.5 340.6 340.7 340.8 340.9 341 + Bin 1341: 341 341.1 341.2 341.3 341.4 341.5 341.6 341.7 341.8 341.9 342 + Bin 1342: 342 342.1 342.2 342.3 342.4 342.5 342.6 342.7 342.8 342.9 343 + Bin 1343: 343 343.1 343.2 343.3 343.4 343.5 343.6 343.7 343.8 343.9 344 + Bin 1344: 344 344.1 344.2 344.3 344.4 344.5 344.6 344.7 344.8 344.9 345 + Bin 1345: 345 345.1 345.2 345.3 345.4 345.5 345.6 345.7 345.8 345.9 346 + Bin 1346: 346 346.1 346.2 346.3 346.4 346.5 346.6 346.7 346.8 346.9 347 + Bin 1347: 347 347.1 347.2 347.3 347.4 347.5 347.6 347.7 347.8 347.9 348 + Bin 1348: 348 348.1 348.2 348.3 348.4 348.5 348.6 348.7 348.8 348.9 349 + Bin 1349: 349 349.1 349.2 349.3 349.4 349.5 349.6 349.7 349.8 349.9 350 + Bin 1350: 350 350.1 350.2 350.3 350.4 350.5 350.6 350.7 350.8 350.9 351 + Bin 1351: 351 351.1 351.2 351.3 351.4 351.5 351.6 351.7 351.8 351.9 352 + Bin 1352: 352 352.1 352.2 352.3 352.4 352.5 352.6 352.7 352.8 352.9 353 + Bin 1353: 353 353.1 353.2 353.3 353.4 353.5 353.6 353.7 353.8 353.9 354 + Bin 1354: 354 354.1 354.2 354.3 354.4 354.5 354.6 354.7 354.8 354.9 355 + Bin 1355: 355 355.1 355.2 355.3 355.4 355.5 355.6 355.7 355.8 355.9 356 + Bin 1356: 356 356.1 356.2 356.3 356.4 356.5 356.6 356.7 356.8 356.9 357 + Bin 1357: 357 357.1 357.2 357.3 357.4 357.5 357.6 357.7 357.8 357.9 358 + Bin 1358: 358 358.1 358.2 358.3 358.4 358.5 358.6 358.7 358.8 358.9 359 + Bin 1359: 359 359.1 359.2 359.3 359.4 359.5 359.6 359.7 359.8 359.9 360 + Bin 1360: 360 360.1 360.2 360.3 360.4 360.5 360.6 360.7 360.8 360.9 361 + Bin 1361: 361 361.1 361.2 361.3 361.4 361.5 361.6 361.7 361.8 361.9 362 + Bin 1362: 362 362.1 362.2 362.3 362.4 362.5 362.6 362.7 362.8 362.9 363 + Bin 1363: 363 363.1 363.2 363.3 363.4 363.5 363.6 363.7 363.8 363.9 364 + Bin 1364: 364 364.1 364.2 364.3 364.4 364.5 364.6 364.7 364.8 364.9 365 + Bin 1365: 365 365.1 365.2 365.3 365.4 365.5 365.6 365.7 365.8 365.9 366 + Bin 1366: 366 366.1 366.2 366.3 366.4 366.5 366.6 366.7 366.8 366.9 367 + Bin 1367: 367 367.1 367.2 367.3 367.4 367.5 367.6 367.7 367.8 367.9 368 + Bin 1368: 368 368.1 368.2 368.3 368.4 368.5 368.6 368.7 368.8 368.9 369 + Bin 1369: 369 369.1 369.2 369.3 369.4 369.5 369.6 369.7 369.8 369.9 370 + Bin 1370: 370 370.1 370.2 370.3 370.4 370.5 370.6 370.7 370.8 370.9 371 + Bin 1371: 371 371.1 371.2 371.3 371.4 371.5 371.6 371.7 371.8 371.9 372 + Bin 1372: 372 372.1 372.2 372.3 372.4 372.5 372.6 372.7 372.8 372.9 373 + Bin 1373: 373 373.1 373.2 373.3 373.4 373.5 373.6 373.7 373.8 373.9 374 + Bin 1374: 374 374.1 374.2 374.3 374.4 374.5 374.6 374.7 374.8 374.9 375 + Bin 1375: 375 375.1 375.2 375.3 375.4 375.5 375.6 375.7 375.8 375.9 376 + Bin 1376: 376 376.1 376.2 376.3 376.4 376.5 376.6 376.7 376.8 376.9 377 + Bin 1377: 377 377.1 377.2 377.3 377.4 377.5 377.6 377.7 377.8 377.9 378 + Bin 1378: 378 378.1 378.2 378.3 378.4 378.5 378.6 378.7 378.8 378.9 379 + Bin 1379: 379 379.1 379.2 379.3 379.4 379.5 379.6 379.7 379.8 379.9 380 + Bin 1380: 380 380.1 380.2 380.3 380.4 380.5 380.6 380.7 380.8 380.9 381 + Bin 1381: 381 381.1 381.2 381.3 381.4 381.5 381.6 381.7 381.8 381.9 382 + Bin 1382: 382 382.1 382.2 382.3 382.4 382.5 382.6 382.7 382.8 382.9 383 + Bin 1383: 383 383.1 383.2 383.3 383.4 383.5 383.6 383.7 383.8 383.9 384 + Bin 1384: 384 384.1 384.2 384.3 384.4 384.5 384.6 384.7 384.8 384.9 385 + Bin 1385: 385 385.1 385.2 385.3 385.4 385.5 385.6 385.7 385.8 385.9 386 + Bin 1386: 386 386.1 386.2 386.3 386.4 386.5 386.6 386.7 386.8 386.9 387 + Bin 1387: 387 387.1 387.2 387.3 387.4 387.5 387.6 387.7 387.8 387.9 388 + Bin 1388: 388 388.1 388.2 388.3 388.4 388.5 388.6 388.7 388.8 388.9 389 + Bin 1389: 389 389.1 389.2 389.3 389.4 389.5 389.6 389.7 389.8 389.9 390 + Bin 1390: 390 390.1 390.2 390.3 390.4 390.5 390.6 390.7 390.8 390.9 391 + Bin 1391: 391 391.1 391.2 391.3 391.4 391.5 391.6 391.7 391.8 391.9 392 + Bin 1392: 392 392.1 392.2 392.3 392.4 392.5 392.6 392.7 392.8 392.9 393 + Bin 1393: 393 393.1 393.2 393.3 393.4 393.5 393.6 393.7 393.8 393.9 394 + Bin 1394: 394 394.1 394.2 394.3 394.4 394.5 394.6 394.7 394.8 394.9 395 + Bin 1395: 395 395.1 395.2 395.3 395.4 395.5 395.6 395.7 395.8 395.9 396 + Bin 1396: 396 396.1 396.2 396.3 396.4 396.5 396.6 396.7 396.8 396.9 397 + Bin 1397: 397 397.1 397.2 397.3 397.4 397.5 397.6 397.7 397.8 397.9 398 + Bin 1398: 398 398.1 398.2 398.3 398.4 398.5 398.6 398.7 398.8 398.9 399 + Bin 1399: 399 399.1 399.2 399.3 399.4 399.5 399.6 399.7 399.8 399.9 400 + Bin 1400: 400 400.1 400.2 400.3 400.4 400.5 400.6 400.7 400.8 400.9 401 + Bin 1401: 401 401.1 401.2 401.3 401.4 401.5 401.6 401.7 401.8 401.9 402 + Bin 1402: 402 402.1 402.2 402.3 402.4 402.5 402.6 402.7 402.8 402.9 403 + Bin 1403: 403 403.1 403.2 403.3 403.4 403.5 403.6 403.7 403.8 403.9 404 + Bin 1404: 404 404.1 404.2 404.3 404.4 404.5 404.6 404.7 404.8 404.9 405 + Bin 1405: 405 405.1 405.2 405.3 405.4 405.5 405.6 405.7 405.8 405.9 406 + Bin 1406: 406 406.1 406.2 406.3 406.4 406.5 406.6 406.7 406.8 406.9 407 + Bin 1407: 407 407.1 407.2 407.3 407.4 407.5 407.6 407.7 407.8 407.9 408 + Bin 1408: 408 408.1 408.2 408.3 408.4 408.5 408.6 408.7 408.8 408.9 409 + Bin 1409: 409 409.1 409.2 409.3 409.4 409.5 409.6 409.7 409.8 409.9 410 + Bin 1410: 410 410.1 410.2 410.3 410.4 410.5 410.6 410.7 410.8 410.9 411 + Bin 1411: 411 411.1 411.2 411.3 411.4 411.5 411.6 411.7 411.8 411.9 412 + Bin 1412: 412 412.1 412.2 412.3 412.4 412.5 412.6 412.7 412.8 412.9 413 + Bin 1413: 413 413.1 413.2 413.3 413.4 413.5 413.6 413.7 413.8 413.9 414 + Bin 1414: 414 414.1 414.2 414.3 414.4 414.5 414.6 414.7 414.8 414.9 415 + Bin 1415: 415 415.1 415.2 415.3 415.4 415.5 415.6 415.7 415.8 415.9 416 + Bin 1416: 416 416.1 416.2 416.3 416.4 416.5 416.6 416.7 416.8 416.9 417 + Bin 1417: 417 417.1 417.2 417.3 417.4 417.5 417.6 417.7 417.8 417.9 418 + Bin 1418: 418 418.1 418.2 418.3 418.4 418.5 418.6 418.7 418.8 418.9 419 + Bin 1419: 419 419.1 419.2 419.3 419.4 419.5 419.6 419.7 419.8 419.9 420 + Bin 1420: 420 420.1 420.2 420.3 420.4 420.5 420.6 420.7 420.8 420.9 421 + Bin 1421: 421 421.1 421.2 421.3 421.4 421.5 421.6 421.7 421.8 421.9 422 + Bin 1422: 422 422.1 422.2 422.3 422.4 422.5 422.6 422.7 422.8 422.9 423 + Bin 1423: 423 423.1 423.2 423.3 423.4 423.5 423.6 423.7 423.8 423.9 424 + Bin 1424: 424 424.1 424.2 424.3 424.4 424.5 424.6 424.7 424.8 424.9 425 + Bin 1425: 425 425.1 425.2 425.3 425.4 425.5 425.6 425.7 425.8 425.9 426 + Bin 1426: 426 426.1 426.2 426.3 426.4 426.5 426.6 426.7 426.8 426.9 427 + Bin 1427: 427 427.1 427.2 427.3 427.4 427.5 427.6 427.7 427.8 427.9 428 + Bin 1428: 428 428.1 428.2 428.3 428.4 428.5 428.6 428.7 428.8 428.9 429 + Bin 1429: 429 429.1 429.2 429.3 429.4 429.5 429.6 429.7 429.8 429.9 430 + Bin 1430: 430 430.1 430.2 430.3 430.4 430.5 430.6 430.7 430.8 430.9 431 + Bin 1431: 431 431.1 431.2 431.3 431.4 431.5 431.6 431.7 431.8 431.9 432 + Bin 1432: 432 432.1 432.2 432.3 432.4 432.5 432.6 432.7 432.8 432.9 433 + Bin 1433: 433 433.1 433.2 433.3 433.4 433.5 433.6 433.7 433.8 433.9 434 + Bin 1434: 434 434.1 434.2 434.3 434.4 434.5 434.6 434.7 434.8 434.9 435 + Bin 1435: 435 435.1 435.2 435.3 435.4 435.5 435.6 435.7 435.8 435.9 436 + Bin 1436: 436 436.1 436.2 436.3 436.4 436.5 436.6 436.7 436.8 436.9 437 + Bin 1437: 437 437.1 437.2 437.3 437.4 437.5 437.6 437.7 437.8 437.9 438 + Bin 1438: 438 438.1 438.2 438.3 438.4 438.5 438.6 438.7 438.8 438.9 439 + Bin 1439: 439 439.1 439.2 439.3 439.4 439.5 439.6 439.7 439.8 439.9 440 + Bin 1440: 440 440.1 440.2 440.3 440.4 440.5 440.6 440.7 440.8 440.9 441 + Bin 1441: 441 441.1 441.2 441.3 441.4 441.5 441.6 441.7 441.8 441.9 442 + Bin 1442: 442 442.1 442.2 442.3 442.4 442.5 442.6 442.7 442.8 442.9 443 + Bin 1443: 443 443.1 443.2 443.3 443.4 443.5 443.6 443.7 443.8 443.9 444 + Bin 1444: 444 444.1 444.2 444.3 444.4 444.5 444.6 444.7 444.8 444.9 445 + Bin 1445: 445 445.1 445.2 445.3 445.4 445.5 445.6 445.7 445.8 445.9 446 + Bin 1446: 446 446.1 446.2 446.3 446.4 446.5 446.6 446.7 446.8 446.9 447 + Bin 1447: 447 447.1 447.2 447.3 447.4 447.5 447.6 447.7 447.8 447.9 448 + Bin 1448: 448 448.1 448.2 448.3 448.4 448.5 448.6 448.7 448.8 448.9 449 + Bin 1449: 449 449.1 449.2 449.3 449.4 449.5 449.6 449.7 449.8 449.9 450 + Bin 1450: 450 450.1 450.2 450.3 450.4 450.5 450.6 450.7 450.8 450.9 451 + Bin 1451: 451 451.1 451.2 451.3 451.4 451.5 451.6 451.7 451.8 451.9 452 + Bin 1452: 452 452.1 452.2 452.3 452.4 452.5 452.6 452.7 452.8 452.9 453 + Bin 1453: 453 453.1 453.2 453.3 453.4 453.5 453.6 453.7 453.8 453.9 454 + Bin 1454: 454 454.1 454.2 454.3 454.4 454.5 454.6 454.7 454.8 454.9 455 + Bin 1455: 455 455.1 455.2 455.3 455.4 455.5 455.6 455.7 455.8 455.9 456 + Bin 1456: 456 456.1 456.2 456.3 456.4 456.5 456.6 456.7 456.8 456.9 457 + Bin 1457: 457 457.1 457.2 457.3 457.4 457.5 457.6 457.7 457.8 457.9 458 + Bin 1458: 458 458.1 458.2 458.3 458.4 458.5 458.6 458.7 458.8 458.9 459 + Bin 1459: 459 459.1 459.2 459.3 459.4 459.5 459.6 459.7 459.8 459.9 460 + Bin 1460: 460 460.1 460.2 460.3 460.4 460.5 460.6 460.7 460.8 460.9 461 + Bin 1461: 461 461.1 461.2 461.3 461.4 461.5 461.6 461.7 461.8 461.9 462 + Bin 1462: 462 462.1 462.2 462.3 462.4 462.5 462.6 462.7 462.8 462.9 463 + Bin 1463: 463 463.1 463.2 463.3 463.4 463.5 463.6 463.7 463.8 463.9 464 + Bin 1464: 464 464.1 464.2 464.3 464.4 464.5 464.6 464.7 464.8 464.9 465 + Bin 1465: 465 465.1 465.2 465.3 465.4 465.5 465.6 465.7 465.8 465.9 466 + Bin 1466: 466 466.1 466.2 466.3 466.4 466.5 466.6 466.7 466.8 466.9 467 + Bin 1467: 467 467.1 467.2 467.3 467.4 467.5 467.6 467.7 467.8 467.9 468 + Bin 1468: 468 468.1 468.2 468.3 468.4 468.5 468.6 468.7 468.8 468.9 469 + Bin 1469: 469 469.1 469.2 469.3 469.4 469.5 469.6 469.7 469.8 469.9 470 + Bin 1470: 470 470.1 470.2 470.3 470.4 470.5 470.6 470.7 470.8 470.9 471 + Bin 1471: 471 471.1 471.2 471.3 471.4 471.5 471.6 471.7 471.8 471.9 472 + Bin 1472: 472 472.1 472.2 472.3 472.4 472.5 472.6 472.7 472.8 472.9 473 + Bin 1473: 473 473.1 473.2 473.3 473.4 473.5 473.6 473.7 473.8 473.9 474 + Bin 1474: 474 474.1 474.2 474.3 474.4 474.5 474.6 474.7 474.8 474.9 475 + Bin 1475: 475 475.1 475.2 475.3 475.4 475.5 475.6 475.7 475.8 475.9 476 + Bin 1476: 476 476.1 476.2 476.3 476.4 476.5 476.6 476.7 476.8 476.9 477 + Bin 1477: 477 477.1 477.2 477.3 477.4 477.5 477.6 477.7 477.8 477.9 478 + Bin 1478: 478 478.1 478.2 478.3 478.4 478.5 478.6 478.7 478.8 478.9 479 + Bin 1479: 479 479.1 479.2 479.3 479.4 479.5 479.6 479.7 479.8 479.9 480 + Bin 1480: 480 480.1 480.2 480.3 480.4 480.5 480.6 480.7 480.8 480.9 481 + Bin 1481: 481 481.1 481.2 481.3 481.4 481.5 481.6 481.7 481.8 481.9 482 + Bin 1482: 482 482.1 482.2 482.3 482.4 482.5 482.6 482.7 482.8 482.9 483 + Bin 1483: 483 483.1 483.2 483.3 483.4 483.5 483.6 483.7 483.8 483.9 484 + Bin 1484: 484 484.1 484.2 484.3 484.4 484.5 484.6 484.7 484.8 484.9 485 + Bin 1485: 485 485.1 485.2 485.3 485.4 485.5 485.6 485.7 485.8 485.9 486 + Bin 1486: 486 486.1 486.2 486.3 486.4 486.5 486.6 486.7 486.8 486.9 487 + Bin 1487: 487 487.1 487.2 487.3 487.4 487.5 487.6 487.7 487.8 487.9 488 + Bin 1488: 488 488.1 488.2 488.3 488.4 488.5 488.6 488.7 488.8 488.9 489 + Bin 1489: 489 489.1 489.2 489.3 489.4 489.5 489.6 489.7 489.8 489.9 490 + Bin 1490: 490 490.1 490.2 490.3 490.4 490.5 490.6 490.7 490.8 490.9 491 + Bin 1491: 491 491.1 491.2 491.3 491.4 491.5 491.6 491.7 491.8 491.9 492 + Bin 1492: 492 492.1 492.2 492.3 492.4 492.5 492.6 492.7 492.8 492.9 493 + Bin 1493: 493 493.1 493.2 493.3 493.4 493.5 493.6 493.7 493.8 493.9 494 + Bin 1494: 494 494.1 494.2 494.3 494.4 494.5 494.6 494.7 494.8 494.9 495 + Bin 1495: 495 495.1 495.2 495.3 495.4 495.5 495.6 495.7 495.8 495.9 496 + Bin 1496: 496 496.1 496.2 496.3 496.4 496.5 496.6 496.7 496.8 496.9 497 + Bin 1497: 497 497.1 497.2 497.3 497.4 497.5 497.6 497.7 497.8 497.9 498 + Bin 1498: 498 498.1 498.2 498.3 498.4 498.5 498.6 498.7 498.8 498.9 499 + Bin 1499: 499 499.1 499.2 499.3 499.4 499.5 499.6 499.7 499.8 499.9 500 + Bin 1500: 500 500.1 500.2 500.3 500.4 500.5 500.6 500.7 500.8 500.9 501 + Bin 1501: 501 501.1 501.2 501.3 501.4 501.5 501.6 501.7 501.8 501.9 502 + Bin 1502: 502 502.1 502.2 502.3 502.4 502.5 502.6 502.7 502.8 502.9 503 + Bin 1503: 503 503.1 503.2 503.3 503.4 503.5 503.6 503.7 503.8 503.9 504 + Bin 1504: 504 504.1 504.2 504.3 504.4 504.5 504.6 504.7 504.8 504.9 505 + Bin 1505: 505 505.1 505.2 505.3 505.4 505.5 505.6 505.7 505.8 505.9 506 + Bin 1506: 506 506.1 506.2 506.3 506.4 506.5 506.6 506.7 506.8 506.9 507 + Bin 1507: 507 507.1 507.2 507.3 507.4 507.5 507.6 507.7 507.8 507.9 508 + Bin 1508: 508 508.1 508.2 508.3 508.4 508.5 508.6 508.7 508.8 508.9 509 + Bin 1509: 509 509.1 509.2 509.3 509.4 509.5 509.6 509.7 509.8 509.9 510 + Bin 1510: 510 510.1 510.2 510.3 510.4 510.5 510.6 510.7 510.8 510.9 511 + Bin 1511: 511 511.1 511.2 511.3 511.4 511.5 511.6 511.7 511.8 511.9 512 + Bin 1512: 512 512.1 512.2 512.3 512.4 512.5 512.6 512.7 512.8 512.9 513 + Bin 1513: 513 513.1 513.2 513.3 513.4 513.5 513.6 513.7 513.8 513.9 514 + Bin 1514: 514 514.1 514.2 514.3 514.4 514.5 514.6 514.7 514.8 514.9 515 + Bin 1515: 515 515.1 515.2 515.3 515.4 515.5 515.6 515.7 515.8 515.9 516 + Bin 1516: 516 516.1 516.2 516.3 516.4 516.5 516.6 516.7 516.8 516.9 517 + Bin 1517: 517 517.1 517.2 517.3 517.4 517.5 517.6 517.7 517.8 517.9 518 + Bin 1518: 518 518.1 518.2 518.3 518.4 518.5 518.6 518.7 518.8 518.9 519 + Bin 1519: 519 519.1 519.2 519.3 519.4 519.5 519.6 519.7 519.8 519.9 520 + Bin 1520: 520 520.1 520.2 520.3 520.4 520.5 520.6 520.7 520.8 520.9 521 + Bin 1521: 521 521.1 521.2 521.3 521.4 521.5 521.6 521.7 521.8 521.9 522 + Bin 1522: 522 522.1 522.2 522.3 522.4 522.5 522.6 522.7 522.8 522.9 523 + Bin 1523: 523 523.1 523.2 523.3 523.4 523.5 523.6 523.7 523.8 523.9 524 + Bin 1524: 524 524.1 524.2 524.3 524.4 524.5 524.6 524.7 524.8 524.9 525 + Bin 1525: 525 525.1 525.2 525.3 525.4 525.5 525.6 525.7 525.8 525.9 526 + Bin 1526: 526 526.1 526.2 526.3 526.4 526.5 526.6 526.7 526.8 526.9 527 + Bin 1527: 527 527.1 527.2 527.3 527.4 527.5 527.6 527.7 527.8 527.9 528 + Bin 1528: 528 528.1 528.2 528.3 528.4 528.5 528.6 528.7 528.8 528.9 529 + Bin 1529: 529 529.1 529.2 529.3 529.4 529.5 529.6 529.7 529.8 529.9 530 + Bin 1530: 530 530.1 530.2 530.3 530.4 530.5 530.6 530.7 530.8 530.9 531 + Bin 1531: 531 531.1 531.2 531.3 531.4 531.5 531.6 531.7 531.8 531.9 532 + Bin 1532: 532 532.1 532.2 532.3 532.4 532.5 532.6 532.7 532.8 532.9 533 + Bin 1533: 533 533.1 533.2 533.3 533.4 533.5 533.6 533.7 533.8 533.9 534 + Bin 1534: 534 534.1 534.2 534.3 534.4 534.5 534.6 534.7 534.8 534.9 535 + Bin 1535: 535 535.1 535.2 535.3 535.4 535.5 535.6 535.7 535.8 535.9 536 + Bin 1536: 536 536.1 536.2 536.3 536.4 536.5 536.6 536.7 536.8 536.9 537 + Bin 1537: 537 537.1 537.2 537.3 537.4 537.5 537.6 537.7 537.8 537.9 538 + Bin 1538: 538 538.1 538.2 538.3 538.4 538.5 538.6 538.7 538.8 538.9 539 + Bin 1539: 539 539.1 539.2 539.3 539.4 539.5 539.6 539.7 539.8 539.9 540 + Bin 1540: 540 540.1 540.2 540.3 540.4 540.5 540.6 540.7 540.8 540.9 541 + Bin 1541: 541 541.1 541.2 541.3 541.4 541.5 541.6 541.7 541.8 541.9 542 + Bin 1542: 542 542.1 542.2 542.3 542.4 542.5 542.6 542.7 542.8 542.9 543 + Bin 1543: 543 543.1 543.2 543.3 543.4 543.5 543.6 543.7 543.8 543.9 544 + Bin 1544: 544 544.1 544.2 544.3 544.4 544.5 544.6 544.7 544.8 544.9 545 + Bin 1545: 545 545.1 545.2 545.3 545.4 545.5 545.6 545.7 545.8 545.9 546 + Bin 1546: 546 546.1 546.2 546.3 546.4 546.5 546.6 546.7 546.8 546.9 547 + Bin 1547: 547 547.1 547.2 547.3 547.4 547.5 547.6 547.7 547.8 547.9 548 + Bin 1548: 548 548.1 548.2 548.3 548.4 548.5 548.6 548.7 548.8 548.9 549 + Bin 1549: 549 549.1 549.2 549.3 549.4 549.5 549.6 549.7 549.8 549.9 550 + Bin 1550: 550 550.1 550.2 550.3 550.4 550.5 550.6 550.7 550.8 550.9 551 + Bin 1551: 551 551.1 551.2 551.3 551.4 551.5 551.6 551.7 551.8 551.9 552 + Bin 1552: 552 552.1 552.2 552.3 552.4 552.5 552.6 552.7 552.8 552.9 553 + Bin 1553: 553 553.1 553.2 553.3 553.4 553.5 553.6 553.7 553.8 553.9 554 + Bin 1554: 554 554.1 554.2 554.3 554.4 554.5 554.6 554.7 554.8 554.9 555 + Bin 1555: 555 555.1 555.2 555.3 555.4 555.5 555.6 555.7 555.8 555.9 556 + Bin 1556: 556 556.1 556.2 556.3 556.4 556.5 556.6 556.7 556.8 556.9 557 + Bin 1557: 557 557.1 557.2 557.3 557.4 557.5 557.6 557.7 557.8 557.9 558 + Bin 1558: 558 558.1 558.2 558.3 558.4 558.5 558.6 558.7 558.8 558.9 559 + Bin 1559: 559 559.1 559.2 559.3 559.4 559.5 559.6 559.7 559.8 559.9 560 + Bin 1560: 560 560.1 560.2 560.3 560.4 560.5 560.6 560.7 560.8 560.9 561 + Bin 1561: 561 561.1 561.2 561.3 561.4 561.5 561.6 561.7 561.8 561.9 562 + Bin 1562: 562 562.1 562.2 562.3 562.4 562.5 562.6 562.7 562.8 562.9 563 + Bin 1563: 563 563.1 563.2 563.3 563.4 563.5 563.6 563.7 563.8 563.9 564 + Bin 1564: 564 564.1 564.2 564.3 564.4 564.5 564.6 564.7 564.8 564.9 565 + Bin 1565: 565 565.1 565.2 565.3 565.4 565.5 565.6 565.7 565.8 565.9 566 + Bin 1566: 566 566.1 566.2 566.3 566.4 566.5 566.6 566.7 566.8 566.9 567 + Bin 1567: 567 567.1 567.2 567.3 567.4 567.5 567.6 567.7 567.8 567.9 568 + Bin 1568: 568 568.1 568.2 568.3 568.4 568.5 568.6 568.7 568.8 568.9 569 + Bin 1569: 569 569.1 569.2 569.3 569.4 569.5 569.6 569.7 569.8 569.9 570 + Bin 1570: 570 570.1 570.2 570.3 570.4 570.5 570.6 570.7 570.8 570.9 571 + Bin 1571: 571 571.1 571.2 571.3 571.4 571.5 571.6 571.7 571.8 571.9 572 + Bin 1572: 572 572.1 572.2 572.3 572.4 572.5 572.6 572.7 572.8 572.9 573 + Bin 1573: 573 573.1 573.2 573.3 573.4 573.5 573.6 573.7 573.8 573.9 574 + Bin 1574: 574 574.1 574.2 574.3 574.4 574.5 574.6 574.7 574.8 574.9 575 + Bin 1575: 575 575.1 575.2 575.3 575.4 575.5 575.6 575.7 575.8 575.9 576 + Bin 1576: 576 576.1 576.2 576.3 576.4 576.5 576.6 576.7 576.8 576.9 577 + Bin 1577: 577 577.1 577.2 577.3 577.4 577.5 577.6 577.7 577.8 577.9 578 + Bin 1578: 578 578.1 578.2 578.3 578.4 578.5 578.6 578.7 578.8 578.9 579 + Bin 1579: 579 579.1 579.2 579.3 579.4 579.5 579.6 579.7 579.8 579.9 580 + Bin 1580: 580 580.1 580.2 580.3 580.4 580.5 580.6 580.7 580.8 580.9 581 + Bin 1581: 581 581.1 581.2 581.3 581.4 581.5 581.6 581.7 581.8 581.9 582 + Bin 1582: 582 582.1 582.2 582.3 582.4 582.5 582.6 582.7 582.8 582.9 583 + Bin 1583: 583 583.1 583.2 583.3 583.4 583.5 583.6 583.7 583.8 583.9 584 + Bin 1584: 584 584.1 584.2 584.3 584.4 584.5 584.6 584.7 584.8 584.9 585 + Bin 1585: 585 585.1 585.2 585.3 585.4 585.5 585.6 585.7 585.8 585.9 586 + Bin 1586: 586 586.1 586.2 586.3 586.4 586.5 586.6 586.7 586.8 586.9 587 + Bin 1587: 587 587.1 587.2 587.3 587.4 587.5 587.6 587.7 587.8 587.9 588 + Bin 1588: 588 588.1 588.2 588.3 588.4 588.5 588.6 588.7 588.8 588.9 589 + Bin 1589: 589 589.1 589.2 589.3 589.4 589.5 589.6 589.7 589.8 589.9 590 + Bin 1590: 590 590.1 590.2 590.3 590.4 590.5 590.6 590.7 590.8 590.9 591 + Bin 1591: 591 591.1 591.2 591.3 591.4 591.5 591.6 591.7 591.8 591.9 592 + Bin 1592: 592 592.1 592.2 592.3 592.4 592.5 592.6 592.7 592.8 592.9 593 + Bin 1593: 593 593.1 593.2 593.3 593.4 593.5 593.6 593.7 593.8 593.9 594 + Bin 1594: 594 594.1 594.2 594.3 594.4 594.5 594.6 594.7 594.8 594.9 595 + Bin 1595: 595 595.1 595.2 595.3 595.4 595.5 595.6 595.7 595.8 595.9 596 + Bin 1596: 596 596.1 596.2 596.3 596.4 596.5 596.6 596.7 596.8 596.9 597 + Bin 1597: 597 597.1 597.2 597.3 597.4 597.5 597.6 597.7 597.8 597.9 598 + Bin 1598: 598 598.1 598.2 598.3 598.4 598.5 598.6 598.7 598.8 598.9 599 + Bin 1599: 599 599.1 599.2 599.3 599.4 599.5 599.6 599.7 599.8 599.9 600 + Bin 1600: 600 600.1 600.2 600.3 600.4 600.5 600.6 600.7 600.8 600.9 601 + Bin 1601: 601 601.1 601.2 601.3 601.4 601.5 601.6 601.7 601.8 601.9 602 + Bin 1602: 602 602.1 602.2 602.3 602.4 602.5 602.6 602.7 602.8 602.9 603 + Bin 1603: 603 603.1 603.2 603.3 603.4 603.5 603.6 603.7 603.8 603.9 604 + Bin 1604: 604 604.1 604.2 604.3 604.4 604.5 604.6 604.7 604.8 604.9 605 + Bin 1605: 605 605.1 605.2 605.3 605.4 605.5 605.6 605.7 605.8 605.9 606 + Bin 1606: 606 606.1 606.2 606.3 606.4 606.5 606.6 606.7 606.8 606.9 607 + Bin 1607: 607 607.1 607.2 607.3 607.4 607.5 607.6 607.7 607.8 607.9 608 + Bin 1608: 608 608.1 608.2 608.3 608.4 608.5 608.6 608.7 608.8 608.9 609 + Bin 1609: 609 609.1 609.2 609.3 609.4 609.5 609.6 609.7 609.8 609.9 610 + Bin 1610: 610 610.1 610.2 610.3 610.4 610.5 610.6 610.7 610.8 610.9 611 + Bin 1611: 611 611.1 611.2 611.3 611.4 611.5 611.6 611.7 611.8 611.9 612 + Bin 1612: 612 612.1 612.2 612.3 612.4 612.5 612.6 612.7 612.8 612.9 613 + Bin 1613: 613 613.1 613.2 613.3 613.4 613.5 613.6 613.7 613.8 613.9 614 + Bin 1614: 614 614.1 614.2 614.3 614.4 614.5 614.6 614.7 614.8 614.9 615 + Bin 1615: 615 615.1 615.2 615.3 615.4 615.5 615.6 615.7 615.8 615.9 616 + Bin 1616: 616 616.1 616.2 616.3 616.4 616.5 616.6 616.7 616.8 616.9 617 + Bin 1617: 617 617.1 617.2 617.3 617.4 617.5 617.6 617.7 617.8 617.9 618 + Bin 1618: 618 618.1 618.2 618.3 618.4 618.5 618.6 618.7 618.8 618.9 619 + Bin 1619: 619 619.1 619.2 619.3 619.4 619.5 619.6 619.7 619.8 619.9 620 + Bin 1620: 620 620.1 620.2 620.3 620.4 620.5 620.6 620.7 620.8 620.9 621 + Bin 1621: 621 621.1 621.2 621.3 621.4 621.5 621.6 621.7 621.8 621.9 622 + Bin 1622: 622 622.1 622.2 622.3 622.4 622.5 622.6 622.7 622.8 622.9 623 + Bin 1623: 623 623.1 623.2 623.3 623.4 623.5 623.6 623.7 623.8 623.9 624 + Bin 1624: 624 624.1 624.2 624.3 624.4 624.5 624.6 624.7 624.8 624.9 625 + Bin 1625: 625 625.1 625.2 625.3 625.4 625.5 625.6 625.7 625.8 625.9 626 + Bin 1626: 626 626.1 626.2 626.3 626.4 626.5 626.6 626.7 626.8 626.9 627 + Bin 1627: 627 627.1 627.2 627.3 627.4 627.5 627.6 627.7 627.8 627.9 628 + Bin 1628: 628 628.1 628.2 628.3 628.4 628.5 628.6 628.7 628.8 628.9 629 + Bin 1629: 629 629.1 629.2 629.3 629.4 629.5 629.6 629.7 629.8 629.9 630 + Bin 1630: 630 630.1 630.2 630.3 630.4 630.5 630.6 630.7 630.8 630.9 631 + Bin 1631: 631 631.1 631.2 631.3 631.4 631.5 631.6 631.7 631.8 631.9 632 + Bin 1632: 632 632.1 632.2 632.3 632.4 632.5 632.6 632.7 632.8 632.9 633 + Bin 1633: 633 633.1 633.2 633.3 633.4 633.5 633.6 633.7 633.8 633.9 634 + Bin 1634: 634 634.1 634.2 634.3 634.4 634.5 634.6 634.7 634.8 634.9 635 + Bin 1635: 635 635.1 635.2 635.3 635.4 635.5 635.6 635.7 635.8 635.9 636 + Bin 1636: 636 636.1 636.2 636.3 636.4 636.5 636.6 636.7 636.8 636.9 637 + Bin 1637: 637 637.1 637.2 637.3 637.4 637.5 637.6 637.7 637.8 637.9 638 + Bin 1638: 638 638.1 638.2 638.3 638.4 638.5 638.6 638.7 638.8 638.9 639 + Bin 1639: 639 639.1 639.2 639.3 639.4 639.5 639.6 639.7 639.8 639.9 640 + Bin 1640: 640 640.1 640.2 640.3 640.4 640.5 640.6 640.7 640.8 640.9 641 + Bin 1641: 641 641.1 641.2 641.3 641.4 641.5 641.6 641.7 641.8 641.9 642 + Bin 1642: 642 642.1 642.2 642.3 642.4 642.5 642.6 642.7 642.8 642.9 643 + Bin 1643: 643 643.1 643.2 643.3 643.4 643.5 643.6 643.7 643.8 643.9 644 + Bin 1644: 644 644.1 644.2 644.3 644.4 644.5 644.6 644.7 644.8 644.9 645 + Bin 1645: 645 645.1 645.2 645.3 645.4 645.5 645.6 645.7 645.8 645.9 646 + Bin 1646: 646 646.1 646.2 646.3 646.4 646.5 646.6 646.7 646.8 646.9 647 + Bin 1647: 647 647.1 647.2 647.3 647.4 647.5 647.6 647.7 647.8 647.9 648 + Bin 1648: 648 648.1 648.2 648.3 648.4 648.5 648.6 648.7 648.8 648.9 649 + Bin 1649: 649 649.1 649.2 649.3 649.4 649.5 649.6 649.7 649.8 649.9 650 + Bin 1650: 650 650.1 650.2 650.3 650.4 650.5 650.6 650.7 650.8 650.9 651 + Bin 1651: 651 651.1 651.2 651.3 651.4 651.5 651.6 651.7 651.8 651.9 652 + Bin 1652: 652 652.1 652.2 652.3 652.4 652.5 652.6 652.7 652.8 652.9 653 + Bin 1653: 653 653.1 653.2 653.3 653.4 653.5 653.6 653.7 653.8 653.9 654 + Bin 1654: 654 654.1 654.2 654.3 654.4 654.5 654.6 654.7 654.8 654.9 655 + Bin 1655: 655 655.1 655.2 655.3 655.4 655.5 655.6 655.7 655.8 655.9 656 + Bin 1656: 656 656.1 656.2 656.3 656.4 656.5 656.6 656.7 656.8 656.9 657 + Bin 1657: 657 657.1 657.2 657.3 657.4 657.5 657.6 657.7 657.8 657.9 658 + Bin 1658: 658 658.1 658.2 658.3 658.4 658.5 658.6 658.7 658.8 658.9 659 + Bin 1659: 659 659.1 659.2 659.3 659.4 659.5 659.6 659.7 659.8 659.9 660 + Bin 1660: 660 660.1 660.2 660.3 660.4 660.5 660.6 660.7 660.8 660.9 661 + Bin 1661: 661 661.1 661.2 661.3 661.4 661.5 661.6 661.7 661.8 661.9 662 + Bin 1662: 662 662.1 662.2 662.3 662.4 662.5 662.6 662.7 662.8 662.9 663 + Bin 1663: 663 663.1 663.2 663.3 663.4 663.5 663.6 663.7 663.8 663.9 664 + Bin 1664: 664 664.1 664.2 664.3 664.4 664.5 664.6 664.7 664.8 664.9 665 + Bin 1665: 665 665.1 665.2 665.3 665.4 665.5 665.6 665.7 665.8 665.9 666 + Bin 1666: 666 666.1 666.2 666.3 666.4 666.5 666.6 666.7 666.8 666.9 667 + Bin 1667: 667 667.1 667.2 667.3 667.4 667.5 667.6 667.7 667.8 667.9 668 + Bin 1668: 668 668.1 668.2 668.3 668.4 668.5 668.6 668.7 668.8 668.9 669 + Bin 1669: 669 669.1 669.2 669.3 669.4 669.5 669.6 669.7 669.8 669.9 670 + Bin 1670: 670 670.1 670.2 670.3 670.4 670.5 670.6 670.7 670.8 670.9 671 + Bin 1671: 671 671.1 671.2 671.3 671.4 671.5 671.6 671.7 671.8 671.9 672 + Bin 1672: 672 672.1 672.2 672.3 672.4 672.5 672.6 672.7 672.8 672.9 673 + Bin 1673: 673 673.1 673.2 673.3 673.4 673.5 673.6 673.7 673.8 673.9 674 + Bin 1674: 674 674.1 674.2 674.3 674.4 674.5 674.6 674.7 674.8 674.9 675 + Bin 1675: 675 675.1 675.2 675.3 675.4 675.5 675.6 675.7 675.8 675.9 676 + Bin 1676: 676 676.1 676.2 676.3 676.4 676.5 676.6 676.7 676.8 676.9 677 + Bin 1677: 677 677.1 677.2 677.3 677.4 677.5 677.6 677.7 677.8 677.9 678 + Bin 1678: 678 678.1 678.2 678.3 678.4 678.5 678.6 678.7 678.8 678.9 679 + Bin 1679: 679 679.1 679.2 679.3 679.4 679.5 679.6 679.7 679.8 679.9 680 + Bin 1680: 680 680.1 680.2 680.3 680.4 680.5 680.6 680.7 680.8 680.9 681 + Bin 1681: 681 681.1 681.2 681.3 681.4 681.5 681.6 681.7 681.8 681.9 682 + Bin 1682: 682 682.1 682.2 682.3 682.4 682.5 682.6 682.7 682.8 682.9 683 + Bin 1683: 683 683.1 683.2 683.3 683.4 683.5 683.6 683.7 683.8 683.9 684 + Bin 1684: 684 684.1 684.2 684.3 684.4 684.5 684.6 684.7 684.8 684.9 685 + Bin 1685: 685 685.1 685.2 685.3 685.4 685.5 685.6 685.7 685.8 685.9 686 + Bin 1686: 686 686.1 686.2 686.3 686.4 686.5 686.6 686.7 686.8 686.9 687 + Bin 1687: 687 687.1 687.2 687.3 687.4 687.5 687.6 687.7 687.8 687.9 688 + Bin 1688: 688 688.1 688.2 688.3 688.4 688.5 688.6 688.7 688.8 688.9 689 + Bin 1689: 689 689.1 689.2 689.3 689.4 689.5 689.6 689.7 689.8 689.9 690 + Bin 1690: 690 690.1 690.2 690.3 690.4 690.5 690.6 690.7 690.8 690.9 691 + Bin 1691: 691 691.1 691.2 691.3 691.4 691.5 691.6 691.7 691.8 691.9 692 + Bin 1692: 692 692.1 692.2 692.3 692.4 692.5 692.6 692.7 692.8 692.9 693 + Bin 1693: 693 693.1 693.2 693.3 693.4 693.5 693.6 693.7 693.8 693.9 694 + Bin 1694: 694 694.1 694.2 694.3 694.4 694.5 694.6 694.7 694.8 694.9 695 + Bin 1695: 695 695.1 695.2 695.3 695.4 695.5 695.6 695.7 695.8 695.9 696 + Bin 1696: 696 696.1 696.2 696.3 696.4 696.5 696.6 696.7 696.8 696.9 697 + Bin 1697: 697 697.1 697.2 697.3 697.4 697.5 697.6 697.7 697.8 697.9 698 + Bin 1698: 698 698.1 698.2 698.3 698.4 698.5 698.6 698.7 698.8 698.9 699 + Bin 1699: 699 699.1 699.2 699.3 699.4 699.5 699.6 699.7 699.8 699.9 700 + Bin 1700: 700 700.1 700.2 700.3 700.4 700.5 700.6 700.7 700.8 700.9 701 + Bin 1701: 701 701.1 701.2 701.3 701.4 701.5 701.6 701.7 701.8 701.9 702 + Bin 1702: 702 702.1 702.2 702.3 702.4 702.5 702.6 702.7 702.8 702.9 703 + Bin 1703: 703 703.1 703.2 703.3 703.4 703.5 703.6 703.7 703.8 703.9 704 + Bin 1704: 704 704.1 704.2 704.3 704.4 704.5 704.6 704.7 704.8 704.9 705 + Bin 1705: 705 705.1 705.2 705.3 705.4 705.5 705.6 705.7 705.8 705.9 706 + Bin 1706: 706 706.1 706.2 706.3 706.4 706.5 706.6 706.7 706.8 706.9 707 + Bin 1707: 707 707.1 707.2 707.3 707.4 707.5 707.6 707.7 707.8 707.9 708 + Bin 1708: 708 708.1 708.2 708.3 708.4 708.5 708.6 708.7 708.8 708.9 709 + Bin 1709: 709 709.1 709.2 709.3 709.4 709.5 709.6 709.7 709.8 709.9 710 + Bin 1710: 710 710.1 710.2 710.3 710.4 710.5 710.6 710.7 710.8 710.9 711 + Bin 1711: 711 711.1 711.2 711.3 711.4 711.5 711.6 711.7 711.8 711.9 712 + Bin 1712: 712 712.1 712.2 712.3 712.4 712.5 712.6 712.7 712.8 712.9 713 + Bin 1713: 713 713.1 713.2 713.3 713.4 713.5 713.6 713.7 713.8 713.9 714 + Bin 1714: 714 714.1 714.2 714.3 714.4 714.5 714.6 714.7 714.8 714.9 715 + Bin 1715: 715 715.1 715.2 715.3 715.4 715.5 715.6 715.7 715.8 715.9 716 + Bin 1716: 716 716.1 716.2 716.3 716.4 716.5 716.6 716.7 716.8 716.9 717 + Bin 1717: 717 717.1 717.2 717.3 717.4 717.5 717.6 717.7 717.8 717.9 718 + Bin 1718: 718 718.1 718.2 718.3 718.4 718.5 718.6 718.7 718.8 718.9 719 + Bin 1719: 719 719.1 719.2 719.3 719.4 719.5 719.6 719.7 719.8 719.9 720 + Bin 1720: 720 720.1 720.2 720.3 720.4 720.5 720.6 720.7 720.8 720.9 721 + Bin 1721: 721 721.1 721.2 721.3 721.4 721.5 721.6 721.7 721.8 721.9 722 + Bin 1722: 722 722.1 722.2 722.3 722.4 722.5 722.6 722.7 722.8 722.9 723 + Bin 1723: 723 723.1 723.2 723.3 723.4 723.5 723.6 723.7 723.8 723.9 724 + Bin 1724: 724 724.1 724.2 724.3 724.4 724.5 724.6 724.7 724.8 724.9 725 + Bin 1725: 725 725.1 725.2 725.3 725.4 725.5 725.6 725.7 725.8 725.9 726 + Bin 1726: 726 726.1 726.2 726.3 726.4 726.5 726.6 726.7 726.8 726.9 727 + Bin 1727: 727 727.1 727.2 727.3 727.4 727.5 727.6 727.7 727.8 727.9 728 + Bin 1728: 728 728.1 728.2 728.3 728.4 728.5 728.6 728.7 728.8 728.9 729 + Bin 1729: 729 729.1 729.2 729.3 729.4 729.5 729.6 729.7 729.8 729.9 730 + Bin 1730: 730 730.1 730.2 730.3 730.4 730.5 730.6 730.7 730.8 730.9 731 + Bin 1731: 731 731.1 731.2 731.3 731.4 731.5 731.6 731.7 731.8 731.9 732 + Bin 1732: 732 732.1 732.2 732.3 732.4 732.5 732.6 732.7 732.8 732.9 733 + Bin 1733: 733 733.1 733.2 733.3 733.4 733.5 733.6 733.7 733.8 733.9 734 + Bin 1734: 734 734.1 734.2 734.3 734.4 734.5 734.6 734.7 734.8 734.9 735 + Bin 1735: 735 735.1 735.2 735.3 735.4 735.5 735.6 735.7 735.8 735.9 736 + Bin 1736: 736 736.1 736.2 736.3 736.4 736.5 736.6 736.7 736.8 736.9 737 + Bin 1737: 737 737.1 737.2 737.3 737.4 737.5 737.6 737.7 737.8 737.9 738 + Bin 1738: 738 738.1 738.2 738.3 738.4 738.5 738.6 738.7 738.8 738.9 739 + Bin 1739: 739 739.1 739.2 739.3 739.4 739.5 739.6 739.7 739.8 739.9 740 + Bin 1740: 740 740.1 740.2 740.3 740.4 740.5 740.6 740.7 740.8 740.9 741 + Bin 1741: 741 741.1 741.2 741.3 741.4 741.5 741.6 741.7 741.8 741.9 742 + Bin 1742: 742 742.1 742.2 742.3 742.4 742.5 742.6 742.7 742.8 742.9 743 + Bin 1743: 743 743.1 743.2 743.3 743.4 743.5 743.6 743.7 743.8 743.9 744 + Bin 1744: 744 744.1 744.2 744.3 744.4 744.5 744.6 744.7 744.8 744.9 745 + Bin 1745: 745 745.1 745.2 745.3 745.4 745.5 745.6 745.7 745.8 745.9 746 + Bin 1746: 746 746.1 746.2 746.3 746.4 746.5 746.6 746.7 746.8 746.9 747 + Bin 1747: 747 747.1 747.2 747.3 747.4 747.5 747.6 747.7 747.8 747.9 748 + Bin 1748: 748 748.1 748.2 748.3 748.4 748.5 748.6 748.7 748.8 748.9 749 + Bin 1749: 749 749.1 749.2 749.3 749.4 749.5 749.6 749.7 749.8 749.9 750 + Bin 1750: 750 750.1 750.2 750.3 750.4 750.5 750.6 750.7 750.8 750.9 751 + Bin 1751: 751 751.1 751.2 751.3 751.4 751.5 751.6 751.7 751.8 751.9 752 + Bin 1752: 752 752.1 752.2 752.3 752.4 752.5 752.6 752.7 752.8 752.9 753 + Bin 1753: 753 753.1 753.2 753.3 753.4 753.5 753.6 753.7 753.8 753.9 754 + Bin 1754: 754 754.1 754.2 754.3 754.4 754.5 754.6 754.7 754.8 754.9 755 + Bin 1755: 755 755.1 755.2 755.3 755.4 755.5 755.6 755.7 755.8 755.9 756 + Bin 1756: 756 756.1 756.2 756.3 756.4 756.5 756.6 756.7 756.8 756.9 757 + Bin 1757: 757 757.1 757.2 757.3 757.4 757.5 757.6 757.7 757.8 757.9 758 + Bin 1758: 758 758.1 758.2 758.3 758.4 758.5 758.6 758.7 758.8 758.9 759 + Bin 1759: 759 759.1 759.2 759.3 759.4 759.5 759.6 759.7 759.8 759.9 760 + Bin 1760: 760 760.1 760.2 760.3 760.4 760.5 760.6 760.7 760.8 760.9 761 + Bin 1761: 761 761.1 761.2 761.3 761.4 761.5 761.6 761.7 761.8 761.9 762 + Bin 1762: 762 762.1 762.2 762.3 762.4 762.5 762.6 762.7 762.8 762.9 763 + Bin 1763: 763 763.1 763.2 763.3 763.4 763.5 763.6 763.7 763.8 763.9 764 + Bin 1764: 764 764.1 764.2 764.3 764.4 764.5 764.6 764.7 764.8 764.9 765 + Bin 1765: 765 765.1 765.2 765.3 765.4 765.5 765.6 765.7 765.8 765.9 766 + Bin 1766: 766 766.1 766.2 766.3 766.4 766.5 766.6 766.7 766.8 766.9 767 + Bin 1767: 767 767.1 767.2 767.3 767.4 767.5 767.6 767.7 767.8 767.9 768 + Bin 1768: 768 768.1 768.2 768.3 768.4 768.5 768.6 768.7 768.8 768.9 769 + Bin 1769: 769 769.1 769.2 769.3 769.4 769.5 769.6 769.7 769.8 769.9 770 + Bin 1770: 770 770.1 770.2 770.3 770.4 770.5 770.6 770.7 770.8 770.9 771 + Bin 1771: 771 771.1 771.2 771.3 771.4 771.5 771.6 771.7 771.8 771.9 772 + Bin 1772: 772 772.1 772.2 772.3 772.4 772.5 772.6 772.7 772.8 772.9 773 + Bin 1773: 773 773.1 773.2 773.3 773.4 773.5 773.6 773.7 773.8 773.9 774 + Bin 1774: 774 774.1 774.2 774.3 774.4 774.5 774.6 774.7 774.8 774.9 775 + Bin 1775: 775 775.1 775.2 775.3 775.4 775.5 775.6 775.7 775.8 775.9 776 + Bin 1776: 776 776.1 776.2 776.3 776.4 776.5 776.6 776.7 776.8 776.9 777 + Bin 1777: 777 777.1 777.2 777.3 777.4 777.5 777.6 777.7 777.8 777.9 778 + Bin 1778: 778 778.1 778.2 778.3 778.4 778.5 778.6 778.7 778.8 778.9 779 + Bin 1779: 779 779.1 779.2 779.3 779.4 779.5 779.6 779.7 779.8 779.9 780 + Bin 1780: 780 780.1 780.2 780.3 780.4 780.5 780.6 780.7 780.8 780.9 781 + Bin 1781: 781 781.1 781.2 781.3 781.4 781.5 781.6 781.7 781.8 781.9 782 + Bin 1782: 782 782.1 782.2 782.3 782.4 782.5 782.6 782.7 782.8 782.9 783 + Bin 1783: 783 783.1 783.2 783.3 783.4 783.5 783.6 783.7 783.8 783.9 784 + Bin 1784: 784 784.1 784.2 784.3 784.4 784.5 784.6 784.7 784.8 784.9 785 + Bin 1785: 785 785.1 785.2 785.3 785.4 785.5 785.6 785.7 785.8 785.9 786 + Bin 1786: 786 786.1 786.2 786.3 786.4 786.5 786.6 786.7 786.8 786.9 787 + Bin 1787: 787 787.1 787.2 787.3 787.4 787.5 787.6 787.7 787.8 787.9 788 + Bin 1788: 788 788.1 788.2 788.3 788.4 788.5 788.6 788.7 788.8 788.9 789 + Bin 1789: 789 789.1 789.2 789.3 789.4 789.5 789.6 789.7 789.8 789.9 790 + Bin 1790: 790 790.1 790.2 790.3 790.4 790.5 790.6 790.7 790.8 790.9 791 + Bin 1791: 791 791.1 791.2 791.3 791.4 791.5 791.6 791.7 791.8 791.9 792 + Bin 1792: 792 792.1 792.2 792.3 792.4 792.5 792.6 792.7 792.8 792.9 793 + Bin 1793: 793 793.1 793.2 793.3 793.4 793.5 793.6 793.7 793.8 793.9 794 + Bin 1794: 794 794.1 794.2 794.3 794.4 794.5 794.6 794.7 794.8 794.9 795 + Bin 1795: 795 795.1 795.2 795.3 795.4 795.5 795.6 795.7 795.8 795.9 796 + Bin 1796: 796 796.1 796.2 796.3 796.4 796.5 796.6 796.7 796.8 796.9 797 + Bin 1797: 797 797.1 797.2 797.3 797.4 797.5 797.6 797.7 797.8 797.9 798 + Bin 1798: 798 798.1 798.2 798.3 798.4 798.5 798.6 798.7 798.8 798.9 799 + Bin 1799: 799 799.1 799.2 799.3 799.4 799.5 799.6 799.7 799.8 799.9 800 + Bin 1800: 800 800.1 800.2 800.3 800.4 800.5 800.6 800.7 800.8 800.9 801 + Bin 1801: 801 801.1 801.2 801.3 801.4 801.5 801.6 801.7 801.8 801.9 802 + Bin 1802: 802 802.1 802.2 802.3 802.4 802.5 802.6 802.7 802.8 802.9 803 + Bin 1803: 803 803.1 803.2 803.3 803.4 803.5 803.6 803.7 803.8 803.9 804 + Bin 1804: 804 804.1 804.2 804.3 804.4 804.5 804.6 804.7 804.8 804.9 805 + Bin 1805: 805 805.1 805.2 805.3 805.4 805.5 805.6 805.7 805.8 805.9 806 + Bin 1806: 806 806.1 806.2 806.3 806.4 806.5 806.6 806.7 806.8 806.9 807 + Bin 1807: 807 807.1 807.2 807.3 807.4 807.5 807.6 807.7 807.8 807.9 808 + Bin 1808: 808 808.1 808.2 808.3 808.4 808.5 808.6 808.7 808.8 808.9 809 + Bin 1809: 809 809.1 809.2 809.3 809.4 809.5 809.6 809.7 809.8 809.9 810 + Bin 1810: 810 810.1 810.2 810.3 810.4 810.5 810.6 810.7 810.8 810.9 811 + Bin 1811: 811 811.1 811.2 811.3 811.4 811.5 811.6 811.7 811.8 811.9 812 + Bin 1812: 812 812.1 812.2 812.3 812.4 812.5 812.6 812.7 812.8 812.9 813 + Bin 1813: 813 813.1 813.2 813.3 813.4 813.5 813.6 813.7 813.8 813.9 814 + Bin 1814: 814 814.1 814.2 814.3 814.4 814.5 814.6 814.7 814.8 814.9 815 + Bin 1815: 815 815.1 815.2 815.3 815.4 815.5 815.6 815.7 815.8 815.9 816 + Bin 1816: 816 816.1 816.2 816.3 816.4 816.5 816.6 816.7 816.8 816.9 817 + Bin 1817: 817 817.1 817.2 817.3 817.4 817.5 817.6 817.7 817.8 817.9 818 + Bin 1818: 818 818.1 818.2 818.3 818.4 818.5 818.6 818.7 818.8 818.9 819 + Bin 1819: 819 819.1 819.2 819.3 819.4 819.5 819.6 819.7 819.8 819.9 820 + Bin 1820: 820 820.1 820.2 820.3 820.4 820.5 820.6 820.7 820.8 820.9 821 + Bin 1821: 821 821.1 821.2 821.3 821.4 821.5 821.6 821.7 821.8 821.9 822 + Bin 1822: 822 822.1 822.2 822.3 822.4 822.5 822.6 822.7 822.8 822.9 823 + Bin 1823: 823 823.1 823.2 823.3 823.4 823.5 823.6 823.7 823.8 823.9 824 + Bin 1824: 824 824.1 824.2 824.3 824.4 824.5 824.6 824.7 824.8 824.9 825 + Bin 1825: 825 825.1 825.2 825.3 825.4 825.5 825.6 825.7 825.8 825.9 826 + Bin 1826: 826 826.1 826.2 826.3 826.4 826.5 826.6 826.7 826.8 826.9 827 + Bin 1827: 827 827.1 827.2 827.3 827.4 827.5 827.6 827.7 827.8 827.9 828 + Bin 1828: 828 828.1 828.2 828.3 828.4 828.5 828.6 828.7 828.8 828.9 829 + Bin 1829: 829 829.1 829.2 829.3 829.4 829.5 829.6 829.7 829.8 829.9 830 + Bin 1830: 830 830.1 830.2 830.3 830.4 830.5 830.6 830.7 830.8 830.9 831 + Bin 1831: 831 831.1 831.2 831.3 831.4 831.5 831.6 831.7 831.8 831.9 832 + Bin 1832: 832 832.1 832.2 832.3 832.4 832.5 832.6 832.7 832.8 832.9 833 + Bin 1833: 833 833.1 833.2 833.3 833.4 833.5 833.6 833.7 833.8 833.9 834 + Bin 1834: 834 834.1 834.2 834.3 834.4 834.5 834.6 834.7 834.8 834.9 835 + Bin 1835: 835 835.1 835.2 835.3 835.4 835.5 835.6 835.7 835.8 835.9 836 + Bin 1836: 836 836.1 836.2 836.3 836.4 836.5 836.6 836.7 836.8 836.9 837 + Bin 1837: 837 837.1 837.2 837.3 837.4 837.5 837.6 837.7 837.8 837.9 838 + Bin 1838: 838 838.1 838.2 838.3 838.4 838.5 838.6 838.7 838.8 838.9 839 + Bin 1839: 839 839.1 839.2 839.3 839.4 839.5 839.6 839.7 839.8 839.9 840 + Bin 1840: 840 840.1 840.2 840.3 840.4 840.5 840.6 840.7 840.8 840.9 841 + Bin 1841: 841 841.1 841.2 841.3 841.4 841.5 841.6 841.7 841.8 841.9 842 + Bin 1842: 842 842.1 842.2 842.3 842.4 842.5 842.6 842.7 842.8 842.9 843 + Bin 1843: 843 843.1 843.2 843.3 843.4 843.5 843.6 843.7 843.8 843.9 844 + Bin 1844: 844 844.1 844.2 844.3 844.4 844.5 844.6 844.7 844.8 844.9 845 + Bin 1845: 845 845.1 845.2 845.3 845.4 845.5 845.6 845.7 845.8 845.9 846 + Bin 1846: 846 846.1 846.2 846.3 846.4 846.5 846.6 846.7 846.8 846.9 847 + Bin 1847: 847 847.1 847.2 847.3 847.4 847.5 847.6 847.7 847.8 847.9 848 + Bin 1848: 848 848.1 848.2 848.3 848.4 848.5 848.6 848.7 848.8 848.9 849 + Bin 1849: 849 849.1 849.2 849.3 849.4 849.5 849.6 849.7 849.8 849.9 850 + Bin 1850: 850 850.1 850.2 850.3 850.4 850.5 850.6 850.7 850.8 850.9 851 + Bin 1851: 851 851.1 851.2 851.3 851.4 851.5 851.6 851.7 851.8 851.9 852 + Bin 1852: 852 852.1 852.2 852.3 852.4 852.5 852.6 852.7 852.8 852.9 853 + Bin 1853: 853 853.1 853.2 853.3 853.4 853.5 853.6 853.7 853.8 853.9 854 + Bin 1854: 854 854.1 854.2 854.3 854.4 854.5 854.6 854.7 854.8 854.9 855 + Bin 1855: 855 855.1 855.2 855.3 855.4 855.5 855.6 855.7 855.8 855.9 856 + Bin 1856: 856 856.1 856.2 856.3 856.4 856.5 856.6 856.7 856.8 856.9 857 + Bin 1857: 857 857.1 857.2 857.3 857.4 857.5 857.6 857.7 857.8 857.9 858 + Bin 1858: 858 858.1 858.2 858.3 858.4 858.5 858.6 858.7 858.8 858.9 859 + Bin 1859: 859 859.1 859.2 859.3 859.4 859.5 859.6 859.7 859.8 859.9 860 + Bin 1860: 860 860.1 860.2 860.3 860.4 860.5 860.6 860.7 860.8 860.9 861 + Bin 1861: 861 861.1 861.2 861.3 861.4 861.5 861.6 861.7 861.8 861.9 862 + Bin 1862: 862 862.1 862.2 862.3 862.4 862.5 862.6 862.7 862.8 862.9 863 + Bin 1863: 863 863.1 863.2 863.3 863.4 863.5 863.6 863.7 863.8 863.9 864 + Bin 1864: 864 864.1 864.2 864.3 864.4 864.5 864.6 864.7 864.8 864.9 865 + Bin 1865: 865 865.1 865.2 865.3 865.4 865.5 865.6 865.7 865.8 865.9 866 + Bin 1866: 866 866.1 866.2 866.3 866.4 866.5 866.6 866.7 866.8 866.9 867 + Bin 1867: 867 867.1 867.2 867.3 867.4 867.5 867.6 867.7 867.8 867.9 868 + Bin 1868: 868 868.1 868.2 868.3 868.4 868.5 868.6 868.7 868.8 868.9 869 + Bin 1869: 869 869.1 869.2 869.3 869.4 869.5 869.6 869.7 869.8 869.9 870 + Bin 1870: 870 870.1 870.2 870.3 870.4 870.5 870.6 870.7 870.8 870.9 871 + Bin 1871: 871 871.1 871.2 871.3 871.4 871.5 871.6 871.7 871.8 871.9 872 + Bin 1872: 872 872.1 872.2 872.3 872.4 872.5 872.6 872.7 872.8 872.9 873 + Bin 1873: 873 873.1 873.2 873.3 873.4 873.5 873.6 873.7 873.8 873.9 874 + Bin 1874: 874 874.1 874.2 874.3 874.4 874.5 874.6 874.7 874.8 874.9 875 + Bin 1875: 875 875.1 875.2 875.3 875.4 875.5 875.6 875.7 875.8 875.9 876 + Bin 1876: 876 876.1 876.2 876.3 876.4 876.5 876.6 876.7 876.8 876.9 877 + Bin 1877: 877 877.1 877.2 877.3 877.4 877.5 877.6 877.7 877.8 877.9 878 + Bin 1878: 878 878.1 878.2 878.3 878.4 878.5 878.6 878.7 878.8 878.9 879 + Bin 1879: 879 879.1 879.2 879.3 879.4 879.5 879.6 879.7 879.8 879.9 880 + Bin 1880: 880 880.1 880.2 880.3 880.4 880.5 880.6 880.7 880.8 880.9 881 + Bin 1881: 881 881.1 881.2 881.3 881.4 881.5 881.6 881.7 881.8 881.9 882 + Bin 1882: 882 882.1 882.2 882.3 882.4 882.5 882.6 882.7 882.8 882.9 883 + Bin 1883: 883 883.1 883.2 883.3 883.4 883.5 883.6 883.7 883.8 883.9 884 + Bin 1884: 884 884.1 884.2 884.3 884.4 884.5 884.6 884.7 884.8 884.9 885 + Bin 1885: 885 885.1 885.2 885.3 885.4 885.5 885.6 885.7 885.8 885.9 886 + Bin 1886: 886 886.1 886.2 886.3 886.4 886.5 886.6 886.7 886.8 886.9 887 + Bin 1887: 887 887.1 887.2 887.3 887.4 887.5 887.6 887.7 887.8 887.9 888 + Bin 1888: 888 888.1 888.2 888.3 888.4 888.5 888.6 888.7 888.8 888.9 889 + Bin 1889: 889 889.1 889.2 889.3 889.4 889.5 889.6 889.7 889.8 889.9 890 + Bin 1890: 890 890.1 890.2 890.3 890.4 890.5 890.6 890.7 890.8 890.9 891 + Bin 1891: 891 891.1 891.2 891.3 891.4 891.5 891.6 891.7 891.8 891.9 892 + Bin 1892: 892 892.1 892.2 892.3 892.4 892.5 892.6 892.7 892.8 892.9 893 + Bin 1893: 893 893.1 893.2 893.3 893.4 893.5 893.6 893.7 893.8 893.9 894 + Bin 1894: 894 894.1 894.2 894.3 894.4 894.5 894.6 894.7 894.8 894.9 895 + Bin 1895: 895 895.1 895.2 895.3 895.4 895.5 895.6 895.7 895.8 895.9 896 + Bin 1896: 896 896.1 896.2 896.3 896.4 896.5 896.6 896.7 896.8 896.9 897 + Bin 1897: 897 897.1 897.2 897.3 897.4 897.5 897.6 897.7 897.8 897.9 898 + Bin 1898: 898 898.1 898.2 898.3 898.4 898.5 898.6 898.7 898.8 898.9 899 + Bin 1899: 899 899.1 899.2 899.3 899.4 899.5 899.6 899.7 899.8 899.9 900 + Bin 1900: 900 900.1 900.2 900.3 900.4 900.5 900.6 900.7 900.8 900.9 901 + Bin 1901: 901 901.1 901.2 901.3 901.4 901.5 901.6 901.7 901.8 901.9 902 + Bin 1902: 902 902.1 902.2 902.3 902.4 902.5 902.6 902.7 902.8 902.9 903 + Bin 1903: 903 903.1 903.2 903.3 903.4 903.5 903.6 903.7 903.8 903.9 904 + Bin 1904: 904 904.1 904.2 904.3 904.4 904.5 904.6 904.7 904.8 904.9 905 + Bin 1905: 905 905.1 905.2 905.3 905.4 905.5 905.6 905.7 905.8 905.9 906 + Bin 1906: 906 906.1 906.2 906.3 906.4 906.5 906.6 906.7 906.8 906.9 907 + Bin 1907: 907 907.1 907.2 907.3 907.4 907.5 907.6 907.7 907.8 907.9 908 + Bin 1908: 908 908.1 908.2 908.3 908.4 908.5 908.6 908.7 908.8 908.9 909 + Bin 1909: 909 909.1 909.2 909.3 909.4 909.5 909.6 909.7 909.8 909.9 910 + Bin 1910: 910 910.1 910.2 910.3 910.4 910.5 910.6 910.7 910.8 910.9 911 + Bin 1911: 911 911.1 911.2 911.3 911.4 911.5 911.6 911.7 911.8 911.9 912 + Bin 1912: 912 912.1 912.2 912.3 912.4 912.5 912.6 912.7 912.8 912.9 913 + Bin 1913: 913 913.1 913.2 913.3 913.4 913.5 913.6 913.7 913.8 913.9 914 + Bin 1914: 914 914.1 914.2 914.3 914.4 914.5 914.6 914.7 914.8 914.9 915 + Bin 1915: 915 915.1 915.2 915.3 915.4 915.5 915.6 915.7 915.8 915.9 916 + Bin 1916: 916 916.1 916.2 916.3 916.4 916.5 916.6 916.7 916.8 916.9 917 + Bin 1917: 917 917.1 917.2 917.3 917.4 917.5 917.6 917.7 917.8 917.9 918 + Bin 1918: 918 918.1 918.2 918.3 918.4 918.5 918.6 918.7 918.8 918.9 919 + Bin 1919: 919 919.1 919.2 919.3 919.4 919.5 919.6 919.7 919.8 919.9 920 + Bin 1920: 920 920.1 920.2 920.3 920.4 920.5 920.6 920.7 920.8 920.9 921 + Bin 1921: 921 921.1 921.2 921.3 921.4 921.5 921.6 921.7 921.8 921.9 922 + Bin 1922: 922 922.1 922.2 922.3 922.4 922.5 922.6 922.7 922.8 922.9 923 + Bin 1923: 923 923.1 923.2 923.3 923.4 923.5 923.6 923.7 923.8 923.9 924 + Bin 1924: 924 924.1 924.2 924.3 924.4 924.5 924.6 924.7 924.8 924.9 925 + Bin 1925: 925 925.1 925.2 925.3 925.4 925.5 925.6 925.7 925.8 925.9 926 + Bin 1926: 926 926.1 926.2 926.3 926.4 926.5 926.6 926.7 926.8 926.9 927 + Bin 1927: 927 927.1 927.2 927.3 927.4 927.5 927.6 927.7 927.8 927.9 928 + Bin 1928: 928 928.1 928.2 928.3 928.4 928.5 928.6 928.7 928.8 928.9 929 + Bin 1929: 929 929.1 929.2 929.3 929.4 929.5 929.6 929.7 929.8 929.9 930 + Bin 1930: 930 930.1 930.2 930.3 930.4 930.5 930.6 930.7 930.8 930.9 931 + Bin 1931: 931 931.1 931.2 931.3 931.4 931.5 931.6 931.7 931.8 931.9 932 + Bin 1932: 932 932.1 932.2 932.3 932.4 932.5 932.6 932.7 932.8 932.9 933 + Bin 1933: 933 933.1 933.2 933.3 933.4 933.5 933.6 933.7 933.8 933.9 934 + Bin 1934: 934 934.1 934.2 934.3 934.4 934.5 934.6 934.7 934.8 934.9 935 + Bin 1935: 935 935.1 935.2 935.3 935.4 935.5 935.6 935.7 935.8 935.9 936 + Bin 1936: 936 936.1 936.2 936.3 936.4 936.5 936.6 936.7 936.8 936.9 937 + Bin 1937: 937 937.1 937.2 937.3 937.4 937.5 937.6 937.7 937.8 937.9 938 + Bin 1938: 938 938.1 938.2 938.3 938.4 938.5 938.6 938.7 938.8 938.9 939 + Bin 1939: 939 939.1 939.2 939.3 939.4 939.5 939.6 939.7 939.8 939.9 940 + Bin 1940: 940 940.1 940.2 940.3 940.4 940.5 940.6 940.7 940.8 940.9 941 + Bin 1941: 941 941.1 941.2 941.3 941.4 941.5 941.6 941.7 941.8 941.9 942 + Bin 1942: 942 942.1 942.2 942.3 942.4 942.5 942.6 942.7 942.8 942.9 943 + Bin 1943: 943 943.1 943.2 943.3 943.4 943.5 943.6 943.7 943.8 943.9 944 + Bin 1944: 944 944.1 944.2 944.3 944.4 944.5 944.6 944.7 944.8 944.9 945 + Bin 1945: 945 945.1 945.2 945.3 945.4 945.5 945.6 945.7 945.8 945.9 946 + Bin 1946: 946 946.1 946.2 946.3 946.4 946.5 946.6 946.7 946.8 946.9 947 + Bin 1947: 947 947.1 947.2 947.3 947.4 947.5 947.6 947.7 947.8 947.9 948 + Bin 1948: 948 948.1 948.2 948.3 948.4 948.5 948.6 948.7 948.8 948.9 949 + Bin 1949: 949 949.1 949.2 949.3 949.4 949.5 949.6 949.7 949.8 949.9 950 + Bin 1950: 950 950.1 950.2 950.3 950.4 950.5 950.6 950.7 950.8 950.9 951 + Bin 1951: 951 951.1 951.2 951.3 951.4 951.5 951.6 951.7 951.8 951.9 952 + Bin 1952: 952 952.1 952.2 952.3 952.4 952.5 952.6 952.7 952.8 952.9 953 + Bin 1953: 953 953.1 953.2 953.3 953.4 953.5 953.6 953.7 953.8 953.9 954 + Bin 1954: 954 954.1 954.2 954.3 954.4 954.5 954.6 954.7 954.8 954.9 955 + Bin 1955: 955 955.1 955.2 955.3 955.4 955.5 955.6 955.7 955.8 955.9 956 + Bin 1956: 956 956.1 956.2 956.3 956.4 956.5 956.6 956.7 956.8 956.9 957 + Bin 1957: 957 957.1 957.2 957.3 957.4 957.5 957.6 957.7 957.8 957.9 958 + Bin 1958: 958 958.1 958.2 958.3 958.4 958.5 958.6 958.7 958.8 958.9 959 + Bin 1959: 959 959.1 959.2 959.3 959.4 959.5 959.6 959.7 959.8 959.9 960 + Bin 1960: 960 960.1 960.2 960.3 960.4 960.5 960.6 960.7 960.8 960.9 961 + Bin 1961: 961 961.1 961.2 961.3 961.4 961.5 961.6 961.7 961.8 961.9 962 + Bin 1962: 962 962.1 962.2 962.3 962.4 962.5 962.6 962.7 962.8 962.9 963 + Bin 1963: 963 963.1 963.2 963.3 963.4 963.5 963.6 963.7 963.8 963.9 964 + Bin 1964: 964 964.1 964.2 964.3 964.4 964.5 964.6 964.7 964.8 964.9 965 + Bin 1965: 965 965.1 965.2 965.3 965.4 965.5 965.6 965.7 965.8 965.9 966 + Bin 1966: 966 966.1 966.2 966.3 966.4 966.5 966.6 966.7 966.8 966.9 967 + Bin 1967: 967 967.1 967.2 967.3 967.4 967.5 967.6 967.7 967.8 967.9 968 + Bin 1968: 968 968.1 968.2 968.3 968.4 968.5 968.6 968.7 968.8 968.9 969 + Bin 1969: 969 969.1 969.2 969.3 969.4 969.5 969.6 969.7 969.8 969.9 970 + Bin 1970: 970 970.1 970.2 970.3 970.4 970.5 970.6 970.7 970.8 970.9 971 + Bin 1971: 971 971.1 971.2 971.3 971.4 971.5 971.6 971.7 971.8 971.9 972 + Bin 1972: 972 972.1 972.2 972.3 972.4 972.5 972.6 972.7 972.8 972.9 973 + Bin 1973: 973 973.1 973.2 973.3 973.4 973.5 973.6 973.7 973.8 973.9 974 + Bin 1974: 974 974.1 974.2 974.3 974.4 974.5 974.6 974.7 974.8 974.9 975 + Bin 1975: 975 975.1 975.2 975.3 975.4 975.5 975.6 975.7 975.8 975.9 976 + Bin 1976: 976 976.1 976.2 976.3 976.4 976.5 976.6 976.7 976.8 976.9 977 + Bin 1977: 977 977.1 977.2 977.3 977.4 977.5 977.6 977.7 977.8 977.9 978 + Bin 1978: 978 978.1 978.2 978.3 978.4 978.5 978.6 978.7 978.8 978.9 979 + Bin 1979: 979 979.1 979.2 979.3 979.4 979.5 979.6 979.7 979.8 979.9 980 + Bin 1980: 980 980.1 980.2 980.3 980.4 980.5 980.6 980.7 980.8 980.9 981 + Bin 1981: 981 981.1 981.2 981.3 981.4 981.5 981.6 981.7 981.8 981.9 982 + Bin 1982: 982 982.1 982.2 982.3 982.4 982.5 982.6 982.7 982.8 982.9 983 + Bin 1983: 983 983.1 983.2 983.3 983.4 983.5 983.6 983.7 983.8 983.9 984 + Bin 1984: 984 984.1 984.2 984.3 984.4 984.5 984.6 984.7 984.8 984.9 985 + Bin 1985: 985 985.1 985.2 985.3 985.4 985.5 985.6 985.7 985.8 985.9 986 + Bin 1986: 986 986.1 986.2 986.3 986.4 986.5 986.6 986.7 986.8 986.9 987 + Bin 1987: 987 987.1 987.2 987.3 987.4 987.5 987.6 987.7 987.8 987.9 988 + Bin 1988: 988 988.1 988.2 988.3 988.4 988.5 988.6 988.7 988.8 988.9 989 + Bin 1989: 989 989.1 989.2 989.3 989.4 989.5 989.6 989.7 989.8 989.9 990 + Bin 1990: 990 990.1 990.2 990.3 990.4 990.5 990.6 990.7 990.8 990.9 991 + Bin 1991: 991 991.1 991.2 991.3 991.4 991.5 991.6 991.7 991.8 991.9 992 + Bin 1992: 992 992.1 992.2 992.3 992.4 992.5 992.6 992.7 992.8 992.9 993 + Bin 1993: 993 993.1 993.2 993.3 993.4 993.5 993.6 993.7 993.8 993.9 994 + Bin 1994: 994 994.1 994.2 994.3 994.4 994.5 994.6 994.7 994.8 994.9 995 + Bin 1995: 995 995.1 995.2 995.3 995.4 995.5 995.6 995.7 995.8 995.9 996 + Bin 1996: 996 996.1 996.2 996.3 996.4 996.5 996.6 996.7 996.8 996.9 997 + Bin 1997: 997 997.1 997.2 997.3 997.4 997.5 997.6 997.7 997.8 997.9 998 + Bin 1998: 998 998.1 998.2 998.3 998.4 998.5 998.6 998.7 998.8 998.9 999 + Bin 1999: 999 999.1 999.2 999.3 999.4 999.5 999.6 999.7 999.8 999.9 1000 + +Det 8: + Bin 0: -90 -89.9 -89.8 -89.7 -89.6 -89.5 -89.4 -89.3 -89.2 -89.1 -89 + Bin 1: -89 -88.9 -88.8 -88.7 -88.6 -88.5 -88.4 -88.3 -88.2 -88.1 -88 + Bin 2: -88 -87.9 -87.8 -87.7 -87.6 -87.5 -87.4 -87.3 -87.2 -87.1 -87 + Bin 3: -87 -86.9 -86.8 -86.7 -86.6 -86.5 -86.4 -86.3 -86.2 -86.1 -86 + Bin 4: -86 -85.9 -85.8 -85.7 -85.6 -85.5 -85.4 -85.3 -85.2 -85.1 -85 + Bin 5: -85 -84.9 -84.8 -84.7 -84.6 -84.5 -84.4 -84.3 -84.2 -84.1 -84 + Bin 6: -84 -83.9 -83.8 -83.7 -83.6 -83.5 -83.4 -83.3 -83.2 -83.1 -83 + Bin 7: -83 -82.9 -82.8 -82.7 -82.6 -82.5 -82.4 -82.3 -82.2 -82.1 -82 + Bin 8: -82 -81.9 -81.8 -81.7 -81.6 -81.5 -81.4 -81.3 -81.2 -81.1 -81 + Bin 9: -81 -80.9 -80.8 -80.7 -80.6 -80.5 -80.4 -80.3 -80.2 -80.1 -80 + Bin 10: -80 -79.9 -79.8 -79.7 -79.6 -79.5 -79.4 -79.3 -79.2 -79.1 -79 + Bin 11: -79 -78.9 -78.8 -78.7 -78.6 -78.5 -78.4 -78.3 -78.2 -78.1 -78 + Bin 12: -78 -77.9 -77.8 -77.7 -77.6 -77.5 -77.4 -77.3 -77.2 -77.1 -77 + Bin 13: -77 -76.9 -76.8 -76.7 -76.6 -76.5 -76.4 -76.3 -76.2 -76.1 -76 + Bin 14: -76 -75.9 -75.8 -75.7 -75.6 -75.5 -75.4 -75.3 -75.2 -75.1 -75 + Bin 15: -75 -74.9 -74.8 -74.7 -74.6 -74.5 -74.4 -74.3 -74.2 -74.1 -74 + Bin 16: -74 -73.9 -73.8 -73.7 -73.6 -73.5 -73.4 -73.3 -73.2 -73.1 -73 + Bin 17: -73 -72.9 -72.8 -72.7 -72.6 -72.5 -72.4 -72.3 -72.2 -72.1 -72 + Bin 18: -72 -71.9 -71.8 -71.7 -71.6 -71.5 -71.4 -71.3 -71.2 -71.1 -71 + Bin 19: -71 -70.9 -70.8 -70.7 -70.6 -70.5 -70.4 -70.3 -70.2 -70.1 -70 + Bin 20: -70 -69.9 -69.8 -69.7 -69.6 -69.5 -69.4 -69.3 -69.2 -69.1 -69 + Bin 21: -69 -68.9 -68.8 -68.7 -68.6 -68.5 -68.4 -68.3 -68.2 -68.1 -68 + Bin 22: -68 -67.9 -67.8 -67.7 -67.6 -67.5 -67.4 -67.3 -67.2 -67.1 -67 + Bin 23: -67 -66.9 -66.8 -66.7 -66.6 -66.5 -66.4 -66.3 -66.2 -66.1 -66 + Bin 24: -66 -65.9 -65.8 -65.7 -65.6 -65.5 -65.4 -65.3 -65.2 -65.1 -65 + Bin 25: -65 -64.9 -64.8 -64.7 -64.6 -64.5 -64.4 -64.3 -64.2 -64.1 -64 + Bin 26: -64 -63.9 -63.8 -63.7 -63.6 -63.5 -63.4 -63.3 -63.2 -63.1 -63 + Bin 27: -63 -62.9 -62.8 -62.7 -62.6 -62.5 -62.4 -62.3 -62.2 -62.1 -62 + Bin 28: -62 -61.9 -61.8 -61.7 -61.6 -61.5 -61.4 -61.3 -61.2 -61.1 -61 + Bin 29: -61 -60.9 -60.8 -60.7 -60.6 -60.5 -60.4 -60.3 -60.2 -60.1 -60 + Bin 30: -60 -59.9 -59.8 -59.7 -59.6 -59.5 -59.4 -59.3 -59.2 -59.1 -59 + Bin 31: -59 -58.9 -58.8 -58.7 -58.6 -58.5 -58.4 -58.3 -58.2 -58.1 -58 + Bin 32: -58 -57.9 -57.8 -57.7 -57.6 -57.5 -57.4 -57.3 -57.2 -57.1 -57 + Bin 33: -57 -56.9 -56.8 -56.7 -56.6 -56.5 -56.4 -56.3 -56.2 -56.1 -56 + Bin 34: -56 -55.9 -55.8 -55.7 -55.6 -55.5 -55.4 -55.3 -55.2 -55.1 -55 + Bin 35: -55 -54.9 -54.8 -54.7 -54.6 -54.5 -54.4 -54.3 -54.2 -54.1 -54 + Bin 36: -54 -53.9 -53.8 -53.7 -53.6 -53.5 -53.4 -53.3 -53.2 -53.1 -53 + Bin 37: -53 -52.9 -52.8 -52.7 -52.6 -52.5 -52.4 -52.3 -52.2 -52.1 -52 + Bin 38: -52 -51.9 -51.8 -51.7 -51.6 -51.5 -51.4 -51.3 -51.2 -51.1 -51 + Bin 39: -51 -50.9 -50.8 -50.7 -50.6 -50.5 -50.4 -50.3 -50.2 -50.1 -50 + Bin 40: -50 -49.9 -49.8 -49.7 -49.6 -49.5 -49.4 -49.3 -49.2 -49.1 -49 + Bin 41: -49 -48.9 -48.8 -48.7 -48.6 -48.5 -48.4 -48.3 -48.2 -48.1 -48 + Bin 42: -48 -47.9 -47.8 -47.7 -47.6 -47.5 -47.4 -47.3 -47.2 -47.1 -47 + Bin 43: -47 -46.9 -46.8 -46.7 -46.6 -46.5 -46.4 -46.3 -46.2 -46.1 -46 + Bin 44: -46 -45.9 -45.8 -45.7 -45.6 -45.5 -45.4 -45.3 -45.2 -45.1 -45 + Bin 45: -45 -44.9 -44.8 -44.7 -44.6 -44.5 -44.4 -44.3 -44.2 -44.1 -44 + Bin 46: -44 -43.9 -43.8 -43.7 -43.6 -43.5 -43.4 -43.3 -43.2 -43.1 -43 + Bin 47: -43 -42.9 -42.8 -42.7 -42.6 -42.5 -42.4 -42.3 -42.2 -42.1 -42 + Bin 48: -42 -41.9 -41.8 -41.7 -41.6 -41.5 -41.4 -41.3 -41.2 -41.1 -41 + Bin 49: -41 -40.9 -40.8 -40.7 -40.6 -40.5 -40.4 -40.3 -40.2 -40.1 -40 + Bin 50: -40 -39.9 -39.8 -39.7 -39.6 -39.5 -39.4 -39.3 -39.2 -39.1 -39 + Bin 51: -39 -38.9 -38.8 -38.7 -38.6 -38.5 -38.4 -38.3 -38.2 -38.1 -38 + Bin 52: -38 -37.9 -37.8 -37.7 -37.6 -37.5 -37.4 -37.3 -37.2 -37.1 -37 + Bin 53: -37 -36.9 -36.8 -36.7 -36.6 -36.5 -36.4 -36.3 -36.2 -36.1 -36 + Bin 54: -36 -35.9 -35.8 -35.7 -35.6 -35.5 -35.4 -35.3 -35.2 -35.1 -35 + Bin 55: -35 -34.9 -34.8 -34.7 -34.6 -34.5 -34.4 -34.3 -34.2 -34.1 -34 + Bin 56: -34 -33.9 -33.8 -33.7 -33.6 -33.5 -33.4 -33.3 -33.2 -33.1 -33 + Bin 57: -33 -32.9 -32.8 -32.7 -32.6 -32.5 -32.4 -32.3 -32.2 -32.1 -32 + Bin 58: -32 -31.9 -31.8 -31.7 -31.6 -31.5 -31.4 -31.3 -31.2 -31.1 -31 + Bin 59: -31 -30.9 -30.8 -30.7 -30.6 -30.5 -30.4 -30.3 -30.2 -30.1 -30 + Bin 60: -30 -29.9 -29.8 -29.7 -29.6 -29.5 -29.4 -29.3 -29.2 -29.1 -29 + Bin 61: -29 -28.9 -28.8 -28.7 -28.6 -28.5 -28.4 -28.3 -28.2 -28.1 -28 + Bin 62: -28 -27.9 -27.8 -27.7 -27.6 -27.5 -27.4 -27.3 -27.2 -27.1 -27 + Bin 63: -27 -26.9 -26.8 -26.7 -26.6 -26.5 -26.4 -26.3 -26.2 -26.1 -26 + Bin 64: -26 -25.9 -25.8 -25.7 -25.6 -25.5 -25.4 -25.3 -25.2 -25.1 -25 + Bin 65: -25 -24.9 -24.8 -24.7 -24.6 -24.5 -24.4 -24.3 -24.2 -24.1 -24 + Bin 66: -24 -23.9 -23.8 -23.7 -23.6 -23.5 -23.4 -23.3 -23.2 -23.1 -23 + Bin 67: -23 -22.9 -22.8 -22.7 -22.6 -22.5 -22.4 -22.3 -22.2 -22.1 -22 + Bin 68: -22 -21.9 -21.8 -21.7 -21.6 -21.5 -21.4 -21.3 -21.2 -21.1 -21 + Bin 69: -21 -20.9 -20.8 -20.7 -20.6 -20.5 -20.4 -20.3 -20.2 -20.1 -20 + Bin 70: -20 -19.9 -19.8 -19.7 -19.6 -19.5 -19.4 -19.3 -19.2 -19.1 -19 + Bin 71: -19 -18.9 -18.8 -18.7 -18.6 -18.5 -18.4 -18.3 -18.2 -18.1 -18 + Bin 72: -18 -17.9 -17.8 -17.7 -17.6 -17.5 -17.4 -17.3 -17.2 -17.1 -17 + Bin 73: -17 -16.9 -16.8 -16.7 -16.6 -16.5 -16.4 -16.3 -16.2 -16.1 -16 + Bin 74: -16 -15.9 -15.8 -15.7 -15.6 -15.5 -15.4 -15.3 -15.2 -15.1 -15 + Bin 75: -15 -14.9 -14.8 -14.7 -14.6 -14.5 -14.4 -14.3 -14.2 -14.1 -14 + Bin 76: -14 -13.9 -13.8 -13.7 -13.6 -13.5 -13.4 -13.3 -13.2 -13.1 -13 + Bin 77: -13 -12.9 -12.8 -12.7 -12.6 -12.5 -12.4 -12.3 -12.2 -12.1 -12 + Bin 78: -12 -11.9 -11.8 -11.7 -11.6 -11.5 -11.4 -11.3 -11.2 -11.1 -11 + Bin 79: -11 -10.9 -10.8 -10.7 -10.6 -10.5 -10.4 -10.3 -10.2 -10.1 -10 + Bin 80: -10 -9.9 -9.8 -9.7 -9.6 -9.5 -9.4 -9.3 -9.2 -9.1 -9 + Bin 81: -9 -8.9 -8.8 -8.7 -8.6 -8.5 -8.4 -8.3 -8.2 -8.1 -8 + Bin 82: -8 -7.9 -7.8 -7.7 -7.6 -7.5 -7.4 -7.3 -7.2 -7.1 -7 + Bin 83: -7 -6.9 -6.8 -6.7 -6.6 -6.5 -6.4 -6.3 -6.2 -6.1 -6 + Bin 84: -6 -5.9 -5.8 -5.7 -5.6 -5.5 -5.4 -5.3 -5.2 -5.1 -5 + Bin 85: -5 -4.9 -4.8 -4.7 -4.6 -4.5 -4.4 -4.3 -4.2 -4.1 -4 + Bin 86: -4 -3.9 -3.8 -3.7 -3.6 -3.5 -3.4 -3.3 -3.2 -3.1 -3 + Bin 87: -3 -2.9 -2.8 -2.7 -2.6 -2.5 -2.4 -2.3 -2.2 -2.1 -2 + Bin 88: -2 -1.9 -1.8 -1.7 -1.6 -1.5 -1.4 -1.3 -1.2 -1.1 -1 + Bin 89: -1 -0.9 -0.8 -0.7 -0.6 -0.5 -0.4 -0.3 -0.2 -0.1 0 + Bin 90: 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 + Bin 91: 1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2 + Bin 92: 2 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3 + Bin 93: 3 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4 + Bin 94: 4 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5 + Bin 95: 5 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6 + Bin 96: 6 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7 + Bin 97: 7 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8 + Bin 98: 8 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9 + Bin 99: 9 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 10 + Bin 100: 10 10.1 10.2 10.3 10.4 10.5 10.6 10.7 10.8 10.9 11 + Bin 101: 11 11.1 11.2 11.3 11.4 11.5 11.6 11.7 11.8 11.9 12 + Bin 102: 12 12.1 12.2 12.3 12.4 12.5 12.6 12.7 12.8 12.9 13 + Bin 103: 13 13.1 13.2 13.3 13.4 13.5 13.6 13.7 13.8 13.9 14 + Bin 104: 14 14.1 14.2 14.3 14.4 14.5 14.6 14.7 14.8 14.9 15 + Bin 105: 15 15.1 15.2 15.3 15.4 15.5 15.6 15.7 15.8 15.9 16 + Bin 106: 16 16.1 16.2 16.3 16.4 16.5 16.6 16.7 16.8 16.9 17 + Bin 107: 17 17.1 17.2 17.3 17.4 17.5 17.6 17.7 17.8 17.9 18 + Bin 108: 18 18.1 18.2 18.3 18.4 18.5 18.6 18.7 18.8 18.9 19 + Bin 109: 19 19.1 19.2 19.3 19.4 19.5 19.6 19.7 19.8 19.9 20 + Bin 110: 20 20.1 20.2 20.3 20.4 20.5 20.6 20.7 20.8 20.9 21 + Bin 111: 21 21.1 21.2 21.3 21.4 21.5 21.6 21.7 21.8 21.9 22 + Bin 112: 22 22.1 22.2 22.3 22.4 22.5 22.6 22.7 22.8 22.9 23 + Bin 113: 23 23.1 23.2 23.3 23.4 23.5 23.6 23.7 23.8 23.9 24 + Bin 114: 24 24.1 24.2 24.3 24.4 24.5 24.6 24.7 24.8 24.9 25 + Bin 115: 25 25.1 25.2 25.3 25.4 25.5 25.6 25.7 25.8 25.9 26 + Bin 116: 26 26.1 26.2 26.3 26.4 26.5 26.6 26.7 26.8 26.9 27 + Bin 117: 27 27.1 27.2 27.3 27.4 27.5 27.6 27.7 27.8 27.9 28 + Bin 118: 28 28.1 28.2 28.3 28.4 28.5 28.6 28.7 28.8 28.9 29 + Bin 119: 29 29.1 29.2 29.3 29.4 29.5 29.6 29.7 29.8 29.9 30 + Bin 120: 30 30.1 30.2 30.3 30.4 30.5 30.6 30.7 30.8 30.9 31 + Bin 121: 31 31.1 31.2 31.3 31.4 31.5 31.6 31.7 31.8 31.9 32 + Bin 122: 32 32.1 32.2 32.3 32.4 32.5 32.6 32.7 32.8 32.9 33 + Bin 123: 33 33.1 33.2 33.3 33.4 33.5 33.6 33.7 33.8 33.9 34 + Bin 124: 34 34.1 34.2 34.3 34.4 34.5 34.6 34.7 34.8 34.9 35 + Bin 125: 35 35.1 35.2 35.3 35.4 35.5 35.6 35.7 35.8 35.9 36 + Bin 126: 36 36.1 36.2 36.3 36.4 36.5 36.6 36.7 36.8 36.9 37 + Bin 127: 37 37.1 37.2 37.3 37.4 37.5 37.6 37.7 37.8 37.9 38 + Bin 128: 38 38.1 38.2 38.3 38.4 38.5 38.6 38.7 38.8 38.9 39 + Bin 129: 39 39.1 39.2 39.3 39.4 39.5 39.6 39.7 39.8 39.9 40 + Bin 130: 40 40.1 40.2 40.3 40.4 40.5 40.6 40.7 40.8 40.9 41 + Bin 131: 41 41.1 41.2 41.3 41.4 41.5 41.6 41.7 41.8 41.9 42 + Bin 132: 42 42.1 42.2 42.3 42.4 42.5 42.6 42.7 42.8 42.9 43 + Bin 133: 43 43.1 43.2 43.3 43.4 43.5 43.6 43.7 43.8 43.9 44 + Bin 134: 44 44.1 44.2 44.3 44.4 44.5 44.6 44.7 44.8 44.9 45 + Bin 135: 45 45.1 45.2 45.3 45.4 45.5 45.6 45.7 45.8 45.9 46 + Bin 136: 46 46.1 46.2 46.3 46.4 46.5 46.6 46.7 46.8 46.9 47 + Bin 137: 47 47.1 47.2 47.3 47.4 47.5 47.6 47.7 47.8 47.9 48 + Bin 138: 48 48.1 48.2 48.3 48.4 48.5 48.6 48.7 48.8 48.9 49 + Bin 139: 49 49.1 49.2 49.3 49.4 49.5 49.6 49.7 49.8 49.9 50 + Bin 140: 50 50.1 50.2 50.3 50.4 50.5 50.6 50.7 50.8 50.9 51 + Bin 141: 51 51.1 51.2 51.3 51.4 51.5 51.6 51.7 51.8 51.9 52 + Bin 142: 52 52.1 52.2 52.3 52.4 52.5 52.6 52.7 52.8 52.9 53 + Bin 143: 53 53.1 53.2 53.3 53.4 53.5 53.6 53.7 53.8 53.9 54 + Bin 144: 54 54.1 54.2 54.3 54.4 54.5 54.6 54.7 54.8 54.9 55 + Bin 145: 55 55.1 55.2 55.3 55.4 55.5 55.6 55.7 55.8 55.9 56 + Bin 146: 56 56.1 56.2 56.3 56.4 56.5 56.6 56.7 56.8 56.9 57 + Bin 147: 57 57.1 57.2 57.3 57.4 57.5 57.6 57.7 57.8 57.9 58 + Bin 148: 58 58.1 58.2 58.3 58.4 58.5 58.6 58.7 58.8 58.9 59 + Bin 149: 59 59.1 59.2 59.3 59.4 59.5 59.6 59.7 59.8 59.9 60 + Bin 150: 60 60.1 60.2 60.3 60.4 60.5 60.6 60.7 60.8 60.9 61 + Bin 151: 61 61.1 61.2 61.3 61.4 61.5 61.6 61.7 61.8 61.9 62 + Bin 152: 62 62.1 62.2 62.3 62.4 62.5 62.6 62.7 62.8 62.9 63 + Bin 153: 63 63.1 63.2 63.3 63.4 63.5 63.6 63.7 63.8 63.9 64 + Bin 154: 64 64.1 64.2 64.3 64.4 64.5 64.6 64.7 64.8 64.9 65 + Bin 155: 65 65.1 65.2 65.3 65.4 65.5 65.6 65.7 65.8 65.9 66 + Bin 156: 66 66.1 66.2 66.3 66.4 66.5 66.6 66.7 66.8 66.9 67 + Bin 157: 67 67.1 67.2 67.3 67.4 67.5 67.6 67.7 67.8 67.9 68 + Bin 158: 68 68.1 68.2 68.3 68.4 68.5 68.6 68.7 68.8 68.9 69 + Bin 159: 69 69.1 69.2 69.3 69.4 69.5 69.6 69.7 69.8 69.9 70 + Bin 160: 70 70.1 70.2 70.3 70.4 70.5 70.6 70.7 70.8 70.9 71 + Bin 161: 71 71.1 71.2 71.3 71.4 71.5 71.6 71.7 71.8 71.9 72 + Bin 162: 72 72.1 72.2 72.3 72.4 72.5 72.6 72.7 72.8 72.9 73 + Bin 163: 73 73.1 73.2 73.3 73.4 73.5 73.6 73.7 73.8 73.9 74 + Bin 164: 74 74.1 74.2 74.3 74.4 74.5 74.6 74.7 74.8 74.9 75 + Bin 165: 75 75.1 75.2 75.3 75.4 75.5 75.6 75.7 75.8 75.9 76 + Bin 166: 76 76.1 76.2 76.3 76.4 76.5 76.6 76.7 76.8 76.9 77 + Bin 167: 77 77.1 77.2 77.3 77.4 77.5 77.6 77.7 77.8 77.9 78 + Bin 168: 78 78.1 78.2 78.3 78.4 78.5 78.6 78.7 78.8 78.9 79 + Bin 169: 79 79.1 79.2 79.3 79.4 79.5 79.6 79.7 79.8 79.9 80 + Bin 170: 80 80.1 80.2 80.3 80.4 80.5 80.6 80.7 80.8 80.9 81 + Bin 171: 81 81.1 81.2 81.3 81.4 81.5 81.6 81.7 81.8 81.9 82 + Bin 172: 82 82.1 82.2 82.3 82.4 82.5 82.6 82.7 82.8 82.9 83 + Bin 173: 83 83.1 83.2 83.3 83.4 83.5 83.6 83.7 83.8 83.9 84 + Bin 174: 84 84.1 84.2 84.3 84.4 84.5 84.6 84.7 84.8 84.9 85 + Bin 175: 85 85.1 85.2 85.3 85.4 85.5 85.6 85.7 85.8 85.9 86 + Bin 176: 86 86.1 86.2 86.3 86.4 86.5 86.6 86.7 86.8 86.9 87 + Bin 177: 87 87.1 87.2 87.3 87.4 87.5 87.6 87.7 87.8 87.9 88 + Bin 178: 88 88.1 88.2 88.3 88.4 88.5 88.6 88.7 88.8 88.9 89 + Bin 179: 89 89.1 89.2 89.3 89.4 89.5 89.6 89.7 89.8 89.9 90 + + +Vector 2: +Det 1: + Bin 0: -90 -90 -90 -90 -90 -90 -90 -90 -88.958 -88.958 -89 + Bin 1: -89 -88.0796 -88.0796 -88.0796 -88.0796 -88.0796 -88.0796 -88.0796 -88.0796 -88.0796 -88 + Bin 2: -88 -88 -87.0769 -87.0769 -87.0769 -87.0769 -87.0769 -87.0769 -87.0769 -87.0769 -87 + Bin 3: -87 -nan -nan -nan -nan -nan -nan -nan -nan -nan -86 + Bin 4: -86 -85.1698 -85.1698 -85.1698 -85.1698 -85.1698 -85.1698 -85.1698 -85.1698 -85.1698 -85 + Bin 5: -85 -nan -nan -nan -nan -nan -nan -nan -nan -nan -84 + Bin 6: -84 -nan -nan -nan -nan -nan -nan -nan -nan -nan -83 + Bin 7: -83 -nan -nan -nan -nan -nan -nan -nan -nan -nan -82 + Bin 8: -82 -nan -nan -nan -nan -nan -nan -nan -nan -nan -81 + Bin 9: -81 -81 -81 -81 -81 -81 -81 -81 -81 -81 -80 + Bin 10: -80 -nan -nan -nan -nan -nan -nan -nan -nan -nan -79 + Bin 11: -79 -nan -nan -nan -nan -nan -nan -nan -nan -nan -78 + Bin 12: -78 -78 -78 -78 -78 -78 -76.9935 -76.9935 -76.9935 -76.9935 -77 + Bin 13: -77 -nan -nan -nan -nan -nan -nan -nan -nan -nan -76 + Bin 14: -76 -nan -nan -nan -nan -nan -nan -nan -nan -nan -75 + Bin 15: -75 -75 -75 -75 -74.0031 -74.0031 -74.0031 -74.0031 -74.0031 -74.0031 -74 + Bin 16: -74 -nan -nan -nan -nan -nan -nan -nan -nan -nan -73 + Bin 17: -73 -nan -nan -nan -nan -nan -nan -nan -nan -nan -72 + Bin 18: -72 -nan -nan -nan -nan -nan -nan -nan -nan -nan -71 + Bin 19: -71 -71 -71 -71 -71 -71 -71 -71 -70.5198 -70.5198 -70 + Bin 20: -70 -nan -nan -nan -nan -nan -nan -nan -nan -nan -69 + Bin 21: -69 -nan -nan -nan -nan -nan -nan -nan -nan -nan -68 + Bin 22: -68 -68 -68 -67.0218 -67.0218 -67.0218 -67.0218 -67.0218 -67.0218 -67.0218 -67 + Bin 23: -67 -nan -nan -nan -nan -nan -nan -nan -nan -nan -66 + Bin 24: -66 -nan -nan -nan -nan -nan -nan -nan -nan -nan -65 + Bin 25: -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -64 + Bin 26: -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -63 + Bin 27: -63 -nan -nan -nan -nan -nan -nan -nan -nan -nan -62 + Bin 28: -62 -61.0796 -61.0796 -61.0796 -61.0796 -61.0796 -61.0796 -61.0796 -61.0796 -61.0796 -61 + Bin 29: -61 -nan -nan -nan -nan -nan -nan -nan -nan -nan -60 + Bin 30: -60 -nan -nan -nan -nan -nan -nan -nan -nan -nan -59 + Bin 31: -59 -nan -nan -nan -nan -nan -nan -nan -nan -nan -58 + Bin 32: -58 -nan -nan -nan -nan -nan -nan -nan -nan -nan -57 + Bin 33: -57 -nan -nan -nan -nan -nan -nan -nan -nan -nan -56 + Bin 34: -56 -nan -nan -nan -nan -nan -nan -nan -nan -nan -55 + Bin 35: -55 -55 -55 -55 -55 -55 -55 -55 -55 -53.8511 -54 + Bin 36: -54 -nan -nan -nan -nan -nan -nan -nan -nan -nan -53 + Bin 37: -53 -nan -nan -nan -nan -nan -nan -nan -nan -nan -52 + Bin 38: -52 -nan -nan -nan -nan -nan -nan -nan -nan -nan -51 + Bin 39: -51 -nan -nan -nan -nan -nan -nan -nan -nan -nan -50 + Bin 40: -50 -nan -nan -nan -nan -nan -nan -nan -nan -nan -49 + Bin 41: -49 -nan -nan -nan -nan -nan -nan -nan -nan -nan -48 + Bin 42: -48 -48 -48 -48 -48 -48 -48 -48 -48 -48 -47 + Bin 43: -47 -46.5446 -46.5446 -46.5446 -46.5446 -46.5446 -46.5446 -46.5446 -46.5446 -46.5446 -46 + Bin 44: -46 -46 -46 -46 -46 -46 -46 -46 -46 -46 -45 + Bin 45: -45 -44.1475 -44.1475 -44.1475 -44.1475 -44.1475 -44.1475 -44.1475 -44.1475 -44.1475 -44 + Bin 46: -44 -nan -nan -nan -nan -nan -nan -nan -nan -nan -43 + Bin 47: -43 -nan -nan -nan -nan -nan -nan -nan -nan -nan -42 + Bin 48: -42 -nan -nan -nan -nan -nan -nan -nan -nan -nan -41 + Bin 49: -41 -nan -nan -nan -nan -nan -nan -nan -nan -nan -40 + Bin 50: -40 -nan -nan -nan -nan -nan -nan -nan -nan -nan -39 + Bin 51: -39 -nan -nan -nan -nan -nan -nan -nan -nan -nan -38 + Bin 52: -38 -38 -38 -38 -38 -38 -38 -37.5052 -37.5052 -37.5052 -37 + Bin 53: -37 -35.9697 -35.9697 -35.9697 -35.9697 -35.9697 -35.9697 -35.9697 -35.9697 -35.9697 -36 + Bin 54: -36 -nan -nan -nan -nan -nan -nan -nan -nan -nan -35 + Bin 55: -35 -nan -nan -nan -nan -nan -nan -nan -nan -nan -34 + Bin 56: -34 -32.921 -32.921 -32.921 -32.921 -32.921 -32.921 -32.921 -32.921 -32.921 -33 + Bin 57: -33 -31.9159 -31.9159 -31.9159 -31.9159 -31.9159 -31.9159 -31.9159 -31.9159 -31.9159 -32 + Bin 58: -32 -32 -32 -31.4809 -31.4809 -31.4809 -31.4809 -31.4809 -31.4809 -31.4809 -31 + Bin 59: -31 -31 -31 -31 -31 -31 -31 -31 -31 -31 -30 + Bin 60: -30 -30 -30 -30 -30 -30 -30 -30 -30 -30 -29 + Bin 61: -29 -28.684 -28.684 -28.684 -28.3567 -28.3567 -28.3567 -28.3567 -28.3567 -28.0085 -28 + Bin 62: -28 -27.0588 -27.0588 -27.0588 -27.0588 -27.0588 -27.0588 -27.0588 -27.0588 -27.0588 -27 + Bin 63: -27 -nan -nan -nan -nan -nan -nan -nan -nan -nan -26 + Bin 64: -26 -26 -26 -26 -26 -26 -26 -26 -26 -26 -25 + Bin 65: -25 -25 -23.9538 -23.9538 -23.9538 -23.9538 -23.9538 -23.9538 -23.9538 -23.9538 -24 + Bin 66: -24 -22.9343 -22.9343 -22.9343 -22.9343 -22.9343 -22.9343 -22.9343 -22.9343 -22.9343 -23 + Bin 67: -23 -23 -23 -22.4845 -22.4845 -22.4845 -22.4845 -22.4845 -22.4845 -22.4845 -22 + Bin 68: -22 -nan -nan -nan -nan -nan -nan -nan -nan -nan -21 + Bin 69: -21 -21 -21 -21 -21 -21 -21 -21 -21 -21 -20 + Bin 70: -20 -18.8572 -18.8572 -18.8572 -18.8572 -18.8572 -18.8572 -18.8572 -18.8572 -18.8572 -19 + Bin 71: -19 -nan -nan -nan -nan -nan -nan -nan -nan -nan -18 + Bin 72: -18 -18 -18 -18 -18 -18 -18 -18 -17.9343 -17.5736 -17 + Bin 73: -17 -16.9093 -16.7925 -16.6436 -16.4967 -16.3814 -16.2812 -16.1997 -16.1331 -16.0664 -16 + Bin 74: -16 -15.8996 -15.771 -15.6138 -15.4739 -15.3553 -15.2599 -15.1847 -15.1224 -15.0621 -15 + Bin 75: -15 -14.9119 -14.7993 -14.6576 -14.5108 -14.3979 -14.2945 -14.2134 -14.1456 -14.0777 -14 + Bin 76: -14 -13.8925 -13.7556 -13.5958 -13.4623 -13.3457 -13.2545 -13.184 -13.1262 -13.0649 -13 + Bin 77: -13 -12.9055 -12.7852 -12.6333 -12.4864 -12.3635 -12.2632 -12.1846 -12.1223 -12.0637 -12 + Bin 78: -12 -11.904 -11.7823 -11.6312 -11.4917 -11.3665 -11.269 -11.1921 -11.1311 -11.0685 -11 + Bin 79: -11 -10.9062 -10.7844 -10.6303 -10.4903 -10.3647 -10.2686 -10.1907 -10.1281 -10.0686 -10 + Bin 80: -10 -9.90477 -9.7802 -9.62938 -9.49175 -9.36658 -9.27029 -9.19344 -9.13071 -9.07003 -9 + Bin 81: -9 -8.90352 -8.78125 -8.63192 -8.49636 -8.37387 -8.27782 -8.20241 -8.13963 -8.07415 -8 + Bin 82: -8 -7.90377 -7.77786 -7.62852 -7.49138 -7.36879 -7.27433 -7.19821 -7.1358 -7.07424 -7 + Bin 83: -7 -6.90236 -6.77718 -6.62903 -6.4895 -6.36617 -6.27139 -6.19612 -6.13458 -6.07285 -6 + Bin 84: -6 -5.9094 -5.78952 -5.64554 -5.50931 -5.38754 -5.29407 -5.21908 -5.1539 -5.08373 -5 + Bin 85: -5 -4.88776 -4.7457 -4.59997 -4.45926 -4.35024 -4.26638 -4.20014 -4.14316 -4.0788 -4 + Bin 86: -4 -3.89856 -3.76337 -3.61039 -3.46405 -3.34465 -3.25622 -3.18753 -3.13165 -3.07143 -3 + Bin 87: -3 -2.90278 -2.77549 -2.63254 -2.48044 -2.35545 -2.26093 -2.18727 -2.12957 -2.07008 -2 + Bin 88: -2 -1.90995 -1.7905 -1.6474 -1.49421 -1.36478 -1.26779 -1.19339 -1.13347 -1.07152 -1 + Bin 89: -1 -0.898894 -0.766998 -0.623931 -0.471273 -0.347686 -0.255657 -0.183578 -0.124558 -0.0669651 0 + Bin 90: 0 0.0910526 0.214435 0.361014 0.514038 0.640597 0.735545 0.809501 0.869549 0.929295 1 + Bin 91: 1 1.09981 1.22883 1.37433 1.53338 1.65902 1.75275 1.82329 1.88018 1.93554 2 + Bin 92: 2 2.08378 2.19699 2.33487 2.48759 2.62073 2.72253 2.80205 2.86482 2.92498 3 + Bin 93: 3 3.09238 3.21177 3.35161 3.50762 3.6327 3.7277 3.80224 3.86382 3.92349 4 + Bin 94: 4 4.09336 4.21234 4.35004 4.50615 4.63263 4.7274 4.80139 4.86129 4.92265 5 + Bin 95: 5 5.09414 5.21492 5.35983 5.51688 5.64035 5.73415 5.80725 5.86536 5.92508 6 + Bin 96: 6 6.09299 6.21245 6.35588 6.51519 6.63967 6.73257 6.80601 6.86575 6.92434 7 + Bin 97: 7 7.09746 7.21721 7.36457 7.52014 7.64071 7.73214 7.80269 7.86043 7.91944 8 + Bin 98: 8 8.09648 8.21531 8.37234 8.53033 8.65154 8.741 8.81098 8.86693 8.92291 9 + Bin 99: 9 9.08961 9.19963 9.34016 9.4985 9.62483 9.71834 9.79211 9.85161 9.91498 10 + Bin 100: 10 10.1029 10.2211 10.385 10.5354 10.6493 10.7344 10.8001 10.8548 10.9143 11 + Bin 101: 11 11.0946 11.212 11.3612 11.5136 11.6303 11.7198 11.7902 11.8495 11.9123 12 + Bin 102: 12 12.103 12.2272 12.3882 12.534 12.6457 12.7303 12.7959 12.8504 12.9103 13 + Bin 103: 13 13.0932 13.1996 13.3442 13.4936 13.6157 13.7125 13.7885 13.8495 13.9106 14 + Bin 104: 14 14.088 14.189 14.3352 14.4855 14.6085 14.7055 14.782 14.8439 14.9075 15 + Bin 105: 15 15.089 15.1884 15.3297 15.4819 15.6132 15.7162 15.7949 15.8596 15.9128 16 + Bin 106: 16 16.0945 16.2029 16.3544 16.5167 16.6508 16.7597 16.8433 16.9032 16.9361 17 + Bin 107: 17 17.2166 17.4861 17.7626 17.8635 17.8819 17.8895 17.8947 17.8981 17.8981 18 + Bin 108: 18 18 18 18 18 18 18 18 18 18 19 + Bin 109: 19 19 19.2222 19.2222 19.2222 19.2222 19.2222 19.2222 19.2222 19.2222 20 + Bin 110: 20 20.1338 20.1338 20.1338 20.1338 20.1338 20.1338 20.1338 20.1338 20.1338 21 + Bin 111: 21 -nan -nan -nan -nan -nan -nan -nan -nan -nan 22 + Bin 112: 22 22.9253 22.9253 22.9253 22.9253 22.9253 22.9253 22.9253 22.9253 22.9253 23 + Bin 113: 23 23 23 23 23 23 23 23 24.0578 24.0578 24 + Bin 114: 24 -nan -nan -nan -nan -nan -nan -nan -nan -nan 25 + Bin 115: 25 25.4829 25.4829 25.4829 25.4829 25.4829 25.4829 25.4829 25.9929 25.9929 26 + Bin 116: 26 -nan -nan -nan -nan -nan -nan -nan -nan -nan 27 + Bin 117: 27 -nan -nan -nan -nan -nan -nan -nan -nan -nan 28 + Bin 118: 28 28 28 28 28.9848 28.9848 28.9848 28.9848 28.9848 28.9848 29 + Bin 119: 29 -nan -nan -nan -nan -nan -nan -nan -nan -nan 30 + Bin 120: 30 30 30 30 30 30 30 30 30 30 31 + Bin 121: 31 31 31 31 31 31 31 31 31 31.951 32 + Bin 122: 32 32 32 32 32 32 32 32 32.9689 32.9689 33 + Bin 123: 33 -nan -nan -nan -nan -nan -nan -nan -nan -nan 34 + Bin 124: 34 34.5 34.5 34.5 34.5 34.5 34.5 34.5 34.5 34.5 35 + Bin 125: 35 -nan -nan -nan -nan -nan -nan -nan -nan -nan 36 + Bin 126: 36 36 36 36 36 36 36 36 36 36 37 + Bin 127: 37 37.3333 37.6667 38 38 38 38 38 38 38 38 + Bin 128: 38 -nan -nan -nan -nan -nan -nan -nan -nan -nan 39 + Bin 129: 39 -nan -nan -nan -nan -nan -nan -nan -nan -nan 40 + Bin 130: 40 -nan -nan -nan -nan -nan -nan -nan -nan -nan 41 + Bin 131: 41 -nan -nan -nan -nan -nan -nan -nan -nan -nan 42 + Bin 132: 42 42 42 42 42 42 42 42 43.0544 43.0544 43 + Bin 133: 43 44 44 44 44 44 44 44 44 44 44 + Bin 134: 44 -nan -nan -nan -nan -nan -nan -nan -nan -nan 45 + Bin 135: 45 45 45 45 45 45 46 46 46 46 46 + Bin 136: 46 -nan -nan -nan -nan -nan -nan -nan -nan -nan 47 + Bin 137: 47 -nan -nan -nan -nan -nan -nan -nan -nan -nan 48 + Bin 138: 48 -nan -nan -nan -nan -nan -nan -nan -nan -nan 49 + Bin 139: 49 50.0709 50.0709 50.0709 50.0709 50.0709 50.0709 50.0709 50.0709 50.0709 50 + Bin 140: 50 50 50 50 50.5098 50.5098 50.5098 50.5098 50.5098 50.5098 51 + Bin 141: 51 -nan -nan -nan -nan -nan -nan -nan -nan -nan 52 + Bin 142: 52 52 53.037 53.037 53.037 53.037 53.037 53.037 53.037 53.037 53 + Bin 143: 53 53 53 53 53 53 53 53 53 53 54 + Bin 144: 54 54 54 54 54 54 54 54 54 54.4856 55 + Bin 145: 55 55 55 55 55 55 55 55 55 55.4867 56 + Bin 146: 56 57.0097 57.0097 57.0097 57.0097 57.0097 57.0097 57.0097 57.0097 57.0097 57 + Bin 147: 57 -nan -nan -nan -nan -nan -nan -nan -nan -nan 58 + Bin 148: 58 58.3333 58.3333 58.3333 58.3333 58.3333 58.3333 58.3333 58.3333 58.6667 59 + Bin 149: 59 -nan -nan -nan -nan -nan -nan -nan -nan -nan 60 + Bin 150: 60 60 60 60 60 60 60 60.4992 60.4992 60.4992 61 + Bin 151: 61 61 61 61 61 61 61 61 61 61 62 + Bin 152: 62 62 62.9863 62.9863 62.9863 62.9863 62.9863 62.9863 62.9863 62.9863 63 + Bin 153: 63 63.2454 63.2454 63.4929 63.4929 63.4929 63.4929 63.4929 63.7455 63.7455 64 + Bin 154: 64 64 64.9851 64.9851 64.9851 64.9851 64.9851 64.9851 64.9851 64.9851 65 + Bin 155: 65 -nan -nan -nan -nan -nan -nan -nan -nan -nan 66 + Bin 156: 66 -nan -nan -nan -nan -nan -nan -nan -nan -nan 67 + Bin 157: 67 67 67 67 67 67 67 67 67 67 68 + Bin 158: 68 68.9771 68.9771 68.9771 68.9771 68.9771 68.9771 68.9771 68.9771 68.9771 69 + Bin 159: 69 69 69 69 69 69 69 70.0083 70.0083 70.0083 70 + Bin 160: 70 -nan -nan -nan -nan -nan -nan -nan -nan -nan 71 + Bin 161: 71 -nan -nan -nan -nan -nan -nan -nan -nan -nan 72 + Bin 162: 72 -nan -nan -nan -nan -nan -nan -nan -nan -nan 73 + Bin 163: 73 73 73 73.9827 73.9827 73.9827 73.9827 73.9827 73.9827 73.9827 74 + Bin 164: 74 74.4718 74.9471 74.9471 74.9471 74.9471 74.9471 74.9471 74.9471 74.9471 75 + Bin 165: 75 -nan -nan -nan -nan -nan -nan -nan -nan -nan 76 + Bin 166: 76 -nan -nan -nan -nan -nan -nan -nan -nan -nan 77 + Bin 167: 77 -nan -nan -nan -nan -nan -nan -nan -nan -nan 78 + Bin 168: 78 -nan -nan -nan -nan -nan -nan -nan -nan -nan 79 + Bin 169: 79 -nan -nan -nan -nan -nan -nan -nan -nan -nan 80 + Bin 170: 80 81.2 81.2 81.2 81.2 81.2 81.2 81.2 81.2 81.2 81 + Bin 171: 81 81 81 81 81 81 81 81 81 81.9136 82 + Bin 172: 82 -nan -nan -nan -nan -nan -nan -nan -nan -nan 83 + Bin 173: 83 83.3416 83.6768 83.6768 83.6768 83.6768 83.6768 83.6768 83.6768 83.6768 84 + Bin 174: 84 85 85 85 85 85 85 85 85 85 85 + Bin 175: 85 86 86 86 86 86 86 86 86 86 86 + Bin 176: 86 86.5 86.5 86.5 86.5 86.5 86.5 86.5 87 87 87 + Bin 177: 87 88 88 88 88 88 88 88 88 88 88 + Bin 178: 88 88 88 88 88 88 88 88 88 88 89 + Bin 179: 89 89 89 89 89 90 90 90 90 90 90 + +Det 2: + Bin 0: -90 -nan -nan -nan -nan -nan -nan -nan -nan -nan -89 + Bin 1: -89 -nan -nan -nan -nan -nan -nan -nan -nan -nan -88 + Bin 2: -88 -nan -nan -nan -nan -nan -nan -nan -nan -nan -87 + Bin 3: -87 -nan -nan -nan -nan -nan -nan -nan -nan -nan -86 + Bin 4: -86 -nan -nan -nan -nan -nan -nan -nan -nan -nan -85 + Bin 5: -85 -nan -nan -nan -nan -nan -nan -nan -nan -nan -84 + Bin 6: -84 -nan -nan -nan -nan -nan -nan -nan -nan -nan -83 + Bin 7: -83 -nan -nan -nan -nan -nan -nan -nan -nan -nan -82 + Bin 8: -82 -nan -nan -nan -nan -nan -nan -nan -nan -nan -81 + Bin 9: -81 -nan -nan -nan -nan -nan -nan -nan -nan -nan -80 + Bin 10: -80 -nan -nan -nan -nan -nan -nan -nan -nan -nan -79 + Bin 11: -79 -nan -nan -nan -nan -nan -nan -nan -nan -nan -78 + Bin 12: -78 -nan -nan -nan -nan -nan -nan -nan -nan -nan -77 + Bin 13: -77 -nan -nan -nan -nan -nan -nan -nan -nan -nan -76 + Bin 14: -76 -nan -nan -nan -nan -nan -nan -nan -nan -nan -75 + Bin 15: -75 -nan -nan -nan -nan -nan -nan -nan -nan -nan -74 + Bin 16: -74 -nan -nan -nan -nan -nan -nan -nan -nan -nan -73 + Bin 17: -73 -nan -nan -nan -nan -nan -nan -nan -nan -nan -72 + Bin 18: -72 -nan -nan -nan -nan -nan -nan -nan -nan -nan -71 + Bin 19: -71 -nan -nan -nan -nan -nan -nan -nan -nan -nan -70 + Bin 20: -70 -nan -nan -nan -nan -nan -nan -nan -nan -nan -69 + Bin 21: -69 -nan -nan -nan -nan -nan -nan -nan -nan -nan -68 + Bin 22: -68 -nan -nan -nan -nan -nan -nan -nan -nan -nan -67 + Bin 23: -67 -nan -nan -nan -nan -nan -nan -nan -nan -nan -66 + Bin 24: -66 -nan -nan -nan -nan -nan -nan -nan -nan -nan -65 + Bin 25: -65 -nan -nan -nan -nan -nan -nan -nan -nan -nan -64 + Bin 26: -64 -nan -nan -nan -nan -nan -nan -nan -nan -nan -63 + Bin 27: -63 -61.8085 -61.8085 -61.8085 -61.8085 -61.8085 -61.8085 -61.8085 -61.8085 -61.8085 -62 + Bin 28: -62 -nan -nan -nan -nan -nan -nan -nan -nan -nan -61 + Bin 29: -61 -61 -61 -61 -61 -61 -61 -61 -61 -60.0276 -60 + Bin 30: -60 -60 -60 -58.9828 -58.9828 -58.9828 -58.9828 -58.9828 -58.9828 -58.9828 -59 + Bin 31: -59 -59 -59 -59 -59 -59 -59 -59 -59 -59 -58 + Bin 32: -58 -58 -58 -58 -57.4955 -57.4955 -57.4955 -57.4955 -57.4955 -57.4955 -57 + Bin 33: -57 -55.9689 -55.9689 -55.9689 -55.9689 -55.9689 -55.9689 -55.9689 -55.9689 -55.9689 -56 + Bin 34: -56 -nan -nan -nan -nan -nan -nan -nan -nan -nan -55 + Bin 35: -55 -nan -nan -nan -nan -nan -nan -nan -nan -nan -54 + Bin 36: -54 -54 -53.3057 -53.3057 -52.9666 -52.9666 -52.9666 -52.9666 -52.9666 -52.9666 -53 + Bin 37: -53 -52.4759 -52.4759 -52.4759 -52.4759 -51.9734 -51.9734 -51.9734 -51.9734 -51.9734 -52 + Bin 38: -52 -52 -51.4935 -51.4935 -51.4935 -51.4935 -51.4935 -51.4935 -51.4935 -50.9995 -51 + Bin 39: -51 -nan -nan -nan -nan -nan -nan -nan -nan -nan -50 + Bin 40: -50 -50 -50 -50 -50 -50 -50 -50 -50 -50 -49 + Bin 41: -49 -nan -nan -nan -nan -nan -nan -nan -nan -nan -48 + Bin 42: -48 -48 -48 -48 -48 -48 -48 -48 -47.5035 -47.5035 -47 + Bin 43: -47 -47 -47 -47 -47 -47 -47 -46.502 -46.502 -46.0067 -46 + Bin 44: -46 -46 -46 -46 -46 -46 -46 -46 -46 -45.6697 -45 + Bin 45: -45 -45 -45 -45 -44.749 -44.749 -44.749 -44.749 -44.749 -44.5013 -44 + Bin 46: -44 -44 -44 -44 -44 -44 -44 -44 -43.0062 -43.0062 -43 + Bin 47: -43 -43 -43 -42.5069 -42.5069 -42.5069 -42.5069 -42.5069 -42.5069 -42.5069 -42 + Bin 48: -42 -nan -nan -nan -nan -nan -nan -nan -nan -nan -41 + Bin 49: -41 -40.5122 -40.0218 -40.0218 -40.0218 -40.0218 -40.0218 -40.0218 -40.0218 -40.0218 -40 + Bin 50: -40 -40 -40 -40 -40 -40 -40 -40 -38.985 -38.985 -39 + Bin 51: -39 -38.5103 -38.5103 -38.5103 -38.0115 -38.0115 -38.0115 -38.0115 -38.0115 -38.0115 -38 + Bin 52: -38 -38 -38 -38 -38 -38 -38 -37.0131 -37.0131 -37.0131 -37 + Bin 53: -37 -36.654 -36.654 -36.654 -36.654 -36.3193 -36.3193 -36.3193 -35.9926 -35.9926 -36 + Bin 54: -36 -35.4825 -35.4825 -35.4825 -35.4825 -34.9806 -34.9806 -34.9806 -34.9806 -34.9806 -35 + Bin 55: -35 -35 -35 -33.9822 -33.9822 -33.9822 -33.9822 -33.9822 -33.9822 -33.9822 -34 + Bin 56: -34 -34 -34 -34 -34 -34 -34 -33.6443 -33.6443 -33.6443 -33 + Bin 57: -33 -32.4903 -32.0342 -32.0342 -32.0342 -32.0342 -32.0342 -32.0342 -31.7546 -31.7546 -32 + Bin 58: -32 -31.1712 -31.1712 -31.1712 -31.1712 -31.1712 -30.845 -30.845 -30.845 -30.845 -31 + Bin 59: -31 -31 -30.6271 -30.6271 -30.6271 -30.6271 -30.6271 -30.6271 -30.6271 -30.0244 -30 + Bin 60: -30 -30 -28.9007 -28.9007 -28.9007 -28.9007 -28.9007 -28.9007 -28.9007 -28.9007 -29 + Bin 61: -29 -28.9999 -28.9624 -28.8811 -28.7758 -28.6933 -28.556 -28.3804 -28.2152 -28.1179 -28 + Bin 62: -28 -27.9176 -27.8468 -27.7735 -27.6989 -27.6078 -27.5157 -27.3604 -27.2005 -27.102 -27 + Bin 63: -27 -26.8914 -26.8127 -26.7414 -26.6668 -26.5905 -26.4766 -26.3251 -26.181 -26.0921 -26 + Bin 64: -26 -25.9051 -25.8217 -25.7398 -25.6579 -25.5788 -25.4574 -25.3055 -25.1655 -25.0751 -25 + Bin 65: -25 -24.9191 -24.8452 -24.7644 -24.6814 -24.5943 -24.4765 -24.3155 -24.1673 -24.0735 -24 + Bin 66: -24 -23.9241 -23.8556 -23.7784 -23.6945 -23.6148 -23.5249 -23.3714 -23.2081 -23.094 -23 + Bin 67: -23 -22.9064 -22.8269 -22.7431 -22.6646 -22.5925 -22.4754 -22.3188 -22.1725 -22.0767 -22 + Bin 68: -22 -21.9193 -21.8497 -21.7721 -21.6906 -21.6261 -21.5066 -21.3416 -21.1865 -21.0945 -21 + Bin 69: -21 -20.911 -20.8311 -20.7458 -20.6599 -20.5792 -20.4538 -20.2987 -20.1671 -20.0899 -20 + Bin 70: -20 -19.9182 -19.8448 -19.7633 -19.6785 -19.6122 -19.4898 -19.3273 -19.1808 -19.0964 -19 + Bin 71: -19 -18.9115 -18.8384 -18.7632 -18.6798 -18.6167 -18.5172 -18.3609 -18.2012 -18.0961 -18 + Bin 72: -18 -17.9117 -17.8346 -17.7506 -17.6627 -17.5943 -17.4747 -17.319 -17.1844 -17.0981 -17 + Bin 73: -17 -16.913 -16.8387 -16.7582 -16.668 -16.5951 -16.4951 -16.3386 -16.1912 -16.0967 -16 + Bin 74: -16 -15.9125 -15.8397 -15.7608 -15.6745 -15.6061 -15.4843 -15.3212 -15.18 -15.0953 -15 + Bin 75: -15 -14.9169 -14.8431 -14.7617 -14.6875 -14.6125 -14.4875 -14.3308 -14.2086 -14.1112 -14 + Bin 76: -14 -13.9088 -13.8356 -13.7584 -13.6762 -13.606 -13.4999 -13.3446 -13.2048 -13.1103 -13 + Bin 77: -13 -12.9096 -12.8331 -12.7524 -12.6729 -12.603 -12.4827 -12.3242 -12.1951 -12.1038 -12 + Bin 78: -12 -11.9097 -11.8366 -11.7631 -11.6887 -11.6173 -11.512 -11.3612 -11.2072 -11.1035 -11 + Bin 79: -11 -10.9122 -10.8401 -10.7667 -10.6871 -10.6126 -10.515 -10.3694 -10.2159 -10.1143 -10 + Bin 80: -10 -9.89558 -9.81322 -9.73384 -9.65334 -9.5786 -9.47323 -9.33475 -9.19018 -9.09442 -9 + Bin 81: -9 -8.90964 -8.83167 -8.74922 -8.65916 -8.58248 -8.46622 -8.32419 -8.18197 -8.09389 -8 + Bin 82: -8 -7.91219 -7.83657 -7.75524 -7.66845 -7.58576 -7.46445 -7.3084 -7.17851 -7.09356 -7 + Bin 83: -7 -6.91348 -6.84031 -6.76161 -6.67622 -6.59833 -6.48717 -6.34714 -6.1992 -6.10355 -6 + Bin 84: -6 -5.90442 -5.82642 -5.74547 -5.65698 -5.5787 -5.47111 -5.33877 -5.19452 -5.10342 -5 + Bin 85: -5 -4.9079 -4.83119 -4.75167 -4.66368 -4.58882 -4.47277 -4.33334 -4.18655 -4.09318 -4 + Bin 86: -4 -3.91218 -3.83819 -3.76003 -3.67495 -3.60562 -3.48526 -3.34603 -3.20505 -3.10823 -3 + Bin 87: -3 -2.90282 -2.8246 -2.74641 -2.66685 -2.5939 -2.46913 -2.33269 -2.20822 -2.10528 -2 + Bin 88: -2 -1.90834 -1.83447 -1.76092 -1.69045 -1.60789 -1.47704 -1.3354 -1.19581 -1.10189 -1 + Bin 89: -1 -0.910406 -0.840067 -0.772716 -0.713136 -0.629419 -0.499965 -0.350137 -0.209121 -0.110338 0 + Bin 90: 0 0.0938932 0.169767 0.244189 0.324285 0.392429 0.510517 0.658711 0.786208 0.887527 1 + Bin 91: 1 1.09366 1.16685 1.23688 1.2984 1.3873 1.52037 1.66782 1.78945 1.89067 2 + Bin 92: 2 2.09606 2.17253 2.24593 2.31035 2.39751 2.52962 2.67398 2.77872 2.88929 3 + Bin 93: 3 3.09276 3.16591 3.23448 3.30274 3.38659 3.5158 3.66788 3.78295 3.88868 4 + Bin 94: 4 4.09933 4.17714 4.25305 4.31713 4.40826 4.54088 4.68968 4.79858 4.89467 5 + Bin 95: 5 5.09351 5.17035 5.24786 5.31992 5.39948 5.53124 5.68421 5.79833 5.89445 6 + Bin 96: 6 6.09336 6.16735 6.24219 6.31621 6.39163 6.51527 6.67019 6.78812 6.89453 7 + Bin 97: 7 7.10098 7.17839 7.24891 7.3136 7.4062 7.53442 7.68531 7.80466 7.8954 8 + Bin 98: 8 8.08644 8.15567 8.22468 8.29423 8.36483 8.48249 8.63871 8.78684 8.88776 9 + Bin 99: 9 9.10277 9.1814 9.25312 9.31748 9.40566 9.53578 9.6827 9.79146 9.89229 10 + Bin 100: 10 10.0957 10.1702 10.2406 10.3066 10.3971 10.5313 10.6872 10.8037 10.8953 11 + Bin 101: 11 11.0901 11.166 11.2384 11.303 11.3975 11.5353 11.6903 11.7971 11.8978 12 + Bin 102: 12 12.0958 12.1693 12.2378 12.2996 12.3891 12.517 12.6703 12.8035 12.8931 13 + Bin 103: 13 13.0951 13.1745 13.2553 13.3261 13.4103 13.5426 13.6942 13.8141 13.8989 14 + Bin 104: 14 14.0915 14.1569 14.217 14.2703 14.3406 14.4587 14.6138 14.7762 14.8918 15 + Bin 105: 15 15.1144 15.201 15.2713 15.3352 15.4372 15.5669 15.7068 15.8136 15.9004 16 + Bin 106: 16 16.0889 16.1634 16.2416 16.3131 16.3921 16.5262 16.6846 16.8114 16.9053 17 + Bin 107: 17 17.0904 17.1644 17.2367 17.2984 17.4023 17.5451 17.6943 17.8009 17.9044 18 + Bin 108: 18 18.092 18.1607 18.22 18.2799 18.3839 18.5226 18.6786 18.8032 18.9075 19 + Bin 109: 19 19.0867 19.1581 19.2305 19.2865 19.3791 19.5143 19.6745 19.8014 19.9045 20 + Bin 110: 20 20.0904 20.1561 20.216 20.2681 20.3358 20.454 20.6079 20.7595 20.8865 21 + Bin 111: 21 21.102 21.1751 21.2276 21.2841 21.3805 21.5038 21.6475 21.776 21.8899 22 + Bin 112: 22 22.0808 22.1505 22.22 22.2788 22.3654 22.4984 22.6604 22.7922 22.9055 23 + Bin 113: 23 23.0861 23.1537 23.2077 23.2673 23.3738 23.5077 23.6593 23.7739 23.8992 24 + Bin 114: 24 24.1166 24.2022 24.2774 24.3514 24.4449 24.5784 24.7345 24.8675 24.9435 25 + Bin 115: 25 25.227 25.3308 25.4016 25.4886 25.5735 25.6643 25.7519 25.8345 25.9145 26 + Bin 116: 26 26.2032 26.3744 26.4817 26.605 26.7012 26.7734 26.858 26.8977 26.9214 27 + Bin 117: 27 27.2965 27.4002 27.4002 27.5151 27.6365 27.7653 27.7653 27.7653 27.7653 28 + Bin 118: 28 28 28 28.1843 28.1843 28.1843 28.1843 28.1843 28.1843 28.6837 29 + Bin 119: 29 29.0919 29.0919 29.0919 29.0919 29.0919 29.0919 29.0919 29.0919 37.9242 30 + Bin 120: 30 30.2434 30.4883 30.4883 30.4883 30.4883 30.4883 30.4883 30.4883 30.7437 31 + Bin 121: 31 31.243 31.243 31.243 31.243 31.4922 31.4922 31.4922 31.4922 31.7479 32 + Bin 122: 32 32 32.2442 32.2442 32.2442 32.2442 32.495 32.495 32.495 32.495 33 + Bin 123: 33 33.2423 33.7304 33.7304 33.7304 33.7304 33.7304 33.7304 33.985 33.985 34 + Bin 124: 34 34.3258 34.3258 34.3258 34.4912 34.8237 34.9908 34.9908 34.9908 34.9908 35 + Bin 125: 35 35 35.4907 35.4907 35.4907 35.4907 35.4907 35.4907 35.4907 35.4907 36 + Bin 126: 36 36.4874 36.4874 36.4874 36.7353 36.7353 36.7353 36.7353 36.7353 36.9904 37 + Bin 127: 37 37 37 37 37 37 37 37.5046 37.5046 37.76 38 + Bin 128: 38 38 38 38 38 38 38 38 38 38 39 + Bin 129: 39 39 39.4913 39.985 39.985 39.985 39.985 39.985 39.985 39.985 40 + Bin 130: 40 40 40 40.1645 40.3298 40.496 40.6631 40.6631 40.8321 40.8321 41 + Bin 131: 41 41.4876 41.4876 41.4876 41.4876 41.4876 41.4876 41.4876 41.9948 41.9948 42 + Bin 132: 42 42 42 42 42 42 42 43.0136 43.0136 43.0136 43 + Bin 133: 43 43 43 43 44.0059 44.0059 44.0059 44.0059 44.0059 44.0059 44 + Bin 134: 44 44.3391 44.6769 44.6769 45.0121 45.0121 45.0121 45.0121 45.0121 45.0121 45 + Bin 135: 45 45.6777 45.6777 45.6777 45.6777 45.6777 45.6777 45.6777 45.6777 46.0069 46 + Bin 136: 46 46 46.2531 46.5053 46.5053 46.5053 46.5053 46.754 46.754 46.754 47 + Bin 137: 47 47.9825 47.9825 47.9825 47.9825 47.9825 47.9825 47.9825 47.9825 47.9825 48 + Bin 138: 48 48 48 48 48 48 48 48.3371 48.3371 48.3371 49 + Bin 139: 49 49 49.1945 49.1945 49.3921 49.3921 49.3921 49.3921 49.5962 49.8021 50 + Bin 140: 50 50 50 50 50 50 50 50 50 50 51 + Bin 141: 51 51 51 51 51 51 51 51 52.0245 52.0245 52 + Bin 142: 52 -nan -nan -nan -nan -nan -nan -nan -nan -nan 53 + Bin 143: 53 53.7321 53.7321 53.7321 53.7321 53.7321 53.7321 53.7321 53.7321 53.7321 54 + Bin 144: 54 54.2437 54.4888 54.4888 54.4888 54.4888 54.7395 54.7395 54.7395 54.7395 55 + Bin 145: 55 -nan -nan -nan -nan -nan -nan -nan -nan -nan 56 + Bin 146: 56 -nan -nan -nan -nan -nan -nan -nan -nan -nan 57 + Bin 147: 57 57 57 57 57 57 57 57 57.9855 57.9855 58 + Bin 148: 58 58.6837 58.6837 58.6837 58.6837 58.6837 58.6837 58.6837 58.6837 58.6837 59 + Bin 149: 59 59 59 59 59 59 59 59 59 59 60 + Bin 150: 60 60.508 60.508 60.508 60.508 60.508 60.508 60.508 61.0022 61.0022 61 + Bin 151: 61 61.318 61.318 61.318 61.318 61.318 61.318 61.318 61.318 61.318 62 + Bin 152: 62 62 62 62.9708 62.9708 62.9708 62.9708 62.9708 62.9708 62.9708 63 + Bin 153: 63 63.9421 63.9421 63.9421 63.9421 63.9421 63.9421 63.9421 63.9421 63.9421 64 + Bin 154: 64 64 64 64 64 64.9922 64.9922 64.9922 64.9922 64.9922 65 + Bin 155: 65 65 65 65 65 65 65 65 65 66.0036 66 + Bin 156: 66 -nan -nan -nan -nan -nan -nan -nan -nan -nan 67 + Bin 157: 67 67 67.5 67.5 67.5 67.5 67.5 67.5 67.5 67.5 68 + Bin 158: 68 68 68 68 68 68 68 68 68 68 69 + Bin 159: 69 69 69 69 69 69 69 69 70.0009 70.0009 70 + Bin 160: 70 70 70 70 70 70 70 70 70 70 71 + Bin 161: 71 71 71 71 71 71 71 72.0408 72.0408 72.0408 72 + Bin 162: 72 72 72 72.9187 72.9187 72.9187 72.9187 72.9187 72.9187 72.9187 73 + Bin 163: 73 -nan -nan -nan -nan -nan -nan -nan -nan -nan 74 + Bin 164: 74 -nan -nan -nan -nan -nan -nan -nan -nan -nan 75 + Bin 165: 75 -nan -nan -nan -nan -nan -nan -nan -nan -nan 76 + Bin 166: 76 -nan -nan -nan -nan -nan -nan -nan -nan -nan 77 + Bin 167: 77 -nan -nan -nan -nan -nan -nan -nan -nan -nan 78 + Bin 168: 78 -nan -nan -nan -nan -nan -nan -nan -nan -nan 79 + Bin 169: 79 -nan -nan -nan -nan -nan -nan -nan -nan -nan 80 + Bin 170: 80 -nan -nan -nan -nan -nan -nan -nan -nan -nan 81 + Bin 171: 81 -nan -nan -nan -nan -nan -nan -nan -nan -nan 82 + Bin 172: 82 -nan -nan -nan -nan -nan -nan -nan -nan -nan 83 + Bin 173: 83 -nan -nan -nan -nan -nan -nan -nan -nan -nan 84 + Bin 174: 84 -nan -nan -nan -nan -nan -nan -nan -nan -nan 85 + Bin 175: 85 -nan -nan -nan -nan -nan -nan -nan -nan -nan 86 + Bin 176: 86 -nan -nan -nan -nan -nan -nan -nan -nan -nan 87 + Bin 177: 87 -nan -nan -nan -nan -nan -nan -nan -nan -nan 88 + Bin 178: 88 -nan -nan -nan -nan -nan -nan -nan -nan -nan 89 + Bin 179: 89 -nan -nan -nan -nan -nan -nan -nan -nan -nan 90 + +Det 3: + Bin 0: -90 -90 -90 -90 -90 -90 -90 -90 -90 -88.9402 -89 + Bin 1: -89 -nan -nan -nan -nan -nan -nan -nan -nan -nan -88 + Bin 2: -88 -nan -nan -nan -nan -nan -nan -nan -nan -nan -87 + Bin 3: -87 -nan -nan -nan -nan -nan -nan -nan -nan -nan -86 + Bin 4: -86 -nan -nan -nan -nan -nan -nan -nan -nan -nan -85 + Bin 5: -85 -nan -nan -nan -nan -nan -nan -nan -nan -nan -84 + Bin 6: -84 -nan -nan -nan -nan -nan -nan -nan -nan -nan -83 + Bin 7: -83 -nan -nan -nan -nan -nan -nan -nan -nan -nan -82 + Bin 8: -82 -nan -nan -nan -nan -nan -nan -nan -nan -nan -81 + Bin 9: -81 -nan -nan -nan -nan -nan -nan -nan -nan -nan -80 + Bin 10: -80 -nan -nan -nan -nan -nan -nan -nan -nan -nan -79 + Bin 11: -79 -nan -nan -nan -nan -nan -nan -nan -nan -nan -78 + Bin 12: -78 -nan -nan -nan -nan -nan -nan -nan -nan -nan -77 + Bin 13: -77 -nan -nan -nan -nan -nan -nan -nan -nan -nan -76 + Bin 14: -76 -nan -nan -nan -nan -nan -nan -nan -nan -nan -75 + Bin 15: -75 -nan -nan -nan -nan -nan -nan -nan -nan -nan -74 + Bin 16: -74 -73.6667 -73.6667 -73.6667 -73.6667 -73.6667 -73.6667 -73.6667 -73.6667 -73.3333 -73 + Bin 17: -73 -73 -73 -73 -73 -73 -73 -73 -73 -73 -72 + Bin 18: -72 -nan -nan -nan -nan -nan -nan -nan -nan -nan -71 + Bin 19: -71 -nan -nan -nan -nan -nan -nan -nan -nan -nan -70 + Bin 20: -70 -69.7678 -69.5356 -69.5356 -69.5356 -69.5356 -69.2837 -69.2837 -69.2837 -69.0123 -69 + Bin 21: -69 -nan -nan -nan -nan -nan -nan -nan -nan -nan -68 + Bin 22: -68 -nan -nan -nan -nan -nan -nan -nan -nan -nan -67 + Bin 23: -67 -nan -nan -nan -nan -nan -nan -nan -nan -nan -66 + Bin 24: -66 -nan -nan -nan -nan -nan -nan -nan -nan -nan -65 + Bin 25: -65 -nan -nan -nan -nan -nan -nan -nan -nan -nan -64 + Bin 26: -64 -nan -nan -nan -nan -nan -nan -nan -nan -nan -63 + Bin 27: -63 -nan -nan -nan -nan -nan -nan -nan -nan -nan -62 + Bin 28: -62 -62 -62 -62 -62 -62 -62 -62 -62 -62 -61 + Bin 29: -61 -61 -61 -61 -61 -61 -61 -61 -61 -61 -60 + Bin 30: -60 -nan -nan -nan -nan -nan -nan -nan -nan -nan -59 + Bin 31: -59 -nan -nan -nan -nan -nan -nan -nan -nan -nan -58 + Bin 32: -58 -nan -nan -nan -nan -nan -nan -nan -nan -nan -57 + Bin 33: -57 -nan -nan -nan -nan -nan -nan -nan -nan -nan -56 + Bin 34: -56 -54.8269 -54.8269 -54.8269 -54.8269 -54.8269 -54.8269 -54.8269 -54.8269 -54.8269 -55 + Bin 35: -55 -nan -nan -nan -nan -nan -nan -nan -nan -nan -54 + Bin 36: -54 -nan -nan -nan -nan -nan -nan -nan -nan -nan -53 + Bin 37: -53 -53 -51.9386 -51.9386 -51.9386 -51.9386 -51.9386 -51.9386 -51.9386 -51.9386 -52 + Bin 38: -52 -52 -52 -52 -52 -52 -52 -52 -52 -52 -51 + Bin 39: -51 -51 -51 -51 -51 -51 -51 -51 -51 -51 -50 + Bin 40: -50 -50 -50 -50 -50 -50 -50 -50 -50 -50 -49 + Bin 41: -49 -49 -47.9787 -47.9787 -47.9787 -47.9787 -47.9787 -47.9787 -47.9787 -47.9787 -48 + Bin 42: -48 -48 -48 -48 -48 -48 -47.0053 -47.0053 -47.0053 -47.0053 -47 + Bin 43: -47 -nan -nan -nan -nan -nan -nan -nan -nan -nan -46 + Bin 44: -46 -46 -46 -46 -46 -46 -46 -45 -45 -45 -45 + Bin 45: -45 -nan -nan -nan -nan -nan -nan -nan -nan -nan -44 + Bin 46: -44 -44 -43.5 -43.5 -43.5 -43.5 -43.5 -43.5 -43.5 -43.5 -43 + Bin 47: -43 -43 -43 -43 -43 -43 -43 -43 -43 -43 -42 + Bin 48: -42 -nan -nan -nan -nan -nan -nan -nan -nan -nan -41 + Bin 49: -41 -nan -nan -nan -nan -nan -nan -nan -nan -nan -40 + Bin 50: -40 -40 -38.9707 -38.9707 -38.9707 -38.9707 -38.9707 -38.9707 -38.9707 -38.9707 -39 + Bin 51: -39 -38.6573 -38.6573 -38.3199 -38.3199 -38.3199 -38.3199 -38.3199 -38.3199 -38.3199 -38 + Bin 52: -38 -38 -38 -38 -38 -38 -38 -38 -36.9799 -36.9799 -37 + Bin 53: -37 -37 -37 -37 -37 -37 -37 -37 -37 -35.9692 -36 + Bin 54: -36 -nan -nan -nan -nan -nan -nan -nan -nan -nan -35 + Bin 55: -35 -35 -35 -35 -35 -35 -35 -35 -35 -35 -34 + Bin 56: -34 1500.91 1500.91 1500.91 1500.91 1500.91 1500.91 1500.91 1500.91 1501.16 -33 + Bin 57: -33 -nan -nan -nan -nan -nan -nan -nan -nan -nan -32 + Bin 58: -32 -32 -32 -32 -32 -32 -32 -31.968 -31.7757 -31.5273 -31 + Bin 59: -31 -30.8823 -30.6848 -30.5048 -30.3913 -30.3126 -30.253 -30.1987 -30.1292 -30.0601 -30 + Bin 60: -30 -29.8906 -29.6938 -29.4966 -29.3795 -29.2947 -29.2299 -29.1812 -29.1216 -29.0568 -29 + Bin 61: -29 -28.8881 -28.6848 -28.4837 -28.362 -28.2748 -28.2091 -28.1492 -28.0998 -28.0425 -28 + Bin 62: -28 -27.895 -27.7032 -27.5075 -27.3846 -27.3013 -27.2355 -27.1808 -27.1266 -27.0612 -27 + Bin 63: -27 -26.8955 -26.7053 -26.5123 -26.3928 -26.3094 -26.2456 -26.1927 -26.134 -26.0677 -26 + Bin 64: -26 -25.8902 -25.6884 -25.506 -25.3906 -25.3091 -25.2455 -25.1888 -25.1358 -25.0702 -25 + Bin 65: -25 -24.8894 -24.6836 -24.4888 -24.3783 -24.3005 -24.2412 -24.1894 -24.1387 -24.0753 -24 + Bin 66: -24 -23.8954 -23.7009 -23.504 -23.3901 -23.3119 -23.2509 -23.2006 -23.1456 -23.0804 -23 + Bin 67: -23 -22.8873 -22.6846 -22.4959 -22.3851 -22.3057 -22.2435 -22.19 -22.1413 -22.0781 -22 + Bin 68: -22 -21.8868 -21.6862 -21.4869 -21.3739 -21.2946 -21.2352 -21.1883 -21.1363 -21.0744 -21 + Bin 69: -21 -20.8938 -20.7 -20.5039 -20.3901 -20.312 -20.2497 -20.1964 -20.1447 -20.0794 -20 + Bin 70: -20 -19.8798 -19.6708 -19.481 -19.3731 -19.297 -19.2384 -19.1882 -19.1397 -19.0768 -19 + Bin 71: -19 -18.8869 -18.6754 -18.4678 -18.3591 -18.2861 -18.2308 -18.1866 -18.1351 -18.0751 -18 + Bin 72: -18 -17.8876 -17.6916 -17.4961 -17.3822 -17.3009 -17.2397 -17.1869 -17.1383 -17.0768 -17 + Bin 73: -17 -16.8814 -16.6791 -16.4725 -16.3639 -16.2888 -16.2321 -16.1826 -16.1347 -16.0753 -16 + Bin 74: -16 -15.8856 -15.6819 -15.4772 -15.369 -15.2927 -15.2345 -15.1839 -15.1376 -15.0781 -15 + Bin 75: -15 -14.8876 -14.702 -14.4946 -14.3841 -14.3068 -14.2473 -14.2006 -14.1477 -14.084 -14 + Bin 76: -14 -13.8805 -13.6845 -13.4813 -13.3693 -13.2928 -13.2337 -13.1851 -13.1391 -13.0797 -13 + Bin 77: -13 -12.887 -12.6796 -12.4621 -12.3534 -12.2818 -12.2273 -12.1833 -12.1349 -12.0761 -12 + Bin 78: -12 -11.8841 -11.6956 -11.4829 -11.3662 -11.2873 -11.2283 -11.1786 -11.1327 -11.0752 -11 + Bin 79: -11 -10.886 -10.6927 -10.4787 -10.366 -10.2891 -10.2324 -10.1839 -10.1359 -10.0742 -10 + Bin 80: -10 -9.87691 -9.66361 -9.45801 -9.35267 -9.27937 -9.22454 -9.1804 -9.13152 -9.07233 -9 + Bin 81: -9 -8.88568 -8.69231 -8.47037 -8.35041 -8.27051 -8.21054 -8.16286 -8.12077 -8.06579 -8 + Bin 82: -8 -7.88896 -7.69131 -7.47276 -7.36187 -7.28721 -7.23166 -7.1884 -7.13731 -7.07637 -7 + Bin 83: -7 -6.87748 -6.67175 -6.46457 -6.35669 -6.28261 -6.2274 -6.18075 -6.13615 -6.0778 -6 + Bin 84: -6 -5.88686 -5.68075 -5.46317 -5.35297 -5.27816 -5.22359 -5.17977 -5.13231 -5.07589 -5 + Bin 85: -5 -4.88418 -4.68 -4.46654 -4.35861 -4.28561 -4.23156 -4.18496 -4.13828 -4.07861 -4 + Bin 86: -4 -3.88258 -3.66858 -3.45526 -3.34474 -3.27175 -3.21822 -3.17396 -3.1311 -3.07529 -3 + Bin 87: -3 -2.88499 -2.66966 -2.45763 -2.35315 -2.28287 -2.22955 -2.18613 -2.13818 -2.07842 -2 + Bin 88: -2 -1.88193 -1.67947 -1.48315 -1.37228 -1.29519 -1.23695 -1.18861 -1.13824 -1.07612 -1 + Bin 89: -1 -0.879525 -0.676274 -0.476634 -0.363601 -0.283688 -0.223241 -0.173715 -0.127139 -0.06959 0 + Bin 90: 0 0.111655 0.304528 0.498738 0.615067 0.696343 0.757693 0.806458 0.85941 0.923039 1 + Bin 91: 1 1.11665 1.32171 1.52191 1.63368 1.71124 1.77074 1.81766 1.86675 1.92698 2 + Bin 92: 2 2.10971 2.30657 2.4998 2.61544 2.69693 2.75845 2.80763 2.85825 2.91915 3 + Bin 93: 3 3.1125 3.31305 3.5021 3.61588 3.69645 3.75786 3.8079 3.85583 3.91739 4 + Bin 94: 4 4.11369 4.32316 4.51585 4.6283 4.70603 4.76635 4.81457 4.8623 4.92102 5 + Bin 95: 5 5.10937 5.29914 5.48906 5.60444 5.68599 5.7487 5.79723 5.8499 5.91439 6 + Bin 96: 6 6.11618 6.31932 6.50719 6.62268 6.70437 6.76646 6.81593 6.86309 6.92187 7 + Bin 97: 7 7.11023 7.31393 7.50919 7.62486 7.70572 7.7656 7.81272 7.86253 7.92316 8 + Bin 98: 8 8.11466 8.31252 8.49952 8.61302 8.69366 8.75515 8.80426 8.85429 8.91717 9 + Bin 99: 9 9.1186 9.34394 9.5377 9.64685 9.72301 9.77919 9.82319 9.86871 9.92551 10 + Bin 100: 10 10.1101 10.3117 10.5162 10.6334 10.7141 10.7739 10.8226 10.8675 10.9251 11 + Bin 101: 11 11.113 11.3231 11.5199 11.6284 11.7035 11.7611 11.8057 11.8533 11.9123 12 + Bin 102: 12 12.1117 12.3127 12.4978 12.6076 12.6849 12.7431 12.7907 12.8432 12.9071 13 + Bin 103: 13 13.1229 13.3261 13.4953 13.5993 13.6743 13.732 13.7778 13.8298 13.8978 14 + Bin 104: 14 14.134 14.3695 14.5425 14.6436 14.712 14.762 14.8027 14.8489 14.9081 15 + Bin 105: 15 15.1082 15.2993 15.5025 15.6127 15.6948 15.7564 15.8043 15.8509 15.9096 16 + Bin 106: 16 16.1219 16.3364 16.5348 16.641 16.7151 16.771 16.8154 16.8597 16.9151 17 + Bin 107: 17 17.1126 17.3134 17.5152 17.6241 17.7027 17.7607 17.8064 17.854 17.9127 18 + Bin 108: 18 18.1174 18.3202 18.512 18.62 18.6979 18.7566 18.8025 18.8508 18.9104 19 + Bin 109: 19 19.1142 19.3136 19.5262 19.6317 19.7127 19.772 19.8168 19.8614 19.9169 20 + Bin 110: 20 20.108 20.3064 20.5108 20.618 20.696 20.7542 20.8004 20.8483 20.9084 21 + Bin 111: 21 21.1194 21.3109 21.5014 21.6006 21.6782 21.7381 21.7865 21.8368 21.901 22 + Bin 112: 22 22.1255 22.3452 22.5417 22.638 22.7105 22.7647 22.8071 22.851 22.9081 23 + Bin 113: 23 23.1096 23.3003 23.5129 23.6157 23.6933 23.7506 23.7977 23.8433 23.9022 24 + Bin 114: 24 24.1136 24.3183 24.5229 24.6223 24.6967 24.7527 24.7963 24.8431 24.9013 25 + Bin 115: 25 25.1086 25.298 25.4967 25.6 25.6803 25.7386 25.7866 25.8344 25.8963 26 + Bin 116: 26 26.1136 26.3074 26.4968 26.5937 26.6685 26.7259 26.7727 26.8225 26.8871 27 + Bin 117: 27 27.1182 27.3185 27.5165 27.6191 27.6911 27.7496 27.7963 27.8375 27.8913 28 + Bin 118: 28 28.1156 28.3081 28.5572 28.7072 28.7997 28.8676 28.9161 28.9161 28.9161 29 + Bin 119: 29 29 29 29 29 29 29 29 29.536 30.0859 30 + Bin 120: 30 30 30.9014 30.9014 30.9014 30.9014 30.9014 30.9014 30.9014 30.9014 31 + Bin 121: 31 -nan -nan -nan -nan -nan -nan -nan -nan -nan 32 + Bin 122: 32 -nan -nan -nan -nan -nan -nan -nan -nan -nan 33 + Bin 123: 33 33.377 33.377 33.377 33.377 33.377 33.377 33.377 33.377 33.377 34 + Bin 124: 34 -nan -nan -nan -nan -nan -nan -nan -nan -nan 35 + Bin 125: 35 35 35 35 35 35 35 35 35 35.9474 36 + Bin 126: 36 -nan -nan -nan -nan -nan -nan -nan -nan -nan 37 + Bin 127: 37 38.0573 38.0573 38.0573 38.0573 38.0573 38.0573 38.0573 38.0573 38.0573 38 + Bin 128: 38 38 38.4659 38.9345 38.9345 38.9345 38.9345 38.9345 38.9345 38.9345 39 + Bin 129: 39 39 39 39 39 39 39 39 39 40.1228 40 + Bin 130: 40 -nan -nan -nan -nan -nan -nan -nan -nan -nan 41 + Bin 131: 41 -nan -nan -nan -nan -nan -nan -nan -nan -nan 42 + Bin 132: 42 -nan -nan -nan -nan -nan -nan -nan -nan -nan 43 + Bin 133: 43 -nan -nan -nan -nan -nan -nan -nan -nan -nan 44 + Bin 134: 44 -nan -nan -nan -nan -nan -nan -nan -nan -nan 45 + Bin 135: 45 -nan -nan -nan -nan -nan -nan -nan -nan -nan 46 + Bin 136: 46 46 46 46 46 46 46 46 46 46 47 + Bin 137: 47 -nan -nan -nan -nan -nan -nan -nan -nan -nan 48 + Bin 138: 48 48 48 48 48 48 48 48 48 48.9431 49 + Bin 139: 49 -nan -nan -nan -nan -nan -nan -nan -nan -nan 50 + Bin 140: 50 50.3537 50.3537 50.3537 50.3537 50.6892 50.6892 50.6892 50.6892 51.0082 51 + Bin 141: 51 -nan -nan -nan -nan -nan -nan -nan -nan -nan 52 + Bin 142: 52 52 52 52.4742 52.4742 52.9689 52.9689 52.9689 52.9689 52.9689 53 + Bin 143: 53 53 53 53 53 53 53 53 53 54.1077 54 + Bin 144: 54 -nan -nan -nan -nan -nan -nan -nan -nan -nan 55 + Bin 145: 55 55 55.8205 55.8205 55.8205 55.8205 55.8205 55.8205 55.8205 55.8205 56 + Bin 146: 56 -nan -nan -nan -nan -nan -nan -nan -nan -nan 57 + Bin 147: 57 -nan -nan -nan -nan -nan -nan -nan -nan -nan 58 + Bin 148: 58 58 58 58 58 58 58 58 58 58.4507 59 + Bin 149: 59 60.12 60.12 60.12 60.12 60.12 60.12 60.12 60.12 60.12 60 + Bin 150: 60 60.5417 60.5417 60.5417 60.5417 60.5417 60.5417 60.5417 61.019 61.019 61 + Bin 151: 61 61 61 61 61 61 61 61 61 61 62 + Bin 152: 62 -nan -nan -nan -nan -nan -nan -nan -nan -nan 63 + Bin 153: 63 -nan -nan -nan -nan -nan -nan -nan -nan -nan 64 + Bin 154: 64 64 64 64 64 64 64 64 64 64.5077 65 + Bin 155: 65 65 65 65 65 65 65 65 65.5004 65.5004 66 + Bin 156: 66 67 67 67 67 67 67 67 67 67 67 + Bin 157: 67 67 67 67 67 67 67.3333 67.3333 67.3333 67.6667 68 + Bin 158: 68 -nan -nan -nan -nan -nan -nan -nan -nan -nan 69 + Bin 159: 69 69.994 69.994 69.994 69.994 69.994 69.994 69.994 69.994 69.994 70 + Bin 160: 70 -nan -nan -nan -nan -nan -nan -nan -nan -nan 71 + Bin 161: 71 71.9268 71.9268 71.9268 71.9268 71.9268 71.9268 71.9268 71.9268 71.9268 72 + Bin 162: 72 72 72 72 72 72 72 72 73.0562 73.0562 73 + Bin 163: 73 -nan -nan -nan -nan -nan -nan -nan -nan -nan 74 + Bin 164: 74 74 74 74 74 74 74 74.9926 74.9926 74.9926 75 + Bin 165: 75 -nan -nan -nan -nan -nan -nan -nan -nan -nan 76 + Bin 166: 76 -nan -nan -nan -nan -nan -nan -nan -nan -nan 77 + Bin 167: 77 -nan -nan -nan -nan -nan -nan -nan -nan -nan 78 + Bin 168: 78 -nan -nan -nan -nan -nan -nan -nan -nan -nan 79 + Bin 169: 79 79 79 79 79.9754 79.9754 79.9754 79.9754 79.9754 79.9754 80 + Bin 170: 80 80 80 80 80 80 80 80 80 80 81 + Bin 171: 81 -nan -nan -nan -nan -nan -nan -nan -nan -nan 82 + Bin 172: 82 -nan -nan -nan -nan -nan -nan -nan -nan -nan 83 + Bin 173: 83 84.3458 84.3458 84.3458 84.3458 84.3458 84.3458 84.3458 84.3458 84.3458 84 + Bin 174: 84 -nan -nan -nan -nan -nan -nan -nan -nan -nan 85 + Bin 175: 85 -nan -nan -nan -nan -nan -nan -nan -nan -nan 86 + Bin 176: 86 86 86 86 86 86 86 86 86.9419 86.9419 87 + Bin 177: 87 87 87 87 87 87 87 87 87.4764 87.4764 88 + Bin 178: 88 89.0804 89.0804 89.0804 89.0804 89.0804 89.0804 89.0804 89.0804 89.0804 89 + Bin 179: 89 -nan -nan -nan -nan -nan -nan -nan -nan -nan 90 + +Det 4: + Bin 0: -90 -nan -nan -nan -nan -nan -nan -nan -nan -nan -89 + Bin 1: -89 -nan -nan -nan -nan -nan -nan -nan -nan -nan -88 + Bin 2: -88 -nan -nan -nan -nan -nan -nan -nan -nan -nan -87 + Bin 3: -87 -nan -nan -nan -nan -nan -nan -nan -nan -nan -86 + Bin 4: -86 -nan -nan -nan -nan -nan -nan -nan -nan -nan -85 + Bin 5: -85 -nan -nan -nan -nan -nan -nan -nan -nan -nan -84 + Bin 6: -84 -nan -nan -nan -nan -nan -nan -nan -nan -nan -83 + Bin 7: -83 -nan -nan -nan -nan -nan -nan -nan -nan -nan -82 + Bin 8: -82 -nan -nan -nan -nan -nan -nan -nan -nan -nan -81 + Bin 9: -81 -nan -nan -nan -nan -nan -nan -nan -nan -nan -80 + Bin 10: -80 -nan -nan -nan -nan -nan -nan -nan -nan -nan -79 + Bin 11: -79 -nan -nan -nan -nan -nan -nan -nan -nan -nan -78 + Bin 12: -78 -nan -nan -nan -nan -nan -nan -nan -nan -nan -77 + Bin 13: -77 -nan -nan -nan -nan -nan -nan -nan -nan -nan -76 + Bin 14: -76 -nan -nan -nan -nan -nan -nan -nan -nan -nan -75 + Bin 15: -75 -nan -nan -nan -nan -nan -nan -nan -nan -nan -74 + Bin 16: -74 -nan -nan -nan -nan -nan -nan -nan -nan -nan -73 + Bin 17: -73 -nan -nan -nan -nan -nan -nan -nan -nan -nan -72 + Bin 18: -72 -nan -nan -nan -nan -nan -nan -nan -nan -nan -71 + Bin 19: -71 -nan -nan -nan -nan -nan -nan -nan -nan -nan -70 + Bin 20: -70 -nan -nan -nan -nan -nan -nan -nan -nan -nan -69 + Bin 21: -69 -nan -nan -nan -nan -nan -nan -nan -nan -nan -68 + Bin 22: -68 -nan -nan -nan -nan -nan -nan -nan -nan -nan -67 + Bin 23: -67 -67 -67 -67 -67 -65.9846 -65.9846 -65.9846 -65.9846 -65.9846 -66 + Bin 24: -66 -nan -nan -nan -nan -nan -nan -nan -nan -nan -65 + Bin 25: -65 -nan -nan -nan -nan -nan -nan -nan -nan -nan -64 + Bin 26: -64 -nan -nan -nan -nan -nan -nan -nan -nan -nan -63 + Bin 27: -63 -63 -63 -63 -63 -63 -63 -62.0337 -62.0337 -62.0337 -62 + Bin 28: -62 -62 -62 -62 -62 -62 -62 -62 -62 -62 -61 + Bin 29: -61 -61 -61 -61 -61 -61 -61 -61 -60.0272 -60.0272 -60 + Bin 30: -60 -nan -nan -nan -nan -nan -nan -nan -nan -nan -59 + Bin 31: -59 -57.9585 -57.9585 -57.9585 -57.9585 -57.9585 -57.9585 -57.9585 -57.9585 -57.9585 -58 + Bin 32: -58 -58 -56.9707 -56.9707 -56.9707 -56.9707 -56.9707 -56.9707 -56.9707 -56.9707 -57 + Bin 33: -57 -57 -57 -57 -57 -57 -57 -57 -57 -57 -56 + Bin 34: -56 -55.0169 -55.0169 -55.0169 -55.0169 -55.0169 -55.0169 -55.0169 -55.0169 -55.0169 -55 + Bin 35: -55 -55 -55 -55 -55 -55 -55 -55 -55 -55 -54 + Bin 36: -54 -nan -nan -nan -nan -nan -nan -nan -nan -nan -53 + Bin 37: -53 -53 -53 -53 -53 -53 -53 -53 -53 -52.4923 -52 + Bin 38: -52 -52 -52 -52 -52 -50.7232 -50.7232 -50.7232 -50.7232 -50.7232 -51 + Bin 39: -51 -51 -50.3163 -50.3163 -50.3163 -50.3163 -50.3163 -50.3163 -50.3163 -50.3163 -50 + Bin 40: -50 -nan -nan -nan -nan -nan -nan -nan -nan -nan -49 + Bin 41: -49 -49 -49 -49 -49 -49 -49 -49 -48.0704 -48.0704 -48 + Bin 42: -48 -48 -48 -48 -46.7634 -46.7634 -46.7634 -46.7634 -46.7634 -46.7634 -47 + Bin 43: -47 -46.5563 -46.5563 -46.2263 -46.2263 -46.2263 -46.2263 -46.2263 -46.2263 -46.2263 -46 + Bin 44: -46 -46 -46 -46 -45.9999 -45.9999 -45.9999 -45.9999 -45.7728 -45.4874 -45 + Bin 45: -45 -44.8593 -44.722 -44.5328 -44.4004 -44.3077 -44.2506 -44.2097 -44.1519 -44.0726 -44 + Bin 46: -44 -43.8532 -43.7057 -43.5285 -43.3923 -43.2861 -43.2247 -43.182 -43.1412 -43.071 -43 + Bin 47: -43 -42.8618 -42.7197 -42.5458 -42.4154 -42.316 -42.2525 -42.21 -42.1651 -42.0959 -42 + Bin 48: -42 -41.8723 -41.7304 -41.5707 -41.4382 -41.3398 -41.2729 -41.2271 -41.1813 -41.1085 -41 + Bin 49: -41 -40.8627 -40.7159 -40.5621 -40.4333 -40.3283 -40.2596 -40.2145 -40.1718 -40.1031 -40 + Bin 50: -40 -39.8696 -39.7279 -39.5738 -39.4437 -39.3402 -39.2654 -39.2168 -39.1715 -39.1055 -39 + Bin 51: -39 -38.8615 -38.7034 -38.5518 -38.4236 -38.3177 -38.2508 -38.204 -38.1579 -38.0939 -38 + Bin 52: -38 -37.867 -37.7307 -37.5733 -37.4456 -37.3386 -37.2713 -37.2246 -37.1788 -37.1035 -37 + Bin 53: -37 -36.8532 -36.7022 -36.5458 -36.4148 -36.3114 -36.2445 -36.1957 -36.1507 -36.089 -36 + Bin 54: -36 -35.8678 -35.7132 -35.5596 -35.4342 -35.3262 -35.2549 -35.2071 -35.1609 -35.0977 -35 + Bin 55: -35 -34.855 -34.6975 -34.5538 -34.4233 -34.3199 -34.2491 -34.197 -34.1559 -34.0967 -34 + Bin 56: -34 -33.864 -33.7073 -33.5604 -33.4319 -33.3269 -33.2551 -33.2066 -33.1576 -33.0957 -33 + Bin 57: -33 -32.8604 -32.709 -32.5642 -32.4356 -32.3288 -32.2537 -32.1987 -32.1527 -32.0935 -32 + Bin 58: -32 -31.8615 -31.7071 -31.5675 -31.4375 -31.3294 -31.2538 -31.2018 -31.1507 -31.0917 -31 + Bin 59: -31 -30.8709 -30.7182 -30.583 -30.4584 -30.3463 -30.2622 -30.1991 -30.145 -30.0874 -30 + Bin 60: -30 -29.86 -29.696 -29.5578 -29.4209 -29.3126 -29.2368 -29.1815 -29.1327 -29.08 -29 + Bin 61: -29 -28.87 -28.7144 -28.5653 -28.436 -28.3255 -28.2518 -28.196 -28.1494 -28.0892 -28 + Bin 62: -28 -27.8589 -27.705 -27.5645 -27.4305 -27.321 -27.2455 -27.1918 -27.1379 -27.0813 -27 + Bin 63: -27 -26.8739 -26.7202 -26.5774 -26.4428 -26.3315 -26.2541 -26.2022 -26.1574 -26.0924 -26 + Bin 64: -26 -25.8559 -25.7036 -25.5871 -25.4528 -25.3418 -25.2612 -25.201 -25.1503 -25.0904 -25 + Bin 65: -25 -24.8677 -24.7157 -24.5801 -24.4609 -24.3432 -24.2575 -24.196 -24.1467 -24.0856 -24 + Bin 66: -24 -23.8575 -23.7026 -23.5734 -23.443 -23.3324 -23.2496 -23.1908 -23.1342 -23.0727 -23 + Bin 67: -23 -22.8788 -22.7144 -22.5655 -22.4427 -22.3412 -22.2694 -22.2115 -22.1585 -22.0952 -22 + Bin 68: -22 -21.8609 -21.6978 -21.5603 -21.424 -21.314 -21.2382 -21.1779 -21.129 -21.0784 -21 + Bin 69: -21 -20.8669 -20.7055 -20.5576 -20.4301 -20.3234 -20.2486 -20.1954 -20.1405 -20.0777 -20 + Bin 70: -20 -19.8659 -19.7022 -19.5555 -19.4229 -19.3138 -19.237 -19.1782 -19.1218 -19.0641 -19 + Bin 71: -19 -18.8744 -18.7076 -18.5539 -18.4136 -18.304 -18.2289 -18.1768 -18.1289 -18.0733 -18 + Bin 72: -18 -17.8749 -17.7146 -17.5729 -17.4457 -17.335 -17.2507 -17.1883 -17.1321 -17.0684 -17 + Bin 73: -17 -16.8879 -16.7318 -16.5683 -16.4176 -16.3089 -16.2344 -16.1824 -16.136 -16.077 -16 + Bin 74: -16 -15.867 -15.712 -15.5756 -15.4468 -15.3449 -15.2725 -15.2147 -15.1552 -15.0938 -15 + Bin 75: -15 -14.862 -14.7004 -14.563 -14.4386 -14.3284 -14.2473 -14.1833 -14.1281 -14.0804 -14 + Bin 76: -14 -13.877 -13.7198 -13.5939 -13.4699 -13.3569 -13.2677 -13.1986 -13.1476 -13.0862 -13 + Bin 77: -13 -12.8595 -12.7057 -12.5851 -12.4575 -12.3445 -12.2569 -12.1927 -12.1395 -12.0779 -12 + Bin 78: -12 -11.8896 -11.7463 -11.6133 -11.4994 -11.3993 -11.3107 -11.2393 -11.1703 -11.0881 -11 + Bin 79: -11 -10.8817 -10.7255 -10.5832 -10.4682 -10.3666 -10.2822 -10.2175 -10.1545 -10.0822 -10 + Bin 80: -10 -9.88624 -9.71774 -9.57421 -9.45865 -9.35569 -9.26379 -9.18893 -9.13172 -9.07619 -9 + Bin 81: -9 -8.86778 -8.7108 -8.56036 -8.44597 -8.36193 -8.29446 -8.23759 -8.17238 -8.09289 -8 + Bin 82: -8 -7.89236 -7.7501 -7.59359 -7.45634 -7.35424 -7.27013 -7.2046 -7.14743 -7.07842 -7 + Bin 83: -7 -6.87672 -6.72141 -6.57006 -6.4507 -6.35804 -6.27868 -6.21009 -6.15171 -6.08282 -6 + Bin 84: -6 -5.88847 -5.73452 -5.59867 -5.48249 -5.3778 -5.29016 -5.22157 -5.1572 -5.08584 -5 + Bin 85: -5 -4.87464 -4.71861 -4.57586 -4.45404 -4.34983 -4.26209 -4.19454 -4.13814 -4.08033 -4 + Bin 86: -4 -3.88952 -3.73791 -3.60173 -3.47667 -3.37066 -3.27966 -3.20913 -3.14988 -3.08597 -3 + Bin 87: -3 -2.88106 -2.73913 -2.59333 -2.47183 -2.37255 -2.29396 -2.22945 -2.1615 -2.08998 -2 + Bin 88: -2 -1.8841 -1.73637 -1.58073 -1.45353 -1.3617 -1.28237 -1.21376 -1.1539 -1.08576 -1 + Bin 89: -1 -0.894672 -0.741525 -0.597867 -0.470745 -0.371971 -0.290421 -0.219583 -0.155613 -0.087713 0 + Bin 90: 0 0.124763 0.27279 0.420294 0.541229 0.633351 0.711622 0.775313 0.841917 0.914742 1 + Bin 91: 1 1.11687 1.27296 1.43298 1.55209 1.64578 1.72856 1.79737 1.8532 1.91869 2 + Bin 92: 2 2.11526 2.26467 2.41758 2.53773 2.63645 2.71998 2.78802 2.85033 2.91853 3 + Bin 93: 3 3.10676 3.23587 3.3873 3.50716 3.60323 3.68392 3.75213 3.82147 3.90128 4 + Bin 94: 4 4.1168 4.2562 4.41481 4.53853 4.63528 4.71074 4.77527 4.83688 4.90631 5 + Bin 95: 5 5.11355 5.25317 5.4089 5.53556 5.63213 5.71602 5.78783 5.84691 5.91683 6 + Bin 96: 6 6.11388 6.26436 6.42841 6.55276 6.6497 6.73266 6.80052 6.85525 6.91889 7 + Bin 97: 7 7.10132 7.24128 7.40484 7.52986 7.62757 7.71037 7.77779 7.84221 7.91281 8 + Bin 98: 8 8.11382 8.26977 8.42556 8.54127 8.63754 8.72097 8.78825 8.84984 8.91749 9 + Bin 99: 9 9.10439 9.25292 9.41836 9.53757 9.63304 9.71869 9.79124 9.85192 9.91749 10 + Bin 100: 10 10.1082 10.2512 10.414 10.5329 10.6247 10.7027 10.7728 10.8405 10.9125 11 + Bin 101: 11 11.1076 11.2603 11.4337 11.5489 11.6362 11.7131 11.7799 11.8417 11.9117 12 + Bin 102: 12 12.1075 12.2547 12.4278 12.5526 12.6484 12.7316 12.7986 12.8532 12.9185 13 + Bin 103: 13 13.1027 13.2455 13.4153 13.5379 13.6301 13.7123 13.7793 13.8431 13.9119 14 + Bin 104: 14 14.0979 14.2478 14.4147 14.5302 14.6155 14.6914 14.7585 14.8251 14.9011 15 + Bin 105: 15 15.1057 15.2704 15.4341 15.5413 15.6244 15.6991 15.765 15.8318 15.9064 16 + Bin 106: 16 16.1159 16.2887 16.4678 16.5791 16.6594 16.7334 16.7963 16.8518 16.9169 17 + Bin 107: 17 17.0964 17.2365 17.4144 17.5369 17.629 17.7095 17.7785 17.8426 17.9131 18 + Bin 108: 18 18.0939 18.2434 18.4172 18.5388 18.6268 18.7011 18.7667 18.8334 18.9073 19 + Bin 109: 19 19.1034 19.2521 19.4355 19.5595 19.6434 19.7199 19.7869 19.8452 19.9128 20 + Bin 110: 20 20.0985 20.2437 20.4347 20.5637 20.6463 20.719 20.788 20.8453 20.9119 21 + Bin 111: 21 21.0946 21.2655 21.4455 21.5545 21.636 21.7127 21.7779 21.8401 21.9106 22 + Bin 112: 22 22.0922 22.2351 22.4242 22.5484 22.6296 22.7048 22.7732 22.8392 22.9116 23 + Bin 113: 23 23.0935 23.2374 23.4244 23.5495 23.629 23.6988 23.7666 23.8296 23.9054 24 + Bin 114: 24 24.0931 24.239 24.443 24.5675 24.6444 24.7183 24.784 24.8439 24.9132 25 + Bin 115: 25 25.0839 25.2251 25.4082 25.5357 25.6136 25.6889 25.7597 25.8249 25.9035 26 + Bin 116: 26 26.0937 26.2547 26.4513 26.5694 26.6531 26.7182 26.7825 26.842 26.9133 27 + Bin 117: 27 27.0878 27.2397 27.438 27.5592 27.6359 27.7077 27.773 27.8383 27.9139 28 + Bin 118: 28 28.0862 28.2196 28.4229 28.5587 28.6455 28.7142 28.7835 28.8436 28.9155 29 + Bin 119: 29 29.0834 29.2508 29.4481 29.564 29.6358 29.7034 29.7668 29.8337 29.9104 30 + Bin 120: 30 30.0807 30.2379 30.438 30.5577 30.6317 30.7003 30.764 30.8301 30.907 31 + Bin 121: 31 31.083 31.2208 31.4226 31.5544 31.6295 31.6925 31.7563 31.8218 31.9049 32 + Bin 122: 32 32.0838 32.2491 32.444 32.5559 32.6283 32.6943 32.7589 32.8263 32.9047 33 + Bin 123: 33 33.0788 33.2313 33.4323 33.554 33.63 33.7033 33.7738 33.8347 33.9101 34 + Bin 124: 34 34.0727 34.2379 34.452 34.5745 34.6476 34.7171 34.7831 34.8472 34.9208 35 + Bin 125: 35 35.075 35.2315 35.4378 35.559 35.6304 35.6999 35.7643 35.8284 35.9062 36 + Bin 126: 36 36.0808 36.219 36.4291 36.5725 36.6455 36.7107 36.7773 36.8391 36.9127 37 + Bin 127: 37 37.0801 37.2235 37.4287 37.5662 37.6452 37.7098 37.7727 37.8339 37.9098 38 + Bin 128: 38 38.0815 38.2059 38.4121 38.5364 38.6151 38.6902 38.7577 38.8244 38.9025 39 + Bin 129: 39 39.0741 39.2105 39.4083 39.5476 39.6267 39.6926 39.758 39.8226 39.8981 40 + Bin 130: 40 40.0732 40.1924 40.3859 40.5376 40.6266 40.6849 40.7462 40.8091 40.8871 41 + Bin 131: 41 41.0887 41.1931 41.3747 41.5437 41.6458 41.7048 41.7596 41.8137 41.8883 42 + Bin 132: 42 42.1171 42.2276 42.3587 42.556 42.7408 42.8788 42.9563 42.9563 42.9563 43 + Bin 133: 43 43 43 43 43 43 43.5068 43.5068 43.5068 43.5068 44 + Bin 134: 44 44 44 44 44 44 44.5094 44.5094 44.5094 45.0839 45 + Bin 135: 45 45.1977 45.1977 45.1977 45.1977 45.1977 45.4553 45.7294 45.7294 46.0442 46 + Bin 136: 46 46 46 46 46 46 46 46 47.5546 47.5546 47 + Bin 137: 47 -nan -nan -nan -nan -nan -nan -nan -nan -nan 48 + Bin 138: 48 48 48 48 48 48 48 48 48.5 48.75 49 + Bin 139: 49 49.5 49.5 50 50 50 50 50 50 50 50 + Bin 140: 50 50 50.5 50.5 51 51 51 51 51 51 51 + Bin 141: 51 51 51 51 51 51 51 51 51 51 52 + Bin 142: 52 52 52.2368 52.4772 52.4772 52.4772 52.7292 52.7292 52.7292 52.994 53 + Bin 143: 53 53 53.3126 53.6308 53.6308 53.6308 53.6308 53.6308 53.9807 53.9807 54 + Bin 144: 54 54 54 54 54 54 54 54 54 54 55 + Bin 145: 55 -nan -nan -nan -nan -nan -nan -nan -nan -nan 56 + Bin 146: 56 56 57.0757 57.0757 57.0757 57.0757 57.0757 57.0757 57.0757 57.0757 57 + Bin 147: 57 57 57 57 57 57 57 57 57 57 58 + Bin 148: 58 58 58 58 58 58.5043 58.5043 58.5043 58.5043 58.9763 59 + Bin 149: 59 59 59.3511 59.3511 59.3511 59.6869 59.6869 59.6869 59.6869 60.0042 60 + Bin 150: 60 60 60 60.5105 60.5105 60.5105 60.5105 60.5105 60.9956 60.9956 61 + Bin 151: 61 -nan -nan -nan -nan -nan -nan -nan -nan -nan 62 + Bin 152: 62 62.3111 62.3111 62.3111 62.3111 62.6418 62.6418 62.6418 62.6418 62.6418 63 + Bin 153: 63 63.9217 63.9217 63.9217 63.9217 63.9217 63.9217 63.9217 63.9217 63.9217 64 + Bin 154: 64 64.9053 64.9053 64.9053 64.9053 64.9053 64.9053 64.9053 64.9053 64.9053 65 + Bin 155: 65 65 65 65 65 65 65.5028 65.5028 65.5028 65.5028 66 + Bin 156: 66 -nan -nan -nan -nan -nan -nan -nan -nan -nan 67 + Bin 157: 67 67 67 67 67 67 67.5 67.5 67.5 67.5 68 + Bin 158: 68 -nan -nan -nan -nan -nan -nan -nan -nan -nan 69 + Bin 159: 69 69 69 69 69 69 69 69 70.0006 70.0006 70 + Bin 160: 70 -nan -nan -nan -nan -nan -nan -nan -nan -nan 71 + Bin 161: 71 71 71 71 71 71 71 71 71 71 72 + Bin 162: 72 72.4662 72.4662 72.4662 72.4662 72.4662 72.4662 72.4662 72.9872 72.9872 73 + Bin 163: 73 -nan -nan -nan -nan -nan -nan -nan -nan -nan 74 + Bin 164: 74 -nan -nan -nan -nan -nan -nan -nan -nan -nan 75 + Bin 165: 75 -nan -nan -nan -nan -nan -nan -nan -nan -nan 76 + Bin 166: 76 -nan -nan -nan -nan -nan -nan -nan -nan -nan 77 + Bin 167: 77 -nan -nan -nan -nan -nan -nan -nan -nan -nan 78 + Bin 168: 78 -nan -nan -nan -nan -nan -nan -nan -nan -nan 79 + Bin 169: 79 -nan -nan -nan -nan -nan -nan -nan -nan -nan 80 + Bin 170: 80 -nan -nan -nan -nan -nan -nan -nan -nan -nan 81 + Bin 171: 81 -nan -nan -nan -nan -nan -nan -nan -nan -nan 82 + Bin 172: 82 -nan -nan -nan -nan -nan -nan -nan -nan -nan 83 + Bin 173: 83 -nan -nan -nan -nan -nan -nan -nan -nan -nan 84 + Bin 174: 84 -nan -nan -nan -nan -nan -nan -nan -nan -nan 85 + Bin 175: 85 -nan -nan -nan -nan -nan -nan -nan -nan -nan 86 + Bin 176: 86 -nan -nan -nan -nan -nan -nan -nan -nan -nan 87 + Bin 177: 87 -nan -nan -nan -nan -nan -nan -nan -nan -nan 88 + Bin 178: 88 -nan -nan -nan -nan -nan -nan -nan -nan -nan 89 + Bin 179: 89 -nan -nan -nan -nan -nan -nan -nan -nan -nan 90 + +Det 5: + Bin 0: -1000 -nan -nan -nan -nan -nan -nan -nan -nan -nan -999 + Bin 1: -999 -nan -nan -nan -nan -nan -nan -nan -nan -nan -998 + Bin 2: -998 -nan -nan -nan -nan -nan -nan -nan -nan -nan -997 + Bin 3: -997 -nan -nan -nan -nan -nan -nan -nan -nan -nan -996 + Bin 4: -996 -nan -nan -nan -nan -nan -nan -nan -nan -nan -995 + Bin 5: -995 -nan -nan -nan -nan -nan -nan -nan -nan -nan -994 + Bin 6: -994 -nan -nan -nan -nan -nan -nan -nan -nan -nan -993 + Bin 7: -993 -nan -nan -nan -nan -nan -nan -nan -nan -nan -992 + Bin 8: -992 -nan -nan -nan -nan -nan -nan -nan -nan -nan -991 + Bin 9: -991 -nan -nan -nan -nan -nan -nan -nan -nan -nan -990 + Bin 10: -990 -nan -nan -nan -nan -nan -nan -nan -nan -nan -989 + Bin 11: -989 -nan -nan -nan -nan -nan -nan -nan -nan -nan -988 + Bin 12: -988 -nan -nan -nan -nan -nan -nan -nan -nan -nan -987 + Bin 13: -987 -nan -nan -nan -nan -nan -nan -nan -nan -nan -986 + Bin 14: -986 -nan -nan -nan -nan -nan -nan -nan -nan -nan -985 + Bin 15: -985 -nan -nan -nan -nan -nan -nan -nan -nan -nan -984 + Bin 16: -984 -nan -nan -nan -nan -nan -nan -nan -nan -nan -983 + Bin 17: -983 -nan -nan -nan -nan -nan -nan -nan -nan -nan -982 + Bin 18: -982 -nan -nan -nan -nan -nan -nan -nan -nan -nan -981 + Bin 19: -981 -nan -nan -nan -nan -nan -nan -nan -nan -nan -980 + Bin 20: -980 -nan -nan -nan -nan -nan -nan -nan -nan -nan -979 + Bin 21: -979 -nan -nan -nan -nan -nan -nan -nan -nan -nan -978 + Bin 22: -978 -nan -nan -nan -nan -nan -nan -nan -nan -nan -977 + Bin 23: -977 -nan -nan -nan -nan -nan -nan -nan -nan -nan -976 + Bin 24: -976 -nan -nan -nan -nan -nan -nan -nan -nan -nan -975 + Bin 25: -975 -nan -nan -nan -nan -nan -nan -nan -nan -nan -974 + Bin 26: -974 -nan -nan -nan -nan -nan -nan -nan -nan -nan -973 + Bin 27: -973 -nan -nan -nan -nan -nan -nan -nan -nan -nan -972 + Bin 28: -972 -nan -nan -nan -nan -nan -nan -nan -nan -nan -971 + Bin 29: -971 -nan -nan -nan -nan -nan -nan -nan -nan -nan -970 + Bin 30: -970 -nan -nan -nan -nan -nan -nan -nan -nan -nan -969 + Bin 31: -969 -nan -nan -nan -nan -nan -nan -nan -nan -nan -968 + Bin 32: -968 -nan -nan -nan -nan -nan -nan -nan -nan -nan -967 + Bin 33: -967 -nan -nan -nan -nan -nan -nan -nan -nan -nan -966 + Bin 34: -966 -nan -nan -nan -nan -nan -nan -nan -nan -nan -965 + Bin 35: -965 -nan -nan -nan -nan -nan -nan -nan -nan -nan -964 + Bin 36: -964 -nan -nan -nan -nan -nan -nan -nan -nan -nan -963 + Bin 37: -963 -nan -nan -nan -nan -nan -nan -nan -nan -nan -962 + Bin 38: -962 -nan -nan -nan -nan -nan -nan -nan -nan -nan -961 + Bin 39: -961 -nan -nan -nan -nan -nan -nan -nan -nan -nan -960 + Bin 40: -960 -nan -nan -nan -nan -nan -nan -nan -nan -nan -959 + Bin 41: -959 -nan -nan -nan -nan -nan -nan -nan -nan -nan -958 + Bin 42: -958 -nan -nan -nan -nan -nan -nan -nan -nan -nan -957 + Bin 43: -957 -nan -nan -nan -nan -nan -nan -nan -nan -nan -956 + Bin 44: -956 -nan -nan -nan -nan -nan -nan -nan -nan -nan -955 + Bin 45: -955 -nan -nan -nan -nan -nan -nan -nan -nan -nan -954 + Bin 46: -954 -nan -nan -nan -nan -nan -nan -nan -nan -nan -953 + Bin 47: -953 -nan -nan -nan -nan -nan -nan -nan -nan -nan -952 + Bin 48: -952 -nan -nan -nan -nan -nan -nan -nan -nan -nan -951 + Bin 49: -951 -nan -nan -nan -nan -nan -nan -nan -nan -nan -950 + Bin 50: -950 -nan -nan -nan -nan -nan -nan -nan -nan -nan -949 + Bin 51: -949 -nan -nan -nan -nan -nan -nan -nan -nan -nan -948 + Bin 52: -948 -nan -nan -nan -nan -nan -nan -nan -nan -nan -947 + Bin 53: -947 -nan -nan -nan -nan -nan -nan -nan -nan -nan -946 + Bin 54: -946 -nan -nan -nan -nan -nan -nan -nan -nan -nan -945 + Bin 55: -945 -nan -nan -nan -nan -nan -nan -nan -nan -nan -944 + Bin 56: -944 -nan -nan -nan -nan -nan -nan -nan -nan -nan -943 + Bin 57: -943 -nan -nan -nan -nan -nan -nan -nan -nan -nan -942 + Bin 58: -942 -nan -nan -nan -nan -nan -nan -nan -nan -nan -941 + Bin 59: -941 -nan -nan -nan -nan -nan -nan -nan -nan -nan -940 + Bin 60: -940 -nan -nan -nan -nan -nan -nan -nan -nan -nan -939 + Bin 61: -939 -nan -nan -nan -nan -nan -nan -nan -nan -nan -938 + Bin 62: -938 -nan -nan -nan -nan -nan -nan -nan -nan -nan -937 + Bin 63: -937 -nan -nan -nan -nan -nan -nan -nan -nan -nan -936 + Bin 64: -936 -nan -nan -nan -nan -nan -nan -nan -nan -nan -935 + Bin 65: -935 -nan -nan -nan -nan -nan -nan -nan -nan -nan -934 + Bin 66: -934 -nan -nan -nan -nan -nan -nan -nan -nan -nan -933 + Bin 67: -933 -nan -nan -nan -nan -nan -nan -nan -nan -nan -932 + Bin 68: -932 -nan -nan -nan -nan -nan -nan -nan -nan -nan -931 + Bin 69: -931 -nan -nan -nan -nan -nan -nan -nan -nan -nan -930 + Bin 70: -930 -nan -nan -nan -nan -nan -nan -nan -nan -nan -929 + Bin 71: -929 -nan -nan -nan -nan -nan -nan -nan -nan -nan -928 + Bin 72: -928 -nan -nan -nan -nan -nan -nan -nan -nan -nan -927 + Bin 73: -927 -nan -nan -nan -nan -nan -nan -nan -nan -nan -926 + Bin 74: -926 -nan -nan -nan -nan -nan -nan -nan -nan -nan -925 + Bin 75: -925 -nan -nan -nan -nan -nan -nan -nan -nan -nan -924 + Bin 76: -924 -nan -nan -nan -nan -nan -nan -nan -nan -nan -923 + Bin 77: -923 -nan -nan -nan -nan -nan -nan -nan -nan -nan -922 + Bin 78: -922 -nan -nan -nan -nan -nan -nan -nan -nan -nan -921 + Bin 79: -921 -nan -nan -nan -nan -nan -nan -nan -nan -nan -920 + Bin 80: -920 -nan -nan -nan -nan -nan -nan -nan -nan -nan -919 + Bin 81: -919 -nan -nan -nan -nan -nan -nan -nan -nan -nan -918 + Bin 82: -918 -nan -nan -nan -nan -nan -nan -nan -nan -nan -917 + Bin 83: -917 -nan -nan -nan -nan -nan -nan -nan -nan -nan -916 + Bin 84: -916 -nan -nan -nan -nan -nan -nan -nan -nan -nan -915 + Bin 85: -915 -nan -nan -nan -nan -nan -nan -nan -nan -nan -914 + Bin 86: -914 -nan -nan -nan -nan -nan -nan -nan -nan -nan -913 + Bin 87: -913 -nan -nan -nan -nan -nan -nan -nan -nan -nan -912 + Bin 88: -912 -nan -nan -nan -nan -nan -nan -nan -nan -nan -911 + Bin 89: -911 -nan -nan -nan -nan -nan -nan -nan -nan -nan -910 + Bin 90: -910 -nan -nan -nan -nan -nan -nan -nan -nan -nan -909 + Bin 91: -909 -nan -nan -nan -nan -nan -nan -nan -nan -nan -908 + Bin 92: -908 -nan -nan -nan -nan -nan -nan -nan -nan -nan -907 + Bin 93: -907 -nan -nan -nan -nan -nan -nan -nan -nan -nan -906 + Bin 94: -906 -nan -nan -nan -nan -nan -nan -nan -nan -nan -905 + Bin 95: -905 -nan -nan -nan -nan -nan -nan -nan -nan -nan -904 + Bin 96: -904 -nan -nan -nan -nan -nan -nan -nan -nan -nan -903 + Bin 97: -903 -nan -nan -nan -nan -nan -nan -nan -nan -nan -902 + Bin 98: -902 -nan -nan -nan -nan -nan -nan -nan -nan -nan -901 + Bin 99: -901 -nan -nan -nan -nan -nan -nan -nan -nan -nan -900 + Bin 100: -900 -nan -nan -nan -nan -nan -nan -nan -nan -nan -899 + Bin 101: -899 -nan -nan -nan -nan -nan -nan -nan -nan -nan -898 + Bin 102: -898 -nan -nan -nan -nan -nan -nan -nan -nan -nan -897 + Bin 103: -897 -nan -nan -nan -nan -nan -nan -nan -nan -nan -896 + Bin 104: -896 -nan -nan -nan -nan -nan -nan -nan -nan -nan -895 + Bin 105: -895 -nan -nan -nan -nan -nan -nan -nan -nan -nan -894 + Bin 106: -894 -nan -nan -nan -nan -nan -nan -nan -nan -nan -893 + Bin 107: -893 -nan -nan -nan -nan -nan -nan -nan -nan -nan -892 + Bin 108: -892 -nan -nan -nan -nan -nan -nan -nan -nan -nan -891 + Bin 109: -891 -nan -nan -nan -nan -nan -nan -nan -nan -nan -890 + Bin 110: -890 -nan -nan -nan -nan -nan -nan -nan -nan -nan -889 + Bin 111: -889 -nan -nan -nan -nan -nan -nan -nan -nan -nan -888 + Bin 112: -888 -nan -nan -nan -nan -nan -nan -nan -nan -nan -887 + Bin 113: -887 -nan -nan -nan -nan -nan -nan -nan -nan -nan -886 + Bin 114: -886 -nan -nan -nan -nan -nan -nan -nan -nan -nan -885 + Bin 115: -885 -nan -nan -nan -nan -nan -nan -nan -nan -nan -884 + Bin 116: -884 -nan -nan -nan -nan -nan -nan -nan -nan -nan -883 + Bin 117: -883 -nan -nan -nan -nan -nan -nan -nan -nan -nan -882 + Bin 118: -882 -nan -nan -nan -nan -nan -nan -nan -nan -nan -881 + Bin 119: -881 -nan -nan -nan -nan -nan -nan -nan -nan -nan -880 + Bin 120: -880 -nan -nan -nan -nan -nan -nan -nan -nan -nan -879 + Bin 121: -879 -nan -nan -nan -nan -nan -nan -nan -nan -nan -878 + Bin 122: -878 -nan -nan -nan -nan -nan -nan -nan -nan -nan -877 + Bin 123: -877 -nan -nan -nan -nan -nan -nan -nan -nan -nan -876 + Bin 124: -876 -nan -nan -nan -nan -nan -nan -nan -nan -nan -875 + Bin 125: -875 -nan -nan -nan -nan -nan -nan -nan -nan -nan -874 + Bin 126: -874 -nan -nan -nan -nan -nan -nan -nan -nan -nan -873 + Bin 127: -873 -nan -nan -nan -nan -nan -nan -nan -nan -nan -872 + Bin 128: -872 -nan -nan -nan -nan -nan -nan -nan -nan -nan -871 + Bin 129: -871 -nan -nan -nan -nan -nan -nan -nan -nan -nan -870 + Bin 130: -870 -nan -nan -nan -nan -nan -nan -nan -nan -nan -869 + Bin 131: -869 -nan -nan -nan -nan -nan -nan -nan -nan -nan -868 + Bin 132: -868 -nan -nan -nan -nan -nan -nan -nan -nan -nan -867 + Bin 133: -867 -nan -nan -nan -nan -nan -nan -nan -nan -nan -866 + Bin 134: -866 -nan -nan -nan -nan -nan -nan -nan -nan -nan -865 + Bin 135: -865 -nan -nan -nan -nan -nan -nan -nan -nan -nan -864 + Bin 136: -864 -nan -nan -nan -nan -nan -nan -nan -nan -nan -863 + Bin 137: -863 -nan -nan -nan -nan -nan -nan -nan -nan -nan -862 + Bin 138: -862 -nan -nan -nan -nan -nan -nan -nan -nan -nan -861 + Bin 139: -861 -nan -nan -nan -nan -nan -nan -nan -nan -nan -860 + Bin 140: -860 -nan -nan -nan -nan -nan -nan -nan -nan -nan -859 + Bin 141: -859 -nan -nan -nan -nan -nan -nan -nan -nan -nan -858 + Bin 142: -858 -nan -nan -nan -nan -nan -nan -nan -nan -nan -857 + Bin 143: -857 -nan -nan -nan -nan -nan -nan -nan -nan -nan -856 + Bin 144: -856 -nan -nan -nan -nan -nan -nan -nan -nan -nan -855 + Bin 145: -855 -nan -nan -nan -nan -nan -nan -nan -nan -nan -854 + Bin 146: -854 -nan -nan -nan -nan -nan -nan -nan -nan -nan -853 + Bin 147: -853 -nan -nan -nan -nan -nan -nan -nan -nan -nan -852 + Bin 148: -852 -nan -nan -nan -nan -nan -nan -nan -nan -nan -851 + Bin 149: -851 -nan -nan -nan -nan -nan -nan -nan -nan -nan -850 + Bin 150: -850 -nan -nan -nan -nan -nan -nan -nan -nan -nan -849 + Bin 151: -849 -nan -nan -nan -nan -nan -nan -nan -nan -nan -848 + Bin 152: -848 -nan -nan -nan -nan -nan -nan -nan -nan -nan -847 + Bin 153: -847 -nan -nan -nan -nan -nan -nan -nan -nan -nan -846 + Bin 154: -846 -nan -nan -nan -nan -nan -nan -nan -nan -nan -845 + Bin 155: -845 -nan -nan -nan -nan -nan -nan -nan -nan -nan -844 + Bin 156: -844 -nan -nan -nan -nan -nan -nan -nan -nan -nan -843 + Bin 157: -843 -nan -nan -nan -nan -nan -nan -nan -nan -nan -842 + Bin 158: -842 -nan -nan -nan -nan -nan -nan -nan -nan -nan -841 + Bin 159: -841 -nan -nan -nan -nan -nan -nan -nan -nan -nan -840 + Bin 160: -840 -nan -nan -nan -nan -nan -nan -nan -nan -nan -839 + Bin 161: -839 -nan -nan -nan -nan -nan -nan -nan -nan -nan -838 + Bin 162: -838 -nan -nan -nan -nan -nan -nan -nan -nan -nan -837 + Bin 163: -837 -nan -nan -nan -nan -nan -nan -nan -nan -nan -836 + Bin 164: -836 -nan -nan -nan -nan -nan -nan -nan -nan -nan -835 + Bin 165: -835 -nan -nan -nan -nan -nan -nan -nan -nan -nan -834 + Bin 166: -834 -nan -nan -nan -nan -nan -nan -nan -nan -nan -833 + Bin 167: -833 -nan -nan -nan -nan -nan -nan -nan -nan -nan -832 + Bin 168: -832 -nan -nan -nan -nan -nan -nan -nan -nan -nan -831 + Bin 169: -831 -nan -nan -nan -nan -nan -nan -nan -nan -nan -830 + Bin 170: -830 -nan -nan -nan -nan -nan -nan -nan -nan -nan -829 + Bin 171: -829 -nan -nan -nan -nan -nan -nan -nan -nan -nan -828 + Bin 172: -828 -nan -nan -nan -nan -nan -nan -nan -nan -nan -827 + Bin 173: -827 -nan -nan -nan -nan -nan -nan -nan -nan -nan -826 + Bin 174: -826 -nan -nan -nan -nan -nan -nan -nan -nan -nan -825 + Bin 175: -825 -nan -nan -nan -nan -nan -nan -nan -nan -nan -824 + Bin 176: -824 -nan -nan -nan -nan -nan -nan -nan -nan -nan -823 + Bin 177: -823 -nan -nan -nan -nan -nan -nan -nan -nan -nan -822 + Bin 178: -822 -nan -nan -nan -nan -nan -nan -nan -nan -nan -821 + Bin 179: -821 -nan -nan -nan -nan -nan -nan -nan -nan -nan -820 + Bin 180: -820 -nan -nan -nan -nan -nan -nan -nan -nan -nan -819 + Bin 181: -819 -nan -nan -nan -nan -nan -nan -nan -nan -nan -818 + Bin 182: -818 -nan -nan -nan -nan -nan -nan -nan -nan -nan -817 + Bin 183: -817 -nan -nan -nan -nan -nan -nan -nan -nan -nan -816 + Bin 184: -816 -nan -nan -nan -nan -nan -nan -nan -nan -nan -815 + Bin 185: -815 -nan -nan -nan -nan -nan -nan -nan -nan -nan -814 + Bin 186: -814 -nan -nan -nan -nan -nan -nan -nan -nan -nan -813 + Bin 187: -813 -nan -nan -nan -nan -nan -nan -nan -nan -nan -812 + Bin 188: -812 -nan -nan -nan -nan -nan -nan -nan -nan -nan -811 + Bin 189: -811 -nan -nan -nan -nan -nan -nan -nan -nan -nan -810 + Bin 190: -810 -nan -nan -nan -nan -nan -nan -nan -nan -nan -809 + Bin 191: -809 -nan -nan -nan -nan -nan -nan -nan -nan -nan -808 + Bin 192: -808 -nan -nan -nan -nan -nan -nan -nan -nan -nan -807 + Bin 193: -807 -nan -nan -nan -nan -nan -nan -nan -nan -nan -806 + Bin 194: -806 -nan -nan -nan -nan -nan -nan -nan -nan -nan -805 + Bin 195: -805 -nan -nan -nan -nan -nan -nan -nan -nan -nan -804 + Bin 196: -804 -nan -nan -nan -nan -nan -nan -nan -nan -nan -803 + Bin 197: -803 -nan -nan -nan -nan -nan -nan -nan -nan -nan -802 + Bin 198: -802 -nan -nan -nan -nan -nan -nan -nan -nan -nan -801 + Bin 199: -801 -nan -nan -nan -nan -nan -nan -nan -nan -nan -800 + Bin 200: -800 -nan -nan -nan -nan -nan -nan -nan -nan -nan -799 + Bin 201: -799 -nan -nan -nan -nan -nan -nan -nan -nan -nan -798 + Bin 202: -798 -nan -nan -nan -nan -nan -nan -nan -nan -nan -797 + Bin 203: -797 -nan -nan -nan -nan -nan -nan -nan -nan -nan -796 + Bin 204: -796 -nan -nan -nan -nan -nan -nan -nan -nan -nan -795 + Bin 205: -795 -nan -nan -nan -nan -nan -nan -nan -nan -nan -794 + Bin 206: -794 -nan -nan -nan -nan -nan -nan -nan -nan -nan -793 + Bin 207: -793 -nan -nan -nan -nan -nan -nan -nan -nan -nan -792 + Bin 208: -792 -nan -nan -nan -nan -nan -nan -nan -nan -nan -791 + Bin 209: -791 -nan -nan -nan -nan -nan -nan -nan -nan -nan -790 + Bin 210: -790 -nan -nan -nan -nan -nan -nan -nan -nan -nan -789 + Bin 211: -789 -nan -nan -nan -nan -nan -nan -nan -nan -nan -788 + Bin 212: -788 -nan -nan -nan -nan -nan -nan -nan -nan -nan -787 + Bin 213: -787 -nan -nan -nan -nan -nan -nan -nan -nan -nan -786 + Bin 214: -786 -nan -nan -nan -nan -nan -nan -nan -nan -nan -785 + Bin 215: -785 -nan -nan -nan -nan -nan -nan -nan -nan -nan -784 + Bin 216: -784 -nan -nan -nan -nan -nan -nan -nan -nan -nan -783 + Bin 217: -783 -nan -nan -nan -nan -nan -nan -nan -nan -nan -782 + Bin 218: -782 -nan -nan -nan -nan -nan -nan -nan -nan -nan -781 + Bin 219: -781 -nan -nan -nan -nan -nan -nan -nan -nan -nan -780 + Bin 220: -780 -nan -nan -nan -nan -nan -nan -nan -nan -nan -779 + Bin 221: -779 -nan -nan -nan -nan -nan -nan -nan -nan -nan -778 + Bin 222: -778 -nan -nan -nan -nan -nan -nan -nan -nan -nan -777 + Bin 223: -777 -nan -nan -nan -nan -nan -nan -nan -nan -nan -776 + Bin 224: -776 -nan -nan -nan -nan -nan -nan -nan -nan -nan -775 + Bin 225: -775 -nan -nan -nan -nan -nan -nan -nan -nan -nan -774 + Bin 226: -774 -nan -nan -nan -nan -nan -nan -nan -nan -nan -773 + Bin 227: -773 -nan -nan -nan -nan -nan -nan -nan -nan -nan -772 + Bin 228: -772 -nan -nan -nan -nan -nan -nan -nan -nan -nan -771 + Bin 229: -771 -nan -nan -nan -nan -nan -nan -nan -nan -nan -770 + Bin 230: -770 -nan -nan -nan -nan -nan -nan -nan -nan -nan -769 + Bin 231: -769 -nan -nan -nan -nan -nan -nan -nan -nan -nan -768 + Bin 232: -768 -nan -nan -nan -nan -nan -nan -nan -nan -nan -767 + Bin 233: -767 -nan -nan -nan -nan -nan -nan -nan -nan -nan -766 + Bin 234: -766 -nan -nan -nan -nan -nan -nan -nan -nan -nan -765 + Bin 235: -765 -nan -nan -nan -nan -nan -nan -nan -nan -nan -764 + Bin 236: -764 -nan -nan -nan -nan -nan -nan -nan -nan -nan -763 + Bin 237: -763 -nan -nan -nan -nan -nan -nan -nan -nan -nan -762 + Bin 238: -762 -nan -nan -nan -nan -nan -nan -nan -nan -nan -761 + Bin 239: -761 -nan -nan -nan -nan -nan -nan -nan -nan -nan -760 + Bin 240: -760 -nan -nan -nan -nan -nan -nan -nan -nan -nan -759 + Bin 241: -759 -nan -nan -nan -nan -nan -nan -nan -nan -nan -758 + Bin 242: -758 -nan -nan -nan -nan -nan -nan -nan -nan -nan -757 + Bin 243: -757 -nan -nan -nan -nan -nan -nan -nan -nan -nan -756 + Bin 244: -756 -nan -nan -nan -nan -nan -nan -nan -nan -nan -755 + Bin 245: -755 -nan -nan -nan -nan -nan -nan -nan -nan -nan -754 + Bin 246: -754 -nan -nan -nan -nan -nan -nan -nan -nan -nan -753 + Bin 247: -753 -nan -nan -nan -nan -nan -nan -nan -nan -nan -752 + Bin 248: -752 -nan -nan -nan -nan -nan -nan -nan -nan -nan -751 + Bin 249: -751 -nan -nan -nan -nan -nan -nan -nan -nan -nan -750 + Bin 250: -750 -nan -nan -nan -nan -nan -nan -nan -nan -nan -749 + Bin 251: -749 -nan -nan -nan -nan -nan -nan -nan -nan -nan -748 + Bin 252: -748 -nan -nan -nan -nan -nan -nan -nan -nan -nan -747 + Bin 253: -747 -nan -nan -nan -nan -nan -nan -nan -nan -nan -746 + Bin 254: -746 -nan -nan -nan -nan -nan -nan -nan -nan -nan -745 + Bin 255: -745 -nan -nan -nan -nan -nan -nan -nan -nan -nan -744 + Bin 256: -744 -nan -nan -nan -nan -nan -nan -nan -nan -nan -743 + Bin 257: -743 -nan -nan -nan -nan -nan -nan -nan -nan -nan -742 + Bin 258: -742 -nan -nan -nan -nan -nan -nan -nan -nan -nan -741 + Bin 259: -741 -nan -nan -nan -nan -nan -nan -nan -nan -nan -740 + Bin 260: -740 -nan -nan -nan -nan -nan -nan -nan -nan -nan -739 + Bin 261: -739 -nan -nan -nan -nan -nan -nan -nan -nan -nan -738 + Bin 262: -738 -nan -nan -nan -nan -nan -nan -nan -nan -nan -737 + Bin 263: -737 -nan -nan -nan -nan -nan -nan -nan -nan -nan -736 + Bin 264: -736 -nan -nan -nan -nan -nan -nan -nan -nan -nan -735 + Bin 265: -735 -nan -nan -nan -nan -nan -nan -nan -nan -nan -734 + Bin 266: -734 -nan -nan -nan -nan -nan -nan -nan -nan -nan -733 + Bin 267: -733 -nan -nan -nan -nan -nan -nan -nan -nan -nan -732 + Bin 268: -732 -nan -nan -nan -nan -nan -nan -nan -nan -nan -731 + Bin 269: -731 -nan -nan -nan -nan -nan -nan -nan -nan -nan -730 + Bin 270: -730 -nan -nan -nan -nan -nan -nan -nan -nan -nan -729 + Bin 271: -729 -nan -nan -nan -nan -nan -nan -nan -nan -nan -728 + Bin 272: -728 -nan -nan -nan -nan -nan -nan -nan -nan -nan -727 + Bin 273: -727 -nan -nan -nan -nan -nan -nan -nan -nan -nan -726 + Bin 274: -726 -nan -nan -nan -nan -nan -nan -nan -nan -nan -725 + Bin 275: -725 -nan -nan -nan -nan -nan -nan -nan -nan -nan -724 + Bin 276: -724 -nan -nan -nan -nan -nan -nan -nan -nan -nan -723 + Bin 277: -723 -nan -nan -nan -nan -nan -nan -nan -nan -nan -722 + Bin 278: -722 -nan -nan -nan -nan -nan -nan -nan -nan -nan -721 + Bin 279: -721 -nan -nan -nan -nan -nan -nan -nan -nan -nan -720 + Bin 280: -720 -nan -nan -nan -nan -nan -nan -nan -nan -nan -719 + Bin 281: -719 -nan -nan -nan -nan -nan -nan -nan -nan -nan -718 + Bin 282: -718 -nan -nan -nan -nan -nan -nan -nan -nan -nan -717 + Bin 283: -717 -nan -nan -nan -nan -nan -nan -nan -nan -nan -716 + Bin 284: -716 -nan -nan -nan -nan -nan -nan -nan -nan -nan -715 + Bin 285: -715 -nan -nan -nan -nan -nan -nan -nan -nan -nan -714 + Bin 286: -714 -nan -nan -nan -nan -nan -nan -nan -nan -nan -713 + Bin 287: -713 -nan -nan -nan -nan -nan -nan -nan -nan -nan -712 + Bin 288: -712 -nan -nan -nan -nan -nan -nan -nan -nan -nan -711 + Bin 289: -711 -nan -nan -nan -nan -nan -nan -nan -nan -nan -710 + Bin 290: -710 -nan -nan -nan -nan -nan -nan -nan -nan -nan -709 + Bin 291: -709 -nan -nan -nan -nan -nan -nan -nan -nan -nan -708 + Bin 292: -708 -nan -nan -nan -nan -nan -nan -nan -nan -nan -707 + Bin 293: -707 -nan -nan -nan -nan -nan -nan -nan -nan -nan -706 + Bin 294: -706 -nan -nan -nan -nan -nan -nan -nan -nan -nan -705 + Bin 295: -705 -nan -nan -nan -nan -nan -nan -nan -nan -nan -704 + Bin 296: -704 -nan -nan -nan -nan -nan -nan -nan -nan -nan -703 + Bin 297: -703 -nan -nan -nan -nan -nan -nan -nan -nan -nan -702 + Bin 298: -702 -nan -nan -nan -nan -nan -nan -nan -nan -nan -701 + Bin 299: -701 -nan -nan -nan -nan -nan -nan -nan -nan -nan -700 + Bin 300: -700 -nan -nan -nan -nan -nan -nan -nan -nan -nan -699 + Bin 301: -699 -nan -nan -nan -nan -nan -nan -nan -nan -nan -698 + Bin 302: -698 -nan -nan -nan -nan -nan -nan -nan -nan -nan -697 + Bin 303: -697 -nan -nan -nan -nan -nan -nan -nan -nan -nan -696 + Bin 304: -696 -nan -nan -nan -nan -nan -nan -nan -nan -nan -695 + Bin 305: -695 -nan -nan -nan -nan -nan -nan -nan -nan -nan -694 + Bin 306: -694 -nan -nan -nan -nan -nan -nan -nan -nan -nan -693 + Bin 307: -693 -nan -nan -nan -nan -nan -nan -nan -nan -nan -692 + Bin 308: -692 -nan -nan -nan -nan -nan -nan -nan -nan -nan -691 + Bin 309: -691 -nan -nan -nan -nan -nan -nan -nan -nan -nan -690 + Bin 310: -690 -nan -nan -nan -nan -nan -nan -nan -nan -nan -689 + Bin 311: -689 -nan -nan -nan -nan -nan -nan -nan -nan -nan -688 + Bin 312: -688 -nan -nan -nan -nan -nan -nan -nan -nan -nan -687 + Bin 313: -687 -nan -nan -nan -nan -nan -nan -nan -nan -nan -686 + Bin 314: -686 -nan -nan -nan -nan -nan -nan -nan -nan -nan -685 + Bin 315: -685 -nan -nan -nan -nan -nan -nan -nan -nan -nan -684 + Bin 316: -684 -nan -nan -nan -nan -nan -nan -nan -nan -nan -683 + Bin 317: -683 -nan -nan -nan -nan -nan -nan -nan -nan -nan -682 + Bin 318: -682 -nan -nan -nan -nan -nan -nan -nan -nan -nan -681 + Bin 319: -681 -nan -nan -nan -nan -nan -nan -nan -nan -nan -680 + Bin 320: -680 -nan -nan -nan -nan -nan -nan -nan -nan -nan -679 + Bin 321: -679 -nan -nan -nan -nan -nan -nan -nan -nan -nan -678 + Bin 322: -678 -nan -nan -nan -nan -nan -nan -nan -nan -nan -677 + Bin 323: -677 -nan -nan -nan -nan -nan -nan -nan -nan -nan -676 + Bin 324: -676 -nan -nan -nan -nan -nan -nan -nan -nan -nan -675 + Bin 325: -675 -nan -nan -nan -nan -nan -nan -nan -nan -nan -674 + Bin 326: -674 -nan -nan -nan -nan -nan -nan -nan -nan -nan -673 + Bin 327: -673 -nan -nan -nan -nan -nan -nan -nan -nan -nan -672 + Bin 328: -672 -nan -nan -nan -nan -nan -nan -nan -nan -nan -671 + Bin 329: -671 -nan -nan -nan -nan -nan -nan -nan -nan -nan -670 + Bin 330: -670 -nan -nan -nan -nan -nan -nan -nan -nan -nan -669 + Bin 331: -669 -nan -nan -nan -nan -nan -nan -nan -nan -nan -668 + Bin 332: -668 -nan -nan -nan -nan -nan -nan -nan -nan -nan -667 + Bin 333: -667 -nan -nan -nan -nan -nan -nan -nan -nan -nan -666 + Bin 334: -666 -nan -nan -nan -nan -nan -nan -nan -nan -nan -665 + Bin 335: -665 -nan -nan -nan -nan -nan -nan -nan -nan -nan -664 + Bin 336: -664 -nan -nan -nan -nan -nan -nan -nan -nan -nan -663 + Bin 337: -663 -nan -nan -nan -nan -nan -nan -nan -nan -nan -662 + Bin 338: -662 -nan -nan -nan -nan -nan -nan -nan -nan -nan -661 + Bin 339: -661 -nan -nan -nan -nan -nan -nan -nan -nan -nan -660 + Bin 340: -660 -nan -nan -nan -nan -nan -nan -nan -nan -nan -659 + Bin 341: -659 -nan -nan -nan -nan -nan -nan -nan -nan -nan -658 + Bin 342: -658 -nan -nan -nan -nan -nan -nan -nan -nan -nan -657 + Bin 343: -657 -nan -nan -nan -nan -nan -nan -nan -nan -nan -656 + Bin 344: -656 -nan -nan -nan -nan -nan -nan -nan -nan -nan -655 + Bin 345: -655 -nan -nan -nan -nan -nan -nan -nan -nan -nan -654 + Bin 346: -654 -nan -nan -nan -nan -nan -nan -nan -nan -nan -653 + Bin 347: -653 -nan -nan -nan -nan -nan -nan -nan -nan -nan -652 + Bin 348: -652 -nan -nan -nan -nan -nan -nan -nan -nan -nan -651 + Bin 349: -651 -nan -nan -nan -nan -nan -nan -nan -nan -nan -650 + Bin 350: -650 -nan -nan -nan -nan -nan -nan -nan -nan -nan -649 + Bin 351: -649 -nan -nan -nan -nan -nan -nan -nan -nan -nan -648 + Bin 352: -648 -nan -nan -nan -nan -nan -nan -nan -nan -nan -647 + Bin 353: -647 -nan -nan -nan -nan -nan -nan -nan -nan -nan -646 + Bin 354: -646 -nan -nan -nan -nan -nan -nan -nan -nan -nan -645 + Bin 355: -645 -nan -nan -nan -nan -nan -nan -nan -nan -nan -644 + Bin 356: -644 -nan -nan -nan -nan -nan -nan -nan -nan -nan -643 + Bin 357: -643 -nan -nan -nan -nan -nan -nan -nan -nan -nan -642 + Bin 358: -642 -nan -nan -nan -nan -nan -nan -nan -nan -nan -641 + Bin 359: -641 -nan -nan -nan -nan -nan -nan -nan -nan -nan -640 + Bin 360: -640 -nan -nan -nan -nan -nan -nan -nan -nan -nan -639 + Bin 361: -639 -nan -nan -nan -nan -nan -nan -nan -nan -nan -638 + Bin 362: -638 -nan -nan -nan -nan -nan -nan -nan -nan -nan -637 + Bin 363: -637 -nan -nan -nan -nan -nan -nan -nan -nan -nan -636 + Bin 364: -636 -nan -nan -nan -nan -nan -nan -nan -nan -nan -635 + Bin 365: -635 -nan -nan -nan -nan -nan -nan -nan -nan -nan -634 + Bin 366: -634 -nan -nan -nan -nan -nan -nan -nan -nan -nan -633 + Bin 367: -633 -nan -nan -nan -nan -nan -nan -nan -nan -nan -632 + Bin 368: -632 -nan -nan -nan -nan -nan -nan -nan -nan -nan -631 + Bin 369: -631 -nan -nan -nan -nan -nan -nan -nan -nan -nan -630 + Bin 370: -630 -nan -nan -nan -nan -nan -nan -nan -nan -nan -629 + Bin 371: -629 -nan -nan -nan -nan -nan -nan -nan -nan -nan -628 + Bin 372: -628 -nan -nan -nan -nan -nan -nan -nan -nan -nan -627 + Bin 373: -627 -nan -nan -nan -nan -nan -nan -nan -nan -nan -626 + Bin 374: -626 -nan -nan -nan -nan -nan -nan -nan -nan -nan -625 + Bin 375: -625 -nan -nan -nan -nan -nan -nan -nan -nan -nan -624 + Bin 376: -624 -nan -nan -nan -nan -nan -nan -nan -nan -nan -623 + Bin 377: -623 -nan -nan -nan -nan -nan -nan -nan -nan -nan -622 + Bin 378: -622 -nan -nan -nan -nan -nan -nan -nan -nan -nan -621 + Bin 379: -621 -nan -nan -nan -nan -nan -nan -nan -nan -nan -620 + Bin 380: -620 -nan -nan -nan -nan -nan -nan -nan -nan -nan -619 + Bin 381: -619 -nan -nan -nan -nan -nan -nan -nan -nan -nan -618 + Bin 382: -618 -nan -nan -nan -nan -nan -nan -nan -nan -nan -617 + Bin 383: -617 -nan -nan -nan -nan -nan -nan -nan -nan -nan -616 + Bin 384: -616 -nan -nan -nan -nan -nan -nan -nan -nan -nan -615 + Bin 385: -615 -nan -nan -nan -nan -nan -nan -nan -nan -nan -614 + Bin 386: -614 -nan -nan -nan -nan -nan -nan -nan -nan -nan -613 + Bin 387: -613 -nan -nan -nan -nan -nan -nan -nan -nan -nan -612 + Bin 388: -612 -nan -nan -nan -nan -nan -nan -nan -nan -nan -611 + Bin 389: -611 -nan -nan -nan -nan -nan -nan -nan -nan -nan -610 + Bin 390: -610 -nan -nan -nan -nan -nan -nan -nan -nan -nan -609 + Bin 391: -609 -nan -nan -nan -nan -nan -nan -nan -nan -nan -608 + Bin 392: -608 -nan -nan -nan -nan -nan -nan -nan -nan -nan -607 + Bin 393: -607 -nan -nan -nan -nan -nan -nan -nan -nan -nan -606 + Bin 394: -606 -nan -nan -nan -nan -nan -nan -nan -nan -nan -605 + Bin 395: -605 -nan -nan -nan -nan -nan -nan -nan -nan -nan -604 + Bin 396: -604 -nan -nan -nan -nan -nan -nan -nan -nan -nan -603 + Bin 397: -603 -nan -nan -nan -nan -nan -nan -nan -nan -nan -602 + Bin 398: -602 -nan -nan -nan -nan -nan -nan -nan -nan -nan -601 + Bin 399: -601 -nan -nan -nan -nan -nan -nan -nan -nan -nan -600 + Bin 400: -600 -nan -nan -nan -nan -nan -nan -nan -nan -nan -599 + Bin 401: -599 -nan -nan -nan -nan -nan -nan -nan -nan -nan -598 + Bin 402: -598 -nan -nan -nan -nan -nan -nan -nan -nan -nan -597 + Bin 403: -597 -nan -nan -nan -nan -nan -nan -nan -nan -nan -596 + Bin 404: -596 -nan -nan -nan -nan -nan -nan -nan -nan -nan -595 + Bin 405: -595 -nan -nan -nan -nan -nan -nan -nan -nan -nan -594 + Bin 406: -594 -nan -nan -nan -nan -nan -nan -nan -nan -nan -593 + Bin 407: -593 -nan -nan -nan -nan -nan -nan -nan -nan -nan -592 + Bin 408: -592 -nan -nan -nan -nan -nan -nan -nan -nan -nan -591 + Bin 409: -591 -nan -nan -nan -nan -nan -nan -nan -nan -nan -590 + Bin 410: -590 -nan -nan -nan -nan -nan -nan -nan -nan -nan -589 + Bin 411: -589 -nan -nan -nan -nan -nan -nan -nan -nan -nan -588 + Bin 412: -588 -nan -nan -nan -nan -nan -nan -nan -nan -nan -587 + Bin 413: -587 -nan -nan -nan -nan -nan -nan -nan -nan -nan -586 + Bin 414: -586 -nan -nan -nan -nan -nan -nan -nan -nan -nan -585 + Bin 415: -585 -nan -nan -nan -nan -nan -nan -nan -nan -nan -584 + Bin 416: -584 -nan -nan -nan -nan -nan -nan -nan -nan -nan -583 + Bin 417: -583 -nan -nan -nan -nan -nan -nan -nan -nan -nan -582 + Bin 418: -582 -nan -nan -nan -nan -nan -nan -nan -nan -nan -581 + Bin 419: -581 -nan -nan -nan -nan -nan -nan -nan -nan -nan -580 + Bin 420: -580 -nan -nan -nan -nan -nan -nan -nan -nan -nan -579 + Bin 421: -579 -nan -nan -nan -nan -nan -nan -nan -nan -nan -578 + Bin 422: -578 -nan -nan -nan -nan -nan -nan -nan -nan -nan -577 + Bin 423: -577 -nan -nan -nan -nan -nan -nan -nan -nan -nan -576 + Bin 424: -576 -nan -nan -nan -nan -nan -nan -nan -nan -nan -575 + Bin 425: -575 -nan -nan -nan -nan -nan -nan -nan -nan -nan -574 + Bin 426: -574 -nan -nan -nan -nan -nan -nan -nan -nan -nan -573 + Bin 427: -573 -nan -nan -nan -nan -nan -nan -nan -nan -nan -572 + Bin 428: -572 -nan -nan -nan -nan -nan -nan -nan -nan -nan -571 + Bin 429: -571 -nan -nan -nan -nan -nan -nan -nan -nan -nan -570 + Bin 430: -570 -nan -nan -nan -nan -nan -nan -nan -nan -nan -569 + Bin 431: -569 -nan -nan -nan -nan -nan -nan -nan -nan -nan -568 + Bin 432: -568 -nan -nan -nan -nan -nan -nan -nan -nan -nan -567 + Bin 433: -567 -nan -nan -nan -nan -nan -nan -nan -nan -nan -566 + Bin 434: -566 -nan -nan -nan -nan -nan -nan -nan -nan -nan -565 + Bin 435: -565 -nan -nan -nan -nan -nan -nan -nan -nan -nan -564 + Bin 436: -564 -nan -nan -nan -nan -nan -nan -nan -nan -nan -563 + Bin 437: -563 -nan -nan -nan -nan -nan -nan -nan -nan -nan -562 + Bin 438: -562 -nan -nan -nan -nan -nan -nan -nan -nan -nan -561 + Bin 439: -561 -nan -nan -nan -nan -nan -nan -nan -nan -nan -560 + Bin 440: -560 -nan -nan -nan -nan -nan -nan -nan -nan -nan -559 + Bin 441: -559 -nan -nan -nan -nan -nan -nan -nan -nan -nan -558 + Bin 442: -558 -nan -nan -nan -nan -nan -nan -nan -nan -nan -557 + Bin 443: -557 -nan -nan -nan -nan -nan -nan -nan -nan -nan -556 + Bin 444: -556 -nan -nan -nan -nan -nan -nan -nan -nan -nan -555 + Bin 445: -555 -nan -nan -nan -nan -nan -nan -nan -nan -nan -554 + Bin 446: -554 -nan -nan -nan -nan -nan -nan -nan -nan -nan -553 + Bin 447: -553 -nan -nan -nan -nan -nan -nan -nan -nan -nan -552 + Bin 448: -552 -552 -552 -552 -552 -552 -551.916 -551.827 -551.723 -551.572 -551 + Bin 449: -551 -550.837 -550.743 -550.692 -550.645 -550.598 -550.57 -550.531 -550.472 -550.369 -550 + Bin 450: -550 -549.851 -549.764 -549.709 -549.671 -549.642 -549.582 -549.536 -549.477 -549.396 -549 + Bin 451: -549 -548.838 -548.758 -548.696 -548.66 -548.607 -548.576 -548.535 -548.474 -548.381 -548 + Bin 452: -548 -547.837 -547.742 -547.67 -547.627 -547.571 -547.539 -547.495 -547.44 -547.344 -547 + Bin 453: -547 -546.822 -546.727 -546.662 -546.611 -546.58 -546.524 -546.474 -546.406 -546.305 -546 + Bin 454: -546 -545.852 -545.769 -545.712 -545.666 -545.615 -545.576 -545.532 -545.467 -545.36 -545 + Bin 455: -545 -544.872 -544.783 -544.723 -544.676 -544.619 -544.58 -544.537 -544.482 -544.373 -544 + Bin 456: -544 -543.853 -543.78 -543.728 -543.683 -543.628 -543.592 -543.541 -543.482 -543.383 -543 + Bin 457: -543 -542.826 -542.735 -542.676 -542.63 -542.594 -542.545 -542.501 -542.45 -542.365 -542 + Bin 458: -542 -541.837 -541.748 -541.688 -541.649 -541.589 -541.555 -541.506 -541.448 -541.348 -541 + Bin 459: -541 -540.866 -540.782 -540.716 -540.674 -540.614 -540.579 -540.537 -540.475 -540.38 -540 + Bin 460: -540 -539.847 -539.758 -539.695 -539.647 -539.607 -539.547 -539.501 -539.435 -539.34 -539 + Bin 461: -539 -538.833 -538.759 -538.704 -538.661 -538.609 -538.572 -538.527 -538.466 -538.368 -538 + Bin 462: -538 -537.857 -537.777 -537.715 -537.67 -537.613 -537.579 -537.537 -537.481 -537.363 -537 + Bin 463: -537 -536.872 -536.793 -536.739 -536.705 -536.676 -536.611 -536.565 -536.498 -536.4 -536 + Bin 464: -536 -535.87 -535.784 -535.732 -535.69 -535.636 -535.6 -535.552 -535.472 -535.372 -535 + Bin 465: -535 -534.855 -534.765 -534.705 -534.667 -534.636 -534.584 -534.536 -534.466 -534.362 -534 + Bin 466: -534 -533.824 -533.737 -533.672 -533.63 -533.596 -533.535 -533.497 -533.441 -533.362 -533 + Bin 467: -533 -532.846 -532.755 -532.691 -532.648 -532.594 -532.559 -532.52 -532.466 -532.375 -532 + Bin 468: -532 -531.864 -531.778 -531.725 -531.679 -531.626 -531.597 -531.557 -531.498 -531.417 -531 + Bin 469: -531 -530.828 -530.745 -530.679 -530.63 -530.562 -530.529 -530.488 -530.434 -530.357 -530 + Bin 470: -530 -529.827 -529.747 -529.697 -529.657 -529.63 -529.565 -529.52 -529.462 -529.364 -529 + Bin 471: -529 -528.86 -528.788 -528.731 -528.692 -528.647 -528.61 -528.566 -528.499 -528.381 -528 + Bin 472: -528 -527.829 -527.735 -527.67 -527.621 -527.562 -527.533 -527.491 -527.436 -527.356 -527 + Bin 473: -527 -526.818 -526.73 -526.674 -526.635 -526.605 -526.556 -526.509 -526.451 -526.36 -526 + Bin 474: -526 -525.839 -525.752 -525.689 -525.646 -525.598 -525.566 -525.522 -525.458 -525.357 -525 + Bin 475: -525 -524.844 -524.752 -524.687 -524.637 -524.581 -524.549 -524.508 -524.447 -524.353 -524 + Bin 476: -524 -523.84 -523.755 -523.696 -523.661 -523.632 -523.579 -523.532 -523.467 -523.383 -523 + Bin 477: -523 -522.861 -522.786 -522.737 -522.691 -522.63 -522.602 -522.563 -522.504 -522.402 -522 + Bin 478: -522 -521.849 -521.765 -521.711 -521.672 -521.607 -521.573 -521.53 -521.464 -521.375 -521 + Bin 479: -521 -520.814 -520.725 -520.668 -520.628 -520.6 -520.548 -520.504 -520.446 -520.373 -520 + Bin 480: -520 -519.835 -519.741 -519.681 -519.639 -519.581 -519.553 -519.514 -519.457 -519.371 -519 + Bin 481: -519 -518.849 -518.763 -518.704 -518.664 -518.604 -518.57 -518.528 -518.468 -518.388 -518 + Bin 482: -518 -517.828 -517.732 -517.67 -517.629 -517.598 -517.541 -517.502 -517.445 -517.354 -517 + Bin 483: -517 -516.832 -516.742 -516.68 -516.637 -516.605 -516.547 -516.505 -516.446 -516.36 -516 + Bin 484: -516 -515.818 -515.734 -515.678 -515.641 -515.588 -515.553 -515.51 -515.451 -515.362 -515 + Bin 485: -515 -514.847 -514.76 -514.698 -514.659 -514.599 -514.566 -514.525 -514.469 -514.383 -514 + Bin 486: -514 -513.839 -513.751 -513.693 -513.651 -513.598 -513.563 -513.521 -513.461 -513.386 -513 + Bin 487: -513 -512.828 -512.745 -512.687 -512.645 -512.62 -512.562 -512.517 -512.464 -512.37 -512 + Bin 488: -512 -511.852 -511.764 -511.703 -511.652 -511.6 -511.57 -511.532 -511.476 -511.387 -511 + Bin 489: -511 -510.825 -510.753 -510.699 -510.662 -510.631 -510.57 -510.523 -510.45 -510.335 -510 + Bin 490: -510 -509.828 -509.747 -509.685 -509.641 -509.581 -509.549 -509.51 -509.452 -509.357 -509 + Bin 491: -509 -508.821 -508.747 -508.698 -508.664 -508.606 -508.574 -508.535 -508.476 -508.369 -508 + Bin 492: -508 -507.818 -507.749 -507.695 -507.655 -507.623 -507.569 -507.52 -507.467 -507.362 -507 + Bin 493: -507 -506.832 -506.755 -506.702 -506.66 -506.604 -506.571 -506.53 -506.468 -506.369 -506 + Bin 494: -506 -505.842 -505.77 -505.722 -505.688 -505.659 -505.602 -505.554 -505.483 -505.373 -505 + Bin 495: -505 -504.836 -504.763 -504.716 -504.673 -504.62 -504.589 -504.546 -504.488 -504.378 -504 + Bin 496: -504 -503.832 -503.751 -503.708 -503.667 -503.639 -503.585 -503.532 -503.469 -503.355 -503 + Bin 497: -503 -502.819 -502.737 -502.676 -502.631 -502.58 -502.552 -502.516 -502.459 -502.361 -502 + Bin 498: -502 -501.851 -501.779 -501.726 -501.689 -501.656 -501.607 -501.565 -501.498 -501.389 -501 + Bin 499: -501 -500.837 -500.762 -500.71 -500.673 -500.615 -500.582 -500.539 -500.483 -500.378 -500 + Bin 500: -500 -499.845 -499.764 -499.705 -499.665 -499.613 -499.582 -499.54 -499.484 -499.379 -499 + Bin 501: -499 -498.828 -498.751 -498.689 -498.65 -498.593 -498.559 -498.514 -498.45 -498.355 -498 + Bin 502: -498 -497.835 -497.763 -497.71 -497.671 -497.616 -497.582 -497.539 -497.475 -497.37 -497 + Bin 503: -497 -496.806 -496.727 -496.676 -496.634 -496.602 -496.555 -496.519 -496.456 -496.349 -496 + Bin 504: -496 -495.831 -495.75 -495.703 -495.668 -495.641 -495.579 -495.538 -495.468 -495.354 -495 + Bin 505: -495 -494.832 -494.741 -494.679 -494.638 -494.583 -494.552 -494.512 -494.45 -494.346 -494 + Bin 506: -494 -493.808 -493.729 -493.671 -493.635 -493.602 -493.544 -493.493 -493.425 -493.31 -493 + Bin 507: -493 -492.834 -492.766 -492.719 -492.675 -492.618 -492.589 -492.545 -492.483 -492.359 -492 + Bin 508: -492 -491.875 -491.793 -491.744 -491.697 -491.643 -491.604 -491.557 -491.488 -491.377 -491 + Bin 509: -491 -490.826 -490.767 -490.715 -490.675 -490.644 -490.584 -490.537 -490.475 -490.346 -490 + Bin 510: -490 -489.788 -489.719 -489.676 -489.641 -489.611 -489.557 -489.517 -489.454 -489.33 -489 + Bin 511: -489 -488.804 -488.739 -488.695 -488.658 -488.602 -488.574 -488.526 -488.465 -488.353 -488 + Bin 512: -488 -487.817 -487.734 -487.683 -487.64 -487.613 -487.562 -487.518 -487.457 -487.339 -487 + Bin 513: -487 -486.809 -486.734 -486.678 -486.637 -486.584 -486.55 -486.508 -486.445 -486.33 -486 + Bin 514: -486 -485.82 -485.75 -485.698 -485.662 -485.633 -485.576 -485.528 -485.464 -485.355 -485 + Bin 515: -485 -484.808 -484.729 -484.675 -484.639 -484.586 -484.55 -484.505 -484.439 -484.322 -484 + Bin 516: -484 -483.834 -483.759 -483.709 -483.669 -483.644 -483.591 -483.542 -483.474 -483.357 -483 + Bin 517: -483 -482.802 -482.73 -482.675 -482.635 -482.577 -482.547 -482.504 -482.448 -482.341 -482 + Bin 518: -482 -481.832 -481.769 -481.716 -481.676 -481.618 -481.586 -481.551 -481.486 -481.368 -481 + Bin 519: -481 -480.841 -480.768 -480.718 -480.683 -480.651 -480.592 -480.545 -480.477 -480.365 -480 + Bin 520: -480 -479.809 -479.737 -479.684 -479.643 -479.585 -479.558 -479.515 -479.447 -479.337 -479 + Bin 521: -479 -478.788 -478.736 -478.692 -478.66 -478.611 -478.578 -478.535 -478.46 -478.331 -478 + Bin 522: -478 -477.815 -477.744 -477.692 -477.651 -477.593 -477.559 -477.512 -477.448 -477.331 -477 + Bin 523: -477 -476.828 -476.75 -476.695 -476.658 -476.604 -476.567 -476.523 -476.462 -476.354 -476 + Bin 524: -476 -475.824 -475.745 -475.696 -475.659 -475.632 -475.572 -475.529 -475.461 -475.342 -475 + Bin 525: -475 -474.812 -474.736 -474.689 -474.655 -474.598 -474.566 -474.525 -474.458 -474.354 -474 + Bin 526: -474 -473.851 -473.776 -473.723 -473.684 -473.628 -473.594 -473.547 -473.479 -473.369 -473 + Bin 527: -473 -472.83 -472.764 -472.719 -472.681 -472.653 -472.6 -472.55 -472.487 -472.368 -472 + Bin 528: -472 -471.832 -471.756 -471.705 -471.665 -471.612 -471.578 -471.537 -471.474 -471.355 -471 + Bin 529: -471 -470.785 -470.725 -470.679 -470.644 -470.615 -470.563 -470.518 -470.458 -470.344 -470 + Bin 530: -470 -469.803 -469.728 -469.675 -469.637 -469.581 -469.55 -469.509 -469.452 -469.341 -469 + Bin 531: -469 -468.811 -468.75 -468.703 -468.671 -468.643 -468.587 -468.546 -468.479 -468.363 -468 + Bin 532: -468 -467.815 -467.755 -467.71 -467.669 -467.614 -467.586 -467.548 -467.491 -467.367 -467 + Bin 533: -467 -466.843 -466.771 -466.72 -466.683 -466.63 -466.598 -466.551 -466.486 -466.365 -466 + Bin 534: -466 -465.795 -465.735 -465.684 -465.65 -465.622 -465.569 -465.525 -465.458 -465.342 -465 + Bin 535: -465 -464.766 -464.703 -464.649 -464.612 -464.56 -464.529 -464.494 -464.43 -464.325 -464 + Bin 536: -464 -463.731 -463.677 -463.638 -463.605 -463.583 -463.531 -463.489 -463.424 -463.32 -463 + Bin 537: -463 -462.793 -462.731 -462.682 -462.649 -462.601 -462.574 -462.537 -462.481 -462.366 -462 + Bin 538: -462 -461.851 -461.794 -461.755 -461.72 -461.676 -461.641 -461.591 -461.524 -461.387 -461 + Bin 539: -461 -460.815 -460.744 -460.69 -460.652 -460.594 -460.564 -460.522 -460.46 -460.356 -460 + Bin 540: -460 -459.775 -459.725 -459.68 -459.65 -459.599 -459.571 -459.534 -459.472 -459.347 -459 + Bin 541: -459 -458.816 -458.747 -458.694 -458.656 -458.606 -458.572 -458.526 -458.462 -458.346 -458 + Bin 542: -458 -457.809 -457.743 -457.693 -457.658 -457.63 -457.58 -457.536 -457.471 -457.354 -457 + Bin 543: -457 -456.816 -456.766 -456.715 -456.654 -456.622 -456.587 -456.539 -456.469 -456.33 -456 + Bin 544: -456 -455.814 -455.757 -455.713 -455.681 -455.655 -455.6 -455.552 -455.478 -455.342 -455 + Bin 545: -455 -454.853 -454.788 -454.73 -454.691 -454.643 -454.607 -454.556 -454.477 -454.334 -454 + Bin 546: -454 -453.857 -453.806 -453.756 -453.712 -453.66 -453.626 -453.576 -453.493 -453.344 -453 + Bin 547: -453 -452.829 -452.774 -452.727 -452.689 -452.662 -452.598 -452.543 -452.465 -452.327 -452 + Bin 548: -452 -451.831 -451.782 -451.733 -451.698 -451.64 -451.607 -451.557 -451.474 -451.331 -451 + Bin 549: -451 -450.862 -450.806 -450.755 -450.719 -450.663 -450.623 -450.57 -450.495 -450.354 -450 + Bin 550: -450 -449.824 -449.767 -449.717 -449.679 -449.621 -449.589 -449.539 -449.469 -449.343 -449 + Bin 551: -449 -448.858 -448.786 -448.732 -448.694 -448.651 -448.598 -448.546 -448.471 -448.346 -448 + Bin 552: -448 -447.859 -447.79 -447.742 -447.703 -447.653 -447.616 -447.562 -447.484 -447.362 -447 + Bin 553: -447 -446.859 -446.777 -446.725 -446.678 -446.618 -446.584 -446.536 -446.461 -446.33 -446 + Bin 554: -446 -445.843 -445.79 -445.746 -445.713 -445.677 -445.62 -445.564 -445.484 -445.344 -445 + Bin 555: -445 -444.847 -444.788 -444.738 -444.698 -444.641 -444.607 -444.559 -444.485 -444.345 -444 + Bin 556: -444 -443.875 -443.803 -443.744 -443.704 -443.647 -443.608 -443.563 -443.49 -443.358 -443 + Bin 557: -443 -442.848 -442.789 -442.741 -442.706 -442.679 -442.616 -442.572 -442.499 -442.369 -442 + Bin 558: -442 -441.863 -441.795 -441.743 -441.705 -441.646 -441.614 -441.571 -441.499 -441.368 -441 + Bin 559: -441 -440.827 -440.768 -440.717 -440.674 -440.646 -440.593 -440.547 -440.481 -440.346 -440 + Bin 560: -440 -439.816 -439.749 -439.7 -439.663 -439.607 -439.575 -439.537 -439.48 -439.357 -439 + Bin 561: -439 -438.815 -438.76 -438.711 -438.676 -438.634 -438.6 -438.552 -438.489 -438.37 -438 + Bin 562: -438 -437.831 -437.767 -437.723 -437.686 -437.641 -437.608 -437.571 -437.51 -437.371 -437 + Bin 563: -437 -436.846 -436.784 -436.745 -436.712 -436.66 -436.631 -436.586 -436.521 -436.389 -436 + Bin 564: -436 -435.829 -435.77 -435.726 -435.693 -435.634 -435.608 -435.567 -435.508 -435.38 -435 + Bin 565: -435 -434.805 -434.75 -434.705 -434.674 -434.655 -434.599 -434.557 -434.487 -434.358 -434 + Bin 566: -434 -433.847 -433.798 -433.76 -433.732 -433.685 -433.65 -433.595 -433.471 -433.165 -433 + Bin 567: -433 -432.585 -432.352 -432.198 -432.099 -432.045 -432.039 -432.034 -432.026 -432.019 -432 + Bin 568: -432 -431.997 -431.992 -431.971 -431.933 -431.663 -431.169 -431.056 -431.023 -431.008 -431 + Bin 569: -431 -430.983 -430.972 -430.96 -430.952 -430.947 -430.895 -430.825 -430.728 -430.539 -430 + Bin 570: -430 -429.69 -429.584 -429.536 -429.501 -429.45 -429.429 -429.399 -429.351 -429.258 -429 + Bin 571: -429 -428.855 -428.795 -428.757 -428.724 -428.674 -428.645 -428.599 -428.53 -428.391 -428 + Bin 572: -428 -427.875 -427.809 -427.765 -427.735 -427.683 -427.652 -427.606 -427.539 -427.409 -427 + Bin 573: -427 -426.866 -426.796 -426.746 -426.709 -426.657 -426.628 -426.586 -426.523 -426.391 -426 + Bin 574: -426 -425.842 -425.779 -425.729 -425.697 -425.667 -425.616 -425.568 -425.505 -425.382 -425 + Bin 575: -425 -424.818 -424.756 -424.707 -424.671 -424.621 -424.593 -424.555 -424.499 -424.38 -424 + Bin 576: -424 -423.877 -423.803 -423.753 -423.718 -423.692 -423.63 -423.589 -423.53 -423.414 -423 + Bin 577: -423 -422.842 -422.768 -422.717 -422.68 -422.628 -422.6 -422.562 -422.507 -422.4 -422 + Bin 578: -422 -421.845 -421.78 -421.732 -421.695 -421.638 -421.61 -421.574 -421.512 -421.408 -421 + Bin 579: -421 -420.842 -420.776 -420.731 -420.699 -420.642 -420.611 -420.572 -420.515 -420.409 -420 + Bin 580: -420 -419.82 -419.76 -419.713 -419.679 -419.653 -419.596 -419.551 -419.487 -419.379 -419 + Bin 581: -419 -418.855 -418.788 -418.742 -418.701 -418.649 -418.621 -418.579 -418.518 -418.41 -418 + Bin 582: -418 -417.828 -417.761 -417.71 -417.674 -417.649 -417.594 -417.554 -417.488 -417.381 -417 + Bin 583: -417 -416.818 -416.749 -416.703 -416.668 -416.607 -416.585 -416.543 -416.485 -416.394 -416 + Bin 584: -416 -415.86 -415.786 -415.74 -415.704 -415.647 -415.618 -415.577 -415.515 -415.404 -415 + Bin 585: -415 -414.836 -414.767 -414.714 -414.681 -414.654 -414.599 -414.56 -414.505 -414.393 -414 + Bin 586: -414 -413.838 -413.766 -413.72 -413.68 -413.628 -413.593 -413.551 -413.488 -413.382 -413 + Bin 587: -413 -412.852 -412.791 -412.742 -412.707 -412.65 -412.616 -412.57 -412.503 -412.359 -412 + Bin 588: -412 -411.848 -411.773 -411.72 -411.68 -411.649 -411.594 -411.552 -411.486 -411.343 -411 + Bin 589: -411 -410.845 -410.781 -410.726 -410.691 -410.644 -410.606 -410.562 -410.5 -410.368 -410 + Bin 590: -410 -409.86 -409.791 -409.74 -409.704 -409.643 -409.613 -409.569 -409.504 -409.368 -409 + Bin 591: -409 -408.858 -408.795 -408.745 -408.707 -408.657 -408.62 -408.578 -408.51 -408.386 -408 + Bin 592: -408 -407.814 -407.741 -407.688 -407.647 -407.618 -407.566 -407.526 -407.464 -407.351 -407 + Bin 593: -407 -406.803 -406.733 -406.68 -406.642 -406.587 -406.555 -406.519 -406.458 -406.349 -406 + Bin 594: -406 -405.832 -405.766 -405.718 -405.684 -405.661 -405.612 -405.568 -405.501 -405.38 -405 + Bin 595: -405 -404.792 -404.74 -404.697 -404.665 -404.614 -404.586 -404.551 -404.497 -404.387 -404 + Bin 596: -404 -403.799 -403.717 -403.659 -403.623 -403.596 -403.546 -403.507 -403.443 -403.333 -403 + Bin 597: -403 -402.79 -402.711 -402.661 -402.626 -402.574 -402.544 -402.501 -402.446 -402.33 -402 + Bin 598: -402 -401.855 -401.8 -401.761 -401.728 -401.68 -401.648 -401.606 -401.543 -401.403 -401 + Bin 599: -401 -400.852 -400.776 -400.725 -400.684 -400.635 -400.608 -400.565 -400.501 -400.404 -400 + Bin 600: -400 -399.855 -399.778 -399.72 -399.684 -399.634 -399.604 -399.555 -399.485 -399.361 -399 + Bin 601: -399 -398.863 -398.784 -398.73 -398.694 -398.643 -398.611 -398.572 -398.506 -398.416 -398 + Bin 602: -398 -397.82 -397.743 -397.695 -397.655 -397.596 -397.568 -397.523 -397.463 -397.368 -397 + Bin 603: -397 -396.82 -396.745 -396.696 -396.664 -396.611 -396.581 -396.545 -396.483 -396.39 -396 + Bin 604: -396 -395.833 -395.758 -395.711 -395.672 -395.617 -395.585 -395.546 -395.484 -395.377 -395 + Bin 605: -395 -394.824 -394.755 -394.705 -394.668 -394.605 -394.576 -394.535 -394.472 -394.365 -394 + Bin 606: -394 -393.781 -393.716 -393.668 -393.628 -393.603 -393.548 -393.507 -393.451 -393.346 -393 + Bin 607: -393 -392.877 -392.821 -392.786 -392.755 -392.721 -392.686 -392.632 -392.466 -392.142 -392 + Bin 608: -392 -391.622 -391.382 -391.216 -391.084 -391.04 -391.035 -391.029 -391.021 -391.01 -391 + Bin 609: -391 -390.998 -390.994 -390.987 -390.966 -390.836 -390.277 -390.101 -390.042 -390.014 -390 + Bin 610: -390 -389.97 -389.947 -389.928 -389.917 -389.901 -389.794 -389.681 -389.572 -389.388 -389 + Bin 611: -389 -388.732 -388.556 -388.5 -388.463 -388.414 -388.39 -388.359 -388.312 -388.238 -388 + Bin 612: -388 -387.869 -387.788 -387.738 -387.699 -387.649 -387.621 -387.577 -387.501 -387.376 -387 + Bin 613: -387 -386.835 -386.768 -386.72 -386.685 -386.655 -386.597 -386.55 -386.48 -386.353 -386 + Bin 614: -386 -385.893 -385.838 -385.798 -385.766 -385.717 -385.679 -385.619 -385.488 -385.176 -385 + Bin 615: -385 -384.611 -384.383 -384.219 -384.11 -384.028 -384.024 -384.018 -384.014 -384.008 -384 + Bin 616: -384 -383.997 -383.993 -383.985 -383.964 -383.846 -383.266 -383.089 -383.038 -383.013 -383 + Bin 617: -383 -382.966 -382.947 -382.934 -382.924 -382.913 -382.791 -382.677 -382.55 -382.377 -382 + Bin 618: -382 -381.722 -381.552 -381.493 -381.462 -381.415 -381.395 -381.368 -381.324 -381.237 -381 + Bin 619: -381 -380.879 -380.8 -380.744 -380.704 -380.648 -380.612 -380.57 -380.497 -380.379 -380 + Bin 620: -380 -379.838 -379.754 -379.696 -379.655 -379.596 -379.568 -379.524 -379.454 -379.333 -379 + Bin 621: -379 -378.798 -378.732 -378.689 -378.654 -378.604 -378.572 -378.532 -378.465 -378.352 -378 + Bin 622: -378 -377.844 -377.777 -377.724 -377.685 -377.634 -377.603 -377.562 -377.497 -377.373 -377 + Bin 623: -377 -376.829 -376.757 -376.7 -376.662 -376.637 -376.583 -376.537 -376.47 -376.343 -376 + Bin 624: -376 -375.832 -375.755 -375.707 -375.67 -375.638 -375.579 -375.528 -375.458 -375.34 -375 + Bin 625: -375 -374.842 -374.757 -374.699 -374.661 -374.612 -374.578 -374.53 -374.469 -374.355 -374 + Bin 626: -374 -373.806 -373.733 -373.678 -373.64 -373.612 -373.548 -373.501 -373.437 -373.326 -373 + Bin 627: -373 -372.801 -372.714 -372.664 -372.625 -372.575 -372.542 -372.501 -372.438 -372.337 -372 + Bin 628: -372 -371.835 -371.768 -371.717 -371.685 -371.639 -371.608 -371.564 -371.493 -371.374 -371 + Bin 629: -371 -370.868 -370.788 -370.738 -370.699 -370.646 -370.615 -370.57 -370.506 -370.382 -370 + Bin 630: -370 -369.803 -369.729 -369.676 -369.64 -369.611 -369.55 -369.503 -369.441 -369.333 -369 + Bin 631: -369 -368.782 -368.714 -368.661 -368.623 -368.568 -368.539 -368.497 -368.439 -368.33 -368 + Bin 632: -368 -367.807 -367.722 -367.66 -367.623 -367.596 -367.543 -367.501 -367.438 -367.331 -367 + Bin 633: -367 -366.783 -366.71 -366.654 -366.618 -366.562 -366.53 -366.49 -366.428 -366.322 -366 + Bin 634: -366 -365.828 -365.752 -365.696 -365.66 -365.632 -365.58 -365.536 -365.459 -365.339 -365 + Bin 635: -365 -364.827 -364.759 -364.707 -364.663 -364.613 -364.58 -364.536 -364.467 -364.351 -364 + Bin 636: -364 -363.848 -363.776 -363.727 -363.69 -363.66 -363.604 -363.557 -363.49 -363.359 -363 + Bin 637: -363 -362.779 -362.696 -362.637 -362.594 -362.53 -362.502 -362.465 -362.404 -362.291 -362 + Bin 638: -362 -361.732 -361.674 -361.628 -361.594 -361.571 -361.519 -361.471 -361.408 -361.299 -361 + Bin 639: -361 -360.799 -360.72 -360.657 -360.61 -360.564 -360.535 -360.493 -360.431 -360.326 -360 + Bin 640: -360 -359.814 -359.739 -359.689 -359.652 -359.624 -359.574 -359.528 -359.464 -359.355 -359 + Bin 641: -359 -358.843 -358.758 -358.699 -358.659 -358.599 -358.566 -358.518 -358.454 -358.348 -358 + Bin 642: -358 -357.864 -357.799 -357.747 -357.715 -357.67 -357.636 -357.591 -357.521 -357.394 -357 + Bin 643: -357 -356.833 -356.749 -356.693 -356.657 -356.627 -356.571 -356.531 -356.473 -356.388 -356 + Bin 644: -356 -355.835 -355.746 -355.691 -355.656 -355.6 -355.569 -355.531 -355.48 -355.388 -355 + Bin 645: -355 -354.859 -354.775 -354.722 -354.682 -354.62 -354.589 -354.549 -354.483 -354.382 -354 + Bin 646: -354 -353.837 -353.752 -353.694 -353.657 -353.602 -353.572 -353.532 -353.47 -353.376 -353 + Bin 647: -353 -352.843 -352.77 -352.721 -352.684 -352.655 -352.6 -352.559 -352.494 -352.38 -352 + Bin 648: -352 -351.831 -351.743 -351.69 -351.65 -351.592 -351.565 -351.526 -351.461 -351.374 -351 + Bin 649: -351 -350.856 -350.771 -350.718 -350.683 -350.636 -350.596 -350.554 -350.491 -350.397 -350 + Bin 650: -350 -349.839 -349.754 -349.699 -349.66 -349.631 -349.577 -349.537 -349.469 -349.382 -349 + Bin 651: -349 -348.853 -348.766 -348.712 -348.669 -348.615 -348.586 -348.546 -348.475 -348.39 -348 + Bin 652: -348 -347.856 -347.777 -347.723 -347.688 -347.662 -347.604 -347.563 -347.493 -347.401 -347 + Bin 653: -347 -346.851 -346.76 -346.704 -346.665 -346.608 -346.575 -346.539 -346.481 -346.384 -346 + Bin 654: -346 -345.851 -345.775 -345.723 -345.683 -345.656 -345.597 -345.555 -345.489 -345.378 -345 + Bin 655: -345 -344.853 -344.774 -344.722 -344.686 -344.636 -344.603 -344.555 -344.485 -344.367 -344 + Bin 656: -344 -343.843 -343.741 -343.678 -343.642 -343.61 -343.548 -343.499 -343.43 -343.318 -343 + Bin 657: -343 -342.793 -342.711 -342.647 -342.607 -342.575 -342.513 -342.471 -342.401 -342.315 -342 + Bin 658: -342 -341.862 -341.774 -341.72 -341.678 -341.624 -341.591 -341.546 -341.478 -341.386 -341 + Bin 659: -341 -340.872 -340.782 -340.726 -340.685 -340.66 -340.593 -340.549 -340.479 -340.386 -340 + Bin 660: -340 -339.848 -339.759 -339.704 -339.664 -339.622 -339.581 -339.537 -339.475 -339.371 -339 + Bin 661: -339 -338.839 -338.742 -338.679 -338.643 -338.588 -338.556 -338.519 -338.453 -338.358 -338 + Bin 662: -338 -337.834 -337.745 -337.687 -337.649 -337.622 -337.561 -337.519 -337.449 -337.348 -337 + Bin 663: -337 -336.841 -336.764 -336.706 -336.666 -336.607 -336.576 -336.531 -336.466 -336.367 -336 + Bin 664: -336 -335.843 -335.749 -335.693 -335.654 -335.623 -335.569 -335.531 -335.473 -335.389 -335 + Bin 665: -335 -334.844 -334.747 -334.683 -334.641 -334.581 -334.549 -334.512 -334.442 -334.356 -334 + Bin 666: -334 -333.859 -333.767 -333.709 -333.666 -333.607 -333.574 -333.529 -333.458 -333.352 -333 + Bin 667: -333 -332.825 -332.731 -332.675 -332.63 -332.598 -332.544 -332.5 -332.436 -332.34 -332 + Bin 668: -332 -331.846 -331.753 -331.685 -331.644 -331.587 -331.555 -331.511 -331.449 -331.357 -331 + Bin 669: -331 -330.828 -330.743 -330.682 -330.642 -330.589 -330.553 -330.508 -330.438 -330.322 -330 + Bin 670: -330 -329.802 -329.74 -329.692 -329.656 -329.625 -329.567 -329.524 -329.459 -329.33 -329 + Bin 671: -329 -328.824 -328.774 -328.722 -328.689 -328.632 -328.597 -328.545 -328.469 -328.33 -328 + Bin 672: -328 -327.844 -327.778 -327.721 -327.685 -327.652 -327.586 -327.531 -327.46 -327.33 -327 + Bin 673: -327 -326.797 -326.742 -326.685 -326.641 -326.612 -326.554 -326.512 -326.442 -326.318 -326 + Bin 674: -326 -325.796 -325.732 -325.677 -325.64 -325.588 -325.556 -325.512 -325.441 -325.315 -325 + Bin 675: -325 -324.791 -324.735 -324.683 -324.641 -324.585 -324.558 -324.517 -324.45 -324.324 -324 + Bin 676: -324 -323.783 -323.737 -323.687 -323.654 -323.619 -323.566 -323.524 -323.454 -323.324 -323 + Bin 677: -323 -322.824 -322.763 -322.711 -322.67 -322.614 -322.584 -322.535 -322.468 -322.344 -322 + Bin 678: -322 -321.811 -321.735 -321.678 -321.638 -321.605 -321.546 -321.502 -321.434 -321.32 -321 + Bin 679: -321 -320.837 -320.768 -320.709 -320.673 -320.611 -320.577 -320.53 -320.457 -320.32 -320 + Bin 680: -320 -319.814 -319.765 -319.723 -319.691 -319.639 -319.607 -319.565 -319.493 -319.353 -319 + Bin 681: -319 -318.764 -318.727 -318.688 -318.657 -318.616 -318.578 -318.531 -318.462 -318.329 -318 + Bin 682: -318 -317.782 -317.737 -317.69 -317.654 -317.599 -317.568 -317.527 -317.464 -317.325 -317 + Bin 683: -317 -316.802 -316.754 -316.708 -316.672 -316.614 -316.58 -316.537 -316.464 -316.316 -316 + Bin 684: -316 -315.755 -315.711 -315.678 -315.654 -315.63 -315.566 -315.524 -315.458 -315.315 -315 + Bin 685: -315 -314.741 -314.669 -314.643 -314.621 -314.565 -314.542 -314.502 -314.433 -314.298 -314 + Bin 686: -314 -313.749 -313.713 -313.68 -313.654 -313.632 -313.581 -313.538 -313.473 -313.347 -313 + Bin 687: -313 -312.763 -312.681 -312.623 -312.586 -312.549 -312.509 -312.469 -312.417 -312.319 -312 + Bin 688: -312 -311.817 -311.742 -311.694 -311.662 -311.61 -311.579 -311.54 -311.476 -311.37 -311 + Bin 689: -311 -310.87 -310.796 -310.753 -310.719 -310.666 -310.638 -310.6 -310.53 -310.404 -310 + Bin 690: -310 -309.828 -309.753 -309.7 -309.651 -309.599 -309.568 -309.527 -309.456 -309.342 -309 + Bin 691: -309 -308.807 -308.734 -308.682 -308.646 -308.618 -308.559 -308.513 -308.447 -308.317 -308 + Bin 692: -308 -307.773 -307.707 -307.659 -307.625 -307.571 -307.545 -307.503 -307.437 -307.314 -307 + Bin 693: -307 -306.788 -306.731 -306.681 -306.644 -306.616 -306.565 -306.521 -306.453 -306.338 -306 + Bin 694: -306 -305.748 -305.701 -305.667 -305.637 -305.612 -305.563 -305.524 -305.463 -305.35 -305 + Bin 695: -305 -304.765 -304.724 -304.694 -304.664 -304.615 -304.59 -304.548 -304.489 -304.366 -304 + Bin 696: -304 -303.765 -303.73 -303.703 -303.677 -303.622 -303.597 -303.568 -303.505 -303.385 -303 + Bin 697: -303 -302.727 -302.687 -302.666 -302.644 -302.624 -302.571 -302.54 -302.483 -302.359 -302 + Bin 698: -302 -301.797 -301.751 -301.71 -301.679 -301.63 -301.603 -301.566 -301.505 -301.367 -301 + Bin 699: -301 -300.782 -300.743 -300.716 -300.692 -300.671 -300.622 -300.581 -300.512 -300.387 -300 + Bin 700: -300 -299.723 -299.667 -299.62 -299.584 -299.535 -299.509 -299.474 -299.418 -299.321 -299 + Bin 701: -299 -298.738 -298.693 -298.657 -298.628 -298.604 -298.549 -298.51 -298.447 -298.335 -298 + Bin 702: -298 -297.816 -297.75 -297.704 -297.667 -297.622 -297.597 -297.557 -297.499 -297.386 -297 + Bin 703: -297 -296.862 -296.786 -296.736 -296.704 -296.681 -296.631 -296.587 -296.532 -296.409 -296 + Bin 704: -296 -295.818 -295.745 -295.701 -295.669 -295.641 -295.587 -295.547 -295.492 -295.384 -295 + Bin 705: -295 -294.828 -294.759 -294.715 -294.681 -294.637 -294.608 -294.572 -294.511 -294.39 -294 + Bin 706: -294 -293.838 -293.76 -293.71 -293.676 -293.624 -293.594 -293.553 -293.496 -293.379 -293 + Bin 707: -293 -292.791 -292.735 -292.692 -292.658 -292.604 -292.58 -292.547 -292.486 -292.374 -292 + Bin 708: -292 -291.809 -291.75 -291.703 -291.671 -291.644 -291.589 -291.552 -291.491 -291.377 -291 + Bin 709: -291 -290.766 -290.708 -290.665 -290.633 -290.608 -290.559 -290.522 -290.472 -290.367 -290 + Bin 710: -290 -289.824 -289.749 -289.7 -289.668 -289.618 -289.591 -289.554 -289.498 -289.403 -289 + Bin 711: -289 -288.822 -288.749 -288.707 -288.669 -288.62 -288.591 -288.554 -288.498 -288.38 -288 + Bin 712: -288 -287.82 -287.749 -287.701 -287.667 -287.614 -287.59 -287.553 -287.496 -287.384 -287 + Bin 713: -287 -286.806 -286.74 -286.694 -286.664 -286.609 -286.582 -286.546 -286.489 -286.383 -286 + Bin 714: -286 -285.795 -285.734 -285.689 -285.657 -285.608 -285.581 -285.543 -285.488 -285.377 -285 + Bin 715: -285 -284.802 -284.729 -284.684 -284.648 -284.595 -284.567 -284.531 -284.476 -284.371 -284 + Bin 716: -284 -283.801 -283.715 -283.665 -283.625 -283.574 -283.55 -283.514 -283.462 -283.351 -283 + Bin 717: -283 -282.701 -282.653 -282.615 -282.59 -282.574 -282.526 -282.487 -282.445 -282.359 -282 + Bin 718: -282 -281.786 -281.705 -281.656 -281.622 -281.584 -281.557 -281.524 -281.477 -281.391 -281 + Bin 719: -281 -280.824 -280.755 -280.713 -280.684 -280.66 -280.605 -280.569 -280.508 -280.399 -280 + Bin 720: -280 -279.824 -279.749 -279.708 -279.675 -279.624 -279.594 -279.551 -279.492 -279.384 -279 + Bin 721: -279 -278.816 -278.741 -278.688 -278.658 -278.605 -278.577 -278.541 -278.481 -278.365 -278 + Bin 722: -278 -277.77 -277.697 -277.651 -277.621 -277.594 -277.531 -277.493 -277.443 -277.337 -277 + Bin 723: -277 -276.762 -276.698 -276.654 -276.624 -276.574 -276.548 -276.513 -276.456 -276.358 -276 + Bin 724: -276 -275.817 -275.739 -275.689 -275.656 -275.605 -275.577 -275.539 -275.482 -275.383 -275 + Bin 725: -275 -274.808 -274.732 -274.682 -274.648 -274.614 -274.568 -274.528 -274.472 -274.379 -274 + Bin 726: -274 -273.805 -273.719 -273.666 -273.632 -273.58 -273.55 -273.508 -273.455 -273.358 -273 + Bin 727: -273 -272.826 -272.742 -272.693 -272.657 -272.607 -272.579 -272.538 -272.476 -272.366 -272 + Bin 728: -272 -271.762 -271.705 -271.661 -271.63 -271.578 -271.553 -271.514 -271.451 -271.344 -271 + Bin 729: -271 -270.737 -270.698 -270.66 -270.634 -270.612 -270.561 -270.527 -270.468 -270.347 -270 + Bin 730: -270 -269.768 -269.715 -269.679 -269.647 -269.598 -269.575 -269.534 -269.479 -269.36 -269 + Bin 731: -269 -268.78 -268.713 -268.665 -268.629 -268.605 -268.559 -268.524 -268.466 -268.355 -268 + Bin 732: -268 -267.745 -267.688 -267.642 -267.61 -267.583 -267.532 -267.496 -267.445 -267.337 -267 + Bin 733: -267 -266.716 -266.672 -266.638 -266.614 -266.568 -266.544 -266.508 -266.452 -266.341 -266 + Bin 734: -266 -265.822 -265.74 -265.685 -265.648 -265.619 -265.565 -265.522 -265.464 -265.358 -265 + Bin 735: -265 -264.874 -264.803 -264.746 -264.696 -264.665 -264.63 -264.577 -264.498 -264.369 -264 + Bin 736: -264 -263.859 -263.796 -263.742 -263.702 -263.676 -263.621 -263.565 -263.49 -263.341 -263 + Bin 737: -263 -262.823 -262.749 -262.69 -262.648 -262.591 -262.559 -262.509 -262.436 -262.315 -262 + Bin 738: -262 -261.844 -261.76 -261.702 -261.658 -261.603 -261.569 -261.522 -261.452 -261.316 -261 + Bin 739: -261 -260.777 -260.737 -260.688 -260.653 -260.628 -260.569 -260.523 -260.45 -260.317 -260 + Bin 740: -260 -259.776 -259.737 -259.701 -259.668 -259.614 -259.579 -259.543 -259.477 -259.353 -259 + Bin 741: -259 -258.846 -258.757 -258.701 -258.657 -258.61 -258.576 -258.53 -258.47 -258.363 -258 + Bin 742: -258 -257.788 -257.743 -257.702 -257.664 -257.637 -257.583 -257.539 -257.465 -257.334 -257 + Bin 743: -257 -256.809 -256.747 -256.695 -256.653 -256.595 -256.567 -256.517 -256.443 -256.312 -256 + Bin 744: -256 -255.785 -255.748 -255.709 -255.678 -255.654 -255.603 -255.555 -255.488 -255.344 -255 + Bin 745: -255 -254.8 -254.753 -254.698 -254.652 -254.612 -254.581 -254.535 -254.466 -254.314 -254 + Bin 746: -254 -253.829 -253.776 -253.724 -253.69 -253.662 -253.602 -253.556 -253.483 -253.339 -253 + Bin 747: -253 -252.795 -252.737 -252.683 -252.646 -252.62 -252.568 -252.529 -252.464 -252.331 -252 + Bin 748: -252 -251.832 -251.782 -251.735 -251.698 -251.645 -251.613 -251.573 -251.505 -251.371 -251 + Bin 749: -251 -250.803 -250.765 -250.726 -250.695 -250.672 -250.62 -250.576 -250.504 -250.366 -250 + Bin 750: -250 -249.832 -249.772 -249.718 -249.676 -249.622 -249.591 -249.549 -249.474 -249.338 -249 + Bin 751: -249 -248.792 -248.758 -248.722 -248.692 -248.651 -248.615 -248.564 -248.491 -248.34 -248 + Bin 752: -248 -247.844 -247.783 -247.729 -247.689 -247.633 -247.602 -247.554 -247.483 -247.354 -247 + Bin 753: -247 -246.82 -246.76 -246.705 -246.669 -246.637 -246.574 -246.525 -246.454 -246.327 -246 + Bin 754: -246 -245.742 -245.704 -245.663 -245.631 -245.575 -245.545 -245.505 -245.443 -245.316 -245 + Bin 755: -245 -244.787 -244.747 -244.708 -244.675 -244.625 -244.596 -244.555 -244.491 -244.35 -244 + Bin 756: -244 -243.803 -243.757 -243.708 -243.669 -243.639 -243.578 -243.535 -243.47 -243.341 -243 + Bin 757: -243 -242.8 -242.755 -242.709 -242.675 -242.644 -242.578 -242.533 -242.467 -242.342 -242 + Bin 758: -242 -241.855 -241.777 -241.722 -241.684 -241.634 -241.604 -241.558 -241.492 -241.365 -241 + Bin 759: -241 -240.844 -240.767 -240.713 -240.674 -240.618 -240.587 -240.542 -240.469 -240.344 -240 + Bin 760: -240 -239.742 -239.702 -239.681 -239.658 -239.636 -239.583 -239.542 -239.481 -239.344 -239 + Bin 761: -239 -238.833 -238.764 -238.71 -238.67 -238.621 -238.592 -238.551 -238.482 -238.349 -238 + Bin 762: -238 -237.865 -237.803 -237.753 -237.715 -237.665 -237.638 -237.599 -237.526 -237.368 -237 + Bin 763: -237 -236.797 -236.748 -236.702 -236.666 -236.637 -236.575 -236.532 -236.467 -236.334 -236 + Bin 764: -236 -235.798 -235.738 -235.69 -235.656 -235.631 -235.576 -235.534 -235.468 -235.358 -235 + Bin 765: -235 -234.832 -234.757 -234.708 -234.67 -234.615 -234.58 -234.539 -234.466 -234.341 -234 + Bin 766: -234 -233.838 -233.765 -233.713 -233.674 -233.648 -233.591 -233.55 -233.482 -233.349 -233 + Bin 767: -233 -232.824 -232.749 -232.699 -232.662 -232.634 -232.578 -232.538 -232.477 -232.364 -232 + Bin 768: -232 -231.82 -231.749 -231.704 -231.667 -231.645 -231.591 -231.555 -231.498 -231.386 -231 + Bin 769: -231 -230.799 -230.739 -230.699 -230.667 -230.622 -230.593 -230.562 -230.507 -230.391 -230 + Bin 770: -230 -229.849 -229.783 -229.736 -229.703 -229.649 -229.624 -229.589 -229.532 -229.415 -229 + Bin 771: -229 -228.802 -228.755 -228.717 -228.688 -228.666 -228.613 -228.58 -228.525 -228.401 -228 + Bin 772: -228 -227.814 -227.755 -227.711 -227.678 -227.634 -227.609 -227.576 -227.517 -227.393 -227 + Bin 773: -227 -226.831 -226.774 -226.734 -226.702 -226.676 -226.627 -226.591 -226.524 -226.409 -226 + Bin 774: -226 -225.777 -225.727 -225.683 -225.65 -225.629 -225.575 -225.539 -225.48 -225.369 -225 + Bin 775: -225 -224.788 -224.733 -224.689 -224.661 -224.606 -224.583 -224.545 -224.49 -224.376 -224 + Bin 776: -224 -223.784 -223.723 -223.677 -223.649 -223.614 -223.566 -223.53 -223.473 -223.361 -223 + Bin 777: -223 -222.809 -222.752 -222.701 -222.653 -222.609 -222.576 -222.536 -222.474 -222.331 -222 + Bin 778: -222 -221.743 -221.618 -221.551 -221.513 -221.486 -221.439 -221.413 -221.387 -221.332 -221 + Bin 779: -221 -220.747 -220.693 -220.654 -220.625 -220.602 -220.556 -220.519 -220.463 -220.349 -220 + Bin 780: -220 -219.839 -219.783 -219.74 -219.706 -219.661 -219.635 -219.598 -219.533 -219.4 -219 + Bin 781: -219 -218.813 -218.763 -218.723 -218.69 -218.666 -218.607 -218.57 -218.509 -218.382 -218 + Bin 782: -218 -217.794 -217.741 -217.7 -217.672 -217.646 -217.594 -217.549 -217.481 -217.34 -217 + Bin 783: -217 -216.819 -216.784 -216.74 -216.687 -216.657 -216.624 -216.58 -216.507 -216.349 -216 + Bin 784: -216 -215.769 -215.653 -215.587 -215.544 -215.516 -215.465 -215.424 -215.389 -215.344 -215 + Bin 785: -215 -214.723 -214.671 -214.623 -214.583 -214.554 -214.507 -214.463 -214.402 -214.277 -214 + Bin 786: -214 -213.742 -213.702 -213.663 -213.631 -213.609 -213.556 -213.516 -213.449 -213.32 -213 + Bin 787: -213 -212.779 -212.738 -212.704 -212.658 -212.624 -212.596 -212.549 -212.48 -212.331 -212 + Bin 788: -212 -211.763 -211.65 -211.585 -211.552 -211.504 -211.486 -211.465 -211.447 -211.37 -211 + Bin 789: -211 -210.749 -210.703 -210.658 -210.623 -210.596 -210.544 -210.498 -210.428 -210.305 -210 + Bin 790: -210 -209.706 -209.669 -209.637 -209.608 -209.581 -209.527 -209.494 -209.437 -209.322 -209 + Bin 791: -209 -208.768 -208.731 -208.695 -208.665 -208.609 -208.582 -208.546 -208.488 -208.361 -208 + Bin 792: -208 -207.802 -207.754 -207.713 -207.68 -207.624 -207.597 -207.559 -207.496 -207.373 -207 + Bin 793: -207 -206.808 -206.728 -206.677 -206.644 -206.593 -206.566 -206.53 -206.471 -206.35 -206 + Bin 794: -206 -205.814 -205.759 -205.708 -205.675 -205.651 -205.593 -205.554 -205.495 -205.383 -205 + Bin 795: -205 -204.793 -204.726 -204.684 -204.653 -204.605 -204.575 -204.532 -204.473 -204.358 -204 + Bin 796: -204 -203.801 -203.746 -203.706 -203.673 -203.622 -203.594 -203.554 -203.49 -203.366 -203 + Bin 797: -203 -202.756 -202.718 -202.678 -202.648 -202.621 -202.572 -202.535 -202.471 -202.355 -202 + Bin 798: -202 -201.758 -201.727 -201.693 -201.664 -201.641 -201.589 -201.543 -201.481 -201.347 -201 + Bin 799: -201 -200.809 -200.763 -200.723 -200.685 -200.649 -200.622 -200.587 -200.52 -200.391 -200 + Bin 800: -200 -199.817 -199.747 -199.688 -199.648 -199.617 -199.566 -199.516 -199.445 -199.321 -199 + Bin 801: -199 -198.748 -198.711 -198.673 -198.643 -198.589 -198.562 -198.523 -198.457 -198.333 -198 + Bin 802: -198 -197.782 -197.73 -197.679 -197.645 -197.585 -197.558 -197.516 -197.448 -197.342 -197 + Bin 803: -197 -196.821 -196.749 -196.693 -196.657 -196.599 -196.569 -196.523 -196.453 -196.338 -196 + Bin 804: -196 -195.835 -195.757 -195.698 -195.658 -195.6 -195.566 -195.52 -195.446 -195.324 -195 + Bin 805: -195 -194.806 -194.737 -194.682 -194.644 -194.614 -194.56 -194.517 -194.45 -194.334 -194 + Bin 806: -194 -193.814 -193.728 -193.667 -193.627 -193.578 -193.546 -193.504 -193.438 -193.33 -193 + Bin 807: -193 -192.82 -192.739 -192.681 -192.642 -192.611 -192.561 -192.51 -192.434 -192.315 -192 + Bin 808: -192 -191.803 -191.727 -191.67 -191.629 -191.575 -191.548 -191.502 -191.437 -191.314 -191 + Bin 809: -191 -190.75 -190.701 -190.653 -190.618 -190.589 -190.533 -190.486 -190.417 -190.295 -190 + Bin 810: -190 -189.781 -189.731 -189.679 -189.64 -189.591 -189.559 -189.517 -189.444 -189.318 -189 + Bin 811: -189 -188.748 -188.659 -188.63 -188.617 -188.569 -188.557 -188.538 -188.493 -188.376 -188 + Bin 812: -188 -187.745 -187.668 -187.611 -187.573 -187.544 -187.497 -187.447 -187.387 -187.294 -187 + Bin 813: -187 -186.796 -186.711 -186.659 -186.616 -186.568 -186.538 -186.499 -186.439 -186.342 -186 + Bin 814: -186 -185.851 -185.763 -185.707 -185.666 -185.636 -185.575 -185.537 -185.473 -185.382 -185 + Bin 815: -185 -184.831 -184.742 -184.683 -184.649 -184.621 -184.569 -184.525 -184.463 -184.355 -184 + Bin 816: -184 -183.796 -183.721 -183.672 -183.637 -183.614 -183.554 -183.518 -183.459 -183.356 -183 + Bin 817: -183 -182.825 -182.75 -182.694 -182.663 -182.607 -182.583 -182.55 -182.496 -182.399 -182 + Bin 818: -182 -181.799 -181.722 -181.675 -181.637 -181.609 -181.555 -181.515 -181.457 -181.358 -181 + Bin 819: -181 -180.786 -180.703 -180.649 -180.613 -180.586 -180.534 -180.497 -180.442 -180.341 -180 + Bin 820: -180 -179.817 -179.741 -179.691 -179.656 -179.622 -179.58 -179.542 -179.488 -179.386 -179 + Bin 821: -179 -178.845 -178.755 -178.705 -178.667 -178.616 -178.59 -178.555 -178.499 -178.393 -178 + Bin 822: -178 -177.823 -177.741 -177.692 -177.654 -177.625 -177.579 -177.54 -177.476 -177.369 -177 + Bin 823: -177 -176.818 -176.746 -176.697 -176.662 -176.614 -176.588 -176.552 -176.494 -176.381 -176 + Bin 824: -176 -175.794 -175.723 -175.67 -175.634 -175.607 -175.552 -175.515 -175.458 -175.347 -175 + Bin 825: -175 -174.778 -174.731 -174.692 -174.66 -174.611 -174.585 -174.552 -174.5 -174.382 -174 + Bin 826: -174 -173.789 -173.726 -173.68 -173.649 -173.621 -173.574 -173.534 -173.483 -173.378 -173 + Bin 827: -173 -172.77 -172.708 -172.661 -172.625 -172.578 -172.552 -172.521 -172.469 -172.363 -172 + Bin 828: -172 -171.793 -171.731 -171.689 -171.66 -171.634 -171.586 -171.55 -171.491 -171.381 -171 + Bin 829: -171 -170.818 -170.745 -170.696 -170.654 -170.603 -170.581 -170.546 -170.487 -170.376 -170 + Bin 830: -170 -169.748 -169.691 -169.648 -169.619 -169.599 -169.557 -169.522 -169.467 -169.364 -169 + Bin 831: -169 -168.859 -168.791 -168.75 -168.715 -168.67 -168.641 -168.596 -168.533 -168.414 -168 + Bin 832: -168 -167.848 -167.774 -167.726 -167.695 -167.668 -167.622 -167.576 -167.518 -167.404 -167 + Bin 833: -167 -166.814 -166.769 -166.73 -166.7 -166.652 -166.627 -166.591 -166.532 -166.395 -166 + Bin 834: -166 -165.859 -165.812 -165.772 -165.742 -165.719 -165.667 -165.63 -165.565 -165.437 -165 + Bin 835: -165 -164.857 -164.786 -164.74 -164.702 -164.653 -164.627 -164.591 -164.532 -164.407 -164 + Bin 836: -164 -163.845 -163.791 -163.749 -163.717 -163.67 -163.64 -163.599 -163.537 -163.404 -163 + Bin 837: -163 -162.858 -162.774 -162.725 -162.688 -162.642 -162.609 -162.569 -162.506 -162.383 -162 + Bin 838: -162 -161.812 -161.755 -161.708 -161.678 -161.625 -161.597 -161.562 -161.498 -161.367 -161 + Bin 839: -161 -160.758 -160.711 -160.696 -160.679 -160.66 -160.612 -160.579 -160.521 -160.39 -160 + Bin 840: -160 -159.791 -159.761 -159.728 -159.701 -159.66 -159.633 -159.597 -159.536 -159.407 -159 + Bin 841: -159 -158.806 -158.768 -158.73 -158.699 -158.652 -158.628 -158.593 -158.53 -158.389 -158 + Bin 842: -158 -157.836 -157.784 -157.743 -157.711 -157.685 -157.637 -157.596 -157.534 -157.401 -157 + Bin 843: -157 -156.86 -156.822 -156.786 -156.759 -156.72 -156.684 -156.631 -156.485 -156.13 -156 + Bin 844: -156 -155.549 -155.296 -155.128 -155.025 -155.009 -155.008 -155.006 -155.005 -155.004 -155 + Bin 845: -155 -154.999 -154.998 -154.993 -154.984 -154.918 -154.499 -154.15 -154.056 -154.021 -154 + Bin 846: -154 -153.961 -153.929 -153.909 -153.893 -153.883 -153.747 -153.543 -153.394 -153.26 -153 + Bin 847: -153 -152.701 -152.554 -152.513 -152.489 -152.449 -152.433 -152.408 -152.366 -152.275 -152 + Bin 848: -152 -151.915 -151.873 -151.839 -151.812 -151.77 -151.743 -151.707 -151.649 -151.519 -151 + Bin 849: -151 -150.884 -150.826 -150.786 -150.755 -150.716 -150.693 -150.659 -150.605 -150.491 -150 + Bin 850: -150 -149.85 -149.804 -149.767 -149.739 -149.72 -149.677 -149.644 -149.596 -149.48 -149 + Bin 851: -149 -148.828 -148.781 -148.744 -148.71 -148.674 -148.649 -148.618 -148.567 -148.462 -148 + Bin 852: -148 -147.871 -147.821 -147.784 -147.757 -147.713 -147.689 -147.655 -147.605 -147.492 -147 + Bin 853: -147 -146.857 -146.804 -146.763 -146.734 -146.689 -146.669 -146.636 -146.584 -146.465 -146 + Bin 854: -146 -145.862 -145.808 -145.771 -145.744 -145.702 -145.677 -145.644 -145.591 -145.479 -145 + Bin 855: -145 -144.872 -144.817 -144.777 -144.743 -144.705 -144.684 -144.649 -144.592 -144.483 -144 + Bin 856: -144 -143.835 -143.788 -143.75 -143.722 -143.698 -143.652 -143.619 -143.573 -143.461 -143 + Bin 857: -143 -142.789 -142.756 -142.728 -142.704 -142.664 -142.645 -142.615 -142.568 -142.464 -142 + Bin 858: -142 -141.841 -141.786 -141.747 -141.717 -141.694 -141.652 -141.622 -141.564 -141.466 -141 + Bin 859: -141 -140.799 -140.761 -140.728 -140.702 -140.661 -140.639 -140.613 -140.563 -140.461 -140 + Bin 860: -140 -139.811 -139.78 -139.753 -139.731 -139.692 -139.664 -139.632 -139.58 -139.473 -139 + Bin 861: -139 -138.843 -138.807 -138.772 -138.745 -138.703 -138.682 -138.649 -138.592 -138.468 -138 + Bin 862: -138 -137.865 -137.813 -137.772 -137.742 -137.722 -137.676 -137.644 -137.592 -137.477 -137 + Bin 863: -137 -136.806 -136.773 -136.74 -136.715 -136.672 -136.646 -136.613 -136.557 -136.433 -136 + Bin 864: -136 -135.819 -135.785 -135.747 -135.716 -135.693 -135.644 -135.605 -135.54 -135.428 -135 + Bin 865: -135 -134.775 -134.744 -134.713 -134.687 -134.642 -134.615 -134.579 -134.52 -134.403 -134 + Bin 866: -134 -133.818 -133.776 -133.741 -133.713 -133.689 -133.637 -133.598 -133.541 -133.411 -133 + Bin 867: -133 -132.792 -132.752 -132.713 -132.683 -132.632 -132.606 -132.571 -132.515 -132.398 -132 + Bin 868: -132 -131.768 -131.731 -131.698 -131.666 -131.646 -131.598 -131.559 -131.506 -131.393 -131 + Bin 869: -131 -130.801 -130.75 -130.704 -130.674 -130.633 -130.604 -130.569 -130.512 -130.392 -130 + Bin 870: -130 -129.812 -129.761 -129.72 -129.693 -129.649 -129.623 -129.585 -129.529 -129.41 -129 + Bin 871: -129 -128.808 -128.749 -128.704 -128.672 -128.646 -128.602 -128.563 -128.51 -128.388 -128 + Bin 872: -128 -127.837 -127.786 -127.746 -127.715 -127.668 -127.641 -127.602 -127.539 -127.411 -127 + Bin 873: -127 -126.859 -126.795 -126.753 -126.715 -126.668 -126.644 -126.607 -126.545 -126.423 -126 + Bin 874: -126 -125.81 -125.752 -125.712 -125.681 -125.658 -125.61 -125.572 -125.515 -125.397 -125 + Bin 875: -125 -124.806 -124.755 -124.715 -124.682 -124.637 -124.611 -124.577 -124.514 -124.393 -124 + Bin 876: -124 -123.829 -123.768 -123.727 -123.697 -123.648 -123.622 -123.583 -123.526 -123.411 -123 + Bin 877: -123 -122.803 -122.756 -122.714 -122.683 -122.657 -122.611 -122.568 -122.513 -122.391 -122 + Bin 878: -122 -121.788 -121.749 -121.71 -121.678 -121.638 -121.613 -121.578 -121.524 -121.409 -121 + Bin 879: -121 -120.78 -120.733 -120.692 -120.655 -120.627 -120.577 -120.538 -120.482 -120.373 -120 + Bin 880: -120 -119.723 -119.687 -119.671 -119.654 -119.637 -119.596 -119.565 -119.519 -119.417 -119 + Bin 881: -119 -118.786 -118.751 -118.724 -118.699 -118.664 -118.643 -118.615 -118.564 -118.463 -118 + Bin 882: -118 -117.767 -117.733 -117.703 -117.678 -117.658 -117.62 -117.588 -117.539 -117.435 -117 + Bin 883: -117 -116.821 -116.774 -116.735 -116.706 -116.662 -116.638 -116.607 -116.558 -116.451 -116 + Bin 884: -116 -115.865 -115.813 -115.774 -115.743 -115.698 -115.675 -115.643 -115.589 -115.469 -115 + Bin 885: -115 -114.777 -114.733 -114.701 -114.672 -114.654 -114.612 -114.58 -114.526 -114.418 -114 + Bin 886: -114 -113.78 -113.745 -113.711 -113.685 -113.645 -113.623 -113.592 -113.542 -113.434 -113 + Bin 887: -113 -112.815 -112.766 -112.727 -112.702 -112.681 -112.638 -112.604 -112.55 -112.437 -112 + Bin 888: -112 -111.834 -111.791 -111.751 -111.725 -111.686 -111.663 -111.628 -111.578 -111.456 -111 + Bin 889: -111 -110.832 -110.793 -110.756 -110.729 -110.68 -110.656 -110.621 -110.567 -110.448 -110 + Bin 890: -110 -109.771 -109.737 -109.708 -109.679 -109.638 -109.616 -109.585 -109.534 -109.421 -109 + Bin 891: -109 -108.773 -108.736 -108.707 -108.678 -108.658 -108.614 -108.584 -108.534 -108.429 -108 + Bin 892: -108 -107.783 -107.738 -107.707 -107.68 -107.64 -107.617 -107.582 -107.528 -107.418 -107 + Bin 893: -107 -106.823 -106.782 -106.744 -106.719 -106.68 -106.655 -106.622 -106.568 -106.461 -106 + Bin 894: -106 -105.805 -105.752 -105.71 -105.681 -105.659 -105.614 -105.578 -105.522 -105.415 -105 + Bin 895: -105 -104.841 -104.788 -104.752 -104.718 -104.679 -104.655 -104.616 -104.555 -104.428 -104 + Bin 896: -104 -103.848 -103.8 -103.761 -103.73 -103.707 -103.653 -103.609 -103.541 -103.411 -103 + Bin 897: -103 -102.751 -102.71 -102.67 -102.638 -102.612 -102.568 -102.529 -102.474 -102.37 -102 + Bin 898: -102 -101.768 -101.722 -101.685 -101.657 -101.634 -101.588 -101.555 -101.504 -101.388 -101 + Bin 899: -101 -100.837 -100.78 -100.735 -100.705 -100.663 -100.633 -100.595 -100.537 -100.42 -100 + Bin 900: -100 -99.7859 -99.7446 -99.7092 -99.6775 -99.6357 -99.612 -99.5757 -99.5219 -99.4134 -99 + Bin 901: -99 -98.6741 -98.6228 -98.5748 -98.536 -98.5031 -98.4512 -98.4139 -98.3706 -98.2763 -98 + Bin 902: -98 -97.6798 -97.6282 -97.5991 -97.5751 -97.5571 -97.5316 -97.4948 -97.4479 -97.3541 -97 + Bin 903: -97 -96.4444 -96.3168 -96.2046 -96.0839 -96.0142 -96.0049 -96.0006 -95.9994 -95.9994 -96 + Bin 904: -96 -95.4996 -95.4996 -95.4996 -95.4996 -95.4996 -95.4996 -95.4996 -95.4996 -95.4996 -95 + Bin 905: -95 -nan -nan -nan -nan -nan -nan -nan -nan -nan -94 + Bin 906: -94 -94 -93.9999 -93.8147 -93.7267 -93.713 -93.6951 -93.6472 -93.5882 -93.4646 -93 + Bin 907: -93 -92.7511 -92.719 -92.6959 -92.6586 -92.6352 -92.6124 -92.5771 -92.517 -92.3506 -92 + Bin 908: -92 -91.8885 -91.8617 -91.8365 -91.8124 -91.7917 -91.7398 -91.6996 -91.6315 -91.492 -91 + Bin 909: -91 -90.7418 -90.7084 -90.6891 -90.6674 -90.6485 -90.602 -90.5707 -90.5132 -90.3916 -90 + Bin 910: -90 -89.7639 -89.7267 -89.7033 -89.6814 -89.6432 -89.622 -89.5871 -89.5367 -89.4346 -89 + Bin 911: -89 -88.7559 -88.7265 -88.6949 -88.6662 -88.643 -88.6013 -88.559 -88.5018 -88.3865 -88 + Bin 912: -88 -87.7509 -87.7163 -87.6919 -87.6718 -87.6268 -87.6049 -87.5703 -87.515 -87.3974 -87 + Bin 913: -87 -86.7495 -86.7194 -86.6941 -86.6703 -86.6295 -86.6066 -86.572 -86.5202 -86.4021 -86 + Bin 914: -86 -85.7407 -85.7049 -85.6682 -85.6385 -85.5888 -85.5614 -85.5268 -85.4702 -85.3669 -85 + Bin 915: -85 -84.6809 -84.6459 -84.6134 -84.5884 -84.5655 -84.5272 -84.4915 -84.4408 -84.342 -84 + Bin 916: -84 -83.8015 -83.7748 -83.7501 -83.7253 -83.6955 -83.6674 -83.618 -83.5121 -83.1655 -83 + Bin 917: -83 -82.5964 -82.3526 -82.1906 -82.0764 -82.0267 -82.0231 -82.02 -82.014 -82.0077 -82 + Bin 918: -82 -81.9983 -81.9936 -81.9835 -81.9468 -81.6751 -81.2598 -81.096 -81.038 -81.0133 -81 + Bin 919: -81 -80.9644 -80.9397 -80.9171 -80.8999 -80.8895 -80.7773 -80.5883 -80.4391 -80.2706 -80 + Bin 920: -80 -79.7879 -79.5963 -79.55 -79.529 -79.4967 -79.4743 -79.4334 -79.3428 -79.1018 -79 + Bin 921: -79 -78.6999 -78.488 -78.3283 -78.1767 -78.0871 -78.0756 -78.0598 -78.0435 -78.0259 -78 + Bin 922: -78 -77.9907 -77.9759 -77.9482 -77.8778 -77.603 -77.1434 -77.0616 -77.0281 -77.0106 -77 + Bin 923: -77 -76.958 -76.9262 -76.9003 -76.8739 -76.8574 -76.7055 -76.5564 -76.4049 -76.2279 -76 + Bin 924: -76 -75.8536 -75.558 -75.4641 -75.4377 -75.4184 -75.3966 -75.3677 -75.3312 -75.257 -75 + Bin 925: -75 -74.4134 -74.3138 -74.2085 -74.0745 -73.9972 -73.9972 -73.9972 -73.997 -73.997 -74 + Bin 926: -74 -74 -74 -74 -74 -74 -74 -73.0013 -73.0013 -73.0013 -73 + Bin 927: -73 -72.6654 -72.6654 -72.6654 -72.6654 -72.6654 -72.6654 -72.6654 -72.3328 -72.3328 -72 + Bin 928: -72 -71.9998 -71.9998 -71.9998 -71.9998 -71.9998 -71.9693 -71.893 -71.803 -71.6303 -71 + Bin 929: -71 -70.7225 -70.679 -70.6545 -70.6198 -70.5931 -70.5722 -70.5425 -70.4855 -70.344 -70 + Bin 930: -70 -69.906 -69.8819 -69.854 -69.8327 -69.8155 -69.7657 -69.7238 -69.6525 -69.4957 -69 + Bin 931: -69 -68.8796 -68.8323 -68.7883 -68.7516 -68.7087 -68.6802 -68.6437 -68.5815 -68.4409 -68 + Bin 932: -68 -67.7997 -67.7669 -67.7448 -67.7239 -67.7044 -67.6621 -67.6241 -67.5656 -67.4454 -67 + Bin 933: -67 -66.7668 -66.7269 -66.7045 -66.6816 -66.6397 -66.6184 -66.5869 -66.5347 -66.4113 -66 + Bin 934: -66 -65.8086 -65.7806 -65.7509 -65.7237 -65.6831 -65.6584 -65.6234 -65.5649 -65.4362 -65 + Bin 935: -65 -64.7928 -64.759 -64.7363 -64.7114 -64.6708 -64.648 -64.612 -64.5567 -64.4407 -64 + Bin 936: -64 -63.8039 -63.7752 -63.7486 -63.7208 -63.6993 -63.6534 -63.618 -63.5545 -63.4294 -63 + Bin 937: -63 -62.816 -62.7879 -62.7604 -62.7351 -62.691 -62.666 -62.6327 -62.5731 -62.4519 -62 + Bin 938: -62 -61.7716 -61.7377 -61.7129 -61.6894 -61.669 -61.628 -61.5939 -61.5358 -61.41 -61 + Bin 939: -61 -60.7831 -60.7512 -60.7313 -60.7095 -60.6694 -60.6465 -60.6138 -60.5547 -60.4252 -60 + Bin 940: -60 -59.7872 -59.7551 -59.735 -59.7138 -59.6947 -59.6558 -59.6224 -59.566 -59.4465 -59 + Bin 941: -59 -58.777 -58.7448 -58.7211 -58.695 -58.6558 -58.6335 -58.6015 -58.5488 -58.4318 -58 + Bin 942: -58 -57.7887 -57.7514 -57.722 -57.6931 -57.6697 -57.6243 -57.5905 -57.5354 -57.4167 -57 + Bin 943: -57 -56.8123 -56.7709 -56.74 -56.7088 -56.6732 -56.6417 -56.5995 -56.5281 -56.3872 -56 + Bin 944: -56 -55.8144 -55.78 -55.7565 -55.73 -55.6909 -55.6597 -55.6181 -55.5526 -55.4151 -55 + Bin 945: -55 -54.7432 -54.651 -54.6148 -54.6017 -54.5959 -54.5652 -54.5451 -54.496 -54.3772 -54 + Bin 946: -54 -53.7648 -53.6925 -53.6726 -53.6653 -53.633 -53.619 -53.5891 -53.5391 -53.3985 -53 + Bin 947: -53 -52.7752 -52.6976 -52.6658 -52.6546 -52.626 -52.6202 -52.6014 -52.5529 -52.4196 -52 + Bin 948: -52 -51.7905 -51.7149 -51.6847 -51.6736 -51.6518 -51.6396 -51.6188 -51.5671 -51.4344 -51 + Bin 949: -51 -50.7726 -50.6872 -50.6448 -50.6203 -50.5899 -50.5846 -50.578 -50.5397 -50.424 -50 + Bin 950: -50 -49.7742 -49.6899 -49.6496 -49.6267 -49.5965 -49.5887 -49.5808 -49.5427 -49.4123 -49 + Bin 951: -49 -48.7748 -48.6893 -48.6462 -48.622 -48.591 -48.5844 -48.5754 -48.5354 -48.4135 -48 + Bin 952: -48 -47.7695 -47.6772 -47.6305 -47.6039 -47.5647 -47.5475 -47.5383 -47.512 -47.3986 -47 + Bin 953: -47 -46.7796 -46.6967 -46.6543 -46.6299 -46.593 -46.5856 -46.5768 -46.5478 -46.4266 -46 + Bin 954: -46 -45.7702 -45.69 -45.6482 -45.6259 -45.6156 -45.5892 -45.5782 -45.5417 -45.4196 -45 + Bin 955: -45 -44.7097 -44.6163 -44.5805 -44.5669 -44.5386 -44.5308 -44.5113 -44.4714 -44.3792 -44 + Bin 956: -44 -43.7301 -43.6299 -43.5824 -43.5626 -43.5515 -43.5361 -43.5149 -43.4788 -43.3732 -43 + Bin 957: -43 -42.3932 -42.1961 -42.0982 -42.0255 -41.9974 -41.9974 -41.9974 -41.9974 -41.9974 -42 + Bin 958: -42 -nan -nan -nan -nan -nan -nan -nan -nan -nan -41 + Bin 959: -41 -40.4985 -40.4985 -39.9976 -39.9976 -39.9976 -39.9976 -39.9976 -39.9976 -39.9976 -40 + Bin 960: -40 -39.9999 -39.9999 -39.9999 -39.9999 -39.9997 -39.9745 -39.9231 -39.8796 -39.7259 -39 + Bin 961: -39 -38.735 -38.6567 -38.6288 -38.6129 -38.5946 -38.5838 -38.5573 -38.5035 -38.3094 -38 + Bin 962: -38 -37.8654 -37.8108 -37.7897 -37.7762 -37.748 -37.7384 -37.7235 -37.6693 -37.5271 -37 + Bin 963: -37 -36.7823 -36.7071 -36.67 -36.6515 -36.6212 -36.6149 -36.6034 -36.5657 -36.4481 -36 + Bin 964: -36 -35.7664 -35.6914 -35.6593 -35.6446 -35.6158 -35.6077 -35.5904 -35.5458 -35.4198 -35 + Bin 965: -35 -34.7826 -34.7016 -34.6647 -34.6464 -34.6138 -34.6057 -34.5943 -34.5619 -34.4577 -34 + Bin 966: -34 -33.7494 -33.6558 -33.6128 -33.5857 -33.5703 -33.5368 -33.5262 -33.5035 -33.4072 -33 + Bin 967: -33 -32.7635 -32.6806 -32.6421 -32.6203 -32.6104 -32.5774 -32.569 -32.5417 -32.4383 -32 + Bin 968: -32 -31.7579 -31.6771 -31.6387 -31.6179 -31.5892 -31.5761 -31.5629 -31.5366 -31.4411 -31 + Bin 969: -31 -30.7676 -30.6958 -30.6677 -30.6553 -30.6282 -30.6215 -30.6037 -30.5602 -30.4442 -30 + Bin 970: -30 -29.7511 -29.6731 -29.6485 -29.6399 -29.6352 -29.6077 -29.5907 -29.5509 -29.4494 -29 + Bin 971: -29 -28.7465 -28.681 -28.6627 -28.6561 -28.6352 -28.6123 -28.5867 -28.5403 -28.4214 -28 + Bin 972: -28 -27.7855 -27.727 -27.7109 -27.7005 -27.6695 -27.6548 -27.6268 -27.5756 -27.4577 -27 + Bin 973: -27 -26.7668 -26.7119 -26.6979 -26.6868 -26.6742 -26.6336 -26.6044 -26.5514 -26.4264 -26 + Bin 974: -26 -25.7702 -25.7225 -25.7071 -25.6931 -25.6562 -25.6301 -25.5999 -25.5458 -25.4067 -25 + Bin 975: -25 -24.7858 -24.7192 -24.7021 -24.6905 -24.663 -24.6465 -24.6182 -24.5637 -24.4286 -24 + Bin 976: -24 -23.7671 -23.6952 -23.6744 -23.6676 -23.6585 -23.6187 -23.5855 -23.5203 -23.3848 -23 + Bin 977: -23 -22.7505 -22.6882 -22.673 -22.6572 -22.619 -22.5986 -22.5629 -22.5047 -22.3826 -22 + Bin 978: -22 -21.7203 -21.6362 -21.6103 -21.6024 -21.5929 -21.5596 -21.5272 -21.4758 -21.3662 -21 + Bin 979: -21 -20.7422 -20.6631 -20.6398 -20.6306 -20.5962 -20.578 -20.5475 -20.49 -20.3584 -20 + Bin 980: -20 -19.7796 -19.7275 -19.7115 -19.6912 -19.6525 -19.626 -19.5899 -19.5253 -19.3876 -19 + Bin 981: -19 -18.7431 -18.6681 -18.6506 -18.6408 -18.6278 -18.5865 -18.5529 -18.4938 -18.3656 -18 + Bin 982: -18 -17.7578 -17.6939 -17.6791 -17.6616 -17.624 -17.6025 -17.5661 -17.5068 -17.37 -17 + Bin 983: -17 -16.7478 -16.6694 -16.6476 -16.6394 -16.6289 -16.5905 -16.5565 -16.5019 -16.3844 -16 + Bin 984: -16 -15.7375 -15.6593 -15.6367 -15.6276 -15.6162 -15.575 -15.5433 -15.4846 -15.3561 -15 + Bin 985: -15 -14.7655 -14.7035 -14.6892 -14.6706 -14.6309 -14.6083 -14.5716 -14.5093 -14.3752 -14 + Bin 986: -14 -13.7386 -13.6532 -13.6263 -13.6197 -13.5916 -13.5748 -13.5418 -13.4865 -13.3657 -13 + Bin 987: -13 -12.7282 -12.6403 -12.6071 -12.5988 -12.5926 -12.5618 -12.5356 -12.4784 -12.3562 -12 + Bin 988: -12 -11.7439 -11.6623 -11.6331 -11.6234 -11.592 -11.5786 -11.553 -11.5012 -11.3708 -11 + Bin 989: -11 -10.7578 -10.6731 -10.6422 -10.6324 -10.6255 -10.5925 -10.565 -10.5079 -10.3808 -10 + Bin 990: -10 -9.75263 -9.67593 -9.65519 -9.64425 -9.60812 -9.58942 -9.56201 -9.50382 -9.37883 -9 + Bin 991: -9 -8.7136 -8.62565 -8.59305 -8.58387 -8.57637 -8.54833 -8.52117 -8.4736 -8.3622 -8 + Bin 992: -8 -7.72358 -7.64465 -7.62074 -7.61178 -7.58523 -7.57439 -7.55011 -7.50336 -7.39512 -7 + Bin 993: -7 -6.75084 -6.68583 -6.6698 -6.65998 -6.62914 -6.61203 -6.58352 -6.52999 -6.41318 -6 + Bin 994: -6 -5.7571 -5.68628 -5.66382 -5.65493 -5.64871 -5.618 -5.59346 -5.54679 -5.43593 -5 + Bin 995: -5 -4.74345 -4.66605 -4.63998 -4.63186 -4.62574 -4.59801 -4.57494 -4.53201 -4.42125 -4 + Bin 996: -4 -3.74385 -3.67135 -3.65039 -3.64274 -3.61481 -3.60067 -3.57591 -3.52848 -3.42884 -3 + Bin 997: -3 -2.74908 -2.68373 -2.6659 -2.65715 -2.62848 -2.61313 -2.5851 -2.53483 -2.41661 -2 + Bin 998: -2 -1.74032 -1.67658 -1.66238 -1.64652 -1.61025 -1.59122 -1.56123 -1.51639 -1.4062 -1 + Bin 999: -1 -0.732216 -0.655046 -0.634542 -0.625904 -0.618536 -0.585297 -0.558074 -0.508709 -0.394938 0 + Bin 1000: 0 0.262514 0.323888 0.339741 0.351582 0.383934 0.401723 0.429292 0.476092 0.586101 1 + Bin 1001: 1 1.25253 1.31677 1.33001 1.33885 1.36973 1.38684 1.41422 1.46299 1.57585 2 + Bin 1002: 2 2.27545 2.35314 2.37343 2.38242 2.39157 2.42517 2.44989 2.49508 2.60107 3 + Bin 1003: 3 3.25699 3.32317 3.33925 3.35212 3.38429 3.40209 3.43101 3.48143 3.59588 4 + Bin 1004: 4 4.2455 4.30708 4.32415 4.33347 4.34453 4.38116 4.4119 4.46387 4.58114 5 + Bin 1005: 5 5.25995 5.32538 5.34115 5.35321 5.38243 5.3992 5.42545 5.47853 5.59564 6 + Bin 1006: 6 6.25656 6.30692 6.32374 6.34364 6.36229 6.4036 6.43516 6.48607 6.59137 7 + Bin 1007: 7 7.25904 7.32243 7.34084 7.35195 7.38171 7.40008 7.42824 7.47663 7.59089 8 + Bin 1008: 8 8.21834 8.25513 8.27626 8.29657 8.33733 8.36096 8.39393 8.44753 8.56503 9 + Bin 1009: 9 9.27112 9.33247 9.34735 9.35854 9.37054 9.40722 9.43575 9.4836 9.5901 10 + Bin 1010: 10 10.2624 10.3066 10.3232 10.344 10.3841 10.4043 10.4359 10.4848 10.5869 11 + Bin 1011: 11 11.2719 11.3194 11.3341 11.3533 11.3701 11.4088 11.4396 11.4902 11.5896 12 + Bin 1012: 12 12.2818 12.3422 12.3585 12.3718 12.4052 12.4252 12.4503 12.4993 12.6032 13 + Bin 1013: 13 13.2659 13.3319 13.3478 13.3558 13.3654 13.4007 13.4262 13.4723 13.5839 14 + Bin 1014: 14 14.2573 14.3129 14.3277 14.3451 14.3777 14.3968 14.4243 14.4728 14.576 15 + Bin 1015: 15 15.2662 15.3322 15.3506 15.3574 15.3653 15.3952 15.4237 15.4728 15.5848 16 + Bin 1016: 16 16.2702 16.3307 16.3457 16.3643 16.3973 16.4157 16.4455 16.4942 16.604 17 + Bin 1017: 17 17.2594 17.3237 17.338 17.3456 17.3564 17.3907 17.4225 17.4746 17.5901 18 + Bin 1018: 18 18.2603 18.323 18.3366 18.3455 18.377 18.395 18.4232 18.4693 18.5788 19 + Bin 1019: 19 19.2715 19.3344 19.3475 19.36 19.3731 19.4102 19.4389 19.4891 19.5972 20 + Bin 1020: 20 20.268 20.3045 20.3269 20.351 20.3911 20.4137 20.4444 20.4965 20.6053 21 + Bin 1021: 21 21.2752 21.3184 21.3345 21.354 21.3714 21.4092 21.4397 21.4905 21.5949 22 + Bin 1022: 22 22.2592 22.2926 22.3197 22.3463 22.3688 22.4118 22.4508 22.5071 22.6303 23 + Bin 1023: 23 23.2127 23.2669 23.2871 23.3085 23.3239 23.3468 23.3824 23.4468 23.6027 24 + Bin 1024: 24 24.2427 24.3184 24.3449 24.3566 24.3919 24.4204 24.4603 24.5273 24.6755 25 + Bin 1025: 25 25.2353 25.3259 25.3609 25.3708 25.3987 25.4201 25.4579 25.5255 25.6669 26 + Bin 1026: 26 26.2338 26.3197 26.3687 26.391 26.399 26.4235 26.4506 26.5126 26.6579 27 + Bin 1027: 27 27.2318 27.3179 27.3583 27.3688 27.3941 27.4132 27.4448 27.5068 27.6403 28 + Bin 1028: 28 28.2441 28.3341 28.3742 28.3868 28.3935 28.4264 28.4605 28.5221 28.6551 29 + Bin 1029: 29 29.2419 29.3226 29.3525 29.3627 29.3922 29.4147 29.4515 29.5127 29.6511 30 + Bin 1030: 30 30.2266 30.3083 30.3432 30.3556 30.3817 30.4001 30.4338 30.4944 30.6402 31 + Bin 1031: 31 31.2343 31.3177 31.3563 31.3686 31.3765 31.4075 31.4408 31.5072 31.6496 32 + Bin 1032: 32 32.2461 32.334 32.3753 32.389 32.4158 32.4295 32.4612 32.5227 32.6607 33 + Bin 1033: 33 33.2367 33.3193 33.3514 33.3608 33.3701 33.4069 33.4419 33.503 33.6499 34 + Bin 1034: 34 34.2426 34.3295 34.367 34.3787 34.4029 34.4194 34.4514 34.5141 34.6535 35 + Bin 1035: 35 35.246 35.3399 35.3869 35.4106 35.4392 35.4466 35.4698 35.5259 35.6581 36 + Bin 1036: 36 36.2395 36.3283 36.3741 36.3917 36.4209 36.4321 36.4624 36.5261 36.6819 37 + Bin 1037: 37 37.2211 37.2992 37.3292 37.3408 37.3687 37.3917 37.4301 37.4977 37.6441 38 + Bin 1038: 38 38.2544 38.3563 38.4066 38.4285 38.4377 38.4626 38.4905 38.5446 38.6614 39 + Bin 1039: 39 39.2717 39.358 39.3878 39.3973 39.4116 39.4462 39.48 39.5396 39.663 40 + Bin 1040: 40 40.2433 40.3192 40.3597 40.3784 40.3875 40.4108 40.4304 40.4759 40.5889 41 + Bin 1041: 41 41.2773 41.3648 41.3978 41.4096 41.4315 41.4411 41.4611 41.5072 41.6002 42 + Bin 1042: 42 42.27 42.3554 42.3991 42.4175 42.4249 42.4451 42.4648 42.5051 42.5996 43 + Bin 1043: 43 43.2032 43.2633 43.2888 43.3005 43.3183 43.3366 43.3872 43.5091 43.8412 44 + Bin 1044: 44 44.2692 44.5028 44.6864 44.8324 44.9251 44.934 44.9449 44.9586 44.9748 45 + Bin 1045: 45 45.0067 45.0203 45.0438 45.1113 45.4565 45.8612 45.9454 45.9753 45.9903 46 + Bin 1046: 46 46.0223 46.0401 46.056 46.0686 46.0777 46.1712 46.2946 46.462 46.6824 47 + Bin 1047: 47 47.2784 47.4582 47.5361 47.5723 47.597 47.6006 47.6119 47.6421 47.7282 48 + Bin 1048: 48 48.2033 48.2736 48.3059 48.3201 48.3402 48.3486 48.371 48.4255 48.5747 49 + Bin 1049: 49 49.2077 49.2787 49.3152 49.331 49.3379 49.3595 49.3761 49.4268 49.5542 50 + Bin 1050: 50 50.2225 50.3018 50.3464 50.3698 50.3955 50.401 50.4121 50.452 50.5655 51 + Bin 1051: 51 51.2468 51.3307 51.3692 51.3882 51.3954 51.4181 51.434 51.4755 51.5874 52 + Bin 1052: 52 52.2521 52.3341 52.365 52.375 52.3984 52.4101 52.4334 52.4806 52.5967 53 + Bin 1053: 53 53.2285 53.2919 53.3067 53.3163 53.3474 53.3689 53.3993 53.4595 53.5958 54 + Bin 1054: 54 54.2261 54.2929 54.3127 54.3202 54.3362 54.3645 54.3975 54.4503 54.5774 55 + Bin 1055: 55 55.2317 55.3117 55.3457 55.3591 55.3818 55.3959 55.426 55.48 55.6129 56 + Bin 1056: 56 56.2367 56.3221 56.3611 56.3772 56.3833 56.4106 56.4382 56.4943 56.6263 57 + Bin 1057: 57 57.2538 57.3445 57.3875 57.4029 57.4247 57.4366 57.4637 57.5177 57.6427 58 + Bin 1058: 58 58.2495 58.3348 58.3667 58.3748 58.3966 58.4139 58.4452 58.5039 58.6317 59 + Bin 1059: 59 59.2501 59.3471 59.3961 59.4261 59.4437 59.4723 59.4817 59.5179 59.6298 60 + Bin 1060: 60 60.2431 60.3127 60.3322 60.3504 60.3851 60.4093 60.4486 60.51 60.6465 61 + Bin 1061: 61 61.2321 61.3113 61.3499 61.3626 61.3774 61.3949 61.4255 61.4844 61.6153 62 + Bin 1062: 62 62.2662 62.3608 62.4045 62.4169 62.4392 62.4536 62.4832 62.5383 62.6611 63 + Bin 1063: 63 63.2673 63.3592 63.3974 63.4105 63.4176 63.4458 63.4774 63.5335 63.6633 64 + Bin 1064: 64 64.2394 64.3258 64.37 64.3856 64.4089 64.4215 64.4513 64.5109 64.6462 65 + Bin 1065: 65 65.2518 65.3426 65.3895 65.4123 65.4207 65.4438 65.4662 65.5183 65.6375 66 + Bin 1066: 66 66.2659 66.3623 66.4141 66.4423 66.4733 66.4809 66.4962 66.5399 66.6509 67 + Bin 1067: 67 67.2522 67.3421 67.3771 67.3891 67.4079 67.4294 67.4623 67.5242 67.6542 68 + Bin 1068: 68 68.2397 68.3274 68.3709 68.3912 68.4127 68.4218 68.4481 68.505 68.6361 69 + Bin 1069: 69 69.2649 69.3602 69.4079 69.429 69.437 69.4581 69.479 69.5295 69.644 70 + Bin 1070: 70 70.2755 70.3675 70.3938 70.4045 70.4205 70.4606 70.4939 70.5528 70.6787 71 + Bin 1071: 71 71.209 71.2722 71.2896 71.316 71.3441 71.3689 71.409 71.4797 71.642 72 + Bin 1072: 72 72.2391 72.3171 72.3405 72.35 72.3635 72.4012 72.4457 72.5077 72.6401 73 + Bin 1073: 73 73.2812 73.3797 73.4196 73.4321 73.4596 73.4771 73.5098 73.5664 73.688 74 + Bin 1074: 74 74.2661 74.3508 74.3765 74.389 74.4219 74.4464 74.483 74.5446 74.6698 75 + Bin 1075: 75 75.273 75.365 75.4057 75.4169 75.4249 75.4582 75.4938 75.5543 75.6733 76 + Bin 1076: 76 76.2715 76.3537 76.3755 76.3937 76.429 76.453 76.491 76.5514 76.6805 77 + Bin 1077: 77 77.2776 77.362 77.383 77.3951 77.4294 77.4525 77.4889 77.5531 77.6854 78 + Bin 1078: 78 78.2802 78.3727 78.4094 78.4205 78.4293 78.462 78.4956 78.5548 78.6807 79 + Bin 1079: 79 79.2679 79.3326 79.3558 79.3814 79.4234 79.4479 79.4863 79.5481 79.6806 80 + Bin 1080: 80 80.2757 80.3607 80.3889 80.3981 80.4063 80.4386 80.4683 80.523 80.6399 81 + Bin 1081: 81 81.3013 81.3902 81.4127 81.4231 81.4535 81.4731 81.5031 81.5568 81.669 82 + Bin 1082: 82 82.2724 82.3458 82.3635 82.3751 82.3902 82.4254 82.4601 82.5193 82.6384 83 + Bin 1083: 83 83.2505 83.3249 83.3449 83.3538 83.3824 83.4024 83.4348 83.4941 83.6318 84 + Bin 1084: 84 84.2428 84.31 84.3261 84.3431 84.3773 84.4015 84.4392 84.5025 84.6326 85 + Bin 1085: 85 85.2755 85.3562 85.3792 85.3874 85.3991 85.4322 85.4665 85.5276 85.6508 86 + Bin 1086: 86 86.2499 86.3381 86.3736 86.3843 86.4072 86.4209 86.4507 86.5096 86.6392 87 + Bin 1087: 87 87.251 87.3375 87.3804 87.4059 87.4187 87.4394 87.4518 87.4918 87.6047 88 + Bin 1088: 88 88.2397 88.3373 88.3892 88.4185 88.4518 88.4652 88.474 88.5086 88.6208 89 + Bin 1089: 89 89.2652 89.3522 89.3976 89.4204 89.4406 89.4465 89.46 89.5042 89.6075 90 + Bin 1090: 90 90.2497 90.3421 90.3901 90.4121 90.4232 90.4484 90.4639 90.5148 90.6422 91 + Bin 1091: 91 91.2503 91.3388 91.381 91.4031 91.4258 91.4319 91.4495 91.4955 91.6162 92 + Bin 1092: 92 92.2481 92.3412 92.3921 92.4187 92.4328 92.4573 92.467 92.5092 92.6272 93 + Bin 1093: 93 93.2457 93.3333 93.3743 93.4011 93.4327 93.4401 93.4508 93.4944 93.6201 94 + Bin 1094: 94 94.2471 94.3424 94.391 94.4209 94.4516 94.4626 94.4709 94.5027 94.6061 95 + Bin 1095: 95 95.254 95.3535 95.4045 95.4313 95.4451 95.4696 95.4795 95.5228 95.6431 96 + Bin 1096: 96 96.2475 96.3375 96.3849 96.4098 96.4391 96.446 96.4574 96.4996 96.617 97 + Bin 1097: 97 97.2416 97.3384 97.3891 97.4211 97.442 97.4729 97.4835 97.5069 97.612 98 + Bin 1098: 98 98.2442 98.3389 98.3886 98.4155 98.4512 98.4607 98.4714 98.5098 98.6314 99 + Bin 1099: 99 99.243 99.3325 99.3801 99.4107 99.4457 99.4591 99.4681 99.4946 99.6031 100 + Bin 1100: 100 100.268 100.368 100.416 100.444 100.46 100.489 100.498 100.531 100.643 101 + Bin 1101: 101 101.263 101.351 101.387 101.4 101.423 101.434 101.457 101.509 101.635 102 + Bin 1102: 102 102.254 102.341 102.38 102.399 102.422 102.427 102.444 102.493 102.609 103 + Bin 1103: 103 103.255 103.344 103.383 103.398 103.416 103.425 103.449 103.501 103.624 104 + Bin 1104: 104 104.257 104.344 104.386 104.404 104.41 104.434 104.456 104.511 104.63 105 + Bin 1105: 105 105.261 105.348 105.396 105.416 105.439 105.446 105.466 105.513 105.626 106 + Bin 1106: 106 106.268 106.357 106.399 106.417 106.438 106.444 106.465 106.513 106.632 107 + Bin 1107: 107 107.266 107.349 107.389 107.403 107.416 107.438 107.464 107.517 107.636 108 + Bin 1108: 108 108.27 108.356 108.386 108.397 108.416 108.43 108.459 108.512 108.63 109 + Bin 1109: 109 109.29 109.379 109.412 109.424 109.43 109.459 109.488 109.544 109.658 110 + Bin 1110: 110 110.275 110.363 110.393 110.404 110.431 110.449 110.479 110.533 110.654 111 + Bin 1111: 111 111.233 111.317 111.353 111.367 111.386 111.396 111.419 111.475 111.603 112 + Bin 1112: 112 112.27 112.351 112.384 112.395 112.401 112.427 112.454 112.511 112.633 113 + Bin 1113: 113 113.263 113.356 113.392 113.403 113.426 113.438 113.464 113.515 113.632 114 + Bin 1114: 114 114.262 114.343 114.378 114.388 114.395 114.424 114.451 114.509 114.636 115 + Bin 1115: 115 115.254 115.343 115.378 115.39 115.412 115.425 115.452 115.509 115.635 116 + Bin 1116: 116 116.27 116.359 116.393 116.403 116.427 116.445 116.474 116.531 116.658 117 + Bin 1117: 117 117.274 117.363 117.4 117.412 117.419 117.447 117.474 117.528 117.652 118 + Bin 1118: 118 118.267 118.363 118.405 118.429 118.449 118.456 118.476 118.527 118.651 119 + Bin 1119: 119 119.224 119.321 119.372 119.401 119.421 119.445 119.461 119.511 119.653 120 + Bin 1120: 120 120.254 120.343 120.389 120.413 120.435 120.448 120.466 120.518 120.649 121 + Bin 1121: 121 121.25 121.346 121.394 121.414 121.434 121.445 121.476 121.539 121.684 122 + Bin 1122: 122 122.213 122.304 122.35 122.377 122.403 122.411 122.432 122.492 122.642 123 + Bin 1123: 123 123.229 123.324 123.374 123.403 123.429 123.443 123.455 123.505 123.643 124 + Bin 1124: 124 124.234 124.324 124.368 124.387 124.408 124.418 124.444 124.507 124.654 125 + Bin 1125: 125 125.225 125.318 125.367 125.393 125.419 125.426 125.446 125.506 125.652 126 + Bin 1126: 126 126.219 126.309 126.361 126.397 126.436 126.455 126.469 126.503 126.626 127 + Bin 1127: 127 127.22 127.315 127.364 127.395 127.43 127.447 127.459 127.5 127.636 128 + Bin 1128: 128 128.228 128.323 128.373 128.403 128.432 128.443 128.455 128.505 128.638 129 + Bin 1129: 129 129.225 129.31 129.358 129.386 129.416 129.427 129.44 129.496 129.641 130 + Bin 1130: 130 130.228 130.311 130.357 130.381 130.403 130.412 130.434 130.491 130.627 131 + Bin 1131: 131 131.233 131.332 131.38 131.409 131.44 131.447 131.463 131.518 131.661 132 + Bin 1132: 132 132.222 132.311 132.36 132.39 132.423 132.432 132.443 132.488 132.627 133 + Bin 1133: 133 133.239 133.335 133.386 133.418 133.45 133.459 133.473 133.524 133.652 134 + Bin 1134: 134 134.224 134.312 134.361 134.388 134.412 134.424 134.44 134.494 134.628 135 + Bin 1135: 135 135.164 135.228 135.257 135.277 135.295 135.31 135.372 135.532 135.884 136 + Bin 1136: 136 136.359 136.651 136.843 136.934 136.99 136.991 136.992 136.994 136.996 137 + Bin 1137: 137 137 137.001 137.002 137.007 137.102 137.556 137.878 137.959 137.987 138 + Bin 1138: 138 138.031 138.051 138.066 138.078 138.086 138.185 138.327 138.497 138.711 139 + Bin 1139: 139 139.272 139.454 139.527 139.562 139.583 139.591 139.611 139.657 139.789 140 + Bin 1140: 140 140.154 140.219 140.251 140.272 140.285 140.296 140.325 140.401 140.583 141 + Bin 1141: 141 141.202 141.282 141.318 141.334 141.349 141.367 141.393 141.447 141.585 142 + Bin 1142: 142 142.235 142.323 142.369 142.398 142.425 142.434 142.445 142.488 142.615 143 + Bin 1143: 143 143.233 143.323 143.369 143.395 143.422 143.43 143.447 143.496 143.62 144 + Bin 1144: 144 144.233 144.326 144.375 144.409 144.442 144.458 144.47 144.501 144.622 145 + Bin 1145: 145 145.226 145.319 145.369 145.403 145.426 145.46 145.479 145.502 145.611 146 + Bin 1146: 146 146.222 146.314 146.366 146.399 146.433 146.453 146.47 146.493 146.601 147 + Bin 1147: 147 147.228 147.316 147.359 147.388 147.408 147.431 147.444 147.476 147.594 148 + Bin 1148: 148 148.233 148.325 148.376 148.406 148.433 148.443 148.456 148.501 148.629 149 + Bin 1149: 149 149.221 149.306 149.352 149.38 149.411 149.428 149.442 149.472 149.591 150 + Bin 1150: 150 150.211 150.304 150.353 150.387 150.426 150.45 150.476 150.503 150.589 151 + Bin 1151: 151 151.217 151.309 151.358 151.392 151.417 151.452 151.48 151.506 151.573 152 + Bin 1152: 152 152.227 152.317 152.367 152.401 152.436 152.457 152.481 152.506 152.573 153 + Bin 1153: 153 153.212 153.299 153.349 153.379 153.41 153.434 153.461 153.487 153.559 154 + Bin 1154: 154 154.217 154.304 154.35 154.383 154.415 154.435 154.46 154.487 154.561 155 + Bin 1155: 155 155.214 155.3 155.344 155.376 155.398 155.432 155.46 155.486 155.551 156 + Bin 1156: 156 156.223 156.315 156.362 156.393 156.43 156.451 156.476 156.506 156.566 157 + Bin 1157: 157 157.21 157.296 157.34 157.369 157.4 157.424 157.452 157.483 157.546 158 + Bin 1158: 158 158.196 158.277 158.32 158.349 158.385 158.407 158.435 158.468 158.525 159 + Bin 1159: 159 159.222 159.308 159.354 159.381 159.413 159.43 159.45 159.472 159.55 160 + Bin 1160: 160 160.217 160.3 160.344 160.372 160.389 160.417 160.434 160.458 160.549 161 + Bin 1161: 161 161.244 161.318 161.347 161.361 161.381 161.396 161.42 161.467 161.586 162 + Bin 1162: 162 162.246 162.321 162.347 162.36 162.369 162.393 162.418 162.466 162.586 163 + Bin 1163: 163 163.242 163.314 163.345 163.359 163.378 163.387 163.406 163.452 163.58 164 + Bin 1164: 164 164.218 164.298 164.337 164.362 164.387 164.404 164.419 164.447 164.551 165 + Bin 1165: 165 165.235 165.318 165.36 165.388 165.418 165.43 165.44 165.464 165.571 166 + Bin 1166: 166 166.225 166.308 166.348 166.373 166.401 166.42 166.435 166.458 166.577 167 + Bin 1167: 167 167.197 167.277 167.324 167.358 167.39 167.412 167.437 167.46 167.572 168 + Bin 1168: 168 168.226 168.311 168.356 168.384 168.403 168.439 168.453 168.48 168.596 169 + Bin 1169: 169 169.242 169.337 169.384 169.415 169.448 169.46 169.472 169.506 169.621 170 + Bin 1170: 170 170.24 170.336 170.389 170.419 170.452 170.47 170.482 170.511 170.628 171 + Bin 1171: 171 171.237 171.328 171.378 171.413 171.446 171.465 171.48 171.499 171.593 172 + Bin 1172: 172 172.228 172.325 172.374 172.403 172.434 172.449 172.462 172.5 172.62 173 + Bin 1173: 173 173.231 173.327 173.372 173.404 173.436 173.451 173.463 173.495 173.611 174 + Bin 1174: 174 174.232 174.327 174.376 174.408 174.431 174.467 174.487 174.511 174.617 175 + Bin 1175: 175 175.235 175.332 175.386 175.419 175.456 175.475 175.49 175.51 175.616 176 + Bin 1176: 176 176.237 176.329 176.376 176.408 176.444 176.467 176.488 176.51 176.614 177 + Bin 1177: 177 177.244 177.333 177.381 177.41 177.428 177.451 177.463 177.5 177.626 178 + Bin 1178: 178 178.221 178.311 178.361 178.393 178.428 178.446 178.464 178.487 178.589 179 + Bin 1179: 179 179.237 179.335 179.386 179.415 179.44 179.465 179.48 179.505 179.617 180 + Bin 1180: 180 180.239 180.336 180.382 180.417 180.451 180.47 180.488 180.51 180.621 181 + Bin 1181: 181 181.219 181.314 181.362 181.392 181.423 181.449 181.471 181.498 181.602 182 + Bin 1182: 182 182.228 182.321 182.373 182.406 182.442 182.461 182.482 182.503 182.599 183 + Bin 1183: 183 183.213 183.306 183.36 183.391 183.416 183.449 183.473 183.495 183.6 184 + Bin 1184: 184 184.222 184.314 184.362 184.395 184.42 184.457 184.48 184.501 184.606 185 + Bin 1185: 185 185.219 185.311 185.36 185.395 185.429 185.453 185.481 185.502 185.597 186 + Bin 1186: 186 186.222 186.317 186.369 186.406 186.445 186.47 186.5 186.53 186.598 187 + Bin 1187: 187 187.244 187.338 187.392 187.423 187.456 187.475 187.493 187.516 187.621 188 + Bin 1188: 188 188.212 188.296 188.347 188.38 188.419 188.44 188.464 188.488 188.587 189 + Bin 1189: 189 189.227 189.321 189.369 189.396 189.418 189.451 189.471 189.492 189.59 190 + Bin 1190: 190 190.232 190.333 190.384 190.421 190.454 190.476 190.498 190.519 190.603 191 + Bin 1191: 191 191.246 191.344 191.391 191.421 191.454 191.472 191.485 191.512 191.625 192 + Bin 1192: 192 192.236 192.324 192.368 192.397 192.423 192.433 192.447 192.489 192.615 193 + Bin 1193: 193 193.244 193.332 193.376 193.397 193.419 193.429 193.447 193.496 193.623 194 + Bin 1194: 194 194.217 194.314 194.366 194.396 194.419 194.46 194.486 194.51 194.604 195 + Bin 1195: 195 195.224 195.319 195.37 195.404 195.442 195.467 195.496 195.528 195.604 196 + Bin 1196: 196 196.209 196.308 196.364 196.398 196.422 196.461 196.493 196.535 196.617 197 + Bin 1197: 197 197.206 197.305 197.359 197.395 197.434 197.461 197.49 197.532 197.597 198 + Bin 1198: 198 198.202 198.301 198.355 198.39 198.418 198.461 198.497 198.544 198.621 199 + Bin 1199: 199 199.227 199.324 199.377 199.411 199.449 199.477 199.509 199.543 199.618 200 + Bin 1200: 200 200.204 200.299 200.351 200.384 200.423 200.445 200.471 200.505 200.604 201 + Bin 1201: 201 201.222 201.319 201.374 201.407 201.432 201.47 201.498 201.534 201.622 202 + Bin 1202: 202 202.24 202.339 202.391 202.425 202.466 202.488 202.512 202.535 202.624 203 + Bin 1203: 203 203.224 203.319 203.369 203.401 203.44 203.459 203.48 203.503 203.597 204 + Bin 1204: 204 204.236 204.332 204.383 204.415 204.45 204.476 204.5 204.525 204.609 205 + Bin 1205: 205 205.224 205.323 205.373 205.404 205.435 205.456 205.476 205.511 205.627 206 + Bin 1206: 206 206.23 206.319 206.372 206.404 206.434 206.456 206.48 206.508 206.61 207 + Bin 1207: 207 207.258 207.361 207.406 207.434 207.461 207.473 207.491 207.527 207.634 208 + Bin 1208: 208 208.26 208.356 208.404 208.434 208.456 208.489 208.505 208.534 208.642 209 + Bin 1209: 209 209.226 209.323 209.373 209.404 209.44 209.459 209.48 209.504 209.6 210 + Bin 1210: 210 210.238 210.332 210.383 210.41 210.441 210.458 210.474 210.503 210.614 211 + Bin 1211: 211 211.226 211.324 211.373 211.407 211.443 211.464 211.486 211.509 211.601 212 + Bin 1212: 212 212.23 212.328 212.382 212.411 212.449 212.471 212.489 212.515 212.615 213 + Bin 1213: 213 213.24 213.337 213.391 213.423 213.456 213.476 213.494 213.523 213.616 214 + Bin 1214: 214 214.24 214.338 214.386 214.417 214.442 214.48 214.502 214.527 214.617 215 + Bin 1215: 215 215.229 215.327 215.381 215.421 215.452 215.479 215.504 215.53 215.631 216 + Bin 1216: 216 216.241 216.339 216.393 216.427 216.451 216.488 216.514 216.544 216.641 217 + Bin 1217: 217 217.222 217.317 217.366 217.397 217.43 217.451 217.47 217.496 217.604 218 + Bin 1218: 218 218.212 218.297 218.346 218.377 218.412 218.437 218.46 218.49 218.607 219 + Bin 1219: 219 219.224 219.316 219.365 219.396 219.43 219.449 219.468 219.5 219.608 220 + Bin 1220: 220 220.219 220.306 220.351 220.377 220.391 220.421 220.436 220.473 220.608 221 + Bin 1221: 221 221.21 221.295 221.338 221.367 221.401 221.421 221.438 221.469 221.597 222 + Bin 1222: 222 222.212 222.301 222.35 222.38 222.4 222.432 222.451 222.482 222.596 223 + Bin 1223: 223 223.218 223.312 223.368 223.403 223.443 223.466 223.492 223.523 223.628 224 + Bin 1224: 224 224.223 224.318 224.369 224.404 224.429 224.465 224.491 224.523 224.613 225 + Bin 1225: 225 225.177 225.267 225.317 225.351 225.391 225.417 225.45 225.499 225.583 226 + Bin 1226: 226 226.198 226.284 226.331 226.363 226.386 226.422 226.452 226.487 226.581 227 + Bin 1227: 227 227.205 227.297 227.347 227.378 227.413 227.435 227.456 227.487 227.602 228 + Bin 1228: 228 228.202 228.289 228.341 228.372 228.405 228.426 228.45 228.486 228.617 229 + Bin 1229: 229 229.199 229.289 229.337 229.37 229.402 229.424 229.45 229.485 229.587 230 + Bin 1230: 230 230.228 230.331 230.386 230.422 230.448 230.487 230.515 230.555 230.653 231 + Bin 1231: 231 231.234 231.328 231.373 231.403 231.422 231.458 231.487 231.519 231.601 232 + Bin 1232: 232 232.254 232.346 232.39 232.419 232.437 232.463 232.478 232.501 232.59 233 + Bin 1233: 233 233.23 233.316 233.357 233.386 233.42 233.435 233.454 233.477 233.569 234 + Bin 1234: 234 234.204 234.287 234.328 234.353 234.374 234.406 234.435 234.464 234.561 235 + Bin 1235: 235 235.204 235.286 235.328 235.358 235.387 235.403 235.426 235.451 235.538 236 + Bin 1236: 236 236.236 236.322 236.371 236.399 236.42 236.452 236.478 236.504 236.581 237 + Bin 1237: 237 237.232 237.32 237.362 237.392 237.422 237.439 237.458 237.485 237.592 238 + Bin 1238: 238 238.212 238.297 238.339 238.366 238.396 238.412 238.434 238.463 238.554 239 + Bin 1239: 239 239.24 239.328 239.375 239.403 239.431 239.452 239.473 239.502 239.609 240 + Bin 1240: 240 240.21 240.293 240.341 240.374 240.406 240.425 240.449 240.482 240.564 241 + Bin 1241: 241 241.22 241.309 241.357 241.387 241.409 241.445 241.472 241.504 241.574 242 + Bin 1242: 242 242.233 242.323 242.366 242.397 242.43 242.448 242.474 242.506 242.575 243 + Bin 1243: 243 243.249 243.341 243.389 243.417 243.438 243.475 243.498 243.525 243.577 244 + Bin 1244: 244 244.26 244.352 244.402 244.435 244.455 244.489 244.509 244.532 244.603 245 + Bin 1245: 245 245.236 245.324 245.369 245.398 245.415 245.449 245.472 245.498 245.579 246 + Bin 1246: 246 246.214 246.3 246.344 246.373 246.409 246.427 246.449 246.472 246.556 247 + Bin 1247: 247 247.204 247.282 247.32 247.351 247.374 247.412 247.439 247.472 247.536 248 + Bin 1248: 248 248.218 248.298 248.342 248.372 248.395 248.429 248.46 248.499 248.559 249 + Bin 1249: 249 249.217 249.305 249.354 249.384 249.416 249.436 249.463 249.495 249.56 250 + Bin 1250: 250 250.214 250.301 250.348 250.376 250.398 250.429 250.457 250.488 250.56 251 + Bin 1251: 251 251.209 251.283 251.328 251.362 251.395 251.416 251.441 251.47 251.551 252 + Bin 1252: 252 252.211 252.291 252.334 252.365 252.386 252.422 252.446 252.475 252.55 253 + Bin 1253: 253 253.221 253.303 253.346 253.377 253.409 253.432 253.454 253.484 253.564 254 + Bin 1254: 254 254.222 254.298 254.341 254.369 254.402 254.419 254.441 254.468 254.562 255 + Bin 1255: 255 255.208 255.291 255.333 255.364 255.396 255.412 255.433 255.46 255.556 256 + Bin 1256: 256 256.21 256.295 256.346 256.377 256.398 256.426 256.451 256.483 256.549 257 + Bin 1257: 257 257.229 257.311 257.356 257.384 257.405 257.441 257.466 257.497 257.569 258 + Bin 1258: 258 258.197 258.278 258.324 258.357 258.388 258.411 258.437 258.468 258.548 259 + Bin 1259: 259 259.204 259.281 259.327 259.358 259.379 259.413 259.44 259.474 259.546 260 + Bin 1260: 260 260.225 260.312 260.354 260.38 260.414 260.431 260.45 260.477 260.559 261 + Bin 1261: 261 261.21 261.284 261.329 261.359 261.378 261.407 261.434 261.466 261.557 262 + Bin 1262: 262 262.208 262.292 262.337 262.366 262.401 262.42 262.443 262.472 262.538 263 + Bin 1263: 263 263.224 263.313 263.364 263.397 263.433 263.452 263.477 263.511 263.584 264 + Bin 1264: 264 264.225 264.316 264.36 264.395 264.417 264.454 264.483 264.523 264.586 265 + Bin 1265: 265 265.232 265.318 265.367 265.396 265.432 265.456 265.48 265.508 265.6 266 + Bin 1266: 266 266.203 266.281 266.327 266.359 266.393 266.416 266.441 266.469 266.538 267 + Bin 1267: 267 267.233 267.329 267.38 267.41 267.43 267.466 267.491 267.52 267.608 268 + Bin 1268: 268 268.215 268.302 268.352 268.385 268.423 268.443 268.471 268.508 268.578 269 + Bin 1269: 269 269.213 269.303 269.351 269.383 269.409 269.443 269.476 269.525 269.592 270 + Bin 1270: 270 270.21 270.297 270.341 270.371 270.407 270.43 270.457 270.492 270.571 271 + Bin 1271: 271 271.204 271.287 271.334 271.368 271.407 271.433 271.464 271.505 271.588 272 + Bin 1272: 272 272.218 272.31 272.356 272.39 272.431 272.455 272.481 272.519 272.598 273 + Bin 1273: 273 273.218 273.311 273.36 273.394 273.416 273.456 273.486 273.528 273.602 274 + Bin 1274: 274 274.209 274.302 274.353 274.388 274.422 274.446 274.478 274.528 274.596 275 + Bin 1275: 275 275.202 275.294 275.345 275.381 275.402 275.441 275.469 275.513 275.573 276 + Bin 1276: 276 276.214 276.302 276.349 276.382 276.417 276.441 276.467 276.509 276.606 277 + Bin 1277: 277 277.209 277.296 277.339 277.369 277.401 277.418 277.442 277.474 277.567 278 + Bin 1278: 278 278.298 278.423 278.49 278.536 278.567 278.601 278.639 278.689 278.753 279 + Bin 1279: 279 279.238 279.334 279.386 279.416 279.435 279.471 279.514 279.558 279.681 280 + Bin 1280: 280 280.482 280.713 280.86 280.937 280.991 280.994 280.998 280.998 280.998 281 + Bin 1281: 281 281 281 281 281 281 281 281 281 281 282 + Bin 1282: 282 282 282 282 282 282 282 282 282 282 283 + Bin 1283: 283 283 283 283.108 283.386 283.418 283.467 283.531 283.615 283.747 284 + Bin 1284: 284 284.302 284.419 284.481 284.521 284.553 284.569 284.59 284.625 284.809 285 + Bin 1285: 285 285.153 285.228 285.27 285.309 285.34 285.368 285.402 285.458 285.592 286 + Bin 1286: 286 286.198 286.304 286.361 286.395 286.423 286.47 286.503 286.545 286.624 287 + Bin 1287: 287 287.211 287.317 287.372 287.409 287.436 287.477 287.513 287.577 287.652 288 + Bin 1288: 288 288.18 288.272 288.324 288.363 288.397 288.427 288.465 288.524 288.611 289 + Bin 1289: 289 289.173 289.268 289.322 289.357 289.382 289.424 289.466 289.527 289.605 290 + Bin 1290: 290 290.177 290.282 290.343 290.381 290.425 290.456 290.498 290.555 290.642 291 + Bin 1291: 291 291.161 291.253 291.304 291.338 291.365 291.404 291.446 291.512 291.599 292 + Bin 1292: 292 292.188 292.286 292.344 292.386 292.426 292.452 292.488 292.548 292.624 293 + Bin 1293: 293 293.204 293.311 293.365 293.404 293.446 293.47 293.508 293.576 293.662 294 + Bin 1294: 294 294.194 294.299 294.361 294.396 294.422 294.465 294.497 294.546 294.622 295 + Bin 1295: 295 295.196 295.295 295.351 295.385 295.411 295.453 295.489 295.542 295.618 296 + Bin 1296: 296 296.188 296.281 296.332 296.37 296.398 296.433 296.472 296.527 296.604 297 + Bin 1297: 297 297.176 297.271 297.322 297.357 297.392 297.42 297.458 297.523 297.602 298 + Bin 1298: 298 298.21 298.305 298.357 298.394 298.421 298.455 298.486 298.535 298.609 299 + Bin 1299: 299 299.193 299.281 299.331 299.368 299.404 299.43 299.462 299.519 299.592 300 + Bin 1300: 300 300.187 300.283 300.336 300.366 300.389 300.429 300.467 300.527 300.613 301 + Bin 1301: 301 301.18 301.279 301.328 301.361 301.398 301.424 301.459 301.526 301.608 302 + Bin 1302: 302 302.186 302.28 302.334 302.367 302.393 302.436 302.472 302.548 302.636 303 + Bin 1303: 303 303.194 303.287 303.342 303.377 303.418 303.446 303.481 303.546 303.637 304 + Bin 1304: 304 304.195 304.297 304.353 304.389 304.432 304.46 304.5 304.566 304.656 305 + Bin 1305: 305 305.181 305.278 305.327 305.362 305.387 305.429 305.467 305.535 305.629 306 + Bin 1306: 306 306.19 306.281 306.336 306.368 306.405 306.428 306.463 306.522 306.601 307 + Bin 1307: 307 307.186 307.287 307.34 307.372 307.397 307.441 307.48 307.54 307.615 308 + Bin 1308: 308 308.183 308.281 308.335 308.374 308.414 308.443 308.485 308.555 308.633 309 + Bin 1309: 309 309.189 309.292 309.349 309.388 309.428 309.456 309.493 309.559 309.647 310 + Bin 1310: 310 310.2 310.295 310.356 310.388 310.414 310.453 310.486 310.552 310.634 311 + Bin 1311: 311 311.181 311.278 311.331 311.37 311.413 311.443 311.482 311.551 311.638 312 + Bin 1312: 312 312.191 312.295 312.347 312.379 312.405 312.438 312.475 312.532 312.608 313 + Bin 1313: 313 313.184 313.276 313.329 313.363 313.401 313.428 313.471 313.537 313.634 314 + Bin 1314: 314 314.171 314.268 314.317 314.352 314.393 314.419 314.458 314.512 314.602 315 + Bin 1315: 315 315.163 315.248 315.295 315.329 315.37 315.397 315.442 315.515 315.608 316 + Bin 1316: 316 316.171 316.271 316.329 316.36 316.386 316.435 316.473 316.538 316.625 317 + Bin 1317: 317 317.161 317.253 317.311 317.347 317.387 317.412 317.454 317.525 317.632 318 + Bin 1318: 318 318.151 318.229 318.283 318.316 318.34 318.381 318.426 318.499 318.606 319 + Bin 1319: 319 319.168 319.264 319.317 319.353 319.395 319.423 319.457 319.53 319.621 320 + Bin 1320: 320 320.166 320.267 320.322 320.357 320.398 320.427 320.466 320.529 320.619 321 + Bin 1321: 321 321.17 321.254 321.307 321.345 321.384 321.415 321.45 321.514 321.613 322 + Bin 1322: 322 322.163 322.26 322.311 322.349 322.386 322.419 322.462 322.534 322.639 323 + Bin 1323: 323 323.171 323.263 323.313 323.349 323.393 323.424 323.462 323.526 323.629 324 + Bin 1324: 324 324.19 324.292 324.341 324.377 324.407 324.448 324.483 324.544 324.637 325 + Bin 1325: 325 325.161 325.258 325.303 325.336 325.379 325.408 325.445 325.51 325.607 326 + Bin 1326: 326 326.168 326.258 326.307 326.338 326.36 326.405 326.443 326.507 326.619 327 + Bin 1327: 327 327.13 327.222 327.279 327.319 327.362 327.396 327.445 327.503 327.661 328 + Bin 1328: 328 328.151 328.257 328.322 328.363 328.41 328.445 328.486 328.54 328.655 329 + Bin 1329: 329 329.17 329.274 329.347 329.391 329.425 329.476 329.525 329.599 329.693 330 + Bin 1330: 330 330.153 330.261 330.333 330.379 330.428 330.46 330.509 330.566 330.684 331 + Bin 1331: 331 331.169 331.284 331.35 331.389 331.423 331.476 331.522 331.572 331.667 332 + Bin 1332: 332 332.162 332.276 332.355 332.395 332.442 332.473 332.52 332.571 332.698 333 + Bin 1333: 333 333.162 333.274 333.338 333.379 333.419 333.448 333.496 333.544 333.663 334 + Bin 1334: 334 334.147 334.262 334.33 334.374 334.41 334.461 334.513 334.577 334.666 335 + Bin 1335: 335 335.167 335.282 335.348 335.385 335.42 335.471 335.512 335.569 335.665 336 + Bin 1336: 336 336.147 336.246 336.316 336.356 336.397 336.433 336.478 336.542 336.65 337 + Bin 1337: 337 337.15 337.249 337.313 337.351 337.398 337.43 337.481 337.555 337.66 338 + Bin 1338: 338 338.153 338.265 338.33 338.368 338.399 338.454 338.503 338.565 338.665 339 + Bin 1339: 339 339.165 339.266 339.332 339.376 339.402 339.447 339.486 339.545 339.633 340 + Bin 1340: 340 340.158 340.261 340.326 340.362 340.41 340.446 340.491 340.564 340.666 341 + Bin 1341: 341 341.159 341.266 341.332 341.376 341.417 341.45 341.502 341.569 341.669 342 + Bin 1342: 342 342.168 342.279 342.345 342.389 342.422 342.47 342.516 342.589 342.673 343 + Bin 1343: 343 343.199 343.306 343.362 343.405 343.43 343.466 343.5 343.566 343.641 344 + Bin 1344: 344 344.18 344.28 344.336 344.374 344.406 344.437 344.475 344.536 344.62 345 + Bin 1345: 345 345.184 345.281 345.334 345.366 345.392 345.431 345.469 345.535 345.612 346 + Bin 1346: 346 346.171 346.257 346.305 346.341 346.364 346.407 346.448 346.509 346.597 347 + Bin 1347: 347 347.174 347.267 347.319 347.357 347.395 347.423 347.456 347.523 347.609 348 + Bin 1348: 348 348.182 348.271 348.325 348.357 348.379 348.424 348.466 348.52 348.605 349 + Bin 1349: 349 349.185 349.276 349.328 349.364 349.394 349.433 349.471 349.531 349.613 350 + Bin 1350: 350 350.18 350.267 350.317 350.35 350.39 350.422 350.46 350.523 350.605 351 + Bin 1351: 351 351.196 351.281 351.324 351.358 351.395 351.423 351.454 351.512 351.585 352 + Bin 1352: 352 352.178 352.26 352.304 352.333 352.357 352.391 352.429 352.485 352.572 353 + Bin 1353: 353 353.18 353.255 353.302 353.329 353.368 353.392 353.425 353.471 353.559 354 + Bin 1354: 354 354.183 354.279 354.327 354.363 354.405 354.433 354.467 354.527 354.61 355 + Bin 1355: 355 355.227 355.328 355.375 355.408 355.436 355.476 355.509 355.563 355.644 356 + Bin 1356: 356 356.198 356.288 356.337 356.371 356.398 356.435 356.47 356.515 356.595 357 + Bin 1357: 357 357.19 357.268 357.313 357.344 357.367 357.398 357.434 357.482 357.58 358 + Bin 1358: 358 358.174 358.263 358.304 358.337 358.371 358.395 358.427 358.471 358.558 359 + Bin 1359: 359 359.199 359.283 359.328 359.357 359.395 359.42 359.457 359.507 359.59 360 + Bin 1360: 360 360.214 360.303 360.347 360.381 360.405 360.437 360.471 360.521 360.598 361 + Bin 1361: 361 361.195 361.291 361.345 361.38 361.418 361.441 361.472 361.522 361.605 362 + Bin 1362: 362 362.189 362.274 362.323 362.353 362.388 362.417 362.448 362.495 362.579 363 + Bin 1363: 363 363.19 363.273 363.326 363.356 363.392 363.419 363.456 363.512 363.593 364 + Bin 1364: 364 364.22 364.307 364.365 364.399 364.435 364.457 364.483 364.533 364.611 365 + Bin 1365: 365 365.215 365.302 365.355 365.39 365.423 365.447 365.476 365.525 365.607 366 + Bin 1366: 366 366.192 366.271 366.32 366.351 366.376 366.42 366.456 366.507 366.597 367 + Bin 1367: 367 367.187 367.271 367.311 367.345 367.381 367.405 367.44 367.492 367.588 368 + Bin 1368: 368 368.195 368.282 368.327 368.363 368.4 368.425 368.454 368.504 368.584 369 + Bin 1369: 369 369.205 369.295 369.35 369.383 369.401 369.438 369.469 369.523 369.613 370 + Bin 1370: 370 370.167 370.256 370.305 370.335 370.377 370.4 370.435 370.487 370.594 371 + Bin 1371: 371 371.178 371.267 371.315 371.344 371.367 371.411 371.447 371.506 371.594 372 + Bin 1372: 372 372.191 372.281 372.332 372.367 372.406 372.432 372.468 372.53 372.617 373 + Bin 1373: 373 373.165 373.242 373.289 373.325 373.351 373.383 373.418 373.474 373.567 374 + Bin 1374: 374 374.199 374.29 374.337 374.369 374.401 374.429 374.463 374.516 374.622 375 + Bin 1375: 375 375.153 375.236 375.279 375.312 375.345 375.374 375.417 375.477 375.589 376 + Bin 1376: 376 376.179 376.268 376.32 376.359 376.386 376.431 376.477 376.538 376.62 377 + Bin 1377: 377 377.196 377.293 377.35 377.388 377.418 377.466 377.506 377.565 377.647 378 + Bin 1378: 378 378.166 378.259 378.312 378.347 378.393 378.425 378.462 378.514 378.606 379 + Bin 1379: 379 379.176 379.274 379.329 379.367 379.406 379.433 379.477 379.532 379.61 380 + Bin 1380: 380 380.182 380.28 380.341 380.384 380.427 380.458 380.496 380.56 380.647 381 + Bin 1381: 381 381.173 381.276 381.328 381.365 381.392 381.432 381.474 381.538 381.63 382 + Bin 1382: 382 382.176 382.266 382.321 382.355 382.392 382.423 382.462 382.529 382.619 383 + Bin 1383: 383 383.155 383.242 383.296 383.333 383.375 383.41 383.455 383.539 383.632 384 + Bin 1384: 384 384.193 384.292 384.353 384.399 384.429 384.464 384.501 384.565 384.643 385 + Bin 1385: 385 385.192 385.285 385.335 385.379 385.409 385.454 385.504 385.577 385.673 386 + Bin 1386: 386 386.168 386.273 386.324 386.356 386.395 386.42 386.453 386.517 386.599 387 + Bin 1387: 387 387.164 387.255 387.314 387.346 387.371 387.414 387.46 387.528 387.629 388 + Bin 1388: 388 388.155 388.241 388.292 388.327 388.37 388.402 388.448 388.526 388.638 389 + Bin 1389: 389 389.151 389.236 389.302 389.34 389.381 389.411 389.455 389.516 389.621 390 + Bin 1390: 390 390.19 390.29 390.346 390.387 390.426 390.457 390.497 390.568 390.665 391 + Bin 1391: 391 391.232 391.318 391.37 391.409 391.435 391.47 391.504 391.569 391.67 392 + Bin 1392: 392 392.182 392.269 392.322 392.357 392.394 392.424 392.46 392.518 392.609 393 + Bin 1393: 393 393.173 393.269 393.331 393.368 393.4 393.429 393.466 393.526 393.61 394 + Bin 1394: 394 394.209 394.302 394.357 394.388 394.418 394.452 394.493 394.547 394.64 395 + Bin 1395: 395 395.197 395.288 395.347 395.381 395.416 395.443 395.479 395.536 395.623 396 + Bin 1396: 396 396.168 396.255 396.306 396.34 396.374 396.402 396.453 396.512 396.597 397 + Bin 1397: 397 397.188 397.283 397.336 397.371 397.397 397.436 397.472 397.535 397.618 398 + Bin 1398: 398 398.184 398.275 398.324 398.363 398.396 398.423 398.466 398.522 398.611 399 + Bin 1399: 399 399.173 399.277 399.323 399.362 399.386 399.421 399.462 399.534 399.626 400 + Bin 1400: 400 400.207 400.298 400.353 400.387 400.413 400.451 400.492 400.552 400.63 401 + Bin 1401: 401 401.202 401.293 401.343 401.378 401.417 401.448 401.479 401.544 401.631 402 + Bin 1402: 402 402.164 402.253 402.304 402.343 402.383 402.415 402.456 402.527 402.624 403 + Bin 1403: 403 403.173 403.26 403.311 403.347 403.382 403.418 403.464 403.532 403.632 404 + Bin 1404: 404 404.207 404.303 404.349 404.39 404.418 404.455 404.489 404.54 404.627 405 + Bin 1405: 405 405.196 405.296 405.356 405.401 405.438 405.466 405.498 405.554 405.63 406 + Bin 1406: 406 406.163 406.252 406.293 406.324 406.348 406.388 406.427 406.503 406.612 407 + Bin 1407: 407 407.17 407.262 407.313 407.351 407.383 407.418 407.471 407.551 407.652 408 + Bin 1408: 408 408.197 408.293 408.36 408.394 408.427 408.469 408.506 408.572 408.651 409 + Bin 1409: 409 409.16 409.252 409.306 409.342 409.367 409.41 409.45 409.529 409.646 410 + Bin 1410: 410 410.153 410.255 410.31 410.35 410.392 410.425 410.467 410.538 410.646 411 + Bin 1411: 411 411.129 411.21 411.256 411.296 411.336 411.365 411.41 411.495 411.59 412 + Bin 1412: 412 412.163 412.247 412.3 412.342 412.371 412.415 412.459 412.536 412.641 413 + Bin 1413: 413 413.158 413.252 413.311 413.348 413.395 413.426 413.464 413.522 413.622 414 + Bin 1414: 414 414.14 414.238 414.287 414.326 414.364 414.401 414.45 414.531 414.636 415 + Bin 1415: 415 415.159 415.243 415.299 415.337 415.366 415.4 415.44 415.499 415.592 416 + Bin 1416: 416 416.231 416.35 416.426 416.469 416.505 416.543 416.585 416.634 416.699 417 + Bin 1417: 417 417.151 417.25 417.309 417.344 417.395 417.43 417.472 417.537 417.633 418 + Bin 1418: 418 418.152 418.237 418.292 418.333 418.358 418.397 418.441 418.51 418.605 419 + Bin 1419: 419 419.147 419.237 419.298 419.335 419.381 419.418 419.464 419.53 419.647 420 + Bin 1420: 420 420.138 420.226 420.279 420.319 420.35 420.391 420.437 420.506 420.627 421 + Bin 1421: 421 421.142 421.231 421.298 421.335 421.372 421.408 421.448 421.519 421.613 422 + Bin 1422: 422 422.164 422.259 422.319 422.358 422.395 422.429 422.472 422.534 422.629 423 + Bin 1423: 423 423.191 423.284 423.336 423.375 423.405 423.439 423.479 423.539 423.624 424 + Bin 1424: 424 424.174 424.263 424.317 424.359 424.397 424.42 424.461 424.53 424.612 425 + Bin 1425: 425 425.156 425.237 425.288 425.318 425.345 425.38 425.422 425.484 425.564 426 + Bin 1426: 426 426.157 426.239 426.295 426.333 426.373 426.398 426.433 426.489 426.586 427 + Bin 1427: 427 427.148 427.224 427.268 427.305 427.332 427.368 427.409 427.469 427.574 428 + Bin 1428: 428 428.188 428.268 428.323 428.36 428.397 428.425 428.462 428.522 428.629 429 + Bin 1429: 429 429.168 429.249 429.306 429.339 429.374 429.406 429.449 429.507 429.612 430 + Bin 1430: 430 430.147 430.227 430.27 430.301 430.335 430.367 430.406 430.468 430.586 431 + Bin 1431: 431 431.15 431.231 431.278 431.318 431.353 431.391 431.432 431.498 431.6 432 + Bin 1432: 432 432.204 432.277 432.316 432.35 432.374 432.409 432.454 432.51 432.626 433 + Bin 1433: 433 433.172 433.255 433.306 433.342 433.377 433.406 433.444 433.508 433.621 434 + Bin 1434: 434 434.195 434.267 434.324 434.36 434.396 434.425 434.472 434.53 434.649 435 + Bin 1435: 435 435.139 435.223 435.272 435.308 435.343 435.372 435.419 435.492 435.605 436 + Bin 1436: 436 436.43 436.655 436.803 436.915 436.991 436.991 436.991 436.991 436.991 437 + Bin 1437: 437 -nan -nan -nan -nan -nan -nan -nan -nan -nan 438 + Bin 1438: 438 -nan -nan -nan -nan -nan -nan -nan -nan -nan 439 + Bin 1439: 439 -nan -nan -nan -nan -nan -nan -nan -nan -nan 440 + Bin 1440: 440 -nan -nan -nan -nan -nan -nan -nan -nan -nan 441 + Bin 1441: 441 -nan -nan -nan -nan -nan -nan -nan -nan -nan 442 + Bin 1442: 442 -nan -nan -nan -nan -nan -nan -nan -nan -nan 443 + Bin 1443: 443 -nan -nan -nan -nan -nan -nan -nan -nan -nan 444 + Bin 1444: 444 -nan -nan -nan -nan -nan -nan -nan -nan -nan 445 + Bin 1445: 445 -nan -nan -nan -nan -nan -nan -nan -nan -nan 446 + Bin 1446: 446 -nan -nan -nan -nan -nan -nan -nan -nan -nan 447 + Bin 1447: 447 -nan -nan -nan -nan -nan -nan -nan -nan -nan 448 + Bin 1448: 448 -nan -nan -nan -nan -nan -nan -nan -nan -nan 449 + Bin 1449: 449 -nan -nan -nan -nan -nan -nan -nan -nan -nan 450 + Bin 1450: 450 -nan -nan -nan -nan -nan -nan -nan -nan -nan 451 + Bin 1451: 451 -nan -nan -nan -nan -nan -nan -nan -nan -nan 452 + Bin 1452: 452 -nan -nan -nan -nan -nan -nan -nan -nan -nan 453 + Bin 1453: 453 -nan -nan -nan -nan -nan -nan -nan -nan -nan 454 + Bin 1454: 454 -nan -nan -nan -nan -nan -nan -nan -nan -nan 455 + Bin 1455: 455 -nan -nan -nan -nan -nan -nan -nan -nan -nan 456 + Bin 1456: 456 -nan -nan -nan -nan -nan -nan -nan -nan -nan 457 + Bin 1457: 457 -nan -nan -nan -nan -nan -nan -nan -nan -nan 458 + Bin 1458: 458 -nan -nan -nan -nan -nan -nan -nan -nan -nan 459 + Bin 1459: 459 -nan -nan -nan -nan -nan -nan -nan -nan -nan 460 + Bin 1460: 460 -nan -nan -nan -nan -nan -nan -nan -nan -nan 461 + Bin 1461: 461 -nan -nan -nan -nan -nan -nan -nan -nan -nan 462 + Bin 1462: 462 -nan -nan -nan -nan -nan -nan -nan -nan -nan 463 + Bin 1463: 463 -nan -nan -nan -nan -nan -nan -nan -nan -nan 464 + Bin 1464: 464 -nan -nan -nan -nan -nan -nan -nan -nan -nan 465 + Bin 1465: 465 -nan -nan -nan -nan -nan -nan -nan -nan -nan 466 + Bin 1466: 466 -nan -nan -nan -nan -nan -nan -nan -nan -nan 467 + Bin 1467: 467 -nan -nan -nan -nan -nan -nan -nan -nan -nan 468 + Bin 1468: 468 -nan -nan -nan -nan -nan -nan -nan -nan -nan 469 + Bin 1469: 469 -nan -nan -nan -nan -nan -nan -nan -nan -nan 470 + Bin 1470: 470 -nan -nan -nan -nan -nan -nan -nan -nan -nan 471 + Bin 1471: 471 -nan -nan -nan -nan -nan -nan -nan -nan -nan 472 + Bin 1472: 472 -nan -nan -nan -nan -nan -nan -nan -nan -nan 473 + Bin 1473: 473 -nan -nan -nan -nan -nan -nan -nan -nan -nan 474 + Bin 1474: 474 -nan -nan -nan -nan -nan -nan -nan -nan -nan 475 + Bin 1475: 475 -nan -nan -nan -nan -nan -nan -nan -nan -nan 476 + Bin 1476: 476 -nan -nan -nan -nan -nan -nan -nan -nan -nan 477 + Bin 1477: 477 -nan -nan -nan -nan -nan -nan -nan -nan -nan 478 + Bin 1478: 478 -nan -nan -nan -nan -nan -nan -nan -nan -nan 479 + Bin 1479: 479 -nan -nan -nan -nan -nan -nan -nan -nan -nan 480 + Bin 1480: 480 -nan -nan -nan -nan -nan -nan -nan -nan -nan 481 + Bin 1481: 481 -nan -nan -nan -nan -nan -nan -nan -nan -nan 482 + Bin 1482: 482 -nan -nan -nan -nan -nan -nan -nan -nan -nan 483 + Bin 1483: 483 -nan -nan -nan -nan -nan -nan -nan -nan -nan 484 + Bin 1484: 484 -nan -nan -nan -nan -nan -nan -nan -nan -nan 485 + Bin 1485: 485 -nan -nan -nan -nan -nan -nan -nan -nan -nan 486 + Bin 1486: 486 -nan -nan -nan -nan -nan -nan -nan -nan -nan 487 + Bin 1487: 487 -nan -nan -nan -nan -nan -nan -nan -nan -nan 488 + Bin 1488: 488 -nan -nan -nan -nan -nan -nan -nan -nan -nan 489 + Bin 1489: 489 -nan -nan -nan -nan -nan -nan -nan -nan -nan 490 + Bin 1490: 490 -nan -nan -nan -nan -nan -nan -nan -nan -nan 491 + Bin 1491: 491 -nan -nan -nan -nan -nan -nan -nan -nan -nan 492 + Bin 1492: 492 -nan -nan -nan -nan -nan -nan -nan -nan -nan 493 + Bin 1493: 493 -nan -nan -nan -nan -nan -nan -nan -nan -nan 494 + Bin 1494: 494 -nan -nan -nan -nan -nan -nan -nan -nan -nan 495 + Bin 1495: 495 -nan -nan -nan -nan -nan -nan -nan -nan -nan 496 + Bin 1496: 496 -nan -nan -nan -nan -nan -nan -nan -nan -nan 497 + Bin 1497: 497 -nan -nan -nan -nan -nan -nan -nan -nan -nan 498 + Bin 1498: 498 -nan -nan -nan -nan -nan -nan -nan -nan -nan 499 + Bin 1499: 499 -nan -nan -nan -nan -nan -nan -nan -nan -nan 500 + Bin 1500: 500 -nan -nan -nan -nan -nan -nan -nan -nan -nan 501 + Bin 1501: 501 -nan -nan -nan -nan -nan -nan -nan -nan -nan 502 + Bin 1502: 502 -nan -nan -nan -nan -nan -nan -nan -nan -nan 503 + Bin 1503: 503 -nan -nan -nan -nan -nan -nan -nan -nan -nan 504 + Bin 1504: 504 -nan -nan -nan -nan -nan -nan -nan -nan -nan 505 + Bin 1505: 505 -nan -nan -nan -nan -nan -nan -nan -nan -nan 506 + Bin 1506: 506 -nan -nan -nan -nan -nan -nan -nan -nan -nan 507 + Bin 1507: 507 -nan -nan -nan -nan -nan -nan -nan -nan -nan 508 + Bin 1508: 508 -nan -nan -nan -nan -nan -nan -nan -nan -nan 509 + Bin 1509: 509 -nan -nan -nan -nan -nan -nan -nan -nan -nan 510 + Bin 1510: 510 -nan -nan -nan -nan -nan -nan -nan -nan -nan 511 + Bin 1511: 511 -nan -nan -nan -nan -nan -nan -nan -nan -nan 512 + Bin 1512: 512 -nan -nan -nan -nan -nan -nan -nan -nan -nan 513 + Bin 1513: 513 -nan -nan -nan -nan -nan -nan -nan -nan -nan 514 + Bin 1514: 514 -nan -nan -nan -nan -nan -nan -nan -nan -nan 515 + Bin 1515: 515 -nan -nan -nan -nan -nan -nan -nan -nan -nan 516 + Bin 1516: 516 -nan -nan -nan -nan -nan -nan -nan -nan -nan 517 + Bin 1517: 517 -nan -nan -nan -nan -nan -nan -nan -nan -nan 518 + Bin 1518: 518 -nan -nan -nan -nan -nan -nan -nan -nan -nan 519 + Bin 1519: 519 -nan -nan -nan -nan -nan -nan -nan -nan -nan 520 + Bin 1520: 520 -nan -nan -nan -nan -nan -nan -nan -nan -nan 521 + Bin 1521: 521 -nan -nan -nan -nan -nan -nan -nan -nan -nan 522 + Bin 1522: 522 -nan -nan -nan -nan -nan -nan -nan -nan -nan 523 + Bin 1523: 523 -nan -nan -nan -nan -nan -nan -nan -nan -nan 524 + Bin 1524: 524 -nan -nan -nan -nan -nan -nan -nan -nan -nan 525 + Bin 1525: 525 -nan -nan -nan -nan -nan -nan -nan -nan -nan 526 + Bin 1526: 526 -nan -nan -nan -nan -nan -nan -nan -nan -nan 527 + Bin 1527: 527 -nan -nan -nan -nan -nan -nan -nan -nan -nan 528 + Bin 1528: 528 -nan -nan -nan -nan -nan -nan -nan -nan -nan 529 + Bin 1529: 529 -nan -nan -nan -nan -nan -nan -nan -nan -nan 530 + Bin 1530: 530 -nan -nan -nan -nan -nan -nan -nan -nan -nan 531 + Bin 1531: 531 -nan -nan -nan -nan -nan -nan -nan -nan -nan 532 + Bin 1532: 532 -nan -nan -nan -nan -nan -nan -nan -nan -nan 533 + Bin 1533: 533 -nan -nan -nan -nan -nan -nan -nan -nan -nan 534 + Bin 1534: 534 -nan -nan -nan -nan -nan -nan -nan -nan -nan 535 + Bin 1535: 535 -nan -nan -nan -nan -nan -nan -nan -nan -nan 536 + Bin 1536: 536 -nan -nan -nan -nan -nan -nan -nan -nan -nan 537 + Bin 1537: 537 -nan -nan -nan -nan -nan -nan -nan -nan -nan 538 + Bin 1538: 538 -nan -nan -nan -nan -nan -nan -nan -nan -nan 539 + Bin 1539: 539 -nan -nan -nan -nan -nan -nan -nan -nan -nan 540 + Bin 1540: 540 -nan -nan -nan -nan -nan -nan -nan -nan -nan 541 + Bin 1541: 541 -nan -nan -nan -nan -nan -nan -nan -nan -nan 542 + Bin 1542: 542 -nan -nan -nan -nan -nan -nan -nan -nan -nan 543 + Bin 1543: 543 -nan -nan -nan -nan -nan -nan -nan -nan -nan 544 + Bin 1544: 544 -nan -nan -nan -nan -nan -nan -nan -nan -nan 545 + Bin 1545: 545 -nan -nan -nan -nan -nan -nan -nan -nan -nan 546 + Bin 1546: 546 -nan -nan -nan -nan -nan -nan -nan -nan -nan 547 + Bin 1547: 547 -nan -nan -nan -nan -nan -nan -nan -nan -nan 548 + Bin 1548: 548 -nan -nan -nan -nan -nan -nan -nan -nan -nan 549 + Bin 1549: 549 -nan -nan -nan -nan -nan -nan -nan -nan -nan 550 + Bin 1550: 550 -nan -nan -nan -nan -nan -nan -nan -nan -nan 551 + Bin 1551: 551 -nan -nan -nan -nan -nan -nan -nan -nan -nan 552 + Bin 1552: 552 -nan -nan -nan -nan -nan -nan -nan -nan -nan 553 + Bin 1553: 553 -nan -nan -nan -nan -nan -nan -nan -nan -nan 554 + Bin 1554: 554 -nan -nan -nan -nan -nan -nan -nan -nan -nan 555 + Bin 1555: 555 -nan -nan -nan -nan -nan -nan -nan -nan -nan 556 + Bin 1556: 556 -nan -nan -nan -nan -nan -nan -nan -nan -nan 557 + Bin 1557: 557 -nan -nan -nan -nan -nan -nan -nan -nan -nan 558 + Bin 1558: 558 -nan -nan -nan -nan -nan -nan -nan -nan -nan 559 + Bin 1559: 559 -nan -nan -nan -nan -nan -nan -nan -nan -nan 560 + Bin 1560: 560 -nan -nan -nan -nan -nan -nan -nan -nan -nan 561 + Bin 1561: 561 -nan -nan -nan -nan -nan -nan -nan -nan -nan 562 + Bin 1562: 562 -nan -nan -nan -nan -nan -nan -nan -nan -nan 563 + Bin 1563: 563 -nan -nan -nan -nan -nan -nan -nan -nan -nan 564 + Bin 1564: 564 -nan -nan -nan -nan -nan -nan -nan -nan -nan 565 + Bin 1565: 565 -nan -nan -nan -nan -nan -nan -nan -nan -nan 566 + Bin 1566: 566 -nan -nan -nan -nan -nan -nan -nan -nan -nan 567 + Bin 1567: 567 -nan -nan -nan -nan -nan -nan -nan -nan -nan 568 + Bin 1568: 568 -nan -nan -nan -nan -nan -nan -nan -nan -nan 569 + Bin 1569: 569 -nan -nan -nan -nan -nan -nan -nan -nan -nan 570 + Bin 1570: 570 -nan -nan -nan -nan -nan -nan -nan -nan -nan 571 + Bin 1571: 571 -nan -nan -nan -nan -nan -nan -nan -nan -nan 572 + Bin 1572: 572 -nan -nan -nan -nan -nan -nan -nan -nan -nan 573 + Bin 1573: 573 -nan -nan -nan -nan -nan -nan -nan -nan -nan 574 + Bin 1574: 574 -nan -nan -nan -nan -nan -nan -nan -nan -nan 575 + Bin 1575: 575 -nan -nan -nan -nan -nan -nan -nan -nan -nan 576 + Bin 1576: 576 -nan -nan -nan -nan -nan -nan -nan -nan -nan 577 + Bin 1577: 577 -nan -nan -nan -nan -nan -nan -nan -nan -nan 578 + Bin 1578: 578 -nan -nan -nan -nan -nan -nan -nan -nan -nan 579 + Bin 1579: 579 -nan -nan -nan -nan -nan -nan -nan -nan -nan 580 + Bin 1580: 580 -nan -nan -nan -nan -nan -nan -nan -nan -nan 581 + Bin 1581: 581 -nan -nan -nan -nan -nan -nan -nan -nan -nan 582 + Bin 1582: 582 -nan -nan -nan -nan -nan -nan -nan -nan -nan 583 + Bin 1583: 583 -nan -nan -nan -nan -nan -nan -nan -nan -nan 584 + Bin 1584: 584 -nan -nan -nan -nan -nan -nan -nan -nan -nan 585 + Bin 1585: 585 -nan -nan -nan -nan -nan -nan -nan -nan -nan 586 + Bin 1586: 586 -nan -nan -nan -nan -nan -nan -nan -nan -nan 587 + Bin 1587: 587 -nan -nan -nan -nan -nan -nan -nan -nan -nan 588 + Bin 1588: 588 -nan -nan -nan -nan -nan -nan -nan -nan -nan 589 + Bin 1589: 589 -nan -nan -nan -nan -nan -nan -nan -nan -nan 590 + Bin 1590: 590 -nan -nan -nan -nan -nan -nan -nan -nan -nan 591 + Bin 1591: 591 -nan -nan -nan -nan -nan -nan -nan -nan -nan 592 + Bin 1592: 592 -nan -nan -nan -nan -nan -nan -nan -nan -nan 593 + Bin 1593: 593 -nan -nan -nan -nan -nan -nan -nan -nan -nan 594 + Bin 1594: 594 -nan -nan -nan -nan -nan -nan -nan -nan -nan 595 + Bin 1595: 595 -nan -nan -nan -nan -nan -nan -nan -nan -nan 596 + Bin 1596: 596 -nan -nan -nan -nan -nan -nan -nan -nan -nan 597 + Bin 1597: 597 -nan -nan -nan -nan -nan -nan -nan -nan -nan 598 + Bin 1598: 598 -nan -nan -nan -nan -nan -nan -nan -nan -nan 599 + Bin 1599: 599 -nan -nan -nan -nan -nan -nan -nan -nan -nan 600 + Bin 1600: 600 -nan -nan -nan -nan -nan -nan -nan -nan -nan 601 + Bin 1601: 601 -nan -nan -nan -nan -nan -nan -nan -nan -nan 602 + Bin 1602: 602 -nan -nan -nan -nan -nan -nan -nan -nan -nan 603 + Bin 1603: 603 -nan -nan -nan -nan -nan -nan -nan -nan -nan 604 + Bin 1604: 604 -nan -nan -nan -nan -nan -nan -nan -nan -nan 605 + Bin 1605: 605 -nan -nan -nan -nan -nan -nan -nan -nan -nan 606 + Bin 1606: 606 -nan -nan -nan -nan -nan -nan -nan -nan -nan 607 + Bin 1607: 607 -nan -nan -nan -nan -nan -nan -nan -nan -nan 608 + Bin 1608: 608 -nan -nan -nan -nan -nan -nan -nan -nan -nan 609 + Bin 1609: 609 -nan -nan -nan -nan -nan -nan -nan -nan -nan 610 + Bin 1610: 610 -nan -nan -nan -nan -nan -nan -nan -nan -nan 611 + Bin 1611: 611 -nan -nan -nan -nan -nan -nan -nan -nan -nan 612 + Bin 1612: 612 -nan -nan -nan -nan -nan -nan -nan -nan -nan 613 + Bin 1613: 613 -nan -nan -nan -nan -nan -nan -nan -nan -nan 614 + Bin 1614: 614 -nan -nan -nan -nan -nan -nan -nan -nan -nan 615 + Bin 1615: 615 -nan -nan -nan -nan -nan -nan -nan -nan -nan 616 + Bin 1616: 616 -nan -nan -nan -nan -nan -nan -nan -nan -nan 617 + Bin 1617: 617 -nan -nan -nan -nan -nan -nan -nan -nan -nan 618 + Bin 1618: 618 -nan -nan -nan -nan -nan -nan -nan -nan -nan 619 + Bin 1619: 619 -nan -nan -nan -nan -nan -nan -nan -nan -nan 620 + Bin 1620: 620 -nan -nan -nan -nan -nan -nan -nan -nan -nan 621 + Bin 1621: 621 -nan -nan -nan -nan -nan -nan -nan -nan -nan 622 + Bin 1622: 622 -nan -nan -nan -nan -nan -nan -nan -nan -nan 623 + Bin 1623: 623 -nan -nan -nan -nan -nan -nan -nan -nan -nan 624 + Bin 1624: 624 -nan -nan -nan -nan -nan -nan -nan -nan -nan 625 + Bin 1625: 625 -nan -nan -nan -nan -nan -nan -nan -nan -nan 626 + Bin 1626: 626 -nan -nan -nan -nan -nan -nan -nan -nan -nan 627 + Bin 1627: 627 -nan -nan -nan -nan -nan -nan -nan -nan -nan 628 + Bin 1628: 628 -nan -nan -nan -nan -nan -nan -nan -nan -nan 629 + Bin 1629: 629 -nan -nan -nan -nan -nan -nan -nan -nan -nan 630 + Bin 1630: 630 -nan -nan -nan -nan -nan -nan -nan -nan -nan 631 + Bin 1631: 631 -nan -nan -nan -nan -nan -nan -nan -nan -nan 632 + Bin 1632: 632 -nan -nan -nan -nan -nan -nan -nan -nan -nan 633 + Bin 1633: 633 -nan -nan -nan -nan -nan -nan -nan -nan -nan 634 + Bin 1634: 634 -nan -nan -nan -nan -nan -nan -nan -nan -nan 635 + Bin 1635: 635 -nan -nan -nan -nan -nan -nan -nan -nan -nan 636 + Bin 1636: 636 -nan -nan -nan -nan -nan -nan -nan -nan -nan 637 + Bin 1637: 637 -nan -nan -nan -nan -nan -nan -nan -nan -nan 638 + Bin 1638: 638 -nan -nan -nan -nan -nan -nan -nan -nan -nan 639 + Bin 1639: 639 -nan -nan -nan -nan -nan -nan -nan -nan -nan 640 + Bin 1640: 640 -nan -nan -nan -nan -nan -nan -nan -nan -nan 641 + Bin 1641: 641 -nan -nan -nan -nan -nan -nan -nan -nan -nan 642 + Bin 1642: 642 -nan -nan -nan -nan -nan -nan -nan -nan -nan 643 + Bin 1643: 643 -nan -nan -nan -nan -nan -nan -nan -nan -nan 644 + Bin 1644: 644 -nan -nan -nan -nan -nan -nan -nan -nan -nan 645 + Bin 1645: 645 -nan -nan -nan -nan -nan -nan -nan -nan -nan 646 + Bin 1646: 646 -nan -nan -nan -nan -nan -nan -nan -nan -nan 647 + Bin 1647: 647 -nan -nan -nan -nan -nan -nan -nan -nan -nan 648 + Bin 1648: 648 -nan -nan -nan -nan -nan -nan -nan -nan -nan 649 + Bin 1649: 649 -nan -nan -nan -nan -nan -nan -nan -nan -nan 650 + Bin 1650: 650 -nan -nan -nan -nan -nan -nan -nan -nan -nan 651 + Bin 1651: 651 -nan -nan -nan -nan -nan -nan -nan -nan -nan 652 + Bin 1652: 652 -nan -nan -nan -nan -nan -nan -nan -nan -nan 653 + Bin 1653: 653 -nan -nan -nan -nan -nan -nan -nan -nan -nan 654 + Bin 1654: 654 -nan -nan -nan -nan -nan -nan -nan -nan -nan 655 + Bin 1655: 655 -nan -nan -nan -nan -nan -nan -nan -nan -nan 656 + Bin 1656: 656 -nan -nan -nan -nan -nan -nan -nan -nan -nan 657 + Bin 1657: 657 -nan -nan -nan -nan -nan -nan -nan -nan -nan 658 + Bin 1658: 658 -nan -nan -nan -nan -nan -nan -nan -nan -nan 659 + Bin 1659: 659 -nan -nan -nan -nan -nan -nan -nan -nan -nan 660 + Bin 1660: 660 -nan -nan -nan -nan -nan -nan -nan -nan -nan 661 + Bin 1661: 661 -nan -nan -nan -nan -nan -nan -nan -nan -nan 662 + Bin 1662: 662 -nan -nan -nan -nan -nan -nan -nan -nan -nan 663 + Bin 1663: 663 -nan -nan -nan -nan -nan -nan -nan -nan -nan 664 + Bin 1664: 664 -nan -nan -nan -nan -nan -nan -nan -nan -nan 665 + Bin 1665: 665 -nan -nan -nan -nan -nan -nan -nan -nan -nan 666 + Bin 1666: 666 -nan -nan -nan -nan -nan -nan -nan -nan -nan 667 + Bin 1667: 667 -nan -nan -nan -nan -nan -nan -nan -nan -nan 668 + Bin 1668: 668 -nan -nan -nan -nan -nan -nan -nan -nan -nan 669 + Bin 1669: 669 -nan -nan -nan -nan -nan -nan -nan -nan -nan 670 + Bin 1670: 670 -nan -nan -nan -nan -nan -nan -nan -nan -nan 671 + Bin 1671: 671 -nan -nan -nan -nan -nan -nan -nan -nan -nan 672 + Bin 1672: 672 -nan -nan -nan -nan -nan -nan -nan -nan -nan 673 + Bin 1673: 673 -nan -nan -nan -nan -nan -nan -nan -nan -nan 674 + Bin 1674: 674 -nan -nan -nan -nan -nan -nan -nan -nan -nan 675 + Bin 1675: 675 -nan -nan -nan -nan -nan -nan -nan -nan -nan 676 + Bin 1676: 676 -nan -nan -nan -nan -nan -nan -nan -nan -nan 677 + Bin 1677: 677 -nan -nan -nan -nan -nan -nan -nan -nan -nan 678 + Bin 1678: 678 -nan -nan -nan -nan -nan -nan -nan -nan -nan 679 + Bin 1679: 679 -nan -nan -nan -nan -nan -nan -nan -nan -nan 680 + Bin 1680: 680 -nan -nan -nan -nan -nan -nan -nan -nan -nan 681 + Bin 1681: 681 -nan -nan -nan -nan -nan -nan -nan -nan -nan 682 + Bin 1682: 682 -nan -nan -nan -nan -nan -nan -nan -nan -nan 683 + Bin 1683: 683 -nan -nan -nan -nan -nan -nan -nan -nan -nan 684 + Bin 1684: 684 -nan -nan -nan -nan -nan -nan -nan -nan -nan 685 + Bin 1685: 685 -nan -nan -nan -nan -nan -nan -nan -nan -nan 686 + Bin 1686: 686 -nan -nan -nan -nan -nan -nan -nan -nan -nan 687 + Bin 1687: 687 -nan -nan -nan -nan -nan -nan -nan -nan -nan 688 + Bin 1688: 688 -nan -nan -nan -nan -nan -nan -nan -nan -nan 689 + Bin 1689: 689 -nan -nan -nan -nan -nan -nan -nan -nan -nan 690 + Bin 1690: 690 -nan -nan -nan -nan -nan -nan -nan -nan -nan 691 + Bin 1691: 691 -nan -nan -nan -nan -nan -nan -nan -nan -nan 692 + Bin 1692: 692 -nan -nan -nan -nan -nan -nan -nan -nan -nan 693 + Bin 1693: 693 -nan -nan -nan -nan -nan -nan -nan -nan -nan 694 + Bin 1694: 694 -nan -nan -nan -nan -nan -nan -nan -nan -nan 695 + Bin 1695: 695 -nan -nan -nan -nan -nan -nan -nan -nan -nan 696 + Bin 1696: 696 -nan -nan -nan -nan -nan -nan -nan -nan -nan 697 + Bin 1697: 697 -nan -nan -nan -nan -nan -nan -nan -nan -nan 698 + Bin 1698: 698 -nan -nan -nan -nan -nan -nan -nan -nan -nan 699 + Bin 1699: 699 -nan -nan -nan -nan -nan -nan -nan -nan -nan 700 + Bin 1700: 700 -nan -nan -nan -nan -nan -nan -nan -nan -nan 701 + Bin 1701: 701 -nan -nan -nan -nan -nan -nan -nan -nan -nan 702 + Bin 1702: 702 -nan -nan -nan -nan -nan -nan -nan -nan -nan 703 + Bin 1703: 703 -nan -nan -nan -nan -nan -nan -nan -nan -nan 704 + Bin 1704: 704 -nan -nan -nan -nan -nan -nan -nan -nan -nan 705 + Bin 1705: 705 -nan -nan -nan -nan -nan -nan -nan -nan -nan 706 + Bin 1706: 706 -nan -nan -nan -nan -nan -nan -nan -nan -nan 707 + Bin 1707: 707 -nan -nan -nan -nan -nan -nan -nan -nan -nan 708 + Bin 1708: 708 -nan -nan -nan -nan -nan -nan -nan -nan -nan 709 + Bin 1709: 709 -nan -nan -nan -nan -nan -nan -nan -nan -nan 710 + Bin 1710: 710 -nan -nan -nan -nan -nan -nan -nan -nan -nan 711 + Bin 1711: 711 -nan -nan -nan -nan -nan -nan -nan -nan -nan 712 + Bin 1712: 712 -nan -nan -nan -nan -nan -nan -nan -nan -nan 713 + Bin 1713: 713 -nan -nan -nan -nan -nan -nan -nan -nan -nan 714 + Bin 1714: 714 -nan -nan -nan -nan -nan -nan -nan -nan -nan 715 + Bin 1715: 715 -nan -nan -nan -nan -nan -nan -nan -nan -nan 716 + Bin 1716: 716 -nan -nan -nan -nan -nan -nan -nan -nan -nan 717 + Bin 1717: 717 -nan -nan -nan -nan -nan -nan -nan -nan -nan 718 + Bin 1718: 718 -nan -nan -nan -nan -nan -nan -nan -nan -nan 719 + Bin 1719: 719 -nan -nan -nan -nan -nan -nan -nan -nan -nan 720 + Bin 1720: 720 -nan -nan -nan -nan -nan -nan -nan -nan -nan 721 + Bin 1721: 721 -nan -nan -nan -nan -nan -nan -nan -nan -nan 722 + Bin 1722: 722 -nan -nan -nan -nan -nan -nan -nan -nan -nan 723 + Bin 1723: 723 -nan -nan -nan -nan -nan -nan -nan -nan -nan 724 + Bin 1724: 724 -nan -nan -nan -nan -nan -nan -nan -nan -nan 725 + Bin 1725: 725 -nan -nan -nan -nan -nan -nan -nan -nan -nan 726 + Bin 1726: 726 -nan -nan -nan -nan -nan -nan -nan -nan -nan 727 + Bin 1727: 727 -nan -nan -nan -nan -nan -nan -nan -nan -nan 728 + Bin 1728: 728 -nan -nan -nan -nan -nan -nan -nan -nan -nan 729 + Bin 1729: 729 -nan -nan -nan -nan -nan -nan -nan -nan -nan 730 + Bin 1730: 730 -nan -nan -nan -nan -nan -nan -nan -nan -nan 731 + Bin 1731: 731 -nan -nan -nan -nan -nan -nan -nan -nan -nan 732 + Bin 1732: 732 -nan -nan -nan -nan -nan -nan -nan -nan -nan 733 + Bin 1733: 733 -nan -nan -nan -nan -nan -nan -nan -nan -nan 734 + Bin 1734: 734 -nan -nan -nan -nan -nan -nan -nan -nan -nan 735 + Bin 1735: 735 -nan -nan -nan -nan -nan -nan -nan -nan -nan 736 + Bin 1736: 736 -nan -nan -nan -nan -nan -nan -nan -nan -nan 737 + Bin 1737: 737 -nan -nan -nan -nan -nan -nan -nan -nan -nan 738 + Bin 1738: 738 -nan -nan -nan -nan -nan -nan -nan -nan -nan 739 + Bin 1739: 739 -nan -nan -nan -nan -nan -nan -nan -nan -nan 740 + Bin 1740: 740 -nan -nan -nan -nan -nan -nan -nan -nan -nan 741 + Bin 1741: 741 -nan -nan -nan -nan -nan -nan -nan -nan -nan 742 + Bin 1742: 742 -nan -nan -nan -nan -nan -nan -nan -nan -nan 743 + Bin 1743: 743 -nan -nan -nan -nan -nan -nan -nan -nan -nan 744 + Bin 1744: 744 -nan -nan -nan -nan -nan -nan -nan -nan -nan 745 + Bin 1745: 745 -nan -nan -nan -nan -nan -nan -nan -nan -nan 746 + Bin 1746: 746 -nan -nan -nan -nan -nan -nan -nan -nan -nan 747 + Bin 1747: 747 -nan -nan -nan -nan -nan -nan -nan -nan -nan 748 + Bin 1748: 748 -nan -nan -nan -nan -nan -nan -nan -nan -nan 749 + Bin 1749: 749 -nan -nan -nan -nan -nan -nan -nan -nan -nan 750 + Bin 1750: 750 -nan -nan -nan -nan -nan -nan -nan -nan -nan 751 + Bin 1751: 751 -nan -nan -nan -nan -nan -nan -nan -nan -nan 752 + Bin 1752: 752 -nan -nan -nan -nan -nan -nan -nan -nan -nan 753 + Bin 1753: 753 -nan -nan -nan -nan -nan -nan -nan -nan -nan 754 + Bin 1754: 754 -nan -nan -nan -nan -nan -nan -nan -nan -nan 755 + Bin 1755: 755 -nan -nan -nan -nan -nan -nan -nan -nan -nan 756 + Bin 1756: 756 -nan -nan -nan -nan -nan -nan -nan -nan -nan 757 + Bin 1757: 757 -nan -nan -nan -nan -nan -nan -nan -nan -nan 758 + Bin 1758: 758 -nan -nan -nan -nan -nan -nan -nan -nan -nan 759 + Bin 1759: 759 -nan -nan -nan -nan -nan -nan -nan -nan -nan 760 + Bin 1760: 760 -nan -nan -nan -nan -nan -nan -nan -nan -nan 761 + Bin 1761: 761 -nan -nan -nan -nan -nan -nan -nan -nan -nan 762 + Bin 1762: 762 -nan -nan -nan -nan -nan -nan -nan -nan -nan 763 + Bin 1763: 763 -nan -nan -nan -nan -nan -nan -nan -nan -nan 764 + Bin 1764: 764 -nan -nan -nan -nan -nan -nan -nan -nan -nan 765 + Bin 1765: 765 -nan -nan -nan -nan -nan -nan -nan -nan -nan 766 + Bin 1766: 766 -nan -nan -nan -nan -nan -nan -nan -nan -nan 767 + Bin 1767: 767 -nan -nan -nan -nan -nan -nan -nan -nan -nan 768 + Bin 1768: 768 -nan -nan -nan -nan -nan -nan -nan -nan -nan 769 + Bin 1769: 769 -nan -nan -nan -nan -nan -nan -nan -nan -nan 770 + Bin 1770: 770 -nan -nan -nan -nan -nan -nan -nan -nan -nan 771 + Bin 1771: 771 -nan -nan -nan -nan -nan -nan -nan -nan -nan 772 + Bin 1772: 772 -nan -nan -nan -nan -nan -nan -nan -nan -nan 773 + Bin 1773: 773 -nan -nan -nan -nan -nan -nan -nan -nan -nan 774 + Bin 1774: 774 -nan -nan -nan -nan -nan -nan -nan -nan -nan 775 + Bin 1775: 775 -nan -nan -nan -nan -nan -nan -nan -nan -nan 776 + Bin 1776: 776 -nan -nan -nan -nan -nan -nan -nan -nan -nan 777 + Bin 1777: 777 -nan -nan -nan -nan -nan -nan -nan -nan -nan 778 + Bin 1778: 778 -nan -nan -nan -nan -nan -nan -nan -nan -nan 779 + Bin 1779: 779 -nan -nan -nan -nan -nan -nan -nan -nan -nan 780 + Bin 1780: 780 -nan -nan -nan -nan -nan -nan -nan -nan -nan 781 + Bin 1781: 781 -nan -nan -nan -nan -nan -nan -nan -nan -nan 782 + Bin 1782: 782 -nan -nan -nan -nan -nan -nan -nan -nan -nan 783 + Bin 1783: 783 -nan -nan -nan -nan -nan -nan -nan -nan -nan 784 + Bin 1784: 784 -nan -nan -nan -nan -nan -nan -nan -nan -nan 785 + Bin 1785: 785 -nan -nan -nan -nan -nan -nan -nan -nan -nan 786 + Bin 1786: 786 -nan -nan -nan -nan -nan -nan -nan -nan -nan 787 + Bin 1787: 787 -nan -nan -nan -nan -nan -nan -nan -nan -nan 788 + Bin 1788: 788 -nan -nan -nan -nan -nan -nan -nan -nan -nan 789 + Bin 1789: 789 -nan -nan -nan -nan -nan -nan -nan -nan -nan 790 + Bin 1790: 790 -nan -nan -nan -nan -nan -nan -nan -nan -nan 791 + Bin 1791: 791 -nan -nan -nan -nan -nan -nan -nan -nan -nan 792 + Bin 1792: 792 -nan -nan -nan -nan -nan -nan -nan -nan -nan 793 + Bin 1793: 793 -nan -nan -nan -nan -nan -nan -nan -nan -nan 794 + Bin 1794: 794 -nan -nan -nan -nan -nan -nan -nan -nan -nan 795 + Bin 1795: 795 -nan -nan -nan -nan -nan -nan -nan -nan -nan 796 + Bin 1796: 796 -nan -nan -nan -nan -nan -nan -nan -nan -nan 797 + Bin 1797: 797 -nan -nan -nan -nan -nan -nan -nan -nan -nan 798 + Bin 1798: 798 -nan -nan -nan -nan -nan -nan -nan -nan -nan 799 + Bin 1799: 799 -nan -nan -nan -nan -nan -nan -nan -nan -nan 800 + Bin 1800: 800 -nan -nan -nan -nan -nan -nan -nan -nan -nan 801 + Bin 1801: 801 -nan -nan -nan -nan -nan -nan -nan -nan -nan 802 + Bin 1802: 802 -nan -nan -nan -nan -nan -nan -nan -nan -nan 803 + Bin 1803: 803 -nan -nan -nan -nan -nan -nan -nan -nan -nan 804 + Bin 1804: 804 -nan -nan -nan -nan -nan -nan -nan -nan -nan 805 + Bin 1805: 805 -nan -nan -nan -nan -nan -nan -nan -nan -nan 806 + Bin 1806: 806 -nan -nan -nan -nan -nan -nan -nan -nan -nan 807 + Bin 1807: 807 -nan -nan -nan -nan -nan -nan -nan -nan -nan 808 + Bin 1808: 808 -nan -nan -nan -nan -nan -nan -nan -nan -nan 809 + Bin 1809: 809 -nan -nan -nan -nan -nan -nan -nan -nan -nan 810 + Bin 1810: 810 -nan -nan -nan -nan -nan -nan -nan -nan -nan 811 + Bin 1811: 811 -nan -nan -nan -nan -nan -nan -nan -nan -nan 812 + Bin 1812: 812 -nan -nan -nan -nan -nan -nan -nan -nan -nan 813 + Bin 1813: 813 -nan -nan -nan -nan -nan -nan -nan -nan -nan 814 + Bin 1814: 814 -nan -nan -nan -nan -nan -nan -nan -nan -nan 815 + Bin 1815: 815 -nan -nan -nan -nan -nan -nan -nan -nan -nan 816 + Bin 1816: 816 -nan -nan -nan -nan -nan -nan -nan -nan -nan 817 + Bin 1817: 817 -nan -nan -nan -nan -nan -nan -nan -nan -nan 818 + Bin 1818: 818 -nan -nan -nan -nan -nan -nan -nan -nan -nan 819 + Bin 1819: 819 -nan -nan -nan -nan -nan -nan -nan -nan -nan 820 + Bin 1820: 820 -nan -nan -nan -nan -nan -nan -nan -nan -nan 821 + Bin 1821: 821 -nan -nan -nan -nan -nan -nan -nan -nan -nan 822 + Bin 1822: 822 -nan -nan -nan -nan -nan -nan -nan -nan -nan 823 + Bin 1823: 823 -nan -nan -nan -nan -nan -nan -nan -nan -nan 824 + Bin 1824: 824 -nan -nan -nan -nan -nan -nan -nan -nan -nan 825 + Bin 1825: 825 -nan -nan -nan -nan -nan -nan -nan -nan -nan 826 + Bin 1826: 826 -nan -nan -nan -nan -nan -nan -nan -nan -nan 827 + Bin 1827: 827 -nan -nan -nan -nan -nan -nan -nan -nan -nan 828 + Bin 1828: 828 -nan -nan -nan -nan -nan -nan -nan -nan -nan 829 + Bin 1829: 829 -nan -nan -nan -nan -nan -nan -nan -nan -nan 830 + Bin 1830: 830 -nan -nan -nan -nan -nan -nan -nan -nan -nan 831 + Bin 1831: 831 -nan -nan -nan -nan -nan -nan -nan -nan -nan 832 + Bin 1832: 832 -nan -nan -nan -nan -nan -nan -nan -nan -nan 833 + Bin 1833: 833 -nan -nan -nan -nan -nan -nan -nan -nan -nan 834 + Bin 1834: 834 -nan -nan -nan -nan -nan -nan -nan -nan -nan 835 + Bin 1835: 835 -nan -nan -nan -nan -nan -nan -nan -nan -nan 836 + Bin 1836: 836 -nan -nan -nan -nan -nan -nan -nan -nan -nan 837 + Bin 1837: 837 -nan -nan -nan -nan -nan -nan -nan -nan -nan 838 + Bin 1838: 838 -nan -nan -nan -nan -nan -nan -nan -nan -nan 839 + Bin 1839: 839 -nan -nan -nan -nan -nan -nan -nan -nan -nan 840 + Bin 1840: 840 -nan -nan -nan -nan -nan -nan -nan -nan -nan 841 + Bin 1841: 841 -nan -nan -nan -nan -nan -nan -nan -nan -nan 842 + Bin 1842: 842 -nan -nan -nan -nan -nan -nan -nan -nan -nan 843 + Bin 1843: 843 -nan -nan -nan -nan -nan -nan -nan -nan -nan 844 + Bin 1844: 844 -nan -nan -nan -nan -nan -nan -nan -nan -nan 845 + Bin 1845: 845 -nan -nan -nan -nan -nan -nan -nan -nan -nan 846 + Bin 1846: 846 -nan -nan -nan -nan -nan -nan -nan -nan -nan 847 + Bin 1847: 847 -nan -nan -nan -nan -nan -nan -nan -nan -nan 848 + Bin 1848: 848 -nan -nan -nan -nan -nan -nan -nan -nan -nan 849 + Bin 1849: 849 -nan -nan -nan -nan -nan -nan -nan -nan -nan 850 + Bin 1850: 850 -nan -nan -nan -nan -nan -nan -nan -nan -nan 851 + Bin 1851: 851 -nan -nan -nan -nan -nan -nan -nan -nan -nan 852 + Bin 1852: 852 -nan -nan -nan -nan -nan -nan -nan -nan -nan 853 + Bin 1853: 853 -nan -nan -nan -nan -nan -nan -nan -nan -nan 854 + Bin 1854: 854 -nan -nan -nan -nan -nan -nan -nan -nan -nan 855 + Bin 1855: 855 -nan -nan -nan -nan -nan -nan -nan -nan -nan 856 + Bin 1856: 856 -nan -nan -nan -nan -nan -nan -nan -nan -nan 857 + Bin 1857: 857 -nan -nan -nan -nan -nan -nan -nan -nan -nan 858 + Bin 1858: 858 -nan -nan -nan -nan -nan -nan -nan -nan -nan 859 + Bin 1859: 859 -nan -nan -nan -nan -nan -nan -nan -nan -nan 860 + Bin 1860: 860 -nan -nan -nan -nan -nan -nan -nan -nan -nan 861 + Bin 1861: 861 -nan -nan -nan -nan -nan -nan -nan -nan -nan 862 + Bin 1862: 862 -nan -nan -nan -nan -nan -nan -nan -nan -nan 863 + Bin 1863: 863 -nan -nan -nan -nan -nan -nan -nan -nan -nan 864 + Bin 1864: 864 -nan -nan -nan -nan -nan -nan -nan -nan -nan 865 + Bin 1865: 865 -nan -nan -nan -nan -nan -nan -nan -nan -nan 866 + Bin 1866: 866 -nan -nan -nan -nan -nan -nan -nan -nan -nan 867 + Bin 1867: 867 -nan -nan -nan -nan -nan -nan -nan -nan -nan 868 + Bin 1868: 868 -nan -nan -nan -nan -nan -nan -nan -nan -nan 869 + Bin 1869: 869 -nan -nan -nan -nan -nan -nan -nan -nan -nan 870 + Bin 1870: 870 -nan -nan -nan -nan -nan -nan -nan -nan -nan 871 + Bin 1871: 871 -nan -nan -nan -nan -nan -nan -nan -nan -nan 872 + Bin 1872: 872 -nan -nan -nan -nan -nan -nan -nan -nan -nan 873 + Bin 1873: 873 -nan -nan -nan -nan -nan -nan -nan -nan -nan 874 + Bin 1874: 874 -nan -nan -nan -nan -nan -nan -nan -nan -nan 875 + Bin 1875: 875 -nan -nan -nan -nan -nan -nan -nan -nan -nan 876 + Bin 1876: 876 -nan -nan -nan -nan -nan -nan -nan -nan -nan 877 + Bin 1877: 877 -nan -nan -nan -nan -nan -nan -nan -nan -nan 878 + Bin 1878: 878 -nan -nan -nan -nan -nan -nan -nan -nan -nan 879 + Bin 1879: 879 -nan -nan -nan -nan -nan -nan -nan -nan -nan 880 + Bin 1880: 880 -nan -nan -nan -nan -nan -nan -nan -nan -nan 881 + Bin 1881: 881 -nan -nan -nan -nan -nan -nan -nan -nan -nan 882 + Bin 1882: 882 -nan -nan -nan -nan -nan -nan -nan -nan -nan 883 + Bin 1883: 883 -nan -nan -nan -nan -nan -nan -nan -nan -nan 884 + Bin 1884: 884 -nan -nan -nan -nan -nan -nan -nan -nan -nan 885 + Bin 1885: 885 -nan -nan -nan -nan -nan -nan -nan -nan -nan 886 + Bin 1886: 886 -nan -nan -nan -nan -nan -nan -nan -nan -nan 887 + Bin 1887: 887 -nan -nan -nan -nan -nan -nan -nan -nan -nan 888 + Bin 1888: 888 -nan -nan -nan -nan -nan -nan -nan -nan -nan 889 + Bin 1889: 889 -nan -nan -nan -nan -nan -nan -nan -nan -nan 890 + Bin 1890: 890 -nan -nan -nan -nan -nan -nan -nan -nan -nan 891 + Bin 1891: 891 -nan -nan -nan -nan -nan -nan -nan -nan -nan 892 + Bin 1892: 892 -nan -nan -nan -nan -nan -nan -nan -nan -nan 893 + Bin 1893: 893 -nan -nan -nan -nan -nan -nan -nan -nan -nan 894 + Bin 1894: 894 -nan -nan -nan -nan -nan -nan -nan -nan -nan 895 + Bin 1895: 895 -nan -nan -nan -nan -nan -nan -nan -nan -nan 896 + Bin 1896: 896 -nan -nan -nan -nan -nan -nan -nan -nan -nan 897 + Bin 1897: 897 -nan -nan -nan -nan -nan -nan -nan -nan -nan 898 + Bin 1898: 898 -nan -nan -nan -nan -nan -nan -nan -nan -nan 899 + Bin 1899: 899 -nan -nan -nan -nan -nan -nan -nan -nan -nan 900 + Bin 1900: 900 -nan -nan -nan -nan -nan -nan -nan -nan -nan 901 + Bin 1901: 901 -nan -nan -nan -nan -nan -nan -nan -nan -nan 902 + Bin 1902: 902 -nan -nan -nan -nan -nan -nan -nan -nan -nan 903 + Bin 1903: 903 -nan -nan -nan -nan -nan -nan -nan -nan -nan 904 + Bin 1904: 904 -nan -nan -nan -nan -nan -nan -nan -nan -nan 905 + Bin 1905: 905 -nan -nan -nan -nan -nan -nan -nan -nan -nan 906 + Bin 1906: 906 -nan -nan -nan -nan -nan -nan -nan -nan -nan 907 + Bin 1907: 907 -nan -nan -nan -nan -nan -nan -nan -nan -nan 908 + Bin 1908: 908 -nan -nan -nan -nan -nan -nan -nan -nan -nan 909 + Bin 1909: 909 -nan -nan -nan -nan -nan -nan -nan -nan -nan 910 + Bin 1910: 910 -nan -nan -nan -nan -nan -nan -nan -nan -nan 911 + Bin 1911: 911 -nan -nan -nan -nan -nan -nan -nan -nan -nan 912 + Bin 1912: 912 -nan -nan -nan -nan -nan -nan -nan -nan -nan 913 + Bin 1913: 913 -nan -nan -nan -nan -nan -nan -nan -nan -nan 914 + Bin 1914: 914 -nan -nan -nan -nan -nan -nan -nan -nan -nan 915 + Bin 1915: 915 -nan -nan -nan -nan -nan -nan -nan -nan -nan 916 + Bin 1916: 916 -nan -nan -nan -nan -nan -nan -nan -nan -nan 917 + Bin 1917: 917 -nan -nan -nan -nan -nan -nan -nan -nan -nan 918 + Bin 1918: 918 -nan -nan -nan -nan -nan -nan -nan -nan -nan 919 + Bin 1919: 919 -nan -nan -nan -nan -nan -nan -nan -nan -nan 920 + Bin 1920: 920 -nan -nan -nan -nan -nan -nan -nan -nan -nan 921 + Bin 1921: 921 -nan -nan -nan -nan -nan -nan -nan -nan -nan 922 + Bin 1922: 922 -nan -nan -nan -nan -nan -nan -nan -nan -nan 923 + Bin 1923: 923 -nan -nan -nan -nan -nan -nan -nan -nan -nan 924 + Bin 1924: 924 -nan -nan -nan -nan -nan -nan -nan -nan -nan 925 + Bin 1925: 925 -nan -nan -nan -nan -nan -nan -nan -nan -nan 926 + Bin 1926: 926 -nan -nan -nan -nan -nan -nan -nan -nan -nan 927 + Bin 1927: 927 -nan -nan -nan -nan -nan -nan -nan -nan -nan 928 + Bin 1928: 928 -nan -nan -nan -nan -nan -nan -nan -nan -nan 929 + Bin 1929: 929 -nan -nan -nan -nan -nan -nan -nan -nan -nan 930 + Bin 1930: 930 -nan -nan -nan -nan -nan -nan -nan -nan -nan 931 + Bin 1931: 931 -nan -nan -nan -nan -nan -nan -nan -nan -nan 932 + Bin 1932: 932 -nan -nan -nan -nan -nan -nan -nan -nan -nan 933 + Bin 1933: 933 -nan -nan -nan -nan -nan -nan -nan -nan -nan 934 + Bin 1934: 934 -nan -nan -nan -nan -nan -nan -nan -nan -nan 935 + Bin 1935: 935 -nan -nan -nan -nan -nan -nan -nan -nan -nan 936 + Bin 1936: 936 -nan -nan -nan -nan -nan -nan -nan -nan -nan 937 + Bin 1937: 937 -nan -nan -nan -nan -nan -nan -nan -nan -nan 938 + Bin 1938: 938 -nan -nan -nan -nan -nan -nan -nan -nan -nan 939 + Bin 1939: 939 -nan -nan -nan -nan -nan -nan -nan -nan -nan 940 + Bin 1940: 940 -nan -nan -nan -nan -nan -nan -nan -nan -nan 941 + Bin 1941: 941 -nan -nan -nan -nan -nan -nan -nan -nan -nan 942 + Bin 1942: 942 -nan -nan -nan -nan -nan -nan -nan -nan -nan 943 + Bin 1943: 943 -nan -nan -nan -nan -nan -nan -nan -nan -nan 944 + Bin 1944: 944 -nan -nan -nan -nan -nan -nan -nan -nan -nan 945 + Bin 1945: 945 -nan -nan -nan -nan -nan -nan -nan -nan -nan 946 + Bin 1946: 946 -nan -nan -nan -nan -nan -nan -nan -nan -nan 947 + Bin 1947: 947 -nan -nan -nan -nan -nan -nan -nan -nan -nan 948 + Bin 1948: 948 -nan -nan -nan -nan -nan -nan -nan -nan -nan 949 + Bin 1949: 949 -nan -nan -nan -nan -nan -nan -nan -nan -nan 950 + Bin 1950: 950 -nan -nan -nan -nan -nan -nan -nan -nan -nan 951 + Bin 1951: 951 -nan -nan -nan -nan -nan -nan -nan -nan -nan 952 + Bin 1952: 952 -nan -nan -nan -nan -nan -nan -nan -nan -nan 953 + Bin 1953: 953 -nan -nan -nan -nan -nan -nan -nan -nan -nan 954 + Bin 1954: 954 -nan -nan -nan -nan -nan -nan -nan -nan -nan 955 + Bin 1955: 955 -nan -nan -nan -nan -nan -nan -nan -nan -nan 956 + Bin 1956: 956 -nan -nan -nan -nan -nan -nan -nan -nan -nan 957 + Bin 1957: 957 -nan -nan -nan -nan -nan -nan -nan -nan -nan 958 + Bin 1958: 958 -nan -nan -nan -nan -nan -nan -nan -nan -nan 959 + Bin 1959: 959 -nan -nan -nan -nan -nan -nan -nan -nan -nan 960 + Bin 1960: 960 -nan -nan -nan -nan -nan -nan -nan -nan -nan 961 + Bin 1961: 961 -nan -nan -nan -nan -nan -nan -nan -nan -nan 962 + Bin 1962: 962 -nan -nan -nan -nan -nan -nan -nan -nan -nan 963 + Bin 1963: 963 -nan -nan -nan -nan -nan -nan -nan -nan -nan 964 + Bin 1964: 964 -nan -nan -nan -nan -nan -nan -nan -nan -nan 965 + Bin 1965: 965 -nan -nan -nan -nan -nan -nan -nan -nan -nan 966 + Bin 1966: 966 -nan -nan -nan -nan -nan -nan -nan -nan -nan 967 + Bin 1967: 967 -nan -nan -nan -nan -nan -nan -nan -nan -nan 968 + Bin 1968: 968 -nan -nan -nan -nan -nan -nan -nan -nan -nan 969 + Bin 1969: 969 -nan -nan -nan -nan -nan -nan -nan -nan -nan 970 + Bin 1970: 970 -nan -nan -nan -nan -nan -nan -nan -nan -nan 971 + Bin 1971: 971 -nan -nan -nan -nan -nan -nan -nan -nan -nan 972 + Bin 1972: 972 -nan -nan -nan -nan -nan -nan -nan -nan -nan 973 + Bin 1973: 973 -nan -nan -nan -nan -nan -nan -nan -nan -nan 974 + Bin 1974: 974 -nan -nan -nan -nan -nan -nan -nan -nan -nan 975 + Bin 1975: 975 -nan -nan -nan -nan -nan -nan -nan -nan -nan 976 + Bin 1976: 976 -nan -nan -nan -nan -nan -nan -nan -nan -nan 977 + Bin 1977: 977 -nan -nan -nan -nan -nan -nan -nan -nan -nan 978 + Bin 1978: 978 -nan -nan -nan -nan -nan -nan -nan -nan -nan 979 + Bin 1979: 979 -nan -nan -nan -nan -nan -nan -nan -nan -nan 980 + Bin 1980: 980 -nan -nan -nan -nan -nan -nan -nan -nan -nan 981 + Bin 1981: 981 -nan -nan -nan -nan -nan -nan -nan -nan -nan 982 + Bin 1982: 982 -nan -nan -nan -nan -nan -nan -nan -nan -nan 983 + Bin 1983: 983 -nan -nan -nan -nan -nan -nan -nan -nan -nan 984 + Bin 1984: 984 -nan -nan -nan -nan -nan -nan -nan -nan -nan 985 + Bin 1985: 985 -nan -nan -nan -nan -nan -nan -nan -nan -nan 986 + Bin 1986: 986 -nan -nan -nan -nan -nan -nan -nan -nan -nan 987 + Bin 1987: 987 -nan -nan -nan -nan -nan -nan -nan -nan -nan 988 + Bin 1988: 988 -nan -nan -nan -nan -nan -nan -nan -nan -nan 989 + Bin 1989: 989 -nan -nan -nan -nan -nan -nan -nan -nan -nan 990 + Bin 1990: 990 -nan -nan -nan -nan -nan -nan -nan -nan -nan 991 + Bin 1991: 991 -nan -nan -nan -nan -nan -nan -nan -nan -nan 992 + Bin 1992: 992 -nan -nan -nan -nan -nan -nan -nan -nan -nan 993 + Bin 1993: 993 -nan -nan -nan -nan -nan -nan -nan -nan -nan 994 + Bin 1994: 994 -nan -nan -nan -nan -nan -nan -nan -nan -nan 995 + Bin 1995: 995 -nan -nan -nan -nan -nan -nan -nan -nan -nan 996 + Bin 1996: 996 -nan -nan -nan -nan -nan -nan -nan -nan -nan 997 + Bin 1997: 997 -nan -nan -nan -nan -nan -nan -nan -nan -nan 998 + Bin 1998: 998 -nan -nan -nan -nan -nan -nan -nan -nan -nan 999 + Bin 1999: 999 -nan -nan -nan -nan -nan -nan -nan -nan -nan 1000 + +Det 6: + Bin 0: -90 -nan -nan -nan -nan -nan -nan -nan -nan -nan -89 + Bin 1: -89 -nan -nan -nan -nan -nan -nan -nan -nan -nan -88 + Bin 2: -88 -nan -nan -nan -nan -nan -nan -nan -nan -nan -87 + Bin 3: -87 -nan -nan -nan -nan -nan -nan -nan -nan -nan -86 + Bin 4: -86 -nan -nan -nan -nan -nan -nan -nan -nan -nan -85 + Bin 5: -85 -nan -nan -nan -nan -nan -nan -nan -nan -nan -84 + Bin 6: -84 -nan -nan -nan -nan -nan -nan -nan -nan -nan -83 + Bin 7: -83 -nan -nan -nan -nan -nan -nan -nan -nan -nan -82 + Bin 8: -82 -nan -nan -nan -nan -nan -nan -nan -nan -nan -81 + Bin 9: -81 -nan -nan -nan -nan -nan -nan -nan -nan -nan -80 + Bin 10: -80 -nan -nan -nan -nan -nan -nan -nan -nan -nan -79 + Bin 11: -79 -nan -nan -nan -nan -nan -nan -nan -nan -nan -78 + Bin 12: -78 -nan -nan -nan -nan -nan -nan -nan -nan -nan -77 + Bin 13: -77 -77 -77 -77 -77 -77 -77 -77 -76.7745 -76.3405 -76 + Bin 14: -76 -76 -76 -75.8648 -75.8648 -75.8648 -75.7416 -75.5025 -75.3863 -75.2733 -75 + Bin 15: -75 -75 -73.656 -73.656 -73.656 -73.0314 -72.4212 -70.6318 -70.3597 -70.3597 -74 + Bin 16: -74 -nan -nan -nan -nan -nan -nan -nan -nan -nan -73 + Bin 17: -73 -73 -73 -72.942 -72.942 -72.8906 -72.8906 -72.8906 -72.8466 -72.5953 -72 + Bin 18: -72 -71.9779 -71.9355 -71.8837 -71.8392 -71.8203 -71.8054 -71.7846 -71.7149 -71.4765 -71 + Bin 19: -71 -70.9318 -70.877 -70.8396 -70.7995 -70.7661 -70.7068 -70.6244 -70.514 -70.332 -70 + Bin 20: -70 -69.7862 -69.6689 -69.5989 -69.5534 -69.5157 -69.4737 -69.4184 -69.3438 -69.2242 -69 + Bin 21: -69 -68.7633 -68.6295 -68.5557 -68.5016 -68.4599 -68.4187 -68.3685 -68.2973 -68.1867 -68 + Bin 22: -68 -67.771 -67.6524 -67.5792 -67.5292 -67.488 -67.4515 -67.4058 -67.3354 -67.2197 -67 + Bin 23: -67 -66.751 -66.6196 -66.5454 -66.4962 -66.4565 -66.421 -66.3787 -66.3111 -66.2044 -66 + Bin 24: -66 -65.7492 -65.6172 -65.5439 -65.4879 -65.4439 -65.4104 -65.3626 -65.2976 -65.1874 -65 + Bin 25: -65 -64.7655 -64.6128 -64.5298 -64.4706 -64.427 -64.3847 -64.336 -64.2646 -64.1634 -64 + Bin 26: -64 -63.7932 -63.6586 -63.5736 -63.5137 -63.4646 -63.4171 -63.3622 -63.2864 -63.1772 -63 + Bin 27: -63 -62.7985 -62.6633 -62.5773 -62.512 -62.4594 -62.4151 -62.3587 -62.2836 -62.1689 -62 + Bin 28: -62 -61.8056 -61.6855 -61.6045 -61.5499 -61.5042 -61.4562 -61.3983 -61.3173 -61.1908 -61 + Bin 29: -61 -60.7846 -60.6572 -60.5785 -60.5207 -60.4735 -60.4307 -60.3779 -60.3045 -60.1856 -60 + Bin 30: -60 -59.796 -59.6609 -59.5769 -59.5161 -59.4708 -59.4201 -59.365 -59.2872 -59.176 -59 + Bin 31: -59 -58.7867 -58.6587 -58.5747 -58.518 -58.4702 -58.4232 -58.3692 -58.2963 -58.1792 -58 + Bin 32: -58 -57.7974 -57.6666 -57.5798 -57.5132 -57.4612 -57.4207 -57.3708 -57.2967 -57.1861 -57 + Bin 33: -57 -56.788 -56.6486 -56.5623 -56.5022 -56.4509 -56.404 -56.3478 -56.2741 -56.1686 -56 + Bin 34: -56 -55.8206 -55.7022 -55.6188 -55.5611 -55.5121 -55.4613 -55.4011 -55.3217 -55.1985 -55 + Bin 35: -55 -54.7747 -54.6499 -54.5697 -54.5121 -54.4637 -54.4189 -54.3636 -54.291 -54.1821 -54 + Bin 36: -54 -53.7947 -53.6591 -53.5695 -53.503 -53.4514 -53.4042 -53.3503 -53.2757 -53.1719 -53 + Bin 37: -53 -52.787 -52.6561 -52.5724 -52.511 -52.4596 -52.4108 -52.3554 -52.283 -52.1785 -52 + Bin 38: -52 -51.8158 -51.6896 -51.6099 -51.5526 -51.5061 -51.4532 -51.3891 -51.3091 -51.1875 -51 + Bin 39: -51 -50.7908 -50.6767 -50.5974 -50.5357 -50.4864 -50.4433 -50.3865 -50.312 -50.1943 -50 + Bin 40: -50 -49.759 -49.6146 -49.52 -49.4525 -49.396 -49.3582 -49.3135 -49.2539 -49.1616 -49 + Bin 41: -49 -48.7734 -48.6069 -48.4997 -48.4206 -48.3561 -48.309 -48.2577 -48.1966 -48.118 -48 + Bin 42: -48 -47.8392 -47.7073 -47.6155 -47.5444 -47.4807 -47.4077 -47.3312 -47.247 -47.1448 -47 + Bin 43: -47 -46.822 -46.6951 -46.5989 -46.5135 -46.4335 -46.3733 -46.3081 -46.2356 -46.1427 -46 + Bin 44: -46 -45.8296 -45.7147 -45.6277 -45.5576 -45.4945 -45.4231 -45.3488 -45.2623 -45.1523 -45 + Bin 45: -45 -44.8261 -44.7123 -44.6252 -44.549 -44.4773 -44.4157 -44.3463 -44.2647 -44.1578 -44 + Bin 46: -44 -43.842 -43.736 -43.6581 -43.5911 -43.5296 -43.4556 -43.3769 -43.2862 -43.1646 -43 + Bin 47: -43 -42.7889 -42.6524 -42.5515 -42.4696 -42.3879 -42.3418 -42.2899 -42.2255 -42.1363 -42 + Bin 48: -42 -41.8323 -41.7093 -41.6221 -41.555 -41.4947 -41.4161 -41.3365 -41.2514 -41.1487 -41 + Bin 49: -41 -40.8296 -40.7114 -40.6256 -40.5539 -40.4877 -40.4222 -40.351 -40.2688 -40.1603 -40 + Bin 50: -40 -39.8206 -39.7115 -39.6317 -39.5632 -39.4998 -39.4299 -39.3606 -39.2777 -39.1643 -39 + Bin 51: -39 -38.7886 -38.6462 -38.5302 -38.424 -38.3209 -38.2859 -38.2468 -38.1959 -38.1209 -38 + Bin 52: -38 -37.8381 -37.7357 -37.667 -37.6155 -37.5717 -37.4749 -37.3755 -37.2749 -37.16 -37 + Bin 53: -37 -36.8277 -36.698 -36.6061 -36.5297 -36.4586 -36.3864 -36.3151 -36.2369 -36.1404 -36 + Bin 54: -36 -35.8303 -35.7233 -35.6464 -35.5828 -35.5228 -35.4516 -35.3774 -35.2938 -35.1801 -35 + Bin 55: -35 -34.8085 -34.6828 -34.5839 -34.4882 -34.3956 -34.3491 -34.297 -34.2293 -34.1354 -34 + Bin 56: -34 -33.8509 -33.7665 -33.7083 -33.66 -33.6143 -33.5283 -33.4391 -33.3364 -33.2048 -33 + Bin 57: -33 -32.8111 -32.6887 -32.6036 -32.5367 -32.4719 -32.4061 -32.3341 -32.2523 -32.1455 -32 + Bin 58: -32 -31.8214 -31.705 -31.6236 -31.5573 -31.5008 -31.4339 -31.3627 -31.2785 -31.1678 -31 + Bin 59: -31 -30.8111 -30.6779 -30.5807 -30.4999 -30.4261 -30.3683 -30.3064 -30.2306 -30.1348 -30 + Bin 60: -30 -29.8367 -29.7212 -29.64 -29.5722 -29.5149 -29.4448 -29.3675 -29.2759 -29.1639 -29 + Bin 61: -29 -28.8283 -28.7003 -28.6052 -28.5279 -28.4578 -28.3955 -28.3292 -28.2499 -28.1448 -28 + Bin 62: -28 -27.8296 -27.7109 -27.624 -27.5521 -27.4866 -27.423 -27.3514 -27.268 -27.1577 -27 + Bin 63: -27 -26.8341 -26.7166 -26.6282 -26.5538 -26.4874 -26.4234 -26.353 -26.2693 -26.1586 -26 + Bin 64: -26 -25.8218 -25.7023 -25.6146 -25.5416 -25.4775 -25.4182 -25.3513 -25.2715 -25.1647 -25 + Bin 65: -25 -24.8147 -24.6869 -24.5956 -24.5228 -24.4578 -24.3976 -24.3296 -24.2518 -24.1497 -24 + Bin 66: -24 -23.8208 -23.689 -23.5943 -23.5196 -23.4551 -23.39 -23.3224 -23.2447 -23.1459 -23 + Bin 67: -23 -22.8324 -22.7061 -22.616 -22.5435 -22.4777 -22.4131 -22.3444 -22.2618 -22.1565 -22 + Bin 68: -22 -21.8151 -21.6908 -21.6004 -21.5296 -21.4657 -21.4059 -21.3397 -21.2607 -21.1568 -21 + Bin 69: -21 -20.8255 -20.7003 -20.6047 -20.5255 -20.4577 -20.3962 -20.3329 -20.2561 -20.1541 -20 + Bin 70: -20 -19.8154 -19.6929 -19.6004 -19.5206 -19.4454 -19.3897 -19.3265 -19.2494 -19.1476 -19 + Bin 71: -19 -18.8283 -18.703 -18.6151 -18.5463 -18.4876 -18.421 -18.3469 -18.2637 -18.157 -18 + Bin 72: -18 -17.8257 -17.7051 -17.6226 -17.556 -17.4958 -17.4249 -17.3507 -17.2661 -17.1545 -17 + Bin 73: -17 -16.8185 -16.702 -16.6152 -16.5418 -16.4712 -16.4118 -16.3435 -16.2627 -16.1552 -16 + Bin 74: -16 -15.8101 -15.6816 -15.5863 -15.5105 -15.4463 -15.3921 -15.3306 -15.2567 -15.1554 -15 + Bin 75: -15 -14.8217 -14.6921 -14.6003 -14.5275 -14.4625 -14.3968 -14.3243 -14.2422 -14.1395 -14 + Bin 76: -14 -13.8491 -13.7261 -13.6334 -13.5608 -13.4945 -13.4285 -13.357 -13.2723 -13.1596 -13 + Bin 77: -13 -12.8107 -12.6839 -12.594 -12.5223 -12.462 -12.4039 -12.3392 -12.2612 -12.1552 -12 + Bin 78: -12 -11.8236 -11.6941 -11.601 -11.5298 -11.4679 -11.4082 -11.3434 -11.2627 -11.1574 -11 + Bin 79: -11 -10.8167 -10.6827 -10.5833 -10.5035 -10.4352 -10.3839 -10.324 -10.2503 -10.1527 -10 + Bin 80: -10 -9.82787 -9.70166 -9.61295 -9.54148 -9.48127 -9.4154 -9.34569 -9.26218 -9.15309 -9 + Bin 81: -9 -8.81679 -8.6847 -8.58688 -8.50826 -8.43976 -8.38773 -8.3303 -8.25572 -8.15328 -8 + Bin 82: -8 -7.81221 -7.68311 -7.59504 -7.52438 -7.46362 -7.39762 -7.32947 -7.24909 -7.14518 -7 + Bin 83: -7 -6.8456 -6.72632 -6.63452 -6.55542 -6.48404 -6.4164 -6.34421 -6.2593 -6.14887 -6 + Bin 84: -6 -5.8076 -5.68391 -5.59568 -5.52409 -5.46226 -5.40735 -5.34475 -5.26699 -5.1619 -5 + Bin 85: -5 -4.83262 -4.7027 -4.6113 -4.53783 -4.47511 -4.41448 -4.34667 -4.26678 -4.15882 -4 + Bin 86: -4 -3.81665 -3.69184 -3.60077 -3.52485 -3.45532 -3.39824 -3.33425 -3.25522 -3.14916 -3 + Bin 87: -3 -2.83518 -2.72989 -2.65662 -2.59817 -2.54708 -2.48508 -2.41332 -2.32117 -2.1947 -2 + Bin 88: -2 -1.79862 -1.67502 -1.59005 -1.52344 -1.4671 -1.4111 -1.34796 -1.26992 -1.16408 -1 + Bin 89: -1 -0.828197 -0.705527 -0.618422 -0.548564 -0.483004 -0.417671 -0.345646 -0.258176 -0.145792 0 + Bin 90: 0 0.165469 0.272404 0.349438 0.411748 0.464756 0.536984 0.61522 0.709845 0.832544 1 + Bin 91: 1 1.18692 1.31542 1.40735 1.47936 1.53963 1.60111 1.66832 1.74884 1.85079 2 + Bin 92: 2 2.15432 2.28099 2.37692 2.45492 2.52461 2.59158 2.66356 2.74828 2.85717 3 + Bin 93: 3 3.16031 3.27575 3.36109 3.43194 3.49475 3.56004 3.63361 3.72237 3.83957 4 + Bin 94: 4 4.16141 4.28109 4.37083 4.44479 4.50921 4.5749 4.64749 4.73374 4.84844 5 + Bin 95: 5 5.18505 5.31204 5.4084 5.49061 5.563 5.62025 5.68341 5.76002 5.85952 6 + Bin 96: 6 6.15093 6.26593 6.35117 6.41994 6.47819 6.55026 6.62761 6.71727 6.83246 7 + Bin 97: 7 7.13391 7.23285 7.30172 7.35569 7.40013 7.49765 7.59852 7.71501 7.85227 8 + Bin 98: 8 8.37276 8.59876 8.73864 8.82777 8.88357 8.89583 8.91039 8.92897 8.95664 9 + Bin 99: 9 9.03656 9.10789 9.22611 9.36822 9.49956 9.61678 9.75022 9.86966 9.95231 10 + Bin 100: 10 10.0834 10.1313 10.1603 10.1803 10.1967 10.2556 10.3433 10.4778 10.6802 11 + Bin 101: 11 11.1427 11.3067 11.4422 11.5525 11.6541 11.6965 11.7449 11.8061 11.8881 12 + Bin 102: 12 12.167 12.2729 12.35 12.4145 12.4732 12.5364 12.6057 12.6966 12.8178 13 + Bin 103: 13 13.1789 13.3006 13.388 13.4589 13.5213 13.5786 13.6432 13.7234 13.8354 14 + Bin 104: 14 14.1725 14.2875 14.3671 14.4304 14.4862 14.5471 14.6166 14.7022 14.8217 15 + Bin 105: 15 15.1752 15.29 15.3705 15.4335 15.4901 15.5541 15.6273 15.7174 15.8364 16 + Bin 106: 16 16.1756 16.299 16.391 16.4664 16.5335 16.5915 16.6586 16.7417 16.8522 17 + Bin 107: 17 17.1611 17.2783 17.3648 17.435 17.4946 17.5626 17.6381 17.7268 17.8412 18 + Bin 108: 18 18.173 18.3011 18.3967 18.4743 18.5433 18.6027 18.6694 18.7503 18.8535 19 + Bin 109: 19 19.1653 19.2942 19.392 19.4699 19.5397 19.6019 19.6688 19.7506 19.8551 20 + Bin 110: 20 20.1568 20.2756 20.3634 20.436 20.4979 20.565 20.6411 20.7292 20.8407 21 + Bin 111: 21 21.1224 21.2158 21.2881 21.3493 21.4058 21.5174 21.6309 21.7539 21.8838 22 + Bin 112: 22 22.244 22.4138 22.5457 22.6493 22.7273 22.76 22.7994 22.8487 22.9097 23 + Bin 113: 23 23.0525 23.1249 23.2197 23.3371 23.4737 23.6116 23.7364 23.8469 23.935 24 + Bin 114: 24 24.0804 24.1438 24.1923 24.2335 24.2692 24.356 24.4667 24.6059 24.7802 25 + Bin 115: 25 25.1285 25.2646 25.3906 25.5098 25.626 25.6736 25.7261 25.7895 25.8752 26 + Bin 116: 26 26.1776 26.2979 26.3875 26.4599 26.524 26.5864 26.6539 26.7353 26.845 27 + Bin 117: 27 27.173 27.2838 27.3686 27.4401 27.508 27.5728 27.647 27.7366 27.8477 28 + Bin 118: 28 28.1533 28.2674 28.3553 28.4276 28.4932 28.5554 28.6254 28.7092 28.825 29 + Bin 119: 29 29.1735 29.2891 29.374 29.4454 29.5042 29.5644 29.6325 29.7157 29.831 30 + Bin 120: 30 30.1746 30.2815 30.3588 30.4189 30.4721 30.5383 30.6139 30.7061 30.8286 31 + Bin 121: 31 31.1629 31.2729 31.3548 31.4183 31.4734 31.535 31.6072 31.6975 31.8239 32 + Bin 122: 32 32.1836 32.2997 32.3784 32.4383 32.4868 32.5462 32.6131 32.6991 32.8173 33 + Bin 123: 33 33.1707 33.2943 33.3831 33.4507 33.5072 33.5631 33.63 33.7154 33.8329 34 + Bin 124: 34 34.1937 34.3198 34.4067 34.4768 34.5353 34.5847 34.6449 34.7207 34.8287 35 + Bin 125: 35 35.1801 35.3124 35.4073 35.4812 35.5454 35.5988 35.6602 35.7392 35.8477 36 + Bin 126: 36 36.1651 36.2744 36.3501 36.4092 36.4588 36.5224 36.5947 36.6872 36.816 37 + Bin 127: 37 37.1828 37.3057 37.3893 37.4535 37.51 37.5632 37.6265 37.707 37.8223 38 + Bin 128: 38 38.1948 38.3287 38.4197 38.4899 38.5481 38.599 38.6589 38.7325 38.8388 39 + Bin 129: 39 39.1728 39.292 39.3758 39.4409 39.4981 39.5542 39.6209 39.7063 39.8273 40 + Bin 130: 40 40.1913 40.3117 40.3946 40.4587 40.5115 40.5643 40.6253 40.7059 40.8205 41 + Bin 131: 41 41.18 41.3048 41.3896 41.4544 41.5084 41.5661 41.6318 41.7162 41.8337 42 + Bin 132: 42 42.1764 42.2914 42.3718 42.4335 42.4889 42.5449 42.6106 42.6949 42.8187 43 + Bin 133: 43 43.1921 43.3184 43.4075 43.4759 43.5343 43.5837 43.6428 43.721 43.8321 44 + Bin 134: 44 44.1861 44.3083 44.3918 44.453 44.504 44.5561 44.6177 44.6968 44.8139 45 + Bin 135: 45 45.2041 45.3331 45.4188 45.4804 45.531 45.5817 45.6409 45.7164 45.8254 46 + Bin 136: 46 46.1976 46.3332 46.4229 46.4886 46.5447 46.5985 46.6615 46.7403 46.8469 47 + Bin 137: 47 47.1498 47.2631 47.3475 47.4173 47.4768 47.535 47.6104 47.7052 47.8375 48 + Bin 138: 48 48.1623 48.2588 48.3292 48.3811 48.424 48.487 48.5637 48.6601 48.8048 49 + Bin 139: 49 49.1841 49.3027 49.3855 49.4474 49.4985 49.5543 49.6188 49.7032 49.8229 50 + Bin 140: 50 50.1741 50.2999 50.3866 50.4513 50.5045 50.5597 50.6247 50.7072 50.8297 51 + Bin 141: 51 51.1856 51.3084 51.3925 51.4555 51.5086 51.5605 51.6238 51.707 51.8235 52 + Bin 142: 52 52.1822 52.3087 52.3977 52.465 52.5209 52.5721 52.6344 52.7143 52.8293 53 + Bin 143: 53 53.206 53.3421 53.4354 53.5087 53.5672 53.6151 53.6717 53.7456 53.8465 54 + Bin 144: 54 54.1721 54.3075 54.4051 54.4776 54.5373 54.5902 54.6539 54.7327 54.8405 55 + Bin 145: 55 55.165 55.2917 55.3817 55.4493 55.5043 55.56 55.6293 55.7168 55.8356 56 + Bin 146: 56 56.1602 56.2708 56.3483 56.4109 56.4626 56.5193 56.5897 56.6833 56.8175 57 + Bin 147: 57 57.191 57.3041 57.3807 57.4415 57.4927 57.5395 57.6019 57.6802 57.8001 58 + Bin 148: 58 58.199 58.3345 58.4215 58.4856 58.5335 58.5855 58.6494 58.7292 58.8423 59 + Bin 149: 59 59.1657 59.2838 59.369 59.4333 59.4914 59.5443 59.6076 59.6935 59.8192 60 + Bin 150: 60 60.2032 60.3184 60.3934 60.4491 60.4917 60.5434 60.6032 60.6839 60.8006 61 + Bin 151: 61 61.1951 61.3349 61.4294 61.4983 61.5516 61.5993 61.6574 61.7322 61.839 62 + Bin 152: 62 62.1809 62.3177 62.4052 62.4718 62.5262 62.5717 62.6295 62.7028 62.8113 63 + Bin 153: 63 63.1666 63.276 63.3423 63.3946 63.4345 63.5198 63.6201 63.7337 63.864 64 + Bin 154: 64 64.28 64.4637 64.5916 64.6902 64.763 64.7883 64.8213 64.8605 64.9124 65 + Bin 155: 65 65.0338 65.0889 65.1891 65.3494 65.5469 65.7012 65.8298 65.9132 65.9645 66 + Bin 156: 66 66.0749 66.1327 66.1752 66.2134 66.242 66.3174 66.4156 66.5445 66.7361 67 + Bin 157: 67 67.1252 67.2702 67.4037 67.5195 67.6248 67.6708 67.723 67.789 67.8766 68 + Bin 158: 68 68.1731 68.2973 68.3906 68.464 68.5287 68.5793 68.6401 68.7169 68.8271 69 + Bin 159: 69 69.1618 69.2877 69.3778 69.4554 69.5153 69.5785 69.6483 69.734 69.855 70 + Bin 160: 70 70.1461 70.2557 70.3383 70.4126 70.4718 70.5301 70.601 70.6874 70.808 71 + Bin 161: 71 71.1623 71.2849 71.3711 71.4403 71.4954 71.5524 71.623 71.7128 71.8349 72 + Bin 162: 72 72.1541 72.273 72.3559 72.426 72.4862 72.5431 72.6053 72.6929 72.8238 73 + Bin 163: 73 73.2133 73.3629 73.4694 73.5531 73.6188 73.6692 73.7229 73.7813 73.8581 74 + Bin 164: 74 74.4075 74.6569 74.7577 74.8118 74.8432 74.8573 74.8705 74.884 74.9 75 + Bin 165: 75 75.1183 75.2899 75.4055 75.4914 75.5561 75.6475 75.7637 75.8237 75.8937 76 + Bin 166: 76 76.2225 76.3149 76.4432 76.5436 76.5785 76.6333 76.6908 76.7713 76.8987 77 + Bin 167: 77 77 77.775 77.775 77.775 77.775 77.775 77.775 77.775 77.775 78 + Bin 168: 78 78 78.4506 78.4506 78.4506 78.4506 78.4506 78.4506 78.4506 78.4506 79 + Bin 169: 79 -nan -nan -nan -nan -nan -nan -nan -nan -nan 80 + Bin 170: 80 -nan -nan -nan -nan -nan -nan -nan -nan -nan 81 + Bin 171: 81 -nan -nan -nan -nan -nan -nan -nan -nan -nan 82 + Bin 172: 82 -nan -nan -nan -nan -nan -nan -nan -nan -nan 83 + Bin 173: 83 -nan -nan -nan -nan -nan -nan -nan -nan -nan 84 + Bin 174: 84 -nan -nan -nan -nan -nan -nan -nan -nan -nan 85 + Bin 175: 85 -nan -nan -nan -nan -nan -nan -nan -nan -nan 86 + Bin 176: 86 -nan -nan -nan -nan -nan -nan -nan -nan -nan 87 + Bin 177: 87 -nan -nan -nan -nan -nan -nan -nan -nan -nan 88 + Bin 178: 88 -nan -nan -nan -nan -nan -nan -nan -nan -nan 89 + Bin 179: 89 -nan -nan -nan -nan -nan -nan -nan -nan -nan 90 + +Det 7: + Bin 0: -1000 -nan -nan -nan -nan -nan -nan -nan -nan -nan -999 + Bin 1: -999 -nan -nan -nan -nan -nan -nan -nan -nan -nan -998 + Bin 2: -998 -nan -nan -nan -nan -nan -nan -nan -nan -nan -997 + Bin 3: -997 -nan -nan -nan -nan -nan -nan -nan -nan -nan -996 + Bin 4: -996 -nan -nan -nan -nan -nan -nan -nan -nan -nan -995 + Bin 5: -995 -nan -nan -nan -nan -nan -nan -nan -nan -nan -994 + Bin 6: -994 -nan -nan -nan -nan -nan -nan -nan -nan -nan -993 + Bin 7: -993 -nan -nan -nan -nan -nan -nan -nan -nan -nan -992 + Bin 8: -992 -nan -nan -nan -nan -nan -nan -nan -nan -nan -991 + Bin 9: -991 -nan -nan -nan -nan -nan -nan -nan -nan -nan -990 + Bin 10: -990 -nan -nan -nan -nan -nan -nan -nan -nan -nan -989 + Bin 11: -989 -nan -nan -nan -nan -nan -nan -nan -nan -nan -988 + Bin 12: -988 -nan -nan -nan -nan -nan -nan -nan -nan -nan -987 + Bin 13: -987 -nan -nan -nan -nan -nan -nan -nan -nan -nan -986 + Bin 14: -986 -nan -nan -nan -nan -nan -nan -nan -nan -nan -985 + Bin 15: -985 -nan -nan -nan -nan -nan -nan -nan -nan -nan -984 + Bin 16: -984 -nan -nan -nan -nan -nan -nan -nan -nan -nan -983 + Bin 17: -983 -nan -nan -nan -nan -nan -nan -nan -nan -nan -982 + Bin 18: -982 -nan -nan -nan -nan -nan -nan -nan -nan -nan -981 + Bin 19: -981 -nan -nan -nan -nan -nan -nan -nan -nan -nan -980 + Bin 20: -980 -nan -nan -nan -nan -nan -nan -nan -nan -nan -979 + Bin 21: -979 -nan -nan -nan -nan -nan -nan -nan -nan -nan -978 + Bin 22: -978 -nan -nan -nan -nan -nan -nan -nan -nan -nan -977 + Bin 23: -977 -nan -nan -nan -nan -nan -nan -nan -nan -nan -976 + Bin 24: -976 -nan -nan -nan -nan -nan -nan -nan -nan -nan -975 + Bin 25: -975 -nan -nan -nan -nan -nan -nan -nan -nan -nan -974 + Bin 26: -974 -nan -nan -nan -nan -nan -nan -nan -nan -nan -973 + Bin 27: -973 -nan -nan -nan -nan -nan -nan -nan -nan -nan -972 + Bin 28: -972 -nan -nan -nan -nan -nan -nan -nan -nan -nan -971 + Bin 29: -971 -nan -nan -nan -nan -nan -nan -nan -nan -nan -970 + Bin 30: -970 -nan -nan -nan -nan -nan -nan -nan -nan -nan -969 + Bin 31: -969 -nan -nan -nan -nan -nan -nan -nan -nan -nan -968 + Bin 32: -968 -nan -nan -nan -nan -nan -nan -nan -nan -nan -967 + Bin 33: -967 -nan -nan -nan -nan -nan -nan -nan -nan -nan -966 + Bin 34: -966 -nan -nan -nan -nan -nan -nan -nan -nan -nan -965 + Bin 35: -965 -nan -nan -nan -nan -nan -nan -nan -nan -nan -964 + Bin 36: -964 -nan -nan -nan -nan -nan -nan -nan -nan -nan -963 + Bin 37: -963 -nan -nan -nan -nan -nan -nan -nan -nan -nan -962 + Bin 38: -962 -nan -nan -nan -nan -nan -nan -nan -nan -nan -961 + Bin 39: -961 -nan -nan -nan -nan -nan -nan -nan -nan -nan -960 + Bin 40: -960 -nan -nan -nan -nan -nan -nan -nan -nan -nan -959 + Bin 41: -959 -nan -nan -nan -nan -nan -nan -nan -nan -nan -958 + Bin 42: -958 -nan -nan -nan -nan -nan -nan -nan -nan -nan -957 + Bin 43: -957 -nan -nan -nan -nan -nan -nan -nan -nan -nan -956 + Bin 44: -956 -nan -nan -nan -nan -nan -nan -nan -nan -nan -955 + Bin 45: -955 -nan -nan -nan -nan -nan -nan -nan -nan -nan -954 + Bin 46: -954 -nan -nan -nan -nan -nan -nan -nan -nan -nan -953 + Bin 47: -953 -nan -nan -nan -nan -nan -nan -nan -nan -nan -952 + Bin 48: -952 -nan -nan -nan -nan -nan -nan -nan -nan -nan -951 + Bin 49: -951 -nan -nan -nan -nan -nan -nan -nan -nan -nan -950 + Bin 50: -950 -nan -nan -nan -nan -nan -nan -nan -nan -nan -949 + Bin 51: -949 -nan -nan -nan -nan -nan -nan -nan -nan -nan -948 + Bin 52: -948 -nan -nan -nan -nan -nan -nan -nan -nan -nan -947 + Bin 53: -947 -nan -nan -nan -nan -nan -nan -nan -nan -nan -946 + Bin 54: -946 -nan -nan -nan -nan -nan -nan -nan -nan -nan -945 + Bin 55: -945 -nan -nan -nan -nan -nan -nan -nan -nan -nan -944 + Bin 56: -944 -nan -nan -nan -nan -nan -nan -nan -nan -nan -943 + Bin 57: -943 -nan -nan -nan -nan -nan -nan -nan -nan -nan -942 + Bin 58: -942 -nan -nan -nan -nan -nan -nan -nan -nan -nan -941 + Bin 59: -941 -nan -nan -nan -nan -nan -nan -nan -nan -nan -940 + Bin 60: -940 -nan -nan -nan -nan -nan -nan -nan -nan -nan -939 + Bin 61: -939 -nan -nan -nan -nan -nan -nan -nan -nan -nan -938 + Bin 62: -938 -nan -nan -nan -nan -nan -nan -nan -nan -nan -937 + Bin 63: -937 -nan -nan -nan -nan -nan -nan -nan -nan -nan -936 + Bin 64: -936 -nan -nan -nan -nan -nan -nan -nan -nan -nan -935 + Bin 65: -935 -nan -nan -nan -nan -nan -nan -nan -nan -nan -934 + Bin 66: -934 -nan -nan -nan -nan -nan -nan -nan -nan -nan -933 + Bin 67: -933 -nan -nan -nan -nan -nan -nan -nan -nan -nan -932 + Bin 68: -932 -nan -nan -nan -nan -nan -nan -nan -nan -nan -931 + Bin 69: -931 -nan -nan -nan -nan -nan -nan -nan -nan -nan -930 + Bin 70: -930 -nan -nan -nan -nan -nan -nan -nan -nan -nan -929 + Bin 71: -929 -nan -nan -nan -nan -nan -nan -nan -nan -nan -928 + Bin 72: -928 -nan -nan -nan -nan -nan -nan -nan -nan -nan -927 + Bin 73: -927 -nan -nan -nan -nan -nan -nan -nan -nan -nan -926 + Bin 74: -926 -nan -nan -nan -nan -nan -nan -nan -nan -nan -925 + Bin 75: -925 -nan -nan -nan -nan -nan -nan -nan -nan -nan -924 + Bin 76: -924 -nan -nan -nan -nan -nan -nan -nan -nan -nan -923 + Bin 77: -923 -nan -nan -nan -nan -nan -nan -nan -nan -nan -922 + Bin 78: -922 -nan -nan -nan -nan -nan -nan -nan -nan -nan -921 + Bin 79: -921 -nan -nan -nan -nan -nan -nan -nan -nan -nan -920 + Bin 80: -920 -nan -nan -nan -nan -nan -nan -nan -nan -nan -919 + Bin 81: -919 -nan -nan -nan -nan -nan -nan -nan -nan -nan -918 + Bin 82: -918 -nan -nan -nan -nan -nan -nan -nan -nan -nan -917 + Bin 83: -917 -nan -nan -nan -nan -nan -nan -nan -nan -nan -916 + Bin 84: -916 -nan -nan -nan -nan -nan -nan -nan -nan -nan -915 + Bin 85: -915 -nan -nan -nan -nan -nan -nan -nan -nan -nan -914 + Bin 86: -914 -nan -nan -nan -nan -nan -nan -nan -nan -nan -913 + Bin 87: -913 -nan -nan -nan -nan -nan -nan -nan -nan -nan -912 + Bin 88: -912 -nan -nan -nan -nan -nan -nan -nan -nan -nan -911 + Bin 89: -911 -nan -nan -nan -nan -nan -nan -nan -nan -nan -910 + Bin 90: -910 -nan -nan -nan -nan -nan -nan -nan -nan -nan -909 + Bin 91: -909 -nan -nan -nan -nan -nan -nan -nan -nan -nan -908 + Bin 92: -908 -nan -nan -nan -nan -nan -nan -nan -nan -nan -907 + Bin 93: -907 -nan -nan -nan -nan -nan -nan -nan -nan -nan -906 + Bin 94: -906 -nan -nan -nan -nan -nan -nan -nan -nan -nan -905 + Bin 95: -905 -nan -nan -nan -nan -nan -nan -nan -nan -nan -904 + Bin 96: -904 -nan -nan -nan -nan -nan -nan -nan -nan -nan -903 + Bin 97: -903 -nan -nan -nan -nan -nan -nan -nan -nan -nan -902 + Bin 98: -902 -nan -nan -nan -nan -nan -nan -nan -nan -nan -901 + Bin 99: -901 -nan -nan -nan -nan -nan -nan -nan -nan -nan -900 + Bin 100: -900 -nan -nan -nan -nan -nan -nan -nan -nan -nan -899 + Bin 101: -899 -nan -nan -nan -nan -nan -nan -nan -nan -nan -898 + Bin 102: -898 -nan -nan -nan -nan -nan -nan -nan -nan -nan -897 + Bin 103: -897 -nan -nan -nan -nan -nan -nan -nan -nan -nan -896 + Bin 104: -896 -nan -nan -nan -nan -nan -nan -nan -nan -nan -895 + Bin 105: -895 -nan -nan -nan -nan -nan -nan -nan -nan -nan -894 + Bin 106: -894 -nan -nan -nan -nan -nan -nan -nan -nan -nan -893 + Bin 107: -893 -nan -nan -nan -nan -nan -nan -nan -nan -nan -892 + Bin 108: -892 -nan -nan -nan -nan -nan -nan -nan -nan -nan -891 + Bin 109: -891 -nan -nan -nan -nan -nan -nan -nan -nan -nan -890 + Bin 110: -890 -nan -nan -nan -nan -nan -nan -nan -nan -nan -889 + Bin 111: -889 -nan -nan -nan -nan -nan -nan -nan -nan -nan -888 + Bin 112: -888 -nan -nan -nan -nan -nan -nan -nan -nan -nan -887 + Bin 113: -887 -nan -nan -nan -nan -nan -nan -nan -nan -nan -886 + Bin 114: -886 -nan -nan -nan -nan -nan -nan -nan -nan -nan -885 + Bin 115: -885 -nan -nan -nan -nan -nan -nan -nan -nan -nan -884 + Bin 116: -884 -nan -nan -nan -nan -nan -nan -nan -nan -nan -883 + Bin 117: -883 -nan -nan -nan -nan -nan -nan -nan -nan -nan -882 + Bin 118: -882 -nan -nan -nan -nan -nan -nan -nan -nan -nan -881 + Bin 119: -881 -nan -nan -nan -nan -nan -nan -nan -nan -nan -880 + Bin 120: -880 -nan -nan -nan -nan -nan -nan -nan -nan -nan -879 + Bin 121: -879 -nan -nan -nan -nan -nan -nan -nan -nan -nan -878 + Bin 122: -878 -nan -nan -nan -nan -nan -nan -nan -nan -nan -877 + Bin 123: -877 -nan -nan -nan -nan -nan -nan -nan -nan -nan -876 + Bin 124: -876 -nan -nan -nan -nan -nan -nan -nan -nan -nan -875 + Bin 125: -875 -nan -nan -nan -nan -nan -nan -nan -nan -nan -874 + Bin 126: -874 -nan -nan -nan -nan -nan -nan -nan -nan -nan -873 + Bin 127: -873 -nan -nan -nan -nan -nan -nan -nan -nan -nan -872 + Bin 128: -872 -nan -nan -nan -nan -nan -nan -nan -nan -nan -871 + Bin 129: -871 -nan -nan -nan -nan -nan -nan -nan -nan -nan -870 + Bin 130: -870 -nan -nan -nan -nan -nan -nan -nan -nan -nan -869 + Bin 131: -869 -nan -nan -nan -nan -nan -nan -nan -nan -nan -868 + Bin 132: -868 -nan -nan -nan -nan -nan -nan -nan -nan -nan -867 + Bin 133: -867 -nan -nan -nan -nan -nan -nan -nan -nan -nan -866 + Bin 134: -866 -nan -nan -nan -nan -nan -nan -nan -nan -nan -865 + Bin 135: -865 -nan -nan -nan -nan -nan -nan -nan -nan -nan -864 + Bin 136: -864 -nan -nan -nan -nan -nan -nan -nan -nan -nan -863 + Bin 137: -863 -nan -nan -nan -nan -nan -nan -nan -nan -nan -862 + Bin 138: -862 -nan -nan -nan -nan -nan -nan -nan -nan -nan -861 + Bin 139: -861 -nan -nan -nan -nan -nan -nan -nan -nan -nan -860 + Bin 140: -860 -nan -nan -nan -nan -nan -nan -nan -nan -nan -859 + Bin 141: -859 -nan -nan -nan -nan -nan -nan -nan -nan -nan -858 + Bin 142: -858 -nan -nan -nan -nan -nan -nan -nan -nan -nan -857 + Bin 143: -857 -nan -nan -nan -nan -nan -nan -nan -nan -nan -856 + Bin 144: -856 -nan -nan -nan -nan -nan -nan -nan -nan -nan -855 + Bin 145: -855 -nan -nan -nan -nan -nan -nan -nan -nan -nan -854 + Bin 146: -854 -nan -nan -nan -nan -nan -nan -nan -nan -nan -853 + Bin 147: -853 -nan -nan -nan -nan -nan -nan -nan -nan -nan -852 + Bin 148: -852 -nan -nan -nan -nan -nan -nan -nan -nan -nan -851 + Bin 149: -851 -nan -nan -nan -nan -nan -nan -nan -nan -nan -850 + Bin 150: -850 -nan -nan -nan -nan -nan -nan -nan -nan -nan -849 + Bin 151: -849 -nan -nan -nan -nan -nan -nan -nan -nan -nan -848 + Bin 152: -848 -nan -nan -nan -nan -nan -nan -nan -nan -nan -847 + Bin 153: -847 -nan -nan -nan -nan -nan -nan -nan -nan -nan -846 + Bin 154: -846 -nan -nan -nan -nan -nan -nan -nan -nan -nan -845 + Bin 155: -845 -nan -nan -nan -nan -nan -nan -nan -nan -nan -844 + Bin 156: -844 -nan -nan -nan -nan -nan -nan -nan -nan -nan -843 + Bin 157: -843 -nan -nan -nan -nan -nan -nan -nan -nan -nan -842 + Bin 158: -842 -nan -nan -nan -nan -nan -nan -nan -nan -nan -841 + Bin 159: -841 -nan -nan -nan -nan -nan -nan -nan -nan -nan -840 + Bin 160: -840 -nan -nan -nan -nan -nan -nan -nan -nan -nan -839 + Bin 161: -839 -nan -nan -nan -nan -nan -nan -nan -nan -nan -838 + Bin 162: -838 -nan -nan -nan -nan -nan -nan -nan -nan -nan -837 + Bin 163: -837 -nan -nan -nan -nan -nan -nan -nan -nan -nan -836 + Bin 164: -836 -nan -nan -nan -nan -nan -nan -nan -nan -nan -835 + Bin 165: -835 -nan -nan -nan -nan -nan -nan -nan -nan -nan -834 + Bin 166: -834 -nan -nan -nan -nan -nan -nan -nan -nan -nan -833 + Bin 167: -833 -nan -nan -nan -nan -nan -nan -nan -nan -nan -832 + Bin 168: -832 -nan -nan -nan -nan -nan -nan -nan -nan -nan -831 + Bin 169: -831 -nan -nan -nan -nan -nan -nan -nan -nan -nan -830 + Bin 170: -830 -nan -nan -nan -nan -nan -nan -nan -nan -nan -829 + Bin 171: -829 -nan -nan -nan -nan -nan -nan -nan -nan -nan -828 + Bin 172: -828 -nan -nan -nan -nan -nan -nan -nan -nan -nan -827 + Bin 173: -827 -nan -nan -nan -nan -nan -nan -nan -nan -nan -826 + Bin 174: -826 -nan -nan -nan -nan -nan -nan -nan -nan -nan -825 + Bin 175: -825 -nan -nan -nan -nan -nan -nan -nan -nan -nan -824 + Bin 176: -824 -nan -nan -nan -nan -nan -nan -nan -nan -nan -823 + Bin 177: -823 -nan -nan -nan -nan -nan -nan -nan -nan -nan -822 + Bin 178: -822 -nan -nan -nan -nan -nan -nan -nan -nan -nan -821 + Bin 179: -821 -nan -nan -nan -nan -nan -nan -nan -nan -nan -820 + Bin 180: -820 -nan -nan -nan -nan -nan -nan -nan -nan -nan -819 + Bin 181: -819 -nan -nan -nan -nan -nan -nan -nan -nan -nan -818 + Bin 182: -818 -nan -nan -nan -nan -nan -nan -nan -nan -nan -817 + Bin 183: -817 -nan -nan -nan -nan -nan -nan -nan -nan -nan -816 + Bin 184: -816 -nan -nan -nan -nan -nan -nan -nan -nan -nan -815 + Bin 185: -815 -nan -nan -nan -nan -nan -nan -nan -nan -nan -814 + Bin 186: -814 -nan -nan -nan -nan -nan -nan -nan -nan -nan -813 + Bin 187: -813 -nan -nan -nan -nan -nan -nan -nan -nan -nan -812 + Bin 188: -812 -nan -nan -nan -nan -nan -nan -nan -nan -nan -811 + Bin 189: -811 -nan -nan -nan -nan -nan -nan -nan -nan -nan -810 + Bin 190: -810 -nan -nan -nan -nan -nan -nan -nan -nan -nan -809 + Bin 191: -809 -nan -nan -nan -nan -nan -nan -nan -nan -nan -808 + Bin 192: -808 -nan -nan -nan -nan -nan -nan -nan -nan -nan -807 + Bin 193: -807 -nan -nan -nan -nan -nan -nan -nan -nan -nan -806 + Bin 194: -806 -nan -nan -nan -nan -nan -nan -nan -nan -nan -805 + Bin 195: -805 -nan -nan -nan -nan -nan -nan -nan -nan -nan -804 + Bin 196: -804 -nan -nan -nan -nan -nan -nan -nan -nan -nan -803 + Bin 197: -803 -nan -nan -nan -nan -nan -nan -nan -nan -nan -802 + Bin 198: -802 -nan -nan -nan -nan -nan -nan -nan -nan -nan -801 + Bin 199: -801 -nan -nan -nan -nan -nan -nan -nan -nan -nan -800 + Bin 200: -800 -nan -nan -nan -nan -nan -nan -nan -nan -nan -799 + Bin 201: -799 -nan -nan -nan -nan -nan -nan -nan -nan -nan -798 + Bin 202: -798 -nan -nan -nan -nan -nan -nan -nan -nan -nan -797 + Bin 203: -797 -nan -nan -nan -nan -nan -nan -nan -nan -nan -796 + Bin 204: -796 -nan -nan -nan -nan -nan -nan -nan -nan -nan -795 + Bin 205: -795 -nan -nan -nan -nan -nan -nan -nan -nan -nan -794 + Bin 206: -794 -nan -nan -nan -nan -nan -nan -nan -nan -nan -793 + Bin 207: -793 -nan -nan -nan -nan -nan -nan -nan -nan -nan -792 + Bin 208: -792 -nan -nan -nan -nan -nan -nan -nan -nan -nan -791 + Bin 209: -791 -nan -nan -nan -nan -nan -nan -nan -nan -nan -790 + Bin 210: -790 -nan -nan -nan -nan -nan -nan -nan -nan -nan -789 + Bin 211: -789 -nan -nan -nan -nan -nan -nan -nan -nan -nan -788 + Bin 212: -788 -nan -nan -nan -nan -nan -nan -nan -nan -nan -787 + Bin 213: -787 -nan -nan -nan -nan -nan -nan -nan -nan -nan -786 + Bin 214: -786 -nan -nan -nan -nan -nan -nan -nan -nan -nan -785 + Bin 215: -785 -nan -nan -nan -nan -nan -nan -nan -nan -nan -784 + Bin 216: -784 -nan -nan -nan -nan -nan -nan -nan -nan -nan -783 + Bin 217: -783 -nan -nan -nan -nan -nan -nan -nan -nan -nan -782 + Bin 218: -782 -nan -nan -nan -nan -nan -nan -nan -nan -nan -781 + Bin 219: -781 -nan -nan -nan -nan -nan -nan -nan -nan -nan -780 + Bin 220: -780 -nan -nan -nan -nan -nan -nan -nan -nan -nan -779 + Bin 221: -779 -nan -nan -nan -nan -nan -nan -nan -nan -nan -778 + Bin 222: -778 -nan -nan -nan -nan -nan -nan -nan -nan -nan -777 + Bin 223: -777 -nan -nan -nan -nan -nan -nan -nan -nan -nan -776 + Bin 224: -776 -nan -nan -nan -nan -nan -nan -nan -nan -nan -775 + Bin 225: -775 -nan -nan -nan -nan -nan -nan -nan -nan -nan -774 + Bin 226: -774 -nan -nan -nan -nan -nan -nan -nan -nan -nan -773 + Bin 227: -773 -nan -nan -nan -nan -nan -nan -nan -nan -nan -772 + Bin 228: -772 -nan -nan -nan -nan -nan -nan -nan -nan -nan -771 + Bin 229: -771 -nan -nan -nan -nan -nan -nan -nan -nan -nan -770 + Bin 230: -770 -nan -nan -nan -nan -nan -nan -nan -nan -nan -769 + Bin 231: -769 -nan -nan -nan -nan -nan -nan -nan -nan -nan -768 + Bin 232: -768 -nan -nan -nan -nan -nan -nan -nan -nan -nan -767 + Bin 233: -767 -nan -nan -nan -nan -nan -nan -nan -nan -nan -766 + Bin 234: -766 -nan -nan -nan -nan -nan -nan -nan -nan -nan -765 + Bin 235: -765 -nan -nan -nan -nan -nan -nan -nan -nan -nan -764 + Bin 236: -764 -nan -nan -nan -nan -nan -nan -nan -nan -nan -763 + Bin 237: -763 -nan -nan -nan -nan -nan -nan -nan -nan -nan -762 + Bin 238: -762 -nan -nan -nan -nan -nan -nan -nan -nan -nan -761 + Bin 239: -761 -nan -nan -nan -nan -nan -nan -nan -nan -nan -760 + Bin 240: -760 -nan -nan -nan -nan -nan -nan -nan -nan -nan -759 + Bin 241: -759 -nan -nan -nan -nan -nan -nan -nan -nan -nan -758 + Bin 242: -758 -nan -nan -nan -nan -nan -nan -nan -nan -nan -757 + Bin 243: -757 -nan -nan -nan -nan -nan -nan -nan -nan -nan -756 + Bin 244: -756 -nan -nan -nan -nan -nan -nan -nan -nan -nan -755 + Bin 245: -755 -nan -nan -nan -nan -nan -nan -nan -nan -nan -754 + Bin 246: -754 -nan -nan -nan -nan -nan -nan -nan -nan -nan -753 + Bin 247: -753 -nan -nan -nan -nan -nan -nan -nan -nan -nan -752 + Bin 248: -752 -nan -nan -nan -nan -nan -nan -nan -nan -nan -751 + Bin 249: -751 -nan -nan -nan -nan -nan -nan -nan -nan -nan -750 + Bin 250: -750 -nan -nan -nan -nan -nan -nan -nan -nan -nan -749 + Bin 251: -749 -nan -nan -nan -nan -nan -nan -nan -nan -nan -748 + Bin 252: -748 -nan -nan -nan -nan -nan -nan -nan -nan -nan -747 + Bin 253: -747 -nan -nan -nan -nan -nan -nan -nan -nan -nan -746 + Bin 254: -746 -nan -nan -nan -nan -nan -nan -nan -nan -nan -745 + Bin 255: -745 -nan -nan -nan -nan -nan -nan -nan -nan -nan -744 + Bin 256: -744 -nan -nan -nan -nan -nan -nan -nan -nan -nan -743 + Bin 257: -743 -nan -nan -nan -nan -nan -nan -nan -nan -nan -742 + Bin 258: -742 -nan -nan -nan -nan -nan -nan -nan -nan -nan -741 + Bin 259: -741 -nan -nan -nan -nan -nan -nan -nan -nan -nan -740 + Bin 260: -740 -nan -nan -nan -nan -nan -nan -nan -nan -nan -739 + Bin 261: -739 -nan -nan -nan -nan -nan -nan -nan -nan -nan -738 + Bin 262: -738 -nan -nan -nan -nan -nan -nan -nan -nan -nan -737 + Bin 263: -737 -nan -nan -nan -nan -nan -nan -nan -nan -nan -736 + Bin 264: -736 -nan -nan -nan -nan -nan -nan -nan -nan -nan -735 + Bin 265: -735 -nan -nan -nan -nan -nan -nan -nan -nan -nan -734 + Bin 266: -734 -nan -nan -nan -nan -nan -nan -nan -nan -nan -733 + Bin 267: -733 -nan -nan -nan -nan -nan -nan -nan -nan -nan -732 + Bin 268: -732 -nan -nan -nan -nan -nan -nan -nan -nan -nan -731 + Bin 269: -731 -nan -nan -nan -nan -nan -nan -nan -nan -nan -730 + Bin 270: -730 -nan -nan -nan -nan -nan -nan -nan -nan -nan -729 + Bin 271: -729 -nan -nan -nan -nan -nan -nan -nan -nan -nan -728 + Bin 272: -728 -nan -nan -nan -nan -nan -nan -nan -nan -nan -727 + Bin 273: -727 -nan -nan -nan -nan -nan -nan -nan -nan -nan -726 + Bin 274: -726 -nan -nan -nan -nan -nan -nan -nan -nan -nan -725 + Bin 275: -725 -nan -nan -nan -nan -nan -nan -nan -nan -nan -724 + Bin 276: -724 -nan -nan -nan -nan -nan -nan -nan -nan -nan -723 + Bin 277: -723 -nan -nan -nan -nan -nan -nan -nan -nan -nan -722 + Bin 278: -722 -nan -nan -nan -nan -nan -nan -nan -nan -nan -721 + Bin 279: -721 -nan -nan -nan -nan -nan -nan -nan -nan -nan -720 + Bin 280: -720 -nan -nan -nan -nan -nan -nan -nan -nan -nan -719 + Bin 281: -719 -nan -nan -nan -nan -nan -nan -nan -nan -nan -718 + Bin 282: -718 -nan -nan -nan -nan -nan -nan -nan -nan -nan -717 + Bin 283: -717 -nan -nan -nan -nan -nan -nan -nan -nan -nan -716 + Bin 284: -716 -nan -nan -nan -nan -nan -nan -nan -nan -nan -715 + Bin 285: -715 -nan -nan -nan -nan -nan -nan -nan -nan -nan -714 + Bin 286: -714 -nan -nan -nan -nan -nan -nan -nan -nan -nan -713 + Bin 287: -713 -nan -nan -nan -nan -nan -nan -nan -nan -nan -712 + Bin 288: -712 -nan -nan -nan -nan -nan -nan -nan -nan -nan -711 + Bin 289: -711 -nan -nan -nan -nan -nan -nan -nan -nan -nan -710 + Bin 290: -710 -nan -nan -nan -nan -nan -nan -nan -nan -nan -709 + Bin 291: -709 -nan -nan -nan -nan -nan -nan -nan -nan -nan -708 + Bin 292: -708 -nan -nan -nan -nan -nan -nan -nan -nan -nan -707 + Bin 293: -707 -nan -nan -nan -nan -nan -nan -nan -nan -nan -706 + Bin 294: -706 -nan -nan -nan -nan -nan -nan -nan -nan -nan -705 + Bin 295: -705 -nan -nan -nan -nan -nan -nan -nan -nan -nan -704 + Bin 296: -704 -nan -nan -nan -nan -nan -nan -nan -nan -nan -703 + Bin 297: -703 -nan -nan -nan -nan -nan -nan -nan -nan -nan -702 + Bin 298: -702 -nan -nan -nan -nan -nan -nan -nan -nan -nan -701 + Bin 299: -701 -nan -nan -nan -nan -nan -nan -nan -nan -nan -700 + Bin 300: -700 -nan -nan -nan -nan -nan -nan -nan -nan -nan -699 + Bin 301: -699 -nan -nan -nan -nan -nan -nan -nan -nan -nan -698 + Bin 302: -698 -nan -nan -nan -nan -nan -nan -nan -nan -nan -697 + Bin 303: -697 -nan -nan -nan -nan -nan -nan -nan -nan -nan -696 + Bin 304: -696 -nan -nan -nan -nan -nan -nan -nan -nan -nan -695 + Bin 305: -695 -nan -nan -nan -nan -nan -nan -nan -nan -nan -694 + Bin 306: -694 -nan -nan -nan -nan -nan -nan -nan -nan -nan -693 + Bin 307: -693 -nan -nan -nan -nan -nan -nan -nan -nan -nan -692 + Bin 308: -692 -nan -nan -nan -nan -nan -nan -nan -nan -nan -691 + Bin 309: -691 -nan -nan -nan -nan -nan -nan -nan -nan -nan -690 + Bin 310: -690 -nan -nan -nan -nan -nan -nan -nan -nan -nan -689 + Bin 311: -689 -nan -nan -nan -nan -nan -nan -nan -nan -nan -688 + Bin 312: -688 -nan -nan -nan -nan -nan -nan -nan -nan -nan -687 + Bin 313: -687 -nan -nan -nan -nan -nan -nan -nan -nan -nan -686 + Bin 314: -686 -nan -nan -nan -nan -nan -nan -nan -nan -nan -685 + Bin 315: -685 -nan -nan -nan -nan -nan -nan -nan -nan -nan -684 + Bin 316: -684 -nan -nan -nan -nan -nan -nan -nan -nan -nan -683 + Bin 317: -683 -nan -nan -nan -nan -nan -nan -nan -nan -nan -682 + Bin 318: -682 -nan -nan -nan -nan -nan -nan -nan -nan -nan -681 + Bin 319: -681 -nan -nan -nan -nan -nan -nan -nan -nan -nan -680 + Bin 320: -680 -nan -nan -nan -nan -nan -nan -nan -nan -nan -679 + Bin 321: -679 -nan -nan -nan -nan -nan -nan -nan -nan -nan -678 + Bin 322: -678 -nan -nan -nan -nan -nan -nan -nan -nan -nan -677 + Bin 323: -677 -nan -nan -nan -nan -nan -nan -nan -nan -nan -676 + Bin 324: -676 -nan -nan -nan -nan -nan -nan -nan -nan -nan -675 + Bin 325: -675 -nan -nan -nan -nan -nan -nan -nan -nan -nan -674 + Bin 326: -674 -nan -nan -nan -nan -nan -nan -nan -nan -nan -673 + Bin 327: -673 -nan -nan -nan -nan -nan -nan -nan -nan -nan -672 + Bin 328: -672 -nan -nan -nan -nan -nan -nan -nan -nan -nan -671 + Bin 329: -671 -nan -nan -nan -nan -nan -nan -nan -nan -nan -670 + Bin 330: -670 -nan -nan -nan -nan -nan -nan -nan -nan -nan -669 + Bin 331: -669 -nan -nan -nan -nan -nan -nan -nan -nan -nan -668 + Bin 332: -668 -nan -nan -nan -nan -nan -nan -nan -nan -nan -667 + Bin 333: -667 -nan -nan -nan -nan -nan -nan -nan -nan -nan -666 + Bin 334: -666 -nan -nan -nan -nan -nan -nan -nan -nan -nan -665 + Bin 335: -665 -nan -nan -nan -nan -nan -nan -nan -nan -nan -664 + Bin 336: -664 -nan -nan -nan -nan -nan -nan -nan -nan -nan -663 + Bin 337: -663 -nan -nan -nan -nan -nan -nan -nan -nan -nan -662 + Bin 338: -662 -nan -nan -nan -nan -nan -nan -nan -nan -nan -661 + Bin 339: -661 -nan -nan -nan -nan -nan -nan -nan -nan -nan -660 + Bin 340: -660 -nan -nan -nan -nan -nan -nan -nan -nan -nan -659 + Bin 341: -659 -nan -nan -nan -nan -nan -nan -nan -nan -nan -658 + Bin 342: -658 -nan -nan -nan -nan -nan -nan -nan -nan -nan -657 + Bin 343: -657 -nan -nan -nan -nan -nan -nan -nan -nan -nan -656 + Bin 344: -656 -nan -nan -nan -nan -nan -nan -nan -nan -nan -655 + Bin 345: -655 -nan -nan -nan -nan -nan -nan -nan -nan -nan -654 + Bin 346: -654 -nan -nan -nan -nan -nan -nan -nan -nan -nan -653 + Bin 347: -653 -nan -nan -nan -nan -nan -nan -nan -nan -nan -652 + Bin 348: -652 -nan -nan -nan -nan -nan -nan -nan -nan -nan -651 + Bin 349: -651 -nan -nan -nan -nan -nan -nan -nan -nan -nan -650 + Bin 350: -650 -nan -nan -nan -nan -nan -nan -nan -nan -nan -649 + Bin 351: -649 -nan -nan -nan -nan -nan -nan -nan -nan -nan -648 + Bin 352: -648 -nan -nan -nan -nan -nan -nan -nan -nan -nan -647 + Bin 353: -647 -nan -nan -nan -nan -nan -nan -nan -nan -nan -646 + Bin 354: -646 -nan -nan -nan -nan -nan -nan -nan -nan -nan -645 + Bin 355: -645 -nan -nan -nan -nan -nan -nan -nan -nan -nan -644 + Bin 356: -644 -nan -nan -nan -nan -nan -nan -nan -nan -nan -643 + Bin 357: -643 -nan -nan -nan -nan -nan -nan -nan -nan -nan -642 + Bin 358: -642 -nan -nan -nan -nan -nan -nan -nan -nan -nan -641 + Bin 359: -641 -nan -nan -nan -nan -nan -nan -nan -nan -nan -640 + Bin 360: -640 -nan -nan -nan -nan -nan -nan -nan -nan -nan -639 + Bin 361: -639 -nan -nan -nan -nan -nan -nan -nan -nan -nan -638 + Bin 362: -638 -nan -nan -nan -nan -nan -nan -nan -nan -nan -637 + Bin 363: -637 -nan -nan -nan -nan -nan -nan -nan -nan -nan -636 + Bin 364: -636 -nan -nan -nan -nan -nan -nan -nan -nan -nan -635 + Bin 365: -635 -nan -nan -nan -nan -nan -nan -nan -nan -nan -634 + Bin 366: -634 -nan -nan -nan -nan -nan -nan -nan -nan -nan -633 + Bin 367: -633 -nan -nan -nan -nan -nan -nan -nan -nan -nan -632 + Bin 368: -632 -nan -nan -nan -nan -nan -nan -nan -nan -nan -631 + Bin 369: -631 -nan -nan -nan -nan -nan -nan -nan -nan -nan -630 + Bin 370: -630 -nan -nan -nan -nan -nan -nan -nan -nan -nan -629 + Bin 371: -629 -nan -nan -nan -nan -nan -nan -nan -nan -nan -628 + Bin 372: -628 -nan -nan -nan -nan -nan -nan -nan -nan -nan -627 + Bin 373: -627 -nan -nan -nan -nan -nan -nan -nan -nan -nan -626 + Bin 374: -626 -nan -nan -nan -nan -nan -nan -nan -nan -nan -625 + Bin 375: -625 -nan -nan -nan -nan -nan -nan -nan -nan -nan -624 + Bin 376: -624 -nan -nan -nan -nan -nan -nan -nan -nan -nan -623 + Bin 377: -623 -nan -nan -nan -nan -nan -nan -nan -nan -nan -622 + Bin 378: -622 -nan -nan -nan -nan -nan -nan -nan -nan -nan -621 + Bin 379: -621 -nan -nan -nan -nan -nan -nan -nan -nan -nan -620 + Bin 380: -620 -nan -nan -nan -nan -nan -nan -nan -nan -nan -619 + Bin 381: -619 -nan -nan -nan -nan -nan -nan -nan -nan -nan -618 + Bin 382: -618 -nan -nan -nan -nan -nan -nan -nan -nan -nan -617 + Bin 383: -617 -nan -nan -nan -nan -nan -nan -nan -nan -nan -616 + Bin 384: -616 -nan -nan -nan -nan -nan -nan -nan -nan -nan -615 + Bin 385: -615 -nan -nan -nan -nan -nan -nan -nan -nan -nan -614 + Bin 386: -614 -nan -nan -nan -nan -nan -nan -nan -nan -nan -613 + Bin 387: -613 -nan -nan -nan -nan -nan -nan -nan -nan -nan -612 + Bin 388: -612 -nan -nan -nan -nan -nan -nan -nan -nan -nan -611 + Bin 389: -611 -nan -nan -nan -nan -nan -nan -nan -nan -nan -610 + Bin 390: -610 -nan -nan -nan -nan -nan -nan -nan -nan -nan -609 + Bin 391: -609 -nan -nan -nan -nan -nan -nan -nan -nan -nan -608 + Bin 392: -608 -nan -nan -nan -nan -nan -nan -nan -nan -nan -607 + Bin 393: -607 -nan -nan -nan -nan -nan -nan -nan -nan -nan -606 + Bin 394: -606 -nan -nan -nan -nan -nan -nan -nan -nan -nan -605 + Bin 395: -605 -nan -nan -nan -nan -nan -nan -nan -nan -nan -604 + Bin 396: -604 -nan -nan -nan -nan -nan -nan -nan -nan -nan -603 + Bin 397: -603 -nan -nan -nan -nan -nan -nan -nan -nan -nan -602 + Bin 398: -602 -nan -nan -nan -nan -nan -nan -nan -nan -nan -601 + Bin 399: -601 -nan -nan -nan -nan -nan -nan -nan -nan -nan -600 + Bin 400: -600 -nan -nan -nan -nan -nan -nan -nan -nan -nan -599 + Bin 401: -599 -nan -nan -nan -nan -nan -nan -nan -nan -nan -598 + Bin 402: -598 -nan -nan -nan -nan -nan -nan -nan -nan -nan -597 + Bin 403: -597 -nan -nan -nan -nan -nan -nan -nan -nan -nan -596 + Bin 404: -596 -nan -nan -nan -nan -nan -nan -nan -nan -nan -595 + Bin 405: -595 -nan -nan -nan -nan -nan -nan -nan -nan -nan -594 + Bin 406: -594 -nan -nan -nan -nan -nan -nan -nan -nan -nan -593 + Bin 407: -593 -nan -nan -nan -nan -nan -nan -nan -nan -nan -592 + Bin 408: -592 -nan -nan -nan -nan -nan -nan -nan -nan -nan -591 + Bin 409: -591 -nan -nan -nan -nan -nan -nan -nan -nan -nan -590 + Bin 410: -590 -nan -nan -nan -nan -nan -nan -nan -nan -nan -589 + Bin 411: -589 -nan -nan -nan -nan -nan -nan -nan -nan -nan -588 + Bin 412: -588 -nan -nan -nan -nan -nan -nan -nan -nan -nan -587 + Bin 413: -587 -nan -nan -nan -nan -nan -nan -nan -nan -nan -586 + Bin 414: -586 -nan -nan -nan -nan -nan -nan -nan -nan -nan -585 + Bin 415: -585 -nan -nan -nan -nan -nan -nan -nan -nan -nan -584 + Bin 416: -584 -nan -nan -nan -nan -nan -nan -nan -nan -nan -583 + Bin 417: -583 -nan -nan -nan -nan -nan -nan -nan -nan -nan -582 + Bin 418: -582 -nan -nan -nan -nan -nan -nan -nan -nan -nan -581 + Bin 419: -581 -nan -nan -nan -nan -nan -nan -nan -nan -nan -580 + Bin 420: -580 -nan -nan -nan -nan -nan -nan -nan -nan -nan -579 + Bin 421: -579 -nan -nan -nan -nan -nan -nan -nan -nan -nan -578 + Bin 422: -578 -nan -nan -nan -nan -nan -nan -nan -nan -nan -577 + Bin 423: -577 -nan -nan -nan -nan -nan -nan -nan -nan -nan -576 + Bin 424: -576 -nan -nan -nan -nan -nan -nan -nan -nan -nan -575 + Bin 425: -575 -nan -nan -nan -nan -nan -nan -nan -nan -nan -574 + Bin 426: -574 -nan -nan -nan -nan -nan -nan -nan -nan -nan -573 + Bin 427: -573 -nan -nan -nan -nan -nan -nan -nan -nan -nan -572 + Bin 428: -572 -nan -nan -nan -nan -nan -nan -nan -nan -nan -571 + Bin 429: -571 -nan -nan -nan -nan -nan -nan -nan -nan -nan -570 + Bin 430: -570 -nan -nan -nan -nan -nan -nan -nan -nan -nan -569 + Bin 431: -569 -nan -nan -nan -nan -nan -nan -nan -nan -nan -568 + Bin 432: -568 -nan -nan -nan -nan -nan -nan -nan -nan -nan -567 + Bin 433: -567 -nan -nan -nan -nan -nan -nan -nan -nan -nan -566 + Bin 434: -566 -nan -nan -nan -nan -nan -nan -nan -nan -nan -565 + Bin 435: -565 -nan -nan -nan -nan -nan -nan -nan -nan -nan -564 + Bin 436: -564 -nan -nan -nan -nan -nan -nan -nan -nan -nan -563 + Bin 437: -563 -nan -nan -nan -nan -nan -nan -nan -nan -nan -562 + Bin 438: -562 -nan -nan -nan -nan -nan -nan -nan -nan -nan -561 + Bin 439: -561 -nan -nan -nan -nan -nan -nan -nan -nan -nan -560 + Bin 440: -560 -nan -nan -nan -nan -nan -nan -nan -nan -nan -559 + Bin 441: -559 -nan -nan -nan -nan -nan -nan -nan -nan -nan -558 + Bin 442: -558 -nan -nan -nan -nan -nan -nan -nan -nan -nan -557 + Bin 443: -557 -nan -nan -nan -nan -nan -nan -nan -nan -nan -556 + Bin 444: -556 -nan -nan -nan -nan -nan -nan -nan -nan -nan -555 + Bin 445: -555 -nan -nan -nan -nan -nan -nan -nan -nan -nan -554 + Bin 446: -554 -nan -nan -nan -nan -nan -nan -nan -nan -nan -553 + Bin 447: -553 -nan -nan -nan -nan -nan -nan -nan -nan -nan -552 + Bin 448: -552 -552 -552 -552 -552 -552 -551.932 -551.853 -551.736 -551.544 -551 + Bin 449: -551 -550.785 -550.705 -550.649 -550.606 -550.559 -550.53 -550.486 -550.421 -550.314 -550 + Bin 450: -550 -549.799 -549.728 -549.666 -549.636 -549.59 -549.558 -549.509 -549.434 -549.322 -549 + Bin 451: -549 -548.749 -548.673 -548.629 -548.586 -548.555 -548.507 -548.464 -548.4 -548.282 -548 + Bin 452: -548 -547.762 -547.696 -547.649 -547.613 -547.57 -547.536 -547.489 -547.422 -547.313 -547 + Bin 453: -547 -546.799 -546.714 -546.661 -546.613 -546.564 -546.521 -546.467 -546.4 -546.276 -546 + Bin 454: -546 -545.741 -545.651 -545.607 -545.561 -545.527 -545.484 -545.439 -545.371 -545.268 -545 + Bin 455: -545 -544.726 -544.645 -544.598 -544.559 -544.512 -544.476 -544.427 -544.366 -544.271 -544 + Bin 456: -544 -543.788 -543.725 -543.678 -543.642 -543.6 -543.562 -543.509 -543.429 -543.308 -543 + Bin 457: -543 -542.76 -542.688 -542.656 -542.624 -542.58 -542.555 -542.513 -542.453 -542.337 -542 + Bin 458: -542 -541.788 -541.71 -541.658 -541.622 -541.579 -541.54 -541.495 -541.424 -541.306 -541 + Bin 459: -541 -540.781 -540.709 -540.656 -540.614 -540.568 -540.532 -540.486 -540.418 -540.307 -540 + Bin 460: -540 -539.717 -539.629 -539.582 -539.553 -539.529 -539.486 -539.446 -539.387 -539.284 -539 + Bin 461: -539 -538.775 -538.705 -538.654 -538.617 -538.569 -538.53 -538.481 -538.413 -538.306 -538 + Bin 462: -538 -537.758 -537.689 -537.64 -537.602 -537.571 -537.521 -537.475 -537.398 -537.278 -537 + Bin 463: -537 -536.755 -536.682 -536.645 -536.618 -536.582 -536.552 -536.514 -536.44 -536.318 -536 + Bin 464: -536 -535.764 -535.696 -535.657 -535.623 -535.597 -535.546 -535.505 -535.433 -535.315 -535 + Bin 465: -535 -534.708 -534.612 -534.571 -534.54 -534.521 -534.475 -534.436 -534.381 -534.28 -534 + Bin 466: -534 -533.745 -533.662 -533.621 -533.581 -533.541 -533.502 -533.455 -533.397 -533.287 -533 + Bin 467: -533 -532.755 -532.68 -532.633 -532.601 -532.575 -532.524 -532.483 -532.408 -532.294 -532 + Bin 468: -532 -531.709 -531.621 -531.569 -531.533 -531.504 -531.453 -531.411 -531.35 -531.249 -531 + Bin 469: -531 -530.793 -530.718 -530.664 -530.62 -530.574 -530.53 -530.482 -530.409 -530.298 -530 + Bin 470: -530 -529.764 -529.688 -529.631 -529.592 -529.544 -529.518 -529.475 -529.417 -529.329 -529 + Bin 471: -529 -528.762 -528.675 -528.617 -528.574 -528.535 -528.49 -528.444 -528.383 -528.294 -528 + Bin 472: -528 -527.798 -527.719 -527.668 -527.622 -527.579 -527.542 -527.488 -527.426 -527.321 -527 + Bin 473: -527 -526.785 -526.694 -526.631 -526.583 -526.54 -526.505 -526.464 -526.4 -526.31 -526 + Bin 474: -526 -525.747 -525.665 -525.613 -525.577 -525.544 -525.493 -525.444 -525.38 -525.282 -525 + Bin 475: -525 -524.77 -524.691 -524.651 -524.615 -524.559 -524.525 -524.477 -524.406 -524.311 -524 + Bin 476: -524 -523.79 -523.704 -523.646 -523.596 -523.556 -523.507 -523.459 -523.392 -523.292 -523 + Bin 477: -523 -522.758 -522.672 -522.616 -522.569 -522.525 -522.476 -522.426 -522.363 -522.272 -522 + Bin 478: -522 -521.786 -521.705 -521.656 -521.613 -521.57 -521.533 -521.485 -521.429 -521.324 -521 + Bin 479: -521 -520.802 -520.728 -520.672 -520.627 -520.585 -520.548 -520.496 -520.436 -520.33 -520 + Bin 480: -520 -519.777 -519.707 -519.655 -519.619 -519.585 -519.54 -519.488 -519.418 -519.308 -519 + Bin 481: -519 -518.758 -518.68 -518.628 -518.591 -518.546 -518.512 -518.465 -518.403 -518.303 -518 + Bin 482: -518 -517.809 -517.737 -517.686 -517.642 -517.599 -517.562 -517.517 -517.446 -517.345 -517 + Bin 483: -517 -516.76 -516.688 -516.64 -516.599 -516.56 -516.521 -516.481 -516.42 -516.325 -516 + Bin 484: -516 -515.762 -515.685 -515.632 -515.59 -515.545 -515.515 -515.47 -515.421 -515.333 -515 + Bin 485: -515 -514.728 -514.648 -514.598 -514.559 -514.526 -514.477 -514.431 -514.363 -514.273 -514 + Bin 486: -514 -513.747 -513.658 -513.596 -513.551 -513.494 -513.459 -513.411 -513.349 -513.256 -513 + Bin 487: -513 -512.783 -512.714 -512.664 -512.63 -512.591 -512.54 -512.479 -512.406 -512.29 -512 + Bin 488: -512 -511.845 -511.766 -511.711 -511.668 -511.623 -511.585 -511.538 -511.483 -511.369 -511 + Bin 489: -511 -510.84 -510.748 -510.685 -510.641 -510.592 -510.561 -510.508 -510.451 -510.353 -510 + Bin 490: -510 -509.822 -509.732 -509.677 -509.635 -509.588 -509.546 -509.497 -509.431 -509.336 -509 + Bin 491: -509 -508.803 -508.727 -508.663 -508.615 -508.571 -508.531 -508.483 -508.425 -508.328 -508 + Bin 492: -508 -507.784 -507.701 -507.638 -507.591 -507.558 -507.512 -507.463 -507.411 -507.328 -507 + Bin 493: -507 -506.775 -506.695 -506.642 -506.598 -506.547 -506.511 -506.462 -506.409 -506.32 -506 + Bin 494: -506 -505.772 -505.689 -505.628 -505.578 -505.539 -505.496 -505.45 -505.398 -505.313 -505 + Bin 495: -505 -504.767 -504.674 -504.61 -504.568 -504.535 -504.494 -504.459 -504.412 -504.318 -504 + Bin 496: -504 -503.789 -503.7 -503.643 -503.605 -503.561 -503.528 -503.486 -503.428 -503.325 -503 + Bin 497: -503 -502.747 -502.661 -502.621 -502.596 -502.574 -502.524 -502.481 -502.419 -502.306 -502 + Bin 498: -502 -501.764 -501.694 -501.649 -501.615 -501.57 -501.538 -501.494 -501.43 -501.318 -501 + Bin 499: -501 -500.765 -500.711 -500.671 -500.638 -500.612 -500.56 -500.512 -500.446 -500.327 -500 + Bin 500: -500 -499.798 -499.746 -499.708 -499.677 -499.634 -499.599 -499.55 -499.481 -499.353 -499 + Bin 501: -499 -498.815 -498.755 -498.713 -498.681 -498.653 -498.6 -498.557 -498.485 -498.375 -498 + Bin 502: -498 -497.739 -497.67 -497.635 -497.607 -497.563 -497.533 -497.494 -497.437 -497.329 -497 + Bin 503: -497 -496.709 -496.633 -496.599 -496.571 -496.546 -496.502 -496.462 -496.402 -496.291 -496 + Bin 504: -496 -495.759 -495.688 -495.652 -495.624 -495.597 -495.547 -495.499 -495.426 -495.3 -495 + Bin 505: -495 -494.773 -494.712 -494.678 -494.645 -494.602 -494.567 -494.522 -494.446 -494.318 -494 + Bin 506: -494 -493.744 -493.671 -493.636 -493.61 -493.584 -493.539 -493.497 -493.433 -493.316 -493 + Bin 507: -493 -492.748 -492.661 -492.637 -492.614 -492.579 -492.551 -492.509 -492.447 -492.32 -492 + Bin 508: -492 -491.784 -491.731 -491.693 -491.658 -491.608 -491.578 -491.533 -491.465 -491.336 -491 + Bin 509: -491 -490.75 -490.691 -490.661 -490.635 -490.607 -490.561 -490.515 -490.447 -490.327 -490 + Bin 510: -490 -489.762 -489.695 -489.658 -489.627 -489.597 -489.552 -489.503 -489.427 -489.298 -489 + Bin 511: -489 -488.817 -488.769 -488.733 -488.69 -488.671 -488.642 -488.591 -488.509 -488.354 -488 + Bin 512: -488 -487.797 -487.747 -487.703 -487.673 -487.647 -487.591 -487.541 -487.458 -487.312 -487 + Bin 513: -487 -486.756 -486.683 -486.644 -486.608 -486.563 -486.531 -486.481 -486.411 -486.286 -486 + Bin 514: -486 -485.771 -485.72 -485.686 -485.647 -485.601 -485.569 -485.519 -485.436 -485.295 -485 + Bin 515: -485 -484.733 -484.651 -484.624 -484.607 -484.587 -484.538 -484.49 -484.414 -484.281 -484 + Bin 516: -484 -483.732 -483.641 -483.613 -483.588 -483.541 -483.512 -483.471 -483.4 -483.265 -483 + Bin 517: -483 -482.751 -482.677 -482.652 -482.632 -482.608 -482.559 -482.507 -482.437 -482.305 -482 + Bin 518: -482 -481.747 -481.676 -481.649 -481.615 -481.567 -481.536 -481.489 -481.416 -481.281 -481 + Bin 519: -481 -480.737 -480.657 -480.627 -480.598 -480.549 -480.517 -480.47 -480.396 -480.269 -480 + Bin 520: -480 -479.74 -479.64 -479.611 -479.584 -479.56 -479.512 -479.468 -479.396 -479.271 -479 + Bin 521: -479 -478.743 -478.67 -478.632 -478.598 -478.552 -478.513 -478.462 -478.395 -478.276 -478 + Bin 522: -478 -477.748 -477.686 -477.651 -477.618 -477.594 -477.542 -477.491 -477.417 -477.288 -477 + Bin 523: -477 -476.769 -476.712 -476.678 -476.644 -476.599 -476.565 -476.515 -476.441 -476.312 -476 + Bin 524: -476 -475.745 -475.679 -475.643 -475.61 -475.578 -475.525 -475.478 -475.402 -475.274 -475 + Bin 525: -475 -474.728 -474.652 -474.617 -474.587 -474.562 -474.514 -474.464 -474.398 -474.276 -474 + Bin 526: -474 -473.764 -473.702 -473.662 -473.629 -473.58 -473.551 -473.506 -473.437 -473.317 -473 + Bin 527: -473 -472.733 -472.664 -472.609 -472.567 -472.537 -472.494 -472.449 -472.394 -472.28 -472 + Bin 528: -472 -471.713 -471.636 -471.596 -471.569 -471.546 -471.506 -471.463 -471.404 -471.288 -471 + Bin 529: -471 -470.754 -470.687 -470.652 -470.619 -470.596 -470.55 -470.51 -470.452 -470.343 -470 + Bin 530: -470 -469.752 -469.691 -469.652 -469.622 -469.583 -469.557 -469.52 -469.46 -469.34 -469 + Bin 531: -469 -468.799 -468.724 -468.676 -468.635 -468.608 -468.557 -468.507 -468.437 -468.311 -468 + Bin 532: -468 -467.743 -467.667 -467.634 -467.602 -467.577 -467.528 -467.486 -467.423 -467.298 -467 + Bin 533: -467 -466.749 -466.681 -466.642 -466.607 -466.579 -466.529 -466.483 -466.424 -466.316 -466 + Bin 534: -466 -465.777 -465.716 -465.681 -465.646 -465.607 -465.578 -465.53 -465.467 -465.35 -465 + Bin 535: -465 -464.785 -464.72 -464.67 -464.634 -464.593 -464.559 -464.515 -464.448 -464.334 -464 + Bin 536: -464 -463.767 -463.701 -463.668 -463.632 -463.607 -463.554 -463.51 -463.443 -463.325 -463 + Bin 537: -463 -462.74 -462.676 -462.633 -462.595 -462.569 -462.523 -462.479 -462.411 -462.307 -462 + Bin 538: -462 -461.747 -461.688 -461.655 -461.627 -461.581 -461.548 -461.511 -461.445 -461.333 -461 + Bin 539: -461 -460.746 -460.683 -460.648 -460.613 -460.569 -460.54 -460.499 -460.437 -460.32 -460 + Bin 540: -460 -459.758 -459.7 -459.661 -459.629 -459.588 -459.558 -459.509 -459.447 -459.334 -459 + Bin 541: -459 -458.776 -458.709 -458.661 -458.625 -458.582 -458.549 -458.5 -458.439 -458.323 -458 + Bin 542: -458 -457.783 -457.726 -457.684 -457.658 -457.633 -457.58 -457.53 -457.455 -457.324 -457 + Bin 543: -457 -456.8 -456.749 -456.715 -456.686 -456.656 -456.62 -456.568 -456.48 -456.328 -456 + Bin 544: -456 -455.843 -455.777 -455.726 -455.682 -455.643 -455.606 -455.555 -455.476 -455.347 -455 + Bin 545: -455 -454.756 -454.688 -454.646 -454.616 -454.589 -454.544 -454.489 -454.414 -454.291 -454 + Bin 546: -454 -453.747 -453.673 -453.639 -453.601 -453.552 -453.522 -453.476 -453.405 -453.282 -453 + Bin 547: -453 -452.808 -452.756 -452.718 -452.685 -452.645 -452.607 -452.545 -452.462 -452.319 -452 + Bin 548: -452 -451.807 -451.746 -451.703 -451.665 -451.623 -451.587 -451.543 -451.462 -451.33 -451 + Bin 549: -451 -450.765 -450.695 -450.649 -450.605 -450.575 -450.522 -450.474 -450.396 -450.286 -450 + Bin 550: -450 -449.762 -449.687 -449.661 -449.631 -449.601 -449.544 -449.496 -449.422 -449.3 -449 + Bin 551: -449 -448.776 -448.717 -448.674 -448.637 -448.592 -448.554 -448.501 -448.429 -448.315 -448 + Bin 552: -448 -447.781 -447.727 -447.686 -447.65 -447.611 -447.572 -447.521 -447.438 -447.319 -447 + Bin 553: -447 -446.811 -446.763 -446.715 -446.677 -446.633 -446.597 -446.54 -446.461 -446.339 -446 + Bin 554: -446 -445.797 -445.73 -445.674 -445.63 -445.578 -445.536 -445.489 -445.417 -445.295 -445 + Bin 555: -445 -444.752 -444.681 -444.633 -444.596 -444.567 -444.516 -444.465 -444.392 -444.283 -444 + Bin 556: -444 -443.769 -443.699 -443.656 -443.617 -443.569 -443.528 -443.482 -443.41 -443.297 -443 + Bin 557: -443 -442.772 -442.697 -442.656 -442.622 -442.574 -442.535 -442.48 -442.4 -442.27 -442 + Bin 558: -442 -441.757 -441.687 -441.645 -441.607 -441.571 -441.517 -441.47 -441.4 -441.27 -441 + Bin 559: -441 -440.779 -440.709 -440.674 -440.643 -440.612 -440.566 -440.512 -440.438 -440.302 -440 + Bin 560: -440 -439.803 -439.742 -439.7 -439.664 -439.618 -439.585 -439.538 -439.47 -439.338 -439 + Bin 561: -439 -438.756 -438.702 -438.669 -438.64 -438.614 -438.562 -438.518 -438.448 -438.316 -438 + Bin 562: -438 -437.777 -437.717 -437.682 -437.648 -437.609 -437.576 -437.527 -437.452 -437.324 -437 + Bin 563: -437 -436.787 -436.732 -436.697 -436.662 -436.619 -436.58 -436.535 -436.47 -436.348 -436 + Bin 564: -436 -435.786 -435.731 -435.698 -435.668 -435.635 -435.588 -435.533 -435.456 -435.316 -435 + Bin 565: -435 -434.772 -434.721 -434.69 -434.663 -434.618 -434.582 -434.533 -434.46 -434.329 -434 + Bin 566: -434 -433.795 -433.734 -433.694 -433.661 -433.626 -433.575 -433.515 -433.444 -433.311 -433 + Bin 567: -433 -432.775 -432.716 -432.672 -432.633 -432.586 -432.548 -432.495 -432.42 -432.298 -432 + Bin 568: -432 -431.799 -431.747 -431.71 -431.679 -431.634 -431.598 -431.537 -431.455 -431.325 -431 + Bin 569: -431 -430.774 -430.715 -430.677 -430.648 -430.603 -430.568 -430.519 -430.443 -430.318 -430 + Bin 570: -430 -429.773 -429.714 -429.683 -429.651 -429.625 -429.582 -429.527 -429.453 -429.315 -429 + Bin 571: -429 -428.781 -428.722 -428.686 -428.654 -428.615 -428.581 -428.532 -428.457 -428.329 -428 + Bin 572: -428 -427.787 -427.73 -427.696 -427.662 -427.613 -427.576 -427.521 -427.437 -427.296 -427 + Bin 573: -427 -426.801 -426.758 -426.721 -426.69 -426.638 -426.599 -426.542 -426.469 -426.33 -426 + Bin 574: -426 -425.767 -425.704 -425.665 -425.629 -425.581 -425.542 -425.495 -425.425 -425.302 -425 + Bin 575: -425 -424.774 -424.701 -424.674 -424.654 -424.622 -424.591 -424.541 -424.459 -424.316 -424 + Bin 576: -424 -423.823 -423.78 -423.739 -423.707 -423.661 -423.626 -423.574 -423.488 -423.337 -423 + Bin 577: -423 -422.763 -422.709 -422.674 -422.645 -422.618 -422.572 -422.525 -422.452 -422.324 -422 + Bin 578: -422 -421.754 -421.698 -421.664 -421.631 -421.604 -421.56 -421.513 -421.441 -421.301 -421 + Bin 579: -421 -420.766 -420.716 -420.674 -420.639 -420.594 -420.562 -420.515 -420.446 -420.317 -420 + Bin 580: -420 -419.795 -419.744 -419.705 -419.676 -419.652 -419.606 -419.558 -419.484 -419.35 -419 + Bin 581: -419 -418.754 -418.691 -418.636 -418.599 -418.556 -418.523 -418.478 -418.41 -418.303 -418 + Bin 582: -418 -417.78 -417.715 -417.666 -417.623 -417.582 -417.546 -417.506 -417.436 -417.339 -417 + Bin 583: -417 -416.836 -416.743 -416.684 -416.639 -416.598 -416.565 -416.514 -416.452 -416.349 -416 + Bin 584: -416 -415.791 -415.71 -415.657 -415.618 -415.59 -415.54 -415.491 -415.424 -415.327 -415 + Bin 585: -415 -414.818 -414.739 -414.684 -414.643 -414.6 -414.569 -414.521 -414.454 -414.342 -414 + Bin 586: -414 -413.813 -413.751 -413.7 -413.665 -413.634 -413.578 -413.525 -413.447 -413.322 -413 + Bin 587: -413 -412.764 -412.706 -412.652 -412.611 -412.568 -412.533 -412.486 -412.42 -412.298 -412 + Bin 588: -412 -411.771 -411.709 -411.665 -411.631 -411.583 -411.549 -411.505 -411.437 -411.308 -411 + Bin 589: -411 -410.772 -410.711 -410.669 -410.631 -410.585 -410.551 -410.507 -410.433 -410.316 -410 + Bin 590: -410 -409.779 -409.714 -409.653 -409.613 -409.569 -409.539 -409.494 -409.433 -409.327 -409 + Bin 591: -409 -408.729 -408.657 -408.608 -408.568 -408.539 -408.494 -408.45 -408.387 -408.281 -408 + Bin 592: -408 -407.75 -407.675 -407.63 -407.593 -407.565 -407.517 -407.473 -407.408 -407.303 -407 + Bin 593: -407 -406.756 -406.698 -406.655 -406.617 -406.577 -406.546 -406.501 -406.439 -406.333 -406 + Bin 594: -406 -405.782 -405.717 -405.669 -405.635 -405.61 -405.557 -405.509 -405.443 -405.328 -405 + Bin 595: -405 -404.783 -404.718 -404.671 -404.635 -404.594 -404.561 -404.516 -404.445 -404.333 -404 + Bin 596: -404 -403.782 -403.72 -403.67 -403.632 -403.605 -403.562 -403.519 -403.453 -403.339 -403 + Bin 597: -403 -402.78 -402.711 -402.658 -402.615 -402.571 -402.539 -402.497 -402.434 -402.327 -402 + Bin 598: -402 -401.764 -401.7 -401.657 -401.625 -401.601 -401.549 -401.508 -401.439 -401.317 -401 + Bin 599: -401 -400.746 -400.684 -400.652 -400.62 -400.583 -400.556 -400.508 -400.439 -400.317 -400 + Bin 600: -400 -399.752 -399.685 -399.638 -399.603 -399.576 -399.528 -399.481 -399.415 -399.298 -399 + Bin 601: -399 -398.747 -398.672 -398.621 -398.578 -398.533 -398.505 -398.465 -398.408 -398.309 -398 + Bin 602: -398 -397.791 -397.734 -397.691 -397.654 -397.612 -397.579 -397.536 -397.466 -397.348 -397 + Bin 603: -397 -396.776 -396.717 -396.675 -396.643 -396.62 -396.572 -396.522 -396.449 -396.333 -396 + Bin 604: -396 -395.759 -395.694 -395.654 -395.62 -395.581 -395.538 -395.492 -395.43 -395.309 -395 + Bin 605: -395 -394.759 -394.696 -394.653 -394.626 -394.589 -394.558 -394.512 -394.438 -394.324 -394 + Bin 606: -394 -393.808 -393.718 -393.653 -393.608 -393.555 -393.522 -393.476 -393.416 -393.315 -393 + Bin 607: -393 -392.745 -392.666 -392.629 -392.597 -392.574 -392.528 -392.481 -392.405 -392.284 -392 + Bin 608: -392 -391.736 -391.672 -391.636 -391.605 -391.577 -391.528 -391.484 -391.422 -391.302 -391 + Bin 609: -391 -390.714 -390.635 -390.601 -390.574 -390.551 -390.512 -390.477 -390.409 -390.284 -390 + Bin 610: -390 -389.743 -389.675 -389.647 -389.623 -389.582 -389.556 -389.513 -389.446 -389.313 -389 + Bin 611: -389 -388.763 -388.704 -388.671 -388.642 -388.619 -388.574 -388.529 -388.461 -388.329 -388 + Bin 612: -388 -387.722 -387.646 -387.609 -387.575 -387.535 -387.508 -387.47 -387.407 -387.285 -387 + Bin 613: -387 -386.746 -386.686 -386.652 -386.622 -386.581 -386.55 -386.514 -386.45 -386.329 -386 + Bin 614: -386 -385.729 -385.672 -385.638 -385.602 -385.572 -385.525 -385.482 -385.415 -385.298 -385 + Bin 615: -385 -384.753 -384.679 -384.652 -384.633 -384.593 -384.56 -384.52 -384.448 -384.318 -384 + Bin 616: -384 -383.771 -383.708 -383.67 -383.637 -383.588 -383.555 -383.511 -383.44 -383.31 -383 + Bin 617: -383 -382.738 -382.676 -382.649 -382.625 -382.604 -382.555 -382.512 -382.441 -382.318 -382 + Bin 618: -382 -381.729 -381.66 -381.626 -381.596 -381.556 -381.524 -381.481 -381.41 -381.291 -381 + Bin 619: -381 -380.722 -380.64 -380.606 -380.582 -380.56 -380.506 -380.463 -380.395 -380.277 -380 + Bin 620: -380 -379.736 -379.66 -379.628 -379.601 -379.556 -379.529 -379.484 -379.416 -379.292 -379 + Bin 621: -379 -378.774 -378.711 -378.684 -378.659 -378.616 -378.586 -378.541 -378.469 -378.334 -378 + Bin 622: -378 -377.756 -377.693 -377.655 -377.611 -377.56 -377.529 -377.483 -377.412 -377.292 -377 + Bin 623: -377 -376.775 -376.698 -376.662 -376.641 -376.628 -376.584 -376.541 -376.461 -376.315 -376 + Bin 624: -376 -375.745 -375.679 -375.648 -375.621 -375.58 -375.55 -375.508 -375.45 -375.324 -375 + Bin 625: -375 -374.757 -374.697 -374.664 -374.642 -374.62 -374.578 -374.536 -374.461 -374.316 -374 + Bin 626: -374 -373.71 -373.635 -373.605 -373.576 -373.556 -373.514 -373.476 -373.416 -373.299 -373 + Bin 627: -373 -372.721 -372.643 -372.611 -372.582 -372.559 -372.514 -372.474 -372.411 -372.289 -372 + Bin 628: -372 -371.739 -371.673 -371.641 -371.61 -371.572 -371.544 -371.503 -371.44 -371.304 -371 + Bin 629: -371 -370.759 -370.693 -370.661 -370.638 -370.619 -370.575 -370.534 -370.457 -370.319 -370 + Bin 630: -370 -369.732 -369.655 -369.623 -369.601 -369.556 -369.526 -369.485 -369.417 -369.297 -369 + Bin 631: -369 -368.748 -368.679 -368.646 -368.622 -368.601 -368.562 -368.519 -368.454 -368.322 -368 + Bin 632: -368 -367.751 -367.696 -367.651 -367.614 -367.573 -367.542 -367.499 -367.43 -367.314 -367 + Bin 633: -367 -366.749 -366.691 -366.655 -366.624 -366.581 -366.549 -366.501 -366.435 -366.313 -366 + Bin 634: -366 -365.719 -365.657 -365.615 -365.581 -365.557 -365.514 -365.469 -365.398 -365.287 -365 + Bin 635: -365 -364.743 -364.683 -364.637 -364.599 -364.56 -364.528 -364.48 -364.405 -364.28 -364 + Bin 636: -364 -363.726 -363.638 -363.598 -363.569 -363.54 -363.491 -363.45 -363.384 -363.269 -363 + Bin 637: -363 -362.737 -362.664 -362.636 -362.608 -362.59 -362.547 -362.505 -362.437 -362.305 -362 + Bin 638: -362 -361.731 -361.658 -361.615 -361.581 -361.537 -361.505 -361.465 -361.408 -361.308 -361 + Bin 639: -361 -360.704 -360.607 -360.556 -360.516 -360.474 -360.436 -360.392 -360.325 -360.221 -360 + Bin 640: -360 -359.747 -359.672 -359.631 -359.601 -359.576 -359.538 -359.493 -359.419 -359.299 -359 + Bin 641: -359 -358.752 -358.686 -358.646 -358.614 -358.568 -358.538 -358.492 -358.424 -358.314 -358 + Bin 642: -358 -357.747 -357.671 -357.625 -357.595 -357.569 -357.524 -357.477 -357.407 -357.293 -357 + Bin 643: -357 -356.78 -356.72 -356.695 -356.675 -356.642 -356.611 -356.56 -356.482 -356.335 -356 + Bin 644: -356 -355.808 -355.734 -355.684 -355.623 -355.59 -355.558 -355.515 -355.442 -355.32 -355 + Bin 645: -355 -354.714 -354.652 -354.638 -354.626 -354.612 -354.568 -354.528 -354.452 -354.306 -354 + Bin 646: -354 -353.728 -353.624 -353.571 -353.552 -353.533 -353.51 -353.465 -353.411 -353.319 -353 + Bin 647: -353 -352.706 -352.578 -352.525 -352.495 -352.472 -352.432 -352.397 -352.346 -352.256 -352 + Bin 648: -352 -351.711 -351.633 -351.593 -351.559 -351.516 -351.495 -351.457 -351.392 -351.278 -351 + Bin 649: -351 -350.764 -350.69 -350.655 -350.636 -350.616 -350.576 -350.532 -350.465 -350.328 -350 + Bin 650: -350 -349.788 -349.717 -349.679 -349.645 -349.596 -349.569 -349.531 -349.467 -349.356 -349 + Bin 651: -349 -348.748 -348.671 -348.638 -348.618 -348.598 -348.551 -348.505 -348.446 -348.336 -348 + Bin 652: -348 -347.781 -347.715 -347.66 -347.621 -347.574 -347.538 -347.491 -347.433 -347.33 -347 + Bin 653: -347 -346.785 -346.709 -346.662 -346.624 -346.577 -346.545 -346.497 -346.436 -346.34 -346 + Bin 654: -346 -345.796 -345.723 -345.667 -345.626 -345.578 -345.545 -345.504 -345.434 -345.325 -345 + Bin 655: -345 -344.786 -344.717 -344.673 -344.642 -344.615 -344.565 -344.52 -344.456 -344.343 -344 + Bin 656: -344 -343.775 -343.723 -343.703 -343.686 -343.651 -343.629 -343.594 -343.531 -343.399 -343 + Bin 657: -343 -342.796 -342.731 -342.681 -342.649 -342.608 -342.578 -342.53 -342.462 -342.342 -342 + Bin 658: -342 -341.759 -341.694 -341.655 -341.627 -341.601 -341.55 -341.509 -341.45 -341.336 -341 + Bin 659: -341 -340.724 -340.653 -340.61 -340.575 -340.533 -340.509 -340.469 -340.412 -340.302 -340 + Bin 660: -340 -339.766 -339.703 -339.664 -339.634 -339.589 -339.561 -339.52 -339.453 -339.334 -339 + Bin 661: -339 -338.767 -338.706 -338.67 -338.641 -338.618 -338.572 -338.526 -338.458 -338.326 -338 + Bin 662: -338 -337.737 -337.673 -337.647 -337.618 -337.578 -337.553 -337.517 -337.455 -337.331 -337 + Bin 663: -337 -336.777 -336.715 -336.681 -336.651 -336.611 -336.581 -336.539 -336.475 -336.343 -336 + Bin 664: -336 -335.749 -335.684 -335.64 -335.607 -335.564 -335.536 -335.494 -335.429 -335.316 -335 + Bin 665: -335 -334.744 -334.674 -334.631 -334.597 -334.57 -334.524 -334.481 -334.418 -334.31 -334 + Bin 666: -334 -333.782 -333.722 -333.681 -333.645 -333.6 -333.569 -333.525 -333.457 -333.34 -333 + Bin 667: -333 -332.786 -332.728 -332.695 -332.665 -332.621 -332.591 -332.544 -332.474 -332.344 -332 + Bin 668: -332 -331.769 -331.709 -331.671 -331.634 -331.594 -331.563 -331.522 -331.457 -331.342 -331 + Bin 669: -331 -330.751 -330.68 -330.651 -330.624 -330.607 -330.562 -330.523 -330.464 -330.348 -330 + Bin 670: -330 -329.76 -329.695 -329.649 -329.612 -329.563 -329.538 -329.5 -329.441 -329.329 -329 + Bin 671: -329 -328.742 -328.675 -328.635 -328.604 -328.575 -328.529 -328.485 -328.417 -328.309 -328 + Bin 672: -328 -327.744 -327.671 -327.62 -327.583 -327.541 -327.51 -327.468 -327.413 -327.306 -327 + Bin 673: -327 -326.767 -326.691 -326.645 -326.61 -326.582 -326.534 -326.487 -326.419 -326.32 -326 + Bin 674: -326 -325.745 -325.667 -325.611 -325.568 -325.532 -325.497 -325.452 -325.392 -325.3 -325 + Bin 675: -325 -324.768 -324.697 -324.653 -324.618 -324.576 -324.537 -324.487 -324.422 -324.32 -324 + Bin 676: -324 -323.769 -323.687 -323.64 -323.601 -323.559 -323.52 -323.469 -323.4 -323.304 -323 + Bin 677: -323 -322.766 -322.687 -322.637 -322.596 -322.555 -322.515 -322.465 -322.402 -322.31 -322 + Bin 678: -322 -321.784 -321.697 -321.643 -321.599 -321.551 -321.515 -321.467 -321.402 -321.301 -321 + Bin 679: -321 -320.762 -320.684 -320.631 -320.588 -320.537 -320.502 -320.456 -320.39 -320.293 -320 + Bin 680: -320 -319.729 -319.637 -319.582 -319.542 -319.508 -319.464 -319.418 -319.361 -319.256 -319 + Bin 681: -319 -318.729 -318.639 -318.584 -318.545 -318.503 -318.47 -318.419 -318.354 -318.257 -318 + Bin 682: -318 -317.762 -317.69 -317.644 -317.608 -317.565 -317.523 -317.469 -317.405 -317.308 -317 + Bin 683: -317 -316.785 -316.708 -316.649 -316.604 -316.561 -316.519 -316.476 -316.413 -316.311 -316 + Bin 684: -316 -315.783 -315.706 -315.653 -315.611 -315.569 -315.533 -315.483 -315.412 -315.303 -315 + Bin 685: -315 -314.76 -314.683 -314.634 -314.595 -314.565 -314.511 -314.453 -314.38 -314.265 -314 + Bin 686: -314 -313.766 -313.684 -313.636 -313.6 -313.565 -313.525 -313.474 -313.399 -313.291 -313 + Bin 687: -313 -312.753 -312.667 -312.606 -312.563 -312.533 -312.501 -312.469 -312.422 -312.347 -312 + Bin 688: -312 -311.761 -311.662 -311.609 -311.576 -311.541 -311.52 -311.492 -311.452 -311.358 -311 + Bin 689: -311 -310.807 -310.726 -310.681 -310.643 -310.604 -310.571 -310.527 -310.472 -310.378 -310 + Bin 690: -310 -309.781 -309.686 -309.627 -309.589 -309.561 -309.517 -309.473 -309.41 -309.321 -309 + Bin 691: -309 -308.799 -308.725 -308.68 -308.645 -308.606 -308.566 -308.521 -308.458 -308.344 -308 + Bin 692: -308 -307.755 -307.69 -307.644 -307.61 -307.575 -307.543 -307.498 -307.429 -307.312 -307 + Bin 693: -307 -306.74 -306.636 -306.591 -306.558 -306.526 -306.484 -306.439 -306.373 -306.266 -306 + Bin 694: -306 -305.727 -305.645 -305.602 -305.565 -305.52 -305.486 -305.445 -305.386 -305.275 -305 + Bin 695: -305 -304.684 -304.559 -304.509 -304.48 -304.457 -304.419 -304.38 -304.324 -304.22 -304 + Bin 696: -304 -303.8 -303.707 -303.667 -303.643 -303.623 -303.574 -303.503 -303.413 -303.228 -303 + Bin 697: -303 -302.943 -302.906 -302.855 -302.793 -302.731 -302.456 -302.211 -302.117 -302.058 -302 + Bin 698: -302 -301.774 -301.574 -301.417 -301.308 -301.223 -301.073 -301.007 -301.004 -301.001 -301 + Bin 699: -301 -300.959 -300.905 -300.851 -300.838 -300.838 -300.838 -300.811 -300.716 -300.527 -300 + Bin 700: -300 -299.974 -299.902 -299.756 -299.61 -299.53 -299.482 -299.407 -299.302 -299.169 -299 + Bin 701: -299 -298.935 -298.855 -298.605 -298.332 -298.267 -298.247 -298.233 -298.207 -298.151 -298 + Bin 702: -298 -297.718 -297.576 -297.523 -297.481 -297.436 -297.399 -297.36 -297.299 -297.208 -297 + Bin 703: -297 -296.83 -296.767 -296.737 -296.711 -296.679 -296.638 -296.582 -296.484 -296.326 -296 + Bin 704: -296 -295.786 -295.725 -295.691 -295.66 -295.622 -295.586 -295.535 -295.456 -295.326 -295 + Bin 705: -295 -294.682 -294.563 -294.513 -294.48 -294.452 -294.412 -294.374 -294.311 -294.215 -294 + Bin 706: -294 -293.747 -293.638 -293.592 -293.562 -293.528 -293.494 -293.447 -293.374 -293.262 -293 + Bin 707: -293 -292.772 -292.695 -292.664 -292.634 -292.601 -292.561 -292.504 -292.42 -292.299 -292 + Bin 708: -292 -291.781 -291.71 -291.678 -291.65 -291.608 -291.57 -291.51 -291.428 -291.297 -291 + Bin 709: -291 -290.75 -290.664 -290.627 -290.602 -290.565 -290.533 -290.486 -290.418 -290.289 -290 + Bin 710: -290 -289.732 -289.627 -289.584 -289.554 -289.526 -289.48 -289.427 -289.353 -289.225 -289 + Bin 711: -289 -288.754 -288.639 -288.591 -288.564 -288.539 -288.492 -288.444 -288.371 -288.253 -288 + Bin 712: -288 -287.761 -287.679 -287.646 -287.61 -287.565 -287.52 -287.467 -287.388 -287.265 -287 + Bin 713: -287 -286.765 -286.667 -286.628 -286.597 -286.569 -286.519 -286.468 -286.388 -286.271 -286 + Bin 714: -286 -285.746 -285.655 -285.618 -285.584 -285.541 -285.498 -285.442 -285.364 -285.25 -285 + Bin 715: -285 -284.781 -284.694 -284.658 -284.627 -284.587 -284.541 -284.485 -284.407 -284.277 -284 + Bin 716: -284 -283.754 -283.667 -283.634 -283.61 -283.57 -283.537 -283.489 -283.421 -283.292 -283 + Bin 717: -283 -282.744 -282.629 -282.581 -282.553 -282.531 -282.493 -282.451 -282.376 -282.248 -282 + Bin 718: -282 -281.75 -281.645 -281.605 -281.58 -281.554 -281.508 -281.459 -281.39 -281.266 -281 + Bin 719: -281 -280.768 -280.69 -280.658 -280.628 -280.59 -280.551 -280.499 -280.425 -280.293 -280 + Bin 720: -280 -279.772 -279.707 -279.677 -279.649 -279.609 -279.577 -279.533 -279.455 -279.314 -279 + Bin 721: -279 -278.733 -278.656 -278.626 -278.606 -278.58 -278.53 -278.486 -278.411 -278.284 -278 + Bin 722: -278 -277.77 -277.693 -277.66 -277.64 -277.611 -277.582 -277.536 -277.461 -277.326 -277 + Bin 723: -277 -276.759 -276.695 -276.664 -276.632 -276.591 -276.558 -276.506 -276.434 -276.305 -276 + Bin 724: -276 -275.737 -275.646 -275.615 -275.592 -275.572 -275.53 -275.485 -275.415 -275.294 -275 + Bin 725: -275 -274.704 -274.626 -274.589 -274.554 -274.512 -274.478 -274.432 -274.368 -274.258 -274 + Bin 726: -274 -273.72 -273.624 -273.585 -273.556 -273.529 -273.48 -273.435 -273.362 -273.248 -273 + Bin 727: -273 -272.74 -272.635 -272.595 -272.567 -272.529 -272.494 -272.442 -272.373 -272.256 -272 + Bin 728: -272 -271.77 -271.699 -271.664 -271.636 -271.594 -271.555 -271.506 -271.436 -271.308 -271 + Bin 729: -271 -270.724 -270.644 -270.599 -270.566 -270.53 -270.48 -270.434 -270.362 -270.245 -270 + Bin 730: -270 -269.75 -269.655 -269.617 -269.587 -269.549 -269.515 -269.467 -269.398 -269.273 -269 + Bin 731: -269 -268.729 -268.646 -268.608 -268.575 -268.534 -268.495 -268.446 -268.371 -268.26 -268 + Bin 732: -268 -267.732 -267.64 -267.601 -267.57 -267.537 -267.489 -267.432 -267.362 -267.248 -267 + Bin 733: -267 -266.735 -266.639 -266.602 -266.573 -266.531 -266.495 -266.438 -266.367 -266.251 -266 + Bin 734: -266 -265.785 -265.712 -265.677 -265.647 -265.609 -265.569 -265.509 -265.424 -265.295 -265 + Bin 735: -265 -264.845 -264.797 -264.768 -264.735 -264.714 -264.679 -264.617 -264.523 -264.367 -264 + Bin 736: -264 -263.839 -263.794 -263.765 -263.744 -263.712 -263.683 -263.642 -263.565 -263.397 -263 + Bin 737: -263 -262.731 -262.668 -262.637 -262.605 -262.578 -262.538 -262.498 -262.433 -262.315 -262 + Bin 738: -262 -261.704 -261.61 -261.577 -261.558 -261.538 -261.502 -261.465 -261.409 -261.286 -261 + Bin 739: -261 -260.753 -260.699 -260.664 -260.627 -260.594 -260.568 -260.522 -260.454 -260.32 -260 + Bin 740: -260 -259.813 -259.764 -259.735 -259.717 -259.688 -259.656 -259.611 -259.526 -259.359 -259 + Bin 741: -259 -258.752 -258.676 -258.647 -258.629 -258.599 -258.574 -258.537 -258.47 -258.334 -258 + Bin 742: -258 -257.724 -257.63 -257.6 -257.581 -257.563 -257.53 -257.492 -257.431 -257.301 -257 + Bin 743: -257 -256.805 -256.75 -256.731 -256.713 -256.686 -256.654 -256.594 -256.472 -256.218 -256 + Bin 744: -256 -255.645 -255.44 -255.293 -255.184 -255.117 -255.098 -255.083 -255.063 -255.036 -255 + Bin 745: -255 -254.991 -254.975 -254.94 -254.846 -254.503 -254.135 -254.05 -254.023 -254.011 -254 + Bin 746: -254 -253.977 -253.959 -253.944 -253.935 -253.927 -253.874 -253.819 -253.726 -253.552 -253 + Bin 747: -253 -252.74 -252.579 -252.501 -252.474 -252.452 -252.419 -252.393 -252.348 -252.248 -252 + Bin 748: -252 -251.757 -251.68 -251.649 -251.63 -251.592 -251.569 -251.53 -251.469 -251.325 -251 + Bin 749: -251 -250.771 -250.698 -250.667 -250.647 -250.629 -250.59 -250.551 -250.487 -250.348 -250 + Bin 750: -250 -249.746 -249.666 -249.635 -249.611 -249.589 -249.546 -249.502 -249.435 -249.308 -249 + Bin 751: -249 -248.768 -248.676 -248.636 -248.612 -248.579 -248.565 -248.539 -248.48 -248.342 -248 + Bin 752: -248 -247.752 -247.659 -247.625 -247.606 -247.59 -247.555 -247.531 -247.483 -247.363 -247 + Bin 753: -247 -246.727 -246.646 -246.612 -246.591 -246.553 -246.531 -246.499 -246.439 -246.322 -246 + Bin 754: -246 -245.739 -245.656 -245.627 -245.608 -245.595 -245.558 -245.524 -245.467 -245.348 -245 + Bin 755: -245 -244.757 -244.705 -244.667 -244.632 -244.591 -244.561 -244.517 -244.447 -244.31 -244 + Bin 756: -244 -243.762 -243.688 -243.659 -243.64 -243.607 -243.586 -243.551 -243.483 -243.352 -243 + Bin 757: -243 -242.722 -242.634 -242.603 -242.582 -242.566 -242.527 -242.497 -242.44 -242.316 -242 + Bin 758: -242 -241.74 -241.631 -241.591 -241.574 -241.561 -241.528 -241.501 -241.442 -241.319 -241 + Bin 759: -241 -240.778 -240.696 -240.661 -240.643 -240.612 -240.594 -240.563 -240.5 -240.35 -240 + Bin 760: -240 -239.778 -239.7 -239.669 -239.652 -239.619 -239.599 -239.566 -239.5 -239.367 -239 + Bin 761: -239 -238.747 -238.658 -238.628 -238.607 -238.59 -238.549 -238.518 -238.449 -238.315 -238 + Bin 762: -238 -237.737 -237.648 -237.613 -237.595 -237.56 -237.544 -237.514 -237.456 -237.333 -237 + Bin 763: -237 -236.756 -236.667 -236.631 -236.613 -236.6 -236.562 -236.532 -236.471 -236.342 -236 + Bin 764: -236 -235.734 -235.64 -235.608 -235.588 -235.554 -235.535 -235.5 -235.442 -235.316 -235 + Bin 765: -235 -234.745 -234.651 -234.608 -234.59 -234.577 -234.544 -234.516 -234.451 -234.307 -234 + Bin 766: -234 -233.776 -233.692 -233.655 -233.634 -233.602 -233.589 -233.569 -233.515 -233.384 -233 + Bin 767: -233 -232.725 -232.632 -232.596 -232.578 -232.56 -232.53 -232.496 -232.436 -232.318 -232 + Bin 768: -232 -231.747 -231.665 -231.634 -231.614 -231.601 -231.567 -231.54 -231.483 -231.359 -231 + Bin 769: -231 -230.736 -230.647 -230.615 -230.598 -230.564 -230.546 -230.516 -230.456 -230.335 -230 + Bin 770: -230 -229.756 -229.668 -229.635 -229.616 -229.603 -229.569 -229.54 -229.487 -229.367 -229 + Bin 771: -229 -228.759 -228.677 -228.639 -228.623 -228.593 -228.58 -228.555 -228.502 -228.373 -228 + Bin 772: -228 -227.755 -227.678 -227.65 -227.631 -227.62 -227.588 -227.558 -227.496 -227.36 -227 + Bin 773: -227 -226.759 -226.688 -226.659 -226.642 -226.609 -226.589 -226.554 -226.489 -226.356 -226 + Bin 774: -226 -225.752 -225.673 -225.637 -225.618 -225.603 -225.567 -225.54 -225.483 -225.364 -225 + Bin 775: -225 -224.745 -224.657 -224.623 -224.603 -224.59 -224.555 -224.526 -224.469 -224.338 -224 + Bin 776: -224 -223.761 -223.669 -223.634 -223.61 -223.574 -223.559 -223.533 -223.479 -223.352 -223 + Bin 777: -223 -222.759 -222.673 -222.647 -222.63 -222.616 -222.584 -222.552 -222.493 -222.36 -222 + Bin 778: -222 -221.772 -221.689 -221.651 -221.633 -221.598 -221.583 -221.56 -221.508 -221.381 -221 + Bin 779: -221 -220.748 -220.652 -220.613 -220.594 -220.579 -220.543 -220.518 -220.468 -220.347 -220 + Bin 780: -220 -219.771 -219.681 -219.644 -219.623 -219.595 -219.576 -219.543 -219.469 -219.324 -219 + Bin 781: -219 -218.787 -218.722 -218.699 -218.683 -218.646 -218.624 -218.585 -218.516 -218.378 -218 + Bin 782: -218 -217.723 -217.648 -217.619 -217.597 -217.553 -217.533 -217.501 -217.445 -217.343 -217 + Bin 783: -217 -216.703 -216.65 -216.622 -216.598 -216.58 -216.538 -216.5 -216.445 -216.342 -216 + Bin 784: -216 -215.73 -215.675 -215.647 -215.624 -215.603 -215.563 -215.529 -215.476 -215.371 -215 + Bin 785: -215 -214.719 -214.657 -214.626 -214.6 -214.563 -214.54 -214.506 -214.447 -214.34 -214 + Bin 786: -214 -213.738 -213.681 -213.651 -213.628 -213.61 -213.573 -213.536 -213.477 -213.365 -213 + Bin 787: -213 -212.724 -212.628 -212.594 -212.577 -212.565 -212.534 -212.504 -212.454 -212.344 -212 + Bin 788: -212 -211.737 -211.664 -211.639 -211.623 -211.595 -211.578 -211.546 -211.491 -211.362 -211 + Bin 789: -211 -210.757 -210.691 -210.666 -210.649 -210.632 -210.588 -210.556 -210.499 -210.373 -210 + Bin 790: -210 -209.74 -209.661 -209.63 -209.609 -209.575 -209.554 -209.523 -209.467 -209.348 -209 + Bin 791: -209 -208.764 -208.677 -208.646 -208.626 -208.599 -208.58 -208.557 -208.5 -208.366 -208 + Bin 792: -208 -207.758 -207.669 -207.626 -207.606 -207.592 -207.555 -207.531 -207.481 -207.364 -207 + Bin 793: -207 -206.734 -206.644 -206.612 -206.594 -206.579 -206.543 -206.508 -206.452 -206.343 -206 + Bin 794: -206 -205.722 -205.632 -205.602 -205.582 -205.549 -205.53 -205.494 -205.436 -205.32 -205 + Bin 795: -205 -204.762 -204.68 -204.647 -204.63 -204.616 -204.581 -204.546 -204.469 -204.337 -204 + Bin 796: -204 -203.774 -203.706 -203.675 -203.646 -203.612 -203.584 -203.546 -203.484 -203.353 -203 + Bin 797: -203 -202.76 -202.696 -202.659 -202.622 -202.574 -202.546 -202.509 -202.454 -202.341 -202 + Bin 798: -202 -201.773 -201.71 -201.683 -201.661 -201.641 -201.592 -201.55 -201.478 -201.331 -201 + Bin 799: -201 -200.799 -200.726 -200.694 -200.676 -200.648 -200.632 -200.601 -200.545 -200.401 -200 + Bin 800: -200 -199.723 -199.636 -199.598 -199.579 -199.563 -199.534 -199.511 -199.458 -199.338 -199 + Bin 801: -199 -198.735 -198.649 -198.615 -198.595 -198.569 -198.552 -198.525 -198.47 -198.354 -198 + Bin 802: -198 -197.716 -197.624 -197.59 -197.572 -197.538 -197.52 -197.486 -197.428 -197.31 -197 + Bin 803: -197 -196.744 -196.653 -196.612 -196.586 -196.555 -196.541 -196.513 -196.461 -196.338 -196 + Bin 804: -196 -195.729 -195.631 -195.594 -195.574 -195.564 -195.53 -195.502 -195.443 -195.324 -195 + Bin 805: -195 -194.746 -194.651 -194.615 -194.594 -194.568 -194.545 -194.52 -194.464 -194.342 -194 + Bin 806: -194 -193.727 -193.634 -193.603 -193.585 -193.555 -193.535 -193.502 -193.448 -193.321 -193 + Bin 807: -193 -192.74 -192.649 -192.618 -192.599 -192.571 -192.552 -192.517 -192.458 -192.332 -192 + Bin 808: -192 -191.752 -191.645 -191.603 -191.582 -191.553 -191.54 -191.516 -191.463 -191.345 -191 + Bin 809: -191 -190.732 -190.635 -190.594 -190.573 -190.558 -190.521 -190.49 -190.429 -190.309 -190 + Bin 810: -190 -189.742 -189.651 -189.614 -189.597 -189.562 -189.541 -189.497 -189.433 -189.306 -189 + Bin 811: -189 -188.745 -188.639 -188.602 -188.581 -188.569 -188.534 -188.506 -188.454 -188.341 -188 + Bin 812: -188 -187.726 -187.65 -187.61 -187.575 -187.547 -187.503 -187.461 -187.399 -187.287 -187 + Bin 813: -187 -186.745 -186.662 -186.631 -186.606 -186.567 -186.54 -186.499 -186.438 -186.313 -186 + Bin 814: -186 -185.734 -185.651 -185.623 -185.608 -185.59 -185.549 -185.514 -185.456 -185.341 -185 + Bin 815: -185 -184.758 -184.69 -184.663 -184.646 -184.613 -184.589 -184.553 -184.494 -184.369 -184 + Bin 816: -184 -183.715 -183.648 -183.622 -183.598 -183.578 -183.535 -183.488 -183.424 -183.312 -183 + Bin 817: -183 -182.713 -182.61 -182.574 -182.554 -182.54 -182.513 -182.483 -182.425 -182.308 -182 + Bin 818: -182 -181.747 -181.674 -181.644 -181.622 -181.589 -181.569 -181.532 -181.464 -181.336 -181 + Bin 819: -181 -180.744 -180.674 -180.641 -180.626 -180.611 -180.572 -180.537 -180.467 -180.336 -180 + Bin 820: -180 -179.725 -179.639 -179.605 -179.587 -179.554 -179.537 -179.505 -179.445 -179.321 -179 + Bin 821: -179 -178.721 -178.632 -178.597 -178.575 -178.559 -178.521 -178.49 -178.428 -178.318 -178 + Bin 822: -178 -177.73 -177.636 -177.598 -177.577 -177.546 -177.522 -177.486 -177.422 -177.288 -177 + Bin 823: -177 -176.753 -176.663 -176.623 -176.602 -176.576 -176.563 -176.537 -176.484 -176.355 -176 + Bin 824: -176 -175.753 -175.66 -175.628 -175.61 -175.595 -175.554 -175.513 -175.435 -175.301 -175 + Bin 825: -175 -174.768 -174.693 -174.659 -174.634 -174.601 -174.58 -174.545 -174.482 -174.342 -174 + Bin 826: -174 -173.741 -173.653 -173.617 -173.597 -173.58 -173.546 -173.506 -173.436 -173.311 -173 + Bin 827: -173 -172.718 -172.61 -172.571 -172.548 -172.52 -172.493 -172.457 -172.395 -172.277 -172 + Bin 828: -172 -171.734 -171.629 -171.588 -171.563 -171.528 -171.503 -171.468 -171.41 -171.295 -171 + Bin 829: -171 -170.737 -170.64 -170.603 -170.582 -170.568 -170.531 -170.495 -170.421 -170.29 -170 + Bin 830: -170 -169.751 -169.65 -169.611 -169.589 -169.552 -169.529 -169.494 -169.436 -169.309 -169 + Bin 831: -169 -168.73 -168.627 -168.589 -168.566 -168.538 -168.518 -168.486 -168.422 -168.291 -168 + Bin 832: -168 -167.723 -167.634 -167.596 -167.577 -167.552 -167.532 -167.503 -167.442 -167.323 -167 + Bin 833: -167 -166.741 -166.645 -166.614 -166.591 -166.576 -166.54 -166.502 -166.44 -166.318 -166 + Bin 834: -166 -165.772 -165.709 -165.682 -165.659 -165.621 -165.592 -165.54 -165.464 -165.32 -165 + Bin 835: -165 -164.774 -164.688 -164.653 -164.63 -164.598 -164.581 -164.556 -164.501 -164.366 -164 + Bin 836: -164 -163.775 -163.692 -163.654 -163.637 -163.625 -163.591 -163.555 -163.48 -163.33 -163 + Bin 837: -163 -162.789 -162.71 -162.678 -162.659 -162.624 -162.603 -162.564 -162.49 -162.333 -162 + Bin 838: -162 -161.773 -161.693 -161.66 -161.641 -161.617 -161.587 -161.551 -161.474 -161.341 -161 + Bin 839: -161 -160.775 -160.691 -160.652 -160.623 -160.59 -160.563 -160.519 -160.448 -160.317 -160 + Bin 840: -160 -159.733 -159.656 -159.623 -159.599 -159.575 -159.533 -159.488 -159.413 -159.282 -159 + Bin 841: -159 -158.78 -158.686 -158.64 -158.612 -158.573 -158.542 -158.497 -158.425 -158.31 -158 + Bin 842: -158 -157.782 -157.724 -157.691 -157.667 -157.628 -157.593 -157.541 -157.463 -157.328 -157 + Bin 843: -157 -156.811 -156.756 -156.723 -156.695 -156.661 -156.629 -156.58 -156.502 -156.359 -156 + Bin 844: -156 -155.793 -155.73 -155.702 -155.681 -155.646 -155.619 -155.574 -155.498 -155.358 -155 + Bin 845: -155 -154.739 -154.652 -154.62 -154.6 -154.582 -154.543 -154.508 -154.44 -154.313 -154 + Bin 846: -154 -153.76 -153.664 -153.632 -153.61 -153.581 -153.547 -153.509 -153.433 -153.293 -153 + Bin 847: -153 -152.813 -152.742 -152.71 -152.685 -152.663 -152.639 -152.596 -152.516 -152.339 -152 + Bin 848: -152 -151.788 -151.722 -151.69 -151.668 -151.637 -151.6 -151.55 -151.475 -151.327 -151 + Bin 849: -151 -150.738 -150.645 -150.606 -150.586 -150.566 -150.529 -150.487 -150.419 -150.29 -150 + Bin 850: -150 -149.755 -149.668 -149.636 -149.616 -149.584 -149.558 -149.519 -149.451 -149.314 -149 + Bin 851: -149 -148.741 -148.658 -148.629 -148.607 -148.585 -148.544 -148.505 -148.432 -148.291 -148 + Bin 852: -148 -147.75 -147.659 -147.626 -147.606 -147.57 -147.546 -147.51 -147.443 -147.307 -147 + Bin 853: -147 -146.751 -146.665 -146.627 -146.604 -146.568 -146.541 -146.505 -146.435 -146.295 -146 + Bin 854: -146 -145.724 -145.634 -145.603 -145.582 -145.55 -145.523 -145.481 -145.417 -145.284 -145 + Bin 855: -145 -144.747 -144.652 -144.616 -144.598 -144.582 -144.542 -144.501 -144.424 -144.283 -144 + Bin 856: -144 -143.752 -143.657 -143.619 -143.596 -143.563 -143.539 -143.49 -143.416 -143.272 -143 + Bin 857: -143 -142.758 -142.654 -142.619 -142.599 -142.583 -142.544 -142.507 -142.436 -142.299 -142 + Bin 858: -142 -141.75 -141.655 -141.615 -141.594 -141.573 -141.531 -141.486 -141.416 -141.274 -141 + Bin 859: -141 -140.775 -140.684 -140.647 -140.625 -140.591 -140.566 -140.527 -140.453 -140.303 -140 + Bin 860: -140 -139.751 -139.658 -139.625 -139.602 -139.565 -139.536 -139.494 -139.42 -139.282 -139 + Bin 861: -139 -138.77 -138.668 -138.623 -138.598 -138.58 -138.544 -138.508 -138.434 -138.29 -138 + Bin 862: -138 -137.749 -137.665 -137.619 -137.587 -137.547 -137.526 -137.495 -137.442 -137.321 -137 + Bin 863: -137 -136.701 -136.566 -136.514 -136.485 -136.467 -136.445 -136.413 -136.361 -136.258 -136 + Bin 864: -136 -135.731 -135.636 -135.598 -135.567 -135.529 -135.508 -135.473 -135.412 -135.296 -135 + Bin 865: -135 -134.745 -134.66 -134.628 -134.608 -134.593 -134.557 -134.521 -134.458 -134.333 -134 + Bin 866: -134 -133.758 -133.675 -133.64 -133.621 -133.589 -133.569 -133.536 -133.471 -133.34 -133 + Bin 867: -133 -132.755 -132.686 -132.657 -132.635 -132.601 -132.581 -132.54 -132.471 -132.341 -132 + Bin 868: -132 -131.745 -131.646 -131.599 -131.568 -131.55 -131.518 -131.494 -131.447 -131.33 -131 + Bin 869: -131 -130.743 -130.665 -130.631 -130.609 -130.575 -130.552 -130.512 -130.442 -130.317 -130 + Bin 870: -130 -129.758 -129.675 -129.641 -129.619 -129.587 -129.569 -129.535 -129.466 -129.331 -129 + Bin 871: -129 -128.733 -128.64 -128.598 -128.575 -128.559 -128.521 -128.488 -128.434 -128.313 -128 + Bin 872: -128 -127.752 -127.649 -127.606 -127.583 -127.552 -127.528 -127.493 -127.429 -127.299 -127 + Bin 873: -127 -126.751 -126.657 -126.622 -126.602 -126.585 -126.547 -126.508 -126.434 -126.297 -126 + Bin 874: -126 -125.752 -125.652 -125.608 -125.587 -125.557 -125.538 -125.507 -125.452 -125.339 -125 + Bin 875: -125 -124.717 -124.621 -124.588 -124.568 -124.552 -124.514 -124.477 -124.414 -124.29 -124 + Bin 876: -124 -123.785 -123.721 -123.688 -123.661 -123.626 -123.598 -123.551 -123.474 -123.333 -123 + Bin 877: -123 -122.759 -122.687 -122.653 -122.629 -122.595 -122.566 -122.518 -122.444 -122.311 -122 + Bin 878: -122 -121.738 -121.653 -121.619 -121.597 -121.577 -121.536 -121.49 -121.42 -121.294 -121 + Bin 879: -121 -120.772 -120.702 -120.668 -120.641 -120.607 -120.576 -120.531 -120.457 -120.319 -120 + Bin 880: -120 -119.742 -119.674 -119.642 -119.62 -119.597 -119.554 -119.514 -119.451 -119.321 -119 + Bin 881: -119 -118.72 -118.638 -118.604 -118.577 -118.554 -118.517 -118.478 -118.414 -118.292 -118 + Bin 882: -118 -117.749 -117.672 -117.642 -117.622 -117.587 -117.561 -117.52 -117.453 -117.331 -117 + Bin 883: -117 -116.73 -116.661 -116.629 -116.596 -116.573 -116.531 -116.487 -116.419 -116.301 -116 + Bin 884: -116 -115.735 -115.66 -115.619 -115.591 -115.55 -115.521 -115.479 -115.411 -115.292 -115 + Bin 885: -115 -114.741 -114.649 -114.615 -114.589 -114.55 -114.522 -114.476 -114.414 -114.294 -114 + Bin 886: -114 -113.747 -113.672 -113.637 -113.608 -113.571 -113.534 -113.492 -113.424 -113.3 -113 + Bin 887: -113 -112.744 -112.674 -112.636 -112.604 -112.576 -112.53 -112.486 -112.417 -112.291 -112 + Bin 888: -112 -111.732 -111.648 -111.606 -111.574 -111.537 -111.508 -111.464 -111.399 -111.285 -111 + Bin 889: -111 -110.718 -110.627 -110.592 -110.568 -110.545 -110.501 -110.46 -110.399 -110.288 -110 + Bin 890: -110 -109.742 -109.669 -109.63 -109.598 -109.56 -109.528 -109.482 -109.415 -109.297 -109 + Bin 891: -109 -108.751 -108.679 -108.637 -108.603 -108.563 -108.528 -108.481 -108.414 -108.303 -108 + Bin 892: -108 -107.742 -107.663 -107.624 -107.591 -107.556 -107.519 -107.473 -107.404 -107.282 -107 + Bin 893: -107 -106.743 -106.657 -106.619 -106.593 -106.56 -106.532 -106.491 -106.418 -106.288 -106 + Bin 894: -106 -105.759 -105.689 -105.651 -105.626 -105.587 -105.559 -105.518 -105.447 -105.322 -105 + Bin 895: -105 -104.743 -104.667 -104.638 -104.615 -104.583 -104.559 -104.525 -104.465 -104.348 -104 + Bin 896: -104 -103.707 -103.63 -103.59 -103.557 -103.529 -103.489 -103.447 -103.382 -103.27 -103 + Bin 897: -103 -102.725 -102.653 -102.619 -102.592 -102.561 -102.532 -102.495 -102.432 -102.318 -102 + Bin 898: -102 -101.708 -101.63 -101.592 -101.562 -101.539 -101.503 -101.462 -101.402 -101.293 -101 + Bin 899: -101 -100.728 -100.654 -100.617 -100.591 -100.557 -100.53 -100.488 -100.425 -100.307 -100 + Bin 900: -100 -99.7298 -99.6545 -99.62 -99.5957 -99.5624 -99.5357 -99.4954 -99.4328 -99.3156 -99 + Bin 901: -99 -98.7037 -98.6301 -98.593 -98.5706 -98.5477 -98.5115 -98.4703 -98.4105 -98.2983 -98 + Bin 902: -98 -97.7494 -97.6855 -97.6519 -97.6205 -97.5827 -97.5531 -97.5113 -97.4465 -97.3262 -97 + Bin 903: -97 -96.7276 -96.6496 -96.6048 -96.5681 -96.5393 -96.4954 -96.4483 -96.3815 -96.2724 -96 + Bin 904: -96 -95.7241 -95.6347 -95.5934 -95.5643 -95.5295 -95.5051 -95.4654 -95.4014 -95.2906 -95 + Bin 905: -95 -94.7221 -94.6509 -94.6134 -94.5815 -94.5567 -94.5148 -94.4727 -94.4135 -94.3091 -94 + Bin 906: -94 -93.7188 -93.6388 -93.5968 -93.5673 -93.5289 -93.4961 -93.458 -93.4004 -93.2961 -93 + Bin 907: -93 -92.7477 -92.6573 -92.6157 -92.5898 -92.5554 -92.5256 -92.4832 -92.4136 -92.2848 -92 + Bin 908: -92 -91.7477 -91.6528 -91.612 -91.5862 -91.5564 -91.5295 -91.4848 -91.4145 -91.2841 -91 + Bin 909: -91 -90.7307 -90.6512 -90.6171 -90.5929 -90.5525 -90.5256 -90.4865 -90.4265 -90.3053 -90 + Bin 910: -90 -89.7399 -89.647 -89.6108 -89.5899 -89.5728 -89.5405 -89.5066 -89.4358 -89.3025 -89 + Bin 911: -89 -88.7792 -88.7113 -88.6832 -88.6596 -88.6345 -88.6089 -88.5667 -88.4963 -88.3393 -88 + Bin 912: -88 -87.7441 -87.675 -87.6397 -87.6162 -87.5941 -87.5496 -87.5066 -87.4363 -87.3155 -87 + Bin 913: -87 -86.7139 -86.619 -86.5771 -86.5474 -86.5139 -86.4889 -86.4519 -86.3955 -86.2873 -86 + Bin 914: -86 -85.6958 -85.6106 -85.5748 -85.5453 -85.5207 -85.4824 -85.4411 -85.3782 -85.2716 -85 + Bin 915: -85 -84.7136 -84.6229 -84.5811 -84.5589 -84.5385 -84.5028 -84.4676 -84.4087 -84.2904 -84 + Bin 916: -84 -83.6908 -83.582 -83.5366 -83.5118 -83.4782 -83.4579 -83.4306 -83.3756 -83.2564 -83 + Bin 917: -83 -82.7464 -82.6271 -82.5664 -82.5407 -82.5133 -82.4938 -82.4664 -82.4055 -82.2814 -82 + Bin 918: -82 -81.7571 -81.6383 -81.585 -81.5558 -81.5324 -81.4994 -81.4636 -81.3935 -81.2543 -81 + Bin 919: -81 -80.8036 -80.7206 -80.6566 -80.6028 -80.5542 -80.5051 -80.4433 -80.363 -80.2519 -80 + Bin 920: -80 -79.8307 -79.775 -79.7367 -79.7051 -79.662 -79.6252 -79.5715 -79.4918 -79.3491 -79 + Bin 921: -79 -78.7929 -78.7344 -78.6999 -78.6691 -78.6311 -78.5899 -78.5426 -78.4653 -78.3241 -78 + Bin 922: -78 -77.7354 -77.6532 -77.6196 -77.5934 -77.5619 -77.5384 -77.4952 -77.4249 -77.301 -77 + Bin 923: -77 -76.7022 -76.6128 -76.5769 -76.5498 -76.5224 -76.4829 -76.4455 -76.3791 -76.26 -76 + Bin 924: -76 -75.7171 -75.5844 -75.5262 -75.4951 -75.4739 -75.4428 -75.4129 -75.3567 -75.251 -75 + Bin 925: -75 -74.7921 -74.6611 -74.593 -74.5557 -74.5329 -74.503 -74.4649 -74.3845 -74.2408 -74 + Bin 926: -74 -73.8281 -73.748 -73.6797 -73.625 -73.5803 -73.5177 -73.4508 -73.3693 -73.2526 -73 + Bin 927: -73 -72.8495 -72.7983 -72.7629 -72.7274 -72.6874 -72.6436 -72.5796 -72.475 -72.3063 -72 + Bin 928: -72 -71.8121 -71.7507 -71.7211 -71.7036 -71.6899 -71.6492 -71.6109 -71.5316 -71.3535 -71 + Bin 929: -71 -70.802 -70.7338 -70.7029 -70.6769 -70.6492 -70.6197 -70.5754 -70.4986 -70.3333 -70 + Bin 930: -70 -69.7668 -69.6835 -69.6472 -69.6253 -69.6078 -69.5742 -69.5399 -69.4729 -69.3292 -69 + Bin 931: -69 -68.776 -68.6775 -68.6341 -68.6136 -68.5851 -68.5673 -68.5377 -68.472 -68.3343 -68 + Bin 932: -68 -67.7831 -67.694 -67.6561 -67.6312 -67.612 -67.5767 -67.5363 -67.4638 -67.3173 -67 + Bin 933: -67 -66.7878 -66.6934 -66.6496 -66.6238 -66.595 -66.5737 -66.5379 -66.4681 -66.3086 -66 + Bin 934: -66 -65.7981 -65.7126 -65.67 -65.6469 -65.6193 -65.5974 -65.5606 -65.4838 -65.3117 -65 + Bin 935: -65 -64.8031 -64.718 -64.6784 -64.6547 -64.6273 -64.6049 -64.5693 -64.4996 -64.3314 -64 + Bin 936: -64 -63.789 -63.6984 -63.6608 -63.6345 -63.6016 -63.5818 -63.5508 -63.4863 -63.3424 -63 + Bin 937: -63 -62.7476 -62.662 -62.6228 -62.5982 -62.5639 -62.5394 -62.5015 -62.4371 -62.3135 -62 + Bin 938: -62 -61.7536 -61.6698 -61.6308 -61.5988 -61.5696 -61.5275 -61.4795 -61.4058 -61.2744 -61 + Bin 939: -61 -60.7643 -60.6936 -60.649 -60.6127 -60.5754 -60.5396 -60.4899 -60.42 -60.2909 -60 + Bin 940: -60 -59.7474 -59.663 -59.6236 -59.5919 -59.5616 -59.5183 -59.4757 -59.4103 -59.2922 -59 + Bin 941: -59 -58.7524 -58.6604 -58.6279 -58.6012 -58.5579 -58.5268 -58.4818 -58.4093 -58.2676 -58 + Bin 942: -58 -57.7584 -57.6482 -57.6107 -57.5912 -57.5559 -57.5281 -57.4842 -57.4116 -57.2795 -57 + Bin 943: -57 -56.7689 -56.6349 -56.5559 -56.521 -56.5033 -56.4716 -56.4308 -56.3546 -56.2282 -56 + Bin 944: -56 -55.7925 -55.6977 -55.6495 -55.6266 -55.6006 -55.5804 -55.5439 -55.4714 -55.3172 -55 + Bin 945: -55 -54.7837 -54.6905 -54.6422 -54.6097 -54.5935 -54.5648 -54.5358 -54.473 -54.336 -54 + Bin 946: -54 -53.794 -53.6884 -53.6339 -53.599 -53.5646 -53.544 -53.5221 -53.474 -53.3494 -53 + Bin 947: -53 -52.774 -52.6722 -52.6198 -52.5865 -52.5525 -52.5357 -52.5124 -52.4636 -52.3369 -52 + Bin 948: -52 -51.7874 -51.6808 -51.6228 -51.5867 -51.5617 -51.5276 -51.5037 -51.4638 -51.3298 -51 + Bin 949: -51 -50.799 -50.6999 -50.6446 -50.6107 -50.5746 -50.5562 -50.5337 -50.4817 -50.3428 -50 + Bin 950: -50 -49.7936 -49.6971 -49.6415 -49.6097 -49.5888 -49.5552 -49.5336 -49.4813 -49.3331 -49 + Bin 951: -49 -48.7918 -48.6906 -48.636 -48.6049 -48.5749 -48.5608 -48.5379 -48.4811 -48.3481 -48 + Bin 952: -48 -47.7677 -47.661 -47.6127 -47.5876 -47.5553 -47.5335 -47.4966 -47.4255 -47.2888 -47 + Bin 953: -47 -46.7805 -46.6814 -46.6299 -46.6007 -46.5698 -46.5469 -46.5096 -46.4388 -46.3007 -46 + Bin 954: -46 -45.7871 -45.682 -45.6225 -45.5895 -45.5524 -45.5283 -45.4968 -45.4371 -45.3106 -45 + Bin 955: -45 -44.793 -44.6789 -44.6178 -44.5853 -44.5502 -44.5305 -44.4994 -44.4406 -44.3079 -44 + Bin 956: -44 -43.7721 -43.6743 -43.6229 -43.5961 -43.5655 -43.5477 -43.5174 -43.4507 -43.3057 -43 + Bin 957: -43 -42.7964 -42.7005 -42.6433 -42.6097 -42.5752 -42.5536 -42.527 -42.4794 -42.347 -42 + Bin 958: -42 -41.7835 -41.676 -41.6208 -41.5882 -41.5643 -41.5401 -41.5102 -41.4477 -41.3093 -41 + Bin 959: -41 -40.8041 -40.7163 -40.6668 -40.6389 -40.6056 -40.5881 -40.5604 -40.503 -40.3464 -40 + Bin 960: -40 -39.7942 -39.7109 -39.6644 -39.6386 -39.6071 -39.5871 -39.5609 -39.5201 -39.3928 -39 + Bin 961: -39 -38.7632 -38.6631 -38.6088 -38.5788 -38.5478 -38.5282 -38.5056 -38.4628 -38.3465 -38 + Bin 962: -38 -37.7871 -37.689 -37.6356 -37.5983 -37.5636 -37.5397 -37.5124 -37.4705 -37.3509 -37 + Bin 963: -37 -36.7925 -36.6957 -36.6474 -36.6165 -36.5844 -36.5662 -36.541 -36.4911 -36.3587 -36 + Bin 964: -36 -35.7626 -35.6701 -35.621 -35.5962 -35.5816 -35.5535 -35.5278 -35.4758 -35.349 -35 + Bin 965: -35 -34.7664 -34.6657 -34.6129 -34.5848 -34.5561 -34.5405 -34.519 -34.4645 -34.3395 -34 + Bin 966: -34 -33.7645 -33.6645 -33.6164 -33.5874 -33.5714 -33.5429 -33.5226 -33.4741 -33.3499 -33 + Bin 967: -33 -32.7611 -32.668 -32.6275 -32.6074 -32.5783 -32.5588 -32.5239 -32.4619 -32.327 -32 + Bin 968: -32 -31.7889 -31.698 -31.6504 -31.6226 -31.6054 -31.5756 -31.5482 -31.4913 -31.3439 -31 + Bin 969: -31 -30.776 -30.6807 -30.6355 -30.6078 -30.5763 -30.5566 -30.5298 -30.477 -30.3493 -30 + Bin 970: -30 -29.786 -29.6882 -29.6392 -29.6112 -29.5956 -29.5665 -29.5428 -29.4896 -29.3663 -29 + Bin 971: -29 -28.7823 -28.6902 -28.6384 -28.6088 -28.5773 -28.5591 -28.5381 -28.4835 -28.3501 -28 + Bin 972: -28 -27.7731 -27.6844 -27.6398 -27.62 -27.5917 -27.5728 -27.5398 -27.4786 -27.3398 -27 + Bin 973: -27 -26.7775 -26.6757 -26.6235 -26.5933 -26.5754 -26.5432 -26.5169 -26.4657 -26.3417 -26 + Bin 974: -26 -25.7789 -25.676 -25.6277 -25.5985 -25.5655 -25.5455 -25.517 -25.4646 -25.3266 -25 + Bin 975: -25 -24.8072 -24.7255 -24.6809 -24.653 -24.6206 -24.5988 -24.5721 -24.5221 -24.3587 -24 + Bin 976: -24 -23.8081 -23.73 -23.6938 -23.6675 -23.6371 -23.6159 -23.5848 -23.5216 -23.3703 -23 + Bin 977: -23 -22.7607 -22.6638 -22.6176 -22.5877 -22.5606 -22.545 -22.5169 -22.4616 -22.3237 -22 + Bin 978: -22 -21.7717 -21.6683 -21.6161 -21.585 -21.5671 -21.5369 -21.5122 -21.4636 -21.3378 -21 + Bin 979: -21 -20.7753 -20.6759 -20.6254 -20.5993 -20.5709 -20.554 -20.5252 -20.4634 -20.317 -20 + Bin 980: -20 -19.7744 -19.6797 -19.6288 -19.6033 -19.5735 -19.5579 -19.5322 -19.4794 -19.3514 -19 + Bin 981: -19 -18.7753 -18.6794 -18.631 -18.608 -18.5916 -18.5607 -18.5316 -18.4687 -18.3273 -18 + Bin 982: -18 -17.7798 -17.6911 -17.6527 -17.6288 -17.6019 -17.5785 -17.5391 -17.4674 -17.3171 -17 + Bin 983: -17 -16.7687 -16.6701 -16.6172 -16.5902 -16.5751 -16.5427 -16.5128 -16.4587 -16.3295 -16 + Bin 984: -16 -15.7649 -15.652 -15.5966 -15.5651 -15.5463 -15.5178 -15.4899 -15.4288 -15.3049 -15 + Bin 985: -15 -14.7699 -14.6574 -14.5991 -14.5662 -14.535 -14.5168 -14.4907 -14.44 -14.3157 -14 + Bin 986: -14 -13.7707 -13.6588 -13.6012 -13.5705 -13.5522 -13.5237 -13.4935 -13.4305 -13.2888 -13 + Bin 987: -13 -12.7852 -12.6809 -12.6247 -12.5899 -12.5536 -12.5331 -12.5062 -12.4655 -12.3488 -12 + Bin 988: -12 -11.75 -11.6496 -11.6038 -11.5782 -11.5486 -11.5286 -11.4964 -11.4343 -11.3063 -11 + Bin 989: -11 -10.787 -10.6972 -10.6563 -10.6351 -10.6055 -10.5837 -10.5441 -10.4726 -10.3215 -10 + Bin 990: -10 -9.76673 -9.66497 -9.61522 -9.58537 -9.55682 -9.53992 -9.51154 -9.45718 -9.33615 -9 + Bin 991: -9 -8.75694 -8.64486 -8.59289 -8.56734 -8.5515 -8.52334 -8.49392 -8.43489 -8.30488 -8 + Bin 992: -8 -7.7662 -7.65709 -7.60347 -7.57744 -7.54742 -7.5313 -7.5067 -7.45282 -7.33083 -7 + Bin 993: -7 -6.75467 -6.64418 -6.59185 -6.56824 -6.55334 -6.52299 -6.49223 -6.43317 -6.31469 -6 + Bin 994: -6 -5.76711 -5.65149 -5.59362 -5.56182 -5.53208 -5.51172 -5.48398 -5.42901 -5.29724 -5 + Bin 995: -5 -4.78499 -4.67272 -4.61366 -4.57835 -4.54618 -4.52834 -4.50248 -4.45167 -4.31811 -4 + Bin 996: -4 -3.78833 -3.68157 -3.62426 -3.59252 -3.56034 -3.5411 -3.51375 -3.45526 -3.31309 -3 + Bin 997: -3 -2.77183 -2.66397 -2.60987 -2.58135 -2.55336 -2.53722 -2.50589 -2.44046 -2.30452 -2 + Bin 998: -2 -1.77337 -1.66885 -1.61677 -1.59092 -1.57537 -1.5427 -1.50585 -1.43727 -1.3006 -1 + Bin 999: -1 -0.772417 -0.657811 -0.59853 -0.568255 -0.538505 -0.520078 -0.486633 -0.422659 -0.294332 0 + Bin 1000: 0 0.230617 0.357855 0.42593 0.460977 0.481626 0.512095 0.542872 0.607847 0.730981 1 + Bin 1001: 1 1.22357 1.32846 1.37705 1.39917 1.42946 1.45077 1.49064 1.56325 1.70603 2 + Bin 1002: 2 2.22874 2.33505 2.38709 2.41217 2.44329 2.46269 2.49605 2.55564 2.67893 3 + Bin 1003: 3 3.24401 3.36344 3.41522 3.44189 3.4621 3.49971 3.54144 3.61184 3.74351 4 + Bin 1004: 4 4.19957 4.30122 4.35917 4.39389 4.42602 4.44697 4.47691 4.54411 4.68564 5 + Bin 1005: 5 5.23191 5.34121 5.38735 5.40843 5.43628 5.45762 5.49655 5.56281 5.69577 6 + Bin 1006: 6 6.26164 6.38508 6.43556 6.46008 6.49252 6.51567 6.55296 6.60943 6.72416 7 + Bin 1007: 7 7.24017 7.35015 7.39791 7.42511 7.44451 7.4768 7.51652 7.58188 7.70305 8 + Bin 1008: 8 8.24294 8.3494 8.40173 8.42746 8.44564 8.47483 8.50412 8.56099 8.68364 9 + Bin 1009: 9 9.23555 9.34017 9.38751 9.41217 9.4417 9.46086 9.48879 9.5491 9.67246 10 + Bin 1010: 10 10.2237 10.3208 10.3725 10.4007 10.4242 10.4481 10.4726 10.5274 10.648 11 + Bin 1011: 11 11.2263 11.3314 11.3826 11.4059 11.4314 11.4514 11.4844 11.5435 11.6717 12 + Bin 1012: 12 12.2503 12.3421 12.3778 12.4029 12.4272 12.4669 12.5084 12.5761 12.7002 13 + Bin 1013: 13 13.2348 13.3359 13.3844 13.4084 13.4371 13.4616 13.5042 13.5714 13.6954 14 + Bin 1014: 14 14.2316 14.3381 14.3884 14.4151 14.4438 14.4633 14.4949 14.5551 14.6777 15 + Bin 1015: 15 15.2454 15.3505 15.3941 15.4176 15.4359 15.4739 15.5169 15.5865 15.71 16 + Bin 1016: 16 16.2162 16.3278 16.3846 16.4154 16.445 16.4637 16.4956 16.5604 16.6881 17 + Bin 1017: 17 17.2457 17.3511 17.3978 17.4234 17.4545 17.4808 17.5226 17.5932 17.7199 18 + Bin 1018: 18 18.221 18.3282 18.3824 18.4081 18.4371 18.4567 18.4894 18.5526 18.6821 19 + Bin 1019: 19 19.2391 19.3439 19.3892 19.4125 19.4323 19.4707 19.5084 19.572 19.6968 20 + Bin 1020: 20 20.2579 20.3603 20.3993 20.4274 20.4541 20.4977 20.5416 20.6078 20.7294 21 + Bin 1021: 21 21.2328 21.3409 21.3928 21.42 21.4506 21.4731 21.509 21.5751 21.6978 22 + Bin 1022: 22 22.2142 22.3173 22.3713 22.3986 22.4263 22.4518 22.4941 22.5779 22.7263 23 + Bin 1023: 23 23.1817 23.2618 23.3122 23.3483 23.3736 23.3963 23.4278 23.5012 23.6722 24 + Bin 1024: 24 24.2317 24.3215 24.3646 24.3911 24.4236 24.4423 24.4751 24.5395 24.6864 25 + Bin 1025: 25 25.2242 25.3375 25.3895 25.4156 25.4449 25.4704 25.5132 25.5808 25.715 26 + Bin 1026: 26 26.2611 26.3864 26.4468 26.4753 26.4911 26.5165 26.5483 26.6076 26.7191 27 + Bin 1027: 27 27.2573 27.3771 27.4187 27.4436 27.4788 27.5082 27.5525 27.6224 27.7495 28 + Bin 1028: 28 28.2275 28.3344 28.3846 28.4075 28.4327 28.4546 28.4933 28.5635 28.7014 29 + Bin 1029: 29 29.261 29.3735 29.4186 29.4391 29.4586 29.4952 29.5376 29.6034 29.7347 30 + Bin 1030: 30 30.2437 30.3539 30.3985 30.4226 30.4557 30.4848 30.5286 30.5997 30.7366 31 + Bin 1031: 31 31.2319 31.3372 31.3857 31.4099 31.4383 31.4625 31.5032 31.5701 31.7063 32 + Bin 1032: 32 32.2685 32.3899 32.4334 32.4566 32.4781 32.5176 32.5631 32.6357 32.7605 33 + Bin 1033: 33 33.2333 33.352 33.411 33.4371 33.4684 33.4917 33.531 33.6028 33.7367 34 + Bin 1034: 34 34.2413 34.3488 34.3938 34.4147 34.4443 34.4743 34.5241 34.5998 34.7397 35 + Bin 1035: 35 35.2249 35.3381 35.3932 35.4179 35.4451 35.469 35.515 35.594 35.7352 36 + Bin 1036: 36 36.2368 36.3477 36.3952 36.4161 36.447 36.4751 36.5196 36.5955 36.7398 37 + Bin 1037: 37 37.2417 37.3632 37.4228 37.4515 37.4661 37.4993 37.5413 37.6109 37.7396 38 + Bin 1038: 38 38.2335 38.3587 38.4221 38.449 38.4659 38.4998 38.5459 38.6183 38.7521 39 + Bin 1039: 39 39.2046 39.2964 39.3431 39.3656 39.3925 39.4135 39.454 39.5323 39.6923 40 + Bin 1040: 40 40.2316 40.3232 40.368 40.3894 40.4028 40.4354 40.4725 40.5387 40.6823 41 + Bin 1041: 41 41.2577 41.3578 41.4028 41.4231 41.4484 41.4704 41.5058 41.5675 41.6961 42 + Bin 1042: 42 42.2781 42.3813 42.4228 42.4431 42.4703 42.4912 42.5268 42.5861 42.7076 43 + Bin 1043: 43 43.2715 43.3754 43.418 43.4398 43.4586 43.4909 43.529 43.592 43.7133 44 + Bin 1044: 44 44.2594 44.3633 44.4001 44.4237 44.4573 44.4864 44.529 44.5905 44.7101 45 + Bin 1045: 45 45.2545 45.3756 45.4308 45.4541 45.4706 45.5016 45.5375 45.5992 45.7246 46 + Bin 1046: 46 46.2606 46.3674 46.4093 46.4287 46.458 46.4812 46.5201 46.5839 46.7174 47 + Bin 1047: 47 47.2603 47.3595 47.3991 47.4172 47.4462 47.4715 47.5108 47.5776 47.7115 48 + Bin 1048: 48 48.2536 48.358 48.4021 48.4201 48.4363 48.4726 48.5145 48.5894 48.7225 49 + Bin 1049: 49 49.2626 49.3615 49.3972 49.4215 49.4574 49.4868 49.5288 49.5946 49.7202 50 + Bin 1050: 50 50.2698 50.3815 50.4195 50.4418 50.4742 50.5019 50.542 50.607 50.7302 51 + Bin 1051: 51 51.265 51.3742 51.4166 51.4368 51.4664 51.4924 51.5312 51.5999 51.7288 52 + Bin 1052: 52 52.2483 52.3677 52.4259 52.4523 52.4646 52.4932 52.5304 52.5961 52.7296 53 + Bin 1053: 53 53.2487 53.3536 53.406 53.43 53.4528 53.4733 53.5093 53.5758 53.7113 54 + Bin 1054: 54 54.2678 54.3968 54.4543 54.4833 54.5003 54.5273 54.5565 54.6098 54.7172 55 + Bin 1055: 55 55.2477 55.3804 55.4427 55.4713 55.4873 55.5127 55.5497 55.6095 55.7373 56 + Bin 1056: 56 56.2611 56.3726 56.4245 56.4524 56.4783 56.4958 56.5276 56.5843 56.7051 57 + Bin 1057: 57 57.2596 57.3762 57.4321 57.4643 57.4808 57.5056 57.5312 57.5856 57.7006 58 + Bin 1058: 58 58.2743 58.3817 58.4227 58.4442 58.4775 58.5032 58.5398 58.6051 58.7261 59 + Bin 1059: 59 59.2481 59.3507 59.3932 59.4136 59.4397 59.4641 59.5058 59.5746 59.7103 60 + Bin 1060: 60 60.2704 60.3732 60.4137 60.4329 60.4578 60.4804 60.5176 60.5818 60.7055 61 + Bin 1061: 61 61.2658 61.3888 61.4464 61.4739 61.4911 61.5219 61.5565 61.6129 61.7271 62 + Bin 1062: 62 62.2766 62.3973 62.4426 62.4654 62.4908 62.5278 62.5676 62.6327 62.7525 63 + Bin 1063: 63 63.237 63.3453 63.3993 63.4223 63.45 63.4744 63.5152 63.5814 63.7086 64 + Bin 1064: 64 64.2431 64.3496 64.4009 64.4254 64.4482 64.4677 64.5039 64.5701 64.7066 65 + Bin 1065: 65 65.2534 65.3597 65.4113 65.4351 65.4565 65.4818 65.5189 65.5822 65.705 66 + Bin 1066: 66 66.2549 66.3736 66.4278 66.4512 66.4688 66.503 66.5412 66.607 66.7329 67 + Bin 1067: 67 67.2586 67.3718 67.4175 67.4401 67.4698 67.4948 67.5332 67.5961 67.7174 68 + Bin 1068: 68 68.256 68.3688 68.4186 68.4446 68.4602 68.4934 68.5316 68.5978 68.723 69 + Bin 1069: 69 69.2178 69.3251 69.3802 69.4077 69.4328 69.451 69.4851 69.5567 69.6969 70 + Bin 1070: 70 70.2432 70.3406 70.3781 70.3984 70.4238 70.448 70.49 70.5655 70.7076 71 + Bin 1071: 71 71.2357 71.3358 71.3898 71.4174 71.4405 71.458 71.49 71.5501 71.6833 72 + Bin 1072: 72 72.2546 72.3479 72.3906 72.4094 72.4327 72.4544 72.4924 72.5545 72.6891 73 + Bin 1073: 73 73.2678 73.3719 73.4214 73.4467 73.4726 73.4902 73.5223 73.582 73.7041 74 + Bin 1074: 74 74.2625 74.3675 74.4164 74.4388 74.4584 74.4809 74.5145 74.5756 74.6979 75 + Bin 1075: 75 75.2599 75.362 75.4073 75.4289 75.4527 75.4733 75.509 75.5676 75.6897 76 + Bin 1076: 76 76.2733 76.3732 76.4193 76.4411 76.4554 76.4843 76.5203 76.5863 76.7104 77 + Bin 1077: 77 77.2664 77.3618 77.3953 77.4191 77.4512 77.4808 77.5191 77.5867 77.7081 78 + Bin 1078: 78 78.267 78.3726 78.4198 78.4402 78.4653 78.4872 78.5211 78.5779 78.6977 79 + Bin 1079: 79 79.2993 79.3957 79.4292 79.4552 79.4815 79.5195 79.5586 79.6215 79.7359 80 + Bin 1080: 80 80.2741 80.3723 80.4048 80.4249 80.4543 80.481 80.5231 80.5874 80.704 81 + Bin 1081: 81 81.2767 81.3664 81.3971 81.4252 81.4613 81.4913 81.5313 81.597 81.7156 82 + Bin 1082: 82 82.2816 82.3927 82.4321 82.4529 82.4736 82.5084 82.548 82.6121 82.7326 83 + Bin 1083: 83 83.2578 83.3606 83.3991 83.4189 83.448 83.4738 83.5147 83.5836 83.7086 84 + Bin 1084: 84 84.2789 84.3854 84.4283 84.4487 84.4773 84.501 84.5405 84.6066 84.7321 85 + Bin 1085: 85 85.2641 85.3705 85.4117 85.44 85.4709 85.5027 85.5482 85.6186 85.7464 86 + Bin 1086: 86 86.2516 86.3529 86.3948 86.4141 86.4398 86.463 86.5048 86.5737 86.7089 87 + Bin 1087: 87 87.2405 87.341 87.3928 87.4189 87.4422 87.4635 87.4977 87.5607 87.6964 88 + Bin 1088: 88 88.2707 88.3639 88.4005 88.4196 88.4374 88.4706 88.511 88.5811 88.7094 89 + Bin 1089: 89 89.2591 89.3666 89.4232 89.4537 89.4817 89.4973 89.5242 89.5804 89.7062 90 + Bin 1090: 90 90.276 90.3817 90.422 90.4426 90.4711 90.4968 90.5325 90.5923 90.7104 91 + Bin 1091: 91 91.299 91.4108 91.4536 91.4736 91.4931 91.5271 91.5655 91.6234 91.7395 92 + Bin 1092: 92 92.2792 92.4073 92.466 92.4923 92.5184 92.5353 92.565 92.6205 92.7255 93 + Bin 1093: 93 93.2254 93.3134 93.3453 93.3613 93.3763 93.4219 93.4868 93.5827 93.7403 94 + Bin 1094: 94 94.3487 94.5662 94.7166 94.8231 94.8902 94.9043 94.9195 94.9365 94.9614 95 + Bin 1095: 95 95.0159 95.0451 95.1024 95.2425 95.5443 95.8354 95.9307 95.9714 95.989 96 + Bin 1096: 96 96.0313 96.0558 96.0737 96.0874 96.1007 96.16 96.2433 96.3505 96.5305 97 + Bin 1097: 97 97.2344 97.4022 97.511 97.5635 97.5902 97.6152 97.6464 97.6944 97.7896 98 + Bin 1098: 98 98.2643 98.3658 98.4073 98.4285 98.4545 98.4805 98.5213 98.5903 98.7256 99 + Bin 1099: 99 99.2374 99.3361 99.3779 99.4012 99.4268 99.4481 99.4883 99.5555 99.6983 100 + Bin 1100: 100 100.262 100.365 100.403 100.426 100.453 100.481 100.524 100.589 100.721 101 + Bin 1101: 101 101.281 101.389 101.427 101.455 101.481 101.516 101.556 101.623 101.746 102 + Bin 1102: 102 102.263 102.359 102.392 102.416 102.449 102.477 102.518 102.589 102.713 103 + Bin 1103: 103 103.27 103.36 103.395 103.417 103.449 103.479 103.52 103.589 103.719 104 + Bin 1104: 104 104.272 104.37 104.404 104.425 104.444 104.48 104.52 104.588 104.713 105 + Bin 1105: 105 105.271 105.374 105.417 105.442 105.469 105.492 105.528 105.592 105.716 106 + Bin 1106: 106 106.266 106.359 106.399 106.421 106.449 106.475 106.512 106.578 106.708 107 + Bin 1107: 107 107.282 107.393 107.436 107.459 107.482 107.507 107.544 107.605 107.731 108 + Bin 1108: 108 108.265 108.37 108.415 108.438 108.456 108.488 108.525 108.589 108.715 109 + Bin 1109: 109 109.266 109.365 109.403 109.425 109.455 109.479 109.517 109.58 109.709 110 + Bin 1110: 110 110.29 110.381 110.418 110.444 110.47 110.509 110.551 110.619 110.742 111 + Bin 1111: 111 111.264 111.384 111.434 111.459 111.476 111.511 111.547 111.614 111.737 112 + Bin 1112: 112 112.261 112.36 112.396 112.423 112.456 112.484 112.528 112.596 112.727 113 + Bin 1113: 113 113.265 113.36 113.401 113.422 113.44 113.476 113.521 113.593 113.729 114 + Bin 1114: 114 114.278 114.387 114.424 114.447 114.478 114.505 114.544 114.61 114.733 115 + Bin 1115: 115 115.263 115.366 115.409 115.431 115.448 115.481 115.523 115.592 115.722 116 + Bin 1116: 116 116.275 116.386 116.428 116.453 116.481 116.506 116.547 116.616 116.74 117 + Bin 1117: 117 117.278 117.391 117.435 117.459 117.48 117.514 117.555 117.622 117.749 118 + Bin 1118: 118 118.264 118.378 118.422 118.446 118.477 118.502 118.543 118.608 118.729 119 + Bin 1119: 119 119.288 119.402 119.447 119.471 119.499 119.524 119.56 119.621 119.738 120 + Bin 1120: 120 120.307 120.416 120.453 120.478 120.5 120.534 120.57 120.626 120.736 121 + Bin 1121: 121 121.263 121.36 121.398 121.422 121.45 121.474 121.512 121.575 121.698 122 + Bin 1122: 122 122.263 122.349 122.384 122.41 122.444 122.469 122.513 122.575 122.707 123 + Bin 1123: 123 123.248 123.357 123.408 123.437 123.463 123.482 123.512 123.567 123.689 124 + Bin 1124: 124 124.25 124.35 124.394 124.418 124.435 124.464 124.499 124.566 124.698 125 + Bin 1125: 125 125.245 125.344 125.387 125.408 125.435 125.456 125.495 125.563 125.7 126 + Bin 1126: 126 126.252 126.351 126.393 126.418 126.446 126.471 126.508 126.571 126.695 127 + Bin 1127: 127 127.254 127.354 127.391 127.414 127.435 127.469 127.513 127.583 127.715 128 + Bin 1128: 128 128.256 128.357 128.401 128.425 128.453 128.473 128.512 128.576 128.71 129 + Bin 1129: 129 129.249 129.346 129.388 129.41 129.429 129.463 129.508 129.583 129.72 130 + Bin 1130: 130 130.242 130.343 130.388 130.414 130.439 130.463 130.5 130.574 130.711 131 + Bin 1131: 131 131.229 131.333 131.381 131.401 131.424 131.448 131.49 131.561 131.699 132 + Bin 1132: 132 132.255 132.364 132.413 132.438 132.456 132.489 132.527 132.593 132.719 133 + Bin 1133: 133 133.236 133.347 133.402 133.429 133.445 133.474 133.507 133.575 133.708 134 + Bin 1134: 134 134.261 134.374 134.426 134.455 134.481 134.498 134.532 134.591 134.714 135 + Bin 1135: 135 135.237 135.338 135.387 135.411 135.428 135.453 135.486 135.553 135.692 136 + Bin 1136: 136 136.248 136.348 136.395 136.418 136.443 136.46 136.489 136.544 136.668 137 + Bin 1137: 137 137.251 137.35 137.397 137.418 137.44 137.459 137.494 137.556 137.692 138 + Bin 1138: 138 138.249 138.344 138.389 138.41 138.435 138.452 138.484 138.54 138.665 139 + Bin 1139: 139 139.261 139.361 139.404 139.424 139.439 139.467 139.504 139.564 139.689 140 + Bin 1140: 140 140.249 140.352 140.397 140.419 140.442 140.46 140.494 140.558 140.687 141 + Bin 1141: 141 141.237 141.335 141.384 141.411 141.437 141.456 141.488 141.549 141.683 142 + Bin 1142: 142 142.238 142.345 142.399 142.427 142.453 142.466 142.492 142.544 142.671 143 + Bin 1143: 143 143.254 143.357 143.398 143.42 143.439 143.468 143.504 143.569 143.704 144 + Bin 1144: 144 144.241 144.354 144.413 144.444 144.469 144.484 144.511 144.569 144.698 145 + Bin 1145: 145 145.212 145.313 145.37 145.404 145.426 145.454 145.473 145.52 145.653 146 + Bin 1146: 146 146.235 146.343 146.397 146.428 146.455 146.467 146.491 146.549 146.675 147 + Bin 1147: 147 147.23 147.333 147.389 147.425 147.447 147.472 147.493 147.544 147.67 148 + Bin 1148: 148 148.228 148.342 148.407 148.446 148.477 148.492 148.514 148.567 148.689 149 + Bin 1149: 149 149.226 149.335 149.392 149.426 149.451 149.467 149.495 149.562 149.7 150 + Bin 1150: 150 150.237 150.34 150.391 150.42 150.444 150.459 150.49 150.555 150.686 151 + Bin 1151: 151 151.2 151.297 151.351 151.385 151.414 151.435 151.455 151.508 151.663 152 + Bin 1152: 152 152.213 152.295 152.343 152.374 152.394 152.424 152.443 152.488 152.621 153 + Bin 1153: 153 153.234 153.331 153.383 153.421 153.454 153.475 153.495 153.532 153.646 154 + Bin 1154: 154 154.237 154.342 154.398 154.435 154.459 154.49 154.509 154.546 154.655 155 + Bin 1155: 155 155.208 155.314 155.371 155.408 155.443 155.474 155.505 155.536 155.657 156 + Bin 1156: 156 156.222 156.323 156.379 156.415 156.449 156.471 156.492 156.53 156.661 157 + Bin 1157: 157 157.231 157.34 157.398 157.437 157.471 157.487 157.504 157.552 157.672 158 + Bin 1158: 158 158.221 158.334 158.388 158.425 158.454 158.483 158.505 158.541 158.665 159 + Bin 1159: 159 159.236 159.346 159.405 159.441 159.477 159.5 159.519 159.554 159.672 160 + Bin 1160: 160 160.22 160.33 160.389 160.426 160.451 160.484 160.508 160.543 160.654 161 + Bin 1161: 161 161.222 161.331 161.391 161.432 161.463 161.488 161.511 161.546 161.668 162 + Bin 1162: 162 162.218 162.321 162.378 162.414 162.448 162.47 162.49 162.533 162.656 163 + Bin 1163: 163 163.228 163.338 163.402 163.442 163.481 163.503 163.527 163.556 163.66 164 + Bin 1164: 164 164.214 164.323 164.387 164.426 164.453 164.485 164.513 164.544 164.655 165 + Bin 1165: 165 165.194 165.296 165.352 165.389 165.423 165.452 165.479 165.512 165.65 166 + Bin 1166: 166 166.224 166.338 166.402 166.446 166.48 166.512 166.548 166.582 166.651 167 + Bin 1167: 167 167.291 167.421 167.486 167.529 167.556 167.579 167.602 167.626 167.698 168 + Bin 1168: 168 168.24 168.346 168.405 168.441 168.465 168.493 168.513 168.541 168.643 169 + Bin 1169: 169 169.251 169.345 169.393 169.425 169.457 169.475 169.494 169.523 169.618 170 + Bin 1170: 170 170.231 170.323 170.372 170.405 170.435 170.455 170.475 170.509 170.617 171 + Bin 1171: 171 171.227 171.318 171.365 171.399 171.43 171.452 171.476 171.503 171.598 172 + Bin 1172: 172 172.242 172.346 172.398 172.43 172.458 172.485 172.507 172.534 172.62 173 + Bin 1173: 173 173.238 173.341 173.395 173.428 173.459 173.479 173.499 173.528 173.629 174 + Bin 1174: 174 174.231 174.328 174.38 174.412 174.443 174.46 174.479 174.517 174.629 175 + Bin 1175: 175 175.229 175.316 175.364 175.393 175.42 175.435 175.451 175.495 175.62 176 + Bin 1176: 176 176.24 176.331 176.381 176.415 176.446 176.465 176.485 176.511 176.604 177 + Bin 1177: 177 177.241 177.342 177.394 177.427 177.45 177.48 177.499 177.532 177.637 178 + Bin 1178: 178 178.237 178.34 178.397 178.432 178.463 178.481 178.499 178.532 178.633 179 + Bin 1179: 179 179.241 179.34 179.39 179.421 179.444 179.471 179.49 179.52 179.624 180 + Bin 1180: 180 180.233 180.33 180.381 180.414 180.448 180.469 180.49 180.519 180.619 181 + Bin 1181: 181 181.215 181.304 181.357 181.391 181.421 181.446 181.471 181.499 181.605 182 + Bin 1182: 182 182.228 182.318 182.37 182.4 182.426 182.441 182.462 182.511 182.645 183 + Bin 1183: 183 183.206 183.296 183.344 183.379 183.408 183.428 183.445 183.484 183.622 184 + Bin 1184: 184 184.224 184.313 184.36 184.393 184.417 184.451 184.476 184.506 184.614 185 + Bin 1185: 185 185.24 185.343 185.404 185.444 185.475 185.497 185.523 185.548 185.638 186 + Bin 1186: 186 186.234 186.346 186.403 186.442 186.469 186.501 186.524 186.555 186.657 187 + Bin 1187: 187 187.226 187.33 187.384 187.422 187.457 187.485 187.514 187.542 187.646 188 + Bin 1188: 188 188.223 188.327 188.389 188.431 188.466 188.493 188.522 188.548 188.646 189 + Bin 1189: 189 189.229 189.344 189.4 189.441 189.466 189.499 189.525 189.554 189.654 190 + Bin 1190: 190 190.214 190.32 190.378 190.415 190.451 190.477 190.503 190.531 190.639 191 + Bin 1191: 191 191.218 191.327 191.387 191.429 191.467 191.497 191.53 191.562 191.649 192 + Bin 1192: 192 192.212 192.329 192.397 192.439 192.475 192.508 192.546 192.592 192.663 193 + Bin 1193: 193 193.189 193.3 193.374 193.421 193.463 193.495 193.541 193.598 193.685 194 + Bin 1194: 194 194.188 194.288 194.354 194.401 194.437 194.482 194.529 194.595 194.684 195 + Bin 1195: 195 195.174 195.268 195.332 195.376 195.412 195.45 195.498 195.563 195.658 196 + Bin 1196: 196 196.166 196.263 196.32 196.361 196.402 196.432 196.475 196.527 196.618 197 + Bin 1197: 197 197.238 197.324 197.378 197.419 197.448 197.486 197.525 197.57 197.637 198 + Bin 1198: 198 198.213 198.319 198.376 198.421 198.461 198.495 198.533 198.576 198.669 199 + Bin 1199: 199 199.167 199.258 199.313 199.349 199.38 199.409 199.445 199.497 199.587 200 + Bin 1200: 200 200.246 200.358 200.418 200.455 200.48 200.503 200.523 200.559 200.656 201 + Bin 1201: 201 201.243 201.345 201.403 201.441 201.468 201.5 201.526 201.554 201.67 202 + Bin 1202: 202 202.184 202.273 202.33 202.365 202.395 202.422 202.463 202.508 202.598 203 + Bin 1203: 203 203.199 203.298 203.352 203.391 203.419 203.458 203.504 203.558 203.625 204 + Bin 1204: 204 204.239 204.352 204.415 204.456 204.487 204.519 204.553 204.595 204.664 205 + Bin 1205: 205 205.217 205.316 205.371 205.406 205.438 205.464 205.496 205.539 205.62 206 + Bin 1206: 206 206.212 206.316 206.374 206.416 206.445 206.482 206.52 206.566 206.637 207 + Bin 1207: 207 207.199 207.292 207.342 207.38 207.413 207.445 207.487 207.537 207.619 208 + Bin 1208: 208 208.217 208.324 208.386 208.43 208.467 208.497 208.532 208.578 208.641 209 + Bin 1209: 209 209.242 209.354 209.418 209.455 209.483 209.514 209.547 209.582 209.67 210 + Bin 1210: 210 210.185 210.282 210.339 210.378 210.412 210.438 210.476 210.519 210.595 211 + Bin 1211: 211 211.232 211.332 211.392 211.432 211.463 211.493 211.524 211.557 211.629 212 + Bin 1212: 212 212.219 212.321 212.38 212.418 212.455 212.483 212.514 212.542 212.634 213 + Bin 1213: 213 213.214 213.317 213.375 213.412 213.447 213.475 213.502 213.528 213.623 214 + Bin 1214: 214 214.207 214.313 214.372 214.409 214.439 214.477 214.511 214.548 214.644 215 + Bin 1215: 215 215.191 215.288 215.347 215.384 215.418 215.449 215.489 215.533 215.608 216 + Bin 1216: 216 216.234 216.337 216.394 216.429 216.456 216.489 216.519 216.554 216.617 217 + Bin 1217: 217 217.21 217.301 217.36 217.399 217.432 217.466 217.503 217.55 217.617 218 + Bin 1218: 218 218.187 218.286 218.343 218.383 218.418 218.448 218.485 218.523 218.599 219 + Bin 1219: 219 219.187 219.283 219.34 219.38 219.411 219.441 219.479 219.522 219.601 220 + Bin 1220: 220 220.178 220.273 220.333 220.372 220.404 220.437 220.473 220.519 220.601 221 + Bin 1221: 221 221.197 221.305 221.363 221.403 221.439 221.465 221.493 221.528 221.623 222 + Bin 1222: 222 222.203 222.299 222.353 222.391 222.418 222.45 222.481 222.517 222.616 223 + Bin 1223: 223 223.181 223.283 223.34 223.38 223.413 223.443 223.476 223.511 223.593 224 + Bin 1224: 224 224.204 224.305 224.366 224.401 224.431 224.463 224.49 224.522 224.615 225 + Bin 1225: 225 225.181 225.277 225.337 225.377 225.41 225.44 225.477 225.516 225.595 226 + Bin 1226: 226 226.195 226.293 226.348 226.387 226.426 226.455 226.488 226.525 226.612 227 + Bin 1227: 227 227.191 227.298 227.364 227.402 227.438 227.466 227.496 227.533 227.621 228 + Bin 1228: 228 228.158 228.245 228.3 228.336 228.371 228.407 228.447 228.501 228.582 229 + Bin 1229: 229 229.163 229.257 229.311 229.35 229.386 229.414 229.453 229.501 229.574 230 + Bin 1230: 230 230.194 230.298 230.36 230.402 230.435 230.469 230.503 230.546 230.614 231 + Bin 1231: 231 231.177 231.271 231.332 231.373 231.41 231.438 231.471 231.514 231.593 232 + Bin 1232: 232 232.18 232.285 232.344 232.383 232.416 232.45 232.493 232.547 232.61 233 + Bin 1233: 233 233.216 233.322 233.383 233.424 233.451 233.476 233.495 233.526 233.636 234 + Bin 1234: 234 234.201 234.304 234.359 234.395 234.426 234.447 234.463 234.496 234.607 235 + Bin 1235: 235 235.209 235.313 235.371 235.41 235.432 235.464 235.487 235.519 235.629 236 + Bin 1236: 236 236.201 236.302 236.36 236.406 236.44 236.462 236.488 236.515 236.616 237 + Bin 1237: 237 237.196 237.293 237.35 237.389 237.415 237.445 237.478 237.51 237.605 238 + Bin 1238: 238 238.191 238.284 238.345 238.385 238.421 238.452 238.485 238.52 238.616 239 + Bin 1239: 239 239.204 239.31 239.374 239.412 239.447 239.467 239.488 239.522 239.639 240 + Bin 1240: 240 240.204 240.306 240.365 240.403 240.434 240.455 240.477 240.517 240.649 241 + Bin 1241: 241 241.201 241.307 241.365 241.403 241.436 241.459 241.483 241.518 241.629 242 + Bin 1242: 242 242.219 242.341 242.41 242.452 242.479 242.506 242.525 242.556 242.65 243 + Bin 1243: 243 243.234 243.358 243.43 243.478 243.509 243.535 243.551 243.58 243.663 244 + Bin 1244: 244 244.244 244.367 244.439 244.481 244.506 244.531 244.553 244.587 244.68 245 + Bin 1245: 245 245.222 245.344 245.409 245.452 245.486 245.504 245.525 245.564 245.678 246 + Bin 1246: 246 246.196 246.3 246.356 246.391 246.418 246.439 246.462 246.509 246.65 247 + Bin 1247: 247 247.188 247.276 247.33 247.364 247.391 247.415 247.441 247.484 247.634 248 + Bin 1248: 248 248.2 248.286 248.336 248.369 248.399 248.421 248.442 248.482 248.601 249 + Bin 1249: 249 249.24 249.337 249.387 249.418 249.447 249.462 249.484 249.524 249.636 250 + Bin 1250: 250 250.257 250.371 250.436 250.472 250.495 250.52 250.538 250.568 250.658 251 + Bin 1251: 251 251.287 251.421 251.492 251.535 251.566 251.585 251.603 251.632 251.696 252 + Bin 1252: 252 252.248 252.348 252.408 252.442 252.469 252.504 252.542 252.576 252.661 253 + Bin 1253: 253 253.503 253.728 253.859 253.948 253.991 253.993 253.996 253.997 253.997 254 + Bin 1254: 254 -nan -nan -nan -nan -nan -nan -nan -nan -nan 255 + Bin 1255: 255 -nan -nan -nan -nan -nan -nan -nan -nan -nan 256 + Bin 1256: 256 256 256 256.191 256.258 256.266 256.318 256.381 256.444 256.533 257 + Bin 1257: 257 257.217 257.324 257.383 257.424 257.451 257.466 257.491 257.545 257.709 258 + Bin 1258: 258 258.147 258.217 258.259 258.29 258.319 258.35 258.387 258.428 258.536 259 + Bin 1259: 259 259.197 259.298 259.357 259.392 259.42 259.452 259.482 259.516 259.617 260 + Bin 1260: 260 260.194 260.304 260.364 260.406 260.442 260.468 260.498 260.529 260.592 261 + Bin 1261: 261 261.241 261.348 261.401 261.435 261.459 261.486 261.511 261.542 261.634 262 + Bin 1262: 262 262.191 262.288 262.348 262.384 262.416 262.438 262.466 262.5 262.606 263 + Bin 1263: 263 263.198 263.296 263.354 263.389 263.413 263.445 263.472 263.507 263.606 264 + Bin 1264: 264 264.197 264.296 264.351 264.389 264.426 264.456 264.491 264.526 264.598 265 + Bin 1265: 265 265.221 265.326 265.381 265.415 265.442 265.47 265.499 265.522 265.61 266 + Bin 1266: 266 266.221 266.32 266.368 266.396 266.423 266.44 266.463 266.506 266.62 267 + Bin 1267: 267 267.208 267.308 267.365 267.402 267.436 267.459 267.482 267.514 267.613 268 + Bin 1268: 268 268.224 268.336 268.396 268.436 268.468 268.492 268.513 268.539 268.626 269 + Bin 1269: 269 269.221 269.322 269.383 269.417 269.445 269.474 269.5 269.532 269.629 270 + Bin 1270: 270 270.21 270.311 270.366 270.404 270.436 270.461 270.483 270.516 270.609 271 + Bin 1271: 271 271.215 271.31 271.361 271.4 271.43 271.459 271.49 271.522 271.602 272 + Bin 1272: 272 272.225 272.343 272.411 272.456 272.484 272.513 272.541 272.569 272.64 273 + Bin 1273: 273 273.207 273.305 273.356 273.39 273.41 273.437 273.468 273.537 273.686 274 + Bin 1274: 274 274.544 274.751 274.866 274.933 274.966 274.969 274.972 274.981 274.988 275 + Bin 1275: 275 275.003 275.015 275.049 275.17 275.464 275.837 275.963 275.988 275.996 276 + Bin 1276: 276 276.008 276.015 276.017 276.021 276.024 276.046 276.103 276.213 276.403 277 + Bin 1277: 277 277.251 277.363 277.446 277.501 277.545 277.573 277.601 277.63 277.696 278 + Bin 1278: 278 278.204 278.309 278.362 278.404 278.437 278.46 278.485 278.524 278.636 279 + Bin 1279: 279 279.201 279.296 279.349 279.388 279.421 279.448 279.474 279.507 279.6 280 + Bin 1280: 280 280.204 280.308 280.364 280.401 280.426 280.452 280.478 280.511 280.612 281 + Bin 1281: 281 281.198 281.307 281.36 281.395 281.427 281.457 281.482 281.518 281.601 282 + Bin 1282: 282 282.209 282.309 282.362 282.398 282.426 282.448 282.476 282.515 282.617 283 + Bin 1283: 283 283.235 283.344 283.401 283.442 283.471 283.502 283.529 283.558 283.645 284 + Bin 1284: 284 284.225 284.331 284.392 284.432 284.461 284.483 284.509 284.545 284.64 285 + Bin 1285: 285 285.209 285.308 285.367 285.405 285.432 285.463 285.488 285.523 285.618 286 + Bin 1286: 286 286.2 286.299 286.359 286.395 286.432 286.459 286.49 286.529 286.639 287 + Bin 1287: 287 287.196 287.291 287.345 287.38 287.41 287.439 287.475 287.516 287.593 288 + Bin 1288: 288 288.223 288.328 288.388 288.43 288.458 288.489 288.519 288.551 288.646 289 + Bin 1289: 289 289.218 289.32 289.378 289.418 289.452 289.476 289.498 289.527 289.628 290 + Bin 1290: 290 290.199 290.299 290.358 290.396 290.423 290.456 290.485 290.522 290.611 291 + Bin 1291: 291 291.233 291.344 291.402 291.441 291.472 291.492 291.515 291.555 291.645 292 + Bin 1292: 292 292.226 292.332 292.395 292.434 292.459 292.488 292.515 292.555 292.65 293 + Bin 1293: 293 293.198 293.305 293.363 293.399 293.436 293.465 293.496 293.535 293.629 294 + Bin 1294: 294 294.201 294.309 294.371 294.409 294.442 294.466 294.494 294.527 294.607 295 + Bin 1295: 295 295.254 295.356 295.414 295.448 295.474 295.499 295.524 295.554 295.643 296 + Bin 1296: 296 296.238 296.366 296.434 296.473 296.502 296.53 296.554 296.587 296.667 297 + Bin 1297: 297 297.226 297.337 297.394 297.436 297.476 297.499 297.529 297.562 297.645 298 + Bin 1298: 298 298.204 298.295 298.345 298.38 298.41 298.435 298.47 298.508 298.609 299 + Bin 1299: 299 299.192 299.291 299.348 299.391 299.426 299.457 299.494 299.541 299.624 300 + Bin 1300: 300 300.219 300.324 300.387 300.432 300.463 300.495 300.525 300.562 300.639 301 + Bin 1301: 301 301.211 301.323 301.392 301.432 301.466 301.501 301.535 301.566 301.649 302 + Bin 1302: 302 302.199 302.309 302.371 302.414 302.449 302.476 302.511 302.553 302.64 303 + Bin 1303: 303 303.185 303.283 303.337 303.375 303.407 303.434 303.465 303.501 303.597 304 + Bin 1304: 304 304.216 304.322 304.388 304.429 304.463 304.487 304.515 304.55 304.621 305 + Bin 1305: 305 305.269 305.411 305.488 305.542 305.58 305.609 305.644 305.683 305.745 306 + Bin 1306: 306 306.274 306.367 306.426 306.464 306.493 306.522 306.555 306.587 306.663 307 + Bin 1307: 307 307.523 307.765 307.882 307.946 307.992 307.994 307.996 307.997 307.997 308 + Bin 1308: 308 -nan -nan -nan -nan -nan -nan -nan -nan -nan 309 + Bin 1309: 309 -nan -nan -nan -nan -nan -nan -nan -nan -nan 310 + Bin 1310: 310 310 310 310.108 310.177 310.182 310.255 310.34 310.427 310.524 311 + Bin 1311: 311 311.225 311.32 311.38 311.419 311.442 311.461 311.489 311.544 311.711 312 + Bin 1312: 312 312.157 312.224 312.265 312.301 312.324 312.351 312.379 312.423 312.546 313 + Bin 1313: 313 313.21 313.308 313.366 313.408 313.435 313.464 313.496 313.53 313.607 314 + Bin 1314: 314 314.197 314.293 314.348 314.387 314.416 314.445 314.476 314.515 314.614 315 + Bin 1315: 315 315.194 315.298 315.359 315.397 315.428 315.464 315.498 315.539 315.621 316 + Bin 1316: 316 316.19 316.288 316.345 316.386 316.419 316.446 316.478 316.516 316.611 317 + Bin 1317: 317 317.193 317.298 317.353 317.395 317.427 317.452 317.489 317.523 317.63 318 + Bin 1318: 318 318.179 318.28 318.344 318.387 318.418 318.455 318.49 318.537 318.632 319 + Bin 1319: 319 319.165 319.253 319.307 319.35 319.388 319.421 319.47 319.528 319.601 320 + Bin 1320: 320 320.186 320.282 320.343 320.385 320.42 320.448 320.485 320.529 320.605 321 + Bin 1321: 321 321.178 321.288 321.353 321.397 321.435 321.47 321.501 321.54 321.635 322 + Bin 1322: 322 322.17 322.265 322.321 322.366 322.395 322.422 322.454 322.491 322.581 323 + Bin 1323: 323 323.187 323.278 323.335 323.378 323.408 323.442 323.485 323.526 323.608 324 + Bin 1324: 324 324.198 324.292 324.351 324.387 324.424 324.453 324.493 324.536 324.629 325 + Bin 1325: 325 325.161 325.256 325.313 325.356 325.386 325.421 325.462 325.511 325.622 326 + Bin 1326: 326 326.176 326.276 326.335 326.376 326.409 326.449 326.483 326.517 326.607 327 + Bin 1327: 327 327.192 327.277 327.331 327.367 327.395 327.428 327.454 327.492 327.599 328 + Bin 1328: 328 328.203 328.292 328.345 328.382 328.415 328.433 328.454 328.486 328.569 329 + Bin 1329: 329 329.226 329.334 329.392 329.433 329.458 329.484 329.511 329.543 329.62 330 + Bin 1330: 330 330.227 330.313 330.37 330.409 330.44 330.46 330.483 330.509 330.601 331 + Bin 1331: 331 331.208 331.309 331.37 331.41 331.44 331.463 331.486 331.515 331.611 332 + Bin 1332: 332 332.205 332.312 332.377 332.415 332.442 332.471 332.502 332.528 332.613 333 + Bin 1333: 333 333.213 333.313 333.364 333.398 333.427 333.455 333.481 333.514 333.618 334 + Bin 1334: 334 334.22 334.315 334.37 334.403 334.432 334.452 334.475 334.508 334.616 335 + Bin 1335: 335 335.2 335.294 335.347 335.385 335.418 335.439 335.462 335.493 335.608 336 + Bin 1336: 336 336.215 336.305 336.356 336.388 336.422 336.443 336.468 336.504 336.611 337 + Bin 1337: 337 337.197 337.292 337.352 337.392 337.421 337.451 337.48 337.514 337.625 338 + Bin 1338: 338 338.182 338.28 338.336 338.376 338.407 338.431 338.456 338.489 338.598 339 + Bin 1339: 339 339.208 339.311 339.37 339.402 339.426 339.456 339.482 339.521 339.619 340 + Bin 1340: 340 340.207 340.309 340.37 340.407 340.44 340.465 340.491 340.528 340.63 341 + Bin 1341: 341 341.2 341.309 341.372 341.403 341.436 341.462 341.488 341.523 341.625 342 + Bin 1342: 342 342.21 342.305 342.359 342.396 342.418 342.445 342.465 342.502 342.599 343 + Bin 1343: 343 343.202 343.291 343.347 343.376 343.401 343.426 343.452 343.483 343.59 344 + Bin 1344: 344 344.236 344.327 344.387 344.423 344.452 344.474 344.493 344.53 344.607 345 + Bin 1345: 345 345.244 345.348 345.401 345.439 345.462 345.485 345.506 345.533 345.621 346 + Bin 1346: 346 346.233 346.335 346.39 346.428 346.454 346.482 346.508 346.534 346.623 347 + Bin 1347: 347 347.191 347.289 347.34 347.381 347.408 347.436 347.467 347.504 347.582 348 + Bin 1348: 348 348.21 348.296 348.35 348.384 348.406 348.431 348.454 348.484 348.582 349 + Bin 1349: 349 349.212 349.305 349.362 349.403 349.436 349.455 349.484 349.507 349.586 350 + Bin 1350: 350 350.228 350.335 350.392 350.421 350.445 350.471 350.494 350.524 350.617 351 + Bin 1351: 351 351.207 351.304 351.363 351.399 351.429 351.455 351.481 351.523 351.635 352 + Bin 1352: 352 352.181 352.273 352.33 352.361 352.388 352.41 352.444 352.477 352.566 353 + Bin 1353: 353 353.222 353.324 353.385 353.428 353.457 353.494 353.528 353.574 353.631 354 + Bin 1354: 354 354.218 354.311 354.37 354.412 354.442 354.471 354.504 354.542 354.607 355 + Bin 1355: 355 355.194 355.281 355.333 355.37 355.4 355.428 355.464 355.502 355.585 356 + Bin 1356: 356 356.186 356.283 356.339 356.377 356.41 356.438 356.471 356.51 356.59 357 + Bin 1357: 357 357.194 357.289 357.348 357.386 357.422 357.447 357.479 357.516 357.598 358 + Bin 1358: 358 358.167 358.261 358.316 358.357 358.387 358.409 358.448 358.499 358.573 359 + Bin 1359: 359 359.207 359.283 359.332 359.368 359.398 359.431 359.471 359.522 359.594 360 + Bin 1360: 360 360.171 360.254 360.312 360.348 360.385 360.412 360.45 360.495 360.572 361 + Bin 1361: 361 361.177 361.259 361.313 361.343 361.371 361.408 361.44 361.491 361.56 362 + Bin 1362: 362 362.198 362.288 362.345 362.387 362.42 362.447 362.485 362.528 362.595 363 + Bin 1363: 363 363.22 363.324 363.385 363.423 363.454 363.477 363.511 363.544 363.616 364 + Bin 1364: 364 364.196 364.288 364.349 364.386 364.422 364.453 364.492 364.531 364.602 365 + Bin 1365: 365 365.189 365.287 365.344 365.382 365.417 365.447 365.489 365.523 365.599 366 + Bin 1366: 366 366.206 366.312 366.37 366.405 366.435 366.47 366.506 366.551 366.613 367 + Bin 1367: 367 367.205 367.292 367.352 367.393 367.427 367.456 367.494 367.54 367.609 368 + Bin 1368: 368 368.178 368.274 368.334 368.373 368.41 368.442 368.477 368.52 368.595 369 + Bin 1369: 369 369.196 369.298 369.36 369.398 369.432 369.457 369.494 369.532 369.599 370 + Bin 1370: 370 370.202 370.299 370.363 370.402 370.43 370.463 370.501 370.546 370.615 371 + Bin 1371: 371 371.209 371.308 371.373 371.413 371.436 371.469 371.499 371.535 371.614 372 + Bin 1372: 372 372.202 372.298 372.359 372.4 372.426 372.457 372.49 372.526 372.608 373 + Bin 1373: 373 373.202 373.297 373.351 373.391 373.424 373.452 373.481 373.511 373.601 374 + Bin 1374: 374 374.218 374.318 374.383 374.422 374.456 374.485 374.522 374.562 374.619 375 + Bin 1375: 375 375.216 375.317 375.381 375.42 375.454 375.491 375.524 375.559 375.648 376 + Bin 1376: 376 376.198 376.283 376.338 376.379 376.407 376.449 376.485 376.527 376.6 377 + Bin 1377: 377 377.181 377.276 377.348 377.399 377.435 377.468 377.499 377.535 377.637 378 + Bin 1378: 378 378.181 378.274 378.336 378.378 378.409 378.442 378.483 378.524 378.608 379 + Bin 1379: 379 379.205 379.311 379.379 379.423 379.463 379.499 379.533 379.569 379.651 380 + Bin 1380: 380 380.205 380.307 380.378 380.428 380.467 380.499 380.534 380.569 380.659 381 + Bin 1381: 381 381.18 381.28 381.334 381.386 381.423 381.457 381.497 381.543 381.637 382 + Bin 1382: 382 382.176 382.273 382.336 382.391 382.429 382.46 382.496 382.54 382.637 383 + Bin 1383: 383 383.194 383.292 383.356 383.399 383.436 383.477 383.519 383.564 383.657 384 + Bin 1384: 384 384.178 384.277 384.348 384.399 384.439 384.471 384.507 384.549 384.646 385 + Bin 1385: 385 385.182 385.292 385.354 385.4 385.434 385.468 385.511 385.559 385.649 386 + Bin 1386: 386 386.186 386.279 386.342 386.388 386.43 386.462 386.503 386.543 386.629 387 + Bin 1387: 387 387.187 387.292 387.364 387.419 387.451 387.486 387.515 387.554 387.665 388 + Bin 1388: 388 388.168 388.275 388.347 388.393 388.431 388.464 388.503 388.542 388.653 389 + Bin 1389: 389 389.175 389.27 389.338 389.385 389.42 389.457 389.49 389.532 389.627 390 + Bin 1390: 390 390.182 390.28 390.341 390.389 390.424 390.459 390.485 390.53 390.66 391 + Bin 1391: 391 391.164 391.252 391.312 391.353 391.383 391.423 391.46 391.514 391.638 392 + Bin 1392: 392 392.166 392.244 392.291 392.326 392.354 392.391 392.432 392.496 392.578 393 + Bin 1393: 393 393.174 393.266 393.326 393.368 393.407 393.44 393.48 393.527 393.587 394 + Bin 1394: 394 394.192 394.286 394.342 394.382 394.411 394.447 394.481 394.532 394.59 395 + Bin 1395: 395 395.239 395.339 395.396 395.438 395.471 395.5 395.538 395.585 395.635 396 + Bin 1396: 396 396.218 396.312 396.367 396.407 396.438 396.466 396.5 396.547 396.617 397 + Bin 1397: 397 397.192 397.291 397.351 397.395 397.428 397.462 397.496 397.549 397.615 398 + Bin 1398: 398 398.209 398.305 398.369 398.409 398.443 398.472 398.511 398.558 398.63 399 + Bin 1399: 399 399.187 399.266 399.32 399.362 399.393 399.424 399.466 399.522 399.594 400 + Bin 1400: 400 400.176 400.266 400.325 400.362 400.388 400.426 400.464 400.517 400.604 401 + Bin 1401: 401 401.212 401.316 401.371 401.415 401.45 401.476 401.516 401.552 401.618 402 + Bin 1402: 402 402.229 402.334 402.394 402.437 402.466 402.499 402.537 402.574 402.641 403 + Bin 1403: 403 403.191 403.29 403.344 403.375 403.409 403.435 403.472 403.513 403.607 404 + Bin 1404: 404 404.186 404.28 404.34 404.382 404.409 404.444 404.487 404.539 404.61 405 + Bin 1405: 405 405.199 405.302 405.359 405.402 405.436 405.463 405.5 405.546 405.622 406 + Bin 1406: 406 406.181 406.262 406.307 406.346 406.374 406.418 406.464 406.523 406.623 407 + Bin 1407: 407 407.138 407.21 407.26 407.292 407.324 407.371 407.417 407.485 407.599 408 + Bin 1408: 408 408.115 408.192 408.246 408.292 408.322 408.362 408.415 408.48 408.582 409 + Bin 1409: 409 409.126 409.213 409.27 409.314 409.345 409.386 409.437 409.505 409.608 410 + Bin 1410: 410 410.138 410.236 410.301 410.347 410.383 410.419 410.468 410.528 410.61 411 + Bin 1411: 411 411.153 411.241 411.303 411.344 411.373 411.411 411.466 411.533 411.614 412 + Bin 1412: 412 412.189 412.287 412.351 412.397 412.429 412.466 412.511 412.567 412.651 413 + Bin 1413: 413 413.172 413.256 413.31 413.352 413.387 413.422 413.471 413.522 413.616 414 + Bin 1414: 414 414.175 414.279 414.346 414.394 414.43 414.462 414.501 414.541 414.624 415 + Bin 1415: 415 415.175 415.275 415.329 415.367 415.403 415.439 415.484 415.537 415.624 416 + Bin 1416: 416 416.164 416.256 416.31 416.356 416.394 416.432 416.477 416.519 416.632 417 + Bin 1417: 417 417.145 417.238 417.297 417.332 417.373 417.413 417.455 417.504 417.611 418 + Bin 1418: 418 418.152 418.238 418.297 418.337 418.373 418.405 418.446 418.491 418.601 419 + Bin 1419: 419 419.141 419.231 419.291 419.335 419.381 419.424 419.466 419.515 419.606 420 + Bin 1420: 420 420.19 420.276 420.338 420.385 420.422 420.458 420.508 420.562 420.64 421 + Bin 1421: 421 421.182 421.278 421.343 421.391 421.424 421.464 421.506 421.546 421.652 422 + Bin 1422: 422 422.183 422.302 422.376 422.417 422.454 422.483 422.52 422.556 422.63 423 + Bin 1423: 423 423.234 423.33 423.386 423.43 423.457 423.485 423.525 423.56 423.641 424 + Bin 1424: 424 424.2 424.291 424.352 424.388 424.428 424.448 424.475 424.509 424.576 425 + Bin 1425: 425 425.219 425.314 425.371 425.409 425.432 425.462 425.495 425.54 425.597 426 + Bin 1426: 426 426.212 426.306 426.362 426.401 426.429 426.455 426.491 426.526 426.606 427 + Bin 1427: 427 427.19 427.275 427.324 427.358 427.385 427.415 427.445 427.476 427.571 428 + Bin 1428: 428 428.178 428.263 428.315 428.351 428.382 428.413 428.447 428.472 428.576 429 + Bin 1429: 429 429.187 429.284 429.336 429.376 429.402 429.432 429.459 429.491 429.599 430 + Bin 1430: 430 430.195 430.295 430.349 430.386 430.415 430.449 430.484 430.516 430.619 431 + Bin 1431: 431 431.192 431.284 431.339 431.375 431.404 431.429 431.459 431.493 431.623 432 + Bin 1432: 432 432.165 432.243 432.298 432.337 432.368 432.394 432.438 432.487 432.569 433 + Bin 1433: 433 433.172 433.261 433.318 433.361 433.389 433.422 433.466 433.504 433.606 434 + Bin 1434: 434 434.181 434.274 434.32 434.36 434.391 434.423 434.463 434.513 434.616 435 + Bin 1435: 435 435.183 435.276 435.329 435.366 435.403 435.436 435.468 435.508 435.584 436 + Bin 1436: 436 436.463 436.683 436.838 436.918 436.991 436.991 436.991 436.991 436.991 437 + Bin 1437: 437 -nan -nan -nan -nan -nan -nan -nan -nan -nan 438 + Bin 1438: 438 -nan -nan -nan -nan -nan -nan -nan -nan -nan 439 + Bin 1439: 439 -nan -nan -nan -nan -nan -nan -nan -nan -nan 440 + Bin 1440: 440 -nan -nan -nan -nan -nan -nan -nan -nan -nan 441 + Bin 1441: 441 -nan -nan -nan -nan -nan -nan -nan -nan -nan 442 + Bin 1442: 442 -nan -nan -nan -nan -nan -nan -nan -nan -nan 443 + Bin 1443: 443 -nan -nan -nan -nan -nan -nan -nan -nan -nan 444 + Bin 1444: 444 -nan -nan -nan -nan -nan -nan -nan -nan -nan 445 + Bin 1445: 445 -nan -nan -nan -nan -nan -nan -nan -nan -nan 446 + Bin 1446: 446 -nan -nan -nan -nan -nan -nan -nan -nan -nan 447 + Bin 1447: 447 -nan -nan -nan -nan -nan -nan -nan -nan -nan 448 + Bin 1448: 448 -nan -nan -nan -nan -nan -nan -nan -nan -nan 449 + Bin 1449: 449 -nan -nan -nan -nan -nan -nan -nan -nan -nan 450 + Bin 1450: 450 -nan -nan -nan -nan -nan -nan -nan -nan -nan 451 + Bin 1451: 451 -nan -nan -nan -nan -nan -nan -nan -nan -nan 452 + Bin 1452: 452 -nan -nan -nan -nan -nan -nan -nan -nan -nan 453 + Bin 1453: 453 -nan -nan -nan -nan -nan -nan -nan -nan -nan 454 + Bin 1454: 454 -nan -nan -nan -nan -nan -nan -nan -nan -nan 455 + Bin 1455: 455 -nan -nan -nan -nan -nan -nan -nan -nan -nan 456 + Bin 1456: 456 -nan -nan -nan -nan -nan -nan -nan -nan -nan 457 + Bin 1457: 457 -nan -nan -nan -nan -nan -nan -nan -nan -nan 458 + Bin 1458: 458 -nan -nan -nan -nan -nan -nan -nan -nan -nan 459 + Bin 1459: 459 -nan -nan -nan -nan -nan -nan -nan -nan -nan 460 + Bin 1460: 460 -nan -nan -nan -nan -nan -nan -nan -nan -nan 461 + Bin 1461: 461 -nan -nan -nan -nan -nan -nan -nan -nan -nan 462 + Bin 1462: 462 -nan -nan -nan -nan -nan -nan -nan -nan -nan 463 + Bin 1463: 463 -nan -nan -nan -nan -nan -nan -nan -nan -nan 464 + Bin 1464: 464 -nan -nan -nan -nan -nan -nan -nan -nan -nan 465 + Bin 1465: 465 -nan -nan -nan -nan -nan -nan -nan -nan -nan 466 + Bin 1466: 466 -nan -nan -nan -nan -nan -nan -nan -nan -nan 467 + Bin 1467: 467 -nan -nan -nan -nan -nan -nan -nan -nan -nan 468 + Bin 1468: 468 -nan -nan -nan -nan -nan -nan -nan -nan -nan 469 + Bin 1469: 469 -nan -nan -nan -nan -nan -nan -nan -nan -nan 470 + Bin 1470: 470 -nan -nan -nan -nan -nan -nan -nan -nan -nan 471 + Bin 1471: 471 -nan -nan -nan -nan -nan -nan -nan -nan -nan 472 + Bin 1472: 472 -nan -nan -nan -nan -nan -nan -nan -nan -nan 473 + Bin 1473: 473 -nan -nan -nan -nan -nan -nan -nan -nan -nan 474 + Bin 1474: 474 -nan -nan -nan -nan -nan -nan -nan -nan -nan 475 + Bin 1475: 475 -nan -nan -nan -nan -nan -nan -nan -nan -nan 476 + Bin 1476: 476 -nan -nan -nan -nan -nan -nan -nan -nan -nan 477 + Bin 1477: 477 -nan -nan -nan -nan -nan -nan -nan -nan -nan 478 + Bin 1478: 478 -nan -nan -nan -nan -nan -nan -nan -nan -nan 479 + Bin 1479: 479 -nan -nan -nan -nan -nan -nan -nan -nan -nan 480 + Bin 1480: 480 -nan -nan -nan -nan -nan -nan -nan -nan -nan 481 + Bin 1481: 481 -nan -nan -nan -nan -nan -nan -nan -nan -nan 482 + Bin 1482: 482 -nan -nan -nan -nan -nan -nan -nan -nan -nan 483 + Bin 1483: 483 -nan -nan -nan -nan -nan -nan -nan -nan -nan 484 + Bin 1484: 484 -nan -nan -nan -nan -nan -nan -nan -nan -nan 485 + Bin 1485: 485 -nan -nan -nan -nan -nan -nan -nan -nan -nan 486 + Bin 1486: 486 -nan -nan -nan -nan -nan -nan -nan -nan -nan 487 + Bin 1487: 487 -nan -nan -nan -nan -nan -nan -nan -nan -nan 488 + Bin 1488: 488 -nan -nan -nan -nan -nan -nan -nan -nan -nan 489 + Bin 1489: 489 -nan -nan -nan -nan -nan -nan -nan -nan -nan 490 + Bin 1490: 490 -nan -nan -nan -nan -nan -nan -nan -nan -nan 491 + Bin 1491: 491 -nan -nan -nan -nan -nan -nan -nan -nan -nan 492 + Bin 1492: 492 -nan -nan -nan -nan -nan -nan -nan -nan -nan 493 + Bin 1493: 493 -nan -nan -nan -nan -nan -nan -nan -nan -nan 494 + Bin 1494: 494 -nan -nan -nan -nan -nan -nan -nan -nan -nan 495 + Bin 1495: 495 -nan -nan -nan -nan -nan -nan -nan -nan -nan 496 + Bin 1496: 496 -nan -nan -nan -nan -nan -nan -nan -nan -nan 497 + Bin 1497: 497 -nan -nan -nan -nan -nan -nan -nan -nan -nan 498 + Bin 1498: 498 -nan -nan -nan -nan -nan -nan -nan -nan -nan 499 + Bin 1499: 499 -nan -nan -nan -nan -nan -nan -nan -nan -nan 500 + Bin 1500: 500 -nan -nan -nan -nan -nan -nan -nan -nan -nan 501 + Bin 1501: 501 -nan -nan -nan -nan -nan -nan -nan -nan -nan 502 + Bin 1502: 502 -nan -nan -nan -nan -nan -nan -nan -nan -nan 503 + Bin 1503: 503 -nan -nan -nan -nan -nan -nan -nan -nan -nan 504 + Bin 1504: 504 -nan -nan -nan -nan -nan -nan -nan -nan -nan 505 + Bin 1505: 505 -nan -nan -nan -nan -nan -nan -nan -nan -nan 506 + Bin 1506: 506 -nan -nan -nan -nan -nan -nan -nan -nan -nan 507 + Bin 1507: 507 -nan -nan -nan -nan -nan -nan -nan -nan -nan 508 + Bin 1508: 508 -nan -nan -nan -nan -nan -nan -nan -nan -nan 509 + Bin 1509: 509 -nan -nan -nan -nan -nan -nan -nan -nan -nan 510 + Bin 1510: 510 -nan -nan -nan -nan -nan -nan -nan -nan -nan 511 + Bin 1511: 511 -nan -nan -nan -nan -nan -nan -nan -nan -nan 512 + Bin 1512: 512 -nan -nan -nan -nan -nan -nan -nan -nan -nan 513 + Bin 1513: 513 -nan -nan -nan -nan -nan -nan -nan -nan -nan 514 + Bin 1514: 514 -nan -nan -nan -nan -nan -nan -nan -nan -nan 515 + Bin 1515: 515 -nan -nan -nan -nan -nan -nan -nan -nan -nan 516 + Bin 1516: 516 -nan -nan -nan -nan -nan -nan -nan -nan -nan 517 + Bin 1517: 517 -nan -nan -nan -nan -nan -nan -nan -nan -nan 518 + Bin 1518: 518 -nan -nan -nan -nan -nan -nan -nan -nan -nan 519 + Bin 1519: 519 -nan -nan -nan -nan -nan -nan -nan -nan -nan 520 + Bin 1520: 520 -nan -nan -nan -nan -nan -nan -nan -nan -nan 521 + Bin 1521: 521 -nan -nan -nan -nan -nan -nan -nan -nan -nan 522 + Bin 1522: 522 -nan -nan -nan -nan -nan -nan -nan -nan -nan 523 + Bin 1523: 523 -nan -nan -nan -nan -nan -nan -nan -nan -nan 524 + Bin 1524: 524 -nan -nan -nan -nan -nan -nan -nan -nan -nan 525 + Bin 1525: 525 -nan -nan -nan -nan -nan -nan -nan -nan -nan 526 + Bin 1526: 526 -nan -nan -nan -nan -nan -nan -nan -nan -nan 527 + Bin 1527: 527 -nan -nan -nan -nan -nan -nan -nan -nan -nan 528 + Bin 1528: 528 -nan -nan -nan -nan -nan -nan -nan -nan -nan 529 + Bin 1529: 529 -nan -nan -nan -nan -nan -nan -nan -nan -nan 530 + Bin 1530: 530 -nan -nan -nan -nan -nan -nan -nan -nan -nan 531 + Bin 1531: 531 -nan -nan -nan -nan -nan -nan -nan -nan -nan 532 + Bin 1532: 532 -nan -nan -nan -nan -nan -nan -nan -nan -nan 533 + Bin 1533: 533 -nan -nan -nan -nan -nan -nan -nan -nan -nan 534 + Bin 1534: 534 -nan -nan -nan -nan -nan -nan -nan -nan -nan 535 + Bin 1535: 535 -nan -nan -nan -nan -nan -nan -nan -nan -nan 536 + Bin 1536: 536 -nan -nan -nan -nan -nan -nan -nan -nan -nan 537 + Bin 1537: 537 -nan -nan -nan -nan -nan -nan -nan -nan -nan 538 + Bin 1538: 538 -nan -nan -nan -nan -nan -nan -nan -nan -nan 539 + Bin 1539: 539 -nan -nan -nan -nan -nan -nan -nan -nan -nan 540 + Bin 1540: 540 -nan -nan -nan -nan -nan -nan -nan -nan -nan 541 + Bin 1541: 541 -nan -nan -nan -nan -nan -nan -nan -nan -nan 542 + Bin 1542: 542 -nan -nan -nan -nan -nan -nan -nan -nan -nan 543 + Bin 1543: 543 -nan -nan -nan -nan -nan -nan -nan -nan -nan 544 + Bin 1544: 544 -nan -nan -nan -nan -nan -nan -nan -nan -nan 545 + Bin 1545: 545 -nan -nan -nan -nan -nan -nan -nan -nan -nan 546 + Bin 1546: 546 -nan -nan -nan -nan -nan -nan -nan -nan -nan 547 + Bin 1547: 547 -nan -nan -nan -nan -nan -nan -nan -nan -nan 548 + Bin 1548: 548 -nan -nan -nan -nan -nan -nan -nan -nan -nan 549 + Bin 1549: 549 -nan -nan -nan -nan -nan -nan -nan -nan -nan 550 + Bin 1550: 550 -nan -nan -nan -nan -nan -nan -nan -nan -nan 551 + Bin 1551: 551 -nan -nan -nan -nan -nan -nan -nan -nan -nan 552 + Bin 1552: 552 -nan -nan -nan -nan -nan -nan -nan -nan -nan 553 + Bin 1553: 553 -nan -nan -nan -nan -nan -nan -nan -nan -nan 554 + Bin 1554: 554 -nan -nan -nan -nan -nan -nan -nan -nan -nan 555 + Bin 1555: 555 -nan -nan -nan -nan -nan -nan -nan -nan -nan 556 + Bin 1556: 556 -nan -nan -nan -nan -nan -nan -nan -nan -nan 557 + Bin 1557: 557 -nan -nan -nan -nan -nan -nan -nan -nan -nan 558 + Bin 1558: 558 -nan -nan -nan -nan -nan -nan -nan -nan -nan 559 + Bin 1559: 559 -nan -nan -nan -nan -nan -nan -nan -nan -nan 560 + Bin 1560: 560 -nan -nan -nan -nan -nan -nan -nan -nan -nan 561 + Bin 1561: 561 -nan -nan -nan -nan -nan -nan -nan -nan -nan 562 + Bin 1562: 562 -nan -nan -nan -nan -nan -nan -nan -nan -nan 563 + Bin 1563: 563 -nan -nan -nan -nan -nan -nan -nan -nan -nan 564 + Bin 1564: 564 -nan -nan -nan -nan -nan -nan -nan -nan -nan 565 + Bin 1565: 565 -nan -nan -nan -nan -nan -nan -nan -nan -nan 566 + Bin 1566: 566 -nan -nan -nan -nan -nan -nan -nan -nan -nan 567 + Bin 1567: 567 -nan -nan -nan -nan -nan -nan -nan -nan -nan 568 + Bin 1568: 568 -nan -nan -nan -nan -nan -nan -nan -nan -nan 569 + Bin 1569: 569 -nan -nan -nan -nan -nan -nan -nan -nan -nan 570 + Bin 1570: 570 -nan -nan -nan -nan -nan -nan -nan -nan -nan 571 + Bin 1571: 571 -nan -nan -nan -nan -nan -nan -nan -nan -nan 572 + Bin 1572: 572 -nan -nan -nan -nan -nan -nan -nan -nan -nan 573 + Bin 1573: 573 -nan -nan -nan -nan -nan -nan -nan -nan -nan 574 + Bin 1574: 574 -nan -nan -nan -nan -nan -nan -nan -nan -nan 575 + Bin 1575: 575 -nan -nan -nan -nan -nan -nan -nan -nan -nan 576 + Bin 1576: 576 -nan -nan -nan -nan -nan -nan -nan -nan -nan 577 + Bin 1577: 577 -nan -nan -nan -nan -nan -nan -nan -nan -nan 578 + Bin 1578: 578 -nan -nan -nan -nan -nan -nan -nan -nan -nan 579 + Bin 1579: 579 -nan -nan -nan -nan -nan -nan -nan -nan -nan 580 + Bin 1580: 580 -nan -nan -nan -nan -nan -nan -nan -nan -nan 581 + Bin 1581: 581 -nan -nan -nan -nan -nan -nan -nan -nan -nan 582 + Bin 1582: 582 -nan -nan -nan -nan -nan -nan -nan -nan -nan 583 + Bin 1583: 583 -nan -nan -nan -nan -nan -nan -nan -nan -nan 584 + Bin 1584: 584 -nan -nan -nan -nan -nan -nan -nan -nan -nan 585 + Bin 1585: 585 -nan -nan -nan -nan -nan -nan -nan -nan -nan 586 + Bin 1586: 586 -nan -nan -nan -nan -nan -nan -nan -nan -nan 587 + Bin 1587: 587 -nan -nan -nan -nan -nan -nan -nan -nan -nan 588 + Bin 1588: 588 -nan -nan -nan -nan -nan -nan -nan -nan -nan 589 + Bin 1589: 589 -nan -nan -nan -nan -nan -nan -nan -nan -nan 590 + Bin 1590: 590 -nan -nan -nan -nan -nan -nan -nan -nan -nan 591 + Bin 1591: 591 -nan -nan -nan -nan -nan -nan -nan -nan -nan 592 + Bin 1592: 592 -nan -nan -nan -nan -nan -nan -nan -nan -nan 593 + Bin 1593: 593 -nan -nan -nan -nan -nan -nan -nan -nan -nan 594 + Bin 1594: 594 -nan -nan -nan -nan -nan -nan -nan -nan -nan 595 + Bin 1595: 595 -nan -nan -nan -nan -nan -nan -nan -nan -nan 596 + Bin 1596: 596 -nan -nan -nan -nan -nan -nan -nan -nan -nan 597 + Bin 1597: 597 -nan -nan -nan -nan -nan -nan -nan -nan -nan 598 + Bin 1598: 598 -nan -nan -nan -nan -nan -nan -nan -nan -nan 599 + Bin 1599: 599 -nan -nan -nan -nan -nan -nan -nan -nan -nan 600 + Bin 1600: 600 -nan -nan -nan -nan -nan -nan -nan -nan -nan 601 + Bin 1601: 601 -nan -nan -nan -nan -nan -nan -nan -nan -nan 602 + Bin 1602: 602 -nan -nan -nan -nan -nan -nan -nan -nan -nan 603 + Bin 1603: 603 -nan -nan -nan -nan -nan -nan -nan -nan -nan 604 + Bin 1604: 604 -nan -nan -nan -nan -nan -nan -nan -nan -nan 605 + Bin 1605: 605 -nan -nan -nan -nan -nan -nan -nan -nan -nan 606 + Bin 1606: 606 -nan -nan -nan -nan -nan -nan -nan -nan -nan 607 + Bin 1607: 607 -nan -nan -nan -nan -nan -nan -nan -nan -nan 608 + Bin 1608: 608 -nan -nan -nan -nan -nan -nan -nan -nan -nan 609 + Bin 1609: 609 -nan -nan -nan -nan -nan -nan -nan -nan -nan 610 + Bin 1610: 610 -nan -nan -nan -nan -nan -nan -nan -nan -nan 611 + Bin 1611: 611 -nan -nan -nan -nan -nan -nan -nan -nan -nan 612 + Bin 1612: 612 -nan -nan -nan -nan -nan -nan -nan -nan -nan 613 + Bin 1613: 613 -nan -nan -nan -nan -nan -nan -nan -nan -nan 614 + Bin 1614: 614 -nan -nan -nan -nan -nan -nan -nan -nan -nan 615 + Bin 1615: 615 -nan -nan -nan -nan -nan -nan -nan -nan -nan 616 + Bin 1616: 616 -nan -nan -nan -nan -nan -nan -nan -nan -nan 617 + Bin 1617: 617 -nan -nan -nan -nan -nan -nan -nan -nan -nan 618 + Bin 1618: 618 -nan -nan -nan -nan -nan -nan -nan -nan -nan 619 + Bin 1619: 619 -nan -nan -nan -nan -nan -nan -nan -nan -nan 620 + Bin 1620: 620 -nan -nan -nan -nan -nan -nan -nan -nan -nan 621 + Bin 1621: 621 -nan -nan -nan -nan -nan -nan -nan -nan -nan 622 + Bin 1622: 622 -nan -nan -nan -nan -nan -nan -nan -nan -nan 623 + Bin 1623: 623 -nan -nan -nan -nan -nan -nan -nan -nan -nan 624 + Bin 1624: 624 -nan -nan -nan -nan -nan -nan -nan -nan -nan 625 + Bin 1625: 625 -nan -nan -nan -nan -nan -nan -nan -nan -nan 626 + Bin 1626: 626 -nan -nan -nan -nan -nan -nan -nan -nan -nan 627 + Bin 1627: 627 -nan -nan -nan -nan -nan -nan -nan -nan -nan 628 + Bin 1628: 628 -nan -nan -nan -nan -nan -nan -nan -nan -nan 629 + Bin 1629: 629 -nan -nan -nan -nan -nan -nan -nan -nan -nan 630 + Bin 1630: 630 -nan -nan -nan -nan -nan -nan -nan -nan -nan 631 + Bin 1631: 631 -nan -nan -nan -nan -nan -nan -nan -nan -nan 632 + Bin 1632: 632 -nan -nan -nan -nan -nan -nan -nan -nan -nan 633 + Bin 1633: 633 -nan -nan -nan -nan -nan -nan -nan -nan -nan 634 + Bin 1634: 634 -nan -nan -nan -nan -nan -nan -nan -nan -nan 635 + Bin 1635: 635 -nan -nan -nan -nan -nan -nan -nan -nan -nan 636 + Bin 1636: 636 -nan -nan -nan -nan -nan -nan -nan -nan -nan 637 + Bin 1637: 637 -nan -nan -nan -nan -nan -nan -nan -nan -nan 638 + Bin 1638: 638 -nan -nan -nan -nan -nan -nan -nan -nan -nan 639 + Bin 1639: 639 -nan -nan -nan -nan -nan -nan -nan -nan -nan 640 + Bin 1640: 640 -nan -nan -nan -nan -nan -nan -nan -nan -nan 641 + Bin 1641: 641 -nan -nan -nan -nan -nan -nan -nan -nan -nan 642 + Bin 1642: 642 -nan -nan -nan -nan -nan -nan -nan -nan -nan 643 + Bin 1643: 643 -nan -nan -nan -nan -nan -nan -nan -nan -nan 644 + Bin 1644: 644 -nan -nan -nan -nan -nan -nan -nan -nan -nan 645 + Bin 1645: 645 -nan -nan -nan -nan -nan -nan -nan -nan -nan 646 + Bin 1646: 646 -nan -nan -nan -nan -nan -nan -nan -nan -nan 647 + Bin 1647: 647 -nan -nan -nan -nan -nan -nan -nan -nan -nan 648 + Bin 1648: 648 -nan -nan -nan -nan -nan -nan -nan -nan -nan 649 + Bin 1649: 649 -nan -nan -nan -nan -nan -nan -nan -nan -nan 650 + Bin 1650: 650 -nan -nan -nan -nan -nan -nan -nan -nan -nan 651 + Bin 1651: 651 -nan -nan -nan -nan -nan -nan -nan -nan -nan 652 + Bin 1652: 652 -nan -nan -nan -nan -nan -nan -nan -nan -nan 653 + Bin 1653: 653 -nan -nan -nan -nan -nan -nan -nan -nan -nan 654 + Bin 1654: 654 -nan -nan -nan -nan -nan -nan -nan -nan -nan 655 + Bin 1655: 655 -nan -nan -nan -nan -nan -nan -nan -nan -nan 656 + Bin 1656: 656 -nan -nan -nan -nan -nan -nan -nan -nan -nan 657 + Bin 1657: 657 -nan -nan -nan -nan -nan -nan -nan -nan -nan 658 + Bin 1658: 658 -nan -nan -nan -nan -nan -nan -nan -nan -nan 659 + Bin 1659: 659 -nan -nan -nan -nan -nan -nan -nan -nan -nan 660 + Bin 1660: 660 -nan -nan -nan -nan -nan -nan -nan -nan -nan 661 + Bin 1661: 661 -nan -nan -nan -nan -nan -nan -nan -nan -nan 662 + Bin 1662: 662 -nan -nan -nan -nan -nan -nan -nan -nan -nan 663 + Bin 1663: 663 -nan -nan -nan -nan -nan -nan -nan -nan -nan 664 + Bin 1664: 664 -nan -nan -nan -nan -nan -nan -nan -nan -nan 665 + Bin 1665: 665 -nan -nan -nan -nan -nan -nan -nan -nan -nan 666 + Bin 1666: 666 -nan -nan -nan -nan -nan -nan -nan -nan -nan 667 + Bin 1667: 667 -nan -nan -nan -nan -nan -nan -nan -nan -nan 668 + Bin 1668: 668 -nan -nan -nan -nan -nan -nan -nan -nan -nan 669 + Bin 1669: 669 -nan -nan -nan -nan -nan -nan -nan -nan -nan 670 + Bin 1670: 670 -nan -nan -nan -nan -nan -nan -nan -nan -nan 671 + Bin 1671: 671 -nan -nan -nan -nan -nan -nan -nan -nan -nan 672 + Bin 1672: 672 -nan -nan -nan -nan -nan -nan -nan -nan -nan 673 + Bin 1673: 673 -nan -nan -nan -nan -nan -nan -nan -nan -nan 674 + Bin 1674: 674 -nan -nan -nan -nan -nan -nan -nan -nan -nan 675 + Bin 1675: 675 -nan -nan -nan -nan -nan -nan -nan -nan -nan 676 + Bin 1676: 676 -nan -nan -nan -nan -nan -nan -nan -nan -nan 677 + Bin 1677: 677 -nan -nan -nan -nan -nan -nan -nan -nan -nan 678 + Bin 1678: 678 -nan -nan -nan -nan -nan -nan -nan -nan -nan 679 + Bin 1679: 679 -nan -nan -nan -nan -nan -nan -nan -nan -nan 680 + Bin 1680: 680 -nan -nan -nan -nan -nan -nan -nan -nan -nan 681 + Bin 1681: 681 -nan -nan -nan -nan -nan -nan -nan -nan -nan 682 + Bin 1682: 682 -nan -nan -nan -nan -nan -nan -nan -nan -nan 683 + Bin 1683: 683 -nan -nan -nan -nan -nan -nan -nan -nan -nan 684 + Bin 1684: 684 -nan -nan -nan -nan -nan -nan -nan -nan -nan 685 + Bin 1685: 685 -nan -nan -nan -nan -nan -nan -nan -nan -nan 686 + Bin 1686: 686 -nan -nan -nan -nan -nan -nan -nan -nan -nan 687 + Bin 1687: 687 -nan -nan -nan -nan -nan -nan -nan -nan -nan 688 + Bin 1688: 688 -nan -nan -nan -nan -nan -nan -nan -nan -nan 689 + Bin 1689: 689 -nan -nan -nan -nan -nan -nan -nan -nan -nan 690 + Bin 1690: 690 -nan -nan -nan -nan -nan -nan -nan -nan -nan 691 + Bin 1691: 691 -nan -nan -nan -nan -nan -nan -nan -nan -nan 692 + Bin 1692: 692 -nan -nan -nan -nan -nan -nan -nan -nan -nan 693 + Bin 1693: 693 -nan -nan -nan -nan -nan -nan -nan -nan -nan 694 + Bin 1694: 694 -nan -nan -nan -nan -nan -nan -nan -nan -nan 695 + Bin 1695: 695 -nan -nan -nan -nan -nan -nan -nan -nan -nan 696 + Bin 1696: 696 -nan -nan -nan -nan -nan -nan -nan -nan -nan 697 + Bin 1697: 697 -nan -nan -nan -nan -nan -nan -nan -nan -nan 698 + Bin 1698: 698 -nan -nan -nan -nan -nan -nan -nan -nan -nan 699 + Bin 1699: 699 -nan -nan -nan -nan -nan -nan -nan -nan -nan 700 + Bin 1700: 700 -nan -nan -nan -nan -nan -nan -nan -nan -nan 701 + Bin 1701: 701 -nan -nan -nan -nan -nan -nan -nan -nan -nan 702 + Bin 1702: 702 -nan -nan -nan -nan -nan -nan -nan -nan -nan 703 + Bin 1703: 703 -nan -nan -nan -nan -nan -nan -nan -nan -nan 704 + Bin 1704: 704 -nan -nan -nan -nan -nan -nan -nan -nan -nan 705 + Bin 1705: 705 -nan -nan -nan -nan -nan -nan -nan -nan -nan 706 + Bin 1706: 706 -nan -nan -nan -nan -nan -nan -nan -nan -nan 707 + Bin 1707: 707 -nan -nan -nan -nan -nan -nan -nan -nan -nan 708 + Bin 1708: 708 -nan -nan -nan -nan -nan -nan -nan -nan -nan 709 + Bin 1709: 709 -nan -nan -nan -nan -nan -nan -nan -nan -nan 710 + Bin 1710: 710 -nan -nan -nan -nan -nan -nan -nan -nan -nan 711 + Bin 1711: 711 -nan -nan -nan -nan -nan -nan -nan -nan -nan 712 + Bin 1712: 712 -nan -nan -nan -nan -nan -nan -nan -nan -nan 713 + Bin 1713: 713 -nan -nan -nan -nan -nan -nan -nan -nan -nan 714 + Bin 1714: 714 -nan -nan -nan -nan -nan -nan -nan -nan -nan 715 + Bin 1715: 715 -nan -nan -nan -nan -nan -nan -nan -nan -nan 716 + Bin 1716: 716 -nan -nan -nan -nan -nan -nan -nan -nan -nan 717 + Bin 1717: 717 -nan -nan -nan -nan -nan -nan -nan -nan -nan 718 + Bin 1718: 718 -nan -nan -nan -nan -nan -nan -nan -nan -nan 719 + Bin 1719: 719 -nan -nan -nan -nan -nan -nan -nan -nan -nan 720 + Bin 1720: 720 -nan -nan -nan -nan -nan -nan -nan -nan -nan 721 + Bin 1721: 721 -nan -nan -nan -nan -nan -nan -nan -nan -nan 722 + Bin 1722: 722 -nan -nan -nan -nan -nan -nan -nan -nan -nan 723 + Bin 1723: 723 -nan -nan -nan -nan -nan -nan -nan -nan -nan 724 + Bin 1724: 724 -nan -nan -nan -nan -nan -nan -nan -nan -nan 725 + Bin 1725: 725 -nan -nan -nan -nan -nan -nan -nan -nan -nan 726 + Bin 1726: 726 -nan -nan -nan -nan -nan -nan -nan -nan -nan 727 + Bin 1727: 727 -nan -nan -nan -nan -nan -nan -nan -nan -nan 728 + Bin 1728: 728 -nan -nan -nan -nan -nan -nan -nan -nan -nan 729 + Bin 1729: 729 -nan -nan -nan -nan -nan -nan -nan -nan -nan 730 + Bin 1730: 730 -nan -nan -nan -nan -nan -nan -nan -nan -nan 731 + Bin 1731: 731 -nan -nan -nan -nan -nan -nan -nan -nan -nan 732 + Bin 1732: 732 -nan -nan -nan -nan -nan -nan -nan -nan -nan 733 + Bin 1733: 733 -nan -nan -nan -nan -nan -nan -nan -nan -nan 734 + Bin 1734: 734 -nan -nan -nan -nan -nan -nan -nan -nan -nan 735 + Bin 1735: 735 -nan -nan -nan -nan -nan -nan -nan -nan -nan 736 + Bin 1736: 736 -nan -nan -nan -nan -nan -nan -nan -nan -nan 737 + Bin 1737: 737 -nan -nan -nan -nan -nan -nan -nan -nan -nan 738 + Bin 1738: 738 -nan -nan -nan -nan -nan -nan -nan -nan -nan 739 + Bin 1739: 739 -nan -nan -nan -nan -nan -nan -nan -nan -nan 740 + Bin 1740: 740 -nan -nan -nan -nan -nan -nan -nan -nan -nan 741 + Bin 1741: 741 -nan -nan -nan -nan -nan -nan -nan -nan -nan 742 + Bin 1742: 742 -nan -nan -nan -nan -nan -nan -nan -nan -nan 743 + Bin 1743: 743 -nan -nan -nan -nan -nan -nan -nan -nan -nan 744 + Bin 1744: 744 -nan -nan -nan -nan -nan -nan -nan -nan -nan 745 + Bin 1745: 745 -nan -nan -nan -nan -nan -nan -nan -nan -nan 746 + Bin 1746: 746 -nan -nan -nan -nan -nan -nan -nan -nan -nan 747 + Bin 1747: 747 -nan -nan -nan -nan -nan -nan -nan -nan -nan 748 + Bin 1748: 748 -nan -nan -nan -nan -nan -nan -nan -nan -nan 749 + Bin 1749: 749 -nan -nan -nan -nan -nan -nan -nan -nan -nan 750 + Bin 1750: 750 -nan -nan -nan -nan -nan -nan -nan -nan -nan 751 + Bin 1751: 751 -nan -nan -nan -nan -nan -nan -nan -nan -nan 752 + Bin 1752: 752 -nan -nan -nan -nan -nan -nan -nan -nan -nan 753 + Bin 1753: 753 -nan -nan -nan -nan -nan -nan -nan -nan -nan 754 + Bin 1754: 754 -nan -nan -nan -nan -nan -nan -nan -nan -nan 755 + Bin 1755: 755 -nan -nan -nan -nan -nan -nan -nan -nan -nan 756 + Bin 1756: 756 -nan -nan -nan -nan -nan -nan -nan -nan -nan 757 + Bin 1757: 757 -nan -nan -nan -nan -nan -nan -nan -nan -nan 758 + Bin 1758: 758 -nan -nan -nan -nan -nan -nan -nan -nan -nan 759 + Bin 1759: 759 -nan -nan -nan -nan -nan -nan -nan -nan -nan 760 + Bin 1760: 760 -nan -nan -nan -nan -nan -nan -nan -nan -nan 761 + Bin 1761: 761 -nan -nan -nan -nan -nan -nan -nan -nan -nan 762 + Bin 1762: 762 -nan -nan -nan -nan -nan -nan -nan -nan -nan 763 + Bin 1763: 763 -nan -nan -nan -nan -nan -nan -nan -nan -nan 764 + Bin 1764: 764 -nan -nan -nan -nan -nan -nan -nan -nan -nan 765 + Bin 1765: 765 -nan -nan -nan -nan -nan -nan -nan -nan -nan 766 + Bin 1766: 766 -nan -nan -nan -nan -nan -nan -nan -nan -nan 767 + Bin 1767: 767 -nan -nan -nan -nan -nan -nan -nan -nan -nan 768 + Bin 1768: 768 -nan -nan -nan -nan -nan -nan -nan -nan -nan 769 + Bin 1769: 769 -nan -nan -nan -nan -nan -nan -nan -nan -nan 770 + Bin 1770: 770 -nan -nan -nan -nan -nan -nan -nan -nan -nan 771 + Bin 1771: 771 -nan -nan -nan -nan -nan -nan -nan -nan -nan 772 + Bin 1772: 772 -nan -nan -nan -nan -nan -nan -nan -nan -nan 773 + Bin 1773: 773 -nan -nan -nan -nan -nan -nan -nan -nan -nan 774 + Bin 1774: 774 -nan -nan -nan -nan -nan -nan -nan -nan -nan 775 + Bin 1775: 775 -nan -nan -nan -nan -nan -nan -nan -nan -nan 776 + Bin 1776: 776 -nan -nan -nan -nan -nan -nan -nan -nan -nan 777 + Bin 1777: 777 -nan -nan -nan -nan -nan -nan -nan -nan -nan 778 + Bin 1778: 778 -nan -nan -nan -nan -nan -nan -nan -nan -nan 779 + Bin 1779: 779 -nan -nan -nan -nan -nan -nan -nan -nan -nan 780 + Bin 1780: 780 -nan -nan -nan -nan -nan -nan -nan -nan -nan 781 + Bin 1781: 781 -nan -nan -nan -nan -nan -nan -nan -nan -nan 782 + Bin 1782: 782 -nan -nan -nan -nan -nan -nan -nan -nan -nan 783 + Bin 1783: 783 -nan -nan -nan -nan -nan -nan -nan -nan -nan 784 + Bin 1784: 784 -nan -nan -nan -nan -nan -nan -nan -nan -nan 785 + Bin 1785: 785 -nan -nan -nan -nan -nan -nan -nan -nan -nan 786 + Bin 1786: 786 -nan -nan -nan -nan -nan -nan -nan -nan -nan 787 + Bin 1787: 787 -nan -nan -nan -nan -nan -nan -nan -nan -nan 788 + Bin 1788: 788 -nan -nan -nan -nan -nan -nan -nan -nan -nan 789 + Bin 1789: 789 -nan -nan -nan -nan -nan -nan -nan -nan -nan 790 + Bin 1790: 790 -nan -nan -nan -nan -nan -nan -nan -nan -nan 791 + Bin 1791: 791 -nan -nan -nan -nan -nan -nan -nan -nan -nan 792 + Bin 1792: 792 -nan -nan -nan -nan -nan -nan -nan -nan -nan 793 + Bin 1793: 793 -nan -nan -nan -nan -nan -nan -nan -nan -nan 794 + Bin 1794: 794 -nan -nan -nan -nan -nan -nan -nan -nan -nan 795 + Bin 1795: 795 -nan -nan -nan -nan -nan -nan -nan -nan -nan 796 + Bin 1796: 796 -nan -nan -nan -nan -nan -nan -nan -nan -nan 797 + Bin 1797: 797 -nan -nan -nan -nan -nan -nan -nan -nan -nan 798 + Bin 1798: 798 -nan -nan -nan -nan -nan -nan -nan -nan -nan 799 + Bin 1799: 799 -nan -nan -nan -nan -nan -nan -nan -nan -nan 800 + Bin 1800: 800 -nan -nan -nan -nan -nan -nan -nan -nan -nan 801 + Bin 1801: 801 -nan -nan -nan -nan -nan -nan -nan -nan -nan 802 + Bin 1802: 802 -nan -nan -nan -nan -nan -nan -nan -nan -nan 803 + Bin 1803: 803 -nan -nan -nan -nan -nan -nan -nan -nan -nan 804 + Bin 1804: 804 -nan -nan -nan -nan -nan -nan -nan -nan -nan 805 + Bin 1805: 805 -nan -nan -nan -nan -nan -nan -nan -nan -nan 806 + Bin 1806: 806 -nan -nan -nan -nan -nan -nan -nan -nan -nan 807 + Bin 1807: 807 -nan -nan -nan -nan -nan -nan -nan -nan -nan 808 + Bin 1808: 808 -nan -nan -nan -nan -nan -nan -nan -nan -nan 809 + Bin 1809: 809 -nan -nan -nan -nan -nan -nan -nan -nan -nan 810 + Bin 1810: 810 -nan -nan -nan -nan -nan -nan -nan -nan -nan 811 + Bin 1811: 811 -nan -nan -nan -nan -nan -nan -nan -nan -nan 812 + Bin 1812: 812 -nan -nan -nan -nan -nan -nan -nan -nan -nan 813 + Bin 1813: 813 -nan -nan -nan -nan -nan -nan -nan -nan -nan 814 + Bin 1814: 814 -nan -nan -nan -nan -nan -nan -nan -nan -nan 815 + Bin 1815: 815 -nan -nan -nan -nan -nan -nan -nan -nan -nan 816 + Bin 1816: 816 -nan -nan -nan -nan -nan -nan -nan -nan -nan 817 + Bin 1817: 817 -nan -nan -nan -nan -nan -nan -nan -nan -nan 818 + Bin 1818: 818 -nan -nan -nan -nan -nan -nan -nan -nan -nan 819 + Bin 1819: 819 -nan -nan -nan -nan -nan -nan -nan -nan -nan 820 + Bin 1820: 820 -nan -nan -nan -nan -nan -nan -nan -nan -nan 821 + Bin 1821: 821 -nan -nan -nan -nan -nan -nan -nan -nan -nan 822 + Bin 1822: 822 -nan -nan -nan -nan -nan -nan -nan -nan -nan 823 + Bin 1823: 823 -nan -nan -nan -nan -nan -nan -nan -nan -nan 824 + Bin 1824: 824 -nan -nan -nan -nan -nan -nan -nan -nan -nan 825 + Bin 1825: 825 -nan -nan -nan -nan -nan -nan -nan -nan -nan 826 + Bin 1826: 826 -nan -nan -nan -nan -nan -nan -nan -nan -nan 827 + Bin 1827: 827 -nan -nan -nan -nan -nan -nan -nan -nan -nan 828 + Bin 1828: 828 -nan -nan -nan -nan -nan -nan -nan -nan -nan 829 + Bin 1829: 829 -nan -nan -nan -nan -nan -nan -nan -nan -nan 830 + Bin 1830: 830 -nan -nan -nan -nan -nan -nan -nan -nan -nan 831 + Bin 1831: 831 -nan -nan -nan -nan -nan -nan -nan -nan -nan 832 + Bin 1832: 832 -nan -nan -nan -nan -nan -nan -nan -nan -nan 833 + Bin 1833: 833 -nan -nan -nan -nan -nan -nan -nan -nan -nan 834 + Bin 1834: 834 -nan -nan -nan -nan -nan -nan -nan -nan -nan 835 + Bin 1835: 835 -nan -nan -nan -nan -nan -nan -nan -nan -nan 836 + Bin 1836: 836 -nan -nan -nan -nan -nan -nan -nan -nan -nan 837 + Bin 1837: 837 -nan -nan -nan -nan -nan -nan -nan -nan -nan 838 + Bin 1838: 838 -nan -nan -nan -nan -nan -nan -nan -nan -nan 839 + Bin 1839: 839 -nan -nan -nan -nan -nan -nan -nan -nan -nan 840 + Bin 1840: 840 -nan -nan -nan -nan -nan -nan -nan -nan -nan 841 + Bin 1841: 841 -nan -nan -nan -nan -nan -nan -nan -nan -nan 842 + Bin 1842: 842 -nan -nan -nan -nan -nan -nan -nan -nan -nan 843 + Bin 1843: 843 -nan -nan -nan -nan -nan -nan -nan -nan -nan 844 + Bin 1844: 844 -nan -nan -nan -nan -nan -nan -nan -nan -nan 845 + Bin 1845: 845 -nan -nan -nan -nan -nan -nan -nan -nan -nan 846 + Bin 1846: 846 -nan -nan -nan -nan -nan -nan -nan -nan -nan 847 + Bin 1847: 847 -nan -nan -nan -nan -nan -nan -nan -nan -nan 848 + Bin 1848: 848 -nan -nan -nan -nan -nan -nan -nan -nan -nan 849 + Bin 1849: 849 -nan -nan -nan -nan -nan -nan -nan -nan -nan 850 + Bin 1850: 850 -nan -nan -nan -nan -nan -nan -nan -nan -nan 851 + Bin 1851: 851 -nan -nan -nan -nan -nan -nan -nan -nan -nan 852 + Bin 1852: 852 -nan -nan -nan -nan -nan -nan -nan -nan -nan 853 + Bin 1853: 853 -nan -nan -nan -nan -nan -nan -nan -nan -nan 854 + Bin 1854: 854 -nan -nan -nan -nan -nan -nan -nan -nan -nan 855 + Bin 1855: 855 -nan -nan -nan -nan -nan -nan -nan -nan -nan 856 + Bin 1856: 856 -nan -nan -nan -nan -nan -nan -nan -nan -nan 857 + Bin 1857: 857 -nan -nan -nan -nan -nan -nan -nan -nan -nan 858 + Bin 1858: 858 -nan -nan -nan -nan -nan -nan -nan -nan -nan 859 + Bin 1859: 859 -nan -nan -nan -nan -nan -nan -nan -nan -nan 860 + Bin 1860: 860 -nan -nan -nan -nan -nan -nan -nan -nan -nan 861 + Bin 1861: 861 -nan -nan -nan -nan -nan -nan -nan -nan -nan 862 + Bin 1862: 862 -nan -nan -nan -nan -nan -nan -nan -nan -nan 863 + Bin 1863: 863 -nan -nan -nan -nan -nan -nan -nan -nan -nan 864 + Bin 1864: 864 -nan -nan -nan -nan -nan -nan -nan -nan -nan 865 + Bin 1865: 865 -nan -nan -nan -nan -nan -nan -nan -nan -nan 866 + Bin 1866: 866 -nan -nan -nan -nan -nan -nan -nan -nan -nan 867 + Bin 1867: 867 -nan -nan -nan -nan -nan -nan -nan -nan -nan 868 + Bin 1868: 868 -nan -nan -nan -nan -nan -nan -nan -nan -nan 869 + Bin 1869: 869 -nan -nan -nan -nan -nan -nan -nan -nan -nan 870 + Bin 1870: 870 -nan -nan -nan -nan -nan -nan -nan -nan -nan 871 + Bin 1871: 871 -nan -nan -nan -nan -nan -nan -nan -nan -nan 872 + Bin 1872: 872 -nan -nan -nan -nan -nan -nan -nan -nan -nan 873 + Bin 1873: 873 -nan -nan -nan -nan -nan -nan -nan -nan -nan 874 + Bin 1874: 874 -nan -nan -nan -nan -nan -nan -nan -nan -nan 875 + Bin 1875: 875 -nan -nan -nan -nan -nan -nan -nan -nan -nan 876 + Bin 1876: 876 -nan -nan -nan -nan -nan -nan -nan -nan -nan 877 + Bin 1877: 877 -nan -nan -nan -nan -nan -nan -nan -nan -nan 878 + Bin 1878: 878 -nan -nan -nan -nan -nan -nan -nan -nan -nan 879 + Bin 1879: 879 -nan -nan -nan -nan -nan -nan -nan -nan -nan 880 + Bin 1880: 880 -nan -nan -nan -nan -nan -nan -nan -nan -nan 881 + Bin 1881: 881 -nan -nan -nan -nan -nan -nan -nan -nan -nan 882 + Bin 1882: 882 -nan -nan -nan -nan -nan -nan -nan -nan -nan 883 + Bin 1883: 883 -nan -nan -nan -nan -nan -nan -nan -nan -nan 884 + Bin 1884: 884 -nan -nan -nan -nan -nan -nan -nan -nan -nan 885 + Bin 1885: 885 -nan -nan -nan -nan -nan -nan -nan -nan -nan 886 + Bin 1886: 886 -nan -nan -nan -nan -nan -nan -nan -nan -nan 887 + Bin 1887: 887 -nan -nan -nan -nan -nan -nan -nan -nan -nan 888 + Bin 1888: 888 -nan -nan -nan -nan -nan -nan -nan -nan -nan 889 + Bin 1889: 889 -nan -nan -nan -nan -nan -nan -nan -nan -nan 890 + Bin 1890: 890 -nan -nan -nan -nan -nan -nan -nan -nan -nan 891 + Bin 1891: 891 -nan -nan -nan -nan -nan -nan -nan -nan -nan 892 + Bin 1892: 892 -nan -nan -nan -nan -nan -nan -nan -nan -nan 893 + Bin 1893: 893 -nan -nan -nan -nan -nan -nan -nan -nan -nan 894 + Bin 1894: 894 -nan -nan -nan -nan -nan -nan -nan -nan -nan 895 + Bin 1895: 895 -nan -nan -nan -nan -nan -nan -nan -nan -nan 896 + Bin 1896: 896 -nan -nan -nan -nan -nan -nan -nan -nan -nan 897 + Bin 1897: 897 -nan -nan -nan -nan -nan -nan -nan -nan -nan 898 + Bin 1898: 898 -nan -nan -nan -nan -nan -nan -nan -nan -nan 899 + Bin 1899: 899 -nan -nan -nan -nan -nan -nan -nan -nan -nan 900 + Bin 1900: 900 -nan -nan -nan -nan -nan -nan -nan -nan -nan 901 + Bin 1901: 901 -nan -nan -nan -nan -nan -nan -nan -nan -nan 902 + Bin 1902: 902 -nan -nan -nan -nan -nan -nan -nan -nan -nan 903 + Bin 1903: 903 -nan -nan -nan -nan -nan -nan -nan -nan -nan 904 + Bin 1904: 904 -nan -nan -nan -nan -nan -nan -nan -nan -nan 905 + Bin 1905: 905 -nan -nan -nan -nan -nan -nan -nan -nan -nan 906 + Bin 1906: 906 -nan -nan -nan -nan -nan -nan -nan -nan -nan 907 + Bin 1907: 907 -nan -nan -nan -nan -nan -nan -nan -nan -nan 908 + Bin 1908: 908 -nan -nan -nan -nan -nan -nan -nan -nan -nan 909 + Bin 1909: 909 -nan -nan -nan -nan -nan -nan -nan -nan -nan 910 + Bin 1910: 910 -nan -nan -nan -nan -nan -nan -nan -nan -nan 911 + Bin 1911: 911 -nan -nan -nan -nan -nan -nan -nan -nan -nan 912 + Bin 1912: 912 -nan -nan -nan -nan -nan -nan -nan -nan -nan 913 + Bin 1913: 913 -nan -nan -nan -nan -nan -nan -nan -nan -nan 914 + Bin 1914: 914 -nan -nan -nan -nan -nan -nan -nan -nan -nan 915 + Bin 1915: 915 -nan -nan -nan -nan -nan -nan -nan -nan -nan 916 + Bin 1916: 916 -nan -nan -nan -nan -nan -nan -nan -nan -nan 917 + Bin 1917: 917 -nan -nan -nan -nan -nan -nan -nan -nan -nan 918 + Bin 1918: 918 -nan -nan -nan -nan -nan -nan -nan -nan -nan 919 + Bin 1919: 919 -nan -nan -nan -nan -nan -nan -nan -nan -nan 920 + Bin 1920: 920 -nan -nan -nan -nan -nan -nan -nan -nan -nan 921 + Bin 1921: 921 -nan -nan -nan -nan -nan -nan -nan -nan -nan 922 + Bin 1922: 922 -nan -nan -nan -nan -nan -nan -nan -nan -nan 923 + Bin 1923: 923 -nan -nan -nan -nan -nan -nan -nan -nan -nan 924 + Bin 1924: 924 -nan -nan -nan -nan -nan -nan -nan -nan -nan 925 + Bin 1925: 925 -nan -nan -nan -nan -nan -nan -nan -nan -nan 926 + Bin 1926: 926 -nan -nan -nan -nan -nan -nan -nan -nan -nan 927 + Bin 1927: 927 -nan -nan -nan -nan -nan -nan -nan -nan -nan 928 + Bin 1928: 928 -nan -nan -nan -nan -nan -nan -nan -nan -nan 929 + Bin 1929: 929 -nan -nan -nan -nan -nan -nan -nan -nan -nan 930 + Bin 1930: 930 -nan -nan -nan -nan -nan -nan -nan -nan -nan 931 + Bin 1931: 931 -nan -nan -nan -nan -nan -nan -nan -nan -nan 932 + Bin 1932: 932 -nan -nan -nan -nan -nan -nan -nan -nan -nan 933 + Bin 1933: 933 -nan -nan -nan -nan -nan -nan -nan -nan -nan 934 + Bin 1934: 934 -nan -nan -nan -nan -nan -nan -nan -nan -nan 935 + Bin 1935: 935 -nan -nan -nan -nan -nan -nan -nan -nan -nan 936 + Bin 1936: 936 -nan -nan -nan -nan -nan -nan -nan -nan -nan 937 + Bin 1937: 937 -nan -nan -nan -nan -nan -nan -nan -nan -nan 938 + Bin 1938: 938 -nan -nan -nan -nan -nan -nan -nan -nan -nan 939 + Bin 1939: 939 -nan -nan -nan -nan -nan -nan -nan -nan -nan 940 + Bin 1940: 940 -nan -nan -nan -nan -nan -nan -nan -nan -nan 941 + Bin 1941: 941 -nan -nan -nan -nan -nan -nan -nan -nan -nan 942 + Bin 1942: 942 -nan -nan -nan -nan -nan -nan -nan -nan -nan 943 + Bin 1943: 943 -nan -nan -nan -nan -nan -nan -nan -nan -nan 944 + Bin 1944: 944 -nan -nan -nan -nan -nan -nan -nan -nan -nan 945 + Bin 1945: 945 -nan -nan -nan -nan -nan -nan -nan -nan -nan 946 + Bin 1946: 946 -nan -nan -nan -nan -nan -nan -nan -nan -nan 947 + Bin 1947: 947 -nan -nan -nan -nan -nan -nan -nan -nan -nan 948 + Bin 1948: 948 -nan -nan -nan -nan -nan -nan -nan -nan -nan 949 + Bin 1949: 949 -nan -nan -nan -nan -nan -nan -nan -nan -nan 950 + Bin 1950: 950 -nan -nan -nan -nan -nan -nan -nan -nan -nan 951 + Bin 1951: 951 -nan -nan -nan -nan -nan -nan -nan -nan -nan 952 + Bin 1952: 952 -nan -nan -nan -nan -nan -nan -nan -nan -nan 953 + Bin 1953: 953 -nan -nan -nan -nan -nan -nan -nan -nan -nan 954 + Bin 1954: 954 -nan -nan -nan -nan -nan -nan -nan -nan -nan 955 + Bin 1955: 955 -nan -nan -nan -nan -nan -nan -nan -nan -nan 956 + Bin 1956: 956 -nan -nan -nan -nan -nan -nan -nan -nan -nan 957 + Bin 1957: 957 -nan -nan -nan -nan -nan -nan -nan -nan -nan 958 + Bin 1958: 958 -nan -nan -nan -nan -nan -nan -nan -nan -nan 959 + Bin 1959: 959 -nan -nan -nan -nan -nan -nan -nan -nan -nan 960 + Bin 1960: 960 -nan -nan -nan -nan -nan -nan -nan -nan -nan 961 + Bin 1961: 961 -nan -nan -nan -nan -nan -nan -nan -nan -nan 962 + Bin 1962: 962 -nan -nan -nan -nan -nan -nan -nan -nan -nan 963 + Bin 1963: 963 -nan -nan -nan -nan -nan -nan -nan -nan -nan 964 + Bin 1964: 964 -nan -nan -nan -nan -nan -nan -nan -nan -nan 965 + Bin 1965: 965 -nan -nan -nan -nan -nan -nan -nan -nan -nan 966 + Bin 1966: 966 -nan -nan -nan -nan -nan -nan -nan -nan -nan 967 + Bin 1967: 967 -nan -nan -nan -nan -nan -nan -nan -nan -nan 968 + Bin 1968: 968 -nan -nan -nan -nan -nan -nan -nan -nan -nan 969 + Bin 1969: 969 -nan -nan -nan -nan -nan -nan -nan -nan -nan 970 + Bin 1970: 970 -nan -nan -nan -nan -nan -nan -nan -nan -nan 971 + Bin 1971: 971 -nan -nan -nan -nan -nan -nan -nan -nan -nan 972 + Bin 1972: 972 -nan -nan -nan -nan -nan -nan -nan -nan -nan 973 + Bin 1973: 973 -nan -nan -nan -nan -nan -nan -nan -nan -nan 974 + Bin 1974: 974 -nan -nan -nan -nan -nan -nan -nan -nan -nan 975 + Bin 1975: 975 -nan -nan -nan -nan -nan -nan -nan -nan -nan 976 + Bin 1976: 976 -nan -nan -nan -nan -nan -nan -nan -nan -nan 977 + Bin 1977: 977 -nan -nan -nan -nan -nan -nan -nan -nan -nan 978 + Bin 1978: 978 -nan -nan -nan -nan -nan -nan -nan -nan -nan 979 + Bin 1979: 979 -nan -nan -nan -nan -nan -nan -nan -nan -nan 980 + Bin 1980: 980 -nan -nan -nan -nan -nan -nan -nan -nan -nan 981 + Bin 1981: 981 -nan -nan -nan -nan -nan -nan -nan -nan -nan 982 + Bin 1982: 982 -nan -nan -nan -nan -nan -nan -nan -nan -nan 983 + Bin 1983: 983 -nan -nan -nan -nan -nan -nan -nan -nan -nan 984 + Bin 1984: 984 -nan -nan -nan -nan -nan -nan -nan -nan -nan 985 + Bin 1985: 985 -nan -nan -nan -nan -nan -nan -nan -nan -nan 986 + Bin 1986: 986 -nan -nan -nan -nan -nan -nan -nan -nan -nan 987 + Bin 1987: 987 -nan -nan -nan -nan -nan -nan -nan -nan -nan 988 + Bin 1988: 988 -nan -nan -nan -nan -nan -nan -nan -nan -nan 989 + Bin 1989: 989 -nan -nan -nan -nan -nan -nan -nan -nan -nan 990 + Bin 1990: 990 -nan -nan -nan -nan -nan -nan -nan -nan -nan 991 + Bin 1991: 991 -nan -nan -nan -nan -nan -nan -nan -nan -nan 992 + Bin 1992: 992 -nan -nan -nan -nan -nan -nan -nan -nan -nan 993 + Bin 1993: 993 -nan -nan -nan -nan -nan -nan -nan -nan -nan 994 + Bin 1994: 994 -nan -nan -nan -nan -nan -nan -nan -nan -nan 995 + Bin 1995: 995 -nan -nan -nan -nan -nan -nan -nan -nan -nan 996 + Bin 1996: 996 -nan -nan -nan -nan -nan -nan -nan -nan -nan 997 + Bin 1997: 997 -nan -nan -nan -nan -nan -nan -nan -nan -nan 998 + Bin 1998: 998 -nan -nan -nan -nan -nan -nan -nan -nan -nan 999 + Bin 1999: 999 -nan -nan -nan -nan -nan -nan -nan -nan -nan 1000 + +Det 8: + Bin 0: -90 -nan -nan -nan -nan -nan -nan -nan -nan -nan -89 + Bin 1: -89 -nan -nan -nan -nan -nan -nan -nan -nan -nan -88 + Bin 2: -88 -nan -nan -nan -nan -nan -nan -nan -nan -nan -87 + Bin 3: -87 -nan -nan -nan -nan -nan -nan -nan -nan -nan -86 + Bin 4: -86 -nan -nan -nan -nan -nan -nan -nan -nan -nan -85 + Bin 5: -85 -nan -nan -nan -nan -nan -nan -nan -nan -nan -84 + Bin 6: -84 -nan -nan -nan -nan -nan -nan -nan -nan -nan -83 + Bin 7: -83 -nan -nan -nan -nan -nan -nan -nan -nan -nan -82 + Bin 8: -82 -nan -nan -nan -nan -nan -nan -nan -nan -nan -81 + Bin 9: -81 -nan -nan -nan -nan -nan -nan -nan -nan -nan -80 + Bin 10: -80 -nan -nan -nan -nan -nan -nan -nan -nan -nan -79 + Bin 11: -79 -nan -nan -nan -nan -nan -nan -nan -nan -nan -78 + Bin 12: -78 -78 -78 -78 -78 -78 -78 -78 -77.1264 -77.1264 -77 + Bin 13: -77 -76.9904 -76.9835 -76.9547 -76.8464 -76.6807 -76.588 -76.3824 -76.2114 -76.0992 -76 + Bin 14: -76 -75.489 -75.2971 -75.2194 -75.1439 -75.1292 -75.1292 -75.0596 -75.046 -74.993 -75 + Bin 15: -75 -74.0669 -74.0669 -74.0669 -74.0669 -74.0669 -74.0669 -74.0669 -74.0669 -73.9664 -74 + Bin 16: -74 -73.9893 -73.9617 -73.9416 -73.9094 -73.8484 -73.8455 -73.7786 -73.596 -73.4013 -73 + Bin 17: -73 -72.9013 -72.8108 -72.7579 -72.7174 -72.6638 -72.604 -72.5406 -72.4456 -72.2998 -72 + Bin 18: -72 -71.9145 -71.735 -71.527 -71.4733 -71.4562 -71.4223 -71.3803 -71.3238 -71.2139 -71 + Bin 19: -71 -70.746 -70.6366 -70.5786 -70.5322 -70.4986 -70.4685 -70.4241 -70.3613 -70.2473 -70 + Bin 20: -70 -69.7361 -69.6293 -69.5683 -69.5306 -69.4999 -69.4672 -69.4188 -69.3601 -69.251 -69 + Bin 21: -69 -68.7373 -68.6256 -68.57 -68.5275 -68.4975 -68.4637 -68.419 -68.3607 -68.2477 -68 + Bin 22: -68 -67.7256 -67.6136 -67.5524 -67.5093 -67.4758 -67.4445 -67.4044 -67.3485 -67.248 -67 + Bin 23: -67 -66.6872 -66.5494 -66.478 -66.4268 -66.3934 -66.3632 -66.3246 -66.2694 -66.1767 -66 + Bin 24: -66 -65.7482 -65.6048 -65.5262 -65.4724 -65.4284 -65.403 -65.3684 -65.3146 -65.2187 -65 + Bin 25: -65 -64.6921 -64.5561 -64.4809 -64.4319 -64.398 -64.3629 -64.3195 -64.2642 -64.176 -64 + Bin 26: -64 -63.7677 -63.6224 -63.537 -63.4825 -63.4355 -63.3935 -63.3439 -63.2732 -63.1703 -63 + Bin 27: -63 -62.8075 -62.7018 -62.6294 -62.5823 -62.5389 -62.498 -62.4458 -62.3738 -62.2457 -62 + Bin 28: -62 -61.7589 -61.6497 -61.5809 -61.5345 -61.4984 -61.4592 -61.409 -61.3402 -61.2253 -61 + Bin 29: -61 -60.7484 -60.6349 -60.564 -60.5181 -60.4772 -60.4399 -60.3951 -60.3308 -60.2201 -60 + Bin 30: -60 -59.7368 -59.6186 -59.5476 -59.4966 -59.4555 -59.418 -59.3718 -59.3076 -59.2059 -59 + Bin 31: -59 -58.7644 -58.6417 -58.5747 -58.5287 -58.4876 -58.4463 -58.3978 -58.3297 -58.2153 -58 + Bin 32: -58 -57.752 -57.631 -57.565 -57.5131 -57.47 -57.4364 -57.3872 -57.3244 -57.2182 -57 + Bin 33: -57 -56.7418 -56.6198 -56.5481 -56.497 -56.4594 -56.4187 -56.3731 -56.3071 -56.205 -56 + Bin 34: -56 -55.7409 -55.6125 -55.5342 -55.4836 -55.4429 -55.4076 -55.3616 -55.3011 -55.2021 -55 + Bin 35: -55 -54.7637 -54.65 -54.5838 -54.5396 -54.5008 -54.4542 -54.4021 -54.3342 -54.2248 -54 + Bin 36: -54 -53.7111 -53.5804 -53.5011 -53.4427 -53.3898 -53.3546 -53.3109 -53.2549 -53.1662 -53 + Bin 37: -53 -52.7591 -52.6232 -52.5453 -52.4935 -52.4517 -52.4102 -52.3634 -52.2973 -52.1931 -52 + Bin 38: -52 -51.7784 -51.6616 -51.5901 -51.5384 -51.4944 -51.4584 -51.4108 -51.3427 -51.23 -51 + Bin 39: -51 -50.7279 -50.6084 -50.5395 -50.4906 -50.4523 -50.4117 -50.3627 -50.2987 -50.1997 -50 + Bin 40: -50 -49.7437 -49.6086 -49.5279 -49.4703 -49.4236 -49.383 -49.3384 -49.2771 -49.1886 -49 + Bin 41: -49 -48.746 -48.6044 -48.5209 -48.4617 -48.4107 -48.3671 -48.3185 -48.2574 -48.1642 -48 + Bin 42: -48 -47.7674 -47.6412 -47.5659 -47.5124 -47.4677 -47.4163 -47.3609 -47.291 -47.1888 -47 + Bin 43: -47 -46.7783 -46.6577 -46.5814 -46.5231 -46.4756 -46.4236 -46.3663 -46.2941 -46.1845 -46 + Bin 44: -46 -45.7761 -45.658 -45.5782 -45.5165 -45.4611 -45.4141 -45.3599 -45.2908 -45.1903 -45 + Bin 45: -45 -44.772 -44.6451 -44.5647 -44.5014 -44.4472 -44.3971 -44.3441 -44.2762 -44.175 -44 + Bin 46: -44 -43.7795 -43.6638 -43.5887 -43.5304 -43.4779 -43.4239 -43.3653 -43.2931 -43.1892 -43 + Bin 47: -43 -42.7756 -42.6524 -42.5748 -42.514 -42.4594 -42.4091 -42.3523 -42.2824 -42.1801 -42 + Bin 48: -42 -41.7751 -41.6495 -41.5709 -41.5109 -41.4602 -41.4047 -41.3445 -41.2719 -41.1715 -41 + Bin 49: -41 -40.8081 -40.6947 -40.6187 -40.5565 -40.5033 -40.4507 -40.3881 -40.309 -40.1972 -40 + Bin 50: -40 -39.785 -39.6755 -39.6021 -39.5448 -39.4926 -39.4459 -39.3906 -39.319 -39.2069 -39 + Bin 51: -39 -38.7623 -38.6422 -38.5651 -38.5065 -38.4511 -38.4063 -38.3526 -38.2849 -38.1858 -38 + Bin 52: -38 -37.7672 -37.6353 -37.5542 -37.4897 -37.4348 -37.3825 -37.327 -37.2619 -37.1684 -37 + Bin 53: -37 -36.7906 -36.6722 -36.597 -36.5378 -36.4856 -36.4257 -36.3636 -36.288 -36.1838 -36 + Bin 54: -36 -35.7937 -35.6897 -35.6215 -35.5691 -35.5216 -35.4662 -35.405 -35.3306 -35.2166 -35 + Bin 55: -35 -34.7675 -34.6524 -34.573 -34.5068 -34.4479 -34.4075 -34.3603 -34.2969 -34.1985 -34 + Bin 56: -34 -33.7608 -33.6434 -33.5689 -33.5104 -33.4574 -33.4064 -33.3508 -33.2828 -33.1813 -33 + Bin 57: -33 -32.8078 -32.7101 -32.6502 -32.6025 -32.5613 -32.5036 -32.4359 -32.3479 -32.2177 -32 + Bin 58: -32 -31.784 -31.682 -31.6158 -31.566 -31.5246 -31.4723 -31.4118 -31.333 -31.2182 -31 + Bin 59: -31 -30.7681 -30.6326 -30.5481 -30.4861 -30.4355 -30.3931 -30.3451 -30.2803 -30.179 -30 + Bin 60: -30 -29.766 -29.64 -29.5637 -29.5077 -29.4605 -29.4156 -29.3628 -29.2947 -29.1914 -29 + Bin 61: -29 -28.775 -28.6508 -28.5751 -28.5162 -28.467 -28.4204 -28.3675 -28.2977 -28.1914 -28 + Bin 62: -28 -27.779 -27.667 -27.5932 -27.5382 -27.4919 -27.4457 -27.3907 -27.3175 -27.2045 -27 + Bin 63: -27 -26.7538 -26.6263 -26.5448 -26.4851 -26.4364 -26.3934 -26.3438 -26.2805 -26.1842 -26 + Bin 64: -26 -25.7761 -25.6465 -25.5666 -25.5054 -25.4574 -25.4105 -25.3606 -25.2954 -25.1969 -25 + Bin 65: -25 -24.8328 -24.7482 -24.6969 -24.658 -24.6259 -24.5564 -24.4613 -24.3325 -24.1687 -24 + Bin 66: -24 -23.5936 -23.4027 -23.2847 -23.2107 -23.1651 -23.149 -23.1315 -23.1049 -23.0604 -23 + Bin 67: -23 -22.9685 -22.9151 -22.8308 -22.7201 -22.5925 -22.4486 -22.2898 -22.1541 -22.0588 -22 + Bin 68: -22 -21.899 -21.8385 -21.7992 -21.7726 -21.7537 -21.6918 -21.6049 -21.4777 -21.3002 -21 + Bin 69: -21 -20.8445 -20.6835 -20.557 -20.4609 -20.3897 -20.3505 -20.3074 -20.251 -20.1619 -20 + Bin 70: -20 -19.7872 -19.687 -19.6203 -19.5679 -19.5181 -19.4771 -19.4249 -19.3513 -19.2337 -19 + Bin 71: -19 -18.7581 -18.6353 -18.5616 -18.5088 -18.4642 -18.4217 -18.373 -18.3088 -18.2085 -18 + Bin 72: -18 -17.7573 -17.645 -17.5794 -17.5314 -17.4897 -17.4401 -17.3826 -17.3096 -17.1987 -17 + Bin 73: -17 -16.7899 -16.6826 -16.6132 -16.5598 -16.5141 -16.4665 -16.409 -16.331 -16.2077 -16 + Bin 74: -16 -15.8049 -15.7063 -15.6437 -15.5968 -15.5558 -15.5047 -15.4431 -15.3594 -15.2275 -15 + Bin 75: -15 -14.7725 -14.654 -14.5803 -14.5255 -14.48 -14.4385 -14.3877 -14.3163 -14.2073 -14 + Bin 76: -14 -13.7675 -13.6391 -13.5618 -13.5073 -13.4647 -13.4185 -13.3654 -13.2959 -13.1919 -13 + Bin 77: -13 -12.7495 -12.6142 -12.5297 -12.4673 -12.4201 -12.3817 -12.3351 -12.272 -12.178 -12 + Bin 78: -12 -11.7766 -11.6409 -11.561 -11.5041 -11.4582 -11.4122 -11.3583 -11.2876 -11.183 -11 + Bin 79: -11 -10.7769 -10.6556 -10.5779 -10.5193 -10.4698 -10.426 -10.3736 -10.3052 -10.1948 -10 + Bin 80: -10 -9.77446 -9.63795 -9.55511 -9.49827 -9.45464 -9.40677 -9.35483 -9.28766 -9.18436 -9 + Bin 81: -9 -8.77684 -8.65548 -8.58075 -8.52638 -8.47949 -8.43491 -8.38114 -8.30863 -8.19732 -8 + Bin 82: -8 -7.7693 -7.64291 -7.56442 -7.50405 -7.45422 -7.41111 -7.36181 -7.29487 -7.1934 -7 + Bin 83: -7 -6.77466 -6.65044 -6.57324 -6.51872 -6.4733 -6.43079 -6.37988 -6.3107 -6.19998 -6 + Bin 84: -6 -5.77572 -5.66371 -5.59431 -5.54331 -5.5001 -5.45524 -5.40036 -5.32813 -5.21366 -5 + Bin 85: -5 -4.75814 -4.62947 -4.55153 -4.49545 -4.45032 -4.40749 -4.35882 -4.29348 -4.19402 -4 + Bin 86: -4 -3.77249 -3.65138 -3.57631 -3.52269 -3.47899 -3.43713 -3.38593 -3.31806 -3.21016 -3 + Bin 87: -3 -2.75109 -2.63172 -2.55766 -2.50356 -2.4584 -2.41587 -2.36791 -2.30114 -2.20125 -2 + Bin 88: -2 -1.75406 -1.62099 -1.5441 -1.48763 -1.44186 -1.40136 -1.35304 -1.28797 -1.18691 -1 + Bin 89: -1 -0.772719 -0.649594 -0.577449 -0.527336 -0.487993 -0.437625 -0.379275 -0.303678 -0.19222 0 + Bin 90: 0 0.146356 0.231505 0.285606 0.326136 0.359703 0.427107 0.517773 0.649206 0.832656 1 + Bin 91: 1 1.48396 1.67264 1.76568 1.81741 1.84705 1.85404 1.86251 1.87452 1.90716 2 + Bin 92: 2 2.04501 2.15613 2.30375 2.42172 2.50883 2.59216 2.69907 2.83139 2.94332 3 + Bin 93: 3 3.1547 3.21695 3.24044 3.2526 3.26062 3.2949 3.34572 3.43476 3.60556 4 + Bin 94: 4 4.14961 4.34622 4.48656 4.58253 4.65406 4.68637 4.72723 4.78151 4.86306 5 + Bin 95: 5 5.22422 5.34743 5.42536 5.48269 5.53063 5.57512 5.62771 5.7003 5.80838 6 + Bin 96: 6 6.20493 6.33026 6.40865 6.46724 6.51395 6.56139 6.61868 6.69435 6.80845 7 + Bin 97: 7 7.22224 7.34647 7.42521 7.48298 7.52936 7.57436 7.62913 7.70219 7.80851 8 + Bin 98: 8 8.20297 8.32963 8.41001 8.46809 8.51492 8.5601 8.61563 8.68843 8.80226 9 + Bin 99: 9 9.23554 9.36085 9.43712 9.49412 9.54213 9.58554 9.63819 9.70556 9.80732 10 + Bin 100: 10 10.2281 10.3657 10.449 10.5079 10.553 10.5956 10.647 10.7156 10.8184 11 + Bin 101: 11 11.2206 11.3457 11.4227 11.4781 11.5238 11.5681 11.623 11.6943 11.8057 12 + Bin 102: 12 12.228 12.3525 12.4316 12.4881 12.534 12.5774 12.6284 12.6966 12.802 13 + Bin 103: 13 13.2224 13.3493 13.4283 13.4857 13.5306 13.5741 13.6263 13.6998 13.8116 14 + Bin 104: 14 14.244 14.3795 14.4641 14.5239 14.5719 14.6151 14.6642 14.7286 14.8225 15 + Bin 105: 15 15.221 15.3818 15.4813 15.5556 15.6176 15.6641 15.7175 15.781 15.8678 16 + Bin 106: 16 16.1649 16.2915 16.3844 16.4597 16.528 16.5859 16.651 16.7281 16.833 17 + Bin 107: 17 17.1979 17.3147 17.3981 17.4674 17.5319 17.5951 17.6614 17.7402 17.8477 18 + Bin 108: 18 18.1716 18.2903 18.3758 18.4445 18.4999 18.5762 18.6498 18.7351 18.8397 19 + Bin 109: 19 19.1617 19.2769 19.3597 19.4313 19.5019 19.565 19.6378 19.7262 19.8391 20 + Bin 110: 20 20.1772 20.2938 20.3806 20.4529 20.5194 20.5771 20.6419 20.7189 20.8259 21 + Bin 111: 21 21.1862 21.3145 21.4077 21.4869 21.5601 21.6155 21.6764 21.7484 21.8479 22 + Bin 112: 22 22.1644 22.2674 22.3421 22.4055 22.4632 22.5351 22.6134 22.6997 22.819 23 + Bin 113: 23 23.1907 23.3074 23.3943 23.468 23.5366 23.5884 23.646 23.7175 23.8175 24 + Bin 114: 24 24.2056 24.3317 24.4217 24.498 24.5683 24.6249 24.6842 24.7519 24.8448 25 + Bin 115: 25 25.2016 25.3238 25.4064 25.4739 25.5373 25.602 25.6704 25.7476 25.8429 26 + Bin 116: 26 26.1793 26.2981 26.3746 26.4354 26.4903 26.5648 26.6407 26.7262 26.8357 27 + Bin 117: 27 27.1837 27.2949 27.3784 27.4513 27.5217 27.5789 27.6445 27.7179 27.8229 28 + Bin 118: 28 28.2073 28.335 28.432 28.5189 28.6033 28.6501 28.7007 28.7634 28.8531 29 + Bin 119: 29 29.1554 29.2473 29.3146 29.3737 29.4283 29.5107 29.5948 29.6848 29.807 30 + Bin 120: 30 30.1936 30.2983 30.3697 30.426 30.4782 30.5421 30.6152 30.6993 30.8101 31 + Bin 121: 31 31.2012 31.3246 31.4112 31.4855 31.5562 31.6185 31.6842 31.7614 31.8602 32 + Bin 122: 32 32.1571 32.256 32.3328 32.4016 32.4653 32.5329 32.6066 32.6932 32.8135 33 + Bin 123: 33 33.2031 33.3246 33.4143 33.4897 33.5573 33.6188 33.6831 33.7578 33.8532 34 + Bin 124: 34 34.1517 34.2661 34.3543 34.4261 34.4907 34.567 34.6461 34.7335 34.8422 35 + Bin 125: 35 35.1664 35.2763 35.3576 35.4282 35.4948 35.5586 35.6311 35.7171 35.8276 36 + Bin 126: 36 36.1965 36.3276 36.4185 36.4935 36.5646 36.6215 36.683 36.7533 36.8498 37 + Bin 127: 37 37.1786 37.2886 37.367 37.4302 37.4866 37.5558 37.6281 37.7153 37.8309 38 + Bin 128: 38 38.1866 38.3059 38.394 38.47 38.5404 38.604 38.6716 38.7482 38.8455 39 + Bin 129: 39 39.1657 39.2816 39.3684 39.4456 39.5181 39.5815 39.6481 39.7236 39.8298 40 + Bin 130: 40 40.1959 40.3091 40.391 40.4587 40.5227 40.5925 40.6628 40.7385 40.8391 41 + Bin 131: 41 41.1689 41.2869 41.3777 41.4613 41.5454 41.6134 41.6814 41.756 41.8545 42 + Bin 132: 42 42.1678 42.266 42.3412 42.4098 42.4744 42.5386 42.6088 42.6907 42.8024 43 + Bin 133: 43 43.1901 43.3051 43.3871 43.4594 43.5303 43.5999 43.6667 43.7448 43.8456 44 + Bin 134: 44 44.1797 44.2873 44.3648 44.4345 44.5051 44.5739 44.6475 44.7254 44.8316 45 + Bin 135: 45 45.1712 45.2817 45.3631 45.4314 45.4957 45.5636 45.6324 45.7129 45.8235 46 + Bin 136: 46 46.1875 46.2949 46.3697 46.4283 46.4794 46.5505 46.6223 46.7063 46.8215 47 + Bin 137: 47 47.1824 47.2931 47.3706 47.435 47.4972 47.5583 47.6282 47.715 47.8341 48 + Bin 138: 48 48.184 48.2945 48.3712 48.4338 48.4855 48.5457 48.6141 48.6982 48.8153 49 + Bin 139: 49 49.1815 49.3049 49.393 49.4618 49.5196 49.5804 49.6485 49.7301 49.8388 50 + Bin 140: 50 50.1697 50.2774 50.3526 50.4115 50.463 50.521 50.5909 50.6783 50.8059 51 + Bin 141: 51 51.2021 51.322 51.402 51.4635 51.5169 51.5676 51.6279 51.7058 51.8172 52 + Bin 142: 52 52.212 52.3478 52.4397 52.5075 52.5658 52.6147 52.6688 52.7387 52.8353 53 + Bin 143: 53 53.1878 53.3126 53.402 53.4723 53.5332 53.5888 53.6541 53.7321 53.8374 54 + Bin 144: 54 54.191 54.3093 54.3908 54.4539 54.5083 54.5675 54.633 54.7146 54.8268 55 + Bin 145: 55 55.1854 55.3023 55.3891 55.4562 55.5138 55.5654 55.6285 55.704 55.816 56 + Bin 146: 56 56.1898 56.2961 56.3676 56.4233 56.4688 56.5284 56.5991 56.6848 56.806 57 + Bin 147: 57 57.204 57.33 57.4153 57.4822 57.5376 57.5903 57.6512 57.7225 57.8295 58 + Bin 148: 58 58.1973 58.3142 58.3911 58.4565 58.5156 58.5697 58.6295 58.7045 58.8179 59 + Bin 149: 59 59.1731 59.2775 59.3492 59.4089 59.4615 59.5176 59.5856 59.6728 59.7992 60 + Bin 150: 60 60.1953 60.3001 60.3731 60.4265 60.4704 60.5256 60.586 60.6633 60.7796 61 + Bin 151: 61 61.2194 61.3479 61.4259 61.4856 61.5382 61.5828 61.634 61.7025 61.8077 62 + Bin 152: 62 62.2861 62.4379 62.5356 62.6019 62.6527 62.6896 62.7307 62.7861 62.8602 63 + Bin 153: 63 63.167 63.3078 63.4087 63.4876 63.5474 63.6207 63.6936 63.7726 63.8639 64 + Bin 154: 64 64.1605 64.2737 64.3677 64.4455 64.5151 64.5765 64.6447 64.7233 64.8292 65 + Bin 155: 65 65.1729 65.2779 65.3573 65.4246 65.4901 65.5509 65.6169 65.6983 65.8179 66 + Bin 156: 66 66.2123 66.3342 66.4183 66.4913 66.5609 66.6068 66.6613 66.7294 66.8282 67 + Bin 157: 67 67.1853 67.3153 67.4022 67.4661 67.5183 67.5863 67.6613 67.7404 67.8406 68 + Bin 158: 68 68.2242 68.3537 68.438 68.5081 68.5758 68.6373 68.6985 68.7712 68.8568 69 + Bin 159: 69 69.1591 69.2709 69.3522 69.4176 69.4795 69.5577 69.6314 69.7144 69.8311 70 + Bin 160: 70 70.198 70.3184 70.4103 70.4906 70.5655 70.61 70.6634 70.736 70.8294 71 + Bin 161: 71 71.1704 71.2778 71.3495 71.4066 71.4576 71.5396 71.6231 71.7169 71.833 72 + Bin 162: 72 72.1661 72.2821 72.374 72.4594 72.5424 72.5962 72.6575 72.7275 72.8263 73 + Bin 163: 73 73.2002 73.3299 73.4133 73.4785 73.5396 73.6044 73.6797 73.7508 73.8528 74 + Bin 164: 74 74.3105 74.5028 74.6264 74.7184 74.7856 74.811 74.8401 74.8702 74.9015 75 + Bin 165: 75 75.1009 75.2145 75.3064 75.3593 75.3928 75.5413 75.6307 75.7342 75.8589 76 + Bin 166: 76 76.1547 76.2976 76.4516 76.6043 76.7038 76.7453 76.791 76.8548 76.9075 77 + Bin 167: 77 77.0249 77.0362 77.0603 77.1032 77.1308 77.1806 77.2779 77.4615 77.769 78 + Bin 168: 78 78.1732 78.2674 78.3517 78.4875 78.6196 78.6196 78.6196 78.6196 78.6196 79 + Bin 169: 79 -nan -nan -nan -nan -nan -nan -nan -nan -nan 80 + Bin 170: 80 -nan -nan -nan -nan -nan -nan -nan -nan -nan 81 + Bin 171: 81 -nan -nan -nan -nan -nan -nan -nan -nan -nan 82 + Bin 172: 82 -nan -nan -nan -nan -nan -nan -nan -nan -nan 83 + Bin 173: 83 -nan -nan -nan -nan -nan -nan -nan -nan -nan 84 + Bin 174: 84 -nan -nan -nan -nan -nan -nan -nan -nan -nan 85 + Bin 175: 85 -nan -nan -nan -nan -nan -nan -nan -nan -nan 86 + Bin 176: 86 -nan -nan -nan -nan -nan -nan -nan -nan -nan 87 + Bin 177: 87 -nan -nan -nan -nan -nan -nan -nan -nan -nan 88 + Bin 178: 88 -nan -nan -nan -nan -nan -nan -nan -nan -nan 89 + Bin 179: 89 -nan -nan -nan -nan -nan -nan -nan -nan -nan 90 + diff --git a/Projects/AlPhaPha/2024/Calibration/VAMOS/FPMW/Toff/Toff13.txt b/Projects/AlPhaPha/2024/Calibration/VAMOS/FPMW/Toff/Toff13.txt new file mode 100644 index 0000000000000000000000000000000000000000..51a70b80cddd9bb6f0cf9e74d4b8290da9b398a7 --- /dev/null +++ b/Projects/AlPhaPha/2024/Calibration/VAMOS/FPMW/Toff/Toff13.txt @@ -0,0 +1,20 @@ +0 +0.325609 +-1.79704 +-0.687164 +-0.316989 +0.49171 +1.11539 +1.31082 +1.87908 +1.58154 +1.77268 +2.55213 +3.0334 +3.24897 +3.70459 +3.94321 +3.84525 +4.17475 +4.14283 +5.33984 diff --git a/Projects/AlPhaPha/2024/Calibration/VAMOS/FPMW/Toff/Toff14.txt b/Projects/AlPhaPha/2024/Calibration/VAMOS/FPMW/Toff/Toff14.txt new file mode 100644 index 0000000000000000000000000000000000000000..975edc1b4130b150737da6b53face6f835c7d5af --- /dev/null +++ b/Projects/AlPhaPha/2024/Calibration/VAMOS/FPMW/Toff/Toff14.txt @@ -0,0 +1,20 @@ +0 +0.174307 +0.996033 +1.53927 +1.99862 +2.7097 +2.73914 +3.25584 +3.88895 +4.83654 +3.99504 +4.69817 +4.92476 +5.00315 +7.33663 +5.57066 +5.36919 +4.05489 +6.27275 +6.50876 diff --git a/Projects/AlPhaPha/2024/Calibration/VAMOS/FPMW/Toff/Toff23.txt b/Projects/AlPhaPha/2024/Calibration/VAMOS/FPMW/Toff/Toff23.txt new file mode 100644 index 0000000000000000000000000000000000000000..4622cb8fddf682f03b3238120c3176e031a64ce1 --- /dev/null +++ b/Projects/AlPhaPha/2024/Calibration/VAMOS/FPMW/Toff/Toff23.txt @@ -0,0 +1,20 @@ +0 +0.325467 +-1.79725 +-0.687394 +-0.317231 +0.491523 +1.11516 +1.31058 +1.87884 +1.58129 +1.77246 +2.55191 +3.03317 +3.24875 +3.70444 +3.94315 +3.845 +4.17457 +4.14264 +5.33968 diff --git a/Projects/AlPhaPha/2024/Calibration/VAMOS/FPMW/Toff/Toff24.txt b/Projects/AlPhaPha/2024/Calibration/VAMOS/FPMW/Toff/Toff24.txt new file mode 100644 index 0000000000000000000000000000000000000000..884e3c0348abe629dae799bb8fba44235e0177dc --- /dev/null +++ b/Projects/AlPhaPha/2024/Calibration/VAMOS/FPMW/Toff/Toff24.txt @@ -0,0 +1,20 @@ +0 +0.174154 +0.995939 +1.53922 +1.99863 +2.70971 +2.73921 +3.256 +3.88915 +4.8367 +3.99502 +4.69809 +4.92467 +5.00315 +7.33665 +5.57061 +5.36919 +4.05489 +6.27283 +6.50878 diff --git a/Projects/AlPhaPha/2024/ChainSnake.sh b/Projects/AlPhaPha/2024/ChainSnake.sh new file mode 100644 index 0000000000000000000000000000000000000000..803ddc86a8c527b4041334495aca8b5fc5c7ccd8 --- /dev/null +++ b/Projects/AlPhaPha/2024/ChainSnake.sh @@ -0,0 +1,4 @@ +for run in {201..259}; do + ./convert_snakemake_generic.sh "$run" + wait +done diff --git a/Projects/AlPhaPha/2024/CleanCmake.sh b/Projects/AlPhaPha/2024/CleanCmake.sh new file mode 100644 index 0000000000000000000000000000000000000000..c3fc6f712e29b23c9b2a9fb8d515dc5897ff18fd --- /dev/null +++ b/Projects/AlPhaPha/2024/CleanCmake.sh @@ -0,0 +1,6 @@ +rm ./CMakeCache.txt +rm -rf ./CMakeFiles +rm ./cmake_install.cmake +rm ./compile_commands.json +rm ./Makefile +cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=1 ./ diff --git a/Projects/AlPhaPha/2024/Snakefile b/Projects/AlPhaPha/2024/Snakefile index 374a37903e8b95991d85c8577260d2d86afebc5d..31a1324137eafefcad008487cd9ba04ee6f03f4d 100644 --- a/Projects/AlPhaPha/2024/Snakefile +++ b/Projects/AlPhaPha/2024/Snakefile @@ -3,7 +3,7 @@ import subprocess # Lire le répertoire d'entrée depuis les arguments de configuration #input_directory = config["folder"] -input_directory = os.getcwd() + "/../DataMacro/output/run_246" +input_directory = os.getcwd() + "/../DataMacro/output/run_247" origin = [] # Iterate over files in input_directory for filename in os.listdir(input_directory): @@ -12,14 +12,14 @@ for filename in os.listdir(input_directory): origin.append(filename) # Définir le répertoire de sortie pour les fichiers convertis -phy_directory = os.getcwd() + "/../DataMacro/output/analysis/run_246" +phy_directory = os.getcwd() + "/../DataMacro/output/analysis/run_247" #phy_directory = "./" # define target files directory analysedfile = [] for inputfile in origin: #analysedfile.append("/home/morfouacep/Physics/NPTool/nptool/Projects/ana_e850/root/analysis/"+inputfile.replace("_raw_","_")) - analysedfile.append( os.getcwd() + "/../DataMacro/output/analysis/run_246/"+inputfile) + analysedfile.append( os.getcwd() + "/../DataMacro/output/analysis/run_247/"+inputfile) ## batch rules rule all: @@ -33,6 +33,6 @@ rule npanalysis: output: f"{phy_directory}/{{name}}.root" shell: - "npanalysis -T {input} RawTree -C Calibration.txt -D pista_e850_2024.detector -O {output}" + "npanalysis -T {input} RawTree -C Calibration.txt -D pista_e850_2024_alex.detector -O {output}" diff --git a/Projects/AlPhaPha/2024/configs/ConfigFPMW.dat b/Projects/AlPhaPha/2024/configs/ConfigFPMW.dat index ca33e19a33032d30f3deed9f5861f65402851ef2..22bfd54c11e32918e9e142582d448e84d923dc0b 100644 --- a/Projects/AlPhaPha/2024/configs/ConfigFPMW.dat +++ b/Projects/AlPhaPha/2024/configs/ConfigFPMW.dat @@ -1,2 +1,2 @@ ConfigFPMW -LINEA_PATH ./configs/Linearisation.txt +LINEA_PATH ./Calibration/VAMOS/FPMW/Linearisation.txt diff --git a/Projects/AlPhaPha/2024/configs/ConfigIC.dat b/Projects/AlPhaPha/2024/configs/ConfigIC.dat index b81f9e5915c43cb423b6d3c3ca800d20f3446860..c07810759210e260a7cb4c7f82a2bf6c22499e0f 100644 --- a/Projects/AlPhaPha/2024/configs/ConfigIC.dat +++ b/Projects/AlPhaPha/2024/configs/ConfigIC.dat @@ -1,3 +1,7 @@ ConfigIC - %LOAD_Z_SPLINE ./Calibration/VAMOS/CHIO/Z_spline.root DATA_YEAR 2024 + LOAD_Z_SPLINE ./Calibration/VAMOS/CHIO/Z_spline.root + LOAD_Z_SPLINE_EVAL ./Calibration/VAMOS/CHIO/Chio_Z_Spline_Eval.txt + LOAD_DE_SPLINE ./Calibration/VAMOS/CHIO/Spline_DE.root + LOAD_Y_SPLINE ./Calibration/VAMOS/CHIO/Spline_Y.root + LOAD_XY0_PROFILE ./Calibration/VAMOS/CHIO/ICXY_Profile.root diff --git a/Projects/AlPhaPha/2024/convert_snakemake_generic.sh b/Projects/AlPhaPha/2024/convert_snakemake_generic.sh index 526de6830dad5f03f9665d95bbb4ff429da0db62..da114d18691f4c6fe0bbd855c5f11f13b9f731e4 100755 --- a/Projects/AlPhaPha/2024/convert_snakemake_generic.sh +++ b/Projects/AlPhaPha/2024/convert_snakemake_generic.sh @@ -1,6 +1,32 @@ #!/bin/bash + +#Declare run number +#RUN_NUMBER="246" +RUN_NUMBER="$1" +num_cores=$(( $(nproc) - 4 )) + +# Check if Snakefile exists +if [[ ! -f "Snakefile" ]]; then + echo "Error: Snakefile not found!" + exit 1 +fi + +# Replace all occurrences of run_<anything> with run_244 +sed -i "s/run_[a-zA-Z0-9]\{3\}/run_${RUN_NUMBER}/g" Snakefile +echo "All occurrences of 'run_*' have been replaced with 'run_${RUN_NUMBER}' in Snakefile." + echo "- executing snakemake file for npanalysis..." -snakemake --cores 30 --forceall --keep-incomplete --keep-going --rerun-incomplete +snakemake --cores ${num_cores} --forceall --keep-incomplete --keep-going --rerun-incomplete --restart-times 3 + echo "- snakemake executed successfully!" echo "- Merging file..." -root -q '../DataMacro/Merger.C(30,"root/analysis","Run246","../DataMacro/output/analysis/run_246/run_raw_246_")' + +OName="\"Run${RUN_NUMBER}\"" +OPATH="\"root/analysis\"" +Path="\"../DataMacro/output/analysis/run_${RUN_NUMBER}/run_raw_${RUN_NUMBER}_\"" + +root -l -q "../DataMacro/Merger.C(30,${OPATH},${OName},${Path})" + +wait + +rm ../DataMacro/output/analysis/run_${RUN_NUMBER}/run_raw_*.root diff --git a/Projects/AlPhaPha/2024/macro/AoQ/DrawAoQ.C b/Projects/AlPhaPha/2024/macro/AoQ/DrawAoQ.C index c9215a320566e3a391df8783819c6ed0218b6727..515cbf965efc291ae21d98c0cae5988a3114ac71 100644 --- a/Projects/AlPhaPha/2024/macro/AoQ/DrawAoQ.C +++ b/Projects/AlPhaPha/2024/macro/AoQ/DrawAoQ.C @@ -1,9 +1,11 @@ +#include <TChain.h> TChain* chain; + void DrawAoQ(int sec=8, float time_offset=0){ chain = new TChain("PhysicsTree"); //chain->Add("../../root/analysis/run_48_calib.root"); //chain->Add("../../root/analysis/run_48.root"); - chain->Add("../../root/analysis/run_55.root"); + chain->Add("../../root/analysis/Run247AoQ.root"); // T13 // TString to_draw = Form("FF_Brho/3.10761* (FF_T13+%f)/FF_D13*29.9792*sqrt(1-pow(FF_D13,2)/(pow((FF_T13+%f)*29.9792,2)))>>h(1000,2.5,4.5)",time_offset,time_offset) ; diff --git a/Projects/AlPhaPha/2024/macro/Calibration/IC/ClearCalib.sh b/Projects/AlPhaPha/2024/macro/Calibration/IC/ClearCalib.sh new file mode 100644 index 0000000000000000000000000000000000000000..e2674c8b2dd688ca068eb55edae35106d89acac6 --- /dev/null +++ b/Projects/AlPhaPha/2024/macro/Calibration/IC/ClearCalib.sh @@ -0,0 +1,3 @@ +rm ../../../Calibration/VAMOS/CHIO/ICXY_Profile.root +rm ../../../Calibration/VAMOS/CHIO/Spline_Y.root +rm ../../../Calibration/VAMOS/CHIO/Spline_DE.root diff --git a/Projects/AlPhaPha/2024/macro/Calibration/IC/Output/ReadMe.md b/Projects/AlPhaPha/2024/macro/Calibration/IC/Output/ReadMe.md new file mode 100644 index 0000000000000000000000000000000000000000..ae505d9092a2a100ef1a1e6f5b3368d68e9fb6f8 --- /dev/null +++ b/Projects/AlPhaPha/2024/macro/Calibration/IC/Output/ReadMe.md @@ -0,0 +1 @@ +# Put here the output profile diff --git a/Projects/AlPhaPha/2024/macro/Calibration/IC/ReadMe.md b/Projects/AlPhaPha/2024/macro/Calibration/IC/ReadMe.md new file mode 100644 index 0000000000000000000000000000000000000000..9a7569ca605b90c8605faed605e284265ff87f15 --- /dev/null +++ b/Projects/AlPhaPha/2024/macro/Calibration/IC/ReadMe.md @@ -0,0 +1,137 @@ +# Calibration of IC +The goal of this directory is to obtain the charge of the fission fragment. +To do so we need to flatten the DE E plot and make it as precise as possible. + +- All the calibration of this directory are automatically savec in Calibration/VAMOS +- You should comment the spline line in config/ConfigIC.dat + +## Step 0 : Clean calibration + +Execute the ClearCalib.sh macro to clear all the calibration from the analysis. + +Then run an analysis to generate a clean root file name VamosCalib$RunNumber$.root + +## Step 1 : Time offset +The first step is to calculate the time offset needed to calculate the DriftTime. +To do so we focus on multiplicity two event in the MWPC and make sure that the time of those events are the same. + +The macro is straightforward : put an unanalysed run in the tchain and let it generate the calibration. + + +## Step 2 : Correction of IC + +Now that we have the DriftTime we have a very precise way to pinpoint the position in Y of the fission fragment. + +The next step of the calibration is to make all the segment of the IC react the same way in Y. Expect for the IC 0 that need a X +correction as well. We will take IC1 as the benchmark. + +### IC0 +IC0_XYCorrections is the macro made to correct the defects in XY. It make the ratio between IC1 and IC0 for event and then make a +profile of this 3D plot to get a surface representing the ratio between the two segments. + +After that it applies a correction to flatten the surface. + +### IC2-4 + +The steps for the following IC is a bit more complicated. The goal is to flatten the response of each segment iteratively with +respect to the previous one. + +To do so, we take IC1 as the baseline and make sucessive ration of the IC : IC[i]/IC[i-1] vs DrifTime. Then we make a spline of +those histograms. + +Those spline are the one used to flatten the distribution and are the calibration that we seek from this macro. + +**If you want to improve the Z resolution** : The IC 2-3 are well behaved but the 4 has a factor 2 in the analysis. +Therefore one should be very careful about the range in which the spline is made for IC4 !! +This is a point to be improved ! +The range in Y should be custom for each section of the chio. One should take time to code something to make this range finding +automatic, for instance project the ratio in a histogram then fitting it by a gaussian and take the range as mean +- 3 * sigma. + +# Step 3 : Correction of DE in Y + +If you are attentive you must have asked yourself : if everything is aligned on IC1 behaviour what about IC1 dependency in Y ? + +This is precisely what we correct in this macro and what is save in SplineDE. +This macro also serve of a visualisation for the improvement of the DE with the previous corrections. + +**This macro should be where you see improvement** + +This is how you are supposed to use it : +- First : +``` +root 'DEYcorrection.C(false,false)' +``` +This will generate several histogram and most importantly the DEvs DriftTime histogram. +When it is done make a cut on one of the charge for each DEvsDriftTime plot and save them in the "Output/CutDeCorr.root" file. +Name them CutZ CutZ0 CutZ02 CutZ023 CutZ0234, they correspond to different corrections of the IC. + +- Then : +``` +root 'DEYcorrection.C(true,true)' +``` +**TWO TIMES IN A ROW** +Then you should see all the histograms filled and beautiful. + +**Now rerun an analysis and the IC.DE and IC.Eres should give a good vamos plot** +- You should uncomment the spline line in config/ConfigIC.dat + +# Step 4 : Cut Auto for Z id + +This macro is made to spare you the hassle of manually doing the cut of each of the charge. + +It works by taking a VAMOS DE_E plot, applying \*-1 to the value of the histo and then parsing on the X axis by taking projection +on the Y axis on a bin width set by the user. + +**Feed it using the associated HistoFiller just give it a calibrated run** + +Then for each projection it search the peaks that correspond to the gap between each charges + +Finally, it links those point together and drop the lines where the number of points is inferior to a threshold. Then it link +those line together to form TCUTG. + +Here are the principals parameters you should care about to get good cuts : + +- Step : The bin distance between each point on the X axis. Lowering this parameter make more precise cut at the cost of computing +speed. + +- BinSize : Range in bin on which make the projection on the Y axis. The higher it is the more precise the peak finding will be +but be careful as it has some weird behaviour on edges !. + +- sigma : Tspectrum parameter I don't understand + +- Threshold : Size of the peak to be found . + +This macro output the TCUTG in a root file in the output folder. + +There is a version FineTuning of this macro : if you need good cut use this one but be wary that now there is two Threshold at the +beginning of the macro : ThresholdX and ThresholdY it correspond to the max distance of point on those axes. You should play +around with value until it works. + +In this finetuning macro you can add manually cut at the edges of the DE_E and rename them CUT NUmber. Then by using +SortAndRenameTcutG you can rename them with the convention used by SplineChio.C and with SaveTcutGToFile you can save them. + +# Step 5 : Flattening of the DE. + +SplineChio.C make a spline for each cut generated in Step4 and modify each event according to it's distance to the two nearest +spline. + +The macro should be used as following : + +``` +root +.L SplineChio.C + +SplineChio() # Only for first use after analysis + +MakeSpline() # Generate the spline and save them in the Calibration file + +ApplySpline() #Generate the calibration of each peak to get Z and save them in the Calibration dir +``` + +Don't forget to modify the configs/ConfigIC.dat with the proper token ! +- LOAD_Z_SPLINE ./Calibration/VAMOS/CHIO/Z_Spline.root +- LOAD_Z_SPLINE_EVAL ./Calibration/VAMOS/CHIO/Chio_Z_Spline_Eval.txt + +When it's done and the graphs look alright rerun the analysis. + +Then you can fill and fit the histo using the associated macro to see the resolution in Z. :) diff --git a/Projects/AlPhaPha/2024/macro/Calibration/IC/Step1/ToffGenerator.cxx b/Projects/AlPhaPha/2024/macro/Calibration/IC/Step1/ToffGenerator.cxx new file mode 100644 index 0000000000000000000000000000000000000000..432ebbf14b7b0931e46145f6e4cb51d8a462ff70 --- /dev/null +++ b/Projects/AlPhaPha/2024/macro/Calibration/IC/Step1/ToffGenerator.cxx @@ -0,0 +1,530 @@ +#include "TICPhysics.h" +#include "TTimeData.h" +#include <TCanvas.h> +#include <TChain.h> +#include <TF1.h> +#include <TFile.h> +#include <TH2.h> +#include <TLatex.h> +#include <iostream> +using namespace std; + +vector<int> SortSection(UShort_t STargFocal[2]); +vector<double> ToffCalc(vector<double> ToffP2P); + +void ToffGenerator(bool Create = true ){ + + //=========================================================================================================== + // Setters + //=========================================================================================================== + + TChain* chain = new TChain("PhysicsTree"); + chain->Add("../../../../root/analysis/VamosCalib247.root"); + + + Int_t M13 , M14, M23, M24 ;// we will fetch multiplicity during + // the getentry + + UShort_t S13[20] , S14[20] , S23[20] , S24[20]; + + TTimeData *Time = new TTimeData(); + TICPhysics *IC = new TICPhysics(); + + chain->SetBranchStatus("MTOF_FP0_T0VN", true); + chain->SetBranchAddress("MTOF_FP0_T0VN", &S13); + + chain->SetBranchStatus("MTOF_FP0_T1VN", true); + chain->SetBranchAddress("MTOF_FP0_T1VN", &S14); + + chain->SetBranchStatus("MTOF_FP1_T0VN", true); + chain->SetBranchAddress("MTOF_FP1_T0VN", &S23); + + chain->SetBranchStatus("MTOF_FP1_T1VN", true); + chain->SetBranchAddress("MTOF_FP1_T1VN", &S24); + + chain->SetBranchStatus("Time", true); + chain->SetBranchAddress("Time", &Time); + + chain->SetBranchStatus("IC", true); + chain->SetBranchAddress("IC", &IC); + //=========================================================================================================== + // Histograms + //=========================================================================================================== + + TH2F *hToff13; + TH2F *hToff14; + TH2F *hToff23; + TH2F *hToff24; + + TH2F *hToffOnline13; + TH2F *hToffOnline14; + TH2F *hToffOnline23; + TH2F *hToffOnline24; + + + double xmin[4], xmax[4]; + double ymin[4], ymax[4]; + int binx = 20 , biny = 400; + + xmin[0] = 0 ; xmax[0] = 20 ; ymin[0] = -10 ; ymax[0] = 10 ; + xmin[1] = 0 ; xmax[1] = 20 ; ymin[1] = -10 ; ymax[1] = 10 ; + xmin[2] = 0 ; xmax[2] = 20 ; ymin[2] = -10 ; ymax[2] = 10 ; + xmin[3] = 0 ; xmax[3] = 20 ; ymin[3] = -10 ; ymax[3] = 10 ; + + // Toff from aligning AoQ + double Toff[20] = {0, 588.0, 588.5, 587.95, 588.04, 587.72, 587.92, 587.9, 587.9, 588.66, 588.80, 588.67, 588.64, 588.75, 588.47, 588.65, 588.65, 588.67, 589.05, 590.3}; + + if (Create == true){ + + hToff13 = new TH2F("Toff13","Toff13",binx ,xmin[0] , xmax[0], biny, ymin[0], ymax[0]); + hToff14 = new TH2F("Toff14","Toff14",binx ,xmin[1] , xmax[1], biny, ymin[1], ymax[1]); + hToff23 = new TH2F("Toff23","Toff23",binx ,xmin[2] , xmax[2], biny, ymin[2], ymax[2]); + hToff24 = new TH2F("Toff24","Toff24",binx ,xmin[3] , xmax[3], biny, ymin[3], ymax[3]); + + hToffOnline13 = new TH2F("ToffOnline13","ToffOnline13",binx ,xmin[0] , xmax[0], biny, ymin[0], ymax[0]); + hToffOnline14 = new TH2F("ToffOnline14","ToffOnline14",binx ,xmin[1] , xmax[1], biny, ymin[1], ymax[1]); + hToffOnline23 = new TH2F("ToffOnline23","ToffOnline23",binx ,xmin[2] , xmax[2], biny, ymin[2], ymax[2]); + hToffOnline24 = new TH2F("ToffOnline24","ToffOnline24",binx ,xmin[3] , xmax[3], biny, ymin[3], ymax[3]); + + + //=========================================================================================================== + // Loop on entries + //=========================================================================================================== + int Nentries = chain->GetEntries(); + //int Nentries = 1000000; + auto start = std::chrono::high_resolution_clock::now(); + + for (int e = 0; e < Nentries; e++) { + + chain->GetEntry(e); + if (e % 100000 == 0 && e > 0 ) { + auto now = std::chrono::high_resolution_clock::now(); + std::chrono::duration<double> elapsed = now - start; + double avgTimePerIteration = elapsed.count() / e; + double timeLeft = avgTimePerIteration * (Nentries - e); + + std::cout << "********** Estimated time left: " << int(timeLeft) << " seconds **********" << "\r" << flush; + } + + // Get Multiplicity + M13 = Time->GetMWPC13Mult(); + M14 = Time->GetMWPC14Mult(); + M23 = Time->GetMWPC23Mult(); + M24 = Time->GetMWPC24Mult(); + + + + for (int i=0 ; i<M13 ; i++){ + S13[i] = Time->GetSection_MWPC3(i); + S23[i] = Time->GetSection_MWPC3(i); + } + + for (int i=0 ; i<M14 ; i++){ + S14[i] = Time->GetSection_MWPC4(i); + S24[i] = Time->GetSection_MWPC4(i); + } + + if (M13 == 2 && (abs(S13[0]-S13[1]) == 1)){ + vector<int> Pos = SortSection(S13); + hToff13->Fill(S13[0], Time->GetTime_MWPC13(Pos[0]) - Time->GetTime_MWPC13(Pos[1]) ); + + hToffOnline13->Fill(S13[0], (Time->GetTime_MWPC13(Pos[0]) - Toff[S13[0]]) -( Time->GetTime_MWPC13(Pos[1]) -Toff[S13[1]] )); + } + if (M23 == 2 && (abs(S23[0]-S23[1]) == 1)){ + vector<int> Pos = SortSection(S23); + hToff23->Fill(S23[0],Time->GetTime_MWPC23(Pos[0]) - Time->GetTime_MWPC23(Pos[1])); + hToffOnline23->Fill(S23[0],(Time->GetTime_MWPC23(Pos[0]) - Toff[S23[0]]) -( Time->GetTime_MWPC23(Pos[1]) -Toff[S23[1]] ) ); + } + + if (M14 == 2 && (abs(S14[0]-S14[1]) == 1)){ + vector<int> Pos = SortSection(S14); + hToff14->Fill(S14[0],Time->GetTime_MWPC14(Pos[0]) - Time->GetTime_MWPC14(Pos[1])); + hToffOnline14->Fill(S14[0],(Time->GetTime_MWPC14(Pos[0]) - Toff[S14[0]]) -( Time->GetTime_MWPC14(Pos[1]) -Toff[S14[1]] ) ); + } + + if (M24 == 2 && (abs(S24[0]-S24[1]) == 1)){ + vector<int> Pos = SortSection(S24); + hToff24->Fill(S24[0],Time->GetTime_MWPC24(Pos[0]) - Time->GetTime_MWPC24(Pos[1])); + hToffOnline24->Fill(S24[0],(Time->GetTime_MWPC24(Pos[0]) - Toff[S24[0]]) -( Time->GetTime_MWPC24(Pos[1]) -Toff[S24[1]] ) ); + } + } // End loop event + + TFile *out = new TFile("output/ToffHisto.root","recreate"); + hToff13->Write(); + hToff14->Write(); + hToff23->Write(); + hToff24->Write(); + + hToffOnline13->Write(); + hToffOnline14->Write(); + hToffOnline23->Write(); + hToffOnline24->Write(); + }// end if create + + else { + + TFile *in = new TFile("output/ToffHisto.root","open"); + hToff13 = (TH2F*)in->Get("Toff13"); + hToff14 = (TH2F*)in->Get("Toff14"); + hToff23 = (TH2F*)in->Get("Toff23"); + hToff24 = (TH2F*)in->Get("Toff24"); + + hToffOnline13 = (TH2F*)in->Get("ToffOnline13"); + hToffOnline14 = (TH2F*)in->Get("ToffOnline14"); + hToffOnline23 = (TH2F*)in->Get("ToffOnline23"); + hToffOnline24 = (TH2F*)in->Get("ToffOnline24"); + + } + + int MinX = 2; + hToff13->SetMinimum(MinX); + hToff14->SetMinimum(MinX); + hToff23->SetMinimum(MinX); + hToff24->SetMinimum(MinX); + //=========================================================================================================== + // Proj fit + //=========================================================================================================== + TCanvas* c13 = new TCanvas("c13", "Toff13", 1800, 1600); + c13->Divide(5, 4); // Adjust rows/columns to fit the number of bins (e.g., 20 bins here) + + TCanvas* c14 = new TCanvas("c14", "Toff14", 1800, 1600); + c14->Divide(5, 4); // Adjust rows/columns to fit the number of bins (e.g., 20 bins here) + + TCanvas* c23 = new TCanvas("c23", "Toff23", 1800, 1600); + c23->Divide(5, 4); // Adjust rows/columns to fit the number of bins (e.g., 20 bins here) + + TCanvas* c24 = new TCanvas("c24", "Toff24", 1800, 1600); + c24->Divide(5, 4); // Adjust rows/columns to fit the number of bins (e.g., 20 bins here) + + vector<double> P2PToff13(19), P2PToff14(19) , P2PToff23(19), P2PToff24(19); + + // Loop through bins and draw each fit + for (int binX = 1; binX <= hToff13->GetNbinsX()-1; ++binX) { + + c13->cd(binX); + + // Create a projection along the Y-axis for the current X-bin + TH1F* proj = (TH1F*)hToff13->ProjectionY(Form("proj_bin13%d", binX), binX, binX); + proj->SetMinimum(MinX); + + // Fit the projection with a Gaussian + TF1* fit = new TF1(Form("fit_bin%d", binX), "gaus",-5,5); + + // Select subpad and draw + proj->Fit(fit,"R"); // Suppress output with "Q" + proj->Draw(); + fit->SetLineColor(kRed); // Optional: Differentiate fit line + fit->Draw("SAME"); + + // Retrieve fit parameters + double mean = fit->GetParameter(1); + double sigma = fit->GetParameter(2); + P2PToff13.at(binX-1) = mean; + + // Add fit results to the subpad using TLatex + TLatex text; + text.SetNDC(); + text.SetTextSize(0.05); + text.SetTextAlign(13); // Align at top-left corner + text.DrawLatex(0.15, 0.85, Form("#mu = %.2f", mean)); + text.DrawLatex(0.15, 0.75, Form("#sigma = %.2f", sigma)); + + + // Save the mean to the text file + + } + // Display the canvas + c13->Update(); + + // Loop through bins and draw each fit + for (int binX = 1; binX <= hToff14->GetNbinsX()-1; ++binX) { + + c14->cd(binX); + + // Create a projection along the Y-axis for the current X-bin + TH1F* proj = (TH1F*)hToff14->ProjectionY(Form("proj_bin14%d", binX), binX, binX); + proj->SetMinimum(MinX); + + // Fit the projection with a Gaussian + TF1* fit = new TF1(Form("fit_bin%d", binX), "gaus"); + // Select subpad and draw + proj->Fit(fit); // Suppress output with "Q" + proj->Draw(); + fit->SetLineColor(kRed); // Optional: Differentiate fit line + fit->Draw("SAME"); + + // Retrieve fit parameters + double mean = fit->GetParameter(1); + double sigma = fit->GetParameter(2); + P2PToff14.at(binX-1) = mean; + + + + // Add fit results to the subpad using TLatex + TLatex text; + text.SetNDC(); + text.SetTextSize(0.05); + text.SetTextAlign(13); // Align at top-left corner + text.DrawLatex(0.15, 0.85, Form("#mu = %.2f", mean)); + text.DrawLatex(0.15, 0.75, Form("#sigma = %.2f", sigma)); + + + // Save the mean to the text file + + } + // Display the canvas + c14->Update(); + + + // Loop through bins and draw each fit + for (int binX = 1; binX <= hToff23->GetNbinsX()-1; ++binX) { + + c23->cd(binX); + + // Create a projection along the Y-axis for the current X-bin + TH1F* proj = (TH1F*)hToff23->ProjectionY(Form("proj_bin23%d", binX), binX, binX); + proj->SetMinimum(MinX); + + // Fit the projection with a Gaussian + TF1* fit = new TF1(Form("fit_bin%d", binX), "gaus"); + + // Select subpad and draw + proj->Fit(fit); // Suppress output with "Q" + proj->Draw(); + fit->SetLineColor(kRed); // Optional: Differentiate fit line + fit->Draw("SAME"); + + // Retrieve fit parameters + double mean = fit->GetParameter(1); + double sigma = fit->GetParameter(2); + P2PToff23.at(binX-1) = mean; + + // Add fit results to the subpad using TLatex + TLatex text; + text.SetNDC(); + text.SetTextSize(0.05); + text.SetTextAlign(13); // Align at top-left corner + text.DrawLatex(0.15, 0.85, Form("#mu = %.2f", mean)); + text.DrawLatex(0.15, 0.75, Form("#sigma = %.2f", sigma)); + + + // Save the mean to the text file + + } + // Display the canvas + c23->Update(); + + // Loop through bins and draw each fit + for (int binX = 1; binX <= hToff24->GetNbinsX()-1; ++binX) { + + c24->cd(binX); + + // Create a projection along the Y-axis for the current X-bin + TH1F* proj = (TH1F*)hToff24->ProjectionY(Form("proj_bin24%d", binX), binX, binX); + proj->SetMinimum(MinX); + + // Fit the projection with a Gaussian + TF1* fit = new TF1(Form("fit_bin%d", binX), "gaus"); + + // Select subpad and draw + proj->Fit(fit,"Q"); // Suppress output with "Q" + proj->Draw(); + fit->SetLineColor(kRed); // Optional: Differentiate fit line + fit->Draw("SAME"); + + // Retrieve fit parameters + double mean = fit->GetParameter(1); + double sigma = fit->GetParameter(2); + P2PToff24.at(binX-1) = mean; + + // Add fit results to the subpad using TLatex + TLatex text; + text.SetNDC(); + text.SetTextSize(0.05); + text.SetTextAlign(13); // Align at top-left corner + text.DrawLatex(0.15, 0.85, Form("#mu = %.2f", mean)); + text.DrawLatex(0.15, 0.75, Form("#sigma = %.2f", sigma)); + + + // Save the mean to the text file + + } + // Display the canvas + c24->Update(); + + //=========================================================================================================== + // Saving correction + //=========================================================================================================== + + + //First we get the absolute correction to use on each section + vector<double> Toff13, Toff14, Toff23, Toff24; + Toff13 = ToffCalc(P2PToff13); + Toff23 = ToffCalc(P2PToff23); + Toff14 = ToffCalc(P2PToff14); + Toff24 = ToffCalc(P2PToff24); + + //Save it in a txt file + ofstream o13("../../../../Calibration/VAMOS/FPMW/Toff/Toff13.txt"); + ofstream o23("../../../../Calibration/VAMOS/FPMW/Toff/Toff23.txt"); + ofstream o14("../../../../Calibration/VAMOS/FPMW/Toff/Toff14.txt"); + ofstream o24("../../../../Calibration/VAMOS/FPMW/Toff/Toff24.txt"); + + for (auto &elem : Toff13) o13 << elem << endl; + for (auto &elem : Toff14) o14 << elem << endl; + for (auto &elem : Toff23) o23 << elem << endl; + for (auto &elem : Toff24) o24 << elem << endl; + + + //=========================================================================================================== + // Testing correction + //=========================================================================================================== + + + TH2F* hCorrToff13 = new TH2F("CorrToff13","CorrToff13",binx ,xmin[0] , xmax[0], biny, ymin[0], ymax[0]); + TH2F* hCorrToff14 = new TH2F("CorrToff14","CorrToff14",binx ,xmin[1] , xmax[1], biny, ymin[1], ymax[1]); + TH2F* hCorrToff23 = new TH2F("CorrToff23","CorrToff23",binx ,xmin[2] , xmax[2], biny, ymin[2], ymax[2]); + TH2F* hCorrToff24 = new TH2F("CorrToff24","CorrToff24",binx ,xmin[3] , xmax[3], biny, ymin[3], ymax[3]); + + + int Nentries = chain->GetEntries(); + //int Nentries = 1000000; + auto start = std::chrono::high_resolution_clock::now(); + + for (int e = 0; e < Nentries; e++) { + chain->GetEntry(e); + + if (e % 100000 == 0 && e > 0 ) { + auto now = std::chrono::high_resolution_clock::now(); + std::chrono::duration<double> elapsed = now - start; + double avgTimePerIteration = elapsed.count() / e; + double timeLeft = avgTimePerIteration * (Nentries - e); + + std::cout << "********** Estimated time left: " << int(timeLeft) << " seconds **********" << "\r" << flush; + } + + // Get Multiplicity + M13 = Time->GetMWPC13Mult(); + M14 = Time->GetMWPC14Mult(); + M23 = Time->GetMWPC23Mult(); + M24 = Time->GetMWPC24Mult(); + + for (int i=0 ; i<M13 ; i++){ + S13[i] = Time->GetSection_MWPC3(i); + S23[i] = Time->GetSection_MWPC3(i); + } + + for (int i=0 ; i<M14 ; i++){ + S14[i] = Time->GetSection_MWPC4(i); + S24[i] = Time->GetSection_MWPC4(i); + } + + + if (M13 == 2 && (abs(S13[0]-S13[1]) == 1)){ + vector<int> Pos = SortSection(S13); + hCorrToff13->Fill(S13[0],(Time->GetTime_MWPC13(Pos[0]) - double(Time->GetTS_MWPC13(Pos[0]))+ Toff13.at(S13[0])) - (Time->GetTime_MWPC13(Pos[1]) - double(Time->GetTS_MWPC13(Pos[1]))+ Toff13.at(S13[1]))); + } + + + if (M23 == 2 && (abs(S23[0]-S23[1]) == 1)){ + vector<int> Pos = SortSection(S23); + hCorrToff23->Fill(S23[0],(Time->GetTime_MWPC23(Pos[0]) + Toff23.at(S23[0])) - (Time->GetTime_MWPC23(Pos[1]) + Toff23.at(S23[1]))); + } + + + if (M14 == 2 && (abs(S14[0]-S14[1]) == 1)){ + vector<int> Pos = SortSection(S14); + hCorrToff14->Fill(S14[0],(Time->GetTime_MWPC14(Pos[0]) + Toff14.at(S14[0])) - (Time->GetTime_MWPC14(Pos[1]) + Toff14.at(S14[1]))); + } + + + if (M24 == 2 && (abs(S24[0]-S24[1]) == 1)){ + vector<int> Pos = SortSection(S24); + hCorrToff24->Fill(S24[0],(Time->GetTime_MWPC24(Pos[0]) + Toff24.at(S24[0])) - (Time->GetTime_MWPC24(Pos[1]) + Toff24.at(S24[1]))); + } + + + } // End loop event + + //=========================================================================================================== + // Drawing canvas + //=========================================================================================================== + + TCanvas *c1 = new TCanvas("c1","c1"); + c1->Divide(3); + + c1->cd(1); + hToff13->Draw("colz"); + c1->cd(2); + hCorrToff13->Draw("colz"); + c1->cd(3); + hToffOnline13->Draw("colz"); + + + TCanvas *c2 = new TCanvas("c2","c2"); + c2->Divide(3); + + c2->cd(1); + hToff23->Draw("colz"); + c2->cd(2); + hCorrToff23->Draw("colz"); + c2->cd(3); + hToffOnline23->Draw("colz"); + + + + TCanvas *c3 = new TCanvas("c3","c3"); + c3->Divide(3); + + c3->cd(1); + hToff14->Draw("colz"); + c3->cd(2); + hCorrToff14->Draw("colz"); + c3->cd(3); + hToffOnline14->Draw("colz"); + + + TCanvas *c4 = new TCanvas("c4","c4"); + c4->Divide(3); + + c4->cd(1); + hToff24->Draw("colz"); + c4->cd(2); + hCorrToff24->Draw("colz"); + c4->cd(3); + hToffOnline24->Draw("colz"); + +} + +vector<int> SortSection(UShort_t STargFocal[2]){ + UShort_t FSection ,LSection ; + vector<int> Pos(2) ; + if (STargFocal[0]<STargFocal[1]){ + Pos[0] = 0 ; + Pos[1] = 1 ; + FSection = STargFocal[0]; + LSection = STargFocal[1]; + } + else { + Pos[0] = 1 ; + Pos[1] = 0 ; + FSection = STargFocal[1]; + LSection = STargFocal[0]; + } + + STargFocal[0] = FSection; + STargFocal[1] = LSection; + return Pos; +} + +vector<double> ToffCalc(vector<double> ToffP2P){ + + vector<double> res; + double Sum = 0; + res.push_back(Sum); // first section + for (int i=0; i<ToffP2P.size() ; i++){ + Sum += ToffP2P.at(i); + res.push_back(Sum); + } + return res; +} diff --git a/Projects/AlPhaPha/2024/macro/Calibration/IC/Step1/output/ReadMe.md b/Projects/AlPhaPha/2024/macro/Calibration/IC/Step1/output/ReadMe.md new file mode 100644 index 0000000000000000000000000000000000000000..0650e1ce5f05f0b9418db0d86f6f65b9432ee166 --- /dev/null +++ b/Projects/AlPhaPha/2024/macro/Calibration/IC/Step1/output/ReadMe.md @@ -0,0 +1 @@ +# Leave this file to enable data saving diff --git a/Projects/AlPhaPha/2024/macro/Calibration/IC/Step2/AlignIC.C b/Projects/AlPhaPha/2024/macro/Calibration/IC/Step2/AlignIC.C new file mode 100644 index 0000000000000000000000000000000000000000..812e7203637c81f313f039fab32d8b5410b6ff9c --- /dev/null +++ b/Projects/AlPhaPha/2024/macro/Calibration/IC/Step2/AlignIC.C @@ -0,0 +1,639 @@ +#include "TICPhysics.h" +#include "TTimeData.h" +#ifdef TICPhysics +#include <TICPhysics.h> +#endif +#include <TCanvas.h> +#include <TChain.h> +#include <TF1.h> +#include <TFile.h> +#include <TH2.h> +#include <TSpline.h> +#include <fstream> +#include <vector> +#include <TCutG.h> + +using namespace std; + +TSpline3* MakeSpline(TH2F* hInput, Int_t NCallee, double XMin , double + XMax, double YMin, double YMax); + +vector<TH2F*>HistoFillerIC(int segment, vector<vector<TSpline3*>> Spline_All_ICprev); + +vector<vector<TH2F*>>HistoFillerICcorr(int segment, vector<vector<TSpline3*>> Spline_All_ICprev); + +vector<double> TxtToVector(const char *Path); + +void HistoDrawer(vector<TH2F*> h ,const char* CharName); + +// Range of histo + +double XMin[5]= {-520,-1000,-520,-800,-800}; +double XMax[5]= {380,1000,380,800,800}; +double YMin[5]= {2000,1000,0,0.8,2.}; +double YMax[5]= {9500,10000,3,1.5,2.4}; +double CondX[2]= {-200,200}; +////////////////////////////////////////////////////////////////////////////////////////// +void AlignIC() { + + int NSegment = 5 ; + + //Reinitialising the outfile + TFile *OutFile = new TFile("Output/HistoP2P.root","recreate"); + OutFile->Close(); + //Initialising with IC1 + int NCallSpline = 0; + int initseg = 1; + + vector<vector<TSpline3*>> SplineAllIC(NSegment + 1); + vector<TSpline3*> SplineICurrent(2); + + vector<vector<TH2F*>> hIC(NSegment); + hIC.at(1)= (HistoFillerIC(1,SplineAllIC)); + + SplineICurrent.at(0) = MakeSpline(hIC[initseg][0] , NCallSpline, XMin[0] , XMax[0], YMin[0], YMax[0]); + SplineICurrent.at(0)->SetName("fspline_IC1_X"); + NCallSpline+=1; + + SplineICurrent.at(1) = MakeSpline(hIC[initseg][1] , NCallSpline, XMin[1] , XMax[1], YMin[1], YMax[1]); + SplineICurrent.at(1)->SetName("fspline_IC1_Y"); + NCallSpline+=1; + + SplineAllIC.at(1)= (SplineICurrent); + SplineAllIC.erase(SplineAllIC.begin() + 1); + ///activate this to not make the + //spline of IC1 + + + for (int seg = 2 ; seg < NSegment ; seg++){ + if(seg ==1) { + } + + else if (seg == 4){ + + //Load Histo + hIC.at(seg) = (HistoFillerIC(seg,SplineAllIC)); + + //Reset spline holder + vector<TSpline3*> SplineICurrent; + + // X Spline + SplineICurrent.push_back(MakeSpline(hIC[seg][0] , NCallSpline, XMin[2] , XMax[2], YMin[4], YMax[4])); + SplineICurrent.at(0)->SetName(Form("fspline_IC%d_X",seg)); + NCallSpline+=1; + + // Y Spline + SplineICurrent.push_back(MakeSpline(hIC[seg][1] , NCallSpline, XMin[4] , XMax[4],YMin[4],YMax[4])); + SplineICurrent.at(1)->SetName(Form("fspline_IC%d_Y",seg)); + NCallSpline+=1; + + //push vector into memory + SplineAllIC.at(seg)= SplineICurrent; + + } + + else{ + + //Load Histo + hIC.at(seg) = (HistoFillerIC(seg,SplineAllIC)); + + cout << hIC.at(seg).at(0)->GetYaxis()->GetXmin() << endl; + //Reset spline holder + vector<TSpline3*> SplineICurrent; + + // X Spline + SplineICurrent.push_back(MakeSpline(hIC[seg][0] , NCallSpline, XMin[2] , XMax[2], YMin[3], YMax[3])); + SplineICurrent.at(0)->SetName(Form("fspline_IC%d_X",seg)); + NCallSpline+=1; + + // Y Spline + SplineICurrent.push_back(MakeSpline(hIC[seg][1] , NCallSpline, XMin[3] , XMax[3], YMin[3], YMax[3])); + SplineICurrent.at(1)->SetName(Form("fspline_IC%d_Y",seg)); + NCallSpline+=1; + + //push vector into memory + SplineAllIC.at(seg)= SplineICurrent; + } + } + //write spline + TFile* fspline = new TFile("Output/spline_P2P_2024.root", "recreate"); + for (int seg = 0 ; seg < NSegment ; seg++){ + if (!SplineAllIC.at(seg).empty()){ + SplineAllIC.at(seg)[0]->Write(); + SplineAllIC.at(seg)[1]->Write(); + } + } + fspline->Close(); + + //Write for analysis + TFile* ospline = new TFile("../../../../Calibration/VAMOS/CHIO/Spline_Y.root", "recreate"); + for (int seg = 2 ; seg < NSegment ; seg++){ + if (!SplineAllIC.at(seg).empty()){ + SplineAllIC.at(seg)[1]->SetName(Form("fspline_%d",seg-1)); + SplineAllIC.at(seg)[1]->Write(); + } + } + fspline->Close(); + + vector<vector<TH2F*>> hIC_Corrall(NSegment); + vector<TH1F*> hIC_Corr_profile(NSegment); + vector<TH2F*> hIC_Corr(NSegment); + hIC_Corrall = HistoFillerICcorr(NSegment,SplineAllIC); + hIC_Corr = hIC_Corrall.at(1); + + TCanvas *c1 = new TCanvas("c1","c1"); + c1->Divide(NSegment); + for (int i=0 ; i<NSegment ; i++){ + hIC_Corr_profile.at(i) = (TH1F*)hIC_Corr.at(i)->ProfileX(); + c1->cd(i+1); + hIC_Corr_profile.at(i)->Draw(); + } + + +} // End spline chio XY + +/////////////////////////////////////////////////////////////////////////////////////////// +/** + * This function fill the histograms of ICseg/ICcorrSeg-1 expect for IC1 where + * it give IC1 and ICO where it give IC0/IC1corr + */ +vector<TH2F*> HistoFillerIC(int segment, vector<vector<TSpline3*>> Spline_All_ICprev) { + + // Input and setters + TChain* chain = new TChain("PhysicsTree"); + chain->Add("../../../../root/analysis/VamosCalib246.root"); + chain->Add("../../../../root/analysis/VamosCalib247.root"); + chain->Add("../../../../root/analysis/VamosCalib248.root"); + + TICPhysics* IC = new TICPhysics(); + TTimeData *Time = new TTimeData(); + + double FF_IC_X, FF_IC_Y; + + chain->SetBranchStatus("FF_IC_X", true); + chain->SetBranchAddress("FF_IC_X", &FF_IC_X); + + chain->SetBranchStatus("IC", true); + chain->SetBranchAddress("IC", &IC); + + chain->SetBranchStatus("Time", true); + chain->SetBranchAddress("Time", &Time); + + vector<double> Toff13 , Toff14, Toff23, Toff24; + const char* Path13 = "../../../../Calibration/VAMOS/FPMW/Toff/Toff13.txt"; + const char* Path14 = "../../../../Calibration/VAMOS/FPMW/Toff/Toff14.txt"; + const char* Path23 = "../../../../Calibration/VAMOS/FPMW/Toff/Toff23.txt"; + const char* Path24 = "../../../../Calibration/VAMOS/FPMW/Toff/Toff24.txt"; + + Toff13 = TxtToVector(Path13); + Toff14 = TxtToVector(Path14); + Toff23 = TxtToVector(Path23); + Toff24 = TxtToVector(Path24); + + // Get the number of previous spline to load + int NSpline = abs(segment-1); + + //Filling all previous vector spline + vector<TSpline3*> SplineIC_X(NSpline+1); + vector<TSpline3*> SplineIC_Y(NSpline+1); + + //Fill all the previous spline , if the segment is 0 it'll fill spline 1 only + for (int pseg = 1 ; pseg<=NSpline; pseg++){ + if(!Spline_All_ICprev.at(pseg).empty()){ + SplineIC_X.at(pseg) = Spline_All_ICprev.at(pseg).at(0); + SplineIC_Y.at(pseg) = Spline_All_ICprev.at(pseg).at(1); + } + } + + // Histograms + TH2F *hIC_X , *hIC_Y; + + if (segment == 1 ) { + hIC_Y = new TH2F(Form("hChio_IC%d_Y",segment), + Form("hChio_IC%d_Y",segment), 1000, -1000, 1000, 1000, 1000, 10000); + hIC_X = new TH2F(Form("hChio_IC%d_X",segment), + Form("hChio_IC%d_X",segment), 1000, -800, 800, 1000, 1000, 10000); + + } + + else if (segment==4) { + hIC_Y = new TH2F(Form("hChio_IC%d_IC%d_Y",segment,segment-1), + Form("hChio_IC%d_IC%d_Y",segment,segment-1), 1000, -1000, 1000, 500, YMin[4], YMax[4]); + hIC_X = new TH2F(Form("hChio_IC%d_IC%d_X",segment,segment-1), + Form("hChio_IC%d_IC%d_X",segment,segment-1), 1000, -800, 800, 500, YMin[4], YMax[4]); + } + + + else { + hIC_Y = new TH2F(Form("hChio_IC%d_IC%d_Y",segment,segment-1), + Form("hChio_IC%d_IC%d_Y",segment,segment-1), 1000, -1000, 1000, 500, YMin[3], YMax[3]); + hIC_X = new TH2F(Form("hChio_IC%d_IC%d_X",segment,segment-1), + Form("hChio_IC%d_IC%d_X",segment,segment-1), 1000, -800, 800, 500, YMin[3], YMax[3]); + } + + hIC_Y->GetYaxis()->SetCanExtend(kFALSE); + //=========================================================================================================== + // Beginning loop on entries + //=========================================================================================================== + + int Nentries = chain->GetEntries(); + //int Nentries = 1000000; + auto start = std::chrono::high_resolution_clock::now(); + for (int e = 0; e < Nentries; e++) { + + chain->GetEntry(e); + + + vector<double> IC_Spline_CorrX(NSpline + 1),IC_Spline_CorrY(NSpline+1); + + if (Time->GetMWPC13Mult() ==1 && IC->fIC_TS.size()>= (segment+1) && FF_IC_X >-530 ){ //only mult 1 event + + UShort_t FPMW_Section = Time->GetSection_MWPC3(0); + + + FF_IC_Y = 10* (IC->fIC_TS.at(segment) - Time->GetTS_MWPC13(0)) - ((Time->GetTime_MWPC13(0)+Toff13.at(FPMW_Section))) ; + //Get the corrected value for all previous spline + for (int pseg = 1 ; pseg<=NSpline ; pseg++){ + //If the spline doesnt exist define default value + if(Spline_All_ICprev.at(pseg).empty()){ + IC_Spline_CorrX.at(pseg)= IC->fIC_PID[pseg]; + IC_Spline_CorrY.at(pseg)= IC->fIC_PID[pseg]; + } + + //If it exist correct the current line + else if (!Spline_All_ICprev.at(pseg).empty()){ + IC_Spline_CorrX.at(pseg) = IC->fIC_PID[pseg] * SplineIC_X.at(pseg)->Eval(0) / SplineIC_X.at(pseg)->Eval(FF_IC_X); + IC_Spline_CorrY.at(pseg) = IC->fIC_PID[pseg] * SplineIC_Y.at(pseg)->Eval(0) / SplineIC_Y.at(pseg)->Eval(FF_IC_Y); + } //End if non empty + + } // End loop IC non 0 + + + //=========================================================================================================== + // Fill histo + + //===========================================================================================================/ + + if (segment == 1){ + hIC_Y->Fill(FF_IC_Y,IC->fIC_PID[segment]); + hIC_X->Fill(FF_IC_X,IC->fIC_PID[segment]); + } + + else if (segment == 0){ + hIC_Y->Fill(FF_IC_Y,IC->fIC_PID[segment]/IC_Spline_CorrY.at(1)); + hIC_X->Fill(FF_IC_X,IC->fIC_PID[segment]/IC_Spline_CorrX.at(1)); + } + + else { + hIC_Y->Fill(FF_IC_Y,IC->fIC_PID[segment]/IC_Spline_CorrY.at(segment-1)); + hIC_X->Fill(FF_IC_X,IC->fIC_PID[segment]/IC_Spline_CorrX.at(segment-1)); + } + } //end only m2 + + // Estimate time left every `updateInterval` iterations + if (e % 100000 == 0 && e > 0) { + auto now = std::chrono::high_resolution_clock::now(); + std::chrono::duration<double> elapsed = now - start; + double avgTimePerIteration = elapsed.count() / e; + double timeLeft = avgTimePerIteration * (Nentries - e); + + std::cout << "Treating segment : " << segment + << " | Estimated time left: " << int(timeLeft) << " seconds" << "\r" << flush; + } + + } // end loop on entries + + cout << endl; + //=========================================================================================================== + // Output + //=========================================================================================================== + vector<TH2F*> hIC; + hIC.push_back(hIC_X); + hIC.push_back(hIC_Y); + + TFile *OutFile = new TFile("Output/HistoP2P.root","UPDATE"); + hIC_X->Write(); + hIC_Y->Write(); + OutFile->Close(); + + return hIC; +} // End HistoFiller + +vector<vector<TH2F*>>HistoFillerICcorr(int segment, vector<vector<TSpline3*>> Spline_All_ICprev){ + + // Input and setters + TChain* chain = new TChain("PhysicsTree"); + chain->Add("../../../../root/analysis/VamosCalib247.root"); + + TTimeData *Time = new TTimeData(); + TICPhysics* IC = new TICPhysics() ; + double FF_IC_X, FF_IC_Y; + + chain->SetBranchStatus("FF_IC_X", true); + chain->SetBranchAddress("FF_IC_X", &FF_IC_X); + chain->SetBranchStatus("IC", true); + chain->SetBranchAddress("IC", &IC); + chain->SetBranchStatus("Time", true); + chain->SetBranchAddress("Time", &Time); + + vector<double> Toff13 , Toff14, Toff23, Toff24; + const char* Path13 = "../../../../Calibration/VAMOS/FPMW/Toff/Toff13.txt"; + const char* Path14 = "../../../../Calibration/VAMOS/FPMW/Toff/Toff14.txt"; + const char* Path23 = "../../../../Calibration/VAMOS/FPMW/Toff/Toff23.txt"; + const char* Path24 = "../../../../Calibration/VAMOS/FPMW/Toff/Toff24.txt"; + + Toff13 = TxtToVector(Path13); + Toff14 = TxtToVector(Path14); + Toff23 = TxtToVector(Path23); + Toff24 = TxtToVector(Path24); + + // Get the number of previous spline to load + segment = segment -1; + int NSpline = abs(segment); + + //Filling all previous vector spline + vector<TSpline3*> SplineIC_X(NSpline+1); + vector<TSpline3*> SplineIC_Y(NSpline+1); + + //Fill all the previous spline , if the segment is 0 it'll fill spline 1 only + for (int pseg = 0 ; pseg<=NSpline; pseg++){ + if(!Spline_All_ICprev.at(pseg).empty()){ + SplineIC_X.at(pseg) = Spline_All_ICprev.at(pseg).at(0); + SplineIC_Y.at(pseg) = Spline_All_ICprev.at(pseg).at(1); + } + } + + // Histograms + vector<TH2F*> hIC_X(segment +1) , hIC_Y(segment+1); + + for (int pseg = 0 ; pseg<=NSpline; pseg++){ + if (pseg == 1 ) { + hIC_Y.at(pseg) = new TH2F(Form("hChiocorr_IC%d_Y",pseg), + Form("hChiocorr_IC%d_Y",pseg), 1000, -1000, 1000, 1000, 0, 20000); + hIC_X.at(pseg) = new TH2F(Form("hChiocorr_IC%d_X",pseg), + Form("hChiocorr_IC%d_X",pseg), 1000, -800, 800, 1000, 0, 20000); + + } + + else if (pseg == 4 ) { + hIC_Y.at(pseg) = new TH2F(Form("hChiocorr_IC%d_Y",pseg), + Form("hChiocorr_IC%d_Y",pseg), 1000, -1000, 1000, 1000, YMin[4], YMax[4]); + hIC_X.at(pseg) = new TH2F(Form("hChiocorr_IC%d_X",pseg), + Form("hChiocorr_IC%d_X",pseg), 1000, -800, 800, 1000, YMin[4], YMax[4]); + + } + + else { + hIC_Y.at(pseg) = new TH2F(Form("hChiocorr_IC%d_IC%d_Y",pseg,pseg-1), + Form("hChiocorr_IC%d_IC%d_Y",pseg,pseg-1), 1000, -1000, 1000, 500, YMin[3], YMax[3]); + hIC_X.at(pseg) = new TH2F(Form("hChiocorr_IC%d_IC%d_X",pseg,pseg-1), + Form("hChiocorr_IC%d_IC%d_X",pseg,pseg-1), 1000, -800, 800, 500, YMin[3], YMax[3]); + } + } + + //=========================================================================================================== + // Beginning loop on entries + //=========================================================================================================== + + //int Nentries = chain->GetEntries(); + int Nentries = 1000000; + auto start = std::chrono::high_resolution_clock::now(); + for (int e = 0; e < Nentries; e++) { + + chain->GetEntry(e); + + vector<double> IC_Spline_CorrX(NSpline + 1),IC_Spline_CorrY(NSpline+1); + + + if (Time->GetMWPC13Mult() ==1 && IC->fIC_TS.size()>= (segment+1)){ //only mult 1 event + + UShort_t FPMW_Section = Time->GetSection_MWPC3(0); + + FF_IC_Y = 10* (IC->fIC_TS.at(segment) - Time->GetTS_MWPC13(0)) - ((Time->GetTime_MWPC13(0)+Toff13.at(FPMW_Section))) ; + //Get the corrected value for all previous spline + for (int pseg = 0 ; pseg<=NSpline ; pseg++){ + //If the spline doesnt exist define default value + if(Spline_All_ICprev.at(pseg).empty()){ + IC_Spline_CorrX.at(pseg)= IC->fIC_PID[pseg]; + IC_Spline_CorrY.at(pseg)= IC->fIC_PID[pseg]; + //cout << pseg << endl; + } + + //If it exist correct the current line + else if (!Spline_All_ICprev.at(pseg).empty()){ + IC_Spline_CorrX.at(pseg) = IC->fIC_PID[pseg] * SplineIC_X.at(pseg)->Eval(0) / SplineIC_X.at(pseg)->Eval(FF_IC_X); + IC_Spline_CorrY.at(pseg) = IC->fIC_PID[pseg] * SplineIC_Y.at(pseg)->Eval(0) / SplineIC_Y.at(pseg)->Eval(FF_IC_Y); + } //End if non empty + } // end loop + + for (int pseg = 0 ; pseg<=NSpline ; pseg++){ + if (pseg == 1){ + hIC_Y.at(pseg)->Fill(FF_IC_Y,IC_Spline_CorrY.at(pseg)); + hIC_X.at(pseg)->Fill(FF_IC_X,IC_Spline_CorrY.at(pseg)); + } + + else if (pseg == 0){ + hIC_Y.at(pseg)->Fill(FF_IC_Y,IC_Spline_CorrY.at(pseg)/IC_Spline_CorrY.at(1)); + hIC_X.at(pseg)->Fill(FF_IC_X,IC_Spline_CorrY.at(pseg)/IC_Spline_CorrX.at(1)); + } + + + else { + hIC_Y.at(pseg)->Fill(FF_IC_Y,IC_Spline_CorrY.at(pseg)/IC_Spline_CorrY.at(pseg-1)); + hIC_X.at(pseg)->Fill(FF_IC_X,IC_Spline_CorrY.at(pseg)/IC_Spline_CorrX.at(pseg-1)); + } + + } + //=========================================================================================================== + // Fill histo + //===========================================================================================================/ + + // Estimate time left every `updateInterval` iterations + if (e % 100000 == 0 && e > 0) { + auto now = std::chrono::high_resolution_clock::now(); + std::chrono::duration<double> elapsed = now - start; + double avgTimePerIteration = elapsed.count() / e; + double timeLeft = avgTimePerIteration * (Nentries - e); + + std::cout << "Treating segment : " << segment + << " | Estimated time left: " << timeLeft << " seconds" << "\r" << flush; + } + } // end loop on entries + + } //end only m2 + //=========================================================================================================== + // Output + //=========================================================================================================== + vector<vector<TH2F*>> hIC; + hIC.push_back(hIC_X); + hIC.push_back(hIC_Y); + + cout << endl; + return hIC; +} // End HistoFiller + + +/** + } + * Create the spline for one TH2F + * + * Input : + * Pointer to a TH2F + * + * + * Output: + * + * TSpline3 : the output spline + * + */ + +TSpline3* MakeSpline(TH2F* hInput, Int_t NCallee, double XMin = 0 , double + XMax = 1000 , double YMin=0 , double YMax = 100) { + + TSpline3* gspline; + + TH1F* hProfile; + TH1F* pfx; // extended hProfile + + TCanvas* canfit = new TCanvas(Form("CanSpline_%02d",NCallee), + Form("canfit_%02d",NCallee), 0, 0, 1000, 500); + + + //=========================================================================================================== + // Init profile + //=========================================================================================================== + + // Create the TProfile + //hInput->GetYaxis()->SetRangeUser(YMin+0.01,YMax-0.01); + hProfile = (TH1F*)hInput->ProfileX(); + hProfile->SetLineWidth(2); + hProfile->SetDirectory(0); + canfit->cd(); + + hProfile->Draw(); + //=========================================================================================================== + // First and last bin to get to 6k + // event get promoted + //=========================================================================================================== + int FirstBin, LastBin; + double Threshold = hInput->GetEntries() / hInput->GetNbinsX() / 10; + for (int bin =1 ; bin<hInput->GetNbinsX(); bin++) { + + int nEvents = 0; + for (int ybin = 1; ybin <= hInput->GetNbinsY(); ybin++) { + nEvents += hInput->GetBinContent(bin, ybin); + } + FirstBin = bin; + if (nEvents> Threshold && hProfile->GetXaxis()->GetBinLowEdge(bin) > XMin ) break; + } + + for (int bin = hInput->GetNbinsX(); bin>1 ; bin--) { + int nEvents = 0; + for (int ybin = 1; ybin <= hInput->GetNbinsY(); ybin++) { + nEvents += hInput->GetBinContent(bin, ybin); + } + LastBin = bin; + if (nEvents > Threshold && hProfile->GetXaxis()->GetBinUpEdge(bin) < XMax ) break; + } + + cout << "BinEdges " << FirstBin << " " << LastBin << endl; + //=========================================================================================================== + // Init Extended profile function + //=========================================================================================================== + // Create the extended TProfile + pfx = new TH1F( + Form("pfx_%02d", Int_t(NCallee/2)), Form("pfx_%02d", Int_t(NCallee/2)), hProfile->GetNbinsX(), hProfile->GetBinLowEdge(1), + hProfile->GetBinLowEdge(hProfile->GetNbinsX()) + hProfile->GetBinWidth(hProfile->GetNbinsX())); + pfx->SetLineColor(8); + pfx->SetDirectory(0); + + + double parpol3[4]; + double parpol1[2]; + // find the function to extend the TProfile on the lower range + TF1 * fitpol3 = new TF1(Form("FitPol3_pfx_%02d",Int_t(NCallee/2)),"pol3",hProfile->GetBinLowEdge(FirstBin),hProfile->GetBinLowEdge(LastBin)); + hProfile->Fit(fitpol3,"RQ"); + fitpol3->GetParameters(parpol3); + + // find the function to extend the TProfile on the higher range + TF1 * fitpol1 = new TF1(Form("FitPol1_pfx_%02d",Int_t(NCallee/2)),"pol1",hProfile->GetBinLowEdge(FirstBin),hProfile->GetBinLowEdge(LastBin)); + hProfile->Fit(fitpol1,"RQ"); + fitpol1->GetParameters(parpol1); + + + //=========================================================================================================== + // Fill extended profile + //=========================================================================================================== + + // fill the extended TProfile + float newval, lastval, lasterr; + for(int bin=1; bin<=FirstBin; bin++){ + newval=0; + for(int par=0; par<4; par++) newval += parpol3[par]*pow(hProfile->GetBinCenter(bin),par); + pfx->SetBinContent(bin,newval); + } + + for (int bin = FirstBin; bin <= LastBin; bin++) { + newval = hProfile->GetBinContent(bin); + if (newval != 0) { + pfx->SetBinContent(bin, newval); + pfx->SetBinError(bin, hProfile->GetBinError(bin)); + lastval = newval; + lasterr = hProfile->GetBinError(bin); + } + else { + pfx->SetBinContent(bin, lastval); + pfx->SetBinError(bin, lasterr); + } + } + for(int bin=LastBin; bin<=hProfile->GetNbinsX(); bin++){ + newval=0; + for(int par=0; par<4; par++) newval += parpol3[par]*pow(hProfile->GetBinCenter(bin),par); + pfx->SetBinContent(bin,newval); + } + pfx->Draw("same"); + + gspline = new TSpline3(pfx); + gspline->SetName(Form("fspline_%d", NCallee + 1)); + + return gspline; + +} // end makespline + +void HistoDrawer(vector<TH2F*> h,const char* CharName){ + + int NHisto = static_cast<int>(h.size()); + + TCanvas* Can= new TCanvas(CharName,CharName,0,0,2000,1000); + + Can->Divide(NHisto); + + for ( int i=0 ; i < NHisto ; i+=1 ){ + //All x are even and all y are odd + int CanvaNumber = (i) ; + Can->cd(CanvaNumber); + h[i]->Draw("colz"); + } +} + + +vector<double> TxtToVector(const char *Path){ + string line; + vector<double> values; + ifstream file(Path); + + if (file.is_open()) { + while (std::getline(file, line)) { + try { + values.push_back(std::stod(line)); + } catch (const std::invalid_argument& e) { + std::cerr << "Invalid number in line: " << line << '\n'; + } + } + file.close(); + } else { + std::cerr << "Error opening file.\n"; + } + + return values; +} diff --git a/Projects/AlPhaPha/2024/macro/Calibration/IC/Step2/IC0_XYCorrection.C b/Projects/AlPhaPha/2024/macro/Calibration/IC/Step2/IC0_XYCorrection.C new file mode 100644 index 0000000000000000000000000000000000000000..7a3b3e499cba8245144653f0db520c3e971ac436 --- /dev/null +++ b/Projects/AlPhaPha/2024/macro/Calibration/IC/Step2/IC0_XYCorrection.C @@ -0,0 +1,164 @@ +#include "TICPhysics.h" +#include "TTimeData.h" +#include <TChain.h> +#include <TF1.h> +#include <TFile.h> +#include <TH2.h> +#include <TH3.h> +#include <TStyle.h> +#include <TProfile2D.h> +#include <chrono> +vector<double> TxtToVector(const char *Path); + +void IC0_XYCorrection(){ + + //=========================================================================================================== + // Loading var + //=========================================================================================================== + TChain* chain = new TChain("PhysicsTree"); + chain->Add("../../../../root/analysis/VamosCalib247.root"); + chain->Add("../../../../root/analysis/VamosCalib246.root"); + chain->Add("../../../../root/analysis/VamosCalib248.root"); + + TTimeData *Time = new TTimeData(); + TICPhysics* IC = new TICPhysics() ; + double FF_IC_X, FF_IC_Y, FF_V13, FF_DriftTime; + + + vector<double> Toff13 , Toff14, Toff23, Toff24; + const char* Path13 = "../../../../Calibration/VAMOS/FPMW/Toff/Toff13.txt"; + const char* Path14 = "../../../../Calibration/VAMOS/FPMW/Toff/Toff14.txt"; + const char* Path23 = "../../../../Calibration/VAMOS/FPMW/Toff/Toff23.txt"; + const char* Path24 = "../../../../Calibration/VAMOS/FPMW/Toff/Toff24.txt"; + + Toff13 = TxtToVector(Path13); + Toff14 = TxtToVector(Path14); + Toff23 = TxtToVector(Path23); + Toff24 = TxtToVector(Path24); + + + chain->SetBranchStatus("FF_IC_X", true); + chain->SetBranchAddress("FF_IC_X", &FF_IC_X); + chain->SetBranchStatus("FF_IC_Y", true); + chain->SetBranchAddress("FF_IC_Y", &FF_IC_Y); + + chain->SetBranchStatus("IC", true); + chain->SetBranchAddress("IC", &IC); + + chain->SetBranchStatus("Time", true); + chain->SetBranchAddress("Time", &Time); + + + TH3F *ICXY = new TH3F("ICXY","ICXY",100,-550,400,100,-1000,1000,100,0,2); + TH2F *ICX = new TH2F("ICX","ICX",1000,-500,400,1000,0,2); + TProfile2D *Pxyz = new TProfile2D("ICOneZeroProfile","ICOneZeroProfile",100,-550.0,400.0,100,-800.0,480.0); + + int Nentries = chain->GetEntries(); + //int Nentries = 1000000; + auto start = std::chrono::high_resolution_clock::now(); + + for (int e = 0; e < Nentries; e++) { + if (e % 100000 == 0 && e > 0 ) { + auto now = std::chrono::high_resolution_clock::now(); + std::chrono::duration<double> elapsed = now - start; + double avgTimePerIteration = elapsed.count() / e; + double timeLeft = avgTimePerIteration * (Nentries - e); + + std::cout << "********** Estimated time left: " << int(timeLeft) << " seconds **********" << "\r" << flush; + } + + chain->GetEntry(e); + + + if(Time->GetMWPC13Mult()==1 && IC->fIC_raw[8] >0){ + UShort_t FPMW_Section = Time->GetSection_MWPC3(0); + FF_DriftTime = 10* (IC->fIC_TS.at(0) - Time->GetTS_MWPC13(0)) - ((Time->GetTime_MWPC13(0)+Toff13.at(FPMW_Section))) ; + + + Double_t ICRatio = IC->fIC_raw[1]/IC->fIC_raw[0]; + + if(IC->fIC_raw[8] >0 && ICRatio <= 3 && ICRatio >0.1 ) { + ICXY->Fill(FF_IC_X,FF_DriftTime,ICRatio); + Pxyz->Fill(FF_IC_X,FF_DriftTime,ICRatio); + + if (FF_IC_X > -500 && FF_IC_X < 400 && FF_IC_Y > -100 && FF_IC_Y <100 ){ + ICX->Fill(FF_IC_X, ICRatio); + } + } + } + + } + gStyle->SetCanvasPreferGL(true); + TCanvas *c = new TCanvas("c","c"); + gStyle->SetPalette(kRainBow); + ICXY->SetXTitle("X"); + ICXY->SetYTitle("DriftTime"); + ICXY->SetZTitle("RatioIC"); + ICXY->SetMinimum(0); + ICXY->Draw("GL"); // Configure the 3D view + + // Update the canvas + c->Update(); + + TCanvas *c1 = new TCanvas("c1","c1"); + gStyle->SetPalette(kRainBow); + Pxyz->SetXTitle("X"); + Pxyz->SetYTitle("DriftTime"); + Pxyz->SetZTitle("RatioIC"); + Pxyz->SetMinimum(1.0); + Pxyz->SetMaximum(1.5); + Pxyz->Draw("GL SURF2"); // Configure the 3D view + + + auto func = [](double *x, double *p) { + if (x[0] < 200 && x[0] > -150) { + TF1::RejectPoint(); + } + return p[0] + p[1]*x[0] + p[2]*x[0]*x[0] ; + }; + + TF1 *f1 = new TF1("f1",func,-470,400,3); + + TCanvas *c2 = new TCanvas("c2","c2"); + c2->Divide(2); + c2->cd(1); + gStyle->SetPalette(kRainBow); + ICX->SetXTitle("X"); + ICX->SetYTitle("Ratio"); + ICX->Draw(); + c2->cd(2); + ICX->ProfileX()->SetMinimum(0); + ICX->ProfileX()->SetMaximum(2); + ICX->ProfileX()->Draw("GL"); + ICX->ProfileX()->Fit(f1,"R"); + + + + TFile *ofile = new TFile("Output/RatioProfile.root","recreate"); + Pxyz->Write(); + + + TFile *oconf = new TFile("../../../../Calibration/VAMOS/CHIO/ICXY_Profile.root","recreate"); + Pxyz->Write(); +} + +vector<double> TxtToVector(const char *Path){ + string line; + vector<double> values; + ifstream file(Path); + + if (file.is_open()) { + while (std::getline(file, line)) { + try { + values.push_back(std::stod(line)); + } catch (const std::invalid_argument& e) { + std::cerr << "Invalid number in line: " << line << '\n'; + } + } + file.close(); + } else { + std::cerr << "Error opening file.\n"; + } + + return values; +} diff --git a/Projects/AlPhaPha/2024/macro/Calibration/IC/Step2/Output/ReadMe.md b/Projects/AlPhaPha/2024/macro/Calibration/IC/Step2/Output/ReadMe.md new file mode 100644 index 0000000000000000000000000000000000000000..61285a819ac55c03a84d1c9bba9288a6f84e9bed --- /dev/null +++ b/Projects/AlPhaPha/2024/macro/Calibration/IC/Step2/Output/ReadMe.md @@ -0,0 +1,2 @@ +# Output dir + diff --git a/Projects/AlPhaPha/2024/macro/Calibration/IC/Step3/DEYcorrection.C b/Projects/AlPhaPha/2024/macro/Calibration/IC/Step3/DEYcorrection.C new file mode 100644 index 0000000000000000000000000000000000000000..8bbb57d38ccfd7b6e19ae9c8d791f0fd2956ff60 --- /dev/null +++ b/Projects/AlPhaPha/2024/macro/Calibration/IC/Step3/DEYcorrection.C @@ -0,0 +1,755 @@ +#include "TTimeData.h" +#include <TICPhysics.h> +#include <TFPMWPhysics.h> +#include <TCanvas.h> +#include <TChain.h> +#include <TF1.h> +#include <TFile.h> +#include <TH2.h> +#include <TSpline.h> +#include <TCutG.h> +#include <TStyle.h> +#include <fstream> +#include <vector> +#include "TProfileEvaluator.h" + +using namespace std; +vector<double> TxtToVector(const char *Path); +int GetNumberKey(TFile *infile ,const char* ClassName); +void TH2toCSV(TH2F* h2, const char *PathOut) ; + +TSpline3* MakeSpline(TH2F* hInput, Int_t NCallee, double XMin , double + XMax, double YMin, double YMax); +////////////////////////////////////////////////////////////////////////////////////////// +void DEYcorrection(bool cut = false, bool spline = false) { + //=========================================================================================================== + // Loading var + //=========================================================================================================== + TChain* chain = new TChain("PhysicsTree"); + chain->Add("../../../../root/analysis/VamosCalib247.root"); + chain->Add("../../../../root/analysis/VamosCalib246.root"); + chain->Add("../../../../root/analysis/VamosCalib248.root"); + //chain->Add("../../../root/analysis/Run246.root"); + + TICPhysics* IC = new TICPhysics() ; + TTimeData *Time = new TTimeData() ; + TFPMWPhysics *FPMW = new TFPMWPhysics(); + + double FF_IC_X, FF_IC_Y, FF_V13, Y, FF_Theta; + + chain->SetBranchStatus("FF_IC_X", true); + chain->SetBranchAddress("FF_IC_X", &FF_IC_X); + + chain->SetBranchStatus("FF_IC_Y", true); + chain->SetBranchAddress("FF_IC_Y", &FF_IC_Y); + + chain->SetBranchStatus("IC", true); + chain->SetBranchAddress("IC", &IC); + + chain->SetBranchStatus("FPMW", true); + chain->SetBranchAddress("FPMW", &FPMW); + + chain->SetBranchStatus("FF_Theta", true); + chain->SetBranchAddress("FF_Theta", &FF_Theta); + + chain->SetBranchStatus("FF_V13", true); + chain->SetBranchAddress("FF_V13", &FF_V13); + + chain->SetBranchStatus("Time", true); + chain->SetBranchAddress("Time", &Time); + + vector<double> Toff13 , Toff14, Toff23, Toff24; + const char* Path13 = "../../../../Calibration/VAMOS/FPMW/Toff/Toff13.txt"; + const char* Path14 = "../../../../Calibration/VAMOS/FPMW/Toff/Toff14.txt"; + const char* Path23 = "../../../../Calibration/VAMOS/FPMW/Toff/Toff23.txt"; + const char* Path24 = "../../../../Calibration/VAMOS/FPMW/Toff/Toff24.txt"; + + Toff13 = TxtToVector(Path13); + Toff14 = TxtToVector(Path14); + Toff23 = TxtToVector(Path23); + Toff24 = TxtToVector(Path24); + + ProfileEvaluator Profile; + Profile.LoadProfile("../Step2/Output/RatioProfile.root","ICOneZeroProfile"); + + TCutG *CutZ, *CutZ0 , *CutZ02 , *CutZ023 ,*CutZ0234; + TCutG *CutZbis; + TFile *fCut; + if (cut) { + fCut = TFile::Open("Output/CutDeCorr.root"); + CutZbis = (TCutG*)fCut->Get("CutZbis") ; + CutZ = (TCutG*)fCut->Get("CutZ") ; + CutZ0 = (TCutG*)fCut->Get("CutZ0") ; + CutZ02 = (TCutG*)fCut->Get("CutZ02") ; + CutZ023 = (TCutG*)fCut->Get("CutZ023") ; + CutZ0234 = (TCutG*)fCut->Get("CutZ0234") ; + } + + TFile *fSpline; + TSpline3 *splineDE,*splineDE0, *splineDE02,*splineDE023,*splineDE0234,*splineDEbis; + fSpline= new TFile("Output/splineDE.root","open"); + splineDE = (TSpline3*) fSpline->Get("SplineDe"); + splineDE0 = (TSpline3*) fSpline->Get("SplineDe_0"); + splineDE02 = (TSpline3*) fSpline->Get("SplineDe_02"); + splineDE023 = (TSpline3*) fSpline->Get("SplineDe_023"); + splineDE0234 = (TSpline3*) fSpline->Get("SplineDe_0234"); + + splineDEbis = (TSpline3*) fSpline->Get("SplineDebis"); + + TFile *fSplineIC = new TFile("../Step2/Output/spline_P2P_2024.root","open"); + // Get number of spline + int SplineCount = 0 ; + TIter next(fSplineIC->GetListOfKeys()); + TKey* key; + + while ((key=(TKey*)next())){ + if (std::string(key->GetClassName()) == "TSpline3"){ + SplineCount ++; + } + } + vector<TSpline3*> spline_X(11), spline_Y(11); + for (int i = 0; i < 11 ; i++) { + spline_X.at(i) = (TSpline3 *)fSplineIC->Get(Form("fspline_IC%d_X",i)); + spline_Y.at(i) = (TSpline3 *)fSplineIC->Get(Form("fspline_IC%d_Y",i)); + } //End loop on histogram + // + + double XmaxDE = 26000, XMaxE = 35000; + //Defining output histo + TH2F* hDE_E = new TH2F("DE_E","DE_E",1000,0,XMaxE,1000,0,XmaxDE); + TH2F* hDE_E_splined = new TH2F("DE_E_splined","DE_E_splined",1000,0,XMaxE,1000,0,XmaxDE); + TH2F* hDE_Ebis = new TH2F("DE_Ebis","DE_Ebis",1000,0,XMaxE,1000,0,24000); + + TH2F* hDE_E0 = new TH2F("DE_E0","DE_E0",1000,0,XMaxE,1000,0,XmaxDE); + TH2F* hDE_E02 = new TH2F("DE_E02","DE_E02",1000,0,XMaxE,1000,0,XmaxDE); + TH2F* hDE_E023 = new TH2F("DE_E023","DE_E023",1000,0,XMaxE,1000,0,XmaxDE); + TH2F* hDE_E0234 = new TH2F("DE_E0234","DE_E0234",1000,0,XMaxE,1000,0,XmaxDE); + TH2F* hDE_E1234 = new TH2F("DE_E1234","DE_E1234",1000,0,XMaxE,1000,0,XmaxDE); + + TH2F* hDE_Y = new TH2F("DE_Y","DE_Y",250,-1000,1000,250,15000,XmaxDE); + TH2F* hDE0_Y = new TH2F("DE0_Y","DE0_Y",250,-1000,1000,250,15000,XmaxDE); + TH2F* hDE02_Y = new TH2F("DE02_Y","DE02_Y",250,-1000,1000,250,15000,XmaxDE); + TH2F* hDE023_Y = new TH2F("DE023_Y","DE023_Y",250,-1000,1000,250,15000,XmaxDE); + TH2F* hDE0234_Y = new TH2F("DE0234_Y","DE0234_Y",250,-1000,1000,250,15000,XmaxDE); + + + TH2F* hDE_corr_Y = new TH2F("DE_corr_Y","DE_corr_Y",250,-1000,1000,250,15000,XmaxDE); + TH2F* hDE0_corr_Y = new TH2F("DE0_corr_Y","DE0_corr_Y",250,-1000,1000,250,15000,XmaxDE); + TH2F* hDE02_corr_Y = new TH2F("DE02_corr_Y","DE02_corr_Y",250,-1000,1000,250,15000,XmaxDE); + TH2F* hDE023_corr_Y = new TH2F("DE023_corr_Y","DE023_corr_Y",250,-1000,1000,250,15000,XmaxDE); + TH2F* hDE0234_corr_Y = new TH2F("DE0234_corr_Y","DE0234_corr_Y",250,-1000,1000,250,15000,XmaxDE); + + + + TH2F* hDE_Y_cut = new TH2F("DE_Y_cut","DE_Y_cut",250,-1000,1000,250,15000,XmaxDE); + TH2F* hDE0_Y_cut = new TH2F("DE0_Y_cut","DE0_Y_cut",250,-1000,1000,250,15000,XmaxDE); + TH2F* hDE02_Y_cut = new TH2F("DE02_Y_cut","DE02_Y_cut",250,-1000,1000,250,15000,XmaxDE); + TH2F* hDE023_Y_cut = new TH2F("DE023_Y_cut","DE023_Y_cut",250,-1000,1000,250,15000,XmaxDE); + TH2F* hDE0234_Y_cut = new TH2F("DE0234_Y_cut","DE0234_Y_cut",250,-1000,1000,250,15000,XmaxDE); + + + TH2F* hDE_Y_splined = new TH2F("DE_Ysplined","DE_Ysplined",1000,-1000,1000,1000,0,XmaxDE); + TH2F* hDE_Y_splined_nocut = new TH2F("DE_Ysplined_nocut","DE_Ysplined_nocut",1000,-1000,1000,1000,0,22000); + TH2F* hIC_Y = new TH2F("IC_Y","IC_Y",1000,-1000,1000,1000,0,22000); + TH2F* hIC_Y_splined = new TH2F("IC_Ysplined","IC_Ysplined",1000,-1000,1000,1000,0,22000); + + + TH2F* hDE_Y_corr = new TH2F("DE_Ycorr","DE_Ycorr",1000,-1000,1000,1000,0,22000); + TH2F* hDE_Y_corr_nocut = new TH2F("DE_Ycorr_nocut","DE_Ycorr_nocut",1000,-1000,1000,1000,0,22000); + + TH2F* hDE_Y_bis = new TH2F("DE_Ybis","DE_Ybis",1000,-1000,1000,1000,0,22000); + TH2F* hDEbis_Y_corr = new TH2F("DE_Ybiscorr","DE_Ybiscorr",1000,-1000,1000,1000,0,22000); + + TH2F* hDE_E_corr = new TH2F("DE_Ecorr","DE_Ecorr",1000,0,XMaxE,1000,0,XmaxDE); + TH2F* hDE0_E_corr = new TH2F("DE0_Ecorr","DE0_Ecorr",1000,0,XMaxE,1000,0,XmaxDE); + TH2F* hDE02_E_corr = new TH2F("DE02_Ecorr","DE02_Ecorr",1000,0,XMaxE,1000,0,XmaxDE); + TH2F* hDE023_E_corr = new TH2F("DE023_Ecorr","DE023_Ecorr",1000,0,XMaxE,1000,0,XmaxDE); + TH2F* hDE0234_E_corr = new TH2F("DE0234_Ecorr","DE0234_Ecorr",1000,0,XMaxE,1000,0,XmaxDE); + TH2F* hDE_Ebis_corr = new TH2F("DE_Ebiscorr","DE_Ebiscorr",1000,0,XMaxE,1000,0,24000); + + TH2F* hDE_V = new TH2F("DE_V","DE_V",1000,0,5,1000,0,XmaxDE); + + // Def Lim spline + double Ymin = -1000 , Ymax =1000; + //=========================================================================================================== + // Event Loop + //=========================================================================================================== + int Nentries = chain->GetEntries(); + //int Nentries = 2000000; + //int Nentries = 22000; + int NSegment = 11; + ofstream debug("Output/Debug.txt"); + //save data for clustering + + auto start = std::chrono::high_resolution_clock::now(); + for (int e = 0; e < Nentries; e++) { + if (e % 100000 == 0 && e > 0 ) { + auto now = std::chrono::high_resolution_clock::now(); + std::chrono::duration<double> elapsed = now - start; + double avgTimePerIteration = elapsed.count() / e; + double timeLeft = avgTimePerIteration * (Nentries - e); + + std::cout << "********** Estimated time left: " << int(timeLeft) << " seconds **********" << "\r" << flush; + } + + chain->GetEntry(e); + vector<double> ICcorr_Y(NSegment), ICcorr_X(NSegment); + vector<double> Temp_X(NSegment) , Temp_Y(NSegment); + + + + if (Time->GetMWPC13Mult() ==1 && IC->fIC_TS.size()>=8 ){ //only mult 1 event + UShort_t FPMW_Section = Time->GetSection_MWPC3(0); + double FF_DriftTime = 10* (IC->fIC_TS.at(0) - Time->GetTS_MWPC13(0)) - ((Time->GetTime_MWPC13(0)+Toff13.at(FPMW_Section))) ; + + for (int seg = 1; seg < IC->fIC_TS.size() ; seg++) { // loop on multiplicity of event + if (seg == NSegment) seg = 0; //from 1to NSeg finishing with 0 + + double FF_DriftTime_temp = 10* (IC->fIC_TS.at(seg) - Time->GetTS_MWPC13(0)) - ((Time->GetTime_MWPC13(0)+Toff13.at(FPMW_Section))) ; + if (spline_Y.at(seg)==0){ + ICcorr_Y.at(seg) = IC->fIC_PID[seg]; + } + + else { + if (seg == 0) { + ICcorr_Y.at(seg) = ICcorr_Y.at(0) * spline_Y.at(0)->Eval(0)/spline_Y.at(0)->Eval(FF_DriftTime); + } + + else if (seg == 1){ + ICcorr_Y.at(seg) = IC->fIC_PID[1]*spline_Y.at(1)->Eval(0)/spline_Y.at(1)->Eval(FF_DriftTime); + } + + else if (seg > 1) { + ICcorr_Y.at(seg) = IC->fIC_PID[seg] * spline_Y.at(seg)->Eval(0)/ spline_Y.at(seg)->Eval(FF_DriftTime); + } + if (!(ICcorr_Y.at(seg)==ICcorr_Y.at(seg))) ICcorr_Y.at(seg) = 0; + } //end if non empty + if (seg == 0) break; + }//endloop seg + + + + //Double_t PolX = -3.10262 * 1e-7 *FF_IC_X*FF_IC_X - 7.02108 * 1e-5 * FF_IC_X + 1.37622; + Double_t PolX = 1.37622; + + Double_t ICRatio = IC->fIC_PID[1]/IC->fIC_PID[0]; + Double_t ICRatioCorr = ICRatio * PolX / Profile.Evaluate(FF_IC_X,FF_DriftTime,false); + Double_t ICcorr_Y0 = IC->fIC_PID[0] / PolX * Profile.Evaluate(FF_IC_X,FF_DriftTime,false); + + if ( ICRatioCorr<1.4 || ICRatioCorr >1.5){ + ICRatioCorr = ICRatio * PolX / Profile.Evaluate(FF_IC_X,FF_DriftTime,false); + ICcorr_Y0 = IC->fIC_PID[0] / PolX * Profile.Evaluate(FF_IC_X,FF_DriftTime,false); + if (ICRatioCorr >100) { + ICcorr_Y0 = IC->fIC_PID[0]; + } + } + + double DE = 0 , DE_splined=0 ,DE_corr=0, DE_Ybis=0; + double E =0, E_splined=0; + + for (int seg = 0 ; seg < sizeof(IC->fIC_PID)/sizeof(IC->fIC_PID[0]) ; seg++ ){ + if (seg >4){ + //E +=double(IC->fIC_PID[seg]) ; + E += ICcorr_Y.at(seg); + } + } + + + + // ********************* DE setter ********************* + double IC1corr = (IC->fIC_PID[1]*(1-0.000686068*FF_IC_Y))*(1-4.88238e-05*FF_IC_Y+7.40395e-06*FF_IC_Y*FF_IC_Y); + double DE_Bis = (IC1corr+IC->fIC_PID[2]+IC->fIC_PID[3])+IC->fIC_PID[4]; + + DE = ( IC->fIC_PID[0]+ double(IC->fIC_PID[1]) +double(IC->fIC_PID[2])+ double(IC->fIC_PID[3])) + double(IC->fIC_PID[4]); + DE_splined = ( ICcorr_Y0+ ICcorr_Y.at(1) +IC->fIC_PID[2]+ IC->fIC_PID[3]) + IC->fIC_PID[4]; + double DE0 = ( ICcorr_Y0 + ICcorr_Y.at(1) +IC->fIC_PID[2] + IC->fIC_PID[3]) + IC->fIC_PID[4]; + double DE02 = ( ICcorr_Y0+ ICcorr_Y.at(1) +ICcorr_Y.at(2)+ IC->fIC_PID[3]) + IC->fIC_PID[4]; + double DE023 = ( ICcorr_Y0+ ICcorr_Y.at(1) +ICcorr_Y.at(2)+ ICcorr_Y.at(3)) + IC->fIC_PID[4]; + double DE0234 = ( ICcorr_Y0+ ICcorr_Y.at(1) +ICcorr_Y.at(2)+ ICcorr_Y.at(3)) + ICcorr_Y.at(4); + double DE1234 = ( double(IC->fIC_PID[1]) +double(IC->fIC_PID[2])+ double(IC->fIC_PID[3])) + double(IC->fIC_PID[4]); + //DE_splined = 0.5*( ICcorr_Y[1] +IC->fIC_PID[2]+IC->fIC_PID[3])+IC->fIC_PID[4]; + + + //************* Cut ****************** + bool CutV = abs( E-6000)<500; + bool CutVbis = abs( E-6000)<500; + + //bool CutV = true; + //bool CutVbis = true; + + //***********Fill histo************* + + if (/*FF_DriftTime >Ymin && FF_DriftTime <Ymax && (FF_Theta >0)*/ true){ + + //*************Init DE_E***************** + hDE_E -> Fill(E,DE); + hDE_E_splined -> Fill(E,DE_splined); + hDE_E0 -> Fill(E,DE0); + hDE_E02 -> Fill(E,DE02); + hDE_E023 -> Fill(E,DE023); + hDE_E0234 -> Fill(E,DE0234); + hDE_E1234 -> Fill(E,DE1234); + + hDE_Ebis->Fill(E,DE_Bis); + hDE_V->Fill(FF_V13,DE_splined); + + //******* Coor DE ************ + if (spline== true ){ + double DE_corr = DE * splineDE->Eval(0) / splineDE->Eval(FF_DriftTime); + double DE0_corr = DE0 * splineDE0->Eval(0) / splineDE0->Eval(FF_DriftTime); + double DE02_corr = DE02 * splineDE02->Eval(0) / splineDE02->Eval(FF_DriftTime); + double DE023_corr = DE023 * splineDE023->Eval(0) / splineDE023->Eval(FF_DriftTime); + double DE0234_corr = DE0234 * splineDE0234->Eval(0) / splineDE0234->Eval(FF_DriftTime); + + for(int i =0 ; i<5 ; i++){ + if (i==0) debug << ICcorr_Y0 << " "; + else debug << ICcorr_Y.at(i) << " " ; + } + debug << IC->fIC_PID[4]; + debug << endl; + + hDE_E_corr->Fill(E,DE_corr); + hDE0_E_corr->Fill(E,DE0_corr); + hDE02_E_corr->Fill(E,DE02_corr); + hDE023_E_corr->Fill(E,DE023_corr); + hDE0234_E_corr->Fill(E,DE0234_corr); + + if (CutV){ + hDE_corr_Y->Fill(FF_DriftTime,DE_corr); + hDE0_corr_Y->Fill(FF_DriftTime,DE0_corr); + hDE02_corr_Y->Fill(FF_DriftTime,DE02_corr); + hDE023_corr_Y->Fill(FF_DriftTime,DE023_corr); + hDE0234_corr_Y->Fill(FF_DriftTime,DE0234_corr); + } + + + DE_Ybis = DE_Bis * splineDEbis->Eval(0) / splineDEbis->Eval(FF_DriftTime); + hDE_Ebis_corr->Fill(E,DE_Ybis); + + } + + else { + DE_corr = DE_splined; + + DE_Ybis = DE_Bis ; + hDE_Ebis_corr->Fill(E,DE_Ybis); + } + + + if (cut == true ) { + bool CutCharge = CutZ->IsInside(FF_DriftTime,DE); + bool CutCharge0 = CutZ0->IsInside(FF_DriftTime,DE0); + bool CutCharge02 = CutZ02->IsInside(FF_DriftTime,DE02); + bool CutCharge023 = CutZ023->IsInside(FF_DriftTime,DE023); + bool CutCharge0234 = CutZ0234->IsInside(FF_DriftTime,DE0234); + + + if (CutV ) { + hDE_Y_corr_nocut->Fill(FF_DriftTime,DE_corr); + hDE_Y_splined_nocut->Fill(FF_DriftTime,DE_splined); + hDE_Y->Fill(FF_DriftTime,DE); + hDE_Y_splined->Fill(FF_DriftTime,DE_splined); + hDE_Y_corr->Fill(FF_DriftTime,DE_corr); + + hIC_Y->Fill(FF_DriftTime,IC->fIC_PID[0]); + hIC_Y_splined->Fill(FF_DriftTime,ICcorr_Y0); + + + hDE_Y->Fill(FF_DriftTime,DE); + hDE0_Y->Fill(FF_DriftTime,DE0); + hDE02_Y->Fill(FF_DriftTime,DE02); + hDE023_Y->Fill(FF_DriftTime,DE023); + hDE0234_Y->Fill(FF_DriftTime,DE0234); + + + + if (CutCharge) hDE_Y_cut->Fill(FF_DriftTime,DE); + if (CutCharge0) hDE0_Y_cut->Fill(FF_DriftTime,DE0); + if (CutCharge02) hDE02_Y_cut->Fill(FF_DriftTime,DE02); + if (CutCharge023) hDE023_Y_cut->Fill(FF_DriftTime,DE023); + if (CutCharge0234) hDE0234_Y_cut->Fill(FF_DriftTime,DE0234); + } + }//end cut + else { + if(true ){ + hDE_Y_bis->Fill(FF_DriftTime,DE_Bis); + hDE_Y_splined->Fill(FF_DriftTime,DE_splined); + hDE_Y_corr->Fill(FF_DriftTime,DE_corr); + + hIC_Y->Fill(FF_DriftTime,IC->fIC_PID[0]); + hIC_Y_splined->Fill(FF_DriftTime,ICcorr_Y0); + + if (CutV ) { + hDE_Y->Fill(FF_DriftTime,DE); + hDE0_Y->Fill(FF_DriftTime,DE0); + hDE02_Y->Fill(FF_DriftTime,DE02); + hDE023_Y->Fill(FF_DriftTime,DE023); + hDE0234_Y->Fill(FF_DriftTime,DE0234); + } + + } + } + + if (cut == true && CutVbis) { + hDEbis_Y_corr->Fill(Y,DE_Ybis); + } + else{;} + //end cut + }//end cond Y + } // End mult 1 + } //endl loop event + + // making spline + + TSpline3 *splineDe, *splineDe0, *splineDe02,*splineDe023,*splineDe0234,*osplineDEbis; + splineDe = MakeSpline(hDE_Y_cut,0,Ymin,Ymax,15000,23000); + splineDe0 = MakeSpline(hDE0_Y_cut,1,Ymin,Ymax,15000,23000); + splineDe02 = MakeSpline(hDE02_Y_cut,2,Ymin,Ymax,15000,23000); + splineDe023 = MakeSpline(hDE023_Y_cut,3,Ymin,Ymax,15000,23000); + splineDe0234 = MakeSpline(hDE0234_Y_cut,4,Ymin,Ymax,15000,23000); + osplineDEbis = MakeSpline(hDE_Y,5,Ymin,Ymax,0,23000); + + TFile *fSplineDE = new TFile("Output/splineDE.root","recreate"); + + splineDe->SetName("SplineDe"); + splineDe->Write(); + + splineDe0->SetName("SplineDe_0"); + splineDe0->Write(); + + splineDe02->SetName("SplineDe_02"); + splineDe02->Write(); + + splineDe023->SetName("SplineDe_023"); + splineDe023->Write(); + + splineDe0234->SetName("SplineDe_0234"); + splineDe0234->Write(); + + osplineDEbis->SetName("SplineDebis"); + osplineDEbis->Write(); + fSplineDE->Close(); + + //output calibration + TFile *fSplineDEY = new TFile("../../../../Calibration/VAMOS/CHIO/Spline_DE.root","recreate"); + splineDe0234->SetName("fspline_1"); + splineDe0234->Write(); + fSplineDEY->Close(); + + //=========================================================================================================== + // Drawing histo + //=========================================================================================================== + + gStyle->SetPalette(kRainBow); + // =========== Poster plot============================= + + /* + TCanvas* c8 = new TCanvas("DE Before correction","DE Before correction",4000,4000); + hDE_E->GetXaxis()->SetTitle("E (A.U)"); + hDE_E->GetXaxis()->SetRangeUser(3000,35000); + hDE_E->GetXaxis()->CenterTitle(); + + hDE_E->GetYaxis()->SetTitle("#Delta E (A.U)"); + hDE_E->GetYaxis()->SetRangeUser(6000,26000); + hDE_E->GetYaxis()->CenterTitle(); + + hDE_E->GetZaxis()->SetRangeUser(0,140); + hDE_E->GetZaxis()->SetTitle("Number of events"); + hDE_E->GetZaxis()->CenterTitle(); + + hDE_E->SetTitle("PID VAMOS before correction"); + hDE_E->SetStats(0); + hDE_E->Draw("COLZ"); + + c8->SetCanvasSize(4000,3000); + c8->SaveAs("~/These/Plot/Poster/VamosPIDBeforeCorr.png"); + c8->SaveAs("~/These/Plot/Poster/VamosPIDBeforeCorr.pdf"); + c8->SaveAs("~/These/Plot/Poster/VamosPIDBeforeCorr.jpg"); + + TCanvas* c9 = new TCanvas("DE after correction","DE after correction",1000,1000); + + hDE0234_E_corr->GetXaxis()->SetTitle("E (A.U)"); + hDE0234_E_corr->GetXaxis()->SetRangeUser(3000,35000); + hDE0234_E_corr->GetXaxis()->CenterTitle(); + + hDE0234_E_corr->GetYaxis()->SetTitle("#Delta E (A.U)"); + hDE0234_E_corr->GetYaxis()->SetRangeUser(6000,26000); + hDE0234_E_corr->GetYaxis()->CenterTitle(); + + hDE0234_E_corr->GetZaxis()->SetRangeUser(0,140); + hDE0234_E_corr->GetZaxis()->SetTitle("Number of events"); + hDE0234_E_corr->GetZaxis()->CenterTitle(); + + hDE0234_E_corr->SetTitle("PID VAMOS after correction"); + hDE0234_E_corr->SetStats(0); + hDE0234_E_corr->Draw("COLZ"); + + c9->SetCanvasSize(4000,3000); + c9->SaveAs("~/These/Plot/Poster/VamosPIDAfterCorr.png"); + c9->SaveAs("~/These/Plot/Poster/VamosPIDAfterCorr.pdf"); + c9->SaveAs("~/These/Plot/Poster/VamosPIDAfterCorr.jpg"); + //gStyle->SetOptStat(1); + // =========== Poster plot============================= + */ + + + TCanvas* c7 = new TCanvas("correction succesive","correction succesive",1500,1000); + c7->Divide(6); + + c7->cd(1); + hDE_E->Draw(); + + c7->cd(2); + hDE_E0->GetXaxis()->SetTitle("E"); + hDE_E0->GetYaxis()->SetTitle("DE"); + hDE_E0->Draw(); + + c7->cd(3); + hDE_E02->GetXaxis()->SetTitle("E"); + hDE_E02->GetYaxis()->SetTitle("DE"); + hDE_E02->Draw(); + + c7->cd(4); + hDE_E023->GetXaxis()->SetTitle("E"); + hDE_E023->GetYaxis()->SetTitle("DE"); + hDE_E023->Draw(); + + c7->cd(5); + hDE_E0234->GetXaxis()->SetTitle("E"); + hDE_E0234->GetYaxis()->SetTitle("DE"); + hDE_E0234->Draw(); + + c7->cd(6); + hDE_E1234->GetXaxis()->SetTitle("E"); + hDE_E1234->GetYaxis()->SetTitle("DE"); + hDE_E1234->Draw(); + + + + TCanvas *c4 = new TCanvas("c4","c4",1500,1000); + c4->Divide(5); + c4->cd(1); + hDE_Y->Draw(); + + c4->cd(2); + hDE0_Y->Draw(); + + c4->cd(3); + hDE02_Y->Draw(); + + c4->cd(4); + hDE023_Y->Draw(); + + c4->cd(5); + hDE0234_Y->Draw(); + + TCanvas *c4bis = new TCanvas("c4bis","c4bis",1500,1000); + c4bis->Divide(5); + c4bis->cd(1); + hDE_corr_Y->Draw(); + + c4bis->cd(2); + hDE0_corr_Y->Draw(); + + c4bis->cd(3); + hDE02_corr_Y->Draw(); + + c4bis->cd(4); + hDE023_corr_Y->Draw(); + + c4bis->cd(5); + hDE0234_corr_Y->Draw(); + + + + + TCanvas* c2 = new TCanvas("c2","c2",1500,1000); + c2->Divide(6 ); + + c2->cd(1); + gPad->Modified(); + gPad->Update(); + hDE_E_corr->Draw("colz"); + hDE_E_corr->GetXaxis()->SetTitle("E"); + hDE_E_corr->GetYaxis()->SetTitle("DE"); + + c2->cd(2); + gPad->Modified(); + gPad->Update(); + hDE0_E_corr->Draw("colz"); + hDE0_E_corr->GetXaxis()->SetTitle("E"); + hDE0_E_corr->GetYaxis()->SetTitle("DE"); + + c2->cd(3); + gPad->Modified(); + gPad->Update(); + hDE02_E_corr->Draw("colz"); + hDE02_E_corr->GetXaxis()->SetTitle("E"); + hDE02_E_corr->GetYaxis()->SetTitle("DE"); + + c2->cd(4); + gPad->Modified(); + gPad->Update(); + hDE023_E_corr->Draw("colz"); + hDE023_E_corr->GetXaxis()->SetTitle("E"); + hDE023_E_corr->GetYaxis()->SetTitle("DE"); + + c2->cd(5); + gPad->Modified(); + gPad->Update(); + hDE0234_E_corr->Draw("colz"); + + c2->cd(6); + hDE_Ebis->SetTitle("online"); + gPad->Modified(); + gPad->Update(); + hDE_Ebis->Draw("colz"); + hDE_Ebis->GetXaxis()->SetTitle("E"); + hDE_Ebis->GetYaxis()->SetTitle("DE"); + + + //=========================================================================================================== + // Save for further analysis + //=========================================================================================================== + + TFile *oSaved = new TFile("Output/DE_E.root","recreate"); + hDE0234_E_corr->Write(); + TH2toCSV(hDE0234_E_corr,"Output/DE_E.csv"); + +} // End spline chio XY + + +int GetNumberKey(TFile *infile ,const char* ClassName){ + // Get number of spline + int KeyCount = 0 ; + TIter next(infile->GetListOfKeys()); + TKey* keyFit; + + while ((keyFit=(TKey*)next())){ + if (std::string(keyFit->GetClassName()) == ClassName){ + KeyCount ++; + } + } + + return KeyCount; + +} + +TSpline3* MakeSpline(TH2F* hInput, Int_t NCallee, double XMin = 0 , double + XMax = 1000 , double YMin=0 , double YMax = 100) { + + TSpline3* gspline; + + TH1F* hProfile; + TH1F* pfx; // extended hProfile + + TCanvas* canfit = new TCanvas(Form("CanSpline_%02d",NCallee), + Form("canfit_%02d",NCallee), 0, 0, 1000, 500); + + + //=========================================================================================================== + // Init profile + //=========================================================================================================== + + // Create the TProfile + hProfile = (TH1F*)hInput->ProfileX(); + hProfile->SetLineWidth(2); + hProfile->SetDirectory(0); + canfit->cd(); + + hProfile->GetYaxis()->SetRangeUser(YMin, YMax); + hProfile->Draw(); + //=========================================================================================================== + // First and last bin to get to 6k + // event get promoted + //=========================================================================================================== + int FirstBin, LastBin; + double Treshold = 0; + for (int bin =1 ; bin<hProfile->GetNbinsX(); bin++) { + FirstBin = bin; + if (hProfile->GetBinLowEdge(bin)> XMin) break; + } + for (int bin = hProfile->GetNbinsX(); bin>1 ; bin--) { + LastBin = bin; + if (hProfile->GetBinLowEdge(bin)< XMax) break; + } + //=========================================================================================================== + // Init Extended profile function + //=========================================================================================================== + // Create the extended TProfile + pfx = new TH1F( + Form("pfx_%02d", Int_t(NCallee/2)), Form("pfx_%02d", Int_t(NCallee/2)), hProfile->GetNbinsX(), hProfile->GetBinLowEdge(1), + hProfile->GetBinLowEdge(hProfile->GetNbinsX()) + hProfile->GetBinWidth(hProfile->GetNbinsX())); + pfx->SetLineColor(8); + pfx->SetDirectory(0); + //=========================================================================================================== + // Fill extended profile + //=========================================================================================================== + + // fill the extended TProfile + float newval, lastval, lasterr; + for (int bin = 1; bin <= FirstBin; bin++) { + newval = 0; + pfx->SetBinContent(bin, newval); + } + + + for (int bin = FirstBin; bin <= LastBin; bin++) { + newval = hProfile->GetBinContent(bin); + if (newval != 0) { + pfx->SetBinContent(bin, newval); + pfx->SetBinError(bin, hProfile->GetBinError(bin)); + lastval = newval; + lasterr = hProfile->GetBinError(bin); + } + else { + pfx->SetBinContent(bin, lastval); + pfx->SetBinError(bin, lasterr); + } + } + pfx->Draw("same"); + + gspline = new TSpline3(pfx); + gspline->SetName(Form("fspline_%d", NCallee + 1)); + + return gspline; + +} // end makespline + +vector<double> TxtToVector(const char *Path){ + string line; + vector<double> values; + ifstream file(Path); + + if (file.is_open()) { + while (std::getline(file, line)) { + try { + values.push_back(std::stod(line)); + } catch (const std::invalid_argument& e) { + std::cerr << "Invalid number in line: " << line << '\n'; + } + } + file.close(); + } else { + std::cerr << "Error opening file.\n"; + } + + return values; +} + +// Example: Export 2D data for external clustering +void TH2toCSV(TH2F* h2, const char *PathOut) { + std::ofstream outFile(PathOut); + outFile << "E,DE,content\n"; // CSV header + for (int i = 1; i <= h2->GetNbinsX(); ++i) { + for (int j = 1; j <= h2->GetNbinsY(); ++j) { + double content = h2->GetBinContent(i, j); + if (content > 0) { + double x = h2->GetXaxis()->GetBinCenter(i); + double y = h2->GetYaxis()->GetBinCenter(j); + outFile << x << "," << y << "," << content << std::endl; + } + } + } + outFile.close(); +} diff --git a/Projects/AlPhaPha/2024/macro/Calibration/IC/Step3/Output/ReadMe.md b/Projects/AlPhaPha/2024/macro/Calibration/IC/Step3/Output/ReadMe.md new file mode 100644 index 0000000000000000000000000000000000000000..272c724617dcfb0fbd856cccfc5a3e983486a7d6 --- /dev/null +++ b/Projects/AlPhaPha/2024/macro/Calibration/IC/Step3/Output/ReadMe.md @@ -0,0 +1,2 @@ +# Output Dir + diff --git a/Projects/AlPhaPha/2024/macro/Calibration/IC/Step4/CutAutoDEE.C b/Projects/AlPhaPha/2024/macro/Calibration/IC/Step4/CutAutoDEE.C new file mode 100644 index 0000000000000000000000000000000000000000..a6bc5fa1955e5fcdb4e44f725ba89abb2ed0eec3 --- /dev/null +++ b/Projects/AlPhaPha/2024/macro/Calibration/IC/Step4/CutAutoDEE.C @@ -0,0 +1,569 @@ +#include "CutAutoDEE.h" +#include <numeric> +#include <set> +#include <iostream> +#include <unordered_map> + +// Important variable +#define STEP 2; // Step to parse through the histogram in X +#define BINSIZE 15; // Size of the bin in X on which to projectY the plot + + +//Main +void CutAutoDEE(){ + + // Retrieve initial histogram + TFile *inFile = new TFile("Output/DE_E_merged.root","open"); + TH2F *hDE_E = (TH2F*)inFile->Get("DE_E"); + // Inverse data to use tspectrum + for (int xBin=1; xBin<= hDE_E->GetNbinsX();xBin++){ + for (int yBin=1; yBin<= hDE_E->GetNbinsY();yBin++){ + hDE_E->SetBinContent(xBin,yBin , -hDE_E->GetBinContent(xBin,yBin)); + } + } + + //Store result of peak finding + //This is not a good way to do this : We should normalize the structure of the code by + //directly using a PeakData class to store each of the peak. + vector<int> *vPeaks = new vector<int>() ; + vector<TSpectrum*> *vPeakFinder = new vector<TSpectrum*>(); + vector<vector<Double_t>> *LinePos = new vector<vector<Double_t>> ; + + // Tspectrum used to find the peak : If you have problem with peak finding + // adjust the setting in this function + // Step and Binsize are used in this function + Double_t sigma = 3; + Double_t threshold = 0.003; + PeakFinder(vPeakFinder,vPeaks,hDE_E,LinePos,sigma,threshold); + + + // Link the peak, this is where the most critical variable are. + // Specifically the maximum distance between each peak and the minimum number of peak in a line + vector<TCutG*> CutLine = PeakLinker(LinePos); + + // Inverse data for plotting + for (int xBin=1; xBin<= hDE_E->GetNbinsX();xBin++){ + for (int yBin=1; yBin<= hDE_E->GetNbinsY();yBin++){ + hDE_E->SetBinContent(xBin,yBin , -hDE_E->GetBinContent(xBin,yBin)); + } + } + + //Plot + gStyle->SetPalette(kRainBow); + TCanvas* c2 = new TCanvas("c2","c2"); + hDE_E->Draw("colz"); + + TCanvas* c3 = new TCanvas("c3","c3"); + hDE_E->Draw("colz"); + for (auto cut : CutLine){ + cut->Draw("SAME"); + } + + //Save the cut ! + TFile *ofile = new TFile("Output/CutAutoZ.root","RECREATE"); + for (auto cut : CutLine){ + cut->Write(); + } + ofile->Close(); +} + +/** + * Find the peak of an histogram by subdivinding the histogram on it's x axis. + * Store the number of peak and their position in different vector + * + * input and Output: + * vector<TSpectrum*> *sPeak : Vector of TSpectrum to output + * vector<int> *vPeak : Vector of number of peak for each bin range + * vector<vector<Double_t>> *LinePos : Vector of position of each peak for each bin range + */ +void PeakFinder(vector<TSpectrum*> *sPeak , vector<int> *vPeak, TH2F *h, vector<vector<Double_t>> *LinePos, Double_t sigma, Double_t threshold){ + + // Initialising + int nbinsX = h->GetNbinsX(); + int iter = 0; + int stepParsing = STEP; + int SizeBin = BINSIZE; + + // Looping on the histogram x axis. + for (int i = 1; i <= nbinsX; i += stepParsing) { + + // Limit in binnumber + iter +=1; + int x1 = i; + int x2 = std::min(i + SizeBin - 1, nbinsX); + + // Projection on Y between the binnumber + TString projName = Form("projY_%d_to_%d", x1, x2); + TH1D* projY = h->ProjectionY(projName, x1, x2); + projY->SetTitle(Form("Projection Y: bins %d to %d", x1, x2)); + + // PeakFinder + TSpectrum *PeakFinder = new TSpectrum(100); + int nPeaks = PeakFinder->Search(projY,sigma,"",threshold); + + //Store npeaks and tspectrum + vPeak->push_back(nPeaks); // number of peak for this bin range + sPeak->push_back(PeakFinder); + + //Save the position of each peak + Double_t * x = PeakFinder->GetPositionX(); + + for(int peaks = 0 ; peaks < nPeaks ; peaks++){ + vector<Double_t> Position(2); + Position.at(0) = (double(i) + double(SizeBin)/2.0) * h->GetXaxis()->GetBinWidth(4) ; //Retrieve E position as the center + //of the bin + Position.at(1) = PeakFinder->GetPositionX()[peaks]; // Position in DE + LinePos->push_back(Position); + } + + + //Test + if (true && iter ==50){ + // Draw the histogram + TCanvas* c = new TCanvas(Form("c%d",i), Form("Histogram with E = %f",(h->GetXaxis()->GetBinCenter(i))), 800, 600); + projY->Draw(); + } + + } +} + +/** + * Link the different point to create TCUT from the peak found previously + * To do so a max range is given and then all point separated by a distance inferior to it are linked. + * + * Input : + * vec<vec<Double>> *LinePos : pointer to a vector of length number of peak holding position in x and y for each peak + * Output: + * TCUTG : a cut for each charge in vamos + */ +vector<TCutG*> PeakLinker(vector<vector<Double_t>> *LinePos){ + + //Retrieve position of peaks + vector<Double_t> X , Y ; + for (int ipeak = 0; ipeak<LinePos->size() ; ipeak ++){ + X.push_back(LinePos->at(ipeak).at(0)); + Y.push_back(LinePos->at(ipeak).at(1)); + } + + //=========================================================================================================== + // 1. Find the threshold between two point + //=========================================================================================================== + + // Find the distance between two point in X. + //Sort the vec + vector<Double_t> XSub(X); + sort(XSub.begin(),XSub.end()); + + //Take only the unique element + set<Double_t> SetX(XSub.begin() , XSub.end()); + vector<Double_t> XThresh ; + for (Double_t elem : SetX) { + XThresh.push_back(elem); + } + + //Find the average dist in X + vector<Double_t> DiffX = diff(XThresh); + Double_t ThresholdX ; + for (int i =0 ; i<DiffX.size() ; i++) { ThresholdX += DiffX.at(i);} + ThresholdX = ThresholdX / DiffX.size(); + + + // In Y the threshold is not easily findable, However it's critical that the threshold + // is superior to the average distance in X. If not line can't be found by construction + // The threshold should also be inferior to the distance between each line in Y + // To do so adjust the bin STEP at the beginning of the code. + + //Very important set + Double_t Threshold = ThresholdX + 32; + cout << "Threshold X : " << ThresholdX << endl; + cout << "N of X " << SetX.size() << endl; + cout << "Threshold " << Threshold << endl; + + //=========================================================================================================== + // 2.LINK POINT + //=========================================================================================================== + + // Now that the threshold is found we will link the point by comparing each point + // Notice that if two point have the same X they can't be linked + + // Create a vector holding the id of each peak + int ID = 0 ; // Initial Id of the first line + vector<int> vID(LinePos->size(), -1000); + + // We want to loop on the UNIDENTIFIED peak. + for (int ipeak = 0 ; ipeak < LinePos->size() ; ipeak ++){ + + //Here do ID manipulation + //Create a set of ID without the unidentified peak + set<int> SetId(vID.begin() , vID.end()); + if (SetId.size() > 1 ) {SetId.erase(-1000) ; ID = *prev(SetId.end()) + 1 ;} + + //If the current peak is identified set newID to it's ID + if (vID.at(ipeak) != -1000) ID = vID.at(ipeak); // If the point is identified propagate it! + + Double_t XPosPeak = LinePos->at(ipeak).at(0); + Double_t YPosPeak = LinePos->at(ipeak).at(1); + + + // Parse through all the next peak + // This could be done faster by sorting the list by X and Y before and stoping after a threshold + // For now it'll do just fine + for (int ipeakCompare = ipeak + 1 ; ipeakCompare < LinePos->size() ; ipeakCompare ++){ + + if ((vID.at(ipeakCompare) != -1000) || (XPosPeak == LinePos->at(ipeakCompare).at(0))) continue; // If the point is identified skip it ! + + //Calculate the distance between the two peak + Double_t XPosPeakComp = LinePos->at(ipeakCompare).at(0); + Double_t YPosPeakComp = LinePos->at(ipeakCompare).at(1); + Double_t dist = sqrt( pow(abs(XPosPeak-XPosPeakComp),2) + pow(abs(YPosPeak-YPosPeakComp),2) ); + + //If the distance is inferior to the threshold then set both ID to the new one ! + if (dist < Threshold ) { + vID.at(ipeak) = ID ; + vID.at(ipeakCompare) = ID ; + } // end threshold if + } // end compare + } // end loop peak + + //Check if needed + /* + for (int i=0 ; i<vID.size() ; i++){ + if (vID.at(i)!=-1000){ + cout << vID.at(i) << " , "; + } + } + */ + + + + + // Here we flush all the id that have less element than a threshold value + //=========================================================================================================== + // 3. Flush line with not enough value + //=========================================================================================================== + + //This is a pretty sensitive variable + int MinElem = SetX.size()/6; + cout << "Min Elem " << MinElem << endl ; + + + set<int> SetIdTemp(vID.begin() , vID.end()); + for (int Id : SetIdTemp){ + int NId = 0 ; + for (int ipeak = 0 ; ipeak < vID.size() ; ipeak ++) { + if (vID.at(ipeak) == Id) NId += 1 ; + } + if ( NId < MinElem ) { + + for (int ipeak = 0 ; ipeak < vID.size() ; ipeak ++) { + if (vID.at(ipeak) == Id) vID.at(ipeak) = -1000 ; + } + + } + } + + //=========================================================================================================== + // 4. TCutG Creator + //=========================================================================================================== + + // We now have identified each peak to a id that correspond to a line in the DE E + // Now we need to link the ADJACENT line and then transform those point into tcutg + + set<int> SetId(vID.begin() , vID.end()); // This is all the unique element of vID + vector<int> IndexPeak(LinePos->size()); + for (int ipeak = 0 ; ipeak < LinePos->size() ; ipeak ++){ + IndexPeak.at(ipeak) = ipeak ; + } + + //=========================================================================================================== + // 4.1 Sort by id + //=========================================================================================================== + // The next part of the code SHOULD sort by meanY but does not. + // It therefore only serve as a convoluted way to sort by ID. + // We need to sort by id either way so no need to rewrite i + + vector<Double_t> MeanYId(SetId.size()) ; + vector<Double_t> NelemYId(SetId.size()) ; + + //Loop on the element of the set + for (int Id = 0 ; Id < SetId.size() ; Id ++){ + Double_t Sum = 0 , Npeak = 1; + auto itSet = SetId.begin(); + advance(itSet,Id); + + //Loop on all the peak + for (int ipeak = 0 ; ipeak < LinePos->size() ; ipeak ++){ + + // If the ID of the peak correspond to one of the set then increment his Y and NPeak value + if (vID.at(ipeak) == *itSet ) + { + Npeak += 1 ; + Sum += LinePos->at(ipeak).at(1); + } // End if Id + } // Loop on Peak + + NelemYId.at(Id) = Npeak ; + MeanYId.at(Id) = Sum /Npeak ; + // cout << Id << " " << MeanYId.at(Id) << endl; + } // Loop on Id + + //Now we will sort the MeanY vector and return a vector holding the ID sorted + vector<size_t> IndexMeanY(MeanYId.size()); + iota(IndexMeanY.begin(),IndexMeanY.end(),0); + sort(IndexMeanY.begin(),IndexMeanY.end() , [&](size_t i, size_t j) { + return MeanYId.at(i) < MeanYId.at(j); + }); + + // Now we have to sort the SetId according to this index ordering + // Since set can't be sorted we need to copy it to a vector + vector<int> vSetId(SetId.begin(), SetId.end()); + vector<int> SortedSetId(SetId.begin(), SetId.end()); + for (int Index = 0 ; Index < IndexMeanY.size() ; Index ++){ SortedSetId.at(IndexMeanY.at(Index)) = vSetId.at(Index) ;} + + /* + cout << endl << " SORTED" <<endl ; + for (int i = 0 ; i<IndexMeanY.size() ; i++){ + if (IndexMeanY.at(i) == 49 || IndexMeanY.at(i) == 32){ + cout << NelemYId.at(IndexMeanY.at(i)) << endl; + } + cout << IndexMeanY.at(i) << " " << SortedSetId.at(i) << " " << MeanYId.at(IndexMeanY.at(i)) << endl; + } + + cout << endl << " *********************" <<endl ; + */ + + //=========================================================================================================== + // 4.2 Recompacting data into a struct + //=========================================================================================================== + + + // We now have the different lines sorted by Id we just need to link them together by group of two. + // to do so we will sort each id by x and then link them + + // 1st step is to sort the original IndexPeak according to the MeanY sort + // To do so we need to sort the vID vector according to meanY and apply this transformation to IndexPeak too + + // vID as the ID of each peak -> correspondance of peak to a line + // IndexPeak -> index of each of these peak of size number of peak + // SortedSetId -> Set of sorted ID of peak according to mean y + + //Create a map for the sort of ID + unordered_map<int,int> order_map ; + for (size_t i = 0 ; i < SortedSetId.size() ; i++ ) { + order_map[SortedSetId[i]] = i ; + } + + // Combine Index and ID into a single vector of pair + vector<pair<int,int>> PeakId ; + for(size_t i = 0 ; i < IndexPeak.size() ; i++){ + PeakId.emplace_back(IndexPeak.at(i), vID.at(i)); + } + + // Sort the PeakId on the custom order of IDs + sort(PeakId.begin(), PeakId.end(), [&order_map](const auto& a, const auto& b){ + return order_map[a.second] < order_map[b.second]; + } ); + + //2nd step is to take the original Position vector and sort it thanks to PeakId + + vector<vector<Double_t>> LinePosSorted = *LinePos ; + + //Swap LinePosSorted elemn according to Index of PeakID + for (int i = 0 ; i < PeakId.size() ; i++ ){ + LinePosSorted.at(i) = LinePos->at(PeakId.at(i).first); + } + + // 3rd step is to compile x y id and index in one structure + + if (PeakId.size() != LinePos->size() ){ + cerr << "Vector not same size" << endl; + } + + vector<PeakData> PeakStruct ; + for (size_t i=0 ; i<LinePosSorted.size() ; i++){ + PeakData TempPeak = {LinePosSorted.at(i).at(0), LinePosSorted.at(i).at(1) , PeakId.at(i).second , PeakId.at(i).first}; + PeakStruct.push_back(TempPeak); + } + + //=========================================================================================================== + // 4.3 Cleanupi and sortY + //=========================================================================================================== + // We drop all non clustered element and sort the whole struct by the mean value of Y for their ID. + + // 4th step is to drop all element = -1000 + // + + auto groupBegin = find_if(PeakStruct.begin(),PeakStruct.end(),[&](const PeakData& elem){ + return elem.LineId == -1000 ; + }); + + auto groupEnd = find_if(groupBegin,PeakStruct.end(),[&](const PeakData& elem){ + return elem.LineId != -1000 ; + }); + + PeakStruct.erase(groupBegin,groupEnd); + + //4.1 step we will resort by mean y because it didnt work before , probably due to data structure + + auto ItMeanY = PeakStruct.begin(); + vector<int> SortedId ; + vector<Indexed2D> MeanY ; + int index = 0; + + while (ItMeanY != PeakStruct.end()){ + + //Get position of end of the current id + auto IdEnd = find_if(ItMeanY, PeakStruct.end() , [&](const PeakData& elem){ + return elem.LineId != ItMeanY->LineId; + }); + + // Fill MeanY of the current Id + + Double_t Sum = 0; + Double_t Npts = 0; + + for (auto i = ItMeanY ; i!=IdEnd ; i++){ + Sum += i->Y; + Npts += 1; + } + + MeanY.push_back({Sum/Npts ,ItMeanY->LineId , index }); + + index +=1; + ItMeanY = IdEnd; + } + + // We now have a all the mean Y of each ID and their index + // Let's now sort the id from this meanY + + sort(MeanY.begin(),MeanY.end(),[&](Indexed2D a , Indexed2D b){ + return a.x < b.x; + }); + + unordered_map<int,size_t> ordered_map ; + for (size_t i=0 ; i<MeanY.size() ; i++){ + ordered_map[MeanY.at(i).id]=i; + } + + + sort(PeakStruct.begin(),PeakStruct.end(), [&ordered_map](const PeakData& a , const PeakData &b) { + return ordered_map[a.LineId]<ordered_map[b.LineId]; + }); + + //=========================================================================================================== + // 4.4 Sort by X alternating order + //=========================================================================================================== + // We sort by X in alternating order because a TCutG need the point to be aligned to link them together + + // Iterate and sort groups with the same LineId + auto it = PeakStruct.begin();// create an iterator that point to the elements of the PeakData + bool Oddness = true; // to know in which way sort + while (it != PeakStruct.end()){ + + // Find range where id is the same + // This return the first iterator where the condition is fulfilled + auto groupEnd = find_if(it,PeakStruct.end(),[lineId = it->LineId](const PeakData& elem){ + return elem.LineId != lineId ; + }); + + // Now we sort this whole group by x + + sort(it,groupEnd,[Oddness](const PeakData& a , const PeakData& b){ + if (Oddness) return a.X < b.X ; + if (!Oddness) return a.X > b.X ; + else return a.X < b.X; + }); + + // Move to next group + it = groupEnd; + Oddness = not(Oddness) ; + } + + // works ! + /* + for (int i : SortedSetId) {cout << i << endl;} + + int tempId= -1000; + for (PeakData i : PeakStruct) { + if (tempId != i.LineId ){ + tempId = i.LineId; + cout << " Id " << i.LineId << " Y " << i.Y << endl; + } + } + */ + //=========================================================================================================== + // 4.5 Create TCut + //=========================================================================================================== + // We need to make sublist for each 2 lines + + // We will iterate through our data and create substructure for each adjacent pair of LineID + // and store them in a vector of TCutG + + vector<TCutG*> Res ; + + it = PeakStruct.begin(); + int iteration = 0; + + + while(it != PeakStruct.end()){ + + // 1st line + int LineIdBottom = it->LineId; + auto BottomLine = find_if(it,PeakStruct.end(), [&] (const PeakData& elem){ + return elem.LineId != LineIdBottom ; + }) ; + + //2nd line + int LineIdTop = BottomLine->LineId; + auto TopLine = find_if(BottomLine,PeakStruct.end(), [&] (const PeakData& elem){ + return elem.LineId != LineIdTop ; + }) ; + + //cout << LineIdBottom << " " << LineIdTop << endl; + + //Subvector + vector<PeakData> CutVec(it,TopLine); + + //nbr of point + int Npoints = distance(it , TopLine); + + //Create array to hold position + double *x = new double[Npoints + 1 ]; + double *y = new double[Npoints + 1 ]; + + for(int i = 0 ; i<CutVec.size() ; i++) { + x[i] = CutVec.at(i).X ; + y[i] = CutVec.at(i).Y ; + } + + //Close the loop + x[Npoints] = CutVec.at(0).X; + y[Npoints] = CutVec.at(0).Y; + + + //Saving and moving on + + if (Npoints >0 && (BottomLine != PeakStruct.end())){ //Dont link last line to itself + TCutG* Cut = new TCutG(Form("Cut %d",iteration) , Npoints+1, x , y); + Cut->SetLineWidth(2); + Cut->SetLineColor(kRed); + Res.push_back(Cut); + } + iteration += 1 ; + it = BottomLine ; + } // end while + + return Res; +} + + +vector<Double_t> diff(const vector<Double_t>& input){ + vector<Double_t> result; + if (input.size() < 2) return result; // Return empty vector if size < 2 + + for (size_t i = 1; i < input.size(); ++i) { + result.push_back(input[i] - input[i - 1]); + } + return result; +} + diff --git a/Projects/AlPhaPha/2024/macro/Calibration/IC/Step4/CutAutoDEE.h b/Projects/AlPhaPha/2024/macro/Calibration/IC/Step4/CutAutoDEE.h new file mode 100644 index 0000000000000000000000000000000000000000..631abe979f5ba86280da9cdc4d075a10d7dd58b8 --- /dev/null +++ b/Projects/AlPhaPha/2024/macro/Calibration/IC/Step4/CutAutoDEE.h @@ -0,0 +1,35 @@ +#include <TCanvas.h> +#include <TCutG.h> +#include <TFile.h> +#include <TGraph.h> +#include <TH2.h> +#include <TSpectrum.h> +#include <vector> +#include <TStyle.h> + +using namespace std; + +void PeakFinder(vector<TSpectrum*> *sPeak , vector<int> *vPeak, TH2F *h , vector<vector<Double_t>> *LinePos, Double_t sigma, Double_t threshold); +vector<TCutG*> PeakLinker(vector<vector<Double_t>> *LinePos); + +struct PeakData{ + Double_t X ; + Double_t Y ; + int LineId ; + int index ; + +} ; + +struct Indexed1D{ + Double_t x ; + int index ; +} ; + +struct Indexed2D{ + Double_t x ; + int id ; + int index ; +} ; + +vector<Double_t> diff(const vector<Double_t>& input); + diff --git a/Projects/AlPhaPha/2024/macro/Calibration/IC/Step4/CutAutoDEE_FineTuning.C b/Projects/AlPhaPha/2024/macro/Calibration/IC/Step4/CutAutoDEE_FineTuning.C new file mode 100644 index 0000000000000000000000000000000000000000..e130fd293298bd78828034a04b69c4578c914d4d --- /dev/null +++ b/Projects/AlPhaPha/2024/macro/Calibration/IC/Step4/CutAutoDEE_FineTuning.C @@ -0,0 +1,698 @@ +#include "CutAutoDEE_FineTuning.h" +#include <numeric> +#include <set> +#include <iostream> +#include <unordered_map> + +// Important variable +#define STEP 2; // Step to parse through the histogram in X +#define BINSIZE 10; // Size of the bin in X on which to projectY the plot +#define THRESHOLDY 75.0; +#define THRESHOLDX 200.0; + +//Main +void CutAutoDEE_FineTuning(){ + + // Retrieve initial histogram + TFile *inFile = new TFile("Output/DE_E_merged.root","read"); + TH2F *hDE_E = (TH2F*)inFile->Get("DE_E"); + // Inverse data to use tspectrum + for (int xBin=1; xBin<= hDE_E->GetNbinsX();xBin++){ + for (int yBin=1; yBin<= hDE_E->GetNbinsY();yBin++){ + hDE_E->SetBinContent(xBin,yBin , -hDE_E->GetBinContent(xBin,yBin) ); + } + } + + //Store result of peak finding + //This is not a good way to do this : We should normalize the structure of the code by + //directly using a PeakData class to store each of the peak. + vector<int> *vPeaks = new vector<int>() ; + vector<TSpectrum*> *vPeakFinder = new vector<TSpectrum*>(); + vector<vector<Double_t>> *LinePos = new vector<vector<Double_t>> ; + + // Tspectrum used to find the peak : If you have problem with peak finding + // adjust the setting in this function + // Step and Binsize are used in this function + Double_t sigma = 3; + Double_t threshold = 0.0001; + PeakFinder(vPeakFinder,vPeaks,hDE_E,LinePos,sigma,threshold); + + + // Link the peak, this is where the most critical variable are. + // Specifically the maximum distance between each peak and the minimum number of peak in a line + vector<TCutG*> CutLine = PeakLinker(LinePos); + + // Inverse data for plotting + for (int xBin=1; xBin<= hDE_E->GetNbinsX();xBin++){ + for (int yBin=1; yBin<= hDE_E->GetNbinsY();yBin++){ + hDE_E->SetBinContent(xBin,yBin , -hDE_E->GetBinContent(xBin,yBin)); + } + } + + //Plot + gStyle->SetPalette(kRainBow); + TCanvas* c2 = new TCanvas("c2","c2"); + hDE_E->Draw("colz"); + + TCanvas* c3 = new TCanvas("c3","c3"); + hDE_E->Draw("colz"); + for (auto cut : CutLine){ + cut->Draw("SAME"); + } + + //Save the cut ! + TFile *ofile = new TFile("Output/CutAutoZtest.root","RECREATE"); + for (auto cut : CutLine){ + cut->Write(); + } + ofile->Close(); +} + +/** + * Find the peak of an histogram by subdivinding the histogram on it's x axis. + * Store the number of peak and their position in different vector + * + * input and Output: + * vector<TSpectrum*> *sPeak : Vector of TSpectrum to output + * vector<int> *vPeak : Vector of number of peak for each bin range + * vector<vector<Double_t>> *LinePos : Vector of position of each peak for each bin range + */ +void PeakFinder(vector<TSpectrum*> *sPeak , vector<int> *vPeak, TH2F *h, vector<vector<Double_t>> *LinePos, Double_t sigma, Double_t threshold){ + + // Initialising + int nbinsX = h->GetNbinsX(); + int iter = 0; + int stepParsing = STEP; + int SizeBin = BINSIZE; + + // Looping on the histogram x axis. + for (int i = 1; i <= nbinsX; i += stepParsing) { + + // Limit in binnumber + iter +=1; + int x1 = i; + int x2 = std::min(i + SizeBin - 1, nbinsX); + + // Projection on Y between the binnumber + TString projName = Form("projY_%d_to_%d", x1, x2); + TH1D* projY = h->ProjectionY(projName, x1, x2); + projY->SetTitle(Form("Projection Y: bins %d to %d", x1, x2)); + + // PeakFinder + TSpectrum *PeakFinder = new TSpectrum(600); + int nPeaks = PeakFinder->Search(projY,sigma,"",threshold); + + //Store npeaks and tspectrum + vPeak->push_back(nPeaks); // number of peak for this bin range + sPeak->push_back(PeakFinder); + + //Save the position of each peak + Double_t * x = PeakFinder->GetPositionX(); + + for(int peaks = 0 ; peaks < nPeaks ; peaks++){ + vector<Double_t> Position(2); + Position.at(0) = (double(i) + double(SizeBin)/2.0) * h->GetXaxis()->GetBinWidth(4) ; //Retrieve E position as the center + //of the bin + Position.at(1) = PeakFinder->GetPositionX()[peaks]; // Position in DE + LinePos->push_back(Position); + } + + + //Test + if (true && iter ==50){ + // Draw the histogram + TCanvas* c = new TCanvas(Form("c%d",i), Form("Histogram with E = %f",(h->GetXaxis()->GetBinCenter(i))), 800, 600); + projY->Draw(); + } + + } +} + +/** + * Link the different point to create TCUT from the peak found previously + * To do so a max range is given and then all point separated by a distance inferior to it are linked. + * + * Input : + * vec<vec<Double>> *LinePos : pointer to a vector of length number of peak holding position in x and y for each peak + * Output: + * TCUTG : a cut for each charge in vamos + */ +vector<TCutG*> PeakLinker(vector<vector<Double_t>> *LinePos){ + + //Retrieve position of peaks + vector<Double_t> X , Y ; + for (int ipeak = 0; ipeak<LinePos->size() ; ipeak ++){ + X.push_back(LinePos->at(ipeak).at(0)); + Y.push_back(LinePos->at(ipeak).at(1)); + } + + //=========================================================================================================== + // 1. Find the threshold between two point + //=========================================================================================================== + + // Find the distance between two point in X. + //Sort the vec + vector<Double_t> XSub(X); + sort(XSub.begin(),XSub.end()); + + //Take only the unique element + set<Double_t> SetX(XSub.begin() , XSub.end()); + vector<Double_t> XThresh ; + for (Double_t elem : SetX) { + XThresh.push_back(elem); + } + + //Find the average dist in X + vector<Double_t> DiffX = diff(XThresh); + Double_t ThresholdXestim ; + Double_t ThresholdX ; + for (int i =0 ; i<DiffX.size() ; i++) { ThresholdXestim += DiffX.at(i);} + ThresholdXestim = ThresholdXestim / DiffX.size(); + + + // In Y the threshold is not easily findable, However it's critical that the threshold + // is superior to the average distance in X. If not line can't be found by construction + // The threshold should also be inferior to the distance between each line in Y + // To do so adjust the bin STEP at the beginning of the code. + + //Very important set + ThresholdX = THRESHOLDX; + Double_t ThresholdY = THRESHOLDY; + cout << "Threshold X : " << ThresholdX << endl; + cout << "Threshold X approx : " << ThresholdXestim << endl; + cout << "N of X " << SetX.size() << endl; + cout << "ThresholdY " << ThresholdY << endl; + + //=========================================================================================================== + // 2.LINK POINT + //=========================================================================================================== + + // Now that the threshold is found we will link the point by comparing each point + // Notice that if two point have the same X they can't be linked + + // Create a vector holding the id of each peak + int ID = 0 ; // Initial Id of the first line + vector<int> vID(LinePos->size(), -1000); + + // We want to loop on the UNIDENTIFIED peak. + for (int ipeak = 0 ; ipeak < LinePos->size() ; ipeak ++){ + + //Here do ID manipulation + //Create a set of ID without the unidentified peak + set<int> SetId(vID.begin() , vID.end()); + if (SetId.size() > 1 ) {SetId.erase(-1000) ; ID = *prev(SetId.end()) + 1 ;} + + //If the current peak is identified set newID to it's ID + if (vID.at(ipeak) != -1000) ID = vID.at(ipeak); // If the point is identified propagate it! + + Double_t XPosPeak = LinePos->at(ipeak).at(0); + Double_t YPosPeak = LinePos->at(ipeak).at(1); + + + // Parse through all the next peak + // This could be done faster by sorting the list by X and Y before and stoping after a threshold + // For now it'll do just fine + for (int ipeakCompare = ipeak + 1 ; ipeakCompare < LinePos->size() ; ipeakCompare ++){ + + if ((vID.at(ipeakCompare) != -1000) || (XPosPeak == LinePos->at(ipeakCompare).at(0))) continue; // If the point is identified skip it ! + + //Calculate the distance between the two peak + Double_t XPosPeakComp = LinePos->at(ipeakCompare).at(0); + Double_t YPosPeakComp = LinePos->at(ipeakCompare).at(1); + Double_t dist = sqrt( pow(abs(XPosPeak-XPosPeakComp),2) + pow(abs(YPosPeak-YPosPeakComp),2) ); + Double_t distX = sqrt( pow(abs(XPosPeak-XPosPeakComp),2) ); + Double_t distY = sqrt( pow(abs(YPosPeak-YPosPeakComp),2) ); + + //If the distance is inferior to the threshold then set both ID to the new one ! + if ((distX < ThresholdX )&& (distY <ThresholdY )) { + vID.at(ipeak) = ID ; + vID.at(ipeakCompare) = ID ; + } // end threshold if + } // end compare + } // end loop peak + + //Check if needed + /* + for (int i=0 ; i<vID.size() ; i++){ + if (vID.at(i)!=-1000){ + cout << vID.at(i) << " , "; + } + } + */ + + + + + // Here we flush all the id that have less element than a threshold value + //=========================================================================================================== + // 3. Flush line with not enough value + //=========================================================================================================== + + //This is a pretty sensitive variable + int MinElem = SetX.size()/4; + cout << "Min Elem " << MinElem << endl ; + + + set<int> SetIdTemp(vID.begin() , vID.end()); + for (int Id : SetIdTemp){ + int NId = 0 ; + for (int ipeak = 0 ; ipeak < vID.size() ; ipeak ++) { + if (vID.at(ipeak) == Id) NId += 1 ; + } + if ( NId < MinElem ) { + + for (int ipeak = 0 ; ipeak < vID.size() ; ipeak ++) { + if (vID.at(ipeak) == Id) vID.at(ipeak) = -1000 ; + } + + } + } + + //=========================================================================================================== + // 4. TCutG Creator + //=========================================================================================================== + + // We now have identified each peak to a id that correspond to a line in the DE E + // Now we need to link the ADJACENT line and then transform those point into tcutg + + set<int> SetId(vID.begin() , vID.end()); // This is all the unique element of vID + vector<int> IndexPeak(LinePos->size()); + for (int ipeak = 0 ; ipeak < LinePos->size() ; ipeak ++){ + IndexPeak.at(ipeak) = ipeak ; + } + + //=========================================================================================================== + // 4.1 Sort by id + //=========================================================================================================== + // The next part of the code SHOULD sort by meanY but does not. + // It therefore only serve as a convoluted way to sort by ID. + // We need to sort by id either way so no need to rewrite i + + vector<Double_t> MeanYId(SetId.size()) ; + vector<Double_t> NelemYId(SetId.size()) ; + + //Loop on the element of the set + for (int Id = 0 ; Id < SetId.size() ; Id ++){ + Double_t Sum = 0 , Npeak = 1; + auto itSet = SetId.begin(); + advance(itSet,Id); + + //Loop on all the peak + for (int ipeak = 0 ; ipeak < LinePos->size() ; ipeak ++){ + + // If the ID of the peak correspond to one of the set then increment his Y and NPeak value + if (vID.at(ipeak) == *itSet ) + { + Npeak += 1 ; + Sum += LinePos->at(ipeak).at(1); + } // End if Id + } // Loop on Peak + + NelemYId.at(Id) = Npeak ; + MeanYId.at(Id) = Sum /Npeak ; + // cout << Id << " " << MeanYId.at(Id) << endl; + } // Loop on Id + + //Now we will sort the MeanY vector and return a vector holding the ID sorted + vector<size_t> IndexMeanY(MeanYId.size()); + iota(IndexMeanY.begin(),IndexMeanY.end(),0); + sort(IndexMeanY.begin(),IndexMeanY.end() , [&](size_t i, size_t j) { + return MeanYId.at(i) < MeanYId.at(j); + }); + + // Now we have to sort the SetId according to this index ordering + // Since set can't be sorted we need to copy it to a vector + vector<int> vSetId(SetId.begin(), SetId.end()); + vector<int> SortedSetId(SetId.begin(), SetId.end()); + for (int Index = 0 ; Index < IndexMeanY.size() ; Index ++){ SortedSetId.at(IndexMeanY.at(Index)) = vSetId.at(Index) ;} + + /* + cout << endl << " SORTED" <<endl ; + for (int i = 0 ; i<IndexMeanY.size() ; i++){ + if (IndexMeanY.at(i) == 49 || IndexMeanY.at(i) == 32){ + cout << NelemYId.at(IndexMeanY.at(i)) << endl; + } + cout << IndexMeanY.at(i) << " " << SortedSetId.at(i) << " " << MeanYId.at(IndexMeanY.at(i)) << endl; + } + + cout << endl << " *********************" <<endl ; + */ + + //=========================================================================================================== + // 4.2 Recompacting data into a struct + //=========================================================================================================== + + + // We now have the different lines sorted by Id we just need to link them together by group of two. + // to do so we will sort each id by x and then link them + + // 1st step is to sort the original IndexPeak according to the MeanY sort + // To do so we need to sort the vID vector according to meanY and apply this transformation to IndexPeak too + + // vID as the ID of each peak -> correspondance of peak to a line + // IndexPeak -> index of each of these peak of size number of peak + // SortedSetId -> Set of sorted ID of peak according to mean y + + //Create a map for the sort of ID + unordered_map<int,int> order_map ; + for (size_t i = 0 ; i < SortedSetId.size() ; i++ ) { + order_map[SortedSetId[i]] = i ; + } + + // Combine Index and ID into a single vector of pair + vector<pair<int,int>> PeakId ; + for(size_t i = 0 ; i < IndexPeak.size() ; i++){ + PeakId.emplace_back(IndexPeak.at(i), vID.at(i)); + } + + // Sort the PeakId on the custom order of IDs + sort(PeakId.begin(), PeakId.end(), [&order_map](const auto& a, const auto& b){ + return order_map[a.second] < order_map[b.second]; + } ); + + //2nd step is to take the original Position vector and sort it thanks to PeakId + + vector<vector<Double_t>> LinePosSorted = *LinePos ; + + //Swap LinePosSorted elemn according to Index of PeakID + for (int i = 0 ; i < PeakId.size() ; i++ ){ + LinePosSorted.at(i) = LinePos->at(PeakId.at(i).first); + } + + // 3rd step is to compile x y id and index in one structure + + if (PeakId.size() != LinePos->size() ){ + cerr << "Vector not same size" << endl; + } + + vector<PeakData> PeakStruct ; + for (size_t i=0 ; i<LinePosSorted.size() ; i++){ + PeakData TempPeak = {LinePosSorted.at(i).at(0), LinePosSorted.at(i).at(1) , PeakId.at(i).second , PeakId.at(i).first}; + PeakStruct.push_back(TempPeak); + } + + //=========================================================================================================== + // 4.3 Cleanupi and sortY + //=========================================================================================================== + // We drop all non clustered element and sort the whole struct by the mean value of Y for their ID. + + // 4th step is to drop all element = -1000 + // + + auto groupBegin = find_if(PeakStruct.begin(),PeakStruct.end(),[&](const PeakData& elem){ + return elem.LineId == -1000 ; + }); + + auto groupEnd = find_if(groupBegin,PeakStruct.end(),[&](const PeakData& elem){ + return elem.LineId != -1000 ; + }); + + PeakStruct.erase(groupBegin,groupEnd); + + //4.1 step we will resort by mean y because it didnt work before , probably due to data structure + + auto ItMeanY = PeakStruct.begin(); + vector<int> SortedId ; + vector<Indexed2D> MeanY ; + int index = 0; + + while (ItMeanY != PeakStruct.end()){ + + //Get position of end of the current id + auto IdEnd = find_if(ItMeanY, PeakStruct.end() , [&](const PeakData& elem){ + return elem.LineId != ItMeanY->LineId; + }); + + // Fill MeanY of the current Id + + Double_t Sum = 0; + Double_t Npts = 0; + + for (auto i = ItMeanY ; i!=IdEnd ; i++){ + Sum += i->Y; + Npts += 1; + } + + MeanY.push_back({Sum/Npts ,ItMeanY->LineId , index }); + + index +=1; + ItMeanY = IdEnd; + } + + // We now have a all the mean Y of each ID and their index + // Let's now sort the id from this meanY + + sort(MeanY.begin(),MeanY.end(),[&](Indexed2D a , Indexed2D b){ + return a.x < b.x; + }); + + unordered_map<int,size_t> ordered_map ; + for (size_t i=0 ; i<MeanY.size() ; i++){ + ordered_map[MeanY.at(i).id]=i; + } + + + sort(PeakStruct.begin(),PeakStruct.end(), [&ordered_map](const PeakData& a , const PeakData &b) { + return ordered_map[a.LineId]<ordered_map[b.LineId]; + }); + + //=========================================================================================================== + // 4.4 Sort by X alternating order + //=========================================================================================================== + // We sort by X in alternating order because a TCutG need the point to be aligned to link them together + + // Iterate and sort groups with the same LineId + auto it = PeakStruct.begin();// create an iterator that point to the elements of the PeakData + bool Oddness = true; // to know in which way sort + while (it != PeakStruct.end()){ + + // Find range where id is the same + // This return the first iterator where the condition is fulfilled + auto groupEnd = find_if(it,PeakStruct.end(),[lineId = it->LineId](const PeakData& elem){ + return elem.LineId != lineId ; + }); + + // Now we sort this whole group by x + + sort(it,groupEnd,[Oddness](const PeakData& a , const PeakData& b){ + if (Oddness) return a.X < b.X ; + if (!Oddness) return a.X > b.X ; + else return a.X < b.X; + }); + + // Move to next group + it = groupEnd; + Oddness = not(Oddness) ; + } + + // works ! + /* + for (int i : SortedSetId) {cout << i << endl;} + + int tempId= -1000; + for (PeakData i : PeakStruct) { + if (tempId != i.LineId ){ + tempId = i.LineId; + cout << " Id " << i.LineId << " Y " << i.Y << endl; + } + } + */ + //=========================================================================================================== + // 4.5 Create TCut + //=========================================================================================================== + // We need to make sublist for each 2 lines + + // We will iterate through our data and create substructure for each adjacent pair of LineID + // and store them in a vector of TCutG + + vector<TCutG*> Res ; + + it = PeakStruct.begin(); + int iteration = 0; + + + while(it != PeakStruct.end()){ + + // 1st line + int LineIdBottom = it->LineId; + auto BottomLine = find_if(it,PeakStruct.end(), [&] (const PeakData& elem){ + return elem.LineId != LineIdBottom ; + }) ; + + //2nd line + int LineIdTop = BottomLine->LineId; + auto TopLine = find_if(BottomLine,PeakStruct.end(), [&] (const PeakData& elem){ + return elem.LineId != LineIdTop ; + }) ; + + //cout << LineIdBottom << " " << LineIdTop << endl; + + // first we need to find the shortest line + int SizeBottom = distance(it,BottomLine); + int SizeTop = distance(BottomLine,TopLine); + + //Subvector with the longest line first then the sortest + vector<PeakData> CutVec; + vector<PeakData> LongVec; + vector<PeakData> ShortVec; + + if(SizeBottom >= SizeTop ){ + CutVec.insert(CutVec.end(),it,TopLine); + LongVec.insert(LongVec.end(),it,BottomLine); + ShortVec.insert(ShortVec.end(),BottomLine,TopLine); + } + + else { + CutVec.insert(CutVec.end(),BottomLine,TopLine); + CutVec.insert(CutVec.end(),it,BottomLine); + LongVec.insert(LongVec.end(),BottomLine,TopLine); + ShortVec.insert(ShortVec.end(),it,BottomLine); + } + + + + //nbr of point + int Npoints = CutVec.size(); + //Close the loop by finding the closest point to the last one + int closestIndexLast = 0; + int closestIndexBegin = LongVec.size()-1; + int SizeArray = 0; + if (ShortVec.size() == 0) { + closestIndexLast = CutVec.size(); + SizeArray = CutVec.size(); + } + else{ + PeakData lastPoint = ShortVec.back(); + double minDistance = distancePeak(lastPoint,LongVec.at(0)); + for (size_t i = 1 ; i < LongVec.size(); i++){ + double dist = distancePeak(lastPoint,LongVec.at(i)); + if(dist<minDistance){ + minDistance = dist; + closestIndexLast = i; + } + } + PeakData firstPoint = ShortVec.at(0); + double minDistanceFirst = distancePeak(firstPoint,LongVec.at(0)); + for (size_t i = 1 ; i < LongVec.size(); i++){ + double dist = distancePeak(firstPoint,LongVec.at(i)); + if(dist<minDistanceFirst){ + minDistanceFirst = dist; + closestIndexBegin = i; + } + } + SizeArray = ShortVec.size() + (closestIndexBegin - closestIndexLast); + } + //Create array to hold position + double *x = new double[SizeArray + 1 ]; + double *y = new double[SizeArray + 1 ]; + + if (SizeTop == 0){ + + for(int i = 0 ; i<CutVec.size() ; i++) { + x[i] = CutVec.at(i).X ; + y[i] = CutVec.at(i).Y ; + } + x[SizeArray ] = CutVec.at(0).X; + y[SizeArray ] = CutVec.at(0).Y; + + } + + else { + for(int i = 0 ; i<ShortVec.size() ; i++) { + x[i] = ShortVec.at(i).X ; + y[i] = ShortVec.at(i).Y ; + } + + for(int i = closestIndexLast ; i<=closestIndexBegin ; i++) { + x[i + ShortVec.size() - closestIndexLast] = LongVec.at(i).X ; + y[i + ShortVec.size() - closestIndexLast ] = LongVec.at(i).Y ; + } + + + + x[SizeArray] = ShortVec.at(0).X; + y[SizeArray] = ShortVec.at(0).Y; + + } + //Saving and moving on + + if (Npoints >10 && (TopLine != PeakStruct.end())){ //Dont link last line to itself + TCutG* Cut = new TCutG(Form("Cut %d",iteration) , SizeArray+1, x , y); + Cut->SetLineWidth(2); + Cut->SetLineColor(kRed); + Res.push_back(Cut); + } + iteration += 1 ; + it = BottomLine ; + } // end while + + return Res; +} + + +vector<Double_t> diff(const vector<Double_t>& input){ + vector<Double_t> result; + if (input.size() < 2) return result; // Return empty vector if size < 2 + + for (size_t i = 1; i < input.size(); ++i) { + result.push_back(input[i] - input[i - 1]); + } + return result; +} + +void SortAndRenameTCutG() { + TIter next(gROOT->GetListOfSpecials()); + std::vector<std::pair<int, TCutG*>> cuts; + + TObject *obj; + while ((obj = next())) { + TCutG *cut = dynamic_cast<TCutG*>(obj); + if (cut) { + std::string name = cut->GetName(); + if (name.rfind("Cut", 0) == 0) { // Check if name starts with "Cut" + try { + int num = std::stoi(name.substr(3)); + cuts.emplace_back(num, cut); + } catch (...) { + continue; // Ignore malformed names + } + } + } + } + + // Sort by extracted number + std::sort(cuts.begin(), cuts.end(), [](const auto &a, const auto &b) { + return a.first < b.first; + }); + + // Rename sequentially + for (size_t i = 0; i < cuts.size(); ++i) { + cuts[i].second->SetName(Form("Cut %zu", i)); + } + + std::cout << "TCutG objects renamed from original numbering to 0:N.\n"; +} +void SaveTCutGToFile() { + TFile file("Output/CutAutoZ.root", "RECREATE"); + if (!file.IsOpen()) { + std::cerr << "Error: Could not open Output/CutAutoZ.root for writing.\n"; + return; + } + + TIter next(gROOT->GetListOfSpecials()); + TObject *obj; + while ((obj = next())) { + TCutG *cut = dynamic_cast<TCutG*>(obj); + if (cut) { + cut->Write(); + } + } + + file.Close(); + std::cout << "All TCutG objects saved to Output/CutAutoZ.root.\n"; +} + +double distancePeak(const PeakData& p1, const PeakData& p2) { + return abs(p1.X - p2.X); +} + diff --git a/Projects/AlPhaPha/2024/macro/Calibration/IC/Step4/CutAutoDEE_FineTuning.h b/Projects/AlPhaPha/2024/macro/Calibration/IC/Step4/CutAutoDEE_FineTuning.h new file mode 100644 index 0000000000000000000000000000000000000000..effc07e99a8b0b397326bc1846f69059dee66611 --- /dev/null +++ b/Projects/AlPhaPha/2024/macro/Calibration/IC/Step4/CutAutoDEE_FineTuning.h @@ -0,0 +1,36 @@ +#include <TCanvas.h> +#include <TCutG.h> +#include <TFile.h> +#include <TGraph.h> +#include <TH2.h> +#include <TSpectrum.h> +#include <vector> +#include <TStyle.h> + +using namespace std; + +void PeakFinder(vector<TSpectrum*> *sPeak , vector<int> *vPeak, TH2F *h , vector<vector<Double_t>> *LinePos, Double_t sigma, Double_t threshold); +vector<TCutG*> PeakLinker(vector<vector<Double_t>> *LinePos); + +struct PeakData{ + Double_t X ; + Double_t Y ; + int LineId ; + int index ; + +} ; + +struct Indexed1D{ + Double_t x ; + int index ; +} ; + +struct Indexed2D{ + Double_t x ; + int id ; + int index ; +} ; + +vector<Double_t> diff(const vector<Double_t>& input); + +double distancePeak(const PeakData& p1, const PeakData& p2) ; diff --git a/Projects/AlPhaPha/2024/macro/Calibration/IC/Step4/HistoFillerDEE.cpp b/Projects/AlPhaPha/2024/macro/Calibration/IC/Step4/HistoFillerDEE.cpp new file mode 100644 index 0000000000000000000000000000000000000000..18b87f6ee464a7daea23c0fbb718d5c421d9d659 --- /dev/null +++ b/Projects/AlPhaPha/2024/macro/Calibration/IC/Step4/HistoFillerDEE.cpp @@ -0,0 +1,72 @@ +#include "TICPhysics.h" +#include <TChain.h> +#include <chrono> +#include <regex> + + + +/** + * * Simple macro to fill DE E histo from path + * */ +void HistoFillerDEE(const char* Path){ + + //Load file + TChain *chain = new TChain("PhysicsTree"); + chain->Add(Path); + + TICPhysics *IC = new TICPhysics(); + chain->SetBranchStatus("IC", true); + chain->SetBranchAddress("IC", &IC); + + double FF_IC_X; + chain->SetBranchStatus("FF_IC_X", true); + chain->SetBranchAddress("FF_IC_X", &FF_IC_X); + + TH2F *hDE_E = new TH2F("DE_E" , "DE_E", 1000,0,35000,1000,0,26000); + //=========================================================================================================== + // Fill + //=========================================================================================================== + + int Nentries = chain->GetEntries(); + //int Nentries = 1000; + auto start = std::chrono::high_resolution_clock::now(); + + for (int e = 0 ; e < Nentries ; e++){ + if (e%100000 ==0 && e>0){ + auto now = std::chrono::high_resolution_clock::now(); + std::chrono::duration<double> elapsed = now - start; + double avgTimePerIteration = elapsed.count() / e ; + double timeLeft = avgTimePerIteration * (Nentries -e); + std::cout << "********** Estimated time left :" << int(timeLeft) << " seconds **********" << "\r" << flush; + } // end timer + + chain->GetEntry(e); + + if(FF_IC_X>-530 ){ + hDE_E->Fill(IC->Eres,IC->DE); + } + } + + std::string strPath(Path); + std::regex pattern("Run(\\d{3})"); // Regex to match Run followed by exactly 3 digits + std::smatch matches; + + if (std::regex_search(strPath, matches, pattern)) { + std::string number = matches[1]; // Extract the number + std::string fileName = "Output/DE_E_" + number + ".root"; // Generate the filename + + // Create the TFile + TFile* file = new TFile(fileName.c_str(), "RECREATE"); + if (file->IsOpen()) { + std::cout << "File created: " << fileName << std::endl; + } else { + std::cout << "Failed to create the file." << std::endl; + } + + hDE_E->Write(); + // Don't forget to close the file + file->Close(); + } else { + std::cout << "Pattern not found!" << std::endl; + } +} // end macro diff --git a/Projects/AlPhaPha/2024/macro/Calibration/IC/Step4/Output/ReadMe.md b/Projects/AlPhaPha/2024/macro/Calibration/IC/Step4/Output/ReadMe.md new file mode 100644 index 0000000000000000000000000000000000000000..61285a819ac55c03a84d1c9bba9288a6f84e9bed --- /dev/null +++ b/Projects/AlPhaPha/2024/macro/Calibration/IC/Step4/Output/ReadMe.md @@ -0,0 +1,2 @@ +# Output dir + diff --git a/Projects/AlPhaPha/2024/macro/Calibration/IC/Step5/FillHistoCharge.C b/Projects/AlPhaPha/2024/macro/Calibration/IC/Step5/FillHistoCharge.C new file mode 100644 index 0000000000000000000000000000000000000000..c51836972e6328f9f01d6ea88b292d36c2295678 --- /dev/null +++ b/Projects/AlPhaPha/2024/macro/Calibration/IC/Step5/FillHistoCharge.C @@ -0,0 +1,66 @@ +#include "TICPhysics.h" +#include <TChain.h> +#include <regex> +TChain* chain; + +///////////////////////////////////////////////////////////////// +void FillHistoCharge( const char *Path){ + + chain = new TChain("PhysicsTree"); + chain->Add(Path); + + TICPhysics* IC = new TICPhysics() ; + chain->SetBranchStatus("IC", true); + chain->SetBranchAddress("IC", &IC); + + + double FF_IC_X; + chain->SetBranchStatus("FF_IC_X", true); + chain->SetBranchAddress("FF_IC_X", &FF_IC_X); + + + TH1F *hChargeAll = new TH1F("hcharge_all","hcharge_all",2000,20,80); + + int Nentries = chain->GetEntries(); + auto start = std::chrono::high_resolution_clock::now(); + + for (int e = 0; e < Nentries; e++) { + if (e % 100000 == 0 && e > 0 ) { + auto now = std::chrono::high_resolution_clock::now(); + std::chrono::duration<double> elapsed = now - start; + double avgTimePerIteration = elapsed.count() / e; + double timeLeft = avgTimePerIteration * (Nentries - e); + + std::cout << "********** Estimated time left: " << int(timeLeft) << " seconds **********" << "\r" << flush; + } + + chain->GetEntry(e); + + if(FF_IC_X>-530 ){ + hChargeAll->Fill(IC->Chio_Z); + } + } + + std::string strPath(Path); + std::regex pattern("Run(\\d{3})"); // Regex to match Run followed by exactly 3 digits + std::smatch matches; + + if (std::regex_search(strPath, matches, pattern)) { + std::string number = matches[1]; // Extract the number + std::string fileName = "Output/histo_charge_" + number + ".root"; // Generate the filename + + // Create the TFile + TFile* file = new TFile(fileName.c_str(), "RECREATE"); + if (file->IsOpen()) { + std::cout << "File created: " << fileName << std::endl; + } else { + std::cout << "Failed to create the file." << std::endl; + } + + hChargeAll->Write(); + // Don't forget to close the file + file->Close(); + } else { + std::cout << "Pattern not found!" << std::endl; + } +} diff --git a/Projects/AlPhaPha/2024/macro/Calibration/IC/Step5/FitCharge.C b/Projects/AlPhaPha/2024/macro/Calibration/IC/Step5/FitCharge.C new file mode 100644 index 0000000000000000000000000000000000000000..d2e941bd38fc4d0868999b93997305280328d2ab --- /dev/null +++ b/Projects/AlPhaPha/2024/macro/Calibration/IC/Step5/FitCharge.C @@ -0,0 +1,187 @@ +#include <TCanvas.h> +#include <TF1.h> +#include <TFile.h> +#include <TGraphErrors.h> +#include <TH1.h> + +using namespace std; + +void Fit(TH1F* hcharge, string Energy); +TFile* ofile; +int rebin=1; +int RunNumber = 247 ; + +////////////////////////////////////////////////////// +void FitCharge(){ + + //TFile* ifile = new TFile(Form("Output/histo_charge_%d.root",RunNumber),"read"); + TFile* ifile = new TFile(Form("Output/histo_charge_merged.root"),"read"); + + ofile = new TFile("Output/histo_charge_fitted.root","recreate"); + + TH1F* hall = (TH1F*)ifile->FindObjectAny("hcharge_all"); + Fit(hall,"AllEnergy"); + ofile->Close(); +} + +////////////////////////////////////////////////////// +void Fit(TH1F* hcharge,string Energy){ + TGraphErrors* gsigma = new TGraphErrors(); + TGraphErrors* gsigmaZ = new TGraphErrors(); + hcharge->Rebin(rebin); + hcharge->Draw(); + + int Zmin = 31; + int Zmax = 66; + + + int Z = Zmin; + + int NumberOfZ = Zmax - Zmin; + Double_t para[3*NumberOfZ]; + + vector<TF1*> g(NumberOfZ); + vector<double> Integral(NumberOfZ); + vector<double> Integral_err(NumberOfZ); + double total_integral = 0; + vector<double> Yield(NumberOfZ); + + for(int i=0; i<NumberOfZ; i++){ + g[i] = new TF1(Form("g%i",i),"gaus",Z-0.3,Z+0.6); + if(i==0){ + g[i]->SetParameter(0,100); + g[i]->SetParameter(1,Zmin); + g[i]->SetParameter(2,0.3); + } + else if(i>0){ + g[i]->SetParameter(0,g[i-1]->GetParameter(0)); + g[i]->SetParameter(1,Z); + g[i]->SetParameter(2,g[i-1]->GetParameter(2)); + } + + g[i]->SetParLimits(1,Z-0.2,Z+0.2); + g[i]->SetParLimits(2,0.22,0.4); + + + hcharge->Fit(g[i],"qBR"); + + //g[i]->Draw("lsame"); + g[i]->GetParameters(¶[3*i]); + + Z++; + } + + + TString total_func = "gaus(0)"; + for(int i=1; i<NumberOfZ; i++){ + TString gaus_func = Form("gaus(%i)",3*i); + total_func += "+" + gaus_func; + } + + TF1* total = new TF1("total",total_func,Zmin-0.3, Zmin+NumberOfZ -0.7); + total->SetParameters(para); + Z = Zmin; + for(int i=0; i<NumberOfZ; i++){ + total->SetParameter(3*i,g[i]->GetParameter(0)); + total->SetParameter(3*i+1,g[i]->GetParameter(1)); + total->SetParameter(3*i+2,g[i]->GetParameter(2)); + total->SetParLimits(3*i+1,Z-0.2,Z+0.2); + total->SetParLimits(3*i+2,g[i]->GetParameter(2)*0.5,g[i]->GetParameter(2)*1.3); + Z++; + } + total->SetLineColor(4); + total->SetNpx(1000); + + hcharge->Fit(total,"RBq"); + + Z = Zmin; + double MeanSigmaZ = 0 ; + //TF1* one_gauss = new TF1("one_gaus","gaus"); + for(int i=0; i<NumberOfZ; i++){ + + double Amplitude = total->GetParameter(3*i); + double mean = total->GetParameter(3*i+1); + double sigma = total->GetParameter(3*i+2); + double Amplitude_err = total->GetParError(3*i); + double mean_err = total->GetParError(3*i+1); + double sigma_err = total->GetParError(3*i+2); + + /*double Amplitude = g[i]->GetParameter(0); + double mean = g[i]->GetParameter(1); + double sigma = g[i]->GetParameter(2); + double Amplitude_err = g[i]->GetParError(0); + double mean_err = g[i]->GetParError(1); + double sigma_err = g[i]->GetParError(2);*/ + + //one_gauss->SetParameter(0,Amplitude); + //one_gauss->SetParameter(1,mean); + //one_gauss->SetParameter(2,sigma); + //one_gauss->SetParError(0,Amplitude_err); + //one_gauss->SetParError(1,mean_err); + //one_gauss->SetParError(2,sigma_err); + + cout << "************************" << endl; + cout << "Z= " << Z << endl; + //cout << "Amplitude= " << Amplitude << "+/-" << Amplitude_err << endl; + //cout << "Mean= " << mean << endl; + cout << "Sigma= " << sigma << "+/-" << sigma_err << endl; + cout << "Sigma/Z = " << 2.35*sigma /Z*100. << endl; + + //if (2.35*sigma/Z*100 > 1 && 2.35*sigma/Z*100 < 3){MeanSigmaZ += 2.35*sigma/Z*100;} + + if (i==0 || i==NumberOfZ){continue;} + MeanSigmaZ += 2.35*sigma/Z*100; + + gsigma->SetPoint(i-1,Z,sigma); + gsigma->SetPointError(i-1,0,sigma_err); + + gsigmaZ->SetPoint(i-1,Z,2.35*sigma/Z*100); + + Integral[i] = (12.5/rebin)*Amplitude*sigma*sqrt(2*TMath::Pi()); + Integral_err[i] = (12.5/rebin)*sqrt(2*TMath::Pi()*(pow(sigma*Amplitude_err,2) + pow(Amplitude*sigma_err,2))); + //Integral_err[i] = sqrt(Integral[i]); + + + total_integral += Integral[i]; + Z++; + } + + MeanSigmaZ = MeanSigmaZ/NumberOfZ; + cout << "********************" << endl << "Mean Sigma/Z " << MeanSigmaZ << endl; + double histo_integral = hcharge->Integral(); + hcharge->Write(); + total->Write(); + + string output_filename = "Charge_Yield_" + Energy + ".dat"; + ofstream ofile; + ofile.open(output_filename.c_str()); + + // Yield calculation // + Z = Zmin; + for(int i=0; i<NumberOfZ; i++){ + //Yield[i] = Integral[i]/total_integral*200; + Yield[i] = Integral[i]/histo_integral*200; + //double yield_err = Integral_err[i]/total_integral*200; + double yield_err = Integral_err[i]/histo_integral*200; + ofile << Z << " " << Yield[i] << " " << yield_err << endl; + Z++; + } + ofile.close(); + + gsigma->SetMarkerStyle(8); + gsigma->Write(); + + TCanvas* csig = new TCanvas("csig","csig",800,800); + csig->cd(); + gsigma->Draw("ap"); + + TCanvas* csigZ = new TCanvas("csigZ","csigZ",800,800); + gsigmaZ->SetMarkerStyle(8); + gsigmaZ->GetYaxis()->SetTitle("2.35*#sigma/Z*100"); + gsigmaZ->GetXaxis()->SetTitle("Z"); + csigZ->cd(); + gsigmaZ->Draw("ap"); + total->Draw("lsame"); + + +} diff --git a/Projects/AlPhaPha/2024/macro/Calibration/IC/Step5/Output/ReadMe.md b/Projects/AlPhaPha/2024/macro/Calibration/IC/Step5/Output/ReadMe.md new file mode 100644 index 0000000000000000000000000000000000000000..e30c6d3fdfe6da86b87d1ade2ef8a8bdc78ad216 --- /dev/null +++ b/Projects/AlPhaPha/2024/macro/Calibration/IC/Step5/Output/ReadMe.md @@ -0,0 +1 @@ +# Output Dir diff --git a/Projects/AlPhaPha/2024/macro/Calibration/IC/Step5/SplineChio.C b/Projects/AlPhaPha/2024/macro/Calibration/IC/Step5/SplineChio.C new file mode 100644 index 0000000000000000000000000000000000000000..077a50bd3c5ed7c3855f1a518335dfd48fb752b2 --- /dev/null +++ b/Projects/AlPhaPha/2024/macro/Calibration/IC/Step5/SplineChio.C @@ -0,0 +1,879 @@ +#include "TICPhysics.h" +#include "TTimeData.h" +#include <TFPMWPhysics.h> +#include <TChain.h> +#include <TCutG.h> +#include <TF1.h> +#include <TFile.h> +#include <TH2.h> +#include <TSpectrum.h> +#include <TSpline.h> +#include <fstream> +using namespace std; + + +const int CutNumberLoader(); +const int Ncuts = CutNumberLoader(); +const int NSegment=11; +const int Nrun=8; +int RunNumber[Nrun]={245 , 246 ,247 ,248 ,249 ,250 ,251 ,252}; +const char *CutPath = "../Step4/Output/CutAutoZ.root" ; + +void MakeSpline(); +void ApplySpline_perTCutG(); +void ApplySpline(); +vector<double> GetMinMaxX(TCutG* cut); +vector<double> GetMinMaxY(TCutG* cut) ; +TF1* Linear(double x1, double y1, double x2, double y2, const char* name = "f"); +/////////////////////////////////////////////////////////////////////////// +void SplineChio() +{ + //=========================================================================================================== + // Loading Var + //=========================================================================================================== + + //**********************Cut************************************** + TFile *fcut=new TFile(CutPath,"open"); + + vector<TCutG*> cutZ(Ncuts); + for(int i=0;i<Ncuts;i++) cutZ[i]=(TCutG*)fcut->Get(Form("Cut %i",i)); + + //**********************DE_E**************************************************** + TChain *chain=new TChain("PhysicsTree"); + + for(int i=0;i<Nrun;i++) + { + chain->Add(Form("../../../../root/analysis/Run%d.root",RunNumber[i])); + cout << "Run number " << RunNumber[i] << " loaded sucessfully !" << endl; + } + + TICPhysics* IC = new TICPhysics() ; + TTimeData *Time = new TTimeData() ; + + + chain->SetBranchStatus("IC", true); + chain->SetBranchAddress("IC", &IC); + + double FF_IC_X; + chain->SetBranchStatus("FF_IC_X", true); + chain->SetBranchAddress("FF_IC_X", &FF_IC_X); + + + // ****************** Load Time ********************************** + + chain->SetBranchStatus("Time", true); + chain->SetBranchAddress("Time", &Time); + + //***************************************************************** + + TH2F *hChioDE_E_all = new TH2F("hChioDE_E","hChioDE_E",1000,0,36000,500,1000,26000); + vector<TH2F*> hChioDE_E(Ncuts); + for(int i=0;i<Ncuts;i++) hChioDE_E[i]=new TH2F(Form("hChioDE_E_%d",i+1),Form("hChioDE_E_%d",i+1),2000,0,36000,1250,1000,26000); + + auto start = std::chrono::high_resolution_clock::now(); + + int Nentries=chain->GetEntries(); + //int Nentries=1000000; + + for(int e=0;e<Nentries;++e) + { + if (e % 100000 == 0 && e > 0 ) { + auto now = std::chrono::high_resolution_clock::now(); + std::chrono::duration<double> elapsed = now - start; + double avgTimePerIteration = elapsed.count() / e; + double timeLeft = avgTimePerIteration * (Nentries - e); + + std::cout << "********** Estimated time left: " << int(timeLeft) << " seconds **********" << "\r" << flush; + } + + chain->GetEntry(e); + + if(FF_IC_X>-530 ){ + hChioDE_E_all->Fill(IC->Eres,IC->DE); + } + + //for(int i=0;i<Ncuts;i++) if(cutZ[i]->IsInside(Chio_E,FF_DE)) {hChioDE_E[i]->Fill(Chio_E,FF_DE); break;} + for(int i=0;i<Ncuts;i++) if(cutZ[i]->IsInside(IC->Eres,IC->DE)) {hChioDE_E[i]->Fill(IC->Eres,IC->DE); break;} + }//end loop event + + + //**********************************Out*************************** + TFile *outFile=new TFile("histo/SingleZ_ChioDE_E.root","recreate"); + for(int i=0;i<Ncuts;i++) hChioDE_E[i]->Write(); + outFile->Close(); + + TCanvas * can = new TCanvas(Form("ChioEbis_vs_ChioDE_run%04d_%04d",RunNumber[0],RunNumber[Nrun-1]), + Form("ChioEbis_vs_ChiodE_run%04d_%04d",RunNumber[0],RunNumber[Nrun-1]), + 0,0,2000,1000); + can->cd(); + hChioDE_E_all->Draw("colz"); + for(int i = 0 ; i < Ncuts ; i++) cutZ[i]->Draw("same"); +} + + +/////////////////////////////////////////////////////////////////////////// +void MakeSpline(){ + // *************************Cut*************************** + TFile *fcut=new TFile(CutPath, "open"); + vector<TCutG*> cutZ(Ncuts); + // ********************** Load prev histo**************************** + TFile *inFile=new TFile("histo/SingleZ_ChioDE_E.root"); + + int Z59POS = 28; + vector<TSpline3*> gspline(Ncuts); + vector<TH2F*> h2 (Ncuts); + vector<TH1F*> hProfile(Ncuts); + vector<TH1F*> pfx(Ncuts); // extended hProfile + TFile* fspline=new TFile("Output/spline_Chio_2024.root","recreate"); + + TCanvas * canfit = new TCanvas("canfit","canfit",0,0,2000,1500); + + for(int i=0;i<Ncuts;i++) + { + // Get the 2D plot in TCutG + cutZ[i]=(TCutG*)fcut->Get(Form("Cut %i",i)); + h2[i]=(TH2F*)inFile->Get(Form("hChioDE_E_%d",i+1)); + + // Create the TProfile + hProfile[i]=(TH1F*)h2[i]->ProfileX(); + hProfile[i]->SetLineWidth(2); + hProfile[i]->SetDirectory(0); + canfit->cd(); + if (i==0) { + hProfile[i]->GetYaxis()->SetRangeUser(5000,26000); + hProfile[i]->Draw(); + } + else hProfile[i]->Draw("same"); + + // Get the range of the TProfile + int FirstBin, LastBin; + double parpol3[4]; + for(int bin=1; bin<hProfile[i]->GetNbinsX(); bin++){ + FirstBin = bin; + if (hProfile[i]->GetBinContent(bin)>6000) break; + } + double parpol1[2]; + for(int bin=hProfile[i]->GetNbinsX(); bin>1 ; bin--){ + LastBin = bin; + if (hProfile[i]->GetBinContent(bin)>6000) break; + } + + // Create the extended TProfile + pfx[i] = new TH1F(Form("pfx_%02d",i+1),Form("pfx_%02d",i+1),hProfile[i]->GetNbinsX(),hProfile[i]->GetBinLowEdge(1), + hProfile[i]->GetBinLowEdge(hProfile[i]->GetNbinsX())+hProfile[i]->GetBinWidth(hProfile[i]->GetNbinsX())); + pfx[i]->SetLineColor(8); + pfx[i]->SetDirectory(0); + + // find the function to extend the TProfile on the lower range + TF1 * fitpol3 = new TF1(Form("FitPol3_pfx_%02d",i+1),"pol3",hProfile[i]->GetBinLowEdge(FirstBin),hProfile[i]->GetBinLowEdge(FirstBin+200)); + hProfile[i]->Fit(fitpol3,"R"); + fitpol3->GetParameters(parpol3); + + // find the function to extend the TProfile on the higher range + TF1 * fitpol1 = new TF1(Form("FitPol1_pfx_%02d",i+1),"pol1",hProfile[i]->GetBinLowEdge(LastBin)-10000,hProfile[i]->GetBinLowEdge(LastBin)); + hProfile[i]->Fit(fitpol1,"R"); + fitpol1->GetParameters(parpol1); + + // fill the extended TProfile + float newval,lastval,lasterr; + for(int bin=1; bin<=FirstBin; bin++){ + newval=0; + if(i < (Ncuts-4) && i!=0 && i!=1) + for(int par=0; par<4; par++) newval += parpol3[par]*pow(hProfile[i]->GetBinCenter(bin),par); + else if (i >= (Ncuts-4)) + newval = hProfile[i]->GetBinContent(FirstBin); + else{ + newval=0; + for(int par=0; par<2; par++) newval += parpol1[par]*pow(hProfile[i]->GetBinCenter(bin),par); + pfx[i]->SetBinContent(bin,newval); + } + pfx[i]->SetBinContent(bin,newval); + } + for(int bin=FirstBin; bin<=LastBin; bin++){ + newval = hProfile[i]->GetBinContent(bin); + if (newval!=0){ + pfx[i]->SetBinContent(bin,newval); + pfx[i]->SetBinError(bin,hProfile[i]->GetBinError(bin)); + lastval = newval; + lasterr = hProfile[i]->GetBinError(bin); + } + else{ + pfx[i]->SetBinContent(bin,lastval); + pfx[i]->SetBinError(bin,lasterr); + } + } + for(int bin=LastBin; bin<=hProfile[i]->GetNbinsX(); bin++){ + newval=0; + for(int par=0; par<2; par++) newval += parpol1[par]*pow(hProfile[i]->GetBinCenter(bin),par); + pfx[i]->SetBinContent(bin,newval); + } + pfx[i]->Draw("same"); + + gspline[i]=new TSpline3(pfx[i]); + gspline[i]->SetName(Form("fspline_%d",i+1)); + fspline->cd(); + gspline[i]->Write(); + + } + + fspline->Close(); + + TFile* CalOut=new TFile("../../../../Calibration/VAMOS/CHIO/Z_spline.root","recreate"); + for (TSpline3 * i : gspline){ + i->Write(); + } + CalOut->Close(); + + TGraph * gr = new TGraph(); + gr->SetName("DEvsZ"); + + TCanvas * can = new TCanvas("ChioEcorr_vs_Ebis_for_TSplines","ChioEcorr_vs_Ebis_for_TSplines",0,0,2500,2000); + can->cd(); + ofstream ofile_par; + string filename_par = "Output/mean_spline_par.dat"; + ofile_par.open(filename_par.c_str()); + cout << "Float_t FF_DEcorr[" << Ncuts << "] = { " << endl; + ofile_par << "Float_t FF_DEcorr[" << Ncuts << "] = { " << endl; + + + + vector<double> XEdgesMin = GetMinMaxX(cutZ.at(0)); + vector<double> XEdgesMax = GetMinMaxX(cutZ.at(Ncuts-1)); + vector<double> YEdgesMin = GetMinMaxY(cutZ.at(0)); + vector<double> YEdgesMax = GetMinMaxY(cutZ.at(Ncuts-1)); + + double x1 = (XEdgesMin.at(0) + XEdgesMin.at(1)) /2; + double x2 = (XEdgesMax.at(0) + XEdgesMax.at(1)) /2; + double y1 = (YEdgesMin.at(0) + YEdgesMin.at(1)) /2; + double y2 = (YEdgesMax.at(0) + YEdgesMax.at(1)) /2; + + TF1 *MeanPos = Linear(y1,x1,y2,x2,"MeanPos"); + + for(int i=0;i<Ncuts;i++){ + can->cd(); + if(i==0) h2[i]->Draw("col"); + else h2[i]->Draw("col,same"); + cout << h2[i]->GetMean(2) << ", " << endl; + ofile_par << h2[i]->GetMean(2) << ", " << endl; + //gr->SetPoint(i,sqrt(h2[i]->GetMean(2)),i+31); + gr->SetPoint(i,gspline[i]->Eval(MeanPos->Eval((YEdgesMin.at(0)+YEdgesMin.at(1))/2)),i+Z59POS); + //hProfile[i]->Draw("same"); + pfx[i]->Draw("same"); + gspline[i]->SetLineColor(kBlue); + gspline[i]->SetLineWidth(3); + gspline[i]->Draw("lsame"); + } + + TCanvas * cangr = new TCanvas("ToGetRoughCal","ToGetRoughCal",200,0,1200,1000); + cangr->cd(); + gr->SetMarkerStyle(20); + gr->Draw("AP"); + gr->Fit("pol5"); +} + + +/////////////////////////////////////////////////////////////////////////// +void ApplySpline_perTCutG() +{ + + // *************************Cut*************************** + TFile *fcut=new TFile(CutPath); + vector<TCutG*> cutZ(Ncuts); + + // ******************* TSpline DE************************* + TFile *fspline=new TFile("Output/spline_Chio_2024.root","read"); + vector<TSpline3*> gspline(Ncuts); + + for(int i=0;i<Ncuts;i++){ + cutZ[i]=(TCutG*)fcut->Get(Form("Cut %i",i)); + gspline[i] = (TSpline3*)fspline->FindObjectAny(Form("fspline_%d",i+1)); + } + + //**********************DE_E**************************************************** + TChain *chain=new TChain("PhysicsTree"); + + + for(int i=0;i<Nrun;i++) + { + chain->Add(Form("../../../../root/analysis/Run%d.root",RunNumber[i])); + cout << "Run number " << RunNumber[i] << " loaded sucessfully !" << endl; + } + TICPhysics* IC = new TICPhysics() ; + + chain->SetBranchStatus("IC", true); + chain->SetBranchAddress("IC", &IC); + + // variable after applying TSpline MUST FIND middles of each spline + double FF_DEcorr; + vector<double> FF_DEcorr0 = { + 7375.73, + 7982.83, + 8419.21, + 8801.52, + 9227.89, + 9667.77, + 10163.1, + 10680.5, + 11222.2, + 11758.3, + 12287.6, + 12802.2, + 13324.2, + 13828.4, + 14325.2, + 14773.7, + 15207.3, + 15674.6, + 16098.9, + 16548.5, + 16926.9, + 17384.1, + 17778.3, + 18196.6, + 18597.6, + 19043.9, + 19437.8, + 19889.4,}; + // 20301.1, + //20709.7, + //21112.6, + //21544, + //21953.4, + //22361.8}; + + +TH2F *hChioDE_E_all = new TH2F("hChioDE_E_all","hChioDE_E_all",1000,1000,41000,500,1000,26000); +TH2F *hChioDE_E = new TH2F("hChioDE_E","hChioDE_E",1000,1000,41000,500,1000,26000); +TH2F *hChioDE_E_corr = new TH2F("hChioDE_E_corr","hChioDE_E_corr",1000,1000,41000,500,1000,26000); + +int Nentries=chain->GetEntries(); +//int Nentries = 1000000; +auto start = std::chrono::high_resolution_clock::now(); + +for(int e=0;e<Nentries;++e){ + if (e % 100000 == 0 && e > 0 ) { + auto now = std::chrono::high_resolution_clock::now(); + std::chrono::duration<double> elapsed = now - start; + double avgTimePerIteration = elapsed.count() / e; + double timeLeft = avgTimePerIteration * (Nentries - e); + + std::cout << "********** Estimated time left: " << int(timeLeft) << " seconds **********" << "\r" << flush; + } + + chain->GetEntry(e); + + hChioDE_E_all->Fill(IC->Eres,IC->DE); + for(int i=0;i<Ncuts;i++) if(cutZ[i]->IsInside(IC->Eres,IC->DE)) { + hChioDE_E->Fill(IC->Eres,IC->DE); + FF_DEcorr = FF_DEcorr0[i] * IC->DE / gspline[i]->Eval(IC->Eres); + hChioDE_E_corr->Fill(IC->Eres,FF_DEcorr); + break; + } +} + +TCanvas * can = new TCanvas(Form("ChioEbis_vs_ChioDE_run%04d_%04d",RunNumber[0],RunNumber[Nrun-1]), + Form("ChioEbis_vs_ChiodE_run%04d_%04d",RunNumber[0],RunNumber[Nrun-1]), + 0,0,2000,1000); +can->Divide(1,3); +can->cd(1); gPad-> SetLogz(); hChioDE_E_all->Draw("colz"); +can->cd(2); gPad-> SetLogz(); hChioDE_E->Draw("colz"); +can->cd(3); gPad-> SetLogz(); hChioDE_E_corr->Draw("colz"); + +} +void ApplySplineUnique() +{ + // *************************Cut*************************** + TFile *fcut=new TFile(CutPath, "open"); + vector<TCutG*> cutZ(Ncuts); + + // ******************* TSpline DE************************* + TFile *fspline=new TFile("Output/spline_Chio_2024.root","read"); + vector<TSpline3*> gspline(Ncuts) ; + + for(int i=0;i<Ncuts;i++){ + cutZ[i]=(TCutG*)fcut->Get(Form("Cut %i",i)); + gspline[i] = (TSpline3*)fspline->FindObjectAny(Form("fspline_%d",i+1)); + } + + //**********************DE_E**************************************************** + TChain *chain=new TChain("PhysicsTree"); + for(int i=0;i<Nrun;i++) + { + chain->Add(Form("../../../../root/analysis/Run%d.root",RunNumber[i])); + cout << "Run number " << RunNumber[i] << " loaded sucessfully !" << endl; + } + + TICPhysics* IC = new TICPhysics() ; + chain->SetBranchStatus("IC", true); + chain->SetBranchAddress("IC", &IC); + + + // variable after applying TSpline + double FF_DEcorr=0; + double Zrough=0; + double Zabitbetter=0; + + vector<double> FF_DEcorr0(Ncuts); + for(int index=0; index<Ncuts; index++){ + FF_DEcorr0[index] = gspline[index]->Eval(8500); + } + + // histos + TH2F *hChioDE_E_all = new TH2F("hChioDE_E_all","hChioDE_E_all",1000,1000,41000,500,1000,26000); + TH2F *hChioDE_E_corr = new TH2F("hChioDE_E_corr","hChioDE_E_corr",1000,1000,41000,500,1000,26000); + TH1F *hChioDE_corr = new TH1F("hChioDE_corr","hChioDE_corr",2500,1000,26000); + TH2F *hChioZ_E_rough = new TH2F("hChioZ_E_rough","hChioZ_E_rough",1000,1000,41000,500,25,65); + TH1F *hChioZ_rough = new TH1F("hChioZ_rough","hChioZ_rough",2500,25,65); + TH1F *hChioZ_abitbetter = new TH1F("hChioZ_abitbetter","hChioZ_abitbetter",2500,25,65); + + //int Nentries=1e6; + int Nentries = chain->GetEntries(); + auto start = std::chrono::high_resolution_clock::now(); + + double FF_Eres_prev = 0; + for(int e=0;e<Nentries;e++) + { + if (e % 100000 == 0 && e > 0 ) { + auto now = std::chrono::high_resolution_clock::now(); + std::chrono::duration<double> elapsed = now - start; + double avgTimePerIteration = elapsed.count() / e; + double timeLeft = avgTimePerIteration * (Nentries - e); + + std::cout << "********** Estimated time left: " << int(timeLeft) << " seconds **********" << "\r" << flush; + } + + FF_DEcorr = -100; + chain->GetEntry(e); + + if(IC->Eres==FF_Eres_prev) continue; + FF_Eres_prev = IC->Eres; + hChioDE_E_all->Fill(IC->Eres,IC->DE); + + float Eval_DEspline, DEspline0; + int index=0; + + Eval_DEspline = gspline[24]->Eval(IC->Eres); + DEspline0 = FF_DEcorr0[24]; + + FF_DEcorr = DEspline0 * IC->DE / Eval_DEspline ; + hChioDE_E_corr->Fill(IC->Eres,FF_DEcorr); + //if(FF_DEcorr>15120 && FF_DEcorr<15130) { + // cout << e << " " << index << " " << IC->Eres << " " << FF_DEcorr << endl; + //} + + // should be pol2 !!! + //Zrough = -110.165 + 3.34475*sqrt(FF_DEcorr) - 0.0271123*FF_DEcorr + 8.60752e-05 * pow(sqrt(FF_DEcorr),3); + Zrough = 16.8521 + 0.0017328*FF_DEcorr + 1.70774e-8*pow(FF_DEcorr,2); + Zabitbetter = -127.117 + 3.83463*sqrt(FF_DEcorr) - 0.0317448 *FF_DEcorr + 0.000100428 * pow(sqrt(FF_DEcorr),3); + hChioZ_E_rough->Fill(IC->Eres,Zrough); + + if(3000<IC->Eres && IC->Eres<25000){ + hChioDE_corr->Fill(FF_DEcorr); + hChioZ_rough->Fill(Zrough); + hChioZ_abitbetter->Fill(Zabitbetter); + } + } + + TCanvas * can = new TCanvas(Form("ChioEbis_vs_ChioDE_run%04d_%04d",RunNumber[0],RunNumber[Nrun-1]), + Form("ChioEbis_vs_ChiodE_run%04d_%04d",RunNumber[0],RunNumber[Nrun-1]), + 0,0,2000,2000); + can->Divide(1,3); + can->cd(1); gPad-> SetLogz(); hChioDE_E_all->Draw("colz"); + for(int i = 0 ; i < Ncuts ; i++) cutZ[i]->Draw("same"); + can->cd(2); gPad-> SetLogz(); hChioDE_E_corr->Draw("colz"); + can->cd(3); gPad-> SetLogz(); hChioZ_E_rough->Draw("colz"); + + TCanvas * can1D = new TCanvas(Form("DE_and_Z_ifE_8000to25000_run%04d_%04d",RunNumber[0],RunNumber[Nrun-1]), + Form("DE_and_Z_ifE_8000to25000_run%04d_%04d",RunNumber[0],RunNumber[Nrun-1]), + 0, 0, 2000,2000); + can1D->Divide(1,3); + can1D->cd(1); hChioDE_corr->Draw(); + can1D->cd(2); hChioZ_rough->Draw(); + can1D->cd(3); hChioZ_abitbetter->Draw(); + + TFile * fsave = new TFile(Form("Output/DEvsE_corr_run%04d_%04d.root",RunNumber[0],RunNumber[Nrun-1]),"recreate"); + can->Write(); + hChioDE_E_all->Write(); + hChioDE_E_corr->Write(); + hChioZ_E_rough->Write(); + can1D->Write(); + hChioDE_corr->Write(); + hChioZ_rough->Write(); + hChioZ_abitbetter->Write(); + fsave->Close(); +} + + +/////////////////////////////////////////////////////////////////////////// +void ApplySpline() +{ + // *************************Cut*************************** + TFile *fcut=new TFile(CutPath, "open"); + vector<TCutG*> cutZ(Ncuts); + + // ******************* TSpline DE************************* + TFile *fspline=new TFile("Output/spline_Chio_2024.root","read"); + vector<TSpline3*> gspline(Ncuts) ; + + for(int i=0;i<Ncuts;i++){ + cutZ[i]=(TCutG*)fcut->Get(Form("Cut %i",i)); + gspline[i] = (TSpline3*)fspline->FindObjectAny(Form("fspline_%d",i+1)); + } + + //**********************DE_E**************************************************** + TChain *chain=new TChain("PhysicsTree"); + for(int i=0;i<Nrun;i++) + { + chain->Add(Form("../../../../root/analysis/Run%d.root",RunNumber[i])); + cout << "Run number " << RunNumber[i] << " loaded sucessfully !" << endl; + } + + TICPhysics* IC = new TICPhysics() ; + chain->SetBranchStatus("IC", true); + chain->SetBranchAddress("IC", &IC); + + double FF_IC_X; + chain->SetBranchStatus("FF_IC_X", true); + chain->SetBranchAddress("FF_IC_X", &FF_IC_X); + + + // variable after applying TSpline + double FF_DEcorr=0; + double Zrough=0; + double Zabitbetter=0; + vector<double> FF_DEcorr0(Ncuts); + + vector<double> XEdgesMin = GetMinMaxX(cutZ.at(0)); + vector<double> XEdgesMax = GetMinMaxX(cutZ.at(Ncuts-1)); + vector<double> YEdgesMin = GetMinMaxY(cutZ.at(0)); + vector<double> YEdgesMax = GetMinMaxY(cutZ.at(Ncuts-1)); + + double x1 = (XEdgesMin.at(0) + XEdgesMin.at(1)) /2; + double x2 = (XEdgesMax.at(0) + XEdgesMax.at(1)) /2; + double y1 = (YEdgesMin.at(0) + YEdgesMin.at(1)) /2; + double y2 = (YEdgesMax.at(0) + YEdgesMax.at(1)) /2; + + TF1 *MeanPos = Linear(y1,x1,y2,x2,"MeanPos"); + + for(int index=0; index<Ncuts; index++){ + vector<double> YEdgesMinTemp = GetMinMaxY(cutZ.at(index)); + cout << " E " <<MeanPos->Eval((YEdgesMinTemp.at(0)+YEdgesMinTemp.at(1))/2) << endl; + cout << "DE " << gspline[index]->Eval(MeanPos->Eval((YEdgesMinTemp.at(0)+YEdgesMinTemp.at(1))/2)) << endl; + FF_DEcorr0[index] = gspline[index]->Eval(MeanPos->Eval((YEdgesMinTemp.at(0)+YEdgesMinTemp.at(1))/2)); + } + // histos + TH2F *hChioDE_E_all = new TH2F("hChioDE_E_all","hChioDE_E_all",1000,1000,41000,500,1000,26000); + TH2F *hChioDE_E_corr = new TH2F("hChioDE_E_corr","hChioDE_E_corr",1000,1000,41000,500,1000,26000); + TH1F *hChioDE_corr = new TH1F("hChioDE_corr","hChioDE_corr",1000,1000,26000); + TH2F *hChioZ_E_rough = new TH2F("hChioZ_E_rough","hChioZ_E_rough",1000,1000,41000,500,25,65); + TH1F *hChioZ_rough = new TH1F("hChioZ_rough","hChioZ_rough",2500,25,65); + TH1F *hChioZ_abitbetter = new TH1F("hChioZ_abitbetter","hChioZ_abitbetter",2500,25,65); + + std::ifstream file("Output/Calibration.txt"); + bool Loaded = true ; + + if (!file) { + std::cerr << "Error opening file.\n"; + Loaded = false; + } + Double_t p[6]; // Assuming 5 values + if (Loaded == true){ + for (int i = 0; i < 6; ++i) { + file >> p[i]; + } + } + int Nentries=2e6; + //int Nentries = chain->GetEntries(); + auto start = std::chrono::high_resolution_clock::now(); + + double FF_Eres_prev = 0; + for(int e=0;e<Nentries;e++) + { + if (e % 100000 == 0 && e > 0 ) { + auto now = std::chrono::high_resolution_clock::now(); + std::chrono::duration<double> elapsed = now - start; + double avgTimePerIteration = elapsed.count() / e; + double timeLeft = avgTimePerIteration * (Nentries - e); + + std::cout << "********** Estimated time left: " << int(timeLeft) << " seconds **********" << "\r" << flush; + } + + FF_DEcorr = -100; + chain->GetEntry(e); + + if (IC->DE<3000) continue; + if(IC->Eres==FF_Eres_prev) continue; + if (FF_IC_X<-530) continue; + FF_Eres_prev = IC->Eres; + + hChioDE_E_all->Fill(IC->Eres,IC->DE); + + float Eval_DEspline, DEspline0; + int index=0; + for(int i=0; i<Ncuts; i++){ + Eval_DEspline = gspline[i]->Eval(IC->Eres); + if(IC->DE<Eval_DEspline) break; + index = i; + } + + Eval_DEspline = gspline[index]->Eval(IC->Eres); + DEspline0 = FF_DEcorr0[index]; + float dmin, dsup; + if( index < (Ncuts-1) && IC->DE > gspline[0]->Eval(IC->Eres)){ + dmin = abs(IC->DE - gspline[index]->Eval(IC->Eres)); + dsup = abs(gspline[index+1]->Eval(IC->Eres) - IC->DE); + if(dmin<0) cout << "negative value of dmin = " << dmin << ", for index = " << index << endl; + if(dsup<0) cout << "negative value of dsup = " << dsup << ", for index = " << index << endl; + //if(dsup<dmin) { + // Eval_DEspline = gspline[index+1]->Eval(IC->Eres) ; + // DEspline0 = FF_DEcorr0[index] ; + //} + Eval_DEspline = dsup*gspline[index]->Eval(IC->Eres)/(dmin+dsup) + dmin*gspline[index+1]->Eval(IC->Eres)/(dmin+dsup) ; + DEspline0 = dsup*FF_DEcorr0[index]/(dmin+dsup) + dmin*FF_DEcorr0[index+1]/(dmin+dsup) ; + + FF_DEcorr = DEspline0 * IC->DE / Eval_DEspline ; + hChioDE_E_corr->Fill(IC->Eres,FF_DEcorr); + //if(FF_DEcorr>15120 && FF_DEcorr<15130) { + // cout << e << " " << index << " " << IC->Eres << " " << FF_DEcorr << endl; + //} + } + + // should be pol2 !!! + //Zrough = -110.165 + 3.34475*sqrt(FF_DEcorr) - 0.0271123*FF_DEcorr + 8.60752e-05 * pow(sqrt(FF_DEcorr),3); + + if (Loaded == true){ + + + Zrough = p[0] + p[1]*FF_DEcorr +p[2]*pow(FF_DEcorr,2) + p[3]*pow(FF_DEcorr,3) +p[4]*pow(FF_DEcorr,4) + p[5]*pow(FF_DEcorr,5); + } + + else { + Zrough = -57.068 + 0.0275327*FF_DEcorr - 3.52303e-06*pow(FF_DEcorr,2) + 2.36906e-10*pow(FF_DEcorr,3) - 7.74553e-15*pow(FF_DEcorr,4) + 9.90229e-20*pow(FF_DEcorr,5); + } + //out << Zrough << endl; + Zabitbetter = -127.117 + 3.83463*sqrt(FF_DEcorr) - 0.0317448 *FF_DEcorr + 0.000100428 * pow(sqrt(FF_DEcorr),3); + hChioZ_E_rough->Fill(IC->Eres,Zrough); + + if(3000<IC->Eres && IC->Eres<25000){ + hChioDE_corr->Fill(FF_DEcorr); + hChioZ_rough->Fill(Zrough); + hChioZ_abitbetter->Fill(Zabitbetter); + } + } + + // ********************** Fit pol5 of each Z *********************************** + // + // PeakFinder + TSpectrum *PeakFinder = new TSpectrum(100); + int nPeaks = PeakFinder->Search(hChioDE_corr,2,"",0.040); + Double_t * x = PeakFinder->GetPositionX(); + std::sort(x,x+nPeaks); + + TGraph * gr = new TGraph(); + for(int i=0;i<nPeaks;i++){ + cout << x[i] << endl; + gr->SetPoint(i,x[i],i+32); + } + + // Define and fit a function (linear in this case) + TF1 *fitFunc = new TF1("fitFunc", "pol5"); + gr->Fit(fitFunc, "Q"); // Quiet mode + + // Open a text file to save fit results + std::ofstream outFile("Output/Calibration.txt"); + std::ofstream outFileCal("../../../../Calibration/VAMOS/CHIO/Chio_Z_Calibration.cal"); + + outFileCal << "IC_Z_CALIBRATION" << " "; + if (outFile.is_open()) { + for (int i = 0; i < fitFunc->GetNpar(); i++) { + outFile << fitFunc->GetParameter(i) << " "; + outFileCal << fitFunc->GetParameter(i) << " "; + } + outFile.close(); + outFileCal.close(); + std::cout << "Fit results saved to fit_results.txt\n"; + } + + std::ofstream CalFile("../../../../Calibration/VAMOS/CHIO/Chio_Z_Spline_Eval.txt"); + if (CalFile.is_open()) { + for (int i = 0; i < cutZ.size(); i++) { + vector<double> YEdgesMinTemp = GetMinMaxY(cutZ.at(i)); + CalFile << MeanPos->Eval((YEdgesMinTemp.at(0)+YEdgesMinTemp.at(1))/2) << " "; + } + CalFile.close(); + std::cout << "Eval position saved in calibration\n"; + } + + + + TCanvas * cangr = new TCanvas("Cal","Cal",200,0,1200,1000); + cangr->cd(); + gr->SetMarkerStyle(20); + gr->Draw("AP"); + gr->Fit("pol5"); + + // ****************************************************************************** + TCanvas * can = new TCanvas(Form("ChioEbis_vs_ChioDE_run%04d_%04d",RunNumber[0],RunNumber[Nrun-1]), + Form("ChioEbis_vs_ChiodE_run%04d_%04d",RunNumber[0],RunNumber[Nrun-1]), + 0,0,2000,2000); + can->Divide(1,3); + can->cd(1); gPad-> SetLogz(); hChioDE_E_all->Draw("colz"); + for(int i = 0 ; i < Ncuts ; i++) cutZ[i]->Draw("same"); + can->cd(2); gPad-> SetLogz(); hChioDE_E_corr->Draw("colz"); + can->cd(3); gPad-> SetLogz(); hChioZ_E_rough->Draw("colz"); + + TCanvas * can1D = new TCanvas(Form("DE_and_Z_ifE_8000to25000_run%04d_%04d",RunNumber[0],RunNumber[Nrun-1]), + Form("DE_and_Z_ifE_8000to25000_run%04d_%04d",RunNumber[0],RunNumber[Nrun-1]), + 0, 0, 2000,2000); + can1D->Divide(1,3); + can1D->cd(1); hChioDE_corr->Draw(); + can1D->cd(2); hChioZ_rough->Draw(); + can1D->cd(3); hChioZ_abitbetter->Draw(); + + TFile * fsave = new TFile(Form("Output/DEvsE_corr_run%04d_%04d.root",RunNumber[0],RunNumber[Nrun-1]),"recreate"); + can->Write(); + hChioDE_E_all->Write(); + hChioDE_E_corr->Write(); + hChioZ_E_rough->Write(); + can1D->Write(); + hChioDE_corr->Write(); + hChioZ_rough->Write(); + hChioZ_abitbetter->Write(); + fsave->Close(); +} + +/////////////////////////////////////////////////////////////////////////// +void Fit_DE_E_corr() +{ + + TFile * f = new TFile(Form("Output/DEvsE_corr_run%04d_%04d.root",RunNumber[0],RunNumber[Nrun-1]),"read"); + f->ls(); + TH1F * h1DEcorr = (TH1F*)f->Get("hChioDE_corr"); + h1DEcorr->SetDirectory(0); + f->Close(); + + TCanvas * canfit = new TCanvas("DEcorrforfit","Decorrforfit",0,0,3000,1000); + canfit->Divide(2,1); + canfit->cd(1); h1DEcorr->Draw(); + + float InitMean[34] = { + 7.55521e+03, 7.82392e+03, 8.04283e+03, 8.36164e+03, + 8.68128e+03, 9.06218e+03, 9.44613e+03, 9.82352e+03, + 1.02433e+04, 1.06666e+04, 1.11215e+04, 1.15371e+04, + 1.20246e+04, 1.24492e+04, 1.29190e+04, 1.34056e+04, + 1.38367e+04, 1.42968e+04, 1.46816e+04, 1.51614e+04, + 1.55115e+04, 1.58873e+04, 1.63049e+04, 1.66187e+04, + 1.69730e+04, 1.73969e+04, 1.76965e+04, 1.80730e+04, + 1.85234e+04, 1.88849e+04, 1.92127e+04, 1.96378e+04, + 1.99820e+04, 2.02914e+04 + }; + + float InitSigma[34] = { + 6.97215e+01, 7.76394e+01, 7.84506e+01, 8.23239e+01, + 9.25943e+01, 1.06154e+02, 1.03566e+02, 1.02429e+02, + 1.10066e+02, 1.15032e+02, 1.20449e+02, 1.15397e+02, + 1.30322e+02, 1.29513e+02, 1.45757e+02, 1.53552e+02, + 1.48061e+02, 1.49866e+02, 1.60311e+02, 1.56691e+02, + 1.55461e+02, 1.78093e+02, 1.66829e+02, 1.67863e+02, + 1.75509e+02, 1.75189e+02, 1.70589e+02, 1.76178e+02, + 1.65192e+02, 1.87470e+02, 1.78153e+02, 1.58322e+02, + 1.53678e+02, 1.97134e+02 + }; + + char name[1000]; + TString totname; + for(int i=0; i<34;i++){ + sprintf(name,"%i",i*3); + totname += "gaus(" + TString(name) + ")+"; + } + totname.Remove(totname.Last('+')); + TF1 * gtot = new TF1("MultiGaussianFit",totname,InitMean[0]-2*InitSigma[0],InitMean[33]+2*InitSigma[33]); + + for(int i=0; i<34;i++){ + gtot->SetParameter(i*3+1,InitMean[i]); + gtot->SetParameter(i*3+2,InitSigma[i]); + } + h1DEcorr->Fit(gtot,"R+"); + + TGraph * gr = new TGraph(); + gr->SetName("DEfit_vs_Z"); + gr->SetMarkerStyle(20); + for(int i=0; i<33; i++){ + gr->SetPoint(i,sqrt(gtot->GetParameter(i*3+1)),i+32); + } + + canfit->cd(2); gr->Draw("AP"); + +} + + +const int CutNumberLoader(){ + TFile *fcut=new TFile(CutPath,"open"); + + int CutCount = 0 ; + TIter next(fcut->GetListOfKeys()); + TKey* key; + + while ((key=(TKey*)next())){ + if (std::string(key->GetClassName()) == "TCutG"){ + CutCount ++; + } + } + + const int res = CutCount; + return res; +} + + +std::vector<double> GetMinMaxX(TCutG* cut) { + if (!cut) { + std::cerr << "Invalid TCutG!" << std::endl; + return {}; + } + + int nPoints = cut->GetN(); + double* xPoints = cut->GetX(); + + // Find the minimum and maximum X values + double minX = *std::min_element(xPoints, xPoints + nPoints); + double maxX = *std::max_element(xPoints, xPoints + nPoints); + + return {minX, maxX}; +} + +std::vector<double> GetMinMaxY(TCutG* cut) { + if (!cut) { + std::cerr << "Invalid TCutG!" << std::endl; + return {}; + } + + int nPoints = cut->GetN(); + double* yPoints = cut->GetY(); + + // Find the minimum and maximum X values + double minX = *std::min_element(yPoints, yPoints + nPoints); + double maxX = *std::max_element(yPoints, yPoints + nPoints); + + return {minX, maxX}; +} + + +TF1* Linear(double x1, double y1, double x2, double y2, const char* name ) { + // Ensure the points are not the same + if (x1 == x2) { + throw std::invalid_argument("x1 and x2 must be different to define a function."); + } + + // Calculate slope and intercept of the line + double slope = (y2 - y1) / (x2 - x1); + double intercept = y1 - slope * x1; + + // Define the function as a lambda + auto func = [slope, intercept](double* x, double* p) { + return slope * x[0] + intercept; + }; + + // Create and return the TF1 + TF1* f = new TF1(name, func, x1, x2, 0); + return f; +} diff --git a/Projects/AlPhaPha/2024/macro/Calibration/IC/Step5/histo/ReadMe.md b/Projects/AlPhaPha/2024/macro/Calibration/IC/Step5/histo/ReadMe.md new file mode 100644 index 0000000000000000000000000000000000000000..aea7ea3d3e0e21e2499b717c1703d3b7cd20e388 --- /dev/null +++ b/Projects/AlPhaPha/2024/macro/Calibration/IC/Step5/histo/ReadMe.md @@ -0,0 +1,2 @@ +# histo dir + diff --git a/Projects/AlPhaPha/2024/macro/Calibration/IC/Step6/CorrectionZ.C b/Projects/AlPhaPha/2024/macro/Calibration/IC/Step6/CorrectionZ.C new file mode 100644 index 0000000000000000000000000000000000000000..e25155b66f3fbe2ed2472cae6316f5b1d10259c2 --- /dev/null +++ b/Projects/AlPhaPha/2024/macro/Calibration/IC/Step6/CorrectionZ.C @@ -0,0 +1,114 @@ +#include "TICPhysics.h" +#include "TFPMWPhysics.h" +#include <TChain.h> +#include <regex> + +void HistoFiller(const char* Path); + +void CorrectionZ(const char* Path){ + + //=========================================================================================================== + if( Path && Path[0] != '\0'){ + HistoFiller(Path); + return; + } + //=========================================================================================================== + + + TFile *f = new TFile("Output/histo_merged.root","open"); + //=========================================================================================================== + TH2F *hZvsTS = nullptr , *hZvsTheta = nullptr; + f->GetObject("hZvsTS",hZvsTS); + f->GetObject("hZvsTheta",hZvsTheta); + //=========================================================================================================== + + TCanvas *c = new TCanvas("c","c"); + c->Divide(2); + c->cd(1); + hZvsTheta->Draw("colz"); + c->cd(2); + hZvsTS->Draw("colz"); + +} // end macro: + +void HistoFiller(const char* Path){ + + //=========================================================================================================== + // Import + //=========================================================================================================== + TChain *chain = new TChain("PhysicsTree"); + chain->Add (Path); + //=========================================================================================================== + TICPhysics* IC = new TICPhysics() ; + chain->SetBranchStatus("IC", true); + chain->SetBranchAddress("IC", &IC); + + TFPMWPhysics* FPMW = new TFPMWPhysics() ; + chain->SetBranchStatus("FPMW", true); + chain->SetBranchAddress("FPMW", &FPMW); + + double FF_IC_X, VAMOS_TS_hour; + chain->SetBranchStatus("FF_IC_X", true); + chain->SetBranchAddress("FF_IC_X", &FF_IC_X); + + chain->SetBranchStatus("VAMOS_TS_hour", true); + chain->SetBranchAddress("VAMOS_TS_hour", &VAMOS_TS_hour); + //=========================================================================================================== + + //=========================================================================================================== + // Histo initialisation + filling just to get the range + TH2F *hZvsTheta = new TH2F("hZvsTheta","hZvsTheta",1000,-0.5,0.5,1000,20,80); + TH2F *hZvsTS = new TH2F("hZvsTS","hZvsTS",2000,0,200,1000,20,80); + //=========================================================================================================== + int Nentries = chain->GetEntries(); + //int Nentries = 1e6; + auto start = std::chrono::high_resolution_clock::now(); + + for (int e = 0; e < Nentries; e++) { + if (e % 100000 == 0 && e > 0 ) { + auto now = std::chrono::high_resolution_clock::now(); + std::chrono::duration<double> elapsed = now - start; + double avgTimePerIteration = elapsed.count() / e; + double timeLeft = avgTimePerIteration * (Nentries - e); + + std::cout << "********** Estimated time left: " << int(timeLeft) << " seconds **********" << "\r" << flush; + } + + chain->GetEntry(e); + + if(FF_IC_X>-530 && VAMOS_TS_hour>0){ + hZvsTheta->Fill(FPMW->Thetaf,IC->Chio_Z); + hZvsTS->Fill(VAMOS_TS_hour,IC->Chio_Z); + } + } + + //=========================================================================================================== + // Save file + //=========================================================================================================== + + string strPath(Path); + regex pattern("Run(\\d{3})"); // Regex to match Run followed by exactly 3 digits + smatch matches; + + if (regex_search(strPath, matches, pattern)) { + string number = matches[1]; // Extract the number + string fileName = "Output/histo_" + number + ".root"; // Generate the filename + + // Create the TFile + TFile* file = new TFile(fileName.c_str(), "RECREATE"); + if (file->IsOpen()) { + cout << "File created: " << fileName << endl; + } else { + cout << "Failed to create the file." << endl; + } + + hZvsTS->Write(); + hZvsTheta->Write(); + // Don't forget to close the file + file->Close(); + } + else { + cout << "Pattern not found!" << endl; + } + +} diff --git a/Projects/AlPhaPha/2024/macro/Calibration/IC/Step6/MultiRun.sh b/Projects/AlPhaPha/2024/macro/Calibration/IC/Step6/MultiRun.sh new file mode 100644 index 0000000000000000000000000000000000000000..2bd20d92ff03e37f060ae8716118693db93849ad --- /dev/null +++ b/Projects/AlPhaPha/2024/macro/Calibration/IC/Step6/MultiRun.sh @@ -0,0 +1,54 @@ +#!/bin/bash + + +#launch job in parralel +MAX_JOBS=$(( $(nproc) -4 )) # Maximum parallel jobs +SEMAPHORE="job_semaphore" + +# Create a named pipe (FIFO) for job control +mkfifo $SEMAPHORE +exec 3<> $SEMAPHORE +rm $SEMAPHORE + +# Pre-fill the semaphore with tokens equal to MAX_JOBS +for ((i=0; i<MAX_JOBS; i++)); do + echo "" >&3 +done + + +for run in {245..252}; do + read -u 3 # Wait for an available slot + { + root -l -q "./CorrectionZ.C(\"../../../../root/analysis/Run"$run"AoQ_test.root\")" + echo "" >&3 # Release the slot + } & +done + +wait + +exec 3>&- #close semaphore +# Define output file name +output_file="Output/histo_merged.root" + +# Initialize an empty list of files +files="" + +# Loop through the run numbers +for run in {245..252}; do + filename="Output/histo_${run}.root" + + # Check if the file exists before adding it + if [[ -f "$filename" ]]; then + files+=" $filename" + else + echo "Warning: $filename not found, skipping." + fi +done + +# Perform hadd only if there are files +if [[ -n "$files" ]]; then + echo "Merging files into $output_file..." + hadd "$output_file" $files +else + echo "No valid files found. Nothing to merge." +fi diff --git a/Projects/AlPhaPha/2024/macro/Calibration/IC/Step6/Output/ReadMe.md b/Projects/AlPhaPha/2024/macro/Calibration/IC/Step6/Output/ReadMe.md new file mode 100644 index 0000000000000000000000000000000000000000..e30c6d3fdfe6da86b87d1ade2ef8a8bdc78ad216 --- /dev/null +++ b/Projects/AlPhaPha/2024/macro/Calibration/IC/Step6/Output/ReadMe.md @@ -0,0 +1 @@ +# Output Dir diff --git a/Projects/AlPhaPha/2024/macro/chio/DE_E_Spline/ReadMe.md b/Projects/AlPhaPha/2024/macro/chio/DE_E_Spline/ReadMe.md index 3e6f98ff227ed13a32aec8477ee7090fd282e46a..7486114a8d2b4ee6f0e4740343915ed62d052fd5 100644 --- a/Projects/AlPhaPha/2024/macro/chio/DE_E_Spline/ReadMe.md +++ b/Projects/AlPhaPha/2024/macro/chio/DE_E_Spline/ReadMe.md @@ -2,6 +2,7 @@ You need to fill Cut folder with the cut of each charge -You can do this simply by using the DECorr.C macro in the YCalibration folder +You can do this simply by using the DECorr.C macro in the XYCalibration folder +You can also use the AutoCut Code from XYCalibration folder -The name of the cut should be Z1->ZN and you should space them a little +Be careful with cut name diff --git a/Projects/AlPhaPha/2024/macro/chio/DE_E_Spline/SplineChio.C b/Projects/AlPhaPha/2024/macro/chio/DE_E_Spline/SplineChio.C index eb7c1011f258abdd4000e661ba873e344470ab96..d26bfbab0d687314ab91af7fc733f84b9042e2ac 100644 --- a/Projects/AlPhaPha/2024/macro/chio/DE_E_Spline/SplineChio.C +++ b/Projects/AlPhaPha/2024/macro/chio/DE_E_Spline/SplineChio.C @@ -1,4 +1,6 @@ #include "TICPhysics.h" +#include "TTimeData.h" +#include <TFPMWPhysics.h> #include <TChain.h> #include <TCutG.h> #include <TF1.h> @@ -6,18 +8,18 @@ #include <TH2.h> #include <TSpline.h> #include <fstream> - using namespace std; -const int Ncuts=28; + +const int CutNumberLoader(); +const int Ncuts = CutNumberLoader(); const int NSegment=11; -const int Nrun=1; -int RunNumber[Nrun]={241}; +const int Nrun=3; +int RunNumber[Nrun]={246,247,248}; void MakeSpline(); void ApplySpline_perTCutG(); void ApplySpline(); -vector<vector<TSpline3*>> LoadSpline(const char* PathToSpline); /////////////////////////////////////////////////////////////////////////// void SplineChio() @@ -25,41 +27,45 @@ void SplineChio() //=========================================================================================================== // Loading Var //=========================================================================================================== - - //**********************Cut************************************** - TFile *fcut=new TFile("Cut/Cut_Z.root","open"); - TCutG *cutZ[Ncuts]; - for(int i=0;i<Ncuts;i++) cutZ[i]=(TCutG*)fcut->Get(Form("Z%i",i+1)); - - // ****************** Spline Y ********************************** - TFile *fSplineIC = new TFile("../YCalibration/Output/spline_P2P_2024.root","open"); + //**********************Cut************************************** + TFile *fcut=new TFile("../XYCalibration/Output/CutAutoZ.root","open"); - vector<vector<TSpline3*>> Spline = LoadSpline("../YCalibration/Output/spline_P2P_2024.root"); - vector<TSpline3*> spline_X(11), spline_Y(11); - spline_X = Spline.at(0) ; spline_Y = Spline.at(1); + vector<TCutG*> cutZ(Ncuts); + for(int i=0;i<Ncuts;i++) cutZ[i]=(TCutG*)fcut->Get(Form("Cut %i",i)); //**********************DE_E**************************************************** TChain *chain=new TChain("PhysicsTree"); - - chain->Add("../../../root/analysis/VamosCalib241.root"); - + + for(int i=0;i<Nrun;i++) + { + chain->Add(Form("../../../root/analysis/Run%d.root",RunNumber[i])); + cout << "Run number " << RunNumber[i] << " loaded sucessfully !" << endl; + } + TICPhysics* IC = new TICPhysics() ; - double FF_IC_X, FF_IC_Y, FF_V13; - double FF_DE, FF_Eres; - + TTimeData *Time = new TTimeData() ; + + chain->SetBranchStatus("IC", true); chain->SetBranchAddress("IC", &IC); - chain->SetBranchStatus("FF_IC_Y", true); - chain->SetBranchAddress("FF_IC_Y", &FF_IC_Y); + // ****************** Load Time ********************************** + + chain->SetBranchStatus("Time", true); + chain->SetBranchAddress("Time", &Time); + + //***************************************************************** - TH2F *hChioDE_E_all = new TH2F("hChioDE_E","hChioDE_E",1000,1000,20000,500,1000,26000); - TH2F *hChioDE_E[Ncuts]; - for(int i=0;i<Ncuts;i++) hChioDE_E[i]=new TH2F(Form("hChioDE_E_%d",i+1),Form("hChioDE_E_%d",i+1),2000,1000,20000,1250,1000,26000); + TH2F *hChioDE_E_all = new TH2F("hChioDE_E","hChioDE_E",1000,1000,36000,500,1000,26000); + vector<TH2F*> hChioDE_E(Ncuts); + for(int i=0;i<Ncuts;i++) hChioDE_E[i]=new TH2F(Form("hChioDE_E_%d",i+1),Form("hChioDE_E_%d",i+1),2000,1000,36000,1250,1000,26000); auto start = std::chrono::high_resolution_clock::now(); + int Nentries=chain->GetEntries(); + //int Nentries=1000000; + for(int e=0;e<Nentries;++e) { if (e % 100000 == 0 && e > 0 ) { @@ -73,54 +79,12 @@ void SplineChio() chain->GetEntry(e); - vector<double> ICcorr_Y(NSegment), ICcorr_X(NSegment); // the [0] element of spline is the - vector<double> Temp_X(NSegment) , Temp_Y(NSegment); // correction on the first - // segment of ic - for (int seg = 1; seg < NSegment+1 ; seg++) { - - if (seg == NSegment) seg = 0; //from 1to NSeg finishing with 0 - - if (spline_Y.at(seg)==0){ - ICcorr_Y.at(seg) = IC->fIC_raw[seg]; - } - - else { - if (seg == 0) { - Temp_Y.at(seg) = ICcorr_Y.at(1) / IC->fIC_raw[seg] * spline_Y.at(seg)->Eval(0)/ spline_Y.at(seg)->Eval(FF_IC_Y); - ICcorr_Y.at(seg) = ICcorr_Y.at(1) / Temp_Y.at(seg); - } - - else if (seg == 1){ - ICcorr_Y.at(seg) = IC->fIC_raw[1]*spline_Y.at(1)->Eval(0)/spline_Y.at(1)->Eval(FF_IC_Y); - } - - else if (seg > 1) { - Temp_Y.at(seg) = IC->fIC_raw[seg]/ICcorr_Y.at(seg-1) * spline_Y.at(seg)->Eval(0)/ spline_Y.at(seg)->Eval(FF_IC_Y); - ICcorr_Y.at(seg) = ICcorr_Y.at(seg-1) * Temp_Y.at(seg); - } - - if (!(ICcorr_Y.at(seg)==ICcorr_Y.at(seg))) ICcorr_Y.at(seg) = 0; - } //end if non empty - if (seg == 0) break; - }//endloop seg - - - FF_DE = 0.5*( ICcorr_Y[1] +IC->fIC_raw[2]+IC->fIC_raw[3])+IC->fIC_raw[4]; - FF_Eres = 0 ; - - for (int seg = 0 ; seg < sizeof(IC->fIC_raw)/sizeof(IC->fIC_raw[0]) ; seg++ ){ - if (seg >4){ - FF_Eres += IC->fIC_raw[seg] ; - //Ecorr += ICcorr_Y.at(seg) ; - } - } - - hChioDE_E_all->Fill(FF_Eres,FF_DE); + hChioDE_E_all->Fill(IC->Eres,IC->DE); //for(int i=0;i<Ncuts;i++) if(cutZ[i]->IsInside(Chio_E,FF_DE)) {hChioDE_E[i]->Fill(Chio_E,FF_DE); break;} - for(int i=0;i<Ncuts;i++) if(cutZ[i]->IsInside(FF_Eres,FF_DE)) {hChioDE_E[i]->Fill(FF_Eres,FF_DE); break;} - } + for(int i=0;i<Ncuts;i++) if(cutZ[i]->IsInside(IC->Eres,IC->DE)) {hChioDE_E[i]->Fill(IC->Eres,IC->DE); break;} + }//end loop event //**********************************Out*************************** @@ -131,22 +95,24 @@ void SplineChio() TCanvas * can = new TCanvas(Form("ChioEbis_vs_ChioDE_run%04d_%04d",RunNumber[0],RunNumber[Nrun-1]), Form("ChioEbis_vs_ChiodE_run%04d_%04d",RunNumber[0],RunNumber[Nrun-1]), 0,0,2000,1000); - can->cd(); gPad-> SetLogz(); + can->cd(); hChioDE_E_all->Draw("colz"); for(int i = 0 ; i < Ncuts ; i++) cutZ[i]->Draw("same"); } + /////////////////////////////////////////////////////////////////////////// -void MakeSpline() -{ - TFile *inFile=new TFile("histo/SingleZ_ChioDE_E.root"); +void MakeSpline(){ - TSpline3 *gspline[Ncuts]; + // ********************** Load prev histo**************************** + TFile *inFile=new TFile("histo/SingleZ_ChioDE_E.root"); - TH2F* h2 [Ncuts]; - TH1F* hProfile[Ncuts]; - TH1F* pfx[Ncuts]; // extended hProfile - TFile *fspline=new TFile("Output/spline_Chio_2024.root","recreate"); + int Z59POS = 32; + vector<TSpline3*> gspline(Ncuts); + vector<TH2F*> h2 (Ncuts); + vector<TH1F*> hProfile(Ncuts); + vector<TH1F*> pfx(Ncuts); // extended hProfile + TFile* fspline=new TFile("Output/spline_Chio_2024.root","recreate"); TCanvas * canfit = new TCanvas("canfit","canfit",0,0,2000,1500); @@ -256,7 +222,7 @@ void MakeSpline() cout << h2[i]->GetMean(2) << ", " << endl; ofile_par << h2[i]->GetMean(2) << ", " << endl; //gr->SetPoint(i,sqrt(h2[i]->GetMean(2)),i+31); - gr->SetPoint(i,gspline[i]->Eval(8500),i+31); + gr->SetPoint(i,gspline[i]->Eval(8500),i+Z59POS); //hProfile[i]->Draw("same"); pfx[i]->Draw("same"); gspline[i]->SetLineColor(kBlue); @@ -268,7 +234,7 @@ void MakeSpline() cangr->cd(); gr->SetMarkerStyle(20); gr->Draw("AP"); - gr->Fit("pol2"); + gr->Fit("pol5"); } @@ -277,43 +243,35 @@ void ApplySpline_perTCutG() { // *************************Cut*************************** - TFile *fcut=new TFile("Cut/Cut_Z.root"); - TCutG *cutZ[Ncuts]; + TFile *fcut=new TFile("../XYCalibration/Output/CutAutoZ.root"); + vector<TCutG*> cutZ(Ncuts); // ******************* TSpline DE************************* TFile *fspline=new TFile("Output/spline_Chio_2024.root","read"); - TSpline3 *gspline[Ncuts]; + vector<TSpline3*> gspline(Ncuts); for(int i=0;i<Ncuts;i++){ - cutZ[i]=(TCutG*)fcut->Get(Form("Z%i",i+1)); + cutZ[i]=(TCutG*)fcut->Get(Form("Cut %i",i)); gspline[i] = (TSpline3*)fspline->FindObjectAny(Form("fspline_%d",i+1)); } - // ****************** Spline Y ********************************** - TFile *fSplineIC = new TFile("../YCalibration/Output/spline_P2P_2024.root","open"); - - - vector<vector<TSpline3*>> Spline = LoadSpline("../YCalibration/Output/spline_P2P_2024.root"); - vector<TSpline3*> spline_X(11), spline_Y(11); - spline_X = Spline.at(0) ; spline_Y = Spline.at(1); - //**********************DE_E**************************************************** TChain *chain=new TChain("PhysicsTree"); - - chain->Add("../../../root/analysis/VamosCalib241.root"); - + + + for(int i=0;i<Nrun;i++) + { + chain->Add(Form("../../../root/analysis/Run%d.root",RunNumber[i])); + cout << "Run number " << RunNumber[i] << " loaded sucessfully !" << endl; + } TICPhysics* IC = new TICPhysics() ; - double FF_IC_X, FF_IC_Y, FF_V13; - double FF_DE, FF_Eres; - + chain->SetBranchStatus("IC", true); chain->SetBranchAddress("IC", &IC); - chain->SetBranchStatus("FF_IC_Y", true); - chain->SetBranchAddress("FF_IC_Y", &FF_IC_Y); - // variable after applying TSpline + // variable after applying TSpline MUST FIND middles of each spline double FF_DEcorr; - double FF_DEcorr0[Ncuts] = { + vector<double> FF_DEcorr0 = { 7375.73, 7982.83, 8419.21, @@ -342,85 +300,42 @@ void ApplySpline_perTCutG() 19043.9, 19437.8, 19889.4,}; - // 20301.1, - //20709.7, - //21112.6, - //21544, - //21953.4, - //22361.8}; - - - TH2F *hChioDE_E_all = new TH2F("hChioDE_E_all","hChioDE_E_all",1000,1000,41000,500,1000,26000); - TH2F *hChioDE_E = new TH2F("hChioDE_E","hChioDE_E",1000,1000,41000,500,1000,26000); - TH2F *hChioDE_E_corr = new TH2F("hChioDE_E_corr","hChioDE_E_corr",1000,1000,41000,500,1000,26000); - - int Nentries=chain->GetEntries(); - auto start = std::chrono::high_resolution_clock::now(); - - for(int e=0;e<Nentries;++e){ - if (e % 100000 == 0 && e > 0 ) { - auto now = std::chrono::high_resolution_clock::now(); - std::chrono::duration<double> elapsed = now - start; - double avgTimePerIteration = elapsed.count() / e; - double timeLeft = avgTimePerIteration * (Nentries - e); - - std::cout << "********** Estimated time left: " << int(timeLeft) << " seconds **********" << "\r" << flush; - } - - chain->GetEntry(e); - - - - vector<double> ICcorr_Y(NSegment), ICcorr_X(NSegment); // the [0] element of spline is the - vector<double> Temp_X(NSegment) , Temp_Y(NSegment); // correction on the first - // segment of ic - for (int seg = 1; seg < NSegment+1 ; seg++) { - - if (seg == NSegment) seg = 0; //from 1to NSeg finishing with 0 - - if (spline_Y.at(seg)==0){ - ICcorr_Y.at(seg) = IC->fIC_raw[seg]; - } - - else { - if (seg == 0) { - Temp_Y.at(seg) = ICcorr_Y.at(1) / IC->fIC_raw[seg] * spline_Y.at(seg)->Eval(0)/ spline_Y.at(seg)->Eval(FF_IC_Y); - ICcorr_Y.at(seg) = ICcorr_Y.at(1) / Temp_Y.at(seg); - } - - else if (seg == 1){ - ICcorr_Y.at(seg) = IC->fIC_raw[1]*spline_Y.at(1)->Eval(0)/spline_Y.at(1)->Eval(FF_IC_Y); - } - - else if (seg > 1) { - Temp_Y.at(seg) = IC->fIC_raw[seg]/ICcorr_Y.at(seg-1) * spline_Y.at(seg)->Eval(0)/ spline_Y.at(seg)->Eval(FF_IC_Y); - ICcorr_Y.at(seg) = ICcorr_Y.at(seg-1) * Temp_Y.at(seg); - } - - if (!(ICcorr_Y.at(seg)==ICcorr_Y.at(seg))) ICcorr_Y.at(seg) = 0; - } //end if non empty - if (seg == 0) break; - }//endloop seg - + // 20301.1, + //20709.7, + //21112.6, + //21544, + //21953.4, + //22361.8}; + + +TH2F *hChioDE_E_all = new TH2F("hChioDE_E_all","hChioDE_E_all",1000,1000,41000,500,1000,26000); +TH2F *hChioDE_E = new TH2F("hChioDE_E","hChioDE_E",1000,1000,41000,500,1000,26000); +TH2F *hChioDE_E_corr = new TH2F("hChioDE_E_corr","hChioDE_E_corr",1000,1000,41000,500,1000,26000); + +int Nentries=chain->GetEntries(); +//int Nentries = 1000000; +auto start = std::chrono::high_resolution_clock::now(); + +for(int e=0;e<Nentries;++e){ + if (e % 100000 == 0 && e > 0 ) { + auto now = std::chrono::high_resolution_clock::now(); + std::chrono::duration<double> elapsed = now - start; + double avgTimePerIteration = elapsed.count() / e; + double timeLeft = avgTimePerIteration * (Nentries - e); + + std::cout << "********** Estimated time left: " << int(timeLeft) << " seconds **********" << "\r" << flush; + } - FF_DE = 0.5*( ICcorr_Y[1] +IC->fIC_raw[2]+IC->fIC_raw[3])+IC->fIC_raw[4]; - FF_Eres = 0 ; + chain->GetEntry(e); - for (int seg = 0 ; seg < sizeof(IC->fIC_raw)/sizeof(IC->fIC_raw[0]) ; seg++ ){ - if (seg >4){ - FF_Eres += IC->fIC_raw[seg] ; - //Ecorr += ICcorr_Y.at(seg) ; - } - } - - hChioDE_E_all->Fill(FF_Eres,FF_DE); - for(int i=0;i<Ncuts;i++) if(cutZ[i]->IsInside(FF_Eres,FF_DE)) { - hChioDE_E->Fill(FF_Eres,FF_DE); - FF_DEcorr = FF_DEcorr0[i] * FF_DE / gspline[i]->Eval(FF_Eres); - hChioDE_E_corr->Fill(FF_Eres,FF_DEcorr); - break; - } + hChioDE_E_all->Fill(IC->Eres,IC->DE); + for(int i=0;i<Ncuts;i++) if(cutZ[i]->IsInside(IC->Eres,IC->DE)) { + hChioDE_E->Fill(IC->Eres,IC->DE); + FF_DEcorr = FF_DEcorr0[i] * IC->DE / gspline[i]->Eval(IC->Eres); + hChioDE_E_corr->Fill(IC->Eres,FF_DEcorr); + break; } +} TCanvas * can = new TCanvas(Form("ChioEbis_vs_ChioDE_run%04d_%04d",RunNumber[0],RunNumber[Nrun-1]), Form("ChioEbis_vs_ChiodE_run%04d_%04d",RunNumber[0],RunNumber[Nrun-1]), @@ -436,39 +351,29 @@ can->cd(3); gPad-> SetLogz(); hChioDE_E_corr->Draw("colz"); void ApplySpline() { // *************************Cut*************************** - TFile *fcut=new TFile("Cut/Cut_Z.root"); - TCutG *cutZ[Ncuts]; + TFile *fcut=new TFile("../XYCalibration/Output/CutAutoZ.root", "open"); + vector<TCutG*> cutZ(Ncuts); // ******************* TSpline DE************************* TFile *fspline=new TFile("Output/spline_Chio_2024.root","read"); - TSpline3 *gspline[Ncuts]; + vector<TSpline3*> gspline(Ncuts) ; for(int i=0;i<Ncuts;i++){ - cutZ[i]=(TCutG*)fcut->Get(Form("Z%i",i+1)); + cutZ[i]=(TCutG*)fcut->Get(Form("Cut %i",i)); gspline[i] = (TSpline3*)fspline->FindObjectAny(Form("fspline_%d",i+1)); } - // ****************** Spline Y ********************************** - TFile *fSplineIC = new TFile("../YCalibration/Output/spline_P2P_2024.root","open"); - - - vector<vector<TSpline3*>> Spline = LoadSpline("../YCalibration/Output/spline_P2P_2024.root"); - vector<TSpline3*> spline_X(11), spline_Y(11); - spline_X = Spline.at(0) ; spline_Y = Spline.at(1); - //**********************DE_E**************************************************** TChain *chain=new TChain("PhysicsTree"); - - chain->Add("../../../root/analysis/VamosCalib241.root"); - + for(int i=0;i<Nrun;i++) + { + chain->Add(Form("../../../root/analysis/Run%d.root",RunNumber[i])); + cout << "Run number " << RunNumber[i] << " loaded sucessfully !" << endl; + } + TICPhysics* IC = new TICPhysics() ; - double FF_IC_X, FF_IC_Y, FF_V13; - double FF_DE, FF_Eres; - chain->SetBranchStatus("IC", true); chain->SetBranchAddress("IC", &IC); - chain->SetBranchStatus("FF_IC_Y", true); - chain->SetBranchAddress("FF_IC_Y", &FF_IC_Y); // variable after applying TSpline @@ -476,7 +381,7 @@ void ApplySpline() double Zrough=0; double Zabitbetter=0; - double FF_DEcorr0[Ncuts]; + vector<double> FF_DEcorr0(Ncuts); for(int index=0; index<Ncuts; index++){ FF_DEcorr0[index] = gspline[index]->Eval(8500); } @@ -524,7 +429,8 @@ void ApplySpline() TH1F *hChioZ_rough = new TH1F("hChioZ_rough","hChioZ_rough",2500,25,65); TH1F *hChioZ_abitbetter = new TH1F("hChioZ_abitbetter","hChioZ_abitbetter",2500,25,65); - int Nentries=1e6;//chain->GetEntries(); + //int Nentries=1e6; + int Nentries = chain->GetEntries(); auto start = std::chrono::high_resolution_clock::now(); double FF_Eres_prev = 0; @@ -542,89 +448,39 @@ void ApplySpline() FF_DEcorr = -100; chain->GetEntry(e); - //=========================================================================================================== - // Splined Y - //=========================================================================================================== - vector<double> ICcorr_Y(NSegment), ICcorr_X(NSegment); // the [0] element of spline is the - vector<double> Temp_X(NSegment) , Temp_Y(NSegment); // correction on the first - // segment of ic - for (int seg = 1; seg < NSegment+1 ; seg++) { - - if (seg == NSegment) seg = 0; //from 1to NSeg finishing with 0 - - if (spline_Y.at(seg)==0){ - ICcorr_Y.at(seg) = IC->fIC_raw[seg]; - } - - else { - if (seg == 0) { - Temp_Y.at(seg) = ICcorr_Y.at(1) / IC->fIC_raw[seg] * spline_Y.at(seg)->Eval(0)/ spline_Y.at(seg)->Eval(FF_IC_Y); - ICcorr_Y.at(seg) = ICcorr_Y.at(1) / Temp_Y.at(seg); - } + if (IC->DE<3000) continue; + if(IC->Eres==FF_Eres_prev) continue; + FF_Eres_prev = IC->Eres; - else if (seg == 1){ - ICcorr_Y.at(seg) = IC->fIC_raw[1]*spline_Y.at(1)->Eval(0)/spline_Y.at(1)->Eval(FF_IC_Y); - } - - else if (seg > 1) { - Temp_Y.at(seg) = IC->fIC_raw[seg]/ICcorr_Y.at(seg-1) * spline_Y.at(seg)->Eval(0)/ spline_Y.at(seg)->Eval(FF_IC_Y); - ICcorr_Y.at(seg) = ICcorr_Y.at(seg-1) * Temp_Y.at(seg); - } - - if (!(ICcorr_Y.at(seg)==ICcorr_Y.at(seg))) ICcorr_Y.at(seg) = 0; - } //end if non empty - if (seg == 0) break; - }//endloop seg - - - FF_DE = 0.5*( ICcorr_Y[1] +IC->fIC_raw[2]+IC->fIC_raw[3])+IC->fIC_raw[4]; - FF_Eres = 0 ; - - for (int seg = 0 ; seg < sizeof(IC->fIC_raw)/sizeof(IC->fIC_raw[0]) ; seg++ ){ - if (seg >4){ - FF_Eres += IC->fIC_raw[seg] ; - //Ecorr += ICcorr_Y.at(seg) ; - } - } - - //=========================================================================================================== - // Spline DE - //===========================================================================================================& - - - if (FF_DE<3000) continue; - if(FF_Eres==FF_Eres_prev) continue; - FF_Eres_prev = FF_Eres; - - hChioDE_E_all->Fill(FF_Eres,FF_DE); + hChioDE_E_all->Fill(IC->Eres,IC->DE); float Eval_DEspline, DEspline0; int index=0; for(int i=0; i<Ncuts; i++){ - Eval_DEspline = gspline[i]->Eval(FF_Eres); - if(FF_DE<Eval_DEspline) break; + Eval_DEspline = gspline[i]->Eval(IC->Eres); + if(IC->DE<Eval_DEspline) break; index = i; } - Eval_DEspline = gspline[index]->Eval(FF_Eres); + Eval_DEspline = gspline[index]->Eval(IC->Eres); DEspline0 = FF_DEcorr0[index]; float dmin, dsup; - if( index < (Ncuts-1) && FF_DE > gspline[0]->Eval(FF_Eres)){ - dmin = FF_DE-gspline[index]->Eval(FF_Eres); - dsup = gspline[index+1]->Eval(FF_Eres)-FF_DE; + if( index < (Ncuts-1) && IC->DE > gspline[0]->Eval(IC->Eres)){ + dmin = IC->DE-gspline[index]->Eval(IC->Eres); + dsup = gspline[index+1]->Eval(IC->Eres)-IC->DE; if(dmin<0) cout << "negative value of dmin = " << dmin << ", for index = " << index << endl; if(dsup<0) cout << "negative value of dsup = " << dsup << ", for index = " << index << endl; //if(dsup<dmin) { - // Eval_DEspline = gspline[index+1]->Eval(FF_Eres) ; + // Eval_DEspline = gspline[index+1]->Eval(IC->Eres) ; // DEspline0 = FF_DEcorr0[index] ; //} - Eval_DEspline = dsup*gspline[index]->Eval(FF_Eres)/(dmin+dsup) + dmin*gspline[index+1]->Eval(FF_Eres)/(dmin+dsup) ; + Eval_DEspline = dsup*gspline[index]->Eval(IC->Eres)/(dmin+dsup) + dmin*gspline[index+1]->Eval(IC->Eres)/(dmin+dsup) ; DEspline0 = dsup*FF_DEcorr0[index]/(dmin+dsup) + dmin*FF_DEcorr0[index+1]/(dmin+dsup) ; - FF_DEcorr = DEspline0 * FF_DE / Eval_DEspline ; - hChioDE_E_corr->Fill(FF_Eres,FF_DEcorr); + FF_DEcorr = DEspline0 * IC->DE / Eval_DEspline ; + hChioDE_E_corr->Fill(IC->Eres,FF_DEcorr); //if(FF_DEcorr>15120 && FF_DEcorr<15130) { - // cout << e << " " << index << " " << FF_Eres << " " << FF_DEcorr << endl; + // cout << e << " " << index << " " << IC->Eres << " " << FF_DEcorr << endl; //} } @@ -632,9 +488,9 @@ void ApplySpline() //Zrough = -110.165 + 3.34475*sqrt(FF_DEcorr) - 0.0271123*FF_DEcorr + 8.60752e-05 * pow(sqrt(FF_DEcorr),3); Zrough = 16.8521 + 0.0017328*FF_DEcorr + 1.70774e-8*pow(FF_DEcorr,2); Zabitbetter = -127.117 + 3.83463*sqrt(FF_DEcorr) - 0.0317448 *FF_DEcorr + 0.000100428 * pow(sqrt(FF_DEcorr),3); - hChioZ_E_rough->Fill(FF_Eres,Zrough); + hChioZ_E_rough->Fill(IC->Eres,Zrough); - if(3000<FF_Eres && FF_Eres<25000){ + if(3000<IC->Eres && IC->Eres<25000){ hChioDE_corr->Fill(FF_DEcorr); hChioZ_rough->Fill(Zrough); hChioZ_abitbetter->Fill(Zabitbetter); @@ -734,43 +590,21 @@ void Fit_DE_E_corr() } +const int CutNumberLoader(){ + TFile *fcut=new TFile("../XYCalibration/Output/CutAutoZ.root","open"); -vector<vector<TSpline3*>> LoadSpline(const char* PathToSpline){ - TFile *fSplineIC = new TFile(PathToSpline,"open"); - // Get number of spline - int SplineCount = 0 ; - TIter next(fSplineIC->GetListOfKeys()); + int CutCount = 0 ; + TIter next(fcut->GetListOfKeys()); TKey* key; while ((key=(TKey*)next())){ - if (std::string(key->GetClassName()) == "TSpline3"){ - SplineCount ++; + if (std::string(key->GetClassName()) == "TCutG"){ + CutCount ++; } } - vector<vector<TSpline3*>> Spline; - vector<TSpline3*> spline_X(11), spline_Y(11); - for (int i = 0; i < SplineCount ; i++) { - int seg = int((i-2)/2 +1 ); - if (i < 2){ - spline_X.at(0) = (TSpline3 *)fSplineIC->Get("fspline_IC0_X"); - spline_Y.at(0) = (TSpline3 *)fSplineIC->Get("fspline_IC0_Y"); - } - - else if ( i>=2 && i<4){ - spline_X.at(1) = (TSpline3 *)fSplineIC->Get("fspline_IC1_X"); - spline_Y.at(1) = (TSpline3 *)fSplineIC->Get("fspline_IC1_Y"); - } - else if (seg >=2 && (i%2 == 0) ) { - spline_X.at(seg) = (TSpline3 *)fSplineIC->Get(Form("fspline_IC%d_X",seg)); - } - else if (seg >=2 && !(i%2 == 0) ) { - spline_Y.at(seg) = (TSpline3 *)fSplineIC->Get(Form("fspline_IC%d_Y",seg)); - } - } //End loop on histogram + const int res = CutCount; + return res; +} - Spline.push_back(spline_X); - Spline.push_back(spline_Y); - return Spline; -} diff --git a/Projects/AlPhaPha/2024/macro/chio/XYCalibration/CutAutoDEE.C b/Projects/AlPhaPha/2024/macro/chio/XYCalibration/CutAutoDEE.C index 4225a9fd4bbfc0e62eff7e64bb9614221384114f..795505861616ccd806ab15f8ada8c373d270e72a 100644 --- a/Projects/AlPhaPha/2024/macro/chio/XYCalibration/CutAutoDEE.C +++ b/Projects/AlPhaPha/2024/macro/chio/XYCalibration/CutAutoDEE.C @@ -6,15 +6,15 @@ // Important variable #define STEP 2; // Step to parse through the histogram in X -#define BINSIZE 15; // Size of the bin in X on which to projectY the plot +#define BINSIZE 25; // Size of the bin in X on which to projectY the plot //Main void CutAutoDEE(){ // Retrieve initial histogram - TFile *inFile = new TFile("Output/DE_E.root","open"); - TH2F *hDE_E = (TH2F*)inFile->Get("DE0234_Ecorr"); + TFile *inFile = new TFile("Output/DE_E_merged.root","open"); + TH2F *hDE_E = (TH2F*)inFile->Get("DE_E"); // Inverse data to use tspectrum for (int xBin=1; xBin<= hDE_E->GetNbinsX();xBin++){ @@ -33,8 +33,8 @@ void CutAutoDEE(){ // Tspectrum used to find the peak : If you have problem with peak finding // adjust the setting in this function // Step and Binsize are used in this function - Double_t sigma = 2; - Double_t threshold = 0.02; + Double_t sigma = 4; + Double_t threshold = 0.05; PeakFinder(vPeakFinder,vPeaks,hDE_E,LinePos,sigma,threshold); @@ -111,7 +111,7 @@ void PeakFinder(vector<TSpectrum*> *sPeak , vector<int> *vPeak, TH2F *h, vector< for(int peaks = 0 ; peaks < nPeaks ; peaks++){ vector<Double_t> Position(2); - Position.at(0) = (double(i) - double(SizeBin)/2.0) * h->GetXaxis()->GetBinWidth(4) ; //Retrieve E position as the center + Position.at(0) = (double(i) + double(SizeBin)/2.0) * h->GetXaxis()->GetBinWidth(4) ; //Retrieve E position as the center //of the bin Position.at(1) = PeakFinder->GetPositionX()[peaks]; // Position in DE LinePos->push_back(Position); diff --git a/Projects/AlPhaPha/2024/macro/chio/XYCalibration/DECorr.C b/Projects/AlPhaPha/2024/macro/chio/XYCalibration/DECorr.C index 461cd1e6158683dc4571d3bebfe75565f6ec6d51..cdf08fc2bfd5b0635987c8c67efb88e481a6af0a 100644 --- a/Projects/AlPhaPha/2024/macro/chio/XYCalibration/DECorr.C +++ b/Projects/AlPhaPha/2024/macro/chio/XYCalibration/DECorr.C @@ -11,7 +11,7 @@ #include <TStyle.h> #include <fstream> #include <vector> -#include "ProfileEvaluator.h" +#include "TProfileEvaluator.h" using namespace std; vector<double> TxtToVector(const char *Path); @@ -27,7 +27,7 @@ void DECorr(bool cut = false, bool spline = false) { //=========================================================================================================== TChain* chain = new TChain("PhysicsTree"); chain->Add("../../../root/analysis/VamosCalib247.root"); - chain->Add("../../../root/analysis/Run246.root"); + //chain->Add("../../../root/analysis/Run246.root"); TICPhysics* IC = new TICPhysics() ; TTimeData *Time = new TTimeData() ; @@ -105,27 +105,13 @@ void DECorr(bool cut = false, bool spline = false) { SplineCount ++; } } - vector<TSpline3*> spline_X(11), spline_Y(11); - for (int i = 0; i < SplineCount ; i++) { - int seg = int((i-2)/2 +1 ); - if (i < 2){ - spline_X.at(0) = (TSpline3 *)fSplineIC->Get("fspline_IC0_X"); - spline_Y.at(0) = (TSpline3 *)fSplineIC->Get("fspline_IC0_Y"); - } - - else if ( i>=2 && i<4){ - spline_X.at(1) = (TSpline3 *)fSplineIC->Get("fspline_IC1_X"); - spline_Y.at(1) = (TSpline3 *)fSplineIC->Get("fspline_IC1_Y"); - } - else if (seg >=2 && (i%2 == 0) ) { - spline_X.at(seg) = (TSpline3 *)fSplineIC->Get(Form("fspline_IC%d_X",seg)); - } - else if (seg >=2 && !(i%2 == 0) ) { - spline_Y.at(seg) = (TSpline3 *)fSplineIC->Get(Form("fspline_IC%d_Y",seg)); - } + for (int i = 0; i < 11 ; i++) { + spline_X.at(i) = (TSpline3 *)fSplineIC->Get(Form("fspline_IC%d_X",i)); + spline_Y.at(i) = (TSpline3 *)fSplineIC->Get(Form("fspline_IC%d_Y",i)); } //End loop on histogram - + // + double XmaxDE = 26000, XMaxE = 35000; //Defining output histo TH2F* hDE_E = new TH2F("DE_E","DE_E",1000,0,XMaxE,1000,0,XmaxDE); @@ -188,9 +174,10 @@ void DECorr(bool cut = false, bool spline = false) { //=========================================================================================================== int Nentries = chain->GetEntries(); //int Nentries = 1000000; + //int Nentries = 22000; auto start = std::chrono::high_resolution_clock::now(); int NSegment = 11; - + ofstream debug("Output/Debug.txt"); //save data for clustering for (int e = 0; e < Nentries; e++) { @@ -209,7 +196,7 @@ void DECorr(bool cut = false, bool spline = false) { - if (Time->GetMWPC13Mult() ==1 && IC->fIC_TS.size()>=8){ //only mult 1 event + if (Time->GetMWPC13Mult() ==1 && IC->fIC_TS.size()>=8 ){ //only mult 1 event UShort_t FPMW_Section = Time->GetSection_MWPC3(0); double FF_DriftTime = 10* (IC->fIC_TS.at(0) - Time->GetTS_MWPC13(0)) - ((Time->GetTime_MWPC13(0)+Toff13.at(FPMW_Section))) ; @@ -218,7 +205,7 @@ void DECorr(bool cut = false, bool spline = false) { double FF_DriftTime_temp = 10* (IC->fIC_TS.at(seg) - Time->GetTS_MWPC13(0)) - ((Time->GetTime_MWPC13(0)+Toff13.at(FPMW_Section))) ; if (spline_Y.at(seg)==0){ - ICcorr_Y.at(seg) = IC->fIC_raw[seg]; + ICcorr_Y.at(seg) = IC->fIC_PID[seg]; } else { @@ -227,11 +214,11 @@ void DECorr(bool cut = false, bool spline = false) { } else if (seg == 1){ - ICcorr_Y.at(seg) = IC->fIC_raw[1]*spline_Y.at(1)->Eval(0)/spline_Y.at(1)->Eval(FF_DriftTime); + ICcorr_Y.at(seg) = IC->fIC_PID[1]*spline_Y.at(1)->Eval(0)/spline_Y.at(1)->Eval(FF_DriftTime); } else if (seg > 1) { - ICcorr_Y.at(seg) = IC->fIC_raw[seg] * spline_Y.at(seg)->Eval(0)/ spline_Y.at(seg)->Eval(FF_DriftTime); + ICcorr_Y.at(seg) = IC->fIC_PID[seg] * spline_Y.at(seg)->Eval(0)/ spline_Y.at(seg)->Eval(FF_DriftTime); } if (!(ICcorr_Y.at(seg)==ICcorr_Y.at(seg))) ICcorr_Y.at(seg) = 0; } //end if non empty @@ -240,45 +227,45 @@ void DECorr(bool cut = false, bool spline = false) { - Double_t PolX = -3.10262 * 1e-7 *FF_IC_X*FF_IC_X - 7.02108 * 1e-5 * FF_IC_X + 1.37622; - //Double_t PolX = 1.37622; + //Double_t PolX = -3.10262 * 1e-7 *FF_IC_X*FF_IC_X - 7.02108 * 1e-5 * FF_IC_X + 1.37622; + Double_t PolX = 1.37622; - Double_t ICRatio = IC->fIC_raw[1]/IC->fIC_raw[0]; + Double_t ICRatio = IC->fIC_PID[1]/IC->fIC_PID[0]; Double_t ICRatioCorr = ICRatio * PolX / Profile.Evaluate(FF_IC_X,FF_DriftTime,false); - Double_t ICcorr_Y0 = IC->fIC_raw[0] / PolX * Profile.Evaluate(FF_IC_X,FF_DriftTime,false); + Double_t ICcorr_Y0 = IC->fIC_PID[0] / PolX * Profile.Evaluate(FF_IC_X,FF_DriftTime,false); if ( ICRatioCorr<1.4 || ICRatioCorr >1.5){ ICRatioCorr = ICRatio * PolX / Profile.Evaluate(FF_IC_X,FF_DriftTime,false); - ICcorr_Y0 = IC->fIC_raw[0] / PolX * Profile.Evaluate(FF_IC_X,FF_DriftTime,false); + ICcorr_Y0 = IC->fIC_PID[0] / PolX * Profile.Evaluate(FF_IC_X,FF_DriftTime,false); if (ICRatioCorr >100) { - ICcorr_Y0 = IC->fIC_raw[0]; + ICcorr_Y0 = IC->fIC_PID[0]; } } double DE = 0 , DE_splined=0 ,DE_corr=0, DE_Ybis=0; double E =0, E_splined=0; - for (int seg = 0 ; seg < sizeof(IC->fIC_raw)/sizeof(IC->fIC_raw[0]) ; seg++ ){ + for (int seg = 0 ; seg < sizeof(IC->fIC_PID)/sizeof(IC->fIC_PID[0]) ; seg++ ){ if (seg >4){ - if (seg == 5) E += double(IC->fIC_raw[seg]); - else E += 2*double(IC->fIC_raw[seg]) ; + if (seg == 5) E += double(IC->fIC_PID[seg]); + else E +=double(IC->fIC_PID[seg]) ; } } // ********************* DE setter ********************* - double IC1corr = (IC->fIC_raw[1]*(1-0.000686068*FF_IC_Y))*(1-4.88238e-05*FF_IC_Y+7.40395e-06*FF_IC_Y*FF_IC_Y); - double DE_Bis = 0.5*(IC1corr+IC->fIC_raw[2]+IC->fIC_raw[3])+IC->fIC_raw[4]; + double IC1corr = (IC->fIC_PID[1]*(1-0.000686068*FF_IC_Y))*(1-4.88238e-05*FF_IC_Y+7.40395e-06*FF_IC_Y*FF_IC_Y); + double DE_Bis = (IC1corr+IC->fIC_PID[2]+IC->fIC_PID[3])+IC->fIC_PID[4]; - DE = 0.5* ( IC->fIC_raw[0]+ double(IC->fIC_raw[1]) +double(IC->fIC_raw[2])+ double(IC->fIC_raw[3])) + double(IC->fIC_raw[4]); - DE_splined = 0.5* ( ICcorr_Y0+ ICcorr_Y.at(1) +IC->fIC_raw[2]+ IC->fIC_raw[3]) + IC->fIC_raw[4]; - double DE0 = 0.5* ( ICcorr_Y0 + ICcorr_Y.at(1) +IC->fIC_raw[2] + IC->fIC_raw[3]) + IC->fIC_raw[4]; - double DE02 = 0.5* ( ICcorr_Y0+ ICcorr_Y.at(1) +ICcorr_Y.at(2)+ IC->fIC_raw[3]) + IC->fIC_raw[4]; - double DE023 = 0.5* ( ICcorr_Y0+ ICcorr_Y.at(1) +ICcorr_Y.at(2)+ ICcorr_Y.at(3)) + IC->fIC_raw[4]; - double DE0234 = 0.5*( ICcorr_Y0+ ICcorr_Y.at(1) +ICcorr_Y.at(2)+ ICcorr_Y.at(3)) + ICcorr_Y.at(4); - double DE1234 = 0.5*( double(IC->fIC_raw[1]) +double(IC->fIC_raw[2])+ double(IC->fIC_raw[3])) + double(IC->fIC_raw[4]); - //DE_splined = 0.5*( ICcorr_Y[1] +IC->fIC_raw[2]+IC->fIC_raw[3])+IC->fIC_raw[4]; + DE = ( IC->fIC_PID[0]+ double(IC->fIC_PID[1]) +double(IC->fIC_PID[2])+ double(IC->fIC_PID[3])) + double(IC->fIC_PID[4]); + DE_splined = ( ICcorr_Y0+ ICcorr_Y.at(1) +IC->fIC_PID[2]+ IC->fIC_PID[3]) + IC->fIC_PID[4]; + double DE0 = ( ICcorr_Y0 + ICcorr_Y.at(1) +IC->fIC_PID[2] + IC->fIC_PID[3]) + IC->fIC_PID[4]; + double DE02 = ( ICcorr_Y0+ ICcorr_Y.at(1) +ICcorr_Y.at(2)+ IC->fIC_PID[3]) + IC->fIC_PID[4]; + double DE023 = ( ICcorr_Y0+ ICcorr_Y.at(1) +ICcorr_Y.at(2)+ ICcorr_Y.at(3)) + IC->fIC_PID[4]; + double DE0234 = ( ICcorr_Y0+ ICcorr_Y.at(1) +ICcorr_Y.at(2)+ ICcorr_Y.at(3)) + ICcorr_Y.at(4); + double DE1234 = ( double(IC->fIC_PID[1]) +double(IC->fIC_PID[2])+ double(IC->fIC_PID[3])) + double(IC->fIC_PID[4]); + //DE_splined = 0.5*( ICcorr_Y[1] +IC->fIC_PID[2]+IC->fIC_PID[3])+IC->fIC_PID[4]; //************* Cut ****************** @@ -290,7 +277,7 @@ void DECorr(bool cut = false, bool spline = false) { //***********Fill histo************* - if (FF_DriftTime >Ymin && FF_DriftTime <Ymax && (FF_Theta >0)){ + if (/*FF_DriftTime >Ymin && FF_DriftTime <Ymax && (FF_Theta >0)*/ true){ //*************Init DE_E***************** hDE_E -> Fill(E,DE); @@ -312,6 +299,13 @@ void DECorr(bool cut = false, bool spline = false) { double DE023_corr = DE023 * splineDE023->Eval(0) / splineDE023->Eval(FF_DriftTime); double DE0234_corr = DE0234 * splineDE0234->Eval(0) / splineDE0234->Eval(FF_DriftTime); + for(int i =0 ; i<5 ; i++){ + if (i==0) debug << ICcorr_Y0 << " "; + else debug << ICcorr_Y.at(i) << " " ; + } + debug << IC->fIC_PID[4]; + debug << endl; + hDE_E_corr->Fill(E,DE_corr); hDE0_E_corr->Fill(E,DE0_corr); hDE02_E_corr->Fill(E,DE02_corr); @@ -355,7 +349,7 @@ void DECorr(bool cut = false, bool spline = false) { hDE_Y_splined->Fill(FF_DriftTime,DE_splined); hDE_Y_corr->Fill(FF_DriftTime,DE_corr); - hIC_Y->Fill(FF_DriftTime,IC->fIC_raw[0]); + hIC_Y->Fill(FF_DriftTime,IC->fIC_PID[0]); hIC_Y_splined->Fill(FF_DriftTime,ICcorr_Y0); @@ -380,7 +374,7 @@ void DECorr(bool cut = false, bool spline = false) { hDE_Y_splined->Fill(FF_DriftTime,DE_splined); hDE_Y_corr->Fill(FF_DriftTime,DE_corr); - hIC_Y->Fill(FF_DriftTime,IC->fIC_raw[0]); + hIC_Y->Fill(FF_DriftTime,IC->fIC_PID[0]); hIC_Y_splined->Fill(FF_DriftTime,ICcorr_Y0); if (CutV ) { @@ -431,11 +425,16 @@ void DECorr(bool cut = false, bool spline = false) { splineDe0234->SetName("SplineDe_0234"); splineDe0234->Write(); - - osplineDEbis->SetName("SplineDebis"); osplineDEbis->Write(); fSplineDE->Close(); + + //output calibration + TFile *fSplineDEY = new TFile("../../../Calibration/VAMOS/CHIO/Spline_DE.root","recreate"); + splineDe0234->SetName("fspline_1"); + splineDe0234->Write(); + fSplineDEY->Close(); + //=========================================================================================================== // Drawing histo //=========================================================================================================== @@ -443,54 +442,54 @@ void DECorr(bool cut = false, bool spline = false) { gStyle->SetPalette(kRainBow); // =========== Poster plot============================= - TCanvas* c8 = new TCanvas("DE Before correction","DE Before correction",4000,4000); - - hDE_E->GetXaxis()->SetTitle("E (A.U)"); - hDE_E->GetXaxis()->SetRangeUser(3000,35000); - hDE_E->GetXaxis()->CenterTitle(); - - hDE_E->GetYaxis()->SetTitle("#Delta E (A.U)"); - hDE_E->GetYaxis()->SetRangeUser(6000,26000); - hDE_E->GetYaxis()->CenterTitle(); - - hDE_E->GetZaxis()->SetRangeUser(0,140); - hDE_E->GetZaxis()->SetTitle("Number of events"); - hDE_E->GetZaxis()->CenterTitle(); - - hDE_E->SetTitle("PID VAMOS before correction"); - hDE_E->SetStats(0); - hDE_E->Draw("COLZ"); - - c8->SetCanvasSize(4000,3000); - c8->SaveAs("~/These/Plot/Poster/VamosPIDBeforeCorr.png"); - c8->SaveAs("~/These/Plot/Poster/VamosPIDBeforeCorr.pdf"); - c8->SaveAs("~/These/Plot/Poster/VamosPIDBeforeCorr.jpg"); - - TCanvas* c9 = new TCanvas("DE after correction","DE after correction",1000,1000); - - hDE0234_E_corr->GetXaxis()->SetTitle("E (A.U)"); - hDE0234_E_corr->GetXaxis()->SetRangeUser(3000,35000); - hDE0234_E_corr->GetXaxis()->CenterTitle(); - - hDE0234_E_corr->GetYaxis()->SetTitle("#Delta E (A.U)"); - hDE0234_E_corr->GetYaxis()->SetRangeUser(6000,26000); - hDE0234_E_corr->GetYaxis()->CenterTitle(); - - hDE0234_E_corr->GetZaxis()->SetRangeUser(0,140); - hDE0234_E_corr->GetZaxis()->SetTitle("Number of events"); - hDE0234_E_corr->GetZaxis()->CenterTitle(); - - hDE0234_E_corr->SetTitle("PID VAMOS after correction"); - hDE0234_E_corr->SetStats(0); - hDE0234_E_corr->Draw("COLZ"); - - c9->SetCanvasSize(4000,3000); - c9->SaveAs("~/These/Plot/Poster/VamosPIDAfterCorr.png"); - c9->SaveAs("~/These/Plot/Poster/VamosPIDAfterCorr.pdf"); - c9->SaveAs("~/These/Plot/Poster/VamosPIDAfterCorr.jpg"); + /* + TCanvas* c8 = new TCanvas("DE Before correction","DE Before correction",4000,4000); + hDE_E->GetXaxis()->SetTitle("E (A.U)"); + hDE_E->GetXaxis()->SetRangeUser(3000,35000); + hDE_E->GetXaxis()->CenterTitle(); + + hDE_E->GetYaxis()->SetTitle("#Delta E (A.U)"); + hDE_E->GetYaxis()->SetRangeUser(6000,26000); + hDE_E->GetYaxis()->CenterTitle(); + + hDE_E->GetZaxis()->SetRangeUser(0,140); + hDE_E->GetZaxis()->SetTitle("Number of events"); + hDE_E->GetZaxis()->CenterTitle(); + + hDE_E->SetTitle("PID VAMOS before correction"); + hDE_E->SetStats(0); + hDE_E->Draw("COLZ"); + + c8->SetCanvasSize(4000,3000); + c8->SaveAs("~/These/Plot/Poster/VamosPIDBeforeCorr.png"); + c8->SaveAs("~/These/Plot/Poster/VamosPIDBeforeCorr.pdf"); + c8->SaveAs("~/These/Plot/Poster/VamosPIDBeforeCorr.jpg"); + + TCanvas* c9 = new TCanvas("DE after correction","DE after correction",1000,1000); + + hDE0234_E_corr->GetXaxis()->SetTitle("E (A.U)"); + hDE0234_E_corr->GetXaxis()->SetRangeUser(3000,35000); + hDE0234_E_corr->GetXaxis()->CenterTitle(); + + hDE0234_E_corr->GetYaxis()->SetTitle("#Delta E (A.U)"); + hDE0234_E_corr->GetYaxis()->SetRangeUser(6000,26000); + hDE0234_E_corr->GetYaxis()->CenterTitle(); + + hDE0234_E_corr->GetZaxis()->SetRangeUser(0,140); + hDE0234_E_corr->GetZaxis()->SetTitle("Number of events"); + hDE0234_E_corr->GetZaxis()->CenterTitle(); + + hDE0234_E_corr->SetTitle("PID VAMOS after correction"); + hDE0234_E_corr->SetStats(0); + hDE0234_E_corr->Draw("COLZ"); + + c9->SetCanvasSize(4000,3000); + c9->SaveAs("~/These/Plot/Poster/VamosPIDAfterCorr.png"); + c9->SaveAs("~/These/Plot/Poster/VamosPIDAfterCorr.pdf"); + c9->SaveAs("~/These/Plot/Poster/VamosPIDAfterCorr.jpg"); //gStyle->SetOptStat(1); // =========== Poster plot============================= - + */ TCanvas* c7 = new TCanvas("correction succesive","correction succesive",1500,1000); diff --git a/Projects/AlPhaPha/2024/macro/chio/XYCalibration/SplineChioRobust.C b/Projects/AlPhaPha/2024/macro/chio/XYCalibration/SplineChioRobust.C index 331abe5bdb4df46ef97850f2474af9504197dbbb..07bd7b2a34fdeaa44fcbf56908e08ef277beca8c 100644 --- a/Projects/AlPhaPha/2024/macro/chio/XYCalibration/SplineChioRobust.C +++ b/Projects/AlPhaPha/2024/macro/chio/XYCalibration/SplineChioRobust.C @@ -33,8 +33,8 @@ void SplineChioRobust() { double XMin[4] , XMax[4], YMin[4] , YMax[4]; XMin[0] = -520 ; XMax[0] = 380 ; YMin[0] = 2000 ; YMax[0] = 9500 ; XMin[1] = -1000 ; XMax[1] = 1000 ; YMin[1] = 1000 ; YMax[1] = 10000 ; - XMin[2] = -520 ; XMax[2] = 380 ; YMin[2] = 0 ; YMax[2] = 1.3 ; - XMin[3] = -1000 ; XMax[3] = 1000 ; YMin[3] = 0 ; YMax[3] = 1.3 ; + XMin[2] = -520 ; XMax[2] = 380 ; YMin[2] = 0 ; YMax[2] = 3 ; + XMin[3] = -1000 ; XMax[3] = 1000 ; YMin[3] = 0 ; YMax[3] = 3 ; //Reinitialising the outfile TFile *OutFile = new TFile("Output/HistoP2P.root","recreate"); @@ -67,6 +67,29 @@ void SplineChioRobust() { if(seg ==1) { } + else if (seg == 4){ + + //Load Histo + hIC.at(seg) = (HistoFillerIC(seg,SplineAllIC)); + + //Reset spline holder + vector<TSpline3*> SplineICurrent; + + // X Spline + SplineICurrent.push_back(MakeSpline(hIC[seg][0] , NCallSpline, XMin[2] , XMax[2], YMin[2], YMax[2])); + SplineICurrent.at(0)->SetName(Form("fspline_IC%d_X",seg)); + NCallSpline+=1; + + // Y Spline + SplineICurrent.push_back(MakeSpline(hIC[seg][1] , NCallSpline, XMin[3] , XMax[3],0,2.5)); + SplineICurrent.at(1)->SetName(Form("fspline_IC%d_Y",seg)); + NCallSpline+=1; + + //push vector into memory + SplineAllIC.at(seg)= SplineICurrent; + + } + else{ //Load Histo @@ -99,6 +122,15 @@ void SplineChioRobust() { } fspline->Close(); + //Write for analysis + TFile* ospline = new TFile("../../../Calibration/VAMOS/CHIO/Spline_Y.root", "recreate"); + for (int seg = 2 ; seg < NSegment ; seg++){ + if (!SplineAllIC.at(seg).empty()){ + SplineAllIC.at(seg)[1]->SetName(Form("fspline_%d",seg-1)); + SplineAllIC.at(seg)[1]->Write(); + } + } + fspline->Close(); vector<vector<TH2F*>> hIC_Corrall(NSegment); vector<TH1F*> hIC_Corr_profile(NSegment); @@ -179,11 +211,19 @@ vector<TH2F*> HistoFillerIC(int segment, vector<vector<TSpline3*>> Spline_All_IC } + else if (segment==4) { + hIC_Y = new TH2F(Form("hChio_IC%d_IC%d_Y",segment,segment-1), + Form("hChio_IC%d_IC%d_Y",segment,segment-1), 1000, -1000, 1000, 500, 2, 2.5); + hIC_X = new TH2F(Form("hChio_IC%d_IC%d_X",segment,segment-1), + Form("hChio_IC%d_IC%d_X",segment,segment-1), 1000, -800, 800, 500, 2, 2.5); + } + + else { hIC_Y = new TH2F(Form("hChio_IC%d_IC%d_Y",segment,segment-1), - Form("hChio_IC%d_IC%d_Y",segment,segment-1), 1000, -1000, 1000, 500, 0, 2); + Form("hChio_IC%d_IC%d_Y",segment,segment-1), 1000, -1000, 1000, 500, 0, 4); hIC_X = new TH2F(Form("hChio_IC%d_IC%d_X",segment,segment-1), - Form("hChio_IC%d_IC%d_X",segment,segment-1), 1000, -800, 800, 500, 0, 2); + Form("hChio_IC%d_IC%d_X",segment,segment-1), 1000, -800, 800, 500, 0, 4); } @@ -191,8 +231,8 @@ vector<TH2F*> HistoFillerIC(int segment, vector<vector<TSpline3*>> Spline_All_IC // Beginning loop on entries //=========================================================================================================== - int Nentries = chain->GetEntries(); - //int Nentries = 1000000; + //int Nentries = chain->GetEntries(); + int Nentries = 1000000; auto start = std::chrono::high_resolution_clock::now(); for (int e = 0; e < Nentries; e++) { @@ -200,7 +240,7 @@ vector<TH2F*> HistoFillerIC(int segment, vector<vector<TSpline3*>> Spline_All_IC vector<double> IC_Spline_CorrX(NSpline + 1),IC_Spline_CorrY(NSpline+1); - + if (Time->GetMWPC13Mult() ==1 && IC->fIC_TS.size()>= (segment+1)){ //only mult 1 event UShort_t FPMW_Section = Time->GetSection_MWPC3(0); @@ -211,14 +251,14 @@ vector<TH2F*> HistoFillerIC(int segment, vector<vector<TSpline3*>> Spline_All_IC for (int pseg = 1 ; pseg<=NSpline ; pseg++){ //If the spline doesnt exist define default value if(Spline_All_ICprev.at(pseg).empty()){ - IC_Spline_CorrX.at(pseg)= IC->fIC_raw[pseg]; - IC_Spline_CorrY.at(pseg)= IC->fIC_raw[pseg]; + IC_Spline_CorrX.at(pseg)= IC->fIC_PID[pseg]; + IC_Spline_CorrY.at(pseg)= IC->fIC_PID[pseg]; } //If it exist correct the current line else if (!Spline_All_ICprev.at(pseg).empty()){ - IC_Spline_CorrX.at(pseg) = IC->fIC_raw[pseg] * SplineIC_X.at(pseg)->Eval(0) / SplineIC_X.at(pseg)->Eval(FF_IC_X); - IC_Spline_CorrY.at(pseg) = IC->fIC_raw[pseg] * SplineIC_Y.at(pseg)->Eval(0) / SplineIC_Y.at(pseg)->Eval(FF_IC_Y); + IC_Spline_CorrX.at(pseg) = IC->fIC_PID[pseg] * SplineIC_X.at(pseg)->Eval(0) / SplineIC_X.at(pseg)->Eval(FF_IC_X); + IC_Spline_CorrY.at(pseg) = IC->fIC_PID[pseg] * SplineIC_Y.at(pseg)->Eval(0) / SplineIC_Y.at(pseg)->Eval(FF_IC_Y); } //End if non empty } // End loop IC non 0 @@ -230,19 +270,18 @@ vector<TH2F*> HistoFillerIC(int segment, vector<vector<TSpline3*>> Spline_All_IC //===========================================================================================================/ if (segment == 1){ - hIC_Y->Fill(FF_IC_Y,IC->fIC_raw[segment]); - hIC_X->Fill(FF_IC_X,IC->fIC_raw[segment]); + hIC_Y->Fill(FF_IC_Y,IC->fIC_PID[segment]); + hIC_X->Fill(FF_IC_X,IC->fIC_PID[segment]); } else if (segment == 0){ - hIC_Y->Fill(FF_IC_Y,IC->fIC_raw[segment]/IC_Spline_CorrY.at(1)); - hIC_X->Fill(FF_IC_X,IC->fIC_raw[segment]/IC_Spline_CorrX.at(1)); + hIC_Y->Fill(FF_IC_Y,IC->fIC_PID[segment]/IC_Spline_CorrY.at(1)); + hIC_X->Fill(FF_IC_X,IC->fIC_PID[segment]/IC_Spline_CorrX.at(1)); } - else { - hIC_Y->Fill(FF_IC_Y,IC->fIC_raw[segment]/IC_Spline_CorrY.at(segment-1)); - hIC_X->Fill(FF_IC_X,IC->fIC_raw[segment]/IC_Spline_CorrX.at(segment-1)); + hIC_Y->Fill(FF_IC_Y,IC->fIC_PID[segment]/IC_Spline_CorrY.at(segment-1)); + hIC_X->Fill(FF_IC_X,IC->fIC_PID[segment]/IC_Spline_CorrX.at(segment-1)); } } //end only m2 @@ -332,9 +371,9 @@ vector<vector<TH2F*>>HistoFillerICcorr(int segment, vector<vector<TSpline3*>> Sp else { hIC_Y.at(pseg) = new TH2F(Form("hChiocorr_IC%d_IC%d_Y",pseg,pseg-1), - Form("hChiocorr_IC%d_IC%d_Y",pseg,pseg-1), 1000, -1000, 1000, 500, 0, 2); + Form("hChiocorr_IC%d_IC%d_Y",pseg,pseg-1), 1000, -1000, 1000, 500, 0, 4); hIC_X.at(pseg) = new TH2F(Form("hChiocorr_IC%d_IC%d_X",pseg,pseg-1), - Form("hChiocorr_IC%d_IC%d_X",pseg,pseg-1), 1000, -800, 800, 500, 0, 2); + Form("hChiocorr_IC%d_IC%d_X",pseg,pseg-1), 1000, -800, 800, 500, 0, 4); } } @@ -342,8 +381,8 @@ vector<vector<TH2F*>>HistoFillerICcorr(int segment, vector<vector<TSpline3*>> Sp // Beginning loop on entries //=========================================================================================================== - int Nentries = chain->GetEntries(); - //int Nentries = 1000000; + //int Nentries = chain->GetEntries(); + int Nentries = 1000000; auto start = std::chrono::high_resolution_clock::now(); for (int e = 0; e < Nentries; e++) { @@ -361,15 +400,15 @@ vector<vector<TH2F*>>HistoFillerICcorr(int segment, vector<vector<TSpline3*>> Sp for (int pseg = 0 ; pseg<=NSpline ; pseg++){ //If the spline doesnt exist define default value if(Spline_All_ICprev.at(pseg).empty()){ - IC_Spline_CorrX.at(pseg)= IC->fIC_raw[pseg]; - IC_Spline_CorrY.at(pseg)= IC->fIC_raw[pseg]; + IC_Spline_CorrX.at(pseg)= IC->fIC_PID[pseg]; + IC_Spline_CorrY.at(pseg)= IC->fIC_PID[pseg]; //cout << pseg << endl; } //If it exist correct the current line else if (!Spline_All_ICprev.at(pseg).empty()){ - IC_Spline_CorrX.at(pseg) = IC->fIC_raw[pseg] * SplineIC_X.at(pseg)->Eval(0) / SplineIC_X.at(pseg)->Eval(FF_IC_X); - IC_Spline_CorrY.at(pseg) = IC->fIC_raw[pseg] * SplineIC_Y.at(pseg)->Eval(0) / SplineIC_Y.at(pseg)->Eval(FF_IC_Y); + IC_Spline_CorrX.at(pseg) = IC->fIC_PID[pseg] * SplineIC_X.at(pseg)->Eval(0) / SplineIC_X.at(pseg)->Eval(FF_IC_X); + IC_Spline_CorrY.at(pseg) = IC->fIC_PID[pseg] * SplineIC_Y.at(pseg)->Eval(0) / SplineIC_Y.at(pseg)->Eval(FF_IC_Y); } //End if non empty } // end loop diff --git a/Projects/AlPhaPha/2024/macro/chio/XYCalibration/VerifCorrelation.C b/Projects/AlPhaPha/2024/macro/chio/XYCalibration/VerifCorrelation.C index ba867ff95f7dae4cab22dacff3760196281bd812..0c9a87d410524d5b2658315059e63c9ea72b4fe2 100644 --- a/Projects/AlPhaPha/2024/macro/chio/XYCalibration/VerifCorrelation.C +++ b/Projects/AlPhaPha/2024/macro/chio/XYCalibration/VerifCorrelation.C @@ -49,7 +49,7 @@ void VerifCorrelation(){ TH3F *ICXY = new TH3F("ICXY","ICXY",100,-550,400,100,-1000,1000,100,0,2); TH2F *ICX = new TH2F("ICX","ICX",1000,-500,400,1000,0,2); - TProfile2D *Pxyz = new TProfile2D("ICOneZeroProfile","ICOneZeroProfile",100,-550.0,400.0,100,-900.0,500.0); + TProfile2D *Pxyz = new TProfile2D("ICOneZeroProfile","ICOneZeroProfile",100,-550.0,400.0,100,-800.0,480.0); int Nentries = chain->GetEntries(); //int Nentries = 1000000; @@ -68,14 +68,14 @@ void VerifCorrelation(){ chain->GetEntry(e); - if(Time->GetMWPC13Mult()==1 && IC->fIC_raw[8] >0){ + if(Time->GetMWPC13Mult()==1 && IC->fIC_PID[8] >0){ UShort_t FPMW_Section = Time->GetSection_MWPC3(0); FF_DriftTime = 10* (IC->fIC_TS.at(0) - Time->GetTS_MWPC13(0)) - ((Time->GetTime_MWPC13(0)+Toff13.at(FPMW_Section))) ; - Double_t ICRatio = IC->fIC_raw[1]/IC->fIC_raw[0]; + Double_t ICRatio = IC->fIC_PID[1]/IC->fIC_PID[0]; - if(IC->fIC_raw[8] >0 && ICRatio <= 3 && ICRatio >0.1 ) { + if(IC->fIC_PID[8] >0 && ICRatio <= 3 && ICRatio >0.1 ) { ICXY->Fill(FF_IC_X,FF_DriftTime,ICRatio); Pxyz->Fill(FF_IC_X,FF_DriftTime,ICRatio); @@ -134,6 +134,10 @@ void VerifCorrelation(){ TFile *ofile = new TFile("Output/RatioProfile.root","recreate"); Pxyz->Write(); + + + TFile *oconf = new TFile("../../../Calibration/VAMOS/CHIO/ICXY_Profile.root","recreate"); + Pxyz->Write(); } vector<double> TxtToVector(const char *Path){ diff --git a/Projects/AlPhaPha/DataMacro/Secator.sh b/Projects/AlPhaPha/DataMacro/Secator.sh new file mode 100644 index 0000000000000000000000000000000000000000..8aa42aa0f857175a92cd8298799224b2eeb4a62f --- /dev/null +++ b/Projects/AlPhaPha/DataMacro/Secator.sh @@ -0,0 +1,31 @@ +#!/bin/bash + + +#launch job in parralel +MAX_JOBS=25 # Maximum parallel jobs +SEMAPHORE="job_semaphore" + +# Create a named pipe (FIFO) for job control +mkfifo $SEMAPHORE +exec 3<> $SEMAPHORE +rm $SEMAPHORE + +# Pre-fill the semaphore with tokens equal to MAX_JOBS +for ((i=0; i<MAX_JOBS; i++)); do + echo "" >&3 +done + + +for run in {201..262}; do + read -u 3 # Wait for an available slot + { + root -l -q "./Secator.C(\"/home/efremovt/Data/2to_SSD/2024/np_raw/run_raw_"$run".root\",\"output/run_"$run"/\", 30)" + echo "" >&3 # Release the slot + } & +done + +wait + +exec 3>&- #close semaphore + + diff --git a/Projects/Dali/DaliMinos.detector b/Projects/Dali/DaliMinos.detector index e25d6ed3a4b9892537f35e6f96737eb39554a619..50e417dc647bc7bcae4c0ab8e08193723e9d285e 100755 --- a/Projects/Dali/DaliMinos.detector +++ b/Projects/Dali/DaliMinos.detector @@ -1,9 +1,15 @@ Minos - POS= 0 0 0 mm + Position= 0 0 0 mm TargetLength= 152.76 mm TargetMaterial= LH2 CellMaterial= Mylar TPCOnly= 0 + TargetZOffset= 0 mm + TimeBin= 30 ns + ShapingTime= 333.9 ns + Baseline= 250 + Sampling= 10 + ZOffset= 0 mm XML= /Users/matta/mrdc/xml/s034/MINOS.xml %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Dali diff --git a/Projects/E805/Analysis.cxx b/Projects/E805/Analysis.cxx index 5bf7de5bb89fc21ffee85040de376bac4af3bc01..27332d525289c89bf2ea1c9c9c21a0019bbfb75b 100755 --- a/Projects/E805/Analysis.cxx +++ b/Projects/E805/Analysis.cxx @@ -132,7 +132,6 @@ void Analysis::ReadConfigTS(){ //////////////////////////////////////////////////////////////////////////////// void Analysis::TreatEvent(){ ReInit(); - TreatCATS(); if(bCATS){ TreatMUST2(); @@ -349,15 +348,15 @@ void Analysis::TreatMUST2(){ } void Analysis::TreatEXO(){ - int EXO_AB_size = Exogam->E_AB.size(); - for(unsigned int countExo = 0 ; countExo < EXO_AB_size; countExo++){ - // Doing Doppler correction only if one reaction occurs - if(Beta_pd.size() == 1){ - EXO_Doppler_pd.push_back(Doppler_Correction(Exogam->Theta[countExo], Exogam->Phi[countExo], 0,0,Beta_pd[0],Exogam->E_AB[countExo])); - EXO_Doppler_pt.push_back(Doppler_Correction(Exogam->Theta[countExo], Exogam->Phi[countExo], 0,0,Beta_pt[0],Exogam->E_AB[countExo])); - EXO_Doppler_p3He.push_back(Doppler_Correction(Exogam->Theta[countExo], Exogam->Phi[countExo], 0,0,Beta_p3He[0],Exogam->E_AB[countExo])); - } - } + //int EXO_AB_size = Exogam->E_AB.size(); + //for(unsigned int countExo = 0 ; countExo < EXO_AB_size; countExo++){ + //// Doing Doppler correction only if one reaction occurs + // if(Beta_pd.size() == 1){ + // EXO_Doppler_pd.push_back(Doppler_Correction(Exogam->Theta[countExo], Exogam->Phi[countExo], 0,0,Beta_pd[0],Exogam->E_AB[countExo])); + // EXO_Doppler_pt.push_back(Doppler_Correction(Exogam->Theta[countExo], Exogam->Phi[countExo], 0,0,Beta_pt[0],Exogam->E_AB[countExo])); + // EXO_Doppler_p3He.push_back(Doppler_Correction(Exogam->Theta[countExo], Exogam->Phi[countExo], 0,0,Beta_p3He[0],Exogam->E_AB[countExo])); + // } + //} } diff --git a/Projects/E805/Analysis.h b/Projects/E805/Analysis.h index 0c8ba8e6909144ca58d357ad54446e7a3ceae50c..a6c1640a6fae691a95056473cb5bc819c4fc2726 100755 --- a/Projects/E805/Analysis.h +++ b/Projects/E805/Analysis.h @@ -41,7 +41,7 @@ #include"NPParticle.h" #include"NPBeam.h" #include "TCutG.h" -// #include"NPTimeStamp.h" +#include"NPTimeStamp.h" #include<random> class Analysis: public NPL::VAnalysis{ public: diff --git a/Projects/E805/ProjetInfo/MCRMethod.cpp b/Projects/E805/ProjetInfo/MCRMethod.cpp index a009a59d51246d69227142a5ccf7ebf8b3fdb908..09680eedcbbf7bfc8a37dc14431de78548c843e4 100644 --- a/Projects/E805/ProjetInfo/MCRMethod.cpp +++ b/Projects/E805/ProjetInfo/MCRMethod.cpp @@ -9,7 +9,6 @@ #include<string.h> #include"MCRMethod.h" -#include"mini.h" using namespace std; @@ -17,272 +16,13 @@ using namespace std; MCRMethod::MCRMethod() { - //Init(); - // MetroHast(); Nappe(); - // NappeBis(); - //MinimizationFunction(); -} - - -MCRMethod::MCRMethod(double lambd, double ini, double final, int n1) -{ - tini= ini; - tfinale=final; - lambda=lambd; - n=n1; } MCRMethod::~MCRMethod() { } -//void MCRMethod::MetroHast() /////////// -/*{ - srand(time(NULL)); - double a,b,c; - int i1,i2; - fstream fich; - double min; - int*li=(int*)malloc(n*sizeof(int)); - int*lican=(int*)malloc(n*sizeof(int)); - int*limin=(int*)malloc(n*sizeof(int)); - double delt; - double t; - dist obj(n,li); - dist objcan(n,lican); - dist objmin(n,limin); - obj.minimisation::initialise(recuit::read()); - objcan.minimisation::initialise(recuit::read()); - objmin.minimisation::initialise(recuit::read()); - obj.set(); - objcan.set(); - objmin.set(); - for(int k=0;k<n;k++) - li[k]=k; - for(int k=0;k<n;k++) - limin[k]=k; - objmin.initialise(); - min=objmin.read(); - t=tini; - fich.open("MetroHast3.res",ios::out); - while (t>tfinale) - { - i1= rand() % n; - i2= rand() % n; - for(int k=0;k<n;k++) - lican[k]=li[k]; - lican[i1]=li[i2]; - lican[i2]=li[i1]; - obj.initialise(); - objcan.initialise(); - objmin.initialise(); - a=obj.read(); - b=objcan.read(); - c=objmin.read(); - delt= b-a; - if (exp(-delt/t)>=(double(rand())/double(RAND_MAX))){ - - for(int k=0;k<n;k++){ - li[k]=lican[k]; - } - fich << t << " " << b << endl; - } - if (c > b){ - for(int k=0;k<n;k++){ - limin[k]=lican[k]; - } - min = b; - } - t=t*lambda; - //cout << x << " " << min << endl; - } - reponse=min; - cout << endl << "L'ordre de parcours des " << n << " villes dans la configuration optimale est: " << endl; - for(int k=0;k<n;k++) - cout << limin[k] << " "; - cout << endl << endl; - fich.close(); - - -}*/ - -void MCRMethod::MetroHast() /////////// -{ - int itmax = TMath::Log(TemperatureFinale/TemperatureInitiale)/TMath::Log(Lambda); - std::cout << "itmax " << itmax << std::endl; - srand(time(NULL)); - clock_t start = clock(), current, end; - while (Temperature>TemperatureFinale){ - current = clock(); - Double_t Frac = 1.0*it/itmax; - Double_t Time = ((double) (current-start)/CLOCKS_PER_SEC); - Double_t TimeLeft = Time*(1/Frac - 1.); - - std::cout << "\rIteration : " << it - << "/" << itmax - << " --- " - << Form("%.2f",100.*it/itmax) <<" %" - << " --- " - <<Form("%.00f it/sec",it/Time) - <<" --- " - << " Time Left : "<< Form("%d min ",(int)TimeLeft/60) - << Form("%01.00d sec",(int)TimeLeft%60) - << std::flush; - RandomStep(); - double currdist = MinimizationFunction(); - dist.push_back(currdist); - if(it > 0) - std::cout << "\n///////////// " << exp((dist[it-1] - dist[it])/Temperature) << "\n"; - if (it == 0 || exp((dist[it-1] - dist[it])/Temperature)>=(double(rand())/double(RAND_MAX))){ - for(unsigned int i = 0; i < 4; i++){ - CATSPosXY[i] = CATSPosXYCan[i]; - } - if(dist[itmin] > dist[it]){ - itmin = it; - } - } - else - { - dist[it] = dist[it-1]; - } - pos[0].push_back(CATSPosXY[0]); - pos[1].push_back(CATSPosXY[1]); - pos[2].push_back(CATSPosXY[2]); - pos[3].push_back(CATSPosXY[3]); - std::cout << "Temperature : " << Temperature << std::endl; - std::cout << "Dist : " << dist[it] << std::endl; - std::cout << "Pos : " << pos[0][it] << " " << pos[1][it] << " " << pos[2][it] << " " << pos[3][it] << " " << std::endl; - Temperature *= Lambda; - it++; - Graph->SetPoint(it,it,dist[it]); - } - - std::cout << "\n\nFIN DE L ALGO :\n"; - std::cout << "Temperature : " << Temperature << std::endl; - std::cout << "Dist : " << dist[itmin] << std::endl; - std::cout << "Pos : " << pos[0][itmin] << " " << pos[1][itmin] << " " << pos[2][itmin] << " " << pos[3][itmin] << " " << std::endl; - //std::cout << "Min " << std::min_element(dist.begin(), dist.end()); - Graph->Draw(); -} - -void MCRMethod::RandomStep(){ - for(unsigned int i = 0; i < 4; i++){ - CATSPosXYCan[i] = CATSPosXY[i]; - } - unsigned int i = rand() % 4; - if(CATSPosXY[i] <= CATSPosXYLim[2*i]) - CATSPosXYCan[i] = CATSPosXY[i]+Step; - else if(CATSPosXY[i] >= CATSPosXYLim[2*i +1]) - CATSPosXYCan[i] = CATSPosXY[i]-Step; - else - CATSPosXYCan[i] = CATSPosXY[i] + 2*((rand() % 2) -0.5)*Step; -} - -void MCRMethod::Init(){ - Graph = new TGraph(); - it = 0; - itmin = 0; - TemperatureInitiale = 10; - Temperature = TemperatureInitiale; - TemperatureFinale = 0.1; - Step = 0.1; - runmask[0] = "r0367_mask1"; - runmask[1] = "r0368_mask1"; - for(unsigned int i = 0; i < 2; i++){ - Chain[i] = new TChain("PhysicsTree"); - Chain[i]->Add(path+runmask[i]+".root"); //CATS1 - if (!(Chain[i]->GetEntries())){ - printf("ERROR in the Chain !! \n"); - return; - } - TreeReader[i] = new TTreeReader(Chain[i]); - CATSPhysics_[i]= new TTreeReaderValue<TCATSPhysics>(*TreeReader[i],"CATS"); - DistRatio[i] = -(CATSPosZ[1] - MASKPosZ[i])/(CATSPosZ[1] - CATSPosZ[0]); - std::cout << "test " << DistRatio[i] << std::endl; - } -} - -double MCRMethod::MinimizationFunction(){ - - for(unsigned int i = 0; i < 2; i++){ - auto HistMask = new TH2F(Form("HistMask%i",i+1),Form("HistMask%i",i+1),500,-50,50,500,-50,50); - auto SpecMask = new TSpectrum2(50,2); - TreeReader[i]->Restart(); - while (TreeReader[i]->Next()) - { - CATSPhysics = &**(CATSPhysics_[i]); - if(CATSPhysics->GetCATSMult()== 2){ - double X1Eff, Y1Eff, X2Eff, Y2Eff; - for(unsigned int i = 0; i < CATSPhysics->GetCATSMult(); i++){ - UShort_t Det = CATSPhysics->GetCATSDet(i); - if(Det == 1){ - X1Eff = CATSPhysics->GetCATSPosX(i)+CATSPosXYCan[0]; - Y1Eff = CATSPhysics->GetCATSPosY(i)+CATSPosXYCan[1]; - } - else if(Det == 2){ - X2Eff = CATSPhysics->GetCATSPosX(i)+CATSPosXYCan[2]; - Y2Eff = CATSPhysics->GetCATSPosY(i)+CATSPosXYCan[3]; - } - // std::cout << "test " << X2Eff - (X2Eff - X1Eff)*DistRatio[i] << " " << Y2Eff - (Y2Eff - Y1Eff)*DistRatio[i] << std::endl; - } - HistMask->Fill(X2Eff + (X2Eff - X1Eff)*DistRatio[i],Y2Eff + (Y2Eff - Y1Eff)*DistRatio[i]); - } - - } - //new TCanvas(); - // HistMask->Draw(); - Int_t nfound = SpecMask->Search(HistMask,2,"col",0.15); - Double_t* PeaksPosX = SpecMask->GetPositionX(); - Double_t* PeaksPosY = SpecMask->GetPositionY(); - Double_t FirstX; - Double_t FirstY; - if(nfound > 0){ - FirstX = PeaksPosX[0]; - FirstY = PeaksPosY[0]; - BotLeft[i][0] = FirstX; - BotLeft[i][1] = FirstY; - BotRight[i][0] = FirstX; - BotRight[i][1] = FirstY; - TopLeft[i][0] = FirstX; - TopLeft[i][1] = FirstY; - } - else{ - std::cout << "ERROR, No peak was found" << std::endl; - return 0; - } - - for(unsigned int j = 0; j < nfound; j++){ - if(-BotLeft[i][0]-BotLeft[i][1] < -PeaksPosX[j]-PeaksPosY[j]){ - BotLeft[i][0] = PeaksPosX[j]; - BotLeft[i][1] = PeaksPosY[j]; - } - else if(BotRight[i][0]-BotRight[i][1] < PeaksPosX[j]-PeaksPosY[j]){ - BotRight[i][0] = PeaksPosX[j]; - BotRight[i][1] = PeaksPosY[j]; - } - else if(-TopLeft[i][0]+TopLeft[i][1] < -PeaksPosX[j]+PeaksPosY[j]){ - TopLeft[i][0] = PeaksPosX[j]; - TopLeft[i][1] = PeaksPosY[j]; - } - } - std::cout << "\nBotLeft " << BotLeft[i][0] << " " << BotLeft[i][1] << std::endl; - std::cout << "BotRight " << BotRight[i][0] << " " << BotRight[i][1] << std::endl; - std::cout << "TopLeft " << TopLeft[i][0] << " " << TopLeft[i][1] << std::endl; - HistMask->Delete(); - } - - double distdiff = 0; - for(unsigned int i = 0; i < 2; i++){ - distdiff+= TMath::Sqrt(pow(BotLeft[i][0] - BotLeftGeo[2*i],2) + pow(BotLeft[i][1] - BotLeftGeo[2*i+1],2)); - distdiff+= TMath::Sqrt(pow(TopLeft[i][0] - TopLeftGeo[2*i],2) + pow(TopLeft[i][1] - TopLeftGeo[2*i+1],2)); - distdiff+= TMath::Sqrt(pow(BotRight[i][0] - BotRightGeo[2*i],2) + pow(BotRight[i][1] - BotRightGeo[2*i+1],2)); - } - - std::cout << distdiff << std::endl; - return distdiff; -} - void MCRMethod::Nappe(){ int X1 = 40; int X2 = 40; @@ -300,17 +40,15 @@ void MCRMethod::Nappe(){ } } } - // std::cout << "test2" << std::endl; runmask[0] = "rmask1_367"; runmask[1] = "rmask2_368"; for(unsigned int i = 0; i < 2; i++){ Chain[i] = new TChain("PhysicsTree"); - Chain[i]->Add(path+runmask[i]+".root"); //CATS1 + Chain[i]->Add(path+runmask[i]+".root"); if (!(Chain[i]->GetEntries())){ printf("ERROR in the Chain !! \n"); return; } - // std::cout << "test3" << std::endl; TreeReader[i] = new TTreeReader(Chain[i]); CATSPhysics_[i]= new TTreeReaderValue<TCATSPhysics>(*TreeReader[i],"CATS"); @@ -321,7 +59,6 @@ void MCRMethod::Nappe(){ CFile[0] = new TFile(CName+".root"); CUT[0] = (TCutG*)CFile[0]->FindObjectAny(CName); std::cout << CUT[0] << std::endl; - // CName = "CUTm_2"; CName = "CUTm_2"; CFile[1] = new TFile(CName+".root"); CUT[1] = (TCutG*)CFile[1]->FindObjectAny(CName); @@ -330,12 +67,9 @@ void MCRMethod::Nappe(){ while (TreeReader[i]->Next()){ CATSPhysics = &**(CATSPhysics_[i]); if(CATSPhysics->PositionX.size() == 2){ - // std::cout << "test5 " << CATSPhysics->GetCATSMult() << " " << CATSPhysics->DetNumber[0] << " " << (CATSPhysics->PositionX).size() << " " << CATSPhysics->PositionY[i] << " " << CUT[i]->IsInside(CATSPhysics->PositionX[i],CATSPhysics->PositionY[i]) << std::endl; if(CATSPhysics->DetNumber[0] == 1 && CUT[i]->IsInside(CATSPhysics->PositionX[i],CATSPhysics->PositionY[i])){ for(int i1 = -X1; i1 <= X1; i1++){ for(int i2 = -X2; i2 <= X2; i2++){ - // std::cout << "test " << i1 << " " << i2 << std::endl; - // std::cout << "test4" << std::endl; double x1, x2; if(Side == "X"){ x1 = CATSPhysics->PositionX[0] +i1*stepx1; @@ -373,14 +107,12 @@ void MCRMethod::Nappe(){ fitfunc->SetParameters(200,PeaksPosX[0],1); fitfunc->SetParLimits(1,-10,10); (*TH1Map)[i][Form("h_m%i_x1%i_x2%i",i, i1, i2)]->Fit(fitfunc,"QL","",-10,10); - // std::cout << i1 << " " << i2 << " " << PeaksPosX[0] << std::endl; double value; if(Side == "X") value = abs(fitfunc->GetParameter(1) - MaskPosX[i]); else if(Side == "Y") value = abs(fitfunc->GetParameter(1) - MaskPosY[i]); HeatMap[i]->SetBinContent(X1+i1+1,X2+i2+1,value); - //HeatMap[i]->SetBinContent(i1+1,i2+1,value); std::cout << norm[X1+i1][X2+i2] << std::endl; norm[X1+i1][X2+i2] += value*value; if(i ==1){ @@ -396,7 +128,6 @@ void MCRMethod::Nappe(){ } } - // SumHeatMap->Add(HeatMap[0],HeatMap[1],1,1); for(unsigned int i = 0; i < 2; i++){ auto c = new TCanvas(); HeatMap[i]->Draw("colz"); @@ -408,13 +139,10 @@ void MCRMethod::Nappe(){ float MCRMethod::ProjectOnCats(unsigned int i, double x1, double x2){ double tmask = (CATSPosZ[i] - MASKPosZ[i])/(CATSPosZ[1] - CATSPosZ[0]); - // double tmaskt = (-CATSPosZ[0])/(CATSPosZ[1] - CATSPosZ[0]); if(i == 0) return x1 -(x2-x1)*tmask; else if(i == 1) return x2 - (x2-x1)*tmask; - // else if(i == 1) - // return x1 + (x2-x1)*tmask; else exit(1); }; @@ -445,7 +173,6 @@ void MCRMethod::NappeBis(){ printf("ERROR in the Chain !! \n"); return; } - // std::cout << "test3" << std::endl; TreeReader[i] = new TTreeReader(Chain[i]); CATSPhysics_[i]= new TTreeReaderValue<TCATSPhysics>(*TreeReader[i],"CATS"); @@ -498,12 +225,9 @@ void MCRMethod::NappeBis(){ } CATSPhysics = &**(CATSPhysics_[i]); if(CATSPhysics->PositionX.size() == 2 && CATSPhysics->PositionY.size()==2){ - // std::cout << "test5 " << CATSPhysics->GetCATSMult() << " " << CATSPhysics->DetNumber[0] << " " << (CATSPhysics->PositionX).size() << " " << CATSPhysics->PositionY[i] << " " << CUT[i]->IsInside(CATSPhysics->PositionX[i],CATSPhysics->PositionY[i]) << std::endl; if(condition(i)){ for(int i1 = -X1; i1 <= X1; i1++){ for(int i2 = -X2; i2 <= X2; i2++){ - // std::cout << "test " << i1 << " " << i2 << std::endl; - // std::cout << "test4" << std::endl; double x1, x2; if(Side == "X"){ x1 = CATSPhysics->PositionX[0] +i1*stepx1; @@ -606,7 +330,3 @@ void MCRMethod::Unallocate(){ -double MCRMethod::read() -{ - return reponse; -} diff --git a/Projects/E805/ProjetInfo/MCRMethod.h b/Projects/E805/ProjetInfo/MCRMethod.h index 91045c239858b37ac75a14bbe7fcbd901bc188a7..23c89d3ff775306d237c25766d65368fe488f34c 100644 --- a/Projects/E805/ProjetInfo/MCRMethod.h +++ b/Projects/E805/ProjetInfo/MCRMethod.h @@ -1,5 +1,5 @@ -#ifndef recuit_h -#define recuit_h 1 +#ifndef MCR_h +#define MCR_h 1 #include<iostream> #include<vector> @@ -28,18 +28,10 @@ class MCRMethod { public: MCRMethod(); - MCRMethod(double lambd, double ini, double final, int n1); ~MCRMethod(); - void MetroHast(); //Calcul de la distance minimale et du chemin pour le problème du voyageur de commerce - double read(); // Affichage - void plot(); - void RandomStep(); - double MinimizationFunction(); - void Init(); float ProjectOnCats(unsigned int i, double x1, double x2); float ProjectOnTarget(unsigned int i, double x1, double x2); - float ProjectAndEx(unsigned int i,string side, double x1, double x2); void NappeBis(); bool condition(unsigned int); void Unallocate(); @@ -47,23 +39,10 @@ class MCRMethod private: - double Lambda = 0.98; - std::vector<double> dist; - std::vector<Double_t> pos[4]; - unsigned int it; - unsigned int itmin; TString runmask[2]; - double Step; - double TemperatureInitiale; - double Temperature; - double TemperatureFinale; - double DistRatio[2]; - double CATSPosXY[4] = {8,-6,-2,-1}; // CATS1X, 1Y, 2X, 2Y; - double CATSPosXYCan[4] = {8,-6,-2,-1}; // CATS1X, 1Y, 2X, 2Y; - double CATSPosXYLim[8] = {-30,30,-30,30,-30,30,-30,30}; // CATS1X min max, 1Y etc, 2X, 2Y; double CATSPosZ[2] = {-1587.1,-1090.1}; double MASKPosZ[2] = {-1732.1,-1235.1}; @@ -154,18 +133,4 @@ class MCRMethod //ClassDef(MCRMethod,0); }; - - - - - - - - - - - - - - #endif diff --git a/Projects/E805/RunToTreat.txt b/Projects/E805/RunToTreat.txt index ef2289f4dcda12c6627dd33451c491f502e5eb28..87a13504379c335bf9b1287b3c3fad7ed3ab36fd 100644 --- a/Projects/E805/RunToTreat.txt +++ b/Projects/E805/RunToTreat.txt @@ -1,5 +1,5 @@ TTreeName - SimulatedTree + RawTree RootFileName - ./data/NPRoot/Simulation/test.root + ./ssd/NPRaw_364/NPRaw_364_1*.root diff --git a/Projects/E805/project.config b/Projects/E805/project.config index f4d49abf59994412aa11998b16b6959b5abd9a3e..6238ec463e4676bdbe08dbe1c269201f048e2634 100644 --- a/Projects/E805/project.config +++ b/Projects/E805/project.config @@ -1,6 +1,7 @@ Project E805 AnalysisOutput= ./data/NPRoot/Analysis/ SimulationOutput= ./data/NPRoot/Simulation/ + EfficiencyOutput= ./data/NPRoot/Efficiency/ EnergyLoss= ../../Inputs/EnergyLoss/ CalibrationOutput= ./data/NPRoot/Calibration/ Cuts= ./data/NPRoot/Cuts/ diff --git a/Projects/E805_simu/Analysis.cxx b/Projects/E805_simu/Analysis.cxx index cd83a6b1d1de656813ec48f3d266fca08d4c0dbf..1574146134cc9ab00423d9a80fe26708ed7089f0 100755 --- a/Projects/E805_simu/Analysis.cxx +++ b/Projects/E805_simu/Analysis.cxx @@ -45,9 +45,9 @@ void Analysis::Init(){ string light=NPL::ChangeNameToG4Standard(reaction->GetNucleus3()->GetName()); std::cout << light << " " << heavy_ejectile << std::endl; - string Reaction_pd_s = "48Cr(p,d)47Cr@1620"; - string Reaction_pt_s = "48Cr(p,t)46Cr@1620"; - string Reaction_p3He_s = "48Cr(p,3He)46V@1620"; + string Reaction_pd_s = "48Cr(p,d)47Cr@1560"; + string Reaction_pt_s = "48Cr(p,t)46Cr@1560"; + string Reaction_p3He_s = "48Cr(p,3He)46V@1560"; Reaction_pd = new Reaction(Reaction_pd_s); Reaction_pt = new Reaction(Reaction_pt_s); Reaction_p3He = new Reaction(Reaction_p3He_s); @@ -134,8 +134,8 @@ void Analysis::TreatEvent(){ else Energy = -1000; if(Energy > 0){ - // Energy = LightTarget["deuteron"].EvaluateInitialEnergy(Energy,TargetThickness*0.5, ThetaNormalTarget); - Energy = LightTarget["alpha"].EvaluateInitialEnergy(Energy,TargetThickness*0.5, ThetaNormalTarget); + Energy = LightTarget["deuteron"].EvaluateInitialEnergy(Energy,TargetThickness*0.5, ThetaNormalTarget); + // Energy = LightTarget["alpha" ].EvaluateInitialEnergy(Energy,TargetThickness*0.5, ThetaNormalTarget); } @@ -150,10 +150,11 @@ void Analysis::TreatEvent(){ // Part 3 : Excitation Energy Calculation M2_Ex.push_back(reaction->ReconstructRelativistic( Energy, M2_ThetaLab[countMust2] )); - M2_ThetaLab[countMust2]=M2_ThetaLab[countMust2]/deg; + // M2_ThetaLab[countMust2]=M2_ThetaLab[countMust2]/deg; // Part 4 : Theta CM Calculation M2_ThetaCM.push_back(reaction->EnergyLabToThetaCM( M2_ELab[countMust2] , M2_ThetaLab[countMust2])/deg); + M2_ThetaLab[countMust2]=M2_ThetaLab[countMust2]/deg; //if(proton_cut[TelescopeNumber]){ // std::cout << "Test :" << proton_cut[TelescopeNumber] << " \n"; diff --git a/Projects/E805_simu/MUST2_E805.detector b/Projects/E805_simu/MUST2_E805.detector index 1437b43cda0060c66a573e36b31faba4111527d4..94b6fa0fd506c42e048aef9c114b401c386ce5ad 100644 --- a/Projects/E805_simu/MUST2_E805.detector +++ b/Projects/E805_simu/MUST2_E805.detector @@ -1,7 +1,6 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Target - %THICKNESS= 53.5 micrometer - THICKNESS= 0.000001 micrometer + THICKNESS= 53.5 micrometer ANGLE= 0 deg RADIUS= 15 mm MATERIAL= CH2 @@ -11,20 +10,20 @@ Target Z= 0 mm %%%%%%% Telescope 1 %%%%%%% M2Telescope - X1_Y1= -13.57 -104.78 299.83 mm - X1_Y128= -25.1 -12.62 328.63 mm - X128_Y1= -104.01 -104.85 263.88 mm - X128_Y128= -115.53 -12.71 292.67 mm + X1_Y1= -13.17 -105.07 299.38 mm + X1_Y128= -25.15 -12.87 328.18 mm + X128_Y1= -103.63 -105.68 263.74 mm + X128_Y128= -115.61 -13.56 292.51 mm SI= 1 SILI= 0 CSI= 1 VIS= all %%%%%%% Telescope 2 %%%%%%% M2Telescope - X1_Y1= -114.9 9.68 291.84 mm - X1_Y128= -24.56 9.8 327.88 mm - X128_Y1= -103.58 101.8 262.73 mm - X128_Y128= -13.24 102.09 298.75 mm + X1_Y1= -114.9 10.05 292.57 mm + X1_Y128= -24.52 9.80 328.49 mm + X128_Y1= -103.13 102.14 263.58 mm + X128_Y128= -12.74 101.90 299.51 mm SI= 1 SILI= 0 CSI= 1 @@ -32,10 +31,10 @@ M2Telescope %%%%%%% Telescope 3 %%%%%%% M2Telescope - X1_Y1= 11.84 101.72 299.05 mm - X1_Y128= 23.44 9.68 328.38 mm - X128_Y1= 102.16 101.57 263.01 mm - X128_Y128= 113.81 9.57 292.3 mm + X1_Y1= 12.94 101.57 300.03 mm + X1_Y128= 24.43 9.53 329.29 mm + X128_Y1= 103.23 101.34 263.86 mm + X128_Y128= 114.74 9.30 293.11 mm SI= 1 SILI= 0 CSI= 1 @@ -44,12 +43,11 @@ M2Telescope %%%%%%% Telescope 4 %%%%%%% M2Telescope - X1_Y1= 113.56 -13.18 292.11 mm - X1_Y128= 23.23 -13.37 328.15 mm - X128_Y1= 102.39 -105.49 263.59 mm - X128_Y128= 12.04 -105.69 299.63 mm + X1_Y1= 114.62 -13.35 292.81 mm + X1_Y128= 24.30 -13.44 328.89 mm + X128_Y1= 103.32 -105.63 264.21 mm + X128_Y128= 13.00 -105.74 300.28 mm SI= 1 SILI= 0 CSI= 1 - VIS= all - + VIS= all \ No newline at end of file diff --git a/Projects/E805_simu/RunToTreat.txt b/Projects/E805_simu/RunToTreat.txt index e31b79130dd523aa78e48524d307e3b720452151..a2414fa46c612e72a470350e9e7f4dd63c156747 100644 --- a/Projects/E805_simu/RunToTreat.txt +++ b/Projects/E805_simu/RunToTreat.txt @@ -1,5 +1,5 @@ TTreeName SimulatedTree RootFileName - ../E805/data/NPRoot/Simulation/test_simu.root + ../../Outputs/Simulation/test_simu.root diff --git a/Projects/Epic_sim_proto/K12_240Pu.source b/Projects/Epic_sim_proto/K12_240Pu.source index 0d152ec732fb60bc07b5921cc52b5626e9cebbc3..0aa7030dce8be5cf644902a13cdb7e9be9be84a8 100755 --- a/Projects/Epic_sim_proto/K12_240Pu.source +++ b/Projects/Epic_sim_proto/K12_240Pu.source @@ -3,25 +3,20 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Energy are given in MeV , Position in mm % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -Isotropic - EnergyLow= 0 MeV - EnergyHigh= 0 MeV +AlphaDecay + EnergyLow= 5.254 MeV + EnergyHigh= 5.256 MeV HalfOpenAngleMin= 0 deg HalfOpenAngleMax= 180 deg - x0= 0 - y0= 0 + x0= 0 mm + y0= 0 mm z0= 2.50898 mm SourceProfile= Flat SigmaX= 16.5 mm SigmaY= 0 mm SigmaZ= 0 mm - particle= 240Pu ExcitationEnergy= 0 MeV Direction= z - Multiplicity= 2 -% DecayLaw= on: multiplicity following the decay law controlled by the halflife -% off: fix multiplcitity - DecayLaw= on - ActivityBq= 1.e7 + ActivityBq= 1.e7 Bq TimeWindow= 50.e-9 s %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Projects/Epic_sim_proto/K1_238Pu.source b/Projects/Epic_sim_proto/K1_238Pu.source deleted file mode 100755 index c8988161b1dc8ee3357c9159a1efe9d449bcdacf..0000000000000000000000000000000000000000 --- a/Projects/Epic_sim_proto/K1_238Pu.source +++ /dev/null @@ -1,26 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%% An Isotropic Source to be used as EventGenerator %%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Energy are given in MeV , Position in mm % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -Isotropic - EnergyLow= 0 MeV - EnergyHigh= 0 MeV - HalfOpenAngleMin= 0 deg - HalfOpenAngleMax= 180 deg - x0= 0 - y0= 0 - z0= -14.1929 mm - SourceProfile= Flat - SigmaX= 16.5 mm - SigmaY= 0 mm - SigmaZ= 0 mm - particle= 238Pu - ExcitationEnergy= 0 MeV - Direction= z - Multiplicity= 10 -% DecayLaw= on: multiplicity following the decay law controlled by the halflife -% off: fix multiplcitity - DecayLaw= on - ActivityBq= 1.e7 -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Projects/Epic_sim_proto/K1_238U.source b/Projects/Epic_sim_proto/K1_238U.source deleted file mode 100755 index 0edffac973f560f8bbfe5caadf482bfd8ca95ee7..0000000000000000000000000000000000000000 --- a/Projects/Epic_sim_proto/K1_238U.source +++ /dev/null @@ -1,26 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%% An Isotropic Source to be used as EventGenerator %%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Energy are given in MeV , Position in mm % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -Isotropic - EnergyLow= 0 MeV - EnergyHigh= 0 MeV - HalfOpenAngleMin= 0 deg - HalfOpenAngleMax= 180 deg - x0= 0 - y0= 0 - z0= -14.1929 mm - SourceProfile= Flat - SigmaX= 16.5 mm - SigmaY= 0 mm - SigmaZ= 0 mm - particle= 238U - ExcitationEnergy= 0 MeV - Direction= z - Multiplicity= 10 -% DecayLaw= on: multiplicity following the decay law controlled by the halflife -% off: fix multiplcitity - DecayLaw= on - ActivityBq= 50 -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Projects/Epic_sim_proto/Pu240.mac b/Projects/Epic_sim_proto/Pu240.mac deleted file mode 100644 index 9a01f41a956e6169ef83b2c81c72e656d5408046..0000000000000000000000000000000000000000 --- a/Projects/Epic_sim_proto/Pu240.mac +++ /dev/null @@ -1 +0,0 @@ -/process/had/rdm/thresholdForVeryLongDecayTime 1.e+4 y diff --git a/Projects/Epic_sim_proto/U238.mac b/Projects/Epic_sim_proto/U238.mac deleted file mode 100644 index f89f13d8e44d1e42f9ddc5b01fd59b0ec957b8f3..0000000000000000000000000000000000000000 --- a/Projects/Epic_sim_proto/U238.mac +++ /dev/null @@ -1 +0,0 @@ -/process/had/rdm/thresholdForVeryLongDecayTime 1.e+20 y diff --git a/Projects/Epic_sim_proto/root/simulation/ReadEpicSimulatedTree.C b/Projects/Epic_sim_proto/root/simulation/ReadEpicSimulatedTree.C new file mode 100644 index 0000000000000000000000000000000000000000..7420457fb064eedd56405e64e46cc6f818cb4647 --- /dev/null +++ b/Projects/Epic_sim_proto/root/simulation/ReadEpicSimulatedTree.C @@ -0,0 +1,136 @@ +#include <iostream> +#include <Riostream.h> + +#include <TROOT.h> +#include <TObject.h> + +#include <TApplication.h> +#include <TBranch.h> +#include <TCanvas.h> +#include <TChain.h> +#include <TClass.h> +#include <TFile.h> +#include <TH1.h> +#include <TTree.h> + +#include "TEpicData.h" + +#define DEBUG 0 +#define Electron_Vdrift 11.0 //cm/us + +void run() +{ + + // === input data + TChain * t = new TChain("SimulatedTree"); + for (int i=0; i<25; i++){ + //t->Add(Form("K11_alpha240Pu_window1us_%i.root",i+1)); + t->Add(Form("/media/audrey/DATA1/EPIC/simulation/K11_alpha240Pu_window1us_%i.root",i+1)); + } + //TFile *f = new TFile("K12_alpha240Pu.root", "read"); + //if (!f || f->IsZombie()) { + // std::cerr << "Erreur: Impossible d'ouvrir le fichier ROOT." << std::endl; + // return; + //} + //TTree *t = (TTree*)f->Get("SimulatedTree"); + //if (!t) { + // std::cerr << "Erreur: Impossible de trouver SimulatedTree dans le fichier." << std::endl; + // return; + //} + + + // === Initialize the data + TClass *epicClass = TClass::GetClass("TEpicData"); + if (!epicClass) { + std::cerr << "ERROR: TEpicData Class is not loaded" << std::endl; + return; + } + TEpicData *m_Data = nullptr; + t->SetBranchAddress("Epic", &m_Data); + + + // === Histograms + + // alpha mult emitted in the gaseous section + TH1I * h1_multAlphaPerEvent = new TH1I("MultAlphaInSensitiveVolumePerEvent","MultAlphaInSensitiveVolumePerEvent",11,-0.5,10.5); + h1_multAlphaPerEvent->SetDirectory(0); + + // Q1 in the time window + TH1D * h1_Q1PerMult[10]; + for(unsigned short i = 0 ; i<10 ; i++){ + h1_Q1PerMult[i] = new TH1D(Form("Q1_if_multIsEqualTo%i",i+1), + Form("Q1_if_multIsEqualTo%i",i+1), 3000,0,300); + h1_Q1PerMult[i]->SetDirectory(0); + h1_Q1PerMult[i]->SetLineColor(1); + h1_Q1PerMult[i]->SetFillColor(i); + } + + // influence per particle as a function of the time + + // === Variables + double Q1tot; + + // === ============================================================================ + // === Loop over the entries + unsigned int nentries = t->GetEntries(); + std::cout << "nentries = " << nentries << std::endl; +#if DEBUG + for (unsigned int Entry = 0; Entry < 100; Entry++) { +#else + for (unsigned int Entry = 0; Entry < nentries; Entry++) { +#endif + int bytesRead = t->GetEntry(Entry); + if (bytesRead <= 0) { + std::cerr << "Error : GetEntry failed at Entry #" << Entry << std::endl; + continue; + } + if (!m_Data) { + std::cerr << "Error: m_Data is NULL at Entry #" << Entry << std::endl; + continue; + } + +#if DEBUG + if(m_Data->GetMultiplicity()==0) continue; + cout << endl ; + cout << "***********************************************" << endl; + cout << "@ Entry = " << Entry << ", mult = " << m_Data->GetMultiplicity() << endl; +#endif + + Q1tot = 0; + // loop over the particle multiplicity + for(unsigned short pmult=0; pmult<m_Data->GetMultiplicity(); pmult++){ + Q1tot += m_Data->GetQ1(pmult); + int num_steps = m_Data->GetNumberOfSteps(pmult); +#if DEBUG + cout << "TrackID #" << m_Data->GetTrackID(pmult) + << " : Particle " << m_Data->GetParticleName(pmult) + << " - nsteps = " << m_Data->GetNumberOfSteps(pmult) + << " - emission time [ns] = " << m_Data->GetTime(pmult) + << endl; + for(unsigned short smult=0; smult<m_Data->GetNumberOfSteps(pmult); smult++){ + cout << " step #" << smult << " : n_electrons = " << m_Data->GetNumElectronsPerStep(pmult).at(smult) << " created at " << m_Data->GetTimeCreationElectronsPerStep(pmult).at(smult) << endl; + } +#endif + }// end of loop over the EventMult one mult per track + + if(m_Data->GetMultiplicity()>0 and m_Data->GetMultiplicity()<=10) h1_Q1PerMult[m_Data->GetMultiplicity()-1]->Fill(Q1tot); + h1_multAlphaPerEvent->Fill(m_Data->GetMultiplicity()); + } + // === End of loop over the entries + // === ============================================================================ + + + //// === DRAW + TCanvas * can_multAlpha = new TCanvas("MultAlpha","MultAlpha",0,0,2000,1500); + h1_multAlphaPerEvent->Draw(); + + TCanvas * can_Q1 = new TCanvas("Q1","Q1",0,0,5000,2000); + can_Q1->Divide(5,2); + for(unsigned short i=0; i<10; i++){ + can_Q1->cd(i+1); + h1_Q1PerMult[i]->Draw(); + } + + + +} diff --git a/Projects/MUGAST_LISE/Analysis.cxx b/Projects/MUGAST_LISE/Analysis.cxx index 1dcdbe14ea49e885baaef00cb62d9cc52de892ea..0a2284fbbb1c810d6fb4ba0898c89299b83ddbe4 100644 --- a/Projects/MUGAST_LISE/Analysis.cxx +++ b/Projects/MUGAST_LISE/Analysis.cxx @@ -172,6 +172,7 @@ void Analysis::TreatEvent() { Energy = ELab = 0; Si_E_M2 = M2->Si_E[countMust2]; CsI_E_M2 = M2->CsI_E[countMust2]; + std::cout << CsI_E_M2 << std::endl; // if CsI if (CsI_E_M2 > 0) { diff --git a/Projects/Minos/Analysis.cxx b/Projects/Minos/Analysis.cxx index 07ed88ffdd8fe29f0fcca731124ff34d6791b026..c64f59517dfbed72308a9933a29e749989c64ea2 100644 --- a/Projects/Minos/Analysis.cxx +++ b/Projects/Minos/Analysis.cxx @@ -33,7 +33,7 @@ Analysis::~Analysis(){ //////////////////////////////////////////////////////////////////////////////// void Analysis::Init(){ - Minos= (TMinosPhysicsPhysics*) m_DetectorManager->GetDetector("Minos"); + Minos= (TMinosPhysics*) m_DetectorManager->GetDetector("Minos"); } //////////////////////////////////////////////////////////////////////////////// diff --git a/Projects/Minos/Minos.detector b/Projects/Minos/Minos.detector index f0e602accb370bb5acc31a3936b92618b000533f..4ba27ea8539ba4361e9e9d8ac5c62fc0fcb880e0 100644 --- a/Projects/Minos/Minos.detector +++ b/Projects/Minos/Minos.detector @@ -18,7 +18,7 @@ Minos ShapingTime= 333.9 ns BaseLine= 250 Sampling= 10 - ZOffset= 0 mm + ZOffset= -4000 mm TargetZOffset= 0 mm ZRotation= 0 mm XML= ../S034/db/MINOS.xml diff --git a/Projects/Nebula/Analysis.cxx b/Projects/Nebula/Analysis.cxx index a6aafa1a0d0df13734fae153f55dc7d9c4c36ab6..05dec2bf9be54b2fbe9e1202c8deaf2f94292f10 100644 --- a/Projects/Nebula/Analysis.cxx +++ b/Projects/Nebula/Analysis.cxx @@ -24,6 +24,12 @@ using namespace std; #include"Analysis.h" #include"NPAnalysisFactory.h" #include"NPDetectorManager.h" +#include "NPOptionManager.h" + + + + + //////////////////////////////////////////////////////////////////////////////// Analysis::Analysis(){ } @@ -33,22 +39,65 @@ Analysis::~Analysis(){ //////////////////////////////////////////////////////////////////////////////// void Analysis::Init(){ + bool simulation = false; + if(NPOptionManager::getInstance()->HasDefinition("simulation")) + { + cout << "Considering input data as simulation" << endl; + simulation=true; + } + Nebula= (TNebulaPhysics*) m_DetectorManager->GetDetector("NEBULA"); + + n =NPL::Particle("neutron"); + mn = n.Mass(); + + InitOutputBranch(); } //////////////////////////////////////////////////////////////////////////////// void Analysis::TreatEvent(){ + Clear(); + + if(Nebula->Charge.size()>0 && !Nebula->HasVeto()){ + // Index of first neutron hit + unsigned int first = Nebula->GetFirstHit(); + TVector3 Pfirst = (Nebula->GetPos(first)); + double L = Pfirst.Mag(); + Tn_n = Nebula->TOF[first]; + Beta_n = (L/Tn_n)/NPUNITS::c_light; + Gamma_n = 1.0/(sqrt(1.0-(Beta_n*Beta_n))); + Etot_n = Gamma_n * mn; + Ec_n = (Gamma_n -1.0)*mn; + } + } //////////////////////////////////////////////////////////////////////////////// void Analysis::End(){ + +} + +//////////////////////////////////////////////////////////////////////////////// +void Analysis::Clear(){ + Beta_n= -1000; + Tn_n=-1000; + Gamma_n =-1000; + Etot_n = -1000; + Ec_n= -1000; } + +void Analysis::InitOutputBranch() { + RootOutput::getInstance()->GetTree()->Branch("Beta_n",&Beta_n); + RootOutput::getInstance()->GetTree()->Branch("Ec_n",&Ec_n); +} + //////////////////////////////////////////////////////////////////////////////// // Construct Method to be pass to the DetectorFactory // //////////////////////////////////////////////////////////////////////////////// NPL::VAnalysis* Analysis::Construct(){ + return (NPL::VAnalysis*) new Analysis(); } diff --git a/Projects/Nebula/Analysis.h b/Projects/Nebula/Analysis.h index c9c09f4aa1eded4ad0b6d42fb4c228fea141edf6..db0f104932e57f61ccadc589176a4e0dbd4b349a 100644 --- a/Projects/Nebula/Analysis.h +++ b/Projects/Nebula/Analysis.h @@ -23,6 +23,12 @@ #include"NPVAnalysis.h" #include"TNebulaPhysics.h" +#include"NPEnergyLoss.h" +#include "NPParticle.h" + +#include "TH1F.h" +#include "TFile.h" + class Analysis: public NPL::VAnalysis{ public: Analysis(); @@ -33,10 +39,25 @@ class Analysis: public NPL::VAnalysis{ void TreatEvent(); void End(); - static NPL::VAnalysis* Construct(); + void InitOutputBranch(); + static NPL::VAnalysis* Construct(); private: TNebulaPhysics* Nebula; + private: // output variable + double Tn_n; + double Beta_n; + double Gamma_n; + double Etot_n; + double Ec_n; + + private: // Energy loss table + NPL::Particle n; + double mn ; + + public: + void Clear(); + }; #endif diff --git a/Projects/Nebula/Nebula.detector b/Projects/Nebula/Nebula.detector index e81c5eb01b167184c302071078bf3317a05f6e12..eec64a761d5842cfd7472c690150b51d5aac3784 100644 --- a/Projects/Nebula/Nebula.detector +++ b/Projects/Nebula/Nebula.detector @@ -1,10 +1,11 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -Target - THICKNESS= 0.49 cm - RADIUS= 28 mm - MATERIAL= Vacuum +%Target + THICKNESS= 0.01 cm + %RADIUS= 28 mm + RADIUS= 200 mm + MATERIAL= Vacuum ANGLE= 0 deg - X= 3.5 cm + X= 0 cm Y= 0 mm Z= 0 mm %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -16,34 +17,73 @@ NEBULA InvertX= 0 InvertY= 0 -% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Samurai -% POS= 0 0 0 mm -% ANGLE= 30 deg + POS= 0 0 3900 mm + ANGLE= 30 deg % % -% METHOD= 1 + METHOD= 0 % % 0=RungeKutta, 1=EliaOmar -% FIELDMAP=3T.table.bin + FIELDMAP= 3T.table.bin % %fieldmap/3T.table.bin % % fieldmap path -% STEPS_PER_METER= 1000 + STEPS_PER_METER= 1000 + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %SAMURAIFDC1 -% %XML= db/SAMURAIFDC0_20200109.xml -% %Offset= -0.00666226 0.102191 -3370.01 mm + XML= db/SAMURAIFDC0_20200109.xml + Offset= -0.00666226 0.102191 -3370.01 mm % Offset= -0.00666226 0.102191 -4370.01 mm -% %InvertX= 1 -% %InvertY= 0 -% %InvertD= 1 -% + InvertX= 1 + InvertY= 0 + InvertD= 1 + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%SAMURAIFDC2 -% %XML= db/SAMURAIFDC2.xml -% Offset= 1000 200 5000 mm -% OffAngle= 59.930 deg -% %-252.416 -0.228477 4122.57 mm -% %InvertX= 0 -% %InvertY= 1 -% %InvertD= 1 +%SAMURAIFDC1 +% Offset= -0.00666226 0.102191 -4370.01 mm +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%SAMURAIFDC2 + % XML= db/SAMURAIFDC2.xml + % Offset= 1000 200 5000 mm + Offset= -252.416 -0.228477 7000.57 mm + OffAngle= 59.930 deg + InvertX= 0 + InvertY= 1 + InvertD= 1 +%SAMURAIFDC0 + % XML= db/SAMURAIFDC0_20200109.xml + %POS= 0 0 1000 mm + %Offset= -0.00666226 0.102191 -4000.01 mm + Offset= -0.00666226 0.102191 -4370.01 mm + %Offset= -252.416 -0.228477 5000.57 mm + %OffAngle= 59.930 deg + InvertX= 1 + InvertY= 0 + InvertD= 1 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%NEULAND + XML= db/NEULAND.xml + Offset= 0 0 0 mm + InvertX= 0 + InvertY= 0 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%Minos + %Position= 0.345399 1.02061 -4656.63 mm + Position= 0 0 0 mm + ZRotation= 40.6 deg + TargetLength= 151.72 mm + TargetZOffset= 0 mm + ZOffset= 0 mm + TargetMaterial= LH2 + CellMaterial= Mylar + TPCOnly= 0 + TimeBin= 30 ns + ShapingTime= 333.9 ns + Baseline= 250 + Sampling= 10 + XML= db/MINOS.xml diff --git a/Projects/Nebula/db/NEBULA.xml b/Projects/Nebula/db/NEBULA.xml index b7c0c667787e36cd3baed28bec73904c464e74a3..84329e270c8b9dbbafe6fddf8f75e2acff0a55c5 100755 --- a/Projects/Nebula/db/NEBULA.xml +++ b/Projects/Nebula/db/NEBULA.xml @@ -4264,7 +4264,7 @@ <SubLayer>0</SubLayer> <PosX>-1522</PosX> <PosY>0</PosY> -<PosZ>15004.8</PosZ> +<PosZ>15024.8</PosZ> <TUCal>0.0676695</TUCal> <TUOff>0</TUOff> <TUSlw>40</TUSlw> @@ -4328,7 +4328,7 @@ <SubLayer>0</SubLayer> <PosX>-902</PosX> <PosY>0</PosY> -<PosZ>15004.8</PosZ> +<PosZ>15024.8</PosZ> <TUCal>0.0682021</TUCal> <TUOff>0</TUOff> <TUSlw>40</TUSlw> @@ -4392,7 +4392,7 @@ <SubLayer>0</SubLayer> <PosX>-282</PosX> <PosY>0</PosY> -<PosZ>15004.8</PosZ> +<PosZ>15024.8</PosZ> <TUCal>0.0679071</TUCal> <TUOff>0</TUOff> <TUSlw>40</TUSlw> @@ -4456,7 +4456,7 @@ <SubLayer>0</SubLayer> <PosX>338</PosX> <PosY>0</PosY> -<PosZ>15004.8</PosZ> +<PosZ>15024.8</PosZ> <TUCal>0.0676573</TUCal> <TUOff>0</TUOff> <TUSlw>40</TUSlw> @@ -4520,7 +4520,7 @@ <SubLayer>0</SubLayer> <PosX>958</PosX> <PosY>0</PosY> -<PosZ>15004.8</PosZ> +<PosZ>15024.8</PosZ> <TUCal>0.0686263</TUCal> <TUOff>0</TUOff> <TUSlw>40</TUSlw> @@ -4584,7 +4584,7 @@ <SubLayer>0</SubLayer> <PosX>1578</PosX> <PosY>0</PosY> -<PosZ>15004.8</PosZ> +<PosZ>15024.8</PosZ> <TUCal>0.0673654</TUCal> <TUOff>0</TUOff> <TUSlw>40</TUSlw> @@ -4608,6 +4608,7 @@ <qd_ch>27</qd_ch> <Ignore>0</Ignore> </NEBULA> +<!-- <NEBULA> <ID>145</ID> <NAME>NoUse1</NAME> @@ -5632,4 +5633,5 @@ <qd_ch>-1</qd_ch> <Ignore>0</Ignore> </NEBULA> +--> </dataroot> diff --git a/Projects/Nebula/db/NEBULA2BARS.xml b/Projects/Nebula/db/NEBULA2BARS.xml index dc6de7026a56590c99f8143c2fdb5b953bc94dad..47b7469db265c4071b3d434b941601fceca6eef5 100755 --- a/Projects/Nebula/db/NEBULA2BARS.xml +++ b/Projects/Nebula/db/NEBULA2BARS.xml @@ -64,4 +64,36 @@ <qd_ch>0</qd_ch> <Ignore>0</Ignore> </NEBULA> +<NEBULA> +<ID>3</ID> +<NAME>103</NAME> +<FPl>13</FPl> +<Layer>1</Layer> +<SubLayer>1</SubLayer> +<PosX>0</PosX> +<PosY>0</PosY> +<PosZ>1242</PosZ> +<TUCal>1</TUCal> +<TUOff>0</TUOff> +<TUSlw>0</TUSlw> +<QUCal>0.0278832</QUCal> +<QUPed>176.884</QUPed> +<TDCal>1</TDCal> +<TDOff>0</TDOff> +<TDSlw>0</TDSlw> +<QDCal>0.0278832</QDCal> +<QDPed>211.422</QDPed> +<DTCal>94.87</DTCal> +<DTOff>0</DTOff> +<TAveOff>-4.743</TAveOff> +<tu_geo>11</tu_geo> +<tu_ch>0</tu_ch> +<qu_geo>21</qu_geo> +<qu_ch>0</qu_ch> +<td_geo>12</td_geo> +<td_ch>0</td_ch> +<qd_geo>22</qd_geo> +<qd_ch>0</qd_ch> +<Ignore>0</Ignore> +</NEBULA> </dataroot> diff --git a/Projects/Nebula/macro/GetTBrowser.C b/Projects/Nebula/macro/GetTBrowser.C index 70d5948c8268d3caad5c7addd425265011454c47..0b2737ca297be597d5a788bf45f88752bcd0df15 100644 --- a/Projects/Nebula/macro/GetTBrowser.C +++ b/Projects/Nebula/macro/GetTBrowser.C @@ -1,9 +1,14 @@ + + void GetTBrowser(){ TH1F *h1 = new TH1F("h1","Somme des Temps",100,-4,4); TFile* f = TFile::Open("root/simulation/SimulatedTree.root"); + TTree *t = (TTree*)f->Get("SimulatedTree"); + + TBranch *b = (TBranch*)t->GetBranch("Nebula"); TLeaf *tu = b->GetLeaf("fNebula_Tu_Time"); //Float_t td; @@ -16,4 +21,8 @@ void GetTBrowser(){ //sum += td; h1->Fill(sum); } + + + h1->Draw(); + } diff --git a/Projects/Nebula/macro/draw/PositionZ.C b/Projects/Nebula/macro/draw/PositionZ.C index c2624a21a9571e3031f9d126bd5d6457b2922034..b400d6b079a8a7d9a6b417668f6dc79a5df15ae3 100644 --- a/Projects/Nebula/macro/draw/PositionZ.C +++ b/Projects/Nebula/macro/draw/PositionZ.C @@ -1,20 +1,26 @@ -#include "/local/lemair/nptool/NPLib/Detectors/Nebula/TNebulaPhysics.h" +//#include "/local/lemair/nptool/NPLib/Detectors/Nebula/TNebulaPhysics.h" #include <iostream> // std::cout #include <algorithm> // std::find #include <vector> - +#include "TFile.h" +#include "TCanvas.h" +#include "TH1F.h" +#include "TTree.h" +#include "TBranch.h" void PositionZ(){ TFile* f = TFile::Open("root/simulation/SimulatedTree.root"); + + TTree* t = (TTree*)f->Get("SimulatedTree"); TCanvas *c1 = new TCanvas("c1","Position Z",1080,720); vector<double>* PosZ; int vec_size; TBranch* branch; - - TH1F *h = new TH1F("h","Position Z",2400,10800,12200); - t->SetBranchAddress("Pos_Z", &PosZ, &branch); + + TH1F *h = new TH1F("h","Position Z",2400,10800,16000); + t->SetBranchAddress("Nebula.PosZ", &PosZ, &branch); int nentries = t->GetEntries(); for(int i=0 ; i<nentries ; i++){ @@ -25,5 +31,6 @@ void PositionZ(){ } h->Draw("SAME"); + } diff --git a/Projects/Nebula/reaction/7Li_p_n_7Be.reaction b/Projects/Nebula/reaction/7Li_p_n_7Be.reaction index 43d6df9b32322d62dea72c02a0e99a28769b28b4..e802dac62b0330fc2c7f0843287fa2b665b1732d 100644 --- a/Projects/Nebula/reaction/7Li_p_n_7Be.reaction +++ b/Projects/Nebula/reaction/7Li_p_n_7Be.reaction @@ -3,14 +3,15 @@ Beam Particle= p Energy= 196 MeV SigmaEnergy= 0 MeV - SigmaThetaX= 1 deg - SigmaPhiY= 1 deg - SigmaX= 5 mm - SigmaY= 5 mm + SigmaThetaX= 0 deg + SigmaPhiY= 0 deg + SigmaX= 0 mm + SigmaY= 0 mm MeanThetaX= 0 deg MeanPhiY= 0 deg MeanX= 0 mm MeanY= 0 mm + ZEmission= -100 mm %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% TwoBodyReaction @@ -21,6 +22,8 @@ TwoBodyReaction ExcitationEnergyLight= 0.0 MeV ExcitationEnergyHeavy= 0.43 MeV CrossSectionPath= flat.txt CSR - ShootLight= 0 - ShootHeavy= 0 + ShootLight= 1 + ShootHeavy= 1 + %HalfOpenAngleMin= -5 deg + %HalfOpenAngleMax= 5 deg %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Projects/Nebula/reaction/SimpleNeutrons.reaction b/Projects/Nebula/reaction/SimpleNeutrons.reaction index 604767b04eb4de424d5c33aa12d44a8700385ef9..dd60ba285cbf5e3767778e8a213f15f5d6c55c8e 100755 --- a/Projects/Nebula/reaction/SimpleNeutrons.reaction +++ b/Projects/Nebula/reaction/SimpleNeutrons.reaction @@ -3,8 +3,8 @@ Beam Particle= n Energy= 150 MeV SigmaEnergy= 0 MeV - SigmaThetaX= 1.5 deg - SigmaPhiY= 1.5 deg + SigmaThetaX= 5 deg + SigmaPhiY= 5 deg SigmaX= 0 cm SigmaY= 0 cm MeanThetaX= 0 deg diff --git a/Projects/PISTA/PISTA.detector b/Projects/PISTA/PISTA.detector deleted file mode 100644 index 8b8aa25d53e90fb32d517840cb31e7b6a5ba2cb9..0000000000000000000000000000000000000000 --- a/Projects/PISTA/PISTA.detector +++ /dev/null @@ -1,137 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -Target - THICKNESS= 0.44 micrometer - RADIUS= 20 mm - MATERIAL= C - ANGLE= 0 deg - X= 0 mm - Y= 0 mm - Z= 0 mm -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -PISTA - R= 100 mm - THETA= 39 deg - PHI= 315 deg -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -PISTA - R= 100 mm - THETA= 39 deg - PHI= 270 deg -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -PISTA - R= 100 mm - THETA= 39 deg - PHI= 225 deg -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -PISTA - R= 100 mm - THETA= 39 deg - PHI= 180 deg -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -PISTA - R= 100 mm - THETA= 39 deg - PHI= 135 deg -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -PISTA - R= 100 mm - THETA= 39 deg - PHI= 90 deg -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -PISTA - R= 100 mm - THETA= 39 deg - PHI= 45 deg -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -PISTA - R= 100 mm - THETA= 39 deg - PHI= 0 deg -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Vamos Configuration -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%Vamos -% R= 0.3 m -% Theta= 0 deg -% -%Vamos DC -% Z= 60 mm -% Gas= iC4H10 -% Pressure= 0.01 bar -% Temperature= 295 kelvin -% -%Vamos DC -% Z= 200 mm -% Gas= iC4H10 -% Pressure= 0.01 bar -% Temperature= 295 kelvin -% -%Vamos BeamCatcher -% Material= BC400 -% Width= 30 mm -% Length= 80 mm -% Thickness= 30 mm -% Pos= 0 0 600 mm -% -%Vamos MWPPAC -% Z= 750 mm -% Gas= iC4H10 -% Pressure= 0.01 bar -% Temperature= 295 kelvin -% -%Vamos DC -% Z= 940 mm -% Gas= iC4H10 -% Pressure= 0.01 bar -% Temperature= 295 kelvin -% -%Vamos DC -% Z= 1060 mm -% Gas= iC4H10 -% Pressure= 0.01 bar -% Temperature= 295 kelvin -% -%Vamos IC -% Z= 1200 mm -% Thickness= 50 mm -% Gas= CF4 -% Pressure= 0.2 bar -% Temperature= 295 kelvin -% -%Vamos IC -% Z= 1250 mm -% Thickness= 50 mm -% Gas= CF4 -% Pressure= 0.2 bar -% Temperature= 295 kelvin -% -%Vamos IC -% Z= 1300 mm -% Thickness= 50 mm -% Gas= CF4 -% Pressure= 0.2 bar -% Temperature= 295 kelvin -% -%Vamos IC -% Z= 1375 mm -% Thickness= 100 mm -% Gas= CF4 -% Pressure= 0.2 bar -% Temperature= 295 kelvin -% -%Vamos IC -% Z= 1525 mm -% Thickness= 200 mm -% Gas= CF4 -% Pressure= 0.2 bar -% Temperature= 295 kelvin -% -%Vamos IC -% Z= 1725 mm -% Thickness= 200 mm -% Gas= CF4 -% Pressure= 0.2 bar -% Temperature= 295 kelvin -% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Projects/S034/Analysis.cxx b/Projects/S034/Analysis.cxx index b3ab208c767f7860dacd0e2dc3d70e1fab1e8722..095774b6c4cf05527ad63cd6d5c9a04b647109c5 100644 --- a/Projects/S034/Analysis.cxx +++ b/Projects/S034/Analysis.cxx @@ -9,7 +9,7 @@ * Original Author: A. Matta contact address: matta@lpccaen.in2p3.fr * * * * Creation Date : May 2021 * - * Last update : * + * Last update : October 2024 * *---------------------------------------------------------------------------* * Decription: * * This class describe S034 analysis project * @@ -30,8 +30,16 @@ using namespace std; #include"RootOutput.h" #include"NPParticle.h" +#include"NPOptionManager.h" + +#include "TROOT.h" + +//thetaX angle dans le plan XZ +//PhiY angle dans le plan YZ + //////////////////////////////////////////////////////////////////////////////// -Analysis::Analysis(){ +Analysis::Analysis() +{ } //////////////////////////////////////////////////////////////////////////////// Analysis::~Analysis(){ @@ -40,203 +48,629 @@ Analysis::~Analysis(){ //////////////////////////////////////////////////////////////////////////////// void Analysis::Init(){ - Plastic= (TBigRIPSPlasticPhysics*) m_DetectorManager->GetDetector("BigRIPSPlastic"); - Minos= (TMinosPhysics*) m_DetectorManager->GetDetector("Minos"); - Nebula = (TNebulaPhysics*) m_DetectorManager->GetDetector("NEBULA"); - BDC = (TSamuraiBDCPhysics*) m_DetectorManager->GetDetector("SAMURAIBDC"); - FDC0 = (TSamuraiFDC0Physics*) m_DetectorManager->GetDetector("SAMURAIFDC0"); - FDC2 = (TSamuraiFDC2Physics*) m_DetectorManager->GetDetector("SAMURAIFDC2"); - Hodo = (TSamuraiHodoscopePhysics*) m_DetectorManager->GetDetector("SAMURAIHOD"); - - Nebula->SetQThreshold(0); - Nebula->SetVThreshold(0); - - FragmentTarget = NPL::EnergyLoss("He6_LH2.G4table","G4Table",1000 ); - m_field.LoadMap(30*deg,"field_map/180702-2,40T-3000.table.bin",10); - m_field.SetFDC2Angle((59.930-90.0)*deg); - m_field.SetFDC2R(FDC2->GetOffset().Z()); - InitOutputBranch(); - InitInputBranch(); - // for fdc/bdc alignement - //file.open("Calibration/Pos/bdc.txt"); - He4=NPL::Particle("4He"); - He6=NPL::Particle("6He"); + EventInCut = false; + CompleteAnalysis = false; + + //--------------------> Boolean initialisation <-----------------// + std::string tree_name = RootInput::getInstance()->GetChain()->GetName(); + if(tree_name=="SimulatedTree"){ + IsSimulation =true; + cout << "--------------->>> Analysing SIMULATED data <<<---------------" << endl; + } + else{ + IsSimulation =false; + cout << "--------------->>> Analysing EXPERIMENT data <<<---------------" << endl; + } + + + + //Create 2 files (1st with FDC0, FDC2 and Minos hit positions and 2nd with BDC1, BDC2 and Minos hit positions for FDC/BDC alignment) + if(NPOptionManager::getInstance()->HasDefinition("alignment_file")){ + CreateAlignmentFile = true; + cout << "--------------->>> Producing a data file for aligmnent <<<---------------" << endl; + } + else CreateAlignmentFile = false; + + + + if(!NPOptionManager::getInstance()->HasDefinition("detector_resolution")){ + cout << "--------------->>> Analysing for all detectors <<<-------------" << endl; + CompleteAnalysis = true; + + //Detectors only for experimental data + if(!IsSimulation) + { + Plastic = (TBigRIPSPlasticPhysics*) m_DetectorManager->GetDetector("BigRIPSPlastic"); + Hodo = (TSamuraiHodoscopePhysics*) m_DetectorManager->GetDetector("SAMURAIHOD"); + } + + //Other detectors for both analysis and simulation + Minos= (TMinosPhysics*) m_DetectorManager->GetDetector("Minos"); + BDC = (TSamuraiBDCPhysics*) m_DetectorManager->GetDetector("SAMURAIBDC"); + FDC0 = (TSamuraiFDC0Physics*) m_DetectorManager->GetDetector("SAMURAIFDC0"); + FDC2 = (TSamuraiFDC2Physics*) m_DetectorManager->GetDetector("SAMURAIFDC2"); + //Nebula = (TNebulaPhysics*) m_DetectorManager->GetDetector("NEBULA"); + + // Nebula->SetQThreshold(0); //???? + // Nebula->SetVThreshold(0); //???? + + ////////// Field loading ////////// + // m_field.LoadMap(30*deg,"field_map/180702-2,40T-3000.table.bin",10); + // m_field.SetFDC2Angle((59.930-90.0)*deg); + // m_field.SetFDC2R(FDC2->GetOffset().Z()); + + TargetLength = Minos->GetTargetLength(); //mm + MinosPosition = Minos->GetMinosPosition(); //mm lab reference frame (Minos entrance) + Minos_InZ = MinosPosition.Z(); + Minos_OutZ = MinosPosition.Z() + TargetLength; + } + + //Detectors only in simulation + if(IsSimulation) + { + //NeuLAND = (TNeuLANDPhysics*) m_DetectorManager->GetDetector("NeuLAND"); + Initial_Conditions=new TInitialConditions(); + } + + // if(!IsSimulation) + // { + // Minos= (TMinosPhysics*) m_DetectorManager->GetDetector("Minos"); + // } + + + + //setup information + LengthF7F13 = 36576.5; //mm + + ////////// He4 Energy loss in target ////////// + // FragmentTarget = NPL::EnergyLoss("He4_LH2.G4table","G4Table",1000 ); + + // He4=NPL::Particle("4He"); He8=NPL::Particle("8He"); - He8.SetBeta(0.5152); - n =NPL::Particle("neutron"); - mhe6 = He6.Mass(); - mn = n.Mass(); - sumM= mhe6+mn; + //He8.SetBeta(0.5152); // expected value + He8.SetBeta(0.5152); // expected value + mHe8 = He8.Mass(); + // n = NPL::Particle("neutron"); + // mhe4 = He4.Mass(); + // mn = n.Mass(); + // sumM= mhe4+mn; + + // Text file for alignment + + countLimitAlignment = 10000; + if(CreateAlignmentFile){ + countAlignment = 0; + fileBDC.open("Calibration/Pos/bdc.txt"); + fileFDC.open("Calibration/Pos/fdc.txt"); + } + + + InitInputBranch(); + InitOutputBranch(); + LoadCuts(); + +} + +//////////////////////////////////////////////////////////////////////////////// +void Analysis::LoadCuts(){ + + std::unique_ptr<TFile> myFile( TFile::Open("cut/Cut_Beam.root") ); + cut_Beam = myFile->Get<TCutG>("Cut_Beam"); + + myFile.reset(); } //////////////////////////////////////////////////////////////////////////////// void Analysis::TreatEvent(){ - Clear(); + if(!CompleteAnalysis) return; - static TLorentzVector LVHe6; - static TLorentzVector LVn; - Trigger=Trigger&0x00ff; - - - // BigRIPS plastic - double TF5=-1; - double TF13=-1; - double TF7=-1; - double TOF_F5F13=-1; - double TOF_F7F13=-1; - unsigned int sizeP = Plastic->FP.size(); - for(unsigned int i = 0 ; i < sizeP ; i++){ - if(Plastic->FP[i]==5){ - TF5=Plastic->TSlew[i]; - } - else if(Plastic->FP[i]==13&&Plastic->ID[i]==4){// two plastic at F13 taking only one - TF13=Plastic->TSlew[i]; - } - else if(Plastic->FP[i]==7){ - TF7=Plastic->TSlew[i]; - } - } + Clear(); + //cout << CreateAlignmentFile << endl; + Trigger=log(Trigger&0x00ff)/log(2.0); + // static TLorentzVector LVHe4; + // static TLorentzVector LVn; + // static TLorentzvector LVBeam; - if(TF7>0 && TF13>0){ - // offset is adjusted to give the expected beta - TOF_F7F13=TF13-TF7+6.71626e+02; - static double LengthF7F13 = 117915-66409; - Beta_b=(LengthF7F13/TOF_F7F13)/NPUNITS::c_light; - // to find offset: - //Beta_b=TOF_F7F13-LengthF7F13/He8.GetVelocity(); - } - // Samurai-Minos - if( Beta_b>0.5140 && Beta_b < 0.5165 // Correct Beta - && Hodo->Charge.size()==1 && Hodo->Charge[0]>28 && Hodo->Charge[0]<42 && Hodo->Time[0]>58 && Hodo->Time[0]<68 // 6He in Hodo->cope - && FDC2->PosX>-1500 && FDC2->PosX<1000 - && FDC2->PosY>-500 && FDC2->PosY<500 - && FDC0->PosX>-80 && FDC0->PosX<80 - && FDC0->PosY>-80 && FDC0->PosY<80 // both FDC ok - && Minos->Tracks_P0.size()==1 ) { // p,pn only - // Compute ThetaX and PhiY using Minos vertex and FDC0 X - // Check if both BDC are reconstructed - TVector3 BDC1=BDC->GetPos(1); - TVector3 BDC2=BDC->GetPos(2); - if( BDC1.Z()!=-10000 && BDC2.Z()!=-10000){ - TVector3 Vertex,delta; - TVector3 P1 = Minos->Tracks_P0[0]+Minos->Tracks_Dir[0]; - - // Vertex in Samurai Reference frame - MinimumDistanceTwoLines(BDC1,BDC2, - Minos->Tracks_P0[0], P1, - Vertex, delta) ; + ////// BigRIPS plastic ////// + double TF3= -1; + double TF5=-1; + double TF7=-1; + double TF13_P1=-1; + double TF13_P2 = -1; + + unsigned int sizeP = Plastic->FP.size(); + if(!IsSimulation){ + for(unsigned int i = 0 ; i < sizeP ; i++){ - TVector3 FDC0_Dir= FDC0->GetPos()-Vertex; - FDC0_Dir=FDC0_Dir.Unit(); - TVector3 BDCDir=BDC2-BDC1; - BDCDir=BDCDir.Unit(); - BDCDir*=(Vertex.Z()-BDC2.Z())/BDCDir.Z(); - BDCX=(BDC2+BDCDir).X(); - BDCY=(BDC2+BDCDir).Y(); - - // XYZ relative to Minos entrance - X=Vertex.X(); - Y=Vertex.Y(); - Z=Vertex.Z()+4650; - - // Fragment analysis - if(FDC0_Dir.Z()>0.6 && Z>0 && Z<150 && sqrt(X*X+Y*Y)<15){ - double FDC0_ThetaX = atan((FDC0->PosX-Vertex.X())/(1254.39-Z)); - double FDC0_PhiY = atan((FDC0->PosY-Vertex.Y())/(1254.39-Z)); - Brho=m_field.FindBrho(FDC0->GetPos(),FDC0_Dir,FDC2->GetPos(),TVector3(0,0,1)); - He6.SetBrho(Brho); - double Energy = He6.GetEnergy(); - if(Energy){ - Energy=FragmentTarget.EvaluateInitialEnergy(Energy,150-Z,FDC0_Dir.Angle(TVector3(0,0,1))); - He6.SetKineticEnergy(Energy); - Beta_f=He6.GetBeta(); - LVHe6.SetVectM(TVector3(0,0,0),mhe6); - LVHe6.Boost(Beta_f*FDC0_Dir.Unit()); - } + if(Plastic->FP[i]==3) TF3=Plastic->TSlew[i]; + else if(Plastic->FP[i]==5) TF5=Plastic->TSlew[i]; + else if(Plastic->FP[i]==7) TF7=Plastic->TSlew[i]; + else if(Plastic->FP[i]==13 && Plastic->ID[i]==4){// two plastic at F13 taking the 1st one + TF13_P1= Plastic->TSlew[i]; + Charge_F13_P1 = sqrt(Plastic->QL[i]*Plastic->QR[i]); + } + else if(Plastic->FP[i]==13 && Plastic->ID[i]==5){// two plastic at F13 taking the 2nd one + TF13_P2= Plastic->TSlew[i]; + Charge_F13_P2 = sqrt(Plastic->QL[i]*Plastic->QR[i]); + } + + if((Plastic->FP[i]==3||Plastic->FP[i]==5||Plastic->FP[i]==7||Plastic->FP[i]==13) && Plastic->multiHit[i]>0) MultiHit_PlasticBeam = true; + //if((Plastic->FP[i]==3||Plastic->FP[i]==5||Plastic->FP[i]==7||Plastic->FP[i]==13||Plastic->FP[i]==63) && Plastic->multiHit[i]>0) MultiHit_PlasticBeam = true; + } // end for loop on sizeP + + Charge_F13_P1P2 = sqrt(sqrt((Charge_F13_P1*Charge_F13_P1)*(Charge_F13_P2*Charge_F13_P2))); + + // plastic 1 and 2 + if(TF7>0 && TF13_P1>0 && TF13_P2>0){ + static double Offset_TOF_F7F13_P1P2 = 102.6; //xml file samuraiplastic.s034.2.xml + //Offset_TOF_F7F13_P1P2 = 0.0; + + double TF13_P1P2 = (TF13_P1 + TF13_P2)/2.0; + // to find offset: + Beam_Offset_TOF = -(TF13_P1P2-TF7)-LengthF7F13/He8.GetVelocity(); + //cout<< He8.GetBeta()<< endl; + //cout << He8.GetEnergy() << endl; + + TOF_F7F13_P1P2= -(TF13_P1P2-TF7) - Offset_TOF_F7F13_P1P2; + Beta_F7F13_P1P2=(LengthF7F13/TOF_F7F13_P1P2)/NPUNITS::c_light; + Beam_Beta = Beta_F7F13_P1P2; + He8.SetBeta(Beam_Beta); + }// end plastic 1 and 2 + + } // end if simulation == false + + if(IsSimulation) { + He8.SetKineticEnergy(Initial_Conditions->GetIncidentInitialKineticEnergy()); + Beam_Beta = He8.GetBeta(); + } + + Beam_Gamma = 1/sqrt(1-(Beam_Beta*Beam_Beta)); + Beam_P = Beam_Beta * Beam_Gamma * mHe8; + + // event selection + if((!IsSimulation && TMath::IsInside(TOF_F7F13_P1P2,Charge_F13_P1P2,cut_Beam->GetN(),cut_Beam->GetX(),cut_Beam->GetY())) || IsSimulation) EventInCut = true; + + //BDC + MultBDC = BDC->GetMult(); + BDC1_PileUp = BDC->GetPileUpDet(1); + BDC2_PileUp = BDC->GetPileUpDet(2); + + //Minos + Minos_TrackNbr = Minos->GetNbrOfTracks(); + + //FDC0 + FDC0_PileUp = FDC0->GetPileUp(); + + //Hodoscope + if(IsSimulation) HodoMult = 1; + else HodoMult = Hodo->GetMult(); + + + + + + + + // if (MultBDC>=2) + // cout << Beam_Beta << " " << MultBDC << " " << BDC1_PileUp << " " << BDC2_PileUp << " " << Minos_TrackNbr << " " << FDC0_PileUp << " " << HodoMult << endl; + + //Samurai-Minos + if(EventInCut && Beam_Beta > 0.512 && Beam_Beta < 0.518 && MultBDC==2/* && BDC1_PileUp==0 && BDC2_PileUp==0*/ /*&& (Minos_TrackNbr==1 || Minos_TrackNbr==2) &&*/ /*FDC0_PileUp==0 &&*/ /*(HodoMult==1 || HodoMult== 2)*/){ // selection for simulation and experimental data + + // Beam and BDC + BDC1_Pos = BDC->GetPos(1); + BDC1_X = BDC1_Pos[0]; + BDC1_Y = BDC1_Pos[1]; + BDC1_Z = BDC1_Pos[2]; + + BDC2_Pos = BDC->GetPos(2); + BDC2_X = BDC2_Pos[0]; + BDC2_Y = BDC2_Pos[1]; + BDC2_Z = BDC2_Pos[2]; + + BDCs_Dir = (BDC2_Pos - BDC1_Pos).Unit(); + + Beam_Px = BDCs_Dir.X()*Beam_P; + Beam_Py = BDCs_Dir.Y()*Beam_P; + Beam_Pz = BDCs_Dir.Z()*Beam_P; + + Beam_KE_Tot = He8.GetEnergy(); + Beam_KE = (He8.GetEnergy())/(He8.GetA()); // Kinetic Energy by nucleon + + Beam_Theta = BDCs_Dir.Angle(TVector3(0.0,0.0,1.0))*180.0/TMath::Pi(); + + Beam_ThetaX = atan2(BDC2_X-BDC1_X,BDC2_Z-BDC1_Z); + Beam_ThetaY = atan2(BDC2_Y-BDC1_Y,BDC2_Z-BDC1_Z); + + // if(IsSimulation) return; + + //Minos + if(Minos_TrackNbr==1){ + Minos_Track1P0 = Minos->GetTracksP0(0); + Minos_Track1Dir = Minos->GetTracksDir(0); + Minos_DistMin = MinimumDistanceTwoLines(Minos_Track1P0, Minos_Track1P0 + Minos_Track1Dir, BDC1_Pos, BDC1_Pos + BDCs_Dir, Minos_Vertex, Minos_Delta); + } + + else if(Minos_TrackNbr==2){ + Minos_Vertex = Minos->GetVertex(); + Minos_DistMin = Minos->GetDeltaVertex(); + Minos_TwoProtonAngle = Minos->GetTheta12(); + } + + Minos_Vertex_X = Minos_Vertex.X(); + Minos_Vertex_Y = Minos_Vertex.Y(); + Minos_Vertex_Z = Minos_Vertex.Z(); + // cout << Minos_Vertex_X << " " << Minos_Vertex_Y << " " << Minos_Vertex_Z << endl; + Minos_RVertex = sqrt( Minos_Vertex_X* Minos_Vertex_X + Minos_Vertex_Y*Minos_Vertex_Y); + + Minos_Vertex_InDet = Minos_Vertex - MinosPosition; + Minos_Vertex_XInDet = Minos_Vertex_InDet.X(); + Minos_Vertex_YInDet = Minos_Vertex_InDet.Y(); + Minos_Vertex_ZInDet = Minos_Vertex_InDet.Z(); + + BDC_XVertex = BDCs_Dir.X() * ((Minos_Vertex_Z - BDC1_Z)/BDCs_Dir.Z()) + BDC1_X; + BDC_YVertex = BDCs_Dir.Y() * ((Minos_Vertex_Z - BDC1_Z)/BDCs_Dir.Z()) + BDC1_Y; + + //FDC0 + FDC0_Pos = FDC0->GetPos(); + FDC0_X = FDC0_Pos.X(); + FDC0_Y = FDC0_Pos.Y(); + FDC0_Z = FDC0_Pos.Z(); + + Fragment_TrackDir = (FDC0_Pos - Minos_Vertex).Unit(); + + Minos_Out = Minos_Vertex + ((Minos_OutZ - Minos_Vertex_Z)/Fragment_TrackDir.Z())*Fragment_TrackDir; + Minos_OutX = Minos_Out.X(); + Minos_OutY = Minos_Out.Y(); + Minos_ROut = sqrt(Minos_OutX*Minos_OutX + Minos_OutY*Minos_OutY); + + Minos_PathFragment = Minos_Vertex - Minos_Out; + Minos_DistFragment = Minos_PathFragment.Mag(); + + Minos_In = BDC1_Pos + ((Minos_InZ - BDC1_Z)/BDCs_Dir.Z())*BDCs_Dir; + Minos_InX = Minos_In.X(); + Minos_InY = Minos_In.Y(); + Minos_RIn = sqrt(Minos_InX*Minos_InX + Minos_InY*Minos_InY); + + //FDC2 + FDC2_Pos = FDC2->GetPos(); + FDC2_X = FDC2_Pos.X(); + FDC2_Y = FDC2_Pos.Y(); + FDC2_Z = FDC2_Pos.Z(); + + + //Hodoscope + // position extrapolée de la fdc2 vers l'hodoscope + + + + // creation of files fdc.txt and bdc.txt with BDCs, Minos and FDCs hit positions + // cout << CreateAlignmentFile << endl; + + if(CreateAlignmentFile) FillAlignmentFiles(); + } + + + // TVector3 Beam_Boost; + + // // Samurai-Minos + // if( Beam_Beta>0.5140 && Beam_Beta < 0.5165 // Correct Beta + // && Hodo->Charge.size()==1 && Hodo->Charge[0]>28 && Hodo->Charge[0]<42 && Hodo->Time[0]>58 && Hodo->Time[0]<68 // 6He in Hodo->cope ----------->>>>>>>> à changer pour He4 + // && FDC2->PosX>-1500 && FDC2->PosX<1000 + // && FDC2->PosY>-500 && FDC2->PosY<500 + // && FDC0->PosX>-80 && FDC0->PosX<80 + // && FDC0->PosY>-80 && FDC0->PosY<80 // both FDC ok + // && Minos->Tracks_P0.size()==1 ) { // p,pn only // and p,p' ? + // // Compute ThetaX and PhiY using Minos vertex and FDC0 X + // // Check if both BDC are reconstructed + // TVector3 BDC1=BDC->GetPos(1); + // TVector3 BDC2=BDC->GetPos(2); + // if( BDC1.Z()!=-10000 && BDC2.Z()!=-10000){ + // TVector3 Vertex,delta; + // TVector3 P1 = Minos->Tracks_P0[0]+Minos->Tracks_Dir[0]; + + // // Vertex in Samurai Reference frame + // MinimumDistanceTwoLines(BDC1,BDC2, + // Minos->Tracks_P0[0], P1, + // Vertex, delta) ; + + // TVector3 FDC0_Dir= FDC0->GetPos()-Vertex; + // FDC0_Dir=FDC0_Dir.Unit(); + // TVector3 BDCDir=BDC2-BDC1; + // BDCDir=BDCDir.Unit(); + // BDCDir*=(Vertex.Z()-BDC2.Z())/BDCDir.Z(); + // BDCX=(BDC2+BDCDir).X(); + // BDCY=(BDC2+BDCDir).Y(); + + // // XYZ relative to Minos entrance + // X=Vertex.X(); + // Y=Vertex.Y(); + // Z=Vertex.Z()+4650; + + // // Fragment analysis + // if(FDC0_Dir.Z()>0.6 && Z>0 && Z<150 && sqrt(X*X+Y*Y)<15){ + // double FDC0_ThetaX = atan((FDC0->PosX-Vertex.X())/(1254.39-Z)); + // double FDC0_PhiY = atan((FDC0->PosY-Vertex.Y())/(1254.39-Z)); + // Brho=m_field.FindBrho(FDC0->GetPos(),FDC0_Dir,FDC2->GetPos(),TVector3(0,0,1)); + // He6.SetBrho(Brho); + // double Energy = He6.GetEnergy(); + // if(Energy){ + // Energy=FragmentTarget.EvaluateInitialEnergy(Energy,150-Z,FDC0_Dir.Angle(TVector3(0,0,1))); + // He6.SetKineticEnergy(Energy); + // Beta_f=He6.GetBeta(); + // LVHe4.SetVectM(TVector3(0,0,0),mhe6); + // LVHe4.Boost(Beta_f*FDC0_Dir.Unit()); + // } - } + // } - // Neutron analysis - if(Nebula->Charge.size()>0 && !Nebula->HasVeto()){ - // Index of first neutron hit - unsigned int first = Nebula->GetFirstHit(); - TVector3 Pfirst = (Nebula->GetPos(first)-Vertex); - double L = Pfirst.Mag(); - double TSBT= (Vertex.Z()+7377.56)/(Beta_b*c_light); - TOF_n = Nebula->TOF[first]-TSBT-TF13; - Beta_n = (L/TOF_n)/NPUNITS::c_light; - LVn.SetVectM(TVector3(0,0,0),mn); - LVn.Boost(Beta_n*Pfirst.Unit()); - } + // // Neutron analysis + // if(Nebula->Charge.size()>0 && !Nebula->HasVeto()){ + // // Index of first neutron hit + // unsigned int first = Nebula->GetFirstHit(); + // TVector3 Pfirst = (Nebula->GetPos(first)-Vertex); + // double L = Pfirst.Mag(); + // double TSBT= (Vertex.Z()+7377.56)/(Beam_Beta*c_light); + // TOF_n = Nebula->TOF[first]-TSBT-TF13; + // Beta_n = (L/TOF_n)/NPUNITS::c_light; + // LVn.SetVectM(TVector3(0,0,0),mn); + // LVn.Boost(Beta_n*Pfirst.Unit()); + // } - // a full event - if(Beta_n&&Beta_f){ - He6.SetEnergyImpulsion(LVHe6); - n.SetEnergyImpulsion(LVn); - Erel = (LVHe6+LVn).Mag()-sumM; - } - // Calib////////////////////////////////////////////////////////////////// - /* static int count=0; - if(Minos->Delta_Vertex < 5 && FDC2->PosX-252.55>0&&FDC0->GetPos().X()>-10000 && FDC0->Dir.Z()>0.9 && Minos->Z_Vertex>0&& sqrt(Minos->X_Vertex*Minos->X_Vertex+Minos->Y_Vertex*Minos->Y_Vertex)<15){ - file << FDC0->GetPos().X() <<" " << FDC0->GetPos().Y() << " " << FDC0->GetPos().Z() <<" " ; - file << Minos->X_Vertex <<" " << Minos->Y_Vertex << " " << Minos->Z_Vertex << " " ; - file << FDC2->GetPos().X() <<" " << FDC2->GetPos().Y() << " " << FDC2->GetPos().Z() <<" " << FDC2->Dir.X() <<" " << FDC2->Dir.Y() << " " << FDC2->Dir.Z()<< endl; - count ++; - } - if(count>1000) - exit(1); - */ - /* static int count=0; - if(Minos->Delta_Vertex < 5 && sqrt(Minos->X_Vertex*Minos->X_Vertex+Minos->Y_Vertex*Minos->Y_Vertex)<15 && Minos->Z_Vertex>-4650){ - file << BDC1.X() <<" " << BDC1.Y()<< " " << BDC1.Z() <<" " ; - file << BDC2.X() <<" " << BDC2.Y()<< " " << BDC2.Z() <<" " ; - file << Minos->X_Vertex <<" " << Minos->Y_Vertex << " " << Minos->Z_Vertex << endl ; - count ++; - } - if(count>10000) - exit(1); - */ + // // a full event + // if(Beta_n&&Beta_f){ + // He6.SetEnergyImpulsion(LVHe4); + // n.SetEnergyImpulsion(LVn); + // Erel = (LVHe4+LVn).Mag()-sumM; + // } - } - } + // } + // } + + } //////////////////////////////////////////////////////////////////////////////// void Analysis::End(){ + + fileBDC.close(); + fileFDC.close(); + //free(Plastic); + //free(BDC); } //////////////////////////////////////////////////////////////////////////////// void Analysis::Clear(){ - Brho=-1000; - BDCX=-1000; - BDCY=-1000; - Beta_f=-1000; - Beta_n=-1000; - Beta_b=-1000; - X=Y=Z=-1000; - TOF_n=-1000; - Erel=-1000; + He8.SetBeta(0.5152); + + + MultiHit_PlasticBeam = false; + EventInCut = false; + + //Beam + Beam_Beta= -10000; + Beam_Gamma =-10000; + Beam_P = -10000; + Beam_KE = -10000; + Beam_KE_Tot=-10000; + // Beam_Boost.Clear(); + Beam_Px =-10000; + Beam_Py =-10000; + Beam_Pz = -10000; + Beam_Theta = -10000; + + //plastic 1 + TOF_F7F13_P1 = -10000; + Charge_F13_P1 = -10000; + Beta_F7F13_P1 = -10000; + + //plastic 2 + TOF_F7F13_P2 = -10000; + Charge_F13_P2 = -10000; + Beta_F7F13_P2 = -10000; + + //plastic 1 and 2 + TOF_F7F13_P1P2 = -1000; + Charge_F13_P1P2 = -1000; + Beta_F7F13_P1P2 = -1000; + Beam_Offset_TOF = -10000; + + //BDC1 and BDC2 + BDC1_X= BDC1_Y= BDC1_Z = -10000; + BDC2_X= BDC2_Y = BDC2_Z = -10000; + BDC1_Pos.Clear(); + BDC2_Pos.Clear(); + BDC1_PileUp = -10000; + BDC2_PileUp = -10000; + + Beam_ThetaX = Beam_ThetaY = -10000; + BDC_XVertex = BDC_YVertex = -10000; + + //Minos + Minos_Vertex.Clear(); + Minos_Vertex_X = -10000; + Minos_Vertex_Y =-10000; + Minos_Vertex_Z = -10000; + Minos_TrackNbr = -10000; + Minos_DistMin=-10000;// minimum distance between the 2 lines used in trajectory reconstruction + Minos_RVertex=-10000; + Minos_PathFragment.Clear(); + Minos_DistFragment = -10000; + Minos_In.Clear(); + Minos_InX = Minos_InY =-10000; + Minos_RIn = -10000; + Minos_Out.Clear(); + Minos_OutX = Minos_OutY =-10000; + Minos_ROut = -10000; + Minos_Delta.Clear(); + Minos_TwoProtonAngle = -10000; + Minos_Track1P0.Clear(); + Minos_Track1Dir.Clear(); + Minos_Vertex_InDet.Clear(); + Minos_Vertex_XInDet = -10000; + Minos_Vertex_YInDet = -10000; + Minos_Vertex_ZInDet = -10000; + + //FDC0 + FDC0_Pos.Clear(); + FDC0_X = FDC0_Y = FDC0_Z =-10000; + FDC0_PileUp = -10000; + + + //FDC2 + FDC2_Pos.Clear(); + FDC2_X = FDC2_Y = FDC2_Z =-10000; + FDC2_PileUp = -10000; + + //Hodoscope + HodoMult = -10000; + } //////////////////////////////////////////////////////////////////////////////// void Analysis::InitOutputBranch() { - RootOutput::getInstance()->GetTree()->Branch("Brho",&Brho,"Brho/D"); - RootOutput::getInstance()->GetTree()->Branch("BDCX",&BDCX,"BDCX/D"); - RootOutput::getInstance()->GetTree()->Branch("BDCY",&BDCY,"BDCY/D"); - RootOutput::getInstance()->GetTree()->Branch("X",&X,"X/D"); - RootOutput::getInstance()->GetTree()->Branch("Y",&Y,"Y/D"); - RootOutput::getInstance()->GetTree()->Branch("Z",&Z,"Z/D"); - RootOutput::getInstance()->GetTree()->Branch("Erel",&Erel,"Erel/D"); - RootOutput::getInstance()->GetTree()->Branch("Beta_f",&Beta_f,"Beta_f/D"); - RootOutput::getInstance()->GetTree()->Branch("Beta_n",&Beta_n,"Beta_n/D"); - RootOutput::getInstance()->GetTree()->Branch("Beta_b",&Beta_b,"Beta_b/D"); - RootOutput::getInstance()->GetTree()->Branch("TOF_n",&TOF_n,"TOF_n/D"); + + //Beam + RootOutput::getInstance()->GetTree()->Branch("Beam_Beta",&Beam_Beta,"Beam_Beta/D"); + RootOutput::getInstance()->GetTree()->Branch("MultiHit_PlasticBeam",&MultiHit_PlasticBeam,"MultiHit_PlasticBeam/D"); + RootOutput::getInstance()->GetTree()->Branch("Beam_Gamma",&Beam_Gamma,"Beam_Gamma/D"); + RootOutput::getInstance()->GetTree()->Branch("Beam_P",&Beam_P,"Beam_P/D"); + + // plastic 1 + // RootOutput::getInstance()->GetTree()->Branch("TOF_F7F13_P1",&TOF_F7F13_P1,"TOF_F7F13_P1/D"); + // RootOutput::getInstance()->GetTree()->Branch("Charge_F13_P1",&Charge_F13_P1,"Charge_F13_P1/D"); + // RootOutput::getInstance()->GetTree()->Branch("Beta_F7F13_P1",&Beta_F7F13_P1,"Beta_F7F13_P1/D"); + // plastic 2 + // RootOutput::getInstance()->GetTree()->Branch("TOF_F7F13_P2",&TOF_F7F13_P2,"TOF_F7F13_P2/D"); + // RootOutput::getInstance()->GetTree()->Branch("Charge_F13_P2",&Charge_F13_P2,"Charge_F13_P2/D"); + // RootOutput::getInstance()->GetTree()->Branch("Beta_F7F13_P2",&Beta_F7F13_P2,"Beta_F7F13_P2/D"); + + //plastic 1 and 2 + RootOutput::getInstance()->GetTree()->Branch("Beam_Offset_TOF",&Beam_Offset_TOF,"Beam_Offset_TOF/D"); + RootOutput::getInstance()->GetTree()->Branch("TOF_F7F13_P1P2",&TOF_F7F13_P1P2,"TOF_F7F13_P1P2/D"); + RootOutput::getInstance()->GetTree()->Branch("Charge_F13_P1P2",&Charge_F13_P1P2,"Charge_F13_P1P2/D"); + //RootOutput::getInstance()->GetTree()->Branch("Beta_F7F13_P1P2",&Beta_F7F13_P1P2,"Beta_F7F13_P1P2/D"); + + //Beam + RootOutput::getInstance()->GetTree()->Branch("Beam_Px",&Beam_Px,"Beam_Px/D"); + RootOutput::getInstance()->GetTree()->Branch("Beam_Py",&Beam_Py,"Beam_Py/D"); + RootOutput::getInstance()->GetTree()->Branch("Beam_Pz",&Beam_Pz,"Beam_Pz/D"); + + RootOutput::getInstance()->GetTree()->Branch("Beam_KE_Tot",&Beam_KE_Tot,"Beam_KE_Tot/D"); + RootOutput::getInstance()->GetTree()->Branch("Beam_KE",&Beam_KE,"Beam_KE/D"); // KE/u + + RootOutput::getInstance()->GetTree()->Branch("Beam_Theta",&Beam_Theta,"Beam_Theta/D"); + + //BDC1 et BDC2 + RootOutput::getInstance()->GetTree()->Branch("BDC1_X",&BDC1_X,"BDC1_X/D"); + RootOutput::getInstance()->GetTree()->Branch("BDC1_Y",&BDC1_Y,"BDC1_Y/D"); + RootOutput::getInstance()->GetTree()->Branch("BDC1_Z",&BDC1_Z,"BDC1_Z/D"); + + RootOutput::getInstance()->GetTree()->Branch("BDC2_X",&BDC2_X,"BDC2_X/D"); + RootOutput::getInstance()->GetTree()->Branch("BDC2_Y",&BDC2_Y,"BDC2_Y/D"); + RootOutput::getInstance()->GetTree()->Branch("BDC2_Z",&BDC2_Z,"BDC2_Z/D"); + + RootOutput::getInstance()->GetTree()->Branch("BDC1_PileUp",&BDC1_PileUp,"BDC1_PileUp/I"); + RootOutput::getInstance()->GetTree()->Branch("BDC2_PileUp",&BDC2_PileUp,"BDC2_PileUp/I"); + + RootOutput::getInstance()->GetTree()->Branch("Beam_ThetaX",&Beam_ThetaX,"Beam_ThetaX/D"); + RootOutput::getInstance()->GetTree()->Branch("Beam_ThetaY",&Beam_ThetaY,"Beam_ThetaY/D"); + + RootOutput::getInstance()->GetTree()->Branch("BDC_XVertex",&BDC_XVertex,"BDC_XVertex/D"); + RootOutput::getInstance()->GetTree()->Branch("BDC_YVertex",&BDC_YVertex,"BDC_YVertex/D"); + + //Minos + RootOutput::getInstance()->GetTree()->Branch("Minos_TrackNbr",&Minos_TrackNbr,"Minos_TrackNbr/I"); + RootOutput::getInstance()->GetTree()->Branch("Minos_Vertex_X",&Minos_Vertex_X,"Minos_Vertex_X/D"); + RootOutput::getInstance()->GetTree()->Branch("Minos_Vertex_Y",&Minos_Vertex_Y,"Minos_Vertex_Y/D"); + RootOutput::getInstance()->GetTree()->Branch("Minos_Vertex_Z",&Minos_Vertex_Z,"Minos_Vertex_Z/D"); + RootOutput::getInstance()->GetTree()->Branch("Minos_DistMin",&Minos_DistMin,"Minos_DistMin/D"); RootOutput::getInstance()->GetTree()->Branch("Minos_PathFragment",&Minos_PathFragment); + RootOutput::getInstance()->GetTree()->Branch("Minos_DistFragment",&Minos_DistFragment,"Minos_DistFragment/D"); + RootOutput::getInstance()->GetTree()->Branch("Minos_InX",&Minos_InX,"Minos_InX/D"); + RootOutput::getInstance()->GetTree()->Branch("Minos_InY",&Minos_InY,"Minos_InY/D"); + RootOutput::getInstance()->GetTree()->Branch("Minos_InZ",&Minos_InZ,"Minos_InZ/D"); + RootOutput::getInstance()->GetTree()->Branch("Minos_RIn",&Minos_RIn,"Minos_RIn/D"); + + RootOutput::getInstance()->GetTree()->Branch("Minos_RVertex",&Minos_RVertex,"Minos_RVertex/D"); + + RootOutput::getInstance()->GetTree()->Branch("Minos_Vertex_XInDet",&Minos_Vertex_XInDet,"Minos_Vertex_XInDet/D"); + RootOutput::getInstance()->GetTree()->Branch("Minos_Vertex_YInDet",&Minos_Vertex_YInDet,"Minos_Vertex_YInDet/D"); + RootOutput::getInstance()->GetTree()->Branch("Minos_Vertex_ZInDet",&Minos_Vertex_ZInDet,"Minos_Vertex_ZInDet/D"); + RootOutput::getInstance()->GetTree()->Branch("Minos_TwoProtonAngle",&Minos_TwoProtonAngle,"Minos_TwoProtonAngle/D"); + + RootOutput::getInstance()->GetTree()->Branch("Minos_OutX",&Minos_OutX,"Minos_OutX/D"); + RootOutput::getInstance()->GetTree()->Branch("Minos_OutY",&Minos_OutY,"Minos_OutY/D"); + RootOutput::getInstance()->GetTree()->Branch("Minos_OutZ",&Minos_OutZ,"Minos_OutZ/D"); + RootOutput::getInstance()->GetTree()->Branch("Minos_ROut",&Minos_ROut,"Minos_ROut/D"); + + //FDC0 + RootOutput::getInstance()->GetTree()->Branch("FDC0_X",&FDC0_X,"FDC0_X/D"); + RootOutput::getInstance()->GetTree()->Branch("FDC0_Y",&FDC0_Y,"FDC0_Y/D"); + RootOutput::getInstance()->GetTree()->Branch("FDC0_Z",&FDC0_Z,"FDC0_Z/D"); + RootOutput::getInstance()->GetTree()->Branch("FDC0_PileUp",&FDC0_PileUp,"FDC0_PileUp/I"); + + //FDC2 + RootOutput::getInstance()->GetTree()->Branch("FDC2_X",&FDC2_X,"FDC2_X/D"); + RootOutput::getInstance()->GetTree()->Branch("FDC2_Y",&FDC2_Y,"FDC2_Y/D"); + RootOutput::getInstance()->GetTree()->Branch("FDC2_Z",&FDC2_Z,"FDC2_Z/D"); + RootOutput::getInstance()->GetTree()->Branch("FDC2_PileUp",&FDC2_PileUp,"FDC2_PileUp/I"); + + //Hodoscope + RootOutput::getInstance()->GetTree()->Branch("HodoMult",&HodoMult,"HodoMult/I"); + + //Trigger RootOutput::getInstance()->GetTree()->Branch("Trigger",&Trigger,"Trigger/I"); -} +} + //////////////////////////////////////////////////////////////////////////////// void Analysis::InitInputBranch(){ - RootInput::getInstance()->GetChain()->SetBranchAddress("Trigger",&Trigger); + if(IsSimulation){ + RootInput::getInstance()->GetChain()->SetBranchAddress("InitialConditions",&Initial_Conditions); + } + if(!IsSimulation){ + RootInput::getInstance()->GetChain()->SetBranchAddress("Trigger",&Trigger); + } } + +//////////////////////////////////////////////////////////////////////////////// +void Analysis::FillAlignmentFiles(){ + cout << "////////////////WARNING: CONDITION ON MINOS Z_VERTEX TO CHECK//////////////////" << endl; + + fileFDC << FDC0->GetPos().X() <<" " << FDC0->GetPos().Y() << " " << FDC0->GetPos().Z() <<" " ; + fileFDC << Minos->X_Vertex <<" " << Minos->Y_Vertex << " " << Minos->Z_Vertex << " " ; + fileFDC << FDC2->GetPos().X() <<" " << FDC2->GetPos().Y() << " " << FDC2->GetPos().Z() <<" " << FDC2->Dir.X() <<" " << FDC2->Dir.Y() << " " << FDC2->Dir.Z()<< endl; + + TVector3 BDC1=BDC->GetPos(1); + TVector3 BDC2=BDC->GetPos(2); + fileBDC << BDC1.X() <<" " << BDC1.Y()<< " " << BDC1.Z() <<" " ; + fileBDC << BDC2.X() <<" " << BDC2.Y()<< " " << BDC2.Z() <<" " ; + fileBDC << Minos->X_Vertex <<" " << Minos->Y_Vertex << " " << Minos->Z_Vertex << endl ; + countAlignment++; + + /* + if(Minos->Delta_Vertex < 5 && FDC2->PosX-252.55>0 && FDC0->GetPos().X()>-10000 && FDC0->Dir.Z()>0.9 && Minos->Z_Vertex<-900 && sqrt(Minos->X_Vertex*Minos->X_Vertex+Minos->Y_Vertex*Minos->Y_Vertex)<15){ + fileFDC << FDC0->GetPos().X() <<" " << FDC0->GetPos().Y() << " " << FDC0->GetPos().Z() <<" " ; + fileFDC << Minos->X_Vertex <<" " << Minos->Y_Vertex << " " << Minos->Z_Vertex << " " ; + fileFDC << FDC2->GetPos().X() <<" " << FDC2->GetPos().Y() << " " << FDC2->GetPos().Z() <<" " << FDC2->Dir.X() <<" " << FDC2->Dir.Y() << " " << FDC2->Dir.Z()<< endl; + + TVector3 BDC1=BDC->GetPos(1); + TVector3 BDC2=BDC->GetPos(2); + fileBDC << BDC1.X() <<" " << BDC1.Y()<< " " << BDC1.Z() <<" " ; + fileBDC << BDC2.X() <<" " << BDC2.Y()<< " " << BDC2.Z() <<" " ; + fileBDC << Minos->X_Vertex <<" " << Minos->Y_Vertex << " " << Minos->Z_Vertex << endl ; + countAlignment++; + + } + */ + + + if(countAlignment>=countLimitAlignment) { + CreateAlignmentFile = false; + cout << "fin de creation fichier alignement" << endl; + } + +} + //////////////////////////////////////////////////////////////////////////////// // Construct Method to be pass to the AnalysisFactory // //////////////////////////////////////////////////////////////////////////////// diff --git a/Projects/S034/Analysis.h b/Projects/S034/Analysis.h index bb609b7e9ee6224fa8a0b13d45a86b5416a3aaa3..fb842e28a9800194af872973556912a3cd83b078 100644 --- a/Projects/S034/Analysis.h +++ b/Projects/S034/Analysis.h @@ -25,6 +25,7 @@ #include"NPEnergyLoss.h" #include"TMinosPhysics.h" #include"TNebulaPhysics.h" +#include"TNeuLANDPhysics.h" #include"TSamuraiBDCPhysics.h" #include"TSamuraiFDC0Physics.h" #include"TSamuraiFDC2Physics.h" @@ -32,49 +33,172 @@ #include"TBigRIPSPlasticPhysics.h" #include"SamuraiFieldMap.h" #include<fstream> + +#include"TInitialConditions.h" + +//Root +#include "TCutG.h" +#include "TFile.h" + class Analysis: public NPL::VAnalysis{ - public: - Analysis(); - ~Analysis(); + +public: + Analysis(); + ~Analysis(); - public: - void Init(); - void TreatEvent(); - void End(); +public: + void Init(); + void TreatEvent(); + void End(); - static NPL::VAnalysis* Construct(); + static NPL::VAnalysis* Construct(); + +private: // boolean + bool IsSimulation; + bool CreateAlignmentFile; + bool CompleteAnalysis; + bool EventInCut; - private: +private: //cut files + TCutG *cut_Beam ; + +private: //detector used in the analysis TBigRIPSPlasticPhysics* Plastic; TMinosPhysics* Minos; TNebulaPhysics* Nebula; + TNeuLANDPhysics* NeuLAND; TSamuraiBDCPhysics* BDC; TSamuraiFDC0Physics* FDC0; TSamuraiFDC2Physics* FDC2; TSamuraiHodoscopePhysics* Hodo; - + SamuraiFieldMap m_field ; -// ofstream file; - private: // output variable - double Brho,BDCX,BDCY,X,Y,Z,Erel; - double TOF_n; - double Beta_f; - double Beta_n; - double Beta_b; - int Trigger; - private: // Energy loss table - NPL::EnergyLoss FragmentTarget ; - NPL::Particle He4,He6,He8,n; - double mhe6; - double mn ; - double sumM; - - - - public: - void Clear(); - void InitOutputBranch(); - void InitInputBranch(); + + TInitialConditions* Initial_Conditions; + +private: //setup information + //setup + double LengthF7F13; + double TargetLength; + double FDC2Angle; + TVector3 MinosPosition; + +private: // Energy loss table + particles information + NPL::EnergyLoss FragmentTarget; + NPL::Particle He4,He6,He8,n; + double mHe8; + double mHe4; + double mhe6; + double mn ; + double sumM; + + +private: // output files and variables + + ///Files/// + ofstream fileBDC; + ofstream fileFDC; + int countAlignment; + int countLimitAlignment; + + + ///Variables/// + + //// Beam //// + + double MultiHit_PlasticBeam; + + double Beam_Gamma; + double Beam_P; + TVector3 Beam_Boost; + + + //plastic 1 + double Beta_F7F13_P1; + double Charge_F13_P1; + double TOF_F7F13_P1; + + + //plastic 2 + double Beta_F7F13_P2; + double Charge_F13_P2; + double TOF_F7F13_P2; + + // both plastic together + double Beta_F7F13_P1P2; + double Charge_F13_P1P2; + double TOF_F7F13_P1P2; + + //Beam + double Beam_Px, Beam_Py, Beam_Pz; + double Beam_KE_Tot; + double Beam_KE; + double Beam_Beta; + double Beam_Theta; + double Beam_Offset_TOF; + + //BDC1 and BDC2 + double BDC1_X,BDC1_Y, BDC1_Z; + double BDC2_X,BDC2_Y, BDC2_Z; + TVector3 BDC1_Pos, BDC2_Pos; + TVector3 BDCs_Dir; + int MultBDC; + int BDC1_PileUp, BDC2_PileUp; + + double Beam_ThetaX, Beam_ThetaY; + double BDC_XVertex, BDC_YVertex; + + //Minos + TVector3 Minos_Vertex; + double Minos_Vertex_X, Minos_Vertex_Y, Minos_Vertex_Z; + int Minos_TrackNbr; + double Minos_DistMin;// minimum distance between the 2 lines used in trajectory reconstruction + double Minos_RVertex; + TVector3 Minos_PathFragment; + double Minos_DistFragment; + TVector3 Minos_In; + double Minos_InX, Minos_InY, Minos_InZ; + double Minos_RIn; + TVector3 Minos_Out; + double Minos_OutX, Minos_OutY, Minos_OutZ; // to calculate fragment's path in target + double Minos_ROut; + double Minos_TwoProtonAngle; + TVector3 Minos_Delta, Minos_Track1P0, Minos_Track1Dir; + TVector3 Minos_Vertex_InDet; + double Minos_Vertex_XInDet; + double Minos_Vertex_YInDet; + double Minos_Vertex_ZInDet; + + + //FDC0 + TVector3 FDC0_Pos; + double FDC0_X, FDC0_Y,FDC0_Z; + int FDC0_PileUp; + + //Fragment + TVector3 Fragment_TrackDir; + + //FDC2 + TVector3 FDC2_Pos; + double FDC2_X, FDC2_Y,FDC2_Z; + int FDC2_PileUp; + + + //Hodoscope + // int + int HodoMult; + + //Trigger + int Trigger; + +public: + void Clear(); + void InitOutputBranch(); + void InitInputBranch(); + + void FillAlignmentFiles(); + void LoadCuts(); + }; #endif diff --git a/Projects/S034/Calibration/BDC/CalibBDC.cxx b/Projects/S034/Calibration/BDC/CalibBDC.cxx index fcd922caad74ead7bb7456b0e208234febc7b371..2fdf41985ac5337a5871c7f7072ae7c3d9dd9d85 100755 --- a/Projects/S034/Calibration/BDC/CalibBDC.cxx +++ b/Projects/S034/Calibration/BDC/CalibBDC.cxx @@ -61,7 +61,7 @@ void CalibBDC(){ /* BDC=2; */ /* NLayer = 14; */ -/* c->SetBranchStatus("SamuraiBDC2",true); */ +/* c->SetBranchStatus("SamuraiBDC",true); */ /* ofstream fout2(Form("CalibFiles/BDC2_Calib_%d.txt", run12)); */ /* inter = 10;// inter wire distance */ /* low=1200; */ diff --git a/Projects/S034/Calibration/BDC/CalibBDC1.cxx b/Projects/S034/Calibration/BDC/CalibBDC1.cxx new file mode 100755 index 0000000000000000000000000000000000000000..5cc19a9fbb4d400987034dc77296185457eb4d44 --- /dev/null +++ b/Projects/S034/Calibration/BDC/CalibBDC1.cxx @@ -0,0 +1,59 @@ +void CalibBDC(){ + + for(int runNbr =824; runNbr <= 824 ; runNbr++){ + + TChain* c = new TChain("RawTree"); + c->Add(Form("../../root/mrdc/run%d/run%d_SAMURAIBDC.root",runNbr,runNbr)); + c->SetBranchStatus("*",false); + + // BDC1 + int BDC=1; + int NLayer = 8; + c->SetBranchStatus("SamuraiBDC",true); + ofstream fout(Form("BDC%d_Calib_%d.txt",BDC, runNbr)); + double inter = 2.5;// inter wire distance / 2 + double low=1600; + double high=1900; + + cout <<"Calibrating BDC" << BDC << " run number : " << runNbr << endl; + + string cond; + + TF1* f = new TF1("sigmoid","[0]/(exp([1]*([2]-x))+1)"); + //TF1* f = new TF1("sigmoid","0*(x<[0])+(x-[0])*[1]*(x>[0]&&x<[2])+[3]*(x>[2])"); + + TH1D* h = new TH1D("h","h",1500,0,3000); + for(unsigned int i = 0 ; i < NLayer; i++){ + cond = Form("fBDC_LayerNbr==%d&&fBDC_Edge==0&&fBDC_Time>%f&&fBDC_Time<%f&&fBDC_Time@.size()>10&&fBDC_Time@.size()<100 &&fBDC_DetectorNbr==%d ",i,low,high,BDC); + c->Draw("fBDC_Time>>h",cond.c_str()); + TH1D* g = new TH1D(*h); + unsigned int size = h->GetNbinsX(); + for(unsigned int i = 0 ; i < size ; i++){ + g->SetBinContent(i,h->Integral(0,i)); + } + + //new TCanvas(); + //g->Draw(); + cout << g->GetMaximum() << endl; + f->SetParameter(0,g->GetMaximum()); + f->SetParameter(1,0.1); + f->SetParameter(2,1700); + f->SetParLimits(1,0,1); + f->SetParLimits(2,1600,1900); + + g->Fit(f); + // Renormalize the distribution to the maximum driftlength + f->SetParameter(0,inter); + double p0 = f->GetParameter(0); + double p1 = f->GetParameter(1); + double p2 = f->GetParameter(2); + //new TCanvas(); + //c->Draw(Form("%f/(exp(%f*(%f-(Time+ToT)))+1)>>hh(200,0,2.5)",p0,p1,p2),cond.c_str()); + fout << Form("BDC%d_L%d ",BDC,i) << p0 << " " << p1 << " " << p2 << endl; +// gPad->Update(); +// gPad->WaitPrimitive(); + } + fout.close(); + + } +} diff --git a/Projects/S034/Calibration/BDC/CalibBDC2.cxx b/Projects/S034/Calibration/BDC/CalibBDC2.cxx new file mode 100755 index 0000000000000000000000000000000000000000..149d7ca33d13441b09b436a80c858bd2fccd4e10 --- /dev/null +++ b/Projects/S034/Calibration/BDC/CalibBDC2.cxx @@ -0,0 +1,59 @@ +void CalibBDC(){ + + for(int runNbr =824; runNbr <= 824 ; runNbr++){ + + TChain* c = new TChain("RawTree"); + c->Add(Form("../../root/mrdc/run%d/run%d_SAMURAIBDC.root",runNbr,runNbr)); + c->SetBranchStatus("*",false); + + // BDC2 + int BDC=2; + int NLayer = 8; + c->SetBranchStatus("SamuraiBDC",true); + ofstream fout(Form("BDC%d_Calib_%d.txt",BDC, runNbr)); + double inter = 2.5;// inter wire distance / 2 + double low=1600; + double high=1900; + + cout <<"Calibrating BDC" << BDC << " run number : " << runNbr << endl; + + string cond; + + TF1* f = new TF1("sigmoid","[0]/(exp([1]*([2]-x))+1)"); + //TF1* f = new TF1("sigmoid","0*(x<[0])+(x-[0])*[1]*(x>[0]&&x<[2])+[3]*(x>[2])"); + + TH1D* h = new TH1D("h","h",1500,0,3000); + for(unsigned int i = 0 ; i < NLayer; i++){ + cond = Form("fBDC_LayerNbr==%d&&fBDC_Edge==0&&fBDC_Time>%f&&fBDC_Time<%f&&fBDC_Time@.size()>10&&fBDC_Time@.size()<100 &&fBDC_DetectorNbr==%d ",i,low,high,BDC); + c->Draw("fBDC_Time>>h",cond.c_str()); + TH1D* g = new TH1D(*h); + unsigned int size = h->GetNbinsX(); + for(unsigned int i = 0 ; i < size ; i++){ + g->SetBinContent(i,h->Integral(0,i)); + } + + //new TCanvas(); + //g->Draw(); + cout << g->GetMaximum() << endl; + f->SetParameter(0,g->GetMaximum()); + f->SetParameter(1,0.1); + f->SetParameter(2,1700); + f->SetParLimits(1,0,1); + f->SetParLimits(2,1600,1900); + + g->Fit(f); + // Renormalize the distribution to the maximum driftlength + f->SetParameter(0,inter); + double p0 = f->GetParameter(0); + double p1 = f->GetParameter(1); + double p2 = f->GetParameter(2); + //new TCanvas(); + //c->Draw(Form("%f/(exp(%f*(%f-(Time+ToT)))+1)>>hh(200,0,2.5)",p0,p1,p2),cond.c_str()); + fout << Form("BDC%d_L%d ",BDC,i) << p0 << " " << p1 << " " << p2 << endl; +// gPad->Update(); +// gPad->WaitPrimitive(); + } + fout.close(); + + } +} diff --git a/Projects/S034/Calibration/FDC/CalibFDC0.cxx b/Projects/S034/Calibration/FDC/CalibFDC0.cxx new file mode 100755 index 0000000000000000000000000000000000000000..197448a62d394790c5e9d8621eef2d8bf75bb7cc --- /dev/null +++ b/Projects/S034/Calibration/FDC/CalibFDC0.cxx @@ -0,0 +1,54 @@ +void CalibFDC0(){ + + for(int run8 =656; run8 <= 656; run8++){ + + // FDC ////////// + int FDC = 0; + int NLayer = 8; + double inter = 2.5;// inter wire distance/2 -> maximum driftlength + double low=1720; + double high=1820; + + TChain* c = new TChain("RawTree"); + c->Add(Form("../root/mrdc/run%d/run%d_SAMURAIFDC%i.root",run8,run8,FDC)); + c->SetBranchStatus("*",false); + c->SetBranchStatus("SamuraiFDC0",true); + + //ofstream fout(Form("FDC%i_Calib_%d.txt",FDC,run8)); + + cout <<"Calibrating FDC" << FDC << " run number : " << run8 << endl; + + string cond; + + TF1* f = new TF1("sigmoid","[0]/(exp([1]*([2]-x))+1)"); + //TF1* f = new TF1("sigmoid","0*(x<[0])+(x-[0])*[1]*(x>[0]&&x<[2])+[3]*(x>[2])"); + + TH1D* h = new TH1D("h","h",1500,0,3000); + for(unsigned int i = 0 ; i < NLayer-6; i++){ + cond = Form("fFDC%d_LayerNbr==%d&&fFDC%d_Edge==0&&fFDC%d_Time>%f&&fFDC%d_Time<%f&&fFDC%d_Time@.size()>10&&fFDC%d_Time@.size()<100",FDC,i,FDC,FDC,low,FDC,high,FDC,FDC); + c->Draw(Form("fFDC%d_Time>>h",FDC),cond.c_str()); + TH1D* g = new TH1D(*h); + unsigned int size = h->GetNbinsX(); + for(unsigned int i = 0 ; i < size ; i++){ + g->SetBinContent(i,h->Integral(0,i)); + } + new TCanvas(); + g->Draw(); + cout << g->GetMaximum() << endl; + f->SetParameter(0,g->GetMaximum()); + f->SetParameter(1,8e-3); + f->SetParameter(2,1500); + + g->Fit(f); + // Renormalize the distribution to 10 mm + f->SetParameter(0,inter); + double p0 = f->GetParameter(0); + double p1 = f->GetParameter(1); + double p2 = f->GetParameter(2); + //new TCanvas(); + //c->Draw(Form("%f/(exp(%f*(%f-(Time+ToT)))+1)>>hh(200,0,2.5)",p0,p1,p2),cond.c_str()); + //fout << Form("FDC%d_L%d ",FDC,i) << p0 << " " << p1 << " " << p2 << endl; + } + //fout.close(); + } +} diff --git a/Projects/S034/Calibration/FDC/CalibFDC2.cxx b/Projects/S034/Calibration/FDC/CalibFDC2.cxx new file mode 100755 index 0000000000000000000000000000000000000000..7e4b21aeedabec077f1ecb3a62cdd6d2555b107f --- /dev/null +++ b/Projects/S034/Calibration/FDC/CalibFDC2.cxx @@ -0,0 +1,59 @@ +void CalibFDC2(){ + + for(int run8 = 630; run8 <= 630 ; run8++){ + + + ///////////////// + // FDC2 + int FDC=2; + int NLayer = 14; + double inter = 10;// inter wire distance/2 -> maximum driftlength + double low=1200; + double high=1700; + //////////////// + auto c = new TChain("RawTree"); + c->Add(Form("../root/mrdc/run%d/run%d_SAMURAIFDC%i.root",run8,run8,FDC)); + c->SetBranchStatus("*",false); + c->SetBranchStatus("SamuraiFDC2",true); + + + //ofstream fout(Form("FDC%i_Calib_%d.txt",FDC,run8)); + + + cout <<"Calibrating FDC" << FDC << " run number : " << run8 << endl; + + string cond; + + TF1* f = new TF1("sigmoid","[0]/(exp([1]*([2]-x))+1)"); + //TF1* f = new TF1("sigmoid","0*(x<[0])+(x-[0])*[1]*(x>[0]&&x<[2])+[3]*(x>[2])"); + + TH1D* h = new TH1D("h","h",1500,0,3000); + for(unsigned int i = 0 ; i < NLayer; i++){ + cond = Form("fFDC%d_LayerNbr==%d&&fFDC%d_Edge==0&&fFDC%d_Time>%f&&fFDC%d_Time<%f&&fFDC%d_Time@.size()>10&&fFDC%d_Time@.size()<100",FDC,i,FDC,FDC,low,FDC,high,FDC,FDC); + c->Draw(Form("fFDC%d_Time>>h",FDC),cond.c_str()); + TH1D* g = new TH1D(*h); + unsigned int size = h->GetNbinsX(); + for(unsigned int i = 0 ; i < size ; i++){ + g->SetBinContent(i,h->Integral(0,i)); + } + //new TCanvas(); + //g->Draw(); + cout << g->GetMaximum() << endl; + f->SetParameter(0,g->GetMaximum()); + f->SetParameter(1,8e-3); + f->SetParameter(2,1500); + + g->Fit(f); + // Renormalize the distribution to 10 mm + f->SetParameter(0,inter); + double p0 = f->GetParameter(0); + double p1 = f->GetParameter(1); + double p2 = f->GetParameter(2); + //new TCanvas(); + //c->Draw(Form("%f/(exp(%f*(%f-(Time+ToT)))+1)>>hh(200,0,2.5)",p0,p1,p2),cond.c_str()); + fout << Form("FDC%d_L%d ",FDC,i) << p0 << " " << p1 << " " << p2 << endl; + } + fout.close(); + + } +} diff --git a/Projects/S034/Calibration/Pos/BDC.cxx b/Projects/S034/Calibration/Pos/BDC.cxx index bebc79d18e64ce1973b658c2d2f742624f7577c7..4efea05556d99b79e9a07093b60251283c6d9cdd 100644 --- a/Projects/S034/Calibration/Pos/BDC.cxx +++ b/Projects/S034/Calibration/Pos/BDC.cxx @@ -45,6 +45,16 @@ void LoadFile(){ } else { cout << "Success opening file" << endl; + + /* + int lineCount = 0; // Initializing a variable to count lines +std::string line; + while (std::getline(file, line)) { // Loop through each line in the file + lineCount++; // Incrementing line count for each line read + } + cout << lineCount << endl; + exit(1); + */ } double xm,ym,zm; @@ -59,7 +69,9 @@ void LoadFile(){ pos2.push_back(p2); posM.push_back(pM); } + cout << " Val " << pos1.size() << " Value Loaded" << endl; file.close(); + //exit(1); } //////////////////////////////////////////////////////////////////////////////// void BDC(){ @@ -88,11 +100,13 @@ void BDC(){ min->Minimize(); const double* x = min->X(); - cout << "X1 =" << x[0]<<endl; + cout <<"\033[0;31mX1 = " << x[0]<<endl; + // cout << "X1 =" << x[0]<<endl; cout << "Y1 =" << x[1]<<endl; cout << "Z1 =" << x[2]<<endl; cout << "X2 =" << x[3]<<endl; cout << "Y2 =" << x[4]<<endl; cout << "Z2 =" << x[5]<<endl; cout << "Minimum: " << devR(x) << endl; + cout << "\033[0m\n"; } diff --git a/Projects/S034/Calibration/Pos/FDC.cxx b/Projects/S034/Calibration/Pos/FDC.cxx index 0bf889b1c58fb8242ddf302a35683f3aa2170bc4..aa4764b368f34a458ad29cc667601b5810eb08d0 100644 --- a/Projects/S034/Calibration/Pos/FDC.cxx +++ b/Projects/S034/Calibration/Pos/FDC.cxx @@ -17,7 +17,7 @@ double devB(const double* parameter){ oM.Print(); o0.Print(); o2.Print(); - field.SetFDC2R(parameter[6]); + field.SetFDC2R(parameter[9]); static auto h = new TH1D("h","h", 1000,0,10); h->Reset(); for(unsigned int i = 0 ; i < size ; i++){ @@ -28,10 +28,11 @@ double devB(const double* parameter){ p2=*(pos2[i])+o2; d0=(p0-pM).Unit(); // p2.Print(); - if(d0.Z()>0.9) - h->Fill(field.FindBrho(p0,d0,p2,*dir2[i])); + h->Fill(field.FindBrho(p0,d0,p2,*dir2[i])); } - cout << h->GetStdDev() << " " << parameter[0] << endl; + //cout << h->GetStdDev() << " " << parameter[0] << endl; + //h->Draw(); + //gPad->Update(); return h->GetStdDev(); } //////////////////////////////////////////////////////////////////////////////// @@ -44,6 +45,14 @@ void LoadFile(){ } else { cout << "Success opening file" << endl; + /* + int lineCount = 0; // Initializing a variable to count lines +std::string line; + while (std::getline(file, line)) { // Loop through each line in the file + lineCount++; // Incrementing line count for each line read + } + cout << lineCount << endl; + */ } double xm,ym,zm; @@ -83,7 +92,7 @@ void FDC(){ double parameter[10]={40.6,0,0,-4657.39, 0, 0,-3372.07,-252.55,0,4123.47}; devB(parameter); - // min->SetLimitedVariable(0,"AM",parameter[0],1,-90,90); + //min->SetLimitedVariable(0,"AM",parameter[0],1,-90,90); min->SetFixedVariable(0,"AM",parameter[0]); min->SetLimitedVariable(1,"XM",parameter[1],1,-10,10); min->SetLimitedVariable(2,"YM",parameter[2],1,-10,10); @@ -106,15 +115,17 @@ void FDC(){ */ min->Minimize(); const double* x = min->X(); - cout << "AM =" << x[0]<<endl; - cout << "XM =" << x[1]<<endl; - cout << "YM =" << x[2]<<endl; - cout << "ZM =" << x[3]<<endl; - cout << "X0 =" << x[4]<<endl; - cout << "Y0 =" << x[5]<<endl; - cout << "Z0 =" << x[6]<<endl; - cout << "X2 =" << x[7]<<endl; - cout << "Y2 =" << x[8]<<endl; - cout << "Z2 =" << x[9]<<endl; + system("Color DE"); + cout <<"\033[0;31mAM = " << x[0]<<endl; + cout << "XM = " << x[1]<<endl; + cout << "YM = " << x[2]<<endl; + cout << "ZM = " << x[3]<<endl; + cout << "X0 = " << x[4]<<endl; + cout << "Y0 = " << x[5]<<endl; + cout << "Z0 = " << x[6]<<endl; + cout << "X2 = " << x[7]<<endl; + cout << "Y2 = " << x[8]<<endl; + cout << "Z2 = " << x[9]<<endl; cout << "Minimum: " << devB(x) << endl; + cout << "\033[0m\n"; } diff --git a/Projects/S034/PhysicsListOption.txt b/Projects/S034/PhysicsListOption.txt index 5a8ee25ad212625d67b030883117e7229e89d61f..a58e9877fdc190dd81adf4fe822f09e029220f71 100644 --- a/Projects/S034/PhysicsListOption.txt +++ b/Projects/S034/PhysicsListOption.txt @@ -9,5 +9,5 @@ OpticalPhysics 0 HadronPhysicsINCLXX 0 HadronPhysicsQGSP_BIC_HP 0 Decay 0 -DriftElectronPhysics 1 +DriftElectronPhysics 0 diff --git a/Projects/S034/db/NEBULA.xml b/Projects/S034/db/NEBULA.xml index 1a5e451d08ed9d6f24a4227c442bba4d7c55af75..84329e270c8b9dbbafe6fddf8f75e2acff0a55c5 100755 --- a/Projects/S034/db/NEBULA.xml +++ b/Projects/S034/db/NEBULA.xml @@ -1,36 +1,36 @@ <?xml version="1.0" encoding="UTF-8"?> <dataroot> <NEBULA> - <ID>1</ID> - <NAME>101</NAME> - <FPl>13</FPl> - <Layer>1</Layer> - <SubLayer>1</SubLayer> - <PosX>-1901.8</PosX> - <PosY>0</PosY> - <PosZ>14431.3</PosZ> - <TUCal>0.0656086</TUCal> - <TUOff>0</TUOff> - <TUSlw>39.763</TUSlw> - <QUCal>0.0278832</QUCal> - <QUPed>176.884</QUPed> - <TDCal>0.0671919</TDCal> - <TDOff>0</TDOff> - <TDSlw>40.7</TDSlw> - <QDCal>0.0278832</QDCal> - <QDPed>211.422</QDPed> - <DTCal>76.257</DTCal> - <DTOff>-51.3483</DTOff> - <TAveOff>-25.70746</TAveOff> - <tu_geo>11</tu_geo> - <tu_ch>0</tu_ch> - <qu_geo>21</qu_geo> - <qu_ch>0</qu_ch> - <td_geo>12</td_geo> - <td_ch>0</td_ch> - <qd_geo>22</qd_geo> - <qd_ch>0</qd_ch> - <Ignore>0</Ignore> +<ID>1</ID> +<NAME>101</NAME> +<FPl>13</FPl> +<Layer>1</Layer> +<SubLayer>1</SubLayer> +<PosX>-1901.8</PosX> +<PosY>0</PosY> +<PosZ>14431.3</PosZ> +<TUCal>0.0656086</TUCal> +<TUOff>0</TUOff> +<TUSlw>39.763</TUSlw> +<QUCal>0.0278832</QUCal> +<QUPed>176.884</QUPed> +<TDCal>0.0671919</TDCal> +<TDOff>0</TDOff> +<TDSlw>40.7</TDSlw> +<QDCal>0.0278832</QDCal> +<QDPed>211.422</QDPed> +<DTCal>76.257</DTCal> +<DTOff>-51.3483</DTOff> +<TAveOff>-25.70746</TAveOff> +<tu_geo>11</tu_geo> +<tu_ch>0</tu_ch> +<qu_geo>21</qu_geo> +<qu_ch>0</qu_ch> +<td_geo>12</td_geo> +<td_ch>0</td_ch> +<qd_geo>22</qd_geo> +<qd_ch>0</qd_ch> +<Ignore>0</Ignore> </NEBULA> <NEBULA> <ID>2</ID> @@ -4264,7 +4264,7 @@ <SubLayer>0</SubLayer> <PosX>-1522</PosX> <PosY>0</PosY> -<PosZ>15004.8</PosZ> +<PosZ>15024.8</PosZ> <TUCal>0.0676695</TUCal> <TUOff>0</TUOff> <TUSlw>40</TUSlw> @@ -4328,7 +4328,7 @@ <SubLayer>0</SubLayer> <PosX>-902</PosX> <PosY>0</PosY> -<PosZ>15004.8</PosZ> +<PosZ>15024.8</PosZ> <TUCal>0.0682021</TUCal> <TUOff>0</TUOff> <TUSlw>40</TUSlw> @@ -4392,7 +4392,7 @@ <SubLayer>0</SubLayer> <PosX>-282</PosX> <PosY>0</PosY> -<PosZ>15004.8</PosZ> +<PosZ>15024.8</PosZ> <TUCal>0.0679071</TUCal> <TUOff>0</TUOff> <TUSlw>40</TUSlw> @@ -4456,7 +4456,7 @@ <SubLayer>0</SubLayer> <PosX>338</PosX> <PosY>0</PosY> -<PosZ>15004.8</PosZ> +<PosZ>15024.8</PosZ> <TUCal>0.0676573</TUCal> <TUOff>0</TUOff> <TUSlw>40</TUSlw> @@ -4520,7 +4520,7 @@ <SubLayer>0</SubLayer> <PosX>958</PosX> <PosY>0</PosY> -<PosZ>15004.8</PosZ> +<PosZ>15024.8</PosZ> <TUCal>0.0686263</TUCal> <TUOff>0</TUOff> <TUSlw>40</TUSlw> @@ -4584,7 +4584,7 @@ <SubLayer>0</SubLayer> <PosX>1578</PosX> <PosY>0</PosY> -<PosZ>15004.8</PosZ> +<PosZ>15024.8</PosZ> <TUCal>0.0673654</TUCal> <TUOff>0</TUOff> <TUSlw>40</TUSlw> @@ -4608,6 +4608,7 @@ <qd_ch>27</qd_ch> <Ignore>0</Ignore> </NEBULA> +<!-- <NEBULA> <ID>145</ID> <NAME>NoUse1</NAME> @@ -5632,4 +5633,5 @@ <qd_ch>-1</qd_ch> <Ignore>0</Ignore> </NEBULA> +--> </dataroot> diff --git a/Projects/S034/db/NEULAND.xml b/Projects/S034/db/NEULAND.xml index f8a71a54023e0d7e71cba6b65298fb9797d6a0dc..a552f30defa241f33f40faeda51161ee9189b563 100755 --- a/Projects/S034/db/NEULAND.xml +++ b/Projects/S034/db/NEULAND.xml @@ -1,47 +1,51 @@ <?xml version="1.0" encoding="UTF-8"?> <dataroot> <NEULAND> - <ID>1</ID> - <NAME>NeuLANDPla0H-0</NAME> - <FPL>13</FPL> - <direction>H</direction> - <layer>0</layer> - <bar>0</bar> - <qcal0>1</qcal0> - <qped0>46</qped0> - <tdc0ns0>1178</tdc0ns0> - <tdc25ns0>3284</tdc25ns0> - <tdc0ns0_t17>1141</tdc0ns0_t17> - <tdc25ns0_t17>3281</tdc25ns0_t17> - <qcal1>1</qcal1> - <qped1>36</qped1> - <tdc0ns1>1203</tdc0ns1> - <tdc25ns1>3278</tdc25ns1> - <tdc0ns1_t17>1154</tdc0ns1_t17> - <tdc25ns1_t17>3276</tdc25ns1_t17> - <tdiff_offset>45.5521</tdiff_offset> - <sync_offset>-13.9147</sync_offset> - <vscint>8.37529</vscint> - <ediff_offset>1.01314</ediff_offset> - <esync_offset>0.0628646</esync_offset> - <att>358.252</att> - <crate0>1</crate0> - <module0>9</module0> - <channel0>11</channel0> - <sam0>6</sam0> - <gtb0>0</gtb0> - <crate1>4</crate1> - <module1>2</module1> - <channel1>1</channel1> - <sam1>5</sam1> - <gtb1>1</gtb1> - <zpos>11165</zpos> +<ID>1</ID> +<NAME>NeuLANDPla0H-0</NAME> +<FPL>13</FPL> +<direction>H</direction> +<SubLayer>1</SubLayer> +<layer>0</layer> +<bar>0</bar> +<qcal0>1</qcal0> +<qped0>46</qped0> +<tdc0ns0>1178</tdc0ns0> +<tdc25ns0>3284</tdc25ns0> +<tdc0ns0_t17>1141</tdc0ns0_t17> +<tdc25ns0_t17>3281</tdc25ns0_t17> +<qcal1>1</qcal1> +<qped1>36</qped1> +<tdc0ns1>1203</tdc0ns1> +<tdc25ns1>3278</tdc25ns1> +<tdc0ns1_t17>1154</tdc0ns1_t17> +<tdc25ns1_t17>3276</tdc25ns1_t17> +<tdiff_offset>45.5521</tdiff_offset> +<sync_offset>-13.9147</sync_offset> +<vscint>8.37529</vscint> +<ediff_offset>1.01314</ediff_offset> +<esync_offset>0.0628646</esync_offset> +<att>358.252</att> +<crate0>1</crate0> +<module0>9</module0> +<channel0>11</channel0> +<sam0>6</sam0> +<gtb0>0</gtb0> +<crate1>4</crate1> +<module1>2</module1> +<channel1>1</channel1> +<sam1>5</sam1> +<gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-1225</ypos> +<zpos>11165</zpos> </NEULAND> <NEULAND> <ID>2</ID> <NAME>NeuLANDPla0H-1</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>0</layer> <bar>1</bar> <qcal0>1</qcal0> @@ -72,6 +76,8 @@ <channel1>0</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-1175</ypos> <zpos>11165</zpos> </NEULAND> <NEULAND> @@ -79,6 +85,7 @@ <NAME>NeuLANDPla0H-2</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>0</layer> <bar>2</bar> <qcal0>1</qcal0> @@ -109,6 +116,8 @@ <channel1>15</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-1125</ypos> <zpos>11165</zpos> </NEULAND> <NEULAND> @@ -116,6 +125,7 @@ <NAME>NeuLANDPla0H-3</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>0</layer> <bar>3</bar> <qcal0>1</qcal0> @@ -146,6 +156,8 @@ <channel1>14</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-1075</ypos> <zpos>11165</zpos> </NEULAND> <NEULAND> @@ -153,6 +165,7 @@ <NAME>NeuLANDPla0H-4</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>0</layer> <bar>4</bar> <qcal0>1</qcal0> @@ -183,6 +196,8 @@ <channel1>13</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-1025</ypos> <zpos>11165</zpos> </NEULAND> <NEULAND> @@ -190,6 +205,7 @@ <NAME>NeuLANDPla0H-5</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>0</layer> <bar>5</bar> <qcal0>1</qcal0> @@ -220,6 +236,8 @@ <channel1>12</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-975</ypos> <zpos>11165</zpos> </NEULAND> <NEULAND> @@ -227,6 +245,7 @@ <NAME>NeuLANDPla0H-6</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>0</layer> <bar>6</bar> <qcal0>1</qcal0> @@ -257,6 +276,8 @@ <channel1>11</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-925</ypos> <zpos>11165</zpos> </NEULAND> <NEULAND> @@ -264,6 +285,7 @@ <NAME>NeuLANDPla0H-7</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>0</layer> <bar>7</bar> <qcal0>1</qcal0> @@ -294,6 +316,8 @@ <channel1>10</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-875</ypos> <zpos>11165</zpos> </NEULAND> <NEULAND> @@ -301,6 +325,7 @@ <NAME>NeuLANDPla0H-8</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>0</layer> <bar>8</bar> <qcal0>1</qcal0> @@ -331,6 +356,8 @@ <channel1>9</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-825</ypos> <zpos>11165</zpos> </NEULAND> <NEULAND> @@ -338,6 +365,7 @@ <NAME>NeuLANDPla0H-9</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>0</layer> <bar>9</bar> <qcal0>1</qcal0> @@ -368,6 +396,8 @@ <channel1>8</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-775</ypos> <zpos>11165</zpos> </NEULAND> <NEULAND> @@ -375,6 +405,7 @@ <NAME>NeuLANDPla0H-10</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>0</layer> <bar>10</bar> <qcal0>1</qcal0> @@ -405,6 +436,8 @@ <channel1>7</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-725</ypos> <zpos>11165</zpos> </NEULAND> <NEULAND> @@ -412,6 +445,7 @@ <NAME>NeuLANDPla0H-11</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>0</layer> <bar>11</bar> <qcal0>1</qcal0> @@ -442,6 +476,8 @@ <channel1>6</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-675</ypos> <zpos>11165</zpos> </NEULAND> <NEULAND> @@ -449,6 +485,7 @@ <NAME>NeuLANDPla0H-12</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>0</layer> <bar>12</bar> <qcal0>1</qcal0> @@ -479,6 +516,8 @@ <channel1>5</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-625</ypos> <zpos>11165</zpos> </NEULAND> <NEULAND> @@ -486,6 +525,7 @@ <NAME>NeuLANDPla0H-13</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>0</layer> <bar>13</bar> <qcal0>1</qcal0> @@ -516,6 +556,8 @@ <channel1>4</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-575</ypos> <zpos>11165</zpos> </NEULAND> <NEULAND> @@ -523,6 +565,7 @@ <NAME>NeuLANDPla0H-14</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>0</layer> <bar>14</bar> <qcal0>1</qcal0> @@ -553,6 +596,8 @@ <channel1>3</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-525</ypos> <zpos>11165</zpos> </NEULAND> <NEULAND> @@ -560,6 +605,7 @@ <NAME>NeuLANDPla0H-15</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>0</layer> <bar>15</bar> <qcal0>1</qcal0> @@ -590,6 +636,8 @@ <channel1>2</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-475</ypos> <zpos>11165</zpos> </NEULAND> <NEULAND> @@ -597,6 +645,7 @@ <NAME>NeuLANDPla0H-16</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>0</layer> <bar>16</bar> <qcal0>1</qcal0> @@ -627,6 +676,8 @@ <channel1>1</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-425</ypos> <zpos>11165</zpos> </NEULAND> <NEULAND> @@ -634,6 +685,7 @@ <NAME>NeuLANDPla0H-17</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>0</layer> <bar>17</bar> <qcal0>1</qcal0> @@ -664,6 +716,8 @@ <channel1>0</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-375</ypos> <zpos>11165</zpos> </NEULAND> <NEULAND> @@ -671,6 +725,7 @@ <NAME>NeuLANDPla0H-18</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>0</layer> <bar>18</bar> <qcal0>1</qcal0> @@ -701,6 +756,8 @@ <channel1>15</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-325</ypos> <zpos>11165</zpos> </NEULAND> <NEULAND> @@ -708,6 +765,7 @@ <NAME>NeuLANDPla0H-19</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>0</layer> <bar>19</bar> <qcal0>1</qcal0> @@ -738,6 +796,8 @@ <channel1>14</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-275</ypos> <zpos>11165</zpos> </NEULAND> <NEULAND> @@ -745,6 +805,7 @@ <NAME>NeuLANDPla0H-20</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>0</layer> <bar>20</bar> <qcal0>1</qcal0> @@ -775,6 +836,8 @@ <channel1>13</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-225</ypos> <zpos>11165</zpos> </NEULAND> <NEULAND> @@ -782,6 +845,7 @@ <NAME>NeuLANDPla0H-21</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>0</layer> <bar>21</bar> <qcal0>1</qcal0> @@ -812,6 +876,8 @@ <channel1>12</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-175</ypos> <zpos>11165</zpos> </NEULAND> <NEULAND> @@ -819,6 +885,7 @@ <NAME>NeuLANDPla0H-22</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>0</layer> <bar>22</bar> <qcal0>1</qcal0> @@ -849,6 +916,8 @@ <channel1>11</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-125</ypos> <zpos>11165</zpos> </NEULAND> <NEULAND> @@ -856,6 +925,7 @@ <NAME>NeuLANDPla0H-23</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>0</layer> <bar>23</bar> <qcal0>1</qcal0> @@ -886,6 +956,8 @@ <channel1>10</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-75</ypos> <zpos>11165</zpos> </NEULAND> <NEULAND> @@ -893,6 +965,7 @@ <NAME>NeuLANDPla0H-24</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>0</layer> <bar>24</bar> <qcal0>1</qcal0> @@ -923,6 +996,8 @@ <channel1>9</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-25</ypos> <zpos>11165</zpos> </NEULAND> <NEULAND> @@ -930,6 +1005,7 @@ <NAME>NeuLANDPla0H-25</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>0</layer> <bar>25</bar> <qcal0>1</qcal0> @@ -960,6 +1036,8 @@ <channel1>8</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>25</ypos> <zpos>11165</zpos> </NEULAND> <NEULAND> @@ -967,6 +1045,7 @@ <NAME>NeuLANDPla0H-26</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>0</layer> <bar>26</bar> <qcal0>1</qcal0> @@ -997,6 +1076,8 @@ <channel1>7</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>75</ypos> <zpos>11165</zpos> </NEULAND> <NEULAND> @@ -1004,6 +1085,7 @@ <NAME>NeuLANDPla0H-27</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>0</layer> <bar>27</bar> <qcal0>1</qcal0> @@ -1034,6 +1116,8 @@ <channel1>6</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>125</ypos> <zpos>11165</zpos> </NEULAND> <NEULAND> @@ -1041,6 +1125,7 @@ <NAME>NeuLANDPla0H-28</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>0</layer> <bar>28</bar> <qcal0>1</qcal0> @@ -1071,6 +1156,8 @@ <channel1>5</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>175</ypos> <zpos>11165</zpos> </NEULAND> <NEULAND> @@ -1078,6 +1165,7 @@ <NAME>NeuLANDPla0H-29</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>0</layer> <bar>29</bar> <qcal0>1</qcal0> @@ -1108,6 +1196,8 @@ <channel1>4</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>225</ypos> <zpos>11165</zpos> </NEULAND> <NEULAND> @@ -1115,6 +1205,7 @@ <NAME>NeuLANDPla0H-30</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>0</layer> <bar>30</bar> <qcal0>1</qcal0> @@ -1145,6 +1236,8 @@ <channel1>3</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>275</ypos> <zpos>11165</zpos> </NEULAND> <NEULAND> @@ -1152,6 +1245,7 @@ <NAME>NeuLANDPla0H-31</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>0</layer> <bar>31</bar> <qcal0>1</qcal0> @@ -1182,6 +1276,8 @@ <channel1>2</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>325</ypos> <zpos>11165</zpos> </NEULAND> <NEULAND> @@ -1189,6 +1285,7 @@ <NAME>NeuLANDPla0H-32</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>0</layer> <bar>32</bar> <qcal0>1</qcal0> @@ -1219,6 +1316,8 @@ <channel1>1</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>375</ypos> <zpos>11165</zpos> </NEULAND> <NEULAND> @@ -1226,6 +1325,7 @@ <NAME>NeuLANDPla0H-33</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>0</layer> <bar>33</bar> <qcal0>1</qcal0> @@ -1256,6 +1356,8 @@ <channel1>0</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>425</ypos> <zpos>11165</zpos> </NEULAND> <NEULAND> @@ -1263,6 +1365,7 @@ <NAME>NeuLANDPla0H-34</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>0</layer> <bar>34</bar> <qcal0>1</qcal0> @@ -1293,6 +1396,8 @@ <channel1>15</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>475</ypos> <zpos>11165</zpos> </NEULAND> <NEULAND> @@ -1300,6 +1405,7 @@ <NAME>NeuLANDPla0H-35</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>0</layer> <bar>35</bar> <qcal0>1</qcal0> @@ -1330,6 +1436,8 @@ <channel1>14</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>525</ypos> <zpos>11165</zpos> </NEULAND> <NEULAND> @@ -1337,6 +1445,7 @@ <NAME>NeuLANDPla0H-36</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>0</layer> <bar>36</bar> <qcal0>1</qcal0> @@ -1367,6 +1476,8 @@ <channel1>13</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>575</ypos> <zpos>11165</zpos> </NEULAND> <NEULAND> @@ -1374,6 +1485,7 @@ <NAME>NeuLANDPla0H-37</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>0</layer> <bar>37</bar> <qcal0>1</qcal0> @@ -1404,6 +1516,8 @@ <channel1>12</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>625</ypos> <zpos>11165</zpos> </NEULAND> <NEULAND> @@ -1411,6 +1525,7 @@ <NAME>NeuLANDPla0H-38</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>0</layer> <bar>38</bar> <qcal0>1</qcal0> @@ -1441,6 +1556,8 @@ <channel1>11</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>675</ypos> <zpos>11165</zpos> </NEULAND> <NEULAND> @@ -1448,6 +1565,7 @@ <NAME>NeuLANDPla0H-39</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>0</layer> <bar>39</bar> <qcal0>1</qcal0> @@ -1478,6 +1596,8 @@ <channel1>10</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>725</ypos> <zpos>11165</zpos> </NEULAND> <NEULAND> @@ -1485,6 +1605,7 @@ <NAME>NeuLANDPla0H-40</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>0</layer> <bar>40</bar> <qcal0>1</qcal0> @@ -1515,6 +1636,8 @@ <channel1>9</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>775</ypos> <zpos>11165</zpos> </NEULAND> <NEULAND> @@ -1522,6 +1645,7 @@ <NAME>NeuLANDPla0H-41</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>0</layer> <bar>41</bar> <qcal0>1</qcal0> @@ -1552,6 +1676,8 @@ <channel1>8</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>825</ypos> <zpos>11165</zpos> </NEULAND> <NEULAND> @@ -1559,6 +1685,7 @@ <NAME>NeuLANDPla0H-42</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>0</layer> <bar>42</bar> <qcal0>1</qcal0> @@ -1589,6 +1716,8 @@ <channel1>7</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>875</ypos> <zpos>11165</zpos> </NEULAND> <NEULAND> @@ -1596,6 +1725,7 @@ <NAME>NeuLANDPla0H-43</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>0</layer> <bar>43</bar> <qcal0>1</qcal0> @@ -1626,6 +1756,8 @@ <channel1>6</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>925</ypos> <zpos>11165</zpos> </NEULAND> <NEULAND> @@ -1633,6 +1765,7 @@ <NAME>NeuLANDPla0H-44</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>0</layer> <bar>44</bar> <qcal0>1</qcal0> @@ -1663,6 +1796,8 @@ <channel1>5</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>975</ypos> <zpos>11165</zpos> </NEULAND> <NEULAND> @@ -1670,6 +1805,7 @@ <NAME>NeuLANDPla0H-45</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>0</layer> <bar>45</bar> <qcal0>1</qcal0> @@ -1700,6 +1836,8 @@ <channel1>4</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>1025</ypos> <zpos>11165</zpos> </NEULAND> <NEULAND> @@ -1707,6 +1845,7 @@ <NAME>NeuLANDPla0H-46</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>0</layer> <bar>46</bar> <qcal0>1</qcal0> @@ -1737,6 +1876,8 @@ <channel1>3</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>1075</ypos> <zpos>11165</zpos> </NEULAND> <NEULAND> @@ -1744,6 +1885,7 @@ <NAME>NeuLANDPla0H-47</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>0</layer> <bar>47</bar> <qcal0>1</qcal0> @@ -1774,6 +1916,8 @@ <channel1>2</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>1125</ypos> <zpos>11165</zpos> </NEULAND> <NEULAND> @@ -1781,6 +1925,7 @@ <NAME>NeuLANDPla0H-48</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>0</layer> <bar>48</bar> <qcal0>1</qcal0> @@ -1811,6 +1956,8 @@ <channel1>1</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>1175</ypos> <zpos>11165</zpos> </NEULAND> <NEULAND> @@ -1818,6 +1965,7 @@ <NAME>NeuLANDPla0H-49</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>0</layer> <bar>49</bar> <qcal0>1</qcal0> @@ -1848,6 +1996,8 @@ <channel1>0</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>1225</ypos> <zpos>11165</zpos> </NEULAND> <NEULAND> @@ -1855,6 +2005,7 @@ <NAME>NeuLANDPla1V-0</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>1</layer> <bar>0</bar> <qcal0>1</qcal0> @@ -1885,6 +2036,8 @@ <channel1>9</channel1> <sam1>6</sam1> <gtb1>1</gtb1> +<xpos>-1225</xpos> +<ypos>0</ypos> <zpos>11215</zpos> </NEULAND> <NEULAND> @@ -1892,6 +2045,7 @@ <NAME>NeuLANDPla1V-1</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>1</layer> <bar>1</bar> <qcal0>1</qcal0> @@ -1922,6 +2076,8 @@ <channel1>8</channel1> <sam1>6</sam1> <gtb1>1</gtb1> +<xpos>-1175</xpos> +<ypos>0</ypos> <zpos>11215</zpos> </NEULAND> <NEULAND> @@ -1929,6 +2085,7 @@ <NAME>NeuLANDPla1V-2</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>1</layer> <bar>2</bar> <qcal0>1</qcal0> @@ -1959,6 +2116,8 @@ <channel1>7</channel1> <sam1>6</sam1> <gtb1>1</gtb1> +<xpos>-1125</xpos> +<ypos>0</ypos> <zpos>11215</zpos> </NEULAND> <NEULAND> @@ -1966,6 +2125,7 @@ <NAME>NeuLANDPla1V-3</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>1</layer> <bar>3</bar> <qcal0>1</qcal0> @@ -1996,6 +2156,8 @@ <channel1>6</channel1> <sam1>6</sam1> <gtb1>1</gtb1> +<xpos>-1075</xpos> +<ypos>0</ypos> <zpos>11215</zpos> </NEULAND> <NEULAND> @@ -2003,6 +2165,7 @@ <NAME>NeuLANDPla1V-4</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>1</layer> <bar>4</bar> <qcal0>1</qcal0> @@ -2033,6 +2196,8 @@ <channel1>5</channel1> <sam1>6</sam1> <gtb1>1</gtb1> +<xpos>-1025</xpos> +<ypos>0</ypos> <zpos>11215</zpos> </NEULAND> <NEULAND> @@ -2040,6 +2205,7 @@ <NAME>NeuLANDPla1V-5</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>1</layer> <bar>5</bar> <qcal0>1</qcal0> @@ -2070,6 +2236,8 @@ <channel1>4</channel1> <sam1>6</sam1> <gtb1>1</gtb1> +<xpos>-975</xpos> +<ypos>0</ypos> <zpos>11215</zpos> </NEULAND> <NEULAND> @@ -2077,6 +2245,7 @@ <NAME>NeuLANDPla1V-6</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>1</layer> <bar>6</bar> <qcal0>1</qcal0> @@ -2107,6 +2276,8 @@ <channel1>3</channel1> <sam1>6</sam1> <gtb1>1</gtb1> +<xpos>-925</xpos> +<ypos>0</ypos> <zpos>11215</zpos> </NEULAND> <NEULAND> @@ -2114,6 +2285,7 @@ <NAME>NeuLANDPla1V-7</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>1</layer> <bar>7</bar> <qcal0>1</qcal0> @@ -2144,6 +2316,8 @@ <channel1>2</channel1> <sam1>6</sam1> <gtb1>1</gtb1> +<xpos>-875</xpos> +<ypos>0</ypos> <zpos>11215</zpos> </NEULAND> <NEULAND> @@ -2151,6 +2325,7 @@ <NAME>NeuLANDPla1V-8</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>1</layer> <bar>8</bar> <qcal0>1</qcal0> @@ -2181,6 +2356,8 @@ <channel1>1</channel1> <sam1>6</sam1> <gtb1>1</gtb1> +<xpos>-825</xpos> +<ypos>0</ypos> <zpos>11215</zpos> </NEULAND> <NEULAND> @@ -2188,6 +2365,7 @@ <NAME>NeuLANDPla1V-9</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>1</layer> <bar>9</bar> <qcal0>1</qcal0> @@ -2218,6 +2396,8 @@ <channel1>0</channel1> <sam1>6</sam1> <gtb1>1</gtb1> +<xpos>-775</xpos> +<ypos>0</ypos> <zpos>11215</zpos> </NEULAND> <NEULAND> @@ -2225,6 +2405,7 @@ <NAME>NeuLANDPla1V-10</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>1</layer> <bar>10</bar> <qcal0>1</qcal0> @@ -2255,6 +2436,8 @@ <channel1>15</channel1> <sam1>6</sam1> <gtb1>1</gtb1> +<xpos>-725</xpos> +<ypos>0</ypos> <zpos>11215</zpos> </NEULAND> <NEULAND> @@ -2262,6 +2445,7 @@ <NAME>NeuLANDPla1V-11</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>1</layer> <bar>11</bar> <qcal0>1</qcal0> @@ -2292,6 +2476,8 @@ <channel1>14</channel1> <sam1>6</sam1> <gtb1>1</gtb1> +<xpos>-675</xpos> +<ypos>0</ypos> <zpos>11215</zpos> </NEULAND> <NEULAND> @@ -2299,6 +2485,7 @@ <NAME>NeuLANDPla1V-12</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>1</layer> <bar>12</bar> <qcal0>1</qcal0> @@ -2329,6 +2516,8 @@ <channel1>13</channel1> <sam1>6</sam1> <gtb1>1</gtb1> +<xpos>-625</xpos> +<ypos>0</ypos> <zpos>11215</zpos> </NEULAND> <NEULAND> @@ -2336,6 +2525,7 @@ <NAME>NeuLANDPla1V-13</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>1</layer> <bar>13</bar> <qcal0>1</qcal0> @@ -2366,6 +2556,8 @@ <channel1>12</channel1> <sam1>6</sam1> <gtb1>1</gtb1> +<xpos>-575</xpos> +<ypos>0</ypos> <zpos>11215</zpos> </NEULAND> <NEULAND> @@ -2373,6 +2565,7 @@ <NAME>NeuLANDPla1V-14</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>1</layer> <bar>14</bar> <qcal0>1</qcal0> @@ -2403,6 +2596,8 @@ <channel1>11</channel1> <sam1>6</sam1> <gtb1>1</gtb1> +<xpos>-525</xpos> +<ypos>0</ypos> <zpos>11215</zpos> </NEULAND> <NEULAND> @@ -2410,6 +2605,7 @@ <NAME>NeuLANDPla1V-15</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>1</layer> <bar>15</bar> <qcal0>1</qcal0> @@ -2440,6 +2636,8 @@ <channel1>10</channel1> <sam1>6</sam1> <gtb1>1</gtb1> +<xpos>-475</xpos> +<ypos>0</ypos> <zpos>11215</zpos> </NEULAND> <NEULAND> @@ -2447,6 +2645,7 @@ <NAME>NeuLANDPla1V-16</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>1</layer> <bar>16</bar> <qcal0>1</qcal0> @@ -2477,6 +2676,8 @@ <channel1>9</channel1> <sam1>6</sam1> <gtb1>1</gtb1> +<xpos>-425</xpos> +<ypos>0</ypos> <zpos>11215</zpos> </NEULAND> <NEULAND> @@ -2484,6 +2685,7 @@ <NAME>NeuLANDPla1V-17</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>1</layer> <bar>17</bar> <qcal0>1</qcal0> @@ -2514,6 +2716,8 @@ <channel1>8</channel1> <sam1>6</sam1> <gtb1>1</gtb1> +<xpos>-375</xpos> +<ypos>0</ypos> <zpos>11215</zpos> </NEULAND> <NEULAND> @@ -2521,6 +2725,7 @@ <NAME>NeuLANDPla1V-18</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>1</layer> <bar>18</bar> <qcal0>1</qcal0> @@ -2551,6 +2756,8 @@ <channel1>7</channel1> <sam1>5</sam1> <gtb1>0</gtb1> +<xpos>-325</xpos> +<ypos>0</ypos> <zpos>11215</zpos> </NEULAND> <NEULAND> @@ -2558,6 +2765,7 @@ <NAME>NeuLANDPla1V-19</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>1</layer> <bar>19</bar> <qcal0>1</qcal0> @@ -2588,6 +2796,8 @@ <channel1>6</channel1> <sam1>5</sam1> <gtb1>0</gtb1> +<xpos>-275</xpos> +<ypos>0</ypos> <zpos>11215</zpos> </NEULAND> <NEULAND> @@ -2595,6 +2805,7 @@ <NAME>NeuLANDPla1V-20</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>1</layer> <bar>20</bar> <qcal0>1</qcal0> @@ -2625,6 +2836,8 @@ <channel1>5</channel1> <sam1>5</sam1> <gtb1>0</gtb1> +<xpos>-225</xpos> +<ypos>0</ypos> <zpos>11215</zpos> </NEULAND> <NEULAND> @@ -2632,6 +2845,7 @@ <NAME>NeuLANDPla1V-21</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>1</layer> <bar>21</bar> <qcal0>1</qcal0> @@ -2662,6 +2876,8 @@ <channel1>4</channel1> <sam1>5</sam1> <gtb1>0</gtb1> +<xpos>-175</xpos> +<ypos>0</ypos> <zpos>11215</zpos> </NEULAND> <NEULAND> @@ -2669,6 +2885,7 @@ <NAME>NeuLANDPla1V-22</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>1</layer> <bar>22</bar> <qcal0>1</qcal0> @@ -2699,6 +2916,8 @@ <channel1>3</channel1> <sam1>5</sam1> <gtb1>0</gtb1> +<xpos>-125</xpos> +<ypos>0</ypos> <zpos>11215</zpos> </NEULAND> <NEULAND> @@ -2706,6 +2925,7 @@ <NAME>NeuLANDPla1V-23</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>1</layer> <bar>23</bar> <qcal0>1</qcal0> @@ -2736,6 +2956,8 @@ <channel1>2</channel1> <sam1>5</sam1> <gtb1>0</gtb1> +<xpos>-75</xpos> +<ypos>0</ypos> <zpos>11215</zpos> </NEULAND> <NEULAND> @@ -2743,6 +2965,7 @@ <NAME>NeuLANDPla1V-24</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>1</layer> <bar>24</bar> <qcal0>1</qcal0> @@ -2773,6 +2996,8 @@ <channel1>1</channel1> <sam1>5</sam1> <gtb1>0</gtb1> +<xpos>-25</xpos> +<ypos>0</ypos> <zpos>11215</zpos> </NEULAND> <NEULAND> @@ -2780,6 +3005,7 @@ <NAME>NeuLANDPla1V-25</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>1</layer> <bar>25</bar> <qcal0>1</qcal0> @@ -2810,6 +3036,8 @@ <channel1>0</channel1> <sam1>5</sam1> <gtb1>0</gtb1> +<xpos>25</xpos> +<ypos>0</ypos> <zpos>11215</zpos> </NEULAND> <NEULAND> @@ -2817,6 +3045,7 @@ <NAME>NeuLANDPla1V-26</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>1</layer> <bar>26</bar> <qcal0>1</qcal0> @@ -2847,6 +3076,8 @@ <channel1>15</channel1> <sam1>5</sam1> <gtb1>0</gtb1> +<xpos>75</xpos> +<ypos>0</ypos> <zpos>11215</zpos> </NEULAND> <NEULAND> @@ -2854,6 +3085,7 @@ <NAME>NeuLANDPla1V-27</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>1</layer> <bar>27</bar> <qcal0>1</qcal0> @@ -2884,6 +3116,8 @@ <channel1>14</channel1> <sam1>5</sam1> <gtb1>0</gtb1> +<xpos>125</xpos> +<ypos>0</ypos> <zpos>11215</zpos> </NEULAND> <NEULAND> @@ -2891,6 +3125,7 @@ <NAME>NeuLANDPla1V-28</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>1</layer> <bar>28</bar> <qcal0>1</qcal0> @@ -2921,6 +3156,8 @@ <channel1>13</channel1> <sam1>5</sam1> <gtb1>0</gtb1> +<xpos>175</xpos> +<ypos>0</ypos> <zpos>11215</zpos> </NEULAND> <NEULAND> @@ -2928,6 +3165,7 @@ <NAME>NeuLANDPla1V-29</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>1</layer> <bar>29</bar> <qcal0>1</qcal0> @@ -2958,6 +3196,8 @@ <channel1>12</channel1> <sam1>5</sam1> <gtb1>0</gtb1> +<xpos>225</xpos> +<ypos>0</ypos> <zpos>11215</zpos> </NEULAND> <NEULAND> @@ -2965,6 +3205,7 @@ <NAME>NeuLANDPla1V-30</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>1</layer> <bar>30</bar> <qcal0>1</qcal0> @@ -2995,6 +3236,8 @@ <channel1>15</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>275</xpos> +<ypos>0</ypos> <zpos>11215</zpos> </NEULAND> <NEULAND> @@ -3002,6 +3245,7 @@ <NAME>NeuLANDPla1V-31</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>1</layer> <bar>31</bar> <qcal0>1</qcal0> @@ -3032,6 +3276,8 @@ <channel1>14</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>325</xpos> +<ypos>0</ypos> <zpos>11215</zpos> </NEULAND> <NEULAND> @@ -3039,6 +3285,7 @@ <NAME>NeuLANDPla1V-32</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>1</layer> <bar>32</bar> <qcal0>1</qcal0> @@ -3069,6 +3316,8 @@ <channel1>13</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>375</xpos> +<ypos>0</ypos> <zpos>11215</zpos> </NEULAND> <NEULAND> @@ -3076,6 +3325,7 @@ <NAME>NeuLANDPla1V-33</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>1</layer> <bar>33</bar> <qcal0>1</qcal0> @@ -3106,6 +3356,8 @@ <channel1>12</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>425</xpos> +<ypos>0</ypos> <zpos>11215</zpos> </NEULAND> <NEULAND> @@ -3113,6 +3365,7 @@ <NAME>NeuLANDPla1V-34</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>1</layer> <bar>34</bar> <qcal0>1</qcal0> @@ -3143,6 +3396,8 @@ <channel1>11</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>475</xpos> +<ypos>0</ypos> <zpos>11215</zpos> </NEULAND> <NEULAND> @@ -3150,6 +3405,7 @@ <NAME>NeuLANDPla1V-35</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>1</layer> <bar>35</bar> <qcal0>1</qcal0> @@ -3180,6 +3436,8 @@ <channel1>10</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>525</xpos> +<ypos>0</ypos> <zpos>11215</zpos> </NEULAND> <NEULAND> @@ -3187,6 +3445,7 @@ <NAME>NeuLANDPla1V-36</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>1</layer> <bar>36</bar> <qcal0>1</qcal0> @@ -3217,6 +3476,8 @@ <channel1>9</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>575</xpos> +<ypos>0</ypos> <zpos>11215</zpos> </NEULAND> <NEULAND> @@ -3224,6 +3485,7 @@ <NAME>NeuLANDPla1V-37</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>1</layer> <bar>37</bar> <qcal0>1</qcal0> @@ -3254,6 +3516,8 @@ <channel1>8</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>625</xpos> +<ypos>0</ypos> <zpos>11215</zpos> </NEULAND> <NEULAND> @@ -3261,6 +3525,7 @@ <NAME>NeuLANDPla1V-38</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>1</layer> <bar>38</bar> <qcal0>1</qcal0> @@ -3291,6 +3556,8 @@ <channel1>7</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>675</xpos> +<ypos>0</ypos> <zpos>11215</zpos> </NEULAND> <NEULAND> @@ -3298,6 +3565,7 @@ <NAME>NeuLANDPla1V-39</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>1</layer> <bar>39</bar> <qcal0>1</qcal0> @@ -3328,6 +3596,8 @@ <channel1>6</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>725</xpos> +<ypos>0</ypos> <zpos>11215</zpos> </NEULAND> <NEULAND> @@ -3335,6 +3605,7 @@ <NAME>NeuLANDPla1V-40</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>1</layer> <bar>40</bar> <qcal0>1</qcal0> @@ -3365,6 +3636,8 @@ <channel1>5</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>775</xpos> +<ypos>0</ypos> <zpos>11215</zpos> </NEULAND> <NEULAND> @@ -3372,6 +3645,7 @@ <NAME>NeuLANDPla1V-41</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>1</layer> <bar>41</bar> <qcal0>1</qcal0> @@ -3402,6 +3676,8 @@ <channel1>4</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>825</xpos> +<ypos>0</ypos> <zpos>11215</zpos> </NEULAND> <NEULAND> @@ -3409,6 +3685,7 @@ <NAME>NeuLANDPla1V-42</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>1</layer> <bar>42</bar> <qcal0>1</qcal0> @@ -3439,6 +3716,8 @@ <channel1>3</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>875</xpos> +<ypos>0</ypos> <zpos>11215</zpos> </NEULAND> <NEULAND> @@ -3446,6 +3725,7 @@ <NAME>NeuLANDPla1V-43</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>1</layer> <bar>43</bar> <qcal0>1</qcal0> @@ -3476,6 +3756,8 @@ <channel1>2</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>925</xpos> +<ypos>0</ypos> <zpos>11215</zpos> </NEULAND> <NEULAND> @@ -3483,6 +3765,7 @@ <NAME>NeuLANDPla1V-44</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>1</layer> <bar>44</bar> <qcal0>1</qcal0> @@ -3513,6 +3796,8 @@ <channel1>1</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>975</xpos> +<ypos>0</ypos> <zpos>11215</zpos> </NEULAND> <NEULAND> @@ -3520,6 +3805,7 @@ <NAME>NeuLANDPla1V-45</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>1</layer> <bar>45</bar> <qcal0>1</qcal0> @@ -3550,6 +3836,8 @@ <channel1>0</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>1025</xpos> +<ypos>0</ypos> <zpos>11215</zpos> </NEULAND> <NEULAND> @@ -3557,6 +3845,7 @@ <NAME>NeuLANDPla1V-46</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>1</layer> <bar>46</bar> <qcal0>1</qcal0> @@ -3587,6 +3876,8 @@ <channel1>15</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>1075</xpos> +<ypos>0</ypos> <zpos>11215</zpos> </NEULAND> <NEULAND> @@ -3594,6 +3885,7 @@ <NAME>NeuLANDPla1V-47</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>1</layer> <bar>47</bar> <qcal0>1</qcal0> @@ -3624,6 +3916,8 @@ <channel1>14</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>1125</xpos> +<ypos>0</ypos> <zpos>11215</zpos> </NEULAND> <NEULAND> @@ -3631,6 +3925,7 @@ <NAME>NeuLANDPla1V-48</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>1</layer> <bar>48</bar> <qcal0>1</qcal0> @@ -3661,6 +3956,8 @@ <channel1>13</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>1175</xpos> +<ypos>0</ypos> <zpos>11215</zpos> </NEULAND> <NEULAND> @@ -3668,6 +3965,7 @@ <NAME>NeuLANDPla1V-49</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>1</layer> <bar>49</bar> <qcal0>1</qcal0> @@ -3698,6 +3996,8 @@ <channel1>12</channel1> <sam1>5</sam1> <gtb1>1</gtb1> +<xpos>1225</xpos> +<ypos>0</ypos> <zpos>11215</zpos> </NEULAND> <NEULAND> @@ -3705,6 +4005,7 @@ <NAME>NeuLANDPla2H-0</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>2</layer> <bar>0</bar> <qcal0>1</qcal0> @@ -3735,6 +4036,8 @@ <channel1>1</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-1225</ypos> <zpos>11265</zpos> </NEULAND> <NEULAND> @@ -3742,6 +4045,7 @@ <NAME>NeuLANDPla2H-1</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>2</layer> <bar>1</bar> <qcal0>1</qcal0> @@ -3772,6 +4076,8 @@ <channel1>0</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-1175</ypos> <zpos>11265</zpos> </NEULAND> <NEULAND> @@ -3779,6 +4085,7 @@ <NAME>NeuLANDPla2H-2</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>2</layer> <bar>2</bar> <qcal0>1</qcal0> @@ -3809,6 +4116,8 @@ <channel1>15</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-1125</ypos> <zpos>11265</zpos> </NEULAND> <NEULAND> @@ -3816,6 +4125,7 @@ <NAME>NeuLANDPla2H-3</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>2</layer> <bar>3</bar> <qcal0>1</qcal0> @@ -3846,6 +4156,8 @@ <channel1>14</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-1075</ypos> <zpos>11265</zpos> </NEULAND> <NEULAND> @@ -3853,6 +4165,7 @@ <NAME>NeuLANDPla2H-4</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>2</layer> <bar>4</bar> <qcal0>1</qcal0> @@ -3883,6 +4196,8 @@ <channel1>13</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-1025</ypos> <zpos>11265</zpos> </NEULAND> <NEULAND> @@ -3890,6 +4205,7 @@ <NAME>NeuLANDPla2H-5</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>2</layer> <bar>5</bar> <qcal0>1</qcal0> @@ -3920,6 +4236,8 @@ <channel1>12</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-975</ypos> <zpos>11265</zpos> </NEULAND> <NEULAND> @@ -3927,6 +4245,7 @@ <NAME>NeuLANDPla2H-6</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>2</layer> <bar>6</bar> <qcal0>1</qcal0> @@ -3957,6 +4276,8 @@ <channel1>11</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-925</ypos> <zpos>11265</zpos> </NEULAND> <NEULAND> @@ -3964,6 +4285,7 @@ <NAME>NeuLANDPla2H-7</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>2</layer> <bar>7</bar> <qcal0>1</qcal0> @@ -3994,6 +4316,8 @@ <channel1>10</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-875</ypos> <zpos>11265</zpos> </NEULAND> <NEULAND> @@ -4001,6 +4325,7 @@ <NAME>NeuLANDPla2H-8</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>2</layer> <bar>8</bar> <qcal0>1</qcal0> @@ -4031,6 +4356,8 @@ <channel1>9</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-825</ypos> <zpos>11265</zpos> </NEULAND> <NEULAND> @@ -4038,6 +4365,7 @@ <NAME>NeuLANDPla2H-9</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>2</layer> <bar>9</bar> <qcal0>1</qcal0> @@ -4068,6 +4396,8 @@ <channel1>8</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-775</ypos> <zpos>11265</zpos> </NEULAND> <NEULAND> @@ -4075,6 +4405,7 @@ <NAME>NeuLANDPla2H-10</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>2</layer> <bar>10</bar> <qcal0>1</qcal0> @@ -4105,6 +4436,8 @@ <channel1>7</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-725</ypos> <zpos>11265</zpos> </NEULAND> <NEULAND> @@ -4112,6 +4445,7 @@ <NAME>NeuLANDPla2H-11</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>2</layer> <bar>11</bar> <qcal0>1</qcal0> @@ -4142,6 +4476,8 @@ <channel1>6</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-675</ypos> <zpos>11265</zpos> </NEULAND> <NEULAND> @@ -4149,6 +4485,7 @@ <NAME>NeuLANDPla2H-12</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>2</layer> <bar>12</bar> <qcal0>1</qcal0> @@ -4179,6 +4516,8 @@ <channel1>5</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-625</ypos> <zpos>11265</zpos> </NEULAND> <NEULAND> @@ -4186,6 +4525,7 @@ <NAME>NeuLANDPla2H-13</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>2</layer> <bar>13</bar> <qcal0>1</qcal0> @@ -4216,6 +4556,8 @@ <channel1>4</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-575</ypos> <zpos>11265</zpos> </NEULAND> <NEULAND> @@ -4223,6 +4565,7 @@ <NAME>NeuLANDPla2H-14</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>2</layer> <bar>14</bar> <qcal0>1</qcal0> @@ -4253,6 +4596,8 @@ <channel1>3</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-525</ypos> <zpos>11265</zpos> </NEULAND> <NEULAND> @@ -4260,6 +4605,7 @@ <NAME>NeuLANDPla2H-15</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>2</layer> <bar>15</bar> <qcal0>1</qcal0> @@ -4290,6 +4636,8 @@ <channel1>2</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-475</ypos> <zpos>11265</zpos> </NEULAND> <NEULAND> @@ -4297,6 +4645,7 @@ <NAME>NeuLANDPla2H-16</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>2</layer> <bar>16</bar> <qcal0>1</qcal0> @@ -4327,6 +4676,8 @@ <channel1>1</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-425</ypos> <zpos>11265</zpos> </NEULAND> <NEULAND> @@ -4334,6 +4685,7 @@ <NAME>NeuLANDPla2H-17</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>2</layer> <bar>17</bar> <qcal0>1</qcal0> @@ -4364,6 +4716,8 @@ <channel1>0</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-375</ypos> <zpos>11265</zpos> </NEULAND> <NEULAND> @@ -4371,6 +4725,7 @@ <NAME>NeuLANDPla2H-18</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>2</layer> <bar>18</bar> <qcal0>1</qcal0> @@ -4401,6 +4756,8 @@ <channel1>15</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-325</ypos> <zpos>11265</zpos> </NEULAND> <NEULAND> @@ -4408,6 +4765,7 @@ <NAME>NeuLANDPla2H-19</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>2</layer> <bar>19</bar> <qcal0>1</qcal0> @@ -4438,6 +4796,8 @@ <channel1>14</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-275</ypos> <zpos>11265</zpos> </NEULAND> <NEULAND> @@ -4445,6 +4805,7 @@ <NAME>NeuLANDPla2H-20</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>2</layer> <bar>20</bar> <qcal0>1</qcal0> @@ -4475,6 +4836,8 @@ <channel1>13</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-225</ypos> <zpos>11265</zpos> </NEULAND> <NEULAND> @@ -4482,6 +4845,7 @@ <NAME>NeuLANDPla2H-21</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>2</layer> <bar>21</bar> <qcal0>1</qcal0> @@ -4512,6 +4876,8 @@ <channel1>12</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-175</ypos> <zpos>11265</zpos> </NEULAND> <NEULAND> @@ -4519,6 +4885,7 @@ <NAME>NeuLANDPla2H-22</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>2</layer> <bar>22</bar> <qcal0>1</qcal0> @@ -4549,6 +4916,8 @@ <channel1>11</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-125</ypos> <zpos>11265</zpos> </NEULAND> <NEULAND> @@ -4556,6 +4925,7 @@ <NAME>NeuLANDPla2H-23</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>2</layer> <bar>23</bar> <qcal0>1</qcal0> @@ -4586,6 +4956,8 @@ <channel1>10</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-75</ypos> <zpos>11265</zpos> </NEULAND> <NEULAND> @@ -4593,6 +4965,7 @@ <NAME>NeuLANDPla2H-24</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>2</layer> <bar>24</bar> <qcal0>1</qcal0> @@ -4623,6 +4996,8 @@ <channel1>9</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-25</ypos> <zpos>11265</zpos> </NEULAND> <NEULAND> @@ -4630,6 +5005,7 @@ <NAME>NeuLANDPla2H-25</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>2</layer> <bar>25</bar> <qcal0>1</qcal0> @@ -4660,6 +5036,8 @@ <channel1>8</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>25</ypos> <zpos>11265</zpos> </NEULAND> <NEULAND> @@ -4667,6 +5045,7 @@ <NAME>NeuLANDPla2H-26</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>2</layer> <bar>26</bar> <qcal0>1</qcal0> @@ -4697,6 +5076,8 @@ <channel1>7</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>75</ypos> <zpos>11265</zpos> </NEULAND> <NEULAND> @@ -4704,6 +5085,7 @@ <NAME>NeuLANDPla2H-27</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>2</layer> <bar>27</bar> <qcal0>1</qcal0> @@ -4734,6 +5116,8 @@ <channel1>6</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>125</ypos> <zpos>11265</zpos> </NEULAND> <NEULAND> @@ -4741,6 +5125,7 @@ <NAME>NeuLANDPla2H-28</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>2</layer> <bar>28</bar> <qcal0>1</qcal0> @@ -4771,6 +5156,8 @@ <channel1>5</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>175</ypos> <zpos>11265</zpos> </NEULAND> <NEULAND> @@ -4778,6 +5165,7 @@ <NAME>NeuLANDPla2H-29</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>2</layer> <bar>29</bar> <qcal0>1</qcal0> @@ -4808,6 +5196,8 @@ <channel1>4</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>225</ypos> <zpos>11265</zpos> </NEULAND> <NEULAND> @@ -4815,6 +5205,7 @@ <NAME>NeuLANDPla2H-30</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>2</layer> <bar>30</bar> <qcal0>1</qcal0> @@ -4845,6 +5236,8 @@ <channel1>10</channel1> <sam1>6</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>275</ypos> <zpos>11265</zpos> </NEULAND> <NEULAND> @@ -4852,6 +5245,7 @@ <NAME>NeuLANDPla2H-31</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>2</layer> <bar>31</bar> <qcal0>1</qcal0> @@ -4882,6 +5276,8 @@ <channel1>2</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>325</ypos> <zpos>11265</zpos> </NEULAND> <NEULAND> @@ -4889,6 +5285,7 @@ <NAME>NeuLANDPla2H-32</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>2</layer> <bar>32</bar> <qcal0>1</qcal0> @@ -4919,6 +5316,8 @@ <channel1>1</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>375</ypos> <zpos>11265</zpos> </NEULAND> <NEULAND> @@ -4926,6 +5325,7 @@ <NAME>NeuLANDPla2H-33</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>2</layer> <bar>33</bar> <qcal0>1</qcal0> @@ -4956,6 +5356,8 @@ <channel1>0</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>425</ypos> <zpos>11265</zpos> </NEULAND> <NEULAND> @@ -4963,6 +5365,7 @@ <NAME>NeuLANDPla2H-34</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>2</layer> <bar>34</bar> <qcal0>1</qcal0> @@ -4993,6 +5396,8 @@ <channel1>15</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>475</ypos> <zpos>11265</zpos> </NEULAND> <NEULAND> @@ -5000,6 +5405,7 @@ <NAME>NeuLANDPla2H-35</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>2</layer> <bar>35</bar> <qcal0>1</qcal0> @@ -5030,6 +5436,8 @@ <channel1>14</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>525</ypos> <zpos>11265</zpos> </NEULAND> <NEULAND> @@ -5037,6 +5445,7 @@ <NAME>NeuLANDPla2H-36</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>2</layer> <bar>36</bar> <qcal0>1</qcal0> @@ -5067,6 +5476,8 @@ <channel1>13</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>575</ypos> <zpos>11265</zpos> </NEULAND> <NEULAND> @@ -5074,6 +5485,7 @@ <NAME>NeuLANDPla2H-37</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>2</layer> <bar>37</bar> <qcal0>1</qcal0> @@ -5104,6 +5516,8 @@ <channel1>12</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>625</ypos> <zpos>11265</zpos> </NEULAND> <NEULAND> @@ -5111,6 +5525,7 @@ <NAME>NeuLANDPla2H-38</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>2</layer> <bar>38</bar> <qcal0>1</qcal0> @@ -5141,6 +5556,8 @@ <channel1>11</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>675</ypos> <zpos>11265</zpos> </NEULAND> <NEULAND> @@ -5148,6 +5565,7 @@ <NAME>NeuLANDPla2H-39</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>2</layer> <bar>39</bar> <qcal0>1</qcal0> @@ -5178,6 +5596,8 @@ <channel1>10</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>725</ypos> <zpos>11265</zpos> </NEULAND> <NEULAND> @@ -5185,6 +5605,7 @@ <NAME>NeuLANDPla2H-40</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>2</layer> <bar>40</bar> <qcal0>1</qcal0> @@ -5215,6 +5636,8 @@ <channel1>9</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>775</ypos> <zpos>11265</zpos> </NEULAND> <NEULAND> @@ -5222,6 +5645,7 @@ <NAME>NeuLANDPla2H-41</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>2</layer> <bar>41</bar> <qcal0>1</qcal0> @@ -5252,6 +5676,8 @@ <channel1>8</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>825</ypos> <zpos>11265</zpos> </NEULAND> <NEULAND> @@ -5259,6 +5685,7 @@ <NAME>NeuLANDPla2H-42</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>2</layer> <bar>42</bar> <qcal0>1</qcal0> @@ -5289,6 +5716,8 @@ <channel1>7</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>875</ypos> <zpos>11265</zpos> </NEULAND> <NEULAND> @@ -5296,6 +5725,7 @@ <NAME>NeuLANDPla2H-43</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>2</layer> <bar>43</bar> <qcal0>1</qcal0> @@ -5326,6 +5756,8 @@ <channel1>6</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>925</ypos> <zpos>11265</zpos> </NEULAND> <NEULAND> @@ -5333,6 +5765,7 @@ <NAME>NeuLANDPla2H-44</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>2</layer> <bar>44</bar> <qcal0>1</qcal0> @@ -5363,6 +5796,8 @@ <channel1>5</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>975</ypos> <zpos>11265</zpos> </NEULAND> <NEULAND> @@ -5370,6 +5805,7 @@ <NAME>NeuLANDPla2H-45</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>2</layer> <bar>45</bar> <qcal0>1</qcal0> @@ -5400,6 +5836,8 @@ <channel1>4</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>1025</ypos> <zpos>11265</zpos> </NEULAND> <NEULAND> @@ -5407,6 +5845,7 @@ <NAME>NeuLANDPla2H-46</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>2</layer> <bar>46</bar> <qcal0>1</qcal0> @@ -5437,6 +5876,8 @@ <channel1>3</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>1075</ypos> <zpos>11265</zpos> </NEULAND> <NEULAND> @@ -5444,6 +5885,7 @@ <NAME>NeuLANDPla2H-47</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>2</layer> <bar>47</bar> <qcal0>1</qcal0> @@ -5474,6 +5916,8 @@ <channel1>2</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>1125</ypos> <zpos>11265</zpos> </NEULAND> <NEULAND> @@ -5481,6 +5925,7 @@ <NAME>NeuLANDPla2H-48</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>2</layer> <bar>48</bar> <qcal0>1</qcal0> @@ -5511,6 +5956,8 @@ <channel1>1</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>1175</ypos> <zpos>11265</zpos> </NEULAND> <NEULAND> @@ -5518,6 +5965,7 @@ <NAME>NeuLANDPla2H-49</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>2</layer> <bar>49</bar> <qcal0>1</qcal0> @@ -5548,6 +5996,8 @@ <channel1>0</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>1225</ypos> <zpos>11265</zpos> </NEULAND> <NEULAND> @@ -5555,6 +6005,7 @@ <NAME>NeuLANDPla3V-0</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>3</layer> <bar>0</bar> <qcal0>1</qcal0> @@ -5585,6 +6036,8 @@ <channel1>9</channel1> <sam1>6</sam1> <gtb1>1</gtb1> +<xpos>-1225</xpos> +<ypos>0</ypos> <zpos>11315</zpos> </NEULAND> <NEULAND> @@ -5592,6 +6045,7 @@ <NAME>NeuLANDPla3V-1</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>3</layer> <bar>1</bar> <qcal0>1</qcal0> @@ -5622,6 +6076,8 @@ <channel1>8</channel1> <sam1>6</sam1> <gtb1>1</gtb1> +<xpos>-1175</xpos> +<ypos>0</ypos> <zpos>11315</zpos> </NEULAND> <NEULAND> @@ -5629,6 +6085,7 @@ <NAME>NeuLANDPla3V-2</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>3</layer> <bar>2</bar> <qcal0>1</qcal0> @@ -5659,6 +6116,8 @@ <channel1>7</channel1> <sam1>6</sam1> <gtb1>1</gtb1> +<xpos>-1125</xpos> +<ypos>0</ypos> <zpos>11315</zpos> </NEULAND> <NEULAND> @@ -5666,6 +6125,7 @@ <NAME>NeuLANDPla3V-3</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>3</layer> <bar>3</bar> <qcal0>1</qcal0> @@ -5696,6 +6156,8 @@ <channel1>6</channel1> <sam1>6</sam1> <gtb1>1</gtb1> +<xpos>-1075</xpos> +<ypos>0</ypos> <zpos>11315</zpos> </NEULAND> <NEULAND> @@ -5703,6 +6165,7 @@ <NAME>NeuLANDPla3V-4</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>3</layer> <bar>4</bar> <qcal0>1</qcal0> @@ -5733,6 +6196,8 @@ <channel1>5</channel1> <sam1>6</sam1> <gtb1>1</gtb1> +<xpos>-1025</xpos> +<ypos>0</ypos> <zpos>11315</zpos> </NEULAND> <NEULAND> @@ -5740,6 +6205,7 @@ <NAME>NeuLANDPla3V-5</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>3</layer> <bar>5</bar> <qcal0>1</qcal0> @@ -5770,6 +6236,8 @@ <channel1>4</channel1> <sam1>6</sam1> <gtb1>1</gtb1> +<xpos>-975</xpos> +<ypos>0</ypos> <zpos>11315</zpos> </NEULAND> <NEULAND> @@ -5777,6 +6245,7 @@ <NAME>NeuLANDPla3V-6</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>3</layer> <bar>6</bar> <qcal0>1</qcal0> @@ -5807,6 +6276,8 @@ <channel1>3</channel1> <sam1>6</sam1> <gtb1>1</gtb1> +<xpos>-925</xpos> +<ypos>0</ypos> <zpos>11315</zpos> </NEULAND> <NEULAND> @@ -5814,6 +6285,7 @@ <NAME>NeuLANDPla3V-7</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>3</layer> <bar>7</bar> <qcal0>1</qcal0> @@ -5844,6 +6316,8 @@ <channel1>2</channel1> <sam1>6</sam1> <gtb1>1</gtb1> +<xpos>-875</xpos> +<ypos>0</ypos> <zpos>11315</zpos> </NEULAND> <NEULAND> @@ -5851,6 +6325,7 @@ <NAME>NeuLANDPla3V-8</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>3</layer> <bar>8</bar> <qcal0>1</qcal0> @@ -5881,6 +6356,8 @@ <channel1>1</channel1> <sam1>6</sam1> <gtb1>1</gtb1> +<xpos>-825</xpos> +<ypos>0</ypos> <zpos>11315</zpos> </NEULAND> <NEULAND> @@ -5888,6 +6365,7 @@ <NAME>NeuLANDPla3V-9</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>3</layer> <bar>9</bar> <qcal0>1</qcal0> @@ -5918,6 +6396,8 @@ <channel1>0</channel1> <sam1>6</sam1> <gtb1>1</gtb1> +<xpos>-775</xpos> +<ypos>0</ypos> <zpos>11315</zpos> </NEULAND> <NEULAND> @@ -5925,6 +6405,7 @@ <NAME>NeuLANDPla3V-10</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>3</layer> <bar>10</bar> <qcal0>1</qcal0> @@ -5955,6 +6436,8 @@ <channel1>15</channel1> <sam1>6</sam1> <gtb1>1</gtb1> +<xpos>-725</xpos> +<ypos>0</ypos> <zpos>11315</zpos> </NEULAND> <NEULAND> @@ -5962,6 +6445,7 @@ <NAME>NeuLANDPla3V-11</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>3</layer> <bar>11</bar> <qcal0>1</qcal0> @@ -5992,6 +6476,8 @@ <channel1>14</channel1> <sam1>6</sam1> <gtb1>1</gtb1> +<xpos>-675</xpos> +<ypos>0</ypos> <zpos>11315</zpos> </NEULAND> <NEULAND> @@ -5999,6 +6485,7 @@ <NAME>NeuLANDPla3V-12</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>3</layer> <bar>12</bar> <qcal0>1</qcal0> @@ -6029,6 +6516,8 @@ <channel1>13</channel1> <sam1>6</sam1> <gtb1>1</gtb1> +<xpos>-625</xpos> +<ypos>0</ypos> <zpos>11315</zpos> </NEULAND> <NEULAND> @@ -6036,6 +6525,7 @@ <NAME>NeuLANDPla3V-13</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>3</layer> <bar>13</bar> <qcal0>1</qcal0> @@ -6066,6 +6556,8 @@ <channel1>12</channel1> <sam1>6</sam1> <gtb1>1</gtb1> +<xpos>-575</xpos> +<ypos>0</ypos> <zpos>11315</zpos> </NEULAND> <NEULAND> @@ -6073,6 +6565,7 @@ <NAME>NeuLANDPla3V-14</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>3</layer> <bar>14</bar> <qcal0>1</qcal0> @@ -6103,6 +6596,8 @@ <channel1>11</channel1> <sam1>6</sam1> <gtb1>1</gtb1> +<xpos>-525</xpos> +<ypos>0</ypos> <zpos>11315</zpos> </NEULAND> <NEULAND> @@ -6110,6 +6605,7 @@ <NAME>NeuLANDPla3V-15</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>3</layer> <bar>15</bar> <qcal0>1</qcal0> @@ -6140,6 +6636,8 @@ <channel1>10</channel1> <sam1>6</sam1> <gtb1>1</gtb1> +<xpos>-475</xpos> +<ypos>0</ypos> <zpos>11315</zpos> </NEULAND> <NEULAND> @@ -6147,6 +6645,7 @@ <NAME>NeuLANDPla3V-16</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>3</layer> <bar>16</bar> <qcal0>1</qcal0> @@ -6177,6 +6676,8 @@ <channel1>9</channel1> <sam1>6</sam1> <gtb1>1</gtb1> +<xpos>-425</xpos> +<ypos>0</ypos> <zpos>11315</zpos> </NEULAND> <NEULAND> @@ -6184,6 +6685,7 @@ <NAME>NeuLANDPla3V-17</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>3</layer> <bar>17</bar> <qcal0>1</qcal0> @@ -6214,6 +6716,8 @@ <channel1>8</channel1> <sam1>6</sam1> <gtb1>1</gtb1> +<xpos>-375</xpos> +<ypos>0</ypos> <zpos>11315</zpos> </NEULAND> <NEULAND> @@ -6221,6 +6725,7 @@ <NAME>NeuLANDPla3V-18</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>3</layer> <bar>18</bar> <qcal0>1</qcal0> @@ -6251,6 +6756,8 @@ <channel1>7</channel1> <sam1>6</sam1> <gtb1>1</gtb1> +<xpos>-325</xpos> +<ypos>0</ypos> <zpos>11315</zpos> </NEULAND> <NEULAND> @@ -6258,6 +6765,7 @@ <NAME>NeuLANDPla3V-19</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>3</layer> <bar>19</bar> <qcal0>1</qcal0> @@ -6288,6 +6796,8 @@ <channel1>6</channel1> <sam1>6</sam1> <gtb1>1</gtb1> +<xpos>-275</xpos> +<ypos>0</ypos> <zpos>11315</zpos> </NEULAND> <NEULAND> @@ -6295,6 +6805,7 @@ <NAME>NeuLANDPla3V-20</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>3</layer> <bar>20</bar> <qcal0>1</qcal0> @@ -6325,6 +6836,8 @@ <channel1>5</channel1> <sam1>6</sam1> <gtb1>1</gtb1> +<xpos>-225</xpos> +<ypos>0</ypos> <zpos>11315</zpos> </NEULAND> <NEULAND> @@ -6332,6 +6845,7 @@ <NAME>NeuLANDPla3V-21</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>3</layer> <bar>21</bar> <qcal0>1</qcal0> @@ -6362,6 +6876,8 @@ <channel1>4</channel1> <sam1>6</sam1> <gtb1>1</gtb1> +<xpos>-175</xpos> +<ypos>0</ypos> <zpos>11315</zpos> </NEULAND> <NEULAND> @@ -6369,6 +6885,7 @@ <NAME>NeuLANDPla3V-22</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>3</layer> <bar>22</bar> <qcal0>1</qcal0> @@ -6399,6 +6916,8 @@ <channel1>3</channel1> <sam1>6</sam1> <gtb1>1</gtb1> +<xpos>-125</xpos> +<ypos>0</ypos> <zpos>11315</zpos> </NEULAND> <NEULAND> @@ -6406,6 +6925,7 @@ <NAME>NeuLANDPla3V-23</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>3</layer> <bar>23</bar> <qcal0>1</qcal0> @@ -6436,6 +6956,8 @@ <channel1>2</channel1> <sam1>6</sam1> <gtb1>1</gtb1> +<xpos>-75</xpos> +<ypos>0</ypos> <zpos>11315</zpos> </NEULAND> <NEULAND> @@ -6443,6 +6965,7 @@ <NAME>NeuLANDPla3V-24</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>3</layer> <bar>24</bar> <qcal0>1</qcal0> @@ -6473,6 +6996,8 @@ <channel1>1</channel1> <sam1>6</sam1> <gtb1>1</gtb1> +<xpos>-25</xpos> +<ypos>0</ypos> <zpos>11315</zpos> </NEULAND> <NEULAND> @@ -6480,6 +7005,7 @@ <NAME>NeuLANDPla3V-25</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>3</layer> <bar>25</bar> <qcal0>1</qcal0> @@ -6510,6 +7036,8 @@ <channel1>0</channel1> <sam1>6</sam1> <gtb1>1</gtb1> +<xpos>25</xpos> +<ypos>0</ypos> <zpos>11315</zpos> </NEULAND> <NEULAND> @@ -6517,6 +7045,7 @@ <NAME>NeuLANDPla3V-26</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>3</layer> <bar>26</bar> <qcal0>1</qcal0> @@ -6547,6 +7076,8 @@ <channel1>15</channel1> <sam1>6</sam1> <gtb1>1</gtb1> +<xpos>75</xpos> +<ypos>0</ypos> <zpos>11315</zpos> </NEULAND> <NEULAND> @@ -6554,6 +7085,7 @@ <NAME>NeuLANDPla3V-27</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>3</layer> <bar>27</bar> <qcal0>1</qcal0> @@ -6584,6 +7116,8 @@ <channel1>14</channel1> <sam1>6</sam1> <gtb1>1</gtb1> +<xpos>125</xpos> +<ypos>0</ypos> <zpos>11315</zpos> </NEULAND> <NEULAND> @@ -6591,6 +7125,7 @@ <NAME>NeuLANDPla3V-28</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>3</layer> <bar>28</bar> <qcal0>1</qcal0> @@ -6621,6 +7156,8 @@ <channel1>13</channel1> <sam1>6</sam1> <gtb1>1</gtb1> +<xpos>175</xpos> +<ypos>0</ypos> <zpos>11315</zpos> </NEULAND> <NEULAND> @@ -6628,6 +7165,7 @@ <NAME>NeuLANDPla3V-29</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>3</layer> <bar>29</bar> <qcal0>1</qcal0> @@ -6658,6 +7196,8 @@ <channel1>12</channel1> <sam1>6</sam1> <gtb1>1</gtb1> +<xpos>225</xpos> +<ypos>0</ypos> <zpos>11315</zpos> </NEULAND> <NEULAND> @@ -6665,6 +7205,7 @@ <NAME>NeuLANDPla3V-30</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>3</layer> <bar>30</bar> <qcal0>1</qcal0> @@ -6695,6 +7236,8 @@ <channel1>15</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>275</xpos> +<ypos>0</ypos> <zpos>11315</zpos> </NEULAND> <NEULAND> @@ -6702,6 +7245,7 @@ <NAME>NeuLANDPla3V-31</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>3</layer> <bar>31</bar> <qcal0>1</qcal0> @@ -6732,6 +7276,8 @@ <channel1>14</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>325</xpos> +<ypos>0</ypos> <zpos>11315</zpos> </NEULAND> <NEULAND> @@ -6739,6 +7285,7 @@ <NAME>NeuLANDPla3V-32</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>3</layer> <bar>32</bar> <qcal0>1</qcal0> @@ -6769,6 +7316,8 @@ <channel1>13</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>375</xpos> +<ypos>0</ypos> <zpos>11315</zpos> </NEULAND> <NEULAND> @@ -6776,6 +7325,7 @@ <NAME>NeuLANDPla3V-33</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>3</layer> <bar>33</bar> <qcal0>1</qcal0> @@ -6806,6 +7356,8 @@ <channel1>12</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>425</xpos> +<ypos>0</ypos> <zpos>11315</zpos> </NEULAND> <NEULAND> @@ -6813,6 +7365,7 @@ <NAME>NeuLANDPla3V-34</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>3</layer> <bar>34</bar> <qcal0>1</qcal0> @@ -6843,6 +7396,8 @@ <channel1>11</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>475</xpos> +<ypos>0</ypos> <zpos>11315</zpos> </NEULAND> <NEULAND> @@ -6850,6 +7405,7 @@ <NAME>NeuLANDPla3V-35</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>3</layer> <bar>35</bar> <qcal0>1</qcal0> @@ -6880,6 +7436,8 @@ <channel1>10</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>525</xpos> +<ypos>0</ypos> <zpos>11315</zpos> </NEULAND> <NEULAND> @@ -6887,6 +7445,7 @@ <NAME>NeuLANDPla3V-36</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>3</layer> <bar>36</bar> <qcal0>1</qcal0> @@ -6917,6 +7476,8 @@ <channel1>9</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>575</xpos> +<ypos>0</ypos> <zpos>11315</zpos> </NEULAND> <NEULAND> @@ -6924,6 +7485,7 @@ <NAME>NeuLANDPla3V-37</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>3</layer> <bar>37</bar> <qcal0>1</qcal0> @@ -6954,6 +7516,8 @@ <channel1>8</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>625</xpos> +<ypos>0</ypos> <zpos>11315</zpos> </NEULAND> <NEULAND> @@ -6961,6 +7525,7 @@ <NAME>NeuLANDPla3V-38</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>3</layer> <bar>38</bar> <qcal0>1</qcal0> @@ -6991,6 +7556,8 @@ <channel1>7</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>675</xpos> +<ypos>0</ypos> <zpos>11315</zpos> </NEULAND> <NEULAND> @@ -6998,6 +7565,7 @@ <NAME>NeuLANDPla3V-39</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>3</layer> <bar>39</bar> <qcal0>1</qcal0> @@ -7028,6 +7596,8 @@ <channel1>6</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>725</xpos> +<ypos>0</ypos> <zpos>11315</zpos> </NEULAND> <NEULAND> @@ -7035,6 +7605,7 @@ <NAME>NeuLANDPla3V-40</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>3</layer> <bar>40</bar> <qcal0>1</qcal0> @@ -7065,6 +7636,8 @@ <channel1>5</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>775</xpos> +<ypos>0</ypos> <zpos>11315</zpos> </NEULAND> <NEULAND> @@ -7072,6 +7645,7 @@ <NAME>NeuLANDPla3V-41</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>3</layer> <bar>41</bar> <qcal0>1</qcal0> @@ -7102,6 +7676,8 @@ <channel1>4</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>825</xpos> +<ypos>0</ypos> <zpos>11315</zpos> </NEULAND> <NEULAND> @@ -7109,6 +7685,7 @@ <NAME>NeuLANDPla3V-42</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>3</layer> <bar>42</bar> <qcal0>1</qcal0> @@ -7139,6 +7716,8 @@ <channel1>3</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>875</xpos> +<ypos>0</ypos> <zpos>11315</zpos> </NEULAND> <NEULAND> @@ -7146,6 +7725,7 @@ <NAME>NeuLANDPla3V-43</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>3</layer> <bar>43</bar> <qcal0>1</qcal0> @@ -7176,6 +7756,8 @@ <channel1>2</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>925</xpos> +<ypos>0</ypos> <zpos>11315</zpos> </NEULAND> <NEULAND> @@ -7183,6 +7765,7 @@ <NAME>NeuLANDPla3V-44</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>3</layer> <bar>44</bar> <qcal0>1</qcal0> @@ -7213,6 +7796,8 @@ <channel1>1</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>975</xpos> +<ypos>0</ypos> <zpos>11315</zpos> </NEULAND> <NEULAND> @@ -7220,6 +7805,7 @@ <NAME>NeuLANDPla3V-45</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>3</layer> <bar>45</bar> <qcal0>1</qcal0> @@ -7250,6 +7836,8 @@ <channel1>0</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>1025</xpos> +<ypos>0</ypos> <zpos>11315</zpos> </NEULAND> <NEULAND> @@ -7257,6 +7845,7 @@ <NAME>NeuLANDPla3V-46</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>3</layer> <bar>46</bar> <qcal0>1</qcal0> @@ -7287,6 +7876,8 @@ <channel1>15</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>1075</xpos> +<ypos>0</ypos> <zpos>11315</zpos> </NEULAND> <NEULAND> @@ -7294,6 +7885,7 @@ <NAME>NeuLANDPla3V-47</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>3</layer> <bar>47</bar> <qcal0>1</qcal0> @@ -7324,6 +7916,8 @@ <channel1>14</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>1125</xpos> +<ypos>0</ypos> <zpos>11315</zpos> </NEULAND> <NEULAND> @@ -7331,6 +7925,7 @@ <NAME>NeuLANDPla3V-48</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>3</layer> <bar>48</bar> <qcal0>1</qcal0> @@ -7361,6 +7956,8 @@ <channel1>13</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>1175</xpos> +<ypos>0</ypos> <zpos>11315</zpos> </NEULAND> <NEULAND> @@ -7368,6 +7965,7 @@ <NAME>NeuLANDPla3V-49</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>3</layer> <bar>49</bar> <qcal0>1</qcal0> @@ -7398,6 +7996,8 @@ <channel1>12</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>1225</xpos> +<ypos>0</ypos> <zpos>11315</zpos> </NEULAND> <NEULAND> @@ -7405,6 +8005,7 @@ <NAME>NeuLANDPla4H-0</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>4</layer> <bar>0</bar> <qcal0>1</qcal0> @@ -7435,6 +8036,8 @@ <channel1>1</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-1225</ypos> <zpos>11365</zpos> </NEULAND> <NEULAND> @@ -7442,6 +8045,7 @@ <NAME>NeuLANDPla4H-1</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>4</layer> <bar>1</bar> <qcal0>1</qcal0> @@ -7472,6 +8076,8 @@ <channel1>0</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-1175</ypos> <zpos>11365</zpos> </NEULAND> <NEULAND> @@ -7479,6 +8085,7 @@ <NAME>NeuLANDPla4H-2</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>4</layer> <bar>2</bar> <qcal0>1</qcal0> @@ -7509,6 +8116,8 @@ <channel1>15</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-1125</ypos> <zpos>11365</zpos> </NEULAND> <NEULAND> @@ -7516,6 +8125,7 @@ <NAME>NeuLANDPla4H-3</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>4</layer> <bar>3</bar> <qcal0>1</qcal0> @@ -7546,6 +8156,8 @@ <channel1>14</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-1075</ypos> <zpos>11365</zpos> </NEULAND> <NEULAND> @@ -7553,6 +8165,7 @@ <NAME>NeuLANDPla4H-4</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>4</layer> <bar>4</bar> <qcal0>1</qcal0> @@ -7583,6 +8196,8 @@ <channel1>13</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-1025</ypos> <zpos>11365</zpos> </NEULAND> <NEULAND> @@ -7590,6 +8205,7 @@ <NAME>NeuLANDPla4H-5</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>4</layer> <bar>5</bar> <qcal0>1</qcal0> @@ -7620,6 +8236,8 @@ <channel1>12</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-975</ypos> <zpos>11365</zpos> </NEULAND> <NEULAND> @@ -7627,6 +8245,7 @@ <NAME>NeuLANDPla4H-6</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>4</layer> <bar>6</bar> <qcal0>1</qcal0> @@ -7657,6 +8276,8 @@ <channel1>11</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-925</ypos> <zpos>11365</zpos> </NEULAND> <NEULAND> @@ -7664,6 +8285,7 @@ <NAME>NeuLANDPla4H-7</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>4</layer> <bar>7</bar> <qcal0>1</qcal0> @@ -7694,6 +8316,8 @@ <channel1>10</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-875</ypos> <zpos>11365</zpos> </NEULAND> <NEULAND> @@ -7701,6 +8325,7 @@ <NAME>NeuLANDPla4H-8</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>4</layer> <bar>8</bar> <qcal0>1</qcal0> @@ -7731,6 +8356,8 @@ <channel1>9</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-825</ypos> <zpos>11365</zpos> </NEULAND> <NEULAND> @@ -7738,6 +8365,7 @@ <NAME>NeuLANDPla4H-9</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>4</layer> <bar>9</bar> <qcal0>1</qcal0> @@ -7768,6 +8396,8 @@ <channel1>8</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-775</ypos> <zpos>11365</zpos> </NEULAND> <NEULAND> @@ -7775,6 +8405,7 @@ <NAME>NeuLANDPla4H-10</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>4</layer> <bar>10</bar> <qcal0>1</qcal0> @@ -7805,6 +8436,8 @@ <channel1>7</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-725</ypos> <zpos>11365</zpos> </NEULAND> <NEULAND> @@ -7812,6 +8445,7 @@ <NAME>NeuLANDPla4H-11</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>4</layer> <bar>11</bar> <qcal0>1</qcal0> @@ -7842,6 +8476,8 @@ <channel1>6</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-675</ypos> <zpos>11365</zpos> </NEULAND> <NEULAND> @@ -7849,6 +8485,7 @@ <NAME>NeuLANDPla4H-12</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>4</layer> <bar>12</bar> <qcal0>1</qcal0> @@ -7879,6 +8516,8 @@ <channel1>5</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-625</ypos> <zpos>11365</zpos> </NEULAND> <NEULAND> @@ -7886,6 +8525,7 @@ <NAME>NeuLANDPla4H-13</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>4</layer> <bar>13</bar> <qcal0>1</qcal0> @@ -7916,6 +8556,8 @@ <channel1>4</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-575</ypos> <zpos>11365</zpos> </NEULAND> <NEULAND> @@ -7923,6 +8565,7 @@ <NAME>NeuLANDPla4H-14</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>4</layer> <bar>14</bar> <qcal0>1</qcal0> @@ -7953,6 +8596,8 @@ <channel1>3</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-525</ypos> <zpos>11365</zpos> </NEULAND> <NEULAND> @@ -7960,6 +8605,7 @@ <NAME>NeuLANDPla4H-15</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>4</layer> <bar>15</bar> <qcal0>1</qcal0> @@ -7990,6 +8636,8 @@ <channel1>2</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-475</ypos> <zpos>11365</zpos> </NEULAND> <NEULAND> @@ -7997,6 +8645,7 @@ <NAME>NeuLANDPla4H-16</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>4</layer> <bar>16</bar> <qcal0>1</qcal0> @@ -8027,6 +8676,8 @@ <channel1>1</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-425</ypos> <zpos>11365</zpos> </NEULAND> <NEULAND> @@ -8034,6 +8685,7 @@ <NAME>NeuLANDPla4H-17</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>4</layer> <bar>17</bar> <qcal0>1</qcal0> @@ -8064,6 +8716,8 @@ <channel1>0</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-375</ypos> <zpos>11365</zpos> </NEULAND> <NEULAND> @@ -8071,6 +8725,7 @@ <NAME>NeuLANDPla4H-18</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>4</layer> <bar>18</bar> <qcal0>1</qcal0> @@ -8101,6 +8756,8 @@ <channel1>15</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-325</ypos> <zpos>11365</zpos> </NEULAND> <NEULAND> @@ -8108,6 +8765,7 @@ <NAME>NeuLANDPla4H-19</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>4</layer> <bar>19</bar> <qcal0>1</qcal0> @@ -8138,6 +8796,8 @@ <channel1>14</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-275</ypos> <zpos>11365</zpos> </NEULAND> <NEULAND> @@ -8145,6 +8805,7 @@ <NAME>NeuLANDPla4H-20</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>4</layer> <bar>20</bar> <qcal0>1</qcal0> @@ -8175,6 +8836,8 @@ <channel1>13</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-225</ypos> <zpos>11365</zpos> </NEULAND> <NEULAND> @@ -8182,6 +8845,7 @@ <NAME>NeuLANDPla4H-21</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>4</layer> <bar>21</bar> <qcal0>1</qcal0> @@ -8212,6 +8876,8 @@ <channel1>12</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-175</ypos> <zpos>11365</zpos> </NEULAND> <NEULAND> @@ -8219,6 +8885,7 @@ <NAME>NeuLANDPla4H-22</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>4</layer> <bar>22</bar> <qcal0>1</qcal0> @@ -8249,6 +8916,8 @@ <channel1>11</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-125</ypos> <zpos>11365</zpos> </NEULAND> <NEULAND> @@ -8256,6 +8925,7 @@ <NAME>NeuLANDPla4H-23</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>4</layer> <bar>23</bar> <qcal0>1</qcal0> @@ -8286,6 +8956,8 @@ <channel1>10</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-75</ypos> <zpos>11365</zpos> </NEULAND> <NEULAND> @@ -8293,6 +8965,7 @@ <NAME>NeuLANDPla4H-24</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>4</layer> <bar>24</bar> <qcal0>1</qcal0> @@ -8323,6 +8996,8 @@ <channel1>9</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>-25</ypos> <zpos>11365</zpos> </NEULAND> <NEULAND> @@ -8330,6 +9005,7 @@ <NAME>NeuLANDPla4H-25</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>4</layer> <bar>25</bar> <qcal0>1</qcal0> @@ -8360,6 +9036,8 @@ <channel1>8</channel1> <sam1>7</sam1> <gtb1>1</gtb1> +<xpos>0</xpos> +<ypos>25</ypos> <zpos>11365</zpos> </NEULAND> <NEULAND> @@ -8367,6 +9045,7 @@ <NAME>NeuLANDPla4H-26</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>4</layer> <bar>26</bar> <qcal0>1</qcal0> @@ -8397,6 +9076,8 @@ <channel1>7</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>75</ypos> <zpos>11365</zpos> </NEULAND> <NEULAND> @@ -8404,6 +9085,7 @@ <NAME>NeuLANDPla4H-27</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>4</layer> <bar>27</bar> <qcal0>1</qcal0> @@ -8434,6 +9116,8 @@ <channel1>6</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>125</ypos> <zpos>11365</zpos> </NEULAND> <NEULAND> @@ -8441,6 +9125,7 @@ <NAME>NeuLANDPla4H-28</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>4</layer> <bar>28</bar> <qcal0>1</qcal0> @@ -8471,6 +9156,8 @@ <channel1>5</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>175</ypos> <zpos>11365</zpos> </NEULAND> <NEULAND> @@ -8478,6 +9165,7 @@ <NAME>NeuLANDPla4H-29</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>4</layer> <bar>29</bar> <qcal0>1</qcal0> @@ -8508,6 +9196,8 @@ <channel1>4</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>225</ypos> <zpos>11365</zpos> </NEULAND> <NEULAND> @@ -8515,6 +9205,7 @@ <NAME>NeuLANDPla4H-30</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>4</layer> <bar>30</bar> <qcal0>1</qcal0> @@ -8545,6 +9236,8 @@ <channel1>3</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>275</ypos> <zpos>11365</zpos> </NEULAND> <NEULAND> @@ -8552,6 +9245,7 @@ <NAME>NeuLANDPla4H-31</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>4</layer> <bar>31</bar> <qcal0>1</qcal0> @@ -8582,6 +9276,8 @@ <channel1>2</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>325</ypos> <zpos>11365</zpos> </NEULAND> <NEULAND> @@ -8589,6 +9285,7 @@ <NAME>NeuLANDPla4H-32</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>4</layer> <bar>32</bar> <qcal0>1</qcal0> @@ -8619,6 +9316,8 @@ <channel1>1</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>375</ypos> <zpos>11365</zpos> </NEULAND> <NEULAND> @@ -8626,6 +9325,7 @@ <NAME>NeuLANDPla4H-33</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>4</layer> <bar>33</bar> <qcal0>1</qcal0> @@ -8656,6 +9356,8 @@ <channel1>0</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>425</ypos> <zpos>11365</zpos> </NEULAND> <NEULAND> @@ -8663,6 +9365,7 @@ <NAME>NeuLANDPla4H-34</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>4</layer> <bar>34</bar> <qcal0>1</qcal0> @@ -8693,6 +9396,8 @@ <channel1>15</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>475</ypos> <zpos>11365</zpos> </NEULAND> <NEULAND> @@ -8700,6 +9405,7 @@ <NAME>NeuLANDPla4H-35</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>4</layer> <bar>35</bar> <qcal0>1</qcal0> @@ -8730,6 +9436,8 @@ <channel1>14</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>525</ypos> <zpos>11365</zpos> </NEULAND> <NEULAND> @@ -8737,6 +9445,7 @@ <NAME>NeuLANDPla4H-36</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>4</layer> <bar>36</bar> <qcal0>1</qcal0> @@ -8767,6 +9476,8 @@ <channel1>13</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>575</ypos> <zpos>11365</zpos> </NEULAND> <NEULAND> @@ -8774,6 +9485,7 @@ <NAME>NeuLANDPla4H-37</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>4</layer> <bar>37</bar> <qcal0>1</qcal0> @@ -8804,6 +9516,8 @@ <channel1>12</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>625</ypos> <zpos>11365</zpos> </NEULAND> <NEULAND> @@ -8811,6 +9525,7 @@ <NAME>NeuLANDPla4H-38</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>4</layer> <bar>38</bar> <qcal0>1</qcal0> @@ -8841,6 +9556,8 @@ <channel1>11</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>675</ypos> <zpos>11365</zpos> </NEULAND> <NEULAND> @@ -8848,6 +9565,7 @@ <NAME>NeuLANDPla4H-39</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>4</layer> <bar>39</bar> <qcal0>1</qcal0> @@ -8878,6 +9596,8 @@ <channel1>10</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>725</ypos> <zpos>11365</zpos> </NEULAND> <NEULAND> @@ -8885,6 +9605,7 @@ <NAME>NeuLANDPla4H-40</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>4</layer> <bar>40</bar> <qcal0>1</qcal0> @@ -8915,6 +9636,8 @@ <channel1>9</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>775</ypos> <zpos>11365</zpos> </NEULAND> <NEULAND> @@ -8922,6 +9645,7 @@ <NAME>NeuLANDPla4H-41</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>4</layer> <bar>41</bar> <qcal0>1</qcal0> @@ -8952,6 +9676,8 @@ <channel1>8</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>825</ypos> <zpos>11365</zpos> </NEULAND> <NEULAND> @@ -8959,6 +9685,7 @@ <NAME>NeuLANDPla4H-42</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>4</layer> <bar>42</bar> <qcal0>1</qcal0> @@ -8989,6 +9716,8 @@ <channel1>7</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>875</ypos> <zpos>11365</zpos> </NEULAND> <NEULAND> @@ -8996,6 +9725,7 @@ <NAME>NeuLANDPla4H-43</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>4</layer> <bar>43</bar> <qcal0>1</qcal0> @@ -9026,6 +9756,8 @@ <channel1>6</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>925</ypos> <zpos>11365</zpos> </NEULAND> <NEULAND> @@ -9033,6 +9765,7 @@ <NAME>NeuLANDPla4H-44</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>4</layer> <bar>44</bar> <qcal0>1</qcal0> @@ -9063,6 +9796,8 @@ <channel1>5</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>975</ypos> <zpos>11365</zpos> </NEULAND> <NEULAND> @@ -9070,6 +9805,7 @@ <NAME>NeuLANDPla4H-45</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>4</layer> <bar>45</bar> <qcal0>1</qcal0> @@ -9100,6 +9836,8 @@ <channel1>4</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>1025</ypos> <zpos>11365</zpos> </NEULAND> <NEULAND> @@ -9107,6 +9845,7 @@ <NAME>NeuLANDPla4H-46</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>4</layer> <bar>46</bar> <qcal0>1</qcal0> @@ -9137,6 +9876,8 @@ <channel1>3</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>1075</ypos> <zpos>11365</zpos> </NEULAND> <NEULAND> @@ -9144,6 +9885,7 @@ <NAME>NeuLANDPla4H-47</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>4</layer> <bar>47</bar> <qcal0>1</qcal0> @@ -9174,6 +9916,8 @@ <channel1>2</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>1125</ypos> <zpos>11365</zpos> </NEULAND> <NEULAND> @@ -9181,6 +9925,7 @@ <NAME>NeuLANDPla4H-48</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>4</layer> <bar>48</bar> <qcal0>1</qcal0> @@ -9211,6 +9956,8 @@ <channel1>1</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>1175</ypos> <zpos>11365</zpos> </NEULAND> <NEULAND> @@ -9218,6 +9965,7 @@ <NAME>NeuLANDPla4H-49</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>4</layer> <bar>49</bar> <qcal0>1</qcal0> @@ -9248,6 +9996,8 @@ <channel1>0</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>1225</ypos> <zpos>11365</zpos> </NEULAND> <NEULAND> @@ -9255,6 +10005,7 @@ <NAME>NeuLANDPla5V-0</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>5</layer> <bar>0</bar> <qcal0>1</qcal0> @@ -9285,6 +10036,8 @@ <channel1>9</channel1> <sam1>6</sam1> <gtb1>0</gtb1> +<xpos>-1225</xpos> +<ypos>0</ypos> <zpos>11415</zpos> </NEULAND> <NEULAND> @@ -9292,6 +10045,7 @@ <NAME>NeuLANDPla5V-1</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>5</layer> <bar>1</bar> <qcal0>1</qcal0> @@ -9322,6 +10076,8 @@ <channel1>8</channel1> <sam1>6</sam1> <gtb1>0</gtb1> +<xpos>-1175</xpos> +<ypos>0</ypos> <zpos>11415</zpos> </NEULAND> <NEULAND> @@ -9329,6 +10085,7 @@ <NAME>NeuLANDPla5V-2</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>5</layer> <bar>2</bar> <qcal0>1</qcal0> @@ -9359,6 +10116,8 @@ <channel1>7</channel1> <sam1>6</sam1> <gtb1>0</gtb1> +<xpos>-1125</xpos> +<ypos>0</ypos> <zpos>11415</zpos> </NEULAND> <NEULAND> @@ -9366,6 +10125,7 @@ <NAME>NeuLANDPla5V-3</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>5</layer> <bar>3</bar> <qcal0>1</qcal0> @@ -9396,6 +10156,8 @@ <channel1>6</channel1> <sam1>6</sam1> <gtb1>0</gtb1> +<xpos>-1075</xpos> +<ypos>0</ypos> <zpos>11415</zpos> </NEULAND> <NEULAND> @@ -9403,6 +10165,7 @@ <NAME>NeuLANDPla5V-4</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>5</layer> <bar>4</bar> <qcal0>1</qcal0> @@ -9433,6 +10196,8 @@ <channel1>5</channel1> <sam1>6</sam1> <gtb1>0</gtb1> +<xpos>-1025</xpos> +<ypos>0</ypos> <zpos>11415</zpos> </NEULAND> <NEULAND> @@ -9440,6 +10205,7 @@ <NAME>NeuLANDPla5V-5</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>5</layer> <bar>5</bar> <qcal0>1</qcal0> @@ -9470,6 +10236,8 @@ <channel1>4</channel1> <sam1>6</sam1> <gtb1>0</gtb1> +<xpos>-975</xpos> +<ypos>0</ypos> <zpos>11415</zpos> </NEULAND> <NEULAND> @@ -9477,6 +10245,7 @@ <NAME>NeuLANDPla5V-6</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>5</layer> <bar>6</bar> <qcal0>1</qcal0> @@ -9507,6 +10276,8 @@ <channel1>3</channel1> <sam1>6</sam1> <gtb1>0</gtb1> +<xpos>-925</xpos> +<ypos>0</ypos> <zpos>11415</zpos> </NEULAND> <NEULAND> @@ -9514,6 +10285,7 @@ <NAME>NeuLANDPla5V-7</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>5</layer> <bar>7</bar> <qcal0>1</qcal0> @@ -9544,6 +10316,8 @@ <channel1>2</channel1> <sam1>6</sam1> <gtb1>0</gtb1> +<xpos>-875</xpos> +<ypos>0</ypos> <zpos>11415</zpos> </NEULAND> <NEULAND> @@ -9551,6 +10325,7 @@ <NAME>NeuLANDPla5V-8</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>5</layer> <bar>8</bar> <qcal0>1</qcal0> @@ -9581,6 +10356,8 @@ <channel1>1</channel1> <sam1>6</sam1> <gtb1>0</gtb1> +<xpos>-825</xpos> +<ypos>0</ypos> <zpos>11415</zpos> </NEULAND> <NEULAND> @@ -9588,6 +10365,7 @@ <NAME>NeuLANDPla5V-9</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>5</layer> <bar>9</bar> <qcal0>1</qcal0> @@ -9618,6 +10396,8 @@ <channel1>0</channel1> <sam1>6</sam1> <gtb1>0</gtb1> +<xpos>-775</xpos> +<ypos>0</ypos> <zpos>11415</zpos> </NEULAND> <NEULAND> @@ -9625,6 +10405,7 @@ <NAME>NeuLANDPla5V-10</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>5</layer> <bar>10</bar> <qcal0>1</qcal0> @@ -9655,6 +10436,8 @@ <channel1>15</channel1> <sam1>6</sam1> <gtb1>0</gtb1> +<xpos>-725</xpos> +<ypos>0</ypos> <zpos>11415</zpos> </NEULAND> <NEULAND> @@ -9662,6 +10445,7 @@ <NAME>NeuLANDPla5V-11</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>5</layer> <bar>11</bar> <qcal0>1</qcal0> @@ -9692,6 +10476,8 @@ <channel1>14</channel1> <sam1>6</sam1> <gtb1>0</gtb1> +<xpos>-675</xpos> +<ypos>0</ypos> <zpos>11415</zpos> </NEULAND> <NEULAND> @@ -9699,6 +10485,7 @@ <NAME>NeuLANDPla5V-12</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>5</layer> <bar>12</bar> <qcal0>1</qcal0> @@ -9729,6 +10516,8 @@ <channel1>13</channel1> <sam1>6</sam1> <gtb1>0</gtb1> +<xpos>-625</xpos> +<ypos>0</ypos> <zpos>11415</zpos> </NEULAND> <NEULAND> @@ -9736,6 +10525,7 @@ <NAME>NeuLANDPla5V-13</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>5</layer> <bar>13</bar> <qcal0>1</qcal0> @@ -9766,6 +10556,8 @@ <channel1>12</channel1> <sam1>6</sam1> <gtb1>0</gtb1> +<xpos>-575</xpos> +<ypos>0</ypos> <zpos>11415</zpos> </NEULAND> <NEULAND> @@ -9773,6 +10565,7 @@ <NAME>NeuLANDPla5V-14</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>5</layer> <bar>14</bar> <qcal0>1</qcal0> @@ -9803,6 +10596,8 @@ <channel1>11</channel1> <sam1>6</sam1> <gtb1>0</gtb1> +<xpos>-525</xpos> +<ypos>0</ypos> <zpos>11415</zpos> </NEULAND> <NEULAND> @@ -9810,6 +10605,7 @@ <NAME>NeuLANDPla5V-15</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>5</layer> <bar>15</bar> <qcal0>1</qcal0> @@ -9840,6 +10636,8 @@ <channel1>10</channel1> <sam1>6</sam1> <gtb1>0</gtb1> +<xpos>-475</xpos> +<ypos>0</ypos> <zpos>11415</zpos> </NEULAND> <NEULAND> @@ -9847,6 +10645,7 @@ <NAME>NeuLANDPla5V-16</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>5</layer> <bar>16</bar> <qcal0>1</qcal0> @@ -9877,6 +10676,8 @@ <channel1>9</channel1> <sam1>6</sam1> <gtb1>0</gtb1> +<xpos>-425</xpos> +<ypos>0</ypos> <zpos>11415</zpos> </NEULAND> <NEULAND> @@ -9884,6 +10685,7 @@ <NAME>NeuLANDPla5V-17</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>5</layer> <bar>17</bar> <qcal0>1</qcal0> @@ -9914,6 +10716,8 @@ <channel1>8</channel1> <sam1>6</sam1> <gtb1>0</gtb1> +<xpos>-375</xpos> +<ypos>0</ypos> <zpos>11415</zpos> </NEULAND> <NEULAND> @@ -9921,6 +10725,7 @@ <NAME>NeuLANDPla5V-18</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>5</layer> <bar>18</bar> <qcal0>1</qcal0> @@ -9951,6 +10756,8 @@ <channel1>7</channel1> <sam1>6</sam1> <gtb1>0</gtb1> +<xpos>-325</xpos> +<ypos>0</ypos> <zpos>11415</zpos> </NEULAND> <NEULAND> @@ -9958,6 +10765,7 @@ <NAME>NeuLANDPla5V-19</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>5</layer> <bar>19</bar> <qcal0>1</qcal0> @@ -9988,6 +10796,8 @@ <channel1>6</channel1> <sam1>6</sam1> <gtb1>0</gtb1> +<xpos>-275</xpos> +<ypos>0</ypos> <zpos>11415</zpos> </NEULAND> <NEULAND> @@ -9995,6 +10805,7 @@ <NAME>NeuLANDPla5V-20</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>5</layer> <bar>20</bar> <qcal0>1</qcal0> @@ -10025,6 +10836,8 @@ <channel1>5</channel1> <sam1>6</sam1> <gtb1>0</gtb1> +<xpos>-225</xpos> +<ypos>0</ypos> <zpos>11415</zpos> </NEULAND> <NEULAND> @@ -10032,6 +10845,7 @@ <NAME>NeuLANDPla5V-21</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>5</layer> <bar>21</bar> <qcal0>1</qcal0> @@ -10062,6 +10876,8 @@ <channel1>4</channel1> <sam1>6</sam1> <gtb1>0</gtb1> +<xpos>-175</xpos> +<ypos>0</ypos> <zpos>11415</zpos> </NEULAND> <NEULAND> @@ -10069,6 +10885,7 @@ <NAME>NeuLANDPla5V-22</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>5</layer> <bar>22</bar> <qcal0>1</qcal0> @@ -10099,6 +10916,8 @@ <channel1>3</channel1> <sam1>6</sam1> <gtb1>0</gtb1> +<xpos>-125</xpos> +<ypos>0</ypos> <zpos>11415</zpos> </NEULAND> <NEULAND> @@ -10106,6 +10925,7 @@ <NAME>NeuLANDPla5V-23</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>5</layer> <bar>23</bar> <qcal0>1</qcal0> @@ -10136,6 +10956,8 @@ <channel1>2</channel1> <sam1>6</sam1> <gtb1>0</gtb1> +<xpos>-75</xpos> +<ypos>0</ypos> <zpos>11415</zpos> </NEULAND> <NEULAND> @@ -10143,6 +10965,7 @@ <NAME>NeuLANDPla5V-24</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>5</layer> <bar>24</bar> <qcal0>1</qcal0> @@ -10173,6 +10996,8 @@ <channel1>1</channel1> <sam1>6</sam1> <gtb1>0</gtb1> +<xpos>-25</xpos> +<ypos>0</ypos> <zpos>11415</zpos> </NEULAND> <NEULAND> @@ -10180,6 +11005,7 @@ <NAME>NeuLANDPla5V-25</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>5</layer> <bar>25</bar> <qcal0>1</qcal0> @@ -10210,6 +11036,8 @@ <channel1>0</channel1> <sam1>6</sam1> <gtb1>0</gtb1> +<xpos>25</xpos> +<ypos>0</ypos> <zpos>11415</zpos> </NEULAND> <NEULAND> @@ -10217,6 +11045,7 @@ <NAME>NeuLANDPla5V-26</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>5</layer> <bar>26</bar> <qcal0>1</qcal0> @@ -10247,6 +11076,8 @@ <channel1>15</channel1> <sam1>6</sam1> <gtb1>0</gtb1> +<xpos>75</xpos> +<ypos>0</ypos> <zpos>11415</zpos> </NEULAND> <NEULAND> @@ -10254,6 +11085,7 @@ <NAME>NeuLANDPla5V-27</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>5</layer> <bar>27</bar> <qcal0>1</qcal0> @@ -10284,6 +11116,8 @@ <channel1>14</channel1> <sam1>6</sam1> <gtb1>0</gtb1> +<xpos>125</xpos> +<ypos>0</ypos> <zpos>11415</zpos> </NEULAND> <NEULAND> @@ -10291,6 +11125,7 @@ <NAME>NeuLANDPla5V-28</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>5</layer> <bar>28</bar> <qcal0>1</qcal0> @@ -10321,6 +11156,8 @@ <channel1>13</channel1> <sam1>6</sam1> <gtb1>0</gtb1> +<xpos>175</xpos> +<ypos>0</ypos> <zpos>11415</zpos> </NEULAND> <NEULAND> @@ -10328,6 +11165,7 @@ <NAME>NeuLANDPla5V-29</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>5</layer> <bar>29</bar> <qcal0>1</qcal0> @@ -10358,6 +11196,8 @@ <channel1>12</channel1> <sam1>6</sam1> <gtb1>0</gtb1> +<xpos>225</xpos> +<ypos>0</ypos> <zpos>11415</zpos> </NEULAND> <NEULAND> @@ -10365,6 +11205,7 @@ <NAME>NeuLANDPla5V-30</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>5</layer> <bar>30</bar> <qcal0>1</qcal0> @@ -10395,6 +11236,8 @@ <channel1>15</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>275</xpos> +<ypos>0</ypos> <zpos>11415</zpos> </NEULAND> <NEULAND> @@ -10402,6 +11245,7 @@ <NAME>NeuLANDPla5V-31</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>5</layer> <bar>31</bar> <qcal0>1</qcal0> @@ -10432,6 +11276,8 @@ <channel1>14</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>325</xpos> +<ypos>0</ypos> <zpos>11415</zpos> </NEULAND> <NEULAND> @@ -10439,6 +11285,7 @@ <NAME>NeuLANDPla5V-32</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>5</layer> <bar>32</bar> <qcal0>1</qcal0> @@ -10469,6 +11316,8 @@ <channel1>13</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>375</xpos> +<ypos>0</ypos> <zpos>11415</zpos> </NEULAND> <NEULAND> @@ -10476,6 +11325,7 @@ <NAME>NeuLANDPla5V-33</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>5</layer> <bar>33</bar> <qcal0>1</qcal0> @@ -10506,6 +11356,8 @@ <channel1>12</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>425</xpos> +<ypos>0</ypos> <zpos>11415</zpos> </NEULAND> <NEULAND> @@ -10513,6 +11365,7 @@ <NAME>NeuLANDPla5V-34</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>5</layer> <bar>34</bar> <qcal0>1</qcal0> @@ -10543,6 +11396,8 @@ <channel1>11</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>475</xpos> +<ypos>0</ypos> <zpos>11415</zpos> </NEULAND> <NEULAND> @@ -10550,6 +11405,7 @@ <NAME>NeuLANDPla5V-35</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>5</layer> <bar>35</bar> <qcal0>1</qcal0> @@ -10580,6 +11436,8 @@ <channel1>10</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>525</xpos> +<ypos>0</ypos> <zpos>11415</zpos> </NEULAND> <NEULAND> @@ -10587,6 +11445,7 @@ <NAME>NeuLANDPla5V-36</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>5</layer> <bar>36</bar> <qcal0>1</qcal0> @@ -10617,6 +11476,8 @@ <channel1>9</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>575</xpos> +<ypos>0</ypos> <zpos>11415</zpos> </NEULAND> <NEULAND> @@ -10624,6 +11485,7 @@ <NAME>NeuLANDPla5V-37</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>5</layer> <bar>37</bar> <qcal0>1</qcal0> @@ -10654,6 +11516,8 @@ <channel1>8</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>625</xpos> +<ypos>0</ypos> <zpos>11415</zpos> </NEULAND> <NEULAND> @@ -10661,6 +11525,7 @@ <NAME>NeuLANDPla5V-38</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>5</layer> <bar>38</bar> <qcal0>1</qcal0> @@ -10691,6 +11556,8 @@ <channel1>7</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>675</xpos> +<ypos>0</ypos> <zpos>11415</zpos> </NEULAND> <NEULAND> @@ -10698,6 +11565,7 @@ <NAME>NeuLANDPla5V-39</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>5</layer> <bar>39</bar> <qcal0>1</qcal0> @@ -10728,6 +11596,8 @@ <channel1>6</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>725</xpos> +<ypos>0</ypos> <zpos>11415</zpos> </NEULAND> <NEULAND> @@ -10735,6 +11605,7 @@ <NAME>NeuLANDPla5V-40</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>5</layer> <bar>40</bar> <qcal0>1</qcal0> @@ -10765,6 +11636,8 @@ <channel1>5</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>775</xpos> +<ypos>0</ypos> <zpos>11415</zpos> </NEULAND> <NEULAND> @@ -10772,6 +11645,7 @@ <NAME>NeuLANDPla5V-41</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>5</layer> <bar>41</bar> <qcal0>1</qcal0> @@ -10802,6 +11676,8 @@ <channel1>4</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>825</xpos> +<ypos>0</ypos> <zpos>11415</zpos> </NEULAND> <NEULAND> @@ -10809,6 +11685,7 @@ <NAME>NeuLANDPla5V-42</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>5</layer> <bar>42</bar> <qcal0>1</qcal0> @@ -10839,6 +11716,8 @@ <channel1>3</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>875</xpos> +<ypos>0</ypos> <zpos>11415</zpos> </NEULAND> <NEULAND> @@ -10846,6 +11725,7 @@ <NAME>NeuLANDPla5V-43</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>5</layer> <bar>43</bar> <qcal0>1</qcal0> @@ -10876,6 +11756,8 @@ <channel1>2</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>925</xpos> +<ypos>0</ypos> <zpos>11415</zpos> </NEULAND> <NEULAND> @@ -10883,6 +11765,7 @@ <NAME>NeuLANDPla5V-44</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>5</layer> <bar>44</bar> <qcal0>1</qcal0> @@ -10913,6 +11796,8 @@ <channel1>1</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>975</xpos> +<ypos>0</ypos> <zpos>11415</zpos> </NEULAND> <NEULAND> @@ -10920,6 +11805,7 @@ <NAME>NeuLANDPla5V-45</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>5</layer> <bar>45</bar> <qcal0>1</qcal0> @@ -10950,6 +11836,8 @@ <channel1>0</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>1025</xpos> +<ypos>0</ypos> <zpos>11415</zpos> </NEULAND> <NEULAND> @@ -10957,6 +11845,7 @@ <NAME>NeuLANDPla5V-46</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>5</layer> <bar>46</bar> <qcal0>1</qcal0> @@ -10987,6 +11876,8 @@ <channel1>15</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>1075</xpos> +<ypos>0</ypos> <zpos>11415</zpos> </NEULAND> <NEULAND> @@ -10994,6 +11885,7 @@ <NAME>NeuLANDPla5V-47</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>5</layer> <bar>47</bar> <qcal0>1</qcal0> @@ -11024,6 +11916,8 @@ <channel1>14</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>1125</xpos> +<ypos>0</ypos> <zpos>11415</zpos> </NEULAND> <NEULAND> @@ -11031,6 +11925,7 @@ <NAME>NeuLANDPla5V-48</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>5</layer> <bar>48</bar> <qcal0>1</qcal0> @@ -11061,6 +11956,8 @@ <channel1>13</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>1175</xpos> +<ypos>0</ypos> <zpos>11415</zpos> </NEULAND> <NEULAND> @@ -11068,6 +11965,7 @@ <NAME>NeuLANDPla5V-49</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>5</layer> <bar>49</bar> <qcal0>1</qcal0> @@ -11098,6 +11996,8 @@ <channel1>12</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>1225</xpos> +<ypos>0</ypos> <zpos>11415</zpos> </NEULAND> <NEULAND> @@ -11105,6 +12005,7 @@ <NAME>NeuLANDPla6H-0</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>6</layer> <bar>0</bar> <qcal0>1</qcal0> @@ -11135,6 +12036,8 @@ <channel1>10</channel1> <sam1>6</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>-1225</ypos> <zpos>11465</zpos> </NEULAND> <NEULAND> @@ -11142,6 +12045,7 @@ <NAME>NeuLANDPla6H-1</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>6</layer> <bar>1</bar> <qcal0>1</qcal0> @@ -11172,6 +12076,8 @@ <channel1>0</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>-1175</ypos> <zpos>11465</zpos> </NEULAND> <NEULAND> @@ -11179,6 +12085,7 @@ <NAME>NeuLANDPla6H-2</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>6</layer> <bar>2</bar> <qcal0>1</qcal0> @@ -11209,6 +12116,8 @@ <channel1>15</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>-1125</ypos> <zpos>11465</zpos> </NEULAND> <NEULAND> @@ -11216,6 +12125,7 @@ <NAME>NeuLANDPla6H-3</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>6</layer> <bar>3</bar> <qcal0>1</qcal0> @@ -11246,6 +12156,8 @@ <channel1>14</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>-1075</ypos> <zpos>11465</zpos> </NEULAND> <NEULAND> @@ -11253,6 +12165,7 @@ <NAME>NeuLANDPla6H-4</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>6</layer> <bar>4</bar> <qcal0>1</qcal0> @@ -11283,6 +12196,8 @@ <channel1>13</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>-1025</ypos> <zpos>11465</zpos> </NEULAND> <NEULAND> @@ -11290,6 +12205,7 @@ <NAME>NeuLANDPla6H-5</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>6</layer> <bar>5</bar> <qcal0>1</qcal0> @@ -11320,6 +12236,8 @@ <channel1>12</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>-975</ypos> <zpos>11465</zpos> </NEULAND> <NEULAND> @@ -11327,6 +12245,7 @@ <NAME>NeuLANDPla6H-6</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>6</layer> <bar>6</bar> <qcal0>1</qcal0> @@ -11357,6 +12276,8 @@ <channel1>11</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>-925</ypos> <zpos>11465</zpos> </NEULAND> <NEULAND> @@ -11364,6 +12285,7 @@ <NAME>NeuLANDPla6H-7</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>6</layer> <bar>7</bar> <qcal0>1</qcal0> @@ -11394,6 +12316,8 @@ <channel1>10</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>-875</ypos> <zpos>11465</zpos> </NEULAND> <NEULAND> @@ -11401,6 +12325,7 @@ <NAME>NeuLANDPla6H-8</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>6</layer> <bar>8</bar> <qcal0>1</qcal0> @@ -11431,6 +12356,8 @@ <channel1>9</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>-825</ypos> <zpos>11465</zpos> </NEULAND> <NEULAND> @@ -11438,6 +12365,7 @@ <NAME>NeuLANDPla6H-9</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>6</layer> <bar>9</bar> <qcal0>1</qcal0> @@ -11468,6 +12396,8 @@ <channel1>8</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>-775</ypos> <zpos>11465</zpos> </NEULAND> <NEULAND> @@ -11475,6 +12405,7 @@ <NAME>NeuLANDPla6H-10</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>6</layer> <bar>10</bar> <qcal0>1</qcal0> @@ -11505,6 +12436,8 @@ <channel1>7</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>-725</ypos> <zpos>11465</zpos> </NEULAND> <NEULAND> @@ -11512,6 +12445,7 @@ <NAME>NeuLANDPla6H-11</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>6</layer> <bar>11</bar> <qcal0>1</qcal0> @@ -11542,6 +12476,8 @@ <channel1>6</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>-675</ypos> <zpos>11465</zpos> </NEULAND> <NEULAND> @@ -11549,6 +12485,7 @@ <NAME>NeuLANDPla6H-12</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>6</layer> <bar>12</bar> <qcal0>1</qcal0> @@ -11579,6 +12516,8 @@ <channel1>5</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>-625</ypos> <zpos>11465</zpos> </NEULAND> <NEULAND> @@ -11586,6 +12525,7 @@ <NAME>NeuLANDPla6H-13</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>6</layer> <bar>13</bar> <qcal0>1</qcal0> @@ -11616,6 +12556,8 @@ <channel1>4</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>-575</ypos> <zpos>11465</zpos> </NEULAND> <NEULAND> @@ -11623,6 +12565,7 @@ <NAME>NeuLANDPla6H-14</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>6</layer> <bar>14</bar> <qcal0>1</qcal0> @@ -11653,6 +12596,8 @@ <channel1>3</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>-525</ypos> <zpos>11465</zpos> </NEULAND> <NEULAND> @@ -11660,6 +12605,7 @@ <NAME>NeuLANDPla6H-15</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>6</layer> <bar>15</bar> <qcal0>1</qcal0> @@ -11690,6 +12636,8 @@ <channel1>2</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>-475</ypos> <zpos>11465</zpos> </NEULAND> <NEULAND> @@ -11697,6 +12645,7 @@ <NAME>NeuLANDPla6H-16</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>6</layer> <bar>16</bar> <qcal0>1</qcal0> @@ -11727,6 +12676,8 @@ <channel1>1</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>-425</ypos> <zpos>11465</zpos> </NEULAND> <NEULAND> @@ -11734,6 +12685,7 @@ <NAME>NeuLANDPla6H-17</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>6</layer> <bar>17</bar> <qcal0>1</qcal0> @@ -11764,6 +12716,8 @@ <channel1>0</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>-375</ypos> <zpos>11465</zpos> </NEULAND> <NEULAND> @@ -11771,6 +12725,7 @@ <NAME>NeuLANDPla6H-18</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>6</layer> <bar>18</bar> <qcal0>1</qcal0> @@ -11801,6 +12756,8 @@ <channel1>15</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>-325</ypos> <zpos>11465</zpos> </NEULAND> <NEULAND> @@ -11808,6 +12765,7 @@ <NAME>NeuLANDPla6H-19</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>6</layer> <bar>19</bar> <qcal0>1</qcal0> @@ -11838,6 +12796,8 @@ <channel1>14</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>-275</ypos> <zpos>11465</zpos> </NEULAND> <NEULAND> @@ -11845,6 +12805,7 @@ <NAME>NeuLANDPla6H-20</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>6</layer> <bar>20</bar> <qcal0>1</qcal0> @@ -11875,6 +12836,8 @@ <channel1>13</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>-225</ypos> <zpos>11465</zpos> </NEULAND> <NEULAND> @@ -11882,6 +12845,7 @@ <NAME>NeuLANDPla6H-21</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>6</layer> <bar>21</bar> <qcal0>1</qcal0> @@ -11912,6 +12876,8 @@ <channel1>12</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>-175</ypos> <zpos>11465</zpos> </NEULAND> <NEULAND> @@ -11919,6 +12885,7 @@ <NAME>NeuLANDPla6H-22</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>6</layer> <bar>22</bar> <qcal0>1</qcal0> @@ -11949,6 +12916,8 @@ <channel1>11</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>-125</ypos> <zpos>11465</zpos> </NEULAND> <NEULAND> @@ -11956,6 +12925,7 @@ <NAME>NeuLANDPla6H-23</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>6</layer> <bar>23</bar> <qcal0>1</qcal0> @@ -11986,6 +12956,8 @@ <channel1>10</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>-75</ypos> <zpos>11465</zpos> </NEULAND> <NEULAND> @@ -11993,6 +12965,7 @@ <NAME>NeuLANDPla6H-24</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>6</layer> <bar>24</bar> <qcal0>1</qcal0> @@ -12023,6 +12996,8 @@ <channel1>9</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>-25</ypos> <zpos>11465</zpos> </NEULAND> <NEULAND> @@ -12030,6 +13005,7 @@ <NAME>NeuLANDPla6H-25</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>6</layer> <bar>25</bar> <qcal0>1</qcal0> @@ -12060,6 +13036,8 @@ <channel1>8</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>25</ypos> <zpos>11465</zpos> </NEULAND> <NEULAND> @@ -12067,6 +13045,7 @@ <NAME>NeuLANDPla6H-26</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>6</layer> <bar>26</bar> <qcal0>1</qcal0> @@ -12097,6 +13076,8 @@ <channel1>7</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>75</ypos> <zpos>11465</zpos> </NEULAND> <NEULAND> @@ -12104,6 +13085,7 @@ <NAME>NeuLANDPla6H-27</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>6</layer> <bar>27</bar> <qcal0>1</qcal0> @@ -12134,6 +13116,8 @@ <channel1>6</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>125</ypos> <zpos>11465</zpos> </NEULAND> <NEULAND> @@ -12141,6 +13125,7 @@ <NAME>NeuLANDPla6H-28</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>6</layer> <bar>28</bar> <qcal0>1</qcal0> @@ -12171,6 +13156,8 @@ <channel1>5</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>175</ypos> <zpos>11465</zpos> </NEULAND> <NEULAND> @@ -12178,6 +13165,7 @@ <NAME>NeuLANDPla6H-29</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>6</layer> <bar>29</bar> <qcal0>1</qcal0> @@ -12208,6 +13196,8 @@ <channel1>4</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>225</ypos> <zpos>11465</zpos> </NEULAND> <NEULAND> @@ -12215,6 +13205,7 @@ <NAME>NeuLANDPla6H-30</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>6</layer> <bar>30</bar> <qcal0>1</qcal0> @@ -12245,6 +13236,8 @@ <channel1>3</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>275</ypos> <zpos>11465</zpos> </NEULAND> <NEULAND> @@ -12252,6 +13245,7 @@ <NAME>NeuLANDPla6H-31</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>6</layer> <bar>31</bar> <qcal0>1</qcal0> @@ -12282,6 +13276,8 @@ <channel1>2</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>325</ypos> <zpos>11465</zpos> </NEULAND> <NEULAND> @@ -12289,6 +13285,7 @@ <NAME>NeuLANDPla6H-32</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>6</layer> <bar>32</bar> <qcal0>1</qcal0> @@ -12319,6 +13316,8 @@ <channel1>1</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>375</ypos> <zpos>11465</zpos> </NEULAND> <NEULAND> @@ -12326,6 +13325,7 @@ <NAME>NeuLANDPla6H-33</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>6</layer> <bar>33</bar> <qcal0>1</qcal0> @@ -12356,6 +13356,8 @@ <channel1>0</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>425</ypos> <zpos>11465</zpos> </NEULAND> <NEULAND> @@ -12363,6 +13365,7 @@ <NAME>NeuLANDPla6H-34</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>6</layer> <bar>34</bar> <qcal0>1</qcal0> @@ -12393,6 +13396,8 @@ <channel1>15</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>475</ypos> <zpos>11465</zpos> </NEULAND> <NEULAND> @@ -12400,6 +13405,7 @@ <NAME>NeuLANDPla6H-35</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>6</layer> <bar>35</bar> <qcal0>1</qcal0> @@ -12430,6 +13436,8 @@ <channel1>14</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>525</ypos> <zpos>11465</zpos> </NEULAND> <NEULAND> @@ -12437,6 +13445,7 @@ <NAME>NeuLANDPla6H-36</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>6</layer> <bar>36</bar> <qcal0>1</qcal0> @@ -12467,6 +13476,8 @@ <channel1>13</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>575</ypos> <zpos>11465</zpos> </NEULAND> <NEULAND> @@ -12474,6 +13485,7 @@ <NAME>NeuLANDPla6H-37</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>6</layer> <bar>37</bar> <qcal0>1</qcal0> @@ -12504,6 +13516,8 @@ <channel1>12</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>625</ypos> <zpos>11465</zpos> </NEULAND> <NEULAND> @@ -12511,6 +13525,7 @@ <NAME>NeuLANDPla6H-38</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>6</layer> <bar>38</bar> <qcal0>1</qcal0> @@ -12541,6 +13556,8 @@ <channel1>11</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>675</ypos> <zpos>11465</zpos> </NEULAND> <NEULAND> @@ -12548,6 +13565,7 @@ <NAME>NeuLANDPla6H-39</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>6</layer> <bar>39</bar> <qcal0>1</qcal0> @@ -12578,6 +13596,8 @@ <channel1>10</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>725</ypos> <zpos>11465</zpos> </NEULAND> <NEULAND> @@ -12585,6 +13605,7 @@ <NAME>NeuLANDPla6H-40</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>6</layer> <bar>40</bar> <qcal0>1</qcal0> @@ -12615,6 +13636,8 @@ <channel1>9</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>775</ypos> <zpos>11465</zpos> </NEULAND> <NEULAND> @@ -12622,6 +13645,7 @@ <NAME>NeuLANDPla6H-41</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>6</layer> <bar>41</bar> <qcal0>1</qcal0> @@ -12652,6 +13676,8 @@ <channel1>8</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>825</ypos> <zpos>11465</zpos> </NEULAND> <NEULAND> @@ -12659,6 +13685,7 @@ <NAME>NeuLANDPla6H-42</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>6</layer> <bar>42</bar> <qcal0>1</qcal0> @@ -12689,6 +13716,8 @@ <channel1>7</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>875</ypos> <zpos>11465</zpos> </NEULAND> <NEULAND> @@ -12696,6 +13725,7 @@ <NAME>NeuLANDPla6H-43</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>6</layer> <bar>43</bar> <qcal0>1</qcal0> @@ -12726,6 +13756,8 @@ <channel1>6</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>925</ypos> <zpos>11465</zpos> </NEULAND> <NEULAND> @@ -12733,6 +13765,7 @@ <NAME>NeuLANDPla6H-44</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>6</layer> <bar>44</bar> <qcal0>1</qcal0> @@ -12763,6 +13796,8 @@ <channel1>5</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>975</ypos> <zpos>11465</zpos> </NEULAND> <NEULAND> @@ -12770,6 +13805,7 @@ <NAME>NeuLANDPla6H-45</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>6</layer> <bar>45</bar> <qcal0>1</qcal0> @@ -12800,6 +13836,8 @@ <channel1>4</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>1025</ypos> <zpos>11465</zpos> </NEULAND> <NEULAND> @@ -12807,6 +13845,7 @@ <NAME>NeuLANDPla6H-46</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>6</layer> <bar>46</bar> <qcal0>1</qcal0> @@ -12837,6 +13876,8 @@ <channel1>3</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>1075</ypos> <zpos>11465</zpos> </NEULAND> <NEULAND> @@ -12844,6 +13885,7 @@ <NAME>NeuLANDPla6H-47</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>6</layer> <bar>47</bar> <qcal0>1</qcal0> @@ -12874,6 +13916,8 @@ <channel1>2</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>1125</ypos> <zpos>11465</zpos> </NEULAND> <NEULAND> @@ -12881,6 +13925,7 @@ <NAME>NeuLANDPla6H-48</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>6</layer> <bar>48</bar> <qcal0>1</qcal0> @@ -12911,6 +13956,8 @@ <channel1>1</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>1175</ypos> <zpos>11465</zpos> </NEULAND> <NEULAND> @@ -12918,6 +13965,7 @@ <NAME>NeuLANDPla6H-49</NAME> <FPL>13</FPL> <direction>H</direction> +<SubLayer>1</SubLayer> <layer>6</layer> <bar>49</bar> <qcal0>1</qcal0> @@ -12948,6 +13996,8 @@ <channel1>0</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>0</xpos> +<ypos>1225</ypos> <zpos>11465</zpos> </NEULAND> <NEULAND> @@ -12955,6 +14005,7 @@ <NAME>NeuLANDPla7V-0</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>7</layer> <bar>0</bar> <qcal0>1</qcal0> @@ -12985,6 +14036,8 @@ <channel1>9</channel1> <sam1>5</sam1> <gtb1>0</gtb1> +<xpos>-1225</xpos> +<ypos>0</ypos> <zpos>11515</zpos> </NEULAND> <NEULAND> @@ -12992,6 +14045,7 @@ <NAME>NeuLANDPla7V-1</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>7</layer> <bar>1</bar> <qcal0>1</qcal0> @@ -13022,6 +14076,8 @@ <channel1>8</channel1> <sam1>5</sam1> <gtb1>0</gtb1> +<xpos>-1175</xpos> +<ypos>0</ypos> <zpos>11515</zpos> </NEULAND> <NEULAND> @@ -13029,6 +14085,7 @@ <NAME>NeuLANDPla7V-2</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>7</layer> <bar>2</bar> <qcal0>1</qcal0> @@ -13059,6 +14116,8 @@ <channel1>7</channel1> <sam1>5</sam1> <gtb1>0</gtb1> +<xpos>-1125</xpos> +<ypos>0</ypos> <zpos>11515</zpos> </NEULAND> <NEULAND> @@ -13066,6 +14125,7 @@ <NAME>NeuLANDPla7V-3</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>7</layer> <bar>3</bar> <qcal0>1</qcal0> @@ -13096,6 +14156,8 @@ <channel1>6</channel1> <sam1>5</sam1> <gtb1>0</gtb1> +<xpos>-1075</xpos> +<ypos>0</ypos> <zpos>11515</zpos> </NEULAND> <NEULAND> @@ -13103,6 +14165,7 @@ <NAME>NeuLANDPla7V-4</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>7</layer> <bar>4</bar> <qcal0>1</qcal0> @@ -13133,6 +14196,8 @@ <channel1>5</channel1> <sam1>5</sam1> <gtb1>0</gtb1> +<xpos>-1025</xpos> +<ypos>0</ypos> <zpos>11515</zpos> </NEULAND> <NEULAND> @@ -13140,6 +14205,7 @@ <NAME>NeuLANDPla7V-5</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>7</layer> <bar>5</bar> <qcal0>1</qcal0> @@ -13170,6 +14236,8 @@ <channel1>4</channel1> <sam1>5</sam1> <gtb1>0</gtb1> +<xpos>-975</xpos> +<ypos>0</ypos> <zpos>11515</zpos> </NEULAND> <NEULAND> @@ -13177,6 +14245,7 @@ <NAME>NeuLANDPla7V-6</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>7</layer> <bar>6</bar> <qcal0>1</qcal0> @@ -13207,6 +14276,8 @@ <channel1>3</channel1> <sam1>5</sam1> <gtb1>0</gtb1> +<xpos>-925</xpos> +<ypos>0</ypos> <zpos>11515</zpos> </NEULAND> <NEULAND> @@ -13214,6 +14285,7 @@ <NAME>NeuLANDPla7V-7</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>7</layer> <bar>7</bar> <qcal0>1</qcal0> @@ -13244,6 +14316,8 @@ <channel1>2</channel1> <sam1>5</sam1> <gtb1>0</gtb1> +<xpos>-875</xpos> +<ypos>0</ypos> <zpos>11515</zpos> </NEULAND> <NEULAND> @@ -13251,6 +14325,7 @@ <NAME>NeuLANDPla7V-8</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>7</layer> <bar>8</bar> <qcal0>1</qcal0> @@ -13281,6 +14356,8 @@ <channel1>1</channel1> <sam1>5</sam1> <gtb1>0</gtb1> +<xpos>-825</xpos> +<ypos>0</ypos> <zpos>11515</zpos> </NEULAND> <NEULAND> @@ -13288,6 +14365,7 @@ <NAME>NeuLANDPla7V-9</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>7</layer> <bar>9</bar> <qcal0>1</qcal0> @@ -13318,6 +14396,8 @@ <channel1>0</channel1> <sam1>5</sam1> <gtb1>0</gtb1> +<xpos>-775</xpos> +<ypos>0</ypos> <zpos>11515</zpos> </NEULAND> <NEULAND> @@ -13325,6 +14405,7 @@ <NAME>NeuLANDPla7V-10</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>7</layer> <bar>10</bar> <qcal0>1</qcal0> @@ -13355,6 +14436,8 @@ <channel1>15</channel1> <sam1>5</sam1> <gtb1>0</gtb1> +<xpos>-725</xpos> +<ypos>0</ypos> <zpos>11515</zpos> </NEULAND> <NEULAND> @@ -13362,6 +14445,7 @@ <NAME>NeuLANDPla7V-11</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>7</layer> <bar>11</bar> <qcal0>1</qcal0> @@ -13392,6 +14476,8 @@ <channel1>14</channel1> <sam1>5</sam1> <gtb1>0</gtb1> +<xpos>-675</xpos> +<ypos>0</ypos> <zpos>11515</zpos> </NEULAND> <NEULAND> @@ -13399,6 +14485,7 @@ <NAME>NeuLANDPla7V-12</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>7</layer> <bar>12</bar> <qcal0>1</qcal0> @@ -13429,6 +14516,8 @@ <channel1>13</channel1> <sam1>5</sam1> <gtb1>0</gtb1> +<xpos>-625</xpos> +<ypos>0</ypos> <zpos>11515</zpos> </NEULAND> <NEULAND> @@ -13436,6 +14525,7 @@ <NAME>NeuLANDPla7V-13</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>7</layer> <bar>13</bar> <qcal0>1</qcal0> @@ -13466,6 +14556,8 @@ <channel1>12</channel1> <sam1>5</sam1> <gtb1>0</gtb1> +<xpos>-575</xpos> +<ypos>0</ypos> <zpos>11515</zpos> </NEULAND> <NEULAND> @@ -13473,6 +14565,7 @@ <NAME>NeuLANDPla7V-14</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>7</layer> <bar>14</bar> <qcal0>1</qcal0> @@ -13503,6 +14596,8 @@ <channel1>11</channel1> <sam1>5</sam1> <gtb1>0</gtb1> +<xpos>-525</xpos> +<ypos>0</ypos> <zpos>11515</zpos> </NEULAND> <NEULAND> @@ -13510,6 +14605,7 @@ <NAME>NeuLANDPla7V-15</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>7</layer> <bar>15</bar> <qcal0>1</qcal0> @@ -13540,6 +14636,8 @@ <channel1>10</channel1> <sam1>5</sam1> <gtb1>0</gtb1> +<xpos>-475</xpos> +<ypos>0</ypos> <zpos>11515</zpos> </NEULAND> <NEULAND> @@ -13547,6 +14645,7 @@ <NAME>NeuLANDPla7V-16</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>7</layer> <bar>16</bar> <qcal0>1</qcal0> @@ -13577,6 +14676,8 @@ <channel1>9</channel1> <sam1>5</sam1> <gtb1>0</gtb1> +<xpos>-425</xpos> +<ypos>0</ypos> <zpos>11515</zpos> </NEULAND> <NEULAND> @@ -13584,6 +14685,7 @@ <NAME>NeuLANDPla7V-17</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>7</layer> <bar>17</bar> <qcal0>1</qcal0> @@ -13614,6 +14716,8 @@ <channel1>8</channel1> <sam1>5</sam1> <gtb1>0</gtb1> +<xpos>-375</xpos> +<ypos>0</ypos> <zpos>11515</zpos> </NEULAND> <NEULAND> @@ -13621,6 +14725,7 @@ <NAME>NeuLANDPla7V-18</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>7</layer> <bar>18</bar> <qcal0>1</qcal0> @@ -13651,6 +14756,8 @@ <channel1>7</channel1> <sam1>5</sam1> <gtb1>0</gtb1> +<xpos>-325</xpos> +<ypos>0</ypos> <zpos>11515</zpos> </NEULAND> <NEULAND> @@ -13658,6 +14765,7 @@ <NAME>NeuLANDPla7V-19</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>7</layer> <bar>19</bar> <qcal0>1</qcal0> @@ -13688,6 +14796,8 @@ <channel1>6</channel1> <sam1>5</sam1> <gtb1>0</gtb1> +<xpos>-275</xpos> +<ypos>0</ypos> <zpos>11515</zpos> </NEULAND> <NEULAND> @@ -13695,6 +14805,7 @@ <NAME>NeuLANDPla7V-20</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>7</layer> <bar>20</bar> <qcal0>1</qcal0> @@ -13725,6 +14836,8 @@ <channel1>5</channel1> <sam1>5</sam1> <gtb1>0</gtb1> +<xpos>-225</xpos> +<ypos>0</ypos> <zpos>11515</zpos> </NEULAND> <NEULAND> @@ -13732,6 +14845,7 @@ <NAME>NeuLANDPla7V-21</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>7</layer> <bar>21</bar> <qcal0>1</qcal0> @@ -13762,6 +14876,8 @@ <channel1>4</channel1> <sam1>5</sam1> <gtb1>0</gtb1> +<xpos>-175</xpos> +<ypos>0</ypos> <zpos>11515</zpos> </NEULAND> <NEULAND> @@ -13769,6 +14885,7 @@ <NAME>NeuLANDPla7V-22</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>7</layer> <bar>22</bar> <qcal0>1</qcal0> @@ -13799,6 +14916,8 @@ <channel1>3</channel1> <sam1>5</sam1> <gtb1>0</gtb1> +<xpos>-125</xpos> +<ypos>0</ypos> <zpos>11515</zpos> </NEULAND> <NEULAND> @@ -13806,6 +14925,7 @@ <NAME>NeuLANDPla7V-23</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>7</layer> <bar>23</bar> <qcal0>1</qcal0> @@ -13836,6 +14956,8 @@ <channel1>2</channel1> <sam1>5</sam1> <gtb1>0</gtb1> +<xpos>-75</xpos> +<ypos>0</ypos> <zpos>11515</zpos> </NEULAND> <NEULAND> @@ -13843,6 +14965,7 @@ <NAME>NeuLANDPla7V-24</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>7</layer> <bar>24</bar> <qcal0>1</qcal0> @@ -13873,6 +14996,8 @@ <channel1>1</channel1> <sam1>5</sam1> <gtb1>0</gtb1> +<xpos>-25</xpos> +<ypos>0</ypos> <zpos>11515</zpos> </NEULAND> <NEULAND> @@ -13880,6 +15005,7 @@ <NAME>NeuLANDPla7V-25</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>7</layer> <bar>25</bar> <qcal0>1</qcal0> @@ -13910,6 +15036,8 @@ <channel1>0</channel1> <sam1>5</sam1> <gtb1>0</gtb1> +<xpos>25</xpos> +<ypos>0</ypos> <zpos>11515</zpos> </NEULAND> <NEULAND> @@ -13917,6 +15045,7 @@ <NAME>NeuLANDPla7V-26</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>7</layer> <bar>26</bar> <qcal0>1</qcal0> @@ -13947,6 +15076,8 @@ <channel1>15</channel1> <sam1>5</sam1> <gtb1>0</gtb1> +<xpos>75</xpos> +<ypos>0</ypos> <zpos>11515</zpos> </NEULAND> <NEULAND> @@ -13954,6 +15085,7 @@ <NAME>NeuLANDPla7V-27</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>7</layer> <bar>27</bar> <qcal0>1</qcal0> @@ -13984,6 +15116,8 @@ <channel1>14</channel1> <sam1>5</sam1> <gtb1>0</gtb1> +<xpos>125</xpos> +<ypos>0</ypos> <zpos>11515</zpos> </NEULAND> <NEULAND> @@ -13991,6 +15125,7 @@ <NAME>NeuLANDPla7V-28</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>7</layer> <bar>28</bar> <qcal0>1</qcal0> @@ -14021,6 +15156,8 @@ <channel1>13</channel1> <sam1>5</sam1> <gtb1>0</gtb1> +<xpos>175</xpos> +<ypos>0</ypos> <zpos>11515</zpos> </NEULAND> <NEULAND> @@ -14028,6 +15165,7 @@ <NAME>NeuLANDPla7V-29</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>7</layer> <bar>29</bar> <qcal0>1</qcal0> @@ -14058,6 +15196,8 @@ <channel1>12</channel1> <sam1>5</sam1> <gtb1>0</gtb1> +<xpos>225</xpos> +<ypos>0</ypos> <zpos>11515</zpos> </NEULAND> <NEULAND> @@ -14065,6 +15205,7 @@ <NAME>NeuLANDPla7V-30</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>7</layer> <bar>30</bar> <qcal0>1</qcal0> @@ -14095,6 +15236,8 @@ <channel1>15</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>275</xpos> +<ypos>0</ypos> <zpos>11515</zpos> </NEULAND> <NEULAND> @@ -14102,6 +15245,7 @@ <NAME>NeuLANDPla7V-31</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>7</layer> <bar>31</bar> <qcal0>1</qcal0> @@ -14132,6 +15276,8 @@ <channel1>14</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>325</xpos> +<ypos>0</ypos> <zpos>11515</zpos> </NEULAND> <NEULAND> @@ -14139,6 +15285,7 @@ <NAME>NeuLANDPla7V-32</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>7</layer> <bar>32</bar> <qcal0>1</qcal0> @@ -14169,6 +15316,8 @@ <channel1>13</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>375</xpos> +<ypos>0</ypos> <zpos>11515</zpos> </NEULAND> <NEULAND> @@ -14176,6 +15325,7 @@ <NAME>NeuLANDPla7V-33</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>7</layer> <bar>33</bar> <qcal0>1</qcal0> @@ -14206,6 +15356,8 @@ <channel1>12</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>425</xpos> +<ypos>0</ypos> <zpos>11515</zpos> </NEULAND> <NEULAND> @@ -14213,6 +15365,7 @@ <NAME>NeuLANDPla7V-34</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>7</layer> <bar>34</bar> <qcal0>1</qcal0> @@ -14243,6 +15396,8 @@ <channel1>11</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>475</xpos> +<ypos>0</ypos> <zpos>11515</zpos> </NEULAND> <NEULAND> @@ -14250,6 +15405,7 @@ <NAME>NeuLANDPla7V-35</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>7</layer> <bar>35</bar> <qcal0>1</qcal0> @@ -14280,6 +15436,8 @@ <channel1>10</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>525</xpos> +<ypos>0</ypos> <zpos>11515</zpos> </NEULAND> <NEULAND> @@ -14287,6 +15445,7 @@ <NAME>NeuLANDPla7V-36</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>7</layer> <bar>36</bar> <qcal0>1</qcal0> @@ -14317,6 +15476,8 @@ <channel1>9</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>575</xpos> +<ypos>0</ypos> <zpos>11515</zpos> </NEULAND> <NEULAND> @@ -14324,6 +15485,7 @@ <NAME>NeuLANDPla7V-37</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>7</layer> <bar>37</bar> <qcal0>1</qcal0> @@ -14354,6 +15516,8 @@ <channel1>8</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>625</xpos> +<ypos>0</ypos> <zpos>11515</zpos> </NEULAND> <NEULAND> @@ -14361,6 +15525,7 @@ <NAME>NeuLANDPla7V-38</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>7</layer> <bar>38</bar> <qcal0>1</qcal0> @@ -14391,6 +15556,8 @@ <channel1>7</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>675</xpos> +<ypos>0</ypos> <zpos>11515</zpos> </NEULAND> <NEULAND> @@ -14398,6 +15565,7 @@ <NAME>NeuLANDPla7V-39</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>7</layer> <bar>39</bar> <qcal0>1</qcal0> @@ -14428,6 +15596,8 @@ <channel1>6</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>725</xpos> +<ypos>0</ypos> <zpos>11515</zpos> </NEULAND> <NEULAND> @@ -14435,6 +15605,7 @@ <NAME>NeuLANDPla7V-40</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>7</layer> <bar>40</bar> <qcal0>1</qcal0> @@ -14465,6 +15636,8 @@ <channel1>5</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>775</xpos> +<ypos>0</ypos> <zpos>11515</zpos> </NEULAND> <NEULAND> @@ -14472,6 +15645,7 @@ <NAME>NeuLANDPla7V-41</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>7</layer> <bar>41</bar> <qcal0>1</qcal0> @@ -14502,6 +15676,8 @@ <channel1>4</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>825</xpos> +<ypos>0</ypos> <zpos>11515</zpos> </NEULAND> <NEULAND> @@ -14509,6 +15685,7 @@ <NAME>NeuLANDPla7V-42</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>7</layer> <bar>42</bar> <qcal0>1</qcal0> @@ -14539,6 +15716,8 @@ <channel1>3</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>875</xpos> +<ypos>0</ypos> <zpos>11515</zpos> </NEULAND> <NEULAND> @@ -14546,6 +15725,7 @@ <NAME>NeuLANDPla7V-43</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>7</layer> <bar>43</bar> <qcal0>1</qcal0> @@ -14576,6 +15756,8 @@ <channel1>2</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>925</xpos> +<ypos>0</ypos> <zpos>11515</zpos> </NEULAND> <NEULAND> @@ -14583,6 +15765,7 @@ <NAME>NeuLANDPla7V-44</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>7</layer> <bar>44</bar> <qcal0>1</qcal0> @@ -14613,6 +15796,8 @@ <channel1>1</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>975</xpos> +<ypos>0</ypos> <zpos>11515</zpos> </NEULAND> <NEULAND> @@ -14620,6 +15805,7 @@ <NAME>NeuLANDPla7V-45</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>7</layer> <bar>45</bar> <qcal0>1</qcal0> @@ -14650,6 +15836,8 @@ <channel1>0</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>1025</xpos> +<ypos>0</ypos> <zpos>11515</zpos> </NEULAND> <NEULAND> @@ -14657,6 +15845,7 @@ <NAME>NeuLANDPla7V-46</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>7</layer> <bar>46</bar> <qcal0>1</qcal0> @@ -14687,6 +15876,8 @@ <channel1>15</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>1075</xpos> +<ypos>0</ypos> <zpos>11515</zpos> </NEULAND> <NEULAND> @@ -14694,6 +15885,7 @@ <NAME>NeuLANDPla7V-47</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>7</layer> <bar>47</bar> <qcal0>1</qcal0> @@ -14724,6 +15916,8 @@ <channel1>14</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>1125</xpos> +<ypos>0</ypos> <zpos>11515</zpos> </NEULAND> <NEULAND> @@ -14731,6 +15925,7 @@ <NAME>NeuLANDPla7V-48</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>7</layer> <bar>48</bar> <qcal0>1</qcal0> @@ -14761,6 +15956,8 @@ <channel1>13</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>1175</xpos> +<ypos>0</ypos> <zpos>11515</zpos> </NEULAND> <NEULAND> @@ -14768,6 +15965,7 @@ <NAME>NeuLANDPla7V-49</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>7</layer> <bar>49</bar> <qcal0>1</qcal0> @@ -14798,13 +15996,17 @@ <channel1>12</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>1225</xpos> +<ypos>0</ypos> <zpos>11515</zpos> </NEULAND> +<!-- <NEULAND> <ID>401</ID> <NAME>MasterStart</NAME> <FPL>13</FPL> <direction>V</direction> +<SubLayer>1</SubLayer> <layer>1</layer> <bar>1</bar> <qcal0>1</qcal0> @@ -14835,6 +16037,272 @@ <channel1>11</channel1> <sam1>7</sam1> <gtb1>0</gtb1> +<xpos>-1175</xpos> +<ypos>0</ypos> <zpos>0</zpos> +</NEULAND>--> +<NEULAND> +<ID>401</ID> +<NAME>NEULANDVETO1</NAME> +<FPl>13</FPl> +<direction>V</direction> +<Layer>1</Layer> +<SubLayer>0</SubLayer> +<xpos>-1120</xpos> +<ypos>0</ypos> +<zpos>10830</zpos> +<TUCal>0.0764449</TUCal> +<TUOff>0</TUOff> +<TUSlw>0</TUSlw> +<QUCal>0.0084</QUCal> +<QUPed>270.381</QUPed> +<TDCal>0.0772675</TDCal> +<TDOff>0</TDOff> +<TDSlw>0</TDSlw> +<QDCal>0.0077</QDCal> +<QDPed>327.727</QDPed> +<DTCal>5.27777</DTCal> +<DTOff>0</DTOff> +<TAveOff>0</TAveOff> +<tu_geo>31</tu_geo> +<tu_ch>0</tu_ch> +<td_geo>31</td_geo> +<td_ch>8</td_ch> +<qu_geo>31</qu_geo> +<qu_ch>0</qu_ch> +<qd_geo>31</qd_geo> +<qd_ch>8</qd_ch> +<Ignore>0</Ignore> +</NEULAND> +<NEULAND> +<ID>402</ID> +<NAME>NEULANDVETO2</NAME> +<FPl>13</FPl> +<direction>V</direction> +<Layer>1</Layer> +<SubLayer>0</SubLayer> +<xpos>-800</xpos> +<ypos>0</ypos> +<zpos>10830</zpos> +<TUCal>0.0781229</TUCal> +<TUOff>0</TUOff> +<TUSlw>0</TUSlw> +<QUCal>0.0071</QUCal> +<QUPed>188.705</QUPed> +<TDCal>0.0773227</TDCal> +<TDOff>0</TDOff> +<TDSlw>0</TDSlw> +<QDCal>0.0093</QDCal> +<QDPed>329.087</QDPed> +<DTCal>5.42857</DTCal> +<DTOff>0</DTOff> +<TAveOff>0</TAveOff> +<tu_geo>31</tu_geo> +<tu_ch>1</tu_ch> +<td_geo>31</td_geo> +<td_ch>9</td_ch> +<qu_geo>31</qu_geo> +<qu_ch>1</qu_ch> +<qd_geo>31</qd_geo> +<qd_ch>9</qd_ch> +<Ignore>0</Ignore> +</NEULAND> +<NEULAND> +<ID>403</ID> +<NAME>NEULANDVETO3</NAME> +<FPl>13</FPl> +<direction>V</direction> +<Layer>1</Layer> +<SubLayer>0</SubLayer> +<xpos>-480</xpos> +<ypos>0</ypos> +<zpos>10830</zpos> +<TUCal>0.0768897</TUCal> +<TUOff>0</TUOff> +<TUSlw>0</TUSlw> +<QUCal>0.0064</QUCal> +<QUPed>194.707</QUPed> +<TDCal>0.076907</TDCal> +<TDOff>0</TDOff> +<TDSlw>0</TDSlw> +<QDCal>0.0084</QDCal> +<QDPed>274.876</QDPed> +<DTCal>5.27777</DTCal> +<DTOff>0</DTOff> +<TAveOff>0</TAveOff> +<tu_geo>31</tu_geo> +<tu_ch>2</tu_ch> +<td_geo>31</td_geo> +<td_ch>10</td_ch> +<qu_geo>31</qu_geo> +<qu_ch>2</qu_ch> +<qd_geo>31</qd_geo> +<qd_ch>10</qd_ch> +<Ignore>0</Ignore> +</NEULAND> +<NEULAND> +<ID>404</ID> +<NAME>NEULANDVETO4</NAME> +<FPl>13</FPl> +<direction>V</direction> +<Layer>1</Layer> +<SubLayer>0</SubLayer> +<xpos>-160</xpos> +<ypos>0</ypos> +<zpos>10830</zpos> +<TUCal>0.0763626</TUCal> +<TUOff>0</TUOff> +<TUSlw>0</TUSlw> +<QUCal>0.0092</QUCal> +<QUPed>231.671</QUPed> +<TDCal>0.077865</TDCal> +<TDOff>0</TDOff> +<TDSlw>0</TDSlw> +<QDCal>0.0087</QDCal> +<QDPed>361.245</QDPed> +<DTCal>5.13514</DTCal> +<DTOff>0</DTOff> +<TAveOff>0</TAveOff> +<tu_geo>31</tu_geo> +<tu_ch>3</tu_ch> +<td_geo>31</td_geo> +<td_ch>11</td_ch> +<qu_geo>31</qu_geo> +<qu_ch>3</qu_ch> +<qd_geo>31</qd_geo> +<qd_ch>11</qd_ch> +<Ignore>0</Ignore> +</NEULAND> +<NEULAND> +<ID>405</ID> +<NAME>NEULANDVETO5</NAME> +<FPl>13</FPl> +<direction>V</direction> +<Layer>1</Layer> +<SubLayer>0</SubLayer> +<xpos>160</xpos> +<ypos>0</ypos> +<zpos>10830</zpos> +<TUCal>0.0771958</TUCal> +<TUOff>0</TUOff> +<TUSlw>0</TUSlw> +<QUCal>0.0072</QUCal> +<QUPed>288.36</QUPed> +<TDCal>0.0764381</TDCal> +<TDOff>0</TDOff> +<TDSlw>0</TDSlw> +<QDCal>0.0104</QDCal> +<QDPed>319.26</QDPed> +<DTCal>5.27777</DTCal> +<DTOff>0</DTOff> +<TAveOff>0</TAveOff> +<tu_geo>31</tu_geo> +<tu_ch>4</tu_ch> +<td_geo>31</td_geo> +<td_ch>12</td_ch> +<qu_geo>31</qu_geo> +<qu_ch>4</qu_ch> +<qd_geo>31</qd_geo> +<qd_ch>12</qd_ch> +<Ignore>0</Ignore> +</NEULAND> +<NEULAND> +<ID>406</ID> +<NAME>NEULANDVETO6</NAME> +<FPl>13</FPl> +<direction>V</direction> +<Layer>1</Layer> +<SubLayer>0</SubLayer> +<xpos>480</xpos> +<ypos>0</ypos> +<zpos>10830</zpos> +<TUCal>0.0768041</TUCal> +<TUOff>0</TUOff> +<TUSlw>0</TUSlw> +<QUCal>0.0063</QUCal> +<QUPed>275.527</QUPed> +<TDCal>0.0767091</TDCal> +<TDOff>0</TDOff> +<TDSlw>0</TDSlw> +<QDCal>0.0101</QDCal> +<QDPed>386.405</QDPed> +<DTCal>5.42857</DTCal> +<DTOff>0</DTOff> +<TAveOff>0</TAveOff> +<tu_geo>31</tu_geo> +<tu_ch>5</tu_ch> +<td_geo>31</td_geo> +<td_ch>13</td_ch> +<qu_geo>31</qu_geo> +<qu_ch>5</qu_ch> +<qd_geo>31</qd_geo> +<qd_ch>13</qd_ch> +<Ignore>0</Ignore> +</NEULAND> +<NEULAND> +<ID>407</ID> +<NAME>NEULANDVETO7</NAME> +<FPl>13</FPl> +<direction>V</direction> +<Layer>1</Layer> +<SubLayer>0</SubLayer> +<xpos>800</xpos> +<ypos>0</ypos> +<zpos>10830</zpos> +<TUCal>0.0771441</TUCal> +<TUOff>0</TUOff> +<TUSlw>0</TUSlw> +<QUCal>0.0095</QUCal> +<QUPed>367.965</QUPed> +<TDCal>0.0777481</TDCal> +<TDOff>0</TDOff> +<TDSlw>0</TDSlw> +<QDCal>0.0083</QDCal> +<QDPed>253.031</QDPed> +<DTCal>5</DTCal> +<DTOff>0</DTOff> +<TAveOff>0</TAveOff> +<tu_geo>31</tu_geo> +<tu_ch>6</tu_ch> +<td_geo>31</td_geo> +<td_ch>14</td_ch> +<qu_geo>31</qu_geo> +<qu_ch>6</qu_ch> +<qd_geo>31</qd_geo> +<qd_ch>14</qd_ch> +<Ignore>0</Ignore> +</NEULAND> +<NEULAND> +<ID>408</ID> +<NAME>NEULANDVETO8</NAME> +<FPl>13</FPl> +<direction>V</direction> +<Layer>1</Layer> +<SubLayer>0</SubLayer> +<xpos>1120</xpos> +<ypos>0</ypos> +<zpos>10830</zpos> +<TUCal>0.0772522</TUCal> +<TUOff>0</TUOff> +<TUSlw>0</TUSlw> +<QUCal>0.0101</QUCal> +<QUPed>346.16</QUPed> +<TDCal>0.0786016</TDCal> +<TDOff>0</TDOff> +<TDSlw>0</TDSlw> +<QDCal>0.0096</QDCal> +<QDPed>188.551</QDPed> +<DTCal>5.13514</DTCal> +<DTOff>0</DTOff> +<TAveOff>0</TAveOff> +<tu_geo>31</tu_geo> +<tu_ch>7</tu_ch> +<td_geo>31</td_geo> +<td_ch>15</td_ch> +<qu_geo>31</qu_geo> +<qu_ch>7</qu_ch> +<qd_geo>31</qd_geo> +<qd_ch>15</qd_ch> +<Ignore>0</Ignore> </NEULAND> </dataroot> diff --git a/Projects/S034/s034.detector b/Projects/S034/detector/s034.detector similarity index 56% rename from Projects/S034/s034.detector rename to Projects/S034/detector/s034.detector index 32f48fb1764ff6af96f69d69ecddcab1b233a7e9..665e428383cdad309dd5033af9034281bbfee1b4 100644 --- a/Projects/S034/s034.detector +++ b/Projects/S034/detector/s034.detector @@ -1,9 +1,20 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%Target + THICKNESS= 0.1 cm + %RADIUS= 28 mm + RADIUS= 200 mm + MATERIAL= 7Li + ANGLE= 0 deg + X= 0 cm + Y= 0 mm + Z= -4500 mm + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% BigRIPSPlastic XML= db/SAMURAIPlastic.s034.2.xml %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -BigRIPSIC +%BigRIPSIC XML= db/BigRIPSIC.xml %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -24,7 +35,7 @@ SAMURAIBDC 2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Minos - Position= 0.345399 1.02061 -4650 mm + Position= 0.345399 1.02061 -4650.0 mm ZRotation= 40.6 deg TargetLength= 151.72 mm TargetZOffset= 0 mm @@ -39,29 +50,54 @@ Minos XML= db/MINOS.xml %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Samurai +% POS= 0 0 3900 mm + POS= 0 0 0 mm + ANGLE= 30 deg +% % + METHOD= 0 +% % 0=RungeKutta, 1=EliaOmar + %FIELDMAP= field_map/3T.table.bin + FIELDMAP= field_map/180702-2,40T-3000.table.bin +% % fieldmap path + STEPS_PER_METER= 1000 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + SAMURAIFDC0 - XML= db/SAMURAIFDC0_20200109.xml - Offset= -0.00666226 0.102191 -3370.01 mm - InvertX= 1 - InvertY= 0 - InvertD= 1 + XML= db/SAMURAIFDC0_20200109.xml + %POS= 0 0 0 cm + %Offset= -0.00666226 0.102191 -3370.01 mm + Offset= -0.00666226 0.102191 -3370.01 mm + InvertX= 1 + InvertY= 0 + InvertD= 1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% SAMURAIFDC2 XML= db/SAMURAIFDC2.xml Offset= -252.416 -0.228477 4122.57 mm + OffAngle= 59.930 deg InvertX= 0 InvertY= 1 InvertD= 1 + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% SAMURAIHOD XML= db/SAMURAIHOD_s034_all40mV_s037_20170702.xml %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -NEBULA +%NEBULA XML= db/NEBULA.xml - Offset= 0 0 0 mm + Offset= 0 0 -4647.3 mm InvertX= 0 InvertY= 0 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%NEULAND + XML= db/NEULAND.xml + Offset= 0 0 -4133.64 mm + InvertX= 0 + InvertY= 0 diff --git a/Projects/S034/macro/Beam/BeamPlot.cxx b/Projects/S034/macro/Beam/BeamPlot.cxx new file mode 100644 index 0000000000000000000000000000000000000000..52142a305716688adcf019aa3eda450e2f853f82 --- /dev/null +++ b/Projects/S034/macro/Beam/BeamPlot.cxx @@ -0,0 +1,54 @@ +#include<iostream> + +#include <string> +#include "TString.h" +#include "TFile.h" +#include "TCanvas.h" + +#include "TF1.h" +#include "TH1.h" +#include "TH2.h" +#include "TTree.h" +#include "TCanvas.h" + +using namespace std; + + +void BeamPlot(){ + + TFile *f = new TFile("./root/analysis/run725.root"); + TTree *tree = (TTree*)f->Get("PhysicsTree"); + //cout << "nbr entries = " << tree->GetEntries() << endl; + + TFile foutXThetaX("./beam/hBeamXThetaX.root","recreate"); + auto hBeamXThetaX = new TH2F("hBeamXThetaX","hBeamXThetaX",80,-40,40,80,-0.05,0.05); + tree->Draw("Beam_ThetaX:BDC1_X>>hBeamXThetaX","Beam_ThetaX>-9000 && BDC1_X>-9000 && BDC1_X<1000 && Trigger==0"); + hBeamXThetaX->Write(); + auto hBeamThetaX = new TH1D("hBeamThetaX","hBeamThetaX",300,-0.05,0.05); + tree->Draw("Beam_ThetaX>>hBeamThetaX","Beam_ThetaX>-9000 && Trigger==0"); + hBeamThetaX->Write(); + auto hBeamX = new TH1D("hBeamX","hBeamX",300,-40,40); + tree->Draw("BDC1_X>>hBeamX","BDC1_X>-9000 && BDC1_X<1000 && Trigger==0"); + hBeamX->Write(); + foutXThetaX.Close(); + + TFile foutYThetaY("./beam/hBeamYThetaY.root","recreate"); + auto hBeamYThetaY = new TH2F("hBeamYThetaY","hBeamYThetaY",80,-40,40,80,-0.05,0.05); + tree->Draw("Beam_ThetaY:BDC1_Y>>hBeamYThetaY","Beam_ThetaY>-9000 && BDC1_Y>-9000 && BDC1_Y<1000 && Trigger==0"); + hBeamYThetaY->Write(); + auto hBeamThetaY = new TH1D("hBeamThetaY","hBeamThetaY",300,-0.05,0.05); + tree->Draw("Beam_ThetaY>>hBeamThetaY","Beam_ThetaY>-9000 && Trigger==0"); + hBeamThetaY->Write(); + auto hBeamY = new TH1D("hBeamY","hBeamY",300,-40,40); + tree->Draw("BDC1_Y>>hBeamY","BDC1_Y>-9000 && BDC1_Y<1000 && Trigger==0"); + hBeamY->Write(); + foutYThetaY.Close(); + + TFile foutKE("./beam/hBeamEnergy.root","recreate"); + auto hBeamEnergy = new TH1D("hBeamEnergy","hBeamEnergy",100,1235,1260); + tree->Draw("Beam_KE_Tot>>hBeamEnergy","Beam_KE_Tot>-9000 && Trigger==0"); + hBeamEnergy->Write(); + foutKE.Close(); + + +} diff --git a/Projects/S034/macro/CalibFDC.cxx b/Projects/S034/macro/CalibFDC.cxx deleted file mode 100755 index 3c9cda37430ca701c7e358643f19b0b2012d6603..0000000000000000000000000000000000000000 --- a/Projects/S034/macro/CalibFDC.cxx +++ /dev/null @@ -1,103 +0,0 @@ -void CalibFDC(){ - - for(int run12 =696; run12 <= 700 ; run12++){ - - TChain* c = new TChain("RawTree"); - c->Add(Form("~/nptool/rawData/rawData_FDC/%d.root",run12)); - c->SetBranchStatus("*",false); - - // FDC - /* int FDC = 0; */ - /* int NLayer = 8; */ - /* c->SetBranchStatus("SamuraiFDC0",true); */ - /* ofstream fout(Form("CalibFiles/FDC0_Calib_%d.txt",run12)); */ - /* double inter = 2.5;// inter wire distance */ - /* double low=1720; */ - /* double high=1820; */ - - // FDC2 - int FDC=2; - int NLayer = 14; - c->SetBranchStatus("SamuraiFDC2",true); - ofstream fout(Form("CalibFiles/FDC2_Calib_%d.txt", run12)); - double inter = 10;// inter wire distance - double low=1200; - double high=1700; - - cout <<"Calibrating FDC" << FDC << " run number : " << run12 << endl; - - string cond; - - TF1* f = new TF1("sigmoid","[0]/(exp([1]*([2]-x))+1)"); - //TF1* f = new TF1("sigmoid","0*(x<[0])+(x-[0])*[1]*(x>[0]&&x<[2])+[3]*(x>[2])"); - - TH1D* h = new TH1D("h","h",1500,0,3000); - for(unsigned int i = 0 ; i < NLayer; i++){ - cond = Form("fFDC%d_LayerNbr==%d&&fFDC%d_Edge==0&&fFDC%d_Time>%f&&fFDC%d_Time<%f&&fFDC%d_Time@.size()>10&&fFDC%d_Time@.size()<100",FDC,i,FDC,FDC,low,FDC,high,FDC,FDC); - c->Draw(Form("fFDC%d_Time>>h",FDC),cond.c_str()); - TH1D* g = new TH1D(*h); - unsigned int size = h->GetNbinsX(); - for(unsigned int i = 0 ; i < size ; i++){ - g->SetBinContent(i,h->Integral(0,i)); - } - //new TCanvas(); - //g->Draw(); - cout << g->GetMaximum() << endl; - f->SetParameter(0,g->GetMaximum()); - f->SetParameter(1,8e-3); - f->SetParameter(2,1500); - - g->Fit(f); - // Renormalize the distribution to 10 mm - f->SetParameter(0,inter); - double p0 = f->GetParameter(0); - double p1 = f->GetParameter(1); - double p2 = f->GetParameter(2); - //new TCanvas(); - //c->Draw(Form("%f/(exp(%f*(%f-(Time+ToT)))+1)>>hh(200,0,2.5)",p0,p1,p2),cond.c_str()); - fout << Form("FDC%d_L%d ",FDC,i) << p0 << " " << p1 << " " << p2 << endl; - } - fout.close(); - -/* ////////////////////////////////////////// */ -/* // FDC2 */ -/* ////////////////////////////////////////// */ - -/* FDC=2; */ -/* NLayer = 14; */ -/* c->SetBranchStatus("SamuraiFDC2",true); */ -/* ofstream fout2(Form("CalibFiles/FDC2_Calib_%d.txt", run12)); */ -/* inter = 10;// inter wire distance */ -/* low=1200; */ -/* high=1700; */ -/* h->Clear(); */ - -/* for(unsigned int i = 0 ; i < NLayer; i++){ */ -/* cond = Form("fFDC%d_LayerNbr==%d&&fFDC%d_Edge==0&&fFDC%d_Time>%f&&fFDC%d_Time<%f&&fFDC%d_Time@.size()>10&&fFDC%d_Time@.size()<100",FDC,i,FDC,FDC,low,FDC,high,FDC,FDC); */ -/* c->Draw(Form("fFDC%d_Time>>h",FDC),cond.c_str()); */ -/* TH1D* g = new TH1D(*h); */ -/* unsigned int size = h->GetNbinsX(); */ -/* for(unsigned int i = 0 ; i < size ; i++){ */ -/* g->SetBinContent(i,h->Integral(0,i)); */ -/* } */ -/* //new TCanvas(); */ -/* //g->Draw(); */ -/* cout << g->GetMaximum() << endl; */ -/* f->SetParameter(0,g->GetMaximum()); */ -/* f->SetParameter(1,8e-3); */ -/* f->SetParameter(2,1500); */ - -/* g->Fit(f); */ -/* // Renormalize the distribution to 10 mm */ -/* f->SetParameter(0,inter); */ -/* double p0 = f->GetParameter(0); */ -/* double p1 = f->GetParameter(1); */ -/* double p2 = f->GetParameter(2); */ -/* //new TCanvas(); */ -/* //c->Draw(Form("%f/(exp(%f*(%f-(Time+ToT)))+1)>>hh(200,0,2.5)",p0,p1,p2),cond.c_str()); */ -/* fout2 << Form("FDC%d_L%d ",FDC,i) << p0 << " " << p1 << " " << p2 << endl; */ -/* } */ -/* fout2.close(); */ - - } -} diff --git a/Projects/S034/macro/DriftChamber/DrawDCReconstructionBDCs.cxx b/Projects/S034/macro/DriftChamber/DrawDCReconstructionBDCs.cxx new file mode 100644 index 0000000000000000000000000000000000000000..14365c13be297e6cd46cf800a85556a894272a0a --- /dev/null +++ b/Projects/S034/macro/DriftChamber/DrawDCReconstructionBDCs.cxx @@ -0,0 +1,271 @@ +#include<iostream> +#include <string> +#include "TString.h" +#include "TEllipse.h" +using namespace std; + +void DrawDCReconstructionBDCs(){ + + auto anafile = new TFile("./root/analysis/run725.root"); + auto anatree = (TTree*) anafile->FindObjectAny("PhysicsTree"); + + auto SamuraiBDC = new TSamuraiBDCPhysics(); + anatree->SetBranchAddress("SamuraiBDC", &SamuraiBDC); + + //// BDC1 //// + vector<double> Wire_X_P1_BDC1, Wire_X_P2_BDC1; + vector<double> Wire_Z_P1_BDC1, Wire_Z_P2_BDC1 ; + vector<double> Wire_DriftLength_P1_BDC1, Wire_DriftLength_P2_BDC1; + double Track_a_P1_BDC1, Track_a_P2_BDC1; + double Track_b_P1_BDC1, Track_b_P2_BDC1; + double Track_D_P1_BDC1, Track_D_P2_BDC1; + double UpperXLimit_P1_BDC1,UpperXLimit_P2_BDC1, LowerXLimit_P1_BDC1, LowerXLimit_P2_BDC1; + + + //// BDC2 //// + vector<double> Wire_X_P1_BDC2, Wire_X_P2_BDC2; + vector<double> Wire_Z_P1_BDC2, Wire_Z_P2_BDC2 ; + vector<double> Wire_DriftLength_P1_BDC2, Wire_DriftLength_P2_BDC2; + double Track_a_P1_BDC2, Track_a_P2_BDC2; + double Track_b_P1_BDC2, Track_b_P2_BDC2; + double Track_D_P1_BDC2, Track_D_P2_BDC2; + double UpperXLimit_P1_BDC2,UpperXLimit_P2_BDC2, LowerXLimit_P1_BDC2, LowerXLimit_P2_BDC2; + + + TCanvas *c1 = new TCanvas(); + c1->Divide(2,2); + + //// BDC1 //// + TGraph *g1 = new TGraph(); + g1->GetXaxis()->SetTitle("X"); + g1->GetYaxis()->SetTitle("Z"); + + TGraph *g2 = new TGraph(); + g2->GetXaxis()->SetTitle("X"); + g2->GetYaxis()->SetTitle("Z"); + + + //// BDC2 //// + TGraph *g3 = new TGraph(); + g3->GetXaxis()->SetTitle("X"); + g3->GetYaxis()->SetTitle("Z"); + + TGraph *g4 = new TGraph(); + g4->GetXaxis()->SetTitle("X"); + g4->GetYaxis()->SetTitle("Z"); + + unsigned int n = 145; + for( unsigned int i = n; i < (n +1); i++) + { + anatree->GetEntry(i); + + //// BDC1 //// + unsigned int VectorEntriesBDC1 = SamuraiBDC->GetMultDet(1); + if(VectorEntriesBDC1==0) return; + for (unsigned int j = 0; j < VectorEntriesBDC1 ; j++) + { + if(SamuraiBDC->Wire_PosAngle[1][j]==0) + { + g1->SetPoint(g1->GetN(), SamuraiBDC->Wire_PosX[1][j],SamuraiBDC->Wire_PosZ[1][j]); + + Wire_X_P1_BDC1.push_back(SamuraiBDC->Wire_PosX[1][j]); + Wire_Z_P1_BDC1.push_back(SamuraiBDC->Wire_PosZ[1][j]); + Wire_DriftLength_P1_BDC1.push_back(SamuraiBDC->Wire_PosR[1][j]); + Track_a_P1_BDC1 = 1/SamuraiBDC->Track_a[1][0]; + Track_b_P1_BDC1 = -Track_a_P1_BDC1*SamuraiBDC->Track_b[1][0]; + Track_D_P1_BDC1 = SamuraiBDC->Track_D[1][0]; + } + + if(SamuraiBDC->Wire_PosAngle[1][j]!=0) + { + g2->SetPoint(g2->GetN(), SamuraiBDC->Wire_PosX[1][j],SamuraiBDC->Wire_PosZ[1][j]); + + Wire_X_P2_BDC1.push_back(SamuraiBDC->Wire_PosX[1][j]); + Wire_Z_P2_BDC1.push_back(SamuraiBDC->Wire_PosZ[1][j]); + Wire_DriftLength_P2_BDC1.push_back(SamuraiBDC->Wire_PosR[1][j]); + Track_a_P2_BDC1 = 1/SamuraiBDC->Track_a[1][1]; + Track_b_P2_BDC1 = -Track_a_P2_BDC1*SamuraiBDC->Track_b[1][1]; + Track_D_P2_BDC1 = SamuraiBDC->Track_D[1][1]; + } + + } + + //// BDC2 //// + unsigned int VectorEntriesBDC2 = SamuraiBDC->GetMultDet(2); + if(VectorEntriesBDC2==0) return; + for (unsigned int j = 0; j < VectorEntriesBDC2 ; j++) + { + if(SamuraiBDC->Wire_PosAngle[2][j]==0) + { + g3->SetPoint(g3->GetN(), SamuraiBDC->Wire_PosX[2][j],SamuraiBDC->Wire_PosZ[2][j]); + + Wire_X_P1_BDC2.push_back(SamuraiBDC->Wire_PosX[2][j]); + Wire_Z_P1_BDC2.push_back(SamuraiBDC->Wire_PosZ[2][j]); + Wire_DriftLength_P1_BDC2.push_back(SamuraiBDC->Wire_PosR[2][j]); + Track_a_P1_BDC2 = 1/SamuraiBDC->Track_a[2][0]; + Track_b_P1_BDC2 = -Track_a_P1_BDC2*SamuraiBDC->Track_b[2][0]; + Track_D_P1_BDC2 = SamuraiBDC->Track_D[2][0]; + } + + if(SamuraiBDC->Wire_PosAngle[2][j]!=0) + { + g4->SetPoint(g4->GetN(), SamuraiBDC->Wire_PosX[2][j],SamuraiBDC->Wire_PosZ[2][j]); + + Wire_X_P2_BDC2.push_back(SamuraiBDC->Wire_PosX[2][j]); + Wire_Z_P2_BDC2.push_back(SamuraiBDC->Wire_PosZ[2][j]); + Wire_DriftLength_P2_BDC2.push_back(SamuraiBDC->Wire_PosR[2][j]); + Track_a_P2_BDC2 = 1/SamuraiBDC->Track_a[2][1]; + Track_b_P2_BDC2 = -Track_a_P2_BDC2*SamuraiBDC->Track_b[2][1]; + Track_D_P2_BDC2 = SamuraiBDC->Track_D[2][1]; + } + + } + + //// BDC1 //// + + UpperXLimit_P1_BDC1 = Wire_X_P1_BDC1[0] + 50; + LowerXLimit_P1_BDC1 = Wire_X_P1_BDC1[0] - 50; + + cout << "Track_a_P1_BDC1 = " << Track_a_P1_BDC1 << endl; + cout << "Track_b_P1_BDC1 = " << Track_b_P1_BDC1 << endl; + cout << "Track_D_P1_BDC1 = " << Track_D_P1_BDC1 << endl; + cout << endl; + + UpperXLimit_P2_BDC1 = Wire_X_P2_BDC1[0] + 50; + LowerXLimit_P2_BDC1 = Wire_X_P2_BDC1[0] - 50; + + cout << "Track_a_P2_BDC1 = " << Track_a_P2_BDC1 << endl; + cout << "Track_b_P2_BDC1 = " << Track_b_P2_BDC1 << endl; + cout << "Track_D_P2_BDC1 = " << Track_D_P2_BDC1 << endl; + cout << endl; + + //// BDC2 //// + + UpperXLimit_P1_BDC2 = Wire_X_P1_BDC2[0] + 50; + LowerXLimit_P1_BDC2 = Wire_X_P1_BDC2[0] - 50; + + cout << "Track_a_P1_BDC2 = " << Track_a_P1_BDC2 << endl; + cout << "Track_b_P1_BDC2 = " << Track_b_P1_BDC2 << endl; + cout << "Track_D_P1_BDC2 = " << Track_D_P1_BDC2 << endl; + cout << endl; + + UpperXLimit_P2_BDC2 = Wire_X_P2_BDC2[0] + 50; + LowerXLimit_P2_BDC2 = Wire_X_P2_BDC2[0] - 50; + + cout << "Track_a_P2_BDC2 = " << Track_a_P2_BDC2 << endl; + cout << "Track_b_P2_BDC2 = " << Track_b_P2_BDC2 << endl; + cout << "Track_D_P2_BDC2 = " << Track_D_P2_BDC2 << endl; + + + /////////// Draw ///////////// + + //// BDC1 //// + ///// Plan 1 ///// + c1->cd(1); + g1->Draw("AP"); + cout << "Number of Wires with information in plan 1 = " << Wire_X_P1_BDC1.size() << endl; + for(unsigned int j=0; j< Wire_X_P1_BDC1.size(); j++){ + TEllipse *circle1 = new TEllipse(Wire_X_P1_BDC1[j],Wire_Z_P1_BDC1[j],Wire_DriftLength_P1_BDC1[j],Wire_DriftLength_P1_BDC1[j]); + circle1->Draw(); + } + + TH1 *t1 = g1->GetHistogram(); + t1->GetXaxis()->SetLimits(LowerXLimit_P1_BDC1, UpperXLimit_P1_BDC1); + t1->GetYaxis()->SetRangeUser(-40,40); + + auto f1 = new TF1("f1","[0]*x+[1]",-200,200); + f1->SetParameters(Track_a_P1_BDC1,Track_b_P1_BDC1); + + double YLine1_P1_BDC1 = f1->Eval(LowerXLimit_P1_BDC1); + double YLine2_P1_BDC1 = f1->Eval(UpperXLimit_P1_BDC1); + + TLine *l1=new TLine(LowerXLimit_P1_BDC1,YLine1_P1_BDC1,UpperXLimit_P1_BDC1,YLine2_P1_BDC1); + l1->SetLineColor(kBlue); + l1->SetLineWidth(2); + l1->Draw("SAME"); + + ///// Plan 2 ///// + c1->cd(2); + g2->Draw("AP"); + cout << "Number of Wires with information in plan 2 = " << Wire_X_P2_BDC1.size() << endl; + for(unsigned int j=0; j< Wire_X_P2_BDC1.size(); j++){ + TEllipse *circle2 = new TEllipse(Wire_X_P2_BDC1[j],Wire_Z_P2_BDC1[j],Wire_DriftLength_P2_BDC1[j],Wire_DriftLength_P2_BDC1[j]); + circle2->Draw(); + } + + TH1 *t2 = g2->GetHistogram(); + t2->GetXaxis()->SetLimits(LowerXLimit_P2_BDC1, UpperXLimit_P2_BDC1); + t2->GetYaxis()->SetRangeUser(-40,40); + + auto f2 = new TF1("f2","[0]*x+[1]",-200,200); + f2->SetParameters(Track_a_P2_BDC1,Track_b_P2_BDC1); + + double YLine1_P2_BDC1 = f2->Eval(LowerXLimit_P2_BDC1); + double YLine2_P2_BDC1 = f2->Eval(UpperXLimit_P2_BDC1); + + TLine *l2=new TLine(LowerXLimit_P2_BDC1,YLine1_P2_BDC1,UpperXLimit_P2_BDC1,YLine2_P2_BDC1); + l2->SetLineColor(kBlue); + l2->SetLineWidth(2); + l2->Draw("SAME"); + + +//// BDC2 //// + ///// Plan 1 ///// + c1->cd(3); + g3->Draw("AP"); + cout << "Number of Wires with information in plan 1 = " << Wire_X_P1_BDC2.size() << endl; + for(unsigned int j=0; j< Wire_X_P1_BDC2.size(); j++){ + TEllipse *circle3 = new TEllipse(Wire_X_P1_BDC2[j],Wire_Z_P1_BDC2[j],Wire_DriftLength_P1_BDC2[j],Wire_DriftLength_P1_BDC2[j]); + circle3->Draw(); + } + + TH1 *t3 = g3->GetHistogram(); + t3->GetXaxis()->SetLimits(LowerXLimit_P1_BDC2, UpperXLimit_P1_BDC2); + t3->GetYaxis()->SetRangeUser(-40,40); + + auto f3 = new TF1("f3","[0]*x+[1]",-200,200); + f3->SetParameters(Track_a_P1_BDC2,Track_b_P1_BDC2); + + double YLine1_P1_BDC2 = f3->Eval(LowerXLimit_P1_BDC2); + double YLine2_P1_BDC2 = f3->Eval(UpperXLimit_P1_BDC2); + + TLine *l3=new TLine(LowerXLimit_P1_BDC2,YLine1_P1_BDC2,UpperXLimit_P1_BDC2,YLine2_P1_BDC2); + l3->SetLineColor(kBlue); + l3->SetLineWidth(2); + l3->Draw("SAME"); + + ///// Plan 2 ///// + c1->cd(4); + g4->Draw("AP"); + cout << "Number of Wires with information in plan 2 = " << Wire_X_P2_BDC2.size() << endl; + for(unsigned int j=0; j< Wire_X_P2_BDC2.size(); j++){ + TEllipse *circle4 = new TEllipse(Wire_X_P2_BDC2[j],Wire_Z_P2_BDC2[j],Wire_DriftLength_P2_BDC2[j],Wire_DriftLength_P2_BDC2[j]); + circle4->Draw(); + } + + TH1 *t4 = g4->GetHistogram(); + t4->GetXaxis()->SetLimits(LowerXLimit_P2_BDC2, UpperXLimit_P2_BDC2); + t4->GetYaxis()->SetRangeUser(-40,40); + + auto f4 = new TF1("f4","[0]*x+[1]",-200,200); + f4->SetParameters(Track_a_P2_BDC2,Track_b_P2_BDC2); + + double YLine1_P2_BDC2 = f4->Eval(LowerXLimit_P2_BDC2); + double YLine2_P2_BDC2 = f4->Eval(UpperXLimit_P2_BDC2); + + TLine *l4=new TLine(LowerXLimit_P2_BDC2,YLine1_P2_BDC2,UpperXLimit_P2_BDC2,YLine2_P2_BDC2); + l4->SetLineColor(kBlue); + l4->SetLineWidth(2); + l4->Draw("SAME"); + + + + + + }// end of for loop + + +} + + + diff --git a/Projects/S034/macro/DriftChamber/DrawDCReconstructionFDC0.cxx b/Projects/S034/macro/DriftChamber/DrawDCReconstructionFDC0.cxx new file mode 100644 index 0000000000000000000000000000000000000000..8819ad5ee2a19d59d207c64a6e57374fbb45645d --- /dev/null +++ b/Projects/S034/macro/DriftChamber/DrawDCReconstructionFDC0.cxx @@ -0,0 +1,145 @@ +#include<iostream> +#include <string> +#include "TString.h" +#include "TEllipse.h" +using namespace std; + +void DrawDCReconstructionFDC0(){ + + auto anafile = new TFile("./root/analysis/run725.root"); + auto anatree = (TTree*) anafile->FindObjectAny("PhysicsTree"); + + auto SamuraiFDC0 = new TSamuraiFDC0Physics(); + anatree->SetBranchAddress("SamuraiFDC0", &SamuraiFDC0); + + vector<double> Wire_X_P1, Wire_X_P2; + vector<double> Wire_Z_P1, Wire_Z_P2 ; + vector<double> Wire_DriftLength_P1, Wire_DriftLength_P2; + double Track_a_P1, Track_a_P2; + double Track_b_P1, Track_b_P2; + double Track_D_P1, Track_D_P2; + + double UpperXLimit_P1,UpperXLimit_P2, LowerXLimit_P1, LowerXLimit_P2 ; + + TCanvas *c1 = new TCanvas(); + c1->Divide(2,1); + + TGraph *g1 = new TGraph(); + g1->GetXaxis()->SetTitle("X"); + g1->GetYaxis()->SetTitle("Z"); + + TGraph *g2 = new TGraph(); + g2->GetXaxis()->SetTitle("X"); + g2->GetYaxis()->SetTitle("Z"); + + unsigned int n = 16; + for( unsigned int i = n; i < (n +1); i++) + { + anatree->GetEntry(i); + unsigned int VectorEntries = SamuraiFDC0->GetMult(); + + if(VectorEntries==0) return; + + for (unsigned int j = 0; j < VectorEntries ; j++) + { + if(SamuraiFDC0->Wire_PosAngle[j]==0) + { + g1->SetPoint(g1->GetN(), SamuraiFDC0->Wire_PosX[j],SamuraiFDC0->Wire_PosZ[j]); + + Wire_X_P1.push_back(SamuraiFDC0->Wire_PosX[j]); + Wire_Z_P1.push_back(SamuraiFDC0->Wire_PosZ[j]); + Wire_DriftLength_P1.push_back(SamuraiFDC0->Wire_PosR[j]); + Track_a_P1 = 1/SamuraiFDC0->Track_a[0]; + Track_b_P1 = -Track_a_P1*SamuraiFDC0->Track_b[0]; + Track_D_P1 = SamuraiFDC0->Track_D[0]; + } + + if(SamuraiFDC0->Wire_PosAngle[j]!=0) + { + g2->SetPoint(g2->GetN(), SamuraiFDC0->Wire_PosX[j],SamuraiFDC0->Wire_PosZ[j]); + + Wire_X_P2.push_back(SamuraiFDC0->Wire_PosX[j]); + Wire_Z_P2.push_back(SamuraiFDC0->Wire_PosZ[j]); + Wire_DriftLength_P2.push_back(SamuraiFDC0->Wire_PosR[j]); + Track_a_P2 = 1/SamuraiFDC0->Track_a[1]; + Track_b_P2 = -Track_a_P2*SamuraiFDC0->Track_b[1]; + Track_D_P2 = SamuraiFDC0->Track_D[1]; + } + + } + + UpperXLimit_P1 = Wire_X_P1[0] + 50; + LowerXLimit_P1 = Wire_X_P1[0] - 50; + + cout << "Track_a_P1 = " << Track_a_P1 << endl; + cout << "Track_b_P1 = " << Track_b_P1 << endl; + cout << "Track_D_P1 = " << Track_D_P1 << endl; + cout << endl; + + UpperXLimit_P2 = Wire_X_P2[0] + 50; + LowerXLimit_P2 = Wire_X_P2[0] - 50; + + cout << "Track_a_P2 = " << Track_a_P2 << endl; + cout << "Track_b_P2 = " << Track_b_P2 << endl; + cout << "Track_D_P2 = " << Track_D_P2 << endl; + + /////////// Draw ///////////// + + ///// Plan 1 ///// + c1->cd(1); + g1->Draw("AP"); + cout << "Number of Wires with information in plan 1 = " << Wire_X_P1.size() << endl; + for(unsigned int j=0; j< Wire_X_P1.size(); j++){ + TEllipse *circle1 = new TEllipse(Wire_X_P1[j],Wire_Z_P1[j],Wire_DriftLength_P1[j],Wire_DriftLength_P1[j]); + circle1->Draw(); + //cout << " circle drawn = " << j << endl; + } + + TH1 *t1 = g1->GetHistogram(); + t1->GetXaxis()->SetLimits(LowerXLimit_P1, UpperXLimit_P1); + t1->GetYaxis()->SetRangeUser(-40,40); + + auto f1 = new TF1("f1","[0]*x+[1]",-200,200); + f1->SetParameters(Track_a_P1,Track_b_P1); + + double YLine1_P1 = f1->Eval(LowerXLimit_P1); + double YLine2_P1 = f1->Eval(UpperXLimit_P1); + + TLine *l1=new TLine(LowerXLimit_P1,YLine1_P1,UpperXLimit_P1,YLine2_P1); + l1->SetLineColor(kBlue); + l1->SetLineWidth(2); + l1->Draw("SAME"); + + ///// Plan 2 ///// + c1->cd(2); + g2->Draw("AP"); + cout << "Number of Wires with information in plan 2 = " << Wire_X_P2.size() << endl; + for(unsigned int j=0; j< Wire_X_P2.size(); j++){ + TEllipse *circle2 = new TEllipse(Wire_X_P2[j],Wire_Z_P2[j],Wire_DriftLength_P2[j],Wire_DriftLength_P2[j]); + circle2->Draw(); + //cout << " circle drawn = " << j << endl; + } + + TH1 *t2 = g2->GetHistogram(); + t2->GetXaxis()->SetLimits(LowerXLimit_P2, UpperXLimit_P2); + t2->GetYaxis()->SetRangeUser(-40,40); + + auto f2 = new TF1("f2","[0]*x+[1]",-200,200); + f2->SetParameters(Track_a_P2,Track_b_P2); + + double YLine1_P2 = f2->Eval(LowerXLimit_P2); + double YLine2_P2 = f2->Eval(UpperXLimit_P2); + + TLine *l2=new TLine(LowerXLimit_P2,YLine1_P2,UpperXLimit_P2,YLine2_P2); + l2->SetLineColor(kBlue); + l2->SetLineWidth(2); + l2->Draw("SAME"); + + + }// end of for loop + + +} + + + diff --git a/Projects/S034/macro/DriftChamber/DrawDCReconstructionFDC2.cxx b/Projects/S034/macro/DriftChamber/DrawDCReconstructionFDC2.cxx new file mode 100644 index 0000000000000000000000000000000000000000..dfda4982bb86066d8405f9f7a0abb777e3b35aeb --- /dev/null +++ b/Projects/S034/macro/DriftChamber/DrawDCReconstructionFDC2.cxx @@ -0,0 +1,192 @@ +#include<iostream> +#include <string> +#include "TString.h" +#include "TEllipse.h" +using namespace std; + +void DrawDCReconstructionFDC2(){ + + auto anafile = new TFile("./root/analysis/run725.root"); + auto anatree = (TTree*) anafile->FindObjectAny("PhysicsTree"); + + auto SamuraiFDC2 = new TSamuraiFDC2Physics(); + anatree->SetBranchAddress("SamuraiFDC2", &SamuraiFDC2); + + vector<double> Wire_X_P1, Wire_X_P2, Wire_X_P3; + vector<double> Wire_Z_P1, Wire_Z_P2, Wire_Z_P3 ; + vector<double> Wire_DriftLength_P1, Wire_DriftLength_P2,Wire_DriftLength_P3 ; + double Track_a_P1, Track_a_P2, Track_a_P3; + double Track_b_P1, Track_b_P2, Track_b_P3; + double Track_D_P1, Track_D_P2, Track_D_P3; + + double UpperXLimit_P1,UpperXLimit_P2,UpperXLimit_P3; + double LowerXLimit_P1, LowerXLimit_P2, LowerXLimit_P3 ; + + TCanvas *c1 = new TCanvas(); + c1->Divide(3,1); + + TGraph *g1 = new TGraph(); + g1->GetXaxis()->SetTitle("X"); + g1->GetYaxis()->SetTitle("Z"); + + TGraph *g2 = new TGraph(); + g2->GetXaxis()->SetTitle("X"); + g2->GetYaxis()->SetTitle("Z"); + + TGraph *g3 = new TGraph(); + g3->GetXaxis()->SetTitle("X"); + g3->GetYaxis()->SetTitle("Z"); + + unsigned int n = 824; + for( unsigned int i = n; i < (n +1); i++) + { + cout << i << endl; + anatree->GetEntry(i); + unsigned int VectorEntries = SamuraiFDC2->GetMult(); + if(VectorEntries==0) return; + + for (unsigned int j = 0; j < VectorEntries ; j++) + { + if(SamuraiFDC2->Wire_PosAngle[j]<0) + { + g1->SetPoint(g1->GetN(), SamuraiFDC2->Wire_PosX[j],SamuraiFDC2->Wire_PosZ[j]); + + Wire_X_P1.push_back(SamuraiFDC2->Wire_PosX[j]); + Wire_Z_P1.push_back(SamuraiFDC2->Wire_PosZ[j]); + Wire_DriftLength_P1.push_back(SamuraiFDC2->Wire_PosR[j]); + Track_a_P1 = 1/SamuraiFDC2->Track_a[0]; + Track_b_P1 = -Track_a_P1*SamuraiFDC2->Track_b[0]; + Track_D_P1 = SamuraiFDC2->Track_D[0]; + } + + if(SamuraiFDC2->Wire_PosAngle[j]==0) + { + g2->SetPoint(g2->GetN(), SamuraiFDC2->Wire_PosX[j],SamuraiFDC2->Wire_PosZ[j]); + + Wire_X_P2.push_back(SamuraiFDC2->Wire_PosX[j]); + Wire_Z_P2.push_back(SamuraiFDC2->Wire_PosZ[j]); + Wire_DriftLength_P2.push_back(SamuraiFDC2->Wire_PosR[j]); + Track_a_P2 = 1/SamuraiFDC2->Track_a[1]; + Track_b_P2 = -Track_a_P2*SamuraiFDC2->Track_b[1]; + Track_D_P2 = SamuraiFDC2->Track_D[1]; + } + + if(SamuraiFDC2->Wire_PosAngle[j]>0) + { + g3->SetPoint(g3->GetN(), SamuraiFDC2->Wire_PosX[j],SamuraiFDC2->Wire_PosZ[j]); + + Wire_X_P3.push_back(SamuraiFDC2->Wire_PosX[j]); + Wire_Z_P3.push_back(SamuraiFDC2->Wire_PosZ[j]); + Wire_DriftLength_P3.push_back(SamuraiFDC2->Wire_PosR[j]); + Track_a_P3 = 1/SamuraiFDC2->Track_a[2]; + Track_b_P3 = -Track_a_P3*SamuraiFDC2->Track_b[2]; + Track_D_P3 = SamuraiFDC2->Track_D[2]; + } + } + + UpperXLimit_P1 = Wire_X_P1[0] + 200; + LowerXLimit_P1 = Wire_X_P1[0] - 200; + + cout << "Track_a_P1 = " << Track_a_P1 << endl; + cout << "Track_b_P1 = " << Track_b_P1 << endl; + cout << "Track_D_P1 = " << Track_D_P1 << endl; + cout << endl; + + UpperXLimit_P2 = Wire_X_P2[0] + 200; + LowerXLimit_P2 = Wire_X_P2[0] - 200; + + cout << "Track_a_P2 = " << Track_a_P2 << endl; + cout << "Track_b_P2 = " << Track_b_P2 << endl; + cout << "Track_D_P2 = " << Track_D_P2 << endl; + cout << endl; + + UpperXLimit_P3 = Wire_X_P3[0] + 200; + LowerXLimit_P3 = Wire_X_P3[0] - 200; + + cout << "Track_a_P3 = " << Track_a_P3 << endl; + cout << "Track_b_P3 = " << Track_b_P3 << endl; + cout << "Track_D_P3 = " << Track_D_P3 << endl; + + /////////// Draw ///////////// + + ///// Plan 1 ///// + c1->cd(1); + g1->Draw("AP"); + cout << "Number of Wires with information in plan 1 = " << Wire_X_P1.size() << endl; + for(unsigned int j=0; j< Wire_X_P1.size(); j++){ + TEllipse *circle1 = new TEllipse(Wire_X_P1[j],Wire_Z_P1[j],Wire_DriftLength_P1[j],Wire_DriftLength_P1[j]); + circle1->Draw(); + } + + TH1 *t1 = g1->GetHistogram(); + t1->GetXaxis()->SetLimits(LowerXLimit_P1, UpperXLimit_P1); + t1->GetYaxis()->SetRangeUser(-400,400); + + auto f1 = new TF1("f1","[0]*x+[1]",-200,200); + f1->SetParameters(Track_a_P1,Track_b_P1); + + double YLine1_P1 = f1->Eval(LowerXLimit_P1); + double YLine2_P1 = f1->Eval(UpperXLimit_P1); + + TLine *l1=new TLine(LowerXLimit_P1,YLine1_P1,UpperXLimit_P1,YLine2_P1); + l1->SetLineColor(kBlue); + l1->SetLineWidth(2); + l1->Draw("SAME"); + + ///// Plan 2 ///// + c1->cd(2); + g2->Draw("AP"); + cout << "Number of Wires with information in plan 2 = " << Wire_X_P2.size() << endl; + for(unsigned int j=0; j< Wire_X_P2.size(); j++){ + TEllipse *circle2 = new TEllipse(Wire_X_P2[j],Wire_Z_P2[j],Wire_DriftLength_P2[j],Wire_DriftLength_P2[j]); + circle2->Draw(); + //cout << " circle drawn = " << j << endl; + } + + TH1 *t2 = g2->GetHistogram(); + t2->GetXaxis()->SetLimits(LowerXLimit_P2, UpperXLimit_P2); + t2->GetYaxis()->SetRangeUser(-400,400); + + auto f2 = new TF1("f2","[0]*x+[1]",-200,200); + f2->SetParameters(Track_a_P2,Track_b_P2); + + double YLine1_P2 = f2->Eval(LowerXLimit_P2); + double YLine2_P2 = f2->Eval(UpperXLimit_P2); + + TLine *l2=new TLine(LowerXLimit_P2,YLine1_P2,UpperXLimit_P2,YLine2_P2); + l2->SetLineColor(kBlue); + l2->SetLineWidth(2); + l2->Draw("SAME"); + + ///// Plan 3 ///// + c1->cd(3); + g3->Draw("AP"); + cout << "Number of Wires with information in plan 3 = " << Wire_X_P3.size() << endl; + for(unsigned int j=0; j< Wire_X_P3.size(); j++){ + TEllipse *circle3 = new TEllipse(Wire_X_P3[j],Wire_Z_P3[j],Wire_DriftLength_P3[j],Wire_DriftLength_P3[j]); + circle3->Draw(); + } + + TH1 *t3 = g3->GetHistogram(); + t3->GetXaxis()->SetLimits(LowerXLimit_P3, UpperXLimit_P3); + t3->GetYaxis()->SetRangeUser(-400,400); + + auto f3 = new TF1("f3","[0]*x+[1]",-200,200); + f3->SetParameters(Track_a_P3,Track_b_P3); + + double YLine1_P3 = f3->Eval(LowerXLimit_P3); + double YLine2_P3 = f3->Eval(UpperXLimit_P3); + + TLine *l3=new TLine(LowerXLimit_P3,YLine1_P3,UpperXLimit_P3,YLine2_P3); + l3->SetLineColor(kBlue); + l3->SetLineWidth(2); + l3->Draw("SAME"); + + + }// end of for loop + + +} + + + diff --git a/Projects/S034/macro/DriftChamber/ResolutionBDC.cxx b/Projects/S034/macro/DriftChamber/ResolutionBDC.cxx new file mode 100644 index 0000000000000000000000000000000000000000..bf0395002e1f8c09c18160c1c2ab7a96e9cad758 --- /dev/null +++ b/Projects/S034/macro/DriftChamber/ResolutionBDC.cxx @@ -0,0 +1,297 @@ +using namespace std; + +//#include "TSamuraiBDCPhysics.h" + +void ResolutionBDC(){ + + auto simufile = new TFile("root/simulation/SimulationResolutionBDCV2.root"); + auto simutree = (TTree*) simufile->FindObjectAny("SimulatedTree"); + + auto anafile = new TFile("root/analysis/AnalysisResolutionBDCV2.root"); + auto anatree = (TTree*) anafile->FindObjectAny("PhysicsTree"); + + simutree->AddFriend(anatree); + + TH1 *hResolutionX_BDC1 = new TH1D("hResolutionX_BDC1", "hResolutionX_BDC1",100, -0.2,0.2); + TH1 *hResolutionY_BDC1 = new TH1D("hResolutionY_BDC1", "hResolutionY_BDC1",100, -0.2,0.2); + + TH1 *hResolutionX_BDC2 = new TH1D("hResolutionX_BDC2", "hResolutionX_BDC2",100, -0.2,0.2); + TH1 *hResolutionY_BDC2 = new TH1D("hResolutionY_BDC2", "hResolutionY_BDC2",100, -0.2,0.2); + + double X_Beam, Y_Beam, Z_Beam; + X_Beam = 0.0; + Y_Beam = 0.0; + Z_Beam = -7000; //mm + + vector<double> *PosInWireX = new vector <double>(); + vector<double> *PosInWireY = new vector <double>(); + vector<double> *PosInWireZ = new vector <double>(); + + simutree->SetBranchAddress("PosInWireX",&PosInWireX); + simutree->SetBranchAddress("PosInWireY",&PosInWireY); + simutree->SetBranchAddress("PosInWireZ",&PosInWireZ); + + auto SamuraiBDC = new TSamuraiBDCData(); + simutree->SetBranchAddress("SamuraiBDC", &SamuraiBDC); + + auto PhysicsBDC = new TSamuraiBDCPhysics(); + anatree->SetBranchAddress("SamuraiBDC", &PhysicsBDC); + + //Position calculated in PhysicsSamuraiBDC.cxx + double PosX_calc_BDC1,PosY_calc_BDC1,PosZ_calc_BDC1; + double PosX_calc_BDC2,PosY_calc_BDC2,PosZ_calc_BDC2; + + TVector3 Pos_calc_BDC1; + TVector3 Pos_calc_BDC2; + + // Two points on the particle track( to calculate the expected value) + double PointA_X_BDC1, PointA_Y_BDC1, PointA_Z_BDC1; + double PointB_X_BDC1, PointB_Y_BDC1, PointB_Z_BDC1; + + double PointA_X_BDC2, PointA_Y_BDC2, PointA_Z_BDC2; + double PointB_X_BDC2, PointB_Y_BDC2, PointB_Z_BDC2; + + // True position in simulation + double PosX_simu_BDC1, PosY_simu_BDC1, PosZ_simu_BDC1; + double PosX_simu_BDC2, PosY_simu_BDC2, PosZ_simu_BDC2; + + double Diff_X_BDC1, Diff_Y_BDC1, Radius_BDC1; + double Diff_X_BDC2, Diff_Y_BDC2, Radius_BDC2; + + double Theta_XZ_BDC1, Theta_YZ_BDC1; + double Theta_XZ_BDC2, Theta_YZ_BDC2; + + int PileUp_BDC1; + int PileUp_BDC2; + + ///////// Ouput //////////// + + auto *outFile = new TFile("./root/resolution/ResolutionBDC.root","RECREATE"); + TTree *outTree = new TTree("OutTree", "OutTree"); + + outTree->Branch("PosX_calc_BDC1",&PosX_calc_BDC1); + outTree->Branch("PosY_calc_BDC1",&PosY_calc_BDC1); + outTree->Branch("PosZ_calc_BDC1",&PosZ_calc_BDC1); + + outTree->Branch("PosX_calc_BDC2",&PosX_calc_BDC2); + outTree->Branch("PosY_calc_BDC2",&PosY_calc_BDC2); + outTree->Branch("PosZ_calc_BDC2",&PosZ_calc_BDC2); + + outTree->Branch("PosX_simu_BDC1",&PosX_simu_BDC1); + outTree->Branch("PosY_simu_BDC1",&PosY_simu_BDC1); + outTree->Branch("PosZ_simu_BDC1",&PosZ_simu_BDC1); + + outTree->Branch("PosX_simu_BDC2",&PosX_simu_BDC2); + outTree->Branch("PosY_simu_BDC2",&PosY_simu_BDC2); + outTree->Branch("PosZ_simu_BDC2",&PosZ_simu_BDC2); + + outTree->Branch("Diff_X_BDC1",&Diff_X_BDC1); + outTree->Branch("Diff_Y_BDC1",&Diff_Y_BDC1); + + outTree->Branch("Diff_X_BDC2",&Diff_X_BDC2); + outTree->Branch("Diff_Y_BDC2",&Diff_Y_BDC2); + + outTree->Branch("Radius_BDC1",&Radius_BDC1); + outTree->Branch("Radius_BDC2",&Radius_BDC2); + + outTree->Branch("Theta_XZ_BDC1", &Theta_XZ_BDC1); + outTree->Branch("Theta_YZ_BDC1", &Theta_YZ_BDC1); + + outTree->Branch("Theta_XZ_BDC2", &Theta_XZ_BDC2); + outTree->Branch("Theta_YZ_BDC2", &Theta_YZ_BDC2); + + outTree->Branch("PileUp_BDC1", &PileUp_BDC1); + outTree->Branch("PileUp_BDC2", &PileUp_BDC2); + + //////// Resolution calculation ////// + unsigned int TreeEntries = simutree->GetEntries(); + + for(unsigned int i = 0; i < TreeEntries; i++) + { + Diff_X_BDC1 = -10000; + Diff_Y_BDC1 = -10000; + + Diff_X_BDC2 = -10000; + Diff_Y_BDC2 = -10000; + + PosX_calc_BDC1 = PosY_calc_BDC1 = PosZ_calc_BDC1 = -10000; + PosX_calc_BDC2 = PosY_calc_BDC2 = PosZ_calc_BDC2 = -10000; + + PosX_simu_BDC1 = PosY_simu_BDC1 = PosZ_simu_BDC1 = -10000; + PosX_simu_BDC2 = PosY_simu_BDC2 = PosZ_simu_BDC2 = -10000; + + PointA_X_BDC1 = PointA_Y_BDC1 = PointA_Z_BDC1 = PointB_X_BDC1 = PointB_Y_BDC1 = PointB_Z_BDC1 = -10000; + PointA_X_BDC2 = PointA_Y_BDC2 = PointA_Z_BDC2 = PointB_X_BDC2 = PointB_Y_BDC2 = PointB_Z_BDC2 = -10000; + + PileUp_BDC1 = PileUp_BDC2 = -10000; + + + simutree->GetEntry(i); + + unsigned int VectorEntries = SamuraiBDC->Mult(); + + Pos_calc_BDC1 = PhysicsBDC->GetPos(1); + + PosX_calc_BDC1 = Pos_calc_BDC1[0]; + PosY_calc_BDC1 = Pos_calc_BDC1[1]; + PosZ_calc_BDC1 = Pos_calc_BDC1[2]; + + Pos_calc_BDC2 = PhysicsBDC->GetPos(2); + + PosX_calc_BDC2 = Pos_calc_BDC2[0]; + PosY_calc_BDC2 = Pos_calc_BDC2[1]; + PosZ_calc_BDC2 = Pos_calc_BDC2[2]; + + PileUp_BDC1 = PhysicsBDC->GetPileUp(0); + PileUp_BDC2 = PhysicsBDC->GetPileUp(1); + + for ( unsigned int j = 0; j < VectorEntries ; j++) + { + if(SamuraiBDC->GetEdge(j)==1 && SamuraiBDC->GetDetectorNbr(j)==1 && (PointB_Z_BDC1 < PosZ_calc_BDC1)) + { + PointA_X_BDC1 = PointB_X_BDC1; + PointA_Y_BDC1 = PointB_Y_BDC1; + PointA_Z_BDC1 = PointB_Z_BDC1; + + PointB_X_BDC1 = PosInWireX->at(j); + PointB_Y_BDC1 = PosInWireY->at(j); + PointB_Z_BDC1 = PosInWireZ->at(j); + + // cout << PosInWireX->at(j) << endl; + // cout << PosInWireY->at(j) << endl; + // cout << PosInWireZ->at(j) << endl; + // cout << endl; + } + + if(SamuraiBDC->GetEdge(j)==1 && SamuraiBDC->GetDetectorNbr(j)==2 && (PointB_Z_BDC2 < PosZ_calc_BDC2)) + { + PointA_X_BDC2 = PointB_X_BDC2; + PointA_Y_BDC2 = PointB_Y_BDC2; + PointA_Z_BDC2 = PointB_Z_BDC2; + + PointB_X_BDC2 = PosInWireX->at(j); + PointB_Y_BDC2 = PosInWireY->at(j); + PointB_Z_BDC2 = PosInWireZ->at(j); + + // cout << PosInWireX->at(j) << endl; + // cout << PosInWireY->at(j) << endl; + // cout << PosInWireZ->at(j) << endl; + // cout << endl; + } + + + + else if(SamuraiBDC->GetEdge(j)==0) + continue; + + // else + // { + // cout << SamuraiBDC->GetDetectorNbr(j) << endl; + // cout << SamuraiBDC->GetEdge(j) << endl; + // cout << "ERROR: edge value must be equal to 1 or 0, check the simulated tree" << endl; + // exit(1); + // } + + if(PointB_Z_BDC1 > PosZ_calc_BDC1 && PointB_Z_BDC2 > PosZ_calc_BDC2) { + break; + } + + + }//end loop for j + + //cout << endl; + + TVector3 PointA_BDC1 (PointA_X_BDC1, PointA_Y_BDC1, PointA_Z_BDC1); + TVector3 PointB_BDC1 (PointB_X_BDC1, PointB_Y_BDC1, PointB_Z_BDC1); + + TVector3 Direct_BDC1; + Direct_BDC1 = PointB_BDC1 - PointA_BDC1; + + TVector3 Pos_simu_BDC1 = PointA_BDC1 + ((PosZ_calc_BDC1 - PointA_BDC1[2]) / Direct_BDC1[2])*Direct_BDC1; + + PosX_simu_BDC1 = Pos_simu_BDC1[0]; + PosY_simu_BDC1 = Pos_simu_BDC1[1]; + PosZ_simu_BDC1 = Pos_simu_BDC1[2]; + + Diff_X_BDC1 = PosX_calc_BDC1 - PosX_simu_BDC1; + Diff_Y_BDC1 = PosY_calc_BDC1 - PosY_simu_BDC1; + + Radius_BDC1 = sqrt(PosX_simu_BDC1*PosX_simu_BDC1 + PosY_simu_BDC1*PosY_simu_BDC1); + + Theta_XZ_BDC1 = atan2(PosX_simu_BDC1 - X_Beam,PosZ_simu_BDC1 - Z_Beam)*180.0/TMath::Pi(); + Theta_YZ_BDC1 = atan2( PosY_simu_BDC1 - Y_Beam,PosZ_simu_BDC1 - Z_Beam)*180.0/TMath::Pi(); + + + //cout << PosZ_simu_BDC1 << " " << PosZ_calc_BDC1 << endl; + + + //cout << "calc X = " << PosX_simu_BDC1 << " simu = " << PosX_calc_BDC1 << endl; + // cout << "calc Y = " << PosY_simu_BDC1 << " simu = " << PosY_calc_BDC1 << endl; + if(PosZ_simu_BDC1 != -10000){ + hResolutionX_BDC1->Fill(Diff_X_BDC1); + hResolutionY_BDC1->Fill(Diff_Y_BDC1); + } + + + + + + TVector3 PointA_BDC2 (PointA_X_BDC2, PointA_Y_BDC2, PointA_Z_BDC2); + TVector3 PointB_BDC2 (PointB_X_BDC2, PointB_Y_BDC2, PointB_Z_BDC2); + + TVector3 Direct_BDC2; + Direct_BDC2 = PointB_BDC2 - PointA_BDC2; + + TVector3 Pos_simu_BDC2 = PointA_BDC2 + ((PosZ_calc_BDC2 - PointA_BDC2[2]) / Direct_BDC2[2])*Direct_BDC2; + + PosX_simu_BDC2 = Pos_simu_BDC2[0]; + PosY_simu_BDC2 = Pos_simu_BDC2[1]; + PosZ_simu_BDC2 = Pos_simu_BDC2[2]; + + Diff_X_BDC2 = PosX_calc_BDC2 - PosX_simu_BDC2; + Diff_Y_BDC2 = PosY_calc_BDC2 - PosY_simu_BDC2; + + Radius_BDC2 = sqrt(PosX_simu_BDC2*PosX_simu_BDC2 + PosY_simu_BDC2*PosY_simu_BDC2); + + Theta_XZ_BDC2 = atan2(PosZ_simu_BDC2 - Z_Beam, PosX_simu_BDC2 - X_Beam)*180.0/TMath::Pi(); + Theta_YZ_BDC2 = atan2(PosZ_simu_BDC2 - Z_Beam, PosY_simu_BDC2 - Y_Beam)*180.0/TMath::Pi(); + + if(PosZ_simu_BDC2 != -10000){ + hResolutionX_BDC2->Fill(PosX_calc_BDC2-PosX_simu_BDC2); + hResolutionY_BDC2->Fill(PosY_calc_BDC2-PosY_simu_BDC2); + } + + + if(PosZ_simu_BDC2 == -10000 || PosX_simu_BDC2 == -10000 || PosY_simu_BDC2 == -10000) cout << " BDC2 -10000" << endl; + + if(PosZ_simu_BDC1 == -10000 || PosX_simu_BDC1 == -10000 || PosY_simu_BDC1 == -10000) cout << " BDC1 -10000" << endl; + + + outTree->Fill(); + }//end loop i + + outTree->AutoSave(); + + cout << hResolutionX_BDC1->GetRMS() << endl; + cout << hResolutionY_BDC1->GetRMS() << endl; + + cout << hResolutionX_BDC2->GetRMS() << endl; + cout << hResolutionY_BDC2->GetRMS() << endl; + + TCanvas *c1 = new TCanvas(); + c1->Divide(2,2); + c1->cd(1); + hResolutionX_BDC1->Draw(); + + c1->cd(2); + hResolutionY_BDC1->Draw(); + + c1->cd(3); + hResolutionX_BDC2->Draw(); + + c1->cd(4); + hResolutionY_BDC2->Draw(); + + + +} diff --git a/Projects/S034/macro/DriftChamber/ResolutionFDC0.cxx b/Projects/S034/macro/DriftChamber/ResolutionFDC0.cxx new file mode 100755 index 0000000000000000000000000000000000000000..112ba05d9d9eb9ca24e6674185d4d32e7cf6b7a9 --- /dev/null +++ b/Projects/S034/macro/DriftChamber/ResolutionFDC0.cxx @@ -0,0 +1,186 @@ +using namespace std; + + +void ResolutionFDC0(){ + + ///////////// Input ///////////// + // Get data from simulation and experimental data trees + auto simufile = new TFile("root/simulation/SimulationResolutionFDC0V2.root"); + //auto simufile = new TFile("root/simulation/SimuWhtDriftMinos.root"); + auto simutree = (TTree*) simufile->FindObjectAny("SimulatedTree"); + + auto anafile = new TFile("root/analysis/AnalysisResolutionFDC0V2.root"); + //auto anafile = new TFile("root/analysis/SimuWhtDriftMinos.root"); + auto anatree = (TTree*) anafile->FindObjectAny("PhysicsTree"); + + simutree->AddFriend(anatree); + + TH1 *hResolutionX = new TH1D("hResolutionX", "hResolutionX",200, -0.05,0.05); + TH1 *hResolutionY = new TH1D("hResolutionY", "hResolutionY",200, -0.05,0.05); + + double X_Beam, Y_Beam, Z_Beam; + X_Beam = 0.0; + Y_Beam = 0.0; + Z_Beam = -7000; //mm + + vector<double> *PosInWireX = new vector <double>(); + vector<double> *PosInWireY = new vector <double>(); + vector<double> *PosInWireZ = new vector <double>(); + + simutree->SetBranchAddress("PosInWireX",&PosInWireX); //Position for each wire + simutree->SetBranchAddress("PosInWireY",&PosInWireY); + simutree->SetBranchAddress("PosInWireZ",&PosInWireZ); + + auto SamuraiFDC0 = new TSamuraiFDC0Data(); + simutree->SetBranchAddress("SamuraiFDC0", &SamuraiFDC0); + + auto PhysicsFDC0 = new TSamuraiFDC0Physics(); + anatree->SetBranchAddress("SamuraiFDC0", &PhysicsFDC0); + + double PosX_calc, PosY_calc, PosZ;//Position calculated in PhysicsSamuraiFDC0.cxx + + // Two points on the particle track( to calculate the expected value) + double PointA_X, PointA_Y, PointA_Z; + double PointB_X, PointB_Y, PointB_Z; + + // True position in simulation + double PosX_simu, PosY_simu, PosZ_simu; + + double Diff_X, Diff_Y, Radius; + + double Theta_XZ, Theta_YZ; + + int PileUp, Mult; + ///////// Ouput //////////// + + auto *outFile = new TFile("./root/resolution/ResolutionFDC0.root","RECREATE"); + TTree *outTree = new TTree("OutTree", "OutTree"); + + outTree->Branch("PosX_calc",&PosX_calc); + outTree->Branch("PosY_calc",&PosY_calc); + outTree->Branch("PosZ_calc",&PosZ); + + outTree->Branch("PosX_simu",&PosX_simu); + outTree->Branch("PosY_simu",&PosY_simu); + outTree->Branch("PosZ_simu",&PosZ_simu); + + outTree->Branch("Diff_X",&Diff_X); + outTree->Branch("Diff_Y",&Diff_Y); + + outTree->Branch("Radius",&Radius); + + outTree->Branch("Theta_XZ", &Theta_XZ); + outTree->Branch("Theta_YZ", &Theta_YZ); + + outTree->Branch("PileUp", &PileUp); + outTree->Branch("Mult", &Mult); + + //////// Resolution calculation ////// + + + unsigned int TreeEntries = anatree->GetEntries(); + + for( unsigned int i = 0; i < TreeEntries; i++) + { + Diff_X = -10000; + Diff_Y = -10000; + + PosX_simu = PosY_simu = PosZ_simu = -10000; + PosX_calc = PosY_calc = PosZ = -10000; + + PointA_X = PointA_Y = PointA_Z = PointB_X = PointB_Y = PointB_Z = -10000; + + PileUp = Mult = -10000; + + simutree->GetEntry(i); + + unsigned int VectorEntries = SamuraiFDC0->Mult(); + PosX_calc = PhysicsFDC0->GetPosX(); // position obtained from reconstruction + //cout << PosX_calc << endl; + PosY_calc = PhysicsFDC0->GetPosY(); + PosZ = PhysicsFDC0->GetPosZ(); + + PileUp = PhysicsFDC0->GetPileUp(); + Mult = PhysicsFDC0->GetMult(); + for ( unsigned int j = 0; j < VectorEntries ; j++) + { + if(SamuraiFDC0->GetEdge(j)==1) + { + PointA_X = PointB_X; + PointA_Y = PointB_Y; + PointA_Z = PointB_Z; + + PointB_X = PosInWireX->at(j); + PointB_Y = PosInWireY->at(j); + PointB_Z = PosInWireZ->at(j); + } + + else if( SamuraiFDC0->GetEdge(j)==0) + continue; + + else + { + cout << "ERROR: edge value must be equal to 1 or 0, check the simulated tree" << endl; + exit(1); + } + + if(PointB_Z > PosZ) { + break; + } + + + }//end loop for j + + //cout << endl; + + TVector3 PointA (PointA_X, PointA_Y, PointA_Z); + TVector3 PointB (PointB_X, PointB_Y, PointB_Z); + + TVector3 Direct; + Direct = PointB - PointA; + + TVector3 Pos_simu = PointA + ((PosZ - PointA[2]) / Direct[2])*Direct; + + PosX_simu = Pos_simu[0]; + PosY_simu = Pos_simu[1]; + PosZ_simu = Pos_simu[2]; + + Diff_X = PosX_calc - PosX_simu; + Diff_Y = PosY_calc - PosY_simu; + + cout << PosX_simu << " " << PosX_calc << " " << PosY_simu << " " << PosY_calc << endl; + cout << endl; + + Radius = sqrt(PosX_simu*PosX_simu + PosY_simu*PosY_simu); + + Theta_XZ = atan2(PosZ_simu - Z_Beam, PosX_simu - X_Beam)*180.0/TMath::Pi(); + Theta_YZ = atan2(PosZ_simu - Z_Beam, PosY_simu - Y_Beam)*180.0/TMath::Pi(); + + if(PosX_simu!= -10000 && PosY_simu!= -10000 && PosZ_simu != -10000 && PosX_calc!= -10000 && PosY_calc!= -10000 && PosZ!= -10000){ + hResolutionX->Fill(Diff_X); + hResolutionY->Fill(Diff_Y); + } + + outTree->Fill(); + + }//end loop i + + outTree->AutoSave(); + + cout << hResolutionX->GetRMS() << endl; + cout << hResolutionY->GetRMS() << endl; + + // double rootMeanSquare1 = std::sqrt( hResolutionX->GetMean()*hResolutionX->GetMean() + hResolutionX->GetRMS()*hResolutionX->GetRMS() ); + + + TCanvas *c1 = new TCanvas(); + c1->Divide(1,2); + c1->cd(1); + hResolutionX->Draw(); + + c1->cd(2); + hResolutionY->Draw(); + + + +} diff --git a/Projects/S034/macro/DriftChamber/ResolutionFDC2.cxx b/Projects/S034/macro/DriftChamber/ResolutionFDC2.cxx new file mode 100755 index 0000000000000000000000000000000000000000..68ba7aa18466804b848612dcc0e5666da82f4feb --- /dev/null +++ b/Projects/S034/macro/DriftChamber/ResolutionFDC2.cxx @@ -0,0 +1,183 @@ +using namespace std; + + +void ResolutionFDC2(){ + + ///////////// Input ///////////// + // Get data from simulation and experimental data trees + auto simufile = new TFile("root/simulation/SimulationResolutionFDC2V2.root"); + auto simutree = (TTree*) simufile->FindObjectAny("SimulatedTree"); + + auto anafile = new TFile("root/analysis/AnalysisResolutionFDC2V2.root"); + auto anatree = (TTree*) anafile->FindObjectAny("PhysicsTree"); + + simutree->AddFriend(anatree); + + TH1 *hResolutionX = new TH1D("hResolutionX", "hResolutionX",200, -0.05,0.05); + TH1 *hResolutionY = new TH1D("hResolutionY", "hResolutionY",200, -0.05,0.05); + + double X_Beam, Y_Beam, Z_Beam; + X_Beam = 0.0; + Y_Beam = 0.0; + Z_Beam = -7000; //mm + + vector<double> *PosInWireX = new vector <double>(); + vector<double> *PosInWireY = new vector <double>(); + vector<double> *PosInWireZ = new vector <double>(); + + simutree->SetBranchAddress("PosInWireX",&PosInWireX); //Position for each wire + simutree->SetBranchAddress("PosInWireY",&PosInWireY); + simutree->SetBranchAddress("PosInWireZ",&PosInWireZ); + + auto SamuraiFDC2 = new TSamuraiFDC2Data(); + simutree->SetBranchAddress("SamuraiFDC2", &SamuraiFDC2); + + auto PhysicsFDC2 = new TSamuraiFDC2Physics(); + anatree->SetBranchAddress("SamuraiFDC2", &PhysicsFDC2); + + double PosX_calc, PosY_calc, PosZ;//Position calculated in PhysicsSamuraiFDC2.cxx + + // Two points on the particle track( to calculate the expected value) + double PointA_X, PointA_Y, PointA_Z; + double PointB_X, PointB_Y, PointB_Z; + + // True position in simulation + double PosX_simu, PosY_simu, PosZ_simu; + + double Diff_X, Diff_Y, Radius; + + double Theta_XZ, Theta_YZ; + + int PileUp; + ///////// Ouput //////////// + + auto *outFile = new TFile("./root/resolution/ResolutionFDC2.root","RECREATE"); + TTree *outTree = new TTree("OutTree", "OutTree"); + + outTree->Branch("PosX_calc",&PosX_calc); + outTree->Branch("PosY_calc",&PosY_calc); + outTree->Branch("PosZ_calc",&PosZ); + + outTree->Branch("PosX_simu",&PosX_simu); + outTree->Branch("PosY_simu",&PosY_simu); + outTree->Branch("PosZ_simu",&PosZ_simu); + + outTree->Branch("Diff_X",&Diff_X); + outTree->Branch("Diff_Y",&Diff_Y); + + outTree->Branch("Radius",&Radius); + + outTree->Branch("Theta_XZ", &Theta_XZ); + outTree->Branch("Theta_YZ", &Theta_YZ); + + outTree->Branch("PileUp", &PileUp); + + //////// Resolution calculation ////// + + + unsigned int TreeEntries = simutree->GetEntries(); + + for( unsigned int i = 0; i < TreeEntries; i++) + { + //Clear(); + Diff_X = -10000; + Diff_Y = -10000; + + PosX_simu = PosY_simu = PosZ_simu = -10000; + PosX_calc = PosY_calc = PosZ = -10000; + + PointA_X = PointA_Y = PointA_Z = PointB_X = PointB_Y = PointB_Z = -10000; + + PileUp = -10000; + + simutree->GetEntry(i); + + unsigned int VectorEntries = SamuraiFDC2->Mult(); + PosX_calc = PhysicsFDC2->GetPosX(); // position obtained from reconstruction + //cout << PosX_calc << endl; + PosY_calc = PhysicsFDC2->GetPosY(); + PosZ = PhysicsFDC2->GetPosZ(); + + PileUp = PhysicsFDC2->GetPileUp(); + + + for ( unsigned int j = 0; j < VectorEntries ; j++) + { + if(SamuraiFDC2->GetEdge(j)==1) + { + PointA_X = PointB_X; + PointA_Y = PointB_Y; + PointA_Z = PointB_Z; + + PointB_X = PosInWireX->at(j); + PointB_Y = PosInWireY->at(j); + PointB_Z = PosInWireZ->at(j); + } + + else if( SamuraiFDC2->GetEdge(j)==0) + continue; + + else + { + cout << "ERROR: edge value must be equal to 1 or 0, check the simulated tree" << endl; + exit(1); + } + + if(PointB_Z > PosZ) { + break; + } + + + }//end loop for j + + //cout << endl; + + TVector3 PointA (PointA_X, PointA_Y, PointA_Z); + TVector3 PointB (PointB_X, PointB_Y, PointB_Z); + + TVector3 Direct; + Direct = PointB - PointA; + + TVector3 Pos_simu = PointA + ((PosZ - PointA[2]) / Direct[2])*Direct; + + PosX_simu = Pos_simu[0]; + PosY_simu = Pos_simu[1]; + PosZ_simu = Pos_simu[2]; + + Diff_X = PosX_calc - PosX_simu; + Diff_Y = PosY_calc - PosY_simu; + + Radius = sqrt(PosX_simu*PosX_simu + PosY_simu*PosY_simu); + + Theta_XZ = atan2(PosZ_simu - Z_Beam, PosX_simu - X_Beam)*180.0/TMath::Pi(); + + Theta_YZ = atan2(PosZ_simu - Z_Beam, PosY_simu - Y_Beam)*180.0/3.14159; + + if(PosX_simu!= -10000 && PosY_simu!= -10000 && PosZ_simu != -10000 && PosX_calc!= -10000 && PosY_calc!= -10000 && PosZ!= -10000){ + hResolutionX->Fill(Diff_X); + hResolutionY->Fill(Diff_Y); + } + + outTree->Fill(); + + }//end loop i + + outTree->AutoSave(); + + cout << hResolutionX->GetRMS() << endl; + cout << hResolutionY->GetRMS() << endl; + + // double rootMeanSquare1 = std::sqrt( hResolutionX->GetMean()*hResolutionX->GetMean() + hResolutionX->GetRMS()*hResolutionX->GetRMS() ); + + + TCanvas *c1 = new TCanvas(); + c1->Divide(1,2); + c1->cd(1); + hResolutionX->Draw(); + + c1->cd(2); + hResolutionY->Draw(); + + + +} diff --git a/Projects/S034/macro/testB2.cxx b/Projects/S034/macro/testB2.cxx index 869abd3461c5d895ae4cfe2d48aa6929dadbb89f..ca9b10532ff4f624554365a175d43ace894b8f7a 100644 --- a/Projects/S034/macro/testB2.cxx +++ b/Projects/S034/macro/testB2.cxx @@ -11,36 +11,22 @@ void testB2(){ //auto h=new TH1D("dB","dB",1000,-2e-1,2e-1); // new TCanvas(); auto h=new TH1D("dB","dB",1000,-0.1,0.1); - auto hX=new TH2D("dBX","dBX",500,-100,100,500,-0.01,0.01); - auto hY=new TH2D("dBY","dBY",500,-100,100,500,-0.01,0.01); double r = gRandom->Uniform(-1,1); - for(unsigned int i = 0 ; i < 100 ; i++){ - double X = gRandom->Uniform(-100,100); - double Y = gRandom->Uniform(-100,100); - TVector3 p(X,Y,-3500); - //TVector3 d(gRandom->Uniform(-0.05,0.05),gRandom->Uniform(-0.05,0.05),1); + TVector3 p(gRandom->Uniform(-5,5),gRandom->Uniform(-5,5),-3500); + TVector3 d(gRandom->Uniform(-0.05,0.05),gRandom->Uniform(-0.05,0.05),1); // //TVector3 p(0,0,-3500); - TVector3 d(0,0,1); + //TVector3 d(0,0,1); double b = gRandom->Uniform(3,7); std::vector< TVector3 > track = field.Propagate(b,p,d,false); // rotate from lab angle to FDC2 frame track.back().RotateY(-fdc2angle+angle); double br=field.FindBrho(p,d,track.back(),d); - //double pc = 100*(br-b)/b; - - double pc = br-b; -// cout <<" " << 100*(br-b)/b << " " << br << " " << b << endl; + double pc = 100*(br-b)/b; + cout <<" " << 100*(br-b)/b << " " << br << " " << b << endl; h->Fill(pc); - hX->Fill(X,pc); - hY->Fill(Y,pc); } h->Draw(); - new TCanvas(); - hX->Draw("colz"); - new TCanvas(); - hY->Draw("colz"); - } diff --git a/Projects/S034/minos_dali.detector b/Projects/S034/minos_dali.detector deleted file mode 100644 index facf9c4bf9b2214d7b5d8f632d1581143b53ee3d..0000000000000000000000000000000000000000 --- a/Projects/S034/minos_dali.detector +++ /dev/null @@ -1,95 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -Minos - Position= 0 0 0 mm - ZRotation= 40.6 deg - TargetZOffset= 0 mm - ZOffset= -4650 - TargetLength= 151.72 mm - TargetMaterial= LH2 - CellMaterial= Mylar - TPCOnly= 0 - TimeBin= 30 ns - ShapingTime= 333.9 ns - BaseLine= 250 - Sampling= 10 - XML= db/MINOS.xml - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -Dali - R = 212.4 mm - Alpha = 240 deg - Zeta = 298.28 mm - Ring = 1 - Material = NaI(Tl) -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -Dali - R = 212.4 mm - Alpha = 180 deg - Zeta = 298.28 mm - Ring = 1 - Material = NaI(Tl) -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -Dali - R= 212.4 mm - Alpha = 120 deg - Zeta = 298.28 mm - Ring = 1 - Material = NaI(Tl) -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -Dali - R = 212.4 mm - Alpha = 60 deg - Zeta = 298.28 mm - Ring = 1 - Material = NaI(Tl) -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -Dali - R = 212.4 mm - Alpha = 0 deg - Zeta = 298.28 mm - Ring = 1 - Material = NaI(Tl) -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -Dali - R = 212.4 mm - Alpha = -60 deg - Zeta = 298.28 mm - Ring = 1 - Material = NaI(Tl) -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -Dali - R = 212.4 mm - Alpha = 240 deg - Zeta = 469.28 mm - Material = NaI(Tl) -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -Dali - R = 212.4 mm - Alpha = 180 deg - Zeta = 469.28 mm - Material = NaI(Tl) -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -Dali - R = 212.4 mm - Alpha = 120 deg - Zeta = 469.28 mm - Material = NaI(Tl) -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -Dali - R = 212.4 mm - Alpha = 60 deg - Zeta = 469.28 mm - Material = NaI(Tl) -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -Dali - R = 212.4 mm - Alpha = 0 deg - Zeta = 469.28 mm - Material = NaI(Tl) -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -Dali - R = 212.4 mm - Alpha = -60 deg - Zeta = 469.28 mm - Material = NaI(Tl) -% diff --git a/Projects/S034/project.config b/Projects/S034/project.config index e8be9bccc2eb124582440ec482794507de529ba5..850d419b82e08e6ff55ad10fa47063b6b9afd468 100644 --- a/Projects/S034/project.config +++ b/Projects/S034/project.config @@ -1,4 +1,4 @@ -Project FDC2 +Project S034 AnalysisOutput= ./root/analysis SimulationOutput= ./root/simulation EnergyLoss= ./energy_loss diff --git a/Projects/S034/reaction/He8.beam b/Projects/S034/reaction/He8.beam new file mode 100755 index 0000000000000000000000000000000000000000..5ff8a12c3233f59d695a0617eaf235b3df21ee09 --- /dev/null +++ b/Projects/S034/reaction/He8.beam @@ -0,0 +1,20 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Beam + Particle= 8He + %Energy= 600 MeV + %Energy= 1248 MeV + %SigmaEnergy= 2.986 MeV + %SigmaThetaX= 0.4791 deg + %SigmaPhiY= 0.5433 deg + %SigmaX= 15.43 mm + %SigmaY= 18.17 mm + %MeanThetaX= -0.04855 deg + %MeanPhiY= 0.009168 deg + %MeanX= 1.361 mm + %MeanY= 1.288 mm + EnergyProfilePath= /local/anne/nptool/Projects/S034_audrey/beam/hBeamEnergy.root hBeamEnergy + XThetaXProfilePath= ./beam/hBeamXThetaX.root hBeamXThetaX + YPhiYProfilePath= ./beam/hBeamYThetaY.root hBeamYThetaY + ZProfile = -6876.34 mm + ZEmission= -7000 mm + diff --git a/Projects/S034/reaction/He8_pp.reaction b/Projects/S034/reaction/He8_pp.reaction new file mode 100755 index 0000000000000000000000000000000000000000..ceaa236a2c1db45f203bb00756a93d8290e8d8b1 --- /dev/null +++ b/Projects/S034/reaction/He8_pp.reaction @@ -0,0 +1,61 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Beam + Particle= 8He + %Energy= 1248 MeV + %SigmaEnergy= 0.1 MeV + %SigmaThetaX= 0.1 deg + %SigmaPhiY= 0.1 deg + %SigmaX= 0 mm + %SigmaY= 0 mm + %MeanThetaX= 0.0 deg + %MeanPhiY= 0.0 deg + %MeanX= 0 mm + %MeanY= 0 mm + EnergyProfilePath= ./beam/hBeamEnergy.root hBeamEnergy + XThetaXProfilePath= ./beam/hBeamXThetaX.root hBeamXThetaX + YPhiYProfilePath= ./beam/hBeamYThetaY.root hBeamYThetaY + ZEmission= -7000 mm + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% This is useful to redefine the reference mass of resonnance +%% without this block the g.s. of the system is taken as the +%% first resonant state in nutab +%DefineParticle 8He + SubPart= 4He n n n n + BindingEnergy= 0 MeV + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +TwoBodyReaction + Beam= 8He + Target= 1H + Light= 1H + Heavy= 8He + ExcitationEnergyLight= 0.0 MeV + ExcitationEnergyHeavy= 3.43 MeV + CrossSectionPath= reaction/flat.txt CSR + ShootLight= 1 + ShootHeavy= 1 + %UseExInGeant4= 1 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Decay 8He + Daughter= 4He n n n n + ExcitationEnergy= 0 0 0 0 0 MeV + Threshold= 0 MeV + BranchingRatio= 1 + LifeTime= 0 ns + Shoot= 1 1 1 1 1 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%BreitWigner + Energy0= 3.0 MeV + Width0= 2.0 MeV + l= 1 + Heavy= 8He + Light= 4He + NeutronNumber= 4 + MultiplicateurAmplitude= 1.0 MeV + ShiftZero= 0 + WidthCst= 0 + + diff --git a/Projects/S034/reaction/pp.reaction b/Projects/S034/reaction/pp.reaction index a2285aa84411bdc62bdfab71589d431b79a83482..297d7d0f6ff99ea0d40b5b1a2bf06c906017624a 100644 --- a/Projects/S034/reaction/pp.reaction +++ b/Projects/S034/reaction/pp.reaction @@ -18,6 +18,7 @@ Beam %EnergyProfilePath= %XThetaXProfilePath= %YPhiYProfilePath= + ZEmission= -5000 mm %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% TwoBodyReaction Beam= 1H diff --git a/Projects/S034/root/analysis/.gitignore b/Projects/S034/root/analysis/.gitignore deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/Projects/S034/root/mrdc/.gitignore b/Projects/S034/root/mrdc/.gitignore deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/Projects/S034/root/simulation/.gitignore b/Projects/S034/root/simulation/.gitignore deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/Projects/Samurai/Samurai.detector b/Projects/Samurai/Samurai.detector index 53e981171413777e66ca006fa8570d48c60a3baf..36be1abae5c616b00c812c2001202909b2b72d99 100644 --- a/Projects/Samurai/Samurai.detector +++ b/Projects/Samurai/Samurai.detector @@ -14,27 +14,27 @@ Samurai % METHOD= 1 % 0=RungeKutta, 1=EliaOmar - FIELDMAP=3T.table.bin + FIELDMAP= 3T.table.bin %fieldmap/3T.table.bin % fieldmap path STEPS_PER_METER= 1000 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% SAMURAIFDC1 - %XML= db/SAMURAIFDC0_20200109.xml + XML= db/SAMURAIFDC0_20200109.xml %Offset= -0.00666226 0.102191 -3370.01 mm Offset= -0.00666226 0.102191 -4370.01 mm - %InvertX= 1 - %InvertY= 0 - %InvertD= 1 + InvertX= 1 + InvertY= 0 + InvertD= 1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -SAMURAIFDC2 - %XML= db/SAMURAIFDC2.xml - Offset= 1000 200 5000 mm +%SAMURAIFDC2 +% XML= db/SAMURAIFDC2.xml +% Offset= 1000 200 5000 mm OffAngle= 59.930 deg - %-252.416 -0.228477 4122.57 mm - %InvertX= 0 - %InvertY= 1 - %InvertD= 1 + Offset= -252.416 -0.228477 5000.57 mm + InvertX= 0 + InvertY= 1 + InvertD= 1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Projects/Strasse/RunToTreat.txt b/Projects/Strasse/RunToTreat.txt new file mode 100644 index 0000000000000000000000000000000000000000..55362e76e516a1d2ee77f17a4a7d48ca086f57b8 --- /dev/null +++ b/Projects/Strasse/RunToTreat.txt @@ -0,0 +1,4 @@ +TTreeName + SimulatedTree +RootFileName + ./root/simulation/configlast.root diff --git a/Projects/Strasse/ana.sh b/Projects/Strasse/ana.sh index 924f3f65240aa504f7ca8f291fb156cf2d3c1e60..7bd3f7cc9eb69725b5d42a8b40cdd16c09891d3e 100755 --- a/Projects/Strasse/ana.sh +++ b/Projects/Strasse/ana.sh @@ -1 +1 @@ -npanalysis -E ./reaction/17Fp2p.reaction -D ./geometry/strasse_July2021.detector -R RunToTreat.txt -O configJuly2021_ana.root +npanalysis -E ./reaction/12C_p2p_perfect.reaction -D ./geometry/strasse_last.detector -R RunToTreat.txt -O configlast_ana.root diff --git a/Projects/Strasse/macro/CheckAna.cxx b/Projects/Strasse/macro/CheckAna.cxx index 596dfcf434222c19725d165492be1f6636d76e10..fcffeed57b5c1e2ea7950b1afb78ab11dfad4f71 100644 --- a/Projects/Strasse/macro/CheckAna.cxx +++ b/Projects/Strasse/macro/CheckAna.cxx @@ -1,15 +1,8 @@ { gStyle->SetPalette(1); // TFile *file= new TFile("../../Outputs/Analysis/PhysicsTree.root"); - // TFile *file= new TFile("../../Outputs/Analysis/configJuly2021_ana_1MeV_perfect_Decay.root"); - // TFile* file = new TFile("../../Outputs/Analysis/configJuly2021_ana_1MeV.root"); - // TFile* file = new TFile("../../Outputs/Analysis/configJune2022_ana_0MeV_real_100MeVc_50um.root"); - // TFile* file = new TFile("../../Outputs/Analysis/configJune2022_ana_0MeV_real_100MeVc_I200um_O300um.root"); - // TFile* file = new TFile("../../Outputs/Analysis/configJune2022_ana_0MeV_real_100MeVc_I200um_O300um_newtar.root"); - TFile* file = new TFile("../../Outputs/Analysis/test_newtar_ana.root"); - // TFile* file = new TFile("../../Outputs/Analysis/test_oldtar_ana.root"); - TTree* tree = (TTree*)file->Get("PhysicsTree"); + TTree* tree = (TTree*)gDirectory->Get("PhysicsTree"); TCanvas* c1 = new TCanvas("c1", "c1", 1000, 1000); c1->Divide(3, 4); diff --git a/Projects/Strasse/macro/CheckSim.cxx b/Projects/Strasse/macro/CheckSim.cxx index 1f450fd763c73f347d8e7e9adf02005a085c6167..af03b6e45aa7d4e436cf33222b6f22ab85a757e6 100644 --- a/Projects/Strasse/macro/CheckSim.cxx +++ b/Projects/Strasse/macro/CheckSim.cxx @@ -1,18 +1,6 @@ { gStyle->SetPalette(1); // TFile *file= new TFile("../../Outputs/Simulation/SimulatedTree.root"); - // TFile *file= new TFile("../../Outputs/Simulation/configJuly2021_1MeV.root"); - // TFile* file = new TFile("../../Outputs/Simulation/configJune2022_0MeV_real_100MeVc_50um.root"); - /// TFile* file = new TFile("../../Outputs/Simulation/configJune2022_0MeV_real_100MeVc_I200um_O300um.root"); - // TFile* file = new TFile("../../Outputs/Simulation/configJune2022_0MeV_real_100MeVc_Ip50um_Op50um.root"); - // TFile* file = new TFile("../../Outputs/Simulation/configJune2022_partial_0MeV_pencil_100MeVc_I200um_O300um.root"); - // TFile* file = new TFile("../../Outputs/Simulation/configJune2022_0MeV_pencil.root"); - // TFile* file = new TFile("../../Outputs/Simulation/configJune2022_50MeV_pencil.root"); - // TFile* file = new TFile("../../Outputs/Simulation/configJune2022_100MeV_pencil.root"); - // - // TFile* file = new TFile("../../Outputs/Simulation/test_newtar.root"); - // TFile* file = new TFile("../../Outputs/Simulation/test_oldtar.root"); - // TTree* tree = (TTree*)file->Get("SimulatedTree"); TTree* tree = (TTree*)gDirectory->Get("SimulatedTree"); TCanvas* c1 = new TCanvas("c1", "c1", 1000, 1000); diff --git a/Projects/Strasse/reaction/C12_p2p.reaction b/Projects/Strasse/reaction/12C_p2p_perfect.reaction similarity index 70% rename from Projects/Strasse/reaction/C12_p2p.reaction rename to Projects/Strasse/reaction/12C_p2p_perfect.reaction index 03be548931a5e7a94eedc077211d607bff73912f..33df5510390652713117e4361deddb424a2cb3f0 100755 --- a/Projects/Strasse/reaction/C12_p2p.reaction +++ b/Projects/Strasse/reaction/12C_p2p_perfect.reaction @@ -1,17 +1,16 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Beam Particle= 12C - Energy= 3200 MeV + Energy= 4400 MeV SigmaEnergy= 0 MeV - SigmaThetaX= 0.1 deg - SigmaPhiY= 0.1 deg - SigmaX= 5 mm - SigmaY= 5 mm + SigmaThetaX= 0 deg + SigmaPhiY= 0 deg + SigmaX= 0 mm + SigmaY= 0 mm MeanThetaX= 0 deg MeanPhiY= 0 deg MeanX= 0 mm MeanY= 0 mm - ZEmission= 0mm %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% QFSReaction Beam= 12C @@ -20,9 +19,10 @@ QFSReaction KnockedOut= 1H Heavy= 11B ExcitationEnergyBeam= 0.0 MeV - ExcitationEnergyHeavy= 1.0 MeV - MomentumSigma= 50.0 + ExcitationEnergyHeavy= 0.0 MeV + MomentumSigma= 0.0 ShootHeavy= 1 - ShootLight= 1 + ShootLight1= 1 + ShootLight2= 1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Projects/Strasse/run.mac b/Projects/Strasse/run.mac new file mode 100644 index 0000000000000000000000000000000000000000..3a7cd691db31d7a1eac6f083ab4c07bdbb3e0beb --- /dev/null +++ b/Projects/Strasse/run.mac @@ -0,0 +1 @@ +/run/beamOn 50000 diff --git a/Projects/Strasse/sim.sh b/Projects/Strasse/sim.sh index fcbe616643eb6f91d80c6e9888f5db67c2cdff02..13d1d5a95b215aa9540718d72d1025b142c741eb 100755 --- a/Projects/Strasse/sim.sh +++ b/Projects/Strasse/sim.sh @@ -1,2 +1,2 @@ -npsimulation -E ./reaction/17Fp2p.reaction -D ./geometry/strasse_July2021.detector -O configJuly2021.root -B run.mac +npsimulation -E ./reaction/12C_p2p_perfect.reaction -D ./geometry/strasse_last.detector -O configlast.root -B run.mac diff --git a/Projects/e775s/analysis/Plots_C2SFunctions_ThetaCM.h b/Projects/e775s/analysis/Plots_C2SFunctions_ThetaCM.h new file mode 100644 index 0000000000000000000000000000000000000000..d26316a8512c90f624b5090c374f5e67a56a7e92 --- /dev/null +++ b/Projects/e775s/analysis/Plots_C2SFunctions_ThetaCM.h @@ -0,0 +1,1259 @@ +/* Predefine functions */ +void C2S(); +void C2S_Diagnosis(); +vector<vector<double>> GetExpDiffCross(double Energy); +TH1F* PullThetaCMHistSubPSp(int i, double minTheta, double gatesize, int angBinSize); +void Scale(TGraph* g , TGraphErrors* ex); +TGraph* TWOFNR(double E, double J0, double J, double n, double l, double j); +double ToMininize(const double* parameter); +TGraph* FindNormalisation(TGraph* theory, TGraphErrors* experiment); +TGraph* FindNormalisation(TGraph* theory, TGraph* theory2, TGraphErrors* experiment); +TList* peakFitList = new TList(); +void CanvasPartition(TCanvas *C,const Int_t Nx = 2,const Int_t Ny = 2, + Float_t lMargin = 0.15, Float_t rMargin = 0.05, + Float_t bMargin = 0.15, Float_t tMargin = 0.05); +double XtoPad(double x); +double YtoPad(double x); + +/* Global variables */ +vector<Double_t> anglecentres, anglewidth; +TGraph* currentThry; +TGraph* currentThry2; +TGraphErrors* staticExp; +int indexE; +double globalS, globalSerr; +double globalS2, globalSerr2; +int numAngleBins; +double widthAngleBins; +double firstAngle; +double CSangleL, CSangleH; +double CSvertL, CSvertH; +bool GammaGate = false; +double globGammaGate; +bool doMix = false; +bool doDoublet = false; +bool comparingTWOFNRs = false; +double globalBinning; +double SnTWOFNR = 7.607; + +/* Output volume toggle */ +bool loud = 0; + +/* Scale method toggle */ +bool scaleTogether = 1; + +/* Input and output potentials */ +string inPot = "AC";//"ADWA";//"HSS";//"AC"; +string outPot = "BG";//"CH";//"P"; + + +/* Strings for image */ +string orbitalname; +string orbital; + +/* Strings for SolidAngle input file */ +string statename; +string inputdate; + +//////////////////////////////////////////////////////////////////////////////// +void WriteToFile(TGraphErrors* gr, string filename){ + int npoints = gr->GetN(); + ofstream file; + file.open (filename.c_str()); + + cout << " ============================ " << endl; + cout << " Writing to " << filename << " ..." << endl; + + file << " i \t x \t y \t xe \t ye" << endl; + + for(int i = 0; i < npoints; i++){ + double x = gr->GetPointX(i); + double y = gr->GetPointY(i); + double xe = gr->GetErrorX(i); + double ye = gr->GetErrorY(i); + + file << i << "\t" + << x << "\t" + << y << "\t" + << xe << "\t" + << ye << "\t" + << endl; + + } + + cout << " Complete! " << endl; + cout << " ============================ " << endl; + +} + +//////////////////////////////////////////////////////////////////////////////// +TGraphErrors* GetExpDCS_ForFig(string filename){ + vector<double> x, dx, y, dy; + ifstream f(filename.c_str()); + string line; + while (getline(f, line)){ + stringstream ss(line); + // i x y dx dy + double tA, tB, tC, tD, tE; + if (f >> tA >> tB >> tC >> tD >> tE){ + //cout << tA << " " << tB << " " << tC << " " << tD << " " << tE << endl; + x.push_back(tB); + y.push_back(tC); + dx.push_back(0.0); + dy.push_back(tE); + } + } + f.close(); + + TGraphErrors* g = new TGraphErrors(x.size(), &(x[0]), &(y[0]), &(dx[0]), &(dy[0])); + return g; +} + +//////////////////////////////////////////////////////////////////////////////// +TGraph* GetSimDCS_ForFig(string filename){ + vector<double> x, dx, y, dy; + ifstream f(filename.c_str()); + string line; + while (getline(f, line)){ + stringstream ss(line); + // i x y dx dy + double tA, tB, tC, tD, tE; + if (f >> tA >> tB >> tC >> tD >> tE){ + //cout << tA << " " << tB << " " << tC << " " << tD << " " << tE << endl; + x.push_back(tB); + y.push_back(tC); + dx.push_back(tD); + dy.push_back(tE); + } + } + f.close(); + + TGraph* g = new TGraph(x.size(), &(x[0]), &(y[0])); + return g; +} + +//////////////////////////////////////////////////////////////////////////////// +void CanvasPartition(TCanvas *C,const Int_t Nx,const Int_t Ny, Float_t lMargin, Float_t rMargin, Float_t bMargin, Float_t tMargin){ + if (!C) return; + + // Setup Pad layout: + Float_t vSpacing = 0.0; + Float_t vStep = (1.- bMargin - tMargin - (Ny-1) * vSpacing) / Ny; + + Float_t hSpacing = 0.0; + Float_t hStep = (1.- lMargin - rMargin - (Nx-1) * hSpacing) / Nx; + + Float_t vposd,vposu,vmard,vmaru,vfactor; + Float_t hposl,hposr,hmarl,hmarr,hfactor; + + for (Int_t i=0;i<Nx;i++) { + + if (i==0) { + hposl = 0.0; + hposr = lMargin + hStep; + hfactor = hposr-hposl; + hmarl = lMargin / hfactor; + hmarr = 0.0; + } else if (i == Nx-1) { + hposl = hposr + hSpacing; + hposr = hposl + hStep + rMargin; + hfactor = hposr-hposl; + hmarl = 0.0; + hmarr = rMargin / (hposr-hposl); + } else { + hposl = hposr + hSpacing; + hposr = hposl + hStep; + hfactor = hposr-hposl; + hmarl = 0.0; + hmarr = 0.0; + } + + for (Int_t j=0;j<Ny;j++) { + + if (j==0) { + vposd = 0.0; + vposu = bMargin + vStep; + vfactor = vposu-vposd; + vmard = bMargin / vfactor; + vmaru = 0.0; + } else if (j == Ny-1) { + vposd = vposu + vSpacing; + vposu = vposd + vStep + tMargin; + vfactor = vposu-vposd; + vmard = 0.0; + vmaru = tMargin / (vposu-vposd); + } else { + vposd = vposu + vSpacing; + vposu = vposd + vStep; + vfactor = vposu-vposd; + vmard = 0.0; + vmaru = 0.0; + } + + C->cd(0); + + auto name = TString::Format("pad_%d_%d",i,j); + auto pad = (TPad*) C->FindObject(name.Data()); + if (pad) delete pad; + pad = new TPad(name.Data(),"",hposl,vposd,hposr,vposu); + pad->SetLeftMargin(hmarl); + pad->SetRightMargin(hmarr); + pad->SetBottomMargin(vmard); + pad->SetTopMargin(vmaru); + + pad->SetFrameBorderMode(0); + pad->SetBorderMode(0); + pad->SetBorderSize(0); + + pad->Draw(); + } + } +} + +//////////////////////////////////////////////////////////////////////////////// +void WriteToFile(TGraph* gr, string filename){ + int npoints = gr->GetN(); + ofstream file; + file.open (filename.c_str()); + + cout << " ============================ " << endl; + cout << " Writing to " << filename << " ..." << endl; + + file << " i \t x \t y \t xe \t ye" << endl; + + for(int i = 0; i < npoints; i++){ + double x = gr->GetPointX(i); + double y = gr->GetPointY(i); + double xe = gr->GetErrorX(i); + double ye = gr->GetErrorY(i); + + file << i << "\t" + << x << "\t" + << y << "\t" + << xe << "\t" + << ye << "\t" + << endl; + + } + + cout << " Complete! " << endl; + cout << " ============================ " << endl; + +} + +//////////////////////////////////////////////////////////////////////////////// +void canclone(TCanvas* major, int padNum, string name){ + string minorName = "./CS2_Figures/" + name + ".root"; + TFile* minorFile = new TFile(minorName.c_str(),"READ"); + TCanvas* minor = (TCanvas*) minorFile->FindObjectAny("c_peakFits"); + + major->cd(padNum); + TPad *pad = (TPad*)gPad; + minor->cd(); + TObject *obj, *clone; + pad->Range(minor->GetX1(),minor->GetY1(),minor->GetX2(),minor->GetY2()); + pad->SetTickx(minor->GetTickx()); + pad->SetTicky(minor->GetTicky()); + pad->SetGridx(minor->GetGridx()); + pad->SetGridy(minor->GetGridy()); + pad->SetLogx(minor->GetLogx()); + pad->SetLogy(minor->GetLogy()); + pad->SetLogz(minor->GetLogz()); + pad->SetBorderSize(minor->GetBorderSize()); + pad->SetBorderMode(minor->GetBorderMode()); + minor->TAttLine::Copy((TAttLine&)*pad); + minor->TAttFill::Copy((TAttFill&)*pad); + minor->TAttPad::Copy((TAttPad&)*pad); + + TIter next(minor->GetListOfPrimitives()); + gROOT->SetSelectedPad(pad); + while ((obj=next())) { + clone = obj->Clone(); + obj->Draw("SAME"); + pad->GetListOfPrimitives()->Add(clone,obj->GetDrawOption()); + } + pad->Modified(); + pad->Update(); + major->cd(padNum); + pad->Draw(); +} + +//////////////////////////////////////////////////////////////////////////////// +double GetNodes(double spdf){ + double nodes; + if(spdf==0){ nodes=1; } + else if(spdf==1){ nodes=0; } + else if(spdf==2){ nodes=0; } + else if(spdf==3){ nodes=0; } + else{ + cout << " INPUT NODES::" << endl; + cin >> nodes; + } + return nodes; +} + +//////////////////////////////////////////////////////////////////////////////// +void GenerateResidual(TGraphErrors* gdSdO, TGraph* Final){ + + TGraphErrors* gResid = new TGraphErrors(*gdSdO); + for(int n=0; n < gResid->GetN(); n++){ + double x = gdSdO->GetPointX(n); + double residual = gdSdO->GetPointY(n) - Final->Eval(x); + gResid->SetPoint(n,x,residual); + gResid->SetPointError(n,0,gdSdO->GetErrorY(n)); + } + TLine* markzero = new TLine(CSangleL,0.,CSangleH,0.); + gResid->SetTitle(""); + gResid->GetXaxis()->SetRangeUser(CSangleL,CSangleH); + gResid->GetXaxis()->SetNdivisions(512,kTRUE); + gResid->GetYaxis()->SetTitle("Residuals"); + gResid->GetYaxis()->SetTitleSize(0.15); + gResid->GetYaxis()->SetTitleOffset(0.36); + gResid->GetYaxis()->SetLabelSize(0.08); + gResid->GetYaxis()->SetNdivisions(305); + gResid->GetXaxis()->SetTitleSize(0.15); + gResid->GetXaxis()->SetTitleOffset(0.8); + gResid->GetXaxis()->SetLabelSize(0.1); + gResid->GetXaxis()->SetTickLength(0.1); + gResid->Draw(); + markzero->SetLineStyle(2); + markzero->Draw("same"); + +} + +//////////////////////////////////////////////////////////////////////////////// +TGraph* AddTGraphs(TGraph* a, TGraph* b){ + if(a->GetN() != b->GetN()){ + cout << "CANNOT ADD GRAPHS, UNEQUAL NUMBER OF POINTS" << endl; + cout << a->GetN() << " != " << b->GetN() << endl; + return 0; + } + + TGraph* sum = (TGraph*) a->Clone(); + + int maxN = a->GetN(); + for(int i = 0 ; i < maxN ; i++){ + double xa = a->GetPointX(i); + double xb = b->GetPointX(i); + if(xa!=xb){cout << "FAIL! Unequal X!" << endl; return 0;} + + double ya = a->GetPointY(i); + double yb = b->GetPointY(i); + sum->SetPoint(i,xa,ya+yb); + } + + return sum; + +} + +//////////////////////////////////////////////////////////////////////////////// +TGraph* PullDWUCK4(double stateE, double Spin, double nodes, double spdf, double angmom, double J0, string inPot, string outPot){ + + // Defining 0000, 8313 etc. + ostringstream strStateE; + strStateE.width(4); strStateE.fill('0'); + strStateE << (stateE*1000); + + // Find DWUCK4 file + string filename = "/home/paxman/Programs/DWUCK4/Output_Processed/19-8-2-1-1-1_bE7990_Ex" + + strStateE.str() + + "_Pin-" + inPot + + "_Pout-" + outPot + + "_nl2j-" + to_string((int)nodes) + "-" + to_string((int)spdf) + "-" + to_string((int)(2*angmom)) + + "_2Ji-" + to_string((int)(2.*J0)) + + "_2Jo-" + to_string((int)(2.*Spin)) + + "_2Jt-" + to_string((int)(2.*angmom)) + + ".txt"; + cout << "Loading file: " << filename << endl; + + // Open DWUCK4 file + ifstream dwuckfile; + dwuckfile.open(filename.c_str()); + if (!dwuckfile.is_open()){ + cout << "FAILED TO OPEN FILE!" << endl; + } + + // Read in angle (#1) and cross section (#2) + string line; + vector<double> angle, cross; + + while(getline(dwuckfile,line)){ + // Separate variables, delimited by space + istringstream iss(line); + string substring{}; + vector<string> substrings{}; + + while (getline(iss, substring, ' ')){ + if (!substring.empty()) + substrings.push_back(substring); + } + + angle.push_back(stod(substrings[0])); + cross.push_back(stod(substrings[1])); + } + + dwuckfile.close(); + + TGraph *g = new TGraph(angle.size(), &angle[0], &cross[0]); + g->SetTitle("DWUCK4Output"); + g->SetName("DWUCK4Output"); + g->Draw("AL"); + + return g; +} + +//////////////////////////////////////////////////////////////////////////////// +// Allow detailed choices (i.e. initial nucleus spin J0, and number/width/intial angle bins) +void C2S(double Energy, double Spin, double spdf, double angmom, double binning, string option,double J0, double nAngB, double wAngB, double fAngB ){ + /* Clean global variables, in case of multiple runs */ + indexE = 100; + anglecentres.clear(); + anglewidth.clear(); + globalS=0.; + globalSerr=0.; + globalS2=0.; + globalSerr2=0.; + peakFitList->Clear(); + globalBinning = binning; + + //gROOT->SetBatch(1); + + double spdf2, angmom2 = 0; + doMix = false; + doDoublet = false; + + if(option=="mixed"){ + doMix = true; + cout << BOLDBLUE + << " || MIXING OPTION SELECTED || \n" + << " || GIVE DETAILS OF 2ND OPT || \n" + << " || L = ... || \n" + << endl; + cin >> spdf2; + cout << " || J = ... || \n" + << endl; + cin >> angmom2; + cout << RESET; + } else if (option=="doublet") { + doDoublet = true; + } + + if(binning < 0.005){ + cout << BOLDRED + << " BINNING IS BELOW 0.005 MeV! Exiting..." + << RESET + << endl; + return; + } + + /* Assign local variables */ + // s1/2 -> spdf = 0, angmom = 0.5 + // J0 is incident spin, which is 19O g.s. therefore J0 = 5/2 + //double J0 = 2.5; // NOW INPUT VARIABLE + double ElasticNorm = 1.0, ElasticNormErr = 0.0; + + string backupFileName = "SolidAngleHistFiles/"; + string saFileName = "SolidAngleHistFiles/SAHF_Sim_19Odp_"; + + // Define angle variables + numAngleBins=nAngB; widthAngleBins=wAngB; firstAngle=fAngB; // NOW INPUT VARIABLE + CSangleL = 100.; + CSangleH = 160.; + CSvertL = 0.04; //0.01; + CSvertH = 100.; + + //// Reduce angular range for high energy states + //if(Energy>7.2){ + // double tmax = (Energy-18.)/(-0.075); + // numAngleBins = (int)floor((double)(floor(tmax)-firstAngle)/widthAngleBins); + // cout << "!! TRIMMED NUMBER OF ANGLE BINS" << numAngleBins << endl; + // cout << "!! THEREFORE ANGE RANGE = " + // << firstAngle << " to " + // << firstAngle+(widthAngleBins*numAngleBins) + // << endl; + //} + + // Extract spin orbit name + orbitalname.clear(); + orbital.clear(); + + switch((int)spdf){ + case 0: + orbitalname.append("s_{"); + orbital.append("s"); + break; + case 1: + orbitalname.append("p_{"); + orbital.append("p"); + break; + case 2: + orbitalname.append("d_{"); + orbital.append("d"); + break; + case 3: + orbitalname.append("f_{"); + orbital.append("f"); + break; + default: + cout << RED + <<"ERROR: SPDF SELECTION OUT OF RANGE" + << endl; + } + orbitalname.append(to_string((int)(2*angmom))); + orbitalname.append("/2}"); + orbital.append(to_string((int)(2*angmom))); + orbital.append("2"); + + // Number of nodes + double nodes = GetNodes(spdf); + double nodes2; + if(doMix){ + nodes2 = GetNodes(spdf2); + } + + /* Retrieve array index of the entered peak energy */ + /* numpeaks and Energy[] defined globally in KnownPeakFitter.h */ + bool found = 0; + for(int i=0;i<numPeaks;i++){ + cout << i << " " << Energy << " " << means.at(i) << endl; + if(abs(Energy-means.at(i))<0.01){ + cout << "========================================================" << endl; + cout << "Identified as state #" << i << ", E = " << means.at(i) << endl; + indexE = i; + found = 1; + stringstream ss; + ss << setfill('0') << setw(4) << (int)((means.at(i)+0.0001)*1000.); + statename = ss.str(); + } + } +// for(int i=0;i<numVoigt;i++){ +// if(abs(Energy-meansVoigt.at(i))<0.01){ +// cout << "========================================================" << endl; +// cout << "Identified as state #" << i << ", E = " << meansVoigt.at(i) << endl; +// indexE = numPeaks - 1 + i; +// found = 1; +// stringstream ss; +// ss << setfill('0') << setw(4) << (int)((meansVoigt.at(i)+0.0001)*1000.); +// statename = ss.str(); +// } +// } + if(!found){ + cout << "========================================================" << endl; + cout << "NO STATE AT THAT ENERGY INDENTIFIED!! CHECK KNOWN PEAKS!!" << endl; + return; + } + saFileName.append(statename); + saFileName.append(".root"); + + /* Solid Angle (from simulation) */ + TFile* file; + ifstream infile(saFileName); + ifstream backup(backupFileName); + if(infile.good()){ + cout << GREEN << "Opening file " << saFileName << RESET << endl; + file = TFile::Open(saFileName.c_str()); + } else if (backup.good()){ + cout << BOLDRED << "FAILED TO OPEN " << saFileName << endl; + cout << "Open standard backup file " << backupFileName << endl; + cout << RESET; + file = TFile::Open(backupFileName.c_str()); + } else { + cout << BOLDRED << "FAILED TO OPEN MAIN OR BACKUP SOLID ANGLE FILE" << endl; + cout << RED << "Check SolidAngle file exists..." << RESET << endl; + } + + //string objName = "SolidAngle_Lab_MG"; + string objName = "SolidAngle_CM_MG"; + TH1F* SolidAngle = (TH1F*) file->FindObjectAny(objName.c_str()); + TCanvas* c_SolidAngle = new TCanvas("c_SolidAngle","c_SolidAngle",500,500); + SolidAngle->Draw("HIST"); + SolidAngle->GetXaxis()->SetRangeUser(CSangleL,CSangleH); + /* (canvas deleted after Area/SA calculation) */ + + /* Area of experimental peaks */ +//TCanvas* c_PeakArea = new TCanvas("c_PeakArea","c_PeakArea",500,500); + vector<vector<double>> areaArray = GetExpDiffCross(means.at(indexE)); +//delete c_PeakArea; + + // Array: peakenergy, peakarea, areaerror, anglemin, anglemax + if(loud){ + for(int i=0; i<areaArray.size();i++){ + cout << i << " " + << areaArray[i][0] << " " + << areaArray[i][1] << " " + << areaArray[i][2] << " " + << areaArray[i][3] << " " + << areaArray[i][4] << endl; + } + } + + /* AoSA = Area/Solid Angle [#/msr] */ + /* dSdO = Experimental Diff. Cross Sect. (Area/Solid Angle *Norm) [mb/msr] */ + vector<Double_t> peakAreas, peakAErrs; + vector<Double_t> AoSA, AoSAerr; + vector<Double_t> expDCS, expDCSerr; + for(int i=0; i<areaArray.size();i++){ + int binmin = SolidAngle->FindBin(areaArray[i][3]+0.0001); + int binmax = SolidAngle->FindBin(areaArray[i][4]-0.0001); + + anglecentres.push_back(((areaArray[i][4]-areaArray[i][3])/2.)+areaArray[i][3]); + anglewidth.push_back(areaArray[i][4]-areaArray[i][3]); + + double tempsum=0, tempsumerr=0; + for(int x=binmin;x<binmax+1;x++){ + tempsum += SolidAngle->GetBinContent(x); + tempsumerr += SolidAngle->GetBinError(x); + if(loud){cout << x << endl;} + } + if(loud){cout << "TEST CHECK " << tempsum << " +- " << tempsumerr << endl;} + + double SAerr; + double SA = SolidAngle->IntegralAndError(binmin,binmax,SAerr); + SA = SA*1000.; //sr->msr + SAerr = SAerr*1000.; //sr->msr + + /* Peak Area ONLY */ + peakAreas.push_back(areaArray[i][1]); + peakAErrs.push_back(areaArray[i][2]); + + /* Area over Solid angle ONLY */ + AoSA.push_back(areaArray[i][1]/SA); + AoSAerr.push_back((areaArray[i][1]/SA) + * sqrt( pow(areaArray[i][2]/areaArray[i][1],2) + + pow(SAerr/SA,2))); + + /* Differential Cross Section */ + /* NOTE: DON'T INCLUDE NORM ERROR IN ERR PROPAGATION AS IT IS SYSTEMATIC! */ + double tempvalue = (areaArray[i][1]/SA)*ElasticNorm; + double temperror = tempvalue + * sqrt( pow(areaArray[i][2]/areaArray[i][1],2) + + pow(SAerr/SA,2) + ); + //if(temperror<tempvalue){ // exclude very large error bars + expDCS.push_back(tempvalue); + expDCSerr.push_back(temperror); + //} + + if(loud){ + cout << "Angle " << areaArray[i][3] << " to " << areaArray[i][4] + << ", centre " << anglecentres[i] + << ": Area = " << areaArray[i][1] << " +- " << areaArray[i][2] << " cnts" + << " SA = " << SA << " +- " << SAerr << " msr" + << " Area/SA = " << AoSA[i] << " +- " << AoSAerr[i] << " counts/msr" + << setprecision(5) + << " Norm = " << ElasticNorm << " +- " << ElasticNormErr + << " (don't include norm err in propagation)" + << " dSdO = " << tempvalue << " +- " << temperror + << setprecision(3) + << endl; + } + + } + //delete c_SolidAngle; + + gROOT->SetBatch(0); + + /* Graph of Peak Areas*/ + TCanvas* c_PeakArea = new TCanvas("c_PeakArea","c_PeakArea",500,500); + c_PeakArea->SetLogy(); + TGraphErrors* gArea = new TGraphErrors( + anglecentres.size(), //n + &(anglecentres[0]), &(peakAreas[0]), //x, y + 0, &(peakAErrs[0]) ); //errX, errY + gArea->SetTitle("Area"); + gArea->GetXaxis()->SetTitle("ThetaCM [deg]"); + gArea->GetYaxis()->SetTitle("Counts"); + gArea->Draw(); + + /* Graph of Area/Solid Angle*/ + TCanvas* c_AoSA = new TCanvas("c_AoSA","c_AoSA",500,500); + c_AoSA->SetLogy(); + TGraphErrors* gAoSA = new TGraphErrors( + anglecentres.size(), //n + &(anglecentres[0]), &(AoSA[0]), //x, y + 0, &(AoSAerr[0]) ); //errX, errY + gAoSA->SetTitle("Area/SolidAngle"); + gAoSA->GetXaxis()->SetTitle("ThetaCM [deg]"); + gAoSA->GetXaxis()->CenterTitle(); + gAoSA->GetYaxis()->SetTitle("Counts/#Omega [counts/msr]"); + gAoSA->GetYaxis()->CenterTitle(); + gAoSA->SetMarkerStyle(7); + gAoSA->SetMarkerColor(kRed); + gAoSA->SetLineColor(kRed); + gAoSA->Draw("AP"); + + /* Graph of experimental diff. cross sect (dSigma/dOmega) */ + TCanvas* c_dSdO = new TCanvas("c_dSdO","c_dSdO",500,500); + c_dSdO->SetLogy(); + TGraphErrors* gdSdO = new TGraphErrors( + anglecentres.size(), + &(anglecentres[0]), &(expDCS[0]), + 0, &(expDCSerr[0]) ); + gdSdO->SetTitle("Differential Cross Section"); + gdSdO->GetXaxis()->SetTitle("#theta_{CM} [deg]"); + gdSdO->GetXaxis()->SetTitleOffset(1.2); + gdSdO->GetXaxis()->SetTitleSize(0.04); + //gdSdO->GetYaxis()->SetTitle("d#sigma/d#Omega [mb/msr]"); + gdSdO->GetYaxis()->SetTitle("Counts / msr"); + gdSdO->GetYaxis()->SetTitleOffset(1.2); + gdSdO->GetYaxis()->SetTitleSize(0.04); + gdSdO->Draw(); + c_dSdO->Update(); + +///* TWOFNR diff. cross section, in mb/msr */ +//double meanTWOFNR = means.at(indexE); +//if(meanTWOFNR > SnTWOFNR){meanTWOFNR = SnTWOFNR-0.001;} +//TCanvas* c_TWOFNR = new TCanvas("c_TWOFNR","c_TWOFNR",500,500); +//c_TWOFNR->SetLogy(); +// +//TGraph* TheoryDiffCross; TGraph* TheoryDiffCross2; +//TGraph* TDCS_s; TGraph* TDCS_p; TGraph* TDCS_d; TGraph* TDCS_f; TGraph* TDCS_g; TGraph* TDCS_h; +//if(comparingTWOFNRs==0){ //normal state +// TheoryDiffCross = TWOFNR(meanTWOFNR, Spin, nodes, spdf, angmom, J0); +// TheoryDiffCross->GetYaxis()->SetTitle("d#sigma/d#Omega [mb/msr]"); //msr set in func above +// TheoryDiffCross->GetXaxis()->SetTitle("ThetaCM [deg]"); +// TheoryDiffCross->Draw(); + +// if(doMix){ +// TheoryDiffCross2 = TWOFNR(meanTWOFNR, Spin, nodes2, spdf2, angmom2, J0); +// TheoryDiffCross2->SetLineColor(kBlue); +// TheoryDiffCross2->Draw("same"); +// } + +// /** TEMP **/ +// if(loud){ +// cout << "UNSCALED THEORY DIFF CROSS SECTION EVALUATED AT DATA POINTS:::" << endl; +// cout << setprecision(6); +// for(int i=0; i<numAngleBins; i++){ +// cout << anglecentres.at(i) << "\t" << TheoryDiffCross->Eval(anglecentres.at(i)) << endl; +// } +// cout << setprecision(3); +// cout << "......................" << endl; +// } +//} else { // running for ALL ell-transfers, to compare shape +// cout << " TWOFNR s-wave..." << endl; TDCS_s = TWOFNR(meanTWOFNR, 2, 1, 0, 0.5, 2.5); TDCS_s->SetTitle("TDCS_s"); +// cout << " TWOFNR p-wave..." << endl; TDCS_p = TWOFNR(meanTWOFNR, 0, 0, 1, 0.5, 0.5); TDCS_p->SetTitle("TDCS_p"); +// cout << " TWOFNR d-wave..." << endl; TDCS_d = TWOFNR(meanTWOFNR, 0, 0, 2, 2.5, 2.5); TDCS_d->SetTitle("TDCS_d"); +// cout << " TWOFNR f-wave..." << endl; TDCS_f = TWOFNR(meanTWOFNR, 1, 0, 3, 3.5, 2.5); TDCS_f->SetTitle("TDCS_f"); +// cout << " TWOFNR g-wave..." << endl; TDCS_g = TWOFNR(meanTWOFNR, 2, 0, 4, 4.5, 2.5); TDCS_g->SetTitle("TDCS_g"); +// cout << " TWOFNR h-wave..." << endl; TDCS_h = TWOFNR(meanTWOFNR, 3, 0, 5, 5.5, 2.5); TDCS_h->SetTitle("TDCS_h"); +//} +///** **** **/ + + + // TESTING USING DWUCK4! + TCanvas* c_Thry = new TCanvas("c_Thry","c_Thry",500,500); + c_Thry->SetLogy(); + + TGraph* TheoryDiffCross; TGraph* TheoryDiffCross2; + TheoryDiffCross = PullDWUCK4(means.at(indexE), Spin, nodes, spdf, angmom, J0, inPot, outPot); + TheoryDiffCross->SetTitle("TheoryDiffCross"); + TheoryDiffCross->SetName("TheoryDiffCross"); + TheoryDiffCross->GetYaxis()->SetTitle("d#sigma/d#Omega [mb/sr]"); //DWUCK4 output coverted to mb/sr by qwackConvert + TheoryDiffCross->GetXaxis()->SetTitle("ThetaCM [deg]"); + TheoryDiffCross->Draw(); + if(doMix){ + TheoryDiffCross2 = PullDWUCK4(means.at(indexE), Spin, nodes2, spdf2, angmom2, J0, inPot, outPot); + TheoryDiffCross2->SetTitle("TheoryDiffCross2"); + TheoryDiffCross2->SetName("TheoryDiffCross2"); + TheoryDiffCross2->SetLineColor(kBlue); + TheoryDiffCross->Draw(); TheoryDiffCross2->Draw("same"); + } + + /* Using Chi2 minimizaiton */ + if(loud){cout << "USING CHI2 MINIMIZAITON..." << endl;} + TCanvas* c_Chi2Min = new TCanvas("c_Chi2Min","c_Chi2Min",500,500); + gStyle->SetPadLeftMargin(0.12); + gStyle->SetPadRightMargin(0.03); + + TPad *pad1 = new TPad("pad1","pad1",0,0,1,1); + pad1->SetTopMargin(0.1); + pad1->SetBottomMargin(0.1); + pad1->SetBorderMode(0); + pad1->SetLogy(); + pad1->SetTickx(); + pad1->SetTicky(); + pad1->Draw(); + pad1->cd(); +//TPad *pad1 = new TPad("pad1","pad1",0,0.25,1,1); +//TPad *pad2 = new TPad("pad2","pad2",0,0,1,0.25); +//pad1->SetTopMargin(0.1); +//pad1->SetBottomMargin(0.00001); +//pad1->SetBorderMode(0); +//pad1->SetLogy(); +//pad1->SetTickx(); +//pad1->SetTicky(); +//pad2->SetTopMargin(0.00001); +//pad2->SetBottomMargin(0.3); +//pad2->SetBorderMode(0); +//pad2->SetTickx(); +//pad2->SetTicky(); +//pad1->Draw(); +//pad2->Draw(); +//pad1->cd(); + + TGraph* Final; + TGraph* Fs; TGraph* Fp; TGraph* Fd; TGraph* Ff; TGraph* Fg; TGraph* Fh; +//if(comparingTWOFNRs==0){ //normal state + TGraphErrors* gdSdO2 = new TGraphErrors(*gdSdO); + gdSdO2->SetName("gdSdO2"); + gdSdO2->SetTitle("gdSdO2"); + + + if(doMix){ + Final = FindNormalisation(TheoryDiffCross,TheoryDiffCross2,gdSdO); + } else { + Final = FindNormalisation(TheoryDiffCross,gdSdO); + } + + Final->SetName("Final"); + Final->SetTitle("Final"); + + gdSdO->SetLineColor(kRed); + gdSdO->SetMarkerColor(kRed); + gdSdO->SetMarkerStyle(21); +//} else { // running for ALL ell-transfers, to compare shape +// Fs = FindNormalisation(TDCS_s,gdSdO); +// Fp = FindNormalisation(TDCS_p,gdSdO); +// Fd = FindNormalisation(TDCS_d,gdSdO); +// Ff = FindNormalisation(TDCS_f,gdSdO); +// Fg = FindNormalisation(TDCS_g,gdSdO); +// Fh = FindNormalisation(TDCS_h,gdSdO); +// Fs->SetLineColor(kViolet); +// Fp->SetLineColor(kRed); +// Fd->SetLineColor(kGreen); +// Ff->SetLineColor(kBlue); Ff->SetLineStyle(7); +// Fg->SetLineColor(kCyan); Fg->SetLineStyle(7); +// Fh->SetLineColor(kOrange); Fh->SetLineStyle(7); +// +// gdSdO->SetLineColor(kBlack); +// gdSdO->SetMarkerColor(kBlack); +// gdSdO->SetMarkerStyle(21); +//} + + /* Construct file name string */ + /**/ ostringstream tempstream; + /**/ if(means.at(indexE)<1.0){tempstream << 0;} + /**/ tempstream << (int) (means.at(indexE)*1000); + /**/ tempstream << "_" << orbital; + /**/ tempstream << "_spin" << Spin; + /**/ string tempstr = tempstream.str(); + /* Construct hist title string */ + /**/ ostringstream textstream; + /**/ textstream << std::fixed << setprecision(3); + /**/ textstream << " " << means.at(indexE); + /**/ textstream << " MeV, "; + /**/ textstream << orbitalname; + /**/ textstream << ", spin " << (int)Spin; + /**/ textstream << " --> scale (not norm.) = " << globalS + /**/ << " +- " << globalSerr; + /**/ if(doMix){ + /**/ textstream << " & " << globalS2 + /**/ << " +- " << globalSerr2; + /**/ } + /**/ string textstring = textstream.str(); + + gdSdO->SetTitle(textstring.c_str()); + gdSdO->GetYaxis()->SetTitleOffset(1.3); + gdSdO->GetYaxis()->SetTitleSize(0.042); + gdSdO->GetXaxis()->SetRangeUser(CSangleL,CSangleH); + gdSdO->GetYaxis()->SetRangeUser(CSvertL,CSvertH); + gdSdO->GetXaxis()->SetNdivisions(512,kTRUE); + gdSdO->GetXaxis()->CenterTitle(); + gdSdO->GetYaxis()->CenterTitle(); + gdSdO->Draw("AP"); + +//if(comparingTWOFNRs==0){ //normal state + Final->Draw("SAME"); +//} else { +// Fs->Draw("SAME"); +// Fp->Draw("SAME"); +// Fd->Draw("SAME"); +// Ff->Draw("SAME"); +// Fg->Draw("SAME"); +// Fh->Draw("SAME"); +//} + +//pad2->cd(); +//if(comparingTWOFNRs==0){ //normal state +// GenerateResidual(gdSdO,Final); +//} + + string savestring1 = "./C2S_Outputs/"+tempstr+".root"; + string savestring2 = "./C2S_Outputs/"+tempstr+".pdf"; + c_Chi2Min->SaveAs(savestring1.c_str()); + c_Chi2Min->SaveAs(savestring2.c_str()); + + cout << YELLOW + << " ----- C2S = (2J+1)S = (2*" << (int)Spin << "+1)S = (" + << (int)((2.*Spin)+1.) << ")S = " + << ((2.*Spin)+1.) * globalS << " ----- " + << RESET << endl; + + + //delete c_AoSA; + //delete c_dSdO; +} + +//////////////////////////////////////////////////////////////////////////////// +// For simple states, don't require detailed choices +void C2S(double Energy, double Spin, double spdf, double angmom, double binning, string option){ + C2S(Energy, Spin, spdf, angmom, binning, option, 2.5, 19, 2.0, 106.0); +} + +//////////////////////////////////////////////////////////////////////////////// +// Comparing one state to many TWOFNRs +void C2S_CompareTWOFNRs(double Energy, double Spin, double spdf, double angmom, double binning, string option, double J0, double nAngB, double wAngB, double fAngB ){ + comparingTWOFNRs = true; + C2S(Energy, Spin, spdf, angmom, binning, option, J0, nAngB, wAngB, fAngB); + comparingTWOFNRs = false; +} + +//////////////////////////////////////////////////////////////////////////////// +vector<vector<double>> GetExpDiffCross(double Energy){ + cout << "========================================================" << endl; + vector<vector<double>> AllPeaks_OneGate; + vector<vector<double>> OnePeak_AllGates; + /****CHANGE ANGLE GATING****/ + //double widthAngleBins = 2.5; + //double firstAngle = 105.; + /***************************/ + double x[numAngleBins], y[numAngleBins]; + //TList* list = new TList(); + + double trackScale = 0.0; + /* Determine scaling factor for PhaseSpace */ + TCanvas* c_ExSubPSpace = new TCanvas("c_ExSubPSpace","c_ExSubPSpace",500,500); + + //for(int i=0; i<1; i++){ + for(int i=0; i<numAngleBins;i++){ + double min = firstAngle + (i*widthAngleBins); + double max = min + widthAngleBins; + cout << GREEN << endl; + cout << "===================================" << endl; + cout << " RUNNING SUB AND FIT " << endl; + cout << "min: " << min << " max: " << max << endl; + + stringstream tmp; tmp << fixed << setprecision(0); + tmp << "c_peakFits_" << min << "_" << max; + string tmp2 = tmp.str(); + TCanvas* c_peakFits = new TCanvas("c_peakFits",tmp2.c_str(),500,500); + + /* Retrieve theta-gated Ex TH1F from file GateThetaLabHistograms.root */ + /* To change angle gates, run GateThetaLab_MultiWrite() */ + TH1F *gate; // HERE< TAKE VERSION WIH PSP ALREADY REMOVED! + //gate = PullThetaLabHistSubPSp(i,firstAngle,widthAngleBins,(int) widthAngleBins); + gate = PullThetaCMHistSubPSp(i,firstAngle,widthAngleBins,(int) widthAngleBins); + + // Retrieve array containing all fits, for one angle gate. // + // Specific peak of interest selected from the vector by // + // global variable indexE // + gate->Draw(); + AllPeaks_OneGate = FitKnownPeaks_RtrnArray(gate); + + + /* Write PS-subtracted spectrum to list */ + //list->Add(gate); + //list->Add(c_peakFits); + gate->GetXaxis()->SetRangeUser(-1.0,+10.0); + string filename = "./C2S_Outputs/"; + filename += tmp2 + ".root"; + c_peakFits->SaveAs(filename.c_str()); + //auto tempfile = new TFile(filename.c_str(),"UPDATE"); //Reopen newly made file + //auto templist = new TList(); + //templist->Add(); + + + /* Check correct OneGate vector is selected */ + if(loud){ + cout << "area of " << means.at(indexE) << " = " + << AllPeaks_OneGate[indexE][1] + << " +- " << AllPeaks_OneGate[indexE][2] + << endl; + } +cout << "here.... indexE = " << indexE << endl; + /* Add min and max angle to end of relevant OneGate vector */ + AllPeaks_OneGate[indexE].push_back(min); + AllPeaks_OneGate[indexE].push_back(max); + +cout << "here...." << endl; + /* Push relevant OneGate vector to end of AllGates vector */ + OnePeak_AllGates.push_back(AllPeaks_OneGate[indexE]); + //delete c_peakFits; + } + +cout << "here...." << endl; + /* Write PS-subtracted spectrum to file */ + //TFile* outfile = new TFile("GateThetaLab_ExMinusGatePhaseSpace.root","RECREATE"); + //list->Write("GateThetaLab_ExMinusPhaseSpace",TObject::kSingleKey); + +cout << "here...." << endl; + return OnePeak_AllGates; +} + +//////////////////////////////////////////////////////////////////////////////// +TH1F* PullThetaCMHistSubPSp(int i, double minTheta, double gatesize, int angBinSize){ + string name = "./C2S_Outputs/GateThetaCMHist_ExpSubPSp_" + to_string(angBinSize) + "deg_0p005.root"; + TFile* file = new TFile(name.c_str(),"READ"); + string histname = "TCM" + + to_string((int)(minTheta+(i*gatesize))) + "to" + + to_string((int)(minTheta+((i+1)*gatesize))); + cout << "Loading " << name << " -> " << histname << endl; + + TList *list = (TList*)file->Get("GateThetaCMHistograms"); + TH1F* hist = (TH1F*)list->FindObject(histname.c_str()); + hist->GetXaxis()->SetRangeUser(-2.,10.); + + double pulledBin = hist->GetBinWidth(10); + int ratio = (int)(globalBinning / pulledBin); + hist->Rebin(ratio); + file->Close(); + + return hist; +} + +//////////////////////////////////////////////////////////////////////////////// +void Scale(TGraph* g , TGraphErrors* ex){ + double scale; + double mean = 0 ; + double* eX = ex->GetX(); + double* eY = ex->GetY(); + double totalW = 0; + double W = 0; + for(int i = 0 ; i < ex->GetN() ; i++){ + if(eY[i]>1 && eY[i] <1e4){ + // Incremental Error weighted average + W = 1./ex->GetErrorY(i); + scale = eY[i]/g->Eval(eX[i]); + totalW +=W; + mean = mean + W*(scale - mean)/(totalW); + } + } + + //scaleTWOFNR = mean; + if(loud){ + cout << "SCALED THEORY BY " << mean << endl; + cout << " therefore S = " << 1/mean << " ??" << endl; + } + + double* x = g->GetX(); + double* y = g->GetY(); + for(unsigned int i = 0 ; i < g->GetN() ; i++) + g->SetPoint(i,x[i],y[i]*mean); +} + +//////////////////////////////////////////////////////////////////////////////// +double Chi2(TGraph* theory, TGraphErrors* exper){ + double Chi2 = 0; + double chi = 0; + + //cout << setprecision(8); + //for(int i = 1 ; i < exper->GetN() ; i++){ + for(int i = 0 ; i < exper->GetN() ; i++){ + if(exper->GetPointY(i)>1.0e-4){//10){ //0){ +// cout << setprecision(6) +// << "COMPARE::::: " +// << exper->GetPointY(i) << " +- " << exper->GetErrorY(1) +// << " TO " +// << theory->Eval(anglecentres[i]) +// << endl; + + ////////////////////////////////////////////////////////////////////////////////////////// + // --------------------------------------------------------------------------------------- + // | Louis Lyons pg 102: + // | Least squares should minimize sum(y_obs - y_th / err)^2 + // | Err SHOULD in principle be error in THEORY + // | However it is common practive to use error in OBS for various reasons (pg 103-104) + // --------------------------------------------------------------------------------------- + ////////////////////////////////////////////////////////////////////////////////////////// + + //Chi2 += pow((exper->GetPointY(i) - theory->Eval(anglecentres[i])), 2 ) / theory->Eval(anglecentres[i]); + Chi2 += pow(((exper->GetPointY(i) - theory->Eval(anglecentres[i]))) / exper->GetErrorY(i) , 2 ); + } + } + if(loud){cout << setprecision(10) << "Chi2 = " << Chi2 << " #dof = " << exper->GetN()-1 << " Chi2/#dof = " << Chi2/(double)exper->GetN()-1 << setprecision(4)<< endl;} + return Chi2; +} + +//////////////////////////////////////////////////////////////////////////////// +double ToMininize(const double* parameter){ + static int f = 0 ; + TGraph* g = new TGraph(); + if(doMix){ + double* X = currentThry->GetX(); // gets valies from global g1 = tgraph passed to find norm + double* Y1 = currentThry->GetY(); + double* Y2 = currentThry2->GetY(); + for(int i = 0 ; i < currentThry->GetN() ; i++){ + g->SetPoint(g->GetN(),X[i],parameter[0]*Y1[i] + parameter[1]*Y2[i]); // scales this tgraph by parameter + } + } else { + double* X = currentThry->GetX(); // gets valies from global g1 = tgraph passed to find norm + double* Y = currentThry->GetY(); + for(int i = 0 ; i < currentThry->GetN() ; i++){ + g->SetPoint(g->GetN(),X[i],parameter[0]*Y[i]); // scales this tgraph by parameter + } + } + + double chi2 = Chi2(g,staticExp); //compares theory tgraph to experimental tgrapherrors by chi2 + return chi2; +} + +//////////////////////////////////////////////////////////////////////////////// +TGraph* FindNormalisation(TGraph* theory, TGraphErrors* experiment){ + /* (dSdO)meas = S * (dSdO)calc */ + + // Set global variable + currentThry = theory; + staticExp = experiment; + + // Construct minimiser + const char* minName ="Minuit";const char* algoName="Migrad"; + ROOT::Math::Minimizer* min = + ROOT::Math::Factory::CreateMinimizer(minName, algoName); + min->SetValidError(true); + + // Number of parameters (should only be 1 for me) + int mysize = 1; + + // Create funciton wrapper for minimizer + // a IMultiGenFunction type + ROOT::Math::Functor f(&ToMininize,mysize); + min->SetFunction(f); + + //int SpecFactorUpperLimit = 2; + int SpecFactorUpperLimit = 100; + + // Set range of parameter(??) + double* parameter = new double[mysize]; + for(unsigned int i = 0 ; i < mysize ; i++){ + parameter[i] = 0.5; + char name[4]; + sprintf(name,"S%d",i+1); + min->SetLimitedVariable(i,name,parameter[i],0.01,0,SpecFactorUpperLimit); + } + + //min->SetPrintLevel(3); + + ///// TO IMPROVE: FIND WAY OF OBTAINING NDF AND PRINT CHI2/NDF ///// + + // Minimise + min->ProvidesError(); + min->SetValidError(true); + min->Minimize(); + const double *xs = min->X(); + const double *err = min->Errors(); + + cout << "IS THE MINIMIZATION GOOD? -> " << min->IsValidError() << endl; + + // Write out + for(int i = 0 ; i < mysize ; i++){ + cout << Form("S%d=",i+1) << xs[i] << "(" << err[i] << ")" << endl; + } + + /* Store S value in global variable, to access for drawing on plots */ + globalS = xs[0]; + globalSerr = err[0]; + + // Return the Fitted CS + TGraph* g = new TGraph(); + double* X = theory->GetX(); + double* Y = theory->GetY(); + if(loud){ + cout << setprecision(8); + cout << "Start: X[0] = " << theory->GetPointX(4) << " Y[0] = " << theory->GetPointY(4) << endl; + cout << "multip by " << xs[0] << endl; + } + + for(int i=0; i<theory->GetN(); i++){ g->SetPoint(i,X[i],xs[0]*Y[i]); } + + if(loud){ + cout << "End: X[0] = " << g->GetPointX(4) << " Y[0] = " << g->GetPointY(4) << endl; + cout << setprecision(3); + } + + return g; +} + +//////////////////////////////////////////////////////////////////////////////// +TGraph* FindNormalisation(TGraph* theory, TGraph* theory2, TGraphErrors* experiment){ + /* (dSdO)meas = S * (dSdO)calc */ + + // Set global variable + currentThry = theory; + currentThry2 = theory2; + staticExp = experiment; + + // Construct minimiser + const char* minName ="Minuit";const char* algoName="Migrad"; + ROOT::Math::Minimizer* min = + ROOT::Math::Factory::CreateMinimizer(minName, algoName); + min->SetValidError(true); + + // Number of parameters (should only be 1 for me) + int mysize = 1; + if(doMix){mysize=2;} + + // Create funciton wrapper for minimizer + // a IMultiGenFunction type + ROOT::Math::Functor f(&ToMininize,mysize); + min->SetFunction(f); + + // Set range of parameter(??) + double* parameter = new double[mysize]; + for(unsigned int i = 0 ; i < mysize ; i++){ + //parameter[i] = 0.8; + parameter[i] = 10.; + char name[4]; + sprintf(name,"S%d",i+1); + //min->SetLimitedVariable(i,name,parameter[i],0.01,0,10); + min->SetLimitedVariable(i,name,parameter[i],0.01,0,20); + } + + // Minimise + min->Minimize(); + const double *xs = min->X(); + const double *err = min->Errors(); + + // Write out + for(int i = 0 ; i < mysize ; i++){ + cout << Form("S%d=",i+1) << xs[i] << "(" << err[i] << ")" << endl; + } + + /* Store S value in global variable, to access for drawing on plots */ + globalS = xs[0]; + globalSerr = err[0]; + globalS2 = xs[1]; + globalSerr2 = err[1]; + + // Return the Fitted CS + TGraph* g = new TGraph(); + double* X = theory->GetX(); + double* Y1 = theory ->GetY(); + double* Y2 = theory2->GetY(); + if(loud){ + cout << setprecision(8); + cout << "Start: X[0] = " << theory->GetPointX(4) << " Y[0] = " << theory->GetPointY(4) << endl; + cout << "multip by " << xs[0] << endl; + cout << "Start: X[1] = " << theory2->GetPointX(4) << " Y[0] = " << theory2->GetPointY(4) << endl; + cout << "multip by " << xs[1] << endl; + } + + for(int i=0; i<theory->GetN(); i++){ + g->SetPoint(i, X[i], xs[0]*Y1[i] + xs[1]*Y2[i]); + } + + if(loud){ + cout << "End: X = " << g->GetPointX(4) << " Y = " << g->GetPointY(4) << endl; + cout << setprecision(3); + } + + return g; +} + +//////////////////////////////////////////////////////////////////////////////// +void C2S(double Energy, double Spin, double spdf, double angmom, double binning, double GammaGateEnergy){ + GammaGate=true; + globGammaGate = GammaGateEnergy; + + C2S(Energy, Spin, spdf, angmom, binning, ""); +} diff --git a/Projects/e775s/analysis/Plots_ConvoluteBreitWignerGaus.h b/Projects/e775s/analysis/Plots_ConvoluteBreitWignerGaus.h new file mode 100644 index 0000000000000000000000000000000000000000..1d746a0a23acd58aef716a008ed3036824003a5d --- /dev/null +++ b/Projects/e775s/analysis/Plots_ConvoluteBreitWignerGaus.h @@ -0,0 +1,84 @@ + +//RIPPED FROM : https://roottalk.root.cern.narkive.com/416EXmkI/root-breit-wigner-convoluted-with-a-gaussian + + +Double_t breitgausfun(Double_t *x, Double_t *par) +{ + //Fit parameters: + //par[0]=Width (scale) Breit-Wigner + //par[1]=Most Probable (MP, location) Breit mean + //par[2]=Total area (integral -inf to inf, normalization constant) + //par[3]=Width (sigma) of convoluted Gaussian function + // + //In the Landau distribution (represented by the CERNLIB approximation), + //the maximum is located at x=-0.22278298 with the location parameter=0. + //This shift is corrected within this function, so that the actual + //maximum is identical to the MP parameter. + + // Numeric constants + Double_t invsq2pi = 0.3989422804014; // (2 pi)^(-1/2) + Double_t twoPi = 6.2831853071795;//2Pi + + // Control constants + Double_t np = 100.0; // number of convolution steps + Double_t sc = 4; // convolution extends to +-sc Gaussian sigmas + + // Variables + Double_t xx; + Double_t fland; + Double_t sum = 0.0; + Double_t xlow,xupp; + Double_t step; + Double_t i; + + + // Range of convolution integral + xlow = x[0] - sc * par[3]; + xupp = x[0] + sc * par[3]; + + step = (xupp-xlow) / np; + + // Convolution integral of Breit and Gaussian by sum + for(i=1.0; i<=np/2; i++) { + xx = xlow + (i-.5) * step; + fland = TMath::BreitWigner(xx,par[1],par[0]); + sum += fland * TMath::Gaus(x[0],xx,par[3]); + + xx = xupp - (i-.5) * step; + fland = TMath::BreitWigner(xx,par[1],par[0]); + sum += fland * TMath::Gaus(x[0],xx,par[3]); + } + + return (par[2] * step * sum * invsq2pi / par[3]); +} + + +void Generate_BreitWignerGaus() +{ + TH1F *bwgauss = new TH1F("bwgaus","", 15000, -2, 13); + TF1 *f = new TF1("f",breitgausfun, 0, 130 ,4); + + double resonanceWidth = 0.22; + //double gaussianResolution = 0.11; + double gaussianResolution = 0.00001; + double centroidEnergy = 8.561; + double areaToSim = 500000; + + Double_t par[4]; + par[0] = resonanceWidth; // Resonance width = 220 keV + par[1] = centroidEnergy; // State mean + par[2] = areaToSim; // Total area + par[3] = gaussianResolution; // Resolution = 0.11 MeV + + f->SetParameters(par); + f->FixParameter(0, resonanceWidth); + f->FixParameter(1, centroidEnergy); + f->FixParameter(3, gaussianResolution); + + + bwgauss->FillRandom("f", (int)areaToSim); + bwgauss->Fit(f, "RBO"); + +} +////////////////////////////////////////////////////////////////////// + diff --git a/Projects/e775s/analysis/Plots_Experiment.C b/Projects/e775s/analysis/Plots_Experiment.C index 660a60ce3bb2af2e9e9afe31b827e6524c4b3332..8f4f538691b4a2bd910717bfe2c3519659c46fe6 100644 --- a/Projects/e775s/analysis/Plots_Experiment.C +++ b/Projects/e775s/analysis/Plots_Experiment.C @@ -1,30 +1,54 @@ #include "Plots_Functions.h" -#include "Plots_C2SFunctions.h" +//#include "Plots_C2SFunctions.h" +#include "Plots_C2SFunctions_ThetaCM.h" #include "Plots_ParryFunctions.h" #include "Plots_ConvoluteBreitWignerGaus.h" +//void C2S(){ +// cout << "======================================" << endl; +// cout << " Run C2S:" << endl; +// cout << " C2S( Ex, Spin, L, J, ExBin, \"option\", SpinIn, nAngB, wAngBin, fAngBin) " << endl; +// cout << " standard values: 2.5, 25, 2, 106 " << endl; +// cout << "======================================" << endl; +// cout << " -- 0.000 MeV, 0+, d5/2: C2S(0.000,0,2,2.5,0.02,\" \",2.5,17,2,116) low&high angs bad" << endl; +// cout << " -- 1.675 MeV, 2+, d5/2: C2S(1.675,2,2,2.5,0.02,\" \",2.5,21,2,106) high angs bad" << endl; +// cout << " -- 3.572 MeV, 4+, d5/2: C2S(3.572,4,2,2.5,0.02,\" \",2.5,24,2,106) " << endl; +// cout << " -- 4.071 MeV, 2+, sdmx: C2S(4.071,2,0,0.5,0.02,\"mixed\",2.5,24,2,106)" << endl; +// cout << " -- 4.456 MeV, 0+, xx/2: C2S(4.456,0,2,2.5,0.02,\" \",2.5, 7,6,106) 6p-2h state" << endl; +// cout << " -- 5.004 MeV, ?+, xx/2: C2S(5.004,2,2,2.5,0.02,\" \",2.5, 8,6,106) " << endl; +// cout << " -- 5.228 MeV, ?+, s1/2: C2S(5.228,2,0,0.5,0.02,\"mixed\",2.5,24,2,106)" << endl; +// cout << " -- 5.629 MeV, ?+, xx/2: C2S(5.629,2,2,2.5,0.02,\"mixed\",2.5,24,2,106)" << endl; +// cout << " -- 7.252 MeV, 5-? xx/2: C2S(7.252,5,2,1.5,0.02,\" \",1.0,12,2,106) Tilley: h-wave, but we pop via d-wave! 3/2 or 5/2?" << endl; +// cout << " -- 7.622 MeV, 4+? xx/2: C2S(7.622,4,2,1.5,0.02,\" \",2.5,11,2,106)" << endl; +// cout << " -- 7.855 MeV, 5-? xx/2: C2S(7.855,2,0,0.5,0.02,\" \",2.5,11,2,106) looks s-wave?? how?? 5- accoring to LaFrance" << endl; +// cout << " -- 8.313 MeV, ??? xx/2: C2S(8.313,4,2,1.5,0.02,\" \",2.5, 5,4,106)" << endl; +// cout << " -- 8.561 MeV, ??? xx/2: C2S(8.561,4,2,1.5,0.02,\" \",2.5, 9,2,106)" << endl; +// cout << "======================================" << endl; +//} + void C2S(){ cout << "======================================" << endl; cout << " Run C2S:" << endl; cout << " C2S( Ex, Spin, L, J, ExBin, \"option\", SpinIn, nAngB, wAngBin, fAngBin) " << endl; cout << " standard values: 2.5, 25, 2, 106 " << endl; cout << "======================================" << endl; - cout << " -- 0.000 MeV, 0+, d5/2: C2S(0.000,0,2,2.5,0.02,\" \",2.5,17,2,116) low&high angs bad" << endl; - cout << " -- 1.675 MeV, 2+, d5/2: C2S(1.675,2,2,2.5,0.02,\" \",2.5,21,2,106) high angs bad" << endl; - cout << " -- 3.572 MeV, 4+, d5/2: C2S(3.572,4,2,2.5,0.02,\" \",2.5,24,2,106) " << endl; - cout << " -- 4.071 MeV, 2+, sdmx: C2S(4.071,2,0,0.5,0.02,\"mixed\",2.5,24,2,106)" << endl; - cout << " -- 4.456 MeV, 0+, xx/2: C2S(4.456,0,2,2.5,0.02,\" \",2.5, 7,6,106) 6p-2h state" << endl; - cout << " -- 5.004 MeV, ?+, xx/2: C2S(5.004,2,2,2.5,0.02,\" \",2.5, 8,6,106) " << endl; - cout << " -- 5.228 MeV, ?+, s1/2: C2S(5.228,2,0,0.5,0.02,\"mixed\",2.5,24,2,106)" << endl; - cout << " -- 5.629 MeV, ?+, xx/2: C2S(5.629,2,2,2.5,0.02,\"mixed\",2.5,24,2,106)" << endl; - cout << " -- 7.252 MeV, 5-? xx/2: C2S(7.252,5,2,1.5,0.02,\" \",1.0,12,2,106) Tilley: h-wave, but we pop via d-wave! 3/2 or 5/2?" << endl; - cout << " -- 7.622 MeV, 4+? xx/2: C2S(7.622,4,2,1.5,0.02,\" \",2.5,11,2,106)" << endl; - cout << " -- 7.855 MeV, 5-? xx/2: C2S(7.855,2,0,0.5,0.02,\" \",2.5,11,2,106) looks s-wave?? how?? 5- accoring to LaFrance" << endl; - cout << " -- 8.313 MeV, ??? xx/2: C2S(8.313,4,2,1.5,0.02,\" \",2.5, 5,4,106)" << endl; - cout << " -- 8.561 MeV, ??? xx/2: C2S(8.561,4,2,1.5,0.02,\" \",2.5, 9,2,106)" << endl; + cout << " -- 0.000 MeV, 0+, d5/2: C2S(0.000,0,2,2.5,0.02,\" \",2.5,21,1,12)" << endl; + cout << " -- 1.675 MeV, 2+, d5/2: C2S(1.675,2,2,2.5,0.02,\" \",2.5,25,1,14)" << endl; + cout << " -- 3.572 MeV, 4+, d5/2: C2S(3.572,4,2,2.5,0.02,\" \",2.5,27,1,10)" << endl; + cout << " -- 4.071 MeV, 2+, sdmx: C2S(4.071,2,0,0.5,0.02,\"mixed\",2.5,26,1,10)" << endl; + cout << " -- 4.456 MeV, 0+, xx/2: C2S(4.456,0,2,2.5,0.02,\" \",2.5,12,2,12) 6p-2h state" << endl; + cout << " -- 5.004 MeV, ?+, xx/2: C2S(5.004,2,2,2.5,0.02,\" \",2.5,24,1,11)" << endl; + cout << " -- 5.228 MeV, ?+, s1/2: C2S(5.228,2,0,0.5,0.02,\" \",2.5,24,1,10)" << endl; + cout << " -- 5.629 MeV, ?+, xx/2: C2S(5.629,2,2,2.5,0.02,\"mixed\",2.5,23,1,10)" << endl; + cout << " -- 7.252 MeV, 5-? xx/2: C2S(7.252,5,2,1.5,0.02,\" \",1.0,14,1,16) Tilley: h-wave, but we pop via d-wave! 3/2 or 5/2?" << endl; + cout << " -- 7.622 MeV, 4+? xx/2: C2S(7.622,4,2,1.5,0.02,\" \",2.5,13,1,16)" << endl; + cout << " -- 7.855 MeV, 5-? xx/2: C2S(7.855,2,0,0.5,0.02,\" \",2.5,11,1,18) 5- accoring to LaFrance" << endl; + cout << " -- 8.313 MeV, ??? xx/2: C2S(8.313,4,2,1.5,0.02,\" \",2.5, 5,2,14)" << endl; + cout << " -- 8.561 MeV, ??? xx/2: C2S(8.561,4,2,1.5,0.02,\" \",2.5,10,1,16)" << endl; cout << "======================================" << endl; } + void Plots_Experiment(){ //Load in files diff --git a/Projects/e775s/analysis/Plots_Functions.h b/Projects/e775s/analysis/Plots_Functions.h index 2e707ab4b1e0a81b3740d929078478bbad32b41c..3e808ef5a60375a127eb2ad66417ff5a76371472 100644 --- a/Projects/e775s/analysis/Plots_Functions.h +++ b/Projects/e775s/analysis/Plots_Functions.h @@ -1262,6 +1262,63 @@ void GateThetaLab_MultiWrite_SubPSp(double startTheta, int numGates, double gate file->ls(); } +////////////////////////////////////////////////////////////////////////////////////// +void GateThetaCM_MultiWrite_SubPSp(double startTheta, int numGates, double gatesize, double ExBinsize) +{ + double finishTheta = startTheta + (numGates * gatesize); + + LoadChain_PhaseSpace(); + TChain* treePSp = tree_PSp00; + + string drawbase = to_string(numGates) + + "," + to_string(startTheta) + "," + to_string(finishTheta) + "," + + to_string(20.0/ExBinsize) + + ",-5,15)"; + string drawgood = "Ex:ThetaCM>>hGood(" + drawbase; + string drawbad = "Ex:ThetaCM>>hBad(" + drawbase; + string drawpsp = "Ex:ThetaCM>>hPSp(" + drawbase; + + tree_both->Draw(drawgood.c_str(),"abs(T_FPMW_HF-13300)<1500 && Mugast.TelescopeNumber<9","colz"); + TH2F* hGood = (TH2F*) gDirectory->Get("hGood"); + + tree_both->Draw(drawbad.c_str(), "abs(T_FPMW_HF-10300)<1500 && Mugast.TelescopeNumber<9","colz"); + TH2F* hBad = (TH2F*) gDirectory->Get("hBad"); + + TH2F* hClean = (TH2F*) hGood->Clone(); + hClean->SetTitle("hClean"); + hClean->SetName("hClean"); + hClean->Add(hBad,-1); + hClean->Draw("colz"); + + treePSp->Draw(drawpsp.c_str(),"EventWeight*(Mugast.TelescopeNumber<10)","colz"); + TH2F* hPSp = (TH2F*) gDirectory->Get("hPSp"); hPSp->SetTitle("hPSp"); hPSp->SetName("hPSp"); +//double scale = 0.134256; cout << GREEN << " USING SCALING FROM DrawEx_SubPSp, SCALE = " << scale << RESET << endl; +//double scale = 0.00113356; cout << GREEN << " USING SCALING FROM DrawEx_SubPSp, SCALE = " << scale << RESET << endl; + double scale = 0.00216125; cout << GREEN << " USING SCALING FROM DrawEx_SubPSp, SCALE = " << scale << RESET << endl; + + hClean->Add(hPSp, -scale); + + string ytitle = "Counts / " + to_string(ExBinsize) + " MeV"; + TList* list = new TList(); + + for (int i=0; i<numGates; i++){ + cout << "Writing gate " << i+1 << "/" << numGates << endl; + double minTheta = startTheta + (i * gatesize); + string title = "TCM"+to_string((int) minTheta)+"to"+to_string((int) (minTheta+gatesize)); + + TH1F* Ex_ThetaCMGate = (TH1F*) hClean->ProjectionY(title.c_str(), i, i+1, ""); + Ex_ThetaCMGate->GetXaxis()->SetTitle("Ex [MeV]"); + Ex_ThetaCMGate->GetYaxis()->SetTitle(ytitle.c_str()); + Ex_ThetaCMGate->Sumw2(); + Ex_ThetaCMGate->SetTitle(title.c_str()); + list->Add(Ex_ThetaCMGate); + } + + TFile* file = new TFile("./C2S_Outputs/GateThetaCMHist_Experiment.root","RECREATE"); + list->Write("GateThetaCMHistograms",TObject::kSingleKey); + file->ls(); +} + ////////////////////////////////////////////////////////////////////////////////////// void GatePhaseSpace_MultiWrite(double startTheta, int numGates, double gatesize, double ExBinsize) { diff --git a/Projects/e775s/analysis/Plots_KnownPeakFitter.h b/Projects/e775s/analysis/Plots_KnownPeakFitter.h index b7e965cb54b413d6c87a44cbf9f7934c4371289d..87cd091fd4f963b2ac91af6e73df15838ae8ad9e 100644 --- a/Projects/e775s/analysis/Plots_KnownPeakFitter.h +++ b/Projects/e775s/analysis/Plots_KnownPeakFitter.h @@ -107,7 +107,7 @@ vector<vector<double>> FitKnownPeaks_RtrnArray(TH1F* hist){ + to_string(3*numGauss + i + 2) + "])"; } - cout << s_full << endl; +//cout << s_full << endl; TF1 *full = new TF1("fitAllPeaks",s_full.c_str(),minfit, maxfit); full->SetLineColor(kRed); full->SetNpx(500); @@ -126,14 +126,14 @@ vector<vector<double>> FitKnownPeaks_RtrnArray(TH1F* hist){ full->SetParLimits((3*numGauss)+i+2, 0.0,1.0); full->SetParameter((3*numGauss)+i+3, 1e2); full->SetParLimits((3*numGauss)+i+3, 0.0,1e8); - cout << "fixing " << (3*numGauss)+i+ 0 << " to " << meansVoigt.at(i) << " and " << (3*numGauss)+i+1 << " to " << GetSigmaFromFunction(meansVoigt.at(i)) << endl; + //cout << "fixing " << (3*numGauss)+i+ 0 << " to " << meansVoigt.at(i) << " and " << (3*numGauss)+i+1 << " to " << GetSigmaFromFunction(meansVoigt.at(i)) << endl; } -cout << " BEFORE FIT" << endl; +//cout << " BEFORE FIT" << endl; // Fit full function hist->Fit(full, "RWQB", "", minfit, maxfit); -cout << " AFTER FIT" << endl; +//cout << " AFTER FIT" << endl; // Extract parameters const Double_t* finalPar = full->GetParameters(); @@ -144,7 +144,7 @@ cout << " AFTER FIT" << endl; finalPar[2+(i*3)]); allPeaks[i]->SetLineColor(kOrange); } -cout << " MID EXTRACTION" << endl; +//cout << " MID EXTRACTION" << endl; for(int i=0; i<numVoigt; i++){ allPeaks[numGauss+i]->SetParameters(finalPar[0+i+(numGauss*3)], finalPar[1+i+(numGauss*3)], @@ -152,7 +152,7 @@ cout << " MID EXTRACTION" << endl; finalPar[3+i+(numGauss*3)]); // allPeaks[i]->SetLineColor(kOrange); } -cout << " AFTER EXTRACTION" << endl; +//cout << " AFTER EXTRACTION" << endl; //Draw all peaks hist->Draw(); @@ -161,8 +161,8 @@ cout << " AFTER EXTRACTION" << endl; } //Write to screen - cout << "===========================" << endl; - cout << "== PEAK =========== AREA ==" << endl; + //cout << "===========================" << endl; + //cout << "== PEAK =========== AREA ==" << endl; //Loop over every peak vector<vector<double>> allpeaks; @@ -171,40 +171,40 @@ cout << " AFTER EXTRACTION" << endl; double A = (finalPar[0+(i*3)] * finalPar[2+(i*3)] * sqrt(2*pi)) / binwidth; double deltaA = A * sqrt( pow( finalErr[0+(i*3)]/finalPar[0+(i*3)] ,2) + pow( finalErr[2+(i*3)]/finalPar[2+(i*3)] ,2) ); - cout << "DELTAAREA = " - << finalErr[0+(i*3)] << " / " - << finalPar[0+(i*3)] << " and " - << finalErr[2+(i*3)] << " / " - << finalPar[2+(i*3)] << " = " - << deltaA << endl; - - cout << fixed << setprecision(3) - << " #" << i << " " - << finalPar[(i*3)+1] << "\t" << setprecision(0) - << A << "\t+- " - << deltaA << setprecision(3); - cout << " SQRT: " << sqrt(A) << endl; + //cout << "DELTAAREA = " + // << finalErr[0+(i*3)] << " / " + // << finalPar[0+(i*3)] << " and " + // << finalErr[2+(i*3)] << " / " + // << finalPar[2+(i*3)] << " = " + // << deltaA << endl; + // + //cout << fixed << setprecision(3) + // << " #" << i << " " + // << finalPar[(i*3)+1] << "\t" << setprecision(0) + // << A << "\t+- " + // << deltaA << setprecision(3); + //cout << " SQRT: " << sqrt(A) << endl; vector<double> onepeak; //energy, area and error for one peak onepeak.push_back(finalPar[(i*3)+1]); onepeak.push_back(A); onepeak.push_back(deltaA); allpeaks.push_back(onepeak); - cout << "-------------" << endl; + //cout << "-------------" << endl; } for(int i=0; i<numVoigt; i++){ //For AREA = ????????????????? //double A = - cout << "voigt funciton is area of unity" << endl; - cout << "therefore area of peaks is multiplier/binwidth = " << finalPar[(numGauss*3)+i+3]/binwidth << endl; - - cout << fixed << setprecision(3) - << " #" << numGauss+i << " " - << finalPar[(numGauss*3)+i+0] << "\t" << setprecision(0) - << finalPar[(numGauss*3)+i+3] / binwidth << "\t+- " - << finalErr[(numGauss*3)+i+3] / binwidth << setprecision(3); - cout << " SQRT: " << sqrt(finalPar[(numGauss*3)+i+3]) << endl; + //cout << "voigt funciton is area of unity" << endl; + //cout << "therefore area of peaks is multiplier/binwidth = " << finalPar[(numGauss*3)+i+3]/binwidth << endl; + // + //cout << fixed << setprecision(3) + // << " #" << numGauss+i << " " + // << finalPar[(numGauss*3)+i+0] << "\t" << setprecision(0) + // << finalPar[(numGauss*3)+i+3] / binwidth << "\t+- " + // << finalErr[(numGauss*3)+i+3] / binwidth << setprecision(3); + //cout << " SQRT: " << sqrt(finalPar[(numGauss*3)+i+3]) << endl; vector<double> onepeak; //energy, area and error for one peak onepeak.push_back(finalPar[(numGauss*3)+i+0]); @@ -212,14 +212,14 @@ cout << " AFTER EXTRACTION" << endl; onepeak.push_back(finalErr[(numGauss*3)+i+3]/binwidth); allpeaks.push_back(onepeak); - cout << " VOIGT PEAK #" << i << " FUNCTION VALUES: [0] =" << finalPar[(numGauss*3)+i+0] << " , [1] = " - << finalPar[(numGauss*3)+i+1] << " , [2] = " - << finalPar[(numGauss*3)+i+2] << " , [3] = " - << finalPar[(numGauss*3)+i+3] << endl; - cout << "-------------" << endl; + //cout << " VOIGT PEAK #" << i << " FUNCTION VALUES: [0] =" << finalPar[(numGauss*3)+i+0] << " , [1] = " + // << finalPar[(numGauss*3)+i+1] << " , [2] = " + // << finalPar[(numGauss*3)+i+2] << " , [3] = " + // << finalPar[(numGauss*3)+i+3] << endl; + //cout << "-------------" << endl; } - cout << "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! " << allpeaks.size() << endl; + //cout << "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! " << allpeaks.size() << endl; //if(removing){ // for(int b=1; b<hist->GetNbinsX()-1; b++){ diff --git a/Projects/e775s/analysis/Plots_TWOFNR.h b/Projects/e775s/analysis/Plots_TWOFNR.h index 10b315e913a1af9bf250ee1fc140c1575c500526..4ceca3fd808386f9ea09e4a7f8e533c408ac59fe 100644 --- a/Projects/e775s/analysis/Plots_TWOFNR.h +++ b/Projects/e775s/analysis/Plots_TWOFNR.h @@ -162,7 +162,6 @@ TGraph* TWOFNR(double Ex, double Jf, double particleN, double particleL, double } - TGraph* TWOFNR(double Ex, double Jf, double particleN, double particleL, double particleJ, double Ji){ //int model_in_A = 1; //LohrHaeberli int model_in_A = 2; //PereyPerey diff --git a/Projects/e870/Analysis.cxx b/Projects/e870/Analysis.cxx index 30b63ee0c7c0ecdc5a5854a8383e78d7d15a47f9..489202305782a2bd00dc18e71bc981d08f5e4040 100644 --- a/Projects/e870/Analysis.cxx +++ b/Projects/e870/Analysis.cxx @@ -185,6 +185,7 @@ void Analysis::TreatEvent() { Ex.push_back(reaction.ReconstructRelativistic(Energy, Theta)); ExNoCATS.push_back(reaction2.ReconstructRelativistic(Energy, Theta)); ELab.push_back(Energy); + ThetaCM.push_back(reaction.EnergyLabToThetaCM( Energy , Theta)/deg); /************************************************/ @@ -200,7 +201,7 @@ void Analysis::InitOutputBranch() { RootOutput::getInstance()->GetTree()->Branch("ELab", &ELab); RootOutput::getInstance()->GetTree()->Branch("ThetaLab", &ThetaLab); RootOutput::getInstance()->GetTree()->Branch("PhiLab", &PhiLab); - RootOutput::getInstance()->GetTree()->Branch("ThetaCM", &ThetaCM, "ThetaCM/D"); + RootOutput::getInstance()->GetTree()->Branch("ThetaCM", &ThetaCM); RootOutput::getInstance()->GetTree()->Branch("Run", &Run, "Run/I"); RootOutput::getInstance()->GetTree()->Branch("X", &X); RootOutput::getInstance()->GetTree()->Branch("Y", &Y); @@ -228,13 +229,13 @@ void Analysis::ReInitValue() { ExNoBeam = ExNoProton = -1000; EDC = -1000; BeamEnergy = -1000; - ThetaCM = -1000; X.clear(); Y.clear(); Z.clear(); dE = -1000; ELab.clear(); ThetaLab.clear(); + ThetaCM.clear(); PhiLab.clear(); Ex.clear(); ExNoCATS.clear(); diff --git a/Projects/e870/Analysis.h b/Projects/e870/Analysis.h index fcf71b91ab7a3e667b769772378c57750ceac521..e5442f9acef64f4fa7b32b2c2ff9f16d7301acf2 100644 --- a/Projects/e870/Analysis.h +++ b/Projects/e870/Analysis.h @@ -60,7 +60,7 @@ class Analysis : public NPL::VAnalysis { std::vector<double> ELab; std::vector<double> ThetaLab; std::vector<double> PhiLab; - double ThetaCM; + std::vector<double> ThetaCM; double OriginalELab; double OriginalThetaLab; diff --git a/Projects/nptuto_gdr/Analysis.cxx b/Projects/nptuto_gdr/Analysis.cxx new file mode 100644 index 0000000000000000000000000000000000000000..c71f7c79de96f97faecbbd846234cdea4bed1972 --- /dev/null +++ b/Projects/nptuto_gdr/Analysis.cxx @@ -0,0 +1,242 @@ +/***************************************************************************** + * Copyright (C) 2009-2014 this file is part of the NPTool Project * + * * + * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * + * For the list of contributors see $NPTOOL/Licence/Contributors * + *****************************************************************************/ + +/***************************************************************************** + * Original Author: Adrien MATTA contact address: a.matta@surrey.ac.uk * + * * + * Creation Date : march 2025 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: * + * Class describing the property of an Analysis object * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ +#include <iostream> +using namespace std; + +#include "Analysis.h" +#include "NPAnalysisFactory.h" +#include "NPDetectorManager.h" +#include "NPFunction.h" +#include "NPOptionManager.h" +// #include <unistd.h> +//////////////////////////////////////////////////////////////////////////////// +Analysis::Analysis() {} +//////////////////////////////////////////////////////////////////////////////// +Analysis::~Analysis() {} + +//////////////////////////////////////////////////////////////////////////////// +void Analysis::Init() { + if (NPOptionManager::getInstance()->HasDefinition("simulation")) { + cout << "Considering input data as simulation" << endl; + simulation = true; + } + else { + cout << "Considering input data as real" << endl; + simulation = false; + } + simulation = true; + + // initialize input and output branches + if (simulation) { + Initial = new TInitialConditions(); + ReactionConditions = new TReactionConditions(); + } + + InitOutputBranch(); + InitInputBranch(); + // get MUST2 objects + M2 = (TMust2Physics*)m_DetectorManager->GetDetector("M2Telescope"); + + // get reaction information + reaction.ReadConfigurationFile(NPOptionManager::getInstance()->GetReactionFile()); + OriginalBeamEnergy = reaction.GetBeamEnergy(); + // target thickness + TargetThickness = m_DetectorManager->GetTargetThickness(); + string TargetMaterial = m_DetectorManager->GetTargetMaterial(); + + // energy losses + string light = NPL::ChangeNameToG4Standard(reaction.GetNucleus3()->GetName()); + string beam = NPL::ChangeNameToG4Standard(reaction.GetNucleus1()->GetName()); + cout << light << " " << beam << " " << TargetMaterial << " " << TargetThickness << endl; + LightTarget = NPL::EnergyLoss(light + "_" + TargetMaterial + ".G4table", "G4Table", 100); + LightAl = NPL::EnergyLoss(light + "_Al.G4table", "G4Table", 100); + LightSi = NPL::EnergyLoss(light + "_Si.G4table", "G4Table", 100); + BeamTarget = NPL::EnergyLoss(beam + "_" + TargetMaterial + ".G4table", "G4Table", 100); + + FinalBeamEnergy = BeamTarget.Slow(OriginalBeamEnergy, TargetThickness * 0.5, 0); + // FinalBeamEnergy = OriginalBeamEnergy; + // cout << "Original beam energy: " << OriginalBeamEnergy << " MeV Mid-target beam energy: " << FinalBeamEnergy + // << "MeV " << endl; + reaction.SetBeamEnergy(FinalBeamEnergy); + + // initialize various parameters + Rand = TRandom3(); + DetectorNumber = 0; + ThetaNormalTarget = 0; + ThetaM2Surface = 0; + Si_E_M2 = 0; + CsI_E_M2 = 0; + Energy = 0; + ThetaGDSurface = 0; + X = 0; + Y = 0; + Z = 0; + dE = 0; + BeamDirection = TVector3(0, 0, 1); + nbTrack = 0; + + sleep(5); +} + +//////////////////////////////////////////////////////////////////////////////// +void Analysis::TreatEvent() { + // Reinitiate calculated variable + ReInitValue(); + double XTarget, YTarget; + TVector3 BeamDirection; + XTarget = 0; + YTarget = 0; + BeamDirection = TVector3(0, 0, 1); + BeamImpact = TVector3(XTarget, YTarget, 0); + + // determine beam energy for a randomized interaction point in target + // 1% FWHM randominastion (E/100)/2.35 + // reaction.SetBeamEnergy(Rand.Gaus(BeamEnergy, BeamEnergy * 1. / 100. / 2.35)); + // reaction.SetBeamEnergy(BeamEnergy); + + //////////////////////////////////////////////////////////////////////////// + //////////////////////////////// LOOP on MUST2 //////////////////////////// + //////////////////////////////////////////////////////////////////////////// + for (unsigned int countMust2 = 0; countMust2 < M2->Si_E.size(); countMust2++) { + /************************************************/ + // Part 0 : Get the usefull Data + // MUST2 + int TelescopeNumber = M2->TelescopeNumber[countMust2]; + + /************************************************/ + // Part 1 : Impact Angle + ThetaM2Surface = 0; + ThetaNormalTarget = 0; + TVector3 HitDirection = M2->GetPositionOfInteraction(countMust2) - BeamImpact; + ThetaLab = HitDirection.Angle(BeamDirection); + + X = M2->GetPositionOfInteraction(countMust2).X(); + Y = M2->GetPositionOfInteraction(countMust2).Y(); + Z = M2->GetPositionOfInteraction(countMust2).Z(); + + ThetaM2Surface = HitDirection.Angle(-M2->GetTelescopeNormal(countMust2)); + ThetaNormalTarget = HitDirection.Angle(TVector3(0, 0, 1)); + + /************************************************/ + + /************************************************/ + // Part 2 : Impact Energy + Energy = ELab = 0; + Si_E_M2 = M2->Si_E[countMust2]; + CsI_E_M2 = M2->CsI_E[countMust2]; + + // if CsI + if (CsI_E_M2 > 0) { + // The energy in CsI is calculate form dE/dx Table because + Energy = CsI_E_M2; + Energy = LightAl.EvaluateInitialEnergy(Energy, 0.4 * micrometer, ThetaM2Surface); + Energy += Si_E_M2; + } + else { + Energy = Si_E_M2; + Energy = LightAl.EvaluateInitialEnergy(Energy, 0.4 * micrometer, ThetaM2Surface); + } + + // Evaluate energy using the thickness + ELab = Energy; + + // Target Correction + ELab = LightTarget.EvaluateInitialEnergy(ELab, TargetThickness * 0.5, ThetaNormalTarget); + + /************************************************/ + // Part 3 : Excitation Energy Calculation + // Ex = reaction.ReconstructRelativistic(ELab, ThetaLab); + // reaction.SetBeamEnergy(Initial->GetIncidentFinalKineticEnergy()); + Ex = reaction.ReconstructRelativistic(ELab, ThetaLab); + // ExNoBeam = reaction.ReconstructRelativistic(ELab, ThetaLab); + // reaction.SetBeamEnergy(FinalBeamEnergy); + // ExNoProton = reaction.ReconstructRelativistic(ReactionConditions->GetKineticEnergy(0), + // ReactionConditions->GetParticleDirection(0).Angle(TVector3(0, 0, + // 1))); + ThetaLab = ThetaLab / deg; + + /************************************************/ + + /************************************************/ + // Part 4 : Theta CM Calculation + ThetaCM = reaction.EnergyLabToThetaCM(ELab, ThetaLab) / deg; + /************************************************/ + } // end loop MUST2 +} + +//////////////////////////////////////////////////////////////////////////////// +void Analysis::End() {} +//////////////////////////////////////////////////////////////////////////////// +void Analysis::InitOutputBranch() { + RootOutput::getInstance()->GetTree()->Branch("Ex", &Ex, "Ex/D"); + RootOutput::getInstance()->GetTree()->Branch("ELab", &ELab, "ELab/D"); + RootOutput::getInstance()->GetTree()->Branch("ThetaLab", &ThetaLab, "ThetaLab/D"); + RootOutput::getInstance()->GetTree()->Branch("ThetaCM", &ThetaCM, "ThetaCM/D"); + RootOutput::getInstance()->GetTree()->Branch("Run", &Run, "Run/I"); + RootOutput::getInstance()->GetTree()->Branch("X", &X, "X/D"); + RootOutput::getInstance()->GetTree()->Branch("Y", &Y, "Y/D"); + RootOutput::getInstance()->GetTree()->Branch("Z", &Z, "Z/D"); + RootOutput::getInstance()->GetTree()->Branch("dE", &dE, "dE/D"); +} + +//////////////////////////////////////////////////////////////////////////////// +void Analysis::InitInputBranch() { + // RootInput:: getInstance()->GetChain()->SetBranchAddress("GATCONF",&vGATCONF); + if (!simulation) { + } + else { + RootInput::getInstance()->GetChain()->SetBranchStatus("InitialConditions", true); + RootInput::getInstance()->GetChain()->SetBranchStatus("fIC_*", true); + RootInput::getInstance()->GetChain()->SetBranchAddress("InitialConditions", &Initial); + RootInput::getInstance()->GetChain()->SetBranchStatus("ReactionConditions", true); + RootInput::getInstance()->GetChain()->SetBranchStatus("fRC_*", true); + RootInput::getInstance()->GetChain()->SetBranchAddress("ReactionConditions", &ReactionConditions); + } +} +//////////////////////////////////////////////////////////////////////////////// +void Analysis::ReInitValue() { + Ex = -1000; + ELab = -1000; + ThetaLab = -1000; + ThetaCM = -1000; + X = -1000; + Y = -1000; + Z = -1000; + dE = -1000; +} + +//////////////////////////////////////////////////////////////////////////////// +// Construct Method to be pass to the AnalysisFactory // +//////////////////////////////////////////////////////////////////////////////// +NPL::VAnalysis* Analysis::Construct() { return (NPL::VAnalysis*)new Analysis(); } + +//////////////////////////////////////////////////////////////////////////////// +// Registering the construct method to the factory // +//////////////////////////////////////////////////////////////////////////////// +extern "C" { +class proxy_analysis { + public: + proxy_analysis() { NPL::AnalysisFactory::getInstance()->SetConstructor(Analysis::Construct); } +}; + +proxy_analysis p_analysis; +} diff --git a/Projects/nptuto_gdr/Analysis.h b/Projects/nptuto_gdr/Analysis.h new file mode 100644 index 0000000000000000000000000000000000000000..f314fb353d1faae7ca8ba4c63f9536243880dd03 --- /dev/null +++ b/Projects/nptuto_gdr/Analysis.h @@ -0,0 +1,114 @@ +#ifndef Analysis_h +#define Analysis_h +/***************************************************************************** + * Copyright (C) 2009-2014 this file is part of the NPTool Project * + * * + * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * + * For the list of contributors see $NPTOOL/Licence/Contributors * + *****************************************************************************/ + +/***************************************************************************** + * Original Author: Adrien MATTA contact address: a.matta@surrey.ac.uk * + * * + * Creation Date : march 2025 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: * + * Class describing the property of an Analysis object * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ +#include "NPEnergyLoss.h" +#include "NPReaction.h" +#include "NPVAnalysis.h" +#include "RootInput.h" +#include "RootOutput.h" +#include "TCATSPhysics.h" +#include "TInitialConditions.h" +#include "TMust2Physics.h" +#include "TReactionConditions.h" +#include <TMath.h> +#include <TRandom3.h> +#include <TVector3.h> + +class Analysis : public NPL::VAnalysis { + public: + Analysis(); + ~Analysis(); + + public: + void Init(); + void TreatEvent(); + void End(); + + void InitOutputBranch(); + void InitInputBranch(); + void ReInitValue(); + static NPL::VAnalysis* Construct(); + + private: + double Ex; + double ELab; + double ThetaLab; + double ThetaCM; + + double TargetThickness; + NPL::Reaction reaction; + // Energy loss table: the G4Table are generated by the simulation + NPL::EnergyLoss LightTarget; + NPL::EnergyLoss LightAl; + NPL::EnergyLoss LightSi; + NPL::EnergyLoss BeamTarget; + + // Beam Energy + double OriginalBeamEnergy; // AMEV + double FinalBeamEnergy; + + // intermediate variable + TVector3 BeamDirection; + TVector3 BeamImpact; + TRandom3 Rand; + int Run; + int DetectorNumber; + double ThetaNormalTarget; + double ThetaM2Surface; + double Si_E_M2; + double CsI_E_M2; + double Energy; + double BeamEnergy; + + double ThetaGDSurface; + double X; + double Y; + double Z; + // Vamos Branches + unsigned long long int LTS; + + // Agata branches + double agata_zShift; + unsigned long long int TStrack; + int nbHits; + int nbTrack; + float* trackE = new float(100); + float* trackX1 = new float(100); + float* trackY1 = new float(100); + float* trackZ1 = new float(100); + float* trackT = new float(100); + int* trackCrystalID = new int(100); + int nbCores; + int* coreId = new int(100); + ULong64_t* coreTS = new ULong64_t(100); + float* coreE0 = new float(100); + // + double dE; + double dTheta; + // Branches and detectors + TMust2Physics* M2; + bool simulation; + TInitialConditions* Initial; + TReactionConditions* ReactionConditions; +}; +#endif diff --git a/Projects/nptuto_gdr/CMakeLists.txt b/Projects/nptuto_gdr/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..22c74affdfc45019bdda2594f8439c52d4ab97ec --- /dev/null +++ b/Projects/nptuto_gdr/CMakeLists.txt @@ -0,0 +1,5 @@ +cmake_minimum_required (VERSION 2.8) +# Setting the policy to match Cmake version +cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}) +# include the default NPAnalysis cmake file +include("../../NPLib/ressources/CMake/NPAnalysis.cmake") diff --git a/Projects/nptuto_gdr/configs/ConfigMust2.dat b/Projects/nptuto_gdr/configs/ConfigMust2.dat new file mode 100644 index 0000000000000000000000000000000000000000..216b16b66a665ababbd3ffe819626fbe65c5e89e --- /dev/null +++ b/Projects/nptuto_gdr/configs/ConfigMust2.dat @@ -0,0 +1,5 @@ +ConfigMust2 + CSI_SIZE 40 + CAL_PIXEL + PIXEL_SIZE 8 + MAX_STRIP_MULTIPLICITY 10 diff --git a/Projects/nptuto_gdr/detector/MUGAST_LISE.detector b/Projects/nptuto_gdr/detector/MUGAST_LISE.detector new file mode 100644 index 0000000000000000000000000000000000000000..f03211b192acbea5191614709a79dcb4569db21b --- /dev/null +++ b/Projects/nptuto_gdr/detector/MUGAST_LISE.detector @@ -0,0 +1,56 @@ +%%%%%%%%%%Detector%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1 +Target + THICKNESS= 50 micrometer + ANGLE= 0 deg + RADIUS= 25 mm + MATERIAL= CH2 + X= 0 + Y= 0 + Z= 0 + +%%%%%%% Telescope 1 %%%%%%% +M2Telescope + X128_Y128= 115.88 9.61 154.54 mm + X128_Y1= 104.8 101.89 125.09 mm + X1_Y1= 14.55 102.4 160.63 mm + X1_Y128= 25.63 10.12 190.08 mm + SI= 1.00 + SILI= 0.00 + CSI= 1.00 + VIS= all + +%%%%%%% Telescope 2 %%%%%%% +M2Telescope + X128_Y128= -11.23 102.42 160.87 mm + X128_Y1= -101.39 102.39 124.37 mm + X1_Y1= -113.17 10.36 153.56 mm + X1_Y128= -23.03 10.38 190.05 mm + SI= 1.00 + SILI= 0.00 + CSI= 1.00 + VIS= all + +%%%%%%% Telescope 3 %%%%%%% +M2Telescope + X128_Y128= -113.28 -12.52 153.32 mm + X128_Y1= -101.58 -104.77 124.82 mm + X1_Y1= -11.39 -104.58 161.48 mm + X1_Y128= -23.1 -12.34 189.98 mm + SI= 1.00 + SILI= 0.00 + CSI= 1.00 + VIS= all + +%%%%%%% Telescope 4 %%%%%%% +M2Telescope + X128_Y128= 13.82 -104.92 160.72 mm + X128_Y1= 104.3 -104.95 125.08 mm + X1_Y1= 115.75 -12.73 153.76 mm + X1_Y128= 25.23 -12.65 189.43 mm + SI= 1.00 + SILI= 0.00 + CSI= 1.00 + VIS= all + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Projects/nptuto_gdr/reactions/48Crpd.reaction b/Projects/nptuto_gdr/reactions/48Crpd.reaction new file mode 100644 index 0000000000000000000000000000000000000000..ef5c42de50074fa865e5825f3a9630e28eb0722c --- /dev/null +++ b/Projects/nptuto_gdr/reactions/48Crpd.reaction @@ -0,0 +1,32 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Beam + Particle= 48Cr + Energy= 1440 MeV + SigmaEnergy= 40 MeV + ExcitationEnergy= 0 MeV + SigmaThetaX= 0 mrad + SigmaPhiY= 0 mrad + SigmaX= 1 mm + SigmaY= 1 mm + MeanThetaX= 0 mrad + MeanPhiY= 0 mrad + MeanX= 0 mm + MeanY= 0 mm + %EnergyProfilePath= eLise.txt EL + %XThetaXProfilePath= + %YPhiYProfilePath= + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +TwoBodyReaction + Beam= 48Cr + Target= 1H + Light= 2H + Heavy= 47Cr + ExcitationEnergyLight= 0.0 MeV + ExcitationEnergyHeavy= 0.0 MeV + CrossSectionPath= flat.txt + ShootLight= 1 + ShootHeavy= 1 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + diff --git a/Projects/s455/macro/beam/DrawID.C b/Projects/s455/macro/beam/DrawID.C new file mode 100644 index 0000000000000000000000000000000000000000..fc4fd789c3f3b961185ca145cbd8f05a3c589fd4 --- /dev/null +++ b/Projects/s455/macro/beam/DrawID.C @@ -0,0 +1,141 @@ +TFile* file_197At; +TFile* file_199At; +TFile* file_207Fr; +TFile* file_204Fr; +TFile* file_175Pt; +TFile* file_184Hg; +TFile* file_182Hg; +TFile* file_180Hg; +TFile* file_187Pb; +TFile* file_189Pb; +TFile* file_216Th; +TFile* file_221Pa; + +TH2F* h2_197At; +TH2F* h2_199At; +TH2F* h2_207Fr; +TH2F* h2_204Fr; +TH2F* h2_175Pt; +TH2F* h2_184Hg; +TH2F* h2_182Hg; +TH2F* h2_180Hg; +TH2F* h2_187Pb; +TH2F* h2_189Pb; +TH2F* h2_216Th; +TH2F* h2_221Pa; + +void DrawID() +{ + gROOT->SetStyle("pierre_style"); + + file_189Pb = new TFile("root/hBeamID_189Pb.root"); + file_182Hg = new TFile("root/hBeamID_182Hg.root"); + file_197At = new TFile("root/hBeamID_197At.root"); + file_199At = new TFile("root/hBeamID_199At.root"); + file_207Fr = new TFile("root/hBeamID_207Fr.root"); + file_204Fr = new TFile("root/hBeamID_204Fr.root"); + file_175Pt = new TFile("root/hBeamID_175Pt.root"); + file_184Hg = new TFile("root/hBeamID_184Hg.root"); + file_187Pb = new TFile("root/hBeamID_187Pb.root"); + file_180Hg = new TFile("root/hBeamID_180Hg.root"); + file_216Th = new TFile("root/hBeamID_216Th.root"); + file_221Pa = new TFile("root/hBeamID_221Pa.root"); + + h2_189Pb = (TH2F*) file_189Pb->FindObjectAny("hbid"); + h2_182Hg = (TH2F*) file_182Hg->FindObjectAny("hbid"); + h2_197At = (TH2F*) file_197At->FindObjectAny("hbid"); + h2_199At = (TH2F*) file_199At->FindObjectAny("hbid"); + h2_207Fr = (TH2F*) file_207Fr->FindObjectAny("hbid"); + h2_204Fr = (TH2F*) file_204Fr->FindObjectAny("hbid"); + h2_175Pt = (TH2F*) file_175Pt->FindObjectAny("hbid"); + h2_184Hg = (TH2F*) file_184Hg->FindObjectAny("hbid"); + h2_187Pb = (TH2F*) file_187Pb->FindObjectAny("hbid"); + h2_180Hg = (TH2F*) file_180Hg->FindObjectAny("hbid"); + h2_216Th = (TH2F*) file_216Th->FindObjectAny("hbid"); + h2_221Pa = (TH2F*) file_221Pa->FindObjectAny("hbid"); + + + h2_189Pb->Add(h2_180Hg); + h2_189Pb->Add(h2_182Hg); + h2_189Pb->Add(h2_184Hg); + h2_189Pb->Add(h2_187Pb); + h2_189Pb->Add(h2_175Pt); + h2_189Pb->Add(h2_204Fr); + h2_189Pb->Add(h2_207Fr); + h2_189Pb->Add(h2_199At); + h2_189Pb->Add(h2_197At); + h2_189Pb->Add(h2_216Th); + h2_189Pb->Add(h2_221Pa); + + + TCanvas* c1 = new TCanvas("c1","c1",2000,1600); + c1->SetLogz(); + c1->SetGridx(); + c1->SetGridy(); + + h2_189Pb->SetMinimum(3); + h2_189Pb->GetXaxis()->SetTitle("Mass-to-charge ratio"); + h2_189Pb->GetYaxis()->SetTitle("Proton number Z"); + + h2_189Pb->GetXaxis()->SetRangeUser(2.22,2.50); + h2_189Pb->GetYaxis()->SetRangeUser(76.5,91); + + h2_189Pb->GetXaxis()->SetTitleSize(0.03); + h2_189Pb->GetXaxis()->SetLabelSize(0.03); + h2_189Pb->GetXaxis()->SetTitleOffset(1.2); + + h2_189Pb->GetYaxis()->SetTitleSize(0.03); + h2_189Pb->GetYaxis()->SetLabelSize(0.03); + h2_189Pb->GetYaxis()->SetTitleOffset(1.2); + + h2_189Pb->Draw("col"); + + + // Draw cuts + TCutG* cut_beam[12]; + double Q[12] = {78,80,80,80,82,82,85,85,87,87,90,91}; + double A[12] = {175,180,182,184,187,189,197,199,204,207,216,221}; + double AoQ[12]; + for(int i=0; i<12; i++){ + AoQ[i] = A[i]/Q[i]; + + cut_beam[i] = new TCutG(Form("cut_beam%i",i+1)); + cut_beam[i]->SetName(Form("cut_beam%i",i+1)); + cut_beam[i]->SetVarX("fBeam_AoQ"); + cut_beam[i]->SetVarY("fBeam_Z"); + } + + double x, y; + double Rx = 0.005; + double Ry = 0.55; + for(int i=0; i<12; i++){ + for(int j=0; j<360; j++){ + x = AoQ[i] + Rx*cos(j*TMath::Pi()/180.); + y = Q[i] + Ry*sin(j*TMath::Pi()/180.); + + cut_beam[i]->SetPoint(j,x,y); + } + cut_beam[i]->SetLineColor(2); + cut_beam[i]->SetLineWidth(2); + + //cut_beam[i]->Draw("lsame"); + } + + TLatex t_elt; + t_elt.SetTextSize(0.032); + t_elt.DrawLatex(2.34,77-0.1,"^{172-175}Ir"); + t_elt.DrawLatex(2.35,78-0.1,"^{174-178}Pt"); + t_elt.DrawLatex(2.36,79-0.1,"^{176-182}Au"); + t_elt.DrawLatex(2.38,80-0.1,"^{180-186}Hg"); + t_elt.DrawLatex(2.39,81-0.1,"^{183-188}Tl"); + t_elt.DrawLatex(2.39,82-0.1,"^{186-194}Pb"); + t_elt.DrawLatex(2.40,83-0.1,"^{189-197}Bi"); + t_elt.DrawLatex(2.41,84-0.1,"^{192-201}Po"); + t_elt.DrawLatex(2.42,85-0.1,"^{196-203}At"); + t_elt.DrawLatex(2.43,86-0.1,"^{200-206}Rn"); + t_elt.DrawLatex(2.45,87-0.1,"^{203-211}Fr"); + t_elt.DrawLatex(2.455,88-0.1,"^{209-214}Ra"); + t_elt.DrawLatex(2.455,89-0.1,"^{212-218}Ac"); + t_elt.DrawLatex(2.455,90-0.1,"^{216-220}Th"); + +} diff --git a/Projects/s455/macro/plot/MakePlot.C b/Projects/s455/macro/plot/MakePlot.C new file mode 100644 index 0000000000000000000000000000000000000000..800eba51ba88f4f062ad7a8edad3d7158f752912 --- /dev/null +++ b/Projects/s455/macro/plot/MakePlot.C @@ -0,0 +1,42 @@ +void MakePlot() +{ + gROOT->SetStyle("pierre_style"); + + TFile* ifile = new TFile("../root/charge_dist_190Pb.root"); + + TH1F* hsumpb = (TH1F*) ifile->FindObjectAny("hsumpb"); + hsumpb->GetXaxis()->SetTitle("Z_{sum}=Z_{1}+Z_{2} "); + hsumpb->GetXaxis()->CenterTitle(); + hsumpb->SetLineColor(kAzure+7); + hsumpb->SetFillColor(kAzure+7); + TH1F* hsumcscaled = (TH1F*) ifile->FindObjectAny("hsumcscaled"); + hsumcscaled->SetLineColor(2); + hsumcscaled->SetLineWidth(2); + + TH1F* hzpb = (TH1F*) ifile->FindObjectAny("hzpb"); + hzpb->GetXaxis()->SetTitle("Z"); + hzpb->GetXaxis()->CenterTitle(); + hzpb->SetLineColor(kAzure+7); + hzpb->SetFillColor(kAzure+7); + TH1F* hzcscaled = (TH1F*) ifile->FindObjectAny("hzcscaled"); + hzcscaled->SetLineColor(2); + hzcscaled->SetLineWidth(2); + + TH1F* hzsub = (TH1F*) ifile->FindObjectAny("hzsub"); + hzsub->GetXaxis()->SetTitle("Z"); + hzsub->GetXaxis()->CenterTitle(); + + TCanvas* c1 = new TCanvas("c1","c1",600,600); + hsumpb->Draw("hist"); + hsumcscaled->Draw("histsame"); + + TCanvas* c2 = new TCanvas("c2","c2",600,600); + hzpb->Draw("hist"); + hzcscaled->Draw("histsame"); + + TCanvas* c3 = new TCanvas("c3","c3",600,600); + hzsub->Rebin(2); + hzsub->SetMinimum(0); + hzsub->Draw("hist"); + +}