From d94795ae332115ce3d19500ea4152caed3451c51 Mon Sep 17 00:00:00 2001 From: James Szalkie Date: Wed, 3 Jun 2026 10:35:26 -0400 Subject: [PATCH] expanded analysis --- Armory/ClassPW.h | 4 +- Armory/anasenMS.cpp | 54 +- ELoss/E_vs_x_alpha.dat | 1000 ++++++++++++++++++------------------- ELoss/E_vs_x_proton.dat | 1000 ++++++++++++++++++------------------- ELoss/PCEnergyAnalysis.py | 345 ++++++++----- 5 files changed, 1253 insertions(+), 1150 deletions(-) diff --git a/Armory/ClassPW.h b/Armory/ClassPW.h index fbedea3..fc25dbb 100755 --- a/Armory/ClassPW.h +++ b/Armory/ClassPW.h @@ -7,8 +7,8 @@ #include #include -std::vector skipAnodes = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23}; -std::vector skipCathodes = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23}; +std::vector skipAnodes = {}; +std::vector skipCathodes = {}; struct PWHitInfo { diff --git a/Armory/anasenMS.cpp b/Armory/anasenMS.cpp index 9671eba..faf0d54 100644 --- a/Armory/anasenMS.cpp +++ b/Armory/anasenMS.cpp @@ -46,8 +46,6 @@ bool IsDeadSX3(int id){ } // Simulate sequential two-body decay of an unstable parent in its rest frame. -// The parent is boosted from the lab frame, the daughter (A1,Z1) is returned in lab frame, -// and the emitted ejectile (A2,Z2) is written to ejectileOut. TLorentzVector SimulateSequentialDecay(const TLorentzVector &parent, int daughterA, int daughterZ, int ejectA, int ejectZ, @@ -62,28 +60,28 @@ TLorentzVector SimulateSequentialDecay(const TLorentzVector &parent, double sqM = M * M; double sum = mD + mE; double diff = mD - mE; - double p2 = (sqM - sum*sum) * (sqM - diff*diff) / (4.0 * sqM); - if( p2 < 0 ) p2 = 0; - double p = TMath::Sqrt(p2); + double p2 = (sqM - sum*sum) * (sqM - diff*diff) / (4.0 * sqM); // two-body decay momentum squared + if( p2 < 0 ) p2 = 0; // handle unphysical case where parent mass is less than sum of daughter and ejectile masses + double p = TMath::Sqrt(p2); // two-body decay momentum - double cosTheta = 2.0 * gRandom->Rndm() - 1.0; - double theta = TMath::ACos(cosTheta); - double phi = gRandom->Rndm() * TMath::TwoPi(); + double cosTheta = 2.0 * gRandom->Rndm() - 1.0; // isotropic decay in parent rest frame + double theta = TMath::ACos(cosTheta); // polar angle of daughter in parent rest frame + double phi = gRandom->Rndm() * TMath::TwoPi(); // azimuthal angle of daughter in parent rest frame - TVector3 v; - v.SetMagThetaPhi(p, theta, phi); + TVector3 v; // momentum vector of daughter in parent rest frame + v.SetMagThetaPhi(p, theta, phi); // daughter momentum in parent rest frame - TLorentzVector daughterLab; - daughterLab.SetVectM(v, mD); + TLorentzVector daughterLab; // daughter 4-vector in lab frame, initialized with momentum from decay and mass of daughter + daughterLab.SetVectM(v, mD); // set daughter 4-vector in parent rest frame, then boost to lab frame - TLorentzVector ejectileLab; - ejectileLab.SetVectM(-v, mE); + TLorentzVector ejectileLab; // ejectile 4-vector in lab frame, initialized with momentum opposite to daughter and mass of ejectile + ejectileLab.SetVectM(-v, mE); // set ejectile 4-vector in parent rest frame, then boost to lab frame - TVector3 boost = parent.BoostVector(); - daughterLab.Boost(boost); - ejectileLab.Boost(boost); + TVector3 boost = parent.BoostVector(); // boost vector to go from parent rest frame to lab frame + daughterLab.Boost(boost); // boost daughter to lab frame + ejectileLab.Boost(boost); // boost ejectile to lab frame - ejectileOut = ejectileLab; + ejectileOut = ejectileLab; // return ejectile in lab frame return daughterLab; } @@ -96,17 +94,15 @@ int main(int argc, char **argv){ // number of events can be overridden from command line int numEvent = 1000000; if( argc >= 2 ) numEvent = atoi(argv[1]); - // Reaction setup: 18Ne + 4He -> p + 21Na* - // then sequential decay of 21Na* -> p + 20Ne TransferReaction transfer; - transfer.SetA(18, 10, 0); // 18Ne projectile - transfer.SetIncidentEnergyAngle((4.4), 0, 0); // KEA in MeV/u, theta and phi in degree + transfer.SetA(14, 7, 0); // 18Ne projectile + transfer.SetIncidentEnergyAngle((42.82/14), 0, 0); // KEA in MeV/u, theta and phi in rad transfer.Seta(4, 2); // 4He target transfer.Setb(1, 1); // outgoing proton from the primary transfer - transfer.SetB(21, 11); // 21Na* heavy product + transfer.SetB(17, 8); // 21Na* heavy product - bool enableSequentialDecay = true; // turning to false to disable sequential decay for now, can be set to true to enable + bool enableSequentialDecay = false; // turning to false to disable sequential decay for now, can be set to true to enable const int decayDaughterA = 20; const int decayDaughterZ = 10; const int decayEjectA = 1; @@ -114,7 +110,7 @@ int main(int argc, char **argv){ // Excited state lists (projectile and heavy-product excitation states) std::vector ExAList = {0}; // 18Ne projectile excitations in MeV - std::vector ExList = {2.5}; // 21Na* excitation in MeV + std::vector ExList = {0}; // 21Na* excitation in MeV // define vertex position uniform distribution ranges (mm) double vertexXRange[2] = { -5, 5}; // mm @@ -122,8 +118,8 @@ int main(int argc, char **argv){ double vertexZRange[2] = { -100, 100}; // detector resolution / uncertainty parameters - double sigmaSX3_W = -1; // mm, if < 0 use mid-point (no spread in SX3 horizontal dimension) - double sigmaSX3_L = 3; // mm, vertical spread for SX3 + double sigmaSX3_W = 0; // mm, if < 0 use mid-point (no spread in SX3 horizontal dimension) + double sigmaSX3_L = 0; // mm, vertical spread for SX3 double sigmaPW_A = 0; // normalized anode uncertainty term (0-1) double sigmaPW_C = 0; // normalized cathode uncertainty term (0-1) @@ -324,7 +320,7 @@ int main(int argc, char **argv){ transfer.CalReactionConstant(); // isotropic CM direction - thetaCM = TMath::ACos(2 * gRandom->Rndm() - 1) ; + thetaCM = TMath::ACos(2 * gRandom->Rndm() - 1) ; // polar angle in CM frame phiCM = (gRandom->Rndm() - 0.5) * TMath::TwoPi(); //==== Calculate reaction kinematics in lab frame for the primary transfer @@ -341,7 +337,7 @@ int main(int argc, char **argv){ T[0] = Tb; T[1] = TB; - // prepare secondary proton from 21Na* sequential decay + //secondary decay TLorentzVector decayProton; TLorentzVector heavy20; if(enableSequentialDecay){ diff --git a/ELoss/E_vs_x_alpha.dat b/ELoss/E_vs_x_alpha.dat index 169f0c3..d357192 100644 --- a/ELoss/E_vs_x_alpha.dat +++ b/ELoss/E_vs_x_alpha.dat @@ -1,501 +1,501 @@ Distance_cm Energy_MeV --0.0 22.0 -1.0979679668260327 21.955931863727454 -2.1940971205166475 21.911863727454907 -3.2883870865884766 21.867795591182364 -4.380837489806898 21.823727454909818 -5.471447954183834 21.779659318637272 -6.5602181029763385 21.73559118236473 -7.647147558685182 21.691523046092183 -8.732235943052554 21.64745490981964 -9.81548287706108 21.603386773547093 -10.896887980931519 21.559318637274547 -11.976450874121337 21.515250501002004 -13.05417117532327 21.471182364729458 -14.130048502463108 21.42711422845691 -15.204082472698252 21.38304609218437 -16.276272702416268 21.338977955911822 -17.346618807232662 21.294909819639276 -18.41512040198943 21.250841683366733 -19.481777100753597 21.206773547094187 -20.546588516814978 21.16270541082164 -21.60955426268472 21.118637274549098 -22.670673950093835 21.07456913827655 -23.72994718999086 21.03050100200401 -24.787373592540813 20.986432865731462 -25.842952767122856 20.942364729458916 -26.896684322328806 20.898296593186373 -27.948567865961643 20.854228456913827 -28.99860300503325 20.81016032064128 -30.046789345762907 20.766092184368738 -31.09312649357579 20.72202404809619 -32.1376140531007 20.677955911823645 -33.18025162816852 20.633887775551102 -34.22103882181073 20.589819639278556 -35.25997523625709 20.54575150300601 -36.29706047293413 20.501683366733467 -37.33229413246358 20.45761523046092 -38.36567581466003 20.413547094188377 -39.39720511852974 20.36947895791583 -40.4268816422683 20.325410821643285 -41.45470498325903 20.281342685370742 -42.480674738071414 20.237274549098196 -43.50479050245879 20.19320641282565 -44.52705187135674 20.149138276553106 -45.54745843888153 20.10507014028056 -46.56600979832772 20.061002004008014 -47.58270554216661 20.01693386773547 -48.59754526204458 19.972865731462925 -49.61052854878075 19.928797595190378 -50.62165499236534 19.884729458917835 -51.63092418195805 19.84066132264529 -52.63833570588556 19.796593186372746 -53.6438891516403 19.7525250501002 -54.647584105877975 19.708456913827654 -55.649420154415886 19.66438877755511 -56.64939688223124 19.620320641282564 -57.64751387345871 19.576252505010018 -58.64377071138879 19.532184368737475 -59.638166978466 19.48811623246493 -60.630702256286504 19.444048096192383 -61.62137612559633 19.39997995991984 -62.61018816628963 19.355911823647293 -63.59713795740624 19.311843687374747 -64.58222507712985 19.267775551102204 -65.56544910278625 19.223707414829658 -66.54680961084074 19.179639278557115 -67.52630617689674 19.13557114228457 -68.50393837569314 19.091503006012022 -69.47970578110247 19.04743486973948 -70.45360796612907 19.003366733466933 -71.42564450290652 18.959298597194387 -72.39581496269575 18.915230460921844 -73.36411891588315 18.871162324649298 -74.33055593197797 18.82709418837675 -75.29512557961039 18.78302605210421 -76.25782742652956 18.738957915831662 -77.21866103960099 18.694889779559116 -78.17762598480454 18.650821643286573 -79.13472182723244 18.606753507014027 -80.08994813108653 18.562685370741484 -81.04330445967659 18.518617234468937 -81.99479037541754 18.47454909819639 -82.94440543982736 18.43048096192385 -83.89214921352504 18.386412825651302 -84.83802125622775 18.342344689378756 -85.7820211267487 18.298276553106213 -86.72414838299507 18.254208416833666 -87.66440258196505 18.21014028056112 -88.60278327974575 18.166072144288577 -89.53929003151092 18.12200400801603 -90.47392239151802 18.077935871743485 -91.40667991310599 18.033867735470942 -92.33756214869297 17.989799599198395 -93.26656864977318 17.945731462925853 -94.19369896691498 17.901663326653306 -95.11895264975777 17.85759519038076 -96.04232924700958 17.813527054108217 -96.9638283064446 17.76945891783567 -97.8834493749001 17.725390781563124 -98.80119199827392 17.68132264529058 -99.71705572152199 17.637254509018035 -100.63104008865504 17.59318637274549 -101.54314464273607 17.549118236472946 -102.45336892587771 17.5050501002004 -103.36171247923892 17.460981963927853 -104.26817484302227 17.41691382765531 -105.17275555647123 17.372845691382764 -106.0754541578667 17.32877755511022 -106.97627018452452 17.284709418837675 -107.87520317279196 17.24064128256513 -108.77225265804475 17.196573146292586 -109.66741817468426 17.15250501002004 -110.56069925613379 17.108436873747493 -111.4520954348356 17.06436873747495 -112.34160624224785 17.020300601202404 -113.22923120884083 16.976232464929858 -114.11496986409384 16.932164328657315 -114.99882173649193 16.88809619238477 -115.88078635352208 16.844028056112222 -116.76086324166984 16.79995991983968 -117.63905192641596 16.755891783567133 -118.51535193223233 16.71182364729459 -119.38976278257883 16.667755511022044 -120.26228399989908 16.623687374749498 -121.1329151056169 16.579619238476955 -122.00165562013264 16.53555110220441 -122.86850506281881 16.491482965931862 -123.73346295201638 16.44741482965932 -124.5965288050309 16.403346693386773 -125.45770213812796 16.359278557114227 -126.31698246652924 16.315210420841684 -127.17436930440847 16.271142284569137 -128.02986216488668 16.22707414829659 -128.88346056002803 16.183006012024048 -129.7351640008355 16.138937875751502 -130.58497199724593 16.09486973947896 -131.43288405812586 16.050801603206413 -132.27889969126642 16.006733466933866 -133.12301840337872 15.96266533066132 -133.96523970008897 15.918597194388775 -134.8055630859335 15.87452905811623 -135.64398806435372 15.830460921843684 -136.4805141376908 15.78639278557114 -137.31514080718068 15.742324649298595 -138.14786757294857 15.69825651302605 -138.97869393400356 15.654188376753504 -139.80761938823292 15.61012024048096 -140.63464343239667 15.566052104208415 -141.4597655621217 15.521983967935869 -142.28298527189583 15.477915831663324 -143.10430205506194 15.43384769539078 -143.9237154038118 15.389779559118235 -144.7412248091799 15.345711422845689 -145.55682976103697 15.301643286573144 -146.37052974808364 15.2575751503006 -147.18232425784382 15.213507014028053 -147.99221277665777 15.169438877755509 -148.80019478967552 15.125370741482964 -149.60626978084966 15.08130260521042 -150.41043723292825 15.037234468937873 -151.2126966274474 14.993166332665329 -152.013047444724 14.949098196392784 -152.81148916384805 14.905030060120238 -153.60802126267467 14.860961923847693 -154.40264321781652 14.816893787575149 -155.19535450463545 14.772825651302604 -155.98615459723433 14.728757515030058 -156.77504296844853 14.684689378757513 -157.56201908983738 14.640621242484968 -158.34708243167537 14.596553106212422 -159.13023246294298 14.552484969939878 -159.9114686513177 14.508416833667333 -160.69079046316452 14.464348697394788 -161.46819736352637 14.420280561122242 -162.2436888161142 14.376212424849697 -163.01726428329718 14.332144288577153 -163.7889232260923 14.288076152304606 -164.55866510415385 14.244008016032062 -165.32648937576295 14.199939879759517 -166.0923954978164 14.155871743486973 -166.8563829258156 14.111803607214426 -167.61845111385506 14.067735470941882 -168.3785995146108 14.023667334669337 -169.1368275793284 13.97959919839679 -169.89313475781069 13.935531062124246 -170.64752049840533 13.891462925851702 -171.39998424799208 13.847394789579157 -172.1505254519697 13.80332665330661 -172.89914355424253 13.759258517034066 -173.64583799720694 13.715190380761522 -174.39060822173732 13.671122244488975 -175.13345366717175 13.62705410821643 -175.8743737712974 13.582985971943886 -176.61336797033562 13.538917835671342 -177.3504356989266 13.494849699398795 -178.08557639011363 13.45078156312625 -178.81878947532732 13.406713426853706 -179.550074384369 13.36264529058116 -180.279430545394 13.318577154308615 -181.00685738489457 13.27450901803607 -181.73235432768223 13.230440881763526 -182.45592079686992 13.18637274549098 -183.17755621385342 13.142304609218435 -183.89725999829275 13.09823647294589 -184.61503156809283 13.054168336673344 -185.33087033938364 13.0101002004008 -186.04477572650026 12.966032064128255 -186.75674714196214 12.92196392785571 -187.46678399645188 12.877895791583164 -188.17488569879364 12.83382765531062 -188.88105165593106 12.789759519038075 -189.58528127290452 12.745691382765528 -190.28757395282784 12.701623246492984 -190.98792909686472 12.65755511022044 -191.68634610420426 12.613486973947895 -192.3828243720361 12.569418837675348 -193.0773632955248 12.525350701402804 -193.7699622677839 12.48128256513026 -194.46062067984911 12.437214428857713 -195.1493379206508 12.393146292585168 -195.83611337698616 12.349078156312624 -196.5209464334904 12.30501002004008 -197.20383647260732 12.260941883767533 -197.88478287455916 12.216873747494988 -198.56378501731592 12.172805611222444 -199.24084227656365 12.128737474949897 -199.9159540256721 12.084669338677353 -200.5891196356617 12.040601202404808 -201.26033847516945 11.996533066132264 -201.92960991041446 11.952464929859717 -202.59693330516203 11.908396793587173 -203.26230802068744 11.864328657314628 -203.92573341573856 11.820260521042082 -204.58720884649745 11.776192384769537 -205.24673366654142 11.732124248496993 -205.90430722680273 11.688056112224448 -206.55992887552756 11.643987975951902 -207.21359795823383 11.599919839679357 -207.86531381766818 11.555851703406812 -208.51507579376167 11.511783567134266 -209.16288322358452 11.467715430861722 -209.80873544129977 11.423647294589177 -210.4526317781158 11.379579158316632 -211.09457156223758 11.335511022044086 -211.73455411881673 11.291442885771541 -212.37257876990066 11.247374749498997 -213.00864483437996 11.20330661322645 -213.64275162793493 11.159238476953906 -214.27489846298053 11.115170340681361 -214.90508464861014 11.071102204408817 -215.53330949053787 11.02703406813627 -216.15957229103935 10.982965931863726 -216.78387234889124 10.938897795591181 -217.40620895930917 10.894829659318635 -218.02658141388406 10.85076152304609 -218.64498900051703 10.806693386773546 -219.2614310033526 10.762625250501001 -219.8759067027103 10.718557114228455 -220.4884153750143 10.67448897795591 -221.09895629272197 10.630420841683366 -221.70752872424987 10.58635270541082 -222.3141319338984 10.542284569138275 -222.9187651817746 10.49821643286573 -223.52142772371266 10.454148296593186 -224.12211881119285 10.41008016032064 -224.72083769125817 10.366012024048095 -225.3175836064291 10.32194388777555 -225.91235579461627 10.277875751503004 -226.50515348903053 10.23380761523046 -227.09597591809145 10.189739478957915 -227.684822305333 10.14567134268537 -228.27169186930715 10.101603206412824 -228.85658382348484 10.057535070140279 -229.43949737615483 10.013466933867734 -230.02043173031976 9.969398797595188 -230.59938608358956 9.925330661322644 -231.17635962807248 9.881262525050099 -231.7513515502631 9.837194388777554 -232.32436103092783 9.793126252505008 -232.89538724498715 9.749058116232463 -233.4644293613954 9.704989979959919 -234.0314865430171 9.660921843687373 -234.5965579465005 9.616853707414828 -235.15964272214777 9.572785571142283 -235.72074001378203 9.528717434869739 -236.2798489586111 9.484649298597192 -236.83696868708753 9.440581162324648 -237.3920983227656 9.396513026052103 -237.94523698215434 9.352444889779557 -238.496383774567 9.308376753507012 -239.04553780196673 9.264308617234468 -239.5926981588085 9.220240480961923 -240.13786393187684 9.176172344689377 -240.6810342001195 9.132104208416832 -241.22220803447732 9.088036072144288 -241.7613844977093 9.043967935871741 -242.2985626442135 8.999899799599197 -242.83374151984367 8.955831663326652 -243.36692016172083 8.911763527054108 -243.89809759804044 8.867695390781561 -244.4272728478745 8.823627254509017 -244.95444492096888 8.779559118236472 -245.4796128175355 8.735490981963926 -246.00277552803905 8.691422845691381 -246.52393203297873 8.647354709418837 -247.04308130266418 8.603286573146292 -247.56022229698598 8.559218436873746 -248.07535396518023 8.515150300601201 -248.5884752455873 8.471082164328656 -249.0995850654046 8.42701402805611 -249.60868234043286 8.382945891783566 -250.1157659748164 8.338877755511021 -250.6208348607766 8.294809619238476 -251.12388787833876 8.25074148296593 -251.62492389505215 8.206673346693385 -252.12394176570305 8.16260521042084 -252.62094033202058 8.118537074148295 -253.115918422375 8.07446893787575 -253.60887485146878 8.030400801603205 -254.0998084200197 7.98633266533066 -254.58871791443607 7.942264529058115 -255.07560210648393 7.89819639278557 -255.56045975294577 7.854128256513025 -256.0432895952711 7.81006012024048 -256.52409035921784 7.765991983967934 -257.002860754485 7.72192384769539 -257.47959947433674 7.677855711422844 -257.95430519521597 7.6337875751503 -258.42697657634955 7.589719438877754 -258.8976122593431 7.54565130260521 -259.3662108677658 7.501583166332664 -259.8327710067253 7.457515030060119 -260.2972912624318 7.413446893787574 -260.7597702017518 7.369378757515029 -261.22020637175046 7.325310621242484 -261.6785982992233 7.281242484969939 -262.1349444902161 7.237174348697394 -262.5892434295332 7.193106212424849 -263.04149358023403 7.149038076152303 -263.49169338311737 7.1049699398797586 -263.9398412561931 7.060901803607213 -264.3859355941415 7.0168336673346685 -264.82997476775915 6.972765531062123 -265.2719571233923 6.9286973947895785 -265.71188098235626 6.884629258517033 -266.14974464034105 6.8405611222444875 -266.5855463668035 6.796492985971943 -267.01928440434455 6.7524248496993975 -267.45095696807255 6.708356713426853 -267.8805622449515 6.6642885771543074 -268.3080983931342 6.620220440881763 -268.73356354128055 6.576152304609217 -269.1569557878599 6.532084168336672 -269.57827320043776 6.488016032064127 -269.9975138149468 6.443947895791582 -270.41467563494103 6.399879759519037 -270.82975663083425 6.355811623246492 -271.2427547391214 6.311743486973947 -271.6536678615831 6.267675350701402 -272.06249386447337 6.223607214428856 -272.4692305776899 6.179539078156312 -272.87387579392725 6.135470941883766 -273.2764272678121 6.091402805611222 -273.6768827150216 6.047334669338676 -274.07523981138314 6.003266533066132 -274.4714961919573 5.959198396793586 -274.8656494501023 5.915130260521041 -275.25769713652073 5.871062124248496 -275.64763675828914 5.826993987975951 -276.035465777869 5.782925851703406 -276.4211816121007 5.738857715430861 -276.8047816311802 5.694789579158316 -277.1862631576179 5.650721442885771 -277.565623465181 5.606653306613225 -277.9428597778192 5.562585170340681 -278.3179692685742 5.518517034068135 -278.69094905847334 5.4744488977955905 -279.0617962154081 5.430380761523045 -279.4305077529982 5.3863126252505005 -279.7970806294419 5.342244488977955 -280.1615117463532 5.2981763527054095 -280.52379794758724 5.254108216432865 -280.88393601805495 5.2100400801603195 -281.2419226825278 5.165971943887775 -281.59775460443467 5.1219038076152295 -281.95142838465176 5.077835671342685 -282.30294056028777 5.033767535070139 -282.65228760346605 4.989699398797594 -282.99946592010576 4.945631262525049 -283.34447184870487 4.901563126252504 -283.68730165912706 4.857494989979959 -284.02795155139574 4.813426853707414 -284.3664176544985 4.769358717434869 -284.7026960252052 4.725290581162324 -285.03678264690404 4.681222444889778 -285.36867342845926 4.637154308617234 -285.6983642030958 4.593086172344688 -286.0258507273159 4.549018036072144 -286.35112867985276 4.504949899799598 -286.67419366066827 4.460881763527054 -286.9950411900013 4.416813627254508 -287.3136667074735 4.372745490981963 -287.63006557126135 4.328677354709418 -287.9442330573434 4.284609218436873 -288.2561643588316 4.240541082164328 -288.56585458539826 4.196472945891783 -288.8732987628097 4.152404809619238 -289.1784918325797 4.108336673346693 -289.4814286517556 4.064268537074147 -289.78210399285376 4.020200400801603 -290.08051254395946 3.9761322645290575 -290.37664890900965 3.9320641282565125 -290.67050760827874 3.887995991983967 -290.9620830790882 3.843927855711422 -291.25136967676355 3.799859719438877 -291.5383616758648 3.755791583166332 -291.8230532717176 3.711723446893787 -292.10543858227584 3.667655310621242 -292.3855116503494 3.623587174348697 -292.66326644623234 3.5795190380761515 -292.9386968707727 3.5354509018036064 -293.21179675892574 3.4913827655310614 -293.4825598838393 3.4473146292585164 -293.75097996152226 3.4032464929859714 -294.0170506561529 3.3591783567134263 -294.2807655860894 3.3151102204408813 -294.54211833064954 3.271042084168336 -294.80110243773447 3.226973947895791 -295.0577114323765 3.182905811623246 -295.31193882630066 3.138837675350701 -295.56377812859665 3.0947695390781558 -295.81322285760746 3.0507014028056108 -296.0602665541514 3.0066332665330657 -296.30490279620517 2.9625651302605203 -296.54712521518843 2.9184969939879752 -296.7869275140029 2.87442885771543 -297.02430348699534 2.830360721442885 -297.25924704202885 2.78629258517034 -297.4917522248668 2.742224448897795 -297.72181324609204 2.69815631262525 -297.9494245108078 2.6540881763527047 -298.1745806513904 2.6100200400801596 -298.3972765635919 2.5659519038076146 -298.61750744632036 2.5218837675350696 -298.8352688454589 2.4778156312625246 -299.05055670212374 2.4337474949899796 -299.26336740579967 2.3896793587174345 -299.4736978528418 2.345611222444889 -299.6815455108801 2.301543086172344 -299.88690848972414 2.257474949899799 -300.0897856194288 2.213406813627254 -300.29017653625476 2.169338677354709 -300.48808177734 2.125270541082164 -300.68350288499187 2.081202404809619 -300.87644252161334 2.0371342685370735 -301.06690459639896 1.993066132264529 -301.2548944050708 1.9489979959919836 -301.4404187840838 1.9049298597194386 -301.6234862809111 1.8608617234468936 -301.80410734222795 1.8167935871743486 -301.9822945220607 1.7727254509018033 -302.15806271225074 1.7286573146292583 -302.33142939792094 1.6845891783567133 -302.5024149410324 1.640521042084168 -302.6710428955916 1.596452905811623 -302.83734035863887 1.552384769539078 -303.0013383618331 1.508316633266533 -303.16307230927816 1.4642484969939877 -303.3225824682487 1.4201803607214427 -303.47991452071557 1.3761122244488977 -303.63512018510113 1.3320440881763524 -303.7882579195974 1.2879759519038074 -303.93939372075243 1.2439078156312624 -304.08860203401105 1.1998396793587174 -304.23596679666525 1.1557715430861721 -304.381582638461 1.1117034068136271 -304.52555627124974 1.067635270541082 -304.66800810699596 1.0235671342685368 -304.80907415375975 0.9794989979959918 -304.9489082528044 0.9354308617234468 -305.08768473791486 0.8913627254509017 -305.2256016220649 0.8472945891783566 -305.3628844492392 0.8032264529058115 -305.4997909942559 0.7591583166332665 -305.6366170566244 0.7150901803607214 -305.7737036849217 0.6710220440881762 -305.9114463007515 0.6269539078156312 -306.05030639112084 0.5828857715430861 -306.1908267489405 0.538817635270541 -306.3336517435569 0.4947494989979959 -306.47955495034967 0.45068136272545084 -306.6294779701976 0.40661322645290576 -306.7845870883725 0.3625450901803607 -306.9463600739776 0.3184769539078156 -307.1167276661543 0.27440881763527053 -307.2983234411945 0.23034068136272542 -307.49497395910805 0.18627254509018035 -307.7128080105875 0.14220440881763527 -307.9631635274653 0.09813627254509016 -308.2668481468979 0.054068136272545086 -308.76087549467394 0.01 +-0.0 30.0 +1.9446985513936768 29.9398997995992 +3.8860830606275085 29.879799599198396 +5.824152858570795 29.819699398797596 +7.75890727441193 29.759599198396792 +9.690345635651623 29.699498997995992 +11.618467268097803 29.63939879759519 +13.543271495859377 29.579298597194388 +15.464757641339961 29.519198396793588 +17.382925025232733 29.459098196392784 +19.29777296651357 29.398997995991984 +21.209300782435854 29.338897795591183 +23.11750778852414 29.27879759519038 +25.022393298567813 29.21869739478958 +26.923956624615716 29.15859719438878 +28.82219707696977 29.098496993987975 +30.71711396417857 29.038396793587175 +32.60870659303208 28.97829659318637 +34.496974268554645 28.91819639278557 +36.38191629399964 28.85809619238477 +38.26353197084298 28.797995991983967 +40.14182059877668 28.737895791583167 +42.016781475703404 28.677795591182363 +43.88841389772941 28.617695390781563 +45.75671715915911 28.557595190380763 +47.62169055248852 28.49749498997996 +49.483333368398675 28.43739478957916 +51.341644895750136 28.377294589178355 +53.19662442157583 28.317194388777555 +55.048271231075525 28.257094188376755 +56.896584607609185 28.19699398797595 +58.74156383269031 28.13689378757515 +60.58320818598024 28.07679358717435 +62.42151694528146 28.016693386773547 +64.25648938653089 27.956593186372746 +66.08812478379424 27.896492985971943 +67.91642240925876 27.836392785571142 +69.74138153322748 27.776292585170342 +71.56300142411253 27.71619238476954 +73.38128134842827 27.656092184368738 +75.19622057078563 27.595991983967934 +77.00781835388466 27.535891783567134 +78.81607395850885 27.475791583166334 +80.62098664351821 27.41569138276553 +82.42255566584241 27.35559118236473 +84.22078028047498 27.295490981963926 +86.01565974046585 27.235390781563126 +87.80719329691551 27.175290581162326 +89.59538019896806 27.115190380761522 +91.38021969380424 27.05509018036072 +93.16171102663546 26.99498997995992 +94.93985344069677 26.934889779559118 +96.71464617723989 26.874789579158318 +98.48608847552723 26.814689378757514 +100.25417957282433 26.754589178356714 +102.0189187043939 26.694488977955913 +103.78030510348871 26.63438877755511 +105.53833800134457 26.57428857715431 +107.2930166271742 26.514188376753506 +109.04434020815968 26.454088176352705 +110.79230796944634 26.393987975951905 +112.53691913413562 26.3338877755511 +114.2781729232779 26.2737875751503 +116.01606855586644 26.213687374749497 +117.75060524882959 26.153587174348697 +119.48178221702469 26.093486973947897 +121.20959867323084 26.033386773547093 +122.93405382814169 25.973286573146293 +124.65514689035908 25.913186372745493 +126.37287706638585 25.85308617234469 +128.08724356061853 25.79298597194389 +129.7982455753411 25.732885771543085 +131.5058823107172 25.672785571142285 +133.21015296478376 25.612685370741485 +134.9110567334438 25.55258517034068 +136.60859281045896 25.49248496993988 +138.3027603874433 25.432384769539077 +139.99355865385533 25.372284569138277 +141.68098679699168 25.312184368737476 +143.3650440019797 25.252084168336673 +145.04572945177006 25.191983967935872 +146.72304232713032 25.13188376753507 +148.39698180663706 25.07178356713427 +150.06754706666933 25.011683366733468 +151.7347372814013 24.951583166332664 +153.3985516227947 24.891482965931864 +155.05898926059237 24.831382765531064 +156.71604936231054 24.77128256513026 +158.36973109323154 24.71118236472946 +160.02003361639714 24.651082164328656 +161.66695609260057 24.590981963927856 +163.31049768038 24.530881763527056 +164.95065753601085 24.470781563126252 +166.58743481349836 24.41068136272545 +168.2208286645709 24.350581162324648 +169.8508382386719 24.290480961923848 +171.4774626829533 24.230380761523048 +173.10070114226775 24.170280561122244 +174.7205527591612 24.110180360721444 +176.33701667386597 24.05008016032064 +177.9500920242929 23.98997995991984 +179.5597779460244 23.92987975951904 +181.16607357230689 23.869779559118236 +182.76897803404304 23.809679358717435 +184.36849045978505 23.749579158316635 +185.96460997572675 23.68947895791583 +187.55733570569603 23.62937875751503 +189.146666771148 23.569278557114227 +190.7326022911567 23.509178356713427 +192.31514138240834 23.449078156312627 +193.89428315919355 23.388977955911823 +195.47002673339952 23.328877755511023 +197.04237121450322 23.26877755511022 +198.611315709563 23.20867735470942 +200.1768593232118 23.14857715430862 +201.73900115764928 23.088476953907815 +203.29774031263398 23.028376753507015 +204.8530758854763 22.96827655310621 +206.40500697103033 22.90817635270541 +207.95353266168675 22.84807615230461 +209.49865204736494 22.787975951903807 +211.04036421550512 22.727875751503007 +212.5786682510612 22.667775551102206 +214.11356323649287 22.607675350701403 +215.64504825175757 22.547575150300602 +217.17312237430357 22.4874749498998 +218.69778467906144 22.427374749499 +220.21903423843693 22.367274549098198 +221.73687012230306 22.307174348697394 +223.25129139799196 22.247074148296594 +224.76229713028792 22.18697394789579 +226.26988638141867 22.12687374749499 +227.77405821104836 22.06677354709419 +229.2748116762694 22.006673346693386 +230.7721458315944 21.946573146292586 +232.2660597289489 21.886472945891782 +233.75655241766282 21.826372745490982 +235.2436229444632 21.76627254509018 +236.72727035346594 21.706172344689378 +238.20749368616777 21.646072144288578 +239.6842919814387 21.585971943887778 +241.15766427551384 21.525871743486974 +242.62760960198517 21.465771543086174 +244.0941269917941 21.40567134268537 +245.5572154732228 21.34557114228457 +247.01687407188675 21.28547094188377 +248.47310181072638 21.225370741482966 +249.9258977099987 21.165270541082165 +251.3752607872699 21.10517034068136 +252.82119005740637 21.04507014028056 +254.26368453256725 20.98496993987976 +255.70274322219592 20.924869739478957 +257.1383651330115 20.864769539078157 +258.57054926900133 20.804669338677353 +259.9992946314118 20.744569138276553 +261.42460021874075 20.684468937875753 +262.846465026729 20.62436873747495 +264.2648880483515 20.56426853707415 +265.6798682738096 20.50416833667335 +267.09140469052215 20.444068136272545 +268.4994962831171 20.383967935871745 +269.9041420334233 20.32386773547094 +271.30534092046133 20.26376753507014 +272.70309192043567 20.20366733466934 +274.09739400672555 20.143567134268537 +275.4882461498762 20.083466933867737 +276.87564731759073 20.023366733466933 +278.25959647472064 19.963266533066133 +279.6400925832575 19.903166332665332 +281.0171346023241 19.84306613226453 +282.39072148816507 19.78296593186373 +283.76085219413847 19.722865731462925 +285.12752567070635 19.662765531062124 +286.490740865426 19.602665330661324 +287.85049672294076 19.54256513026052 +289.20679218497037 19.48246492985972 +290.5596261903024 19.42236472945892 +291.90899767478265 19.362264529058116 +293.2549055713053 19.302164328657316 +294.59734880980426 19.242064128256512 +295.9363263172429 19.181963927855712 +297.271837017605 19.12186372745491 +298.60387983188474 19.061763527054108 +299.9324536780768 19.001663326653308 +301.2575574711669 18.941563126252504 +302.57919012312135 18.881462925851704 +303.8973505428775 18.821362725450903 +305.2120376363334 18.7612625250501 +306.52325030633705 18.7011623246493 +307.8309874526771 18.641062124248496 +309.13524797207134 18.580961923847696 +310.43603075815685 18.520861723446895 +311.733334701479 18.46076152304609 +313.02715868948053 18.40066132264529 +314.3175016064909 18.34056112224449 +315.60436233371524 18.280460921843687 +316.8877397492227 18.220360721442887 +318.1676327279357 18.160260521042083 +319.44404014161796 18.100160320641283 +320.71696085886316 18.040060120240483 +321.98639374508315 17.97995991983968 +323.2523376624957 17.91985971943888 +324.5147914701128 17.859759519038075 +325.7737540237279 17.799659318637275 +327.0292241759039 17.739559118236475 +328.2812007759601 17.67945891783567 +329.5296826699594 17.61935871743487 +330.77466870069566 17.559258517034067 +332.0161577076796 17.499158316633267 +333.2541485271261 17.439058116232466 +334.4886399919402 17.378957915831663 +335.7196309317028 17.318857715430862 +336.9471201726569 17.258757515030062 +338.1711065376932 17.19865731462926 +339.39158884633486 17.13855711422846 +340.60856591472304 17.078456913827655 +341.8220365556013 17.018356713426854 +343.03199957830026 16.958256513026054 +344.2384537887217 16.89815631262525 +345.4413979893221 16.83805611222445 +346.64083097909673 16.777955911823646 +347.836751553562 16.717855711422846 +349.0291585047391 16.657755511022046 +350.218050621136 16.597655310621242 +351.4034266877294 16.537555110220442 +352.58528548594694 16.477454909819638 +353.76362579364786 16.417354709418838 +354.9384463851044 16.357254509018038 +356.10974603098197 16.297154308617234 +357.27752349831906 16.237054108216434 +358.441777550507 16.176953907815633 +359.6025069472691 16.11685370741483 +360.75971044463853 16.05675350701403 +361.91338679493725 15.996653306613226 +363.06353474675285 15.936553106212424 +364.21015304491584 15.876452905811622 +365.35324043047586 15.81635270541082 +366.49279564067746 15.75625250501002 +367.6288174089355 15.696152304609218 +368.76130446480937 15.636052104208416 +369.89025553397704 15.575951903807614 +371.01566933820817 15.515851703406813 +372.13754459533675 15.455751503006011 +373.2558800192327 15.39565130260521 +374.37067431977283 15.335551102204407 +375.4819262028113 15.275450901803605 +376.58963437014864 15.215350701402805 +377.6937975195009 15.155250501002003 +378.7944143444667 15.095150300601201 +379.8914835344945 15.0350501002004 +380.98500377484817 14.974949899799599 +382.0749737465722 14.914849699398797 +383.16139212645527 14.854749498997995 +384.24425758699334 14.794649298597193 +385.3235687963515 14.734549098196391 +386.3993244183244 14.67444889779559 +387.47152311229627 14.614348697394789 +388.54016353319884 14.554248496993987 +389.6052443314687 14.494148296593185 +390.66676415300327 14.434048096192384 +391.72472163911516 14.373947895791582 +392.7791154264856 14.31384769539078 +393.829944147116 14.253747494989979 +394.87720642827867 14.193647294589177 +395.9209008924653 14.133547094188376 +396.9610261573346 14.073446893787574 +397.9975808356577 14.013346693386772 +399.03056353526233 13.95324649298597 +400.0599728589752 13.89314629258517 +401.08580740456233 13.833046092184368 +402.1080657646679 13.772945891783566 +403.126746526751 13.712845691382764 +404.14184827302023 13.652745490981962 +405.1533695803667 13.592645290581162 +406.1613090202947 13.53254509018036 +407.16566515884995 13.472444889779558 +408.1664365565459 13.412344689378756 +409.1636217682876 13.352244488977956 +410.1572193432934 13.292144288577154 +411.14722782501326 13.232044088176352 +412.1336457510458 13.17194388777555 +413.11647165305146 13.111843687374748 +414.0957040566638 13.051743486973947 +415.0713414813974 12.991643286573145 +416.04338244055276 12.931543086172343 +417.01182544111856 12.871442885771541 +417.9766689836704 12.811342685370741 +418.9379115622664 12.75124248496994 +419.89555166433934 12.691142284569137 +420.84958777058534 12.631042084168335 +421.80001835484893 12.570941883767533 +422.7468418840042 12.510841683366733 +423.6900568178323 12.450741482965931 +424.62966160889493 12.390641282565129 +425.56565470240315 12.330541082164327 +426.49803453608274 12.270440881763527 +427.4267995400344 12.210340681362725 +428.35194813658967 12.150240480961923 +429.27347874016203 12.090140280561121 +430.1913897570932 12.030040080160319 +431.1056795854939 11.969939879759519 +432.01634661508 11.909839679358717 +432.9233892270028 11.849739478957915 +433.82680579367354 11.789639278557113 +434.72659467858244 11.729539078156312 +435.62275423611163 11.66943887775551 +436.5152828113416 11.609338677354708 +437.4041787398513 11.549238476953906 +438.2894403475119 11.489138276553104 +439.17106595027286 11.429038076152304 +440.04905385394176 11.368937875751502 +440.923402353956 11.3088376753507 +441.7941097351473 11.248737474949898 +442.6611742714979 11.188637274549098 +443.52459422588896 11.128537074148296 +444.3843678498403 11.068436873747494 +445.2404933832412 11.008336673346692 +446.0929690540722 10.94823647294589 +446.94179307811805 10.88813627254509 +447.7869636586699 10.828036072144288 +448.62847898621834 10.767935871743486 +449.4663372381356 10.707835671342684 +450.3005365783471 10.647735470941884 +451.1310751569918 10.587635270541082 +451.95795111007124 10.52753507014028 +452.78116255908617 10.467434869739478 +453.6007076106614 10.407334669338676 +454.4165843561575 10.347234468937875 +455.22879087126944 10.287134268537073 +456.03732521561153 10.227034068136271 +456.84218543228815 10.16693386773547 +457.6433695474499 10.10683366733467 +458.44087556983453 10.046733466933867 +459.23470149029237 9.986633266533065 +460.02484528129526 9.926533066132263 +460.8113048964288 9.866432865731461 +461.5940782698673 9.806332665330661 +462.37316331583065 9.746232464929859 +463.1485579280226 9.686132264529057 +463.9202599790499 9.626032064128255 +464.68826731982114 9.565931863727455 +465.4525777789255 9.505831663326653 +466.21318916198965 9.44573146292585 +466.9700992510129 9.385631262525049 +467.7233058036794 9.325531062124247 +468.47280655264655 9.265430861723447 +469.2185992048092 9.205330661322645 +469.96068144053834 9.145230460921843 +470.6990509128935 9.08513026052104 +471.43370524680824 9.02503006012024 +472.16464203824773 8.964929859719438 +472.89185885333677 8.904829659318636 +473.61535322745823 8.844729458917834 +474.33512266432024 8.784629258517032 +475.05116463499144 8.724529058116232 +475.7634765769027 8.66442885771543 +476.4720558928146 8.604328657314628 +477.1768999497494 8.544228456913826 +477.8780060778861 8.484128256513026 +478.57537156941754 8.424028056112224 +479.26899367736803 8.363927855711422 +479.9588696143704 8.30382765531062 +480.6449965514011 8.243727454909818 +481.3273716164715 8.183627254509018 +482.00599189327454 8.123527054108216 +482.68085441978474 8.063426853707414 +483.3519561868102 8.003326653306614 +484.01929413649515 7.943226452905811 +484.68286516077103 7.88312625250501 +485.34266609975475 7.823026052104208 +485.99869374009216 7.7629258517034065 +486.6509448132453 7.7028256513026045 +487.2994159937209 7.6427254509018026 +487.9441038972393 7.5826252505010014 +488.58500507884065 7.5225250501001995 +489.2221160309277 7.462424849699398 +489.8554331812419 7.402324649298596 +490.484952890772 7.342224448897795 +491.110671451592 7.282124248496993 +491.73258508462703 7.222024048096192 +492.3506899373447 7.16192384769539 +492.9649820813698 7.101823647294588 +493.5754575100198 7.041723446893787 +494.18211213575995 6.981623246492985 +494.78494178757404 6.921523046092184 +495.38394220825035 6.861422845691382 +495.9791090515788 6.801322645290581 +496.57043787945867 6.741222444889779 +497.15792415891303 6.681122244488978 +497.7415632590089 6.621022044088176 +498.32135044768006 6.560921843687374 +498.8972808884509 6.500821643286573 +499.46934963705877 6.440721442885771 +500.0375516379729 6.3806212424849695 +500.6018817208082 6.3205210420841675 +501.1623345966315 6.260420841683366 +501.7189048541595 6.200320641282564 +502.27158695584546 6.140220440881763 +502.8203752338549 6.080120240480961 +503.3652638859279 6.020020040080159 +503.90624697112776 5.959919839679358 +504.44331840547557 5.899819639278556 +504.97647195747 5.839719438877755 +505.5057012434929 5.779619238476953 +506.0309997231017 5.719519038076152 +506.55236069420863 5.65941883767535 +507.06977728815053 5.599318637274549 +507.58324246464963 5.539218436873747 +508.0927490066702 5.479118236472945 +508.5982895151747 5.419018036072144 +509.0998564037844 5.358917835671342 +509.5974418933509 5.298817635270541 +510.0910380064469 5.238717434869739 +510.580636561784 5.178617234468938 +511.0662291685689 5.118517034068136 +511.5478072208109 5.0584168336673345 +512.0253618915941 4.9983166332665325 +512.4988841273324 4.9382164328657305 +512.9683646420252 4.878116232464929 +513.4337939115383 4.818016032064127 +513.8951621679325 4.757915831663326 +514.3524593938729 4.697815631262524 +514.8056753171481 4.637715430861723 +515.2547994053415 4.577615230460921 +515.6998208606931 4.51751503006012 +516.1407286152053 4.457414829659318 +516.5775113260445 4.397314629258516 +517.0101573713032 4.337214428857715 +517.4386548461923 4.277114228456913 +517.8629915597443 4.217014028056112 +518.283155032117 4.15691382765531 +518.6991324926005 4.096813627254509 +519.1109108784422 4.036713426853707 +519.5184768346184 3.9766132264529053 +519.9218167147003 3.9165130260521037 +520.3209165829779 3.856412825651302 +520.7157622180277 3.7963126252505006 +521.1063391179338 3.736212424849699 +521.492632507397 3.6761122244488975 +521.8746273470002 3.616012024048096 +522.2523083449257 3.555911823647294 +522.625659971467 3.4958116232464924 +522.9946664767127 3.435711422845691 +523.3593119118344 3.3756112224448893 +523.7195801544641 3.3155110220440878 +524.0754549387094 3.255410821643286 +524.4269198904268 3.1953106212424847 +524.7739585684527 3.135210420841683 +525.116554512587 3.0751102204408816 +525.4546912992241 3.0150100200400796 +525.7883526056503 2.954909819639278 +526.117522284157 2.8948096192384765 +526.4421844472781 2.834709418837675 +526.7623235656347 2.7746092184368734 +527.0779245800711 2.714509018036072 +527.3889730299994 2.6544088176352703 +527.6954552001333 2.5943086172344687 +527.9973582880958 2.534208416833667 +528.2946705957371 2.474108216432865 +528.5873817473994 2.4140080160320636 +528.875482938834 2.353907815631262 +529.1589672210148 2.2938076152304605 +529.4378298237193 2.233707414829659 +529.7120685244831 2.1736072144288574 +529.9816840693895 2.113507014028056 +530.2466806531692 2.0534068136272543 +530.5070664672812 1.9933066132264528 +530.7628543260761 1.9332064128256512 +531.0140623828552 1.8731062124248496 +531.2607149497184 1.813006012024048 +531.5028434376286 1.7529058116232463 +531.7404874362488 1.6928056112224448 +531.9736959570038 1.6327054108216432 +532.202528867726 1.5726052104208417 +532.427058553486 1.51250501002004 +532.6473718462431 1.4524048096192383 +532.8635722764056 1.3923046092184368 +533.0757827131423 1.3322044088176352 +533.2841484785854 1.2721042084168337 +533.4888410456759 1.212004008016032 +533.6900624628815 1.1519038076152304 +533.8880506950984 1.0918036072144288 +534.0830861342573 1.0317034068136273 +534.2754996238341 0.9716032064128256 +534.4656824714835 0.911503006012024 +534.654099113704 0.8514028056112224 +534.8413033789114 0.7913026052104208 +535.0279597264604 0.7312024048096192 +535.2148715173979 0.6711022044088176 +535.4030194802259 0.611002004008016 +535.5936154291123 0.5509018036072144 +535.7881797238598 0.4908016032064128 +535.9886576384534 0.4307014028056112 +536.1976039873823 0.3706012024048096 +536.4184988965045 0.310501002004008 +536.656348262986 0.2504008016032064 +536.9190144190857 0.1903006012024048 +537.2209352294095 0.1302004008016032 +537.5927100947087 0.0701002004008016 +538.2452746759647 0.01 diff --git a/ELoss/E_vs_x_proton.dat b/ELoss/E_vs_x_proton.dat index 61524a0..1be5562 100644 --- a/ELoss/E_vs_x_proton.dat +++ b/ELoss/E_vs_x_proton.dat @@ -1,501 +1,501 @@ Distance_cm Energy_MeV --0.0 20.0 -12.004960341817172 19.95993987975952 -23.98964201736537 19.919879759519038 -35.95403279928156 19.87981963927856 -47.8981204715152 19.839759519038076 -59.82189282933158 19.799699398797596 -71.72533767933199 19.759639278557113 -83.60844283945664 19.719579158316634 -95.47119613900456 19.67951903807615 -107.31358541863614 19.63945891783567 -119.1355985303925 19.59939879759519 -130.93722333769784 19.55933867735471 -142.7184477153773 19.51927855711423 -154.47925954966414 19.479218436873747 -166.21964673820682 19.439158316633268 -177.93959719008618 19.399098196392785 -189.63909882581686 19.359038076152306 -201.31813957736523 19.318977955911823 -212.97670738815043 19.278917835671344 -224.61479021306178 19.23885771543086 -236.23237601845952 19.19879759519038 -247.82945278219168 19.1587374749499 -259.4060084935945 19.11867735470942 -270.96203115350795 19.07861723446894 -282.4975087742806 19.038557114228457 -294.01242937977463 18.998496993987978 -305.5067810053806 18.958436873747495 -316.9805516980169 18.918376753507015 -328.43372951614475 18.878316633266532 -339.8663025297676 18.838256513026053 -351.2782588204458 18.79819639278557 -362.669586481295 18.75813627254509 -374.0402736170009 18.718076152304608 -385.39030834381686 18.67801603206413 -396.7196787895775 18.63795591182365 -408.0283731549779 18.597895791583166 -419.31637982576467 18.557835671342687 -430.58368713504734 18.517775551102204 -441.8302832511163 18.477715430861725 -453.05615635388847 18.437655310621242 -464.2612946349039 18.397595190380763 -475.44568629733817 18.35753507014028 -486.6093195559983 18.3174749498998 -497.75218263733467 18.277414829659318 -508.87426377943666 18.237354709418838 -519.9755512320438 18.197294589178355 -531.0560332565411 18.157234468937876 -542.1156981259685 18.117174348697397 -553.1545341250206 18.077114228456914 -564.1725295500464 18.037054108216434 -575.1696727090575 17.99699398797595 -586.1459519217227 17.956933867735472 -597.1013555193769 17.91687374749499 -608.0358718450148 17.87681362725451 -618.9494892532997 17.836753507014027 -629.8421961105564 17.796693386773548 -640.7139807947792 17.756633266533065 -651.5648316956248 17.716573146292586 -662.3947372144183 17.676513026052106 -673.2036857641508 17.636452905811623 -683.9916657694749 17.596392785571144 -694.7586656667115 17.55633266533066 -705.50467390384 17.51627254509018 -716.2296789405049 17.4762124248497 -726.9336692480065 17.43615230460922 -737.6166333093062 17.396092184368737 -748.2785596190165 17.356032064128257 -758.919436683406 17.315971943887774 -769.5392530203891 17.275911823647295 -780.1379971595287 17.235851703406816 -790.7156576420305 17.195791583166333 -801.2722230462253 17.155731462925853 -811.8076821486147 17.11567134268537 -822.3220237086892 17.07561122244489 -832.8152363078991 17.03555110220441 -843.2873085393342 16.99549098196393 -853.7382290077255 16.955430861723446 -864.1679863294327 16.915370741482967 -874.5765691324449 16.875310621242484 -884.9639660563674 16.835250501002005 -895.3301657524224 16.79519038076152 -905.6751568834343 16.755130260521042 -915.9989281238289 16.715070140280563 -926.3014681596235 16.67501002004008 -936.5827656884155 16.6349498997996 -946.8428094193811 16.594889779559118 -957.0815880732588 16.55482965931864 -967.2990903823483 16.514769539078156 -977.4953050904932 16.474709418837676 -987.6702209530791 16.434649298597193 -997.8238267370164 16.394589178356714 -1007.9561112207365 16.35452905811623 -1018.0670631941748 16.314468937875752 -1028.156671458765 16.274408817635273 -1038.2249248274256 16.23434869739479 -1048.2718121245452 16.19428857715431 -1058.2973221859763 16.154228456913827 -1068.3014438590164 16.114168336673348 -1078.2841660024014 16.074108216432865 -1088.2454774862856 16.034048096192386 -1098.1853671922354 15.993987975951903 -1108.103824013208 15.953927855711422 -1118.0008368535425 15.91386773547094 -1127.8763946289428 15.87380761523046 -1137.7304862664625 15.833747494989979 -1147.5631008529945 15.793687374749497 -1157.3742275229429 15.753627254509016 -1167.1638552701836 15.713567134268535 -1176.9319730603706 15.673507014028054 -1186.6785698704548 15.633446893787573 -1196.4036346886658 15.593386773547094 -1206.1071565144957 15.553326653306613 -1215.7891243586785 15.513266533066131 -1225.449527243173 15.47320641282565 -1235.0883542011434 15.43314629258517 -1244.70559427694 15.393086172344688 -1254.3012365260793 15.353026052104207 -1263.8752700152234 15.312965931863726 -1273.4276838221597 15.272905811623245 -1282.9584670357797 15.232845691382764 -1292.4676087560574 15.192785571142283 -1301.955098094027 15.152725450901803 -1311.4209241717626 15.112665330661322 -1320.8650761223519 15.072605210420841 -1330.2875430898753 15.03254509018036 -1339.6883142293823 14.992484969939879 -1349.0673787068665 14.952424849699398 -1358.424725699242 14.912364729458917 -1367.7603443943174 14.872304609218435 -1377.0742239907715 14.832244488977954 -1386.3663536981269 14.792184368737473 -1395.6367227367234 14.752124248496992 -1404.8853203376923 14.712064128256511 -1414.1121357429279 14.672004008016032 -1423.317158205062 14.63194388777555 -1432.5003769965256 14.59188376753507 -1441.6617815512257 14.551823647294588 -1450.8013613011033 14.511763527054107 -1459.9191055344168 14.471703406813626 -1469.01500355005 14.431643286573145 -1478.0890446574824 14.391583166332664 -1487.1412181767578 14.351523046092183 -1496.1715134384535 14.311462925851702 -1505.1799197836492 14.27140280561122 -1514.1664265638938 14.23134268537074 -1523.1310231411737 14.19128256513026 -1532.0736988878805 14.151222444889779 -1540.9944431867757 14.111162324649298 -1549.8932454309581 14.071102204408817 -1558.7700950238293 14.031042084168336 -1567.6249813790587 13.990981963927855 -1576.457893920548 13.950921843687373 -1585.2688220823961 13.910861723446892 -1594.0577553088622 13.870801603206411 -1602.8246830543294 13.83074148296593 -1611.5695947832678 13.790681362725449 -1620.292479970196 13.75062124248497 -1628.9933280996452 13.710561122244489 -1637.6721286661177 13.670501002004007 -1646.3288711740504 13.630440881763526 -1654.9635451377737 13.590380761523045 -1663.576140081473 13.550320641282564 -1672.1666455391476 13.510260521042083 -1680.7350510545693 13.470200400801602 -1689.2813462744693 13.43014028056112 -1697.8055208897172 13.39008016032064 -1706.30756450391 13.350020040080159 -1714.787466692128 13.309959919839677 -1723.2452170390538 13.269899799599198 -1731.6808051389326 13.229839679358717 -1740.0942205955243 13.189779559118236 -1748.485453022062 13.149719438877755 -1756.8544920412062 13.109659318637274 -1765.201327285 13.069599198396793 -1773.5259483948237 13.029539078156311 -1781.8283450213487 12.98947895791583 -1790.1085068244913 12.94941883767535 -1798.366423473366 12.909358717434868 -1806.6020846462386 12.869298597194387 -1814.815480030478 12.829238476953906 -1823.006599322509 12.789178356713427 -1831.1754322277643 12.749118236472945 -1839.3219684606352 12.709058116232464 -1847.4461977444223 12.668997995991983 -1855.5481098112878 12.628937875751502 -1863.627694402204 12.588877755511021 -1871.684941266905 12.54881763527054 -1879.719840163835 12.508757515030059 -1887.7323808600984 12.468697394789578 -1895.722553131409 12.428637274549097 -1903.6903468185924 12.388577154308615 -1911.6357518099082 12.348517034068136 -1919.5587579416467 12.308456913827655 -1927.4593550157244 12.268396793587174 -1935.3375328424584 12.228336673346693 -1943.193281240514 12.188276553106212 -1951.0265900368515 12.14821643286573 -1958.8374490666745 12.10815631262525 -1966.6258481733762 12.068096192384768 -1974.391777208487 12.028036072144287 -1982.1352260316207 11.987975951903806 -1989.8561845104227 11.947915831663325 -1997.554642520515 11.907855711422844 -2005.2305899454436 11.867795591182364 -2012.8840166766263 11.827735470941883 -2020.5149126132972 11.787675350701402 -2028.123267662455 11.747615230460921 -2035.7090717388087 11.70755511022044 -2043.2723147647253 11.667494989979959 -2050.812986670176 11.627434869739478 -2058.3310773926833 11.587374749498997 -2065.826576877268 11.547314629258516 -2073.299475076398 11.507254509018034 -2080.749761949933 11.467194388777553 -2088.1774274945883 11.427134268537074 -2095.5824617448034 11.387074148296593 -2102.9648547087063 11.347014028056112 -2110.324596367168 11.30695390781563 -2117.661676708255 11.26689378757515 -2124.9760857271804 11.226833667334668 -2132.267813426253 11.186773547094187 -2139.536849814829 11.146713426853706 -2146.783184909265 11.106653306613225 -2154.0068087328677 11.066593186372744 -2161.2077113158493 11.026533066132263 -2168.385882695281 10.986472945891782 -2175.541312915047 10.946412825651302 -2182.6739920258024 10.906352705410821 -2189.783910084928 10.86629258517034 -2196.8710571564884 10.82623246492986 -2203.935423311192 10.786172344689378 -2210.9769986263514 10.746112224448897 -2217.9957731858435 10.706052104208416 -2224.9917370800736 10.665991983967935 -2231.96488040594 10.625931863727454 -2238.9151932668 10.585871743486972 -2245.842665778164 10.545811623246491 -2252.7472880775113 10.50575150300601 -2259.629050298767 10.465691382765531 -2266.4879425624626 10.42563126252505 -2273.323954995514 10.385571142284569 -2280.1370777312027 10.345511022044088 -2286.9273009091526 10.305450901803606 -2293.6946146753153 10.265390781563125 -2300.4390091819537 10.225330661322644 -2307.1604745876293 10.185270541082163 -2313.859001057194 10.145210420841682 -2320.534578761782 10.105150300601201 -2327.1872451995137 10.06509018036072 -2333.817138037164 10.02503006012024 -2340.424348582387 9.98496993987976 -2347.00886891868 9.944909819639278 -2353.5706910889135 9.904849699398797 -2360.1098070949556 9.864789579158316 -2366.626208897291 9.824729458917835 -2373.119888414632 9.784669338677354 -2379.59083752353 9.744609218436873 -2386.0390480579763 9.704549098196392 -2392.464511809 9.66448897795591 -2398.8672205242597 9.62442885771543 -2405.2471659076296 9.584368737474948 -2411.6043396187792 9.544308617234469 -2417.93873327275 9.504248496993988 -2424.250338439522 9.464188376753507 -2430.539146643575 9.424128256513026 -2436.805149363448 9.384068136272544 -2443.048338031286 9.344008016032063 -2449.268704032386 9.303947895791582 -2455.46623870473 9.263887775551101 -2461.64093333852 9.22382765531062 -2467.792779175697 9.183767535070139 -2473.9217674094593 9.143707414829658 -2480.0278891837715 9.103647294589177 -2486.1111355928656 9.063587174348697 -2492.171497680737 9.023527054108216 -2498.20896644063 8.983466933867735 -2504.223532814517 8.943406813627254 -2510.2151876925723 8.903346693386773 -2516.1839219126327 8.863286573146292 -2522.129726259655 8.82322645290581 -2528.0525914651616 8.78316633266533 -2533.9525082066802 8.743106212424848 -2539.829467107172 8.703046092184367 -2545.6834587344556 8.662985971943886 -2551.5144736006155 8.622925851703407 -2557.3225021614085 8.582865731462926 -2563.107534815654 8.542805611222445 -2568.8695619046202 8.502745490981964 -2574.6085737113963 8.462685370741482 -2580.3245604602585 8.422625250501001 -2586.0175123160216 8.38256513026052 -2591.687419383384 8.342505010020039 -2597.3342717062606 8.302444889779558 -2602.9580592671027 8.262384769539077 -2608.558771986211 8.222324649298596 -2614.1363997210337 8.182264529058115 -2619.6909322654533 8.142204408817635 -2625.2223593490653 8.102144288577154 -2630.7306706364384 8.062084168336673 -2636.2158557263683 8.022024048096192 -2641.677904151115 7.981963927855711 -2647.1168053756282 7.94190380761523 -2652.5325487967607 7.901843687374749 -2657.925123742466 7.8617835671342675 -2663.2945194709832 7.821723446893786 -2668.640725170008 7.781663326653306 -2673.9637299558485 7.741603206412825 -2679.2635228725658 7.701543086172344 -2684.5400928911 7.661482965931863 -2689.7934289083805 7.621422845691382 -2695.023519746421 7.5813627254509015 -2700.2303541513957 7.54130260521042 -2705.4139207927014 7.501242484969939 -2710.5742082620013 7.461182364729458 -2715.711205072251 7.421122244488977 -2720.824899656706 7.381062124248496 -2725.9152803679126 7.341002004008016 -2730.982335476679 7.300941883767535 -2736.026053171025 7.2608817635270535 -2741.046421555114 7.220821643286572 -2746.0434286481654 7.180761523046091 -2751.017062383342 7.14070140280561 -2755.9673106066207 7.10064128256513 -2760.8941610756383 7.060581162324649 -2765.7976014585147 7.020521042084168 -2770.6776193326546 6.980460921843687 -2775.5342021835236 6.9404008016032055 -2780.3673374034 6.900340681362724 -2785.1770122901034 6.860280561122244 -2789.9632140456947 6.820220440881763 -2794.7259297751502 6.780160320641282 -2799.4651464850117 6.740100200400801 -2804.1808510820033 6.70004008016032 -2808.8730303716234 6.659979959919839 -2813.5416710567056 6.619919839679358 -2818.186759735949 6.579859719438877 -2822.8082829024183 6.539799599198396 -2827.4062269420097 6.499739478957915 -2831.9805781318855 6.459679358717434 -2836.531322638874 6.419619238476953 -2841.0584465178335 6.379559118236473 -2845.5619357099827 6.3394989979959915 -2850.0417760411897 6.29943887775551 -2854.4979532202265 6.259378757515029 -2858.930452836981 6.219318637274548 -2863.339260360632 6.179258517034068 -2867.7243611377776 6.139198396793587 -2872.085740390524 6.099138276553106 -2876.4233832145273 6.059078156312625 -2880.737274576992 6.0190180360721435 -2885.0273993146184 5.978957915831662 -2889.293742131504 5.938897795591182 -2893.5362875969927 5.898837675350701 -2897.7550201434724 5.85877755511022 -2901.9499240641176 5.818717434869739 -2906.1209835105788 5.778657314629258 -2910.26818249061 5.738597194388777 -2914.3915048656413 5.698537074148296 -2918.490934348287 5.658476953907815 -2922.566454499789 5.618416833667334 -2926.618048727399 5.578356713426853 -2930.6457002816874 5.538296593186372 -2934.6493922537834 5.498236472945891 -2938.6291075725435 5.458176352705411 -2942.5848290016415 5.4181162324649295 -2946.5165391365817 5.378056112224448 -2950.4242204016314 5.337995991983967 -2954.3078550466657 5.297935871743486 -2958.167425143929 5.257875751503005 -2962.0029125847027 5.217815631262525 -2965.8142990758797 5.177755511022044 -2969.6015661364413 5.137695390781563 -2973.364695093831 5.0976352705410815 -2977.103667080224 5.0575751503006 -2980.8184630286873 5.01751503006012 -2984.5090636692235 4.977454909819639 -2988.1754495246973 4.937394789579158 -2991.817600906638 4.897334669338677 -2995.435497910913 4.857274549098196 -2999.0291204132686 4.817214428857715 -3002.598448064728 4.777154308617234 -3006.1434602868467 4.737094188376753 -3009.6641362668147 4.697034068136272 -3013.1604549523995 4.656973947895791 -3016.6323950467254 4.61691382765531 -3020.079935002878 4.576853707414829 -3023.50305301833 4.5367935871743486 -3026.901727029177 4.496733466933867 -3030.2759347041765 4.456673346693386 -3033.6256534385807 4.416613226452905 -3036.950860347752 4.376553106212424 -3040.2515322605536 4.336492985971943 -3043.527645712502 4.296432865731463 -3046.7791769386704 4.256372745490982 -3050.0061018663323 4.2163126252505005 -3053.208396107331 4.176252505010019 -3056.3860349501592 4.136192384769538 -3059.538993351741 4.096132264529057 -3062.6672459288893 4.056072144288577 -3065.770766949438 4.016012024048096 -3068.8495303230115 3.9759519038076148 -3071.9035095914332 3.9358917835671337 -3074.9326779187368 3.895831663326653 -3077.9370080807676 3.855771543086172 -3080.9164724543493 3.8157114228456908 -3083.8710430059905 3.77565130260521 -3086.800691280106 3.735591182364729 -3089.705388386725 3.695531062124248 -3092.5851049886537 3.655470941883767 -3095.4398112880654 3.615410821643286 -3098.269477012478 3.575350701402805 -3101.074071400087 3.5352905811623243 -3103.853563184408 3.495230460921843 -3106.6079205781925 3.455170340681362 -3109.3371112565665 3.4151102204408814 -3112.0411023393444 3.3750501002004003 -3114.719860372463 3.334989979959919 -3117.3733513084767 3.2949298597194385 -3120.001540486058 3.2548697394789574 -3122.604392608425 3.2148096192384763 -3125.181871720631 3.1747494989979956 -3127.733941185635 3.1346893787575145 -3130.2605636590615 3.094629258517034 -3132.761701062565 3.0545691382765527 -3135.2373145556885 3.0145090180360716 -3137.6873645061128 2.974448897795591 -3140.1118104581683 2.93438877755511 -3142.5106110994843 2.8943286573146287 -3144.883724225627 2.854268537074148 -3147.2311067025703 2.814208416833667 -3149.552714426832 2.774148296593186 -3151.848502283076 2.734088176352705 -3154.1184240989833 2.694028056112224 -3156.3624325971628 2.653967935871743 -3158.5804793438456 2.6139078156312623 -3160.772514694097 2.573847695390781 -3162.938487733234 2.5337875751503 -3165.078346214121 2.4937274549098194 -3167.192036489969 2.4536673346693383 -3169.2795034422275 2.413607214428857 -3171.3406904031267 2.3735470941883765 -3173.3755390723504 2.3334869739478954 -3175.3839894272974 2.2934268537074143 -3177.3659796262973 2.2533667334669336 -3179.321445904103 2.2133066132264525 -3181.2503224588754 2.1732464929859714 -3183.1525413298145 2.1331863727454907 -3185.0280322644658 2.0931262525050096 -3186.8767225746346 2.0530661322645285 -3188.698536979705 2.013006012024048 -3190.493397436011 1.972945891783567 -3192.2612229507567 1.932885771543086 -3194.0019293787764 1.8928256513026052 -3195.715429200238 1.852765531062124 -3197.4016312771373 1.8127054108216432 -3199.0604405861745 1.7726452905811623 -3200.691757925294 1.7325851703406812 -3202.2954795908404 1.6925250501002003 -3203.8714970218916 1.6524649298597194 -3205.4196964079156 1.6124048096192383 -3206.939958255419 1.5723446893787574 -3208.4321569087438 1.5322845691382765 -3209.8961600196076 1.4922244488977956 -3211.331827959366 1.4521643286573145 -3212.739013167362 1.4121042084168336 -3214.1175594280726 1.3720440881763527 -3215.4673010691545 1.3319839679358716 -3216.7880620719543 1.2919238476953907 -3218.0796550856808 1.2518637274549098 -3219.341880336359 1.2118036072144287 -3220.5745244220984 1.1717434869739478 -3221.777358987393 1.131683366733467 -3222.950139271537 1.0916232464929858 -3224.0926025304434 1.051563126252505 -3225.204466338055 1.011503006012024 -3226.285426784458 0.971442885771543 -3227.335156604663 0.931382765531062 -3228.353303297527 0.8913226452905811 -3229.339487332344 0.8512625250501001 -3230.2933005968616 0.8112024048096191 -3231.214305322723 0.7711422845691382 -3232.1020338436997 0.7310821643286572 -3232.9559897137706 0.6910220440881764 -3233.7756509569062 0.6509619238476954 -3234.5604765658722 0.6109018036072144 -3235.30991784901 0.5708416833667335 -3236.0234368864194 0.5307815631262525 -3236.7005352545007 0.4907214428857715 -3237.340797377451 0.4506613226452906 -3237.9439544585052 0.4106012024048096 -3238.509977099474 0.37054108216432863 -3239.039207832505 0.3304809619238477 -3239.532549955435 0.29042084168336674 -3239.9917393995006 0.25036072144288574 -3240.419750968563 0.2103006012024048 -3240.821457352705 0.17024048096192385 -3241.204868151086 0.13018036072144287 -3241.5840701519737 0.09012024048096191 -3241.989400353421 0.05006012024048096 -3242.5361575547254 0.01 +-0.0 16.5 +8.406046275708023 16.466953907815633 +16.797597620189666 16.43390781563126 +25.17464772858279 16.400861723446894 +33.53719030136126 16.367815631262527 +41.88521904432812 16.334769539078156 +50.21872766860876 16.30172344689379 +58.53770989065286 16.268677354709418 +66.84215943222279 16.23563126252505 +75.13207002039528 16.202585170340683 +83.40743538755417 16.169539078156312 +91.66824927138298 16.136492985971945 +99.91450541486613 16.103446893787574 +108.146197566277 16.070400801603206 +116.36331947917888 16.03735470941884 +124.56586491241717 16.004308617234468 +132.75382763011174 15.971262525050099 +140.92720140165557 15.93821643286573 +149.08598000170676 15.90517034068136 +157.23015721018294 15.872124248496993 +165.3597268122572 15.839078156312624 +173.47468267334733 15.806032064128255 +181.57501871569755 15.772985971943886 +189.66072878991827 15.739939879759518 +197.7318066984019 15.706893787575149 +205.7882462487757 15.67384769539078 +213.83004125389695 15.64080160320641 +221.85718553184546 15.607755511022043 +229.86967290591846 15.574709418837674 +237.86749720462112 15.541663326653305 +245.85065226166117 15.508617234468936 +253.8191319159414 15.475571142284567 +261.7729300115518 15.4425250501002 +269.71204039776404 15.40947895791583 +277.63645692902105 15.376432865731461 +285.54617346493126 15.343386773547092 +293.44118387025986 15.310340681362725 +301.32148201492254 15.277294589178355 +309.1870617739749 15.244248496993986 +317.0379170276059 15.211202404809617 +324.8740416611286 15.17815631262525 +332.69542956497355 15.14511022044088 +340.5020746346774 15.112064128256511 +348.293970770876 15.079018036072142 +356.0711118792947 15.045971943887775 +363.8334918707409 15.012925851703406 +371.5811046610924 14.979879759519036 +379.31394417128996 14.946833667334667 +387.03200432732666 14.9137875751503 +394.7352790602404 14.88074148296593 +402.42376230610137 14.847695390781562 +410.09744800600424 14.814649298597192 +417.7563301060574 14.781603206412823 +425.4004025573727 14.748557114228456 +433.0296593160565 14.715511022044087 +440.64409434319725 14.682464929859718 +448.24370160485626 14.649418837675348 +455.82847507205634 14.616372745490981 +463.39840875669114 14.583326653306612 +470.9534967481723 14.550280561122243 +478.49373310294425 14.517234468937874 +486.019111807819 14.484188376753506 +493.529626854532 14.451142284569137 +501.02527223972817 14.418096192384768 +508.5060419649517 14.385050100200399 +515.9719300366336 14.352004008016031 +523.4229304660813 14.318957915831662 +530.8590372694642 14.285911823647293 +538.280244467803 14.252865731462924 +545.6865460869565 14.219819639278557 +553.0779361576107 14.186773547094187 +560.454408715264 14.153727454909818 +567.8159578002154 14.120681362725449 +575.1625774575518 14.08763527054108 +582.4942617371341 14.054589178356713 +589.8110046935857 14.021543086172343 +597.1128003862765 13.988496993987974 +604.3996428793113 13.955450901803605 +611.6715262415149 13.922404809619238 +618.9284445464206 13.889358717434868 +626.1703918722528 13.8563126252505 +633.3973623019155 13.82326653306613 +640.6093499229763 13.790220440881763 +647.8063488276546 13.757174348697394 +654.9883531128036 13.724128256513024 +662.155356879898 13.691082164328655 +669.307354235018 13.658036072144288 +676.444339288836 13.624989979959919 +683.5663061565989 13.59194388777555 +690.6732489581148 13.55889779559118 +697.7651618177364 13.525851703406813 +704.8420388643473 13.492805611222444 +711.9038742313438 13.459759519038075 +718.9506621426533 13.426713426853706 +725.9823968275381 13.393667334669336 +732.9990724316182 13.360621242484969 +740.0006831020465 13.3275751503006 +746.9872229904272 13.29452905811623 +753.9586862528006 13.261482965931862 +760.9150670496258 13.228436873747494 +767.8563595457656 13.195390781563125 +774.7825579104671 13.162344689378756 +781.693656317346 13.129298597194387 +788.5896489443693 13.09625250501002 +795.4705299738387 13.06320641282565 +802.3362935923715 13.030160320641281 +809.1869339908841 12.997114228456912 +816.022445364574 12.964068136272545 +822.8428219129031 12.931022044088175 +829.6480578395776 12.897975951903806 +836.4381473525316 12.864929859719437 +843.2130846639077 12.83188376753507 +849.9728639900408 12.7988376753507 +856.7174795514369 12.765791583166331 +863.4469255727564 12.732745490981962 +870.1611962827949 12.699699398797593 +876.860285914464 12.666653306613226 +883.5441887047743 12.633607214428856 +890.2128988948136 12.600561122244487 +896.8664107297298 12.567515030060118 +903.5047184587105 12.53446893787575 +910.1278163349657 12.501422845691382 +916.7356986157059 12.468376753507012 +923.3283595621243 12.435330661322643 +929.9057934583401 12.402284569138276 +936.4679946395635 12.369238476953907 +943.0149574237822 12.336192384769538 +949.546676083572 12.303146292585168 +956.0631448954147 12.270100200400801 +962.5643581396795 12.237054108216432 +969.0503101006015 12.204008016032063 +975.5209950662623 12.170961923847694 +981.9764073285701 12.137915831663326 +988.4165411832399 12.104869739478957 +994.8413909297722 12.071823647294588 +1001.2509508714334 12.038777555110219 +1007.6452153152351 12.005731462925851 +1014.0241785719155 11.972685370741482 +1020.3878349559164 11.939639278557113 +1026.7361787853647 11.906593186372744 +1033.069204382051 11.873547094188375 +1039.3869060714103 11.840501002004007 +1045.6892781825009 11.807454909819638 +1051.976315047984 11.774408817635269 +1058.2480110041033 11.7413627254509 +1064.5043603906647 11.708316633266532 +1070.7453575510172 11.675270541082163 +1076.97099683203 11.642224448897794 +1083.1812725840748 11.609178356713425 +1089.3761791610038 11.576132264529058 +1095.5557109201313 11.543086172344688 +1101.7198622222118 11.51004008016032 +1107.8686274314211 11.47699398797595 +1114.0020009179275 11.443947895791583 +1120.1199770948845 11.410901803607214 +1126.2225503739382 11.377855711422844 +1132.3097151282118 11.344809619238475 +1138.3814657341777 11.311763527054108 +1144.43779657164 11.278717434869739 +1150.4787020237138 11.24567134268537 +1156.5041764768068 11.212625250501 +1162.5142143206008 11.179579158316631 +1168.5088099480326 11.146533066132264 +1174.4879577552774 11.113486973947895 +1180.451652141728 11.080440881763526 +1186.3998875099778 11.047394789579156 +1192.3326582658044 11.014348697394789 +1198.2499588181515 10.98130260521042 +1204.151783579111 10.94825651302605 +1210.0381269639067 10.915210420841682 +1215.9089833908783 10.882164328657314 +1221.7643472814655 10.849118236472945 +1227.6042130601904 10.816072144288576 +1233.4285751546442 10.783026052104207 +1239.2374279954706 10.74997995991984 +1245.0307660163533 10.71693386773547 +1250.808583653999 10.683887775551101 +1256.570875348126 10.650841683366732 +1262.3176355414496 10.617795591182364 +1268.048858679671 10.584749498997995 +1273.7645392133095 10.551703406813626 +1279.4646716091677 10.518657314629257 +1285.1492503327906 10.485611222444888 +1290.8182698369958 10.45256513026052 +1296.4717245775637 10.419519038076151 +1302.109609013228 10.386472945891782 +1307.731917605668 10.353426853707413 +1313.3386448195004 10.320380761523046 +1318.9297851222732 10.287334669338676 +1324.5053329844588 10.254288577154307 +1330.0652828794498 10.221242484969938 +1335.6096292835537 10.18819639278557 +1341.1383666759907 10.155150300601202 +1346.65148953889 10.122104208416832 +1352.1489923572894 10.089058116232463 +1357.6309361544413 10.056012024048096 +1363.0974158721303 10.022965931863727 +1368.5484604553164 9.989919839679358 +1373.9840654610061 9.956873747494988 +1379.4042264274146 9.923827655310621 +1384.8089388738244 9.890781563126252 +1390.1981983004378 9.857735470941883 +1395.5720001882319 9.824689378757514 +1400.9303399988105 9.791643286573144 +1406.2732131742534 9.758597194388777 +1411.6006151369666 9.725551102204408 +1416.9125412895264 9.692505010020039 +1422.2089870145269 9.65945891783567 +1427.4899476744213 9.626412825651302 +1432.7554186113655 9.593366733466933 +1438.0053951470554 9.560320641282564 +1443.2398725825662 9.527274549098195 +1448.4588461981875 9.494228456913827 +1453.6623112532582 9.461182364729458 +1458.8502629859972 9.428136272545089 +1464.022696613335 9.39509018036072 +1469.17960733074 9.362044088176352 +1474.3209903120467 9.328997995991983 +1479.4468407092775 9.295951903807614 +1484.5571536524658 9.262905811623245 +1489.6519242494755 9.229859719438878 +1494.7311475858196 9.196813627254508 +1499.7948187244733 9.16376753507014 +1504.8429327056892 9.13072144288577 +1509.8754845468072 9.097675350701401 +1514.892469242063 9.064629258517034 +1519.893881762396 9.031583166332664 +1524.8797170552505 8.998537074148295 +1529.8499700443792 8.965490981963926 +1534.8046356296413 8.932444889779559 +1539.7437086868 8.89939879759519 +1544.6671840673143 8.86635270541082 +1549.5750565981332 8.833306613226451 +1554.4673210814817 8.800260521042084 +1559.3439722946496 8.767214428857715 +1564.2050049897723 8.734168336673346 +1569.050413893613 8.701122244488976 +1573.8801937073401 8.668076152304609 +1578.6943391063026 8.63503006012024 +1583.4928447398006 8.60198396793587 +1588.2757052308561 8.568937875751502 +1593.0429151759784 8.535891783567134 +1597.7944691449272 8.502845691382765 +1602.5303616804727 8.469799599198396 +1607.2505872981512 8.436753507014027 +1611.9551404860206 8.403707414829658 +1616.644015704409 8.37066132264529 +1621.3172073856629 8.337615230460921 +1625.9747099338895 8.304569138276552 +1630.6165177246974 8.271523046092183 +1635.242625104933 8.238476953907815 +1639.8530263924147 8.205430861723446 +1644.4477158756597 8.172384769539077 +1649.026687813612 8.139338677354708 +1653.5899364353622 8.10629258517034 +1658.1374559398685 8.073246492985971 +1662.669240495667 8.040200400801602 +1667.1852842405845 8.007154308617235 +1671.6855812814438 7.974108216432865 +1676.1701256937645 7.9410621242484964 +1680.638911521463 7.908016032064127 +1685.091932776543 7.874969939879759 +1689.529183438787 7.84192384769539 +1693.9506574554389 7.808877755511022 +1698.3563487408856 7.775831663326652 +1702.7462511763304 7.742785571142283 +1707.1203586094648 7.709739478957915 +1711.4786648541349 7.676693386773546 +1715.8211636900003 7.643647294589178 +1720.1478488621915 7.610601202404808 +1724.4587140809601 7.57755511022044 +1728.7537530213242 7.544509018036071 +1733.0329593227082 7.511462925851703 +1737.2963265885785 7.478416833667334 +1741.5438483860719 7.445370741482965 +1745.7755182456197 7.412324649298596 +1749.9913296605646 7.379278557114228 +1754.191276086774 7.346232464929859 +1758.375350942244 7.31318637274549 +1762.5435476067014 7.280140280561121 +1766.6958594211953 7.247094188376753 +1770.8322796876855 7.214048096192384 +1774.952801668622 7.181002004008016 +1779.05741858652 7.147955911823646 +1783.1461236235266 7.114909819639278 +1787.2189099209806 7.081863727454909 +1791.2757705789666 7.04881763527054 +1795.3166986558592 7.015771543086172 +1799.3416871678637 6.982725450901802 +1803.3507290885448 6.949679358717434 +1807.3438173483507 6.916633266533065 +1811.3209448341286 6.883587174348697 +1815.2821043886313 6.8505410821643276 +1819.2272888100158 6.817494989979959 +1823.1564908513349 6.78444889779559 +1827.0697032200173 6.751402805611222 +1830.966918577342 6.718356713426853 +1834.8481295379013 6.685310621242484 +1838.7133286690555 6.652264529058115 +1842.5625084903781 6.619218436873747 +1846.3956614730916 6.586172344689378 +1850.2127800394926 6.55312625250501 +1854.0138565623672 6.52008016032064 +1857.7988833643958 6.487034068136272 +1861.5678527175482 6.453987975951903 +1865.3207568424662 6.420941883767535 +1869.0575879078363 6.387895791583166 +1872.77833802975 6.354849699398796 +1876.4829992710536 6.321803607214428 +1880.1715636406848 6.288757515030059 +1883.8440230929975 6.255711422845691 +1887.5003695270746 6.2226653306613215 +1891.1405947860258 6.189619238476953 +1894.7646906562752 6.156573146292584 +1898.3726488668326 6.123527054108216 +1901.9644610885523 6.090480961923847 +1905.5401189333772 6.057434869739478 +1909.0996139535682 6.024388777555109 +1912.642937640918 5.991342685370741 +1916.1700814259511 5.958296593186372 +1919.6810366771058 5.925250501002004 +1923.1757946999014 5.892204408817634 +1926.6543467360877 5.859158316633266 +1930.1166839627788 5.826112224448897 +1933.5627974915667 5.793066132264529 +1936.9926783676196 5.7600200400801596 +1940.4063175687593 5.726973947895791 +1943.8037060045206 5.693927855711422 +1947.1848345151907 5.660881763527054 +1950.5496938708284 5.627835671342685 +1953.898274770262 5.5947895791583155 +1957.230567840067 5.561743486973947 +1960.5465636335193 5.528697394789578 +1963.846252629529 5.49565130260521 +1967.1296252315478 5.462605210420841 +1970.3966717664537 5.429559118236472 +1973.647382483411 5.396513026052103 +1976.8817475527053 5.363466933867735 +1980.0997570645495 5.330420841683366 +1983.3014010278666 5.297374749498998 +1986.4866693690412 5.264328657314628 +1989.655551930644 5.23128256513026 +1992.808038470126 5.198236472945891 +1995.9441186584822 5.165190380761523 +1999.0637820788843 5.1321442885771535 +2002.1670182252783 5.099098196392785 +2005.2538165009519 5.066052104208416 +2008.3241662170644 5.033006012024048 +2011.3780565911425 4.999959919839679 +2014.4154767455366 4.96691382765531 +2017.4364157058421 4.933867735470941 +2020.440862399278 4.900821643286572 +2023.428805653026 4.867775551102204 +2026.4002341925273 4.834729458917835 +2029.3551366397337 4.801683366733466 +2032.2935015113171 4.768637274549097 +2035.2153172168275 4.735591182364729 +2038.1205720568057 4.70254509018036 +2041.0092542208438 4.6694989979959916 +2043.8813517855945 4.636452905811622 +2046.7368527127257 4.603406813627254 +2049.5757448468194 4.570360721442885 +2052.3980159132116 4.537314629258517 +2055.203653515774 4.5042685370741475 +2057.992645134629 4.471222444889779 +2060.7649781238056 4.43817635270541 +2063.520639708821 4.405130260521042 +2066.2596169841977 4.372084168336673 +2068.9818969109056 4.339038076152304 +2071.6874663137273 4.305991983967935 +2074.3763118785464 4.272945891783567 +2077.0484201495524 4.239899799599198 +2079.703777526361 4.206853707414829 +2082.3423702610476 4.17380761523046 +2084.964184455083 4.140761523046091 +2087.5692060561787 4.107715430861723 +2090.1574208550287 4.074669338677354 +2092.7288144819468 4.0416232464929855 +2095.2833724033944 4.008577154308617 +2097.8210799183958 3.975531062124248 +2100.341922154833 3.9424849699398794 +2102.845884065617 3.9094388777555107 +2105.33295042473 3.8763927855711415 +2107.803105823127 3.843346693386773 +2110.2563346645047 3.810300601202404 +2112.6926211609107 3.7772545090180354 +2115.111949328206 3.7442084168336667 +2117.5143029813594 3.711162324649298 +2119.8996657295747 3.6781162324649292 +2122.2680209712344 3.6450701402805605 +2124.6193518886594 3.612024048096192 +2126.9536414426702 3.578977955911823 +2129.2708723669416 3.5459318637274544 +2131.5710271621383 3.5128857715430857 +2133.854088089825 3.479839679358717 +2136.120037166133 3.4467935871743483 +2138.368856155175 3.4137474949899795 +2140.6005265621943 3.380701402805611 +2142.815029626433 3.347655310621242 +2145.012346313704 3.3146092184368734 +2147.19245730865 3.2815631262525047 +2149.355343006677 3.248517034068136 +2151.500983505536 3.2154709418837673 +2153.62935859654 3.182424849699398 +2155.7404477553896 3.1493787575150294 +2157.834230132592 3.1163326653306607 +2159.9106845434417 3.083286573146292 +2161.969789457541 3.0502404809619232 +2164.011522987832 3.0171943887775545 +2166.03586287911 2.984148296593186 +2168.042786495988 2.951102204408817 +2170.032270810274 2.9180561122244484 +2172.004292387731 2.8850100200400797 +2173.9588273741706 2.851963927855711 +2175.895851480848 2.8189178356713422 +2177.8153399691037 2.7858717434869735 +2179.7172676342084 2.752825651302605 +2181.6016087883518 2.719779559118236 +2183.4683372427235 2.6867334669338674 +2185.317426288618 2.6536873747494987 +2187.148848677502 2.62064128256513 +2188.9625765999613 2.5875951903807612 +2190.7585816634605 2.5545490981963925 +2192.536834868817 2.521503006012024 +2194.2973065853053 2.488456913827655 +2196.039966524281 2.455410821643286 +2197.764783711226 2.4223647294589172 +2199.471726456078 2.3893186372745485 +2201.160762321733 2.35627254509018 +2202.8318580905557 2.323226452905811 +2204.484979728765 2.2901803607214424 +2206.1200923485058 2.2571342685370737 +2207.737160167428 2.224088176352705 +2209.3361464655745 2.1910420841683362 +2210.9170135393438 2.1579959919839675 +2212.479722652293 2.124949899799599 +2214.024233982508 2.09190380761523 +2215.550506566251 2.0588577154308614 +2217.0584982375563 2.0258116232464927 +2218.548165563428 1.9927655310621242 +2220.019463774245 1.9597194388777555 +2221.4723466889436 1.9266733466933865 +2222.9067666345086 1.8936272545090178 +2224.322674359253 1.860581162324649 +2225.7200189393116 1.8275350701402804 +2227.0987476777163 1.7944889779559117 +2228.4588059953644 1.761442885771543 +2229.800137313103 1.7283967935871742 +2231.1226829240954 1.6953507014028055 +2232.4263818555323 1.6623046092184368 +2233.711170718666 1.629258517034068 +2234.9769835460424 1.5962124248496992 +2236.2237516146974 1.5631663326653304 +2237.4514032539546 1.5301202404809617 +2238.659863636356 1.497074148296593 +2239.8490545501013 1.4640280561122243 +2241.0188941512515 1.4309819639278556 +2242.169296693807 1.3979358717434869 +2243.3001722356366 1.3648897795591182 +2244.411426318109 1.3318436873747495 +2245.502959617184 1.2987975951903807 +2246.5746675636447 1.265751503006012 +2247.6264399301567 1.232705410821643 +2248.658160382909 1.1996593186372744 +2249.6697059958124 1.1666132264529057 +2250.6609467256144 1.133567134268537 +2251.6317448469495 1.1005210420841682 +2252.581954347367 1.0674749498997995 +2253.5114202839122 1.0344288577154308 +2254.419978105077 1.001382765531062 +2255.307452945161 0.9683366733466933 +2256.1736589026286 0.9352905811623246 +2257.0183983204206 0.9022444889779558 +2257.84146109503 0.8691983967935871 +2258.6426240533374 0.8361523046092184 +2259.421650452904 0.8031062124248496 +2260.17828968417 0.7700601202404809 +2260.912277283807 0.7370140280561122 +2261.6233354099572 0.7039679358717434 +2262.311173985597 0.6709218436873747 +2262.9754927899785 0.637875751503006 +2263.615984875288 0.6048296593186372 +2264.232341812548 0.5717835671342685 +2264.824261434824 0.5387374749498998 +2265.3914589556684 0.505691382765531 +2265.9336826066656 0.4726452905811623 +2266.450735273437 0.43959919839679357 +2266.9425040355172 0.4065531062124248 +2267.4090000731435 0.3735070140280561 +2267.850412184595 0.34046092184368737 +2268.267178376049 0.3074148296593186 +2268.660082153422 0.2743687374749499 +2269.0303844912305 0.24132264529058114 +2269.3800120148485 0.2082765531062124 +2269.7118446943537 0.1752304609218437 +2270.030205654177 0.14218436873747495 +2270.3418319261446 0.10913827655310619 +2270.6582520480956 0.07609218436873746 +2271.0039656545337 0.04304609218436874 +2271.462498726208 0.01 diff --git a/ELoss/PCEnergyAnalysis.py b/ELoss/PCEnergyAnalysis.py index 9af6182..ce708ff 100644 --- a/ELoss/PCEnergyAnalysis.py +++ b/ELoss/PCEnergyAnalysis.py @@ -298,7 +298,7 @@ def calculate_distance_tree2(vz, theta, z_max=34.86): def load_tree_arrays(tree, treename, max_events=None): - branches = ["Tb", "thetab", "sx3Z", "vX", "vY", "vZ"] + branches = ["Tb", "thetab", "sx3Z", "vX", "vY", "vZ", "sx3ID", "aID", "cID", "aDist", "cDist"] if treename == 'tree1': branches.extend(["sx3X", "sx3Y"]) return tree.arrays(branches, library="np", entry_stop=max_events) @@ -307,6 +307,8 @@ def load_tree_arrays(tree, treename, max_events=None): def prepare_tree_data(tree, treename, particle, max_events=None, z_max=34.86): data = load_tree_arrays(tree, treename, max_events) + mask = data["thetab"] >= 0 + data = {key: value[mask] for key, value in data.items()} Ei = data["Tb"] theta = np.radians(data["thetab"]) vX = data["vX"] @@ -339,10 +341,38 @@ def prepare_tree_data(tree, treename, particle, max_events=None, z_max=34.86): sin_theta = np.sin(theta) sin_theta = np.where(sin_theta != 0, sin_theta, 1e-10) radii = np.array([3.7, 4.2]) - dA = radii[0] / sin_theta - dC = radii[1] / sin_theta + dA = (radii[0] - np.sqrt((vX/10)**2 + (vY/10)**2))/ sin_theta + dC = (radii[1] - np.sqrt((vX/10)**2 + (vY/10)**2))/ sin_theta + + # Filter out unphysical distances (negative or unreasonably small) + # These typically occur at large angles where trajectory doesn't properly intersect proportional counters + sx3ID = data["sx3ID"] + aID = data["aID"] + cID = data["cID"] + + # Keep only events with valid PW wire assignments and positive distances + # sx3ID >= 0 means SX3 was hit, aID/cID valid means tracks found + # Handle both 1D and 2D array structures from ROOT + if aID.ndim == 2: + aID_valid = aID[:, 0] >= 0 + cID_valid = cID[:, 0] >= 0 + else: + aID_valid = aID >= 0 + cID_valid = cID >= 0 + + distance_mask = (dA > 0.1) & (dC > 0.1) & (sx3ID >= 0) & aID_valid & cID_valid + + Ei = Ei[distance_mask] + theta = theta[distance_mask] + dA = dA[distance_mask] + dC = dC[distance_mask] + dsx3 = dsx3[distance_mask] + vX = vX[distance_mask] + vY = vY[distance_mask] + vZ = vZ[distance_mask] print(f"Computing energies for {particle} ({treename})...") + print(f" Retained {np.sum(distance_mask)} / {len(distance_mask)} events after distance filter") EA = energy_loss(particle, Ei, dA) EC = energy_loss(particle, Ei, dC) @@ -359,7 +389,10 @@ def prepare_tree_data(tree, treename, particle, max_events=None, z_max=34.86): "EC": EC, "Esx3": Esx3, "Elost": Elost, - "Eprop": Eprop + "Eprop": Eprop, + "dA": dA, + "dC": dC, + "thetab": data["thetab"] } @@ -377,13 +410,60 @@ def process_file(filename, treename, particle=None, max_events=None): print(f"File {filename} particle {particle}, tree {treename}") return prepare_tree_data(tree, treename, particle, max_events=max_events) + +def power_fit_and_plot(x, y, label, color=None): + + x = np.array(x) + y = np.array(y) + + mask = ( + np.isfinite(x) & + np.isfinite(y) & + (x > 0) & + (y > 0) + ) + + x = x[mask] + y = y[mask] + + logx = np.log(x) + logy = np.log(y) + + b, loga = np.polyfit(logx, logy, 1) + + a = np.exp(loga) + + y_pred = a * x**b + + ss_res = np.sum((y - y_pred)**2) + ss_tot = np.sum((y - np.mean(y))**2) + + r2 = 1 - (ss_res / ss_tot) + + x_fit = np.linspace(np.min(x), np.max(x), 1000) + y_fit = a * x_fit**b + + plt.plot( + x_fit, + y_fit, + linewidth=3, + color=color, + label=f'{label} fit ($R^2$={r2:.4f})' + ) + + print(f"\n{label} power-law fit:") + print(f"y = {a:.6f} * x^{b:.6f}") + print(f"R^2 = {r2:.6f}") + + return a, b, r2 + class MyInteractiveApp(cmd.Cmd): def __init__(self): super().__init__() # Initial value set when the script starts self.buckets = 500 self.T = 293.15 - self.P = 400 + self.P = 379 self.temp_particle = [0, 0.0, 0.0, ""] self.rootFile = "SimAnasen1.root" self.file = None @@ -821,7 +901,7 @@ class MyInteractiveApp(cmd.Cmd): global EA EA = energy_loss(particle, Ei, dA) global EC - EC = energy_loss(particle, Ei, dC) + EC = energy_loss(particle, Ei, ClassSX3dC) global Esx3 Esx3 = energy_loss(particle, Ei, dsx3) global Eprop @@ -839,7 +919,7 @@ class MyInteractiveApp(cmd.Cmd): print(f"sx3 average energy: {np.mean(Esx3):.3f} MeV") - print(f"Average total energy loss to sx3: {np.mean(Elost):.3f} MeV") + print(f"Average total energy loClassSX3ss to sx3: {np.mean(Elost):.3f} MeV") print(f"Maximum total energy loss to sx3: {np.max(Elost):.3f} MeV") @@ -930,13 +1010,17 @@ class MyInteractiveApp(cmd.Cmd): data = prepare_tree_data(self.tree, treename, particle, max_events=max_events) - Ei = data["Ei"] - sx3Z = data["sx3Z"] - EA = data["EA"] - EC = data["EC"] - Esx3 = data["Esx3"] - Elost = data["Elost"] - Eprop = data["Eprop"] + mask = data["thetab"] >= 0 + + Ei = data["Ei"][mask] + sx3Z = data["sx3Z"][mask] + EA = data["EA"][mask] + EC = data["EC"][mask] + Esx3 = data["Esx3"][mask] + Elost = data["Elost"][mask] + Eprop = data["Eprop"][mask] + dA = data["dA"][mask] + dC = data["dC"][mask] update_plot_data(f"{particle}_{treename}_Ei", Ei) update_plot_data(f"{particle}_{treename}_sx3Z", sx3Z) @@ -951,48 +1035,6 @@ class MyInteractiveApp(cmd.Cmd): print(f"Saving plots to folder: {base} ({treename})") - branch_names = [] - for key in self.tree.keys(): - if isinstance(key, bytes): - branch_names.append(key.decode("ascii")) - elif hasattr(key, "name"): - branch_names.append(key.name) - else: - branch_names.append(str(key)) - branch_names = list(dict.fromkeys(branch_names)) - - if branch_names: - print(f"Creating histograms for {len(branch_names)} branches...") - all_branches = self.tree.arrays(branch_names, library="np", entry_stop=max_events) - - for branch in branch_names: - values = all_branches[branch] - try: - values = np.asarray(values, dtype=float) - except Exception: - print(f"Skipping non-numeric branch: {branch}") - continue - if values.ndim != 1: - print(f"Skipping non-scalar branch: {branch}") - continue - values = values[~np.isnan(values)] - if values.size == 0: - print(f"Skipping empty branch: {branch}") - continue - - plt.figure(figsize=(7,5)) - plt.hist(values, bins=100) - plt.xlabel(branch) - plt.ylabel("Counts") - plt.title(f"{particle} ({treename}) {branch} distribution") - plt.grid(True) - plt.tight_layout() - safe_name = re.sub(r"[^0-9A-Za-z_-]", "_", branch) - plt.savefig(f"{base}/{safe_name}_hist.png", dpi=300) - plt.close() - else: - print("No branches found to histogram.") - plt.figure(figsize=(7,5)) plt.hist(Elost, bins=200) plt.xlabel("Energy Loss (MeV)") @@ -1027,6 +1069,18 @@ class MyInteractiveApp(cmd.Cmd): plt.show() except ValueError: print("Value error") + + plt.figure(figsize=(7,5)) + plt.hist(dA, bins=100, label='dA', histtype='step') + plt.hist(dC, bins=100, label='dC', histtype='step') + plt.xlabel("Distance") + plt.ylabel("Counts") + plt.title(f"{particle} ({treename}) Anode/ Cathode distance") + plt.legend(loc='upper right') + plt.grid(True) + plt.tight_layout() + plt.savefig(f"{base}/d_hist.png", dpi=300) + plt.show() try: plt.figure(figsize=(7,6)) @@ -1075,13 +1129,84 @@ class MyInteractiveApp(cmd.Cmd): plt.xlabel("SX3 Energy (MeV)") plt.title(f"{particle} ({treename}) Energy Propagation Difference vs SX3 Energy") plt.colorbar(label="Counts") - plt.xlim(0,30) - plt.ylim(0,0.45) + #plt.xlim(0,30) + #plt.ylim(0,0.45) plt.tight_layout() plt.savefig(f"{base}/Eprop_vs_Esx3.png", dpi=300) plt.show() except ValueError: print("Value error") + + try: + mask1 = ~np.isnan(Ei) & (Esx3 > 0) + plt.figure(figsize=(7,6)) + plt.hist2d(data["thetab"], Ei, bins=200) + plt.xlabel("thetab") + plt.ylabel("Event Energy (MeV)") + plt.title(f"{particle} ({treename}) Energy vs Theta") + plt.colorbar(label="Counts") + #plt.xlim(0,30) + #plt.ylim(0,0.45) + plt.tight_layout() + plt.savefig(f"{base}/E_vs_theta.png", dpi=300) + plt.show() + except ValueError: + print("Value error") + + + branch_names = [] + for key in self.tree.keys(): + if isinstance(key, bytes): + branch_names.append(key.decode("ascii")) + elif hasattr(key, "name"): + branch_names.append(key.name) + else: + branch_names.append(str(key)) + branch_names = list(dict.fromkeys(branch_names)) + + if branch_names: + print(f"Creating histograms for {len(branch_names)} branches...") + all_branches = self.tree.arrays(branch_names, library="np", entry_stop=max_events) + + # Keep only events with thetab >= 45 + #thetab_mask = all_branches["thetab"] >= 0 + thetab_mask = mask + + for branch in branch_names: + values = all_branches[branch] + + try: + values = np.asarray(values, dtype=float) + except Exception: + print(f"Skipping non-numeric branch: {branch}") + continue + + if values.ndim != 1: + print(f"Skipping non-scalar branch: {branch}") + continue + + # Apply the thetab cut + values = values[thetab_mask] + + values = values[~np.isnan(values)] + + if values.size == 0: + print(f"Skipping empty branch: {branch}") + continue + + plt.figure(figsize=(7,5)) + plt.hist(values, bins=100) + plt.xlabel(branch) + plt.ylabel("Counts") + plt.title(f"{particle} ({treename}) {branch} distribution") + plt.grid(True) + plt.tight_layout() + + safe_name = re.sub(r"[^0-9A-Za-z_-]", "_", branch) + plt.savefig(f"{base}/{safe_name}_hist.png", dpi=300) + plt.close() + else: + print("No branches found to histogram.") print(f"Plotting complete ({treename}).") @@ -1302,10 +1427,40 @@ class MyInteractiveApp(cmd.Cmd): data2["Esx3"][mask2] ]) combined_Eprop = np.concatenate([ - data1["Eprop"][mask1], - data2["Eprop"][mask2] + data1["Eprop"][mask1] * 3, + data2["Eprop"][mask2] * 2.7 ]) + combined_Esx3 = ( + combined_Esx3 + + np.random.normal(0,0.08,len(combined_Esx3)) + ) + + if True: + sigma = 0.02 * np.sqrt(np.maximum(combined_Eprop, 0)) + + combined_Eprop += np.random.normal( + 0, + sigma, + len(combined_Eprop) + ) + + combined_Eprop += np.random.normal( + 0, + 0.02*np.sqrt(combined_Eprop), + len(combined_Eprop) + ) + + mask = ( + np.isfinite(combined_Esx3) + & np.isfinite(combined_Eprop) + ) + + combined_Esx3 = combined_Esx3[mask] + combined_Eprop = combined_Eprop[mask]# * 3 + + #combined_Eprop = combined_Eprop * .686 + plt.figure(figsize=(8,6)) plt.hist2d( combined_Esx3, @@ -1314,16 +1469,14 @@ class MyInteractiveApp(cmd.Cmd): ) plt.xlabel("SX3 Energy (MeV)") plt.ylabel("PCEnergy") - plt.xlim(0,35) - plt.ylim(0,0.6) + plt.xlim(0,30) + plt.ylim(0,0.45) plt.colorbar(label="Counts") plt.tight_layout() plt.savefig(f"{outdir}/Eprop_vs_Esx3.png", dpi=300) plt.show() - - - plt.figure(figsize=(12,6), facecolor='white') + plt.figure(figsize=(11,6), facecolor='white') plt.hist2d( combined_Esx3, combined_Eprop, @@ -1334,8 +1487,8 @@ class MyInteractiveApp(cmd.Cmd): ) plt.xlabel("SX3 Energy (MeV)") plt.ylabel("PCEnergy") - plt.xlim(0,35) - plt.ylim(0,0.6) + plt.xlim(0,30) + plt.ylim(0,0.45) cbar = plt.colorbar() cbar.set_label("Counts") plt.minorticks_on() @@ -1357,63 +1510,17 @@ class MyInteractiveApp(cmd.Cmd): cmap='viridis' ) - def power_fit_and_plot(x, y, label, color=None): - - x = np.array(x) - y = np.array(y) - - mask = ( - np.isfinite(x) & - np.isfinite(y) & - (x > 0) & - (y > 0) - ) - - x = x[mask] - y = y[mask] - - logx = np.log(x) - logy = np.log(y) - - b, loga = np.polyfit(logx, logy, 1) - - a = np.exp(loga) - - y_pred = a * x**b - - ss_res = np.sum((y - y_pred)**2) - ss_tot = np.sum((y - np.mean(y))**2) - - r2 = 1 - (ss_res / ss_tot) - - x_fit = np.linspace(np.min(x), np.max(x), 1000) - y_fit = a * x_fit**b - - plt.plot( - x_fit, - y_fit, - linewidth=3, - color=color, - label=f'{label} fit ($R^2$={r2:.4f})' - ) - - print(f"\n{label} power-law fit:") - print(f"y = {a:.6f} * x^{b:.6f}") - print(f"R^2 = {r2:.6f}") - - return a, b, r2 - - + mask = data1["Esx3"] > 0 power_fit_and_plot( - data1["Esx3"]["Esx3" > 0], - data1["Eprop"]["Esx3" > 0], + data1["Esx3"][mask], + data1["Eprop"][mask] * .686, label=data1["particle"], color='red' ) - + mask2 = data2["Esx3"] > 0 power_fit_and_plot( - data2["Esx3"], - data2["Eprop"], + data2["Esx3"][mask2], + data2["Eprop"][mask2] * .686, label=data2["particle"], color='cyan' )