From 3064373b7607026d5abf46cf94bc88b6676bbae7 Mon Sep 17 00:00:00 2001 From: "Antonello, Dr. Massimiliano" <massimiliano.antonello@uni-hamburg.de> Date: Fri, 16 May 2025 11:28:40 +0200 Subject: [PATCH] Added gitignore and requirements. Added also Main_example_2 to understand what I did... Also for Lightsitastic line! --- .gitignore | 32 ++++++ Example.png | Bin 25881 -> 0 bytes LightSimtastic.py | 1 + Main_example_2.py | 130 ++++++++++++++++++++++ README.md | 18 +++ __pycache__/AdditionalPDFs.cpython-36.pyc | Bin 4322 -> 0 bytes __pycache__/LightSimtastic.cpython-36.pyc | Bin 19861 -> 0 bytes __pycache__/SiPMSimulation.cpython-36.pyc | Bin 19851 -> 0 bytes requirements.txt | 5 + 9 files changed, 186 insertions(+) create mode 100644 .gitignore delete mode 100644 Example.png create mode 100644 Main_example_2.py delete mode 100644 __pycache__/AdditionalPDFs.cpython-36.pyc delete mode 100644 __pycache__/LightSimtastic.cpython-36.pyc delete mode 100644 __pycache__/SiPMSimulation.cpython-36.pyc create mode 100644 requirements.txt diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ec38f90 --- /dev/null +++ b/.gitignore @@ -0,0 +1,32 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# Caches and logs +*.log + +# Jupyter Notebook checkpoints +.ipynb_checkpoints + +# Matplotlib plot images +*.png + +# Data files +*.csv +*.tsv +*.dat + +# OS files +.DS_Store +Thumbs.db + +# Virtual environment +.env/ +.venv/ +env/ +venv/ + +# IDEs +.idea/ +.vscode/ diff --git a/Example.png b/Example.png deleted file mode 100644 index f6e165d7f9a83aeb4e4875c1243cb9c9d6fc1f98..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25881 zcmeAS@N?(olHy`uVBq!ia0y~yVB=$8V3FcrV_;yI{k55gfq}uY#5JNMI6tkVJh3R1 z!8fs_ASb^hCo@T*EVZaOGe6H*&sfh;M<Ju6q@dVJUq2VFKrg>2UH|UgKc5*G7&r?& zB8wRq_!B{xafSWzOa_LOHcuDFkcv5P?$#E>KAkK7;XZ4k=d=mk2L*UGZM`YJA>oj> z60>vr2Gdv{4wXWiDJ(A@m>sje+GgULuFa*kd0o2jd%uG%8RbdKA7q}*Gd|NGt>ojg zxsuU&JCoQPw?iv8&-h^~k-tH(t~2+F{fhZhbN0q~et$Ku`u%g`#Sdlf7ti}_{oL;R zozp+(O^>OsudinS1D7M3OZC7kh7)`T8NsXx9DHE9!KDC9GpIB%gBc2fGGLma^8tkR zU||O{9F#1;G=tEn5u;(jz%ZIF7=~^hF<q+1;Pv+J_xt^Gt;>(STs~iJXUw`QPeB>{ zfakB@zaQT%zu!C4IQ^LBatrx6kA!3bzLveaBYF1h*`<2ma>8wE?(J<B|NngUj%5?| zD{#1K{rAgd<wwnP^MZqeJ6D4WnTE-4@9(#tHGB5ujXD}?2N^@(|9IOuYt}4Cd6F_K zI@eh84i7iT&e6ogfFm&(tzNo#^%YeH1_p<#*h*#xmmRtS3=9k(7?Dcl1uS#!&bPk} zssq)gBNgKgkKWXQOhOd-r;eT0-!BvY_f_~~;rTyY{@i>2H}22m`cM8zr>1BYzT5fy z7_a#qf$Zz+dcWVV-+v{QX^LvN)RXhum>3uqT)H}C7sH9`udc3s9DV;+m{fj7Mu%qb zvLo;A?tVNoeO_n!yh^owf8XXGFW>+BZbnv?R^n0yktXIZ3=9kbQtK=h<iu1yo%-<r zGrvoDdHI|B`|W@I`n72Ndi}butK*N(|MznKv6ai`N!kDV*#G!+{J)}=-mD7_ahftP zFsw)c>Aq9>e6I7q-#63e%YMI8?EmHKSBR$gzgOdr#{YX7e{70ou-bM9Q2J`%deFtJ zbxbroMo>_&olmwa{{OG*s_WPiD$a$0YPU^31rA3m9=3`rDJ|N#(eRwz?>9o>;B+1^ zkA>aE<;XnS>ZHHFzHZF9xoOAGXR{yQDL&sDqc{EEwKb8(3%|uzJZz2Fl;XK%+qPp{ zGA}P$xl%JKI{NXt-S4`3rOo?x-(_a!JMwz{e!1`Ws`LN+od3Vl#pTaM`M-frigt2d z<u;IvsRX$)Wn#Ka$j-aF%a2bDkCV*b_cJZ<R{i_E-ygl({l3p#uJXx}>s8g&i??q# z4_hB6+byQs)h=IWAtfc{miu{b`Mpl#a~6-6)URK;vQxkAWB14T|1Q^SdAwyvarbr) z&-weS7m{^XHEHv$y0g%^y-Q3=#=1;LOeexX!(_$!_5J;|Z;}h2P7QYp4i5hH-Ce%c zL`)|_;CP>`^wzt<ewM1|ET7M@cs{3i(YkedN=ijLV`@Hj$M^L0^{rSrv7OPUMO%@9 zfnmWePCk#cGcyD~KR@69``vE+Yipy;AAXyr7b_)gmgDibTU@{I?d|RE<>lpjemv^l zSp584#IBOes@lVCyoLY&e(%2pDnZ`d+iP9+{+=v5pG=4Oy$a=hUzX}0J<M+}BOYH< zX!HNiXW@0SpdeciWof$ml<#~yTe<o_A2YJEyKinz7hiK1RH`-e+s!!ke#hg!h^<*y z7i3CFNhRIflzQ?0efiVV_4_+I*ySn|Zr#3}{OrukN?rBor(M0hy={IxXuf#qlF<Ke z_y67A@%38t<LCDOD}Cl#ZB2O1%pkb#7|4fKJ02}KWol}A^iV4|x0IBN%bJ*-MtrhX zB7%a!%l&$%YKQY#zrD27d-2YlmP&RzN-sI{+nTIP)r;Jul9ipEe7sL~W8L3hg<C;| zBtyVk7Iu-Nll|>xw&m}9I&Fqs?XL}&{bm}eis?p8IX1uIQD>p<=5_1z&e?oE)6wzc zsD7Q{Ix~>h8CK1G(9m>yPi1k=%}uJk=jYqkU#ZO7@vzNgPwMGuH}+J1o-zIQ_3Pr* z-`;d~bR0W&%<w#az}h=?p!6=`QQ&ZJ@3&jo&Bxa7dbKL>`OZI|PA8w5qM2E9d6{o> zoPF7wh%ev2_un|y%x@>*-Y3)9(UHAwr`r7@#uEyOpqBKMz6T9Wuiw7)JsiBu$Md|t z#L3RfygABBNw>G<e!SRUX9CXo`t?6ge|i7+@865JZ%fyIajzEv6*bCANe7!)3qKwe z_b)MJNN~}Wjb#G0Mzw-`S8^}-lyi5NDewIHe?KRle)?%v{<SrcFK@Ci-?n)7{@=Uz zNgp2_75sScGmn(C^y2mF^=(@$l^z|F&hPpEEB^oMAKf6|F{~(RV&-~xxBR~E;mgZ> zPgn0-wrrW=?T(Hamc?l`&#muw?*BP^f9L<d`~R1}xwTdMUfu7vE7q><<<{Gw@a)`N z>FsyRqGRg+eqF5h{KLb;g+D$#G}%}G|KFZ$7ErjaC~0EmTDN|^KJWFbSD)I(*Vg`> zkn2)YpuIRcZ>MVB&ZpBjuYcdVzE=0&6aRlHhu(tpFoY<bw^;C?PtJB$TXxo`^UK)$ zs{be+KU#3!_WO~2wZAXj-<Es3Ynx7k@J{u*ryu7rF)##V#uPdn^qp&E%FAE#??48d z-|Y(*0xryATeWs=@2y+67H#DRnH+Eqq|DUJY}vzRcK&C!_Zykn+j77~SHnqViv<tP zS-oCkvM2lcx;@Wt@2xJEvip3-m^(_CA!OIIKE3U}pn_b1g<a$ht9Z<Ww(sxmTEFmW zn#fag?Lez|T*QZ63>x`-UCay&2c8JX1QZlMJ0ofG@73z{eOBlDWUZ6V&$B(ejnP1m z&m!3OOF07rgPK=?!@;w2t;;VQZU;qS;Pc9NJD*=Fh>eXsGuL{%1|-cJ7#(C}y?*0{ z#OG&cy&w16e!H>aGtZo~dwVJ`Ubql2<rc_e3=%URG%VWj`JDCT56gUKKLXVSWw*lP zDpjwokGFra2du_N?;xY=#)5~3c08Hned)&}Rqsb%ugBYG?uy-AcJ%G``*O$oWV<^$ zy!H2**!{kF-p{Ld?%cT-Z{3p0&CQ*>$p&ObLy>}of|!1sOlfJU`rqEtS&c<IW7fp& zwR-jXweq9ph6i2R>pJ@S`YL|CT%LTmjdx?s&rdtvY&yMY`*w3BrB|<CCtqC^I`Q<= zuI-zcw`||;?(gqkQeN(V>Qlp|4+|nzHP-PlFgPfJs!Ff-CnhR`Qj_3v%c?IKGPYGE zK5w^e-Fo!a*6hdMZs+$mv-2PO_xE@5(Js-ANk_XTFI&5QegD?%>sG(z6_lf_b|t;O zp086X397+4cRXrX6tyA2anGMmrwi|vUgxb;b<~^QUHSRhQE&adBHUs+8jh_X|1t19 z>0(YgJIi!q+Syr)w%Vtkn^W=aW_t4NZMho@A0NB1G1=Y4Wls6M%EGT#!`+LEi!V;& z4cXqfJ^$n@$uE&>yC?6I1+_1(Iu#sPl9`v+7oER%>y=cn$p%c@wV1#xP?s>oaQl5w ziRPz*t)HmX6CJ?Fz+fPV=w=3NwX(KeymhPTty{OeV!0T4X0HY{1~p6$GKQ|+yVtg= zs%p{h-Mg<WWe7dQ7zZkNWjOd48hivdfI=XX6I5g{Frai`H4L{u1G!-nO0TwS+0w<Q zLqRQv)Md-AurfF-wDjO)U|=w)TZhf53{XR-^sceXFz+^HWMDW@0kTbltC5R=!J$$} z2F>XqJ!|Au&Q#SJggw2o{PfB&28M<#b&CaATjA+p`YsVrKsB5ZkYQj5QAq#6%)np} z2Mddpnx%{kQ|!~tK>0R=FI<KpAixP!*fe}nLvrB(jTp~hiEYXtH-O9mnF#NtXL-dk zFfdF#s@uuHz;J4|Hd5%gUb}QLbXt1C^yIS)3=9X3fcygUB*+Y;u0NW`K(Y>L9DFOH z-oAZ%@$zNiyLay{)nf$-D;R^?@gZ}k^{oq<&cMJhA+m{?VMP$%98ijI1~pY@DxLw^ za!D9zK%t?j@G1ubgTqf@83qGIJ|U3e5HX~tE5iz@b(5GF7$oLCU|?9lp!U0A3p1z% zE7JXdp`q(hf|h~QZ%zh=hKWd?a5!i=TU>+vTPOnqgEPps)Z>it3=9k!a>xdQ+yY7# z2bP??mAh<H7(WApgBWNO#O=WWBL)VBt8N7jS6{t(({t_GwT$d+?NUvK01+opA$!cZ zz~O3Eet!SFdGlVpd#6{b2?_v)nTkkp0}>%_OvPvctVPe@((-_zfwN$PG$?U@0=Wg| zNRV+z(ZUcAYBL>_uoF_6m>Y~9A1JT<SO?-ibt_<S2((B5#Wtv^%8+`(v9e*~=JzZN z3@7>@Ffd4jdAm<<UTff4bB}?cVU2(cgM(;Mfe-@&gG3)FL?0$tTy=_HZ*wo0fkD9= z6s4fdg=MH`MHHgwT&l;~!1d7X>&+{dE<WAM$iN`MjFD#r_;!hVi*3)omUSx1mVtp` zDN;&ykSq+-0eSH#k|2oB01CoWA>QuOqs19#Ce3GIU<i=J>ZmCbqHP!%7$TLi#DRqP z_G=5IUOZ=DU<gr0P67(fF)x`I7^chur6>j*Ll^<m?y%4ET2{}@z_1jlD07%u@J-X< z>Bf9^28K-@h#nN!*`PtQfYLisEk(=zgX-=aP|jBKS-{A^5MYV!{z<cf#2FZT<hD-+ z#h}|`Q1!~dz@Q+AUaSNxoO74|>EY+13=9wCIdNw~j2J5rI$z7c(C|vtf`P&79HZ9> zwfVjb3@iLVY3KO@K8B-Ds@WJAR)Nxo(V>HuAj`Qyt_;y>lwn{vaD$VNK|_lD4ajS! zK#CR|;`|6oG2F<3*&w(xi<N<4RX4uC6g~KNJII$@&IJq%1}ur7Qt+x*0RuyT0~5Pe zV;v6z!&P4_feEr2Ji5~0`CRT70|UcNkY7NepsI%9$dh>1hpV_57!+26+&#fDl3NU% zqXTT3m>Cj6_#~JZ7#zN06p|pt7@-9!yg2w6PC0nHhp+So*|ETjgO6c>7srBznj7H^ z3=E*y1O*bPR5MVFv~{*!UCPM7kOC^BK<ZJ3!Zd{Q_6FBRS?${Mo`K=O5^#BRn(^wT z&vHF;4Hy_0PFNjebYLxD0QJrroIpl`jOcvOu<Gi~o04nSuDy8eTG*=~kRXE*?vh8M z^*Ok$8{iA_ltWyU)h?D-3=9FREbI)23ldT)w(){|`cw$1^kvYHURTA;(C`T4D3Ar6 z4;T_y&SkYc`m`Xl%XR;%oO|&M3>tb!(Y%0T4lj2=#kaK#3<k(4`9!m^3@Bn(h&3@Y zoDksWUN-B+YfwC?STHPDv8gJ-031YUc}=~*mFue4eRc*0C6KE@wGk+A8?+wy6frO` zd;&-EsXhZ928J$oq-4=x^x(~_Qx9rc7#L19;!AG~DRa`585kHQdm`xu`4p5xQ|8<b zW@vct%)l_i2Nb0Xbheh1aEdT6EZ~5;26<fffWVz^3=D10tA!XCv}QkGU^wBukYB{= zgNNA5=}%AoW@BJz1v{640X!m}dVc0IkVUQ7N+bq`?X}Dhbqo_Sop>1-X2dixGc@!R zUl3tnXgG;n&diIl+BN4Zs3qiZ6e*q-IPH*P+I0B2AOk}~5vbT~@Kgv`m6Mmr!Qh~Z zNJStgFfe#PS_4my>qas#FlbFjZViA`AXhCQK11h&hD{r5e}DUN%zU5V{9jj=FIu`( zH7h%N@y3mYdb?gM`f+LcK9TzW-|ORF2{9@ia!zJsU}*Rh7W|4yLH_o(Tu`suy}rKw z*Y;)0mRVGMNci&Qi;KU%Kd2pjZB3-`_B%!1oZ8@agGT;3iv>EMfd?g}ygeU}Rs8vQ z{PElE_xoype>>X9%>L-O{lCJRC(81jpyqJy_Pb)U&2qI0w+7st<Lkfl^6}I2zfU;1 zWIrQAKqm|Plvd+&7RvwLz5l1T@B7~Opbq)tGsfq8Iyz>}nziHEtn8%2ZM=rb$9gQP zzGSS4*|}-UQBaG6VT$2F#?-`HTQUnzs!r$m{mb(C9O3ytj;JdsJ$gDle%_i*;6Typ zd(hBTcr7yB)#b>=#qQoQphhEu!%ra@0YO1fxBBbr>&G{xo__Rfc79*+d0X?MoiV?n zH>aI#xmEwLRXpkBBvnvf<MJ}!?q$oCW#s1e?tZsR+br)+#DvlxAN%WN1O-9E8IHF= z%|3<|Zl+818ZO=1TU`zw7<)E5Uu@~$@As<p-|hSTuHwl=cfYE&+qaunRaYl}eRXwX z#>GVyKOVL(UbrwZ=5*xtyx2WoE_n+Ig2Xwm@`UtH>sxo@*H>xp*kemReDDJmU-3=N zTIDY;EL_ye2I?2Fa*G{l<CVU&|LXPY$6du^MNCaiL2bO>-{1Flbby9`%HG@%^tb<8 zGN<a*%H*hXv-9^!f`)H8I{a&21sm4?`*Ub53xfkA$9qtkd=%!YVw`rS<LBq+$7{de z6@Ptg?d*bT@9BE7B2qeWdn~r)-<P|4_wL6>-TKGQ&9zQ`d1>j(ue{P`NB(}lZ@(;c z&*yX2g_nKJkKWGTFDw7=Lwoz4O^gf-U7iLk3=T^Rk2+4BZC6`m^Y6#wi`TA+ZB9S0 z7qQ#A{9O;be2qcx{leq28?&yia=dI}Vsd0t>gh%M_uEg?kCzh^<hS|Yux0!9<7Z|X zyT`i4$H(6(IL!O;^89}$Y3Jrhp11p*<1^oGZ^CN^28WlH8vG0llh2E?hpt<>Qd3MX zCgQ>c1*N2?r=}LZxUjIJV}?~})|!}|MK?01>%~f)J$qL0<H5C)<*HsR47_b$@WA0t z#pB+O`~O}4-z90BcI5w``TvdW{ygLtUs482PYqdW77H}y)qFZ>Qgd2&dryVxfhn57 zY_=DEbgIvj*!UKd-hIvQirD`=>Hnz5_*@4laOPMRtHqgsv@<j@bLD@2c6MXx>1ihO z&L8f|M;_~$a9P%_#=`FN%=1U?|2cc#B{(?P=JOfj!k0^@`|U`RIH4=JV9$>;OiPpg zGc!0W6_N=kSikq%tpy)fuiKS%rBZMIpHDN4QoW?^Z^^vud0ED?NJUI9M&kbef8Q4` zT&Os&?$^s1*5&VxaI-P2D0*zk@NR)614D=&s26|x_UyLhJ~JoHi#M1gyj=Q*o6C`n z$;TgUyPenlzV>}}V0^s1zwOtMnA)#bTeYP?9%<<4SfN?U7&32d^!8;BKcBa^FWMOs z_xbEBQ|-Es-SKm-xVaoT)+_z^<8k@^j*jp5>+S8n?>ygo<J!BsyFcqoXzYTgY|uay zLnUZn;{Cqgc~bMta-;5jHZ?Wnz3Fy@J@H^+JHLD%Xu#?5y7$NfIfdI<8IC?HGYF_- zdB(sn#d^Eeq6fcz{Q{3t-1~g>`gQ)BZZ1c*UXPRh`}c3<|K2Cr@xP;dW}E5$eOjyy z8j5FV$WlZa&e^{r^}!bRJ{ipnU*@~T=WRFU-{1FTd+zORi*&gY_Hb2B+i83)F(=Au zS4|!RL&K_PVXh)~uB;5c{9&PU`=@#N54P~~^0KbYTyX2wtrct6>PGzrg%ZQlGotJw zG0DlvQg#&|67GGLwJ1n90U7z5VFMc9TC@3_*Wuk|Z%<Y4ySux5`9tILHk%iKdaDc! z6XXvvvX&oY6<_jjZ}oS+U6T@2nCF`oJZu#g+XI;ic2l=l@Zi~*nZ_A^u7=0Umd=y4 zE(48nx8*W3tniU@I^%I_WBn9Rhp|BEAS0`J`MW!g{PK1Gem-}f`+Vo~dESRhOG^#Q z-`!bs#ckV9`CO2bHEcl%0?)9{f?1pyD^ql3V}DsNFo<*z7~c`;Z+^?ba3BCQK6<E? z`|%`iJ<rG9({wto$JhT|^0MshEz#}w>#8ADiQe8XmwvoSx3|_bEh{T?%g)Z;vURKP zsZStxf!YiW5ql~MuUx%4_lx<pOtw=`i#Aq$eFYly?%-!?(q6Yi$;!&=(aYuY`#_oQ z)6>(BH=Wk&zIX3lM+Znz=;|<6z3JNbPVrs1cTdjN*7oAvySAFA!R59FJGk7oE_&i2 zV^>pgB(qP>R?59!PBwUVZf@?zvbVQ({QY+O@q>fS8|(l7i`batx+Y@dqa~TIU%yU% zdu!{tf8b`EhGDo&KnS;(PRI24I?Hvt-|bRduX5sPkzxM5JrysPP6v&cs;&@VSfTRn zIzI!0LE$<J1yIeJeQk|q)bHYFXFAj8*P3n1y)7nfp4TI5UFPC)r1JS(@$mTCQWJA? z@!XpXDU+LbgW9^WP0VV(#l^*Us$Q>Ms>i&-fX@Ns5s_)pqM#NXmWilGlI#o&4=X_< zPX%*8ZHX=i0mGkKwX?&2{bFQbxT$Etz_4l_GpN@5(2r<JEyyZ`N5#}#A`A_io@B`~ zFs$%tVqO(iU0n@oB$Stzuk>bY*z_pDkb%J=71ZFVEIuFsYPHONz_6gnVg;xrbif6v zyKm57{B5PlFHoUq5C&?;f$BDl77)T2;3NQUqk&kU9_FzX&@Q;@l=JzF`^6a;G}6H{ zqDwb#Hny_1etctN@=`t4Q*F%(B29Hu<ZpvU9D)juqK`{~%u8tlwMQ2;?QG&?XxIp9 zZHJy^G+hv}X-oadAYBHAl=&cew9aM&Q;{}D!=VlKtPBm8ke%MJ$C7)_n#=Bt3<;00 z`oN(z^W}@8+iDC9$FTLAQf5T+Fc<_Z+$UbMKZO6iDFee}P~?CdDg^4HZ{BPi6&<~J z?b@|hmNGC%KJm$QTU5`$5O9)(J!I{-Z{J?LeA)T#-MgUa;AYYU$tGq6;W=B`83H8g z!WkJ10-Kl_7QC_aa0`1m+sCYykD<W{xsTN_DeL8nqG=}0FZdZ40-})Orl;9hF|now zR1Yfr#_BOp$^;GXt(x-mxo*nNZEH?_GCN(AJN1+qJ3~V!QW$CMY)oghau#4vYkz;| z<iw?K=PZq4U^roR5R!O7@ypOqSS)7Ezz~8o0Msz4Xqpnw`R9wRD(`Eze-~n4&<IC3 z5M$gc_0Uum28IyKaSc#Vg5vyyO!}vZ`n9ab&OK*iU}(6AJbEK~YUWdsS$3=p3<0tz zp7lB>s>{GIK^9>#gMsE8Pf%AdKn_`Dm)`2|IVoE~WwnMXvd>@xL=HDWL4A6q;fA#g z3=K6%woeE=$Hltoz`l-?Pq-$Xdj6M{L4zO3K9KuCJ?n;5&!%xsKEACj=ftCQ!){a2 zprz~O85pJ_ce@xGv?fknEx##<9XhZE(hMJQ1SOes=gxuJwcECB11A~bXW#4@7(}{2 zomqH68H?!5GB6zI0CjIp+OQqH7j}=EfnmW7WN(Aa2X*irChl13Q+RV90|UcRr1T4t z1`iP}aJXaE+Igv6;kMc*$*(`{X67<6Oo&DDr9*2WoBEV_=M@<k0?uKv;lTgr+k})i z*D|a~+sCec&WwdYLmo*x*dnk;X9#Rxkf`%ToT1?jsB8jBfW_e%IyFyc`~Q=-);591 zAE0I=Fd)U5R?q3b$JZ@ge7cO8;g1{x!;k-190W2L>@^09&h+}417;d_w<Q=DHlaiZ zq@Y7ht6o=&vY9mer+&D(wxx81%RO-hhK3vgnSiagZr@(Ke7X9r-MhVGK?#fjG>{9n zrU5hz3Sxn}ff@|o)6)0!eV486NV<IdnEvbAdau7SG6d9NapVL~y`AjG4)0rRuxX3z z<`D0ln|QTne=mQO<IK=78L5N@nT@ibEM-FV+oC%WzYl$Ux%pCil+`YyVDFVYTmLP+ zr?xcC4m4~4>d}I<fnpy-gR?O#u?s(l`*?HW`|5|b+VS&d8rE%-cAnW&x9~k9!xVL- zfClM9@!P4OY42vvSsK-F=(A+|qmMtC7*43+QQxp)&+pe^w|+59KD>{4mHRcj_mQjA zy|*$jOzFZ>hJ$Pa*D4_l-;>Yno7SiIKA82>ytHuBJ?4?|$Jbmp53sz-#bAJa{1RH+ zfedL_0-BUyI1q5^Y2s4m*LOgjwg^rJ28YBQk3jM`#wkHkpinxtGDhx}=f@Y!%BOFA zI~irmqdWim%B737H@{C0d!6)W&vN1EPtWUM&%huv7?1}&LRX{I5UIzU<us=}{<}it z@5(v93U^+yoS7r6(KFG`+b*5K!Bm*|WCpScGzK&CX=6!1-Km$2yB!ik52f!Hy0-9& zR;qN^sVWAB9^|zuAPvYa1M$HbL}DsCOIr9!Ik!1q?F?gTBUf2#Z%tX+*Vwj7le;u+ zVVhTCv|r4%ZHd=jF)}11VM)bslRylV^rGhL?S6g7bLsbcre>{pn<&jYZE4-)sa6aU z|9&6bCj}ma1?fSZa{`Hgd<LRH1uK|F9uZuSv!$ej_m}?7sY}0WcyDz{SwHV_&AwCq zs(ZqxZs1D}?D(4d^2MrMZ`l|QJi%VZFrdT{*n$Zhd<#x(DJhw{tEJ<FpX`+RS#PX$ zWn-P!m4|I}4SSXFXVVY4w2jLeH-*Gc%WCYL@n+wf&CCo2Hh7Xh*j#Kr2{;;MwaY7( z$-vES`{K>L3v5z;Zl3k@)~VK94u*hxB!w`@4rD7<g?PJPU-17>z!!eEOP4N&n*E-% z=DK_3sigf<KX#@hy${^DZRz*+kEe?6pDfB{IPe3ho&y<$QpkV>Pzz_&fD4&84K!J0 zkftjen;QAuCFJ(6w7UnsAFgJea{7DF$}FAs+`|d2HRt=bPd!>U;pnWk;zwmV)Bo}@ z1Vpm1Pw6ecUu(Ya_uco${(iqN4;n3cG^hAnXN;cs&KSMAFN@`;?y><np`j}PG%OZx z|KlM4Bjfo$eO8_Z2{Ww7XktEfsz=iJ(PH_(88vT`<-4z4yY}PHbNl#LlfWvpx*jxa z0*`@2=kJ|*?Dwx<UJ;-{Tn2~KPd&`1K+B<`UV)}=7#OtXAxb0)mnVs(fxEN}GYrmK ztSH)D{=QFp{T`!xHJ{He+VcNi_4}iD%kRtf+k86Vx&G_7Z*KYd`JhofG2JK;e)~TK zCMG5#OF^?w3=E$hccG6j@o@3Jdj0xwvi$D|(3sZ6D_5rc`+Lz{z85t1v@!X3R}l9B zmn|hFuArg!(<fYbl}}dH8VEkUu>bTzH;L}77njx7CGUG3!+V>JK|}W-<H;UL<D`Fo zeiq)Z{eE;;>1(w+_bx5<22IOn)_i<)6f}bQ;@!JG@%S1;&~ioZ>3Y8F^KWcWe7FDq zKTdsdP$)NiEMC1x%e?m27tqM#;<ama)6UO}-B4Ek?v5nC-H!yR{g3;sldi4`ZC;j{ zk<pQQdYWr}eZ5ZnJ{u(^xrzsk8TtABGmX>5)`)>jWBByEt6A&%l`A6L;(9t683KYE zi=LjcD0va!;^H&c$~0_UjOCjx-qZDZpFMll@#DcYPk!4k0gl<=wyHvX6LZ(2lj`$* z4ub|redgQM-pE|;GgGKrOxNqNzs*ONz-&;@j3J?-iJ2=8Huhsz|L;%W^PLadq%VD# zrW>8~`Po_5mEd#&nibX9aXqd&_rj0R@L1DVHq+zlDt%@esrKgI+OqNiXwrg#!N7{& zec6Mm>gvlMrf3FV`poTCRI@Ao&m(d5t%etF=kK4}cE9@lUXwlf_xCxj_nmE~>u3FT zi{W)}B!gEg-MO|l`tpaL&*#hUjL}>FGwtlGsZGs|xjZJx$9fe1|Ghl_-<Jg+K|^?j zZ?|55wlxMEQ2!=AXlSbbez*Mchb@_xKh0aea%JWTGp@JD12c<sL7hE@1$QcrF|uC2 zetmk|>sPNn&0D{3U)>2awpZ`ppMRadWHs-;Z(G+N-I96vQoP;vASSQnOBb(RG~Hb8 zX@GJ-m9A{;%scTZYnQFL8r;XVmzVo$d3)C3-?nAjBpE`~L8BsHUR*SZ37-7lRhN0W zZP61C$84z=^Qzx<*8cvsbbs#cZKAoLF>?lnr^nWIY3x`TynNY1=XSoQw)YQYN=r#` zMO}8-x^-({baeEVZ{S!wHB*~UW5=;$$4qKIJUF=Lxpl#V0~5gGAq)nUpp`X|>2s&H zmA}0;^?S|k^7np+)8|#DIc9@9SPJ${%v|r9xb-{^SATyeTcUc<gUv4c!69yaor+j+ zu=V(X7Szl%PQUPD_4<8QuWYQ#-gMYjf8)6g9{ggM><p40DhqDxE?l}Osw*42RIk}k z<LK|HPwgf>z18q4^}b2r@$Cz9BcrzcXU}10Sa5}f{m7%E-HX?)d$(l&MnB^Kz3JUo zSBJaT*4Dbz2nfU!9u>WK@gjI^I_Jg)MbJp^^w_e<FW<hoxwzEU)~<=#s#UZz=3`h{ z1EN#w87T(}QU^=W=;M@o6P4W`eRz0S*{}G^i;EUjUtY|(m7AU2y*2y#vA5gr%dzvz z_5A(){dkwCcGA%<QFY(w_;~s3>+4EEJsbuGht8d}T!8~}=z$v?d^1eWo;_RmdhPaU zyFeRP7#Q3hgt>wwv9<`n5-2SikO)$Ji#Erov2j}8I?l7!6Mz16kG#<rxq>l4=Tz$c z(m%hAyub3TSvsZk>E<^&x!bd*Fa4fmlr8z{^Q5J@j0__4aQE*(7J|AJAR5VH5SKtZ z7Ni8X+dX|(ayJCMeDkK~+_`fWWp5%@de0OAHF)^KH?PTUUvoA1Y~OzI=>2uco!X2V z_D{F)>s~F-_jbQNW4pg$w(N~>9;Lm@-vvoWe6HA*xbJqF(y5om#dki=^8ZucQxwI{ zkN{d!jBCLT$Z7Z*79e?W+Z4pW?FUkfKwFA3ffJl-5(9Wa1>6eGhL0yt+5M@IW!@jY zDd=`V4SP|{%3qED*cmuTSSEnn2SM%<f_y>ExWnRaw4uROF`x#3w})4tx3_!vvTX+) zBG+;+h)JoGkI(v<Gdn16_v6!c8`~b2PQP3oy~65qZu*v7<2&2VE^0JQ+jvjs8Vkcz zCu*+I0fhi^6CT6|_w_&wP^Sw-QzxQ9CNUtlW6`?z7r~8u7SO7pY@gbPKfWA&W3Rk* z{e7l@jL83amT~t3N~d|heR}I(%8Bo_XVYW-|L{&d`gU^bEU#GSYxk8IPPEfMvto&G zh&QqJ?m<$tC^9gXRCKLcx>!5PYL}Xg@4_t2){`;YgVsI{_*8lS^UQS@*!1+hZ*wzv zX=?9RZHuZ~nQf&v->UEbI^D9fk2C8x)fJ0-iDk>KTh=&#{zE(Or7`n^_J6OdXEu<- z7|aIw=L8Qq9W9Vf@(Oma&f&d_26bp6#SL6y%rIFRasBb>oR=@W>W{8_ek66yjya8{ zj0`S3e|ImKvR}0A*I%P6`7=(gE8JnFwtL>fy69)t_YeH+4!rL2T=w+)XA`HH-}xPU z;;Y=s`C{2K83Hh;CO{!O8k?vcX;7F@xxND%iChdq1js5$PMw=)Tm48o{-@WUckln@ zUAcb!cx3uq(fSYU^#ZT2t<^5g1RI{}U*Hh=^XB<FG0-Xun-2$=H>RGRX7P5*<wv01 zG@$u3@O=98eP5OaP3HjV3AhFt2sqr%fBdZZeVP2dU&CT*J|6w}YV~^X!tMY6{(_c= zpLkmIu{Xa)S+4fW#h~fnvDbiYAdR7`!;aqn|M&j!D=UK+uU@UKxAVy)$f|-n)$jLy z%>Q?Ge`iMrXwyuejAhWNAV~jW8fa}!+1pzk9Y5|ow-eu-cGl|USNngD?fYW%#6e3S zKwYiLv5>~CtAI>^7-%Ea?%mc(O3%*Ew|`=?IqhthW$`l?mm~ajADTT^gZqjLCUNj} zbbz`NM}B>MoqTgsYT@Uz=ErwFpC`RDM(^+1$jxa^Z})#V#Jw@)<Rs7-f9B<7uED{< zpgm5p<#$D;>eR|J}QH@5Ou2a*=NReHAxe_U*rR`LglCDzL*>h5D}KUa$qUjVC;= zGIh_-XR}>1|L^^NuY33Veb#c7PbN-|d;Rup@4b8XBKB65>O^hPkgNOgFe4*FV$<B% z-DOK3&NNQv+r8)Udfqu;&o%tv<U`xJBp_{;<MBT%K3-ltwj}V%l`EiCN1(lAN=l&6 z2d!?m`TON^;j5L)=UoYlkB^s{XI1)Y!)cp;w|2kZ7ro*tC{`I(Xyt{v7$qO;nPFdF zcc=V*?Z&*jyEwORFL`;%apA#7N4t}Me|vlJ?p;~^eLs@k+}UY7O)qv<-2DxS&Ufnn z{}qk{P17(iJO&K~P&BY$|FX=bx3@R*$AL!Xi&w6gJSpOru@DdxTt2_9%JCX_C}6=Y zoSTp2@7QHLJvH^P-|mu^mooD5`a1aY=6<>0%s<!U>;Z+u=jY}g-d6f&Yw>y8a+_4J zVIj5$8C^d<ne4ypA!zT)GXME@Z?*(4^XYW$7F+sJeO|?*C7F7AJ{&snv`A3!<L3E) zb8c+w+kfrWEvsj<z)>t96TmXtJikvjdfSqZKR-Y3w>r;jerH14_MDqSv(5A6zEmYA zC!d*XZLXv=ukzVU#oIUb)q<yeU5@Oj{Cq6N931>j%v}#at1V3Gu7-y9TAhD7Jzfs9 ztLX7;vs|mpS-10c>nbVz`?dbR)wbN*WtU#pe@m|y`}_B=VezvwKmOkT|99gwaFTZ5 z;L~WjckiBwP3oyBU;Z>roMUnKfLY(}*XwpaIxPRMV9)n^)gMp#*BP~PgL-%C>;Jy~ zcs9SzSV;-gfm}Yf?3N2;)87Iu(0&cA^RRJ_`SW}YW<_pJJE~vzv3v3@i*?(!nSn<F z?SH5L*D=ezB{Dsx$kW8s6uf}##l^*ff*+6S*A-s)3>mGHkPep#C_rDMa?AmgX8(Ly zZr=;qC-u>K|7UB^_K=LMtghGVcI$yw3jH`{zR&Pg5ud!B%<u2-<-dT}3LIc(VHb%3 zCFXUjSD&ul_v_a$#oHDaK|3KqtDXMb|Np!G@r8xX8_VC{1MT&Ae0l!AlDN}9Z(ZLf zc6phvcm2;hUMr=xmXxHfS_|p`ZZF=`>$L86#I))f3vSS4pO4x7#-FDjZIg<)eBgd~ z<ciW2Qky<We>igg;Nh#Lx3<aT+J1_?Kk=1BzVy#))>o|hx6bX%SzNRHWcj{}Su-=% z9`?1KXlEM}d-P6Oi1=R?F3=E#?Ec&U7Z+dOf8~dzEZ$C3b_Wflfc9;^xxHQgFYng{ z;4LK$Sx+U|2lwI_(45ps(CVLO=jK|!czF1{{r^8JKHGf1Q=GYD-8#Kz=jKKuZD4B3 z&dKSi{QPX`$K!I<Iaey#{EYMO?a9c<(C~r`5%u^KI0S;WvSwCXUgrDpO0Yk#^;_-r zdxTzJUoT%22hJaA(;qY}ir7(*7*ljoHM8dAB-M|<Uay~Ta(7+q?nmEl=l3Tc?{jrI zvUGZ!)cn71($&|3R{Jq9unEfufR^j++O=!)zhhQs9d^d(g{_a1{rdH*;73P?f}^70 zF7EE`pz?8J;^DT4eKnOaWj9knTlEA5zkdA+T2Oc5Y0=T>n~YZQjXG+n;H|0*PZun^ z!WvKo+8TJcoxk7W?8U|Ik6&C|oSe0N?ONSy>tdzBYjbQW48Fa;FRvZ8rbARaY>r7T zXmBQWcUchsqwU+byH{6Ng9__qzO&6TPlK0-o-iVA9SkTM8e<9_)<kYryS64Wc+0ov zXJ!h6mh<J@-ll7ocSiy=P}b4$`JA=>x_!T1W#r}Q-2yErWMGhxKFBzE+0LDod3(QJ z3j%MeU^u{WXBD`HC$9~S+GhjT_@LQVoZDtVE3>ieu>i+5CEdy^Q+6?EOg(q*+>1AF zdKSC)ySW_s_xHDVOyI-4^*;{Gcy75*_MUysf`r>oDxx2+eD3mi<;n@C<xhT0ofGlc z<MiB~U7I%eFf??Yxb%LyaJHmH+$*d0-)n7R_Nt$YesRlvRr-Vc=Z*Upwy#dybGvfI z&$eoQ_toV)J_=vgyua&M){>`u=6^d+TNg$@k9N1atq{+AzklMiiT<(%Q@q}(AHTkO z|Ni|)rUvj9{jHJ;%>&h_ckaZz0&TrvNC*KfBK~~de*cx!fQKyXA$vi~{y;<cpsMdl z(axah!6l$|sn4E0yRj`d+Qig!>MofXBEM{}dhA~=_40d&bnU#XCHI4S`@a8<|MzM7 z#M4ico}HOlcuMn~gMZ=9P{GjmQ-b|go|>|4<;s)&I;;BX{7o;tU+MPC_Nv=_umOuR zFE4xf-AC#oXo~^^O6xXs8K}Jfb#=X4Zf@>M??%tX_k(-CRIi#?=fCyhbFd*E`<IK@ z$bc3|F)(<<6oMlXZ)-L{H4g8l@oBqkG&<z}zHpy-`suMh-+#ScKYdq;#3d~I&}FZb zUtbex{BB$Qugmj~?f+f=U(fE-#Qq~+US0;T-rn(`X~)}bw;#<+pQm}p>wtvFrt|rC zca_H6=lo?q`6Z~Ot3JQR2(-o+v|##?v;41sE7z{Mfhz7<rrLSCUM`E+S(N(c*Y*8! z;lICqO$l81d+%S{$g(FVCjPj+|L^UJ4+q(kFD`N|yc!yQ^vq1-<X2Z#7T(HSespH~ zJjv;CRhcypx#K(D*Z=?h@!#+F{gsm6zKZzT2VDI1>({UUSNH!4|0`(t=>8(t?q8q@ zuUI{w6a4i*4hR1J6;Qu-@7|?)vTQfEW{3ZOb91x%+ui+kzh2C^ZCCWf<G=0qJD2NE zX)f=%@vYbV-i`m)qVq-To+fY{eepSe&&Ojs_6c8GA0NL*wDte`?c2BipFICh%Ks^v z!Jl4D4_@x~w*JFG_TTsG|Nq@{Yx{cj?yjrv-@ZS&ss8`_|9@xvdb)Ia+^zqowAVkm zx~<msXjpO3B!-Zl<l}uun^?J%4!7~Xy#MO;>&J__^}1%wngv=j_4oI8cb6lJ`|YGa z#m@5ibyj}1U#|pB<zWpD4;PpJ|Ks@QS=%;l+<4;Zfg3VbB^r?FwY@1PCxI4rU;2@` ze6HBqwQDclxFNBA|G%m?cXyjBDec;|>(Q>)>$-cT&42X-lpKBY`FL#o->;Rv=E=u; z7F}Z$6#W1E|DX9k?tR~9{^CB!!XI<*|C|fjqW|c|#$-@I{{I92e*r;3&^CH-8)NhQ zzdB)SqeOSc<Q@6;_Vvj{N#B1ze)In1q<{bZIX>p)<^2eX(!yhs=`MQHyYKEUKYqUc z-{+F02UoA(Cv`oh*mq6*e!G7!?f))U-j*Bhe{rhSPKK`M^QzxTPBGGt+q0wo{k^>} zzwX<&@844I>3p-E+5bEKKjKhVViH?ip+WVxH$l^xADewRvs2PI?aTT3_WS?u`~B{9 z{Pw)NE$b|PT-(0SG~?gw{Czv?e}8-X^6ULS&&>aVCK>B}eSK#=`#k@DP2+Vwzpx&= z`bUy0CaCt?|Es8X`Evcrl`o*Q|1N%eUhMyUwZGYXKmYsv{`>mq?d$&U`Fu|L%Jlz_ z^#3It+4lDJ$yG^TtAAH-dIPfe{}XlloBOk_uKIU9zP|QE=Dn)dYyVZh-@E<)m0*A0 zzdLsB-1#3g`ME9jca>VRtyahiS?jVd*RNh(s^4M#Zb$Ns%=f$B?=y*wjg9@^Cu^;? zF-Sw^Amh}e`}=DDg5381+S+LUs@y&7fuISsfBdyCoHOrbuiv}v|BH)@o&A2l&9Ari zoqqc1ulTy3Pd~2Xda_ia_FkjPrkuOGO8>_HI3)h-e$D5zfy@6s)vveA_+NW1GX3lS zXXg7Qi=uv4ZCVrY_ujvGUZ8cXj<r80y30uxS^ch3>uy(eZjIVmlnP2_N=nQ8=1OUY zuahaewbXmMTXAu*OHIM*hIYBC3?na=1PNbXU(ojH8Mf7B2XDn}PV)sFyZ}Di;m^_d zKSwugU-tX@|6lRP!6#?P$HeVTI@;BAmC;$#ZGOAX?<>pgL|2Ee?~B}=)@zkpTwMI; z<orLLQuV*zZhx$9|MTR8%eSsiPCfeSdw}M?53Tw~^8bI!U;YtPsyX|m$DdCTlyPXS z`gBtL@(11RcZ4o4_m?lbr5U{J$RgM7OFxADZ33^{Vwh3G{QWH`10|oEW2x-7Kjq{k zlRsZB`yYRJxV<|}nn8K@%Vo3KdiVeP^%`WTzv{{D_nlQi=NVl7@Uh^5%eSvSVh0&R z7Mz`Jetep4^ratvetveJ`@Bs$&*O0Pww%thv(3eqnlY%w$H(7au=&feUwbcHzi$3U z(w{-(ey2L)+xz?fFUfrKdZo$FFV!nd-23Hx4=<lz_setr?d!%fS=a*_<Er0ob$lEi zTY7cH=a{;mPYqK~O)=S*d3jmWbykPWFJHbKnW*f3slx6)xBRaQ?Vx=%y}#oaH0GM$ zuPMIp<7WE&+Dj(izJ|=I`DGh2N!h*cNVopJ8OPdh^}{ScnW=qL!hE}-=*v0l_eVfs zrmL$9T44{WCI4K@{~K2G>+<}*{JPJx&qXX+HD`yve8u}K6M5#G`_A<AUHre(^^*I4 z@7^!X%gcN5!UX})xBzIk#{9oG=O2yE-y8bsQ-X{7J+G1#%&rg@{SA2YUNanYYRN9! zi(g(|etgdQy-lXn?<%#)4;ZvA!1_m!d0;lXC0Pm50e#=z-WCTXe^7@Xv~S|Y>(||D zqqiUX|3m)2^1dHO^^dKI-2CWayS!fMOao1}cbBuXvL4+jK7Tgb?ml<OB+$_t(V!zO z_+%^uKm}Ls?QKWD@Bjbz2mk+v_D9~_+zi?}QuyY^#-Qn(>NmIN$J>0l;GFqKS^lTT zmTlYSnar)VovL!b&R*nq^{Jy57rQ54Ul$AN(En(*|Iz&8v;F_i9UUuHukPOe@AdvZ z<MTG3msGxaJ<|uY09a!WXpsl6|7<he_djRNn$?!Wd@9u2+Z(h$J}^33I)DG)vM*o0 zEU9*TcY8ZzU(VO7;g9$Knf^cMk=Mc<Z0|1n+yDJy@pQ_cbFv@zI;dKHzf*iUG-Ln2 zuj?0Y-);^$B&3~Bw(IHX>7XM}Y`$Iz233|*cSQYgkN<fpoXu9D_~)mm@TAOt^xr%k z>(^^GC%wP7*LmNx(@!7G|NpsO?*C8w|Ic^)c+}lK=h(h^C!cgNuW+cXtp)c%-v4~{ z`gMB_^Qohn%jXDPk1db2`F0~2+#7t{YyRlx^ZEVqe;%-Zyp_HFD5w+s<MjSNr!8Ku z*?h^S-{zCYnuv{yT0)&a{)}57^|WZ`4D0f|HF0~bK&>&*Xp?wcg<{=@X89waUdsDD zpZ)$^jsJUfLG{17|G)3|?|#2;cZus^PSEim{8k4a#{cQA7c{?Hav4+>1Zy6<^j`VR z`;{`FW$Aw&%Kv-V5q|v!G$ZxR50w3QaB22WDT}uU+TS|t1h+?SrqAyM)j@`}zrIY4 z%g@Q_vHx?}z6Ug-bm6~+PV_b%(0M_=NlOiO*60WHrk$TBTmO4|y)>x&Y}?bbf7>=Q z(Dsp|AlHIQp3D2|Uq|2nbiu*sp}PG~&n?@xFaLP|*V_AC`L(a35BufE`>RT1@9*ER zfBBv>v(5F_?f>^{$G=~%AK%Je-^;DP#~{}9!=KORk2kS$KRTtozQ_DtMe>QCZ(q;! zX<}aC5WL*a_waH3lV^?}fGidePVp=*E(V=B;`x}JPo`kElGd#EtP=Mm)8`0+7I;`? zuiwAle&5ft`O|i2t-1@UWkKb_pJ(Qvk-*L8?W{rLCW86SS@HfmrTzEIbN{a1^uYT5 zPd}T_XN*6dF+P6;)LMG+_HD0i^|vEkqS}}2cI@75ZTIhEKmSjId}vM$NJiU6vOwtU zTx;`nd%xW>`S)h?`DyDUG>q<Z8*Bm%a;)8cZ`QF|^#Cu>$j<Ba`|Us(T2Nl*&7BR2 z&Y%;b?sa^=c|G{tvD@#DpZYgXXO>-U)t`^@{|iB#;KE-om%F<h*_M0zk#_vgQ=XS^ zL1UNg-u~L_>tZX<n}2v13|Ruvr1J|jdSmkE^ZfsNTBbS_^8Sf?@%r`Y-}{#B6JMdm zykB@*-rZT}Dq2r|IVPQdr1X01^m9hGf4^K#{`>1IXy;y!)%sf7r&&sW>ulb<Ke_6( z-fo?Dd%xc^`3D*S>97CMUN2$NTWbs23@ZAf3AV~&icWvZ?QOZ4KOoC2CYXZC<x3xK z=kJd_<h5W2Tb;g(%b!ov_n!fmN0S@xa|+7;X=^&UrS|u?8Rq$MIrsP3D%tIjJ^Fp$ z_q{tFb!mT^b${QyB9n`C_Hy68r`$Z$%6<96#l`N6ckiyg@cP?VA2m?@V_E!+N2(rl z#>U)q&<Q~4=jSEfZtyZO2$8N>@3F$<@y|Gmq9-1I-lW@0Z{uBIqCPL<VRhrlFRSDK zYJs+cd@(q4>(;G^?Rl{=#b-?`w<pH?@6>eJFVFwGdefSnJ1Z~z=sY+L>eq~ScXkFw zN6$Vszy9A(j3Zbar}6yxSn};=`t%J#8teG~@BjABe%q=~|CoR5*0o=w!0aOMfxR(@ zuYg&!<CF8ECcWQ|0p_Kr7j+1g8tY9|on`SjChbg#_qGE)yDSoqtz03UWwz{yWmLiJ zj?}A}C)HjF$Sf8XSkiFo_us<>`$|IUwry#>uD$bQ<+<W>#dg={*gXBU@4HPi`|}-- z`?POWe=bkFxhd7xE@Jz)_KJ*b>;JwlZf(u();-2q{ptSyf98|bd{1?WYEM#`Yh8XW zx!-o$$;s;PFIzmTvYIq)*Zc47Kj(eRIc_Cy{pHQg&7QYo&L32<XmAer{_bw^Im_oF zZ`tK*3i_YFsX1f$e9q*&ySuh}<z9#bRWAN^KT|HsS(oKVhcU0sKQ%@3=(olFcDs&0 z|M~7udE$=`4<(IKJXT+2%Uv6ym3nVarR(n=<8v8@vn=N1+}UCHd~SJMT;<cLDxR*c zu62K3$3H(E|L;>>Z~D6B${8<z*Tv6xpZR{(s#UYL%$_~{>{l6`CT0s4-`QqsZ>(Fp z_H3}f?bpuZ`@UTAj@*#oxcT{^g|D8?&es!5@Se0Xc=@(i!vcXfHruaXzYc0x|2&d> zzwY;2(CIlhiysD<RDXMO<=Qo|+<IXPiF@_`|JJ<pjz6_2_4Fi_r%#{Gv@Xw^{5<-- zcCqc-*z7yse;=yxuijSs``e!n?e;pioZEPArusG?i8=2W!o=s<+uOTTP}yzDq$!i8 z{QCYrzUuAP>t&XCXJ?r%UFh5{cDz@{a?_O?H*T<r9&W7s^>Vp4sF|F3byetYTTu6X zsdV0sg*%>4p5kZwHRQXk?6Gs--~Ii5f4~28znMl$Ew)#Gf4B5#xA^;_Gsk+Ry@l0$ zH2SQ+-AMM1-j<WO@Kxgdx94p^eXJ?V{O8B5TD|)A+d`0o=KuS$d}&u#*CQ!rHlBj> zmtSqmyBjsjBr~Y+{?w^cr@q_$exI1+?HK>+t5V<h{+##i4X9sR`+fI)-L-LhtNM?x zi`=}d<lWBaW<Sf%gNAGUZSKXKKNt|EHPvgav@b($>dQ+@XIc~{Nl8gfQn9W2a>Dd_ z%w*&9HpX+UN>6d?@0oCOb9(yQTU$LRojP?2G$*mxy+7~tro{bc=G)sppI={h>hx*j zygNI5=2#f2&#x)^_2uPcz1Uq#_U*IN-}AvquI9tRHBnnvS*$OAf3Nc2&*!uMs<Cfb zDrubdq>)|jM(TgiK~Hb}=2|UXv?ytM^0vIYx8BSE9rfncFE{tsuU{(i_Se66X|Fr6 z^ZC5l@9yqizHOV?=Crd~VwyVo`se@r{QP<9`kJMx_k`YrdEfhddb<93&E<0@saU?< za=GZ+&Ghsm9fB`!Z_n4#*4|wA_t%vxSDq|vm-C8^jV+A3zAkoi!NWs7GYl3ky(eb! zy3hLE310I%0b8oSzS`=a-QzpY#?m<bT+X)hh|tY>ett#r@xHSyoWh@Wp0Cxb{q^PK zM0dHFXJ?zIKRq>d<+^p}g#B$UrpPvF1}{tb_vfdkwsv+|PO&Y!YqYw!!|SR)ACG%a zojTPw==HO>sZ*yeJuY9rXYJ|Mzu#`(|5w)k{pbIEc7I>`Pmim5xpbSJ?5xt8sng$n zw%z-9tF`wu9nG)r?pF6FhlGSoNjp2MbizH|EpKe&gM&ApPnM~EvvFxFxA?Y$*3Sz{ zPU~)e^ZoC<B_$y3Wi`dNZv(UMe1BGbYxCcqJ+qdS{Cqln`nKHL+m3%c`*n+1w#)%V z(4xB&n^I33WnNm6Hu=@2O`GNvpR=s|cvQUjAglNm$JPr*pcA8>J?hp!S9n}@`|)IU zUa2Y8?{+AI4t_JA@}R)5?9GiU*RDM~#I5hM+;8qI+q5q)F0Nd)>eSZjan%!6H&45` zzy5zr)yt*TTYtpwulxIH@B3PP{r!K6)O=@^2&`(pmcH(JLE^sUw$i3qA)sakkF?nv z;d;vr&eQc`iypR$r(Im+`tzxN{Y<^sU2h6&ifz}PUEKA+U{luBRXUNIR91(t_nX8c zV`1?4SnuhN$K~%Io9cM_*Y*AXriRDYntuKIb>;f?=YPN7KVQzaYDxb6eUheGSK?|n zG#oy-tMqkHXz0}K_v@^0Z_hv9z{qTrbw#89-J=Pc%HH0(a_w5$-Cd<1-OGGuU)o#! z{maYC>dWU8dA0G$?mEu@`NG7RuPtL{yw5yumUCmm{=aYYBX<_1zIy$7bMEbJC9kjP z?ydTI>cT>2<D?@UGKEJ3f7|ZcIq#YR^q>|lxlqu_Mhpxhu!ZA}(4!itCQ!gJ(;(65 z)TvV-$JhLL*zWu5+WPqUpFVw>GIi?HN#1&v8K!F^HY#mSJA3NN%3$M~A0NKFzOEm; ztHiTk&bH_fr+Uhv7S5gTcD?>|Lb*TX^Ru(nrq8xyUJeQiyY^=FqD4v|4=!+QHcC3u z5mR!}_2<R@x+&@NYs;qpS7Tr}u+C~LXrZmcY0yX|Xr@rb@^O#xrIo>#>)(Zkhc6G& zQvGR>kdbR@YP$33wCGP)g8fZz|3AnspK^JbZ{*gjP%-_uIgy*wmTuZ)6ujK;tgrdq zDGv{~zrS88EiJt{@o*bx$)jgbbo6Y{9(~VC`|JPv%(t_>|L@!O%lqs9|CN$wVBjkS z?L@M0(TUw<a(i2@_oW(xfY8v;ob6==1<&V}KRYI!?~|OIJo&G?Y-vcJ{l6bF#b*qE zK4|6#r2tTCKYDwf?<5lw6HxJSO1a-=((m{C?Lpa8ZvEBO;p=-OjhCI=ryIR3<?pYr zKfmw)4=THo{#(D_GZ{2pSAMrN95kW`3LV`Kd5jDXE`Wx+8=PHAOG`K2jWO7eadDA~ z=lOZI#h*^9Z;z4<k1Y)aHQg57UFtpk%nU<i(AbZ0)t46`At5G~b+50j1?8+iKR+9% zpPOT1VzOl8M#JoDYi_Q7UHk9z{PUn0aQ`>)JBw21RlnPLW}dC}>FN6ZpFSqf*4y{v z(Vxfi|4;au-`(;)Ux<N$FY%fM14D!Jkw-_nCxe?6FPG21w*<7ce&x!Qo|Agy?d_gE zUHduk0qE$*$rloSe0W&-cI$Pc>Thr6)ctz7yM@iO=!l^E6Hu2mw*2nY?f0s*LFMMf zUu^txb3l8EO-)TfHF2NKrxT0bKbxHoYPeiWy3WMV;0!*!gpaYew-;17OjcR!*6Wp; znmYNPs`s=fi~H@oE>-nwu3EkN^w;b0@mtz?rKcV37Ek~1;9#}wF~j3BlR+aPky|nX z{cJuS5nKQ9lDGa@<MTF?&&{<~_w-sCv~K6KSvfa1Ej_xPm4QKaDrl1cA0w#H*(mYh zom}u2&%e44LFN9px3?#&fNH$;bzfJ1d2_RP|1l~1x|)6ezOLV%Q2Iar&W^&JU#~@X zm(|wRzT5eHUf51C28I%s)TKcyuUrEyK&^iMuwDM#VSf8Pr~h4D9sc~Nc)ZV~IYp;5 zEg!ZB&-wydI8ga~Zuuk?(8BWW{5$Up?v`GE`eyU_d+&E$TNgW9*w11i2Ons1IjolD z!j{a-M&<ABsGK~~Dg1f4{ol;_=j#9e{cc?F-~gz(<!My%;=-O^uU6~EsxdH>c!;^P zF*NWkS+`El-{#|yy#AFdS884}&Nv4eWRCsjJJ;%K!>gzr1&M-EDkrCg$5lE!-nuRC z?k-T)*R0F@a4UQLQ~Uov{eOLXd;8c_Mh1u5pI0a`Fg$1o4Gk5&{q*V6wcjk3OfxBa zb3^T|Y_~Tv!-0o>pfXDK#P|LG|4#8*s<wXDu3d}%N8kT-P46%0w8)G9L8q2X{};4! zO6KKdvH`LBd%py2v@LmYq2%?ow++XvB|xLIYHz1%hi?m1Wnj3l544eGLG$W$>-4tG z{=Mw~BvtQ8HG2|1&M-`lTH03n`kLr%W_G@uso7h$*wy|r$y^`5e_yW_BSXWtqf+b) z3>OZ*{WD|1$H&LbUusYF`uTbO|2Zm>mPIM6{|Y_0TYg`6oBh|7{%@~Z8mFB(u_|<R zS@oGaJBu%`kKfO{>h0t&udc54tbYETfq|jj7_>~Sq`<na&>-W&0-5qVg}%T3{rkRO z{Qi>v_X8HH=HA}6_QtzQOHaqm4UUbSE2<s#=G%<6wl?Nf+2vBw(zCamK6NVUZ4?8; zg^3j*f(#5L37{bo(CD_x?s}iVNj=i$>#n|fadUI}#=rNf-*3HD8g=Pduk`FK)!*OU zb(_k-;P4w<F!1F(|H?b-x9h=!TzqB!=D(}n9p(@ldsna9#Qyu8;<cfV^vdF<E8hHi z(UpOrU<YWIwFA3B`nfq%rcQnP>DMvyeStE?S3|?!UiyE4nP22DGaJv1rS<3LSn3Ad zU*Oo>^)@`dcB|{LoZQpXbh9tX8KrnghcYoRyak_KWszY0|JK91<@e9NUcdid+toL7 z=hpWIhJ{^QmF>X5;NYHAn8LvDf`N@sX2$1p*6UC1Yinx@2@O^C1eKdS(q?Ns|AY4H z?Ao<U<>boc^JXRYSuVR-7=7qSr||48^0i+sf{q2zH7d)#u_ZJ3+1c6Q;B0MI`)f<0 zD+9xYI&e~8o?%m2q~<^GPRjizR_?9`3D3^V{CTc?-{mF$U#(uR*VJ73`PtT2iz|-x zN>88cXQinfw#H);Xw}e6%i=Vv@^^Q#uG<LM|Gs&Cmd>M^tD)gr6HP(M3=$~;)=teT zGYt|Csej{_Fj#PP{{8s4xOt#mEN{*4RVagYDn)&r^?UWMT~^!gRb^j%cYAyOx;>vx znXTbqV7Mg?P9p)<O^tH4RVhb01bu(Kdi}aPUV2XDvzhEm=Ve}AmU?D}q3iE&xAV{c z{eHhbVBOyB&(6%844QkDultcWssFm!j^FQg2S-NU1n0Nkpgp|}d@B|%R0OT4nUwP8 z#>SN^R%Bd?kByxhv~tRm2dwO%{@$L-&zE+WzgIcwE?+z4<>lqiU#(t$ZkB2Gw~Bwu zd}n`}egDt0qpzzT_nH^oul=6-<itequ<wNn0blOc{eElt|Ig>>KeIq-Gx9M51B2Cq z{ePb7-`rPQJ?U9<<EvM%l71(!vU?Ui>QsMrGkyNqDVo8cww20B+wXTK?<{`)Y|Z9# zr$C!G4mPttf3djVud=f8UiJIEd;a};{quGF|5^9{zAN{=CJXAY?kan`>v;CHYuBD} z$NzAeT+7SLdvimg^S#RFbJs*~&zoM{XZP#Ho!akrf4&OeU)Atlf`Nh07F0#QX!urE z+iX|+E9J(9ME14oz}XnoXaMyXRxY3CH3@VaF1MJ@i6&O=Z&^K{<5J4+Ri^*?{(k@Q z<m>C>=P#dMSGE4w+xz?Lm-)}1m%V<k*>Sn*H*s^B85r87!BOX6-PEYuXR+wyE+)@S zm7kx1HZyq|)&2P~W$IMfH=i!8kKb?e^U37MT_u@ypC->wd3dO`^84NL^6GOF6rDeT zj<N-9BLc03d-Hwk>C>l+uLQa;b?=vZd2@5RpViAHbINXIN*bs6fQ~3GdG#b&fPvwS zUu5R-W`9NohA7YE<m74k@$>5ceVz|$RQ~$<Iyf?NX58MY)CUI|!5x<`7u~m)&SYS4 zfHnya_?^1F3o?hg;I9Dm05evQUqEMvj|zZ;26uS;uvar*dLhNOpcbUi)78&qol`;+ E0C0zes{jB1 diff --git a/LightSimtastic.py b/LightSimtastic.py index a4c72ca..e3c1651 100644 --- a/LightSimtastic.py +++ b/LightSimtastic.py @@ -734,6 +734,7 @@ class SiPMSimulation: if(transients): start_time = time.time() I, t = self.ISiPM(ns, n_transients=n_transients) + #I, t = self.ISiPM(ns, ntim=6001, n_transients=n_transients) end_time = time.time() diff --git a/Main_example_2.py b/Main_example_2.py new file mode 100644 index 0000000..1c7e9a6 --- /dev/null +++ b/Main_example_2.py @@ -0,0 +1,130 @@ +from LightSimtastic import SiPMSimulation +import matplotlib.pyplot as plt +import numpy as np + +################################# +# THE SIMULATION TOOL TAKES A DICTIONARY AS AN INPUT, WITH EACH OF THE VARIABLES AS KEYS. +# FOR EACH ELEMENT YOU ADD TO THE LISTS, ANOTHER SIMULATION WILL BE PERFORMED. +# THIS ALLOWS SCANS THROUGH PARAMETERS. +################################# + +variables={ +"Name_Sim":[0], #THIS CAN BE ANYTHING YOU LIKE +"mu":[1], # MEAN NUMBER OF GEIGER DISCHARGES +"ppXT":[0.0], # PROBABILITY OF PROMPT CROSS-TALK +"pdXT":[0.0], #PROBABILITY OF DELAYED CROSS-TALK +"taudXT":[25], #TIME CONSTANT FOR DELAYED CROSS-TALK (NS) +"rdXT":[0.5], #FRACTION OF DELAYED CROSS-TALK FROM ADJACENT CELLS +"pAp":[1.0], #PROBABILITY OF AFTERPULSE +"tauAp":[20.0], #TIME CONSTANT OF AFTERPULSE +"taur":[15], # SIPM RECOVERY TIME CONSTANT +"Sig0":[0.075], #WIDTH OF PEDESTAL [NORMALISED ADC] +"Sig1":[0.02], # INCREASE IN PEAK WIDTH PER ADDITIONAL DISCHARGE [NORMALISED ADC] +"DCR":[0.0], # DARK COUNT RATE [GHZ] +"Sigt":[0.2], # ELECTRONICS NOISE FOR CURRENT TRANSIENT (FOR TRANSIENT) +"GSig":[0.75], # WIDTH OF ELECTRONICS NOISE TRANSFER FUNCTION (FOR TRANSIENT) +"tslow":[15], # TIME CONSTANT FOR SLOW PART OF PULSE +"tfast":[15], # TIME CONSTANT FOR FAST PART OF PULSE +"rfast":[1.0], # PROPORTION OF SLOW/FAST +"start_tgate":[-300], # GATE START TIME [NS] +"len_tgate":[600], # LENGTH OF GATE +"t0":[300], # STARTING POINT OF GATE +"tl0":[0], #GAUSSIAN MEAN OF PRIMARY GEIGER DICHARGE TIME DISTRIBUTION +"tl1":[0.1], #GAUSSIAN WIDTH OF PRIMARY GEIGER DICHARGE TIME DISTRIBUTION +"tl2":[0], #FREE PARAMETER +"Gen_mu":["Poisson"], # NUMBER PRIMARY GEIGER DISCHARGE PDF +"Gen_tmu":["Gauss"], # TIME OF PRIMARY GEIGER DISCHARGE PDF +"Gen_gain":["Gauss"], # GAIN PDF (FOR TRANSIENT) +"Gen_npXT":["Binomial"], #NUMBER PROMPT X-TALK DISCHARGE DISTRIBUTION +"Gen_ndXT":["Binomial"], #NUMBER PROMPT X-TALK DISCHARGE DISTRIBUTION +"Gen_tdXT":["Exp"], #TIME DELAYED X-TALK DISTRIBUTION +"Gen_nAP":["Binom"], #NUMBER AFTER DISTRIBUTION +"Gen_tAP":["Exp"], #AFTERPULSE TIME DISTRIBUTION +"Gen_noise":["Gauss"] #ELECTRONIC NOISE DISTRIBUTION (FOR TRANSIENT) +} + +################################# +# CREATE A SIPM SIMULATION CLASS OBJECT +################################# + +s = SiPMSimulation() + +################################# +# ADD VARIABLES +################################# + +s.AddVariables(variables) + +n_events = int(1e2) +iterplot=0 + +################################# +# SIMULATE +################################# + +#s.Simulate(n_events, transients=False) +s.Simulate(n_events, transients=True, n_transients=n_events) + +################################# +# EXTRACT SIMULATION DATAFRAME +################################# + +df = s.pars + +################################# +# TRANSIENT +################################# +I = df.iloc[0]["Transients"]['I'] +t = df.iloc[0]["Transients"]['t'] + +if iterplot>0: + # Iterative plot + wave_sum = np.sum(I, axis=0) + wave_avg = wave_sum / len(I) + x_min = t.min(); x_max = t.max() + y_min = -1; y_max = 2.5 #np.max(I)+1 + + fig, ax = plt.subplots(figsize=(15.5,10.5)) + plt.rc('font', size=20) + plt.ion() + plt.show() + + for index in range(iterplot): + ax.clear() + ax.plot(t, I[index], color='blue', label='Transient '+str(index),linewidth=0.2) + #ax.plot(t, wave_avg, color='red', label='Average transient',linewidth=0.2) + + ax.grid(True, which='both', linestyle=':', linewidth=0.5, color='lightgrey') + ax.set_xlim([x_min, x_max]) + ax.set_ylim([y_min, y_max]) + ax.set_xlabel('Time [ns]',loc='right') + ax.set_ylabel('Intensity [a.u.]',loc='top') + ax.set_title('Transients') + ax.legend() + plt.draw() + plt.pause(0.01) + input(" ") + plt.ioff() + plt.close() + +################################# +# EXTRACT CHARGE SPECTRUM +################################# + +Qs = df.iloc[0]["ChargeSpectrum"] + +################################# +# PLOT +################################# + +plt.figure(figsize=(15.5,10.5)) +H, edges = np.histogram(Qs, bins=1000) +edges = edges[:-1]+(edges[1]-edges[0]) +plt.plot(edges, H) +plt.title("Simulated Charge Spectrum") +plt.yscale("log") +plt.xticks(fontsize=25) +plt.yticks(fontsize=25) +plt.xlabel("# GD", fontsize=25), +plt.savefig("./Example.png") + diff --git a/README.md b/README.md index eee0406..c459595 100644 --- a/README.md +++ b/README.md @@ -14,3 +14,21 @@ To get started, have a look at ```Example.py``` as well as ```ExampleTransients. ## References E. Garutti, R. Klanner, J. Rolph, J. Schwandt: _Simulation of the response of SiPMs; Part I: Without saturation effects_. [doi.org/10.1016/j.nima.2021.165853](https://doi.org/10.1016/j.nima.2021.165853) + + +# Installation +Clone the repository: +``` +git clone https://gitlab.rrz.uni-hamburg.de/uhhdetlab/sipm/lightsimtastic.git +``` +In the main folder of the repository run: +``` +pip install -r requirements.txt +``` +to install all the required python packages (best in a new python virtual environment) + +## Usage +Create/modify Main_example.py: +``` +python Main_example.py +``` \ No newline at end of file diff --git a/__pycache__/AdditionalPDFs.cpython-36.pyc b/__pycache__/AdditionalPDFs.cpython-36.pyc deleted file mode 100644 index a3a9c2233096a3e8c53df840ff7de2202f912ea1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4322 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 F695;Egckq+ diff --git a/__pycache__/LightSimtastic.cpython-36.pyc b/__pycache__/LightSimtastic.cpython-36.pyc deleted file mode 100644 index f28c81b2d49b775f4378b3a3104db5ecf63c13ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19861 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 H#KQ~#fdSVQ diff --git a/__pycache__/SiPMSimulation.cpython-36.pyc b/__pycache__/SiPMSimulation.cpython-36.pyc deleted file mode 100644 index a202d1aaed5270b83942bf4a9e314b262640eb48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19851 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 diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..ed0f2c8 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,5 @@ +matplotlib +numpy +tqdm +pandas +scipy -- GitLab